/* BuzzCloud AI — ChatGPT / Open WebUI-style chat layout */
:root{
  --bg:#ffffff; --sidebar:#f9f9f9; --surface:#ffffff; --surface-2:#f4f4f4; --hover:#ececec; --hover-2:#e3e3e3;
  --bubble:#f4f4f4; --text:#0d0d0d; --text-2:#5d5d5d; --text-3:#8f8f8f; --border:rgba(0,0,0,.1); --border-2:rgba(0,0,0,.15);
  --composer:#ffffff; --composer-shadow:0 0 0 1px rgba(0,0,0,.08),0 4px 16px rgba(0,0,0,.06);
  --pop:#ffffff; --pop-shadow:0 0 0 1px rgba(0,0,0,.08),0 10px 32px -6px rgba(0,0,0,.2);
  --accent:#0d0d0d; --accent-text:#ffffff; --blue:#0285ff; --red:#e02e2a; --green:#10a37f;
  --code-bg:#f9f9f9; --code-head:#f0f0f0; --scrim:rgba(0,0,0,.4);
  --sans:ui-sans-serif,-apple-system,system-ui,"Segoe UI",Helvetica,"Apple Color Emoji",Arial,sans-serif,"Segoe UI Emoji";
  --mono:ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,"Liberation Mono",monospace;
  --sbw:260px; --ease:cubic-bezier(.2,.8,.2,1);
  color-scheme:light;
}
:root[data-theme="dark"]{
  --bg:#212121; --sidebar:#181818; --surface:#212121; --surface-2:#2f2f2f; --hover:#2f2f2f; --hover-2:#3a3a3a;
  --bubble:#303030; --text:#ececec; --text-2:#b4b4b4; --text-3:#8a8a8a; --border:rgba(255,255,255,.1); --border-2:rgba(255,255,255,.16);
  --composer:#303030; --composer-shadow:0 0 0 1px rgba(255,255,255,.04),0 4px 16px rgba(0,0,0,.2);
  --pop:#353535; --pop-shadow:0 0 0 1px rgba(255,255,255,.08),0 10px 32px -6px rgba(0,0,0,.6);
  --accent:#ffffff; --accent-text:#0d0d0d; --red:#ff6b6b;
  --code-bg:#171717; --code-head:#2a2a2a; --scrim:rgba(0,0,0,.6);
  color-scheme:dark;
}
*{box-sizing:border-box}
[hidden]{display:none!important}
html,body{height:100%;margin:0}
body{background:var(--bg);color:var(--text);font:16px/1.5 var(--sans);-webkit-font-smoothing:antialiased;overflow:hidden}
button{font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer}
input,textarea,select{font:inherit;color:inherit}
a{color:inherit}
kbd{font:inherit}
::selection{background:rgba(2,133,255,.25)}
::-webkit-scrollbar{width:8px;height:8px}
::-webkit-scrollbar-thumb{background:var(--hover-2);border-radius:99px}
::-webkit-scrollbar-track{background:transparent}
svg.i{width:20px;height:20px;flex-shrink:0;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;display:block}
i[data-i]{display:contents}

/* Logo */
.logo-mark{display:inline-block;width:24px;height:24px;background:currentColor;
  -webkit-mask:url(/ai/logo-mask.svg) center/contain no-repeat;mask:url(/ai/logo-mask.svg) center/contain no-repeat}
.logo-mark.big{width:44px;height:44px}

/* Layout */
#app{display:flex;height:100vh;height:100dvh;width:100%;overflow:hidden}
#app.booting{visibility:hidden}
.sidebar{width:var(--sbw);flex-shrink:0;background:var(--sidebar);display:flex;flex-direction:column;height:100%;
  transition:margin-left .25s var(--ease),transform .25s var(--ease);z-index:40;border-right:1px solid var(--border)}
:root[data-theme="dark"] .sidebar{border-right-color:transparent}
#app.sb-collapsed .sidebar{margin-left:calc(-1 * var(--sbw))}
.main{flex:1;min-width:0;display:flex;flex-direction:column;position:relative;height:100%}
.scrim{display:none}

