*{margin:0;padding:0;box-sizing:border-box}body{font-family:Hiragino Sans,Noto Sans JP,sans-serif;background:#0a0a1a;color:#fff;min-height:100dvh;display:flex;justify-content:center;align-items:center;overscroll-behavior:contain}#app{width:100%;max-width:800px;height:100dvh;max-height:800px;position:relative;z-index:1;overflow:hidden}body.in-menu{align-items:safe center}body.in-menu #app{height:auto;max-height:none;min-height:100dvh;overflow:visible}@media (max-height: 600px){body.in-menu .title-screen{padding:16px 20px 12px}body.in-menu .brand-logo{width:min(180px,50vw);margin:0 auto 6px}body.in-menu .title-sub{font-size:12px;margin-top:0;margin-bottom:12px}body.in-menu .mode-select{margin-top:8px}body.in-menu .choice-btn{padding:6px 14px;font-size:14px}body.in-menu .mode-links{margin-top:14px}}.title-screen{text-align:center;padding:56px 20px 40px}.brand-logo{display:block;width:min(260px,62vw);height:auto;margin:0 auto 12px;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.title-logo{font-size:72px;font-weight:700;color:#a78bfa;margin-bottom:16px}.title-sub{font-size:14px;color:#818cf8;margin-top:4px;margin-bottom:32px;letter-spacing:.05em}.title-prompt{display:flex;justify-content:center;gap:12px;margin-bottom:24px}.title-char{font-size:36px;font-weight:700;color:#444;transition:color .2s}.title-char.done{color:#a78bfa}.title-hint{font-size:14px;color:#8a8a90}.title-name-prompt{font-size:18px;color:#d4d4d8;margin-bottom:24px}.title-name-input{font-size:32px;font-weight:700;margin-bottom:16px;min-height:48px}.title-name-text{color:#a78bfa}.title-name-romaji{color:#888;font-family:monospace;font-size:24px}.title-name-cursor{color:#a78bfa;font-weight:400;font-size:32px;animation:cursorBlink 2s ease-in-out infinite}@keyframes cursorBlink{0%,to{opacity:1}50%{opacity:.4}}.match-screen{text-align:center;padding:80px 20px}.match-theme{font-size:20px;color:#aaa}.countdown{display:flex;align-items:center;justify-content:center;height:100%;font-size:96px;font-weight:700;color:#a78bfa;animation:countPulse .5s ease-out}.countdown.go{color:#4ade80}@keyframes countPulse{0%{transform:scale(1.5);opacity:0}to{transform:scale(1);opacity:1}}.game-screen{height:100%;display:flex;flex-direction:column;position:relative;transition:background 1s ease;padding-top:32px}.game-header{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;padding:8px 16px;font-size:14px;color:#aaa;flex-shrink:0;border-bottom:1px solid #222}.game-lives{font-size:18px;color:#facc15;text-align:left}.game-theme{text-align:center}.game-theme-stage{font-size:12px;color:#999;font-variant-numeric:tabular-nums;margin-right:2px}.game-score{font-weight:700;color:#fff;text-align:right;font-variant-numeric:tabular-nums;min-width:80px}.game-field{flex:1;position:relative;overflow:hidden;min-height:200px;z-index:1}.field-word{position:absolute;padding:6px 12px;border:2px solid #fff;border-radius:8px;background:#0a0a1acc;transition:border-color .2s;z-index:2;white-space:nowrap}.border-line{position:absolute;top:0;bottom:0;width:2px;background:#ef444499;box-shadow:0 0 8px #ef444466;z-index:1}.field-word.word-glow{box-shadow:0 0 12px currentColor}.field-word.word-collision-flash{animation:wordCollisionFlash .35s ease-out}@keyframes wordCollisionFlash{0%{box-shadow:0 0 #78dcffb3}30%{box-shadow:0 0 12px 2px #78dcff73}to{box-shadow:0 0 20px #78dcff00}}#hit-flash{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:50;opacity:0;background:radial-gradient(ellipse at center,#00000080,#780a0abf)}#hit-flash.active.soft{animation:hitFlashSoft .18s ease-out}#hit-flash.active.strong{animation:hitFlashStrong .4s ease-out}#hit-flash.active.collision{background:radial-gradient(ellipse at center,#0000 68%,#78dcff4d);animation:hitFlashCollision .35s ease-out}@keyframes hitFlashSoft{0%{opacity:0}30%{opacity:.5}to{opacity:0}}@keyframes hitFlashStrong{0%{opacity:0}15%{opacity:.9}to{opacity:0}}@keyframes hitFlashCollision{0%{opacity:0}25%{opacity:1}to{opacity:0}}.word-display{font-size:18px;font-weight:700}.word-romaji{font-size:15px;color:#888;font-family:monospace}.game-digest{display:flex;gap:8px;padding:8px 16px;height:43px;flex:0 0 43px;overflow-x:auto;align-items:center}.digest-word{font-size:13px;padding:2px 8px;border:1px solid;border-radius:4px;white-space:nowrap;display:inline-flex;align-items:center;gap:4px}.digest-word.cheer-stage-1{border-color:#fbbf24!important;box-shadow:0 0 6px #fbbf2480}.digest-word.cheer-stage-2{border-color:#f9a8d4!important;animation:digestRainbowPulse 1.2s ease-in-out infinite}.digest-word.cheer-stage-3{border-color:#fbbf24!important;animation:digestCheerFinal 1s ease-in-out infinite}@keyframes digestRainbowPulse{0%,to{box-shadow:0 0 8px #fbbf2499}50%{box-shadow:0 0 14px #f9a8d4cc}}@keyframes digestCheerFinal{0%,to{transform:rotate(0) scale(1);box-shadow:0 0 10px #fbbf24b3}25%{transform:rotate(-3deg) scale(1.06);box-shadow:0 0 16px #f9a8d4e6}75%{transform:rotate(3deg) scale(1.06);box-shadow:0 0 16px #7dd3fce6}}.cheer-dots{display:inline-flex;gap:2px;margin-left:4px}.cheer-dot{width:6px;height:6px;border-radius:50%;background:#ffffff26;display:inline-block}.cheer-dot.on{background:#fbbf24;box-shadow:0 0 4px #fbbf24e6}.cheer-dot.on.single{background:#fbbf24}@keyframes digestIn{0%{transform:scale(0);opacity:0}to{transform:scale(1);opacity:1}}.game-candidates{display:flex;gap:8px;padding:4px 16px;height:68px;min-height:68px;max-height:68px;flex:0 0 68px;align-items:center;overflow:hidden}.candidate{padding:4px 12px;border:2px solid;border-radius:6px;opacity:.6}.candidate.confirmed{opacity:1;box-shadow:0 0 8px currentColor}.candidate-hiragana{font-size:14px}.candidate-romaji{font-size:15px;font-family:monospace}.romaji-done{color:#4ade80;font-weight:700}.romaji-remain{color:#666}.game-status{display:flex;padding:12px 16px;gap:16px;flex-shrink:0}.player-status{flex:1;font-size:13px;position:relative;z-index:1}.player-status.right{text-align:right}.chat-history{flex:1;display:flex;flex-direction:column;justify-content:flex-end;gap:2px;padding:0 8px;overflow:hidden;max-height:80px}.chat-msg{font-size:12px;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.status-name{font-weight:700;font-size:14px;margin-bottom:2px}.status-name.lv-pulse{animation:lvPulse 1.5s ease-in-out infinite}@keyframes lvPulse{0%,to{opacity:1}50%{opacity:.5;text-shadow:0 0 8px currentColor}}.status-combo{color:#facc15;font-size:12px;height:16px;line-height:16px}.status-score{font-size:16px;font-weight:700;font-variant-numeric:tabular-nums}.status-input{margin-top:4px;font-size:13px}.input-buffer{color:#667eea;font-family:monospace;font-size:16px}.input-cursor{animation:blink .5s infinite}.input-hint{color:#555;font-size:11px}.msg-label{color:#4ade80}.msg-buffer{color:#4ade80;font-size:16px}.msg-romaji{color:#86efac;font-family:monospace;font-size:14px;opacity:.7}.msg-cursor{color:#4ade80;animation:blink .5s infinite}.msg-hint{color:#555;font-size:11px}.frozen-label{color:#f87171;font-weight:700}.freeze-bar{width:100%;height:6px;background:#222;border-radius:3px;margin-top:4px;overflow:hidden}.freeze-bar-fill{height:100%;background:linear-gradient(90deg,#f87171,#fb923c);border-radius:3px;transition:width .1s linear}.freeze-hint{font-size:11px;color:#fb923c;margin-top:2px}.health{font-size:14px;display:inline-flex;align-items:center;gap:1px;line-height:1}.health .heart{display:inline-block;width:14px;height:14px;line-height:14px;text-align:center;font-size:14px;overflow:hidden;vertical-align:middle}@keyframes blink{0%,to{opacity:1}50%{opacity:0}}.floating-message{position:absolute;padding:6px 14px;background:#4ade8026;border:1px solid #4ade80;border-radius:16px;color:#4ade80;font-size:15px;font-weight:700;white-space:nowrap;pointer-events:none;z-index:10;transition:none}.floating-message.arrived{background:#4ade8040;box-shadow:0 0 12px #4ade8066}.floating-cheer{position:absolute;left:50%;font-size:28px;text-align:center;white-space:nowrap;pointer-events:none;z-index:10;text-shadow:0 2px 6px rgba(0,0,0,.6),0 0 10px rgba(251,191,36,.5);line-height:1;transform-origin:center bottom}.floating-cheer.lv-2{text-shadow:0 2px 6px rgba(0,0,0,.6),0 0 12px rgba(249,168,212,.7)}.floating-cheer.lv-3{text-shadow:0 2px 8px rgba(0,0,0,.7),0 0 18px rgba(251,191,36,.9),0 0 28px rgba(249,168,212,.6)}.floating-score{position:absolute;font-size:18px;font-weight:700;pointer-events:none;z-index:10;text-shadow:0 0 6px currentColor;font-family:monospace}.notif-banner{display:flex;align-items:center;justify-content:center;gap:8px;height:28px;flex-shrink:0;font-size:14px;font-weight:700;border-bottom:1px solid transparent;background:transparent;transition:none}.notif-banner:has(.notif-icon){background:#0006;border-bottom-color:currentColor;box-shadow:0 2px 8px #0000004d}.notif-icon{font-size:16px}.notif-text{color:inherit}.gameover-screen{text-align:center;padding:20px}.gameover-title{font-size:36px;font-weight:700;color:#a78bfa;margin-bottom:16px}.gameover-journey{margin-bottom:16px;display:flex;flex-direction:column;align-items:center;gap:8px}.gameover-journey-meta{font-size:14px;color:#888;letter-spacing:.04em}.gameover-theme-chips{display:flex;flex-wrap:wrap;justify-content:center;gap:6px;max-width:520px}.theme-chip{display:inline-block;padding:6px 14px;border-radius:14px;border:1px solid;font-size:13px;font-weight:600;color:#fff;letter-spacing:.05em;text-shadow:0 1px 2px rgba(0,0,0,.5);line-height:1.2;white-space:nowrap}.gameover-score{font-size:24px;font-weight:700;margin-bottom:24px}.gameover-stats{font-size:16px;color:#aaa;margin-bottom:16px;line-height:1.8}.gameover-cards{margin-bottom:16px}.gameover-body{display:flex;gap:24px;align-items:flex-start;flex-wrap:wrap;justify-content:center;margin:20px auto;max-width:1100px}.gameover-main{flex:1 1 540px;min-width:0}.ad-slot{display:flex;align-items:center;justify-content:center;border:1px dashed #555;border-radius:8px;color:#888;font-size:12px;text-align:center;background:#ffffff08;line-height:1.6}.ad-slot-label{letter-spacing:.08em}.gameover-ad-slot{flex:0 0 300px;min-height:250px}.gameover-actions{margin-top:24px}.gameover-new-badges{margin-bottom:12px}.new-badge-title{font-size:16px;font-weight:700;color:#facc15;margin-bottom:8px}.gameover-badges-label{font-size:12px;color:#666;margin-bottom:8px}.gameover-badges{display:flex;justify-content:center;gap:8px;flex-wrap:wrap;margin-bottom:16px}.badge-item{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;border:1px solid;border-radius:16px;font-size:13px;background:#ffffff0d}.badge-tier{font-size:11px;margin-left:4px}.badge-equippable{cursor:pointer;transition:box-shadow .2s,opacity .2s;opacity:.5}.badge-equippable:hover{opacity:.8}.badge-equipped{opacity:1;box-shadow:0 0 8px currentColor}.match-badges{display:flex;justify-content:center;gap:4px;margin-top:4px}.match-badge{display:inline-flex;padding:2px 6px;border:1px solid;border-radius:12px;font-size:14px}.match-cards{display:flex;justify-content:center;align-items:stretch;gap:16px;margin-bottom:20px}.stat-card{flex:1;max-width:220px;background:linear-gradient(180deg,#222850,#0f1030);border:1px solid #332f5c;border-radius:10px;padding:16px 14px;text-align:center}.stat-card-avatar{width:48px;height:48px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:22px;margin:0 auto 6px;color:#fff}.stat-card-name{font-size:15px;font-weight:700;color:#e8e8e8;margin-bottom:10px}.stat-card-rows{display:flex;flex-direction:column;gap:6px;text-align:left}.stat-card-empty{color:#666;font-size:12px;text-align:center;padding:12px 0}.stat-row{display:grid;grid-template-columns:70px 24px 1fr;align-items:center;gap:8px;padding:4px 6px;font-size:13px}.stat-label{color:#9ca3af;font-size:11px;letter-spacing:.03em}.stat-grade{font-weight:900;font-size:18px;text-align:center;font-family:Hiragino Mincho ProN,Yu Mincho,serif;line-height:1;text-shadow:0 1px 2px rgba(0,0,0,.6)}.stat-value{font-weight:700;font-size:15px;color:#fff;font-variant-numeric:tabular-nums;text-align:right}.stat-row-type{grid-template-columns:70px 1fr}.stat-row-type .stat-value,.stat-row-type .stat-grade{display:none}.stat-type-code{font-weight:700;font-size:13px;color:#60a5fa;font-family:monospace;letter-spacing:.08em}.stat-type-name{font-size:12px;color:#666;grid-column:1 / -1;text-align:right;margin-top:-2px}.match-ampersand{align-self:center;font-size:32px;color:#a78bfa;font-weight:700}.match-badges{display:flex;justify-content:center;gap:4px;margin-bottom:6px}.match-badge{width:24px;height:24px;border-radius:50%;border:1px solid;display:inline-flex;align-items:center;justify-content:center;font-size:13px;background:#0000004d}.choice-btn{display:flex;align-items:center;gap:8px;padding:12px 24px;border:2px solid #333;border-radius:8px;cursor:pointer;transition:border-color .2s,background .2s;font-size:16px}.choice-btn:hover,.choice-btn.active{border-color:#a78bfa;background:#a78bfa1a}.choice-btn.disabled{opacity:.45;cursor:not-allowed}.choice-btn.disabled:hover,.choice-btn.disabled.active{border-color:#333;background:transparent}.choice-cursor{color:#a78bfa}.coming-soon-badge{margin-left:8px;font-size:12px;color:#aaa;font-weight:400}.com-picker-body{display:flex;align-items:center;justify-content:center;gap:24px;margin:32px 0 24px}.com-picker-arrow{background:transparent;border:none;color:#888;font-size:32px;cursor:pointer;padding:8px 12px;transition:color .15s}.com-picker-arrow:hover{color:#fff}.com-picker-char{min-width:180px;text-align:center}.com-picker-emoji{font-size:56px;line-height:1}.com-picker-name{font-size:22px;margin-top:10px;font-weight:700}.com-picker-greeting{font-size:13px;color:#999;margin-top:6px}.com-picker-start{justify-content:center;margin:0 auto;min-width:220px}.theme-dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:6px;vertical-align:middle}:root{--meter-bottom: 257px;--meter-left: 22px}.coop-gauge{position:absolute;bottom:var(--meter-bottom);left:var(--meter-left);display:flex;flex-direction:column;align-items:center;gap:4px;z-index:0;pointer-events:none}.coop-meter-svg{filter:drop-shadow(0 2px 6px rgba(0,0,0,.5))}.coop-meter-num{font-size:11px;color:#fff;font-family:monospace;text-shadow:0 1px 2px rgba(0,0,0,.9)}:root{--chat-col-left: 35%;--chat-col-right: 35%;--chat-bottom: 111px;--chat-hint-bottom: 16px;--modal-bottom: 273px;--kbguide-bottom: 10px;--kbguide-scale: 1;--stamp-display-size: 100px}.chat-timeline{position:absolute;left:var(--chat-col-left);right:var(--chat-col-right);top:0;bottom:var(--chat-bottom);display:flex;flex-direction:column;justify-content:flex-end;gap:4px;padding-bottom:4px;pointer-events:none;z-index:0;overflow:hidden;-webkit-mask-image:linear-gradient(to bottom,rgba(0,0,0,.1) 0%,rgba(0,0,0,.3) 30%,rgba(0,0,0,.7) 70%,rgba(0,0,0,1) 90%);mask-image:linear-gradient(to bottom,#0000001a,#0000004d 30%,#000000b3 70%,#000 90%)}.chat-tab-hint{position:absolute;left:0;right:0;bottom:var(--chat-hint-bottom);display:flex;justify-content:center;font-size:12px;color:#ccc;pointer-events:none;z-index:0;letter-spacing:.05em}.chat-tab-hint .hint-pill{display:inline-block;padding:3px 12px;border-radius:12px;background:#0a0a1e8c;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);border:1px solid rgba(255,255,255,.08);text-shadow:0 1px 2px rgba(0,0,0,.7)}.chat-tab-hint.emphasized{color:#fce7f3;font-weight:700;font-size:14px;animation:tabHintPulse 1.2s ease-in-out infinite}.chat-tab-hint.emphasized .hint-pill{background:#db27778c;border-color:#f9a8d499;text-shadow:0 1px 3px rgba(0,0,0,.95),0 0 6px rgba(249,168,212,.5)}@keyframes tabHintPulse{0%,to{opacity:.75;transform:translateY(0)}50%{opacity:1;transform:translateY(-2px)}}.kbd-key{display:inline-block;padding:.12em .5em;margin:0 .2em;background:#ffffff0f;border:1px solid currentColor;border-bottom-width:1.5px;border-radius:4px;font-family:SF Mono,Menlo,monospace;font-size:.82em;font-weight:700;color:inherit;opacity:.85;line-height:1;vertical-align:middle;letter-spacing:0;min-width:.9em;text-align:center;position:relative;top:-.05em}.chat-tl-item{flex-shrink:0;padding:1px 0;font-size:16px;font-weight:700;text-shadow:0 1px 3px rgba(0,0,0,.8);animation:chatSlideIn .32s cubic-bezier(.22,.75,.28,1) both}@keyframes chatSlideIn{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}.chat-tl-item.chat-left{text-align:left}.chat-tl-item.chat-right{text-align:right}.chat-tl-bubble{display:inline-block;padding:4px 12px;background:#00000080;border:1px solid;border-radius:14px;max-width:95%;word-break:break-all}.chat-left .chat-tl-bubble{border-bottom-left-radius:4px}.chat-right .chat-tl-bubble{border-bottom-right-radius:4px}.chat-stamp-img{width:var(--stamp-display-size);height:var(--stamp-display-size);object-fit:cover;vertical-align:middle;border-radius:12px;box-shadow:0 1px 4px #0006}.stamp-image{image-rendering:auto;object-fit:contain}.chat-history-placeholder{flex:1}.msg-modal-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:#0000001f;z-index:20;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;padding-bottom:var(--modal-bottom);pointer-events:none}.msg-modal-wrap{position:relative;width:65%;max-width:500px}.msg-modal{width:100%;background:#0a0a1ee0;border:1px solid rgba(255,255,255,.2);border-radius:14px;padding:10px 20px;box-shadow:0 8px 32px #0009,0 0 60px #667eea26;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);box-sizing:border-box}.msg-modal-content{font-size:22px;color:#fff;font-family:Hiragino Sans,sans-serif;min-height:30px;display:flex;align-items:center}.msg-modal-text{color:#fff}.msg-modal-romaji{color:#667eea;font-size:20px;margin-left:2px}.msg-modal-cursor{color:#667eea;font-weight:700;opacity:.8}.msg-modal-hint{margin-top:8px;font-size:12px;color:#888;text-align:center}.ime-candidates{position:absolute;top:100%;left:0;right:0;background:#0a0a1eeb;border:1px solid rgba(255,255,255,.18);border-top:none;border-radius:0 0 14px 14px;padding:8px 10px;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);display:flex;flex-direction:row;justify-content:center;gap:6px;margin-top:-1px;box-shadow:0 8px 24px #00000080;box-sizing:border-box}.ime-candidate{position:relative;display:flex;flex-direction:column;align-items:center;gap:2px;width:56px;padding:3px;border-radius:8px;border:1px solid transparent;background:transparent;transition:background .12s,border-color .12s,transform .12s}.ime-candidate.selected{background:#667eea47;border-color:#667eeab3;box-shadow:0 0 8px #667eea66;transform:translateY(-1px) scale(1.03)}.ime-candidate-num{position:absolute;top:-4px;left:-4px;width:16px;height:16px;display:flex;align-items:center;justify-content:center;background:#3c3c5af2;color:#ccc;font-size:10px;font-weight:700;font-family:monospace;border-radius:50%;z-index:2}.ime-candidate.selected .ime-candidate-num{background:#667eea;color:#fff}.ime-candidate-thumb{width:46px;height:46px;object-fit:cover;border-radius:6px}.ime-candidate-thumb-text{display:flex;align-items:center;justify-content:center;font-size:28px;background:#60a5fa2e;border:1px dashed rgba(96,165,250,.5)}.ime-candidate.ime-candidate-text.selected .ime-candidate-thumb-text{background:#60a5fa59;border-style:solid}.ime-candidate.ime-candidate-text .ime-candidate-name{color:#ccc}.ime-candidate-name{font-size:10px;line-height:14px;height:14px;color:#aaa;font-family:Hiragino Sans,sans-serif;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:54px}.ime-candidate.selected .ime-candidate-name{color:#fff}.msg-modal.with-candidates{border-radius:14px 14px 0 0;border-bottom:1px solid rgba(255,255,255,.1)}.field-word.word-bonus{border-color:#fbbf24!important;background:linear-gradient(135deg,#fbbf2440,#f59e0b26);box-shadow:0 0 16px #fbbf24b3,0 0 32px #fbbf2466;animation:bonusGlow 1.5s ease-in-out infinite}.field-word.word-bonus .word-display{color:#fef3c7;text-shadow:0 0 8px rgba(251,191,36,.9)}.field-word.word-bonus .word-romaji{color:#fef3c7;font-weight:700;text-shadow:0 1px 2px rgba(0,0,0,.95),0 0 4px rgba(120,53,15,.8)}.field-word.word-bonus .romaji-done{color:#fef3c7}.field-word.word-bonus .romaji-remain{color:#fef3c799}@keyframes bonusGlow{0%,to{box-shadow:0 0 16px #fbbf24b3,0 0 32px #fbbf2466}50%{box-shadow:0 0 24px #fbbf24,0 0 48px #fbbf2499}}.cheer-hint{margin-left:8px;font-size:15px;color:#ec4899;font-weight:700;align-self:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.coop-popup{position:absolute;left:50%;top:-8px;transform:translate(-50%);font-size:18px;font-weight:700;color:#f9a8d4;text-shadow:0 0 6px rgba(0,0,0,.9),0 0 12px rgba(249,168,212,.6);pointer-events:none;font-family:monospace}.bloom-flash{position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(circle,#fcd34de6,#ec4899b3 60%,#ec489900);pointer-events:none;z-index:10;mix-blend-mode:screen}.coop-particle-layer{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:5}.coop-particle{position:absolute;width:10px;height:10px;border-radius:50%;transform:translate(-50%,-50%);box-shadow:0 0 8px currentColor}.coop-particle.p-cheer{background:#f9a8d4;color:#f9a8d4}.coop-particle.p-message{background:#fde047;color:#fde047}.coop-particle.p-rescue{background:#fbbf24;color:#fbbf24}.flower-icon{display:inline-block}.mode-select{display:flex;flex-direction:column;align-items:center;gap:8px;margin-top:32px}.mode-notice{display:inline-block;margin:12px auto 0;padding:8px 16px;background:#4ade8026;border:1px solid rgba(74,222,128,.5);border-radius:10px;color:#a7f3d0;font-size:13px;max-width:480px}.mode-submenu-indicator{color:#888;font-size:14px;margin-left:4px}.mode-links{margin-top:48px;font-size:11px;color:#555;display:flex;justify-content:center;gap:8px}.mode-link{color:#8a8a90;cursor:pointer;text-decoration:none}.mode-link:hover{color:#aaa;text-decoration:underline}.mode-link-sep{color:#333}.tutorial-screen{display:flex;flex-direction:column;height:100%;padding:16px}.tutorial-header{text-align:center;margin-bottom:4px}.tutorial-stage{font-size:20px;font-weight:700;color:#a78bfa}.tutorial-desc{font-size:14px;color:#aaa;margin-top:4px}.tutorial-exit{font-size:12px;color:#555;margin-top:4px}.tutorial-progress{display:flex;justify-content:center;gap:24px;font-size:16px;margin-bottom:4px;color:#ccc}.tutorial-time{color:#667eea;font-weight:700}.tutorial-accuracy{color:#4ade80;font-weight:700}.tutorial-target{color:#666;font-size:13px}.tutorial-word-area{text-align:center;display:flex;flex-direction:column;justify-content:flex-start;align-items:center;gap:4px}.tutorial-hiragana{font-size:48px;font-weight:700;color:#fff}.tutorial-romaji{font-size:32px;font-family:monospace}.tutorial-typed{color:#667eea}.tutorial-remain{color:#555}.tutorial-praise-area{height:28px;display:flex;align-items:center;justify-content:center}.tutorial-praise{font-size:13px;font-weight:700;opacity:0}.tutorial-praise.visible{animation:praiseFloat 1s ease-out forwards}.tutorial-praise.praise-good{color:#81c78499}.tutorial-praise.praise-great{color:#4fc3f799}.tutorial-praise.praise-perfect{color:#facc15b3}@keyframes praiseFloat{0%{opacity:1;transform:translateY(0)}50%{opacity:.8;transform:translateY(-8px)}to{opacity:0;transform:translateY(-16px)}}.tutorial-input-guide{display:flex;flex-direction:column;align-items:center}.hands-svg{max-width:360px;height:auto;margin-bottom:-4px}.tutorial-input-guide{margin-top:0}.tutorial-keyboard{display:flex;flex-direction:column;align-items:center;gap:4px;padding:4px 0}.kb-row{display:flex;gap:4px}.kb-row:first-child{justify-content:flex-end;width:100%;max-width:416px}.kb-row:nth-child(3){margin-left:20px}.kb-row:nth-child(4){margin-left:40px}.kb-key{width:36px;height:36px;display:flex;align-items:center;justify-content:center;border-radius:6px;font-size:14px;font-weight:700;font-family:monospace;color:#111;opacity:.4;transition:opacity .15s}.kb-highlight{opacity:1!important;box-shadow:0 0 12px currentColor}@keyframes keyPulse{0%,to{transform:scale(1)}50%{transform:scale(1.15)}}.kbguide-wrap{position:absolute;left:50%;bottom:var(--kbguide-bottom, 10px);transform:translate(-50%) scale(var(--kbguide-scale, 1));transform-origin:bottom center;z-index:15;pointer-events:none;display:flex;flex-direction:column;align-items:center;gap:4px}.kbguide-word{text-align:center;padding:4px 14px;background:#0a0a1ab3;border:1px solid rgba(255,255,255,.15);border-radius:10px;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);min-width:120px}.kbguide-word.empty{opacity:0}.kbguide-word-hira{font-size:22px;font-weight:700;line-height:1.1;letter-spacing:.03em}.kbguide-word-hira .remain{color:#aaa}.kbguide-word-romaji{font-size:14px;font-family:monospace;margin-top:2px}.kbguide-word-romaji .typed{font-weight:700}.kbguide-word-romaji .remain{color:#888}.ingame-guide{display:flex;flex-direction:column;align-items:center;padding:2px 0;opacity:.85}.ingame-guide .hands-svg{max-width:240px;height:auto;margin-bottom:-2px}.ingame-guide .tutorial-keyboard{gap:2px;padding:2px 0}.ingame-guide .kb-row{gap:2px}.ingame-guide .kb-row:nth-child(3){margin-left:12px}.ingame-guide .kb-row:nth-child(4){margin-left:24px}.ingame-guide .kb-row{justify-content:center;margin-left:0!important;max-width:none;width:auto}.ingame-guide .kb-row:nth-child(5){margin-top:2px}.ingame-guide .kb-key{width:22px;height:22px;font-size:10px;border-radius:3px;opacity:.55;background:#ffffff2e;color:#e5e7eb;border:1px solid rgba(255,255,255,.12)}.ingame-guide .kb-key-wide{font-size:9px;letter-spacing:.3px;padding:0 4px}.ingame-guide .kb-highlight{opacity:1!important;box-shadow:0 0 8px currentColor}.tutorial-clear{text-align:center;flex:1;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:16px}.tutorial-clear-title{font-size:32px;font-weight:700;color:#a78bfa}.tutorial-clear-time{font-size:48px;font-weight:700;color:#fff}.tutorial-clear-accuracy{font-size:24px;color:#4ade80;font-weight:700}.tutorial-clear-target{font-size:16px;color:#aaa}.tutorial-clear-actions{display:flex;gap:16px;margin-top:16px}.stage-select{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:24px;padding:0 16px}.stage-item{display:flex;align-items:center;gap:6px;padding:10px 12px;border:2px solid #333;border-radius:8px;cursor:pointer;transition:border-color .2s,background .2s}.stage-item:hover,.stage-item.active{border-color:#a78bfa;background:#a78bfa1a}.stage-item.locked{opacity:.35;cursor:default}.stage-item.locked:hover{border-color:#333;background:transparent}.stage-info{display:flex;flex-direction:column;gap:2px;flex:1}.stage-title-text{font-size:13px;font-weight:700}.stage-desc-text{font-size:11px;color:#888}.stage-best{font-size:11px;color:#a78bfa}.stage-lock{font-size:18px}.tips-list{display:flex;flex-direction:column;align-items:center;gap:10px;margin-top:24px}.howto-intro{font-size:13px;color:#888;margin-top:4px}.gameover-practice-clear .gameover-title{color:#fbbf24;text-shadow:0 0 16px rgba(251,191,36,.35)}.rules-screen{padding:24px 16px 32px;box-sizing:border-box}.rules-list{display:flex;flex-direction:column;gap:10px;margin:20px auto 16px;max-width:560px;width:100%}.rules-card{display:flex;align-items:flex-start;gap:14px;padding:14px 18px;border:1px solid #333;border-radius:10px;background:#ffffff05}.rules-card-icon{font-size:26px;line-height:1;flex-shrink:0;margin-top:2px}.rules-card-body{display:flex;flex-direction:column;gap:4px;flex:1;text-align:left;min-width:0}.rules-card-title{font-size:15px;font-weight:700;color:#fff}.rules-card-desc{font-size:13px;line-height:1.5;color:#bbb}.rules-pager{display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:14px;padding-top:18px}.rules-page{display:flex;flex-direction:column;align-items:center;gap:16px;width:min(640px,92vw)}.rules-page-media{position:relative;width:480px;height:409px;border-radius:12px;overflow:hidden;background-color:#ffffff0a;background-repeat:no-repeat;border:1px solid #2a2a2a;box-shadow:0 6px 20px #00000059}.rules-page-icon{font-size:56px;line-height:1}.rules-page-body{text-align:center;display:flex;flex-direction:column;justify-content:flex-start;gap:8px;height:110px}.rules-page-title{font-size:20px;font-weight:700;color:#fff}.rules-page-desc{font-size:14px;line-height:1.6;color:#cfcfcf;max-width:600px;white-space:pre-line}.rules-pager-controls{display:flex;align-items:center;justify-content:center;gap:18px;margin-top:4px}.rules-nav-btn{width:44px;height:44px;border-radius:50%;background:#ffffff14;border:1px solid #3a3a3a;color:#fff;font-size:18px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .15s,transform .1s}.rules-nav-btn:hover:not(:disabled){background:#ffffff29}.rules-nav-btn:active:not(:disabled){transform:scale(.95)}.rules-nav-btn:disabled{opacity:.3;cursor:not-allowed}.rules-dots{display:flex;gap:8px}.rules-dot{width:9px;height:9px;border-radius:50%;background:#ffffff38;transition:background .15s,transform .15s}.rules-dot.is-active{background:#b48dff;transform:scale(1.25)}.rules-page-count{font-size:12px;color:#888;text-align:center;margin-top:4px}.rules-pager .tip-back-btn{margin-top:14px;align-self:center}@media (max-width: 540px){.rules-pager{padding-top:12px;gap:10px}.rules-page{gap:12px}.rules-page-media{width:92vw;height:calc(92vw * 460 / 540)}.rules-page-title{font-size:17px}.rules-page-desc{font-size:13px}}.legal-screen{padding:20px 16px 32px;box-sizing:border-box}.legal-updated-at{text-align:center;font-size:11px;color:#888;margin-bottom:20px}.legal-list{display:flex;flex-direction:column;gap:12px;margin:0 auto 20px;max-width:640px;width:100%}.legal-section{padding:14px 18px;border:1px solid #2a2a3a;border-radius:8px;background:#ffffff05;text-align:left}.legal-section-title{font-size:14px;font-weight:700;color:#fff;margin-bottom:6px}.legal-section-body{font-size:12.5px;line-height:1.7;color:#bbb;white-space:pre-wrap;word-break:break-word}.legal-section-body .legal-link{color:#7fb3ff;text-decoration:underline;word-break:break-all}.legal-section-body .legal-link:hover{color:#a6c8ff}.tip-item{display:flex;align-items:center;gap:8px;padding:12px 20px;border:2px solid #333;border-radius:8px;cursor:pointer;width:420px;box-sizing:border-box;transition:border-color .2s,background .2s}.tip-item .choice-cursor{display:inline-block;width:16px;text-align:center;flex-shrink:0}.tip-item:hover,.tip-item.active{border-color:#a78bfa;background:#a78bfa1a}.tip-item-info{display:flex;flex-direction:column;gap:2px;flex:1;text-align:left;min-width:0}.tip-item-title{font-size:15px;font-weight:700}.tip-item-desc{font-size:12px;color:#888}.tip-screen{width:100%;padding:32px 20px 40px;box-sizing:border-box}.tip-content{display:flex;flex-direction:column;align-items:center;gap:18px;max-width:640px;margin:0 auto}.tip-title{font-size:32px;font-weight:700;color:#a78bfa;margin-bottom:4px}.tip-lead{font-size:17px;line-height:1.8;color:#ddd;text-align:center;margin:0}.tip-home-keys{font-size:17px;color:#ddd;display:flex;gap:14px;align-items:center}.tip-home-keys b{color:#fff;letter-spacing:2px;font-family:monospace}.tip-sep{color:#555}.tip-note{font-size:15px;line-height:1.8;color:#bbb;text-align:center;margin:0;max-width:520px}.tip-section{display:flex;flex-direction:column;align-items:center;gap:10px;margin-top:14px;width:100%}.tip-section-title{font-size:19px;font-weight:700;color:#a78bfa}.tip-sub{font-size:15px;line-height:1.8;color:#bbb;margin:0;text-align:center;max-width:520px}.tip-sub b{color:#fff}.items-layer{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;overflow:hidden;z-index:1;display:none;opacity:0}.bg-layer{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;transition:opacity 1.5s ease;z-index:0}#scene-dim{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:2;transition:background-color 1.5s ease}#game-root{position:relative;z-index:3;width:100%;height:100%}.item-bubble{position:absolute;bottom:-80px;width:var(--size);height:var(--size);background:url(/themes/aquarium/items/bubble.png) center/contain no-repeat;opacity:0;animation:bubbleRise var(--duration) linear var(--delay) infinite;will-change:transform,opacity}@keyframes bubbleRise{0%{transform:translateY(0) translate(0);opacity:0}8%{opacity:.75}90%{opacity:.55}to{transform:translateY(calc(-100dvh - 100px)) translate(var(--drift));opacity:0}}.item-fish{position:absolute;top:var(--top);width:var(--size);height:var(--size);background-size:contain;background-repeat:no-repeat;background-position:center;opacity:.8;will-change:transform}.item-fish-lr{left:-80px;animation:fishSwimLR var(--duration) linear var(--delay) infinite}.item-fish-rl{right:-80px;transform:scaleX(-1);animation:fishSwimRL var(--duration) linear var(--delay) infinite}@keyframes fishSwimLR{0%{transform:translate(0) translateY(0)}25%{transform:translate(220px) translateY(-8px)}50%{transform:translate(440px) translateY(6px)}75%{transform:translate(660px) translateY(-6px)}to{transform:translate(900px) translateY(0)}}@keyframes fishSwimRL{0%{transform:scaleX(-1) translate(0) translateY(0)}25%{transform:scaleX(-1) translate(220px) translateY(-8px)}50%{transform:scaleX(-1) translate(440px) translateY(6px)}75%{transform:scaleX(-1) translate(660px) translateY(-6px)}to{transform:scaleX(-1) translate(900px) translateY(0)}}.item-firefly{position:absolute;top:var(--top);left:var(--left);width:var(--size);height:var(--size);background-size:contain;background-repeat:no-repeat;background-position:center;opacity:0;animation:fireflyBlink var(--duration) ease-in-out var(--delay) infinite;will-change:transform,opacity}@keyframes fireflyBlink{0%,to{transform:translate(0);opacity:0}25%{transform:translate(15px,-10px);opacity:.85}50%{transform:translateY(-20px);opacity:.6}75%{transform:translate(-15px,-10px);opacity:.85}}.item-steam{position:absolute;bottom:35%;left:var(--left);width:var(--size);height:calc(var(--size) * 1.4);background-size:contain;background-repeat:no-repeat;background-position:center;opacity:0;animation:steamRise var(--duration) ease-out var(--delay) infinite;will-change:transform,opacity}@keyframes steamRise{0%{transform:translateY(0) scale(.7);opacity:0}15%{opacity:.6}60%{transform:translateY(-35vh) scale(1.1);opacity:.5}to{transform:translateY(-60vh) scale(1.4);opacity:0}}.item-bean{position:absolute;top:-40px;left:var(--left);width:var(--size);height:var(--size);background-size:contain;background-repeat:no-repeat;background-position:center;opacity:.8;animation:beanFall var(--duration) linear var(--delay) infinite;will-change:transform}@keyframes beanFall{0%{transform:translate(0) rotate(0);opacity:0}10%{opacity:.85}to{transform:translate(40px,110vh) rotate(720deg);opacity:0}}.item-shooting-star{position:absolute;top:var(--top);left:-150px;width:var(--size);height:var(--size);background-size:contain;background-repeat:no-repeat;background-position:center;opacity:0;animation:shootingStar var(--duration) linear var(--delay) infinite;will-change:transform,opacity}@keyframes shootingStar{0%{transform:translate(0);opacity:0}1%{transform:translate(70px,20px);opacity:1}6%{transform:translate(420px,117px);opacity:.75}12%{transform:translate(840px,235px);opacity:.3}16%{transform:translate(1000px,280px);opacity:0}to{transform:translate(1000px,280px);opacity:0}}.item-sparkle{position:absolute;top:var(--top);left:var(--left);width:var(--size);height:var(--size);background-size:contain;background-repeat:no-repeat;background-position:center;opacity:0;animation:sparkleTwinkle var(--duration) ease-in-out var(--delay) infinite;will-change:transform,opacity}@keyframes sparkleTwinkle{0%,to{transform:scale(.4);opacity:0}50%{transform:scale(1);opacity:.9}}.item-spark{position:absolute;top:var(--top);left:var(--left);width:var(--size);height:var(--size);background-size:contain;background-repeat:no-repeat;background-position:center;opacity:0;animation:sparkBurst var(--duration) ease-out var(--delay) infinite;will-change:transform,opacity}@keyframes sparkBurst{0%{transform:scale(.2);opacity:0}15%{transform:scale(1);opacity:.95}60%{opacity:.5}to{transform:scale(1.4);opacity:0}}.item-ember{position:absolute;bottom:-40px;left:var(--left);width:var(--size);height:var(--size);background-size:contain;background-repeat:no-repeat;background-position:center;opacity:0;animation:emberRise var(--duration) ease-out var(--delay) infinite;will-change:transform,opacity}@keyframes emberRise{0%{transform:translate(0);opacity:0}10%{opacity:.95}70%{transform:translate(var(--drift),-70vh);opacity:.8}95%{opacity:.2}to{transform:translate(calc(var(--drift) * 1.2),-110vh);opacity:0}}.item-note{position:absolute;top:var(--top);left:-80px;width:var(--size);height:var(--size);background-size:contain;background-repeat:no-repeat;background-position:center;opacity:0;filter:drop-shadow(0 0 6px rgba(230,190,120,.4));animation:noteDrift var(--duration) linear var(--delay) infinite;will-change:transform,opacity}@keyframes noteDrift{0%{transform:translate(0);opacity:0}10%{opacity:.85}50%{transform:translate(500px,-14px)}90%{opacity:.6}to{transform:translate(1000px);opacity:0}}.item-heart{position:absolute;bottom:-60px;left:var(--left);width:var(--size);height:var(--size);background-size:contain;background-repeat:no-repeat;background-position:center;opacity:0;animation:heartRise var(--duration) ease-out var(--delay) infinite;will-change:transform,opacity}@keyframes heartRise{0%{transform:translate(0) scale(.8);opacity:0}15%{opacity:.85}50%{transform:translate(var(--drift),-55vh) scale(1)}90%{opacity:.6}to{transform:translate(calc(var(--drift) * -1),-110vh) scale(1.1);opacity:0}}.item-gold{position:absolute;top:var(--top);left:var(--left);width:var(--size);height:var(--size);background-size:contain;background-repeat:no-repeat;background-position:center;opacity:0;animation:goldShimmer var(--duration) ease-in-out var(--delay) infinite;will-change:transform,opacity}@keyframes goldShimmer{0%,to{transform:scale(.7);opacity:0}50%{transform:scale(1);opacity:.85}}.item-cloud{position:absolute;top:var(--top);left:-200px;width:var(--size);height:calc(var(--size) * .6);background-size:contain;background-repeat:no-repeat;background-position:center;opacity:.75;animation:cloudDrift var(--duration) linear var(--delay) infinite;will-change:transform}@keyframes cloudDrift{0%{transform:translate(0)}to{transform:translate(1100px)}}.item-bird{position:absolute;top:var(--top);left:-100px;width:var(--size);height:var(--size);background-size:contain;background-repeat:no-repeat;background-position:center;opacity:.85;animation:birdFlap var(--duration) linear var(--delay) infinite;will-change:transform}.item-plane{position:absolute;top:var(--top);left:-150px;width:var(--size);height:calc(var(--size) * .6);background-size:contain;background-repeat:no-repeat;background-position:center;opacity:0;transform:rotate(-8deg);animation:planeFly var(--duration) linear var(--delay) infinite;will-change:transform,opacity}@keyframes planeFly{0%{transform:translate(0) rotate(-8deg);opacity:0}2%{opacity:.9}16%{transform:translate(1150px,-160px) rotate(-8deg);opacity:.9}17%{transform:translate(1150px,-160px) rotate(-8deg);opacity:0}to{transform:translate(1150px,-160px) rotate(-8deg);opacity:0}}@keyframes birdFlap{0%{transform:translate(0)}10%{transform:translate(100px,-18px)}20%{transform:translate(200px)}30%{transform:translate(300px,-18px)}40%{transform:translate(400px)}50%{transform:translate(500px,-18px)}60%{transform:translate(600px)}70%{transform:translate(700px,-18px)}80%{transform:translate(800px)}90%{transform:translate(900px,-18px)}to{transform:translate(1000px)}}.menu-back-btn{display:block;margin:16px auto 0;padding:8px 22px;background:transparent;border:1px solid #444;border-radius:8px;color:#ccc;font-size:13px;font-family:inherit;cursor:pointer;transition:border-color .2s,background .2s,color .2s}.menu-back-btn:hover{border-color:#a78bfa;background:#a78bfa1a;color:#fff}.menu-back-btn.active{border-color:#a78bfa;background:linear-gradient(90deg,rgba(255,110,199,.2),rgba(110,199,255,.1) 70%,transparent);color:#fff;font-weight:700;text-shadow:0 0 8px rgba(255,110,199,.5)}.tip-back-btn{display:block;margin:24px auto 0;padding:10px 24px;background:transparent;border:2px solid #333;border-radius:8px;color:#ccc;font-size:14px;font-family:inherit;cursor:pointer;transition:border-color .2s,background .2s,color .2s}.tip-back-btn:hover{border-color:#a78bfa;background:#a78bfa1a;color:#fff}.tip-list{font-size:15px;line-height:1.9;color:#ccc;padding-left:24px;margin:4px 0;text-align:left;max-width:520px}.tip-list li{margin-bottom:6px}.tip-list b{color:#fff}.tip-callout{border:2px solid #a78bfa;background:#a78bfa14;border-radius:8px;padding:16px 20px;margin-top:8px;max-width:520px;width:100%;box-sizing:border-box;display:flex;flex-direction:column;align-items:center;gap:10px}.tip-callout-title{font-size:16px;font-weight:700;color:#a78bfa;text-align:center}.tip-callout .tip-sub{margin:0;text-align:left}.tutorial-keyboard-standalone{margin-top:4px}.kb-key.kb-multi-highlight{transform:translateY(-2px);font-weight:700}.tip-compare{display:flex;gap:16px;justify-content:center;flex-wrap:wrap;margin-top:8px}.tip-compare-item{display:flex;flex-direction:column;align-items:center;gap:6px;padding:12px 16px;border:2px solid #333;border-radius:8px;min-width:180px}.tip-compare-label{font-size:16px;font-weight:700;color:#ccc;font-family:monospace}.tip-compare-note{font-size:11px;color:#888;text-align:center;max-width:180px;line-height:1.5}.tip-keys{display:flex;align-items:center;gap:4px}.tip-key{display:inline-flex;align-items:center;justify-content:center;min-width:28px;height:28px;padding:0 6px;background:#2a2a2a;border:2px solid #444;border-radius:4px;font-family:monospace;font-size:14px;font-weight:700;color:#ddd}.tip-key-good{border-color:#4ade80;background:#4ade801a;color:#4ade80}.tip-key-bad{border-color:#f87171;background:#f871711a;color:#f87171}.tip-arrow{color:#666;font-size:12px}.stats-screen{padding:24px 16px 32px;box-sizing:border-box}.stats-section{width:min(560px,92vw);margin:18px auto 0}.stats-section-title{font-size:14px;color:#e8e8e8;font-weight:700;margin-bottom:8px;border-bottom:1px solid #332f5c;padding-bottom:4px;display:flex;align-items:center;gap:8px}.stats-online{opacity:.65}.stats-online-placeholder{background:linear-gradient(180deg,#222850,#0f1030);border:1px dashed #332f5c;border-radius:8px;padding:16px;text-align:center;font-size:13px;color:#888}.stats-stat-wrap{display:flex;justify-content:center}.stats-records-wrap{background:linear-gradient(180deg,#222850,#0f1030);border:1px solid #332f5c;border-radius:8px;padding:8px 10px;overflow-x:auto}.stats-records{width:100%;border-collapse:collapse;font-size:13px}.stats-records th{color:#9ca3af;font-weight:400;font-size:11px;text-align:center;padding:4px 6px;border-bottom:1px solid #332f5c}.stats-records th:first-child{text-align:left}.stats-records .record-row td{padding:6px;border-bottom:1px solid rgba(42,48,64,.5)}.stats-records .record-row:last-child td{border-bottom:none}.record-com{color:#e8e8e8;font-size:13px;white-space:nowrap}.record-com-emoji{margin-right:6px;font-size:15px}.record-val{color:#e8e8e8;text-align:center;font-variant-numeric:tabular-nums}.record-val-empty{color:#666;font-size:12px;text-align:center}.record-unit{font-size:10px;color:#9ca3af;margin-left:2px}.stats-badge-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:8px}.stats-badge-card{background:linear-gradient(180deg,#222850,#0f1030);border:2px solid #332f5c;border-radius:8px;padding:10px 8px;text-align:center}.stats-badge-locked{opacity:.45}.stats-badge-earned.badge-equipped{box-shadow:0 0 0 1px currentColor inset}.stats-badge-icon{font-size:22px}.stats-badge-name{font-size:12px;color:#e8e8e8;font-weight:700;margin:2px 0}.stats-badge-desc{font-size:10px;color:#9ca3af}.mode-select-screen{box-sizing:border-box}.settings-screen{padding:24px 16px 32px;box-sizing:border-box}.settings-list{width:min(460px,92vw);margin:0 auto}.settings-item{display:grid;grid-template-columns:20px 1fr auto auto;align-items:center;gap:10px;text-align:left;padding:10px 16px}.settings-item-label{font-size:15px;color:#e8e8e8;font-weight:700}.settings-item-current{font-size:13px;color:#9ca3af;font-variant-numeric:tabular-nums}.settings-item.disabled .settings-item-current{color:#555}.settings-links{margin-top:18px}.settings-version{margin-top:10px;font-size:11px;color:#888;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;cursor:pointer;-webkit-user-select:none;user-select:none;transition:color .15s}.settings-version:hover{color:#bbb}.settings-version-env{display:inline-block;margin-left:4px;padding:0 5px;border-radius:3px;background:#ffb8002e;color:#ffb800;font-size:10px;font-weight:700;text-transform:uppercase}.volume-list{width:min(460px,92vw);margin:24px auto 0;display:flex;flex-direction:column;gap:12px}.volume-item{display:grid;grid-template-columns:20px 60px 1fr 40px;align-items:center;gap:10px;padding:10px 16px;border:2px solid #333;border-radius:8px;background:transparent;cursor:pointer;transition:border-color .15s,background .15s}.volume-item.active{border-color:#8b5cf6;background:#8b5cf626}.volume-label{font-size:15px;font-weight:700;color:#e8e8e8;text-align:left}.volbar{display:inline-flex;gap:3px;align-items:center}.volbar-seg{flex:1;height:10px;background:#332f5c;border-radius:2px}.volbar-seg.on{background:linear-gradient(180deg,#c4b5fd,#8b5cf6)}.volume-value{font-size:13px;color:#9ca3af;text-align:right;font-variant-numeric:tabular-nums}.audio-toggle{background:#0a0a1e59;border:1px solid rgba(255,255,255,.14);border-radius:999px;color:#e8e8e8;cursor:pointer;padding:6px 10px;display:inline-flex;align-items:center;gap:6px;opacity:.78;transition:background .15s,border-color .15s,color .15s,opacity .15s;font-family:inherit;line-height:1}.audio-toggle:hover{background:#a78bfa47;border-color:#a78bfa80;opacity:1}.audio-toggle.off{color:#888;opacity:.55}.audio-toggle.off:hover{opacity:1}.audio-toggle svg{flex-shrink:0}.audio-toggle-center{display:inline-flex;margin:12px auto 0;padding:10px 18px;font-size:14px;letter-spacing:.04em}.audio-toggle-center .audio-toggle-label{font-size:13px;font-weight:700}.audio-toggle-pair{display:flex;gap:6px}.audio-toggle-icon{width:28px;height:28px;padding:0;justify-content:center;border-radius:50%}.audio-toggle-icon svg{width:16px;height:16px}.audio-toggle-global{position:fixed;top:10px;right:12px;z-index:900;pointer-events:auto}.audio-toggle-global.hidden{display:none}.audio-toggle-global .audio-toggle-icon{backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);box-shadow:0 2px 8px #0006}.consent-reopen-icon{color:#fcd34d;border-color:#fcd34d80}.consent-reopen-icon:hover{background:#fcd34d2e}.menu-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:-1;pointer-events:none;overflow:hidden;background:radial-gradient(ellipse at 50% 35%,#161b4a 0%,transparent 65%),linear-gradient(180deg,#08092a,#0a0e38)}.menu-backdrop.hidden{display:none}.menu-veil{position:fixed;top:0;right:0;bottom:0;left:0;z-index:0;pointer-events:none;background:linear-gradient(90deg,#080b1e00,#080b1e80 28%,#080b1e80 72%,#080b1e00)}.menu-veil.hidden{display:none}.floating-key{position:absolute;width:var(--size, 44px);height:var(--size, 44px);bottom:-80px;left:var(--x, 50%);display:flex;align-items:center;justify-content:center;font-family:SF Mono,Menlo,monospace;font-weight:700;font-size:calc(var(--size, 44px) * .45);color:#fff;background:var(--color, #6ec7ff);border-radius:10px;box-shadow:inset 0 2px 4px #ffffff59,0 0 20px var(--glow, rgba(110, 199, 255, .5));text-shadow:0 0 6px rgba(255,255,255,.7),0 1px 0 rgba(0,0,0,.25);opacity:0;animation:floatKey var(--duration, 22s) linear var(--delay, 0s) infinite;will-change:transform,opacity;-webkit-user-select:none;user-select:none}@keyframes floatKey{0%{transform:translate(0) rotate(0);opacity:0}8%{opacity:.42}50%{transform:translate(calc(var(--drift, 0px) * 1),-55vh) rotate(calc(var(--rot, 180deg) * .5));opacity:.42}92%{opacity:.34}to{transform:translate(calc(var(--drift, 0px) * -1),-115vh) rotate(var(--rot, 180deg));opacity:0}}.choice-btn{display:flex;align-items:center;gap:10px;padding:10px 18px;background:transparent;border:none;border-radius:6px;cursor:pointer;transition:color .2s,background .2s,transform .2s;font-size:16px;color:#e2e8f0;text-align:left;width:100%;max-width:340px;font-family:inherit}.choice-btn:hover{color:#fff;background:#ffffff14}.choice-btn.active{color:#fff;background:linear-gradient(90deg,rgba(255,110,199,.35),rgba(110,199,255,.2) 70%,transparent);transform:translate(2px);font-weight:700;text-shadow:0 0 10px rgba(255,110,199,.7)}.choice-btn.disabled{opacity:.4;cursor:not-allowed}.choice-btn.disabled:hover,.choice-btn.disabled.active{color:#e2e8f0;background:transparent;transform:none;font-weight:400;text-shadow:none}.choice-cursor{color:#ff6ec7;font-size:14px;width:16px;display:inline-block;text-align:center;flex-shrink:0;text-shadow:0 0 8px rgba(255,110,199,.9),0 0 16px rgba(255,110,199,.5);opacity:0;transition:opacity .15s}.choice-btn.active .choice-cursor,.tip-item.active .choice-cursor,.stage-item.active .choice-cursor{opacity:1;animation:cursorPulse 1.1s ease-in-out infinite}@keyframes cursorPulse{0%,to{transform:translate(0)}50%{transform:translate(3px)}}.mode-select{max-width:340px;margin:32px auto 0}.stage-item{background:transparent;border:none;border-radius:6px;color:#e2e8f0;transition:color .2s,background .2s,transform .2s}.stage-item:hover{color:#fff;background:#ffffff14}.stage-item.active{color:#fff;background:linear-gradient(90deg,rgba(255,110,199,.35),rgba(110,199,255,.2) 70%,transparent);transform:translate(2px);font-weight:700}.stage-item.locked{opacity:.35}.stage-item.locked:hover,.stage-item.locked.active{color:#e2e8f0;background:transparent;transform:none;font-weight:400}.tip-item{background:transparent;border:none;border-radius:6px;color:#e2e8f0;transition:color .2s,background .2s,transform .2s}.tip-item:hover{color:#fff;background:#ffffff14}.tip-item.active{color:#fff;background:linear-gradient(90deg,rgba(255,110,199,.35),rgba(110,199,255,.2) 70%,transparent);transform:translate(2px);font-weight:700}.com-picker-start{justify-content:center;margin:0 auto}.coming-soon-badge{color:#94a3b8}.title-logo,.gameover-title,.tutorial-stage,.tutorial-clear-title,.tip-title,.tip-section-title,.tip-callout-title,.stats-section-title{color:#a78bfa}@media (prefers-reduced-motion: reduce){.floating-key{animation:none;opacity:.25;bottom:auto;top:var(--y-static, 40%)}.choice-cursor{animation:none}}.consent-banner{position:fixed;left:50%;bottom:16px;transform:translate(-50%);z-index:100;max-width:720px;width:calc(100% - 24px);display:flex;flex-direction:column;gap:10px;padding:14px 18px;background:#122018f5;border:1px solid rgba(74,222,128,.5);border-radius:12px;color:#d8f5e0;font-size:13px;line-height:1.5;box-shadow:0 8px 24px #0006}.consent-banner-text{text-align:center}.consent-banner-link{color:#a7f3d0;text-decoration:underline;margin-left:4px}.consent-banner-link:hover{color:#fff}.consent-banner-actions{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}.consent-banner-btn{font:inherit;padding:8px 18px;border-radius:8px;border:1px solid rgba(74,222,128,.5);background:transparent;color:#d8f5e0;cursor:pointer;min-width:140px}.consent-banner-btn:hover{background:#4ade8026}.consent-banner-accept{background:#4ade8040;border-color:#4ade80d9;color:#fff}.consent-banner-accept:hover{background:#4ade8066}@media (max-width: 480px){.consent-banner{bottom:8px;padding:12px 14px}.consent-banner-btn{flex:1;min-width:0}}
