:root{--primary: #ffc24d;--accent: #ff5d7a;--green: #6fe06f;--bg: #16111f;--text: #fff4e9;--font-display: "Avenir Next", "Hiragino Maru Gothic ProN", "Hiragino Kaku Gothic ProN", system-ui, sans-serif}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#root{margin:0;padding:0;width:100%;height:100dvh;overflow:hidden;overscroll-behavior:none;background:var(--bg);color:var(--text);font-family:var(--font-display);user-select:none;-webkit-user-select:none}.app{position:fixed;top:0;right:0;bottom:0;left:0;background:radial-gradient(ellipse at 50% -10%,rgba(255,93,122,.18),transparent 55%),radial-gradient(ellipse at 50% 115%,rgba(255,194,77,.16),transparent 55%),var(--bg)}.page{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column}.overlay{background:#0a0612a8;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);align-items:center;justify-content:center;animation:fade-in .3s ease-out;pointer-events:auto;z-index:10}.safe-top{padding-top:calc(env(safe-area-inset-top,0px) + 12px)}.safe-bottom{padding-bottom:calc(env(safe-area-inset-bottom,0px) + 14px)}.btn{font-family:var(--font-display);font-size:17px;font-weight:800;letter-spacing:.12em;border:none;border-radius:14px;padding:14px 36px;min-height:52px;cursor:pointer;transition:transform .08s ease,filter .15s ease}.btn:active{transform:scale(.96)}.btn-primary{color:#3a1c00;background:linear-gradient(135deg,var(--primary),#ffe49a);box-shadow:0 0 18px #ffc24d80,0 6px 18px #00000059}.btn-ghost{color:var(--text);background:#ffffff14;border:1px solid rgba(255,244,233,.3)}.btn-link{background:none;border:none;color:var(--primary);font-size:12px;margin-left:8px;padding:6px;cursor:pointer;text-decoration:underline}.welcome-page{align-items:center;justify-content:center}.welcome-card{display:flex;flex-direction:column;align-items:center;gap:14px;padding:34px 30px;border-radius:22px;background:#1c1228c7;border:1px solid rgba(255,194,77,.32);box-shadow:0 0 50px #ff5d7a24;width:min(86vw,360px)}.welcome-logo{font-size:30px;font-weight:900;letter-spacing:.08em;color:var(--primary);text-shadow:0 0 14px rgba(255,194,77,.85),0 0 40px rgba(255,93,122,.4)}.welcome-neta{display:flex;justify-content:center;align-items:center;gap:8px}.welcome-neta-img{width:34px;height:34px;object-fit:contain;display:block}.welcome-heading{margin:0;font-size:15px;font-weight:600;opacity:.85}.welcome-name{font-size:22px;font-weight:800}.welcome-input{width:100%;font-size:18px;padding:12px 14px;border-radius:10px;border:1px solid rgba(255,244,233,.35);background:#00000052;color:var(--text);text-align:center;outline:none}.welcome-input:focus{border-color:var(--primary);box-shadow:0 0 12px #ffc24d59}.welcome-error{color:#ff9db1;font-size:13px}.welcome-enter{width:100%}.welcome-note{font-size:12px;opacity:.6}.title-page{justify-content:space-between;cursor:pointer}.title-top{display:flex;justify-content:space-between;align-items:center;padding-left:16px;padding-right:16px}.title-player{font-size:13px;opacity:.9}.title-best{font-size:13px;font-weight:700;color:var(--primary)}.title-center{display:flex;flex-direction:column;align-items:center;gap:8px}.title-neta{width:clamp(72px,22vw,128px);height:clamp(72px,22vw,128px);object-fit:contain;filter:drop-shadow(0 6px 16px rgba(0,0,0,.4));animation:bob 2.4s ease-in-out infinite}.title-logo{margin:0;font-size:clamp(38px,11vw,70px);font-weight:900;letter-spacing:.04em;line-height:1.05;color:var(--text);text-shadow:0 0 16px rgba(255,194,77,.6),0 4px 0 rgba(0,0,0,.25)}.title-logo-accent{color:var(--accent);text-shadow:0 0 16px rgba(255,93,122,.85),0 4px 0 rgba(0,0,0,.25)}.title-tagline{margin:2px 0 0;font-size:14px;letter-spacing:.22em;opacity:.85}.title-start{margin-top:22px;font-size:18px;font-weight:800;letter-spacing:.3em;color:var(--primary);animation:pulse 1.4s ease-in-out infinite}.title-bottom{display:flex;flex-direction:column;align-items:center;gap:12px}.title-hint{font-size:12px;opacity:.6;letter-spacing:.08em}.ranking{width:min(84vw,320px);background:#1c1228a8;border:1px solid rgba(255,194,77,.22);border-radius:14px;padding:12px 18px;font-size:13px}.ranking-title{text-align:center;font-weight:800;letter-spacing:.3em;font-size:11px;color:var(--primary);margin-bottom:8px}.ranking-row{display:flex;gap:10px;padding:3px 0}.ranking-pos{width:18px;text-align:right;color:var(--primary);font-weight:700}.ranking-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ranking-score{font-variant-numeric:tabular-nums;font-weight:700}.game-page{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column}.board-area{position:relative;flex:1;min-height:0}.board-canvas{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;display:block;touch-action:none}.hud{z-index:2;padding:calc(env(safe-area-inset-top,0px) + 10px) 14px 6px}.hud-top{display:flex;justify-content:space-between;align-items:center}.hud-level{font-size:13px;font-weight:800;letter-spacing:.1em;color:var(--primary);min-width:86px}.hud-level-max{opacity:.5;font-weight:700}.hud-best{font-size:12px;font-weight:700;opacity:.7;min-width:86px;text-align:right}.hud-score-block{text-align:center}.hud-score{font-size:clamp(28px,8vw,40px);font-weight:900;font-variant-numeric:tabular-nums;line-height:1.05;text-shadow:0 0 16px rgba(255,194,77,.5)}.hud-combo-slot{height:17px;display:flex;align-items:center;justify-content:center}.hud-combo{font-size:13px;font-weight:900;color:var(--accent);letter-spacing:.08em;animation:combo-pop .25s ease-out}.hud-timewrap{display:flex;align-items:center;gap:8px;margin-top:6px}.hud-timebar{position:relative;flex:1;height:14px;border-radius:8px;background:#0006;border:1px solid rgba(255,255,255,.12);overflow:hidden}.hud-timefill{height:100%;border-radius:8px;background:linear-gradient(90deg,var(--accent),var(--primary),var(--green));transition:width .12s linear}.hud-timebar.warn .hud-timefill{background:linear-gradient(90deg,#ff2d4d,#ff6b3d);animation:warnflash .5s ease-in-out infinite}.hud-timetext{font-size:16px;font-weight:900;font-variant-numeric:tabular-nums;min-width:34px;text-align:right}.hud-timetext.warn{color:#ff5a5a;animation:pulse .5s ease-in-out infinite}.hud-quota{display:flex;flex-wrap:wrap;justify-content:center;align-content:center;gap:6px;margin-top:8px;min-height:64px}.quota-chip{display:flex;align-items:center;gap:3px;padding:3px 8px 3px 5px;border-radius:999px;background:#0000004d;border:1px solid rgba(255,255,255,.1);font-size:12px;font-weight:800;font-variant-numeric:tabular-nums;transition:all .2s ease}.quota-chip.done{background:#6fe06f2e;border-color:var(--green);color:var(--green);box-shadow:0 0 10px #6fe06f59}.quota-img{width:20px;height:20px;object-fit:contain;display:block}.hud-bonus{position:absolute;top:40%;left:50%;transform:translate(-50%);font-size:24px;font-weight:900;letter-spacing:.06em;color:#fff;text-shadow:0 0 16px rgba(255,194,77,.9);animation:bonus-float .9s ease-out forwards;pointer-events:none;z-index:4}.hud-bonus.combo{color:var(--accent);text-shadow:0 0 16px rgba(255,93,122,.9)}.hud-bonus.levelup{color:var(--primary);font-size:30px;text-shadow:0 0 20px rgba(255,194,77,.95)}.hud-bonus.neta{color:var(--green);font-size:23px;text-shadow:0 0 16px rgba(111,224,111,.9)}.hud-countdown{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:clamp(72px,24vw,150px);font-weight:900;font-style:italic;color:var(--text);text-shadow:0 0 24px rgba(255,194,77,.9),0 0 90px rgba(255,93,122,.5);animation:count-pop .62s ease-out forwards;pointer-events:none;z-index:5}.hud-flash{position:absolute;top:0;right:0;bottom:0;left:0;background:#fff;animation:flash-out .4s ease-out forwards;pointer-events:none;z-index:3}.paused-card{text-align:center}.paused-title{font-size:28px;font-weight:900;letter-spacing:.2em}.paused-hint{margin-top:10px;font-size:14px;opacity:.75;animation:pulse 1.4s ease-in-out infinite}.gameover{pointer-events:auto}.gameover-card{display:flex;flex-direction:column;align-items:center;gap:8px;width:min(86vw,360px);padding:30px 26px;border-radius:22px;background:#1c1228d9;border:1px solid rgba(255,93,122,.4);box-shadow:0 0 60px #ff5d7a33;animation:rise-in .35s ease-out}.gameover-title{font-size:26px;font-weight:900;font-style:italic;letter-spacing:.12em;color:var(--accent);text-shadow:0 0 18px rgba(255,93,122,.7)}.gameover-record{font-size:15px;font-weight:900;letter-spacing:.22em;color:var(--primary);text-shadow:0 0 14px rgba(255,194,77,.85);animation:pulse .8s ease-in-out infinite}.gameover-score{font-size:52px;font-weight:900;font-variant-numeric:tabular-nums;line-height:1.05;text-shadow:0 0 22px rgba(255,194,77,.6)}.gameover-sub{font-size:13px;opacity:.85}.gameover-sub2{font-size:12px;opacity:.6}.gameover-rank{font-size:16px;color:var(--primary);margin-top:2px}.gameover-rank strong{font-size:24px}.gameover-rank-failed{color:#fff4e980;font-size:12px}.gameover-retry{width:100%;margin-top:12px}.overlay.gameover.cleared{background:radial-gradient(ellipse at 50% 30%,rgba(255,194,77,.22),transparent 60%),#0a0612b8}.gameover-card.cleared{border-color:var(--primary);box-shadow:0 0 70px #ffc24d59}.gameover-title.clear{color:var(--primary);font-style:normal;font-size:30px;letter-spacing:.08em;text-shadow:0 0 22px rgba(255,194,77,.9);animation:pulse 1s ease-in-out infinite}.gameover-clearmsg{font-size:14px;font-weight:700;opacity:.92}@keyframes pulse{0%,to{opacity:1}50%{opacity:.35}}@keyframes bob{0%,to{transform:translateY(0) rotate(-3deg)}50%{transform:translateY(-10px) rotate(3deg)}}@keyframes warnflash{0%,to{filter:brightness(1)}50%{filter:brightness(1.6)}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes rise-in{0%{opacity:0;transform:translateY(24px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes count-pop{0%{opacity:0;transform:translate(-50%,-50%) scale(1.7)}25%{opacity:1;transform:translate(-50%,-50%) scale(1)}80%{opacity:1}to{opacity:0;transform:translate(-50%,-50%) scale(.92)}}@keyframes combo-pop{0%{transform:scale(1.5)}to{transform:scale(1)}}@keyframes bonus-float{0%{opacity:0;transform:translate(-50%,14px) scale(.8)}20%{opacity:1;transform:translate(-50%) scale(1.1)}to{opacity:0;transform:translate(-50%,-40px) scale(1)}}@keyframes flash-out{0%{opacity:.5}to{opacity:0}}
