:root{--zc-background:#eeeee3;--zc-ink:#304b42;--zc-muted:#69776a;--zc-surface:#e0e6d9;--zc-border:#c3cebb;--zc-accent:#45664f;--zc-accent-ink:#f5f1dd;--zc-pond-label:#eee7c7;--zc-stone:#899788;color-scheme:light}*{box-sizing:border-box}body{margin:0;background:var(--zc-background);color:var(--zc-ink);font:14px Arial,sans-serif}main{max-width:1120px;margin:auto;padding:26px 32px}header{display:flex;justify-content:space-between;gap:14px;font-size:10px;color:var(--zc-muted)}.eyebrow{font-size:9px;letter-spacing:.17em;line-height:1.8}.heading{display:flex;justify-content:space-between;align-items:center;gap:18px;margin:26px 0 22px}.heading .eyebrow{margin:0 0 6px}h1,h2{font-family:Georgia,serif;font-weight:400;letter-spacing:-.04em}h1{font-size:52px;margin:0}.heading>p{font:italic 14px/1.8 Georgia,serif;color:var(--zc-muted)}.pond-frame{height:520px;position:relative;overflow:hidden;border:10px solid var(--zc-stone);border-radius:100px 30px 100px 30px;box-shadow:0 14px 40px color-mix(in srgb,var(--zc-ink) 12%,transparent)}canvas{position:absolute;inset:0;width:100%;height:100%;display:block}#pond{cursor:pointer;touch-action:pan-y}.pond-label{position:absolute;bottom:24px;left:26px;right:26px;display:flex;justify-content:space-between;gap:15px;color:var(--zc-pond-label);font-size:10px;letter-spacing:.06em;pointer-events:none}.pond-label b{font-weight:400}.controls{margin:22px 0 27px}.actions{display:flex;justify-content:center;gap:10px}button,select,input[type=text],input:not([type]){min-height:46px;padding:11px 15px;border:1px solid var(--zc-border);border-radius:8px;background:var(--zc-surface);color:var(--zc-ink);font:inherit}button,select{cursor:pointer}#watch{background:var(--zc-accent);color:var(--zc-accent-ink)}button:disabled{opacity:.55;cursor:default}button:focus-visible,select:focus-visible,input:focus-visible{outline:3px solid var(--zc-accent);outline-offset:4px}.weather{display:flex;justify-content:center;align-items:center;gap:18px;margin-top:10px;font-size:11px;color:var(--zc-muted)}.weather label{display:flex;align-items:center;min-height:44px;gap:7px;cursor:pointer}.weather input{width:18px;height:18px;accent-color:var(--zc-accent)}.details{display:grid;grid-template-columns:1fr 1fr;gap:42px;border-top:1px solid var(--zc-border);padding-top:20px}h2{font-size:28px;margin:8px 0 16px}progress{width:100%;height:7px;accent-color:var(--zc-accent)}.growth>p:not(.eyebrow),.privacy{font-size:11px;line-height:1.8;color:var(--zc-muted)}form{display:grid;grid-template-columns:1fr 1.5fr;gap:10px}form label{font-size:10px;color:var(--zc-muted);display:grid;gap:6px}form input,form select{min-width:0;width:100%;font-size:12px!important}form button{grid-column:1/-1;font-size:12px}#status{font-size:12px;color:var(--zc-muted);min-height:23px;line-height:1.7}footer{font-size:9px;color:var(--zc-muted)}@media(max-width:600px){main{padding:16px}header{font-size:8px;align-items:center}.eyebrow{font-size:8px}.heading{display:block;margin:22px 0 17px}h1{font-size:43px}.heading>p{font-size:12px;margin:8px 0}.heading>p br{display:none}.pond-frame{height:430px;border-width:7px;border-radius:70px 22px 70px 22px}.pond-label{left:15px;right:15px;bottom:22px;font-size:8px;gap:10px}.actions{display:grid;grid-template-columns:1fr 1fr;gap:8px}button{font-size:12px;padding:10px}#pause{grid-column:1/-1}.weather{flex-wrap:wrap;gap:2px 16px}.weather>span{width:100%;text-align:center;font-size:10px}.details{grid-template-columns:1fr;gap:18px}.controls{margin:18px 0 23px}h2{font-size:25px}.privacy{font-size:10px}}
/* Water is the gathering place; the naming and lily notes sit at the bank. */
body{background:radial-gradient(ellipse at 24% 0%,var(--zc-surface),transparent 57%),var(--zc-background)}
header{padding-bottom:12px;border-bottom:1px solid var(--zc-border);text-transform:uppercase}
.heading{align-items:end;margin:22px 0 17px}
.heading>p{max-width:245px;border-left:1px solid var(--zc-border);padding-left:19px}
.pond-frame{height:clamp(420px,53vh,550px);border:14px solid var(--zc-stone);border-radius:40% 8% 40% 8% / 22% 9% 22% 9%;outline:5px solid color-mix(in srgb,var(--zc-stone) 35%,transparent);outline-offset:3px;box-shadow:0 26px 52px color-mix(in srgb,var(--zc-ink) 22%,transparent),inset 0 0 0 1px var(--zc-border)}
.pond-frame::after{content:"";position:absolute;inset:0;pointer-events:none;background:radial-gradient(ellipse at 50% 50%,transparent 49%,color-mix(in srgb,var(--zc-ink) 26%,transparent))}
.pond-label{z-index:1;bottom:20px;left:24px;right:24px;text-transform:uppercase;letter-spacing:.12em}
.actions button{min-height:51px;border-radius:999px}
.weather{padding-top:12px;margin-top:13px;border-top:1px solid var(--zc-border)}
.details{gap:clamp(35px,5vw,80px);padding-top:26px;margin-top:10px}
.details>div:last-child{padding-left:clamp(20px,3vw,42px);border-left:1px solid var(--zc-border)}
.growth h2{font-size:32px}
progress{height:9px;border-radius:99px;overflow:hidden}
form button{border-radius:999px}
@media(max-width:600px){main{padding:12px 14px 23px}header{padding-bottom:6px}.heading{margin:12px 0}.heading>p{border:0;padding:0;font-size:11px;line-height:1.3;margin:5px 0}h1{font-size:39px}.pond-frame{height:350px;border-width:7px;border-radius:34% 8% 34% 8% / 15% 7% 15% 7%;outline-width:3px;outline-offset:1px}.pond-label{left:11px;right:11px;bottom:10px;gap:4px;font-size:8px}.controls{margin:15px 0 20px}.actions button{min-height:44px}.weather{padding-top:6px;margin-top:8px}.details{padding-top:17px;gap:17px}.details>div:last-child{padding:17px 0 0;border-left:0;border-top:1px solid var(--zc-border)}.growth h2{font-size:25px}}
@media(max-width:600px){.pond-label{left:13px;right:42px;bottom:16px;align-items:end}.pond-label span:last-child{text-align:right}}
.pond-label{left:clamp(30px,5vw,78px);right:clamp(78px,9vw,132px);bottom:clamp(38px,5vw,60px)}
@media(max-width:600px){.pond-label{left:24px;right:56px;bottom:28px}}

/* Round two: an irregular water garden within a gravel courtyard. */
:root{--zc-garden-gravel:#d8d3bd;--zc-garden-stone:#969c85;--zc-garden-ink:#32483c;--zc-garden-shadow:#596653;--zc-garden-paper:#eeeadd}
body{background:repeating-radial-gradient(circle at 20% 25%,color-mix(in srgb,var(--zc-garden-stone) 9%,transparent) 0 1px,transparent 2px 8px),var(--zc-garden-gravel)}
main{max-width:1320px;display:grid;grid-template-columns:minmax(0,1fr) 285px;gap:0 31px;padding:20px 27px 34px}
header,.heading,#status,footer{grid-column:1/-1}
header{border-color:var(--zc-garden-stone);padding:7px 0}
.heading{margin:12px 0 17px;align-items:end}
.heading h1{font-size:clamp(39px,4.5vw,60px);color:var(--zc-garden-ink)}
.heading>p{color:var(--zc-garden-ink);border-color:var(--zc-garden-stone)}
.pond-frame{grid-column:1;grid-row:3;height:clamp(430px,58vh,590px);border:16px solid var(--zc-garden-stone);border-radius:39% 8% 38% 7% / 20% 8% 20% 7%;outline:0;box-shadow:0 0 0 9px color-mix(in srgb,var(--zc-garden-stone) 25%,transparent),0 22px 38px color-mix(in srgb,var(--zc-garden-shadow) 26%,transparent),inset 0 0 15px var(--zc-garden-shadow)}
.pond-frame::before{content:"";position:absolute;z-index:2;left:2%;top:3%;width:15%;height:12%;border-radius:56% 44% 49% 51%;background:color-mix(in srgb,var(--zc-garden-stone) 70%,transparent);box-shadow:1px 2px 8px color-mix(in srgb,var(--zc-garden-shadow) 35%,transparent);pointer-events:none}
.pond-label{left:clamp(37px,6vw,88px);right:clamp(64px,8vw,112px);bottom:35px}
.details{grid-column:2;grid-row:3/5;display:block;margin:0;padding:5px 0 0 19px;border:0;border-left:1px solid var(--zc-garden-stone)}
.details>div{padding:10px 0 20px;border:0!important}
.details>div+div{border-top:1px solid var(--zc-garden-stone)!important;padding:18px 0 0!important}
.details h2{font-size:27px;color:var(--zc-garden-ink)}
.details form{display:block}
.details form label{margin:0 0 12px}
.details form button{width:100%}
.controls{grid-column:1;grid-row:4;margin:18px 0 15px}
.actions{justify-content:flex-start}
.actions button{border-radius:2px;background:color-mix(in srgb,var(--zc-background) 70%,var(--zc-garden-gravel));border-color:var(--zc-garden-stone)}
.actions #watch{background:var(--zc-garden-ink);color:var(--zc-background)}
.weather{justify-content:flex-start;border-color:var(--zc-garden-stone)}
@media(max-width:760px){main{display:block;padding:11px 14px 22px}.heading{margin:10px 0}.heading h1{font-size:38px}.pond-frame{height:340px;border-width:8px;box-shadow:0 0 0 4px color-mix(in srgb,var(--zc-garden-stone) 22%,transparent),0 12px 20px color-mix(in srgb,var(--zc-garden-shadow) 15%,transparent)}.pond-frame::before{display:none}.pond-label{left:22px;right:47px;bottom:23px}.controls{margin:13px 0}.actions{display:grid;grid-template-columns:1fr 1fr}.details{display:block;border-left:0;border-top:1px solid var(--zc-garden-stone);padding:10px 0 0;margin-top:8px}.details>div{padding:5px 0 15px}.details form{display:grid;grid-template-columns:1fr 1fr}.details form button{grid-column:1/-1}}
body,header,.heading .eyebrow,.details .eyebrow,.growth>p:not(.eyebrow),.privacy,.weather,#status,footer{color:var(--zc-garden-ink)}
.details form input,.details form select,.details form button,.actions button:not(#watch){background:var(--zc-garden-paper);color:var(--zc-garden-ink);border-color:var(--zc-garden-stone)}

/* The pond stays central; koi records and naming form scroll in their own tray. */
html,body{height:100%;overflow:hidden}
main{height:100dvh;max-height:100dvh;grid-template-rows:auto auto minmax(0,1fr) auto auto auto;overflow:hidden;padding-bottom:10px}
.pond-frame{height:100%;min-height:0}
.controls{margin:8px 0}
.details{min-height:0;overflow:auto;overscroll-behavior:contain;scrollbar-width:thin}
.details:focus-visible{outline:2px solid var(--zc-garden-ink);outline-offset:-2px}
#status,footer{margin:1px 0}
@media(max-width:760px){main{display:flex;flex-direction:column;padding:7px 12px 5px}.heading{flex:none;margin:4px 0 7px}.heading h1{font-size:clamp(29px,8vw,36px)}.heading>p{margin:2px 0}.pond-frame{flex:1 1 0;height:auto;min-height:0}.controls{flex:none;margin:6px 0}.weather{margin-top:3px;padding-top:2px}.details{flex:0 1 128px;min-height:48px;margin-top:3px;padding-top:4px}.details>div{padding:3px 0 7px}.details h2{font-size:20px;margin:3px 0}.details form label{margin:0 0 4px}#status,footer{flex:none}}

/* Flagship pass: the water is drawn live; the frame only holds it. */
.pond-frame{background:#1c3d36;container-type:size}
.pond-frame canvas{animation:pond-in 1.6s cubic-bezier(.2,.7,.2,1) both}
@keyframes pond-in{from{opacity:0}}
.pond-frame::before{background:radial-gradient(ellipse at 38% 30%,#c3c5ae,#969b84 52%,#6c725f);box-shadow:3px 7px 14px rgba(16,30,22,.45),inset -4px -6px 10px rgba(36,48,34,.35),inset 3px 3px 6px rgba(255,255,240,.18)}
.pond-label{text-shadow:0 1px 10px rgba(4,24,19,.75)}
@container (max-height:300px){.pond-label{bottom:14px}}
@container (max-height:230px){.pond-label span:first-child{display:none}.pond-label{justify-content:flex-end}}
@container (max-height:150px){.pond-label{display:none}}
@media(prefers-reduced-motion:reduce){.pond-frame canvas{animation:none}}
/* Landscape phones: the pond on the left, everything else in a slim scrolling rail. */
@media(max-height:520px) and (min-width:600px){
 main{grid-template-columns:minmax(0,1fr) minmax(230px,280px);grid-template-rows:auto auto minmax(0,1fr) auto;gap:0 16px;padding:10px 14px 8px}
 header,footer,.heading .eyebrow,.heading>p,.weather>span,.pond-frame::before{display:none}
 .heading{grid-column:2;grid-row:1;margin:0 0 6px;display:block}
 .heading h1{font-size:26px}
 .pond-frame{grid-column:1;grid-row:1/-1;height:100%;border-width:9px;box-shadow:0 0 0 4px color-mix(in srgb,var(--zc-garden-stone) 22%,transparent),0 10px 18px color-mix(in srgb,var(--zc-garden-shadow) 18%,transparent)}
 .pond-label{left:26px;right:40px;bottom:20px}
 .controls{grid-column:2;grid-row:2;margin:0}
 .actions{display:grid;grid-template-columns:1fr 1fr;gap:6px}
 .actions button{min-height:40px;padding:6px 8px;font-size:12px}
 #pause{grid-column:1/-1}
 .weather{flex-wrap:wrap;gap:0 12px;margin-top:6px;padding-top:2px}
 .weather label{min-height:34px}
 .details{grid-column:2;grid-row:3;border-left:0;border-top:1px solid var(--zc-garden-stone);padding:6px 0 0;margin-top:4px}
 .details>div{padding:4px 0 10px}
 .details h2{font-size:20px;margin:4px 0 8px}
 #status{grid-column:2;grid-row:4;font-size:11px;line-height:1.4;margin:4px 0 0}
}
/* Very small frames: keep the pond first and let the page scroll for the rest. */
@media(max-height:460px) and (max-width:599px){
 main{overflow-y:auto;padding:6px 10px 10px}
 header,footer,.heading .eyebrow,.heading>p,.weather>span{display:none}
 .heading{margin:0 0 5px}.heading h1{font-size:23px}
 .pond-frame{flex:0 0 auto;height:min(60dvh,240px);border-width:6px}
 .pond-label{left:16px;right:24px;bottom:14px}
 .controls{margin:6px 0 4px}
 .actions{gap:5px}.actions button{min-height:40px;font-size:11px;padding:4px 6px}
 .weather{gap:0 10px;font-size:10px;justify-content:center}.weather label{min-height:34px;gap:5px}.weather input{width:16px;height:16px}
 .details{flex:none;overflow:visible}
}
/* Draw the lily growth bar in the pond palette; the native bar ignores accent-color in some engines. */
progress{-webkit-appearance:none;appearance:none;border:0;background:color-mix(in srgb,var(--zc-border) 70%,transparent);color:var(--zc-accent)}
progress::-webkit-progress-bar{background:color-mix(in srgb,var(--zc-border) 70%,transparent);border-radius:99px}
progress::-webkit-progress-value{background:linear-gradient(90deg,color-mix(in srgb,var(--zc-accent) 70%,#a9c6a0),var(--zc-accent));border-radius:99px;transition:width .8s ease}
progress::-moz-progress-bar{background:var(--zc-accent);border-radius:99px}
