/* ==========================================================================
   TAPLAY ONLINE GAMES - "JUICY ARCADE POP"
   Style profile : tactile-digital-deformable-ui + claymorphism
   Type pairing  : Fredoka (display) / Nunito (body)  -- "Playful Creative"
   Motion        : spring physics, press-deform, bounce-back
   ========================================================================== */

*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}

:root{
  /* ---- deformable-UI tokens (from the style profile) ---- */
  --press-scale:.95;
  --bounce:400ms;
  --spring:cubic-bezier(.34,1.56,.64,1);   /* bounce-back */
  --ease-out:cubic-bezier(.22,.61,.36,1);
  --glossy:linear-gradient(180deg,rgba(255,255,255,.45) 0%,rgba(255,255,255,.08) 45%,transparent 60%);

  /* ---- claymorphism geometry ---- */
  --r-sm:12px; --r-md:18px; --r-lg:24px; --r-xl:30px; --r-pill:999px;
  --stroke:3px;                             /* chunky toy outline */
  --lift:5px;                               /* 3D button extrusion */

  /* ---- depth ---- */
  --depth:0 10px 30px rgba(0,0,0,.2);
  --depth-lg:0 18px 44px -10px rgba(0,0,0,.32);
  --inset-top:inset 0 2px 0 rgba(255,255,255,.55);
  --inset-bot:inset 0 -3px 0 rgba(0,0,0,.14);

  /* ---- stacking order (single source of truth) ---- */
  --z-bg:-2; --z-grid:-1; --z-hud:3; --z-emote:4; --z-chrome:5; --z-float:6;
  --z-count:7; --z-rescue:9; --z-modal:60; --z-ad:90; --z-toast:120; --z-maint:200;

  --safe-b:env(safe-area-inset-bottom,0px);
  --safe-t:env(safe-area-inset-top,0px);
  --safe-l:env(safe-area-inset-left,0px);
  --safe-r:env(safe-area-inset-right,0px);

  --font-display:'Fredoka','Nunito',system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;
  --font-body:'Nunito',system-ui,-apple-system,'Segoe UI',Roboto,Helvetica,Arial,sans-serif;
  --font-pixel:'Press Start 2P','Fredoka',system-ui,monospace;
}

/* ==========================================================================
   THEME 1 - ARCADE POP (default): warm toy-box, punchy candy colours
   ========================================================================== */
:root,
[data-theme="arcade_pop"]{
  --sky-1:#FFD27A; --sky-2:#FF8FB1; --sky-3:#8F6BFF;
  --canvas-1:#FFE9C4; --canvas-2:#FFC79B;   /* canvas clear gradient */
  --surface:#FFFFFF; --surface-2:#FFF4E2; --surface-3:#FFE7C7;
  --ink:#2E1A4F; --ink-dim:#7A6699; --ink-soft:#A895C4;
  --outline:#2E1A4F; --line:rgba(46,26,79,.14);
  --p:#CB3D57;  --p-sh:#8E2438;  --on-p:#FFFFFF;
  --s:#3D70CB;  --s-sh:#28508F;  --on-s:#FFFFFF;
  --a:#2FD070;  --a-sh:#1C9A4F;  --on-a:#08301A;
  --gold:#FFC53D; --gold-sh:#D9941B;
  --danger:#FF4040; --danger-sh:#B71F1F;
  --glow:rgba(255,77,109,.45);
  --hud-bg:rgba(255,255,255,.92);
  --hud-ink:#2E1A4F;
  --scrim:rgba(46,26,79,.55);
  --ring-hue:#FF4D6D;
  --chrome:255,204,140;
  --hero-1:#CB3D57; --hero-2:#3D70CB; --hero-sh:#8E2438; --on-hero:#FFFFFF;
}

/* ==========================================================================
   THEME 2 - HALLOWEEN: spooky carnival, eerie festival contrast
   ========================================================================== */
[data-theme="halloween"]{
  --sky-1:#2A1145; --sky-2:#4A1D5C; --sky-3:#12071F;
  --canvas-1:#2A1145; --canvas-2:#140A24;
  --surface:#31164B; --surface-2:#3D1D5A; --surface-3:#4A2468;
  --ink:#FFF1E0; --ink-dim:#C9A7E6; --ink-soft:#9B7BBF;
  --outline:#120720; --line:rgba(255,180,90,.22);
  --p:#FF7A18;  --p-sh:#B84D00;  --on-p:#1A0A02;
  --s:#8B52E5;  --s-sh:#5B2FA0;  --on-s:#FFFFFF;
  --a:#9BFF3C;  --a-sh:#5FBF10;  --on-a:#12240A;
  --gold:#FFC53D; --gold-sh:#C98A10;
  --danger:#FF3B5C; --danger-sh:#B01230;
  --glow:rgba(255,122,24,.55);
  --hud-bg:rgba(49,22,75,.90);
  --hud-ink:#FFF1E0;
  --scrim:rgba(9,4,18,.72);
  --ring-hue:#FF7A18;  --chrome:34,14,56;
  --hero-1:#B75711; --hero-2:#8B52E5; --hero-sh:#7A3705; --on-hero:#FFFFFF;
}

/* ==========================================================================
   THEME 3 - CHRISTMAS: cosy winter wonderland, festive trim
   ========================================================================== */
[data-theme="christmas"]{
  --sky-1:#12456B; --sky-2:#0C2E4D; --sky-3:#06172B;
  --canvas-1:#123F63; --canvas-2:#081D33;
  --surface:#14375A; --surface-2:#1B4470; --surface-3:#235486;
  --ink:#F2F9FF; --ink-dim:#A9C8E6; --ink-soft:#7FA4C6;
  --outline:#06172B; --line:rgba(232,244,255,.20);
  --p:#D7344A;  --p-sh:#94162A;  --on-p:#FFFFFF;
  --s:#278459;  --s-sh:#155238;  --on-s:#FFFFFF;
  --a:#F5D67B;  --a-sh:#C2A03F;  --on-a:#3A2A06;
  --gold:#F5D67B; --gold-sh:#C2A03F;
  --danger:#FF5A5A; --danger-sh:#B32C2C;
  --glow:rgba(245,214,123,.45);
  --hud-bg:rgba(20,55,90,.92);
  --hud-ink:#F2F9FF;
  --scrim:rgba(4,14,26,.70);
  --ring-hue:#E5384F;  --chrome:10,40,68;
  --hero-1:#D7344A; --hero-2:#278459; --hero-sh:#94162A; --on-hero:#FFFFFF;
}

/* ==========================================================================
   THEME 4 - RETRO ARCADE: 90s coin-op cabinet, CRT scanlines
   ========================================================================== */
[data-theme="retro_arcade"]{
  --sky-1:#241F3A; --sky-2:#14121F; --sky-3:#0A0912;
  --canvas-1:#1B1830; --canvas-2:#0C0B15;
  --surface:#242038; --surface-2:#2E2947; --surface-3:#3A3458;
  --ink:#F0ECFF; --ink-dim:#A79FD0; --ink-soft:#7E76A8;
  --outline:#0A0912; --line:rgba(240,236,255,.16);
  --p:#DB2755;  --p-sh:#8E0B2C;  --on-p:#FFFFFF;
  --s:#3DDC97;  --s-sh:#1E9A63;  --on-s:#042415;
  --a:#FFD23F;  --a-sh:#C79A0C;  --on-a:#2B2000;
  --gold:#FFD23F; --gold-sh:#C79A0C;
  --danger:#FF2E63; --danger-sh:#B00D3C;
  --glow:rgba(255,46,99,.5);
  --hud-bg:rgba(36,32,56,.92);
  --hud-ink:#F0ECFF;
  --scrim:rgba(6,5,12,.76);
  --ring-hue:#FFD23F;  --chrome:20,18,31;
  --hero-1:#DB2755; --hero-2:#24835A; --hero-sh:#8E0B2C; --on-hero:#FFFFFF;
}

