/* Jianco Oracle page CSS — /assets/oracle.css v8 (page-only rules; also styles /oracle/evidence/; components live in ui.css, which now carries the former overrides: .ohero/.toolbar padding-block, .tbl .chev, .search .clear 44, button.status.compact 44, .banner .btn 44, .chip.cat b) */
.ohero{text-align:center}
.ohero .eyebrow{justify-content:center}
.ohero h1{margin-top:10px}
.ohero .lede{margin-inline:auto;text-wrap:balance}
.status-row{justify-content:center}
/* phone fold (DESIGN §1: first pick top ≤ 560 / bottom ≤ 700 at 390×844, also under a late/asleep banner) on the 4-px grid: hero 12/8, h1 4, status row 8, toolbar 4/8, banner 4; the lede (AUDIT §G line 2) renders from 720 px, on phones its facts live in the status pill ('Read 12 min ago · next ~07:14') and in Method 01 */
@media (max-width:719px){.ohero{padding-block:12px 8px}.ohero h1{margin-top:4px}.ohero .lede{display:none}.status-row{margin-top:8px}}
@media (min-width:720px){.ohero{text-align:left}.ohero .eyebrow{justify-content:flex-start}.ohero .lede{margin-inline:0}.status-row{justify-content:flex-start}}
.sec{scroll-margin-top:calc(var(--nav-h) + var(--seg-h) + 8px)}
.row,.rowt,.row-btn,.rowtoggle{scroll-margin-top:calc(var(--nav-h) + var(--seg-h) + var(--tok-h) + 8px)}
.status .refresh{flex:none}
.statusbar .links{display:flex;gap:16px;align-items:center}
.statusbar a{min-width:44px;justify-content:center}
/* footer facts: each one nowrap, spaced by the container, the dot aligned to the first line */
.statusbar .l{align-items:flex-start}
.statusbar .l .dot{margin-top:7px}
#foot-txt{display:inline-flex;flex-wrap:wrap;gap:0 10px;min-width:0}
#foot-txt a{min-height:0;min-width:0;padding:14px 0;margin:-14px 0} /* 44 px hit height without a taller line; no side padding, so scrollWidth == clientWidth on every fact */
.nw{white-space:nowrap}
.actions .btn{min-width:44px}
@media (max-width:719px){.segbar .seg{flex:1 1 100%}}
@media (max-width:719px){.toolbar{position:relative;padding-block:4px;gap:8px}.toolbar .count{position:absolute;right:20px;top:19px}.toolbar.has-q .count{right:68px}.search input{padding-right:84px}.colhead{padding-block:4px}}
/* meta lines are spaced segments (no glyph separators): a wrapped line never starts or ends with a dot; the closes segment shares the legs line when it fits, else wraps whole */
.row-btn .s,.tbl tr.rowt .rowtoggle .s,.vc .m,.eplist .s,.ltbl .c-ep .s,#status-txt,#ev-status-txt{display:flex;flex-wrap:wrap;gap:2px 10px;white-space:normal;text-overflow:clip;overflow:visible}
#status-txt,#ev-status-txt{display:inline-flex;gap:0 10px}
.row-btn .s .segm.cl{flex:0 1 auto}
.vc .m{overflow-wrap:break-word;overflow-wrap:anywhere}
/* five same-colour facts 10 px apart read as one sentence, so the facts get a step the gap alone does not give: the leading keyword of each segment ('fee', 'depth', 'K NO') sits in --dim (4.8:1 on --bg, the row background), the value in --mut, with a 14 px gap from 360 px */
.row-btn .s .kw,.tbl tr.rowt .rowtoggle .s .kw,.eplist .s .kw,.ltbl .c-ep .s .kw{color:var(--dim)} /* not .vc .m .kw: --dim is 4.41:1 on the card's --bg-3, the 14 px gap alone steps the facts there */
@media (min-width:390px){.row-btn .s{gap:2px 12px}}
@media (min-width:720px){.tbl tr.rowt .rowtoggle .s,.vc .m{gap:2px 14px}}
/* the category as a text segment (.al): every phone card, and the Report row of the 720–1023 table (its CATEGORY column is hidden there); set as a small label so it never reads as part of the price sentence */
.segm.cat{display:none}
.row-btn .s .segm.cat.al,.tbl tr.rowt .rowtoggle .s .segm.cat.al{display:inline-block;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--mut)}
.row-btn .s .segm.cat.al{flex:1 1 0;min-width:0;overflow:hidden;text-overflow:ellipsis} /* one line always: the category takes what the legs leave */
@media (max-width:389px){.row-btn .s .segm.cat.al{display:none}}
/* the Report card's varying label ('subset', 'complement', 'other leg', 'rules text') as a text segment in the category's slot, set like the category label (11 px tracked caps) so it reads as a label, not a price fact. Basis 0 so it never wraps the line: it grows to its own width and ellipsises only when the legs leave less (the row stays one meta line, ≤ 96 px) */
.row-btn .s .segm.lab{flex:1 1 0;min-width:0;max-width:max-content;overflow:hidden;text-overflow:ellipsis;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--mut)}
.row-btn .s,.tbl tr.rowt .rowtoggle .s{align-items:baseline}
/* the meta line spans under the side column (ui.css "rank s s chev"), so the title row is the side's height (chip 28 + 3 + 14 = 45 px) and a one-line meta gives 12 + 45 + 4 + 18 + 12 = 92 px */
.row-btn .side{gap:3px}
.row-btn .side>span{line-height:1.2}
/* Pairs / Events cards carry no rank (ranks belong to the Report): the text column starts at the row's edge */
.row-btn.norank{grid-template-columns:minmax(0,1fr) auto auto;grid-template-areas:"t side chev" "s s chev" "chips chips chips"}
/* the Events read line: one meta-style sentence above the rows */
.subhead.note{padding:10px 16px 8px}
.subhead.note p{font:400 13px/1.4 var(--mono);color:var(--mut)}
@media (max-width:719px){.row-btn .chips{margin-top:4px}.banner{padding:4px 12px 4px 14px;gap:8px;font-size:12px;line-height:1.35}.banner .btn{padding:0 10px}}
/* the card's side column: the cents chip, then the at-size figure right-aligned under it (one grammar with the table's AT SIZE cell); the cost sits in the meta line beside the legs */
.row-btn .side>span{text-align:right}
.chip.edge.nil{color:var(--mut)}
/* narrow phones: the closes date may be wider than the text column beside a wide chip; the segment wraps rather than widening (360–369 px included) */
@media (max-width:479px){.row-btn .s .segm.cl{white-space:normal}}
/* event-lock legs on narrow phones: the name on its own line above its value */
@media (max-width:479px){.legs li{flex-direction:column;gap:2px;align-items:flex-start}.legs li span:last-child{white-space:normal}}
@media (min-width:720px){.toolbar .search{flex:0 1 360px;width:360px}#sort{display:none}}
.info::before{content:"";position:absolute;inset:-10px;border-radius:50%}
.method .foot a,.pop a{padding-block:15px;white-space:nowrap}
.pop{left:0;top:0}
@media (max-width:719px){.pop{width:calc(100vw - 32px)}}
@media (min-width:720px){.pop{width:320px}} /* 'Kalshi ok · 57 pages · 11,220 events' on one line */
.pop .line.meta{display:block}
#view{display:flex;flex-direction:column}
#view>.list{order:1}
/* phones: the brief dissolves into #view so the sentence stays above the list and Copy report sits under it */
@media (max-width:719px){#brief{display:contents}#brief-p{flex:0 0 auto;margin-bottom:8px}#copy-report{order:2;align-self:flex-start;margin-top:12px}#view>.legend{order:3;margin-top:12px}}
@media (min-width:720px){#view>.legend{margin-bottom:12px}}
/* desktop row: title on its own line, then meta segments and chips share a wrapping row (chips align with the title when they wrap) */
.tbl tr.rowt button.rowtoggle{display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px}
.tbl tr.rowt .rowtoggle .t{display:block;flex:0 0 100%}
.tbl tr.rowt .rowtoggle .s{margin:0}
.tbl tr.rowt .rowtoggle .chips{display:inline-flex;flex-wrap:wrap;gap:6px;margin:0}
.tbl td.ra{font-size:13px;padding-inline:8px;white-space:nowrap}
.tbl .c-rank{color:var(--dim);font:500 12px/1.4 var(--mono)}
.tbl tr.first .c-rank{color:var(--gold)}
.tbl th.ra button{justify-content:flex-end;width:100%}
.tbl .t mark{background:none;color:inherit;text-decoration:underline;text-decoration-color:var(--gold);text-underline-offset:.15em}
.tbl tr.open .chev{transform:rotate(180deg)}
.tbl .subhead-row td{padding:0}
.tbl .subhead-row .subhead{border-top:0}
.tbl td.c-cat .chip{display:inline;padding:0;border:0;background:none;white-space:normal;font-size:12px;color:var(--mut)}
#legend{display:block}
.legend .info{width:18px;height:18px;font-size:11px}
.brief p .info{margin-left:2px}
.brief p .kp,.legend .kp{white-space:nowrap}
/* the legend reads as copy (sans, --mut); only its keyword+ⓘ pairs stay in the label face */
.legend{font:400 13px/1.5 var(--sans);color:var(--mut)}
.legend .kp{font:500 12px/1 var(--mono)}
@media (max-width:479px){.row-btn{padding-inline:12px}.row-btn .rank{width:20px}.row-btn .chip.edge{min-width:64px}}
@media (max-width:389px){.row-btn{gap:0 8px}.row-btn .rank{width:16px}}
@media (max-width:359px){.colhead{padding-inline:12px}.row-btn .chip.edge{min-width:56px}.rows .chip.cx{display:none}.vc .btn{padding-inline:10px;letter-spacing:.02em;white-space:normal}.kv .k{display:block;letter-spacing:.06em}}
@media (min-width:1024px){.tbl .chip.cx{display:none}}
.vcs.one{grid-template-columns:1fr}
.vc .price .plus{font:400 16px/1 var(--mono);color:var(--dim)}
.rows>li.subhead{border-top:0;border-bottom:1px solid var(--line-1)}
.subhead .h3{font-size:20px}
.rows>li.showall{border-top:0}
.kv .v{overflow-wrap:break-word;overflow-wrap:anywhere}
@media (min-width:1100px){.kv{grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}} /* as many columns as fit at 200 px, so '19:29:46 UTC · 28 s before the read' keeps its number with its unit */
/* kv values built from segments ('44 s apart' · '(max 900 s)'): spaced, each free to wrap at a word but never inside a number–unit pair */
.kv div.sg .v{display:flex;flex-wrap:wrap;gap:2px 10px}
@media (min-width:480px){.kv .q{grid-column:span 2}} /* a quote cell ('19:29:46 UTC · 28 s before the read') takes two columns so each time sits on one line */
.kv .v .segm{white-space:normal}
.sk-rows{display:block}
.ohero .status .txt{text-align:left}
@media (max-width:719px){.status .txt{font-size:12px}#status,#ev-status{padding-left:12px;gap:8px}#status-txt,#ev-status-txt{gap:0 6px}}
.kv .k{min-height:24px}
.method .num-eyebrow+h2{margin-top:14px}
.method h2+.card{margin-top:28px}
.method details summary::after,details.dsec>summary::after{content:"";width:16px;height:16px;margin-left:8px;flex:none;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23d4a642' stroke-width='1.75' stroke-linecap='round'%3E%3Cpath d='M12 5v14M5 12h14'/%3E%3C/svg%3E") center/16px no-repeat;transition:transform var(--t-ui) var(--ease)}
.method details[open] summary::after,details.dsec[open]>summary::after{transform:rotate(45deg)}
details.dsec{padding-top:0;gap:0}
details.dsec>summary{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:44px;cursor:pointer;list-style:none;color:var(--mut)}
details.dsec>summary .chip{text-transform:none;letter-spacing:.08em;margin-right:auto} /* the Relation summary carries its chip: the relation reads shut */
@media (max-width:719px){.detail-body{padding:12px;gap:10px}.vc{padding:12px;gap:5px}.vc .btn.lg{min-height:44px}.vcs{gap:8px}.kv{gap:8px 12px}.kv .k{min-height:0}.kv .info{width:18px;height:18px;font-size:11px}.why{line-height:1.45}.detail-body>details.dsec:not([open])+details.dsec{margin-top:-10px}}
details.dsec>summary::-webkit-details-marker{display:none}
details.dsec>summary:focus-visible{outline:2px solid var(--gold);outline-offset:2px;border-radius:var(--r-1)}
details.dsec[open]>summary{color:var(--dim)}
details.dsec>summary~*{margin-top:10px}
details.dsec>summary+*{margin-top:0}
.detail-body>details.dsec:not([open])+details.dsec{margin-top:-8px} /* folded neighbours sit closer: a stack of four shut sections is a list, not four gaps */
.segm{white-space:nowrap;display:inline-block}
.banner+.banner{border-radius:0}
@media (max-width:479px){.kv .wide{grid-column:1/-1}}
.actions [data-act=collapse]{margin-left:auto}
.actions [data-act=collapse] svg{transform:rotate(180deg)}
@media (max-width:479px){.actions .btn:not(.icon){padding-inline:14px}}
@media (max-width:359px){.actions .btn{flex:1 1 45%}.actions .btn.icon{flex:0 0 44px}.actions [data-act=collapse]{display:none}.pop{padding-block:10px}.pop .line{padding-block:1px}}
/* #1 pick: the glow is painted inside the row (nothing escapes the card), the gold bar on the button only; first-child follows the card's top corners */
.row.first{box-shadow:inset 0 0 48px -8px rgba(var(--gold-rgb),.16);border-radius:0}
.row.first .row-btn{box-shadow:inset 3px 0 0 var(--gold)}
.rows>li.row.first:first-child,.rows>li.row.first:first-child .row-btn{border-radius:var(--r-3) var(--r-3) 0 0}

/* ---- v3 (audit): fourth segment as a link, relation/pricing chips, the seven-check line, detail sections, payoff table, rules blocks, evidence page ---- */
.seg a{min-height:44px;border-radius:var(--r-pill);font:500 13px/1 var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--mut);display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:0 10px;transition:background var(--t-fast),color var(--t-fast);white-space:nowrap}
.seg a:hover{color:var(--tx)}
@media (min-width:720px){.seg a{padding:0 18px}}
/* the Evidence pill sits beside the tablist (it navigates, so it is not a tab): same height, neutral at rest so the bar has one gold state; solid when current */
.seg-link{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:46px;padding:0 14px;border:1px solid var(--line-2);border-radius:var(--r-pill);background:var(--bg-1);color:var(--mut);font:500 13px/1 var(--mono);letter-spacing:.06em;text-transform:uppercase;white-space:nowrap;flex:none;transition:background var(--t-fast),border-color var(--t-fast),color var(--t-fast)}
.seg-link::after{content:"→";font-size:12px;color:var(--dim)}
.seg-link b{font-weight:500;font-size:12px}
.seg-link:hover{color:var(--tx);border-color:var(--line-gold)}
.seg-link[aria-current]{background:var(--gold);border-color:var(--gold);color:var(--ink)}
.seg-link[aria-current]::after{color:var(--ink)}
@media (max-width:719px){.segbar .seg{flex:1 1 auto;min-width:0}.segbar .nav-in{gap:8px}}
@media (max-width:479px){.seg-link b{display:none}.seg button,.seg a{padding:0 8px;letter-spacing:.04em;gap:5px}.seg button b,.seg a b{font-size:11px}.seg-link{padding:0 10px;letter-spacing:.04em}}
@media (max-width:389px){.seg button,.seg a,.seg-link{font-size:12px;letter-spacing:.02em}.seg button,.seg a{padding:0 5px}.seg-link{padding:0 8px}}
@media (max-width:359px){.seg button,.seg a{padding:0 4px}}
@media (max-width:299px){.seg button,.seg a{font-size:11px;letter-spacing:0;padding:0 2px}.row-btn .chip.edge{min-width:0;max-width:72px;height:auto;min-height:28px;white-space:normal;text-align:right;line-height:1.2;padding-block:4px}.row-btn .side>span{max-width:72px;white-space:normal}.ltbl td.c-verdict{white-space:normal}} /* 280 px: the three labels fit the pill; the at-size line may break after the dollars so the text column keeps 100 px */
.chip.label.warn{color:var(--mut)}
/* narrow phones: a state chip may be wider than the row's text column; let its text wrap instead of overflowing */
@media (max-width:479px){.row-btn .chips .chip.label{white-space:normal;height:auto;line-height:1.25;padding-block:3px;text-align:left}}
@media (max-width:319px){.row-btn .chips .chip.label{letter-spacing:.02em;padding-inline:6px}}
.vc .head{flex-wrap:wrap}
#legend{padding-inline-end:13px} /* the last ⓘ's 44px hit area stays inside the box */
.method .foot a{padding-inline:3px}
.chip.xs.warn::before{content:"△";color:var(--amber);margin-right:2px}
.row.near .row-btn .rank,.tbl tr.near .c-rank{color:var(--dim)}
.tbl .c-size{width:128px} /* holds '−$16.66 at 458' as plain tabular text */
.checkline{display:flex;flex-wrap:wrap;gap:6px}
.checkline .ck{display:inline-flex;align-items:center;gap:5px;min-height:24px;padding:0 8px;border-radius:var(--r-1);border:1px solid var(--chip-line);background:var(--chip-bg);font:500 11px/1 var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--mut);cursor:default}
.checkline .ck span:first-child{font-family:var(--mono);letter-spacing:0}
.checkline .ck.ok{border-color:var(--line-gold);background:var(--gold-6);color:var(--gold-2)}
.checkline .ck.ok span:first-child{color:var(--gold)}
.checkline .ck.no span:first-child{color:var(--amber)}
.dsec{display:flex;flex-direction:column;gap:10px;padding-top:12px;border-top:1px solid var(--line-1)}
.dh{font:500 var(--fs-label)/1.2 var(--mono);letter-spacing:var(--ls-label);text-transform:uppercase;color:var(--dim)}
.relrow{display:flex;flex-wrap:wrap;align-items:center;gap:8px 10px}
.relrow .reason{font:400 13px/1.45 var(--sans);color:var(--tx);min-width:0;overflow-wrap:break-word;overflow-wrap:anywhere}
.dsec .meta{overflow-wrap:break-word;overflow-wrap:anywhere}
.dsec .meta b{color:var(--tx);font-weight:500}
.dsec .sim{display:flex;align-items:center;gap:2px 10px;flex-wrap:wrap}
.segm .info{vertical-align:middle;margin-left:2px} /* the ⓘ rides inside its segment, glued to 'coverage 0.70' */
.segm.wi{padding-right:10px} /* room for the ⓘ's 44 px hit area inside the segment's box */
.dsec .preds .pred{display:block} /* one parsed predicate per line, the venue letter leading */
/* asleep (read ≥ 90 min old): the quotes are older than the scanner's own age gate, so the live-green signal goes neutral; the rows and their checks stay as read */
html[data-fresh="asleep"] .chip.edge.pos{background:var(--chip-bg);border-color:var(--chip-line);color:var(--tx)}
.payoff{width:100%;max-width:520px;border-collapse:collapse;font:400 13px/1.4 var(--mono);color:var(--mut)}
.payoff th,.payoff td{padding:6px 10px;border-bottom:1px solid var(--line-1);text-align:left;vertical-align:top}
.payoff .ph th{font:500 var(--fs-label)/1.2 var(--mono);letter-spacing:var(--ls-label);text-transform:uppercase;color:var(--dim);padding-block:4px}
.payoff .ps td{color:var(--tx);font-family:var(--sans)}
.payoff .ra{text-align:right;font-family:var(--mono);font-variant-numeric:tabular-nums;white-space:nowrap}
.payoff .pf th{color:var(--gold);text-transform:uppercase;font-size:11px;letter-spacing:var(--ls-label)}
.payoff .pf td{color:var(--gold-2)}
.payoff .pf th,.payoff .pf td{border-bottom:0}
.rule{display:flex;flex-direction:column;gap:8px;padding:12px;border:1px solid var(--line-1);border-radius:var(--r-2);background:var(--bg-3)}
.rule .rh{display:flex;align-items:center;gap:8px;font:500 13px/1 var(--sans);color:var(--tx);flex-wrap:wrap}
.rule .sha{font:400 11px/1 var(--mono);color:var(--mut);letter-spacing:.02em}
.rule .rentry a.link,.dsec .meta a.link{padding-block:14px}
.rule .rx,.rule .rtext{font:400 13px/1.5 var(--sans);color:var(--mut);overflow-wrap:break-word;overflow-wrap:anywhere}
.rule .rt{font:500 13px/1.4 var(--sans);color:var(--tx)}
.rule .rentry{display:flex;flex-direction:column;gap:6px;padding-top:8px;border-top:1px dashed var(--line-1)}
.rule .racts{display:flex;flex-wrap:wrap;gap:8px 16px;align-items:center}
.rule .racts .btn{min-height:44px}
.kv .v{white-space:normal}
@media (max-width:479px){.checkline .ck{padding:0 6px;letter-spacing:.04em}.payoff th,.payoff td{padding:6px 6px}}
/* the size calculator under the Floor and cost kvs: the rule sentence, the fields in the block's own kv grid (labels in the label face, inputs in the value face, 44 px tall, gold only on focus; a wrapped label keeps its input on the row's baseline), then the split as one meta line whose phrases wrap at their plain spaces, never inside a figure; the after-fees figure sits in --tx like the block's other emphases (.dsec .meta b) */
.sizer{display:flex;flex-direction:column;gap:10px}
.szin label{display:flex;flex-direction:column;justify-content:flex-end;gap:2px;min-width:0}
.szi{width:100%;max-width:168px;min-height:44px;padding:0 12px;border:1px solid var(--line-2);border-radius:var(--r-2);background:var(--bg-3);color:var(--tx);font:500 15px/1 var(--mono);font-variant-numeric:tabular-nums;-webkit-appearance:none;appearance:none;transition:border-color var(--t-fast)}
.szi:hover{border-color:var(--line-gold-2)}
.szi:focus-visible{border-color:var(--gold);outline-offset:2px;border-radius:var(--r-2)}
@media (min-width:1100px){.kv.szin{grid-template-columns:repeat(3,minmax(0,200px))}} /* three fields stay a row of fields, not a row of the detail's width */
.szl .segm{white-space:normal}
/* evidence page */
.ledger{display:flex;flex-direction:column;gap:20px;padding-block:20px;min-height:280px}
.ledger>.blank{border:1px solid var(--line-1);border-radius:var(--r-3);background:var(--bg-1)}
.counters{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
@media (min-width:600px){.counters{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (min-width:1024px){.counters{grid-template-columns:repeat(6,minmax(0,1fr))}}
.ctile{background:var(--bg-1);border:1px solid var(--line-1);border-radius:var(--r-3);box-shadow:var(--card-top);padding:14px 14px 12px;display:flex;flex-direction:column;gap:6px;min-width:0}
.ctile .k{font:500 var(--fs-label)/1.2 var(--mono);letter-spacing:var(--ls-label);text-transform:uppercase;color:var(--mut)}
.ctile .n{font:400 clamp(28px,7vw,40px)/1 var(--serif);color:var(--tx);font-variant-numeric:tabular-nums}
.ctile .s{font:400 12px/1.3 var(--mono);color:var(--dim)}
.statement{font:400 clamp(18px,3.2vw,24px)/1.35 var(--serif);color:var(--tx);max-width:60ch;text-wrap:pretty}
.lsec{display:flex;flex-direction:column;gap:12px}
.lsec h2 b{font-weight:400;color:var(--gold);font-size:.8em;margin-left:6px}
/* the frame sits on a wrapper so the table's own scrollWidth equals its clientWidth in every engine */
.ltbl-wrap{border:1px solid var(--line-1);border-radius:var(--r-3);background:var(--bg-1);overflow:hidden}
.ltbl{width:100%;border-collapse:collapse;table-layout:fixed}
.ltbl th,.ltbl td{padding:10px;border-bottom:1px solid var(--line-1);text-align:left;vertical-align:top;font:400 13px/1.4 var(--mono);color:var(--mut)}
.ltbl th{font:500 var(--fs-label)/1.2 var(--mono);letter-spacing:var(--ls-label);text-transform:uppercase;color:var(--dim);background:var(--bg-2)}
.ltbl tbody tr:last-child td{border-bottom:0}
.ltbl .ra{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.ltbl .c-ep .t{display:block;font:500 14px/1.35 var(--sans);color:var(--tx)}
.ltbl .c-ep .s{font:400 12px/1.4 var(--mono);color:var(--mut);margin-top:2px;overflow-wrap:break-word;overflow-wrap:anywhere}
.ltbl .c-ep .s .ref{white-space:normal;overflow-wrap:break-word;overflow-wrap:anywhere} /* a long ref may break at 320 px */
.ltbl tr.ok .c-verdict{color:var(--gold-2)}
.ltbl tr.no .c-verdict{color:var(--tx)}
.ltbl .tri{color:var(--amber);font-style:normal} /* amber on the glyph only */
/* fixed widths hold their content on one line ('BEST MARGIN', 'floor failed △', 'K VOID · P VOID', 'Sep 21, 2026', two 44 px links plus their space); the episode column takes the rest */
.ltbl .c-best{width:108px}.ltbl .c-pay{width:80px}.ltbl .c-real{width:88px}.ltbl .c-verdict{width:140px;white-space:nowrap}.ltbl .c-out{width:136px}.ltbl .c-when{width:108px}.ltbl .c-links{width:124px}
.ltbl th{letter-spacing:.1em}
.ltbl td.c-links{display:flex;flex-wrap:wrap;gap:0 4px}
/* ≥ 900 the links stay a table cell but may wrap: a third or fourth distinct link starts a new line inside the cell instead of being clipped by the table */
@media (min-width:900px){.ltbl td.c-links{display:table-cell;white-space:normal}.ltbl td.c-links a{margin-right:2px}}
.ltbl .c-links a,.eplist .a a{display:inline-flex;align-items:center;justify-content:center;min-height:44px;min-width:44px;padding-inline:2px}
.ltbl .c-ep .s a{padding:14px 4px}
@media (max-width:899px){.ltbl,.ltbl tbody,.ltbl tr,.ltbl td{display:block;width:auto}.ltbl thead{display:none}.ltbl tr{padding:12px 14px;border-bottom:1px solid var(--line-1);display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:6px 12px}.ltbl tr:last-child{border-bottom:0}.ltbl td{padding:0;border:0;min-width:0}.ltbl td[class^="c-"]{width:auto}.ltbl td.c-ep{grid-column:1/-1}.ltbl td.ra{text-align:left}.ltbl td[class^="c-"]:not(.c-ep)::before{content:attr(data-l);display:block;font:500 var(--fs-label)/1.2 var(--mono);letter-spacing:var(--ls-label);text-transform:uppercase;color:var(--dim);margin-bottom:2px}.ltbl td.c-links{grid-column:1/-1;width:auto;white-space:normal;display:flex;align-items:center;gap:0 12px;min-height:28px}.ltbl td.c-links::before{flex:0 0 auto;margin:0}.ltbl .c-links a{margin-block:-8px}}
.eplist{display:flex;flex-direction:column;border:1px solid var(--line-1);border-radius:var(--r-3);background:var(--bg-1)}
.eplist li{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px 12px;padding:12px 16px;border-bottom:1px solid var(--line-1)}
.eplist li:last-child{border-bottom:0}
.eplist .t{font:500 14px/1.35 var(--sans);color:var(--tx)}
.eplist .s{font:400 12px/1.5 var(--mono);color:var(--mut);grid-column:1;overflow-wrap:break-word;overflow-wrap:anywhere}
.eplist .a{grid-row:1/3;grid-column:2;display:flex;gap:10px;align-items:center;font:400 12px/1 var(--mono);white-space:nowrap}
@media (max-width:479px){.eplist li{grid-template-columns:1fr}.eplist .a{grid-row:auto;grid-column:1}}
.ledger .showall{border:0;padding-top:4px}
