/* Shared design system for every game page (loaded as ../ds.css). No dependencies, no fonts to download. */
:root{--bg:#10121a;--bg2:#171a26;--card:#1e2233;--card2:#272c42;--ink:#eef0f8;--mute:#9aa2bd;--line:#2f3550;
--acc:#7c8cff;--acc2:#a78bfa;--good:#3ddc97;--warn:#ffc857;--bad:#ff6b81;--r:14px;--shadow:0 6px 18px #0006,0 1px 0 #ffffff12 inset}
@media(prefers-color-scheme:light){:root{--bg:#f4f5fb;--bg2:#fff;--card:#fff;--card2:#e9ebf6;--ink:#1a1d2e;--mute:#626a86;--line:#d7dbec;--shadow:0 4px 14px #2a336618,0 1px 0 #fff inset}}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;min-height:100vh;font:16px/1.45 ui-rounded,"SF Pro Rounded",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;color:var(--ink);
background:radial-gradient(1200px 600px at 50% -10%,color-mix(in srgb,var(--acc) 22%,transparent),transparent),var(--bg);text-align:center;padding-bottom:3rem}
.wrap{max-width:460px;margin:0 auto;padding:0 14px}
.top{display:flex;align-items:center;justify-content:space-between;max-width:460px;margin:0 auto;padding:12px 14px}
.top a{color:var(--mute);text-decoration:none;font-weight:600;font-size:.9rem;padding:6px 10px;border-radius:99px}
.top a:hover{background:var(--card)}
.top .brand{color:var(--ink);font-weight:800;letter-spacing:.2px}
h1{font-size:1.9rem;margin:.2rem 0 .1rem;letter-spacing:-.5px;background:linear-gradient(90deg,var(--acc),var(--acc2));-webkit-background-clip:text;background-clip:text;color:transparent}
.sub{color:var(--mute);margin:.1rem 0 1rem;font-size:.95rem}
a{color:var(--acc)}
button{font:inherit;color:inherit;cursor:pointer;border:0}
.btn{display:inline-block;padding:.65em 1.1em;margin:4px;border-radius:12px;background:var(--card2);color:var(--ink);font-weight:700;box-shadow:var(--shadow);transition:transform .08s,filter .15s}
.btn:hover:not(:disabled){filter:brightness(1.12)}.btn:active:not(:disabled){transform:translateY(1px) scale(.98)}
.btn:disabled{opacity:.38;cursor:default}
.btn.pri{background:linear-gradient(135deg,var(--acc),var(--acc2));color:#fff}
.btn.good{background:var(--good);color:#06281a}
:focus-visible{outline:3px solid var(--warn);outline-offset:2px}
.card{background:var(--card);border-radius:var(--r);box-shadow:var(--shadow);padding:14px}
.stat{display:flex;justify-content:center;gap:10px;margin:.8rem 0}
.stat div{background:var(--card);border-radius:12px;padding:8px 12px;min-width:68px;box-shadow:var(--shadow)}
.stat b{display:block;font-size:1.25rem}.stat span{font-size:.7rem;color:var(--mute);text-transform:uppercase;letter-spacing:.06em}
.msg{min-height:1.6em;font-weight:700}
.toast{position:fixed;left:50%;bottom:24px;transform:translate(-50%,40px);background:var(--ink);color:var(--bg);padding:.6em 1.1em;border-radius:99px;font-weight:700;opacity:0;transition:.25s;pointer-events:none;z-index:9}
.toast.on{opacity:1;transform:translate(-50%,0)}
@keyframes pop{0%{transform:scale(.85)}60%{transform:scale(1.07)}100%{transform:scale(1)}}
@keyframes shake{20%,60%{transform:translateX(-6px)}40%,80%{transform:translateX(6px)}}
@keyframes rise{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
.pop{animation:pop .25s}.shake{animation:shake .35s}.rise{animation:rise .35s both}
dialog{border:0;border-radius:18px;background:var(--card);color:var(--ink);max-width:420px;width:calc(100% - 28px);padding:20px;box-shadow:0 20px 60px #000a;text-align:left}
dialog::backdrop{background:#000a;backdrop-filter:blur(3px)}
dialog h2{margin-top:0}dialog .x{float:right}
.foot{margin-top:2rem;color:var(--mute);font-size:.8rem}.foot a{color:var(--mute)}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
