/* kit-ext5.css — the approved visualisation marks (24 Oct 2026; KIT.md section 12; model/VIS-IDEAS-24OCT.md). Load after kit.css, kit-ext.css, kit-ext2.css, kit-ext3.css (and
   kit-ext4.css where a page has it); before app.css. Classes carry the e- prefix; hues are the --hue-* tokens of kit.css 6.1, text sits on the existing .sx-svg rules of kit-ext.css
   (13 px, 12 px for .tick) so every label reads 12 px or more at its drawn size. Motion: the dots' transition is 600 ms, the ladder's highlight 100 ms, and
   prefers-reduced-motion switches every one of them off (kit.css does it globally; the rule below says it again where the mark's meaning depends on it). */
.e-vz{min-width:0}
.e-vz .e-svg{overflow:visible}
.e-vz-note{margin:6px 0 0;font-size:var(--fs-micro);color:var(--color-text-muted)}

/* ---------- S.dots ---------- */
.e-dots .e-dots-seg{margin-bottom:var(--space-2)}
.e-dots .e-dots-col{fill:transparent;transition:fill var(--dur-press) var(--ease-out)}
.e-dots .e-dots-col.on{fill:var(--color-selected-row)}
.e-dots .e-dot{stroke:none;transition:transform 600ms var(--ease-out),opacity 300ms var(--ease-out)}
.e-dots .e-dot.off{opacity:0}
.e-dots .e-dots-n{font-weight:600}
.e-dots .e-dots-n.floor{font-weight:400;fill:var(--color-text-muted)}
.e-dots-key{display:flex;flex-wrap:wrap;gap:4px 14px;margin-top:6px;font-size:var(--fs-micro);color:var(--color-text-muted)}
.e-dots-key i{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:5px;vertical-align:0}

/* ---------- S.swarm ---------- */
.e-swarm .e-sw-dot{stroke:none;opacity:.62}
.e-swarm .e-sw-line{stroke-width:1;stroke-dasharray:3 3;opacity:.8}
.e-swarm .e-sw-lw,.e-swarm .e-sw-cw,.e-swarm .e-sw-sl{fill:var(--color-text-secondary)}
.e-swarm .e-sw-cap{stroke:var(--hue-ink);stroke-width:1.5;stroke-dasharray:6 3}
.e-swarm .e-sw-ring{fill:none;stroke:var(--hue-ink);stroke-width:2}
.e-swarm .e-sw-brush,.e-swarm .e-sw-cursor,.e-swarm .e-sw-ring{pointer-events:none}
.e-swarm .e-sw-dot:not(.s){cursor:pointer}
.e-swarm .e-sw-brush{fill:var(--hue-blue);fill-opacity:.12;stroke:var(--hue-blue);stroke-width:1}
.e-swarm .e-sw-cursor{stroke:var(--hue-ink);stroke-width:1;stroke-dasharray:2 2}
.e-swarm .e-sw-hit{cursor:crosshair}

/* ---------- S.river ---------- */
.e-river .e-rv-layer{stroke:var(--color-surface);stroke-width:.8;opacity:.92}
.e-river .e-rv-line{fill:none;stroke-width:1.8;stroke-linejoin:round}
.e-river .e-rv-lab{fill:var(--color-text)}
.e-river .e-rv-ov{fill:var(--color-text-muted)}
.e-river .e-rv-ovl{fill:var(--color-text);font-weight:600}

/* ---------- S.horizon ---------- */
.e-hz-g{display:grid;gap:0;border-radius:var(--radius-s)}
.e-hz-g:focus-visible{outline:2px solid transparent;box-shadow:var(--focus-ring)}
.e-hz-r{display:grid;grid-template-columns:minmax(0,150px) minmax(0,1fr) 92px;column-gap:10px;align-items:center;min-height:calc(var(--rh,24px) + 2px);font-size:var(--fs-small);border-radius:4px}
.e-hz-r.on{background:var(--color-selected-row)}
.e-hz-l{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--color-text-secondary)}
.e-hz-c{min-width:0;height:var(--rh,24px);position:relative}
.e-hz-cur{position:absolute;top:0;bottom:0;width:1px;background:var(--color-text);pointer-events:none}
.e-hz-svg{display:block}
.e-hz-v{text-align:right;font-weight:600;white-space:nowrap}
.e-hz-m{font-weight:400;color:var(--color-text-muted);font-size:var(--fs-micro);margin-left:6px}
.e-hz-u{font-size:var(--fs-micro);color:var(--color-text-muted)}

