:root{color-scheme:light;--bg:#fff;--sidebar:#f7f7f8;--surface:#fff;--surface-2:#f4f4f4;--surface-3:#ececec;--text:#202123;--muted:#6e6e80;--line:#e5e5e5;--accent:#2f80ed;--accent-strong:#176bd7;--danger:#c94141;--shadow:0 16px 45px rgba(0,0,0,.09)}
*{box-sizing:border-box}
html,body{height:100%}
body{margin:0;background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;-webkit-font-smoothing:antialiased;overflow:hidden}
button,input,textarea{font:inherit}
button{color:inherit}
[hidden]{display:none!important}
.app-shell{height:100dvh;display:grid;grid-template-columns:272px minmax(0,1fr)}
.sidebar{min-width:0;display:flex;flex-direction:column;background:var(--sidebar);border-right:1px solid var(--line);z-index:20}
.sidebar-head{height:68px;display:flex;align-items:center;justify-content:space-between;padding:0 16px}
.brand,.login-brand{display:flex;align-items:center;gap:10px;color:var(--text);text-decoration:none;letter-spacing:-.3px}
.brand img{width:32px;height:32px;border-radius:9px}.brand span{font-size:16px}.brand b,.login-brand b{font-weight:760}
.icon-button{width:38px;height:38px;display:grid;place-items:center;padding:0;border:0;border-radius:10px;background:transparent;cursor:pointer}
.icon-button:hover{background:var(--surface-3)}
.icon-button svg,.new-chat svg,.send-button svg,.message-action svg,.file-icon svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.sidebar-close,.menu-button{display:none}
.new-chat{height:44px;margin:4px 12px 18px;display:flex;align-items:center;gap:10px;padding:0 13px;border:1px solid var(--line);border-radius:11px;background:var(--surface);font-weight:600;cursor:pointer}
.new-chat:hover{background:var(--surface-2)}
.history-label{padding:4px 18px 9px;color:var(--muted);font-size:11px;font-weight:650;letter-spacing:.08em;text-transform:uppercase}
.conversation-list{min-height:0;flex:1;overflow:auto;padding:0 8px 16px}
.conversation-item{width:100%;min-height:42px;display:flex;align-items:center;padding:9px 11px;border:0;border-radius:9px;background:transparent;text-align:left;cursor:pointer}
.conversation-item span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:14px}
.conversation-item:hover,.conversation-item.active{background:var(--surface-3)}
.account{min-height:72px;display:flex;align-items:center;gap:10px;padding:11px 13px;border-top:1px solid var(--line)}
.avatar{width:34px;height:34px;display:grid;place-items:center;flex:0 0 auto;border-radius:50%;background:var(--accent);color:#fff;font-size:13px;font-weight:700}
.account-copy{min-width:0;display:grid;gap:2px;flex:1}.account-copy strong{overflow:hidden;text-overflow:ellipsis;font-size:13px}.account-copy span{color:var(--muted);font-size:11px}
.scrim{display:none}
.chat-panel{min-width:0;height:100dvh;display:grid;grid-template-rows:68px minmax(0,1fr) auto;background:var(--surface)}
.chat-header{display:flex;align-items:center;gap:13px;padding:0 22px;border-bottom:1px solid var(--line)}
.chat-header>div:nth-child(2){min-width:0;display:grid;gap:2px;flex:1}.chat-header strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:15px}.chat-header span{color:var(--muted);font-size:11px}
.connection{display:flex!important;align-items:center;gap:7px!important;flex:0 0 auto!important}.connection i{width:7px;height:7px;border-radius:50%;background:#33a36f}.connection.offline i{background:var(--danger)}
.messages{min-height:0;overflow-y:auto;scroll-behavior:smooth;padding:30px 24px 18px}
.message{width:min(100%,820px);display:flex;gap:14px;margin:0 auto 27px;animation:message-in .22s ease-out both}
.message.user{justify-content:flex-end}.message.assistant{justify-content:flex-start}
.assistant-avatar{width:30px;height:30px;flex:0 0 auto;border-radius:9px}
.message-body{min-width:0;max-width:min(82%,720px)}
.message.user .message-body{padding:11px 16px 10px;border-radius:20px;background:var(--surface-2)}
.message-text{font-size:15px;line-height:1.65;white-space:pre-wrap;overflow-wrap:anywhere}
.message-meta{min-height:27px;display:flex;align-items:center;gap:3px;margin-top:4px;color:var(--muted);font-size:11px}
.message-action{width:28px;height:28px;display:grid;place-items:center;padding:0;border:0;border-radius:7px;background:transparent;color:var(--muted);cursor:pointer}.message-action:hover{background:var(--surface-2);color:var(--text)}.message-action svg{width:15px;height:15px}
.message-error{color:var(--danger)}
.file-card{width:min(100%,430px);display:flex;align-items:center;gap:12px;margin-top:13px;padding:12px;border:1px solid var(--line);border-radius:13px;background:var(--surface-2);cursor:pointer;text-align:left}.file-card:hover{border-color:#b9b9bd}.file-icon{width:38px;height:38px;display:grid;place-items:center;flex:0 0 auto;border-radius:10px;background:var(--accent);color:#fff}.file-copy{min-width:0;display:grid;gap:3px;flex:1}.file-copy strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px}.file-copy span{color:var(--accent);font-size:12px}
.typing{display:inline-flex;gap:4px;padding:9px 2px}.typing i{width:6px;height:6px;border-radius:50%;background:#8c8c96;animation:typing 1.15s infinite}.typing i:nth-child(2){animation-delay:.15s}.typing i:nth-child(3){animation-delay:.3s}
.empty-state{width:min(100%,700px);min-height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;margin:auto;padding:32px 0 70px;text-align:center}.empty-state>img{width:58px;height:58px;border-radius:17px;box-shadow:var(--shadow)}.empty-state h1{margin:22px 0 8px;font-size:30px;letter-spacing:-.04em}.empty-state p{max-width:530px;margin:0;color:var(--muted);font-size:15px;line-height:1.6}.suggestions{width:100%;display:grid;grid-template-columns:repeat(3,1fr);gap:9px;margin-top:30px}.suggestions button{min-height:68px;padding:13px;border:1px solid var(--line);border-radius:13px;background:var(--surface);text-align:left;font-size:13px;line-height:1.4;cursor:pointer}.suggestions button:hover{background:var(--surface-2)}
.composer-wrap{padding:10px 22px calc(12px + env(safe-area-inset-bottom));background:linear-gradient(180deg,rgba(255,255,255,0),var(--surface) 18%)}
.composer{width:min(100%,820px);min-height:54px;display:flex;align-items:flex-end;gap:8px;margin:auto;padding:7px 7px 7px 15px;border:1px solid #d6d6d8;border-radius:27px;background:var(--surface);box-shadow:0 8px 24px rgba(0,0,0,.06)}
.composer:focus-within{border-color:#b8b8bc;box-shadow:0 8px 28px rgba(0,0,0,.09)}
.composer textarea{min-height:38px;max-height:170px;flex:1;padding:8px 0;border:0;outline:0;background:transparent;color:var(--text);resize:none;line-height:1.4}.composer textarea::placeholder{color:#929298}.composer textarea:disabled{cursor:not-allowed}
.send-button{width:40px;height:40px;display:grid;place-items:center;flex:0 0 auto;padding:0;border:0;border-radius:50%;background:var(--text);color:var(--surface);cursor:pointer}.send-button:disabled{background:var(--surface-3);color:#9b9ba1;cursor:default}.send-button svg{width:21px;height:21px;stroke-width:2}
.composer-wrap>p{margin:7px auto 0;color:var(--muted);font-size:10px;text-align:center}
.login-view{height:100dvh;display:grid;grid-template-rows:auto 1fr auto;place-items:center;padding:28px;background:radial-gradient(circle at 50% 45%,#fff 0,#f8f8f8 48%,#f1f1f2 100%)}
.login-brand{justify-self:start}.login-brand img{width:38px;height:38px;border-radius:11px}.login-brand span{font-size:18px}
.login-card{width:min(100%,420px);padding:36px;border:1px solid var(--line);border-radius:20px;background:rgba(255,255,255,.92);box-shadow:var(--shadow)}.login-kicker{color:var(--accent);font-size:11px;font-weight:700;letter-spacing:.09em;text-transform:uppercase}.login-card h1{margin:14px 0 9px;font-size:30px;letter-spacing:-.04em}.login-card>p{margin:0 0 27px;color:var(--muted);font-size:14px;line-height:1.55}.login-card form{display:grid;gap:15px}.login-card label{display:grid;gap:7px}.login-card label span{font-size:12px;font-weight:650}.login-card input{height:47px;padding:0 13px;border:1px solid #d1d1d3;border-radius:10px;outline:0;background:#fff;color:#202123}.login-card input:focus{border-color:#7baef0;box-shadow:0 0 0 3px rgba(47,128,237,.11)}.login-button{height:48px;margin-top:5px;border:0;border-radius:10px;background:var(--text);color:#fff;font-weight:650;cursor:pointer}.login-button:hover{background:#000}.login-button:disabled{opacity:.55;cursor:wait}.login-error{padding:11px 12px;border:1px solid #efcaca;border-radius:9px;background:#fff5f5;color:#a43939;font-size:12px;line-height:1.45}.login-links{display:flex;justify-content:space-between;gap:18px;margin-top:20px}.login-links a{color:var(--muted);font-size:12px;text-decoration:none}.login-links a:hover{color:var(--text)}.login-note{align-self:end;margin:0;color:#85858c;font-size:11px}
.toast{position:fixed;left:50%;bottom:90px;z-index:60;max-width:calc(100vw - 32px);padding:10px 14px;border-radius:10px;background:#202123;color:#fff;font-size:12px;box-shadow:var(--shadow);opacity:0;pointer-events:none;transform:translate(-50%,10px);transition:.2s}.toast.show{opacity:1;transform:translate(-50%,0)}
@keyframes typing{0%,60%,100%{opacity:.35;transform:translateY(0)}30%{opacity:1;transform:translateY(-2px)}}@keyframes message-in{from{opacity:0;transform:translateY(7px)}to{opacity:1;transform:none}}
@media(prefers-color-scheme:dark){:root{color-scheme:dark;--bg:#212121;--sidebar:#171717;--surface:#212121;--surface-2:#2f2f2f;--surface-3:#292929;--text:#ececec;--muted:#a7a7ae;--line:#353535;--shadow:0 16px 45px rgba(0,0,0,.32)}.login-view{background:radial-gradient(circle at 50% 45%,#292929 0,#212121 48%,#171717 100%)}.login-card{background:rgba(33,33,33,.95)}.login-card input{border-color:#484848;background:#292929;color:#ececec}.login-button{background:#ececec;color:#202123}.login-button:hover{background:#fff}.composer-wrap{background:linear-gradient(180deg,rgba(33,33,33,0),var(--surface) 18%)}.send-button{background:#ececec;color:#202123}.login-error{border-color:#693d3d;background:#352525;color:#ffb5b5}}
@media(max-width:780px){.app-shell{grid-template-columns:1fr}.sidebar{position:fixed;inset:0 auto 0 0;width:min(86vw,310px);box-shadow:var(--shadow);transform:translateX(-102%);transition:transform .2s ease}.app-shell.sidebar-open .sidebar{transform:none}.scrim{position:fixed;inset:0;z-index:15;display:block;border:0;background:rgba(0,0,0,.42);opacity:0;pointer-events:none;transition:opacity .2s}.app-shell.sidebar-open .scrim{opacity:1;pointer-events:auto}.sidebar-close,.menu-button{display:grid}.chat-header{padding:0 12px}.messages{padding:24px 14px 12px}.message{gap:10px;margin-bottom:23px}.message-body{max-width:88%}.assistant-avatar{width:27px;height:27px}.composer-wrap{padding-left:10px;padding-right:10px}.connection span{display:none}.suggestions{grid-template-columns:1fr}.suggestions button{min-height:48px;text-align:center}.empty-state{justify-content:flex-start;padding-top:14vh}.empty-state h1{font-size:27px}.login-view{padding:20px}.login-card{padding:28px 22px}.login-note{text-align:center}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;animation-duration:.01ms!important;transition-duration:.01ms!important}}
/* Installed iOS app: keep controls clear of display cutouts. */
.app-shell{padding-top:env(safe-area-inset-top);padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right)}
.sidebar{padding-bottom:env(safe-area-inset-bottom)}
.install-link{display:block;margin:12px 16px;color:var(--muted);font-size:12px;text-decoration:none}.install-link:hover{color:var(--text)}
.login-view{overflow-y:auto;padding-top:calc(20px + env(safe-area-inset-top));padding-bottom:calc(20px + env(safe-area-inset-bottom))}
@media(max-width:780px){.sidebar{padding-top:env(safe-area-inset-top)}.login-card input,.composer textarea{font-size:16px}}
