:root{color-scheme:dark;font-family:Georgia,serif;color:#f4edd5;background:#102b28;--accent:#dcc992;--zone:#0c2924}*{box-sizing:border-box}body{margin:0;height:100dvh;min-height:360px;overflow:hidden;background:linear-gradient(110deg,color-mix(in srgb,var(--zone) 90%,transparent),color-mix(in srgb,var(--zone) 70%,transparent)),url('assets/garden.webp') center/cover}button,input{font-family:system-ui,sans-serif}button{border:1px solid #acbea54f;background:#183c35d9;color:#e9e4c9;border-radius:12px;padding:11px 16px;cursor:pointer}button:hover{background:#38564a}button:disabled{opacity:.4;cursor:default}button:focus-visible{outline:3px solid #eed094;outline-offset:3px}header{height:13vh;min-height:62px;display:flex;align-items:center;justify-content:space-between;padding:14px 3.5vw;gap:20px}.brand{background:none;border:0;padding:0;text-align:left;font:700 12px system-ui;letter-spacing:.17em}.brand span{display:block;font-size:8px;letter-spacing:.23em;color:#97b8a7;margin-top:8px}.title{position:absolute;left:50%;translate:-50% 0;text-align:center;pointer-events:none}small{font:700 10px system-ui;letter-spacing:.18em;color:#bdd1bc}h1{font-size:clamp(24px,2.9vw,66px);font-weight:400;letter-spacing:-.025em;margin:5px 0}nav{display:flex;gap:8px}nav button{font-size:11px}main{height:81vh;padding:0 3.5vw;display:grid;grid-template-columns:clamp(230px,23vw,480px) minmax(0,1fr);gap:3vw}aside{align-self:center;max-height:100%;padding:clamp(18px,2vw,42px);border:1px solid #b2c5a438;background:linear-gradient(145deg,#224d40d9,#0b2424ed);border-radius:26px;box-shadow:0 20px 70px #00151150}.chapter{display:flex;align-items:center;gap:15px}.chapter>span{font:28px Georgia;color:var(--accent)}h2{font-size:clamp(29px,3.3vw,68px);font-weight:400;line-height:1.01;letter-spacing:-.035em;margin:18px 0}#objective{font:clamp(11px,1vw,18px)/1.6 system-ui;color:#b7cebc;margin:12px 0 24px}.stats{display:grid;gap:10px}.stats>div{display:grid;grid-template-columns:40px 1fr;padding:14px;border:1px solid #a9c3ac27;border-radius:14px;background:#0927229a}.stats i{grid-row:span 2;font-size:28px;font-style:normal;color:var(--accent)}.stats strong{font:700 clamp(18px,1.5vw,30px) system-ui}.stats span{font:9px system-ui;color:#a2baad;margin-top:4px}.meter{height:4px;background:#476655;margin:18px 0 8px;border-radius:8px;overflow:hidden}.meter b{display:block;height:100%;width:100%;background:linear-gradient(90deg,#87ccaf,var(--accent));transition:width .25s}#low-moves{font:11px system-ui;color:#e4c6a5;height:18px;margin:6px 0}.actions{display:flex;gap:7px}.actions button{flex:1;font-size:11px;padding:10px 5px}.petals{font:11px/1.6 system-ui;color:#c3c8a7;margin:17px 0 9px}.quiet{font-size:10px;background:transparent;border:0;padding:3px 0;color:#a9c2b3}#stage{position:relative;min-width:0;overflow:hidden;border:1px solid #bacbb041;border-radius:30px;background:radial-gradient(ellipse at 50% 48%,color-mix(in srgb,var(--scene) 55%,transparent),var(--scene));box-shadow:0 20px 80px #00131455}canvas{display:block;width:100%;height:100%;touch-action:manipulation}#targets{position:absolute;inset:0;pointer-events:none}.tile-target{position:absolute;translate:-50% -50%;padding:0;border:0;background:transparent!important;pointer-events:auto}.tile-target.hinted{outline:3px solid #fae0a2;box-shadow:0 0 30px #ffc95c55}.stage-caption{position:absolute;left:25px;right:25px;bottom:18px;display:flex;justify-content:space-between;font:8px system-ui;letter-spacing:.13em;color:#a2c2b3;pointer-events:none}.stage-caption span:last-child{color:var(--accent)}footer{height:6vh;display:flex;align-items:center;justify-content:space-between;padding:0 4vw;font:9px system-ui;color:#acbca9}footer span:last-child{font-size:8px;letter-spacing:.13em}#victory{position:absolute;bottom:9%;left:50%;translate:-50% 0;width:min(620px,82%);padding:24px;text-align:center;border:1px solid #ddcf8660;border-radius:22px;background:linear-gradient(145deg,#21483bf2,#0c2627fa);box-shadow:0 10px 70px #0008;animation:arrive .6s ease}#victory h2{font-size:36px;margin:10px 0}#stars{color:#efd18b;letter-spacing:8px;font-size:30px}#reward-note{font:13px system-ui;color:#d4d9c3}dialog{width:min(900px,92vw);max-height:86vh;border:1px solid #bdc1a65c;border-radius:24px;padding:32px;background:linear-gradient(145deg,#23463e,#10292b);color:#f2ead2;box-shadow:0 20px 90px #0009;overflow:auto}dialog::backdrop{background:#031915cc}dialog h2{font-size:32px;margin:0 40px 18px 0}dialog h3{font:20px Georgia;color:#ded8b8}dialog p{font:14px/1.7 system-ui;color:#bed1c0}#close-modal{position:absolute;right:15px;top:15px;padding:5px 12px;font-size:22px}.level-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:10px}.level-grid button{min-height:66px}.level-grid strong{display:block;font-size:19px}.level-grid span{display:block;font:10px system-ui;color:#ead392;margin-top:8px}.map-zone{border-top:1px solid #d5dbb622;margin-top:18px}.map-zone h3{margin:18px 0 10px}.settings-row{display:grid;grid-template-columns:100px 1fr 55px;gap:14px;align-items:center;margin:22px 0;font:14px system-ui}.settings-row input{width:100%;accent-color:#ddca8c}select{padding:10px;background:#173c33;border:1px solid #9abb8b;color:#fff}.collection{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.collection>div{text-align:center;border:1px solid #9ab59844;padding:20px 8px;border-radius:15px}.collection .flower-symbol{font-size:34px;color:#e2c992}.collection .locked{opacity:.32}#toast{position:fixed;left:50%;bottom:7%;translate:-50% 0;border-radius:14px;padding:14px 22px;background:#183e37ed;color:#f2e5c1;font:13px system-ui;z-index:10;opacity:0;pointer-events:none;transition:opacity .2s}#toast.show{opacity:1}[hidden]{display:none!important}@keyframes arrive{from{opacity:0;transform:translateY(15px)}to{opacity:1;transform:translateY(0)}}
@media(max-height:650px) and (min-width:700px){header{min-height:56px}main{grid-template-columns:220px 1fr;gap:20px}aside{padding:18px}aside h2{font-size:29px;margin:9px 0}.chapter>span{font-size:20px}.chapter small{font-size:8px}#objective{font-size:10px;margin:6px 0 10px}.stats>div{padding:8px}.stats strong{font-size:15px}.stats span{font-size:7px}.meter{margin:10px 0 3px}#low-moves{font-size:9px;margin:3px 0;height:12px}.actions button{padding:8px 4px;font-size:9px}.petals{font-size:9px;margin:9px 0}.quiet{font-size:9px}.brand{font-size:9px}.brand span{display:none}nav button{padding:8px;font-size:9px}.stage-caption{font-size:7px;left:16px;right:16px;bottom:12px}footer{font-size:8px}}
@media(max-width:699px), (max-width:900px) and (orientation:portrait){header{height:12vh;padding:10px 14px;min-height:70px}.brand{font-size:0;width:32px;height:32px;border:1px solid #78977f;border-radius:50%}.brand:after{content:'☷';font-size:20px}.brand span{display:none}.title{left:60px;translate:none;text-align:left;max-width:65%}.title small{font-size:7px}h1{font-size:24px}.title+nav{margin-left:auto}nav #collection{display:none}nav button{font-size:0;padding:8px}#settings:after{content:'⚙';font-size:18px}main{height:82vh;display:flex;flex-direction:column;padding:0 12px;gap:10px}aside{width:100%;flex-shrink:0;padding:12px 14px;border-radius:19px}.chapter,aside h2,#objective,.quiet{display:none}.stats{grid-template-columns:1fr 1fr;gap:8px}.stats>div{padding:7px 10px;grid-template-columns:28px 1fr}.stats strong{font-size:17px}.stats span{font-size:7px}.stats i{font-size:22px}.meter{margin:9px 0 4px}#low-moves{height:10px;font-size:8px;margin:2px 0 5px}.actions button{font-size:10px;padding:7px}.petals{font-size:9px;margin:7px 0 0}#stage{flex:1;min-height:200px;border-radius:22px}.stage-caption{font-size:6px;left:12px;right:12px;bottom:12px;letter-spacing:.04em}.stage-caption span:last-child{max-width:110px;text-align:right}footer{font-size:7px;padding:0 14px}footer span:last-child{font-size:6px}#victory{width:92%;padding:16px;bottom:6%}#victory h2{font-size:27px}#victory small{font-size:8px}#reward-note{font-size:11px}.level-grid{grid-template-columns:repeat(3,1fr)}.collection{grid-template-columns:repeat(2,1fr)}dialog{padding:25px 18px}.settings-row{grid-template-columns:65px 1fr 34px;gap:8px}}
body{display:flex;flex-direction:column}header{flex:0 0 13vh}main{min-height:0;grid-template-rows:minmax(0,1fr);height:auto;flex:1}footer{flex:0 0 6vh}#stage{min-height:0}
@media(min-width:700px) and (max-height:800px){aside{padding:18px}aside h2{font-size:32px;margin:10px 0}#objective{font-size:11px;line-height:1.45;margin:10px 0 16px}.stats>div{padding:10px}.stats strong{font-size:18px}.meter{margin:12px 0 5px}#low-moves{margin:3px 0;height:14px}.petals{font-size:10px;margin:11px 0 7px}.actions button{padding:8px 4px}.quiet{font-size:9px}}
@media(min-width:700px) and (max-height:520px){aside{padding:14px}aside h2,#objective{display:none}.chapter{margin-bottom:14px}.stats>div{padding:8px}.stats strong{font-size:16px}.petals{margin-top:9px}header{flex-basis:13vh}}
@media(max-width:699px), (max-width:900px) and (orientation:portrait){header{flex-basis:12vh}main{height:auto;flex:1}#stage{min-height:0}footer{flex-basis:6vh}}
.tile-target{min-width:44px;min-height:44px}
.banner-slot{width:min(728px,100%);min-height:90px;margin:20px auto 0;border:1px solid #70857933}#victory .banner-slot{min-height:50px}@media(max-width:699px), (max-width:900px) and (orientation:portrait){.banner-slot{width:320px;max-width:100%;min-height:50px}}
.containment{display:grid;gap:7px;font:12px/1.4 system-ui;margin-top:13px;color:#e4cf9d}.containment b{font-size:18px}.control-list{display:grid;gap:10px}.control-list button{text-align:left}.control-list small{display:block;margin-top:8px;letter-spacing:.05em}.piece-label{position:absolute;translate:-50% -50%;padding:2px 5px;border:1px solid #b5c3a755;border-radius:5px;background:#12332ee0;color:#f3e5b8;font:8px system-ui;white-space:nowrap;pointer-events:none;z-index:2}.leak-marker{position:absolute;translate:-50% -50%;font:700 19px system-ui;color:#f4b96c;text-shadow:0 0 5px #e6a260,0 0 12px #f4b96c;pointer-events:none;z-index:2}#low-moves{height:auto;min-height:30px;line-height:1.4}#victory{z-index:5}#victory h2{font-size:30px}.title{max-width:55%}h1{font-size:clamp(22px,2.5vw,56px)}
@media(max-width:699px), (max-width:900px) and (orientation:portrait){header{min-height:74px;flex-basis:10vh}.title{left:57px;max-width:calc(100% - 163px)}h1{font-size:17px;line-height:1.15}nav #how{font-size:10px;padding:6px}nav{gap:4px}.containment{font-size:10px;display:flex;justify-content:space-between;margin-top:7px;gap:8px}.containment b{font-size:14px}aside{padding:9px 11px}.stats>div{padding:4px 8px}.actions button{min-height:32px}#low-moves{min-height:23px;font-size:9px;margin:3px 0}.piece-label{font-size:7px;padding:1px 3px}.leak-marker{font-size:16px}.petals{margin:5px 0 0}.stage-caption{font-size:5.5px}footer{flex-basis:5vh}#victory h2{font-size:24px}}
@media(min-width:700px) and (max-height:520px){.containment{font-size:10px;margin-top:8px;gap:3px}.containment b{font-size:14px}#low-moves{font-size:8px;min-height:22px}.stats>div{padding:5px}.chapter{margin-bottom:8px}aside{padding:12px}.petals{margin:7px 0 0}.stage-caption{font-size:6px}#victory{bottom:6%;padding:13px}#victory h2{font-size:24px}}
/* 4.0.2 adaptive board emphasis and non-blocking garden finale. */
@media(min-width:700px) and (min-height:521px){main{padding-inline:clamp(18px,2.4vw,56px);grid-template-columns:clamp(220px,20vw,390px) minmax(0,1fr);gap:clamp(16px,2vw,38px)}}
#victory{bottom:7%;width:min(560px,78%);border-color:#f0d98d73;background:linear-gradient(145deg,#1a493dc4,#092325d2);box-shadow:0 14px 80px #0007;backdrop-filter:blur(2px);animation:finale-arrive .72s cubic-bezier(.2,.75,.2,1)}
#stars{min-height:38px}#stars span{display:inline-block;opacity:0;scale:.45;filter:drop-shadow(0 0 8px #ffd76b88);animation:star-in .42s cubic-bezier(.2,1.4,.3,1) forwards}#stars span:nth-child(2){animation-delay:.14s}#stars span:nth-child(3){animation-delay:.28s}
@keyframes finale-arrive{from{opacity:0;transform:translateY(18px) scale(.965)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes star-in{to{opacity:1;scale:1}}
@media(prefers-reduced-motion:reduce){#victory,#stars span{animation-duration:.01ms!important;animation-delay:0ms!important}}