/* ============================== BASE ============================== */
html,body{height:100%;overscroll-behavior:none}
@supports(height:100dvh){ html,body{height:100dvh} }
body{
  background:var(--sky-2); color:var(--ink); overflow:hidden; overscroll-behavior:none;
  font-family:var(--font-body); font-weight:700;
  -webkit-user-select:none;user-select:none;touch-action:manipulation;
  -webkit-font-smoothing:antialiased;
}
/* warm ambient lighting behind the cabinet */
body:before{
  content:"";position:fixed;inset:0;z-index:var(--z-bg);
  background:
    radial-gradient(1100px 720px at 12% -10%, var(--sky-1), transparent 62%),
    radial-gradient(900px 640px at 88% 4%, var(--sky-2), transparent 58%),
    radial-gradient(1000px 700px at 50% 108%, var(--sky-3), transparent 62%),
    var(--sky-2);
}
/* playful confetti dots (replaces the old tech grid) */
body:after{
  content:"";position:fixed;inset:0;z-index:var(--z-grid);opacity:.5;pointer-events:none;
  background-image:
    radial-gradient(circle, rgba(255,255,255,.55) 2px, transparent 2.5px),
    radial-gradient(circle, rgba(255,255,255,.30) 2px, transparent 2.5px);
  background-size:64px 64px, 96px 96px;
  background-position:0 0, 32px 48px;
  mask-image:radial-gradient(circle at 50% 30%,#000 6%,transparent 70%);
  -webkit-mask-image:radial-gradient(circle at 50% 30%,#000 6%,transparent 70%);
}
/* retro theme swaps confetti for CRT scanlines */
[data-theme="retro_arcade"] body:after,
body[data-crt]:after{
  background-image:repeating-linear-gradient(
    0deg, rgba(0,0,0,.34) 0 1px, transparent 1px 3px);
  background-size:auto;mask-image:none;-webkit-mask-image:none;opacity:.5;
}

#app{height:100%;display:flex;flex-direction:column;max-width:560px;margin:0 auto;position:relative;
  padding-left:var(--safe-l);padding-right:var(--safe-r);box-sizing:border-box}
.hide{display:none!important}
button{font:inherit;color:inherit;background:none;border:none;cursor:pointer;font-family:var(--font-body)}
a{color:inherit;text-decoration:none}
::-webkit-scrollbar{width:6px;height:6px}
::-webkit-scrollbar-thumb{background:var(--ink-soft);border-radius:9px}
:focus-visible{outline:3px solid var(--a);outline-offset:2px;border-radius:6px}

/* ---- inline SVG icon primitives ---- */
.ic{width:1em;height:1em;display:block;flex:0 0 auto;overflow:visible}
i[data-icon]{display:inline-flex;align-items:center;justify-content:center;font-style:normal;line-height:0}

/* ==========================================================================
   JELLY BUTTON - 3D extruded plastic that compresses on press
   ========================================================================== */
.jelly{
  position:relative;border-radius:var(--r-md);
  background:var(--p);color:var(--on-p);
  border:var(--stroke) solid var(--outline);
  box-shadow:0 var(--lift) 0 var(--p-sh), var(--depth);
  transform:translateY(0);
  transition:transform 140ms var(--spring), box-shadow 140ms var(--ease-out), filter 140ms linear;
  overflow:hidden;cursor:pointer;
}
.jelly:before{                     /* glossy material highlight */
  content:"";position:absolute;inset:0;background:var(--glossy);pointer-events:none;
}
.jelly:hover{filter:brightness(1.06)}
.jelly:active{
  transform:translateY(var(--lift)) scale(.985);
  box-shadow:0 0 0 var(--p-sh), inset 0 3px 8px rgba(0,0,0,.22);
}
.jelly.j-s{background:var(--s);color:var(--on-s);box-shadow:0 var(--lift) 0 var(--s-sh), var(--depth)}
.jelly.j-s:active{box-shadow:0 0 0 var(--s-sh), inset 0 3px 8px rgba(0,0,0,.22)}
.jelly.j-a{background:var(--a);color:var(--on-a);box-shadow:0 var(--lift) 0 var(--a-sh), var(--depth)}
.jelly.j-a:active{box-shadow:0 0 0 var(--a-sh), inset 0 3px 8px rgba(0,0,0,.22)}
.jelly.j-g{background:var(--gold);color:#3A2A06;box-shadow:0 var(--lift) 0 var(--gold-sh), var(--depth)}
.jelly.j-g:active{box-shadow:0 0 0 var(--gold-sh), inset 0 3px 8px rgba(0,0,0,.22)}

/* ============================== BANNER ============================ */
#banner{
  flex:0 0 auto;position:relative;border-bottom:var(--stroke) solid var(--outline);
  background:var(--surface-3);
  display:flex;align-items:center;justify-content:center;padding:6px 8px;
}
#banner a{display:flex;align-items:center;justify-content:center;width:100%;min-width:0}
#banner img{
  display:block;margin:0 auto;
  max-height:50px;width:auto;max-width:100%;height:auto;
  object-fit:contain;border-radius:var(--r-sm);
  box-shadow:0 4px 6px -1px rgba(0,0,0,.35),0 2px 4px -2px rgba(0,0,0,.3);
  transition:transform .3s var(--spring),filter .3s ease,box-shadow .3s ease;
}
#banner a:hover img{transform:translateY(-2px) scale(1.01);filter:brightness(1.06)}
#banner .cap{
  position:absolute;left:9px;top:5px;font-size:8px;letter-spacing:.16em;text-transform:uppercase;
  background:var(--outline);color:#fff;padding:3px 8px;border-radius:var(--r-pill);
  font-weight:900;pointer-events:none
}
@media(min-width:640px){ #banner img{max-height:60px} }
@media(min-width:768px){ #banner img{max-height:90px} #banner{padding:8px 12px} }

/* ====================== FLOATING HUD (21st: pills) ================ */
header{
  flex:0 0 auto;display:flex;align-items:center;gap:8px;
  padding:calc(10px + var(--safe-t)) 12px 10px;
  z-index:var(--z-chrome);min-width:0;position:relative;
}
/* soft fade keeps the HUD "floating" while stopping content bleed-through */
header:before,footer:before{
  content:"";position:absolute;left:0;right:0;pointer-events:none;z-index:-1;
}
header:before{
  top:0;bottom:-18px;
  background:linear-gradient(180deg,rgba(var(--chrome),.97) 0%,rgba(var(--chrome),.88) 58%,rgba(var(--chrome),0) 100%);
}
.brand-txt i{font-style:normal;color:var(--p);text-shadow:0 2px 0 var(--p-sh)}
.brand-txt b{
  color:var(--s);text-shadow:0 2px 0 var(--s-sh);
  /* Two words, so let the line break fall between TAPLAY and ONLINE
     GAMES rather than through the middle of the phrase. */
  white-space:nowrap;
}
.brand-txt small{
  display:block;font-size:7.5px;letter-spacing:.24em;color:var(--ink-dim);
  font-weight:900;margin-top:3px;font-family:var(--font-body);
  white-space:nowrap;   /* never split "A WORLD OF FUN" across two lines */
}
[data-theme="retro_arcade"] .brand-txt{font-family:var(--font-pixel);font-size:10px;letter-spacing:0;line-height:1.5}
[data-theme="retro_arcade"] .brand-txt small{font-size:6px}

.wallet{margin-left:auto;display:flex;align-items:center;gap:clamp(3px,1.1vw,6px);flex:0 0 auto}
/* floating pill: morphs on press */
.chip{
  display:flex;align-items:center;gap:5px;font-weight:900;white-space:nowrap;
  font-size:clamp(9.5px,2.9vw,12px);font-variant-numeric:tabular-nums;
  background:var(--hud-bg);color:var(--hud-ink);
  border:2px solid var(--outline);
  padding:5px clamp(7px,2vw,11px);border-radius:var(--r-pill);
  box-shadow:0 3px 0 var(--outline), 0 6px 14px -6px rgba(0,0,0,.5);
  transition:transform 180ms var(--spring), box-shadow 180ms var(--ease-out);
}
.chip:active{transform:translateY(3px);box-shadow:0 0 0 var(--outline)}
.chip .ic{width:1.2em;height:1.2em}
.chip.c{color:var(--gold-sh)} .chip.t{color:var(--s-sh)} .chip.s{color:var(--p-sh)}
.chip.pop{animation:chipPop 520ms var(--spring)}
@keyframes chipPop{0%{transform:scale(1)}35%{transform:scale(1.22) rotate(-4deg)}100%{transform:scale(1)}}

.ibtn{
  width:clamp(30px,8.6vw,36px);height:clamp(30px,8.6vw,36px);border-radius:var(--r-sm);
  background:var(--hud-bg);color:var(--hud-ink);border:2px solid var(--outline);
  display:grid;place-items:center;font-size:clamp(14px,4vw,17px);flex:0 0 auto;
  box-shadow:0 3px 0 var(--outline), 0 6px 14px -6px rgba(0,0,0,.5);
  transition:transform 180ms var(--spring), box-shadow 180ms var(--ease-out), color 160ms linear;
}
.ibtn:hover{color:var(--p)}
.ibtn:active{transform:translateY(3px);box-shadow:0 0 0 var(--outline)}

/* ============================== SCREENS =========================== */
main{flex:1 1 auto;position:relative;overflow:hidden}
.scr{position:absolute;inset:0;display:flex;flex-direction:column;overflow-y:auto;overflow-x:hidden;
  -webkit-overflow-scrolling:touch;animation:popIn .34s var(--spring)}
@keyframes popIn{from{opacity:0;transform:translateY(14px) scale(.97)}to{opacity:1;transform:none}}

/* ------------------------------ HOME ----------------------------- */
.pad{padding:12px 12px 18px}
.dailytip{
  margin:9px 0 0;display:flex;align-items:center;justify-content:center;gap:7px;
  padding:9px 14px;border-radius:var(--r-lg);
  background:var(--gold);color:#2E1A4F;
  border:2px solid var(--outline);box-shadow:0 3px 0 var(--outline);
  font-size:11.5px;font-weight:900;letter-spacing:.02em;text-align:center
}
.profile{
  display:flex;align-items:center;gap:11px;background:var(--surface);
  border:var(--stroke) solid var(--outline);border-radius:var(--r-lg);padding:10px 12px;margin-bottom:13px;
  box-shadow:0 var(--lift) 0 var(--outline), var(--depth);
}
.avatar{
  width:44px;height:44px;border-radius:var(--r-md);display:grid;place-items:center;font-size:21px;
  background:linear-gradient(160deg,var(--hero-1),var(--hero-2));color:#fff;font-weight:900;
  border:2px solid var(--outline);box-shadow:var(--inset-top);
}
.pname{font-family:var(--font-display);font-weight:700;font-size:15px;line-height:1.15;color:var(--ink)}
.psub{font-size:10.5px;color:var(--ink-dim);margin-top:2px;font-weight:800}
.mini{
  font-size:10px;font-weight:900;padding:7px 12px;border-radius:var(--r-sm);
  background:var(--surface-2);color:var(--ink);border:2px solid var(--outline);margin-left:auto;
  box-shadow:0 3px 0 var(--outline);transition:transform 160ms var(--spring),box-shadow 160ms var(--ease-out);
}
.mini:active{transform:translateY(3px);box-shadow:0 0 0 var(--outline)}

/* HERO - big juicy primary CTA */
.hero{
  position:relative;width:100%;border-radius:var(--r-xl);padding:17px 16px;margin-bottom:15px;
  background:linear-gradient(140deg,var(--hero-1) 0%,var(--hero-2) 100%);
  border:var(--stroke) solid var(--outline);
  box-shadow:0 8px 0 var(--hero-sh), var(--depth-lg);
  overflow:hidden;text-align:left;color:var(--on-hero);
  transition:transform 180ms var(--spring),box-shadow 180ms var(--ease-out);
}
.hero:before{content:"";position:absolute;inset:0;background:var(--glossy);pointer-events:none}
.hero:after{
  content:"";position:absolute;inset:-40% -10% auto auto;width:220px;height:220px;border-radius:50%;
  background:radial-gradient(circle,rgba(255,255,255,.30),transparent 65%);pointer-events:none;
}
.hero:active{transform:translateY(8px);box-shadow:0 0 0 var(--hero-sh), var(--depth)}
.hero h2{
  position:relative;font-family:var(--font-display);font-size:24px;font-weight:700;letter-spacing:-.4px;
  line-height:1.05;display:flex;align-items:center;gap:9px;
  text-shadow:0 3px 0 rgba(0,0,0,.22);
}
.hero h2 .ic{width:1.05em;height:1.05em;filter:drop-shadow(0 2px 0 rgba(0,0,0,.25))}
.hero p{position:relative;font-size:11.5px;margin-top:6px;font-weight:800;opacity:.95}
.hero .lv{
  position:absolute;right:14px;top:14px;font-size:9px;font-weight:900;letter-spacing:.1em;
  background:var(--outline);padding:6px 11px;border-radius:var(--r-pill);color:#fff;
  display:flex;gap:6px;align-items:center;
}
.dot{width:7px;height:7px;border-radius:50%;background:var(--a);box-shadow:0 0 9px var(--a);animation:blip 1.5s infinite}
@keyframes blip{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(.8)}}

.secttl{
  font-family:var(--font-display);font-size:11px;letter-spacing:.14em;text-transform:uppercase;
  color:var(--ink-dim);font-weight:700;margin:4px 2px 10px;display:flex;align-items:center;gap:9px
}
.secttl:after{content:"";flex:1;height:3px;border-radius:3px;background:var(--line)}

/* GAME CARDS - 21st "bounce card": press-in + tilt, art panel lifts */
.grid{display:grid;grid-template-columns:1fr 1fr;gap:11px}
.gcard{
  position:relative;text-align:left;background:var(--surface);
  border:var(--stroke) solid var(--outline);border-radius:var(--r-lg);
  padding:13px 12px 12px;overflow:hidden;cursor:pointer;
  box-shadow:0 var(--lift) 0 var(--outline), var(--depth);
  transition:transform 250ms var(--spring), box-shadow 250ms var(--ease-out);
}
/* Art band sits BEHIND the icon only, so card text always keeps its
   contrast on the surface colour. Press makes it lift + tilt (21st bounce). */
.gcard{padding-top:0}
.gcard .art{
  position:absolute;left:0;right:0;top:0;height:62px;
  border-bottom:var(--stroke) solid var(--outline);
  transform:translateY(0);
  transition:transform 250ms var(--spring), filter 250ms var(--ease-out);
  pointer-events:none;
}
.gcard .art:after{content:"";position:absolute;inset:0;background:var(--glossy)}
.gcard:active{transform:translateY(var(--lift)) scale(.97) rotate(-1deg);box-shadow:0 0 0 var(--outline)}
.gcard:active .art{transform:translateY(-4px) rotate(-1.5deg) scale(1.06);filter:brightness(1.1)}
.gicon{
  position:relative;height:62px;display:flex;align-items:center;justify-content:center;
  font-size:clamp(26px,8vw,32px);line-height:0;color:#fff;
  filter:drop-shadow(0 3px 0 rgba(0,0,0,.32));
}
.gname{position:relative;font-family:var(--font-display);font-weight:700;font-size:clamp(12px,3.4vw,14.5px);margin:10px 12px 0;color:var(--ink)}
.gtag{position:relative;font-size:clamp(8.5px,2.6vw,10px);color:var(--ink-dim);margin:2px 12px 0;font-weight:800}
.emopk{
  display:flex;align-items:center;justify-content:center;gap:2px;
  font-size:17px;line-height:1;height:44px;letter-spacing:-1px;
}
.gplay-n{
  font-size:10px;font-weight:900;letter-spacing:.04em;color:var(--ink);
  margin:1px 12px 0;display:flex;align-items:center;gap:5px;
  /* Reserve exactly the height the populated line box takes (a 10px font at
     this line-height measures ~13.9px). At 12px the badge was SHORTER when
     hidden than when filled, so a grid row holding a live count sat ~2px
     taller than the rows above it. */
  min-height:14px;line-height:14px;
}
.gplay-n:before{
  content:"";flex:0 0 auto;width:6px;height:6px;border-radius:50%;
  background:var(--a);box-shadow:0 0 7px var(--a);animation:blip 1.5s infinite;
}
.gbtns{position:relative;display:flex;gap:7px;margin:11px 12px 12px}
.gplay{
  flex:1;font-size:clamp(9.5px,2.9vw,11.5px);font-weight:900;padding:9px 4px;
  display:flex;align-items:center;justify-content:center;gap:5px;min-width:0;
  border-radius:var(--r-sm);letter-spacing:.02em;white-space:nowrap;
}
.gplay .ic{width:1.1em;height:1.1em}
/* the label must never be clipped by the jelly's gloss overflow */
@media(max-width:400px){
  .gplay{gap:3px;padding:9px 2px;letter-spacing:0}
  .gplay .ic{width:.95em;height:.95em}
  .gchal{width:34px;font-size:14px}
  .gbtns{gap:5px;margin:10px 9px 10px}
  .gname{margin:9px 9px 0}
  .gtag{margin:2px 9px 0}
  .gplay-n{margin:1px 9px 0}
}
@media(max-width:340px){
  .gplay .ic{display:none}        /* text alone stays legible */
}
.gchal{
  width:38px;flex:0 0 auto;border-radius:var(--r-sm);font-size:16px;display:grid;place-items:center;
  background:var(--surface-2);color:var(--ink);border:2px solid var(--outline);
  box-shadow:0 3px 0 var(--outline);
  transition:transform 160ms var(--spring),box-shadow 160ms var(--ease-out),color 160ms linear;
}
.gchal:hover{color:var(--p)}
.gchal:active{transform:translateY(3px);box-shadow:0 0 0 var(--outline)}

.howto{
  background:var(--surface);border:var(--stroke) solid var(--outline);border-radius:var(--r-lg);
  padding:14px;font-size:11.5px;line-height:1.75;color:var(--ink-dim);font-weight:700;
  box-shadow:0 var(--lift) 0 var(--outline), var(--depth);
}
.howto b{color:var(--ink)}

/* ------------------------------ FIND ----------------------------- */
#scr-find{align-items:center;justify-content:center;text-align:center;padding:22px;gap:4px}
.radar{position:relative;width:170px;height:170px;margin-bottom:10px}
.radar i{position:absolute;inset:0;border-radius:50%;border:4px solid var(--p);opacity:0;animation:ping 2.1s infinite}
.radar i:nth-child(2){animation-delay:.7s}.radar i:nth-child(3){animation-delay:1.4s}
@keyframes ping{0%{transform:scale(.28);opacity:.9}100%{transform:scale(1);opacity:0}}
.radar .core{
  position:absolute;inset:0;margin:auto;width:84px;height:84px;border-radius:50%;display:grid;place-items:center;
  font-size:36px;color:#fff;background:linear-gradient(150deg,var(--hero-1),var(--hero-2));
  border:var(--stroke) solid var(--outline);box-shadow:0 8px 0 var(--p-sh),var(--depth-lg);
  animation:coreBob 1.8s ease-in-out infinite;
}
@keyframes coreBob{0%,100%{transform:translateY(0)}50%{transform:translateY(-7px)}}
#findTtl{font-family:var(--font-display);font-size:21px;font-weight:700;color:var(--ink)}
#findSub{font-size:12px;color:var(--ink-dim);margin-top:7px;min-height:34px;padding:0 10px;line-height:1.5;font-weight:700}
.vsrow{display:flex;align-items:center;gap:13px;margin-top:15px;animation:popIn .4s var(--spring)}
.vsp{display:flex;flex-direction:column;align-items:center;gap:7px;min-width:88px}
.vsav{
  width:58px;height:58px;border-radius:var(--r-md);display:grid;place-items:center;font-size:27px;
  background:var(--surface);border:var(--stroke) solid var(--outline);box-shadow:0 4px 0 var(--outline)
}
.vsn{font-size:11.5px;font-weight:900;max-width:92px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink)}
.vsx{font-family:var(--font-display);font-size:26px;font-weight:700;color:var(--p);text-shadow:0 3px 0 var(--p-sh)}