/* ---------- S.km (the added marks) ---------- */
.e-km .e-km-landmark{fill:var(--hue-rose-t);opacity:.9}
.e-km .e-km-marker{stroke-width:1.5;stroke-dasharray:5 3}
.e-km .e-km-threshold{stroke:var(--color-text-muted);stroke-width:1;stroke-dasharray:2 3}
.e-km .e-km-gap{fill:var(--hue-blue-t);opacity:.95}
.e-km .e-km-line{fill:none;stroke-width:2;stroke-linejoin:round}
.e-km .e-km-lw{fill:var(--color-text-secondary)}
.e-km .e-km-lw.mk{font-weight:600}
.e-km .e-km-tw{fill:var(--color-text-muted)}
.e-km.small .sx-svg{overflow:visible}
.e-km.small .e-km-end{font-size:var(--fs-micro);fill:var(--color-text-secondary)}

/* ---------- S.path ---------- */
.e-path .e-pa-line{fill:none;stroke-width:1.7;stroke-linejoin:round;opacity:.9;transition:opacity var(--dur-press) var(--ease-out)}
.e-path .e-pa-diag{stroke:var(--color-text-muted);stroke-width:1;stroke-dasharray:5 4}
.e-path .e-pa-dw,.e-path .e-pa-age{fill:var(--color-text-muted);paint-order:stroke;stroke:var(--color-surface);stroke-width:3px;stroke-linejoin:round}
.e-path .e-pa-hit{fill:none;stroke:transparent;stroke-width:14;pointer-events:stroke;cursor:pointer}
.e-path .e-pa-p.dim{opacity:.2}
.e-path .e-pa-p.on .e-pa-line{stroke-width:2.8}
.e-path .e-pa-pt{stroke:var(--color-surface);stroke-width:1}
.e-path .e-pa-lab{fill:var(--color-text);paint-order:stroke;stroke:var(--color-surface);stroke-width:3px;stroke-linejoin:round}

