/* Raster puppets share the exact artwork crop and the world's camera. */
.actor-stage{position:absolute;z-index:3;pointer-events:none;user-select:none;perspective:1100px;transform-style:preserve-3d}
.actor-stage[hidden],.actor-motion-control[hidden]{display:none!important}
.actor-character,.actor-arm,.actor-plant,.actor-desk-mug{position:absolute;pointer-events:none}
.actor-character{z-index:1;transform-origin:50% 100%;transform-style:preserve-3d;filter:drop-shadow(1px 3px 1px #243d4630)}
.actor-terminal{z-index:0;pointer-events:none;padding:calc(3 * var(--actor-unit,1px)) calc(4 * var(--actor-unit,1px));border-width:calc(1.3 * var(--actor-unit,1px));background:#102e2bfa}
.actor-terminal pre{white-space:pre;font:500 clamp(2.5px,calc(7.5 * var(--actor-unit,1px)),10px)/1.35 var(--mono,monospace);letter-spacing:-.035em;color:#d4fba1}
.actor-terminal pre::after{content:'▌';color:#e9ffd2}
.actor-terminal.is-building pre::after{animation:actor-code-cursor .65s step-end infinite}
.actor-terminal[hidden]{display:none!important}
#journey[data-actors-ready='true'] .living-world>.living-mini-terminal{visibility:hidden!important}
.actor-stage img{display:block;width:100%;height:100%;object-fit:contain;max-width:none;pointer-events:none;user-select:none}
.actor-body{position:absolute;inset:0}
.actor-arm{z-index:1;transform:rotate(0deg);transform-style:preserve-3d}
.actor-code-arm{transform:rotate(var(--type-rest-angle,-40deg))}
.actor-code-arm>img{transform-origin:inherit}
.actor-coffee-arm{opacity:0;transform:rotate(var(--coffee-rest-angle,0deg))}
.actor-desk-mug{z-index:2;filter:drop-shadow(1px 2px 1px #243d4626)}
.actor-steam{position:absolute;width:1px;height:1px;pointer-events:none;transform-origin:0 0}
.actor-held-steam{transform:rotate(calc(-1 * var(--coffee-rest-angle,0deg)))}
.actor-steam span{position:absolute;left:0;top:0;opacity:0;color:#3b7e8a;text-shadow:1px 1px #f7f2db;font:700 clamp(6px,calc(12 * var(--actor-unit,1px)),15px)/1 var(--mono,monospace)}
.actor-plant{z-index:2;transform-origin:55.85% 99.13%;transform:scale(.28,.2);opacity:.35;filter:drop-shadow(0 3px 2px #33584b40)}
.actor-plant-glint{position:absolute;left:50%;top:-13%;font:700 calc(22 * var(--actor-unit,1px))/1 var(--mono,monospace);color:#f3fbcb;text-shadow:0 0 9px #e6ffc4;opacity:0}
.actor-stage.is-grown .actor-plant{transform:scale(1);opacity:1}
.actor-water{position:absolute;width:1px;height:1px;pointer-events:none}
.actor-water span{position:absolute;left:0;top:0;opacity:0;color:#207db1;text-shadow:1px 1px #c5f7fc;font:700 clamp(6px,calc(12 * var(--actor-unit,1px)),15px)/1 var(--mono,monospace)}
.actor-stage.is-watering .actor-gardener{animation:actor-garden-shift 6.2s ease-in-out both}
.actor-stage.is-watering .actor-garden-arm{animation:actor-pour 6.2s ease-in-out both}
.actor-stage.is-watering .actor-water span{animation:actor-water-drop .68s var(--water-delay,1.5s) linear 4 both}
.actor-stage.is-watering .actor-plant{animation:actor-plant-grow 6.2s ease-out both}
.actor-stage.is-watering .actor-plant-glint{animation:actor-plant-glint 6.2s ease-out both}
.actor-stage.is-typing .actor-coder{animation:actor-code-lean 12s ease-in-out both}
.actor-stage.is-typing .actor-code-arm{animation:actor-type-visibility 12s step-end both}
.actor-stage.is-typing .actor-code-arm>img{animation:actor-type-press .3s ease-in-out 8 forwards,actor-type-press-late .3s 6.7s ease-in-out 11 forwards}
.actor-stage.is-typing .actor-coffee-arm{animation:actor-coffee-visibility 12s step-end both,actor-coffee-sip 12s ease-in-out both}
.actor-stage.is-typing .actor-desk-mug{animation:actor-desk-mug-visibility 12s step-end both}
.actor-stage.is-typing .actor-held-steam{animation:actor-steam-upright 12s ease-in-out both}
.actor-stage.is-typing .actor-steam span{animation:actor-binary-steam 1.35s var(--steam-delay,0s) linear infinite}
.actor-stage.is-paused,.actor-stage.is-paused *{animation-play-state:paused!important}
.actor-motion-control{position:absolute;left:calc(var(--gutter,24px) + 196px);bottom:22px;transform:none;z-index:6;display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:44px;padding:9px 12px;border:1px solid #3d66565c;background:#eff3e6ed;box-shadow:2px 2px 0 #294b3b32;color:#244438;font:600 11px/1.3 var(--sans,Arial,sans-serif);cursor:pointer;pointer-events:auto;white-space:nowrap;backdrop-filter:blur(5px)}
.actor-motion-control:hover{background:#e0efb7}
.actor-motion-control:focus-visible{outline:3px solid #244438;outline-offset:4px}
.actor-motion-control[aria-pressed='true']{background:#dceba9;border-color:#47713b}
.actor-motion-control:disabled{cursor:default;opacity:.8}
.living-world.is-focus-pinned .actor-motion-control{bottom:143px}
#journey[data-actors-ready='true'] .living-garden-effect,#journey[data-actors-ready='true'] .living-sprigs{display:none!important}
@keyframes actor-garden-shift{0%,100%{transform:translate3d(0,0,0) rotate(0)}20%,75%{transform:translate3d(calc(1 * var(--actor-unit,1px)),calc(-2 * var(--actor-unit,1px)),5px) rotate(1.1deg)}45%{transform:translate3d(calc(1 * var(--actor-unit,1px)),calc(-3 * var(--actor-unit,1px)),5px) rotate(.5deg)}}
@keyframes actor-pour{0%,13%,100%{transform:rotate(0)}26%,77%{transform:rotate(var(--pour-angle,19deg))}89%{transform:rotate(-3deg)}}
@keyframes actor-water-drop{0%{transform:translate3d(0,0,0) scale(.7);opacity:0}12%{opacity:1}82%{opacity:.9}100%{transform:translate3d(var(--water-dx,40px),var(--water-dy,70px),0) scale(.6);opacity:0}}
@keyframes actor-plant-grow{0%,18%{transform:scale(.28,.2);opacity:.35}40%{transform:scale(.57,.6) rotate(-3deg);opacity:1}66%{transform:scale(.88,.98) rotate(3deg);opacity:1}83%{transform:scale(1.04,1.02) rotate(-2deg);opacity:1}100%{transform:scale(1);opacity:1}}
@keyframes actor-plant-glint{0%,65%,100%{opacity:0;transform:translateY(5px) scale(.6)}75%,87%{opacity:1;transform:translateY(-4px) scale(1)}}
@keyframes actor-code-lean{0%,18%,25%,54.17%,55.83%,83.33%,100%{transform:translate3d(0,0,0) rotate(0)}5%,13%,61%,71%,79%{transform:translate3d(calc(-2 * var(--actor-unit,1px)),calc(-1 * var(--actor-unit,1px)),3px) rotate(-.9deg)}9%,16%,65%,75%{transform:translate3d(calc(1 * var(--actor-unit,1px)),0,0) rotate(.5deg)}35%,44.17%{transform:translate3d(0,0,0) rotate(0)}}
@keyframes actor-type-visibility{0%,19.999%{opacity:1}20%,55.829%{opacity:0}55.83%,100%{opacity:1}}
@keyframes actor-coffee-visibility{0%,19.999%{opacity:0}20%,55.829%{opacity:1}55.83%,100%{opacity:0}}
@keyframes actor-desk-mug-visibility{0%,19.999%{opacity:1}20%,55.829%{opacity:0}55.83%,100%{opacity:1}}
@keyframes actor-type-press{0%,100%{transform:rotate(0) translateY(0)}24%{transform:rotate(-8deg) translateY(calc(-3 * var(--actor-unit,1px)))}68%{transform:rotate(8deg) translateY(calc(3 * var(--actor-unit,1px)))}}
@keyframes actor-type-press-late{0%,100%{transform:rotate(0) translateY(0)}24%{transform:rotate(-8deg) translateY(calc(-3 * var(--actor-unit,1px)))}68%{transform:rotate(8deg) translateY(calc(3 * var(--actor-unit,1px)))}}
@keyframes actor-coffee-sip{0%,25%,54.17%,100%{transform:rotate(var(--coffee-rest-angle,0deg))}35%,44.17%{transform:rotate(var(--coffee-sip-angle,55deg))}39%,42%{transform:rotate(calc(var(--coffee-sip-angle,55deg) + 2deg))}}
@keyframes actor-steam-upright{0%,25%,54.17%,100%{transform:rotate(calc(-1 * var(--coffee-rest-angle,0deg)))}35%,44.17%{transform:rotate(calc(-1 * var(--coffee-sip-angle,55deg)))}39%,42%{transform:rotate(calc(-1 * (var(--coffee-sip-angle,55deg) + 2deg)))}}
@keyframes actor-binary-steam{0%{opacity:0;transform:translate3d(0,calc(-3 * var(--actor-unit,1px)),0) scale(.7)}15%{opacity:.8}65%{opacity:.55}100%{opacity:0;transform:translate3d(calc(var(--steam-drift,6) * var(--actor-unit,1px)),calc(-42 * var(--actor-unit,1px)),0) scale(1.05)}}
@keyframes actor-code-cursor{0%,49.9%{opacity:1}50%,100%{opacity:0}}
@media(max-width:760px){.actor-motion-control{left:auto;right:16px;bottom:4px;transform:none;font-size:10px;min-height:40px;padding:8px 10px}.living-world.is-focus-pinned .actor-motion-control{bottom:146px}}
@media(prefers-reduced-motion:reduce){.actor-stage,.actor-stage *{animation:none!important;transition:none!important;transform:none!important}.actor-stage .actor-code-arm{transform:rotate(var(--type-rest-angle,-40deg))!important;opacity:1}.actor-stage .actor-coffee-arm{opacity:0}.actor-stage .actor-desk-mug,.actor-stage .actor-plant{opacity:1}.actor-stage .actor-water,.actor-stage .actor-plant-glint,.actor-stage .actor-steam{display:none}.actor-motion-control{transform:none}}

/* Small additive accessory; all original art registration remains unchanged. */
.actor-stage img.actor-garden-hat{position:absolute;left:-4%;top:-12%;width:108%;height:22%;z-index:3;object-fit:fill;filter:drop-shadow(0 2px 0 #6b573c40)}
.actor-terminal pre{font-size:clamp(3px,calc(8.5 * var(--actor-unit,1px)),11px);line-height:1.3;color:#e0ffc0;letter-spacing:0;text-shadow:0 0 2px #b8ee8040}
.actor-stage.is-watering .actor-garden-arm{animation:none;transform:rotate(var(--pour-angle,19deg))}
.actor-stage.is-watering .actor-water span{animation:actor-water-drop .75s var(--water-delay,0s) linear infinite}
.actor-stage.is-grown .actor-plant{animation:none;transform:scale(1);opacity:1}
@media(prefers-reduced-motion:reduce){.actor-stage .actor-garden-hat{transform:none!important}}

/* Right-facing CRT glass: its code follows the same perspective as the bezel. */
.actor-terminal.living-mini-terminal{transform:skewY(-6deg);transform-origin:50% 50%;border:0;border-radius:8% / 7%;box-shadow:none;background:#092c3deb;padding:calc(3 * var(--actor-unit,1px));overflow:hidden}
.actor-terminal .living-mini-light{display:none}
.actor-terminal pre{margin:0;font-size:clamp(2px,calc(6.5 * var(--actor-unit,1px)),9px);line-height:1.4;letter-spacing:0;color:#c9fba6}
.actor-terminal.living-mini-terminal{padding:calc(2 * var(--actor-unit,1px));background:#092b38f5;box-shadow:inset 0 0 calc(5 * var(--actor-unit,1px)) #8dd7b51c}
.actor-terminal pre{font-size:clamp(1px,calc(7.3 * var(--actor-unit,1px)),10px);line-height:1.4;color:#d4ffc0;text-shadow:0 0 calc(2 * var(--actor-unit,1px)) #a5e8b555}
.actor-terminal pre::first-line{color:#a3e4fb}
.actor-terminal pre::after{color:#f7ce83}
.desk-is-open[data-closeup='garden'] .actor-stage.is-watering .actor-plant{animation:actor-closeup-grow 6.2s ease-out both}
@keyframes actor-closeup-grow{0%,15%{transform:scale(.16,.12);opacity:.5}32%{transform:scale(.4,.5);opacity:1}55%{transform:scale(.75,.9) rotate(-3deg);opacity:1}78%{transform:scale(1.15,1.13) rotate(2deg);opacity:1}88%,100%{transform:scale(1.1,1.12);opacity:1}}

/* Tiny ambient details, registered to the existing desk artwork. */
.actor-workbench-details{position:absolute;inset:0;z-index:2;pointer-events:none}
.actor-cigarette-smoke{position:absolute;left:92.95%;top:63.75%;width:1px;height:1px}
.actor-cigarette-smoke span{position:absolute;left:0;bottom:0;width:calc(10 * var(--actor-unit,1px));height:calc(28 * var(--actor-unit,1px));margin-left:calc(-5 * var(--actor-unit,1px));opacity:0;animation:actor-ash-wisp 5.4s -1.8s linear infinite}
.actor-cigarette-smoke span:nth-child(2){animation-delay:-3.6s}
.actor-cigarette-smoke span:nth-child(3){animation-delay:0s}
.actor-cigarette-smoke svg{display:block;width:100%;height:100%;overflow:visible;shape-rendering:crispEdges}
.actor-cigarette-smoke path{stroke:#e7e6d4;stroke-width:1.3;stroke-linecap:square}
.actor-desk-led{position:absolute;width:calc(2.5 * var(--actor-unit,1px));height:calc(2 * var(--actor-unit,1px));transform:translate(-50%,-50%);opacity:.5;background:#c95637;box-shadow:0 0 calc(3 * var(--actor-unit,1px)) currentColor}
.actor-pi-power{left:77.48%;top:66.95%;color:#c96e43;animation:actor-power-glow 6.4s -2s ease-in-out infinite}
.actor-pi-activity{left:76.83%;top:66.62%;color:#a7d886;background:#b8ed91;animation:actor-pi-tick 3.7s -1.2s steps(1,end) infinite}
.actor-solder-ready{left:73.02%;top:64.64%;width:calc(2 * var(--actor-unit,1px));color:#dbab62;background:#ecc17c;animation:actor-power-glow 7.5s -4s ease-in-out infinite}
@keyframes actor-ash-wisp{0%{opacity:0;transform:translate(0,0) scale(.55,.45)}18%{opacity:.28}55%{opacity:.22;transform:translate(calc(3 * var(--actor-unit,1px)),calc(-13 * var(--actor-unit,1px))) scale(.9,.9)}100%{opacity:0;transform:translate(calc(-3 * var(--actor-unit,1px)),calc(-34 * var(--actor-unit,1px))) scale(1.15,1.2)}}
@keyframes actor-pi-tick{0%,12%,24%,71%,83%,100%{opacity:.18}5%,18%,65%,77%{opacity:.85}}
@keyframes actor-power-glow{0%,100%{opacity:.4}50%{opacity:.7}}
@media(prefers-reduced-motion:reduce){.actor-cigarette-smoke{display:none}.actor-desk-led{animation:none;opacity:.45}}
