/* The Factsheet view (web/js/sheets): the official workbook in the browser. Tokens only (web/css/tokens.css), light and dark as equals.
   One scroll container (.sh-body) for both axes, so the header row sticks to the top and the first column to the left.
   Status is never colour alone: every state carries its icon shape and a word (visible, or for the dense room / opening cells in
   the row's status chip and in the accessible name). No inline styles: positions and percentages are set through the CSSOM. */
.xview.xv-sheets{padding:0;display:flex;flex-direction:column;height:100%;min-height:0;overflow:hidden;background:var(--bg)}

/* ---- title + sheet tabs (like the tab strip of a workbook) */
.sh-top{flex:none;padding:var(--s3) var(--s4) 0;background:var(--bg)}
.sh-head{display:flex;align-items:center;gap:var(--s2) var(--s3);flex-wrap:wrap;margin-bottom:var(--s3)}
.sh-ttl{flex:1 1 220px;min-width:0;display:flex;align-items:baseline;gap:4px 10px;flex-wrap:wrap}
.sh-head h2{margin:0;font-size:var(--fs-xl);font-weight:700;letter-spacing:-.01em;color:var(--ink)}
.sh-head .sub{font-size:var(--fs-sm);color:var(--ink-3)}
.sh-tabs{display:flex;align-items:flex-end;gap:2px;overflow-x:auto;scrollbar-width:none;border-bottom:1px solid var(--line)}
.sh-tabs::-webkit-scrollbar{display:none}
.sh-tab{flex:none;display:inline-flex;align-items:center;gap:8px;padding:6px 13px 6px;margin-bottom:-1px;border:1px solid transparent;border-bottom:0;border-radius:var(--r) var(--r) 0 0;background:transparent;color:var(--ink-2);white-space:nowrap;cursor:pointer;transition:background var(--t-fast) var(--ease),color var(--t-fast) var(--ease)}
.sh-tab:hover{background:var(--surface-3);color:var(--ink)}
.sh-tab .tl{display:flex;flex-direction:column;align-items:flex-start;line-height:1.2}
.sh-tab .nm{font-size:var(--fs-sm);font-weight:600;letter-spacing:.05em}
.sh-tab .en{font-size:11px;color:var(--ink-3)}
.sh-tab .n{font-size:11px;font-weight:600;padding:0 6px;border-radius:var(--r-pill);background:var(--surface-3);color:var(--ink-2);line-height:17px}
.sh-tab.on{background:var(--surface);border-color:var(--line);color:var(--ink);box-shadow:inset 0 2px 0 var(--accent)}
.sh-tab.on .nm{color:var(--accent)}
.sh-tab.on .n{background:var(--accent-bg);color:var(--accent)}
.sh-tab:focus-visible,.sh-sort:focus-visible,.sh-cell:focus-visible,.sh-show:focus-visible,.sh-xbtn:focus-visible,.sh-link:focus-visible,.sh-miss:focus-visible,.sh-gring:focus-visible{outline:2px solid var(--focus);outline-offset:-2px}

/* ---- toolbar */
.sh-tools{flex:none;display:flex;align-items:center;gap:var(--s2);flex-wrap:wrap;padding:10px var(--s4);background:var(--surface);border-bottom:1px solid var(--line-2)}
.sh-tools .searchbox{flex:1 1 130px;max-width:240px;min-width:120px}
.sh-tools .searchbox input{border:0;background:transparent;color:inherit;font:inherit;min-width:0;width:100%;height:30px;outline:0}
.sh-chips{flex:0 1 auto}
.sh-chips .fchip svg.ic{width:13px;height:13px}
.sh-chips .fchip.f-ok:not(.on) svg{color:var(--ok)} .sh-chips .fchip.f-verify:not(.on) svg{color:var(--verify)} .sh-chips .fchip.f-alarm:not(.on) svg{color:var(--alarm)}
.sh-chips .fchip.f-conflict:not(.on) svg{color:var(--conflict)} .sh-chips .fchip.f-assumed:not(.on) svg{color:var(--assumed)} .sh-chips .fchip.f-not_found:not(.on) svg{color:var(--nf)}
.sh-actions{flex:none;display:flex;align-items:center;gap:var(--s2);flex-wrap:wrap;margin-left:auto}
.sh-dl{display:inline-flex;gap:4px;flex-wrap:wrap}
.sh-actions .btn.small{height:28px;white-space:nowrap}
.sh-actions .btn svg.ic{width:14px;height:14px}
.sh-menuwrap{position:relative}
.sh-colmenu{position:absolute;right:0;top:100%;margin-top:4px;min-width:230px;max-height:52vh;overflow:auto;z-index:30;align-items:stretch}
.sh-colopt{display:flex;align-items:center;gap:8px;padding:5px 10px;border-radius:var(--r-sm);font-size:var(--fs-sm);cursor:pointer}
.sh-colopt:hover{background:var(--surface-3)}
.sh-copybuf{position:fixed;left:-9999px;top:0;width:1px;height:1px;opacity:0}

