[hidden]{display:none!important}
.play-menu{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.play-tile,.play-row,.play-stat{background:#fcf0d4;color:#214447;border:2px solid #b9ae81;box-shadow:0 3px 0 #ad9a6e55}
.play-tile{position:relative;padding:20px 34px 20px 17px;text-align:left;cursor:pointer;font:inherit}
.play-tile:hover,.play-tile:focus-visible{background:#fff6db;border-color:#467b66}
.play-tile strong,.play-row strong{display:block;font-size:1.03rem}
.play-tile span,.play-row p,.play-stat span{display:block;color:#45635e;line-height:1.55;font-size:.87rem;margin:.25rem 0 0}
.play-tile b{position:absolute;right:15px;top:14px;color:#577c54;font-size:1.7rem}
.play-row{display:flex;justify-content:space-between;gap:14px;align-items:center;margin:0 0 11px;padding:13px 15px;min-width:0}
.play-row>div:first-child{min-width:0}
.play-row h3{margin:4px 0}
.play-row .eyebrow{display:block;margin-bottom:4px}
.play-row details{margin-top:7px;color:#45635e}
.play-row details summary{cursor:pointer;font-size:.86rem}
.play-row ul{padding-left:1.1rem}
.play-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.play-actions .pixel-button{min-height:40px;text-align:center}
.play-row>.play-actions{justify-content:flex-end;flex-shrink:0;max-width:48%}
.play-hero{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:19px 22px;margin-bottom:14px;background:#1d4946;color:#fff0c5;border:3px solid #123b39;box-shadow:inset 0 0 0 2px #467663,0 4px 0 #a89b73}
.play-hero .eyebrow{color:#ffd275}
.play-hero h2{margin:5px 0 6px;color:#fff0c5}
.play-hero p{margin:0;color:#e3e8ce;font-size:.9rem}
.play-times{display:grid;gap:6px;min-width:210px;font-size:.81rem}
.play-times span{display:flex;justify-content:space-between;gap:14px}
.play-times b{font-variant-numeric:tabular-nums;color:#ffda7c}
.play-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px;margin-bottom:16px}
.play-stat{padding:11px 12px}
.play-stat strong{display:block}
.play-stat>b{font-size:.8rem;color:#426a54}
.play-tabs{display:flex;flex-wrap:wrap;gap:6px;margin:12px 0}
.play-tabs button{min-height:40px;padding:6px 13px;background:#ece2bf;border:2px solid #9eab82;color:#244a45;font-size:.82rem;font-weight:700;cursor:pointer}
.play-tabs button[aria-pressed=true]{background:#315f52;color:#fff0c5;border-color:#1e473c}
.play-empty{padding:16px;background:#e9e3c6;border:1px dashed #9f9b75;color:#42635a}
.play-chip,.play-rarity{display:inline-block;padding:3px 6px;background:#d8e4bf;color:#26483f;font-size:.72rem;font-weight:700}
.play-form-error{padding:10px;color:#7b2828;background:#f4d5b3;border-left:3px solid #a84130}
.play-ref{overflow-wrap:anywhere}
.fish-entry{display:flex;gap:12px;align-items:center}
.fish-art{display:block;width:66px;height:66px;flex:0 0 66px;background:#294d48 url('./assets/pixel/fishing-fish.png') var(--fish-x) var(--fish-y)/200% 200%;image-rendering:pixelated;border:2px solid #456e55}
.rarity-Rare{background:#bfdeea;color:#254767}
.rarity-Epic{background:#e9ccee;color:#55356e}
.rarity-Legendary{background:#ffcf69;color:#653f16}
.fish-stats{grid-template-columns:repeat(2,minmax(0,1fr));margin-top:16px}
#pvp-alert{background:#f0b54f;color:#372d22}
.play-full{position:fixed;z-index:20;inset:0;background:radial-gradient(ellipse at top,#39645e,#163838 72%);color:#fff1cd;overflow:auto;overscroll-behavior:contain}
.fight-wrap{max-width:min(1080px,calc((100dvh - 137px)*1.7778));margin:0 auto;padding:12px 16px}
.fight-heading{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:0 0 9px}
.fight-heading .eyebrow{color:#edc773}
.fight-heading h1{font-size:clamp(18px,3vw,27px);line-height:1.2;margin:3px 0 0;color:#fff1cd}
.fight-stage,.lake-scene{position:relative;overflow:hidden;border:3px solid #e7c079;box-shadow:0 5px 0 #0c2525;background:#173536}
.fight-stage canvas{display:block;width:100%;height:auto;aspect-ratio:16/9;image-rendering:pixelated;outline:0}
.fight-hud{display:grid;grid-template-columns:1fr auto 1fr;gap:12px;position:absolute;top:0;left:0;right:0;padding:9px 12px 15px;background:linear-gradient(#132d30e8,#132d3000);pointer-events:none}
.fight-health{min-width:0}
.fight-health.right{text-align:right}
.fight-health strong,.fight-health small{display:block;text-shadow:1px 2px #132f2e;font:700 clamp(9px,2vw,15px) inherit}
.fight-health small{font-size:.69rem}
.health-track{height:13px;margin:3px 0;background:#602b32;border:2px solid #e8d09c}
.health-track i{height:100%;display:block;width:100%;background:linear-gradient(#9bdb80 48%,#59a674 49%);transition:width .12s}
.fight-health.right .health-track i{margin-left:auto}
.fight-clock{font:700 clamp(18px,3vw,31px)/1 HakkenPixel,monospace;background:#153635;padding:8px 9px;border:2px solid #e7c079;align-self:start}
.fight-call{position:absolute;top:26%;left:50%;transform:translateX(-50%);min-width:8ch;text-align:center;padding:8px 11px;border:2px solid #f1cc83;background:#153635e8;font-weight:900;white-space:nowrap}
.fight-result{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:center;align-items:center;background:#102d2de8;text-align:center}
.fight-result h2{font-size:clamp(23px,5vw,48px);color:#ffdd82;margin:0}
.fight-result p{margin:3px 0}
.fight-result .doc-links{justify-content:center}
.fight-controls{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-top:10px}
.fight-keyboard{font-size:.88rem;color:#f5e5bd}
.fight-keyboard kbd,.fight-buttons kbd,.lake-controls kbd{background:#f8e7be;color:#244941;padding:1px 4px;border-bottom:2px solid #ad9165;margin:0 2px;font-size:.8em}
.fight-buttons{display:flex;gap:8px}
.fight-buttons button,.fight-stick{min-height:44px;touch-action:none;user-select:none;color:#fff1cd;background:#315c53;border:2px solid #77a283;box-shadow:0 3px 0 #102727}
.fight-buttons button{padding:5px 10px;font-weight:700;cursor:pointer}
.fight-buttons button:active,.lake-controls .held{background:#f5c768;color:#25453e}
.fight-stick{display:none;position:relative;justify-content:space-between;align-items:center;width:100px;height:50px;padding:0 6px;border-radius:18px}
.fight-stick b{position:absolute;left:50%;top:50%;width:33px;height:33px;border:2px solid #24463d;background:#f5ce7d;border-radius:50%;transform:translate(calc(-50% + var(--stick-x,0px)),-50%);pointer-events:none}
.fight-instruction{display:flex;justify-content:space-between;align-items:center;gap:8px;font-size:.87rem;margin:8px 0 2px}
.fight-instruction b{white-space:nowrap;color:#f4cd72}
.fish-wrap{max-width:min(870px,calc((100dvh - 160px)*1.5))}
.lake-scene>img{display:block;width:100%;height:auto;image-rendering:pixelated}
.lake-line{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.lake-bobber{position:absolute;left:58%;top:53%;width:7px;height:10px;background:#f8f5c9;border-bottom:4px solid #d34b37;box-shadow:1px 1px #24443d;animation:bob 1.3s steps(3) infinite}
.lake-bobber.bite{animation:bob .28s steps(3) infinite;background:#ffbd3f}
@keyframes bob{50%{transform:translateY(4px)}}
.lake-call{position:absolute;bottom:4%;left:4%;right:4%;margin:0;padding:8px 10px;background:#133735e8;border:2px solid #edd59a;color:#fff0c5;text-align:center;font-weight:700}
.lake-catch{position:absolute;display:grid;place-items:center;gap:5px;top:38%;left:50%;transform:translate(-50%,-30%);background:#173c38ee;border:2px solid #efd29c;padding:11px 16px;text-align:center;min-width:180px}
.lake-catch span{font-size:.8rem}
.lake-controls{display:flex;gap:9px;align-items:center;flex-wrap:wrap;padding:12px 0}
.lake-bait{flex:1;font-size:.9rem}
.lake-reel{flex:1;min-width:170px}
.lake-reel p{margin:3px 0 0;font-size:.78rem}
.reel-track{height:21px;background:#112e2c;border:2px solid #edcf80;position:relative}
.reel-zone,.reel-needle{position:absolute;inset-block:0}
.reel-zone{background:#7daf68}
.reel-needle{width:4px;background:#ffe28a;box-shadow:1px 0 #462b1c}
.lake-controls button{touch-action:none}
@media (pointer:coarse),(max-width:720px){.fight-stick{display:flex}.fight-keyboard{display:none}.fight-buttons kbd{display:none}}
@media (max-width:600px){
 .play-row{align-items:flex-start;flex-direction:column;gap:8px}.play-row>.play-actions{justify-content:flex-start;max-width:100%}
 .play-menu{gap:7px}.play-tile{padding:11px 22px 11px 10px}.play-tile b{right:8px}.play-tile span{font-size:.76rem}
 .play-hero{align-items:flex-start;flex-direction:column;padding:12px}.play-times{width:100%}
 .play-stats{grid-template-columns:1fr;gap:6px}.play-stat{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;padding:8px}.play-stat span{margin:0}
 .fish-stats{grid-template-columns:1fr 1fr}.fish-entry{gap:7px}.fish-art{width:52px;height:52px;flex-basis:52px}
 .fight-wrap,.fish-wrap{width:100%;max-width:100%;padding:9px 7px}.fight-buttons{gap:5px}.fight-buttons button{padding-inline:8px}
 .fight-hud{gap:5px;padding:4px 6px 8px}.health-track{height:9px}
 .fight-result .doc-links{margin:4px 0}
}
@media (max-height:500px) and (orientation:landscape){
 .fight-wrap{max-width:min(95vw,calc((100dvh - 79px)*1.7778));padding:3px 5px}
 .fight-heading{padding-bottom:3px}.fight-heading h1{font-size:15px}.fight-heading .eyebrow{font-size:8px}
 .fight-controls{margin-top:4px}.fight-stick,.fight-buttons button{min-height:38px;height:38px}
}
.play-channel-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:18px 0}.play-channel{display:grid;grid-template-columns:1fr auto;gap:10px;padding:12px;background:#e6dfbd;border:2px solid #a8b08a;color:#244a45}.play-channel strong{font:10px HakkenPixel,monospace;line-height:1.8}.play-channel>span{font-size:12px;white-space:nowrap}.play-channel .pixel-button{grid-column:1/-1;min-height:37px;padding:8px;font-size:9px}.play-channel.current{background:#fae0a0;border-color:#b38337}@media(max-width:650px){.play-channel-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}}

.mission-field-test{margin:14px 0;padding:14px;border:2px solid #8c9f7c;background:#e8e4c5}.mission-field-test>strong{color:#31584a}.mission-field-test p{margin:8px 0!important}.mission-requirement{border-left:3px solid #9d783a;padding-left:10px;margin-top:10px!important}
