:root,html[data-theme='dark']{
  color-scheme:dark;
  --bg:#0f0f10;--side:#171717;--panel:#1e1e20;--panel2:#262628;--panel3:#2f2f33;
  --line:rgba(255,255,255,.09);--line2:rgba(255,255,255,.16);
  --text:#ececf1;--muted:#9b9ba4;--faint:#6e6e78;
  --brand:#7868f5;--brand-hover:#8577f7;--accent:#3dd3b0;--danger:#ef5d6f;--warning:#f4c565;
  --bubble:#2f2f33;--sidebar-hover:rgba(255,255,255,.06);
  --shadow:0 12px 40px rgba(0,0,0,.45);--shadow-lg:0 30px 90px rgba(0,0,0,.6);
}
html[data-theme='light']{
  color-scheme:light;
  --bg:#ffffff;--side:#f7f7f8;--panel:#ffffff;--panel2:#f0f0f2;--panel3:#e7e7ea;
  --line:rgba(0,0,0,.09);--line2:rgba(0,0,0,.16);
  --text:#1a1a1e;--muted:#5d5d66;--faint:#8e8e97;
  --brand:#5b4bd6;--brand-hover:#4f40c9;--accent:#0f9d80;--danger:#c93652;--warning:#a97c1e;
  --bubble:#f0f0f2;--sidebar-hover:rgba(0,0,0,.05);
  --shadow:0 12px 40px rgba(0,0,0,.12);--shadow-lg:0 30px 90px rgba(0,0,0,.2);
}
*{box-sizing:border-box}
[hidden]{display:none!important}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--text);font:14px/1.55 ui-sans-serif,system-ui,"Segoe UI",Roboto,"Helvetica Neue",sans-serif}
button,input,textarea,select{font:inherit;color:inherit}
button{background:none;border:0;cursor:pointer;padding:0}
a{color:var(--brand)}
svg.icon{flex:none;display:inline-block;vertical-align:middle}
kbd{padding:2px 6px;border:1px solid var(--line2);border-bottom-width:2px;border-radius:6px;background:var(--panel2);color:var(--muted);font:11px ui-monospace,monospace}
.muted{color:var(--muted)}.center{text-align:center}.sm{font-size:12px}
::selection{background:color-mix(in srgb,var(--brand) 35%,transparent)}

