:root{font-family:system-ui,-apple-system,Segoe UI,Roboto,PingFang SC,Hiragino Kaku Gothic ProN,Yu Gothic,Noto Sans CJK,Apple SD Gothic Neo,sans-serif}body[data-theme=dark]{--bg: #0f1115;--panel: #181b22;--panel-2: #20242e;--text: #e6e8ec;--muted: #8b93a3;--accent: #5b8cff;--accent-2: #7aa2ff;--warn: #f0a020;--error: #ff6b6b;--ok: #3ecf8e;--border: #20242e;--border-strong: #2e3440;--border-subtle: #262b36;--border-dropzone: #333a47;--overlay-bg: rgba(24, 27, 34, .8);--body-grad-start: #1a2030;--user-bubble-text: #ffffff;--preview-bg: #000000;--dl-bg: rgba(62, 207, 142, .14);--dl-bg-hover: rgba(62, 207, 142, .24);--dl-border: rgba(62, 207, 142, .4);--chip-bg: rgba(91, 140, 255, .12);--chip-bg-hover: rgba(91, 140, 255, .22);--chip-border: rgba(91, 140, 255, .35);--scrollbar-thumb-1: rgba(91, 140, 255, .35);--scrollbar-thumb-2: rgba(91, 140, 255, .55);--scrollbar-thumb-hover-1: rgba(122, 162, 255, .6);--scrollbar-thumb-hover-2: rgba(122, 162, 255, .85);--scrollbar-track: rgba(123, 162, 255, .3);--ok-glow: rgba(62, 207, 142, .15);--card-shadow: 0 8px 24px rgba(0, 0, 0, .4);--app-shadow: 0 24px 70px rgba(0, 0, 0, .55);--accent-glow: rgba(91, 140, 255, .3)}body[data-theme=light]{--bg: #fafafa;--panel: #ffffff;--panel-2: #f1f3f5;--text: #1a1d23;--muted: #6b7280;--accent: #3b6cff;--accent-2: #5b8cff;--warn: #d97706;--error: #dc2626;--ok: #16a34a;--border: #e5e7eb;--border-strong: #d1d5db;--border-subtle: #eef0f3;--border-dropzone: #cbd2dc;--overlay-bg: rgba(255, 255, 255, .82);--body-grad-start: #eef2ff;--user-bubble-text: #ffffff;--preview-bg: #000000;--dl-bg: rgba(22, 163, 74, .12);--dl-bg-hover: rgba(22, 163, 74, .2);--dl-border: rgba(22, 163, 74, .5);--chip-bg: rgba(59, 108, 255, .1);--chip-bg-hover: rgba(59, 108, 255, .2);--chip-border: rgba(59, 108, 255, .4);--scrollbar-thumb-1: rgba(59, 108, 255, .3);--scrollbar-thumb-2: rgba(59, 108, 255, .5);--scrollbar-thumb-hover-1: rgba(59, 108, 255, .55);--scrollbar-thumb-hover-2: rgba(59, 108, 255, .8);--scrollbar-track: rgba(59, 108, 255, .25);--ok-glow: rgba(22, 163, 74, .18);--card-shadow: 0 8px 24px rgba(15, 23, 42, .12);--app-shadow: 0 24px 70px rgba(15, 23, 42, .16);--accent-glow: rgba(59, 108, 255, .3)}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:radial-gradient(1200px 600px at 50% -10%,var(--body-grad-start) 0%,var(--bg) 55%);color:var(--text);transition:background-color .15s ease,color .15s ease}.chat-app{max-width:860px;height:calc(100vh - 40px);margin:20px auto;display:flex;flex-direction:column;background:var(--panel);border:1px solid var(--border-strong);border-radius:18px;overflow:hidden;box-shadow:var(--app-shadow);transition:background-color .15s ease,border-color .15s ease}.chat-header{display:flex;align-items:center;gap:12px;padding:14px 18px;border-bottom:1px solid var(--border);background:var(--overlay-bg);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.chat-id{flex:1;min-width:0}.chat-name{font-weight:700;font-size:16px;display:flex;align-items:center;gap:8px}.chat-role{color:var(--muted);font-size:12px;margin-top:2px}.dot{width:8px;height:8px;border-radius:50%;display:inline-block}.dot.online{background:var(--ok);box-shadow:0 0 0 3px var(--ok-glow)}.dot.busy{background:var(--warn);animation:pulse 1s infinite}@keyframes pulse{50%{opacity:.3}}.header-actions{display:flex;align-items:center;gap:8px}.header-btn{background:var(--panel-2);color:var(--text);border:1px solid var(--border-strong);border-radius:999px;padding:6px 12px;cursor:pointer;font-size:13px;display:inline-flex;align-items:center;gap:6px;line-height:1;text-decoration:none}.header-btn:hover{border-color:var(--accent)}.header-btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.header-btn.download-desktop{background:var(--accent);color:#fff;border-color:var(--accent);font-weight:600;transition:filter .15s ease,box-shadow .15s ease}.header-btn.download-desktop:hover{filter:brightness(1.08);box-shadow:0 4px 14px var(--accent-glow)}.new-session{background:var(--panel-2);color:var(--text);border:1px solid var(--border-strong);border-radius:999px;padding:6px 14px;cursor:pointer;font-size:13px;transition:background-color .15s ease,color .15s ease,border-color .15s ease}.new-session:hover{border-color:var(--accent)}.locale-switcher{position:relative}.locale-switcher-list{position:absolute;top:calc(100% + 6px);right:0;background:var(--panel);border:1px solid var(--border-strong);border-radius:12px;padding:6px;min-width:140px;box-shadow:0 8px 24px #0003;z-index:20}.locale-switcher-item{display:block;width:100%;text-align:left;background:transparent;border:none;color:var(--text);padding:8px 10px;border-radius:8px;font-size:13px;cursor:pointer}.locale-switcher-item:hover{background:var(--panel-2)}.locale-switcher-item.active{background:var(--chip-bg);color:var(--accent)}.avatar{flex:none;width:40px;height:40px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:20px}.avatar.sm{width:30px;height:30px;font-size:15px}.avatar.bot{background:linear-gradient(135deg,var(--accent),#8b5bff);color:#fff}.avatar.logo{background:transparent;object-fit:cover;border:none;border-radius:0}.avatar.me{background:var(--panel-2);color:var(--muted);font-size:12px;border:1px solid var(--border-strong)}.messages{flex:1;overflow-y:auto;padding:20px 18px;display:flex;flex-direction:column;gap:14px;scrollbar-width:thin;scrollbar-color:var(--scrollbar-thumb-1) transparent;scroll-behavior:smooth}.messages::-webkit-scrollbar{width:8px}.messages::-webkit-scrollbar-track{background:transparent}.messages::-webkit-scrollbar-thumb{background:linear-gradient(180deg,var(--scrollbar-thumb-1),var(--scrollbar-thumb-2));border-radius:8px;border:2px solid transparent;background-clip:padding-box;transition:background .2s}.messages::-webkit-scrollbar-thumb:hover{background:linear-gradient(180deg,var(--scrollbar-thumb-hover-1),var(--scrollbar-thumb-hover-2));background-clip:padding-box}.messages::-webkit-scrollbar-thumb:active{background:var(--accent-2);background-clip:padding-box}html{scrollbar-width:thin;scrollbar-color:var(--scrollbar-track) transparent}html::-webkit-scrollbar{width:8px;height:8px}html::-webkit-scrollbar-track{background:transparent}html::-webkit-scrollbar-thumb{background:linear-gradient(180deg,var(--scrollbar-thumb-1),var(--scrollbar-thumb-2));border-radius:8px}.row{display:flex;gap:10px;align-items:flex-end}.row.user{flex-direction:row-reverse}.row-body{max-width:78%;min-width:0}.row.user .row-body{display:flex;flex-direction:column;align-items:flex-end}.bubble{padding:11px 14px;border-radius:16px;font-size:14px;line-height:1.55;white-space:pre-wrap;word-break:break-word;transition:background-color .15s ease,color .15s ease}.bubble.assistant{background:var(--panel-2);border-bottom-left-radius:4px}.bubble.user{background:linear-gradient(135deg,var(--accent),var(--accent-2));color:var(--user-bubble-text);border-bottom-right-radius:4px}.bubble.nopad{padding:0;background:none}.bubble.typing{display:inline-flex;gap:5px;padding:14px 16px}.bubble.typing span{width:7px;height:7px;border-radius:50%;background:var(--muted);animation:blink 1.2s infinite both}.bubble.typing span:nth-child(2){animation-delay:.2s}.bubble.typing span:nth-child(3){animation-delay:.4s}@keyframes blink{0%,60%,to{opacity:.2;transform:translateY(0)}30%{opacity:1;transform:translateY(-3px)}}.result-lines{margin:8px 0;font-size:13.5px;line-height:1.7;color:var(--text)}.downloads{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0 4px}.dl{display:inline-flex;align-items:center;gap:6px;background:var(--accent);color:#fff;border:1px solid var(--accent);border-radius:9px;padding:9px 16px;font-size:14px;font-weight:600;text-decoration:none;word-break:break-all;transition:filter .15s ease,box-shadow .15s ease}.dl:hover{filter:brightness(1.08);box-shadow:0 4px 14px var(--accent-glow)}.preview{display:block;max-width:100%;max-height:320px;border-radius:10px;margin:10px 0 4px;background:var(--preview-bg)}.preview-audio{display:block;width:100%;margin:10px 0 4px}.chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}.chip{background:var(--chip-bg);color:var(--accent-2);border:1px solid var(--chip-border);border-radius:999px;padding:6px 14px;cursor:pointer;font-size:13px}.chip:hover{background:var(--chip-bg-hover)}.chip:disabled{opacity:.5;cursor:not-allowed}.card{background:var(--panel);border:1px solid var(--border-subtle);border-radius:14px;padding:14px;transition:background-color .15s ease,border-color .15s ease}.card.assistant{border-left:3px solid var(--accent)}.card.assistant.warn{border-left-color:var(--warn)}.card.assistant.error{border-left-color:var(--error)}.card.fileinfo{border:1px solid var(--accent)}.card-title{font-weight:600;margin-bottom:10px}.kv{display:grid;grid-template-columns:auto 1fr;gap:6px 16px;font-size:13.5px}.kv span:nth-child(odd){color:var(--muted);white-space:nowrap}.plan-summary{margin-bottom:8px}.steps{margin:8px 0;padding-left:20px;font-size:13px;color:var(--muted)}.steps code{color:var(--accent)}.muted{color:var(--muted);font-size:13px;margin-top:6px}button{background:var(--panel-2);color:var(--text);border:1px solid var(--border-strong);border-radius:9px;padding:8px 14px;cursor:pointer;font-size:14px;transition:background-color .15s ease,color .15s ease,border-color .15s ease}button:hover{border-color:var(--accent)}button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}button:disabled{opacity:.5;cursor:not-allowed}button.primary{background:var(--accent);border-color:var(--accent);color:var(--user-bubble-text)}.btn-row{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}.progress{height:8px;background:var(--panel);border-radius:4px;overflow:hidden;margin-top:4px;border:1px solid var(--border-subtle)}.progress-bar{height:100%;background:linear-gradient(90deg,var(--accent),var(--accent-2));transition:width .2s}.dropzone{display:block;border:2px dashed var(--border-dropzone);border-radius:14px;padding:36px 20px;text-align:center;cursor:pointer;transition:border-color .15s ease,background-color .15s ease,opacity .15s ease;background:var(--panel)}.dropzone.over{border-color:var(--accent);background:var(--panel-2)}.dropzone.disabled{opacity:.5;pointer-events:none}.dropzone-icon{font-size:34px;margin-bottom:10px}.composer{display:flex;gap:10px;padding:14px 18px;border-top:1px solid var(--border);background:var(--overlay-bg);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.composer input{flex:1;background:var(--panel);border:1px solid var(--border-strong);border-radius:999px;padding:11px 16px;color:var(--text);font-size:14px;transition:background-color .15s ease,color .15s ease,border-color .15s ease}.composer input:focus{outline:none;border-color:var(--accent)}.composer .send{border-radius:999px;padding:10px 20px}@media (max-width: 480px){.chat-app{max-width:100%;height:100vh;margin:0;border:none;border-radius:0;box-shadow:none}.chat-header{padding:10px 12px;gap:8px}.avatar{width:32px;height:32px;font-size:16px}.chat-name{font-size:14px}.chat-role{font-size:11px}.header-actions{gap:6px}.header-btn{padding:6px 8px;font-size:12px}.locale-switcher>.header-btn>span:not([aria-hidden=true]){display:none}.header-btn.download-desktop>span{display:none}.locale-switcher-list{right:0;left:auto;min-width:140px;max-width:calc(100vw - 24px)}.new-session{padding:6px 10px;font-size:12px}.messages{padding:14px 12px}.row-body{max-width:86%}.composer{padding:10px 12px}.composer input{font-size:13px;padding:10px 14px}.composer .send{padding:10px 16px;font-size:13px}}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000008c;display:flex;align-items:center;justify-content:center;padding:20px;z-index:1000}.modal-card{position:relative;background:var(--panel);color:var(--text);width:min(560px,92vw);border:1px solid var(--border-strong);border-radius:14px;padding:26px 30px;box-shadow:var(--app-shadow)}.modal-close{position:absolute;top:12px;right:14px;background:transparent;border:none;color:var(--muted);font-size:22px;line-height:1;padding:4px 8px;cursor:pointer}.modal-close:hover{color:var(--text);border-color:transparent}.modal-title{font-size:20px;font-weight:700;line-height:1.35;margin-bottom:10px}.modal-title.center{text-align:center}.modal-desc{font-size:14px;line-height:1.55;color:var(--muted);margin-bottom:24px}.modal-actions{display:flex;gap:12px;justify-content:flex-end}.modal-chip-row{display:flex;gap:14px;justify-content:center;padding:24px 0}.modal-help{border-top:1px solid var(--border);margin-top:8px;padding-top:18px;font-size:13px;line-height:1.7;color:var(--muted);white-space:pre-line}.modal-btn{border-radius:9px;padding:11px 24px;font-size:15px;font-weight:600;cursor:pointer;transition:filter .15s ease,border-color .15s ease,background-color .15s ease}.modal-btn.primary{background:var(--accent);color:#fff;border:1px solid var(--accent)}.modal-btn.primary:hover{filter:brightness(1.08)}.modal-btn.ghost{background:transparent;color:var(--text);border:1px solid var(--border-strong)}.modal-btn.ghost:hover{border-color:var(--accent)}.modal-btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}@media (max-width: 480px){.modal-card{padding:22px 20px}.modal-chip-row{flex-direction:column}}
