/* ============ PlayMini — mobile-first arcade, no CDN ============ */
:root{
  --bg:#f5f7fb; --panel:#ffffff; --ink:#12141a; --muted:#5b6474;
  --brand:#5b4bff; --brand-soft:#ece9ff; --line:#e3e7ef;
  --accent:#ff7a3d; --ok:#12b886; --radius:18px;
  --shadow:0 1px 2px rgba(16,24,40,.06),0 8px 24px rgba(16,24,40,.06);
}
html[data-theme="dark"]{
  --bg:#0d1017; --panel:#161b25; --ink:#eef6ff; --muted:#9aa7bd;
  --brand:#8a7bff; --brand-soft:#232043; --line:#242c3b; --accent:#ff8a52;
  --shadow:0 1px 2px rgba(0,0,0,.4),0 10px 30px rgba(0,0,0,.35);
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;padding:0}
body{
  background:var(--bg);color:var(--ink);
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;
  line-height:1.6;-webkit-text-size-adjust:100%;
  min-height:100dvh;
}
img,svg{max-width:100%}
a{color:var(--brand);text-decoration:none}
a:hover{text-decoration:underline}
.wrap{max-width:1060px;margin:0 auto;padding:0 16px}

/* ---- header ---- */
.site-head{position:sticky;top:0;z-index:30;background:color-mix(in srgb,var(--bg) 86%,transparent);backdrop-filter:saturate(150%) blur(10px);border-bottom:1px solid var(--line)}
.site-head .wrap{display:flex;align-items:center;justify-content:space-between;gap:12px;height:56px}
.logo{display:flex;align-items:center;gap:8px;font-weight:800;font-size:18px;color:var(--ink);letter-spacing:-.02em}
.logo .dot{width:26px;height:26px;border-radius:9px;background:linear-gradient(135deg,var(--brand),var(--accent));display:grid;place-items:center;font-size:14px}
.nav{display:flex;gap:14px;align-items:center;font-size:14px;font-weight:600}
.nav a{color:var(--muted)}
.nav a:hover{color:var(--ink);text-decoration:none}
.icon-btn{background:var(--panel);border:1px solid var(--line);color:var(--ink);border-radius:12px;width:38px;height:38px;display:grid;place-items:center;font-size:17px;cursor:pointer;padding:0}

/* ---- hero ---- */
.hero{padding:26px 0 10px}
.hero h1{font-size:clamp(24px,6vw,40px);line-height:1.15;letter-spacing:-.03em;margin:0 0 10px;font-weight:830}
.hero p.lead{color:var(--muted);font-size:15px;margin:0 0 16px;max-width:52ch}
.chips{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 6px;padding:0;list-style:none}
.chip{background:var(--panel);border:1px solid var(--line);border-radius:999px;padding:5px 11px;font-size:12.5px;color:var(--muted);font-weight:600}

