:root{
 --font-text:"PingFang SC","Hiragino Sans GB","Microsoft YaHei",system-ui,sans-serif;--font-display:var(--font-text);
 --text-xs:12px;--text-sm:14px;--text-base:16px;--text-lg:20px;--text-xl:28px;--text-title:32px;
 --s1:4px;--s2:8px;--s3:12px;--s4:16px;--s5:24px;--s6:32px;--s7:48px;--s8:64px;
 --bg:#f6f7f3;--surface:#ffffff;--surface-soft:#eef2eb;--surface-hover:#e7ede5;--border:#dce3da;--text:#223831;--text-2:#5d7067;--accent:#17695f;--accent-text:#17695f;--accent-ink:#ffffff;--accent-soft:#e1eee6;--accent-line:#bed7c9;--danger:#ab4541;--danger-soft:#faeeeb;--overlay:rgb(18 37 30 / .28);
 --radius:24px;--radius-inner:16px;--full:999px;--line:1px;--icon-size:20px;--hit:44px;
 --shadow-raised:0 8px 24px rgb(22 70 54 / .06);--shadow-floating:0 16px 48px rgb(22 70 54 / .12);
 --ease:cubic-bezier(.2,0,0,1);--t-fast:140ms;--t-med:240ms;--portrait-size:280px;--panel-width:390px;--page-width:1280px;--voice-bar-width:224px;--voice-pulse:900ms;
}
:root[data-theme=dark]{color-scheme:dark;--bg:#14221e;--surface:#1b2c25;--surface-soft:#22372d;--surface-hover:#2b4237;--border:#354b3e;--text:#e6ede5;--text-2:#adbcaf;--accent:#a3d2bc;--accent-text:#a3d2bc;--accent-ink:#153c31;--accent-soft:#254739;--accent-line:#456958;--danger:#efaaa1;--danger-soft:#4b322d;--overlay:rgb(3 12 8 / .65);--shadow-raised:none;--shadow-floating:0 16px 48px rgb(0 0 0 / .2)}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--font-text);font-size:var(--text-base);line-height:1.6;-webkit-font-smoothing:antialiased}button,textarea{font:inherit}button,a,textarea{-webkit-tap-highlight-color:transparent}button{cursor:pointer;border:0;color:inherit;background:none}button:disabled{cursor:wait;opacity:.55}button,textarea{transition:background var(--t-fast) var(--ease),border-color var(--t-fast) var(--ease),color var(--t-fast) var(--ease),opacity var(--t-fast) var(--ease)}button:focus-visible,a:focus-visible,textarea:focus-visible{outline:2px solid var(--accent);outline-offset:4px}button svg,svg.icon{width:var(--icon-size);height:var(--icon-size);stroke:currentColor;stroke-width:1.7;fill:none;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}a{color:inherit}::selection{background:var(--accent-line);color:var(--text)}[hidden]{display:none!important}.sr-only,.skip-link:not(:focus){position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}.skip-link:focus{position:fixed;top:var(--s4);left:var(--s4);z-index:100;background:var(--surface);padding:var(--s4)}.icon-definitions{position:absolute;width:0;height:0;overflow:hidden}
.topbar{max-width:var(--page-width);height:96px;margin:auto;padding:0 var(--s6);display:flex;align-items:center;justify-content:space-between;gap:var(--s5)}.brand{display:flex;align-items:center;gap:var(--s3);text-decoration:none}.brand>b,.brand b{font-family:var(--font-display);font-size:var(--text-xl);letter-spacing:-.06em;line-height:1.1;font-weight:750}.brand-dot{color:var(--accent)}.brand small{display:block;font-size:var(--text-xs);letter-spacing:.12em;color:var(--text-2);margin-top:var(--s1)}.brand img{border-radius:var(--radius-inner)}.edition-switch{display:flex;gap:var(--s1);padding:var(--s1);background:var(--surface-soft);border-radius:var(--full)}.edition-switch button{min-height:var(--hit);padding:var(--s2) var(--s5);font-size:var(--text-sm);border-radius:var(--full);color:var(--text-2)}.edition-switch .selected{background:var(--surface);color:var(--text);box-shadow:0 2px 8px rgb(22 70 54 / .06);font-weight:650}.top-actions{display:flex;align-items:center;gap:var(--s2)}.icon-button{width:var(--hit);height:var(--hit);display:inline-flex;align-items:center;justify-content:center;border-radius:var(--full);color:var(--text-2)}.icon-button:hover,.quiet-button:hover{background:var(--surface-hover);color:var(--text)}.phase-dot,.tiny-dot{width:var(--s2);height:var(--s2);border-radius:var(--full);background:var(--accent);display:inline-block;flex-shrink:0}
.workspace{max-width:var(--page-width);margin:0 auto;display:grid;grid-template-columns:minmax(0,1fr) var(--panel-width);padding:0 var(--s6);gap:var(--s6);min-height:calc(100svh - 160px)}.consultation{display:flex;align-items:center;flex-direction:column;padding:var(--s5) 0 var(--s4);min-width:0}.section-top{width:100%;display:flex;align-items:center;justify-content:space-between;gap:var(--s4)}.eyebrow{font-size:var(--text-xs);font-weight:600;letter-spacing:.1em;color:var(--text-2)}.quiet-button{display:flex;align-items:center;gap:var(--s2);border-radius:var(--full);padding:var(--s2) var(--s3);min-height:var(--hit);font-size:var(--text-sm);color:var(--text-2)}.count{font-size:var(--text-xs);font-variant-numeric:tabular-nums}.portrait-stage{text-align:center;margin:var(--s6) 0 var(--s5)}.portrait-orbit{position:relative;width:calc(var(--portrait-size) + var(--s6));height:calc(var(--portrait-size) + var(--s6));display:grid;place-items:center;margin:auto}.orbit-line{position:absolute;inset:0;border:var(--line) solid var(--accent-line);border-radius:50%;opacity:.65}.portrait{height:var(--portrait-size);width:var(--portrait-size);border-radius:50%;overflow:hidden;border:var(--s2) solid var(--surface);box-shadow:var(--shadow-raised)}.portrait img{display:block;width:100%;height:100%;object-fit:cover}.presence{position:absolute;bottom:0;left:50%;transform:translateX(-50%);display:flex;align-items:center;justify-content:center;gap:var(--s1);width:var(--s8);height:var(--s6);background:var(--surface);border:var(--line) solid var(--border);border-radius:var(--full)}.presence span{width:3px;height:var(--s2);border-radius:var(--full);background:var(--accent)}.presence span:nth-child(2),.presence span:nth-child(4){height:var(--s3)}.presence span:nth-child(3){height:var(--s4)}.portrait-orbit[data-phase=listening] .orbit-line,.portrait-orbit[data-phase=speaking] .orbit-line,.portrait-orbit[data-phase=hearing] .orbit-line{animation:breathe 2.8s var(--ease) infinite}.portrait-orbit[data-phase=speaking] .presence span,.portrait-orbit[data-phase=hearing] .presence span{animation:wave .8s var(--ease) infinite alternate}.presence span:nth-child(2){animation-delay:-.2s!important}.presence span:nth-child(3){animation-delay:-.4s!important}.presence span:nth-child(4){animation-delay:-.1s!important}.presence span:nth-child(5){animation-delay:-.3s!important}.portrait-orbit[data-phase=thinking] .presence{opacity:.65}.identity h1{font-size:var(--text-xl);line-height:1.3;letter-spacing:-.03em;font-weight:650;margin:var(--s5) 0 var(--s2)}.identity p{font-size:var(--text-sm);color:var(--text-2);margin:0}.dialogue-focus{text-align:center;max-width:560px;min-height:var(--s6);margin:var(--s3) var(--s5) var(--s4)}.phase-line{display:flex;gap:var(--s2);align-items:center;justify-content:center;color:var(--accent-text);font-size:var(--text-xs)}#session-time{margin-left:var(--s2);font-variant-numeric:tabular-nums;color:var(--text-2)}.conversation-controls{text-align:center;width:100%;margin-top:auto}.primary-button{display:inline-flex;align-items:center;justify-content:center;gap:var(--s3);background:var(--accent);color:var(--accent-ink);min-height:64px;border-radius:var(--full);padding:var(--s4) var(--s6);font-weight:600;box-shadow:var(--shadow-raised)}.primary-button:hover{filter:brightness(1.06)}.button-arrow{margin-left:var(--s5)}#voice-hint,#active-hint{font-size:var(--text-xs);color:var(--text-2);margin:var(--s3) 0 0}.call-buttons{display:flex;align-items:center;justify-content:center;gap:var(--s5)}.call-control{display:flex;align-items:center;flex-direction:column;gap:var(--s2);font-size:var(--text-xs);color:var(--text-2);padding:0;min-width:var(--s8)}.call-control svg{box-sizing:content-box;padding:var(--s4);width:var(--s5);height:var(--s5);background:var(--surface-soft);border-radius:50%}.call-control:hover svg{background:var(--surface-hover)}.call-control.danger{color:var(--danger)}.call-control.danger svg{background:var(--danger-soft)}.interrupt-button{display:flex;align-items:center;gap:var(--s2);padding:var(--s4) var(--s5);background:var(--accent);color:var(--accent-ink);border-radius:var(--full);min-height:56px;font-weight:600;align-self:flex-start}.topics{width:100%;max-width:620px;margin-top:var(--s6);padding-top:var(--s5);border-top:var(--line) solid var(--border)}.topics-heading{display:flex;justify-content:space-between;font-size:var(--text-xs);color:var(--text-2);gap:var(--s4);margin-bottom:var(--s3)}#topic-list{display:flex;flex-wrap:wrap;gap:var(--s2)}.topic{border:var(--line) solid var(--border);border-radius:var(--full);padding:var(--s2) var(--s4);min-height:var(--hit);display:flex;align-items:center;gap:var(--s3);font-size:var(--text-sm);background:transparent;flex:1;justify-content:space-between;white-space:nowrap}.topic:hover{background:var(--surface);border-color:var(--accent-line)}.topic svg{width:var(--s4);height:var(--s4)}.boundary{font-size:var(--text-xs);color:var(--text-2);display:flex;align-items:center;gap:var(--s2);margin:var(--s5) 0 0}.boundary svg{width:var(--s4);height:var(--s4);fill:none;stroke:currentColor;stroke-width:1.5;flex-shrink:0}
.conversation-panel{background:var(--surface);border:var(--line) solid var(--border);border-radius:var(--radius);display:flex;flex-direction:column;height:calc(100svh - 160px);min-height:640px;max-height:960px;overflow:hidden}.panel-header{padding:var(--s5) var(--s5) var(--s4);display:flex;align-items:center;justify-content:space-between;gap:var(--s2);border-bottom:var(--line) solid var(--border)}.panel-header h2{font-size:var(--text-lg);font-weight:600;margin:var(--s1) 0 0}.panel-header>div:last-child{display:flex;gap:0}.panel-header .eyebrow{font-size:10px;letter-spacing:.16em}.messages{flex:1;min-height:0;overflow:auto;padding:var(--s5);scroll-behavior:smooth;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:var(--border) transparent}.empty-state{display:flex;flex-direction:column;align-items:flex-start;justify-content:center;height:100%;min-height:280px;padding:var(--s5) var(--s2)}.quote-mark{font-family:Georgia,serif;font-size:96px;line-height:.6;color:var(--accent-line);margin-bottom:var(--s5)}.empty-state h3{font-size:var(--text-lg);font-weight:550;margin:0 0 var(--s4);letter-spacing:-.02em}.empty-state p{font-size:var(--text-sm);line-height:2;color:var(--text-2);margin:0}.empty-rule{width:var(--s6);height:var(--line);background:var(--accent-line);margin:var(--s5) 0 var(--s3)}.empty-state>span{font-size:var(--text-xs);color:var(--text-2)}.message{margin-bottom:var(--s5);animation:arrive var(--t-med) var(--ease) both}.message .message-label{display:flex;gap:var(--s2);align-items:center;font-size:var(--text-xs);color:var(--text-2);margin-bottom:var(--s2)}.message-label img{height:var(--s5);width:var(--s5);border-radius:50%;object-fit:cover}.message p{font-size:var(--text-sm);line-height:1.9;margin:0;white-space:pre-wrap;overflow-wrap:anywhere}.message.user{margin-left:var(--s6)}.message.user .message-label{justify-content:flex-end}.message.user p{background:var(--accent-soft);border-radius:var(--radius-inner);padding:var(--s3) var(--s4)}.message.assistant{padding-right:var(--s2)}.message.interrupted .message-label:after{content:"已停止";color:var(--text-2);font-size:var(--text-xs)}.thinking-message{font-size:var(--text-sm);color:var(--text-2);padding:var(--s2) 0}.composer{border:var(--line) solid var(--border);border-radius:var(--radius-inner);padding:var(--s3);margin:0 var(--s4);background:var(--bg)}.composer:focus-within{border-color:var(--accent-line)}.composer textarea{border:0;resize:none;background:transparent;display:block;width:100%;color:var(--text);font-size:var(--text-sm);line-height:1.7;min-height:var(--s8);max-height:192px;padding:var(--s1);outline-offset:0}.composer textarea::placeholder{color:var(--text-2)}.composer-bottom{display:flex;align-items:center;justify-content:space-between;gap:var(--s2)}.composer-bottom>span{font-size:10px;color:var(--text-2)}.send-button{display:flex;align-items:center;justify-content:center;min-width:var(--hit);height:var(--hit);border-radius:50%;background:var(--accent);color:var(--accent-ink)}.panel-footer{padding:var(--s3) var(--s5);display:flex;align-items:center;justify-content:center;gap:var(--s2);color:var(--text-2);font-size:10px}.tiny-dot{height:6px;width:6px;background:var(--accent-line)}.feedback{padding:var(--s3) var(--s4);margin:0 var(--s4) var(--s3);background:var(--danger-soft);color:var(--danger);border-radius:var(--radius-inner);font-size:var(--text-xs)}.site-footer{max-width:var(--page-width);margin:auto;padding:var(--s5) var(--s6);display:flex;justify-content:space-between;gap:var(--s4);font-size:10px;color:var(--text-2)}.mobile-only{display:none}
dialog{padding:var(--s6);max-width:560px;width:calc(100% - var(--s6));max-height:90svh;border:var(--line) solid var(--border);border-radius:var(--radius);background:var(--surface);color:var(--text);box-shadow:var(--shadow-floating)}dialog::backdrop{background:var(--overlay)}.dialog-title{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--s4)}.dialog-title h2{font-size:var(--text-xl);line-height:1.4;margin:var(--s2) 0 var(--s5)}.settings-body h3{font-size:var(--text-base);font-weight:650;margin:var(--s5) 0 var(--s2)}.settings-body p{font-size:var(--text-sm);color:var(--text-2);margin:0;line-height:1.9}.dialog-done{margin-top:var(--s6);width:100%;min-height:56px}.toast{position:fixed;bottom:var(--s6);left:50%;transform:translateX(-50%);max-width:calc(100% - var(--s6));width:max-content;background:var(--text);color:var(--surface);padding:var(--s3) var(--s5);border-radius:var(--full);z-index:20;box-shadow:var(--shadow-floating);font-size:var(--text-sm)}
@keyframes breathe{0%,100%{transform:scale(1);opacity:.6}50%{transform:scale(1.04);opacity:1}}@keyframes wave{from{transform:scaleY(.5)}to{transform:scaleY(1.3)}}@keyframes arrive{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
@media(min-width:1000px) and (max-height:920px){:root{--portrait-size:224px}.portrait-stage{margin:var(--s4) 0}.dialogue-focus{min-height:var(--s6);margin-top:var(--s1)}.identity h1{margin-top:var(--s4);font-size:24px}.topics{margin-top:var(--s5);padding-top:var(--s4)}.conversation-panel{min-height:600px}.consultation{padding-top:var(--s4)}.boundary{margin-top:var(--s4)}}
@media(max-width:1000px){:root{--panel-width:340px;--portrait-size:224px}.topbar,.workspace{padding-left:var(--s5);padding-right:var(--s5)}.workspace{gap:var(--s5)}.topbar{gap:var(--s3)}.edition-switch button{padding-left:var(--s4);padding-right:var(--s4)}.topics-heading>span:last-child{display:none}#topic-list{gap:var(--s2)}.topic{flex:auto}.dialogue-focus{margin-left:var(--s3);margin-right:var(--s3)}.call-buttons{gap:var(--s3)}.interrupt-button{padding-left:var(--s4);padding-right:var(--s4)}}
@media(max-width:760px){:root{--portrait-size:216px}.topbar{height:auto;min-height:96px;padding:var(--s4);display:grid;grid-template-columns:1fr auto;gap:var(--s3)}.brand b{font-size:24px}.brand img{width:var(--s6);height:var(--s6)}.brand small{font-size:10px}.top-actions{gap:0}.top-actions .icon-button{width:var(--s6);min-width:var(--s6)}.edition-switch{grid-column:1/-1;grid-row:2;justify-self:center}.edition-switch button{padding:var(--s2) var(--s6);min-height:40px}.workspace{display:block;min-height:0;padding:0 var(--s4)}.consultation{min-height:calc(100svh - 176px);padding-top:0}.section-top{gap:var(--s2)}.section-top>.eyebrow{font-size:10px;letter-spacing:.04em}.quiet-button{font-size:var(--text-xs);padding-right:0}.portrait-stage{margin:var(--s3) 0 var(--s4)}.identity h1{font-size:24px;margin-top:var(--s4)}.identity p{font-size:var(--text-xs)}.dialogue-focus{min-height:var(--s6);margin:var(--s2) 0 var(--s4)}.primary-button{min-height:56px;padding:var(--s4) var(--s5)}.conversation-controls{margin-top:var(--s2)}.topics{margin-top:var(--s5);padding-top:var(--s4)}.topic{font-size:var(--text-xs);padding:var(--s2) var(--s3);min-height:var(--hit);flex:1;gap:var(--s2)}.topic svg{width:var(--s3);height:var(--s3)}.boundary{font-size:10px;margin-top:var(--s4);align-items:flex-start}.site-footer{padding:var(--s4);justify-content:center}.site-footer>span:last-child{display:none}.conversation-panel{display:none;position:fixed;inset:auto 0 0;height:85svh;max-height:85svh;min-height:0;z-index:12;border-radius:var(--radius) var(--radius) 0 0;box-shadow:var(--shadow-floating);padding-bottom:env(safe-area-inset-bottom)}body.panel-open .conversation-panel{display:flex}body.panel-open:before{content:"";position:fixed;inset:0;background:var(--overlay);z-index:11}.mobile-only{display:inline-flex}.panel-header{padding:var(--s4) var(--s5)}.panel-header h2{font-size:var(--text-base)}.empty-state{min-height:0}.messages{padding:var(--s5)}.call-buttons{gap:var(--s4)}.interrupt-button{font-size:var(--text-sm);min-height:56px}.call-control svg{padding:var(--s4)}#active-hint{max-width:300px;margin:var(--s3) auto 0;font-size:10px}dialog{padding:var(--s5)}.dialog-title h2{font-size:24px}.toast{font-size:var(--text-xs);border-radius:var(--radius-inner);bottom:var(--s5)}}
@media(max-width:380px){:root{--portrait-size:192px}.topbar{gap:var(--s2)}.brand{gap:var(--s2)}.brand small{letter-spacing:0}.topic{padding:var(--s2);gap:var(--s1)}.call-buttons{gap:var(--s3)}.topics-heading{font-size:10px}.section-top>.eyebrow{max-width:160px}.dialogue-focus{min-height:var(--s6)}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
.text-entry{align-items:center;justify-content:center;gap:var(--s2);min-height:var(--hit);font-size:var(--text-xs);color:var(--accent-text);margin-top:var(--s1)}
.thinking-indicator{font-size:var(--text-sm);color:var(--text-2);padding:var(--s2) 0}
@media(min-width:1000px) and (max-height:1100px){:root{--portrait-size:200px}.consultation{padding-top:var(--s2)}.portrait-stage{margin:var(--s3) 0}.identity h1{font-size:24px;margin-top:var(--s3)}.dialogue-focus{min-height:var(--s6);margin-top:var(--s1);margin-bottom:var(--s3)}.conversation-controls .primary-button{min-height:56px}.topics{margin-top:var(--s4);padding-top:var(--s3)}.boundary{margin-top:var(--s3)}}
.message{animation:none}
.reply-voice{display:flex;align-items:center;gap:var(--s3);width:var(--voice-bar-width);max-width:100%;min-height:var(--hit);margin-top:var(--s3);padding:var(--s3) var(--s4);border:var(--line) solid var(--accent-line);border-radius:var(--radius-inner);background:var(--accent-soft);color:var(--accent-text);font-size:var(--text-sm);text-align:left}
.reply-voice:hover:not(:disabled){background:var(--surface-hover);border-color:var(--accent-text)}
.reply-voice[aria-pressed=true]{border-color:var(--accent-text)}
.reply-voice:disabled{cursor:default}
.voice-label{flex:1}.voice-action{font-size:var(--text-xs)}
.reply-voice[data-playback=speaking] .voice-glyph{animation:voice-pulse var(--voice-pulse) var(--ease) infinite alternate}
@keyframes voice-pulse{from{opacity:.4}to{opacity:1}}
.call-control[data-mic=open]{color:var(--accent-text)}
.call-control[data-mic=open] svg{background:var(--accent-soft);box-shadow:inset 0 0 0 var(--line) var(--accent-text)}
.call-control[data-mic=closed]{color:var(--danger);font-weight:600}
.call-control[data-mic=closed] svg{background:var(--danger-soft);box-shadow:inset 0 0 0 var(--line) var(--danger)}
.call-control[data-mic=closed]:disabled{opacity:1;cursor:default}
.portrait-orbit[data-phase=muted] .presence span{height:var(--s1);background:var(--text-2)}

@media(max-width:760px){body.panel-open{overflow:hidden}}

#saved-sessions{font:inherit;font-size:13px;color:var(--text);background:var(--surface);margin:0 var(--s5) var(--s3);padding:10px;border:1px solid var(--border);border-radius:8px;max-width:calc(100% - 48px)}#account-label{font-size:12px;color:var(--text-2)}@media(max-width:760px){#account-label{display:none}#logout{font-size:12px;min-height:40px}}
