:root{
 --ink:#060d0b;
 --ink-2:#091511;
 --exchange:#0d2921;
 --jade:#15533f;
 --jade-bright:#2fc47c;
 --brass:#d2b468;
 --brass-deep:#8f6d2d;
 --ivory:#f2e8d2;
 --paper:#d8cdb7;
 --muted:#8ca69a;
 --danger:#c84950;
 --market:#9a63d4;
 --opportunity:#4c8dff;
 --hairline:rgba(210,180,104,.34);
 --glass:rgba(6,18,14,.88);
 --shadow:0 24px 70px rgba(0,0,0,.58);
}

html,body{background:var(--ink);color:var(--ivory);font-family:Barlow,'Segoe UI',sans-serif}
button,input{font-family:inherit}
button{-webkit-tap-highlight-color:transparent}
button:focus-visible,input:focus-visible{outline:2px solid var(--brass);outline-offset:3px}

/* Shared engraved surface language */
#v2title,#v3lobby{
 background:
  radial-gradient(circle at 50% 42%,rgba(21,83,63,.18),transparent 42%),
  linear-gradient(rgba(3,9,7,.52),rgba(3,9,7,.8)),
  url('art/theme/exchange-floor-v1.webp') center/cover no-repeat;
}
#v2title::before,#v3lobby::before{
 content:"";position:absolute;inset:18px;pointer-events:none;
 border:1px solid rgba(210,180,104,.25);
 clip-path:polygon(0 28px,28px 0,calc(100% - 28px) 0,100% 28px,100% calc(100% - 28px),calc(100% - 28px) 100%,28px 100%,0 calc(100% - 28px));
 box-shadow:inset 0 0 80px rgba(0,0,0,.38);
}

