
:root{
  --bg:#0c1014; --bg2:#0a0e12; --panel:#12181e; --panel2:#182029; --line:#212c35; --line2:#2c3a45;
  --text:#dbe1e7; --dim:#8b98a5; --faint:#5c6873;
  --win:#3fbf7f; --loss:#e2574f; --neutral:#6e7681; --amber:#d9a441; --cyan:#5ab0d6;
  /* `[S35]` THE TRANSFORM HUE (D184/AD-116). A SIXTH semantic colour, added
     because the five above were all spoken for and reusing one would have
     been a worse collision than the one it fixes: --win/--loss carry the
     engine's outcome semantics product-wide, and --amber is REFUSAL (the
     standoff/MODEL warning, and `td.viewrefuse` two rules below is already
     amber inside this very table). Violet is used nowhere else, so it
     arrives without meaning and takes only this one. */
  --viewed:#b48ce8;
  --mono:'IBM Plex Mono',ui-monospace,'SF Mono',Menlo,Consolas,monospace;
  --sans:'IBM Plex Sans',-apple-system,'Segoe UI',sans-serif;
}
*{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%}
/* Add data-dev-only to any individual box, button, link, message or other
   element that should remain visible during development but disappear from
   the public presentation. Unmarked content is public by default. */
html[data-tacticdex-mode="public"] [data-dev-only],
html[data-tacticdex-mode="development"][data-tacticdex-presentation="public"] [data-dev-only]{display:none!important}
/* Shared context badges (RESULTS, MODEL, TABLE, PERSISTENT, etc.) are a
   reviewed development aid, not public-facing content. The development
   bootstrap also attaches the stable `global-context-tags` flag to every
   current or dynamically rendered `.tag`; the class selector is retained here
   so public presentation never depends on JavaScript mutation timing. */
html[data-tacticdex-mode="public"] .tag,
html[data-tacticdex-mode="development"][data-tacticdex-presentation="public"] .tag{display:none!important}
/* Manifest-generated development page index. Public builds omit this markup
   entirely; the CSS lives here only so every development page shares one
   review surface without hand-maintained navigation copies. */
.tdx-dev-review-hub{--review-edge:10px;position:fixed;z-index:100000;right:var(--review-edge);top:var(--review-edge);width:min(250px,calc(100vw - 20px));
  color:#dff6ff;background:rgba(3,10,18,.97);border:1px solid #4fc3f7;box-shadow:0 12px 34px rgba(0,0,0,.62);
  font-family:var(--mono);font-size:10px;line-height:1.25}
.tdx-dev-review-hub[data-dock$="-left"]{left:var(--review-edge);right:auto}
.tdx-dev-review-hub[data-dock$="-right"]{left:auto;right:var(--review-edge)}
.tdx-dev-review-hub[data-dock^="top-"]{top:var(--review-edge);bottom:auto}
.tdx-dev-review-hub[data-dock^="bottom-"]{top:auto;bottom:var(--review-edge)}
.tdx-dev-review-hub summary{display:flex;align-items:center;min-height:44px;list-style:none;padding:8px 50px 8px 10px;color:#9fe5ff;background:rgba(79,195,247,.12);
  cursor:pointer;font-weight:700;font-size:8px;letter-spacing:.02em}
.tdx-dev-review-hub summary::-webkit-details-marker{display:none}
.tdx-dev-review-hub summary::before{content:'▸';display:inline-block;margin-right:7px}
.tdx-dev-review-hub details[open] summary::before{content:'▾'}
.tdx-dev-review-dock{position:absolute;z-index:2;right:0;top:0;display:grid;grid-template-columns:repeat(2,22px);grid-template-rows:repeat(2,22px);gap:0}
.tdx-dev-review-dock button{display:grid;width:22px;height:22px;place-items:center;padding:0;border:1px solid rgba(127,225,255,.32);
  background:#071725;color:#78a9c2;font:800 16px/1 var(--mono);cursor:pointer}
.tdx-dev-review-dock button:focus-visible{outline:2px solid #fff;outline-offset:-3px}
.tdx-dev-review-dock button:hover,.tdx-dev-review-dock button[aria-pressed="true"]{border-color:#7fe1ff;background:#12334a;color:#fff}
.tdx-dev-review-actions{display:grid;grid-template-columns:1fr 1fr;gap:5px;padding:6px 5px 0}
.tdx-dev-review-actions button{min-width:0;border:1px solid rgba(79,195,247,.38);background:#071725;color:#a9dff4;
  padding:6px 5px;font:700 7px/1.2 var(--mono);letter-spacing:.04em;cursor:pointer}
.tdx-dev-review-actions button:hover,.tdx-dev-review-actions button[aria-pressed="true"]{border-color:#7fe1ff;background:#12334a;color:#fff}
.tdx-dev-page-state{margin:5px;padding:5px 7px;border-left:2px solid #ffcf6f;background:rgba(255,207,111,.07);
  color:#d7b86f;font-size:7.5px;font-weight:700;letter-spacing:.06em}
.tdx-dev-review-hub nav{display:grid;max-height:min(62vh,430px,max(60px,calc(100dvh - 160px)));overflow:auto;padding:5px}
.tdx-dev-page{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:2px 8px;padding:6px 7px;
  border:1px solid transparent;color:#b8ceda;text-decoration:none}
.tdx-dev-page:hover,.tdx-dev-page.active{border-color:rgba(79,195,247,.45);background:rgba(79,195,247,.1);color:#fff}
.tdx-dev-page span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:700}
.tdx-dev-page code{grid-column:1;color:#7897aa;font:inherit;font-size:8px}
.tdx-dev-page em{grid-column:2;grid-row:1/3;align-self:center;color:#6ed69a;font-size:7px;font-style:normal;font-weight:800}
.tdx-dev-page em:first-letter{letter-spacing:0}
.tdx-dev-page em.dev{color:#ffcf6f}
/* Audit decoration is development-only behavior. Stable IDs remain in source,
   but public presentation gets neither the outline nor the badges. */
html[data-tacticdex-mode="development"][data-tacticdex-presentation="development"][data-visibility-audit="on"] [data-visibility-id]:not(.tdx-dev-review-hub){
  outline:2px dashed rgba(255,207,111,.9);outline-offset:2px}
html[data-tacticdex-mode="development"][data-tacticdex-presentation="development"][data-visibility-audit="on"] [data-visibility-id]:not(.tdx-dev-review-hub):not(.tdx-dev-review-hub *){
  position:relative}
html[data-tacticdex-mode="development"][data-tacticdex-presentation="development"][data-visibility-audit="on"] [data-visibility-id]:not(.tdx-dev-review-hub):not(.tdx-dev-review-hub *)::after{
  content:attr(data-visibility-id) ' · ' attr(data-visibility-state);position:absolute;z-index:10001;top:3px;right:3px;
  max-width:calc(100% - 6px);padding:3px 5px;background:#2b1f08;color:#ffe3a2;border:1px solid #ffcf6f;
  font:700 7px/1.2 var(--mono);letter-spacing:.03em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;pointer-events:none}
/* The repeated context-tag group is identified by its audit outline and
   native visibility tooltip; a full badge on every tiny tag would obscure the
   label being reviewed. */
html[data-tacticdex-mode="development"][data-tacticdex-presentation="development"][data-visibility-audit="on"] [data-visibility-id="global-context-tags"]::after{display:none}
html[data-tacticdex-mode="development"][data-tacticdex-presentation="development"][data-visibility-audit="on"] .tdx-dev-review-hub [data-visibility-id]{
  box-shadow:inset 0 0 0 1px rgba(255,207,111,.68)}
html[data-tacticdex-mode="development"][data-tacticdex-presentation="development"][data-visibility-audit="on"] .pchip[data-visibility-id]{display:inline-flex}
/* A public preview retains only its exit control, never audit labels or page flags. */
html[data-tacticdex-presentation="public"] .tdx-dev-review-hub summary,
html[data-tacticdex-presentation="public"] .tdx-dev-review-dock,
html[data-tacticdex-presentation="public"] .tdx-dev-review-hub nav,
html[data-tacticdex-presentation="public"] .tdx-dev-page-state,
html[data-tacticdex-presentation="public"] [data-visibility-id="dev-visibility-audit-control"]{display:none!important}
html[data-tacticdex-presentation="public"] .tdx-dev-review-actions{grid-template-columns:1fr;padding:5px}
body{
  background:var(--bg);color:var(--text);font-family:var(--sans);font-size:14px;line-height:1.5;
  background-image:
    radial-gradient(1200px 700px at 78% -8%,rgba(90,176,214,0.06),transparent 60%),
    repeating-linear-gradient(0deg,transparent,transparent 31px,rgba(110,150,190,0.028) 31px,rgba(110,150,190,0.028) 32px),
    repeating-linear-gradient(90deg,transparent,transparent 31px,rgba(110,150,190,0.028) 31px,rgba(110,150,190,0.028) 32px);
  background-attachment:fixed;
  padding:22px 20px 64px;
}
a{color:var(--cyan);text-decoration:none} a:hover{color:#7cc6e6}
.wrap{max-width:1460px;margin:0 auto}
.topbar{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:18px;margin-bottom:12px}
.brand h1{font-family:var(--mono);font-size:21px;letter-spacing:0.05em;font-weight:600}
.brand h1 .track{color:var(--cyan);font-weight:500}
.brand .sub{color:var(--dim);font-size:12.5px;margin-top:3px;max-width:640px}
.topstats{display:flex;gap:10px;flex-wrap:wrap}
.tstat{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:8px 13px;min-width:96px;cursor:help}
.tstat .tl{font-family:var(--mono);font-size:9px;letter-spacing:0.1em;color:var(--faint);text-transform:uppercase}
.tstat .tv{font-family:var(--mono);font-size:20px;font-weight:600;margin-top:2px}
.tstat .tv.small{font-size:12.5px;font-weight:500;color:var(--text)}
.tstat .vs{color:var(--faint)}
.layerbar{display:flex;flex-wrap:wrap;gap:8px;margin:4px 0 10px}
.chip{font-family:var(--mono);font-size:10px;letter-spacing:0.07em;padding:4px 10px;border-radius:4px;border:1px solid var(--line2);color:var(--dim);cursor:help;white-space:nowrap}
.chip b{font-weight:600}
.chip.perc b{color:var(--text)} .chip.anal b{color:var(--win)} .chip.model b{color:var(--amber)} .chip.presc b{color:var(--cyan)}
.pipebar{display:flex;flex-wrap:wrap;align-items:center;gap:7px;font-family:var(--mono);font-size:10px;margin:0 0 16px;cursor:help}
.pipebar .plab{color:var(--faint);letter-spacing:0.08em;text-transform:uppercase;font-size:9px;margin-right:2px}
.pipebar .pstep{border:1px solid var(--line);border-radius:5px;padding:3px 9px;color:var(--dim);background:var(--panel);white-space:nowrap}
.pipebar .pstep b{color:var(--cyan);font-weight:600;margin-right:3px}
.pipebar .parrow{color:var(--faint)}
.metahead{margin:0 0 14px}
.metahead>summary{list-style:none;display:inline-flex;align-items:center;gap:6px;font-family:var(--mono);font-size:9px;letter-spacing:0.1em;text-transform:uppercase;color:var(--faint);cursor:pointer;padding:2px 0;margin-bottom:8px}
.metahead>summary::-webkit-details-marker{display:none}
.metahead>summary:hover{color:var(--dim)}
.metahead>summary .mhcaret{font-size:10px;transition:transform .15s}
.metahead[open]>summary .mhcaret{transform:rotate(180deg)}
.metahead:not([open])>summary{margin-bottom:0}
.metahead .layerbar{margin-top:0}
.metahead .pipebar{margin-bottom:0}
.stepb{font-family:var(--mono);font-size:13px;font-weight:700;color:var(--cyan);border:1px solid var(--line2);border-radius:50%;width:23px;height:23px;display:inline-flex;align-items:center;justify-content:center;cursor:help;flex-shrink:0;background:rgba(90,176,214,0.10)}
.tag{font-family:var(--mono);font-size:9px;letter-spacing:0.09em;padding:2px 6px;border-radius:3px;vertical-align:1px;cursor:help}
.tag.anal{background:rgba(63,191,127,0.13);color:var(--win)}
.tag.model{background:rgba(217,164,65,0.13);color:var(--amber)}
.tag.presc{background:rgba(90,176,214,0.13);color:var(--cyan)}
.panel{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:16px 18px;margin-bottom:16px}
.panel h2{font-family:var(--mono);font-size:11.5px;letter-spacing:0.11em;text-transform:uppercase;color:var(--dim);margin-bottom:13px;display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.panel h2 .spacer{flex:1}
.kdetails{padding:0}
.kdetails summary{list-style:none;display:flex;align-items:center;gap:10px;padding:12px 18px;cursor:pointer}
.kdetails summary::-webkit-details-marker{display:none}
.kdetails summary:hover .ktitle{color:var(--text)}
.kdetails .ktitle{font-family:var(--mono);font-size:11.5px;letter-spacing:0.11em;text-transform:uppercase;color:var(--dim);white-space:nowrap}
.kdetails .ksum{flex:1;font-family:var(--mono);font-size:10.5px;color:var(--faint);text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.kdetails .kcaret{color:var(--faint);font-size:11px;transition:transform .15s}
.kdetails[open] .kcaret{transform:rotate(180deg)}
.kdetails>#kernel-body{padding:12px 18px 16px;border-top:1px solid var(--line)}
.herogrid{display:flex;align-items:stretch;gap:0;--net-w:60%}
#net-panel{flex:0 0 var(--net-w);min-width:320px}
#insp-panel{flex:1 1 0;min-width:300px}
@media(max-width:1080px){.herogrid{flex-direction:column}.hsplit{display:none}#net-panel,#insp-panel{flex:1 1 auto}}

/* graph */
.graphpanel{margin-bottom:16px}
.panelcap{font-family:var(--mono);font-size:10.5px;color:var(--faint);margin:-4px 0 12px;line-height:1.5}
.gcontrols{display:flex;flex-wrap:wrap;gap:8px 12px;align-items:center;margin-bottom:10px;padding-bottom:11px;border-bottom:1px solid var(--line)}
.gseg{display:flex;align-items:center;gap:4px}
.glab{font-family:var(--mono);font-size:9.5px;letter-spacing:0.07em;color:var(--faint);text-transform:uppercase;white-space:nowrap}
.gbtn{font-family:var(--mono);font-size:11px;padding:4px 11px;border-radius:5px;border:1px solid var(--line2);background:var(--panel2);color:var(--dim);cursor:pointer;transition:all .12s;white-space:nowrap}
.gbtn.sm{padding:3px 9px;font-size:10.5px}
.gbtn:hover{color:var(--text)}
.gbtn.on{border-color:var(--cyan);color:var(--cyan);background:rgba(90,176,214,0.08)}
.gseg.seg{border:1px solid var(--line2);border-radius:7px;overflow:hidden;background:var(--bg2);display:inline-flex;align-items:stretch;gap:0}
.gseg.seg .glab{padding:0 7px 0 10px;display:flex;align-items:center}
.gseg.seg .gbtn{border:none;border-radius:0;background:transparent;border-left:1px solid var(--line)}
.gseg.seg .gbtn.on{background:rgba(90,176,214,0.16);color:var(--cyan)}
.gseg.range{gap:7px}
.gseg.range input[type=range]{-webkit-appearance:none;appearance:none;width:118px;height:16px;background:transparent;cursor:pointer;margin:0;--p:10%}
.gseg.range input[type=range]::-webkit-slider-runnable-track{height:5px;border-radius:3px;background:linear-gradient(90deg,var(--cyan) var(--p),var(--line2) var(--p))}
.gseg.range input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:13px;height:13px;margin-top:-4px;border-radius:50%;background:var(--cyan);border:2px solid var(--bg2);box-shadow:0 0 0 1px var(--cyan)}
.gseg.range input[type=range]::-moz-range-track{height:5px;border-radius:3px;background:var(--line2)}
.gseg.range input[type=range]::-moz-range-progress{height:5px;border-radius:3px;background:var(--cyan)}
.gseg.range input[type=range]::-moz-range-thumb{width:13px;height:13px;border:2px solid var(--bg2);border-radius:50%;background:var(--cyan);box-shadow:0 0 0 1px var(--cyan)}
.gval{font-family:var(--mono);font-size:11px;color:var(--dim);min-width:30px;display:inline-flex;align-items:center}
.gtogs{display:flex;gap:8px;margin-left:auto}
.gtog{display:inline-flex;align-items:center;gap:7px;font-family:var(--mono);font-size:10.5px;padding:4px 11px;border-radius:999px;border:1px dashed var(--line2);background:transparent;color:var(--faint);cursor:pointer;white-space:nowrap}
.gtog .led{width:7px;height:7px;border-radius:50%;background:var(--line2);flex-shrink:0}
.gtog.on{color:var(--dim);border-style:solid}
.gtog.on .led{background:var(--cyan);box-shadow:0 0 7px rgba(90,176,214,0.8)}
.gtog:disabled{opacity:0.4;cursor:default}
#graph-canvas{min-height:340px;height:460px;overflow:auto;position:relative;resize:vertical}
#graph-canvas .empty{padding:60px 20px}
.axlab{fill:var(--faint);font-family:var(--mono);font-size:10px;letter-spacing:0.05em}
.fnlab{fill:var(--dim);font-family:var(--mono);font-size:9.5px}
.edlab{fill:var(--faint);font-family:var(--mono);font-size:9px;cursor:help}
.gedge{transition:opacity .12s}
.graphfoot{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-top:9px;flex-wrap:wrap}
.glegend{display:flex;flex-wrap:wrap;gap:4px 13px;font-family:var(--mono);font-size:10px;color:var(--dim)}
.glegend .lg{display:inline-flex;align-items:center;gap:5px}
.glegend .dot{width:9px;height:9px;border-radius:50%;display:inline-block}
.glegend .dot.big{width:14px;height:14px;background:var(--faint)}
.glegend .ln{width:15px;height:3px;border-radius:2px;display:inline-block}
#graph-count{font-family:var(--mono);font-size:10.5px;color:var(--faint);white-space:nowrap}

/* probability summary */
.bigvrow{display:flex;align-items:stretch;gap:12px;margin-bottom:14px}
.bigv{background:var(--panel2);border:1px solid var(--line);border-radius:8px;padding:11px 15px;cursor:help;flex-shrink:0}
.bigv .bl{font-family:var(--mono);font-size:9.5px;letter-spacing:0.09em;color:var(--faint);text-transform:uppercase}
.bigv .bv{font-family:var(--mono);font-size:32px;font-weight:600;line-height:1.1}
.split{flex:1;display:flex;flex-direction:column;justify-content:center;gap:5px}
.sp{display:flex;justify-content:space-between;align-items:center;font-family:var(--mono);font-size:12px;padding:3px 10px;border-radius:5px;background:var(--panel2);border:1px solid var(--line)}
.sp span{font-size:10px;letter-spacing:0.06em;text-transform:uppercase;color:var(--faint)}
.sp.win b{color:var(--win)} .sp.loss b{color:var(--loss)} .sp.draw b{color:var(--amber)}
.obar-title{font-family:var(--mono);font-size:9.5px;letter-spacing:0.07em;color:var(--faint);text-transform:uppercase;margin-bottom:6px;cursor:help}
.obar{display:flex;height:30px;border-radius:6px;overflow:hidden;border:1px solid var(--line);gap:1px;background:var(--line)}
.oseg{display:flex;align-items:center;justify-content:center;font-family:var(--mono);font-size:10px;color:#0a0e12;font-weight:600;min-width:2px;cursor:help;overflow:hidden;white-space:nowrap}
.olegend{display:grid;grid-template-columns:repeat(auto-fit,minmax(96px,1fr));gap:5px 10px;margin-top:10px}
.oleg{display:flex;align-items:center;gap:6px;font-family:var(--mono);font-size:10.5px;cursor:help}
.oleg .sw{width:9px;height:9px;border-radius:2px;flex-shrink:0}
.oleg .ll{color:var(--dim)}
.oleg .lp{margin-left:auto;color:var(--text);font-weight:500}
.verline{font-family:var(--mono);font-size:11px;color:var(--dim);margin-top:11px;cursor:help}
.verline .chk{color:var(--win);font-weight:600}
.verline .muted{color:var(--faint)}

/* kernel inputs */
.modebar{display:flex;gap:6px;margin-bottom:12px}
.modebtn{font-family:var(--mono);font-size:11px;padding:6px 13px;border-radius:6px;border:1px solid var(--line2);background:var(--panel2);color:var(--dim);cursor:pointer;white-space:nowrap}
.modebtn.on{border-color:var(--cyan);color:var(--cyan);background:rgba(90,176,214,0.08)}
.teams{display:grid;grid-template-columns:1fr 1fr;gap:13px}
@media(max-width:560px){.teams{grid-template-columns:1fr}}
.teamcard{background:var(--panel2);border:1px solid var(--line);border-radius:8px;padding:10px 12px}
.teamcard h3{font-family:var(--mono);font-size:11px;letter-spacing:0.04em;margin-bottom:8px}
.teamcard.a h3{color:var(--win)} .teamcard.b h3{color:var(--loss)}
.monrow{display:grid;grid-template-columns:minmax(64px,1.4fr) repeat(4,minmax(42px,1fr));gap:6px;margin-bottom:6px;align-items:center}
.monhead{font-family:var(--mono);font-size:9px;letter-spacing:0.07em;color:var(--faint);text-transform:uppercase;cursor:help}
input,select,textarea{background:var(--bg2);border:1px solid var(--line2);border-radius:5px;color:var(--text);font-family:var(--mono);font-size:12px;padding:5px 6px;width:100%;min-width:0}
input:focus,select:focus,textarea:focus{outline:1px solid var(--cyan);border-color:var(--cyan)}
input[type=text]{font-family:var(--sans)}
textarea{min-height:80px;resize:vertical;font-size:11px;line-height:1.45}
.kernelnote{font-size:11.5px;color:var(--dim);margin-top:10px;line-height:1.55}
.kernelnote .m{font-family:var(--mono);color:var(--text)}
.pickrow{margin-bottom:6px}
/* D53 — the dataset bar: which dataset is loaded, and its provenance.
   Sits above the loader so a tier is never read without its snapshot date. */
.dsbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:9px;
  padding:6px 9px;border:1px solid var(--line);border-radius:3px;background:rgba(255,255,255,0.015)}
.dsbar label{font-family:var(--mono);font-size:9px;letter-spacing:0.05em;color:var(--faint);text-transform:uppercase;cursor:help}
.dsbar select{min-width:170px}
.dsbar .dsnote{font-size:10.5px;color:var(--text);cursor:help}
.dsbar .prov{font-family:var(--mono);font-size:9px;color:var(--faint);cursor:help;
  border:1px solid var(--line);border-radius:2px;padding:1px 5px;letter-spacing:0.02em}
.dsbar .prov.warn{color:var(--amber);border-color:var(--amber)}
.rulesrow{display:flex;flex-wrap:wrap;gap:9px;margin-top:11px}
.rulesrow .rf{display:flex;flex-direction:column;gap:3px}
.rulesrow .rf label{font-family:var(--mono);font-size:9px;letter-spacing:0.05em;color:var(--faint);text-transform:uppercase;cursor:help}
.rulesrow .rf input{width:66px} .rulesrow .rf select{width:auto}
.rulesrow .rf:first-child select,.rulesrow .rf:nth-child(2) select{min-width:110px}
.readout{margin-top:14px}
.readout h4{font-family:var(--mono);font-size:10px;letter-spacing:0.08em;color:var(--faint);text-transform:uppercase;margin-bottom:7px;cursor:help}
.dmt{font-family:var(--mono);font-size:10px;color:var(--faint);margin-bottom:4px}
.dmat{display:grid;grid-template-columns:auto repeat(3,1fr);gap:3px;font-family:var(--mono);font-size:11px;margin-bottom:8px}
.dmat .lab{color:var(--faint);font-size:9px;display:flex;align-items:center;justify-content:center;padding:2px;overflow:hidden}
.dmat .cell{background:var(--bg2);border:1px solid var(--line);border-radius:4px;text-align:center;padding:5px 2px;cursor:help}
.loadbar{display:flex;gap:8px;margin-top:8px;align-items:center}
.btn{font-family:var(--mono);font-size:11px;padding:6px 14px;border-radius:6px;border:1px solid var(--cyan);background:transparent;color:var(--cyan);cursor:pointer}
.btn:hover{background:rgba(90,176,214,0.1)}
.loadstatus{font-family:var(--mono);font-size:11px;color:var(--dim)}
.stat-solvemeta{font-family:var(--mono);font-size:10px;color:var(--faint);margin-top:12px;line-height:1.5}
details{margin-top:10px}
summary{cursor:pointer;font-family:var(--mono);font-size:11px;color:var(--dim)}

/* matrices */
.leadgrid{display:grid;grid-template-columns:auto repeat(3,1fr);gap:4px;font-family:var(--mono)}
.leadgrid.wgrid{max-width:none}
.leadcell{border-radius:5px;padding:10px 4px;text-align:center;font-size:13px;cursor:pointer;border:1px solid transparent;position:relative;color:#fff;transition:transform .1s,box-shadow .1s}
.leadcell:hover{filter:brightness(1.14)}
/* QOL-c: the selected cell must be unmistakable — cyan ring + glow + lift */
.leadcell.sel{border-color:var(--cyan);box-shadow:0 0 0 2px var(--cyan) inset,0 0 12px rgba(90,176,214,0.6);transform:scale(1.05);z-index:1;font-weight:700}
.leadcell.sel::before{content:"◉";position:absolute;top:1px;left:4px;font-size:8px;color:var(--cyan)}
.leadcell.small{padding:8px 4px;font-size:12px;cursor:help}
.leadlab{font-size:10px;color:var(--dim);display:flex;align-items:center;justify-content:center;padding:2px;overflow:hidden}
.leadlab.corner{color:var(--faint);font-size:9px}
.leadlab.rot{writing-mode:vertical-rl;transform:rotate(180deg)}
.star{position:absolute;top:1px;right:4px;font-size:9px}
.leadnote{font-size:11px;color:var(--dim);margin-top:9px;font-family:var(--mono);line-height:1.5}
.leadnote .ok{color:var(--win)} .leadnote .bad{color:var(--loss)}

/* state list & inspector */
.sortbar{display:flex;gap:8px;align-items:center;margin-bottom:9px;flex-wrap:wrap}
.sortbar label{font-family:var(--mono);font-size:9.5px;letter-spacing:0.05em;color:var(--faint);text-transform:uppercase}
.sortbar select{width:auto;font-size:11px;padding:3px 7px}
.statefilter-note{font-family:var(--mono);font-size:10px;color:var(--faint);margin-left:auto}
.fchip{font-family:var(--mono);font-size:10px;padding:2px 9px;border-radius:999px;border:1px solid var(--cyan);background:rgba(90,176,214,0.1);color:var(--cyan);cursor:pointer}
.fchip:hover{background:rgba(90,176,214,0.2)}
.statelist{max-height:288px;overflow-y:auto;border:1px solid var(--line);border-radius:7px}
.staterow{display:flex;align-items:center;gap:10px;padding:6px 11px;border-bottom:1px solid var(--line);cursor:pointer;font-family:var(--mono);font-size:11.5px}
.staterow:last-child{border-bottom:none}
.staterow:hover{background:var(--panel2)}
.staterow.sel{background:var(--panel2);box-shadow:2px 0 0 var(--cyan) inset}
.staterow .stg{color:var(--faint);width:32px;flex-shrink:0}
.staterow .desc{flex:1;color:var(--dim);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.staterow .v{width:50px;text-align:right;font-weight:600}
.staterow .r{width:52px;text-align:right;color:var(--faint);cursor:help}
.insp-head{font-family:var(--mono);font-size:13px;margin:14px 0 9px}
.statboxes{display:grid;grid-template-columns:repeat(auto-fit,minmax(100px,1fr));gap:8px;margin-bottom:6px}
.statbox{background:var(--panel2);border:1px solid var(--line);border-radius:7px;padding:8px 11px;cursor:help}
.statbox .sl{font-family:var(--mono);font-size:8.5px;letter-spacing:0.06em;color:var(--faint);text-transform:uppercase;margin-bottom:3px}
.statbox .sv{font-family:var(--mono);font-size:16px;font-weight:600}
.idet{margin-top:12px;border:1px solid var(--line);border-radius:8px;background:var(--bg2)}
.idet summary{list-style:none;cursor:pointer;font-family:var(--mono);font-size:10.5px;letter-spacing:0.06em;text-transform:uppercase;color:var(--faint);padding:9px 12px;display:flex;align-items:center;gap:8px}
.idet summary::-webkit-details-marker{display:none}
.idet summary:hover{color:var(--dim)}
.idet[open]>summary{border-bottom:1px solid var(--line)}
.idet .cnt{font-size:9.5px;padding:1px 7px;border-radius:999px;background:var(--panel2);border:1px solid var(--line2);color:var(--dim)}
.idet .inner{padding:8px 12px 11px;overflow-x:auto}
table{width:100%;border-collapse:collapse;font-family:var(--mono);font-size:11px}
th{color:var(--faint);text-align:right;font-weight:500;letter-spacing:0.04em;padding:4px 6px;border-bottom:1px solid var(--line2);white-space:nowrap;cursor:help}
th:first-child,td:first-child{text-align:left}
td{padding:5px 6px;border-bottom:1px solid var(--line);text-align:right;white-space:nowrap;color:var(--dim)}
td.ev{color:var(--text);max-width:220px;overflow:hidden;text-overflow:ellipsis}
td .pt{font-size:9px;padding:1px 5px;border-radius:3px;margin-left:5px}
/* D39 quadrant tags: pyrrhic/taxed = the amber "tax" family — red stays reserved for
   genuine failures (refusals, invariant fails) and true loss surfaces (V = 0);
   good/salvage = the positive family; taxed/salvage are the lighter variants */
.pt.pyr{background:rgba(217,164,65,0.15);color:var(--amber)}
.pt.taxed{background:rgba(217,164,65,0.08);color:#e4c37e}
.pt.good{background:rgba(63,191,127,0.15);color:var(--win)}
.pt.salv{background:rgba(63,191,127,0.08);color:#8fd7ae}
.selfloop{font-size:11px;font-family:var(--mono);color:var(--amber);margin-top:9px;cursor:help}

/* tests */
.tests{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:10px}
.test{background:var(--panel2);border:1px solid var(--line);border-radius:7px;padding:10px 13px;font-family:var(--mono);cursor:help}
.test .tname{font-size:10px;letter-spacing:0.04em;color:var(--dim);text-transform:uppercase;margin-bottom:5px}
.test .tval{font-size:12px}
.test .ok{color:var(--win);font-weight:600}
.test .bad{color:var(--loss);font-weight:600}
.test .na{color:var(--amber);font-weight:600}
.test .terr{color:var(--faint);font-size:10px;margin-top:2px}
.ledger{margin-top:12px}
.ledger summary{letter-spacing:0.08em;text-transform:uppercase;color:var(--faint)}
.ledger p{margin:9px 0 0 2px;line-height:1.6;font-size:12.5px;color:var(--dim)}
.ledger b{color:var(--text);font-weight:600}
.ledger code{font-family:var(--mono);font-size:11px;color:var(--cyan)}

.empty{color:var(--faint);font-size:12px;padding:14px;text-align:center;font-family:var(--mono)}
#tooltip{position:fixed;z-index:99;max-width:300px;background:#080b0e;border:1px solid var(--line2);border-radius:6px;padding:7px 9px;font-size:10.5px;line-height:1.42;color:var(--dim);pointer-events:none;display:none;box-shadow:0 8px 30px rgba(0,0,0,0.55);transform:scale(var(--tooltip-scale,1));transform-origin:top left}
#tooltip b{color:var(--text)} #tooltip code{font-family:var(--mono);font-size:9.5px;color:var(--cyan);word-break:break-all}
#tooltip:has(.pc-team-tip){width:360px;max-width:min(360px,calc(100vw - 18px));padding:0;overflow:hidden;border-color:#39769c;background:#06111e;box-shadow:0 12px 38px rgba(0,0,0,.72),0 0 18px rgba(79,195,247,.12)}
.pc-team-tip{font-family:var(--mono);color:#acd0e5}
.pc-team-tip>header{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;padding:10px 11px 8px;background:linear-gradient(180deg,#123451,#0a1c2e);border-bottom:1px solid #316483}
.pc-team-tip>header>div{display:grid;gap:3px;min-width:0}.pc-team-tip>header>div>b{display:flex;align-items:baseline;gap:7px;font:900 13px/1.1 var(--ox);letter-spacing:.035em}.pc-team-tip>header>div>b>small{color:#6f9db9;font:700 6px/1 var(--mono);letter-spacing:.04em;white-space:nowrap}.pc-team-tip>header>div>span{color:#8bdcff;font:750 8px/1.2 var(--mono)}
.pc-team-tip>header>em{max-width:142px;color:#8ce7b0;font:800 6.5px/1.3 var(--mono);font-style:normal;text-align:right;text-transform:uppercase}.pc-team-tip>header>em.missing{color:#ff9b8e}
.pc-team-tip-vitals{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1px;background:#1a3b52;border-bottom:1px solid #244d67}
.pc-team-tip-vitals>span{display:grid;gap:2px;min-width:0;padding:7px 8px;background:#081827}.pc-team-tip small{display:block;color:#6f9db9;font:800 6px/1.2 var(--mono);letter-spacing:.07em;text-transform:uppercase}.pc-team-tip-vitals b{overflow:hidden;color:#ecf8ff;font:800 8px/1.25 var(--mono);text-overflow:ellipsis;white-space:nowrap}
.pc-team-tip>section{padding:7px 10px;border-bottom:1px solid rgba(73,130,164,.24)}.pc-team-tip>section>small{display:flex;align-items:center;justify-content:space-between;margin-bottom:5px}.pc-team-tip>section>small>b{color:#ffd76a;font-size:7px}
.pc-team-tip-stats{display:grid;gap:4px}.pc-team-tip-stats>span{display:grid;grid-template-columns:25px minmax(0,1fr) 55px;align-items:center;gap:6px;color:#7faac3;font:700 6.5px/1 var(--mono)}.pc-team-tip-stats i{font-style:normal}.pc-team-tip-stats em{display:flex;align-items:baseline;justify-content:flex-end;gap:4px;color:#f4fbff;font:800 7px/1 var(--mono);font-style:normal;text-align:right}.pc-team-tip-stats em strong{color:#7fdcff;font-size:6.5px}.pc-team-tip-stats span>b{display:flex;height:6px;overflow:hidden;border-radius:999px;background:#102a3c}.pc-team-tip-stats span>b>u{display:block;width:var(--tip-base-fill);height:100%;flex:none;background:linear-gradient(90deg,color-mix(in srgb,var(--tip-stat-color) 72%,#fff),var(--tip-stat-color));box-shadow:0 0 7px color-mix(in srgb,var(--tip-stat-color) 58%,transparent);text-decoration:none}.pc-team-tip-stats span>b>u+u{width:var(--tip-sp-fill);border-left:1px solid rgba(255,255,255,.8);background:linear-gradient(90deg,#fff7c7,#ffd85d 58%,#e5a91c);box-shadow:0 0 8px rgba(255,216,93,.62)}
.pc-team-tip-moves ol{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px;margin:0;padding:0;list-style:none}.pc-team-tip-moves li{display:grid;grid-template-columns:15px minmax(0,1fr) auto;align-items:center;gap:6px;min-width:0;padding:5px 7px;border:1px solid color-mix(in srgb,var(--move-type) 72%,#d7f3ff);border-radius:3px;background:linear-gradient(100deg,color-mix(in srgb,var(--move-type) 45%,#071421),#071421 76%);box-shadow:inset 3px 0 var(--move-type)}.pc-team-tip-moves li>i{display:grid;width:15px;height:15px;place-items:center;flex:none;border-radius:50%;background:color-mix(in srgb,var(--move-type) 55%,#102538);color:#f5fbff;font:800 7px/1 var(--mono);font-style:normal}.pc-team-tip-moves li>span{display:grid;gap:2px;min-width:0}.pc-team-tip-moves li>span>b{overflow:hidden;font-size:7.5px;text-overflow:ellipsis;white-space:nowrap}.pc-team-tip-moves li>span>em{color:color-mix(in srgb,var(--move-type) 48%,#fff);font:800 5.5px/1 var(--mono);font-style:normal;text-transform:uppercase}.pc-team-tip-moves li>strong{color:#d9f3ff;font:800 6px/1 var(--mono);white-space:nowrap}
.pc-team-tip>footer{padding:7px 10px;color:#668fa8;font:700 6px/1.3 var(--mono);text-align:center;text-transform:uppercase}.pc-team-tip>footer span{padding:0 4px;color:#4fc3f7}
::-webkit-scrollbar{width:9px;height:9px}::-webkit-scrollbar-thumb{background:var(--line2);border-radius:5px}::-webkit-scrollbar-track{background:transparent}

/* === redesign additions === */
.matpanel .matrixrow{display:grid;grid-template-columns:1fr 1fr;gap:14px;align-items:start}
@media(max-width:1080px){.matpanel .matrixrow{grid-template-columns:1fr}}
.matcard{background:var(--panel2);border:1px solid var(--line);border-radius:9px;padding:12px 13px}
.matlab{font-family:var(--mono);font-size:10.5px;letter-spacing:0.03em;color:var(--dim);text-transform:uppercase;margin-bottom:11px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.matcard .leadgrid.wgrid{max-width:none}

/* hero splitter */
.hsplit{flex:0 0 14px;align-self:stretch;cursor:col-resize;display:flex;align-items:center;justify-content:center;margin-bottom:16px;touch-action:none}
.hsplit::before{content:"";width:2px;height:64px;border-radius:2px;background:transparent;transition:background .12s}
.hsplit:hover::before,.hsplit.drag::before{background:var(--line2)}

/* graph controls redesign */
.gcontrols{display:block}
.gtop{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:11px}
.gbot{display:flex;align-items:center;gap:8px 13px;flex-wrap:wrap}
.vcap{font-family:var(--mono);font-size:9px;letter-spacing:0.14em;color:var(--faint);text-transform:uppercase;cursor:default}
.viewswitch{display:inline-flex;align-items:stretch;border:1px solid var(--line2);border-radius:9px;overflow:hidden;background:var(--bg2)}
.viewswitch .vb{font-family:var(--mono);font-size:12.5px;padding:8px 20px;border:none;border-left:1px solid var(--line);background:transparent;color:var(--dim);cursor:pointer;transition:all .12s}
.viewswitch .vb:first-child{border-left:none}
.viewswitch .vb:hover{color:var(--text);background:rgba(255,255,255,0.03)}
.viewswitch .vb.on{background:rgba(90,176,214,0.18);color:var(--cyan);font-weight:600}
.zoomstep{display:inline-flex;align-items:center;gap:6px;margin-left:auto}
.zoomstep .zbtn{width:28px;height:28px;border-radius:6px;border:1px solid var(--line2);background:var(--panel2);color:var(--dim);cursor:pointer;font-size:15px;font-family:var(--mono);display:inline-flex;align-items:center;justify-content:center;line-height:1}
.zoomstep .zbtn:hover{color:var(--cyan);border-color:var(--cyan)}
.zoomstep .zbtn.zfit{width:auto;padding:0 11px;font-size:11px}
.zoomstep .zval{font-family:var(--mono);font-size:11px;color:var(--dim);min-width:44px;text-align:center}
.zhint{font-family:var(--mono);font-size:9px;color:var(--faint);font-style:italic;margin-left:3px}

/* outcome caption */
.ocaption{font-family:var(--mono);font-size:10.5px;color:var(--dim);margin-bottom:11px;line-height:1.5}
.ocaption b{color:var(--text)}

/* kernel mon stats */
.monstat{font-family:var(--mono);font-size:9.5px;color:var(--faint);margin-top:5px;line-height:1.45;cursor:help;letter-spacing:0.01em}
.monstat .ty{color:var(--cyan)}
/* D52 — the engine/dex movepool split, counted per render (never a static string) */
.monstat.mvpool{margin-top:2px;opacity:.85}
.monstat.mvpool .skipn{color:var(--amber)}
.monstat.mvpool.warn .skipn{color:var(--loss)}

/* collapsible panels (QOL-a) — the metahead/kdetails pattern for every section */
.pdet{margin-top:0}
.pdet>summary{list-style:none;cursor:pointer}
.pdet>summary::-webkit-details-marker{display:none}
.pdet>summary h2{margin-bottom:0}
.pdet[open]>summary h2{margin-bottom:13px}
.pdet>summary:hover h2{color:var(--text)}
.pdet .kcaret{color:var(--faint);font-size:11px;transition:transform .15s}
.pdet[open]>summary .kcaret{transform:rotate(180deg)}
.herogrid>details.pdet:not([open]){align-self:flex-start}

/* setup-view outcome card (QOL-b) */
.setupocard{margin-top:14px}

/* ---- database explorer (rung 2 of D55, [S17]) ----
   Split pane per D58: datatable left, statistics over the filtered set right.
   Reuses the existing panel/pdet grammar and the existing colour variables —
   no new scale is defined anywhere here. */
.explsum{font-family:var(--mono);font-size:10.5px;color:var(--faint);font-weight:400;text-transform:none;letter-spacing:0}
.explbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:10px}
.explbar label{font-family:var(--mono);font-size:10px;color:var(--faint);text-transform:uppercase;letter-spacing:.08em;cursor:help}
.explcount{font-family:var(--mono);font-size:11px;color:var(--dim);background:var(--panel2);border:1px solid var(--line);border-radius:5px;padding:3px 9px;cursor:help}
.explcount b{color:var(--cyan)}
.explpred{flex:1 1 100%;display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-top:4px}
.predlab{font-family:var(--mono);font-size:9.5px;color:var(--faint);text-transform:uppercase;letter-spacing:.1em;cursor:help}
.fchip2{font-family:var(--mono);font-size:10.5px;color:var(--dim);background:var(--panel2);border:1px solid var(--line2);border-radius:999px;padding:2px 10px;cursor:help}
.fchip2.none{color:var(--faint);border-style:dashed}
.omitlist{font-family:var(--mono);font-size:10px;color:var(--faint);line-height:1.6;padding:4px 0 2px}
.omitlist b{color:var(--dim)}
/* column visibility (AD-8/D74, [S20]) — reuses the existing .gtog pill, the
   same control the statistic toggles use, because it is the same kind of thing:
   a view preference that cannot change a number. Deliberately a DIFFERENT
   control from the .omitlist above it — hidden is not omitted. */
.collist{display:flex;gap:5px;flex-wrap:wrap;align-items:center;padding:6px 0 3px}

.explsplit{display:flex;gap:14px;align-items:flex-start;flex-wrap:wrap;position:relative}
/* ---- the divider (`[S31]`, ruling 4 + convention F) ------------------------
   ORDER 3 puts the handle BETWEEN the two panes while it is written FIRST in
   the markup. It is written first so `renderExplorer`'s template reads
   divider-then-panes and the two panes stay adjacent in source; flex `order`
   moves it visually without a second DOM traversal. `.explleft` is order 1 and
   `.explright` order 5, leaving room to insert without renumbering.
   THE GRIP IS 7px WIDE WITH A 3px VISIBLE RULE: a 1px hit target is a control
   only a mouse with perfect aim can use, and this session is about giving the
   user the page's shape. Below 1080px the panes stack (the rule that already
   existed) and the divider hides — a vertical handle between stacked panes
   would drag along an axis that no longer separates them. */
/* ZERO LAYOUT COST, MEASURED. A plain flex child added its own width AND a
   second 14px `gap`, moving the statistics pane 500 -> 470 and 614 -> 584.
   `flex:0 0 0` with `margin:0 -7px` cancels the extra gap exactly, and the
   visible grip is absolutely positioned inside the 14px gap that already sat
   between the panes — so the handle is reachable and the panes are untouched. */
.expldivider{order:3;flex:0 0 0;width:0;margin:0 -7px;align-self:stretch;position:relative}
.expldivgrip{position:absolute;top:0;bottom:0;left:-3px;width:7px;min-height:60px;cursor:col-resize;border-radius:4px;background:linear-gradient(to right,transparent 2px,var(--line2) 2px,var(--line2) 5px,transparent 5px)}
.expldivgrip:hover{background:linear-gradient(to right,transparent 2px,var(--cyan) 2px,var(--cyan) 5px,transparent 5px)}
.explsplitro{font-family:var(--mono);font-size:10.5px;color:var(--dim);cursor:help}
/* ---- minimized rows (`[S31]`, ruling 2) ------------------------------------
   THE STUB IS THE HEIGHT OF ITS NAME AND KEEPS THE NAME. It is deliberately NOT
   `display:none`: the author's foreclosed alternative was removing the row, and
   a collapsed row that still shows its species is what makes un-hiding a click
   rather than a hunt. The blank cell is genuinely blank — no dashes, no "hidden"
   placeholder — because a data cell containing a word reads as data. */
.explrowhide{font-family:var(--mono);font-size:10.5px;color:var(--amber);cursor:help}
.explrowhide i{font-style:normal;color:var(--faint)}
.rowmin td{background:transparent;border-bottom:1px dashed var(--line2);padding:1px 8px;line-height:1.35}
.rowminname{font-family:var(--mono);font-size:10px;color:var(--faint);white-space:nowrap}
.rowminblank{background:transparent}
.rowmintog{font-family:var(--mono);font-size:9px;line-height:1;width:13px;height:13px;padding:0;margin-right:5px;border-radius:3px;border:1px solid var(--line2);background:transparent;color:var(--faint);cursor:pointer;vertical-align:middle}
.rowmintog:hover{color:var(--cyan);border-color:var(--cyan)}
.rowfirst{white-space:nowrap}
/* ---- column order controls (`[S31]`, ruling 3 + convention A) --------------
   TWO STEP BUTTONS PER COLUMN RATHER THAN DRAG-AND-DROP. A drag needs pointer
   geometry no headless instrument here can drive, so the control would be
   ungradable — and item 0 of this session is what an ungradable instrument
   costs. Stepping is drivable with a key and a direction. */
.colrow{display:inline-flex;align-items:center;gap:2px;margin:0 4px 4px 0}
.colmv{font-family:var(--mono);font-size:8px;line-height:1;width:14px;height:16px;padding:0;border-radius:3px;border:1px solid var(--line2);background:transparent;color:var(--faint);cursor:pointer}
.colmv:hover:not(:disabled){color:var(--cyan);border-color:var(--cyan)}
.colmv:disabled{opacity:.3;cursor:default}
.explleft{order:1}
.explright{order:5}
/* BELOW THE STACKING BREAKPOINT THE SPLIT DOES NOT APPLY, AND THIS RULE IS
   WHY `!important` IS HERE ON PURPOSE `[S31]`. `.explright` already went
   full-width below 1080px (the rule above, since S17): the panes stack and
   there is no vertical boundary left to drag, so the divider hides. THE
   WITNESS CAUGHT WHAT THAT LEAVES BEHIND — a stored split still applied to the
   stacked pane, pinning the statistics to 300px at a 1024px viewport and
   pushing 43 of 43 rows out of it. A width the user chose for a side-by-side
   layout is meaningless once the layout is not side by side, so the stylesheet
   overrides the inline preference rather than the preference overriding the
   structural rule. `!important` is the only thing that beats an inline style,
   and this is the case it is for: a structural constraint, not a preference. */
@media(max-width:1080px){.expldivider{display:none}.explright{flex:1 1 100% !important;max-width:none !important}}
.explleft{flex:1 1 560px;min-width:0}
/* [S29] DEFECT B, THE AUTHOR'S REPORT: "the stat numbers on the right gets displayed off screen". MEASURED in headless Chrome with every
   statistics toggle on: this pane held at its 380px basis (flex-grow 0) while its .stattable laid out at 948px — 43 of 43 rows past the
   viewport at 1280 and 1920 wide — because the GLOBAL td rule above (white-space:nowrap, the engine's matrix tables) reaches .stattable td,
   which never overrode it, so S28's long cells (the median split, "(108 rows)") became one unbreakable line per column. Both rules predate
   S28 (S17, 35eb8d8); the container was sized for the six-row panel. Two changes, both the cause and nothing else: the cells WRAP (below),
   and the pane may GROW into spare width so the wrapped table has room — a flexible container, which is what S31's resizable divider
   will need anyway. Gated by tacticdex_explorer_layout_check.mjs at 1024 / 1280 / 1920. */
.explright{flex:1 1 380px;min-width:300px;max-width:640px}
@media(max-width:1080px){.explright{flex:1 1 100%}}

/* the scroll viewport. ITS HEIGHT AND THE ROW HEIGHT ARE EMITTED INLINE by
   src/ui/explorer.js (AD-10/D76, [S20]) and are deliberately NOT set here: the
   window arithmetic computes spacer heights and a scroll offset from exactly
   those two numbers, and a copy in CSS would be a second definition that the
   window is silently wrong the moment it disagrees with. */
.expltablewrap{overflow:auto;border:1px solid var(--line);border-radius:8px;background:var(--bg2)}
/* a data row's height must be the constant the arithmetic uses, so it reads the
   emitted custom property rather than declaring one of its own */
.expltable tbody tr{height:var(--rowh)}
.expltable tr.wspacer td{padding:0;border:none;background:transparent}
.wininfo{font-family:var(--mono);font-size:9.5px;color:var(--faint);padding:5px 2px 0;cursor:help}
.wininfo b{color:var(--dim)}
.expltable{border-collapse:separate;border-spacing:0;width:100%;font-family:var(--mono);font-size:10.5px}
.expltable th{position:sticky;top:0;z-index:2;background:var(--panel2);color:var(--dim);text-align:left;
  padding:6px 9px;border-bottom:1px solid var(--line2);white-space:nowrap;cursor:pointer;user-select:none}
.expltable th:hover{color:var(--text)}
.expltable th.sorted{color:var(--cyan)}
.expltable th.nu,.expltable td.nu{text-align:right}
.expltable tr.filtrow td{position:sticky;top:27px;z-index:1;background:var(--panel);padding:3px 5px;border-bottom:1px solid var(--line)}
.expltable td{padding:4px 9px;border-bottom:1px solid var(--line);color:var(--text);white-space:nowrap}
.expltable tr:hover td{background:var(--panel2)}
.expltable td.nul{color:var(--amber);font-style:italic;cursor:help}
.expltable td.nores{color:var(--faint);text-align:center;padding:18px;white-space:normal}
/* D65 refusal surface — amber, the standoff/MODEL-warning colour, not loss-red:
   a malformed filter is a refusal to compute, not a failed invariant (§8) */
.explrefuse{background:rgba(217,164,65,0.10);border:1px solid var(--amber);border-radius:8px;
  padding:13px 15px;margin:10px 0;color:var(--amber);font-size:12px;line-height:1.55;cursor:help;white-space:normal}
.fnum{width:52px}.fsel{max-width:110px}.ftext{width:88px}.fnul{max-width:82px}
.expltable input,.expltable select{font-family:var(--mono);font-size:10px;background:var(--bg);color:var(--text);
  border:1px solid var(--line2);border-radius:4px;padding:2px 4px}

.statshead{margin-bottom:8px}
.statrow1{display:flex;align-items:center;gap:8px;margin-bottom:7px}
.statlab{font-family:var(--mono);font-size:10px;color:var(--faint);text-transform:uppercase;letter-spacing:.08em;cursor:help}
.statrow1 select{font-family:var(--mono);font-size:11px;background:var(--panel2);color:var(--text);border:1px solid var(--line2);border-radius:5px;padding:3px 7px}
.stattoggles{display:flex;gap:5px;flex-wrap:wrap}
.recordview{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin:0 0 7px;padding:6px 8px;
  background:rgba(79,195,247,.045);box-shadow:inset 0 0 0 1px rgba(79,195,247,.18);
  color:var(--faint);font:700 9px/1.2 var(--mono);text-transform:uppercase;letter-spacing:.06em}
.recordview b{color:var(--viewed)}
.recordview select{min-width:126px;padding:3px 7px;border:1px solid var(--line2);border-radius:4px;background:var(--panel2);color:var(--text);font:700 10px/1.2 var(--mono)}
.recordview small{margin-left:auto;color:var(--faint);font:600 8px/1.2 var(--mono);letter-spacing:0;text-transform:none}
/* [S32] THE PER-VALUE VIEW. The control sits in the statistics pane beside the
   column selector; the note beside it states on the PAGE that no column was
   made and no number moved, rather than only in a hover.
   NO WIDTH IS DECLARED FOR `.viewed` AND NONE MAY BE. Measured at 1024/1280/
   1920: every column's width is set by its FILTER CELL (all eleven numeric
   columns exactly 114px = two 52px `.fnum` inputs + 10px padding), so the
   transform holds the column's size by construction. A width here would be a
   second definition of that and would move the very thing it is meant to hold. */
.statviewnote{font-family:var(--mono);font-size:10px;color:var(--dim);flex:1 1 auto}
.statviewnote b{color:var(--text)}
/* `[S35]` D184/AD-116 — SORTED AND VIEWED NO LONGER SHARE A COLOUR.
   Both were --cyan, so a column that was BOTH carried one colour for two
   meanings and a reader could not tell which it was being told. They are
   different KINDS of fact and now look it: SORTED is structural (it says
   what orders the ROWS, and it is the older signal — `.poolpred` is cyan
   for the same structural reason), VIEWED is a transform (it says these
   CELL VALUES are not the stored ones).
   EACH KEEPS A NON-COLOUR CARRIER TOO, and both already existed: the sort
   arrow (▲/▼) and the view mark (`·pct` / `·rel`) are rendered by
   explorer.js and are what makes this readable without colour at all.
   THE ARROW STAYS CYAN ON A HEADER THAT IS BOTH — it is wrapped in its own
   span so the label can be violet while the arrow is not, which is the one
   case the old rule could not express. */
.expltable th.viewed{color:var(--viewed)}
.expltable th .sortarrow{color:var(--cyan)}
/* the cells carry the transform hue AND a dotted rule — the non-colour
   carrier for the DATA, where there is no room for a mark per cell */
.expltable td.viewed{color:var(--viewed);border-bottom:1px dotted var(--viewed)}
.expltable td.viewrefuse{color:var(--amber);font-style:italic;cursor:help}
.poolcard{background:var(--panel2);border:1px solid var(--line);border-radius:6px;padding:7px 9px;margin-bottom:0;cursor:help}
.poolmeta{margin-top:7px}
.poolmeta>.poolcard{margin-top:6px}
.poolline{font-family:var(--mono);font-size:10.5px;color:var(--dim)}
.poolline b{color:var(--text)}
.poolpred{font-family:var(--mono);font-size:10px;color:var(--cyan);margin-top:4px;word-break:break-word}
.poolvals{font-family:var(--mono);font-size:9.5px;color:var(--faint);margin-top:4px}
.stattable{width:100%;table-layout:fixed;border-collapse:collapse;font-family:var(--mono);font-size:9px;line-height:1.2}
.stattable th:first-child{width:42%}.stattable th:nth-child(2),.stattable th:nth-child(3){width:29%}
.stattable th{text-align:left;color:var(--faint);font-size:8px;text-transform:uppercase;letter-spacing:.055em;padding:2px 5px;border-bottom:1px solid var(--line2)}
.stattable th.nu{text-align:right}
.stattable td{padding:2px 5px;border-bottom:1px solid var(--line);color:var(--text);cursor:help;white-space:normal;overflow-wrap:anywhere} /* [S29] overrides the global td nowrap — see .explright */
.stattable td.nu{text-align:right}
.stattable td.ctx{color:var(--faint)}
.stattable tr.refused td.reason{color:var(--amber);font-size:10px;white-space:normal;font-style:italic}
.stattable th.stgrp{padding-top:9px;color:var(--dim);letter-spacing:.06em;border-bottom:1px solid var(--line);cursor:help} /* [S28] a group header inside the statistics table (the percentile ladder) */
.outlist{display:flex;gap:5px;flex-wrap:wrap;padding:4px 0}
.outchip{font-family:var(--mono);font-size:10px;color:var(--dim);background:var(--panel);border:1px solid var(--line2);border-radius:999px;padding:2px 8px;cursor:help}
.outchip b{color:var(--amber)}
.statnote,.statfoot{font-family:var(--mono);font-size:9.5px;color:var(--faint);line-height:1.55;margin-top:8px;cursor:help}

/* ---- cross-page navigation ([S19], AD-1/D67) ----
   Two generated pages at the repo root; plain relative links, no state passed
   (TBD-4 open, default: nothing passes). Shared by both pages because there is
   one stylesheet — forking it would fork the :root tokens with it. */
.navout{margin:0 0 14px}
.navout a{font-family:var(--mono);font-size:11px;color:var(--cyan);text-decoration:none;background:var(--panel2);
  border:1px solid var(--line2);border-radius:6px;padding:5px 11px;display:inline-block;cursor:pointer}
.navout a:hover{border-color:var(--cyan);color:var(--text)}
.foot{font-family:var(--mono);font-size:10px;color:var(--faint);line-height:1.6;margin-top:14px;cursor:help}

/* ---- TEAM TYPING PANEL [S21], milestone item 2 -----------------------------
   Shipped on index.html only (src/ui/type-panel.js is in no explorer manifest).
   These rules ride in the ONE shared stylesheet, so explorer.html's byte size
   moves while its behaviour does not — the same shared-sheet effect C110
   recorded for state.js and style.css when column visibility landed.
   THE THREE AD-15 STATES ARE VISUALLY DISTINCT WITHOUT HOVERING: `.tprefuse`
   is amber and framed (REFUSAL), `.tpzero` is ordinary text with a rule above
   it (TRUE ZERO — an answer, never an error), and a normal card is neither. */
.tpmark{display:inline-flex;align-items:center;justify-content:center;width:23px;height:23px;margin-right:7px;
  border-radius:50%;background:var(--panel2);border:1px solid var(--line2);color:var(--dim);
  font-family:var(--mono);font-size:13px;cursor:help;flex:0 0 auto}
.tphead{margin:0 0 12px}
.tpteam{font-family:var(--mono);font-size:11px;color:var(--dim);margin-bottom:8px}
.tpmem{display:inline-block;background:var(--panel2);border:1px solid var(--line2);border-radius:5px;
  padding:2px 7px;margin:0 5px 4px 0;color:var(--text);cursor:help}
.tpmem i{color:var(--faint);font-style:normal}
.tpmem.outside{color:#ff9a8e;border-color:rgba(255,124,107,.55)}
.tpmem.outside strong{display:block;margin-top:2px;color:#ff9a8e;font:800 6.5px/1.2 var(--mono);letter-spacing:.07em}
.tproleworkspace{display:grid;grid-template-columns:minmax(0,1fr) minmax(176px,27%);gap:0;margin:0;background:linear-gradient(180deg,#081827,#050e19);border-bottom:1px solid rgba(79,195,247,.2)}
.tphexpanel{display:grid;grid-template-rows:auto minmax(0,1fr) auto;min-width:0;padding:9px 10px 5px;background:transparent;border:0}
.tphexpanel>header{display:flex;align-items:center;justify-content:space-between;gap:10px}
.tphexpanel>header>div:first-child{display:grid;gap:3px}
.tphexpanel>header b{color:var(--text);font:850 10px/1.2 var(--mono)}
.tphexpanel>header small{color:var(--faint);font:650 7px/1.3 var(--mono)}
.tphexview{display:flex;gap:0;border-bottom:1px solid rgba(79,195,247,.28)}
.tphexview button{padding:5px 8px;border:0;border-left:1px solid rgba(79,195,247,.18);border-radius:0;background:transparent;color:var(--dim);font:800 7px/1 var(--mono);cursor:pointer}
.tphexview button[aria-pressed="true"]{background:rgba(79,195,247,.1);color:var(--text);box-shadow:inset 0 -2px var(--cyan)}
.tphexpanel>p{margin:2px 0 0;color:var(--faint);font:650 7px/1.4 var(--mono);text-align:center}
.tprolegrid{display:grid;grid-template-columns:minmax(0,1fr);grid-auto-rows:minmax(min-content,1fr);gap:0;margin:0;background:rgba(3,11,19,.42)}
.tprolecard{position:relative;min-width:0;padding:6px 7px;background:rgba(7,17,30,.72);border:0;border-bottom:1px solid rgba(79,195,247,.16);border-left:3px solid var(--team-color);cursor:pointer;transition:opacity .18s ease,filter .18s ease,background .18s ease,box-shadow .18s ease}
.tprolecard::before{content:"";position:absolute;left:-3px;top:0;bottom:0;width:3px;background:var(--team-color);box-shadow:0 0 6px var(--team-color);pointer-events:none}
.tprolecard:last-child{border-bottom:0}
.tprolecard>header{display:grid;justify-items:start;gap:3px;margin-bottom:5px}
.tprolecard>header>b{min-width:0;color:var(--team-color);font:900 10px/1.25 var(--mono);overflow-wrap:anywhere;text-shadow:0 0 7px color-mix(in srgb,var(--team-color) 55%,transparent)}
.tprolecard>header>.tproletypes{display:flex;flex-wrap:wrap;gap:2px}
.tprolecard .typebadge{padding:2px 4px;font-size:7px}
.tprolebody{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:5px;align-items:end;min-width:0}
.tprolecopy{display:grid;align-content:center;gap:2px;min-width:0}
.tprolecopy>small{display:block;margin-top:2px;color:var(--faint);font:750 6px/1.25 var(--mono);letter-spacing:.05em;text-transform:uppercase}
.tprolecopy>strong{display:block;color:var(--cyan);font:850 9px/1.3 var(--mono)}
.tpsmogonroles{display:flex;flex-wrap:wrap;gap:2px 5px}
.tpsmogonroles>span{padding:0;border:0;background:transparent;color:var(--text);font:750 7px/1.25 var(--mono)}
.tpsmogonroles>span+span::before{content:'\00b7';margin-right:5px;color:var(--team-color)}
.tprolestatbar{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));align-items:end;gap:2px;min-width:0;height:68px}
.tprolestatbar>span{display:grid;grid-template-rows:8px minmax(40px,1fr) 11px;justify-items:stretch;gap:1px;min-width:0;height:100%;text-align:center}
.tprolestatbar i{color:var(--faint);font:800 6px/1 var(--mono);font-style:normal}
.tprolestatbar b{display:flex;width:calc(100% - 2px);height:100%;margin:0 1px;flex-direction:column-reverse;overflow:hidden;background:#030b13;box-shadow:inset 0 0 0 1px rgba(79,195,247,.16)}
.tprolestatbar u{display:block;width:100%;height:var(--tp-base);flex:none;background:var(--team-color);text-decoration:none}
.tprolestatbar u.tprolestat-sp{width:100%;height:var(--tp-sp);padding:0;border:0;border-radius:0;background:#fff}
.tprolestatbar em{color:var(--text);font:850 6.5px/1 var(--mono);font-style:normal;font-variant-numeric:tabular-nums;text-align:center;white-space:nowrap}
.tprolestatbar em small{display:none}
.tprolecard.is-dimmed{opacity:.13;filter:saturate(.25)}
.tprolecard.is-focused{background:color-mix(in srgb,var(--team-color) 10%,#07111e);box-shadow:inset 9px 0 18px color-mix(in srgb,var(--team-color) 14%,transparent)}
.tpstathex{align-self:center;min-width:0;width:100%;max-width:600px;margin:0 auto}
.tpstathex svg{display:block;width:100%;height:auto;overflow:visible}
.tphexgrid{fill:none;stroke:#31546b;stroke-width:1}
.tphexlabels text{fill:#91b6ce;font:800 10px var(--mono)}
.tphexlabels tspan{fill:#f4fbff;font:900 12px var(--mono)}
.tpsumhex{fill:#4fc3f73d;stroke:#9be8ff;stroke-width:3;stroke-linejoin:round;filter:drop-shadow(0 0 5px rgba(79,195,247,.45))}
.tpmemberhex{opacity:.82;cursor:pointer;transition:opacity .18s ease,filter .18s ease}
.tpmemberhex polygon{stroke-linejoin:round;pointer-events:all}
.tpmemberhex .tpmemberhex-sp{stroke:none}
.tpteamoutline{fill:transparent;stroke:#d0f3ff;stroke-width:2;stroke-linejoin:round;vector-effect:non-scaling-stroke;filter:drop-shadow(0 0 3px #81d5ee);pointer-events:all;cursor:pointer}
.tpstathex svg:focus,.tpstathex .tpmemberhex:focus,.tpstathex .tpteamoutline:focus{outline:none}
.tpstathex .tpmemberhex:focus-visible .tpmemberhex-base{stroke:#fff;filter:drop-shadow(0 0 4px var(--team-color))}
.tpstathex .tpteamoutline:focus-visible{stroke:#fff;stroke-width:3;filter:drop-shadow(0 0 5px #81d5ee)}
.tpmemberhex .tpmemberhex-base{fill:color-mix(in srgb,var(--team-color) 22%,#06101c);stroke:var(--team-color);stroke-width:4.5}
.tpstackfills .tpmemberhex{opacity:1}
.tpstackfills .tpmemberhex-base{fill:var(--team-color);fill-opacity:.24;stroke:none;mix-blend-mode:screen}
.tpcommonhex{fill:#030a12;fill-opacity:.82;stroke:none;pointer-events:none}
.tpstackoutlines{pointer-events:none}
.tpstackoutline{fill:none;stroke:var(--team-color);stroke-width:2.5;stroke-linejoin:round;vector-effect:non-scaling-stroke;mix-blend-mode:screen;pointer-events:none}
.tpmemberhex.is-dimmed{opacity:.055;filter:saturate(.2)}
.tpmemberhex.is-focused{opacity:1;filter:none}
.tpmemberhex.is-focused .tpmemberhex-base{fill:color-mix(in srgb,var(--team-color) 32%,#06101c);stroke-width:6}
.tpstathex-missing{padding:10px 4px;color:var(--faint);font:700 7px/1.35 var(--mono);text-align:center}
@media(max-width:650px){.tproleworkspace{grid-template-columns:1fr}.tphexpanel>header{align-items:stretch;flex-direction:column}.tphexview button{flex:1}.tprolegrid{grid-template-columns:1fr}}
/* Team Analysis owns one non-scrolling centre instrument. The defensive
   tables scroll independently in the right column. */
.type-analyzer-case #type-stats-panel{display:flex;flex-direction:column;flex:1;min-height:0;margin:0;padding:0}
.type-analyzer-case #type-stats-panel::details-content{display:flex;flex-direction:column;flex:1;min-height:0}
.type-analyzer-case #type-stats-panel:not([open]){flex:none}
.type-analyzer-case #type-stats-body{display:flex;flex:1;min-width:0;min-height:0;margin:0 2px 11px}
.tdx-case.type-analyzer-case .analysis-workspace{overflow:hidden;scrollbar-gutter:auto}
.type-analyzer-case .tproleworkspace{flex:1;min-height:0;grid-template-columns:minmax(0,1fr) clamp(220px,32%,280px);border-bottom:0}
.type-analyzer-case .tphexpanel{min-height:0}
.type-analyzer-case .tpstathex{align-self:stretch;min-height:0;max-width:none;height:100%}
.type-analyzer-case .tpstathex svg{height:100%;overflow:visible}
.type-analyzer-case .tphexpanel>header{flex-direction:column;align-items:stretch}
.type-analyzer-case .tphexpanel>header b{display:none}
.type-analyzer-case .tphexview button{flex:1}
.type-analyzer-case .tprolegrid{min-height:0;align-self:center;height:min(100%,calc(var(--profile-count)*104px));grid-auto-rows:minmax(0,1fr);border-top:2px solid #537c95;border-bottom:2px solid #537c95}
.type-analyzer-case .tprolecard{display:grid;grid-template-rows:auto minmax(0,1fr);gap:5px;min-height:0;padding:7px 8px;border-left-width:5px;container-type:size;container-name:team-profile}
.type-analyzer-case .tprolecard:not(:last-child){border-bottom:2px solid #537c95}
.type-analyzer-case .tprolecard::before{left:-5px;width:5px;box-shadow:0 0 8px var(--team-color)}
.type-analyzer-case .tprolecard>header{grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:6px;align-items:start;margin:0}
.type-analyzer-case .tprolecard>header>b{font-size:clamp(10px,min(5cqw,13cqh),21px);line-height:1.1}
.type-analyzer-case .tprolecard>header>.tproletypes{justify-self:end;justify-content:flex-end}
.type-analyzer-case .tprolecard .typebadge{font-size:clamp(7px,min(3.4cqw,9cqh),12px);padding:2px 4px}
.type-analyzer-case .tprolebody{min-height:0;grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);gap:7px}
.type-analyzer-case .tprolestatbar{height:100%;min-height:0;gap:2px}
.type-analyzer-case .tprolestatbar>span{grid-template-rows:auto minmax(0,1fr) auto;gap:2px}
.type-analyzer-case .tprolestatbar i,.type-analyzer-case .tprolestatbar em{font-size:clamp(7px,min(3.6cqw,10cqh),12px);line-height:1.1}
.type-analyzer-case .tprolestatbar b{width:100%;margin:0}
.type-analyzer-case .tprolecopy{align-self:start;align-content:start;gap:3px}
.type-analyzer-case .tprolecopy>small{font-size:clamp(7px,min(3cqw,8cqh),10px);line-height:1.2}
.type-analyzer-case .tprolecopy>strong{font-size:clamp(9px,min(4cqw,10cqh),16px)}
.type-analyzer-case .tpsmogonroles{display:grid;gap:2px}
.type-analyzer-case .tpsmogonroles>span{font-size:clamp(8px,min(3.7cqw,9cqh),14px);line-height:1.2}
.type-analyzer-case .tpsmogonroles>span+span::before{content:none}
.type-analyzer-case #type-profile-body .tpgrid{table-layout:fixed;width:100%;margin:0;font-size:8px}
.type-analyzer-case .tpgrid th{overflow-wrap:anywhere;padding:5px 2px;font-size:7px}
.type-analyzer-case .tpgrid th:first-child,.type-analyzer-case .tpgrid th:last-child{white-space:normal}
.type-analyzer-case .tpgrid .tp-member-heading{display:block;container-type:inline-size;font-weight:750;line-height:1.3;text-align:center}
.type-analyzer-case .tpgrid .tp-member-heading>span{display:block;white-space:nowrap;font-size:min(9px,calc(160cqw / var(--name-length)))}
@media(min-width:701px){.tdx-case.type-analyzer-case .col-right{width:max(410px,var(--case-rightw,410px))}}
.type-analyzer-case .tpgrid th:first-child{width:48px;text-align:center}
.type-analyzer-case .tpgrid th:last-child{width:39px;text-align:center;font-size:7px}
.type-analyzer-case .tpgrid .tpbalance small{display:block;font-size:6px;margin-top:3px}
.type-analyzer-case .tpgrid td{padding:5px 1px;font-size:12px;font-weight:750;text-align:center}
.type-analyzer-case .tpgrid td:last-child,.type-analyzer-case .tpgrid th:last-child{border-left:5px solid #07111e}
.type-analyzer-case .tpgrid .typebadge{display:inline-flex;align-items:center;justify-content:center;width:44px;height:17px;box-sizing:border-box;font-size:7px;padding:1px 2px}
.type-analyzer-case .tpgrid .tpholeflag{display:none}
.type-analyzer-case .tpgrid td.tp-quad-resist,.type-analyzer-case .tpgrid td.tp-quad-weak,.type-analyzer-case .tpgrid td.tpb-imm{background:transparent;box-shadow:none;text-shadow:none}
.type-analyzer-case .tpgrid td.tp-quad-resist .tpmultiplier{color:#b6ffdc;font-weight:950;text-shadow:0 0 6px #53f3a2}
.type-analyzer-case .tpgrid td.tp-quad-weak .tpmultiplier{color:#ff9b8e;font-weight:950;text-shadow:0 0 6px #ff5148}
.type-analyzer-case .tpgrid td.tpb-imm .tpmultiplier{color:#bdefff;font-weight:950;text-shadow:0 0 6px #45ceff}
.type-analyzer-case .analysis-side .tpthreat{width:100%;font-size:9px}
.type-analyzer-case .analysis-side .tpthreat th,.type-analyzer-case .analysis-side .tpthreat td{padding:5px 3px;white-space:normal;overflow-wrap:anywhere}
.type-analyzer-case .analysis-side .tpthreat th:first-child,.type-analyzer-case .analysis-side .tpthreat td:first-child{width:21px}
.type-analyzer-case .analysis-side .tpthreat th:nth-child(n+3),.type-analyzer-case .analysis-side .tpthreat td:nth-child(n+3){width:35px;font-size:8px}
.type-analyzer-case .analysis-side .tpthreat .typebadge{font-size:7px;padding:2px 3px}
@media(max-width:700px){
  .type-analyzer-case #type-stats-panel{order:1;display:block}
  .type-analyzer-case #type-stats-body{display:block}
  .type-analyzer-case .tproleworkspace{grid-template-columns:1fr}
  .type-analyzer-case .tpstathex{height:auto;aspect-ratio:360/406}
  .type-analyzer-case .tprolegrid{grid-auto-rows:auto;height:auto}
  .type-analyzer-case .tprolecard{height:112px;box-sizing:border-box}
  .type-analyzer-case #type-profile-panel{order:3}
}
.type-chart-workspace{min-width:0;overflow:hidden;scrollbar-gutter:auto}
.type-chart-workspace>#type-chart-matrix-panel{display:flex;min-width:0;min-height:0;flex:1 1 0;flex-direction:column;background:var(--cx-outline)}
.type-chart-workspace>#type-chart-matrix-panel::details-content{display:flex;min-height:0;flex:1;flex-direction:column}
.type-chart-workspace>#type-chart-matrix-panel::before{bottom:1.5px}
.type-chart-workspace>#type-chart-matrix-panel::after{display:none}
#type-chart-matrix-body{display:flex;min-width:0;min-height:0;flex:1;flex-direction:column;margin:0!important;padding:0}
.tcmatrix-head{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;margin:0;padding:7px 9px;background:#071421;border-bottom:1px solid rgba(79,195,247,.28)}
.tcmatrix-head>div:first-child{display:grid;gap:2px}.tcmatrix-head>div:first-child b{color:var(--text);font:900 10px/1.2 var(--mono)}.tcmatrix-head>div:first-child span{color:var(--faint);font:700 7px/1.3 var(--mono)}
.tcmatrix-legend{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:3px}.tcmatrix-legend span{min-width:31px;padding:3px 4px;border:1px solid currentColor;background:#071421;font:900 6px/1 var(--mono);text-align:center;text-shadow:0 0 4px currentColor,0 1px 2px #000}.tcmatrix-legend .b-resist{color:#8dffc0}.tcmatrix-legend .b-neutral{color:#c1def0}.tcmatrix-legend .tc-m-0{background:#116a98;color:#d7f7ff}.tcmatrix-legend .tc-m-2{background:#7b2715;color:#ffad76}.tcmatrix-legend .tc-m-4{background:#4a050b;color:#ff6058}
.tcmatrix-scroll{min-width:0;min-height:0;flex:1;overflow-x:hidden;overflow-y:auto;border:0;background:#040c15;scrollbar-gutter:stable}
.tcmatrix{width:100%;min-width:0;table-layout:fixed;border-collapse:separate;border-spacing:0;color:var(--dim);font-family:var(--mono);font-variant-numeric:tabular-nums}
.tcmatrix.is-single{height:100%}
.tcmatrix col.tc-def-col{width:46px}
.tcmatrix th,.tcmatrix td{box-sizing:border-box;border-right:1px solid rgba(79,195,247,.12);border-bottom:1px solid rgba(79,195,247,.12)}
.tcmatrix thead th{position:sticky;z-index:4;top:0;height:76px;padding:0;background:#07111d;vertical-align:bottom}
.tcmatrix thead th:not(.tcmatrix-corner){box-shadow:inset 0 1px rgba(127,220,255,.14)}
.tc-matrix-type{box-sizing:border-box;width:calc(100% - 2px);height:calc(100% - 2px);margin:1px;padding:0;border-radius:4px}
.tc-matrix-attack>span{display:flex;height:100%;flex-direction:column;align-items:center;justify-content:center;line-height:.78}
.tc-matrix-attack i{display:block;color:#fff;font:900 6.4px/.78 var(--mono);font-style:normal;letter-spacing:0;text-shadow:0 1px 2px #000,0 0 4px #000}
.tcmatrix .tcmatrix-corner{z-index:6;padding:3px 5px;background:linear-gradient(135deg,#0c2e45,#071421);color:#bceaff;font:900 7.4px/1.2 var(--mono);letter-spacing:.035em;vertical-align:middle;box-shadow:inset 0 3px var(--cyan)}
.tcmatrix-corner>span{display:flex!important;width:auto!important;height:auto!important;align-items:center;justify-content:space-between;padding:6px 2px;writing-mode:horizontal-tb!important;transform:none!important}
.tcmatrix-corner>span+span{border-top:1px solid rgba(127,220,255,.22)}
.tcmatrix-corner b{color:#fff;font-size:10px;text-shadow:0 0 5px rgba(79,195,247,.8)}
.tc-axis-attacking{color:#7fdcff}.tc-axis-defending{color:#d9f5ff}
.tcmatrix tbody .tc-def-type{height:25px;padding:0;background:#07111d;color:#fff;text-align:center;cursor:help;box-shadow:none}
.tc-matrix-defense{display:grid;place-items:center;overflow:hidden;font:900 6.2px/1 var(--mono);text-overflow:ellipsis;white-space:nowrap}
.tcmatrix tbody .tc-def-single .tc-matrix-defense{width:calc(100% - 2px)}
.tcmatrix-cell{height:25px;padding:0;text-align:center;cursor:help}.tcmatrix-cell>span{display:grid;width:100%;height:100%;place-items:center;font:950 9px/1 var(--mono);text-shadow:0 0 5px currentColor,0 1px 2px #000}
.tcmatrix-cell.b-immune{background:rgba(44,164,219,.26);color:#d7f7ff;box-shadow:inset 0 0 0 1px rgba(104,220,255,.58),inset 0 0 10px rgba(47,194,255,.24)}.tcmatrix-cell.b-resist{background:rgba(48,185,111,.16);color:#9dffc6}.tcmatrix-cell.b-neutral{background:rgba(79,195,247,.075);color:#c1def0}.tcmatrix-cell.b-weak{background:rgba(188,60,34,.28);color:#ffad76}.tcmatrix-cell.tc-m-0{background:rgba(44,164,219,.32);color:#e1faff;box-shadow:inset 0 0 0 1px rgba(104,220,255,.72),inset 0 0 12px rgba(47,194,255,.32)}.tcmatrix-cell.tc-m-2{background:rgba(186,61,30,.38);color:#ffad76;box-shadow:inset 0 0 0 1px rgba(255,116,66,.38),inset 0 0 9px rgba(225,69,29,.2)}.tcmatrix-cell.tc-m-4{background:linear-gradient(135deg,#200206,#7c0710);color:#ff6259;box-shadow:inset 0 0 0 1px #ad111c,inset 0 0 12px rgba(215,8,24,.38)}
.tcmatrix tbody tr:hover :is(th,td){filter:brightness(1.28)}
@media(max-width:650px){#type-chart-matrix-body{padding:0}.tcmatrix-head{align-items:flex-start;flex-direction:column}.tcmatrix-legend{justify-content:flex-start}.tcmatrix-scroll{height:560px;min-height:360px;flex:none}.tcmatrix col.tc-def-col{width:42px}.tc-matrix-defense{font-size:5.8px}.tc-matrix-attack i{font-size:5.8px}}
.tpempty{display:inline-block;color:var(--amber);border:1px dashed var(--amber);border-radius:5px;padding:2px 7px;cursor:help}
.tpgap{font-family:var(--sans);font-size:11px;line-height:1.55;color:var(--dim);background:var(--panel2);
  border-left:3px solid var(--amber);border-radius:0 5px 5px 0;padding:8px 11px;cursor:help}
.tpgap b{color:var(--text)}
.tpsec{margin:16px 0 0;border-top:1px solid var(--line);padding-top:12px}
.tpsec h3{font-family:var(--sans);font-size:12px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;
  color:var(--dim);margin:0 0 9px;display:flex;align-items:center;gap:8px}
.tpnote,.tpsum,.tpchan,.tpwall,.tpholes,.tpbound{font-family:var(--mono);font-size:10.5px;color:var(--dim);line-height:1.6}
.tpnote{margin-bottom:7px}
.tpholes,.tpbound{margin-top:9px;background:var(--panel2);border-radius:5px;padding:7px 10px;cursor:help}
.tpholes b,.tpbound b{color:var(--text)}
.tpgrid{border-collapse:collapse;font-family:var(--mono);font-size:10.5px;width:100%}
.tpgrid th{text-align:left;color:var(--faint);font-weight:400;border-bottom:1px solid var(--line2);
  padding:4px 7px;white-space:nowrap;cursor:help}
.tpgrid td{padding:3px 7px;border-bottom:1px solid var(--line);white-space:nowrap}
.tpgrid tr.tphole td{background:rgba(217,164,65,.07)}
.tpat{color:var(--text)}
.tpholeflag{color:var(--amber);font-size:9.5px;border:1px solid var(--amber);border-radius:3px;padding:0 4px;margin-left:4px}
.tpm{text-align:center;cursor:help}
.tpc{color:var(--faint);text-align:right}
.tpb-wk{color:var(--loss)} .tpb-res{color:var(--win)} .tpb-imm{color:var(--cyan)} .tpb-neu{color:var(--neutral)}
.tpgrid td.tp-quad-resist{color:#b6ffdc;background:rgba(40,208,129,.22);font-weight:950;text-shadow:0 0 6px #53f3a2;box-shadow:inset 0 0 0 1px rgba(116,255,184,.4)}
.tpgrid td.tp-quad-weak{color:#ff9b8e;background:rgba(222,38,46,.23);font-weight:950;text-shadow:0 0 6px #ff5148;box-shadow:inset 0 0 0 1px rgba(255,102,92,.5)}
.tpcards{display:grid;grid-template-columns:1fr 1fr;gap:11px}
@media (max-width:900px){.tpcards{grid-template-columns:1fr}}
.tpcard{background:var(--panel2);border:1px solid var(--line);border-radius:7px;padding:10px 12px}
.tpcardh{font-family:var(--sans);font-size:11.5px;color:var(--text);margin-bottom:6px;display:flex;align-items:center;gap:7px}
.tpcvrow{margin-top:7px;display:flex;flex-wrap:wrap;gap:4px}
.tpcv{font-family:var(--mono);font-size:10px;border:1px solid var(--line2);border-radius:4px;padding:1px 5px;cursor:help}
.tpwall{margin-top:7px;border-top:1px solid var(--line);padding-top:6px}
.tpzero{font-family:var(--sans);font-size:11px;line-height:1.55;color:var(--dim);border-top:1px solid var(--line);
  padding-top:7px;margin-top:2px;cursor:help}
.tpzero b{color:var(--text)}
.tpthreat{border-collapse:collapse;table-layout:fixed;font-family:var(--mono);font-size:10.5px;font-variant-numeric:tabular-nums;width:100%}
.tpthreat th,.tpthreat td{box-sizing:border-box;vertical-align:middle}
.tpthreat th{color:var(--faint);font-weight:400;border-bottom:1px solid var(--line2);padding:4px 7px;text-align:center}
.tpthreat td{padding:3px 7px;border-bottom:1px solid var(--line);text-align:center}
.tpthreat th:first-child,.tpthreat td:first-child{color:var(--faint);width:44px;text-align:center}
.tpthreat th:nth-child(2),.tpthreat td:nth-child(2){text-align:left}
.tpthreat th:nth-child(n+3),.tpthreat td:nth-child(n+3){width:82px;text-align:center}
.tpthreat i{color:var(--faint);font-style:normal}
.tptie{color:var(--cyan);margin-left:4px;cursor:help}
.tprefuse{background:rgba(217,164,65,.09);border:1px solid var(--amber);border-radius:7px;padding:10px 12px;cursor:help}
.tprh{font-family:var(--mono);font-size:11px;color:var(--amber);margin-bottom:5px}
.tprb,.tprc{font-family:var(--sans);font-size:11px;line-height:1.55;color:var(--dim)}
.tprc{margin-top:6px;color:var(--faint)}

/* ---------- SPEED RULER `[S22]`, milestone item 4 -------------------------
   Ships to BOTH pages, because there is ONE shared stylesheet — the same
   shared-sheet effect C110 recorded: explorer.html's FILE size moves and its
   PAYLOAD does not. The `.sp*` prefix is deliberately distinct from `.tp*`
   (type panel) and `.expl*` (explorer).
   THE BAND IS MODEL AND THE TICK IS NOT (AD-40): the band bar is drawn in the
   dim MODEL colour, the engine's point in the live accent, so a reader can
   tell "a build the solver does not compute" from "the value V is solved
   with" WITHOUT hovering — the same requirement AD-15's three states carry. */
.sphdr{font-family:var(--sans);font-size:11.5px;line-height:1.6;color:var(--dim);margin-bottom:9px;cursor:help}
.sphdr b{color:var(--text)}
.sppanel{background:var(--panel2,rgba(255,255,255,.02));border:1px solid var(--line);border-radius:7px;padding:9px 11px;margin-bottom:11px}
.sprow{display:flex;gap:18px;align-items:center;flex-wrap:wrap;margin-bottom:8px}
.spgrp{display:flex;gap:7px;align-items:center}
.spgrp>b{font-family:var(--sans);font-size:9.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--faint);font-weight:600}
.sptab{border-collapse:collapse;width:100%;font-family:var(--mono);font-size:12px;font-variant-numeric:tabular-nums}
.sptab th{border-bottom:2px solid var(--line);padding:5px 7px;text-align:right;font-family:var(--sans);
          font-weight:600;font-size:10.5px;color:var(--dim);cursor:help}
.sptab th:first-child,.sptab td:first-child{text-align:left}
.sptab td{border-bottom:1px solid var(--line);padding:5px 7px;text-align:right}
.spbig{font-size:14px;font-weight:600;color:var(--cyan)}
.sprng,.sprngtxt{font-size:10px;color:var(--faint);margin-left:5px}
.sptier{color:var(--faint);font-size:10px}
.spoutsidemon{color:#ff8f82!important}
.spoutside{display:inline-block;margin-left:5px;padding:2px 4px;color:#ff9a8e;background:rgba(255,82,65,.1);
  box-shadow:inset 0 0 0 1px rgba(255,124,107,.35);font:800 6.5px/1.2 var(--mono);letter-spacing:.07em;vertical-align:middle}
.spdim{font-family:var(--sans);font-size:11px;color:var(--faint);margin-top:7px;line-height:1.55}
.spmodel{font-family:var(--sans);font-size:8.5px;letter-spacing:.06em;color:var(--faint);
         border:1px solid var(--line);border-radius:3px;padding:1px 3px;margin-left:4px}
/* the bar: dim band (MODEL), bright tick (the engine's point) */
.spbar{position:relative;display:inline-block;width:120px;height:11px;vertical-align:middle;
       border:1px solid var(--line);border-radius:2px;overflow:visible;cursor:help;background:#050b11}
.spband{position:absolute;top:1px;height:7px;background:var(--faint);opacity:.48}
.sppoint{position:absolute;z-index:3;top:-3px;width:3px;height:15px;background:var(--cyan);transform:translateX(-1px);box-shadow:0 0 6px rgba(90,176,214,.75);cursor:help}
.spbound{position:absolute;z-index:2;top:0;width:2px;height:9px;background:#d6e8f1;opacity:.8;transform:translateX(-1px);cursor:help}.spbound-hi{transform:translateX(-2px)}
.spnote{font-family:var(--sans);font-size:11px;line-height:1.65;color:var(--dim);
        background:var(--panel2,rgba(255,255,255,.02));border-left:3px solid var(--line);
        padding:8px 12px;margin-top:12px;cursor:help}
.spnote b{color:var(--text)}
/* AD-34's two refusals: visible, with their reasons, never hidden */
.spdrop{font-family:var(--sans);font-size:10.5px;line-height:1.6;color:var(--faint);
        border-top:1px solid var(--line);padding-top:7px;cursor:help}
.spdrop b{color:var(--dim)}
.spdi{display:block;margin-top:3px}
/* a LAYER refusal, rendered here — amber and framed, like .tprefuse */
.sprefuse{background:rgba(217,164,65,.09);border:1px solid var(--amber);border-radius:7px;
          padding:10px 12px;cursor:help;font-family:var(--sans);font-size:11px;line-height:1.55;color:var(--dim)}
.sprefuse b{font-family:var(--mono);color:var(--amber)}
.spctx{margin-top:6px;color:var(--faint)}

/* AD-38/AD-43 [S23] — the unverified-assumption label on a Champions-derived
   stat. It rides on .sprefuse's amber frame deliberately: a refusal and an
   assumption are both "read this before trusting the number", and giving the
   assumption its own quieter colour would have made it easier to skip. The
   only difference is weight, because this one is not an error. */
.spassume{border-style:dashed;font-weight:400}

/* The speed-tier table keeps the reference's dense, table-first anatomy while
   using the case's existing square controls, mono figures and semantic colors. */
.tdx-case .sptiersurface{margin:0 0 14px;background:rgba(5,13,34,.62);box-shadow:inset 0 0 0 1px rgba(79,195,247,.22)}
.tdx-case .sptierbar{display:flex;align-items:end;justify-content:space-between;gap:14px;padding:10px 11px;
  border-bottom:1px solid rgba(79,195,247,.22);background:rgba(79,195,247,.045)}
.tdx-case .sptierbar>div{display:flex;flex-direction:column;gap:2px}
.tdx-case .sptierbar>div>b{font-family:var(--ox);font-size:13px;letter-spacing:.08em;text-transform:uppercase;color:var(--cx-text)}
.tdx-case .sptierbar>div>span{font-family:var(--jb);font-size:8px;letter-spacing:.05em;color:var(--cx-ter)}
.tdx-case .sptierbar label{display:flex;flex-direction:column;gap:3px;min-width:220px}
.tdx-case .sptierbar label>span{font-family:var(--jb);font-size:7.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--cx-ter)}
.tdx-case .sptierbar input{width:100%;min-height:29px;border-radius:0;border:1px solid rgba(79,195,247,.24);
  background:#050b16;color:var(--cx-text);font:600 9.5px/1.2 var(--jb);padding:6px 8px;outline:none}
.tdx-case .sptierbar input:focus{border-color:var(--cx-cyan);box-shadow:0 0 0 2px rgba(79,195,247,.12)}
.tdx-case .sptierlegend{display:flex;align-items:center;gap:6px;padding:7px 10px;border-bottom:1px solid rgba(79,195,247,.15);
  font:700 7.5px/1.2 var(--jb);letter-spacing:.05em;text-transform:uppercase;color:var(--cx-sec)}
.tdx-case .sptierlegend span{padding:3px 5px;border:1px solid currentColor;background:rgba(255,255,255,.025)}
.tdx-case .sptierlegend .before{color:var(--cx-pass)}
.tdx-case .sptierlegend .tie{color:var(--cx-model)}
.tdx-case .sptierlegend .after{color:var(--cx-opp)}
.tdx-case .sptierlegend>b{margin-left:auto;color:var(--cx-cyantx);font:700 7.5px/1.2 var(--jb)}
.tdx-case .sptierscroll{max-height:450px;overflow:auto;scrollbar-gutter:stable}
.tdx-case .sptiertable{width:100%;min-width:625px;border-collapse:collapse;table-layout:fixed;font-family:var(--jb);font-variant-numeric:tabular-nums}
.tdx-case .sptiertable th{position:sticky;top:0;z-index:3;padding:7px 8px;background:#0a1524;border-bottom:1px solid rgba(79,195,247,.3);
  color:var(--cx-sec);font:700 8px/1.2 var(--jb);letter-spacing:.07em;text-transform:uppercase;text-align:left}
.tdx-case .sptiertable th:nth-child(1){width:32%}.tdx-case .sptiertable th:nth-child(2){width:64px}
.tdx-case .sptiertable th:nth-child(3){width:28%}.tdx-case .sptiertable th:nth-child(4){width:auto}
.tdx-case .sptiertable td{padding:8px;border-bottom:1px solid rgba(79,195,247,.12);vertical-align:middle;background:rgba(5,11,22,.38)}
.tdx-case .sptiertable tr:nth-child(even) td{background:rgba(13,26,44,.42)}
.tdx-case .sptierbase{text-align:center}.tdx-case .sptierbase>b{display:block;color:var(--cx-text);font-size:16px;line-height:1}
.tdx-case .sptierbase>span{display:block;margin-top:4px;color:var(--cx-ter);font-size:7px;text-transform:uppercase}
.tdx-case .sptiernames{display:grid;gap:3px;align-items:center}
.tdx-case .sptiernames span{padding:3px 5px;background:rgba(79,195,247,.055);box-shadow:inset 0 0 0 1px rgba(79,195,247,.14);
  color:var(--cx-body);font-size:8px;line-height:1.25}
.tdx-case .sptiernames i{font-style:normal;color:var(--cx-ter);font-size:7.5px}
.tdx-case .spmon{display:flex;align-items:center;gap:7px;min-width:0;text-align:left}
.tdx-case .spmon img{flex:none;width:32px;height:32px;object-fit:contain;background:none;border:0}
.tdx-case .spmon b{min-width:0;color:var(--cx-text);font:800 10px/1.25 var(--jb);overflow-wrap:anywhere}
.tdx-case .sptiernames .spmon{padding:2px 4px;background:none;box-shadow:none}
.tdx-case .sptab .spmon{min-width:110px}.tdx-case .sptab .spmon img{width:36px;height:36px}
.tdx-case .sptierstats{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);gap:3px}
.tdx-case .sptierstats span{display:flex;flex-direction:column;align-items:center;gap:2px;padding:4px 2px;background:#050b16;
  box-shadow:inset 0 0 0 1px rgba(79,195,247,.14);cursor:help}
.tdx-case .sptierstats i{font-style:normal;color:var(--cx-ter);font-size:6.5px;line-height:1}
.tdx-case .sptierstats b{color:var(--cx-text);font-size:10px;line-height:1.1}
.tdx-case .sptierouts{display:flex;flex-wrap:wrap;align-items:center;gap:3px}
.tdx-case .sptierout{display:inline-grid;grid-template-columns:minmax(0,max-content) 8px max-content;align-items:center;gap:3px;
  width:auto;max-width:100%;padding:2px 4px;background:transparent;border:1px solid currentColor;cursor:help;font-size:7px;line-height:1}
.tdx-case .sptierout b{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:currentColor;font-size:7.5px}
.tdx-case .sptierout em{font-style:normal;font-size:7px;font-weight:700;color:currentColor}
.tdx-case .sptierout small{font:700 6.5px/1 var(--mono);color:currentColor;opacity:.78}
.tdx-case .sptierout.before{color:var(--cx-pass)}.tdx-case .sptierout.tie{color:var(--cx-model)}.tdx-case .sptierout.after{color:var(--cx-opp)}
.tdx-case .sptierout.outside{border-style:dashed}
.tdx-case .spsectionhead{display:flex;align-items:baseline;gap:9px;margin:2px 0 8px;padding:7px 0;border-bottom:1px solid rgba(79,195,247,.18)}
.tdx-case .spsectionhead b{font-family:var(--ox);font-size:11px;letter-spacing:.07em;text-transform:uppercase;color:var(--cx-text)}
.tdx-case .spsectionhead span{font:500 8.5px/1.35 var(--jb);color:var(--cx-ter)}

.tdx-case .spfield{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:10px 0 1px}
.tdx-case .spfieldcol{display:flex;flex-direction:column;gap:5px;min-width:0}
.tdx-case .spfieldcol>b{font:700 8px/1.2 var(--jb);letter-spacing:.08em;text-transform:uppercase;color:var(--cx-sec)}
.tdx-case .spfieldcol .seg{display:grid;grid-template-columns:1fr 1fr;width:100%}
.tdx-case .spfieldcol .seg button{min-width:0;padding:6px 4px;font-size:8px;text-transform:capitalize}
.tdx-case .spfieldboth{grid-column:1/-1;grid-row:2}
.tdx-case .spfieldboth .spweather{grid-template-columns:repeat(4,1fr)}
.tdx-case .spfieldwide,.tdx-case .spfieldclear{width:100%;border:1px solid rgba(79,195,247,.22);border-radius:0;
  background:#050b16;color:var(--cx-sec);padding:6px;font:700 8px/1.2 var(--jb);cursor:pointer}
.tdx-case .spfieldwide:hover,.tdx-case .spfieldclear:hover{color:var(--cx-text);border-color:rgba(79,195,247,.42)}
.tdx-case .spfieldwide.on,.tdx-case .spfieldclear.on{color:var(--cx-cyantx);background:rgba(79,195,247,.14);border-color:var(--cx-cyan)}
.tdx-case .spfieldclear{color:var(--cx-ter);padding:4px}
.tdx-case .spfieldstate{grid-column:1/-1;padding:7px 8px;background:rgba(79,195,247,.055);box-shadow:inset 0 0 0 1px rgba(79,195,247,.16);
  color:var(--cx-sec);font:600 8px/1.45 var(--jb);text-transform:uppercase}
.tdx-case .spfieldstate b{color:var(--cx-cyantx);margin-right:5px}
.tdx-case .spfieldcompare{grid-column:1/-1;display:grid;gap:7px}
.tdx-case .spfieldrow{display:grid;grid-template-columns:105px minmax(0,1fr);align-items:center;gap:8px}
.tdx-case .spfieldrow>b,.tdx-case .spstagerow>b{color:var(--cx-sec);font:700 8px/1.2 var(--jb);letter-spacing:.07em;text-transform:uppercase}
.tdx-case .spfieldrow>span{display:grid;grid-template-columns:1fr 1fr;gap:4px}
.tdx-case .spfieldrow .spoptionbtn{min-height:27px;padding:5px 4px;font-size:8px}
.tdx-case .spstagerow{display:grid;grid-template-columns:105px minmax(0,1fr);align-items:center;gap:8px;padding-top:2px}
.tdx-case .spstagerow>div{display:grid;grid-template-columns:1fr 1fr;gap:4px}
.tdx-case .spstage{display:grid;gap:3px;min-width:0}
.tdx-case .spstage>b{color:var(--cx-ter);font:700 7px/1.1 var(--jb);text-transform:uppercase}
.tdx-case .spstagebuttons{display:grid;grid-template-columns:27px 1fr 27px;min-height:26px;background:#050b16;box-shadow:inset 0 0 0 1px rgba(79,195,247,.22)}
.tdx-case .spstagebuttons button{border:0;background:rgba(79,195,247,.07);color:var(--cx-cyantx);font:900 12px/1 var(--jb);cursor:pointer}
.tdx-case .spstagebuttons button:disabled{opacity:.3;cursor:not-allowed}
.tdx-case .spstagebuttons output{display:grid;place-items:center;color:var(--cx-text);font:800 10px/1 var(--jb)}

/* Speed-page hierarchy: a vertical Team ruler on the left, the dataset in the
   center, and independent opponent setup on the right. */
.speed-case .spteamscale{display:flex;justify-content:space-between;gap:7px;margin:3px 0 12px;color:var(--cx-sec);font:600 8px var(--jb)}
.speed-case .spteamlist{display:grid;grid-template-columns:repeat(var(--speed-members),minmax(0,1fr));gap:5px;min-width:0;border-bottom:1px solid rgba(79,195,247,.2);padding-bottom:9px}
.speed-case .spteamrow{display:grid;grid-template-rows:32px 190px 66px auto 19px;align-items:start;justify-items:center;gap:8px;min-width:0;text-align:center}
.speed-case .spteamchoose{width:100%;min-width:0;border:0;background:none;padding:0;cursor:pointer}
.speed-case .spteamchoose:hover .spmon b{color:var(--cx-cyan)}
.speed-case .spteamchoose .spmon{display:flex;flex-direction:column;gap:3px;text-align:center}
.speed-case .spteamchoose .spmon img{width:34px;height:34px;max-width:100%}
.speed-case .spteamchoose .spmon b{width:100%;font-size:8px;line-height:1.25;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.speed-case .spteamchoose .spoutside{display:block;font-size:5px;margin:2px 0 0;line-height:1.2}
.speed-case .spteameffective{display:grid;gap:3px;text-align:center;color:var(--cx-cyantx)}
.speed-case .spteameffective small{font:600 6px var(--jb);text-transform:uppercase;color:var(--cx-sec)}
.speed-case .spteameffective b{font:800 16px/1 var(--jb);font-variant-numeric:tabular-nums}
.speed-case .spteamremove{width:17px;height:19px;padding:0;border:1px solid rgba(255,124,107,.25);background:none;color:var(--cx-opp);cursor:pointer}
.speed-case .spteamremove:disabled{opacity:.25;cursor:default}
.speed-case .spteamvalues{display:grid;gap:5px;min-width:0;color:var(--cx-sec);font:500 6.5px/1.4 var(--jb)}
.speed-case .spteamvalues b{color:var(--cx-text);font-size:8px;font-weight:800;font-variant-numeric:tabular-nums}
.speed-case .spteamvalues>span:last-child b{display:block}
.speed-case .spteamruler{display:flex;justify-content:center;width:100%;height:190px;padding:0 4px}
.speed-case .spteamruler .spbar-vertical{width:22px;max-width:100%;height:100%;background:repeating-linear-gradient(to top,transparent 0,transparent calc(25% - 1px),rgba(79,195,247,.12) calc(25% - 1px),rgba(79,195,247,.12) 25%),#050b11}
.speed-case .spbar-vertical .spband{top:auto;left:1px;width:calc(100% - 2px)}
.speed-case .spbar-vertical .spbound{top:auto;left:0;width:100%;height:2px;transform:translateY(1px)}
.speed-case .spbar-vertical .sppoint{top:auto;left:-3px;width:calc(100% + 6px);height:3px;transform:translateY(1px)}
.speed-case .spteamadd{width:100%;margin-top:8px;padding:7px;border:1px dashed rgba(79,195,247,.3);background:transparent;color:var(--cx-cyantx);font:700 9px var(--jb);cursor:pointer}
.speed-case .spteamadd:hover{background:rgba(79,195,247,.08)}
.speed-case .spassume{margin-top:9px;padding:6px 8px;font-size:9px}
.speed-case .spassume summary{cursor:pointer}
.speed-case .spassume p{margin:7px 0 0}
.speed-case #speed-my-options-body{padding-top:10px}
.speed-case .spsidechoices{display:grid;grid-template-columns:1fr 1fr;gap:5px}
.speed-case .spfieldboth{grid-row:auto}
.speed-case .spfieldreset{grid-column:1/-1}
.speed-case .spmultiplier{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:9px;padding:9px;background:rgba(79,195,247,.06);border:1px solid rgba(79,195,247,.24)}
.speed-case .spmultiplier span{color:var(--cx-sec);font:700 8px var(--jb);text-transform:uppercase}
.speed-case .spmultiplier b{color:var(--cx-cyantx);font:800 20px var(--jb);font-variant-numeric:tabular-nums}
.tdx-case.speed-case #speed-tiers{display:flex;flex-direction:column;flex:1;min-height:0;padding:1.5px;margin:0}
.tdx-case.speed-case .speed-console-head{flex:none;padding:9px 11px;border-bottom:1px solid rgba(79,195,247,.22);background:var(--cx-panel)}
.tdx-case.speed-case .speed-console-head h2{margin:0;color:var(--cx-text);font:800 11px/1.3 var(--ox);letter-spacing:.07em}
.tdx-case.speed-case #speed-tiers-body{display:flex;flex-direction:column;flex:1;min-height:0;padding:0;margin:0;overflow:hidden}
.tdx-case.speed-case .sptiersurface{display:flex;flex-direction:column;flex:1;min-height:0;margin:0;background:transparent;box-shadow:none}
.tdx-case.speed-case .sptierbar{flex:none;align-items:center;gap:10px;padding:8px 10px;background:transparent}
.tdx-case.speed-case .sptierbar>div{min-width:0;flex:1}
.tdx-case.speed-case .sptierbar label{min-width:0;width:40%;max-width:240px}
.tdx-case.speed-case .sptierscroll{flex:1;min-height:0;max-height:none;overflow-y:auto;overflow-x:hidden;scrollbar-width:thin;scrollbar-gutter:auto;scrollbar-color:rgba(79,195,247,.42) transparent}
.tdx-case.speed-case .sptiertable{min-width:0;width:100%;margin:0}
.tdx-case.speed-case .sptiertable th:nth-child(1){width:31%}
.tdx-case.speed-case .sptiertable th:nth-child(2){width:10%}
.tdx-case.speed-case .sptiertable th:nth-child(3){width:28%}
.tdx-case.speed-case .sptiertable th:nth-child(4){width:31%}
.tdx-case.speed-case .sptiertable th,.tdx-case.speed-case .sptiertable td{padding:7px 6px;overflow-wrap:anywhere;white-space:normal}
.tdx-case.speed-case .sptiertable .sptierteamhead{color:var(--cx-model)}
.tdx-case.speed-case .sptierout{display:inline-flex;max-width:100%;padding:4px 5px}
.tdx-case.speed-case .sptierout b{white-space:normal;overflow-wrap:anywhere;font-size:8px;line-height:1.2}
.tdx-case.speed-case .sptierstats i{text-align:center;line-height:1.2}
@media(min-width:701px){.tdx-case.speed-case .col-centre{overflow:hidden;scrollbar-gutter:auto}}
@media(max-width:700px){
  .tdx-case.speed-case #speed-tiers{height:80dvh;min-height:420px}
  .tdx-case.speed-case .sptiertable th,.tdx-case.speed-case .sptiertable td{padding:7px 3px}
  .tdx-case.speed-case .sptiertable th{font-size:7px;letter-spacing:0}
  .tdx-case.speed-case .sptiernames .spmon{flex-direction:column;gap:2px;text-align:center;padding:2px 0}
  .tdx-case.speed-case .sptiernames .spmon b{font-size:8px}
  .tdx-case.speed-case .sptierbase>b{font-size:13px}
  .tdx-case.speed-case .sptierstats{gap:2px}
  .tdx-case.speed-case .sptierstats i{font-size:5.5px}
  .tdx-case.speed-case .sptierstats b{font-size:9px}
  .tdx-case.speed-case .sptierout{padding:3px}
  .tdx-case.speed-case .sptierout b{font-size:7px}
}
.tdx-case .sptiersurface{margin-bottom:0}
.tdx-case #speed-team-options-body{padding-top:0;border-top:0}
.tdx-case .speed-about-legend{margin:9px 0 0;padding:7px 0;border-top:1px solid rgba(79,195,247,.15);border-bottom:0;flex-wrap:wrap}
.tdx-case .speed-about-legend>b{margin-left:0;order:-1;flex:0 0 100%}
.tdx-case .spteamoptions{min-width:0}
.tdx-case .spteamoptions .spsectionhead{display:block;margin:0 0 8px;padding:7px 0 6px}
.tdx-case .spteamoptions .spsectionhead b,.tdx-case .spteamoptions .spsectionhead span{display:block}
.tdx-case .spteamoptions .spsectionhead span{margin-top:3px}
.tdx-case .spoptiongrid{display:grid;gap:8px}
.tdx-case .spoptionrow{display:flex;flex-direction:column;align-items:stretch;gap:4px;margin:0}
.tdx-case .spoptionrow>b{font:700 8px/1.2 var(--jb);letter-spacing:.09em;text-transform:uppercase;color:var(--cx-sec)}
.tdx-case .spteamoptions .seg{display:grid;width:100%}
.tdx-case .spteamoptions .spchoice3{grid-template-columns:repeat(3,minmax(0,1fr))}
.tdx-case .spoptionbtn{appearance:none;width:100%;min-height:28px;border:1px solid rgba(79,195,247,.22);border-radius:0;
  background:#050b16;color:var(--cx-ter);padding:6px 8px;font:700 8.5px/1.2 var(--jb);letter-spacing:.025em;cursor:pointer}
.tdx-case .spoptionbtn:hover{color:var(--cx-text);border-color:rgba(79,195,247,.45);background:rgba(79,195,247,.08)}
.tdx-case .spoptionbtn.on,.tdx-case .spoptionbtn[aria-pressed="true"]{color:var(--cx-cyantx);border-color:var(--cx-cyan);background:rgba(79,195,247,.16);box-shadow:inset 3px 0 0 var(--cx-cyan)}
.tdx-case .spoptionbtn:disabled{opacity:.42;cursor:not-allowed;text-decoration:line-through}
.tdx-case .spresetbtn{color:var(--cx-sec);border-color:rgba(255,124,107,.26)}
.tdx-case .spresetbtn:hover{color:var(--cx-opp);border-color:var(--cx-opp);background:rgba(255,124,107,.08)}
.tdx-case .spcomparisoncontrols{margin:0;display:block}
.tdx-case .spcomparisoncontrols .spgrp{display:flex;flex-direction:column;align-items:stretch;gap:5px}
.tdx-case .spcomparisoncontrols .seg{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));width:100%}

.tdx-case .tpdefscore{font-weight:800;text-align:center}.tdx-case .tpdefscore.exposed{color:var(--cx-opp)}
.tdx-case .tpdefscore.covered{color:var(--cx-pass)}.tdx-case .tpdefscore.even{color:var(--cx-model)}
.tdx-case #type-profile-body,.tdx-case #type-coverage-body,.tdx-case #type-threat-type-body,.tdx-case #type-threat-species-body{min-width:0;overflow-x:auto}
.tdx-case #type-profile-body .tphead{margin-bottom:10px}
.tdx-case #type-coverage-body .tpcards{margin:0}

/* ==========================================================================
   [S25] AD-53 / AD-54 — the two new pages.

   ONE SHARED SHEET, so these rules ship to ALL FOUR artifacts. That is the
   C110 shared-sheet effect, recorded there and unchanged here: index.html and
   explorer.html gain these bytes in their FILE size while their PAYLOAD is
   untouched, because the payload is the assembled script and this is not in it.
   Per-surface prefixes (.tp* type panel, .sp* speed panel) are the house
   convention, so the new surface takes .td*.
   ========================================================================== */

/* the boot-note provenance chips. `.prov` was styled ONLY under `.dsbar`, so
   explorer.html's boot note has rendered as unstyled text since S19 and the two
   new pages would have inherited that. One rule fixes all three. This DOES
   change explorer.html's appearance — deliberately, and it is the only visual
   change to a pre-existing page in this item. */
.topstats .prov{font-family:var(--mono);font-size:9px;color:var(--faint);cursor:help;
                border:1px solid var(--line);border-radius:5px;padding:3px 7px;white-space:nowrap}

/* --- type damage distribution (types.html) --- */
.tdctl{display:flex;flex-direction:column;gap:9px;margin-bottom:13px}
.tdrow{display:flex;flex-wrap:wrap;gap:5px;align-items:center}
.tdlbl{font-family:var(--mono);font-size:9px;letter-spacing:0.05em;color:var(--faint);
       text-transform:uppercase;cursor:help;margin-right:5px;min-width:62px}
.tdrow-attacking,.tdrow-against{display:grid;grid-template-columns:62px minmax(0,1fr);align-items:start;gap:6px 5px}
.tdrow-attacking .tdlbl,.tdrow-against .tdlbl{margin-right:0;padding-top:5px}
.tdattack-choices{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px}
.tdagainst-choices{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:5px}
.tdattack-choices .tdchip,.tdagainst-choices .tdtab{width:100%;min-width:0;padding-left:4px;padding-right:4px}
.tdclear{grid-column:2;justify-self:end}
.tdchip,.tdtab{font-family:var(--mono);font-size:10.5px;color:var(--dim);cursor:pointer;
               background:var(--panel2);border:1px solid var(--line);border-radius:5px;padding:4px 9px}
.tdchip:hover,.tdtab:hover{border-color:var(--line2);color:var(--text)}
.tdchip.on{background:rgba(90,176,214,.14);border-color:var(--cyan);color:var(--cyan)}
.tdtab.on{background:rgba(90,176,214,.10);border-color:var(--cyan);color:var(--cyan)}

.tdresultgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;font-family:var(--mono);font-variant-numeric:tabular-nums}
.tdresultcol{min-width:0;background:rgba(7,17,30,.86);border:1px solid var(--line);border-top-width:3px;cursor:help}
.tdresultcol>header{display:grid;grid-template-columns:auto minmax(0,1fr);gap:2px 7px;align-items:center;padding:7px 8px;background:rgba(255,255,255,.025);border-bottom:1px solid var(--line)}
.tdresultcol>header b{grid-row:1/3;color:var(--text);font-size:18px;line-height:1}
.tdresultcol>header span{color:var(--text);font-size:8.5px;font-weight:800;text-transform:uppercase}
.tdresultcol>header em{color:var(--faint);font-size:8px;font-style:normal}
.tdresultcol.b-immune{border-top-color:var(--neutral)}
.tdresultcol.b-resist{border-top-color:var(--win)}
.tdresultcol.b-neutral{border-top-color:var(--line2)}
.tdresultcol.b-weak{border-top-color:var(--amber)}
.tdtargettypes{display:flex;flex-wrap:wrap;align-content:flex-start;gap:5px;padding:7px}
.tdtarget{display:inline-flex;flex-wrap:nowrap;gap:2px;min-width:0}
.tdtarget .typebadge{padding:3px 5px;font-size:8px}

/* `[S25]` — the page nav at the top of every artifact. `.navout` on its own is
   a bottom-margined row of links; `.navtop` adds the gap and the wrap that make
   three of them read as a nav bar rather than as a stray link. Flex + wrap so a
   narrow viewport stacks them instead of overflowing, which is the rule the
   rest of this sheet already follows. */
.navout.navtop{display:flex;flex-wrap:wrap;gap:7px;margin:0 0 16px}
.navout a{margin-right:7px}
.navout.navtop a{margin-right:0}

/* `[S25]` — the shared engine-free page controls (src/ui/page-controls.js), on
   speed.html and types.html. `.pc*` keeps the per-surface prefix convention. */
.pcbar{display:flex;flex-wrap:wrap;gap:16px;align-items:flex-start;margin:0 0 14px;
       background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:11px 13px}
.pcgrp{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.pclbl{font-family:var(--mono);font-size:9px;letter-spacing:0.05em;color:var(--faint);
       text-transform:uppercase;cursor:help;margin-right:3px}
.pcslot{display:flex;align-items:center;gap:3px}
.pcx,.pcadd{font-family:var(--mono);font-size:10.5px;color:var(--dim);cursor:pointer;
            background:var(--panel2);border:1px solid var(--line);border-radius:5px;padding:3px 8px}
.pcx:hover{border-color:var(--loss);color:var(--loss)}
.pcadd:hover{border-color:var(--cyan);color:var(--cyan)}
/* the dropped-picks disclosure — amber like every other "read this before
   trusting the number" note, but unframed: a dropped pick is a stated
   consequence of a dataset change, not a refusal. */
.pcdrop{font-family:var(--mono);font-size:10px;color:var(--amber);cursor:help;
        flex-basis:100%;margin-top:2px}
.pcmissingname,.pcslot.unavailable select,.pickrow.unavailable select{color:#ff7c6b!important}
.pcunavailable{display:block;color:#ff9a8e;font:800 7px/1.2 var(--mono);letter-spacing:.08em;text-transform:uppercase}

/* ---- preset pools [S26] ----------------------------------------------------
   Lives beside the predicate, because a preset IS a filter set and the two must
   read as one control rather than as a mode and its consequence. A disabled
   preset keeps its place in the row: hiding it would leave the user unable to
   tell "this dataset cannot express it" from "this build lacks it". */
.explpresets { display:flex; align-items:center; gap:6px; flex-wrap:wrap; margin:6px 0 4px; }
.explpresets .statlab { margin-right:2px; }
.gbtn.off, .gbtn[disabled] { opacity:.42; cursor:not-allowed; text-decoration:line-through; }

/* ---- the query builder (`[S30]`, rulings 4 and 5) --------------------------
   ONE SHARED STYLESHEET again (C110): these rules ship to all five pages while
   only explorer.html uses them, which is why the other four FILE sizes move
   here and their PAYLOADS do not.

   IT REUSES THE EXISTING VOCABULARY — `.idet`, `.gbtn`, `.statlab`, `.fchip2`'s
   pill shape — rather than inventing a second one. THE BUILDER MUST WRAP AND
   MUST NOT PUSH THE STATISTICS PANE OFF-SCREEN: `flex-wrap` on every row and no
   fixed width anywhere, because S29's defect B was exactly a pane sized for
   content it stopped holding, and the layout witness now grades all three
   widths with this panel open. */
.qbuild{flex:1 1 100%;margin:4px 0 2px}
.qbody{display:flex;flex-direction:column;gap:8px;padding:8px 2px 2px}
.qgroups{display:flex;flex-direction:column;gap:4px}
.qgroup{display:flex;align-items:center;gap:6px;flex-wrap:wrap;padding:5px 8px;border:1px dashed var(--line2);border-radius:7px;background:transparent}
.qgroup.on{border-style:solid;background:var(--panel2)}
.qgroup.neg{border-color:var(--amber)}
.qgsel,.qgnot,.qgdel,.qnot,.qdel{font-family:var(--mono);font-size:10px;padding:2px 8px;border-radius:999px;border:1px solid var(--line2);background:transparent;color:var(--faint);cursor:pointer}
.qgsel.on{color:var(--cyan);border-color:var(--cyan)}
.qgnot.on{color:var(--amber);border-color:var(--amber)}
.qnot.on{color:var(--amber);border-color:var(--amber)}
.qdel{padding:2px 6px;color:var(--faint)}
.qdel:hover{color:var(--loss);border-color:var(--loss)}
.qgdel{color:var(--faint)}
.qgkeep{font-family:var(--mono);font-size:10px;color:var(--line2);padding:2px 6px;cursor:help}
.qcond{display:inline-flex;align-items:center;gap:5px;font-family:var(--mono);font-size:10.5px;color:var(--dim);background:var(--panel2);border:1px solid var(--line2);border-radius:999px;padding:2px 6px 2px 10px}
.qcond.neg{border-color:var(--amber)}
.qcondtxt{white-space:normal;overflow-wrap:anywhere}
.qop,.qor{font-family:var(--mono);font-size:9.5px;color:var(--faint);letter-spacing:.08em}
.qor{padding:1px 0 1px 12px;cursor:help}
.qempty{font-family:var(--mono);font-size:10.5px;color:var(--faint);font-style:italic;cursor:help}
.qadd{display:flex;gap:6px}
.qcompose{display:grid;gap:6px;padding:8px;border:1px solid var(--line2);background:var(--panel2)}
.qctitle{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;font-family:var(--mono)}
.qctitle b{color:var(--cyan);font-size:10px;text-transform:uppercase;letter-spacing:.06em}
.qctitle span{color:var(--faint);font-size:9px}
.qcline{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.qcline select,.qcline input{min-height:27px;padding:3px 6px;border:1px solid var(--line2);border-radius:4px;background:var(--bg);color:var(--text);font:600 10px/1.2 var(--mono)}
.qccol{min-width:126px}.qcop{min-width:112px}.qcnum{width:86px}.qctext{min-width:150px}.qcbool{min-width:74px}.qcpick{max-width:180px}
.qcto{color:var(--faint);font:700 9px/1 var(--mono);text-transform:uppercase}
.qcvalues{display:flex;align-items:center;gap:4px;flex-wrap:wrap}
.qcvalue{display:inline-flex;align-items:center;gap:4px;padding:2px 4px 2px 7px;border:1px solid var(--line2);border-radius:999px;color:var(--dim);font:600 9px/1 var(--mono)}
.qcvalue button{border:0;background:transparent;color:var(--faint);padding:0 2px;cursor:pointer;font:700 11px/1 var(--mono)}
.qcnone{color:var(--faint);font:italic 9px/1.2 var(--mono)}
.qcommit{margin-left:auto}
.qprune{display:flex;align-items:center;gap:7px;flex-wrap:wrap;padding-top:6px;border-top:1px solid var(--line2)}
.qpcol,.qpk{font-family:var(--mono);font-size:10.5px;background:var(--panel2);color:var(--dim);border:1px solid var(--line2);border-radius:5px;padding:2px 6px}
.qpk{width:64px}
.qpk:disabled{opacity:.4}
.qpread{font-family:var(--mono);font-size:10.5px;color:var(--dim);cursor:help}
.qpread.none{color:var(--faint);font-style:italic}
.qptiers{display:flex;gap:5px;flex-wrap:wrap;cursor:help}
.qptier{font-family:var(--mono);font-size:9.5px;color:var(--faint);border:1px solid var(--line2);border-radius:4px;padding:1px 5px}
/* CONVENTION E's sentence, rendered in full and allowed to wrap — it is the
   trap this feature carries and a truncated disclosure discloses nothing */
.qpdisc{font-family:var(--mono);font-size:10px;line-height:1.55;color:var(--faint);white-space:normal;overflow-wrap:anywhere;border-left:2px solid var(--amber);padding:5px 0 5px 9px;cursor:help}

/* ---- the two-mon damage calculator (`[S27]`, AD-59/D115) -------------------
   ONE SHARED STYLESHEET, so these rules ship to every page while only
   damage.html uses them — the C110 shared-sheet effect, which is why the other
   four artifacts' FILE sizes move here and their PAYLOADS do not. Reuses the
   existing `.seg`, `.tag`, `.panel`, `.pdet` and `.prov` vocabulary rather than
   inventing a second one; only the calculator-specific pieces are new. */
.dmgctl{display:flex;flex-direction:column;gap:9px;margin-bottom:13px}
.dmgcards{display:grid;grid-template-columns:1fr 1fr;gap:11px}
@media (max-width:900px){.dmgcards{grid-template-columns:1fr}}
.dmgcard{background:var(--panel2);border:1px solid var(--line);border-radius:7px;padding:10px 12px;
  display:flex;flex-direction:column;gap:7px}
.dmgcardh{font-family:var(--sans);font-size:9.5px;font-weight:600;letter-spacing:.07em;text-transform:uppercase;
  color:var(--faint)}
.dmgrow{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.dmglbl{font-family:var(--mono);font-size:9px;letter-spacing:0.05em;color:var(--faint);
  text-transform:uppercase;cursor:help;min-width:52px}
.dmgnum{font-family:var(--mono);font-size:11px;background:var(--bg);color:var(--text);
  border:1px solid var(--line);border-radius:5px;padding:3px 6px;width:82px}
.dmgwhy{font-family:var(--sans);font-size:10.5px;color:var(--amber);line-height:1.5;flex:1 1 100%;cursor:help}
/* the selected matchup stays visible beside the result, so a result never
   becomes an anonymous row of numbers after the input column is scrolled. */
.dmgmatch{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;flex-wrap:wrap;
  margin:2px 0 10px;padding:8px 10px;background:rgba(79,195,247,.055);border-left:2px solid var(--cyan)}
.dmgmatch-main{display:flex;align-items:baseline;gap:6px;flex-wrap:wrap;font-family:var(--sans);font-size:11px;color:var(--dim)}
.dmgmatch-main b{color:var(--text);font-weight:600}.dmgmatch-main b:nth-of-type(2){color:var(--cyan)}
.dmgmatch-meta{display:flex;gap:4px;flex-wrap:wrap}
.dmgmatch-meta span{font-family:var(--mono);font-size:8.5px;letter-spacing:.04em;text-transform:uppercase;
  color:var(--dim);background:var(--panel2);border:1px solid var(--line);padding:2px 5px}
/* the headline: labelled values make the range, percent, average and KO line
   scannable without relying on order or tooltip-only explanation. */
.dmghead{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;margin:4px 0 9px}
.dmgmetric{min-width:0;display:flex;flex-direction:column;gap:2px;padding:7px 8px;background:var(--panel2);
  border:1px solid var(--line)}
.dmgmetric small{font-family:var(--mono);font-size:8px;letter-spacing:.07em;text-transform:uppercase;color:var(--faint)}
.dmgmetric-ko{grid-column:1/-1;flex-direction:row;align-items:baseline;justify-content:space-between;gap:10px}
.dmgbig{font-family:var(--mono);font-size:23px;font-weight:600;color:var(--cyan);cursor:help;
  font-variant-numeric:tabular-nums}
.dmgpct{font-family:var(--mono);font-size:13px;color:var(--text);cursor:help;font-variant-numeric:tabular-nums}
.dmgavg{font-family:var(--mono);font-size:12px;color:var(--dim);cursor:help;font-variant-numeric:tabular-nums}
.dmgko{font-family:var(--sans);font-size:12.5px;font-weight:600;color:var(--amber);cursor:help;text-align:right}
/* the sixteen. The two ends are marked so the range above can be read off the
   row itself rather than trusted — a reader can count them. */
.dmgrolls{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:11px;cursor:help}
.dmgroll{font-family:var(--mono);font-size:11px;color:var(--dim);background:var(--panel2);
  border:1px solid var(--line);border-radius:4px;padding:2px 6px;cursor:help;font-variant-numeric:tabular-nums}
.dmgroll.lo{border-color:var(--line2);color:var(--text)}
.dmgroll.hi{border-color:var(--cyan);color:var(--cyan)}
.dmgsteps{font-family:var(--mono);font-size:10.5px;line-height:1.75;color:var(--dim);
  background:var(--panel2);border-radius:6px;padding:9px 12px;cursor:help;overflow-x:auto}
.dmgsteps b{color:var(--text)}
.dmgcite{color:var(--cyan);cursor:help;border-bottom:1px dotted var(--cyan)}
.dmgnote{font-family:var(--sans);font-size:11px;line-height:1.65;color:var(--dim);
  border-top:1px solid var(--line);margin-top:12px;padding-top:9px}
.dmgnote b{color:var(--text)}
/* THE REFUSAL IS AMBER AND FRAMED, distinguishable WITHOUT hovering — the same
   shape .tprefuse and .sprefuse carry, deliberately identical so a reader who
   has met one on another page recognises this one. */
.dmgrefuse{background:rgba(217,164,65,.09);border:1px solid var(--amber);border-radius:7px;
  padding:10px 12px;font-family:var(--sans);font-size:11.5px;line-height:1.6;color:var(--dim);cursor:help}
.dmgrefuse b{font-family:var(--mono);color:var(--amber)}
/* the independence note, on BOTH damage.html and index.html from one string */
.dmgindep{display:block;margin-top:4px}

/* ==== THE HARDWARE CASE (`[S33]`, handoff-v2) ===============================
   The engine page's chrome, EVERY rule scoped under .tdx-case / #case-root — a
   class only src/markup.html sets — so the four other pages, which share this
   one stylesheet, render exactly as before (their FILE sizes move, the C110
   shared-sheet effect; their behaviour and look do not). Values are ported to
   the pixel from handoff-v2/DESIGN-SPEC.md and the mock's own inline styles:
   the three chamfer scales (44/34/28 top, 18/12/10 bottom), the ONE shear
   angle (68px over 53px), outlines as inset box-shadow NEVER border (insets
   survive clip-path), no border-radius on data panels.

   THE FONTS ARE VENDORED, SAME-ORIGIN (assets/fonts/, manifest + OFL licences
   beside the files — the docs/dex_snapshot discipline). Zero third-party
   requests at runtime (D41/D57): these @font-face rules name files this repo
   ships. They are declared here for every page but REFERENCED only under
   .tdx-case, so the other four pages never fetch them; those pages' IBM Plex
   stack (named, never shipped, silently falling back — the standing defect) is
   deliberately untouched, because their look must not move this session. */
@font-face{font-family:'Oxanium';font-style:normal;font-weight:400 800;font-display:swap;
  src:url(/assets/fonts/oxanium-latin-wght-400-800.woff2) format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:400 700;font-display:swap;
  src:url(/assets/fonts/jetbrains-mono-latin-wght-400-700.woff2) format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}

/* the case's own tokens — the DESIGN-SPEC colour-as-type system. Scoped: they
   exist only inside the case and cannot leak into another page's cascade. */
.tdx-case{
  /* --cx-screen `[S35]`: ~~#04070e~~ -> #08111c, the dark blue the author asked
     for. Kept below the panel fill's darkest stop (#081120) so the boxes still
     read as raised; see .case-screen for the full reasoning and the grid. */
  --cx-screen:#050d22; --cx-row:#050b16; --cx-chip:#0a1524; --cx-bezel:#0b0e14;
  --cx-cyan:#4fc3f7; --cx-cyantx:#7fd4ff; --cx-pass:#8ff0b6; --cx-model:#ffd24d;
  --cx-opp:#ff7c6b; --cx-alert:#ff5a46; --cx-redred:#ff9a8e;
  --cx-text:#eaf3ff; --cx-body:#d7e6f8; --cx-sec:#8fb6d8; --cx-ter:#4d7ba8;
  --cx-panel:linear-gradient(180deg,#0d1a2c,#081120);
  /* `[S35]` .2 -> .3: the content boxes' ring, "ever so very slightly
     brighter and consistent around the perimeter". BRIGHTNESS IS HALF THE
     FIX AND THE SMALLER HALF — the ring is an INSET BOX-SHADOW and every box
     that draws it also carries a clip-path whose polygon edges run along the
     element's own top/right/bottom/left, so the clip cuts through the exact
     pixel row the ring occupies and antialiasing shaves it. That is why the
     TOP side read as missing rather than merely dim. The ring is widened to
     1.5px at both use sites so a full pixel survives the cut on every edge;
     this token only makes what survives read at the right strength. */
  --cx-outline:rgba(79,195,247,.3);
  /* Sticky header edges must cover scrolling text, not blend with it.
     These solid shades preserve the old cyan-over-panel appearance. */
  --cx-header-outline:#214d69; --cx-header-divider:#18354c;
  /* THE SHELL RED, declared ONCE `[S35]` — the chassis paints it and the case
     root paints it BEHIND the chassis's chamfer, so the four corner cuts land
     on the same gradient at the same coordinates and the box reads as solid.
     Two literals would be two definitions of one colour, free to drift (C82);
     #case-root and .case-chassis resolve it over the SAME box (root padding is
     0, the chassis is a block child at height:100%), which is what makes the
     seam invisible rather than merely close. */
  --cx-shell:linear-gradient(168deg,#e8402f,#a01d15 56%,#5c0f09);
  --ox:'Oxanium',var(--sans); --jb:'JetBrains Mono',var(--mono);

  /* ---- THE CONTENT PALETTE, MAPPED ONTO THE CASE `[S35]` ----
     The author: "the palette was kinda clumsily placed into the shell ... make
     the colors of everything match better ... a color scheme thats more
     cohesive."
     THE CAUSE IS ONE OMISSION, NOT MANY SMALL MISTAKES. S33 gave the case a
     complete blue palette in --cx-* and styled the CHROME with it, but never
     touched the legacy :root tokens, so everything INSIDE the case — inputs,
     selects, chips, team cards, stat text, borders — kept painting in the S16
     scheme, which is grey-green: --panel #12181e against the case's #0a1524,
     --text #dbe1e7 (neutral grey) against #eaf3ff (blue-white), --cyan #5ab0d6
     (muted) against #4fc3f7 (bright). Two palettes sharing one frame reads as
     clumsy because it IS two palettes.
     FIXED AT THE TOKENS, DELIBERATELY, NOT RULE BY RULE. Every control already
     reads these names, so re-pointing them here re-colours the whole interior
     at once and CANNOT go partial — which is exactly the failure mode that
     produced the mismatch. It is scoped to .tdx-case, so the other four pages
     keep the S16 scheme untouched, and no --cx-* value is duplicated: each
     legacy name is pointed at the case colour that already plays its role.
     FONTS ARE LEFT ALONE ON PURPOSE. The interior falls back to Consolas while
     the chrome is JetBrains Mono, which is a real mismatch, but re-pointing
     --mono/--sans changes glyph metrics and would move layout everywhere at
     once. That is a separate change with a separate risk, and the ask here was
     colour. ---- */
  --bg:#050d22; --bg2:#050b16;   /* --bg tracks --cx-screen `[S35]`: it is the
     same surface under a different name, and letting them drift is how the
     interior stops matching the field it sits on. --bg2 stays DARKER (#050b16)
     because it is the recessed surface — inputs and wells read as cut into the
     screen, which only works while it is below --bg, not level with it. */
  --panel:#0a1524; --panel2:#0d1a2c;
  --line:rgba(79,195,247,.16); --line2:rgba(79,195,247,.3);
  --text:#eaf3ff; --dim:#8fb6d8; --faint:#4d7ba8;
  --cyan:#4fc3f7; --amber:#ffd24d;
  --win:#8ff0b6; --loss:#ff7c6b; --neutral:#4d7ba8;
}

/* the page that carries the case does not itself scroll: the sheet does */
body:has(#case-root){overflow:hidden;padding:0;background:#131419}

/* ---- layer 0: the case root — NO MOUNT PLATE `[S34]`, the author's ruling of
        2026-08-26: "the only part of the screen is the red bezel and inside
        that". The chassis now goes edge to edge; case-shell.js still scales
        the whole element as one unit below 1428px, origin top-left.
        ~~34px of padding + two mount-plate annotations~~ REMOVED — the dark
        border made the instrument read as a PICTURE of a device rather than
        the device, and the annotations were the mock's, carried over by
        mistake (the author: "i forgot to cut that part out").
        ~~THE BACKGROUND STILL EXISTS AND IS STILL SEEN, in exactly one place:
        the chassis is a CHAMFERED polygon (44px quarter-round top-left, 30px
        top-right, 18px bottom corners), so four small cuts at the viewport's
        corners show whatever sits behind. It is set to the SCREEN colour
        rather than the old plate grey so those cuts read as dark instrument
        and not as a surface the case is resting on.~~
        STRUCK `[S35]`, the author's ruling: "fill in the 4 corners of the
        screen where it is black and looks not filled in, with the color that
        its bordered by — make it look like the hardware outside really is a
        box." THE BACKGROUND IS NOW NEVER SEEN. The chamfer is UNTOUCHED and
        still cuts the chassis; what changed is what sits behind it, from the
        screen colour to the SHELL RED the chassis itself paints, so the cuts
        fall on the same gradient at the same coordinates and read as no cut
        at all. The chamfer is kept rather than deleted because the bezel and
        screen polygons inside it still chamfer against the red, which is the
        rounded inner look the design wants; only the OUTERMOST silhouette
        squares off. Delete the chassis clip-path and you lose the drop shadow
        geometry with it. ---- */
#case-root{position:fixed;left:0;top:0;width:100vw;height:100vh;transform-origin:0 0;
  background:var(--cx-shell);padding:0;z-index:1}
.tdx-case:not(.case-ready){visibility:hidden}

/* ---- layers 1-3: chassis, bezel, screen — the DESIGN-SPEC chamfer polygons,
        verbatim from the mock. Outlines are inset shadows, never border. ---- */
.case-chassis{position:relative;height:100%;padding:8px;
  background:var(--cx-shell);
  box-shadow:0 30px 74px rgba(0,0,0,.72),inset 0 1px 0 rgba(255,255,255,.34),inset 0 -3px 10px rgba(0,0,0,.4),0 0 70px rgba(211,44,31,.26);
  clip-path:polygon(0 44px,1.5px 32.7px,5.9px 22px,12.9px 12.9px,22px 5.9px,32.7px 1.5px,44px 0,calc(100% - 30px) 0,100% 30px,100% calc(100% - 18px),calc(100% - 18px) 100%,18px 100%,0 calc(100% - 18px))}
.case-bezel{height:100%;padding:4px;background:var(--cx-bezel);
  box-shadow:inset 0 0 0 1px rgba(255,90,70,.6),inset 0 0 26px rgba(211,44,31,.42);
  clip-path:polygon(0 34px,1.2px 25.2px,4.6px 17px,10px 10px,17px 4.6px,25.2px 1.2px,34px 0,calc(100% - 22px) 0,100% 22px,100% calc(100% - 12px),calc(100% - 12px) 100%,12px 100%,0 calc(100% - 12px))}
.case-screen{position:relative;height:100%;display:flex;flex-direction:column;
  /* ---- THE SCREEN IS DARK BLUE AND ITS GRID IS WHITE `[S35]` ----
     The author: "The background is now completely Black. i want it ... about
     the same dark blue background with the faint white grid it had before."
     BOTH HALVES WERE LITERALLY TRUE. --cx-screen was #04070e — R4 G7 B14, a
     black with a rumour of blue — and the grid was CYAN at .055 alpha, which
     over that colour computes to about rgb(8,17,27): a dot roughly three
     values away from its own background, i.e. invisible. So the screen read as
     flat black and the grid was there only in the stylesheet.
     THE COLOUR IS RAISED TO #050d22, NOT FURTHER. The author allowed a tweak
     for cohesion, and the ceiling is set by the boxes, not by taste: the panel
     fill runs #0d1a2c -> #081120, so the screen has to stay DARKER than that
     or every box stops reading as raised and starts reading as a hole. #050d22
     sits below the panel's darkest stop while carrying real blue.
     THE GRID IS WHITE AT .06 because white is what reads as neutral ruling
     over a blue field — the cyan dots were the same hue as the background and
     could only ever be a brightness difference, which at .055 was none. Same
     1px dot, same 26px pitch: the grid the design already had, made visible
     rather than redesigned. ---- */
  background:var(--cx-screen);
  background-image:radial-gradient(rgba(255,255,255,.06) 1px,transparent 1px);background-size:26px 26px;
  box-shadow:inset 0 0 0 1px rgba(79,195,247,.14);
  clip-path:polygon(0 28px,1px 20.8px,3.8px 14px,8.2px 8.2px,14px 3.8px,20.8px 1px,28px 0,calc(100% - 18px) 0,100% 18px,100% calc(100% - 10px),calc(100% - 10px) 100%,10px 100%,0 calc(100% - 10px))}

/* ---- the brow: 53px, the red plate sheared 68px over 53px — the deck's one
        shear angle — the LED cluster, the wordmark, and the live telemetry.
        Chrome telemetry rows never wrap: they are sized to their content. ---- */
.case-brow{position:relative;z-index:20;height:53px;flex:none;display:flex;align-items:stretch}
.brow-plate{position:relative;width:450px;flex:none;background:linear-gradient(180deg,#e63c2d,#a81f15);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.32),inset 0 -3px 9px rgba(0,0,0,.32);
  clip-path:polygon(68px 0,100% 0,calc(100% - 68px) 100%,0 100%)}
.brow-inner{position:absolute;left:118px;top:0;height:53px;display:flex;align-items:center;gap:12px}
.brow-led{display:flex;flex-direction:column;gap:2.5px;padding:4px;border-radius:5px;background:rgba(0,0,0,.36);
  box-shadow:inset 0 2px 5px rgba(0,0,0,.7),0 1px 0 rgba(255,255,255,.18);flex:none}
.brow-led .led{width:6px;height:6px;border-radius:50%}
.led-r{background:#ff5a46;box-shadow:0 0 7px #ff5a46,inset 0 -1px 1px rgba(0,0,0,.45)}
.led-y{background:#ffd24d;box-shadow:0 0 7px #ffd24d,inset 0 -1px 1px rgba(0,0,0,.45)}
.led-g{background:#63e08b;box-shadow:0 0 7px #63e08b,inset 0 -1px 1px rgba(0,0,0,.45);animation:cx-pulse 2.2s infinite}
.led-c{background:#7fd4ff;box-shadow:0 0 7px #7fd4ff,inset 0 -1px 1px rgba(0,0,0,.45)}
@keyframes cx-pulse{0%,100%{opacity:1}50%{opacity:.35}}
.brow-mark{display:flex;flex-direction:column;align-items:flex-start;gap:1px}
.wordmark{font-family:var(--ox);font-size:21px;font-weight:800;color:#fff;letter-spacing:.05em;line-height:1}
.wordsub{font-family:var(--jb);font-size:7.5px;color:var(--cx-redred);letter-spacing:.1em;white-space:nowrap}
.brow-gap{flex:1}
.brow-tele{height:53px;flex:none;display:flex;align-items:center;gap:13px;padding-right:20px;
  font-family:var(--jb);font-size:9.5px;color:#ffd7d2;white-space:nowrap}

/* ---- the brow tab strip: SECTIONS OF THIS PAGE (LAYOUT-CONTRACT §4) — the
        active tab glows, dormant tabs are uniform, the first and last are
        sheared so the strip closes back into the red. ---- */
.brow-tabs{display:flex;align-items:stretch;gap:3px;margin-left:-62px;width:648px;flex:none;
  box-sizing:border-box;
  /* 648px is the default centre panel's painted width: 667px centre column,
     minus its stable scrollbar gutter and the 10px brow/sheet start offset.
     It is intentionally independent of the draggable column variables so the
     section bar ends at the same datum on every page and never stretches. */
  background:linear-gradient(180deg,rgba(79,195,247,.07),rgba(79,195,247,.018));
  box-shadow:inset 0 0 0 1px rgba(120,215,255,.16),inset 0 -1px 0 rgba(120,215,255,.28);
  clip-path:polygon(0 0,100% 0,calc(100% - 68px) 100%,0 100%)}
.btab{border:none;background:linear-gradient(180deg,rgba(79,195,247,.12),rgba(79,195,247,.035));
  box-shadow:inset 0 0 0 1px rgba(120,215,255,.3),inset 0 0 16px rgba(79,195,247,.14);
  width:94px;display:flex;align-items:center;justify-content:center;cursor:pointer;padding:0;
  font-family:var(--ox);font-size:10.5px;font-weight:700;color:rgba(191,230,251,.82);letter-spacing:.09em}
.btab:hover{background:linear-gradient(180deg,rgba(79,195,247,.2),rgba(79,195,247,.08))}
.btab.on{width:172px;justify-content:flex-end;gap:7px;padding-right:13px;
  background:linear-gradient(180deg,rgba(79,195,247,.32),rgba(79,195,247,.13));
  box-shadow:inset 0 0 0 1px rgba(150,228,255,.85),inset 0 0 20px rgba(79,195,247,.4),0 0 18px rgba(79,195,247,.4);
  clip-path:polygon(68px 0,100% 0,100% 100%,0 100%)}
.btab.on .btl{display:flex;flex-direction:column;align-items:flex-start;gap:1px;color:#bfe6fb}
.btab.on .btl i{font-style:normal;font-family:var(--jb);font-size:6.5px;color:rgba(191,230,251,.5);letter-spacing:.12em;white-space:nowrap}
.btab.last{width:150px;justify-content:flex-start;padding-left:14px;
  clip-path:polygon(0 0,100% 0,calc(100% - 68px) 100%,0 100%)}

/* View presets form the top face of the default centre-column box. Their
   LOWER-RIGHT point must land on the centre column's 667px right edge; because
   the common shear removes 68px from the lower edge, the strip itself is
   667 + 68 = 735px wide. The projected top face extends right while its lower
   baseline stays locked to the front face. */
.tdx-case .brow-tabs{margin-left:-72px;width:735px;gap:0;
  background:transparent;box-shadow:none;clip-path:none;overflow:visible}
.tdx-case .btab,
.tdx-case .btab.on,
.tdx-case .btab.last{flex:1 1 0;width:auto;min-width:0;margin-left:-65px;
  padding:0 18px;justify-content:center;gap:0;text-align:center;
  clip-path:polygon(68px 0,100% 0,calc(100% - 68px) 100%,0 100%)}
.tdx-case .btab:first-child{margin-left:0}
.tdx-case .btab.on{background:linear-gradient(180deg,rgba(79,195,247,.32),rgba(79,195,247,.13));
  box-shadow:inset 0 0 0 1px rgba(150,228,255,.85),inset 0 0 20px rgba(79,195,247,.4),0 0 18px rgba(79,195,247,.28)}
.tdx-case .btab:focus-visible{outline:1px solid #d8f4ff;outline-offset:-4px}
.tdx-case .home-tool-brow .btab{color:var(--cx-sec);text-decoration:none;font-size:8.5px;padding-inline:20px}
.tdx-case .home-tool-brow .btab:hover{color:#fff}
.tdx-case .home-tool-brow .btab.on{color:#dff6ff;cursor:default}

/* The page and Team brows share the established projected-top geometry: a
   735px outer parallelogram, 68px shear and 65px overlap. One filled plate
   closes the old transparent wedges; bright slanted seams distinguish each
   route or Team face. One perimeter layer paints all four outer edges with
   the same stroke instead of mixing inset shadows with a separate diagonal. */
.tdx-case:not(.home-case) .team-brow,
.tdx-case.home-case .home-tool-brow{--brow-outline:rgba(184,236,255,.76);position:relative;display:flex;align-items:stretch;gap:0;
  padding:0;overflow:hidden;isolation:isolate;
  background:linear-gradient(180deg,rgba(35,91,125,.42),rgba(7,24,39,.92));
  box-shadow:inset 0 0 18px rgba(79,195,247,.12);
  clip-path:polygon(68px 0,100% 0,calc(100% - 68px) 100%,0 100%);
  filter:drop-shadow(0 0 5px rgba(79,195,247,.18))}
.tdx-case:not(.home-case) .team-brow-slot,
.tdx-case.home-case .home-tool-brow .btab{position:relative;flex-direction:column;justify-content:center;gap:0;
  min-width:0;padding:2px 18px 3px;color:var(--cx-sec);text-decoration:none;
  background:linear-gradient(180deg,rgba(79,195,247,.055),rgba(79,195,247,.012));
  box-shadow:inset 0 1px rgba(184,236,255,.58),inset 0 -1px rgba(184,236,255,.44)}
.tdx-case:not(.home-case) .team-brow-slot::after,
.tdx-case.home-case .home-tool-brow .btab::after{content:"";position:absolute;z-index:4;right:1px;top:0;width:1px;height:100%;
  background:linear-gradient(180deg,rgba(220,248,255,.9),rgba(79,195,247,.56));
  box-shadow:0 0 5px rgba(79,195,247,.38);transform:skewX(-52deg);transform-origin:top}
.tdx-case:not(.home-case) .team-brow-slot:last-child::after,
.tdx-case.home-case .home-tool-brow .btab:last-child::after{display:none}
.tdx-case:not(.home-case) .team-brow::before,
.tdx-case.home-case .home-tool-brow::before{content:"";position:absolute;z-index:7;inset:0;pointer-events:none;
  background:
    linear-gradient(var(--brow-outline),var(--brow-outline)) 68px 0/calc(100% - 68px) 1px no-repeat,
    linear-gradient(var(--brow-outline),var(--brow-outline)) 0 100%/calc(100% - 68px) 1px no-repeat,
    linear-gradient(to bottom right,transparent calc(50% - .7px),var(--brow-outline) 50%,transparent calc(50% + .7px)) 0 0/68px 100% no-repeat,
    linear-gradient(to bottom right,transparent calc(50% - .7px),var(--brow-outline) 50%,transparent calc(50% + .7px)) 100% 0/68px 100% no-repeat;
  filter:drop-shadow(0 0 3px rgba(79,195,247,.34))}
.tdx-case:not(.home-case) .team-brow-slot:hover,
.tdx-case.home-case .home-tool-brow .btab:hover{color:#fff;background:linear-gradient(180deg,rgba(79,195,247,.3),rgba(79,195,247,.1));
  box-shadow:inset 0 1px rgba(232,250,255,.98),inset 0 -1px rgba(184,236,255,.85),0 0 14px rgba(79,195,247,.25)}
.tdx-case.home-case .home-tool-brow .btab.on{color:#dff6ff;cursor:default;
  background:linear-gradient(180deg,rgba(79,195,247,.32),rgba(79,195,247,.13));
  box-shadow:inset 0 1px rgba(232,250,255,.98),inset 0 -1px rgba(184,236,255,.85),inset 0 0 20px rgba(79,195,247,.4)}
.tdx-case:not(.home-case) .team-brow-art{position:relative;width:34px;height:33px;display:grid;place-items:center;flex:none}
.tdx-case:not(.home-case) .team-brow-art img{position:relative;z-index:2;width:34px;height:34px;object-fit:contain;filter:drop-shadow(0 3px 4px rgba(0,0,0,.5))}
.tdx-case:not(.home-case) .team-brow-art em{position:absolute;z-index:1;color:rgba(127,212,255,.42);font:800 15px/1 var(--ox);font-style:normal}
.tdx-case:not(.home-case) .team-brow-slot>b{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  max-width:100%;color:inherit;font:800 7.5px/1 var(--ox);letter-spacing:.035em;text-transform:uppercase}
.tdx-case:not(.home-case) .team-brow-slot.empty{color:rgba(127,212,255,.34);cursor:default}
.tdx-case:not(.home-case) .team-brow-slot.empty>b{font-size:7px}
.tdx-case:not(.home-case) .team-brow-slot.unavailable{color:#ffb0a6;background:linear-gradient(180deg,rgba(255,82,65,.28),rgba(95,17,12,.32));
  box-shadow:inset 0 0 0 1px #ff6253,0 0 16px rgba(255,63,48,.65),inset 0 0 18px rgba(255,63,48,.2)}

/* ---- the rail: 53px full height, global navigation, only what exists ---- */
.case-mid{position:relative;z-index:10;flex:1;min-height:0;display:flex;align-items:stretch}
.case-rail{position:relative;z-index:12;width:53px;flex:none;
  height:calc(100% + 55px);align-self:flex-start;
  background:linear-gradient(180deg,#a81f15,#6d1109);
  box-shadow:inset -4px 0 10px rgba(0,0,0,.42),inset 0 1px 0 rgba(255,255,255,.12);
  box-sizing:border-box;padding:54px 0 14px;display:flex;flex-direction:column;align-items:center;gap:0;
  /* One element paints the rail and its footer continuation. There is no
     pseudo-element boundary to form a horizontal seam; the only lower edge is
     the same 53px/46px diagonal used by the GO BACK plate. */
  clip-path:polygon(0 0,100% 0,100% calc(100% - 46px),0 100%)}
.railbtn{display:flex;align-items:center;justify-content:center;min-height:36px;padding:8px 2px;width:100%;box-sizing:border-box;
  cursor:pointer;text-decoration:none;background:transparent;border:0;border-top:1px solid rgba(255,255,255,.2)}
.railbtn:last-child{border-bottom:1px solid rgba(255,255,255,.2)}
.railbtn:active{transform:translateY(1px)}
.railbtn svg{display:none}
.railbtn .rlab{font-family:var(--ox);font-size:7px;line-height:1.05;text-align:center;font-weight:700;color:rgba(255,255,255,.85);letter-spacing:.045em}
.railbtn:hover .rlab{color:#fff}
.railbtn.on{background:rgba(0,0,0,.36);
  box-shadow:inset 0 2px 6px rgba(0,0,0,.7),inset 0 0 0 1px rgba(255,255,255,.24),inset -2px 0 0 rgba(255,255,255,.42)}
.railbtn.on .rlab{color:#fff}

/* ---- ~~the sheet: the ONE scrolling surface; the footer is its end cap~~
        STRUCK `[S35]`, the author's ruling: "I want the 3 Columns to scroll up
        and down separately, so i can compare all the sections of the right
        column to the middle content box without moving the whole screen."
        THE SHEET NO LONGER SCROLLS — each column is its own scroller (see
        .case-col) and the sheet CLIPS, because an outer scroller wrapping
        three inner ones puts four scrollbars in a fight over one wheel event.

        A CONSEQUENCE, STATED RATHER THAN LEFT TO BE DISCOVERED: the footer was
        the sheet's END CAP (LAYOUT-CONTRACT §1 — "it scrolls up from the
        bottom, and when the user sees it there is no more page"). With nothing
        outside the columns scrolling, it is now ALWAYS VISIBLE — a pinned bar,
        the one thing §1 said it was not. That reverses §1 by ARITHMETIC, not
        by preference: independently scrolling columns and a scroll-away footer
        cannot both be true. The footer's own rules are untouched; only what
        reaches it changed. ---- */
.case-sheet{flex:1;min-width:0;overflow:hidden;display:flex;flex-direction:column}
.sheet-body{flex:1;min-height:0;display:flex;flex-direction:column;padding:12px 12px 4px}
.case-footer{margin-top:auto;flex:none}
.foot-shim{height:9px;background:linear-gradient(180deg,transparent,rgba(211,44,31,.18));
  clip-path:polygon(0 0,86px 0,104px 100%,calc(100% - 104px) 100%,calc(100% - 86px) 0,100% 0,100% 100%,0 100%)}
.foot-bar{display:flex;align-items:center;gap:16px;height:46px;padding:0 20px 0 0;
  background:linear-gradient(180deg,rgba(216,52,39,.2),rgba(58,10,6,.72));
  border-top:1px solid rgba(255,90,70,.36);
  font-family:var(--jb);font-size:9px;color:var(--cx-sec);white-space:nowrap}
/* GO BACK `[S34]` — DESIGN-SPEC's plate, verbatim: the 172° gradient, the
   deck's ONE shear angle as a 53px clip, the drop-shadow that lifts it off the
   footer, and the 70.2px hairline rotated −40.94° along the chamfer as a
   machined light catch. It sits FIRST in the bar, so the footer's own left
   padding is dropped (the plate supplies it). Disabled state is real: the
   shell dims it and swaps the tooltip when session history has nowhere to go,
   rather than leaving a control that silently does nothing. */
.gobackplate{position:relative;z-index:6;display:flex;align-items:center;justify-content:center;gap:9px;
  height:100%;padding:0 58px;border:none;cursor:pointer;
  background:linear-gradient(172deg,#cf2f22,#7e150e);
  clip-path:polygon(53px 0,100% 0,calc(100% - 53px) 100%,0 100%);
  filter:drop-shadow(-3px 2px 4px rgba(0,0,0,.6))}
.gobackplate:hover{background:linear-gradient(172deg,#e03a2c,#8e1a11)}
.gobackplate:active{transform:translateY(1px)}
.gobackplate .gblab{font-family:var(--ox);font-size:11px;font-weight:700;color:#fff;letter-spacing:.1em}
.gbcatch{position:absolute;left:0;top:46px;width:70.2px;height:1.6px;pointer-events:none;
  background:linear-gradient(90deg,rgba(255,150,134,.2),rgba(255,178,164,.55) 45%,rgba(255,208,196,.95));
  transform:rotate(-40.94deg);transform-origin:0 0}
.gobackplate.gbdead{background:linear-gradient(172deg,#5c221c,#3a0f0a);cursor:default;filter:none}
.gobackplate.gbdead:hover{background:linear-gradient(172deg,#5c221c,#3a0f0a)}
.gobackplate.gbdead:active{transform:none}
.gobackplate.gbdead .gblab,.gobackplate.gbdead svg{opacity:.42}
.gobackplate.gbdead .gbcatch{opacity:.25}
.feedbackplate{display:inline-flex;align-items:center;justify-content:center;gap:7px;flex:none;height:28px;
  padding:0 11px;border:1px solid rgba(255,139,121,.5);border-radius:4px;background:rgba(118,22,14,.52);
  color:rgba(255,239,235,.9);font-family:var(--ox);font-size:7px;font-weight:700;letter-spacing:.07em;
  text-decoration:none;cursor:pointer}
.feedbackplate svg{stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.feedbackplate:hover{border-color:rgba(255,188,176,.86);background:rgba(161,35,24,.68);color:#fff}
.feedbackplate:focus-visible{outline:2px solid var(--cx-info);outline-offset:2px}
.feedbackplate:active{transform:translateY(1px)}
.privacyplate{display:inline-flex;align-items:center;justify-content:center;flex:none;height:28px;padding:0 10px;
  border:1px solid rgba(127,212,255,.38);border-radius:4px;background:rgba(6,26,43,.58);color:var(--cx-info);
  font-family:var(--ox);font-size:7px;font-weight:700;letter-spacing:.08em;text-decoration:none}
.privacyplate:hover{border-color:var(--cx-info);background:rgba(14,55,82,.74);color:#fff}
.privacyplate:focus-visible{outline:2px solid var(--cx-info);outline-offset:2px}
.privacy-mobile-link{display:none}
.ftcell b{color:var(--cx-text);font-size:11px}
.ft-online{color:var(--cx-pass)}
.ft-gap{flex:1}
.ft-right{color:var(--cx-ter)}

/* ---- the lens: 110px optical assembly at the chassis' top-left, tangent to
        its edges, z-index 40 — hardware IN FRONT of the screen. Ported layer
        by layer from the mock. Purely emblematic; no live text may sit under
        it (the carve on the top-left panel handles that). ---- */
.case-lens{position:absolute;left:0;top:0;z-index:40;width:110px;height:110px;box-sizing:border-box;
  padding:9px;border-radius:50%;
  background:repeating-conic-gradient(from 0deg,rgba(255,255,255,.45) 0deg 1.3deg,rgba(0,0,0,.2) 1.3deg 2.9deg),
    conic-gradient(from 205deg,#f6f9fc,#8d97a4 11%,#eef2f7 22%,#6e7886 34%,#e4eaf1 47%,#7c8693 60%,#f1f5f9 73%,#828d9a 86%,#f6f9fc);
  box-shadow:0 0 0 1px rgba(255,255,255,.36),inset 0 0 0 5px rgba(255,255,255,.13),inset 0 0 0 6px rgba(0,0,0,.42),inset 0 0 0 10px rgba(255,255,255,.08),inset 0 -4px 10px rgba(0,0,0,.55)}
.lens-screw{position:absolute;width:4px;height:4px;border-radius:50%;
  background:radial-gradient(circle at 35% 30%,#eef2f7,#6e7886);box-shadow:inset 0 -1px 1px rgba(0,0,0,.5)}
.lens-screw-bl{left:14px;bottom:25px}
.lens-screw-tr{right:25px;top:14px}
.lens-ring{box-sizing:border-box;width:100%;height:100%;border-radius:50%;padding:6px;
  background:radial-gradient(circle at 38% 22%,#ff7460,#cf3427 50%,#5a0f0a);
  box-shadow:inset 0 -3px 6px rgba(0,0,0,.6),inset 0 2px 3px rgba(255,255,255,.25),0 0 0 1px rgba(0,0,0,.45)}
.lens-glass{position:relative;box-sizing:border-box;width:100%;height:100%;border-radius:50%;
  background:radial-gradient(circle at 30% 24%,rgba(226,246,255,.95) 0 4%,rgba(112,206,255,.45) 13%,transparent 38%),
    repeating-radial-gradient(circle at 50% 50%,rgba(133,196,240,.13) 0 1px,transparent 1px 5px),
    radial-gradient(circle at 50% 52%,#16486e 0 13%,#0a2340 40%,#03070e 84%);
  box-shadow:inset 0 0 10px rgba(0,0,0,.9)}
.lens-pupil{position:absolute;left:50%;top:52%;transform:translate(-50%,-50%);width:13px;height:13px;border-radius:50%;
  background:radial-gradient(circle,#e4f7ff,#4fc3f7 52%,#0d4a75);box-shadow:0 0 16px rgba(79,195,247,.95)}
.lens-reticle{position:absolute;left:50%;top:52%;transform:translate(-50%,-50%);width:42px;height:42px;border-radius:50%;
  border:1px solid rgba(79,195,247,.28)}

/* the wrap's page-width centering is the one thing the case replaces.
   `[S35]`: it also became a flex column, so .sheet-cols can claim the sheet's
   remaining height — a percentage height here would depend on ancestors this
   element does not control, and the columns must be BOUNDED before any of them
   can scroll. */
.tdx-case .wrap{max-width:none;margin:0;flex:1;min-height:0;display:flex;flex-direction:column}

/* ---- the three columns (LAYOUT-CONTRACT §2/§3): left and right take their
        width from the two CSS vars case-shell.js maintains (defaults 306 /
        340); the CENTRE ABSORBS ALL SLACK and is never fixed. min-width:0
        everywhere so a wide table scrolls inside its panel instead of
        blowing the column open. ---- */
.tdx-case .sheet-cols{display:flex;align-items:stretch;flex:1;min-height:0}
/* `[S35]`: each column scrolls itself. THREE declarations do the work and each
   is load-bearing — align-items:stretch above gives every column the row's
   full height, min-height:0 lets a flex item be SHORTER than its content
   (without it the column grows to fit and nothing ever scrolls), and
   overflow-y:auto turns that bounded box into a scroller.
   scrollbar-gutter:stable reserves the 9px in every column whether or not it
   scrolls, so a column does not reflow its own text the moment it gets long
   enough to need a bar — which matters here precisely because the point of the
   feature is comparing two columns side by side. */
.tdx-case .case-col{display:flex;flex-direction:column;gap:0;min-width:0;
  min-height:0;overflow-y:auto;overflow-x:hidden;scrollbar-gutter:stable;
  position:relative;isolation:isolate;scrollbar-width:thin;scrollbar-color:rgba(79,195,247,.42) transparent}
.tdx-case .case-col::-webkit-scrollbar{width:5px;height:5px}
.tdx-case .case-col::-webkit-scrollbar-track{background:transparent}
.tdx-case .case-col::-webkit-scrollbar-thumb{border:1px solid transparent;border-radius:999px;background:rgba(79,195,247,.42);background-clip:padding-box}
.tdx-case .case-col::-webkit-scrollbar-thumb:hover{background:rgba(127,220,255,.7);background-clip:padding-box}
/* The left column pages inward: its slim paging rail occupies the seam beside
   the red navigation rail, while every child keeps ordinary left-to-right
   reading and control direction. */
.tdx-case .case-col.col-left{direction:rtl}
.tdx-case .case-col.col-left>*{direction:ltr}
/* the panels must keep their natural height: a flex-column child defaults to
   flex-shrink:1, so without this they COMPRESS to fit the bounded column and
   the scrollbar never appears — the failure looks like "scrolling is broken"
   when it is actually "nothing overflowed". */
.tdx-case .case-col>*{flex:none}

/* ---- STICKY BOX HEADERS `[S35]`, restored by the later Dex-wide ruling:
        "the highest seen box header is the one at the top of the column."
        The header is sticky only inside its own details box, so the next box
        naturally pushes it away and becomes the new highest visible header.

        The original ruling: "I want to make it
        seem like no matter when your scrolling the top side (more specifically
        the glowing edge/border/ring) of the top most left-side content box
        would stay at the same height."

        WHY THIS SHAPE AND NOT A PAINTED LINE. The author had already found the
        flaw in the obvious version: a fixed glowing rule drawn across the top
        of the column ("part of the mask like the border gap") hangs over empty
        space every time a GAP between two boxes passes the top, and reads as
        wrong. A sticky HEADER cannot do that, because the glow is never a
        floating decoration — it is an actual box's top edge, and a box is
        always under it by construction.

        AND THE HANDOFF IS FREE: sticky is constrained by its containing block,
        so each summary stays pinned only while its own <details> is in view,
        then leaves with it as the next box's header arrives. That is the
        "pushes the previous one out" behaviour, and it costs no script and no
        scroll listener — the one thing this page cannot afford per solve.

        .defspanel gets a matching specialized sticky rule below. It keeps the
        compact lens carve while giving the left column the same fixed visible
        header as the ordinary shell panels. ---- */
.tdx-case .case-col>details.panel>summary{
  /* Opaque bleed above the scroll edge closes the fractional-scale seam.
     Compensating margin/padding keep the normal panel and title size unchanged. */
  position:sticky;top:-3px;z-index:6;margin-top:-3px;padding-top:11px;
  background:var(--cx-header-outline);border-bottom-color:var(--cx-header-divider);isolation:isolate;
  clip-path:polygon(0 0,calc(100% - 14px) 0,100% 14px,100% 100%,0 100%)}
.tdx-case .case-col>details.panel>summary::before{content:"";position:absolute;inset:4.5px 1.5px 0;z-index:-1;
  background:var(--cx-panel);
  clip-path:polygon(0 0,calc(100% - 13px) 0,100% 13px,100% 100%,0 100%)}
.tdx-case .col-left{width:var(--case-leftw,306px);flex:none}
.tdx-case .col-centre{flex:1;min-width:0}
.tdx-case .col-right{width:var(--case-rightw,340px);flex:none}
/* `[S35]` 11px -> 7px and the grip mark removed. The author: "the resize boxes
   are too wide and imposing. Also i dont need that small thin vertical line in
   the middle of the column gaps that indicated draggability."
   THE SPAN IS HIDDEN, NOT DELETED FROM THE MARKUP — it costs nothing, and the
   markup's own comment explains the divider as a control; removing the element
   would make that comment describe something absent.
   AT REST THE DIVIDER IS NOW INVISIBLE, and the affordance is the col-resize
   CURSOR plus a faint tint on hover — kept rather than dropped because with no
   mark and no hover there is no way to discover the drag at all, and
   double-click-to-reset is documented as the only reset means. */
.tdx-case .col-div{width:7px;flex:none;align-self:stretch;cursor:col-resize;
  display:flex;align-items:center;justify-content:center;touch-action:none}
.tdx-case .col-div span{display:none}
.tdx-case .col-div:hover{background:rgba(79,195,247,.05)}

/* ---- the root bar (P1, never collapses): bead · ROOTED · pair · V · EXACT.
        The BUG-2 refusal banner (.tstat) lands in this same element. ---- */
.tdx-case .rootbar{display:flex;align-items:center;gap:11px;padding:8px 13px;
  background:linear-gradient(90deg,rgba(79,195,247,.14),rgba(79,195,247,.03));
  box-shadow:inset 0 0 0 1px rgba(79,195,247,.24);
  clip-path:polygon(0 0,calc(100% - 12px) 0,100% 12px,100% 100%,0 100%)}
.tdx-case .rootbead{width:12px;height:12px;border-radius:50%;flex:none;
  background:radial-gradient(circle at 35% 30%,#d6f0ff,#4fc3f7 45%,#155a8a);box-shadow:0 0 9px rgba(79,195,247,.6)}
.tdx-case .rootlab{font-family:var(--jb);font-size:9.5px;color:var(--cx-sec);letter-spacing:.12em;cursor:help}
.tdx-case .rootpair{font-family:var(--ox);font-size:12px;font-weight:700;color:var(--cx-text)}
.tdx-case .rootpair .vs{color:var(--cx-ter);font-weight:400}
.tdx-case .rootgap{flex:1}
.tdx-case .rootwclab{font-family:var(--jb);font-size:9px;color:var(--cx-sec)}
.tdx-case .rootv{font-family:var(--ox);font-size:20px;font-weight:800;letter-spacing:.02em;cursor:help}
.tdx-case .rootexact{font-family:var(--jb);font-size:8px;font-weight:700;color:#04070e;background:var(--cx-pass);
  padding:2px 7px;letter-spacing:.1em;cursor:help}
.tdx-case .rootbar .tstat{background:rgba(217,164,65,.09);border:1px solid var(--amber);border-radius:0;
  padding:4px 10px;display:flex;align-items:center;gap:9px}
.tdx-case .rootbar .tstat .tl{font-family:var(--jb)}
.tdx-case .rootbar .tstat .tv{font-family:var(--jb);font-size:13px;margin:0}

/* ---- the panel restyle: every data panel becomes a case module — the
        DESIGN-SPEC gradient, a 1px cyan inset outline (never a border), the
        14px top-right notch, NO border-radius, Oxanium headers, square
        numbered chips, claim tags as outline chips, the red caret. The
        markup's classes are untouched; only this scope restyles them. ---- */
/* ---- THE RING IS TWO CLIPPED LAYERS, NOT AN INSET SHADOW `[S35]` ----
        The author: "the bright border needs to persists all around the box not
        just the top and bottom sides of the box and also on that rounded
        corner."
        WHY THE SHADOW COULD NEVER DO IT: `box-shadow:inset` draws a RECTANGLE.
        The chamfer is a clip-path polygon, so the shadow's rectangular ring was
        cut away exactly where the diagonal runs — the corner had no line at
        all, and could not get one by any amount of brightening. The left and
        right sides lost most of themselves to the same clip running along the
        element's own edges.
        WHAT REPLACES IT: the element paints the RING COLOUR across its whole
        box and is clipped to the outer polygon; a ::before inset by 1.5px
        paints the real panel fill, clipped to the SAME polygon 1px tighter at
        the corner. What is left visible of the outer layer is a 1.5px band
        that follows the silhouette all the way round, diagonal included.
        z-index:-1 puts the fill behind the panel's own text and in front of
        the ring — legal here because clip-path already makes .panel a stacking
        context, so the negative index cannot escape the panel. ---- */
.tdx-case .panel{background:var(--cx-outline);border:none;border-radius:0;
  position:relative;
  clip-path:polygon(0 0,calc(100% - 14px) 0,100% 14px,100% 100%,0 100%);
  padding:0;margin-bottom:0}
.tdx-case .panel::before{content:"";position:absolute;inset:1.5px;z-index:-1;
  background:var(--cx-panel);
  clip-path:polygon(0 0,calc(100% - 13px) 0,100% 13px,100% 100%,0 100%)}

/* The visual nine-pixel panel gap lives INSIDE each details box as a real,
   transparent final spacer. That extends the sticky containing block to the next
   header, so the outgoing header remains at the true column top until its
   replacement arrives—there is no uncovered handoff interval. */
.tdx-case .case-col>details.panel,
.tdx-case .case-col>details.defspanel{
  background:linear-gradient(to bottom,var(--cx-outline) 0 calc(100% - 9px),transparent calc(100% - 9px))}
.tdx-case .case-col>details.panel::after,
.tdx-case .case-col>details.defspanel::after{content:"";display:block;height:9px}
.tdx-case .case-col>details.panel::before,
.tdx-case .case-col>details.defspanel::before{bottom:10.5px}

/* ---- THE CUT CORNER AS THE COLLAPSE INDICATOR `[S35]` ----
        The author: "make it so the cut corners basically reappear when
        collapsed/closed. like a collapse state indicator. and its light blue."
        A 14px square in the top-right corner, which the panel's OWN clip-path
        immediately cuts along the chamfer — so what survives is a triangle
        hugging the diagonal, exactly filling the corner the chamfer defines.
        The shape is therefore not drawn twice: the chamfer that cuts the box
        is the same one that shapes this wedge, so they cannot drift apart.
        LIGHT BLUE IS --cx-cyantx (#7fd4ff), the palette's existing light blue,
        NOT a new colour — it is the same token the brow and the tab text use.

        ~~A 14px square which the panel's own clip-path cuts along the chamfer,
        leaving a triangle hugging the diagonal INSIDE the box.~~ STRUCK
        `[S35]` — that version only ever read as a brighter border, because a
        wedge drawn inside the clip lies along the diagonal rather than filling
        anything. The author: "The corner indicator is just a brighter border
        now. i wanted it to be the full missing piece of the box."
        SO THE CHAMFER ITSELF IS DROPPED WHEN CLOSED. A closed panel takes
        clip-path:none — it becomes a whole rectangle — and ::after paints the
        exact triangle the chamfer would have removed, in light blue. The
        corner does not merely get outlined, it COMES BACK, which is what
        "reappear" asked for and what makes it read as a state and not a
        decoration. ::before drops its chamfer for the same reason, so the fill
        reaches the corner underneath.
        THE TRIANGLE IS THE CHAMFER'S OWN GEOMETRY: polygon(0 0,100% 0,100%
        100%) over 14px is precisely the piece polygon(…calc(100% - 14px) 0,
        100% 14px…) takes out, so the two cannot disagree about where the cut
        is. One corner, two states, no extra element in the markup. ---- */
.tdx-case .case-col>details.panel:not([open]),
.tdx-case .case-col>details.defspanel:not([open]){clip-path:none}
.tdx-case .case-col>details.panel:not([open])::before,
.tdx-case .case-col>details.defspanel:not([open])::before{clip-path:none}
.tdx-case .case-col>details.panel:not([open])>summary::after,
.tdx-case .case-col>details.defspanel:not([open])>summary::after{
  content:"";position:absolute;top:0;right:0;width:14px;height:14px;z-index:2;
  background:linear-gradient(135deg,#f2fbff 0%,#9ae2ff 48%,#4fc3f7 100%);
  filter:brightness(1.2);box-shadow:0 0 12px rgba(127,212,255,.9);
  clip-path:polygon(0 0,100% 0,100% 100%)}

/* ---- AND THE ACTUAL CULPRIT, WHICH WAS NEITHER OF THE ABOVE `[S35]`.
        `#insp-panel{flex:1 1 0}` (line 69) predates the case entirely: it is
        from the side-by-side row layout, where growing meant taking the
        remaining WIDTH beside #net-panel. The column made that same rule mean
        HEIGHT, and an ID selector outranks `.tdx-case .case-col>*{flex:none}`,
        so the inspector alone kept flex-grow:1 while every sibling had none.
        A COLLAPSED PANEL WAS THEREFORE STRETCHED TO FILL THE COLUMN — measured
        at 489px with 0px of content in it, which is the empty box in the
        author's screenshot exactly. The text really was collapsing; the box
        was being inflated from outside, which is why hiding children and then
        killing ::details-content both changed nothing.
        AND IT IS WHY IT LOOKED UNREPRODUCIBLE. Free space is the trigger:
        collapsing ONE panel while the others stayed open left the column
        overflowing, so there was nothing to distribute and the box measured
        its honest 55px. The author had ALL THREE collapsed — 593px of column
        against 141px of headers — and the grow factor ate the 489px
        difference. Same stylesheet, opposite result, decided by how much of
        the column was already full.
        #net-panel is included because the 1080px media query on line 70 hands
        it the same flex, and the case can be narrower than that. ---- */
.tdx-case .case-col>#insp-panel,
.tdx-case .case-col>#net-panel{flex:none}
.tdx-case .panel>summary,.tdx-case .kdetails>summary{border-bottom:1px solid rgba(79,195,247,.16);padding:8px 12px}
.tdx-case .pdet>summary h2{margin:0;font-family:var(--ox);font-size:10.5px;font-weight:900;color:var(--cx-text);
  letter-spacing:.06em;text-transform:uppercase;display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.tdx-case .pdet>summary{list-style:none;cursor:pointer}
.tdx-case .pdet>summary::-webkit-details-marker{display:none}
.tdx-case .panel>:not(summary){margin-left:12px;margin-right:12px}
.tdx-case .panel>:not(summary):first-of-type{margin-top:10px}
.tdx-case .panel>:not(summary):last-child{margin-bottom:12px}
.tdx-case .kdetails>#kernel-body{padding:10px 0 12px;border-top:none}
.tdx-case .stepb{width:15px;height:15px;border-radius:0;border:none;background:var(--cx-cyan);color:#04070e;
  font-family:var(--ox);font-size:9px;font-weight:800}
.tdx-case .tpmark{width:15px;height:15px;border-radius:0;border:none;background:var(--cx-cyan);color:#04070e;
  font-family:var(--ox);font-size:9px;font-weight:800;display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;cursor:help}
.tdx-case .tag{border-radius:0;background:transparent;font-family:var(--jb);font-size:7px;font-weight:700;
  letter-spacing:.1em;padding:1px 5px}
.tdx-case .tag.anal{color:var(--cx-pass);box-shadow:inset 0 0 0 1px rgba(143,240,182,.4)}
.tdx-case .tag.model{color:var(--cx-model);box-shadow:inset 0 0 0 1px rgba(255,210,77,.4)}
.tdx-case .tag.presc{color:var(--cx-cyantx);box-shadow:inset 0 0 0 1px rgba(127,212,255,.4)}
.tdx-case .kcaret{color:var(--cx-alert);font-size:9px}
.tdx-case .kcaret,.tdx-case .mhcaret{display:none!important}
.tdx-case .kdetails .ktitle{font-family:var(--ox);font-size:10.5px;font-weight:700;color:var(--cx-text);letter-spacing:.06em}
.tdx-case .kdetails .ksum{font-family:var(--jb)}

/* priority chips (P#): behind the flag in case-shell.js, DEFAULT OFF */
.tdx-case .pchip{display:none;font-family:var(--jb);font-size:7px;font-weight:700;color:var(--cx-cyantx);
  letter-spacing:.1em;padding:1px 5px;background:rgba(79,195,247,.12)}
.tdx-case.show-pchips .pchip{display:inline-block}

/* ---- the DEFINITIONS panel + THE LENS CARVE (LAYOUT-CONTRACT §7): a radial
        mask removes the corner, a radial gradient repaints the outline as an
        arc between 56.5 and 58px, and the header takes 38px of top padding to
        clear the curve — in BOTH open and closed states (deviation from the
        mock, whose collapsed header would sit inside the carved zone: no live
        text under the lens outranks a pixel-faithful collapse). The carve
        belongs to the SLOT — whatever lands top-left inherits it.
        THE `-22px` SURVIVED THE MOUNT-PLATE REMOVAL UNCHANGED, and that is
        arithmetic rather than luck: the offset is (lens centre − panel
        origin). Before, 89 − 111 = −22; after, with BOTH the chassis and the
        lens moved by −34, 55 − 77 = −22. Move one without the other and this
        constant must be re-derived — the carve would bite the panel's
        interior instead of its corner. ---- */
/* ---- THE DEFINITIONS BOX IS A STANDARD BOX NOW, EXCEPT FOR THE LENS `[S35]`.
        The author: "i want the top most box of the left column which currently
        has the data flow to look like a standard box besides the rounded left
        corner that follows the lens."
        WHAT MADE IT LOOK DIFFERENT WAS THE RING, not the carve. It drew its
        outline as an inset box-shadow — a RECTANGLE — while carrying both a
        chamfer clip AND a radial mask, so the outline was cut twice and simply
        vanished along the diagonal and around the lens. Every other box moved
        to the two-layer ring earlier this session; this one did not, so it was
        the odd one out.
        IT NOW USES THE IDENTICAL TECHNIQUE: the element paints the ring colour
        and clips to the outer polygon, ::before paints the fill inset 1.5px
        and clips to the inner one. The ring therefore follows the chamfer AND
        the lens carve, because the mask applies to the finished element and
        trims ring and fill together — which is the carve becoming part of the
        outline rather than a hole punched through it.
        THE CARVE'S BRIGHT EDGE MOVED TO ::before with its centre shifted by
        the same 1.5px the inset introduces (-22 -> -23.5), so the line still
        lands exactly on the mask's boundary. The radii are untouched: an inset
        moves a circle's centre, not its size.
        The compact 60px carve reaches about 34px down the left edge. A
        42px header can therefore clear the lens, keep its title in the safe
        horizontal centre, and still read as the same module when collapsed. ---- */
.tdx-case .defspanel{margin:0;position:relative;
  background:var(--cx-outline);
  clip-path:polygon(0 0,calc(100% - 14px) 0,100% 14px,100% 100%,0 100%);
  -webkit-mask:radial-gradient(circle 60px at -22px -22px,transparent 0 60px,#000 60px);
  mask:radial-gradient(circle 60px at -22px -22px,transparent 0 60px,#000 60px)}
.tdx-case .defspanel::before{content:"";position:absolute;inset:1.5px;z-index:-1;
  background:radial-gradient(circle at -23.5px -23.5px,transparent 0 58.5px,rgba(79,195,247,.42) 58.5px 60px,transparent 60px),var(--cx-panel);
  clip-path:polygon(0 0,calc(100% - 13px) 0,100% 13px,100% 100%,0 100%)}
.tdx-case .defspanel>summary{margin:0;min-height:42px;box-sizing:border-box;padding:7px 12px 7px 46px;border-bottom:1px solid rgba(79,195,247,.16);
  font-family:var(--ox);font-size:10.5px;font-weight:900;color:var(--cx-text);letter-spacing:.06em;
  text-transform:uppercase;display:flex;align-items:center;gap:7px;cursor:pointer}
.tdx-case .metahead.defspanel>summary{justify-content:center;padding-left:50px;padding-right:22px;text-align:center}
.tdx-case .case-col>details.defspanel>summary{position:sticky;top:-3px;z-index:6;margin-top:-3px;padding-top:10px;min-height:45px;background:var(--cx-header-outline);border-bottom-color:var(--cx-header-divider);isolation:isolate;
  clip-path:polygon(0 0,calc(100% - 14px) 0,100% 14px,100% 100%,0 100%)}
.tdx-case .case-col>details.defspanel>summary::before{content:"";position:absolute;inset:4.5px 1.5px 0;z-index:-1;
  background:var(--cx-panel);
  clip-path:polygon(0 0,calc(100% - 13px) 0,100% 13px,100% 100%,0 100%)}
.tdx-case .defspanel>summary .mhcaret{color:var(--cx-alert);font-size:9px;transition:transform .15s}
.tdx-case .defspanel:not([open])>summary .mhcaret{transform:rotate(-90deg)}
.tdx-case .defspanel .metahead-body{padding:10px 12px}
.tdx-case .defspanel .layerbar{display:flex;flex-direction:column;gap:4px;margin:0 0 9px}
.tdx-case .defspanel .chip{display:flex;align-items:baseline;gap:7px;padding:5px 9px;border:none;border-radius:0;
  background:var(--cx-row);font-family:var(--jb);font-size:8.5px;color:var(--cx-sec);white-space:normal}
.tdx-case .defspanel .chip b{font-family:var(--ox);font-size:9px;font-weight:800;letter-spacing:.1em}
.tdx-case .defspanel .chip.perc{box-shadow:inset 0 0 0 1px rgba(120,215,255,.22)}
.tdx-case .defspanel .chip.perc b{color:var(--cx-cyantx)}
.tdx-case .defspanel .chip.anal{box-shadow:inset 0 0 0 1px rgba(143,240,182,.22)}
.tdx-case .defspanel .chip.anal b{color:var(--cx-pass)}
.tdx-case .defspanel .chip.model{box-shadow:inset 0 0 0 1px rgba(255,210,77,.22)}
.tdx-case .defspanel .chip.model b{color:var(--cx-model)}
.tdx-case .defspanel .chip.presc{box-shadow:inset 0 0 0 1px rgba(255,124,107,.24)}
.tdx-case .defspanel .chip.presc b{color:var(--cx-opp)}
.tdx-case .defspanel .pipebar{margin:0;font-family:var(--jb);font-size:8px;color:var(--cx-sec)}
.tdx-case .defspanel .pipebar .plab{color:var(--cx-ter);letter-spacing:.14em}
.tdx-case .defspanel .pipebar .pstep{border:none;border-radius:0;background:var(--cx-chip);
  box-shadow:inset 0 0 0 1px rgba(79,195,247,.2);color:var(--cx-sec)}
.tdx-case .defspanel .pipebar .pstep b{color:var(--cx-cyan)}
.tdx-case .defspanel .pipebar .parrow{color:var(--cx-ter)}

/* ---- the brow's live telemetry cells ---- */
.brow-tele .btstat{color:var(--cx-pass)}
.brow-tele .btstat b{cursor:help}
#ts-inv::before{content:"● "}      /* the dot inherits runTests' own pass/fail colour */
.brow-tele .btsub b{color:#fff;cursor:help}
/* the kernel-mode cell, rehomed from the deleted mount-plate annotation [S34] */
.brow-tele .btkern{color:#ffd7d2;cursor:help;letter-spacing:.1em}

/* ---- content-level fit inside the case columns: wide tables scroll inside
        their panels; side-by-side grids that assumed a full-width page stack
        or wrap so PAIRED ANSWERS stay visible at the narrowest column width
        (PORTING-GUIDE test 11). ---- */
.tdx-case .teams{grid-template-columns:1fr}
.tdx-case #readouts{grid-template-columns:1fr !important}
.tdx-case .tpcards{display:flex;flex-wrap:wrap}
.tdx-case .tpcards .tpcard{flex:1 1 200px;min-width:0}
.tdx-case .tpsec,.tdx-case #speed-panel-body{overflow-x:auto}
.tdx-case .matrixrow{display:grid;grid-template-columns:1fr 1fr;gap:11px}
.tdx-case .matcard,.tdx-case .tpcard,.tdx-case .dmgcard,.tdx-case .tstat,.tdx-case .bigv,.tdx-case .test{border-radius:0}
.tdx-case .tests{grid-template-columns:1fr}
/* ~~.tdx-case .statelist{max-height:340px}~~ STRUCK `[S35]`. That cap existed
   because the SHEET was the one scroller and a 690px state list would have
   dominated a single long page. The columns scroll themselves now, so the cap
   became a 340px scroller nested inside a column viewport measured at 376px —
   an inner scroll box very nearly the size of the outer one, which is the
   pathological case: the wheel goes to the inner list, the column behind it
   barely moves, and collapsing a panel changes the column's content height by
   ~1,100px while its scrollTop stays put. The author, on the built page: "the
   collapsing and scrolling of the rightmost column is all messed up."
   ONE COLUMN NOW MEANS ONE SCROLLBAR. The column is the bound; nothing inside
   it needs a second one. TRADE-OFF, STATED: a solve with many reachable states
   makes the inspector panel long and the right column's scroll long with it.
   That is the honest shape — a long list is long — where the cap made it
   short by hiding it behind a scrollbar the column already provides. */
.tdx-case .statelist{max-height:none;overflow-y:visible}
.tdx-case .setupocard{margin-top:11px}
.tdx-case .foot.dmgindep{margin:10px 14px 6px}

/* the sheet's scrollbar, in the case's own vocabulary */
.case-sheet::-webkit-scrollbar{width:10px}
.case-sheet::-webkit-scrollbar-track{background:rgba(79,195,247,.04)}
.case-sheet::-webkit-scrollbar-thumb{background:rgba(79,195,247,.22);border:2px solid #04070e}
.case-sheet{scrollbar-width:thin;scrollbar-color:rgba(79,195,247,.35) rgba(79,195,247,.06)}

/* ================== PUBLIC ANALYSIS TOOL SHELL ==========================
   Database, Speed, Types and Damage now use the Engine's case vocabulary.
   Their functional split is input/context on the left and the answer on the
   right; each side scrolls independently, and the same divider interaction
   used by the Engine lets the user choose how much room either job receives. */
.tdx-case.analysis-case .analysis-context{padding-right:1px}
.tdx-case.analysis-case .analysis-workspace{padding-left:1px}
.tdx-case.analysis-case .analysis-side{padding-left:1px}
.tdx-case.analysis-case .analysis-copy{margin:0;font-size:11px;line-height:1.58;color:var(--cx-sec)}
.tdx-case.analysis-case .feature-list{display:flex;flex-direction:column;gap:5px;margin-top:10px}
.tdx-case.analysis-case .feature-list span{display:block;padding:6px 8px;background:var(--cx-row);
  box-shadow:inset 0 0 0 1px rgba(79,195,247,.15);font-size:9.5px;line-height:1.45;color:var(--cx-sec)}
.tdx-case.analysis-case .feature-list b{display:inline-block;min-width:62px;margin-right:5px;
  font-family:var(--jb);font-size:8px;letter-spacing:.11em;color:var(--cx-cyantx)}
.tdx-case.analysis-case .about-dataset{display:grid;gap:7px;margin-top:12px;padding-top:10px;border-top:1px solid rgba(79,195,247,.2)}
.tdx-case.analysis-case .about-dataset-head{display:flex;align-items:center;justify-content:space-between;gap:8px;color:var(--cx-sec);font:700 9px/1.2 var(--ox);letter-spacing:.07em;text-transform:uppercase}
.tdx-case.analysis-case .about-dataset-head span{color:var(--cx-ter);font:700 7px/1 var(--jb);letter-spacing:.12em}
.tdx-case.analysis-case .about-dataset .pcbar{padding:0;background:none;clip-path:none;gap:6px}
.tdx-case.analysis-case .about-dataset .pcbar::before{display:none}
.tdx-case.analysis-case .about-dataset .pcgrp{gap:5px}
.tdx-case.analysis-case .about-dataset .pclbl{display:none}
.tdx-case.analysis-case .about-dataset .pccontext{padding:4px 6px;background:rgba(79,195,247,.055);box-shadow:inset 0 0 0 1px rgba(79,195,247,.16)}
.tdx-case.analysis-case .about-dataset .analysis-status{padding:6px 0 0;background:none;box-shadow:none;border-top:1px solid rgba(79,195,247,.12)}
.tdx-case.analysis-case .analysis-status{display:flex;flex-wrap:wrap;gap:6px;padding:9px 10px;
  background:rgba(79,195,247,.035);box-shadow:inset 0 0 0 1px rgba(79,195,247,.18)}
.tdx-case.analysis-case .analysis-status .prov{margin:0;background:var(--cx-chip);
  border-color:rgba(79,195,247,.24);color:var(--cx-sec)}
.tdx-case.analysis-case .analysis-note{display:flex;flex-direction:column;gap:5px;padding:10px 11px;
  background:rgba(79,195,247,.035);box-shadow:inset 0 0 0 1px rgba(79,195,247,.18);
  font-size:10.5px;line-height:1.55;color:var(--cx-sec);cursor:help}
.tdx-case.analysis-case .analysis-note b{font-family:var(--jb);font-size:8.5px;letter-spacing:.12em;color:var(--cx-cyantx)}
.tdx-case.analysis-case .upcoming-note{background:rgba(255,210,77,.055);box-shadow:inset 0 0 0 1px rgba(255,210,77,.25)}
.tdx-case.analysis-case .upcoming-note b{color:var(--cx-model)}

/* The shared controls were a horizontal full-page bar in the legacy layout.
   In the case they are an input module, so groups and team slots stack inside
   the bounded left column without hiding their dataset warning. */
.tdx-case.analysis-case #page-controls,
.tdx-case.analysis-case #team-controls,
.tdx-case.analysis-case #dataset-controls{display:block}
.tdx-case.analysis-case .pcbar{display:flex;flex-direction:column;align-items:stretch;gap:11px;margin:0;
  padding:11px;background:var(--cx-outline);border:0;border-radius:0;position:relative;
  clip-path:polygon(0 0,calc(100% - 14px) 0,100% 14px,100% 100%,0 100%)}
.tdx-case.analysis-case .pcbar::before{content:"";position:absolute;inset:1.5px;z-index:-1;
  background:var(--cx-panel);clip-path:polygon(0 0,calc(100% - 13px) 0,100% 13px,100% 100%,0 100%)}
.tdx-case.analysis-case .pcgrp{display:flex;flex-direction:column;align-items:stretch;gap:6px}
.tdx-case.analysis-case .pclbl{margin:0;color:var(--cx-ter);letter-spacing:.12em}
.tdx-case.analysis-case .pccontext{font-size:9px;line-height:1.45;color:var(--cx-sec)}
.tdx-case.analysis-case .pcgrp>select,.tdx-case.analysis-case .pcslot select{width:100%;min-width:0}
.tdx-case.analysis-case .pcslot{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px}
.tdx-case.analysis-case .pcslot .pcx{grid-column:2;grid-row:1}
.tdx-case.analysis-case .pcslot .pcunavailable{grid-column:1/-1}
.tdx-case.analysis-case .pcx,.tdx-case.analysis-case .pcadd{border-radius:0;background:var(--cx-chip)}
.tdx-case.analysis-case .pcadd{align-self:flex-start}
.tdx-case.analysis-case .pcdrop{margin:0;padding:8px;background:rgba(255,210,77,.06);
  box-shadow:inset 0 0 0 1px rgba(255,210,77,.24);line-height:1.5}
.tdx-case.analysis-case #team-controls .pcbar-team{padding:2px 0 0;background:transparent;clip-path:none;gap:7px}
.tdx-case.analysis-case #team-controls .pcbar-team::before{display:none}
.tdx-case.analysis-case #team-controls .pcgrp{gap:4px}
.tdx-case.analysis-case #team-controls .pcslot{gap:3px}
.tdx-case.analysis-case #team-controls .pcslot select{padding:4px 6px;font-size:9px;min-height:25px}
.tdx-case.analysis-case #team-controls .pcx{padding:2px 7px;min-height:25px}
.tdx-case.analysis-case #team-controls .pcadd{padding:4px 8px;font-size:8px}
.tdx-case.analysis-case .pcteammatrix{width:100%;min-width:0;overflow:hidden;margin-top:2px;border-top:1px solid rgba(79,195,247,.14);padding-top:5px}
.tdx-case.analysis-case .pcteammatrix table{width:100%;min-width:0;table-layout:fixed;border-collapse:collapse;font:600 6.8px/1.2 var(--jb);font-variant-numeric:tabular-nums}
.tdx-case.analysis-case .pcteammatrix th,.tdx-case.analysis-case .pcteammatrix td{padding:3px 2px;border-bottom:1px solid rgba(79,195,247,.1);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:right;color:var(--cx-sec)}
.tdx-case.analysis-case .pcteammatrix th{color:var(--cx-ter);font-weight:700}
.tdx-case.analysis-case .pcteammatrix th:first-child{width:14px}
.tdx-case.analysis-case .pcteammatrix td:nth-child(2),.tdx-case.analysis-case .pcteammatrix th:nth-child(2){width:76px;text-align:left;color:var(--cx-text)}
.tdx-case.analysis-case .pcteammatrix th:last-child,.tdx-case.analysis-case .pcteammatrix td:last-child{width:22px;text-align:center}
.tdx-case.analysis-case .pcteamchoose{display:block;width:100%;min-width:0;border:0;border-radius:0;background:transparent;color:var(--cx-text);padding:3px 2px;font:700 7.2px/1.15 var(--jb);text-align:left}
.tdx-case.analysis-case .pcteamname .pcunavailable{display:block;margin-top:2px;color:var(--cx-opp);font:700 5.5px/1.1 var(--jb)}
.tdx-case.analysis-case .pcteamaction .pcx{width:19px;min-height:19px;padding:0;border:1px solid rgba(255,124,107,.3);background:rgba(255,124,107,.08);color:var(--cx-opp)}

/* Speed and Damage both expose compact mutually-exclusive choices through
   `.seg`. The legacy pages relied on browser-default buttons here; inside the
   migrated shell these become one joined instrument control. */
.tdx-case.analysis-case .seg{display:inline-flex;align-items:stretch;overflow:hidden;
  background:var(--cx-chip);box-shadow:inset 0 0 0 1px rgba(79,195,247,.22)}
.tdx-case.analysis-case .seg button{appearance:none;border:0;border-left:1px solid rgba(79,195,247,.18);
  padding:4px 8px;background:transparent;color:var(--cx-ter);font-family:var(--jb);font-size:9px;
  letter-spacing:.035em;cursor:pointer}
.tdx-case.analysis-case .seg button:first-child{border-left:0}
.tdx-case.analysis-case .seg button:hover{color:var(--cx-text);background:rgba(79,195,247,.08)}
.tdx-case.analysis-case .seg button.on{color:var(--cx-cyantx);background:rgba(79,195,247,.16)}
.tdx-case.analysis-case .seg button.off,
.tdx-case.analysis-case .seg button:disabled{color:var(--cx-ter);opacity:.42;cursor:not-allowed;text-decoration:line-through}

/* Explorer owns an additional split inside its renderer. The outer workspace
   gives that table the remaining width and keeps any wide result local. */
.tdx-case.analysis-case #explorer-body,
.tdx-case.analysis-case #speed-panel-body,
.tdx-case.analysis-case #speed-tiers-body,
.tdx-case.analysis-case #type-profile-body,
.tdx-case.analysis-case #type-coverage-body,
.tdx-case.analysis-case #type-threat-type-body,
.tdx-case.analysis-case #type-threat-species-body,
.tdx-case.analysis-case #type-damage-body,
.tdx-case.analysis-case #damage-panel-body{min-width:0;overflow-x:auto}
.tdx-case.analysis-case #explorer-controls-body,
.tdx-case.analysis-case #explorer-results-body,
.tdx-case.analysis-case #speed-tools-body,
.tdx-case.analysis-case #damage-my-settings-body,
.tdx-case.analysis-case #damage-opponent-body,
.tdx-case.analysis-case #damage-field-body,
.tdx-case.analysis-case #damage-tools-body{min-width:0;overflow-x:auto}
.tdx-case.analysis-case #damage-battlefield-body{min-width:0;overflow-x:auto}

/* Damage Calculator: singles battlefield, centered bidirectional HTK PDF and two local Benches. */
.tdx-case .damage-field-panel{position:relative;margin-bottom:8px;border-color:rgba(255,210,77,.35);background:var(--cx-panel);box-shadow:inset 0 0 0 1.5px rgba(255,210,77,.1)}
.tdx-case .damage-field-panel .damage-battle-head{background:#151708;border-bottom-color:rgba(255,210,77,.2)}
.tdx-case .dmgsharedfield{display:grid;grid-template-columns:.75fr 1fr 1.35fr 1fr;gap:6px;padding:7px;background:#050b12}
.tdx-case .dmgsharedfield>div,.tdx-case .dmgsharedfield>label{min-width:0;padding:6px;background:rgba(79,195,247,.035);box-shadow:inset 0 0 0 1px rgba(79,195,247,.14)}
.tdx-case .dmgsharedfield>div>span,.tdx-case .dmgsharedfield>label>span{display:block;margin-bottom:4px;color:var(--cx-sec);font:850 6.5px/1 var(--jb);letter-spacing:.07em;text-transform:uppercase}
.tdx-case .dmgformatbadge{display:grid;align-content:center;gap:4px}.tdx-case .dmgformatbadge>.seg{display:grid;grid-template-columns:1fr 1fr}.tdx-case .dmgformatbadge>.seg button{padding:5px 3px;border:1px solid rgba(255,210,77,.22);background:#07111e;color:var(--cx-ter);font:850 6.5px/1 var(--jb);cursor:pointer}.tdx-case .dmgformatbadge>.seg button.on{border-color:#ffd24d;background:rgba(255,210,77,.11);color:#ffe795}.tdx-case .dmgformatbadge span{margin:0!important;color:var(--cx-sec)!important;font-size:6px!important}.tdx-case .dmgformatbadge small{color:var(--cx-ter);font:650 5.7px/1 var(--jb);text-transform:uppercase}
.tdx-case .dmgweather select{width:100%;padding:5px;border:1px solid rgba(79,195,247,.22);background:#030914;color:var(--cx-text);font:750 8px/1.2 var(--jb);text-transform:capitalize}
.tdx-case .dmglevel .dmgrow{display:grid;grid-template-columns:1fr}.tdx-case .dmglevel .dmglbl{display:none}.tdx-case .dmglevel .seg{display:grid;grid-template-columns:repeat(3,1fr)}
.tdx-case .dmgswap{display:grid;align-content:center}.tdx-case .dmgswap button{width:100%;padding:6px;border:1px solid rgba(255,210,77,.35);background:rgba(255,210,77,.08);color:#ffe795;font:900 7px/1 var(--jb);letter-spacing:.06em;cursor:pointer}
.tdx-case .dmgfieldscope{grid-column:1/-1}.tdx-case .dmgfieldscope>.dmgmovescope{padding:0;box-shadow:none;background:transparent}
.tdx-case .damage-settings-panel>div{padding:7px}
.tdx-case .dmgsettingsstack{display:grid;gap:7px}
.tdx-case .dmgsettingsteam{margin:6px 0 8px}.tdx-case .dmgsettingsteam>span{display:block;margin-bottom:5px;color:var(--cx-sec);font:850 7px/1 var(--jb);text-transform:uppercase;letter-spacing:.06em}
.tdx-case .dmgsettingsteamgrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-template-rows:repeat(2,64px);gap:4px}
.tdx-case .dmgteamslot{position:relative;display:grid;grid-template-rows:39px auto;justify-items:center;align-items:center;min-width:0;padding:3px;border:1px solid rgba(79,195,247,.22);background:#07111e;color:var(--cx-sec);cursor:pointer}.tdx-case .dmgteamslot>span{position:absolute;top:4px;left:4px;font:850 7px/1 var(--jb)}.tdx-case .dmgteamslot>img{width:39px;height:39px;object-fit:contain}.tdx-case .dmgteamslot>b{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:center;color:var(--cx-text);font:800 7px/1.2 var(--jb)}.tdx-case .dmgteamslot>i{font-style:normal;color:var(--cx-ter)}
.tdx-case .dmgteamslot:hover:not(:disabled),.tdx-case .dmgteamslot.on{border-color:var(--cx-cyan);background:rgba(79,195,247,.14)}.tdx-case .dmgsettingsteam.foe .dmgteamslot{border-color:rgba(255,89,89,.22)}.tdx-case .dmgsettingsteam.foe .dmgteamslot:hover:not(:disabled),.tdx-case .dmgsettingsteam.foe .dmgteamslot.on{border-color:#ff7777;background:rgba(255,89,89,.11)}.tdx-case .dmgteamslot:focus-visible{outline:2px solid #ffd24d;outline-offset:1px}.tdx-case .dmgteamslot.empty{border-style:dashed;cursor:pointer;opacity:.68}
.tdx-case .opponent-settings{border-color:rgba(255,89,89,.28)}.tdx-case .opponent-settings>summary{background:rgba(255,89,89,.035)}
.tdx-case .opponent-settings .tpmark{color:#ff8d8d;border-color:rgba(255,89,89,.42)}
.tdx-case .opponent-settings .dmgcard,.tdx-case .opponent-settings .dmgmoveblock,.tdx-case .opponent-settings .dmgsidebattle{border-color:rgba(255,89,89,.18)}
.tdx-case .dmgsidebattle{display:grid;gap:7px;padding:7px;border:1px solid rgba(79,195,247,.18);background:#050b16}
.tdx-case .dmgsidebattle>label{display:grid;gap:4px}.tdx-case .dmgsidebattle>label>span,.tdx-case .dmgsidecrit>span:first-child{color:var(--cx-sec);font:850 6.5px/1 var(--jb);letter-spacing:.06em;text-transform:uppercase}
.tdx-case .dmgsidebattle select{width:100%;padding:5px;border:1px solid rgba(79,195,247,.22);background:#030914;color:var(--cx-text);font:750 8px/1.2 var(--jb)}
.tdx-case .dmgsidecrit{display:grid;gap:4px}.tdx-case .dmgsidecrit small{color:var(--cx-ter);font:600 6px/1.25 var(--jb)}
.tdx-case .dmgstages{display:grid;gap:5px;padding:6px;background:rgba(79,195,247,.035);box-shadow:inset 0 0 0 1px rgba(79,195,247,.13)}.tdx-case .dmgstages>span{color:var(--cx-sec);font:850 6.5px/1 var(--jb);letter-spacing:.06em;text-transform:uppercase}.tdx-case .dmgstages>div{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:3px}.tdx-case .dmgstages label{display:grid;gap:2px}.tdx-case .dmgstages b{color:var(--cx-ter);font:800 6px/1 var(--jb)}.tdx-case .dmgstages select{padding:3px;font-size:7px}
.tdx-case .dmgspreadcheck>span:last-child{display:flex;align-items:center;gap:3px;color:var(--cx-cyantx);font:750 6.5px/1.2 var(--jb);text-transform:none}.tdx-case .dmgspreadcheck input{accent-color:var(--cx-cyan)}.tdx-case .dmgspreadcheck.unavailable{opacity:.58}
.tdx-case .dmgpoolnote{display:block;color:var(--cx-ter);font:650 6px/1.2 var(--jb);text-align:right}
.tdx-case .dmghprow{padding-top:5px;border-top:1px solid rgba(79,195,247,.12)}
.tdx-case .damage-battle-panel{border-color:rgba(79,195,247,.42)}
.tdx-case .damage-battle-panel{position:relative;margin-bottom:9px;background:var(--cx-panel);box-shadow:inset 0 0 0 1.5px var(--cx-outline)}
.tdx-case .damage-battle-head{padding:8px 12px;border-bottom:1px solid rgba(79,195,247,.16);background:#0b1828}
.tdx-case .damage-battle-head h2{display:flex;align-items:center;gap:7px;margin:0;color:var(--cx-text);font:800 10px/1 var(--ox);letter-spacing:.05em;text-transform:uppercase}
.tdx-case .dmgbattle{min-width:520px;background:#040a13}
.tdx-case .dmgarena{position:relative;min-height:258px;overflow:hidden;
  background:radial-gradient(ellipse at 50% 82%,rgba(20,77,106,.38),transparent 47%),linear-gradient(180deg,#061424 0,#07111e 52%,#030810 100%);border-bottom:1px solid rgba(79,195,247,.2)}
.tdx-case .dmgarena::before{content:"";position:absolute;inset:0;background-image:linear-gradient(rgba(79,195,247,.045) 1px,transparent 1px),linear-gradient(90deg,rgba(79,195,247,.035) 1px,transparent 1px);background-size:22px 22px;pointer-events:none}
.tdx-case .dmgarena::after{content:"";position:absolute;left:7%;right:7%;bottom:-34px;height:116px;border:1px solid rgba(79,195,247,.23);border-radius:50%;transform:perspective(260px) rotateX(58deg);box-shadow:0 0 34px rgba(79,195,247,.08),inset 0 0 28px rgba(79,195,247,.06);pointer-events:none}
.tdx-case .dmgfighter{position:absolute;inset:0;z-index:1;min-width:0;pointer-events:none}
.tdx-case .dmgfighter.ally{z-index:3}.tdx-case .dmgfighter.foe{z-index:2}
.tdx-case .dmgfighterplate{position:absolute;z-index:5;display:grid;grid-template-columns:auto 1fr;gap:2px 7px;align-items:baseline;min-width:0;width:39%;padding:7px 9px;background:rgba(3,10,19,.9);border:1px solid rgba(79,195,247,.3);box-shadow:6px 7px 0 rgba(0,0,0,.22)}
.tdx-case .dmgfighter.foe .dmgfighterplate{right:18px;top:14px}.tdx-case .dmgfighter.ally .dmgfighterplate{right:18px;bottom:35px}
.tdx-case .dmgfighterplate small{color:var(--cx-sec);font:800 6.5px/1 var(--jb);letter-spacing:.12em}
.tdx-case .dmgfighterplate b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--cx-text);font:800 13px/1.15 var(--ox);letter-spacing:.035em;text-transform:uppercase}
.tdx-case .dmgfighterplate>span{grid-column:2;display:flex;gap:3px;flex-wrap:wrap}
.tdx-case .dmgfighterplate>span span{padding:2px 5px;color:var(--cx-cyantx);background:rgba(79,195,247,.08);box-shadow:inset 0 0 0 1px rgba(79,195,247,.22);font:800 6.5px/1.2 var(--jb);text-transform:uppercase}
.tdx-case .dmgsprite{position:absolute;display:grid;place-items:center}
.tdx-case .dmgfighter.foe .dmgsprite{left:8%;top:11px;width:37%;height:138px}.tdx-case .dmgfighter.ally .dmgsprite{left:5%;bottom:4px;width:44%;height:180px}
.tdx-case .dmgsprite img{position:relative;z-index:2;width:104px;height:104px;object-fit:contain;image-rendering:auto;filter:drop-shadow(0 8px 4px rgba(0,0,0,.62))}
.tdx-case .dmgfighter.ally .dmgsprite img{width:142px;height:142px}
.tdx-case .dmgfighter.ally .dmgsprite img{transform:scaleX(-1)}
.tdx-case .dmgarena-ring{position:absolute;z-index:1;width:76%;height:32px;bottom:9px;border:2px solid rgba(79,195,247,.55);box-shadow:0 0 0 7px rgba(79,195,247,.07),0 0 18px rgba(79,195,247,.25);transform:skewX(-18deg)}
.tdx-case .foe .dmgarena-ring{border-color:rgba(255,89,89,.62);box-shadow:0 0 0 7px rgba(255,89,89,.06),0 0 18px rgba(255,89,89,.18);transform:skewX(18deg)}
.tdx-case .dmghpbar{position:absolute;z-index:5;width:36%;height:13px;background:#02070e;box-shadow:inset 0 0 0 1px rgba(79,195,247,.2);overflow:hidden}
.tdx-case .dmgfighter.foe .dmghpbar{right:18px;top:67px}.tdx-case .dmgfighter.ally .dmghpbar{right:18px;bottom:17px}
.tdx-case .dmghpbar i{position:absolute;inset:2px auto 2px 2px;width:clamp(2px,calc(var(--hp,100%) - 4px),calc(100% - 4px));background:#49cf78}
.tdx-case .dmghpbar span{position:relative;z-index:1;display:block;padding:2px 5px;color:#00130a;font:900 7px/1.25 var(--jb);text-align:right}
.tdx-case .dmgversus{position:absolute;z-index:6;left:50%;top:50%;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:5px;color:var(--cx-sec);transform:translate(-50%,-50%)}
.tdx-case .dmgversus>b{color:var(--cx-text);font:900 23px/1 var(--ox);text-shadow:0 0 14px rgba(79,195,247,.35)}
.tdx-case .dmgversus>span{white-space:nowrap;color:var(--cx-cyantx);font:800 7px/1 var(--jb);letter-spacing:.08em}
.tdx-case .dmgversus>button{width:33px;height:25px;border:1px solid rgba(79,195,247,.42);background:#071a2c;color:var(--cx-cyantx);font:900 15px/1 var(--jb);cursor:pointer}
.tdx-case .dmgarena.doubles{min-height:350px}.tdx-case .dmgarena.doubles .dmgfighterplate{width:31%;padding:5px 7px}.tdx-case .dmgarena.doubles .dmgfighterplate b{font-size:10px}.tdx-case .dmgarena.doubles .dmgfighterplate>span{display:none}.tdx-case .dmgarena.doubles .dmgsprite img{width:92px;height:92px}.tdx-case .dmgarena.doubles .dmgfighter.ally .dmgsprite img{width:112px;height:112px}
.tdx-case .dmgarena.doubles .dmgfighter.foe.slot1 .dmgsprite{left:4%;top:6px;width:28%;height:115px}.tdx-case .dmgarena.doubles .dmgfighter.foe.slot2 .dmgsprite{left:27%;top:45px;width:27%;height:112px}.tdx-case .dmgarena.doubles .dmgfighter.ally.slot1 .dmgsprite{left:3%;bottom:0;width:31%;height:145px}.tdx-case .dmgarena.doubles .dmgfighter.ally.slot2 .dmgsprite{left:27%;bottom:43px;width:29%;height:135px}
.tdx-case .dmgarena.doubles .dmgfighter.foe.slot1 .dmgfighterplate{right:14px;top:10px}.tdx-case .dmgarena.doubles .dmgfighter.foe.slot2 .dmgfighterplate{right:14px;top:73px}.tdx-case .dmgarena.doubles .dmgfighter.ally.slot1 .dmgfighterplate{right:14px;bottom:28px}.tdx-case .dmgarena.doubles .dmgfighter.ally.slot2 .dmgfighterplate{right:14px;bottom:91px}
.tdx-case .dmgarena.doubles .dmgfighter.foe.slot1 .dmghpbar{right:14px;top:49px;width:29%}.tdx-case .dmgarena.doubles .dmgfighter.foe.slot2 .dmghpbar{right:14px;top:112px;width:29%}.tdx-case .dmgarena.doubles .dmgfighter.ally.slot1 .dmghpbar{right:14px;bottom:13px;width:29%}.tdx-case .dmgarena.doubles .dmgfighter.ally.slot2 .dmghpbar{right:14px;bottom:76px;width:29%}.tdx-case .dmgarena.doubles .partner{filter:saturate(.92)}
.tdx-case .dmgclock{background:#020811}
.tdx-case .dmgclock>header{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:7px 9px;border-bottom:1px solid rgba(79,195,247,.22)}
.tdx-case .dmgclock>header>div{display:flex;align-items:baseline;gap:7px}.tdx-case .dmgclockicon{color:var(--cx-cyan);font-size:13px}
.tdx-case .dmgclock>header b{color:var(--cx-cyantx);font:900 10px/1 var(--ox);letter-spacing:.08em}.tdx-case .dmgclock>header small{color:var(--cx-ter);font:600 7px/1 var(--jb)}
.tdx-case .dmgaccuracy{display:flex;align-items:center;gap:5px;color:var(--cx-pass);font:800 7px/1 var(--jb);text-transform:uppercase}.tdx-case .dmgaccuracy input{accent-color:#49cf78}
.tdx-case .htkmirrormeta{display:grid;grid-template-columns:1fr auto 1fr;align-items:start;gap:7px;padding:6px 9px 2px;color:var(--cx-ter);font:650 6px/1.25 var(--jb)}.tdx-case .htkmirrormeta>span{display:grid;gap:2px;min-width:0}.tdx-case .htkmirrormeta>span:nth-child(2){display:block;align-self:center;color:#ffd24d;font-weight:900;letter-spacing:.06em;text-align:center}.tdx-case .htkmirrormeta>span:last-child{text-align:right}.tdx-case .htkmirrormeta b{font:900 6.5px/1 var(--jb);letter-spacing:.055em}.tdx-case .htkmirrormeta .negative b{color:#ff8d8d}.tdx-case .htkmirrormeta .positive b{color:var(--cx-cyantx)}
.tdx-case .htkmirrorscroll{overflow-x:auto;scrollbar-color:rgba(79,195,247,.34) #020811}.tdx-case .htkmirrorchart{display:grid;grid-template-columns:34px minmax(466px,1fr);min-width:500px;padding:3px 6px 0}
.tdx-case .htkmirrory{display:flex;flex-direction:column;justify-content:space-between;align-items:flex-end;height:119px;padding:18px 5px 17px 0;color:var(--cx-ter);font:700 5.5px/1 var(--jb)}
.tdx-case .htkmirrorplot{position:relative;display:grid;grid-template-columns:repeat(var(--htk-cols),minmax(0,1fr)) 27px repeat(var(--htk-cols),minmax(0,1fr));gap:1px;align-items:stretch;height:119px;min-width:466px}
.tdx-case .htkmirrorgrid{position:absolute;z-index:0;inset:18px 0 17px;background:linear-gradient(to bottom,rgba(145,177,198,.2) 0 1px,transparent 1px 50%,rgba(145,177,198,.14) 50% calc(50% + 1px),transparent calc(50% + 1px) calc(100% - 1px),rgba(145,177,198,.25) calc(100% - 1px));pointer-events:none}
.tdx-case .htkmirrorbar{position:relative;z-index:1;display:grid;grid-template-rows:18px 84px 17px;align-items:end;min-width:0;text-align:center}.tdx-case .htkmirrorbar>span{align-self:center;overflow:visible;color:var(--cx-sec);font:800 5.4px/1 var(--jb);font-variant-numeric:tabular-nums;white-space:nowrap}.tdx-case .htkmirrorbar>small{align-self:center;color:var(--cx-cyantx);font:900 6.5px/1 var(--jb)}.tdx-case .htkmirrorbar.negative>small{color:#ff8d8d}
.tdx-case .htkmirrorbar>i{position:relative;display:block;height:84px;border-left:1px solid rgba(145,177,198,.065);border-right:1px solid rgba(145,177,198,.065)}.tdx-case .htkmirrorbar>i>b{position:absolute;left:1px;right:1px;bottom:0;height:var(--htk-height);min-height:2px;background:linear-gradient(180deg,#8be5ff,#1888bd);box-shadow:0 0 8px rgba(79,195,247,.2)}.tdx-case .htkmirrorbar.negative>i>b{background:linear-gradient(180deg,#ff8787,#a6323c);box-shadow:0 0 8px rgba(255,89,89,.18)}.tdx-case .htkmirrorbar.zero>i>b,.tdx-case .htkmirrorbar.missing>i{min-height:0}.tdx-case .htkmirrorbar.missing>small{opacity:.22}
.tdx-case .htkmirrorzero{position:relative;z-index:2;display:grid;grid-template-rows:18px 84px 17px;place-items:center;border-left:1px solid rgba(255,255,255,.22);border-right:1px solid rgba(255,255,255,.22);color:var(--cx-ter);font:800 6px/1 var(--jb)}.tdx-case .htkmirrorzero>span{grid-row:3;color:#ffd24d;font:900 7px/1 var(--jb)}.tdx-case .htkmirrorzero>b{position:absolute;top:48px;color:#ffd24d;font:900 7px/1 var(--jb);letter-spacing:.08em;transform:rotate(-90deg)}
.tdx-case .htkmirroraxis{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:3px 8px 6px 40px;color:var(--cx-ter);font:650 6px/1.2 var(--jb)}.tdx-case .htkmirroraxis>b{color:#ffd24d;font-size:6.3px;letter-spacing:.055em}.tdx-case .htkmirroraxis>span{color:var(--cx-pass);font-weight:850;text-transform:uppercase}
.tdx-case .dmgclock>footer{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:6px 9px;background:rgba(79,195,247,.045);color:var(--cx-sec);font:700 6.5px/1.2 var(--jb)}.tdx-case .dmgclock>footer b{color:var(--cx-pass);text-transform:uppercase}.tdx-case .dmgclock-empty{padding:14px;color:var(--cx-sec);font:700 8px/1.3 var(--jb)}
.tdx-case .dmgbench{border-top:1px solid rgba(79,195,247,.22);background:#040b14}.tdx-case .dmgbench>header{display:flex;align-items:center;justify-content:space-between;padding:7px 9px;border-bottom:1px solid rgba(79,195,247,.15)}.tdx-case .dmgbench>header>div{display:flex;align-items:baseline;gap:7px}.tdx-case .dmgbench>header b{color:#ffd24d;font:900 9px/1 var(--ox);letter-spacing:.09em}.tdx-case .dmgbench>header small{color:var(--cx-ter);font:650 6.5px/1 var(--jb)}
.tdx-case .dmgbenchsides{display:grid;grid-template-columns:1fr 1fr;gap:7px;padding:7px}.tdx-case .dmgbenchside{min-width:0;padding:6px;border:1px solid rgba(79,195,247,.2);background:#050d18}.tdx-case .dmgbenchside.foe{border-color:rgba(255,89,89,.22)}
.tdx-case .dmgbenchside>header{display:flex;align-items:center;justify-content:space-between;gap:5px;margin-bottom:5px}.tdx-case .dmgbenchside>header>div{display:grid;gap:2px;min-width:0}.tdx-case .dmgbenchside>header b{color:var(--cx-cyantx);font:900 7px/1 var(--jb);letter-spacing:.07em}.tdx-case .dmgbenchside.foe>header b{color:#ff8d8d}.tdx-case .dmgbenchside>header span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--cx-sec);font:650 6px/1 var(--jb)}.tdx-case .dmgbenchside>header button{flex:none;padding:4px 5px;border:1px solid rgba(79,195,247,.22);background:#07111e;color:var(--cx-sec);font:800 6px/1 var(--jb);cursor:pointer}
.tdx-case .dmgbenchgrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-template-rows:repeat(2,48px);gap:4px}.tdx-case .dmgbenchslotwrap{position:relative;min-width:0;min-height:0}.tdx-case .dmgbenchslot{position:relative;display:grid;grid-template-columns:12px 27px minmax(0,1fr);align-items:center;gap:2px;width:100%;height:100%;min-width:0;padding:2px 3px;border:1px solid rgba(79,195,247,.17);background:#07111e;color:var(--cx-sec);cursor:pointer}.tdx-case .dmgbenchside.foe .dmgbenchslot{border-color:rgba(255,89,89,.15)}.tdx-case .dmgbenchslot.on,.tdx-case .dmgbenchslot.onfield{border-color:var(--cx-cyan);background:rgba(79,195,247,.14);box-shadow:inset 0 0 9px rgba(79,195,247,.08)}.tdx-case .dmgbenchside.foe .dmgbenchslot.on,.tdx-case .dmgbenchside.foe .dmgbenchslot.onfield{border-color:#ff7777;background:rgba(255,89,89,.11)}.tdx-case .dmgbenchslot.onfield>span{color:#ffd24d}.tdx-case .dmgbenchslot.editing{outline:1px dashed #ffd24d;outline-offset:-3px}
.tdx-case .dmgbenchslot>span{font:900 6px/1 var(--jb)}.tdx-case .dmgbenchslot>img{width:27px;height:27px;object-fit:contain}.tdx-case .dmgbenchslot>b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--cx-text);font:800 5.8px/1.1 var(--jb);text-transform:uppercase}.tdx-case .dmgbenchslot.empty{grid-template-columns:12px 15px 1fr;border-style:dashed}.tdx-case .dmgbenchslot.empty>i{color:#ffd24d;font:900 11px/1 var(--jb);font-style:normal}.tdx-case .dmgbenchslot.empty>b{color:var(--cx-ter)}
.tdx-case .dmgbenchedit{position:absolute;z-index:2;right:2px;top:2px;display:grid;place-items:center;width:15px;height:15px;padding:0;border:1px solid rgba(139,218,255,.3);border-radius:50%;background:#0b2437;color:#bfeeff;font:900 8px/1 var(--jb);cursor:pointer;opacity:.72}.tdx-case .dmgbenchslotwrap:hover .dmgbenchedit,.tdx-case .dmgbenchedit:focus-visible{opacity:1;border-color:#ffd24d;color:#ffe795;outline:0}
.tdx-case .dmgbenchpicker{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:5px;margin-top:5px}.tdx-case .dmgbenchpicker>span{color:var(--cx-sec);font:800 6px/1 var(--jb);text-transform:uppercase}.tdx-case .dmgbenchpicker select{min-width:0;width:100%;padding:4px;border:1px solid rgba(79,195,247,.2);background:#030914;color:var(--cx-text);font:700 7px/1.2 var(--jb)}

.tdx-case .dmgcard{padding:7px;gap:5px;background:#050b16;border-color:rgba(79,195,247,.18)}
.tdx-case .dmgcardh{display:flex;align-items:baseline;justify-content:space-between;gap:6px;color:var(--cx-sec);font:800 7px/1 var(--jb)}
.tdx-case .dmgcardh b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--cx-text);font:800 10px/1 var(--ox)}
.tdx-case .dmgrow{gap:4px}.tdx-case .dmglbl{min-width:43px;color:var(--cx-sec);font:800 7px/1 var(--jb)}
.tdx-case .dmgrow select,.tdx-case .dmgrow input{min-width:0;flex:1;padding:4px 5px;border:1px solid rgba(79,195,247,.22);border-radius:0;background:#030914;color:var(--cx-text);font:700 8px/1.2 var(--jb)}
.tdx-case .dmgrow input[type=number]{max-width:54px;flex:0 0 54px}.tdx-case .dmghint{color:var(--cx-ter);font:600 6.5px/1.2 var(--jb)}
.tdx-case .dmgallocation{display:grid;gap:5px;padding:6px;background:rgba(79,195,247,.035);box-shadow:inset 0 0 0 1px rgba(79,195,247,.14)}.tdx-case .dmgallocation>div:first-child{display:flex;align-items:baseline;justify-content:space-between;gap:6px}.tdx-case .dmgallocation>div:first-child b{color:var(--cx-cyantx);font:900 7px/1 var(--jb);letter-spacing:.07em;text-transform:uppercase}.tdx-case .dmgallocation>div:first-child span{color:var(--cx-ter);font:650 6px/1 var(--jb)}
.tdx-case .dmgallocationgrid{display:grid;grid-template-columns:1fr 1fr;gap:4px}.tdx-case .dmgallocationgrid label{display:grid;grid-template-columns:minmax(0,1fr) 38px;align-items:center;gap:3px;min-width:0}.tdx-case .dmgallocationgrid label>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--cx-sec);font:750 6px/1 var(--jb)}.tdx-case .dmgallocationgrid input{width:38px;min-width:0;padding:3px;border:1px solid rgba(79,195,247,.22);background:#030914;color:var(--cx-text);font:800 7px/1 var(--jb)}
.tdx-case .dmgcheck{display:flex;align-items:center;gap:5px;padding-left:47px;color:var(--cx-ter);font:600 6.5px/1.2 var(--jb)}.tdx-case .dmgcheck input{accent-color:var(--cx-cyan)}
.tdx-case .dmgmoveblock{display:grid;gap:5px;padding-top:6px;border-top:1px solid rgba(79,195,247,.14)}
.tdx-case .dmgstab{padding:3px 5px;background:rgba(79,195,247,.12);box-shadow:inset 0 0 0 1px rgba(79,195,247,.35);color:var(--cx-cyantx);font:900 7px/1 var(--jb)}
.tdx-case .dmgmovescope{display:grid;grid-template-columns:1fr 1fr;gap:3px}.tdx-case .dmgmovescope button{padding:4px;border:1px solid rgba(79,195,247,.18);background:#07111e;color:var(--cx-ter);font:800 7px/1 var(--jb);cursor:pointer}.tdx-case .dmgmovescope button.on{border-color:var(--cx-cyan);color:var(--cx-cyantx);background:rgba(79,195,247,.12)}.tdx-case .dmgmovescope span{grid-column:1/-1;color:var(--cx-ter);font:600 6.5px/1 var(--jb);text-align:right}
.tdx-case .dmghead5{grid-template-columns:repeat(5,minmax(0,1fr));min-width:600px}.tdx-case .dmghead5 .dmgmetric-ko{grid-column:auto;display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;text-align:left}
.tdx-case .dmgmetric em{color:var(--cx-sec);font:600 7px/1.2 var(--jb);font-style:normal}.tdx-case .dmgcritmetric .dmgbig{color:#ffd24d}.tdx-case .dmgacc{color:var(--cx-pass);font:900 13px/1 var(--jb)}
.tdx-case .dmgfactorstrip{display:flex;gap:4px;flex-wrap:wrap;margin:5px 0 8px}.tdx-case .dmgfactorstrip span{padding:3px 5px;background:#050b16;box-shadow:inset 0 0 0 1px rgba(79,195,247,.16);color:var(--cx-sec);font:700 7px/1 var(--jb)}.tdx-case .dmgfactorstrip b{color:var(--cx-text)}

/* Damage Formula lives in the right instrument column. Its five metrics fold
   to two columns there, while the roll and rounding audit remain fully visible
   without forcing the whole column into a horizontal scroller. */
.tdx-case.analysis-case .analysis-side #damage-panel-body{overflow-x:visible}
.tdx-case.analysis-case .analysis-side #damage-panel .dmgmatch{gap:6px;margin:0 0 7px;padding:6px 7px}
.tdx-case.analysis-case .analysis-side #damage-panel .dmgmatch-main{gap:3px;font-size:8px;line-height:1.3}
.tdx-case.analysis-case .analysis-side #damage-panel .dmgmatch-meta{gap:2px}.tdx-case.analysis-case .analysis-side #damage-panel .dmgmatch-meta span{padding:2px 3px;font-size:6px}
.tdx-case.analysis-case .analysis-side #damage-panel .dmghead5{grid-template-columns:repeat(2,minmax(0,1fr));min-width:0;gap:4px}
.tdx-case.analysis-case .analysis-side #damage-panel .dmghead5 .dmgmetric-ko{grid-column:1/-1;align-items:stretch}
.tdx-case.analysis-case .analysis-side #damage-panel .dmgmetric{padding:5px 6px}.tdx-case.analysis-case .analysis-side #damage-panel .dmgmetric small{font-size:6.5px}
.tdx-case.analysis-case .analysis-side #damage-panel .dmgbig{font-size:17px}.tdx-case.analysis-case .analysis-side #damage-panel .dmgavg,.tdx-case.analysis-case .analysis-side #damage-panel .dmgacc{font-size:11px}.tdx-case.analysis-case .analysis-side #damage-panel .dmgko{font-size:10px;text-align:left}
.tdx-case.analysis-case .analysis-side #damage-panel .dmgfactorstrip{gap:2px;margin:4px 0 6px}.tdx-case.analysis-case .analysis-side #damage-panel .dmgfactorstrip span{padding:2px 3px;font-size:6px}
.tdx-case.analysis-case .analysis-side #damage-panel .dmgrolls{gap:2px;margin-bottom:7px}.tdx-case.analysis-case .analysis-side #damage-panel .dmgroll{padding:2px 3px;border-radius:2px;font-size:7px}
.tdx-case.analysis-case .analysis-side #damage-panel .dmgsteps{padding:7px;font-size:7px;line-height:1.55;white-space:normal;overflow-wrap:anywhere;overflow-x:visible}

.tdx-case .dmgtools{display:grid;gap:9px;padding:8px}.tdx-case .dmgtoolgroup{display:grid;gap:5px}.tdx-case .dmgtoolgroup>b,.tdx-case .dmgtoolgrid label>span{color:var(--cx-sec);font:800 7px/1 var(--jb);letter-spacing:.07em;text-transform:uppercase}.tdx-case .dmgtoolgroup .seg{display:grid;grid-template-columns:1fr 1fr}
.tdx-case .dmgtoolgroup>small{color:var(--cx-ter);font:600 6.5px/1.3 var(--jb)}.tdx-case .dmgtoolgrid{display:grid;grid-template-columns:1fr 1fr;gap:6px}.tdx-case .dmgtoolgrid label{display:grid;gap:4px}.tdx-case .dmgtoolgrid select{width:100%;min-width:0;padding:5px;border:1px solid rgba(79,195,247,.22);background:#030914;color:var(--cx-text);font:700 8px/1.2 var(--jb);text-transform:capitalize}
.tdx-case .dmgfieldgrid label:first-child{grid-column:1/-1}.tdx-case .dmgcritpair{display:grid;grid-template-columns:1fr 1fr;gap:5px}.tdx-case .dmgcritpair label{display:grid;gap:4px;min-width:0}.tdx-case .dmgcritpair label>span:first-child{color:var(--cx-sec);font:800 6.5px/1 var(--jb);text-transform:uppercase}
.tdx-case .dmgcritstage{display:grid!important;grid-template-columns:repeat(4,1fr)}.tdx-case .dmgcritstage button{padding-left:3px!important;padding-right:3px!important}.tdx-case .dmgtooltoggle{display:flex;align-items:center;gap:7px;padding:7px;background:rgba(73,207,120,.045);box-shadow:inset 0 0 0 1px rgba(73,207,120,.24)}.tdx-case .dmgtooltoggle input{accent-color:#49cf78}.tdx-case .dmgtooltoggle span{display:grid;gap:2px}.tdx-case .dmgtooltoggle b{color:var(--cx-pass);font:800 7px/1 var(--jb)}.tdx-case .dmgtooltoggle small{color:var(--cx-ter);font:600 6.5px/1.2 var(--jb)}
.tdx-case .dmgtotal{display:grid;justify-items:center;gap:3px;padding:10px 7px;border:1px solid rgba(255,210,77,.62);background:#050b0f}.tdx-case .dmgtotal small{color:#ffd24d;font:900 8px/1 var(--ox);letter-spacing:.08em;text-transform:uppercase}.tdx-case .dmgtotal>b{color:#ffd24d;font:900 28px/1 var(--jb)}.tdx-case .dmgtotal>span{color:var(--cx-text);font:800 8px/1 var(--jb)}.tdx-case .dmgtotal>em{color:var(--cx-ter);font:600 6.5px/1.2 var(--jb);font-style:normal}

/* Shared Team: remove ordinal column, make slot identity and stats legible. */
.tdx-case.analysis-case .pcteammatrix table{font-size:8.3px}
.tdx-case.analysis-case .pcteammatrix th,.tdx-case.analysis-case .pcteammatrix td{padding:5px 3px}
.tdx-case.analysis-case .pcteammatrix th:first-child,.tdx-case.analysis-case .pcteammatrix td:first-child{width:96px;text-align:left;color:var(--cx-text)}
.tdx-case.analysis-case .pcteammatrix th:nth-child(2),.tdx-case.analysis-case .pcteammatrix td:nth-child(2){width:auto;text-align:right;color:var(--cx-sec)}
.tdx-case.analysis-case .pcteammatrix th:last-child,.tdx-case.analysis-case .pcteammatrix td:last-child{width:16px}
.tdx-case.analysis-case .pcteamname{position:relative;isolation:isolate;padding:0!important;background:#050d18}
.tdx-case.analysis-case .pcteamchoose{box-sizing:border-box;width:100%;height:100%;min-height:29px;margin:0;padding:5px 8px;border:0;border-radius:0;background:transparent;color:var(--cx-text);font-size:9.3px;cursor:pointer;text-align:left}
.tdx-case.analysis-case .pcteamchoose:hover{background:rgba(79,195,247,.07);color:#fff}
.tdx-case.analysis-case .pcteamchoose:focus-visible{outline:0;box-shadow:inset 3px 0 var(--cx-cyan),inset 0 0 0 1px rgba(79,195,247,.5)}
/* The full-cell chooser remains the hit target, but the matrix separator is a
   higher paint layer. This prevents the button's hover/focus background from
   punching a gap through the Team box's horizontal grid line. */
.tdx-case.analysis-case .pcteamname::after{content:"";position:absolute;z-index:3;left:0;right:0;bottom:0;height:1px;
  background:rgba(112,204,255,.35);pointer-events:none}
.tdx-case.analysis-case #team-controls .pcteamaction .pcx{width:15px;height:15px;min-height:15px;padding:0;border:0;background:transparent;font-size:12px;line-height:1}
.tdx-case .spspcontrol>span{display:grid;grid-template-columns:20px minmax(0,1fr) 32px 20px;align-items:center;gap:4px}.tdx-case .spspcontrol input{width:100%;accent-color:var(--cx-cyan)}.tdx-case .spspcontrol output{color:var(--cx-cyantx);font:900 8px/1 var(--jb);text-align:center}.tdx-case .spspcontrol button{width:20px;height:20px;padding:0;border:1px solid rgba(79,195,247,.3);background:#071a2c;color:var(--cx-cyantx);font:900 11px/1 var(--jb);cursor:pointer}.tdx-case .spspcontrol button:hover:not(:disabled){border-color:var(--cx-cyan);background:rgba(79,195,247,.16)}.tdx-case .spspcontrol button:disabled{opacity:.28;cursor:default}

/* Keep the bidirectional chart readable without letting the Duel Clock span
   the entire battlefield column. The chart remains internally responsive and
   falls back to its own horizontal scroller only on narrower layouts. */
.tdx-case .damage-battle-panel .dmgclock{width:min(88%,500px);margin:0 auto 6px}
.tdx-case .damage-battle-panel .dmgclock .htkmirrorchart{grid-template-columns:30px minmax(426px,1fr);min-width:456px}
.tdx-case .damage-battle-panel .dmgclock .htkmirrorplot{min-width:426px}

@media (max-width:900px){.tdx-case .dmghead5{grid-template-columns:repeat(2,minmax(0,1fr));min-width:0}.tdx-case .dmgbattle{min-width:470px}.tdx-case .damage-battle-panel .dmgclock{width:100%}}
.tdx-case.analysis-case #explorer-controls-body .explbar{margin:0;display:flex;flex-direction:column;align-items:stretch}
.tdx-case.analysis-case #explorer-controls-body .explcount{margin-left:0}
.tdx-case.analysis-case #explorer-results-body .stattable{min-width:315px}

/* Database Explorer analysis displays. They inherit the hardware shell and
   keep the existing pool/query panels intact; only the centre instrument and
   its right-side controls change with the selected display. */
.tdx-case.analysis-case .explsurfacenav{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1px;margin:0 0 8px;background:#18364b;border:1px solid #294b62}
.tdx-case.analysis-case .explsurfacenav button{display:flex;align-items:center;justify-content:space-between;gap:8px;min-width:0;padding:8px 10px;border:0;background:#071522;color:#7897aa;font:800 8px/1 var(--ox);letter-spacing:.055em;text-transform:uppercase;cursor:pointer}
.tdx-case.analysis-case .explsurfacenav button+button{border-left:1px solid #294b62}
.tdx-case.analysis-case .explsurfacenav button span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tdx-case.analysis-case .explsurfacenav button small{flex:none;color:#56758a;font:800 6px/1 var(--jb);letter-spacing:.08em}
.tdx-case.analysis-case .explsurfacenav button:hover,.tdx-case.analysis-case .explsurfacenav button.on{background:#0b2638;color:#dff6ff;box-shadow:inset 0 -2px var(--cx-cyan)}
.tdx-case.analysis-case .explsurfacenav button.on small{color:#ffd24d}

/* Table-only presentation choices stay behind one compact disclosure. */
.tdx-case.analysis-case .expldisplaysettings{margin:0 0 8px;border:1px solid #294b62;background:#071522}
.tdx-case.analysis-case .expldisplaysettings>summary{display:flex;align-items:center;gap:8px;min-height:34px;padding:0 9px;list-style:none;cursor:pointer;color:#cde8f3;font:850 8px/1 var(--ox);letter-spacing:.06em;text-transform:uppercase}
.tdx-case.analysis-case .expldisplaysettings>summary::-webkit-details-marker{display:none}
.tdx-case.analysis-case .expldisplaysettings>summary:hover{background:rgba(79,195,247,.07);color:#fff}
.tdx-case.analysis-case .expldisplaysettings>summary>svg{flex:none;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.tdx-case.analysis-case .expldisplaysettings .settingsgear{width:16px;height:16px;color:var(--cx-cyantx)}
.tdx-case.analysis-case .expldisplaysettings .settingschev{width:13px;height:13px;margin-left:2px;transition:transform .16s ease}
.tdx-case.analysis-case .expldisplaysettings[open] .settingschev{transform:rotate(180deg)}
.tdx-case.analysis-case .expldisplaysettings>summary>small{margin-left:auto;color:#66879a;font:700 6px/1 var(--jb);letter-spacing:.035em;text-transform:none}
.tdx-case.analysis-case .expldisplaymenu{display:grid;gap:9px;padding:8px;border-top:1px solid #294b62;background:#050f19}
.tdx-case.analysis-case .expldisplaymenu .recordview{margin:0;background:#071a29;box-shadow:inset 0 0 0 1px rgba(79,195,247,.2)}
.tdx-case.analysis-case .displaycolumnsettings{display:grid;gap:6px;padding:7px 8px;border:1px solid rgba(79,195,247,.2);background:#071a29}
.tdx-case.analysis-case .displaycolumnsettings>header{display:flex;align-items:center;justify-content:space-between;gap:10px}
.tdx-case.analysis-case .displaycolumnsettings>header>span{display:grid;gap:2px}.tdx-case.analysis-case .displaycolumnsettings>header b{color:#d9eff8;font:850 7px/1 var(--ox);letter-spacing:.06em;text-transform:uppercase}
.tdx-case.analysis-case .displaycolumnsettings>header small{color:#69899b;font:650 6px/1.2 var(--jb)}
.tdx-case.analysis-case .displaycolumnsettings>header>div{display:flex;gap:4px;flex-wrap:wrap;justify-content:flex-end}
.tdx-case.analysis-case .displaycolumnsettings .collist{padding:5px 0 0;border-top:1px solid rgba(79,195,247,.12)}
.tdx-case.analysis-case .displaycolumnsettings .colmv{display:grid;place-items:center;width:18px;height:20px}
.tdx-case.analysis-case .displaycolumnsettings .colmv svg{width:12px;height:12px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}

.tdx-case.analysis-case .mathformula-strip{display:flex;align-items:stretch;gap:1px;margin-bottom:7px;background:#24445a;border:1px solid #24445a}
.tdx-case.analysis-case .mathformula-strip>span{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:7px;flex:1;min-width:0;padding:6px 8px;background:#07131f}
.tdx-case.analysis-case .mathformula-strip b{display:grid;place-items:center;width:18px;height:18px;background:rgba(79,195,247,.13);border:1px solid rgba(79,195,247,.36);color:var(--cx-cyantx);font:900 8px/1 var(--ox);text-transform:uppercase}
.tdx-case.analysis-case .mathformula-strip code{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;background:transparent;color:#c9deea;font:700 7px/1.2 var(--jb)}
.tdx-case.analysis-case .mathformula-strip.mathchannels{display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}.tdx-case.analysis-case .mathformula-strip.mathchannels>span{flex:none}
.tdx-case.analysis-case .mathformula-strip.species>span{flex:auto}.tdx-case.analysis-case .mathformula-strip.species b{width:auto;padding:0 6px;color:#ffe795;border-color:rgba(255,210,77,.38);background:rgba(255,210,77,.09)}

.tdx-case.analysis-case .explvizhead{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;padding:8px 10px;border:1px solid #294b62;border-bottom:0;background:#091a29}
.tdx-case.analysis-case .explvizhead>div{display:grid;gap:3px;min-width:0}.tdx-case.analysis-case .explvizhead b{color:#e7f7ff;font:900 11px/1 var(--ox);letter-spacing:.065em;text-transform:uppercase}
.tdx-case.analysis-case .explvizhead span{color:#7897aa;font:650 6.5px/1.25 var(--jb)}.tdx-case.analysis-case .explvizhead .vizgesture{flex:none;color:#ffd24d;font:800 5.8px/1 var(--jb);letter-spacing:.06em}
.tdx-case.analysis-case .explvizframe{position:relative;min-height:446px;border:1px solid #294b62;background:radial-gradient(ellipse at 50% 42%,rgba(20,75,104,.23),transparent 55%),linear-gradient(180deg,#030b14,#06111c);overflow:hidden}
.tdx-case.analysis-case .explvizframe::before{content:"";position:absolute;inset:0;background-image:linear-gradient(rgba(79,195,247,.025) 1px,transparent 1px),linear-gradient(90deg,rgba(79,195,247,.025) 1px,transparent 1px);background-size:20px 20px;pointer-events:none}
.tdx-case.analysis-case #expl-analysis-svg{position:relative;display:block;width:100%;height:446px;touch-action:none;user-select:none}
.tdx-case.analysis-case #expl-analysis-svg .viz-grid{stroke:#2c536a;stroke-width:1;stroke-opacity:.43}.tdx-case.analysis-case #expl-analysis-svg .viz-axis{stroke:#8edfff;stroke-width:1.4;stroke-opacity:.82}
.tdx-case.analysis-case #expl-analysis-svg .viz-dot{cursor:pointer;stroke:rgba(218,246,255,.32);stroke-width:.7;transition:r .12s ease,stroke-width .12s ease,filter .12s ease}
.tdx-case.analysis-case #expl-analysis-svg .viz-dot:hover,.tdx-case.analysis-case #expl-analysis-svg .viz-dot:focus{stroke:#fff;stroke-width:2;outline:none;filter:url(#viz-glow)}
.tdx-case.analysis-case #expl-analysis-svg .viz-dot.selected{stroke:#ffd24d;stroke-width:2.4;filter:url(#viz-glow)}
.tdx-case.analysis-case #expl-analysis-svg .viz-label{fill:#93b9ca;font:800 9px/1 var(--jb);letter-spacing:.035em;text-transform:uppercase}.tdx-case.analysis-case #expl-analysis-svg .viz-empty{fill:#88a8b9;font:700 11px/1 var(--jb)}
.tdx-case.analysis-case .explplotdetail{display:flex;align-items:center;gap:10px;min-height:31px;padding:6px 10px;border:1px solid #294b62;border-top:0;background:#071522;color:#7897aa;font:700 7px/1.3 var(--jb)}
.tdx-case.analysis-case .explplotdetail b{color:#fff;font:900 9px/1.2 var(--ox);letter-spacing:.03em;text-transform:uppercase}.tdx-case.analysis-case .explplotdetail span{padding-left:9px;border-left:1px solid #294b62}

.tdx-case.analysis-case .vizcontrols{display:grid;gap:7px;padding:8px}.tdx-case.analysis-case .vizcontrolgroup{display:grid;gap:5px}.tdx-case.analysis-case .vizcontrolgroup>b,.tdx-case.analysis-case .vizselect>span{color:#88a8b9;font:850 6.5px/1 var(--jb);letter-spacing:.075em;text-transform:uppercase}
.tdx-case.analysis-case .vizcontrols .seg{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));border:1px solid #294b62;background:#07111e}
.tdx-case.analysis-case .vizcontrols .seg button{padding:6px 5px;border:0;background:#07111e;color:#718fa2;font:800 7px/1 var(--jb);cursor:pointer}.tdx-case.analysis-case .vizcontrols .seg button+button{border-left:1px solid #294b62}
.tdx-case.analysis-case .vizcontrols .seg button.on,.tdx-case.analysis-case .vizcontrols .seg button:hover{background:rgba(79,195,247,.13);color:#c9f0ff;box-shadow:inset 0 -2px var(--cx-cyan)}
.tdx-case.analysis-case .vizpresetrow{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:3px}.tdx-case.analysis-case .vizpresetrow button{min-width:0;padding:5px 3px;border:1px solid #294b62;background:#07111e;color:#89a8ba;font:750 6.5px/1.15 var(--jb);cursor:pointer}
.tdx-case.analysis-case .vizpresetrow button:hover,.tdx-case.analysis-case .vizpresetrow button.on{border-color:var(--cx-cyan);background:rgba(79,195,247,.11);color:var(--cx-cyantx)}
.tdx-case.analysis-case .axisbuilder{display:grid;grid-template-columns:1fr 1fr 1fr;gap:4px;padding:6px;border:1px solid #294b62;background:#071522}
.tdx-case.analysis-case .axisbuilder header{grid-column:1/-1;display:flex;align-items:center;gap:6px;min-width:0}.tdx-case.analysis-case .axisbuilder header b{display:grid;place-items:center;flex:none;width:18px;height:18px;border:1px solid rgba(79,195,247,.38);background:rgba(79,195,247,.12);color:var(--cx-cyantx);font:900 8px/1 var(--ox)}
.tdx-case.analysis-case .axisbuilder header span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#c8deea;font:700 6.5px/1.2 var(--jb)}
.tdx-case.analysis-case :is(.axisbuilder,.vizselect,.spacechannel) select{min-width:0;width:100%;padding:5px 4px;border:1px solid #2b4d64;background:#030b14;color:#cce5f0;font:700 6.5px/1.2 var(--jb)}
.tdx-case.analysis-case :is(.axisbuilder,.spacechannel) select:disabled{opacity:.35}.tdx-case.analysis-case .vizselect{display:grid;gap:4px}
.tdx-case.analysis-case .spaceauto{justify-content:center;padding:7px!important}.tdx-case.analysis-case .spacechannels{display:grid;gap:3px}
.tdx-case.analysis-case .spacechannel{display:grid;grid-template-columns:minmax(0,1fr) 98px;align-items:center;gap:6px;padding:5px 6px;border:1px solid #294b62;background:#071522}.tdx-case.analysis-case .spacechannel.off{opacity:.48}
.tdx-case.analysis-case .spacechannel label{display:flex;align-items:center;gap:6px;min-width:0;cursor:pointer}.tdx-case.analysis-case .spacechannel input{accent-color:var(--cx-cyan)}.tdx-case.analysis-case .spacechannel label span{display:grid;gap:2px;min-width:0}
.tdx-case.analysis-case .spacechannel label b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#d9edf7;font:800 6.7px/1.1 var(--jb)}.tdx-case.analysis-case .spacechannel label small{color:#66879a;font:600 5.8px/1 var(--jb)}

.tdx-case.analysis-case .vizaudit{display:grid;gap:8px;padding:8px;color:#9bb5c4;font:650 7px/1.45 var(--jb)}.tdx-case.analysis-case .vizauditcount{display:flex;align-items:baseline;gap:7px;padding:8px 9px;border:1px solid rgba(79,195,247,.32);background:rgba(79,195,247,.06)}
.tdx-case.analysis-case .vizauditcount b{color:#dff7ff;font:900 22px/1 var(--ox)}.tdx-case.analysis-case .vizauditcount span{color:#8eb1c2;font:800 6.5px/1.2 var(--jb);text-transform:uppercase;letter-spacing:.055em}
.tdx-case.analysis-case .vizaudit ul{display:grid;gap:4px;margin:0;padding-left:16px}.tdx-case.analysis-case .vizaudit li b{color:#ffd24d}.tdx-case.analysis-case .vizaudit code{color:#cbefff;background:rgba(79,195,247,.07);padding:1px 3px}.tdx-case.analysis-case .vizaudit p{margin:0;padding:7px;border-left:2px solid #ffd24d;background:rgba(255,210,77,.045)}
.tdx-case.analysis-case .vizsource,.tdx-case.analysis-case .vizstamp{display:grid;gap:3px;padding:7px 8px;border:1px solid #294b62;background:#050f19}.tdx-case.analysis-case .vizsource b,.tdx-case.analysis-case .vizstamp b{color:#dff7ff;font:850 7px/1.2 var(--ox);letter-spacing:.04em;text-transform:uppercase}
.tdx-case.analysis-case .vizsource span,.tdx-case.analysis-case .vizstamp span{color:#9ebdcc}.tdx-case.analysis-case .vizsource small,.tdx-case.analysis-case .vizstamp small{color:#607e90;font-size:5.8px;overflow-wrap:anywhere}

@media (max-width:900px){.tdx-case.analysis-case .explsurfacenav button{padding:7px 5px}.tdx-case.analysis-case .explsurfacenav button small{display:none}.tdx-case.analysis-case .mathformula-strip.mathchannels{grid-template-columns:repeat(2,minmax(0,1fr))}.tdx-case.analysis-case .explvizframe,.tdx-case.analysis-case #expl-analysis-svg{min-height:390px;height:390px}}

/* Dedicated Pokédex: fixed grouped/compact entry rail, central record
   sections and current-section filters on the right. */
.dexadvanced{display:block;margin-top:12px;color:#8fdcff;font:700 10px/1.4 var(--mono);letter-spacing:.04em;text-decoration:none}
.dex-section-picker{min-height:54px}
.dxsectionselect{display:grid;gap:6px;width:100%;min-width:0;padding:10px 14px;min-height:54px;box-sizing:border-box}
.dxsectionselect label{display:grid;gap:5px;width:100%;min-width:0;color:#dff4ff;font:800 10px/1.2 var(--ox);letter-spacing:.08em;text-transform:uppercase}
.dxsectionselect select{width:100%;min-width:0;background:#07131f;color:#e7f7ff;border:1px solid #31536d;border-radius:3px;padding:7px 9px;font:700 10px/1.2 var(--mono)}
.dxsectionselect>span{min-width:0;color:#7894a6;font:600 8.5px/1.35 var(--mono)}
.dex-list-frame .dex-list-shell{padding:0}
.dex-list-frame>summary .tag{margin-left:5px}
.dex-list-frame>summary .explsum{margin-left:auto;color:#7894a6;font:700 8px/1 var(--mono)}
.dex-case .col-left .dexlist{grid-template-columns:1fr;padding:6px}
.dex-case .col-left .dexlist.dense .dexrow{grid-template-columns:46px minmax(0,1fr) auto;grid-template-areas:'num identity source' 'num types types';gap:4px 7px}
.dex-case .col-left .dexlist.dense .dxpokemonrow{grid-template-columns:40px 42px minmax(0,1fr) auto;grid-template-areas:'num art identity source' 'num art types types';gap:3px 7px;min-height:54px}
.dex-case .col-left .dexlist.dense .dextypes{justify-content:flex-start}
.dexctl{display:grid;gap:9px;padding:10px}
.dexctl label{display:grid;gap:4px;color:#9fb2c2;font:700 9px/1.2 var(--mono);letter-spacing:.08em;text-transform:uppercase}
.dexctl input,.dexctl select{width:100%;min-width:0;background:#07131f;color:#e7f7ff;border:1px solid #27445b;border-radius:4px;padding:7px 8px;font:600 11px/1.2 var(--mono)}
.dexmatch{padding:8px;border:1px solid #243d51;background:#091926;color:#9fb2c2;font:600 10px/1.35 var(--mono)}
.dexmatch b{color:#fff;font-size:14px}
.dexpager{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 10px;border-bottom:1px solid #1b3448;color:#a7bac7;font:600 9px/1.2 var(--mono);text-transform:uppercase;letter-spacing:.06em}
.dexpager:last-child{border-top:1px solid #1b3448;border-bottom:0}
.dexpager button{border:1px solid #31536d;background:#0a1c2b;color:#bfe9ff;border-radius:3px;padding:5px 8px;font:inherit;cursor:pointer}
.dexpager button:disabled{opacity:.35;cursor:not-allowed}
.dexlist{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:5px;padding:8px}
.dexrow{display:grid;grid-template-columns:53px minmax(90px,1fr) auto 46px;grid-template-areas:'num identity types source' 'num meta meta source';align-items:center;gap:2px 8px;min-width:0;text-align:left;background:#091724;border:1px solid #20394d;border-radius:4px;color:#d9edf7;padding:8px;cursor:pointer;font-family:var(--mono)}
.dexlist.dense .dexrow{grid-template-areas:'num identity types source';padding:6px 8px}
.dexrow:hover,.dexrow.on{border-color:#4fc3f7;background:#0c2335;box-shadow:inset 3px 0 #4fc3f7}
.dexrow.incomplete{border-color:#76572b}
.dexnum{grid-area:num;color:#718ba0;font:700 9px/1 var(--mono);letter-spacing:.05em}
.dexidentity{grid-area:identity;display:grid;gap:2px;min-width:0}.dexname{min-width:0;overflow:hidden;text-overflow:ellipsis;color:#fff;font:800 11px/1.2 var(--mono)}
.dexthumb{grid-area:art;display:grid;width:40px;height:40px;place-items:center;overflow:hidden;border:1px solid rgba(79,195,247,.18);background:radial-gradient(circle,rgba(79,195,247,.13),rgba(5,16,27,.25) 68%)}
.dexthumb img{display:block;width:38px;height:38px;object-fit:contain;filter:drop-shadow(0 3px 3px rgba(0,0,0,.55))}
.dexslug{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis;color:#5f829b;font:600 7.5px/1.2 var(--mono)}
.dextypes{grid-area:types;display:flex;justify-content:flex-end;gap:3px;flex-wrap:wrap}
.dexmeta{grid-area:meta;color:#8097a7;font:600 8px/1.2 var(--mono)}
.dxsrcdots{grid-area:source;display:flex;align-items:center;justify-content:flex-end;gap:5px;min-width:38px}.dxsrcdots i{display:block;width:7px;height:7px;border-radius:50%;box-shadow:0 0 6px currentColor}.dxsrcsv{color:#62d3ae;background:#62d3ae}.dxsrcchamp{color:#ff9b72;background:#ff9b72}.dxalt{padding:2px 4px;border:1px solid #476075;border-radius:999px;color:#a9c3d4;font:800 7px/1 var(--mono)}
.typebadge{display:inline-flex;align-items:center;justify-content:center;min-width:0;border:1px solid color-mix(in srgb,var(--type-color) 70%,white);background:color-mix(in srgb,var(--type-color) 55%,#122538);color:#fff;border-radius:5px;padding:4px 9px;font:800 10.5px/1 var(--mono);text-shadow:0 1px 2px #000;white-space:nowrap}
.dexnull{color:#d5a451;font:700 8px/1.2 var(--mono)}
.dexdetail,.dexpanelbody{padding:10px;color:#bfd0dc;font:600 10px/1.45 var(--mono)}
.dexprofile{background:linear-gradient(135deg,rgba(11,29,45,.46),rgba(7,20,33,.18))}
.dexdetail header{display:grid;grid-template-columns:auto 1fr;gap:5px 8px;align-items:center;padding-bottom:10px;border-bottom:1px solid #274154}
.dexdetail header h3{margin:0;color:#fff;font:900 16px/1.1 var(--mono);letter-spacing:.02em}
.dexdetail header .dexslug{grid-column:2}
.dexdetail header .dextypes{grid-column:1/-1;justify-content:flex-start}
.dexfacts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;margin:10px 0;background:#20394c;border:1px solid #20394c}
.dexpanelbody>.dexfacts{margin:0}
.dexfacts span{display:grid;gap:3px;background:#091826;padding:7px;color:#e3f4fc}
.dexfacts b,.dexsection b{color:#7794a8;font-size:8px;letter-spacing:.08em;text-transform:uppercase}
.dexstats{display:grid;gap:5px;margin:10px 0}
.dexpanelbody>.dexstats{margin:0 0 8px}
.dexstat{position:relative;display:grid;grid-template-columns:30px 28px minmax(48px,1fr);align-items:center;gap:6px}
.dexstat>.dexstat-label{color:#b6d9ed;font:850 11px/1 var(--mono)}.dexstat>b{color:#fff;text-align:right;font:900 22px/1 var(--mono);font-variant-numeric:tabular-nums}
.dexstat-track{display:block;height:14px;border-radius:999px;background:#102b3c;box-shadow:inset 0 0 0 1px #274b61}
.dexstat-track>i{display:block;width:var(--stat-fill);height:100%;min-width:0;border-radius:999px;background:var(--stat-color);box-shadow:0 0 7px color-mix(in srgb,var(--stat-color) 42%,transparent)}
.dexstat.is-elite>b{color:#bcecff;text-shadow:0 0 7px rgba(120,215,255,.42)}
.dexstat.is-top-three>b{color:#ffe45c;text-shadow:0 0 6px #fff7c7,0 0 13px #ffd700a6}
.dexstat.is-top-three .dexstat-track>i{background:linear-gradient(100deg,#fffef4 0%,#fff3ae 24%,#ffd700 56%,#fff2a0 73%,#f2b700 100%);box-shadow:0 0 8px #fff4b8,0 0 18px #ffd700bf;filter:saturate(1.18) brightness(1.08)}
.dxstatramp{display:flex;flex-wrap:wrap;gap:4px 8px;margin:8px 0 10px;color:#7893a7;font:600 7px/1.3 var(--mono)}.dxstatramp span{display:flex;align-items:center;gap:4px}.dxstatramp i{width:9px;height:5px;background:var(--stat-color)}
.dexsection{display:grid;gap:5px;padding:9px 0;border-top:1px solid #20384b}.dexsection span{color:#d2e3ec}
.dexsubsection{display:grid;gap:5px;padding:8px 0;border-top:1px solid #20384b}.dexsubsection:first-child{padding-top:0;border-top:0}.dexsubsection>b{color:#7794a8;font-size:8px;letter-spacing:.08em;text-transform:uppercase}.dexsubsection>span{color:#d2e3ec}
.dexprofile>.dexsubsection{margin-top:8px;padding-bottom:0}
.dexlearnset .dxscroll{max-height:none}
#dex-detail-body,#dex-audit-body,#dex-learnset-body,#dex-records-body{min-width:0;overflow-x:auto}
.deximageframe{position:relative;min-height:244px;display:grid;place-items:center;overflow:hidden;
  background:radial-gradient(circle at 50% 48%,rgba(79,195,247,.17),rgba(79,195,247,.035) 46%,transparent 68%)}
.deximageframe::before{content:"";position:absolute;width:226px;height:226px;border-radius:50%;
  border:1px solid rgba(79,195,247,.18);box-shadow:inset 0 0 28px rgba(79,195,247,.09),0 0 28px rgba(79,195,247,.07)}
.deximageframe img{position:relative;z-index:1;display:block;width:224px;height:224px;object-fit:contain;image-rendering:auto;
  filter:drop-shadow(0 12px 16px rgba(0,0,0,.48))}
.deximagecaption{position:absolute;right:10px;bottom:8px;z-index:2;color:#7894a6;font:700 8px/1.2 var(--mono);letter-spacing:.07em;text-transform:uppercase}
.deximagefallback{position:relative;z-index:1;display:none;max-width:260px;text-align:center;color:#7894a6;font:600 9px/1.5 var(--mono)}
.deximagefallback b{display:block;margin-bottom:5px;color:#e5c177;font-family:var(--ox);font-size:11px;text-transform:uppercase;letter-spacing:.06em}
.deximageframe.missing .deximagefallback{display:block}
.dex-case .panel[hidden]{display:none!important}
.dxmodes{display:grid;gap:5px;padding:8px}.dxmodes button{display:grid;gap:2px;text-align:left;border:1px solid #243e52;border-radius:4px;background:#081725;color:#b7cad7;padding:7px 8px;cursor:pointer;font-family:var(--mono)}
.dxmodes button b{display:flex;align-items:center;justify-content:space-between;gap:8px;color:#e9f8ff;font-size:10px;text-transform:uppercase;letter-spacing:.05em}.dxmodes button b i{color:#7193aa;font:700 8px/1 var(--mono)}.dxmodes button span{font-size:8px;color:#7894a6}.dxmodes button:hover,.dxmodes button.on{border-color:#4fc3f7;background:#0c2537;box-shadow:inset 3px 0 #4fc3f7}
.dxfilter{min-width:0;margin:0;border:1px solid #243d51;padding:7px;background:#081622}.dxfilter legend{padding:0 4px;color:#83a1b4;font:700 8px/1.2 var(--mono);letter-spacing:.07em;text-transform:uppercase}
.dxchips{display:flex;gap:4px;flex-wrap:wrap}.dxchips button,.dxclear,.dxlink{border:1px solid #31536d;background:#0a1c2b;color:#bfe9ff;border-radius:3px;padding:5px 7px;font:700 8px/1.15 var(--mono);cursor:pointer}.dxchips button.on,.dxlink:hover,.dxlink.on{border-color:#4fc3f7;background:#0c2a40;color:#fff;box-shadow:inset 0 0 0 1px #4fc3f744}.dxclear{width:100%;color:#e5c177;border-color:#66512a}.dxcount{display:inline-block;margin-left:5px;padding:1px 3px;border-radius:999px;background:rgba(255,255,255,.08);color:#8ca7ba;font-size:7px}
.dxchip{display:inline-block;margin:1px 2px 1px 0;padding:2px 5px;border:1px solid #31536d;border-radius:999px;background:#0b2030;color:#bfe9ff;font:700 8px/1.2 var(--mono);white-space:nowrap}.dxchip.warn{border-color:#795c2f;color:#efc773}.dxchip.champ{border-color:#79534e;color:#ffb7a9}.dxchip.sv{border-color:#28654e;color:#82e1bc}
.dxscroll{max-height:calc(100vh - 190px)}.dxtable{min-width:760px}.dxtable th button{border:0;background:transparent;color:inherit;padding:0;font:inherit;cursor:pointer}.dxtable td{vertical-align:top}.dxtable td small{display:block;max-width:390px;margin-top:3px;color:#718a9b;font:500 8px/1.35 var(--mono)}
.dxmetrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:6px;padding:8px}.dxmetrics span{display:grid;gap:2px;border:1px solid #263f52;background:#081826;padding:8px;color:#7f99aa;font:700 8px/1.2 var(--mono);text-transform:uppercase}.dxmetrics b{color:#fff;font-size:16px}
.dxsources{display:flex;flex-wrap:wrap;gap:3px;margin:9px 0}.dxabilitylist{display:grid;gap:4px}.dxabilitylist span{display:block;border:1px solid #20394c;background:#091826;padding:6px}.dxabilitylist b{display:inline-block;min-width:82px;margin-right:6px;color:#9edfff}.dxabilitylist i{color:#718b9c;font-style:normal}.dxevo{display:grid;grid-template-columns:1fr 1fr;gap:5px}.dxevo span{display:grid;gap:4px;border:1px solid #20394c;background:#091826;padding:7px}.dxevofamily{display:grid;gap:5px;margin-bottom:5px;padding:7px;border:1px solid #20394c;background:#091826}.dxevofamily>b{color:#7794a8;font-size:8px;letter-spacing:.08em;text-transform:uppercase}.dxevofamily>div{display:flex;align-items:center;flex-wrap:wrap;gap:4px}.dxevofamily>div>span{color:#4d718a}.dxmethod{margin:5px 0 0;color:#8097a7}.dxlink{display:inline-block;text-decoration:none}
.dxprov{display:grid;gap:9px;padding:9px}.dxprov section{border:1px solid #223e52;background:#081724;padding:10px}.dxprov h3{margin:0 0 8px;color:#fff;font:800 11px/1.2 var(--mono);text-transform:uppercase;letter-spacing:.06em}.dxprov p{color:#a8bfcd;font:600 9px/1.55 var(--mono)}.dxprov dl{display:grid;grid-template-columns:120px 1fr;gap:1px;margin:0;background:#1e394c}.dxprov dt,.dxprov dd{margin:0;background:#091826;padding:6px;font:600 9px/1.3 var(--mono)}.dxprov dt{color:#809bad}.dxprov dd{color:#d9edf7}.dxprov article{display:grid;gap:3px;padding:7px 0;border-top:1px solid #20394c}.dxprov article:first-of-type{border-top:0}.dxprov article b{color:#e7f7ff;font:700 9px/1.25 var(--mono)}.dxprov article span{color:#7f9bab;font:600 8px/1.35 var(--mono)}.dxhash{overflow-wrap:anywhere;font-size:8px!important}
.dxsidecopy{padding:10px;color:#b8ccd8;font:600 10px/1.55 var(--mono)}
.preserved-controls{margin-top:8px;border-top:1px solid #284154;padding-top:8px}
.statexbtn{display:flex;width:100%;min-height:31px;justify-content:center;margin:0 0 8px;border-style:solid;border-radius:4px;padding:6px 10px;background:rgba(79,195,247,.045);font-size:9.5px;text-transform:uppercase;letter-spacing:.055em}
.statexbtn.on{border-color:var(--cyan);background:rgba(79,195,247,.13);color:var(--text)}

@media(max-width:980px){.dexlist{grid-template-columns:1fr}}
.tdx-case.analysis-case .foot-bar{gap:14px}

/* ================== DEX SELECTED-RECORD WORKSPACE =========================
   The Dex alone owns a fixed centre stage. The shared shell and the other
   tools retain their independent column scrolling; only .dex-centre clips its
   column and budgets the selected record into a principal stage + one compact
   support strip. */
.dex-case .dex-centre{overflow-y:hidden;scrollbar-gutter:auto;gap:8px;padding:0 1px}
.dex-stage-shell,.dex-support-shell{position:relative;min-width:0;border:1px solid rgba(79,195,247,.34);
  background:linear-gradient(145deg,rgba(7,23,36,.98),rgba(4,13,23,.97));
  box-shadow:inset 0 0 24px rgba(79,195,247,.035);clip-path:polygon(0 0,calc(100% - 15px) 0,100% 15px,100% 100%,0 100%)}
.dex-stage-shell{flex:1 1 0!important;min-height:0;display:flex;flex-direction:column}
.dex-support-shell{flex:0 0 132px!important;min-height:0;overflow:hidden}
.dex-stage-head{height:34px;flex:none;display:flex;align-items:center;gap:7px;padding:0 11px;border-bottom:1px solid rgba(79,195,247,.2);
  background:linear-gradient(90deg,rgba(79,195,247,.09),transparent 58%)}
.dex-stage-head h2{margin:0;color:var(--cx-text);font:900 10.5px/1 var(--ox);letter-spacing:.07em;text-transform:uppercase}
.dex-stage-head #dex-stage-state{display:flex;align-items:center}
#dex-stage-body{flex:1;min-height:0;overflow:hidden}
#dex-support-body{height:100%;min-height:0}
.dxselected-stage{height:100%;min-height:0;box-sizing:border-box;animation:dx-stage-in .18s ease-out}
@keyframes dx-stage-in{from{opacity:.68;transform:translateY(3px)}to{opacity:1;transform:none}}
.dxidentity-head{display:grid;grid-template-columns:auto minmax(0,1fr) auto;grid-template-areas:'num identity types' 'sources sources sources';align-items:center;gap:3px 9px;min-width:0;padding:10px 13px 7px;border-bottom:1px solid rgba(79,195,247,.16)}
.dxidentity-head>.dexnum{grid-area:num}.dxidentity-head>div:first-of-type{grid-area:identity;min-width:0}.dxidentity-head>.dextypes{grid-area:types;justify-content:flex-end}.dxidentity-head>.dxsources{grid-area:sources;margin:3px 0 0}
.dxidentity-head h3{margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#fff;font:900 20px/1.05 var(--ox);letter-spacing:.035em;text-transform:uppercase}
.dxidentity-head small{display:block;margin-top:2px;overflow:hidden;text-overflow:ellipsis;color:#64849a;font:700 7.5px/1.2 var(--mono)}
.dxidentity-head>.dextypes{gap:6px}.dxidentity-head>.dextypes .typebadge{border:1px solid color-mix(in srgb,var(--type-color) 58%,#fff);border-radius:2px;padding:5px 10px;background:linear-gradient(135deg,color-mix(in srgb,var(--type-color) 86%,#fff),var(--type-color));box-shadow:inset 0 0 0 1px rgba(255,255,255,.12),0 0 9px color-mix(in srgb,var(--type-color) 30%,transparent);clip-path:polygon(5px 0,100% 0,calc(100% - 5px) 100%,0 100%);font-size:9px;letter-spacing:.06em}
.dxpokemon-stage{display:flex;flex-direction:column}.dxpokemon-stage>.pcdrop{margin:6px 10px 0;padding:5px 8px}
.dxpokemon-focus{flex:1;min-height:0;display:grid;grid-template-columns:118px minmax(0,1fr);align-items:stretch;padding:4px 8px 0}
.dxfocus-facts{position:relative;z-index:4;align-self:start;display:grid;gap:5px;margin:8px 0 0 4px}
.dxfocus-facts span{display:grid;gap:2px;padding:6px 8px;border-left:2px solid rgba(79,195,247,.5);background:rgba(8,31,48,.72);color:#e8f7ff;font:800 10px/1.1 var(--mono)}
.dxfocus-facts b{color:#71a6c5;font:700 7px/1 var(--mono);letter-spacing:.08em;text-transform:uppercase}
.dex-case .deximageframe{position:relative;min-height:0;height:100%;box-sizing:border-box;display:grid;place-items:center;overflow:hidden;padding:3px 12px 22px;background:none;container-type:size;--dex-art-size:min(72cqw,98.75cqh,340px);--dex-floor-height:min(48px,14cqh);--dex-floor-bottom:5%;--dex-scope-size:min(82cqw,calc(95cqh - var(--dex-floor-height) - 6px),360px)}
.dex-case .deximageframe::before{content:none}
/* Draw the floor ellipse directly in its final plane: no perspective texture
   resampling or broad glow to soften the rings. */
.dex-case .deximageframe::after{content:"";position:absolute;z-index:0;left:12%;right:8%;bottom:var(--dex-floor-bottom);height:var(--dex-floor-height);border:1px solid rgba(79,195,247,.55);border-radius:50%;background:radial-gradient(ellipse closest-side at center,transparent 0 20%,rgba(79,195,247,.36) 21% 27%,transparent 28% 46%,rgba(79,195,247,.36) 47% 53%,transparent 54% 72%,rgba(79,195,247,.36) 73% 79%,transparent 80%);box-shadow:0 0 5px rgba(79,195,247,.16);transform:none}
/* JS maps this vertical scanner plane to each artwork's measured alpha box.
   These values are safe first-paint fallbacks: the final ring has bounded size,
   follows the silhouette centre, and never crosses the floor target. */
.dex-case .deximageframe .dxscanner-scope{position:absolute;z-index:1;display:block;left:50%;bottom:calc(var(--dex-floor-bottom) + var(--dex-floor-height));width:calc(var(--dex-scope-size) * 1.3333);height:var(--dex-scope-size);max-width:none;object-fit:contain;object-position:center;opacity:.75;mix-blend-mode:lighten;mask-image:radial-gradient(ellipse closest-side at center,#000 80%,transparent 100%);pointer-events:none;transform:translateX(-50%);filter:contrast(1.5) brightness(.95) drop-shadow(0 0 3px rgba(13,224,241,.2))}
/* dexGroundArtwork measures each image's real alpha edge. The visible Pokémon
   therefore touches the lower third of the floor target even when the source
   canvas carries unusually deep transparent padding. */
.dex-case .deximageframe .dxpokemon-art{position:absolute;z-index:2;display:block;left:50%;bottom:calc(var(--dex-floor-bottom) + 16px - var(--dex-art-alpha-bottom,16px));width:var(--dex-art-size);height:var(--dex-art-size);max-width:100%;object-fit:contain;object-position:center center;transform:translateX(-50%);filter:drop-shadow(0 12px 14px rgba(0,0,0,.55))}
.dex-case .deximagecaption{right:12px;bottom:7px;z-index:3}.dex-case .deximagefallback{z-index:3}
.dxformrail{position:relative;z-index:6;flex:none;display:flex;align-items:center;gap:7px;min-width:0;padding:5px 11px;border-top:1px solid rgba(79,195,247,.14);background:rgba(5,18,29,.92)}
.dxformrail>b{flex:none;color:#7196ad;font:800 7px/1 var(--mono);letter-spacing:.08em;text-transform:uppercase}.dxformrail>.dxchips{flex:1;min-width:0;max-height:27px;overflow:hidden;flex-wrap:nowrap}.dxformrail>.dxchips button{flex:none;max-width:128px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dxformmore{position:static;flex:none}.dxformmore>summary{list-style:none;border:1px solid #4fc3f7;background:#0c2a40;color:#dff6ff;padding:5px 8px;font:800 8px/1.15 var(--mono);cursor:pointer}.dxformmore>summary::-webkit-details-marker{display:none}.dxformmore[open]>summary{background:#164665}
.dxformmenu{position:absolute;right:11px;bottom:calc(100% + 5px);z-index:10;display:grid;grid-template-columns:repeat(auto-fit,minmax(104px,1fr));gap:4px;width:min(480px,calc(100% - 22px));max-height:180px;overflow:auto;padding:8px;border:1px solid #4fc3f7;background:#061521;box-shadow:0 10px 28px rgba(0,0,0,.65)}
.dxformmenu button{min-width:0;border:1px solid #31536d;background:#0a1c2b;color:#bfe9ff;padding:6px 7px;font:700 8px/1.2 var(--mono);cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dxformmenu button.on{border-color:#7fdcff;background:#123c57;color:#fff}
.dxpokemon-support{height:100%;box-sizing:border-box;display:grid;grid-template-columns:minmax(0,1fr) 180px;gap:13px;padding:8px 11px}
.dxpokemon-support h3{margin:0 0 5px;color:#86aec6;font:800 8px/1 var(--mono);letter-spacing:.08em;text-transform:uppercase}
.dxstatsblock{display:grid;align-content:center;min-width:0}.dxpokemon-support .dexstats{grid-template-columns:repeat(2,minmax(0,1fr));gap:7px 14px;margin:0}.dxpokemon-support .dexstat{grid-template-columns:27px 25px 1fr}
.dxsupport-facts,.dxmove-support{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;background:#1d394d}
.dxsupport-facts span,.dxmove-support span{display:grid;align-content:center;gap:3px;min-width:0;padding:6px;background:#071724;color:#deeff8;font:700 8px/1.2 var(--mono);overflow-wrap:anywhere}
.dxsupport-facts b,.dxmove-support b{color:#7195ac;font:700 6.5px/1 var(--mono);letter-spacing:.06em;text-transform:uppercase}

.dxmove-stage{display:flex;flex-direction:column}.dxmove-plate{flex:1;min-height:0;display:grid;grid-template-columns:minmax(260px,.82fr) minmax(0,1fr);gap:10px;align-items:stretch;padding:12px}
.dxmove-metrics{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}.dxmove-metrics span{display:flex;flex-direction:column;justify-content:center;gap:4px;padding:10px;border:1px solid rgba(79,195,247,.24);background:linear-gradient(145deg,rgba(10,39,58,.78),rgba(5,20,32,.92));color:#78a1b8;font:800 7px/1 var(--mono);letter-spacing:.08em;text-transform:uppercase}
.dxmove-metrics b{color:#fff;font:900 clamp(16px,2.2vw,28px)/1 var(--ox);letter-spacing:.02em;text-transform:none}.dxmove-description{align-self:stretch;display:flex;flex-direction:column;justify-content:center;padding:13px;border:1px solid rgba(79,195,247,.18);background:rgba(5,19,31,.7)}
.dxmove-description>b{color:#79cdef;font:800 9px/1.2 var(--mono);letter-spacing:.06em;text-transform:uppercase}.dxmove-description p{margin:8px 0 0;color:#c2d6e1;font:600 11px/1.55 var(--mono)}
.dxmove-support{height:100%;grid-template-columns:repeat(4,minmax(0,1fr));padding:8px;background:transparent;gap:2px}.dxmove-support span{padding:9px}

.dex-control-frame #dex-mode-body{border-bottom:1px solid #20394c}.dex-control-frame #dex-controls-body{min-width:0}
.dex-case .dxsectionselect{padding:8px}.dex-case .dxsectionselect>span{display:block;margin-top:4px}
.dex-case .dexctl{gap:7px;padding:8px}.dxctlgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}.dxfiltermore{border:1px solid #243d51;background:#071521}.dxfiltermore>summary{padding:7px;color:#8eabba;font:800 8px/1 var(--mono);letter-spacing:.07em;text-transform:uppercase;cursor:pointer}.dxfiltermore[open]>summary{border-bottom:1px solid #243d51}.dxfiltermore .dxfilter{border:0;border-top:1px solid #1d3547}.dxfiltermore .dxfilter:first-of-type{border-top:0}
.dex-case .col-left .dexlist{grid-template-columns:1fr;padding:5px}.dex-case .col-left .dexrow{border-radius:2px;padding:6px}.dxoutside{margin:6px;padding:7px;border:1px solid #7b5a2d;background:rgba(112,72,17,.18);color:#e8c270;font:700 8px/1.35 var(--mono)}
.dxmoverow{grid-template-columns:40px minmax(0,1fr) auto 58px!important;grid-template-areas:'num identity types values'!important}.dxmoverow .dxmovevalues{grid-area:values;display:grid;grid-template-columns:auto auto;gap:1px 3px;align-items:baseline;text-align:right}.dxmovevalues b{color:#fff;font:800 9px/1 var(--mono)}.dxmovevalues small{color:#66859b;font:700 5.5px/1 var(--mono)}
.dxsimplelist{display:grid;gap:3px;padding:5px}.dxsimple{display:grid;gap:2px;padding:7px;border:1px solid #20394d;background:#091724}.dxsimple b{color:#eefaff;font:800 9px/1.2 var(--mono)}.dxsimple span{color:#6f8da1;font:700 7px/1.25 var(--mono)}
.dexpager{padding:6px 7px}.dexpager button{padding:4px 6px}.dex-case .dexpager span{font-size:7px}

.dex-case .col-right .dexpanelbody{padding:8px}.dex-case .col-right .dexfacts{margin:0}.dex-case .col-right .dexfacts span{padding:6px}.dex-case .col-right .dxabilitylist span{padding:6px}
.dxlearn-summary{display:grid;gap:3px;margin-bottom:6px;padding:7px;border:1px solid #27475c;background:#081927}.dxlearn-summary b{color:#fff;font:900 11px/1 var(--mono)}.dxlearn-summary span{color:#7898ac;font:700 7px/1.35 var(--mono)}
.dxsecondary{border:1px solid #27475c;background:#061520}.dxsecondary>summary{padding:7px;color:#9ad9f4;font:800 8px/1 var(--mono);letter-spacing:.06em;text-transform:uppercase;cursor:pointer}.dxlearner-list{display:grid;gap:3px;max-height:300px;overflow:auto;padding:5px;border-top:1px solid #27475c}
.dxlearn-row,.dxlearner-row{display:grid;gap:3px;padding:5px;border:1px solid #1e394d;background:#081724}.dxlearn-row>span{color:#8ea7b7;font:700 7px/1.35 var(--mono)}.dxlearn-row>small{display:block}.dxlearner-row{grid-template-columns:minmax(0,1fr) auto;align-items:center}.dxlearner-row>span{text-align:right}
.dxflaggrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;background:#20394c}.dxflaggrid span{display:grid;gap:2px;padding:5px;background:#081724;color:#d7e9f2;font:700 8px/1.2 var(--mono)}.dxflaggrid b{color:#7191a5;font:700 6px/1.1 var(--mono);text-transform:uppercase}
.dxfullcatalog{max-height:310px}.dex-case #dex-move-catalog-body .dxtable{min-width:760px}

.dxevolution-family{min-width:0}.dxevo-summary{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:7px}.dxevo-summary b{color:#fff;font:900 9px/1 var(--mono);text-transform:uppercase}.dxevo-summary span{color:#708fa3;font:700 7px/1.2 var(--mono)}
.dxevo-tree{list-style:none;margin:0;padding:0}.dxevo-tree ul{list-style:none;margin:4px 0 0 12px;padding:0 0 0 10px;border-left:1px solid rgba(79,195,247,.35)}.dxevo-tree li{position:relative;margin:4px 0}.dxevo-tree ul>li::before{content:"";position:absolute;left:-10px;top:14px;width:9px;border-top:1px solid rgba(79,195,247,.35)}
.dxevo-node{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:5px;padding:4px;border:1px solid #203b4f;background:#071724}.dxevo-node.on{border-color:#4fc3f7;background:#0b2638;box-shadow:inset 3px 0 #4fc3f7}.dxevo-node>span{max-width:130px;color:#7997aa;font:700 6.5px/1.25 var(--mono);text-align:right}.dxevo-warning,.dxevo-cycle,.dxevo-missing{margin-top:5px;padding:6px;border:1px solid #74572f;background:rgba(107,74,25,.15);color:#e5bd70;font:700 7px/1.35 var(--mono)}.dxevo-unlinked{margin-top:6px}
.dxsr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}

.dxcatalog-stage{overflow:auto;padding:8px}.dxcatalog-stage .dxscroll{max-height:none}.dxaudit-support{height:100%;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 13px;color:#7898ab;font:700 9px/1.3 var(--mono)}.dxaudit-support b{color:#fff;font-size:16px}
.dex-case button:focus-visible,.dex-case select:focus-visible,.dex-case input:focus-visible,.dex-case summary:focus-visible{outline:2px solid #b8edff;outline-offset:2px}
@media(prefers-reduced-motion:reduce){.dxselected-stage{animation:none!important}.dex-case *{scroll-behavior:auto!important}}

/* Loopback-only behaviour is attached by case-shell.js. Without this class the
   lens remains the same decorative hardware used by the public build. */
.tdx-case .case-lens.private-link{cursor:pointer}
.tdx-case .case-lens.private-link:focus-visible .lens-ring,
.tdx-case .case-lens.private-link:hover .lens-ring{filter:brightness(1.18);box-shadow:0 0 18px rgba(79,195,247,.34)}

/* ======================= THE HOMEPAGE `[S35]` =========================
   home.html's own surface. Everything here is scoped under .tdx-case like the
   rest of the case, so the four legacy pages never see it; the CARDS reuse the
   panel vocabulary rather than inventing a second one — same chamfer, same
   two-layer ring, same 1.5px inset — because a landing page that looked
   unrelated to the instrument would be answering "what is this" wrongly. */

/* THE HOMEPAGE IS A ONE-SCREEN DIRECTORY, not a document surface. Its five
   destinations have a fixed 3-over-2 composition that fits between the brow
   and footer at the shell's 620px native height floor. The wrap therefore
   clips instead of owning a stray inner scrollbar. Children remain flex:none
   so the cards keep honest intrinsic geometry; the wider grid and compact
   hero are what make the layout fit, not flexbox silently crushing it. */
.tdx-case .hmwrap{width:100%;max-width:1220px;margin:0 auto;box-sizing:border-box;
  overflow:hidden;padding:4px 10px 0;justify-content:center}
.tdx-case .hmwrap>*{flex:none}

.tdx-case .hmhero{padding:3px 2px 1px;max-width:1080px;margin:0 auto;text-align:center}
.tdx-case .hmtitle{margin:0 0 6px;font-family:var(--ox);font-size:22px;font-weight:800;
  letter-spacing:.005em;color:var(--cx-text);line-height:1.18}
.tdx-case .hmlede{margin:0 auto 8px;font-size:11.5px;line-height:1.48;color:var(--cx-body);max-width:105ch}
.tdx-case .hmlede b{color:var(--cx-cyantx);font-weight:700}
.tdx-case .hmclaims{display:flex;flex-wrap:nowrap;justify-content:center;gap:5px}
.tdx-case .hmclaim{font-family:var(--jb);font-size:8.5px;letter-spacing:.04em;color:var(--cx-sec);
  padding:4px 8px;background:var(--cx-chip);cursor:help;
  box-shadow:inset 0 0 0 1px rgba(79,195,247,.16)}
.tdx-case .hmclaim b{color:var(--cx-cyantx);font-weight:700;letter-spacing:.09em;margin-right:5px}

.tdx-case .hmsechead{display:flex;align-items:center;gap:11px;margin:8px 2px 6px}
.tdx-case .hmsecline{flex:1;height:1px;background:rgba(79,195,247,.18)}
.tdx-case .hmseclab{font-family:var(--jb);font-size:9px;font-weight:700;letter-spacing:.17em;color:var(--cx-ter)}

.tdx-case .hmgrid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px;
  width:100%;max-width:1180px;margin:0 auto;padding:0 2px}
.tdx-case .hmgrid>.hmcard{grid-column:span 2}
.tdx-case .hmgrid>.hmcard:nth-child(4),.tdx-case .hmgrid>.hmcard:nth-child(5){grid-column:span 2}

/* the card IS the ring: the element paints --cx-outline and clips to the
   chamfer, ::before paints the fill 1.5px inside it and clips to the same
   shape one pixel tighter — identical to .panel, so the outline follows the
   cut corner instead of being a rectangle the clip eats. */
.tdx-case .hmcard{position:relative;display:flex;flex-direction:column;gap:5px;
  min-width:0;max-width:none;
  padding:10px 12px 9px;text-decoration:none;color:inherit;cursor:pointer;
  background:var(--cx-outline);
  clip-path:polygon(0 0,calc(100% - 14px) 0,100% 14px,100% 100%,0 100%);
  transition:background .13s}
.tdx-case .hmcard::before{content:"";position:absolute;inset:1.5px;z-index:-1;
  background:var(--cx-panel);
  clip-path:polygon(0 0,calc(100% - 13px) 0,100% 13px,100% 100%,0 100%)}
/* hover brightens the RING, not the fill — the card lights up at its edge the
   way the collapsed-panel corner does, so the two states speak one language. */
.tdx-case .hmcard:hover{background:var(--cx-cyantx)}
.tdx-case .hmcard:hover .hmcgo{color:var(--cx-cyantx)}
.tdx-case .hmcard:hover .hmcname{color:#fff}
.tdx-case .hmutility{width:calc(100% - 4px);max-width:1036px;margin:11px auto 0;
  display:grid;grid-template-columns:165px 230px minmax(0,1fr) auto;grid-template-rows:auto auto;
  column-gap:18px;row-gap:3px;align-items:center;padding:12px 16px}
.tdx-case .hmutility .hmcnum{grid-column:1;grid-row:1/-1;align-self:center}
.tdx-case .hmutility .hmcname{grid-column:2;grid-row:1}
.tdx-case .hmutility .hmcq{grid-column:2;grid-row:2;margin:0}
.tdx-case .hmutility .hmcbody{grid-column:3;grid-row:1/-1;max-width:46ch}
.tdx-case .hmutility .hmcgo{grid-column:4;grid-row:1/-1;margin:0;padding:0;white-space:nowrap}

.tdx-case .hmcnum{font-family:var(--jb);font-size:8.5px;font-weight:700;letter-spacing:.16em;color:var(--cx-ter)}
.tdx-case .hmcname{font-family:var(--ox);font-size:13px;font-weight:800;letter-spacing:.09em;
  color:var(--cx-text);transition:color .13s}
.tdx-case .hmcq{font-family:var(--ox);font-size:11px;font-weight:600;color:var(--cx-cyantx);margin-bottom:1px}
.tdx-case .hmcbody{font-size:10.5px;line-height:1.42;color:var(--cx-sec)}
.tdx-case .hmcgo{margin-top:auto;padding-top:7px;font-family:var(--jb);font-size:8px;font-weight:700;
  letter-spacing:.13em;color:var(--cx-ter);transition:color .13s}

.tdx-case .hmfine{margin:6px auto 2px;font-family:var(--jb);font-size:8.5px;line-height:1.45;
  color:var(--cx-ter);max-width:88ch;text-align:center;cursor:help}

/* the homepage's brow tab is a SPAN, not a button — it points at the page you
   are already on, so it is a label wearing the active tab's clothes and must
   not offer a pointer or a hover lift. */
.tdx-case .brow-tabs .btab.on:not(button){cursor:default}

/* Damage review: our attacking side is always left, the opposing defender is
   always right, and both battlers stand on the real generated HUD asset. */
.tdx-case .dmgarena.singles .dmgfighter{inset:0 auto 0;width:50%}
.tdx-case .dmgarena.singles .dmgfighter.ally{left:0}.tdx-case .dmgarena.singles .dmgfighter.foe{right:0}
.tdx-case .dmgarena.singles .dmgfighterplate{top:12px;bottom:auto;width:calc(100% - 28px);box-sizing:border-box}
.tdx-case .dmgarena.singles .dmgfighter.ally .dmgfighterplate{left:14px;right:auto}.tdx-case .dmgarena.singles .dmgfighter.foe .dmgfighterplate{right:14px;left:auto}
.tdx-case .dmgarena.singles .dmghpbar{top:68px;bottom:auto;width:calc(100% - 28px)}
.tdx-case .dmgarena.singles .dmgfighter.ally .dmghpbar{left:14px;right:auto}.tdx-case .dmgarena.singles .dmgfighter.foe .dmghpbar{right:14px;left:auto}
.tdx-case .dmgarena.singles .dmgsprite{left:50%;right:auto;top:auto;bottom:0;width:92%;height:175px;transform:translateX(-50%)}
.tdx-case .dmgsprite .dmgarena-scope{position:absolute;z-index:1;bottom:-19px;width:184px;height:184px;object-fit:contain;opacity:.74;mix-blend-mode:screen;filter:drop-shadow(0 0 15px rgba(79,195,247,.34))}
.tdx-case .dmgsprite .dmgpokemon-art{position:relative;z-index:2;width:132px;height:132px;object-fit:contain;filter:drop-shadow(0 9px 5px rgba(0,0,0,.68))}
.tdx-case .dmgfighter.ally .dmgsprite .dmgarena-scope{transform:none}
.tdx-case .dmgfighter.ally .dmgsprite .dmgpokemon-art{transform:scaleX(-1)}
.tdx-case .dmgfighter.foe .dmgsprite .dmgarena-scope{transform:none;filter:hue-rotate(135deg) saturate(1.35) drop-shadow(0 0 15px rgba(255,89,89,.28))}
.tdx-case .dmgarena.doubles .dmgsprite .dmgarena-scope{width:130px;height:130px;bottom:-16px;transform:none}
.tdx-case .dmgarena.doubles .dmgsprite .dmgpokemon-art{width:92px;height:92px}
.tdx-case .dmgarena.doubles .dmgfighter.ally .dmgsprite .dmgpokemon-art{width:108px;height:108px;transform:scaleX(-1)}

/* The compact Duel Clock follows the Battle Engine clock: probability above,
   one vertical bar, and a signed faint-on-hit count below. */
.tdx-case .damage-battle-panel .dmgclock{width:calc(100% - 16px);margin:8px;border:1px solid rgba(79,195,247,.24);box-sizing:border-box}
.tdx-case .dmgduelmeta{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:6px 9px;color:var(--cx-ter);font:650 6px/1.3 var(--jb)}
.tdx-case .dmgduelmeta span{display:grid;gap:2px;min-width:0}.tdx-case .dmgduelmeta span:last-child{text-align:right}
.tdx-case .dmgduelmeta b{color:#ff8d8d;font:900 6.5px/1 var(--jb);letter-spacing:.06em}.tdx-case .dmgduelmeta span:last-child b{color:var(--cx-cyantx)}
.tdx-case .dmgduelplot{position:relative;display:grid;grid-template-columns:repeat(var(--clock-columns),minmax(0,1fr));align-items:end;gap:2px;height:126px;min-height:126px;padding:4px 8px 0;background:linear-gradient(to bottom,transparent 27px,rgba(145,177,198,.13) 28px,transparent 29px 70px,rgba(145,177,198,.1) 71px,transparent 72px)}
.tdx-case .dmgduelplot::after{content:"";position:absolute;left:50%;top:21px;bottom:18px;border-left:1px solid rgba(255,210,77,.44);pointer-events:none}
.tdx-case .dmgduelbar{display:grid;grid-template-rows:18px 86px 18px;align-items:end;min-width:0;text-align:center}
.tdx-case .dmgduelbar>span{align-self:center;color:#87dfbd;font:800 6.3px/1 var(--jb);font-variant-numeric:tabular-nums;white-space:nowrap;visibility:hidden}.tdx-case .dmgduelbar.labelled>span{visibility:visible}
.tdx-case .dmgduelbar>i{display:block;width:min(14px,calc(100% - 1px));height:var(--clock-height);min-height:2px;margin:0 auto;background:linear-gradient(180deg,#8be5ff,#1888bd);box-shadow:0 0 9px rgba(79,195,247,.28)}
.tdx-case .dmgduelbar.negative>i{background:linear-gradient(180deg,#ff8787,#a6323c);box-shadow:0 0 9px rgba(255,89,89,.22)}
.tdx-case .dmgduelbar>small{align-self:center;color:var(--cx-cyantx);font:900 8px/1 var(--jb)}.tdx-case .dmgduelbar.negative>small{color:#ff8d8d}
.tdx-case .dmgduelbar.zero>i{min-height:0;box-shadow:none}.tdx-case .dmgduelbar.zero>span{visibility:hidden}
.tdx-case .dmgduelaxis{display:grid;grid-template-columns:1fr auto 1fr;gap:8px;padding:2px 10px 6px;color:var(--cx-ter);font:700 6px/1.2 var(--jb);text-transform:uppercase}.tdx-case .dmgduelaxis b{color:#ffd24d}.tdx-case .dmgduelaxis span:last-child{text-align:right}
.tdx-case .dmgduelmissing{align-self:center;color:var(--cx-ter);font:700 7px/1.3 var(--jb)}

/* Speed SP controls keep the range element alive while the thumb moves. */
.tdx-case .spspcontrol input[type=range]{appearance:none;height:20px;padding:0;background:transparent;cursor:ew-resize;touch-action:none}
.tdx-case .spspcontrol input[type=range]::-webkit-slider-runnable-track{height:5px;border:1px solid rgba(79,195,247,.34);background:linear-gradient(90deg,var(--cx-cyan) 0 var(--sp-fill),#071724 var(--sp-fill) 100%)}
.tdx-case .spspcontrol input[type=range]::-webkit-slider-thumb{appearance:none;width:13px;height:17px;margin-top:-7px;border:1px solid #bceeff;border-radius:2px;background:#148ebd;box-shadow:0 0 8px rgba(79,195,247,.55)}
.tdx-case .spspcontrol input[type=range]::-moz-range-track{height:5px;border:1px solid rgba(79,195,247,.34);background:#071724}.tdx-case .spspcontrol input[type=range]::-moz-range-progress{height:5px;background:var(--cx-cyan)}
.tdx-case .spspcontrol input[type=range]::-moz-range-thumb{width:13px;height:17px;border:1px solid #bceeff;border-radius:2px;background:#148ebd;box-shadow:0 0 8px rgba(79,195,247,.55)}

/* Public-style Dex entry: identity/artwork, usage and abilities are central;
   base stats, learnset, evolution and physical facts remain in side panels. */
.dex-case .col-left .dexthumb{border:0;background:transparent;overflow:visible}
.dex-case .dxidentity-head{grid-template-areas:'num identity types';padding-bottom:10px}
.dex-case .dxpokemon-stage .dxidentity-head{border-bottom:0}
.dex-case .dxpokemon-stage{animation:none}
.dex-case .dxentry-meta{flex:none;display:grid;gap:6px;padding:9px 11px;border-top:1px solid rgba(79,195,247,.16);background:rgba(5,18,29,.92)}.dex-case .dxentry-meta>header{display:flex;align-items:center;flex-wrap:wrap;gap:6px}.dex-case .dxentry-meta>header>b{margin-right:auto;color:#9edfff;font:850 9px/1 var(--mono);text-transform:uppercase;letter-spacing:.05em}.dex-case .dxentry-meta>header>span{flex-basis:100%;color:#7c9caf;font:650 7px/1.2 var(--mono)}.dex-case .dxentry-meta .dxchips button{text-transform:uppercase;font-size:7px;padding:4px 6px}.dex-case .dxcommonmoves{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:5px}.dex-case .dxcommonmoves>button{display:flex;align-items:center;justify-content:space-between;gap:4px;min-width:0;padding:7px 6px;border:1px solid #294a60;background:#071724;color:#e6f7ff;font:750 8px/1.2 var(--mono);cursor:pointer}.dex-case .dxcommonmoves>button>b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dex-case .dxcommonmoves>button>span{flex:none;color:#81e0bd;font-size:7px}.dex-case .dxcommonmoves>button:hover{border-color:#4fc3f7;background:#0c2a40}.dex-case .dxusage-empty{grid-column:1/-1;color:#7c9caf;font:650 8px/1.3 var(--mono)}.dex-case .dxentry-meta>footer{display:flex;justify-content:space-between;flex-wrap:wrap;gap:4px;color:#638497;font:650 6.5px/1.2 var(--mono)}.dex-case .dxentry-meta>footer a{color:#779caf}
.dex-case .dxentry-abilities{flex:none;display:grid;grid-template-columns:78px minmax(0,1fr);align-items:center;gap:8px;padding:7px 11px;border-top:1px solid rgba(79,195,247,.16);background:rgba(5,18,29,.92)}.dex-case .dxentry-abilities>b{color:#7196ad;font:800 8px/1 var(--mono);text-transform:uppercase;letter-spacing:.06em}.dex-case .dxentry-abilities .dxabilitylist{grid-template-columns:repeat(auto-fit,minmax(145px,1fr));font:750 9px/1.3 var(--mono);color:#e8f7ff}.dex-case .dxentry-abilities .dxabilitylist span{padding:5px 7px}.dex-case .dxentry-abilities .dxabilitylist b{display:block;min-width:0;margin:0 0 2px;color:#71a6c5;font:700 6.5px/1 var(--mono);text-transform:uppercase}
.dex-case .dxformrail button.on,.dex-case .dxformmenu button.on{box-shadow:inset 0 0 0 1px #4fc3f744,0 0 8px rgba(79,195,247,.28);text-shadow:0 0 6px rgba(79,195,247,.7)}
.dex-case.dex-pokemon-mode .dex-support-shell{flex:0 0 188px!important;overflow:hidden}
.dex-case .dxsupport-tabs{height:100%;display:flex;flex-direction:column;min-height:0;background:rgba(5,18,29,.92)}
.dex-case .dxsupport-tabs>[role=tablist]{display:flex;flex:none;border-bottom:1px solid #294a60;background:#071522;padding:0 8px;gap:5px}
.dex-case .dxsupport-tabs [role=tab]{padding:10px 13px;border:0;border-bottom:2px solid transparent;background:none;color:#7899af;font:800 9px/1 var(--mono);letter-spacing:.05em;text-transform:uppercase;cursor:pointer}
.dex-case .dxsupport-tabs [role=tab][aria-selected=true]{color:#a6e4ff;border-bottom-color:#4fc3f7;background:linear-gradient(0deg,rgba(79,195,247,.12),transparent)}
.dex-case .dxsupport-tabs [role=tab]:focus-visible{outline:2px solid #8ee0ff;outline-offset:-3px}
.dex-case .dxsupport-tabs>[role=tabpanel]{flex:1;min-height:0;overflow:auto}
.dex-case .dxsupport-stats,.dex-case .dxsupport-details{padding:8px 13px}
.dex-case .dxsupport-stats h3{display:flex;justify-content:space-between;margin:0 0 6px;color:#82acc5;font:800 9px/1 var(--mono);text-transform:uppercase;letter-spacing:.06em}
.dex-case .dxsupport-stats h3 b{color:#b3eaff;font-size:14px}
.dex-case .dxsupport-stats .dexstats{display:grid;grid-template-columns:1fr 1fr;gap:8px 18px;margin:0}
.dex-case .dxsupport-stats .dexstat{grid-template-columns:30px 36px minmax(42px,1fr)}
.dex-case .dxsupport-tabs .dxentry-abilities{border:0;padding:14px;align-items:start}
.dex-case .dxsupport-tabs .dxentry-abilities .dxabilitylist{grid-template-columns:1fr 1fr;gap:12px;font-size:15px}
.dex-case .dxsupport-tabs .dxentry-abilities .dxabilitylist span{padding:12px}
.dex-case .dxsupport-tabs .dxentry-abilities .dxabilitylist b{font-size:10px;margin-bottom:7px}
.dex-case .dxsupport-tabs .dxentry-meta{border-top:0;padding:9px 11px}
.dex-case .dxpokemon-stage .dxidentity-head>.dextypes .typebadge{min-width:72px;text-align:center;padding:9px 13px;font-size:14px;letter-spacing:.08em;border-color:color-mix(in srgb,var(--type-color) 45%,white);box-shadow:inset 0 1px 0 #ffffff60,0 0 16px color-mix(in srgb,var(--type-color) 50%,transparent);background:linear-gradient(135deg,color-mix(in srgb,var(--type-color) 75%,white),var(--type-color) 65%,color-mix(in srgb,var(--type-color) 65%,black))}
.dex-case #dex-support-body>.dxentry-meta{height:100%;box-sizing:border-box;border-top:0;align-content:start;gap:6px}.dex-case .dxmeta-tier{float:right;font-style:normal;color:#afc5d2}.dex-case .dxmeta-lists{display:grid;grid-template-columns:1fr 1fr;gap:9px}.dex-case .dxmeta-lists>section{min-width:0;display:grid;align-content:start;gap:5px}.dex-case .dxmeta-lists>section>b{color:#71a6c5;font:800 7px/1 var(--mono);text-transform:uppercase;letter-spacing:.04em}.dex-case .dxmeta-lists .dxcommonmoves,.dex-case .dxcommonitems{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px}.dex-case .dxmeta-lists .dxcommonmoves>button{padding:6px 5px;font-size:7.5px}.dex-case .dxcommonitems>span{display:flex;align-items:center;justify-content:space-between;gap:4px;min-width:0;padding:6px 5px;border:1px solid #294a60;background:#071724;color:#e6f7ff;font:750 7.5px/1.2 var(--mono)}.dex-case .dxcommonitems>span>b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dex-case .dxcommonitems>span>span{flex:none;color:#e5c177;font-size:7px}
.dex-case #dex-stats-panel .dexpanelbody{padding:12px 13px}.dex-case #dex-stats-panel .dexstats{margin:0;gap:12px}
.dex-case #dex-stats-panel .dexstat{grid-template-columns:32px 40px minmax(42px,1fr);gap:9px}
.dex-case #dex-stats-panel .dexstat>b{font-size:26px}.dex-case #dex-stats-panel .dexstat-track{height:17px}
.dex-case .dxstat-toolbar{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:12px}
.dex-case .dxstat-toolbar>[role=group]{display:flex;gap:4px}
.dex-case .dxstat-toolbar button{padding:6px 10px;border:1px solid #31566f;border-radius:5px;background:#081b2a;color:#91afc3;font:850 9px/1 var(--mono);cursor:pointer}
.dex-case .dxstat-toolbar button[aria-pressed=true]{border-color:#81dcff;background:#12374d;color:#e3f9ff}
.dex-case .dxstat-toolbar button:focus-visible{outline:2px solid #fff1b8;outline-offset:2px}
.dex-case .dxstat-toolbar>span{color:#91afc3;font:750 9px/1 var(--mono);white-space:nowrap}
.dex-case #dex-stats-panel .dexstats-vertical{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:5px;align-items:stretch}
.dex-case #dex-stats-panel .dexstats-vertical .dexstat{display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:24px minmax(130px,190px) 20px;gap:5px;text-align:center;min-width:0}
.dex-case #dex-stats-panel .dexstats-vertical .dexstat-label{grid-row:3;font-size:10px}
.dex-case #dex-stats-panel .dexstats-vertical .dexstat>b{grid-row:1;font-size:20px}
.dex-case #dex-stats-panel .dexstats-vertical .dexstat-track{grid-row:2;display:flex;align-items:flex-end;width:100%;height:100%;border-radius:4px}
.dex-case #dex-stats-panel .dexstats-vertical .dexstat-track>i{width:100%;height:var(--stat-fill);border-radius:3px 3px 0 0}
.dex-case .dxsupport-stats .dxstat-toolbar{margin-bottom:8px}
.dex-case .dxsupport-stats .dxstat-toolbar button{padding:4px 8px}
.dex-case .dxstat-hex svg{display:block;width:100%;max-height:278px;overflow:visible}
.dex-case .dxhex-grid{fill:none;stroke:#31546b;stroke-width:1}
.dex-case .dxhex-shape{fill:#4fc3f738;stroke:#8adfff;stroke-width:2.5;stroke-linejoin:round}
.dex-case .dxhex-values text{fill:#a8cce1;font:850 13px var(--mono)}
.dex-case .dxhex-values tspan{fill:#f5fcff;font:900 22px var(--mono)}
.dex-case .dxhex-values circle{fill:#8adfff;stroke:#071724;stroke-width:1.5}
.dex-case .dxhex-values .is-top-three,.dex-case .dxhex-values .is-top-three tspan{fill:#ffd700;filter:drop-shadow(0 0 3px #fff5b8) drop-shadow(0 0 6px #ffd700a6)}
.dex-case .dxhex-numbers{display:none}
.dex-case .dxsupport-stats .dxstat-hex{display:grid;grid-template-columns:minmax(130px,.85fr) 1fr;gap:12px;align-items:center}
.dex-case .dxsupport-stats .dxstat-hex svg{max-height:90px}
.dex-case .dxsupport-stats .dxhex-numbers{display:grid;grid-template-columns:1fr 1fr;gap:8px 14px;margin:0}
.dex-case .dxhex-numbers>div{display:flex;align-items:center;justify-content:space-between;gap:6px}
.dex-case .dxhex-numbers dt{color:#b6d9ed;font:850 11px/1 var(--mono)}
.dex-case .dxhex-numbers dd{margin:0;color:#fff;font:900 22px/1 var(--mono);font-variant-numeric:tabular-nums}
.dex-case .dxhex-numbers .is-top-three dd{color:#ffe45c;text-shadow:0 0 5px #fff7c7,0 0 10px #ffd700a6}
.dex-case .dxstat-hex-missing{margin-bottom:10px;color:#e5c177;font:700 10px/1.4 var(--mono)}
.dex-case .dxstats-total{display:flex;align-items:center;justify-content:space-between;margin-top:8px;padding-top:7px;border-top:1px solid #244258;color:#7794a8;font:800 7px/1 var(--mono);letter-spacing:.07em;text-transform:uppercase}.dex-case .dxstats-total b{color:#fff;font-size:13px}
.dex-case .dxlearn-summary{grid-template-columns:auto 1fr;align-items:baseline}.dex-case .dxlearn-summary>span{text-align:right}.dex-case .dxlearn-summary>div{grid-column:1/-1;display:flex;flex-wrap:wrap;gap:4px}
.dex-case .dxlearn-summary i{padding:3px 5px;border:1px solid #294a60;background:#061521;color:#8fb1c4;font:700 6.5px/1 var(--mono);font-style:normal}.dex-case .dxlearn-summary i b{font-size:inherit;color:#dff6ff}
.dex-case .dxlearn-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px;max-height:340px;overflow:auto;padding-right:2px}
.dex-case .dxlearn-card{display:grid;gap:5px;min-width:0;padding:6px;border:1px solid #203c50;background:#071724}
.dex-case .dxlearn-card header{display:flex;align-items:center;justify-content:space-between;gap:5px;min-width:0}.dex-case .dxlearn-card header .dxlink{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left}
.dex-case .dxlearn-card>div{display:grid;grid-template-columns:1fr auto auto;gap:5px;color:#7f9daf;font:700 6.5px/1.2 var(--mono);text-transform:uppercase}.dex-case .dxlearn-card>div span:not(:first-child){text-align:right}.dex-case .dxlearn-card>div b{color:#dff5ff}
.dex-case .dxlearn-card footer{display:flex;flex-wrap:wrap;gap:3px}
.dex-case .dxlearn-controls{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin:7px 0}.dex-case .dxlearn-controls label{display:grid;gap:4px;min-width:0}.dex-case .dxlearn-controls label>span{color:#7fa5bc;font:800 7px/1 var(--mono);text-transform:uppercase;letter-spacing:.04em}.dex-case .dxlearn-controls select{width:100%;min-width:0;padding:6px;border:1px solid #31536d;background:#081b2a;color:#e1f5ff;font:700 9px/1.2 var(--mono)}
.dex-case .dxlearn-tablewrap{max-height:330px;overflow:auto;border:1px solid #244258}.dex-case .dxlearn-table{width:100%;border-collapse:collapse;table-layout:auto;font:700 8px/1.3 var(--mono)}.dex-case .dxlearn-table th{position:sticky;top:0;z-index:1;padding:7px 4px;background:#102a3b;color:#8fbed8;text-align:left;font-size:7px;text-transform:uppercase;border-bottom:1px solid #31536d}.dex-case .dxlearn-table td{padding:7px 4px;border-bottom:1px solid rgba(79,195,247,.1);color:#d8edf8;background:#071724}.dex-case .dxlearn-table tr:nth-child(even) td{background:#0a1c2b}.dex-case .dxlearn-table tr:hover td{background:#102d40}.dex-case .dxlearn-table th:nth-last-child(-n+2),.dex-case .dxlearn-table td:nth-last-child(-n+2){text-align:right;font-variant-numeric:tabular-nums}.dex-case .dxlearn-name{padding:0;border:0;background:none;color:#e5f7ff;font:800 9px/1.3 var(--mono);text-align:left;cursor:pointer}.dex-case .dxlearn-name:hover{color:#72d5ff}.dex-case .dxlearn-table .typebadge{padding:3px 4px;font-size:6px;white-space:nowrap}.dex-case .dxlearn-category{font-size:7px;color:#9aabb6}.dex-case .dxlearn-category.phys{color:#f2b18c}.dex-case .dxlearn-category.spec{color:#92caff}.dex-case .dxlearn-category.status{color:#bda9e3}.dex-case .dxlearn-help{display:block;margin-top:6px;color:#7898ac;font:650 7px/1.4 var(--mono)}.dex-case .dxlearn-empty{font-weight:600;line-height:1.6}
.dex-case .dxevo-tree ul{margin:7px 0 0 14px;padding-left:12px;border-left:2px solid rgba(79,195,247,.45)}.dex-case .dxevo-tree li{margin:7px 0}.dex-case .dxevo-tree ul>li::before{left:-13px;top:27px;width:12px;border-top:2px solid rgba(79,195,247,.45)}.dex-case .dxevo-node{grid-template-columns:1fr;gap:2px;padding:5px;background:linear-gradient(115deg,#0c2334,#071724)}.dex-case .dxevo-pick{display:grid;grid-template-columns:44px minmax(0,1fr);align-items:center;gap:7px;width:100%;padding:0;border:0;background:none;color:#dff5ff;text-align:left;cursor:pointer}.dex-case .dxevo-pick img{width:44px;height:44px;object-fit:contain}.dex-case .dxevo-pick b{font:800 10px/1.3 var(--mono);overflow-wrap:anywhere}.dex-case .dxevo-node>span{max-width:none;margin-left:51px;text-align:left;font-size:7px}.dex-case .dxevo-pick:hover b{color:#75d6ff}.dex-case .dxevo-mega>div:last-child{display:grid;grid-template-columns:1fr 1fr}.dex-case .dxevo-mega button{display:grid;justify-items:center;gap:4px;min-width:0}.dex-case .dxevo-mega button img{width:42px;height:42px;object-fit:contain}.dex-case .dxevo-mega button b{font:750 8px/1.3 var(--mono);text-align:center}
.dex-case .dxevo-mega{display:grid;gap:5px;margin-top:8px;padding-top:7px;border-top:1px solid #28475a}.dex-case .dxevo-mega>div:first-child{display:grid;gap:2px}.dex-case .dxevo-mega b{color:#dcabff;font:900 8px/1 var(--mono);text-transform:uppercase}.dex-case .dxevo-mega span{color:#7d94a4;font:700 6.5px/1.25 var(--mono)}.dex-case .dxevo-mega>div:last-child{display:flex;flex-wrap:wrap;gap:4px}.dex-case .dxevo-mega button{border:1px solid #704b86;background:#1c1026;color:#e5c6f5;padding:5px 7px;font:800 7px/1.1 var(--mono);cursor:pointer}.dex-case .dxevo-mega button.on{border-color:#d29cff;background:#3a1d4b;color:#fff}

@media(max-width:900px){
  .tdx-case .damage-battle-panel .dmgclock{width:100%}
  .dex-case .dxcommonmoves{grid-template-columns:repeat(2,minmax(0,1fr))}
  .dex-case .dxlearn-grid{grid-template-columns:1fr}
}

/* Readable Dex blues; retain the red chassis and semantic type/stat colors. */
.tdx-case.dex-case{--cx-screen:#102641;--cx-row:#16344e;--cx-chip:#1b3e5b;--cx-panel:linear-gradient(180deg,#1a3b59,#122d46);--cx-sec:#b7d5ea;--cx-ter:#91b5cf;--cx-outline:rgba(112,204,255,.5)}
.dex-case .dex-stage-shell,.dex-case .dex-support-shell{background:linear-gradient(145deg,#1b3d59,#122d45)}
.dex-case .dxsectionselect select,.dex-case .dexctl input,.dex-case .dexctl select,.dex-case .dxlearn-controls select{background:#153650;border-color:#5485a7;color:#f0f9ff}
.dex-case .dexmatch,.dex-case .dxlearn-summary,.dex-case .dxsimple,.dex-case .dxevo-node,.dex-case .dxfocus-facts>span{background:#1b3b55;border-color:#4c7898}
.dex-case .dxsectionselect>span,.dex-case .dexctl label,.dex-case .dexmatch,.dex-case .dxfocus-facts>span>b,.dex-case .dxidentity-head small{color:#a7c8de}
.dex-case .dxchips button:not(.type-choice){background:#1b3b55;border-color:#4c7898;color:#d7ecfa}
.dex-case .dxfiltermore,.dex-case .dxfilter,.dex-case .dxformrail,.dex-case .dexfacts>span{background:#15344e;border-color:#4c7898}
.dex-case .dxsupport-tabs,.dex-case .dxentry-meta,.dex-case .dxentry-abilities{background:#15334c}
.dex-case .dxsupport-tabs>[role=tablist],.dex-case .dxlearn-table th{background:#204864}
.dex-case .dxcommonmoves>button,.dex-case .dxcommonitems>span,.dex-case .dxabilitylist>span{background:#1b3b55;border-color:#4d7898}
.dex-case .dxlearn-table td{background:#17364e}.dex-case .dxlearn-table tr:nth-child(even) td{background:#1c405a}.dex-case .dxlearn-table tr:hover td{background:#285570}
.dex-case .dexstat-track{background:#244e69;box-shadow:inset 0 0 0 1px #5485a7}

/* Every type choice is recognizable before selection, not just when active. */
.tdx-case .type-choice{background:color-mix(in srgb,var(--type-color) 55%,#122538);border:1px solid color-mix(in srgb,var(--type-color) 70%,white);color:#fff;text-shadow:0 1px 2px #000}
.tdx-case .type-choice:hover{background:color-mix(in srgb,var(--type-color) 80%,#122538);border-color:#fff;color:#fff}
.tdx-case .type-choice.on,.tdx-case .type-choice[aria-pressed=true]{background:var(--type-color);border-color:#fff;color:#fff;box-shadow:inset 0 0 0 1px #fff,0 0 8px color-mix(in srgb,var(--type-color) 45%,transparent)}
.tdx-case .type-choice .dxcount{color:#fff;background:#0003}
.tdx-case .dmgfighterplate .typebadge{background:var(--type-color);border-color:color-mix(in srgb,var(--type-color) 70%,white);color:#fff}

/* Flush list/table dividers; stronger scroll affordance than page navigation. */
.dex-case .dex-list-shell{max-height:440px;overflow-y:scroll;scrollbar-gutter:stable;scrollbar-width:auto;scrollbar-color:#74bee8 #18364f}
.tdx-case.dex-case .dex-list-frame>.dex-list-shell{padding:0;margin:0}
.tdx-case.dex-case #dex-learnset-panel>#dex-learnset-body{padding:0;margin:0}
.dex-case .dex-list-shell::-webkit-scrollbar,.dex-case [role=tabpanel]::-webkit-scrollbar{width:11px}
.dex-case .dex-list-shell::-webkit-scrollbar-thumb,.dex-case [role=tabpanel]::-webkit-scrollbar-thumb{background:#74bee8;border:2px solid #18364f;border-radius:6px}
.dex-case .col-left .dexlist{padding:0;gap:0}
.dex-case .dexlist .dexrow{border:0;border-bottom:1px solid #4b7796;border-radius:0;background:#183850;padding:8px 10px}
.dex-case .dexlist .dexrow:hover,.dex-case .dexlist .dexrow.on{background:#285575;box-shadow:inset 3px 0 #8addff}
.dex-scroll-cue{position:sticky;top:0;z-index:2;display:flex;flex-direction:column;gap:4px;padding:9px 10px;background:#244e6c;border-bottom:1px solid #6da3c5;font:700 8px/1.2 var(--mono);color:#bfdced}
.dex-scroll-cue>b{color:#e4f8ff;font-size:10px}
.dex-case .dexpager{padding:5px 10px;font-size:7px;color:#a7c8de;background:#15334c}
.dex-case .dexpager button{padding:3px 5px;border:0;background:none;font-size:8px;color:#bad4e5}
.dex-case .dexlearnset{padding-left:0;padding-right:0}
.dex-case .dexlearnset>.dxlearn-summary,.dex-case .dexlearnset>.dxlearn-controls,.dex-case .dexlearnset>.dxlearn-help{margin-left:10px;margin-right:10px}
.dex-case .dxlearn-tablewrap{border-left:0;border-right:0;scrollbar-color:#74bee8 #18364f;scrollbar-width:auto}
.tdx-case.analysis-case .panel:has(.pcteammatrix)>div{padding-left:0;padding-right:0;margin:0 0 12px}
.tdx-case.analysis-case #team-controls .pcbar-team{padding:0;clip-path:none;background:transparent}
.tdx-case.analysis-case .pcbar-team::before{display:none}
.tdx-case.analysis-case .pcteammatrix{margin:0;padding:0;border-top:1px solid rgba(112,204,255,.4)}
.tdx-case.analysis-case .pcteammatrix th,.tdx-case.analysis-case .pcteammatrix td{border-bottom:1px solid rgba(112,204,255,.35)}
.tdx-case.analysis-case .pcteammatrix th:first-child{padding-left:8px}.tdx-case.analysis-case .pcteammatrix td:first-child{padding:0}
.tdx-case.analysis-case .pcgrp>.pcadd,.tdx-case.analysis-case .pcgrp>.pclbl{margin-left:10px;margin-right:10px}
.tdx-case.analysis-case #team-controls .pcgrp:has(.pcteammatrix){gap:0}

.dex-case .dxsupport-tabs>[role=tabpanel]{scrollbar-gutter:stable;scrollbar-width:auto;scrollbar-color:#74bee8 #18364f}
.dex-case .dxsupport-stats{padding-bottom:14px}
.dex-case .dxsupport-scroll-hint{margin:0 0 9px;color:#b7dcef;font:700 8px/1.3 var(--mono)}
.dex-case .dxrank-facts,.dex-case .dxtyping-facts{margin-top:15px;padding-top:11px;border-top:1px solid #4d7998}
.dex-case .dxrank-facts h3,.dex-case .dxtyping-facts h3,.dex-case .dxrole-details h3{color:#c8e7fa;font:800 10px/1.3 var(--mono);display:flex;flex-wrap:wrap;gap:5px;margin:0 0 9px}
.dex-case .dxrank-facts h3 small,.dex-case .dxrole-details h3 small,.dex-case .dxtyping-facts>small{color:#a1c0d5;font:600 8px/1.4 var(--mono);text-transform:none;letter-spacing:0}
.dex-case .dxrank-facts>div{display:grid;grid-template-columns:repeat(3,1fr);gap:7px}
.dex-case .dxrank-facts>div>span{display:flex;justify-content:space-between;padding:6px;background:#204560;color:#e4f6ff;font:800 10px/1 var(--mono)}
.dex-case .dxrank-facts>div>span>b{color:#a6c7de}
.dex-case .dxtyping-facts>div{display:grid;grid-template-columns:92px 1fr;gap:8px;margin-bottom:9px;color:#c7e1f0;font:700 9px/1.4 var(--mono)}
.dex-case .dxtyping-facts>div>span{display:flex;flex-wrap:wrap;gap:6px}.dxtyping-cell{display:inline-flex;gap:4px;align-items:center}.dxtyping-cell>strong{color:#f4faff;font-size:9px}
.dex-case .dxdefense-profile{margin:0;padding:0;border:0}
.dex-case .dxdefense-profile .dxdefense-row{grid-template-columns:42px minmax(0,1fr);gap:9px;align-items:center;margin:0;padding:5px 0;border-bottom:1px solid #54718d55;min-height:29px}
.dex-case .dxdefense-row>b{font-size:14px;color:#e2f3ff;text-align:center}
.dex-case .dxdefense-row[data-multiplier="0"]>b{color:#a9e9ff}.dex-case .dxdefense-row[data-multiplier="4"]>b{color:#ffa394}
.dex-case .dxdefense-row .typebadge{min-width:57px;text-align:center;font-size:9px;padding:4px 6px}
.dex-case .dxdefense-profile>small{display:block;margin-top:7px}
.dex-case .dxdefense-profile .dxtyping-cell:focus-visible{outline:2px solid #fff1b8;outline-offset:2px}
.dex-case .dxrole-summary>i{display:block;font-style:normal;color:#d3efff;font:800 9px/1.5 var(--mono)}
.dex-case .dxrole-details{padding:12px 13px;border-bottom:1px solid #4d7998}
.dex-case .dxrole-chips{display:flex;flex-wrap:wrap;gap:5px}.dex-case .dxrole-chips>span{padding:5px 7px;background:#285773;border:1px solid #689ebd;color:#e4f8ff;font:800 9px/1.2 var(--mono)}
.dex-case .dxrole-details li,.dex-case .dxrole-details p{color:#b8d3e5;font:600 9px/1.5 var(--mono)}.dex-case .dxrole-details ul{padding-left:16px;margin:10px 0}.dex-case .dxrole-details p{margin:6px 0 0}

/* Cobalt instrument palette: flat readouts, one joined typing plate, and a
   continuous compact catalogue instead of page replacement. */
.tdx-case.dex-case{--cx-screen:#142440;--cx-row:#1b3152;--cx-chip:#233e64;--cx-panel:linear-gradient(180deg,#20385c,#182c4c);--cx-sec:#bccde9;--cx-ter:#93add1;--cx-outline:rgba(109,159,234,.55)}
.dex-case :is(.dxselected-stage,.dxselected-support){background:linear-gradient(180deg,#20395f,#182d4e)}
.dex-case :is(.dexctl input,.dexctl select,.dxlearn-controls select){background:#1b3152;border-color:#4c6d9d}
.dex-case :is(.dexmatch,.dexpanelbody .explsummary,.dxevo-pick,.dexfacts>span,.dxfocus-facts>span,.dxabilitylist>span,.dxentry-meta,.dxcommonitems>span,.dxcommonmoves>button,.dxfilter,.dxfiltermore,.dxformrail){background:#1d3456;border-color:#426491}
.dex-case .dxchips>button:not(.type-choice){background:#20395e;border-color:#4c6d9d}
.dex-case :is(.dxsupport-tabs [role=tablist],.dxlearn-table th){background:#294775}
.dex-case .dxlearn-table td{background:#1b3152}.dex-case .dxlearn-table tr:nth-child(even) td{background:#213b60}
.dex-case .dxlearn-table tr:hover td{background:#2b4c7b}
.dex-case .dxrole-chips>span{background:#294775;border-color:#6e91c6}
.dex-case .dxentry-typing{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));flex:0 0 196px;width:196px;height:36px;overflow:hidden;clip-path:polygon(8px 0,100% 0,calc(100% - 8px) 100%,0 100%);border:0;box-shadow:none}
.dex-case .dxentry-typing.single{grid-template-columns:1fr}
.dex-case .dxentry-typing>span{display:grid;place-items:center;padding:0 8px;color:#fff;font:800 12px/1 var(--mono);letter-spacing:1.2px;text-transform:uppercase;text-shadow:0 1px 1px rgba(0,0,0,.55);min-width:0}
.dex-case #dex-dataset-body{margin:0;padding:10px 12px;border-bottom:1px solid #426491}
.dex-case #dex-dataset-body .pcbar-dataset{margin:0;padding:0;background:transparent;clip-path:none;border:0}
.dex-case #dex-dataset-body .pcbar-dataset::before{display:none}
.dex-case #dex-dataset-body .pcgrp{width:100%}
.dex-case #dex-dataset-body select{width:100%;background:#1b3152;border-color:#4c6d9d;color:#e4eeff}
.dex-case .dex-list-shell:has(.dex-entry-scroll){max-height:none;overflow:visible;scrollbar-gutter:auto}
.dex-case .dex-scroll-toolbar{display:flex;align-items:center;justify-content:space-between;gap:6px;padding:8px;background:#294775;border-bottom:1px solid #5575a2}
.dex-case .dex-scroll-toolbar>span{color:#c4d7f2;font:600 9px/1.4 var(--mono)}
.dex-case .dex-scroll-toolbar>button{padding:4px 7px;background:transparent;border:1px solid #6b8cb9;color:#dbe8ff;font:700 9px/1 var(--mono)}
.dex-case .dex-scroll-toolbar>button:disabled{opacity:.35}
.dex-case .dex-entry-scroll{height:390px;overflow-y:scroll;scrollbar-gutter:stable;scrollbar-color:#739bdd #182c4c;scrollbar-width:auto;border:0}
.dex-case .dex-entry-scroll::-webkit-scrollbar{width:11px}.dex-case .dex-entry-scroll::-webkit-scrollbar-thumb{background:#739bdd;border:2px solid #182c4c;border-radius:6px}
.dex-case .col-left .dex-entry-scroll .dexlist.dense .dxpokemonrow{grid-template-columns:35px 32px minmax(0,1fr) auto;min-height:42px;height:42px;padding:4px 8px;gap:1px 6px;background:#1b3152;border-bottom:1px solid #44648e}
.dex-case .col-left .dex-entry-scroll .dxpokemonrow:hover{background:#2a4975}
.dex-case .col-left .dex-entry-scroll .dxpokemonrow.on{background:#294775;box-shadow:inset 3px 0 #87b4ff}
.dex-case .dex-entry-scroll .dexthumb,.dex-case .dex-entry-scroll .dexthumb img{width:30px;height:30px}
.dex-case .dex-entry-scroll .dexname{font-size:11px;line-height:14px}
.dex-case .dex-entry-scroll .dextypes .tbox{font-size:7px;padding:2px 5px;min-height:12px}
.dex-case .dxrole-details a{color:#a9caff;text-decoration:underline}

/* The Pokémon rail is a permanent viewport, not a collapsible page card. On
   desktop it claims every pixel left below the browse controls; its internal
   list is the only scrolling surface and always meets the page bottom. */
@media(min-width:701px){
  .dex-case .col-left>.dex-list-frame{display:flex;flex:1 1 0;min-height:150px;flex-direction:column;box-sizing:border-box}
  .dex-case .col-left>.dex-list-frame>summary{flex:none;cursor:default}
  .dex-case .col-left>.dex-list-frame>.dex-list-shell{display:flex;flex:1 1 0;min-height:0}
  .dex-case #dex-list-body{display:flex;flex:1 1 0;min-height:0;flex-direction:column}
  .dex-case #dex-list-body>.dex-scroll-toolbar{flex:none}
  .dex-case #dex-list-body>.dex-entry-scroll{flex:1 1 0;height:auto;min-height:0}
}

/* Team faces put artwork at their geometric centre and names on the lower rim. */
.tdx-case:not(.home-case) .team-brow-slot{display:flex;align-items:center;justify-content:center;padding:0 12px 11px}
.tdx-case:not(.home-case) .team-brow-slot .team-brow-art{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:38px;height:38px}
.tdx-case:not(.home-case) .team-brow-art img{width:38px;height:38px}
.tdx-case:not(.home-case) .team-brow-slot>b{position:absolute;bottom:5px;left:8px;right:8px;text-align:center;font-size:8px}
.tdx-case:not(.home-case) .team-brow-slot.empty{cursor:pointer;appearance:none;border:0;background:transparent}
.tdx-case:not(.home-case) .team-brow-slot.empty>b{position:static;color:#8ab7eb;font:500 26px/1 var(--mono)}
.dex-case .dxentry-typing{clip-path:none;transform:skewX(-12deg);margin-inline:4px}
.dex-case .dxentry-typing>span{font-style:normal}
.dex-case .dxentry-typing>span>b{transform:skewX(12deg);font:inherit}
.dex-case .dxabilitylist{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:9px}
.dex-case .dxability-entry{padding:9px 11px;background:#1d3456;border:1px solid #426491;min-width:0}
.dex-case .dxability-entry>small{display:block;color:#91b4df;font:700 8px/1.4 var(--mono);text-transform:uppercase}
.dex-case .dxability-entry>b{display:block;margin:4px 0;color:#f1f6ff;font:800 12px/1.3 var(--mono)}
.dex-case .dxability-entry>p{margin:5px 0 0;color:#c5d6ee;font:500 10px/1.5 var(--mono)}
.dex-case .dxability-note{color:#a8caf7!important}
.tdx-case .spspcontrol>.spallocationrow{display:grid;grid-template-columns:minmax(0,1fr) 74px;gap:7px}
.tdx-case .spallocationbar{display:grid;grid-template-columns:21px minmax(0,1fr) 34px 21px;align-items:center;gap:3px;border:1px solid #396987;background:#0e263c;height:30px;padding:0 3px}
.tdx-case .spallocationbar>button{border:0;background:transparent;height:26px}
.tdx-case .sppresets{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:3px}
.tdx-case .spspcontrol[data-sp-side="team"]>.spallocationrow{grid-template-columns:minmax(0,1fr) 50px;align-items:center}
.tdx-case .spspcontrol[data-sp-side="team"] .sppresets{grid-template-columns:1fr}
.tdx-case .sppresets>button{width:100%;height:19px;font-size:8px;border-color:#396987}
.tdx-case .sppresets>button[aria-pressed=true]{background:#23587a;color:#e5f5ff;border-color:#84c5f2}
.tdx-case .spteamoptions .spchoice3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:3px;clip-path:none;overflow:visible;background:transparent;border:0;padding:0}
.tdx-case .spteamoptions .spchoice3>button{display:block;min-width:0;width:100%;margin:0;padding:7px 2px;clip-path:none;transform:none;border:1px solid #396987;background:#0e263c;color:#b5d4eb;font:700 9px/1.2 var(--mono)}
.tdx-case .spteamoptions .spchoice3>button.on{border-color:#84c5f2;color:#e5f5ff;background:#23587a;box-shadow:none}
.tdx-case .sptierout{grid-template-columns:minmax(0,max-content) 8px max-content;gap:3px;align-items:center}

/* Native modal escapes the scaled case, preserving readable chooser controls. */
.pc-pokemon-chooser{width:min(960px,calc(100vw - 32px));max-width:none;height:min(760px,86vh);max-height:86vh;padding:0;border:1px solid #719aca;border-radius:9px;background:#142440;color:#e7effc;box-shadow:0 16px 70px #0009;font-family:var(--mono,monospace)}
.pc-pokemon-chooser{margin:auto}
.pc-pokemon-chooser[open]{display:flex;flex-direction:column}.pc-pokemon-chooser::backdrop{background:#030c1bba;backdrop-filter:blur(3px)}
.pc-pokemon-chooser .tbox{font-size:9px;padding:3px 6px}
.pc-pokemon-chooser>header{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:15px 18px;border-bottom:1px solid #41648e;background:#20395f}
.pc-pokemon-chooser h2{margin:0;font-size:16px}.pc-pokemon-chooser header p{margin:6px 0 0;color:#afc5e5;font-size:10px}
.pc-pokemon-chooser button,.pc-pokemon-chooser select,.pc-pokemon-chooser input{font-family:inherit;color:inherit;background:#1d3456;border:1px solid #4c6d9d;border-radius:4px}
.pc-pokemon-chooser header>button{width:30px;height:30px;font-size:23px;cursor:pointer}
.pc-chooser-controls{display:grid;grid-template-columns:2fr 1fr 1fr 1fr auto;gap:10px;padding:12px 18px;background:#182d4e}
.pc-chooser-controls label{display:grid;gap:6px;min-width:0;color:#b9cce7;font-size:10px}
.pc-chooser-controls input,.pc-chooser-controls select{width:100%;min-width:0;height:32px;padding:5px;font-size:11px;box-sizing:border-box}
.pc-chooser-controls>[role=group]{display:flex;align-items:end;gap:4px}.pc-chooser-controls button{height:32px;padding:5px 9px;cursor:pointer;font-size:10px}
.pc-chooser-controls button[aria-pressed=true]{background:#355c8f;border-color:#92b9ec}
.pc-chooser-count{padding:4px 18px 10px;color:#99b3d6;font-size:10px}
.pc-chooser-results{flex:1;min-height:0;overflow:auto;padding:0 18px 18px;display:grid;gap:10px;align-content:start;scrollbar-color:#739bdd #182c4c}
.pc-chooser-results.grid{grid-template-columns:repeat(3,minmax(0,1fr))}.pc-chooser-results.list{grid-template-columns:1fr}
.pc-pokemon-chooser .pc-chooser-card{display:block;padding:12px;text-align:left;cursor:pointer;min-width:0}.pc-chooser-card:hover{background:#294775;border-color:#96b9e9}
.pc-chooser-identity{display:flex;align-items:center;gap:9px;min-width:0}.pc-chooser-identity>img{width:56px;height:56px;object-fit:contain}.pc-chooser-identity>div{min-width:0;flex:1}
.pc-chooser-identity b{display:block;font-size:13px;line-height:1.4}.pc-chooser-identity span{display:flex;gap:3px;margin:5px 0}.pc-chooser-identity small{display:block;color:#a9c6ec;font-size:9px;line-height:1.5}
.pc-chooser-stats{display:grid;gap:4px;margin:10px 0}.pc-chooser-stats>div{display:grid;grid-template-columns:24px 28px minmax(34px,1fr);align-items:center;gap:5px;min-width:0;padding:1px 0;text-align:left}
.pc-chooser-stats dt{color:#9cb9e0;font-size:8px}.pc-chooser-stats dd{margin:0;color:#eef7ff;font-size:10px;font-weight:850;text-align:right;font-variant-numeric:tabular-nums}
.pc-chooser-stat-track{display:block;height:7px;overflow:hidden;border-radius:999px;background:#102b3c;box-shadow:inset 0 0 0 1px #31556d}.pc-chooser-stat-track>i{display:block;width:var(--stat-fill);height:100%;border-radius:inherit;background:var(--stat-color);box-shadow:0 0 6px color-mix(in srgb,var(--stat-color) 42%,transparent)}
.pc-chooser-stats>div.is-top-three dd{color:#ffe45c;text-shadow:0 0 6px #fff7c7,0 0 13px #ffd700a6}
.pc-chooser-stats>div.is-top-three .pc-chooser-stat-track>i{background:linear-gradient(100deg,#fffef4 0%,#fff3ae 24%,#ffd700 56%,#fff2a0 73%,#f2b700 100%);box-shadow:0 0 8px #fff4b8,0 0 18px #ffd700bf;filter:saturate(1.18) brightness(1.08)}
.pc-chooser-moves{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:5px;font-size:9px}.pc-chooser-moves>b{grid-column:1/-1;color:#c5daf5;margin-bottom:2px;font-size:9px;letter-spacing:.035em}.pc-chooser-moves>.pc-chooser-move{position:relative;min-width:0;min-height:42px;display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-rows:auto auto;align-items:center;gap:3px 6px;padding:6px 8px;overflow:hidden;border:1px solid #5579a7;border-radius:5px;background:linear-gradient(180deg,#284b78,#172f52);box-shadow:inset 0 1px rgba(255,255,255,.1),0 2px 5px #050b18aa}.pc-chooser-moves>.pc-chooser-move::after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(110deg,transparent 0 42%,rgba(255,255,255,.07) 49%,transparent 56%)}.pc-chooser-move>strong{position:relative;z-index:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#f5f8ff;font-size:9px}.pc-chooser-move>small{position:relative;z-index:1;display:flex;align-items:center;gap:4px;min-width:0}.pc-chooser-move .tbox{margin:0}.pc-chooser-move em{color:#9eb7d8;font-size:7px;font-style:normal}.pc-chooser-move>i{position:relative;z-index:1;grid-column:2;grid-row:1/3;align-self:center;color:#d6e8ff;font-size:9px;font-style:normal;white-space:nowrap}.pc-chooser-move.empty{grid-column:1/-1;display:flex;align-items:center;color:#a8bfdc}
.pc-chooser-results.list .pc-chooser-card{display:grid;grid-template-columns:minmax(230px,1.25fr) 178px minmax(290px,1.25fr);gap:12px;align-items:center}
.pc-chooser-results.list .pc-chooser-stats{position:relative;grid-template-columns:repeat(6,26px);justify-content:center;align-items:stretch;width:max-content;height:84px;margin:0 auto;gap:2px}
.pc-chooser-results.list .pc-chooser-stats::after{content:"";position:absolute;z-index:0;left:3px;right:3px;bottom:17px;height:1px;background:rgba(146,185,236,.24);pointer-events:none}
.pc-chooser-results.list .pc-chooser-stats>div{grid-template-columns:1fr;grid-template-rows:11px minmax(38px,1fr) 14px;justify-items:center;gap:3px;height:100%;padding:0;background:transparent;text-align:center}
.pc-chooser-results.list .pc-chooser-stats dt{position:relative;z-index:1;grid-row:1}.pc-chooser-results.list .pc-chooser-stats dd{position:relative;z-index:1;grid-row:3;font-size:10px;text-align:center}
.pc-chooser-results.list .pc-chooser-stat-track{position:relative;z-index:1;grid-row:2;width:11px;height:100%;align-self:stretch;display:flex;align-items:flex-end;overflow:visible;border-radius:0;background:transparent;box-shadow:none}.pc-chooser-results.list .pc-chooser-stat-track>i{width:100%;height:var(--stat-fill);min-height:2px;border-radius:3px 3px 0 0}
.pc-chooser-pages{display:flex;align-items:center;justify-content:center;gap:14px;padding:10px 18px;border-top:1px solid #41648e;background:#182d4e}
.pc-chooser-pages button{min-width:108px;padding:7px 12px;cursor:pointer}.pc-chooser-pages button:disabled{opacity:.4;cursor:not-allowed}.pc-chooser-pages span{min-width:120px;color:#c0d4ef;font-size:10px;text-align:center}
@media(max-width:700px){.pc-chooser-controls{grid-template-columns:repeat(2,minmax(0,1fr))}.pc-chooser-controls>label:first-child{grid-column:1/-1}.pc-chooser-results.grid{grid-template-columns:repeat(2,minmax(0,1fr))}.pc-chooser-results.list .pc-chooser-card{grid-template-columns:1fr}.pc-chooser-results{padding:0 10px 10px}.pc-chooser-stats{gap:3px}.pc-chooser-identity>img{width:40px;height:40px}}
@media(max-width:440px){.pc-chooser-results.grid{grid-template-columns:1fr}}

/* Persistent Team quick actions live outside the scaled instrument so the
   pointer coordinates and native dialogs stay crisp at every viewport scale. */
.pc-team-menu{position:fixed;z-index:10020;width:170px;display:grid;gap:5px;padding:8px;border:1px solid #75bde8;border-radius:6px;background:#0b1d31;color:#eaf6ff;box-shadow:0 12px 34px #000b;font-family:var(--mono,monospace)}
.pc-team-menu>b{padding:3px 4px 6px;overflow:hidden;border-bottom:1px solid #294b68;text-overflow:ellipsis;white-space:nowrap;font-size:10px}
.pc-team-menu>button{height:30px;border:1px solid #386587;border-radius:4px;background:#143451;color:#eaf6ff;font:800 10px/1 var(--mono,monospace);cursor:pointer;text-align:left;padding:0 10px}
.pc-team-menu>button:hover,.pc-team-menu>button:focus-visible{border-color:#8ddcff;background:#1c4a6d;outline:0}.pc-team-menu>button.danger{color:#ffaaa6}.pc-team-menu>button.danger:hover{border-color:#ff7a72;background:#54262b}

.pc-team-editor{width:min(820px,calc(100vw - 32px));max-width:none;max-height:86vh;margin:auto;padding:0;overflow:hidden;border:1px solid #75bde8;border-radius:10px;background:#10243b;color:#ecf7ff;box-shadow:0 18px 70px #000b;font-family:var(--mono,monospace)}
.pc-team-editor[open]{display:flex;flex-direction:column}.pc-team-editor::backdrop{background:#020914c7;backdrop-filter:blur(4px)}
.pc-team-editor>header{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:13px 16px;border-bottom:1px solid #406989;background:linear-gradient(90deg,#1f5278,#182e4e 62%,#341f39)}.pc-team-editor>header>div{display:flex;align-items:center;gap:10px;min-width:0}.pc-team-editor>header img{width:54px;height:54px;object-fit:contain}.pc-team-editor h2,.pc-team-editor h3{margin:0}.pc-team-editor h2{font-size:17px}.pc-team-editor header p{margin:5px 0 0;color:#a8c7e2;font-size:9px}.pc-team-editor>header>button{width:31px;height:31px;border:1px solid #5f87a8;border-radius:5px;background:#173853;color:#e9f7ff;font:22px/1 var(--mono);cursor:pointer}
.pc-team-editor form{min-height:0;display:flex;flex:1;flex-direction:column;overflow:auto}.pc-team-editor-grid{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:18px;padding:16px}.pc-team-editor section{display:grid;align-content:start;gap:10px;min-width:0}.pc-team-editor section+section{padding-left:18px;border-left:1px solid #33546d}.pc-team-editor h3{padding-bottom:6px;border-bottom:1px solid #31536f;color:#bde8ff;font-size:11px}.pc-team-editor label{display:grid;gap:5px;color:#afc9de;font-size:9px}.pc-team-editor select,.pc-team-editor input{box-sizing:border-box;width:100%;height:34px;min-width:0;padding:5px 7px;border:1px solid #456b8b;border-radius:4px;background:#071827;color:#f0f8ff;font:750 10px/1 var(--mono)}.pc-team-editor-pair{display:grid;grid-template-columns:90px minmax(0,1fr);gap:8px}.pc-team-editor-section-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.pc-team-editor-section-head h3{flex:1}.pc-team-editor-section-head>span{padding:4px 7px;border:1px solid #477294;border-radius:999px;color:#b9e6ff;font-size:9px}.pc-team-editor-section-head>span.over{border-color:#ff756d;color:#ffaaa4}.pc-team-editor-note{margin:-4px 0 0;color:#86a7bf;font-size:8px}.pc-team-editor-stats{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:5px}.pc-team-editor-stats label{gap:3px;text-align:center}.pc-team-editor-stats input{text-align:center;padding-inline:2px}.pc-team-editor-moves{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}.pc-team-editor-moves label{padding:7px;border:1px solid #385e7d;border-radius:5px;background:linear-gradient(180deg,#153b5c,#0b2239);box-shadow:inset 0 1px rgba(255,255,255,.06)}.pc-team-editor form>footer{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:8px;padding:11px 16px;border-top:1px solid #365c78;background:#0b1c2e}.pc-team-editor form>footer p{margin:0;color:#ff9b94;font-size:9px}.pc-team-editor form>footer button{min-width:96px;height:34px;border:1px solid #4d7595;border-radius:4px;background:#163550;color:#eaf6ff;font:850 10px/1 var(--mono);cursor:pointer}.pc-team-editor form>footer button.primary{border-color:#7fd4ff;background:#225d83}.pc-team-editor form>footer button:disabled{opacity:.45;cursor:not-allowed}
@media(max-width:700px){.pc-team-editor-grid{grid-template-columns:1fr}.pc-team-editor section+section{padding-left:0;border-left:0;border-top:1px solid #33546d;padding-top:16px}.pc-team-editor-stats{grid-template-columns:repeat(3,minmax(0,1fr))}}

/* Shared display-capitalization policy: controls, compact labels and headings
   read as titles; paragraphs and explanatory copy retain sentence casing. */
.tdx-case :is(button,summary,th,label,select,option,.pclbl,.tag,.prov,.rlab,.wordsub,.case-rail a,.case-rail span),
.pc-pokemon-chooser :is(h2,label,button,.pc-chooser-moves>b),
.pc-team-editor :is(h2,h3,label,button){text-transform:capitalize}

/* Team Analysis: the left coverage panel prioritizes the actionable findings
   instead of repeating all 18 types as two undifferentiated badge clouds. */
.tdx-case .tpcoverage{min-width:0}
.tdx-case .tpcoverage-intro{margin:0;padding:0 0 7px;background:transparent;
  border-bottom:1px solid rgba(79,195,247,.18);box-shadow:none;color:var(--cx-sec);font:650 7px/1.45 var(--jb)}
.tdx-case .tpcoverage .tpcards{display:grid;grid-template-columns:minmax(0,1fr);gap:0;margin:0}
.tdx-case .tpcoverage .tpcard{min-width:0;padding:8px 0;background:transparent;border:0;border-bottom:1px solid rgba(79,195,247,.18)}
.tdx-case .tpcoverage .tpcard:last-child{border-bottom:0;padding-bottom:0}
.tdx-case .tpcoverage .tpcardh{margin:0 0 4px;gap:5px;color:var(--cx-text);font:800 8px/1.1 var(--jb);text-transform:uppercase}
.tdx-case .tpcoverage .tpcardh .tag{margin-left:auto}
.tdx-case .tpcovdesc{margin:0 0 6px;color:var(--cx-ter);font:600 6.4px/1.35 var(--jb)}
.tdx-case .tpcoverage .tpcovfallback{margin:7px 0;padding:7px 9px;font:650 7px/1.45 var(--jb)}
.tdx-case .tpcoverage .tpcovfallback b{font-weight:900}
.tdx-case .tpcovmatrix{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0;align-items:stretch}
.tdx-case .tpcovbucket{min-width:0;padding:5px 6px;background:transparent;box-shadow:none}
.tdx-case .tpcovbucket+.tpcovbucket{border-left:1px solid rgba(79,195,247,.16)}
.tdx-case .tpcovbucket>header{display:flex;align-items:baseline;justify-content:space-between;gap:3px;padding-bottom:4px;border-bottom:1px solid rgba(79,195,247,.12)}
.tdx-case .tpcovbucket>header>b{color:var(--cx-text);font:900 10px/1 var(--mono)}
.tdx-case .tpcovbucket>header>span{color:var(--cx-sec);font:750 5.3px/1 var(--jb);white-space:nowrap}
.tdx-case .tpcovbucket>small{display:block;margin:4px 0;color:var(--cx-ter);font:700 5.2px/1.15 var(--jb);text-transform:uppercase}
.tdx-case .tpcovtypes{display:flex;flex-direction:column;align-items:stretch;gap:3px;min-width:0}
.tdx-case .tpcovtype{display:flex;align-items:center;min-width:0;font:700 7px/1 var(--jb);cursor:help}
.tdx-case .tpcovtype .typebadge{margin:0}
.tdx-case .tpcovtype .typebadge{box-sizing:border-box;width:100%;justify-content:center;overflow:hidden;text-overflow:ellipsis}
.tdx-case .tpcovempty{display:block;width:100%;padding:5px 2px;color:var(--cx-ter);font:700 5.8px/1.35 var(--jb);text-align:center}
.tdx-case .tpcovsource{margin-top:7px;padding-top:6px;border-top:1px solid rgba(79,195,247,.12);color:var(--cx-ter);
  font:650 6.2px/1.35 var(--jb);cursor:help}
.tdx-case .tpcovsource b{color:var(--cx-text)}
.tdx-case .tpcoverage .tpzero{margin-top:6px;padding-top:6px;font-size:6.5px}

/* Team Analysis uses one continuous instrument surface. Major panels retain
   their shell, while the hexagon, role rows and defensive table share edges
   instead of stacking bordered cards inside the Defensive Profile. */
.tdx-case #type-profile-panel>#type-profile-body{margin:0 0 12px}
.tdx-case #type-profile-body>.tphead{margin:0}
.tdx-case #type-profile-body .tphead>.tpgap{margin:8px 12px 0}
.tdx-case #type-profile-body>.tpgrid{width:calc(100% - 24px);margin:8px 12px 0}
.tdx-case #type-profile-body>.tpholes{margin:8px 12px 0;padding:7px 0 0;border-top:1px solid rgba(79,195,247,.18);border-radius:0;background:transparent}

/* Damage Calculator: keep every control, but let each side read as one settings
   surface. Inputs retain their affordances while nested cards become dividers. */
.tdx-case.damage-case{--dmg-ally:rgba(79,195,247,.48);--dmg-foe:rgba(255,112,112,.46)}
.tdx-case.damage-case #damage-team>summary{background:var(--cx-header-outline);border-bottom-color:var(--cx-header-divider)}
.tdx-case.damage-case #damage-team>summary h2{width:100%}
.tdx-case.damage-case .damage-settings-panel{background:linear-gradient(180deg,rgba(10,25,40,.94),rgba(5,13,24,.96));box-shadow:none}
.tdx-case.damage-case .damage-settings-panel.my-settings{border-color:var(--dmg-ally)}
.tdx-case.damage-case .damage-settings-panel.opponent-settings{border-color:var(--dmg-foe)}
.tdx-case.damage-case .damage-settings-panel>summary{background:transparent;border-bottom:1px solid rgba(139,185,216,.17)}
.tdx-case.damage-case .damage-settings-panel>div{padding:0 9px 9px}
.tdx-case.damage-case .dmgsettingsstack{gap:0}
.tdx-case.damage-case .dmgcard{display:grid;gap:6px;padding:9px 0 10px;border:0;border-bottom:1px solid rgba(139,185,216,.18);background:transparent}
.tdx-case.damage-case .opponent-settings .dmgcard{border-color:rgba(255,112,112,.18)}
.tdx-case.damage-case .dmgcardh{padding:0 1px 5px;border-bottom:1px solid rgba(139,185,216,.12)}
.tdx-case.damage-case .dmgcardh b{font-size:11px}
.tdx-case.damage-case .dmgsettingsteam{margin:1px 0 5px}
.tdx-case.damage-case .dmgsettingsteam>span{margin:0 0 4px;padding-left:1px}
.tdx-case.damage-case .dmgsettingsteamgrid{grid-template-rows:repeat(2,49px);gap:3px}
.tdx-case.damage-case .dmgteamslot{grid-template-rows:31px auto;padding:2px;border:0;background:rgba(79,195,247,.035);box-shadow:inset 0 -1px rgba(139,185,216,.15)}
.tdx-case.damage-case .dmgteamslot>img{width:32px;height:32px}
.tdx-case.damage-case .dmgteamslot:hover:not(:disabled){border:0;background:rgba(79,195,247,.08);box-shadow:inset 0 -2px var(--dmg-ally)}
.tdx-case.damage-case .dmgteamslot.on{border:0;background:linear-gradient(180deg,rgba(79,195,247,.13),rgba(79,195,247,.035));box-shadow:inset 0 -2px var(--cx-cyan)}
.tdx-case.damage-case .dmgsettingsteam.foe .dmgteamslot{border:0;background:rgba(255,112,112,.025);box-shadow:inset 0 -1px rgba(255,112,112,.14)}
.tdx-case.damage-case .dmgsettingsteam.foe .dmgteamslot:hover:not(:disabled){border:0;background:rgba(255,112,112,.07);box-shadow:inset 0 -2px var(--dmg-foe)}
.tdx-case.damage-case .dmgsettingsteam.foe .dmgteamslot.on{border:0;background:linear-gradient(180deg,rgba(255,112,112,.12),rgba(255,112,112,.025));box-shadow:inset 0 -2px #ff7777}
.tdx-case.damage-case .dmgteamslot.empty{border:0;box-shadow:none;background:transparent;opacity:.34}
.tdx-case.damage-case .dmgrow{min-height:22px;padding:1px 0}
.tdx-case.damage-case .dmgrow select,.tdx-case.damage-case .dmgrow input{border-color:rgba(139,185,216,.2);background:rgba(3,9,20,.72)}
.tdx-case.damage-case .opponent-settings .dmgrow select,.tdx-case.damage-case .opponent-settings .dmgrow input{border-color:rgba(255,112,112,.18)}
.tdx-case.damage-case .dmgallocation{gap:6px;margin:2px 0;padding:7px 0;border-top:1px solid rgba(139,185,216,.12);border-bottom:1px solid rgba(139,185,216,.12);background:transparent;box-shadow:none}
.tdx-case.damage-case .opponent-settings .dmgallocation{border-color:rgba(255,112,112,.13)}
.tdx-case.damage-case .dmgallocationgrid{gap:5px 8px}
.tdx-case.damage-case .dmgallocationgrid input{background:rgba(3,9,20,.72);border-color:rgba(139,185,216,.2)}
.tdx-case.damage-case .opponent-settings .dmgallocationgrid input{border-color:rgba(255,112,112,.18)}
.tdx-case.damage-case .dmghprow{padding-top:3px;border-top:0}
.tdx-case.damage-case .dmgmoveblock{gap:4px;padding:9px 0;border-top:0;border-bottom:1px solid rgba(139,185,216,.18)}
.tdx-case.damage-case .opponent-settings .dmgmoveblock{border-color:rgba(255,112,112,.18)}
.tdx-case.damage-case .dmgsidebattle{gap:8px;padding:9px 0 0;border:0;background:transparent}
.tdx-case.damage-case .dmgstages{gap:5px;padding:7px 0;border-top:1px solid rgba(139,185,216,.12);border-bottom:1px solid rgba(139,185,216,.12);background:transparent;box-shadow:none}
.tdx-case.damage-case .opponent-settings .dmgstages{border-color:rgba(255,112,112,.13)}
.tdx-case.damage-case .dmgstages select,.tdx-case.damage-case .dmgsidebattle>label>select{background:rgba(3,9,20,.72);border-color:rgba(139,185,216,.2)}
.tdx-case.damage-case .opponent-settings .dmgstages select,.tdx-case.damage-case .opponent-settings .dmgsidebattle>label>select{border-color:rgba(255,112,112,.18)}
.tdx-case.damage-case .dmgtotal{gap:3px;padding:8px 5px;border:0;border-top:1px solid rgba(255,210,77,.35);border-bottom:1px solid rgba(255,210,77,.2);background:linear-gradient(90deg,transparent,rgba(255,210,77,.045),transparent)}
.tdx-case.damage-case .dmgtotal>b{font-size:25px}

/* The shared context and Bench remain grouped, but no longer contain a stack
   of bordered sub-cards inside their single outer panel. */
.tdx-case.damage-case .dmgsharedfield{gap:0;padding:5px 8px;background:transparent}
.tdx-case.damage-case .dmgsharedfield>div,.tdx-case.damage-case .dmgsharedfield>label{padding:6px 8px;border-right:1px solid rgba(139,185,216,.14);background:transparent;box-shadow:none}
.tdx-case.damage-case .dmgsharedfield>div:nth-child(4){border-right:0}
.tdx-case.damage-case .dmgfieldscope{margin-top:3px;padding-top:7px!important;border-top:1px solid rgba(139,185,216,.14);border-right:0!important}
.tdx-case.damage-case .dmgbench{background:rgba(3,9,17,.45)}
.tdx-case.damage-case .dmgbenchsides{gap:0;padding:7px 8px}
.tdx-case.damage-case .dmgbenchside{padding:2px 8px 3px 0;border:0;background:transparent}
.tdx-case.damage-case .dmgbenchside.foe{padding:2px 0 3px 8px;border:0;border-left:1px solid rgba(139,185,216,.16)}
.tdx-case.damage-case .dmgbenchgrid{gap:3px}
.tdx-case.damage-case .dmgbenchslot{border:0;background:rgba(79,195,247,.035);box-shadow:inset 0 -1px rgba(139,185,216,.13)}
.tdx-case.damage-case .dmgbenchside.foe .dmgbenchslot{border:0;background:rgba(255,112,112,.025);box-shadow:inset 0 -1px rgba(255,112,112,.12)}
.tdx-case.damage-case .dmgbenchslot.on,.tdx-case.damage-case .dmgbenchslot.onfield{border:0;box-shadow:inset 0 -2px var(--cx-cyan)}
.tdx-case.damage-case .dmgbenchside.foe .dmgbenchslot.on,.tdx-case.damage-case .dmgbenchside.foe .dmgbenchslot.onfield{border:0;box-shadow:inset 0 -2px #ff7777}
.tdx-case.damage-case .dmgbenchslot.empty{border:0;background:transparent;box-shadow:none}

@media(max-width:900px){
  .tdx-case.damage-case .dmgsharedfield>div,.tdx-case.damage-case .dmgsharedfield>label{padding-inline:5px}
  .tdx-case.damage-case .dmgbenchsides{grid-template-columns:1fr;gap:8px}
  .tdx-case.damage-case .dmgbenchside,.tdx-case.damage-case .dmgbenchside.foe{padding:0;border-left:0}
  .tdx-case.damage-case .dmgbenchside.foe{padding-top:8px;border-top:1px solid rgba(139,185,216,.16)}
}

/* Damage Calculator battlefield: one continuous duel surface instead of a
   stack of boxed cards. Calculator state and controls are unchanged; this
   layer only strengthens the matchup, combatants and Duel Clock hierarchy. */
.tdx-case.damage-case .damage-battle-panel{
  overflow:hidden;
  border:1px solid rgba(104,207,255,.36);
  background:linear-gradient(180deg,#071522,#030812 58%,#050b13);
  box-shadow:0 0 24px rgba(21,144,201,.08),inset 0 1px 0 rgba(176,231,255,.08)
}
.tdx-case.damage-case .damage-battle-panel .damage-battle-head{
  position:relative;z-index:2;
  border-bottom:1px solid rgba(126,211,255,.22);
  background:linear-gradient(90deg,rgba(20,71,101,.58),rgba(5,16,29,.96) 46%,rgba(80,24,42,.34))
}
.tdx-case.damage-case .dmgbattle{background:linear-gradient(180deg,#06111d,#02060c)}
.tdx-case.damage-case .dmgarena{
  isolation:isolate;
  min-height:292px;
  border-bottom:1px solid rgba(133,204,240,.17);
  background:
    linear-gradient(90deg,rgba(18,126,174,.18),transparent 34%,transparent 66%,rgba(171,42,67,.17)),
    radial-gradient(circle at 50% 45%,rgba(117,213,255,.12),transparent 9%),
    radial-gradient(ellipse at 50% 103%,rgba(35,123,158,.38),transparent 54%),
    linear-gradient(180deg,#071a2b 0,#06111f 50%,#02070e 100%)
}
.tdx-case.damage-case .dmgarena::before{
  z-index:0;
  background-image:
    repeating-linear-gradient(0deg,rgba(139,218,255,.024) 0 1px,transparent 1px 5px),
    linear-gradient(90deg,transparent calc(50% - 1px),rgba(123,212,255,.18) 50%,transparent calc(50% + 1px));
  background-size:auto
}
.tdx-case.damage-case .dmgarena::after{
  left:9%;right:9%;bottom:-47px;height:150px;
  border:2px solid rgba(107,207,250,.34);
  box-shadow:0 0 0 8px rgba(58,168,214,.035),0 0 44px rgba(57,178,229,.13),inset 0 0 32px rgba(72,185,231,.08)
}
.tdx-case.damage-case .dmgarena.singles .dmgfighterplate{
  top:14px;width:calc(100% - 34px);padding:8px 11px 9px;
  border:0;border-top:1px solid rgba(121,221,255,.64);border-left:2px solid #62d4ff;
  background:linear-gradient(90deg,rgba(8,31,49,.97),rgba(5,18,31,.78));
  box-shadow:0 9px 22px rgba(0,0,0,.22);
  clip-path:polygon(0 0,calc(100% - 11px) 0,100% 11px,100% 100%,0 100%)
}
.tdx-case.damage-case .dmgarena.singles .dmgfighter.foe .dmgfighterplate{
  border-left:0;border-right:2px solid #ff7183;border-top-color:rgba(255,125,143,.66);
  background:linear-gradient(270deg,rgba(53,17,31,.96),rgba(15,13,25,.8));
  clip-path:polygon(11px 0,100% 0,100% 100%,0 100%,0 11px)
}
.tdx-case.damage-case .dmgfighterplate small{color:#7bb2cf}
.tdx-case.damage-case .dmgfighter.foe .dmgfighterplate small{color:#cf8995}
.tdx-case.damage-case .dmgfighterplate b{font-size:14px;text-shadow:0 0 12px rgba(116,215,255,.18)}
.tdx-case.damage-case .dmgarena.singles .dmghpbar{
  top:72px;height:12px;width:calc(100% - 34px);
  border:0;background:rgba(1,6,12,.92);
  box-shadow:inset 0 0 0 1px rgba(121,221,255,.18),0 4px 12px rgba(0,0,0,.24)
}
.tdx-case.damage-case .dmgarena.singles .dmgfighter.ally .dmghpbar{left:17px}
.tdx-case.damage-case .dmgarena.singles .dmgfighter.foe .dmghpbar{right:17px;box-shadow:inset 0 0 0 1px rgba(255,113,131,.18),0 4px 12px rgba(0,0,0,.24)}
.tdx-case.damage-case .dmghpbar i{background:linear-gradient(90deg,#209f66,#70e396);box-shadow:0 0 9px rgba(73,207,120,.35)}
.tdx-case.damage-case .dmgarena.singles .dmgsprite{bottom:2px;height:204px}
.tdx-case.damage-case .dmgsprite .dmgarena-scope{bottom:-25px;width:214px;height:214px;opacity:.68}
.tdx-case.damage-case .dmgsprite .dmgpokemon-art{width:148px;height:148px;filter:drop-shadow(0 13px 7px rgba(0,0,0,.72))}
.tdx-case.damage-case .dmgfighter.foe .dmgsprite .dmgarena-scope{opacity:.59}
.tdx-case.damage-case .dmgarena.doubles{min-height:350px}
.tdx-case.damage-case .dmgarena.doubles .dmgsprite .dmgarena-scope{width:130px;height:130px;bottom:-16px}
.tdx-case.damage-case .dmgarena.doubles .dmgsprite .dmgpokemon-art{width:92px;height:92px}
.tdx-case.damage-case .dmgarena.doubles .dmgfighter.ally .dmgsprite .dmgpokemon-art{width:108px;height:108px}
.tdx-case.damage-case .dmgversus{
  top:53%;width:56px;height:56px;gap:3px;
  border:1px solid rgba(170,229,255,.58);border-radius:50%;
  background:radial-gradient(circle,rgba(15,47,68,.98) 0 46%,rgba(3,11,20,.96) 48% 100%);
  box-shadow:0 0 0 5px rgba(73,178,224,.06),0 0 24px rgba(69,190,241,.2)
}
.tdx-case.damage-case .dmgversus::before,.tdx-case.damage-case .dmgversus::after{
  content:"";position:absolute;left:50%;width:1px;height:48px;
  background:linear-gradient(transparent,rgba(125,216,255,.35));transform:translateX(-50%)
}
.tdx-case.damage-case .dmgversus::before{bottom:100%}
.tdx-case.damage-case .dmgversus::after{top:100%;background:linear-gradient(rgba(125,216,255,.35),transparent)}
.tdx-case.damage-case .dmgversus>b{font-size:20px;line-height:.9}
.tdx-case.damage-case .dmgversus>span{font-size:5.5px}
.tdx-case.damage-case .dmgversus>button{
  position:absolute;top:64px;width:31px;height:24px;border-radius:12px;
  background:#0a2437;box-shadow:0 0 12px rgba(79,195,247,.13)
}
.tdx-case.damage-case .damage-battle-panel .dmgclock{
  margin-top:11px;margin-bottom:10px;
  border:0;border-top:1px solid rgba(106,204,248,.25);border-bottom:1px solid rgba(106,204,248,.18);
  background:linear-gradient(180deg,rgba(5,16,27,.76),rgba(2,8,16,.92));
  box-shadow:0 12px 30px rgba(0,0,0,.18)
}
.tdx-case.damage-case .dmgclock>header{background:linear-gradient(90deg,rgba(29,93,122,.15),transparent 60%)}
.tdx-case.damage-case .dmgduelplot{background:linear-gradient(to bottom,transparent 27px,rgba(145,177,198,.11) 28px,transparent 29px 70px,rgba(145,177,198,.08) 71px,transparent 72px)}
.tdx-case.damage-case .dmgduelbar>i{border-radius:2px 2px 0 0}
.tdx-case.damage-case .dmgbench{border-top-color:rgba(126,211,255,.17);background:linear-gradient(180deg,rgba(4,12,21,.78),rgba(2,7,13,.96))}

@media(max-width:900px){
  .tdx-case.damage-case .dmgarena{min-height:272px}
  .tdx-case.damage-case .dmgarena.doubles{min-height:330px}
  .tdx-case.damage-case .dmgsprite .dmgarena-scope{width:192px;height:192px}
  .tdx-case.damage-case .dmgsprite .dmgpokemon-art{width:134px;height:134px}
  .tdx-case.damage-case .dmgarena.doubles .dmgsprite .dmgarena-scope{width:124px;height:124px}
  .tdx-case.damage-case .dmgarena.doubles .dmgsprite .dmgpokemon-art{width:88px;height:88px}
  .tdx-case.damage-case .dmgarena.doubles .dmgfighter.ally .dmgsprite .dmgpokemon-art{width:102px;height:102px}
}

/* The published Dex returns to the shared instrument palette used by the
   other public tools. Development deliberately keeps the lighter cobalt
   review palette above so the two presentations can be evaluated separately. */
html[data-tacticdex-presentation="public"] .tdx-case.dex-case{
  --cx-screen:#050d22;--cx-row:#050b16;--cx-chip:#0a1524;
  --cx-panel:linear-gradient(180deg,#0d1a2c,#081120);
  --cx-sec:#8fb6d8;--cx-ter:#4d7ba8;--cx-outline:rgba(79,195,247,.3);
  --cx-header-outline:#214d69;--cx-header-divider:#18354c
}
html[data-tacticdex-presentation="public"] .dex-case :is(.dex-stage-shell,.dex-support-shell,.dxselected-stage,.dxselected-support){background:var(--cx-panel)}
html[data-tacticdex-presentation="public"] .dex-case :is(.dxsectionselect select,.dexctl input,.dexctl select,.dxlearn-controls select,#dex-dataset-body select){background:var(--cx-row);border-color:var(--cx-outline);color:var(--cx-text)}
html[data-tacticdex-presentation="public"] .dex-case :is(.dexmatch,.dxlearn-summary,.dxsimple,.dxevo-node,.dxfocus-facts>span,.dexpanelbody .explsummary,.dexfacts>span,.dxabilitylist>span,.dxability-entry,.dxentry-meta,.dxcommonitems>span,.dxcommonmoves>button,.dxfilter,.dxfiltermore,.dxformrail){background:var(--cx-chip);border-color:var(--cx-outline)}
html[data-tacticdex-presentation="public"] .dex-case :is(.dxsupport-tabs,.dxentry-abilities){background:var(--cx-row)}
html[data-tacticdex-presentation="public"] .dex-case :is(.dxsupport-tabs>[role=tablist],.dxlearn-table th,.dex-scroll-toolbar,.dxrole-chips>span,.dxrank-facts>div>span){background:var(--cx-chip);border-color:var(--cx-outline)}
html[data-tacticdex-presentation="public"] .dex-case .dxlearn-table td{background:var(--cx-row);border-color:var(--cx-outline)}
html[data-tacticdex-presentation="public"] .dex-case .dxlearn-table tbody tr:nth-child(even) td{background:#081120}
html[data-tacticdex-presentation="public"] .dex-case .dxlearn-table tr:hover td{background:#0d253c}
html[data-tacticdex-presentation="public"] .dex-case .dexstat-track{background:#071724;border-color:var(--cx-outline)}
html[data-tacticdex-presentation="public"] .dex-case #dex-dataset-body{border-color:var(--cx-header-divider)}
html[data-tacticdex-presentation="public"] .dex-case .dex-scroll-toolbar{border-bottom-color:var(--cx-outline)}
html[data-tacticdex-presentation="public"] .dex-case .dex-entry-scroll{scrollbar-color:var(--cx-cyan) #081120}
html[data-tacticdex-presentation="public"] .dex-case .dex-entry-scroll::-webkit-scrollbar-thumb{background:var(--cx-cyan);border-color:#081120}
html[data-tacticdex-presentation="public"] .dex-case .col-left .dex-entry-scroll .dexlist.dense .dxpokemonrow{background:var(--cx-row);border-color:var(--cx-outline)}
html[data-tacticdex-presentation="public"] .dex-case .col-left .dex-entry-scroll .dxpokemonrow:hover{background:#0d253c}
html[data-tacticdex-presentation="public"] .dex-case .col-left .dex-entry-scroll .dxpokemonrow.on{background:#102d49;box-shadow:inset 3px 0 var(--cx-cyan)}
html[data-tacticdex-presentation="public"] .dex-case :is(.dxsectionselect>span,.dexctl label,.dxfocus-facts small,.dxentry-identity small,.dex-scroll-cue,.dex-scroll-toolbar>span,.dxrole-details>p,.dxrank-title small,.dxlearn-hint){color:var(--cx-sec)}
html[data-tacticdex-presentation="public"] .dex-case :is(.dxability-entry>small,.dxability-entry>p){color:var(--cx-sec)}
html[data-tacticdex-presentation="public"] .dex-case :is(.dxability-entry>b,.dxrole-details>summary,.dex-scroll-toolbar>button){color:var(--cx-text)}
html[data-tacticdex-presentation="public"] .dex-case :is(.dxchips>span,.dxrole-chips>span,.dxentry-meta>span){background:var(--cx-chip);border-color:var(--cx-outline);color:var(--cx-body)}

/* The filter disclosure is mobile chrome. On the desktop its wrapper is
   transparent so the established left-column stack is unchanged. */
@media(min-width:701px){
  .dex-case .dxmobile-options,.dex-case .dxmobile-options-body{display:contents}
  .dex-case .dxmobile-options::details-content{display:contents;content-visibility:visible!important}
  .dex-case .dxmobile-options>summary{display:none}
  .dex-case .dxmobile-options>.dxmobile-options-body{display:contents!important}
  .dex-case .dex-control-content{display:contents}
}

/* ======================= POKÉDEX PHONE LAYOUT ==========================
   Phones use a real one-column interface instead of a miniaturized 1428px
   desktop. The header, team, record, tabs and navigation remain immediately
   recognisable as the same TacticDex instrument. */
@media(max-width:700px){
  body:has(#case-root.dex-case){overflow:hidden;background:var(--cx-shell)}
  #case-root.dex-case{width:100vw!important;height:100dvh!important;transform:none!important;padding:0;overflow:hidden}
  .dex-case .case-chassis{padding:3px;clip-path:none;box-shadow:none}
  .dex-case .case-bezel{padding:2px;clip-path:none}
  .dex-case .case-screen{clip-path:none;overflow:hidden}
  .dex-case .case-lens,.dex-case .case-footer,.dex-case .brow-gap,.dex-case .col-div{display:none!important}

  /* Brand face plus a thumb-sized six-slot team strip. */
  .dex-case .case-brow{height:116px;display:grid;grid-template-rows:44px 72px;align-items:stretch;background:#071222}
  .dex-case .brow-plate{grid-row:1;width:100%;clip-path:polygon(0 0,100% 0,calc(100% - 28px) 100%,0 100%)}
  .dex-case .brow-inner{left:13px;height:44px;gap:8px}
  .dex-case .brow-led{padding:3px;gap:2px}.dex-case .brow-led .led{width:5px;height:5px}
  .dex-case .wordmark{font-size:18px}.dex-case .wordsub{font-size:6.5px}
  .dex-case .brow-tele{position:absolute;z-index:3;right:9px;top:0;height:44px;max-width:42%;padding:0;font-size:7px;overflow:hidden;text-overflow:ellipsis;color:#ffe0db}
  .tdx-case.dex-case .team-brow{grid-row:2;display:grid!important;grid-template-columns:repeat(6,minmax(0,1fr));align-items:stretch;width:100%!important;height:72px;margin:0!important;overflow:hidden;border-bottom:1px solid rgba(127,212,255,.28);background:linear-gradient(180deg,#0b2035,#071421);clip-path:none;filter:none}
  .tdx-case.dex-case .team-brow-slot,.tdx-case.dex-case .team-brow-slot:first-child{width:auto!important;min-width:0;margin:0!important;padding:4px 2px 5px;clip-path:none!important;border-right:1px solid rgba(127,212,255,.16);box-shadow:inset 0 -1px rgba(127,212,255,.16)}
  .tdx-case.dex-case .team-brow-slot:last-child{border-right:0}
  .tdx-case.dex-case .team-brow-slot::after{display:none}
  .tdx-case.dex-case .team-brow-slot.on{box-shadow:inset 0 -3px #7fdcff,0 0 12px rgba(79,195,247,.18)}
  .tdx-case.dex-case .team-brow-art{width:42px;height:42px}
  .tdx-case.dex-case .team-brow-art img{width:42px;height:42px}
  .tdx-case.dex-case .team-brow-art em{font-size:20px}
  .tdx-case.dex-case .team-brow-slot>b{font-size:7px;line-height:1.05}

  /* One scrollable reading surface; children from the old three columns flow
     into a deliberate mobile hierarchy through display:contents. */
  .dex-case .case-mid{display:block;min-height:0;overflow:hidden}
  .dex-case .case-sheet{height:100%;display:block;overflow-y:auto;overflow-x:hidden;padding-bottom:58px;box-sizing:border-box;overscroll-behavior:contain;scrollbar-gutter:auto}
  .dex-case .sheet-body{display:block;min-height:0;padding:8px;overflow:visible}
  .dex-case .wrap{display:block;min-height:0}
  .dex-case .sheet-cols{display:flex;flex-direction:column;min-height:0}
  .dex-case .case-col{display:contents;width:auto;overflow:visible}
  .dex-case .case-col>*{min-width:0;margin:0 0 8px}
  .dex-case #dex-controls{order:1}.dex-case #dex-stage-panel{order:2}.dex-case #dex-support-panel{order:3}
  .dex-case #dex-stats-panel{order:4}.dex-case #dex-learnset-panel{order:5}.dex-case #dex-list-panel{order:6}
  .dex-case #dex-evolution-panel{order:7}.dex-case #dex-facts-panel{order:8}
  .dex-case #dex-move-mechanics-panel{order:4}.dex-case #dex-move-learners-panel{order:5}.dex-case #dex-move-catalog-panel{order:6}
  .dex-case #dex-records-panel{order:7}.dex-case #dex-audit-panel{order:9}.dex-case #dex-section-notes{order:10}

  /* Persistent bottom tool switcher. Labels stay visible because the Team
     destination intentionally has no icon in the shared markup. */
  .dex-case .case-rail{position:absolute;z-index:40;left:0;right:0;bottom:0;width:auto;height:58px;padding:0;display:flex;flex-direction:row;align-items:stretch;clip-path:none;background:linear-gradient(180deg,#a81f15,#72130c);box-shadow:0 -5px 18px rgba(0,0,0,.45),inset 0 1px rgba(255,255,255,.2)}
  .dex-case .railbtn{flex:1 1 0;width:auto;min-width:0;min-height:58px;padding:7px 2px;border-top:0;border-right:1px solid rgba(255,255,255,.18);border-bottom:0}
  .dex-case .railbtn:last-child{border-right:0;border-bottom:0}
  .dex-case .railbtn .rlab{font-size:6.5px;line-height:1.1;letter-spacing:.03em;overflow-wrap:anywhere}
  .dex-case .railbtn.on{box-shadow:inset 0 3px #fff,inset 0 0 0 1px rgba(255,255,255,.18)}

  /* Compact browsing controls: dataset and section share a row, search is
     immediate, and secondary filters live behind one explicit disclosure. */
  .dex-case .dex-control-content{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}
  .dex-case .dex-control-content>#dex-controls-body{grid-column:1/-1;min-width:0}
  .dex-case .dex-control-content>#dex-dataset-body,.dex-case .dex-control-content>#dex-mode-body{min-width:0;border-bottom:1px solid var(--cx-outline)}
  .dex-case .dex-control-content>#dex-dataset-body{border-right:1px solid var(--cx-outline)}
  .dex-case #dex-dataset-body,.dex-case .dxsectionselect{padding:8px;min-height:62px}
  .dex-case #dex-dataset-body .pclbl,.dex-case .dxsectionselect label{font-size:8px}
  .dex-case #dex-dataset-body select,.dex-case .dxsectionselect select{min-height:36px;padding:7px;font-size:9px}
  .dex-case .dxsectionselect>span{display:none}
  .dex-case .dexctl{gap:6px;padding:7px 8px}
  .dex-case .dxsearch{gap:3px}
  .dex-case .dexctl input,.dex-case .dexctl select{min-height:40px;font-size:12px}
  .dex-case .dxmobile-options{display:block;margin:0;border:1px solid var(--cx-outline);background:var(--cx-chip)}
  .dex-case .dxmobile-options>summary{display:flex;align-items:center;justify-content:space-between;min-height:42px;padding:0 11px;cursor:pointer;color:#dff6ff;font:800 9px/1 var(--mono);letter-spacing:.06em;text-transform:uppercase}
  .dex-case .dxmobile-options>summary::after{content:'+';color:var(--cx-cyantx);font-size:16px}.dex-case .dxmobile-options[open]>summary::after{content:'−'}
  .dex-case .dxmobile-options-body{display:grid;gap:8px;padding:8px;border-top:1px solid var(--cx-outline)}
  .dex-case .dxfiltermore:not([open])>*:not(summary){display:none}
  .dex-case .dexmatch{display:flex;align-items:baseline;gap:6px;padding:6px 9px}
  .dex-case .dexmatch b{font-size:18px}

  /* The selected record is the hero: readable identity, joined typing plate,
     a broad artwork stage, and the existing target-floor alignment rule. */
  .dex-case .dex-centre{display:contents;overflow:visible;padding:0}
  .dex-case .dex-stage-shell{flex:none!important;height:min(520px,calc(100vw + 130px));min-height:470px;overflow:hidden}
  .dex-case .dex-stage-head{height:36px;padding:0 10px}.dex-case .dex-stage-head h2{font-size:10px}
  .dex-case #dex-stage-body{overflow:hidden}
  .dex-case .dxselected-stage{height:100%}
  .dex-case .dxidentity-head{grid-template-columns:auto minmax(0,1fr);grid-template-areas:'num identity' 'types types';gap:5px 7px;padding:10px}
  .dex-case .dxidentity-head>.dextypes{justify-content:stretch}
  .dex-case .dxidentity-head h3{font-size:clamp(18px,6vw,25px)}
  .dex-case .dxentry-typing{width:100%;height:36px;flex-basis:auto}
  .dex-case .dxpokemon-stage .dxidentity-head>.dextypes .typebadge{min-width:0;padding:8px 5px;font-size:11px}
  .dex-case .dxpokemon-focus{display:grid;grid-template-columns:1fr;grid-template-rows:auto minmax(0,1fr);gap:4px;padding:4px 7px 0}
  .dex-case .dxfocus-facts{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:2px;margin:0;align-self:stretch}
  .dex-case .dxfocus-facts span{min-width:0;padding:6px 5px;border-left:0;border-top:2px solid rgba(79,195,247,.5);font-size:9px;overflow-wrap:anywhere}
  .dex-case .dxfocus-facts b{font-size:6px}.dex-case .dxfocus-facts .dxrole-summary i{font-size:7px}
  .dex-case .deximageframe{min-height:0;height:100%;--dex-art-size:min(82cqw,94cqh,310px);--dex-floor-height:min(46px,14cqh);--dex-scope-size:min(92cqw,calc(95cqh - var(--dex-floor-height) - 4px),360px)}
  .dex-case .deximagecaption{font-size:7px}
  .dex-case .dxformrail{min-height:42px;padding:5px 8px;overflow-x:auto}.dex-case .dxformrail>.dxchips{overflow-x:auto;max-height:none}

  /* Tabs behave like a native segmented scroller. Their content expands in
     the page instead of being trapped in a 188px desktop viewport. */
  .dex-case .dex-support-shell,.dex-case.dex-pokemon-mode .dex-support-shell{flex:none!important;height:auto;min-height:0;overflow:visible}
  .dex-case #dex-support-body,.dex-case .dxsupport-tabs{height:auto;min-height:0}
  .dex-case .dxsupport-tabs>[role=tablist]{overflow-x:auto;scroll-snap-type:x proximity;padding:0;gap:0;scrollbar-width:none}
  .dex-case .dxsupport-tabs>[role=tablist]::-webkit-scrollbar{display:none}
  .dex-case .dxsupport-tabs [role=tab]{min-width:max-content;min-height:44px;padding:0 14px;scroll-snap-align:start}
  .dex-case .dxsupport-tabs>[role=tabpanel]{overflow:visible}
  .dex-case .dxsupport-tabs .dxentry-abilities{display:block;padding:10px}
  .dex-case .dxsupport-tabs .dxentry-abilities>b{display:block;margin-bottom:8px}
  .dex-case .dxsupport-tabs .dxentry-abilities .dxabilitylist{grid-template-columns:1fr;gap:7px;font-size:13px}
  .dex-case .dxsupport-tabs .dxentry-abilities .dxabilitylist span{padding:9px}
  .dex-case .dxsupport-stats .dexstats{grid-template-columns:1fr}
  .dex-case .dxsupport-stats .dxstat-hex{grid-template-columns:1fr}.dex-case .dxsupport-stats .dxstat-hex svg{max-height:190px}
  .dex-case .dxmeta-lists{grid-template-columns:1fr}.dex-case .dxcommonmoves{grid-template-columns:repeat(2,minmax(0,1fr))}

  /* Lower-page panels and catalogue are full-width, finger-friendly, and
     avoid nested page-sized scrolling surfaces. */
  .dex-case .case-col>details.panel>summary,.dex-case .case-col>details.defspanel>summary{position:relative;top:auto;margin-top:0;padding-top:8px;min-height:44px}
  .dex-case .dex-list-shell:has(.dex-entry-scroll){max-height:none}
  .dex-case .dex-entry-scroll{height:min(62dvh,520px);min-height:340px}
  .dex-case .col-left .dex-entry-scroll .dexlist.dense .dxpokemonrow{min-height:52px;height:52px;grid-template-columns:36px 38px minmax(0,1fr) auto}
  .dex-case .col-left .dexthumb img{width:38px;height:38px}.dex-case .dexname{font-size:12px}
  .dex-case .dex-scroll-toolbar{position:sticky;top:0;z-index:5;min-height:42px}
  .dex-case .dex-scroll-toolbar button{min-height:34px;padding:6px 9px}
  .dex-case .dxlearn-grid{grid-template-columns:1fr}.dex-case .dxlearn-tablewrap{max-height:55dvh}
  .dex-case .dxevo-pick{grid-template-columns:54px minmax(0,1fr)}.dex-case .dxevo-pick img{width:54px;height:54px}
  .dex-case .dxevo-node>span{margin-left:61px}

  body:has(#case-root.dex-case) .tdx-dev-review-hub{--review-edge:5px;width:min(210px,calc(100vw - 20px))}
  body:has(#case-root.dex-case) .tdx-dev-review-hub summary{padding:6px 50px 6px 8px;font-size:7px}
}

@media(max-width:360px){
  .dex-case .dxidentity-head{grid-template-columns:auto minmax(0,1fr);grid-template-areas:'num identity' 'types types'}
  .dex-case .dxidentity-head>.dextypes{justify-content:stretch}.dex-case .dxentry-typing{width:100%}
  .dex-case .dex-stage-shell{height:530px}
  .tdx-case.dex-case .team-brow-slot>b{font-size:6px}
}

/* The five other public pages now share the Dex's phone-size instrument
   anatomy. Their desktop columns remain independent above this breakpoint. */
@media(max-width:700px){
  #case-root.tdx-case:not(.dex-case){width:100vw!important;height:100dvh!important;transform:none!important;overflow:hidden}
  .tdx-case:not(.dex-case) .case-chassis{padding:3px;clip-path:none;box-shadow:none}
  .tdx-case:not(.dex-case) .case-bezel{padding:2px;clip-path:none}
  .tdx-case:not(.dex-case) .case-screen{clip-path:none;overflow:hidden}
  .tdx-case:not(.dex-case) :is(.case-lens,.case-footer,.brow-gap,.col-div){display:none!important}

  .tdx-case:not(.dex-case) .case-brow{height:116px;display:grid;grid-template-rows:44px 72px;align-items:stretch;background:#071222}
  .tdx-case:not(.dex-case) .brow-plate{grid-row:1;width:100%;clip-path:polygon(0 0,100% 0,calc(100% - 28px) 100%,0 100%)}
  .tdx-case:not(.dex-case) .brow-inner{left:13px;height:44px;gap:8px}
  .tdx-case:not(.dex-case) .brow-led{padding:3px;gap:2px}
  .tdx-case:not(.dex-case) .brow-led .led{width:5px;height:5px}
  .tdx-case:not(.dex-case) .wordmark{font-size:18px}
  .tdx-case:not(.dex-case) .wordsub{font-size:6.5px}
  .tdx-case:not(.dex-case) .brow-tele{position:absolute;z-index:3;right:9px;top:0;height:44px;max-width:42%;padding:0;font-size:7px;overflow:hidden;text-overflow:ellipsis;color:#ffe0db}
  .tdx-case:has(#kernel-panel) .case-brow{height:94px;grid-template-rows:44px 50px}
  .tdx-case:has(#kernel-panel) .brow-tabs{grid-row:2;width:100%;height:50px;margin:0;overflow-x:auto;overflow-y:hidden;scrollbar-width:thin;clip-path:none;background:#091b2d}
  .tdx-case:has(#kernel-panel) .brow-tabs .btab{flex:0 0 auto;min-width:104px;height:48px;margin:0;padding:0 10px;clip-path:none;font-size:9px;white-space:nowrap}
  .tdx-case:not(.dex-case):not(.home-case) .team-brow{grid-row:2;display:grid!important;grid-template-columns:repeat(6,minmax(0,1fr));align-items:stretch;width:100%!important;height:72px;margin:0!important;overflow:hidden;border-bottom:1px solid rgba(127,212,255,.28);background:linear-gradient(180deg,#0b2035,#071421);clip-path:none;filter:none}
  .tdx-case:not(.dex-case):not(.home-case) .team-brow-slot,.tdx-case:not(.dex-case):not(.home-case) .team-brow-slot:first-child{width:auto!important;min-width:0;margin:0!important;padding:4px 2px 5px;clip-path:none!important;border-right:1px solid rgba(127,212,255,.16);box-shadow:inset 0 -1px rgba(127,212,255,.16)}
  .tdx-case:not(.dex-case):not(.home-case) .team-brow-slot:last-child{border-right:0}
  .tdx-case:not(.dex-case):not(.home-case) .team-brow-slot::after{display:none}
  .tdx-case:not(.dex-case):not(.home-case) .team-brow-slot.on{box-shadow:inset 0 -3px #7fdcff,0 0 12px rgba(79,195,247,.18)}
  .tdx-case:not(.dex-case):not(.home-case) .team-brow-art{width:42px;height:42px}
  .tdx-case:not(.dex-case):not(.home-case) .team-brow-art img{width:42px;height:42px}
  .tdx-case:not(.dex-case):not(.home-case) .team-brow-art em{font-size:20px}
  .tdx-case:not(.dex-case):not(.home-case) .team-brow-slot>b{font-size:8px;line-height:1.05}

  .tdx-case:not(.dex-case) .case-mid{display:block;min-height:0;overflow:hidden}
  .tdx-case:not(.dex-case) .case-sheet{height:100%;display:block;overflow-y:auto;overflow-x:hidden;padding-bottom:58px;box-sizing:border-box;overscroll-behavior:contain;scrollbar-gutter:auto}
  .tdx-case:not(.dex-case) .sheet-body{display:block;min-height:0;padding:8px;overflow:visible}
  .tdx-case:not(.dex-case) .wrap{display:block;min-height:0}
  .tdx-case:not(.dex-case) .sheet-cols{display:flex;flex-direction:column;align-items:stretch;min-height:0}
  .tdx-case:not(.dex-case) .case-col{display:contents;width:auto;overflow:visible}
  .tdx-case:not(.dex-case) .case-col>*{min-width:0;max-width:100%;margin:0 0 8px;flex:none!important}
  .tdx-case:not(.dex-case) .case-col>details.panel>summary,.tdx-case:not(.dex-case) .case-col>details.defspanel>summary{position:relative;top:auto;margin-top:0;padding-top:8px;min-height:44px}
  .tdx-case:not(.dex-case) .case-col>details>summary h2{font-size:11px;line-height:1.2}
  .tdx-case:not(.dex-case) .case-col>details>summary .tag{font-size:6.5px}
  .tdx-case:not(.dex-case) .case-col>section.panel{margin-bottom:8px}
  .tdx-case:not(.dex-case) .case-col>section.panel>.damage-battle-head{min-height:42px;display:flex;align-items:center}

  .tdx-case:not(.dex-case) .case-rail{position:absolute;z-index:40;left:0;right:0;bottom:0;width:auto;height:58px;padding:0;display:flex;flex-direction:row;align-items:stretch;clip-path:none;background:linear-gradient(180deg,#a81f15,#72130c);box-shadow:0 -5px 18px rgba(0,0,0,.45),inset 0 1px rgba(255,255,255,.2)}
  .tdx-case:not(.dex-case) .railbtn{flex:1 1 0;width:auto;min-width:0;min-height:58px;padding:7px 2px;border-top:0;border-right:1px solid rgba(255,255,255,.18);border-bottom:0}
  .tdx-case:not(.dex-case) .railbtn:last-child{border-right:0;border-bottom:0}
  .tdx-case:not(.dex-case) .railbtn .rlab{font-size:8px;line-height:1.1;letter-spacing:0;overflow-wrap:anywhere}
  .tdx-case:not(.dex-case) .railbtn.on{box-shadow:inset 0 3px #fff,inset 0 0 0 1px rgba(255,255,255,.18)}

  .tdx-case .mobile-context-bar{margin:8px 8px 0;padding:0;border:1px solid var(--cx-outline);background:var(--cx-panel);clip-path:polygon(0 0,calc(100% - 14px) 0,100% 14px,100% 100%,0 100%)}
  .tdx-case .mobile-context-bar .about-dataset{margin:0;padding:8px 10px;background:transparent;border:0}
  .tdx-case .mobile-context-bar .about-dataset-head{margin-bottom:5px}
  .tdx-case .mobile-context-bar :is(select,input){min-height:38px;font-size:16px}
  .tdx-case:not(.dex-case) .case-sheet :is(select,input:not([type=checkbox]),textarea){max-width:100%;font-size:16px}
  .tdx-case:not(.dex-case) .case-sheet :is(select,input:not([type=checkbox])){min-height:36px}
  .tdx-case:not(.dex-case) .case-sheet :is(.expltablewrap,.sp-table-wrap,.dxscroll,.dmgrolls,.dmgclock,.tptablewrap){max-width:100%;overflow-x:auto}
  body:has(#case-root.tdx-case:not(.dex-case)) .tdx-dev-review-hub{--review-edge:5px;width:min(210px,calc(100vw - 20px))}
  body:has(#case-root.tdx-case:not(.dex-case)) .tdx-dev-review-hub summary{padding:6px 50px 6px 8px;font-size:7px}

  /* Order each tool by the question the phone user came to answer. The
     dataset selector above remains visible while About stays available below. */
  #explorer-panel{order:1}#explorer-settings{order:2}#explorer-results{order:3}#explorer-tools{order:4}#explorer-team{order:5}#explorer-about{order:6}
  #explorer-body:has(.expltablewrap)::before{content:'SWIPE SIDEWAYS TO SEE ALL COLUMNS →';display:block;margin:0 0 7px;color:var(--cx-cyan);font:700 8px var(--mono);letter-spacing:.08em}
  #speed-panel{order:1}#speed-my-options{order:2}#speed-field{order:3}#speed-team-options{order:4}#speed-tiers{order:5}#speed-notes{order:6}#speed-tools{order:7}#speed-about{order:8}
  #type-profile-panel{order:1}#type-coverage-panel{order:2}#type-threat-type-panel{order:3}#type-threat-species-panel{order:4}#type-damage-controls-panel{order:5}#type-damage-panel{order:6}#types-about{order:8}
  .analysis-case .upcoming-note{order:9}
  #damage-team{order:1}#damage-battlefield{order:2}#damage-panel{order:3}#damage-my-settings{order:4}#damage-opponent{order:5}#damage-field{order:6}#damage-limits{order:7}#damage-about{order:8}
  .damage-case .analysis-note{order:9;margin-bottom:8px}
  #topstats{order:1}#kernel-panel{order:2}#mat-panel{order:3}#net-panel{order:4}#insp-panel{order:5}#out-panel{order:6}#tests-panel{order:7}#defs-panel{order:8}#damage-independence{order:9}

  /* A compact stat card keeps every speed comparison visible without a sideways hunt. */
  #speed-panel-body{overflow-x:visible!important}
  #speed-panel-body .sptab{display:block;width:100%;font-size:10px}
  #speed-panel-body .sptab thead{display:none}
  #speed-panel-body .sptab tbody{display:grid;gap:7px}
  #speed-panel-body .sptab tr{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1px;border:1px solid var(--cx-outline);background:var(--cx-outline)}
  #speed-panel-body .sptab td{display:flex;flex-direction:column;justify-content:center;min-width:0;min-height:42px;padding:5px 7px;border:0;text-align:left;background:var(--cx-panel);overflow:hidden}
  #speed-panel-body .sptab td:first-child{grid-column:1/-1;min-height:46px}
  #speed-panel-body .sptab td:nth-child(5){grid-column:span 2}
  #speed-panel-body .sptab td:nth-child(6){grid-column:span 1}
  #speed-panel-body .sptab td:nth-child(2)::before{content:'BASE'}
  #speed-panel-body .sptab td:nth-child(3)::before{content:'REFERENCE'}
  #speed-panel-body .sptab td:nth-child(4)::before{content:'EFFECTIVE'}
  #speed-panel-body .sptab td:nth-child(5)::before{content:'BAND'}
  #speed-panel-body .sptab td:nth-child(6)::before{content:'MOVE FIRST'}
  #speed-panel-body .sptab td:not(:first-child)::before{color:var(--cx-muted);font:700 7px var(--mono);letter-spacing:.07em}
  #speed-panel-body .sptab .spmon{min-width:0}

  /* The home directory keeps the same chrome but lets its tool cards flow. */
  .home-case .case-brow{height:44px;display:block}
  .home-case .home-tool-brow{display:none!important}
  .tdx-case.home-case .hmwrap{width:100%;max-width:none;overflow:visible;padding:12px 4px 75px;justify-content:flex-start}
  .tdx-case.home-case .hmhero{margin:0;text-align:left;padding:2px 2px 8px}
  .tdx-case.home-case .hmtitle{font-size:24px;line-height:1.13;margin-bottom:9px}
  .tdx-case.home-case .hmlede{font-size:12px;line-height:1.5;margin-bottom:10px}
  .tdx-case.home-case .hmclaims{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:5px}
  .tdx-case.home-case .hmclaim{font-size:9px;line-height:1.35;padding:7px}
  .tdx-case.home-case .hmclaim b{display:block;margin:0 0 3px}
  .tdx-case.home-case .hmsechead{margin:14px 2px 9px}
  .tdx-case.home-case .hmgrid{display:grid;grid-template-columns:1fr;gap:8px;padding:0}
  .tdx-case.home-case .hmgrid>.hmcard,.tdx-case.home-case .hmgrid>.hmcard:nth-child(4),.tdx-case.home-case .hmgrid>.hmcard:nth-child(5){grid-column:auto}
  .tdx-case.home-case .hmcard{min-height:114px;padding:12px}
  .tdx-case.home-case .hmutility{display:flex;flex-direction:column;align-items:flex-start;gap:5px;width:100%;margin:9px 0 0;padding:12px}
  .tdx-case.home-case .hmcname{font-size:15px}.tdx-case.home-case .hmcq{font-size:12px}.tdx-case.home-case .hmcbody{font-size:11px}.tdx-case.home-case .hmcgo{font-size:9px}
  .tdx-case.home-case .hmfine{font-size:9px;margin:12px 2px}

  /* Wide calculation and catalogue surfaces scroll inside their own module. */
  .tdx-case.damage-case .dmgbattle{min-width:0}
  .tdx-case.damage-case .dmgarena{min-width:0;min-height:245px}
  .tdx-case.damage-case .dmgarena.singles .dmgfighterplate{top:8px;width:calc(100% - 12px);padding:6px}
  .tdx-case.damage-case .dmgarena.singles .dmgfighter.ally .dmgfighterplate{left:6px}
  .tdx-case.damage-case .dmgarena.singles .dmgfighter.foe .dmgfighterplate{right:6px}
  .tdx-case.damage-case .dmgfighterplate b{font-size:10px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .tdx-case.damage-case .dmgarena.singles .dmghpbar{top:60px;width:calc(100% - 12px)}
  .tdx-case.damage-case .dmgarena.singles .dmgfighter.ally .dmghpbar{left:6px}
  .tdx-case.damage-case .dmgarena.singles .dmgfighter.foe .dmghpbar{right:6px}
  .tdx-case.damage-case .dmgarena.singles .dmgsprite{height:150px}
  .tdx-case.damage-case .dmgsprite .dmgarena-scope{width:150px;height:150px;bottom:-16px}
  .tdx-case.damage-case .dmgsprite .dmgpokemon-art{width:105px;height:105px}
  .tdx-case.damage-case .dmgversus{width:42px;height:42px}
  .tdx-case.damage-case .dmgversus>b{font-size:16px}
  .tdx-case.damage-case .dmgversus>button{top:48px}
  .tdx-case.damage-case .damage-battle-panel .dmgclock{width:100%;box-sizing:border-box;overflow-x:auto}
  .tdx-case.damage-case .dmghead5{min-width:0;grid-template-columns:repeat(2,minmax(0,1fr))}
  .tdx-case.damage-case .dmgsharedfield{grid-template-columns:repeat(2,minmax(0,1fr))}
}

@media(max-width:360px){
  .tdx-case:not(.dex-case):not(.home-case) .team-brow-slot>b{font-size:6px}
  .tdx-case:not(.dex-case) .brow-tele{max-width:38%}
}

/* Privacy and advertising disclosure. This page deliberately uses the shared
   visual vocabulary without booting the application shell or any dataset. */
.legal-page{min-height:100vh;padding:28px 18px 64px;background:
  radial-gradient(circle at 16% 0,rgba(79,195,247,.12),transparent 30rem),
  linear-gradient(180deg,#07111c,#03070d 72%);color:var(--text);font-family:var(--sans)}
.legal-head{display:flex;align-items:center;justify-content:space-between;gap:16px;width:min(860px,100%);margin:0 auto 12px;
  color:var(--faint);font:800 9px/1 var(--mono);letter-spacing:.1em}
.legal-brand{color:var(--cyan);font:850 16px/1 var(--ox);letter-spacing:.08em;text-decoration:none}
.legal-card{width:min(860px,100%);margin:0 auto;padding:clamp(22px,5vw,52px);box-sizing:border-box;border:1px solid var(--line2);
  background:linear-gradient(180deg,rgba(12,31,49,.96),rgba(5,14,24,.98));box-shadow:0 22px 70px rgba(0,0,0,.42)}
.legal-kicker{margin:0 0 9px;color:var(--cyan);font:800 9px/1 var(--mono);letter-spacing:.12em}
.legal-card h1{margin:0;color:#f4fbff;font:800 clamp(25px,5vw,44px)/1.08 var(--ox);letter-spacing:-.025em}
.legal-updated{margin:9px 0 28px;color:var(--faint);font:700 9px/1.3 var(--mono);text-transform:uppercase}
.legal-card h2{margin:30px 0 8px;padding-top:18px;border-top:1px solid rgba(127,212,255,.17);color:#dff7ff;
  font:800 16px/1.2 var(--ox);letter-spacing:.02em}
.legal-card p,.legal-card li{color:#aec3d1;font-size:14px;line-height:1.7}
.legal-card strong{color:#eaf8ff}.legal-card ul{margin:10px 0 16px;padding-left:22px}.legal-card li+li{margin-top:7px}
.legal-card a{color:#7fdcff;text-underline-offset:3px}.legal-card a:hover{color:#dff7ff}
.legal-note{margin-top:30px;padding:13px 15px;border-left:3px solid var(--amber);background:rgba(255,193,73,.06);font-size:12px!important}
.legal-actions{display:flex;flex-wrap:wrap;gap:9px;margin-top:26px}.legal-actions a{padding:10px 12px;border:1px solid rgba(127,212,255,.34);
  border-radius:4px;background:#071d2e;font:800 8px/1 var(--mono);letter-spacing:.07em;text-decoration:none}
.hmfine a{margin-left:6px;color:var(--cyan);font-weight:800;text-underline-offset:2px}
@media(max-width:700px){
  .privacy-mobile-link{display:block;position:relative;z-index:2;margin:0 8px 70px;padding:10px;border:1px solid rgba(127,212,255,.3);
    background:#071d2e;color:var(--cx-info);font:800 8px/1 var(--mono);letter-spacing:.08em;text-align:center;text-decoration:none}
  .legal-page{padding:14px 10px 38px}.legal-head{padding:0 4px;box-sizing:border-box}.legal-card{padding:22px 17px}
  .legal-card p,.legal-card li{font-size:13px}.legal-actions{display:grid}.legal-actions a{text-align:center}
}

/* Damage modes: independent spreadsheet workspace and saved-Team battlefield. */
.damage-mode-controls{flex:0 0 auto;padding:10px 14px;border-bottom:1px solid rgba(124,200,232,.25);background:#071522}
.damage-mode-controls p{margin:7px 0 0;color:#a9bdce;font:11px/1.5 var(--mono)}
.dmgmodetabs{display:flex;gap:6px}.dmgmodetabs button{padding:11px 20px;border:1px solid #365567;background:#0c2132;color:#bad1df;font:700 12px var(--mono);cursor:pointer;border-radius:5px}
.dmgmodetabs button.on{background:#133d52;border-color:#65d6ff;color:#c1f2ff;box-shadow:inset 0 -2px #65d6ff}
.damage-case .wrap:has(.damage-mode-controls){display:flex;flex-direction:column;min-height:0}
.damage-case .wrap>.sheet-cols{flex:1;min-height:0}
.dmgmatrix{padding:12px;color:#c5d5e1;font:11px/1.5 var(--mono)}
.dmgmatrixbar{display:flex;align-items:center;justify-content:space-between;gap:12px}.dmgmatrixbar b{display:block;color:#def5ff;font-size:14px}.dmgmatrixbar span{display:block;color:#9db1c2;margin-top:4px}
.dmgmatrix button,.dmgmatrixpicker button{cursor:pointer;font:inherit;color:#c3e8f8;background:#102b3d;border:1px solid #345469;padding:8px;border-radius:3px}
.dmgmatrix button:disabled,.dmgmatrixpicker button:disabled{opacity:.45;cursor:default}
#dmg-matrix-calculate{flex-shrink:0;background:#12536b;border-color:#69c5e4;color:#e5faff;font-weight:700}
#dmg-matrix-progress{color:#8fbace;min-height:18px}
.dmgmatrixscroll{max-width:100%;max-height:520px;overflow:auto;border:1px solid #355468;border-radius:4px}
.dmgmatrix table{border-collapse:separate;border-spacing:0;width:100%;font:11px/1.5 var(--mono)}
.dmgmatrix caption{text-align:left;padding:8px;background:#0b1b2a;color:#a8c0d2}
.dmgmatrix th,.dmgmatrix td{padding:9px;border-right:1px solid #233d50;border-bottom:1px solid #233d50;text-align:left;vertical-align:middle}
.dmgmatrixscroll th{background:#0d2232;min-width:140px}.dmgmatrixscroll thead th{position:sticky;top:0;z-index:2}.dmgmatrixscroll tbody th{position:sticky;left:0;z-index:1}
.dmgmatrixscroll td{min-width:175px;background:#081823}.dmgmatrixscroll th button{background:transparent;border:0;padding:3px;text-align:left}
.dmgmatrixscroll td button{display:block;width:100%;text-align:left;background:transparent;border:0;padding:3px}.dmgmatrixscroll td strong,.dmgmatrixscroll td span,.dmgmatrixscroll td small{display:block}.dmgmatrixscroll td strong{font-size:15px;color:#8fd8ef}.dmgmatrixscroll td small{color:#a1b6c6;margin-top:4px}
.dmgmatrixscroll td.matrix-ko{background:#10392e}.dmgmatrixscroll td.matrix-ko strong{color:#9af1b3}.dmgmatrixscroll td.matrix-chance{background:#3b3118}.dmgmatrixscroll td.matrix-chance strong{color:#ffe09a}
.dmgmatrixlegend{color:#9cb5c6;font-size:10px}.dmgmatrixdetails{margin-top:18px;max-height:420px;overflow:auto}.dmgmatrixdetails h3{margin:0;color:#d4f4ff}.dmgmatrixdetails p{color:#9ab5c9}.dmgmatrixdetails th{color:#bbddec}
.dmgmatrixpicker{display:grid;gap:9px;padding:12px;background:#091b2b;border-bottom:1px solid #33566c}.dmgmatrixpicker>b{color:#9ee4ff;font:700 12px var(--mono)}.dmgmatrixpicker label{display:grid;gap:5px;color:#a6c5d9;font:11px var(--mono)}.dmgmatrixpicker select{width:100%;min-width:0;padding:6px;background:#0c2334;color:#d0e6f2;border:1px solid #34586f}
.dmgteamlocked p{padding:0 10px;color:#9eb5c6;font-size:11px}.dmgteamlocked dl{display:grid;grid-template-columns:auto 1fr;gap:7px;padding:10px;font-size:11px}.dmgteamlocked dt{color:#91b7cd}.dmgteamlocked dd{margin:0;color:#daeefa}.dmgteamlocked>label{display:flex;gap:8px;align-items:center;padding:6px 10px;font-size:11px}.dmgteamlocked input[type=number]{width:65px}
.damage-case[data-damage-view=battle] .dmgversus>button{display:none}
.damage-case[data-damage-view=battle] .dmgbenchside.ally .dmgbenchedit{display:none}
.damage-case[data-damage-view=matrix] .dmgsidecrit,.damage-case[data-damage-view=matrix] .dmgtotal,.damage-case[data-damage-view=matrix] .dmgspreadcheck{display:none}
.dmgfieldmetrics{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:#294253;border-block:1px solid #294253}.dmgfieldmetrics>div{padding:12px;background:#071724}.dmgfieldmetrics b{display:block;color:#b4ebff;font:700 17px var(--mono)}.dmgfieldmetrics small{display:block;color:#96b7cc;font:10px/1.6 var(--mono)}
@media(max-width:760px){
  .damage-mode-controls{padding:10px}
  .dmgmodetabs button{flex:1;padding:10px 7px;font-size:11px}
  .dmgmatrix{padding:8px}
  .dmgmatrixbar{align-items:stretch;flex-direction:column}
  .dmgmatrixscroll{max-height:430px}
  .damage-case .wrap:has(.damage-mode-controls){display:block}
  .dmgfieldmetrics b{font-size:13px}
}
.damage-case[data-damage-view=matrix] #damage-team{display:none}
.damage-case[data-damage-view=matrix] .dmgsidebattle.ally>label:first-child{display:none}
.damage-case[data-damage-view=matrix] .dmgmatrixscroll :is(th,td){padding:6px 8px}
.dmgmatrixscroll td small{font-size:10px}
.dmgmatrixscroll td span{font-size:11px}