/* ---- game grid ---- */
.section-h{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin:26px 0 12px}
.section-h h2{font-size:19px;margin:0;letter-spacing:-.01em}
.section-h span{font-size:13px;color:var(--muted)}
.grid{display:grid;gap:12px;grid-template-columns:repeat(2,minmax(0,1fr))}
@media(min-width:620px){.grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}}
@media(min-width:900px){.grid{grid-template-columns:repeat(4,minmax(0,1fr))}}
.card{position:relative;display:flex;flex-direction:column;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow);transition:transform .15s ease,box-shadow .15s ease}
.card:active{transform:scale(.985)}
.card .thumb{aspect-ratio:4/3;display:grid;place-items:center;font-size:38px;background:var(--brand-soft)}
.card .body{padding:10px 12px 12px}
.card h3{font-size:15px;margin:0 0 2px;letter-spacing:-.01em;color:var(--ink)}
.card p{margin:0;font-size:12.5px;color:var(--muted);line-height:1.45}
.card a.stretch{position:absolute;inset:0}
.tag{position:absolute;top:8px;right:8px;background:var(--accent);color:#fff;font-size:10.5px;font-weight:800;padding:2px 7px;border-radius:999px;letter-spacing:.03em}
.pager{display:flex;justify-content:center;gap:10px;margin:22px 0 8px;flex-wrap:wrap}
.pager a,.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:9px 15px;font-size:14px;font-weight:700;color:var(--ink);cursor:pointer;min-height:42px}
.btn.primary{background:var(--brand);border-color:var(--brand);color:#fff}
.pager a[aria-current]{background:var(--brand);color:#fff;border-color:var(--brand)}

/* ---- game page ---- */
.crumbs{font-size:12.5px;color:var(--muted);padding:12px 0 0}
.crumbs a{color:var(--muted)}
.gp-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:8px 0 10px}
.gp-head h1{font-size:clamp(21px,5.4vw,32px);margin:0;letter-spacing:-.03em;font-weight:830}
.stage{position:relative;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:10px;box-shadow:var(--shadow)}
.canvas-box{position:relative;width:100%;display:grid;place-items:center;touch-action:none;user-select:none;-webkit-user-select:none}
canvas{display:block;border-radius:12px;touch-action:none;max-width:100%;background:#0e1220}
.hud{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:13.5px;font-weight:700;margin-bottom:8px;color:var(--muted);flex-wrap:wrap}
.hud .score{color:var(--ink);font-variant-numeric:tabular-nums}
.hud .best{color:var(--muted);font-variant-numeric:tabular-nums}
.gp-actions{display:flex;gap:8px;margin-top:10px;flex-wrap:wrap}
.gp-actions .btn{flex:1 1 auto}
.overlay{position:absolute;inset:0;border-radius:12px;background:rgba(8,10,18,.72);backdrop-filter:blur(3px);display:grid;place-items:center;text-align:center;color:#fff;padding:18px}
.overlay[hidden]{display:none}
.overlay h2{margin:0 0 6px;font-size:22px;color:#fff}
.overlay p{margin:0 0 14px;font-size:14px;color:#cfd7ea}
.overlay .btn{background:#fff;color:#12141a;border:0;font-size:15px;padding:11px 22px}
.overlay .btn.ghost{background:transparent;color:#fff;border:1px solid rgba(255,255,255,.4)}
.tip{font-size:12.5px;color:var(--muted);text-align:center;margin:8px 0 0}
.kbd{display:inline-block;border:1px solid var(--line);border-bottom-width:2px;border-radius:6px;padding:0 5px;font-size:11.5px;background:var(--panel);color:var(--ink);font-family:ui-monospace,monospace}

/* ad slot — hidden until an ad code is configured */
.ad-slot{display:none;margin:16px 0;min-height:0}
.ad-slot.on{display:block;padding:10px;border:1px dashed var(--line);border-radius:14px;text-align:center;color:var(--muted);font-size:11.5px}

/* ---- content ---- */
.prose{font-size:15px;color:var(--ink);max-width:70ch}
.prose h2{font-size:19px;margin:26px 0 8px;letter-spacing:-.01em}
.prose h3{font-size:16px;margin:18px 0 6px}
.prose p{color:var(--muted);margin:0 0 12px}
.prose ul,.prose ol{color:var(--muted);padding-left:20px;margin:0 0 12px}
.prose li{margin:4px 0}
.prose strong{color:var(--ink)}
details{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:12px 14px;margin:0 0 8px}
details summary{font-weight:700;cursor:pointer;font-size:14.5px;color:var(--ink)}
details p{margin:8px 0 0;font-size:14px;color:var(--muted)}
.related{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:10px 0 0}
@media(min-width:620px){.related{grid-template-columns:repeat(4,minmax(0,1fr))}}
.related a{display:flex;align-items:center;gap:8px;background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:11px;color:var(--ink);font-size:13.5px;font-weight:650}
.related a span{font-size:19px}

/* ---- footer ---- */
footer{border-top:1px solid var(--line);margin-top:40px;padding:22px 0 34px;color:var(--muted);font-size:13px}
footer .cols{display:flex;flex-wrap:wrap;gap:18px;justify-content:space-between}
footer a{color:var(--muted)}
footer .fine{font-size:12px;margin-top:12px;color:var(--muted)}

/* ---- Math Sprint (DOM game) ---- */
.math-ops{display:flex;gap:6px;justify-content:center;flex-wrap:wrap;margin-bottom:12px}
.math-bar{display:flex;justify-content:space-between;font-size:13px;font-weight:700;color:var(--muted);margin-bottom:4px;gap:8px}
.math-q{text-align:center;font-size:clamp(28px,9vw,40px);font-weight:800;color:var(--fg);padding:8px 0 0;letter-spacing:.02em;min-height:56px}
.math-ans{text-align:center;font-size:clamp(24px,7vw,32px);font-weight:800;color:var(--accent);min-height:44px;letter-spacing:.08em}
.math-pad{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:10px}
.math-pad .btn{font-size:20px;min-height:52px;padding:0}
.math-startwrap{text-align:center;margin-top:14px}

/* ---- word search word list ---- */
.wordlist{display:flex;flex-wrap:wrap;gap:6px;justify-content:center;margin:10px 0 4px}
.wordlist li{list-style:none;font-weight:700;font-size:13px;padding:6px 10px;border-radius:10px;
  border:1px solid var(--line);background:var(--card);color:var(--fg);letter-spacing:.02em}