/* Title: a club invitation rather than a web menu */
#v2title{gap:7px;isolation:isolate;overflow:hidden}
#v2title>*{position:relative;z-index:1}
.ttEyebrow,.ttSeal,.tt1,.tt2,.tttag,.ttmodes,.ttRules,.ttFooter,.ttVersion{animation:titleReveal .62s cubic-bezier(.18,.8,.25,1) both}
.ttSeal{animation-delay:.05s}.tt1{animation-delay:.1s}.tt2{animation-delay:.15s}.tttag{animation-delay:.2s}.ttmodes{animation-delay:.25s}.ttRules{animation-delay:.33s}.ttFooter{animation-delay:.38s}
@keyframes titleReveal{from{opacity:0;transform:translateY(11px)}to{opacity:1;transform:none}}
.titleArchitecture{display:flex;align-items:center;gap:12px;width:min(620px,72vw);color:var(--brass);opacity:.72}
.titleArchitecture i{height:1px;flex:1;background:linear-gradient(90deg,transparent,var(--brass))}
.titleArchitecture i:last-child{background:linear-gradient(90deg,var(--brass),transparent)}
.titleArchitecture b{font-size:11px;font-weight:500}
.ttEyebrow{font:700 11px/1 Barlow;letter-spacing:4.5px;color:var(--muted);text-align:center}
.ttEyebrow em{font-style:normal;color:var(--brass);padding:0 7px}
.ttSeal{width:48px;height:48px;display:grid;place-items:center;margin-top:3px;color:var(--brass)}
.ttSeal::before,.ttSeal::after{content:"";position:absolute;inset:3px;border:1px solid rgba(210,180,104,.62);transform:rotate(45deg)}
.ttSeal::after{inset:8px;border-color:rgba(210,180,104,.25)}
.ttSeal span{font:700 26px/1 'Bodoni Moda',serif;text-shadow:0 0 16px rgba(210,180,104,.35)}
.ttSeal i{position:absolute;width:3px;height:3px;background:var(--ivory);border-radius:50%;box-shadow:0 0 8px var(--ivory)}
.tt1{font:700 clamp(54px,7vw,92px)/.88 'Bodoni Moda',serif;letter-spacing:-3px;color:var(--ivory);background:none;filter:none;text-shadow:0 3px 0 #000,0 12px 30px rgba(0,0,0,.72);font-variant-numeric:tabular-nums lining-nums}
.ttCurrency{font-size:.72em;color:var(--brass);padding-right:.08em;vertical-align:.08em}
.tt2{font:400 clamp(17px,2vw,25px)/1 'Bebas Neue';letter-spacing:clamp(8px,1.5vw,17px);color:var(--brass);border:0;padding:8px 0 0;text-indent:clamp(8px,1.5vw,17px)}
.tttag{margin:3px 0 7px;font:700 11px/1.1 Barlow;letter-spacing:2.4px;color:var(--paper)}
.tttag i{font-style:normal;font-size:6px;color:var(--brass);padding:0 10px;vertical-align:2px}
.ttmodes{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;width:min(1120px,94vw);margin-top:8px}
.ttmode,.ttmode.gold{
 min-height:90px;display:grid;grid-template-columns:42px 1fr auto;align-items:center;gap:12px;
 padding:13px 15px;text-align:left;border-radius:4px;
 border:1px solid rgba(210,180,104,.38);color:var(--ivory);
 background:linear-gradient(145deg,rgba(18,53,42,.96),rgba(5,17,13,.96));
 box-shadow:inset 0 1px rgba(255,255,255,.05),inset 0 -18px 38px rgba(0,0,0,.2),0 9px 22px rgba(0,0,0,.4);
 font:400 20px/1 'Bebas Neue';letter-spacing:1.8px;transition:.18s ease;overflow:hidden;
}
.ttmode.tutorialMode{border-color:rgba(143,230,180,.58);background:linear-gradient(180deg,rgba(25,72,52,.96),rgba(8,31,22,.98));overflow:visible}
.ttmode.tutorialMode em{position:absolute;right:10px;top:-9px;padding:3px 7px;border:1px solid rgba(245,239,221,.45);border-radius:999px;background:#1e7a50;color:#f5efdd;font:800 8px Barlow;letter-spacing:1.1px;font-style:normal;box-shadow:0 4px 12px rgba(0,0,0,.45)}
.ttmode.tutorialMode.complete em{background:#29463a;color:#9db4a9}.ttmode.tutorialMode.complete em::before{content:'✓ '}
.ttmode.tutorialMode.firstPrompt{animation:tutorialRecommend 1.1s ease-in-out 2}@keyframes tutorialRecommend{50%{border-color:#8fe6b4;box-shadow:0 0 0 2px rgba(143,230,180,.4),0 0 28px rgba(143,230,180,.28);transform:translateY(-2px)}}
.ttmode::after{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--jade-bright);opacity:.35}
.ttmode.gold{border-color:rgba(210,180,104,.82);background:linear-gradient(145deg,rgba(32,76,59,.98),rgba(9,34,26,.98));color:var(--ivory)}
.ttmode.gold::after{background:var(--brass);opacity:1;box-shadow:0 0 17px var(--brass)}
.ttmode:hover{transform:translateY(-3px);border-color:var(--brass);background:linear-gradient(145deg,rgba(28,84,63,.98),rgba(8,29,22,.98));box-shadow:inset 0 1px rgba(255,255,255,.07),0 15px 32px rgba(0,0,0,.48),0 0 20px rgba(210,180,104,.08)}
.ttmode:active{transform:translateY(1px)}
.ttmode>span:nth-child(2){min-width:0}
.ttmode small{margin-top:6px;color:#B8CBC1;font:600 12px/1.25 Barlow;letter-spacing:.2px;white-space:normal}
.modeIcon{width:34px;height:44px;display:grid;place-items:center;border:1px solid var(--hairline);color:var(--brass);font:700 12px 'Bodoni Moda';clip-path:polygon(50% 0,100% 17%,100% 83%,50% 100%,0 83%,0 17%);background:rgba(0,0,0,.24)}
.ttmode>b{font:700 10px Barlow;letter-spacing:1.6px;color:var(--brass);opacity:.8}
.ttRules{margin-top:4px;padding:10px 18px;border:0;border-bottom:1px solid var(--hairline);background:none;color:var(--muted);font:700 11px Barlow;letter-spacing:2px;cursor:pointer;transition:.15s ease}
.ttRules:hover{color:var(--ivory);border-color:var(--brass)}
.ttFooter{display:flex;align-items:center;gap:11px;margin-top:5px;color:#78998A;font:700 9px Barlow;letter-spacing:2px}
.ttFooter i{width:3px;height:3px;transform:rotate(45deg);background:var(--brass);opacity:.55}
.ttVersion{margin-top:1px;color:rgba(140,166,154,.64);font:700 8px/1 Barlow;letter-spacing:1.65px;text-transform:uppercase;font-variant-numeric:tabular-nums}

/* Lobby: private members' room */
#v3lobby{isolation:isolate}
#v3lobby>*{position:relative;z-index:1}
.lbCard{width:min(720px,92vw);max-height:90vh;padding:22px 26px 18px;border-radius:6px;border:1px solid rgba(210,180,104,.48);background:linear-gradient(155deg,rgba(15,48,37,.95),rgba(5,18,14,.97));box-shadow:var(--shadow),inset 0 1px rgba(255,255,255,.05);scrollbar-color:var(--brass-deep) transparent}
.lbCard{animation:lobbyReveal .38s cubic-bezier(.2,.8,.25,1) both}
@keyframes lobbyReveal{from{opacity:0;transform:translateY(18px) scale(.985)}to{opacity:1;transform:none}}
.lbCard::before,.lbCard::after{content:"";position:absolute;pointer-events:none}
.lbCard::before{inset:6px;border:1px solid rgba(210,180,104,.12)}
.lbCard::after{left:42px;right:42px;top:0;height:2px;background:linear-gradient(90deg,transparent,var(--brass),transparent)}
.lbHead{align-items:flex-end;padding-bottom:12px;border-color:var(--hairline)}
.lbHead span{display:flex;flex-direction:column;color:var(--ivory);font-size:19px;letter-spacing:6px}
.lbHead span small{margin-bottom:4px;color:var(--muted);font:700 7px Barlow;letter-spacing:3px}
.lbHead b{font-size:17px;color:var(--brass);letter-spacing:2px}
.lbIntro{display:flex;justify-content:space-between;align-items:baseline;gap:18px;margin:15px 0 8px}
.lbIntro strong{font:400 24px 'Bebas Neue';letter-spacing:2.4px;color:var(--brass)}
.lbIntro span{max-width:390px;color:var(--muted);font:600 11px/1.4 Barlow;text-align:right}
.lbIdent{margin:12px 0 8px;padding:13px;border:1px solid rgba(210,180,104,.17);background:rgba(2,12,9,.38)}
#lbMyAv{width:72px;height:72px;border:2px solid var(--brass);background:var(--exchange);box-shadow:0 0 0 5px rgba(210,180,104,.08),0 9px 22px rgba(0,0,0,.48)}
.lbAvBtn{width:30px;height:30px;border-color:var(--hairline);background:rgba(5,20,15,.92);color:var(--brass)}
#lbName,#lbCode{border-radius:3px!important;border-color:var(--hairline)!important;background:rgba(2,12,9,.7)!important;color:var(--ivory)!important;box-shadow:inset 0 2px 12px rgba(0,0,0,.32)}
#lbName:focus,#lbCode:focus{border-color:var(--brass)!important;box-shadow:0 0 0 3px rgba(210,180,104,.1),inset 0 2px 12px rgba(0,0,0,.3)}
.lbLbl{color:var(--muted);font-size:11px;letter-spacing:2.6px}
.ttrow.sm button{border-radius:2px;background:rgba(3,17,13,.82);border-color:rgba(210,180,104,.24);color:var(--paper)}
.ttrow.sm button.on{background:var(--brass);color:#182219;border-color:var(--brass);box-shadow:0 0 18px rgba(210,180,104,.22)}
input[type=range]{accent-color:var(--brass)}
#lbSeats{grid-template-columns:repeat(auto-fit,minmax(105px,1fr));gap:8px}
.lbSeat{min-height:98px;border-radius:4px;border-color:rgba(210,180,104,.2);background:linear-gradient(160deg,rgba(17,56,42,.78),rgba(4,17,13,.9));box-shadow:inset 0 1px rgba(255,255,255,.035)}
.lbSeat.ready{border-color:rgba(47,196,124,.72);box-shadow:inset 0 -2px rgba(47,196,124,.28),0 0 15px rgba(47,196,124,.08)}
.lbSeat.you{border-color:rgba(210,180,104,.75);box-shadow:inset 0 -2px rgba(210,180,104,.35)}
.lbSeat .st{color:var(--muted)}
.lbSeat .crown{color:var(--brass);text-shadow:0 0 8px rgba(210,180,104,.45)}
#lbReady{border-radius:3px;border-color:#e1ca8c;background:linear-gradient(180deg,#ead598,#c6a65c);color:#182219;font-size:21px;box-shadow:inset 0 1px rgba(255,255,255,.55),0 4px 0 #705522,0 12px 24px rgba(0,0,0,.38)}
#lbReady.armed{background:linear-gradient(180deg,#72dfa6,#2fc47c);color:#061a12}
#lbHint{color:var(--muted)}
.lbBack{color:var(--muted);text-decoration:none;border-bottom:1px solid rgba(140,166,154,.3)}

/* v130: the legacy desktop Floor Wire is retired. #v2msg remains a hidden compatibility sink
   for diagnostics/tests; all visible play guidance uses the unified #v2toastLane notice below. */
body:not(.playing) #v2command{display:none}
#v2ticker{display:none!important}

/* Bottom command console: all turn-critical information in one safe zone */
#v2command{position:fixed;left:16px;right:16px;bottom:12px;height:64px;display:grid;grid-template-columns:minmax(315px,1.4fr) minmax(220px,1fr) 84px;align-items:center;gap:14px;padding:7px 8px 7px 17px;box-sizing:border-box;pointer-events:none;border:1px solid rgba(210,180,104,.4);border-radius:5px;background:linear-gradient(155deg,rgba(14,48,36,.95),rgba(4,17,13,.97));box-shadow:0 12px 38px rgba(0,0,0,.62),inset 0 1px rgba(255,255,255,.055);backdrop-filter:blur(10px)}
body.playing #v2command{animation:consoleRise .48s cubic-bezier(.18,.8,.25,1) both}
@keyframes consoleRise{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}
#v2command::before{content:"";position:absolute;inset:4px;border:1px solid rgba(210,180,104,.1);pointer-events:none}
#v2command::after{content:"EXCHANGE CONTROL";position:absolute;left:17px;top:-7px;padding:0 7px;background:var(--ink);color:var(--muted);font:800 6px Barlow;letter-spacing:2px}
.commandPortfolio,.commandIdentity,.commandWorth,.commandTurn{min-width:0}.commandPortfolio{display:grid;grid-template-columns:145px minmax(170px,1fr);align-items:center;gap:14px}.commandIdentity{display:grid;grid-template-columns:48px minmax(0,1fr);align-items:center;gap:8px}.commandWorth{overflow:hidden}
.commandLabel{display:block;margin-bottom:2px;color:var(--muted);font:800 7px Barlow;letter-spacing:1.7px}
#v2nw{position:static!important;max-width:100%;overflow:hidden;white-space:nowrap;color:var(--ivory);font:700 28px/.95 'Bodoni Moda',serif;letter-spacing:-1px;text-shadow:0 2px 8px #000;font-variant-numeric:tabular-nums}
#v2goal{position:static!important;width:auto!important;color:var(--muted);font-size:8px;text-shadow:none}
.goalrow{margin-bottom:5px}.goalrow b{color:var(--brass)}
.goaltrack{height:6px;border-color:rgba(210,180,104,.35);background:#020806;box-shadow:inset 0 2px 5px rgba(0,0,0,.85)}
.goalfill{background:linear-gradient(90deg,#806122,var(--brass),#f1dda4);box-shadow:0 0 12px rgba(210,180,104,.42)}
#v2act{position:static!important;display:flex;align-items:center;gap:7px;width:100%;min-width:0;max-width:100%;overflow:hidden;color:var(--brass);font-size:13px;text-shadow:none;white-space:nowrap}
.actlabel{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.actpips{flex:0 0 auto;gap:5px}.apip{width:7px;height:7px;border-color:rgba(210,180,104,.55);background:#020806}.apip.on{background:var(--brass);box-shadow:0 0 8px rgba(210,180,104,.75),inset 0 1px #fff}
.turnclock{flex:0 0 auto;border-radius:3px;border-color:rgba(47,196,124,.42);background:rgba(1,10,7,.72);color:#a6eec7}
.turnclock.warn{border-color:var(--brass);color:var(--ivory)}.turnclock.critical{border-color:var(--danger);background:#351016;color:#ffd1d1}
#v2end{position:static!important;min-width:0;width:84px;height:46px;padding:0 8px;pointer-events:auto;border-radius:3px;border:1px solid #e1ca8c;color:#152018;background:linear-gradient(180deg,#ead598,#c3a156);box-shadow:inset 0 1px rgba(255,255,255,.65),0 3px 0 #6f5420,0 7px 14px rgba(0,0,0,.38);font-size:15px;letter-spacing:1.7px}
#v2end:hover{filter:brightness(1.08);transform:translateY(-1px)}#v2end:active{transform:translateY(2px)}
#v2end:disabled{opacity:.38;transform:none;filter:saturate(.45);pointer-events:none}

/* Activity history is no longer a permanent desktop surface. It opens on demand from the same
   unified table notice, matching the existing mobile interaction. */
#v2feed{display:none;left:124px;top:52px;width:215px;gap:4px}
.feedhead{display:flex;align-items:center;justify-content:space-between;color:var(--brass);font-size:7px;letter-spacing:2.2px}.feedhead span{font:inherit}#v2feedClose{display:none}
#v2feedItems .feeditem:nth-child(n+5){display:none}
.feeditem{padding:6px 8px 6px 11px;border-radius:3px;background:linear-gradient(90deg,rgba(3,16,12,.92),rgba(6,23,17,.6));border-left-color:var(--muted);color:#aec2b8;box-shadow:0 5px 15px rgba(0,0,0,.2)}
.feeditem.money{border-left-color:var(--brass);color:#e3d3a7}.feeditem.danger{border-left-color:var(--danger);color:#efb5b8}.feeditem.market{border-left-color:var(--market);color:#d6c0eb}.feeditem.turn{border-left-color:var(--jade-bright);color:#afe6c8}
@media(min-width:901px){
 body.feed-open #v2feed{display:flex;left:50%;right:auto;top:18px;width:min(560px,calc(100vw - 32px));max-height:min(48vh,430px);transform:translateX(-50%);overflow:hidden;gap:8px;padding:12px;box-sizing:border-box;pointer-events:auto;z-index:27;border:1px solid rgba(210,180,104,.55);border-radius:5px;background:linear-gradient(155deg,rgba(10,39,29,.985),rgba(3,15,11,.99));box-shadow:0 22px 55px rgba(0,0,0,.72),inset 0 1px rgba(255,255,255,.06);backdrop-filter:blur(12px)}
 body.feed-open #v2feedItems{display:flex;flex-direction:column;gap:5px;overflow-y:auto;overscroll-behavior:contain}
 body.feed-open #v2feedItems .feeditem{display:block;font-size:13px;line-height:1.32;padding:9px 10px 9px 13px}
 body.feed-open #v2feedItems .feeditem:nth-child(n+5){display:block}
 body.feed-open .feedhead{font-size:9px;padding-bottom:7px;border-bottom:1px solid rgba(210,180,104,.22)}
 body.feed-open #v2feedClose{display:block;padding:5px 8px;border:1px solid rgba(210,180,104,.35);border-radius:3px;background:rgba(0,0,0,.24);color:var(--paper);font:800 8px Barlow;letter-spacing:1.2px;cursor:pointer}
}
#v2lead{left:16px!important;bottom:84px!important;border-radius:3px!important;background:var(--brass)!important;color:#172019!important}
#v2badge{top:12px;right:14px;z-index:28}
#v2setB{width:auto;min-width:34px;height:36px;display:flex;align-items:center;justify-content:center;gap:8px;padding:7px 11px;border:1px solid rgba(210,180,104,.42);border-radius:3px;background:rgba(4,17,13,.9);color:var(--brass);cursor:pointer;box-shadow:0 5px 16px rgba(0,0,0,.3)}
#v2setB svg{width:16px;height:16px;fill:currentColor}
#v2setB span{font:800 9px Barlow;letter-spacing:1.5px;color:var(--paper)}
body.playing #v2setB{width:34px;padding:7px}body.playing #v2setB span{display:none}
#v2tray{bottom:86px;right:16px}
.v2mf{border-radius:3px;background:linear-gradient(180deg,#173b66,#0c2340);border-color:#4c8dff;box-shadow:0 3px 0 #071a30,0 8px 18px rgba(0,0,0,.42)}

/* Modals and results: engraved paper / lacquer */
#v2modal{background:rgba(1,7,5,.7);backdrop-filter:blur(7px)}
#v2mbox{border-radius:6px;border-color:rgba(210,180,104,.48);background:linear-gradient(155deg,#123b2d,#071a14);box-shadow:0 30px 80px rgba(0,0,0,.78),inset 0 1px rgba(255,255,255,.05)}
#v2mbox h3{color:var(--brass);font-size:24px;letter-spacing:2.6px}
.v2opt{border-radius:3px;border-color:rgba(210,180,104,.25);background:rgba(4,20,15,.82);color:var(--ivory)}
.v2opt:hover{border-color:var(--brass)}
.v2opt.gold{background:linear-gradient(180deg,#ead598,#c4a259);color:#172019}
.v2opt.red{border-color:var(--danger);color:#efb5b8}
.resultbox{border-radius:6px!important;background:linear-gradient(165deg,#163e30,#061913)!important;border-color:rgba(210,180,104,.7)!important}
.resultHero{background:radial-gradient(100% 140% at 50% 0,rgba(210,180,104,.2),transparent 62%);border-color:var(--hairline)}
.resultKicker{color:var(--muted)}.resultTitle{font-family:'Bodoni Moda',serif;color:var(--ivory);letter-spacing:-1px}.resultCash{color:var(--brass);font-family:'Bodoni Moda',serif}

/* Show-don't-tell rules primer */
#v2mbox.rulesbox{width:min(920px,94vw);padding:18px 20px 20px;box-sizing:border-box;overflow:hidden}
.rulesPrimer h3{margin-bottom:10px!important}.rulesObjective{position:relative;padding:12px 18px 13px;text-align:center;border:1px solid rgba(210,180,104,.46);border-radius:4px;background:radial-gradient(80% 150% at 50% 0,rgba(210,180,104,.2),transparent 64%),#071a14;overflow:hidden}
.rulesObjective::before,.rulesObjective::after{content:"";position:absolute;top:0;bottom:0;width:1px;background:linear-gradient(transparent,var(--brass),transparent);opacity:.5}.rulesObjective::before{left:12px}.rulesObjective::after{right:12px}
.rulesObjective>span{display:block;font:800 8px Barlow;letter-spacing:3px;color:var(--muted)}
.rulesObjective>strong{display:block;margin-top:2px;font:400 clamp(25px,3.1vw,42px) 'Bebas Neue',sans-serif;letter-spacing:2px;color:var(--ivory);line-height:1}.rulesObjective>strong b{color:var(--brass);font-weight:400}
.millionRace{display:grid;grid-template-columns:28px 1fr 34px;align-items:center;gap:8px;width:min(560px,88%);margin:11px auto 0;color:var(--muted);font:800 9px Barlow;letter-spacing:.6px}
.millionRace i{font-style:normal}.raceFinish{color:var(--brass);font-size:11px}.raceRail{position:relative;height:5px;border-radius:5px;background:#020b08;border:1px solid rgba(210,180,104,.48);box-shadow:inset 0 1px 4px #000}
.raceRail::after{content:"";position:absolute;right:-2px;top:-6px;width:2px;height:15px;background:var(--ivory);box-shadow:4px 0 var(--brass)}
.raceWake{position:absolute;inset:0 auto 0 0;width:10%;border-radius:5px;background:linear-gradient(90deg,#2f8760,var(--brass));animation:raceWake 4.4s cubic-bezier(.22,.8,.22,1) infinite}
.raceRunner{position:absolute;z-index:2;left:0;top:50%;width:15px;height:15px;border-radius:50%;transform:translate(-50%,-50%);background:radial-gradient(circle at 35% 30%,#fff4c2,var(--brass) 42%,#6d4e0e 75%);box-shadow:0 0 0 3px rgba(210,180,104,.18),0 0 14px rgba(232,200,122,.65);animation:raceRunner 4.4s cubic-bezier(.22,.8,.22,1) infinite}
.rulesDemos{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:10px 0}
.ruleDemo{display:grid;grid-template-rows:105px auto;min-width:0;padding:8px 9px 10px;border:1px solid rgba(210,180,104,.23);border-radius:4px;background:linear-gradient(160deg,rgba(14,50,38,.94),rgba(3,16,12,.97));box-shadow:inset 0 1px rgba(255,255,255,.035)}
.ruleDemo>div:last-child{text-align:center}.ruleDemo b{display:block;font:400 17px 'Bebas Neue';letter-spacing:1.5px;color:var(--brass)}.ruleDemo span{display:block;margin-top:2px;font:600 10px Barlow;color:#afc0b8}
.demoStage{position:relative;height:105px;overflow:hidden;background:radial-gradient(circle at 50% 45%,rgba(91,164,124,.15),transparent 62%)}
.demoStage i{position:absolute;display:block;box-sizing:border-box;font-style:normal}
.miniDeck,.movingCard,.miniSlot,.miniCareer,.hiddenCard{width:42px;height:60px;border-radius:5px}
.miniDeck{left:16%;top:22px;background:#11294a;border:2px solid #4d63ad;box-shadow:4px 4px 0 #071528,8px 8px 0 rgba(77,99,173,.25)}
.miniDeck::after{content:"C";position:absolute;inset:0;display:grid;place-items:center;font:400 23px 'Bebas Neue';color:#9db8e8}
.miniSlot{right:13%;top:20px;border:2px dashed rgba(232,200,122,.5);background:rgba(232,200,122,.05);box-shadow:0 0 14px rgba(232,200,122,.12)}
.movingCard{left:18%;top:22px;z-index:3;background:linear-gradient(#2a6ba8 0 55%,#122c52 55%);border:2px solid #76aeed;box-shadow:0 8px 16px rgba(0,0,0,.55);animation:demoDraw 3.8s cubic-bezier(.2,.8,.2,1) infinite}
.miniCareer{left:15%;top:18px;background:linear-gradient(#368a61 0 55%,#123f2e 55%);border:2px solid #6fe3a5;box-shadow:0 8px 16px rgba(0,0,0,.5)}
.movingGem{right:18%;top:40px;z-index:3;width:25px;height:25px;display:grid!important;place-items:center;border-radius:6px;background:#f3d27a;border:2px solid #fff1bd;color:#251a04;font:900 12px Barlow;animation:demoAttach 3.8s cubic-bezier(.2,.8,.2,1) infinite}
.coin{left:29%;top:20px;width:21px;height:21px;display:grid!important;place-items:center;border-radius:50%;background:linear-gradient(#f7e4a6,#b78925);border:1px solid #fff0bb;color:#3b2906;font:900 11px Barlow;opacity:0;animation:demoCoin 3.8s ease-out infinite}.coin.c2{left:43%;animation-delay:.12s}.coin.c3{left:57%;animation-delay:.24s}
.rivalCoin{top:36px;width:35px;height:35px;border-radius:50%;background:radial-gradient(circle at 50% 40%,#c79a71 0 24%,#1b4e3d 25% 61%,#d2b468 63% 69%,#071a14 70%);border:1px solid rgba(245,239,221,.5)}.rivalCoin.r1{left:8%}.rivalCoin.r2{right:8%}
.hiddenCard{left:50%;top:20px;transform:translateX(-50%);display:grid!important;place-items:center;background:#11294a;border:2px solid #4d63ad;color:#9db8e8;font:400 24px 'Bebas Neue';box-shadow:0 8px 16px rgba(0,0,0,.55)}
.scanBeam{left:13%;top:6px;width:2px;height:91px;background:linear-gradient(transparent,#8fc5f2,transparent);box-shadow:0 0 11px 3px rgba(143,197,242,.36);animation:demoScan 3.8s ease-in-out infinite}
.reportStamp{left:50%;top:48px;z-index:4;transform:translate(-50%,-50%) rotate(-8deg) scale(1.7);padding:3px 6px;border:2px solid #e85c5c;color:#ff9999;font:900 9px Barlow;letter-spacing:1px;opacity:0;animation:demoStamp 3.8s ease infinite}
.rulesMicro{display:flex;align-items:center;justify-content:center;gap:10px;min-height:30px;padding:5px 10px;border-top:1px solid rgba(210,180,104,.28);border-bottom:1px solid rgba(210,180,104,.18);text-align:center;font:700 9px Barlow;color:#aabbb3;letter-spacing:.3px}.rulesMicro b{color:var(--ivory);letter-spacing:1px}.rulesMicro i{width:4px;height:4px;border-radius:50%;background:var(--brass)}
.rulesTip{text-align:center;margin:8px 0 6px;font:600 10px Barlow;color:var(--muted)}
/* v170: the CARD GUIDE entry. Build 169 used a bare .v2opt here and it rendered as a thin
   left-aligned strip that read as a caption, not a control — David could not find the feature at
   all. It is now unmistakably a button: full width, gold rule, two lines and a chevron. */
.rulesGuide{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"title chevron" "sub chevron";align-items:center;column-gap:12px;width:100%;min-height:56px;margin:0 0 8px;padding:10px 14px;cursor:pointer;text-align:left;border:1px solid #C9A24B;border-radius:10px;background:linear-gradient(180deg,rgba(232,200,122,.16),rgba(201,162,75,.07))}
.rulesGuide:hover{background:linear-gradient(180deg,rgba(232,200,122,.26),rgba(201,162,75,.12))}
.rulesGuide:active{transform:translateY(1px)}
.rulesGuide b{grid-area:title;align-self:end;font:900 16px/1.15 'Bebas Neue',Barlow,sans-serif;letter-spacing:.09em;color:#E8C87A}
.rulesGuide span{grid-area:sub;align-self:start;margin-top:2px;font:600 11.5px/1.35 Barlow,sans-serif;color:#cfe2d6}
.rulesGuide i{grid-area:chevron;align-self:center;font-style:normal;font-size:26px;line-height:1;color:#E8C87A}
.rulesGo{margin-top:0!important;text-align:center!important;font-size:17px!important;letter-spacing:1.5px!important}.rulesMore{text-align:center!important}
@keyframes raceRunner{0%,12%{left:0}72%,88%{left:100%}100%{left:0}}@keyframes raceWake{0%,12%{width:0}72%,88%{width:100%}100%{width:0}}
@keyframes demoDraw{0%,12%{left:18%;transform:rotate(-5deg) scale(.9);opacity:0}22%{opacity:1}65%,88%{left:72%;transform:rotate(0) scale(1);opacity:1}100%{left:72%;opacity:0}}
@keyframes demoAttach{0%,16%{right:18%;transform:scale(1)}58%,88%{right:66%;transform:scale(.72)}94%,100%{right:66%;transform:scale(.72);opacity:0}}
@keyframes demoCoin{0%,55%{transform:translateY(20px) scale(.5);opacity:0}67%{opacity:1}90%{transform:translateY(-26px) scale(1);opacity:0}100%{opacity:0}}
@keyframes demoScan{0%,12%{left:13%;opacity:0}22%{opacity:1}68%{left:86%;opacity:1}78%,100%{left:86%;opacity:0}}
@keyframes demoStamp{0%,62%{opacity:0;transform:translate(-50%,-50%) rotate(-8deg) scale(1.7)}69%,88%{opacity:1;transform:translate(-50%,-50%) rotate(-8deg) scale(1)}100%{opacity:0}}

body.previewing #v2command,body.inspecting #v2command,body.planning #v2command{visibility:hidden!important}
body.previewing #v2ticker,body.inspecting #v2ticker{opacity:.28}

@media(max-width:900px){
 #v2ticker{left:8px;right:52px;top:7px;width:auto;min-height:46px;transform:none;padding:6px 8px 6px 13px;grid-template-columns:auto 6px minmax(0,1fr) auto}
 body.playing #v2ticker{animation:wireDropCompact .35s ease-out both}
 @keyframes wireDropCompact{from{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:none}}
 .wireLabel{font-size:9px}#v2msg{font-size:13.5px}
 #v2command{height:88px;bottom:10px;grid-template-columns:minmax(315px,1.25fr) minmax(225px,1fr) 94px;gap:12px;padding:10px 10px 9px 16px}
 .commandPortfolio{grid-template-columns:155px minmax(160px,1fr);gap:12px}
 .commandLabel{font-size:10.5px;letter-spacing:1.9px}.goalrow{font-size:11px;margin-bottom:7px}.goaltrack{height:8px}
 #v2nw{font-size:36px}#v2act{font-size:17px;gap:9px}.actpips{gap:6px}.apip{width:9px;height:9px}.turnclock{font-size:14px;min-width:34px;padding:3px 6px}#v2end{width:94px;height:60px;font-size:18px}
 #v2feed{display:none}#v2feedToggle{display:flex}
 body.feed-open #v2feed{display:flex;left:10px;right:10px;top:59px;width:auto;max-height:min(48vh,430px);overflow:hidden;gap:8px;padding:12px;box-sizing:border-box;pointer-events:auto;z-index:24;border:1px solid rgba(210,180,104,.55);border-radius:5px;background:linear-gradient(155deg,rgba(10,39,29,.985),rgba(3,15,11,.99));box-shadow:0 22px 55px rgba(0,0,0,.72),inset 0 1px rgba(255,255,255,.06);backdrop-filter:blur(12px)}
 body.feed-open #v2feedItems{display:flex;flex-direction:column;gap:5px;overflow-y:auto;overscroll-behavior:contain}body.feed-open #v2feedItems .feeditem{display:block;font-size:13px;line-height:1.32;padding:9px 10px 9px 13px}body.feed-open #v2feedItems .feeditem:nth-child(n+5){display:block}
 body.feed-open .feedhead{font-size:9px;padding-bottom:7px;border-bottom:1px solid rgba(210,180,104,.22)}body.feed-open #v2feedClose{display:block;padding:5px 8px;border:1px solid rgba(210,180,104,.35);border-radius:3px;background:rgba(0,0,0,.24);color:var(--paper);font:800 8px Barlow;letter-spacing:1.2px;cursor:pointer}
}

@media(max-width:900px) and (orientation:portrait){
 #v2command{height:92px;grid-template-columns:minmax(0,1fr) 94px;grid-template-rows:36px 36px;gap:3px 10px;padding:9px 10px 8px 16px}
 .commandPortfolio{grid-column:1;grid-row:1;grid-template-columns:clamp(180px,28vw,220px) minmax(0,1fr);gap:10px;align-self:center}.commandTurn{grid-column:1;grid-row:2;align-self:center}.commandTurn>.commandLabel{display:none}
 #v2nw{font-size:clamp(28px,4.6vw,36px)}#v2end{grid-column:2;grid-row:1/3;align-self:center}
 #v2title{gap:7px}
 .ttmodes{display:flex;flex-direction:column;width:min(520px,86vw);gap:10px;margin-top:12px}
 .ttmode,.ttmode.gold{min-height:82px;grid-template-columns:42px 1fr auto;padding:11px 16px;font-size:22px}
 .ttmode small{font-size:13.5px;line-height:1.25;margin-top:4px}.ttmode>b{font-size:10px}.modeIcon{width:34px;height:42px}
 .ttRules{font-size:12px;padding:10px 16px}.ttFooter{font-size:9px}.tttag{font-size:12px}
}

@media(max-width:700px){
 #v2mbox.rulesbox{width:94vw;max-height:94vh;padding:13px 12px 14px;overflow-y:auto}.rulesPrimer h3{font-size:20px!important;margin-bottom:7px!important}.rulesObjective{padding:9px 10px 10px}.rulesObjective>strong{font-size:27px}.millionRace{margin-top:8px}.rulesDemos{grid-template-columns:1fr;gap:6px;margin:7px 0}.ruleDemo{grid-template-columns:91px 1fr;grid-template-rows:72px;align-items:center;padding:4px 7px}.demoStage{height:70px;transform:scale(.68);transform-origin:center}.ruleDemo>div:last-child{text-align:left}.ruleDemo b{font-size:15px}.ruleDemo span{font-size:9.5px}.rulesMicro{flex-wrap:wrap;gap:5px 7px;padding:6px;font-size:8.5px}.rulesMicro i{display:none}.rulesTip{font-size:9px;margin:6px}.rulesGo{min-height:42px!important}.rulesGuide{min-height:52px;padding:8px 11px}.rulesGuide b{font-size:15px}.rulesGuide span{font-size:10.5px}
 #v2title{justify-content:center;gap:5px;padding:15px 0;box-sizing:border-box}
 #v2title::before,#v3lobby::before{inset:8px}
 .titleArchitecture{width:76vw}.titleArchitecture b{font-size:9px}.ttEyebrow{font-size:9px;letter-spacing:2.8px}.ttSeal{width:40px;height:40px}.ttSeal span{font-size:22px}
 .tt1{font-size:clamp(42px,13vw,60px);letter-spacing:-2px}.tt2{font-size:17px;letter-spacing:8px;text-indent:8px;padding-top:5px}.tttag{font-size:9px;line-height:1.25;letter-spacing:1.35px}.tttag i{padding:0 5px}
 .ttmodes{display:flex;flex-direction:column;gap:8px;width:min(380px,90vw);margin-top:6px}.ttmode,.ttmode.gold{min-height:72px;grid-template-columns:36px 1fr auto;padding:10px 12px;font-size:20px}.modeIcon{width:30px;height:38px}.ttmode small{margin-top:4px;font-size:12px}.ttmode>b{font-size:9px}.ttFooter{display:none}.ttRules{font-size:10px;padding:8px 13px}.ttVersion{margin-top:0;font-size:8px;letter-spacing:1.35px}
 .lbCard{width:94vw;max-height:94vh;padding:16px 14px 12px;box-sizing:border-box}.lbHead span{font-size:16px}.lbHead b{font-size:14px}.lbIntro{margin:12px 0 4px;align-items:flex-start}.lbIntro strong{font-size:20px}.lbIntro span{max-width:58%;font-size:9.5px}.lbIdent{gap:8px;padding:9px}#lbMyAv{width:58px;height:58px}.lbAvBtn{width:27px;height:27px}#lbName{font-size:15px;padding:11px}
 #lbSeats{grid-template-columns:repeat(auto-fit,minmax(88px,1fr))}.lbSeat{min-height:91px;padding:7px 4px}#lbReady{font-size:19px;padding:12px}
 #v2ticker{left:7px;right:48px;top:6px;width:auto;min-height:44px;transform:none;grid-template-columns:auto 6px minmax(0,1fr) auto;padding:5px 6px 5px 9px;gap:7px}.wireLabel{font-size:8px;letter-spacing:1.4px}#v2msg{font-size:12px;line-height:1.2;text-align:left;padding:0}.wirePulse{width:5px;height:5px}#v2feedToggle{min-width:36px;height:28px;padding:0 5px}#v2feedToggle span{font-size:7px}
 body.playing #v2ticker{animation:wireDropMobile .35s ease-out both}
 @keyframes wireDropMobile{from{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:none}}
 #v2command{left:7px;right:7px;bottom:7px;height:78px;grid-template-columns:minmax(0,1fr) 72px;grid-template-rows:30px 33px;gap:3px 9px;padding:8px 8px 5px;border-radius:4px} /* v107: trimmed — every saved px goes to the board */
 #v2command::after{display:none}.commandPortfolio{grid-column:1;grid-row:1;grid-template-columns:clamp(132px,31vw,180px) minmax(0,1fr);gap:9px;align-self:center}.commandWorth .commandLabel{font-size:8px}.commandTurn{grid-column:1;grid-row:2;align-self:center}.commandTurn>.commandLabel{display:none}
 #v2nw{font-size:clamp(22px,6vw,30px)}.goalrow{display:flex!important;font-size:11px;margin-bottom:4px}#v2goal{align-self:end}.goaltrack{height:6px}
 #v2act{font-size:12px;gap:4px}.actlabel{flex:1 1 auto}.actpips{gap:3px}.apip{width:7px;height:7px}.turnclock{min-width:25px;padding:2px 4px;font-size:11px}
 #v2end{grid-column:2;grid-row:1/3;width:72px;height:54px;align-self:center;font-size:15px;padding:0 5px}
 #v2feed{display:none}#v2lead{display:none!important}#v2tray{bottom:91px;right:8px}#v2badge{top:6px;right:6px}#v2setB{width:34px;height:30px;padding:7px}
}
/* ===== v104 COMPACT PHONE MODE (David: the board must FIT a real phone browser viewport —
   iPhone-Pro-with-Safari-chrome is the PRIMARY design target, no scrolling). Slimmer console +
   wire; zones() reclaims the rest (thumbs/deck/gaps). Buttons stay ≥44px touch targets. ===== */
@media (max-width:480px) and (orientation:portrait){
 /* v110 SNAP CONSOLE (chromeless, David's ruling): no bar, no border, no blur — net worth,
    action pips and PASS float directly on the felt. v108's LAW still stands: phone #v2command
    height/rows are declared HERE and NOWHERE ELSE (this bar was silently re-fattened twice by
    later blocks). hudInsets() measures whatever wins the cascade — the board pays every px. */
 #v2command{height:48px;bottom:6px;left:8px;right:8px;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr) 64px;grid-template-rows:44px;gap:0 8px;padding:0;border:none;border-radius:0;background:none;box-shadow:none;backdrop-filter:none}
 #v2command::before,#v2command::after{display:none}
 body.playing #v2command{animation:none}
 .commandPortfolio{grid-column:1;grid-row:1;grid-template-columns:auto minmax(0,1fr);gap:7px;align-self:center}
 .commandTurn{grid-column:2;grid-row:1;align-self:center}
 #v2end{grid-column:3;grid-row:1;height:44px;width:64px;font-size:13.5px;align-self:center;padding:0 4px}
 .commandWorth .commandLabel{font-size:7px}
 #v2nw{font-size:clamp(16px,4.6vw,21px);text-shadow:0 2px 6px #000}
 #v2act{font-size:10.5px;gap:3px}.apip{width:6px;height:6px}.turnclock{min-width:23px;padding:1px 3px;font-size:10.5px}
 /* v130: mobile keeps the exact v119 unified notice; the hidden legacy sink never enters layout */
 #v2tray{bottom:60px}
}
/* v130 unified table notice; phone size, styling and live solver placement are unchanged from v119 */
#v2toastLane{position:fixed;left:12px;right:12px;z-index:26;display:flex;align-items:center;justify-content:center;transform:translateY(-50%);pointer-events:none}
.v2toast{display:block;max-width:95vw;min-height:42px;padding:10px 20px;box-sizing:border-box;appearance:none;overflow:hidden;border:1px solid rgba(210,180,104,.58);border-radius:22px;background:rgba(4,17,13,.96);color:#F5EFDD;font:700 15px/1.3 Barlow;text-align:center;text-overflow:ellipsis;white-space:nowrap;box-shadow:0 9px 24px rgba(0,0,0,.44),inset 0 1px rgba(255,255,255,.045);pointer-events:auto;cursor:pointer;animation:v2toastIn .2s ease-out both}
.v2toast.turn{border-color:rgba(111,227,165,.65);color:#c8f4db}
.v2toast.explain{border-color:rgba(226,61,61,.8);background:rgba(38,9,12,.96);color:#f2b8bd}
.v2toast.audio{border-color:rgba(232,200,122,.92);background:rgba(28,21,7,.97);color:#fff0bd;box-shadow:0 9px 26px rgba(0,0,0,.5),0 0 0 1px rgba(232,200,122,.16),inset 0 1px rgba(255,255,255,.08)}
.v2toast.out{animation:v2toastOut .24s ease-in both}
.v2toast:focus-visible{outline:2px solid #E8C87A;outline-offset:2px}
@keyframes v2toastIn{from{opacity:0;transform:translateY(7px) scale(.94)}to{opacity:1;transform:none}}
@keyframes v2toastOut{to{opacity:0;transform:translateY(-7px)}}

@media(max-height:650px) and (min-width:701px){
 #v2title{gap:4px}.ttSeal{width:37px;height:37px}.tt1{font-size:55px}.ttmodes{margin-top:3px}.ttmode,.ttmode.gold{min-height:72px}.ttFooter{display:none}
 .lbCard{max-height:96vh;padding-top:15px}.lbIntro{display:none}
 #v2command{height:58px;bottom:8px}.commandLabel{font-size:6px}#v2nw{font-size:23px}#v2tray{bottom:76px}
}

@media(prefers-reduced-motion:reduce){
 .wirePulse,.ttEyebrow,.ttSeal,.tt1,.tt2,.tttag,.ttmodes,.ttRules,.ttFooter,.ttVersion,.lbCard,body.playing #v2ticker,body.playing #v2command,.raceWake,.raceRunner,.movingCard,.movingGem,.coin,.scanBeam,.reportStamp{animation:none}.ttmode,.goalfill{transition:none}.raceRunner{left:100%}.raceWake{width:100%}.movingCard{left:72%;opacity:1}.movingGem{right:66%}.reportStamp{opacity:1;transform:translate(-50%,-50%) rotate(-8deg) scale(1)}
}

/* ==================================================================
   MOBILE READABILITY + TACTILE SYSTEM
   Hard rules: no control text below 11px; no interactive target below
   44px; panels fit the viewport before content is allowed to scroll.
   ================================================================== */
button,.v2opt,.ttmode,.ttRules,#lbReady,.lbContinue,.lbAvatarChoice,.lbStepper button{
 touch-action:manipulation;transform-origin:center;transition:transform 90ms ease-out,filter 120ms ease,border-color 120ms ease,box-shadow 120ms ease
}
button.tactile-down,.v2opt.tactile-down{transform:translateY(2px) scale(.96)!important;filter:brightness(.96)}
button.tactile-release,.v2opt.tactile-release{animation:tactileRelease 140ms cubic-bezier(.34,1.56,.64,1)}
@keyframes tactileRelease{0%{transform:translateY(2px) scale(.96)}65%{transform:translateY(-1px) scale(1.025)}100%{transform:none}}

/* Two short lobby steps use the available area instead of shrinking copy. */
.lbCard{width:min(760px,96vw);box-sizing:border-box;overflow-x:hidden;overscroll-behavior:contain}
.lbSteps{display:grid;grid-template-columns:minmax(0,1fr) 42px minmax(0,1fr);align-items:center;gap:8px;margin:14px 0 8px}
.lbSteps>i{height:1px;background:linear-gradient(90deg,rgba(210,180,104,.15),rgba(210,180,104,.65),rgba(210,180,104,.15))}
.lbSteps button{min-height:44px;border:0;background:none;color:#78998A;display:flex;align-items:center;justify-content:center;gap:8px;font:800 12px Barlow;letter-spacing:1.6px;cursor:pointer}
.lbSteps button b{display:grid;place-items:center;width:26px;height:26px;border:1px solid rgba(210,180,104,.32);border-radius:50%;font-size:13px;color:#AFC4BA}
.lbSteps button.on{color:var(--paper)}.lbSteps button.on b{background:var(--brass);border-color:var(--brass);color:#172119;box-shadow:0 0 18px rgba(210,180,104,.2)}
.lbStep{display:none;min-width:0}.lbStep.on{display:block;animation:lbStepIn 260ms cubic-bezier(.2,.8,.25,1) both}
@keyframes lbStepIn{from{opacity:0;transform:translateX(12px)}to{opacity:1;transform:none}}
.lbIdent{display:grid;grid-template-columns:86px minmax(120px,.72fr) minmax(220px,1fr);align-items:center;gap:14px;min-width:0}
#lbMyAv{width:82px;height:82px;object-fit:cover;border-radius:50%;grid-row:1/2}
.lbIdentityCopy{display:flex;flex-direction:column;min-width:0}.lbIdentityCopy strong{font:400 24px 'Bebas Neue';letter-spacing:2px;color:var(--paper);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.lbIdentityCopy span{font:600 12px/1.3 Barlow;color:var(--muted)}
#lbName{width:100%;min-width:0;min-height:48px;box-sizing:border-box}
.lbVoiceEquip{display:grid;grid-template-columns:minmax(150px,.65fr) minmax(300px,1.35fr) 82px;align-items:center;gap:10px;margin:8px 0 10px;padding:9px 10px;border:1px solid rgba(210,180,104,.2);border-radius:4px;background:linear-gradient(90deg,rgba(5,27,20,.9),rgba(10,43,32,.72))}
.lbVoiceCopy{display:flex;flex-direction:column;min-width:0}.lbVoiceCopy span{color:var(--brass);font:800 10px Barlow;letter-spacing:1.8px}.lbVoiceCopy small{margin-top:3px;overflow:hidden;color:#b8c9c1;font:700 9px Barlow;letter-spacing:.45px;text-overflow:ellipsis;white-space:nowrap}
.voicePackChoices{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;min-width:0}
.voicePackChoice{position:relative;min-width:0;min-height:45px;padding:6px 5px;border:1px solid rgba(210,180,104,.25);border-radius:3px;background:rgba(2,14,10,.76);color:var(--paper);cursor:pointer;text-align:left}.voicePackChoice b,.voicePackChoice small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.voicePackChoice b{font:800 10px Barlow;letter-spacing:.65px}.voicePackChoice small{margin-top:3px;color:var(--muted);font:750 7px Barlow;letter-spacing:.35px}.voicePackChoice.on{border-color:var(--brass);background:#174735;box-shadow:inset 0 -3px var(--brass),0 0 14px rgba(210,180,104,.1)}.voicePackChoice.on small{color:#f1dda4}.voicePackChoice.locked{border-color:rgba(210,180,104,.18);background:rgba(22,23,15,.66)}.voicePackChoice.locked b{color:#a89d83}.voicePackChoice.locked small{color:#8f8060}
.lbVoicePreview{min-height:45px;padding:6px;border:1px solid rgba(210,180,104,.48);border-radius:3px;background:rgba(3,17,13,.82);color:var(--brass);font:800 9px Barlow;letter-spacing:1px;cursor:pointer}
.settingsVoicePack{margin:10px 0;padding:10px;border:1px solid rgba(210,180,104,.24);border-radius:4px;background:rgba(2,14,10,.4)}.settingsVoicePack>b,.settingsVoicePack>small{display:block}.settingsVoicePack>b{color:var(--brass);font:800 11px Barlow;letter-spacing:1.7px}.settingsVoicePack>small{margin:3px 0 8px;color:var(--muted);font:650 10px/1.3 Barlow}.settingsVoicePack .voicePackChoice{min-height:49px}
.voiceTierTitle{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:14px 0 6px;padding-bottom:5px;border-bottom:1px solid rgba(210,180,104,.2)}.voiceTierTitle b{color:var(--brass);font:800 11px Barlow;letter-spacing:2px}.voiceTierTitle span{color:#b8c9c1;font:800 9px Barlow;letter-spacing:.8px}
.lbAvatarGrid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px;margin:10px 0}
.lbAvatarChoice{position:relative;min-width:0;min-height:92px;padding:6px 4px 5px;border:1px solid rgba(210,180,104,.2);border-radius:4px;background:rgba(2,14,10,.62);color:var(--paper);cursor:pointer;overflow:hidden}
.lbAvatarChoice img{display:block;width:60px;height:60px;max-width:100%;margin:0 auto 4px;border-radius:50%;object-fit:cover;border:2px solid rgba(210,180,104,.25);box-sizing:border-box}
.lbAvatarChoice span{display:block;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font:800 11px Barlow;letter-spacing:.5px}
.lbAvatarChoice.on{border-color:var(--brass);background:rgba(33,77,59,.82);box-shadow:inset 0 -3px var(--brass),0 0 18px rgba(210,180,104,.13)}.lbAvatarChoice.on img{border-color:var(--brass)}
.lbAvatarChoice.locked{border-color:rgba(210,180,104,.48);background:linear-gradient(155deg,rgba(55,43,19,.62),rgba(2,14,10,.78))}.lbAvatarChoice.locked img{filter:saturate(.68) brightness(.78);border-color:rgba(232,200,122,.62)}.lbAvatarChoice.locked::after{content:"🔒";position:absolute;top:6px;right:6px;display:grid;place-items:center;width:23px;height:23px;border:1px solid rgba(232,200,122,.65);border-radius:50%;background:rgba(3,17,13,.9);font-size:11px}.lbAvatarChoice.locked em{display:block;position:absolute;left:3px;right:3px;bottom:3px;padding:2px;background:rgba(3,17,13,.9);color:var(--brass);font:800 7px Barlow;letter-spacing:.55px;font-style:normal;white-space:nowrap}
.voiceRosterBox{width:min(560px,94vw)!important;max-height:min(86vh,760px)!important;overflow-y:auto!important}
.lbContinue{display:block;width:100%;min-height:48px;margin-top:10px;border:1px solid #e1ca8c;border-radius:3px;background:linear-gradient(180deg,#ead598,#c6a65c);box-shadow:inset 0 1px rgba(255,255,255,.55),0 4px 0 #705522,0 10px 20px rgba(0,0,0,.28);color:#182219;font:400 20px 'Bebas Neue';letter-spacing:2px;cursor:pointer}
.lbSetupGrid{display:grid;grid-template-columns:minmax(180px,.62fr) minmax(0,1.38fr);gap:12px;align-items:start}
.lbRow{min-width:0}.lbSetupGrid .lbRow{margin:4px 0;padding:10px;border:1px solid rgba(210,180,104,.15);background:rgba(2,12,9,.3);box-sizing:border-box}
.lbMixRow{grid-column:1/-1}.lbStepper{display:grid;grid-template-columns:48px minmax(58px,1fr) 48px;gap:6px;align-items:center}
.lbStepper button{min-width:44px;min-height:44px;border:1px solid rgba(210,180,104,.38);border-radius:3px;background:#061b14;color:var(--paper);font:800 24px Barlow;cursor:pointer}.lbStepper b{font:400 30px 'Bebas Neue';color:var(--brass);text-align:center}
#lbCode{width:100%;min-height:48px;box-sizing:border-box;border:1px solid rgba(210,180,104,.4);border-radius:3px;background:rgba(2,12,9,.7);color:var(--brass);font:800 22px 'Bebas Neue',Barlow;letter-spacing:8px;text-align:center;padding:9px}
/* v182: the opening mix is one always-visible slider (.lbCustomMix below) — the preset buttons are retired */
.lbCustomMix{display:grid;grid-template-columns:145px minmax(0,1fr);align-items:center;gap:10px;margin-top:9px}.lbCustomMix[hidden]{display:none}.lbCustomMix span{font:700 12px Barlow;color:var(--paper)}.lbCustomMix input{width:100%;min-width:0}
.lbReadyDock{position:sticky;bottom:-18px;z-index:4;padding:9px 0 3px;background:linear-gradient(180deg,transparent 0,#071b14 28%,#071b14 100%)}
#lbHint{min-height:18px;font-size:12px;line-height:1.35}.lbBack{min-height:44px;padding:8px 14px;font-size:12px}

/* Character reactions: your portrait is the control; the six live choices stay inside one safe panel. */
#v2badge{display:flex;align-items:flex-end}
#v2reactB{position:relative;width:48px;height:48px;min-width:48px;padding:0;pointer-events:auto;border:2px solid rgba(232,200,122,.82);border-radius:50%;background:#071a14;color:var(--brass);box-shadow:0 5px 14px rgba(0,0,0,.42),0 0 0 3px rgba(210,180,104,.08);cursor:pointer;transition:transform .14s ease,border-color .14s ease,box-shadow .14s ease}
#v2reactB:hover{transform:translateY(-1px);border-color:#f1dda4}#v2reactB:active{transform:scale(.95)}#v2reactB:focus-visible{outline:2px solid #fff3d6;outline-offset:3px}#v2reactB[aria-expanded="true"]{border-color:#fff3d6;box-shadow:0 0 0 4px rgba(210,180,104,.18),0 7px 20px rgba(0,0,0,.55)}
#v2reactAv{display:block;width:100%;height:100%;box-sizing:border-box;border-radius:50%;object-fit:cover;background:#071a14}
.reactionBadge{position:absolute;right:-4px;bottom:-2px;display:grid;place-items:center;width:21px;height:18px;border:1px solid #f1dda4;border-radius:8px;background:#123b2d;color:#fff3d6;font:900 14px/.6 Barlow;letter-spacing:0;box-shadow:0 3px 7px rgba(0,0,0,.5)}
#v2reactB.founder::before,.lbIdent.founder::before,.lbSeat.founder::before{content:"FOUNDER";position:absolute;z-index:5;display:grid;place-items:center;border:1px solid #fff3d6;border-radius:999px;background:#6b4e14;color:#fff3d6;font:900 7px/1 Barlow;letter-spacing:.65px;box-shadow:0 3px 9px rgba(0,0,0,.55)}
#v2reactB.founder::before{left:50%;top:-10px;width:40px;height:12px;transform:translateX(-50%)}.lbIdent.founder{position:relative}.lbIdent.founder::before{left:8px;top:-7px;width:48px;height:14px}.lbSeat.founder::before{left:4px;top:4px;width:42px;height:13px;font-size:6px}
#reactionMenu{display:none;position:fixed;z-index:32;width:min(520px,calc(100vw - 16px));padding:8px;box-sizing:border-box;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;border:1px solid rgba(210,180,104,.68);border-radius:6px;background:linear-gradient(155deg,rgba(13,48,36,.995),rgba(3,16,12,.995));box-shadow:0 20px 52px rgba(0,0,0,.72),inset 0 1px rgba(255,255,255,.05);backdrop-filter:blur(12px);transform-origin:24px 100%;overscroll-behavior:contain}
#reactionMenu.open{display:grid;animation:reactionMenuIn 180ms ease-out both}@keyframes reactionMenuIn{from{opacity:0;transform:translateY(8px) scale(.97)}to{opacity:1;transform:none}}
.reactionTierHead{grid-column:1/-1;display:flex;align-items:baseline;justify-content:space-between;gap:10px;padding:2px 3px 7px;border-bottom:1px solid rgba(210,180,104,.24)}.reactionTierHead b{color:var(--brass);font:800 11px Barlow;letter-spacing:1.8px}.reactionTierHead span{color:#b8c9c1;font:700 9px Barlow;text-align:right;letter-spacing:.35px}
.reactionChoice{min-width:0;min-height:58px;padding:7px 8px;border:1px solid rgba(210,180,104,.28);border-radius:4px;background:linear-gradient(155deg,rgba(11,42,31,.96),rgba(2,14,10,.9));color:var(--paper);text-align:left;cursor:pointer;transition:transform .12s ease,border-color .12s ease,background .12s ease}.reactionChoice:hover,.reactionChoice:focus-visible{border-color:var(--brass);background:#174735;outline:none}.reactionChoice:active{transform:scale(.97)}.reactionChoice b{display:block;font:800 11px Barlow;letter-spacing:.7px;color:#f1dda4}.reactionChoice span{display:-webkit-box;min-width:0;margin-top:3px;overflow:hidden;font:650 11.5px/1.2 Barlow;white-space:normal;-webkit-box-orient:vertical;-webkit-line-clamp:2}
.reactionChoice.locked,.reactionChoice:disabled{opacity:.58;cursor:not-allowed;border-style:dashed;background:rgba(3,17,13,.78)}.reactionChoice.locked:hover,.reactionChoice.locked:focus-visible,.reactionChoice:disabled:hover,.reactionChoice:disabled:focus-visible{border-color:rgba(210,180,104,.38);background:rgba(3,17,13,.78)}.reactionChoice.locked span{color:var(--brass)}
#reactionLayer{position:fixed;inset:0;z-index:29;pointer-events:none;overflow:hidden}
.reactionBubble{position:absolute;max-width:min(250px,64vw);min-width:120px;padding:10px 13px;box-sizing:border-box;border:1px solid rgba(210,180,104,.75);border-radius:12px;background:linear-gradient(155deg,rgba(255,249,231,.98),rgba(226,208,161,.98));box-shadow:0 10px 25px rgba(0,0,0,.48);color:#14251d;font:800 14px/1.25 Barlow;text-align:center;overflow-wrap:anywhere;animation:reactionBubbleIn 230ms cubic-bezier(.2,.9,.3,1.2) both}
.reactionBubble>b,.reactionBubble>span{display:block}.reactionBubble>b{margin-bottom:2px;font:800 10px Barlow;letter-spacing:1.2px;color:#705522}.reactionBubble.mine>b{color:var(--brass)}
.reactionBubble::after{content:"";position:absolute;left:var(--tail-x,50%);bottom:-7px;width:12px;height:12px;background:#e2d0a1;border-right:1px solid rgba(103,75,24,.55);border-bottom:1px solid rgba(103,75,24,.55);transform:translateX(-50%) rotate(45deg)}.reactionBubble.tailTop::after{top:-7px;bottom:auto;transform:translateX(-50%) rotate(225deg)}
.reactionBubble.mine{background:linear-gradient(155deg,#1f654b,#0c3426);color:var(--paper);border-color:var(--brass)}.reactionBubble.mine::after{background:#0c3426}
.reactionBubble.out{animation:reactionBubbleOut 180ms ease-in both}@keyframes reactionBubbleIn{from{opacity:0;transform:translateY(8px) scale(.82)}to{opacity:1;transform:none}}@keyframes reactionBubbleOut{to{opacity:0;transform:translateY(-8px) scale(.94)}}
.voiceCollectionIntro{margin:0 0 10px;color:#b8c9c1;font:650 12px/1.4 Barlow;text-align:center}.voiceCollectionGrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.voiceCollectionCard{position:relative;min-width:0;min-height:100px;padding:8px 5px 7px;border:1px solid rgba(210,180,104,.26);border-radius:5px;background:rgba(3,17,13,.72);color:var(--paper);cursor:pointer;text-align:center}.voiceCollectionCard:hover,.voiceCollectionCard:focus-visible{border-color:var(--brass);outline:none}.voiceCollectionCard img{display:block;width:50px;height:50px;margin:0 auto 5px;border:2px solid rgba(210,180,104,.5);border-radius:50%;object-fit:cover}.voiceCollectionCard b{display:block;overflow:hidden;color:var(--ivory);font:800 11px Barlow;letter-spacing:.6px;text-overflow:ellipsis;white-space:nowrap}.voiceCollectionCard small{display:block;margin-top:3px;color:var(--muted);font:750 8px Barlow;letter-spacing:.7px}.voiceCollectionCard.premium{border-color:rgba(210,180,104,.48);background:linear-gradient(155deg,rgba(55,43,19,.5),rgba(2,14,10,.78))}.voiceCollectionCard.premium small{color:var(--brass)}
.voiceLineRow{display:grid;grid-template-columns:minmax(0,1fr) 112px;gap:6px;align-items:stretch}.voiceLineRow>.v2opt{min-width:0}.voiceLineRow>.voiceLineBuy{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}.voiceLineRow>.voiceLineBuy small{margin-top:3px}

@media(max-width:700px){
 .lbCard{width:calc(100vw - 16px);max-height:calc(100dvh - 16px);padding:14px 12px 10px}.lbHead{padding-bottom:9px}.lbHead span{font-size:17px;letter-spacing:4px}.lbHead b{font-size:13px}.lbSteps{margin:8px 0 4px}.lbSteps button{font-size:11px;letter-spacing:1px}.lbIntro{margin:7px 0 5px;gap:10px}.lbIntro strong{font-size:21px}.lbIntro span{max-width:52%;font-size:11px;line-height:1.25;text-align:right}
 .lbIdent{grid-template-columns:74px minmax(0,1fr);gap:8px;padding:8px;margin:7px 0}.lbIdent #lbMyAv{width:68px;height:68px;grid-row:1/3}.lbIdentityCopy strong{font-size:22px}.lbIdentityCopy span{font-size:11px}.lbIdent #lbName{grid-column:2;min-height:44px;font-size:16px;padding:9px}
 .lbVoiceEquip{grid-template-columns:minmax(0,1fr) 78px;gap:7px;padding:8px;margin:6px 0}.lbVoiceCopy{grid-column:1/-1}.voicePackChoices{gap:4px}.voicePackChoice{min-height:44px;padding:5px 4px}.voicePackChoice b{font-size:9px}.voicePackChoice small{font-size:6.5px}.lbVoicePreview{min-height:44px}.lbVoiceEquip>.voicePackChoices{grid-column:1}.settingsVoicePack .voicePackChoices{grid-template-columns:1fr}.settingsVoicePack .voicePackChoice{min-height:44px}
 .lbAvatarGrid{grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;margin:7px 0}.lbAvatarChoice{min-height:72px;padding:4px 2px}.lbAvatarChoice img{width:49px;height:49px;margin-bottom:2px}.lbAvatarChoice span{font-size:11px;letter-spacing:0}.lbContinue{min-height:46px;margin-top:8px;font-size:19px}
 .lbSetupGrid{grid-template-columns:1fr;gap:7px}.lbMixRow{grid-column:auto;grid-row:auto}.lbSetupGrid .lbRow{padding:8px;margin:0}.lbLbl{font-size:11px;letter-spacing:1.8px;margin-bottom:6px}.lbStepper{grid-template-columns:46px minmax(58px,1fr) 46px}.lbCustomMix{grid-template-columns:128px minmax(0,1fr)}
 #lbSeats{grid-template-columns:repeat(4,minmax(0,1fr));gap:5px;margin:8px 0 2px}.lbSeat{min-width:0;min-height:79px;padding:5px 2px}.lbSeat img{width:38px;height:38px}.lbSeat .nm{font-size:11px}.lbSeat .st{font-size:10px;letter-spacing:.35px}.lbReadyDock{bottom:-12px;padding-top:7px}#lbReady{min-height:48px;padding:10px;font-size:19px}#lbHint{font-size:11px;margin-top:6px}.lbBack{margin-top:1px}
 #v2ticker{right:48px}#v2badge{top:6px;right:6px}body:not(.playing) #v2setB{height:34px;padding:6px 9px}#v2reactB{width:46px;height:46px;min-width:46px}#reactionMenu{width:calc(100vw - 16px);padding:7px;gap:5px}.reactionChoice{min-height:58px;padding:7px 6px}.reactionChoice b{font-size:10px;letter-spacing:.4px}.reactionChoice span{font-size:11px}.reactionBubble{max-width:min(240px,70vw);font-size:13px}.voiceCollectionGrid{grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}.voiceCollectionCard{min-height:91px}.voiceCollectionCard img{width:44px;height:44px}
}
@media(max-width:370px){
 .lbCard{padding-left:9px;padding-right:9px}.lbHead span{font-size:15px}.lbSteps button span{font-size:10px}.lbAvatarChoice span{font-size:10px}.lbAvatarChoice img{width:45px;height:45px}#lbSeats{grid-template-columns:repeat(4,minmax(0,1fr))}.lbSeat img{width:34px;height:34px}.commandIdentity{grid-template-columns:44px minmax(0,1fr);gap:6px}#v2reactB{width:44px;height:44px;min-width:44px}.reactionChoice span{font-size:10.5px}.voiceCollectionCard b{font-size:10px}
}
@media(prefers-reduced-motion:reduce){.lbStep.on,.reactionBubble,#reactionMenu.open,button.tactile-release,.v2opt.tactile-release,.v2toast{animation:none}}

@media(max-width:700px){
 #v2msg{font-size:16px;line-height:1.22}
 .goalrow{font-size:13px}
 #v2act{font-size:16px;line-height:1.15}
 .turnclock{min-width:32px;font-size:14px}
 #v2end{font-size:18px}
 body.feed-open #v2feedItems .feeditem{font-size:16px;line-height:1.4}
}
@media(max-width:400px){
 #v2ticker{right:58px;min-height:76px;grid-template-columns:minmax(0,1fr) 44px;padding:5px 6px 5px 10px}
 #v2ticker .wireLabel,#v2ticker .wirePulse{display:none}
 #v2msg{display:-webkit-box;max-height:3.66em;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:3}
 #v2feedToggle{width:44px;min-width:44px;height:44px;min-height:44px;padding:0 5px}
}

/* ===== Phase 1 relayout (2026-07-17) — console simplification =====
   The Target progress bar is GONE (David's ruling: redundant). The % now lives inside the
   NET WORTH label as #v2goalTag; the portfolio grid collapses to one column and the console
   sheds the bar's height on phones. hudInsets() measures #v2command, so the board gains
   every pixel saved here automatically. */
.commandPortfolio{grid-template-columns:minmax(0,1fr)!important;gap:8px}
#v2goalTag{color:var(--gold,#E8C87A);font-weight:800;letter-spacing:.4px}
#v2goal,.goalrow,.goaltrack{display:none!important}
/* v108: the phone console height/rows overrides that used to live here are GONE — they were
   silently re-fattening the bar to 88px on ≤480w phones, defeating the v107 single-row console
   (this happened TWICE: also a max-width:400 block, now deleted). LAW: #v2command height/rows
   for phones is declared in EXACTLY ONE place — the ≤480 portrait block above. Never add
   another; hudInsets() measures whatever wins the cascade and the board pays for every px. */
@media(max-width:700px){
 .commandWorth .commandLabel{display:block;font-size:8px}
}

/* ══ v158 SIMPLIFIED EVENT TABLE ═════════════════════════════════════════════════════════
   A Founder event table is dealt by its CAPTAIN, and the captain chooses ONLY the closing
   target. Everything else the host lobby normally offers (room code, seats stepper, table
   class, bot difficulty, the identity/step tabs) is meaningless at an event table and is
   hidden here. Non-captain seats are auto-ready server-side, so they see no target row and
   no START button at all — they just wait to be dealt in. */
/* v159 (David): the character/identity picker STAYS visible at event tables — players may
   browse the IDENTITY tab (character cards + voice meter) while waiting. Only room
   mechanics are hidden: seats, table class, difficulty. */
/* v163: a Founder seat is opened from the Event Pass — there is no code to type and no
   advanced setup to make. Both contradicted the "no codes" promise on the night. */
body.eventTable #lbCountRow,body.eventTable #lbCodeRow{display:none!important} /* v182: table class + difficulty rows no longer exist; the personal mix slider STAYS visible at an event table */
body.eventTable:not(.eventCaptain) .lbTargetRow,body.eventTable:not(.eventCaptain) #lbReady{display:none!important}
/* readiness is automatic at an event table — the seat renderer emits no READY / NOT READY text */
body.eventTable .lbSeat .st:empty{display:none!important}
/* v164 (David): the join-code INPUT stays hidden, but the code itself is INFORMATION — a player who
   drops out and whose automatic reconnect fails needs something human to read out. Read-only line,
   small type, no input, no button, so it cannot push the identity picker off a 390px phone. */
#lbEventCode{display:none}
body.eventTable #lbEventCode{display:block;margin:8px 0 2px;padding:7px 10px;border:1px solid rgba(201,162,75,.32);border-radius:9px;background:rgba(10,33,27,.55);text-align:center}
body.eventTable #lbEventCode b{display:block;font:800 12px Barlow;letter-spacing:2.2px;color:#E8C87A}
body.eventTable #lbEventCode span{display:block;margin-top:2px;font:600 9.5px/1.35 Barlow;letter-spacing:.3px;color:#8fa79b}
