:root{color-scheme:light;--ink:#123b46;--navy:#092f3d;--muted:#65818a;--aqua:#d7f4ee;--gold:#ffd16b;--line:#dfebed;--font:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;font-family:var(--font);font-size:16px;background:#f6fafa;color:var(--ink)}
*{box-sizing:border-box}body{margin:0}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer}button:focus-visible,a:focus-visible{outline:3px solid #099cab;outline-offset:4px}button:disabled{cursor:default}svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.65;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}h1,h2,h3,p{margin:0}button{border:0}a{color:inherit;text-decoration:none}.hidden{display:none!important}.svg-defs{position:absolute;width:0;height:0}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}
.topbar{height:88px;display:flex;align-items:center;justify-content:space-between;padding:0 38px;border-bottom:1px solid var(--line);background:#fff;position:relative;z-index:4}.brand{display:flex;align-items:center;gap:13px;font-size:20px;letter-spacing:1px;font-weight:500;line-height:1.15}.brand b{font-weight:850}.brand small{display:block;font-size:11px;letter-spacing:4px;font-weight:700;margin-top:7px;color:var(--muted)}.brand-mark{display:grid;place-items:center;width:44px;height:44px;background:var(--navy);color:var(--gold);border-radius:14px;transform:rotate(-6deg)}.brand-mark svg{width:31px;height:31px}.header-stats{display:flex;align-items:center;gap:20px}.level-stat{display:flex;align-items:center;gap:10px}.level-badge{display:grid;place-items:center;width:39px;height:39px;border:1px solid #cde7e2;background:#eaf8f5;border-radius:12px;font-weight:800;color:#238374}.stat-caption{font-size:11px;font-weight:750;letter-spacing:1px}.xp-track{height:4px;width:94px;background:#e6efee;border-radius:10px;margin-top:7px;overflow:hidden}.xp-track span{display:block;height:100%;background:#37a797;transition:width .5s}.coin-pill{display:flex;align-items:center;gap:5px;background:#fff6dc;border:1px solid #f5e6b7;border-radius:24px;padding:6px 17px 6px 6px;min-width:103px;font-size:17px}.coin-pill canvas{width:32px;height:32px}.icon-button{height:39px;width:39px;border-radius:50%;display:grid;place-items:center;background:transparent;color:var(--muted)}.icon-button:hover{background:#edf6f5;color:var(--ink)}
.game-layout{display:grid;grid-template-columns:minmax(0,1fr) 352px;min-height:calc(100svh - 88px);max-width:1800px;margin:0 auto}.play-area{position:relative;background:#6bdbeb;overflow:hidden;min-height:750px;display:flex;flex-direction:column}.scene-heading{position:absolute;top:28px;left:34px;right:34px;z-index:2;display:flex;justify-content:space-between;align-items:center;pointer-events:none}.eyebrow{display:block;font-size:11px;letter-spacing:1.7px;font-weight:800;line-height:1.5}.scene-heading .eyebrow{color:#185f6b}.scene-heading h1{font-family:Georgia,"Times New Roman",serif;font-size:38px;letter-spacing:-1px;font-weight:500;margin-top:4px;color:#124656}.weather{display:flex;align-items:center;gap:7px;padding:10px 14px;background:#f4ffffb8;backdrop-filter:blur(12px);border-radius:24px;font-size:13px;color:#246174}.weather svg{width:18px;height:18px;color:#b27c26}.world-viewport{position:absolute;inset:0;overflow:hidden}.spot-markers{position:absolute;inset:0;z-index:3}.spot-marker{position:absolute;display:flex;flex-direction:column;align-items:center;gap:7px;background:transparent;transform:translate(-50%,-50%);padding:8px;color:var(--navy);transition:opacity .3s}.marker-ring{display:grid;place-items:center;width:38px;height:38px;border-radius:50%;border:2px solid #fff;background:#174e5dda;box-shadow:0 3px 12px #07556735;color:#fff}.marker-ring svg{width:19px;height:19px}.marker-name{font-size:11px;font-weight:750;padding:4px 9px;background:#fffdf3e8;border-radius:6px;white-space:nowrap;box-shadow:0 2px 10px #125c5917}.spot-marker.active .marker-ring{background:var(--gold);color:#664b0c;border-color:#fffbdf;box-shadow:0 0 0 6px #ffd16b35}.spot-marker.locked .marker-ring{background:#0c465770;color:#d2eded}.spot-marker.active .marker-name{background:var(--navy);color:#fff}.spot-marker:hover .marker-ring{transform:scale(1.1)}.spot-markers.busy .spot-marker{opacity:.35}@keyframes idle{50%{translate:0 -2px}}.map-hint{position:absolute;top:120px;left:36px;z-index:2;display:flex;align-items:center;gap:7px;font-size:12px;color:#2d6875}.map-hint svg{width:16px;height:16px}
.fishing-console{position:absolute;bottom:28px;left:32px;right:32px;z-index:6;background:var(--navy);color:#fff;border-radius:22px;max-width:620px;margin:0 auto;padding:23px 25px;box-shadow:0 13px 40px #083c4a30;border:1px solid #ffffff25}.console-title{display:flex;justify-content:space-between;align-items:center;gap:10px}.console-title .eyebrow{color:#89b9c1;font-size:10px}.console-title h2{font-size:21px;margin-top:3px;font-weight:700;letter-spacing:-.5px}.spot-tier{font-size:12px;background:#ffffff0c;border:1px solid #ffffff1c;border-radius:20px;padding:6px 11px;color:#b7d8de;white-space:nowrap}.game-status{font-size:14px;color:#b7d5dc;margin-top:12px;line-height:1.5;min-height:21px}.action-row{display:flex;gap:10px;margin-top:16px}.cast-button{height:53px;background:var(--gold);color:#463512;border-radius:12px;font-weight:800;display:flex;align-items:center;justify-content:center;gap:10px;flex:1;touch-action:none;user-select:none;width:100%;font-size:15px;box-shadow:0 3px 0 #c38d37;transition:background .15s,transform .1s}.cast-button:hover{background:#ffdc8c}.cast-button:active,.cast-button.reeling{transform:translateY(2px);box-shadow:0 1px 0 #c38d37;background:#ffe4a3}.cast-button:disabled{background:#43666f;color:#a8c6cd;box-shadow:0 3px 0 #31515a}.cast-button svg{width:23px;height:23px}.cast-button kbd{font-family:var(--font);font-size:10px;border:1px solid #6a521b30;border-radius:5px;padding:4px 6px;margin-left:10px;font-weight:600}.cancel-button{background:#ffffff10;border:1px solid #ffffff1c;color:#bcdae0;border-radius:12px;padding:0 16px;font-size:14px}.aim-game,.reel-game{margin-top:15px}.aim-bar,.tension-bar{height:17px;position:relative;background:#ffffff12;border:1px solid #ffffff0e;border-radius:10px;overflow:hidden}.aim-zone{position:absolute;left:62%;width:23%;height:100%;background:var(--gold)}.aim-needle,.tension-needle{position:absolute;left:0;top:0;bottom:0;width:5px;border-radius:3px;background:#fff;box-shadow:0 0 5px #0007;translate:-50% 0}.meter-labels{display:flex;justify-content:space-between;gap:8px;font-size:10px;margin-top:8px;color:#99bac2;line-height:1.4}.meter-labels span:first-child{letter-spacing:.7px}.reel-row{display:flex;justify-content:space-between;gap:7px;font-size:11px;color:#b2d2d8;margin-bottom:7px}.tension-bar{background:linear-gradient(90deg,#f7955a70 0 18%,#eec37250 18% 27%,#49d1a34d 27% 73%,#eec37250 73% 83%,#ee6e5f80 83%)}.safe-zone{position:absolute;left:27%;width:46%;height:100%;background:#60ddb323;border-left:1px solid #96ebc2;border-right:1px solid #96ebc2}.tension-needle{width:6px}.catch-progress{height:5px;border-radius:10px;background:#ffffff13;margin-top:12px;overflow:hidden}.catch-progress span{height:100%;display:block;background:#57d9b0;transition:width .1s}.game-status.bite{color:var(--gold);font-weight:700}
.island-panel{background:#fff;border-left:1px solid #d6e9e8;z-index:7;min-width:0}.panel-tabs{display:flex;border-bottom:1px solid var(--line);padding:17px 17px 0;gap:6px}.panel-tabs button{display:flex;align-items:center;justify-content:center;gap:6px;background:transparent;color:var(--muted);font-size:13px;font-weight:700;padding:16px 5px;flex:1;border-bottom:3px solid transparent}.panel-tabs button[aria-selected=true]{color:var(--ink);border-bottom-color:#299d91}.panel-tabs svg{width:17px;height:17px}.panel-tabs button span{font-size:10px;background:#eaf4f3;border-radius:5px;padding:3px 4px}.tab-panel{padding:25px 23px}.panel-intro{margin-bottom:23px}.panel-intro .eyebrow{color:#7d969c;font-size:10px;letter-spacing:1.4px}.panel-intro h2{font-size:21px;letter-spacing:-.7px;line-height:1.25;margin-top:7px}.panel-intro p{font-size:13px;line-height:1.6;color:var(--muted);margin-top:9px}.spot-list{display:grid;gap:10px}.spot-card{display:flex;align-items:center;text-align:left;padding:15px 13px;background:#fff;border:1px solid var(--line);border-radius:13px;width:100%;gap:12px;color:var(--ink);transition:background .2s,border-color .2s}.spot-card:hover{background:#f6fbfa}.spot-card.active{background:#edf8f5;border-color:#83c6b7}.spot-card.active .spot-symbol{background:#c7eadf;color:#2c8975}.spot-symbol{display:grid;place-items:center;width:43px;height:43px;flex-shrink:0;border-radius:12px;background:#f2f6f5;color:#709198}.spot-symbol svg{width:24px;height:24px}.spot-card strong{display:block;font-size:14px;line-height:1.3}.spot-card small{display:block;font-size:12px;line-height:1.4;margin-top:3px;color:var(--muted)}.spot-card .spot-state{margin-left:auto;font-size:11px;white-space:nowrap;color:#8c9fa4}.spot-card.active .spot-state{color:#379783;font-weight:700}.spot-card.locked{color:#82989c}.spot-card.locked .spot-symbol{background:#f5f6f5;color:#9cb0b4}.discovery-card{display:flex;gap:12px;padding:18px 15px;background:#f3f7fa;border:1px solid #e8f0f1;border-radius:14px;margin-top:24px}.discovery-card>svg{color:#6a8d9a;width:24px;height:24px;margin-top:3px}.discovery-card h3{font-size:13px;font-weight:750}.discovery-card p{font-size:12px;line-height:1.5;color:#6c8791;margin-top:5px}.discovery-track{height:4px;margin-top:12px;background:#dce8ea;border-radius:10px;overflow:hidden}.discovery-track span{display:block;background:#3c9eaa;height:100%;transition:width .4s}.session-stats{display:flex;justify-content:space-around;gap:20px;text-align:center;padding:23px 0;border-bottom:1px solid var(--line)}.session-stats strong{display:block;font-size:24px;font-weight:750;letter-spacing:-.6px}.session-stats span{display:block;font-size:12px;color:var(--muted);margin-top:4px}.last-catch{padding-top:23px}.last-catch>.eyebrow{font-size:10px;color:#8ca2a7;letter-spacing:1.3px}.empty-catch{display:flex;align-items:center;gap:10px;padding-top:15px;color:#8da5ac}.empty-catch svg{width:33px;height:33px}.empty-catch p{font-size:13px}.recent-row{display:flex;align-items:center;gap:9px;margin-top:12px}.recent-row canvas{width:83px;height:57px}.recent-row strong{font-size:14px}.recent-row small{display:block;color:var(--muted);font-size:12px;margin-top:4px}.recent-row b{margin-left:auto;color:#528679;font-size:12px}.save-note{display:flex;align-items:center;justify-content:center;gap:5px;font-size:11px;color:#94a9ae;margin-top:26px;line-height:1.5}.save-note svg{width:13px;height:13px}.fish-grid{display:grid;grid-template-columns:1fr 1fr;gap:11px}.fish-card{border:1px solid var(--line);border-radius:14px;padding:10px;background:#fff;min-width:0;text-align:center}.fish-card canvas{width:100%;height:84px;object-fit:contain}.fish-card.undiscovered canvas{filter:grayscale(1);opacity:.22}.fish-card h3{font-size:12px;line-height:1.4;margin-bottom:4px}.fish-card p{font-size:11px;color:var(--muted);line-height:1.5}.fish-card .rarity-pill{font-size:10px;padding:3px 6px;margin-top:6px;display:inline-flex}.fish-card .record{font-size:10px;display:block;margin-top:6px;color:#578d82}.gear-card{padding:18px;border:1px solid var(--line);border-radius:15px;margin-bottom:14px}.gear-card-top{display:flex;align-items:center;gap:12px}.gear-card-top>svg{width:31px;height:31px;color:#447e82}.gear-card h3{font-size:15px;line-height:1.4}.gear-card .gear-level{font-size:11px;color:var(--muted);margin-top:2px}.gear-card p{font-size:13px;line-height:1.6;color:var(--muted);margin-top:13px}.upgrade-button{display:flex;justify-content:center;align-items:center;gap:7px;width:100%;background:var(--navy);color:#fff;padding:12px;border-radius:9px;font-size:13px;font-weight:700;margin-top:15px}.upgrade-button:disabled{background:#f0f4f3;color:#97a8ac}.upgrade-button:hover:enabled{background:#1d5965}.gear-card.boat{background:#f4faf8}.gear-price{color:var(--gold)}
.toast{position:fixed;left:50%;bottom:26px;transform:translate(-50%,20px);opacity:0;pointer-events:none;z-index:30;background:#082f3ded;color:#fff;padding:14px 21px;max-width:calc(100% - 32px);border-radius:13px;box-shadow:0 7px 24px #06384330;font-size:14px;line-height:1.5;transition:opacity .25s,transform .25s;text-align:center}.toast.show{opacity:1;transform:translate(-50%,0)}dialog{border:0;padding:0;background:#fff;color:var(--ink);border-radius:24px;box-shadow:0 20px 80px #061e4050;max-width:calc(100vw - 32px);max-height:calc(100svh - 32px);overflow:auto}dialog::backdrop{background:#05344385;backdrop-filter:blur(7px)}.dialog-close{position:absolute;right:14px;top:14px;z-index:2}.catch-dialog{width:420px;text-align:center;padding:31px}.catch-eyebrow{font-size:11px;letter-spacing:2px;font-weight:800;color:#8b9f9a}.catch-art{height:191px;position:relative;background:radial-gradient(ellipse,#def5f2,transparent 68%);margin:6px 0}.catch-art canvas{width:100%;height:100%;object-fit:contain;animation:reveal .4s ease-out}.catch-sparkles{position:absolute;inset:15px 18px;pointer-events:none;color:#d6b341;font-size:26px;text-align:left}.catch-sparkles span{position:absolute;right:10px;top:30px;font-size:20px}.catch-sparkles{word-spacing:100px}@keyframes reveal{from{opacity:0;transform:scale(.6) rotate(-10deg)}to{opacity:1;transform:scale(1) rotate(0)}}.rarity-pill{border-radius:20px;font-size:11px;font-weight:750;padding:5px 11px;background:#eff4f1;color:#718a7e;display:inline-block;line-height:1.3}.rarity-pill.uncommon{background:#e8f7ef;color:#2e8d67}.rarity-pill.rare{background:#e7f2fd;color:#3b7eba}.rarity-pill.epic{background:#f1eafa;color:#8860b5}.rarity-pill.legendary{background:#fff2d0;color:#a67616}.catch-dialog h2{font-family:Georgia,"Times New Roman",serif;font-weight:500;font-size:32px;margin-top:12px}.catch-details{display:flex;justify-content:center;gap:21px;font-size:14px;color:var(--muted);margin-top:10px}.reward-box{display:flex;justify-content:space-between;align-items:center;border:1px solid #efdeb1;background:#fff9e9;border-radius:12px;padding:16px;margin:24px 0 13px;font-size:14px;color:#8c742f}.reward-box strong{font-size:20px;color:#956d1c}.discovery-bonus{font-size:12px;color:#398e79;margin-bottom:19px}.catch-dialog .cast-button{margin-top:20px}.secondary-link{padding:15px 0 0;background:none;font-size:13px;color:var(--muted);text-decoration:underline;text-underline-offset:3px}.help-dialog{width:470px;padding:36px}.help-dialog>.eyebrow{font-size:10px;color:#669992}.help-dialog h2{font-family:Georgia,serif;font-size:32px;font-weight:500;margin-top:9px}.help-dialog ol{padding-left:26px;margin:26px 0}.help-dialog li{padding-left:7px;margin-bottom:19px}.help-dialog li::marker{font-weight:800;color:#3c9d8c}.help-dialog li b{display:block;font-size:15px;margin-bottom:5px}.help-dialog li span{font-size:14px;line-height:1.6;color:var(--muted);display:block}.help-dialog>p{font-size:12px;line-height:1.65;color:var(--muted);margin-bottom:23px}
@media(min-width:1600px){.game-layout{grid-template-columns:minmax(0,1fr) 380px}.play-area{min-height:850px}.tab-panel{padding:28px}.scene-heading{top:36px}.fishing-console{bottom:35px}}
@media(max-width:1100px){.game-layout{grid-template-columns:minmax(0,1fr) 318px}.topbar{padding:0 24px}.fishing-console{left:20px;right:20px;padding:20px}.scene-heading{left:24px;right:24px}.scene-heading h1{font-size:34px}.weather{font-size:12px;padding:8px 11px}.scene-heading .eyebrow{font-size:9px}.tab-panel{padding:23px 20px}.panel-intro h2{font-size:20px}.map-hint{left:24px}}
@media(max-width:800px){.topbar{height:74px;padding:0 18px}.brand{font-size:17px;gap:9px;letter-spacing:.6px}.brand-mark{width:35px;height:35px;border-radius:11px}.brand-mark svg{width:26px}.brand small{font-size:9px;letter-spacing:3px;margin-top:4px}.header-stats{gap:8px}.level-stat{gap:0}.level-badge{width:31px;height:31px;font-size:13px;border-radius:10px}.level-stat>div{display:none}.coin-pill{min-width:76px;font-size:15px;padding:3px 10px 3px 3px;gap:2px}.coin-pill canvas{width:27px;height:27px}.icon-button{width:32px;height:32px}.icon-button svg{width:20px}.game-layout{display:block}.play-area{min-height:650px;height:calc(100svh - 74px);max-height:850px}.scene-heading{top:23px;left:22px;right:22px;align-items:flex-start}.scene-heading h1{font-size:34px}.scene-heading .eyebrow{font-size:9px;letter-spacing:1.4px}.weather{font-size:11px;padding:8px 9px;margin-top:5px;gap:4px}.weather svg{width:16px}.map-hint{top:106px;left:22px;font-size:11px}.fishing-console{bottom:22px;left:16px;right:16px;padding:20px;border-radius:19px}.console-title h2{font-size:20px}.game-status{font-size:13px}.cast-button kbd{display:none}.spot-tier{font-size:11px;padding:6px 9px}.island-panel{border-left:0;border-top:1px solid #d0e6e4}.panel-tabs{position:sticky;top:0;background:#fff;z-index:8;padding:0 15px}.panel-tabs button{font-size:14px;padding:17px 8px}.panel-tabs button span{font-size:11px}.tab-panel{padding:26px 22px}.spot-list{grid-template-columns:1fr 1fr}.spot-card{padding:14px 11px;gap:8px}.spot-symbol{height:35px;width:35px;border-radius:10px}.spot-symbol svg{width:21px}.spot-card strong{font-size:13px}.spot-card small{font-size:11px}.spot-card .spot-state{display:none}.panel-intro{margin-bottom:20px}.discovery-card{margin-top:20px}.session-stats{justify-content:flex-start;gap:50px}.last-catch{padding-top:20px}.fish-grid{grid-template-columns:repeat(3,1fr);gap:10px}.fish-card canvas{height:80px}.fish-card{padding:8px}.fish-card h3{font-size:11px}.gear-card{max-width:550px;margin-left:auto;margin-right:auto}.catch-dialog{padding:28px}.catch-art{height:170px}.catch-dialog h2{font-size:29px}.help-dialog{padding:31px}.help-dialog h2{font-size:30px}}
@media(max-width:380px){.topbar{padding:0 12px}.brand{font-size:15px}.header-stats{gap:4px}.brand-mark{width:31px;height:31px}.level-stat{display:none}.fishing-console{padding:17px}.spot-tier{display:none}.fish-grid{grid-template-columns:1fr 1fr}.scene-heading h1{font-size:30px}}
@media(max-height:740px) and (max-width:800px){.play-area{min-height:600px}.scene-heading{top:18px}.scene-heading h1{font-size:30px}.map-hint{top:92px}.fishing-console{bottom:16px;padding:17px}.spot-marker .marker-ring{height:31px;width:31px}.marker-name{font-size:10px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}.spot-card strong,.panel-tabs button,.upgrade-button{font-size:14px}.spot-card small{font-size:12px}.fish-card h3{font-size:14px}.game-status,.panel-intro p,.gear-card p{font-size:14px}.marker-name{font-size:12px}.meter-labels{font-size:12px}.reel-row{font-size:12px}
@media(max-width:800px){.marker-name{font-size:11px}.spot-card{min-height:91px}.spot-list{gap:9px}.spot-card strong{font-size:14px}.fish-card h3{font-size:12px}.play-area{background:#46cbeb}}
@media(max-height:650px) and (max-width:800px){.play-area{min-height:490px;height:calc(100svh - 74px)}.scene-heading h1{font-size:27px}.map-hint{top:86px}.fishing-console{padding:15px;bottom:14px}.console-title h2{font-size:18px}.console-title .eyebrow{font-size:9px}.game-status{margin-top:9px;font-size:13px}.action-row{margin-top:12px}.cast-button{height:48px}}
.play-area{background:#79dbe4;--console-height:198px}.world-viewport{inset:95px 0 calc(var(--console-height) + 50px);touch-action:none}.world-viewport>canvas{display:block;width:100%;height:100%;touch-action:none;outline:none}.spot-markers{pointer-events:none;overflow:hidden}.spot-marker{pointer-events:auto;transition:opacity .2s;padding:6px;gap:4px}.marker-ring{width:31px;height:31px;border-width:1.5px;box-shadow:0 3px 11px #0b677829}.marker-name{font-size:11px}.spot-marker.active .marker-ring{box-shadow:0 0 0 4px #ffd16b26}.scene-heading h1{font-size:33px}.map-hint{top:84px;left:35px;font-size:12px;pointer-events:none;color:#246477}.camera-controls{position:absolute;right:21px;top:109px;display:flex;flex-direction:column;gap:6px;z-index:5}.camera-controls button{display:flex;align-items:center;justify-content:center;gap:7px;background:#fffffff0;border:1px solid #ffffff60;color:#326c76;box-shadow:0 3px 10px #0c6b7a17;border-radius:11px;height:38px;min-width:38px;font-size:23px;font-weight:500}.camera-controls button:first-child{font-size:12px;padding:0 11px}.camera-controls button:first-child svg{width:17px}.camera-controls button:hover{background:#fff}.camera-controls button:active{transform:translateY(1px)}.world-loading,.world-error{position:absolute;inset:0;z-index:9;display:flex;justify-content:center;align-items:center;flex-direction:column;gap:15px;background:#79dbe4;color:#236472;font-size:15px;text-align:center;padding:24px}.world-loading svg{height:39px;width:39px;animation:idle 2s ease-in-out infinite}.world-error p{max-width:290px;line-height:1.6;font-size:14px}.world-error button{padding:12px 20px;background:var(--navy);color:white;border-radius:11px;font-size:14px}.spot-card .spot-state{font-size:10px}
@media(max-width:800px){.world-viewport{inset:91px 0 calc(var(--console-height) + 40px)}.scene-heading h1{font-size:29px}.scene-heading{top:18px}.map-hint{left:22px;top:77px;font-size:11px}.camera-controls{top:105px;right:12px;gap:5px}.camera-controls button{height:34px;min-width:34px}.camera-controls button:first-child{padding:0 8px;font-size:11px}.camera-controls button:first-child span{display:none}.marker-name{font-size:10px;padding:3px 6px}.marker-ring{height:27px;width:27px}.marker-ring svg{width:15px;height:15px}.play-area{min-height:630px}}
@media(max-height:650px) and (max-width:800px){.play-area{min-height:490px}.world-viewport{inset:87px 0 calc(var(--console-height) + 30px)}.map-hint{top:76px}.camera-controls{top:99px}.marker-name{display:none}.marker-ring{width:25px;height:25px}}
/* Shared island controls and activities. */
.friends-button{height:40px;padding:0 13px;background:#0e5763;color:#fff;border-radius:12px;display:flex;align-items:center;justify-content:center;gap:8px;font-size:14px;font-weight:700;white-space:nowrap}.friends-button svg{width:21px;height:21px}.friends-button.connected{background:#147563}.weather{pointer-events:auto;cursor:pointer;border:1px solid #ffffff80}.camera-controls select{height:36px;width:104px;border:1px solid #ffffff90;border-radius:10px;background:#fffffff0;color:#285e69;font:600 13px var(--font);padding:0 6px;box-shadow:0 3px 10px #0c6b7a17}.player-labels{position:absolute;inset:0;z-index:4;pointer-events:none;overflow:hidden}.player-nameplate{position:absolute;transform:translate(-50%,-100%);padding:4px 9px;border-radius:7px;background:#083c4ddd;color:#fff;font-size:12px;font-weight:750;white-space:nowrap;box-shadow:0 2px 9px #083c4d20}.interaction-button{position:absolute;bottom:calc(var(--console-height) + 38px);left:50%;transform:translateX(-50%);z-index:7;background:#fff6d9;border:1px solid #edd093;box-shadow:0 5px 15px #0a5d7025;color:#745019;border-radius:12px;padding:12px 16px;font-size:14px;font-weight:750;white-space:nowrap}.panel-tabs button{flex:1;flex-direction:column;gap:5px;font-size:14px;padding:13px 5px;min-width:0}.panel-tabs button span{display:none}.task-card{border:1px solid #dce8e4;background:#fff;border-radius:15px;padding:18px;margin-bottom:14px}.task-card .eyebrow{color:#6b9a91;font-size:12px;letter-spacing:1px}.task-card h3{font-size:16px;margin-top:7px;color:#173f4b}.task-card p,.island-guide p{font-size:14px;color:#648085;line-height:1.6;margin:7px 0}.task-progress{height:5px;background:#edf3ef;border-radius:6px;overflow:hidden;margin:15px 0}.task-progress span{height:100%;display:block;background:#39aa8c}.task-card button{font-size:14px;background:#0d5966;color:white;border-radius:9px;padding:10px 12px;width:100%;font-weight:650}.task-card button:disabled{background:#eff5f2;color:#708b86;cursor:default}.island-guide{padding:19px 0;border-top:1px solid #e0ebe7}.island-guide strong{font-size:16px}.island-guide .secondary-link{font-size:14px;padding:4px 0;color:#246b76}.friends-dialog{width:470px;padding:33px}.friends-dialog>.eyebrow{color:#6e9b93;font-size:12px}.friends-dialog h2{font-family:Georgia,serif;font-size:31px;letter-spacing:-.5px;font-weight:500;margin:8px 0 12px}.friends-intro,.room-note{font-size:14px;line-height:1.6;color:#68838a}.friends-intro{margin-bottom:23px}.friends-dialog label{display:block;font-size:14px;font-weight:700;margin-bottom:8px}.friends-dialog input{display:block;width:100%;min-width:0;height:46px;border:1px solid #cddfdc;background:#f5faf8;border-radius:10px;padding:0 12px;color:#214e5a;font:16px var(--font);outline-offset:3px}.friends-dialog .cast-button{margin-top:15px;font-size:15px}.room-divider{color:#8a9e9d;text-align:center;font-size:13px;padding:22px 0}.room-join-row{display:flex;gap:10px}.room-join-row input{letter-spacing:2px;text-transform:uppercase}.room-join-row button,.room-actions button{font-size:14px;font-weight:650;padding:0 18px;border-radius:10px;background:#165d68;color:#fff;white-space:nowrap}.room-join-row button:disabled{background:#537a81}.room-heading{display:flex;align-items:center;flex-wrap:wrap;gap:10px;background:#edf8f2;border:1px solid #c8e2d8;border-radius:13px;padding:15px;margin:14px 0;font-size:14px;color:#387367}.room-heading strong{font-size:23px;letter-spacing:3px;color:#154c54}.room-heading #room-status{margin-left:auto;font-size:13px}.room-actions{display:flex;gap:10px;margin:10px 0 23px}.room-actions button{height:40px;padding:0 12px;flex:1}.room-actions #room-leave{background:#eef4f1;color:#5c797d}.crew-title{font-size:16px;color:#275864;margin:22px 0 10px}.crew-row{display:flex;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid #edf3f0}.crew-avatar{height:35px;width:35px;border-radius:12px;display:grid;place-items:center;background:#ef7852;color:#fff;font-size:15px;font-weight:800}.color-1{background:#468bbd}.color-2{background:#9578c5}.color-3{background:#439f85}.color-4{background:#c99935}.crew-row strong{font-size:14px;font-weight:700}.crew-row small{display:block;font-size:12px;color:#78908c;margin-top:3px}.board-note{font-size:13px;color:#8a9d98;margin:0 0 10px}.board-row{display:grid;grid-template-columns:20px minmax(0,1fr) auto;gap:9px;align-items:center;font-size:14px;border-bottom:1px solid #eaf2ee;padding:11px 0}.board-row>b{color:#94a5a0}.board-row>span{overflow-wrap:anywhere}.board-row>strong{color:#236d68}.board-row small{grid-column:2 / 4;font-size:12px;color:#889f97;margin-top:-5px}.room-message{font-size:14px;line-height:1.6;color:#257864;margin-top:16px;min-height:20px}.room-note{font-size:12px;border-top:1px solid #e2ece7;padding-top:16px;margin-top:16px}.friends-dialog button{touch-action:manipulation}
@media(max-width:1100px){.header-stats{gap:10px}.friends-button{padding:0 10px}.friends-button span{max-width:135px;overflow:hidden;text-overflow:ellipsis}}
@media(max-width:800px){.friends-button{height:34px;width:34px;padding:0;border-radius:10px}.friends-button span{display:none}.friends-button svg{height:20px;width:20px}.camera-controls select{width:91px;font-size:12px}.interaction-button{bottom:calc(var(--console-height) + 29px);font-size:14px;padding:10px 13px}.friends-dialog{padding:28px}.panel-tabs button{font-size:14px;padding:13px 4px}.task-card{padding:17px}.friends-dialog h2{font-size:29px}}
@media(max-width:600px){.level-stat{display:none}.header-stats{gap:6px}.topbar{padding:0 16px}.brand{font-size:16px}.brand-mark{height:33px;width:33px}}
@media(max-width:350px){.brand{font-size:14px}.brand-mark{display:none}.topbar{padding:0 12px}.header-stats{gap:4px}.friends-dialog{padding:24px}.room-actions button{font-size:13px}}
.player-name-row{display:flex;gap:10px}.player-name-row input{flex:1}.player-name-row button{font:650 14px var(--font);padding:0 13px;border-radius:10px;background:#165d68;color:#fff;white-space:nowrap}.player-name-row button:disabled{background:#537a81}.room-heading #island-count{font-size:18px;letter-spacing:0}.room-heading{gap:8px}.friends-dialog .board-note{font-size:14px}.friends-dialog .room-note{font-size:14px}.friends-dialog{max-height:calc(100svh - 32px);overflow-y:auto}.room-actions button{min-height:40px}
/* The island fills the viewport; the HUD floats over it. */
html,body{width:100%;height:100%;overflow:hidden;overscroll-behavior:none;background:#79dbe4}
body{position:fixed;inset:0;height:100svh;height:100dvh}
.game-layout{position:fixed;inset:0;display:block;width:100%;height:100svh;height:100dvh;min-height:0;max-width:none;margin:0}
.play-area{width:100%;height:100%;min-height:0;max-height:none;--console-height:98px}
.world-viewport{position:absolute;inset:0;touch-action:none;outline:none}
.topbar{position:fixed;top:max(12px,env(safe-area-inset-top));left:max(12px,env(safe-area-inset-left));right:max(12px,env(safe-area-inset-right));height:44px;padding:0;z-index:8;border:0;background:none;pointer-events:none}
.header-stats{display:flex;justify-content:space-between;width:100%;min-width:0;gap:12px}.hud-group{display:flex;align-items:center;gap:8px;pointer-events:auto}
.level-stat{display:flex;gap:0}.level-badge{width:36px;height:40px;font-size:14px;background:#effff5e8;box-shadow:0 3px 14px #073f4818}.level-stat>div{display:none}
.coin-pill{min-width:70px;min-height:40px;padding:4px 12px 4px 4px;gap:3px;font-size:15px;background:#fff5dfeF;box-shadow:0 3px 14px #073f4818}.coin-pill canvas{width:28px;height:28px}
.friends-button,.hud-menu{position:relative;width:44px;height:44px;min-width:44px;padding:0;border-radius:13px;box-shadow:0 3px 14px #073f4820}.hud-menu{background:#fffffff0;color:#285e69}.friends-button svg,.hud-menu svg{width:22px;height:22px}
.friends-button .crew-count{display:block;position:absolute;top:-5px;right:-5px;min-width:20px;max-width:none;padding:2px 4px;border:2px solid #edfffa;background:#0a4751;color:white;border-radius:10px;font-size:12px;line-height:1.2;font-weight:800;overflow:visible}
.camera-controls{position:fixed;top:max(68px,calc(env(safe-area-inset-top) + 56px));right:max(12px,env(safe-area-inset-right));display:flex;flex-direction:row;gap:4px;z-index:5}
.camera-controls button,.camera-controls button:first-child{height:44px;width:44px;min-width:44px;padding:0;border-radius:12px;font-size:23px;background:#ffffffe8}.camera-controls button svg,.camera-controls button:first-child svg{width:20px;height:20px}
.fishing-console{bottom:max(12px,env(safe-area-inset-bottom));left:max(12px,env(safe-area-inset-left));right:max(12px,env(safe-area-inset-right));max-width:440px;padding:12px 14px;border-radius:16px;background:#092f3df0;box-shadow:0 6px 24px #083c4a26}
.console-title .eyebrow,.spot-tier,.cast-button kbd{display:none}.console-title h2{font-size:14px;line-height:1.3;letter-spacing:0;margin:0;font-weight:700}.game-status{font-size:14px;line-height:1.35;min-height:0;margin-top:8px}
.fishing-console[data-phase=idle] .game-status,.fishing-console[data-phase=walking] .game-status{position:absolute;width:1px;height:1px;margin:0;overflow:hidden;clip:rect(0,0,0,0)}
.action-row{margin-top:8px;gap:8px}.fishing-console .cast-button{height:auto;min-height:44px;padding:10px 12px;font-size:14px;border-radius:10px;gap:7px;line-height:1.25;box-shadow:0 2px 0 #c38d37}.fishing-console .cast-button svg{width:20px;height:20px}.cancel-button{min-height:44px;padding:0 12px;font-size:14px;border-radius:10px}
.aim-game,.reel-game{margin-top:9px}.aim-bar,.tension-bar{height:14px}.meter-labels{font-size:12px;margin-top:5px}.reel-row{font-size:12px;margin-bottom:5px}.catch-progress{margin-top:8px}
.interaction-button{bottom:calc(var(--console-height) + max(12px,env(safe-area-inset-bottom)) + 12px);min-height:44px;padding:10px 14px;font-size:14px}
.toast{bottom:calc(var(--console-height,98px) + max(12px,env(safe-area-inset-bottom)) + 16px);padding:10px 14px;max-width:min(440px,calc(100% - 32px));font-size:14px}
.island-panel{width:min(430px,calc(100vw - 24px));height:min(720px,calc(100dvh - max(24px,env(safe-area-inset-top)) - max(24px,env(safe-area-inset-bottom))));max-height:calc(100dvh - 24px);min-width:0;border:0;border-radius:20px;padding:0;background:#fff;overflow:hidden}
.island-panel[open]{display:grid;grid-template-rows:auto auto minmax(0,1fr) auto}.panel-header{display:flex;align-items:center;justify-content:space-between;padding:10px 14px 8px 20px;gap:12px}.panel-header h2{font-size:18px;letter-spacing:-.3px}.panel-header .icon-button{width:44px;height:44px}
.panel-tabs{position:static;padding:0 10px;gap:3px}.panel-tabs button{padding:10px 4px;font-size:14px}.tab-panel{padding:20px;min-height:0;overflow-y:auto;overscroll-behavior:contain}.panel-intro h2{font-size:21px}.spot-list{grid-template-columns:1fr}.spot-card{min-height:70px}.fish-grid{grid-template-columns:1fr 1fr}
.view-settings{display:grid;grid-template-columns:auto minmax(80px,1fr) 44px 44px;align-items:center;gap:8px;padding:12px 18px;background:#f3f8f6;border-top:1px solid #dfece7}.view-settings label{font-size:14px;font-weight:700}.view-settings select{min-width:0;height:44px;font:14px var(--font);border:1px solid #cddfdc;border-radius:10px;background:white;color:#285e69;padding:0 8px}.view-settings .weather{grid-column:1/-1;grid-row:2;justify-content:center;min-height:44px;margin:0;font-size:14px;background:#e2f3ed;border:1px solid #cddfdc}.view-settings .icon-button{width:44px;height:44px;background:white;grid-row:1}.view-settings #sound-toggle{grid-column:3}.view-settings #help-open{grid-column:4}
dialog,.friends-dialog{max-height:calc(100dvh - 24px)}dialog::backdrop{backdrop-filter:blur(4px)}
@media(max-height:500px) and (min-width:500px){.camera-controls{top:max(12px,env(safe-area-inset-top));right:calc(max(12px,env(safe-area-inset-right)) + 108px)}.fishing-console{max-width:380px;left:max(12px,env(safe-area-inset-left));right:auto;width:min(380px,calc(100vw - 24px));padding:9px 12px}.console-title{display:none}.game-status{font-size:13px;margin-top:0}.view-settings .weather{grid-column:1;grid-row:1;width:44px;padding:0}.view-settings .weather span,.view-settings label{display:none}.view-settings{grid-template-columns:44px minmax(80px,1fr) 44px 44px;padding:8px 14px}.view-settings select{grid-column:2;grid-row:1}.panel-header{padding:4px 12px 0 18px}.panel-tabs button{flex-direction:row;padding:7px 3px}.tab-panel{padding:14px 18px}}

/* Thumb controls stay inside the game and respect the phone safe area. */
.movement-pad{position:absolute;z-index:6;left:max(12px,env(safe-area-inset-left));bottom:max(12px,env(safe-area-inset-bottom));display:grid;grid-template-columns:repeat(3,44px);grid-template-rows:repeat(2,44px);gap:3px;touch-action:none;user-select:none}
.movement-pad button{width:44px;height:44px;border-radius:13px;background:#092f3ddd;color:white;font-size:20px;touch-action:none;box-shadow:0 3px 10px #073f4825}.movement-pad button:active{background:#197c89}.movement-pad #move-up{grid-column:2}.movement-pad #move-left{grid-column:1;grid-row:2}.movement-pad #move-down{grid-column:2;grid-row:2}.movement-pad #move-right{grid-column:3;grid-row:2}
.fishing-console{left:auto;width:min(440px,calc(100vw - 172px));right:max(12px,env(safe-area-inset-right));padding:10px}
.camera-controls{top:auto;bottom:calc(var(--console-height,98px) + max(12px,env(safe-area-inset-bottom)) + 10px);right:max(12px,env(safe-area-inset-right));gap:3px}
.camera-controls button,.camera-controls button:first-child{width:40px;min-width:40px;height:44px}.fishing-console .cast-button{padding:10px 6px}.fishing-console .cast-button svg{display:none}.action-row{flex-wrap:wrap}.cancel-button{flex:1}.fishing-console .game-status{font-size:14px}.interaction-button{bottom:calc(var(--console-height) + max(12px,env(safe-area-inset-bottom)) + 68px)}
@media(max-width:359px){.movement-pad{grid-template-columns:repeat(3,40px);gap:2px}.movement-pad button{width:40px;height:44px}.fishing-console{width:calc(100vw - 156px)}.console-title h2{font-size:14px}.camera-controls{gap:2px}.camera-controls button,.camera-controls button:first-child{width:36px;min-width:36px}}
/* Circular thumb stick, quiet HUD and night surfaces. */
.movement-pad{display:block;width:112px;height:112px;touch-action:none}
.joystick{position:relative;display:block!important;width:112px!important;height:112px!important;min-width:112px;border-radius:50%!important;background:#092f3d88!important;border:2px solid #ebffff70;box-shadow:0 4px 20px #00343d30!important;touch-action:none;user-select:none}
.joystick-ring{position:absolute;inset:13px;border:1px solid #ffffff40;border-radius:50%}
#joystick-thumb{position:absolute;width:44px;height:44px;left:32px;top:32px;border-radius:50%;background:#efffffed;border:3px solid #9cced5;box-shadow:0 3px 10px #00303c33;pointer-events:none}
.joystick:disabled{opacity:.35}.joystick:focus-visible{outline:3px solid #ffd370;outline-offset:3px}
.fishing-console{width:min(440px,calc(100vw - 152px))}.camera-controls button,.camera-controls button:first-child{width:36px;min-width:36px;height:44px}.camera-controls #night-quick[aria-pressed=true]{background:#1a405f;color:#fff0b2}
.encounter-banner{position:absolute;top:max(68px,calc(env(safe-area-inset-top) + 56px));left:max(12px,env(safe-area-inset-left));z-index:5;display:flex;align-items:center;gap:8px;padding:9px 12px;min-height:44px;background:#092f3deb;color:#d6faff;border:1px solid #a7ebff8c;border-radius:13px;font-size:14px;box-shadow:0 3px 15px #073f4833}
.shop-section,.market-section{margin-top:22px}.shop-section h3,.market-section h3{font-size:18px;margin:18px 0 10px}.shop-section p,.market-section>p{font-size:14px;line-height:1.5;color:#54747d;margin:8px 0 14px}
.order-card{padding:14px;border:1px solid #d9e8e6;border-radius:14px;margin:10px 0;background:#f7fbf8}.order-card h4{font-size:16px;line-height:1.4}.order-card p{font-size:14px;line-height:1.5;margin:7px 0 12px;color:#51737c}.order-card button{min-height:44px;padding:8px 12px;border-radius:10px;background:#17666c;color:white;font-size:14px;font-weight:650;line-height:1.4}.order-card button:disabled{background:#718c91;color:#fff}.order-card .eyebrow{font-size:12px;color:#50757c}
.funny-art{font-size:100px;line-height:1.2;text-align:center;margin:14px 0}.catch-dialog:has(.funny-art:not(.hidden)) .catch-art{display:none}.catch-story{font-size:16px;line-height:1.5;color:#54747d}.record-badge{display:inline-block;background:#e5f6e9;color:#246744;border-radius:20px;padding:7px 12px;font-size:14px;font-weight:700;margin:8px 0}
[data-night=true] .island-panel,[data-night=true] dialog{background:#102c40;color:#edf6ff}[data-night=true] .tab-panel p,[data-night=true] .panel-intro p,[data-night=true] .catch-story{color:#b5d0dd}[data-night=true] .spot-card,[data-night=true] .gear-card,[data-night=true] .fish-card,[data-night=true] .recipe-card,[data-night=true] .order-card,[data-night=true] .bait-choice{background:#193b50;border-color:#31566a;color:#e5f5ff}[data-night=true] .bait-choice.selected{background:#1c4f54;border-color:#75cbbc}[data-night=true] .bait-choice small,[data-night=true] .order-card p,[data-night=true] .recipe-card p,[data-night=true] .order-card .eyebrow,[data-night=true] .shop-section p,[data-night=true] .market-section>p{color:#b5d0dd}[data-night=true] .ingredient-stock span,[data-night=true] .view-settings{background:#1b3e52;color:#e5f5ff}[data-night=true] .panel-tabs button{color:#adcddb}[data-night=true] .panel-tabs button[aria-selected=true]{color:#ffd370}[data-night=true] .fishing-console{background:#061e30f2}
@media(max-width:359px){.fishing-console{width:calc(100vw - 148px)}.camera-controls{gap:2px}.camera-controls button,.camera-controls button:first-child{width:34px;min-width:34px}.encounter-banner{gap:6px;font-size:14px;padding:8px 10px}}
@media(max-height:420px) and (min-width:500px){.joystick,.movement-pad{width:98px!important;height:98px!important;min-width:98px}.joystick #joystick-thumb{left:25px;top:25px}.fishing-console{width:min(380px,calc(100vw - 142px));right:12px;left:auto}.encounter-banner{top:68px}}

.camera-controls button,.camera-controls button:first-child{width:44px;min-width:44px;height:44px}
/* Fishing meters get the full width while the joystick is disabled. */
.fishing-console:not([data-phase=idle]):not([data-phase=walking]):not([data-phase=result]){width:min(440px,calc(100vw - 24px))}
.action-row{flex-wrap:nowrap}.fishing-console .cast-button{width:auto;min-width:0}.cancel-button{flex:none;white-space:nowrap}
.fishing-console:not([data-phase=idle]):not([data-phase=walking]) .game-status{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}
@media(max-height:420px) and (min-width:500px){.fishing-console .console-title,.fishing-console .game-status{display:none}.fishing-console .action-row{margin-top:6px}.fishing-console .aim-game,.fishing-console .reel-game{margin-top:0}.encounter-banner{max-width:calc(100vw - 340px)}}
@media(max-height:270px) and (min-width:500px){.camera-controls{display:grid;grid-template-columns:repeat(2,44px);bottom:12px;right:calc(min(440px,100vw - 24px) + 22px);gap:4px}.encounter-banner{top:65px;max-width:98px;flex-wrap:wrap;font-size:12px}.encounter-banner span:first-child{display:none}}

/* Small overlays leave the centre of the island open. */
.hud-group{gap:6px}.level-badge{width:32px}.coin-pill{padding-right:9px}
.panel-header h2{margin-right:auto}.panel-header #fullscreen-toggle{flex:none;margin-right:-10px}
.camera-controls #sound-quick{display:grid;place-items:center}.camera-controls{gap:4px}
.camera-controls button{background:#f5fffae6;box-shadow:0 2px 10px #09384018}
.encounter-banner{font-size:13px;padding:6px 10px;gap:6px;border-radius:22px;box-shadow:none;max-width:calc(100vw - 24px)}
.encounter-banner strong{font-size:14px}.encounter-banner #encounter-time{color:#bde0dd;font-variant-numeric:tabular-nums}
.toast{top:max(118px,calc(env(safe-area-inset-top) + 106px));bottom:auto;max-width:min(340px,calc(100% - 40px));padding:8px 12px;font-size:13px;line-height:1.4;pointer-events:none}
.spot-marker{filter:drop-shadow(0 2px 3px #16494b22)}
.island-panel{height:min(650px,calc(100dvh - 76px))}.tab-panel{padding:16px}.panel-tabs button{padding:9px 4px}
.catch-dialog{width:min(370px,calc(100vw - 28px));padding:26px 22px 18px}.catch-dialog h2{font-size:26px;margin:8px 0}.catch-dialog .catch-art{height:140px;margin:5px 0}.catch-dialog .catch-details{margin:9px 0}.catch-dialog .reward-box{padding:12px;margin:12px 0}.catch-dialog .record-badge{font-size:13px;padding:6px 10px}.catch-dialog .cast-button{min-height:44px;padding:12px}
.catch-dialog[open] .catch-art canvas{animation:land-catch .65s cubic-bezier(.2,.9,.3,1.15) both}.catch-dialog[open] .catch-sparkles{animation:catch-glint .9s ease-out both}
@keyframes land-catch{0%{transform:translateY(38px) rotate(-12deg) scale(.65);opacity:0}65%{transform:translateY(-7px) rotate(3deg) scale(1.05);opacity:1}100%{transform:none;opacity:1}}
@keyframes catch-glint{0%{transform:scale(.5);opacity:0}45%{opacity:1}100%{transform:scale(1.08);opacity:.7}}
.chat-unread{position:absolute;right:-3px;top:-4px;min-width:18px;border:2px solid #ecfff8;border-radius:10px;background:#e8835d;color:#fff;font:700 11px var(--font);padding:1px 3px}
.chat-panel{position:fixed;z-index:10;right:max(12px,env(safe-area-inset-right));bottom:max(calc(var(--console-height,112px) + env(safe-area-inset-bottom) + 74px),calc(var(--chat-keyboard,0px) + 8px));width:min(310px,calc(100vw - 24px));max-height:min(310px,calc(var(--chat-viewport-height,100dvh) - 24px));display:flex;flex-direction:column;border:1px solid #d4ebe5;border-radius:16px;background:#f9fffbf5;color:#173f4b;box-shadow:0 8px 32px #05374926;overflow:hidden}
.chat-heading{display:flex;justify-content:space-between;align-items:center;padding:4px 8px 4px 14px;border-bottom:1px solid #dcece5;flex:none}.chat-heading strong{font-size:14px}.chat-heading span{display:block;font-size:12px;color:#52766e;margin-top:3px}.chat-heading button{width:44px;height:44px;flex:none}
.chat-messages{height:160px;min-height:50px;overflow:auto;overscroll-behavior:contain;padding:8px 12px;touch-action:pan-y}.chat-empty{font-size:13px;line-height:1.5;color:#63817d;padding:18px 0}
.chat-message{font-size:14px;line-height:1.4;margin:0 0 9px;overflow-wrap:anywhere}.chat-message strong{display:block;color:#19786f;font-size:12px;margin-bottom:2px}.chat-message.own strong{color:#a2672b}.chat-message span{white-space:pre-wrap}
.chat-form{display:flex;gap:6px;padding:5px 9px;flex:none}.chat-form input{flex:1;min-width:0;width:100%;height:44px;border:1px solid #c4dbd3;border-radius:10px;background:#fff;padding:0 10px;font:16px var(--font);color:#173f4b}.chat-form button{min-height:44px;min-width:50px;border-radius:10px;background:#146b67;color:#fff;font:650 14px var(--font);padding:0 10px}.chat-form button:disabled{opacity:.5}
.chat-status{font-size:12px;line-height:1.35;margin:3px 12px 10px;color:#52766e;flex:none}.chat-panel.hidden{display:none}
[data-night=true] .chat-panel{background:#102f42f5;border-color:#3c5d6c;color:#edfaff}[data-night=true] .chat-heading{border-color:#355567}[data-night=true] .chat-heading span,[data-night=true] .chat-status,[data-night=true] .chat-empty{color:#b2cece}[data-night=true] .chat-message strong{color:#92dfce}[data-night=true] .chat-message.own strong{color:#ffd28c}[data-night=true] .chat-heading button{color:#e5f7f4}
@media(prefers-reduced-motion:reduce){.catch-dialog[open] .catch-art canvas,.catch-dialog[open] .catch-sparkles{animation:none}}
@media(max-height:500px){.chat-panel{bottom:max(8px,calc(var(--chat-keyboard,0px) + 8px));max-height:calc(var(--chat-viewport-height,100dvh) - 16px)}.chat-messages{height:105px}.chat-heading{padding-top:0;padding-bottom:0}.chat-status{margin-bottom:6px}.island-panel{height:calc(100dvh - 24px)}}
@media(max-width:359px){.camera-controls{bottom:calc(max(var(--console-height,98px),112px) + max(12px,env(safe-area-inset-bottom)) + 10px)}}

.bait-card{border:1px solid #d4e6df;border-radius:13px;background:#f5faf8;padding:13px;margin:10px 0}.bait-card.selected{border:2px solid #288877;padding:12px;background:#e9f8ed}.bait-card-top{display:flex;gap:10px;align-items:center}.bait-card-top>span{font-size:26px}.bait-card-top strong{font-size:16px;display:block}.bait-card-top small{font-size:14px;color:#52756d;display:block;margin-top:4px}.bait-card p{font-size:14px;line-height:1.5;margin:9px 0 12px}.bait-actions{display:flex;gap:8px;flex-wrap:wrap}.bait-actions button{min-height:44px;padding:10px 12px;font:650 14px var(--font);border-radius:9px;background:#17666c;color:#fff}.bait-actions button[data-bait]{background:#e1eee8;color:#225b52}.bait-actions button:disabled{opacity:.55;cursor:default}.bait-actions button[aria-pressed=true]{opacity:1;background:#217b66;color:#fff}.shop-section #shop-wallet{font-size:16px;color:#225f56;font-weight:700;margin:8px 0}.shop-section .bait-card p{margin:9px 0 12px}
[data-night=true] .bait-card{background:#193b50;border-color:#31566a;color:#e5f5ff}[data-night=true] .bait-card.selected{background:#1c4f54;border-color:#75cbbc}[data-night=true] .bait-card-top small,[data-night=true] .shop-section #shop-wallet{color:#b5d0dd}
/* Island records stay in a compact, scrollable panel. */
#leaderboard-open{color:#895914;background:#fff3d8f2}
.leaderboard-dialog{width:min(460px,calc(100vw - 24px));padding:24px;overflow:auto;overscroll-behavior:contain;color:#173f4b}
.leaderboard-dialog>.eyebrow{font-size:12px;color:#54897f}.leaderboard-dialog h2{font:500 30px Georgia,serif;margin:8px 0 20px}
.leaderboard-modes{display:flex;gap:5px;background:#edf5f1;padding:5px;border-radius:13px;margin-bottom:16px}.leaderboard-modes button{flex:1;min-width:0;min-height:44px;border-radius:10px;font:700 14px var(--font);padding:8px;color:#51727b;background:transparent}.leaderboard-modes button[aria-pressed=true]{background:#155f69;color:white;box-shadow:0 2px 6px #0a414b20}
.leaderboard-self{display:flex;flex-direction:column;gap:5px;padding:16px;border:1px solid #edcf85;background:#fff6dc;border-radius:14px;min-height:84px}.leaderboard-self>span:first-child{font-size:14px;color:#806333}.leaderboard-self>strong{font-size:22px;line-height:1.2}.leaderboard-self>span:last-child{font-size:14px;line-height:1.5;overflow-wrap:anywhere}
.leaderboard-heading{display:flex;justify-content:space-between;align-items:center;gap:8px;margin:16px 0 4px;font-size:14px}.leaderboard-heading button{min-height:44px;border-radius:9px;background:#edf6f2;color:#24666a;font:600 14px var(--font);padding:8px 12px}.leaderboard-heading button:disabled{opacity:.6}
.leaderboard-list{list-style:none;margin:0;padding:0}.leaderboard-row{display:grid;grid-template-columns:32px minmax(0,1fr) auto;align-items:center;gap:10px;padding:12px 4px;border-bottom:1px solid #e2ece8}.leaderboard-row.is-you{background:#e9f6f0;border-radius:9px}.leaderboard-rank{display:grid;place-items:center;min-height:32px;border-radius:10px;font-size:14px;color:#607d81}.rank-1{background:#ffe6a0;color:#855208}.rank-2{background:#e2eaf0;color:#506572}.rank-3{background:#f9dfc5;color:#80562d}.leaderboard-player strong{display:block;overflow-wrap:anywhere;font-size:14px;line-height:1.4}.leaderboard-player small,.leaderboard-score small{display:block;font-size:12px;color:#617e85;margin-top:3px;line-height:1.3}.leaderboard-score{text-align:right;font-size:18px;color:#246f69}.leaderboard-empty{padding:24px 4px;text-align:center;font-size:16px;line-height:1.5;color:#617e85}
.leaderboard-status,.leaderboard-note{font-size:12px;line-height:1.5;color:#617e85;margin-top:14px}.leaderboard-note{border-top:1px solid #e2ece8;padding-top:12px}.leaderboard-link{display:flex;gap:8px;align-items:center;justify-content:center;width:100%;min-height:44px;background:#fff3d9;border-radius:11px;font:700 14px var(--font);color:#785223;margin-top:20px}.leaderboard-link svg{width:20px;height:20px}
[data-night=true] .leaderboard-dialog{background:#102c40;color:#edf6ff}[data-night=true] .leaderboard-modes,[data-night=true] .leaderboard-heading button{background:#193b50;color:#cae4ec}[data-night=true] .leaderboard-self{background:#3e3828;border-color:#857148}[data-night=true] .leaderboard-self>span:first-child{color:#ecd59d}[data-night=true] .leaderboard-row{border-color:#31566a}[data-night=true] .leaderboard-row.is-you{background:#1c4f54}[data-night=true] .leaderboard-score{color:#94ded0}[data-night=true] .leaderboard-player small,[data-night=true] .leaderboard-score small,[data-night=true] .leaderboard-status,[data-night=true] .leaderboard-note,[data-night=true] .leaderboard-empty{color:#b5d0dd}
@media(max-width:359px){.topbar .level-stat{display:none}.hud-group{gap:4px}.header-stats{gap:8px}.leaderboard-dialog{padding:20px 16px}.leaderboard-row{gap:7px}}
/* The visible green zone follows the hooked fish and equipped rod. */
.tension-bar{--safe-start:27%;--safe-end:73%;background:linear-gradient(90deg,#ee6e5f80 0 10%,#eec37250 10% var(--safe-start),#49d1a34d var(--safe-start) var(--safe-end),#eec37250 var(--safe-end) 88%,#ee6e5f80 88%)}
.safe-zone{left:var(--safe-start);width:calc(var(--safe-end) - var(--safe-start))}
#fight-label{color:#d3eee5;text-align:right;letter-spacing:0}

/* Compact, scrollable sound controls; the quick speaker stays within thumb reach. */
.sound-dialog{width:350px;padding:24px}.sound-dialog h2{font-size:22px;margin:0 48px 16px 0}
.sound-master,.sound-preview{min-height:44px;width:100%;border-radius:11px;font-size:14px;font-weight:700;padding:10px 14px}
.sound-master{display:flex;justify-content:center;align-items:center;gap:9px;background:#e6f4ef;color:#246e68}.sound-master svg{width:20px;height:20px}.sound-master[aria-pressed=true]{background:#166d68;color:white}
.volume-control{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:4px;margin:18px 0}.volume-control label{font-size:16px;font-weight:650}.volume-control output{font-size:14px;font-variant-numeric:tabular-nums;color:#53717a}.volume-control input{grid-column:1/-1;width:100%;min-width:0;height:44px;margin:0;accent-color:#168b83;touch-action:pan-y}
.sound-preview{background:#ffd370;color:#3e351c}.sound-dialog #sound-state{font-size:14px;line-height:1.4;color:#53717a;margin:12px 0 0;text-align:center}
[data-night=true] .sound-master{background:#244d5b;color:#ddf6ee}[data-night=true] .sound-master[aria-pressed=true]{background:#247d76;color:white}[data-night=true] .volume-control output,[data-night=true] .sound-dialog #sound-state{color:#b5d0dd}

.gear-wallet{position:sticky;top:0;z-index:1;background:#e8f5ef;color:#245f58;padding:10px 12px;border:1px solid #c8e4d8;border-radius:10px;font-size:15px;font-weight:700;margin:0 0 14px}
.gear-card h3{font-size:16px}.gear-card p,.gear-card .gear-level{font-size:14px}.gear-card .upgrade-button{font-size:14px;min-height:44px;flex-wrap:wrap}.gear-price{white-space:nowrap}.gear-card .gear-needed{font-size:14px;margin:8px 0 0;text-align:center}
.gear-tiers{margin-top:12px;border-top:1px solid #dbe9e5}.gear-tiers summary{min-height:44px;cursor:pointer;padding:13px 2px 9px;font-size:14px;font-weight:650}.gear-tiers ol{list-style:none;padding:0;margin:0}.gear-tiers li{padding:12px 10px;margin:5px 0;border-radius:9px;background:#f4f8f6;border:1px solid transparent}.gear-tiers li.current{border-color:#8cbfb0;background:#e6f4ee}.gear-tiers li>div{display:flex;flex-wrap:wrap;justify-content:space-between;gap:6px}.gear-tiers strong{font-size:14px}.gear-tiers span{font-size:12px;color:#53717a;font-weight:650}.gear-tiers li p{margin-top:7px;line-height:1.4}
[data-night=true] .gear-wallet,[data-night=true] .gear-tiers li{background:#193b50;color:#e5f5ff;border-color:#31566a}[data-night=true] .gear-tiers li.current{background:#1c4f54;border-color:#75cbbc}[data-night=true] .gear-tiers span{color:#b5d0dd}

.quest-controls{display:grid;gap:.4rem;margin-bottom:1rem}.quest-controls label{font-size:.875rem;font-weight:700}.quest-controls select,.customize-options select{width:100%;min-height:44px;border:1px solid #bad5d3;border-radius:10px;padding:.55rem;background:#fff;color:#153f49;font:inherit}.quest-pages{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin:1rem 0 1.5rem;font-size:.875rem}.quest-pages button:disabled{opacity:.45;cursor:default}
.customize-dialog{position:fixed;inset:auto 0 max(.6rem,env(safe-area-inset-bottom));margin:0 auto;width:min(94vw,430px);max-height:55dvh;overflow:auto;padding:1rem 1.2rem;background:#f5fbf8;color:#153f49;border:1px solid #c2dbd6;border-radius:22px;box-shadow:0 12px 50px #072e3d44}.customize-dialog::backdrop{background:#06252d22}.customize-heading{display:flex;align-items:center;justify-content:space-between;gap:1rem}.customize-heading h2{font-size:1.35rem;margin:0}.customize-dialog p{font-size:.875rem;line-height:1.5}.customize-options{display:grid;grid-template-columns:1fr 1fr;gap:.8rem}.customize-options label{display:grid;gap:.3rem;font-size:.875rem;font-weight:700}#customize-status{min-height:1.5em}#customize-done,#customize-open{width:100%;margin:.5rem 0 1rem}
@media(max-width:340px){.customize-options{grid-template-columns:1fr}.quest-pages{flex-wrap:wrap}}

.leaderboard-name{display:flex;flex-wrap:wrap;align-items:center;gap:6px}.leaderboard-player .leaderboard-level{display:inline-flex;align-items:center;flex-shrink:0;padding:3px 8px;border-radius:9px;background:#d9eee7;color:#205b50;font-size:14px;font-weight:700;line-height:1.3}.leaderboard-player .leaderboard-level.is-estimated{background:#e9e4f3;color:#665185}[data-night=true] .leaderboard-player .leaderboard-level{background:#255649;color:#c5f5df}[data-night=true] .leaderboard-player .leaderboard-level.is-estimated{background:#44385c;color:#e4d6ff}

.achievement-section{margin-bottom:1.4rem;padding:1rem;border:1px solid #dfd1a0;border-radius:14px;background:#fff9e9}.achievement-section>summary{cursor:pointer;font-size:1rem;font-weight:700;line-height:1.6}.achievement-section>summary span{display:block;font-size:.875rem;font-weight:500;color:#63797a}.achievement-intro{font-size:.875rem;line-height:1.5;margin:1rem 0}.achievement-list{display:grid;gap:.75rem}.achievement-card{padding:.8rem;background:#fff;border:1px solid #dce8e2;border-radius:12px}.achievement-card.earned{border-color:#dfbe60}.achievement-title{display:flex;align-items:center;gap:.5rem}.achievement-title h3{font-size:1rem}.achievement-title svg{color:#ad8222}.achievement-card p{font-size:.875rem;line-height:1.5;margin:.5rem 0}.achievement-progress{display:block;font-size:.875rem;color:#607b73;margin-bottom:.6rem}.achievement-card button{width:100%;min-height:44px;border-radius:9px;background:#ffdc84;color:#4c431f;font-weight:700;font-size:.875rem;padding:.6rem}.achievement-card button:disabled{background:#eef1ec;color:#687b73}[data-night=true] .achievement-section{background:#19384a;border-color:#73704b;color:#edf5ff}[data-night=true] .achievement-card{background:#153042;border-color:#385960}[data-night=true] .achievement-card.earned{border-color:#a88b41}[data-night=true] .achievement-section>summary span,[data-night=true] .achievement-progress{color:#b8d0cb}

.catch-price-note{display:block;font-size:.875rem;line-height:1.5;color:var(--muted);margin:6px 0 10px}

.friends-dialog #friends-play{width:100%;min-height:48px;margin:16px 0 20px}.friends-dialog .player-name-row+button{font-size:16px}

.milestone-bonus{margin:12px 0;padding:10px 12px;border:1px solid #dfbe60;border-radius:10px;background:#fff1bc;color:#6a5114;font-size:.875rem;font-weight:700;line-height:1.5}[data-night=true] .milestone-bonus{background:#4e4426;border-color:#a88b41;color:#ffe9a3}

/* Account controls stay inside the compact island welcome. */
.account-card{border:1px solid #c6e3dd;background:#f0faf6;padding:16px;border-radius:14px;margin:0 0 20px;color:#164c56;text-align:left;min-width:0}
.account-card>strong{font-size:16px;line-height:1.4}.account-card>p{font-size:14px;line-height:1.5;margin-top:8px;color:#537b7d}.account-card .account-status{font-weight:650;color:#245e60}
.account-signin,.account-menu-button{display:block;text-align:center;background:#165d68;color:#fff;border-radius:10px;padding:12px 14px;font-size:14px;font-weight:700;text-decoration:none;min-height:44px;margin-top:12px;width:100%}
.account-signin:hover,.account-menu-button:hover{background:#0d4956}.account-email{font-size:14px;line-height:1.5;overflow-wrap:anywhere;margin-top:8px}.account-actions{display:flex;align-items:center;gap:12px;margin-top:12px;flex-wrap:wrap}
.account-actions button,.account-conflict button,.account-retry{font:650 14px var(--font);min-height:44px;padding:10px 14px;border-radius:9px;background:#165d68;color:#fff}.account-actions a{font-size:14px;min-height:44px;display:flex;align-items:center;color:#1d6270;padding:8px}.account-actions button:disabled{opacity:.55;cursor:default}
.account-card .account-retry{background:#fff;color:#165d68;border:1px solid #a9d2cc;margin-top:12px}.account-conflict{margin-top:14px;border-top:1px solid #b5d8d0;padding-top:12px}.account-conflict p{font-size:14px;line-height:1.5;margin-bottom:10px}.account-conflict button{display:block;width:100%;margin-top:8px}.account-conflict button+button{background:#fff;color:#165d68;border:1px solid #a9d2cc}
.account-menu-button{margin-top:24px}.save-note{font-size:14px;overflow-wrap:anywhere}.friends-dialog:has(.account-card) .friends-intro{margin-bottom:16px}
html[data-night=true] .account-card{background:#153e48;border-color:#366674;color:#e2f5f5}html[data-night=true] .account-card>p,html[data-night=true] .account-actions a{color:#bed9db}
@media(max-width:440px){.friends-dialog:has(.account-card){padding:24px 20px}.account-card{padding:14px}.account-actions{gap:8px}}
