:root{--zc-background:#f2eee3;--zc-surface:#fffaf0;--zc-ink:#293a31;--zc-muted:#6a786d;--zc-accent:#3a6250;--zc-accent-ink:#fbfbef;--zc-border:#d7dcd1;--zc-soft:#e5eadf;--zc-radius:14px;--zc-font:Georgia,"Times New Roman",serif}
*{box-sizing:border-box}
html,body{min-height:100%;margin:0}
body{background:var(--zc-background);color:var(--zc-ink);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;-webkit-font-smoothing:antialiased}
button,input{font:inherit}
button{cursor:pointer;color:inherit;min-height:44px;border:1px solid var(--zc-border);border-radius:var(--zc-radius);background:var(--zc-surface);padding:10px 18px;transition:transform .2s,background .2s,border-color .2s}
button:hover:not(:disabled){transform:translateY(-2px);border-color:var(--zc-accent)}
button:disabled{opacity:.55;cursor:default}
:focus-visible{outline:2px solid var(--zc-accent);outline-offset:3px}
.wooden-fish{max-width:1140px;min-height:100dvh;margin:auto;padding:clamp(22px,4vw,48px) clamp(16px,4vw,44px) 22px;display:flex;flex-direction:column;gap:28px}
.topline{display:flex;justify-content:space-between;align-items:center;gap:26px;border-bottom:1px solid var(--zc-border);padding-bottom:25px}
.eyebrow,.section-label,.small-label{font-size:10px;font-weight:700;letter-spacing:.18em;color:var(--zc-muted)}
.topline h1{font:400 clamp(36px,5vw,62px)/1.03 var(--zc-font);letter-spacing:-.05em;margin:9px 0}
.title-dot{color:var(--zc-accent)}
.intro{max-width:540px;color:var(--zc-muted);font-size:15px;line-height:1.65;margin:0}
.practice-mark{flex:none;display:flex;flex-direction:column;align-items:center;justify-content:center;width:108px;height:108px;border:1px solid var(--zc-accent);border-radius:50%;box-shadow:0 0 0 8px color-mix(in srgb,var(--zc-accent) 10%,transparent);color:var(--zc-accent)}
.practice-mark strong{font:400 39px/1 var(--zc-font)}
.practice-mark span{font-size:8px;font-weight:700;letter-spacing:.15em;margin-top:5px}
.experience{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(285px,.8fr);gap:clamp(24px,4vw,50px);align-items:start;flex:1}
.play{position:relative;background:var(--zc-accent);color:var(--zc-accent-ink);padding:24px clamp(20px,3vw,34px) 28px;min-height:545px;display:flex;flex-direction:column;align-items:center;box-shadow:10px 10px 0 color-mix(in srgb,var(--zc-accent) 17%,transparent);overflow:hidden}
.play::before{content:"";position:absolute;width:480px;height:480px;top:85px;left:50%;transform:translateX(-50%);border:1px solid color-mix(in srgb,var(--zc-accent-ink) 16%,transparent);border-radius:50%;pointer-events:none}
.play::after{content:"";position:absolute;width:590px;height:590px;top:30px;left:50%;transform:translateX(-50%);border:1px solid color-mix(in srgb,var(--zc-accent-ink) 10%,transparent);border-radius:50%;pointer-events:none}
.play-head{width:100%;display:flex;justify-content:space-between;gap:14px;position:relative;z-index:1}
.play-head .section-label,.play-hint{color:color-mix(in srgb,var(--zc-accent-ink) 70%,transparent)}
.play-hint{font:italic 14px var(--zc-font)}
.stage{position:relative;z-index:1;flex:1;min-height:300px;width:100%;display:grid;place-items:center}
.fish{position:relative;width:clamp(220px,23vw,280px);aspect-ratio:1;border-radius:50%;padding:35px;background:radial-gradient(circle at 38% 28%,var(--zc-surface),var(--zc-soft));border:8px solid color-mix(in srgb,var(--zc-accent-ink) 28%,transparent);color:var(--zc-accent);box-shadow:0 0 0 1px color-mix(in srgb,var(--zc-accent-ink) 45%,transparent),0 18px 45px color-mix(in srgb,var(--zc-ink) 33%,transparent),inset 0 0 0 1px var(--zc-border);touch-action:manipulation;-webkit-tap-highlight-color:transparent;user-select:none;transition:transform .15s,box-shadow .2s}
.fish:hover:not(:disabled){transform:translateY(-4px);border-color:color-mix(in srgb,var(--zc-accent-ink) 46%,transparent);box-shadow:0 0 0 1px var(--zc-accent-ink),0 22px 50px color-mix(in srgb,var(--zc-ink) 38%,transparent)}
.fish:active{transform:scale(.97)}
.fish svg{display:block;width:100%;height:100%}
.fish .body{fill:color-mix(in srgb,var(--zc-accent) 16%,var(--zc-surface));stroke:currentColor;stroke-width:3}
.fish .rim,.fish .grain{fill:none;stroke:currentColor;stroke-width:2;opacity:.35;stroke-linecap:round}
.fish .slit,.fish .knob{fill:none;stroke:currentColor;stroke-width:5;stroke-linecap:round}
.fish .eye{fill:currentColor}
.ripple{position:absolute;inset:-8px;border-radius:50%;border:3px solid var(--zc-accent-ink);opacity:0;pointer-events:none}
.ripple.go{animation:ripple .7s ease-out}
.plus{position:absolute;top:3%;right:4%;font:400 22px var(--zc-font);color:var(--zc-ink);opacity:0;pointer-events:none}
.plus.go{animation:plus .9s ease-out}
.count{position:relative;z-index:1;min-height:22px;text-align:center;font:400 18px/1.35 var(--zc-font);margin:0 0 20px}
.tallies{position:relative;z-index:1;display:grid;grid-template-columns:repeat(3,1fr);gap:1px;width:100%;max-width:530px;margin:0;background:color-mix(in srgb,var(--zc-accent-ink) 25%,transparent);border:1px solid color-mix(in srgb,var(--zc-accent-ink) 25%,transparent)}
.tallies div{background:var(--zc-accent);display:flex;flex-direction:column-reverse;align-items:center;justify-content:center;gap:2px;padding:14px 5px}
.tallies dt{font-size:10px;letter-spacing:.07em;color:color-mix(in srgb,var(--zc-accent-ink) 72%,transparent);text-align:center}
.tallies dd{font:400 30px/1.15 var(--zc-font);margin:0;font-variant-numeric:tabular-nums}
.practice{padding:clamp(10px,2vw,26px) 0;display:flex;flex-direction:column;align-items:start}
.practice h2{font:400 clamp(32px,4vw,50px)/1.1 var(--zc-font);letter-spacing:-.04em;margin:20px 0 16px}
.practice-intro{color:var(--zc-muted);font-size:14px;line-height:1.7;margin:0 0 25px;max-width:350px}
.options{display:flex;gap:7px;width:100%}
.options button{flex:1;min-width:0}
.options button[aria-pressed=true]{background:var(--zc-ink);border-color:var(--zc-ink);color:var(--zc-surface)}
.tempo-wrap{width:100%;margin-top:22px;padding:18px 0;border-top:1px solid var(--zc-border);border-bottom:1px solid var(--zc-border)}
.wooden-fish:not(:has([data-mode="watch"][aria-pressed="true"])) .tempo-wrap{display:none}
.small-label{display:block;margin-bottom:10px}
.tempos button{padding:8px 4px;min-height:42px;font-variant-numeric:tabular-nums}
.settings{width:100%;border-bottom:1px solid var(--zc-border);margin-top:22px;color:var(--zc-muted)}
.settings summary{cursor:pointer;min-height:46px;display:flex;align-items:center;color:var(--zc-ink);font-size:14px;font-weight:600;list-style:none}
.settings summary::-webkit-details-marker{display:none}
.settings summary::after{content:"+";font:400 24px var(--zc-font);margin-left:auto;color:var(--zc-accent)}
.settings[open] summary::after{content:"−"}
.settings-inner{display:flex;flex-direction:column;gap:14px;padding:4px 0 18px;font-size:13px;line-height:1.5}
.settings label{display:flex;align-items:center;gap:9px;cursor:pointer}
.settings input{accent-color:var(--zc-accent)}
.settings input[type=checkbox]{width:17px;height:17px;flex:none}
.volume{flex-wrap:wrap}
.volume input{width:100%;height:30px}
.end{margin-top:22px;background:transparent;border-color:var(--zc-border);color:var(--zc-muted)}
#status{min-height:3em;color:var(--zc-muted);font-size:12px;line-height:1.6;margin:17px 0 0}
footer{font-size:11px;color:var(--zc-muted);line-height:1.65;border-top:1px solid var(--zc-border);padding-top:15px;max-width:850px}
@keyframes ripple{from{opacity:.65;transform:scale(1)}to{opacity:0;transform:scale(1.27)}}
@keyframes plus{from{opacity:.9;transform:translateY(0)}to{opacity:0;transform:translateY(-24px)}}
@media(max-width:800px){.experience{grid-template-columns:1fr;gap:28px}.play{min-height:560px}.practice{padding:0}.practice h2 br{display:none}.practice h2{margin:10px 0}.practice-intro{max-width:none;margin-bottom:18px}}
@media(max-width:520px){.wooden-fish{gap:20px;padding:20px 16px}.topline{align-items:start;padding-bottom:20px}.topline h1{font-size:38px}.intro{font-size:13px}.practice-mark{width:65px;height:65px;box-shadow:0 0 0 5px color-mix(in srgb,var(--zc-accent) 10%,transparent)}.practice-mark strong{font-size:25px}.practice-mark span{font-size:5px}.play{min-height:470px;padding:17px 16px 18px;box-shadow:5px 5px 0 color-mix(in srgb,var(--zc-accent) 17%,transparent)}.play-hint{display:none}.stage{min-height:285px}.fish{width:min(66vw,270px);padding:29px;border-width:6px}.play::before{width:360px;height:360px;top:60px}.play::after{width:440px;height:440px;top:20px}.count{font-size:16px;margin-bottom:13px}.tallies dd{font-size:25px}.tallies dt{font-size:9px}.practice h2{font-size:34px}}
@media(max-width:360px){.intro{display:none}.practice-mark{width:55px;height:55px}.topline h1{font-size:32px}.options button{padding:8px;font-size:12px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}
[data-motion=reduced] *,[data-motion=reduced] *::before,[data-motion=reduced] *::after{animation:none!important;transition:none!important}
