body{margin:0}a{color:#2f6b57}a:hover{color:#1f4a3c}.theme-boy{--ink:#4A3428;--blush:#FFB3A7;--tongue:#FF8A80;--acc1:#7FD1B9;--acc2:#FFC93C;--star:#FFD45C;--screen:#FFF8EE;--page:#EEF5F1;--strong:#2F6B57;--keyc:#2F7D64;--sub:#6E5F52;--line:#C9DCD2;--drop:#9AD7F0;--q:#4FB396}.theme-girl{--ink:#5B2A48;--blush:#FF9EC0;--tongue:#FF6F9C;--acc1:#A88BE8;--acc2:#FF7EB6;--star:#FFB8D6;--screen:#FFF4F8;--page:#F8EEF3;--strong:#9C2F62;--keyc:#A3336A;--sub:#785466;--line:#EBCBDA;--drop:#9AD7F0;--q:#8E72D9}.ink-f{fill:var(--ink)}.ink-s{stroke:var(--ink)}.blush{fill:var(--blush)}.tongue{fill:var(--tongue)}.acc1-f{fill:var(--acc1)}.acc1-s{stroke:var(--acc1)}.acc2-f{fill:var(--acc2)}.acc2-s{stroke:var(--acc2)}.star{fill:var(--star)}.drop{fill:var(--drop)}.qb{fill:var(--q)}.bow{fill:var(--acc2)}.blink{transform-box:fill-box;transform-origin:center;animation:blink 4.4s infinite}.talk{transform-box:fill-box;transform-origin:50% 0;animation:talk .26s ease-in-out infinite alternate}.bob{animation:bob 1.4s ease-in-out infinite}.float{animation:bob 2s ease-in-out infinite}.pop{transform-box:fill-box;transform-origin:center;animation:pop 1.2s ease-in-out infinite}.spin{transform-box:fill-box;transform-origin:center;animation:spin 1.6s ease-in-out infinite}.twinkle{transform-box:fill-box;transform-origin:center;animation:twinkle 1.6s ease-in-out infinite}.ring{animation:ring 1.2s ease-in-out infinite}.dot{animation:dots 1.2s ease-in-out infinite}@keyframes blink{0%,91%,to{transform:scaleY(1)}94%{transform:scaleY(.1)}97%{transform:scaleY(1)}}@keyframes talk{0%{transform:scaleY(.3)}to{transform:scaleY(1)}}@keyframes bob{0%,to{transform:translateY(0)}50%{transform:translateY(-12px)}}@keyframes pop{0%,to{transform:scale(1)}50%{transform:scale(1.08)}}@keyframes spin{0%,to{transform:rotate(-8deg) scale(.94)}50%{transform:rotate(8deg) scale(1.06)}}@keyframes twinkle{0%,to{transform:scale(.6);opacity:.4}50%{transform:scale(1.1);opacity:1}}@keyframes ring{0%,to{opacity:.15}50%{opacity:1}}@keyframes dots{0%,to{opacity:.25}50%{opacity:1}}html,body,#root{min-height:100%;background:#eef5f1}.app{min-height:100vh;min-height:100dvh;box-sizing:border-box;padding:32px;display:grid;place-items:center;background:var(--page);font-family:Noto Sans TC,sans-serif}.device-container{width:min(1000px,100%)}.device{aspect-ratio:900/446;box-sizing:border-box;padding:3.1111%;border-radius:clamp(24px,7vw,64px);background:#fff;box-shadow:0 24px 50px #283c3229,inset 0 0 0 3px var(--line)}.screen{position:relative;width:100%;height:100%;border-radius:clamp(16px,4vw,40px);overflow:hidden;background:var(--screen);box-shadow:inset 0 0 0 2px var(--line)}.face-stage{position:absolute;left:0;right:0;top:50%;transform:translateY(-50%);aspect-ratio:844/300;pointer-events:none}.face-stage svg{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%}.expression-layer{position:absolute;top:0;right:0;bottom:0;left:0;animation:expression-in .25s ease both}.expression-layer.outgoing{animation:expression-out .25s ease both}@keyframes expression-in{0%{opacity:0;transform:translateY(5px) scale(.985)}to{opacity:1;transform:none}}@keyframes expression-out{0%{opacity:1}to{opacity:0;transform:translateY(-5px) scale(.985)}}.voice-controls{position:absolute;right:22px;top:18px;display:flex;gap:8px;align-items:center;color:var(--sub)}.icon-button{position:relative;width:44px;height:44px;padding:11px;border-radius:50%;border:1px solid var(--line);background:var(--screen);color:inherit;cursor:pointer;display:grid;place-items:center}.icon-button svg{width:22px;height:22px;position:relative;z-index:1}.icon-button:hover{background:#fff}.icon-button:disabled{cursor:wait}.icon-button:focus-visible,.theme-toggle:focus-visible{outline:3px solid var(--acc1);outline-offset:4px}.voice-listening,.voice-thinking,.voice-speaking{color:var(--strong)}.voice-error{color:#b35459}.voice-idle .connection{opacity:.45}.muted{opacity:.5}.mic-level{position:absolute;top:4px;right:4px;bottom:4px;left:4px;background:var(--acc1);border-radius:50%;opacity:calc(var(--level)*.5);transform:scale(calc(.7 + var(--level)*.5))}.voice-connecting .connection{animation:connection-pulse 1s ease-in-out infinite}.voice-thinking .signal-outer{animation:ring .8s infinite}.voice-thinking .signal-middle{animation:ring .8s .2s infinite}.voice-speaking .connection{background:var(--acc1)}@keyframes connection-pulse{50%{opacity:.3}}.theme-toggle{position:absolute;left:22px;bottom:18px;display:flex;gap:5px;align-items:center;justify-content:center;width:44px;height:44px;background:transparent;border:0;cursor:pointer;border-radius:50%}.theme-toggle span{width:11px;height:11px;border-radius:50%;background:#7fd1b9}.theme-toggle span+span{background:#ff9ec0}.theme-boy .theme-toggle span:first-child,.theme-girl .theme-toggle span+span{outline:2px solid var(--ink);outline-offset:2px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media(max-width:600px){.app{padding:16px}.device{aspect-ratio:1.12}.voice-controls{right:12px;top:12px;gap:4px}.theme-toggle{left:12px;bottom:12px}}@media(max-height:500px)and (min-width:600px){.app{padding:16px}.device-container{width:min(780px,calc((100dvh - 32px)*900/446))}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}.access-form{box-sizing:border-box;width:min(360px,100%);padding:32px;background:var(--screen);border:2px solid var(--line);border-radius:32px;box-shadow:0 16px 40px #283c321a;display:flex;flex-direction:column;align-items:center;gap:20px;color:var(--strong)}.access-lock{width:40px;height:40px}.access-input{display:flex;gap:8px;width:100%}.access-input input{box-sizing:border-box;min-width:0;width:100%;border:1.5px solid var(--line);border-radius:24px;padding:0 16px;font:inherit;font-size:16px;color:var(--ink);background:#fff;outline-offset:3px}.access-input input:focus-visible{outline:2px solid var(--acc1)}.access-input button{flex-shrink:0;background:var(--acc1);color:var(--ink)}.access-form p{font-size:13px;color:#b35459;margin:0;text-align:center}.access-form button:disabled{opacity:.4}@media(max-width:600px),(max-width:1024px)and (pointer:coarse){.chat-app{display:block;width:100%;height:100vh;height:100dvh;min-height:0;padding:0;overflow:hidden;background:var(--screen);overscroll-behavior:none}.chat-app .device-container{width:100%;height:100%}.chat-app .device{width:100%;height:100%;aspect-ratio:auto;padding:0;border-radius:0;background:var(--screen);box-shadow:none}.chat-app .screen{border-radius:0;box-shadow:none}.chat-app .voice-controls{top:calc(env(safe-area-inset-top,0px) + 16px);right:calc(env(safe-area-inset-right,0px) + 16px);gap:8px}.chat-app .theme-toggle{bottom:calc(env(safe-area-inset-bottom,0px) + 16px);left:calc(env(safe-area-inset-left,0px) + 16px)}.chat-app .face-stage{left:env(safe-area-inset-left,0px);right:env(safe-area-inset-right,0px);max-height:calc(100% - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px) - 144px)}}