/* ---------- S.mekko ---------- */
.e-mekko .e-mk-seg{stroke:none}
.e-mekko .e-mk-pc{font-size:var(--fs-micro);font-weight:600;fill:#fff;pointer-events:none}
.e-mekko .e-mk-pc.dk{fill:var(--hue-ink)}
.e-mekko .e-mk-hatch{stroke:var(--color-rule-hover);stroke-width:1}
.e-mekko .e-mk-fw{fill:var(--color-text-muted);pointer-events:none}
.e-mekko .e-mk-col.on .e-mk-seg,.e-mekko .e-mk-col.on .e-mk-hatch{stroke:var(--hue-ink);stroke-width:1.5}

/* ---------- S.lorenz ---------- */
.e-lorenz .e-lz-eq{stroke:var(--color-text-muted);stroke-width:1;stroke-dasharray:5 4}
.e-lorenz .e-lz-eqw{fill:var(--color-text-muted)}
.e-lorenz .e-lz-area{fill:var(--hue-blue-t);opacity:.75}
.e-lorenz .e-lz-line{fill:none;stroke-width:2.2;stroke-linejoin:round}
.e-lorenz .e-lz-line.second{stroke-dasharray:6 3}
.e-lorenz .e-lz-tick{stroke:var(--color-text-secondary);stroke-width:1}
.e-lorenz .e-lz-tick.lead{stroke:var(--color-rule-hover)}
.e-lorenz .e-lz-top{fill:var(--hue-ink);stroke:var(--color-surface);stroke-width:1.5}
.e-lorenz .e-lz-gini{font-size:var(--fs-small);font-weight:600}
.e-lorenz .e-lz-bh{font-size:var(--fs-small);font-weight:600;fill:var(--color-text)}
.e-lorenz .e-lz-bn,.e-lorenz .e-lz-bt{fill:var(--color-text-secondary)}
.e-lorenz .e-lz-tw2{fill:var(--color-text);paint-order:stroke;stroke:var(--color-surface);stroke-width:3px}

/* ---------- S.calendar ---------- */
.e-cal .e-cal-c{stroke:none}
.e-cal .e-cal-c.pre{fill:none;stroke:var(--color-rule-soft);stroke-width:1;stroke-dasharray:2 2}
.e-cal .e-cal-c.sil{stroke:var(--hue-amber);stroke-width:1.5}
.e-cal .e-cal-c.today{stroke:var(--hue-ink);stroke-width:1.8}
.e-cal .e-cal-dep{fill:var(--hue-teal);stroke:#fff;stroke-width:.9;pointer-events:none}
.e-cal .e-cal-bonus{fill:none;stroke:var(--hue-amber);stroke-width:1.4;pointer-events:none}
.e-cal .e-cal-sel{fill:none;stroke:var(--hue-blue);stroke-width:2;pointer-events:none}

/* ---------- S.ringNet ---------- */
.e-ringnet .e-rn-ring{fill:none;stroke:var(--color-rule-soft);stroke-width:1}
.e-ringnet .e-rn-edge{stroke:var(--color-rule);stroke-width:1}
.e-ringnet .e-rn-hub{fill:var(--hue-slate)}
.e-ringnet .e-rn-hub.locked{fill:var(--color-surface-sunken)}
.e-ringnet .e-rn-lock{fill:none;stroke:var(--color-rule);stroke-width:1.5;stroke-dasharray:4 4}
.e-ringnet .e-rn-node{stroke:var(--color-surface);stroke-width:1.5;transition:stroke var(--dur-press) var(--ease-out)}
.e-ringnet .e-rn-node.on{stroke:var(--hue-ink);stroke-width:2.2}
.e-rn-key{display:flex;flex-wrap:wrap;align-items:center;gap:4px 12px;font-size:var(--fs-small);color:var(--color-text-secondary);margin-top:4px}
.e-rn-key i{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:5px}

/* ---------- S.ladder: the one input mark ---------- */
.e-ladder .e-ld-steps{list-style:none;margin:0 0 6px;padding:0;display:flex;align-items:flex-end;gap:6px;min-height:84px}
.e-ladder .e-ld-steps li{flex:1 1 0;min-width:0;display:flex;flex-direction:column;align-items:stretch;justify-content:flex-end;gap:3px}
.e-ladder .e-ld-n{display:block;text-align:center;font-size:var(--fs-small);font-weight:600;color:var(--color-text-muted)}
.e-ladder .e-ld-bar{display:block;height:var(--h,20px);border-radius:3px;background:var(--color-surface-sunken);transition:background-color var(--dur-press) var(--ease-out)}
.e-ladder .e-ld-v{display:block;text-align:center;font-size:var(--fs-micro);color:var(--color-text-muted)}
.e-ladder li.on .e-ld-bar{background:var(--hue-blue)}
.e-ladder li.on .e-ld-n{color:var(--color-text)}
.e-ladder li.on .e-ld-v{color:var(--color-text);font-weight:600}
.e-ladder .e-ld-input{width:100%;margin:2px 0 0;accent-color:var(--hue-blue);cursor:pointer}
.e-ladder .e-ld-input:focus-visible{outline:2px solid transparent;box-shadow:var(--focus-ring);border-radius:4px}
.e-ladder .e-ld-out{margin:6px 0 0;font-size:var(--fs-small);color:var(--color-text-secondary)}

/* ---------- S.steps ---------- */
.e-steps .e-st-dots{display:flex;gap:6px;list-style:none;margin:0 0 var(--space-3);padding:0}
.e-steps .e-st-dot{appearance:none;width:10px;height:10px;border-radius:50%;border:0;padding:0;background:var(--color-rule);cursor:pointer;transition:background-color var(--dur-press) var(--ease-out),transform var(--dur-press) var(--ease-out)}
.e-steps .e-st-dot.on{background:var(--hue-blue)}
.e-steps .e-st-dot[aria-current=step]{transform:scale(1.3)}
.e-steps .e-st-dot:focus-visible{outline:2px solid transparent;box-shadow:var(--focus-ring)}
.e-steps .e-st-sentence{margin:0 0 var(--space-3);font-size:var(--fs-body);line-height:1.5}
.e-steps .e-st-sentence b{font-weight:600}
.e-steps .e-st-mark{min-height:40px;margin-bottom:var(--space-3)}
.e-steps .e-st-ctl{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3)}
.e-steps .e-st-word{font-size:var(--fs-small);color:var(--color-text-muted)}
.e-steps .e-st-btn{appearance:none;min-height:32px;padding:0 14px;border:0;border-radius:var(--radius-s);background:var(--color-surface);box-shadow:inset 0 0 0 1px var(--color-rule);font:inherit;font-size:var(--fs-small);font-weight:600;color:var(--color-text);cursor:pointer;transition:transform var(--dur-press) var(--ease-out)}
.e-steps .e-st-btn.pri{background:var(--hue-blue);color:#fff;box-shadow:none}
.e-steps .e-st-btn:active:not(:disabled){transform:scale(.97)}
.e-steps .e-st-btn:disabled{opacity:.4;cursor:default}
.e-steps .e-st-btn:focus-visible{outline:2px solid transparent;box-shadow:var(--focus-ring)}

/* ---------- S.ibcs ---------- */
.e-ibcs .e-ib-g{display:grid;gap:12px}
.e-ibcs .e-ib-r{display:grid;grid-template-columns:minmax(0,140px) minmax(0,1fr) minmax(0,210px);column-gap:12px;align-items:center}
.e-ibcs .e-ib-l{font-size:var(--fs-small);color:var(--color-text-secondary)}
.e-ibcs .e-ib-bars{display:flex;flex-direction:column;gap:3px;min-width:0}
.e-ibcs .e-ib-b{display:block;height:7px;border-radius:2px;box-sizing:border-box}
.e-ibcs .e-ib-b.previous{background:var(--color-track)}
.e-ibcs .e-ib-b.actual{background:var(--hue-ink)}
.e-ibcs .e-ib-b.forecast{background:transparent;border:1.5px solid var(--hue-ink)}
.e-ibcs .e-ib-b.none{width:0;border:0;background:none}
.e-ibcs .e-ib-n{display:flex;flex-direction:column;font-size:var(--fs-small)}
.e-ibcs .e-ib-n b{font-weight:600}
.e-ibcs .e-ib-n span{font-size:var(--fs-micro);color:var(--color-text-muted)}

/* ---------- S.clock ---------- */
.e-clock{display:inline-flex;align-items:center;gap:10px}
.e-clock .e-ck-svg{flex:none;overflow:visible}
.e-clock .e-ck-core{fill:none;stroke:var(--color-rule-soft);stroke-width:1}
.e-clock .e-ck-bar{stroke-linecap:butt}
.e-clock .e-ck-tick{stroke:var(--color-text-muted);stroke-width:1}
.e-clock .e-ck-night{fill:none;stroke:var(--hue-amber);stroke-width:2;stroke-linecap:round}
.e-clock .e-ck-words{margin:0;font-size:var(--fs-small);line-height:1.4;color:var(--color-text-secondary);max-width:34ch}
.e-clock .e-ck-words b{color:var(--color-text);font-weight:600}

@media (prefers-reduced-motion:reduce){
  .e-dots .e-dot,.e-ladder .e-ld-bar,.e-steps .e-st-dot,.e-path .e-pa-line,.e-ringnet .e-rn-node{transition:none!important}
}
@media (max-width:700px){
  .e-hz-r{grid-template-columns:minmax(0,96px) minmax(0,1fr) 72px}
  .e-ibcs .e-ib-r{grid-template-columns:minmax(0,1fr);row-gap:4px}
}

.e-cal .e-cal-lg{display:flex;flex-wrap:wrap;align-items:center;gap:4px 6px;margin:6px 0 0 32px;font-size:var(--fs-micro);color:var(--color-text-muted)}
.e-cal .e-cal-sw{display:inline-block;width:12px;height:12px;border-radius:2px}
.e-cal .e-cal-lgx{display:inline-flex;align-items:center;gap:6px;margin-left:14px}
.e-cal .e-cal-lgd{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--hue-teal)}
.e-cal .e-cal-lgb{display:inline-block;width:10px;height:10px;border-radius:50%;border:1.4px solid var(--hue-amber);box-sizing:border-box}
.e-cal .e-cal-lgs{display:inline-block;width:12px;height:12px;border-radius:2px;border:1.5px solid var(--hue-amber);box-sizing:border-box}

.e-km .e-km-lg{display:inline-flex;align-items:center;gap:6px;margin-right:14px}
.e-km .e-km-lg i{display:inline-block;width:18px;height:0;border-top:2px solid}
.e-km .e-km-lg i.dashed{border-top-style:dashed}

/* ================================================================
   Batch 2 (version 2): the Models and Database marks, KIT.md 12.16 to 12.27
   ================================================================ */
/* ---------- S.shap ---------- */
.e-shap .e-dots-seg{margin-bottom:var(--space-2)}
.e-shap .e-sh-fo{pointer-events:none;overflow:hidden}
.e-shap .e-sh-cv{display:block}
.e-shap .e-sh-hlr{fill:var(--color-selected-row);pointer-events:none}
.e-shap .e-sh-lab{fill:var(--color-text)}
.e-shap .e-sh-mean{fill:var(--color-text-secondary);font-weight:600}
.e-shap .e-sh-zero{stroke:var(--color-text-secondary);stroke-width:1.2}
.e-shap .e-sh-fold{fill:var(--color-text-muted)}
.e-shap .e-sh-key{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px}
.e-shap .e-sh-ramp{display:inline-block;width:110px;height:10px;border-radius:5px;background:linear-gradient(to right,var(--hue-blue),var(--hue-rose))}
.e-shap .e-sh-nb{display:inline-flex;align-items:center;gap:6px;margin-left:14px}
.e-shap .e-sh-grey{display:inline-block;width:10px;height:10px;border-radius:50%;background:var(--color-text-muted)}
.e-shap .e-sh-more{margin-top:var(--space-2);appearance:none;border:1px solid var(--color-rule);background:var(--color-surface);border-radius:var(--radius-s);padding:4px 12px;font:inherit;font-size:var(--fs-small);color:var(--color-action-strong);cursor:pointer}
.e-shap .e-sh-more:hover{background:var(--color-surface-hover)}
/* ---------- S.slopeRank ---------- */
.e-slope .e-sl-head{font-weight:600;fill:var(--color-text)}
.e-slope .e-sl-line{fill:none;stroke:var(--color-rule-hover);stroke-width:1.4;transition:opacity var(--dur-press) var(--ease-out)}
.e-slope .e-sl-i.mv .e-sl-line{stroke:var(--hue-amber);stroke-width:2.2}
.e-slope .e-sl-pt{fill:var(--color-text-muted)}
.e-slope .e-sl-i.mv .e-sl-pt{fill:var(--hue-amber)}
.e-slope .e-sl-lab{fill:var(--color-text)}
.e-slope .e-sl-rk{fill:var(--color-text-muted);font-weight:600}
.e-slope .e-sl-off{fill:var(--color-text-muted)}
.e-slope .e-sl-mv{fill:var(--hue-amber-text,#8a5200);font-weight:600}
.e-slope .e-sl-offh{fill:var(--color-text-muted)}
.e-slope .e-sl-lab.off{fill:var(--color-text-muted)}
.e-slope .e-sl-i.on .e-sl-line{stroke:var(--hue-ink);stroke-width:2.8}
.e-slope .e-sl-i.on .e-sl-pt{fill:var(--hue-ink)}
.e-slope .e-sl-i.dim{opacity:.3}
.e-slope .e-sl-hit{fill:none;stroke:transparent;stroke-width:12;pointer-events:stroke;cursor:pointer}
/* ---------- S.ridges ---------- */
.e-ridges .e-rg-band{fill:transparent}
.e-ridges .e-rg-r.on .e-rg-band{fill:var(--color-selected-row)}
.e-ridges .e-rg-lab{fill:var(--color-text)}
.e-ridges .e-rg-ref{fill:var(--color-track)}
.e-ridges .e-rg-refl{fill:none;stroke:var(--hue-slate);stroke-width:1.2;opacity:.7}
.e-ridges .e-rg-now{fill:var(--hue-blue);fill-opacity:.38}
.e-ridges .e-rg-now.hot{fill:var(--hue-rose);fill-opacity:.4}
.e-ridges .e-rg-nowl{fill:none;stroke:var(--hue-blue);stroke-width:1.8}
.e-ridges .e-rg-nowl.hot{stroke:var(--hue-rose)}
.e-ridges .e-rg-bar{fill:var(--hue-slate);opacity:.55}
.e-ridges .e-rg-bar.hot{fill:var(--hue-rose);opacity:.9}
.e-ridges .e-rg-n{fill:var(--color-text);font-weight:600}
.e-ridges .e-rg-alarm{stroke:var(--hue-rose);stroke-width:1.2;stroke-dasharray:4 3}
.e-ridges .e-rg-aw{fill:var(--hue-rose);font-weight:600}
.e-ridges .e-rg-low{fill:var(--color-text-muted)}
.e-ridges .e-rg-key{display:flex;flex-wrap:wrap;gap:4px 16px;align-items:center;margin:0 0 6px}
.e-ridges .e-rg-key span{display:inline-flex;align-items:center;gap:6px}
.e-ridges .e-rg-sw{display:inline-block;width:14px;height:10px;border-radius:2px}
.e-ridges .e-rg-sw.ref{background:var(--color-track);box-shadow:inset 0 0 0 1px var(--hue-slate)}
.e-ridges .e-rg-sw.now{background:var(--hue-blue);opacity:.55}
.e-ridges .e-rg-sw.hot{background:var(--hue-rose);opacity:.6}
/* ---------- S.bump ---------- */
.e-bump .e-bp-line{fill:none;stroke-width:2;stroke-linejoin:round}
.e-bump .e-bp-win{stroke:var(--color-surface);stroke-width:1.4}
.e-bump .e-bp-end{font-weight:600}
.e-bump .e-bp-tick{stroke:var(--color-text-secondary);stroke-width:1}
.e-bump .e-bp-ev{fill:var(--color-surface);stroke:var(--color-text-secondary);stroke-width:1.2}
.e-bump .e-bp-evn{fill:var(--color-text);font-weight:600}
.e-bump .e-bp-evs{margin:6px 0 0;padding-left:20px}
/* ---------- S.fanBand ---------- */
.e-fanband .e-fb-band{fill:var(--hue-blue-t);stroke:var(--hue-blue-b);stroke-width:1}
.e-fanband .e-fb-line{fill:none;stroke:var(--hue-blue);stroke-width:1.8}
.e-fanband .e-fb-hit{fill:var(--hue-teal);stroke:var(--color-surface);stroke-width:1.2}
.e-fanband .e-fb-miss{fill:var(--hue-rose);stroke:var(--color-surface);stroke-width:1.2}
.e-fanband .e-fb-low{fill:var(--color-text-muted)}
.e-fanband .e-fb-key{display:flex;flex-wrap:wrap;gap:4px 16px;align-items:center;margin:0 0 4px}
.e-fanband .e-fb-key span{display:inline-flex;align-items:center;gap:6px}
.e-fanband .e-fb-sw{display:inline-block}
.e-fanband .e-fb-sw.band{width:16px;height:10px;background:var(--hue-blue-t);box-shadow:inset 0 0 0 1px var(--hue-blue-b);border-radius:2px}
.e-fanband .e-fb-sw.line{width:16px;height:0;border-top:2px solid var(--hue-blue)}
.e-fanband .e-fb-sw.hit{width:10px;height:10px;border-radius:50%;background:var(--hue-teal)}
.e-fanband .e-fb-sw.miss{width:9px;height:9px;background:var(--hue-rose);transform:rotate(45deg)}
/* ---------- S.stack ---------- */
.e-stack .e-st-layer{stroke:var(--color-surface);stroke-width:.8;opacity:.92}
.e-stack .e-st-lab{fill:var(--color-text)}
/* ---------- S.lineage ---------- */
.e-lineage .e-ln-head{font-weight:600;fill:var(--color-text)}
.e-lineage .e-ln-l{fill:none;stroke:var(--color-rule-hover);stroke-width:1.1;transition:opacity var(--dur-press) var(--ease-out)}
.e-lineage .e-ln-l.lit{stroke:var(--hue-blue);stroke-width:2.2}
.e-lineage .e-ln-l.dim{opacity:.18}
.e-lineage .e-ln-box{fill:var(--color-surface);stroke:var(--ln,var(--color-rule));stroke-width:1.2}
.e-lineage .e-ln-t{fill:var(--color-text)}
.e-lineage .e-ln-n{cursor:pointer}
.e-lineage .e-ln-n.sel .e-ln-box{fill:var(--color-selected);stroke-width:2.4}
.e-lineage .e-ln-n.foc .e-ln-box{stroke:var(--color-focus);stroke-width:2.4}
.e-lineage .e-ln-n.dim{opacity:.3}
/* ---------- S.constellation ---------- */
.e-const .e-cn-ring{fill:none;stroke:var(--color-rule-soft);stroke-width:1}
.e-const .e-cn-core{fill:var(--hue-ink)}
.e-const .e-cn-cap{fill:var(--color-text-secondary);font-weight:600}
.e-const .e-cn-dot{fill:var(--hue-blue);fill-opacity:.62;stroke:var(--color-surface);stroke-width:1}
.e-const .e-cn-lab{fill:var(--color-text);paint-order:stroke;stroke:var(--color-surface);stroke-width:3px;stroke-linejoin:round;opacity:0;pointer-events:none}
.e-const .e-cn-lab.named,.e-const .e-cn-n.on .e-cn-lab{opacity:1}
.e-const .e-cn-n{cursor:pointer}
.e-const .e-cn-n.on .e-cn-dot{fill-opacity:1;stroke:var(--hue-ink);stroke-width:2}
.e-const .e-cn-leg{margin:4px 0 0;padding-left:20px}
/* ---------- S.knobs ---------- */
.e-knobs .e-kn-l{display:block;border-radius:var(--radius-s);outline:none}
.e-knobs .e-kn-l:focus-visible{box-shadow:var(--focus-ring)}
.e-knobs .e-kn-h{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin:var(--space-4) 0 4px;padding-bottom:4px;border-bottom:1px solid var(--color-rule);font-size:var(--fs-small);font-weight:700;color:var(--color-text)}
.e-knobs .e-kn-h:first-child{margin-top:0}
.e-knobs .e-kn-h span{font-weight:400;font-size:var(--fs-micro);color:var(--color-text-muted)}
.e-knobs .e-kn-r{display:grid;grid-template-columns:minmax(0,1.25fr) 42px minmax(110px,2fr) 42px minmax(0,.9fr);column-gap:10px;align-items:center;min-height:30px;font-size:var(--fs-small);border-radius:4px;padding:0 4px}
.e-knobs .e-kn-r.on{background:var(--color-selected-row)}
.e-knobs .e-kn-n{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;color:var(--color-text);line-height:1.25;padding:3px 0}
.e-knobs .e-kn-e{font-size:var(--fs-micro);color:var(--color-text-muted);text-align:right;font-variant-numeric:tabular-nums}
.e-knobs .e-kn-e:nth-of-type(2){text-align:left}
.e-knobs .e-kn-t{position:relative;height:14px;display:block}
.e-knobs .e-kn-t::before{content:"";position:absolute;left:0;right:0;top:6px;height:2px;background:var(--color-track);border-radius:1px}
.e-knobs .e-kn-def{position:absolute;top:0;width:14px;height:14px;margin-left:-7px;border-radius:50%;border:1.6px solid var(--color-text-secondary);background:var(--color-surface);box-sizing:border-box}
.e-knobs .e-kn-val{position:absolute;top:2px;width:10px;height:10px;margin-left:-5px;z-index:1;border-radius:50%;background:var(--hue-blue)}
.e-knobs .e-kn-r.chg .e-kn-val{background:var(--hue-amber)}
.e-knobs .e-kn-r.flg .e-kn-n{box-shadow:inset 3px 0 0 var(--hue-amber);padding-left:8px}
.e-knobs .e-kn-v{font-weight:600;white-space:nowrap;text-align:right}
.e-knobs .e-kn-w{grid-column:1/-1;font-size:var(--fs-micro);color:var(--hue-amber-text,#8a5200);padding:0 0 4px}
.e-knobs .e-kn-key{display:flex;flex-wrap:wrap;gap:4px 16px;align-items:center;margin:0 0 var(--space-3)}
.e-knobs .e-kn-key span{display:inline-flex;align-items:center;gap:6px}
.e-knobs .e-kn-sw{display:inline-block;width:10px;height:10px;border-radius:50%;box-sizing:border-box}
.e-knobs .e-kn-sw.def{border:1.6px solid var(--color-text-secondary);background:var(--color-surface)}
.e-knobs .e-kn-sw.val{background:var(--hue-blue)}
.e-knobs .e-kn-sw.chg{background:var(--hue-amber)}
/* ---------- S.forest ---------- */
.e-forest .e-fo-band{fill:transparent}
.e-forest .e-fo-r.on .e-fo-band{fill:var(--color-selected-row)}
.e-forest .e-fo-lab{fill:var(--color-text)}
.e-forest .e-fo-gh{font-weight:700;fill:var(--color-text)}
.e-forest .e-fo-ref{stroke:var(--color-text);stroke-width:1.2;stroke-dasharray:4 3}
.e-forest .e-fo-rw{fill:var(--color-text-secondary);font-weight:600}
.e-forest .e-fo-iv{stroke-width:2}
.e-forest .e-fo-cap{stroke-width:2}
.e-forest .e-fo-chev{fill:none;stroke-width:2}
.e-forest .e-fo-dot{stroke-width:2}
.e-forest .e-fo-n{fill:var(--color-text-secondary)}
.e-forest .e-fo-low{fill:var(--color-text-muted)}
/* ---------- S.treemap ---------- */
.e-treemap .e-tm-g{fill:none;stroke-width:2}
.e-treemap .e-tm-gl{font-weight:700;fill:var(--color-text)}
.e-treemap .e-tm-r{stroke:var(--color-surface);stroke-width:1}
.e-treemap .e-tm-l{fill:var(--color-text);font-weight:600}
.e-treemap .e-tm-c{fill:var(--color-text-secondary)}
.e-treemap .e-tm-t{cursor:pointer}
.e-treemap .e-tm-t.on .e-tm-r{stroke:var(--hue-ink);stroke-width:2}
/* ---------- S.checksWall ---------- */
.e-wall .e-wl-band{fill:transparent}
.e-wall .e-wl-g.on .e-wl-band{fill:var(--color-selected-row)}
.e-wall .e-wl-name{font-weight:600;fill:var(--color-text)}
.e-wall .e-wl-cnt.bad{fill:var(--hue-rose);font-weight:600}
.e-wall .e-wl-d.pass{fill:var(--hue-teal);opacity:.5}
.e-wall .e-wl-d.documented{fill:var(--hue-amber)}
.e-wall .e-wl-d.red{fill:var(--hue-rose)}
.e-wall .e-wl-d.documented,.e-wall .e-wl-d.red{r:4}
.e-wall .e-wl-d.foc{stroke:var(--hue-ink);stroke-width:2}
.e-wall .e-wl-d{cursor:pointer}
.e-wall .e-wl-key{display:flex;flex-wrap:wrap;gap:4px 16px;align-items:center;margin:0 0 6px}
.e-wall .e-wl-key span{display:inline-flex;align-items:center;gap:6px}
.e-wall .e-wl-sw{display:inline-block;width:10px;height:10px;border-radius:50%}
.e-wall .e-wl-sw.pass{background:var(--hue-teal);opacity:.6}
.e-wall .e-wl-sw.documented{background:var(--hue-amber)}
.e-wall .e-wl-sw.red{background:var(--hue-rose)}
@media (prefers-reduced-motion:reduce){
  .e-slope .e-sl-line,.e-lineage .e-ln-l{transition:none!important}
}
@media (max-width:700px){
  .e-knobs .e-kn-r{grid-template-columns:minmax(0,1fr) 34px minmax(70px,1.2fr) 34px minmax(0,.9fr);column-gap:6px}
}

.e-lineage .e-ln-wrap{overflow-x:auto;overflow-y:hidden}
.e-lineage .e-ln-wrap:focus-visible{box-shadow:var(--focus-ring)}
.e-bump .e-bp-leg{display:flex;flex-wrap:wrap;gap:4px 14px;margin:0 0 4px}
.e-bump .e-km-lg{display:inline-flex;align-items:center;gap:6px}
.e-bump .e-km-lg i{display:inline-block;width:18px;height:0;border-top:2px solid}
@media (max-width:700px){
  .e-knobs .e-kn-r{grid-template-columns:34px minmax(60px,1fr) 34px max-content;row-gap:0}
  .e-knobs .e-kn-n{grid-column:1/-1;padding-bottom:0;-webkit-line-clamp:3}
}
