:root{color-scheme:light;
 --page:#f2f5f4;--surface:#ffffff;--surface-2:#f5f7f6;--ink:#172e38;--ink-2:#4f625e;--muted:#6f7f7a;
 --line:#dce4e0;--grid:#e6ebe8;--axis:#c3cdc9;--accent:#185b54;--accent-ink:#ffffff;--head:#123e42;--head-ink:#ffffff;--head-2:#c4d9d8;
 --series-1:#2a78d6;--series-2:#eb6834;--series-3:#1baf7a;--series-4:#eda100;--neutral:#98a39f;--neutral-2:#5f6b67;--area:rgba(42,120,214,.10);
 --good:#0ca30c;--good-ink:#186a4b;--warning:#fab219;--warning-ink:#8a6212;--critical:#d03b3b;--critical-ink:#9b3c34;
 --notice:#fff8e8;--notice-line:#eadfbd;--notice-ink:#6e5520;--tip:#ffffff;--shadow:0 6px 24px rgba(16,40,38,.12);
 font-family:system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;color:var(--ink);background:var(--page);line-height:1.5;font-synthesis:none}
@media (prefers-color-scheme:dark){:root{color-scheme:dark;
 --page:#0f1514;--surface:#17201f;--surface-2:#1d2827;--ink:#e8eeec;--ink-2:#b9c4c0;--muted:#8d9995;
 --line:#2a3634;--grid:#24302e;--axis:#3b4845;--accent:#2f8f84;--accent-ink:#ffffff;--head:#0c2c2f;--head-ink:#ffffff;--head-2:#a9c4c2;
 --series-1:#3987e5;--series-2:#d95926;--series-3:#199e70;--series-4:#c98500;--neutral:#6f7b77;--neutral-2:#a7b2ae;--area:rgba(57,135,229,.14);
 --good-ink:#4cc77a;--warning-ink:#f2c45a;--critical-ink:#ef8a84;--notice:#2a2414;--notice-line:#4a3f1f;--notice-ink:#f0d9a0;--tip:#1d2827;--shadow:0 6px 24px rgba(0,0,0,.45)}}
*{box-sizing:border-box}body{margin:0;background:var(--page)}
header.top{background:var(--head);color:var(--head-ink);padding:22px max(20px,calc((100% - 1180px)/2)) 18px;display:flex;gap:20px;align-items:center;justify-content:space-between;flex-wrap:wrap}
header.top h1{font-size:26px;font-weight:600;margin:4px 0 0}header.top p{color:var(--head-2);margin:2px 0 0;font-size:14px}
.who{display:flex;gap:10px;align-items:center;flex-wrap:wrap;font-size:13px;color:var(--head-2)}.who strong{color:var(--head-ink);font-weight:600}
.role{border:1px solid rgba(255,255,255,.35);border-radius:20px;padding:3px 10px;font-size:12px;color:var(--head-ink)}
.eyebrow{font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase}
.badge{color:#ccede0;background:#235558;border:1px solid #558781;border-radius:30px;padding:6px 13px;white-space:nowrap;font-size:11px;font-weight:700}
nav.tabs{position:sticky;top:0;z-index:5;background:var(--surface);border-bottom:1px solid var(--line);display:flex;gap:2px;overflow-x:auto;padding:0 max(12px,calc((100% - 1196px)/2));scrollbar-width:thin}
nav.tabs button{background:transparent;color:var(--ink-2);border:0;border-bottom:3px solid transparent;border-radius:0;padding:14px 14px 11px;font-weight:600;font-size:14px}
nav.tabs button[aria-selected=true]{color:var(--ink);border-bottom-color:var(--accent)}nav.tabs button:hover{filter:none;color:var(--ink)}
main{max-width:1228px;padding:22px 24px 40px;margin:auto}
[data-panel]{display:none}[data-panel].shown{display:block}.grid.shown,[data-panel].grid.shown{display:grid}
section{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:22px;margin-bottom:18px}
h2{font-size:19px;margin:4px 0 8px}h3{font-size:16px;margin:0 0 8px}
.notice{background:var(--notice);border-color:var(--notice-line);color:var(--notice-ink);font-size:14px;padding:12px 18px}.notice ul{margin:0;padding-left:18px}
.connection,.section-head{display:flex;gap:16px;justify-content:space-between;align-items:center;flex-wrap:wrap}
.connection p{margin:0;max-width:740px;font-size:14px;color:var(--ink-2)}.actions{display:flex;gap:10px;align-items:end;flex-wrap:wrap}
.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;background:transparent;border:0;padding:0}
.card{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:20px}.card .amount{font-size:27px;margin:10px 0 4px;letter-spacing:-.02em}
.card small,.muted{color:var(--muted);font-size:13px}.card dl{font-size:13px;display:grid;grid-template-columns:1fr auto;gap:6px}.card dt,.card dd{margin:0}
.card .risk{border-top:1px solid var(--line);padding-top:10px;color:var(--muted);font-size:12px}
.empty{padding:20px;background:var(--surface-2);border-radius:8px;color:var(--ink-2);font-size:14px}
.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;font-size:13px}
th{text-align:left;color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.04em;font-weight:600}
td,th{padding:9px 10px;border-bottom:1px solid var(--grid);vertical-align:top}td.num,th.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.good{color:var(--good-ink)}.blocked,.warn{color:var(--warning-ink)}.bad{color:var(--critical-ink)}
button,select,input{font:inherit;border-radius:7px;border:1px solid var(--axis);padding:9px 12px;background:var(--surface);color:var(--ink)}
button{cursor:pointer;background:var(--accent);color:var(--accent-ink);border-color:var(--accent);white-space:nowrap;font-size:13px;font-weight:600}
button:hover{filter:brightness(1.08)}button:disabled{opacity:.45;cursor:not-allowed}button.ghost{background:transparent;color:var(--ink);border-color:var(--axis)}
.danger{background:var(--surface);color:var(--critical-ink);border-color:#ceaaa5}
label{display:grid;gap:5px;font-size:12px;color:var(--ink-2)}fieldset{padding:0;margin:0;border:0}
.form-grid{display:grid;grid-template-columns:1.4fr repeat(4,1fr);gap:12px}.form-grid button{grid-column:1/-1;justify-self:start}
#message:empty{display:none}#message{padding:12px 16px;margin-bottom:18px;background:var(--surface-2);border:1px solid var(--line);border-radius:8px}
#context{margin-top:18px}.context-block{border-top:1px solid var(--line);padding-top:14px;margin-top:14px}
a{color:var(--accent);text-underline-offset:3px}.footer-note{background:transparent;border:0;padding:8px;font-size:13px;color:var(--muted)}
li{margin:5px 0}details{margin:16px 0}summary{cursor:pointer;color:var(--accent)}
#allocation-form{display:flex;gap:12px;align-items:end;flex-wrap:wrap}.forecast-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.scenario{border:1px solid var(--line);border-radius:8px;padding:16px}.scenario strong{display:block;font-size:22px;margin:8px 0}
#proposal{margin:14px 0}.proposal{padding:14px;background:var(--notice)}#version{font-size:12px}input{min-width:0;width:100%}
pre{white-space:pre-wrap;font-size:12px;max-height:340px;overflow:auto}
/* dashboard */
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(165px,1fr));gap:14px;margin-bottom:18px}
.kpi{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:16px 18px;min-height:112px;display:flex;flex-direction:column;gap:4px}
.kpi .label{font-size:13px;color:var(--ink-2)}.kpi .value{font-size:26px;font-weight:600;letter-spacing:-.02em;line-height:1.2}
.kpi .sub{font-size:12px;color:var(--muted)}.kpi .delta.up{color:var(--good-ink)}.kpi .delta.down{color:var(--critical-ink)}
.grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.grid>section{margin-bottom:0;min-width:0}.grid>*{min-width:0}.grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}
.wide{grid-column:1/-1}.stack>section{margin-bottom:18px}
.chart-head{display:flex;justify-content:space-between;gap:12px;align-items:baseline;flex-wrap:wrap}.chart-head p{margin:0;font-size:13px;color:var(--muted)}
.chart{position:relative;width:100%;margin-top:8px;touch-action:pan-y}.chart svg{display:block;width:100%;overflow:visible}
.chart .axis text,.chart text.tick{fill:var(--muted);font-size:11px;font-variant-numeric:tabular-nums}
.chart text.end{fill:var(--ink);font-size:12px;font-weight:600}.chart text.inbar{fill:var(--ink);font-size:12px}
.chart .grid-line{stroke:var(--grid);stroke-width:1}.chart .base-line{stroke:var(--axis);stroke-width:1}
.chart .cross{stroke:var(--neutral-2);stroke-width:1}.chart .hit{fill:transparent;cursor:crosshair}.chart .hit:focus{outline:2px solid var(--accent);outline-offset:2px}
.chart .threshold{stroke:var(--ink-2);stroke-width:2}.chart text.threshold-label{fill:var(--ink-2);font-size:11px}
.tip{position:absolute;pointer-events:none;background:var(--tip);color:var(--ink);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:8px;padding:8px 10px;font-size:12px;min-width:150px;z-index:3;display:none}
.tip .t{color:var(--muted);margin-bottom:4px}.tip .r{display:flex;gap:8px;align-items:center;justify-content:space-between}.tip .r b{font-weight:600;font-variant-numeric:tabular-nums}
.key{display:inline-block;width:14px;height:0;border-top:2px solid;vertical-align:middle;margin-right:6px}.key.box{width:11px;height:11px;border:0;border-radius:3px}
.legend{display:flex;gap:14px;flex-wrap:wrap;font-size:12px;color:var(--ink-2);margin-top:6px}
.chart-empty{display:flex;align-items:center;justify-content:center;text-align:center;min-height:170px;border:1px dashed var(--axis);border-radius:10px;color:var(--ink-2);font-size:14px;padding:18px;margin-top:8px}
.table-view summary{font-size:12px}.table-view table{margin-top:8px}
.filters{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin:0 0 16px}.filters button{background:var(--surface);color:var(--ink);border-color:var(--axis)}
.filters button[aria-pressed=true]{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}
.meter{height:10px;border-radius:5px;background:var(--grid);overflow:hidden;margin:8px 0 4px}.meter>span{display:block;height:100%;background:var(--series-1);border-radius:5px}
.meter.warn>span{background:var(--warning)}.meter.full>span{background:var(--critical)}
.status-line{display:flex;gap:8px;align-items:flex-start;font-size:13px;margin:6px 0}.status-line .ico{width:18px;flex:none;text-align:center;font-weight:700}
.timeline{list-style:none;margin:0;padding:0}.timeline li{display:grid;grid-template-columns:120px 1fr;gap:12px;padding:9px 0;border-bottom:1px solid var(--grid);margin:0}
.timeline time{font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums}.timeline .title{font-size:14px}.timeline .detail{font-size:12px;color:var(--muted)}
.sym-head{display:flex;justify-content:space-between;gap:10px;align-items:baseline;flex-wrap:wrap}.sym-head .price{font-size:24px;font-weight:600}
.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px 16px;margin-top:12px;font-size:13px}
.stat-grid div span{display:block;color:var(--muted);font-size:12px}.stat-grid div b{font-weight:600;font-variant-numeric:tabular-nums}
.range{position:relative;height:24px;margin:6px 0 2px}.range .track{position:absolute;left:0;right:0;top:11px;height:2px;background:var(--axis)}
.range .dot{position:absolute;top:5px;width:14px;height:14px;margin-left:-7px;border-radius:50%;background:var(--series-1);box-shadow:0 0 0 2px var(--surface)}
.range-labels{display:flex;justify-content:space-between;font-size:11px;color:var(--muted)}
.pill{display:inline-block;border-radius:20px;padding:2px 9px;font-size:12px;background:var(--surface-2);border:1px solid var(--line);color:var(--ink-2)}
.pill.ok{color:var(--good-ink)}.pill.warn{color:var(--warning-ink)}.pill.bad{color:var(--critical-ink)}
.otp{font-family:ui-monospace,Consolas,monospace;font-size:16px;padding:10px 12px;background:var(--surface-2);border:1px solid var(--line);border-radius:8px;user-select:all}
[data-owner-only].hidden-role{display:none!important}
@media(max-width:900px){.grid,.grid.three{grid-template-columns:minmax(0,1fr)}.cards,.forecast-grid{grid-template-columns:1fr}.form-grid{grid-template-columns:1fr 1fr}}
@media(max-width:640px){header.top{padding:16px}header.top h1{font-size:22px}main{padding:14px 14px 30px}section{padding:16px}
 .timeline li{grid-template-columns:1fr;gap:2px}.kpi .value{font-size:22px}nav.tabs button{padding:12px 10px 9px;font-size:13px}.form-grid{grid-template-columns:1fr}}
