/* Hallmark · component: fishing controls · genre: atmospheric · theme: existing stream
 * Pre-emit critique: Philosophy 4 · Hierarchy 5 · Execution 4 · Specificity 5 · Restraint 5 · Variety 4
 * States: resting, hover, focus, pressed, waiting, paused, missed, caught.
 * The stream stays clear; glass belongs only to the small control surface.
 */
.fishing-overlay{
  --ink:#263742;--muted:#526570;--accent:#41677c;--paper:#f8fafbf2;--line:#26374220;
  --fish-glass:rgba(248,252,253,.72);--fish-edge:rgba(255,255,255,.8);
  --fish-inner:rgba(255,255,255,.48);--fish-shadow:rgba(20,44,61,.14);
  --fish-well:rgba(209,226,227,.48);--fish-zone:rgba(153,184,153,.52);
  --fish-zone-active:rgba(143,180,147,.76);--fish-zone-line:rgba(87,125,95,.55);
  --fish-button:rgba(65,103,124,.94);--fish-button-hover:rgba(47,80,100,.98);
  --fish-button-ink:rgb(255,255,255);--fish-disabled:rgba(225,235,239,.76);
  --fish-track:rgba(65,103,124,.13);--fish-ripple:rgba(65,103,124,.3);
  position:absolute;inset:0;z-index:12;display:flex;align-items:flex-end;justify-content:flex-end;
  padding:max(12px,var(--safe-top,0px)) max(24px,var(--safe-right,0px)) max(80px,calc(var(--safe-bottom,0px) + 70px)) max(16px,var(--safe-left,0px));
  pointer-events:none;background:none;backdrop-filter:none;-webkit-backdrop-filter:none;
  color:var(--ink);isolation:isolate;font-family:inherit;
}
.fishing-overlay[hidden],.fishing-overlay [hidden]{display:none!important}
.fishing-card{box-sizing:border-box;pointer-events:auto;max-width:100%;border:1px solid var(--fish-edge);border-radius:20px;background:var(--fish-glass);color:var(--ink);box-shadow:inset 0 1px 0 var(--fish-inner),0 8px 26px var(--fish-shadow);backdrop-filter:blur(18px) saturate(1.12);-webkit-backdrop-filter:blur(18px) saturate(1.12);overscroll-behavior:contain}
.fishing-play{width:244px;padding:10px 14px 12px;max-height:calc(100dvh - 110px - var(--safe-top,0px) - var(--safe-bottom,0px));overflow:auto;touch-action:pan-y;scroll-padding:12px;animation:fish-panel-in .24s cubic-bezier(.2,.75,.2,1)}
.fishing-head{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:30px}
.fishing-eyebrow{font-size:10px;letter-spacing:.1px;color:var(--muted)}
.fishing-overlay button{font:inherit;min-height:44px;touch-action:manipulation;-webkit-tap-highlight-color:transparent;user-select:none;-webkit-user-select:none;border:0;white-space:nowrap}
.fishing-overlay button:focus-visible,.fishing-play:focus-visible,.fishing-records:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
.fishing-close{width:44px;min-width:44px;font-size:24px!important;font-weight:300;color:var(--muted);background:transparent;border-radius:50%;margin:-7px -9px -7px 0}
.fishing-close:hover{background:var(--fish-inner)}
.fishing-status{font-size:16px;line-height:1.4;font-weight:550;letter-spacing:-.45px;margin:5px 0}
.fishing-hint{font-size:11px;line-height:1.65;color:var(--muted);margin:0;word-break:keep-all}
.fishing-wait-art{height:48px;width:94px;position:relative;margin:1px auto 4px;overflow:hidden}
.fishing-wait-art span{position:absolute;left:16px;right:16px;top:32px;height:8px;border:1px solid var(--fish-ripple);border-radius:50%;transition:transform .22s ease-out}
.fishing-wait-art span:last-child{left:6px;right:6px;top:29px;height:14px;opacity:.5}
.fishing-bobber{position:absolute;z-index:1;left:50%;top:12px;width:7px;height:23px;border-radius:6px;background:linear-gradient(var(--accent) 0 42%,var(--fish-button-ink) 42% 67%,var(--muted) 67%);transform:translateX(-50%)}
.fishing-bobber::before{content:'';position:absolute;left:3px;top:-9px;width:1px;height:10px;background:var(--muted)}
.fishing-control,.fishing-resume{display:block;width:100%;min-height:44px;border-radius:13px;background:var(--fish-button);color:var(--fish-button-ink);padding:10px 8px;font-size:12px!important;font-weight:500;box-shadow:inset 0 1px 0 var(--fish-inner);transition:background .14s,transform .16s cubic-bezier(.2,.8,.2,1)}
.fishing-overlay .fishing-control{touch-action:none}
.fishing-control:hover:not(:disabled),.fishing-resume:hover{background:var(--fish-button-hover);color:var(--fish-button-ink)}
.fishing-control:active:not(:disabled),.fishing-control[aria-pressed=true],.fishing-resume:active{background:var(--fish-button-hover);transform:scale(.975)}
.fishing-control:disabled{opacity:1;cursor:default;background:var(--fish-disabled);color:var(--muted);box-shadow:none}
.fishing-key-hint{font-size:10px;line-height:1.5;text-align:center;color:var(--muted);margin:6px 0 0}
.fishing-tracking{display:flex;align-items:center;justify-content:center;gap:16px;padding:12px 0}
.fishing-water-column{position:relative;height:126px;width:38px;flex:none;background:var(--fish-well);border:1px solid var(--fish-edge);border-radius:22px;overflow:hidden;box-shadow:inset 0 1px 5px var(--fish-shadow);transition:box-shadow .2s}
.fishing-water-column::before{content:'';position:absolute;inset:7px 50%;width:1px;border-left:1px dashed var(--fish-ripple)}
.fishing-catch-zone{position:absolute;left:3px;right:3px;height:34%;bottom:33%;border:1px solid var(--fish-zone-line);border-radius:11px;background:var(--fish-zone);transition:background .16s}
.is-in-zone .fishing-catch-zone{background:var(--fish-zone-active)}
.fishing-fish-mark{position:absolute;left:55%;bottom:50%;height:10px;width:19px;border-radius:55% 60% 60% 55%;background:var(--accent);transform:translate(-50%,50%)}
.fishing-fish-mark::before{content:'';position:absolute;left:-5px;top:1px;border-top:4px solid transparent;border-bottom:4px solid transparent;border-left:7px solid var(--accent)}
.fishing-fish-mark::after{content:'';position:absolute;right:4px;top:3px;width:2px;height:2px;border-radius:50%;background:var(--fish-button-ink)}
.fishing-tracking-copy{width:136px;min-width:0;color:var(--muted)}
.fishing-tracking-copy>span:first-child{display:block;font-size:13px;line-height:1.5;letter-spacing:-.3px;color:var(--ink)}
.fishing-tracking-copy small{display:block;font-size:10px;line-height:1.65;margin:6px 0 10px}
.fishing-progress{height:4px;border-radius:8px;overflow:hidden;background:var(--fish-track);width:100%}
.fishing-progress i{display:block;width:0;height:100%;border-radius:inherit;background:var(--accent)}
.fishing-progress-text{display:block;font-size:10px;line-height:1.5;min-height:30px;margin-top:6px;font-variant-numeric:tabular-nums}
.fishing-resume{margin-top:8px}.is-paused .fishing-water-column,.is-paused .fishing-wait-art{opacity:.5}
.fishing-overlay[data-phase=bite] .fishing-status{color:var(--accent)}
.fishing-overlay[data-phase=bite] .fishing-wait-art span{transform:scale(1.16)}
.fishing-overlay[data-phase=bite] .fishing-control{animation:fish-hook-cue .32s cubic-bezier(.2,.8,.2,1)}
.fishing-overlay[data-phase=tracking] .fishing-water-column{animation:fish-hook-cue .24s cubic-bezier(.2,.8,.2,1)}
/* A catch is a passing annotation, with no action, focus stop, or hit target. */
.fishing-result.world-bubble{position:absolute;inset:auto;display:grid;grid-template-columns:58px minmax(0,1fr);column-gap:10px;align-content:center;width:220px;max-width:calc(100% - 24px);padding:11px 13px;border-radius:20px;max-height:none;overflow:visible;pointer-events:none;touch-action:auto;transform:none;text-align:left;animation:fish-catch-in .42s cubic-bezier(.16,.85,.25,1);transition:opacity .4s ease,translate .4s ease}
.fishing-result.world-bubble::after{display:none}
.fishing-result.is-leaving{opacity:0;translate:0 -8px}
.fishing-result>.fishing-eyebrow,.fishing-result-stats{display:none}
.fishing-result-image{grid-column:1;grid-row:1/4;align-self:center;width:58px;height:44px;object-fit:contain;margin:0;filter:none;float:none}
.fishing-result-title{grid-column:2;font-size:15px;font-weight:600;line-height:1.4;letter-spacing:-.35px;margin:0}
.fishing-result-length{grid-column:2;font-size:12px;line-height:1.5;margin:1px 0 0;color:var(--muted);font-variant-numeric:tabular-nums}
.fishing-result-note{grid-column:2;font-size:10px;line-height:1.5;margin:3px 0 0;color:var(--muted);word-break:keep-all}
.fishing-save-status{grid-column:1/-1;font-size:11px;line-height:1.6;margin:5px 0 0;color:var(--muted);word-break:keep-all}
.fishing-save-status:empty{display:none}
.fishing-overlay[data-phase=missed] .fishing-result{display:block;width:204px;padding:12px 15px}
.fishing-overlay[data-phase=missed] .fishing-result-title{font-size:14px}
/* Records remain an explicitly opened, scrollable dialog. */
.fishing-records{position:absolute;right:max(12px,var(--safe-right,0px));top:calc(max(16px,var(--safe-top,0px)) + 54px);width:min(320px,calc(100% - 24px));max-height:calc(100dvh - max(16px,var(--safe-top,0px)) - 66px - var(--safe-bottom,0px));overflow:auto;touch-action:pan-y;padding:18px;scroll-padding:60px 0 12px;background:var(--paper)}
.fishing-records .fishing-head{position:sticky;top:-18px;z-index:2;margin:-18px -18px 8px;padding:8px 12px 8px 18px;background:var(--paper)}
.fishing-records h2{font-size:20px;font-weight:550;margin:11px 0 7px;letter-spacing:-.5px}
.fishing-record-summary{font-size:12px;line-height:1.8;color:var(--muted);margin:12px 0 18px;word-break:keep-all}
.fishing-record-list{display:grid;gap:4px}
.fishing-record-row{display:flex;align-items:center;gap:14px;min-height:66px;padding:10px 0;border-bottom:1px solid var(--line)}
.fishing-record-row img{width:64px;height:42px;object-fit:contain;flex:none}
.fishing-record-row>span{font-size:12px;line-height:1.6;min-width:0;overflow-wrap:anywhere}
.fishing-record-row small{display:block;font-size:11px;color:var(--muted);line-height:1.8;margin-top:2px}
.fishing-record-foot{font-size:11px;line-height:1.8;color:var(--muted);margin:20px 0 0;word-break:keep-all}
@keyframes fish-panel-in{from{opacity:0;translate:0 5px}to{opacity:1;translate:0 0}}
@keyframes fish-catch-in{0%{opacity:0;translate:0 9px;scale:.96}65%{opacity:1;translate:0 -2px;scale:1.01}100%{opacity:1;translate:0 0;scale:1}}
@keyframes fish-hook-cue{0%{transform:scale(1)}40%{transform:scale(.97)}100%{transform:scale(1)}}
@media(pointer:coarse){.fishing-key-hint{display:none}}
@media(max-width:700px){.fishing-overlay{padding-right:16px;padding-bottom:max(82px,calc(var(--safe-bottom,0px) + 72px))}}
@media(max-width:380px){.fishing-play{width:232px;padding:9px 12px 11px}.fishing-status{font-size:15px}.fishing-tracking{gap:14px}}
@media(max-height:510px) and (orientation:landscape){.fishing-overlay{align-items:center;padding:12px 16px}.fishing-play{width:344px;max-height:calc(100dvh - 24px);display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:3px 12px;padding:10px 13px}.fishing-head{grid-column:1/-1}.fishing-status,.fishing-hint,.fishing-control,.fishing-resume,.fishing-key-hint{grid-column:1}.fishing-status{font-size:14px}.fishing-hint{font-size:10px}.fishing-control{font-size:11px!important;align-self:end}.fishing-wait-art,.fishing-tracking{grid-column:2;grid-row:2/7;align-self:center}.fishing-tracking{padding:0;gap:10px}.fishing-water-column{height:112px;width:34px}.fishing-tracking-copy{flex:1}.fishing-tracking-copy>span:first-child{font-size:11px}.fishing-tracking-copy small{font-size:9px}.fishing-progress-text{font-size:9px}.fishing-records{top:12px;max-height:calc(100dvh - 24px)}}
@media(prefers-reduced-motion:reduce){.fishing-overlay *{animation:none!important;transition:none!important;scroll-behavior:auto!important}.fishing-result.is-leaving{translate:none}.fishing-control:active:not(:disabled),.fishing-control[aria-pressed=true]{transform:none}}
