/* =====================================================================
   PULSE + CHURN KIT EXTENSION — styles for the shell-ext.js primitives.
   Kit tokens only. Marks single-hue in the action role; structure 1 px at
   ≤ 25 % ink; two text styles per field (name 13 px secondary, figure 13 px
   tabular 500 ink); nothing below 12 px; transitions 120 ms at most.
   ===================================================================== */

/* ---------- shared ---------- */
.sx-chart{min-width:0;width:100%}
.sx-svg{display:block;width:100%;height:auto;overflow:visible;font-family:var(--font)}
.sx-svg text{font-size:var(--fs-small);fill:var(--color-text-secondary);font-variant-numeric:tabular-nums}
.sx-svg text .fig,.sx-svg .fig{fill:var(--color-text);font-weight:500}
.sx-svg .nm{fill:var(--color-text-secondary)}
.sx-svg text.inside{paint-order:stroke;stroke:var(--color-surface);stroke-width:3px;stroke-linejoin:round}
.sx-svg .tick{font-size:var(--fs-micro);fill:var(--color-text-muted)}
.sx-svg .tick.ax{fill:var(--color-text-secondary)}
.sx-svg .mk{font-size:var(--fs-micro);fill:var(--color-text-secondary)}
.sx-svg .sx-axis{stroke:var(--color-rule);stroke-width:1;shape-rendering:crispEdges}
.sx-svg .sx-sep{stroke:var(--color-rule-soft);stroke-width:1;shape-rendering:crispEdges}
.sx-svg .sx-leader{stroke:var(--color-rule-hover);stroke-width:1}
.sx-svg .sx-hit{fill:transparent;cursor:crosshair}
.sx-svg:focus{outline:none}
.sx-svg:focus-visible{outline:2px solid var(--color-focus);outline-offset:4px;border-radius:2px}
.sx-svg [tabindex]:focus{outline:none}
.sx-scroll{overflow-x:auto;overflow-y:hidden;max-width:100%;padding:2px 0}

/* one-line statement above a chart */
.sx-title{font-size:var(--fs-small);line-height:1.45;color:var(--color-text-secondary);margin:0 0 var(--space-2)}
.sx-mnote{font-size:var(--fs-micro);line-height:1.45;color:var(--color-text-muted);margin:0 0 var(--space-2)}

/* the one readout slot under every chart */
.sx-readout{min-height:20px;margin-top:var(--space-2);font-size:var(--fs-small);line-height:20px;color:var(--color-text-secondary);font-variant-numeric:tabular-nums;display:flex;flex-wrap:wrap;align-items:baseline;gap:0 6px}
.sx-readout.idle{color:var(--color-text-muted)}
.sx-readout b{font-weight:600;color:var(--color-text)}
.sx-readout .fig{font-weight:500;color:var(--color-text);white-space:nowrap}
.sx-readout .sep{color:var(--color-text-muted)}
.sx-readout .pin{margin-left:auto;font-size:var(--fs-micro);color:var(--color-text-muted)}

/* ---------- 1. consequence sentence ---------- */
.sx-sentence{max-width:72ch}
.sx-sentence-lead{font-size:19px;line-height:1.4;font-weight:400;color:var(--color-text);letter-spacing:-.1px}
.sx-sentence-lead strong{font-weight:600}
.sx-sentence-lead .num{font-weight:400}
.sx-sentence-sub{font-size:var(--fs-small);color:var(--color-text-muted);margin-top:var(--space-2)}
.sx-sentence-sub .num{color:var(--color-text-secondary)}
@media (max-width:700px){.sx-sentence-lead{font-size:18px}}

/* ---------- 2. sankey ---------- */
.sx-sankey .sx-sk-node{fill:var(--color-action)}
.sx-sankey .sx-sk-link{fill:var(--color-action);fill-opacity:.2;cursor:pointer;transition:fill-opacity .12s}
.sx-sankey .has-on .sx-sk-link{fill-opacity:.08}
.sx-sankey .sx-sk-link.on,.sx-sankey .has-on .sx-sk-link.on{fill-opacity:.55}
.sx-sankey .sx-sk-link:focus-visible{stroke:var(--color-focus);stroke-width:1.5;fill-opacity:.55}

