/* EXHOSP – sama tumma teema kuin muissa SURO-sovelluksissa. Tulosteet (AAR) ovat aina vaaleita. */
:root{--fs:1;--bg:#151514;--card:#1e1e1c;--card-alt:#252523;--card-hi:#2c2c29;--border:#2a2a28;--border-soft:#3a3a38;
  --text:#e8e8e4;--text-strong:#f4f4f0;--muted:#9a9a96;--faint:#908f8b;
  --accent:#7ee0b0;--accent-bg:#14301f;--accent-border:#2f7a52;
  --ok:#7cf07c;--ok-bg:#16301a;--ok-border:#2f6a36;--warn:#f0c040;--warn-bg:#3d3200;--warn-border:#7a6410;
  --bad:#f07c7c;--bad-bg:#3a1a1a;--bad-border:#8c2a2a;--crit:#ff5a5a;--crit-bg:#5c0a0a;
  --p1:#d03b3b;--p2:#e0a21a;--p3:#2e9e3e;--m0:#555;
  --viz-good:#0ca30c;--viz-warning:#fab219;--viz-critical:#d03b3b;--viz-neutral:#3987e5;--viz-track:#34342f;
  --mono:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;--topbar-h:48px}
*{box-sizing:border-box}
html,body{margin:0;background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Arial,sans-serif;font-size:calc(15px * var(--fs));line-height:1.4}
a{color:var(--accent)}
.hidden{display:none !important}
.mono{font-family:var(--mono);font-variant-numeric:tabular-nums}
.muted{color:var(--muted)} .small{font-size:calc(13px * var(--fs))} .tiny{font-size:calc(13px * var(--fs))}
.ok{color:var(--ok)} .warn{color:var(--warn)} .bad{color:var(--bad)} .crit{color:var(--crit)}
.row{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.spacer{flex:1}
.w100{width:100%}
.mt14{margin-top:14px}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.grid4{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.grid2>*,.grid3>*,.grid4>*{min-width:0}
@media (max-width:1000px){.grid2,.grid3,.grid4{grid-template-columns:1fr}}

.topbar{position:sticky;top:0;z-index:20}
header{background:#0e0e0c;padding:8px 14px;display:flex;align-items:center;gap:14px;flex-wrap:wrap;border-bottom:1px solid var(--border)}
.brand{font-weight:800;letter-spacing:.08em;color:var(--text-strong);text-decoration:none;font-size:calc(17px * var(--fs))}
.brand small{font-weight:500;letter-spacing:.02em;color:var(--muted);font-size:calc(11px * var(--fs));margin-left:6px}
.sess-name{font-weight:600;color:var(--text-strong);max-width:320px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.clock{font-family:var(--mono);font-size:calc(22px * var(--fs));font-weight:700;color:var(--text-strong);letter-spacing:.02em}
.clock .tplus{font-size:calc(12px * var(--fs));color:var(--muted);margin-left:6px;font-weight:500}
.chip{display:inline-flex;align-items:center;gap:6px;padding:3px 9px;border-radius:999px;font-size:calc(12px * var(--fs));font-weight:700;letter-spacing:.04em;text-transform:uppercase;border:1px solid var(--border-soft);background:var(--card-alt);color:var(--muted);white-space:nowrap}
header .chip{flex:none;white-space:nowrap}
.chip.run{color:var(--ok);border-color:var(--ok-border);background:var(--ok-bg)}
.chip.pause{color:var(--warn);border-color:var(--warn-border);background:var(--warn-bg)}
.chip.stop{color:var(--bad);border-color:var(--bad-border);background:var(--bad-bg)}
.chip.lvl1{color:#000;background:var(--warn);border-color:var(--warn)}
.chip.lvl2{color:#fff;background:#b01818;border-color:#ff4a4a}
.chip.dot::before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor}
select,input,textarea,button{font-family:inherit;font-size:calc(14px * var(--fs))}
select,input,textarea{padding:6px 8px;border:1px solid var(--border-soft);border-radius:5px;background:var(--card-alt);color:var(--text)}
input[type=checkbox]{accent-color:var(--accent)}
textarea{width:100%;min-height:60px;resize:vertical}
label.f{display:block;font-size:calc(13px * var(--fs));color:var(--muted);margin:8px 0 3px}
.btn{background:var(--card-alt);color:var(--accent);border:1px solid var(--accent-border);padding:7px 12px;border-radius:6px;cursor:pointer;white-space:nowrap;text-decoration:none;display:inline-block}
.btn:hover{background:var(--accent-bg)}
.btn:disabled,.btn[aria-disabled=true]{opacity:.45;cursor:not-allowed}
.btn.sec{color:var(--text);border-color:var(--border-soft)} .btn.sec:hover{background:#2f2f2c}
.btn.danger{color:var(--bad);border-color:var(--bad-border)} .btn.danger:hover{background:var(--bad-bg)}
.btn.danger-solid{background:#8c2a2a;color:#fff;border-color:#8c2a2a}
.btn.ok{color:var(--ok);border-color:var(--ok-border)} .btn.ok:hover{background:var(--ok-bg)}
.btn.warn{color:var(--warn);border-color:var(--warn-border)} .btn.warn:hover{background:var(--warn-bg)}
.btn.sm{padding:4px 9px;font-size:calc(13px * var(--fs))}
.btn.primary{background:var(--accent-border);color:#fff;border-color:var(--accent-border)} .btn.primary:hover{background:#3a8f63}
.btn:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--accent);outline-offset:2px}

nav#tabs{display:flex;gap:2px;background:var(--card);padding:0 10px;border-bottom:1px solid var(--border);overflow-x:auto}
nav#tabs button,.subtabs button{font-size:calc(14px * var(--fs));padding:10px 13px;border:none;background:none;cursor:pointer;border-bottom:3px solid transparent;color:var(--muted);white-space:nowrap;position:relative}
nav#tabs button.active,.subtabs button.active{color:var(--accent);border-bottom-color:var(--accent);font-weight:700}
.badge{margin-left:5px;background:var(--bad);color:#fff;border-radius:9px;padding:0 6px;font-size:calc(12px * var(--fs));font-weight:800}
.subtabs{display:flex;gap:2px;flex-wrap:wrap;border-bottom:1px solid var(--border);margin:4px 0 12px}
#alertbar{display:flex;gap:6px;flex-wrap:wrap;padding:6px 12px;background:#18120f;border-bottom:1px solid var(--border)}
#alertbar:empty{display:none}
.alert{font-size:calc(13px * var(--fs));padding:3px 9px;border-radius:5px;border:1px solid}
.alert.high{background:var(--crit-bg);border-color:#ff4a4a;color:#ffd0d0}
.alert.warn{background:var(--warn-bg);border-color:var(--warn-border);color:#ffe79a}
button.alert{font-family:inherit;cursor:pointer;text-align:left}
button.alert:hover{filter:brightness(1.25)}
.alert.info{background:var(--card-alt);border-color:var(--border-soft);color:var(--muted)}
main{padding:14px;max-width:1500px;margin:0 auto}
.card{background:var(--card);border:1px solid var(--border);border-radius:8px;padding:12px 14px;margin-bottom:12px}
.card h2{font-size:calc(14px * var(--fs));margin:0 0 10px;color:var(--text-strong);display:flex;align-items:center;gap:8px}
.card h3{font-size:calc(13px * var(--fs));margin:12px 0 6px;color:var(--text-strong)}
.error{background:var(--bad-bg);border:1px solid var(--bad-border);color:#ffd0d0;border-radius:6px;padding:8px 10px;margin:8px 0}
.note{background:var(--card-alt);border:1px solid var(--border-soft);border-radius:6px;padding:8px 10px;margin:8px 0}
table{width:100%;border-collapse:collapse;font-size:calc(14px * var(--fs))}
th,td{border-bottom:1px solid var(--border);padding:5px 6px;text-align:left;vertical-align:middle}
th{background:var(--card-alt);color:var(--muted);font-size:calc(13px * var(--fs));font-weight:600}
tr.dim td{opacity:.55}
tr.hl td{background:rgba(240,124,124,.08)}
td.num,th.num{text-align:right}

/* Triage, tilat ja merkinnät */
.tri{display:inline-block;min-width:30px;text-align:center;padding:1px 7px;border-radius:4px;font-weight:800;font-size:calc(12px * var(--fs));color:#fff}
.tri.P1{background:var(--p1)} .tri.P2{background:var(--p2);color:#000} .tri.P3{background:var(--p3)} .tri.M0{background:var(--m0)}
.tag{display:inline-block;padding:0 7px;border-radius:9px;font-size:calc(12px * var(--fs));font-weight:700;border:1px solid var(--border-soft);color:var(--muted);margin-right:3px}
.tag.warn{color:var(--warn);border-color:var(--warn-border);background:var(--warn-bg)}
.tag.bad{color:var(--bad);border-color:var(--bad-border);background:var(--bad-bg)}
.tag.ok{color:var(--ok);border-color:var(--ok-border);background:var(--ok-bg)}

/* KPI-ruudut */
.kpis{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:10px;margin-bottom:12px}
.kpi{background:var(--card);border:1px solid var(--border);border-radius:8px;padding:8px 12px}
.kpi b{display:block;font-size:calc(26px * var(--fs));font-family:var(--mono);color:var(--text-strong);line-height:1.1}
.kpi span{font-size:calc(13px * var(--fs));color:var(--muted)}
.kpi.warn b{color:var(--warn)} .kpi.bad b{color:var(--bad)}

/* Resurssit */
.pools{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:8px}
.pool{background:var(--card-alt);border:1px solid var(--border);border-radius:6px;padding:7px 9px}
.pool .top{display:flex;justify-content:space-between;gap:6px;font-size:calc(13px * var(--fs))}
.pool .top b{color:var(--text-strong);font-weight:600}
.pool .nums{font-family:var(--mono);font-size:calc(13px * var(--fs));color:var(--muted)}
.pool.full{border-color:var(--bad-border)} .pool.high{border-color:var(--warn-border)} .pool.none{opacity:.55}
.pool .sub{font-size:calc(13px * var(--fs));color:var(--muted);margin-top:3px}
.bar{position:relative;height:9px;border-radius:5px;background:var(--viz-track);overflow:hidden;margin-top:5px;display:flex}
.bar .fill{background:var(--viz-good);width:calc(var(--w,0) * 1%)}
.bar .fill.mid{background:var(--viz-warning)} .bar .fill.hi{background:var(--viz-critical)}
.bar .hold{background:#6f6f66;width:calc(var(--h,0) * 1%)}
.bar .inc{background:repeating-linear-gradient(45deg,#2f7a52,#2f7a52 3px,#1e1e1c 3px,#1e1e1c 6px);width:calc(var(--i,0) * 1%)}
.group-title{margin:14px 0 6px;font-size:calc(13px * var(--fs));color:var(--accent);text-transform:uppercase;letter-spacing:.06em}

/* Triage- ja hoitopolkuharjoitus */
.tri.NA{background:var(--card-hi);color:var(--muted);border:1px dashed var(--border-soft)}
.vchip{display:inline-block;padding:0 7px;margin:0 4px 2px 0;border-radius:9px;border:1px solid var(--border-soft);font-size:calc(12px * var(--fs));color:var(--muted)}
.vchip b{color:var(--text-strong);font-family:var(--mono)}
.vchip.warn{border-color:var(--warn-border);background:var(--warn-bg)} .vchip.bad{border-color:var(--bad-border);background:var(--bad-bg)}
.vbigs{display:grid;grid-template-columns:repeat(auto-fit,minmax(86px,1fr));gap:6px}
.vbig{background:var(--card-alt);border:1px solid var(--border);border-radius:6px;padding:5px 8px;display:flex;flex-direction:column}
.vbig span{font-size:calc(12px * var(--fs));color:var(--muted)} .vbig b{font-family:var(--mono);font-size:calc(21px * var(--fs));color:var(--text-strong)}
.vbig.warn{border-color:var(--warn-border);background:var(--warn-bg)} .vbig.warn b{color:var(--warn)}
.vbig.bad{border-color:var(--bad-border);background:var(--bad-bg)} .vbig.bad b{color:var(--bad)}
.btnrow{display:flex;gap:6px;flex-wrap:wrap;margin:4px 0 10px}
.btn.done{color:var(--ok);border-color:var(--ok-border);opacity:1}
.btn.rec{border-color:var(--warn);color:var(--warn)}
.btn.cur{opacity:1;border-color:var(--accent);color:var(--accent)}
.note.key{border-color:var(--warn-border);background:var(--warn-bg)}
.note.hint{border-color:var(--accent-border);background:var(--accent-bg)}
.fb{padding:4px 0;border-bottom:1px solid var(--border);font-size:calc(13px * var(--fs))}
.fb .t{font-family:var(--mono);color:var(--muted);margin-right:6px}
.fb.ok b{color:var(--ok)} .fb.warn b{color:var(--warn)} .fb.bad b{color:var(--bad)}
.finds{list-style:none;margin:0;padding:0}
.finds li{padding:4px 0;border-bottom:1px solid var(--border);font-size:calc(13px * var(--fs))}
.finds li.abn{color:var(--warn)} .finds .t{font-family:var(--mono);color:var(--muted);margin-right:6px}
.dispo .row{margin-bottom:8px}
details.brief summary{cursor:pointer}
details.brief p,details.brief li{font-size:calc(13.5px * var(--fs))}
dialog.dlg.wide.case{max-width:1120px;max-height:92vh;overflow:auto}
.case-top{margin-bottom:10px} .case-top h2{margin:0}
table.review td{vertical-align:top}
.tag.ok{color:var(--ok)}

/* Jonot ja potilaslistat */
.qlist{list-style:none;margin:0;padding:0}
.qlist li{display:flex;gap:8px;align-items:center;padding:5px 0;border-bottom:1px solid var(--border)}
.qlist li .grow{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wait{font-family:var(--mono);color:var(--muted)} .wait.warn{color:var(--warn)} .wait.bad{color:var(--bad)}
.flow{display:flex;gap:3px;align-items:center;font-size:calc(12px * var(--fs));color:var(--muted)}
.flow span{padding:0 5px;border:1px solid var(--border-soft);border-radius:4px}
.flow span.cur{color:var(--accent);border-color:var(--accent-border);background:var(--accent-bg);font-weight:700}
.flow span.done{color:var(--ok);border-color:var(--ok-border)}
.tl{list-style:none;margin:6px 0;padding:0 0 0 14px;border-left:2px solid var(--border-soft)}
.tl li{margin:0 0 6px;position:relative;font-size:calc(13px * var(--fs))}
.tl li::before{content:"";position:absolute;left:-19px;top:6px;width:8px;height:8px;border-radius:50%;background:var(--accent-border)}
.tl .t{font-family:var(--mono);color:var(--muted);margin-right:6px}

/* Loki */
.logrow{display:grid;grid-template-columns:70px 1fr;gap:8px;padding:4px 0;border-bottom:1px solid var(--border);font-size:calc(13px * var(--fs))}
.logrow .t{font-family:var(--mono);color:var(--muted)}
.logrow.ACT .who{color:var(--accent)} .logrow.ALERT{background:rgba(240,192,64,.08)} .logrow.BREACH .txt{color:var(--warn)}
.logrow.CTRL .who{color:#9ab4ff} .logrow.REJECTED .txt{color:var(--bad)}
.logrow .who{font-size:calc(12.5px * var(--fs));color:var(--muted)}

/* Päätösten painikeruudukko */
.actgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:10px}
.actcard{background:var(--card-alt);border:1px solid var(--border);border-radius:8px;padding:10px 12px;display:flex;flex-direction:column;gap:6px}
.actcard h3{margin:0;font-size:calc(14px * var(--fs))}
.actcard p{margin:0;color:var(--muted);font-size:calc(13px * var(--fs));flex:1}

/* Käyttöliittymän muut osat */
.login-box{max-width:460px;margin:40px auto;background:var(--card);border:1px solid var(--border);border-radius:10px;padding:22px}
.login-box h1{margin:0 0 4px;letter-spacing:.08em}
.seg{display:flex;margin:14px 0;border:1px solid var(--border-soft);border-radius:6px;overflow:hidden}
.seg button{flex:1;padding:8px;background:none;border:none;color:var(--muted);cursor:pointer}
.seg button.active{background:var(--accent-bg);color:var(--accent);font-weight:700}
.role-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin:6px 0}
.role-card{border:1px solid var(--border-soft);border-radius:6px;padding:7px 9px;cursor:pointer;display:flex;flex-direction:column;gap:2px}
.role-card.sel{border-color:var(--accent);background:var(--accent-bg)}
.sess-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:12px}
.sess-card{background:var(--card);border:1px solid var(--border);border-radius:8px;padding:12px 14px;display:flex;flex-direction:column;gap:6px}
.sess-card h3{margin:0;font-size:calc(15px * var(--fs))}
.scen-sum{display:flex;gap:6px;flex-wrap:wrap}
.pwd-stage{display:grid;grid-template-columns:110px 1fr 1fr 1fr 40px;gap:6px;align-items:center;margin:4px 0}
.qr-box{background:#fff;padding:8px;border-radius:6px;display:inline-block}
.codebox{font-family:var(--mono);font-size:calc(22px * var(--fs));letter-spacing:.2em;font-weight:800;color:var(--text-strong)}

/* Kaaviot */
.chart{width:100%;height:auto;display:block}
.chart .grid{stroke:var(--border-soft);stroke-width:1}
.chart .axis{fill:var(--muted);font-size:10px}
.chart .nowline{stroke:var(--accent);stroke-width:1;stroke-dasharray:3 3}
.legend{display:flex;gap:12px;flex-wrap:wrap;font-size:calc(12px * var(--fs));margin:4px 0}
.legend i{display:inline-block;width:12px;height:3px;margin-right:5px;vertical-align:middle}
.legend i.lgP1{background:var(--p1)} .legend i.lgP2{background:var(--p2)} .legend i.lgP3{background:var(--p3)}

/* Dialogit ja ilmoitukset */
dialog.dlg{background:var(--card);color:var(--text);border:1px solid var(--border-soft);border-radius:10px;padding:16px 18px;max-width:560px;width:calc(100% - 24px)}
dialog.dlg.wide{max-width:820px}
dialog.dlg::backdrop{background:rgba(0,0,0,.6)}
dialog.dlg h2{margin:0 0 10px;font-size:calc(17px * var(--fs))}
.dlg-body{white-space:pre-line;margin-bottom:8px}
.dlg-btns{margin-top:12px}
.dlg-impact{margin:6px 0}
input.invalid{border-color:var(--bad)}
.toast-wrap{position:fixed;right:14px;bottom:14px;display:flex;flex-direction:column;gap:6px;z-index:60}
.toast{background:var(--card-hi);border:1px solid var(--border-soft);border-left:4px solid var(--accent);padding:8px 12px;border-radius:6px;max-width:420px;display:flex;gap:10px;align-items:center}
.toast.err{border-left-color:var(--bad)} .toast.ok{border-left-color:var(--ok)} .toast.info{border-left-color:var(--warn)}
.readonly-note{background:var(--card-alt);border:1px dashed var(--border-soft);border-radius:6px;padding:6px 10px;color:var(--muted);font-size:calc(13px * var(--fs));margin-bottom:10px}

/* Seinänäyttö */
.wall{font-size:calc(17px * var(--fs))}
.wall .topbar nav,.wall .btn,.wall #roleSel{display:none}
.wall nav#tabs,.wall label[for="roleSel"],.wall .hdr-more{display:none !important}
.wall button.alert,.wall .pc{pointer-events:none}
.wall .wallkpis{grid-template-columns:repeat(auto-fit,minmax(170px,1fr))}
.wall .kpi b{font-size:calc(44px * var(--fs))}
.wall .kpi span{font-size:calc(15px * var(--fs))}
.wall .wallalerts .alert{font-size:calc(20px * var(--fs));margin-bottom:6px;display:block}
.wall main{max-width:none}

@media (max-width:760px){
  header{gap:8px}
  header .hdr-more{display:none}
  header.menu-open .hdr-more{display:inline-flex}
  .pwd-stage{grid-template-columns:1fr 1fr}
  .role-grid{grid-template-columns:1fr}
}
@media (min-width:761px){#btnMenu{display:none}}
@media (prefers-reduced-motion: reduce){*{scroll-behavior:auto !important;transition:none !important;animation:none !important}}


.actcard.denied{opacity:.6}

/* Toimenpidejono */
.aq{border-color:var(--accent-border)}
.aq-list{list-style:none;margin:0;padding:0}
.aq-item{display:flex;gap:10px;align-items:center;padding:8px 0;border-bottom:1px solid var(--border)}
.aq-item:last-child{border-bottom:none}
.aq-item .tag{min-width:92px;text-align:center;flex:none}
.aq-item .grow{flex:1;min-width:0}
.aq-item.high{border-left:3px solid var(--bad);padding-left:8px}
.aq-item.warn{border-left:3px solid var(--warn);padding-left:8px}
.aq-acts{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
@media (max-width:760px){.aq-item{flex-wrap:wrap}.aq-acts{justify-content:flex-start;width:100%}}
.aq.empty{display:flex;align-items:center;gap:12px;padding:8px 14px}.aq.empty h2{margin:0}

/* Potilaskortti: tila vasemmalla, hoitovaiheet oikealla */
.case-grid{display:grid;grid-template-columns:minmax(260px,340px) 1fr;gap:12px;align-items:start}
.case-side{position:sticky;top:0;max-height:calc(92vh - 90px);overflow:auto}
.case-main{min-width:0}
.case-main .subtabs{margin-top:0}
.case-main .subtabs button .tag{margin:0 0 0 4px}
.case-main input[type=search]{min-width:200px}
.dispo-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:10px}
.dispo-opt{background:var(--card-alt);border:1px solid var(--border);border-radius:8px;padding:10px;display:flex;flex-direction:column;gap:8px;align-items:flex-start}
.dispo-opt select{width:100%}
.dispo-exit{margin-top:6px}
@media (max-width:860px){.case-grid{grid-template-columns:1fr}.case-side{position:static;max-height:none}}
.case-main .steps{flex-wrap:nowrap;overflow-x:auto}.case-main .steps button{padding:9px 11px}

/* Pelinjohdon komentopalkki */
.ctlbar{display:flex;gap:8px;flex-wrap:wrap;align-items:center;padding:6px 14px;background:#101612;border-bottom:1px solid var(--accent-border)}
.ctlbar.hidden{display:none}

/* Potilasmerkki, paikat ja pohjapiirros */
.pc{width:38px;height:38px;border-radius:6px;display:inline-flex;flex-direction:column;align-items:center;justify-content:center;border:2px solid transparent;font:800 15px/1 var(--mono);position:relative;cursor:pointer;color:#fff;padding:0;flex:none}
.pc small{font:800 9px/1 -apple-system,Arial,sans-serif;letter-spacing:.05em;margin-bottom:2px}
.pc.P1{background:var(--p1)} .pc.P2{background:var(--p2);color:#000} .pc.P3{background:var(--p3)} .pc.M0{background:var(--m0)}
.pc.NA{background:var(--card-hi);color:var(--muted);border:2px dashed var(--border-soft)}
.pc.sm{width:30px;height:30px;font-size:12px} .pc.sm small{font-size:8px}
.pc .b{position:absolute;font:800 9px/1 -apple-system,Arial,sans-serif;border-radius:8px;padding:2px 4px;white-space:nowrap}
.pc .b.w{right:-8px;bottom:-9px;background:#101010;color:var(--warn);border:1px solid var(--warn-border)}
.pc .b.n{left:-7px;top:-9px;background:var(--bad);color:#fff}
.pc.arr{background:transparent;border:2px dashed var(--border-soft);color:var(--text);cursor:default}
.pc.arr.P1{border-color:var(--p1)} .pc.arr.P2{border-color:var(--p2)} .pc.arr.P3{border-color:var(--p3)}
.pc:focus-visible{outline:3px solid #fff;outline-offset:2px}
.sl{width:38px;height:38px;border-radius:6px;border:1px dashed var(--border-soft);flex:none;position:relative;display:inline-block;vertical-align:middle}
.sl.bg{background:#2b2b28;border:1px solid var(--border-soft)}
.sl.el{background:#26262a;border:1px solid #4a4a58}
.sl.el::after{content:"E";position:absolute;inset:0;display:grid;place-items:center;font:700 11px var(--mono);color:#8a8aa0}
.sl.off{border:1px solid var(--bad-border);background:repeating-linear-gradient(45deg,#2a1717,#2a1717 4px,#1e1e1c 4px,#1e1e1c 8px)}
.sl.res{border:2px dashed var(--muted);display:inline-grid;place-items:center;font:700 9px/1.1 var(--mono);color:var(--muted);text-align:center}
.sl.res.P1{border-color:var(--p1);color:var(--p1)} .sl.res.P2{border-color:var(--p2);color:var(--p2)} .sl.res.P3{border-color:var(--p3);color:var(--p3)}
.fp-legend .sl{width:20px;height:20px;margin:0 2px 0 8px}
.fp-legend .pc{margin:0 4px 0 8px}
.cells{display:flex;flex-wrap:wrap;gap:12px 6px;padding:2px 0 8px;align-items:center}
.bdots{display:flex;flex-wrap:wrap;gap:3px;margin-top:2px}
.bdot{width:9px;height:9px;border-radius:2px;background:#5a5a54}
.bdot.free{background:transparent;border:1px solid #3a3a38}
.bdot.off{background:#7a3a3a}
.floor{border:2px solid #34342f;border-radius:10px;padding:14px 10px 10px;margin:14px 0;background:#191917;position:relative}
.floor>h3{position:absolute;top:-11px;left:12px;margin:0;background:var(--bg);padding:0 8px;font-size:12px;letter-spacing:.08em;color:var(--accent)}
.fp-grid{display:grid;grid-template-columns:1fr 34px 1fr;gap:10px}
.fp-col{display:flex;flex-direction:column;gap:10px;min-width:0}
.fp-corr{border:1px dashed #3a3a38;border-radius:6px;background:repeating-linear-gradient(90deg,#1c1c1a,#1c1c1a 12px,#1f1f1d 12px,#1f1f1d 24px);display:flex;align-items:center;justify-content:center;color:#6a6a66;font-size:11px;letter-spacing:.1em}
.fp-corr span{writing-mode:vertical-rl}
.fp-room{border:1px solid var(--border-soft);border-radius:8px;padding:8px 10px;background:var(--card)}
.fp-room>h4{margin:0 0 8px;font-size:12px;letter-spacing:.08em;color:var(--muted)}
.fp-unit{background:var(--card-alt);border:1px solid var(--border);border-radius:8px;padding:8px 10px;margin-bottom:8px;min-width:0}
.fp-unit.high{border-color:var(--warn-border)} .fp-unit.full{border-color:var(--bad-border)}
.fp-unit .uh{display:flex;justify-content:space-between;gap:8px;font-size:calc(13px * var(--fs))}
.fp-unit .uh b{color:var(--text-strong)}
.fp-queue{border:1px dashed var(--warn-border);background:rgba(240,192,64,.05);border-radius:8px;padding:6px 9px}
.fp-queue .qh{font-size:calc(12px * var(--fs));color:var(--warn);margin-bottom:6px;display:flex;justify-content:space-between;gap:8px}
.fp-staff{margin-top:6px}
.fp-srow{display:grid;grid-template-columns:minmax(120px,1.3fr) 56px minmax(80px,1.5fr) minmax(70px,.9fr) auto;gap:8px;align-items:center;font-size:calc(13px * var(--fs));margin-top:4px}
.fp-srow .bar{margin-top:0}
.fp-wards{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:10px;margin-top:10px}
.fp-ent{font-size:calc(13px * var(--fs));color:var(--muted)}
.fp-legend{display:flex;align-items:center;flex-wrap:wrap;margin:8px 0}
.fp-blood{margin:4px 0}
@media (max-width:1000px){.fp-grid{grid-template-columns:1fr}.fp-corr{display:none}.fp-srow{grid-template-columns:1fr 56px}}

/* Potilasvirta (tilannekuva) */
.vflow{display:grid;grid-template-columns:repeat(7,minmax(150px,1fr));overflow-x:auto;padding-bottom:6px}
.stage{padding:0 8px;border-right:1px dashed #34342f;min-width:150px;display:flex;flex-direction:column;gap:6px}
.stage:last-child{border-right:none}
.stage h3{margin:0 0 4px;font-size:calc(12px * var(--fs));letter-spacing:.07em;color:var(--accent);text-transform:uppercase}
.stage .stagebtn{background:none;border:none;color:inherit;font:inherit;letter-spacing:inherit;text-transform:inherit;cursor:pointer;padding:0;text-decoration:underline dotted}
.stage.high .fp-mini .bar{outline:1px solid var(--warn-border)}
.stage.full{background:rgba(208,59,59,.06)} .stage.bott{box-shadow:inset 0 0 0 2px rgba(208,59,59,.35);border-radius:8px}
.stage .big{font:700 24px var(--mono);color:var(--text-strong);line-height:1}
.fp-mini .uh{display:flex;justify-content:space-between;gap:6px}
.callout{background:var(--bad-bg);border:1px solid var(--bad-border);color:#ffd0d0;border-radius:6px;padding:7px 10px;font-size:calc(13px * var(--fs));margin-bottom:10px}
.callout ul{margin:4px 0 0;padding-left:18px}
@media (max-width:1000px){.vflow{grid-template-columns:1fr}.stage{border-right:none;border-bottom:1px dashed #34342f;padding:8px 0}}
.wall .stage .stagebtn{pointer-events:none;text-decoration:none}

/* Käyttöasteen kehitys ja yksikön otsikon oikea reuna */
.fp-unit .uhr{display:inline-flex;align-items:center;gap:8px}
.trend{display:inline-flex;align-items:center;gap:3px;color:var(--muted)}
.trend.up{color:var(--warn)} .trend.down{color:var(--ok)}
.trend svg{display:block}

/* Kuormituksen lämpökartta (jälkipuinti) */
.hmwrap{overflow-x:auto}
table.heat{border-collapse:separate;border-spacing:1px;width:auto;font-size:calc(12px * var(--fs))}
table.heat th{background:none;border:none;padding:1px 6px 1px 0;white-space:nowrap;text-align:left;font-weight:500;color:var(--text)}
table.heat th.hmh{font-size:calc(10px * var(--fs));color:var(--muted);padding:0;text-align:left}
table.heat th.hmsep{padding-top:8px;color:var(--accent)}
.hm{display:inline-block}
td.hm{display:table-cell;min-width:16px;height:18px;padding:0;border:none;text-align:center;font-weight:800;line-height:18px}
.hm.L0{background:#1f3d27} .hm.L1{background:#2f7a52;color:#000} .hm.L2{background:var(--mid);color:#000} .hm.L3{background:var(--crit);color:#fff} .hm.Ln{background:var(--card-hi);border:1px dashed var(--border-soft)}
.hm.hmd{background:none;color:var(--accent);padding:0 3px}

/* Tulostus: vaalea, vain sisältö */
@media print{
  :root{--bg:#fff;--card:#fff;--card-alt:#f4f4f1;--card-hi:#ecece8;--border:#cfcfca;--border-soft:#b5b5b0;--text:#111;--text-strong:#000;--muted:#555;--faint:#666;
    --accent:#0a6b3c;--accent-bg:#e6f4ec;--accent-border:#6aa886;--ok:#14721c;--ok-bg:#e4f4e6;--ok-border:#7ab882;--warn:#8a5a00;--warn-bg:#fff3d0;--warn-border:#c9a23a;
    --bad:#a01818;--bad-bg:#fbe4e4;--bad-border:#c98a8a;--crit:#c01818;--crit-bg:#fbe4e4;--viz-track:#dcdcd6}
  *{-webkit-print-color-adjust:exact;print-color-adjust:exact}
  body{background:#fff;color:#111}
  nav#tabs,.ctlbar,.toast-wrap,.btn,.crumb,#btnMenu,#roleSel,label[for="roleSel"],.fs-ctl,.subtabs,.bar .inc{display:none !important}
  header{background:#fff;border-bottom:2px solid #111;color:#000}
  .brand,.clock,.sess-name{color:#000}
  .card,.fp-unit,.fp-room,.floor,.stage{break-inside:avoid}
  main{padding:0}
  .hm.L0{background:#bfe3c5} .hm.L1{background:#6dbb7e;color:#000} .hm.L2{background:#f0b429;color:#000} .hm.L3{background:#d03b3b;color:#fff}
}
