/* A quiet, detailed cave around a clear, touch-friendly rhythm challenge. */
.rhythm-fishing{position:fixed;inset:0;z-index:97;display:block;overflow:auto;overscroll-behavior:contain;padding:max(18px,env(safe-area-inset-top,0px)) max(22px,env(safe-area-inset-right,0px)) max(24px,env(safe-area-inset-bottom,0px)) max(22px,env(safe-area-inset-left,0px));color:#f7f0ff;background:radial-gradient(ellipse at 40% 0,#253755,#11192e 60%,#0c1123);font:15px/1.5 system-ui,sans-serif;box-sizing:border-box}
.rhythm-fishing[hidden],.rhythm-fishing [hidden]{display:none!important}.rhythm-fishing *{box-sizing:border-box}.fishing-shell{max-width:1160px;margin:auto}.rhythm-fishing button,.rhythm-fishing select{font:inherit;color:#fff5ff;background:#32314f;border:1px solid #9985b6;border-radius:7px;min-width:44px;min-height:44px;padding:9px 13px;cursor:pointer;touch-action:manipulation}.rhythm-fishing button:hover{background:#474164;border-color:#c2ade1}.rhythm-fishing button:disabled{opacity:.45;cursor:default}.rhythm-fishing :focus-visible{outline:3px solid #a0fbe7;outline-offset:3px}.rhythm-fishing h1,.rhythm-fishing h2,.rhythm-fishing h3{line-height:1.2}.fishing-heading{position:static!important;display:flex!important;align-items:center;justify-content:space-between;gap:18px;flex-wrap:wrap;padding:0 0 16px!important;margin:0;background:none!important;border:0!important;box-shadow:none!important}.fishing-heading h1{font-size:clamp(27px,4vw,42px);letter-spacing:1px;color:#b5fff0;margin:5px 0 7px;text-shadow:0 0 25px #67cfbb44}.fishing-heading p{color:#c3c4de;margin:0;font-size:14px}.fishing-eyebrow{color:#e5c788;font:700 10px/1.6 system-ui;letter-spacing:1.8px;margin:0 0 5px}.fishing-heading-actions{display:flex;gap:8px;flex-wrap:wrap}.fishing-heading-actions button{font-size:13px}.fishing-heading-actions span{display:inline-block;margin-left:4px;color:#a2f5df}.fishing-cave-scene{position:relative;background:#10182d;border:2px solid #716395;border-radius:12px;overflow:hidden;box-shadow:0 15px 45px #0006}.fishing-cave-scene canvas{display:block;width:100%;height:auto;image-rendering:pixelated;touch-action:none;outline-offset:-4px}.fishing-location-badge{position:absolute;top:12px;left:12px;max-width:calc(100% - 24px);padding:7px 11px;border:1px solid #7d8a9c;border-radius:7px;background:#142233d9;backdrop-filter:blur(5px);color:#d7f8ec;font-size:12px;pointer-events:none}.fishing-lake-toolbar{display:flex;flex-wrap:wrap;gap:8px;align-items:end;padding:13px 0}.fishing-lake-toolbar button{background:#2c5556;border-color:#82cbbb}.fishing-lake-toolbar label{display:grid;gap:4px;font-size:11px;color:#c7c6dd;margin-left:auto;min-width:190px}.fishing-lake-toolbar select{font-size:13px;max-width:100%;width:100%}.fishing-instructions{margin:0 0 18px;color:#b9cad6;font-size:12px}.fishing-touch-hint{display:none}.fishing-message{padding:12px 15px;margin:16px 0 0;min-height:46px;color:#c6f3e0;background:#193e435e;border:1px solid #44747e;border-radius:8px;font-size:13px;line-height:1.5}.fishing-small{font-size:12px;line-height:1.6;color:#c6c2d8;margin:12px 0}.fishing-challenge-panel{max-width:1000px;margin:auto;padding:21px;background:#1a263b;border:2px solid #7a8eae;border-radius:14px;box-shadow:0 18px 45px #0006}.fishing-challenge-heading{display:flex;justify-content:space-between;gap:12px;align-items:center;flex-wrap:wrap;margin-bottom:16px}.fishing-challenge-heading h2{font-size:25px;color:#f6e1b5;margin:3px 0}.fishing-challenge-tools{display:flex;gap:6px;flex-wrap:wrap}.fishing-challenge-tools button{font-size:12px;padding:8px 11px}.fishing-progress-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:10px 0 7px;color:#bcebd9;font-size:13px}.fishing-progress-heading strong{font-size:20px;color:#c7ffdf}.rhythm-fishing progress{display:block;width:100%;height:23px;accent-color:#81e0c3;border:0;border-radius:9px;overflow:hidden;background:#101a2a}.rhythm-fishing progress::-webkit-progress-bar{background:#101a2a}.rhythm-fishing progress::-webkit-progress-value{background:linear-gradient(90deg,#4caaa9,#a1edbd);border-radius:9px}.fishing-staff-wrap{position:relative;margin-top:15px;border:1px solid #5d7593;border-radius:9px;overflow:hidden;background:#142139}.fishing-staff-wrap canvas{display:block;width:100%;height:auto;min-height:150px;touch-action:none}.fishing-count-in{position:absolute;right:16px;top:12px;max-width:calc(100% - 110px);color:#ffe5a7;font-size:25px;font-weight:800;text-shadow:0 3px 8px #111b2b;pointer-events:none}.fishing-count-in:empty{display:none}.fishing-rhythm-meta{display:flex;justify-content:space-between;gap:9px;flex-wrap:wrap;font-size:11px;color:#bad6df;margin:10px 1px 15px}.fishing-tap-button{width:100%;min-height:86px!important;background:linear-gradient(#41847e,#2b5a66)!important;border:2px solid #acffe0!important;border-bottom-width:5px!important;color:#eefff1!important;font:800 24px/1.2 system-ui!important;letter-spacing:.5px;box-shadow:0 6px 18px #0005;user-select:none;-webkit-user-select:none}.fishing-tap-button small{display:block;font-size:12px;font-weight:500;letter-spacing:0;color:#d1ebdf;margin-top:5px}.fishing-tap-button.is-tapping{animation:fishing-tap .14s ease-out}.fishing-rhythm-feedback{min-height:46px;margin:15px 0 4px;color:#d6f6df;font-weight:600;font-size:14px;line-height:1.5}.fishing-result-panel{max-width:680px;margin:10px auto;padding:26px;background:radial-gradient(ellipse at 50% 0,#29474f,#1d263c 65%);border:2px solid #a0c2b8;border-radius:14px;text-align:center}.fishing-result-panel>canvas{display:block;width:min(100%,280px);height:auto;margin:auto;image-rendering:pixelated}.fishing-result-panel h2{font-size:29px;color:#f9e3b4;margin:8px 0 14px}.fishing-result-panel p{color:#c8d9df}.fishing-result-panel #fishingResultReward{min-height:25px;color:#b9f8d6;font-weight:600}.fishing-result-actions{display:flex;justify-content:center;gap:9px;flex-wrap:wrap;margin-top:20px}.fishing-result-actions button{min-width:160px}.fishing-captain-panel{max-width:850px;margin:12px auto;padding:23px;background:#1b2b3f;border:2px solid #80a9ac;border-radius:14px}.fishing-captain-intro{display:grid;grid-template-columns:120px minmax(0,1fr);gap:18px;align-items:center}.fishing-captain-intro canvas{width:120px;height:140px;image-rendering:pixelated;background:#253c50;border:1px solid #6a889d;border-radius:8px}.fishing-captain-intro h2{color:#f4dfae;font-size:26px;margin:5px 0 13px}.fishing-captain-intro p{color:#d1e8df;line-height:1.65}.fishing-captain-choices{display:flex;flex-wrap:wrap;gap:8px;margin-top:17px}.fishing-captain-choices button{flex:1 1 210px}.fishing-collection-heading{display:flex;justify-content:space-between;align-items:center;gap:15px;flex-wrap:wrap;margin:10px 0 20px}.fishing-collection-heading h2{font-size:31px;color:#ffe1ad;margin:3px 0 10px}.fishing-collection-heading p{color:#c1d4df;margin:0}.fishing-collection-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px}.fishing-fish-card{min-width:0;padding:12px;background:#1c2d42;border:1px solid #668295;border-radius:10px;overflow:hidden}.fishing-fish-card canvas{display:block;width:100%;height:auto;image-rendering:pixelated;margin:auto}.fishing-fish-card h3{font-size:15px;color:#e2f4df;margin:4px 0 10px;overflow-wrap:anywhere}.fishing-fish-card p{font-size:11px;color:#bdc8dc;margin:0;line-height:1.5}.fishing-fish-card.is-unknown{background:#192338;border-color:#425069}.fishing-fish-card.is-unknown h3{color:#a1afc4;font-size:13px}.fishing-pending-reward{grid-column:1/-1;padding:15px;background:#4e3e33;border:1px solid #e2b673;border-radius:8px}.fishing-pending-reward p{margin:0 0 9px}.rhythm-fishing.is-dropping .fishing-shell{animation:fishing-drop .36s ease-out both}@keyframes fishing-tap{from{transform:translateY(3px);filter:brightness(1.2)}to{transform:translateY(0);filter:brightness(1)}}@keyframes fishing-drop{from{opacity:0;transform:translateY(-22px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}
@media(max-width:900px){.fishing-collection-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.fishing-heading-actions{flex-wrap:nowrap}.fishing-heading p{font-size:12px}.fishing-lake-toolbar label{margin-left:0;flex:1 1 190px}}
@media(max-width:760px),(pointer:coarse){.rhythm-fishing{padding:max(8px,env(safe-area-inset-top,0px)) max(12px,env(safe-area-inset-right,0px)) max(20px,env(safe-area-inset-bottom,0px)) max(12px,env(safe-area-inset-left,0px));scroll-padding-top:75px}.rhythm-fishing[data-mobile-view=room]{padding-bottom:calc(var(--coda-touch-controls-height,220px) + env(safe-area-inset-bottom,0px) + 12px)}.fishing-heading{position:sticky!important;top:0;z-index:5;background:#141d31f5!important;display:grid!important;grid-template-columns:minmax(0,1fr) auto;gap:8px;padding:6px 0!important;min-height:57px;backdrop-filter:blur(8px)}.fishing-heading h1{font-size:23px;letter-spacing:0;margin:0}.fishing-heading p,.fishing-heading .fishing-eyebrow{display:none}.fishing-heading-actions{gap:6px}.fishing-heading-actions button{font-size:11px;padding:7px}.fishing-heading-actions span{display:block;font-size:10px;line-height:1.2}.fishing-cave-scene{border-radius:8px;margin-top:8px}.fishing-location-badge{font-size:10px;padding:4px 7px;top:7px;left:7px}.fishing-lake-toolbar{display:grid;grid-template-columns:1fr 1fr;gap:7px;padding:10px 0}.fishing-lake-toolbar button,.fishing-lake-toolbar select{font-size:13px;min-height:46px}.fishing-lake-toolbar label{min-width:0;grid-column:1/-1;font-size:11px}.fishing-instructions{font-size:11px}.fishing-desktop-hint{display:none}.fishing-touch-hint{display:inline}.fishing-challenge-panel{padding:13px;margin:8px 0;border-radius:10px}.fishing-challenge-heading{gap:9px;margin-bottom:12px}.fishing-challenge-heading h2{font-size:21px}.fishing-challenge-heading .fishing-eyebrow{font-size:9px}.fishing-challenge-tools{width:100%;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px}.fishing-challenge-tools button{font-size:11px;padding:8px 5px;min-width:0}.fishing-staff-wrap{margin-top:10px}.fishing-staff-wrap canvas{min-height:125px;height:145px;object-fit:fill}.fishing-count-in{top:10px;right:10px;font-size:20px}.fishing-rhythm-meta{font-size:10px;gap:6px;margin:9px 0 12px}.fishing-rhythm-meta span:last-child{display:none}.fishing-tap-button{min-height:80px!important;font-size:23px!important}.fishing-rhythm-feedback{font-size:13px;min-height:40px}.fishing-message{font-size:12px;padding:10px 12px;margin-top:12px}.fishing-captain-panel{padding:15px;margin-top:10px}.fishing-captain-intro{grid-template-columns:80px minmax(0,1fr);gap:12px}.fishing-captain-intro canvas{width:80px;height:auto}.fishing-captain-intro h2{font-size:21px}.fishing-captain-intro p{font-size:13px}.fishing-captain-intro .fishing-eyebrow{font-size:8px}.fishing-captain-choices button{font-size:13px}.fishing-result-panel{padding:19px 14px;margin-top:10px}.fishing-result-panel h2{font-size:24px}.fishing-result-panel p{font-size:13px}.fishing-result-actions{display:grid;grid-template-columns:1fr 1fr;gap:7px}.fishing-result-actions button{min-width:0;font-size:13px}.fishing-collection-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.fishing-fish-card{padding:10px}.fishing-fish-card h3{font-size:13px}.fishing-fish-card p{font-size:10px}.fishing-collection-heading h2{font-size:26px}.fishing-collection-heading p{font-size:12px}.fishing-collection-heading button{font-size:13px}.fishing-small{font-size:11px}}
@media(pointer:coarse) and (orientation:landscape) and (max-height:550px){.rhythm-fishing{padding-top:3px}.fishing-heading{min-height:46px;padding:1px 0!important}.fishing-heading h1{font-size:21px}.fishing-heading-actions span{display:inline;font-size:10px}.fishing-cave-scene{width:min(100%,600px);margin:5px auto 0}.fishing-cave-scene canvas{height:max(150px,calc(100dvh - 125px));width:auto;max-width:100%;margin:auto;aspect-ratio:1000/620}.fishing-lake-toolbar{display:flex;justify-content:center;align-items:center;gap:6px;padding:7px 0}.fishing-lake-toolbar button{font-size:11px;min-height:44px;padding:6px 8px}.fishing-lake-toolbar label{display:none}.fishing-instructions{display:none}.fishing-challenge-panel{margin:4px 0;padding:10px}.fishing-challenge-heading{margin:0 0 6px}.fishing-challenge-heading h2{font-size:19px}.fishing-challenge-tools{width:auto;display:flex}.fishing-challenge-tools button{min-height:44px;padding:5px 9px}.fishing-progress-heading{margin:4px 0;font-size:11px}.fishing-progress-heading strong{font-size:16px}.rhythm-fishing progress{height:14px}.fishing-staff-wrap{margin-top:6px}.fishing-staff-wrap canvas{height:103px;min-height:103px}.fishing-rhythm-meta{margin:3px 0 5px;font-size:9px}.fishing-tap-button{min-height:72px!important;font-size:18px!important}.fishing-tap-button small{display:none}.fishing-rhythm-feedback{min-height:18px;font-size:11px;margin:5px 0 0}.fishing-challenge-panel>.fishing-small{display:none}.fishing-message{margin-top:6px;padding:7px 10px;min-height:32px}.fishing-captain-panel{padding:12px;margin:5px auto}.fishing-captain-intro{grid-template-columns:70px minmax(0,1fr)}.fishing-captain-intro canvas{width:70px}.fishing-captain-intro h2{font-size:19px;margin-bottom:6px}.fishing-captain-intro p{font-size:12px;margin:4px 0}.fishing-captain-choices{margin-top:10px}.fishing-captain-choices button{flex-basis:150px;font-size:11px}.fishing-result-panel{padding:12px;max-width:730px}.fishing-result-panel>canvas{width:170px;float:left;margin:5px 15px 5px 0}.fishing-result-panel h2{font-size:22px}.fishing-result-actions{margin-top:10px}.fishing-result-panel::after{content:'';display:block;clear:both}.fishing-collection-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media(prefers-reduced-motion:reduce){.rhythm-fishing *{animation:none!important;transition:none!important;scroll-behavior:auto!important}}

.fishing-achievements{padding:16px;margin:18px 0;background:#1b2a40;border:1px solid #5c7e90;border-radius:10px}.fishing-achievements h3{color:#f0d8a9;margin:0 0 12px}.fishing-achievements>div{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:13px}.fishing-achievements article{padding:10px;border:1px solid #53657e;border-radius:7px;background:#172337}.fishing-achievements strong{font-size:13px;color:#d1f1de}.fishing-achievements p{font-size:11px;color:#bccfdb;line-height:1.5;min-height:34px}.fishing-achievements progress{height:10px}@media(max-width:760px){.fishing-achievements>div{grid-template-columns:1fr 1fr}.fishing-achievements{padding:12px}.fishing-achievements strong{font-size:12px}}

#fishingCaptainWords{white-space:pre-line}

.fishing-challenge-panel,.fishing-challenge-panel *{touch-action:none!important;user-select:none!important;-webkit-user-select:none!important;-webkit-touch-callout:none!important;-webkit-user-drag:none;-webkit-tap-highlight-color:transparent}
.fishing-tap-button.is-holding{background:linear-gradient(#297263,#1e5159)!important;border-color:#c3ffdf!important}
.fishing-audio-backdrop{position:fixed;inset:0;z-index:150;display:grid;place-items:center;padding:12px;background:#07101dcc;backdrop-filter:blur(5px)}
.fishing-audio-panel{width:min(470px,100%);max-height:calc(100dvh - 24px);overflow:auto;overscroll-behavior:contain;padding:18px;background:#1b2b40;border:2px solid #86c8be;border-radius:13px;box-shadow:0 16px 50px #0009}
.fishing-audio-heading{position:sticky;top:-18px;display:flex;justify-content:space-between;align-items:center;gap:12px;padding:8px 0;background:#1b2b40;z-index:1}
.fishing-audio-heading h2{font-size:22px;color:#c3fff0;margin:0}
.fishing-audio-panel>p{color:#c5d7dc;font-size:13px;margin:8px 0 12px}
.fishing-audio-panel>label{display:flex;align-items:center;gap:12px;min-height:56px;padding:10px;border:1px solid #5a7785;border-radius:8px;margin-top:8px;font-size:16px;font-weight:650;cursor:pointer;background:#203b4a}
.fishing-audio-panel input[type=checkbox]{width:26px;height:26px;accent-color:#a0edce;flex:none;margin:0}
.fishing-audio-panel .fishing-audio-help{font-size:12px;line-height:1.4;margin:5px 10px 10px}
@media(max-width:760px),(pointer:coarse){.fishing-tap-button{min-height:144px!important;font-size:29px!important}.fishing-audio-panel button{min-height:52px;min-width:64px}}
@media(orientation:landscape) and (max-height:550px){.fishing-tap-button{min-height:112px!important}.fishing-audio-panel{width:min(560px,100%);padding:12px}.fishing-audio-heading{top:-12px;padding:3px 0}.fishing-audio-heading h2{font-size:20px}.fishing-audio-panel>p{margin:4px 0;font-size:12px}.fishing-audio-panel>label{min-height:48px;padding:6px 10px;margin-top:5px}.fishing-audio-panel .fishing-audio-help{margin:3px 10px;font-size:11px}}

/* Exploration gets a close, screen-filling mobile viewport. The canvas keeps
 * its native aspect ratio while the camera follows inside the visible clip. */
@media(max-width:760px),(pointer:coarse){
 .rhythm-fishing[data-mobile-view=room]:not(.room-developer-open){height:100dvh;padding:4px max(8px,env(safe-area-inset-right,0px)) max(0px,env(safe-area-inset-bottom,0px)) max(8px,env(safe-area-inset-left,0px));overflow:hidden}
 .rhythm-fishing[data-mobile-view=room]:not(.room-developer-open) .fishing-shell{height:100%;max-width:none;display:flex;flex-direction:column}
 .rhythm-fishing[data-mobile-view=room]:not(.room-developer-open) .fishing-heading{flex:none;position:relative!important;top:auto;padding:2px 0!important}
 .rhythm-fishing[data-mobile-view=room]:not(.room-developer-open) .fishing-shell>main{position:relative;display:flex;flex:1;min-height:0;flex-direction:column}
 .rhythm-fishing[data-mobile-view=room]:not(.room-developer-open) #fishingLakeView{display:flex;flex:1;min-height:0;flex-direction:column}
 .rhythm-fishing[data-mobile-view=room]:not(.room-developer-open) .fishing-cave-scene{--coda-room-cover:1;flex:1;min-height:150px;width:100%;margin:4px 0 0;border-radius:8px}
 .rhythm-fishing[data-mobile-view=room]:not(.room-developer-open) #fishingLakeCanvas{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);max-width:none;max-height:none;margin:0;aspect-ratio:1000 / 620}
 .rhythm-fishing[data-mobile-view=room]:not(.room-developer-open) .fishing-lake-toolbar{order:-1;display:flex;flex:none;flex-wrap:nowrap;justify-content:flex-start;align-items:end;gap:6px;overflow-x:auto;overscroll-behavior-x:contain;padding:4px 1px 6px;scrollbar-width:thin;scroll-padding-inline:8px}
 .rhythm-fishing[data-mobile-view=room]:not(.room-developer-open) .fishing-lake-toolbar button{flex:none;min-height:52px;font-size:14px;padding:7px 10px;white-space:nowrap}
 .rhythm-fishing[data-mobile-view=room]:not(.room-developer-open) .fishing-lake-toolbar label{order:-1;display:grid;gap:1px;flex:0 0 158px;min-width:158px;margin:0;font-size:10px}
 .rhythm-fishing[data-mobile-view=room]:not(.room-developer-open) .fishing-lake-toolbar select{min-height:52px;width:100%;padding:6px;font-size:16px}
 .rhythm-fishing[data-mobile-view=room]:not(.room-developer-open) .fishing-instructions{display:none}
 .rhythm-fishing[data-mobile-view=room]:not(.room-developer-open) #fishingMessage{position:absolute;z-index:3;top:150px;bottom:auto;left:8px;right:8px;max-height:58px;overflow:hidden;pointer-events:none;margin:0;padding:7px 10px;min-height:0;border-color:#6ba5a280;background:#102d3bdc;font-size:11px}
 .rhythm-fishing[data-mobile-view=room]:not(.room-developer-open) #fishingLakeAudio{order:-3}
 .rhythm-fishing[data-mobile-view=room]:not(.room-developer-open) #fishingPractice{order:-2}
 .rhythm-fishing.room-developer-open .fishing-cave-scene{--coda-room-cover:0}
 .rhythm-fishing.room-developer-open #fishingLakeCanvas{position:static;left:auto;top:auto;transform:none;width:100%!important;height:auto!important;max-width:100%;margin:0}
}
@media(orientation:landscape) and (max-height:550px) and (pointer:coarse){
 .rhythm-fishing[data-mobile-view=room]:not(.room-developer-open) .fishing-cave-scene{width:calc(100% - (var(--coda-joystick-size,226px) + 28px) - (var(--coda-touch-actions-width,112px) + 24px));margin-left:calc(var(--coda-joystick-size,226px) + 28px);min-height:150px}
 .rhythm-fishing[data-mobile-view=room]:not(.room-developer-open) #fishingMessage{top:auto;bottom:8px;left:calc(var(--coda-joystick-size,226px) + 34px);right:calc(var(--coda-touch-actions-width,112px) + 26px);max-height:44px;font-size:10px;padding:5px 7px}
}

.fishing-fish-card .fishing-fish-habitat{color:#b8eee0;margin-top:7px;font-weight:650}
.fishing-rhythm-meta{align-items:center;column-gap:12px;row-gap:4px}
#fishingTempoLabel{font-variant-numeric:tabular-nums;color:#f4e3ba}
.fishing-tempo-change{color:#bde8e3;font-weight:650}
.fishing-tempo-change[data-change=accelerando][data-phase=active]{color:#a4f2c3}
.fishing-tempo-change[data-change=ritardando][data-phase=active]{color:#c6baff}
.fishing-fish-card .fishing-fish-tempo{color:#e8d9b5;margin-top:4px}
@media(max-width:760px),(pointer:coarse){.fishing-rhythm-meta{column-gap:8px;row-gap:3px}.fishing-scroll-hint{display:none}}
@media(orientation:landscape) and (max-height:550px){.fishing-rhythm-meta{column-gap:10px;row-gap:2px}#fishingTempoLabel{white-space:nowrap}}
/* On a short phone, the battle illustration shares the progress area so
 * the complete rhythm button stays visible beneath the staff. */
@media(orientation:landscape) and (max-height:550px){
 .fishing-challenge-panel{display:grid;grid-template-columns:minmax(0,1fr) minmax(170px,220px);column-gap:12px}
 .fishing-challenge-heading{grid-column:1;grid-row:1;min-width:0}
 .fishing-progress-heading{grid-column:1;grid-row:2}
 #fishingCatchProgress{grid-column:1;grid-row:3}
 #fishingBattle{grid-column:2;grid-row:1 / 4;height:100%;min-height:72px;max-height:112px;margin:0}
 .fishing-staff-wrap{grid-column:1 / -1;grid-row:4}
 .fishing-rhythm-meta{grid-column:1 / -1;grid-row:5}
 .fishing-tap-button{grid-column:1 / -1;grid-row:6}
 .fishing-rhythm-feedback{grid-column:1 / -1;grid-row:7}
 .fishing-challenge-panel>.fishing-small{grid-column:1 / -1}
}

/* Keep the larger rhythm pad in view on short phones. */
@media(orientation:landscape) and (max-height:550px){
 .fishing-challenge-panel{padding:8px}
 .fishing-challenge-heading{margin-bottom:3px}
 .fishing-staff-wrap{margin-top:4px}
 .fishing-staff-wrap canvas{height:85px!important;min-height:85px}
 .fishing-rhythm-meta{margin:2px 0 4px}
 .fishing-rhythm-feedback{margin-top:3px}
}

@media(max-width:350px){
 .rhythm-fishing[data-mobile-view=room]:not(.room-developer-open) .fishing-heading{grid-template-columns:1fr;gap:3px}
 .rhythm-fishing[data-mobile-view=room]:not(.room-developer-open) .fishing-heading h1{font-size:22px}
 .rhythm-fishing[data-mobile-view=room]:not(.room-developer-open) .fishing-heading-actions{flex-wrap:nowrap}
 .rhythm-fishing[data-mobile-view=room]:not(.room-developer-open) .fishing-heading-actions button{flex:1;min-width:0}
}

/* Exploration keeps its tools in a menu so the cave can fill the room. */
.fishing-menu-backdrop{position:fixed;inset:0;z-index:145;display:grid;place-items:center;padding:16px;background:#07101dcc;backdrop-filter:blur(5px)}
.fishing-menu-backdrop[hidden]{display:none!important}
.fishing-menu-panel{width:min(660px,100%);max-height:calc(100dvh - 32px);overflow:auto;overscroll-behavior:contain;padding:18px;background:#1b2b40;border:2px solid #86c8be;border-radius:13px;box-shadow:0 16px 50px #0009}
.fishing-menu-heading{position:sticky;top:-18px;z-index:1;display:flex;align-items:center;justify-content:space-between;gap:12px;background:#1b2b40;padding:8px 0}
.fishing-menu-heading h2{font-size:23px;color:#c3fff0;margin:0}
.fishing-menu-panel .fishing-menu-intro,.fishing-menu-help p{font-size:13px;line-height:1.5;color:#c5d7dc}
#fishingMenuPanel .fishing-lake-toolbar{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;overflow:visible;flex-wrap:wrap;padding:12px 0;order:initial}
#fishingMenuPanel .fishing-lake-toolbar label{display:grid;grid-column:1 / -1;order:-1;min-width:0;margin:0;gap:5px;font-size:12px}
#fishingMenuPanel button,#fishingMenuPanel select{min-height:48px;font-size:15px;white-space:normal}
#fishingMenuPanel #fishingCollection{width:100%;text-align:left;background:#2c5556;border-color:#82cbbb}
#fishingMenuPanel #fishingCollectionCount{float:right;color:#b6f8dc}
#fishingMenuPanel .fishing-instructions{display:none}
.fishing-menu-help{border-top:1px solid #547582;padding-top:10px}
.fishing-menu-help summary{min-height:44px;cursor:pointer;font-weight:650;color:#c3fff0;padding:10px 0}
.rhythm-fishing[data-mobile-view=room]:not(.room-developer-open) .fishing-heading{padding:2px 0 8px!important;gap:10px;flex-wrap:nowrap;min-height:48px}
.rhythm-fishing[data-mobile-view=room]:not(.room-developer-open) .fishing-heading h1{font-size:24px;margin:0;letter-spacing:0}
.rhythm-fishing[data-mobile-view=room]:not(.room-developer-open) .fishing-heading-actions{flex-wrap:nowrap;gap:6px}
.rhythm-fishing[data-mobile-view=room]:not(.room-developer-open) .fishing-heading-actions button{min-height:44px;padding:7px 11px;white-space:nowrap}
.rhythm-fishing[data-mobile-view=room]:not(.room-developer-open) #fishingMessage{position:absolute;z-index:3;top:70px;left:12px;right:12px;max-width:610px;max-height:42px;min-height:0;margin:0;padding:5px 8px;overflow:hidden;pointer-events:none;background:#102d3bdc;font-size:11px;line-height:1.4}
.rhythm-fishing[data-mobile-view=room]:not(.room-developer-open) #fishingMessage:empty{display:none}
.rhythm-fishing[data-mobile-view=room]:not(.room-developer-open) .fishing-shell>main{position:relative}
@media(min-width:761px) and (pointer:fine){
 .rhythm-fishing[data-mobile-view=room]:not(.room-developer-open){height:100dvh;padding:12px;overflow:hidden}
 .rhythm-fishing[data-mobile-view=room]:not(.room-developer-open) .fishing-shell{height:100%;display:flex;flex-direction:column;max-width:1220px}
 .rhythm-fishing[data-mobile-view=room]:not(.room-developer-open) .fishing-shell>main{flex:1;min-height:0;display:flex;flex-direction:column}
 .rhythm-fishing[data-mobile-view=room]:not(.room-developer-open) #fishingLakeView{flex:1;min-height:0;display:flex;align-items:center;justify-content:center}
 .rhythm-fishing[data-mobile-view=room]:not(.room-developer-open) .fishing-cave-scene{height:auto;width:min(100%,calc((100dvh - 76px) * 1000 / 620));max-width:100%;aspect-ratio:1000 / 620}
 .rhythm-fishing[data-mobile-view=room]:not(.room-developer-open) #fishingLakeCanvas{width:100%;height:auto;object-fit:contain}
}
@media(max-width:760px),(pointer:coarse){
 .rhythm-fishing[data-mobile-view=room]:not(.room-developer-open) .fishing-heading{display:flex!important;min-height:48px}
 .rhythm-fishing[data-mobile-view=room]:not(.room-developer-open) .fishing-heading h1{font-size:21px}
 .rhythm-fishing[data-mobile-view=room]:not(.room-developer-open) #fishingMessage{top:45px;left:8px;right:8px;max-height:36px;font-size:10px}
 .fishing-menu-backdrop{padding:10px}
 .fishing-menu-panel{padding:14px;max-height:calc(100dvh - 20px)}
 .fishing-menu-heading{top:-14px}
}
@media(orientation:landscape) and (max-height:550px) and (pointer:coarse){
 .rhythm-fishing[data-mobile-view=room]:not(.room-developer-open) #fishingMessage{top:auto;bottom:8px;left:calc(var(--coda-joystick-size,226px) + 34px);right:calc(var(--coda-touch-actions-width,112px) + 26px);max-width:none;max-height:32px}
}
@media(max-width:350px){
 .rhythm-fishing[data-mobile-view=room]:not(.room-developer-open) .fishing-heading h1{font-size:17px}
 .rhythm-fishing[data-mobile-view=room]:not(.room-developer-open) .fishing-heading-actions button{font-size:12px;padding:6px 8px}
 .fishing-menu-heading h2{font-size:21px}
 #fishingMenuPanel .fishing-lake-toolbar{grid-template-columns:1fr}
}

.fishing-audio-panel .fishing-music-volume{display:grid;gap:8px;font-size:14px;background:transparent;border-color:#547582;margin-top:6px}
.fishing-music-volume>span{display:flex;justify-content:space-between;gap:15px}
.fishing-music-volume output{color:#b9ffe4;font-variant-numeric:tabular-nums}
.fishing-music-volume input[type=range]{width:100%;min-height:30px;accent-color:#a0edce;margin:0;cursor:pointer}