/* ---------- layout ---------- */
.shell{min-height:100dvh;display:grid;grid-template-columns:280px 1fr}
.sidebar{height:100dvh;display:flex;flex-direction:column;gap:8px;padding:12px;background:var(--side);border-right:1px solid var(--line);position:sticky;top:0;z-index:40}
.side-top{display:flex;align-items:center;justify-content:space-between;padding:2px 4px 8px}
.brand{display:flex;align-items:center;gap:10px;color:inherit;text-decoration:none;font-size:16px;font-weight:600}
.brand-mark{width:32px;height:32px;display:grid;place-items:center;border-radius:10px;background:var(--brand);color:#fff;font-weight:800;font-size:15px}
.brand-mark.lg{width:52px;height:52px;border-radius:16px;font-size:24px}
.env-badge{padding:2px 7px;border-radius:99px;border:1px solid color-mix(in srgb,var(--warning) 50%,transparent);color:var(--warning);font-size:9px;font-style:normal;font-weight:700;letter-spacing:.08em}
.side-bottom{margin-top:auto;display:grid;gap:6px;position:relative}

.icon-btn{width:34px;height:34px;display:inline-grid;place-items:center;border-radius:9px;color:var(--muted)}
.icon-btn:hover{background:var(--sidebar-hover);color:var(--text)}
#close-sidebar{display:none}

.search-trigger{display:flex;align-items:center;gap:9px;padding:9px 11px;border:1px solid var(--line);border-radius:10px;background:var(--panel);color:var(--muted);transition:border-color .15s}
.search-trigger:hover{border-color:var(--line2);color:var(--text)}
.search-trigger kbd{margin-left:auto}
.search-icon-slot{display:inline-flex}

.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:10px 15px;border-radius:10px;font-weight:600;transition:background .15s,transform .05s,border-color .15s}
.btn:active{transform:scale(.98)}
.btn.primary{background:var(--brand);color:#fff}
.btn.primary:hover{background:var(--brand-hover)}
.btn.secondary{background:var(--panel3)}
.btn.secondary:hover{background:var(--line)}
.btn.danger{background:var(--danger);color:#fff}
.btn.ghost{color:var(--brand)}
.btn.sm{padding:6px 10px;font-size:12px}
.btn:disabled{opacity:.5;cursor:not-allowed}
.new-chat{width:100%;margin-bottom:2px}

.caption{margin:10px 8px 2px;color:var(--faint);font-size:10px;font-weight:700;letter-spacing:.12em}
.conversation-list{flex:1;min-height:0;overflow-y:auto;display:grid;align-content:start;gap:1px;margin:0 -4px;padding:0 4px;scrollbar-width:thin}
.thread-row{position:relative;display:flex;align-items:center;border-radius:9px}
.thread-row:hover{background:var(--sidebar-hover)}
.thread{flex:1;min-width:0;display:flex;align-items:center;gap:8px;padding:9px 10px;color:var(--muted);text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:13.5px}
.thread.active,.thread-row:has(.thread.active){background:var(--sidebar-hover);color:var(--text)}
.thread-more{opacity:0;width:30px;height:30px;flex:none;display:grid;place-items:center;border-radius:7px;color:var(--muted)}
.thread-row:hover .thread-more,.thread-more[aria-expanded='true']{opacity:1}
.thread-more:hover{background:var(--panel3);color:var(--text)}
.conv-skel{height:34px;border-radius:9px;background:linear-gradient(90deg,var(--panel2) 25%,var(--panel3) 50%,var(--panel2) 75%);background-size:200% 100%;animation:shimmer 1.2s infinite}
@keyframes shimmer{to{background-position:-200% 0}}

.temp-toggle{display:flex;align-items:center;gap:9px;padding:9px 11px;border-radius:9px;color:var(--muted);font-size:13px}
.temp-toggle:hover{background:var(--sidebar-hover);color:var(--text)}
.temp-toggle[aria-pressed='true']{color:var(--warning);background:color-mix(in srgb,var(--warning) 12%,transparent)}
.credit{padding:12px;border:1px solid color-mix(in srgb,var(--accent) 30%,transparent);border-radius:12px;background:color-mix(in srgb,var(--accent) 8%,transparent);cursor:pointer}
.credit small{color:var(--muted);font-size:10px;letter-spacing:.06em;text-transform:uppercase}
.credit strong{display:block;font-size:18px;margin-top:2px}
.credit span{color:var(--muted);font-size:11px}
.profile{position:relative;display:flex;align-items:center;gap:10px;width:100%;padding:8px;border-radius:10px;text-align:left}
.profile:hover{background:var(--sidebar-hover)}
.avatar{width:32px;height:32px;flex:none;display:grid;place-items:center;border-radius:50%;background:var(--brand);color:#fff;font-size:12px;font-weight:700}
.profile-meta{flex:1;min-width:0;display:grid}
.profile-meta strong,.profile-meta small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.profile-meta small{color:var(--muted);font-size:11px}
.profile-menu{position:absolute;left:0;right:0;bottom:calc(100% + 4px);display:grid;gap:2px;padding:6px;border:1px solid var(--line);border-radius:12px;background:var(--panel);box-shadow:var(--shadow-lg);z-index:60}
.profile-menu button{display:flex;align-items:center;gap:9px;padding:9px 10px;border-radius:8px;color:var(--text);font-size:13px;text-align:left}
.profile-menu button:hover{background:var(--sidebar-hover)}
.profile-menu .danger{color:var(--danger)}

.workspace{min-width:0;height:100dvh;display:grid;grid-template-rows:auto 1fr}
.topbar{display:flex;align-items:center;gap:10px;padding:10px 16px;border-bottom:1px solid var(--line)}
.topbar-title{display:grid;line-height:1.2}
.topbar-title small{color:var(--muted);font-size:11px}
.topbar-right{margin-left:auto;display:flex;align-items:center;gap:8px}
.status{display:inline-flex;align-items:center;gap:6px;color:var(--muted);font-size:12px}
.status i{width:8px;height:8px;border-radius:50%;background:var(--accent);animation:pulse 2s infinite}
.status.error i{background:var(--danger);animation:none}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.35}}

.page{display:none;min-height:0}
.page.active{display:block}
.content-page{overflow-y:auto;padding:32px max(20px,calc((100% - 1000px)/2))}
.page-head{display:flex;justify-content:space-between;align-items:flex-end;gap:20px;margin-bottom:24px}
.page-head h1{margin:0;font-size:26px;font-weight:700}
.page-head p{margin:5px 0 0;color:var(--muted)}
.metric-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-bottom:14px}
.panel{padding:20px;border:1px solid var(--line);border-radius:16px;background:var(--panel)}
.panel>strong{display:block;margin-top:6px;font-size:26px;font-weight:700}
.panel small{color:var(--muted)}
.panel-head{display:flex;align-items:center;justify-content:space-between}
.panel h2{margin:0;font-size:15px}
.activity-list{margin-top:8px}
.activity{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:11px 0;border-bottom:1px solid var(--line)}
.activity:last-child{border:0}
.activity small{color:var(--muted);display:block}
.positive{color:var(--accent)}.negative{color:var(--danger)}
.notice{display:flex;gap:8px;align-items:center;margin-top:16px;padding:13px;border:1px solid var(--line);border-radius:12px;color:var(--muted);font-size:13px}
.package-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.package{position:relative;padding:22px;border:1px solid var(--line);border-radius:16px;background:var(--panel);transition:border-color .15s,transform .15s}
.package:hover{border-color:var(--line2);transform:translateY(-2px)}
.package.featured{border-color:var(--brand)}
.package em{position:absolute;right:14px;top:14px;color:var(--brand);font-size:10px;font-style:normal;font-weight:700;letter-spacing:.08em}
.package h2{margin:0;font-size:15px}
.package strong{display:block;margin-top:14px;font-size:26px}
.package b{display:block;margin-top:2px;color:var(--accent);font-size:16px}
.package p{color:var(--muted);min-height:40px;font-size:13px}
.package .btn{width:100%}
.table-panel{padding:0;overflow:hidden}
.table-tools{display:flex;gap:9px;padding:14px;border-bottom:1px solid var(--line)}
.field,.table-tools input,.table-tools select{width:100%;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:var(--bg);color:var(--text);outline:none;transition:border-color .15s}
.field:focus,.table-tools input:focus,.table-tools select:focus{border-color:var(--brand)}
.table-scroll{overflow:auto}
table{width:100%;border-collapse:collapse;min-width:700px}
th,td{padding:12px 15px;border-bottom:1px solid var(--line);text-align:left;font-size:13px}
th{color:var(--faint);font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.08em}
.empty-state{padding:34px;text-align:center;color:var(--muted)}

