:root{color-scheme:dark;font-family:Microsoft YaHei,PingFang SC,system-ui,sans-serif;color:#f8f2f7;background:#100d15;font-synthesis:none}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;background:#100d15}button,input{font:inherit}button{color:inherit}.app-shell{min-height:100vh;display:grid;grid-template-columns:minmax(360px,1.18fr) minmax(340px,.82fr)}.stage{position:relative;isolation:isolate;overflow:hidden;display:flex;min-height:100vh;flex-direction:column;align-items:center;padding:36px clamp(24px,5vw,76px) 42px;background:radial-gradient(circle at 50% 38%,rgba(188,129,175,.18),transparent 28%),linear-gradient(145deg,#1c1724,#100d15 65%)}.ambient{position:absolute;z-index:-1;border-radius:999px;filter:blur(80px);opacity:.35}.ambient-one{width:380px;height:380px;top:-140px;right:-120px;background:#9a5d89}.ambient-two{width:300px;height:300px;bottom:-100px;left:-130px;background:#5f526f}.topbar{width:100%;display:flex;align-items:flex-start;justify-content:space-between}.eyebrow{margin:0 0 7px;color:#aa9aaa;font-size:11px;font-weight:700;letter-spacing:.18em}h1,h2{margin:0;font-weight:500}h1{font-family:Georgia,Songti SC,serif;font-size:clamp(32px,5vw,52px);letter-spacing:.08em}h2{font-size:23px}.badge{display:flex;align-items:center;gap:8px;border:1px solid #403746;border-radius:999px;padding:8px 12px;color:#b8adb9;font-size:12px;background:#14101980}.badge span{width:7px;height:7px;border-radius:50%;background:#766f78}.badge.online span{background:#76d3a2;box-shadow:0 0 12px #76d3a2}.avatar{position:relative;width:min(48vh,410px);margin:auto 0 10px;transition:transform .35s ease;aspect-ratio:1 / 1}.avatar img{position:relative;z-index:2;display:block;width:100%;filter:drop-shadow(0 24px 40px rgba(0,0,0,.38));animation:breathe 4.5s ease-in-out infinite;transform-origin:50% 80%}.halo{position:absolute;inset:18% 4% 1%;border-radius:50%;background:radial-gradient(circle,rgba(212,161,199,.26),transparent 67%);filter:blur(10px)}.mouth-svg{position:absolute;z-index:3;top:51%;left:50%;width:18%;margin:-9% 0 0 -9%;transform-origin:50% 80%;pointer-events:none;overflow:visible;animation:breathe 4.5s ease-in-out infinite}.avatar .halo{transition:filter .2s ease,opacity .2s ease}.avatar[data-emotion] .halo{filter:blur(10px) hue-rotate(calc((var(--emotion-hue, 280) - 280) * 1deg));opacity:calc(.7 + var(--emotion-intensity, 0) * .3)}.avatar[data-state=listening]{transform:scale(1.02) translateY(4px)}.avatar[data-state=thinking]{transform:rotate(-.8deg)}.avatar[data-state=speaking] img,.avatar[data-state=speaking] .mouth-svg{animation:speak 1.25s ease-in-out infinite}@keyframes breathe{0%,to{transform:scale(1) translateY(0)}50%{transform:scale(1.008,1.015) translateY(-3px)}}@keyframes speak{0%,to{transform:translateY(0) rotate(0)}35%{transform:translateY(-3px) rotate(.4deg)}70%{transform:translateY(1px) rotate(-.35deg)}}@keyframes vad-pulse{0%,to{box-shadow:0 10px 34px #5eae8640}50%{box-shadow:0 10px 34px #5eae8680}}.status-copy{text-align:center;min-height:62px}.status-copy p{margin:4px 0}#stateLabel{font-size:18px}#subtitle{color:#9d929f;font-size:12px}.controls{display:flex;align-items:center;justify-content:center;gap:12px;width:100%;margin-top:16px}button{border:0;cursor:pointer}button:disabled{cursor:default;opacity:.45}.primary,.secondary{border-radius:999px;padding:13px 19px;background:#2a222f;border:1px solid #4b3e50}.primary{background:#f2e8ee;color:#241b27;font-weight:700}.mic{width:118px;height:64px;border-radius:999px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;background:linear-gradient(145deg,#9a688b,#65455f);box-shadow:0 10px 34px #73456759;transition:background .3s,transform .15s}.mic.recording{background:linear-gradient(145deg,#d37b8b,#8a3e55);transform:scale(.97)}.mic.auto-mode{background:linear-gradient(145deg,#5eae86,#3d7a5e);animation:vad-pulse 2.5s ease-in-out infinite}.mic-icon{font-size:16px}#micLabel{font-size:11px}.toggle-row{display:flex;align-items:center;gap:7px;margin-top:15px;color:#9e929f;font-size:12px}.conversation{display:flex;flex-direction:column;min-height:100vh;padding:34px 34px max(24px,env(safe-area-inset-bottom));background:#17131c;border-left:1px solid #2e2733}.panel-heading{display:flex;align-items:center;justify-content:space-between;padding-bottom:24px;border-bottom:1px solid #2e2733}.panel-actions{display:flex;gap:12px}.text-button{background:transparent;color:#ae9eb0;font-size:12px;text-decoration:underline;text-underline-offset:4px}.messages{flex:1;overflow-y:auto;padding:24px 2px;scrollbar-color:#4c3d4d transparent}.message{max-width:88%;margin-bottom:22px}.message.user{margin-left:auto;text-align:right}.speaker{display:block;margin-bottom:6px;color:#988b9a;font-size:10px;letter-spacing:.08em;text-transform:uppercase}.message p{display:inline-block;margin:0;padding:13px 16px;border-radius:4px 18px 18px;background:#241e29;color:#eee5ec;line-height:1.65;font-size:14px;text-align:left}.message.user p{border-radius:18px 4px 18px 18px;background:#6e4e69}.composer{display:grid;grid-template-columns:1fr auto;gap:8px;padding-top:18px;border-top:1px solid #2e2733}.composer input{min-width:0;padding:14px 16px;border:1px solid #3a303e;border-radius:12px;outline:0;background:#201a24;color:#f8f2f7}.composer input:focus{border-color:#8e6684;box-shadow:0 0 0 3px #8e66841f}.composer button{padding:0 18px;border-radius:12px;background:#e5d4df;color:#281f2a;font-weight:700}.debug-panel{margin-top:14px;border:1px solid #332b37;border-radius:10px;background:#0e0c11}.meter-group{display:flex;align-items:center;gap:8px;padding:8px 12px 0}.meter-label{font-size:10px;color:#6b6270;min-width:28px}.meter{flex:1;height:4px;overflow:hidden;border-radius:10px;background:#221d26}.meter span{display:block;width:0;height:100%;background:#c77fa9;transition:width 80ms linear}.vad-meter span{background:#5eae86}.mouth-meter span{background:#6fb3d9}.emotion-readout{font-size:11px;color:#cdb8d6}.debug-panel pre{max-height:180px;margin:0;overflow:auto;padding:12px;color:#9fcca9;font:11px/1.55 Consolas,monospace;white-space:pre-wrap}.memory-panel{margin-top:14px;max-height:48vh;overflow:auto;border:1px solid #3a303e;border-radius:12px;padding:14px;background:#120f16}.memory-toolbar{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.memory-toolbar p,.memory-status{margin:5px 0 0;color:#9d929f;font-size:11px;line-height:1.5}.memory-actions{display:flex;gap:7px;flex-shrink:0}.memory-actions button,.memory-item button{border:1px solid #463a4b;border-radius:8px;padding:6px 9px;background:#251e29;font-size:11px}.memory-actions .danger,.memory-item .danger{color:#f0a5ae;border-color:#70434c}.memory-panel h3{margin:16px 0 8px;color:#b9adb9;font-size:12px}.memory-list{display:grid;gap:8px}.memory-item{display:grid;grid-template-columns:1fr auto;gap:10px;align-items:center;border:1px solid #2d2631;border-radius:9px;padding:10px;background:#1b161f}.memory-item p{margin:3px 0 0;color:#e9dee7;font-size:12px;line-height:1.55;overflow-wrap:anywhere}.memory-key{color:#9fcca9;font:10px/1.4 Consolas,monospace}.memory-item-actions{display:flex;gap:6px}.memory-empty{color:#776d79;font-size:12px}.login-dialog{width:min(430px,calc(100vw - 32px));border:1px solid #4d3e50;border-radius:20px;padding:0;color:#f8f2f7;background:#1b161f;box-shadow:0 30px 100px #0009}.login-dialog::backdrop{background:#09070bc7;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.login-dialog form{display:flex;flex-direction:column;gap:18px;padding:30px}.login-dialog h2{font-size:24px}.login-copy{margin:-4px 0 2px;color:#ad9fae;font-size:13px;line-height:1.7}.login-dialog label{display:grid;gap:7px;color:#b9adb9;font-size:12px}.login-dialog input{width:100%;border:1px solid #443749;border-radius:10px;padding:13px 14px;outline:0;background:#120f16;color:#fff}.login-dialog input:focus{border-color:#9a688b;box-shadow:0 0 0 3px #9a688b24}.login-dialog .primary{align-self:flex-end;min-width:96px}.login-error{min-height:18px;margin:-8px 0;color:#e89aa6;font-size:12px}@media(max-width:780px){.app-shell{grid-template-columns:1fr}.stage{min-height:72vh;padding:24px 20px 30px}.avatar{width:min(38vh,270px);margin-top:28px}.controls{flex-wrap:wrap}.conversation{min-height:56vh;padding:26px 20px;border-left:0;border-top:1px solid #2e2733}.messages{min-height:260px;max-height:52vh}}.avatar[data-face=live2d] img,.avatar[data-face=live2d] .breath,.avatar[data-face=live2d] .mouth-svg{display:none}.avatar[data-face=live2d] canvas{display:block}