/* ------------------------------ PLAY ----------------------------- */
#scr-play{overflow:hidden}
/* min-height:0 is load-bearing, not tidiness.
   A flex item defaults to min-height:auto, which refuses to shrink below its
   content. The content here is the canvas, and the canvas is sized from this
   element's own height by fitCanvas() - so the two form a ratchet: once the
   canvas is set to N, the stage can never drop below N again. In landscape
   that pinned the arena 14px taller than the space it had, and main's
   overflow:hidden quietly ate the bottom of every game. */
#stage{flex:1 1 auto;min-height:0;min-width:0;position:relative;touch-action:none}
#cv{display:block;width:100%;height:100%}
.hud{position:absolute;left:0;right:0;top:0;padding:10px 11px;pointer-events:none;z-index:var(--z-hud)}
.hudrow{display:flex;align-items:center;gap:9px}
.fireband{
  margin:7px auto 0;width:max-content;max-width:96%;
  display:flex;align-items:center;gap:7px;
  padding:5px 13px;border-radius:var(--r-pill);
  background:var(--hud-bg);border:2px solid var(--outline);
  font-size:11px;font-weight:900;letter-spacing:.06em;color:var(--hud-ink);
  box-shadow:0 3px 0 var(--outline);
  animation:firePop .45s var(--spring) both
}
.fireband .fx{font-size:13px;line-height:1;animation:fireFlick 1.1s ease-in-out infinite}
.fireband .mx{padding:1px 7px;border-radius:var(--r-pill);color:#2E1A4F;font-weight:900}
@keyframes fireFlick{0%,100%{transform:scale(1) rotate(-3deg)}50%{transform:scale(1.16) rotate(4deg)}}
@keyframes firePop{0%{transform:translateY(-8px) scale(.8);opacity:0}100%{transform:none;opacity:1}}
/* A career title next to a player handle. */
.tierbadge{
  display:inline-flex;align-items:center;gap:4px;vertical-align:middle;
  padding:2px 8px;margin-left:6px;border-radius:var(--r-pill);
  background:var(--surface-3);border:1.5px solid var(--line);
  font-size:9px;font-weight:900;letter-spacing:.08em;color:var(--ink-dim)
}
.pbar{
  flex:1;height:26px;border-radius:var(--r-pill);background:var(--hud-bg);
  border:2px solid var(--outline);position:relative;overflow:hidden;
  box-shadow:0 3px 0 var(--outline);
}
.pbar i{position:absolute;left:0;top:0;bottom:0;border-radius:var(--r-pill);transition:width .16s var(--ease-out);display:block}
.pbar span{
  position:absolute;inset:0;display:flex;align-items:center;justify-content:space-between;padding:0 10px;
  font-size:10px;font-weight:900;color:var(--hud-ink);letter-spacing:.02em
}
.quit{
  /* 44px, not the 32px this used to be. This is the control a player reaches
     for when they want OUT of a duel, usually in a hurry, and it was the
     smallest touch target on the whole play screen. The glyph is unchanged;
     only the box around it grew. */
  pointer-events:auto;width:44px;height:44px;border-radius:var(--r-sm);background:var(--hud-bg);color:var(--hud-ink);
  border:2px solid var(--outline);display:grid;place-items:center;font-size:14px;box-shadow:0 3px 0 var(--outline);
  transition:transform 160ms var(--spring),box-shadow 160ms var(--ease-out)
}
/* No landscape exception: .hud is position:absolute, so this button overlays
   the arena rather than taking layout space from it. Shrinking it to save
   room would have cost ergonomics for nothing. */
.quit:active{transform:translateY(3px);box-shadow:0 0 0 var(--outline)}
.emotes{position:absolute;left:0;right:0;bottom:calc(8px + var(--safe-b));display:flex;justify-content:center;gap:8px;z-index:var(--z-emote)}
.emotes button{
  width:46px;height:46px;border-radius:var(--r-md);font-size:22px;background:var(--hud-bg);
  border:2px solid var(--outline);pointer-events:auto;box-shadow:0 4px 0 var(--outline);
  transition:transform 160ms var(--spring),box-shadow 160ms var(--ease-out)
}
.emotes button:active{transform:translateY(4px) scale(.92);box-shadow:0 0 0 var(--outline)}
.floatE{position:absolute;font-size:44px;pointer-events:none;z-index:var(--z-float);animation:floatE 1.5s var(--ease-out) forwards}
@keyframes floatE{
  0%{opacity:0;transform:translateY(16px) scale(.3) rotate(-18deg)}
  18%{opacity:1;transform:translateY(0) scale(1.35) rotate(6deg)}
  60%{opacity:1;transform:translateY(-18px) scale(1) rotate(-3deg)}
  100%{opacity:0;transform:translateY(-76px) scale(.7) rotate(0)}
}
#cdown{position:absolute;inset:0;display:grid;place-items:center;z-index:var(--z-count);pointer-events:none}
#cdown b{
  font-family:var(--font-display);font-size:94px;font-weight:700;color:#fff;
  text-shadow:0 6px 0 var(--p-sh),0 0 40px var(--glow);animation:cd .85s var(--spring)
}
@keyframes cd{0%{transform:scale(2.6) rotate(-12deg);opacity:0}22%{transform:scale(1) rotate(0);opacity:1}80%{opacity:1}100%{transform:scale(.7);opacity:0}}
.tapHint{
  position:absolute;left:0;right:0;bottom:70px;text-align:center;font-size:11.5px;color:var(--ink);
  font-weight:900;letter-spacing:.08em;z-index:var(--z-hud);pointer-events:none;animation:blip 1.7s infinite;
  text-shadow:0 2px 0 rgba(0,0,0,.25)
}

