@import url('./gizmo-disco-party.css');
.gizmo-sr{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.gizmo-porch-target{position:absolute;left:89%;top:70%;width:11%;min-width:44px;height:22%;border:0;border-radius:48%;padding:0;background:transparent;cursor:pointer;-webkit-tap-highlight-color:transparent;z-index:2;transform-origin:center}
.gizmo-porch-target span{position:absolute;bottom:100%;left:50%;transform:translateX(-50%);padding:7px 10px;border-radius:20px;background:#fff5dc;color:#204d54;white-space:nowrap;opacity:0;font:600 13px system-ui;box-shadow:0 2px 14px #46331350}
.gizmo-porch-target:hover span,.gizmo-porch-target:focus-visible span{opacity:1}.gizmo-porch-target:focus-visible{outline:3px solid #fff4c5;box-shadow:0 0 0 5px #24545b}
.gizmo-room{position:fixed;inset:0;margin:0;padding:0;width:100%;height:100%;max-width:none;max-height:none;border:0;background:#263b36;color:#224d53;overflow:hidden;font-family:ui-rounded,'Trebuchet MS',system-ui,sans-serif}.gizmo-room::backdrop{background:#172826e8}
.gizmo-room-shell{height:100dvh;min-height:100%;display:flex;align-items:center;justify-content:center;background:radial-gradient(ellipse at 50% 35%,#b99257,#283d33 80%)}
.gizmo-room-stage{position:relative;flex:none;width:min(100vw,66.6667dvh);aspect-ratio:2/3;max-height:100dvh;isolation:isolate;box-shadow:0 0 80px #0c191980;container-type:inline-size}
.gizmo-room-art{display:block;width:100%;height:100%;object-fit:contain;user-select:none;-webkit-user-drag:none;pointer-events:none}.gizmo-room button{font:inherit;cursor:pointer;touch-action:manipulation}.gizmo-room button:disabled{cursor:default}.gizmo-room button:focus-visible{outline:3px solid #fff6c9;box-shadow:0 0 0 6px #2e656b;z-index:5}.gizmo-room [hidden]{display:none!important}
.gizmo-close,.gizmo-about{position:absolute;top:max(2%,env(safe-area-inset-top));border:1px solid #ffffff70;background:#fcf1dbe8;box-shadow:0 3px 14px #382a1940;color:#214f55;min-width:44px;min-height:44px;display:flex;align-items:center;justify-content:center;border-radius:24px;z-index:4}.gizmo-close{left:3%;gap:4px;font-size:30px!important;padding:0 12px}.gizmo-close span{font-size:13px;font-weight:700}.gizmo-about{right:3%;font-weight:bold!important;font-family:Georgia,serif!important}
.gizmo-welcome{position:absolute;top:12.2%;left:8%;right:8%;text-align:center;font-size:clamp(11px,3cqw,18px);background:#fff5dfeb;padding:7px 9px;border-radius:18px;box-shadow:0 2px 14px #51362118;pointer-events:none}
.gizmo-care-controls{position:absolute;left:4.8%;right:4.8%;top:85.2%;bottom:3.6%;display:grid;grid-template-columns:repeat(5,1fr);gap:2%}.gizmo-care-target{border:2px solid transparent;border-radius:27%;background:transparent;min-width:0;min-height:44px;padding:0;transition:background .2s,box-shadow .2s}.gizmo-care-target:hover{background:#fff8dc22}.gizmo-care-target:active{background:#fff9c555;box-shadow:inset 0 0 24px #e1aa3250}.gizmo-care-target:disabled{background:#564d2a22}
.gizmo-speech{position:absolute;left:21%;right:21%;top:43%;background:#fff7eaeF;border-radius:24px;padding:12px 14px;text-align:center;font-size:clamp(13px,3.9cqw,23px);font-weight:600;box-shadow:0 5px 20px #64401e30;opacity:0;transform:translateY(7px);transition:opacity .2s,transform .2s;pointer-events:none;margin:0}.gizmo-speech:after{content:'';position:absolute;width:15px;height:15px;bottom:-6px;left:50%;background:#fff7ea;transform:rotate(45deg)}.gizmo-speech.is-visible{opacity:1;transform:translateY(0)}
.gizmo-reaction{position:absolute;left:35%;top:53%;width:30%;height:20%;pointer-events:none;color:#e07b75;font-size:clamp(20px,6cqw,38px);filter:drop-shadow(0 2px 2px #fff4b9)}.gizmo-reaction span{position:absolute;left:calc(var(--i)*15%);bottom:0;opacity:0;animation:gizmo-float 2.5s ease-out calc(var(--i)*.12s) 1 both}.gizmo-room-stage[data-reaction=bath] .gizmo-reaction{color:#b0edf0;font-size:clamp(30px,9cqw,55px)}.gizmo-room-stage[data-reaction=play] .gizmo-reaction{color:#ffe588}.gizmo-room-stage[data-reaction=rest] .gizmo-reaction{color:#f7f2dc;font-style:italic}.gizmo-room-stage[data-reaction=rest]:after{content:'';position:absolute;inset:0;background:#16394820;pointer-events:none;z-index:-1}
.gizmo-loading{position:absolute;top:42%;left:15%;right:15%;padding:20px;border-radius:25px;background:#fff6e9f2;text-align:center;font-weight:bold;box-shadow:0 5px 30px #452e2640}
.gizmo-wardrobe,.gizmo-info{position:absolute;z-index:6;left:5%;right:5%;top:28%;bottom:4%;overflow:auto;padding:25px 20px 20px;border:1px solid #fff9e5;border-radius:30px;background:#fff3dfF5;box-shadow:0 10px 70px #30271977;box-sizing:border-box;font-size:clamp(12px,3.6cqw,20px)}.gizmo-wardrobe h2,.gizmo-info h2{font-size:1.3em;margin:8px 36px 12px 0}.gizmo-wardrobe p,.gizmo-info p{line-height:1.45}.gizmo-sheet-close{position:absolute;right:10px;top:10px;border:0;border-radius:50%;width:44px;height:44px;background:#e2e5d7;color:#28575b;font-size:28px!important}.gizmo-original{border:2px solid #72999a;border-radius:20px;background:#f8f4df;padding:12px;display:grid;gap:5px;width:100%;color:#235259;font-weight:600!important}.gizmo-original span{font-size:32px}.gizmo-original small{font-size:.8em;font-weight:400}.gizmo-wallet{font-size:.82em;color:#4d6864}.gizmo-coming{padding:16px;border:1px dashed #98aaa0;border-radius:20px;background:#e9e6d950}.gizmo-coming p{font-size:.86em}.gizmo-coming button{border:0;border-radius:16px;background:#d0d6c8;color:#51635d;padding:12px 16px;width:100%}.gizmo-preview-note{font-size:.86em;border-top:1px solid #a4b4a9;padding-top:14px}.gizmo-needs{padding-left:20px;font-size:.85em;line-height:1.65}
@keyframes gizmo-float{0%{transform:translateY(0) scale(.5);opacity:0}12%{opacity:1}70%{opacity:.95}100%{transform:translateY(-95px) scale(1.15) rotate(12deg);opacity:0}}
@media(prefers-reduced-motion:reduce){.gizmo-room *{transition:none!important;animation:none!important}.gizmo-reaction span{opacity:1;bottom:40%;transform:none}}
@media(max-height:480px) and (orientation:landscape){.gizmo-room-stage{width:min(100vw,66.6667dvh)}.gizmo-close span{display:none}.gizmo-close,.gizmo-about{min-width:36px;min-height:36px}.gizmo-wardrobe,.gizmo-info{top:20%;padding:14px}.gizmo-care-target{min-height:32px}}
/* Independently generated layers; approved full-scene originals remain untouched.
   The clean plate is clipped to Gizmo's old footprint, preserving every exterior pixel. */
.gizmo-clean-plate{display:none;position:absolute;inset:0;width:100%;height:100%;pointer-events:none;clip-path:inset(50% 32% 27.5% 34.5% round 1%);z-index:0}
.gizmo-character{display:none;position:absolute;left:31.5%;top:48.5%;width:38.5%;aspect-ratio:1;border:0;padding:0;background:transparent;border-radius:48%;z-index:1;transform-origin:50% 88%;-webkit-tap-highlight-color:transparent}
.has-character-layers .gizmo-clean-plate,.has-character-layers .gizmo-character{display:block}
.gizmo-character-motion{position:absolute;inset:0;display:block;transform-origin:50% 88%;animation:gizmo-breathe 4.8s ease-in-out infinite}
.gizmo-sprite{position:absolute;inset:0;display:block;width:100%;height:100%;object-fit:contain;pointer-events:none;user-select:none;clip-path:inset(11.7% 10.5% 10.4% 10.4%);filter:drop-shadow(0 4px 3px #53311c22)}
.gizmo-sprite-awake{opacity:0;animation:gizmo-gentle-peek 9s step-end infinite}
.gizmo-character[data-motion=pet] .gizmo-character-motion{animation:gizmo-nuzzle 1.1s ease-in-out 2}
.gizmo-character[data-motion=feed] .gizmo-character-motion{animation:gizmo-nibble .65s ease-in-out 4}
.gizmo-character[data-motion=bath] .gizmo-character-motion{animation:gizmo-shimmy .8s ease-in-out 3}
.gizmo-character[data-motion=play] .gizmo-character-motion{animation:gizmo-hop .8s ease-in-out 3}
.gizmo-character[data-motion=rest] .gizmo-character-motion{animation:gizmo-rest 2.3s ease-in-out 2}
.gizmo-character[data-motion=play] .gizmo-sprite-awake,.gizmo-character[data-motion=pet] .gizmo-sprite-awake{opacity:1;animation:gizmo-quick-blink 1.7s step-end infinite}
.gizmo-character[data-motion=rest] .gizmo-sprite-awake,.gizmo-character[data-motion=feed] .gizmo-sprite-awake,.gizmo-character[data-motion=bath] .gizmo-sprite-awake{opacity:0;animation:none}
.gizmo-character[data-paused=true] *{animation-play-state:paused!important}
.gizmo-room-stage:not(.has-character-layers) .gizmo-character{display:none}
@keyframes gizmo-breathe{0%,100%{transform:scale(1,1)}50%{transform:scale(1.013,1.024)}}
@keyframes gizmo-gentle-peek{0%,67%,76%,100%{opacity:0}68%,72%,75%{opacity:1}73%{opacity:0}}
@keyframes gizmo-quick-blink{0%,88%,100%{opacity:1}89%,96%{opacity:0}}
@keyframes gizmo-nuzzle{0%,100%{transform:rotate(0) scale(1)}30%{transform:rotate(-4deg) scale(1.025,.98)}70%{transform:rotate(3deg) scale(1.025,.98)}}
@keyframes gizmo-nibble{0%,100%{transform:scale(1)}40%{transform:translateY(1.5%) scale(1.035,.965)}70%{transform:scale(.99,1.015)}}
@keyframes gizmo-shimmy{0%,100%{transform:rotate(0)}25%{transform:rotate(-4deg) scale(1.02,.99)}75%{transform:rotate(4deg) scale(1.02,.99)}}
@keyframes gizmo-hop{0%,100%{transform:translateY(0) scale(1)}15%{transform:scale(1.06,.94)}48%{transform:translateY(-9%) scale(.97,1.04)}82%{transform:translateY(0) scale(1.05,.96)}}
@keyframes gizmo-rest{0%,100%{transform:scale(1)}45%{transform:translateY(2%) scale(1.025,.96)}70%{transform:translateY(2%) scale(1.02,.965)}}
@media(prefers-reduced-motion:reduce){.gizmo-character-motion,.gizmo-sprite-awake{animation:none!important;transform:none!important}.gizmo-character .gizmo-sprite-awake{opacity:0}.gizmo-character[data-motion=pet] .gizmo-sprite-awake,.gizmo-character[data-motion=play] .gizmo-sprite-awake{opacity:1}}
.gizmo-reaction{z-index:2}.gizmo-speech{z-index:3}.gizmo-welcome{z-index:2}.gizmo-care-controls{z-index:4}
/* Redrawn action frames replace, rather than transform, the idle sprite. */
.gizmo-drawn-pose{display:none;position:absolute;inset:0;pointer-events:none;background-repeat:no-repeat;filter:drop-shadow(0 4px 3px #53311c22)}
.gizmo-character[data-drawn=true] .gizmo-drawn-pose{display:block}
.gizmo-character[data-drawn=true] .gizmo-sprite{visibility:hidden}
.gizmo-character[data-drawn=true] .gizmo-character-motion{animation:none!important;transform:none!important}
.gizmo-atlas-probe{display:none!important}
.gizmo-quarter-bag{position:absolute;top:16.5%;right:4%;width:21%;z-index:3;display:grid;justify-items:center;pointer-events:none;color:#513818;font-weight:bold;text-shadow:0 1px 2px #fff4d4;font-size:clamp(14px,4.2cqw,26px)}
.gizmo-quarter-bag img{display:block;width:100%;height:12cqw;object-fit:contain;filter:drop-shadow(0 3px 3px #35220f44)}
.gizmo-quarter-count{min-width:3em;max-width:100%;text-align:center;padding:2px 5px;background:#fff0bfed;border:1px solid #b8842c;border-radius:14px;box-sizing:border-box;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.gizmo-quarter-bag small{font-size:clamp(8px,2.2cqw,13px);text-align:center;background:#fff6dea6;border-radius:8px;padding:1px 4px}
.gizmo-pending{position:absolute;top:35%;left:8%;right:8%;z-index:5;border-radius:18px;background:#fff2ddeb;padding:10px;font-size:clamp(11px,3cqw,17px);box-shadow:0 3px 15px #503d2755}
.gizmo-pending p{margin:0 0 6px}.gizmo-pending button{padding:7px 10px;min-height:38px;border-radius:12px;border:1px solid #527b7b;background:#e7f0e4;color:#244d50}
.gizmo-room-object span{position:absolute;top:100%;left:0;right:0;text-align:center;background:#fff4dbec;border-radius:8px;font-size:clamp(8px,2cqw,12px)}
.gizmo-room-object.is-playing{animation:gizmo-object-play .65s ease-in-out 4}
@keyframes gizmo-object-play{0%,100%{transform:rotate(-7deg)}50%{transform:rotate(9deg) translateY(-9%)}}
.gizmo-catalog{display:grid;gap:10px}.gizmo-catalog-card{border:1px solid #a4b1a1;border-radius:16px;background:#fff8e9;padding:10px;display:grid;grid-template-columns:28% 1fr;gap:6px 10px}.gizmo-catalog-card .gizmo-object-thumb{grid-row:span 3;aspect-ratio:1.5;background-repeat:no-repeat;align-self:center}.gizmo-catalog-card h3{font-size:.98em;margin:0}.gizmo-catalog-card p{font-size:.76em;margin:0}.gizmo-catalog-card button{font-size:.8em;border:1px solid #879d91;border-radius:10px;background:#e7f0e1;padding:8px;min-height:38px}.gizmo-catalog-card .gizmo-price{font-weight:bold}.gizmo-catalog-note{font-size:.8em;color:#566b62}
@media(prefers-reduced-motion:reduce){.gizmo-room-object.is-playing{animation:none!important}}
.gizmo-character{transform:translate(var(--gizmo-wander-x,0),var(--gizmo-wander-y,0));transition:transform 2.5s ease-in-out}
.gizmo-character[data-outfit]:not([data-outfit=original]) .gizmo-character-motion{animation:gizmo-breathe 4.8s ease-in-out infinite}
@media(prefers-reduced-motion:reduce){.gizmo-character{transform:none!important;transition:none!important}}

/* Accepted Disco Nights light motif, scoped only to Gizmo. */
.gizmo-disco-ambience{position:absolute;inset:0;background:radial-gradient(ellipse at 65% 80%,#ffc28b22,transparent 45%),radial-gradient(ellipse at 48% 26%,#ed98ff18,transparent 40%);mix-blend-mode:screen}
.gizmo-disco-beams{position:absolute;inset:0;overflow:hidden;mix-blend-mode:screen;opacity:.16}
.gizmo-disco-beams i{position:absolute;left:52%;top:17%;width:65%;height:110%;transform-origin:0 0;background:linear-gradient(150deg,#d1a4f9aa,transparent 75%);clip-path:polygon(0 0,18% 100%,65% 100%);filter:blur(10px);animation:gizmo-disco-sweep 7s ease-in-out infinite alternate}
.gizmo-disco-beams i:nth-child(2){background:linear-gradient(140deg,#ffadce99,transparent 75%);animation-delay:-3s;animation-duration:9s}
.gizmo-disco-beams i:nth-child(3){background:linear-gradient(140deg,#97ecf099,transparent 75%);animation-delay:-5s;animation-duration:8s}
.gizmo-disco-reflections{position:absolute;inset:-4%;opacity:.27;mix-blend-mode:screen;background:radial-gradient(ellipse 1.4% 2.1% at 24% 55%,#ffb4e3,transparent 90%),radial-gradient(ellipse 1.1% 1.9% at 46% 49%,#b8efff,transparent 90%),radial-gradient(ellipse 1.6% 1% at 57% 92%,#f9c6fe,transparent 90%),radial-gradient(ellipse 1.2% 2.3% at 88% 32%,#ffdcad,transparent 90%),radial-gradient(ellipse 1.8% 1% at 22% 88%,#b4e8ff,transparent 90%);filter:blur(2px);animation:gizmo-disco-reflections 6s ease-in-out infinite alternate}
@keyframes gizmo-disco-sweep{from{transform:rotate(-25deg)}to{transform:rotate(28deg)}}
@keyframes gizmo-disco-reflections{from{transform:translate(-1%,-.6%) rotate(-1deg)}to{transform:translate(1%,.6%) rotate(1deg)}}
/* Approved toys remain in an on-screen tray; activation brings a full-size prop forward. */
.gizmo-play-object{position:absolute;left:58%;top:56%;width:32%;aspect-ratio:1;background-repeat:no-repeat;pointer-events:none;z-index:2;filter:drop-shadow(0 4px 3px #4c342c44)}
.gizmo-play-object[data-item=bounce-buddy]{left:65%;top:61%;width:20%;animation:gizmo-ball-travel 1.5s ease-in-out 3}
.gizmo-play-object[data-item=cloud-cruiser]{left:36%;top:63%;width:38%;animation:gizmo-cloud-rock 1.2s ease-in-out 4}
.gizmo-play-object[data-item=peekaboo-tunnel],.gizmo-play-object[data-item=pillow-fort]{left:37%;top:54%;width:47%;z-index:2}
.gizmo-room-stage[data-activity=peekaboo] .gizmo-character{animation:gizmo-peek 2s ease-in-out 2}
.gizmo-room-stage[data-activity=fort] .gizmo-character{transform:translate(12%,9%) scale(.82)}
.gizmo-room-stage[data-activity=rocker] .gizmo-character{animation:gizmo-cloud-rider 1.2s ease-in-out 4}
.gizmo-play-object[data-item=mini-masterpiece]{left:9%;top:56%;width:35%}
.gizmo-play-object[data-item=stargazer]{left:10%;top:50%;width:39%}
.gizmo-play-object[data-item=pocket-racer]{left:45%;top:63%;width:45%}
.gizmo-toy-effects{position:absolute;inset:0}.gizmo-toy-effects i{position:absolute;left:calc(12% + var(--i)*19%);top:10%;font-style:normal;color:#d3b2f4;font-size:clamp(18px,5cqw,34px);animation:gizmo-toy-float 1.4s ease-out calc(var(--i)*.25s) 3}
.gizmo-toy-effects[data-effect=painting] i{color:#ee88ae;top:25%;animation:gizmo-paint-mark 3s steps(1) both}.gizmo-toy-effects[data-effect=painting] i:nth-child(2){color:#7eace5;top:34%;animation-delay:.7s}.gizmo-toy-effects[data-effect=painting] i:nth-child(3){color:#f4cc4e;top:47%;animation-delay:1.4s}
.gizmo-toy-part{position:absolute;background-repeat:no-repeat;aspect-ratio:1;pointer-events:none}
.gizmo-toy-part[data-part="1"]{width:35%;left:44%;top:45%;animation:gizmo-car-race 2s linear 2}
.gizmo-toy-part[data-part="2"]{width:52%;left:60%;top:20%;transform-origin:80% 80%;animation:gizmo-brush-paint .85s ease-in-out 5}
.gizmo-toy-part[data-part="3"]{width:68%;left:15%;top:8%;animation:gizmo-record-spin 1.4s linear 3}
.gizmo-toy-part[data-part="4"]{width:65%;left:34%;top:3%;animation:gizmo-mirror-spin 3s ease-in-out infinite}
.gizmo-toy-part[data-part="5"]{width:105%;left:-30%;top:-55%;animation:gizmo-bubble-rise 1.4s ease-out 3}
@keyframes gizmo-ball-travel{0%,100%{transform:translateX(0) rotate(0)}45%{transform:translate(-85%,-30%) rotate(-120deg)}70%{transform:translate(-20%,-55%) rotate(-200deg)}}
@keyframes gizmo-cloud-rock{0%,100%{transform:rotate(-9deg)}50%{transform:rotate(9deg)}}
@keyframes gizmo-cloud-rider{0%,100%{transform:translate(8%,-8%) rotate(-4deg)}50%{transform:translate(14%,-6%) rotate(4deg)}}
@keyframes gizmo-peek{0%,100%{transform:translate(3%,0)}30%,70%{transform:translate(18%,14%) scale(.72)}50%{transform:translate(-14%,0)}}
@keyframes gizmo-toy-float{from{opacity:0;transform:translateY(0)}30%{opacity:1}to{opacity:0;transform:translateY(-180%)}}
@keyframes gizmo-paint-mark{from{opacity:0}40%,to{opacity:1}}
@keyframes gizmo-car-race{0%,100%{transform:translate(0,0) scale(1)}25%{transform:translate(-100%,-5%) scale(.9)}50%{transform:translate(-50%,-55%) scale(.65) scaleX(-1)}75%{transform:translate(40%,-30%) scale(.8) scaleX(-1)}}
@keyframes gizmo-brush-paint{0%,100%{transform:rotate(-24deg) translateY(10%)}50%{transform:rotate(12deg) translateY(-8%)}}
@keyframes gizmo-record-spin{to{transform:rotate(360deg)}}
@keyframes gizmo-mirror-spin{50%{transform:scaleX(.84);filter:brightness(1.12)}}
@keyframes gizmo-bubble-rise{from{opacity:0;transform:translateY(35%) scale(.55)}30%{opacity:1}to{opacity:0;transform:translate(-20%,-80%) scale(1.15)}}
.gizmo-disco-effects{display:none;position:absolute;inset:0;pointer-events:none;z-index:2;overflow:hidden;border-radius:inherit}.gizmo-room-stage[data-gizmo-disco=true] .gizmo-disco-effects{display:block}
.gizmo-disco-controls{position:absolute;z-index:5;top:30%;left:8%;right:8%;display:flex;gap:6px;align-items:center;justify-content:center;padding:7px;border-radius:14px;background:#f7eaffef;color:#493453;font-size:clamp(10px,2.7cqw,16px)}.gizmo-disco-controls button{border:1px solid #9a7ca7;border-radius:9px;padding:7px;min-height:38px;background:#fff5ff;color:#493453}
@media(prefers-reduced-motion:reduce){.gizmo-play-object,.gizmo-toy-part,.gizmo-toy-effects i,.gizmo-room-stage[data-activity] .gizmo-character,.gizmo-disco-effects *{animation:none!important;transform:none!important}.gizmo-toy-effects i{opacity:1}}
/* Keep the full owned collection on screen without shrinking touch targets. */
@media(forced-colors:active){.gizmo-disco-effects,.gizmo-toy-effects{display:none}.gizmo-quarter-count,.gizmo-disco-controls{background:Canvas;color:CanvasText;border:1px solid ButtonText}}
@media(max-height:480px){.gizmo-room-object{width:36px!important;height:36px;min-height:36px}}
.gizmo-room-objects{position:absolute;inset:auto 4% 15.2%;height:auto;max-height:14%;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:2px;justify-items:center;align-content:end;pointer-events:none;z-index:3}
.gizmo-room-object{position:relative;width:44px;height:44px;max-width:100%;min-height:36px;aspect-ratio:1;border:0;background-color:transparent;background-repeat:no-repeat;padding:0;pointer-events:auto;border-radius:40%;filter:drop-shadow(0 4px 2px #51371f44);transform-origin:50% 80%}
@media(max-height:480px){.gizmo-room-object{width:36px;height:36px;min-height:36px}}
/* Full-height responsive art. Tall phones crop only peripheral scenery, never
   the pet/clean-plate alignment or the five approved care icons. The original
   footer is reframed independently at viewport width, without raster edits. */
.gizmo-room-shell{height:100dvh;min-height:0;overflow:hidden;background-size:cover;background-position:center}
.gizmo-room-stage{width:var(--gizmo-art-width,66.6667dvh);height:var(--gizmo-art-height,100dvh);max-height:none;aspect-ratio:2/3}
.gizmo-care-dock{position:absolute;left:var(--gizmo-crop,0px);bottom:0;width:var(--gizmo-visible-width,100%);height:var(--gizmo-dock-height,16%);overflow:hidden;z-index:4;isolation:isolate}
.gizmo-care-dock-art{position:absolute;bottom:0;left:0;width:100%;height:auto;pointer-events:none;user-select:none;z-index:-1}
.gizmo-care-controls{left:4.8%;right:4.8%;top:auto;bottom:calc(var(--gizmo-visible-width)*.054);height:calc(var(--gizmo-visible-width)*.168);gap:2%}
.gizmo-care-target{min-height:44px}
.gizmo-close{left:calc(var(--gizmo-crop) + var(--gizmo-visible-width)*.03)}
.gizmo-about{right:calc(var(--gizmo-crop) + var(--gizmo-visible-width)*.03)}
.gizmo-welcome,.gizmo-pending,.gizmo-disco-controls{left:calc(var(--gizmo-crop) + var(--gizmo-visible-width)*.08);right:calc(var(--gizmo-crop) + var(--gizmo-visible-width)*.08)}
.gizmo-speech{left:calc(var(--gizmo-crop) + var(--gizmo-visible-width)*.15);right:calc(var(--gizmo-crop) + var(--gizmo-visible-width)*.15)}
.gizmo-quarter-bag{right:calc(var(--gizmo-crop) + var(--gizmo-visible-width)*.04);width:calc(var(--gizmo-visible-width)*.21);font-size:clamp(14px,calc(var(--gizmo-visible-width)*.042),26px)}
.gizmo-quarter-bag img{height:calc(var(--gizmo-visible-width)*.12)}
.gizmo-wardrobe,.gizmo-info{left:calc(var(--gizmo-crop) + var(--gizmo-visible-width)*.05);right:calc(var(--gizmo-crop) + var(--gizmo-visible-width)*.05);font-size:clamp(12px,calc(var(--gizmo-visible-width)*.036),20px)}
.gizmo-room-objects{left:calc(var(--gizmo-crop) + var(--gizmo-visible-width)*.04);right:calc(var(--gizmo-crop) + var(--gizmo-visible-width)*.04);bottom:calc(var(--gizmo-dock-height) + 8px);max-height:none}
.gizmo-play-object{left:calc(var(--gizmo-crop) + var(--gizmo-visible-width)*.58);width:calc(var(--gizmo-visible-width)*.32)}
.gizmo-play-object[data-item=bounce-buddy]{left:calc(var(--gizmo-crop) + var(--gizmo-visible-width)*.65);width:calc(var(--gizmo-visible-width)*.2)}
.gizmo-play-object[data-item=cloud-cruiser]{left:calc(var(--gizmo-crop) + var(--gizmo-visible-width)*.36);width:calc(var(--gizmo-visible-width)*.38)}
.gizmo-play-object[data-item=peekaboo-tunnel],.gizmo-play-object[data-item=pillow-fort]{left:calc(var(--gizmo-crop) + var(--gizmo-visible-width)*.37);width:calc(var(--gizmo-visible-width)*.47)}
.gizmo-play-object[data-item=mini-masterpiece]{left:calc(var(--gizmo-crop) + var(--gizmo-visible-width)*.09);width:calc(var(--gizmo-visible-width)*.35)}
.gizmo-play-object[data-item=stargazer]{left:calc(var(--gizmo-crop) + var(--gizmo-visible-width)*.1);width:calc(var(--gizmo-visible-width)*.39)}
.gizmo-play-object[data-item=pocket-racer]{left:calc(var(--gizmo-crop) + var(--gizmo-visible-width)*.45);width:calc(var(--gizmo-visible-width)*.45)}
@media(max-height:480px) and (orientation:landscape){.gizmo-care-target{min-height:36px}.gizmo-room-objects{bottom:calc(var(--gizmo-dock-height) + 4px)}}
/* Remove only the baked toolbar footprint using the inspected faithful floor
   derivative. This keeps the responsive footer from repeating any rug strip. */
.gizmo-footer-clean-plate{display:none;position:absolute;inset:0;width:100%;height:100%;object-fit:contain;pointer-events:none;z-index:0;mask-image:linear-gradient(to bottom,transparent 80.5%,#000 82%);-webkit-mask-image:linear-gradient(to bottom,transparent 80.5%,#000 82%)}
.has-footer-clean-plate .gizmo-footer-clean-plate{display:block}
.has-footer-clean-plate .gizmo-care-dock-art{clip-path:inset(84% 3.8% 2.3% 3.8% round calc(var(--gizmo-visible-width)*.075))}
/* Wide view intentionally extends the room's colors, not a sharp duplicate of
   the same bed/tub. The central approved portrait remains undistorted. */
.gizmo-room-shell{position:relative;background-image:none;background-color:#6b583e}
.gizmo-room-shell::before{content:'';position:absolute;inset:-30px;background-image:var(--gizmo-backdrop);background-size:cover;background-position:center;filter:blur(24px) brightness(.65) saturate(.8);pointer-events:none}
.gizmo-room-stage{z-index:1}
@media(min-aspect-ratio:2/3){.gizmo-room-stage{box-shadow:0 0 45px 24px #382e2344}}
/* The shared balance is embroidered onto the bag, never a second badge below it.
   Scale ten-digit balances as one unbroken number; the status label stays exact. */
.gizmo-room .gizmo-quarter-bag{display:block;aspect-ratio:auto}
.gizmo-room .gizmo-quarter-bag img{width:100%;height:auto}
.gizmo-room .gizmo-quarter-count{position:absolute;left:50%;top:65%;width:100%;min-width:0;max-width:none;padding:0;border:0;border-radius:0;background:repeating-linear-gradient(115deg,#68228d 0px,#68228d 1px,#bc85db 1.3px,#753198 2px);background-clip:text;-webkit-background-clip:text;color:#702996;-webkit-text-fill-color:transparent;font-family:Georgia,serif;font-size:clamp(16px,calc(var(--gizmo-visible-width)*.044),28px);font-weight:900;line-height:1.1;letter-spacing:.02em;white-space:nowrap;overflow-wrap:normal;transform:translate(-50%,-50%) scale(var(--gizmo-count-scale,1));text-shadow:0 .6px .4px #4c1a6680;filter:drop-shadow(0 1px .4px #ffdb78);-webkit-text-stroke:.3px #6a278a}
/* Fallback sprites have the same three action personalities as drawn poses.
   Outfit and character pixels remain on their existing single moving parent. */
.gizmo-room .gizmo-character[data-motion=feed][data-variant="1"] .gizmo-character-motion{animation:gizmo-snack-savor 1.2s ease-in-out 2}
.gizmo-room .gizmo-character[data-motion=feed][data-variant="2"] .gizmo-character-motion{animation:gizmo-snack-nod 1s ease-in-out 3}
.gizmo-room .gizmo-character[data-motion=bath][data-variant="1"] .gizmo-character-motion{animation:gizmo-bath-splash 1s ease-in-out 3}
.gizmo-room .gizmo-character[data-motion=bath][data-variant="2"] .gizmo-character-motion{animation:gizmo-bath-dry 1.3s ease-in-out 2}
.gizmo-room .gizmo-character[data-motion=play][data-variant="1"] .gizmo-character-motion{animation:gizmo-play-skip 1s ease-in-out 3}
.gizmo-room .gizmo-character[data-motion=play][data-variant="2"] .gizmo-character-motion{animation:gizmo-play-wiggle 1.3s ease-in-out 2}
.gizmo-room .gizmo-character[data-motion=pet][data-variant="1"] .gizmo-character-motion{animation:gizmo-pet-lean 1.4s ease-in-out 2}
.gizmo-room .gizmo-character[data-motion=pet][data-variant="2"] .gizmo-character-motion{animation:gizmo-pet-bob 1s ease-in-out 3}
.gizmo-room .gizmo-character[data-motion=rest][data-variant="1"] .gizmo-character-motion{animation:gizmo-rest-settle 4.5s ease-in-out 1}
.gizmo-room .gizmo-character[data-motion=rest][data-variant="2"] .gizmo-character-motion{animation:gizmo-rest-sway 2.2s ease-in-out 2}
.gizmo-room .gizmo-character[data-motion=new-toy][data-variant="0"] .gizmo-character-motion{animation:gizmo-hop .8s ease-in-out 3}
.gizmo-room .gizmo-character[data-motion=new-toy][data-variant="1"] .gizmo-character-motion{animation:gizmo-play-skip 1s ease-in-out 3}
.gizmo-room .gizmo-character[data-motion=new-toy][data-variant="2"] .gizmo-character-motion{animation:gizmo-play-wiggle 1.3s ease-in-out 2}
@keyframes gizmo-snack-savor{0%,100%{transform:none}30%{transform:rotate(-3deg) scale(1.02,.98)}70%{transform:rotate(3deg) scale(1.01,.99)}}
@keyframes gizmo-snack-nod{0%,100%{transform:none}30%,70%{transform:translateY(3%) scale(1.025,.97)}50%{transform:translateY(-1%)}}
@keyframes gizmo-bath-splash{0%,100%{transform:none}25%{transform:translate(-2%,-3%) rotate(-3deg)}65%{transform:translate(2%,-2%) rotate(3deg)}}
@keyframes gizmo-bath-dry{0%,100%{transform:none}20%,60%{transform:rotate(-5deg)}40%,80%{transform:rotate(5deg)}}
@keyframes gizmo-play-skip{0%,100%{transform:none}25%{transform:translate(-4%,-5%) rotate(-3deg)}50%{transform:translateY(1%) scale(1.03,.97)}75%{transform:translate(4%,-5%) rotate(3deg)}}
@keyframes gizmo-play-wiggle{0%,100%{transform:none}20%{transform:rotate(-5deg)}40%{transform:rotate(5deg)}65%{transform:translateY(-6%)}85%{transform:scale(1.04,.96)}}
@keyframes gizmo-pet-lean{0%,100%{transform:none}30%,60%{transform:translateX(-3%) rotate(-5deg)}80%{transform:rotate(2deg)}}
@keyframes gizmo-pet-bob{0%,100%{transform:none}35%{transform:translateY(-2%) scale(1.02)}70%{transform:translateY(2%) scale(1.03,.98)}}
@keyframes gizmo-rest-settle{0%,100%{transform:none}25%{transform:rotate(-3deg)}50%,85%{transform:translateY(3%) scale(1.025,.95)}}
@keyframes gizmo-rest-sway{0%,100%{transform:none}30%{transform:rotate(-2deg) scale(1.01,.98)}70%{transform:rotate(2deg) scale(1.01,.97)}}
@media(forced-colors:active){.gizmo-room .gizmo-quarter-count{background:Canvas;color:CanvasText;-webkit-text-fill-color:CanvasText;-webkit-text-stroke:0;filter:none;text-shadow:none}}
@media(prefers-reduced-motion:reduce){.gizmo-room .gizmo-character-motion{animation:none!important;transform:none!important}}
/* Read-only rings down the left edge, below Porch and above the bed. */
.gizmo-room .gizmo-care-meters{position:absolute;z-index:3;top:15%;left:calc(var(--gizmo-crop) + var(--gizmo-visible-width)*.025);width:calc(var(--gizmo-visible-width)*.17);display:grid;justify-items:center;gap:clamp(5px,1.2dvh,10px);pointer-events:none}
.gizmo-room .gizmo-care-meters[hidden]{display:none}
.gizmo-room .gizmo-care-meter{display:grid;justify-items:center;gap:2px;color:#3d2758;font-size:clamp(9px,calc(var(--gizmo-visible-width)*.023),13px);font-weight:700;text-align:center}
.gizmo-room .gizmo-care-ring{width:clamp(30px,calc(var(--gizmo-visible-width)*.108),54px);aspect-ratio:1;border-radius:50%;display:grid;place-items:center;background:conic-gradient(#8750a5 var(--gizmo-care-fill,0%),#e5d7e9 0);box-shadow:0 1px 4px #34213355;border:1px solid #fff0d5;position:relative;isolation:isolate;font-variant-numeric:tabular-nums}
.gizmo-room .gizmo-care-ring::before{content:'';position:absolute;inset:5px;background:#fff4dd;border-radius:50%;z-index:-1}
.gizmo-room .gizmo-care-meter-label{background:#fff4dded;border-radius:5px;padding:1px 4px}
@media(max-height:480px){.gizmo-room .gizmo-care-meters{top:14%;gap:3px}.gizmo-room .gizmo-care-ring{width:25px}.gizmo-room .gizmo-care-ring::before{inset:3px}.gizmo-room .gizmo-care-meter{font-size:8px;gap:0}}
@media(forced-colors:active){.gizmo-room .gizmo-care-ring{border:2px solid CanvasText;background:Canvas;color:CanvasText}.gizmo-room .gizmo-care-ring::before,.gizmo-room .gizmo-care-meter-label{background:Canvas;color:CanvasText}}
/* Toy variants use their own history. Reverse/alternate paths are applied to
   props only; Gizmo's matching action also selects an independent drawn story. */
.gizmo-room .gizmo-play-object[data-variant="1"] .gizmo-toy-part{animation-direction:reverse;animation-duration:1.9s}
.gizmo-room .gizmo-play-object[data-variant="2"] .gizmo-toy-part{animation-direction:alternate;animation-duration:1.1s}
.gizmo-room .gizmo-play-object[data-variant="1"] .gizmo-toy-effects i{animation-direction:alternate;animation-duration:1.9s}
.gizmo-room .gizmo-play-object[data-variant="2"] .gizmo-toy-effects i{animation-duration:1s;animation-delay:calc(var(--i)*.35s)}
.gizmo-room .gizmo-play-object[data-item=bounce-buddy][data-variant="1"]{animation-name:gizmo-ball-high}
.gizmo-room .gizmo-play-object[data-item=bounce-buddy][data-variant="2"]{animation-name:gizmo-ball-roll}
.gizmo-room .gizmo-play-object[data-item=cloud-cruiser][data-variant="1"]{animation-direction:reverse;animation-duration:1.8s}
.gizmo-room .gizmo-play-object[data-item=cloud-cruiser][data-variant="2"]{animation-name:gizmo-cloud-bob}
.gizmo-room .gizmo-room-stage[data-activity=peekaboo][data-activity-variant="1"] .gizmo-character{animation-direction:reverse}
.gizmo-room .gizmo-room-stage[data-activity=peekaboo][data-activity-variant="2"] .gizmo-character{animation-duration:1.4s;animation-direction:alternate}
@keyframes gizmo-ball-high{0%,100%{transform:none}35%{transform:translate(-55%,-85%) rotate(-90deg)}65%{transform:translate(-75%,0) rotate(-180deg)}}
@keyframes gizmo-ball-roll{0%,100%{transform:none}40%{transform:translate(-100%,0) rotate(-180deg)}75%{transform:translate(-25%,-20%) rotate(-300deg)}}
@keyframes gizmo-cloud-bob{0%,100%{transform:rotate(-3deg)}40%{transform:translateY(-8%) rotate(3deg)}75%{transform:translateY(2%) rotate(-6deg)}}
/* Need cues are quiet visual-only tummy rumbles, yawns, restlessness and dust.
   They follow the same parent as the outfit, never replacing costume artwork. */
.gizmo-room .gizmo-mood-cue{display:none;position:absolute;left:68%;top:12%;color:#65408b;font:bold clamp(14px,4cqw,25px) Georgia,serif;text-shadow:0 1px 2px #fff5d7;pointer-events:none}
.gizmo-room .gizmo-character:is([data-motion=idle],[data-motion=mood]):not([data-mood=content]) .gizmo-mood-cue{display:block;opacity:.75;animation:gizmo-need-cue 3.5s ease-in-out infinite}
.gizmo-room .gizmo-character[data-mood-tier="1"] .gizmo-mood-cue{font-size:clamp(12px,3cqw,20px)}
.gizmo-room .gizmo-character[data-mood-tier="3"] .gizmo-mood-cue{font-size:clamp(18px,5cqw,30px)}
.gizmo-room .gizmo-character[data-mood=feed] .gizmo-mood-cue{left:43%;top:62%;letter-spacing:.15em}
.gizmo-room .gizmo-character[data-mood=play] .gizmo-mood-cue{left:62%;top:16%}
.gizmo-room .gizmo-character[data-mood=bath] .gizmo-mood-cue{left:30%;top:54%;width:45%;height:20%;color:#8a643d;background:radial-gradient(ellipse at 18% 35%,#99704d77 0 8%,transparent 12%),radial-gradient(ellipse at 80% 70%,#99704d66 0 7%,transparent 11%);font-size:22px}
@keyframes gizmo-need-cue{0%,100%{transform:translateY(0);opacity:.6}50%{transform:translateY(-7%);opacity:1}}
@media(prefers-reduced-motion:reduce){.gizmo-room .gizmo-mood-cue{animation:none!important;transform:none!important}}
/* Matching eight-segment care buttons: full = well cared for on every gauge. */
.gizmo-room .gizmo-care-meter{pointer-events:auto;cursor:pointer;border:1px solid #b79061;border-radius:16px;padding:4px 3px;min-width:48px;min-height:48px;background:linear-gradient(#fff1d6ed,#eddbb9ed);box-shadow:0 2px 3px #38261933,inset 0 1px #fff7e4;font-family:inherit}
.gizmo-room .gizmo-care-meter:focus-visible{outline:3px solid #8c4db0;outline-offset:2px}
.gizmo-room .gizmo-care-meter:disabled{cursor:default;opacity:.65}
.gizmo-room .gizmo-care-meter-label{background:none;padding:0 2px}
.gizmo-room .gizmo-care-ring::after{content:'';position:absolute;inset:0;border-radius:50%;background:repeating-conic-gradient(transparent 0deg 39deg,#fff4dd 39deg 45deg);z-index:-1}
@media(max-height:480px){.gizmo-room .gizmo-care-meter{min-height:36px;min-width:44px;border-radius:10px;padding:2px}.gizmo-room .gizmo-care-ring{width:23px}}

/* The complete atlas image is sampled through a measured source rectangle.
   No repeat, adjacent-row overflow, or equal-cell clipping of tall headwear. */
.gizmo-drawn-pose .gizmo-isolated-outfit{position:absolute;display:block;width:400%;height:500%;max-width:none;max-height:none;object-fit:fill;pointer-events:none;user-select:none}
.gizmo-drawn-pose .gizmo-isolated-outfit[hidden]{display:none}

/* Keep all free-care gauge buttons touchable in short landscape views. */
@media(max-height:480px){.gizmo-room .gizmo-care-meter{min-height:44px}}

/* Shop selections are display-only; explicit Get/Wear/Remove buttons save. */
.gizmo-wardrobe{top:12%;padding-top:16px}
.gizmo-shop-preview{height:150px;display:flex;justify-content:center;align-items:center;gap:10px;border-radius:22px;background:radial-gradient(ellipse at center,#fffdf4,#e8eddd);overflow:hidden}
.gizmo-shop-figure{height:140px;max-width:65%;position:relative;display:block;aspect-ratio:1;overflow:hidden;flex:none}
.gizmo-shop-figure img{width:100%;height:100%;object-fit:contain;display:block}
.gizmo-shop-figure.is-atlas img{position:absolute;max-width:none;object-fit:fill}
.gizmo-shop-preview-object{width:28%;max-width:105px;display:block;background-repeat:no-repeat}
.gizmo-shop-selection{font-size:.78em;text-align:center;min-height:1.45em;margin:4px 0!important}
.gizmo-shop-reset{display:flex;justify-content:center;gap:8px;margin:4px 0 12px}
.gizmo-shop-reset button{border:1px solid #849b89;background:#f9f5e7;color:#31564b;padding:6px 12px;border-radius:12px;font-size:.75em;min-height:36px}
.gizmo-shop-tabs{display:flex;gap:5px;position:sticky;top:-16px;z-index:2;background:#fff3df;padding:8px 0}
.gizmo-shop-tabs button{flex:1;min-width:0;border:1px solid #9aaf99;border-radius:14px;padding:10px 4px;min-height:44px;color:#31564b;background:#f9f5e7;font-size:.8em}
.gizmo-shop-tabs button[aria-selected=true]{background:#345e51;color:#fff9e8;border-color:#345e51}
.gizmo-catalog-card{display:block}.gizmo-catalog-card.is-selected{outline:2px solid #52795c}
.gizmo-catalog-card .gizmo-catalog-select{display:grid;grid-template-columns:28% 1fr;gap:6px 10px;width:100%;border:0;background:none;padding:0;color:inherit;text-align:left;font-size:1em}
.gizmo-catalog-card .gizmo-catalog-select .gizmo-object-thumb{grid-row:span 2;width:100%}
.gizmo-catalog-card>button:not(.gizmo-catalog-select){display:block;width:100%;margin-top:8px}
.gizmo-shop-reset button[hidden]{display:none}
.gizmo-wardrobe button:focus-visible{outline:3px solid #6b4d9d;outline-offset:2px}
@media(max-height:650px){.gizmo-shop-preview{height:116px}.gizmo-shop-figure{height:108px}}
.gizmo-shop-toggle{border:1px solid #72927a;border-radius:12px;background:#345e51;color:#fff9e8;padding:9px 16px;min-height:44px;margin-bottom:10px;font-size:.85em}
.gizmo-shop-preview[hidden],.gizmo-shop-selection[hidden]{display:none}
.gizmo-collection-empty{padding:20px 10px;text-align:center;color:#52695d;font-size:.85em}
/* One owned accessory at a time, selected from the same three-tab collection. */
.gizmo-toybox-entry{position:absolute;z-index:3;right:calc(var(--gizmo-crop) + var(--gizmo-visible-width)*.04);top:29%;width:calc(var(--gizmo-visible-width)*.21);min-height:44px;padding:0;border:0;background:transparent;color:#513818;display:grid;justify-items:center;cursor:pointer;font:inherit}
.gizmo-toybox-entry img{width:100%;height:calc(var(--gizmo-visible-width)*.16);object-fit:contain;filter:drop-shadow(0 3px 2px #35220f44)}
.gizmo-toybox-entry span{padding:2px 7px;background:#fff0bfed;border:1px solid #b8842c;border-radius:12px;font-size:clamp(11px,calc(var(--gizmo-visible-width)*.03),17px)}
.gizmo-toybox-entry:focus-visible,.gizmo-play-object:focus-visible{outline:3px solid #176c78;outline-offset:4px}
.gizmo-object-thumb,.gizmo-shop-preview-object{position:relative}
.gizmo-play-object{border:0;padding:0;background-color:transparent;cursor:pointer;pointer-events:auto;animation:none!important;min-width:44px;min-height:44px;transform:none}
.gizmo-play-object[hidden],.gizmo-toy-interior[hidden]{display:none!important}
.gizmo-play-object .gizmo-isolated-product{display:block}
.gizmo-room-stage:not([data-activity]) .gizmo-play-object{filter:drop-shadow(0 4px 3px #4c342c44)}
.gizmo-play-object[data-item=bounce-buddy]{left:61%;top:62%;width:18%}
.gizmo-play-object[data-item=bubble-trouble]{left:65%;top:54%;width:25%}
.gizmo-play-object[data-item=tiny-turntable]{left:43%;top:62%;width:36%}
.gizmo-play-object[data-item=cloud-cruiser]{left:34%;top:57%;width:43%;transform-origin:50% 90%}
.gizmo-play-object[data-item=peekaboo-tunnel],.gizmo-toy-interior[data-item=peekaboo-tunnel]{left:35%;top:54%;width:48%}
.gizmo-play-object[data-item=mini-masterpiece]{left:12%;top:53%;width:31%}
.gizmo-play-object[data-item=stargazer]{left:13%;top:52%;width:34%}
.gizmo-play-object[data-item=pillow-fort],.gizmo-toy-interior[data-item=pillow-fort]{left:32%;top:53%;width:48%}
.gizmo-play-object[data-item=pocket-racer]{left:47%;top:57%;width:43%}
.gizmo-play-object[data-item=disco-button]{left:65%;top:55%;width:28%}
.gizmo-toy-interior{position:absolute;aspect-ratio:1;pointer-events:none;z-index:1}
.gizmo-room-stage[data-activity=rocker] .gizmo-character{left:39%;top:47%;width:33%;z-index:3;transform-origin:50% 162.7273%;animation:gizmo-ride-cloud 1.4s ease-in-out infinite!important}
.gizmo-room-stage[data-activity=rocker] .gizmo-play-object{animation:gizmo-rock-cloud 1.4s ease-in-out infinite!important}
.gizmo-room-stage[data-activity=peekaboo] .gizmo-play-object{z-index:3;mask-image:radial-gradient(ellipse 25% 31% at 31% 54%,transparent 93%,#000 100%)}
.gizmo-room-stage[data-activity=peekaboo] .gizmo-character{left:35%;top:61%;width:28%;z-index:2;clip-path:ellipse(42% 45% at 50% 50%);animation:gizmo-tunnel-peek 3s ease-in-out infinite!important}
.gizmo-room-stage[data-activity=fort] .gizmo-play-object{z-index:3;clip-path:polygon(evenodd,0 0,100% 0,100% 100%,0 100%,0 0,45% 29%,24% 57%,70% 57%,45% 29%)}
.gizmo-room-stage[data-activity=fort] .gizmo-character{left:42%;top:59%;width:25%;z-index:2;animation:gizmo-fort-snuggle 3s ease-in-out infinite!important}
.gizmo-room-stage[data-activity=turntable] .gizmo-character{left:36%;top:48%;width:34%;animation:gizmo-dj-sway .65s ease-in-out infinite!important}
.gizmo-room-stage[data-activity=bounce] .gizmo-play-object{animation:gizmo-ball-travel 1.8s ease-in-out infinite!important}
.gizmo-room-stage[data-activity=bounce] .gizmo-character{animation:gizmo-ball-nudge 1.8s ease-in-out infinite!important}
.gizmo-room-stage[data-activity=bubbles] .gizmo-character{animation:gizmo-bubble-reach 1.8s ease-in-out infinite!important}
.gizmo-room-stage[data-activity=painting] .gizmo-character{left:34%;top:50%;width:35%;animation:gizmo-painter-dab 1.2s ease-in-out infinite!important}
.gizmo-room-stage[data-activity=telescope] .gizmo-character{left:33%;top:49%;width:31%;animation:gizmo-sky-peek 2s ease-in-out infinite!important}
.gizmo-room-stage[data-activity=racing] .gizmo-character{left:30%;top:48%;width:34%;animation:gizmo-racer-watch 2s ease-in-out infinite!important}
.gizmo-room-stage[data-activity=disco] .gizmo-character{animation:gizmo-dj-sway .5s ease-in-out infinite!important}
.gizmo-product-detail{position:absolute;inset:0;pointer-events:none;aspect-ratio:1}
.gizmo-product-detail[data-detail=turntable]{clip-path:ellipse(29% 7% at 50% 33%);animation:gizmo-dj-record .7s ease-in-out infinite}
.gizmo-product-detail[data-detail=painting]{clip-path:polygon(59% 22%,73% 20%,96% 72%,82% 77%);transform-origin:74% 54%;animation:gizmo-brush-paint .8s ease-in-out infinite}
.gizmo-product-detail[data-detail=racing]{clip-path:ellipse(27% 19% at 48% 60%);animation:gizmo-racer-roll .8s ease-in-out infinite}
@keyframes gizmo-ride-cloud{0%,100%{transform:rotate(-4deg)}50%{transform:rotate(4deg)}}
@keyframes gizmo-rock-cloud{0%,100%{transform:rotate(-4deg)}50%{transform:rotate(4deg)}}
@keyframes gizmo-tunnel-peek{0%,100%{transform:translate(8%,10%) scale(.85);opacity:1}35%,55%{transform:translate(48%,8%) scale(.45);opacity:0}75%,90%{transform:translate(-5%,8%) scale(.95);opacity:1}}
@keyframes gizmo-fort-snuggle{50%{transform:translateY(7%) scale(.93)}}
@keyframes gizmo-dj-sway{0%,100%{transform:rotate(-6deg)}50%{transform:rotate(6deg) translateY(-2%)}}
@keyframes gizmo-ball-nudge{40%{transform:translate(12%,4%) rotate(7deg)}70%{transform:translate(-5%,-3%)}}
@keyframes gizmo-bubble-reach{40%{transform:translate(7%,-7%) rotate(-5deg)}}
@keyframes gizmo-painter-dab{50%{transform:translate(-5%,2%) rotate(-6deg)}}
@keyframes gizmo-sky-peek{30%,70%{transform:translate(-13%,5%) rotate(-9deg)}}
@keyframes gizmo-racer-watch{50%{transform:translate(7%,4%) rotate(6deg)}}
@keyframes gizmo-dj-record{50%{transform:translateX(1%) rotate(3deg)}}
@keyframes gizmo-racer-roll{50%{transform:translate(2%,-1%)}}
@media(prefers-reduced-motion:reduce){.gizmo-room .gizmo-room-stage[data-activity] .gizmo-character,.gizmo-room .gizmo-room-stage[data-activity] .gizmo-play-object,.gizmo-product-detail{animation:none!important;transform:none!important;opacity:1!important}}
/* Isolated transparent parts, not duplicated drawings on top of full products. */
.gizmo-isolated-product[hidden]{display:none!important}
.gizmo-toy-component{position:absolute;aspect-ratio:1;background-repeat:no-repeat;pointer-events:none;display:block}
.gizmo-toy-component[data-component=track]{inset:0}
.gizmo-toy-component[data-component=car]{width:32%;left:37%;top:44%;transform-origin:center;animation:gizmo-track-lap 3.8s linear infinite}
.gizmo-room-stage[data-activity=painting] .gizmo-play-object>.gizmo-isolated-product{clip-path:polygon(evenodd,0 0,100% 0,100% 100%,0 100%,0 0,58% 24%,72% 20%,96% 74%,80% 80%,58% 24%)}
.gizmo-toy-component[data-component=brush]{width:42%;left:40%;top:12%;transform-origin:70% 76%;animation:gizmo-canvas-strokes 1.2s ease-in-out infinite}
.gizmo-toy-component[data-component=record]{width:67%;left:16%;top:0%;clip-path:ellipse(46% 25% at 50% 53%);animation:gizmo-record-scratch .8s ease-in-out infinite}
@keyframes gizmo-track-lap{0%,100%{left:37%;top:44%;transform:rotate(0) scale(1)}20%{left:5%;top:42%;transform:rotate(30deg) scale(.92)}40%{left:17%;top:29%;transform:rotate(10deg) scale(.70)}60%{left:53%;top:30%;transform:rotate(-8deg) scale(.72)}80%{left:67%;top:40%;transform:rotate(-12deg) scale(.9)}}
@keyframes gizmo-canvas-strokes{0%,100%{transform:translate(0,0) rotate(-18deg)}35%{transform:translate(-12%,-12%) rotate(-30deg)}70%{transform:translate(-2%,8%) rotate(-10deg)}}
@keyframes gizmo-record-scratch{0%,100%{transform:rotate(-3deg)}50%{transform:rotate(5deg)}}
@media(prefers-reduced-motion:reduce){.gizmo-toy-component{animation:none!important;transform:none!important}}

/* Caregiver rating is read-only, account-scoped recent care, never a reward. */
.gizmo-room .gizmo-caregiver-rating{position:absolute;z-index:3;top:2%;left:calc(var(--gizmo-crop,0px) + var(--gizmo-visible-width,100%)*.5);transform:translateX(-50%);display:grid;justify-items:center;gap:0;padding:4px 12px;border-radius:14px;background:#fff4dded;box-shadow:0 2px 7px #35203c35;pointer-events:none;color:#644327;max-width:45%}
.gizmo-room .gizmo-caregiver-rating[hidden]{display:none}
.gizmo-room .gizmo-caregiver-stars{font-size:clamp(19px,calc(var(--gizmo-visible-width)*.06),28px);line-height:1.05;letter-spacing:.1em;color:#925d12;white-space:nowrap}
.gizmo-room .gizmo-caregiver-label{font-size:clamp(9px,calc(var(--gizmo-visible-width)*.025),12px);font-weight:700}
@media(max-height:480px){.gizmo-room .gizmo-caregiver-rating{top:1%;padding:2px 8px}.gizmo-room .gizmo-caregiver-stars{font-size:18px}.gizmo-room .gizmo-caregiver-label{font-size:9px}}
@media(forced-colors:active){.gizmo-room .gizmo-caregiver-rating{background:Canvas;color:CanvasText;border:1px solid CanvasText}.gizmo-room .gizmo-caregiver-stars{color:CanvasText}}

/* Keep reconnect controls reachable inside the active sheet. */
.gizmo-wardrobe > .gizmo-pending,.gizmo-info > .gizmo-pending{position:relative;inset:auto;margin:12px 0;width:auto}
/* Keep the requested top stars above, not over, the approved Gizmo nameplate. */
.gizmo-room .gizmo-caregiver-rating{top:.5%;padding:2px 9px}
.gizmo-room .gizmo-caregiver-label{display:none}
/* Keep the easel beyond the left need column on cropped phones. Anchor the
   brush at its handle so only its tip sweeps the canvas, beside Gizmo's paw. */
.gizmo-play-object[data-item=mini-masterpiece]{left:28%;top:53%;width:29%}
.gizmo-room-stage[data-activity=painting] .gizmo-character{left:43%;top:50%;width:35%;transform-origin:20% 85%}
.gizmo-toy-component[data-component=brush]{left:40%;top:28%;transform-origin:80% 86%}
@keyframes gizmo-painter-dab{0%,100%{transform:scale(1)}50%{transform:scale(1.01,.99)}}
@keyframes gizmo-canvas-strokes{0%,100%{transform:rotate(-18deg)}35%{transform:rotate(-30deg)}70%{transform:rotate(-10deg)}}
/* Lower the face to bring the eye, rather than mouth, to the eyepiece. */
.gizmo-room-stage[data-activity=telescope] .gizmo-character{top:51.1%}
/* The blurred backdrop extends30px beyond the stage. Clip without creating a
   hidden scroll container, so focusing toys cannot scroll top controls away. */
.gizmo-room-shell{overflow:clip}
/* Keep the complete original artwork while optional component art loads or fails. */
.gizmo-room-stage[data-activity=painting] .gizmo-play-object:not([data-components-ready=true])>.gizmo-isolated-product{clip-path:inset(0)}
/* Keep navigation and free-care hit areas usable on short landscape screens. */
@media(max-height:480px) and (orientation:landscape){.gizmo-room .gizmo-close,.gizmo-room .gizmo-about,.gizmo-room .gizmo-care-target{min-width:44px;min-height:44px}}

/* Fixed preview and controls; only the inventory below scrolls. */
.gizmo-wardrobe{display:flex;flex-direction:column;overflow:clip;top:max(5%,env(safe-area-inset-top));bottom:max(3%,env(safe-area-inset-bottom));padding:12px;gap:4px}
.gizmo-wardrobe-heading{display:flex;align-items:center;gap:8px;padding-right:44px;min-height:44px;flex:none}
.gizmo-wardrobe-heading h2{flex:1;min-width:0;margin:0;font-size:1.1em}
.gizmo-wardrobe-heading .gizmo-shop-toggle{margin:0;padding:6px 10px;min-height:44px;font-size:.75em}
.gizmo-wardrobe>.gizmo-shop-preview{height:140px;flex:none}
.gizmo-wardrobe .gizmo-shop-figure{height:130px}
.gizmo-wardrobe>.gizmo-shop-selection{flex:none;margin:0!important}
.gizmo-wardrobe>.gizmo-shop-reset{flex:none;min-height:44px;margin:0;align-items:center;flex-wrap:wrap}
.gizmo-wardrobe .gizmo-shop-reset button{min-height:44px;padding:5px 10px}
.gizmo-wardrobe>.gizmo-shop-tabs{position:static;flex:none;padding:2px 0;gap:4px}
.gizmo-catalog-scroll{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;scrollbar-gutter:stable;padding:3px}
.gizmo-catalog-scroll .gizmo-coming{margin-bottom:8px}
.gizmo-catalog-scroll:focus-visible{outline:2px solid #52795c;outline-offset:-2px}
.gizmo-wardrobe>.gizmo-pending{flex:none;margin:0;padding:5px;font-size:.75em}
@media(max-height:650px){.gizmo-wardrobe>.gizmo-shop-preview{height:96px}.gizmo-wardrobe .gizmo-shop-figure{height:90px}.gizmo-wardrobe{gap:2px}}
@media(max-height:480px) and (orientation:landscape){
 .gizmo-wardrobe{left:50%;right:auto;transform:translateX(-50%);width:min(94vw,680px);top:max(2%,env(safe-area-inset-top));bottom:max(2%,env(safe-area-inset-bottom));padding:8px;font-size:12px;border-radius:20px}
 .gizmo-wardrobe>.gizmo-shop-preview{height:76px}.gizmo-wardrobe .gizmo-shop-figure{height:72px}
 .gizmo-wardrobe .gizmo-shop-preview-object{height:64px;width:90px}
 .gizmo-wardrobe .gizmo-catalog{grid-template-columns:repeat(2,minmax(0,1fr))}
}