.mt{margin-top:16px}.kpi.plain{border:0;padding:0;min-height:0}.range-title{margin:14px 0 2px;font-size:12px;color:var(--muted)}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* rc.6 release tests */
.release-pre{list-style:none;padding-left:0}.release-pre li{margin:6px 0}
.release-list{border-top:1px solid var(--line)}
.release-row{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,.8fr) minmax(0,2fr) auto;grid-template-areas:"label status detail action";gap:6px 14px;align-items:start;padding:12px 0;border-bottom:1px solid var(--line);font-size:13px}
.rr-label{grid-area:label;font-weight:600}.rr-status{grid-area:status}.rr-detail{grid-area:detail;color:var(--ink-2)}.rr-action{grid-area:action}
.release-row small{color:var(--muted)}
@media(max-width:640px){.release-row{grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"label action" "status status" "detail detail"}}
/* rc.7: logo, install button, quarterly reports and AI data decision */
.brand{display:flex;gap:14px;align-items:center}.logo{width:44px;height:44px;flex:none;border-radius:10px}
button.install{background:#f2a900;color:#123e42;border:0;border-radius:30px;padding:6px 14px;font-weight:700;font-size:13px}
button.install[hidden]{display:none}
.install-help{position:sticky;top:0;z-index:6;display:flex;gap:16px;align-items:flex-start;justify-content:space-between;background:var(--notice);color:var(--notice-ink);border-bottom:1px solid var(--notice-line);padding:14px max(20px,calc((100% - 1180px)/2))}
.install-help[hidden]{display:none}.install-help p{margin:6px 0 0}
.insight h4{margin:12px 0 6px;font-size:14px}.insight ul.events{margin:0;padding-left:18px;font-size:14px}.insight .warn{color:var(--warning-ink)}
#insight-cards{grid-template-columns:repeat(2,minmax(0,1fr))}
.policy-form fieldset{border:1px solid var(--line);border-radius:10px;padding:14px;display:grid;gap:10px}
.policy-form .choice{display:grid;grid-template-columns:20px 1fr;gap:10px;align-items:start;justify-items:start;text-align:left;font-size:14px}.policy-form .choice input{width:18px;height:18px;margin:2px 0 0;padding:0}
@media (max-width:640px){#insight-cards{grid-template-columns:1fr}.brand .logo{width:36px;height:36px}}
/* rc.8 sign-in page, version badge and autopilot */
body.login-page{min-height:100vh;background:var(--head);display:grid;place-items:center;padding:16px}
.login-wrap{width:100%;max-width:400px}
.login-card{background:var(--surface);border-radius:14px;box-shadow:var(--shadow);padding:26px 24px;display:grid;gap:14px}
.login-card h1{margin:2px 0 0;font-size:22px;font-weight:600}.login-card .brand .eyebrow{color:var(--accent)}
.login-card input{width:100%;font-size:16px}.login-card button{padding:11px 14px;font-size:15px}
.login-error{min-height:1.2em;margin:0;color:var(--critical-ink);font-weight:600}.login-error:empty{min-height:0}
.login-version{margin:0;font-size:12px;color:var(--muted)}.login-card .muted{margin:0;font-size:13px}
.version-badge{font-size:11px;color:var(--head-2);border:1px solid rgba(255,255,255,.25);border-radius:20px;padding:3px 9px;white-space:nowrap}
button.logout{background:transparent;color:var(--ink);border-color:var(--axis)}
.autopilot-head{display:flex;gap:14px;align-items:flex-start;justify-content:space-between;flex-wrap:wrap}
.autopilot-state{font-size:18px;font-weight:600;margin:4px 0}.autopilot-state.on{color:var(--good-ink)}.autopilot-state.off{color:var(--warning-ink)}
.check-list{list-style:none;padding:0;margin:12px 0;display:grid;gap:6px}
.check-list li{display:grid;grid-template-columns:22px minmax(0,1fr);gap:8px;align-items:start;font-size:14px}
.check-list .mark{font-weight:700;text-align:center}.check-list .ok .mark{color:var(--good-ink)}.check-list .bad .mark{color:var(--critical-ink)}
.autopilot-today{display:flex;gap:18px;flex-wrap:wrap;font-size:14px;color:var(--ink-2)}
.autopilot-log{font-size:13px;color:var(--ink-2);padding-left:18px;margin:6px 0 0}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
/* rc.9 Lataa appi */
.app-address{margin:4px 0;font-size:15px;overflow-wrap:anywhere}
a.link-button{display:inline-block;font-size:13px;font-weight:600;border-radius:7px;border:1px solid var(--axis);padding:9px 12px;color:var(--ink);text-decoration:none;background:transparent;white-space:nowrap}
a.link-button:hover{border-color:var(--accent)}

/* rc.10: bank and account number above the account balances */
.bank-line{display:flex;flex-wrap:wrap;gap:10px 28px;margin:6px 0 12px;padding:12px 14px;background:var(--surface-2);border:1px solid var(--line);border-radius:8px}
.bank-line div{display:flex;flex-direction:column;gap:2px}.bank-line dt{font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);font-weight:600}
.bank-line dd{margin:0;font-size:15px;color:var(--ink)}.bank-line .mono{font-variant-numeric:tabular-nums;letter-spacing:.03em}.bank-line p{flex-basis:100%;margin:0}

/* rc.10: market view switch, comparison picks, hourly small multiples, risk levels, period returns */
.view-switch{display:inline-flex;gap:0;margin:0 0 14px;border:1px solid var(--axis);border-radius:9px;overflow:hidden;background:var(--surface)}
.view-switch button{border:0;border-radius:0;padding:9px 18px;background:transparent;color:var(--ink);font-weight:600;cursor:pointer}
.view-switch button+button{border-left:1px solid var(--axis)}.view-switch button[aria-pressed=true]{background:var(--accent);color:var(--accent-ink)}
.picks{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:0 0 10px;font-size:13px}
.pick{padding:4px 10px;font-size:13px;border-radius:999px;background:var(--surface);color:var(--ink-2);cursor:pointer;display:inline-flex;align-items:center;gap:6px}
.pick[aria-pressed=true]{color:var(--ink);border-color:var(--ink-2);font-weight:600}
.pick .swatch{width:14px;height:4px;border-radius:2px;display:inline-block;background:var(--series-1)}
.pick.slot-2 .swatch{background:var(--series-2)}.pick.slot-3 .swatch{background:var(--series-3)}.pick.slot-4 .swatch{background:var(--series-4)}
.mini-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.mini{border:1px solid var(--line);border-radius:10px;padding:10px 12px;min-width:0;background:var(--surface)}
.mini-head{display:flex;justify-content:space-between;align-items:baseline;gap:8px}.mini-head h3{margin:0;font-size:15px}.mini-head span{font-size:13px}
.mini .legend{font-size:11px}
#intra-table td small{font-size:11px}#intra-table td{white-space:nowrap}
.risk-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin:12px 0}
.risk-card{border:1px solid var(--line);border-radius:12px;padding:16px;background:var(--surface);min-width:0}
.risk-card.changed{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}
.risk-head{display:flex;justify-content:space-between;align-items:baseline}.risk-head h3{margin:0}
.risk-value{font-size:30px;font-weight:700;font-variant-numeric:tabular-nums;color:var(--accent)}
.risk-card input[type=range]{width:100%;padding:0;border:0;accent-color:var(--accent);height:28px;background:transparent}
.risk-scale{display:flex;justify-content:space-between;font-size:11px;color:var(--muted);margin-top:-2px}
.risk-number{display:flex;align-items:center;gap:8px;font-size:13px;margin:8px 0}.risk-number input{width:84px;padding:5px 8px}
.risk-change{margin:4px 0;font-size:13px;color:var(--warning-ink);font-weight:600}
.risk-dl{display:grid;gap:4px;margin:10px 0;font-size:13px}.risk-dl div{display:flex;justify-content:space-between;gap:10px;border-bottom:1px solid var(--grid);padding:3px 0}
.risk-dl dt{color:var(--ink-2)}.risk-dl dd{margin:0;text-align:right;font-variant-numeric:tabular-nums}
.risk-card h4{margin:10px 0 6px;font-size:13px}.chips{display:flex;flex-wrap:wrap;gap:5px}
.chip{font-size:12px;padding:2px 8px;border-radius:999px;background:var(--surface-2);border:1px solid var(--line)}
.risk-form{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-end}.risk-form label{flex:1 1 280px;display:flex;flex-direction:column;gap:4px;font-size:13px}
.notice-line{background:var(--notice);border:1px solid var(--notice-line);color:var(--notice-ink);padding:10px 14px;border-radius:8px}
.kpis.compact{margin:12px 0}.kpis.compact .kpi{min-height:0}
@media(max-width:1100px){.mini-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:900px){.risk-grid{grid-template-columns:1fr}.mini-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:560px){.mini-grid{grid-template-columns:1fr}.view-switch{display:flex}.view-switch button{flex:1}
 .kpis.compact{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.kpis.compact .kpi{padding:10px 12px}.kpis.compact .kpi .value{font-size:20px}}