/* ---------- 3. heatmap ---------- */
.sx-heat-wrap{container-type:inline-size}
.sx-heat{display:grid;gap:2px;align-items:stretch}
.sx-heat-row{display:contents}
.sx-heat-corner{display:block;font-size:var(--fs-micro);color:var(--color-text-muted);line-height:16px;align-self:end;white-space:nowrap}
.sx-heat-xl{font-size:var(--fs-micro);color:var(--color-text-muted);line-height:16px;text-align:right}
.sx-heat-col{font-size:var(--fs-micro);color:var(--color-text-muted);font-variant-numeric:tabular-nums;white-space:nowrap;overflow:visible;line-height:16px;padding-bottom:2px}
.sx-heat-rh{font-size:var(--fs-small);color:var(--color-text-secondary);padding-right:var(--space-2);line-height:22px;white-space:nowrap}
.sx-heat-cell{position:relative;height:22px;border-radius:2px;cursor:default;transition:box-shadow .12s}
.sx-heat-cell.none{background:var(--color-surface-subtle)}
.sx-heat-cell.on{box-shadow:inset 0 0 0 2px var(--color-action-strong)}
.sx-heat-cell:focus-visible{outline:2px solid var(--color-focus);outline-offset:1px;z-index:3}
/* extremes: ringed cell; value inside the cell when wide, otherwise a foot line under the column */
.sx-heat-cell.is-ext{box-shadow:inset 0 0 0 1.5px currentColor}
.sx-heat-cell.is-ext.on{box-shadow:inset 0 0 0 2px var(--color-action-strong)}
.sx-ext{display:none;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:var(--fs-micro);line-height:16px;font-weight:500;font-variant-numeric:tabular-nums;white-space:nowrap;color:inherit;pointer-events:none}
.sx-heat-foot{font-size:var(--fs-micro);line-height:16px;color:var(--color-text-muted);white-space:nowrap;padding-top:4px;justify-self:start;font-variant-numeric:tabular-nums;min-width:0}
.sx-heat-foot.r{justify-self:end;text-align:right}
.sx-heat-foot b{font-weight:500;color:var(--color-text)}
@container (min-width:820px){.sx-ext{display:block}.sx-heat-foot{display:none}.sx-heat-cell.is-ext{box-shadow:none}}
@container (max-width:520px){.sx-heat-col.skip-narrow{visibility:hidden}.sx-heat-rh{padding-right:var(--space-1)}}

/* ---------- 4. retention triangle ---------- */
.sx-tri-wrap{overflow-x:auto;overflow-y:hidden;padding:2px 0}
.sx-tri{border-collapse:separate;border-spacing:2px;font-size:var(--fs-small);font-variant-numeric:tabular-nums;margin:0 -2px}
.sx-tri th{font-weight:400;font-size:var(--fs-micro);color:var(--color-text-muted);text-align:center;padding:0 4px 4px;white-space:nowrap}
.sx-tri th.l{text-align:left;padding-left:0}
.sx-tri th.r{text-align:right;padding-right:0}
.sx-tri tbody th{font-size:var(--fs-small);color:var(--color-text-secondary);padding:0 var(--space-3) 0 0}
.sx-tri td{min-width:44px;height:28px;padding:0 6px;text-align:center;border-radius:3px;font-weight:500;white-space:nowrap}
.sx-tri td.empty{background:none}
.sx-tri td.floor{background:var(--color-surface-subtle);color:var(--color-text-muted);font-weight:400;cursor:help}
.sx-tri td.foot{background:none;text-align:right;color:var(--color-text-muted);font-weight:400;padding:0 0 0 var(--space-3)}
.sx-tri-wrap{container-type:inline-size}
.sx-tri.selectable tbody tr{cursor:pointer}
.sx-tri.selectable tbody tr:hover th.l{color:var(--color-text)}
.sx-tri.selectable tbody tr:focus-visible{outline:2px solid var(--color-focus);outline-offset:1px}
.sx-tri tbody tr[aria-selected=true] th.l,.sx-tri tbody tr[aria-selected=true] td.foot{background:var(--color-selected);color:var(--color-text);font-weight:600}
.sx-tri tbody tr[aria-selected=true] th.l{box-shadow:inset 3px 0 0 var(--color-action);padding-left:var(--space-2);border-radius:3px 0 0 3px}
.sx-tri tbody tr[aria-selected=true] td.foot{border-radius:0 3px 3px 0;padding-right:var(--space-2)}
@container (max-width:420px){.sx-tri td{min-width:36px;padding:0 3px}.sx-tri tbody th{padding-right:var(--space-2)}.sx-tri td.foot{padding-left:var(--space-2)}}