/* --------------------------- RESCUE ------------------------------ */
#rescue{
  position:absolute;inset:0;z-index:var(--z-rescue);display:flex;flex-direction:column;align-items:center;
  justify-content:center;gap:13px;background:var(--scrim);backdrop-filter:blur(7px);
  animation:popIn .22s var(--spring);padding:20px;text-align:center
}
#rescue h3{font-family:var(--font-display);font-size:28px;font-weight:700;color:var(--p);text-shadow:0 4px 0 var(--p-sh)}
#rescue p{font-size:12px;color:var(--ink-dim);max-width:280px;line-height:1.55;font-weight:700}
.rring{position:relative;width:110px;height:110px;display:grid;place-items:center}
.rring svg{position:absolute;inset:0;transform:rotate(-90deg)}
.rring b{font-family:var(--font-display);font-size:42px;font-weight:700;color:var(--ink)}
.bigbtn{
  width:100%;max-width:300px;padding:15px;border-radius:var(--r-md);font-weight:900;font-size:14px;
  letter-spacing:.02em;display:flex;align-items:center;justify-content:center;gap:8px;
}
.bigbtn .ic{width:1.25em;height:1.25em}
.ghostbtn{
  padding:12px 20px;border-radius:var(--r-sm);background:transparent;border:2px dashed var(--line);
  font-weight:900;font-size:12px;color:var(--ink-dim);transition:color 160ms,border-color 160ms
}
.ghostbtn:hover{color:var(--ink);border-color:var(--ink-dim)}

