/* Rat Race Escape — v2 visual design */
@font-face{font-family:'Fredoka';src:url(fonts/fredoka.woff2) format('woff2');font-weight:300 700;font-display:swap}
@font-face{font-family:'Nunito';src:url(fonts/nunito.woff2) format('woff2');font-weight:200 1000;font-display:swap}
:root{
  --bg1:#1e1548;--bg2:#2d1f6b;--bg3:#120c30;--panel:#fffaf0;--ink:#1f1a3a;--mute:#6b6590;--line:#ece6f7;
  --gold:#ffc23d;--gold2:#ff9f1c;--green:#16c784;--red:#ff5a5f;--sky:#38bdf8;
  --small:#12b886;--big:#3b6cf6;--market:#8b5cf6;--doodad:#ff5d8f;--payday:#ffb020;--charity:#f43f5e;--baby:#38bdf8;--down:#64748b;
  --cfday:#ffb020;--invest:#14b8a6;--dream:#c084fc;--loss:#ef4444;
  --pc:#ff5a5f;--r:22px;--shadow:0 10px 30px rgba(10,5,40,.35);
  --display:'Fredoka','Baloo 2','Trebuchet MS',system-ui,sans-serif;--body:'Nunito','Segoe UI',system-ui,-apple-system,sans-serif;
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;min-height:100%;background:var(--bg3)}
body{font-family:var(--body);color:#fff;background:radial-gradient(120% 70% at 50% 0%,var(--bg2) 0%,var(--bg1) 45%,var(--bg3) 100%) fixed;
  -webkit-font-smoothing:antialiased;overscroll-behavior-y:none}
button,input,select{font:inherit;color:inherit}
button{cursor:pointer;border:0;background:none;padding:0}
button:disabled{opacity:.45;cursor:not-allowed;filter:saturate(.4)}
#app{max-width:520px;margin:0 auto;min-height:100vh;min-height:100dvh;position:relative}
h1,h2,h3,h4,.display{font-family:var(--display);font-weight:600;letter-spacing:.2px}
.pos{color:var(--green)!important}.neg{color:var(--red)!important}
.muted{color:var(--mute)}

