/* Behavior only. The approved stage/frame dimensions remain in styles.css. */
[data-orb] .orb-frame,[data-orb] .orb-mount{animation:none;pointer-events:none}
[data-orb]{pointer-events:none}
.orb-float,.orb-look{width:100%;height:100%;position:relative;display:grid;place-items:center}
.orb-interactive .orb-float{animation:orb-idle-live 7s ease-in-out infinite}
.orb-interactive .orb-look{transform:rotate(var(--orb-tilt,0deg));transition:transform 220ms ease-out}
.orb-interactive[data-enhanced=true] .orb-mount{animation:orb-arrive-live 320ms ease-out}
.orb-interactive[data-state=thinking] .orb-look,.orb-interactive[data-state=searching] .orb-look{transform:rotate(calc(var(--orb-tilt,0deg) - 1deg))}
.orb-interactive[data-state=success] .orb-look,.orb-interactive[data-state=excited] .orb-look{transform:rotate(var(--orb-tilt,0deg)) scale(1.018)}
.orb-interactive[data-state=surprised] .orb-look{transform:rotate(var(--orb-tilt,0deg)) scale(1.012)}
.orb-interactive[data-state=no-results] .orb-look{transform:rotate(calc(var(--orb-tilt,0deg) + 1.4deg))}
.orb-layers{position:relative;width:100%;height:100%}.orb-layer{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}
.orb-eyes,.orb-eye-left,.orb-eye-right{transform:translate(var(--orb-eye-x,0px),var(--orb-eye-y,0px));transition:transform 180ms ease-out}
.orb-orbit{animation:orb-orbit-live 18s ease-in-out infinite;transform-origin:50% 68%}
@keyframes orb-idle-live{0%,100%{transform:translateY(0) rotate(-.25deg)}50%{transform:translateY(var(--orb-float-y,-3px)) rotate(.25deg) scale(1.003)}}
@keyframes orb-arrive-live{from{opacity:.65;transform:translateY(4px) scale(.99)}to{opacity:1;transform:none}}
@keyframes orb-orbit-live{50%{transform:rotate(.6deg)}}
.orb-interactive[data-paused=true] .orb-float,.orb-interactive[data-paused=true] .orb-orbit{animation-play-state:paused}
.orb-interactive[data-reduced=true] *{animation:none!important;transition:none!important}
.orb-interactive[data-reduced=true] .orb-look,.orb-interactive[data-reduced=true] .orb-eyes{transform:none!important}
@media(prefers-reduced-motion:reduce){[data-orb] *{animation:none!important;transition:none!important}.orb-look,.orb-eyes,.orb-eye-left,.orb-eye-right{transform:none!important}}
/* Opt-in local tool, absent unless hostname + preview flag + query all match. */
.orb-dev{position:fixed;z-index:70;right:12px;bottom:12px;width:min(330px,calc(100vw - 24px));background:#11151a;border:1px solid #344051;border-radius:12px;padding:12px;max-height:70vh;overflow:auto;box-shadow:0 8px 24px #0008}
.orb-dev summary{min-height:28px}.orb-dev label{margin-top:10px;font-size:12px}.orb-dev select,.orb-dev input{padding:8px}.orb-dev button{margin-top:10px;min-height:44px}.orb-dev p,.orb-dev output{font-size:12px;display:block;margin:10px 0 0;color:#b6becc}.orb-dev .dev-options{display:flex;gap:14px}.orb-dev input[type=checkbox]{width:auto}.orb-dev .dev-options label{display:flex;align-items:center;gap:5px}.orb-dev form{border-top:1px solid #344051;margin-top:12px}

.orb-interactive[data-attention=true]:not([data-reduced=true]) .orb-look{transform:rotate(var(--orb-tilt,0deg)) scale(1.006)}

/* 3D adapter preserves the approved container; static art stays behind the canvas. */
.orb-webgl{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
[data-orb][data-renderer="3d"] .orb-look>.orb-master,[data-orb][data-renderer="3d"] .orb-look>.orb-placeholder{visibility:hidden}
[data-orb][data-renderer="3d"] .orb-float,[data-orb][data-renderer="3d"] .orb-look{animation:none!important;transform:none!important;transition:none!important}
.orb-dev [data-metrics]{white-space:pre-wrap;font:11px/1.5 Consolas,monospace;color:#c7d7e7}

[data-orb] .orb-mount,[data-orb] .orb-float,[data-orb] .orb-look,[data-orb] .orb-master{min-width:0;min-height:0}[data-orb] .orb-master{aspect-ratio:auto}

.orb-dev [hidden]{display:none!important}

/* Final fidelity pass: enlarge only artwork, never the frozen layout boxes. */
@media(min-width:1100px){[data-orb] .orb-webgl,[data-orb] .orb-look>.orb-master{position:absolute;inset:-12.5%;width:125%;height:125%;max-width:none;object-fit:contain}}

/* Registered full-canvas layers use the same artwork footprint as static fallback. */
@media(min-width:1100px){[data-orb] .orb-look>.orb-layers{position:absolute;inset:-12.5%;width:125%;height:125%;max-width:none}}
.orb-interactive[data-reduced=true] .orb-eye-left,.orb-interactive[data-reduced=true] .orb-eye-right{transform:none!important}
@media(prefers-reduced-motion:reduce){.orb-eye-left,.orb-eye-right{transform:none!important}}

.orb-interactive[data-static=true] .orb-float{animation:none}.orb-interactive[data-static=true] .orb-look{transform:none;transition:none}

/* Approved whole-image master: safe footprint inside unchanged mobile stage. */
@media(max-width:760px){.hero [data-orb] .orb-look>.orb-master{position:absolute;inset:-25% 0;width:100%;height:150%;max-width:none}}

/* FINAL locked source: independent registered display masks, no identity redraw. */
.orb-canvas{position:absolute;width:100%;height:auto;aspect-ratio:3/2;left:0;top:50%;transform:translateY(-50%);isolation:isolate;mask-image:linear-gradient(to right,transparent,#000 7%,#000 94%,transparent),linear-gradient(to bottom,transparent,#000 9%,#000 90%,transparent);mask-composite:intersect}
.orb-canvas .orb-layer{object-fit:fill;mask-size:100% 100%;mask-repeat:no-repeat;transition:transform 280ms ease-out;transform-origin:50% 50%}
.orb-canvas .orb-body{transform:translateY(var(--orb-body-y,0px))}
.orb-visor-plate{position:absolute;inset:0;mask-size:100% 100%}
.orb-visor-plate img{position:absolute;left:11.72%;top:5.18%;width:79%;height:79%;max-width:none}
.orb-canvas .orb-eye-left{transform-origin:48.2% 36.2%}
.orb-canvas .orb-eye-right{transform-origin:61.2% 42.2%}
.orb-canvas .orb-eye-left,.orb-canvas .orb-eye-right{transform:translate(calc(var(--orb-eye-x,0px) + var(--orb-expression-x,0px)),calc(var(--orb-eye-y,0px) + var(--orb-expression-y,0px))) scale(var(--orb-eye-sx,1),var(--orb-eye-sy,1))}
[data-eyes=blink]{--orb-eye-sy:.09}[data-eyes=thinking]{--orb-eye-sy:.64;--orb-expression-y:1px}[data-eyes=happy]{--orb-eye-sy:.8;--orb-eye-sx:1.03}[data-eyes=surprised]{--orb-eye-sy:1.09;--orb-eye-sx:1.12}
[data-eyes=left]{--orb-expression-x:-3px}[data-eyes=right]{--orb-expression-x:3px}[data-eyes=up]{--orb-expression-y:-3px}[data-eyes=down]{--orb-expression-y:3px}
.orb-canvas .orb-mouth{transform-origin:53.5% 47%;transform:scale(var(--orb-mouth-x,1),var(--orb-mouth-y,1))}
[data-mouth=smile],[data-mouth=happy]{--orb-mouth-x:1.16;--orb-mouth-y:1.05}[data-mouth=open],[data-mouth=ae]{--orb-mouth-x:.95;--orb-mouth-y:1.5}[data-mouth=surprised],[data-mouth=o]{--orb-mouth-x:.65;--orb-mouth-y:1.55}[data-mouth=thinking]{--orb-mouth-x:.65;--orb-mouth-y:.4}[data-mouth=i]{--orb-mouth-x:.38;--orb-mouth-y:1.25}[data-mouth=u]{--orb-mouth-x:.65;--orb-mouth-y:1.1}
.orb-canvas .orb-hand-left{transform-origin:33% 53%;transform:translate(var(--orb-lx,0px),var(--orb-ly,0px)) rotate(var(--orb-lr,0deg))}
.orb-canvas .orb-hand-right{transform-origin:68% 68%;transform:translate(var(--orb-rx,0px),var(--orb-ry,0px)) rotate(var(--orb-rr,0deg))}
[data-left-hand=present],[data-left-hand=open]{--orb-lx:-2px;--orb-ly:-2px;--orb-lr:3deg}[data-right-hand=present],[data-right-hand=open]{--orb-rx:2px;--orb-ry:-2px;--orb-rr:-3deg}
[data-left-hand=point-left]{--orb-lx:-4px;--orb-ly:-1px;--orb-lr:5deg}[data-right-hand=point-right]{--orb-rx:4px;--orb-ry:-1px;--orb-rr:-5deg}
[data-left-hand=point-up]{--orb-ly:-3px;--orb-lr:5deg}[data-right-hand=point-up]{--orb-ry:-3px;--orb-rr:-5deg}
[data-left-hand=celebrate]{--orb-ly:-3px;--orb-lr:4deg}[data-right-hand=celebrate]{--orb-ry:-3px;--orb-rr:-4deg}
.orb-canvas .orb-orbit,.orb-canvas .orb-orbit-back{transform-origin:53% 55%;animation:orb-ring-final 14s ease-in-out infinite}
.orb-canvas .orb-orbit-back{animation-direction:reverse}
@keyframes orb-ring-final{50%{transform:rotate(.18deg) translateY(-.35px)}}
[data-ring=static] .orb-orbit,[data-ring=static] .orb-orbit-back{animation:none;transform:none}
[data-paused=true] .orb-orbit-back{animation-play-state:paused}
[data-orb] .orb-look>.orb-master{mask-image:linear-gradient(to right,transparent,#000 7%,#000 94%,transparent),linear-gradient(to bottom,transparent,#000 9%,#000 90%,transparent);mask-composite:intersect}
@media(max-width:760px){.hero [data-orb] .orb-look>.orb-layers{position:absolute;inset:-25% 0;width:100%;height:150%;max-width:none}.orb-interactive .orb-float{animation-duration:9s}}
[data-mobile=true]{--orb-lx:0px;--orb-rx:0px}.orb-interactive[data-reduced=true] .orb-canvas .orb-eye-left,.orb-interactive[data-reduced=true] .orb-canvas .orb-eye-right{transform:scale(var(--orb-eye-sx,1),var(--orb-eye-sy,1))!important}
@media(prefers-reduced-motion:reduce){.orb-canvas .orb-eye-left,.orb-canvas .orb-eye-right{transform:scale(var(--orb-eye-sx,1),var(--orb-eye-sy,1))!important}}

.orb-canvas .orb-body,.orb-visor-plate{transform:translateX(var(--orb-parallax-x,0px))}
[data-left-hand=point-right]{--orb-lx:2px;--orb-lr:-3deg}[data-right-hand=point-left]{--orb-rx:-2px;--orb-rr:3deg}

[data-mobile=true]{--orb-float-y:-1.5px}
@media(min-width:1100px){.orb-dev{left:16px;right:auto}}

/* Animation polish: continuous silhouette under fixed feathered joint masks. */
.orb-canvas .orb-body,.orb-visor-plate{transform:none}
.orb-canvas .orb-hand-left,.orb-canvas .orb-hand-right{transform:none;transition:none}
.orb-hand-art{position:absolute;inset:0;width:100%;height:100%;max-width:none;object-fit:fill;transition:transform 360ms ease-in-out}
.orb-hand-left .orb-hand-art{transform-origin:33% 53%;transform:translate(var(--orb-lx,0px),var(--orb-ly,0px)) rotate(var(--orb-lr,0deg))}
.orb-hand-right .orb-hand-art{transform-origin:68% 68%;transform:translate(var(--orb-rx,0px),var(--orb-ry,0px)) rotate(var(--orb-rr,0deg))}
[data-left-hand=present],[data-left-hand=open]{--orb-lx:-.15px;--orb-ly:-.12px;--orb-lr:.12deg}
[data-right-hand=present],[data-right-hand=open]{--orb-rx:.15px;--orb-ry:-.12px;--orb-rr:-.12deg}
[data-left-hand=point-left]{--orb-lx:-.2px;--orb-ly:0px;--orb-lr:.15deg}[data-right-hand=point-right]{--orb-rx:.2px;--orb-ry:0px;--orb-rr:-.15deg}
[data-left-hand=point-up],[data-left-hand=celebrate]{--orb-lx:0px;--orb-ly:-.2px;--orb-lr:.18deg}
[data-right-hand=point-up],[data-right-hand=celebrate]{--orb-rx:0px;--orb-ry:-.2px;--orb-rr:-.18deg}
[data-left-hand=point-right]{--orb-lx:.15px;--orb-lr:-.12deg}[data-right-hand=point-left]{--orb-rx:-.15px;--orb-rr:.12deg}
/* Keep orbital geometry registered. Only front-surface luminosity breathes, max +2%. */
.orb-canvas .orb-orbit-back{animation:none;transform:none}
.orb-canvas .orb-orbit{transform:none;animation:orb-ring-light 14s ease-in-out infinite}
@keyframes orb-ring-light{0%,100%{filter:brightness(1)}50%{filter:brightness(1.02)}}
[data-ring=static] .orb-canvas .orb-orbit{animation:none;filter:none}
.orb-canvas .orb-eye-left,.orb-canvas .orb-eye-right{mix-blend-mode:screen;transition:transform 110ms ease-out;transform:translate(var(--orb-look-x,var(--orb-eye-x,0px)),var(--orb-look-y,var(--orb-eye-y,0px))) scale(var(--orb-eye-sx,1),var(--orb-eye-sy,1))}
[data-eyes=left]{--orb-look-x:-8px;--orb-look-y:0px}[data-eyes=right]{--orb-look-x:8px;--orb-look-y:0px}
[data-eyes=up]{--orb-look-x:0px;--orb-look-y:-5.5px}[data-eyes=down]{--orb-look-x:0px;--orb-look-y:5.5px}
[data-eyes=blink]{--orb-eye-sy:.035}
[data-eyes=blink] .orb-eye-left,[data-eyes=blink] .orb-eye-right{transition-duration:55ms}
.orb-canvas .orb-mouth{mix-blend-mode:screen;transition:transform 180ms ease-in-out}
[data-mouth=tiny-open]{--orb-mouth-x:1.02;--orb-mouth-y:1.2}
[data-mouth=happy]{--orb-mouth-x:1.2;--orb-mouth-y:1.2}
[data-state=searching] .orb-mouth{animation:orb-mouth-search 1.6s ease-in-out infinite}
@keyframes orb-mouth-search{0%,100%{transform:scale(.95,1.18)}50%{transform:scale(1.02,1.5)}}
[data-paused=true] .orb-mouth{animation-play-state:paused}
.orb-interactive[data-state=thinking] .orb-look,.orb-interactive[data-state=searching] .orb-look{transform:rotate(calc(var(--orb-tilt,0deg) - .35deg))}
.orb-interactive[data-state=no-results] .orb-look{transform:rotate(calc(var(--orb-tilt,0deg) + .35deg))}
.orb-interactive[data-state=attention] .orb-look{transform:rotate(calc(var(--orb-tilt,0deg) - .25deg)) scale(1.004)}

/* Local tester only: inspect masks at native source resolution without resizing production layout. */
[data-orb][data-inspect=true]{position:fixed;right:0;top:50%;left:auto;width:1536px;height:1024px;transform:translateY(-50%);z-index:65;background:#090b10}
[data-orb][data-inspect=true] .orb-frame{inset:0;width:100%;height:100%}
[data-orb][data-inspect=true] .orb-look>.orb-layers,[data-orb][data-inspect=true] .orb-look>.orb-master{inset:0;width:100%;height:100%}

[data-mouth-override=true] .orb-mouth{animation:none}
/* Hero demo: hit area matches the artwork; no layout or mask changes. */
[data-orb] .orb-activation{position:absolute;left:0;top:50%;width:100%;height:auto;aspect-ratio:3/2;transform:translateY(-50%);padding:0;margin:0;border:0;background:transparent!important;border-radius:24%;pointer-events:auto;cursor:pointer;touch-action:manipulation;z-index:2;color:transparent}
[data-orb] .orb-activation:focus-visible{outline:2px solid #80e6ff;outline-offset:-8px}
@media(min-width:1100px){[data-orb] .orb-activation{left:-12.5%;width:125%}}
.orb-energy{position:absolute;inset:0;mask-size:100% 100%;mask-repeat:no-repeat;pointer-events:none;mix-blend-mode:screen;opacity:.52;transition:opacity 240ms ease-out}
.orb-neon-tint{position:absolute;inset:0;width:100%;height:100%;max-width:none;object-fit:fill;filter:hue-rotate(65deg) saturate(1.3) brightness(1.15);opacity:0;transition:opacity 460ms ease-in-out}
[data-orb-hover=true] .orb-energy,[data-orb-focus=true] .orb-energy{opacity:.7}

[data-visual-effect=neon][data-effect-availability=energy-overlay] .orb-energy{opacity:.85}
[data-visual-effect=neon][data-effect-availability=energy-overlay] .orb-neon-tint{opacity:.85}
[data-transforming=true] .orb-energy{opacity:1}

[data-transforming=true] .orb-look{animation:orb-transform-pulse 560ms ease-in-out}
@keyframes orb-transform-pulse{0%,100%{scale:1}45%{scale:1.012}}
[data-discover=true] .orb-look{animation:orb-discovery-pulse 500ms ease-in-out}
@keyframes orb-discovery-pulse{50%{scale:1.006}}
[data-reduced=true] .orb-energy{opacity:.52}
[data-reduced=true][data-visual-effect=neon] .orb-energy{opacity:.85}
[data-orb][data-inspect=true] .orb-activation{left:0;width:100%}

[data-visual-effect=neon][data-effect-availability=energy-overlay] .orb-energy{mix-blend-mode:normal}

/* Rejected chase motion removed. Independent orbit awaits ring-free body artwork. */
.orb-canvas .orb-orbit,.orb-canvas .orb-orbit-back{animation:none;transform:none;filter:none}

/* Independent projected annulus; no dash, chase-light or image rotation. */
.orb-spatial-ring{position:absolute;inset:0;pointer-events:none}
.orb-spatial-ring svg{width:100%;height:100%;overflow:visible}
.orb-ring-start,.orb-ring-end{stop-color:#06d8ff;transition:stop-color 460ms}
[data-visual-effect=neon] .orb-ring-start{stop-color:#9562ff}
[data-visual-effect=neon] .orb-ring-end{stop-color:#26efff}
/* Original raster silhouettes remain fixed; no transform is applied to either depth layer. */
.orb-spatial-ring{mask-size:100% 100%;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;-webkit-mask-repeat:no-repeat}
[data-visual-effect=neon] .orb-ring-inlay{stroke:#ac8aff}