/* ---------- 5. journey strip (signature) ---------- */
.sx-journey{container-type:inline-size}
.sx-jn-lanes{display:grid}
.sx-jn-lane{display:grid;grid-template-columns:112px minmax(0,1fr);align-items:stretch;min-height:32px;border-top:1px solid var(--color-rule-soft)}
.sx-jn-lane.sx-jn-head{min-height:16px;border-top:0}
.sx-jn-lane.sx-jn-axis{min-height:20px}
.sx-jn-lane.sx-jn-head+.sx-jn-lane{border-top:0}
.sx-jn-name{font-size:var(--fs-small);color:var(--color-text-secondary);align-self:center;padding-right:var(--space-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sx-jn-track{position:relative;min-width:0}
.sx-jn-span{position:absolute;top:6px;height:20px;border-radius:3px;background:var(--color-band);color:var(--color-text-secondary);font-size:var(--fs-micro);line-height:20px;padding:0 6px;overflow:hidden;white-space:nowrap;cursor:default;transition:background-color .12s}
.sx-jn-span.now{background:var(--color-action);color:var(--color-text-inverse);font-weight:500}
.sx-jn-span .w{display:inline-block}
.sx-jn-span.nofit .w{visibility:hidden}
.sx-jn-span.now.held{background:var(--color-action-soft);color:var(--color-text)}
.sx-jn-span:hover,.sx-jn-span.on{background:var(--color-action-soft);color:var(--color-text)}
.sx-jn-span.now:hover,.sx-jn-span.now.on{background:var(--color-action-strong);color:var(--color-text-inverse)}
.sx-jn-span:focus-visible{outline:2px solid var(--color-focus);outline-offset:1px;z-index:2}
.sx-jn-today{position:absolute;top:0;bottom:0;width:0;border-left:1px solid var(--color-text-muted);opacity:.5;pointer-events:none;z-index:1}
.sx-jn-head .sx-jn-track{height:16px}
.sx-jn-today-word{position:absolute;bottom:0;transform:translateX(-50%);font-size:var(--fs-micro);line-height:16px;color:var(--color-text-muted);white-space:nowrap}
.sx-jn-today-word.end{transform:translateX(-100%)}
.sx-jn-axis .sx-jn-track{font-size:var(--fs-micro);color:var(--color-text-muted);line-height:20px;display:flex;justify-content:space-between;font-variant-numeric:tabular-nums}
.sx-jn-stable{font-size:var(--fs-small);color:var(--color-text-muted);margin-top:var(--space-2);line-height:1.45}
.sx-jn-stable .k{color:var(--color-text-secondary)}
@container (max-width:480px){.sx-jn-lane{grid-template-columns:80px minmax(0,1fr)}}

/* ---------- 6. bonus fit table ---------- */
.sx-fit{border-collapse:separate;border-spacing:0;width:100%;font-size:var(--fs-small);font-variant-numeric:tabular-nums}
.sx-fit th,.sx-fit td{padding:var(--space-2) 6px;text-align:left;vertical-align:middle;border-bottom:1px solid var(--color-rule-soft)}
.sx-fit thead th{font-weight:400;font-size:var(--fs-micro);color:var(--color-text-muted);border-bottom:1px solid var(--color-rule);padding-top:0;line-height:1.3;min-width:0;vertical-align:bottom}
.sx-fit th:first-child{padding-left:0}
.sx-fit td:last-child,.sx-fit th:last-child{padding-right:0}
.sx-fit tbody tr:last-child>*{border-bottom:0}
.sx-fit tbody th{font-weight:400;min-width:0;max-width:14ch}
.sx-fit tbody th .nm{display:block;color:var(--color-text);font-size:var(--fs-small);line-height:1.3}
.sx-fit tbody th .wd{display:block;font-size:var(--fs-micro);color:var(--color-text-muted);line-height:1.3}
.sx-fit td{cursor:default;transition:background-color .12s}
.sx-fit td .fig{display:block;font-weight:500;color:var(--color-text);white-space:nowrap;line-height:1.3}
.sx-fit td .bar{display:block;height:4px;margin-top:4px;border-radius:2px;background:var(--color-surface-sunken);overflow:hidden;max-width:72px}
.sx-fit td .bar i{display:block;height:100%;border-radius:2px;background:var(--color-action)}
.sx-fit td .bar.neg i{background:var(--color-action-soft)}
.sx-fit td.none{color:var(--color-text-muted)}
.sx-fit td.on{background:var(--color-surface-hover);box-shadow:inset 0 -2px 0 var(--color-action)}
.sx-fit td:focus-visible{outline:2px solid var(--color-focus);outline-offset:-2px}
.sx-fit tr.chosen>*{background:var(--color-selected)}
.sx-fit tr.chosen th{position:relative;padding-left:var(--space-3)}
.sx-fit tr.chosen th::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--color-action)}
.sx-fit tr.chosen th .nm{font-weight:600}
.sx-fit tr.chosen th .wd{color:var(--color-action-strong);font-weight:600}
.sx-fit tr.suppressed th .nm,.sx-fit tr.suppressed td .fig{color:var(--color-text-muted);font-weight:400}
.sx-fit tr.suppressed td .bar i{background:var(--color-track)}