/* ---- body: one scroller */
.sh-body{flex:1 1 auto;min-height:0;overflow:auto;background:var(--surface);overscroll-behavior:contain}
.sh-foot{flex:none;display:flex;align-items:center;gap:var(--s4);flex-wrap:wrap;padding:6px var(--s4);border-top:1px solid var(--line);background:var(--surface-2);font-size:var(--fs-sm);color:var(--ink-3)}
.sh-foot .sh-count{font-weight:600;color:var(--ink-2)}
.sh-xnote{display:inline-flex;align-items:flex-start;gap:6px;flex:1 1 320px;min-width:0}
.sh-xnote svg.ic{flex:none;width:14px;height:14px;margin-top:2px}

/* ---- checklist summary: rings + what is still open */
.sh-sum{position:sticky;left:0;padding:var(--s3) var(--s4);border-bottom:1px solid var(--line-2);background:var(--surface-2)}
.sh-sum-top{display:flex;align-items:center;gap:var(--s4) var(--s5);flex-wrap:wrap}
.sh-tots{display:flex;align-items:center;gap:var(--s4) var(--s5);flex-wrap:wrap}
.sh-tot{display:flex;align-items:center;gap:10px}
.sh-tot .txt{display:flex;flex-direction:column;line-height:1.25}
.sh-tot .txt b{font-size:var(--fs-lg);font-weight:700;color:var(--ink)}
.sh-tot.big .txt b{font-size:22px;letter-spacing:-.01em}
.sh-tot .txt span{font-size:var(--fs-sm);color:var(--ink-3)}
.sh-ring{--sz:20px;--hole:6px;flex:none;display:inline-block;width:var(--sz);height:var(--sz);border-radius:50%;background:conic-gradient(var(--ok) calc(var(--pct,0) * 1%),var(--surface-3) 0);-webkit-mask:radial-gradient(circle,transparent var(--hole),#000 calc(var(--hole) + .6px));mask:radial-gradient(circle,transparent var(--hole),#000 calc(var(--hole) + .6px))}
.sh-ring.part{background:conic-gradient(var(--verify) calc(var(--pct,0) * 1%),var(--surface-3) 0)}
.sh-ring.none{background:var(--surface-3)}
.sh-ring.lg{--sz:46px;--hole:15px} .sh-ring.md{--sz:34px;--hole:11px} .sh-ring.sm{--sz:18px;--hole:5px}
.sh-grings{flex:1 1 300px;display:flex;gap:4px;flex-wrap:wrap;justify-content:flex-end}
.sh-gring{display:inline-flex;align-items:center;gap:6px;padding:4px 9px;border:1px solid var(--line);border-radius:var(--r-pill);background:var(--surface);color:var(--ink-2);font-size:var(--fs-xs);cursor:pointer}
.sh-gring:hover{border-color:var(--accent-line);color:var(--ink)}
.sh-gring .g{font-weight:700;color:var(--ink);max-width:14ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sh-note{margin:var(--s2) 0 0;font-size:var(--fs-xs);color:var(--ink-3)}
.sh-allset{display:flex;align-items:center;gap:6px;margin:var(--s2) 0 0;color:var(--ok-ink);font-weight:600;font-size:var(--fs-sm)}
.sh-allset svg.ic{color:var(--ok);width:15px;height:15px}
.sh-missing{display:flex;align-items:center;gap:5px;flex-wrap:wrap;margin-top:var(--s3)}
.sh-missing .ttl{display:inline-flex;align-items:center;gap:6px;margin-right:4px;font-size:var(--fs-sm);font-weight:600;color:var(--ink)}
.sh-missing .ttl svg.ic{width:15px;height:15px;color:var(--nf)}
.sh-miss{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border:1px solid var(--c-line,var(--line));border-radius:var(--r-pill);background:var(--c-bg,var(--surface));color:var(--c-ink,var(--ink-2));font-size:var(--fs-xs);font-weight:600;font-variant-numeric:tabular-nums;cursor:pointer;max-width:22ch}
.sh-miss span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sh-miss svg.ic{flex:none;width:12px;height:12px;color:var(--c)}
.sh-miss:hover{border-color:var(--c,var(--accent))}
.sh-miss.st-not_found{--c:var(--nf);--c-ink:var(--nf-ink);--c-bg:var(--nf-bg)} .sh-miss.st-verify{--c:var(--verify);--c-ink:var(--verify-ink);--c-bg:var(--verify-bg)}
.sh-miss.st-conflict{--c:var(--conflict);--c-ink:var(--conflict-ink);--c-bg:var(--conflict-bg)} .sh-miss.st-assumed{--c:var(--assumed);--c-ink:var(--assumed-ink);--c-bg:var(--assumed-bg)}

/* ---- completeness of the room parameters by storey (a heatmap; the table behind it is the RAUMBUCH sheet) */
.sh-heat{position:sticky;left:0;border-bottom:1px solid var(--line-2);background:var(--surface)}
.sh-heat summary{display:flex;align-items:center;gap:6px 10px;flex-wrap:wrap;padding:8px var(--s4);cursor:pointer;list-style:none;font-size:var(--fs-sm)}
.sh-heat summary::-webkit-details-marker{display:none}
.sh-heat summary::before{content:"›";display:inline-block;width:10px;color:var(--ink-3);font-size:15px;line-height:1;transition:transform var(--t-fast) var(--ease)}
.sh-heat[open] summary::before{transform:rotate(90deg)}
.sh-heat summary:hover{background:var(--surface-2)}
.sh-heat summary:focus-visible{outline:2px solid var(--focus);outline-offset:-2px}
.sh-heat .ht{font-weight:600;color:var(--ink)}
.sh-heat .hs{color:var(--ink-3);font-size:var(--fs-xs)}
.sh-heatleg{display:inline-flex;align-items:center;gap:3px;margin-left:auto;font-size:var(--fs-xs);color:var(--ink-3)}
.sh-heatleg .hc{width:14px;height:10px;border-radius:2px}
.sh-heatleg span:first-child{margin-right:3px} .sh-heatleg span:last-child{margin-left:3px}
.sh-heatwrap{overflow-x:auto;padding:0 var(--s4) 4px}
.sh-heatgrid{border-collapse:separate;border-spacing:2px;font-size:var(--fs-xs);color:var(--ink-2)}
.sh-heatgrid th{padding:0 2px;height:22px;font-weight:600;white-space:nowrap;text-align:center;color:var(--ink-2)}
.sh-heatgrid thead th span{display:block;max-width:76px;overflow:hidden;text-overflow:ellipsis;font-family:var(--mono);font-size:10.5px;font-weight:500}
.sh-heatgrid th.hl{text-align:left;padding-right:10px;font-family:var(--font);color:var(--ink)}
.sh-heatgrid .hr{padding-left:10px;text-align:right;color:var(--ink-3);font-weight:400;font-variant-numeric:tabular-nums}
.sh-heatgrid td{padding:0}
.sh-heatgrid tr.tot th,.sh-heatgrid tr.tot td{padding-top:3px}
.hc{display:flex;align-items:center;justify-content:center;min-width:30px;width:100%;height:22px;padding:0;border:1px solid transparent;border-radius:3px;background:var(--surface-3);color:var(--ink);font:600 10.5px/1 var(--font);font-variant-numeric:tabular-nums}
button.hc{cursor:pointer}
button.hc:hover,button.hc:focus-visible{outline:2px solid var(--focus);outline-offset:1px}
.hc.h0{background:transparent;border:1px dashed var(--nf-line)}
.hc.h1{background:color-mix(in srgb,var(--accent) 10%,var(--surface))}
.hc.h2{background:color-mix(in srgb,var(--accent) 22%,var(--surface))}
.hc.h3{background:color-mix(in srgb,var(--accent) 36%,var(--surface))}
.hc.h4{background:color-mix(in srgb,var(--accent) 50%,var(--surface))}
.hc.h5{background:var(--accent);color:var(--accent-ink)}
.no-color-mix .hc.h1,.no-color-mix .hc.h2{background:var(--accent-bg)} .no-color-mix .hc.h3,.no-color-mix .hc.h4{background:var(--accent-line)}
.sh-heat .sh-note{margin:2px var(--s4) 8px}

/* ---- tables */
.sh-table{border-collapse:separate;border-spacing:0;width:100%;font-size:var(--fs-sm);color:var(--ink)}
.sh-table th,.sh-table td{padding:0 10px;height:34px;text-align:left;vertical-align:middle;border-bottom:1px solid var(--line-2);background:var(--surface);font-weight:400}
.sh-table thead th{position:sticky;top:0;z-index:4;height:36px;padding:0;background:var(--surface-2);border-bottom:1px solid var(--line);box-shadow:0 1px 0 var(--line);white-space:nowrap}
.sh-table thead th:first-child{left:0;z-index:6}
.sh-table tbody th:first-child,.sh-table tbody td:first-child{position:sticky;left:0;z-index:2}
.sh-table .num{text-align:right;font-variant-numeric:tabular-nums lining-nums}
.sh-sort{display:flex;align-items:center;gap:5px;width:100%;height:36px;padding:0 10px;border:0;background:transparent;color:var(--ink-2);font:inherit;font-size:11px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;text-align:left;cursor:pointer;white-space:nowrap}
.sh-table thead th.num .sh-sort{justify-content:flex-end}
.sh-sort:hover{color:var(--ink);background:var(--surface-3)}
.sh-sort .hc{padding:0 5px;border-radius:var(--r-sm);background:var(--surface-3);color:var(--ink-2);font-size:10.5px;letter-spacing:.02em}
.sh-sort .arrow{flex:none;width:9px;font-size:8px;color:var(--accent)}
.sh-sort .arrow:empty{display:none}
.sh-table thead th[aria-sort="ascending"] .sh-sort,.sh-table thead th[aria-sort="descending"] .sh-sort{color:var(--accent)}
.sh-row:hover>th,.sh-row:hover>td{background:var(--surface-2)}

/* group rows (A..I, storeys) */
.sh-grow th{height:34px;padding:0;background:var(--surface-2);border-top:1px solid var(--line);border-bottom:1px solid var(--line);position:static}
.sh-table tbody .sh-grow th:first-child{position:static}
.sh-grow .gwrap{position:sticky;left:0;display:inline-flex;align-items:center;gap:9px;padding:0 var(--s3);height:34px;max-width:100%}
.sh-grow .gwrap svg.ic{width:15px;height:15px;color:var(--ink-3)}
.sh-grow .gt{font-weight:700;font-size:var(--fs-md);color:var(--ink);white-space:nowrap}
.sh-grow .gc{font-size:var(--fs-xs);color:var(--ink-3);white-space:nowrap}
.sh-row.flash>th,.sh-row.flash>td,.sh-grow.flash th{animation:sh-flash 1.4s var(--ease)}
@keyframes sh-flash{0%,35%{background:var(--hi-bg)}100%{background:var(--surface)}}

/* cells */
.sh-table .code{font-family:var(--mono);font-size:12px;font-weight:600;color:var(--ink-2);white-space:nowrap}
.sh-cl{table-layout:fixed}
.sh-cl td,.sh-cl tbody th{overflow:hidden}
.sh-cl .sc-code{padding-right:2px}
.sh-cl .sc-code .sh-tier{display:block;width:max-content;margin-top:2px;padding:0 5px;font-size:10.5px;line-height:15px}
.sh-cl td.sc-label{padding-top:5px;padding-bottom:5px}
.sh-cl .sc-label .l1{display:block;font-weight:500;color:var(--ink);line-height:1.3;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.sh-cl .sc-label .l2{display:flex;align-items:center;gap:6px;font-size:var(--fs-xs);color:var(--ink-3);line-height:1.3;min-width:0}
.sh-cl .sc-label .l2>span:last-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sh-cl .sc-label .l2 .sh-tier{flex:none;padding:0 5px;font-size:10.5px;line-height:15px}
.sh-m2{display:block;line-height:1.2}
.sh-m2 .sh-method{font-size:var(--fs-xs);gap:4px}
.sh-m2 .sh-method svg.ic{width:11px;height:11px}
.sh-cl.narrow .sh-show span{display:none}
.sh-cl.narrow .sh-show{padding:4px 6px}
.sh-cl .sh-cell.nf .w{overflow:hidden;text-overflow:ellipsis}
.sc-value.is-ent .sh-m2{padding-left:20px}
td.num .sh-m2{text-align:right}
.sh-cl .sh-row>th,.sh-cl .sh-row>td{height:42px}
.sh-cl .sc-calc code{display:block;font-family:var(--mono);font-size:11.5px;color:var(--ink-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sh-cl .sc-unit,.sh-cl .sc-level{color:var(--ink-2);white-space:nowrap}
.sh-tier{display:inline-block;padding:1px 7px;border-radius:var(--r-sm);border:1px solid var(--line);font-size:var(--fs-xs);font-weight:600;color:var(--ink-2);background:var(--surface-2);white-space:nowrap}
.sh-tier.t-bonus{border-style:dashed;font-weight:500;color:var(--ink-3);background:transparent}
.sh-dash{color:var(--ink-3)}

.sh-cell{display:inline-flex;align-items:center;gap:5px;max-width:100%;min-height:26px;padding:2px 7px;margin:0 -7px;border:1px solid transparent;border-radius:var(--r-sm);background:transparent;color:var(--ink);font:inherit;font-weight:600;font-variant-numeric:tabular-nums lining-nums;text-align:left;line-height:1.25}
button.sh-cell{cursor:pointer;transition:background var(--t-fast) var(--ease),border-color var(--t-fast) var(--ease)}
button.sh-cell:hover{background:var(--accent-bg);border-color:var(--accent-line)}
.sh-cell .v{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sh-cell.num{justify-content:flex-end}
td.num>.sh-cell{margin-left:auto}
td.num{white-space:nowrap}
.sh-cell .sh-sti{flex:none;width:13px;height:13px;color:var(--c,var(--ink-3))}
.sh-cell.nf{font-weight:400;color:var(--ink-3)}
.sh-cell.nf .w{font-size:var(--fs-xs);white-space:nowrap}
.sh-cell.st-verify{--c:var(--verify)} .sh-cell.st-alarm{--c:var(--alarm)} .sh-cell.st-conflict{--c:var(--conflict)} .sh-cell.st-assumed{--c:var(--assumed)} .sh-cell.st-not_found{--c:var(--nf)}
.sh-cell.st-alarm:not(.nf){color:var(--alarm-ink);background:var(--alarm-bg)}
.sh-cell.st-conflict{color:var(--conflict-ink)}
.sh-cell.st-assumed:not(.nf){color:var(--assumed-ink)}
.sh-cell.sel,button.sh-cell.sel:hover{background:var(--accent-bg);border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}
.sh-tag{display:inline-flex;align-items:center;gap:3px;flex:none;padding:0 6px;border-radius:var(--r-pill);border:1px solid var(--c-line,var(--line));background:var(--c-bg,var(--surface-3));color:var(--c-ink,var(--ink-2));font-size:10.5px;font-weight:600;line-height:16px;white-space:nowrap}
.sh-tag svg.ic{width:11px;height:11px;color:var(--c)}
.sh-tag.st-verify{--c:var(--verify);--c-ink:var(--verify-ink);--c-bg:var(--verify-bg)} .sh-tag.st-assumed{--c:var(--assumed);--c-ink:var(--assumed-ink);--c-bg:var(--assumed-bg)} .sh-tag.st-not_found{--c:var(--nf);--c-ink:var(--nf-ink);--c-bg:var(--nf-bg)}
.sh-chipx{font-variant-numeric:tabular-nums;font-weight:500;opacity:.85}
.sh-table .chip{vertical-align:middle}

/* per-entity rows of the checklist */
.sc-value.is-ent{white-space:nowrap}
.sh-xbtn{display:inline-flex;align-items:center;gap:6px;min-height:26px;padding:2px 8px 2px 4px;margin-left:-4px;border:1px solid transparent;border-radius:var(--r-sm);background:transparent;color:var(--ink);font:inherit;font-weight:600;font-variant-numeric:tabular-nums;cursor:pointer}
.sh-xbtn:hover{background:var(--surface-3)}
.sh-xbtn{max-width:100%}
.sh-xbtn .v{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sh-xbtn .chev{display:inline-block;width:12px;text-align:center;color:var(--ink-3);font-size:15px;line-height:1;transition:transform var(--t-fast) var(--ease)}
.sh-xbtn .chev.open{transform:rotate(90deg)}
.sh-link{margin-left:-6px;padding:3px 6px;border:0;border-radius:var(--r-sm);background:transparent;color:var(--accent);font:inherit;font-size:10.5px;font-weight:600;letter-spacing:.04em;cursor:pointer;white-space:nowrap}
.sh-link:hover{background:var(--accent-bg)}
.sh-row.sub>th,.sh-row.sub>td{height:30px;background:var(--surface-2);border-bottom-color:var(--line-2)}
.sh-cl .sh-row.sub>th,.sh-cl .sh-row.sub>td{height:30px}
.sh-row.sub .sc-label .sh-eid{font-family:var(--mono);font-size:12px;color:var(--ink-2);padding-left:10px;border-left:2px solid var(--line)}
.sh-row.sub.more td{padding-left:66px}
.sh-min{display:block;font-size:10.5px;color:var(--ink-3);line-height:1}

/* source, method, confidence */
.sh-src{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:0 8px;min-width:0}
.sh-src-main{display:flex;align-items:baseline;gap:5px;min-width:0}
.sh-src .doc{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink-2);font-size:12px}
.sh-src .doc.calc{font-family:var(--mono);font-size:11.5px}
.sh-src .more{flex:none;font-size:10.5px;color:var(--ink-3)}
.sh-quote{grid-column:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--fs-xs);color:var(--ink-3)}
.sh-show{grid-column:2;grid-row:1 / span 2;display:inline-flex;align-items:center;gap:4px;padding:2px 7px;border:1px solid var(--line);border-radius:var(--r-pill);background:var(--surface);color:var(--ink-2);font:inherit;font-size:var(--fs-xs);font-weight:500;cursor:pointer;white-space:nowrap}
.sh-show svg.ic{width:12px;height:12px}
.sh-show:hover{border-color:var(--hi);color:var(--hi-ink);background:var(--hi-bg)}
.sh-method{display:inline-flex;align-items:center;gap:5px;color:var(--ink-2);white-space:nowrap}
.sh-method svg.ic{width:14px;height:14px;color:var(--m-read)}
.sh-method.m-measured svg.ic{color:var(--m-measured)} .sh-method.m-calculated svg.ic{color:var(--m-calculated)} .sh-method.m-assumed svg.ic{color:var(--m-assumed)}
.sh-method.m-not_found{color:var(--ink-3)} .sh-method.m-not_found svg.ic{color:var(--nf)}
.sh-method.m-assumed{color:var(--assumed-ink);font-weight:600}
.sh-mixed{color:var(--ink-3)}
.sh-conf{display:inline-flex;align-items:center;gap:6px;justify-content:flex-end}
.sh-conf .num{min-width:2.4ch;text-align:right;color:var(--ink-2);font-size:12px}
.sh-conf.st-verify .fill{background:var(--verify)} .sh-conf.st-alarm .fill{background:var(--alarm)} .sh-conf.st-assumed .fill{background:var(--assumed)} .sh-conf.st-conflict .fill{background:var(--conflict)}

/* room / opening sheets: dense, like a spreadsheet */
.sh-ent{table-layout:fixed}
.sh-ent th,.sh-ent td{height:30px;border-right:1px solid var(--line-2);overflow:hidden}
.sh-ent thead th{height:46px;border-right:1px solid var(--line-2)}
.sh-ent .sh-sort{height:46px;flex-wrap:wrap;align-content:center;row-gap:2px}
.sh-ent .sh-sort .h1{flex:1 0 100%;display:flex;align-items:center;gap:5px;font-size:10.5px;font-weight:500;letter-spacing:.02em;text-transform:none;color:var(--ink-3)}
.sh-ent thead th.num .sh-sort .h1{justify-content:flex-end}
.sh-ent .sh-sort{font-size:12px;letter-spacing:0;text-transform:none}
.sh-ent .sh-sort .l{flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis}
.sh-ent .sc-xid{white-space:nowrap;box-shadow:1px 0 0 var(--line)}
.sh-ent .sc-xid .code{display:block;overflow:hidden;text-overflow:ellipsis}
.sh-ent td.sc-val .sh-cell{font-weight:500}
.sh-ent td.sc-val .sh-cell.compact.nf{opacity:.75}
.sh-ent .sc-source{min-width:190px;max-width:260px}
.sh-ent .sh-row.st-alarm>.sc-xid .code{color:var(--alarm-ink)}
.sh-total th,.sh-total td{height:34px;background:var(--surface-2);border-top:1px solid var(--line);border-bottom:1px solid var(--line);font-weight:600}
.sh-total th.sc-xid{font-size:var(--fs-xs);font-weight:700;letter-spacing:.03em;color:var(--ink-2);white-space:nowrap}
.sh-total.all th,.sh-total.all td{border-top:2px solid var(--ink-3);background:var(--surface-3)}
.sh-total .sum{font-weight:700;color:var(--ink)}
.sh-total .tot.part{white-space:nowrap}
.sh-total .tot.part .sum{font-weight:500;color:var(--ink-2);margin-right:6px}
.sh-more td,.sh-empty td{position:sticky;left:0;height:auto;padding:var(--s3) var(--s4);text-align:left;color:var(--ink-3);border-bottom:0}
.sh-empty p{margin:0 0 var(--s2)}

/* ---- KENNZAHLEN: gauge cards */
.sh-kz{display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:var(--s3);padding:var(--s4);background:var(--bg);min-height:100%;align-content:start}
.sh-kzempty{grid-column:1 / -1;color:var(--ink-3)}
.sh-kzcard{display:flex;flex-direction:column;gap:10px;min-width:0;padding:var(--s3) var(--s4) var(--s4);border:1px solid var(--line);border-radius:var(--r-lg);background:var(--surface);box-shadow:var(--e1)}
.sh-kzcard.s-alarm{border-color:var(--alarm-line);box-shadow:inset 3px 0 0 var(--alarm),var(--e1)}
.sh-kzcard.s-warn{box-shadow:inset 3px 0 0 var(--verify),var(--e1)}
.sh-kzcard header{display:flex;align-items:flex-start;gap:8px;justify-content:space-between}
.sh-kzcard h3{margin:0;font-size:var(--fs-md);font-weight:600;line-height:1.3;color:var(--ink);text-transform:none;letter-spacing:0;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.sh-kzcard header .chip{flex:none}
.sh-kzcard .kv{display:flex;align-items:baseline;justify-content:space-between;gap:10px}
.sh-kzcard .val{font-size:var(--fs-2xl);font-weight:700;letter-spacing:-.02em;line-height:1;color:var(--ink)}
.sh-kzcard.s-na .val{color:var(--ink-3);font-weight:500}
.sh-kzcard.s-alarm .val{color:var(--alarm-ink)}
.sh-kzcard .band{display:flex;flex-direction:column;align-items:flex-end;font-size:var(--fs-sm);color:var(--ink-2)}
.sh-kzcard .band .bl{font-size:10.5px;letter-spacing:.05em;text-transform:uppercase;color:var(--ink-3)}
.sh-gauge{position:relative;height:10px;border-radius:5px;background:var(--surface-3)}
.sh-gauge .band{position:absolute;top:0;bottom:0;border-radius:5px;background:var(--ok-line)}
.sh-gauge .band.inner{background:var(--ok);opacity:.55}
.sh-gauge .mark{position:absolute;top:-4px;width:4px;height:18px;margin-left:-2px;border-radius:2px;background:var(--ok);box-shadow:0 0 0 2px var(--surface)}
.sh-gauge.s-warn .mark{background:var(--verify)} .sh-gauge.s-alarm .mark{background:var(--alarm)}
.sh-gauge.s-na{background:repeating-linear-gradient(135deg,var(--nf-bg) 0 4px,transparent 4px 8px);border:1px dashed var(--nf-line)}
.sh-gauge.s-na .band{opacity:.45}
.sh-kzcard .ops{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:stretch;gap:6px}
.sh-kzcard .ops .div{align-self:center;color:var(--ink-3);font-size:var(--fs-lg)}
.sh-op.sh-cell{display:flex;flex-direction:column;align-items:flex-start;gap:1px;margin:0;padding:6px 8px;border:1px solid var(--line-2);border-radius:var(--r);background:var(--surface-2);font-weight:400;min-width:0}
button.sh-op.sh-cell:hover{border-color:var(--accent-line);background:var(--accent-bg)}
.sh-op .ok{font-size:10.5px;letter-spacing:.05em;text-transform:uppercase;color:var(--ink-3)}
.sh-op .on{max-width:100%;font-size:12px;color:var(--ink-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sh-op .on.expr{font-family:var(--mono);font-size:11.5px}
.sh-op b{font-size:var(--fs-md);font-weight:700;color:var(--ink)}
.sh-op b.weak,.sh-kzcard.s-na .sh-op b{font-weight:500;color:var(--ink-2)}
.sh-op .sh-tag{margin-top:2px;max-width:100%;overflow:hidden}
.sh-kzcard .sh-why{padding:0;border:0;background:none;display:flex;gap:6px;margin:0;font-size:var(--fs-sm);color:var(--nf-ink);line-height:1.35}
.sh-kzcard .sh-why svg.ic{flex:none;width:14px;height:14px;margin-top:2px;color:var(--nf)}
.sh-kzcard .sh-why span{overflow:hidden;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical}
.sh-kzcard .srcnote{margin:0;font-size:var(--fs-xs);color:var(--ink-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sh-kzopen{align-self:flex-start}
.sh-kzopen svg.ic{color:var(--alarm);width:14px;height:14px}

/* ---- narrow: the table scrolls inside its pane, never the page */
@media (max-width:900px){
  .sh-top{padding:var(--s2) var(--s3) 0}
  .sh-tools{padding:8px var(--s3)}
  .sh-tools .searchbox{flex:1 1 100%}
  .sh-tab{padding:6px 10px}
  .sh-tab .en{display:none}
  .sh-actions{margin-left:0;flex:1 1 100%}
  .sh-head h2{font-size:var(--fs-lg)}
  .sh-xnote{font-size:11px}
  /* a phone has no room for a fixed header, toolbar and footer around the sheet: the whole view scrolls, the wide table scrolls sideways in its own box */
  #app[data-view="sheets"] .left{height:78vh}
  .xview.xv-sheets{display:block;overflow:auto}
  .sh-body{overflow-x:auto;overflow-y:visible}
  .sh-sum,.sh-heat{position:static}
  .sh-sum{padding:var(--s3)}
  .sh-grings{margin-left:0}
  .sh-kz{padding:var(--s3);grid-template-columns:1fr}
  .sh-foot{padding:6px var(--s3)}
}
/* ---- official layout over a smaller registry (the synthetic demo): "not evaluated" is neutral, distinct from "not found" (nobody looked) */
.st-absent{--c:var(--ink-3);--c-ink:var(--ink-2);--c-bg:var(--surface-3);--c-line:var(--line)}
.sh-cell.st-absent{--c:var(--ink-3);color:var(--ink-3);font-weight:400}
.sh-cell.st-absent .sh-sti{opacity:.85}
.sh-row.st-absent .sc-label .l1,.sh-row.st-absent .sc-code .code{color:var(--ink-3)}
.sh-row.st-absent .sc-label .l2{opacity:.8}
.sh-chips .fchip.f-absent:not(.on) svg{color:var(--ink-3)}
.sh-table thead th.absent .sh-sort{color:var(--ink-3);font-weight:500}
.sh-table thead th.absent .hc{opacity:.75}
.sh-table td.absent{background:repeating-linear-gradient(135deg,transparent 0 6px,var(--line-2) 6px 7px)}
.sh-absentnote{margin:var(--s2) 0 0;font-size:var(--fs-sm);line-height:1.45;color:var(--ink-2);max-width:110ch}
.sh-absentnote svg.ic{width:15px;height:15px;margin:0 6px -3px 0;color:var(--ink-3)}
.sh-absentnote .more{color:var(--ink-3)}
.sh-layout{display:inline-flex;align-self:center;padding:2px;border:1px solid var(--line);border-radius:var(--r-pill);background:var(--surface)}
.sh-seg{height:26px;padding:0 11px;border:0;border-radius:var(--r-pill);background:transparent;color:var(--ink-2);font:inherit;font-size:var(--fs-sm);font-weight:600;white-space:nowrap;cursor:pointer}
.sh-seg:hover{color:var(--ink);background:var(--surface-3)}
.sh-seg.on{background:var(--accent-bg);color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent-line)}
.sh-seg:focus-visible{outline:2px solid var(--focus);outline-offset:1px}
@media (prefers-reduced-motion:reduce){.sh-row.flash>th,.sh-row.flash>td,.sh-grow.flash th{animation:none}.sh-xbtn .chev,.sh-tab,button.sh-cell{transition:none}}

/* ---- print / PDF: only the active sheet, no chrome, the header row repeated on every page */
@media print{
  html,body{height:auto!important;overflow:visible!important}
  #app[data-view="sheets"] .rail,#app[data-view="sheets"] .right,#app[data-view="sheets"] .docstrip,#app[data-view="sheets"] .sheet-pick,#app[data-view="sheets"] .bootline,#app[data-view="sheets"] #view-drawing,#app[data-view="sheets"]~#overlay-root,#app[data-view="sheets"]~#dropzone{display:none!important}
  #app[data-view="sheets"] .left{height:auto!important;position:static;background:none}
  #app[data-view="sheets"] .view-extra{position:static;overflow:visible;background:none}
  .xview.xv-sheets{display:block;height:auto;overflow:visible;background:none}
  .xv-sheets .sh-tools,.xv-sheets .sh-actions,.xv-sheets .sh-tab:not(.on),.xv-sheets .sh-show,.xv-sheets .sh-link,.xv-sheets .sh-more,.xv-sheets .sh-missmore,.xv-sheets .sh-kzopen,.xv-sheets .sh-sort .arrow,.xv-sheets .sh-layout{display:none!important}
  .xv-sheets,.xv-sheets *{-webkit-print-color-adjust:exact;print-color-adjust:exact}
  .xv-sheets .sh-top{padding:0 0 6pt;background:none}
  .xv-sheets .sh-tabs{border:0}
  .xv-sheets .sh-tab.on{border:0;box-shadow:none;padding:0;background:none}
  .xv-sheets .sh-body{overflow:visible;height:auto;background:none}
  .xv-sheets .sh-sum,.xv-sheets .sh-heat,.xv-sheets .sh-grow .gwrap{position:static}
  .xv-sheets .sh-table{font-size:8.5pt;min-width:0!important;table-layout:auto}
  .xv-sheets .sh-table thead th{width:auto!important}
  .xv-sheets .sh-cl .sc-label .l1{-webkit-line-clamp:unset}
  .xv-sheets .sh-src,.xv-sheets .sh-src .doc,.xv-sheets .sh-quote,.xv-sheets .sh-cell .v{white-space:normal;overflow:visible}
  .xv-sheets .sh-table thead{display:table-header-group}
  .xv-sheets .sh-table th,.xv-sheets .sh-table td{position:static!important;height:auto;padding:3pt 5pt;box-shadow:none}
  .xv-sheets .sh-table tr,.xv-sheets .sh-kzcard{break-inside:avoid}
  .xv-sheets .sh-kz{background:none;padding:0}
  .xv-sheets .sh-foot{border:0;background:none;padding:6pt 0 0}
}
