:root{color-scheme:dark;background:#142e35}*{box-sizing:border-box}#app{background:radial-gradient(ellipse at 50% 40%,#315654,#162f38 65%,#142832);color:#eae9d6}#app,button{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}button,input,label{touch-action:manipulation;-webkit-touch-callout:none}button{font:inherit;color:inherit;cursor:pointer;border:1px solid #dbedcf35;background:#1a343bdc;border-radius:12px;min-height:44px;padding:8px 14px}button:hover{background:#365058}button:disabled{opacity:.55;cursor:default}button:focus-visible,input:focus-visible,a:focus-visible{outline:2px solid #e5d7fc;outline-offset:3px}[hidden]{display:none!important}#globe,#magic{position:absolute;inset:0;width:100%;height:100%;display:block}#globe{touch-action:none;cursor:grab}#magic{pointer-events:none;image-rendering:pixelated}#app::before{content:'';position:absolute;z-index:1;pointer-events:none;inset:0 0 auto;height:110px;background:linear-gradient(#142b34dc,transparent)}.walk-header{position:absolute;z-index:3;inset:16px 22px auto;display:flex;align-items:center;gap:7px}.wordmark{font-size:14px;letter-spacing:-.03em;font-weight:600;margin-right:auto}.walk-header>button{width:44px;padding:0;font-size:23px;background:#19343bb5}.pocket{display:flex;gap:12px;font-size:10px;padding:10px 14px;border-radius:22px;background:#19343bc9;border:1px solid #dce9d522;color:#d4d8c4}.pocket span{white-space:nowrap}.pocket span:first-child{color:#e3bbd2}.pocket strong{font-weight:700;color:#f0ead3}#toast{position:absolute;z-index:2;top:74px;left:50%;transform:translateX(-50%);max-width:min(380px,calc(100vw - 40px));width:max-content;padding:8px 12px;margin:0;border-radius:12px;background:#19343be5;font-size:11px;line-height:1.5;text-align:center;pointer-events:none;transition:opacity .4s}#toast:empty{opacity:0}#target-label{position:absolute;z-index:1;transform:translate(-50%,-100%);padding:4px 7px;border-radius:7px;background:#17333bd9;font-size:10px;pointer-events:none;white-space:nowrap;color:#e8d8f6}.action-area{position:absolute;z-index:3;bottom:max(30px,env(safe-area-inset-bottom));right:28px;display:flex;flex-direction:column;align-items:center;gap:7px}.action-area small{font-size:10px;text-shadow:0 1px 5px #17333b;color:#dce4cf}#action{min-width:155px;min-height:58px;border-radius:30px;background:#d0bce9;color:#302945;border-color:#e2d3f3;font-size:14px;font-weight:700;box-shadow:0 6px 26px #0c24293b}#action:disabled{background:#1b363de8;color:#c5cfc0;border-color:#c5cfc038;opacity:.8}#joystick{position:absolute;z-index:3;left:28px;bottom:max(25px,env(safe-area-inset-bottom));width:118px;height:118px;border:1px solid #e0e6cc30;border-radius:50%;background:#18343b70;touch-action:none;overscroll-behavior:none}#stick-knob{position:absolute;left:40px;top:40px;width:36px;height:36px;pointer-events:none;border:1px solid #eee2ff70;border-radius:50%;background:#c6b6de55;box-shadow:0 2px 10px #0c252b33}#joystick>span{position:absolute;left:0;right:0;bottom:-17px;text-align:center;font-size:8px;letter-spacing:.15em;color:#adc1b4;pointer-events:none}.stick-key{position:absolute;padding:0;width:32px;min-height:32px;height:32px;border:0;background:transparent;color:#cbd4c270;font-size:14px;touch-action:none}.stick-key.up{top:0;left:42px}.stick-key.down{bottom:0;left:42px}.stick-key.left{top:42px;left:0}.stick-key.right{top:42px;right:0}.fishing-panel{position:absolute;z-index:5;right:22px;top:76px;bottom:120px;width:340px;max-height:650px;overflow:auto;overscroll-behavior:contain;touch-action:pan-y pinch-zoom;border:1px solid #e0d5f140;border-radius:20px;background:#1a323cfa;padding:22px;box-shadow:0 14px 45px #07171c55}.fishing-panel h2{font-size:25px;font-weight:600;letter-spacing:-.04em;margin:8px 0 10px}.fishing-panel p{font-size:12px;color:#bfcec5;line-height:1.6}.eyebrow{font-size:9px;letter-spacing:.14em;color:#b2c8b9}.close{position:absolute;right:8px;top:8px;border:0;width:44px;padding:0;font-size:24px;background:transparent}.shop-item{display:flex;justify-content:space-between;gap:10px;align-items:center;padding:15px 0;border-bottom:1px solid #d7e8ce20}.shop-item strong{display:block;font-size:13px}.shop-item small{display:block;color:#abc1b8;font-size:10px;line-height:1.5;margin-top:5px;max-width:190px}.shop-item button{min-width:76px;font-size:11px;background:#d1c1e91c}.sell{width:100%;margin:10px 0;background:#d8e8c8;color:#243d35;font-size:13px;font-weight:700}.fish-row{display:grid;grid-template-columns:48px 1fr;gap:12px;align-items:center;padding:12px 0;border-bottom:1px solid #d7e8ce20}.fish-row img{width:48px;height:32px;image-rendering:pixelated}.fish-row strong{font-size:12px}.fish-row small{display:block;font-size:10px;color:#b9c8c0;line-height:1.5;margin-top:4px}.fish-row.unknown{opacity:.5}.setting{display:block;padding:12px 0;font-size:12px}.setting input[type=range]{display:block;width:100%;height:36px;accent-color:#c7b2e1}.setting input[type=checkbox]{margin-right:8px;accent-color:#c7b2e1}.world-links{display:flex;flex-wrap:wrap;gap:12px;margin:15px 0}.world-links a{color:#c8d9b8;font-size:11px;min-height:44px;display:flex;align-items:center}.save-note{font-size:10px!important;color:#a9bdb5!important}.menu-buttons{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;margin:15px 0}.menu-buttons button{font-size:12px}dialog{color:#eae5d6;max-width:340px;border:1px solid #c5b1dd70;border-radius:20px;background:#1b343d;padding:25px}dialog::backdrop{background:#10242bc9}dialog p{font-size:13px;line-height:1.6}dialog button{margin:5px 0}.loading{background:#19353c}body.panel-open #joystick,body.panel-open .action-area{visibility:hidden}
@media(max-width:650px){.walk-header{inset:14px 16px auto;flex-wrap:wrap}.wordmark{font-size:12px}.pocket{order:4;flex-basis:auto;padding:7px 11px;gap:14px;margin-right:auto;font-size:9px}.walk-header>button{width:40px;min-height:40px}.fishing-panel{left:16px;right:16px;top:108px;bottom:24px;width:auto;padding:20px}.action-area{right:18px;bottom:max(34px,env(safe-area-inset-bottom))}#action{min-width:150px;min-height:58px;font-size:13px}#joystick{left:22px;bottom:max(29px,env(safe-area-inset-bottom))}#toast{top:108px;font-size:10px}.action-area small{font-size:9px}}
@media(max-height:500px){.walk-header{inset:10px 18px auto;flex-wrap:nowrap}.wordmark{font-size:12px}.pocket{order:0;flex-basis:auto;margin:0;font-size:9px}.walk-header>button{width:40px;min-height:40px}.fishing-panel{left:auto;right:18px;top:66px;bottom:15px;width:310px;padding:18px}.action-area{right:24px;bottom:20px}#action{min-height:50px;min-width:145px}#joystick{width:102px;height:102px;left:25px;bottom:25px}#stick-knob{left:32px;top:32px}#joystick>.up,#joystick>.down{left:34px}#joystick>.left,#joystick>.right{top:34px}#toast{top:64px}.pocket{padding:8px 12px}}

.collection-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:20px 0 12px}.collection-slot{text-align:left;min-width:0;padding:12px 10px;border-radius:13px;border-color:color-mix(in srgb,var(--fish-accent) 38%,transparent);background:#112c34}.collection-number{display:block;font-size:9px;letter-spacing:.1em;color:var(--fish-accent)}.collection-slot img{display:block;width:100%;height:90px;object-fit:contain;image-rendering:pixelated;margin:5px 0}.collection-slot strong{display:block;font-size:11px;line-height:1.5}.collection-slot small{display:block;font-size:9px;color:var(--fish-accent);margin-top:4px}.collection-slot.unknown img{opacity:.88}.collection-slot:disabled{opacity:1}.legacy-collection{border-top:1px solid #e6d7ef25;margin-top:20px;padding-top:16px;font-size:12px}.legacy-fish{display:flex;align-items:center;gap:12px;width:100%;text-align:left;border:0;border-radius:0;border-bottom:1px solid #d7e8ce20;background:transparent;font-size:11px;padding:12px 0}.legacy-fish img{width:48px;image-rendering:pixelated}.legacy-fish small{display:block;font-size:9px;color:#a8bdb4;margin-top:4px}.legacy-fish>span:last-child{margin-left:auto}
.catch-card{position:absolute;z-index:4;right:24px;top:100px;width:280px;max-height:calc(100dvh - 255px);overflow:auto;overscroll-behavior:contain;touch-action:pan-y pinch-zoom;padding:14px 16px 16px;border:1px solid var(--fish-accent);border-radius:17px;color:#ebead4;background:#18313cf5;box-shadow:0 12px 35px #071a2266;animation:card-arrive .35s ease-out}.card-heading{display:flex;justify-content:space-between;align-items:center;height:26px;gap:8px}.card-heading>span{font-size:8px;letter-spacing:.15em;color:#becfc7}.card-close{width:44px;height:44px;padding:0;background:transparent;border:0;font-size:24px;margin-right:-12px}.card-discovery{display:block;text-align:center;font-size:8px;letter-spacing:.17em;color:var(--fish-accent);margin-top:8px}.fish-vignette{position:relative;height:140px;margin:6px 0 10px;isolation:isolate;overflow:hidden;background:radial-gradient(ellipse,#3c596655,transparent 70%);border-bottom:1px solid #d0d8c823}.fish-vignette>img{position:relative;display:block;height:100%;width:100%;object-fit:contain;image-rendering:pixelated;z-index:1}.fish-orbit{position:absolute;left:50%;top:50%;width:132px;height:70px;border:1px solid color-mix(in srgb,var(--fish-accent) 25%,transparent);border-radius:50%;transform:translate(-50%,-50%) rotate(-25deg)}.fish-glint{position:absolute;left:22%;top:25%;font-size:15px;color:var(--fish-accent);animation:fish-glint 3s ease-in-out infinite}.fish-inward-orbit .fish-vignette{background:radial-gradient(ellipse,#171726 10%,#292c4755 50%,transparent 70%)}.fish-inward-orbit .fish-orbit{border-style:dashed;animation:fish-orbit 12s linear infinite}.fish-crescent-mist .fish-orbit{border-width:0 0 2px;border-color:#c9d2ed80;box-shadow:0 4px 8px #c9d2ed13}.fish-warm-glints .fish-vignette{background:radial-gradient(ellipse,#dfb56817,transparent 70%)}.card-title h2{font-weight:600;font-size:20px;line-height:1.15;letter-spacing:-.035em;margin:0 0 7px}.rarity{font-size:9px;letter-spacing:.08em;color:var(--fish-accent)}.fish-lore{font-size:10px;line-height:1.5;color:#b8ccc3;margin:10px 0}.catch-facts{display:flex;border-top:1px solid #dde9d225;padding-top:10px;gap:28px}.catch-facts span{font-size:8px;color:#aec3ba}.catch-facts strong{display:block;color:#ebe9d3;font-size:13px;margin-bottom:4px}.card-water{font-size:9px;color:#bbc9bc;margin:9px 0}.card-foot small{display:block;font-size:8px;color:#8fa8a6;margin:10px 0}.card-continue{width:100%;min-height:44px;font-size:11px;color:#23383d;background:#d4ddc6;border:0}.card-continue:hover{background:#e0e6d5}
@keyframes card-arrive{from{opacity:0;translate:0 10px}to{opacity:1;translate:0 0}}@keyframes fish-glint{0%,100%{opacity:.2;scale:.7}50%{opacity:.8;scale:1}}@keyframes fish-orbit{to{transform:translate(-50%,-50%) rotate(335deg)}}
@media(max-width:650px) and (min-height:501px){.catch-card{top:auto;bottom:172px;left:50%;right:auto;transform:translateX(-50%);width:258px;max-height:calc(100dvh - 315px)}.fish-vignette{height:126px}.card-title h2{font-size:19px}}
@media(max-height:500px){.catch-card{top:63px;right:18px;width:245px;max-height:calc(100dvh - 175px);padding:10px 14px}.fish-vignette{height:100px}.fish-lore{display:none}.card-title h2{font-size:17px}.card-discovery{margin-top:4px}}
@media(prefers-reduced-motion:reduce){.catch-card,.fish-glint,.fish-inward-orbit .fish-orbit{animation:none!important}}.catch-card.reduced-motion,.reduced-motion .fish-glint,.reduced-motion .fish-orbit{animation:none}
.fish-inward-orbit .fish-orbit::before,.fish-inward-orbit .fish-orbit::after{content:'';position:absolute;left:50%;top:50%;width:3px;height:3px;background:#d4b7ed;box-shadow:24px 11px 0 #8f80c7,-19px -8px 0 #b1c4e3;animation:inward-motes 4s linear infinite}.fish-inward-orbit .fish-orbit::after{animation-delay:-2s}@keyframes inward-motes{0%{opacity:0;transform:rotate(0deg) scale(1.7)}20%{opacity:.7}100%{opacity:0;transform:rotate(160deg) scale(.15)}}@media(prefers-reduced-motion:reduce){.fish-orbit::before,.fish-orbit::after{animation:none!important}}
#trail-hint{position:absolute;z-index:2;top:76px;left:22px;max-width:245px;padding:7px 11px;border:1px solid #d9e8cb36;border-radius:10px;background:#19343bdc;color:#e9edcf;font-size:11px;font-weight:700;pointer-events:none}
.report-map{display:block;width:100%;height:auto;margin:13px 0 7px;border:1px solid #bcd6b53b;border-radius:13px;image-rendering:pixelated}.report-map text{font-size:21px;fill:#f2e4b8;font-weight:700}.report-legend{display:flex;flex-wrap:wrap;justify-content:space-between;gap:6px;color:#bbd0be;font-size:9px}.report-places,.bait-options{display:grid;gap:8px;margin-top:15px}.report-place,.bait-option{width:100%;text-align:left;border:1px solid #e4e9c936;background:#17343be6}.report-place{display:grid;gap:4px;padding:12px}.report-place strong,.bait-option strong{font-size:12px;color:#f0ead4}.report-place span,.report-place small,.bait-option small{display:block;font-size:10px;line-height:1.45;color:#bed0c4}.report-place.selected{border-color:#e7d5a7;background:#354b43}.report-place small{color:#e6d3a8}.bait-option{display:flex;align-items:center;gap:12px;padding:11px}.bait-dot{color:var(--bait-color);font-size:29px;text-shadow:0 0 12px var(--bait-color)}.bait-option small{margin-top:2px}.bait-option strong small{display:inline;color:var(--bait-color);margin:0}.bait-cancel,.report-link{width:100%;margin-top:12px}.bait-cancel{background:transparent}.report-link{background:#d8e8c8;color:#243d35;font-weight:700;font-size:11px}
@media(max-width:650px){#trail-hint{top:108px;left:16px;max-width:190px;font-size:10px}.fishing-panel:has(.report-map){top:105px;bottom:20px}}
@media(max-height:500px){#trail-hint{top:64px;left:18px}.fishing-panel:has(.report-map){top:66px;bottom:12px}}
.report-map .map-marker-halo{fill:#17342aeb;stroke:#e8e2bb;stroke-width:1.5}.report-map .map-marker-core{fill:#e6d7a3}.report-map .map-marker.player .map-marker-halo{fill:#26354a;stroke:#f8eee0;stroke-width:2}.report-map .map-marker.player .map-marker-core{fill:#f3b879}.report-map .map-marker.selected .map-marker-halo{stroke:#f5d28c;stroke-width:3}.report-map .map-marker text{font-size:11px;fill:#f7f2d8;font-weight:700;paint-order:stroke;stroke:#1c302e;stroke-width:3px;stroke-linejoin:round;letter-spacing:.01em}
.bait-art{display:block;flex:none;width:48px;height:48px;background-image:var(--mushroom-atlas);background-size:400% 100%;background-repeat:no-repeat;image-rendering:pixelated}.bait-option:disabled .bait-art{opacity:.68}
.black-hole-aura{position:absolute;left:-20%;top:-20%;width:140%;height:140%;object-fit:contain;image-rendering:pixelated;opacity:.72;pointer-events:none;z-index:0}.fish-spritefusion-black-hole .fish-vignette{background:radial-gradient(ellipse,#1c2032,transparent 70%)}

#spell-ui{position:absolute;z-index:4;width:min(272px,calc(100vw - 28px));padding:11px 15px 12px;text-align:center;transform:translate(-50%,-50%);border:1px solid #e2d5f19c;border-radius:22px;background:#152d3bea;box-shadow:0 12px 38px #07151dc7,0 0 25px #d6baee33;touch-action:none;user-select:none;-webkit-user-select:none;overscroll-behavior:contain}
.spell-eyebrow{font-size:9px;letter-spacing:.18em;color:#e4d0f5;font-weight:700}
#spell-ring{display:block;width:min(180px,34dvh);height:min(180px,34dvh);min-width:128px;min-height:128px;margin:0 auto;overflow:visible;filter:drop-shadow(0 0 10px #ac83d48c)}
.spell-track{fill:none;stroke:#c6c2dc5e;stroke-width:13;stroke-dasharray:2 6}
#spell-arc{fill:none;stroke:#e9c5fb;stroke-width:20;stroke-linecap:round}
#spell-fish{fill:#ffe6a3;stroke:#fff5db;stroke-width:3;filter:drop-shadow(0 0 5px #ffe3a2)}
.spell-core{fill:#9f7bc837;stroke:#d5b5eb8c;stroke-width:1.5}
#spell-ring text{fill:#f1dbfd;font-size:31px}
#spell-state{min-height:17px;font-size:11px;font-weight:700;color:#f4e2bc}
#spell-ui:not(.contact) #spell-state{color:#ceb7db}
#spell-meter{height:9px;margin:8px 9px 7px;overflow:hidden;border-radius:20px;background:#a7a0b550;border:1px solid #d5c6df70}
#spell-fill{display:block;height:100%;width:20%;border-radius:20px;background:linear-gradient(90deg,#9fd8c5,#f7df9a);box-shadow:0 0 12px #e8d2ab}
#spell-ui:not(.contact) #spell-fill{background:linear-gradient(90deg,#af93cf,#d3aab6)}
.spell-hint{margin:4px 0 9px;font-size:10px;line-height:1.35;color:#e5dce8}
#spell-hold{width:100%;min-height:62px;border-radius:30px;background:#d8b9f0;color:#263044;border-color:#f5ddff;font-size:15px;font-weight:800;touch-action:none;user-select:none;-webkit-user-select:none;box-shadow:0 5px 17px #b994d34f}
#spell-hold.pressed{background:#f4dda7}
#spell-cancel{display:block;margin:4px auto 0;min-height:36px;padding:4px 16px;border:0;background:transparent;color:#c5c7d1;font-size:10px}
body.spell-open #joystick,body.spell-open .action-area{visibility:hidden}
@media(max-width:650px){#spell-ui{width:min(272px,calc(100vw - 24px))}}
@media(max-height:500px){#spell-ui{width:245px;padding:7px 12px}#spell-ring{width:116px;height:116px;min-width:116px;min-height:116px}.spell-hint{margin:2px 0 4px}#spell-hold{min-height:50px}}