/* ---------- 7. survival / retention curves ---------- */
.sx-km .sx-km-line{fill:none;stroke:var(--color-action);stroke-width:2;stroke-linejoin:round;stroke-linecap:round}
.sx-km .sx-km-line.dashed{stroke-dasharray:5 4;stroke-linecap:butt}
.sx-km .sx-km-band{fill:var(--color-band);opacity:.8}
.sx-km .sx-cursor-rule,.sx-dist .sx-cursor-rule{stroke:var(--color-rule-hover);stroke-width:1;shape-rendering:crispEdges}
.sx-km .sx-cursor-dot{fill:var(--color-surface);stroke:var(--color-action-strong);stroke-width:2}

/* ---------- 8. distribution strip ---------- */
.sx-dist .sx-bar{fill:var(--color-action);transition:opacity .12s}
.sx-dist .has-on .sx-bar{opacity:.45}
.sx-dist .has-on .sx-bar.on{opacity:1;fill:var(--color-action-strong)}
.sx-dist .sx-dist-ref{fill:none;stroke:var(--color-action-strong);stroke-width:1.5;stroke-linejoin:round}
.sx-dist .sx-mark-rule{stroke:var(--color-rule-hover);stroke-width:1;shape-rendering:crispEdges}

/* ---------- 9. player timeline ---------- */
.sx-tl-top{display:flex;justify-content:flex-end;align-items:center;gap:var(--space-3);margin-bottom:var(--space-2)}
.sx-tl-top.has-title{justify-content:space-between}
.sx-tl-top .sx-title{margin:0;min-width:0}
.sx-tl .sx-tl-bar{fill:var(--color-action);transition:fill .12s;shape-rendering:crispEdges}
.sx-tl .sx-tl-bar.on{fill:var(--color-action-strong)}
.sx-tl .sx-tl-mark{fill:var(--color-action);stroke:var(--color-action);stroke-width:1.5}
.sx-tl .sx-tl-mark.hollow{fill:var(--color-surface)}
.sx-tl .sx-tl-mark.on{stroke:var(--color-action-strong);stroke-width:2.5}
.sx-tl .cnt{font-size:var(--fs-micro);fill:var(--color-text-secondary);pointer-events:none}
.sx-tl .sx-tl-span rect{fill:var(--color-band);transition:fill .12s}
.sx-tl .sx-tl-span.on rect{fill:var(--color-action-soft)}
.sx-tl .sx-tl-span .in,.sx-tl .sx-tl-tick .in{font-size:var(--fs-micro);fill:var(--color-text-secondary)}
.sx-tl .sx-tl-tick line{stroke:var(--color-action);stroke-width:2}
.sx-tl .sx-tl-tick.on line{stroke:var(--color-action-strong);stroke-width:3}
.sx-svg .sx-focus-ring{fill:none;stroke:var(--color-focus);stroke-width:2;pointer-events:none}

