button,a,input,textarea{transition:border-color .2s,background-color .2s,color .2s,opacity .2s,transform .2s,box-shadow .2s}
button:hover{transform:scale(1.02)}
button:active{transform:scale(.98)}
button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
button svg{width:18px;height:18px;display:block;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
a svg{width:18px;height:18px;display:block;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.brand-mark{background:transparent!important;color:transparent!important;overflow:hidden}
.brand-mark img,.message-avatar img{width:100%;height:100%;display:block;object-fit:contain}
.message.assistant .message-avatar{background:transparent}
.new-chat{display:flex;align-items:center;gap:8px}
.send-button,.stop-button{display:grid;place-items:center}
.attach-button{display:grid;place-items:center;flex:0 0 38px;width:38px;height:38px;border:0;background:transparent;color:var(--muted);border-radius:6px}
.attach-button:hover{background:var(--panel-2);color:var(--text)}
.attachment-list{display:flex;flex-wrap:wrap;gap:8px;width:min(100%,760px);margin:0 auto 8px}
.attachment-list:empty{display:none}
.attachment-chip{display:flex;align-items:center;gap:7px;max-width:260px;height:32px;padding:0 5px 0 10px;border:1px solid var(--line);border-radius:6px;background:var(--panel-2);font-size:12px;color:var(--text)}
.attachment-chip span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.attachment-chip button{display:grid;place-items:center;flex:0 0 24px;width:24px;height:24px;padding:0;border:0;border-radius:4px;background:transparent;color:var(--muted)}
.attachment-chip button:hover{background:var(--line);color:var(--text)}
.attachment-chip svg{width:14px;height:14px}
.send-button[hidden],.stop-button[hidden]{display:none}
.login-links{display:grid;gap:10px;margin-top:18px;text-align:center}
.register-link,.form-footer-link{display:block;margin-top:16px;color:var(--accent);font-size:13px;text-align:center}
.registration-success{margin:22px 0;padding:14px;border-left:3px solid var(--accent);background:#132723;color:#bff9ef;line-height:1.6}
.primary-link{height:44px;display:flex;align-items:center;justify-content:center;border-radius:6px;background:var(--accent);color:#082522;text-decoration:none;font-weight:750}
.guest-button{margin-top:12px;width:100%}.guest-note{margin:10px 0 0;color:var(--muted);font-size:12px;line-height:1.5;text-align:center}.guest-sidebar-note{margin:12px 10px;color:var(--muted);font-size:12px;line-height:1.55}
.login-links .admin-link{margin:0}
.guide-link,.sidebar-guide{color:var(--muted);font-size:12px;text-align:center}
.sidebar-guide{margin:-3px 0 12px}
.extension-link{height:42px;display:flex;align-items:center;justify-content:center;gap:8px;border:1px solid var(--line);border-radius:6px;color:var(--text);text-decoration:none;font-size:13px;font-weight:700}
.extension-link:hover{background:var(--panel-2);border-color:var(--focus)}
.sidebar-download{display:flex;align-items:center;gap:10px;margin:0 0 12px;padding:10px;border:1px solid var(--line);border-radius:6px;color:var(--text);text-decoration:none}
.sidebar-download:hover{background:var(--panel-2);border-color:var(--focus);transform:scale(1.01)}
.sidebar-download>svg{flex:0 0 auto;color:var(--accent)}
.sidebar-download span{min-width:0}
.sidebar-download strong,.sidebar-download small{display:block}
.sidebar-download strong{font-size:12px}
.sidebar-download small{margin-top:2px;color:var(--muted);font-size:10px}
.skeleton-message{pointer-events:none}
.skeleton-lines{display:grid;gap:9px;padding-top:7px}
.skeleton-line{height:10px;border-radius:4px;background:#2b3135;animation:skeleton-pulse 1.4s ease-in-out infinite}
.skeleton-line:nth-child(1){width:76%}
.skeleton-line:nth-child(2){width:92%}
.skeleton-line:nth-child(3){width:58%}
@keyframes skeleton-pulse{0%,100%{opacity:.42}50%{opacity:.9}}
@media(prefers-reduced-motion:reduce){button,a,input,textarea,.sidebar{transition:none}.skeleton-line{animation:none}}

html[data-theme="light"]{color-scheme:light;--bg:#f7f8fa;--panel:#fff;--panel-2:#f0f2f4;--line:#d9dee3;--text:#171a1d;--muted:#687178;--accent:#087f72;--accent-dark:#dff5f1;--danger:#c83d4a;--focus:#0d9488}
html[data-theme="light"] .login-panel{box-shadow:0 20px 60px rgba(27,31,35,.12)}
html[data-theme="light"] .login-panel input{background:#fff}
html[data-theme="light"] .primary,html[data-theme="light"] .send-button{color:#fff}
html[data-theme="light"] .alert{background:#fff0f1;color:#9d2934}
html[data-theme="light"] .conversation-item{color:#4c555b}
html[data-theme="light"] .conversation-item.active{color:#075f56}
html[data-theme="light"] .avatar{background:#dfe5e8;color:#293238}
html[data-theme="light"] .empty-state{color:#30373c}
html[data-theme="light"] .message-avatar{background:#e2e7ea;color:#59636a}
html[data-theme="light"] .message-body{color:#343a40}
html[data-theme="light"] .message.error .message-body{color:#a52f3a}
html[data-theme="light"] .stop-button{background:#fbe6e8;color:#a52f3a}
html[data-theme="light"] .disclaimer{color:#687178}
html[data-theme="light"] .registration-success{background:#e5f7f3;color:#075f56}
html[data-theme="light"] .primary-link{color:#fff}
html[data-theme="light"] .skeleton-line{background:#dde2e5}
.theme-toggle{display:grid;place-items:center;flex:0 0 34px}
.theme-floating{position:fixed;top:18px;right:18px;z-index:2;border:1px solid var(--line);background:var(--panel);box-shadow:0 6px 24px rgba(27,31,35,.08)}
.theme-toggle svg{width:17px;height:17px}
.composer{width:100%;min-height:64px;grid-template-columns:38px minmax(0,1fr) 38px;padding:12px 9px;align-items:center}
#app[data-guest="true"] .composer{grid-template-columns:minmax(0,1fr) 38px}
.composer textarea{min-width:0;min-height:38px;padding:8px 2px}
.composer-wrap{width:100%}
@media(max-width:720px){.composer{min-height:60px;grid-template-columns:34px minmax(0,1fr) 38px;padding:9px 7px}.attach-button{width:34px;height:38px}.composer textarea{min-height:38px}}
body:has(.app-shell){overflow:hidden}
.app-shell{height:100vh;height:100dvh;overflow:hidden}
.sidebar{height:100vh;height:100dvh;overflow:hidden}
.conversation-list{min-height:0;overscroll-behavior:contain}
.chat-main{min-height:0;overflow:hidden}
.messages{min-height:0;overscroll-behavior:contain}
.message.user{grid-template-columns:minmax(0,1fr) 34px}
.message.user .message-avatar{grid-column:2;grid-row:1;justify-self:end}
.message.user .message-body{grid-column:1;grid-row:1;justify-self:end;width:fit-content;max-width:min(78%,680px);padding:10px 13px;border-radius:8px;background:var(--accent-dark);color:var(--text);text-align:left}
.message.user .message-label{text-align:right}
.message.assistant .message-body{max-width:min(100%,760px)}
.message-content a{color:#087f73;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px}
.message-content a:hover{color:#075f56}
.generated-image{width:min(100%,680px);margin:14px 0 0}.generated-image img{display:block;width:100%;height:auto;max-height:680px;object-fit:contain;border:1px solid var(--line);border-radius:8px;background:var(--panel-2)}.generated-image figcaption{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:8px;color:var(--muted);font-size:11px}.generated-image a{color:var(--accent);font-weight:700;text-decoration:none}
@media(max-width:720px){.message.user .message-body{max-width:88%}}
.memory-dialog{width:min(560px,calc(100% - 28px));max-height:min(720px,calc(100dvh - 40px));padding:0;border:1px solid var(--line);border-radius:8px;background:var(--panel);color:var(--text);box-shadow:0 24px 70px rgba(0,0,0,.24)}
.memory-dialog::backdrop{background:rgba(10,14,17,.58)}
.memory-header{display:flex;align-items:flex-start;gap:16px;padding:20px 20px 16px;border-bottom:1px solid var(--line)}
.memory-header>div{min-width:0;flex:1}.memory-header h2{margin:0;font-size:17px}.memory-header p{margin:5px 0 0;color:var(--muted);font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.memory-content{min-height:150px;max-height:52vh;overflow:auto;padding:20px;line-height:1.65;white-space:pre-wrap;overflow-wrap:anywhere}
.memory-content p{margin:0}.memory-content small{display:block;margin-top:18px;color:var(--muted)}.memory-content.error{color:var(--danger)}
.memory-empty{min-height:110px;display:grid;place-content:center;text-align:center;gap:6px;color:var(--muted)}.memory-empty strong{color:var(--text)}.memory-empty span{font-size:12px}
.memory-actions{display:flex;justify-content:flex-end;gap:9px;padding:14px 20px;border-top:1px solid var(--line)}
.secondary-button,.danger-button{height:38px;padding:0 14px;border-radius:6px;font-weight:700}.secondary-button{border:1px solid var(--line);background:var(--panel-2);color:var(--text)}.danger-button{margin-right:auto;border:1px solid var(--danger);background:transparent;color:var(--danger)}
