:root{
  --ink:#2a2340; --paper:#fbf3e4; --paper2:#f3e6cc; --gold:#ffc933; --pink:#ff8fa3;
  --flame:#f26b3a; --splash:#3b8fe0; --sprout:#5bb46b; --zap:#f5c326;
  --flame-bg:#ffe1cf; --splash-bg:#d9ecff; --sprout-bg:#dff2d3; --zap-bg:#fff1bf;
  --display:'Lilita One', 'Arial Rounded MT Bold', system-ui, sans-serif;
  --body:'Figtree', system-ui, sans-serif;
  color-scheme: light;
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;height:100%;background:var(--ink);color:var(--ink);font-family:var(--body);overscroll-behavior:none}
body{-webkit-user-select:none;user-select:none;touch-action:manipulation}
button{font:inherit;color:inherit;border:0;background:none;cursor:pointer;padding:0}
button:focus-visible{outline:3px solid var(--gold);outline-offset:3px}
svg{display:block;width:100%;height:100%;overflow:visible}
#app{height:100%;height:100dvh;overflow:hidden;position:relative}

/* ---------- shared screens ---------- */
.screen{position:absolute;inset:0;overflow-y:auto;background:var(--paper);padding:max(16px,env(safe-area-inset-top)) 16px max(24px,env(safe-area-inset-bottom));
  background-image:radial-gradient(circle at 20% 10%,#fff8ec 0,transparent 40%),radial-gradient(circle at 90% 80%,#f6e4c4 0,transparent 45%)}
.wrap{max-width:560px;margin:0 auto}
.topbar{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:48px}
.back{width:48px;height:48px;border-radius:50%;background:#fff;box-shadow:0 3px 0 var(--paper2),0 0 0 2px var(--ink) inset;display:grid;place-items:center;font-size:22px;font-family:var(--display)}
h1,h2,h3{font-family:var(--display);font-weight:400;margin:0;letter-spacing:.3px}
.title{font-size:30px}
.sub{font-size:16px;line-height:1.45;color:#5a5270;margin:6px 0 0}
.btn{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;min-height:64px;border-radius:20px;font-family:var(--display);font-size:24px;
  background:var(--gold);box-shadow:0 5px 0 #c9920d,0 0 0 3px var(--ink) inset;transition:transform .08s}
.btn:active{transform:translateY(3px);box-shadow:0 2px 0 #c9920d,0 0 0 3px var(--ink) inset}
.btn.alt{background:#fff;box-shadow:0 5px 0 var(--paper2),0 0 0 3px var(--ink) inset}
.btn.small{min-height:48px;font-size:18px;border-radius:14px}
.btn[disabled]{opacity:.45;pointer-events:none}
.row{display:flex;gap:10px}
.link{font-weight:800;text-decoration:underline;text-underline-offset:3px}

/* ---------- home ---------- */
.home{display:flex;flex-direction:column;align-items:center;text-align:center;gap:14px}
.logo{font-family:var(--display);font-size:clamp(46px,13vw,72px);line-height:.9;color:var(--ink);margin-top:6px;position:relative}
.logo span{display:inline-block}
.logo span:nth-child(3n+1){color:var(--flame)} .logo span:nth-child(3n+2){color:var(--splash)} .logo span:nth-child(3n){color:var(--sprout)}
.logo span{text-shadow:0 3px 0 var(--ink)}
.fan{position:relative;height:190px;width:260px;margin:6px auto 4px}
.fan .card{position:absolute;left:50%;top:10px;--w:118px;margin-left:-59px;transform-origin:50% 120%}
.fan .card:nth-child(1){transform:rotate(-16deg) translateX(-18px)}
.fan .card:nth-child(2){transform:translateY(-8px);z-index:2}
.fan .card:nth-child(3){transform:rotate(16deg) translateX(18px)}
.home .actions{display:grid;gap:12px;width:100%;max-width:420px;margin-top:4px}
.home-links{display:flex;flex-wrap:wrap;justify-content:center;gap:8px 18px;margin-top:6px;font-size:16px}
.pairs{font-size:15px;color:#5a5270;margin:0}
.foot{font-size:13px;color:#7a7290;max-width:420px;line-height:1.5;margin-top:10px}

/* ---------- who / team ---------- */
.seats{display:grid;gap:16px;margin-top:14px}
.seat{background:#fff;border-radius:22px;padding:14px;box-shadow:0 0 0 3px var(--ink) inset,0 5px 0 var(--paper2)}
.seat h2{font-size:22px;display:flex;align-items:center;gap:8px}
.seat h2 .num{width:30px;height:30px;border-radius:50%;background:var(--ink);color:#fff;display:grid;place-items:center;font-size:18px}
.people{display:flex;flex-wrap:wrap;gap:10px;margin-top:10px}
.person{display:flex;flex-direction:column;align-items:center;gap:4px;width:84px;padding:6px 4px;border-radius:16px;font-weight:800;font-size:15px}
.person .face{width:64px;height:64px;border-radius:50%;background:var(--paper);box-shadow:0 0 0 3px var(--ink) inset;padding:4px;overflow:hidden}
.person[aria-pressed="true"]{background:var(--gold)}
.person[disabled]{opacity:.3}
.person.add .face{display:grid;place-items:center;font-family:var(--display);font-size:34px}
.newp{margin-top:12px;display:grid;gap:10px}
.faces{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.faces button{aspect-ratio:1;border-radius:50%;background:var(--paper);box-shadow:0 0 0 3px var(--ink) inset;padding:4px}
.faces button[aria-pressed="true"]{background:var(--gold)}
.name-in{width:100%;font:inherit;font-size:20px;font-weight:800;padding:12px 14px;border-radius:14px;border:3px solid var(--ink);background:var(--paper);color:var(--ink)}
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chip{padding:8px 14px;border-radius:999px;background:var(--paper);box-shadow:0 0 0 2px var(--ink) inset;font-weight:800}
.teams{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:10px}
.team{border-radius:18px;padding:6px 4px 8px;display:flex;flex-direction:column;align-items:center;gap:2px;font-family:var(--display);font-size:16px;box-shadow:0 0 0 3px var(--ink) inset,0 4px 0 rgba(0,0,0,.12)}
.team .pic{width:100%;aspect-ratio:1}
.team.flame{background:var(--flame-bg)} .team.splash{background:var(--splash-bg)} .team.sprout{background:var(--sprout-bg)} .team.zap{background:var(--zap-bg)}
.team[aria-pressed="true"]{box-shadow:0 0 0 5px var(--ink) inset,0 0 0 4px var(--gold);transform:translateY(-3px)}
.team .ic{width:22px;height:22px}
.go{position:sticky;bottom:0;padding-top:14px;background:linear-gradient(transparent,var(--paper) 30%)}

/* ---------- cards ---------- */
.card{--w:100px;width:var(--w);height:calc(var(--w)*1.4);border-radius:calc(var(--w)*.1);position:relative;flex:none;
  background:var(--paper);box-shadow:0 0 0 calc(var(--w)*.03) var(--ink),0 calc(var(--w)*.035) 0 calc(var(--w)*.03) rgba(0,0,0,.25);
  display:flex;flex-direction:column;padding:calc(var(--w)*.055);font-size:calc(var(--w)*.1);transition:transform .18s, box-shadow .18s, opacity .2s}
.card .frame{position:absolute;inset:calc(var(--w)*.04);border-radius:calc(var(--w)*.075);border:calc(var(--w)*.04) solid var(--elc,#bbb);pointer-events:none}
.card.flame{--elc:var(--flame);--elbg:var(--flame-bg)} .card.splash{--elc:var(--splash);--elbg:var(--splash-bg)}
.card.sprout{--elc:var(--sprout);--elbg:var(--sprout-bg)} .card.zap{--elc:var(--zap);--elbg:var(--zap-bg)}
.card.item{--elc:#a78bd9;--elbg:#efe7ff}
.c-top{display:flex;align-items:center;gap:calc(var(--w)*.03);padding:calc(var(--w)*.05) calc(var(--w)*.05) 0;position:relative;z-index:1;height:calc(var(--w)*.2)}
.c-el{width:calc(var(--w)*.17);height:calc(var(--w)*.17);flex:none}
.c-name{font-family:var(--display);font-size:calc(var(--w)*.115);line-height:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.c-grow{margin-left:auto;width:calc(var(--w)*.17);height:calc(var(--w)*.17);flex:none}
.c-art{flex:1;margin:calc(var(--w)*.03) calc(var(--w)*.05);border-radius:calc(var(--w)*.06);background:var(--elbg);position:relative;overflow:hidden;
  background-image:radial-gradient(circle at 50% 110%,rgba(255,255,255,.9) 0,transparent 55%)}
.c-art svg{position:absolute;inset:4%;width:92%;height:92%}
.c-stats{display:flex;justify-content:space-between;align-items:center;padding:0 calc(var(--w)*.06) calc(var(--w)*.05);position:relative;z-index:1;height:calc(var(--w)*.2)}
.pips{display:flex;gap:1px}
.pips i{display:block;width:calc(var(--w)*.13);height:calc(var(--w)*.13)}
.hearts{flex-wrap:wrap;justify-content:flex-end;max-width:62%}
.hearts i{width:calc(var(--w)*.115);height:calc(var(--w)*.115)}
.c-item{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;position:relative;z-index:1}
.c-item .pic{width:78%;aspect-ratio:1}
.c-item .what{display:flex;align-items:center;gap:2px;font-family:var(--display);font-size:calc(var(--w)*.15)}
.c-item .what i{display:block;width:calc(var(--w)*.15);height:calc(var(--w)*.15)}
.card.shiny .c-art::after{content:"";position:absolute;inset:0;background:linear-gradient(115deg,transparent 20%,rgba(255,255,255,.75) 38%,rgba(255,170,230,.5) 45%,rgba(140,220,255,.5) 52%,transparent 66%);background-size:250% 100%;animation:foil 3.2s ease-in-out infinite;mix-blend-mode:screen}
.card.shiny{box-shadow:0 0 0 calc(var(--w)*.03) var(--ink),0 0 0 calc(var(--w)*.06) var(--gold),0 calc(var(--w)*.035) 0 calc(var(--w)*.05) rgba(0,0,0,.25)}
@keyframes foil{0%{background-position:120% 0}60%,100%{background-position:-60% 0}}
.card.back{padding:0;background:none}
.card.back svg{border-radius:inherit}
.card.silhouette .c-art svg{filter:brightness(0) opacity(.18)}
.card.silhouette .c-name{opacity:.35}
.card.silhouette .c-stats{visibility:hidden}

/* ---------- game board ---------- */
.board{position:absolute;inset:0;display:grid;grid-template-rows:1fr auto 1fr;background:#3a3156;
  background-image:radial-gradient(circle at 50% 50%,#4a3f6b 0,transparent 70%)}
.half{position:relative;display:flex;flex-direction:column;gap:6px;padding:8px 10px;min-height:0;transition:opacity .3s}
.half.top{flex-direction:column-reverse}
.board.table .half.top{flex-direction:column;transform:rotate(180deg)}
.half .mat{position:absolute;inset:6px 8px;border-radius:22px;background:rgba(255,255,255,.06);box-shadow:0 0 0 2px rgba(255,255,255,.08) inset;pointer-events:none}
.half.active .mat{background:rgba(255,201,51,.12);box-shadow:0 0 0 3px rgba(255,201,51,.55) inset}
.pbar{display:flex;align-items:center;gap:8px;color:#fff;position:relative;z-index:1;padding:4px 6px 0;min-height:40px}
.pbar .face{width:38px;height:38px;border-radius:50%;background:var(--paper);box-shadow:0 0 0 2.5px var(--ink);padding:2px;flex:none}
.pbar .nm{font-family:var(--display);font-size:20px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:34vw}
.stars{display:flex;gap:2px;color:#fff}
.stars i{display:block;width:28px;height:28px}
.stars i.got{animation:pop .5s}
.deckct{margin-left:auto;display:flex;align-items:center;gap:6px;font-weight:800;font-size:14px;color:#d9d2ee}
.deckct .mini{width:22px;height:30px}
.field{display:flex;justify-content:center;gap:var(--gap,10px);position:relative;z-index:1;flex:1;align-items:center;min-height:0}
.slot{width:var(--fw);height:calc(var(--fw)*1.4);border-radius:calc(var(--fw)*.1);border:3px dashed rgba(255,255,255,.18);flex:none;position:relative}
.slot.can{border-color:var(--gold);background:rgba(255,201,51,.12);animation:breathe 1.4s ease-in-out infinite}
.slot .card{--w:var(--fw);position:absolute;left:-3px;top:-3px}
.hand{display:flex;justify-content:center;gap:6px;position:relative;z-index:1;padding:2px 4px 6px;overflow-x:auto;overflow-y:visible;scrollbar-width:none;min-height:calc(var(--hw)*1.4 + 10px)}
.hand::-webkit-scrollbar{display:none}
.hand .card{--w:var(--hw)}
.half:not(.active) .hand .card{opacity:.72;transform:scale(.96)}
.card.can{box-shadow:0 0 0 calc(var(--w)*.03) var(--ink),0 0 0 calc(var(--w)*.07) var(--gold),0 0 18px 4px rgba(255,201,51,.6);animation:bob 1.6s ease-in-out infinite}
.card.sel{transform:translateY(-10px) scale(1.06)!important;box-shadow:0 0 0 calc(var(--w)*.03) var(--ink),0 0 0 calc(var(--w)*.08) #fff,0 0 22px 8px rgba(255,255,255,.7)}
.card.target{box-shadow:0 0 0 calc(var(--w)*.03) var(--ink),0 0 0 calc(var(--w)*.08) #ff5a6e,0 0 22px 6px rgba(255,90,110,.7);animation:wiggle 1s ease-in-out infinite}
.card.lunge-up{animation:lungeUp .42s ease-in}
.card.lunge-down{animation:lungeDown .42s ease-in}
.card.hit{animation:shake .45s}
.card.poof{animation:poof .6s forwards}
.card.enter{animation:enter .35s ease-out}
.badge{position:absolute;z-index:3;width:calc(var(--w)*.34);height:calc(var(--w)*.34);right:calc(var(--w)*-.1);top:calc(var(--w)*.25);filter:drop-shadow(0 2px 0 rgba(0,0,0,.25))}
.badge.pepb{top:calc(var(--w)*.62)}
.bubble-on{position:absolute;inset:calc(var(--w)*-.08);border-radius:50%;background:radial-gradient(circle at 35% 30%,rgba(255,255,255,.85) 0,rgba(191,230,255,.35) 30%,rgba(191,230,255,.2) 60%,rgba(255,255,255,.6) 71%,transparent 72%);z-index:2;pointer-events:none;animation:breathe 2s ease-in-out infinite}
.float{position:absolute;left:50%;top:30%;transform:translate(-50%,-50%);z-index:5;font-family:var(--display);font-size:calc(var(--w)*.42);color:#fff;-webkit-text-stroke:2px var(--ink);text-shadow:0 3px 0 var(--ink);pointer-events:none;animation:floatUp 1s forwards;white-space:nowrap}
.float.super{color:var(--gold);font-size:calc(var(--w)*.3)}
.mid{position:relative;display:flex;align-items:center;gap:8px;padding:6px 10px;background:var(--ink);color:#fff;min-height:60px;z-index:4;transition:transform .35s}
.board.table.topturn .mid .say{transform:rotate(180deg)}
.mid .say{flex:1;display:flex;align-items:center;gap:10px;min-width:0;transition:transform .35s}
.steps{display:flex;gap:5px}
.step{display:flex;align-items:center;gap:4px;padding:5px 9px;border-radius:999px;background:rgba(255,255,255,.08);font-weight:800;font-size:14px;color:#bdb4d8;white-space:nowrap}
.step b{width:20px;height:20px;border-radius:50%;background:rgba(255,255,255,.15);display:grid;place-items:center;font-size:12px}
.step.on{background:var(--gold);color:var(--ink)} .step.on b{background:var(--ink);color:#fff}
.step.done{opacity:.5;text-decoration:line-through}
.turnname{font-family:var(--display);font-size:20px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mid .done-btn{min-height:46px;padding:0 16px;border-radius:14px;background:#fff;color:var(--ink);font-family:var(--display);font-size:18px;box-shadow:0 4px 0 #9a90b8;white-space:nowrap}
.mid .done-btn.nudge{background:var(--gold);animation:bob 1.2s ease-in-out infinite}
.mid .icon-btn{width:44px;height:44px;border-radius:12px;background:rgba(255,255,255,.1);display:grid;place-items:center;flex:none}
.mid .icon-btn svg{width:26px;height:26px}
.wheel-mini{width:26px;height:26px}
@media (max-width:520px){.step span{display:none}.step{padding:5px 7px}.turnname{font-size:17px}}
@media (max-height:520px){.pbar{min-height:30px}.pbar .face{width:28px;height:28px}.stars i{width:22px;height:22px}.mid{min-height:50px}}

/* ---------- overlays ---------- */
.over{position:absolute;inset:0;z-index:20;background:rgba(26,20,44,.72);display:grid;place-items:center;padding:16px;animation:fade .2s}
.sheet{background:var(--paper);border-radius:26px;box-shadow:0 0 0 3px var(--ink) inset,0 10px 0 rgba(0,0,0,.25);padding:20px;max-width:520px;width:100%;max-height:calc(100dvh - 32px);overflow:auto;text-align:center}
.sheet h2{font-size:30px}
.sheet p{line-height:1.5;margin:8px 0}
.how{display:grid;gap:12px;text-align:left;margin:14px 0}
.how .st{display:grid;grid-template-columns:52px 1fr;gap:12px;align-items:center;background:#fff;border-radius:18px;padding:10px;box-shadow:0 0 0 2px var(--ink) inset}
.how .st .n{width:52px;height:52px;border-radius:50%;background:var(--gold);display:grid;place-items:center;font-family:var(--display);font-size:28px;box-shadow:0 0 0 3px var(--ink) inset}
.how .st p{margin:0;font-size:16px}
.how .st b{font-family:var(--display);font-weight:400;font-size:20px;display:block}
.wheel{width:220px;height:220px;margin:6px auto}
.win-faces{display:flex;justify-content:center;align-items:flex-end;gap:10px;margin:10px 0}
.win-faces .face{width:90px;height:90px;border-radius:50%;background:#fff;box-shadow:0 0 0 3px var(--ink) inset;padding:6px}
.win-faces .face.big{width:120px;height:120px;background:var(--gold);animation:pop .6s}
.packs{display:flex;justify-content:center;gap:18px;flex-wrap:wrap;margin:12px 0}
.pack{display:flex;flex-direction:column;align-items:center;gap:6px;font-weight:800}
.pack .foil{width:110px;height:150px;border-radius:14px;position:relative;overflow:hidden;box-shadow:0 0 0 3px var(--ink) inset,0 6px 0 rgba(0,0,0,.2);
  background:linear-gradient(135deg,#ff8fa3,#ffc933 35%,#5bb46b 60%,#3b8fe0);animation:bob 1.8s ease-in-out infinite}
.pack .foil::before{content:"";position:absolute;left:-10%;right:-10%;top:12%;height:12px;background:repeating-linear-gradient(90deg,var(--ink) 0 6px,transparent 6px 12px);opacity:.25}
.pack .foil .pf{position:absolute;inset:26% 12% 10%;}
.pack .foil .lbl{position:absolute;left:0;right:0;bottom:8px;font-family:var(--display);color:#fff;-webkit-text-stroke:1.5px var(--ink);font-size:20px}
.pack.opened .foil{display:none}
.pulled{display:flex;justify-content:center;gap:8px;flex-wrap:wrap;margin:6px 0}
.pulled .card{--w:92px;animation:flipIn .5s backwards}
.pulled .card:nth-child(2){animation-delay:.25s}.pulled .card:nth-child(3){animation-delay:.5s}
.tag{position:absolute;left:50%;top:-12px;transform:translateX(-50%);z-index:4;background:var(--pink);color:var(--ink);font-family:var(--display);font-size:14px;padding:2px 8px;border-radius:999px;box-shadow:0 0 0 2px var(--ink) inset;white-space:nowrap}
.tag.shiny{background:var(--gold)}
.cal{background:#fff;border-radius:18px;padding:14px;box-shadow:0 0 0 2px var(--ink) inset;margin-top:12px}
.cal .chips{justify-content:center;margin-top:8px}

/* ---------- binder ---------- */
.binder-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:14px 10px;margin-top:14px;justify-items:center}
.binder-grid .card{--w:96px}
.binder-grid .cnt{position:absolute;right:-6px;bottom:-8px;z-index:4;background:var(--ink);color:#fff;font-weight:800;font-size:13px;padding:2px 7px;border-radius:999px}
.progress{height:14px;border-radius:999px;background:#fff;box-shadow:0 0 0 2px var(--ink) inset;overflow:hidden;margin-top:10px}
.progress i{display:block;height:100%;background:linear-gradient(90deg,var(--flame),var(--gold),var(--sprout),var(--splash));border-radius:999px}
.tabs{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}

.toast{position:fixed;left:50%;bottom:calc(50% - 20px);transform:translate(-50%,20px);background:#fff;color:var(--ink);font-weight:800;padding:10px 16px;border-radius:14px;box-shadow:0 0 0 3px var(--ink) inset,0 6px 0 rgba(0,0,0,.25);opacity:0;pointer-events:none;transition:all .25s;z-index:50;max-width:88vw;text-align:center}
.toast.on{opacity:1;transform:translate(-50%,0)}

@keyframes pop{0%{transform:scale(.4)}60%{transform:scale(1.25)}100%{transform:scale(1)}}
@keyframes bob{0%,100%{translate:0 0}50%{translate:0 -4px}}
@keyframes breathe{0%,100%{opacity:1}50%{opacity:.6}}
@keyframes wiggle{0%,100%{rotate:0deg}25%{rotate:-2deg}75%{rotate:2deg}}
@keyframes lungeUp{0%{translate:0 0}45%{translate:0 -38%;scale:1.12}100%{translate:0 0}}
@keyframes lungeDown{0%{translate:0 0}45%{translate:0 38%;scale:1.12}100%{translate:0 0}}
@keyframes shake{0%,100%{translate:0}20%{translate:-8px}40%{translate:8px}60%{translate:-6px}80%{translate:5px}}
@keyframes poof{0%{opacity:1;scale:1}40%{scale:1.15;filter:brightness(2)}100%{opacity:0;scale:.3;rotate:25deg}}
@keyframes enter{from{opacity:0;translate:0 30px;scale:.8}to{opacity:1;translate:0 0;scale:1}}
@keyframes floatUp{0%{opacity:0;translate:0 10px;scale:.6}25%{opacity:1;scale:1.2}100%{opacity:0;translate:0 -50px;scale:1}}
@keyframes fade{from{opacity:0}}
@keyframes flipIn{0%{opacity:0;transform:rotateY(90deg) scale(.7)}100%{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition:none!important}}
.c-grow{border-radius:50%;background:#fff;box-shadow:0 0 0 calc(var(--w)*.018) var(--ink);overflow:hidden;width:calc(var(--w)*.2)!important;height:calc(var(--w)*.2)!important}
.c-grow svg{transform:scale(1.5) translateY(8%)}
.hand{gap:0}
.hand .card + .card{margin-left:var(--ov,6px)}
.board.wide .half{display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto 1fr;grid-template-areas:"bar bar" "field hand";column-gap:18px}
.board.wide .half.top{grid-template-rows:1fr auto;grid-template-areas:"field hand" "bar bar"}
.board.wide.table .half.top{grid-template-rows:auto 1fr;grid-template-areas:"bar bar" "field hand"}
.board.wide .pbar{grid-area:bar}.board.wide .field{grid-area:field;padding-left:8px}.board.wide .hand{grid-area:hand;align-items:center;justify-content:flex-start;min-height:0}
.card.pending{transform:translateY(-12px) scale(1.05);box-shadow:0 0 0 calc(var(--w)*.03) var(--ink),0 0 0 calc(var(--w)*.08) #fff}
.face svg{transform:scale(1.25) translateY(6%)}
.mid .face{width:34px;height:34px;border-radius:50%;background:var(--paper);padding:2px;flex:none;overflow:hidden}
.menu-list{display:grid;gap:10px;margin-top:14px}
.toggle{display:flex;align-items:center;justify-content:space-between;background:#fff;border-radius:14px;padding:10px 14px;box-shadow:0 0 0 2px var(--ink) inset;font-weight:800;font-size:17px}
.toggle .sw{width:52px;height:30px;border-radius:999px;background:#d8d0e6;position:relative;box-shadow:0 0 0 2px var(--ink) inset;transition:background .2s}
.toggle .sw::after{content:"";position:absolute;left:4px;top:4px;width:22px;height:22px;border-radius:50%;background:#fff;box-shadow:0 0 0 2px var(--ink) inset;transition:left .2s}
.toggle[aria-pressed="true"] .sw{background:var(--sprout)}
.toggle[aria-pressed="true"] .sw::after{left:26px}
.person .face,.faces button{overflow:hidden}
.board{grid-template-columns:100%}
.half,.field,.pbar{min-width:0}
.hand .card + .card{margin-left:0}
.hand > * + *{margin-left:var(--ov,6px)}
.pips i{width:calc(var(--w)*.11);height:calc(var(--w)*.11)}
.hearts.many i{width:calc(var(--w)*.088);height:calc(var(--w)*.088)}
.hearts.many{max-width:52%}
.card.g2 .c-name{font-size:calc(var(--w)*.095)}
.win-faces .face{overflow:hidden}
.mid{min-width:0}.mid .say{overflow:hidden}
@media (max-width:520px){.mid .say .face{display:none}.mid .done-btn{padding:0 12px;font-size:17px}.mid{gap:6px;padding:6px 8px}.turnname{max-width:92px}}
/* v2: one clear button, a banner each turn, confetti on stars */
.mid .hint{font-weight:800;font-size:16px;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mid .bonk-btn{min-height:50px;padding:0 22px;border-radius:16px;background:#fff;color:var(--ink);font-family:var(--display);font-size:22px;box-shadow:0 4px 0 #9a90b8;white-space:nowrap;flex:none}
.mid .bonk-btn.nudge{background:var(--gold);box-shadow:0 4px 0 #b88a00;animation:bob 1.1s ease-in-out infinite}
.board .banner{position:absolute;left:50%;top:50%;z-index:20;transform:translate(-50%,-50%);background:var(--gold);color:var(--ink);font-family:var(--display);font-size:clamp(26px,7vw,44px);padding:10px 26px;border-radius:20px;box-shadow:0 6px 0 var(--ink);white-space:nowrap;pointer-events:none;animation:bannerIn 1.3s ease forwards}
.board .banner.flip{transform:translate(-50%,-50%) rotate(180deg)}
@keyframes bannerIn{0%{opacity:0;scale:.6}15%{opacity:1;scale:1.08}25%{scale:1}80%{opacity:1}100%{opacity:0}}
.board{overflow:hidden}
.board.thump{animation:shake .3s}
.board .confetti{position:absolute;top:45%;width:10px;height:14px;border-radius:2px;z-index:19;pointer-events:none;animation:confetti 1.3s ease-out forwards}
@keyframes confetti{0%{transform:translate(0,0) rotate(0)}30%{transform:translate(calc(var(--dx)*.6),-120px) rotate(200deg)}100%{transform:translate(var(--dx),260px) rotate(540deg);opacity:0}}
.card .super-tag{position:absolute;top:-10px;right:-8px;left:auto;transform:none;z-index:6;background:var(--gold);color:var(--ink);font-family:var(--display);font-size:calc(var(--w)*.12);padding:2px 8px;border-radius:999px;box-shadow:0 2px 0 var(--ink);animation:bob 1.4s ease-in-out infinite}
.slot .card.target{animation:breathe 1.2s ease-in-out infinite}
@media (prefers-reduced-motion:reduce){.board .confetti,.board.thump{animation:none}}
