/* The animated mesh owns its silhouette; its outer element never scales. */
.physical-object,.thermal-scene{position:absolute;inset:0;width:100%;height:100%;transform:none;pointer-events:none}.physical-object>.inflatable-svg{display:block;width:100%;height:100%;overflow:visible}.physical-object>.service-prop{width:100%;height:100%}.thermal-scene{overflow:visible}.thermal-scene .ice-tool,.thermal-scene .blower-tool,.thermal-scene .warm-air{opacity:0;transition:opacity 180ms}.using-ice .ice-tool,.using-warm-air .blower-tool,.using-warm-air .warm-air{opacity:1}.warm-air path{stroke-dasharray:18 8;animation:warm-air-stream 650ms linear infinite}.cold-mist{animation:cold-mist-drift 1.4s ease-in-out infinite}.using-warm-air .blower-tool{animation:blower-idle 1s ease-in-out infinite}.thermal-tools{display:grid;grid-template-columns:1fr 1fr;gap:12px}.thermal-choice{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;min-height:120px;padding:12px 8px;touch-action:manipulation}.thermal-choice>span{display:block;font-size:34px;line-height:1;color:#8eb5c3}.thermal-choice:nth-child(2)>span{color:#c68d62}.thermal-choice b{font-size:20px}.thermal-choice small{font-size:16px;line-height:1.4}.thermal-choice.selected{background:#daeaf0;border-color:#8ab5c2}.thermal-choice:nth-child(2).selected{background:#f5dfc2;border-color:#c49e77}.special-bench .thermal-goal,.special-bench .pressure-hint{font-size:18px;line-height:1.5;margin:6px 0}.pressure-tools{display:flex;gap:12px}.pressure-tools button{flex:1;font-size:19px;min-height:52px}.piston-head{cursor:grab;touch-action:none;transition:none!important}.piston-head:active{cursor:grabbing}.piston-head:focus-visible{outline:none;filter:drop-shadow(0 0 4px #528c80)}.piston-model{touch-action:none;user-select:none}.piston-target{pointer-events:none}.service-model:not(.using-ice) .cold-mist,.service-model:not(.using-warm-air) .warm-air path{animation-play-state:paused}
@keyframes warm-air-stream{to{stroke-dashoffset:52}}@keyframes cold-mist-drift{0%,100%{translate:0 3px;opacity:.35}50%{translate:0 -3px;opacity:.85}}@keyframes blower-idle{0%,100%{translate:0 0}50%{translate:0 -1px}}
@media(max-height:650px){.thermal-choice{min-height:98px;padding:8px 5px;gap:4px}.thermal-choice>span{font-size:27px}.thermal-choice b{font-size:18px}.thermal-choice small{font-size:15px}.special-bench .thermal-goal,.special-bench .pressure-hint{font-size:17px;margin:3px 0}.pressure-tools button{font-size:18px;min-height:48px}.thermal-tools{gap:9px}}

.blower-tool,.warm-air{transform:translateY(45px)}.cushion-load{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}

/* Physical artwork keeps separate, touchable moving parts. */
.cushion-load{overflow:visible;z-index:3}
.placed-weight,.loose-weight{padding:0;background:transparent;border:0;touch-action:none;cursor:grab;min-height:44px;min-width:44px}
.placed-weight{display:block;width:100%;height:100%;pointer-events:auto;border-radius:12px}
.placed-weight>svg{width:100%;height:100%;pointer-events:none;overflow:visible}
.placed-weight:not(:disabled):active,.loose-weight:not(:disabled):active{transform:none;cursor:grabbing}
.placed-weight:focus-visible{outline:3px solid #79a58b;outline-offset:-2px}
.weight-store{position:absolute;left:2%;bottom:4%;width:142px;height:170px;border:2px dashed transparent;border-radius:24px;touch-action:none}
.weight-store>svg{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.weight-store>span{position:absolute;bottom:0;left:0;right:0;text-align:center;font-size:17px;background:#fff8e8e0;border-radius:10px;padding:4px;pointer-events:none}
.loose-weight{position:absolute;left:35px;top:35px;width:70px;height:105px}
.loose-weight>svg{width:100%;height:100%;pointer-events:none}
.weight-store.drop-ready{background:#d3e5c5aa;border-color:#82aa79}
.weight-lifted{opacity:.15}
.weight-arriving{opacity:0}
.weight-drag-ghost,.weight-flight{width:55px;height:78px}
.weight-flight{position:fixed;z-index:21000;pointer-events:none;filter:drop-shadow(0 7px 3px #6d522d33)}
.weight-flight>svg{width:100%;height:100%}
.piston-head>svg{pointer-events:none}
.painted-inflatable{filter:drop-shadow(0 4px 2px #9f876a16)}
@media(max-height:650px){.weight-store{width:115px;height:130px;left:1%;bottom:2%}.loose-weight{left:26px;top:19px;width:61px;height:88px}.weight-store>span{font-size:16px}.weight-drag-ghost,.weight-flight{width:46px;height:65px}}

.piston-grip-hit,.thermal-hit{display:block;width:100%;height:100%;min-height:0;min-width:0;padding:0;background:transparent;border:0;touch-action:none;cursor:grab;border-radius:16px}.piston-grip-hit:not(:disabled):active,.thermal-hit:not(:disabled):active{transform:none}.piston-grip-hit:focus-visible,.thermal-hit:focus-visible{outline:3px solid #75a68b;outline-offset:-4px}.thermal-hit{pointer-events:auto}

.mass-object-hit{display:block;width:100%;height:100%;padding:0;min-width:0;min-height:0;background:transparent;border:0;border-radius:20px;touch-action:none;cursor:grab}.mass-object-hit:not(:disabled):active{transform:none}.mass-object-hit:focus-visible{outline:3px solid #79a58b;outline-offset:-3px}.weighed-object:has(.weight-lifted)>svg{opacity:.15}.scale-drop-zone{display:flex;align-items:center;justify-content:center;width:100%;height:100%;border:2px dashed #b1aa88;border-radius:50%;color:#7d8063;font-size:18px;pointer-events:none;background:#fcf8e366}.scale-drop-zone.occupied{border-color:transparent;background:transparent}.scale-drop-zone.drop-ready{background:#d8e8caaa;border-color:#7da06d}.mass-drag-ghost{width:76px;height:146px}.mass-drag-ghost svg{position:static;clip:auto;clip-path:none}.can-landing{animation:can-place 650ms cubic-bezier(.2,.8,.3,1)}.motion-measure .weighing-model{animation:scale-settle 650ms ease-out}.motion-pump [data-pump-grip]{animation:pump-stroke 650ms ease-in-out}.motion-release [data-valve-wheel]{transform-box:fill-box;transform-origin:center;animation:valve-open 650ms ease-in-out}.gas-transfer{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;overflow:visible;z-index:5}.pump-hose{fill:none;stroke:#8e9e8b;stroke-width:5;opacity:.55}.gas-moving{fill:none;stroke:#fffbea;stroke-width:3;stroke-linecap:round;stroke-dasharray:4 16;animation:gas-flow-in 450ms linear infinite}.gas-out .gas-moving{animation-name:gas-flow-out}.vent-mist{fill:none;stroke:#a6bbbc;stroke-width:3;stroke-linecap:round;stroke-dasharray:10 8;animation:vent-air 650ms ease-out}
@keyframes pump-stroke{0%{transform:translateY(0)}35%,55%{transform:translateY(27px)}100%{transform:translateY(0)}}
@keyframes valve-open{0%,100%{transform:rotate(0)}30%,70%{transform:rotate(-20deg)}}
@keyframes gas-flow-in{to{stroke-dashoffset:-80}}@keyframes gas-flow-out{to{stroke-dashoffset:80}}
@keyframes vent-air{0%{opacity:0;stroke-dashoffset:20}30%{opacity:.9}100%{opacity:0;stroke-dashoffset:-30}}
@keyframes can-place{0%{transform:translate(0,-8px)}72%{transform:translate(0,-5px)}87%{transform:translate(0,2px)}100%{transform:translate(0,0)}}
@keyframes scale-settle{0%,65%,100%{translate:0 0}78%{translate:0 2px}90%{translate:0 -1px}}
@media(prefers-reduced-motion:reduce){.can-landing,.motion-measure .weighing-model,.motion-pump [data-pump-grip],.motion-release [data-valve-wheel],.gas-moving,.vent-mist{animation-duration:1ms;animation-iteration-count:1}}

.motion-pump-return [data-pump-grip]{animation:pump-return 650ms ease-out}
@keyframes pump-return{0%{transform:translateY(27px)}100%{transform:translateY(0)}}
@media(prefers-reduced-motion:reduce){.motion-pump-return [data-pump-grip]{animation-duration:1ms}}

.gas-port{width:100%;height:100%;pointer-events:none}

/* The pressure cylinder is a visible part of the robot, and carries its claw. */
.play-object:has(.robot-arm-model){left:3%;right:3%;top:35px;bottom:8px}.robot-arm-model{overflow:visible}.robot-grip-hit{display:block;width:100%;height:100%;min-width:0;min-height:0;padding:0;border:0;border-radius:18px;background:transparent;touch-action:none;cursor:grab}.robot-grip-hit:not(:disabled):active{transform:none;cursor:grabbing}.robot-grip-hit:focus-visible{outline:3px solid #79a58b;outline-offset:2px}.robot-arm-model text{font-family:ShopJua,sans-serif;fill:#6e604e;pointer-events:none}.robot-target-label{font-size:18px;fill:#a17c50!important}.robot-air-label{font-size:20px;fill:#648a8a!important}.robot-mechanism-label{font-size:16px}.robot-body-label{font-size:16px;fill:#8a7d66!important}.robot-moving-arm{will-change:transform}.robot-height-target,.robot-drag-arrow{pointer-events:none}.stage-ready .robot-height-target{stroke:#79a375}.robot-grip-hit:hover{background:#b5dab01c}
@media(max-height:650px){.play-object:has(.robot-arm-model){left:1%;right:1%;top:25px;bottom:2px}.category-pressure:has(.robot-arm-model) .stage-hint{font-size:17px}}
@media(max-height:650px){.robot-arm-model .robot-target-label,.robot-arm-model .robot-air-label,.robot-arm-model .robot-mechanism-label{font-size:28px}.robot-body-label{display:none}}