/* ------------------------------ END ------------------------------ */
#scr-end{align-items:center;justify-content:center;text-align:center;padding:20px;gap:11px;position:relative}
.burst{position:absolute;inset:0;pointer-events:none;overflow:hidden}
.burst i{
  position:absolute;top:38%;left:50%;width:11px;height:16px;border-radius:3px;opacity:0;
  animation:confetti 1.5s var(--ease-out) forwards
}
@keyframes confetti{
  0%{opacity:1;transform:translate(-50%,0) rotate(0) scale(.5)}
  100%{opacity:0;transform:translate(calc(-50% + var(--dx)),var(--dy)) rotate(var(--rot)) scale(1)}
}
#endTtl{
  font-family:var(--font-display);font-size:50px;font-weight:700;letter-spacing:-1.4px;line-height:1;
  position:relative;animation:trophyPop .6s var(--spring)
}
@keyframes trophyPop{0%{transform:scale(.4) rotate(-10deg);opacity:0}60%{transform:scale(1.12) rotate(3deg);opacity:1}100%{transform:scale(1) rotate(0)}}
#endTtl.w{color:var(--a);text-shadow:0 6px 0 var(--a-sh),0 0 34px var(--glow)}
#endTtl.l{color:var(--p);text-shadow:0 6px 0 var(--p-sh)}
#endSub{font-size:12px;color:var(--ink-dim);font-weight:800}
.bonusline,.promoline{
  margin:8px auto 0;width:max-content;max-width:94%;
  padding:7px 15px;border-radius:var(--r-pill);
  font-size:11.5px;font-weight:900;letter-spacing:.03em;
  border:2px solid var(--outline);box-shadow:0 3px 0 var(--outline)
}
.bonusline{background:var(--gold);color:#2E1A4F}
.promoline{background:var(--a);color:var(--on-a)}
.rewards{display:flex;gap:10px;margin:8px 0 2px}
.rw{
  background:var(--surface);border:var(--stroke) solid var(--outline);border-radius:var(--r-md);
  padding:12px 17px;min-width:94px;box-shadow:0 4px 0 var(--outline);
  animation:popIn .45s var(--spring) backwards
}
.rw:nth-child(2){animation-delay:.08s}.rw:nth-child(3){animation-delay:.16s}
.rw i{display:block;font-style:normal;font-size:9px;letter-spacing:.16em;color:var(--ink-dim);font-weight:900}
.rw b{display:block;font-family:var(--font-display);font-size:23px;font-weight:700;margin-top:3px;color:var(--ink)}
.endbtns{display:flex;flex-direction:column;gap:9px;width:100%;max-width:300px;margin-top:8px}

/* ----------------------------- MODALS ---------------------------- */
.modal{
  position:fixed;inset:0;z-index:var(--z-modal);display:flex;align-items:flex-end;justify-content:center;
  background:var(--scrim);backdrop-filter:blur(7px);animation:fadeIn .2s ease
}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
.sheet{
  width:100%;max-width:560px;max-height:86vh;overflow-y:auto;background:var(--surface-2);
  border:var(--stroke) solid var(--outline);border-radius:var(--r-xl) var(--r-xl) 0 0;
  padding:16px 14px calc(22px + var(--safe-b));animation:sheetUp .4s var(--spring)
}
@keyframes sheetUp{from{transform:translateY(100%)}to{transform:none}}
.shead{display:flex;align-items:center;margin-bottom:14px;gap:8px}
.shead h3{font-family:var(--font-display);font-size:17px;font-weight:700;display:flex;align-items:center;gap:8px;color:var(--ink)}
.shead h3 .ic{width:1.15em;height:1.15em;color:var(--gold-sh)}
.shead button{
  margin-left:auto;width:34px;height:34px;border-radius:var(--r-sm);background:var(--surface);
  border:2px solid var(--outline);font-size:15px;display:grid;place-items:center;color:var(--ink);
  box-shadow:0 3px 0 var(--outline);transition:transform 160ms var(--spring),box-shadow 160ms var(--ease-out)
}
.shead button:active{transform:translateY(3px);box-shadow:0 0 0 var(--outline)}
/* ---- prestige profile frames ------------------------------------------
   Rings around a player badge. Animated with transform/opacity/box-shadow
   only, so the compositor carries them and no script runs per frame. */
.fr{position:relative}
.fr::after{
  content:'';position:absolute;inset:-5px;border-radius:50%;
  pointer-events:none;border:2.5px solid transparent}
.fr-bronze::after{border-color:#c98a4b;box-shadow:0 0 9px #c98a4b88,inset 0 0 6px #c98a4b55}
.fr-silver::after{
  border-color:#d8e4ef;box-shadow:0 0 11px #d8e4efaa,inset 0 0 7px #ffffff55;
  animation:frShine 2.6s ease-in-out infinite}
.fr-gold::after{
  border-color:var(--gold,#ffc542);
  box-shadow:0 0 14px #ffc542aa,inset 0 0 8px #ffe9a866;
  animation:frShine 1.9s ease-in-out infinite}
.fr-plasma::after{
  border-color:transparent;
  background:conic-gradient(from 0deg,#ff2d94,#00e5ff,#9dff00,#ff2d94);
  -webkit-mask:radial-gradient(farthest-side,transparent calc(100% - 3px),#000 calc(100% - 3px));
  mask:radial-gradient(farthest-side,transparent calc(100% - 3px),#000 calc(100% - 3px));
  animation:frSpin 2.4s linear infinite}
.fr-cosmic::after{
  border-color:#b26bff;
  box-shadow:0 0 18px #b26bffcc,0 0 34px #4be3ff66,inset 0 0 10px #ffffff44;
  animation:frSpin 5s linear infinite,frShine 2.2s ease-in-out infinite}
@keyframes frShine{0%,100%{opacity:.62}50%{opacity:1}}
@keyframes frSpin{to{transform:rotate(360deg)}}
/* A frame is decoration. Anyone who has asked for less motion keeps the ring
   and loses the movement. */
@media (prefers-reduced-motion:reduce){
  .fr-silver::after,.fr-gold::after,.fr-plasma::after,.fr-cosmic::after{animation:none}
}
/* the leaderboard shows a small dot-frame beside the name */
.lbfr{
  display:inline-block;width:13px;height:13px;border-radius:50%;flex:0 0 auto;
  border:2px solid transparent;vertical-align:middle}
.lbfr.fr-bronze{border-color:#c98a4b;box-shadow:0 0 5px #c98a4b99}
.lbfr.fr-silver{border-color:#d8e4ef;box-shadow:0 0 6px #d8e4efaa}
.lbfr.fr-gold{border-color:var(--gold,#ffc542);box-shadow:0 0 7px #ffc542bb}
.lbfr.fr-plasma{border-color:#ff2d94;box-shadow:0 0 8px #00e5ffbb}
.lbfr.fr-cosmic{border-color:#b26bff;box-shadow:0 0 9px #b26bffdd,0 0 14px #4be3ff77}
/* the store tile preview */
.frprev{
  width:40px;height:40px;border-radius:50%;margin:0 auto 8px;
  background:radial-gradient(circle at 32% 30%,#3a3550,#16121f);
  border:2px solid var(--outline)}
/* ---- install banner --------------------------------------------------
   Fixed to the bottom, above the safe area, and out of the way of the
   emote bar (which only exists mid-duel, where this never shows). */
#pwaBar{
  position:fixed;left:50%;transform:translateX(-50%) translateY(140%);
  bottom:calc(10px + var(--safe-b));width:min(440px,calc(100vw - 20px));
  z-index:var(--z-toast);
  background:var(--surface);border:var(--stroke) solid var(--outline);
  border-radius:var(--r-lg);box-shadow:0 6px 0 var(--outline),0 14px 30px rgba(0,0,0,.28);
  padding:12px 12px 12px 14px;display:flex;align-items:center;gap:12px;
  transition:transform .42s var(--spring),opacity .3s;opacity:0}
#pwaBar.up{transform:translateX(-50%) translateY(0);opacity:1}
#pwaBar .pwic{
  width:44px;height:44px;border-radius:12px;flex:0 0 auto;
  border:2px solid var(--outline);background:#FFF4E2 center/contain no-repeat}
#pwaBar .pwtx{flex:1 1 auto;min-width:0}
#pwaBar .pwt{font-family:var(--font-display);font-size:13.5px;font-weight:700;
  color:var(--ink);line-height:1.2}
#pwaBar .pws{font-size:10.5px;color:var(--ink-dim);font-weight:700;margin-top:3px;
  line-height:1.45}
#pwaBar .pwb{display:flex;gap:7px;flex:0 0 auto;align-items:center}
#pwaGet{
  background:var(--a);color:var(--on-a);border:2px solid var(--outline);
  border-radius:var(--r-md);box-shadow:0 3px 0 var(--a-sh);
  font-weight:900;font-size:11.5px;letter-spacing:.02em;
  min-height:44px;padding:0 14px;white-space:nowrap}
#pwaGet:active{transform:translateY(3px);box-shadow:0 0 0 var(--a-sh)}
#pwaNo{
  color:var(--ink-dim);font-weight:900;font-size:11.5px;
  min-width:44px;min-height:44px;padding:0 6px}
/* the iOS variant explains the Share sheet instead of offering a button */
#pwaBar.ios .pwb #pwaGet{display:none}
#pwaShare{
  display:inline-flex;align-items:center;justify-content:center;
  width:17px;height:17px;vertical-align:-4px;margin:0 2px}
@media (max-width:360px){
  #pwaBar{padding:10px;gap:9px}
  #pwaBar .pwic{width:38px;height:38px}
  #pwaBar .pwt{font-size:12.5px}
  #pwaBar .pws{font-size:9.5px}
}
@media (prefers-reduced-motion:reduce){
  #pwaBar{transition:opacity .2s}
}
/* ---- finger-sized controls -------------------------------------------
   Measured across 280/320/1280px, several controls were smaller than the
   44x44 a fingertip needs: header icons at 30-36px, the card chevron at
   38px, and on a 280px foldable the PLAY button at 31x37.

   These grow the CONTROL, not an invisible overlay. The first attempt used a
   centred ::after to expand the hit area without touching layout, which is
   the usual trick - but in a tight flex row the expanded boxes overlap, and
   the later sibling's box sits on top of its neighbour's. Measured result:
   the header buttons went from 30px wide to 20px of reachable area. Real
   min-width/min-height cannot overlap, because flex spaces them.

   The icon glyphs are unchanged; the buttons simply carry more padding. */
.ibtn{min-width:44px;min-height:44px}
#btnEditTag{min-height:44px}
.gplay{min-height:44px}
.gchal{min-width:44px;min-height:44px}
/* Below 340px the card row cannot seat two 44px controls, and the design
   already pins the chevron to 34px there. Forcing it wider only steals from
   PLAY, which flexes - measured at 280px, PLAY fell from 31px to 28px. So
   only the HEIGHT is claimed at these widths: it costs no horizontal space
   and it was the more deficient axis anyway (36px -> 43px). */
@media (max-width:340px){
  .gchal{min-width:0}
  .ibtn{min-width:40px;min-height:40px}
}
/* ---- offline pill ----------------------------------------------------
   Sits under the header with the toasts, never over the emote bar. */
#offPill{
  position:fixed;left:50%;transform:translateX(-50%);
  top:calc(10px + var(--safe-t));z-index:var(--z-toast);
  background:var(--ink);color:var(--surface);
  border:2px solid var(--outline);border-radius:999px;
  padding:5px 12px;font-size:9.5px;font-weight:900;letter-spacing:.06em;
  box-shadow:0 3px 0 var(--outline);pointer-events:none;white-space:nowrap}
/* ---- ?pwacheck=1 report ---------------------------------------------- */
#pwaCheck{
  position:fixed;inset:0;z-index:calc(var(--z-maint) + 20);overflow:auto;
  background:var(--surface);color:var(--ink);
  padding:calc(18px + var(--safe-t)) 16px calc(18px + var(--safe-b));
  font-family:var(--font-body);font-size:12px;line-height:1.5}
#pwaCheck h2{font-family:var(--font-display);font-size:18px;margin:0 0 8px}
#pwaCheck .pwsum{font-weight:900;margin:0 0 14px;padding:8px 10px;
  border:2px solid var(--outline);border-radius:var(--r-md)}
#pwaCheck .pwsum.yes{background:#1f7a4d;color:#fff}
#pwaCheck .pwsum.no{background:#a3182f;color:#fff}
#pwaCheck ul{list-style:none;margin:0;padding:0}
#pwaCheck li{padding:7px 0;border-bottom:1px solid rgba(46,26,79,.14)}
#pwaCheck li b{display:inline-block;min-width:42px;font-weight:900}
#pwaCheck li.y b{color:#1f7a4d}
#pwaCheck li.n b{color:#a3182f}
#pwaCheck li span{display:block;margin-left:42px;color:var(--ink-dim);
  font-size:10.5px;word-break:break-word}
#pwaCheck .pwfoot{margin-top:14px;color:var(--ink-dim);font-size:10.5px}
.skins{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.skin{
  background:var(--surface);border:2px solid var(--outline);border-radius:var(--r-md);padding:12px 6px;text-align:center;
  box-shadow:0 4px 0 var(--outline);cursor:pointer;
  transition:transform 200ms var(--spring),box-shadow 200ms var(--ease-out)
}
.skin:active{transform:translateY(4px) scale(.96);box-shadow:0 0 0 var(--outline)}
.skin.on{border-color:var(--a);box-shadow:0 4px 0 var(--a-sh)}
.skin .orb{width:40px;height:40px;border-radius:50%;margin:0 auto 8px;border:2px solid var(--outline)}
.skin .nm{font-size:9.5px;font-weight:900;color:var(--ink)}
.skin .pr{font-size:9.5px;font-weight:900;color:var(--gold-sh);margin-top:3px}
.skin .tg{font-size:8px;font-weight:800;color:var(--ink-dim);margin-top:2px;
  letter-spacing:.03em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.shelfnote{font-size:10px;color:var(--ink-dim);margin:2px 0 9px;line-height:1.5;font-weight:700}
.fxprev{margin:0 0 10px;border-radius:12px;overflow:hidden;
  border:2px solid var(--outline);background:#120f1c}
.fxprev canvas{display:block;width:100%}
.skin .pr.own{color:var(--a-sh)}
.field{
  width:100%;background:var(--surface);border:2px solid var(--outline);border-radius:var(--r-sm);
  padding:12px;color:var(--ink);font-size:15px;font-weight:800;margin-bottom:11px;font-family:var(--font-body)
}
.field:focus{outline:none;border-color:var(--a);box-shadow:0 0 0 3px var(--a-sh)}
.flagrow{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:13px}
.flagrow button{
  width:40px;height:40px;border-radius:var(--r-sm);font-size:20px;background:var(--surface);
  border:2px solid var(--outline);box-shadow:0 3px 0 var(--outline);
  transition:transform 160ms var(--spring),box-shadow 160ms var(--ease-out)
}
.flagrow button:active{transform:translateY(3px);box-shadow:0 0 0 var(--outline)}
.flagrow button.on{border-color:var(--a);box-shadow:0 3px 0 var(--a-sh)}

/* ============================ BRAND LOGO ============================= */
.skiplink{
  position:absolute;left:-9999px;top:0;z-index:calc(var(--z-maint) + 10);
  background:var(--p);color:var(--on-p);padding:12px 18px;border-radius:0 0 var(--r-md) 0;
  font-weight:900;font-size:13px
}
.skiplink:focus{left:0}

.brand{display:flex;align-items:center;gap:9px;min-width:0;flex:0 1 auto;text-decoration:none}
/* the mark scales with the viewport and stays crisp - it is vector, not a bitmap */
.brand-mark{
  width:clamp(30px,9vw,40px);height:clamp(30px,9vw,40px);flex:0 0 auto;display:block;
  filter:drop-shadow(0 2px 3px rgba(0,0,0,.22));
  transition:transform 260ms var(--spring)
}
.brand:active .brand-mark{transform:scale(.9) rotate(-8deg)}
.brand:hover .brand-mark{transform:rotate(-6deg) scale(1.04)}
.brand-txt{font-family:var(--font-display);font-weight:700;font-size:15px;letter-spacing:-.2px;line-height:1;min-width:0;margin:0}

/* victory modal mark */
.end-mark{
  width:clamp(54px,17vw,76px);height:clamp(54px,17vw,76px);display:block;margin:0 auto -2px;
  filter:drop-shadow(0 4px 6px rgba(0,0,0,.25));
  animation:trophyPop .6s var(--spring) backwards
}

/* ---------------------------- SPLASH --------------------------------- */
#splash{
  position:fixed;inset:0;z-index:calc(var(--z-maint) + 5);
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;
  background:
    radial-gradient(900px 600px at 50% 18%, var(--sky-1), transparent 60%),
    var(--sky-2);
  transition:opacity .45s var(--ease-out),visibility .45s;
  /* CSS-only failsafe: if JS never boots, the splash still clears itself
     instead of leaving a dead screen over the page. */
  animation:splashFailsafe 0s 4.5s forwards
}
@keyframes splashFailsafe{to{opacity:0;visibility:hidden;pointer-events:none}}
#splash.gone{opacity:0;visibility:hidden;pointer-events:none}
.splash-mark{
  /* The lockup is taller than it is wide, so height follows the artwork
     instead of being forced square as the old round mark was. */
  width:clamp(178px,58vw,260px);height:auto;display:block;
  filter:drop-shadow(0 10px 22px rgba(0,0,0,.25));
  animation:splashPop .7s var(--spring), coreBob 2.6s 0.7s ease-in-out infinite
}
@keyframes splashPop{0%{transform:scale(.5) rotate(-14deg);opacity:0}60%{transform:scale(1.08) rotate(4deg);opacity:1}100%{transform:scale(1) rotate(0)}}
.splash-sub{font-size:12px;font-weight:800;color:var(--ink-dim);letter-spacing:.04em}
.splash-bar{
  width:min(220px,56vw);height:10px;border-radius:var(--r-pill);background:var(--surface);
  border:2px solid var(--outline);overflow:hidden;box-shadow:0 3px 0 var(--outline)
}
.splash-bar i{
  display:block;height:100%;width:0;border-radius:var(--r-pill);
  background:linear-gradient(90deg,var(--p),var(--gold),var(--a));
  animation:splashFill 1.1s var(--ease-out) forwards
}
@keyframes splashFill{to{width:100%}}

/* -------------------- CRAWLABLE CONTENT TYPOGRAPHY ------------------- */
.howto p{margin:0 0 9px}
.howto p:last-child{margin-bottom:0}
.howto .kbd{
  background:var(--surface-3);border:2px solid var(--outline);border-radius:6px;
  padding:1px 6px;font-size:.9em;color:var(--ink)
}
.howto .hot{color:var(--p)}
.seo-copy{margin-top:0}
.seo-list{margin:0 0 10px;padding-left:18px}
.seo-list li{margin-bottom:5px}
.seo-list li::marker{color:var(--p)}


/* --------------------- MODE BUTTONS (AI / FRIEND) -------------------- */
.modes{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:15px}
.modebtn{
  display:flex;align-items:center;justify-content:center;gap:7px;padding:13px 8px;
  font-size:clamp(10px,2.9vw,12px);font-weight:900;letter-spacing:.02em;
  border-radius:var(--r-md);white-space:nowrap;min-width:0
}
.modebtn .ic{width:1.35em;height:1.35em}
.modebtn span{overflow:hidden;text-overflow:ellipsis}
@media(max-width:360px){
  .modebtn{padding:12px 5px;gap:5px;font-size:9.5px}
  .modebtn .ic{width:1.15em;height:1.15em}
}

/* ------------------------- COUNTRY PICKER ---------------------------- */
.flagmeta{font-size:9.5px;font-weight:900;color:var(--ink-dim);letter-spacing:.1em;margin:-4px 2px 8px}
.flagrow{
  display:flex;flex-wrap:wrap;gap:7px;margin-bottom:13px;
  max-height:42vh;overflow-y:auto;overscroll-behavior:contain;
  padding:4px;border:2px solid var(--line);border-radius:var(--r-md);
  background:var(--surface-3)
}
.flagreg{
  flex:0 0 100%;font-size:9px;font-weight:900;letter-spacing:.2em;text-transform:uppercase;
  color:var(--ink-dim);padding:8px 4px 2px;position:sticky;top:-4px;
  background:var(--surface-3);z-index:1
}
.flagbtn{
  width:46px;height:46px;border-radius:var(--r-sm);background:var(--surface);
  border:2px solid var(--outline);box-shadow:0 3px 0 var(--outline);
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;
  transition:transform 160ms var(--spring),box-shadow 160ms var(--ease-out);padding:0
}
.flagbtn:active{transform:translateY(3px);box-shadow:0 0 0 var(--outline)}
.flagbtn.on{border-color:var(--a);box-shadow:0 3px 0 var(--a-sh)}
.flagbtn .fe{font-size:19px;line-height:1}
.flagbtn .fc{font-size:7.5px;font-weight:900;color:var(--ink-dim);letter-spacing:.06em}
/* platform shows letters instead of a flag: one label is enough */
.no-flag-glyphs .flagbtn .fc{display:none}
.no-flag-glyphs .flagbtn .fe{font-size:13px;font-weight:900;letter-spacing:.04em}
.flagbtn.on .fc{color:var(--a-sh)}
.flagnone{padding:20px 10px;text-align:center;font-size:11.5px;font-weight:700;color:var(--ink-dim);flex:1}
/* ---------------------------- LOBBY --------------------------------- */
.findnote{
  margin:14px auto 0;max-width:300px;text-align:center;
  font-size:10.5px;font-weight:800;line-height:1.6;color:var(--ink-dim)
}
.findnote b{color:var(--ink)}
.findwait{
  margin-top:6px;display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:center;
  font-size:12px;font-weight:900;color:var(--ink);
  background:var(--surface);border:2px solid var(--outline);border-radius:var(--r-pill);
  padding:8px 15px;box-shadow:0 3px 0 var(--outline)
}
.pulsedot{width:9px;height:9px;border-radius:50%;background:var(--a);box-shadow:0 0 9px var(--a);animation:blip 1.3s infinite}
.linkbtn{
  font-size:10.5px;font-weight:900;color:var(--s-sh);text-decoration:underline;
  text-underline-offset:3px;padding:2px 4px;border-radius:6px
}
.linkbtn:hover{color:var(--p)}

/* ------------------------- INVITE / SHARE CARD ----------------------- */
.invgame{
  display:inline-block;font-family:var(--font-display);font-size:12px;font-weight:700;
  background:var(--p);color:var(--on-p);border:2px solid var(--outline);
  padding:5px 13px;border-radius:var(--r-pill);box-shadow:0 3px 0 var(--p-sh);margin-bottom:11px
}
.invnote{font-size:11.5px;line-height:1.65;color:var(--ink-dim);font-weight:700;margin-bottom:15px}
.invnote b{color:var(--ink)}
.invnote b.nobot{color:var(--a-sh)}
.invlabel{
  display:block;font-size:9px;letter-spacing:.18em;text-transform:uppercase;
  color:var(--ink-dim);font-weight:900;margin-bottom:7px
}
.linkrow{display:flex;gap:8px;align-items:stretch}
.linkfield{
  flex:1;min-width:0;margin-bottom:0;font-size:12px;font-weight:800;
  font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  text-overflow:ellipsis;cursor:text;color:var(--ink)
}
.copybtn{
  flex:0 0 auto;padding:0 16px;font-size:11.5px;font-weight:900;white-space:nowrap;
  display:flex;align-items:center;justify-content:center;min-width:104px
}
.copybtn.done{background:var(--a);color:var(--on-a);box-shadow:0 var(--lift) 0 var(--a-sh),var(--depth)}
.shareRow{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.share{
  display:flex;align-items:center;justify-content:center;gap:8px;
  padding:13px 10px;border-radius:var(--r-md);font-size:12.5px;font-weight:900;
  border:var(--stroke) solid var(--outline);color:#fff;position:relative;overflow:hidden;
  box-shadow:0 var(--lift) 0 var(--sh),var(--depth);
  transition:transform 140ms var(--spring),box-shadow 140ms var(--ease-out),filter 140ms linear
}
.share:before{content:"";position:absolute;inset:0;background:var(--glossy);pointer-events:none}
.share .ic{width:1.35em;height:1.35em}
.share:hover{filter:brightness(1.07)}
.share:active{transform:translateY(var(--lift));box-shadow:0 0 0 var(--sh),inset 0 3px 8px rgba(0,0,0,.22)}
.sh-wa{--sh:#0F7A3D;background:#1FA855}
.sh-tg{--sh:#1B6FA8;background:#2AABEE}
@media(max-width:340px){
  .linkrow{flex-direction:column}
  .copybtn{min-width:0;padding:11px}
  .shareRow{grid-template-columns:1fr}
}

/* ---------------------------- LEADERBOARD ---------------------------- */
.lbtabs{display:flex;gap:7px;overflow-x:auto;padding-bottom:10px;margin-bottom:4px;scrollbar-width:none}
.lbtabs::-webkit-scrollbar{display:none}
.lbtabs button{
  flex:0 0 auto;font-size:10px;font-weight:900;letter-spacing:.03em;padding:8px 13px;border-radius:var(--r-pill);
  background:var(--surface);border:2px solid var(--outline);color:var(--ink-dim);white-space:nowrap;
  box-shadow:0 3px 0 var(--outline);transition:transform 160ms var(--spring),box-shadow 160ms var(--ease-out)
}
.lbtabs button:active{transform:translateY(3px);box-shadow:0 0 0 var(--outline)}
.lbtabs button.on{color:var(--on-p);background:var(--p);border-color:var(--outline);box-shadow:0 3px 0 var(--p-sh)}
.lbhead,.lbrow{display:grid;grid-template-columns:28px 1fr auto 64px;gap:8px;align-items:center}
.lbhead{font-size:8.5px;letter-spacing:.16em;color:var(--ink-soft);font-weight:900;padding:0 10px 7px}
.lbrow{
  background:var(--surface);border:2px solid var(--outline);border-radius:var(--r-md);
  padding:10px;margin-bottom:7px;font-size:11.5px;font-weight:800;color:var(--ink);
  box-shadow:0 3px 0 var(--outline);animation:popIn .34s var(--spring) backwards
}
.lbrow.me{border-color:var(--a);box-shadow:0 3px 0 var(--a-sh)}
.lbrow .r{font-family:var(--font-display);font-weight:700;font-variant-numeric:tabular-nums;color:var(--ink-soft);text-align:center;font-size:14px}
.lbrow.top1{border-color:var(--gold);box-shadow:0 3px 0 var(--gold-sh)}
.lbrow.top1 .r{color:var(--gold-sh)}.lbrow.top2 .r{color:var(--ink-dim)}.lbrow.top3 .r{color:var(--p)}
.lbrow .p{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:flex;align-items:center;gap:6px}
.lbrow .g{font-size:8.5px;color:var(--ink-dim);letter-spacing:.05em;white-space:nowrap;font-weight:900}
.lbrow .s{text-align:right;font-variant-numeric:tabular-nums;color:var(--s-sh);font-weight:900}
.lbempty{text-align:center;color:var(--ink-dim);font-size:11.5px;padding:26px 10px;line-height:1.7;font-weight:700}
.lbnote{font-size:10px;color:var(--ink-dim);margin-top:13px;line-height:1.6;text-align:center;font-weight:700}
@media(max-width:360px){
  .lbhead,.lbrow{grid-template-columns:24px 1fr 56px}
  .lbhead .g,.lbrow .g{display:none}
}

/* ------------------------------ ADS ------------------------------ */
#adOv{
  position:fixed;inset:0;z-index:var(--z-ad);display:flex;flex-direction:column;align-items:center;
  justify-content:center;gap:16px;background:var(--scrim);backdrop-filter:blur(11px);text-align:center;
  padding:calc(24px + var(--safe-t)) calc(24px + var(--safe-r)) calc(24px + var(--safe-b)) calc(24px + var(--safe-l))
}
#adOv .tag{font-size:9px;letter-spacing:.24em;color:var(--ink-dim);font-weight:900}
#adOv h3{font-family:var(--font-display);font-size:24px;font-weight:700;max-width:320px;line-height:1.15;color:var(--ink)}
#adOv p{font-size:12px;color:var(--ink-dim);max-width:300px;line-height:1.55;font-weight:700}
.adbarwrap{
  width:100%;max-width:320px;height:16px;border-radius:var(--r-pill);background:var(--surface);
  overflow:hidden;border:2px solid var(--outline);box-shadow:0 3px 0 var(--outline)
}
#adBar{height:100%;width:0%;border-radius:var(--r-pill);background:linear-gradient(90deg,var(--s),var(--a),var(--gold));transition:width .1s linear}
#adNum{font-family:var(--font-display);font-size:40px;font-weight:700;color:var(--ink);font-variant-numeric:tabular-nums}
.spin{width:28px;height:28px;border-radius:50%;border:4px solid var(--line);border-top-color:var(--p);animation:sp .8s linear infinite}
@keyframes sp{to{transform:rotate(360deg)}}

/* ------------------------------ DOCK ----------------------------- */
footer{
  flex:0 0 auto;padding:9px 12px calc(9px + var(--safe-b));display:flex;align-items:center;gap:8px;
  z-index:var(--z-chrome);position:relative
}
footer:before{
  top:-20px;bottom:0;
  background:linear-gradient(0deg,rgba(var(--chrome),.97) 0%,rgba(var(--chrome),.88) 58%,rgba(var(--chrome),0) 100%);
}
#dock{display:flex;gap:7px;flex-wrap:wrap}
#dock a.soc{
  width:36px;height:36px;border-radius:var(--r-sm);display:grid;place-items:center;font-size:18px;
  background:var(--hud-bg);border:2px solid var(--outline);color:var(--hud-ink);
  box-shadow:0 3px 0 var(--outline);
  transition:transform 180ms var(--spring),box-shadow 180ms var(--ease-out),color 160ms linear;
}
#dock a.soc-email{--nb:#4D8DFF}
#dock a.soc-whatsapp{--nb:#25D366}
#dock a.soc-instagram{--nb:#E1306C}
#dock a.soc-tiktok{--nb:#00E5D0}
#dock a.soc-telegram{--nb:#2AABEE}
#dock a.soc:hover,#dock a.soc:focus-visible{color:var(--nb);outline:none}
#dock a.soc:active{transform:translateY(3px);box-shadow:0 0 0 var(--outline);color:var(--nb)}
.fnote{margin-left:auto;font-size:8.5px;color:var(--ink-soft);text-align:right;line-height:1.45;letter-spacing:.03em;font-weight:900}

/* ----------------------------- TOAST ----------------------------- */
#toast{
  position:fixed;left:50%;top:calc(16px + var(--safe-t));transform:translateX(-50%);z-index:var(--z-toast);display:flex;
  flex-direction:column;gap:8px;align-items:center;pointer-events:none;width:100%;max-width:400px;padding:0 14px
}
.tst{
  background:var(--surface);color:var(--ink);border:var(--stroke) solid var(--outline);border-radius:var(--r-md);
  padding:10px 16px;font-size:12px;font-weight:900;box-shadow:0 5px 0 var(--outline),var(--depth);
  animation:tin .45s var(--spring);max-width:100%
}
@keyframes tin{0%{opacity:0;transform:translateY(-22px) scale(.8)}60%{transform:translateY(3px) scale(1.03)}100%{opacity:1;transform:none}}

/* --------------------------- MAINTENANCE ------------------------- */
#maint{
  position:fixed;inset:0;z-index:var(--z-maint);display:flex;flex-direction:column;align-items:center;
  justify-content:center;gap:13px;background:var(--sky-2);text-align:center;color:var(--ink);
  padding:calc(26px + var(--safe-t)) calc(26px + var(--safe-r)) calc(26px + var(--safe-b)) calc(26px + var(--safe-l))
}
#maint .e{font-size:64px;animation:coreBob 2s ease-in-out infinite}
#maint h1{font-family:var(--font-display);font-size:26px;font-weight:700}
#maint p{font-size:13px;color:var(--ink-dim);max-width:300px;line-height:1.6;font-weight:700}

/* ==================================================================== */
/*  RESPONSIVE MATRIX                                                    */
/* ==================================================================== */
@media(max-width:420px){
  header{padding:calc(9px + var(--safe-t)) 9px 9px;gap:6px}
  .brand-txt{font-size:13.5px}
  .brand{gap:7px}
  .chip{padding:4px 7px;font-size:10px;gap:4px}
  .chip .ic{width:1.05em;height:1.05em}
  .ibtn{width:30px;height:30px;font-size:14px}
  .wallet{gap:3.5px}
}
/* the mark carries the brand once the wordmark would collide with the wallet */
@media(max-width:374px){
  .brand-txt b{display:none}
  .brand-txt{white-space:nowrap}
}
@media(max-width:360px){
  .hero h2{font-size:21px}
  #endTtl{font-size:40px}
  .brand-txt small{letter-spacing:.14em;font-size:7px}
  .pad{padding:10px 10px 16px}
  [data-theme="retro_arcade"] .brand-txt{font-size:9px}
}
@media(max-width:330px){
  .brand-txt small{display:none}
  .chip.s{display:none}
  #dock a.soc{width:32px;height:32px;font-size:16px}
}

/* phone landscape */
@media(orientation:landscape) and (max-height:520px){
  #app{max-width:none}
  header{padding:calc(5px + var(--safe-t)) 12px 5px}
  .brand-txt small{display:none}
  .brand-txt{font-size:12px}
  .profile{padding:7px 10px;margin-bottom:8px}
  .avatar{width:34px;height:34px;font-size:17px}
  .hero{padding:11px 14px;margin-bottom:10px}
  .hero h2{font-size:18px}
  .hero p{font-size:10px;margin-top:3px}
  .grid{grid-template-columns:repeat(3,1fr);gap:8px}
  .gcard .art{height:48px}
  .gicon{height:48px;font-size:22px}
  .gname{margin:8px 9px 0}
  .gtag{margin:1px 9px 0}
  .gplay-n{margin:1px 9px 0}
  .gbtns{margin:8px 9px 9px}
  .secttl{margin:0 2px 7px}
  .emotes{bottom:calc(4px + var(--safe-b))}
  .emotes button{width:38px;height:38px;font-size:18px}
  .hud{padding:5px 8px}
  .pbar{height:22px}
  footer{padding:5px 12px calc(5px + var(--safe-b))}
  #dock a.soc{width:30px;height:30px;font-size:16px}
  .fnote{display:none}
  #cdown b{font-size:62px}
  #scr-end{gap:6px}
  #endTtl{font-size:34px}
  .rewards{margin:2px 0}
  .rw{padding:8px 14px;min-width:82px}
  .rw b{font-size:18px}
  .bigbtn{padding:11px;font-size:12.5px}
  .sheet{max-height:94vh}
  .howto{display:none}
}

@media(min-height:760px){ .grid{gap:12px} }

/* tablet */
@media(min-width:640px){
  #app{max-width:620px}
  .pad{padding:14px 14px 20px}
  .grid{gap:12px}
  .hero h2{font-size:27px}
  .emotes button{width:50px;height:50px;font-size:24px}
}

/* desktop: framed arcade cabinet */
@media(min-width:768px) and (min-height:680px){
  body{padding:20px 0}
  #app{
    max-width:680px;height:calc(100% - 40px);
    border:4px solid var(--outline);border-radius:var(--r-xl);overflow:hidden;
    background:color-mix(in srgb, var(--sky-2) 55%, transparent);
    box-shadow:0 12px 0 var(--outline), 0 50px 130px -35px rgba(0,0,0,.9), 0 0 110px -25px var(--glow);
  }
  .modal{align-items:center}
  .sheet{border-radius:var(--r-xl);max-width:520px;max-height:82vh}
  #toast{max-width:440px}
}
@media(min-width:1280px) and (min-height:680px){ #app{max-width:720px} }

/* pointer affordances */
@media(hover:hover) and (pointer:fine){
  .gcard:hover{transform:translateY(2px) scale(.985) rotate(-.5deg)}
  .gcard:hover .art{transform:translateY(18px) rotate(1.5deg)}
  .hero:hover{filter:brightness(1.05)}
  .lbtabs button:hover{color:var(--ink)}
}

/* accessibility: honour reduced motion */
@media(prefers-reduced-motion:reduce){
  *,*:before,*:after{
    animation-duration:.01ms!important;animation-iteration-count:1!important;
    transition-duration:.01ms!important;scroll-behavior:auto!important
  }
  .burst{display:none}
}

/* ===================== DEDICATED GAME PAGE CONTENT =====================
   Only present on /games/<slug>.html. It sits at the top of the home
   screen's own scroll area, so it uses the layout that is already there -
   nothing is inserted by script, and nothing can shift after first paint. */
.gpage{padding:2px 2px 6px;margin-bottom:6px}
.gp-h1{
  font-family:var(--font-display);font-size:clamp(21px,5.6vw,27px);font-weight:700;
  line-height:1.15;color:var(--ink);margin:6px 0 4px;letter-spacing:-.01em}
.gp-sub{
  font-size:11px;font-weight:900;letter-spacing:.06em;text-transform:uppercase;
  color:var(--p-sh,var(--ink-dim));margin:0 0 10px}
.gp-intro{font-size:12.5px;line-height:1.65;color:var(--ink-soft);margin:0 0 14px;font-weight:700}
.gp-cta{display:flex;flex-direction:column;gap:8px;margin:0 0 18px}
.gp-cta .ghostbtn{min-height:44px}
.gp-h2{
  font-family:var(--font-display);font-size:15px;font-weight:700;color:var(--ink);
  margin:18px 0 8px;padding-top:12px;border-top:2px dashed rgba(46,26,79,.18)}
.gp-steps{margin:0 0 4px;padding-left:20px}
.gp-steps li{font-size:12px;line-height:1.7;color:var(--ink-soft);font-weight:700;margin-bottom:4px}
.gp-ctrl{width:100%;border-collapse:collapse;font-size:12px}
.gp-cap{
  caption-side:top;text-align:left;font-size:10px;color:var(--ink-dim);
  font-weight:800;padding-bottom:6px}
.gp-ctrl th,.gp-ctrl td{
  text-align:left;padding:7px 8px;border-bottom:1px solid rgba(46,26,79,.14);
  font-weight:700;color:var(--ink-soft)}
.gp-ctrl th{white-space:nowrap;color:var(--ink);width:38%}
.gp-faq details{
  border:2px solid var(--outline);border-radius:var(--r-md);
  background:var(--surface);margin-bottom:7px;overflow:hidden}
.gp-faq summary{
  cursor:pointer;padding:10px 12px;font-weight:900;font-size:12px;color:var(--ink);
  list-style:none;min-height:44px;display:flex;align-items:center;gap:8px}
.gp-faq summary::-webkit-details-marker{display:none}
.gp-faq summary:after{content:"+";margin-left:auto;font-size:17px;font-weight:900;color:var(--p-sh,var(--ink-dim))}
.gp-faq details[open] summary:after{content:"2"}
.gp-faq p{margin:0;padding:0 12px 12px;font-size:12px;line-height:1.65;color:var(--ink-soft);font-weight:700}
.gp-more{list-style:none;margin:0;padding:0;display:grid;gap:6px}
.gp-more a{
  display:block;padding:10px 12px;min-height:44px;display:flex;align-items:center;
  border:2px solid var(--outline);border-radius:var(--r-md);background:var(--surface);
  font-size:11.5px;font-weight:900;color:var(--ink)}
.gp-more a:active{transform:translateY(2px)}
@media (min-width:640px){
  .gp-cta{flex-direction:row;flex-wrap:wrap}
  .gp-cta .bigbtn{flex:1 1 100%}
  .gp-cta .ghostbtn{flex:1 1 calc(50% - 4px)}
  .gp-more{grid-template-columns:repeat(2,1fr)}
}