/* ---------- 10. prior-weight ring ---------- */
.sx-ring{display:inline-block;vertical-align:-2px;flex:none}
.sx-ringw{display:inline-flex;align-items:center;gap:6px;font-size:var(--fs-small);color:var(--color-text-secondary);font-variant-numeric:tabular-nums;white-space:nowrap}
.sx-ring .trk{fill:none;stroke:var(--color-track);stroke-width:2}
.sx-ring .arc{fill:none;stroke:var(--color-action);stroke-width:2;stroke-linecap:butt}

/* ---------- 11. window countdown ---------- */
.sx-cd{display:inline-flex;align-items:center;gap:6px;vertical-align:middle}
.sx-cd .trk{display:block;position:relative;width:48px;height:6px;border-radius:3px;background:var(--color-surface-sunken);overflow:hidden;flex:none}
.sx-cd .trk i{position:absolute;right:0;top:0;bottom:0;background:var(--color-action);border-radius:3px}
.sx-cd.late .trk{background:none;box-shadow:inset 0 0 0 1px var(--color-rule)}
.sx-cd .word{font-size:var(--fs-small);line-height:1}

/* ---------- 11b. bounded measure (S.score's look, any domain) ---------- */
.sx-measure{display:grid;grid-template-columns:minmax(0,1fr) minmax(var(--sx-measure-v,72px),max-content);gap:var(--space-2);align-items:center;min-width:96px}
.sx-measure .trk{position:relative;height:8px;border-radius:4px;background:var(--color-surface-sunken);overflow:hidden}
.sx-measure .bnd{position:absolute;top:0;bottom:0;background:var(--color-band);border-radius:4px}
.sx-measure .fil{position:absolute;top:0;bottom:0;background:var(--color-action);border-radius:4px}
.sx-measure .fil.warn{background:var(--color-warn)}.sx-measure .fil.danger{background:var(--color-danger)}.sx-measure .fil.ok{background:var(--color-ok)}
.sx-measure .zero{position:absolute;top:0;bottom:0;width:1px;margin-left:-.5px;background:var(--color-text-muted)}
.sx-measure .v{font-variant-numeric:tabular-nums;font-weight:700;text-align:left;font-size:var(--fs-body);white-space:nowrap;display:inline-flex;gap:6px;align-items:baseline}
.sx-measure .v .word{font-size:var(--fs-small)}

/* ---------- 12. paired bar ---------- */
.sx-pair{display:grid;grid-template-columns:max-content minmax(0,1fr);gap:var(--space-2) var(--space-3);font-size:var(--fs-small);align-items:center}
.sx-pair .row{display:contents}
.sx-pair .lb{color:var(--color-text-secondary);white-space:nowrap}
.sx-pair .bars{display:grid;gap:3px;min-width:0}
.sx-pair .ln{display:flex;align-items:center;gap:6px;min-width:0;line-height:14px}
.sx-pair .ln i{display:block;height:6px;border-radius:3px;flex:none;min-width:2px}
.sx-pair .ln.a i{background:var(--color-action)}
.sx-pair .ln.b i{background:var(--color-action-soft)}
.sx-pair .v{font-variant-numeric:tabular-nums;white-space:nowrap;font-size:var(--fs-micro);color:var(--color-text);font-weight:500}
.sx-pair .ln.b .v{color:var(--color-text-muted);font-weight:400}
.sx-pair .v .nm{color:var(--color-text-muted);font-weight:400}

