/* INFEREST UI layer (P77). Composes design-tokens.css only. Sections: chrome · nav · type · components · pages · legacy views · mobile · motion. */

/* ===== chrome: the CRT becomes a clean product surface; the hall stays opt-in (?hall=1) ===== */
html,body{background:var(--c-bg);color:var(--c-text);font-family:var(--f-ui);-webkit-font-smoothing:antialiased}
.stage.in .plate{filter:brightness(.12) saturate(.3) blur(2px)}
.glass{background:var(--c-bg);border-radius:0;filter:none}
.glass:after,.scan,.flick{display:none!important}
.screen{font-family:var(--f-ui);padding:0;grid-template-rows:auto minmax(0,1fr) auto}
.screen.tx{animation:none}.crt.chan{animation:none}
.view{padding:var(--s-6) max(var(--s-5),calc((100% - var(--container))/2)) var(--s-7);align-content:start;justify-items:center;animation:view-in .24s var(--m-ease) 1 both;scrollbar-color:var(--c-line-strong) transparent}
:focus-visible{outline:3px solid var(--c-cyan)!important;outline-offset:3px}

/* ===== top bar + nav ===== */
.topbar{display:grid!important;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:var(--s-4);height:var(--nav-h);padding:0 max(var(--s-5),calc((100% - var(--container))/2));border-bottom:1px solid var(--c-line);background:color-mix(in srgb,var(--c-bg) 92%,transparent);font-size:var(--fs-sm);color:var(--c-muted)}
.wordmark{font:14px/1 var(--f-display);color:var(--c-zap);letter-spacing:.04em;min-height:var(--tap);padding:0 2px}
.topbar .r{display:flex;align-items:center;gap:var(--s-3);white-space:nowrap;flex-wrap:nowrap}
/* Account identity and sign-out already live in the account menu. */
.topbar #h-who,.topbar #signout{display:none}
#h-mode{font:600 11px/1 var(--f-num);letter-spacing:.08em;color:var(--c-faint);border:1px solid var(--c-line);border-radius:999px;padding:5px 8px}
#h-who{color:var(--c-text);font-weight:500}
.backpill{display:inline-flex;align-items:center;gap:8px;min-height:36px;padding:0 12px;border:1px solid var(--c-line-strong);border-radius:999px;color:var(--c-muted);text-decoration:none;font:600 12px/1 var(--f-num);letter-spacing:.06em}
.backpill b{color:var(--c-zap);font-weight:700}.backpill:hover{border-color:var(--c-zap)}
.link{color:var(--c-cyan);font-size:var(--fs-sm);min-height:var(--tap);letter-spacing:.02em}
.menu{justify-content:center;gap:2px;font:600 13px/1 var(--f-ui);letter-spacing:.06em;color:var(--c-muted);flex-wrap:nowrap}
.menu button{min-height:40px;padding:0 12px;border-radius:var(--r-1);color:var(--c-muted);white-space:nowrap}
.menu button:hover{color:var(--c-text);background:var(--c-surface)}
.menu button.on{color:var(--c-text);background:var(--c-surface-2)}.menu button.on:after{display:none}
.menu button[data-go="stake"].on,.menu button[data-go="score"].on{color:var(--c-zap)}
.menu .m-home,.menu .m-mob{display:none}
.menu .more:not([hidden]){display:flex;position:absolute;top:calc(var(--nav-h) - 6px);right:max(var(--s-5),calc((100% - var(--container))/2));flex-direction:column;min-width:220px;padding:6px;background:var(--c-surface);border:1px solid var(--c-line-strong);border-radius:var(--r-2);box-shadow:0 12px 40px #0008;z-index:20}
.menu .more button{justify-content:flex-start;text-align:left;min-height:var(--tap)}
.foot{border-top:1px solid var(--c-line);padding:10px max(var(--s-5),calc((100% - var(--container))/2))}
.legal{font:12px/1.4 var(--f-ui);color:var(--c-faint);letter-spacing:0}.legal .link{font-size:12px;color:var(--c-muted)}

/* ===== type ===== */
.logo{font-family:var(--f-display);color:var(--c-text);animation:none;letter-spacing:.01em;line-height:1.25}
.logo.red,.logo.cyan{font-size:var(--t-display-2);color:var(--c-text)}
.logo small{font:500 var(--fs-lg)/1.5 var(--f-ui);letter-spacing:0;color:var(--c-muted);white-space:normal;margin-top:var(--s-4)}
.h,.h.amber,.h.green,.h.red,.h.big{font:var(--fs-2xl)/1.25 var(--f-display);color:var(--c-text);letter-spacing:.01em;margin:0 0 var(--s-3)}
.h.green{color:var(--c-ok)}.h.red{color:var(--c-bad)}
.amber{color:var(--c-zap)}
.plain,.lede{font:400 var(--fs-lg)/1.5 var(--f-ui);color:var(--c-muted);letter-spacing:0;margin:0 0 var(--s-5)}
.vt{font:400 var(--fs-md)/1.55 var(--f-ui);letter-spacing:0}.vt.small{font-size:var(--fs-sm)}
.tip,.walkhint{font:600 12px/1.4 var(--f-num);color:var(--c-faint);letter-spacing:.06em}
.note{font:400 var(--fs-sm)/1.5 var(--f-ui);color:var(--c-muted);margin:var(--s-3) 0 0}
.lbl{display:block;font:600 12px/1 var(--f-num);letter-spacing:.1em;color:var(--c-muted);margin-bottom:var(--s-2)}
.bignum{font:700 var(--fs-num)/1.1 var(--f-num);font-variant-numeric:tabular-nums;letter-spacing:-.01em}
.num{font-family:var(--f-num);font-variant-numeric:tabular-nums}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.status{font:500 var(--fs-sm)/1.5 var(--f-ui);color:var(--c-zap)}.status.err{color:var(--c-bad)}.status.ok{color:var(--c-ok)}

/* ===== components ===== */
.btn{font:700 13px/1 var(--f-num);letter-spacing:.06em;min-height:var(--tap);padding:0 20px;display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid var(--c-line-strong);border-radius:var(--r-1);background:var(--c-surface);color:var(--c-text);margin:var(--s-2) var(--s-2) 0 0;transition:background var(--m-fast),border-color var(--m-fast),transform var(--m-fast)}
.btn:hover,.btn.sel{background:var(--c-surface-2);color:var(--c-text);border-color:var(--c-text)}
.btn.amber{background:var(--c-zap);border-color:var(--c-zap);color:var(--c-zap-ink);box-shadow:var(--pixel-shadow)}
.btn.amber:hover,.btn.amber.sel{background:#FFC233;color:var(--c-zap-ink)}
.btn.amber:active{transform:translate(2px,2px);box-shadow:2px 2px 0 0 #000}
.btn:disabled,.btn.amber:disabled{background:var(--c-surface-2);border-color:var(--c-line-strong);color:var(--c-muted);box-shadow:none;opacity:1}
.btn.small{min-height:36px;padding:0 14px;font-size:12px}
.btn.wide{width:100%;margin:var(--s-4) 0 0}
.press{animation:none;font:700 13px/1 var(--f-num);margin-top:var(--s-2)}
.field{border:1px solid var(--c-line-strong);border-radius:var(--r-1);background:var(--c-surface);font:500 var(--fs-md) var(--f-ui);padding:0 12px;min-height:var(--tap)}
.field:focus-within{border-color:var(--c-cyan)}
.field input,.field select{color:var(--c-text);font-family:var(--f-num);min-height:40px}
.key{font:500 var(--fs-md)/1.4 var(--f-num);color:var(--c-ok);background:var(--c-surface);border:1px solid var(--c-line);border-radius:var(--r-1);padding:10px 14px}
.snippet{font:400 13px/1.6 var(--f-num);background:var(--c-surface);border:1px solid var(--c-line);border-radius:var(--r-2)}
.card{background:var(--c-surface);border:1px solid var(--c-line);border-radius:var(--r-3);padding:var(--s-5);text-align:left;min-width:0}
.kv{display:flex;justify-content:space-between;gap:var(--s-4);padding:10px 0;border-top:1px solid var(--c-line);font:500 var(--fs-sm)/1.4 var(--f-ui);color:var(--c-muted)}
.kv b{color:var(--c-text);font:600 13px/1.4 var(--f-num);text-align:right}
.pill{display:inline-flex;align-items:center;min-height:24px;padding:0 10px;border-radius:999px;border:1px solid var(--c-line-strong);font:700 11px/1 var(--f-num);letter-spacing:.08em;color:var(--c-muted)}
.pill.live{color:var(--c-ok);border-color:color-mix(in srgb,var(--c-ok) 50%,transparent)}.pill.warn{color:var(--c-bad);border-color:var(--c-bad)}
.preview-band{width:100%;max-width:var(--container);margin:0 0 var(--s-5);padding:12px 16px;border:1px dashed var(--c-zap);border-radius:var(--r-2);font:600 12px/1.5 var(--f-num);letter-spacing:.06em;color:var(--c-zap);text-align:left}
.rows{font:400 var(--fs-md)/1.6 var(--f-ui);width:min(100%,860px)}
.row{color:var(--c-muted);padding:8px 12px;border-radius:var(--r-1)}
.row.lit,.row.sel{color:var(--c-text)}.row.hd{color:var(--c-faint);font:600 12px/1.6 var(--f-num);letter-spacing:.08em;border-bottom:1px solid var(--c-line);border-radius:0}
.row .a{color:var(--c-zap);font-family:var(--f-num)}.row .r{font-variant-numeric:tabular-nums}
.cur.sel{background:var(--c-surface-2)}.cur.sel:before{animation:none;color:var(--c-zap)}
.tablewrap{width:100%;max-width:var(--container);overflow-x:auto;border:1px solid var(--c-line);border-radius:var(--r-3);background:var(--c-surface)}
.tbl{width:100%;border-collapse:collapse;font:500 var(--fs-md)/1.4 var(--f-ui);text-align:left}
.tbl th{font:600 12px/1 var(--f-num);letter-spacing:.08em;color:var(--c-faint);padding:14px 16px;border-bottom:1px solid var(--c-line)}
.tbl td{padding:12px 16px;border-bottom:1px solid var(--c-line);color:var(--c-text)}.tbl tr:last-child td{border-bottom:0}
.tbl td:last-child{text-align:right}.tbl .btn{margin:0}.tbl tr.house td:first-child{color:var(--c-zap)}
.tbl tr:hover td{background:color-mix(in srgb,var(--c-surface-2) 60%,transparent)}
.cta-row{display:flex;flex-wrap:wrap;gap:var(--s-3);align-items:center;margin-top:var(--s-5)}
.cta-row .btn{margin:0}

/* ===== pages ===== */
#v-title{justify-items:stretch;text-align:left}
.hero{width:100%;padding:var(--s-7) 0 var(--s-5)}
.hero-h{font-size:var(--fs-hero);line-height:1.3;max-width:20ch;color:var(--c-text)}
.hero-h .amber{color:var(--c-zap)}
.hero .logo small{max-width:52ch;font-size:clamp(17px,1.6vw,21px);color:var(--c-muted)}
.cta{min-height:52px;padding:0 26px;font-size:14px}
.ghost-btn{background:transparent}
.stats{width:100%;max-width:900px;margin-top:var(--s-5)}
.stat{display:inline-flex;align-items:center;gap:10px;min-height:var(--tap);padding:10px 0;border-bottom:1px solid var(--c-line-strong);text-decoration:none;color:var(--c-muted);transition:border-color var(--m-fast),color var(--m-fast)}
.stat:hover{color:var(--c-text);border-color:var(--c-zap)}
.stat span{font:600 12px/1.3 var(--f-ui)}
.stat b{font:700 18px/1.1 var(--f-num);color:var(--c-ok);font-variant-numeric:tabular-nums}
.stat b.bad{color:var(--c-bad)}
.stat small{font:600 11px/1.3 var(--f-num);color:var(--c-cyan)}
.arcade-teaser{display:flex;gap:var(--s-3);align-items:center;margin-top:var(--s-6);padding-top:var(--s-4);border-top:1px solid var(--c-line);font:600 12px/1 var(--f-num);letter-spacing:.1em;color:var(--c-faint);max-width:900px;width:100%}
.page-h{width:100%;max-width:var(--container);text-align:left}
#v-stake,#v-market,#v-arcade{justify-items:start}
.grid2{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:var(--s-4);width:100%;max-width:var(--container)}
.inrow{display:flex;align-items:center;gap:var(--s-3);border:1px solid var(--c-line-strong);border-radius:var(--r-2);padding:6px 6px 6px 16px;background:var(--c-bg);margin-bottom:var(--s-4)}
.inrow:focus-within{border-color:var(--c-cyan)}
.num-in{flex:1;min-width:0;font:700 32px/1.2 var(--f-num);color:var(--c-text);cursor:text}
.unit{font:600 12px/1 var(--f-num);letter-spacing:.08em;color:var(--c-muted)}
.inrow .btn{margin:0}
.timeline{list-style:none;display:grid;grid-template-columns:repeat(4,1fr);gap:6px;padding:0;margin:var(--s-5) 0}
.timeline li{display:grid;gap:4px;padding-top:12px;border-top:4px solid var(--c-line-strong)}
.timeline li.on{border-top-color:var(--c-zap)}
.timeline b{font:700 12px/1.2 var(--f-num);letter-spacing:.06em;color:var(--c-text)}.timeline small{font:400 12px/1.3 var(--f-ui);color:var(--c-muted)}
.tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:var(--s-3);width:100%;max-width:var(--container)}
.tile{position:relative;display:grid;gap:8px;align-content:start;padding:0 0 var(--s-4);text-align:left;background:var(--c-surface);border:1px solid var(--c-line);border-radius:var(--r-3);overflow:hidden;transition:border-color var(--m-fast),transform var(--m-fast)}
.tile:hover:not(.locked){border-color:var(--c-zap);transform:translateY(-2px)}
.tile img{width:100%;aspect-ratio:4/3;object-fit:cover;image-rendering:pixelated;display:block}
.tile b{font:13px/1.4 var(--f-display);padding:4px var(--s-4) 0;color:var(--c-text)}
.tile small{font:400 var(--fs-sm)/1.4 var(--f-ui);color:var(--c-muted);padding:0 var(--s-4)}
.tile .pill{position:absolute;top:10px;right:10px;background:var(--c-bg)}
.tile.locked{cursor:default}.tile.locked img{filter:grayscale(1) brightness(.4)}
.zapbal{display:grid;justify-items:center;gap:6px;margin:0 0 var(--s-5);padding:var(--s-5);border:1px solid var(--c-line);border-radius:var(--r-3);background:var(--c-surface);width:min(100%,560px)}
.zapbal .bignum{font-size:clamp(40px,5vw,64px)}.zapbal small{font:500 12px/1 var(--f-num);letter-spacing:.08em;color:var(--c-faint)}
.zapbal .cta-row{margin-top:var(--s-3);justify-content:center}
/* PROOF */
.trio{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--s-3);margin-bottom:var(--s-3)}
.trio>div{display:grid;gap:6px;padding:var(--s-4);background:var(--c-surface);border:1px solid var(--c-line);border-radius:var(--r-3);text-align:left}
.trio span{font:600 11px/1 var(--f-num);letter-spacing:.1em;color:var(--c-muted)}
.trio b{font:700 var(--fs-num)/1 var(--f-num);color:var(--c-text);font-variant-numeric:tabular-nums}
.trio .ok b{color:var(--c-ok)}.trio .bad b{color:var(--c-bad)}.trio small{font:700 11px/1 var(--f-num);letter-spacing:.08em;color:var(--c-ok)}.trio .bad small{color:var(--c-bad)}
.meter{position:relative;height:10px;border-radius:999px;background:var(--c-surface-2);margin:0 0 var(--s-5);overflow:hidden}
.meter i{position:absolute;inset:0 auto 0 0;background:var(--c-ok);border-radius:999px}
.meter em{position:absolute;left:50%;top:-2px;bottom:-2px;width:2px;background:var(--c-text)}
/* legacy view polish */
.pl{background:var(--c-surface);border:1px solid var(--c-line);border-radius:var(--r-2)}
.pl.sel{border-color:var(--c-zap);box-shadow:var(--pixel-shadow)}
.pl .name{font-family:var(--f-display)}
.panel img{border:1px solid var(--c-line);border-radius:var(--r-2)}
.quiz .q{font:600 var(--fs-xl)/1.4 var(--f-ui)}
.quiz .ans{color:var(--c-text);font-family:var(--f-num);border-bottom:2px solid var(--c-line-strong)}
.hud .amber{color:var(--c-zap)}

/* ===== mobile: bottom tab bar replaces the gamepad (the pad stays only inside games) ===== */
.pad{display:none!important}
@media(max-width:820px){
 body[data-view="hiscore"] .pad,body[data-view="duel"] .pad,body[data-view="boss"] .pad,body[data-view="players"] .pad{display:none!important}
 .topbar{grid-template-columns:auto 1fr;height:56px;gap:var(--s-3);padding:0 var(--s-4)}
 .topbar .r{justify-content:flex-end;gap:6px}.topbar .r>span:first-of-type{display:none}#h-mode{display:none}
 .backpill>span{display:none}
 .menu{position:fixed;left:0;right:0;bottom:0;z-index:30;height:calc(var(--tab-h) + env(safe-area-inset-bottom));padding:0 4px env(safe-area-inset-bottom);display:grid!important;grid-template-columns:repeat(6,1fr);gap:0;background:var(--c-surface);border-top:1px solid var(--c-line-strong);font-size:10px;letter-spacing:.04em}
 .menu .m-desk{display:none}
 .menu button{display:grid;place-items:center;align-content:center;gap:4px;min-height:var(--tab-h);padding:0;border-radius:0;font-size:10px;background:transparent}
 .menu button.on{background:transparent;color:var(--c-zap)}
 .menu .more:not([hidden]){position:fixed;top:auto;bottom:calc(var(--tab-h) + 8px + env(safe-area-inset-bottom));left:12px;right:12px;min-width:0}
 .menu .more .m-mob{display:flex}
 .menu .more button{display:flex;font-size:14px;padding:0 14px;min-height:48px}
 .screen{padding-bottom:calc(var(--tab-h) + env(safe-area-inset-bottom))}
 .foot{padding:8px var(--s-4)}.legal{font-size:11px}
 .view{padding:var(--s-5) var(--s-4) var(--s-6)}
 .hero{padding:var(--s-4) 0 0}.hero-h{font-size:clamp(20px,6.4vw,28px);line-height:1.45}
 .hero .logo small{font-size:16px}
 .cta-row .btn{flex:1 1 140px}
 .stats{margin-top:var(--s-4)}
 .grid2{grid-template-columns:1fr}.trio{grid-template-columns:1fr}.trio>div{grid-template-columns:1fr auto;align-items:center}.trio small{grid-column:1/-1}
 .tiles{grid-template-columns:1fr 1fr}.tile b{font-size:11px}
 .tbl th:nth-child(3),.tbl td:nth-child(3){display:none}.tbl td,.tbl th{padding:12px 10px}
 .h,.h.amber,.h.green,.h.red,.h.big{font-size:18px}
 .num-in{font-size:26px}
 .timeline{grid-template-columns:1fr 1fr;row-gap:12px}
}
@media(prefers-reduced-motion:reduce){.view,.tile,.btn{animation:none;transition:none}}
@media(max-width:820px){.foot{display:none}.cta{padding:0 14px;font-size:13px}.hero-h{font-size:clamp(20px,6vw,26px)}}
.stage.svc .glass{filter:none}.stage.svc .glass:after{opacity:0}
.page-h .h{text-align:left}
.field input.code{letter-spacing:.02em}
#amt-go,#pool-join,#boss-join,#hs-insert,#press-over{display:inline-flex;align-items:center;justify-content:center;min-height:52px;padding:0 28px;margin-top:var(--s-5);background:var(--c-zap);color:var(--c-zap-ink);border-radius:var(--r-1);box-shadow:var(--pixel-shadow);font:700 14px/1 var(--f-num);letter-spacing:.06em}
#amt-go:hover,#pool-join:hover,#boss-join:hover,#hs-insert:hover{background:#FFC233}
#amt-go:disabled{background:var(--c-surface-2);color:var(--c-muted);box-shadow:none}
.chips .btn{margin:0 4px}
#amt-go,#pool-join,#boss-join,#hs-insert,#press-over{display:inline-block;line-height:52px}
.topbar .menu button{min-height:40px!important}
.view.on button:not(.link):not(.tile):not(.tab):not(.cta){min-height:var(--tap)}
@media(max-width:820px){.logo small{line-height:1.5}}
/* The product is the static default, including before arcade.js calls land().
   Only an explicit hall view may use the legacy transparent CRT/room state. */
body:not(.hall) .stage .crt{opacity:1;pointer-events:auto;transition:none!important;transform:none!important;clip-path:none!important}
body:not(.hall) .plate,body:not(.hall) .pick,body:not(.hall) .lobby{display:none!important}
body:not(.hall) #v-title{animation:none}
.pool-tabs .tab,.view.on .pool-tabs .tab{min-height:44px}
body:not(.hall) .walkhint{display:none}
.hero{position:relative}

/* ===== account menu (#acct) ===== */
.acctwrap{position:relative;display:inline-block}
.topbar .acct{min-height:var(--tap);max-width:140px;overflow:hidden;text-overflow:ellipsis;font:600 12px/1 var(--f-num);letter-spacing:.06em;color:var(--c-cyan,var(--c-text))}
.acctmenu:not([hidden]){display:flex;position:absolute;top:calc(100% + 6px);right:0;flex-direction:column;min-width:180px;padding:6px;background:var(--c-surface);border:1px solid var(--c-line-strong);border-radius:var(--r-2);box-shadow:0 12px 40px #0008;z-index:25}
.acctmenu button{display:flex;align-items:center;justify-content:flex-start;min-height:var(--tap);padding:0 14px;text-align:left;background:transparent;border:0;border-radius:var(--r-2);color:var(--c-text);font:600 13px/1 var(--f-num);letter-spacing:.06em;cursor:pointer}
.acctmenu button:hover,.acctmenu button:focus-visible{background:var(--c-line)}
@media(max-width:820px){.topbar .r{min-width:0}.topbar .r>.backpill,.topbar #snd{flex-shrink:0}.topbar .acctwrap{min-width:0;flex:0 1 auto}.topbar .acct{max-width:min(110px,100%);font-size:11px}#h-who{display:none}}
/* landing option C: split hero */
.split2{display:grid;grid-template-columns:1fr 1fr;gap:var(--s-3);margin-top:var(--s-5);max-width:900px}
.sp{display:grid;gap:8px;align-content:start;padding:var(--s-5);background:var(--c-surface);border:1px solid var(--c-line);border-radius:var(--r-3)}
.sp:first-child{border-color:var(--c-zap)}
.sp b{font:600 var(--fs-xl)/1.3 var(--f-ui);color:var(--c-text)}.sp small{font:400 var(--fs-sm)/1.5 var(--f-ui);color:var(--c-muted)}
.sp .btn{margin:var(--s-3) 0 0;width:100%}
@media(max-width:820px){.split2{grid-template-columns:1fr}}

/* Keep tutorial images inside their columns and give captions a readable floor. */
.howto{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--s-5);max-width:946px}
.howto .panel{width:100%;min-width:0;align-content:start;grid-template-rows:auto auto 1fr;gap:var(--s-3)}
.howto .panel img{min-width:0;max-width:100%}
.howto .panel b{font:600 var(--fs-sm)/1.5 var(--f-ui);min-height:0}
.howto .panel small{font:400 var(--fs-sm)/1.5 var(--f-ui);overflow-wrap:anywhere}
.pl .name{font-size:var(--fs-xs);white-space:normal;overflow-wrap:anywhere}
.pl .name small{font-size:var(--fs-xs)}
.pl .tpc{font-size:max(var(--fs-xs),var(--v-tpc));line-height:1.4;white-space:normal}
@media(max-width:820px){
 .howto{grid-template-columns:1fr;max-width:320px;gap:var(--s-6)}
 .howto .panel img{width:200px}
 .howto .panel small{max-width:100%}
}
