/*
Theme Name: APNUNEWS
Theme URI: https://associatedpublic.com/
Author: ASSOCIATED PUBLIC
Author URI: https://associatedpublic.com/
Description: ASSOCIATED PUBLIC · APNUNEWS automated newswire on the DX.Wire engine. The same files run as a static site; as a theme it adds Appearance → Customize → APNUNEWS and the server-side wire.
Version: 2.3.0
Requires at least: 6.0
Requires PHP: 7.4
Text Domain: apnunews
*/
/* APNUNEWS v2.3 · ASSOCIATED PUBLIC · DX.Wire substrate
   themes: newsprint · dark · terminal (palettes: classic · glacier · lagoon · aurora) · looks: tabloid · editorial · modern */
:root,[data-theme=newsprint]{--bg:#F6F6F3;--fg:#111111;--text-accent:#C8102E;--on-ac:#FFFFFF;--cd:#FFFDF0;--hl:#FEF08A;--nw:#FEF9C3;--hr:#CFCFC8;--mu:#555555;--ib:#111111;--if:#F6F6F3;--gl:none;
--d:Impact,Haettenschweiler,'Arial Narrow Bold','Arial Black',sans-serif;--b:Arial,'Helvetica Neue',Helvetica,sans-serif;--m:'Courier New',Courier,ui-monospace,monospace;--hd:var(--d);--ui:var(--b);
--dp:color-mix(in srgb,var(--text-accent) 42%,var(--bg));--u:min(10px,calc((100vw - 80px)/60));--rp:5px 2px;--rf:14px;--rl:1.28;--cp:10px;--r:0px;color-scheme:light}
[data-theme=dark]{--bg:#121212;--fg:#E2E8F0;--text-accent:#38BDF8;--on-ac:#121212;--cd:#1B1D21;--hl:#1E3A4A;--nw:#172A36;--hr:#2E3440;--mu:#94A3B8;--ib:#E2E8F0;--if:#121212;color-scheme:dark}
[data-theme=terminal]{--bg:#050505;--fg:#00FF66;--text-accent:#FFCC00;--on-ac:#050505;--cd:#070F07;--hl:#1A3D1A;--nw:#102A10;--hr:#1C4424;--mu:#35C46E;--ib:#1A3D1A;--if:var(--text-accent);
--gl:0 0 4px color-mix(in srgb,var(--fg) 35%,transparent);--t:'IBM VGA 437','Perfect DOS VGA 437','Px437 IBM VGA 8x16','PxPlus IBM VGA 8x16','Fixedsys Excelsior 3.01',Fixedsys,Terminal,'Lucida Console',Consolas,Menlo,'Courier New',monospace;--d:var(--t);--b:var(--t);--m:var(--t);color-scheme:dark}
[data-theme=terminal][data-tpal=glacier]{--bg:#1B2128;--fg:#D6E6EE;--text-accent:#5CE1E6;--on-ac:#0F1519;--cd:#212A33;--hl:#25414B;--nw:#1F3441;--hr:#33414D;--mu:#8FA3B1;--ib:#26313C;--if:#5CE1E6;--gl:none}
[data-theme=terminal][data-tpal=lagoon]{--bg:#1D2224;--fg:#DCE9E6;--text-accent:#3DD9C9;--on-ac:#0F1716;--cd:#242B2D;--hl:#1F4441;--nw:#1C3835;--hr:#35413F;--mu:#93A7A3;--ib:#28312F;--if:#3DD9C9;--gl:none}
[data-theme=terminal][data-tpal=aurora]{--bg:#1F2330;--fg:#E3E8F4;--text-accent:#7FE3F0;--on-ac:#141824;--cd:#262B3A;--hl:#2A3A55;--nw:#243049;--hr:#39415A;--mu:#9CA5C0;--ib:#2B3144;--if:#7FE3F0;--gl:none}
/* Looks change type and finish for newsprint and dark; terminal keeps its CP437 stack and square cells. Local fonts only. */
[data-look=editorial]:not([data-theme=terminal]){--d:Didot,'Bodoni 72','Bodoni MT',Georgia,serif;--hd:ui-serif,'New York','Iowan Old Style',Charter,Georgia,serif;--b:var(--hd);--ui:system-ui,-apple-system,'Segoe UI',Helvetica,Arial,sans-serif;--m:var(--ui)}
[data-look=modern]:not([data-theme=terminal]){--d:system-ui,-apple-system,'Segoe UI',Helvetica,Arial,sans-serif;--hd:var(--d);--b:var(--d);--ui:var(--d);--m:var(--d)}
[data-look=editorial][data-theme=newsprint]{--fg:#1D1D1F;--cd:#FFFDF8;--hr:#E2DED4;--mu:#5C5A56}
[data-look=modern][data-theme=newsprint]{--fg:#1D1D1F;--cd:#FFFFFF;--hr:#E4E3DE;--mu:#5E5E63}
[data-corners=soft]{--r:8px}[data-corners=round]{--r:14px}[data-theme=terminal][data-corners]{--r:0px}
[data-spacing=comfortable]{--rp:8px 4px;--rf:15px;--rl:1.34;--cp:12px}
[data-spacing=spacious]{--rp:12px 6px;--rf:16px;--rl:1.4;--cp:15px}
[data-spacing=airy]{--rp:17px 8px;--rf:17px;--rl:1.46;--cp:19px}
*{box-sizing:border-box}[hidden]{display:none!important}
html{background:var(--bg)}
body{margin:0 auto;max-width:1200px;padding:12px 16px 76px;color:var(--fg);background:var(--bg);font:15px/1.3 var(--b);text-shadow:var(--gl);overflow-x:hidden}
::selection{background:var(--hl);color:var(--fg)}
:focus-visible{outline:3px solid var(--text-accent);outline-offset:2px}
a{color:inherit}
.sr{position:absolute;width:1px;height:1px;margin:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.skip{position:absolute;left:16px;top:-60px;z-index:70;padding:6px 10px;background:var(--fg);color:var(--bg);font:700 13px var(--m)}
.skip:focus{top:8px}
button,.btn{display:inline-block;font:700 13px var(--m);color:var(--fg);background:var(--bg);border:2px solid;padding:7px 10px;cursor:pointer;text-decoration:none;text-shadow:inherit}
.btn{text-transform:uppercase}
button,.btn,#hero,#ad,.col h2,.grp h3,#th,.skip{border-radius:var(--r)}
button:hover,.btn:hover{background:var(--fg);color:var(--bg)}
.pri{background:var(--text-accent);border-color:var(--text-accent);color:var(--on-ac)}
h1,h2{margin:0;font:italic 900 24px/1 var(--d);text-transform:uppercase}
.t{margin:0 0 8px;padding-bottom:4px;border-bottom:1px solid;font:12px var(--m);text-transform:uppercase;overflow-wrap:anywhere}
/* Live cursor: a solid block the height of the capitals, blinking except while typing. */
.cur{display:inline-block;width:.5em;height:.74em;height:1cap;margin-left:.08em;vertical-align:baseline;background:var(--text-accent);animation:bl 1.06s steps(1) infinite}
.typing .cur{animation:none}
.dot{font-style:normal;color:var(--mu)}
[data-wire=live] .dot{color:var(--text-accent);animation:bl 1s steps(1) infinite}
@keyframes bl{50%{opacity:0}}
@keyframes pulse{0%{box-shadow:0 0 0 0 color-mix(in srgb,currentColor 55%,transparent)}100%{box-shadow:0 0 0 7px transparent}}
#tick,#bar{display:flex;gap:10px;padding:6px 0;border-bottom:1px solid;font:700 12px var(--m);text-transform:uppercase}
#tick{align-items:baseline}
.t b,.lw,.tag,#hk,.ar{color:var(--text-accent)}
.lw{flex:none}
#lv{flex:1;min-width:0;margin:0;font:700 clamp(14px,1.7vw,18px)/1.25 var(--m);text-transform:none;overflow-wrap:anywhere}
#lg:not(:empty):after{content:" ▸ "}
#lk{text-decoration:none}#lk[href]:hover #lt{text-decoration:underline}
[data-live=banner] #tick{flex-direction:column;align-items:center;gap:6px;padding:10px 0 14px;border-bottom:4px solid;text-align:center}
[data-live=banner] #lv{flex:none;width:100%;font:italic 900 clamp(24px,4.4vw,54px)/1.04 var(--hd);text-transform:uppercase}
[data-live=banner] #lg{display:block;margin:0 0 6px;font:700 12px var(--m);letter-spacing:.1em}
[data-theme=terminal][data-live=banner] #lv{font-style:normal}
#hero{display:grid;grid-template-columns:1.2fr 1fr;margin:14px 0 8px;border:6px double;background:var(--cd);overflow:hidden}
.ht{display:flex;flex-direction:column;justify-content:center;gap:8px;min-width:0;padding:14px 18px}
.hp{margin:0;font:700 clamp(19px,2.5vw,29px)/1.15 var(--b);overflow-wrap:anywhere}
#hc{display:block;width:100%;height:100%;aspect-ratio:16/9;object-fit:cover;border-left:6px double;background:var(--bg);image-rendering:pixelated}
.acts{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0 0}
.meta{font:11px var(--m);text-transform:uppercase;color:var(--mu)}
#hm{margin:0}
#mast{display:flex;align-items:center;gap:14px;padding:6px 0 2px}
#mast:before,#mast:after{content:"";flex:1;border-top:7px double}
.mid{min-width:0;text-align:center}
#brand{padding:0 4px;border-bottom:5px solid var(--text-accent);font-size:clamp(34px,9.4vw,112px);line-height:.95;overflow-wrap:normal}
#tag{margin:8px 0 2px;font:italic 400 13px var(--d);letter-spacing:.3em;color:#888}
#tag i{font-style:normal;color:var(--text-accent)}
.art{display:none}
.art svg{display:block;width:calc(var(--w)*var(--u));height:calc(5.35*var(--u));overflow:visible;shape-rendering:crispEdges}
.art .f{fill:var(--text-accent);stroke:var(--bg);stroke-width:.1}
.art .p{fill:var(--dp)}
#mr{margin:8px 0 12px;padding:10px 10px 4px;border-top:3px double;border-bottom:1px solid var(--hr);font:12px var(--m)}#mr .mrh{display:flex;align-items:baseline;flex-wrap:wrap;gap:4px 12px;margin:0 0 4px}#mr .mrm{margin-left:auto;padding:4px 0;color:var(--text-accent);font:700 13px/1.3 var(--m);letter-spacing:.06em;text-decoration:none}#mr .mrm:hover,#mr .mrm:focus-visible{text-decoration:underline}#mr h2{margin:0;display:flex;align-items:center;gap:8px;color:var(--text-accent)}.mrd{width:8px;height:8px;border-radius:50%;background:currentColor;animation:pulse 1.6s ease-out infinite}.mrk{color:var(--mu);font-size:11px;letter-spacing:.08em}#mr ol{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(var(--mr-cols,3),minmax(0,1fr));gap:0 18px}#mr li{position:relative;display:grid;grid-template-columns:auto 1fr;align-content:start;column-gap:9px;padding:8px 0 12px;font:700 var(--rf)/var(--rl) var(--m);overflow-wrap:anywhere}[data-font=sans] #mr li{font:600 var(--rf)/var(--rl) var(--b)}.mrn{grid-row:span 2;font:400 30px/.9 var(--d);color:var(--text-accent);min-width:.62em;text-shadow:var(--gl)}#mr a{color:var(--fg);font:inherit;text-decoration:none}#mr a:hover,#mr a:focus-visible{color:var(--text-accent);text-decoration:underline}#mr .src{color:var(--mu);font:11px var(--m);white-space:nowrap;margin-top:3px}.mrb{position:absolute;left:0;bottom:5px;height:3px;width:var(--h);background:var(--text-accent);opacity:.8;transform-origin:left;animation:mrg .9s cubic-bezier(.2,.8,.2,1) both}@keyframes mrg{from{transform:scaleX(0)}}@media (max-width:1100px){#mr ol{--mr-cols:2}}@media (max-width:820px){#mr ol{--mr-cols:1}#mr li+li{border-top:1px solid var(--hr)}}
#ad{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 12px;margin:8px 0 0;padding:6px 10px;border:3px double;font:12px var(--m)}
.adl{margin:0;font-weight:700;letter-spacing:.12em;color:var(--mu)}
#adk{font-weight:700;overflow-wrap:anywhere}
#bar{flex-wrap:wrap;align-items:center;justify-content:center;padding:10px 0;border-width:2px;font-weight:400}
#desk{font:italic 900 clamp(26px,4vw,44px)/1 var(--d)}
#ws{overflow-wrap:anywhere}
#bar a{padding:2px 4px;font-weight:700}
.rp{padding:3px 10px;border:1px solid var(--hr);background:none;color:var(--mu);font:600 12px var(--ui);text-transform:none}
.rp:hover{background:none;color:var(--fg);border-color:var(--fg)}
/* Status strip at the top: one discreet line. */
[data-statusat=top] #bar{justify-content:space-between;gap:6px 16px;margin:0 0 6px;padding:8px 2px;border-width:0 0 1px;border-color:var(--hr);font:500 13px var(--ui);color:var(--mu)}
[data-statusat=top] #desk{margin-right:auto;font:800 13px var(--ui);letter-spacing:.18em;color:var(--fg);font-style:normal}
[data-statusat=top][data-look=tabloid] #desk{font:italic 900 20px var(--d);letter-spacing:0}
[data-statusat=top] #ws{display:inline-flex;align-items:center;gap:7px}
.nos{margin:12px 0;font:700 14px var(--m)}
#grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border-top:7px double;outline:0}
.col{min-width:0;padding:var(--cp) var(--cp) 0;outline:0}
.col:focus-visible{outline:3px solid var(--text-accent);outline-offset:-3px}
.col+.col{border-left:1px solid}
.col h2{padding:4px;background:var(--ib);color:var(--if);border:1px solid var(--fg);font-style:normal;text-align:center}
.on h2{box-shadow:0 4px var(--text-accent)}.on h2:before{content:"▶ ";content:"▶ "/""}
[data-labels=rule] .col h2{padding:6px 0;background:none;color:var(--fg);border:0;border-block:3px double}
[data-labels=quiet] .col h2{padding:2px 0 7px;background:none;color:var(--text-accent);border:0;border-bottom:1px solid var(--hr);font:700 13px var(--m);letter-spacing:.24em}
.ln{margin:0;padding:0 0 4px;border:0}
.ln:not([hidden])+#h-c1{margin-top:22px}
/* A column that opens with a top band (THE MAINSTREAM): its own heading becomes the band over its lead, so the
   column heading is kept for screen readers only and the first band starts flush with the other columns. */
.col.hastop>h2{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.hastop>.sl{margin-top:0}.hastop>.sl>li.grp:nth-child(1 of :not([hidden]))>h3{margin-top:0}.ln h2+ul{margin-top:10px}
.ln ul{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:3px 10px;margin:0;padding:0;list-style:none;font:700 13px/1.3 var(--m)}
.ln a{overflow-wrap:anywhere}
.ln li.wire-top a{display:inline-block;box-sizing:border-box;max-width:100%;padding:2px 10px;border:2px solid var(--text-accent);border-radius:999px;background:var(--text-accent);color:var(--on-ac);text-align:left;text-decoration:none;white-space:nowrap;overflow-wrap:normal;transition:transform .18s ease,box-shadow .18s ease,filter .18s ease}
.ln li.wire-top a:hover,.ln li.wire-top a:focus-visible{color:var(--on-ac);text-decoration:none;transform:translateY(-2px);box-shadow:0 3px 0 var(--fg);filter:brightness(1.12)}
@media(prefers-reduced-motion:reduce){.ln li.wire-top a{transition:none}.ln li.wire-top a:hover,.ln li.wire-top a:focus-visible{transform:none}}
.sl{margin:8px 0 0;padding:0;list-style:none}
.sl li{padding:var(--rp);font:700 var(--rf)/var(--rl) var(--m);overflow-wrap:anywhere}
[data-story-borders=on] .sl li{border-bottom:1px solid var(--hr)}
.sl a{text-decoration-thickness:1px;text-underline-offset:2px}
.sl a:visited{color:var(--mu)}
.sl li.onl{display:none}
.sl li:not(.grp):not(.mr):not(.dl){transition:background-color .12s,color .12s}
/* Hover and keyboard focus select the whole row: the theme's accent fills it and the text flips to the accent's
   matched ink (--on-ac): Newsprint red/white, Dark sky/near-black, Arcade amber/deep purple, all above 4.5:1. */
.sl li:not(.grp):not(.mr):not(.dl):is(:hover,:has(>a:focus-visible)){background:var(--text-accent)}
.sl li:not(.grp):not(.mr):not(.dl):is(:hover,:has(>a:focus-visible)) :is(a,a:visited,.meta,.meta *,.tag){color:var(--on-ac);text-decoration:none;background:none}
.sl li:not(.grp):not(.mr):not(.dl) a:focus-visible{outline:none}
.brk>a,.brk>a:visited{color:var(--text-accent)}
.sl .meta{margin-left:6px}
[data-meta=off] .sl .meta,[data-meta=source] .sl .meta :is(.sep,time),[data-meta=time] .sl .meta :is(.src,.sep){display:none}
[data-font=sans] :is(.sl li,.more-preview p){font:600 var(--rf)/var(--rl) var(--b)}
[data-font=sans] .ln ul{gap:5px 12px;font:600 13px/1.35 var(--ui)}
[data-font=sans] .ln a{text-decoration:none}[data-font=sans] .ln a:hover{text-decoration:underline}
[data-font=sans] .sl a{text-decoration:none}
[data-font=sans] .sl .tag{margin-right:4px;font:700 .72em var(--m);letter-spacing:.06em}
[data-font=sans] .sl .brk{background:var(--cd);border-block:3px double var(--fg)}
.sl li.grp{padding:0;border:0;background:none}
/* Subject headers are full column bands too: the same bar as the column top, doubling as a section rule. */
.grp h3{margin:22px 0 8px;padding:4px;background:var(--ib);color:var(--if);border:1px solid var(--fg);font:900 24px/1 var(--d);text-transform:uppercase;text-align:center}
[data-labels=rule] .grp h3{padding:5px 0;background:none;color:var(--fg);border:0;border-block:3px double}
[data-labels=quiet] .grp h3{padding:2px 0 6px;background:none;color:var(--text-accent);border:0;border-bottom:1px solid var(--hr);font:700 12px var(--m);letter-spacing:.24em}
.grp ol{margin:0;padding:0;list-style:none}
/* More today: one quiet line under a subject (launcher style, theme accent), then earlier stories and a link to its page. */
.sl li.mr{padding:8px 0 4px;border:0;background:none}
.mr button,.mr a,.mr a:visited{padding:4px 0;border:0;background:none;color:var(--text-accent);font:700 13px/1.3 var(--m);letter-spacing:.06em;text-transform:uppercase;text-align:left;cursor:pointer;text-decoration:none}
[data-font=sans] :is(.mr button,.mr a){font:700 13px/1.3 var(--ui);letter-spacing:.08em}
.mr button:hover,.mr a:hover{text-decoration:underline}
.mr button:focus-visible,.mr a:focus-visible{outline:2px solid var(--text-accent);outline-offset:2px}
/* Dock: once a reader opens a subject and scrolls past a shorter column's end, that column's MORE lines ride along at
   the top of its empty space (side-by-side columns only). */
.dock{position:sticky;top:12px;margin:18px 0 0;padding:8px 0;border-top:1px solid var(--hr);background:var(--bg)}
.dock[hidden]{display:none}
.dock button{display:block;padding:5px 0;border:0;background:none;color:var(--text-accent);font:700 13px/1.3 var(--m);letter-spacing:.06em;text-transform:uppercase;text-align:left;cursor:pointer}
[data-font=sans] .dock button{font:700 13px/1.3 var(--ui);letter-spacing:.08em}
.dock button:hover{text-decoration:underline}.dock button:focus-visible{outline:2px solid var(--text-accent);outline-offset:2px}
.nw{background:var(--nw)}
.em{color:var(--mu)}
footer{margin-top:18px;padding-top:10px;border-top:7px double;text-align:center}
.fbr{margin:0;font:italic 900 20px var(--d)}.fbr span{color:var(--text-accent)}
.legal{margin:6px 0 0;font:12px var(--m);color:var(--mu)}
.legal a{white-space:nowrap}
/* Footer directory: every section page in bold theme-colored capitals, so it reads as navigation, not fine print. */
.secs{margin:14px auto 12px;max-width:760px}
.secs ul{display:flex;flex-wrap:wrap;justify-content:center;gap:6px 16px;margin:0;padding:0;list-style:none}
.secs a{color:var(--text-accent);font:700 13px/1.4 var(--b);letter-spacing:.06em;text-decoration:none;white-space:nowrap}
.secs a:hover{text-decoration:underline}.secs a:focus-visible{outline:2px solid var(--text-accent);outline-offset:2px}
#th{position:fixed;right:12px;bottom:12px;z-index:50;width:48px;height:48px;padding:0;border:3px double;font:22px/1 var(--m)}
#th:before{content:"\2600\FE0F"}[data-theme=dark] #th:before{content:"\1F319"}[data-theme=terminal] #th:before{content:"\1F4DF"}

/* ---- Editorial (NYC) and Modern (SF) finishes ---- */
:is([data-look=editorial],[data-look=modern]) :is(#bar,.meta){text-transform:none}
:is([data-look=editorial],[data-look=modern]) .lw{display:none}
:is([data-look=editorial],[data-look=modern]) .dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:currentColor;font-size:0;vertical-align:.08em}
:is([data-look=editorial],[data-look=modern])[data-wire=live] .dot{animation:pulse 2s ease-out infinite}
:is([data-look=editorial],[data-look=modern])[data-live=banner] #tick{padding:20px 0 24px;gap:0;border-bottom:1px solid var(--hr)}
:is([data-look=editorial],[data-look=modern]) #lg{display:flex;align-items:center;gap:7px;width:max-content;margin:0 auto 12px;padding:5px 11px;border-radius:calc(var(--r)*.7);
background:color-mix(in srgb,var(--text-accent) 10%,transparent);color:var(--text-accent);font:700 12px/1 var(--ui);letter-spacing:.14em;font-style:normal}
:is([data-look=editorial],[data-look=modern]) #lg:after{content:none}
:is([data-look=editorial],[data-look=modern]) #lg:before{content:"";width:9px;height:9px;border-radius:50%;background:radial-gradient(circle at 50% 42%,#FFE2D6 0 12%,#FF3A24 36%,#B80000 70%,#4A0000);box-shadow:0 0 8px 2px #FF2D1FB3;animation:hal 2.8s ease-in-out infinite}
[data-look=editorial][data-live=banner] #lv{font:700 clamp(28px,3.6vw,46px)/1.14 var(--hd);text-transform:none;letter-spacing:-.005em}
[data-look=modern][data-live=banner] #lv{font:800 clamp(28px,3.8vw,48px)/1.1 var(--hd);text-transform:none;letter-spacing:-.022em}
:is([data-look=editorial],[data-look=modern]) #lv{text-wrap:balance}
:is([data-look=editorial],[data-look=modern]) #mast{justify-content:center;padding:24px 0 20px}
:is([data-look=editorial],[data-look=modern]) #mast:before,:is([data-look=editorial],[data-look=modern]) #mast:after{display:none}
[data-look=editorial] #mast{border-bottom:3px double}
[data-look=editorial]:not([data-theme=terminal]) #brand{font:700 clamp(40px,8.2vw,100px)/1 var(--d);letter-spacing:.012em;border:0;font-style:normal}
[data-look=editorial]:not([data-theme=terminal]) #tag{margin-top:10px;font:italic 400 clamp(13px,1.35vw,17px) var(--hd);letter-spacing:.2em;color:var(--mu)}
[data-look=modern]:not([data-theme=terminal]) #brand{font:900 clamp(38px,8vw,96px)/.95 var(--d);letter-spacing:-.04em;border:0;font-style:normal}
[data-look=modern]:not([data-theme=terminal]) #tag{margin-top:12px;font:600 12px var(--ui);letter-spacing:.34em;color:var(--mu)}
:is([data-look=editorial],[data-look=modern]) #hero{margin:22px 0 18px}
[data-look=editorial] #hero{border:1px solid var(--hr)}
[data-look=editorial] #hc{border:0;border-left:1px solid var(--hr)}
[data-look=modern] #hero{border:1px solid transparent;box-shadow:0 1px 2px #0000000d,0 14px 34px -12px #00000030}
[data-look=modern][data-theme=dark] #hero{border-color:var(--hr)}
[data-look=modern] #hc{border:0}
:is([data-look=editorial],[data-look=modern]) .ht{padding:26px 30px;gap:12px}
[data-look=editorial] .hp{font:700 clamp(22px,2.6vw,32px)/1.18 var(--hd)}
[data-look=modern] .hp{font:750 clamp(22px,2.6vw,32px)/1.16 var(--hd);letter-spacing:-.014em}
:is([data-look=editorial],[data-look=modern]) #hk{font:700 12px var(--ui);letter-spacing:.14em;font-style:normal}
:is([data-look=editorial],[data-look=modern]) #hm{font:500 14px var(--ui);color:var(--mu)}
:is([data-look=editorial],[data-look=modern]) .btn{padding:11px 18px;border-width:1px;font:600 15px var(--ui);text-transform:none}
:is([data-look=editorial],[data-look=modern]) .btn .bk{display:none}
:is([data-look=editorial],[data-look=modern]) .btn:after{content:" →"}
:is([data-look=editorial],[data-look=modern]) #grid{border-top:1px solid var(--hr)}
:is([data-look=editorial],[data-look=modern]) .col+.col{border-left-color:var(--hr)}
[data-look=editorial] :is(.col h2,.grp h3){padding:10px 0 8px;background:none;color:var(--fg);border:0;border-top:3px double var(--fg);border-bottom:1px solid var(--hr);font:700 14px/1.2 var(--hd);letter-spacing:.16em;font-style:normal;border-radius:0}
[data-look=modern] :is(.col h2,.grp h3){padding:10px 14px;background:color-mix(in srgb,var(--text-accent) 9%,var(--cd));color:var(--text-accent);border:0;font:800 13px/1.2 var(--ui);letter-spacing:.14em}
[data-look=modern] .on h2{box-shadow:inset 3px 0 var(--text-accent)}


:is([data-look=editorial],[data-look=modern]) .sl li{font-size:calc(var(--rf) + 1px)}
:is([data-look=editorial],[data-look=modern]) .sl .brk{background:none;border-top:0;border-bottom:1px solid var(--hr)}
[data-look=modern] .sl .brk{margin:4px 0;border:0;border-radius:var(--r);background:color-mix(in srgb,var(--text-accent) 7%,var(--cd))}
:is([data-look=editorial],[data-look=modern]) .sl .tag{display:block;margin:0 0 4px;font:700 11px var(--ui);letter-spacing:.12em}
:is([data-look=editorial],[data-look=modern]) footer{border-top:1px solid var(--hr)}
:is([data-look=editorial],[data-look=modern]) .fbr{font-style:normal}
[data-look=modern] .fbr{font-weight:900;letter-spacing:-.02em}
:is([data-look=editorial],[data-look=modern]) #th{border:1px solid var(--hr);box-shadow:0 4px 14px #0000001f}
[data-labels=hidden] :is(.col h2,.grp h3){position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
[data-align=left] :is(.col h2,.grp h3){text-align:left}
[data-nav=off] #bar>a,[data-sys=off] .t,[data-keys=off] .keys{display:none}


/* ---- Banner kicker: full (look default), subtle (one faint line with a live dot) or off ---- */
[data-kicker=off] :is(.lw,#lg){display:none!important}
[data-kicker=subtle] .lw{display:none}
[data-kicker=subtle][data-live=banner] #lg{display:flex;align-items:center;justify-content:center;gap:7px;width:auto;margin:0 0 8px;padding:0;background:none;border-radius:0;font:600 11px/1 var(--ui);letter-spacing:.24em;color:var(--mu);font-style:normal}
[data-kicker=subtle] #lg:after{content:none}
/* HAL-style eye: the breaking marker breathes red in every theme, like a monitor that is always watching. */
[data-kicker=subtle] #lg:before{content:"";width:9px;height:9px;border-radius:50%;background:radial-gradient(circle at 50% 42%,#FFE2D6 0 12%,#FF3A24 36%,#B80000 70%,#4A0000);box-shadow:0 0 8px 2px #FF2D1FB3;animation:hal 2.8s ease-in-out infinite}
@keyframes hal{0%,100%{opacity:.5;box-shadow:0 0 2px 0 #FF2D1F55}50%{opacity:1;box-shadow:0 0 12px 4px #FF2D1FCC}}
/* The cursor leans with the synthesized italic of the tabloid banner. */
[data-look=tabloid][data-live=banner]:not([data-theme=terminal]) #lv .cur{transform:skewX(-14deg)}
.sl .cur{animation:none;margin-left:3px}
/* ---- Terminal logo draw-in: column by column, then the tagline ---- */
[data-theme=terminal] .art svg.draw{animation:plot calc(var(--c)*20ms) steps(var(--c)) var(--dl) both}
[data-theme=terminal] .art.drawing~#tag{animation:rise .5s ease-out var(--dt) both}
@keyframes plot{from{clip-path:inset(-20% 100% -20% 0)}to{clip-path:inset(-20% -6% -20% 0)}}
/* ---- Column draw-ins (first visit of the day by default). Delays come from --d (ms). ---- */
.sl li.i-sweep{animation:wipe .5s cubic-bezier(.2,.7,.2,1) calc(var(--d)*1ms) backwards}
.sl li.i-cascade{animation:rise .6s ease-out calc(var(--d)*1ms) backwards}
[data-theme=dark] .sl li.i-cascade{animation-duration:.85s}
.sl li.i-tektronix{animation:tek .22s steps(14) calc(var(--d)*1ms) backwards}
.sl li.i-tektronix>a{animation:tekglow .9s ease-out calc(var(--d)*1ms) backwards}
.sl li.i-tektronix:after{content:"";display:inline-block;width:.5em;height:.74em;height:1cap;margin-left:4px;opacity:0;background:var(--text-accent);animation:tekcur .36s steps(1) calc(var(--d)*1ms)}
@keyframes wipe{from{clip-path:inset(0 100% 0 0);opacity:.3}to{clip-path:inset(0 -2% 0 0);opacity:1}}
@keyframes rise{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@keyframes tek{from{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0 -2% 0 0)}}
@keyframes tekglow{from{color:var(--text-accent);text-shadow:0 0 8px var(--text-accent)}}
@keyframes tekcur{0%,99%{opacity:1}}
/* ---- More stories ---- */
.more{display:flex;align-items:center;gap:18px;margin:28px 0 4px}
.more:before,.more:after{content:"";flex:1;border-top:1px solid var(--hr)}
[data-look=tabloid] .more:before,[data-look=tabloid] .more:after{border-top:3px double var(--fg)}
.more .btn{padding:13px 30px;border:0;font:700 16px var(--ui);text-transform:none;letter-spacing:.01em;box-shadow:0 6px 18px -8px color-mix(in srgb,var(--text-accent) 70%,transparent)}
.more .btn:after{content:"  ↓";content:"  ↓"/""}
[data-look=tabloid]:not([data-theme=terminal]) .more .btn{padding:10px 30px;font:italic 900 22px/1 var(--d);text-transform:uppercase;letter-spacing:.01em}
[data-look=modern]:not([data-theme=terminal]) .more .btn{border-radius:999px}
.more .btn:hover{background:var(--fg);color:var(--bg);box-shadow:none}

[data-theme=terminal] body{font-size:16px;-webkit-font-smoothing:none;text-rendering:optimizeSpeed;text-rendering:pixelated}
[data-theme=terminal][data-scan=on] body:after{content:"";position:fixed;inset:0;z-index:60;pointer-events:none;background:repeating-linear-gradient(#0000 0 2px,#0000002e 2px 3px)}
[data-theme=terminal] :is(h1,h2,#desk,.fbr){font-style:normal}
[data-theme=terminal] #brand,[data-theme=terminal] #desk{position:absolute;width:1px;height:1px;margin:0;padding:0;border:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
[data-theme=terminal] .art{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--u) calc(3*var(--u));margin:4px 0}
[data-theme=terminal] .dart{--u:3px;margin:0}
[data-theme=terminal] #tag{color:var(--fg)}
[data-theme=terminal] #mast:before,[data-theme=terminal] #mast:after{border-color:var(--text-accent)}
.boot body{animation:rb .15s linear}
@keyframes rb{from{clip-path:inset(0 0 100%)}to{clip-path:inset(0)}}
/* Flip triangles: beside the top story on wide screens, on the picture's edges on narrow ones; theme accent color. */
#hw{position:relative}
#hero.vid #hc{display:none}#hx{display:flex;flex-direction:column;align-items:center;gap:8px;min-width:0;padding:10px;border-left:6px double;background:var(--bg)}#hx>div{width:100%;max-width:550px;max-height:700px;overflow:hidden}#hx .twitter-tweet,#hx iframe{margin:0!important;max-width:100%}.xo{color:var(--text-accent);font:700 13px/1.3 var(--ui);letter-spacing:.08em}
@media (max-width:820px){#hx{order:-1;border:0;border-bottom:6px double}}
.hf{position:absolute;top:50%;z-index:2;width:44px;height:64px;margin-top:-32px;padding:0;border:0;background:none;color:var(--text-accent);cursor:pointer;opacity:.8;transition:opacity .15s,transform .15s}
.hf:hover,.hf:focus-visible{opacity:1}.hf:active{transform:scale(.88)}
.hf:focus-visible{outline:2px solid var(--text-accent);outline-offset:2px}
.hf::before{content:"";position:absolute;top:50%;left:50%;width:0;height:0;margin:-14px 0 0 -9px;border:14px solid transparent;border-width:14px 18px}
#hprev{left:-50px}#hprev::before{border-right-color:currentColor;border-left-width:0}
#hnext{right:-50px}#hnext::before{border-left-color:currentColor;border-right-width:0}
@media (max-width:1320px){#hw{padding:0 42px}#hprev{left:-2px}#hnext{right:-2px}}
@media (max-width:820px){#grid,#hero{grid-template-columns:minmax(0,1fr)}.col+.col{margin-top:20px;border-left:0;border-top:0}#hc{order:-1;height:auto;border:0;border-bottom:6px double}
:is([data-look=editorial],[data-look=modern]) .col+.col{border-top:1px solid var(--hr)}:is([data-look=editorial],[data-look=modern]) #hc{border:0}
:is([data-look=editorial],[data-look=modern]) .ht{padding:18px 20px}}
@media (prefers-reduced-motion:reduce){*,:before,:after{animation:none!important;transition:none!important}}

/* Arcade: the Phosphor Terminal's own world. Midnight violet, warm cream text, amber and seafoam accents,
   and self-hosted pixel type (SIL OFL): Jersey 10 above the fold, Pixelify Sans in the columns, Silkscreen for labels. */
@font-face{font-family:'Jersey 10';src:url(fonts/Jersey10.ttf) format('truetype');font-display:swap}
@font-face{font-family:'Pixelify Sans';src:url(fonts/PixelifySans.ttf) format('truetype');font-weight:400 700;font-display:swap}
@font-face{font-family:Silkscreen;src:url(fonts/Silkscreen.ttf) format('truetype');font-display:swap}
@font-face{font-family:VT323;src:url(fonts/VT323.ttf) format('truetype');font-display:swap}
@font-face{font-family:'IBM Plex Mono';src:url(fonts/IBMPlexMono-Medium.ttf) format('truetype');font-weight:500;font-display:swap}
[data-theme=terminal][data-tpal=arcade]{--bg:#16304F;--fg:#F4EEDC;--text-accent:#FFB84D;--on-ac:#0B1628;--cd:#1B3A5E;--hl:#24497A;--nw:#24497A;--hr:#34598A;--mu:#9FB3CF;--ib:#5EE6C8;--if:#0B1628;
--gl:0 0 10px color-mix(in srgb,var(--text-accent) 30%,transparent);--px:'Pixelify Sans',var(--t);--dp:#7CC4FF;
--d:'Jersey 10',var(--t);--b:var(--px);--m:var(--px);--hd:var(--d);--ui:Silkscreen,var(--t)}
html[data-theme=terminal][data-tpal=arcade] #lv{font:400 clamp(34px,5vw,66px)/1 var(--d);letter-spacing:.01em;text-transform:none;color:var(--text-accent);text-shadow:var(--gl)}
html[data-theme=terminal][data-tpal=arcade] #hp{font:400 clamp(32px,3.6vw,50px)/1.02 var(--d);letter-spacing:.01em;color:var(--fg)}
html[data-theme=terminal][data-tpal=arcade] :is(#hk,.col h2,.grp h3,.tag,#hm){font-family:Silkscreen,var(--t);letter-spacing:.08em}
html[data-theme=terminal][data-tpal=arcade] #hk{color:var(--ib)}
html[data-theme=terminal][data-tpal=arcade] .tag{color:var(--dp)}
/* Arcade type by job: labels (bands, tags) stay pixel signage; headlines are VT323 at 26px (the '80s terminal screen
   font, set large enough for older readers); the index of launchers and the MORE lines are IBM Plex Mono. */
html[data-theme=terminal][data-tpal=arcade] :is(.sl a,.more-preview p){font:400 25px/1.2 VT323,'IBM Plex Mono',var(--px);letter-spacing:.01em}
html[data-theme=terminal][data-tpal=arcade] :is(#mr h2,.mrk){font-family:Silkscreen,var(--t);letter-spacing:.08em}html[data-theme=terminal][data-tpal=arcade] #mr a{font:400 22px/1.1 VT323,'IBM Plex Mono',var(--px);letter-spacing:.01em}html[data-theme=terminal][data-tpal=arcade] #mr .src{font:500 11px 'IBM Plex Mono',var(--px)}html[data-theme=terminal][data-tpal=arcade] .mrn{font-size:34px}
html[data-theme=terminal][data-tpal=arcade] .ln ul{font:500 15px/1.5 'IBM Plex Mono',var(--px);letter-spacing:0}
html[data-theme=terminal][data-tpal=arcade] :is(.mr button,.mr a,.dock button){font:500 13px/1.4 'IBM Plex Mono',var(--px);letter-spacing:.02em}
/* Sound toggle: only in Phosphor Terminal, stacked above the theme button. */
#snd{display:none;position:fixed;right:12px;bottom:68px;z-index:50;width:48px;height:48px;padding:0;background:var(--bg);color:var(--fg);border:1px solid var(--hr);font:20px/1 var(--m);cursor:pointer}
[data-theme=terminal] #snd{display:block}
#snd:focus-visible{outline:2px solid var(--text-accent);outline-offset:2px}
/* Dark Slate: business-first nameplate. A compact masthead and a soft dissolve-in (opacity and blur only, so nothing
   below it moves). Newsprint and Arcade keep their full mastheads. */
html[data-theme=dark][data-look] #mast{padding:12px 0 8px}
html[data-theme=dark][data-look] #brand{font-size:clamp(26px,4.8vw,58px)}
html[data-theme=dark][data-look] #tag{margin-top:6px;font-size:10px;letter-spacing:.3em}
html[data-theme=dark][data-live=banner] #tick{padding:12px 0 18px}
html[data-theme=dark] #mast .mid{animation:dissolve .6s ease-out both}
@keyframes dissolve{from{opacity:0;filter:blur(6px)}to{opacity:1;filter:blur(0)}}
@media (max-width:820px){#hw{padding:0}.hf{top:calc((100vw - 32px)*.28125);filter:drop-shadow(0 0 2px var(--bg)) drop-shadow(0 0 1px var(--bg))}#hprev{left:2px}#hnext{right:2px}}

/* Arcade hits: scoreboard, burst canvas, +100, and the crater a hit headline leaves behind (terminal theme only). */
.score,.boom,.plus{display:none}
[data-theme=terminal] .score{display:block;position:fixed;left:12px;bottom:12px;z-index:50;padding:6px 10px;border:2px solid var(--text-accent);background:var(--bg);color:var(--text-accent);font:700 12px/1 var(--m);letter-spacing:.1em;white-space:pre;text-shadow:var(--gl)}
[data-theme=terminal] .boom{display:block;position:fixed;inset:0;z-index:60;pointer-events:none}
[data-theme=terminal] .plus{display:block;position:fixed;z-index:61;transform:translateX(-50%);color:var(--text-accent);font:700 16px var(--m);pointer-events:none;animation:plus .9s ease-out forwards}
@keyframes plus{to{transform:translate(-50%,-40px);opacity:0}}
/* Climbing-game callouts (NAILED IT!, SCOOP DELIVERED!, RIBBIT!) hang around long enough to read. */
@keyframes plusdk{70%{opacity:1}to{transform:translate(-50%,-40px);opacity:0}}
[data-theme=terminal][data-world=ad] .plus{animation:plusdk 2.5s ease-out forwards}
[data-theme=terminal] .sl li.hit{display:none}
#grid.nohov .sl li{pointer-events:none}
#mr li[hidden]{display:none!important}
[data-theme=terminal] #mr li.land{animation:land .22s steps(3) both}
[data-theme=terminal] .drop{overflow:hidden;padding-block:0!important;margin-block:0!important;border-width:0!important;transition:height .24s cubic-bezier(.55,0,1,.45),padding .24s,margin .24s!important}
[data-theme=terminal] li.land{animation:land .22s steps(3) both}
@keyframes land{0%{transform:translateY(-6px)}60%{transform:translateY(3px)}100%{transform:none}}
@media (prefers-reduced-motion:reduce){[data-theme=terminal] .sl li.land{animation:none}}
[data-theme=terminal] .poof,[data-theme=terminal] .poof *{visibility:hidden!important}

/* Wreck the page: scorched pixel holes left where big things (logo, pictures, masthead) were blown up. */
.hole{display:none}
[data-theme=terminal] .hole{display:block;position:absolute;z-index:40;pointer-events:none;image-rendering:pixelated}

/* The whole top-story box opens the story (see app.js), so it reads as clickable. */
#hero:not(.vid){cursor:pointer}

/* Board cleared bonus banner (arcade). */
.bonus{display:none}
[data-theme=terminal] .bonus{display:block;position:fixed;z-index:62;transform:translate(-50%,-50%);padding:8px 14px;border:3px solid var(--text-accent);background:var(--bg);color:var(--text-accent);font:700 22px/1 var(--m);letter-spacing:.12em;white-space:nowrap;pointer-events:none;text-shadow:var(--gl);animation:bonus 1.6s steps(8) both}
@keyframes bonus{0%{transform:translate(-50%,-50%) scale(.4)}15%{transform:translate(-50%,-50%) scale(1.15)}25%,100%{transform:translate(-50%,-50%) scale(1)}30%,50%,70%{opacity:1}40%,60%{opacity:.2}90%{opacity:1}100%{opacity:0}}

/* Jackpot slot panel (arcade). */
.jp{display:none}
[data-theme=terminal] .jp{display:flex;flex-direction:column;align-items:center;gap:12px;position:fixed;left:50%;top:38%;z-index:70;transform:translate(-50%,-50%);padding:18px 26px;border:3px solid var(--text-accent);background:var(--bg);box-shadow:0 0 0 4px var(--bg),0 0 0 7px var(--fg);font:700 16px/1 var(--m);color:var(--text-accent);letter-spacing:.12em;text-shadow:var(--gl);animation:jpin .35s steps(4) both}
[data-theme=terminal] .jp.pay{animation:jpin .35s steps(4) both,jppay .24s steps(2) 10;--jpl:#FFD23F}
@keyframes jppay{0%{box-shadow:0 0 0 4px var(--bg),0 0 0 7px var(--jpl),0 0 26px 6px var(--jpl)}100%{box-shadow:0 0 0 4px var(--bg),0 0 0 7px #FF2A2A,0 0 0 11px var(--bg),0 0 0 14px var(--jpl)}}
@media (prefers-reduced-motion:reduce){[data-theme=terminal] .jp.pay{animation:none}}
[data-theme=terminal] .jp.out{animation:jpout .3s steps(3) both}
@keyframes jpin{from{transform:translate(-50%,-160%)}}@keyframes jpout{to{transform:translate(-50%,-50%) scale(.2);opacity:0}}
.jt{font-size:22px}.jr{display:flex;gap:10px}
.jr i{display:grid;place-items:center;width:64px;height:64px;border:2px solid var(--fg);background:var(--cd);font:700 30px/1 var(--m);font-style:normal;color:var(--fg)}
.jr i.stop{border-color:var(--text-accent);color:var(--text-accent)}
.jw{font-size:18px;white-space:nowrap}
[data-theme=terminal] .jn:empty{display:none}

/* Jackpot level palettes: color values only (fonts stay with the arcade palette); html + two attributes outranks the
   palette rules. */
html[data-theme=terminal][data-lvpal=classic]{--bg:#050505;--fg:#00FF66;--text-accent:#FFCC00;--on-ac:#050505;--cd:#070F07;--hl:#1A3D1A;--nw:#102A10;--hr:#1C4424;--mu:#35C46E;--ib:#1A3D1A;--gl:0 0 4px color-mix(in srgb,var(--fg) 35%,transparent)}
html[data-theme=terminal][data-lvpal=glacier]{--bg:#1B2128;--fg:#D6E6EE;--text-accent:#5CE1E6;--on-ac:#0F1519;--cd:#212A33;--hl:#25414B;--nw:#1F3441;--hr:#33414D;--mu:#8FA3B1;--ib:#26313C;--if:#5CE1E6}
html[data-theme=terminal][data-lvpal=lagoon]{--bg:#1D2224;--fg:#DCE9E6;--text-accent:#3DD9C9;--on-ac:#0F1716;--cd:#242B2D;--hl:#1F4441;--nw:#1C3835;--hr:#35413F;--mu:#93A7A3;--ib:#28312F;--if:#3DD9C9}
html[data-theme=terminal][data-lvpal=aurora]{--bg:#1F2330;--fg:#E3E8F4;--text-accent:#7FE3F0;--on-ac:#141824;--cd:#262B3A;--hl:#2A3A55;--nw:#243049;--hr:#39415A;--mu:#9CA5C0;--ib:#2B3144;--if:#7FE3F0}
html[data-theme=terminal][data-lvpal=arcade]{--bg:#16304F;--fg:#F4EEDC;--text-accent:#FFB84D;--on-ac:#0B1628;--cd:#1B3A5E;--hl:#24497A;--nw:#24497A;--hr:#34598A;--mu:#9FB3CF;--ib:#5EE6C8;--if:#0B1628;--gl:0 0 10px color-mix(in srgb,var(--text-accent) 30%,transparent);--dp:#7CC4FF}

/* Level up: the board rises (stories out the top, unseen ones in from below). */
[data-theme=terminal] .sl li.riseout{animation:riseout .36s steps(4) both}
[data-theme=terminal] .sl li.risein{animation:risein .5s steps(5) both}
@keyframes riseout{to{transform:translateY(-120%);opacity:0}}@keyframes risein{from{transform:translateY(90%);opacity:0}}
@media (prefers-reduced-motion:reduce){[data-theme=terminal] .sl li:is(.riseout,.risein){animation:none}}

/* Charge ring under the pointer while a blast charges; gold popups for bonus rocks. */
.chg{display:none}
[data-theme=terminal] .chg{display:block;position:fixed;z-index:65;width:40px;height:40px;margin:-20px 0 0 -20px;border:2px dashed var(--text-accent);border-radius:50%;pointer-events:none;animation:chg 1.2s steps(10) forwards}
@keyframes chg{from{transform:scale(.3);opacity:.4}to{transform:scale(2.6);opacity:1}}
[data-theme=terminal] .plus.gold{color:#39FF14;font-size:20px;text-shadow:0 0 8px #39FF14}

/* Batch 2: discovery toasts, Pac-Man, extra level palettes (colors only). */
.ach,.pac{display:none}
[data-theme=terminal] .ach{display:block;position:fixed;left:50%;top:14px;z-index:72;transform:translateX(-50%);padding:8px 14px;border:2px solid var(--text-accent);background:var(--bg);color:var(--text-accent);font:700 13px/1 var(--m);letter-spacing:.1em;max-width:92vw;text-align:center;line-height:1.35;text-shadow:var(--gl);pointer-events:none;animation:achin .3s steps(3) both}
@keyframes achin{from{transform:translate(-50%,-40px)}}
[data-theme=terminal] .pac{display:block;position:fixed;z-index:64;width:30px;height:30px;margin:-15px 0 0 -15px;border-radius:50%;background:transparent;color:#FFE14D;pointer-events:none}
[data-theme=terminal] .pac svg{display:block;width:100%;height:100%;overflow:visible}
[data-theme=terminal] .pac path{fill:currentColor;stroke:#000;stroke-width:1.25;stroke-linejoin:round}
html[data-theme=terminal][data-lvpal=vapor]{--bg:#241536;--fg:#F3E9FF;--text-accent:#FF6EC7;--on-ac:#1A0F28;--cd:#2E1B45;--hl:#4A2A6E;--nw:#3C2259;--hr:#5B3A82;--mu:#B9A3D6;--ib:#5CF2FF;--if:#1A0F28;--dp:#9D7BFF}
html[data-theme=terminal][data-lvpal=amber]{--bg:#140C00;--fg:#FFB000;--text-accent:#FFD27A;--on-ac:#140C00;--cd:#1E1300;--hl:#3A2600;--nw:#2B1C00;--hr:#4A3200;--mu:#C98A00;--ib:#FFE3A3;--if:#140C00;--dp:#FF8A00}
html[data-theme=terminal][data-lvpal=gameboy]{--bg:#0F380F;--fg:#9BBC0F;--text-accent:#E0F8D0;--on-ac:#0F380F;--cd:#164516;--hl:#306230;--nw:#1E4E1E;--hr:#306230;--mu:#8BAC0F;--ib:#E0F8D0;--if:#0F380F;--dp:#C4E06A}
html[data-theme=terminal][data-lvpal=synth]{--bg:#0A0A14;--fg:#E6F7FF;--text-accent:#FF2E88;--on-ac:#0A0A14;--cd:#12122A;--hl:#2A1A4A;--nw:#1C1440;--hr:#3A2A66;--mu:#8A8FD9;--ib:#00F0FF;--if:#0A0A14;--dp:#FFB300}

/* Numbers in the game use a plain mono so pixel digits can't misread (+50 looked like ",so"). Words keep the pixel face. */
[data-theme=terminal] :is(.plus,.bonus,.jw,.score,.ach .num){font-family:'IBM Plex Mono',ui-monospace,monospace;font-weight:700}

/* Levels 10-13 (colors only) and the finale panel. */
html[data-theme=terminal][data-lvpal=tron]{--bg:#00080F;--fg:#CFFBFF;--text-accent:#00E5FF;--on-ac:#00080F;--cd:#011524;--hl:#033A55;--nw:#022538;--hr:#0A4A66;--mu:#5FB9D1;--ib:#FF9D00;--if:#00080F;--dp:#7DF9FF}
html[data-theme=terminal][data-lvpal=ember]{--bg:#140504;--fg:#FFE0CC;--text-accent:#FF4D1A;--on-ac:#140504;--cd:#220907;--hl:#4A140C;--nw:#331009;--hr:#5C1A0F;--mu:#D98A6A;--ib:#FFC14D;--if:#140504;--dp:#FF8A5C}
html[data-theme=terminal][data-lvpal=arctic]{--bg:#0B1620;--fg:#EAF7FF;--text-accent:#9AE6FF;--on-ac:#0B1620;--cd:#112230;--hl:#1E3B52;--nw:#16303F;--hr:#2A4D66;--mu:#8FB3C7;--ib:#FFFFFF;--if:#0B1620;--dp:#C7F0FF}
html[data-theme=terminal][data-lvpal=tektronix]{--bg:#020A02;--fg:#B6FFB0;--text-accent:#39FF14;--on-ac:#020A02;--cd:#051405;--hl:#0D3A0D;--nw:#082608;--hr:#145214;--mu:#5ECF55;--ib:#E6FFE0;--if:#020A02;--dp:#9DFF85}
[data-theme=terminal] .jp.end{max-width:92vw;text-align:center;gap:14px}
.jp .js{margin:0;font:700 14px/1.4 'IBM Plex Mono',ui-monospace,monospace;color:var(--fg);letter-spacing:.06em}
.jp .jm{margin:0;font:400 15px/1.4 var(--m);color:var(--mu);letter-spacing:.04em}
.jp .jb{display:flex;flex-wrap:wrap;justify-content:center;gap:10px}
.jp .jb button{padding:9px 14px;border:2px solid var(--text-accent);background:var(--bg);color:var(--text-accent);font:700 12px/1 var(--m);letter-spacing:.12em;cursor:pointer}
.jp .jb button:hover,.jp .jb button:focus-visible{background:var(--text-accent);color:var(--on-ac)}

/* Fake news: once it spreads it flickers and gets a stamp. Looks like any other story until then. */
[data-theme=terminal] .sl li.fk.spread>a{animation:fkf 1.1s steps(2) infinite}
@keyframes fkf{50%{opacity:.55}}
.shared{display:none}
[data-theme=terminal] .sl li.fk .shared{display:inline-block;margin-left:8px;padding:1px 6px;border:1px solid #FF5C5C;color:#FF5C5C;font:700 11px/1.4 'IBM Plex Mono',ui-monospace,monospace;letter-spacing:.08em;transform:rotate(-2deg)}

/* Share: a SHARE chip beside the scoreboard, share buttons in the jackpot and finale, and the desktop share box. */
.shbtn{display:none}
[data-theme=terminal] .shbtn{display:block;position:fixed;left:12px;bottom:52px;z-index:50;padding:5px 10px;border:2px solid var(--text-accent);background:var(--bg);color:var(--text-accent);font:700 11px/1 var(--m);letter-spacing:.14em;cursor:pointer}
[data-theme=terminal] .shbtn:hover,[data-theme=terminal] .shbtn:focus-visible{background:var(--text-accent);color:var(--on-ac)}
.jp .jshare{margin-top:2px;padding:7px 12px;border:2px solid var(--text-accent);background:var(--bg);color:var(--text-accent);font:700 11px/1 var(--m);letter-spacing:.14em;cursor:pointer}
.shr{display:flex;flex-wrap:wrap;gap:8px;align-items:center;position:fixed;left:50%;bottom:90px;z-index:75;transform:translateX(-50%);width:min(440px,92vw);padding:16px 18px;border:3px solid var(--text-accent);background:var(--bg);box-shadow:0 0 0 4px var(--bg),0 0 0 7px var(--fg);color:var(--fg)}
.shr b{flex-basis:100%;color:var(--text-accent);font:700 14px/1 var(--m);letter-spacing:.14em}
.shr p{flex-basis:100%;margin:2px 0 6px;font:400 14px/1.45 'IBM Plex Mono',ui-monospace,monospace}
.shr a,.shr button{padding:7px 11px;border:2px solid var(--text-accent);background:var(--bg);color:var(--text-accent);font:700 11px/1 var(--m);letter-spacing:.12em;text-decoration:none;cursor:pointer}
.shr a:hover,.shr button:hover,.shr a:focus-visible,.shr button:focus-visible{background:var(--text-accent);color:var(--on-ac)}
.shr .x{position:absolute;top:6px;right:8px;padding:0 6px;border:0;font-size:18px}

/* Controls dock, refreshed: each look is a place (Newsroom, Night Shift, Arcade). In Arcade the sound toggle is a
   small speaker segment joined to the right end of the same button, dimmed and struck through when off. */
#th{display:flex;align-items:center;width:auto;height:40px;padding:0 14px;border:2px solid var(--text-accent);background:var(--bg);color:var(--text-accent);font:700 12px/1 var(--m);letter-spacing:.12em;white-space:nowrap;box-shadow:0 4px 14px #00000033;cursor:pointer}
#th:before{content:"\2600\FE0E  THE NEWSROOM \25B8"}[data-theme=dark] #th:before{content:"\263E  THE NIGHT SHIFT \25B8"}[data-theme=terminal] #th:before{content:"\2605  THE ARCADE \25B8"}
#th:hover,#th:focus-visible{background:var(--text-accent);color:var(--on-ac)}
[data-theme=terminal] #th{right:52px;border-right-width:1px}
#snd{right:12px;bottom:12px;width:40px;height:40px;padding:0;border:2px solid var(--text-accent);border-left-width:1px;background:var(--bg);color:var(--text-accent);font:700 18px/1 var(--m);box-shadow:0 4px 14px #00000033}
#snd:not(.on){opacity:.55;text-decoration:line-through}
#snd:hover,#snd:focus-visible{background:var(--text-accent);color:var(--on-ac);opacity:1}

/* Fake-news drama: FAKE NEWS ALERT (fooled) = Drudge-style siren light + red/blue flash; DEBUNKED (caught) = stamp slam. */
.fkd{display:none}
[data-theme=terminal] .fkd{display:block;position:fixed;inset:0;z-index:72;pointer-events:none}
[data-theme=terminal] .fkd.fool{animation:fkflash .2s steps(2) 6}
@keyframes fkflash{0%{background:rgba(255,0,0,.2)}100%{background:rgba(0,90,255,.16)}}
.fkd .sir{display:none}
[data-theme=terminal] .fkd.fool .sir{display:block;position:absolute;left:50%;top:22%;width:56px;height:56px;margin-left:-28px;border-radius:50% 50% 6px 6px;background:#e00;box-shadow:0 0 0 4px #600,0 0 60px 30px rgba(255,0,0,.6);animation:fksir .3s steps(2) infinite}
[data-theme=terminal] .fkd.fool .sir:after{content:'';position:absolute;left:-8px;right:-8px;bottom:-10px;height:10px;background:#333}
@keyframes fksir{50%{background:#ff8a8a;box-shadow:0 0 0 4px #600,0 0 90px 45px rgba(255,0,0,.8)}}
[data-theme=terminal] .fkd b{position:absolute;left:50%;top:42%;transform:translate(-50%,-50%) rotate(-8deg);padding:6px 18px;border:6px solid #e00;color:#e00;background:var(--bg);font:900 clamp(28px,7vw,64px)/1 var(--m);letter-spacing:.06em;white-space:nowrap;animation:fkslam .35s cubic-bezier(.2,1.4,.5,1) both}
[data-theme=terminal] .fkd.catch b{border-color:#39FF14;color:#39FF14;text-shadow:0 0 10px #39FF14}
@keyframes fkslam{from{transform:translate(-50%,-50%) rotate(-8deg) scale(2.6);opacity:0}}
@media (prefers-reduced-motion:reduce){.fkd{display:none!important}}

/* Bonus level "COVER ART" (data-box, one random level a day): the page becomes an early-80s game box. Colors, stripes and
   slant only (fonts untouched, hero keeps its 6px double border). Stripes are our own five-band warm-to-teal set. */
html[data-theme=terminal][data-world=box]{--bg:#000;--fg:#F4EEDC;--text-accent:#FFB000;--on-ac:#000;--cd:#080808;--hl:#2A1A00;--nw:#1A1000;--hr:#2C2C2C;--mu:#B8B0A0;--ib:#111;
--rb:linear-gradient(#E8261D 0 20%,#F26B1D 20% 40%,#F7A21B 40% 60%,#F9D23C 60% 80%,#2BB5A8 80%)}
html[data-theme=terminal][data-world=box] body{background:#000}
html[data-theme=terminal][data-world=box] #mast{position:relative;padding-bottom:34px}
html[data-theme=terminal][data-world=box] #mast::after{content:'';display:block!important;position:absolute;left:-16px;right:-16px;bottom:6px;height:22px;background:var(--rb);transform:skewX(-20deg)}
html[data-theme=terminal][data-world=box] #hero{box-shadow:0 0 0 10px #000,0 0 0 22px #F4EEDC}
html[data-theme=terminal][data-world=box] #lk{display:inline-block;transform:skewX(-9deg);text-shadow:3px 3px 0 #E8261D,6px 6px 0 #F26B1D}
html[data-theme=terminal][data-world=box] section.col h2,html[data-theme=terminal][data-world=box] .grp h3{background:var(--rb);color:#000;text-shadow:none;transform:skewX(-12deg)}
html[data-theme=terminal][data-world=box] .score{background:linear-gradient(#000,#000) padding-box,var(--rb) border-box;border-color:transparent;border-radius:10px 10px 2px 2px}

/* Level 3 world "CABINET MARQUEE": the page as an arcade cabinet. A backlit marquee over the logo (slow flicker), side-art
   panels down both edges, bulb-lit section signs, a bezel around the top story and a coin-door scoreboard. Colors and light only. */
html[data-theme=terminal][data-world=marquee]{--bg:#12061F;--fg:#F3E9FF;--text-accent:#FF4FD8;--on-ac:#12061F;--cd:#1C0B30;--hl:#3A1460;--nw:#2A0E48;--hr:#3B2160;--mu:#B9A3D6;--ib:#1C0B30;
--sa:repeating-linear-gradient(135deg,#FF4FD8 0 14px,#12061F 14px 22px,#29E0FF 22px 36px,#12061F 36px 44px)}
html[data-theme=terminal][data-world=marquee] body{background:#12061F}
html[data-theme=terminal][data-world=marquee] #mast{background:radial-gradient(ellipse at 50% 60%,rgba(255,214,120,.38),rgba(255,79,216,.12) 55%,transparent 75%),#1C0B30;
border-top:6px solid #C9C9D6;border-bottom:6px solid #C9C9D6;box-shadow:0 0 34px rgba(255,79,216,.55),inset 0 0 40px rgba(255,214,120,.25);animation:mqflick 7s steps(1) infinite}
@keyframes mqflick{0%,96%,100%{filter:none}97%{filter:brightness(.7)}98%{filter:brightness(1.15)}}
@media (min-width:760px){html[data-theme=terminal][data-world=marquee] body::before,html[data-theme=terminal][data-world=marquee] body::after{content:'';position:fixed;top:0;bottom:0;width:14px;background:var(--sa);z-index:5;pointer-events:none;opacity:.9}
html[data-theme=terminal][data-world=marquee] body::before{left:0}html[data-theme=terminal][data-world=marquee] body::after{right:0}}
html[data-theme=terminal][data-world=marquee] section.col h2,html[data-theme=terminal][data-world=marquee] .grp h3{color:#FFE7A8;text-shadow:0 0 6px #FF4FD8,0 0 14px #FF4FD8;
background:radial-gradient(circle,#FFE7A8 1.6px,transparent 2.2px) 0 0/12px 100% repeat-x,radial-gradient(circle,#FFE7A8 1.6px,transparent 2.2px) 0 100%/12px 6px repeat-x,#2A0E48;padding-top:8px;padding-bottom:8px}
html[data-theme=terminal][data-world=marquee] #hero{box-shadow:0 0 0 10px #0A0414,0 0 0 16px #3B2160,0 0 40px rgba(41,224,255,.35)}
html[data-theme=terminal][data-world=marquee] #lk{text-shadow:0 0 8px #FF4FD8,0 0 22px #FF4FD8}
html[data-theme=terminal][data-world=marquee] .score{background:linear-gradient(#2B2B33,#16161C);border-color:#8A8A99;box-shadow:inset 0 0 0 2px #0A0A0E}
html[data-theme=terminal][data-world=marquee] .score::after{content:'';display:inline-block;width:4px;height:14px;margin-left:12px;vertical-align:middle;background:#FF2A2A;box-shadow:0 0 6px #FF2A2A}
@media (prefers-reduced-motion:reduce){html[data-theme=terminal][data-world=marquee] #mast{animation:none}}

/* Level worlds may change headline type (owner-approved 2026-10-02): top story, LATEST and section signs only; story text stays. */
html[data-theme=terminal][data-world=box] #lk,html[data-theme=terminal][data-world=box] #h,html[data-theme=terminal][data-world=box] section.col h2,html[data-theme=terminal][data-world=box] .grp h3{font-family:'Jersey 10',var(--t);letter-spacing:.02em}
html[data-theme=terminal][data-world=box] #lk{font-size:1.25em}
html[data-theme=terminal][data-world=marquee] #lk,html[data-theme=terminal][data-world=marquee] #h,html[data-theme=terminal][data-world=marquee] section.col h2,html[data-theme=terminal][data-world=marquee] .grp h3{font-family:'Pixelify Sans',var(--t)}

/* Level 4 world "PRESS RUN": a 1982 magazine ad. Red frame, yellow corner ribbon, black play field, magenta girder trim under
   crooked headline rows (alternate tilt), starburst callout. The climbing game draws on canvas.pr. Our own words, nobody's marks. */
.pr{display:none}
html[data-theme=terminal][data-world=ad] .pr{display:block;position:fixed;inset:0;z-index:58;pointer-events:none}
html[data-theme=terminal][data-world=ad]{--bg:#0A0A0A;--fg:#F4EEDC;--text-accent:#FFD23F;--on-ac:#0A0A0A;--cd:#111;--hl:#3A0A0A;--nw:#2A0808;--hr:#E3262D;--mu:#C9B9A0;--ib:#111}
/* COLUMN CLIMB: the thick red page frame has curved corners (owner, 2026-10-03). The newsboy climbs the bar at body-left+7, far below the curve. */
html[data-theme=terminal][data-world=ad] body{background:#0A0A0A;box-shadow:inset 0 0 0 14px #E3262D;border-radius:30px}
html[data-theme=terminal][data-world=ad] #mast{background:#E3262D;position:relative}
html[data-theme=terminal][data-world=ad] #mast::before{content:'LICENSED NEWS GAME';position:absolute;top:18px;right:-34px;transform:rotate(38deg);background:#FFD23F;color:#000;font:700 10px/1 var(--m);letter-spacing:.08em;padding:6px 40px;display:block!important}
html[data-theme=terminal][data-world=ad] #hero::after{content:'PLAYS LIKE THE REAL NEWS!';position:absolute;right:-10px;top:-18px;z-index:3;width:120px;height:120px;display:grid;place-items:center;text-align:center;padding:22px;
background:#FFD23F;color:#B00020;font:700 11px/1.2 var(--m);clip-path:polygon(50% 0,61% 18%,82% 8%,80% 30%,100% 38%,84% 54%,98% 72%,76% 74%,74% 96%,56% 82%,40% 100%,34% 78%,10% 88%,18% 66%,0 52%,18% 40%,4% 20%,28% 22%,32% 0);transform:rotate(12deg)}
html[data-theme=terminal][data-world=ad] #hero{position:relative}
/* Ramps like the old girder games: each whole story row (headline and girder trim together) is a ~2.5° ramp, alternating
   direction and staggered 7% in from alternate sides so the low end leaves a gap for barrels to drop. Each story also gets a ~34px lane above its girder so barrels and the newsboy roll beneath the text. */
html[data-theme=terminal][data-world=ad] #grid .sl li:has(>a[data-id]){position:relative;padding-bottom:34px;transform:rotate(-2.5deg);margin-left:7%}
html[data-theme=terminal][data-world=ad] #grid .sl li.zr:has(>a[data-id]){transform:rotate(2.5deg);margin-left:0;margin-right:7%}
/* The section bands lean with the ramps, so each column reads as one zigzag girder structure. */
html[data-theme=terminal][data-world=ad] section.col h2,html[data-theme=terminal][data-world=ad] .grp h3{transform:rotate(-2deg)}
html[data-theme=terminal][data-world=ad] #grid .sl li:has(>a[data-id])::after{content:'';position:absolute;left:0;right:0;bottom:0;height:4px;width:auto!important;opacity:1!important;animation:none!important;background:repeating-linear-gradient(90deg,#FF4FA8 0 10px,#7A1E52 10px 13px)}
html[data-theme=terminal][data-world=ad] #lk,html[data-theme=terminal][data-world=ad] #h,html[data-theme=terminal][data-world=ad] section.col h2,html[data-theme=terminal][data-world=ad] .grp h3{font-family:'Jersey 10',var(--t);letter-spacing:.02em}
/* COLUMN CLIMBER: periwinkle letters with muted blue depth against the red masthead and black field. */
html[data-theme=terminal][data-world=ad] #lk{display:inline-block;transform:skewX(-9deg);color:#A7B9F0;text-shadow:3px 3px 0 #4D698B,6px 6px 0 #233B61}
html[data-theme=terminal][data-world=ad] section.col h2,html[data-theme=terminal][data-world=ad] .grp h3{background:#E3262D;color:#FFF;text-shadow:2px 2px 0 #000}
html[data-theme=terminal][data-world=ad] .score{background:#E3262D;color:#FFF;border-color:#FFD23F}

/* CABINET MARQUEE maze: every story's separator is a row of pellets for Pac-Man to eat (--el/--er = eaten from the left/right;
   .ate = row cleared). Stories themselves are never eaten in this world. The base .sl li::after rule is overridden here. */
html[data-theme=terminal][data-world=marquee] #grid .sl li:has(>a[data-id]){position:relative}
html[data-theme=terminal][data-world=marquee] #grid .sl li:has(>a[data-id])::after{content:'';position:absolute;left:0;right:0;bottom:-4px;height:8px;width:auto!important;opacity:1!important;animation:none!important;
background:radial-gradient(circle,#FFE7A8 2.2px,transparent 2.8px) 0 50%/16px 8px repeat-x;clip-path:inset(0 var(--er,0%) 0 var(--el,0%));filter:drop-shadow(0 0 3px #FF4FD8)}
html[data-theme=terminal][data-world=marquee] #grid .sl li.ate::after{opacity:0!important;transition:opacity .4s}

/* CABINET MARQUEE, maze edition (owner, 2026-10-03): the world is Pac-Man's maze now, so it takes the classic maze colors:
   black, blue double-line walls with rounded corners, peach pellets with bigger power pellets at each row's ends, white
   type with yellow highlights. Overrides the earlier purple-neon cabinet rules above (same selectors, later wins). */
html[data-theme=terminal][data-world=marquee]{--bg:#000;--fg:#FFFFFF;--text-accent:#FFFF00;--on-ac:#000;--cd:#000;--hl:#0A0A3A;--nw:#05052A;--hr:#2121DE;--mu:#BFBFFF;--ib:#000;
--mz:#2121DE;--pel:#FFB8AE}
html[data-theme=terminal][data-world=marquee] body{background:#000}
html[data-theme=terminal][data-world=marquee] #mast{background:#000;border:6px solid var(--mz);border-radius:18px;box-shadow:none;animation:none}
html[data-theme=terminal][data-world=marquee] section.col h2,html[data-theme=terminal][data-world=marquee] .grp h3{background:#000;color:#FFF;text-shadow:none;border:4px double var(--mz);border-radius:12px;padding-top:6px;padding-bottom:6px}
html[data-theme=terminal][data-world=marquee] #hero{border-radius:22px;box-shadow:0 0 0 6px #000,0 0 0 12px var(--mz)}
html[data-theme=terminal][data-world=marquee] #hero img,html[data-theme=terminal][data-world=marquee] #hero .art{border-radius:14px}
/* NEWS NIBBLER: give the main live headline Wirevision's readable slant and depth in maze yellow and blue. */
html[data-theme=terminal][data-world=marquee] #lk{display:inline-block;transform:skewX(-9deg);color:#FFFF00;text-shadow:3px 3px 0 #5555FF,6px 6px 0 var(--mz)}
html[data-theme=terminal][data-world=marquee] section.col{border-color:var(--mz)}
html[data-theme=terminal][data-world=marquee] .score{background:#000;color:#FFF;border-color:var(--mz)}
html[data-theme=terminal][data-world=marquee] .score::after{display:none}
/* NEWS NIBBLER: no side rails (owner, 2026-10-03): the doubled lines down both page edges are gone; the masthead, hero and column frames stay. */
@media (min-width:760px){html[data-theme=terminal][data-world=marquee] body::before,html[data-theme=terminal][data-world=marquee] body::after{display:none}}
/* NEWS NIBBLER: no rule under the top APNUNEWS dateline bar (owner, 2026-10-03). */
html[data-theme=terminal][data-world=marquee] #bar{border-bottom:0}
/* NEWS NIBBLER: masthead is one thick 6px line matching the thick hero ring; no footer top rule, the MORE STORIES lines stay (owner A/B, 2026-10-03). */
html[data-theme=terminal][data-world=marquee] footer{border-top:0}
/* NEWS NIBBLER: the three columns sit in one rounded 3px wire frame (owner, 2026-10-03), not the open square-cornered top rule and side lines. Inner dividers stay; the columns' own outer edge lines are gone so the frame is the only outer wire (the older :first/:last-of-type edge rules used to win here and left a second thin wire). */
html[data-theme=terminal][data-world=marquee] #grid{border:3px solid var(--mz);border-radius:22px;padding:4px 0}
/* NEWS NIBBLER: no white double rule between the hero and MOST READ, and no thin blue rule closing it above the column frame (owner, 2026-10-03). */
html[data-theme=terminal][data-world=marquee] #mr{border-top:0;border-bottom:0}
/* Pellet strips and the Nibbler stay above the background-only eaten-line mask. */
html[data-theme=terminal][data-world=marquee] #grid .sl li:has(>a[data-id])::after{height:12px;bottom:-6px;margin:0;z-index:63;filter:none}
html[data-theme=terminal][data-world=marquee] .pac{color:#FFFF00}

.mzc{display:none}
/* Contain erased-wall masks behind every foreground surface, including transformed bands and ads. */
html[data-theme=terminal][data-world=marquee] #grid{isolation:isolate}
html[data-theme=terminal][data-world=marquee] .mzc{display:block;position:fixed;inset:0;z-index:0;pointer-events:none}
html[data-theme=terminal][data-world=marquee] #grid :is(.sl,.more-preview,.ln),
html[data-theme=terminal][data-world=marquee] #grid .col:not(.hastop)>h2{position:relative;z-index:1}
html[data-theme=terminal][data-world=marquee] #grid .dock{z-index:1}
html[data-theme=terminal][data-world=marquee] #tick{border-bottom-color:transparent}
html[data-theme=terminal][data-world=marquee] #grid .sl li.ate{border-bottom-color:transparent!important;box-shadow:none}
/* Eating means gone: in the maze the row's blue line is drawn inside the same pellet strip (::after), so it is erased right
   behind Pac-Man's mouth along with the dots (the li's own border is turned off here). */
html[data-theme=terminal][data-world=marquee] #grid .sl li:has(>a[data-id]){border-bottom-color:transparent!important}
html[data-theme=terminal][data-world=marquee] #grid .sl li:has(>a[data-id])::after{background:radial-gradient(circle,var(--pel) 5px,transparent 5.6px) 0 50%/12px 12px no-repeat,radial-gradient(circle,var(--pel) 5px,transparent 5.6px) 100% 50%/12px 12px no-repeat,
radial-gradient(circle,var(--pel) 2px,transparent 2.4px) 24px 50%/16px 12px repeat-x,linear-gradient(var(--mz),var(--mz)) 0 50%/100% 1px no-repeat}

/* CARTS switch (Arcade only): the reader picks any unlocked world, the classic Arcade, or AUTO (the level order). */
.carts,.cartm{display:none}
[data-theme=terminal] .carts{display:block;position:fixed;right:12px;bottom:58px;z-index:50;padding:6px 10px;border:2px solid var(--text-accent);background:var(--bg);color:var(--text-accent);font:700 11px/1 var(--m);letter-spacing:.12em;cursor:pointer}
[data-theme=terminal] .cartm{display:flex;flex-direction:column;position:fixed;right:12px;bottom:90px;z-index:51;border:2px solid var(--text-accent);background:var(--bg);min-width:200px}
.cartm button{padding:9px 12px;border:0;border-bottom:1px solid var(--hr);background:none;color:var(--fg);font:700 11px/1.2 var(--m);letter-spacing:.1em;text-align:left;cursor:pointer}
.cartm button.on{color:var(--text-accent)}.cartm button.on::before{content:'▸ '}.cartm button:hover,.cartm button:focus-visible{background:var(--text-accent);color:var(--on-ac)}
/* Legibility: the pixel face's C reads as O at this size ("OARTS"); the switch and menu use IBM Plex Mono like the scores. */
[data-theme=terminal] .carts,.cartm button{font-family:'IBM Plex Mono',ui-monospace,monospace!important;font-size:12px!important;letter-spacing:.08em!important}

/* The level change cut: a short fade to black between levels (everything resets behind it), then a title card. */
.cut{position:fixed;inset:0;z-index:90;background:#000;opacity:0;pointer-events:none;transition:opacity .4s}
.cut.on{opacity:1}
[data-theme=terminal] .ach.title{font-size:15px;padding:12px 18px}
@media (prefers-reduced-motion:reduce){.cut{transition:none}}

/* CLEAR THE BOARD (Pac-Man Maze only): the round button, the glitching Pac-Man crowd, the quake and the white-out; then
   html[data-clean] takes away only the distractions (the dotted pellet lines under stories and Pac-Man himself); the housing
   stays: blue edges, the lines between columns, the frames. */
.clr{display:none}
.glb{position:fixed;z-index:91;width:28px;height:28px;margin:-14px 0 0 -14px;pointer-events:none;background:linear-gradient(#3A2A1A 0 20%,#C9A86A 20% 28%,#3A2A1A 28% 64%,#C9A86A 64% 72%,#3A2A1A 72%)}
.glb.glp{animation:glp .12s steps(2) infinite}
.pac.glp{z-index:91;animation:glp .12s steps(2) infinite}
@keyframes glp{50%{transform:translate(6px,-4px) scale(1.4);filter:hue-rotate(160deg) saturate(3)}}
html.quake body>:not(.kb,.kd,.ks,.clrf,.glp){animation:quake .09s steps(2) infinite}
html.quake2 body>:not(.kb,.kd,.ks,.clrf,.glp){animation:quake2 .07s steps(2) infinite}
@keyframes quake{50%{transform:translate(4px,-3px)}}
@keyframes quake2{25%{transform:translate(-11px,6px) rotate(-.6deg)}75%{transform:translate(10px,-7px) rotate(.6deg)}}
.kb,.kd,.ks{position:fixed;z-index:93;pointer-events:none;border-radius:50%}
.kb{width:var(--s);height:var(--s);margin:calc(var(--s)/-2) 0 0 calc(var(--s)/-2);background:radial-gradient(circle,#FFF 0 18%,#FFFF00 30%,#FF5C2A 55%,#B3001B 70%,transparent 72%);animation:kb .5s ease-out forwards}
@keyframes kb{from{transform:scale(.1)}60%{opacity:1}to{transform:scale(1.25);opacity:0}}
.kd{width:7px;height:7px;margin:-3px 0 0 -3px;border-radius:0;animation:kd .7s cubic-bezier(.2,.7,.4,1) forwards}
@keyframes kd{to{transform:translate(var(--dx),var(--dy)) rotate(360deg);opacity:0}}
.ks{width:var(--s);height:var(--s);margin:calc(var(--s)/-2) 0 0 calc(var(--s)/-2);background:radial-gradient(circle,rgba(150,150,160,.85),rgba(90,90,100,.5) 45%,transparent 70%);filter:blur(6px);animation:ks 2.2s ease-out forwards}
@keyframes ks{from{transform:scale(.3);opacity:0}15%{opacity:1}to{transform:translateY(-90px) scale(1.6);opacity:0}}
.clrf{position:fixed;inset:0;z-index:92;background:#FFF;pointer-events:none;animation:clrf .9s ease-out forwards}
@keyframes clrf{from{opacity:1}to{opacity:0}}
html[data-clean][data-world=marquee] .pac,html[data-clean][data-world=marquee] .mzc,html[data-clean][data-world=marquee] #grid .sl li:has(>a[data-id])::after{display:none!important}
@media (prefers-reduced-motion:reduce){html.quake body>*,html.quake2 body>*{animation:none}.glp,.kb,.kd,.ks{display:none}}

/* Soothing palettes (owner, 2026-10-03): soft off-white text on deep tones for long reading. DEEP SEA opens Level 6.
   Never over a world (:not([data-world])): Pac-Man, Barrel Climb and 2600 keep their own colors. */
html[data-theme=terminal][data-lvpal=deepsea]:not([data-world]){--bg:#0F1E2E;--fg:#DCE8F2;--text-accent:#5CC8FF;--on-ac:#0A1622;--cd:#14283C;--hl:#1D3A57;--nw:#18324B;--hr:#25425E;--mu:#8FA8BF;--ib:#FFB454;--if:#0A1622;--dp:#9ADCFF}
html[data-theme=terminal][data-lvpal=forest]:not([data-world]){--bg:#132019;--fg:#E1EDE4;--text-accent:#7BD88F;--on-ac:#0C1611;--cd:#182A21;--hl:#22412F;--nw:#1D3628;--hr:#2A4A37;--mu:#94AE9C;--ib:#F2C14E;--if:#0C1611;--dp:#B5EBC0}
html[data-theme=terminal][data-lvpal=slate]:not([data-world]){--bg:#1B232C;--fg:#E6EAEE;--text-accent:#FF9F43;--on-ac:#141A21;--cd:#212B36;--hl:#2E3B4A;--nw:#273340;--hr:#34414F;--mu:#9AA6B2;--ib:#5CC8FF;--if:#141A21;--dp:#FFC48A}
html[data-theme=terminal][data-lvpal=teal]:not([data-world]){--bg:#0E2326;--fg:#DDEEEE;--text-accent:#2EC4B6;--on-ac:#0A1A1C;--cd:#132D31;--hl:#1A4246;--nw:#16383C;--hr:#21494E;--mu:#8DB0B0;--ib:#FFB454;--if:#0A1A1C;--dp:#7FE3D8}

/* PAC-MAN MAZE: a story whose floor is eaten shakes, then falls with gravity and fades before the gap closes. */
html[data-theme=terminal] #grid .sl li.mzshake{animation:mzshake .38s steps(6) both}
@keyframes mzshake{0%,100%{transform:none}20%{transform:translate(-3px,1px) rotate(-.6deg)}40%{transform:translate(3px,-1px) rotate(.6deg)}60%{transform:translate(-2px,2px)}80%{transform:translate(2px,0) rotate(.4deg)}}
html[data-theme=terminal] #grid .sl li.mzfall{position:relative;z-index:3;animation:mzfall .44s cubic-bezier(.55,0,1,.45) forwards}
@keyframes mzfall{to{transform:translateY(90px) rotate(var(--tilt,3deg));opacity:0}}
html[data-theme=terminal] #grid .sl li.drop.mzfall{transition:height .28s ease-out,padding .28s,margin .28s!important}
@media (prefers-reduced-motion:reduce){html[data-theme=terminal] #grid .sl li:is(.mzshake,.mzfall){animation:none;opacity:0}}
/* PAC-MAN MAZE outer column lines (owner): the screen-edge lines land in empty margin on wide screens, so the first and last
   columns carry their own outer line, matching the lines between columns. */
html[data-theme=terminal][data-world=marquee] #grid section.col:first-of-type{border-left:0}
html[data-theme=terminal][data-world=marquee] #grid section.col:last-of-type{border-right:0}

/* PAC-MAN MAZE teleport (a pause with no whole line to follow): he shrinks away, then pops in at the nearest uneaten story. */
@keyframes wpo{to{scale:0}}
@keyframes wpi{from{scale:0}to{scale:1}}
.pac.wpo{animation:wpo .18s steps(4) forwards}
.pac.wpi{animation:wpi .2s steps(4)}
@media (prefers-reduced-motion:reduce){.pac.wpo,.pac.wpi{animation:none}}
/* The spin of confusion before a teleport: faster and faster, then he is gone. */
@keyframes pspin{to{rotate:2160deg}}
.pac.spin{animation:pspin 1s cubic-bezier(.55,0,1,.7) forwards}
@media (prefers-reduced-motion:reduce){.pac.spin{animation:none}}

/* THE BOTTOM BAR, tidied (owner, 2026-10-03): every corner button is one height (36px), one curve (pill), one border and one type
   size, on two clean rows: left, SHARE over LEVEL; right, the big sound key in the corner with THE ARCADE beside it and CARTS above that. The BLAST button keeps the middle. */
html[data-theme=terminal]{--bb:36px}
html[data-theme=terminal] :is(.score,.shbtn,.carts,#th,#snd){box-sizing:border-box!important;display:flex!important;align-items:center;justify-content:center;height:var(--bb)!important;margin:0!important;padding:0 14px!important;border-width:2px!important;border-radius:18px!important;font:700 11px/1 'IBM Plex Mono',ui-monospace,monospace!important;letter-spacing:.12em!important;white-space:nowrap!important;box-shadow:0 3px 12px #00000066!important}
html[data-theme=terminal] :is(.score,.shbtn){left:12px!important;width:124px!important}
html[data-theme=terminal] .score{bottom:12px!important}
html[data-theme=terminal] .shbtn{bottom:56px!important}
/* The sound button is the one everybody hits (like the volume knob on a stereo), so it is the big one: a round double-ringed key in the corner,
   styled like BLAST. YELLOW = sound on, RED = sound off (like a stereo's mute light). No strike-through. */
html[data-theme=terminal] #snd{right:12px!important;bottom:12px!important;width:56px!important;height:56px!important;padding:0!important;border-radius:50%!important;font-size:26px!important;letter-spacing:0!important;text-decoration:none!important;opacity:1!important;cursor:pointer}
html[data-theme=terminal] #snd.on{background:#1f1d00!important;color:#FFFF00!important;border:3px solid #FFFF00!important;box-shadow:inset 0 0 0 3px #000,inset 0 0 0 5px #FFFF00,0 0 16px #FFFF0088,0 3px 12px #00000099!important;text-shadow:0 0 8px #FFFF00}
html[data-theme=terminal] #snd:not(.on){background:#2a0507!important;color:#FF3B3B!important;border:3px solid #FF3B3B!important;box-shadow:inset 0 0 0 3px #000,inset 0 0 0 5px #FF3B3B,0 0 14px #FF3B3B77,0 3px 12px #00000099!important;text-shadow:0 0 8px #FF3B3B}
html[data-theme=terminal] #snd.on:hover,html[data-theme=terminal] #snd.on:focus-visible{background:#FFFF00!important;color:#000!important;text-shadow:none}
html[data-theme=terminal] #snd:not(.on):hover,html[data-theme=terminal] #snd:not(.on):focus-visible{background:#FF3B3B!important;color:#000!important;text-shadow:none}
html[data-theme=terminal] #th{right:76px!important;bottom:22px!important}
html[data-theme=terminal] .carts{right:76px!important;bottom:66px!important}
/* Same buttons on every screen: on a narrow screen the BLAST button lifts above the two rows instead of the buttons shrinking. */

/* COLUMN CLIMB ENDING (owner, 2026-10-03): app.js collapse() runs these inline on every ramp, story and blast hole in view once the newsboy has exited stage right: shake, fall into a heap of rubble, clear, fade back. */
@keyframes dkshake{0%,100%{transform:translate(0,0) rotate(var(--r0,0deg))}25%{transform:translate(-4px,2px) rotate(calc(var(--r0,0deg) + 1.4deg))}50%{transform:translate(4px,-2px) rotate(calc(var(--r0,0deg) - 1.4deg))}75%{transform:translate(-3px,-2px) rotate(var(--r0,0deg))}}
@keyframes dkfall{from{transform:translate(0,0) rotate(var(--r0,0deg))}to{transform:translate(var(--dx,0),var(--dy,0)) rotate(var(--rot,0deg))}}
@keyframes dkclear{to{opacity:0}}
@keyframes dkback{from{opacity:0}to{opacity:1}}

/* RESET BLUE (RESET PLAY and classic play have no data-world at all; the 'moon' world is the same blue) and WIREVISION (the 'box' world): one rounded outer wire frame around the three columns plus a rounded hero frame, like Pac-Man's and Column Climber's outer edge (owner, 2026-10-03). It replaces the open 1px top rule; the dividers between columns stay, and so does everything else. Blue uses its palette's line color; the 2600 uses the cream of its hero ring. The thin rule that closed MOST READ is dropped so no second line sits above the frame. */
/* RESET PLAY: masthead yellow with teal and deep navy depth, matching the game carts' slant and headline size. */
html[data-theme=terminal]:not([data-calm]):is(:not([data-world]),[data-world=moon]) #lk{display:inline-block;font:400 clamp(34px,5vw,66px)/1 'Jersey 10',var(--t);letter-spacing:.02em;transform:skewX(-9deg);color:var(--text-accent);text-shadow:3px 3px 0 #357E80,6px 6px 0 #0B1628}
html[data-theme=terminal][data-world=moon] #grid,html[data-theme=terminal]:not([data-world]) #grid{border:3px solid var(--hr);border-radius:22px;padding:4px 0}
html[data-theme=terminal][data-world=box] #grid{border:3px solid #F4EEDC;border-radius:22px;padding:4px 0;margin-top:16px}
html[data-theme=terminal][data-world=moon] #mr,html[data-theme=terminal][data-world=box] #mr,html[data-theme=terminal]:not([data-world]) #mr{border-top:0;border-bottom:0;margin-top:28px}
/* ...and the ON THE WIRE hero frame keeps its curved corners in both (owner). #hero already clips its picture, so the picture follows the curve. */
html[data-theme=terminal][data-world=moon] #hero,html[data-theme=terminal][data-world=box] #hero,html[data-theme=terminal]:not([data-world]) #hero{border-radius:22px}
/* WIREVISION: the ON THE WIRE label (#hk) was #111 on the near-black hero, so it was invisible; a heading rule meant for the colored column bars caught it. Amber now, the color of its own glow (owner, 2026-10-03). */
html[data-theme=terminal][data-world=box] #hk{color:#FFB000}


/* SUBMIT A LINK: footer button + dialog (submit.js). Colors come from the page's variables so every theme works. */
.fsub{margin:10px 0 4px}
#page-share{font:700 12px/1 var(--m);letter-spacing:.12em;padding:10px 16px;background:transparent;color:var(--text-accent);border:2px solid var(--text-accent);border-radius:18px;cursor:pointer}
#page-share:hover,#page-share:focus-visible{background:var(--text-accent);color:var(--on-ac)}
.sbd{position:fixed;inset:0;z-index:200;background:#000000a8;display:flex;align-items:center;justify-content:center;padding:16px}
.sbx{position:relative;box-sizing:border-box;width:100%;max-width:420px;max-height:92vh;overflow:auto;background:var(--bg);color:var(--fg);border:2px solid var(--text-accent);border-radius:14px;padding:20px;font:14px/1.5 var(--m);text-align:left}
.sbx h2{margin:0 0 6px;font:700 19px/1.2 var(--m);color:var(--fg)}
.sbx .sbs{margin:0 0 14px;color:var(--fg)}
.sbx label{display:block;margin:0 0 10px;font-size:12px;letter-spacing:.04em;color:var(--mu,var(--fg))}
.sbx input{display:block;box-sizing:border-box;width:100%;margin-top:4px;padding:10px;background:var(--bg);color:var(--fg);border:1px solid var(--hr);border-radius:8px;font:14px var(--m)}
.sbx input:focus-visible,.sbx button:focus-visible{outline:2px solid var(--text-accent);outline-offset:2px}
.sbx .sbh{position:absolute;left:-9999px;width:1px;height:1px;opacity:0}
.sbx .sba{margin:4px 0 12px;padding:10px 12px;border:1px solid var(--hr);border-left:4px solid var(--text-accent);border-radius:0;font-size:12px;color:var(--fg)}
.sbx .sbm{min-height:20px;margin:0 0 8px;font-size:13px}.sbx .sbm.e{color:var(--text-accent)}
.sbx .sbr{display:flex;gap:8px;justify-content:flex-end}
.sbx .sbr button,.sbx>form>button{padding:10px 14px;font:700 12px/1 var(--m);letter-spacing:.08em;background:transparent;color:var(--fg);border:1px solid var(--hr);border-radius:18px;cursor:pointer}
.sbx .sbg,.sbx>form>.sbg{background:var(--text-accent);color:var(--on-ac);border-color:var(--text-accent)}
.sbx button:disabled{opacity:.6;cursor:default}
.sbx .sbc{position:absolute;top:10px;right:12px;padding:2px 8px;font:22px/1 var(--m);border:0;background:transparent;color:var(--fg);cursor:pointer}
html[data-theme=terminal] .sbx{border-radius:14px;box-shadow:0 0 0 3px #000,0 0 0 5px var(--text-accent)}
html[data-theme=terminal] :is(.sbx,.sbx input,.sbx button){font-family:"IBM Plex Mono",ui-monospace,Menlo,monospace;letter-spacing:0}html[data-theme=terminal] .sbx{font-size:15px}html[data-theme=terminal] .sbx label{font-size:13px}

/* Header entry for SUBMIT A LINK, Bauhaus-style: form follows function. A flat, hard-edged accent block (no pill, no outline tricks) sitting flush on the same baseline grid as the brand,
   left-aligned right after APNUNEWS with one fixed gap, so the top bar reads as two groups: [brand + action] on the left, [status + pause] on the right. The plus lives in its own square cell.
   Short form ("+ SUBMIT") on narrow screens so the bar never wraps because of it. */
#bar .bsub{display:inline-flex;align-items:center;gap:10px;margin:0 auto 0 14px;padding:0 12px 0 0;height:26px;font:700 11px/1 var(--m);letter-spacing:.16em;text-transform:uppercase;white-space:nowrap;background:var(--text-accent);color:var(--on-ac);border:0;border-radius:0;cursor:pointer}
#bar .bsub b{display:flex;align-items:center;justify-content:center;align-self:stretch;width:26px;font-size:16px;font-weight:700;border-right:1px solid color-mix(in srgb,var(--on-ac) 45%,transparent)}
#bar .bsub:hover,#bar .bsub:focus-visible{background:var(--fg);color:var(--bg)}
#bar .bsub:hover b,#bar .bsub:focus-visible b{border-right-color:color-mix(in srgb,var(--bg) 45%,transparent)}
[data-statusat=top] #desk{margin-right:0}
@media (max-width:700px){#bar .bsub .bl{display:none}}
/* Level won mid-climb (owner, 2026-10-04): the LEVEL badge pulses while the LEVEL UP! banner shows, then the newsboy dashes for the masthead. */
@keyframes lvpulse{0%,100%{transform:scale(1)}50%{transform:scale(1.35)}}
[data-theme=terminal] .score.lvup{animation:lvpulse .45s steps(4) 5;transform-origin:left bottom}
@media (prefers-reduced-motion:reduce){[data-theme=terminal] .score.lvup{animation:none}}

/* THE ROOM SWITCH (owner, 2026-10-04): a three-way segmented control with a sliding marker, bottom right on every look. Replaces the old cycling #th button (hidden, still driven by the theme code). */
html[data-theme] body #th{display:none!important}
#rooms{--w:48px;--hh:40px;position:fixed;right:12px;bottom:12px;z-index:50;display:grid;grid-template-columns:repeat(3,var(--w));height:var(--hh);padding:3px;box-sizing:content-box;border-radius:999px;border:1px solid color-mix(in srgb,var(--text-accent) 55%,transparent);background:color-mix(in srgb,var(--bg) 86%,transparent);-webkit-backdrop-filter:blur(12px) saturate(1.3);backdrop-filter:blur(12px) saturate(1.3);box-shadow:0 8px 26px #0000003d,inset 0 1px 0 #ffffff1f;isolation:isolate}
#rooms:before{content:"";position:absolute;z-index:-1;top:3px;bottom:3px;left:3px;width:var(--w);border-radius:999px;background:var(--text-accent);box-shadow:0 2px 10px color-mix(in srgb,var(--text-accent) 55%,transparent);transform:translateX(calc(var(--i,0)*var(--w)));transition:transform .5s cubic-bezier(.5,0,.15,1)}
#rooms button{position:relative;display:flex;align-items:center;justify-content:center;gap:7px;min-width:0;margin:0;padding:0 6px;border:0;border-radius:999px;background:none;color:var(--text-accent);font:700 10px/1 var(--m,ui-monospace,monospace);letter-spacing:.14em;white-space:nowrap;cursor:pointer;transition:color .3s}
#rooms button svg{flex:none;width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
#rooms button[data-t=terminal] svg circle,#rooms button[data-t=terminal] svg rect{fill:currentColor;stroke:none}
#rooms button[aria-checked=true]{color:var(--on-ac)}
#rooms button:not([aria-checked=true]):hover{color:var(--fg)}
#rooms button:focus-visible{outline:2px solid var(--text-accent);outline-offset:3px}
/* The invitation: while you are outside the Arcade, its segment wears a small pulsing PLAY badge. */
#rooms .rtag{position:absolute;top:-9px;right:6px;padding:3px 6px 2px;border-radius:7px;background:#FFD400;color:#111;font:800 8px/1 var(--m,ui-monospace,monospace);letter-spacing:.14em;font-style:normal;box-shadow:0 2px 8px #0000004d;animation:rtag 1.8s ease-in-out infinite}
#rooms button[aria-checked=true] .rtag{display:none}
@keyframes rtag{0%,100%{transform:translateY(0)}50%{transform:translateY(-3px)}}
@media (prefers-reduced-motion:reduce){#rooms:before{transition:none}#rooms .rtag{animation:none}}
/* In the Arcade the sound key owns the corner: the switch sits beside it, on the same baseline as the old button. */
html[data-theme=terminal] #rooms{--hh:36px;right:76px;bottom:20px}
/* Icons only on every screen (owner, 2026-10-04: the phone version was the best; use it site wide): the marker shows the room you are in, the tooltip and screen-reader label name it, the PLAY badge stays on the Arcade. */
#rooms button span{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}#rooms button{padding:0}

/* Hide game actors during cinematic entry, then resume on the settled page. */
html.zoomy :is(.pac,.mzc,canvas.pr,canvas.hole,canvas.boom){visibility:hidden!important}

/* LOCK ICON (Arcade only): a round padlock button beside the LEVEL pill, same pill styling as SHARE; its note appears only after a click. */
#wlock,#wlockn{display:none}
[data-theme=terminal] #wlock{display:block;position:fixed;left:144px;bottom:12px;z-index:50;width:36px;height:36px;padding:0;border:2px solid var(--text-accent);border-radius:18px;background:var(--bg);color:var(--text-accent);font:700 15px/1 'IBM Plex Mono',ui-monospace,monospace;box-shadow:0 3px 12px #0006;cursor:pointer}
[data-theme=terminal] #wlock.on,[data-theme=terminal] #wlock:hover,[data-theme=terminal] #wlock:focus-visible{background:var(--text-accent);color:var(--on-ac)}
[data-theme=terminal] #wlockn{display:block;position:fixed;left:144px;bottom:56px;z-index:51;max-width:260px;padding:8px 14px;border:2px solid var(--text-accent);border-radius:18px;background:var(--bg);color:var(--fg);font:700 11px/1.35 'IBM Plex Mono',ui-monospace,monospace;letter-spacing:.06em;box-shadow:0 3px 12px #0006;opacity:0;pointer-events:none;transition:opacity .25s}
[data-theme=terminal] #wlockn.on{opacity:1}

/* ON THE WIRE / BREAKING label (#hk) was dark on dark in the News Nibbler and Column Climber worlds (the arcade ink color matched their card; contrast 1:1). Light colors there; the other worlds already read (owner, 2026-10-04). */
html[data-theme=terminal][data-world=marquee] #hk{color:#FFE14D}
html[data-theme=terminal][data-world=ad] #hk{color:#F4EEDC}
/* Same label in the light-ink SLEEP CHAMBER palettes (Glacier, Lagoon, Aurora): their --ib is a dark ink, so the label vanished (1.1:1). Their own accent color, with a matching glow. */
html[data-theme=terminal]:is([data-lvpal=glacier],[data-lvpal=lagoon],[data-lvpal=aurora]) #hk{color:var(--text-accent)}
/* Every Arcade world and palette: the ON THE WIRE / BREAKING label glows in its own color, kept faint so small pixel type stays crisp in Firefox too (owner, 2026-10-04). */
html[data-theme=terminal] #hk{text-shadow:0 0 4px color-mix(in srgb,currentColor 40%,transparent)}

/* WIREVISION BLAST / REBUILD (see app.js): same round button as the other worlds, in the 2600's amber and cream. Pieces fly out, land as rubble, then fly back. */
.bx{display:none}
.bxr,.bxr *{pointer-events:none!important}
@keyframes bxfly{0%{transform:translate(0,0) rotate(var(--r0,0deg)) scale(1);animation-timing-function:cubic-bezier(.1,.8,.3,1)}35%{transform:translate(calc(var(--dx)*.6),var(--up)) rotate(calc(var(--rot)*.4)) scale(1.06);animation-timing-function:cubic-bezier(.5,0,1,.7)}100%{transform:translate(var(--dx),var(--dy)) rotate(var(--rot)) scale(var(--sc,1))}}

/* PHONES (owner, 2026-10-04): the arcade's corner gear is for a mouse and a big screen. On a phone (narrow, or a short landscape touch screen) the BLAST buttons, the lock and its note, SHARE and the LEVEL pill all go; what's left is CARTS, the theme key and the sound key. */
@media (max-width:620px),(pointer:coarse) and (max-height:520px){html[data-theme=terminal] :is(.clr,.bx,#wlock,#wlockn,.shbtn,.score){display:none!important}}

/* BLAST (owner, 2026-10-04): the right half of a double pill with SHARE, same glass as every other key. All Arcade worlds blow the whole page up through the shared control (.bx). REBUILD swaps the burst for a rebuild arrow and fills the pill. */
html[data-theme=terminal] .bx{display:flex}
html[data-theme=terminal]:not(#x) :is(.clr,.bx){flex-direction:row;align-items:center;justify-content:center;gap:8px;position:fixed;left:108px;right:auto;bottom:12px;z-index:60;box-sizing:border-box;width:140px;height:44px;margin:0;padding:0 16px 0 12px;border:var(--gl-rim);border-left:0;border-radius:0 999px 999px 0;background:var(--gl-bg);-webkit-backdrop-filter:blur(12px) saturate(1.3);backdrop-filter:blur(12px) saturate(1.3);color:#FFA02E;font:700 11px/1 'IBM Plex Mono',ui-monospace,monospace;letter-spacing:.14em;text-indent:0;cursor:pointer;box-shadow:var(--gl-sh);transition:background .2s,color .2s,box-shadow .2s}
html[data-theme=terminal] :is(.clr,.bx)::before{content:'';width:20px;height:20px;margin:0;background:currentColor;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 1.5l2.3 6.2 5.6-3.1-2.6 6 6.2 1.4-5.6 3.2 3 5.3-6-1.7L12 22.5l-2.3-6.4-6 1.7 3-5.3L1.1 15l6.2-1.4-2.6-6 5.6 3.1z'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 1.5l2.3 6.2 5.6-3.1-2.6 6 6.2 1.4-5.6 3.2 3 5.3-6-1.7L12 22.5l-2.3-6.4-6 1.7 3-5.3L1.1 15l6.2-1.4-2.6-6 5.6 3.1z'/%3E%3C/svg%3E") center/contain no-repeat;filter:drop-shadow(0 0 5px currentColor);transform-origin:50% 50%;animation:flick 1.6s ease-in-out infinite}
@keyframes flick{0%,100%{transform:scale(1) rotate(0)}50%{transform:scale(1.14) rotate(12deg)}}
html[data-theme=terminal]:not(#x) :is(.clr,.bx):hover:not(:disabled),html[data-theme=terminal]:not(#x) :is(.clr,.bx):focus-visible{background:linear-gradient(#FFB02E,#FF6A1F);color:#2a0d00;box-shadow:var(--gl-sh),0 0 22px #FF8A1F66}
html[data-theme=terminal] :is(.clr,.bx):hover:not(:disabled)::before{filter:none}
html[data-theme=terminal]:not(#x) :is(.clr,.bx):focus-visible{outline:2px solid var(--text-accent);outline-offset:3px}
html[data-theme=terminal]:not(#x) :is(.clr.back,.bx.back){background:linear-gradient(#FFB02E,#FF6A1F);color:#2a0d00}
html[data-theme=terminal] .bx.back::before{background:currentColor;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 4a8 8 0 1 0 8 8h-3a5 5 0 1 1-5-5v3l5-4-5-4z'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 4a8 8 0 1 0 8 8h-3a5 5 0 1 1-5-5v3l5-4-5-4z'/%3E%3C/svg%3E") center/contain no-repeat;filter:none;animation:none;width:18px;height:18px}
html[data-theme=terminal] :is(.clr,.bx):disabled{opacity:.65;cursor:default}
@media (prefers-reduced-motion:reduce){html[data-theme=terminal] :is(.clr,.bx)::before{animation:none}html[data-theme=terminal] :is(.clr,.bx){transition:none}}
html.quake body>:not(.kb,.kd,.ks,.clrf,.glp,.bfx,#vcr,.bbar){animation:quake .09s steps(2) infinite}
html.quake2 body>:not(.kb,.kd,.ks,.clrf,.glp,.bfx,#vcr,.bbar){animation:quake2 .07s steps(2) infinite}

/* The LEVEL pill is a button with two jobs (level + cart) and it opens the CARTS menu, so the separate CARTS key goes (phones keep it: they have no pill). Pills are a little wider to fit "LEVEL 12 · CLIMBER". */
html[data-theme=terminal] button#carts{display:none!important}
@media (max-width:620px),(pointer:coarse) and (max-height:520px){html[data-theme=terminal] .cartm{left:auto!important;right:12px!important;bottom:104px!important}}

/* THE CORNER KEYS, one design (owner, 2026-10-04): everything is glass in the theme switcher's own language (same hairline accent rim, same blur, same shadow, same 44px height), so nothing looks borrowed from another app.
   Left: SHARE over the theme-name pill (which opens CARTS) with the lock beside it. Right: the theme switcher and the sound key (ON fills with the accent like the switcher's active segment, OFF is a red note). Bottom center: the BLAST disc, the one loud key. */
html[data-theme=terminal]{--gl-bg:color-mix(in srgb,var(--bg) 86%,transparent);--gl-rim:1px solid color-mix(in srgb,var(--text-accent) 55%,transparent);--gl-sh:0 8px 26px #0000003d,inset 0 1px 0 #ffffff1f}
html[data-theme=terminal]:not(#x) button.score{display:none!important}
html[data-theme=terminal]:not(#x) .shbtn{box-sizing:border-box!important;height:44px!important;width:96px!important;min-width:0!important;padding:0!important;border:var(--gl-rim)!important;border-radius:999px 0 0 999px!important;background:var(--gl-bg)!important;color:var(--text-accent)!important;-webkit-backdrop-filter:blur(12px) saturate(1.3);backdrop-filter:blur(12px) saturate(1.3);box-shadow:var(--gl-sh)!important;font:700 11px/1 'IBM Plex Mono',ui-monospace,monospace!important;letter-spacing:.14em!important;left:12px!important;bottom:12px!important;text-shadow:none!important}
html[data-theme=terminal]:not(#x) .shbtn:is(:hover,:focus-visible){background:var(--text-accent)!important;color:var(--on-ac)!important}
html[data-theme=terminal] #wlock{left:256px;bottom:12px;width:44px;height:44px;border:var(--gl-rim);background:var(--gl-bg);color:var(--text-accent);-webkit-backdrop-filter:blur(12px) saturate(1.3);backdrop-filter:blur(12px) saturate(1.3);box-shadow:var(--gl-sh)}
html[data-theme=terminal] #wlock:is(.on,:hover,:focus-visible){background:var(--text-accent);color:var(--on-ac)}
html[data-theme=terminal] #wlockn{left:12px;bottom:64px;max-width:min(300px,calc(100vw - 24px));border:var(--gl-rim);background:var(--gl-bg);-webkit-backdrop-filter:blur(12px) saturate(1.3);backdrop-filter:blur(12px) saturate(1.3);box-shadow:var(--gl-sh)}
html[data-theme=terminal] #rooms{right:64px!important;bottom:12px!important}
html[data-theme=terminal] #snd:is(.on,:not(.on)){right:12px!important;left:auto!important;bottom:12px!important;width:44px!important;height:44px!important;padding:0!important;border:var(--gl-rim)!important;border-radius:50%!important;background:var(--gl-bg)!important;-webkit-backdrop-filter:blur(12px) saturate(1.3);backdrop-filter:blur(12px) saturate(1.3);box-shadow:var(--gl-sh)!important;font-size:20px!important;text-shadow:none!important}
html[data-theme=terminal] #snd.on{background:var(--text-accent)!important;color:var(--on-ac)!important}
html[data-theme=terminal] #snd:not(.on){color:#FF6B6B!important}
html[data-theme=terminal] .cartm{border:var(--gl-rim)!important;border-radius:18px!important;overflow:hidden;background:var(--gl-bg)!important;-webkit-backdrop-filter:blur(14px) saturate(1.3);backdrop-filter:blur(14px) saturate(1.3);box-shadow:var(--gl-sh);right:12px!important;left:auto!important;bottom:68px!important}
html[data-theme=terminal] :is(.clr,.bx){bottom:12px}

/* PHONES, the bottom keys (owner, 2026-10-04): one centered row of three glass pieces in the theme switcher's own style (same height, same hairline rim, same blur): CARTS, the theme switcher, the sound key.
   Sound ON fills with the accent like the switcher's active segment; OFF is a red glyph on glass. The row slides away while reading down and returns on scroll up (html.ctlh). */
@media (max-width:620px),(pointer:coarse) and (max-height:520px){
html[data-theme=terminal]{--c:calc(50vw - 52px);--gl-bg:color-mix(in srgb,var(--bg) 86%,transparent);--gl-rim:1px solid color-mix(in srgb,var(--text-accent) 55%,transparent)}
html[data-theme=terminal] #rooms{left:calc(var(--c) - 76px)!important;right:auto!important;bottom:12px!important}
/* The joystick segment of the theme switcher opens the themes list, so the separate CARTS key is gone on phones too (it stays in the DOM, hidden, because the switcher opens the menu through it). */
html[data-theme=terminal] button#carts{display:none!important}
html[data-theme=terminal] #snd:is(.on,:not(.on)){left:calc(var(--c) + 84px)!important;right:auto!important;bottom:12px!important;width:44px!important;height:44px!important;border:var(--gl-rim)!important;border-radius:50%!important;background:var(--gl-bg)!important;-webkit-backdrop-filter:blur(12px) saturate(1.3);backdrop-filter:blur(12px) saturate(1.3);box-shadow:0 8px 26px #0000003d,inset 0 1px 0 #ffffff1f!important;font-size:20px!important;text-shadow:none!important}
html[data-theme=terminal] #snd.on{background:var(--text-accent)!important;color:var(--on-ac)!important}
html[data-theme=terminal] #snd:not(.on){color:#FF6B6B!important}
html[data-theme=terminal] .cartm{left:max(10px,calc(var(--c) - 76px))!important;right:auto!important;bottom:68px!important}
html[data-theme=terminal] body{padding-bottom:76px}
html[data-theme=terminal] :is(#snd,#rooms,#joyp){transition:transform .28s cubic-bezier(.3,.8,.3,1),opacity .2s}
html.ctlh[data-theme=terminal] :is(#snd,#rooms,#joyp){transform:translateY(90px)!important;opacity:0;pointer-events:none}}
@media (prefers-reduced-motion:reduce){html[data-theme=terminal] :is(#snd,#rooms){transition:none}}

/* BLAST shows (blast.js): two full-screen canvases (WebGL fire + 2D sprites), a glass readout, cinema letterbox bars. Controls (z 50-60) stay under the canvases' pointer-events:none, so REBUILD is always clickable. */
.bfx{position:fixed;inset:0;width:100vw;height:100vh;z-index:94;pointer-events:none}.bfx.px{image-rendering:pixelated}
#vcr{position:fixed;top:78px;left:22px;z-index:95;display:flex;flex-direction:column;gap:0;font:400 24px/1 VT323,'IBM Plex Mono',monospace;letter-spacing:.06em;color:#fff;text-shadow:1px 0 #FF2E63,-1px 0 #00E5FF,0 0 6px #ffffff88;opacity:0;pointer-events:none;mix-blend-mode:screen}
#vcr.on{opacity:1;animation:vflick .09s steps(2) infinite}#vcr b{font-weight:400;color:#7CFF9B;text-shadow:0 0 6px #7CFF9B}
#vcr.g{color:#9FF;text-shadow:3px 0 #FF2E63,-3px 0 #00E5FF;transform:translateX(2px) skewX(-6deg)}#vcr.g span{clip-path:inset(0 0 0 0)}
@keyframes vflick{0%{transform:translateY(0)}50%{transform:translateY(1px)}}
.bbar{position:fixed;left:0;right:0;height:0;background:#000;z-index:45;transition:height .7s cubic-bezier(.2,.8,.2,1);pointer-events:none}.bbar.t{top:0}.bbar.b{bottom:0}.bbar.on{height:9vh}
@media (max-width:620px){#vcr{top:70px;left:12px;font-size:20px}}

/* SLEEP CHAMBER is the calm room (owner, 2026-10-04): no BLAST and no SHARE there, only the lock (it freezes the color set), which slides over to take their place. */
html[data-calm][data-theme=terminal]:not(#x) :is(.shbtn,.bx,.clr){display:none!important}
/* Owner (2026-10-07): no visible pause button throughout Arcade. Keep the DOM hook for existing animation code. */
html[data-theme=terminal]:not(#x) #rp{display:none!important}
html[data-calm][data-theme=terminal] #wlock{left:12px}
html[data-calm][data-theme=terminal] #wlockn{left:12px}

/* The blast field: the Asteroids window sits BEHIND the rubble (the grid lifts above it while it is blown up) and the page can't scroll out from under it. */
[data-theme=terminal] .hole.fld{z-index:3}
[data-theme=terminal] #grid.bxr{position:relative;z-index:6}
html.fldl{overflow:hidden}
/* The transparent field may reveal deliberate rubble, never untouched or newly inserted news. */
html.fldl[data-theme=terminal] #grid{visibility:hidden}
html.fldl[data-theme=terminal] #grid .bx-piece{visibility:visible}
html[data-rubble][data-theme=terminal] #grid .more-preview{visibility:hidden!important}
html[data-rubble][data-theme=terminal] #grid .more-preview *{visibility:hidden!important}

/* The console canvas sits above the rubble (grid z 6) and the field (z 3), under every control (z 50+). */
#bcon{position:fixed;inset:0;width:100vw;height:100vh;z-index:8;pointer-events:none}
/* TOUCH JOYSTICK PILL (tablets and phones): one glass circle in the bottom row, same family as the sound key; the pad appears only while the Asteroids field is up. */
#joyp,#joypad{display:none}
@media (pointer:coarse){html[data-theme=terminal]:not([data-calm]) #joyp{display:none;align-items:center;justify-content:center;position:fixed;right:224px;bottom:12px;z-index:50;width:44px;height:44px;padding:0;border:var(--gl-rim);border-radius:50%;background:var(--gl-bg);color:var(--text-accent);-webkit-backdrop-filter:blur(12px) saturate(1.3);backdrop-filter:blur(12px) saturate(1.3);box-shadow:var(--gl-sh);cursor:pointer}
html.fldl[data-theme=terminal]:not([data-calm]) #joyp{display:flex}
html[data-theme=terminal] #joyp svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}html[data-theme=terminal] #joyp svg circle,html[data-theme=terminal] #joyp svg rect{fill:currentColor;stroke:none}
html[data-theme=terminal] #joyp.on{background:var(--text-accent);color:var(--on-ac)}
html.joyopen[data-theme=terminal]:not([data-calm]) #joypad{display:flex;position:fixed;left:12px;right:12px;bottom:68px;z-index:49;justify-content:space-between;align-items:flex-end;pointer-events:none}
#joypad>div{display:flex;gap:8px;pointer-events:auto;align-items:flex-end}#joypad>div:last-child{flex-direction:column;align-items:flex-end;gap:8px}#joypad>div:last-child>div{display:flex;gap:8px}
#joypad button{box-sizing:border-box;min-width:64px;height:44px;padding:0 16px;border:var(--gl-rim);border-radius:999px;background:var(--gl-bg);color:var(--text-accent);-webkit-backdrop-filter:blur(12px) saturate(1.3);backdrop-filter:blur(12px) saturate(1.3);box-shadow:var(--gl-sh);font:700 11px/1 'IBM Plex Mono',ui-monospace,monospace;letter-spacing:.12em;touch-action:none;-webkit-user-select:none;user-select:none;cursor:pointer}
#joypad button.on{background:var(--text-accent);color:var(--on-ac)}#joypad button.rb{min-width:0;height:34px;padding:0 14px;font-size:10px;letter-spacing:.14em}}
@media (pointer:coarse) and (max-width:620px),(pointer:coarse) and (max-height:520px){html[data-theme=terminal]:not([data-calm]) #joyp{display:flex;left:calc(var(--c) + 136px);right:auto}}

/* The blown-up page (owner, 2026-10-04): (1) no frame lines. The grid's cream frame and the dark column dividers vanish in every theme while the rubble is up, so the Asteroids field and the console are the only lines on screen. */
html #grid.bxr{border-color:transparent!important;box-shadow:none!important;outline:0!important}
html #grid.bxr .col,html #grid.bxr section.col,html #grid.bxr .col+.col{border-color:transparent!important}
/* (2) The pre-blast pills step aside while the field is up (theme switcher, SHARE, the lock): they slide down and fade, and REBUILD, the one pill still needed, slides over to sit beside the sound key. On phones the switcher
   goes and the sound key and the joystick pill re-center. They return the moment the field closes. */
html[data-theme=terminal] :is(#rooms,.shbtn,#wlock,#wlockn,.bx){transition:transform .38s cubic-bezier(.3,.8,.3,1),opacity .28s,left .38s cubic-bezier(.3,.8,.3,1),right .38s cubic-bezier(.3,.8,.3,1),background .2s,color .2s}
html.fldl[data-theme=terminal]:not(#x) :is(#rooms,#wlock,#wlockn){opacity:0!important;transform:translateY(90px)!important;pointer-events:none!important}
html.fldl[data-theme=terminal]:not(#x) .bx.bx{left:auto;right:64px;border:var(--gl-rim);border-radius:999px;width:132px}
@media (max-width:620px),(pointer:coarse) and (max-height:520px){html.fldl[data-theme=terminal]{--c:calc(50vw - 136px)}}

/* SHARE stays while the blast field is up (it is the peak of the visit) and stands alone as a full pill; the nudge is one soft ring pulse (the arrival nudge on BLAST / the joystick pill, the share pulse at game over). */
html.fldl[data-theme=terminal]:not(#x) .shbtn.shbtn{border-radius:999px!important}
@keyframes nudge{0%{box-shadow:var(--gl-sh),0 0 0 0 rgba(255,160,46,.75)}70%{box-shadow:var(--gl-sh),0 0 0 16px rgba(255,160,46,0)}100%{box-shadow:var(--gl-sh),0 0 0 0 rgba(255,160,46,0)}}
html[data-theme=terminal] :is(.bx,.clr,.shbtn,#joyp).nudge{animation:nudge 1.6s ease-out 4}
@media (prefers-reduced-motion:reduce){html[data-theme=terminal] :is(.bx,.clr,.shbtn,#joyp).nudge{animation:none;box-shadow:var(--gl-sh),0 0 0 4px rgba(255,160,46,.6)}}
/* Tablets already have a REBUILD / REWIND key beside sound; only phones need the pad copy. */
#joypad .rb{display:none}
@media (max-width:620px),(pointer:coarse) and (max-height:520px){#joypad .rb{display:block}}
#joypad .sp{display:none}@media (max-width:620px){#joypad .sp{display:block}#joypad>div:last-child>div:first-child{display:flex;gap:8px}}
#joypad button.sp{min-width:0;height:34px;padding:0 14px;font-size:10px;letter-spacing:.14em}

/* WIREVISION locks itself (owner, 2026-10-04: "remove the lock from WireVision and lock it automatically"): level-ups never change its room, colors or sounds, so the manual padlock has nothing to do there and is not shown. */
html[data-world=box][data-theme=terminal]:not(#x) :is(#wlock,#wlockn){display:none!important}

/* SLEEP CHAMBER 1-13 in the CARTS menu: a compact grid of numbers, each in its own palette's accent color; the picked one is ringed. The menu scrolls on short screens. */
html[data-theme=terminal] .cartm{max-height:min(82vh,640px);overflow:auto}
.cartm .scs{padding:10px 10px 12px;border-top:1px solid var(--hr)}
.cartm .scs b{display:block;margin:0 0 9px;font:700 10px/1 'IBM Plex Mono',ui-monospace,monospace;letter-spacing:.14em;color:var(--fg);opacity:.75}
.cartm .scg{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}
.cartm .scg button{padding:8px 0!important;border:1px solid currentColor!important;border-radius:8px;text-align:center;font:700 13px/1 'IBM Plex Mono',ui-monospace,monospace!important;letter-spacing:0!important;background:none!important;text-shadow:0 0 8px currentColor}
.cartm .scg button:hover,.cartm .scg button:focus-visible{background:color-mix(in srgb,currentColor 24%,transparent)!important}
.cartm .scg button.on{box-shadow:inset 0 0 0 2px currentColor,0 0 10px color-mix(in srgb,currentColor 50%,transparent);background:color-mix(in srgb,currentColor 16%,transparent)!important}
.cartm .scg button.on::before{content:none!important}
/* The calm room needs no padlock: a pick holds its color. */
html[data-calm][data-theme=terminal]:not(#x) :is(#wlock,#wlockn){display:none!important}

.shr input{box-sizing:border-box;width:100%;padding:8px;color:var(--fg);background:var(--bg);border:1px solid var(--text-accent);font:13px/1.4 var(--m)}

/* Editorial highlight in Live Wires; never an indicator of a live broadcast. */
.ln .wire-badge{display:inline-block;vertical-align:middle;padding:2px 4px;border:1px solid currentColor;border-radius:3px;color:var(--text-accent);font:700 9px/1.2 var(--m);letter-spacing:.04em;white-space:nowrap}

/* Keep directory and X names with their fading chevrons. */
.ln a.wire-chevrons{display:inline}
.ln .wire-name{white-space:nowrap}
.ln .wire-chevron{color:var(--text-accent);line-height:inherit;white-space:nowrap}
.ln .wire-chevron>span:nth-child(2){opacity:.75}
.ln .wire-chevron>span:nth-child(3){opacity:.5}
.ln .wire-chevron>span:nth-child(4){opacity:.25}

.ln .wire-featured{color:var(--text-accent);font-size:.7em;vertical-align:super;line-height:0}

/* Layered cinematic entrances: temporary GPU and film canvases never intercept controls. */
.entry-tv-screen,.entry-film{position:fixed;inset:0;width:100%;height:100%;z-index:9999;pointer-events:none}
@media(prefers-reduced-motion:reduce){.entry-tv-screen,.entry-film{display:none}}

/* The climbing cast pauses while its own girders play through the shared cinema tape. */
html[data-theme=terminal][data-world=ad][data-rubble] .pr{display:none!important}

/* A hovered carousel control keeps its viewport position as story text reflows. */
#hw .hf.hf-held{position:fixed;left:var(--hf-x);right:auto;top:var(--hf-y);margin-top:0}

/* The familiar top-left brand returns to the Newsprint front page. */
#bar #wire-home{display:inline-flex;align-items:center;padding:0;color:var(--fg);text-decoration:none;flex-shrink:0}
#wire-home:focus-visible{outline:2px solid var(--text-accent);outline-offset:5px}

/* Touch Meteor Wire: one persistent exit, automatic flight pad, no duplicate joystick/share controls. */
@media (pointer:coarse){
html.fldl[data-theme=terminal]:not(#x) #joyp,
html.fldl[data-theme=terminal]:not(#x) .bx,
html.fldl[data-theme=terminal]:not(#x) .shbtn,
html.fldl[data-theme=terminal]:not(#x) #joypad .sp{display:none!important}
html.fldl[data-theme=terminal]:not(#x) #joypad{display:flex;position:fixed;left:max(12px,env(safe-area-inset-left));right:max(12px,env(safe-area-inset-right));bottom:calc(68px + env(safe-area-inset-bottom));z-index:80;justify-content:space-between;align-items:flex-end;pointer-events:none}
html.fldl[data-theme=terminal]:not(#x) #joypad .rb{display:block;position:fixed;top:calc(12px + env(safe-area-inset-top));right:max(12px,env(safe-area-inset-right));height:44px;min-width:112px;pointer-events:auto}
#joypad button{min-width:56px;padding:0 12px}
html.fldl.ctlh[data-theme=terminal]:not(#x) #snd{transform:none!important;opacity:1;pointer-events:auto}
}

/* Keep the approved live ticker; other Sleep Chamber type uses its original rules. */
html[data-theme=terminal][data-calm] #lv{font-size:inherit;line-height:1.3}
html[data-theme=terminal][data-calm] #lt{font:400 clamp(34px,3.3vw,42px)/1.15 VT323,"IBM Plex Mono",monospace;letter-spacing:0;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;text-shadow:none}
html[data-theme=terminal][data-calm] #lk .cur{font-size:24px}
html[data-theme=terminal][data-calm] #tick{--tape-ink:#FFD27A;--tape-label:#D8B878;background:none;border-bottom-color:var(--hr)}
html[data-theme=terminal][data-calm] :is(#lv,#lt){color:var(--tape-ink);text-shadow:none}
html[data-theme=terminal][data-calm] #lg{color:var(--tape-label)}
html[data-theme=terminal][data-calm] #lk .cur{background:var(--tape-ink)}
html[data-theme=terminal][data-calm] #lk:hover #lt{color:#FFE4AF}
html[data-theme=terminal][data-calm] #lg{font:500 12px/1.4 "IBM Plex Mono",monospace;letter-spacing:.04em;-webkit-font-smoothing:antialiased;text-shadow:none;color:var(--tape-label)}

/* Sleep Chamber LED wire: static CSS light grid, palette-matched and no added render loop. */
html:is([data-theme=dark],[data-theme=terminal][data-calm]){--led-from:#071D51;--led-to:#070B28;--led-dot:rgba(73,136,255,.35);--led-lit:#D6FEFF;--led-ink:#C4FAFF;--led-glow:#45DCEB88;--led-label:#8DAFCE}
html[data-theme=terminal][data-calm][data-lvpal=vapor]{--led-from:#32144B;--led-to:#120923;--led-dot:#BB65FF59;--led-lit:#FFE5F8;--led-ink:#FFD1F0;--led-glow:#FF6EC788;--led-label:var(--mu)}
html[data-theme=terminal][data-calm][data-lvpal=deepsea]{--led-from:#08264B;--led-to:#040E24;--led-dot:#378DFF59;--led-lit:#D9F5FF;--led-ink:#BEEBFF;--led-glow:#5CC8FF88;--led-label:var(--mu)}
html[data-theme=terminal][data-calm][data-lvpal=slate]{--led-from:#202C40;--led-to:#0D1420;--led-dot:#7BA1C459;--led-lit:#FFF0D9;--led-ink:#FFE4BA;--led-glow:#FF9F4388;--led-label:var(--mu)}
html[data-theme=terminal][data-calm][data-lvpal=forest]{--led-from:#102F23;--led-to:#07150F;--led-dot:#42B47759;--led-lit:#E1FFE7;--led-ink:#C8F5D2;--led-glow:#7BD88F88;--led-label:var(--mu)}
html[data-theme=terminal][data-calm][data-lvpal=teal]{--led-from:#06323B;--led-to:#04151A;--led-dot:#2EC4B659;--led-lit:#D8FFFA;--led-ink:#B9F7EE;--led-glow:#2EC4B688;--led-label:var(--mu)}
html[data-theme=terminal][data-calm][data-lvpal=tron]{--led-from:#032A46;--led-to:#020C19;--led-dot:#00BBDD59;--led-lit:#D5FCFF;--led-ink:#B9F8FF;--led-glow:#00E5FF88;--led-label:var(--mu)}
html[data-theme=terminal][data-calm][data-lvpal=synth]{--led-from:#281044;--led-to:#0C0824;--led-dot:#9B55FF59;--led-lit:#FFE1F2;--led-ink:#FFC9E3;--led-glow:#FF2E8888;--led-label:var(--mu)}
html[data-theme=terminal][data-calm][data-lvpal=ember]{--led-from:#3A140C;--led-to:#160805;--led-dot:#DF542E59;--led-lit:#FFE8CE;--led-ink:#FFD6A8;--led-glow:#FF4D1A88;--led-label:var(--mu)}
html[data-theme=terminal][data-calm][data-lvpal=amber]{--led-from:#352400;--led-to:#130D00;--led-dot:#CC921F59;--led-lit:#FFF0C5;--led-ink:#FFE4A0;--led-glow:#FFD27A88;--led-label:var(--mu)}
html:is([data-theme=dark],[data-theme=terminal][data-calm]) #tick{background:none;border:0;padding:10px 0 14px}
html:is([data-theme=dark],[data-theme=terminal][data-calm]) #lg{margin-bottom:10px;color:var(--led-label)}
html:is([data-theme=dark],[data-theme=terminal][data-calm]) #lk{display:block;position:relative;border:3px solid #080E19;border-radius:12px;padding:18px 18px 20px;background-color:var(--led-to);background-image:radial-gradient(circle,var(--led-dot) .65px,transparent .9px),linear-gradient(110deg,var(--led-from),var(--led-to));background-size:3px 3px,100% 100%;box-shadow:inset 0 2px 7px #000,inset 0 -1px 0 #296390,0 1px 0 #44505E,0 4px 12px #0003}
html:is([data-theme=dark],[data-theme=terminal][data-calm]) #lt{color:var(--led-ink);text-shadow:none;background-image:radial-gradient(circle,var(--led-lit) 1px,transparent 1.2px);background-size:3px 3px;background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent;filter:drop-shadow(0 0 2px var(--led-glow))}
html:is([data-theme=dark],[data-theme=terminal][data-calm]) #lk .cur{background:radial-gradient(circle,var(--led-ink) 1px,transparent 1.2px);background-size:3px 3px}
@media(forced-colors:active){html:is([data-theme=dark],[data-theme=terminal][data-calm]) #lt{background:none;-webkit-text-fill-color:currentColor;filter:none}html:is([data-theme=dark],[data-theme=terminal][data-calm]) #lk .cur{background:currentColor}}
/* Night Shift shares Glacier's LED display; its remaining type stays unchanged. */
html[data-theme=dark] #tick{flex-direction:column;align-items:center;gap:6px;text-align:center}
html[data-theme=dark] #lv{flex:none;width:100%;font-size:inherit;line-height:1.3;text-transform:none}
html[data-theme=dark] #lt{font:400 clamp(34px,3.3vw,42px)/1.15 VT323,"IBM Plex Mono",monospace;letter-spacing:0;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
html[data-theme=dark] #lg{display:block;font:500 12px/1.4 "IBM Plex Mono",monospace;letter-spacing:.04em}
html[data-theme=dark] #lk .cur{font-size:24px}

/* A modest frame radius pairs Night Shift’s carousel with its LED wire. */
html[data-theme=dark] #hero{border-radius:12px}

/* Most Read: a brief departure makes the reserve moving in understandable. */
#mr li.mr-out{pointer-events:none;animation:mrout 140ms ease-in forwards}
@keyframes mrout{to{opacity:0;transform:translateY(-6px)}}
@media(prefers-reduced-motion:reduce){#mr li.mr-out{animation:none}}

/* Proposed sponsorship entry points. */
#bar #sponsor-top{display:inline-flex;text-decoration:none}
#sponsor-invite{display:flex;align-items:center;justify-content:space-between;gap:24px;margin:28px 0 0;padding:24px 4px;border-top:5px double var(--fg)}
#sponsor-invite h2{margin:0;font:italic 900 clamp(24px,3vw,34px)/1.1 var(--d);letter-spacing:0;color:var(--fg)}
#sponsor-invite p{margin:8px 0 0;font:13px/1.4 var(--ui);color:var(--mu)}
#sponsor-invite>a{display:inline-flex;padding:14px 20px;border-radius:var(--r);background:var(--text-accent);color:var(--on-ac);font:700 12px/1.3 var(--m);text-decoration:none;white-space:nowrap}
#sponsor-invite>a:hover{text-decoration:underline}#sponsor-invite>a:focus-visible{outline:2px solid var(--fg);outline-offset:4px}
@media(max-width:700px){#sponsor-invite{align-items:flex-start;flex-direction:column;gap:18px}}

/* Night Shift: classic red LEDs on deep blue-black. */
html[data-theme=dark][data-theme=dark]{--led-from:#101E32;--led-to:#080F1D;--led-dot:#587DA830;--led-lit:#FF6655;--led-ink:#FF6655;--led-glow:#FF372F55;--led-label:#C5A19B}
html[data-theme=dark][data-theme=dark] #lk{border-color:#170B0A;box-shadow:inset 0 2px 7px #000,inset 0 -1px 0 #6D302A,0 1px 0 #49332F,0 4px 12px #0003}

/* Masthead is current-room navigation; the desk link selects Newsprint. */
#mast-home{display:block;color:inherit;text-decoration:none}
#mast-home:focus-visible{outline:2px solid var(--text-accent);outline-offset:6px}

/* VERDE placements link to the sponsorship demonstration. */
.verde-banner{position:relative;isolation:isolate;overflow:hidden;display:grid;grid-template-columns:.9fr 1.2fr 1fr;align-items:center;gap:24px;min-height:250px;padding:30px 36px;border:1px solid #264b36;border-radius:18px;background:#103c2b;color:#f0f5dd;font-family:Arial,'Helvetica Neue',sans-serif}
.verde-brand{align-self:start;padding-top:8px;position:relative;z-index:2}
#sponsor-name,.verde-example-name{display:block;font:900 clamp(32px,4vw,52px)/1 Arial,'Helvetica Neue',sans-serif;letter-spacing:-.075em;color:#d4fa70}
.verde-brand>span{display:block;max-width:170px;margin-top:15px;font:700 9px/1.6 Arial,sans-serif;letter-spacing:.16em;color:#c4d6b9}
.verde-copy{position:relative;z-index:2}
.verde-copy h2{margin:0;font:900 clamp(28px,3.6vw,44px)/.98 Arial,'Helvetica Neue',sans-serif;letter-spacing:-.055em;color:#f0f5dd;text-transform:none}
.verde-copy h2 em{font-style:normal;color:#d4fa70}
.verde-copy p{margin:16px 0 0;font:400 13px/1.45 Arial,sans-serif;color:#d0ddc7;letter-spacing:0}
.verde-art{position:relative;min-height:170px;display:flex;align-items:center;justify-content:center}
.verde-card{position:relative;z-index:1;transform:rotate(-12deg);width:220px;aspect-ratio:1.586;flex-shrink:0;padding:18px;border-radius:12px;background:linear-gradient(125deg,#ddff91,#b6e85c);color:#123927;box-shadow:0 20px 28px #001c2266;border:1px solid #e5ffa5}
.verde-card-name{font:900 24px/1 Arial,sans-serif;letter-spacing:-.07em}
.verde-chip{display:block;width:27px;height:22px;margin-top:16px;border:1px solid #567c3e;border-radius:5px;background:linear-gradient(90deg,transparent 46%,#6b8e4f 47%,#6b8e4f 51%,transparent 52%),linear-gradient(transparent 46%,#6b8e4f 47%,#6b8e4f 51%,transparent 52%)}
.verde-card-bottom{display:flex;align-items:center;justify-content:space-between;margin-top:12px;font:700 8px/1 Arial,sans-serif;letter-spacing:.15em}.verde-card-bottom b{font-size:22px}
.verde-orbit{position:absolute;width:290px;height:290px;border:1px solid #45734d;border-radius:50%;z-index:0}.verde-orbit::after{content:'';position:absolute;inset:26px;border:1px solid #45734d;border-radius:50%}
.verde-disclosure{margin:8px 4px 0;color:var(--mu);font:11px/1.45 var(--ui);text-align:center}
@media(max-width:700px){.verde-banner{grid-template-columns:1fr 1fr;gap:24px 12px;padding:26px 22px;min-height:0}.verde-brand{grid-column:1/-1;padding:0}.verde-brand>span{max-width:none;margin-top:9px;font-size:8px}.verde-copy h2{font-size:34px}.verde-copy p{font-size:12px}.verde-art{min-height:145px}.verde-card{width:160px;padding:14px;border-radius:9px}.verde-card-name{font-size:20px}.verde-chip{margin-top:12px;width:22px;height:17px}.verde-card-bottom{margin-top:8px;font-size:6px}.verde-card-bottom b{font-size:17px}.verde-orbit{width:220px;height:220px}.verde-label{font-size:9px;letter-spacing:.06em}}
@media(max-width:360px){.verde-banner{padding:22px 16px;gap:22px 6px}.verde-copy h2{font-size:29px}.verde-card{width:133px;padding:12px}.verde-card-name{font-size:18px}.verde-copy p{font-size:11px}.verde-label{font-size:8px}}
#verde-top{display:flex;width:fit-content;max-width:100%;align-items:center;justify-content:center;flex-wrap:wrap;gap:18px;margin:16px auto 20px;padding:8px 24px;border:1px solid #c9d9c3;border-radius:12px;background:#f1f6e9;color:#53624f;text-decoration:none;text-shadow:none;font:700 11px/1.4 var(--m);letter-spacing:.1em}
#verde-top strong{font:italic 900 30px/1 Arial,sans-serif;letter-spacing:-.07em;color:#247346}
#verde-bottom{margin:28px 0 0;text-decoration:none;text-shadow:none;letter-spacing:normal}
#verde-bottom .verde-demo-label{margin-top:10px;font-size:10px;letter-spacing:.18em}
.ad-demo:focus-visible{outline:3px solid var(--text-accent);outline-offset:5px}
#verde-top:hover,#verde-bottom:hover{filter:brightness(1.06)}

#verde-top .verde-period{color:#91bd28}
@media(max-width:620px){#verde-top{flex-direction:column;flex-wrap:nowrap;gap:2px;width:220px;box-sizing:border-box;padding:4px 16px;text-align:center;font-size:10px}#verde-top strong{font-size:26px}#verde-top>span{white-space:nowrap}}
#verde-bottom .verde-period{color:#f0f5dd}

/* A pressable story control, distinct from the advertisement beneath it. */
.more .btn:after{content:none}
.more .btn{position:relative;display:flex;flex-direction:column;align-items:center;gap:7px;white-space:normal;text-align:center;cursor:pointer;box-shadow:0 5px 0 color-mix(in srgb,var(--text-accent) 55%,#000),0 9px 15px -8px #0008;transform:none;transition:box-shadow .16s ease,background .16s ease}
.more .btn .more-hint{font:700 9px/1.3 var(--ui);letter-spacing:.12em;text-transform:uppercase}
.more .btn:hover,.more .btn:focus-visible{box-shadow:0 7px 0 color-mix(in srgb,var(--text-accent) 55%,#000),0 12px 20px -8px #0008}
.more .btn:focus-visible{outline:3px solid var(--fg);outline-offset:5px}
.more .btn:active{box-shadow:0 1px 0 color-mix(in srgb,var(--text-accent) 55%,#000)}
@media(prefers-reduced-motion:reduce){.more .btn{transition:none}.more .btn:hover,.more .btn:focus-visible,.more .btn:active{transform:none}}



/* Keep the hidden-story glimpse in flow so font loading and story growth cannot overlap MORE links. */
.col{position:relative}
.more-preview{position:relative;overflow:visible;height:auto;margin:16px 0 0}
.more-preview a{display:block;color:inherit;text-decoration:none}
.more-preview a:hover{text-decoration:underline}
.more-preview a:focus-visible{outline:2px solid var(--text-accent);outline-offset:-2px}
.more-preview-fade:focus-within{mask-image:none;-webkit-mask-image:none}
.more-preview p{margin:0;padding:var(--rp);border-bottom:1px solid var(--hr);font:700 var(--rf)/var(--rl) var(--m);overflow-wrap:anywhere;color:var(--fg)}
@media(forced-colors:active){.more-preview{display:none}}

.more-preview.grp>h3{margin-top:0}

/* News Nibbler: bold yellow main headline; original Jersey 10 story carousel. */
html[data-theme=terminal]:is([data-world=marquee],[data-world=ad]) #lk{font:400 clamp(34px,5vw,66px)/1 'Jersey 10',var(--t);letter-spacing:.02em}
html[data-theme=terminal][data-world=marquee] #hp{font-family:'Jersey 10',var(--t);font-weight:400;line-height:1.02}

/* Touch selection/callouts belong to reading, not the active Meteor Wire controls. */
@media(pointer:coarse){
html.fldl[data-theme=terminal],html.fldl[data-theme=terminal] *{-webkit-user-select:none!important;user-select:none!important;-webkit-touch-callout:none!important}
html.fldl[data-theme=terminal]{touch-action:none}
}

/* Barrel bonus: a brief arcade lesson, then three quiet progress lights. */
#barrel-stage{display:none;position:fixed;inset:0;z-index:59;background:#05070BCC;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px)}
html[data-ccmilestone] #barrel-stage{display:block;animation:barrel-stage-in .25s ease-out}
html[data-ccmilestone] .pr{visibility:hidden}
@keyframes barrel-stage-in{from{opacity:0}to{opacity:1}}
@media(prefers-reduced-motion:reduce){#barrel-stage{animation:none}}

html[data-ccmilestone] :is(.ach,.plus){visibility:hidden}

/* Advertising links identify the representative before leaving the wire. */
#bar #sponsor-top{height:auto;min-height:38px}
#sponsor-top .bt{display:block;padding:5px 0;line-height:1.15}
#sponsor-top .ad-provider{display:block;margin-top:4px;font:400 8px/1.2 var(--ui);letter-spacing:.02em;text-transform:none}
#sponsor-invite .ad-provider{display:inline-block;margin-top:5px;font-size:10px}

/* Advertising is a separate visual system. Theme colors remain live; type does not inherit pixel/terminal styling. */
a[href="https://ad.sale/"]{font-family:Arial,'Helvetica Neue',Helvetica,sans-serif;font-style:normal;text-shadow:none;letter-spacing:normal;text-transform:none}
#bar #sponsor-top{font:700 12px/1.25 Arial,'Helvetica Neue',Helvetica,sans-serif;letter-spacing:0;text-transform:none;border-radius:3px;min-height:40px;padding-right:14px;box-shadow:none;text-shadow:none;background:var(--text-accent);color:var(--on-ac)}
#bar #sponsor-top .bt{font:inherit;letter-spacing:0;text-transform:none}
#bar #sponsor-top .bl{font:inherit;letter-spacing:0;text-transform:none}
#bar #sponsor-top b{font:700 17px/1 Arial,sans-serif;min-width:30px;border-right-color:color-mix(in srgb,var(--on-ac) 30%,transparent)}
#bar #sponsor-top .ad-provider{font:400 10px/1.25 Arial,'Helvetica Neue',Helvetica,sans-serif;letter-spacing:0;text-transform:none;margin-top:3px}
#bar #sponsor-top:is(:hover,:focus-visible){background:var(--fg);color:var(--bg)}
#bar #sponsor-top:focus-visible{outline:2px solid var(--text-accent);outline-offset:4px}
#sponsor-invite h2{font:700 clamp(23px,2.6vw,32px)/1.15 Arial,'Helvetica Neue',Helvetica,sans-serif;letter-spacing:-.6px;text-transform:none;text-shadow:none}
#sponsor-invite p,#sponsor-invite .ad-provider{font-family:Arial,'Helvetica Neue',Helvetica,sans-serif;text-shadow:none;letter-spacing:0;text-transform:none}
#sponsor-invite>a{position:relative;isolation:isolate;overflow:hidden;font:600 14px/1.3 Arial,'Helvetica Neue',Helvetica,sans-serif;letter-spacing:0;text-transform:none;border-radius:10px;text-shadow:none;min-height:48px;padding:15px 26px;align-items:center;justify-content:center;border:1px solid color-mix(in srgb,var(--text-accent) 75%,var(--fg));background:linear-gradient(150deg,#ffffff26,transparent 52%),var(--text-accent);color:var(--on-ac);box-shadow:inset 0 1px 0 #ffffff70,inset 0 -1px 0 #0002,0 6px 0 color-mix(in srgb,var(--text-accent) 58%,#000),0 10px 18px -5px #0006;cursor:pointer;transform:translateY(-2px);transition:box-shadow 180ms ease,transform 180ms ease}
#sponsor-invite>a::before{content:'';position:absolute;inset:-50% -70%;pointer-events:none;background:linear-gradient(110deg,transparent 40%,#ffffff55 49%,#ffffff15 56%,transparent 64%);transform:translateX(-65%);opacity:0}

#sponsor-invite{padding:30px 8px 32px;gap:32px}
#sponsor-invite>div{min-width:0}
#sponsor-invite h2{font-size:clamp(25px,2.8vw,36px);line-height:1.12;letter-spacing:-.8px;text-wrap:balance}
#sponsor-invite p{margin-top:10px;font-size:14px;line-height:1.6}
#sponsor-invite .ad-provider{margin-top:8px;font-size:11px;line-height:1.4}
@media(hover:hover){#sponsor-invite>a:hover{color:var(--on-ac);text-decoration:none;transform:translateY(-4px) perspective(700px) rotateX(5deg);box-shadow:inset 0 1px 0 #ffffff80,0 8px 0 color-mix(in srgb,var(--text-accent) 58%,#000),0 15px 24px -7px #0007}}
#sponsor-invite>a:is(:hover,:focus-visible)::before{animation:ad-link-sheen 850ms ease-out both}
@keyframes ad-link-sheen{0%{opacity:0;transform:translateX(-65%)}20%{opacity:1}100%{opacity:0;transform:translateX(65%)}}
#sponsor-invite>a:active{transform:translateY(3px);box-shadow:inset 0 1px 3px #0003,0 1px 0 color-mix(in srgb,var(--text-accent) 58%,#000),0 3px 7px #0003}
#sponsor-invite>a:focus-visible{outline:3px solid var(--text-accent);outline-offset:8px}
@media(prefers-reduced-motion:reduce){#sponsor-invite>a{transition:none;transform:none}#sponsor-invite>a:hover,#sponsor-invite>a:active{transform:none}#sponsor-invite>a::before{animation:none!important;display:none}}
@media(max-width:700px){#sponsor-invite{padding:24px 4px;gap:20px}#sponsor-invite>a{width:100%;box-sizing:border-box}#sponsor-invite h2{letter-spacing:-.5px}}
#verde-top>span{font-family:Arial,'Helvetica Neue',Helvetica,sans-serif;letter-spacing:.04em;text-shadow:none}

#sponsor-invite .ad-provider{display:inline-flex;align-items:center;gap:8px;padding:5px 7px 5px 11px;border:1px solid color-mix(in srgb,var(--mu) 25%,transparent);border-radius:999px;font-size:11px;line-height:1;vertical-align:middle}
#sponsor-invite .ad-provider-brand{display:inline-flex;align-items:center;color:inherit;text-decoration:none}
#sponsor-invite .ad-provider-brand:hover{text-decoration:underline}
#sponsor-invite .ad-provider-brand img{display:block;width:20px;height:20px;border-radius:5px;margin:0}
#sponsor-invite .ad-provider-brand:focus-visible{outline:2px solid var(--text-accent);outline-offset:3px}

footer .legal a[href="https://ad.sale/"]{font:inherit;letter-spacing:inherit;text-transform:inherit;text-shadow:inherit}

/* Ads join the blast camera, landing behind the headline heap as small tilted scraps. */
html #grid:has(>.bx-ad){position:relative}
html[data-rubble] #grid .bx-ad{pointer-events:none!important}
html[data-rubble] #grid .bx-piece:not(.bx-ad){position:relative;z-index:1}

/* Falling game rows must not drag the reader’s viewport with the browser scroll anchor. */
html[data-theme=terminal],html[data-theme=terminal] body{overflow-anchor:none}

/* Fade only the preview stories, leaving section buttons solid and pressable. */
.more-preview-fade p{-webkit-mask-image:linear-gradient(to bottom,rgb(0 0 0 / var(--fade-start,1)),rgb(0 0 0 / var(--fade-end,0)));mask-image:linear-gradient(to bottom,rgb(0 0 0 / var(--fade-start,1)),rgb(0 0 0 / var(--fade-end,0)))}
.more-preview-fade:focus-within p{mask-image:none;-webkit-mask-image:none}
.more-preview-fade p:last-child{padding-bottom:1.25em;border-bottom:0}

/* A section sign opens a quiet reading room above the live newspaper. */
/* Domed push buttons: rounded red rim, raised face and a substantial shaded sidewall. */
html[data-theme=newsprint] #grid :is(.grp>h3,.more-preview-fade>h3,.col>h2,#h-lw):has(>.band-open){padding:0 0 12px;border:0;background:none;color:#fff;overflow:visible}
.band-open{box-sizing:border-box;display:block;width:100%;min-height:46px;height:46px;padding:5px 14px;border:2px solid #ed183e;border-radius:999px;background:radial-gradient(ellipse at 50% -65%,#b0b3b9 0%,#555a62 43%,#292c32 65%,#101115 100%);color:#fff;font:inherit;font-family:Impact,Haettenschweiler,'Arial Narrow Bold',sans-serif;font-size:21px;letter-spacing:inherit;text-transform:inherit;text-shadow:0 2px 2px #000;cursor:pointer;position:relative;isolation:isolate;box-shadow:inset 0 2px 2px #ffffffa6,inset 0 -4px 5px #000b,0 2px 0 #850b24,0 3.85px 0 #641020,0 5px 0 #350b14,0 7px 0 #16080c,0 10px 7px #0004,0 16px 18px #0002;transform:translateY(-2px);transition:transform .15s cubic-bezier(.2,.8,.2,1),box-shadow .15s,filter .2s;touch-action:manipulation;-webkit-tap-highlight-color:transparent}
.band-open:before{content:'';position:absolute;inset:3px 14px 51%;border-radius:999px 999px 50% 50%;background:linear-gradient(#fff4,#fff0);pointer-events:none;z-index:-1}
.band-open:after{content:'';position:absolute;inset:4px;border-radius:inherit;border:1px solid #ffffff24;border-bottom-color:#ff446b70;pointer-events:none}
@media(hover:hover){html[data-theme=newsprint] #grid :is(.grp>h3,.more-preview-fade>h3,.col>h2,#h-lw):hover>.band-open{background:var(--fg);color:var(--bg);filter:brightness(1.14);transform:translateY(-4px);box-shadow:inset 0 2px 2px #ffffffb3,inset 0 -4px 5px #000b,inset 2px 0 3px #fff3,inset -2px 0 3px #fff3,0 2px 0 #a20b2c,0 6px 0 #711026,0 11px 0 #350b14,0 13px 0 #16080c,0 16px 8px #0005,0 23px 25px #0003,0 0 14px #ed183e30}}
.band-open:focus-visible{outline:2px solid #fff;outline-offset:-8px}
[data-band-input=pointer] .band-open:focus-visible{outline:none}
html[data-theme=newsprint] #grid :is(.grp>h3,.more-preview-fade>h3,.col>h2,#h-lw):active>.band-open,.band-open:active{transform:translateY(6px);filter:brightness(1.08);box-shadow:inset 0 2px 5px #0008,0 2px 0 #350b14,0 4px 5px #0003;transition-duration:.07s}
html[data-band-reader]{overflow:hidden}
.band-reader{box-sizing:border-box;width:min(900px,calc(100% - 40px));max-height:calc(100dvh - 56px);padding:0;border:1px solid var(--fg);border-top:6px double var(--fg);background:var(--bg);color:var(--fg);box-shadow:12px 12px 0 color-mix(in srgb,var(--fg) 20%,transparent);overscroll-behavior:contain;animation:band-unfold .42s cubic-bezier(.16,1,.3,1) both}
.band-reader::backdrop{background:rgb(0 0 0 / .68);backdrop-filter:blur(5px);animation:band-shade .3s both}
.band-reader-head{position:sticky;top:0;z-index:1;margin:0;padding:24px 110px 22px 30px;background:var(--ib);color:var(--if);border:0;text-align:left}
.band-reader-kicker{margin:0 0 12px;font:700 11px var(--ui);letter-spacing:.16em}
.band-reader-head h2{margin:0;font:900 clamp(27px,5vw,48px)/1.05 var(--d)}
.band-reader-close{position:absolute;right:20px;top:24px;padding:10px;border:1px solid currentColor;background:none;color:inherit;font:700 12px var(--ui);cursor:pointer}
.band-reader-close:hover{background:var(--bg);color:var(--fg)}
.band-reader-note{margin:0;padding:16px 30px;border-bottom:1px solid var(--hr);color:var(--mu);font:11px/1.5 var(--ui);letter-spacing:.06em}
.band-reader-list{margin:0;padding:0 30px;list-style:none;counter-reset:band-story}
.band-reader-list li{position:relative;padding:24px 0 22px 45px;border-bottom:1px solid var(--hr);counter-increment:band-story;animation:band-row .4s both;animation-delay:calc(.12s + var(--row,0)*35ms)}
.band-reader-list li:before{content:counter(band-story,decimal-leading-zero);position:absolute;left:0;top:28px;color:var(--text-accent);font:12px var(--ui)}
.band-reader-list a{font:700 clamp(18px,2.4vw,24px)/1.35 var(--b);text-decoration:none}.band-reader-list a:hover{text-decoration:underline;color:var(--text-accent)}
.band-reader-meta{margin:10px 0 0;color:var(--mu);font:12px/1.5 var(--ui)}
.band-reader-footer{margin:0;padding:24px 30px;border:0;text-align:left;font:700 12px var(--ui)}
.band-reader.closing{animation:band-fold .2s ease-in both}.band-reader.closing::backdrop{animation:band-shade .2s reverse both}
[data-theme=terminal] .band-reader{border-color:var(--text-accent);box-shadow:8px 8px 0 var(--text-accent)}
[data-font=mono] .band-reader-list a{font-family:var(--m)}
@keyframes band-unfold{from{opacity:0;transform:translate(var(--origin-x),var(--origin-y)) scale(.75,.08)}to{opacity:1;transform:translate(0,0) scale(1)}}
@keyframes band-fold{to{opacity:0;transform:translateY(14px) scale(.97)}}
@keyframes band-shade{from{opacity:0}to{opacity:1}}
@keyframes band-row{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
@media(max-width:600px){.band-reader{width:calc(100% - 16px);max-height:calc(100dvh - 24px);box-shadow:4px 4px 0 var(--hr)}.band-reader-head{padding:20px 88px 20px 18px}.band-reader-close{right:12px;top:18px;padding:8px}.band-reader-kicker{font-size:9px}.band-reader-note{padding:14px 18px}.band-reader-list{padding:0 18px}.band-reader-list li{padding-left:32px}.band-reader-footer{padding:20px 18px}}
@media(prefers-reduced-motion:reduce){.band-reader,.band-reader::backdrop,.band-reader-list li,.band-reader.closing,.band-reader.closing::backdrop{animation:none}.band-open,.band-open:before,.band-open:after{transition:none}}

/* Separate the compact Live Wires directory from the first reporting band. */
#lnav:not([hidden]){margin-bottom:18px}
/* Column focus signage belongs to column headings, not the nested directory button. */
#h-lw:has(>.band-open){box-shadow:none}
#h-lw:has(>.band-open):before{content:none}

/* Quiet reading-list controls: collecting stays inside the section, publisher links stay native. */
.band-queue-button{display:inline-flex;margin:16px 0 0;padding:7px 12px;border:1px solid currentColor;border-radius:999px;background:transparent;color:inherit;font:600 12px var(--ui);letter-spacing:.02em}
.band-queue-button:hover:not(:disabled){background:var(--bg);color:var(--fg)}
.band-reader-list li:has(>.band-save){padding-right:58px}
.band-save{position:absolute;right:0;top:22px;width:42px;height:42px;display:grid;place-items:center;padding:0;border:1px solid var(--hr);border-radius:50%;background:var(--bg);color:var(--fg);font:500 25px/1 var(--ui);transition:background .15s,border-color .15s,color .15s}
.band-save:hover,.band-save[aria-pressed=true]{background:var(--text-accent);border-color:var(--text-accent);color:var(--on-ac)}
.band-save:focus-visible,.band-queue-button:focus-visible{outline:2px solid var(--text-accent);outline-offset:3px}
.band-reader-list .band-list-empty{padding:28px 0;font:16px/1.5 var(--b);color:var(--mu)}
.band-reader-list .band-list-empty:before{content:none}
@media(pointer:coarse){.band-save{width:44px;height:44px}.band-queue-button{min-height:44px}}
@media(prefers-reduced-motion:reduce){.band-save{transition:none}}
.band-save[aria-pressed=true]{color:#c8102e;background:color-mix(in srgb,#c8102e 7%,var(--bg));border-color:color-mix(in srgb,#c8102e 50%,var(--bg));font-weight:700;animation:band-check-confirm .28s cubic-bezier(.2,.8,.3,1)}
.band-save[aria-pressed=true]:hover{color:#c8102e;background:color-mix(in srgb,#c8102e 12%,var(--bg));border-color:#c8102e}
[data-theme=dark] .band-save[aria-pressed=true],[data-theme=terminal] .band-save[aria-pressed=true]{color:#ff536c}
@keyframes band-check-confirm{0%{transform:scale(.8)}55%{transform:scale(1.14);box-shadow:0 0 0 5px color-mix(in srgb,currentColor 10%,transparent)}100%{transform:scale(1);box-shadow:0 0 0 0 transparent}}
@media(prefers-reduced-motion:reduce){.band-save[aria-pressed=true]{animation:none}}

.band-queue-button:disabled{opacity:.65;cursor:default}
.band-save:disabled{opacity:1;cursor:default}
.band-save:disabled:hover{filter:none}

/* The picks rail: fixed action area, independently scrolling story choices. */
.band-reader.band-has-picks{width:min(1240px,calc(100% - 40px))}
.band-reader-body{display:grid;grid-template-columns:300px minmax(0,1fr);align-items:start}
.band-reader-body>.band-reader-list{grid-column:2;grid-row:1}
.band-picks{grid-column:1;grid-row:1;position:sticky;top:calc(var(--band-head-height,124px) + 16px);display:flex;flex-direction:column;margin:20px 0 24px 20px;max-height:calc(100dvh - var(--band-head-height,124px) - 100px);min-height:0;overflow:hidden;border:1px solid var(--hr);border-radius:7px;background:var(--bg);box-shadow:0 3px 12px #00000009}
.band-picks-header{flex:none;padding:15px 17px 13px;background:var(--hr);color:var(--fg);border-bottom:1px solid var(--hr);transition:background .2s,color .2s}
.band-picks h3{margin:0;font:800 13px/1.25 var(--ui);letter-spacing:.1em;text-transform:uppercase}
.band-picks-count{margin:6px 0 0;font:12px/1.4 var(--ui);color:inherit;opacity:.85}
.band-picks[data-ready=true] .band-picks-header{background:#c8102e;border-color:#c8102e;color:#fff}
.band-picks-action{flex:none;padding:14px 14px 12px;border-bottom:1px solid var(--hr)}
.band-picks .band-queue-button{margin:0;display:flex;width:100%;min-height:44px;padding:11px 12px;justify-content:center;align-items:center;border:1px solid #a80c27;border-radius:4px;background:#c8102e;color:#fff;font:700 13px/1.4 var(--ui);text-align:center;letter-spacing:0;box-shadow:inset 0 1px 0 #ffffff24,0 2px 0 #8f0b22;transition:background .15s}
.band-picks .band-queue-button:hover:not(:disabled){background:#ab0d28;color:#fff}
.band-picks .band-queue-button:active:not(:disabled){box-shadow:inset 0 1px 3px #0004}
.band-picks .band-queue-button:disabled{background:var(--bg);border-color:var(--hr);color:var(--mu);box-shadow:none;opacity:1}
.band-picks-list{flex:1 1 auto;min-height:0;list-style:none;padding:0 14px;margin:0;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:var(--hr) transparent;scrollbar-gutter:stable}
.band-picks-list::-webkit-scrollbar{width:5px}.band-picks-list::-webkit-scrollbar-thumb{background:var(--hr);border-radius:5px}
.band-picks-list li{position:relative;padding:15px 29px 16px 2px;border-bottom:1px solid var(--hr)}
.band-picks-list li:last-child{border-bottom:0}
.band-pick-source{display:block;font:700 12px/1.4 var(--ui);color:var(--mu);overflow-wrap:anywhere}
.band-picks-list li:first-child .band-pick-source{color:var(--text-accent)}
.band-picks-list li:first-child .band-pick-source:before{content:'UP NEXT';display:block;margin-bottom:5px;font:800 9px/1.2 var(--ui);letter-spacing:.12em;color:var(--text-accent)}
.band-picks-list p{margin:6px 0 0;font:600 13px/1.5 var(--b);color:var(--fg);overflow-wrap:anywhere}
.band-pick-remove{position:absolute;right:-9px;top:9px;display:grid;place-items:center;min-width:36px;min-height:36px;padding:0;border:0;border-radius:50%;background:none;color:var(--mu);font:20px/1 var(--ui)}
.band-pick-remove:hover{background:color-mix(in srgb,var(--fg) 7%,var(--bg));color:var(--text-accent)}
.band-pick-remove:focus-visible{outline:2px solid var(--text-accent);outline-offset:-3px}
.band-picks-empty{margin:0;padding:17px;font:13px/1.5 var(--ui);color:var(--mu)}
@media(pointer:coarse){.band-pick-remove{min-width:44px;min-height:44px;right:-12px}.band-picks-list li{padding-right:34px}}
@media(max-width:800px){.band-reader.band-has-picks{width:calc(100% - 16px)}.band-reader-body{display:flex;flex-direction:column}.band-picks{order:-1;position:relative;top:auto;box-sizing:border-box;flex:none;margin:16px 18px;width:calc(100% - 36px);max-height:310px}.band-reader-body>.band-reader-list{width:100%}}
@media(prefers-reduced-motion:reduce){.band-picks-header,.band-picks .band-queue-button{transition:none}}
/* The next story is explicit even when consecutive picks share a publisher. */
.band-picks .band-queue-button{flex-direction:column;gap:5px}
.band-launch-source{display:block;font-weight:800}
.band-launch-headline{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden;font:500 11px/1.4 var(--ui);opacity:.9}
.band-launch-headline:empty{display:none}
.band-next-ready .band-launch-source,.band-next-ready .band-launch-headline{animation:band-next-story .26s ease-out both}
@keyframes band-next-story{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}
@media(prefers-reduced-motion:reduce){.band-next-ready .band-launch-source,.band-next-ready .band-launch-headline{animation:none}}

/* In Dark and Arcade, keep the original heading surface and typography intact.
   The transparent child adds activation only; the existing world styles own the sign. */
html:is([data-theme=dark],[data-theme=terminal]) .band-open{display:block;width:100%;min-height:0;height:auto;margin:0;padding:0;border:0;border-radius:0;background:none;color:inherit;font:inherit;letter-spacing:inherit;text-transform:inherit;text-shadow:inherit;box-shadow:none;transform:none;filter:none;transition:none}
html:is([data-theme=dark],[data-theme=terminal]) .band-open:is(:hover,:active){background:none;color:inherit;box-shadow:none;transform:none;filter:none}
html:is([data-theme=dark],[data-theme=terminal]) .band-open:before,html:is([data-theme=dark],[data-theme=terminal]) .band-open:after{content:none}
html:is([data-theme=dark],[data-theme=terminal]):not([data-band-input=pointer]) .band-open:focus-visible{outline:2px solid var(--text-accent);outline-offset:2px}
/* New overlay functions follow the room's existing type and palette tokens. */
html:is([data-theme=dark],[data-theme=terminal]) .band-reader-head{background:var(--bg);color:var(--fg);border-bottom:1px solid var(--hr);text-shadow:inherit}
html:is([data-theme=dark],[data-theme=terminal]) .band-reader-head h2{font:900 24px/1 var(--d)}
html:is([data-theme=dark],[data-theme=terminal]) .band-picks{border-radius:var(--r);box-shadow:none}
html:is([data-theme=dark],[data-theme=terminal]) .band-picks[data-ready=true] .band-picks-header{background:var(--text-accent);border-color:var(--text-accent);color:var(--on-ac)}
html:is([data-theme=dark],[data-theme=terminal]) .band-picks .band-queue-button:not(:disabled){background:var(--text-accent);border-color:var(--text-accent);color:var(--on-ac);box-shadow:none}
html:is([data-theme=dark],[data-theme=terminal]) .band-save[aria-pressed=true]{color:var(--text-accent);background:color-mix(in srgb,var(--text-accent) 7%,var(--bg));border-color:var(--text-accent)}

/* Empty playlist: one compact invitation; launch controls appear with the first pick. */
.band-picks[data-ready=false] .band-picks-action,.band-picks[data-ready=false] .band-picks-list,.band-picks[data-ready=false] .band-picks-count{display:none}
.band-picks[data-ready=false] .band-picks-header{background:transparent;color:var(--fg);border-bottom:0;padding-bottom:0}
.band-picks[data-ready=false] .band-picks-empty{display:flex;gap:12px;align-items:center;padding:14px 17px 20px;line-height:1.6}
.band-picks[data-ready=false] .band-picks-empty:before{content:'+';display:grid;place-items:center;flex:0 0 30px;width:30px;height:30px;border:1px solid var(--hr);border-radius:50%;color:var(--text-accent);font:500 22px/1 var(--ui)}

/* Playlist covers: B / miniature front page in Newsprint; C / night edition in Dark. */
.band-launch-publication,.band-launch-kicker{display:none}
html:is([data-theme=newsprint],[data-theme=dark]) .band-picks .band-queue-button{gap:0;padding:17px 18px;text-align:left;align-items:stretch;border-radius:5px;letter-spacing:0;overflow:hidden}
html[data-theme=newsprint] .band-picks .band-queue-button:not(:disabled){background:#fffdf5;color:#111;border:1px solid #d4cdbd;border-top:4px solid #c8102e;box-shadow:0 3px 0 #d9d5ca}
html:is([data-theme=newsprint],[data-theme=dark]) .band-launch-publication{display:block;order:0;font:800 12px/1.4 var(--ui);padding-bottom:10px;margin-bottom:15px;border-bottom:3px double currentColor;overflow-wrap:anywhere}
html[data-theme=newsprint] .band-launch-publication{text-transform:uppercase}
html:is([data-theme=newsprint],[data-theme=dark]) .band-launch-kicker{display:block;order:1;font:800 9px/1.3 var(--ui);letter-spacing:.13em;margin-bottom:8px;color:#c8102e}
html:is([data-theme=newsprint],[data-theme=dark]) .band-launch-headline{display:block;order:2;-webkit-line-clamp:unset;overflow:visible;font:700 23px/1.16 Georgia,'Times New Roman',serif;letter-spacing:-.025em;opacity:1;margin:0 0 19px;overflow-wrap:anywhere}
html:is([data-theme=newsprint],[data-theme=dark]) .band-launch-source{order:3;display:block;font:800 12px/1.4 var(--ui);letter-spacing:0}
html[data-theme=newsprint] .band-launch-source{background:#c8102e;color:#fff;margin:0 -18px -17px;padding:13px 18px}
html[data-theme=newsprint] .band-picks .band-queue-button:hover:not(:disabled){background:#fffaf0;color:#111;box-shadow:0 4px 0 #d9d5ca}
html[data-theme=dark] .band-picks .band-queue-button:not(:disabled){background:#171719;color:#fff;border:1px solid #444;border-top:4px solid #c8102e;box-shadow:0 3px 0 #080808}
html[data-theme=dark] .band-launch-publication{color:#e5dbbf;border-bottom:0;padding-bottom:0}
html[data-theme=dark] .band-launch-kicker{color:#ff8ba0}
html[data-theme=dark] .band-launch-source{border-top:1px solid #666;padding-top:13px}
html[data-theme=dark] .band-picks .band-queue-button:hover:not(:disabled){background:#212124;color:#fff}
html:is([data-theme=newsprint],[data-theme=dark]) .band-picks .band-queue-button:active:not(:disabled){box-shadow:inset 0 1px 3px #0002}
.band-next-ready .band-launch-publication,.band-next-ready .band-launch-kicker{animation:band-next-story .26s ease-out both}
@media(prefers-reduced-motion:reduce){.band-next-ready .band-launch-publication,.band-next-ready .band-launch-kicker{animation:none}}
/* Keep the complete launch cover reachable, including long headlines and phone layouts. */
html:is([data-theme=newsprint],[data-theme=dark]) .band-picks[data-ready=true]{overflow-y:auto;scrollbar-width:thin}
@media(max-width:800px){html:is([data-theme=newsprint],[data-theme=dark]) .band-picks[data-ready=true]{max-height:none}html:is([data-theme=newsprint],[data-theme=dark]) .band-picks-list{flex:none;max-height:180px}}

/* A compact launch cover leaves room for picks; one generous scroll target owns the rail. */
.band-picks{overflow-y:auto;overscroll-behavior-y:auto;scrollbar-width:thin;scrollbar-color:var(--hr) transparent;scrollbar-gutter:stable}
.band-picks .band-picks-list{flex:none;overflow:visible;max-height:none;overscroll-behavior:auto;scrollbar-gutter:auto}
html:is([data-theme=newsprint],[data-theme=dark]) .band-picks-header{padding:11px 14px 10px}
html:is([data-theme=newsprint],[data-theme=dark]) .band-picks-action{padding:10px 12px 12px}
html:is([data-theme=newsprint],[data-theme=dark]) .band-picks .band-queue-button{padding:11px 13px}
html:is([data-theme=newsprint],[data-theme=dark]) .band-launch-publication{font-size:11px;margin-bottom:9px;padding-bottom:7px}
html:is([data-theme=newsprint],[data-theme=dark]) .band-launch-kicker{font-size:8px;margin-bottom:5px}
html:is([data-theme=newsprint],[data-theme=dark]) .band-launch-headline{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden;font-size:18px;line-height:1.18;margin-bottom:11px}
html[data-theme=newsprint] .band-launch-source{margin:0 -13px -11px;padding:10px 13px;font-size:11px}
html[data-theme=dark] .band-launch-source{padding-top:9px;font-size:11px}
@media(max-width:800px){html:is([data-theme=newsprint],[data-theme=dark]) .band-picks[data-ready=true]{max-height:min(470px,65dvh)}.band-picks{overscroll-behavior-y:auto}}

/* A launch thumbnail, with space for at least two queued rows on typical viewports. */
html:is([data-theme=newsprint],[data-theme=dark]) .band-picks-header{padding:9px 12px 8px}
html:is([data-theme=newsprint],[data-theme=dark]) .band-picks h3{font-size:12px}
html:is([data-theme=newsprint],[data-theme=dark]) .band-picks-count{font-size:11px;margin-top:4px}
html:is([data-theme=newsprint],[data-theme=dark]) .band-picks .band-queue-button{padding:9px 11px}
html:is([data-theme=newsprint],[data-theme=dark]) .band-launch-publication{font-size:10px;padding-bottom:5px;margin-bottom:6px}
html:is([data-theme=newsprint],[data-theme=dark]) .band-launch-kicker{font-size:8px;margin-bottom:4px}
html:is([data-theme=newsprint],[data-theme=dark]) .band-launch-headline{font-size:16px;line-height:1.2;-webkit-line-clamp:2;margin-bottom:9px}
html[data-theme=newsprint] .band-launch-source{margin:0 -11px -9px;padding:8px 11px}
html[data-theme=dark] .band-launch-source{padding-top:7px}
.band-picks-list li{padding-top:10px;padding-bottom:11px}
.band-picks-list p{font-size:12px;line-height:1.4;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden}
.band-launch-exit .band-launch-publication,.band-launch-exit .band-launch-kicker,.band-launch-exit .band-launch-headline,.band-launch-exit .band-launch-source{animation:band-story-exit .16s ease-in both}
@keyframes band-story-exit{to{opacity:0;transform:translateY(-8px)}}
@media(prefers-reduced-motion:reduce){.band-launch-exit .band-launch-publication,.band-launch-exit .band-launch-kicker,.band-launch-exit .band-launch-headline,.band-launch-exit .band-launch-source{animation:none}}
html:is([data-theme=newsprint],[data-theme=dark]) .band-picks .band-picks-list{max-height:none}

/* Film-frame handoff: the current cover drops away; the next rises before opening the source. */
.band-picks-action{overflow:hidden}
.band-picks .band-queue-button.band-launch-exit{animation:band-cover-down .16s ease-in both}
.band-picks .band-queue-button.band-next-ready{animation:band-cover-up .22s cubic-bezier(.2,.7,.2,1) both}
.band-launch-exit .band-launch-publication,.band-launch-exit .band-launch-kicker,.band-launch-exit .band-launch-headline,.band-launch-exit .band-launch-source,
.band-next-ready .band-launch-publication,.band-next-ready .band-launch-kicker,.band-next-ready .band-launch-headline,.band-next-ready .band-launch-source{animation:none}
@keyframes band-cover-down{to{transform:translateY(20px);opacity:0}}
@keyframes band-cover-up{from{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}
.band-picks-end{position:sticky;bottom:0;z-index:1;flex:none;margin:0;padding:10px 12px;background:var(--bg);color:var(--mu);border-top:1px solid var(--hr);box-shadow:0 -5px 10px color-mix(in srgb,var(--bg) 90%,transparent);font:700 11px/1.4 var(--ui);text-align:center}
.band-picks-end[hidden]{display:none}
.band-pick-added{animation:band-pick-arrival .35s ease-out both}
@keyframes band-pick-arrival{from{background:color-mix(in srgb,var(--text-accent) 14%,var(--bg))}to{background:transparent}}
@media(prefers-reduced-motion:reduce){.band-picks .band-queue-button.band-launch-exit,.band-picks .band-queue-button.band-next-ready,.band-pick-added{animation:none}}

@media(min-width:801px){.band-picks{max-height:calc(100dvh - var(--band-head-height,124px) - var(--band-note-height,50px) - 115px)}}

/* One launch cover and a classic numbered ticket; checks on headlines are the selection record. */
.band-picks .band-picks-header{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center}
.band-picks .band-picks-count{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;flex:none;box-sizing:border-box;min-width:52px;height:52px;padding:4px 8px;margin:0;border:3px double #111;border-radius:50%;background:#fffdf5;color:#111;opacity:1;font:700 24px/1 Georgia,'Times New Roman',serif;font-variant-numeric:tabular-nums;letter-spacing:-.04em;box-shadow:0 1px 0 #0002}
.band-picks .band-picks-count:after{content:'STORIES';font:800 6px/1.5 var(--ui);letter-spacing:.12em;margin-top:3px}
.band-picks[data-ready=false] .band-picks-count{display:none}
.band-picks .band-picks-action{border-bottom:0}
@media(prefers-reduced-motion:no-preference){.band-picks .band-picks-count{transition:background .2s}}
html .band-picks .band-picks-count{font:700 24px/1 Georgia,'Times New Roman',serif;margin:0;letter-spacing:-.04em}
.band-picks{scrollbar-gutter:auto}

/* Keep the picked list, stationary while selecting; the ticket is its compact total. */
.band-picks .band-picks-list{margin:0;border-top:1px solid var(--hr)}
.band-picks .band-pick-remove{color:var(--text-accent);font-weight:800}
.band-picks .band-pick-remove:hover{background:color-mix(in srgb,var(--text-accent) 10%,var(--bg))}
.band-picks[data-ready=false] .band-picks-list{display:none}

/* Keep carousel navigation inside the page paint bounds, with constant resting contrast. */
#hw{padding-inline:42px}
#hw .hf{opacity:1;background:var(--fg);color:var(--bg);border-radius:8px;transition:transform .15s;filter:none}
#hw .hf:hover,#hw .hf:focus-visible{opacity:1;background:var(--fg);color:var(--bg)}
#hw #hprev{left:-2px}#hw #hnext{right:-2px}
@media(max-width:820px){#hw{padding-inline:0}#hw #hprev{left:8px}#hw #hnext{right:8px}}

/* A conditional ticket in the fixed module header, only while the original is obscured. */
.band-has-picks .band-reader-head{padding-right:174px}
.band-header-ticket{position:absolute;right:112px;top:24px;box-sizing:border-box;display:flex;flex-direction:column;align-items:center;justify-content:center;width:44px;height:44px;border:3px double #111;border-radius:50%;background:#fffdf5;color:#111;font:700 21px/1 Georgia,'Times New Roman',serif;font-variant-numeric:tabular-nums;letter-spacing:-.04em;text-shadow:none}
.band-header-ticket:after{content:'STORIES';font:800 5px/1.5 var(--ui);letter-spacing:.1em;margin-top:2px}
.band-header-ticket[hidden]{display:none}
@media(max-width:600px){.band-has-picks .band-reader-head{padding-right:140px}.band-header-ticket{right:90px;top:20px;width:36px;height:36px;font-size:18px}.band-header-ticket:after{font-size:4px}}

/* Live Wires option D: the band opens the directory; four pills remain as shortcuts. */
.live-wire-menu,.live-wire-total{display:none;pointer-events:none}
html[data-theme=newsprint] #ln>li:not(.wire-top){display:none}
html[data-theme=newsprint] #h-lw .band-open{padding-inline:58px}
html[data-theme=newsprint] #h-lw .live-wire-menu{position:absolute;left:22px;top:50%;transform:translateY(-50%);display:grid;gap:4px;width:19px}
html[data-theme=newsprint] #h-lw .live-wire-menu i{display:block;height:2px;background:currentColor;border-radius:1px}
html[data-theme=newsprint] #h-lw .live-wire-total{display:block;position:absolute;right:20px;top:50%;transform:translateY(-50%);font:600 10px/1.2 var(--ui);letter-spacing:0;text-transform:none;text-shadow:none;color:#e9e9e6}
@media(max-width:480px){html[data-theme=newsprint] #h-lw .live-wire-total{display:none}html[data-theme=newsprint] #h-lw .live-wire-menu{left:19px}}

.band-picks .band-picks-count:after,.band-header-ticket:after{content:attr(data-unit)}

/* Picked headlines are native publisher links as well as playlist entries. */
.band-picks-list p a,.band-picks-list p a:visited{color:inherit;font:inherit;text-decoration:none;cursor:pointer}
.band-picks-list p a:hover,.band-picks-list p a:focus-visible{color:#c8102e;text-decoration:underline;text-decoration-thickness:1.5px;text-underline-offset:2px}
.band-picks-list p a:focus-visible{outline:2px solid currentColor;outline-offset:-1px}
html:is([data-theme=dark],[data-theme=terminal]) .band-picks-list p a:hover,html:is([data-theme=dark],[data-theme=terminal]) .band-picks-list p a:focus-visible{color:#ff536c}

/* Playlist count seals also play the next selection. */
.band-picks .band-picks-count,.band-header-ticket{cursor:pointer;text-align:center}
.band-picks .band-picks-count:focus-visible,.band-header-ticket:focus-visible{outline:3px solid var(--accent,#c8102e);outline-offset:4px}
.band-picks .band-picks-count:disabled,.band-header-ticket:disabled{cursor:default}
@media(pointer:coarse){.band-header-ticket{min-width:44px;min-height:44px}}

/* Luminous Glass: a raised face with a visible layered base and a full-depth press. */
html[data-theme=newsprint] #grid .band-open{background:linear-gradient(180deg,#62666b 0%,#3a3d41 36%,#24262a 65%,#151619 100%);border-color:#d6223f;box-shadow:inset 0 2px 2px #ffffffa0,inset 0 -3px 5px #000a,0 2px 0 #b21a35,0 4px 0 #94152e,0 6px 0 #761225,0 8px 0 #580e1c,0 10px 0 #350b13,0 12px 0 #1d090d,0 15px 9px #0005,0 20px 18px #0002;transform:translateY(-3px);transition:transform .14s cubic-bezier(.2,.7,.2,1),box-shadow .14s cubic-bezier(.2,.7,.2,1),filter .18s ease}
html[data-theme=newsprint] #grid .band-open:before{background:linear-gradient(105deg,transparent 8%,#ffffff20 30%,#ffffff80 48%,#ffffff20 66%,transparent 88%);background-size:220% 100%;background-position:90% 0;transition:background-position .55s ease}
@media(hover:hover){html[data-theme=newsprint] #grid :is(.grp>h3,.more-preview-fade>h3,.col>h2,#h-lw):hover>.band-open{background:linear-gradient(180deg,#73777b 0%,#45484c 36%,#2b2d31 65%,#1b1c1f 100%);filter:none;transform:translateY(-3px);box-shadow:inset 0 2px 3px #ffffffb0,inset 0 -3px 5px #000a,0 2px 0 #d51e3d,0 4px 0 #ad1935,0 6px 0 #89142b,0 8px 0 #650f20,0 10px 0 #3c0b15,0 12px 0 #1d090d,0 15px 10px #0006,0 20px 18px #0002}html[data-theme=newsprint] #grid :is(.grp>h3,.more-preview-fade>h3,.col>h2,#h-lw):hover>.band-open:before{background-position:10% 0}}
html[data-theme=newsprint] #grid :is(.grp>h3,.more-preview-fade>h3,.col>h2,#h-lw):active>.band-open,html[data-theme=newsprint] #grid .band-open:active{transform:translateY(8px);filter:brightness(.96);box-shadow:inset 0 3px 6px #0009,inset 0 1px 1px #ffffff50,0 1px 0 #580e1c,0 2px 0 #350b13,0 3px 4px #0005;transition-duration:.06s}
@media(prefers-reduced-motion:reduce){html[data-theme=newsprint] #grid .band-open,html[data-theme=newsprint] #grid .band-open:before{transition:none}}

/* Live Wires directory study. Existing list order, controls and playlist remain intact. */
.band-reader.band-live-directory{width:min(1100px,calc(100% - 40px))}
.band-live-directory .band-reader-body{grid-template-columns:260px minmax(0,1fr)}
.band-live-directory .band-reader-body>.band-reader-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-content:start;column-gap:22px;padding:8px 24px 20px}
.band-live-directory .band-reader-list>li:has(>.band-save){min-width:0;min-height:66px;padding:12px 46px 10px 0}
.band-live-directory .band-reader-list>li:before{content:none}
.band-live-directory .band-reader-list>li>a{font:700 17px/1.22 var(--b);display:block;overflow-wrap:anywhere}
.band-live-directory .band-reader-list .band-reader-meta{margin:4px 0 0;font:11px/1.3 var(--ui);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.band-live-directory .band-reader-list .band-save{top:10px;right:0;width:38px;height:38px;font-size:23px}
.band-live-directory .band-reader-list .band-save:focus-visible{outline-offset:1px}
@media(max-width:800px){.band-reader.band-live-directory{width:calc(100% - 16px)}.band-live-directory .band-reader-body{display:flex}.band-live-directory .band-reader-body>.band-reader-list{width:100%;padding:0 18px 18px;column-gap:16px}.band-live-directory .band-reader-list>li:has(>.band-save){min-height:68px;padding:12px 46px 10px 0}.band-live-directory .band-reader-list>li>a{font-size:16px}.band-live-directory .band-reader-list .band-save{width:44px;height:44px;top:9px}}
@media(max-width:340px){.band-live-directory .band-reader-body>.band-reader-list{grid-template-columns:1fr}}

/* Newsroom: tactile charcoal section keys and the paper-colored Live Wires key. */
html[data-theme=newsprint] #grid .band-open{border:1px solid #2c3033;background:linear-gradient(#55595d 0%,#3b3f43 43%,#26292c 100%);color:#fff;text-shadow:0 1px 1px #0009;box-shadow:inset 0 1px 2px #ffffff70,inset 0 -2px 3px #0006,0 2px 0 #1d1d1e,0 5px 0 #171719,0 8px 7px #0004;transform:translateY(-2px);transition:transform .18s cubic-bezier(.2,.8,.2,1),box-shadow .18s,filter .18s}
html[data-theme=newsprint] #grid .band-open:before,html[data-theme=newsprint] #grid .band-open:after{content:none}
html[data-theme=newsprint] #grid #h-lw .band-open{border:1px solid #bcb5a9;background:linear-gradient(#fffdf8,#e7e2d8);color:#232323;text-shadow:none;box-shadow:inset 0 1px 1px #fff,0 2px 0 #c1baae,0 5px 0 #a9a294,0 8px 7px #0003}
html[data-theme=newsprint] #grid #h-lw .live-wire-total{color:#444}
html[data-theme=newsprint] #grid :is(#c2,#c3)>.sl>li.grp:nth-child(1 of :not([hidden]))>h3>.band-open{padding-inline:58px}
html[data-theme=newsprint] #grid :is(#c2,#c3)>.sl>li.grp:nth-child(1 of :not([hidden]))>h3>.band-open:before{content:'';display:block;position:absolute;inset:auto;left:22px;top:50%;width:19px;height:14px;transform:translateY(-50%);border:0;border-radius:0;background:linear-gradient(currentColor,currentColor) center top/19px 2px no-repeat,linear-gradient(currentColor,currentColor) center center/19px 2px no-repeat,linear-gradient(currentColor,currentColor) center bottom/19px 2px no-repeat;clip-path:inset(0 round 1px);z-index:2;pointer-events:none}
@media(hover:hover){html[data-theme=newsprint] #grid :is(.grp>h3,.more-preview-fade>h3,.col>h2,#h-lw):hover>.band-open{background:linear-gradient(#55595d 0%,#3b3f43 43%,#26292c 100%);color:#fff;filter:brightness(1.06);transform:translateY(-2px);box-shadow:inset 0 1px 2px #ffffff70,inset 0 -2px 3px #0006,0 2px 0 #1d1d1e,0 5px 0 #171719,0 8px 7px #0004}html[data-theme=newsprint] #grid #h-lw:hover>.band-open{background:linear-gradient(#fffdf8,#e7e2d8);color:#232323;box-shadow:inset 0 1px 1px #fff,0 2px 0 #c1baae,0 5px 0 #a9a294,0 8px 7px #0003}}
html[data-theme=newsprint] #grid :is(.grp>h3,.more-preview-fade>h3,.col>h2,#h-lw):active>.band-open,html[data-theme=newsprint] #grid .band-open:active{transform:translateY(7px);box-shadow:inset 0 4px 6px #0008,0 1px 2px #0004;transition-duration:.07s}
@media(prefers-reduced-motion:reduce){html[data-theme=newsprint] #grid .band-open{transition:none}}
html[data-theme=newsprint] #tag{margin:8px 0 0;font:600 10px/1.2 Arial,sans-serif;letter-spacing:.2em;text-transform:uppercase;color:#858580}

/* Paper: shallow raised bands and a small hover dip. */
html[data-theme=newsprint] #grid .band-open{box-shadow:inset 0 1px 2px #ffffff70,inset 0 -2px 3px #0006,0 3px 0 #171719,0 6px 7px #0004;transform:translateY(-1px)}
html[data-theme=newsprint] #grid #h-lw .band-open{box-shadow:inset 0 1px 1px #fff,0 3px 0 #b8b1a5,0 6px 7px #0003}
@media(hover:hover){html[data-theme=newsprint] #grid :is(.grp>h3,.more-preview-fade>h3,.col>h2,#h-lw):hover>.band-open{transform:translateY(1px);filter:brightness(1.04);box-shadow:inset 0 1px 2px #ffffff70,inset 0 -2px 3px #0006,0 1px 0 #171719,0 4px 5px #0003}html[data-theme=newsprint] #grid #h-lw:hover>.band-open{box-shadow:inset 0 1px 1px #fff,0 1px 0 #b8b1a5,0 4px 5px #0003}}
html[data-theme=newsprint] #grid :is(.grp>h3,.more-preview-fade>h3,.col>h2,#h-lw):active>.band-open,html[data-theme=newsprint] #grid .band-open:active{transform:translateY(7px);box-shadow:inset 0 4px 6px #0008,0 1px 2px #0004;transition-duration:.07s}

/* Compact charcoal band geometry, preserving the original label size. */
html[data-theme=newsprint] #grid .band-open:not(#h-lw .band-open){height:40px;min-height:40px;font-size:21px;line-height:1}

/* Newsroom: white section bands, red Live Wires, with top-row menu cues. */
html[data-theme=newsprint] #grid .band-open:not(#h-lw .band-open){height:46px;min-height:46px;border:1px solid #bcb5a9;background:linear-gradient(#fffdf8,#e7e2d8);color:#232323;font-size:21px;line-height:normal;text-shadow:none;box-shadow:inset 0 1px 1px #fff,0 2px 0 #c1baae,0 4px 7px #0003}
html[data-theme=newsprint] #grid #h-lw .band-open{border:1px solid #a91a38;background:linear-gradient(#c63552,#a71836);color:#fff;text-shadow:0 1px 1px #7008;box-shadow:inset 0 1px 1px #ffffff80,0 2px 0 #80152c,0 4px 7px #0003}
html[data-theme=newsprint] #grid #h-lw .live-wire-total{color:#fff}
@media(hover:hover){html[data-theme=newsprint] #grid :is(.grp>h3,.more-preview-fade>h3,.col>h2,#h-lw):hover>.band-open:not(#h-lw .band-open){background:linear-gradient(#fffdf8,#e7e2d8);color:#232323;box-shadow:inset 0 1px 1px #fff,0 1px 0 #c1baae,0 3px 5px #0003}html[data-theme=newsprint] #grid #h-lw:hover>.band-open{background:linear-gradient(#c63552,#a71836);color:#fff;box-shadow:inset 0 1px 1px #ffffff80,0 1px 0 #80152c,0 3px 5px #0003}}
html[data-theme=newsprint] #grid :is(.grp>h3,.more-preview-fade>h3,.col>h2,#h-lw):active>.band-open:not(#h-lw .band-open),html[data-theme=newsprint] #grid .band-open:not(#h-lw .band-open):active{transform:translateY(7px);box-shadow:inset 0 4px 6px #0005,0 1px 2px #0003;transition-duration:.07s}
html[data-theme=newsprint] #grid #h-lw:active>.band-open,html[data-theme=newsprint] #grid #h-lw .band-open:active{transform:translateY(7px);box-shadow:inset 0 4px 6px #0007,0 1px 2px #0003;transition-duration:.07s}

/* Night Shift follows the rounded LED wire and carousel frame. */
html[data-theme=dark] #grid :is(.col>h2,.grp>h3,.more-preview-fade>h3,#h-lw){border-radius:12px}
html[data-theme=dark] :is(#ad,.band-reader,.band-picks){border-radius:12px}
html[data-theme=dark] :is(#bar button,#bar .btn,.more .btn,#sponsor-invite>a){border-radius:8px}

/* Night Shift: a quiet broadcast desk around the red LED wire. */
html[data-theme=dark] body{background:radial-gradient(ellipse 75% 420px at 50% 0,#1b2028 0,#121315 66%,#121212 100%)}
html[data-theme=dark][data-statusat=top] #bar{padding:10px 2px;border-color:#343a43}
html[data-theme=dark] #wire-home #desk{letter-spacing:.2em;color:#e9edf3}
html[data-theme=dark] #bar #sponsor-top{background:#202a35;color:#d8eaf4;border:1px solid #455567;border-radius:7px;box-shadow:inset 0 1px #ffffff0d}
html[data-theme=dark] #bar #sponsor-top b{color:#7ccbe7;border-right-color:#455567}
html[data-theme=dark] #bar #sponsor-top:is(:hover,:focus-visible){background:#2b3a49;color:#fff}
html[data-theme=dark] #rp{border-color:#485362;background:#1b2027;color:#c5cfda;border-radius:7px}
html[data-theme=dark] #rp:hover{background:#27313c;color:#fff}
html[data-theme=dark][data-look] #mast{padding:23px 0 17px}
html[data-theme=dark] #mast-home{position:relative;padding:0 24px}
html[data-theme=dark][data-look] #brand{color:#eef1f4;letter-spacing:-.035em;text-shadow:0 2px 0 #000,0 8px 24px #0007}
html[data-theme=dark][data-look] #tag{display:flex;align-items:center;justify-content:center;gap:12px;margin-top:11px;color:#aebbc8;letter-spacing:.24em}
html[data-theme=dark] #tag:before,html[data-theme=dark] #tag:after{content:'';width:34px;height:1px;background:linear-gradient(90deg,transparent,#97534f)}
html[data-theme=dark] #tag:after{transform:scaleX(-1)}
html[data-theme=dark] #tag i{color:#ef7368}
html[data-theme=dark] #lg{color:#d0a8a2;letter-spacing:.18em}
html[data-theme=dark] #lk{border-color:#261817;box-shadow:inset 0 2px 8px #000,inset 0 -1px 0 #79423a,0 1px 0 #51403e,0 8px 22px #0006}
@media(max-width:700px){html[data-theme=dark][data-look] #mast{padding:18px 0 14px}html[data-theme=dark] #mast-home{padding:0 4px}html[data-theme=dark][data-look] #tag{gap:8px;letter-spacing:.16em}html[data-theme=dark] #tag:before,html[data-theme=dark] #tag:after{width:18px}}

/* Night Shift masthead: a full-width broadcast flag in the room's own palette. */
html[data-theme=dark][data-look] #mast{padding:17px 0 14px}
html[data-theme=dark] #mast:before,html[data-theme=dark] #mast:after{display:none}
html[data-theme=dark] #mast-home{display:block;flex:1 1 100%;width:100%;min-width:0;padding:0;overflow:hidden;border:1px solid #39424e;border-radius:12px 12px 0 0;background:linear-gradient(180deg,#222a34,#111720);box-shadow:inset 0 1px #ffffff12,0 5px 16px #0004}
html[data-theme=dark][data-look] #brand{padding:13px 16px 14px;border:0;color:#f1f3f5;text-shadow:0 2px 0 #000,0 5px 18px #0008}
html[data-theme=dark][data-look] #tag{width:100%;margin:0;padding:8px 12px;background:#8e302c;color:#fff;letter-spacing:.24em}
html[data-theme=dark] #tag:before,html[data-theme=dark] #tag:after{display:none}
html[data-theme=dark] #tag i{color:#ffd2c9}
@media(max-width:400px){html[data-theme=dark][data-look] #brand{font-size:clamp(24px,7.7vw,31px);white-space:nowrap;padding:10px 8px 11px}html[data-theme=dark][data-look] #tag{font-size:9px;letter-spacing:.13em}}

/* Night Shift newspaper plate, with the red line inside the dark flag. */
html[data-theme=dark] #mast{gap:16px}
html[data-theme=dark] #mast:before,html[data-theme=dark] #mast:after{display:block;flex:1;min-width:8px;height:5px;border:0;border-top:1px solid #65717f;border-bottom:1px solid #65717f}
html[data-theme=dark] #mast-home{flex:0 1 auto;width:auto;max-width:100%;padding:11px 24px 12px;border-radius:12px 12px 0 0}
html[data-theme=dark][data-look] #brand{padding:0 0 8px;border-bottom:3px solid #b63c38}
html[data-theme=dark][data-look] #tag{margin:8px 0 0;padding:0;background:none;color:#c8d1db}
@media(max-width:700px){html[data-theme=dark] #mast{gap:6px}html[data-theme=dark] #mast-home{padding:9px 10px 10px}html[data-theme=dark][data-look] #brand{padding:0 0 7px}}

/* The Night Shift plate spans the page without side rules. */
html[data-theme=dark] #mast:before,html[data-theme=dark] #mast:after{display:none}
html[data-theme=dark] #mast-home{flex:1 1 100%;width:100%}

/* Night Shift shares the reference plate's bold condensed italic masthead. */
html[data-theme=dark][data-look] #brand{font:italic 900 clamp(32px,8.2vw,96px)/.95 Impact,Haettenschweiler,'Arial Narrow Bold','Arial Black',sans-serif;letter-spacing:0;text-shadow:none}
@media(max-width:400px){html[data-theme=dark][data-look] #brand{font-size:clamp(24px,7.7vw,31px);white-space:nowrap}}
html[data-theme=dark] #mast-home{background:#191919;border-color:#444;box-shadow:0 3px 0 #080808,0 8px 18px #0005}
html[data-theme=dark][data-look] #brand{color:#f6f4ef;border-bottom-color:#c8102e}

/* Night Shift engraved plate: inset frame and red marks around the tagline. */
html[data-theme=dark] #mast-home{padding:13px 25px 11px;border:1px solid #777;border-bottom:none;box-shadow:none}
html[data-theme=dark][data-look] #brand{padding:4px 10px 8px;border:0}
html[data-theme=dark][data-look] #tag{gap:13px;margin:0;color:#d5d1c8}
html[data-theme=dark] #tag:before,html[data-theme=dark] #tag:after{content:'';display:block;flex:none;width:30px;height:2px;background:#c8102e;transform:none}
@media(max-width:700px){html[data-theme=dark] #mast-home{padding:10px 8px}html[data-theme=dark][data-look] #brand{padding:4px 3px 8px}html[data-theme=dark] #tag:before,html[data-theme=dark] #tag:after{width:18px}}

/* Fixed, non-interactive stars sit behind Night Shift content only. */
html[data-theme=dark]{background:radial-gradient(ellipse 75% 420px at 50% 0,#1b2028 0,#121315 66%,#121212 100%) fixed}
html[data-theme=dark] body{background:transparent}
.night-stars{position:fixed;inset:0;z-index:-1;pointer-events:none;display:none}
html[data-theme=dark] .night-stars:not([hidden]){display:block}

/* Night Shift section keys: cool metal faces, visible menu cues and a stationary press. */
html[data-theme=dark] #grid :is(.grp>h3,.more-preview-fade>h3,.col>h2,#h-lw):has(>.band-open){padding:0 0 8px;border:0;background:none;box-shadow:none;overflow:visible}
html[data-theme=dark] #grid .band-open{position:relative;display:block;width:100%;min-height:46px;padding:8px 14px;border:1px solid #526679;border-radius:10px;background:linear-gradient(180deg,#34485b 0%,#223343 48%,#172431 100%);color:#e8f1f7;font:inherit;letter-spacing:inherit;text-transform:inherit;text-align:center;text-shadow:0 1px 2px #000;box-shadow:inset 0 1px 1px #ffffff40,inset 0 -2px 3px #0006,0 3px 0 #0b141e,0 5px 8px #0007;transform:none;transition:background .16s ease,box-shadow .16s ease,filter .16s ease}
html[data-theme=dark] #grid #h-lw .band-open{border-color:#9b4a48;background:linear-gradient(180deg,#8d4543,#592523);color:#fff;box-shadow:inset 0 1px 1px #ffffff40,inset 0 -2px 3px #0006,0 3px 0 #311413,0 5px 8px #0007}
@media(hover:hover){html[data-theme=dark] #grid .band-open:hover{filter:brightness(1.18);box-shadow:inset 0 1px 2px #ffffff55,inset 0 -2px 3px #0006,0 2px 0 #0b141e,0 3px 6px #0006}}
html[data-theme=dark] #grid .band-open:active{transform:none;filter:brightness(.94);box-shadow:inset 0 4px 7px #000a,inset 0 1px 2px #0008,0 1px 2px #0006;transition-duration:.06s}
html[data-theme=dark] #grid :is(#c2,#c3)>.sl>li.grp:nth-child(1 of :not([hidden]))>h3>.band-open,html[data-theme=dark] #grid #h-lw .band-open{padding-inline:54px}
html[data-theme=dark] #grid :is(#c2,#c3)>.sl>li.grp:nth-child(1 of :not([hidden]))>h3>.band-open:before{content:'';display:block;position:absolute;inset:auto;left:19px;top:50%;width:18px;height:14px;transform:translateY(-50%);border:0;border-radius:0;background:linear-gradient(currentColor,currentColor) center top/18px 2px no-repeat,linear-gradient(currentColor,currentColor) center center/18px 2px no-repeat,linear-gradient(currentColor,currentColor) center bottom/18px 2px no-repeat;clip-path:inset(0 round 1px);z-index:2;pointer-events:none}
html[data-theme=dark] #h-lw .live-wire-menu{position:absolute;left:19px;top:50%;transform:translateY(-50%);display:grid;gap:4px;width:18px}
html[data-theme=dark] #h-lw .live-wire-menu i{display:block;height:2px;background:currentColor;border-radius:1px}
html[data-theme=dark] #h-lw .live-wire-total{display:block;position:absolute;right:16px;top:50%;transform:translateY(-50%);font:600 10px/1.2 var(--ui);letter-spacing:0;text-transform:none;text-shadow:none;color:#f5dedc}
@media(max-width:480px){html[data-theme=dark] #h-lw .live-wire-total{display:none}}
@media(prefers-reduced-motion:reduce){html[data-theme=dark] #grid .band-open{transition:none}}

/* Keyboard guidance sits beside the playlist's existing launch control. */
.band-shortcut-hint{display:none;margin:10px 1px 0;color:var(--mu);font:600 11px/1.5 var(--ui);letter-spacing:0;text-transform:none}
.band-shortcut-hint kbd{display:inline-block;margin:0 3px 0 0;padding:1px 5px;border:1px solid var(--hr);border-radius:4px;background:var(--bg);color:var(--fg);font:700 10px/1.4 var(--ui);white-space:nowrap}
.band-shortcut-hint kbd+*{margin-left:0}
@media(hover:hover) and (pointer:fine){.band-picks[data-ready=true] .band-shortcut-hint{display:block}}

/* Optional Night Shift reading window uses the reader's real playlist. */
.band-split-tip{display:none;margin:6px 0 0;color:var(--mu);font:11px/1.35 var(--ui);text-align:center}
.band-split-start{display:none;margin:10px 0 0;width:100%;padding:8px 10px;border:1px solid #526679;border-radius:6px;background:#223343;color:#e8f1f7;font:700 11px/1.3 var(--ui);text-align:center}
@media(min-width:801px) and (pointer:fine){html[data-theme=dark]:not([data-side-by-side]) .band-picks[data-ready=true] .band-split-start,html[data-theme=dark]:not([data-side-by-side]) .band-picks[data-ready=true] .band-split-tip{display:block}}
html[data-side-by-side=open] body>*:not(#band-reader){visibility:hidden}
html[data-side-by-side=open] #band-reader{visibility:visible;position:fixed;inset:0;margin:0;width:100%;height:100dvh;max-width:none;max-height:none;border:0;border-radius:0;box-shadow:none;animation:none}
html[data-side-by-side=open] .band-reader::backdrop{background:var(--bg)}
html[data-side-by-side=open] .band-reader-head{padding:18px 78px 16px 18px}
html[data-side-by-side=open] .band-reader-head h2{font:800 20px/1.2 var(--ui);text-transform:none}
html[data-side-by-side=open] .band-reader-head .band-header-ticket,html[data-side-by-side=open] .band-reader-list,html[data-side-by-side=open] .band-reader-footer,html[data-side-by-side=open] .band-split-start,html[data-side-by-side=open] .band-split-tip{display:none!important}
html[data-side-by-side=open] .band-reader-body{display:block}
html[data-side-by-side=open] .band-picks{position:relative;top:auto;display:flex;width:auto;max-height:none;margin:16px 18px 22px}
html[data-side-by-side=open] .band-picks[data-ready=true]{max-height:none;overflow:visible}
html[data-side-by-side=open] .band-shortcut-hint{display:block}

html[data-side-by-side=open] .band-reader-note{padding:9px 18px;color:var(--mu);font:11px/1.4 var(--ui);letter-spacing:0;text-transform:none}

/* Your Ad on the Wire: approved two-tone button */
#bar #sponsor-top{display:inline-flex;align-items:center;gap:8px;min-height:40px;padding:3px 14px 3px 4px;background:#ece8dc;color:#25231e;border:1px solid #c9c0b2;border-radius:999px;box-shadow:0 2px 4px #0002;transition:transform .16s,box-shadow .16s,filter .16s;text-decoration:none}#bar #sponsor-top b{display:flex;align-items:center;justify-content:center;flex:none;align-self:auto;width:30px;height:30px;min-width:30px;background:#c83e27;color:#fff;border:0;border-radius:50%;font:700 17px/1 Arial,sans-serif}#bar #sponsor-top .bt{padding:0;line-height:1.2}#bar #sponsor-top:hover{transform:translateY(-1px);filter:brightness(1.08)}#bar #sponsor-top:focus-visible{outline:3px solid #e44b2a;outline-offset:3px}@media(prefers-reduced-motion:reduce){#bar #sponsor-top{transition:none}#bar #sponsor-top:hover{transform:none}}

/* Keep section links in their own bands, not floating beside a longer column. */
.dock{display:none}

/* Compact AD.s identity in the advertising invitation. */
#sponsor-invite .ad-provider-brand{display:inline-flex;align-items:center;gap:12px;max-width:100%;padding:9px 14px 9px 9px;margin-top:9px;border:1px solid color-mix(in srgb,var(--fg) 18%,transparent);border-radius:12px;background:var(--bg);color:var(--fg);box-shadow:0 2px 8px #0000000a;text-decoration:none}#sponsor-invite .ad-provider-brand img{flex:none;width:40px;height:40px;border-radius:9px}#sponsor-invite .ad-provider-tag{display:flex;align-items:center;gap:8px;border-left:1px solid color-mix(in srgb,var(--fg) 22%,transparent);padding-left:12px;font:600 12px/1.3 Arial,'Helvetica Neue',sans-serif;letter-spacing:0;text-transform:none}#sponsor-invite .ad-provider-spark{flex:none;color:#e65331;font:normal 20px/1 Arial,sans-serif}#sponsor-invite .ad-provider-brand:hover{text-decoration:none;border-color:var(--fg)}@media(max-width:360px){#sponsor-invite .ad-provider-brand{gap:8px;padding-right:10px}#sponsor-invite .ad-provider-tag{padding-left:8px;gap:6px;font-size:11px}}

/* Dark Slate shares the quiet ticker and explicit sound toggle. */
[data-theme=dark] #snd{display:block}


/* Dark mode keeps the existing three-room switch and mute in one capsule. */
#mode-controls{display:contents}
html[data-theme=dark] #mode-controls{display:flex;align-items:stretch;position:fixed;right:12px;bottom:12px;z-index:50;border:1px solid color-mix(in srgb,var(--text-accent) 55%,transparent);border-radius:999px;background:var(--bg);box-shadow:0 8px 26px #0000003d;isolation:isolate;overflow:visible}
html[data-theme=dark] #mode-controls #rooms{position:relative;inset:auto!important;margin:0;border:0;box-shadow:none;background:none;-webkit-backdrop-filter:none;backdrop-filter:none}
html[data-theme=dark] #mode-controls #snd{position:relative;inset:auto!important;display:flex;align-items:center;justify-content:center;flex:none;width:40px;height:46px;margin:0;padding:0;border:0;border-left:1px solid var(--hr);border-radius:0 999px 999px 0;background:transparent;box-shadow:none}
html[data-theme=dark] #mode-controls #snd:focus-visible{outline:2px solid var(--text-accent);outline-offset:-4px}

/* Keep playlist selection available on phones; split view stays disabled. */
.band-split-start,.band-split-tip{display:none!important}
@media(max-width:800px),(pointer:coarse) and (max-height:600px){.band-has-picks .band-reader-head{padding-right:78px}}
@media(max-width:600px){.band-reader-body>.band-reader-list{order:0}.band-picks{order:1;margin:12px 16px 18px;width:calc(100% - 32px);max-height:none;border-radius:3px}.band-picks[data-ready=false]{margin-top:8px}.band-picks .band-picks-header,.band-live-directory .band-picks .band-picks-header{grid-template-columns:minmax(0,1fr) 76px;gap:12px 9px}.band-picks .band-picks-count,.band-live-directory .band-picks .band-picks-count{width:76px;min-width:76px;height:76px}.band-picks .band-picks-guide .band-picks-manicule{font-size:78px}.band-picks .band-picks-summary{margin-top:8px;font-size:9px}.band-picks .band-picks-play{left:calc(50% - 6px);top:calc(50% - 11px);border-top-width:11px;border-bottom-width:11px;border-left-width:18px}html[data-theme=newsprint] .band-picks[data-ready=true] .band-picks-header{padding:16px 14px 18px}html[data-theme=newsprint] .band-picks .band-picks-header h3{padding-bottom:11px;font-size:25px}html[data-theme=newsprint] .band-picks .band-picks-action{padding:0 14px 12px}html[data-theme=newsprint] .band-picks .band-launch-headline{font-size:19px}html[data-theme=newsprint] .band-picks .band-picks-list{padding-inline:14px}}

/* The story card stays a play target, while its count seal advertises the click. */
html[data-theme=newsprint] .band-picks[data-ready=true] .band-launch-source{display:none!important}
.band-picks .band-picks-count{width:76px;min-width:76px;height:76px;padding:0;display:grid;place-items:center;position:relative}
.band-picks .band-picks-count:after{content:none!important}
.band-picks .band-picks-number{position:relative;z-index:1;display:block;font:700 24px/1 Georgia,'Times New Roman',serif;letter-spacing:-.04em}
.band-picks .band-picks-ring{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none}
.band-picks .band-picks-ring text{font:800 5px/1 var(--ui);letter-spacing:.45px;fill:currentColor}

/* Mix ordinary right-edge thumbnails with selected larger in-row images. */
#grid .sl li.has-column-photo{display:flow-root}
#grid .sl li.photo-loading{position:relative}
#grid .sl li.photo-loading .column-photo-wrap.photo-pending{position:absolute;top:0;left:0;width:1px;min-width:0;max-width:1px;height:1px;margin:0;overflow:hidden;opacity:0;pointer-events:none}
#grid .sl li .column-photo-original{image-rendering:auto}
#grid .sl li .column-photo-wrap{float:right;display:block;width:38%;min-width:112px;max-width:170px;margin:3px 0 6px 10px}
#grid .sl li .column-photo{display:block;width:100%;height:auto;aspect-ratio:16/9;background:#242424;image-rendering:pixelated}
#grid .sl li.has-column-photo>a[data-id]{display:inline}
#grid .sl li.photo-featured .column-photo-wrap{float:right;width:58%;max-width:240px;margin:3px 0 8px 12px}
@media(max-width:480px){#grid .sl li .column-photo-wrap{float:right;width:48%;min-width:132px;max-width:220px;margin:4px 0 7px 10px}#grid .sl li.photo-featured .column-photo-wrap{float:none;width:100%;min-width:0;max-width:none;margin:4px 0 9px}}

/* Type-set photo widths against headline length; stable per-story rotation adds restrained editorial variety. */
#grid .sl li.photo-layout-compact .column-photo-wrap{width:36%;max-width:160px}
#grid .sl li.photo-layout-balanced .column-photo-wrap{width:46%;max-width:215px}
@media(max-width:480px){#grid .sl li.photo-layout-compact .column-photo-wrap{width:42%;min-width:124px;max-width:190px}
#grid .sl li.photo-layout-balanced .column-photo-wrap{width:48%;min-width:136px;max-width:220px}}

/* Longer headlines get a shared-height text/photo row; centered cover fill removes the empty block below photos. */
#grid .sl li:is(.photo-layout-fill-balanced,.photo-layout-fill-even){display:grid;grid-template-columns:minmax(0,55fr) minmax(0,45fr);column-gap:10px;align-items:stretch}
#grid .sl li.photo-layout-fill-even{grid-template-columns:minmax(0,50fr) minmax(0,50fr)}
#grid .sl li:is(.photo-layout-fill-balanced,.photo-layout-fill-even) .column-photo-wrap{float:none;grid-column:2;grid-row:1 / span 2;width:100%;min-width:0;max-width:none;height:100%;min-height:0;margin:0;overflow:hidden}
#grid .sl li:is(.photo-layout-fill-balanced,.photo-layout-fill-even) .column-photo{width:100%;height:100%;min-height:0;aspect-ratio:auto;object-fit:cover;object-position:center center}
#grid .sl li:is(.photo-layout-fill-balanced,.photo-layout-fill-even)>a[data-id]{grid-column:1;grid-row:1;min-width:0}
#grid .sl li:is(.photo-layout-fill-balanced,.photo-layout-fill-even)>.meta{grid-column:1;grid-row:2;min-width:0}
@media(max-width:480px){#grid .sl li:is(.photo-layout-fill-balanced,.photo-layout-fill-even){column-gap:8px}
#grid .sl li.photo-layout-fill-balanced{grid-template-columns:minmax(0,53fr) minmax(0,47fr)}
#grid .sl li.photo-layout-fill-even{grid-template-columns:minmax(0,48fr) minmax(0,52fr)}
#grid .sl li:is(.photo-layout-fill-balanced,.photo-layout-fill-even) .column-photo-wrap{float:none;width:100%;min-width:0;max-width:none;height:100%;margin:0}}
/* Extremely long copy uses a compact stacked row so the complete original image stays uncropped. */
#grid .sl li.photo-layout-stacked{display:flex;flex-direction:column;gap:8px}
#grid .sl li.photo-layout-stacked .column-photo-wrap{float:none;width:100%;min-width:0;max-width:360px;margin:0 0 2px}

/* A 1978-style paste-up: display serif, an oversized printer's hand, and a flat ink seal. */
.band-picks .band-picks-header{position:relative;grid-template-columns:minmax(0,1fr) 68px 76px;gap:10px;padding:22px 14px;min-height:124px;box-sizing:border-box}
.band-picks[data-ready=true] .band-picks-header{background:#b3262d;border-color:#b3262d;color:#fff2d7}
.band-picks[data-ready=true] .band-picks-header:before,.band-picks[data-ready=true] .band-picks-header:after{content:"";position:absolute;left:14px;right:14px;border-top:1px solid currentColor;opacity:.5;pointer-events:none}
.band-picks[data-ready=true] .band-picks-header:before{top:9px}
.band-picks[data-ready=true] .band-picks-header:after{bottom:9px}
html .band-picks .band-picks-header h3{margin:0;font:700 italic 24px/.95 Georgia,'Times New Roman',serif;letter-spacing:-.055em;text-transform:none}
.band-picks .band-picks-title-line{display:block;white-space:nowrap}
.band-picks .band-picks-manicule{display:block;align-self:center;justify-self:center;margin:0;transform:translateY(-2px);font:400 68px/1 "Apple Symbols","Segoe UI Symbol",serif;letter-spacing:0;pointer-events:none}
.band-picks[data-ready=false] .band-picks-header{grid-template-columns:1fr;min-height:0;padding:18px 16px 0}
.band-picks[data-ready=false] .band-picks-title-line{display:inline}
html .band-picks[data-ready=false] h3{font-size:21px;line-height:1.1}
.band-picks[data-ready=false] .band-picks-manicule{display:none}
.band-picks .band-picks-count{width:76px;min-width:76px;height:76px;box-sizing:border-box;display:grid;place-items:center;position:relative;overflow:visible;padding:0;border:3px double #29231d;border-radius:50%;background:#f8efd9;color:#29231d;opacity:1;box-shadow:none;font:700 24px/1 Georgia,'Times New Roman',serif;letter-spacing:0;transform:rotate(0deg);transform-origin:50% 8px;transition:background .16s ease,transform .16s ease}
.band-picks .band-picks-count:before{content:""!important;position:absolute;inset:5px;border:1px solid #29231d75;border-radius:50%;pointer-events:none}
.band-picks .band-picks-count:after{content:none!important}
.band-picks .band-picks-ring text.band-picks-ring-unit{font:700 10px/1 Georgia,'Times New Roman',serif;letter-spacing:.6px}
.band-picks .band-picks-number{position:absolute;z-index:1;top:44%;left:0;right:0;display:block;transform:translateY(-50%);font:700 32px/.9 Georgia,'Times New Roman',serif;letter-spacing:-.04em;font-variant-numeric:lining-nums tabular-nums}
.band-picks .band-picks-ring{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none}
.band-picks .band-picks-ring text{font:700 8px/1 Georgia,'Times New Roman',serif;letter-spacing:.7px;fill:currentColor}
.band-picks .band-picks-count:hover:not(:disabled){transform:translateY(-1px);background:#fff7e4;box-shadow:none}
.band-picks .band-picks-count:focus-visible{outline:2px solid currentColor;outline-offset:5px}
/* The narrower directory rail retains a dedicated space for the hand. */
.band-live-directory .band-picks .band-picks-header{grid-template-columns:minmax(0,1fr) 54px 66px;padding-inline:12px;gap:8px}
.band-live-directory .band-picks[data-ready=false] .band-picks-header{grid-template-columns:1fr}
html .band-live-directory .band-picks h3{font-size:21px}
.band-live-directory .band-picks .band-picks-manicule{font-size:54px}
.band-live-directory .band-picks .band-picks-count{width:66px;min-width:66px;height:66px}
.band-live-directory .band-picks .band-picks-number{font-size:28px}
html[data-theme=terminal] .band-picks h3{font:400 16px/1.12 var(--ui);letter-spacing:0}
/* Newsroom galley: warm stock and a complete wire-framed miniature front page. */
html[data-theme=newsprint] .band-picks{border:1px solid #3c3028;border-radius:0;background:#f5eddc;box-shadow:none}
html[data-theme=newsprint] .band-picks .band-picks-action{padding:16px 14px 12px}
html[data-theme=newsprint] .band-picks .band-queue-button:not(:disabled){padding:12px 11px 0;border:1px solid #392f26;border-top:3px double #392f26;border-radius:6px;background:#fcf5e7;color:#29231d;box-shadow:none}
html[data-theme=newsprint] .band-picks .band-queue-button:hover:not(:disabled){background:#fff5df;box-shadow:none}
html[data-theme=newsprint] .band-picks .band-launch-publication{margin-bottom:8px;padding-bottom:7px;border-bottom:1px solid #392f2645;font:700 10px/1.3 'Helvetica Neue',Arial,sans-serif;letter-spacing:.08em}
html[data-theme=newsprint] .band-picks .band-launch-kicker{font:700 8px/1.2 'Helvetica Neue',Arial,sans-serif;letter-spacing:.16em;color:#b3262d}
html[data-theme=newsprint] .band-picks .band-launch-headline{font:700 18px/1.15 Georgia,'Times New Roman',serif;letter-spacing:-.035em;margin-bottom:12px}
html[data-theme=newsprint] .band-picks .band-launch-source{margin:0;padding:8px 0;border-top:1px solid #392f2645;background:transparent;color:#b3262d;font:700 10px/1.3 'Helvetica Neue',Arial,sans-serif;letter-spacing:.06em;text-transform:uppercase}
html[data-theme=newsprint] .band-picks .band-shortcut-hint{font:400 9px/1.6 'Courier New',monospace;color:#6a5b4b}
html[data-theme=newsprint] .band-picks .band-shortcut-hint kbd{border-color:#b6a994;border-radius:0;background:transparent;color:#392f26;font:700 9px/1.4 'Courier New',monospace}
html[data-theme=newsprint] .band-picks .band-picks-list{border-color:#b6a994}
html[data-theme=newsprint] .band-picks .band-pick-source{font:700 10px/1.3 'Helvetica Neue',Arial,sans-serif;letter-spacing:.02em;color:#b3262d}
html[data-theme=newsprint] .band-picks .band-pick-source:before{content:none}
@media(prefers-reduced-motion:no-preference){
@keyframes band-seal-pendulum{0%,100%{transform:rotate(0deg)}18%{transform:rotate(12deg)}36%{transform:rotate(0deg)}54%{transform:rotate(-12deg)}72%{transform:rotate(0deg)}87%{transform:rotate(5deg)}}
.band-picks .band-picks-count.band-seal-pendulum,.band-header-ticket.band-seal-pendulum{animation:band-seal-pendulum 1.05s cubic-bezier(.42,0,.58,1)}
html[data-paused] .band-picks .band-picks-count,html[data-paused] .band-header-ticket{animation-play-state:paused}
}

/* Approved record-label playlist: the hand leads to play; its count sits below. */
.band-picks .band-picks-header,.band-live-directory .band-picks .band-picks-header{grid-template-columns:minmax(0,1fr) 103px;gap:20px 14px;min-height:0}
.band-picks .band-picks-header h3{grid-column:1 / -1}
.band-picks .band-picks-guide{display:flex;min-width:0;flex-direction:column;align-items:center;justify-content:center}
.band-picks .band-picks-guide .band-picks-manicule{font-size:108px;line-height:.8;transform:none;align-self:auto;justify-self:auto}
.band-picks .band-picks-summary{margin:13px 0 0;font:700 10px/1.4 Arial,Helvetica,sans-serif;letter-spacing:.12em;text-transform:uppercase;white-space:nowrap;color:inherit}
.band-picks .band-picks-summary .band-picks-number{position:static;display:inline;transform:none;font:inherit;letter-spacing:inherit}

/* Permanent arena scoreboard; keep it beside Close without crowding the title. */
.band-has-picks .band-reader-head{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:12px;padding:18px 20px}
.band-has-picks .band-reader-head>.band-reader-kicker{grid-column:1;grid-row:1;margin:0;min-width:0}
.band-has-picks .band-reader-head>h2{grid-column:1 / -1;grid-row:2}
.band-has-picks .band-reader-head>.band-reader-close{position:static;grid-column:3;grid-row:1;align-self:start;margin:0}
.band-has-picks .band-header-ticket{position:static;grid-column:2;grid-row:1;display:flex;width:88px;height:80px;min-width:88px;padding:8px 6px;border:2px solid #454545;border-radius:5px;background:#080808;color:#ff3038;box-shadow:inset 0 0 0 2px #111,0 2px 5px #0005;letter-spacing:0;opacity:1;text-shadow:none;animation:none}
.band-has-picks .band-header-ticket:after{font:800 9px/1 var(--ui);letter-spacing:.13em;margin-top:8px;color:#ff6a6e}
.band-score-digits{display:flex;justify-content:center;gap:5px;perspective:160px}
.band-score-digit{position:relative;display:block;width:21px;height:38px}
.band-score-segment{position:absolute;display:block;background:#ff2635;opacity:.12}
.band-score-segment.score-on{opacity:1;filter:drop-shadow(0 0 2px #ff2635)}
.band-score-segment:is(.score-a,.score-d,.score-g){left:3px;width:15px;height:4px;clip-path:polygon(15% 0,85% 0,100% 50%,85% 100%,15% 100%,0 50%)}
.score-a{top:0}.score-g{top:17px}.score-d{bottom:0}
.band-score-segment:is(.score-b,.score-c,.score-e,.score-f){width:4px;height:15px;clip-path:polygon(50% 0,100% 15%,100% 85%,50% 100%,0 85%,0 15%)}
.score-b{right:0;top:3px}.score-c{right:0;bottom:3px}.score-e{left:0;bottom:3px}.score-f{left:0;top:3px}
.band-score-tick{animation:band-score-tick .3s ease-out both;transform-origin:center}
.band-header-ticket[data-digits="3"] .band-score-digits{gap:4px}
.band-header-ticket[data-digits="3"] .band-score-digit{width:16px;height:32px}
.band-header-ticket[data-digits="3"] .band-score-segment:is(.score-a,.score-d,.score-g){width:10px}
.band-header-ticket[data-digits="3"] .score-g{top:14px}
.band-header-ticket[data-digits="3"] .band-score-segment:is(.score-b,.score-c,.score-e,.score-f){height:12px}
@keyframes band-score-tick{0%{transform:rotateX(-65deg);opacity:.35}65%{transform:rotateX(10deg);opacity:1}100%{transform:rotateX(0)}}
html[data-paused] .band-score-tick{animation-play-state:paused}
@media(max-width:600px){.band-has-picks .band-reader-head{gap:10px;padding:14px 12px}.band-has-picks .band-reader-kicker{font-size:8px;letter-spacing:.09em}.band-has-picks .band-header-ticket{width:76px;min-width:76px;height:76px}.band-score-digit{width:19px}.band-score-segment:is(.score-a,.score-d,.score-g){width:13px}.band-has-picks .band-header-ticket:after{font-size:8px}.band-has-picks .band-reader-head>.band-reader-close{padding:9px 7px}}
@media(prefers-reduced-motion:reduce){.band-score-tick{animation:none}}

/* A newly checked story makes the hand point down, then up, beside the play seal. */
.band-picks .band-picks-manicule.band-hand-point{display:inline-block;transform-origin:28% 55%;animation:band-hand-point 1.05s cubic-bezier(.42,0,.58,1)}
@keyframes band-hand-point{0%,100%{transform:rotate(0)}22%{transform:rotate(32deg)}52%{transform:rotate(-28deg)}76%{transform:rotate(12deg)}}
html[data-paused] .band-hand-point{animation-play-state:paused}
@media(prefers-reduced-motion:reduce){.band-picks .band-picks-manicule.band-hand-point{animation:none}}
.band-picks .band-picks-count,.band-live-directory .band-picks .band-picks-count{width:103px;min-width:103px;height:103px}
.band-picks .band-picks-play{position:absolute;left:calc(50% - 7px);top:calc(50% - 13px);width:0;height:0;border-top:13px solid transparent;border-bottom:13px solid transparent;border-left:21px solid currentColor;pointer-events:none}
.band-picks[data-ready=false] .band-picks-guide{display:none}
html[data-theme=newsprint] .band-picks{background:#f7f0e1;border-color:#30281f;scrollbar-gutter:auto}
html[data-theme=newsprint] .band-picks[data-ready=true] .band-picks-header{padding:22px 20px 24px;background:#f7f0e1;color:#30281f;border-bottom:0}
html[data-theme=newsprint] .band-picks[data-ready=true] .band-picks-header:before,html[data-theme=newsprint] .band-picks[data-ready=true] .band-picks-header:after{content:none}
html[data-theme=newsprint] .band-picks .band-picks-header h3{padding:0 0 16px;border-bottom:3px double #30281f;font:700 31px/.98 Georgia,'Times New Roman',serif;letter-spacing:-.045em;text-transform:none}
html[data-theme=newsprint] .band-picks[data-ready=false] .band-picks-header h3{border:0;padding:0;font-size:24px}
html[data-theme=newsprint] .band-picks .band-picks-count{border:1px solid #b3262d;background:#b3262d;color:#fff6df;box-shadow:none;transform-origin:50% 8px}
html[data-theme=newsprint] .band-picks .band-picks-count:before{inset:5px;border:1px solid currentColor;opacity:.5}
html[data-theme=newsprint] .band-picks .band-picks-count:hover:not(:disabled){background:#972027;box-shadow:none}
html[data-theme=newsprint] .band-picks .band-picks-count:focus-visible{outline-color:#b3262d}
html[data-theme=newsprint] .band-picks .band-picks-ring text{font:700 8px/1 Arial,Helvetica,sans-serif;letter-spacing:1px}
html[data-theme=newsprint] .band-picks .band-picks-action{padding:0 18px 15px}
html[data-theme=newsprint] .band-picks .band-queue-button:not(:disabled){padding:0;border:0;border-radius:0;background:transparent;color:#30281f;box-shadow:none;overflow:visible}
html[data-theme=newsprint] .band-picks .band-queue-button:hover:not(:disabled){background:transparent;color:#30281f;box-shadow:none}
html[data-theme=newsprint] .band-picks .band-launch-kicker{display:flex;align-items:center;gap:10px;order:0;margin:0 0 12px;font:700 9px/1.4 Arial,Helvetica,sans-serif;letter-spacing:.16em;color:#b3262d}
html[data-theme=newsprint] .band-picks .band-launch-kicker:after{content:'';height:1px;flex:1;background:#d0c5b2}
html[data-theme=newsprint] .band-picks .band-launch-publication{order:1;margin:0 0 7px;padding:0;border:0;font:700 10px/1.4 Arial,Helvetica,sans-serif;letter-spacing:.025em;text-transform:none}
html[data-theme=newsprint] .band-picks .band-launch-headline{display:block;order:2;margin:0 0 15px;overflow:visible;font:700 21px/1.13 Georgia,'Times New Roman',serif;letter-spacing:-.035em;-webkit-line-clamp:unset}
html[data-theme=newsprint] .band-picks .band-shortcut-hint{display:block;margin:0;padding:13px 0 0;border-top:1px solid #d0c5b2;font:400 10px/1.6 Arial,Helvetica,sans-serif;color:#776a58}
html[data-theme=newsprint] .band-picks .band-shortcut-hint kbd{border:1px solid #c5b79f;border-bottom-width:2px;border-radius:2px;font:700 10px/1.4 Arial,Helvetica,sans-serif;color:#30281f}
html[data-theme=newsprint] .band-picks .band-picks-list{padding:0 18px;border-top:1px solid #ac9d84}
html[data-theme=newsprint] .band-picks .band-picks-list li{padding:15px 24px 15px 0;border-color:#d0c5b2}
html[data-theme=newsprint] .band-picks .band-pick-source{font:700 10px/1.4 Arial,Helvetica,sans-serif;letter-spacing:.025em;color:#b3262d}
html[data-theme=newsprint] .band-picks .band-picks-list p{display:block;margin-top:5px;font:700 13px/1.4 Arial,Helvetica,sans-serif;letter-spacing:-.01em;-webkit-line-clamp:unset}
@media(prefers-reduced-motion:reduce){.band-picks .band-picks-count{transition:none}}

/* Floating back-to-top control, positioned above the room switch. */
.page-jump{position:fixed;right:14px;bottom:68px;z-index:49;width:50px;height:50px;padding:4px 0 3px;border:1px solid color-mix(in srgb,var(--text-accent) 58%,transparent);border-radius:17px;background:color-mix(in srgb,var(--bg) 88%,transparent);color:var(--fg);-webkit-backdrop-filter:blur(12px) saturate(1.3);backdrop-filter:blur(12px) saturate(1.3);box-shadow:0 5px 18px #0003,inset 0 1px 0 #ffffff35;display:flex;flex-direction:column;align-items:center;justify-content:center;line-height:1;cursor:pointer;opacity:0;pointer-events:none;transform:translateY(10px);transition:opacity .22s ease,transform .22s ease,background .18s,color .18s}
.page-jump.is-visible{opacity:1;pointer-events:auto;transform:none}
.page-jump:hover{background:var(--text-accent);color:var(--on-ac);transform:translateY(-2px)}
.page-jump:focus-visible{outline:3px solid var(--text-accent);outline-offset:3px}
.page-jump{font-size:26px;font-weight:900}
.page-jump-label{font:800 8px/1 var(--ui);letter-spacing:.08em;margin-top:2px}
@media(max-width:600px){.page-jump{right:10px;bottom:72px;width:46px;height:46px;border-radius:15px}}
@media(prefers-reduced-motion:reduce){.page-jump{transition:none}}

#ws{border:0!important;background:transparent!important;padding:0!important}.wire-capsule{display:inline-flex;align-items:center;gap:10px;border:1px solid color-mix(in srgb,var(--text-accent) 48%,#aaa);border-radius:999px;padding:7px 12px;background:color-mix(in srgb,var(--bg) 94%,transparent);box-shadow:inset 0 1px #fff7,0 2px 8px #00000012;white-space:nowrap;font:700 12px/1 var(--ui);color:var(--fg)}.wire-eye{width:9px;height:9px;border-radius:50%;background:#e11d2e;box-shadow:0 0 5px 2px #e11d2e88;animation:wire-eye-pulse 2.4s ease-in-out infinite}.wire-live{color:var(--text-accent);letter-spacing:.12em}.wire-count{letter-spacing:.04em}.wire-time{font:600 12px/1 var(--mono);letter-spacing:.06em;color:color-mix(in srgb,var(--fg) 70%,transparent);border-left:1px solid color-mix(in srgb,var(--fg) 20%,transparent);padding-left:10px}@keyframes wire-eye-pulse{50%{box-shadow:0 0 12px 5px #e11d2e55;transform:scale(1.08)}}@media(prefers-reduced-motion:reduce){.wire-eye{animation:none}}

/* White bands: approved sculpted ivory face, raised edge and compressed press. */
html[data-theme=newsprint] #grid :is(.grp>h3,.more-preview-fade>h3,.col>h2,#h-lw)>.band-open:not(#h-lw .band-open){
 transform:none;filter:none;
 box-shadow:inset 0 1px 1px #fff,0 2px 0 #c1baae,0 4px 7px #0003;
 transition:transform .18s ease,box-shadow .18s ease,background .18s ease;
}
@media(hover:hover){
 html[data-theme=newsprint] #grid :is(.grp>h3,.more-preview-fade>h3,.col>h2,#h-lw):hover>.band-open:not(#h-lw .band-open){
  background:linear-gradient(180deg,#fffdf6 0%,#f1e9da 45%,#dfd3bd 100%);border-color:#b1a38b;color:#232323;
  transform:translateY(-3px);filter:none;
  box-shadow:inset 0 2px 2px #fffffff2,inset 0 -2px 2px #85714b24,0 2px 0 #b7aa91,0 5px 0 #93836b,0 8px 9px #00000029;
 }
}
html[data-theme=newsprint] #grid :is(.grp>h3,.more-preview-fade>h3,.col>h2,#h-lw)>.band-open:not(#h-lw .band-open):focus-visible{
 background:linear-gradient(180deg,#fffdf6 0%,#f1e9da 45%,#dfd3bd 100%);border-color:#b1a38b;color:#232323;
 transform:translateY(-3px);filter:none;
 box-shadow:inset 0 2px 2px #fffffff2,inset 0 -2px 2px #85714b24,0 2px 0 #b7aa91,0 5px 0 #93836b,0 8px 9px #00000029;
 outline:2px solid #766b58;outline-offset:5px;
}
html[data-theme=newsprint] #grid :is(.grp>h3,.more-preview-fade>h3,.col>h2,#h-lw):active>.band-open:not(#h-lw .band-open),
html[data-theme=newsprint] #grid :is(.grp>h3,.more-preview-fade>h3,.col>h2,#h-lw)>.band-open:not(#h-lw .band-open):active{
 background:linear-gradient(180deg,#d4c8b3 0%,#e7ddcb 65%,#eee5d5 100%);border-color:#a9997f;color:#232323;
 transform:translateY(1px);filter:none;
 box-shadow:inset 0 3px 4px #62513b35,inset 0 -1px 1px #fff9,0 2px 0 #93836b,0 4px 5px #0002;transition-duration:.07s;
}
@media(prefers-reduced-motion:reduce){
 html[data-theme=newsprint] #grid :is(.grp>h3,.more-preview-fade>h3,.col>h2,#h-lw)>.band-open:not(#h-lw .band-open),
 html[data-theme=newsprint] #grid :is(.grp>h3,.more-preview-fade>h3,.col>h2,#h-lw):is(:hover,:active)>.band-open:not(#h-lw .band-open),
 html[data-theme=newsprint] #grid :is(.grp>h3,.more-preview-fade>h3,.col>h2,#h-lw)>.band-open:not(#h-lw .band-open):is(:focus-visible,:active){transform:none;transition:none}
}

/* Phone playlist: direct attention to the active seven-segment play counter, not the lower card. */
@media(max-width:600px){
  .band-has-picks .band-header-ticket{position:relative;overflow:visible}
  .band-has-picks .band-header-ticket::before{content:'☞';position:absolute;right:calc(100% + 9px);top:50%;transform:translateY(-50%);font:400 41px/1 "Apple Symbols","Segoe UI Symbol",serif;color:#fffaf2;white-space:nowrap;pointer-events:none;letter-spacing:0}
  .band-picks .band-picks-guide .band-picks-manicule{display:none!important}
  .band-picks .band-picks-guide{display:none}
}
/* Mobile playlist: raised play counter in the reserved right-hand grid slot. */
@media(max-width:600px){
 .band-has-picks .band-reader-head{
  display:grid;grid-template-columns:minmax(0,1fr) 88px max-content;
  grid-template-rows:auto auto;align-items:center;
  column-gap:10px;row-gap:22px;padding:18px 12px 22px
 }
 .band-has-picks .band-reader-head>.band-reader-kicker{display:none}
 .band-has-picks .band-reader-head>.band-header-ticket{
  position:relative;grid-column:2;grid-row:1;justify-self:center;align-self:center;
  box-sizing:border-box;width:88px;min-width:88px;height:94px;margin:0;
  overflow:visible;border:3px solid #bb2938;border-radius:10px;
  background:#080808;color:#ff3038;
  box-shadow:inset 0 0 0 2px #1b1b1b,0 4px 0 #272727,0 7px 12px #0007;
  transition:transform .12s ease,box-shadow .12s ease
 }
 .band-has-picks .band-reader-head>.band-reader-close{
  position:relative;grid-column:3;grid-row:1;
  justify-self:end;align-self:start;margin:0
 }
 .band-has-picks .band-reader-head>h2{
  position:relative;grid-column:1/-1;grid-row:2;margin:0;
  min-width:0;overflow-wrap:break-word
 }
 .band-has-picks .band-header-ticket::after{
  content:'TAP TO PLAY';font:800 9px/1.1 var(--ui);
  letter-spacing:.035em;margin-top:7px;color:#ff858b
 }
 .band-has-picks .band-header-ticket:not(:disabled)::before{
  content:'☞';position:absolute;right:calc(100% + 6px);top:50%;
  font:400 34px/1 "Apple Symbols","Segoe UI Symbol",serif;
  letter-spacing:0;color:#fffaf2;white-space:nowrap;
  pointer-events:none;transform:translateY(-50%);
  animation:apnu-point-to-counter 3.2s ease-in-out infinite
 }
 .band-has-picks .band-header-ticket:disabled::before{content:none}
 .band-has-picks .band-header-ticket:not(:disabled){animation:apnu-counter-glow 3.2s ease-in-out infinite}
 .band-has-picks .band-header-ticket:active:not(:disabled){
  animation:none;transform:translateY(3px);
  box-shadow:inset 0 2px 8px #000,0 1px 0 #272727
 }
 .band-has-picks .band-header-ticket:focus-visible{outline:3px solid #ff6474;outline-offset:4px}
 .band-picks .band-picks-guide{display:none}
 .band-has-picks:has(.band-picks[data-ready=true]) .band-reader-note{font-size:0;padding:12px 18px}
 .band-has-picks:has(.band-picks[data-ready=true]) .band-reader-note::before{
  content:'PLAYLIST READY';font:800 12px/1.3 var(--ui);
  letter-spacing:.12em;color:var(--fg)
 }
}
@keyframes apnu-counter-glow{
  0%,72%,100%{border-color:#bb2938;box-shadow:inset 0 0 0 2px #1b1b1b,0 4px 0 #272727,0 7px 12px #0007}
  82%{border-color:#ff6474;box-shadow:inset 0 0 0 2px #1b1b1b,0 0 15px #ff263588,0 4px 0 #272727}
}
@keyframes apnu-point-to-counter{
  0%,72%,100%{transform:translateY(-50%) translateX(0)}
  82%{transform:translateY(-50%) translateX(5px)}
}
@media(prefers-reduced-motion:reduce){
 .band-has-picks .band-header-ticket:not(:disabled),
 .band-has-picks .band-header-ticket:not(:disabled)::before{animation:none}
}
html[data-paused] .band-has-picks .band-header-ticket,
html[data-paused] .band-has-picks .band-header-ticket::before{animation-play-state:paused}

/* Mobile header optical alignment: maintain right-hand control bay and a clear title row. */
@media(max-width:600px){
 .band-has-picks .band-reader-head{
  grid-template-columns:minmax(0,1fr) 88px max-content;
  column-gap:12px;row-gap:18px;padding:18px 16px 20px;
 }
 .band-has-picks .band-reader-head>.band-header-ticket{align-self:center;justify-self:center}
 .band-has-picks .band-reader-head>.band-reader-close{align-self:center;justify-self:end}
 .band-has-picks .band-reader-head>h2{align-self:start;line-height:1.04}
 .band-has-picks .band-header-ticket:not(:disabled)::before{right:calc(100% + 8px);top:49%}
}

/* Phone/tablet playlist: header scoreboard is the sole play control across all themes. */
@media(max-width:800px){
 .band-has-picks .band-picks .band-picks-count,
 .band-has-picks .band-picks .band-picks-guide{display:none!important}
 .band-has-picks .band-picks .band-picks-header,
 .band-has-picks .band-live-directory .band-picks .band-picks-header{
  grid-template-columns:minmax(0,1fr)!important
 }
}

/* Night Shift stars are a viewport-fixed sibling of the newspaper, not part of its scroll layer. */
html[data-theme=dark]>.night-stars{position:fixed;inset:0;z-index:0;pointer-events:none;display:block}
html[data-theme=dark] body{position:relative;z-index:1;background:transparent}
html:not([data-theme=dark])>.night-stars{display:none!important}

/* Sleep Chamber: all eight selectable palettes omit the redundant LATEST indicator and its reserved space. */
html[data-theme=terminal][data-calm] :is(#lg,.lw){display:none!important}
html[data-theme=terminal][data-calm][data-live=banner] #tick{gap:0;padding-top:0}

/* Night Shift / Newsroom header registration: identical masthead start, separate visual treatment. */
@media(min-width:701px){
 html[data-statusat=top]:is([data-theme=newsprint],[data-theme=dark]) #bar{height:62px;min-height:62px;box-sizing:border-box;margin-bottom:6px}
}
html[data-theme=dark][data-statusat=top] #bar{
 display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);
 align-items:center;gap:12px;padding:9px 12px;
 border:1px solid #39434d;border-radius:8px;
 background:linear-gradient(180deg,#222b34,#141b23);
 box-shadow:inset 0 1px #ffffff12,0 2px 10px #0004;
}
html[data-theme=dark][data-statusat=top] #bar #wire-home,
html[data-theme=dark][data-statusat=top] #bar #sponsor-top{display:inline-flex!important;align-items:center;min-width:0}
html[data-theme=dark][data-statusat=top] #bar #wire-home{grid-column:1;justify-self:start}
html[data-theme=dark][data-statusat=top] #bar #sponsor-top{grid-column:2;justify-self:center;white-space:nowrap;font-size:11px}
html[data-theme=dark][data-statusat=top] #bar #ws{
 grid-column:3;justify-self:end;display:block;text-align:right;
 min-width:0;font:600 10px/1.6 var(--ui);letter-spacing:.04em;color:#c0cbd5;
}
html[data-theme=dark][data-statusat=top] #bar #ws:before{
 content:attr(data-headlines) ' HEADLINES  ·  ' attr(data-sources) ' SOURCES';
 display:block;font:700 10px/1.4 var(--ui);letter-spacing:.09em;color:#e6ebf1;
}
html[data-theme=dark][data-statusat=top] #bar>a[href^="#c"]{display:none!important}
html[data-theme=dark][data-statusat=top] #bar #desk{font:italic 900 19px/1 Impact,'Arial Narrow',sans-serif;letter-spacing:.06em;color:#f1f3f5}
@media(max-width:700px){
 html[data-theme=dark][data-statusat=top] #bar{grid-template-columns:minmax(0,1fr) auto;gap:5px 8px;min-height:58px;padding:8px}
 html[data-theme=dark][data-statusat=top] #bar #wire-home{grid-column:1;grid-row:1}
 html[data-theme=dark][data-statusat=top] #bar #sponsor-top{grid-column:2;grid-row:1;font-size:9px}
 html[data-theme=dark][data-statusat=top] #bar #ws{grid-column:1/-1;grid-row:2;justify-self:end;font-size:9px}
 html[data-theme=dark][data-statusat=top] #bar #ws:before{display:inline;font-size:9px;margin-right:8px}
 html[data-theme=dark][data-statusat=top] #bar #desk{font-size:16px}
}

/* Live Wires is a direct-link directory on all devices: preserve the original two-column grid without playlist controls. */
.band-reader.band-live-directory>.band-reader-list{
 display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-content:start;
 column-gap:16px;row-gap:0;width:100%;box-sizing:border-box;padding:8px 18px 20px;
}
.band-reader.band-live-directory>.band-reader-list>li{min-width:0}
@media(max-width:600px){
 .band-reader.band-live-directory>.band-reader-list{grid-template-columns:repeat(2,minmax(0,1fr));padding:6px 14px 18px;column-gap:14px}
 .band-reader.band-live-directory>.band-reader-list>li>a{font-size:clamp(14px,4vw,17px);overflow-wrap:anywhere}
}

@media(max-width:600px){.band-has-picks .band-reader-head{grid-template-columns:minmax(0,1fr) 74px max-content;row-gap:24px}.band-has-picks .band-reader-head>.band-header-ticket{width:74px;min-width:74px;height:76px}.band-has-picks .band-header-ticket .band-score-digits{transform:scale(.82);margin:-3px 0 -4px}.band-has-picks .band-header-ticket::after{font-size:8px}.band-has-picks .band-header-ticket:not(:disabled)::before{font-size:27px}}
