:root{font-family:Inter,"PingFang SC","Microsoft YaHei",sans-serif;color:#242424;background:#f7f8fc;line-height:1.6;--blue:#2764dc;--ease:cubic-bezier(.2,.8,.2,1)}
*{box-sizing:border-box}body{margin:0;min-height:100vh;background:radial-gradient(circle at 50% -10%,#fff 0,#f7f8fc 62%);overflow:hidden}button,textarea{font:inherit}button:focus-visible,textarea:focus-visible{outline:3px solid #7ca1ef;outline-offset:3px}.shell{width:min(980px,100%);height:100vh;margin:auto;display:flex;flex-direction:column;padding:0 32px;animation:page-in .55s var(--ease) both}.topbar{height:76px;display:flex;align-items:center;justify-content:space-between;flex:0 0 auto}.brand{display:flex;align-items:center;gap:10px;font-weight:700;font-size:19px}.brand-mark{display:grid;place-items:center;width:34px;height:34px;border-radius:11px;color:#fff;background:linear-gradient(135deg,#3978f6,#2154c8);box-shadow:0 7px 18px #2764dc38;animation:mark-pop .7s cubic-bezier(.2,1.5,.4,1) .15s both}.ghost-btn{min-height:44px;border:0;background:transparent;color:#7b8190;cursor:pointer;padding:10px 13px;border-radius:12px;transition:.2s}.ghost-btn:hover{background:#e9edf6;color:#3154a0}.chat{flex:1;overflow:auto;padding:60px 18px 180px;scroll-behavior:smooth}.welcome{text-align:center;margin:10vh auto 0;max-width:660px}.hello-mark{color:var(--blue);font-size:36px;margin-bottom:13px;animation:twinkle 2.6s ease-in-out infinite}.welcome h1{font-size:clamp(30px,5vw,46px);margin:0 0 10px;animation:rise-in .55s var(--ease) .12s both}.welcome p{color:#7d8490;margin:0;animation:rise-in .55s var(--ease) .2s both}.examples{display:flex;justify-content:center;flex-wrap:wrap;gap:10px;margin-top:30px}.chip{min-height:44px;background:#fff;border:1px solid #e0e5ef;color:#5f6877;border-radius:18px;padding:10px 15px;cursor:pointer;transition:.2s;box-shadow:0 3px 12px #293b6910;animation:rise-in .5s var(--ease) .24s both}.chip:hover{border-color:#7ca1ef;color:var(--blue);transform:translateY(-2px)}.message{display:flex;margin:30px 0}.message.user{justify-content:flex-end}.bubble{background:#e6efff;color:#193d86;padding:12px 17px;border-radius:18px 18px 4px 18px;max-width:min(78%,620px);box-shadow:0 4px 15px #2764dc12}.answer{max-width:780px}.answer-label{font-size:13px;color:var(--blue);font-weight:700;margin-bottom:8px}.answer-text{font-size:16px;color:#30343b}.source{font-size:12px;color:#9ba2af;margin-top:14px}.answer-actions{display:flex;gap:8px;margin-top:14px}.speak-btn,.retry-btn{min-height:38px;border:1px solid #dce2ed;border-radius:10px;padding:7px 11px;background:#fff;color:#526079;cursor:pointer}.speak-btn:hover,.retry-btn:hover{border-color:#7ca1ef;color:var(--blue);background:#f7f9ff}.speak-btn:disabled,.retry-btn:disabled{cursor:wait;opacity:.62}.answer-status{font-size:12px;color:#aa6c25;font-weight:500;margin-left:6px}.is-failed .answer-text{color:#5f5960}.message-in{animation:message-in .38s var(--ease) both}.answer-ready .answer-text{animation:answer-ready .32s ease-out both}.composer{position:fixed;bottom:28px;left:50%;transform:translateX(-50%);width:min(820px,calc(100% - 48px));background:#fff;border:1px solid #dce2ed;border-radius:22px;box-shadow:0 14px 42px #24345c1c;padding:15px 66px 30px 20px;z-index:3}.composer:focus-within{border-color:#8eaceb;box-shadow:0 14px 42px #24345c22,0 0 0 3px #2764dc12}.composer textarea{display:block;width:100%;border:0;outline:0;resize:none;max-height:140px;background:transparent;color:#222;font-size:16px}.composer textarea::placeholder{color:#a3a9b4}.send{position:absolute;right:13px;top:13px;width:44px;height:44px;border:0;border-radius:50%;background:var(--blue);color:#fff;font-size:24px;line-height:1;cursor:pointer;box-shadow:0 5px 13px #2764dc42;transition:.2s}.send:hover{background:#1d4fb5;transform:translateY(-1px)}.send:disabled{cursor:wait;opacity:.58;transform:none}.composer-note{position:absolute;left:20px;bottom:8px;color:#a8aeb8;font-size:11px}.is-loading .composer-note{color:#5273b8}.typing{display:inline-flex;gap:4px}.typing i{width:6px;height:6px;background:var(--blue);border-radius:50%;animation:b 1s infinite}.typing i:nth-child(2){animation-delay:.15s}.typing i:nth-child(3){animation-delay:.3s}.confirm-dialog{width:min(360px,calc(100% - 32px));border:0;border-radius:16px;padding:0;box-shadow:0 20px 60px #17244338;color:#242424}.confirm-dialog::backdrop{background:#16213b66;backdrop-filter:blur(2px)}.confirm-dialog form{padding:24px}.confirm-dialog h2{font-size:18px;margin:0 0 8px}.confirm-dialog p{font-size:14px;color:#727987;margin:0 0 22px}.dialog-actions{display:flex;justify-content:flex-end;gap:8px}.dialog-btn{min-height:42px;border:0;border-radius:10px;padding:8px 15px;cursor:pointer}.dialog-btn.secondary{background:#eef1f6;color:#596274}.dialog-btn.danger{background:#c84c4c;color:#fff}.dialog-btn:hover{filter:brightness(.96)}body:before,body:after{content:"";position:fixed;z-index:-1;width:280px;height:280px;border-radius:50%;opacity:.42;pointer-events:none;animation:float-orb 13s ease-in-out infinite alternate}body:before{top:10%;left:-150px;background:#d9e7ff}body:after{right:-150px;bottom:6%;background:#e4dcff;animation-delay:-6s}@keyframes b{50%{opacity:.25;transform:translateY(-3px)}}@keyframes page-in{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}@keyframes rise-in{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}@keyframes message-in{from{opacity:0;transform:translateY(12px) scale(.985)}to{opacity:1;transform:none}}@keyframes answer-ready{from{opacity:.3;transform:translateY(4px)}to{opacity:1;transform:none}}@keyframes mark-pop{from{opacity:0;transform:scale(.6) rotate(-12deg)}to{opacity:1;transform:none}}@keyframes twinkle{0%,100%{opacity:.7;transform:scale(1) rotate(0)}50%{opacity:1;transform:scale(1.15) rotate(12deg)}}@keyframes float-orb{from{transform:translate3d(0,-10px,0) scale(1)}to{transform:translate3d(25px,22px,0) scale(1.08)}}
@media(max-width:700px){body{overflow:hidden}.shell{padding:0 16px}.topbar{height:64px}.chat{padding:32px 2px 160px}.welcome{margin-top:13vh}.welcome h1{font-size:32px}.examples{gap:8px}.chip{font-size:13px;padding:9px 12px}.composer{bottom:12px;width:calc(100% - 24px);border-radius:18px;padding-left:15px}.answer-text{font-size:15px}.message{margin:24px 0}.bubble{max-width:88%}.answer-actions{flex-wrap:wrap}.speak-btn,.retry-btn{min-height:44px}.confirm-dialog form{padding:20px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;animation:none!important;transition:none!important}}

/* 统一线性图标按钮 */
.send svg,.speak-btn svg,.retry-btn svg,.sound-toggle svg{width:20px;height:20px;display:block;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.send svg{width:21px;height:21px}.send{display:grid;place-items:center;padding:0}.speak-btn,.retry-btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-width:44px}.speak-btn{font-size:0}.speak-btn svg{width:20px;height:20px}.speak-btn:focus-visible,.retry-btn:focus-visible{outline:3px solid #7ca1ef;outline-offset:3px}
.sound-toggle{display:grid;place-items:center}.sound-toggle svg{width:22px;height:22px}.speak-btn.playing{color:#2764dc;background:#edf3ff;border-color:#9bb8f2;box-shadow:0 0 0 4px #2764dc12}.sound-wave{display:inline-flex;align-items:center;justify-content:center;gap:3px;width:22px;height:22px}.sound-wave i{display:block;width:3px;height:9px;border-radius:3px;background:currentColor;animation:sound-wave  .8s ease-in-out infinite alternate}.sound-wave i:nth-child(2){height:17px;animation-delay:-.35s}.sound-wave i:nth-child(3){height:12px;animation-delay:-.15s}@keyframes sound-wave{from{transform:scaleY(.45);opacity:.55}to{transform:scaleY(1);opacity:1}}
