:root{--brand-bg: #0f0b1a;--brand-accent: #ff7a1a;--brand-text: #fff5e6;--brand-muted: #9b93a8;--font: "Segoe UI", system-ui, -apple-system, Roboto, "Helvetica Neue", Arial, sans-serif;--safe-top: env(safe-area-inset-top, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px)}*{box-sizing:border-box}html,body{margin:0;height:100%;background:var(--brand-bg);color:var(--brand-text);font-family:var(--font);overscroll-behavior:none}body{-webkit-tap-highlight-color:transparent;-webkit-text-size-adjust:100%}#app{height:100%}button{font:inherit}.topnav{position:fixed;top:0;left:0;right:0;z-index:20;display:flex;align-items:center;justify-content:space-between;padding:calc(6px + var(--safe-top)) 12px 6px;background:linear-gradient(#0000008c,#0000);pointer-events:none}.topnav>*{pointer-events:auto}.topnav .brand{font-weight:800;letter-spacing:.5px;text-decoration:none;color:var(--brand-text);font-size:15px}.topnav .brand b{color:var(--brand-accent);font-size:18px}.topnav nav{display:flex;gap:6px}.topnav a,.topnav button{color:var(--brand-text);background:#00000059;border:1px solid rgba(255,255,255,.15);border-radius:999px;padding:6px 10px;font-size:13px;text-decoration:none;cursor:pointer}.topnav a.active{background:var(--brand-accent);color:#1a0d00;border-color:transparent}body.playing .topnav{visibility:hidden}.feed{height:100dvh;overflow-y:scroll;overflow-x:hidden;scroll-snap-type:y mandatory;scrollbar-width:none;-webkit-overflow-scrolling:touch}.feed::-webkit-scrollbar{display:none}.feed-item{position:relative;height:100dvh;width:100%;scroll-snap-align:start;scroll-snap-stop:always;background:var(--bg, var(--brand-bg));color:var(--text, var(--brand-text));overflow:hidden;user-select:none;-webkit-user-select:none}.placeholder{height:100%;display:grid;place-items:center;text-align:center;opacity:.6}.placeholder h2{margin:0 0 6px}.stage{position:absolute;inset:0}.game-canvas{position:absolute;display:block;touch-action:pan-y;background:var(--bg)}.hud{position:absolute;left:var(--stage-x, 0);top:var(--stage-y, 0);width:var(--stage-w, 100%);pointer-events:none;z-index:5}.hud:not(.playing) .hud-row{visibility:hidden}.hud-row{display:flex;align-items:center;gap:10px;padding:calc(10px + var(--safe-top)) 12px 0;font-weight:700;font-size:18px;text-shadow:0 1px 2px rgba(0,0,0,.6)}.hud-score{display:flex;align-items:baseline;gap:6px}.hud-label{font-size:11px;font-weight:600;opacity:.75;text-transform:uppercase;letter-spacing:.5px}.hud-mid{flex:1;text-align:center;font-size:14px;opacity:.9}.hud-right{display:flex;gap:10px;font-variant-numeric:tabular-nums}.hud-exit{pointer-events:auto;width:34px;height:34px;border-radius:50%;border:1px solid rgba(255,255,255,.3);background:#0006;color:#fff;cursor:pointer}.hud-toast{position:absolute;left:50%;top:32%;transform:translate(-50%,-50%);padding:10px 18px;border-radius:999px;background:#0009;color:#fff;font-weight:800;font-size:22px;opacity:0}.hud-toast.show{animation:toast 1.2s ease-out forwards}@keyframes toast{0%{opacity:0;transform:translate(-50%,-30%) scale(.8)}15%{opacity:1;transform:translate(-50%,-50%) scale(1.05)}80%{opacity:1}to{opacity:0;transform:translate(-50%,-70%)}}.overlay{position:absolute;inset:0;display:grid;place-items:center;z-index:6;background:#00000073;backdrop-filter:blur(2px);touch-action:pan-y}.overlay[hidden]{display:none}.overlay-card{width:min(88vw,340px);text-align:center;padding:22px 18px;border-radius:20px;background:#0a0612bf;border:1px solid rgba(255,255,255,.12);box-shadow:0 10px 40px #0006}.game-title{margin:0 0 8px;font-size:26px;line-height:1.15;color:var(--accent, var(--brand-accent))}.game-hint{margin:0 0 18px;font-size:15px;opacity:.9}.over-label{margin:0;text-transform:uppercase;letter-spacing:2px;font-size:12px;opacity:.7}.over-score{font-size:64px;font-weight:900;line-height:1;color:var(--accent, var(--brand-accent));margin:6px 0}.over-best{margin:0 0 16px;font-size:14px;opacity:.85}.over-actions{display:flex;flex-wrap:wrap;gap:8px;justify-content:center}.swipe-hint{margin:18px 0 0;font-size:12px;opacity:.6;animation:bob 1.6s ease-in-out infinite}@keyframes bob{0%,to{transform:translateY(0)}50%{transform:translateY(-4px)}}.btn{pointer-events:auto;cursor:pointer;border:1px solid rgba(255,255,255,.2);border-radius:999px;padding:12px 18px;font-size:15px;font-weight:700;background:#ffffff1a;color:var(--brand-text);min-height:44px}.btn:active{transform:scale(.97)}.btn-primary{background:var(--accent, var(--brand-accent));color:#1a0d00;border-color:transparent}.btn-start{font-size:18px;padding:14px 28px}.btn.is-liked{color:#ff4d6d;border-color:#ff4d6d}.btn:disabled{opacity:.8;cursor:default}.btn:focus-visible,.topnav a:focus-visible{outline:3px solid var(--brand-accent);outline-offset:2px}.page{max-width:760px;margin:0 auto;padding:calc(56px + var(--safe-top)) 16px calc(32px + var(--safe-bottom));min-height:100dvh}.page h1{margin:0 0 12px;font-size:28px}.page h2{font-size:18px;margin:24px 0 8px}.page p,.page li{line-height:1.55}.page a{color:var(--brand-accent)}.muted{color:var(--brand-muted)}.search{width:100%;padding:12px 14px;border-radius:12px;border:1px solid rgba(255,255,255,.15);background:#ffffff0f;color:inherit;font-size:16px}.chips{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0}.chip{border-radius:999px;padding:6px 12px;border:1px solid rgba(255,255,255,.15);background:transparent;color:inherit;font-size:13px;cursor:pointer}.chip.active{background:var(--brand-accent);color:#1a0d00;border-color:transparent}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px}.card{display:block;text-decoration:none;color:inherit;border-radius:16px;overflow:hidden;background:var(--bg);border:1px solid rgba(255,255,255,.1)}.card .thumb{aspect-ratio:1 / 1.2;display:grid;place-items:center;font-size:42px;background:linear-gradient(160deg,#ffffff1f,#00000040);color:var(--accent)}.card .thumb img{width:100%;height:100%;object-fit:cover}.card .meta{padding:10px}.card .meta b{display:block;font-size:14px}.card .meta small{color:var(--brand-muted)}.ranklist{display:grid;gap:6px;padding:0;margin:0;list-style:none}.ranklist li{display:flex;justify-content:space-between;padding:8px 10px;border-radius:10px;background:#ffffff0d}.ranklist a{color:inherit;text-decoration:none}.rotate-warn{display:none}@media (orientation: landscape) and (max-height: 500px){.rotate-warn{display:grid;position:fixed;inset:0;z-index:50;place-items:center;background:var(--brand-bg);font-size:18px;text-align:center;padding:20px}}@media (prefers-reduced-motion: reduce){.swipe-hint,.hud-toast.show{animation:none;opacity:1}.feed{scroll-behavior:auto}}.game-id{display:inline-block;font-weight:800;font-size:12px;padding:2px 7px;border-radius:999px;background:#ffffff24;color:var(--accent, var(--brand-accent));letter-spacing:.3px}.card .game-id{font-size:11px;padding:1px 6px;margin-right:2px}.level-line{margin:-6px 0 16px;font-size:14px;opacity:.95}.level-chip{display:inline-block;margin-right:6px;padding:2px 9px;border-radius:999px;background:var(--accent, var(--brand-accent));color:#1a0d00;font-weight:800;font-size:12px}.over-actions.small{margin-top:10px}.over-actions.small .btn{padding:8px 14px;font-size:13px;min-height:36px}.over-cause{margin:-8px 0 14px;color:#ff8a8a;font-weight:700;font-size:14px}.level-result{margin:4px 0 2px;font-size:22px}.level-passed .level-result{color:#8cff9c}.level-failed .level-result{color:#ffb4a8}.stars{color:#ffd23f;letter-spacing:2px}.stars .off{color:#fff3}.big-stars{font-size:34px;line-height:1;margin:6px 0}.levels-title{margin:0 0 12px;font-size:20px}.level-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;margin-bottom:14px}.level-cell{display:flex;flex-direction:column;align-items:center;gap:2px;padding:8px 0;border-radius:12px;border:1px solid rgba(255,255,255,.18);background:#ffffff12;color:inherit;cursor:pointer;font:inherit}.level-cell b{font-size:18px}.level-cell .stars{font-size:10px;letter-spacing:0}.level-cell.current{border-color:var(--accent, var(--brand-accent));box-shadow:0 0 0 2px var(--accent, var(--brand-accent)) inset}.level-cell:disabled{opacity:.45;cursor:default}.hud-flash{position:absolute;left:0;top:0;width:var(--stage-w, 100%);height:var(--stage-h, 100dvh);pointer-events:none;box-shadow:inset 0 0 #ff282800}.hud-flash.on{animation:hitflash .45s ease-out}@keyframes hitflash{0%{box-shadow:inset 0 0 60px 30px #ff2828bf}to{box-shadow:inset 0 0 #ff282800}}.tut-card{width:min(92vw,360px)}.tut-stage{position:relative;height:150px;margin:6px 0 10px;display:grid;place-items:center;border-radius:16px;background:#ffffff0f;overflow:hidden}.tut-pics{display:flex;gap:10px;align-items:center;justify-content:center}.tut-pic{position:relative;display:grid;place-items:center;width:84px;height:84px;border-radius:14px;background:#00000040}.tut-pic img{max-width:72px;max-height:72px;object-fit:contain}.tut-pic.noimg{display:none}.tut-pic.good:after,.tut-pic.bad:after{position:absolute;right:-6px;top:-6px;width:26px;height:26px;border-radius:50%;display:grid;place-items:center;font-weight:900;font-size:15px;color:#fff}.tut-pic.good:after{content:"✓";background:#23b25a}.tut-pic.bad:after{content:"✕";background:#e0383e}.tut-text{margin:0 0 10px;font-size:16px;line-height:1.4;min-height:44px}.tut-dots{display:flex;gap:6px;justify-content:center;margin-bottom:12px}.tut-dots i{width:7px;height:7px;border-radius:50%;background:#ffffff40}.tut-dots i.on{background:var(--accent, var(--brand-accent))}.tut-gesture{position:absolute;inset:0;pointer-events:none}.tut-gesture .hand{position:absolute;left:50%;top:58%;font-size:40px;transform:translate(-50%);filter:drop-shadow(0 2px 4px rgba(0,0,0,.6))}.g-tap .hand{animation:g-tap 1.1s ease-in-out infinite}.g-hold .hand{animation:g-hold 1.8s ease-in-out infinite}.g-tap-tap .hand{animation:g-taptap 2s ease-in-out infinite}.g-drag-x .hand{animation:g-dragx 2s ease-in-out infinite}.g-drag-line .hand{animation:g-dragline 2s ease-in-out infinite}.g-swipe-up .hand{animation:g-swipe 1.4s ease-in infinite}@keyframes g-tap{0%,to{transform:translate(-50%) scale(1)}45%{transform:translate(-50%,-6px) scale(.85)}}@keyframes g-hold{0%{transform:translate(-50%) scale(1)}20%,80%{transform:translate(-50%,-6px) scale(.82)}to{transform:translate(-50%) scale(1)}}@keyframes g-taptap{0%{transform:translate(-130%)}15%{transform:translate(-130%,-6px) scale(.85)}30%{transform:translate(-130%)}55%{transform:translate(30%)}70%{transform:translate(30%,-6px) scale(.85)}to{transform:translate(30%)}}@keyframes g-dragx{0%,to{transform:translate(-150%)}50%{transform:translate(50%)}}@keyframes g-dragline{0%{transform:translate(-150%,-40px)}70%,to{transform:translate(50%,10px)}}@keyframes g-swipe{0%{transform:translate(-50%,20px);opacity:1}to{transform:translate(-50%,-60px);opacity:0}}@media (prefers-reduced-motion: reduce){.tut-gesture .hand{animation:none!important}}
