:root{--bg:#ffffff;--panel:#f7f7f8;--line:#e5e7eb;--text:#0f172a;--muted:#6b7280;--brand:#10a37f;--user:#f3f4f6}
@media (prefers-color-scheme: dark){:root{--bg:#212121;--panel:#171717;--line:#2f2f2f;--text:#ececec;--muted:#a3a3a3;--brand:#10a37f;--user:#2f2f2f}}
*{box-sizing:border-box}html,body{margin:0;height:100%;overflow:hidden;font-family:Inter,system-ui,-apple-system,Segoe UI,Arial;background:var(--bg);color:var(--text)}a{color:inherit;text-decoration:none}

.login-wrap{height:100dvh;display:flex;align-items:center;justify-content:center;background:var(--panel);padding:16px}
.login-card{width:min(380px,100%);background:var(--bg);border:1px solid var(--line);border-radius:16px;padding:22px}
.login-card h2{margin:0 0 14px}.login-card input{width:100%;padding:12px;margin:8px 0;background:var(--bg);border:1px solid var(--line);color:var(--text);border-radius:10px;font-size:16px}
.login-card button{width:100%;padding:12px;background:var(--brand);border:0;border-radius:10px;color:#fff;cursor:pointer;font-size:15px}.err{color:#ff5b5b;font-size:13px;min-height:18px}

.layout{display:flex;height:100dvh;overflow:hidden}
.sidebar{width:260px;background:var(--panel);border-right:1px solid var(--line);display:flex;flex-direction:column;transition:transform .2s ease}
.side-top{padding:12px;border-bottom:1px solid var(--line)}
.new-btn{width:100%;padding:10px;background:var(--bg);color:var(--text);border:1px solid var(--line);border-radius:10px;cursor:pointer}
.chat-list{padding:8px;overflow:auto;flex:1}.chat-item{padding:10px;border-radius:10px;cursor:pointer;display:flex;justify-content:space-between;gap:8px;font-size:14px}
.chat-item:hover{background:color-mix(in oklab,var(--panel) 70%,var(--bg))}.chat-item.active{background:color-mix(in oklab,var(--panel) 40%,var(--bg))}.del{color:#999;font-size:12px;flex:none}

.main{flex:1;display:flex;flex-direction:column;min-width:0;background:var(--bg);position:relative}
.topbar{height:52px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 14px;gap:10px;background:var(--bg)}
.menu-btn{display:none;border:1px solid var(--line);background:var(--panel);color:var(--text);border-radius:8px;padding:6px 9px;font-size:14px}
.top-left{display:flex;align-items:center;gap:10px;min-width:0}
.model-pill{font-size:13px;color:var(--muted);display:inline-flex;align-items:center;gap:6px;padding:3px 10px;border:1px solid var(--line);border-radius:999px;background:transparent}
.pill-dot{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:999px;background:color-mix(in oklab,var(--brand) 18%,transparent);color:var(--brand);font-size:11px;line-height:1}

.messages{flex:1;overflow:auto;padding:18px 0 8px;scrollbar-width:none;-ms-overflow-style:none}
.messages::-webkit-scrollbar{width:0;height:0}
.msg{padding:0 18px;margin:0 auto 16px;max-width:880px}
.msg-row{display:flex;align-items:flex-start;gap:10px}
.msg .avatar{width:24px;height:24px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;font-size:12px;line-height:1;flex:none;border:1px solid var(--line);margin-top:2px}
.msg .avatar.assistant{background:color-mix(in oklab,var(--brand) 15%,transparent);color:var(--brand)}
.msg .avatar.user{background:var(--panel);color:var(--muted)}
.msg .bubble{display:inline-block;max-width:100%;line-height:1.75;word-break:break-word}
.msg.user .msg-row{flex-direction:row-reverse}
.msg.user .bubble{background:var(--user);padding:10px 14px;border-radius:18px;white-space:pre-wrap;border:1px solid color-mix(in oklab,var(--line) 70%,transparent)}
.msg.assistant .bubble{padding:0;border:none;background:transparent}
.msg.assistant .bubble h1,.msg.assistant .bubble h2,.msg.assistant .bubble h3{margin:.55em 0 .38em;font-size:1.08em}
.msg.assistant .bubble p{margin:.38em 0}
.msg.assistant .bubble ul{margin:.34em 0 .4em 1.2em;padding:0}
.msg.assistant .bubble blockquote{margin:.5em 0;padding:.4em .75em;border-left:3px solid var(--line);background:color-mix(in oklab,var(--panel) 70%,var(--bg));border-radius:8px;color:var(--muted)}
.msg.assistant .bubble pre{position:relative;background:rgba(0,0,0,.10);padding:11px;border-radius:10px;overflow:auto}
.msg.assistant .bubble code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}
.code-copy-btn{position:absolute;top:6px;right:6px;border:1px solid var(--line);background:var(--bg);color:var(--text);border-radius:6px;padding:2px 8px;font-size:12px;cursor:pointer}

.jump-bottom{position:absolute;left:50%;transform:translate(-50%,6px);bottom:84px;z-index:15;width:34px;height:34px;padding:0;border-radius:999px;border:1px solid var(--line);background:var(--bg);color:var(--text);display:flex;align-items:center;justify-content:center;font-size:18px;line-height:1;box-shadow:0 6px 16px rgba(0,0,0,.15);cursor:pointer;opacity:0;pointer-events:none;transition:opacity .15s ease,transform .15s ease}
.jump-bottom.show{opacity:1;pointer-events:auto;transform:translate(-50%,0)}

.input-wrap{padding:10px 12px calc(10px + env(safe-area-inset-bottom));border-top:1px solid var(--line);background:var(--bg)}
.input-box{max-width:840px;margin:0 auto;display:flex;gap:8px;align-items:flex-end;background:var(--panel);border:1px solid var(--line);border-radius:24px;padding:10px 10px 10px 14px}
.input-box textarea{flex:1;resize:none;border:0;background:transparent;color:var(--text);padding:4px 8px;min-height:24px;max-height:180px;font-size:16px;line-height:1.45;outline:none}
.input-box button{width:76px;height:36px;border:0;border-radius:18px;background:var(--brand);color:#fff;cursor:pointer;font-size:14px}

.backdrop{display:none}
@media (max-width:900px){.menu-btn{display:block}.sidebar{position:fixed;z-index:30;left:0;top:0;height:100dvh;border-right:none;transform:translateX(calc(-100% - 2px));box-shadow:10px 0 30px rgba(0,0,0,.28)}.sidebar.open{transform:translateX(0)}.backdrop.show{display:block;position:fixed;inset:0;background:rgba(0,0,0,.34);z-index:20}.msg{padding:0 14px}.input-box{border-radius:18px}}
