:root{--bg-base: #0f1114;--bg-surface: #1a1d23;--bg-raised: #22272f;--bg-sunken: #141720;--bg-elevated: #242932;--border: #2a2e36;--border-strong: #3a3f4a;--fg-base: #e6e8eb;--fg-muted: #9aa3b2;--fg-subtle: #6b7380;--accent: #2b6cb0;--accent-hov: #3b7cc0;--accent-fg: #ffffff;--focus-ring: #3b82f6;--danger: #b03a2b;--danger-s: #ef4444;--warning: #c28234;--success: #2d7a2d;--info: #f5d58a;--info-bg: #3b2f1a;--diff-add-fg: #a7f3a0;--diff-add-bg: #0d2a12;--diff-del-fg: #ffb4b4;--diff-del-bg: #2a0d0d;--diff-hunk: #7dd3fc;--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 20px;--sp-6: 24px;--sp-7: 32px;--r-sm: 6px;--r-md: 10px;--r-lg: 14px;--r-xl: 18px;--r-2xl: 24px;--r-pill: 999px;--fs-xs: 11px;--fs-sm: 12px;--fs-md: 13px;--fs-base: 14px;--fs-lg: 16px;--fs-xl: 18px;--fs-2xl: 22px;--shadow-sm: 0 2px 6px rgba(0,0,0,.3);--shadow-md: 0 8px 24px rgba(0,0,0,.5);--shadow-lg: 0 16px 48px rgba(0,0,0,.7);--t-fast: .12s cubic-bezier(.2, .8, .2, 1);--t-base: .2s cubic-bezier(.2, .8, .2, 1);--t-slow: .32s cubic-bezier(.2, .8, .2, 1);--touch: 44px;--scroll-thumb: #2f343d;--scroll-thumb-hov: #3c424d;--scroll-track: transparent}*{scrollbar-width:thin;scrollbar-color:var(--scroll-thumb) var(--scroll-track)}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:var(--scroll-track)}::-webkit-scrollbar-thumb{background:var(--scroll-thumb);border-radius:var(--r-pill);border:2px solid transparent;background-clip:padding-box;transition:background var(--t-fast)}::-webkit-scrollbar-thumb:hover{background:var(--scroll-thumb-hov);background-clip:padding-box;border:2px solid transparent}::-webkit-scrollbar-corner{background:transparent}*,*:before,*:after{box-sizing:border-box}html,body,#root{height:100%;margin:0}html,body{overflow:hidden;overscroll-behavior:none}body{font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:var(--bg-base);color:var(--fg-base);font-size:var(--fs-base);-webkit-text-size-adjust:100%}button{font-family:inherit}:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px;border-radius:var(--r-sm)}.app-root{display:flex;height:100dvh;max-height:100dvh;justify-content:center}.main{flex:1;display:flex;flex-direction:column;padding:var(--sp-3);gap:var(--sp-3);min-width:0;min-height:0;height:100dvh;max-height:100dvh;width:100%}.header{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);background:var(--bg-surface);border-radius:var(--r-lg);flex-shrink:0;box-shadow:var(--shadow-sm)}.header-title{display:flex;flex-direction:column;justify-content:center;gap:2px;min-width:0;flex:1}.header-title h1{margin:0;font-size:var(--fs-lg);font-weight:600;letter-spacing:.1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.header-status{font-size:var(--fs-xs);color:var(--fg-muted);display:flex;align-items:center;gap:6px;line-height:1}.header-status .dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--fg-subtle);flex-shrink:0}.header-status .dot.ok{background:#22c55e;box-shadow:0 0 6px #22c55e80}.header-status .dot.warn{background:var(--warning)}.header-status .dot.bad{background:var(--danger-s)}.header-actions{display:flex;align-items:center;gap:var(--sp-1);flex-shrink:0}.auth-warn{color:#f59e0b;font-size:var(--fs-xs)}.icon-btn{background:transparent;border:none;color:var(--fg-base);padding:0;border-radius:var(--r-pill);cursor:pointer;min-width:40px;min-height:40px;line-height:1;display:inline-flex;align-items:center;justify-content:center;position:relative;transition:background var(--t-fast),color var(--t-fast)}.icon-btn svg{display:block}.icon-btn:hover:not(:disabled){background:var(--bg-raised)}.icon-btn:disabled{opacity:.35;cursor:not-allowed}.icon-btn.push-on{color:var(--focus-ring)}.kebab-wrap{position:relative}.kebab-menu{position:absolute;top:calc(100% + 6px);right:0;background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--r-md);box-shadow:var(--shadow-md);padding:var(--sp-1);display:flex;flex-direction:column;min-width:180px;z-index:50;animation:menu-in var(--t-fast)}@keyframes menu-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.kebab-item{background:transparent;border:none;color:var(--fg-base);font-size:var(--fs-base);text-align:left;padding:var(--sp-3) var(--sp-3);border-radius:var(--r-sm);cursor:pointer;display:flex;align-items:center;gap:var(--sp-3);min-height:44px}.kebab-item:hover:not(:disabled){background:var(--bg-raised)}.kebab-item:disabled{opacity:.35;cursor:not-allowed}.kebab-item .k-ico{font-size:var(--fs-lg);width:22px;display:inline-flex;justify-content:center}.messages-wrap{flex:1 1 0;min-height:0;position:relative;display:flex;flex-direction:column}.messages{flex:1 1 0;min-height:0;overflow-y:auto;padding:var(--sp-4);background:var(--bg-base);display:flex;flex-direction:column;gap:var(--sp-2);-webkit-overflow-scrolling:touch;overscroll-behavior:contain}@media (min-width: 720px){.messages{padding:var(--sp-5) var(--sp-6);gap:var(--sp-3)}}.msg{max-width:85%;padding:8px 12px 6px;border-radius:var(--r-lg);white-space:pre-wrap;word-wrap:break-word;position:relative;font-size:var(--fs-base);line-height:1.45;box-shadow:var(--shadow-sm);animation:msg-in var(--t-base)}@keyframes msg-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.msg.user{background:var(--accent);color:var(--accent-fg);align-self:flex-end;border-top-right-radius:var(--r-sm)}.msg.assistant{background:var(--bg-raised);color:var(--fg-base);align-self:flex-start;border-top-left-radius:var(--r-sm)}.msg.user.msg--grouped{border-top-right-radius:var(--r-lg);margin-top:calc(-1 * var(--sp-1))}.msg.assistant.msg--grouped{border-top-left-radius:var(--r-lg);margin-top:calc(-1 * var(--sp-1))}.msg-body{display:block}.msg-foot{display:flex;align-items:center;gap:6px;margin-top:4px;justify-content:flex-end}.msg.assistant .msg-foot{justify-content:space-between}.msg-time{font-size:10px;color:#ffffff8c;-webkit-user-select:none;user-select:none;line-height:1;flex-shrink:0}.msg.assistant .msg-time{color:var(--fg-subtle)}.msg.system,.msg.error{align-self:center;max-width:80%;padding:6px 14px;border-radius:var(--r-pill);font-size:var(--fs-sm);text-align:center;box-shadow:none}.msg.system{background:var(--info-bg);color:var(--info);border:1px solid rgba(194,130,52,.3)}.msg.error{background:#b03a2b2e;color:var(--diff-del-fg);border:1px solid rgba(176,58,43,.5)}.msg.system .msg-time,.msg.error .msg-time{display:none}.msg.tool{align-self:flex-start;max-width:90%;background:var(--bg-surface);color:var(--fg-muted);border-left:3px solid var(--accent);border-radius:var(--r-sm);padding:6px var(--sp-3);font-family:ui-monospace,monospace;font-size:var(--fs-sm);line-height:1.45;box-shadow:none}.msg.tool .msg-time{display:none}.day-separator{align-self:center;margin:var(--sp-3) 0 var(--sp-2);display:flex;justify-content:center;width:100%;pointer-events:none}.day-separator span{background:var(--bg-surface);color:var(--fg-subtle);font-size:var(--fs-xs);font-weight:500;padding:4px 12px;border-radius:var(--r-pill);border:1px solid var(--border-subtle, rgba(255, 255, 255, .08));letter-spacing:.02em;white-space:nowrap}.speak-wrap{display:inline-flex;align-items:center;gap:4px;line-height:1}.speak-btn{background:var(--bg-sunken);border:1px solid var(--border);color:var(--fg-muted);width:26px;height:26px;border-radius:50%;cursor:pointer;padding:0;line-height:1;display:inline-flex;align-items:center;justify-content:center;transition:color var(--t-fast),border-color var(--t-fast)}.speak-btn svg{display:block}.speak-dots{font-size:10px}.speak-btn:hover:not(:disabled){color:var(--focus-ring);border-color:var(--focus-ring)}.speak-btn:disabled{opacity:.4;cursor:not-allowed}.speak-err{font-size:10px;color:var(--danger-s)}.scroll-to-bottom{position:absolute;right:var(--sp-4);bottom:var(--sp-4);background:var(--bg-elevated);color:var(--fg-base);border:1px solid var(--border);border-radius:var(--r-pill);padding:6px var(--sp-3);font-size:var(--fs-sm);font-weight:600;cursor:pointer;box-shadow:var(--shadow-md);display:inline-flex;align-items:center;gap:6px;animation:msg-in var(--t-fast)}.scroll-to-bottom:hover{background:var(--bg-raised)}.tts-stop-btn{position:absolute;left:var(--sp-4);bottom:var(--sp-4);background:var(--bg-elevated);color:var(--fg-muted);border:1px solid var(--border);border-radius:var(--r-pill);padding:5px 10px;font-size:var(--fs-xs);cursor:pointer;box-shadow:var(--shadow-sm, var(--shadow-md));display:inline-flex;align-items:center;gap:5px;opacity:.85;animation:msg-in var(--t-fast)}.tts-stop-btn:hover{background:var(--bg-raised);opacity:1}.composer{display:flex;align-items:flex-end;gap:var(--sp-2);flex-shrink:0;padding:var(--sp-2) 0 0;position:relative}.kill-btn{background:transparent;border:1px solid var(--danger);color:var(--diff-del-fg);min-width:40px;height:40px;border-radius:var(--r-pill);cursor:pointer;line-height:1;flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;transition:background var(--t-fast)}.kill-btn svg{display:block}.kill-btn:hover:not(:disabled){background:#b03a2b33}.kill-btn:disabled{opacity:.4;cursor:not-allowed}.composer-pill{flex:1 1 0;min-width:0;display:flex;align-items:flex-end;gap:var(--sp-1);background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--r-2xl);padding:4px 6px 4px var(--sp-2);min-height:44px;transition:border-color var(--t-fast)}.composer-pill:focus-within{border-color:var(--focus-ring)}.attach-btn{background:transparent;border:none;color:var(--fg-muted);width:36px;height:36px;border-radius:var(--r-pill);cursor:pointer;line-height:1;flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;transition:background var(--t-fast),color var(--t-fast)}.attach-btn svg{display:block}.attach-btn:hover:not(:disabled){background:var(--bg-raised);color:var(--fg-base)}.attach-btn:disabled{opacity:.4;cursor:not-allowed}.composer-input{flex:1 1 0;min-width:0;width:100%;background:transparent;color:var(--fg-base);border:none;outline:none;padding:8px 6px;font-family:inherit;font-size:var(--fs-base);resize:none;line-height:1.45;max-height:160px;min-height:28px;overflow-y:hidden;scrollbar-width:none}.composer-input::-webkit-scrollbar{display:none}.composer-input:disabled{color:var(--fg-subtle);cursor:not-allowed}.composer-input::placeholder{color:var(--fg-subtle)}.action-circle{background:var(--accent);color:var(--accent-fg);border:none;width:44px;height:44px;border-radius:var(--r-pill);cursor:pointer;line-height:1;flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;transition:background var(--t-fast),transform var(--t-fast);box-shadow:var(--shadow-sm)}.action-circle svg{display:block}.action-circle:hover:not(:disabled){background:var(--accent-hov)}.action-circle:disabled{opacity:.4;cursor:not-allowed}.action-circle:active:not(:disabled){transform:scale(.95)}.audio-btn-wrap{position:relative;display:inline-flex;align-items:center;gap:var(--sp-1);flex-shrink:0}.audio-btn{background:var(--accent);color:var(--accent-fg);border:none;min-width:44px;height:44px;border-radius:var(--r-pill);cursor:pointer;font-size:var(--fs-sm);line-height:1;padding:0 14px;display:inline-flex;align-items:center;justify-content:center;gap:6px;transition:background var(--t-fast),min-width var(--t-fast);box-shadow:var(--shadow-sm);white-space:nowrap;flex-shrink:0}.audio-btn.recording,.audio-btn.busy{min-width:108px}.audio-btn svg{display:block}.audio-btn:hover:not(:disabled){background:var(--accent-hov)}.audio-btn:disabled{opacity:.4;cursor:not-allowed}.audio-btn.recording{background:var(--danger-s);color:#fff;animation:pulseRec 1.2s ease-in-out infinite}.audio-btn.busy{background:var(--bg-raised);color:var(--fg-muted)}@keyframes pulseRec{0%,to{box-shadow:0 0 #ef444480}50%{box-shadow:0 0 0 8px #ef444400}}.audio-cancel{background:var(--bg-surface);border:1px solid var(--border);color:var(--fg-muted);width:32px;height:32px;border-radius:50%;cursor:pointer;flex-shrink:0;display:inline-flex;align-items:center;justify-content:center}.audio-cancel svg{display:block}.audio-cancel:hover{color:var(--fg-base);border-color:var(--fg-muted)}.audio-err{position:absolute;bottom:calc(100% + 4px);right:0;background:#ef44441f;color:var(--danger-s);font-size:var(--fs-xs);padding:4px var(--sp-2);border-radius:var(--r-sm);white-space:nowrap;border:1px solid rgba(239,68,68,.3)}.approval-card{align-self:stretch;background:var(--bg-surface);border:1px solid var(--warning);border-top:3px solid var(--warning);border-radius:var(--r-lg);padding:var(--sp-3) var(--sp-4);display:flex;flex-direction:column;gap:var(--sp-2);box-shadow:var(--shadow-sm)}.approval-head{display:flex;justify-content:space-between;align-items:center;font-size:var(--fs-sm);gap:var(--sp-2);flex-wrap:wrap}.approval-tag{color:var(--info);font-weight:700;text-transform:uppercase;letter-spacing:.5px;display:inline-flex;align-items:center;gap:6px}.approval-tool{font-family:ui-monospace,monospace;background:var(--bg-sunken);border:1px solid var(--border);padding:3px var(--sp-2);border-radius:var(--r-sm);color:var(--fg-muted)}.approval-summary{font-size:var(--fs-base);color:var(--fg-base)}.approval-warning{background:#b03a2b2e;color:var(--diff-del-fg);padding:6px var(--sp-3);border-radius:var(--r-sm);font-size:var(--fs-sm);border:1px solid rgba(176,58,43,.4)}.approval-diff-wrap{position:relative;border:1px solid var(--border);border-radius:var(--r-sm);background:var(--bg-sunken);overflow:hidden}.approval-diff{max-height:260px;overflow:auto;padding:var(--sp-2) var(--sp-3);margin:0;font-family:ui-monospace,monospace;font-size:var(--fs-sm);line-height:1.4;white-space:pre}.approval-diff.collapsed{max-height:140px}.diff-line{display:block}.diff-line.add{background:var(--diff-add-bg);color:var(--diff-add-fg)}.diff-line.del{background:var(--diff-del-bg);color:var(--diff-del-fg)}.diff-line.hunk{color:var(--diff-hunk)}.approval-diff-toggle{display:block;width:100%;background:var(--bg-raised);border:none;border-top:1px solid var(--border);color:var(--fg-muted);font-size:var(--fs-xs);padding:6px;cursor:pointer;text-align:center}.approval-diff-toggle:hover{color:var(--fg-base)}.approval-bash{background:var(--bg-sunken);border:1px solid var(--border);border-radius:var(--r-sm);padding:var(--sp-2) var(--sp-3);margin:0;font-family:ui-monospace,monospace;font-size:var(--fs-sm);white-space:pre-wrap;color:var(--diff-add-fg)}.approval-bash-desc{color:var(--fg-muted);margin-top:4px;font-size:var(--fs-xs)}.approval-signals{background:var(--bg-sunken);border:1px solid rgba(176,58,43,.5);border-radius:var(--r-sm);padding:var(--sp-2) var(--sp-3);font-size:var(--fs-sm);color:var(--diff-del-fg)}.approval-signals-title{font-weight:600;margin-bottom:4px}.approval-signals ul{margin:0;padding-left:18px}.approval-urls{margin-top:6px;font-family:ui-monospace,monospace;word-break:break-all;color:#ffe0a0}.approval-actions{display:flex;gap:var(--sp-2);margin-top:var(--sp-1)}.approval-actions button svg{display:inline-block;vertical-align:middle;margin-right:4px}.approval-actions button{flex:1;padding:var(--sp-3);border-radius:var(--r-md);border:none;cursor:pointer;font-weight:600;min-height:var(--touch);font-size:var(--fs-base);transition:background var(--t-fast)}.approval-allow{background:var(--success);color:#fff}.approval-allow:hover{background:#368936}.approval-deny{background:#7a2d2d;color:#fff}.approval-deny:hover{background:#8a3636}.auth-screen{display:flex;align-items:center;justify-content:center;min-height:100vh;background:var(--bg-base);color:var(--fg-base);padding:var(--sp-4)}.auth-card{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--r-xl);padding:var(--sp-6) var(--sp-7);width:100%;max-width:360px;display:flex;flex-direction:column;gap:var(--sp-3);box-shadow:var(--shadow-lg)}.auth-card h1{margin:0 0 var(--sp-1);font-size:var(--fs-2xl);font-weight:600;text-align:center;letter-spacing:.3px}.auth-sub{margin:0;font-size:var(--fs-md);color:var(--fg-muted);line-height:1.5;text-align:center}.auth-card input{background:var(--bg-sunken);border:1px solid var(--border);color:var(--fg-base);padding:var(--sp-3);border-radius:var(--r-md);font-size:var(--fs-lg);transition:border-color var(--t-fast)}.auth-card input:focus{outline:none;border-color:var(--focus-ring)}.auth-card button{background:var(--accent);color:var(--accent-fg);border:none;padding:var(--sp-3);border-radius:var(--r-md);font-weight:600;font-size:var(--fs-base);cursor:pointer;min-height:var(--touch);transition:background var(--t-fast)}.auth-card button:hover:not(:disabled){background:var(--accent-hov)}.auth-card button:disabled{opacity:.4;cursor:not-allowed}.auth-card button.ghost{background:transparent;border:1px solid var(--border);color:var(--fg-muted);font-weight:400}.auth-card button.ghost:hover:not(:disabled){color:var(--fg-base);border-color:var(--border-strong);background:var(--bg-raised)}.auth-error{color:var(--danger-s);font-size:var(--fs-sm);background:#ef44441a;border:1px solid rgba(239,68,68,.3);padding:var(--sp-2);border-radius:var(--r-sm)}dialog.app-dialog{background:var(--bg-surface);color:var(--fg-base);border:1px solid var(--border);border-radius:var(--r-xl);padding:0;max-height:85vh;max-width:520px;width:calc(100% - 40px);box-shadow:var(--shadow-lg);overflow:hidden}dialog.app-dialog::backdrop{background:#000000a6;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}dialog.app-dialog[open]{animation:dialog-in var(--t-base)}@keyframes dialog-in{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}.sheet-handle{display:none}.dialog-header{display:flex;align-items:center;justify-content:space-between;padding:var(--sp-3) var(--sp-4);border-bottom:1px solid var(--border);gap:var(--sp-3)}.dialog-header h2{margin:0;font-size:var(--fs-lg);font-weight:600;display:flex;align-items:center;gap:var(--sp-2)}.dialog-close{background:transparent;border:none;color:var(--fg-muted);line-height:1;cursor:pointer;padding:0;width:32px;height:32px;border-radius:var(--r-pill);display:inline-flex;align-items:center;justify-content:center;transition:background var(--t-fast)}.dialog-close:hover{color:var(--fg-base);background:var(--bg-raised)}.dialog-close svg{display:block}.dialog-body{padding:var(--sp-4);overflow-y:auto;display:flex;flex-direction:column;gap:var(--sp-4);max-height:70vh}.dialog-footer{display:flex;justify-content:flex-end;gap:var(--sp-2);padding:var(--sp-3) var(--sp-4);border-top:1px solid var(--border);background:var(--bg-sunken)}.dialog-btn{background:var(--bg-raised);color:var(--fg-base);border:1px solid var(--border);border-radius:var(--r-md);padding:10px var(--sp-4);font-size:var(--fs-base);font-weight:500;cursor:pointer;min-height:var(--touch);transition:background var(--t-fast),border-color var(--t-fast)}.dialog-btn:hover:not(:disabled){background:var(--bg-elevated);border-color:var(--border-strong)}.dialog-btn.primary{background:var(--accent);color:var(--accent-fg);border-color:var(--accent)}.dialog-btn.primary:hover:not(:disabled){background:var(--accent-hov);border-color:var(--accent-hov)}.dialog-btn:disabled{opacity:.4;cursor:not-allowed}.card{background:var(--bg-sunken);border:1px solid var(--border);border-radius:var(--r-md);padding:var(--sp-3) var(--sp-4);display:flex;flex-direction:column;gap:var(--sp-3)}.card h3{margin:0;font-size:var(--fs-sm);font-weight:600;color:var(--fg-muted);text-transform:uppercase;letter-spacing:.08em}.settings-field{display:flex;flex-direction:column;gap:4px;font-size:var(--fs-md)}.settings-field>span{color:var(--fg-base);font-weight:500}.settings-field select{background:var(--bg-base);border:1px solid var(--border);color:var(--fg-base);border-radius:var(--r-sm);padding:10px var(--sp-3);font-size:var(--fs-md);font-family:inherit;min-height:42px;transition:border-color var(--t-fast)}.settings-field select:focus{outline:none;border-color:var(--focus-ring)}.toggle-row{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);font-size:var(--fs-md);color:var(--fg-base);cursor:pointer;min-height:42px}.toggle-switch{position:relative;width:42px;height:24px;background:var(--bg-raised);border:1px solid var(--border);border-radius:var(--r-pill);transition:background var(--t-fast);flex-shrink:0}.toggle-switch:after{content:"";position:absolute;top:2px;left:2px;width:18px;height:18px;background:var(--fg-muted);border-radius:50%;transition:left var(--t-fast),background var(--t-fast)}.toggle-row input[type=checkbox]{position:absolute;opacity:0;width:0;height:0}.toggle-row input[type=checkbox]:checked+.toggle-switch{background:var(--accent);border-color:var(--accent)}.toggle-row input[type=checkbox]:checked+.toggle-switch:after{left:20px;background:#fff}.settings-hint{margin:0;font-size:var(--fs-sm);color:var(--fg-muted);line-height:1.5}.settings-hint code{background:var(--bg-base);border:1px solid var(--border);border-radius:4px;padding:1px 5px;font-size:var(--fs-xs)}.settings-error{background:#b03a2b2e;border:1px solid rgba(176,58,43,.5);color:var(--diff-del-fg);border-radius:var(--r-sm);padding:var(--sp-2) var(--sp-3);font-size:var(--fs-sm)}.status-row{display:flex;justify-content:space-between;align-items:center;gap:var(--sp-3);font-size:var(--fs-md)}.status-label{color:var(--fg-muted)}.status-value{font-family:ui-monospace,monospace;font-variant-numeric:tabular-nums;color:var(--fg-base);text-align:right}.status-badge{font-size:var(--fs-sm);font-weight:600;padding:3px 10px;border-radius:var(--r-pill);border:1px solid}.status-badge.ok{color:var(--diff-add-fg);border-color:#22543d;background:#22543d33}.status-badge.bad{color:var(--diff-del-fg);border-color:#5a2020;background:#5a202033}.usage-bar{width:100%;height:8px;background:var(--bg-base);border-radius:4px;overflow:hidden}.usage-fill{height:100%;transition:width .4s ease}.usage-fill.low{background:#22c55e}.usage-fill.mid{background:#f59e0b}.usage-fill.high{background:var(--danger-s)}.usage-bucket{display:flex;flex-direction:column;gap:var(--sp-1);padding:var(--sp-2) 0}.usage-bucket+.usage-bucket{border-top:1px solid var(--border)}.usage-bucket-sub{font-size:var(--fs-xs);color:var(--fg-muted)}.ws-panel{display:flex;flex-direction:column;gap:var(--sp-3);min-height:300px}.ws-panel.dragging{outline:2px dashed var(--focus-ring);outline-offset:-6px;border-radius:var(--r-md)}.ws-head{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-2)}.ws-title{font-weight:600;font-size:var(--fs-md);color:var(--fg-muted);text-transform:uppercase;letter-spacing:.06em}.ws-upload{background:var(--accent);color:var(--accent-fg);border:none;border-radius:var(--r-md);padding:8px var(--sp-3);font-size:var(--fs-sm);font-weight:500;cursor:pointer;min-height:38px;display:inline-flex;align-items:center;gap:6px}.ws-upload svg{display:block}.ws-upload:hover{background:var(--accent-hov)}.ws-cwd{display:flex;align-items:center;gap:var(--sp-2);background:var(--bg-sunken);border:1px solid var(--border);border-radius:var(--r-sm);padding:6px var(--sp-2);font-size:var(--fs-sm)}.ws-cwd button{background:transparent;border:1px solid var(--border);color:var(--fg-muted);width:28px;height:28px;border-radius:var(--r-sm);cursor:pointer;display:inline-flex;align-items:center;justify-content:center}.ws-cwd button svg{display:block}.ws-cwd button:disabled{opacity:.3;cursor:not-allowed}.ws-cwd-path{font-family:ui-monospace,monospace;color:var(--fg-base);flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ws-error{background:#b03a2b2e;border:1px solid rgba(176,58,43,.5);color:var(--diff-del-fg);padding:var(--sp-2);border-radius:var(--r-sm);font-size:var(--fs-sm)}.ws-loading{color:var(--fg-muted);font-size:var(--fs-sm);text-align:center;padding:var(--sp-4)}.ws-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px;max-height:360px;overflow-y:auto}.ws-empty{color:var(--fg-subtle);font-size:var(--fs-sm);text-align:center;padding:var(--sp-4)}.ws-item{display:flex;align-items:center;gap:var(--sp-2);padding:6px var(--sp-2);border-radius:var(--r-sm);font-size:var(--fs-md)}.ws-item:hover{background:var(--bg-raised)}.ws-name{flex:1;min-width:0;display:inline-flex;align-items:center;gap:8px;cursor:default;color:var(--fg-muted)}.ws-name svg{flex-shrink:0}.ws-name-text{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ws-item.dir .ws-name{cursor:pointer;color:var(--fg-base)}.ws-item.dir .ws-name:hover{color:var(--focus-ring)}.ws-size{color:var(--fg-muted);font-size:var(--fs-xs);font-family:ui-monospace,monospace}.ws-dl{color:var(--fg-muted);text-decoration:none;width:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--r-sm)}.ws-dl:hover{background:var(--bg-elevated);color:var(--fg-base)}.ws-del{background:transparent;border:none;color:var(--fg-subtle);width:32px;height:32px;border-radius:var(--r-sm);cursor:pointer;display:inline-flex;align-items:center;justify-content:center}.ws-del:hover{color:var(--danger-s);background:#ef44441a}.ws-drop-hint{text-align:center;color:var(--focus-ring);font-size:var(--fs-md);font-weight:600;padding:var(--sp-4)}@media (min-width: 720px){.main{padding:var(--sp-4);gap:var(--sp-3);max-width:780px;margin:0 auto}.msg{max-width:72%}}@media (min-width: 1024px){.main{max-width:860px;padding:var(--sp-5)}.msg{max-width:68%}}@media (max-width: 719px){.main{padding:var(--sp-2);gap:var(--sp-2)}.header{padding:var(--sp-2) var(--sp-3);gap:var(--sp-2);border-radius:var(--r-md)}.header-title h1{font-size:var(--fs-base)}.messages{padding:var(--sp-3)}.msg{max-width:85%;font-size:var(--fs-base)}.composer-input{font-size:var(--fs-lg)}.icon-btn{min-width:40px;min-height:40px}dialog.app-dialog{margin:0 auto;width:100%;max-width:100%;max-height:92vh;border-radius:var(--r-xl) var(--r-xl) 0 0;border-bottom:none;position:fixed;bottom:0;top:auto;left:0;right:0;animation:sheet-in var(--t-base)}@keyframes sheet-in{0%{transform:translateY(100%)}to{transform:translateY(0)}}dialog.app-dialog .sheet-handle{display:block;width:40px;height:4px;background:var(--border-strong);border-radius:var(--r-pill);margin:var(--sp-2) auto var(--sp-1)}.dialog-body{max-height:65vh}.kebab-menu{min-width:200px}.kebab-item{min-height:48px}}@supports (padding: env(safe-area-inset-bottom)){@media (max-width: 719px){.main{padding-top:max(var(--sp-2),env(safe-area-inset-top));padding-bottom:max(var(--sp-2),env(safe-area-inset-bottom));padding-left:max(var(--sp-2),env(safe-area-inset-left));padding-right:max(var(--sp-2),env(safe-area-inset-right))}dialog.app-dialog{padding-bottom:env(safe-area-inset-bottom)}}}
