.g-skip{position:absolute;left:-999px}.g-skip:focus{left:8px;top:8px;z-index:99;background:var(--surface);padding:8px 12px;border-radius:var(--r-s)}
.cu-mnav{display:none;border-bottom:1px solid var(--border);background:var(--surface)}
.cu-mnav.open{display:block}.cu-mnav a{display:block;padding:12px 20px;border-top:1px solid var(--border);color:var(--ink)}
.g-intro{max-width:70ch;color:var(--muted)}
.g-stage{position:relative;width:100%;border-radius:var(--r-xl);overflow:hidden;background:#17222B;box-shadow:var(--shadow-2);border:1px solid var(--border);touch-action:none;user-select:none;-webkit-user-select:none}
.g-race{aspect-ratio:16/9;max-height:calc(100vh - 90px);max-height:calc(100dvh - 90px)}
@media (max-width:720px){.g-race{aspect-ratio:auto;height:calc(100dvh - 140px);min-height:420px}}
.g-stage canvas{display:block;width:100%;height:100%}
.g-hud{position:absolute;inset:0;pointer-events:none;color:#fff;font-weight:650;font-variant-numeric:tabular-nums}
.g-hudbar{position:absolute;top:10px;left:10px;right:10px;display:flex;gap:8px;flex-wrap:wrap;align-items:flex-start}
.g-chip{background:rgba(23,34,43,.62);backdrop-filter:blur(6px);border-radius:var(--r-m);padding:6px 10px;font-size:14px;line-height:1.2}
.g-chip small{display:block;font-size:10px;opacity:.75;text-transform:uppercase;letter-spacing:.06em;font-weight:600}
.g-tools{margin-left:auto;display:flex;gap:6px;pointer-events:auto}
.g-tbtn{width:42px;height:42px;border-radius:var(--r-m);border:0;background:rgba(23,34,43,.62);color:#fff;display:grid;place-items:center;cursor:pointer;font:700 16px var(--font)}
.g-tbtn:focus-visible{outline:2px solid #9FE3CF}
.g-tbtn svg{width:20px;height:20px}
.g-speed{position:absolute;right:14px;bottom:150px;font-size:34px;text-align:right;text-shadow:0 2px 8px rgba(0,0,0,.5)}
.g-speed small{font-size:12px;display:block;opacity:.8}
@media (hover:hover) and (pointer:fine){.g-speed{bottom:16px}}
.g-center{position:absolute;inset:0;display:grid;place-items:center;font-size:clamp(48px,12vw,120px);font-weight:800;text-shadow:0 4px 20px rgba(0,0,0,.5)}
.g-overlay{position:absolute;inset:0;display:grid;place-items:center;background:rgba(23,34,43,.72);backdrop-filter:blur(4px);pointer-events:auto;padding:16px;overflow:auto}
.g-overlay[hidden]{display:none}
.g-card{background:var(--surface);color:var(--ink);border-radius:var(--r-xl);padding:22px;max-width:520px;width:100%;box-shadow:var(--shadow-3);text-align:center}
.g-card h2{margin:0 0 6px;font-size:var(--fs-xl)}.g-card p{color:var(--muted);margin:0 0 14px}
.g-levels{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:10px;margin:14px 0}
.g-lvl{border:1px solid var(--border);background:var(--surface-2);color:var(--ink);border-radius:var(--r-l);padding:12px;cursor:pointer;font:600 var(--fs-sm) var(--font);text-align:left}
.g-lvl:hover:not(:disabled){border-color:var(--accent)}.g-lvl:focus-visible{outline:0;box-shadow:var(--focus)}
.g-lvl:disabled{opacity:.5;cursor:not-allowed}.g-lvl b{display:block;font-size:var(--fs-md)}.g-lvl span{display:block;color:var(--muted);font-weight:500;font-size:12px;margin-top:2px}
.g-row{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}
.g-touch{position:absolute;left:0;right:0;bottom:12px;display:none;justify-content:space-between;padding:0 12px;pointer-events:none}
.g-touch.on{display:flex}.g-touch div{display:flex;gap:12px}
.g-pad{pointer-events:auto;width:76px;height:76px;border-radius:50%;border:2px solid rgba(255,255,255,.35);background:rgba(23,34,43,.45);color:#fff;font:800 26px var(--font);display:grid;place-items:center;touch-action:none}
.g-pad.down{background:rgba(14,124,102,.75);border-color:#9FE3CF}
.g-pad--gas{background:rgba(14,124,102,.55)}
.g-table{width:100%;border-collapse:collapse;margin:8px 0 14px;font-size:var(--fs-sm)}.g-table td{padding:5px;border-bottom:1px solid var(--border);text-align:left}.g-table tr.me td{color:var(--accent-text);font-weight:700}
.g-kbd{font-size:var(--fs-sm);color:var(--muted)}
.g-toggle{display:inline-flex;gap:8px;align-items:center;font-size:var(--fs-sm);color:var(--muted);cursor:pointer}
/* puzzle */
.p-wrap{max-width:520px;margin:0 auto}
.p-top{display:flex;gap:8px;align-items:stretch;margin-bottom:12px;flex-wrap:wrap}
.p-stat{flex:1;min-width:80px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-m);padding:8px 10px;font-weight:700;font-variant-numeric:tabular-nums}
.p-stat small{display:block;font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;font-weight:600}
.p-board{position:relative;width:100%;aspect-ratio:1;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--r-xl);touch-action:none;user-select:none;-webkit-user-select:none;outline:0}
.p-board:focus-visible{box-shadow:var(--focus)}
.p-cell,.p-tile{position:absolute;border-radius:var(--r-m)}
.p-cell{background:color-mix(in srgb,var(--border) 70%,transparent)}
.p-stone{background:repeating-linear-gradient(45deg,#5B6B77 0 6px,#4c5a65 6px 12px);box-shadow:inset 0 -3px 0 rgba(0,0,0,.2)}
.p-tile{display:grid;place-items:center;font-weight:800;transition:transform 110ms var(--ease,ease);will-change:transform;z-index:2}
.p-tile span{display:grid;place-items:center;width:100%;height:100%;border-radius:inherit;box-shadow:inset 0 -3px 0 rgba(0,0,0,.12)}
.p-tile.new span{animation:p-pop 160ms ease-out}
.p-tile.merged span{animation:p-bump 180ms ease-out}
@keyframes p-pop{from{transform:scale(.2);opacity:0}}
@keyframes p-bump{50%{transform:scale(1.14)}}
.p-msg{position:absolute;inset:0;z-index:5;display:grid;place-items:center;background:color-mix(in srgb,var(--bg) 80%,transparent);border-radius:inherit;backdrop-filter:blur(3px);text-align:center;padding:16px}
.p-msg[hidden]{display:none}
.p-score-pop{position:absolute;right:10px;top:-4px;color:var(--accent-text);font-weight:800;animation:p-up .7s ease-out forwards;pointer-events:none}
@keyframes p-up{to{transform:translateY(-24px);opacity:0}}
@media (prefers-reduced-motion:reduce){.p-tile{transition:none}.p-tile span{animation:none!important}.p-score-pop{display:none}}
.g-hubcard{display:block}
.g-hubcard .thumb{aspect-ratio:16/9;border-radius:var(--r-m);margin-bottom:8px;background:linear-gradient(135deg,#0E7C66,#17222B);display:grid;place-items:center;color:#9FE3CF;font-size:56px}
