.twin-face{--tf-a:var(--teal);--tf-b:var(--violet);--tf-c:var(--amber);height:var(--face-h,clamp(380px, 60vh, 860px));aspect-ratio:600/800;width:auto;max-width:100%;position:relative}.twin-face svg{width:100%;height:100%;display:block;overflow:visible}.twin-face.state-listening{--tf-a:var(--teal);--tf-b:var(--teal);--tf-c:var(--violet)}.twin-face.state-thinking{--tf-a:var(--violet);--tf-b:var(--amber);--tf-c:var(--amber)}.twin-face.state-speaking{--tf-a:var(--violet);--tf-b:var(--rose);--tf-c:var(--amber)}.tf-stop{transition:stop-color .7s var(--ease)}.tf-stop.a{stop-color:var(--tf-a)}.tf-stop.b{stop-color:var(--tf-b)}.tf-stop.c{stop-color:var(--tf-c)}.tf-breathe{animation:4.6s ease-in-out infinite alternate tf-breathe}.tf-lean{transition:transform 1s var(--ease)}.twin-face.state-listening .tf-lean{transform:translateY(-6px)scale(1.028)}.twin-face.state-speaking .tf-breathe{animation-duration:2.8s}.tf-strand{stroke-dasharray:1;stroke-dashoffset:1px;opacity:var(--o,1);animation:tf-draw 1.3s var(--ease) both}.tf-sway{transform-box:view-box;transform-origin:300px 190px;animation:tf-sway var(--d,9s) ease-in-out infinite alternate}.twin-face.state-speaking .tf-sway.rip{animation-name:tf-ripple;animation-duration:calc(var(--d,9s) * .32)}.twin-face.state-thinking .tf-sway{animation-duration:calc(var(--d,9s) * .6)}.tf-vring{opacity:0;transform-box:fill-box;transform-origin:50%}.twin-face.state-speaking .tf-vring{animation:2.4s ease-out infinite tf-voice}.twin-face.fill{--face-h:min(90vh, calc(100vh - var(--bar-h) - 1.5rem), calc((100vw - var(--fill-side,0px)) * 1.333));margin-inline:auto}.tf-halo{opacity:0;animation:tf-fade-in 1.4s var(--ease) 1.7s forwards}.tf-halo path{opacity:.11}.tf-eye{transition:transform 55ms linear}.twin-face.blinking .tf-eye{transform:scaleY(.08)}.tf-pupil{transform:translate(var(--px,0px), var(--py,0px));transition:transform .16s var(--ease)}.tf-pupil-dot{transition:transform .5s var(--ease)}.twin-face.state-listening .tf-pupil-dot{transform:scale(1.3)}.tf-pupil-fill{fill:var(--text)}.tf-glint{fill:var(--bg);opacity:.85}.tf-ring{opacity:0;transition:opacity .6s var(--ease)}.tf-ring-level{transform:scale(calc(1 + var(--lvl,0) * .06));transition:transform 90ms linear}.twin-face.state-listening .tf-ring{opacity:calc(.3 + var(--lvl,0) * .65);animation:2.2s ease-in-out infinite alternate tf-ring-pulse}.tf-thought circle{fill:var(--amber);opacity:0}.twin-face.state-thinking .tf-thought circle{animation:1.3s ease-in-out infinite tf-thought}.tf-mind-halo{fill:color-mix(in srgb, var(--amber) 40%, transparent);animation:3.4s ease-in-out infinite alternate tf-mind-pulse}.tf-mind-core{fill:var(--amber)}.tf-flare{fill:color-mix(in srgb, var(--amber) 55%, transparent);animation:tf-flare 1.1s var(--ease) both}.tf-flare.ring{fill:none;stroke:var(--amber);stroke-width:1.5px;animation-delay:.12s}@keyframes tf-breathe{0%{transform:scale(1)}to{transform:scale(1.012)}}@keyframes tf-draw{to{stroke-dashoffset:0}}@keyframes tf-ripple{0%{transform:rotate(calc(var(--dir,1) * (1.3 + var(--amp,0) * 2.4) * -1deg))}to{transform:rotate(calc(var(--dir,1) * (1.3 + var(--amp,0) * 2.4) * 1deg))}}@keyframes tf-voice{0%{opacity:calc(.18 + var(--amp,0) * .55);transform:scale(1)}to{opacity:0;transform:scale(calc(1.12 + var(--amp,0) * .2))}}@keyframes tf-sway{0%{transform:rotate(calc(var(--dir,1) * -1.3deg))}to{transform:rotate(calc(var(--dir,1) * 1.3deg))}}@keyframes tf-fade-in{to{opacity:1}}@keyframes tf-ring-pulse{0%{transform:scale(1)}to{transform:scale(1.02)}}@keyframes tf-thought{0%,to{opacity:0}45%{opacity:.95}}@keyframes tf-mind-pulse{0%{opacity:.35;transform:scale(.85)}to{opacity:.9;transform:scale(1.1)}}@keyframes tf-flare{0%{opacity:.9;transform:scale(.4)}to{opacity:0;transform:scale(4.2)}}@media (prefers-reduced-motion:reduce){.tf-strand{stroke-dashoffset:0;animation:none}.twin-face.state-speaking .tf-vring{opacity:.22;animation:none}.tf-breathe,.tf-sway,.twin-face.state-speaking .tf-sway.rip,.tf-mind-halo,.twin-face.state-listening .tf-ring,.twin-face.state-thinking .tf-thought circle{animation:none}.tf-halo{opacity:1;animation:none}.twin-face.state-thinking .tf-thought circle{opacity:.8}.tf-lean,.twin-face.state-listening .tf-lean{transform:none}}
.twin-face.ta{height:var(--face-h,100%);aspect-ratio:900/1080;width:auto;max-width:none}.ta .ta-flesh{opacity:clamp(0, calc((var(--form,0) - var(--d,0)) / .58), 1)}.ta .ta-wake{pointer-events:none;mix-blend-mode:screen;opacity:calc(var(--form,0) * (1 - var(--form,0)) * 2.6)}.ta[data-flat=true] .ta-wake,.ta[data-flat=true] .ta-flesh{display:none}.ta .ta-lines{opacity:calc(1 - var(--form,0) * .42)}.ta .ta-hatch{opacity:clamp(0, calc(1 - (var(--form,0) - .2) / .7), 1)}.ta .ta-bodylines{opacity:clamp(0, calc(1 - (var(--form,0) - .3) / .7), 1)}.ta .ta-sclera{fill:#f6f1f8}.ta .ta-lidshade{fill:none;stroke:var(--skin-sh);stroke-width:9px;stroke-linecap:round;opacity:.3}.ta .ta-ink path{fill:none;stroke:#1a1024;stroke-linecap:round}.ta .ta-ink path+path{opacity:.6}.ta .ta-pupil-dark{fill:#120b1f}.ta .ta-pupil-light,.ta .ta-glint-line{opacity:calc(1 - var(--form,0))}.ta .ta-catch{fill:#fff;opacity:.95}.ta .ta-catch.soft{opacity:.55}.ta .ta-brow{fill:none;stroke:color-mix(in srgb, var(--hair) 70%, #000);stroke-width:4.6px;stroke-linecap:round;opacity:.9}.ta.look-man .ta-brow{stroke-width:6.4px}.ta .ta-nose{fill:none;stroke:var(--skin-sh);stroke-width:7px;stroke-linecap:round;opacity:.22}.ta .ta-mouth-dark{fill:#3a1630}.ta .ta-lipshine{fill:none;stroke:#fff;stroke-width:2.2px;stroke-linecap:round;opacity:.22}.ta .ta-sheen{fill:none;stroke:var(--hair-hi);stroke-width:10px;stroke-linecap:round;opacity:.1}.ta .ta-sheen.b{stroke-width:6px;opacity:.16}.ta .ta-fold{fill:none;stroke:#000;stroke-width:9px;stroke-linecap:round;opacity:.16}.ta .ta-fold.soft{stroke-width:3px;opacity:.22}.ta .ta-trim{fill:none;stroke:var(--outfit-hi);stroke-width:4px;stroke-linecap:round;opacity:.9}.ta .ta-sleeve-fold{fill:none;stroke:#000;stroke-width:6px;stroke-linecap:round;opacity:.16}.ta .ta-thumb{fill:none;stroke:var(--skin);stroke-width:12px;stroke-linecap:round}.ta .ta-fingers{fill:none;stroke:var(--skin-sh);stroke-width:1.4px;stroke-linecap:round;opacity:.55}.ta-still .ta *{animation:none!important}.ta-still .ta .tf-strand{stroke-dashoffset:0!important}.ta-still .ta .tf-halo{opacity:1!important}@media (prefers-reduced-motion:reduce){.ta .ta-flesh{opacity:var(--form,0)}}.ta .tf-hair.front{opacity:calc(1 - var(--form,0) * .9)}.ta .ta-nose{stroke-width:10px;opacity:.3}.ta .ta-lidshade{stroke:color-mix(in srgb, var(--skin-sh) 55%, #7a4ac8);stroke-width:13px;opacity:.32}.ta .ta-brow{stroke-width:3.6px}.twin-morph{height:100%;display:flow-root}.talk-face .twin-morph{height:auto}.ta.ta-drawn .tf-strand{stroke-dashoffset:0;animation:none}.ta.ta-drawn .tf-halo{opacity:1;animation:none}.ta .ta-halo-shine{fill:none;stroke:var(--hair-hi);stroke-width:14px;stroke-linecap:round;opacity:.22;filter:blur(3px)}.ta .ta-lipshine{stroke-width:3px;opacity:.35}
