/* v2s.css — Spotsheet v2 · THE SELECTION MOMENT.
   Ported VERBATIM from Claude Design DH #577 (+ amendment #579), capture
   2026-08-03: dh-capture-2026-08-03/v2s/v2s.css. SS-STAGE fork only (#5346).

   Rides tokens.css + v1w.css, which are already in this tree. It adds ONLY the
   .s-* namespace plus .c-chain; nothing here overrides a v1 rule.

   KNOWN RESIDUE, deliberately left byte-faithful to the design file: the
   .s-chain.pulled rules and the --ch-pulled* custom properties are pull-era.
   The pull / pre-select phase is RETIRED (DH #579 amendment 1) and NO code path
   in v2s-app/parts/data can emit 'pulled' — CHAIN has exactly two states.
   Flagged for the founder rather than silently edited: deleting bytes out of a
   captured design is a design decision, not a port decision.
*/
/* Spotsheet v2 · the selection moment — namespaced .s-* · rides tokens.css + v1w/v1w.css */

/* ── coverage chain colours — one scale, used everywhere ─────────── */
:root{--ch-needs:#5b5f66;--ch-pulled:#c19355;--ch-spotted:#7a9a86;--ch-needs-bg:rgba(139,143,150,.08);--ch-pulled-bg:rgba(193,147,85,.10);--ch-spotted-bg:rgba(122,154,134,.10)}

/* chain read — two states, the v2 column */
.s-chain{font-family:var(--mono);font-size:8px;letter-spacing:.13em;text-transform:uppercase;display:inline-flex;align-items:center;gap:5px;height:15px;padding:0 5px;border-radius:2px;flex-shrink:0;white-space:nowrap;border:1px solid transparent}
.s-chain i{width:4px;height:4px;border-radius:1px;flex-shrink:0}
.s-chain.needs{color:var(--fg-dim)}.s-chain.needs i{background:#484c53}
.s-chain.pulled{color:var(--ch-pulled);background:var(--ch-pulled-bg);border-color:rgba(193,147,85,.24)}.s-chain.pulled i{background:var(--ch-pulled)}
.s-chain.spotted{color:var(--ch-spotted);background:var(--ch-spotted-bg);border-color:rgba(122,154,134,.22)}.s-chain.spotted i{background:var(--ch-spotted)}
.s-chain.lg{height:18px;font-size:8.5px;padding:0 7px;letter-spacing:.15em}
.c-chain{width:80px;flex-shrink:0;display:flex;justify-content:flex-start}
@container (max-width:560px){.w-row .c-chain{width:auto}}
@container (max-width:470px){.w-row .c-chain .lbl{display:none}.s-chain{padding:0 3px}}

/* ── waveform ─────────────────────────────────────────────────── */
.s-wv{position:relative;overflow:hidden;background:var(--bg-deep);flex-shrink:0}
.s-wv svg{position:absolute;inset:0;width:100%;height:100%;display:block;shape-rendering:crispEdges}
.s-wv .base{fill:var(--wave-fill);opacity:.42}
.s-wv .reg{fill:var(--wave-fill);opacity:.95}
.s-wv .pl{fill:var(--wave-played)}
.s-wv .mid{position:absolute;left:0;right:0;top:50%;height:1px;background:rgba(255,255,255,.045)}
.s-mini{width:104px;height:20px;border-radius:2px;border:1px solid rgba(0,0,0,.28)}
.s-mini.off{opacity:.32}

/* ── candidate rows ───────────────────────────────────────────── */
.s-cands{flex:1;min-height:0;min-width:0;display:flex;flex-direction:column;background:var(--bg-app)}
.s-meta{flex-shrink:0;display:flex;align-items:center;gap:8px;height:22px;padding:0 10px;border-bottom:1px solid var(--line-soft);background:var(--bg-panel);font-family:var(--mono);font-size:8px;letter-spacing:.14em;text-transform:uppercase;color:var(--fg-faint);white-space:nowrap;overflow:hidden}
.s-meta b{color:var(--fg-mute);font-weight:400}
.s-meta .id{color:var(--teal);letter-spacing:.04em}
.s-meta .sp{flex:1}
.s-cand{display:flex;align-items:center;gap:9px;min-height:34px;padding:0 10px 0 8px;border-bottom:1px solid var(--line-soft);cursor:pointer;background:var(--bg-row);position:relative}
.s-cand:hover{background:var(--bg-row-hover)}
.s-cand.on{background:var(--bg-row-sel)}
.s-cand.on::before{content:'';position:absolute;left:0;top:0;bottom:0;width:2px;background:var(--teal)}
.s-cand.off{cursor:not-allowed}
.s-cand.off .s-nm{color:var(--fg-dim)}
.s-cand .n{font-family:var(--mono);font-size:9px;color:var(--fg-faint);width:12px;flex-shrink:0;text-align:right}
.s-cand.on .n{color:var(--teal)}
.s-txt{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.s-nm{font-size:11.5px;color:var(--fg);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:1.25}
.s-cand.on .s-nm{color:var(--fg-strong)}
.s-mt{font-family:var(--mono);font-size:8.5px;letter-spacing:.055em;color:var(--fg-dim);display:flex;align-items:center;gap:7px;white-space:nowrap;overflow:hidden}
.s-mt .lib{color:var(--fg-mute)}
.s-mt .cid{color:#7f8e9c}
.s-mt .miss{color:var(--st-flagged)}
.s-dur{font-family:var(--mono);font-size:9.5px;font-feature-settings:"tnum" 1;color:var(--fg-mute);width:38px;text-align:right;flex-shrink:0}
.s-cand .s-fav{opacity:0}
.s-cand:hover .s-fav,.s-cand.on .s-fav,.s-cand .s-fav.on{opacity:1}
.s-flags{display:flex;align-items:center;gap:5px;flex-shrink:0;width:62px;justify-content:flex-end}
.s-tag{font-family:var(--mono);font-size:7.5px;letter-spacing:.13em;text-transform:uppercase;height:14px;padding:0 4px;border-radius:2px;display:inline-flex;align-items:center;border:1px solid currentColor}
.s-tag.pulled{color:var(--ch-pulled);background:var(--ch-pulled-bg)}
.s-tag.spot{color:var(--ch-spotted);background:var(--ch-spotted-bg)}
.s-tag.kept{color:var(--fg-mute);border-style:dashed}
/* why this row is where it is — at most one per row, and only where there is a reason */
.s-why{font-family:var(--mono);font-size:7.5px;letter-spacing:.13em;text-transform:uppercase;color:var(--fg-dim);white-space:nowrap}
.s-fav{width:16px;height:16px;flex-shrink:0;border:0;background:transparent;padding:0;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;color:var(--fg-faint)}
.s-fav i{width:6px;height:6px;transform:rotate(45deg);border:1px solid currentColor;border-radius:1px;display:block}
.s-fav:hover{color:var(--fg-mute)}
.s-fav.on{color:var(--cue-amber)}
.s-fav.on i{background:currentColor}
.s-play{width:20px;height:20px;flex-shrink:0;border-radius:2px;border:1px solid var(--line);background:var(--bg-sub);color:var(--fg-mute);display:inline-flex;align-items:center;justify-content:center;cursor:pointer}
.s-play:hover{color:var(--fg);border-color:var(--line-strong)}
.s-play.live{color:var(--teal);border-color:var(--teal-line);background:var(--teal-bg)}

/* ── hero ─────────────────────────────────────────────────────── */
.s-hero{flex-shrink:0;display:flex;flex-direction:column;background:var(--bg-panel);border-left:1px solid var(--line);min-width:0}
.s-hero.below{border-left:0;border-top:1px solid var(--line)}
.s-hh{flex-shrink:0;display:flex;align-items:center;gap:9px;min-height:28px;padding:4px 10px;border-bottom:1px solid var(--line-soft)}
.s-hh .t{font-size:12px;color:var(--fg-strong);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.s-hh .k{font-family:var(--mono);font-size:8px;letter-spacing:.16em;text-transform:uppercase;color:var(--fg-faint);flex-shrink:0}
.s-hbody{padding:10px;display:flex;flex-direction:column;gap:8px;min-width:0}
.s-bed{position:relative;height:78px;border-radius:2px;border:1px solid var(--line);background:var(--bg-deep);box-shadow:inset 0 1px 3px rgba(0,0,0,.45);cursor:text;overflow:hidden;user-select:none}
.s-bed.sm{height:56px}
.s-bed>.s-wv{position:absolute;inset:0;background:transparent}
.s-bed .shade{position:absolute;top:0;bottom:0;background:rgba(12,14,16,.34);pointer-events:none}
.s-bed .edge{position:absolute;top:0;bottom:0;width:9px;margin-left:-4px;cursor:ew-resize;z-index:3}
.s-bed .edge::after{content:'';position:absolute;left:4px;top:0;bottom:0;width:1px;background:var(--teal);opacity:.9}
.s-bed .edge::before{content:'';position:absolute;left:1px;top:50%;margin-top:-9px;width:7px;height:18px;border-radius:2px;background:var(--teal);opacity:.22}
.s-bed .edge:hover::before{opacity:.42}
.s-bed .ph{position:absolute;top:0;bottom:0;width:1px;background:var(--teal);box-shadow:0 0 7px var(--teal-glow);pointer-events:none;z-index:4}
.s-bed .lab{position:absolute;left:5px;bottom:3px;font-family:var(--mono);font-size:7.5px;letter-spacing:.13em;text-transform:uppercase;color:var(--fg-faint);pointer-events:none}
.s-bed .ruler{position:absolute;left:0;right:0;top:0;height:11px;border-bottom:1px solid rgba(0,0,0,.3);pointer-events:none}
.s-bed .ruler i{position:absolute;top:4px;bottom:0;width:1px;background:#3a3e44}
.s-bed .ruler b{position:absolute;top:1px;font-family:var(--mono);font-size:7px;color:var(--fg-faint);font-weight:400;transform:translateX(3px)}
.s-reg{display:flex;align-items:center;gap:9px;font-family:var(--mono);font-size:9px;letter-spacing:.05em;color:var(--fg-dim);flex-wrap:wrap}
.s-reg b{color:var(--tc-green);font-weight:400}
.s-reg .sp{flex:1}
.s-act{display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.s-pullb{height:22px;padding:0 10px;border:1px solid var(--line);border-radius:var(--r-2);background:var(--btn-grad);color:var(--fg-mute);font-family:var(--ui);font-size:11px;display:inline-flex;align-items:center;gap:6px;cursor:pointer;box-shadow:var(--inset-panel);white-space:nowrap}
.s-pullb:hover{background:var(--btn-grad-h);color:var(--fg)}
.s-pullb kbd{font-family:var(--mono);font-size:8.5px;color:var(--fg-faint)}
.s-pullb.on{border-color:rgba(193,147,85,.42);color:var(--ch-pulled);background:var(--ch-pulled-bg);box-shadow:none}
.s-pullb.on kbd{color:rgba(193,147,85,.6)}
.s-pullb[disabled]{color:var(--fg-faint);border-color:var(--line-soft);background:transparent;cursor:not-allowed;box-shadow:none}

/* ── the bench (bottom drawer) ────────────────────────────────── */
.s-drawer{position:absolute;left:0;right:0;bottom:0;z-index:18;display:flex;flex-direction:column;background:var(--bg-panel);border-top:1px solid var(--line-strong);box-shadow:0 -20px 44px rgba(0,0,0,.44);animation:s-rise .17s cubic-bezier(.2,.9,.3,1)}
@keyframes s-rise{from{transform:translateY(16px);opacity:0}to{transform:none;opacity:1}}
.s-dh{flex-shrink:0;display:flex;align-items:center;gap:9px;height:30px;padding:0 8px 0 10px;background:var(--bg-sub);border-bottom:1px solid var(--line)}
.s-dh .tc{font-family:var(--mono);font-size:11px;font-feature-settings:"tnum" 1;color:var(--tc-green);flex-shrink:0}
.s-dh .bd{font-size:11.5px;color:var(--fg-mute);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;flex:1}
.s-dh .sp{flex:1}
.s-dbody{flex:1;min-height:0;display:flex}
.s-df{flex-shrink:0;height:24px;display:flex;align-items:center;gap:11px;padding:0 10px;border-top:1px solid var(--line);background:var(--bg-panel);font-family:var(--mono);font-size:8.5px;letter-spacing:.11em;text-transform:uppercase;color:var(--fg-dim);overflow:hidden;white-space:nowrap}
.s-df b{color:var(--fg-mute);font-weight:400}
.s-df .sp{flex:1}
.s-grip{position:absolute;left:0;right:0;top:-3px;height:6px;cursor:row-resize;z-index:2}
.s-grip:hover::after{content:'';position:absolute;left:50%;top:2px;width:44px;height:2px;margin-left:-22px;border-radius:1px;background:var(--line-strong)}

/* ── the column (right inspector) ─────────────────────────────── */
.s-col{flex-shrink:0;display:flex;flex-direction:column;background:var(--bg-panel);border-left:1px solid var(--line);min-height:0}
.s-cue{flex-shrink:0;padding:9px 11px 10px;border-bottom:1px solid var(--line-soft);display:flex;flex-direction:column;gap:6px}
.s-cue .top{display:flex;align-items:center;gap:8px}
.s-cue .bd{font-size:12.5px;line-height:1.45;color:var(--fg);text-wrap:pretty}

/* ── inline takeover ──────────────────────────────────────────── */
.s-inline{border-bottom:1px solid var(--line);background:var(--bg-panel);display:flex;flex-direction:column;position:relative;box-shadow:inset 3px 0 0 var(--teal),0 8px 18px rgba(0,0,0,.28);animation:s-open .16s ease-out}
@keyframes s-open{from{opacity:.4;transform:translateY(-4px)}to{opacity:1;transform:none}}
.s-inline .s-dbody{min-height:0}

/* ── band (the lens strip) ────────────────────────────────────── */
.s-band{background:var(--bg-panel);border-bottom:1px solid var(--line);border-top:1px solid var(--line);display:flex;align-items:stretch;overflow-x:auto;overflow-y:hidden;padding:7px 8px;gap:6px;scrollbar-width:thin;box-shadow:inset 0 8px 14px -12px rgba(0,0,0,.7)}
.s-band::-webkit-scrollbar{height:7px}
.s-band::-webkit-scrollbar-thumb{background:#4a4e55;border-radius:4px}
.s-tile{flex-shrink:0;width:92px;border:1px solid var(--line);border-radius:var(--r-2);background:var(--bg-row);display:flex;flex-direction:column;gap:4px;padding:5px;cursor:pointer;transition:width .16s cubic-bezier(.3,.8,.4,1);overflow:hidden}
.s-tile:hover{border-color:var(--line-strong);background:var(--bg-row-hover)}
.s-tile .tn{font-size:9.5px;color:var(--fg-mute);line-height:1.25;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.s-tile .tm{font-family:var(--mono);font-size:7.5px;letter-spacing:.06em;color:var(--fg-faint);display:flex;gap:5px;white-space:nowrap}
.s-tile.on{width:346px;border-color:var(--teal-line);background:var(--bg-row-sel)}
.s-tile.on .tn{color:var(--fg-strong);font-size:11px}
.s-tile.off{opacity:.42;border-style:dashed}
.s-tile .lens{display:flex;gap:8px;align-items:stretch;min-width:0}
.s-tile .lens .col{display:flex;flex-direction:column;gap:5px;justify-content:space-between;flex-shrink:0;width:104px}
.s-band-k{flex-shrink:0;display:flex;flex-direction:column;justify-content:center;gap:3px;padding:0 9px 0 2px;font-family:var(--mono);font-size:8px;letter-spacing:.14em;text-transform:uppercase;color:var(--fg-faint);white-space:nowrap}
.s-band-k b{color:var(--fg-mute);font-weight:400}

/* ── honest empties + library state ───────────────────────────── */
.s-empty{flex:1;min-height:0;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:9px;padding:16px 18px;background:var(--bg-app)}
.s-empty .t{font-size:12.5px;color:var(--fg-mute)}
.s-empty .s{font-size:11.5px;color:var(--fg-dim);line-height:1.6;max-width:56ch;text-wrap:pretty}
.s-empty .s code{font-family:var(--mono);font-size:10.5px;color:var(--fg-mute)}
.s-empty .r{display:flex;gap:7px;flex-wrap:wrap;margin-top:2px}
.s-mount{flex-shrink:0;display:flex;align-items:center;gap:9px;min-height:24px;padding:4px 10px;background:rgba(193,147,85,.09);border-bottom:1px solid rgba(193,147,85,.26);font-size:11px;color:var(--fg-mute)}
.s-mount .k{font-family:var(--mono);font-size:8px;letter-spacing:.16em;text-transform:uppercase;color:var(--st-flagged);flex-shrink:0}
.s-mount b{color:var(--fg);font-weight:500}
.s-mount .sp{flex:1}
.s-roots{display:flex;flex-direction:column;gap:0;margin:2px 0 0}
.s-root{display:flex;align-items:center;gap:9px;height:24px;font-size:11px;color:var(--fg-mute);border-bottom:1px solid var(--line-soft)}
.s-root .d{width:6px;height:6px;border-radius:50%;background:var(--st-resolved);flex-shrink:0}
.s-root.off .d{background:transparent;border:1px solid var(--st-flagged)}
.s-root .p{font-family:var(--mono);font-size:9px;color:var(--fg-dim);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.s-root .n{font-family:var(--mono);font-size:9px;color:var(--fg-faint);margin-left:auto;flex-shrink:0}

/* library search folded into the drawer */
.s-lib{flex-shrink:0;display:flex;align-items:center;gap:7px;height:28px;padding:0 10px;background:var(--bg-deep);border-bottom:1px solid var(--line)}
.s-lib input{flex:1;min-width:0;border:0;background:transparent;outline:none;color:var(--fg);font-family:var(--ui);font-size:11.5px}
.s-lib input::placeholder{color:var(--fg-faint)}
.s-lib .k{font-family:var(--mono);font-size:8px;letter-spacing:.15em;text-transform:uppercase;color:var(--teal);flex-shrink:0}

/* ── coverage spine ───────────────────────────────────────────── */
.s-spine{flex-shrink:0;display:flex;align-items:stretch;height:34px;background:var(--bg-panel);border-bottom:1px solid var(--line)}
.s-seg{position:relative;display:flex;align-items:center;gap:8px;padding:0 11px;cursor:pointer;border-right:1px solid var(--line);min-width:0;overflow:hidden;transition:background .14s}
.s-seg:hover{background:var(--bg-row-hover)}
.s-seg.on{background:var(--bg-row-sel)}
.s-seg .num{font-family:var(--mono);font-size:15px;font-feature-settings:"tnum" 1;color:var(--fg-strong);line-height:1;flex-shrink:0}
.s-seg .lb{font-family:var(--mono);font-size:8px;letter-spacing:.15em;text-transform:uppercase;color:var(--fg-dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.s-seg::after{content:'';position:absolute;left:0;right:0;bottom:0;height:2px;background:currentColor;opacity:.5}
.s-seg.needs{color:var(--ch-needs)}.s-seg.pulled{color:var(--ch-pulled)}.s-seg.spotted{color:var(--ch-spotted)}
.s-seg.needs .num{color:var(--fg-mute)}.s-seg.pulled .num{color:var(--ch-pulled)}.s-seg.spotted .num{color:var(--ch-spotted)}
.s-seg.on::after{opacity:1;height:2px}
.s-spine-r{margin-left:auto;display:flex;align-items:center;gap:7px;padding:0 10px;flex-shrink:0}
.s-strip{flex-shrink:0;height:16px;position:relative;background:var(--bg-deep);border-bottom:1px solid var(--line);overflow:hidden;cursor:pointer}
.s-strip .scn{position:absolute;top:0;bottom:0;width:1px;background:#34383e}
.s-strip .c{position:absolute;top:4px;height:8px;width:1.5px;border-radius:1px}
.s-strip .c.needs{background:#4a4e55}
.s-strip .c.pulled{background:var(--ch-pulled);opacity:.85}
.s-strip .c.spotted{background:var(--ch-spotted);opacity:.8}
.s-strip .c.sel{background:var(--teal);opacity:1;top:2px;height:12px;width:2px;z-index:2}
.s-strip .ph{position:absolute;top:0;bottom:0;width:1px;background:var(--teal);box-shadow:0 0 6px var(--teal-glow)}
.s-gbar{display:flex;height:4px;width:74px;border-radius:1px;overflow:hidden;background:#26292d;flex-shrink:0;margin-left:auto}
.s-gbar i{display:block;height:100%}

/* ── pre-flight ───────────────────────────────────────────────── */
.s-pre{width:min(520px,100%);background:var(--bg-panel);border:1px solid var(--line-strong);border-radius:var(--r-sheet);box-shadow:var(--float);display:flex;flex-direction:column;overflow:hidden;animation:s-rise .16s cubic-bezier(.2,.9,.3,1)}
.s-pre-h{flex-shrink:0;display:flex;align-items:center;gap:9px;height:32px;padding:0 8px 0 12px;background:var(--bg-sub);border-bottom:1px solid var(--line-soft)}
.s-pre-h .k{font-family:var(--mono);font-size:8px;letter-spacing:.18em;text-transform:uppercase;color:var(--teal)}
.s-pre-b{padding:12px;display:flex;flex-direction:column;gap:10px;max-height:340px;overflow-y:auto}
.s-pre-f{flex-shrink:0;display:flex;align-items:center;gap:8px;padding:9px 12px;border-top:1px solid var(--line-soft);background:var(--bg-sub)}
.s-kv{display:grid;grid-template-columns:auto 1fr;gap:6px 14px;font-size:11.5px;align-items:baseline}
.s-kv .k{font-family:var(--mono);font-size:8px;letter-spacing:.16em;text-transform:uppercase;color:var(--fg-faint)}
.s-kv .v{color:var(--fg);font-size:11.5px}
.s-kv .v.mono{font-family:var(--mono);font-size:10.5px;color:var(--fg-mute)}
.s-skip{display:flex;flex-direction:column;gap:0;border:1px solid var(--line-soft);border-radius:var(--r-2);overflow:hidden}
.s-skip .r{display:flex;align-items:center;gap:9px;height:26px;padding:0 9px;font-size:11px;color:var(--fg-mute);border-bottom:1px solid var(--line-soft);background:var(--bg-deep)}
.s-skip .r:last-child{border-bottom:0}
.s-skip .r .t{font-family:var(--mono);font-size:9px;color:var(--tc-green);flex-shrink:0}
.s-skip .r .why{margin-left:auto;font-family:var(--mono);font-size:8px;letter-spacing:.13em;text-transform:uppercase;color:var(--st-flagged);flex-shrink:0}

/* ── ABOM ─────────────────────────────────────────────────────── */
.s-abom{width:min(824px,100%);max-height:100%;background:var(--bg-panel);border:1px solid var(--line-strong);border-radius:var(--r-sheet);box-shadow:var(--float);display:flex;flex-direction:column;overflow:hidden}
.s-ab-h{flex-shrink:0;padding:12px 14px 11px;border-bottom:1px solid var(--line);display:flex;align-items:flex-start;gap:12px}
.s-ab-h .ttl{font-size:13.5px;color:var(--fg-strong);font-weight:500}
.s-ab-h .sub{font-size:11px;color:var(--fg-dim);margin-top:3px;line-height:1.5;max-width:62ch;text-wrap:pretty}
.s-pub{font-family:var(--mono);font-size:8px;letter-spacing:.16em;text-transform:uppercase;height:18px;padding:0 7px;border-radius:2px;display:inline-flex;align-items:center;gap:5px;color:var(--st-resolved);background:var(--st-resolved-bg);border:1px solid rgba(122,154,134,.3);flex-shrink:0}
.s-ab-sub{flex-shrink:0;display:flex;align-items:center;gap:16px;height:26px;padding:0 14px;background:var(--bg-deep);border-bottom:1px solid var(--line);font-family:var(--mono);font-size:8.5px;letter-spacing:.11em;text-transform:uppercase;color:var(--fg-dim);overflow-x:auto;white-space:nowrap}
.s-ab-sub b{color:var(--fg-mute);font-weight:400}
.s-ab-scroll{flex:1;min-height:0;overflow:auto}
.s-tbl{width:100%;border-collapse:collapse;font-size:11.5px}
.s-tbl th{position:sticky;top:0;z-index:2;background:var(--bg-sub);font-family:var(--mono);font-size:8px;letter-spacing:.15em;text-transform:uppercase;color:var(--fg-dim);font-weight:400;text-align:left;padding:6px 12px;border-bottom:1px solid var(--line);white-space:nowrap}
.s-tbl td{padding:7px 12px;border-bottom:1px solid var(--line-soft);color:var(--fg-mute);vertical-align:top;line-height:1.45}
.s-tbl tr:hover td{background:var(--bg-row-hover)}
.s-tbl td.tc{font-family:var(--mono);font-size:9.5px;color:var(--tc-green);white-space:nowrap;font-feature-settings:"tnum" 1}
.s-tbl td.nm{color:var(--fg)}
.s-tbl td.mono{font-family:var(--mono);font-size:9.5px;color:var(--fg-mute)}
.s-tbl td.held{color:var(--fg-dim);font-style:normal}
.s-lic{font-family:var(--mono);font-size:8.5px;letter-spacing:.05em;white-space:nowrap}
.s-lic.ok{color:var(--st-resolved)}.s-lic.own{color:var(--fg-mute)}.s-lic.chk{color:var(--st-flagged)}
.s-ab-f{flex-shrink:0;display:flex;align-items:center;gap:9px;padding:10px 14px;border-top:1px solid var(--line);background:var(--bg-sub)}
.s-ab-f .note{font-size:10.5px;color:var(--fg-dim);line-height:1.5;max-width:58ch;text-wrap:pretty}
.s-ab-f .note b{color:var(--fg-mute);font-weight:500}

/* ── misc ─────────────────────────────────────────────────────── */
.s-note{font-size:10.5px;color:var(--fg-dim);line-height:1.55;text-wrap:pretty}
.s-hint{font-family:var(--mono);font-size:8px;letter-spacing:.14em;text-transform:uppercase;color:var(--fg-faint)}
.s-keys{display:flex;align-items:center;gap:13px;font-size:10.5px;color:var(--fg-dim);white-space:nowrap;overflow:hidden}
.s-keys kbd{font-family:var(--mono);font-size:8.5px;background:var(--bg-deep);border:1px solid var(--line);border-bottom-width:2px;border-radius:2px;padding:1px 4px;color:var(--fg-mute);margin-right:5px}
.s-ovl{position:absolute;inset:0;z-index:55;background:rgba(10,12,14,.66);backdrop-filter:blur(2.5px);-webkit-backdrop-filter:blur(2.5px);display:flex;align-items:center;justify-content:center;padding:22px;animation:w-fade .13s ease-out}
.s-ovl.top{align-items:flex-start;padding-top:70px}

/* ── the wall (#4763) and the quiet affordance (#4764) ────────────
   THE WALL IS INERT IN THIS BUILD. .s-wall only ever renders when the SPOT
   meter is switched on, and the fork ships with it off (R-0069), so these
   rules style something no editor sees yet. They exist so that flipping the
   flag shows the real thing rather than an unstyled box.

   It reads as INFORMATION, not as an alarm: no red, no warning triangle, no
   modal chrome of its own. It sits inside the pre-flight the editor already
   opened, above the footer, in the same panel language as everything else —
   because it is telling them about their own hours, not about our costs. */
.s-wall{flex-shrink:0;padding:11px 14px 12px;border-top:1px solid var(--line);background:var(--bg-deep);display:flex;flex-direction:column;gap:7px}
.s-wall-h{font-size:12.5px;color:var(--fg-strong);line-height:1.45;text-wrap:pretty}
.s-wall-c{font-size:11.5px;color:var(--ch-spotted);line-height:1.5;text-wrap:pretty}
.s-wall-d{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:1px}
/* The unlock door is disabled by construction — monetization is parked and it
   is wired to nothing. It renders as a real door so the shape is legible, and
   it cannot be pressed. */
.s-wall-d [data-inert="1"]{opacity:.45;cursor:default}

/* Quiet means quiet: a hairline, the height of a status row, no border of its
   own beyond the line it already sits on, no colour that pulls the eye off the
   sheet. If the editor ignores it, it is gone and does not come back. */
.s-disc{display:flex;align-items:center;gap:8px;height:28px;padding:0 12px;border-bottom:1px solid var(--line);background:var(--bg-sub);font-size:11px;color:var(--fg-dim)}
.s-disc .txt{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-wrap:nowrap}

/* ── #4571 (SV2 W6 / #5351) · PROVENANCE ON THE NOTES CUE ROW ───────────────
   SS-STAGE FORK ONLY. .ns-* is the Notes namespace; these three rules are
   ADDITIVE and override no v1 rule, the same contract the rest of this sheet
   keeps. On live neither the module nor these rules exist.

   It reads as a quiet stamp, not a badge. The cue body is what an editor is
   scanning for; provenance is what they want to be able to GLANCE at without
   looking away, and a loud chip on every spotted row would compete with the
   text it is annotating. Licence class carries the only colour, and only when
   it is pending — the state that needs a human. */
.ns-prov {
  display: inline-flex; align-items: baseline; gap: 4px;
  margin-left: 8px; padding: 0 5px; height: 15px; line-height: 15px;
  border: 1px solid var(--line, #2a2f3a); border-radius: 3px;
  font-size: 10px; font-family: ui-monospace, Menlo, monospace;
  color: var(--fg-mute, #9aa3b2); background: transparent;
  white-space: nowrap; vertical-align: baseline; flex-shrink: 0;
}
.ns-prov .ns-prov-src { max-width: 130px; overflow: hidden; text-overflow: ellipsis; }
.ns-prov .ns-prov-dot { opacity: .45; }
.ns-prov .ns-prov-rev { opacity: .8; }
/* Clearance pending is the one state a delivery deadline cares about, so it is
   the one state that gets ink. Licensed and in-house stay neutral: a row that is
   fine should not ask for attention. */
.ns-prov.chk { border-color: rgba(227, 200, 75, .45); color: #d8c268; }
