:root{--ink:#29433e;--cream:#fff9e8;--pool:#56c9d5;--purple:#76599b;--gold:#efc95d;--good:#417f5b;--warn:#99464e}*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden;font-family:"Trebuchet MS","Arial Rounded MT Bold",system-ui,sans-serif;background:#69c8e6;color:var(--ink)}button,a{font:inherit}.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0 0 0 0)!important;clip-path:inset(50%)!important;white-space:nowrap!important;border:0!important}.weather-shell,.weather-world{width:100%;height:100svh;overflow:hidden}.weather-world{position:relative;background:radial-gradient(circle at 50% 45%,#dcf8fa,#8fd9e9 58%,#57bde0)}.weather-scene{--ratio:1.7777778;position:absolute;left:50%;top:50%;width:min(100%,calc(100svh * var(--ratio)));aspect-ratio:16/9;transform:translate(-50%,-50%);overflow:clip;isolation:isolate}.weather-art{position:absolute;z-index:0;inset:0;background:var(--pw-weather-pools-bg,url('/weather-pools-storybook.webp')) center/100% 100% no-repeat;transform:scale(1.006)}
.money-equation[hidden],.money-shells[hidden],.pool-ladle[hidden],.weather-chime[hidden]{display:none!important}
.weather-back,.weather-wallet{position:absolute;z-index:30;top:2.1%;height:50px;display:flex;align-items:center;justify-content:center;border:3px solid rgba(255,255,255,.9);border-radius:999px;background:rgba(255,249,226,.97);box-shadow:0 5px 0 rgba(48,71,68,.26),0 13px 25px rgba(32,65,73,.15);color:#355c59;text-decoration:none}.weather-back{left:2%;gap:7px;padding:7px 14px}.weather-back span{font-size:23px}.weather-back b{font-size:12px}.weather-wallet{right:2%;min-width:92px;gap:7px;padding:7px 15px;font-size:21px}.weather-wallet span{width:29px;height:29px;display:grid;place-items:center;border-radius:50%;background:radial-gradient(circle at 35% 28%,#fff5ad,#ebc94f 58%,#a67728);color:#624816;font-weight:1000}.weather-prompt{position:absolute;z-index:29;left:50%;top:2%;width:min(54%,690px);min-height:60px;display:grid;place-items:center;padding:12px 25px;border:3px solid #fff4bd;border-radius:26px;background:rgba(46,72,71,.96);box-shadow:0 6px 0 rgba(31,53,53,.28),0 15px 28px rgba(37,70,76,.15);color:#fff;font-size:clamp(20px,1.7vw,27px);font-weight:1000;line-height:1.12;text-align:center;transform:translateX(-50%);cursor:pointer}.weather-prompt.good{background:rgba(49,115,70,.97)}.weather-prompt.error{background:rgba(137,57,65,.97)}.weather-prompt:focus-visible{outline:5px solid #fff0a2;outline-offset:4px}.weather-progress{position:absolute;z-index:29;left:50%;top:11.1%;transform:translateX(-50%)}#weather-round-dots{display:flex;gap:8px}#weather-round-dots i{width:12px;height:12px;border:2px solid white;border-radius:50%;background:rgba(54,79,76,.42);box-shadow:0 2px 4px rgba(26,55,60,.23)}#weather-round-dots i.done{background:#ffe277}#weather-round-dots i.current{background:white;transform:scale(1.35)}
.weather-customer-area{position:absolute;z-index:10;left:2%;top:21%;width:22%;height:39%;pointer-events:none}.weather-customer{position:absolute;left:0;bottom:0;width:100%;height:100%;padding:0;border:0;background:transparent;cursor:pointer;pointer-events:auto;touch-action:none;overflow:visible}.weather-customer img{position:absolute;left:50%;bottom:0;width:auto;height:var(--customer-canvas-h,clamp(144px,34.66vmin,275px));max-width:none;object-fit:contain;object-position:center bottom;translate:calc(-50% + var(--character-drag-x,0px)) calc(var(--sprite-foot-gap,11%) + var(--character-drag-y,0px));filter:drop-shadow(0 8px 5px rgba(40,62,55,.28));user-select:none}.weather-customer:focus,.weather-customer:focus-visible{outline:0!important;box-shadow:none!important}.weather-customer:focus-visible img{filter:drop-shadow(0 0 10px #fff1a3) drop-shadow(0 8px 5px rgba(40,62,55,.28))}.weather-request{position:absolute;left:62%;top:-2%;min-width:128px;max-width:190px;padding:10px 14px;border:3px solid #fff1c1;border-radius:20px 20px 20px 5px;background:rgba(255,250,232,.97);box-shadow:0 5px 0 rgba(84,70,57,.22);text-align:center}.weather-request strong{font-size:clamp(17px,1.35vw,22px);color:#654c78;line-height:1.08}
.trip-purse,.safe-jar{position:absolute;z-index:16;top:18%;display:grid;place-items:center;min-width:112px;padding:9px 15px;border:3px solid rgba(255,246,200,.95);box-shadow:0 5px 0 rgba(44,55,51,.27);color:#fff}.trip-purse{left:29%;border-radius:18px;background:rgba(64,79,72,.92)}.trip-purse::before{content:"$";position:absolute;left:-19px;bottom:-4px;width:42px;height:42px;display:grid;place-items:center;border:4px double #8e6827;border-radius:50%;background:radial-gradient(circle at 35% 28%,#fff7b8,#efc756 55%,#ad782a);box-shadow:8px -5px 0 -2px #ddb04a;color:#614617;font-size:20px;font-weight:1000}.trip-purse small,.safe-jar small{font-size:12px;letter-spacing:.06em;font-weight:1000}.trip-purse strong,.safe-jar strong{color:#ffe078;font-size:clamp(24px,2vw,31px)}.trip-purse.is-over{background:rgba(139,55,61,.96)}.safe-jar{right:25%;min-width:118px;border-radius:19px 19px 34% 34%;background:linear-gradient(145deg,rgba(142,123,93,.96),rgba(82,72,61,.96))}.safe-jar i{position:absolute;left:18%;right:18%;top:-10px;height:19px;border:3px solid #a68b64;border-radius:50%;background:#79664a}.safe-jar.is-broken{animation:jarWarn .42s ease 2;background:linear-gradient(145deg,#aa6268,#723d43)}
.weather-pool{position:absolute;z-index:8;left:36%;top:26%;width:34%;height:37%;border-radius:50%;pointer-events:none}.pool-ripple{position:absolute;left:16%;top:33%;width:68%;height:37%;border:6px solid rgba(202,255,252,.85);border-radius:50%;opacity:.2;transform:scale(.72)}.pool-ripple.r2{left:25%;top:40%;width:50%;height:25%;border-width:4px}.weather-scene.is-swirling .pool-ripple{animation:poolRipple .62s ease-out 2}.forecast-stones{position:absolute;z-index:3;left:9%;right:9%;top:9%;height:60%;display:flex;align-items:center;justify-content:center;gap:5%;opacity:0;transform:translateY(18px) scale(.8);transition:.35s}.weather-scene.has-forecast .forecast-stones{opacity:1;transform:none}.forecast-stone{--stone:#f1c95d;min-width:72px;min-height:72px;display:grid;place-items:center;padding:8px;border:5px solid rgba(255,250,214,.87);border-radius:47%;background:radial-gradient(circle at 35% 28%,#fff6c5,var(--stone) 60%,#a7773a);box-shadow:0 7px 0 rgba(82,65,46,.35);color:#58452c;font-size:13px;font-weight:1000;text-align:center}.forecast-stone.rain{--stone:#78cce0;color:#30556e}.forecast-stone.wind{--stone:#c9addc;color:#574064}.forecast-stone.cold{--stone:#b7dce5;color:#355a66}.forecast-stone small{display:block;font-size:10px}.pool-ladle{position:absolute;z-index:15;left:57%;top:22%;width:12%;height:28%;padding:0;border:0;background:transparent;cursor:pointer;touch-action:manipulation;transform-origin:18% 15%}.pool-ladle i{position:absolute;left:12%;top:4%;width:12px;height:76%;border-radius:8px;background:linear-gradient(90deg,#6d7475,#e1e6df,#737979);box-shadow:0 3px 3px rgba(43,55,53,.25);transform:rotate(27deg)}.pool-ladle b{position:absolute;right:4%;bottom:4%;width:56px;height:38px;border:7px solid #777f7c;border-radius:50%;background:linear-gradient(145deg,#eef2e9,#a6b5ae);box-shadow:inset 0 0 0 5px rgba(255,255,255,.35);transform:rotate(20deg)}.pool-ladle:focus-visible,.gear-item:focus-visible,.packed-item:focus-visible,.weather-chime:focus-visible,.money-shell:focus-visible{outline:4px solid #fff1a0;outline-offset:4px}.weather-scene.is-swirling .pool-ladle{animation:ladleSwirl .62s ease-in-out 2}
.gear-rail{position:absolute;z-index:16;left:2.5%;bottom:3%;width:43%;height:28%}.gear-item{--turn:0deg;position:absolute;width:21%;min-width:82px;min-height:86px;padding:13px 5px 8px;border:4px solid #dcbf88;border-radius:46% 46% 32% 32%;background:linear-gradient(145deg,#83bfc2,#477f89 72%);box-shadow:inset 0 0 0 3px rgba(255,255,255,.14),0 7px 0 #365f65,0 12px 18px rgba(43,53,46,.22);color:white;cursor:pointer;touch-action:none;transform:rotate(var(--turn));transition:filter .18s,transform .18s,opacity .18s}.gear-item:nth-child(1){left:0;top:19%;--turn:-5deg}.gear-item:nth-child(2){left:21%;top:37%;--turn:5deg}.gear-item:nth-child(3){left:43%;top:10%;--turn:-3deg}.gear-item:nth-child(4){left:65%;top:35%;--turn:7deg}.gear-item:nth-child(5){left:79%;top:-3%;--turn:-4deg}.gear-item .gear-icon{display:block;font-size:clamp(25px,2.25vw,37px);line-height:.95;filter:drop-shadow(0 2px 1px rgba(36,53,51,.3))}.gear-item small{display:block;margin-top:2px;font-size:clamp(10px,.82vw,13px);font-weight:1000;line-height:1}.gear-item strong{display:block;color:#fff0a2;font-size:clamp(19px,1.55vw,26px)}.gear-item:hover,.gear-item:focus-visible{filter:brightness(1.12);transform:translateY(-5px) rotate(0)}.gear-item[aria-pressed="true"]{opacity:.4;filter:saturate(.6);transform:translateY(5px) scale(.94) rotate(0)}
.travel-pack{position:absolute;z-index:10;right:12%;bottom:4%;width:27%;height:28%;border-radius:44% 44% 28% 28%;pointer-events:none}.travel-pack>i{position:absolute;left:24%;right:24%;bottom:6%;height:66%;border:7px solid #675036;border-radius:36% 36% 29% 29%;background:linear-gradient(145deg,rgba(214,171,102,.92),rgba(133,91,50,.94));box-shadow:inset 0 0 0 5px rgba(255,255,255,.13),0 8px 0 rgba(80,55,36,.78)}.travel-pack>i::before{content:"";position:absolute;left:22%;right:22%;top:-23%;height:35%;border:7px solid #6b5238;border-bottom:0;border-radius:50% 50% 0 0}.packed-gear{position:absolute;z-index:3;left:8%;right:8%;top:4%;height:72%;display:flex;align-items:flex-end;justify-content:center;gap:2%;pointer-events:auto}.packed-item{width:21%;min-width:55px;min-height:64px;padding:5px 3px;border:3px solid #e5ca94;border-radius:45%;background:linear-gradient(145deg,#6aa9ad,#416e78);box-shadow:0 5px 0 #36555b;color:white;font-size:11px;font-weight:1000;cursor:pointer}.packed-item span{display:block;font-size:23px}.packed-item strong{color:#fff1a4;font-size:16px}.weather-chime{position:absolute;z-index:16;right:2.5%;top:19%;width:12%;height:36%;padding:0;border:0;background:transparent;cursor:pointer;touch-action:manipulation;transform-origin:50% 4%}.weather-chime i{position:absolute;left:47%;top:0;width:8px;height:57%;border-radius:5px;background:linear-gradient(90deg,#785b32,#d4b46e,#6b4c2a)}.weather-chime b{position:absolute;left:28%;bottom:15%;width:46%;height:33%;border:6px solid #816231;border-radius:50% 50% 28% 28%;background:linear-gradient(145deg,#fff0a0,#d4a743 65%,#946d29);box-shadow:0 7px 0 #795728}.weather-chime b::after{content:"";position:absolute;left:50%;bottom:-28px;width:19px;height:19px;border-radius:50%;background:#e6c46d;transform:translateX(-50%)}.weather-chime[data-ready="true"]{filter:drop-shadow(0 0 13px rgba(255,239,126,.95));animation:chimeReady 1.3s ease-in-out infinite}.weather-scene.is-testing .weather-chime{animation:chimePull .36s ease-in-out 3}.weather-scene.is-testing .forecast-stone{animation:forecastSweep .7s ease-in-out both}.weather-scene.is-testing .forecast-stone:nth-child(2){animation-delay:.25s}.weather-scene.plan-ready .travel-pack{filter:drop-shadow(0 0 15px rgba(255,239,126,.9))}
.money-equation{position:absolute;z-index:21;left:51%;bottom:20%;display:flex;align-items:center;gap:13px;padding:12px 20px;border:4px solid #89633d;border-radius:18px;background:rgba(66,47,34,.95);box-shadow:0 6px 0 #4c3527;color:#fff8d3;transform:translateX(-50%)}.money-equation span{display:grid;place-items:center;font-size:12px;font-weight:1000}.money-equation small{font-size:12px}.money-equation b{font-size:27px;color:#ffe174}.money-equation i{font-size:27px;font-style:normal}.money-shells{position:absolute;z-index:22;left:34%;right:31%;bottom:3.5%;height:16%;display:flex;align-items:flex-end;justify-content:center;gap:8%}.money-shell{position:relative;width:27%;min-width:90px;min-height:86px;height:94%;padding:24px 5px 8px;border:4px solid #efe0be;border-radius:70% 70% 35% 35%;background:radial-gradient(ellipse at 50% 100%,#af7fc1,#71518d 72%);box-shadow:inset 0 0 0 4px rgba(255,255,255,.13),0 7px 0 #533b6a;color:#fff1a4;font-size:28px;font-weight:1000;cursor:pointer}.money-shell::before{content:"";position:absolute;left:14%;right:14%;top:14%;height:8px;border-radius:50%;background:rgba(255,245,218,.65);box-shadow:0 13px 0 rgba(255,245,218,.4)}.money-shell:hover,.money-shell:focus-visible{transform:translateY(-6px);filter:brightness(1.1)}
.weather-toy{position:absolute;z-index:7;border:0;background:transparent;cursor:pointer;touch-action:manipulation}.frog-toy{left:27%;top:50%;width:9%;height:13%}.falls-toy{right:24%;top:6%;width:12%;height:25%}.weather-scene[data-toy="pool-frog"] .frog-toy{animation:frogHop .42s ease 3}.weather-scene[data-toy="pool-falls"] .falls-toy{filter:drop-shadow(0 0 15px white);animation:fallsGlow .8s ease 2}.weather-scene[data-phase="forecast"] .gear-rail,.weather-scene[data-phase="forecast"] .weather-chime,.weather-scene[data-phase="forecast"] .travel-pack,.weather-scene[data-phase="weather"] .gear-rail,.weather-scene[data-phase="weather"] .pool-ladle,.weather-scene[data-phase="money-left"] .gear-rail,.weather-scene[data-phase="money-left"] .pool-ladle,.weather-scene[data-phase="money-left"] .weather-chime{visibility:hidden;pointer-events:none}.weather-scene[data-phase="pack"] .pool-ladle{visibility:hidden}.drag-ghost{position:fixed;z-index:999;width:88px;height:82px;display:grid;place-items:center;border:4px solid #e0c184;border-radius:46% 46% 32% 32%;background:#4e858c;color:white;font-weight:1000;box-shadow:0 12px 28px rgba(31,41,43,.3);opacity:.92;transform:translate(-50%,-50%);pointer-events:none}
/* Gear sits on the four painted counter circles; the painted wicker basket is the pack. */
.gear-rail{left:14%;width:62%;bottom:3%;height:26%}.gear-item{width:18%}.gear-item:nth-child(1){left:0;top:16%}.gear-item:nth-child(2){left:26%;top:28%}.gear-item:nth-child(3){left:52%;top:13%}.gear-item:nth-child(4){left:78%;top:27%}.gear-item:nth-child(5){left:84%;top:-5%}.travel-pack{left:39%;right:auto;top:38%;bottom:auto;width:22%;height:26%}.travel-pack>i{display:none}.packed-gear{left:5%;right:5%;top:25%;height:58%}
@keyframes poolRipple{to{opacity:0;transform:scale(1.35)}}@keyframes ladleSwirl{50%{transform:rotate(-18deg) translate(-12px,8px)}}@keyframes jarWarn{35%{transform:translateX(-4px)}70%{transform:translateX(4px)}}@keyframes chimeReady{50%{transform:rotate(3deg) scale(1.03)}}@keyframes chimePull{50%{transform:rotate(9deg)}}@keyframes forecastSweep{50%{transform:translateY(-10px) scale(1.08);filter:brightness(1.18)}}@keyframes frogHop{50%{transform:translateY(-15px) rotate(5deg)}}@keyframes fallsGlow{50%{filter:drop-shadow(0 0 24px #fff6ae)}}
@media(orientation:portrait){.weather-scene{left:0;top:0;width:100%;height:100svh;aspect-ratio:auto;transform:none}.weather-art{background-size:100% auto;background-position:center 15%;transform:none}.weather-back{left:14px;top:calc(env(safe-area-inset-top) + 10px)}.weather-wallet{right:14px;top:calc(env(safe-area-inset-top) + 10px)}.weather-prompt{top:calc(env(safe-area-inset-top) + 9px);width:55%;font-size:clamp(20px,2.6vw,25px)}.weather-progress{top:8%}.weather-customer-area{left:1%;top:14%;width:31%;height:25%}.weather-request{left:58%;top:0}.trip-purse{left:31%;top:17%}.safe-jar{right:25%;top:17%}.weather-pool{left:34%;top:18%;width:49%;height:24%}.pool-ladle{left:59%;top:17%;width:16%;height:20%}.gear-rail{left:9%;top:42%;bottom:auto;width:78%;height:16%}.travel-pack{left:38%;right:auto;top:30%;bottom:auto;width:26%;height:17%}.weather-chime{right:1%;top:18%;width:16%;height:23%}.money-equation{top:40%;bottom:auto;white-space:nowrap}.money-shells{left:10%;right:10%;top:46%;bottom:auto;height:10%}}
@media(max-width:760px) and (orientation:landscape){.weather-back,.weather-wallet{height:43px}.weather-back b{display:none}.weather-prompt{min-height:51px;font-size:18px}.gear-item{min-width:61px;min-height:70px}.money-equation{transform:translateX(-50%) scale(.92)}}
@media(orientation:portrait){.pool-ladle{left:72%;top:20%;width:14%;height:19%}}
@media(prefers-reduced-motion:reduce){.gear-item,.forecast-stones{transition:none}.weather-scene.is-swirling .pool-ripple,.weather-scene.is-swirling .pool-ladle,.weather-chime[data-ready="true"],.weather-scene.is-testing .weather-chime,.weather-scene.is-testing .forecast-stone,.weather-scene[data-toy] .weather-toy{animation:none}}html[data-motion="reduced"] .weather-scene.is-swirling .pool-ripple,html[data-motion="reduced"] .weather-chime[data-ready="true"],html[data-motion="reduced"] .weather-scene.is-testing .forecast-stone{animation:none}
.forecast-stones[hidden]{display:none!important}
.gear-item small{font-size:clamp(14px,1vw,16px)}
@media(orientation:portrait){.weather-scene{left:50%;top:0;width:calc(100svh * var(--ratio));height:100svh;max-width:none;aspect-ratio:auto;transform:translateX(-50%)}.weather-art{background-size:100% 100%;background-position:center;transform:scale(1.006)}.weather-back{left:calc((100% - 100vw)/2 + 14px)}.weather-wallet{right:calc((100% - 100vw)/2 + 14px)}.weather-prompt{width:min(34%,650px)}.weather-customer-area{left:30%;top:21%;width:14%;height:39%}.weather-request{left:62%;top:-2%;max-width:170px}.trip-purse{left:49%;top:18%}.safe-jar{right:31%;top:18%}.weather-pool{left:36%;top:26%;width:34%;height:37%}.pool-ladle{left:57%;top:22%;width:12%;height:28%}.gear-rail{left:30%;top:auto;bottom:3%;width:41%;height:26%}.travel-pack{left:43%;right:auto;top:38%;bottom:auto;width:14%;height:26%}.weather-chime{right:30%;top:19%;width:9%;height:36%}.money-equation{top:auto;bottom:20%}.money-shells{left:34%;right:31%;top:auto;bottom:3.5%;height:16%}}
@media(orientation:landscape) and (max-aspect-ratio:5/3){.weather-scene{width:calc(100svh * var(--ratio));height:100svh;max-width:none;aspect-ratio:auto}.weather-back{left:calc((100% - 100vw)/2 + 14px)}.weather-wallet{right:calc((100% - 100vw)/2 + 14px)}.weather-customer-area{left:13%;width:18%}.trip-purse{left:33%}.weather-chime{right:13%;width:11%}}
.stage-two-unlock{display:grid;grid-template-columns:auto 1fr;align-items:center;gap:14px;width:min(470px,100%);margin:16px auto 18px;border:4px solid #f5cd65;border-radius:24px;background:linear-gradient(135deg,#fff8cd,#e4f6d6);padding:14px 17px;box-shadow:0 7px 0 rgba(95,75,42,.18);text-align:left}.stage-two-unlock[hidden]{display:none}.stage-two-unlock-badge{display:grid;place-items:center;width:70px;height:70px;border:4px solid white;border-radius:50%;background:#6f9b77;box-shadow:0 5px 0 rgba(56,82,61,.22);font-size:36px;animation:skillBadgePop .7s cubic-bezier(.2,.85,.25,1.25)}.stage-two-unlock small,.stage-two-unlock h3,.stage-two-unlock p{display:block;margin:0}.stage-two-unlock small{color:#667548;font-size:12px;font-weight:1000;letter-spacing:.1em}.stage-two-unlock h3{margin:2px 0 3px;color:#3e543f;font-size:clamp(24px,3vw,31px);line-height:1}.stage-two-unlock p{font-size:clamp(16px,2vw,20px);font-weight:850;line-height:1.25}@keyframes skillBadgePop{0%{opacity:0;transform:scale(.3) rotate(-18deg)}70%{transform:scale(1.14) rotate(6deg)}100%{opacity:1;transform:none}}@media(max-width:560px){.stage-two-unlock{grid-template-columns:58px 1fr;padding:12px}.stage-two-unlock-badge{width:56px;height:56px;font-size:30px}}

/* Scene-led Weather Pools: the painted ponds and counter plates are the controls. */
.trip-purse{left:auto;right:1.6%;top:auto;bottom:2.4%;width:17%;min-width:176px;min-height:76px;display:flex;align-items:center;justify-content:center;gap:10px;padding:9px 12px;border:3px solid rgba(255,245,194,.94);border-radius:20px;background:rgba(55,72,67,.94);box-shadow:0 5px 0 rgba(44,55,51,.27);color:#fff}
.trip-purse::before{left:-17px;bottom:13px;width:38px;height:38px;font-size:18px}
.trip-purse>span{position:static;min-width:0;display:grid;place-items:center;padding:0;border:0;border-radius:0;background:none;box-shadow:none;color:#fff;animation:none}
.trip-purse>i{position:static;width:2px;height:42px;border:0;border-radius:2px;background:rgba(255,245,194,.5)}
.trip-purse small{font-size:clamp(10px,.72vw,12px);white-space:nowrap}.trip-purse strong{font-size:clamp(20px,1.65vw,27px)}
.trip-purse .safe-jar.is-broken{background:none;color:#ffd2ce;animation:jarWarn .42s ease 2}

.weather-pools{position:absolute;z-index:14;inset:0;pointer-events:none}
.weather-pool-hotspot{position:absolute;padding:0;border:0;border-radius:50%;background:transparent;box-shadow:none;cursor:pointer;pointer-events:auto;touch-action:manipulation;transition:filter .2s,transform .2s}
.weather-pool-hotspot.sun-pool{left:20.7%;top:14.2%;width:18.8%;height:22%}.weather-pool-hotspot.rain-pool{left:41.8%;top:13.3%;width:18.8%;height:21.5%}.weather-pool-hotspot.wind-pool{left:61.1%;top:13.7%;width:18.2%;height:22%}
.weather-pool-hotspot .pool-ripple{left:12%;top:47%;width:76%;height:38%;border-width:4px;opacity:0}.weather-pool-hotspot .pool-ripple.r2{left:24%;top:56%;width:52%;height:24%;border-width:3px}
.weather-pool-hotspot.is-needed{filter:drop-shadow(0 0 12px rgba(255,244,143,.95));animation:poolReady 1.5s ease-in-out infinite}
.weather-pool-hotspot:hover,.weather-pool-hotspot:focus-visible{filter:brightness(1.1) drop-shadow(0 0 15px rgba(255,247,168,.95));outline:0}
.weather-pool-hotspot:focus-visible::after{content:"";position:absolute;inset:7%;border:5px solid #fff2a2;border-radius:50%}
.weather-scene.is-swirling .weather-pool-hotspot.is-revealed .pool-ripple{animation:poolRipple .78s ease-out 2}
.weather-pool-hotspot.is-revealed::before{content:"";position:absolute;z-index:2;left:25%;right:25%;bottom:17%;height:48%;border-radius:50%;opacity:0;background:radial-gradient(circle,#fff 0 7%,transparent 9%) 0 0/18px 22px;pointer-events:none;animation:poolMagicRise .92s ease-out both}
.sun-pool.is-revealed::before{background:radial-gradient(circle,#fff5a8 0 10%,transparent 12%) 0 0/20px 22px}.rain-pool.is-revealed::before{background:radial-gradient(ellipse,#bff4ff 0 12%,transparent 14%) 0 0/15px 24px}.wind-pool.is-revealed::before{background:radial-gradient(ellipse,#e7d4ff 0 9%,transparent 11%) 0 0/23px 16px}

.gear-rail{left:0;right:0;bottom:0;width:100%;height:23%;display:block}
.gear-item{top:8%;width:13%;min-width:82px;min-height:88px;aspect-ratio:1.2;padding:9px 5px 7px}
.gear-item:nth-child(1){left:18%;top:8%;--turn:-2deg}.gear-item:nth-child(2){left:34%;top:8%;--turn:2deg}.gear-item:nth-child(3){left:50%;top:8%;--turn:-2deg}.gear-item:nth-child(4){left:66%;top:8%;--turn:2deg}.gear-item:nth-child(5){left:74%;top:-45%;--turn:0deg}
.weather-scene[data-phase="pack"] .gear-item{animation:gearFromPool .58s cubic-bezier(.2,.8,.25,1.2) both}.weather-scene[data-phase="pack"] .gear-item:nth-child(2){animation-delay:.08s}.weather-scene[data-phase="pack"] .gear-item:nth-child(3){animation-delay:.16s}.weather-scene[data-phase="pack"] .gear-item:nth-child(4){animation-delay:.24s}

/* A hanging chime with independent tubes and clapper. */
.weather-chime{transform-origin:50% 2%;overflow:visible}
.weather-chime::before{content:"";position:absolute;left:48%;top:0;width:5px;height:21%;border-radius:5px;background:#7b5d36;box-shadow:0 1px 0 #e5ca82}
.weather-chime::after{content:"";position:absolute;left:24%;top:18%;width:52%;height:13%;border:4px solid #7e6036;border-radius:50%;background:linear-gradient(#ffeda0,#c7963e);box-shadow:0 4px 0 #755329}
.weather-chime i{left:23%;top:29%;width:54%;height:49%;border:0;border-radius:0;background:repeating-linear-gradient(90deg,transparent 0 7%,#f2d58c 8% 19%,#8b6c3e 20% 24%,transparent 25% 31%);box-shadow:none;transform:none;clip-path:polygon(0 0,100% 0,84% 100%,68% 100%,60% 18%,42% 18%,34% 88%,16% 88%)}
.weather-chime b{left:43%;bottom:10%;width:14%;height:15%;border:3px solid #76562f;border-radius:50%;background:#ffe481;box-shadow:0 4px 0 #805d30;transform:none}
.weather-chime b::after{left:50%;bottom:-22px;width:17px;height:17px;background:#e7b957}
.weather-scene.is-testing .weather-chime{animation:chimeBodySwing 1.08s cubic-bezier(.22,.7,.23,1) both}.weather-scene.is-testing .weather-chime i{animation:chimeTubes 1.08s ease-in-out both}.weather-scene.is-testing .weather-chime b{animation:chimeClapper 1.08s ease-in-out both}

@keyframes poolReady{50%{transform:scale(1.025);filter:drop-shadow(0 0 18px rgba(255,244,143,.98))}}
@keyframes poolMagicRise{0%{opacity:0;transform:translateY(18px) scale(.55)}35%{opacity:1}100%{opacity:0;transform:translateY(-45px) scale(1.2)}}
@keyframes gearFromPool{0%{opacity:0;transform:translateY(-75px) scale(.45) rotate(-9deg)}100%{opacity:1;transform:rotate(var(--turn))}}
@keyframes chimeBodySwing{0%,100%{transform:rotate(0)}22%{transform:rotate(9deg)}48%{transform:rotate(-7deg)}70%{transform:rotate(4deg)}86%{transform:rotate(-2deg)}}
@keyframes chimeTubes{0%,100%{transform:skewX(0)}25%{transform:skewX(-7deg)}52%{transform:skewX(6deg)}78%{transform:skewX(-3deg)}}
@keyframes chimeClapper{0%,100%{transform:translateX(0)}24%{transform:translateX(-13px)}50%{transform:translateX(12px)}76%{transform:translateX(-6px)}}

@media(orientation:portrait){
  .trip-purse{left:auto;right:calc((100% - 100vw)/2 + 14px);top:auto;bottom:2.4%;width:16%;min-width:160px}
  .gear-rail{left:0;right:0;top:auto;bottom:0;width:100%;height:23%}
}
@media(prefers-reduced-motion:reduce){.weather-pool-hotspot.is-needed,.weather-pool-hotspot.is-revealed::before,.weather-scene[data-phase="pack"] .gear-item,.weather-scene.is-testing .weather-chime,.weather-scene.is-testing .weather-chime i,.weather-scene.is-testing .weather-chime b{animation:none}}

/* Portrait iPads show the whole illustrated room, then use the clear space below it. */
@media(orientation:portrait){
  .weather-scene{left:0;top:0;width:100vw;height:100svh;max-width:none;aspect-ratio:auto;transform:none}
  .weather-art{background-size:100% auto;background-position:center top;background-repeat:no-repeat;transform:none}
  .weather-back{left:14px;top:calc(env(safe-area-inset-top) + 10px)}.weather-wallet{right:14px;top:calc(env(safe-area-inset-top) + 10px)}
  .weather-prompt{top:calc(env(safe-area-inset-top) + 9px);width:55%;font-size:clamp(19px,2.6vw,25px)}.weather-progress{top:7vw}
  .weather-pools{height:56.25vw}.weather-customer-area{left:1%;top:10vw;width:25%;height:25vw}.weather-request{left:58%;top:0;max-width:180px}
  .trip-purse{left:auto;right:2%;top:58vw;bottom:auto;width:29%;min-width:160px}
  .gear-rail{left:0;right:0;top:42vw;bottom:auto;width:100%;height:14vw}.gear-item{top:5%;width:14%;min-width:44px;min-height:64px}.gear-item:nth-child(1){left:17%}.gear-item:nth-child(2){left:33%}.gear-item:nth-child(3){left:49%}.gear-item:nth-child(4){left:65%}
  .travel-pack{left:39%;right:auto;top:22vw;bottom:auto;width:22%;height:17vw}.weather-chime{right:1%;top:10vw;width:16%;height:24vw}
  .money-equation{top:61vw;bottom:auto;max-width:92%;white-space:nowrap}.money-shells{left:10%;right:10%;top:72vw;bottom:auto;height:11vw}
}
/* The painted counter plates now hold real illustrated objects, not card-shaped
   buttons. The transparent button remains a generous iPad touch target. */
.gear-item{width:15%;min-width:96px;min-height:112px;aspect-ratio:1;padding:0;border:0;border-radius:0;background:none;box-shadow:none;color:#493521;overflow:visible;filter:drop-shadow(0 7px 4px rgba(45,35,26,.3))}
.gear-item::before,.gear-item::after{display:none}
.gear-item>img{position:absolute;left:50%;top:0;width:90%;height:76%;object-fit:contain;transform:translateX(-50%);pointer-events:none;user-select:none}
.gear-copy{position:absolute;z-index:2;left:50%;bottom:-3px;width:128%;display:flex;align-items:center;justify-content:center;gap:6px;color:#3f2e20;font-weight:1000;line-height:1.02;text-align:center;text-shadow:0 2px 0 #fff6d7,1px 0 0 #fff6d7,-1px 0 0 #fff6d7;transform:translateX(-50%);pointer-events:none}
.gear-copy small{display:block;margin:0;font-size:clamp(12px,.88vw,15px);font-weight:1000}
.gear-copy strong{display:block;color:#7b441b;font-size:clamp(17px,1.35vw,22px);text-shadow:0 2px 0 #fff6d7,1px 0 0 #fff6d7,-1px 0 0 #fff6d7}
.gear-item:hover,.gear-item:focus-visible{filter:brightness(1.1) drop-shadow(0 10px 5px rgba(45,35,26,.34));transform:translateY(-6px) rotate(0)}
.gear-item[aria-pressed="true"]{opacity:.35;filter:saturate(.55);transform:translateY(5px) scale(.94)}
.gear-item.gear-badge>img,.gear-item.gear-pin>img,.gear-item.gear-sticker>img,.gear-item.gear-ribbon>img,.gear-item.gear-ice>img{width:70%}
.gear-item.gear-umbrella>img{height:82%}
.packed-item{position:relative;width:25%;min-width:54px;min-height:72px;padding:0;border:0;border-radius:0;background:none;box-shadow:none;color:#493521;overflow:visible;filter:drop-shadow(0 5px 3px rgba(45,35,26,.3))}
.packed-item>img{position:absolute;left:50%;top:0;width:92%;height:72%;object-fit:contain;transform:translateX(-50%);pointer-events:none}
.packed-item .gear-copy{bottom:-4px;width:150%}.packed-item .gear-copy small{font-size:9px}.packed-item .gear-copy strong{font-size:13px}
.drag-ghost{border:0;border-radius:0;background:none;box-shadow:none}.drag-ghost>img{width:82%;height:70%;object-fit:contain}.drag-ghost .gear-copy{bottom:0}
@media(orientation:portrait){.gear-item{min-width:70px;min-height:92px}.gear-copy small{font-size:11px}.gear-copy strong{font-size:16px}}

/* Place each loose object on its painted counter plate rather than over the
   timber fascia below the table. */
.gear-rail{left:0;right:0;top:auto;bottom:13%;width:100%;height:23%}
.gear-item:nth-child(1){left:10.5%;top:0}.gear-item:nth-child(2){left:31.5%;top:0}.gear-item:nth-child(3){left:52.5%;top:0}.gear-item:nth-child(4){left:73.5%;top:0}.gear-item:nth-child(5){left:73.5%;top:0}
.gear-copy{bottom:2px}
@media(orientation:portrait){.gear-rail{left:0;right:0;top:31vw;bottom:auto;width:100%;height:17vw}.gear-item:nth-child(1){left:10.5%;top:0}.gear-item:nth-child(2){left:31.5%;top:0}.gear-item:nth-child(3){left:52.5%;top:0}.gear-item:nth-child(4){left:73.5%;top:0}}

/* The trip request now lives in the one large instruction banner. The familiar
   service bell replaces the abstract wind chime. */
.weather-request[hidden]{display:none!important}
.gear-copy{width:145%;gap:8px;bottom:-2px}
.gear-copy small{font-size:clamp(15px,1.12vw,20px);line-height:1.04}
.gear-copy strong{font-size:clamp(22px,1.72vw,29px)}
.weather-chime{left:42%;right:auto;top:55%;width:9%;height:15%;transform-origin:50% 100%;overflow:visible}
.weather-chime::before,.weather-chime::after,.weather-chime i,.weather-chime b{display:none!important}
.weather-chime img{width:100%;height:100%;object-fit:contain;object-position:center bottom;filter:drop-shadow(0 9px 4px rgba(52,39,24,.42));pointer-events:none;user-select:none}
.weather-chime[data-ready="true"]{filter:none;animation:bellReady 1.25s ease-in-out infinite}
.weather-scene.is-testing .weather-chime{animation:bellRing .55s ease-in-out 2}
@keyframes bellReady{50%{transform:translateY(-5px) scale(1.06)}}
@keyframes bellRing{20%{transform:rotate(-8deg) scale(1.04)}55%{transform:rotate(8deg) scale(1.06)}100%{transform:none}}
@media(orientation:portrait){.gear-copy small{font-size:clamp(13px,1.7vw,17px)}.gear-copy strong{font-size:clamp(19px,2.2vw,24px)}.weather-chime{left:42%;right:auto;top:31vw;width:11%;height:12vw}}
@media(orientation:landscape) and (max-aspect-ratio:5/3){.gear-rail{left:calc((100% - 100vw)/2);right:calc((100% - 100vw)/2);width:auto}.trip-purse{right:calc((100% - 100vw)/2 + 14px)}.weather-chime{left:44%;right:auto;width:9%}}
@media(prefers-reduced-motion:reduce){.weather-chime[data-ready="true"],.weather-scene.is-testing .weather-chime{animation:none}}

.forecast-readout{position:absolute;z-index:5;left:50%;bottom:5%;width:90%;color:#fffbe5;font-size:clamp(14px,1.15vw,20px);font-weight:1000;line-height:1.05;text-align:center;text-shadow:0 3px 3px rgba(32,55,67,.9),1px 0 rgba(32,55,67,.9),-1px 0 rgba(32,55,67,.9);transform:translateX(-50%);pointer-events:none}
.forecast-readout[hidden]{display:none}
/* All seven choices stay visible, with a second row on portrait screens. */
.gear-rail{display:grid;grid-template-columns:repeat(var(--gear-count,7),minmax(0,1fr));align-items:stretch;gap:1%;padding:0 4%}
.gear-rail .gear-item{position:relative;left:auto!important;top:auto!important;width:100%;height:100%;min-width:0;min-height:84px;aspect-ratio:auto}
.gear-rail .gear-item>img{height:68%;width:92%}
.gear-rail .gear-copy{width:104%;bottom:2px;gap:6px}
.gear-rail .gear-copy small{font-size:clamp(14px,1.12vw,19px);line-height:1.1}
.gear-rail .gear-copy strong{font-size:clamp(19px,1.6vw,27px)}
.weather-chime{left:auto;right:20%;top:49%;width:9%;height:14%}
@media(orientation:portrait){
  .gear-rail{top:34vw;height:max(228px,42vw);grid-template-columns:repeat(4,minmax(0,1fr));grid-template-rows:repeat(2,minmax(0,1fr));padding:0 3%;gap:10px 2%}
  .gear-rail .gear-item{min-height:0}
  .gear-rail .gear-item>img{height:60%}
  .gear-rail .gear-copy{width:104%;gap:3px}
  .gear-rail .gear-copy small{font-size:clamp(14px,1.6vw,17px)}
  .gear-rail .gear-copy strong{font-size:clamp(16px,2.1vw,23px)}
  .trip-purse{top:calc(34vw + max(228px,42vw) + 12px)}
  .weather-scene[data-phase="money-left"] .trip-purse{top:calc(83vw + 12px)}
  .weather-chime{left:auto;right:20%;top:24vw;width:10%;height:9vw}
}
