:root{--bg:#0b0820;--bg-2:#161036;--line:#2c2463;--text:#f2efff;--muted:#9d96c8;--accent:#ff3d7f;--yellow:#ffd23d;--danger:#ff5c5c;--radius:14px;--font:ui-rounded, "SF Pro Rounded", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--mono:ui-monospace, "SF Mono", Menlo, Consolas, monospace;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body{background:radial-gradient(ellipse at top, #241a5c 0%, var(--bg) 60%) fixed, var(--bg);min-height:100%;color:var(--text);font-family:var(--font);-webkit-tap-highlight-color:transparent;margin:0}a{color:inherit}.page{max-width:640px;padding:max(16px, env(safe-area-inset-top)) 16px max(24px, env(safe-area-inset-bottom));margin:0 auto}.page--center{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:16px;min-height:100dvh;display:flex}.logo{font-family:var(--mono);letter-spacing:.08em;text-shadow:0 0 18px var(--accent), 0 0 2px #fff;margin:0;font-size:clamp(2.4rem,12vw,4rem);line-height:1}.logo span{letter-spacing:.5em;color:var(--yellow);text-shadow:0 0 12px var(--yellow);margin-top:.3em;font-size:.38em;display:block}.logo--small{font-size:1.5rem}.logo--small span{letter-spacing:.3em;margin-left:.5em;display:inline}.lead{color:var(--muted);max-width:22rem;margin:0}.hint{color:var(--muted);margin:8px 0 20px;font-size:.85rem}.pseudo-form{text-align:left;flex-direction:column;gap:10px;width:min(100%,22rem);display:flex}.pseudo-form label{font-weight:600}input{font:inherit;border-radius:var(--radius);border:2px solid var(--line);background:var(--bg-2);color:var(--text);outline:none;padding:14px 16px;font-size:1.3rem}input:focus{border-color:var(--accent);box-shadow:0 0 0 4px color-mix(in srgb, var(--accent) 25%, transparent)}.error{color:var(--danger);margin:0}.btn{font:inherit;border-radius:var(--radius);background:var(--accent);color:#12091f;cursor:pointer;box-shadow:0 6px 0 color-mix(in srgb, var(--accent) 55%, #000), 0 0 24px color-mix(in srgb, var(--accent) 45%, transparent);touch-action:manipulation;border:0;padding:12px 20px;font-weight:800;transition:transform 80ms,box-shadow 80ms}.btn:active{box-shadow:0 2px 0 color-mix(in srgb, var(--accent) 55%, #000);transform:translateY(4px)}.btn--big{padding:16px 28px;font-size:1.3rem}.btn--ghost{color:var(--text);border:2px solid var(--muted);box-shadow:none;text-align:center;background:0 0;text-decoration:none}.pseudo-known{text-align:center;margin:0 0 4px;font-size:1.15rem}.link{color:var(--muted)}.chip{font:inherit;background:var(--bg-2);color:var(--text);border:1px solid var(--line);cursor:pointer;border-radius:999px;padding:6px 12px;font-size:.9rem}.topbar{justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px;display:flex}.banner{text-align:center;border-radius:var(--radius);background:linear-gradient(90deg,#ffd23d22,#ff3d7f22);border:1px solid #ffd23d66;padding:14px;font-weight:700;text-decoration:none;display:block}.section-title{font-family:var(--mono);letter-spacing:.25em;text-transform:uppercase;color:var(--muted);margin:28px 0 12px;font-size:.9rem}.games{grid-template-columns:repeat(auto-fill,minmax(min(100%,260px),1fr));gap:12px;display:grid}.game-card{border-radius:var(--radius);background:linear-gradient(135deg, color-mix(in srgb, var(--accent) 22%, var(--bg-2)), var(--bg-2));border:1px solid color-mix(in srgb, var(--accent) 50%, transparent);flex-direction:column;gap:6px;padding:18px;text-decoration:none;display:flex;box-shadow:inset 0 0 0 1px #ffffff08}.game-card strong{color:var(--accent);text-shadow:0 0 12px color-mix(in srgb, var(--accent) 60%, transparent);font-size:1.3rem}.game-card span{color:var(--muted)}.game-card:active{transform:scale(.98)}.boards{grid-template-columns:repeat(auto-fill,minmax(min(100%,280px),1fr));gap:14px;display:grid}.board{background:var(--bg-2);border:1px solid var(--line);border-top:3px solid var(--accent);border-radius:var(--radius);padding:12px 14px}.board h3{color:var(--accent);margin:0 0 8px}.board ol{margin:0;padding:0;list-style:none}.board li{border-bottom:1px solid #ffffff0d;align-items:baseline;gap:10px;padding:6px 0;display:flex}.board li:last-child{border-bottom:0}.board li.is-me{color:var(--yellow);font-weight:700}.board__rank{width:1.8em;font-family:var(--mono);color:var(--muted)}.board li:first-child .board__rank{color:#ffd23d}.board li:nth-child(2) .board__rank{color:#d6d6e8}.board li:nth-child(3) .board__rank{color:#e0955a}.board__name{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.board__value{font-family:var(--mono);font-weight:700}.board__value small{color:var(--muted);font-weight:400}.board__empty{color:var(--muted);margin:0}body.is-game{overscroll-behavior:none;overflow:hidden}.game{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;flex-direction:column;display:flex;position:fixed;inset:0}.game__bar{padding:max(8px, env(safe-area-inset-top)) 12px 8px;border-bottom:1px solid var(--line);background:#0b0820cc;align-items:center;gap:12px;display:flex}.game__bar strong{color:var(--accent);flex:1}.game__best{font-family:var(--mono);color:var(--muted);font-size:.85rem}.game__mute{font:inherit;cursor:pointer;background:0 0;border:0;padding:4px;font-size:1.2rem}.game__back{text-align:center;width:36px;font-size:2rem;line-height:1;text-decoration:none}.game__stage{touch-action:none;flex:1;min-height:0;position:relative}.game__stage canvas{width:100%;height:100%;display:block;position:absolute;inset:0}.game__hud{pointer-events:none;padding-bottom:env(safe-area-inset-bottom);position:absolute;inset:0}.game__hud .controls{left:0;right:0;bottom:max(12px, env(safe-area-inset-bottom));pointer-events:auto;justify-content:space-between;padding:0 12px;display:flex;position:absolute}.game__hud .controls button{border:2px solid color-mix(in srgb, var(--accent) 70%, transparent);background:color-mix(in srgb, var(--accent) 18%, #0b0820aa);width:34vw;max-width:160px;height:76px;color:var(--text);touch-action:none;border-radius:18px;font-size:2rem}.game__hud .controls--single{justify-content:center}.game__hud .controls--single button{letter-spacing:.08em;width:70vw;max-width:320px;font-size:1.6rem;font-weight:900}.game__hud .controls button:disabled{opacity:.3}.game__hud .controls--fight{padding:0 8px}.game__hud .controls--fight>div{gap:6px;display:flex}.game__hud .controls--fight button{width:18vw;max-width:84px;height:72px;padding:0;font-size:1.6rem}.game__hud .controls--slim button{opacity:.75;height:56px;font-size:1.3rem}.game__hud .controls--pad>div{gap:10px;display:flex}.game__hud .controls--pad button{width:24vw;max-width:110px}.game__hud .controls--pad>button{width:28vw;max-width:130px}.game__hud .controls--stick{align-items:flex-end;padding:0 10px}.game__hud .controls--stick>div:last-child{gap:6px;display:flex}.game__hud .controls--stick button{width:19vw;max-width:90px;height:80px;padding:0}.game__hud .stick{aspect-ratio:1;border:2px solid color-mix(in srgb, var(--accent) 70%, transparent);background:color-mix(in srgb, var(--accent) 12%, #0b0820aa);touch-action:none;border-radius:50%;width:30vw;max-width:140px;position:relative}.game__hud .stick span{background:color-mix(in srgb, var(--accent) 55%, #fff2);pointer-events:none;border-radius:50%;position:absolute;inset:30%}.game__hud .controls button:active{background:color-mix(in srgb, var(--accent) 45%, #0b0820aa)}.game__hud .status{text-align:center;text-shadow:0 2px 6px #000;font-size:1.1rem;font-weight:800;position:absolute;top:12px;left:0;right:0}.overlay{z-index:10;text-align:center;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#0b0820e6;flex-direction:column;justify-content:center;align-items:center;gap:14px;padding:24px;display:flex;position:absolute;inset:0}.overlay[hidden]{display:none}.overlay h2{color:var(--accent);text-shadow:0 0 16px var(--accent);margin:0;font-size:2rem}.overlay p{max-width:26rem;color:var(--muted);margin:0;line-height:1.45}.big-score{font-family:var(--mono);font-size:3.5rem;font-weight:800;color:var(--text)!important}.big-score small{color:var(--muted);font-size:1.2rem}body.is-screen{overflow:hidden}.screen{grid-template-columns:minmax(280px,26vw) 1fr;gap:2vw;height:100dvh;padding:2vw;display:grid}.screen__join,.spectate__side{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:1.5vw;font-size:1.4vw;display:flex}.qr{aspect-ratio:1;background:#fff;border-radius:18px;width:100%;max-width:22vw;padding:4%;box-shadow:0 0 40px #ff3d7f66}.qr canvas,.qr img{display:block;width:100%!important;height:100%!important}.qr__url{font-family:var(--mono);color:var(--yellow);word-break:break-all;margin:0;font-size:1.6vw}.screen__boards{flex-direction:column;gap:1.2vw;min-width:0;display:flex;overflow:hidden}.screen__boards .board{font-size:1.2vw}.boards--screen{grid-template-columns:repeat(3,1fr)}.screen [data-board=global] .board ol{columns:2;column-gap:3vw}.screen [data-board=global] .board li{break-inside:avoid}.spectate{grid-template-columns:1fr minmax(260px,24vw);height:100dvh;display:grid}.spectate .game{height:100dvh;position:relative;inset:auto}@media (width<=800px){.screen,.spectate{grid-template-columns:1fr;height:auto}body.is-screen{overflow:auto}.boards--screen{grid-template-columns:1fr}.screen__join,.spectate__side,.screen__boards .board,.qr__url{font-size:1rem}.qr{max-width:60vw}}.tuto{z-index:5;border:2px solid color-mix(in srgb, var(--accent) 60%, transparent);text-align:center;pointer-events:none;background:#0b0820cc;border-radius:18px;width:min(84vw,340px);padding:14px 16px 16px;animation:.25s ease-out tuto-in;position:absolute;top:36%;left:50%;transform:translate(-50%)}.tuto[hidden]{display:none}.tuto p{margin:6px 0 0;font-weight:700}.tuto__hand{font-size:2.6rem;display:inline-block}.tuto__hand--tap{animation:.7s ease-in-out infinite tuto-tap}.tuto__hand--swipe-x{animation:1s ease-in-out infinite tuto-swipe-x}.tuto__hand--swipe-down{animation:.8s ease-in infinite tuto-swipe-down}.tuto__hand--drag{animation:1.4s linear infinite tuto-drag}.tuto__hand--tilt{animation:1.2s ease-in-out infinite tuto-tilt}@keyframes tuto-in{0%{opacity:0;transform:translate(-50%,10px)}}@keyframes tuto-tap{50%{transform:scale(.75)translateY(6px)}}@keyframes tuto-swipe-x{0%,to{transform:translate(-40px)}50%{transform:translate(40px)}}@keyframes tuto-swipe-down{0%{opacity:1;transform:translateY(-14px)}to{opacity:0;transform:translateY(26px)}}@keyframes tuto-drag{0%{transform:rotate(0)translate(24px)rotate(0)}to{transform:rotate(360deg)translate(24px)rotate(-360deg)}}@keyframes tuto-tilt{0%,to{transform:rotate(-25deg)}50%{transform:rotate(25deg)}}.announce{z-index:20;color:#fff;text-align:center;background:#0b0820ee;border:3px solid #ffd23d;border-radius:1.4vw;max-width:80vw;padding:1.2vw 2.4vw;font-size:2.4vw;font-weight:900;position:fixed;bottom:3vw;left:50%;transform:translate(-50%);box-shadow:0 0 40px #ffd23d88}.announce[hidden]{display:none}.announce--in{animation:.5s cubic-bezier(.2,1.6,.4,1) announce-in}@keyframes announce-in{0%{opacity:0;transform:translate(-50%)scale(.6)}}.pin-input{letter-spacing:.5em;font-variant-numeric:tabular-nums;width:8.5em}.hint--form{margin:0}.admin{gap:16px;max-width:40rem;margin:0 auto}.admin-head{justify-content:space-between;align-items:center;gap:12px;display:flex}.admin-status{border-radius:var(--radius);background:color-mix(in srgb, var(--accent) 20%, transparent);margin:0;padding:10px 14px}.admin-box{border:2px solid var(--line);border-radius:var(--radius);background:var(--bg-2);flex-direction:column;gap:10px;padding:14px;display:flex}.admin-box h2{margin:0;font-size:1.1rem}.admin-row{gap:8px;display:flex}.admin-row>:first-child{flex:1;min-width:0}.admin select,.admin .admin-row input{font:inherit;border-radius:var(--radius);border:2px solid var(--line);background:var(--bg);color:var(--text);padding:10px 12px;font-size:1rem}.btn--small{padding:10px 14px;font-size:1rem}.btn--danger{background:var(--danger)}.admin-table{border-collapse:collapse;width:100%}.admin-table th,.admin-table td{border-bottom:1px solid var(--line);text-align:left;padding:8px 6px}.admin-table th{color:var(--muted);font-size:.85rem;font-weight:600}.admin-pin{letter-spacing:.15em;font-family:ui-monospace,monospace;font-size:1.15rem}.admin-actions{justify-content:flex-end;gap:6px;display:flex}.admin-actions .btn{padding:6px 10px}.notice{border-radius:var(--radius);background:color-mix(in srgb, var(--danger) 18%, var(--bg-2));margin:0 0 14px;padding:12px 14px}.game-card--locked{opacity:.55;filter:grayscale(.7);border-style:dashed}.game-card--locked:active{transform:none}.admin-toggle label{align-items:center;gap:10px;font-weight:600;display:flex}.admin-toggle input[type=checkbox]{width:26px;height:26px;accent-color:var(--accent)}.qr-sheet{justify-items:center;gap:24px;padding:16px;display:grid}.qr-sheet__help{color:var(--muted)}.qr-card{border-radius:var(--radius);color:#0b0820;text-align:center;border:6px solid var(--accent);background:#fff;width:min(100%,18cm);padding:24px}.qr-card h2{margin:0;font-size:2.2rem}.qr-card p{margin:6px 0 16px}.qr-card .qr canvas{width:min(100%,12cm)!important;height:auto!important}.qr-card__foot{font-weight:600}@media print{body.is-print{background:#fff}.no-print{display:none}.qr-card{break-after:page;border-width:10px}}.badges{margin-bottom:8px}.badges .section-title small{color:var(--muted);margin-left:.4em;font-size:.8em;font-weight:600}.badges__list{flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none;display:flex}.badge{background:color-mix(in srgb, #ffd23d 18%, var(--bg-2));border:1px solid #ffd23d88;border-radius:999px;align-items:center;gap:6px;padding:6px 12px 6px 8px;font-size:.95rem;font-weight:600;display:inline-flex}.badge span{font-size:1.2rem}.badge--locked{background:var(--bg-2);border-color:var(--line);color:var(--muted);filter:grayscale();flex-wrap:wrap}.badge--locked small{flex-basis:100%;padding-left:28px;font-size:.8rem;font-weight:400}.badges__todo{margin-top:10px}.badges__todo summary{cursor:pointer;color:var(--muted);margin-bottom:8px}.link--button{font:inherit;cursor:pointer;background:0 0;border:0;margin-top:8px;text-decoration:underline}