/* ---------- 13. calibration ---------- */
.sx-calib .sx-diag{stroke:var(--color-rule-hover);stroke-width:1}
.sx-calib .sx-dot{fill:var(--color-action);fill-opacity:.85;cursor:pointer;transition:fill-opacity .12s}
.sx-calib .has-on .sx-dot{fill-opacity:.35}
.sx-calib .has-on .sx-dot.on{fill-opacity:1;stroke:var(--color-action-strong);stroke-width:2}

/* ---------- 14. uplift matrix ---------- */
.sx-mx{border-collapse:separate;border-spacing:2px;font-size:var(--fs-small);font-variant-numeric:tabular-nums;margin:0 -2px}
.sx-mx thead th{font-weight:400;font-size:var(--fs-micro);color:var(--color-text-muted);text-align:left;padding:0 var(--space-2) 4px;white-space:nowrap;vertical-align:bottom}
.sx-mx tbody th{font-weight:400;color:var(--color-text-secondary);text-align:left;padding:0 var(--space-3) 0 0;white-space:nowrap}
.sx-mx td{min-width:76px;padding:6px var(--space-2);border-radius:3px;background:var(--color-surface-subtle);cursor:default;transition:box-shadow .12s;vertical-align:top}
.sx-mx td .v{display:block;font-weight:500;color:var(--color-text);line-height:1.3;white-space:nowrap}
.sx-mx td .n{display:block;font-size:var(--fs-micro);color:var(--color-text-muted);line-height:1.3;white-space:nowrap}
.sx-mx td.insuf{background:none;box-shadow:inset 0 0 0 1px var(--color-rule-soft)}
.sx-mx td.insuf .v{color:var(--color-text-muted);font-weight:400}
.sx-mx td.none{background:none;color:var(--color-text-muted)}
.sx-mx td.on{box-shadow:inset 0 0 0 2px var(--color-action-strong)}
.sx-mx td:focus-visible{outline:2px solid var(--color-focus);outline-offset:1px}

/* =====================================================================
   R2 — BI controls (basis chips, see-all dialog, search, period, series,
   schema diagram, formula card). Kit tokens only.
   ===================================================================== */
.sx-search-pop[hidden],.sx-series-pop[hidden],.sx-search-clear[hidden],.sx-formula-effect[hidden]{display:none!important}

/* basis chips */
.sx-basis{display:flex;flex-direction:column;gap:var(--space-2);min-width:0}
.sx-basis-chips{display:flex;flex-wrap:wrap;gap:var(--space-2)}
.sx-chip{display:inline-flex;align-items:baseline;gap:6px;min-height:30px;padding:4px 10px;border:1px solid var(--color-rule);border-radius:var(--radius-pill);background:var(--color-surface);font-size:var(--fs-small);color:var(--color-text-secondary);cursor:pointer;line-height:1.3;transition:background-color .12s,border-color .12s}
.sx-chip .n{font-size:var(--fs-micro);color:var(--color-text-muted);font-variant-numeric:tabular-nums;white-space:nowrap}
.sx-chip:hover{border-color:var(--color-rule-hover)}
.sx-chip[aria-pressed=true]{background:var(--color-selected);border-color:var(--color-action);color:var(--color-text)}
.sx-chip[aria-pressed=true] .l{font-weight:600}
.sx-chip.short{background:var(--color-danger-bg);border-color:var(--color-danger-rule);color:var(--ink-danger);cursor:not-allowed}
.sx-chip.short .n{color:var(--ink-danger);font-weight:600}
.sx-basis-sub{font-size:var(--fs-small);color:var(--color-text-secondary);margin:0}
.sx-basis-sub .k,.sx-basis-sub .c{color:var(--color-text-muted)}

/* see-all dialog */
.sx-seeall .dialog-panel{width:min(1100px,calc(100vw - 32px))}
.sx-seeall .dialog-head .cnt{font-weight:400;color:var(--color-text-muted)}
.sx-seeall-body{max-height:calc(100vh - 220px);overflow:auto;margin-top:var(--space-4)}
.sx-seeall-body .table-wrap{margin:0;padding:0;overflow:visible}
.sx-seeall-body .table thead th{position:sticky;top:0;background:var(--color-surface);z-index:1}

