:root{--bg-deep:#080e16;--bg-panel:#1119278c;--bg-rim:#475c8540;--accent:#ee582b;--accent-soft:#ee582bd9;--accent-rim:#f5a28973;--accent-glow:#d43f1173;--gold:#f4be34;--text-primary:#f5f5f5;--text-muted:#a9b5c6;--safe:#22c38e;--warn:#f2c40d}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{background:var(--bg-deep);-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none;height:100%;font-family:Hiragino Sans,Noto Sans JP,system-ui,sans-serif;overflow:hidden}.app{touch-action:none;max-width:520px;margin:0 auto;position:fixed;inset:0;overflow:hidden}.app canvas{position:absolute;inset:0}.hud{pointer-events:none;color:var(--text-primary);flex-direction:column;display:flex;position:absolute;inset:0}.hud button{pointer-events:auto;font-family:inherit}.glass{background:var(--bg-panel);-webkit-backdrop-filter:blur(12px)saturate(150%);border:1px solid var(--bg-rim);border-top-color:#94a8d147;box-shadow:inset 0 1px #b8c5e01f,0 8px 24px -8px #00000080}.topbar{margin:calc(8px + env(safe-area-inset-top)) 10px 0;font-variant-numeric:tabular-nums;letter-spacing:.01em;border-radius:14px;justify-content:space-between;align-items:center;padding:8px 14px;font-size:13px;font-weight:600;display:flex}.topbar-right{align-items:center;gap:8px;display:flex}.topbar .timer{font-variant-numeric:tabular-nums;color:var(--gold)}button.mute{pointer-events:auto;border:1px solid var(--bg-rim);cursor:pointer;background:#242e4280;border-radius:999px;place-items:center;width:30px;height:30px;font-size:14px;display:grid}.message{text-align:center;max-width:90%;color:var(--text-primary);border-radius:999px;margin:8px auto 0;padding:7px 16px;font-size:13px;font-weight:500}.overlay{z-index:10;-webkit-backdrop-filter:blur(6px);text-align:center;pointer-events:auto;background:linear-gradient(#070c128c,#06090fd1);flex-direction:column;justify-content:center;align-items:center;gap:14px;padding:24px;display:flex;position:absolute;inset:0}.overlay h1{letter-spacing:.14em;text-shadow:0 2px 24px #67c5e440;font-size:44px;font-weight:800;line-height:1.2}.overlay h1 small{letter-spacing:.45em;color:var(--text-muted);font-size:13px;font-weight:600}.overlay h2{color:var(--text-primary);font-size:30px;font-weight:800}.overlay p{color:var(--text-muted);font-size:14px}button.primary{letter-spacing:.04em;color:#fff;background:var(--accent-soft);-webkit-backdrop-filter:blur(12px)saturate(150%);border:1px solid var(--accent-rim);box-shadow:0 1px 0 #f5a2894d inset, 0 -1px 0 #47281f80 inset, 0 8px 24px -4px var(--accent-glow), 0 2px 6px -1px #0006;cursor:pointer;border-top-color:#f7b5a18c;border-radius:999px;padding:14px 38px;font-size:16px;font-weight:700}button.primary.secondary{border-color:var(--bg-rim);color:var(--text-primary);background:#2b37508c;border-top-color:#94a8d14d;box-shadow:inset 0 1px #b8c5e01f,0 6px 18px -6px #00000080}button.primary.taikai-btn{color:#31220c;background:#dca518d9;border-color:#f9dd9499 #f7d06e80 #f7d06e80;box-shadow:inset 0 1px #f9d88659,0 8px 24px -4px #c28e0a73,0 2px 6px -1px #0006}.bottombar{padding:12px 18px calc(20px + env(safe-area-inset-bottom));pointer-events:none;flex-direction:column;align-items:center;gap:8px;margin-top:auto;display:flex}.hint{text-align:center;color:var(--text-muted);border-radius:999px;padding:7px 16px;font-size:12px;font-weight:600}.fight-hud{top:calc(58px + env(safe-area-inset-top));pointer-events:none;border-radius:16px;padding:10px 14px 12px;position:absolute;left:10px;right:10px}.fight-hud .hint{padding:0 0 8px}.tension-track{border:1px solid var(--bg-rim);background:#0b131ebf;border-radius:999px;width:100%;height:14px;position:relative;overflow:hidden}.tension-fill{background:linear-gradient(90deg, var(--safe) 0%, var(--safe) 40%, var(--warn) 68%, var(--accent) 100%);background-size:400px 100%;border-radius:999px;width:50%;height:100%;transition:none;box-shadow:0 0 10px #22c38e66}.tension-track.danger .tension-fill{box-shadow:0 0 14px var(--accent-glow), 0 0 4px var(--accent)}.tension-track.danger{border-color:var(--accent-rim);animation:.5s ease-in-out infinite danger-pulse}@keyframes danger-pulse{0%,to{box-shadow:0 0 #ee582b00}50%{box-shadow:0 0 12px 2px #ee582b80}}.tension-band{pointer-events:none;border-left:2px solid #ffffff59;border-right:2px solid #ffffff59;width:50%;height:100%;position:absolute;top:0;left:30%}.progress-track{background:#0b131ebf;border-radius:999px;width:100%;height:4px;margin-top:7px;overflow:hidden}.progress-fill{background:linear-gradient(90deg, var(--gold), #f48c25);border-radius:999px;width:0%;height:100%;transition:none;box-shadow:0 0 8px #f4be3480}.fight-labels{color:var(--text-muted);letter-spacing:.06em;justify-content:space-between;padding-top:5px;font-size:10px;font-weight:600;display:flex}.catch-flash{pointer-events:none;z-index:5;background:#fff;position:absolute;inset:0}.fish-stage{place-items:center;width:100%;display:grid;position:relative}.fish-img{filter:drop-shadow(0 12px 28px #0009);max-width:96%}.fish-stage.gold:before{content:"";aspect-ratio:1;background:radial-gradient(circle,#f4be3459 0%,#f4be341f 40%,#0000 70%);width:120%;animation:2.4s ease-in-out infinite gold-breathe;position:absolute}@keyframes gold-breathe{0%,to{opacity:.7;transform:scale(1)}50%{opacity:1;transform:scale(1.06)}}.grade-label{letter-spacing:.3em;color:var(--gold);text-shadow:0 0 12px #f4be3480;font-size:13px;font-weight:800}.result-size{font-variant-numeric:tabular-nums;color:var(--text-primary);text-shadow:0 0 20px #67c5e44d;font-size:34px;font-weight:800}.taikai-score .big{color:var(--gold);font-variant-numeric:tabular-nums;text-shadow:0 0 24px #f4be3459;font-size:48px;font-weight:800;line-height:1.1}.catch-cut{pointer-events:none;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);z-index:5;background:#08141073;flex-direction:column;justify-content:center;align-items:center;gap:12px;display:flex;position:absolute;inset:0}.catch-ruler{color:#4a3c22;background:linear-gradient(#e8dcc0,#d4c49e);border-top:2px solid #8a7a55;border-radius:6px;justify-content:space-between;width:72%;max-width:560px;padding:6px 10px;font-size:11px;font-weight:700;display:flex}.catch-ruler__tick{border-left:1.5px solid #8a7a55;padding-left:3px;line-height:1.6}
