:root{--bg:#0b0b0d;--bg-elev-1:#0f0f12;--bg-elev-2:#1a1a1f;--bg-tool:#222;--bg-input-card:#111827;--bg-input-bar:#0d1117;--bg-user-bubble:#1e3a8a;--text:#eee;--text-dim:#aaa;--text-muted:#ccc;--text-on-accent:#fff;--text-disabled:#666;--border:#333;--border-dim:#222;--border-row:#1a1a1f;--border-input-card:#1e3a5f;--border-input-bar:#2a3a6b;--input-border:#4b6cb7;--accent:#3b82f6;--accent-disabled:#1e3a5f;--success:#166534;--danger:#7f1d1d;--danger-text:#f87171;--radius-sm:4px;--radius:6px;--radius-lg:8px;--fs-xs:11px;--fs-sm:12px;--fs-md:13px;--fs-base:14px;--fs-lg:16px;--fs-xl:20px;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-6:24px;--content-max:760px}*,:after,:before{box-sizing:border-box}body,html{margin:0;background:var(--bg);color:var(--text);font-family:system-ui,sans-serif}.app-shell{display:flex;flex-direction:row;height:100vh;width:100%}.main-col{min-width:0}.content-stream,.main-col{flex:1 1;display:flex;flex-direction:column}.content-stream{overflow-y:auto;padding:var(--space-4);gap:var(--space-3)}.content-narrow,.content-stream{max-width:var(--content-max);width:100%;margin:0 auto}.row{gap:var(--space-2)}.row,.row-wide{display:flex;align-items:center}.row-wide{gap:var(--space-3)}.sidebar{width:260px;border-right:1px solid var(--border-dim);display:flex;flex-direction:column;background:var(--bg-elev-1)}.sidebar-header{padding:var(--space-4);border-bottom:1px solid var(--border-dim);display:flex;justify-content:space-between;align-items:center}.sidebar-title{font-size:var(--fs-base)}.sidebar-list{flex:1 1;overflow-y:auto}.sidebar-empty{padding:var(--space-4);opacity:.6;font-size:var(--fs-md)}.app-row{display:flex;align-items:center;gap:var(--space-1);padding:6px var(--space-2);border-bottom:1px solid var(--border-row);background:transparent}.app-row.is-active{background:var(--bg-user-bubble)}.app-row-button{flex:1 1;text-align:left;background:transparent;border:none;color:var(--text);cursor:pointer;padding:6px var(--space-2);font-size:var(--fs-md);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.app-header{padding:var(--space-4);border-bottom:1px solid var(--border-dim);justify-content:space-between;gap:var(--space-2)}.app-header,.app-header-left{display:flex;align-items:center}.app-header-left{gap:10px}.btn{border-radius:var(--radius);cursor:pointer;font:inherit;border:none;padding:10px 20px}.btn-primary{background:var(--accent);color:var(--text-on-accent);border:none}.btn-primary:disabled{background:var(--accent-disabled);color:var(--text-disabled);cursor:not-allowed}.btn-ghost{padding:10px;border:1px solid #444;color:var(--text-on-accent);border-radius:var(--radius)}.btn-ghost,.btn-icon{background:transparent;cursor:pointer}.btn-icon{color:var(--text-dim);border:1px solid var(--border);padding:6px;border-radius:var(--radius-sm);display:flex;align-items:center}.btn-icon-sm{padding:4px 10px;font-size:var(--fs-sm)}.btn-icon-danger{padding:6px;color:var(--danger-text);border-color:transparent}.btn-toggle-pw{border:1px solid var(--border);color:var(--text-dim);padding:8px 10px;border-radius:var(--radius);font-size:var(--fs-sm);white-space:nowrap}.btn-toast-dismiss,.btn-toggle-pw{background:transparent;cursor:pointer}.btn-toast-dismiss{border:none;color:var(--text-on-accent);margin-left:var(--space-1);font-size:var(--fs-lg);line-height:1}.input{width:100%;padding:10px;background:var(--bg-elev-2);border:1px solid var(--input-border);color:var(--text);border-radius:var(--radius);font-size:var(--fs-base);font-family:inherit}.input-plain{border-color:var(--border)}.input-color{width:48px;height:40px;padding:2px;background:var(--bg-elev-2);border:1px solid var(--input-border);border-radius:var(--radius);cursor:pointer}.input-color:disabled{cursor:not-allowed}.input-date{color-scheme:dark}.input-file{color:var(--text);font-size:var(--fs-base)}.label{color:var(--text-muted);font-size:var(--fs-md);margin-bottom:var(--space-2);display:block}.error-text{color:var(--danger-text);font-size:var(--fs-sm);margin-top:var(--space-1)}.color-value{color:var(--text);font-family:monospace;font-size:var(--fs-base)}.gh-icon{color:var(--text-dim);font-size:var(--fs-xl);line-height:1;display:inline-flex}.composer{padding:var(--space-4);border-top:1px solid var(--border-dim);display:flex;gap:var(--space-2);max-width:var(--content-max);width:100%;margin:0 auto}.bubble{padding:var(--space-3);border-radius:var(--radius-lg);max-width:80%}.bubble-assistant{background:var(--bg-elev-2);align-self:flex-start}.bubble-user{background:var(--bg-user-bubble);align-self:flex-end}.bubble-tool{background:var(--bg-tool);align-self:flex-start;font-family:monospace;font-size:var(--fs-sm);opacity:.8}.bubble-meta{font-size:var(--fs-xs);opacity:.6;margin-bottom:var(--space-1);display:flex;align-items:center;gap:var(--space-1)}.bubble-body{white-space:pre-wrap}.dyn-input{padding:var(--space-3) 0;border-top:1px solid var(--border-input-bar);background:var(--bg-input-bar)}.dyn-input-inner{max-width:var(--content-max);margin:0 auto;padding:0 var(--space-4)}.dyn-input-card{background:var(--bg-input-card);border:1px solid var(--border-input-card);border-radius:var(--radius-lg);padding:var(--space-4)}.dyn-input-row{display:flex;gap:var(--space-2);align-items:center}.dyn-input-grow{flex:1 1;min-width:0}.toast{position:fixed;top:var(--space-4);right:var(--space-4);z-index:50;padding:10px 14px;border-radius:var(--radius);color:var(--text-on-accent);display:flex;gap:var(--space-2);align-items:center;font-size:var(--fs-md);box-shadow:0 4px 12px rgba(0,0,0,.4)}.toast.is-saving{background:var(--bg-user-bubble)}.toast.is-saved{background:var(--success)}.toast.is-error{background:var(--danger)}.login-main{max-width:360px;margin:80px auto;padding:var(--space-6)}.login-title{margin-bottom:var(--space-6)}.login-form{display:flex;flex-direction:column;gap:var(--space-3)}.login-error{color:var(--danger-text);margin-top:var(--space-3)}.login-toggle{margin-top:var(--space-4)}@keyframes blink{0%,50%{opacity:1}51%,to{opacity:0}}.blink-cursor{display:inline-block;margin-left:2px;animation:blink 1s steps(1) infinite}@keyframes spin{to{transform:rotate(1turn)}}.save-spinner{width:14px;height:14px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:spin .8s linear infinite}