/* search */
.sx-search{position:relative;max-width:640px;width:100%}
.sx-search-box{position:relative}
.sx-search-box .input{padding-right:34px}
.sx-search-box .input::-webkit-search-cancel-button{-webkit-appearance:none}
.sx-search-clear{position:absolute;right:4px;top:50%;transform:translateY(-50%);width:28px;height:28px;border:0;background:none;border-radius:var(--radius-s);color:var(--color-text-muted);font-size:18px;line-height:1;cursor:pointer}
.sx-search-clear:hover{background:var(--color-canvas);color:var(--color-text)}
.sx-search-pop{position:absolute;left:0;right:0;top:calc(100% + 4px);z-index:40;background:var(--color-surface);border:1px solid var(--color-rule);border-radius:var(--radius-m);box-shadow:var(--shadow-pop);padding:4px;max-height:380px;overflow:auto}
.sx-search-head{font-size:var(--fs-micro);color:var(--color-text-muted);padding:6px 10px 4px}
.sx-search-list{list-style:none;margin:0;padding:0}
.sx-search-list li{padding:8px 10px;border-radius:var(--radius-s);cursor:pointer;font-size:var(--fs-small)}
.sx-search-list li[aria-selected=true]{background:var(--color-selected)}

/* period */
.sx-period{display:inline-flex;flex-wrap:wrap;align-items:center;gap:var(--space-2)}
.sx-period-dates{display:inline-flex;align-items:center;gap:6px}
.sx-period-dates .to{font-size:var(--fs-small);color:var(--color-text-muted)}
.sx-period .input{width:auto;min-height:var(--control-h-sm);padding:2px 8px;font-size:var(--fs-small);font-variant-numeric:tabular-nums}
.sx-period .input[aria-invalid=true]{border-color:var(--color-danger);box-shadow:inset 0 0 0 1px var(--color-danger)}

/* series chooser */
.sx-series{position:relative;display:inline-block}
.sx-series-btn::after{content:"";margin-left:6px;border-left:4px solid transparent;border-right:4px solid transparent;border-top:5px solid currentColor}
.sx-series-pop{position:absolute;z-index:40;top:calc(100% + 4px);left:0;width:min(300px,calc(100vw - 32px));box-shadow:var(--shadow-pop);padding:var(--space-3) var(--space-4)}
.sx-series-head{display:flex;align-items:center;gap:var(--space-3);font-size:var(--fs-micro);margin-bottom:var(--space-2)}
.sx-series-head .cap{color:var(--color-text-muted);margin-right:auto}
.sx-link{border:0;background:none;padding:2px 0;font-size:var(--fs-small);color:var(--color-link);cursor:pointer;text-decoration:underline;text-underline-offset:2px}
.sx-series-list{display:grid;gap:2px;max-height:300px;overflow:auto}
.sx-series-list .check{font-size:var(--fs-small);display:grid;grid-template-columns:18px minmax(0,1fr) auto;gap:var(--space-2)}
.sx-series-list .check .n{font-size:var(--fs-micro);color:var(--color-text-muted);font-variant-numeric:tabular-nums;white-space:nowrap}
.sx-series-list .check input:disabled+.l{color:var(--color-text-muted)}

