:root{--bg: var(--tg-theme-bg-color, #eef4f8);--surface: var(--tg-theme-secondary-bg-color, #ffffff);--text: var(--tg-theme-text-color, #14202b);--hint: var(--tg-theme-hint-color, #5d6b78);--accent: var(--tg-theme-button-color, #2b9ef3);--accent-text: var(--tg-theme-button-text-color, #ffffff);--link: var(--tg-theme-link-color, #2b9ef3);--gold: #f0a20c;--danger: #e5484d;--success: #2fa84f;--warn-bg: rgba(240, 162, 12, .14);--warn-fg: #855700;--bad-bg: rgba(229, 72, 77, .12);--bad-fg: #b4383c;--good-bg: rgba(47, 168, 79, .13);--good-fg: #1f7a39;--epic-bg: rgba(163, 113, 247, .16);--epic-fg: #6f42c1;--hairline: rgba(125, 139, 153, .18);--radius: 18px;--radius-sm: 12px;--gap: 12px;--nav-height: 64px;--top-height: 56px;--shadow: 0 2px 10px rgba(16, 32, 48, .08)}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){--bg: var(--tg-theme-bg-color, #0f1922);--surface: var(--tg-theme-secondary-bg-color, #18242e);--text: var(--tg-theme-text-color, #e8eef3);--hint: var(--tg-theme-hint-color, #8ea0ae);--accent: var(--tg-theme-button-color, #3ea6ff);--accent-text: var(--tg-theme-button-text-color, #08121a);--danger: #ff6b6e;--success: #46c266;--warn-bg: rgba(240, 162, 12, .18);--warn-fg: #ffc558;--bad-bg: rgba(255, 107, 110, .16);--bad-fg: #ff9294;--good-bg: rgba(70, 194, 102, .16);--good-fg: #74d992;--epic-bg: rgba(163, 113, 247, .2);--epic-fg: #c4a2ff;--hairline: rgba(142, 160, 174, .22);--shadow: 0 2px 12px rgba(0, 0, 0, .45)}}:root[data-theme=dark]{--bg: var(--tg-theme-bg-color, #0f1922);--surface: var(--tg-theme-secondary-bg-color, #18242e);--text: var(--tg-theme-text-color, #e8eef3);--hint: var(--tg-theme-hint-color, #8ea0ae);--accent: var(--tg-theme-button-color, #3ea6ff);--accent-text: var(--tg-theme-button-text-color, #08121a);--danger: #ff6b6e;--success: #46c266;--warn-bg: rgba(240, 162, 12, .18);--warn-fg: #ffc558;--bad-bg: rgba(255, 107, 110, .16);--bad-fg: #ff9294;--good-bg: rgba(70, 194, 102, .16);--good-fg: #74d992;--epic-bg: rgba(163, 113, 247, .2);--epic-fg: #c4a2ff;--hairline: rgba(142, 160, 174, .22);--shadow: 0 2px 12px rgba(0, 0, 0, .45)}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,sans-serif;font-size:15px;line-height:1.35;overscroll-behavior-y:none}button{font:inherit;color:inherit;border:none;background:none;cursor:pointer}.app{display:flex;flex-direction:column;height:100%;max-width:480px;margin:0 auto}.screen{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:var(--gap) 16px calc(var(--nav-height) + 24px)}.screen-title{margin:4px 0 12px;font-size:20px;font-weight:700}.muted{color:var(--hint)}.center-box{display:flex;flex-direction:column;gap:12px;align-items:center;justify-content:center;height:100%;padding:24px;text-align:center}.topbar{display:flex;gap:8px;align-items:center;padding:10px 16px;background:var(--surface);box-shadow:var(--shadow);position:sticky;top:0;z-index:5}.stat{display:flex;gap:6px;align-items:center;padding:6px 10px;border-radius:999px;background:var(--bg);font-weight:600;font-size:14px;white-space:nowrap}.stat small{color:var(--hint);font-weight:500}.topbar .spacer{flex:1}.nav{position:fixed;left:0;right:0;bottom:0;z-index:10;display:flex;max-width:480px;margin:0 auto;height:calc(var(--nav-height) + env(safe-area-inset-bottom,0px));padding-bottom:env(safe-area-inset-bottom,0px);background:var(--surface);border-top:1px solid var(--hairline)}.nav button{flex:1;display:flex;flex-direction:column;gap:2px;align-items:center;justify-content:center;color:var(--hint);font-size:10px;font-weight:600;position:relative}.nav button .icon{font-size:20px;line-height:1}.nav button.active{color:var(--accent)}.nav .dot{position:absolute;top:8px;right:22%;width:8px;height:8px;border-radius:50%;background:var(--danger)}.card{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);padding:14px}.card+.card{margin-top:var(--gap)}.card.locked{opacity:.75}.row{display:flex;gap:12px;align-items:center}.row .grow{flex:1;min-width:0}.title{font-weight:700;font-size:16px}.subtitle{color:var(--hint);font-size:13px;margin-top:2px}.badge{display:inline-block;padding:3px 9px;border-radius:999px;font-size:11px;font-weight:800;letter-spacing:.4px;text-transform:uppercase;color:#fff}.pill{display:inline-block;padding:4px 10px;border-radius:999px;background:var(--bg);color:var(--hint);font-size:12px;font-weight:600}.btn{display:flex;gap:8px;align-items:center;justify-content:center;width:100%;padding:14px 16px;border-radius:var(--radius-sm);background:var(--accent);color:var(--accent-text);font-size:16px;font-weight:700;transition:transform .08s ease,opacity .15s ease}.btn:active{transform:scale(.98)}.btn:disabled{opacity:.45;cursor:default}.btn.secondary{background:var(--bg);color:var(--text)}.btn.gold{background:var(--gold);color:#fff}.btn.danger-text{background:transparent;color:var(--danger);font-size:14px;padding:10px}.btn.small{width:auto;padding:9px 14px;font-size:14px;border-radius:999px}.btn-row{display:flex;gap:10px;margin-top:14px}.fishing{display:flex;flex-direction:column;gap:14px;min-height:100%}.pond{position:relative;display:flex;flex-direction:column;gap:6px;align-items:center;justify-content:center;height:210px;border-radius:var(--radius);background:linear-gradient(180deg,#7fd0ff,#2b86d0 70%,#14669f);color:#fff;overflow:hidden;box-shadow:var(--shadow)}.pond .location-name{font-size:22px;font-weight:800;text-shadow:0 1px 6px rgba(0,0,0,.25)}.pond .location-sub{font-size:13px;opacity:.9}.pond .float{font-size:54px;animation:bob 2.6s ease-in-out infinite}.pond.casting .float{animation:cast .9s ease-in-out infinite}@keyframes bob{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}@keyframes cast{0%{transform:translateY(0) rotate(-8deg)}50%{transform:translateY(12px) rotate(8deg)}to{transform:translateY(0) rotate(-8deg)}}.ripple{position:absolute;bottom:42px;width:90px;height:90px;border:2px solid rgba(255,255,255,.55);border-radius:50%;animation:ripple 1.6s ease-out infinite}@keyframes ripple{0%{transform:scale(.2);opacity:.8}to{transform:scale(1.4);opacity:0}}.energy-empty{text-align:center;padding:12px}.energy-empty .timer{font-size:26px;font-weight:800;font-variant-numeric:tabular-nums}.result-overlay{position:fixed;inset:0;z-index:20;display:flex;align-items:flex-end;justify-content:center;background:#08141e8c;padding:16px;animation:fade .18s ease}@keyframes fade{0%{opacity:0}to{opacity:1}}.result{width:100%;max-width:448px;background:var(--surface);border-radius:var(--radius);padding:20px 18px calc(18px + env(safe-area-inset-bottom,0px));text-align:center;animation:card-rise .22s cubic-bezier(.2,.9,.3,1)}@keyframes card-rise{0%{transform:translateY(40px);opacity:0}to{transform:translateY(0);opacity:1}}.result .emoji{font-size:68px;line-height:1}.result h2{margin:10px 0 4px;font-size:24px}.result .weight{font-size:20px;font-weight:700}.result .price{margin-top:8px;font-size:17px;font-weight:700;color:var(--gold)}.record{margin-top:10px;padding:8px 12px;border-radius:var(--radius-sm);background:var(--warn-bg);color:var(--warn-fg);font-weight:700;font-size:14px}.record.world{background:var(--epic-bg);color:var(--epic-fg)}.grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.grid.two{grid-template-columns:repeat(2,1fr)}.cell{background:var(--surface);border-radius:var(--radius-sm);box-shadow:var(--shadow);padding:10px 8px;text-align:center;position:relative}.cell .emoji{font-size:30px;line-height:1.2}.cell .name{font-size:12px;font-weight:700;margin-top:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cell .meta{font-size:11px;color:var(--hint);margin-top:2px}.cell.unknown .emoji,.cell.unknown .name{filter:grayscale(1);opacity:.45}.rarity-bar{height:3px;border-radius:2px;margin-top:8px}.progress{height:8px;border-radius:999px;background:var(--bg);overflow:hidden;margin-top:8px}.progress span{display:block;height:100%;border-radius:999px;background:var(--accent)}.toast{position:fixed;left:50%;bottom:calc(var(--nav-height) + 20px);transform:translate(-50%);z-index:30;max-width:90%;padding:10px 16px;border-radius:999px;background:#14202beb;color:#fff;font-size:14px;font-weight:600;animation:fade .15s ease}.modal-overlay{position:fixed;inset:0;z-index:25;display:flex;align-items:center;justify-content:center;padding:20px;background:#08141e8c}.modal{width:100%;max-width:360px;background:var(--surface);border-radius:var(--radius);padding:20px;text-align:center}.days{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:14px 0}.day{padding:8px 4px;border-radius:var(--radius-sm);background:var(--bg);font-size:12px;font-weight:700}.day.today{background:var(--gold);color:#fff}.day.done{opacity:.5}.spinner{width:26px;height:26px;border:3px solid var(--hairline);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.demo-banner{padding:6px 12px;background:var(--gold);color:#fff;font-size:11px;font-weight:800;letter-spacing:.3px;text-align:center}.income-card .income-rate{font-size:24px;font-weight:800;color:var(--accent)}.income-rate.small{font-size:17px;font-weight:800;color:var(--accent)}.income-card .income-stored{font-size:20px;font-weight:700;font-variant-numeric:tabular-nums}.duplicate-note{margin-top:10px;padding:8px 10px;border-radius:var(--radius-sm);background:var(--bad-bg);color:var(--bad-fg);font-size:12px;font-weight:600}.btn-row.choice{gap:10px}.choice-btn{flex-direction:column;gap:2px;padding:12px 8px}.choice-title{font-size:15px;font-weight:700}.choice-value{font-size:13px;font-weight:600;opacity:.9}.tank{position:relative;height:200px;margin-bottom:var(--gap);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow),inset 0 0 40px #02284659;isolation:isolate}.tank-water{position:absolute;inset:0;background:linear-gradient(180deg,#6fd3ff,#2f95d8 55%,#0f5c92)}.tank-light{position:absolute;inset:-20% -40%;background:repeating-linear-gradient(102deg,#ffffff1c 0px 14px,#fff0 14px 64px);animation:caustics 14s linear infinite;pointer-events:none}@keyframes caustics{0%{transform:translate(-64px)}to{transform:translate(0)}}.bubble{position:absolute;bottom:-12px;border-radius:50%;background:#ffffff8c;animation:rise linear infinite;pointer-events:none}@keyframes rise{0%{transform:translateY(0) translate(0);opacity:0}12%{opacity:.8}to{transform:translateY(-210px) translate(10px);opacity:0}}.swimmer{position:absolute;left:0;height:0;animation-name:swim-x;animation-timing-function:ease-in-out;animation-iteration-count:infinite;pointer-events:none}@keyframes swim-x{0%,to{transform:translate(0)}50%{transform:translate(100%)}}.swimmer-bob{width:fit-content;animation-name:bob-y;animation-timing-function:ease-in-out;animation-iteration-count:infinite;animation-direction:alternate}@keyframes bob-y{0%{transform:translateY(-5px)}to{transform:translateY(5px)}}.swimmer-flip{display:flex;width:fit-content;align-items:center;justify-content:center;line-height:0;animation-name:swim-flip;animation-timing-function:steps(1,end);animation-iteration-count:infinite}@keyframes swim-flip{0%,49.99%{transform:scaleX(1)}50%,to{transform:scaleX(-1)}}.tank-floor{position:absolute;left:0;right:0;bottom:0;height:26px;background:linear-gradient(180deg,#c9a978,#a8874f);box-shadow:0 -4px 10px #02284640}.weed{position:absolute;bottom:14px;font-size:22px;transform-origin:bottom center;animation:sway 4.5s ease-in-out infinite alternate}.weed:nth-child(2n){animation-duration:6s;font-size:18px}@keyframes sway{0%{transform:rotate(-8deg)}to{transform:rotate(8deg)}}.tank-empty{position:absolute;inset:0;display:flex;flex-direction:column;gap:6px;align-items:center;justify-content:center;color:#fff;font-size:13px;font-weight:600;text-shadow:0 1px 6px rgba(0,0,0,.35)}.tank-badge{position:absolute;top:8px;right:10px;padding:4px 10px;border-radius:999px;background:#03203673;color:#fff;font-size:12px;font-weight:700;backdrop-filter:blur(3px)}.tank-badge-more{font-weight:500;opacity:.85}@media (prefers-reduced-motion: reduce){.tank-light,.bubble,.weed,.swimmer-bob,.swimmer-flip{animation:none}.bubble{opacity:.5}.swimmer{animation:none;transform:translate(var(--rest, 40%))}}.status-card .status-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px 10px;margin-bottom:12px}.status-value{font-size:20px;font-weight:800;line-height:1.15}.status-value.accent{color:var(--accent)}.clean-clean{color:var(--success)}.clean-needsCleaning{color:var(--gold)}.clean-dirty,.warn{color:var(--danger)}.care-actions{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:14px}.care-actions .btn{flex-direction:column;gap:2px;padding:10px 4px}.care-actions .choice-title{font-size:13px}.care-actions .choice-value{font-size:11px}.condition-line{margin-top:10px;padding:7px 10px;border-radius:var(--radius-sm);background:var(--bg);color:var(--hint);font-size:12px;font-weight:600}.growth{color:var(--success);font-weight:700}.grow-note{margin-top:10px;padding:8px 10px;border-radius:var(--radius-sm);background:var(--good-bg);color:var(--good-fg);font-size:12px;font-weight:600}.pill.hunger-hungry{background:var(--warn-bg);color:var(--warn-fg)}.pill.hunger-veryHungry{background:var(--bad-bg);color:var(--bad-fg)}.name-input{flex:1;min-width:0;padding:10px 12px;border:1px solid var(--hairline);border-radius:var(--radius-sm);background:var(--bg);color:var(--text);font:inherit;font-size:15px}.name-input:focus{outline:2px solid var(--accent);outline-offset:-1px}.tank.tank-dirty .tank-water{filter:saturate(.55) brightness(.82) sepia(.25)}.swimmer.is-hungry .swimmer-flip{opacity:.72;filter:saturate(.5) drop-shadow(0 2px 4px rgba(3,32,54,.35))}.fish-tail,.fish-fin,.fish-body{transform-box:fill-box;animation-iteration-count:infinite;animation-direction:alternate;animation-timing-function:ease-in-out;animation-duration:var(--wobble, .5s)}.fish-tail{transform-origin:100% 50%;animation-name:tail-swish}@keyframes tail-swish{0%{transform:rotate(-14deg) scaleX(.94)}to{transform:rotate(14deg) scaleX(1)}}.fish-fin{transform-origin:0% 50%;animation-name:fin-flutter;animation-duration:calc(var(--wobble, .5s) * .75)}@keyframes fin-flutter{0%{transform:rotate(-5deg)}to{transform:rotate(5deg)}}.fish-body{transform-origin:50% 50%;animation-name:body-breathe;animation-duration:calc(var(--wobble, .5s) * 2)}@keyframes body-breathe{0%{transform:scaleY(.97) scaleX(1.01)}to{transform:scaleY(1.03) scaleX(.99)}}.swimmer-yaw{width:fit-content;animation-name:swim-yaw;animation-timing-function:ease-in-out;animation-iteration-count:infinite;animation-direction:alternate}@keyframes swim-yaw{0%{transform:rotate(-3.5deg)}to{transform:rotate(3.5deg)}}.fish-hit{display:block;padding:6px;margin:-6px;line-height:0;cursor:pointer;pointer-events:auto;transform-origin:center}.inspector-hint{margin:-4px 0 12px;text-align:center;color:var(--hint);font-size:12px;font-weight:600}@media (prefers-reduced-motion: reduce){.fish-tail,.fish-fin,.fish-body,.swimmer-yaw{animation:none}}.inspector-split{display:flex;gap:12px;align-items:stretch}.lens{position:relative;flex:0 0 132px;min-height:132px;border-radius:var(--radius-sm);overflow:hidden;box-shadow:inset 0 0 22px #02284659}.lens-water{position:absolute;inset:0;background:linear-gradient(180deg,#7fd6ff,#2f95d8 60%,#14669f)}.lens-light{position:absolute;inset:-20% -40%;background:repeating-linear-gradient(102deg,#ffffff1a 0px 10px,#fff0 10px 46px);animation:caustics 14s linear infinite;pointer-events:none}.lens .bubble{bottom:-8px}.lens-swimmer .fish-hit,.lens-swimmer .swimmer-flip{pointer-events:none}.inspector-info{flex:1;min-width:0}.inspector-weight{margin-top:4px;font-size:19px;font-weight:800}.inspector-pills{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-top:8px}.card.inspector{border:2px solid var(--accent)}.swimmer.is-selected{z-index:3}.swimmer.is-selected .fish-hit{filter:drop-shadow(0 0 0 #fff) drop-shadow(0 0 7px rgba(255,255,255,.95))}.theme-toggle{padding:6px 9px;font-size:15px;line-height:1}.play-area,.hold-button{touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}.play-area{position:relative;border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow);cursor:pointer}.scene{display:block;line-height:0}.scene svg{display:block;width:100%;height:270px}.wave{animation:wave-drift var(--wave-seconds, 6s) linear infinite}.wave-1{animation-duration:calc(var(--wave-seconds, 6s) * 1.5);animation-direction:reverse}@keyframes wave-drift{0%{transform:translate(0)}to{transform:translate(40px)}}.clouds{animation:cloud-drift 40s ease-in-out infinite alternate}@keyframes cloud-drift{0%{transform:translate(-10px)}to{transform:translate(14px)}}.reed{transform-box:fill-box;transform-origin:bottom center;animation:sway 3.4s ease-in-out infinite alternate}.boat{animation:boat-rock 3.2s ease-in-out infinite alternate}@keyframes boat-rock{0%{transform:translateY(0)}to{transform:translateY(2px)}}.fisherman-torso{transform-box:fill-box;transform-origin:bottom center;animation:breathe 3s ease-in-out infinite}@keyframes breathe{0%,to{transform:scaleY(1)}50%{transform:scaleY(1.02)}}.bobber{animation:bobber-idle 2.2s ease-in-out infinite}.bobber-under{animation:none;opacity:.75}@keyframes bobber-idle{0%,to{translate:0 0}50%{translate:0 -1.5px}}.ripple-ring{fill:none;stroke:#ffffff8c;stroke-width:1.2;transform-box:fill-box;transform-origin:center;animation:ring 2.4s ease-out infinite}.ripple-ring.delay{animation-delay:1.2s}.bubble-dot{fill:#ffffffb3;transform-box:fill-box;animation:bubble-up 2.1s ease-in infinite}@keyframes bubble-up{0%{transform:translateY(0);opacity:0}20%{opacity:.9}to{transform:translateY(-14px);opacity:0}}.splash-ring{fill:none;stroke:#fff;stroke-width:2;transform-box:fill-box;transform-origin:center;animation:ring .7s ease-out both}.splash-ring.delay{animation-delay:.18s}.splash-big .splash-ring{stroke-width:2.6}.splash-huge .splash-ring{stroke-width:3.4;animation-duration:.9s}.splash-drop{fill:#fff;transform-box:fill-box;animation:drop-arc .6s ease-out both}.splash-huge .splash-drop{animation-duration:.8s}@keyframes drop-arc{0%{transform:translate(0);opacity:1}50%{transform:translate(calc(var(--dx, 0px) * .6),-14px);opacity:1}to{transform:translate(var(--dx, 0px),2px);opacity:0}}@keyframes ring{0%{transform:scale(.4);opacity:.9}to{transform:scale(2.4);opacity:0}}.fish-silhouette{animation:fish-wriggle .22s ease-in-out infinite alternate;transform-box:fill-box;transform-origin:center}@keyframes fish-wriggle{0%{rotate:-6deg}to{rotate:6deg}}.shake-soft{animation:shake-soft .18s linear infinite}.shake-hard{animation:shake-hard .12s linear infinite}@keyframes shake-soft{0%,to{transform:translate(0)}25%{transform:translate(-1.5px,1px)}75%{transform:translate(1.5px,-1px)}}@keyframes shake-hard{0%,to{transform:translate(0)}25%{transform:translate(-3px,2px)}75%{transform:translate(3px,-2px)}}.hud{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:space-between;gap:6px;padding:10px;pointer-events:none}.hud-top{display:flex;flex-wrap:wrap;justify-content:space-between;gap:6px}.hud-chip{padding:4px 10px;border-radius:999px;background:#03203680;color:#fff;font-size:12px;font-weight:700;backdrop-filter:blur(3px);white-space:nowrap}.hud-callout{align-self:center;margin-bottom:8px;padding:8px 16px;border-radius:var(--radius-sm);background:#03203699;color:#fff;font-weight:700;text-align:center;backdrop-filter:blur(3px);animation:callout-in .2s ease-out both}@keyframes callout-in{0%{transform:translateY(8px);opacity:0}to{transform:translateY(0);opacity:1}}.hud-callout.soft{font-size:14px}.hud-callout.grade-perfect b{color:#9dffb4}.hud-callout.grade-poor b{color:#ffd1d1}.hud-bonus{font-size:12px;font-weight:600;opacity:.85}.hud-sub{margin-top:2px;font-size:12px;font-weight:600;opacity:.8}.hud-callout.bite{animation:bite-pop .3s ease-in-out infinite alternate}.hud-callout.strike{font-size:18px;font-weight:900}.bite-title{font-size:32px;font-weight:900;letter-spacing:1px;line-height:1}.bite-hint{margin-top:4px;font-size:13px;opacity:.95}.hud-callout.bite-light{background:#e5484dc7}.hud-callout.bite-strong{background:#3d6efdcc}.hud-callout.bite-huge{background:#8c50f0db}.hud-callout.bite-huge .bite-hint{font-size:16px;font-weight:900}@keyframes bite-pop{0%{transform:scale(1)}to{transform:scale(1.08)}}.cast-meter{align-self:stretch;margin-bottom:4px;padding:8px 10px;border-radius:var(--radius-sm);background:#03203680;backdrop-filter:blur(3px)}.cast-track{position:relative;height:18px;border-radius:999px;overflow:hidden}.cast-zone{position:absolute;top:0;bottom:0}.cast-zone-poor{background:#e5484d8c}.cast-zone-good{background:#f0be3cbf}.cast-zone-perfect{background:#46c266;box-shadow:inset 0 0 0 2px #ffffffb3}.cast-marker{position:absolute;top:-2px;bottom:-2px;width:5px;margin-left:-2.5px;border-radius:3px;background:#fff;box-shadow:0 0 6px #0009}.cast-grade{margin-top:6px;text-align:center;font-size:15px;font-weight:900;letter-spacing:2px;color:#fff;text-shadow:0 1px 4px rgba(0,0,0,.5)}.cast-grade.grade-perfect{color:#9dffb4}.cast-grade.grade-good{color:#ffe08a}.cast-grade.grade-poor{color:#ffc2c2}.reel{align-self:stretch;padding:8px 10px;border-radius:var(--radius-sm);background:#03203699;color:#fff;backdrop-filter:blur(3px)}.reel-banner{margin-bottom:8px;text-align:center;font-size:14px;font-weight:900;animation:callout-in .2s ease-out both}.reel-banner.grade-perfect{color:#9dffb4}.reel-banner.grade-good{color:#ffe08a}.reel-banner.grade-late,.reel-banner.grade-miss{color:#ffc2c2}.reel-track{position:relative;height:18px;border-radius:999px;background:linear-gradient(90deg,#ffcf6b,#58c26b 35% 65%,#ff6b6e);opacity:.95}.reel-zone{position:absolute;top:-3px;bottom:-3px;border:2px solid #ffffff;border-radius:6px;box-shadow:0 0 8px #fff9}.reel-needle{position:absolute;top:-6px;width:6px;height:30px;margin-left:-3px;border-radius:3px;background:#fff;box-shadow:0 0 6px #00000073}.reel-needle.danger{background:#ff6b6e;animation:shake-hard .12s linear infinite}.reel-row{display:flex;justify-content:space-between;margin-top:8px;font-size:13px;font-weight:700}.reel-line.danger{color:#ff9294}.reel-progress{font-size:15px;font-weight:900}.reel .progress{margin-top:4px;background:#fff3}.reel .progress span{background:#58c26b}.hold-button{display:flex;align-items:center;justify-content:center;min-height:64px;padding:14px 16px;border-radius:var(--radius-sm);background:var(--accent);color:var(--accent-text);font-size:16px;font-weight:800;text-align:center;cursor:pointer;transition:transform .08s ease,background .15s ease}.hold-button:active,.hold-button.state-casting,.hold-button.state-reeling{transform:scale(.98)}.hold-button.state-bite{background:var(--danger);color:#fff;font-size:20px;animation:bite-pop .3s ease-in-out infinite alternate}.hold-button.state-cast_animation,.hold-button.state-waiting,.hold-button.state-hooked,.hold-button.state-caught,.hold-button.state-reveal,.hold-button.state-result{background:var(--surface);color:var(--hint);box-shadow:inset 0 0 0 1px var(--hairline)}.escape-card{text-align:center;animation:callout-in .25s ease-out both}.fish-icon{display:inline-flex;flex:none;align-items:center;justify-content:center;line-height:1;object-fit:contain}.fish-icon-unknown{filter:brightness(0) opacity(.35)}:root[data-theme=dark] .fish-icon-unknown{filter:brightness(0) invert(1) opacity(.25)}@media (prefers-color-scheme: dark){:root:not([data-theme=light]) .fish-icon-unknown{filter:brightness(0) invert(1) opacity(.25)}}.reveal{position:fixed;inset:0;z-index:40;display:flex;align-items:center;justify-content:center;padding:16px;overflow:hidden;background:#08141e8c;animation:fade .15s ease}.reveal-legendary{background:#04080ee6;animation:dim-in .6s ease both}@keyframes dim-in{0%{background:#04080e00}to{background:#04080ee6}}.reveal-card{position:relative;z-index:2;width:100%;max-width:448px;animation:reveal-pop .35s cubic-bezier(.2,1.3,.4,1) both}.reveal-epic .reveal-card{animation-duration:.55s}.reveal-legendary .reveal-card{animation:reveal-slow 1.4s .5s cubic-bezier(.2,1,.3,1) both}@keyframes reveal-pop{0%{transform:scale(.6);opacity:0}to{transform:scale(1);opacity:1}}@keyframes reveal-slow{0%{transform:scale(.3) translateY(40px);opacity:0;filter:brightness(3)}60%{transform:scale(1.06) translateY(0);opacity:1;filter:brightness(1.4)}to{transform:scale(1);filter:brightness(1)}}.reveal-glow{position:absolute;width:420px;height:420px;border-radius:50%;background:radial-gradient(circle,var(--rarity) 0%,transparent 62%);opacity:.55;animation:glow-pulse 1.2s ease-in-out infinite alternate}.reveal-uncommon .reveal-glow{opacity:.25}.reveal-rare .reveal-glow{opacity:.45}@keyframes glow-pulse{0%{transform:scale(.85)}to{transform:scale(1.1)}}.reveal-rays{position:absolute;width:900px;height:900px;background:repeating-conic-gradient(from 0deg,rgba(240,162,12,.32) 0deg 8deg,transparent 8deg 22deg);animation:rays-spin 9s linear infinite,fade 1s .4s ease both}@keyframes rays-spin{to{transform:rotate(360deg)}}.reveal-particles{position:absolute;z-index:3;width:0;height:0;pointer-events:none}.reveal-particles span{position:absolute;width:8px;height:8px;border-radius:50%;background:var(--rarity);box-shadow:0 0 8px var(--rarity);animation:burst 1s ease-out both}.reveal-legendary .reveal-particles span{animation:burst 1.4s .9s ease-out both}@keyframes burst{0%{transform:rotate(var(--angle)) translate(0) scale(1);opacity:1}to{transform:rotate(var(--angle)) translate(190px) scale(.3);opacity:0}}.reveal-splash{position:absolute;bottom:-40px;left:50%;width:520px;height:180px;margin-left:-260px;border-radius:50%;background:radial-gradient(ellipse at center,rgba(143,203,255,.55),transparent 70%);animation:splash-up .9s .3s ease-out both}@keyframes splash-up{0%{transform:scaleY(.2);opacity:0}50%{opacity:1}to{transform:scaleY(1.2);opacity:0}}.reveal .result{max-width:none;max-height:calc(100vh - 32px);overflow-y:auto;animation:none}.result-rarity{font-size:13px;font-weight:900;letter-spacing:3px;color:var(--rarity)}.result-legendary .result-rarity{font-size:20px;letter-spacing:6px;text-shadow:0 0 12px var(--rarity)}.result-hero{display:flex;justify-content:center;margin:8px 0 2px}.result-rare .result-hero,.result-epic .result-hero,.result-legendary .result-hero{filter:drop-shadow(0 0 14px var(--rarity))}.result.result-uncommon{box-shadow:0 0 0 2px var(--rarity)}.result.result-rare,.result.result-epic,.result.result-legendary{box-shadow:0 0 0 2px var(--rarity),0 0 28px var(--rarity)}.result.result-legendary{background:linear-gradient(var(--surface),var(--surface)) padding-box,linear-gradient(135deg,#ffe08a,#f0a20c,#ffe08a) border-box;border:3px solid transparent}.choice{transition:opacity .25s ease}.choice-hidden{opacity:0;pointer-events:none}.choice-btn{min-height:60px}.skill-badges{display:flex;flex-wrap:wrap;gap:6px;justify-content:center;margin-top:8px}.pill.skill{background:var(--good-bg);color:var(--good-fg)}.region{padding:0;overflow:hidden}.region-preview{position:relative;line-height:0}.region-preview .scene svg{height:168px}.region.locked .region-preview .scene{filter:grayscale(.55) brightness(.8)}.region-tag{position:absolute;top:8px;left:8px;line-height:1.2}.region-body{padding:12px 14px 14px}.region-head{display:flex;align-items:baseline;justify-content:space-between;gap:8px}.region-name{font-size:18px;font-weight:800}.region-count{font-size:13px;font-weight:700;color:var(--hint);white-space:nowrap}.region-fish{display:flex;flex-wrap:nowrap;overflow:hidden;gap:6px;margin:10px 0 12px}.region-fish .fish-icon-wrap{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:10px;background:var(--bg);box-shadow:inset 0 0 0 1px var(--hairline)}.region-req{margin-bottom:10px;padding:6px 10px;border-radius:var(--radius-sm);font-size:13px;font-weight:700;background:var(--good-bg);color:var(--good-fg)}.region-req.unmet{background:var(--bad-bg);color:var(--bad-fg)}.stat.bump{animation:coin-bump .5s ease-out}@keyframes coin-bump{0%{transform:scale(1)}30%{transform:scale(1.18);color:var(--gold)}to{transform:scale(1)}}.rod-stats{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}@media (prefers-reduced-motion: reduce){.wave,.clouds,.reed,.boat,.fisherman-torso,.bobber,.ripple-ring,.bubble-dot,.fish-silhouette,.reveal-rays,.reveal-glow,.hud-callout.bite,.hold-button.state-bite,.shake-soft,.shake-hard,.reel-needle.danger,.stat.bump{animation:none}}
