:root{--saki-bg:#0d0d0d;--saki-bg-elevated:#11151b;--saki-bg-elevated-2:#15191f;--saki-bg-sidebar:#111;--saki-bg-sidebar-item:#1b2028;--saki-bg-input:#0d0f13;--saki-bg-code:#0f141a;--saki-bg-mute:#1b2028;--saki-bg-bubble:#1a1a1a;--saki-bg-bubble-user:#1e3a5f;--saki-bg-overlay:rgba(0,0,0,.82);--saki-border:#24272d;--saki-border-soft:#2a3039;--saki-border-strong:#2d5a9e;--saki-border-divider:#1f2530;--saki-border-bubble:#2a2a2a;--saki-text:#e7e9ee;--saki-text-strong:#f0f0f0;--saki-text-soft:#cbd5e1;--saki-text-mute:#aeb7c4;--saki-text-faint:#818b99;--saki-text-disabled:#6b7280;--saki-accent:#7db8f7;--saki-accent-strong:#9bd0ff;--saki-accent-bg:#1e3a5f;--saki-accent-bg-soft:rgba(125,184,247,.08);--saki-accent-bd:#2d5a9e;--saki-accent-ink:#06111f;--saki-accent-text:#d9ecff;--saki-success:#6abf7b;--saki-success-bg:rgba(106,191,123,.1);--saki-success-bd:rgba(106,191,123,.3);--saki-success-ink:#b6e0bf;--saki-success-chip-bg:#1a3a2a;--saki-warning:#e6c587;--saki-link:#e6c587;--saki-link-hover:#f1d8a3;--saki-warning-bg:rgba(230,197,135,.08);--saki-warning-bd:rgba(230,197,135,.4);--saki-danger:#f08080;--saki-danger-soft:#f0a0a0;--saki-danger-bg:#4a2a2a;--saki-danger-bd:#8a4a4a;--saki-danger-ink:#f0b0b0;--saki-running:#38bdf8;--saki-running-glow:rgba(56,189,248,.18);--saki-radius-xs:4px;--saki-radius-sm:6px;--saki-radius-md:7px;--saki-radius-lg:8px;--saki-radius-xl:10px;--saki-radius-pill:999px;--saki-radius-bubble-assistant:12px 12px 12px 3px;--saki-radius-bubble-user:12px 12px 3px 12px;--saki-space-1:4px;--saki-space-2:6px;--saki-space-3:8px;--saki-space-4:10px;--saki-space-5:12px;--saki-space-6:14px;--saki-space-7:18px;--saki-space-8:24px;--saki-pad-sidebar-row:14px 16px;--saki-pad-session-item:9px 10px;--saki-pad-bubble:10px 14px;--saki-pad-btn:8px 14px;--saki-pad-ghost:7px 10px;--saki-sidebar-width:248px;--saki-message-max:860px;--saki-user-bubble-max:min(72%,700px);--saki-session-item-min:58px;--saki-avatar-size:28px;--saki-font-family:"Segoe UI",system-ui,sans-serif;--saki-font-mono:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;--saki-fs-xs:11px;--saki-fs-sm:12px;--saki-fs-md:13px;--saki-fs-base:14px;--saki-fs-lg:16px;--saki-fw-regular:400;--saki-fw-medium:600;--saki-fw-bold:700;--saki-lh-tight:1.35;--saki-lh-base:1.6;--saki-lh-relaxed:1.7;--saki-shadow-bubble:0 2px 10px rgba(0,0,0,.12);--saki-shadow-user-bubble:0 6px 18px rgba(30,58,95,.18);--saki-shadow-float:0 4px 14px rgba(0,0,0,.35);--saki-transition-fast:.15s;--saki-transition-base:.2s;--saki-mobile-bp:767px}.saki-app *,.saki-app :after,.saki-app :before{box-sizing:border-box}.saki-app{height:100vh;height:100dvh;display:flex;background:var(--saki-bg);color:var(--saki-text);font-family:var(--saki-font-family);font-size:var(--saki-fs-base)}.saki-sidebar{width:var(--saki-sidebar-width);min-width:var(--saki-sidebar-width);background:var(--saki-bg-sidebar);border-right:1px solid var(--saki-border);display:flex;flex-direction:column}.saki-sidebar-footer,.saki-sidebar-header{min-height:56px;padding:var(--saki-pad-sidebar-row);display:flex;align-items:center;gap:9px;border-bottom:1px solid var(--saki-border);color:inherit;text-decoration:none}.saki-sidebar-footer{border-top:1px solid var(--saki-border);border-bottom:0}.saki-brand,.saki-user-name{font-weight:var(--saki-fw-bold)}.saki-user-name{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.saki-mode-tabs{margin:var(--saki-space-5);display:grid;grid-template-columns:1fr 1fr;border:1px solid #2b313a;border-radius:var(--saki-radius-md);overflow:hidden}.saki-mode-tab{padding:var(--saki-space-3);color:#9aa6b5;text-align:center;text-decoration:none;background:#15181d}.saki-mode-tab.active,.saki-mode-tab.router-link-exact-active{color:var(--saki-accent-text);background:var(--saki-accent-bg)}.saki-session-list{flex:1;overflow:auto;padding:var(--saki-space-1) var(--saki-space-3);scrollbar-width:thin;scrollbar-color:#333 transparent}.saki-session-export,.saki-session-search{display:flex;gap:var(--saki-space-2);padding:var(--saki-space-2) var(--saki-space-3)}.saki-session-search{flex-direction:column;border-bottom:1px solid var(--saki-border-divider)}.saki-session-date-input,.saki-session-search-input{width:100%;min-width:0;border:1px solid var(--saki-border);border-radius:var(--saki-radius-sm);background:var(--saki-bg-input);color:var(--saki-text);font:inherit;font-size:var(--saki-fs-sm);line-height:var(--saki-lh-tight);padding:7px 9px}.saki-session-date-input:focus,.saki-session-search-input:focus{border-color:var(--saki-accent);outline:none}.saki-session-export,.saki-session-search-actions,.saki-session-search-dates{align-items:center}.saki-session-search-dates{display:grid;gap:var(--saki-space-2);grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.saki-session-search-actions{display:flex;justify-content:flex-end}.saki-session-export-btn,.saki-session-tool-btn{min-width:34px;height:30px;border:1px solid var(--saki-border);border-radius:var(--saki-radius-sm);background:var(--saki-bg-elevated);color:var(--saki-text-muted);cursor:pointer;font-size:var(--saki-fs-sm);line-height:1;transition:background var(--saki-transition-fast),border-color var(--saki-transition-fast),color var(--saki-transition-fast)}.saki-session-export-btn:hover:not(:disabled),.saki-session-tool-btn:hover:not(:disabled){border-color:var(--saki-accent);color:var(--saki-accent-text)}.saki-session-export-btn:disabled,.saki-session-tool-btn:disabled{cursor:not-allowed;opacity:.5}.saki-session-search-error{color:var(--saki-danger);font-size:var(--saki-fs-xs);line-height:var(--saki-lh-snug)}.saki-session-export{border-bottom:1px solid var(--saki-border-divider);justify-content:flex-end}.saki-session-list::-webkit-scrollbar{width:4px}.saki-session-list::-webkit-scrollbar-track{background:transparent}.saki-session-list::-webkit-scrollbar-thumb{background:#333;border-radius:2px}.saki-session-item{width:100%;min-height:var(--saki-session-item-min);display:grid;gap:var(--saki-space-1);text-align:left;padding:var(--saki-pad-session-item);border:0;border-radius:var(--saki-radius-md);color:#d5dae3;background:transparent;cursor:pointer;align-items:center;grid-template-columns:1fr auto auto auto;grid-template-rows:auto auto auto}.saki-session-item .saki-session-title{grid-column:1/-1}.saki-session-item .saki-session-summary{grid-column:1/-1;grid-row:2}.saki-session-item .saki-session-date{grid-column:1;grid-row:3}.saki-session-item.active,.saki-session-item:hover{background:var(--saki-bg-sidebar-item)}.saki-session-title{white-space:normal;overflow:visible;word-break:break-word;line-height:var(--saki-lh-tight)}.saki-session-summary{color:var(--saki-text-muted);display:-webkit-box;font-size:var(--saki-fs-sm);line-height:var(--saki-lh-snug);overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2}.saki-hint,.saki-no-sessions,.saki-session-date{color:var(--saki-text-faint);font-size:var(--saki-fs-sm)}.saki-no-sessions{padding:var(--saki-space-5) var(--saki-space-4)}.saki-status-dot{width:8px;height:8px;border-radius:50%;display:inline-block;flex-shrink:0;grid-row:3}.saki-status-dot[data-state=running]{background:var(--saki-running);box-shadow:0 0 0 3px var(--saki-running-glow);animation:saki-pulse 1.4s ease-in-out infinite}.saki-status-dot[data-state=error]{background:var(--saki-danger)}.saki-status-dot[data-state=cancelled]{background:var(--saki-text-disabled)}.saki-status-dot[data-state=warning]{background:var(--saki-warning)}@keyframes saki-pulse{0%,to{opacity:1}50%{opacity:.5}}.saki-session-delete-btn,.saki-session-reset-btn{flex-shrink:0;background:none;border:none;color:#555;cursor:pointer;font-size:var(--saki-fs-base);padding:2px 4px;border-radius:var(--saki-radius-xs);opacity:0;transition:opacity var(--saki-transition-fast),color var(--saki-transition-fast),background var(--saki-transition-fast);line-height:1;grid-row:2}.saki-session-item:hover .saki-session-delete-btn,.saki-session-item:hover .saki-session-reset-btn{opacity:1}.saki-session-delete-btn:hover{color:#e07070;background:#2a1a1a}.saki-session-reset-btn{border:1px solid #4a2020;color:#e07070;font-weight:var(--saki-fw-bold);font-size:var(--saki-fs-xs);padding:1px 5px}.saki-session-reset-btn:hover{background:#2a1010;color:#ff9090}.saki-sidebar-nav{padding:var(--saki-space-3) var(--saki-space-5)}.saki-nav-link{display:flex;align-items:center;gap:var(--saki-space-3);padding:var(--saki-space-2-5,9px);color:var(--saki-text-mute);text-decoration:none;border-radius:var(--saki-radius-sm);font-size:var(--saki-fs-md);transition:background var(--saki-transition-fast),color var(--saki-transition-fast)}.saki-nav-link:hover{background:var(--saki-bg-sidebar-item);color:var(--saki-accent-text)}.saki-nav-link.router-link-active{color:var(--saki-accent)}.saki-avatar,.saki-avatar-placeholder{width:var(--saki-avatar-size);height:var(--saki-avatar-size);border-radius:50%;background:var(--saki-accent-bd);display:grid;place-items:center;flex-shrink:0}.saki-logout-btn{background:none;border:none;color:#666;cursor:pointer;font-size:var(--saki-fs-lg);padding:2px;margin-left:auto}.saki-logout-btn:hover{color:#aaa}.saki-main{min-width:0;min-height:0;flex:1;display:flex;flex-direction:column;overflow:hidden}.saki-mobile-header{display:none}.saki-menu-btn{width:36px;height:36px;display:grid;place-content:center;gap:4px;background:transparent;border:0;cursor:pointer}.saki-menu-btn span{width:18px;height:2px;background:#d5dae3}.saki-sidebar-overlay{position:fixed;inset:0;background:#0000008c;z-index:20}.saki-messages{min-height:0;flex:1;overflow-y:auto;padding:var(--saki-space-8) 0;display:flex;flex-direction:column;gap:var(--saki-space-1);scrollbar-width:thin;scrollbar-color:#2a2a2a transparent;background:transparent}.saki-messages::-webkit-scrollbar{width:5px}.saki-messages::-webkit-scrollbar-track{background:transparent}.saki-messages::-webkit-scrollbar-thumb{background:#2a2a2a;border-radius:3px}.saki-messages::-webkit-scrollbar-thumb:hover{background:#3a3a3a}.saki-load-more{padding:var(--saki-space-3) 0;text-align:center}.saki-load-more-btn{padding:var(--saki-space-2) var(--saki-space-5);border:1px solid var(--saki-border);border-radius:var(--saki-radius-md);background:transparent;color:var(--saki-text-mute);font:inherit;font-size:var(--saki-fs-sm);cursor:pointer}.saki-load-more-btn:hover{background:var(--saki-bg-elevated)}.saki-load-more-btn:disabled{cursor:default;opacity:.5}.saki-empty-state{min-height:100%;display:grid;place-items:center;align-content:center;gap:var(--saki-space-5);color:var(--saki-text-mute);text-align:center}.saki-empty-state h2{margin:0;color:#eef2f7;letter-spacing:0}.saki-empty-state p{max-width:520px;margin:0;line-height:var(--saki-lh-relaxed)}.saki-message{max-width:var(--saki-message-max);width:100%;margin:0 auto}.saki-message.is-user{display:flex;justify-content:flex-end;padding-top:var(--saki-space-5)}.saki-message.is-assistant{display:flex;align-items:flex-start;gap:var(--saki-space-4);padding-top:var(--saki-space-5)}.saki-saki-icon{flex-shrink:0;margin-top:2px}.saki-msg-bubble-wrap{flex:1;min-width:0}.saki-msg-bubble-wrap,.saki-msg-user-wrap{display:flex;flex-direction:column;gap:var(--saki-space-1)}.saki-msg-user-wrap{align-items:flex-end;max-width:var(--saki-user-bubble-max)}.saki-bubble{max-width:100%;margin:0;padding:var(--saki-pad-bubble);border-radius:var(--saki-radius-bubble-assistant);white-space:normal;word-break:break-word;line-height:var(--saki-lh-base);background:var(--saki-bg-bubble);border:1px solid var(--saki-border-bubble);color:var(--saki-text);box-shadow:none;width:-moz-fit-content;width:fit-content}.saki-message.is-user .saki-bubble{white-space:pre-wrap;background:var(--saki-bg-bubble-user);border-color:var(--saki-accent-bd);color:var(--saki-text);border-radius:var(--saki-radius-bubble-user);box-shadow:none}.saki-message.is-assistant .saki-bubble{width:auto;max-width:100%}@keyframes saki-fresh-glow{0%{box-shadow:0 0 0 1px var(--saki-accent),0 0 16px -2px var(--saki-accent)}70%{box-shadow:0 0 0 1px var(--saki-accent),0 0 10px -3px var(--saki-accent)}to{box-shadow:0 0 0 0 transparent,0 0 0 0 transparent}}.saki-message.is-fresh .approval-card,.saki-message.is-fresh .saki-bubble{animation:saki-fresh-glow 4s ease-out 1 forwards;border-color:var(--saki-accent-bd)}@media(prefers-reduced-motion:reduce){.saki-message.is-fresh .approval-card,.saki-message.is-fresh .saki-bubble{animation:none;box-shadow:0 0 0 1px var(--saki-accent)}}.saki-bubble p{margin:var(--saki-space-2) 0}.saki-bubble p:first-child{margin-top:0}.saki-bubble p:last-child{margin-bottom:0}.saki-bubble h1,.saki-bubble h2,.saki-bubble h3,.saki-bubble h4{margin:.8em 0 .4em;line-height:var(--saki-lh-tight);color:var(--saki-text-strong)}.saki-bubble h1:first-child,.saki-bubble h2:first-child,.saki-bubble h3:first-child,.saki-bubble h4:first-child{margin-top:0}.saki-bubble h1{padding-bottom:var(--saki-space-1);border-bottom:1px solid var(--saki-border-divider);font-size:1.22em}.saki-bubble h2{font-size:1.1em}.saki-bubble h3{font-size:1em;color:var(--saki-accent-text)}.saki-bubble h4{font-size:.95em;color:var(--saki-text-soft)}.saki-bubble ol,.saki-bubble ul{margin:var(--saki-space-2) 0;padding-inline-start:1.5em;list-style-position:outside}.saki-bubble ul{list-style-type:disc}.saki-bubble ul ul{list-style-type:circle}.saki-bubble ul ul ul{list-style-type:square}.saki-bubble ol{list-style-type:decimal}.saki-bubble li{margin:var(--saki-space-1) 0;padding-inline-start:.1em}.saki-bubble li>p{margin:0}.saki-bubble li>ol,.saki-bubble li>ul{margin-top:var(--saki-space-1)}.saki-bubble blockquote{margin:var(--saki-space-3) 0;padding:var(--saki-space-2) var(--saki-space-4);border-left:3px solid var(--saki-accent-bd);background:var(--saki-accent-bg-soft);color:var(--saki-text-soft)}.saki-bubble hr{margin:var(--saki-space-5) 0;border:0;border-top:1px solid var(--saki-border-divider)}.saki-bubble a{color:var(--saki-accent);text-underline-offset:.18em}.saki-bubble strong{color:var(--saki-text-strong)}.saki-bubble pre{margin:.5em 0;overflow-x:auto;padding:10px 12px;border-radius:var(--saki-radius-xl);background:var(--saki-bg-code);border:1px solid #262d36;scrollbar-width:thin;scrollbar-color:#2a2a2a transparent}.saki-bubble pre::-webkit-scrollbar{height:5px}.saki-bubble pre::-webkit-scrollbar-thumb{background:var(--saki-border-bubble);border-radius:var(--saki-radius-xs)}.saki-bubble code{font-family:var(--saki-font-mono)}.saki-bubble :not(pre)>code{padding:.12em .35em;border:1px solid var(--saki-border-soft);border-radius:var(--saki-radius-xs);background:var(--saki-bg-code);font-size:.92em}.saki-bubble table{display:block;width:100%;max-width:100%;border-collapse:collapse;overflow-x:auto}.saki-bubble td,.saki-bubble th{border-bottom:1px solid var(--saki-border-divider);padding:var(--saki-space-2) var(--saki-space-3)}.saki-msg-actions{display:flex;align-items:center;gap:var(--saki-space-3);margin-top:var(--saki-space-1);min-height:22px}.saki-message.is-user .saki-msg-actions{justify-content:flex-end}.saki-msg-time{font-size:var(--saki-fs-xs);color:var(--saki-text-disabled)}.saki-msg-time.is-inline{margin-left:auto}.saki-copy-msg-btn,.saki-rollback-btn{background:none;border:1px solid var(--saki-border-soft);color:var(--saki-text-disabled);cursor:pointer;font-size:var(--saki-fs-md);padding:2px 8px;border-radius:var(--saki-radius-xs);transition:opacity var(--saki-transition-fast),color var(--saki-transition-fast),border-color var(--saki-transition-fast)}.saki-copy-msg-btn:hover{color:var(--saki-accent);border-color:var(--saki-accent-bd)}.saki-copy-msg-btn.is-copied{color:var(--saki-success);border-color:#1a4a2a}.saki-rollback-btn{opacity:0;padding:2px 7px}.saki-msg-actions:hover .saki-rollback-btn,.saki-rollback-btn:focus{opacity:1}.saki-rollback-btn:hover{color:var(--saki-accent);border-color:var(--saki-accent-bd)}.saki-rollback-btn:disabled{cursor:wait;opacity:.6}.saki-date-separator{max-width:var(--saki-message-max);width:100%;margin:var(--saki-space-7) auto var(--saki-space-2);display:flex;align-items:center;gap:var(--saki-space-4);color:var(--saki-text-disabled);font-size:var(--saki-fs-xs);letter-spacing:.06em}.saki-date-separator:after,.saki-date-separator:before{content:"";flex:1;height:1px;background:linear-gradient(90deg,transparent,var(--saki-border-soft),transparent)}.saki-date-separator span{padding:2px 10px;border:1px solid var(--saki-border-soft);border-radius:var(--saki-radius-pill);background:var(--saki-bg-elevated)}.saki-thinking{display:flex;align-items:center;gap:var(--saki-space-4);padding:var(--saki-space-4) var(--saki-space-6)!important}.saki-thinking-label{font-size:var(--saki-fs-md);color:var(--saki-text-mute)}@keyframes saki-spin{to{transform:rotate(1turn)}}.saki-spinner-ring{display:inline-block;width:16px;height:16px;border:2px solid rgba(125,184,247,.2);border-top:2px solid var(--saki-accent);border-radius:50%;animation:saki-spin .8s linear infinite;flex-shrink:0}.saki-spinner-ring.is-small{width:12px;height:12px;border-width:2px;vertical-align:middle;margin-right:6px}.saki-msg-phase-prompt,.saki-msg-routing{max-width:var(--saki-message-max);width:100%;margin:0 auto}.saki-msg-phase-prompt details,.saki-msg-routing details{background:var(--saki-bg-elevated);border:1px solid var(--saki-border-divider);border-radius:var(--saki-radius-lg);padding:4px 10px}.saki-msg-phase-prompt summary,.saki-msg-routing summary{display:flex;align-items:center;gap:var(--saki-space-3);cursor:pointer;font-size:var(--saki-fs-sm);color:var(--saki-text-mute);padding:4px 0;list-style:none}.saki-msg-phase-prompt summary::-webkit-details-marker,.saki-msg-routing summary::-webkit-details-marker{display:none}.saki-phase-prompt-badge,.saki-routing-badge{font-size:var(--saki-fs-md)}.saki-phase-prompt-tag,.saki-routing-tag{color:var(--saki-accent);font-weight:var(--saki-fw-medium);font-size:var(--saki-fs-xs);padding:2px 7px;border-radius:var(--saki-radius-pill);background:var(--saki-accent-bg-soft);border:1px solid rgba(125,184,247,.18)}.saki-phase-prompt-tag{color:#c5a36b;background:#c5a36b14;border-color:#c5a36b33}.saki-phase-prompt-summary,.saki-routing-summary-text{color:var(--saki-text-soft);font-weight:500;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.saki-routing-detail{display:grid;gap:var(--saki-space-1);padding:var(--saki-space-3) var(--saki-space-1) var(--saki-space-1)}.saki-routing-row{display:grid;grid-template-columns:120px 1fr;gap:var(--saki-space-3);font-size:var(--saki-fs-sm)}.saki-routing-label{color:var(--saki-text-disabled)}.saki-routing-value{color:var(--saki-accent-text);font-family:var(--saki-font-mono)}.saki-routing-row.is-retry .saki-routing-label{color:#c5a36b}.saki-routing-row.is-retry .saki-routing-value{color:var(--saki-warning)}.saki-phase-prompt-body{margin:var(--saki-space-3) 0 var(--saki-space-1);padding:var(--saki-space-4) var(--saki-space-5);color:var(--saki-text-soft);background:#0d1117;border:1px solid var(--saki-border-divider);border-radius:var(--saki-radius-sm);white-space:pre-wrap;word-break:break-word;font-size:var(--saki-fs-sm);line-height:1.65}.saki-error-bubble{border-color:#693039!important;background:linear-gradient(180deg,#4a171a66,#3a171a99)!important;color:#ffd7d7!important;display:grid;gap:var(--saki-space-2)}.saki-error-title{font-weight:var(--saki-fw-bold);color:#ffb4b4}.saki-error-body{margin:0;font-size:var(--saki-fs-sm);white-space:pre-wrap;word-break:break-word;color:#f0b7b7}.saki-error-hint{margin:var(--saki-space-1) 0 0;padding:var(--saki-space-2) var(--saki-space-3);font-size:var(--saki-fs-sm);color:#ffd9b5;background:#ffd9b514;border:1px solid rgba(255,217,181,.2);border-radius:var(--saki-radius-sm)}.saki-paused-bubble{border-color:#6b4a2a!important;background:linear-gradient(180deg,#4a301773,#3a28148c)!important;color:#ffe8cc!important;display:grid;gap:var(--saki-space-3)}.saki-paused-title{font-weight:var(--saki-fw-bold);font-size:var(--saki-fs-base);color:#ffcc80}.saki-paused-body,.saki-paused-hint{margin:0;font-size:var(--saki-fs-sm);line-height:1.55;color:#f5d9b8}.saki-paused-hint{padding:var(--saki-space-2) var(--saki-space-3);background:#ffcc8014;border:1px solid rgba(255,204,128,.2);border-radius:var(--saki-radius-sm)}.saki-paused-actions{display:flex;flex-wrap:wrap;gap:var(--saki-space-2)}.saki-research-handoff-bubble{border-color:var(--saki-accent-bd)!important;background:linear-gradient(180deg,#254a7a59,#1c345880)!important;color:var(--saki-text-primary,#e7e9ee)!important;display:grid;gap:var(--saki-space-3)}.saki-research-handoff-title{font-weight:var(--saki-fw-bold);font-size:var(--saki-fs-base);color:#b8d4ff}.saki-research-handoff-hint,.saki-research-handoff-summary{margin:0;font-size:var(--saki-fs-sm);line-height:1.55;color:#c8d6e5}.saki-research-handoff-hint{color:#9eb8d4}.saki-research-handoff-actions{display:flex;flex-wrap:wrap;gap:var(--saki-space-2);align-items:center}.saki-coding-suggest-bubble{border-color:var(--saki-accent-bd)!important;background:linear-gradient(180deg,#254a7a59,#1c345880)!important;color:var(--saki-text-primary,#e7e9ee)!important;display:grid;gap:var(--saki-space-3)}.saki-coding-suggest-title{font-weight:var(--saki-fw-bold);font-size:var(--saki-fs-base);color:#b8d4ff}.saki-coding-suggest-body{margin:0;font-size:var(--saki-fs-sm);line-height:1.55;color:#c8d6e5}.saki-coding-suggest-actions{display:flex;flex-wrap:wrap;gap:var(--saki-space-2);align-items:center}.saki-research-suggest-bubble{border-color:var(--saki-accent-bd)!important;background:linear-gradient(180deg,#254a7a59,#1c345880)!important;color:var(--saki-text-primary,#e7e9ee)!important;display:grid;gap:var(--saki-space-3)}.saki-research-suggest-title{font-weight:var(--saki-fw-bold);font-size:var(--saki-fs-base);color:#b8d4ff}.saki-research-suggest-body{margin:0;font-size:var(--saki-fs-sm);line-height:1.55;color:#c8d6e5}.saki-research-suggest-actions{display:flex;flex-wrap:wrap;gap:var(--saki-space-2);align-items:center}.saki-completion-notice{display:flex;align-items:center;gap:var(--saki-space-4);margin:var(--saki-space-6) auto;padding:var(--saki-space-3) var(--saki-space-6);border-radius:var(--saki-radius-pill);background:var(--saki-success-bg);border:1px solid var(--saki-success-bd);color:var(--saki-success-ink);width:-moz-fit-content;width:fit-content;font-size:var(--saki-fs-md)}.saki-completion-icon{display:grid;place-items:center;width:22px;height:22px;border-radius:50%;background:var(--saki-success-chip-bg);color:var(--saki-success);font-weight:var(--saki-fw-bold)}.saki-completion-link{margin-left:var(--saki-space-2);color:var(--saki-link);text-decoration:none}.saki-completion-link:hover{color:var(--saki-link-hover);text-decoration:underline}.saki-scroll-to-bottom{position:absolute;right:24px;bottom:24px;width:36px;height:36px;border-radius:50%;background:var(--saki-accent-bg);color:var(--saki-accent-text);border:1px solid var(--saki-accent-bd);font-size:var(--saki-fs-lg);cursor:pointer;box-shadow:var(--saki-shadow-float);z-index:10;display:grid;place-items:center}.saki-scroll-to-bottom:hover{background:#254a7a}.saki-composer{margin:0 var(--saki-space-7) var(--saki-space-6);border:1px solid var(--saki-border-soft);border-radius:var(--saki-radius-lg);background:var(--saki-bg-elevated);padding:var(--saki-space-5);display:flex;flex-direction:column;gap:var(--saki-space-4)}.saki-textarea{width:100%;color:#f3f4f6;background:var(--saki-bg-input);border:1px solid var(--saki-border-soft);border-radius:var(--saki-radius-md);padding:9px 10px;font:inherit;resize:vertical;min-height:80px;line-height:var(--saki-lh-base);outline:none;transition:border-color var(--saki-transition-fast);scrollbar-width:thin;scrollbar-color:#333 transparent}.saki-textarea::-webkit-scrollbar{width:4px}.saki-textarea::-webkit-scrollbar-thumb{background:#333;border-radius:2px}.saki-textarea:focus{border-color:var(--saki-accent-bd)}.saki-textarea:disabled{opacity:.55;cursor:not-allowed}.saki-composer-actions{display:flex;align-items:center;justify-content:space-between;gap:var(--saki-space-5)}.saki-composer-buttons{display:flex;align-items:center;gap:var(--saki-space-3);flex-shrink:0}.saki-composer-send-mode{color:#f3f4f6;background:var(--saki-bg-input);border:1px solid var(--saki-border-soft);border-radius:var(--saki-radius-md);padding:7px 10px;font:inherit;font-size:.875rem;max-width:220px;outline:none;cursor:pointer;transition:border-color var(--saki-transition-fast)}.saki-composer-send-mode:focus{border-color:var(--saki-accent-bd)}.saki-composer-send-mode:disabled{opacity:.55;cursor:not-allowed}.saki-btn-abort,.saki-btn-danger,.saki-btn-ghost,.saki-btn-primary,.saki-new-btn{border:1px solid transparent;border-radius:var(--saki-radius-md);cursor:pointer;font:inherit}.saki-new-btn{margin:0 var(--saki-space-5) var(--saki-space-5);padding:9px 12px;color:var(--saki-accent-text);background:var(--saki-accent-bg);border-color:var(--saki-accent-bd);display:flex;align-items:center;gap:var(--saki-space-2)}.saki-new-btn:hover:not(:disabled){background:#254a7a}.saki-btn-primary{padding:var(--saki-pad-btn);color:var(--saki-accent-ink);background:var(--saki-accent-strong);display:inline-flex;align-items:center;gap:var(--saki-space-1)}.saki-btn-primary:hover:not(:disabled){background:#b7defc}.saki-btn-ghost{padding:var(--saki-pad-ghost);color:var(--saki-text-soft);background:#171b21;border-color:var(--saki-border-soft)}.saki-btn-ghost:hover:not(:disabled){background:#1f242c}.saki-btn-danger{padding:var(--saki-pad-btn);color:#ffd7d7;background:#3a171a;border-color:#693039}.saki-btn-abort{border-radius:var(--saki-radius-md);border:1px solid var(--saki-danger-bd);background:var(--saki-danger-bg);color:var(--saki-danger-ink);padding:8px 12px;transition:background var(--saki-transition-fast)}.saki-btn-abort:hover{background:#6a3a3a}button.saki-btn-abort:disabled,button.saki-btn-danger:disabled,button.saki-btn-ghost:disabled,button.saki-btn-primary:disabled,button.saki-new-btn:disabled{opacity:.55;cursor:not-allowed}@media(max-width:767px){.saki-sidebar{position:fixed;inset:0 auto 0 0;z-index:30;transform:translate(-100%);transition:transform var(--saki-transition-base) ease;box-shadow:none}.saki-sidebar.is-open{transform:translate(0);box-shadow:4px 0 24px #0009}.saki-mobile-header{display:flex;align-items:center;gap:var(--saki-space-4);min-height:44px;padding:var(--saki-space-3) var(--saki-space-5);background:var(--saki-bg-sidebar);border-bottom:1px solid var(--saki-border);flex-shrink:0;color:inherit;text-decoration:none}.saki-mobile-header:focus-visible,.saki-mobile-header:hover{color:var(--saki-text-strong)}.saki-mobile-title{flex:1;min-width:0;font-weight:var(--saki-fw-bold);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.saki-messages{padding:var(--saki-space-3) var(--saki-space-3) var(--saki-space-5)}.saki-message{padding-left:0;padding-right:0}.saki-message.is-assistant{gap:0}.saki-message.is-assistant>.saki-saki-icon{display:none}.saki-message.is-assistant .saki-bubble,.saki-message.is-assistant .saki-msg-bubble-wrap{width:100%}.saki-bubble{padding:var(--saki-space-3) var(--saki-space-4)}.saki-bubble ol,.saki-bubble ul{padding-inline-start:1.35em}.saki-msg-user-wrap{max-width:85%}.saki-composer{margin:0 var(--saki-space-3) calc(var(--saki-space-3) + env(safe-area-inset-bottom,0px));padding:var(--saki-space-3);gap:var(--saki-space-3)}.saki-textarea{min-height:56px}.saki-scroll-to-bottom{right:16px;bottom:16px}.saki-empty-state{padding:32px 20px}.saki-empty-state h2{font-size:var(--saki-fs-lg);text-align:center}}.saki-pwa-update-banner{position:fixed;top:0;left:0;right:0;z-index:10000;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--saki-space-3);padding:var(--saki-space-3) var(--saki-space-5);background:var(--saki-accent-bg);border-bottom:1px solid var(--saki-accent-bd);color:var(--saki-accent-text);box-shadow:var(--saki-shadow-float)}.saki-pwa-update-text{flex:1 1 12rem;margin:0;font-size:var(--saki-fs-sm);line-height:var(--saki-lh-relaxed)}.saki-pwa-update-actions{display:flex;flex-shrink:0;gap:var(--saki-space-2)}.saki-pwa-update-btn{padding:var(--saki-space-2) var(--saki-space-4);font-size:var(--saki-fs-sm)}@media(max-width:767px){.saki-pwa-update-banner{padding:var(--saki-space-3) var(--saki-space-4)}.saki-pwa-update-actions{width:100%;justify-content:flex-end}}.overlay-fade-enter-active,.overlay-fade-leave-active{transition:opacity .2s}.overlay-fade-enter-from,.overlay-fade-leave-to{opacity:0}.completion-fade-enter-active,.completion-fade-leave-active{transition:opacity .25s,transform .25s}.completion-fade-enter-from,.completion-fade-leave-to{opacity:0;transform:translateY(8px)}.scroll-fade-enter-active,.scroll-fade-leave-active{transition:opacity .18s,transform .18s}.scroll-fade-enter-from,.scroll-fade-leave-to{opacity:0;transform:translateY(6px)}*,:after,:before{box-sizing:border-box;margin:0;padding:0}body,html{height:100%;background:#0d0d0d;color:#e0e0e0}