/* schema diagram */
.sx-schema-stage{position:relative;container-type:inline-size}
@container (max-width:339px){.sx-schema-grid{padding-right:64px}}
.sx-schema-links{position:absolute;left:0;top:0;pointer-events:none;overflow:visible}
.sx-schema-keys{z-index:2}
.sx-schema-grid{position:relative;display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:var(--space-5) 40px;align-items:start}
.sx-schema-col{display:flex;flex-direction:column;gap:var(--space-2);min-width:0}
.sx-schema-group{font-size:var(--fs-micro);font-weight:400;color:var(--color-text-muted);margin:0 0 2px}
.sx-schema-node{position:relative;z-index:1;display:flex;flex-direction:column;gap:2px;padding:7px 10px 8px;background:var(--color-surface);border:1px solid var(--color-rule);border-radius:var(--radius-s);cursor:pointer;transition:opacity .12s,border-color .12s;min-width:0}
.sx-schema-node .nm{font-size:var(--fs-small);font-weight:600;color:var(--color-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sx-schema-node .m{font-size:var(--fs-micro);color:var(--color-text-muted)}
.sx-schema-node:hover{border-color:var(--color-rule-hover)}
.sx-schema-node[aria-pressed=true]{background:var(--color-selected);border-color:var(--color-action);box-shadow:inset 3px 0 0 var(--color-action)}
.sx-schema-node.dim{opacity:.35}
.sx-schema-fields{display:none;list-style:none;margin:6px 0 0;padding:6px 0 0;border-top:1px solid var(--color-rule-soft);font-size:var(--fs-micro)}
.sx-schema-node[aria-pressed=true] .sx-schema-fields{display:grid;gap:1px}
.sx-schema-fields li{display:flex;justify-content:space-between;gap:var(--space-2)}
.sx-schema-fields .f{color:var(--color-text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sx-schema-fields .ty{color:var(--color-text-muted);white-space:nowrap}
.sx-schema-link .vis{fill:none;stroke:var(--color-text);stroke-opacity:.25;stroke-width:1;transition:stroke-opacity .12s}
.sx-schema-link .hit{fill:none;stroke:transparent;stroke-width:10;pointer-events:stroke;cursor:help}
.sx-schema-link .key{font-size:var(--fs-micro);fill:var(--color-text-secondary);paint-order:stroke;stroke:var(--color-surface);stroke-width:4px;stroke-linejoin:round;visibility:hidden}
.sx-schema-link.hover .key,.sx-schema-link.peek .key,.sx-schema-link.on .key{visibility:visible}
.sx-schema-link.hover .vis,.sx-schema-link.peek .vis{stroke-opacity:.6}
.sx-schema-link.on .vis{stroke:var(--color-action);stroke-opacity:1;stroke-width:1.5}
.sx-schema-link.on .key{fill:var(--color-action-strong);font-weight:600}
.sx-schema-link.dim .vis{stroke-opacity:.1}

/* formula card */
.sx-formula{display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-4) 0;border-top:1px solid var(--color-rule-soft)}
.sx-formula:first-child{border-top:0;padding-top:0}
.sx-formula-head{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap}
.sx-formula-head h3{font-size:var(--fs-reading);font-weight:600;margin:0}
.sx-formula-head .btn{margin-left:auto}
.sx-formula-text{font-size:var(--fs-reading);line-height:1.55;color:var(--color-text);max-width:72ch;margin:0}
.sx-formula-params{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:var(--space-4) var(--space-5)}
.sx-param{display:flex;flex-direction:column;gap:4px;min-width:0}
.sx-param>label{font-size:var(--fs-small);color:var(--color-text-secondary)}
.sx-param .ctl{display:flex;align-items:center;gap:6px;min-width:0}
.sx-param .input{width:88px;min-height:var(--control-h-sm);padding:2px 8px;font-size:var(--fs-small);font-variant-numeric:tabular-nums}
.sx-param .u{font-size:var(--fs-small);color:var(--color-text-muted)}
.sx-param .def{font-size:var(--fs-micro);color:var(--color-text-muted);margin-left:auto;white-space:nowrap}
.sx-param.changed .input{border-color:var(--color-action);box-shadow:inset 0 0 0 1px var(--color-action)}
.sx-param.changed>label{color:var(--color-text);font-weight:600}
.sx-range{width:100%;margin:2px 0 0;accent-color:var(--color-action);height:18px;cursor:pointer}
.sx-formula-effect{font-size:var(--fs-small);color:var(--color-text-secondary);margin:0;font-variant-numeric:tabular-nums}
.sx-formula-effect b{font-weight:600;color:var(--color-text)}
.sx-formula-effect b.moved{color:var(--color-action-strong)}