/* Sidebar */
.sb-top{display:flex;align-items:center;justify-content:space-between;padding:8px 8px 4px;height:52px}
.sb-logo{width:40px;height:40px;display:grid;place-items:center;border-radius:10px;color:var(--text)}
.sb-logo:hover{background:var(--hover)}
.sb-nav{padding:4px 6px 8px;display:flex;flex-direction:column}
.sb-item{display:flex;align-items:center;gap:10px;height:36px;padding:0 10px;border-radius:10px;font-size:14px;width:100%;text-align:left}
.sb-item:hover{background:var(--hover)}
.sb-item span{flex:1}
.sb-item kbd{font-size:12px;color:var(--text-3);opacity:0;transition:opacity .15s}
.sb-item:hover kbd{opacity:1}
.sb-scroll{flex:1;overflow-y:auto;padding:0 6px 12px}
.sb-group{margin-top:14px}
.sb-group h3{font-size:12px;font-weight:600;color:var(--text-3);margin:0;padding:6px 10px 4px;position:sticky;top:0;background:var(--sidebar);z-index:1}
.chat-link{position:relative;display:flex;align-items:center;height:36px;padding:0 10px;border-radius:10px;font-size:14px;text-decoration:none;color:var(--text);cursor:pointer}
.chat-link:hover,.chat-link.menu-open{background:var(--hover)}
.chat-link.active{background:var(--hover-2)}
:root[data-theme="dark"] .chat-link.active{background:#2a2a2a}
.chat-link .t{flex:1;white-space:nowrap;overflow:hidden;text-overflow:clip;-webkit-mask-image:linear-gradient(90deg,#000 85%,transparent)}
.chat-link:hover .t,.chat-link.active .t{-webkit-mask-image:linear-gradient(90deg,#000 70%,transparent 92%)}
.chat-link .gen{width:8px;height:8px;border-radius:50%;background:var(--text-2);margin-left:6px;animation:pulse 1.2s infinite}
.chat-link .more{position:absolute;right:4px;width:28px;height:28px;border-radius:8px;display:none;place-items:center;color:var(--text-2)}
.chat-link:hover .more,.chat-link.active .more,.chat-link.menu-open .more{display:grid}
.chat-link .more:hover{color:var(--text)}
.chat-link input{flex:1;min-width:0;border:1px solid var(--blue);border-radius:6px;background:var(--bg);padding:3px 6px;font-size:14px;outline:none}
.sb-empty{color:var(--text-3);font-size:13px;padding:16px 10px}
.sb-foot{padding:6px;border-top:1px solid var(--border)}
:root[data-theme="dark"] .sb-foot{border-top-color:transparent}
.sb-user{display:flex;align-items:center;gap:10px;width:100%;padding:8px;border-radius:10px;text-align:left}
.sb-user:hover{background:var(--hover)}
.sb-user-text{display:flex;flex-direction:column;min-width:0;line-height:1.25}
.sb-user-text b{font-size:14px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sb-user-text small{font-size:12px;color:var(--text-3)}
.avatar{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;font-size:12px;font-weight:600;color:#fff;background:#7a5af8;flex-shrink:0;text-transform:uppercase}

/* Buttons */
.icon-btn{width:36px;height:36px;border-radius:10px;display:inline-grid;place-items:center;color:var(--text-2);flex-shrink:0}
.icon-btn:hover{background:var(--hover);color:var(--text)}
.icon-btn.round{border-radius:50%}
.icon-btn.sm{width:28px;height:28px;border-radius:8px}
.icon-btn.sm svg.i{width:18px;height:18px}
.pill-btn{display:inline-flex;align-items:center;gap:6px;height:36px;padding:0 14px;border-radius:999px;font-size:14px;font-weight:500;border:1px solid var(--border-2)}
.pill-btn:hover{background:var(--hover)}
.pill-btn svg.i{width:18px;height:18px}
.primary-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:40px;padding:0 18px;border-radius:999px;background:var(--accent);color:var(--accent-text);font-size:14px;font-weight:500}
.primary-btn:hover{opacity:.85}
.primary-btn:disabled{opacity:.4;cursor:default}
.secondary-btn{display:inline-flex;align-items:center;justify-content:center;height:40px;padding:0 18px;border-radius:999px;border:1px solid var(--border-2);font-size:14px;font-weight:500}
.secondary-btn:hover{background:var(--hover)}
.danger-btn{display:inline-flex;align-items:center;justify-content:center;height:40px;padding:0 18px;border-radius:999px;background:var(--red);color:#fff;font-size:14px;font-weight:500}
.danger-btn:hover{opacity:.88}
.link-btn{color:var(--blue);font-size:inherit}
.link-btn:hover{text-decoration:underline}

/* Top bar */
.topbar{height:52px;display:flex;align-items:center;justify-content:space-between;padding:0 8px;flex-shrink:0;position:relative;z-index:5}
.tb-left,.tb-right{display:flex;align-items:center;gap:4px}
#sbOpen,.tb-new{display:none}
#app.sb-collapsed #sbOpen,#app.sb-collapsed .tb-new{display:inline-grid}
.model-btn{display:inline-flex;align-items:center;gap:4px;height:36px;padding:0 10px;border-radius:10px;font-size:18px;font-weight:500;color:var(--text);max-width:60vw}
.model-btn span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.model-btn:hover,.model-btn.open{background:var(--hover)}
.model-btn svg.i{width:16px;height:16px;color:var(--text-3)}

/* Thread */
.thread{flex:1;overflow-y:auto;overflow-x:hidden;position:relative;scroll-behavior:auto}
.messages{max-width:48rem;margin:0 auto;padding:12px 24px 24px}
.empty{display:none}
#app.is-empty .thread{display:flex;flex-direction:column;justify-content:flex-end}
#app.is-empty .messages{display:none}
#app.is-empty .empty{display:block;text-align:center;padding:0 24px 28px}
.empty h1{font-size:28px;font-weight:500;margin:0;letter-spacing:-.01em}
#app.is-empty .composer-wrap{flex:1;justify-content:flex-start}
#app.is-empty .disclaimer{visibility:hidden}
#app.shared .composer-wrap{display:none}

.msg{padding:10px 0}
.msg.user{display:flex;flex-direction:column;align-items:flex-end}
.msg.user .bubble{background:var(--bubble);border-radius:22px;padding:10px 18px;max-width:min(70%,100%);white-space:pre-wrap;word-wrap:break-word;overflow-wrap:anywhere}
.msg.user .bubble.long{max-height:none}
.msg.user .att-row{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end;margin-bottom:8px;max-width:80%}
.msg.user .att-row img{max-width:240px;max-height:240px;border-radius:16px;object-fit:cover;cursor:zoom-in;display:block}
.file-chip{display:inline-flex;align-items:center;gap:10px;padding:8px 12px 8px 8px;border:1px solid var(--border);border-radius:14px;background:var(--surface);max-width:260px;font-size:13px}
.file-chip .ficon{width:36px;height:36px;border-radius:8px;display:grid;place-items:center;background:#ff5588;color:#fff;flex-shrink:0}
.file-chip .ficon svg.i{width:18px;height:18px}
.file-chip .fmeta{display:flex;flex-direction:column;min-width:0;line-height:1.3}
.file-chip b{font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.file-chip small{color:var(--text-3)}
.msg-actions{display:flex;align-items:center;gap:2px;margin-top:4px;min-height:32px}
.msg.user .msg-actions{opacity:0;transition:opacity .15s}
.msg.user:hover .msg-actions,.msg.user:focus-within .msg-actions{opacity:1}
.msg.assistant .msg-actions{margin-left:-6px}
.msg.assistant.streaming .msg-actions{visibility:hidden}
.msg.assistant:not(.latest) .msg-actions{opacity:0;transition:opacity .15s}
.msg.assistant:not(.latest):hover .msg-actions{opacity:1}
.msg-actions .icon-btn{width:32px;height:32px;border-radius:8px;color:var(--text-3)}
.msg-actions .icon-btn:hover{color:var(--text)}
.msg-actions .icon-btn svg.i{width:18px;height:18px}
.msg-actions .icon-btn.on{color:var(--text)}
.branch{display:inline-flex;align-items:center;font-size:13px;color:var(--text-2);font-variant-numeric:tabular-nums;margin:0 2px}
.branch .icon-btn{width:24px;height:28px}
.branch .icon-btn:disabled{opacity:.35;cursor:default;background:none}
.msg-edit{width:100%;max-width:100%;background:var(--bubble);border-radius:22px;padding:12px 16px}
.msg-edit textarea{width:100%;border:0;outline:0;background:transparent;resize:none;line-height:1.5;max-height:50vh;display:block}
.msg-edit .row{display:flex;justify-content:flex-end;gap:8px;margin-top:8px}
.msg-edit .row button{height:36px;font-size:14px}

/* Assistant content */
.msg.assistant .content{word-wrap:break-word;overflow-wrap:anywhere}
.msg.assistant .model-tag{font-size:12px;color:var(--text-3);margin-bottom:2px}
.msg.assistant .err{display:flex;gap:10px;align-items:flex-start;border:1px solid color-mix(in srgb,var(--red) 40%,transparent);background:color-mix(in srgb,var(--red) 8%,transparent);color:var(--text);border-radius:14px;padding:10px 14px;font-size:14px;margin-top:6px}
.msg.assistant .err svg.i{color:var(--red);margin-top:2px;width:18px;height:18px}
.cursor-dot{display:inline-block;width:12px;height:12px;border-radius:50%;background:var(--text);vertical-align:middle;margin-left:2px;animation:pulse 1.1s ease-in-out infinite}
.loading-dot{width:14px;height:14px;border-radius:50%;background:var(--text);margin:10px 0;animation:pulse 1.1s ease-in-out infinite}
.loading-note{font-size:14px;color:var(--text-3);margin:-2px 0 6px}
@keyframes pulse{0%,100%{transform:scale(.85);opacity:.6}50%{transform:scale(1);opacity:1}}

.thinking{margin:2px 0 10px}
.thinking-head{display:inline-flex;align-items:center;gap:4px;font-size:14px;color:var(--text-2);padding:4px 0}
.thinking-head:hover{color:var(--text)}
.thinking-head svg.i{width:16px;height:16px;transition:transform .2s}
.thinking.open .thinking-head svg.i{transform:rotate(90deg)}
.thinking.live .thinking-head span{background:linear-gradient(90deg,var(--text-3) 0%,var(--text) 40%,var(--text-3) 80%);background-size:200% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;animation:shimmer 1.6s linear infinite}
@keyframes shimmer{from{background-position:100% 0}to{background-position:-100% 0}}
.thinking-body{display:none;border-left:2px solid var(--border-2);padding:2px 0 2px 16px;margin:4px 0 4px 6px;color:var(--text-2);font-size:14.5px}
.thinking.open .thinking-body{display:block}
.thinking-body .md>*:first-child{margin-top:0}

/* Markdown */
.md{line-height:1.75}
.md>*:first-child{margin-top:0}
.md>*:last-child{margin-bottom:0}
.md p{margin:0 0 1em}
.md h1,.md h2,.md h3,.md h4{font-weight:600;line-height:1.35;margin:1.4em 0 .6em}
.md h1{font-size:1.6em}.md h2{font-size:1.35em}.md h3{font-size:1.15em}.md h4{font-size:1em}
.md ul,.md ol{margin:0 0 1em;padding-left:1.6em}
.md li{margin:.3em 0}
.md li>p{margin:0}
.md li::marker{color:var(--text-2)}
.md strong{font-weight:600}
.md a{color:var(--blue);text-decoration:none}
.md a:hover{text-decoration:underline}
.md blockquote{margin:0 0 1em;padding:0 0 0 1em;border-left:3px solid var(--border-2);color:var(--text-2)}
.md hr{border:0;border-top:1px solid var(--border);margin:1.6em 0}
.md :not(pre)>code{font-family:var(--mono);font-size:.875em;background:var(--surface-2);padding:.15em .4em;border-radius:6px;font-weight:500}
.md table{border-collapse:separate;border-spacing:0;width:100%;font-size:.94em;margin:0}
.md .table-wrap{overflow-x:auto;margin:0 0 1em;border:1px solid var(--border);border-radius:12px}
.md th,.md td{padding:8px 14px;text-align:left;border-bottom:1px solid var(--border);vertical-align:top}
.md th{font-weight:600;background:var(--surface-2)}
.md tr:last-child td{border-bottom:0}
.md img{max-width:100%;border-radius:12px}
.md .katex-display{overflow-x:auto;overflow-y:hidden;padding:4px 0;margin:.6em 0 1em}
.md .katex{font-size:1.08em}
.code-block{margin:0 0 1em;border-radius:14px;overflow:hidden;background:var(--code-bg);border:1px solid var(--border);position:relative}
:root[data-theme="dark"] .code-block{border-color:transparent}
.code-head{display:flex;align-items:center;justify-content:space-between;height:36px;padding:0 8px 0 14px;font-size:12px;color:var(--text-2);background:var(--code-head);position:sticky;top:0}
.code-head button{display:inline-flex;align-items:center;gap:4px;font-size:12px;color:var(--text-2);padding:4px 6px;border-radius:6px}
.code-head button:hover{color:var(--text);background:var(--hover)}
.code-head button svg.i{width:14px;height:14px}
.code-block pre{margin:0;padding:14px 16px;overflow-x:auto;font:13.5px/1.6 var(--mono);tab-size:4}
.code-block pre code{font-family:inherit;background:none!important;padding:0!important}
.hljs{background:transparent!important}

/* Composer */
.composer-wrap{flex-shrink:0;display:flex;flex-direction:column;align-items:center;padding:0 16px;position:relative;z-index:4}
.composer{width:100%;max-width:48rem;background:var(--composer);border-radius:28px;box-shadow:var(--composer-shadow);padding:10px 10px 10px;display:flex;flex-direction:column;cursor:text;transition:box-shadow .2s}
.composer textarea{border:0;outline:0;background:transparent;resize:none;width:100%;padding:6px 10px 4px;max-height:min(40vh,320px);min-height:28px;line-height:1.5;font-size:16px;overflow-y:auto;display:block}
.composer textarea::placeholder{color:var(--text-3)}
.composer-row{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:6px}
.cr-left,.cr-right{display:flex;align-items:center;gap:4px}
.composer .icon-btn.round{width:36px;height:36px;color:var(--text)}
.composer .icon-btn.round:hover{background:var(--hover)}
.tool-pill{display:inline-flex;align-items:center;gap:6px;height:36px;padding:0 12px 0 10px;border-radius:999px;font-size:14px;color:var(--text-2);border:1px solid transparent}
.tool-pill:hover{background:var(--hover);color:var(--text)}
.tool-pill svg.i{width:18px;height:18px}
.tool-pill.on{color:var(--blue);background:color-mix(in srgb,var(--blue) 12%,transparent)}
.tool-pill.on:hover{background:color-mix(in srgb,var(--blue) 18%,transparent)}
.send-btn{width:36px;height:36px;border-radius:50%;background:var(--accent);color:var(--accent-text);display:grid;place-items:center;transition:opacity .15s}
.send-btn:disabled{opacity:.3;cursor:default}
.send-btn svg.i{width:20px;height:20px;stroke-width:2.2}
.send-btn.stop svg.i{width:14px;height:14px;fill:currentColor;stroke:none}
.attachments{display:flex;gap:8px;flex-wrap:wrap;padding:4px 6px 8px}
.att{position:relative}
.att img{width:56px;height:56px;border-radius:14px;object-fit:cover;display:block;border:1px solid var(--border)}
.att .x{position:absolute;top:-6px;right:-6px;width:20px;height:20px;border-radius:50%;background:var(--accent);color:var(--accent-text);display:grid;place-items:center;border:2px solid var(--composer);opacity:0;transition:opacity .15s}
.att:hover .x,.att:focus-within .x{opacity:1}
.att .x svg.i{width:10px;height:10px;stroke-width:3}
@media (hover:none){.att .x{opacity:1}}
.disclaimer{font-size:12px;color:var(--text-2);text-align:center;margin:8px 0 10px;padding:0 8px}
.suggestions{display:none}
#app.is-empty .suggestions{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;margin-top:20px;max-width:48rem}
.suggestions button{display:inline-flex;align-items:center;gap:8px;height:40px;padding:0 14px;border-radius:999px;border:1px solid var(--border);font-size:14px;color:var(--text-2)}
.suggestions button:hover{background:var(--hover);color:var(--text)}
.suggestions button svg.i{width:18px;height:18px}
.to-bottom{position:absolute;left:50%;transform:translateX(-50%);bottom:var(--tb,140px);width:34px;height:34px;border-radius:50%;background:var(--bg);border:1px solid var(--border-2);display:grid;place-items:center;color:var(--text);z-index:6;box-shadow:0 4px 12px rgba(0,0,0,.08)}
.to-bottom svg.i{width:18px;height:18px}
.drop-overlay{position:absolute;inset:0;z-index:30;background:color-mix(in srgb,var(--bg) 85%,transparent);display:grid;place-items:center;pointer-events:none}
.drop-overlay div{display:flex;flex-direction:column;align-items:center;gap:6px;text-align:center}
.drop-overlay svg.i{width:40px;height:40px;color:var(--blue)}
.drop-overlay b{font-size:20px;font-weight:600}
.drop-overlay span{color:var(--text-2);font-size:14px}

/* Popovers / menus */
.popover{position:fixed;z-index:100;background:var(--pop);border-radius:16px;box-shadow:var(--pop-shadow);padding:6px;min-width:200px;max-width:calc(100vw - 16px);animation:pop .14s var(--ease)}
@keyframes pop{from{opacity:0;transform:scale(.97) translateY(-4px)}to{opacity:1;transform:none}}
.menu-item{display:flex;align-items:center;gap:10px;width:100%;padding:8px 10px;border-radius:10px;font-size:14px;text-align:left}
.menu-item:hover,.menu-item.kb{background:var(--hover)}
:root[data-theme="dark"] .menu-item:hover,:root[data-theme="dark"] .menu-item.kb{background:#424242}
.menu-item svg.i{width:18px;height:18px}
.menu-item.danger{color:var(--red)}
.menu-sep{height:1px;background:var(--border);margin:4px 6px}
.menu-label{font-size:12px;color:var(--text-3);padding:8px 10px 4px}
.model-pop{width:360px;padding:6px}
.model-search{display:flex;align-items:center;gap:8px;padding:6px 10px 8px;border-bottom:1px solid var(--border);margin:0 -6px 4px}
.model-search input{flex:1;border:0;outline:0;background:transparent;font-size:14px;padding:4px 0}
.model-search svg.i{width:16px;height:16px;color:var(--text-3)}
.model-list{max-height:min(60vh,440px);overflow-y:auto}
.model-item{display:flex;align-items:center;gap:10px;width:100%;padding:8px 10px;border-radius:10px;text-align:left}
.model-item:hover,.model-item.kb{background:var(--hover)}
:root[data-theme="dark"] .model-item:hover,:root[data-theme="dark"] .model-item.kb{background:#424242}
.model-item .mi-body{flex:1;min-width:0}
.model-item .mi-name{font-size:14px;display:flex;align-items:center;gap:6px}
.model-item .mi-name .live{width:7px;height:7px;border-radius:50%;background:var(--green)}
.model-item .mi-sub{font-size:12px;color:var(--text-3);display:flex;gap:6px;flex-wrap:wrap;margin-top:1px}
.badge{display:inline-flex;align-items:center;font-size:11px;padding:0 6px;height:18px;border-radius:6px;background:var(--surface-2);color:var(--text-2)}
:root[data-theme="dark"] .model-pop .badge{background:#4a4a4a}
.model-item .check{width:18px;height:18px;color:var(--text)}
.model-foot{border-top:1px solid var(--border);margin:4px -6px -6px;padding:6px}

/* Modals */
.modal-back{position:fixed;inset:0;z-index:90;background:var(--scrim);display:grid;place-items:center;padding:16px;animation:fade .15s}
@keyframes fade{from{opacity:0}}
.modal{background:var(--pop);border-radius:20px;width:100%;max-width:480px;max-height:calc(100dvh - 32px);display:flex;flex-direction:column;box-shadow:var(--pop-shadow);animation:pop .16s var(--ease);overflow:hidden}
.modal-head{display:flex;align-items:center;justify-content:space-between;padding:16px 16px 12px 22px;border-bottom:1px solid var(--border)}
.modal-head h2{font-size:18px;font-weight:600;margin:0}
.modal-body{padding:18px 22px;overflow-y:auto}
.modal-body p{margin:0 0 12px;color:var(--text-2);font-size:14px}
.modal-foot{display:flex;justify-content:flex-end;gap:8px;padding:0 22px 20px}
.field{display:block;margin-bottom:14px}
.field>span{display:block;font-size:14px;font-weight:500;margin-bottom:6px}
.field small{display:block;color:var(--text-3);font-size:12px;margin-top:4px}
.text-in{width:100%;border:1px solid var(--border-2);border-radius:12px;background:transparent;padding:10px 12px;font-size:14px;outline:none}
.text-in:focus{border-color:var(--blue)}
textarea.text-in{resize:vertical;min-height:110px;line-height:1.5}
.sel{appearance:none;border:1px solid var(--border-2);border-radius:10px;background:transparent;padding:6px 30px 6px 12px;font-size:14px;outline:none;cursor:pointer;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%238f8f8f' stroke-width='2'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 8px center;background-size:16px}
.sel option{background:var(--pop);color:var(--text)}

.settings{max-width:680px;height:min(600px,calc(100dvh - 32px))}
.settings .modal-head{border-bottom:0;padding-bottom:4px}
.settings-wrap{display:flex;flex:1;min-height:0}
.settings-tabs{width:180px;padding:8px 8px 16px 12px;display:flex;flex-direction:column;gap:2px;flex-shrink:0}
.settings-tabs button{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:10px;font-size:14px;text-align:left}
.settings-tabs button:hover{background:var(--hover)}
.settings-tabs button.on{background:var(--hover)}
:root[data-theme="dark"] .settings-tabs button.on,:root[data-theme="dark"] .settings-tabs button:hover{background:#424242}
.settings-tabs svg.i{width:18px;height:18px}
.settings-pane{flex:1;overflow-y:auto;padding:4px 22px 22px}
.set-row{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 0;border-bottom:1px solid var(--border);font-size:14px}
.set-row:last-child{border-bottom:0}
.set-row .lbl{display:flex;flex-direction:column}
.set-row .lbl small{color:var(--text-3);font-size:12px;margin-top:2px}
.range-row{display:flex;align-items:center;gap:10px}
.range-row input[type=range]{width:140px;accent-color:var(--text)}
.range-row output{font-variant-numeric:tabular-nums;width:3em;text-align:right;color:var(--text-2)}

.search-modal{max-width:680px;height:min(520px,calc(100dvh - 32px))}
.search-head{display:flex;align-items:center;gap:8px;padding:12px 12px 12px 20px;border-bottom:1px solid var(--border)}
.search-head input{flex:1;border:0;outline:0;background:transparent;font-size:16px;padding:6px 0}
.search-results{flex:1;overflow-y:auto;padding:8px}
.sr-item{display:flex;align-items:flex-start;gap:12px;width:100%;padding:10px 12px;border-radius:12px;text-align:left}
.sr-item:hover,.sr-item.kb{background:var(--hover)}
:root[data-theme="dark"] .sr-item:hover,:root[data-theme="dark"] .sr-item.kb{background:#424242}
.sr-item svg.i{margin-top:2px;width:18px;height:18px;color:var(--text-2)}
.sr-item .sr-body{flex:1;min-width:0}
.sr-item b{display:block;font-weight:500;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sr-item small{display:block;color:var(--text-3);font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sr-item time{font-size:12px;color:var(--text-3);white-space:nowrap}
.sr-group{font-size:12px;color:var(--text-3);padding:10px 12px 4px}

.share-link{display:flex;align-items:center;gap:8px;border:1px solid var(--border-2);border-radius:999px;padding:4px 4px 4px 16px}
.share-link input{flex:1;border:0;outline:0;background:transparent;font-size:14px;color:var(--text-2);min-width:0}

.lightbox{position:fixed;inset:0;z-index:120;background:rgba(0,0,0,.85);display:grid;place-items:center;padding:24px;cursor:zoom-out}
.lightbox img{max-width:100%;max-height:100%;border-radius:8px}

/* Toasts, tooltip */
.toasts{position:fixed;top:16px;left:50%;transform:translateX(-50%);z-index:200;display:flex;flex-direction:column;gap:8px;align-items:center;pointer-events:none}
.toast{background:var(--accent);color:var(--accent-text);padding:10px 16px;border-radius:12px;font-size:14px;box-shadow:0 8px 24px rgba(0,0,0,.2);animation:pop .16s var(--ease);max-width:90vw}
.toast.err{background:var(--red);color:#fff}
.tip{position:fixed;z-index:210;background:#0d0d0d;color:#fff;font-size:12px;font-weight:500;padding:5px 9px;border-radius:8px;pointer-events:none;white-space:nowrap;animation:fade .1s}
:root[data-theme="dark"] .tip{background:#000}

/* Login */
.login{position:fixed;inset:0;background:var(--bg);display:grid;place-items:center;padding:24px;z-index:150;overflow-y:auto}
.login-card{width:100%;max-width:340px;text-align:center}
.login-card h1{font-size:30px;font-weight:600;margin:18px 0 6px;letter-spacing:-.01em}
.login-card .muted{color:var(--text-2);margin:0 0 22px;font-size:15px}
.login-card .muted.small{font-size:14px;margin-top:18px}
.login-card form{display:flex;flex-direction:column;gap:12px}
.login-card input{height:52px;border:1px solid var(--border-2);border-radius:999px;padding:0 20px;background:transparent;outline:none;font-size:16px}
.login-card input:focus{border-color:var(--blue);box-shadow:0 0 0 1px var(--blue)}
.login-card .primary-btn{height:52px;font-size:16px}
.login-err{color:var(--red);font-size:14px;margin:0;text-align:left;padding:0 8px}

/* Mobile */
@media (max-width:767px){
  .sidebar{position:fixed;left:0;top:0;bottom:0;width:min(300px,85vw);transform:translateX(-100%);margin-left:0!important;box-shadow:none}
  #app.sb-mobile-open .sidebar{transform:none;box-shadow:0 0 40px rgba(0,0,0,.3)}
  #app.sb-mobile-open .scrim{display:block;position:fixed;inset:0;background:var(--scrim);z-index:35}
  #sbOpen,.tb-new{display:inline-grid!important}
  .topbar{padding:0 4px}
  .tb-left{flex:1;min-width:0}
  .model-btn{font-size:17px}
  .messages{padding:8px 16px 16px}
  .msg.user .bubble{max-width:85%}
  .composer-wrap{padding:0 10px env(safe-area-inset-bottom)}
  .disclaimer{font-size:11px;margin:6px 0 8px}
  .empty h1{font-size:24px}
  #app.is-empty .thread{justify-content:center}
  #app.is-empty .composer-wrap{flex:0}
  #app.is-empty .suggestions{display:none}
  .sb-item kbd{display:none}
  .settings-wrap{flex-direction:column}
  .settings-tabs{width:auto;flex-direction:row;overflow-x:auto;padding:4px 12px 8px}
  .settings-tabs button{white-space:nowrap}
  .model-pop{width:calc(100vw - 16px)}
  .pill-btn span{display:none}
  .pill-btn{width:36px;padding:0;justify-content:center;border:0}
  .msg.user .msg-actions{opacity:1}
}
@media (prefers-reduced-motion:reduce){*{animation-duration:.01ms!important;transition-duration:.01ms!important}}

/* Curated models */
.model-sub{color:var(--text-3);font-weight:400}
.model-pop{width:320px}
.model-item.preset{padding:10px 12px}
.model-item.preset .mi-name{font-size:15px;font-weight:500}
.model-item.preset .mi-sub{font-size:13px}
.model-item .mi-name .badge{margin-left:2px}

/* Web search */
.search-status{display:flex;align-items:center;gap:8px;font-size:14px;margin:4px 0 10px;color:var(--text-3)}
.search-status svg.i{width:16px;height:16px}
.search-status span{background:linear-gradient(90deg,var(--text-3) 0%,var(--text) 40%,var(--text-3) 80%);background-size:200% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;animation:shimmer 1.6s linear infinite}
.md a.cite{display:inline-flex;align-items:center;height:20px;padding:0 8px;border-radius:999px;background:var(--surface-2);color:var(--text-2);font-size:11.5px;font-weight:500;line-height:1;vertical-align:1px;text-decoration:none;white-space:nowrap;max-width:180px;overflow:hidden;text-overflow:ellipsis}
.md a.cite:hover{background:var(--accent);color:var(--accent-text);text-decoration:none}
.sources-btn{display:inline-flex;align-items:center;gap:6px;height:32px;padding:0 12px 0 8px;margin-left:6px;border-radius:999px;border:1px solid var(--border);font-size:13px;color:var(--text-2)}
.sources-btn:hover{background:var(--hover);color:var(--text)}
.sources-btn .fav{width:16px;height:16px;border-radius:50%;background:#fff;border:1.5px solid var(--bg);margin-right:-10px;object-fit:cover}
.sources-btn .fav:last-of-type{margin-right:0}
.sources-btn span{margin-left:4px}
.fav-missing{visibility:hidden}
.sources-modal{max-width:560px}
.src-list{display:flex;flex-direction:column;gap:6px}
.src{display:block;padding:10px 12px;border-radius:12px;text-decoration:none;color:var(--text)}
.src:hover{background:var(--hover)}
.src-head{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--text-3);margin-bottom:2px}
.src-head .fav{width:16px;height:16px;border-radius:4px}
.src-n{margin-left:auto;font-variant-numeric:tabular-nums}
.src b{display:block;font-weight:500;font-size:14px;line-height:1.35}
.src small{display:block;color:var(--text-2);font-size:13px;margin-top:2px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
@media (max-width:767px){ .model-pop{width:calc(100vw - 16px)} .tool-pill span{display:none} .tool-pill{padding:0 9px} .tool-pill.on span{display:inline} }

/* Image generation */
.img-slot:empty{display:none}
.gen-img{position:relative;width:min(100%,420px);border-radius:18px;overflow:hidden;background:var(--surface-2);margin:2px 0 4px}
.gen-img img{display:block;width:100%;height:100%;object-fit:cover;cursor:zoom-in;animation:fade .4s}
.gen-img.pending{background:linear-gradient(110deg,var(--surface-2) 30%,var(--hover-2) 50%,var(--surface-2) 70%);background-size:250% 100%;animation:imgShimmer 1.8s linear infinite}
@keyframes imgShimmer{from{background-position:120% 0}to{background-position:-120% 0}}
.gen-label{position:absolute;left:16px;right:16px;bottom:16px;display:flex;flex-direction:column;gap:8px;font-size:14px;color:var(--text-2)}
.gen-bar{height:4px;border-radius:99px;background:color-mix(in srgb,var(--text) 12%,transparent);overflow:hidden}
.gen-bar i{display:block;height:100%;background:var(--text);border-radius:99px;transition:width .4s}
#sizeBtn svg.i{width:16px;height:16px}
.policy-card{display:flex;gap:12px;align-items:flex-start;max-width:480px;border:1px solid var(--border-2);border-radius:16px;padding:14px 16px;font-size:14.5px;background:var(--surface)}
.policy-card p{margin:0 0 4px}
.policy-card svg.i{width:20px;height:20px;color:var(--text-2);margin-top:1px;flex-shrink:0}
.update-bar{position:fixed;left:50%;bottom:calc(16px + env(safe-area-inset-bottom));transform:translateX(-50%);z-index:150;display:flex;align-items:center;gap:14px;padding:10px 10px 10px 18px;border-radius:999px;background:var(--accent);color:var(--accent-text);font-size:14px;box-shadow:0 10px 30px rgba(0,0,0,.25);animation:pop .2s var(--ease);white-space:nowrap}
.update-bar button{background:var(--accent-text);color:var(--accent);border-radius:999px;padding:6px 14px;font-size:13px;font-weight:600}

.set-note{color:var(--text-2);font-size:13px;line-height:1.5;margin:0 0 12px}
.set-note code,.set-row small code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;background:var(--bg-2,rgba(127,127,127,.12));padding:1px 5px;border-radius:5px}
#keyFresh .share-link{margin-bottom:14px}
#keyFresh .share-link input{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px}

.agent-steps .thinking-body{padding-left:14px}
.step-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}
.step-list li{display:flex;align-items:flex-start;gap:8px;line-height:1.45}
.step-list li svg.i{width:15px;height:15px;flex:none;margin-top:2px;opacity:.75}
.step-list li a{color:var(--text-2);text-decoration:underline;text-decoration-color:var(--border-2);word-break:break-word}
.step-list li small{color:var(--text-3);margin-left:4px}
.step-list li.running span{color:var(--text)}
.step-list li.failed{opacity:.6}

.set-links{display:flex;flex-wrap:wrap;gap:8px;margin:-4px 0 14px}
.set-links a{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:500;color:var(--text);border:1px solid var(--border-2);border-radius:999px;padding:5px 12px;text-decoration:none}
.set-links a:hover{background:color-mix(in srgb,var(--text) 6%,transparent)}
.set-links svg.i{width:15px;height:15px}
.usage-head{display:flex;align-items:baseline;flex-wrap:wrap;gap:8px;margin:4px 0 10px;font-size:14px}
.usage-head small{color:var(--text-3);font-size:12.5px}
.pill-unl{font-size:11.5px;font-weight:600;color:#10a37f;background:color-mix(in srgb,#10a37f 15%,transparent);border-radius:999px;padding:2px 9px}
.meter-group{border:1px solid var(--border-2);border-radius:14px;padding:12px 14px;margin-bottom:10px}
.meter-title{font-size:14px;font-weight:600;margin-bottom:8px;display:flex;gap:8px;align-items:baseline}
.meter-title small{font-weight:400;color:var(--text-3);font-size:12px}
.meter+.meter{margin-top:10px}
.meter-top{display:flex;justify-content:space-between;gap:10px;font-size:13px;color:var(--text-2);margin-bottom:5px}
.meter-n{font-variant-numeric:tabular-nums;color:var(--text)}
.meter-track{height:8px;border-radius:999px;background:color-mix(in srgb,var(--text) 10%,transparent);overflow:hidden}
.meter-track i{display:block;height:100%;border-radius:999px;background:#10a37f;transition:width .5s ease}
.meter.amber .meter-track i{background:#e3a008}
.meter.red .meter-track i{background:#e5484d}
.meter.amber .meter-n{color:#c98a00}
.meter.red .meter-n{color:#e5484d}

.site-slot:empty{display:none}
.site-slot{display:flex;flex-direction:column;gap:6px;margin:8px 0 4px}
.site-card{display:flex;align-items:center;flex-wrap:wrap;gap:10px;border:1px solid var(--border-2);border-radius:12px;padding:9px 12px;font-size:14px}
.site-card svg.i{width:16px;height:16px;color:#10a37f;flex:none}
.site-card .sc-text{flex:1;min-width:140px}
.site-card a{font-weight:500;font-size:13px}
.site-card .link-btn{font-size:13px}
.site-card.undone{opacity:.65}.site-card.undone svg.i{color:var(--text-3)}
.site-card .sc-text small{color:var(--text-3);font-size:12.5px}

.conn-pop{width:min(360px,calc(100vw - 32px));padding:4px}
.conn-head{display:flex;flex-direction:column;padding:6px 10px 8px;font-weight:600;font-size:14px}
.conn-head small{font-weight:400;color:var(--text-3);font-size:12px}
.conn-row{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:10px}
.conn-row>svg.i{width:20px;height:20px;flex:none;color:var(--text-2)}
.conn-text{flex:1;min-width:0;display:flex;flex-direction:column}
.conn-text b{font-size:14px;font-weight:500}
.conn-text small{color:var(--text-3);font-size:12px;line-height:1.35}
.conn-connect{height:30px;padding:0 12px;font-size:13px}
.conn-name{display:inline-flex;align-items:center;gap:8px}.conn-name svg.i{width:18px;height:18px}
.switch{position:relative;display:inline-block;width:36px;height:20px;flex:none;cursor:pointer}
.switch input{position:absolute;opacity:0;width:0;height:0}
.switch span{position:absolute;inset:0;border-radius:999px;background:color-mix(in srgb,var(--text) 22%,transparent);transition:background .15s}
.switch span::after{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:#fff;transition:transform .15s;box-shadow:0 1px 2px rgba(0,0,0,.3)}
.switch input:checked+span{background:#10a37f}
.switch input:checked+span::after{transform:translateX(16px)}
.switch input:focus-visible+span{outline:2px solid var(--blue);outline-offset:2px}
.modal.consent{max-width:440px}
.consent-body{text-align:center;padding-top:26px}
.consent-body h2{font-size:19px;margin:14px 0 4px}
.consent-sub{color:var(--text-2);font-size:14px;margin:0 0 16px}
.consent-icons{display:flex;align-items:center;justify-content:center;gap:10px}
.consent-icons .ci{width:46px;height:46px;border-radius:14px;display:grid;place-items:center;border:1px solid var(--border-2)}
.consent-icons .ci svg.i{width:24px;height:24px}
.consent-icons .dots{width:30px;border-top:2px dotted var(--text-3)}
.consent-list{text-align:left;border:1px solid var(--border-2);border-radius:14px;padding:6px 14px 10px}
.cl-head{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--text-3);margin:10px 0 4px}
.cl-item{display:flex;gap:8px;align-items:flex-start;font-size:14px;padding:3px 0}
.cl-item svg.i{width:16px;height:16px;flex:none;margin-top:2px}
.cl-item.yes svg.i{color:#10a37f}.cl-item.no svg.i{color:var(--red)}
.consent-foot{display:flex;gap:8px;align-items:flex-start;text-align:left;font-size:12.5px;color:var(--text-3);margin:14px 2px 0}
.consent-foot svg.i{width:16px;height:16px;flex:none;margin-top:1px}

.claude-sec{margin-top:22px;padding-top:18px;border-top:1px solid var(--border-2)}
.claude-sec .meter-title svg.i{width:16px;height:16px}
.set-row.muted{opacity:.6}