/* ---------- chat ---------- */
#page-chat.active{display:grid;grid-template-rows:1fr auto auto;overflow:hidden}
#page-chat.active.with-temp{grid-template-rows:auto 1fr auto auto}
.temp-banner{display:flex;align-items:center;gap:8px;justify-content:center;padding:8px;color:var(--warning);font-size:12px;border-bottom:1px solid color-mix(in srgb,var(--warning) 25%,transparent);background:color-mix(in srgb,var(--warning) 7%,transparent)}
.messages{overflow-y:auto;padding:28px max(16px,calc((100% - 780px)/2));display:flex;flex-direction:column;gap:26px;scroll-behavior:smooth}
.empty-chat{margin:auto;text-align:center;color:var(--muted);max-width:560px}
.empty-chat .brand-mark{margin:0 auto 18px}
.empty-chat h1{color:var(--text);font-size:24px;margin:0 0 6px}
.starter-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:24px}
.starter{padding:14px;border:1px solid var(--line);border-radius:14px;background:var(--panel);color:var(--muted);text-align:left;font-size:13px;transition:.15s}
.starter:hover{border-color:var(--line2);color:var(--text)}
.message{display:flex;gap:12px;align-items:flex-start;animation:fadeUp .25s ease}
@keyframes fadeUp{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.message .avatar{margin-top:2px}
.msg-body{min-width:0;max-width:85%;display:grid;gap:6px}
.msg-text{margin:0;white-space:pre-wrap;overflow-wrap:anywhere;font-size:15px;line-height:1.65}
.message.user{flex-direction:row-reverse}
.message.user .msg-body{max-width:75%;padding:11px 15px;border-radius:18px 18px 4px 18px;background:var(--bubble)}
.message.user .avatar{display:none}
.message.assistant .msg-body,.message.ai .msg-body{width:100%}
.message .meta{color:var(--faint);font-size:11px}
.message.error .msg-text{color:var(--danger)}
.message.streaming .msg-text::after{content:'';display:inline-block;width:9px;height:16px;margin-left:3px;vertical-align:text-bottom;background:var(--text);border-radius:2px;animation:blink 1s steps(1) infinite}
@keyframes blink{50%{opacity:0}}
.typing{display:inline-flex;gap:4px;padding:12px 0}
.typing i{width:7px;height:7px;border-radius:50%;background:var(--muted);animation:bounce 1.2s infinite}
.typing i:nth-child(2){animation-delay:.15s}.typing i:nth-child(3){animation-delay:.3s}
@keyframes bounce{0%,60%,100%{transform:none;opacity:.4}30%{transform:translateY(-5px);opacity:1}}
.msg-actions{display:flex;gap:2px;opacity:0;transition:opacity .15s}
.message:hover .msg-actions,.msg-actions.always{opacity:1}
.msg-actions button{width:30px;height:30px;display:grid;place-items:center;border-radius:8px;color:var(--muted);position:relative}
.msg-actions button:hover{background:var(--sidebar-hover);color:var(--text)}
.msg-actions button.active{color:var(--accent)}
.msg-actions button[data-tip]:hover::after{content:attr(data-tip);position:absolute;bottom:calc(100% + 6px);left:50%;translate:-50% 0;padding:5px 9px;border-radius:7px;background:var(--panel3);color:var(--text);font-size:11px;white-space:nowrap;box-shadow:var(--shadow);pointer-events:none;z-index:5}
.msg-text code{padding:2px 6px;border-radius:6px;background:var(--panel3);font:13px ui-monospace,Consolas,monospace}
.msg-text pre{position:relative;margin:8px 0;padding:38px 14px 14px;border:1px solid var(--line);border-radius:12px;background:var(--panel2);overflow:auto}
.msg-text pre code{padding:0;background:none}
.code-head{position:absolute;inset:0 0 auto;display:flex;align-items:center;justify-content:space-between;padding:6px 10px;border-bottom:1px solid var(--line);color:var(--faint);font-size:11px}
.code-copy{display:inline-flex;align-items:center;gap:5px;padding:3px 8px;border-radius:6px;color:var(--muted);font-size:11px}
.code-copy:hover{background:var(--sidebar-hover);color:var(--text)}
.shared-banner{display:flex;align-items:center;gap:10px;padding:10px 14px;border:1px solid var(--line);border-radius:12px;background:var(--panel);color:var(--muted);font-size:13px}

.composer{width:min(780px,calc(100% - 24px));margin:0 auto;display:flex;align-items:flex-end;gap:8px;padding:8px 8px 8px 16px;border:1px solid var(--line2);border-radius:26px;background:var(--panel);box-shadow:var(--shadow);transition:border-color .15s}
.composer:focus-within{border-color:var(--muted)}
.composer textarea{flex:1;min-height:24px;max-height:160px;resize:none;padding:9px 0;border:0;outline:0;background:transparent;font-size:15px}
.send,.stop{width:38px;height:38px;flex:none;display:grid;place-items:center;border-radius:50%;background:var(--text);color:var(--bg)}
.send:hover{opacity:.85}
.send:disabled{opacity:.3}
.stop{background:var(--danger);color:#fff}
.disclaimer{text-align:center;font-size:11px;color:var(--faint);margin:9px 0 12px}

/* ---------- overlays ---------- */
.backdrop{position:fixed;inset:0;background:rgba(0,0,0,.5);backdrop-filter:blur(2px);z-index:35;animation:fadeIn .15s}
@keyframes fadeIn{from{opacity:0}}
.dropdown{position:fixed;z-index:60;min-width:190px;padding:5px;border:1px solid var(--line);border-radius:12px;background:var(--panel);box-shadow:var(--shadow-lg);animation:pop .12s ease}
@keyframes pop{from{opacity:0;transform:scale(.96) translateY(-4px)}}
.dropdown button{display:flex;align-items:center;gap:10px;width:100%;padding:9px 11px;border-radius:8px;color:var(--text);font-size:13px;text-align:left}
.dropdown button:hover{background:var(--sidebar-hover)}
.dropdown button.danger{color:var(--danger)}
.dropdown .sep{height:1px;margin:5px 8px;background:var(--line)}

dialog.modal{border:1px solid var(--line);border-radius:18px;background:var(--panel);color:var(--text);padding:0;box-shadow:var(--shadow-lg);width:min(640px,94vw);max-height:86dvh;display:none;flex-direction:column;animation:pop .15s ease}
dialog.modal[open]{display:flex}
dialog.modal::backdrop{background:rgba(0,0,0,.55);backdrop-filter:blur(4px)}
dialog.modal.sm{width:min(440px,94vw)}
dialog.modal.lg{width:min(880px,94vw)}
.modal-head{display:flex;align-items:center;gap:10px;padding:14px 16px;border-bottom:1px solid var(--line)}
.modal-head h2{margin:0;font-size:16px;flex:1}
.modal-head input{flex:1;border:0;outline:0;background:transparent;font-size:15px;padding:8px 0}
.modal-body{padding:16px;overflow-y:auto}
.modal-foot{padding:10px 16px;border-top:1px solid var(--line);color:var(--faint);font-size:11px;display:flex;gap:14px;align-items:center}
.modal-actions{display:flex;justify-content:flex-end;gap:8px;padding:12px 16px;border-top:1px solid var(--line)}

#search-results{display:grid;gap:2px;min-height:120px}
.search-result{display:flex;align-items:center;gap:10px;width:100%;padding:11px 12px;border-radius:10px;text-align:left;color:var(--text)}
.search-result:hover,.search-result.selected{background:var(--sidebar-hover)}
.search-result small{color:var(--faint);margin-left:auto;flex:none}
.search-result .arch{color:var(--faint);font-size:10px;margin-left:6px}

.settings-layout{display:grid;grid-template-columns:190px 1fr;min-height:480px;overflow:hidden}
.settings-nav{display:grid;align-content:start;gap:2px;padding:12px;border-right:1px solid var(--line);overflow-y:auto}
.settings-nav button{display:flex;align-items:center;gap:9px;padding:9px 11px;border-radius:9px;color:var(--muted);font-size:13px;text-align:left}
.settings-nav button:hover{background:var(--sidebar-hover);color:var(--text)}
.settings-nav button.active{background:var(--sidebar-hover);color:var(--text);font-weight:600}
.settings-body{padding:20px;overflow-y:auto}
.settings-body h2{margin:0 0 4px;font-size:18px}
.settings-body>p.sub{margin:0 0 18px;color:var(--muted);font-size:13px}
.setting-row{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:13px 0;border-bottom:1px solid var(--line)}
.setting-row:last-of-type{border:0}
.setting-row .info{min-width:0}
.setting-row .info b{display:block;font-size:14px}
.setting-row .info small{color:var(--muted);font-size:12px}
.settings-body label{display:grid;gap:6px;margin:12px 0;font-size:13px;color:var(--muted)}
.switch{position:relative;width:40px;height:22px;flex:none;border-radius:99px;background:var(--panel3);transition:.15s;cursor:pointer}
.switch::after{content:'';position:absolute;top:3px;left:3px;width:16px;height:16px;border-radius:50%;background:#fff;transition:.15s}
.switch[aria-checked='true']{background:var(--accent)}
.switch[aria-checked='true']::after{left:21px}
.danger-zone{margin-top:22px;padding:14px;border:1px solid color-mix(in srgb,var(--danger) 35%,transparent);border-radius:12px}
.danger-zone h3{margin:0 0 4px;font-size:13px;color:var(--danger)}
.list-item{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 0;border-bottom:1px solid var(--line);font-size:13px}
.list-item small{color:var(--muted)}
.badge{display:inline-block;padding:3px 9px;border-radius:99px;font-size:10px;font-weight:700;background:var(--panel3);color:var(--muted)}
.badge.ok{color:var(--accent)}.badge.warn{color:var(--warning)}.badge.bad{color:var(--danger)}

.help-body{display:grid;gap:14px}
.help-results{display:grid;gap:8px;max-height:45dvh;overflow-y:auto}
.help-card{padding:12px 14px;border:1px solid var(--line);border-radius:12px;background:var(--panel2)}
.help-card h3{margin:0 0 5px;font-size:14px}
.help-card p{margin:0;color:var(--muted);font-size:12.5px}
.help-card .cat{display:inline-block;margin-bottom:6px;color:var(--brand);font-size:10px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}
.help-actions{display:flex;gap:8px}

.auth-card{padding:4px 16px 18px;display:grid;gap:13px}
.auth-card label{display:grid;gap:6px;font-size:12px;color:var(--muted)}
.auth-actions{display:flex;justify-content:flex-end;gap:8px}
output{min-height:20px;color:var(--danger);font-size:13px}

.toast{position:fixed;left:50%;bottom:24px;translate:-50% 0;max-width:min(420px,90vw);padding:11px 16px;border:1px solid var(--line);border-radius:12px;background:var(--panel3);box-shadow:var(--shadow-lg);font-size:13px;opacity:0;transform:translateY(10px);transition:.2s;pointer-events:none;z-index:100}
.toast.show{opacity:1;transform:none}

html[data-density='compact'] body{font-size:13px}
html[data-density='compact'] .msg-text{font-size:14px}
@media(prefers-reduced-motion:reduce){*{animation-duration:.01ms!important;transition-duration:.01ms!important}}

/* ---------- mobile ---------- */
@media(max-width:860px){
  .shell{grid-template-columns:1fr}
  .sidebar{position:fixed;inset:0 auto 0 0;width:min(300px,85vw);transform:translateX(-103%);transition:transform .22s ease;box-shadow:var(--shadow-lg)}
  .sidebar.open{transform:none}
  #close-sidebar{display:grid}
  #menu{display:grid}
  .metric-grid,.package-grid,.starter-grid{grid-template-columns:1fr}
  .page-head{flex-direction:column;align-items:flex-start}
  .content-page{padding:20px 14px}
  .message.user .msg-body{max-width:88%}
  .msg-actions{opacity:1}
  .settings-layout{grid-template-columns:1fr}
  .settings-nav{grid-auto-flow:column;overflow-x:auto;border-right:0;border-bottom:1px solid var(--line);padding:10px}
  .settings-nav button{white-space:nowrap}
}
@media(min-width:861px){#menu{display:none}}
@media(max-width:520px){
  .status{display:none}
  .topbar{padding:8px 10px}
  .messages{padding-inline:12px;gap:20px}
  .composer{border-radius:20px}
}