/* ---------- Buttons ---------- */
.btn{display:flex;align-items:center;justify-content:center;gap:8px;min-height:52px;padding:12px 18px;border-radius:16px;font-weight:800;font-size:16px;
  background:#fff;color:var(--ink);box-shadow:0 4px 0 rgba(0,0,0,.12);transition:transform .08s,box-shadow .08s;width:100%;text-align:center;line-height:1.15}
.btn:active:not(:disabled){transform:translateY(3px);box-shadow:0 1px 0 rgba(0,0,0,.12)}
.btn.primary{background:linear-gradient(180deg,#ffd45c,var(--gold2));color:#4a2600;box-shadow:0 5px 0 #c96f00}
.btn.primary:active:not(:disabled){box-shadow:0 2px 0 #c96f00}
.btn.go{background:linear-gradient(180deg,#34e3a0,#0fa968);color:#fff;box-shadow:0 5px 0 #08774a;text-shadow:0 1px 0 rgba(0,0,0,.15)}
.btn.go:active:not(:disabled){box-shadow:0 2px 0 #08774a}
.btn.soft{background:#f1ecfb;color:var(--ink);box-shadow:none}
.btn.ghost{background:rgba(255,255,255,.1);color:#fff;box-shadow:none;border:1.5px solid rgba(255,255,255,.18)}
.btn.danger{background:#ffe4e6;color:#be123c;box-shadow:none}
.btn.xl{min-height:64px;font-size:20px;border-radius:20px;font-family:var(--display);font-weight:600;letter-spacing:.3px}
.btn small{display:block;font-weight:700;font-size:12px;opacity:.75;font-family:var(--body)}
.btn .col{display:flex;flex-direction:column;align-items:center}
.btn.sm{min-height:38px;padding:6px 12px;font-size:14px;border-radius:12px;width:auto}
.btn.xs{min-height:30px;padding:4px 10px;font-size:12px;border-radius:10px;width:auto;box-shadow:none;background:#efe9fb}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.row3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px}
.stack{display:flex;flex-direction:column;gap:10px}
.iconbtn{width:44px;height:44px;border-radius:14px;display:grid;place-items:center;background:rgba(255,255,255,.1);font-size:20px}

/* ---------- Avatars ---------- */
.av{--s:40px;width:var(--s);height:var(--s);border-radius:50%;display:grid;place-items:center;flex:none;font-family:var(--display);font-weight:600;
  color:#fff;font-size:calc(var(--s)*.45);background:radial-gradient(circle at 30% 25%,rgba(255,255,255,.45),transparent 45%),var(--c,var(--pc));
  box-shadow:inset 0 -3px 0 rgba(0,0,0,.18),0 2px 6px rgba(0,0,0,.25);text-shadow:0 1px 0 rgba(0,0,0,.2)}

/* ---------- Home ---------- */
.home{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:28px 24px 32px;gap:12px;text-align:center;position:relative;overflow:hidden}
.home .logo{width:132px;height:132px;filter:drop-shadow(0 12px 24px rgba(255,170,0,.35));animation:float 4s ease-in-out infinite}
@keyframes float{50%{transform:translateY(-8px) rotate(-3deg)}}
.home h1{font-size:46px;line-height:.95;margin:6px 0 0;text-shadow:0 4px 0 rgba(0,0,0,.25)}
.home h1 span{display:block;background:linear-gradient(180deg,#ffe27a,var(--gold2));-webkit-background-clip:text;background-clip:text;color:transparent;font-size:54px}
.home .tag{color:#cfc6ff;margin:4px 0 16px;font-weight:700;max-width:300px}
.home .stack{width:100%;max-width:340px}
.home .fine{color:#9d93d4;font-size:12px;margin-top:10px}
.home .resume small{margin-top:2px}
.coinbg{position:absolute;inset:0;pointer-events:none;overflow:hidden;z-index:-1}
.coinbg i{position:absolute;font-style:normal;font-size:26px;opacity:.16;animation:drift 14s linear infinite}
@keyframes drift{from{transform:translateY(110vh) rotate(0)}to{transform:translateY(-15vh) rotate(360deg)}}

/* ---------- Top bar ---------- */
.top{display:flex;align-items:center;gap:10px;padding:12px 16px 6px;position:sticky;top:0;z-index:5;background:linear-gradient(var(--bg1) 70%,transparent)}
.top h2{flex:1;margin:0;font-size:20px}
.timer{display:flex;align-items:center;gap:6px;padding:6px 12px;border-radius:999px;background:rgba(255,255,255,.1);font-weight:800;font-size:14px;font-variant-numeric:tabular-nums;white-space:nowrap}
.timer.warn{background:rgba(255,90,95,.25);color:#ffd0d2}
.timer.over{background:var(--red);color:#fff;animation:pulse 1s infinite}
.players{display:flex;gap:6px;flex:1;overflow-x:auto;scrollbar-width:none}
.players::-webkit-scrollbar{display:none}
.pmini{position:relative;display:flex;flex-direction:column;align-items:center;gap:2px;min-width:44px}
.pmini .av{--s:34px;opacity:.7}
.pmini.on .av{opacity:1;box-shadow:0 0 0 3px var(--bg1),0 0 0 5px var(--gold)}
.pmini.out{filter:grayscale(1);opacity:.5}
.pmini small{font-size:10px;font-weight:800;color:#cfc6ff;font-variant-numeric:tabular-nums}
.pmini .ft{position:absolute;top:-4px;right:-2px;font-size:13px}

/* ---------- Setup ---------- */
.setup{padding:0 16px 110px}
.setup h3.sec{margin:18px 4px 10px;font-size:15px;color:#cfc6ff;text-transform:uppercase;letter-spacing:1.2px;font-weight:600}
.durs{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.dur{border-radius:18px;padding:12px 4px 10px;background:rgba(255,255,255,.08);border:2px solid transparent;display:flex;flex-direction:column;align-items:center;gap:2px;transition:.15s}
.dur .e{font-size:24px}.dur b{font-family:var(--display);font-size:20px;font-weight:600}.dur small{font-size:11px;color:#bfb6f0;font-weight:700}
.dur.on{background:#fff;color:var(--ink);border-color:var(--gold);box-shadow:0 6px 0 var(--gold2)}
.dur.on small{color:var(--mute)}
.durnote{font-size:13px;color:#cfc6ff;margin:10px 4px 0;font-weight:600}
.toggle{display:flex;align-items:center;gap:10px;margin:10px 4px 0;font-weight:700;font-size:14px;color:#e6e0ff}
.toggle input{width:22px;height:22px;accent-color:var(--gold2)}
.counter{display:flex;align-items:center;justify-content:space-between;background:rgba(255,255,255,.08);border-radius:18px;padding:8px}
.counter b{font-family:var(--display);font-size:26px;font-weight:600}
.counter .btn{width:52px;min-height:44px;font-size:24px;padding:0}
.counter .avs{display:flex;gap:-6px}
.counter .avs .av{--s:26px;margin-left:-6px;border:2px solid var(--bg1)}
.pcard{background:var(--panel);color:var(--ink);border-radius:var(--r);padding:12px;margin-bottom:10px;box-shadow:var(--shadow);border-left:6px solid var(--c)}
.pcard .head{display:flex;gap:10px;align-items:center}
.pcard input.name{flex:1;border:2px solid var(--line);border-radius:14px;padding:10px 12px;font-weight:800;font-size:17px;background:#fff;min-width:0}
.pcard input.name:focus{outline:none;border-color:var(--c)}
.pick{display:grid;grid-template-columns:1fr auto;gap:8px;margin-top:8px;align-items:center}
.sel{position:relative}
.sel select{appearance:none;-webkit-appearance:none;width:100%;border:2px solid var(--line);border-radius:14px;padding:10px 32px 10px 12px;font-weight:700;font-size:15px;background:#fff}
.sel:after{content:'▾';position:absolute;right:12px;top:50%;transform:translateY(-50%);color:var(--mute);pointer-events:none}
.pstats{display:flex;gap:6px;margin-top:8px;flex-wrap:wrap}
.pill{font-size:12px;font-weight:800;padding:4px 9px;border-radius:999px;background:#f1ecfb;color:var(--mute)}
.pill b{color:var(--ink)}
.dock-start{position:fixed;left:0;right:0;bottom:0;padding:12px 16px calc(14px + env(safe-area-inset-bottom));background:linear-gradient(transparent,var(--bg3) 35%);z-index:6}
.dock-start>.btn{max-width:488px;margin:0 auto}

/* ---------- HUD ---------- */
.game{padding:0 12px 120px}
.hud{background:var(--panel);color:var(--ink);border-radius:var(--r);padding:12px 14px;box-shadow:var(--shadow);position:relative;overflow:hidden}
.hud:before{content:'';position:absolute;inset:0 0 auto 0;height:5px;background:var(--pc)}
.hud .who{display:flex;align-items:center;gap:10px}
.hud .who .av{--s:40px}
.hud .who h3{margin:0;font-size:20px;line-height:1}
.hud .who p{margin:2px 0 0;font-size:13px;color:var(--mute);font-weight:700}
.hud .who .tr{margin-left:auto;font-size:12px;font-weight:800;padding:5px 10px;border-radius:999px;background:#f1ecfb;color:var(--mute)}
.hud .who .tr.fast{background:linear-gradient(90deg,#ffe27a,#ffb020);color:#4a2600}
.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:10px}
.stat{background:#f6f2fd;border-radius:14px;padding:7px 10px}
.stat small{display:block;font-size:11px;font-weight:800;color:var(--mute);text-transform:uppercase;letter-spacing:.5px}
.stat b{font-family:var(--display);font-size:20px;font-weight:600;font-variant-numeric:tabular-nums}
.prog{margin-top:10px}
.prog .bar{height:12px;border-radius:999px;background:#ece6f7;overflow:hidden;position:relative}
.prog .bar i{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,#3ee6a3,#12b886);transition:width .6s cubic-bezier(.2,.9,.3,1.2)}
.prog .bar.fast i{background:linear-gradient(90deg,#ffe27a,#ff9f1c)}
.prog .lbl{display:flex;justify-content:space-between;font-size:12px;font-weight:800;color:var(--mute);margin-top:4px}
.ready{margin-top:8px;padding:8px 10px;border-radius:12px;background:linear-gradient(90deg,#fff3c4,#ffe08a);color:#7a4a00;font-weight:800;font-size:13px;text-align:center;animation:pulse 1.6s infinite}

/* ---------- Board ---------- */
.boardwrap{display:flex;justify-content:center;margin:12px 0 4px}
.t-opportunity{--tc:var(--small)}.t-doodad{--tc:var(--doodad)}.t-charity{--tc:var(--charity)}.t-payday{--tc:var(--payday)}
.t-market{--tc:var(--market)}.t-downsized{--tc:var(--down)}.t-baby{--tc:var(--baby)}
.t-cfday{--tc:var(--cfday)}.t-invest{--tc:var(--invest)}.t-dream{--tc:var(--dream)}.t-lawsuit,.t-audit,.t-divorce{--tc:var(--loss)}
.dice{display:flex;gap:8px;justify-content:center}
.die{width:52px;height:52px;filter:drop-shadow(0 6px 10px rgba(0,0,0,.35))}
.die.sm{width:30px;height:30px}
.dice.rolling .die{animation:tumble .5s linear infinite}
.dice.rolling .die:nth-child(2){animation-duration:.42s}
@keyframes tumble{0%{transform:rotate(0) translateY(0)}25%{transform:rotate(90deg) translateY(-8px)}50%{transform:rotate(180deg)}75%{transform:rotate(270deg) translateY(-6px)}100%{transform:rotate(360deg)}}
.dice.land .die{animation:land .35s cubic-bezier(.2,1.6,.4,1)}
@keyframes land{from{transform:scale(1.4) rotate(-20deg)}}

/* ---------- Dock ---------- */
.dock{position:fixed;left:0;right:0;bottom:0;z-index:8;padding:10px 12px calc(10px + env(safe-area-inset-bottom));background:linear-gradient(transparent,rgba(18,12,48,.92) 30%)}
.dock .in{max-width:496px;margin:0 auto;display:flex;gap:8px;align-items:stretch}
.dock .side{width:58px;min-height:64px;border-radius:18px;background:rgba(255,255,255,.12);color:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:20px;gap:1px;backdrop-filter:blur(6px)}
.dock .side small{font-size:10px;font-weight:800;color:#d6cffc}
.dock .main{flex:1;display:flex;gap:8px}
.dock .hint{flex:1;display:grid;place-items:center;color:#cfc6ff;font-weight:800;font-size:14px;text-align:center;border-radius:18px;border:2px dashed rgba(255,255,255,.18)}

/* ---------- Event card sheet ---------- */
.cardsheet{position:fixed;left:0;right:0;bottom:0;z-index:9;padding:0 10px calc(10px + env(safe-area-inset-bottom));pointer-events:none}
.cardsheet .wrap{max-width:500px;margin:0 auto;pointer-events:auto;animation:dealin .45s cubic-bezier(.2,1.2,.3,1)}
@keyframes dealin{from{transform:translateY(60%) rotate(4deg) scale(.9);opacity:0}}
.gcard{--k:var(--small);background:var(--panel);color:var(--ink);border-radius:26px;box-shadow:0 -6px 40px rgba(0,0,0,.45),0 0 0 4px var(--k);overflow:hidden;max-height:72vh;max-height:72dvh;display:flex;flex-direction:column}
.gcard .band{background:radial-gradient(120% 140% at 0% 0%,rgba(255,255,255,.35),transparent 50%),var(--k);color:#fff;padding:14px 16px 12px;position:relative;display:flex;align-items:center;gap:12px}
.gcard .band .emb{width:52px;height:52px;border-radius:16px;background:rgba(255,255,255,.22);display:grid;place-items:center;font-size:30px;flex:none;box-shadow:inset 0 0 0 2px rgba(255,255,255,.35)}
.gcard .band .kick{font-size:11px;font-weight:900;letter-spacing:2px;text-transform:uppercase;opacity:.9}
.gcard .band h3{margin:2px 0 0;font-size:21px;line-height:1.1;text-shadow:0 1px 0 rgba(0,0,0,.15)}
.gcard .band .min{position:absolute;right:10px;top:10px;width:34px;height:34px;border-radius:50%;background:rgba(0,0,0,.15);color:#fff;font-size:16px;z-index:2}
.gcard .band:after{content:'';position:absolute;right:-30px;bottom:-40px;width:120px;height:120px;border-radius:50%;border:14px solid rgba(255,255,255,.12);pointer-events:none}
.gcard .body{padding:14px 16px 6px;overflow:auto}
.gcard .body p.txt{margin:0 0 10px;color:#4b4570;font-weight:600;font-size:15px}
.gcard .foot{padding:10px 16px 14px;display:flex;flex-direction:column;gap:8px;border-top:1px solid var(--line)}
.gcard.min .body,.gcard.min .foot{display:none}
.k-smalldeal{--k:var(--small)}.k-bigdeal{--k:var(--big)}.k-market{--k:var(--market)}.k-doodad{--k:var(--doodad)}.k-payday{--k:var(--payday)}
.k-charity{--k:var(--charity)}.k-baby{--k:var(--baby)}.k-downsized{--k:var(--down)}.k-invest{--k:var(--invest)}.k-dream{--k:#a855f7}.k-loss{--k:var(--loss)}.k-opp{--k:#6d5dfc}
.big3{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:10px}
.big3>div{background:#f6f2fd;border-radius:14px;padding:8px;text-align:center}
.big3 small{display:block;font-size:10px;font-weight:900;color:var(--mute);text-transform:uppercase;letter-spacing:.6px}
.big3 b{font-family:var(--display);font-size:19px;font-weight:600;font-variant-numeric:tabular-nums}
.big3 .hl{background:#e7fbf2}.big3 .hl b{color:#0f9d6b}
.kv{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:8px 2px;border-bottom:1px dashed var(--line);font-size:15px}
.kv:last-child{border-bottom:0}
.kv span{color:#4b4570;font-weight:600}.kv b{font-variant-numeric:tabular-nums;text-align:right}
.badge{display:inline-flex;align-items:center;gap:4px;font-size:12px;font-weight:900;padding:4px 10px;border-radius:999px;background:#e7fbf2;color:#0f9d6b}
.badge.warn{background:#fff1e0;color:#c2410c}
.amount{text-align:center;margin:4px 0 12px}
.amount small{display:block;font-size:12px;font-weight:900;color:var(--mute);text-transform:uppercase;letter-spacing:1px}
.amount b{font-family:var(--display);font-size:42px;font-weight:600;font-variant-numeric:tabular-nums}
.done{display:flex;align-items:center;justify-content:center;gap:8px;padding:10px;border-radius:14px;background:#e7fbf2;color:#0f9d6b;font-weight:900}
.done.bad{background:#ffe4e6;color:#be123c}
.decks{display:grid;grid-template-columns:1fr 1fr;gap:12px;padding:4px 0 8px}
.deck{position:relative;border-radius:20px;padding:16px 12px 14px;color:#fff;text-align:left;min-height:170px;display:flex;flex-direction:column;justify-content:flex-end;
  background:radial-gradient(120% 90% at 10% 0%,rgba(255,255,255,.35),transparent 50%),var(--k);box-shadow:0 6px 0 rgba(0,0,0,.18),0 4px 0 6px rgba(0,0,0,.06);transition:transform .12s}
.deck:before,.deck:after{content:'';position:absolute;inset:0;border-radius:20px;background:var(--k);z-index:-1;transform:translate(5px,5px) rotate(2deg);opacity:.5}
.deck:after{transform:translate(9px,9px) rotate(4deg);opacity:.3}
.deck:active{transform:scale(.97)}
.deck .e{font-size:40px;position:absolute;top:14px;left:12px}
.deck b{font-family:var(--display);font-size:22px;font-weight:600;line-height:1}
.deck small{font-size:12px;font-weight:700;opacity:.9;margin-top:4px}
.qty{display:flex;align-items:center;gap:8px;margin:8px 0}
.qty input{flex:1;min-width:0;text-align:center;font-family:var(--display);font-size:22px;font-weight:600;border:2px solid var(--line);border-radius:14px;padding:8px;background:#fff}
.qty .btn{width:52px;padding:0;font-size:22px}
.chips{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:6px}
.chip{padding:7px 12px;border-radius:999px;background:#f1ecfb;font-weight:800;font-size:13px;color:var(--ink)}
.seller{display:flex;align-items:center;gap:10px;padding:10px;border-radius:16px;background:#f6f2fd;margin-bottom:8px}
.seller .av{--s:32px}
.seller .info{flex:1;min-width:0;font-size:14px;font-weight:700}
.seller .info small{display:block;color:var(--mute);font-weight:700;font-size:12px}
.seller input{width:64px;border:2px solid var(--line);border-radius:10px;padding:6px;text-align:center;font-weight:800}
.note{font-size:13px;color:var(--mute);font-weight:700;margin:6px 2px}
.secttl{font-size:12px;font-weight:900;color:var(--mute);text-transform:uppercase;letter-spacing:1px;margin:12px 2px 6px}
.flipin{animation:flip .5s cubic-bezier(.2,1,.3,1)}
@keyframes flip{from{transform:perspective(800px) rotateY(80deg) scale(.9);opacity:.2}}

/* ---------- Handoff ---------- */
.handoff{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;padding:0 18px calc(20px + env(safe-area-inset-bottom));
  background:radial-gradient(90% 55% at 50% 20%,color-mix(in srgb,var(--pc) 55%,transparent),transparent 70%)}
.handoff .mid{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:6px;padding:10px 0}
.handoff .av{--s:108px;font-size:48px;animation:bob 2.4s ease-in-out infinite;box-shadow:0 0 0 6px rgba(255,255,255,.15),0 14px 30px rgba(0,0,0,.35)}
@keyframes bob{50%{transform:translateY(-6px)}}
.handoff .pass{margin:14px 0 0;color:#d6cffc;font-weight:800;letter-spacing:1px;text-transform:uppercase;font-size:13px}
.handoff h1{margin:0;font-size:44px;line-height:1.05}
.handoff .sub{color:#d6cffc;font-weight:700;margin:2px 0 10px}
.mstats{display:flex;gap:8px;justify-content:center;flex-wrap:wrap}
.mstats span{background:rgba(255,255,255,.12);border-radius:999px;padding:6px 12px;font-weight:800;font-size:13px}
.recent{width:100%;background:rgba(0,0,0,.2);border-radius:18px;padding:10px 12px;margin-top:14px;text-align:left;max-height:24vh;overflow:auto}
.recent h4{margin:0 0 4px;font-size:12px;color:#cfc6ff;text-transform:uppercase;letter-spacing:1px}
.recent p{margin:4px 0;font-size:13px;font-weight:600;color:#ebe7ff}
.handoff .acts{display:flex;flex-direction:column;gap:10px}
.linkbtn{color:#cfc6ff;font-weight:800;font-size:14px;padding:10px;text-decoration:underline;text-underline-offset:3px}

/* ---------- Modals ---------- */
.overlay{position:fixed;inset:0;background:rgba(10,6,30,.6);backdrop-filter:blur(3px);display:flex;align-items:flex-end;justify-content:center;z-index:20;animation:fade .2s}
@keyframes fade{from{opacity:0}}
.sheet{background:var(--panel);color:var(--ink);width:100%;max-width:520px;max-height:90vh;max-height:90dvh;overflow:auto;border-radius:26px 26px 0 0;padding:8px 16px calc(20px + env(safe-area-inset-bottom));position:relative;animation:up .28s cubic-bezier(.2,1,.3,1)}
.sheet:before{content:'';display:block;width:44px;height:5px;border-radius:9px;background:#ddd5ef;margin:0 auto 10px}
@keyframes up{from{transform:translateY(100%)}}
.sheet h3{margin:0 44px 8px 0;font-size:22px}
.sheet .x{position:absolute;right:12px;top:14px;width:38px;height:38px;border-radius:50%;background:#f1ecfb;font-size:16px;color:var(--ink)}
.tabs{display:flex;gap:4px;background:#f1ecfb;border-radius:14px;padding:4px;margin:8px 0 12px;position:sticky;top:-8px;z-index:2}
.tabs button{flex:1;padding:9px 4px;border-radius:11px;font-weight:800;font-size:14px;color:var(--mute)}
.tabs button.on{background:#fff;color:var(--ink);box-shadow:0 2px 6px rgba(0,0,0,.08)}
.sum{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:6px 0 4px}
.sum>div{background:#f6f2fd;border-radius:14px;padding:10px;text-align:center}
.sum small{display:block;font-size:11px;font-weight:900;color:var(--mute);text-transform:uppercase}
.sum b{font-family:var(--display);font-size:20px;font-weight:600}
.sum .hero{grid-column:1/-1;background:linear-gradient(135deg,#1e1548,#3b2a8c);color:#fff}
.sum .hero small{color:#cfc6ff}.sum .hero b{font-size:32px}
.box{background:#fff;border:1.5px solid var(--line);border-radius:18px;padding:4px 12px;margin-bottom:10px}
.box .kv.total{border-top:2px solid var(--line);border-bottom:0;font-weight:900}
.box .kv.total span{color:var(--ink);font-weight:900}
.liab{display:flex;align-items:center;gap:8px;padding:9px 2px;border-bottom:1px dashed var(--line)}
.liab:last-child{border-bottom:0}
.liab .info{flex:1;font-weight:700;font-size:14px}.liab .info small{display:block;color:var(--mute);font-size:12px}
.liab b{font-variant-numeric:tabular-nums}
.logl p{margin:0;padding:8px 2px;border-bottom:1px dashed var(--line);font-size:14px;font-weight:600}
.logl small{display:inline-block;min-width:30px;color:var(--mute);font-weight:900}
.menu .btn{margin-bottom:8px;justify-content:flex-start}
.stepper{display:flex;gap:8px;align-items:center;margin:12px 0}
.stepper input{flex:1;min-width:0;text-align:center;font-family:var(--display);font-size:26px;font-weight:600;border:2px solid var(--line);border-radius:16px;padding:8px;background:#fff}
.stepper .btn{width:56px;font-size:24px;padding:0}
.rules p{font-size:15px;line-height:1.5;color:#3b355e}

/* ---------- Celebrate / Game over ---------- */
.celebrate{text-align:center;padding:10px 0 4px}
.celebrate .big{font-size:72px;animation:pop .6s cubic-bezier(.2,1.6,.4,1)}
@keyframes pop{from{transform:scale(.2) rotate(-30deg);opacity:0}}
.celebrate h2{margin:6px 0;font-size:28px}
.celebrate p{color:var(--mute);font-weight:700}
.gover{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:28px 18px;text-align:center;gap:8px}
.gover .trophy{font-size:84px;filter:drop-shadow(0 10px 30px rgba(255,194,61,.6));animation:pop .8s cubic-bezier(.2,1.6,.4,1)}
.gover .av{--s:76px;font-size:34px;margin-top:-26px;box-shadow:0 0 0 5px var(--gold)}
.gover h1{margin:6px 0 0;font-size:40px}
.gover .why{color:#d6cffc;font-weight:700;max-width:320px;margin:0 0 6px}
.standings{width:100%;max-width:400px;background:var(--panel);color:var(--ink);border-radius:var(--r);padding:8px 12px;margin:8px 0 10px;box-shadow:var(--shadow)}
.stand{display:flex;align-items:center;gap:10px;padding:9px 0;border-bottom:1px dashed var(--line);text-align:left}
.stand:last-child{border-bottom:0}
.stand .rk{font-family:var(--display);font-weight:600;width:22px;color:var(--mute)}
.stand .av{--s:32px;margin:0;box-shadow:none;font-size:14px}
.stand .info{flex:1;font-weight:800;font-size:14px}.stand .info small{display:block;font-weight:700;color:var(--mute);font-size:12px}
.stand .sbar{height:6px;border-radius:9px;background:#ece6f7;margin-top:4px;overflow:hidden}.stand .sbar i{display:block;height:100%;background:linear-gradient(90deg,#3ee6a3,#ffb020)}
.gover .acts{width:100%;max-width:400px;display:flex;flex-direction:column;gap:10px}
#confetti{position:fixed;inset:0;pointer-events:none;z-index:50}

/* ---------- Toasts ---------- */
#toasts{position:fixed;top:calc(10px + env(safe-area-inset-top));left:0;right:0;z-index:60;display:flex;flex-direction:column;align-items:center;gap:6px;pointer-events:none;padding:0 12px}
.toast{max-width:440px;background:#fff;color:var(--ink);border-radius:16px;padding:10px 14px;font-weight:800;font-size:14px;box-shadow:0 10px 30px rgba(0,0,0,.35);
  display:flex;gap:8px;align-items:center;animation:tin .35s cubic-bezier(.2,1.4,.4,1);border-left:6px solid var(--tc,var(--green))}
.toast.bad{--tc:var(--red);background:#fff1f2}
.toast.out{animation:tout .3s forwards}
@keyframes tin{from{transform:translateY(-30px) scale(.9);opacity:0}}
@keyframes tout{to{transform:translateY(-20px);opacity:0}}
@keyframes pulse{50%{transform:scale(1.03)}}
@media (min-height:800px){.board{width:min(94vw,410px)}}
@media (prefers-reduced-motion:reduce){*{animation-duration:.01s!important;transition-duration:.01s!important}}

/* ======================= v3 ======================= */
.av{position:relative}
.av .botb{position:absolute;right:-5px;bottom:-4px;font-size:calc(var(--s)*.38);font-style:normal;line-height:1;filter:drop-shadow(0 1px 1px rgba(0,0,0,.4))}
.av.sm{--s:28px;font-size:13px}.av.lg{--s:72px;font-size:32px}
.bottag{font-family:var(--body);font-size:10px;font-weight:900;letter-spacing:.5px;padding:2px 6px;border-radius:6px;background:#efeafc;color:#6d5dfc;vertical-align:middle}
.iconbtn.sm{width:36px;height:36px;font-size:16px}

/* setup */
.presets{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.preset{background:rgba(255,255,255,.1);border:2px solid rgba(255,255,255,.14);border-radius:16px;color:#fff;padding:10px 4px;display:flex;flex-direction:column;align-items:center;gap:4px;min-height:72px}
.preset .e{font-size:15px;letter-spacing:-3px;white-space:nowrap}
.preset small{font-weight:800;font-size:12px;color:#d6cffc}
.preset.on{background:#fff;color:var(--ink);border-color:var(--gold);box-shadow:0 6px 18px rgba(255,194,61,.35)}
.preset.on small{color:var(--ink)}
.sec .cnt{float:right;font-family:var(--body);font-size:12px;color:#cfc6ff;font-weight:800;text-transform:none;letter-spacing:0}
.solonote{background:linear-gradient(90deg,#fff3c4,#ffe08a);color:#6b4100;border-radius:14px;padding:10px 12px;font-weight:800;font-size:13px;margin-bottom:10px}
.pcard{position:relative}
.pcard.isbot{background:linear-gradient(180deg,#f5f2ff,#fff)}
.pcard .head{display:flex;align-items:center;gap:10px}
.pcard .head .name{flex:1}
.ptype{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0 6px}
.seg{display:inline-flex;background:#efeafc;border-radius:12px;padding:3px;gap:2px}
.seg button{border-radius:9px;padding:7px 11px;font-weight:800;font-size:13px;color:#6b6491;min-height:36px}
.seg button.on{background:#fff;color:var(--ink);box-shadow:0 2px 6px rgba(60,40,140,.18)}
.addrow{margin:4px 0 8px}
.durnote{color:#cfc6ff;font-size:13px;font-weight:700;margin:8px 2px}

/* square board */
.boardwrap{display:block;margin:10px auto 4px;max-width:520px;border-radius:14px}
.boardwrap.zoom{overflow:auto;max-height:62vh;max-height:62dvh;-webkit-overflow-scrolling:touch;box-shadow:inset 0 0 0 2px rgba(255,255,255,.2)}
.board.sq{position:relative;display:grid;width:100%;aspect-ratio:1;gap:0;container-type:inline-size;border-radius:12px;overflow:hidden;
  background:#1f1a3a;border:3px solid #1f1a3a;box-shadow:0 14px 40px rgba(0,0,0,.45)}
.boardwrap.zoom .board.sq{width:170%}
.board.sq .cell{position:relative;background:#fffaf0;color:#2a1b5e;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.6cqw;
  outline:1px solid #2a2350;overflow:hidden;padding:2.2cqw .5cqw .6cqw;cursor:pointer;text-align:center}
.board.sq .cell .band{position:absolute;background:var(--tc)}
.board.sq .s-b .band{left:0;right:0;top:0;height:2.6cqw}
.board.sq .s-t .band{left:0;right:0;bottom:0;height:2.6cqw}
.board.sq .s-l .band{top:0;bottom:0;right:0;width:2.6cqw}
.board.sq .s-r .band{top:0;bottom:0;left:0;width:2.6cqw}
.board.sq .s-t{padding:.6cqw .5cqw 2.2cqw}
.board.sq .s-l{padding:.5cqw 2.4cqw .5cqw .5cqw}
.board.sq .s-r{padding:.5cqw .5cqw .5cqw 2.4cqw}
.board.sq .cell .ic{font-size:6.2cqw;line-height:1;filter:drop-shadow(0 .4cqw .3cqw rgba(0,0,0,.18))}
.board.sq .cell .nm{font-family:var(--display);font-weight:700;font-size:2.15cqw;letter-spacing:.1cqw;line-height:1;white-space:nowrap}
.board.sq .cell.corner{background:radial-gradient(circle at 50% 40%,#fff,#fff1d6);padding:1cqw}
.board.sq .cell.corner .band{display:none}
.board.sq .cell.corner{box-shadow:inset 0 0 0 1.2cqw var(--tc)}
.board.sq .cell.corner .ic{font-size:8.6cqw}
.board.sq .cell.corner .nm{font-size:2.8cqw;color:var(--tc);filter:brightness(.7)}
.board.sq .cell .go{font-family:var(--display);font-size:2cqw;font-weight:700;color:#fff;background:#ef4444;border-radius:1cqw;padding:.3cqw 1cqw;margin-top:.4cqw}
.board.sq .cell.here{background:#fff;box-shadow:inset 0 0 0 .9cqw var(--pc),0 0 4cqw rgba(255,255,255,.7);z-index:1;animation:herepulse 1.4s ease-in-out infinite}
@keyframes herepulse{50%{filter:brightness(1.08)}}
.board.sq.rat .t-opportunity{--tc:#12b886}.board.sq.rat .t-payday{--tc:#f59f00}.board.sq.rat .t-market{--tc:#4f46e5}.board.sq.rat .t-doodad{--tc:#ff4d8d}
.board.sq.rat .t-charity{--tc:#a855f7}.board.sq.rat .t-baby{--tc:#0ea5e9}.board.sq.rat .t-downsized{--tc:#475569}
.board.sq .center{position:relative;z-index:0;background:radial-gradient(circle at 50% 35%,#e9f8ee,#c6e8d2 70%);color:#1f1a3a;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2cqw;padding:2cqw;outline:1px solid #2a2350}
.board.sq.fast .center{background:radial-gradient(circle at 50% 35%,#3a2a7a,#1c1240 75%);color:#fff}
.center .clogo{font-family:var(--display);font-weight:700;font-size:4.2cqw;display:flex;align-items:center;gap:1.4cqw;color:#2a1b5e;transform:rotate(-4deg)}
.center .clogo img{width:7cqw;height:7cqw}
.center .clogo b{color:#e8590c}
.center .clogo.ft{color:var(--gold);transform:none;text-shadow:0 0 3cqw rgba(255,194,61,.5)}
.piles{display:flex;gap:2cqw}
.pile{position:relative;width:11.5cqw;height:15cqw;border-radius:1.8cqw;background:var(--k);color:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.6cqw;
  box-shadow:.5cqw .5cqw 0 rgba(0,0,0,.18),1cqw 1cqw 0 rgba(0,0,0,.12),inset 0 0 0 .5cqw rgba(255,255,255,.35);transform:rotate(-3deg)}
.pile:nth-child(2n){transform:rotate(3deg)}
.pile .pe{font-size:5.4cqw}
.pile b{font-family:var(--display);font-size:1.75cqw;line-height:1;text-align:center}
.pile.pick{animation:pilepick 1s ease-in-out infinite;box-shadow:0 0 0 .8cqw #fff,0 0 5cqw 1cqw var(--k)}
@keyframes pilepick{50%{transform:translateY(-1.2cqw) rotate(0)}}
.center .dice .die{width:10cqw;height:10cqw}
.center .space{font-family:var(--display);font-size:3.6cqw;font-weight:600}
.center .space.sm{font-size:2.8cqw;color:#3b5246}
.board.sq.fast .center .space.sm{color:#d6cffc}
.zoombtn{position:absolute;right:15cqw;bottom:15cqw;width:36px;height:36px;border-radius:50%;background:rgba(31,26,58,.85);color:#fff;font-size:16px;z-index:6;box-shadow:0 3px 10px rgba(0,0,0,.3)}
/* pawns */
.pawn{position:absolute;width:6.6cqw;min-width:20px;aspect-ratio:24/32;z-index:4;transform:translate(calc(-50% + var(--ox,0px)),calc(-62% + var(--oy,0px)));
  transition:left .17s ease-out,top .17s ease-out,transform .2s;pointer-events:none}
.pawn svg{width:100%;height:100%;display:block;filter:drop-shadow(0 2px 2px rgba(0,0,0,.35))}
.pawn b{position:absolute;left:0;right:0;top:46%;text-align:center;font-family:var(--display);font-size:max(9px,2.2cqw);color:#fff;text-shadow:0 1px 1px rgba(0,0,0,.5)}
.pawn.me{width:8.4cqw;z-index:5}
.pawn.me:after{content:'';position:absolute;left:50%;bottom:-6%;width:120%;height:30%;border-radius:50%;transform:translateX(-50%);border:2px solid #fff;animation:ring 1.2s ease-out infinite}
@keyframes ring{from{opacity:1;transform:translateX(-50%) scale(.6)}to{opacity:0;transform:translateX(-50%) scale(1.6)}}
.pawn.hop{animation:pawnhop .19s ease-out}
@keyframes pawnhop{50%{margin-top:-3.5cqw}}
.pawn.sell{animation:sellpulse .9s ease-in-out infinite}
@keyframes sellpulse{50%{filter:drop-shadow(0 0 6px #ffd43b) brightness(1.2);margin-top:-1cqw}}
/* fast track board */
.board.sq.fast{background:#120a30;border-color:#ffc23d;box-shadow:0 0 0 2px #7a4a00,0 14px 40px rgba(0,0,0,.5),0 0 40px rgba(255,194,61,.25)}
.board.sq.fast .cell{background:linear-gradient(160deg,#2c1f66,#1d1446);color:#fff;outline-color:#4b3a8f;gap:.3cqw}
.board.sq.fast .cell .ic{font-size:4.8cqw}
.board.sq.fast .cell .nm{font-size:1.75cqw;color:#ffe9a8}
.board.sq.fast .cell.corner{background:radial-gradient(circle,#ffe27a,#ff9f1c);box-shadow:none;color:#4a2600}
.board.sq.fast .cell.corner .nm{color:#4a2600;filter:none;font-size:2.2cqw}
.board.sq.fast .cell.corner .ic{font-size:6.5cqw}
.board.sq.fast .t-dream{background:linear-gradient(160deg,#7c3aed,#4c1d95)}
.board.sq.fast .t-dream.owned{box-shadow:inset 0 0 0 .5cqw #ffc23d}
.board.sq.fast .t-dream.mine{background:linear-gradient(160deg,#f59f00,#c2410c);animation:mydream 1.6s ease-in-out infinite}
@keyframes mydream{50%{filter:brightness(1.25)}}
.board.sq.fast .t-lawsuit,.board.sq.fast .t-audit,.board.sq.fast .t-divorce{background:linear-gradient(160deg,#5b1220,#2b0a14)}
.board.sq.fast .cell.here{box-shadow:inset 0 0 0 .7cqw #fff,0 0 4cqw rgba(255,194,61,.8)}
.owners{position:absolute;top:.4cqw;right:.4cqw;display:flex;gap:.3cqw}
.owners i,.dreamlegend i,.dtaken i{font-style:normal;width:3.4cqw;height:3.4cqw;min-width:12px;min-height:12px;border-radius:50%;background:var(--c);color:#fff;display:grid;place-items:center;font-size:max(8px,2cqw);font-weight:900;box-shadow:0 0 0 1px #fff}
.dreamlegend{display:flex;flex-wrap:wrap;justify-content:center;gap:1.5cqw 3cqw;font-weight:800;font-size:2.6cqw;max-width:90%}
.dreamlegend span{display:flex;align-items:center;gap:1cqw}
/* bubble */
.bubble{display:flex;align-items:center;gap:8px;background:#fff;color:var(--ink);border-radius:16px;padding:8px 12px;box-shadow:0 6px 20px rgba(40,20,100,.25);position:relative;animation:bubin .3s cubic-bezier(.2,1.5,.4,1);text-align:left}
.bubble p{margin:0;font-weight:700;font-size:14px;line-height:1.25}
.bubble:before{content:'';position:absolute;left:22px;top:-7px;border:8px solid transparent;border-top:0;border-bottom-color:#fff}
.gcard .bubble{background:#f4f0ff;box-shadow:none;border:2px solid #e2dafc}
.gcard .bubble:before{border-bottom-color:#e2dafc}
.center .bubble{max-width:92%;padding:1.5cqw 2.4cqw}.center .bubble p{font-size:max(11px,2.8cqw)}
@keyframes bubin{from{transform:scale(.6);opacity:0}}
.bubble.think .dots{display:inline-flex;gap:3px;margin-left:4px;vertical-align:middle}
.bubble.think .dots i{width:5px;height:5px;border-radius:50%;background:#8b5cf6;animation:dot 1s infinite}
.bubble.think .dots i:nth-child(2){animation-delay:.15s}.bubble.think .dots i:nth-child(3){animation-delay:.3s}
@keyframes dot{50%{transform:translateY(-4px);opacity:.4}}
.waitnote{font-size:13px;font-weight:800;color:#6d5dfc;text-align:center}
.botdec{font-size:20px;width:40px;text-align:center}
/* dock for bots */
.dock .hint.bot{border-style:solid;border-color:rgba(255,255,255,.12);background:rgba(255,255,255,.08);font-size:13px;padding:4px 6px}
.dock .main{flex-wrap:nowrap}
.speed{display:flex;gap:4px;background:rgba(255,255,255,.1);border-radius:16px;padding:4px}
.speed button{min-width:44px;border-radius:12px;color:#fff;font-size:16px;display:flex;flex-direction:column;align-items:center;justify-content:center;line-height:1.1;padding:4px 6px}
.speed button small{font-size:9px;font-weight:800;color:#d6cffc}
.speed button.on{background:#fff;color:var(--ink)}.speed button.on small{color:var(--ink)}
.sheet .speed{background:#efeafc;width:max-content;margin:6px 0 12px}.sheet .speed button{color:var(--ink)}.sheet .speed button small{color:var(--mute)}
.sheet .speed button.on{background:#6d5dfc;color:#fff}.sheet .speed button.on small{color:#fff}

/* cards: 3D fly-in from the deck */
.cardsheet .wrap{animation:none;perspective:1400px}
.cardsheet .wrap.enter{animation:dealin .45s cubic-bezier(.2,1.2,.3,1)}
.flip{position:relative;transform-style:preserve-3d}
.flip .gcard{backface-visibility:hidden;-webkit-backface-visibility:hidden}
.cback{position:absolute;inset:0;border-radius:26px;transform:rotateY(180deg);backface-visibility:hidden;-webkit-backface-visibility:hidden;
  background:repeating-linear-gradient(45deg,rgba(255,255,255,.12) 0 12px,transparent 12px 24px),var(--k);box-shadow:0 0 0 4px #fff inset,0 10px 40px rgba(0,0,0,.4);
  display:flex;flex-direction:column;align-items:center;justify-content:center;color:#fff;gap:8px}
.cback span{font-size:64px}.cback b{font-family:var(--display);font-size:26px;text-align:center;line-height:1}
.wrap.flyin .flip{animation:flyin .85s cubic-bezier(.25,.9,.3,1.05) both}
@keyframes flyin{
  0%{transform:translate(var(--fx),var(--fy)) scale(var(--fs)) rotateY(180deg) rotateZ(-8deg)}
  45%{transform:translate(calc(var(--fx)*.35),calc(var(--fy)*.35 - 40px)) scale(.75) rotateY(180deg) rotateZ(4deg)}
  100%{transform:none}}
/* richer card face */
.gcard .band{min-height:96px;overflow:hidden}
.gcard .band .art{position:absolute;right:46px;top:50%;transform:translateY(-50%) rotate(-10deg);font-size:84px;opacity:.28;pointer-events:none;filter:saturate(1.2)}
.gcard .band .bt{position:relative;z-index:1;flex:1;min-width:0;padding-right:44px}
.gcard .band .emb{position:relative;z-index:1;width:58px;height:58px;font-size:34px;animation:embpop .6s .5s cubic-bezier(.2,1.8,.4,1) both}
@keyframes embpop{from{transform:scale(.3) rotate(-30deg)}}
.roib{position:absolute;right:12px;bottom:-1px;z-index:3;transform:translateY(50%);width:62px;height:62px;border-radius:50%;display:flex;flex-direction:column;align-items:center;justify-content:center;
  font-family:var(--display);font-weight:700;font-size:19px;color:#fff;box-shadow:0 0 0 4px #fff,0 6px 14px rgba(0,0,0,.25);line-height:1}
.roib small{font-size:10px;letter-spacing:1px;opacity:.9}
.roib.good{background:linear-gradient(160deg,#3ee6a3,#0ca678)}.roib.ok{background:linear-gradient(160deg,#ffd43b,#f59f00)}.roib.bad{background:linear-gradient(160deg,#ff8787,#e03131)}
.gcard .band{overflow:visible}
.gcard{overflow:hidden}
.ribbon{margin:12px 84px 0 16px;padding:7px 12px;border-radius:12px;font-weight:900;font-size:13px}
.ribbon.good{background:#d3f9e4;color:#087f5b;animation:pulse 1.6s infinite}
.ribbon.ok{background:#fff3c4;color:#7a4a00}
.ribbon.bad{background:#ffe3e3;color:#c92a2a}
.gcard .big3 b{font-size:22px}
.gcard .big3 .hl b{font-size:26px}
.ticker{display:flex;align-items:baseline;gap:10px;background:#1f1a3a;color:#fff;border-radius:14px;padding:10px 14px;margin-bottom:10px;font-family:ui-monospace,Menlo,monospace}
.ticker b{font-size:20px;color:#ffd43b;letter-spacing:2px}.ticker .tp{font-size:26px;font-weight:800;flex:1;text-align:right}.ticker .tr{font-size:20px}
.gcard.ouch{animation:shake .5s .8s both}
@keyframes shake{20%,60%{transform:translateX(-8px) rotate(-1deg)}40%,80%{transform:translateX(8px) rotate(1deg)}}
.gcard{position:relative}
.stamp{position:absolute;right:16px;top:104px;z-index:4;font-family:var(--display);font-size:30px;font-weight:700;color:#e03131;border:4px solid #e03131;border-radius:12px;padding:2px 12px;
  transform:rotate(-14deg);opacity:.9;pointer-events:none;animation:stamp .4s .95s cubic-bezier(.2,1.6,.4,1) both;background:rgba(255,255,255,.7)}
@keyframes stamp{from{transform:rotate(-14deg) scale(3);opacity:0}}
.gcard.cashy .amount b{animation:cashpop .6s .6s cubic-bezier(.2,1.8,.4,1) both;display:inline-block}
@keyframes cashpop{from{transform:scale(.3)}}
.gcard.glow{box-shadow:0 -6px 40px rgba(0,0,0,.45),0 0 0 4px var(--k),0 0 40px 6px rgba(255,194,61,.7)}
.seller.can{border-left:4px solid var(--gold);background:#fffbea}
.seller.sold{opacity:.55;border-left-color:#12b886;background:#ebfbee}
.deck[disabled]{opacity:1;filter:saturate(.85)}
.txt.c{text-align:center}

/* escape cutscene + dream gallery */
.overlay.full{align-items:stretch;background:rgba(10,6,30,.85)}
.cutsheet{width:100%;max-width:520px;margin:0 auto;overflow:auto;padding:24px 18px calc(20px + env(safe-area-inset-bottom));display:flex;flex-direction:column;justify-content:center}
.cut{position:relative;text-align:center;display:flex;flex-direction:column;align-items:center;gap:8px}
.cut .burst{position:fixed;left:50%;top:30%;width:900px;height:900px;margin:-450px 0 0 -450px;border-radius:50%;z-index:-1;opacity:.35;
  background:repeating-conic-gradient(from 0deg,#ffc23d 0 8deg,transparent 8deg 20deg);animation:spin 18s linear infinite;-webkit-mask:radial-gradient(circle,#000 10%,transparent 65%);mask:radial-gradient(circle,#000 10%,transparent 65%)}
@keyframes spin{to{transform:rotate(360deg)}}
.cut .rocket{font-size:86px;animation:launch 1.2s cubic-bezier(.2,1.2,.3,1) both;filter:drop-shadow(0 10px 20px rgba(255,120,0,.6))}
@keyframes launch{from{transform:translateY(200px) scale(.4) rotate(20deg);opacity:0}}
.cut .av.lg{margin-top:-10px;box-shadow:0 0 0 5px var(--gold)}
.cut .kick,.gallery .kick{margin:4px 0 0;color:var(--gold);font-weight:900;letter-spacing:2px;text-transform:uppercase;font-size:13px}
.cut h2,.gallery h2{margin:0;font-size:30px;line-height:1.1;color:#fff}
.cut .sub,.gallery .sub{color:#d6cffc;font-weight:700;font-size:14px;margin:0;max-width:360px}
.vs{width:100%;background:rgba(255,255,255,.08);border-radius:18px;padding:12px;display:flex;flex-direction:column;gap:10px}
.vrow{display:grid;grid-template-columns:110px 1fr 76px;align-items:center;gap:8px;font-weight:800;font-size:13px;color:#fff;text-align:left}
.vrow b{text-align:right;font-size:15px}
.vbar{height:16px;border-radius:9px;background:rgba(255,255,255,.12);overflow:hidden}
.vbar i{display:block;height:100%;width:var(--w);border-radius:9px;animation:grow 1.4s .5s cubic-bezier(.2,.9,.3,1) both}
.vbar.g i{background:linear-gradient(90deg,#3ee6a3,#12b886)}.vbar.r i{background:linear-gradient(90deg,#ff8787,#e03131)}
@keyframes grow{from{width:0}}
.cut .hero{background:linear-gradient(160deg,#ffe27a,#ff9f1c);color:#4a2600;border-radius:20px;padding:12px 26px;display:flex;flex-direction:column;align-items:center;box-shadow:0 10px 30px rgba(255,159,28,.4)}
.cut .hero b{font-family:var(--display);font-size:38px;line-height:1.1}.cut .hero small{font-weight:800;font-size:12px}
.cut .btn,.gallery .btn{width:100%;margin-top:6px}
.gallery{text-align:center;display:flex;flex-direction:column;align-items:center;gap:8px}
.dgrid{display:grid;grid-template-columns:1fr 1fr;gap:10px;width:100%;margin-top:6px}
.dcard{position:relative;background:linear-gradient(170deg,#3a2a7a,#241a52);color:#fff;border-radius:18px;padding:12px 10px;display:flex;flex-direction:column;align-items:center;gap:3px;
  border:2px solid rgba(255,255,255,.12);transition:transform .15s,box-shadow .15s;text-align:center}
.dcard .di{font-size:40px}.dcard b{font-family:var(--display);font-size:15px;line-height:1.1}.dcard .dc{font-weight:900;color:var(--gold);font-size:14px}
.dcard small{color:#cfc6ff;font-size:11px;font-weight:700;line-height:1.25}
.dcard.on{border-color:var(--gold);background:linear-gradient(170deg,#7c3aed,#4c1d95);transform:scale(1.04);box-shadow:0 0 0 3px rgba(255,194,61,.4),0 10px 24px rgba(0,0,0,.4)}
.dcard.on:after{content:'✓';position:absolute;top:6px;right:8px;width:24px;height:24px;border-radius:50%;background:var(--gold);color:#4a2600;font-weight:900;display:grid;place-items:center}
.dtaken{position:absolute;top:6px;left:8px;display:flex;gap:2px}
.dtaken i{width:16px;height:16px;font-size:9px}
.cut .bubble,.gallery .bubble{margin-top:8px}

/* win screen */
.gover{position:relative;overflow:hidden}
.gover .rays{position:absolute;left:50%;top:18%;width:1000px;height:1000px;margin:-500px 0 0 -500px;z-index:-1;opacity:.18;border-radius:50%;
  background:repeating-conic-gradient(#ffc23d 0 6deg,transparent 6deg 18deg);animation:spin 30s linear infinite;-webkit-mask:radial-gradient(circle,#000 5%,transparent 60%);mask:radial-gradient(circle,#000 5%,transparent 60%)}
.gover .podium .av{margin-top:0}
.podium{display:grid;grid-template-columns:1fr 1fr 1fr;align-items:end;gap:8px;width:100%;max-width:400px;margin:8px 0}
.pod{display:flex;flex-direction:column;align-items:center;gap:3px;position:relative}
.pod .av{--s:48px;font-size:22px;box-shadow:0 0 0 3px #fff}.pod .av.lg{--s:66px;font-size:30px;box-shadow:0 0 0 4px var(--gold)}
.pod b{font-family:var(--display);font-size:15px;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pod small{color:#d6cffc;font-weight:800;font-size:12px}
.pod .step{width:100%;border-radius:12px 12px 0 0;display:grid;place-items:center;font-family:var(--display);font-size:28px;color:rgba(0,0,0,.35);margin-top:4px}
.pod.p1 .step{height:96px;background:linear-gradient(180deg,#ffe27a,#ff9f1c)}.pod.p2 .step{height:70px;background:linear-gradient(180deg,#e9ecef,#adb5bd)}.pod.p3 .step{height:52px;background:linear-gradient(180deg,#ffc9a3,#d9480f)}
.pod .crown{font-size:28px;margin-bottom:-6px;animation:bob 2s ease-in-out infinite}
.gover .sbar.big{width:100%;max-width:340px;height:14px;border-radius:9px;background:rgba(255,255,255,.15);overflow:hidden}
.gover .sbar.big i{display:block;height:100%;background:linear-gradient(90deg,#ffe27a,#ff9f1c)}
@media (min-width:700px){.board.sq{max-width:520px;margin:0 auto}}
.k-market{--k:#4f46e5}.k-charity{--k:#a855f7}.k-doodad{--k:#ff4d8d}.k-smalldeal{--k:#12b886}.k-bigdeal{--k:#1c7ed6}
body:has(.overlay.full) #toasts,body:has(.gover) #toasts{display:none}
