:root{--bg:#fff;--bg-raised:#f5f7fa;--bg-input:#eef2f6;--border:#d8dee5;--text:#232a31;--text-dim:#5c6670;--warn-bg:#fdecea;--warn-text:#b3261e;--accent:#4a90d9;--accent-dark:#2e6db4;--danger:#d9634e;font-size:13px}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#1b1d1f;--bg-raised:#24272a;--bg-input:#2c3033;--border:#3a3f43;--text:#e8eaec;--text-dim:#9aa0a6;--warn-bg:#4a2c26;--warn-text:#f0b4a6}}:root[data-theme=dark]{--bg:#1b1d1f;--bg-raised:#24272a;--bg-input:#2c3033;--border:#3a3f43;--text:#e8eaec;--text-dim:#9aa0a6;--warn-bg:#4a2c26;--warn-text:#f0b4a6}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);height:100vh;margin:0;font-family:-apple-system,Segoe UI,Roboto,sans-serif;overflow:hidden}#app{flex-direction:column;height:100vh;display:flex}.hidden{display:none!important}#topbar{flex:none;justify-content:space-between;align-items:center;padding:8px 46px 8px 12px;display:flex}.brand{align-items:center;gap:7px;font-weight:600;display:flex}.brand img{border-radius:5px}.topbar-controls{align-items:center;gap:2px;display:flex}.btn{background:var(--bg-input);color:var(--text);border:1px solid var(--border);cursor:pointer;border-radius:8px;padding:5px 10px;font-size:12px}.btn:hover{border-color:var(--accent)}.btn.primary{background:var(--accent-dark);border-color:var(--accent-dark);color:#fff}.btn.primary:hover{background:var(--accent)}.btn.danger{color:#fff;background:#7a3527;border-color:#7a3527}.btn.danger:hover{background:var(--danger);border-color:var(--danger)}.btn:disabled{opacity:.5;cursor:default}.icon-btn{color:var(--text-dim);cursor:pointer;background:0 0;border:none;border-radius:6px;padding:4px 7px;font-size:15px}.icon-btn:hover{color:var(--text);background:var(--bg-input)}.icon-btn.active{color:var(--accent);background:#4a90d926}.apply-all-row{border:1px dashed var(--accent-dark);background:#4a90d90f;border-radius:10px;flex-wrap:wrap;align-items:center;gap:6px;margin-top:8px;padding:8px;display:flex}#settings-panel{border-bottom:1px solid var(--border);background:var(--bg-raised);flex-direction:column;flex:0 auto;gap:6px;max-height:65vh;padding:10px 12px;display:flex;overflow-y:auto}#settings-panel label{color:var(--text-dim);font-size:11px}#settings-panel input{background:var(--bg-input);border:1px solid var(--border);color:var(--text);border-radius:8px;width:100%;padding:6px 8px;font-size:12px}.settings-actions{align-items:center;gap:8px;margin-top:4px;display:flex}#settings-status{color:var(--text-dim);font-size:11px}#settings-status.ok{color:var(--accent)}#settings-status.err{color:var(--danger)}.hint{color:var(--text-dim);margin:4px 0 0;font-size:11px}.hint code{background:var(--bg-input);border-radius:4px;padding:1px 4px}#conn-dot{background:var(--text-dim);border-radius:50%;width:8px;height:8px;margin-left:2px;display:inline-block}#conn-dot.ok{background:#4caf7d;box-shadow:0 0 4px #4caf7d}#conn-dot.err{background:var(--danger);box-shadow:0 0 4px var(--danger)}#conn-dot.unknown{background:var(--text-dim)}.tabs{gap:4px;margin-bottom:10px;display:flex}.tab{color:var(--text-dim);cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;padding:4px 10px;font-size:12px}.tab:hover{color:var(--text)}.tab.active{color:var(--accent);border-bottom-color:var(--accent)}.tab-body{flex-direction:column;gap:6px;display:flex}.profile-cards{gap:6px;margin-bottom:6px;display:flex}.profile-card{background:var(--bg-input);border:1px solid var(--border);cursor:pointer;text-align:left;color:var(--text);border-radius:8px;flex-direction:column;flex:1;gap:2px;padding:8px;display:flex}.profile-card span{color:var(--text-dim);font-size:10px}.profile-card:hover{border-color:var(--accent)}.profile-card.active{border-color:var(--accent);background:#4a90d91f}.profile-card.active strong{color:var(--accent)}#tab-about-body h3{color:var(--accent);margin:10px 0 2px;font-size:12px}#tab-about-body ol{margin:4px 0;padding-left:18px;line-height:1.5}#tab-about-body li{margin-bottom:4px}#tab-about-body p{margin:4px 0;line-height:1.5}.ip-notice{color:var(--text-dim);border-top:1px solid var(--border);margin-top:10px;padding-top:8px;font-size:11px}#status-banner{background:var(--warn-bg);color:var(--warn-text);border-bottom:1px solid var(--border);flex:none;padding:8px 12px;font-size:12px}#messages{flex-direction:column;flex:auto;gap:14px;padding:12px;display:flex;overflow-y:auto}.msg{max-width:100%}.msg .bubble{word-wrap:break-word;font-size:13px;line-height:1.5}.msg.user .bubble{background:var(--accent-dark);color:#fff;white-space:pre-wrap;float:right;border-radius:14px 14px 4px;width:fit-content;margin-left:32px;padding:8px 12px}.msg.user:after{content:"";clear:both;display:block}.msg.user .role{display:none}.msg.assistant .bubble{padding:0 2px}.msg.assistant .role{color:var(--text-dim);text-transform:uppercase;letter-spacing:.5px;align-items:center;gap:5px;margin-bottom:4px;font-size:10px;display:flex}.msg.assistant .role:before{content:"";background:linear-gradient(135deg, var(--accent-dark), var(--accent));border-radius:3px;width:12px;height:12px;display:inline-block}.msg.error .bubble{background:var(--warn-bg);color:var(--warn-text);border-radius:10px;padding:8px 12px}.msg .bubble pre{background:var(--bg-input);border:1px solid var(--border);white-space:pre;border-radius:8px;padding:8px 10px;font-size:12px;overflow-x:auto}.msg .bubble code{background:var(--bg-input);border-radius:5px;padding:1px 5px;font-size:12px}.msg .bubble pre code{background:0 0;padding:0}.msg .bubble ul,.msg .bubble ol{margin:4px 0;padding-left:20px}.msg .bubble li{margin:2px 0}.msg .bubble h1,.msg .bubble h2,.msg .bubble h3{margin:8px 0 4px;font-size:14px}.msg .bubble hr{border:none;border-top:1px solid var(--border);margin:8px 0}.msg .bubble p{margin:6px 0}.msg .bubble table{border-collapse:collapse;margin:6px 0;font-size:12px}.msg .bubble th,.msg .bubble td{border:1px solid var(--border);text-align:left;padding:3px 10px}.msg .bubble th{background:var(--bg-raised);font-weight:600}.msg .msg-actions{gap:6px;margin-top:8px;display:flex}.msg .msg-actions .btn{padding:4px 10px;font-size:11px}.context-block{color:var(--text-dim);border-left:2px solid var(--accent-dark);clear:both;margin-bottom:8px;padding-left:8px;font-size:11px}.context-block summary{cursor:pointer}.context-block summary:hover{color:var(--text)}.context-block pre{white-space:pre-wrap;background:var(--bg-input);border-radius:6px;max-height:120px;margin:4px 0 0;padding:6px 8px;overflow:auto}.action-card{border:1px solid var(--border);background:var(--bg-raised);border-radius:10px;margin-top:8px;padding:8px 10px;font-size:12px}.action-head{cursor:pointer;align-items:center;gap:8px;display:flex}.action-name{font-weight:600}.action-target{color:var(--text-dim);text-overflow:ellipsis;white-space:nowrap;min-width:0;font-family:ui-monospace,Menlo,monospace;font-size:11px;overflow:hidden}.action-chev{color:var(--text-dim);margin-left:auto;transition:transform .15s}.action-card.expanded .action-chev{transform:rotate(180deg)}.status-dot{background:var(--text-dim);border-radius:50%;flex:none;width:8px;height:8px}.status-dot.pending{background:var(--text-dim)}.status-dot.working{background:var(--accent);animation:1s ease-in-out infinite pulse}.status-dot.done{background:#4caf7d;box-shadow:0 0 4px #4caf7d99}.status-dot.failed{background:var(--danger)}@keyframes pulse{50%{opacity:.3}}.action-detail{color:var(--text-dim);white-space:pre-wrap;word-break:break-word;border-top:1px solid var(--border);margin-top:6px;padding-top:6px;font-family:ui-monospace,Menlo,monospace;font-size:11px;display:none}.action-card.expanded .action-detail{display:block}.action-card .action-buttons{gap:6px;margin-top:8px;display:flex}.action-card.done .action-buttons{display:none}.action-card.done{border-color:#4caf7d80}.action-card .action-result{color:var(--accent);margin-top:6px;font-size:11px}.action-card .action-warn{color:var(--warn-text);margin-top:6px;font-size:11px;display:block}.action-card .action-warn.risky{color:var(--danger);font-weight:600}.action-card.failed{border-color:var(--danger)}.action-card.failed .action-result{color:var(--danger)}.action-card.stale{opacity:.55}.action-card .stale-note{color:var(--text-dim);margin-top:6px;font-size:11px}.action-card .undo-btn{margin-top:6px;padding:2px 10px;font-size:11px}a.cellref,.action-target.cellref{color:var(--accent);cursor:pointer;text-decoration:none}a.cellref:hover,.action-target.cellref:hover{text-decoration:underline}.action-detail table.preview{border-collapse:collapse;margin:4px 0;font-size:11px}.action-detail table.preview td{border:1px solid var(--border);text-overflow:ellipsis;white-space:nowrap;max-width:140px;padding:2px 8px;overflow:hidden}.action-detail .preview-more{color:var(--text-dim);margin:2px 0;font-size:10px}.action-detail .formula-line{background:var(--bg-input);word-break:break-all;border-radius:4px;margin:4px 0;padding:4px 8px;font-size:11px;display:block}.action-detail .raw-json summary{color:var(--text-dim);cursor:pointer;font-size:10px}.action-detail .raw-json pre{white-space:pre-wrap;word-break:break-word;margin:4px 0 0;font-size:10px}.msg .raw-json{margin:6px 0 0;font-size:11px}.msg .raw-json summary{color:var(--text-dim);cursor:pointer;font-size:10px}.msg .raw-json summary:hover{color:var(--text)}.msg .raw-json pre{white-space:pre-wrap;word-break:break-word;background:var(--bg-input);border:1px solid var(--border);border-radius:6px;max-height:160px;margin:4px 0;padding:6px 8px;font-size:10px;overflow:auto}.processing{color:var(--accent-dark);align-items:center;gap:8px;font-size:12.5px;display:flex}.spinner{border:2px solid var(--accent);border-top-color:#0000;border-radius:50%;width:12px;height:12px;animation:.8s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.typing{color:var(--text-dim)}.stopped-note{color:var(--text-dim);margin-top:6px;font-size:11px}.bubble.streaming:after{content:"▍";color:var(--accent);animation:.9s step-end infinite caret}@keyframes caret{50%{opacity:0}}#connect-card{border:1px dashed var(--accent-dark);background:#4a90d914;border-radius:12px;margin:4px 0 14px;padding:12px}.restore-card{border:1px solid var(--accent-dark);background:var(--bg-raised);border-radius:12px;margin:4px 0 14px;padding:12px}.restore-card .msg-actions{margin-top:10px}.connect-label{color:var(--text-dim);margin-bottom:8px;font-size:12px}.connect-buttons{flex-wrap:wrap;justify-content:center;gap:8px;display:flex}#welcome{text-align:center;max-width:340px;margin:auto;padding:24px 10px}.welcome-icon{border-radius:12px;width:48px;height:48px;margin-bottom:12px}.welcome-title{margin-bottom:18px;font-size:16px;font-weight:600}.chips{flex-direction:column;align-items:center;gap:8px;display:flex}.chip{color:var(--text);border:1px solid var(--border);cursor:pointer;background:0 0;border-radius:999px;padding:8px 16px;font-size:12.5px}.chip:hover{border-color:var(--accent);color:var(--accent)}.plan-block{border:1px solid var(--border);color:var(--text-dim);background:var(--bg-raised);border-radius:10px;margin:0 12px 6px 2px;padding:6px 10px;font-size:12px}.plan-block summary{cursor:pointer;justify-content:space-between;align-items:center;list-style:none;display:flex}.plan-block summary::-webkit-details-marker{display:none}.plan-block summary:after{content:"⌄";transition:transform .15s}.plan-block[open] summary:after{transform:rotate(180deg)}.plan-block summary:hover{color:var(--text)}.plan-block div{border-top:1px solid var(--border);white-space:pre-wrap;margin-top:6px;padding-top:6px}.plan-block.streaming-plan{border-color:var(--accent-dark)}.plan-block.streaming-plan summary{color:var(--accent)}#composer{flex:none;padding:8px 12px 12px}#composer-box{background:var(--bg-input);border:1px solid var(--border);border-radius:14px;flex-direction:column;gap:6px;padding:10px 10px 6px;transition:border-color .15s;display:flex}#composer-box:focus-within{border-color:var(--accent)}#prompt-input{resize:none;width:100%;color:var(--text);background:0 0;border:none;outline:none;max-height:130px;padding:2px 4px;font-family:inherit;font-size:13.5px;line-height:1.45;overflow-y:auto}#prompt-input::placeholder{color:var(--text-dim)}.composer-actions{align-items:center;gap:6px;display:flex}#live-selection{color:var(--text-dim);white-space:nowrap;text-overflow:ellipsis;flex:auto;min-width:0;font-size:11px;overflow:hidden}#model-select{color:var(--text-dim);cursor:pointer;background:0 0;border:none;max-width:130px;padding:2px;font-size:11.5px}#model-select:hover{color:var(--text)}#model-select option{background:var(--bg-input);color:var(--text)}.send-btn{background:var(--accent-dark);color:#fff;cursor:pointer;border:none;border-radius:50%;flex:none;justify-content:center;align-items:center;width:30px;height:30px;font-size:14px;display:flex}.send-btn:hover{background:var(--accent)}.send-btn:disabled{opacity:.5;cursor:default}.send-btn.stop{background:var(--danger)}#context-chip{background:var(--bg-raised);border:1px solid var(--accent-dark);color:var(--text-dim);border-radius:8px;justify-content:space-between;align-items:center;gap:6px;padding:4px 8px;font-size:11px;display:flex}#signin-panel,#service-panel{z-index:40;background:var(--bg);justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.signin-card{text-align:center;flex-direction:column;align-items:center;gap:10px;max-width:260px;padding:24px;display:flex}.signin-title{font-size:18px;font-weight:600}.signin-card .btn{padding:8px 18px}.signin-error{color:var(--danger);min-height:14px;margin:0;font-size:12px}.account-row{background:var(--bg-input);border:1px solid var(--border);border-radius:8px;justify-content:space-between;align-items:center;gap:8px;padding:8px 10px;display:flex}.account-id{flex-direction:column;min-width:0;display:flex}.account-id strong,.account-id span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.admin-page{background:var(--bg);color:var(--text)}#admin-topbar{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:10px 20px;display:flex}#admin-topbar .brand{align-items:center;gap:8px;font-weight:600;display:flex}#admin-topbar .topbar-controls{align-items:center;gap:10px;display:flex}#admin-main{max-width:860px;margin:0 auto;padding:20px}#admin-signin{justify-content:center;padding-top:60px;display:flex}.admin-section{background:var(--bg-raised);border:1px solid var(--border);border-radius:10px;margin-bottom:16px;padding:16px}.admin-section h2{margin:0 0 6px;font-size:15px}.admin-grid{grid-template-columns:1fr 1fr;gap:8px 14px;margin-top:10px;display:grid}.admin-grid label,.provider-card label{color:var(--text-dim);flex-direction:column;gap:3px;font-size:12px;display:flex}.admin-grid label.wide{grid-column:1/-1}.admin-grid input,.admin-grid select,.provider-card input,.provider-card select{background:var(--bg-input);border:1px solid var(--border);color:var(--text);border-radius:6px;padding:6px 8px;font-size:13px}.provider-card{border:1px solid var(--border);border-radius:8px;margin:10px 0;padding:12px}.provider-head{align-items:center;gap:10px;margin-bottom:8px;display:flex}.provider-head strong{flex:1}.test-status{font-size:12px}.test-status.ok{color:#2e9e5b}.test-status.err{color:var(--danger)}.models-table{border-collapse:collapse;width:100%;margin-top:10px;font-size:12px}.models-table th{text-align:left;color:var(--text-dim);padding:4px 6px;font-weight:600}.models-table td{padding:3px 6px}.models-table input[type=text],.models-table input[type=number]{box-sizing:border-box;width:100%}.admin-actions{align-items:center;gap:12px;margin:14px 0 30px;display:flex}#admin-status.ok{color:#2e9e5b}#admin-status.err{color:var(--danger)}
