.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}}
