/* Separate head and paw sprites keep movement from exposing the old clipped arms. */
body.sage-library.library-locked{display:flex;flex-direction:column;min-height:100svh}
body.sage-library.library-locked .app-shell{flex:1 0 auto}
body.sage-library.library-locked .command-hero{width:min(1296px,calc(100% - 64px));margin:clamp(22px,4.5vh,50px) auto 28px;gap:34px 44px}
body.sage-library.library-locked .site-footer{flex:none;margin-bottom:0;display:flex;flex-wrap:wrap;justify-content:center;gap:5px 12px}
body.sage-library.library-locked .site-footer p{flex-basis:100%;margin:0}
.robot-scene{position:relative;align-self:center;justify-self:center;aspect-ratio:1402/1122;width:100%;max-width:650px;isolation:isolate;opacity:0;visibility:hidden;transition:opacity 180ms ease;cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent;user-select:none;outline:none}
.robot-scene.is-ready{opacity:1;visibility:visible}
.robot-scene:focus-visible{outline:2px solid var(--brand);outline-offset:5px;border-radius:28px}
.robot-back,.robot-breathe,.robot-head,.robot-reaction{position:absolute;inset:0}
.robot-back{z-index:1;overflow:hidden;clip-path:inset(0 0 15.2% 0)}
.robot-head,.robot-reaction{transform-origin:49% 84%}
.robot-sprite{position:absolute;inset:-3.5% 0 auto;width:100%;height:100%;display:block;pointer-events:none;filter:url(#robotAlpha)}
.robot-breathe{animation:robot-breathe 5.8s ease-in-out infinite}
.robot-ledge{position:absolute;z-index:2;left:0;right:0;top:84.8%;bottom:0;background:var(--paper);border-top:1px solid var(--line);pointer-events:none}
.robot-hand{position:absolute;z-index:3;top:78%;width:15%;height:auto;aspect-ratio:420/520;overflow:hidden;pointer-events:none;transform-origin:50% 15%;filter:url(#robotAlpha)}
.robot-hand-left{left:14.5%}.robot-hand-right{right:21%}
.robot-hand image{pointer-events:none}
.robot-gaze{position:absolute;inset:-3.5% 0 auto;height:100%;pointer-events:none}
/* Screen artwork follows the reference; only its container transforms animate. */
.robot-eye{position:absolute;left:32.3%;top:40%;width:10%;height:17%;overflow:visible;fill:#45ffcb;stroke:#45ffcb;transform:rotate(15deg);filter:drop-shadow(0 0 6px #20e8b3aa);transform-origin:center;animation:robot-blink 7.2s infinite}
.robot-eye-right{left:51%;top:44.4%;animation-delay:45ms}
.robot-face{opacity:0}.robot-face-normal{opacity:1}
.robot-face path{stroke-width:14;stroke-linecap:round;stroke-linejoin:round}
.robot-face-happy,.robot-face-laugh,.robot-face-sleepy,.robot-face-wink{fill:none}
.robot-face-sleepy path{stroke-width:18}
.robot-eye-right .robot-face-laugh,.robot-eye-right .robot-face-angry{transform:translateX(100px) scaleX(-1)}
.robot-scene:not([data-expression='neutral']):not([data-expression='puzzled']):not([data-expression='wink']) .robot-face-normal{opacity:0}
.robot-scene:is([data-expression='happy'],[data-expression='proud']) .robot-face-happy,
.robot-scene[data-expression='laugh'] .robot-face-laugh,
.robot-scene[data-expression='wink'] .robot-eye-right .robot-face-wink,
.robot-scene[data-expression='surprise'] .robot-face-surprise,
.robot-scene[data-expression='shy'] .robot-face-shy,
.robot-scene[data-expression='love'] .robot-face-love,
.robot-scene[data-expression='sleepy'] .robot-face-sleepy,
.robot-scene[data-expression='sad'] .robot-face-sad,
.robot-scene[data-expression='angry'] .robot-face-angry{opacity:1}
.robot-scene[data-expression='wink'] .robot-eye-right .robot-face-normal{opacity:0}
.robot-scene[data-expression='puzzled'] .robot-eye-right .robot-eye-shape{transform:translate(7px,17px) scale(.8)}
.robot-scene:not([data-expression='neutral']) .robot-eye{animation:none}
.robot-mouth{position:absolute;left:43%;top:60.2%;width:10%;height:7%;overflow:visible;fill:#45ffcb;stroke:#45ffcb;stroke-width:8;stroke-linecap:round;transform:rotate(15deg);filter:drop-shadow(0 0 4px #20e8b377);pointer-events:none}
.robot-mouth>*{opacity:0}.robot-mouth-smile,.robot-mouth-oh,.robot-mouth-sad{fill:none}
.robot-scene:is([data-expression='happy'],[data-expression='wink'],[data-expression='proud']) .robot-mouth-smile,
.robot-scene[data-expression='laugh'] .robot-mouth-laugh,
.robot-scene[data-expression='surprise'] .robot-mouth-oh,
.robot-scene[data-expression='puzzled'] .robot-mouth-dot,
.robot-scene[data-expression='sad'] .robot-mouth-sad{opacity:1}
.robot-cheek,.robot-brow,.robot-tear{position:absolute;opacity:0;pointer-events:none;transform:rotate(15deg);fill:none;stroke:#45ffcb;stroke-width:6;stroke-linecap:round;filter:drop-shadow(0 0 3px #20e8b377)}
.robot-cheek{left:27%;top:58%;width:7%;height:4%}.robot-cheek-right{left:60%;top:65%}
.robot-brow{left:53.5%;top:39%;width:6%;height:4%}
.robot-tear{left:59%;top:59%;width:2.7%;height:5%;fill:#45ffcb;stroke:none}
.robot-scene[data-expression='shy'] .robot-cheek,.robot-scene[data-expression='puzzled'] .robot-brow,.robot-scene[data-expression='sad'] .robot-tear{opacity:1}
.robot-symbol{position:absolute;z-index:4;left:80%;top:15%;width:9%;height:13%;pointer-events:none;fill:none;stroke:#42ad90;stroke-width:7;stroke-linecap:round;stroke-linejoin:round}
.robot-symbol>g{opacity:0}
.robot-scene[data-expression='puzzled'] .robot-symbol-question,.robot-scene[data-expression='sleepy'] .robot-symbol-sleep,.robot-scene[data-expression='surprise'] .robot-symbol-surprise,.robot-scene[data-expression='laugh'] .robot-symbol-laugh{opacity:1}
/* Paws stay in front of the ledge and never reveal an arm underneath. */
.robot-hand,.robot-reaction{transition:transform 360ms cubic-bezier(.22,.8,.24,1)}
.robot-scene[data-pose='shy'] .robot-hand-left{transform:translate(65%,-72%) rotate(-12deg)}
.robot-scene[data-pose='shy'] .robot-hand-right{transform:translate(-58%,-64%) rotate(12deg)}
.robot-scene.is-reacting .robot-hand,.robot-scene.is-reacting .robot-reaction{transition:none}
.robot-sparks{position:absolute;inset:0;z-index:4;pointer-events:none}
.robot-spark{position:absolute;left:18%;top:31%;width:4%;height:5%;opacity:0;color:#9bc8a5;fill:currentColor}
.robot-spark:nth-child(2){left:78%;top:23%}.robot-spark:nth-child(3){left:8%;top:53%}.robot-spark:nth-child(4){left:87%;top:52%}.robot-spark:nth-child(5){left:35%;top:12%}.robot-spark:nth-child(6){left:66%;top:15%}
.robot-spark .spark-heart{display:none}.robot-scene[data-effect='love'] .robot-spark{color:#e29fa8}.robot-scene[data-effect='love'] .spark-heart{display:block}.robot-scene[data-effect='love'] .spark-star{display:none}
.robot-status{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.robot-scene.is-paused .robot-breathe,.robot-scene.is-paused .robot-eye{animation-play-state:paused}
@keyframes robot-breathe{0%,100%{transform:translateY(0)}50%{transform:translateY(-.35%)}}
@keyframes robot-blink{0%,91%,96%,100%{transform:rotate(15deg) scaleY(1)}93%,94%{transform:rotate(15deg) scaleY(.08)}}
@media(max-width:1100px) and (min-width:761px){body.sage-library.library-locked .command-hero{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:26px}.robot-scene{align-self:center}}
@media(max-width:760px){body.sage-library.library-locked .command-hero{width:calc(100% - 40px);margin:24px auto 0;grid-template-columns:1fr;gap:20px}.robot-scene{grid-row:2;max-width:430px;width:100%;margin:0 auto}.gate-features{grid-row:3}}
@media(prefers-reduced-motion:reduce){.robot-breathe,.robot-eye{animation:none}.robot-head,.robot-gaze{transform:none!important}.robot-scene,.robot-face,.robot-eye,.robot-mouth,.robot-cheek,.robot-hand,.robot-reaction{transition:none}}
