.habitat-preview{--habitat-camera-scale:1.14;min-height:0;aspect-ratio:941/1672;background:#9ddc77;overflow:hidden}
.habitat-preview::before{content:"";position:absolute;inset:0;background:url("assets/Habitats/sunnybrook-pond-base.webp") center bottom/cover no-repeat;transform:scale(var(--habitat-camera-scale));transform-origin:50% 86%;transition:transform .7s cubic-bezier(.2,.8,.2,1);pointer-events:none}
.habitat-world{position:absolute;inset:0;transform:scale(var(--habitat-camera-scale));transform-origin:50% 86%;transition:transform .7s cubic-bezier(.2,.8,.2,1)}
.habitat-preview[data-habitat-tier="1"]{--habitat-camera-scale:1.105}.habitat-preview[data-habitat-tier="2"]{--habitat-camera-scale:1.07}.habitat-preview[data-habitat-tier="3"]{--habitat-camera-scale:1.035}.habitat-preview[data-habitat-tier="4"]{--habitat-camera-scale:1}
.habitat-copy{display:none!important}
.habitat-top-controls{position:absolute;z-index:40;top:10px;left:10px;display:flex;gap:7px;align-items:center}.habitat-info-button,.habitat-season-button{box-sizing:border-box;width:36px;height:36px;min-width:36px;min-height:36px;flex:0 0 36px;display:grid;place-items:center;padding:0;border:2px solid #176b55;border-radius:50%;color:#176b55;background:rgba(255,255,255,.96);box-shadow:inset 0 2px 0 rgba(255,255,255,.9),0 3px 0 rgba(23,107,85,.24),0 6px 14px rgba(23,60,53,.14);appearance:none;-webkit-appearance:none;touch-action:manipulation;-webkit-tap-highlight-color:transparent}.habitat-info-button{font:900 18px/1 Georgia,serif;font-style:italic}.habitat-season-button{font:17px/1 sans-serif}.habitat-info-button:active,.habitat-season-button:active{transform:translateY(2px);box-shadow:inset 0 2px 0 rgba(255,255,255,.9),0 1px 0 rgba(23,107,85,.24),0 4px 10px rgba(23,60,53,.12)}
.habitat-season-details{position:absolute;z-index:42;top:20px;left:20px;width:min(338px,calc(100% - 40px));padding:16px 18px 17px;border:0;border-radius:24px;color:#176b55;background:rgba(255,255,255,.97);box-shadow:0 10px 28px rgba(23,60,53,.22);backdrop-filter:blur(5px)}.habitat-season-details[hidden]{display:none}.habitat-season-details-close{position:absolute;top:9px;right:11px;width:36px;height:36px;display:grid;place-items:center;margin:0;padding:0;border:0;border-radius:50%;color:#176b55;background:transparent;font:900 31px/1 "Baloo 2",sans-serif}.habitat-season-kicker{margin:0;color:#c67b16;font:900 10px/1 "Nunito",sans-serif;letter-spacing:.12em}.habitat-season-details h2{margin:3px 42px 1px 0;color:#176b55;font:900 28px/1 "Baloo 2",sans-serif}.habitat-season-ends{margin:0 0 12px;font:800 12px/1.2 "Nunito",sans-serif}.habitat-season-progress-copy{display:flex;justify-content:space-between;gap:8px;align-items:end;margin-bottom:6px;font:800 11px/1.15 "Nunito",sans-serif}.habitat-season-progress-copy strong{font-size:13px}.habitat-season-progress-copy span{text-align:right}.habitat-season-progress{height:10px;overflow:hidden;border-radius:999px;background:#d9eadf;box-shadow:inset 0 1px 2px rgba(23,60,53,.15)}.habitat-season-progress span{display:block;height:100%;border-radius:inherit;background:#f2ad35}.habitat-set-selector{margin-top:14px;padding-top:12px;border-top:1px solid rgba(23,107,85,.16)}.habitat-set-label{display:block;margin-bottom:7px;font:900 12px/1 "Nunito",sans-serif;text-transform:uppercase;letter-spacing:.06em}.habitat-set-choice{width:100%;display:grid;grid-template-columns:auto 1fr;gap:0 7px;align-items:center;padding:9px 11px;border:2px solid #176b55;border-radius:14px;color:#176b55;background:#eef9f2;text-align:left;font:900 14px/1.1 "Nunito",sans-serif;opacity:1}.habitat-set-choice small{grid-column:2;font:800 10px/1.2 "Nunito",sans-serif;opacity:.72}.habitat-set-selector p{margin:8px 2px 0;font:700 11px/1.3 "Nunito",sans-serif;opacity:.82}
.habitat-details{position:absolute;z-index:41;top:20px;left:20px;width:min(338px,calc(100% - 40px));padding:16px 18px 15px;border:0;border-radius:24px;color:#176b55;background:rgba(255,255,255,.96);box-shadow:0 10px 28px rgba(23,60,53,.22);backdrop-filter:blur(5px)}.habitat-details[hidden]{display:none}.habitat-details-close{width:36px;height:36px;display:grid;place-items:center;margin:-4px 0 2px -5px;padding:0;border:0;border-radius:50%;color:#176b55;background:transparent;font:900 31px/1 "Baloo 2",sans-serif;touch-action:manipulation}.habitat-details h2{margin:0 0 8px;color:#176b55;font:900 30px/1 "Baloo 2",sans-serif;letter-spacing:-.02em}.habitat-critter-slots{display:grid;grid-template-columns:repeat(5,48px);gap:8px;align-items:center}.habitat-critter-slot{width:48px;height:48px;display:grid;place-items:center;padding:0;overflow:hidden;border:0;border-radius:50%;color:#fff;background:#176b55;box-shadow:inset 0 2px 0 rgba(255,255,255,.18);font:900 27px/1 "Baloo 2",sans-serif;touch-action:manipulation}.habitat-critter-slot.empty{pointer-events:none}.habitat-critter-slot .emoji-stack{font-size:29px}.habitat-critter-slot .emoji-stack small{margin-left:-12px;margin-top:-14px}.habitat-critter-slot .ribbitt-art{width:46px;height:46px;object-fit:contain}.habitat-critter-slot:active{transform:scale(.95)}
.habitat-props{position:absolute;inset:0;z-index:4;pointer-events:none}.habitat-prop{position:absolute;display:block;padding:0;border:0;background:transparent;pointer-events:auto;-webkit-tap-highlight-color:transparent;filter:drop-shadow(0 7px 4px rgba(35,74,49,.2));transition:filter .18s ease,transform .18s ease,opacity .35s ease}.habitat-prop[hidden]{display:none}.habitat-prop:active{transform:translateY(2px) scale(.97)}.habitat-prop.ready{animation:habitat-prop-ready 1.75s ease-in-out infinite}.habitat-prop.cooldown{filter:drop-shadow(0 6px 3px rgba(35,74,49,.15)) saturate(.9)}
/* Legacy permanent CSS props removed. New Shop decorations will use authored art assets. */
#critter-container .critter{left:var(--habitat-x,var(--x));bottom:var(--habitat-y,var(--y));transform:translateX(-50%) scale(var(--habitat-scale,1));transform-origin:50% 100%;transition:left .55s ease,bottom .55s ease,transform .55s ease}#critter-container .critter.ribbitt-habitat{transition:none!important}#critter-container .critter:not(.ribbitt-habitat){animation:none}#critter-container .critter:not(.ribbitt-habitat) .critter-body{animation:bob .8s ease-in-out var(--delay) infinite alternate}
.ribbitt-habitat.hopping{animation-duration:390ms!important;animation-timing-function:linear!important}.ribbitt-habitat.hopping .critter-body{animation:habitat-hop-body-simple 390ms linear both!important}.ribbitt-habitat.hopping .critter-shadow{animation:habitat-hop-shadow-simple 390ms linear both!important}

.habitat-season-footnote{position:absolute;z-index:43;left:50%;bottom:8px;width:calc(100% - 32px);margin:0;padding:4px 8px;border-radius:10px;color:#fffbed;background:rgba(23,107,85,.88);box-shadow:0 2px 6px rgba(23,60,53,.18);font:800 11px/1.25 "Nunito",sans-serif;text-align:center;transform:translateX(-50%);pointer-events:none}
.habitat-season-footnote[hidden]{display:none}

.habitat-reward-pop{position:absolute;z-index:42;display:flex;align-items:center;gap:4px;pointer-events:none;color:#fff4a1;font:900 19px/1 "Baloo 2",sans-serif;text-shadow:0 2px 0 #9d5c0b,0 0 5px rgba(255,255,255,.8);animation:habitat-reward-pop .9s cubic-bezier(.2,.8,.2,1) forwards}.habitat-reward-pop svg{width:28px;height:28px;filter:drop-shadow(0 2px 0 #9d5c0b)}
@keyframes habitat-hop-space{0%{transform:translate(0,0) scale(var(--start-scale))}50%{transform:translate(var(--hop-mid-x),calc(var(--hop-y) * .5)) scale(var(--mid-scale))}100%{transform:translate(var(--hop-x),var(--hop-y)) scale(var(--end-scale))}}
@keyframes habitat-hop-body-simple{0%{transform:translateY(0)}25%{transform:translateY(-20px)}50%{transform:translateY(-28px)}75%{transform:translateY(-20px)}100%{transform:translateY(0)}}
@keyframes habitat-hop-shadow-simple{0%{transform:scale(1);opacity:1}25%{transform:scale(.82);opacity:.82}50%{transform:scale(.7);opacity:.72}75%{transform:scale(.82);opacity:.82}100%{transform:scale(1);opacity:1}}
@keyframes habitat-prop-ready{0%,100%{filter:drop-shadow(0 7px 4px rgba(35,74,49,.2)) drop-shadow(0 0 2px rgba(255,241,122,.35))}50%{filter:drop-shadow(0 7px 4px rgba(35,74,49,.2)) drop-shadow(0 0 10px rgba(255,241,122,.96)) drop-shadow(0 0 18px rgba(255,225,83,.65))}}@keyframes habitat-reward-pop{0%{opacity:0;transform:translate(-50%,0) scale(.7)}20%{opacity:1;transform:translate(-50%,-12px) scale(1.08)}70%{opacity:1}100%{opacity:0;transform:translate(-50%,-56px) scale(.94)}}
@media(max-width:420px){.habitat-info-button{top:22px;left:22px;width:40px;height:40px;font-size:22px}.habitat-details{top:16px;left:16px;width:calc(100% - 32px);padding:14px 14px 13px}.habitat-details h2{font-size:27px}.habitat-critter-slots{grid-template-columns:repeat(5,44px);gap:7px}.habitat-critter-slot{width:44px;height:44px}.habitat-critter-slot .ribbitt-art{width:42px;height:42px}}
@media(prefers-reduced-motion:reduce){.habitat-world,.habitat-prop,#critter-container .critter{transition:none}.habitat-prop.ready{animation:none;filter:drop-shadow(0 7px 4px rgba(35,74,49,.2)) drop-shadow(0 0 10px rgba(255,241,122,.9))}}

#critter-container{z-index:5}
.seasonal-placeholder{width:54px;height:54px;display:grid;place-items:center;border:3px dashed rgba(255,255,255,.88);border-radius:16px;background:linear-gradient(145deg,#ffef9a,#ffbe55);box-shadow:inset 0 2px rgba(255,255,255,.55),0 4px 0 rgba(142,77,25,.3)}
.seasonal-placeholder-art{font:34px/1 sans-serif;filter:drop-shadow(0 2px 1px rgba(91,47,24,.24))}
.season-balloon-bundle{z-index:5!important;left:12%;bottom:54%;width:8%;max-width:46px;transform:rotate(-3deg);transform-origin:50% 100%}
/* September Circus perspective: wide back layer, compact midground props, larger near-right booth. */
.season-circus-lights{z-index:3!important;left:50%;bottom:55%;width:52%;max-width:300px;transform:translateX(-50%);transform-origin:50% 100%}
.season-circus-lights:active{transform:translateX(-50%) translateY(2px) scale(.97)}
.season-circus-sign{left:3%;bottom:60%;width:15%;max-width:86px;transform-origin:50% 100%}
.season-ticket-booth{right:3%;bottom:49%;width:24%;max-width:138px;transform-origin:50% 100%}
.season-circus-prop-pile{left:29%;bottom:68%;width:11%;max-width:62px;transform-origin:50% 100%}
.season-high-striker{right:22%;bottom:68%;width:10%;max-width:58px;transform-origin:50% 100%}
.season-circus-centerpiece{left:50%;bottom:69%;width:42%;max-width:240px;transform:translateX(-50%);transform-origin:50% 100%}
.season-circus-centerpiece:active{transform:translateX(-50%) translateY(2px) scale(.97)}
.seasonal-placeholder-animated .seasonal-placeholder-art{animation:seasonal-centerpiece-bob 1.8s ease-in-out infinite}
@keyframes seasonal-centerpiece-bob{0%,100%{transform:translateY(0) rotate(-2deg)}50%{transform:translateY(-5px) rotate(2deg)}}

/* Authored Habitat zones: the central lawn remains Critter-only; decoration buttons live at its edges or behind it. */
.habitat-prop[data-decoration-depth="foreground-edge"]{z-index:6}
.habitat-prop[data-decoration-depth="midground"]{z-index:4}
.habitat-prop[data-decoration-depth="background"]{z-index:2}
.habitat-prop[data-decoration-size="small"]{--decoration-size:small}
.habitat-prop[data-decoration-size="medium"]{--decoration-size:medium}
.habitat-prop[data-decoration-size="large"]{--decoration-size:large}
#critter-container{z-index:5}

/* Permanent Sunnybrook Shop decorations use authored foreground/midground art; background remains seasonal. */
.habitat-decoration-art{width:auto;height:auto;filter:drop-shadow(0 7px 4px rgba(35,74,49,.2))}
.habitat-decoration-art img{display:block;width:100%;height:auto;pointer-events:none}
.shop-decoration-pine{left:10%;bottom:43%;width:42.5%;max-width:240px;transform-origin:50% 100%}
/* Foreground-edge flowers sit outside the central Critter corridor, close enough for Critters to approach but not overlap. */
.shop-decoration-wildflowers{right:3%;bottom:20%;width:33%;max-width:180px;transform-origin:50% 100%}
/* Natural foreground log hugs the left pond edge, leaving the central Critter Zone open. */
.shop-decoration-mossy-log{left:1%;bottom:25%;width:43%;max-width:235px;transform-origin:50% 100%}
/* Flowering shrub fills the deeper right-side wedge while preserving the tapered Critter corridor. */
.shop-decoration-flowering-shrub{right:5%;bottom:38%;width:32%;max-width:175px;transform-origin:50% 100%}
