:root{--novi-cobalt:#1E5BC6;--novi-teal:#1A8B86;--novi-emerald:#1E8449;--novi-orange:#E8722C;--novi-graphite:#1A1A1A;--ink-900:#0F1012;--ink-800:#1A1A1A;--ink-700:#2D2D30;--ink-500:#6B6B70;--ink-400:#9A9A9F;--ink-300:#C9C9CC;--ink-200:#E5E4DF;--ink-150:#EFEDE6;--ink-100:#F5F3EC;--ink-50:#FAF8F2;--paper:#FAF8F2;--surface:#FFFFFF;--surface-2:#FBFAF6;--success:var(--novi-emerald);--warning:var(--novi-orange);--info:var(--novi-cobalt);--danger:#C8323A;--primary:var(--novi-cobalt);--font-display:"Geist","Noto Sans SC",system-ui,sans-serif;--font-body:"Geist","Noto Sans SC",system-ui,sans-serif;--font-mono:"Geist Mono",ui-monospace,"SF Mono","Cascadia Code","Cascadia Mono",Consolas,"JetBrains Mono","Microsoft YaHei","PingFang SC","Noto Sans SC",monospace;--s-1:4px;--s-2:8px;--s-3:12px;--s-4:16px;--s-5:24px;--s-6:32px;--s-7:48px;--s-8:64px;--r-1:4px;--r-2:6px;--r-3:10px;--r-4:14px;--r-pill:999px;--stroke-hair:0.5px;--stroke-thin:1px;--stroke-med:1.5px;--stroke-bold:2px;--shadow-1:0 1px 0 rgba(15,16,18,.04),0 0 0 0.5px rgba(15,16,18,.06);--shadow-2:0 4px 16px -8px rgba(15,16,18,.12),0 0 0 0.5px rgba(15,16,18,.08);--shadow-3:0 12px 40px -16px rgba(15,16,18,.18),0 0 0 0.5px rgba(15,16,18,.08);--ease-out:cubic-bezier(.2,.7,.2,1);--ease-in-out:cubic-bezier(.6,.2,.2,1);--dur-1:120ms;--dur-2:220ms;--dur-3:360ms;--bg:var(--paper);--bg-2:var(--ink-100);--bg-3:var(--ink-150);--panel-bg:var(--surface);--border:var(--ink-200);--border-soft:var(--ink-150);--text:var(--ink-800);--text-2:var(--ink-500);--text-3:var(--ink-400);--topbar-h:64px;--panel-handle-w:8px}[data-theme=dark]{--paper:#0F1012;--bg:#0F1012;--bg-2:#1A1A1A;--bg-3:#252528;--border:#2D2D30;--border-soft:#252528;--text:#E5E4DF;--text-2:#9A9A9F;--text-3:#6B6B70;--ink-50:#0F1012;--ink-100:#1A1A1A;--ink-150:#252528;--ink-200:#2D2D30;--surface:#151517;--surface-2:#1A1A1C;--panel-bg:var(--surface)}*,:after,:before{box-sizing:border-box;margin:0;padding:0}html{font-family:var(--font-body);font-size:15px;line-height:1.6;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{overflow:hidden;height:100dvh}a{color:inherit;text-decoration:none}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--ink-300);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--ink-400)}.app-shell{display:flex;flex-direction:column;height:100dvh;overflow:hidden}.topbar{height:var(--topbar-h);border-bottom:var(--stroke-thin) solid var(--border);background:var(--paper);padding:0 var(--s-5);gap:var(--s-4);flex-shrink:0;z-index:100}.topbar,.topbar-brand{display:flex;align-items:center}.topbar-brand{gap:var(--s-2);cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;color:var(--text)}.topbar-brand img{height:40px;width:auto}.topbar-sep{color:var(--text-3);font-size:18px;line-height:1;-webkit-user-select:none;-moz-user-select:none;user-select:none}.topbar-project{display:flex;align-items:center;gap:var(--s-2);font-size:13px;font-weight:500;color:var(--text)}.topbar-spacer{flex:1 1}.topbar-actions{display:flex}.btn,.topbar-actions{align-items:center;gap:var(--s-2)}.btn{display:inline-flex;padding:0 var(--s-4);height:32px;font-family:var(--font-body);font-size:13px;font-weight:500;border-radius:var(--r-2);border:var(--stroke-thin) solid transparent;cursor:pointer;transition:transform var(--dur-1) var(--ease-out),background var(--dur-1);white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;user-select:none}.btn:hover{transform:translateY(-.5px)}.btn:active{transform:translateY(0)}.btn-primary{background:var(--primary);color:#fff;border-color:var(--primary)}.btn-primary:hover{background:#1a50b3}.btn-secondary{background:var(--text);color:var(--bg);border-color:var(--text)}.btn-secondary:hover{background:var(--ink-700)}.btn-ghost{background:transparent;color:var(--text);border-color:var(--border)}.btn-ghost:hover{background:var(--bg-3)}.btn-text{background:transparent;color:var(--primary);border-color:transparent;padding:0 var(--s-2)}.btn-text:hover{background:var(--bg-2)}.btn-danger{background:var(--danger);color:#fff;border-color:var(--danger)}.btn-sm{height:28px;font-size:12px;padding:0 var(--s-3)}.btn-lg{height:40px;font-size:14px}.btn:disabled{opacity:.5;cursor:not-allowed;transform:none}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:var(--r-2);border:none;background:transparent;color:var(--text-2);cursor:pointer;transition:background var(--dur-1),color var(--dur-1);flex-shrink:0}.icon-btn:hover{background:var(--bg-3);color:var(--text)}.icon-btn.active{color:var(--text);background:var(--bg-2)}.icon-btn.icon-btn-active{color:var(--primary);background:color-mix(in srgb,var(--primary) 12%,transparent)}.icon-btn:disabled{opacity:.45;cursor:not-allowed}.icon-btn:disabled:hover{background:transparent;color:var(--text-2)}.icon-btn-sm{width:28px;height:28px}.badge{display:inline-flex;align-items:center;gap:5px;padding:2px 8px;border-radius:var(--r-pill);border:var(--stroke-thin) solid;font-size:11px;line-height:1.4;white-space:nowrap}.badge:before{content:"";width:5px;height:5px;border-radius:50%;background:currentColor;flex-shrink:0}.badge-running{color:var(--success)}.badge-building,.badge-connecting{color:var(--info)}.badge-closed,.badge-idle{color:var(--text-3)}.badge-warning{color:var(--warning)}.badge-error{color:var(--danger)}.workspace{flex:1 1;min-height:0;padding:var(--s-3);gap:0;background-image:linear-gradient(var(--border-soft) .5px,transparent .5px),linear-gradient(90deg,var(--border-soft) .5px,transparent .5px);background-size:32px 32px;background-color:var(--paper)}.panel,.workspace{display:flex;overflow:hidden}.panel{flex-direction:column;background:var(--panel-bg);min-width:0;flex-shrink:0;border:var(--stroke-thin) solid var(--border);border-radius:var(--r-3);box-shadow:var(--shadow-1)}.panel-center{flex:1 1;min-width:0;flex-shrink:1}.panel-aux{background:var(--surface-2)}.panel-primary{background:var(--surface);box-shadow:var(--shadow-2);border-color:var(--border)}.panel-subheader{display:flex;align-items:center;justify-content:space-between;height:30px;padding:0 var(--s-3);border-bottom:var(--stroke-thin) solid var(--border-soft);flex-shrink:0}.panel-subheader-title{font-size:11px;font-weight:500;letter-spacing:.06em;text-transform:uppercase;color:var(--text-2)}.panel-header{display:flex;align-items:center;height:36px;border-bottom:var(--stroke-thin) solid var(--border);flex-shrink:0;gap:var(--s-2);padding:0 var(--s-3)}.panel-header .panel-tabs{display:flex;align-items:center;flex:1 1;gap:0;overflow:hidden}.panel-tab{display:flex;align-items:center;gap:var(--s-1);padding:0 var(--s-3);height:36px;font-size:12px;color:var(--text-2);cursor:pointer;border:none;border-bottom:var(--stroke-med) solid transparent;background:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none;transition:color var(--dur-1),border-color var(--dur-1);white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;user-select:none}.panel-tab:hover{color:var(--text)}.panel-tab.active{color:var(--text);border-bottom-color:var(--text)}.panel-body{flex:1 1;overflow:auto;min-height:0}.panel-handle{width:var(--panel-handle-w);background:transparent;cursor:col-resize;flex-shrink:0;transition:background var(--dur-1),width var(--dur-2) var(--ease-out);position:relative;z-index:10;border-radius:var(--r-pill)}.panel-handle:before{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:2px;height:2px;border-radius:50%;background:var(--text-3);box-shadow:0 -6px 0 var(--text-3),0 6px 0 var(--text-3);opacity:0;transition:opacity var(--dur-1);pointer-events:none}.panel-handle.dragging,.panel-handle:hover{background:color-mix(in srgb,var(--primary) 18%,transparent)}.panel-handle.dragging:before,.panel-handle:hover:before{opacity:1}.panel-collapsed{width:40px!important;min-width:40px!important}.panel-collapsed .panel-body,.panel-collapsed .panel-header .panel-tabs{display:none}.grid-bg{background-image:linear-gradient(var(--border) .5px,transparent .5px),linear-gradient(90deg,var(--border) .5px,transparent .5px);background-size:32px 32px}.grid-bg,.grid-bg-fine{background-color:var(--bg)}.grid-bg-fine{background-image:linear-gradient(var(--border-soft) .5px,transparent .5px),linear-gradient(90deg,var(--border-soft) .5px,transparent .5px);background-size:24px 24px}.chat-messages{flex:1 1;overflow-y:auto;padding:var(--s-4) var(--s-5);min-height:0}.chat-vitem-inner{width:100%;max-width:640px;margin-left:auto;margin-right:auto}.chat-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;gap:var(--s-3);color:var(--text-3);text-align:center}.chat-empty-icon{opacity:.3}.chat-empty p{font-size:13px;max-width:200px;line-height:1.5}.session-sidebar{position:absolute;top:0;left:0;height:100%;width:200px;z-index:30;display:flex;flex-direction:column;border-right:var(--stroke-thin) solid var(--border);background:var(--bg-2);box-shadow:var(--shadow-3);transition:transform var(--dur-2) var(--ease-out),opacity var(--dur-2) var(--ease-out)}.session-sidebar-open{transform:translateX(0);opacity:1;pointer-events:auto}.session-sidebar-closed{transform:translateX(-100%);opacity:0;pointer-events:none}.session-sidebar-backdrop{position:absolute;inset:0;z-index:29}.session-sidebar-header{display:flex;align-items:center;gap:var(--s-1);height:36px;padding:0 var(--s-2) 0 var(--s-3);border-bottom:var(--stroke-thin) solid var(--border);flex-shrink:0}.session-sidebar-title{flex:1 1;font-size:11px;font-weight:500;color:var(--text-2);text-transform:uppercase;letter-spacing:.06em}.session-sidebar-list{flex:1 1;overflow-y:auto;padding:var(--s-2) var(--s-1);display:flex;flex-direction:column;gap:2px}.session-card{padding:var(--s-2) var(--s-2);border-radius:var(--r-2);cursor:pointer;border:var(--stroke-thin) solid transparent;transition:background var(--dur-1),border-color var(--dur-1)}.session-card:hover{background:var(--bg-3)}.session-card-active{background:var(--surface);border-color:var(--border);box-shadow:var(--shadow-1)}.session-card-disabled{opacity:.5;cursor:not-allowed}.session-card-row{display:flex;align-items:center;gap:var(--s-1);margin-bottom:3px}.session-card-id{flex:1 1;font-family:var(--font-mono);font-size:11px;font-weight:500;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.session-card-active .session-card-id{color:var(--primary)}.session-card-delete{display:none;padding:2px;border:none;background:transparent;color:var(--text-3);cursor:pointer;border-radius:var(--r-1);line-height:0}.session-card-delete:hover{color:var(--danger);background:rgba(200,50,58,.1)}.session-card-delete:disabled{opacity:.4;cursor:not-allowed}.session-card:hover .session-card-delete{display:flex;align-items:center}.session-card-meta{display:flex;flex-direction:column;gap:1px;font-size:10px;color:var(--text-3);line-height:1.4}.session-card-result{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px}.session-card-result span{font-family:var(--font-mono);font-size:9.5px;color:var(--text-2);background:var(--bg-3);border-radius:var(--r-1);padding:1px 4px;white-space:nowrap}.history-load-btn{align-self:center;height:28px;padding:0 var(--s-3);border:var(--stroke-thin) solid var(--border);border-radius:var(--r-2);background:var(--bg);color:var(--text-2);font-size:12px;cursor:pointer}.history-load-btn:hover{background:var(--bg-2);color:var(--text)}.history-load-btn:disabled{opacity:.55;cursor:not-allowed}.history-error{align-self:stretch;padding:var(--s-2) var(--s-3);border:var(--stroke-thin) solid rgba(200,50,58,.25);border-radius:var(--r-2);color:var(--danger);background:rgba(200,50,58,.08);font-size:12px}.message{display:flex;flex-direction:column;gap:2px}.message-user{align-items:flex-end;max-width:82%;margin-left:auto!important;margin-right:0!important}.message-assistant{align-items:flex-start;max-width:100%;margin-right:auto!important;margin-left:0!important;gap:var(--s-2)}.message-bubble{padding:var(--s-2) var(--s-3);border-radius:var(--r-3);font-size:13px;line-height:1.6;word-break:break-word}.message-user .message-bubble{background:var(--bg-2);color:var(--text);border:var(--stroke-thin) solid var(--border-soft);border-radius:var(--r-3) var(--r-3) 4px var(--r-3);padding:var(--s-2) var(--s-3)}.message-assistant .message-bubble{background:transparent;color:var(--text);padding:0;border-radius:0}.message-assistant .message-bubble-md{padding:0}.streaming-cursor{display:inline-block;margin-left:1px;color:var(--primary);animation:streaming-blink 1s steps(1) infinite}@keyframes streaming-blink{0%,50%{opacity:1}50.01%,to{opacity:0}}.message-bubble-md{padding:var(--s-2) var(--s-3)}.message-bubble-md p{margin:0 0 var(--s-2);line-height:1.65}.message-bubble-md p:last-child{margin-bottom:0}.message-bubble-md h1,.message-bubble-md h2,.message-bubble-md h3,.message-bubble-md h4{font-weight:600;margin:var(--s-3) 0 var(--s-1);line-height:1.3}.message-bubble-md h1{font-size:15px}.message-bubble-md h2{font-size:14px}.message-bubble-md h3,.message-bubble-md h4{font-size:13px}.message-bubble-md h1:first-child,.message-bubble-md h2:first-child,.message-bubble-md h3:first-child{margin-top:0}.message-bubble-md ol,.message-bubble-md ul{margin:0 0 var(--s-2) var(--s-4);padding:0}.message-bubble-md li{margin-bottom:2px;line-height:1.6}.message-bubble-md li:last-child{margin-bottom:0}.message-bubble-md code{font-family:var(--font-mono);font-size:12px;background:var(--bg-3);border-radius:var(--r-1);padding:1px 5px;color:var(--text)}.message-bubble-md pre{margin:var(--s-2) 0;border-radius:var(--r-2);overflow:hidden;background:var(--ink-800)}.message-bubble-md pre code{display:block;padding:var(--s-3);background:transparent;font-size:12px;line-height:1.55;overflow-x:auto;color:var(--ink-200)}.message-bubble-md blockquote{border-left:var(--stroke-med) solid var(--border);padding:var(--s-1) var(--s-3);margin:var(--s-2) 0;color:var(--text-2);font-style:italic}.message-bubble-md hr{border:none;border-top:var(--stroke-thin) solid var(--border);margin:var(--s-3) 0}.message-bubble-md a{color:var(--primary);text-decoration:underline}.message-bubble-md a:hover{opacity:.8}.message-bubble-md strong{font-weight:600}.message-bubble-md em{font-style:italic}.message-bubble-md table{width:100%;border-collapse:collapse;font-size:12.5px;margin:var(--s-2) 0}.message-bubble-md td,.message-bubble-md th{padding:var(--s-1) var(--s-2);border:var(--stroke-thin) solid var(--border);text-align:left}.message-bubble-md th{background:var(--bg-3);font-weight:500}.message-thinking{border-left:var(--stroke-med) solid var(--ink-300);padding:var(--s-2) var(--s-3);margin:var(--s-1) 0;font-family:var(--font-mono);font-size:10.5px;color:var(--text-2);font-style:italic;max-height:120px;overflow-y:auto;border-radius:0 var(--r-1) var(--r-1) 0;background:var(--bg-2);animation:thinking-pulse 2.4s ease-in-out infinite}@keyframes thinking-pulse{0%,to{border-left-color:var(--ink-300);opacity:.85}50%{border-left-color:var(--primary);opacity:1}}.message-tool{position:relative;border:var(--stroke-thin) solid var(--border-soft);border-left:var(--stroke-bold) solid var(--ink-300);border-radius:var(--r-2);background:var(--surface-2);overflow:hidden;font-family:var(--font-body);font-size:11.5px;width:100%;transition:border-color var(--dur-1) var(--ease-out)}.message-tool:hover{border-color:var(--border)}.message-tool:has(.tool-pending){border-left-color:var(--info)}.message-tool:has(.tool-ok){border-left-color:var(--success)}.message-tool:has(.tool-err){border-left-color:var(--danger)}.message-tool-header{display:flex;align-items:center;gap:var(--s-2);padding:6px var(--s-3);cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;min-height:28px}.message-tool-header:hover{background:var(--bg-2)}.message-tool-header>svg:first-child{color:var(--text-3);flex-shrink:0}.message-tool-name{font-weight:500;color:var(--text);flex-shrink:0;letter-spacing:.01em;white-space:nowrap}.message-tool-summary{flex:1 1;min-width:0;font-family:var(--font-body);font-size:11px;color:var(--text-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.message-tool-status{font-family:var(--font-body);font-size:10px;font-weight:500;padding:1px 7px;border-radius:var(--r-pill);letter-spacing:.02em;flex-shrink:0}.tool-pending{color:var(--info);background:rgba(30,91,198,.08)}.tool-pending:before{content:"";display:inline-block;width:5px;height:5px;border-radius:50%;background:var(--info);margin-right:4px;vertical-align:1px;animation:typing-label-pulse 1.4s ease-in-out infinite}.tool-ok{color:var(--success);background:rgba(30,132,73,.08)}.tool-err{color:var(--danger);background:rgba(200,50,58,.08)}.message-tool-body{padding:var(--s-2) var(--s-3);background:var(--bg);border-top:var(--stroke-thin) solid var(--border-soft);font-size:11px;line-height:1.55;color:var(--text-2);max-height:280px;overflow-y:auto;display:flex;flex-direction:column;gap:var(--s-2)}.message-tool-section{display:flex;flex-direction:column;gap:4px}.message-tool-section-label{font-family:var(--font-body);font-size:9.5px;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--text-3)}.message-tool-section-content{margin:0;font-family:var(--font-mono);font-size:11px;line-height:1.55;white-space:pre-wrap;word-break:break-word}.message-tool-section-view{display:flex;flex-direction:column;gap:var(--s-2)}.message-tool-section-input{color:var(--info)}.message-tool-section-result{color:var(--success)}.message-tool-section-error{color:var(--danger)}.tool-result-card{width:100%;background:var(--surface)}.tool-result-grid{gap:6px 10px}.tool-result-stack{display:flex;flex-direction:column;gap:4px}.tool-result-label{font-family:var(--font-body);font-size:10px;color:var(--text-3);letter-spacing:.04em;text-transform:uppercase}.tool-result-code{margin:0;padding:var(--s-2) var(--s-3);border-radius:var(--r-2);border:var(--stroke-thin) solid var(--border-soft);background:var(--bg);color:var(--text);font-family:var(--font-mono);font-size:11px;line-height:1.55;white-space:pre-wrap;word-break:break-word;overflow:auto;max-height:220px}.tool-result-code-error{color:var(--danger)}.tool-result-list{list-style:none;display:flex;flex-direction:column;gap:6px}.tool-result-list-item{border:var(--stroke-thin) solid var(--border-soft);border-radius:var(--r-2);background:var(--bg);padding:var(--s-2) var(--s-3);display:flex;flex-direction:column;gap:2px}.tool-result-list-title{color:var(--text);font-weight:500}.tool-result-list-meta{color:var(--text-3);font-size:10px}.tool-result-list-body{color:var(--text-2)}.tool-result-empty{color:var(--text-3);font-family:var(--font-body)}.message-meta-card{width:100%;border:var(--stroke-thin) solid var(--border-soft);border-radius:var(--r-2);background:var(--bg-2);padding:var(--s-2) var(--s-3);display:flex;flex-direction:column;gap:6px}.message-meta-title{font-size:11px;font-weight:600;color:var(--text)}.message-meta-body{font-size:12px;color:var(--text-2);line-height:1.5;white-space:pre-wrap;word-break:break-word}.message-meta-grid{display:flex;flex-wrap:wrap;gap:4px 8px}.message-meta-foot,.message-meta-grid{font-family:var(--font-mono);font-size:10.5px;color:var(--text-3)}.block-collapse-btn{display:block;width:100%;padding:6px 12px;margin:2px 0;background:var(--surface-2);border:var(--stroke-thin) solid var(--border);border-radius:var(--r-md);color:var(--text-3);font-size:12px;cursor:pointer;text-align:center;transition:background .15s,color .15s}.block-collapse-btn:hover{background:var(--surface-3);color:var(--text-1)}.message-permission-card{width:100%;border:var(--stroke-thin) solid rgba(200,50,58,.22);border-left:var(--stroke-bold) solid var(--danger);border-radius:var(--r-2);background:rgba(200,50,58,.08);padding:var(--s-2) var(--s-3);display:flex;flex-direction:column;gap:6px}.message-permission-title{font-size:11px;font-weight:600;color:var(--danger)}.message-permission-body{font-size:12px;color:var(--text);line-height:1.5}.message-permission-foot{font-family:var(--font-mono);font-size:10.5px;color:var(--text-2)}.message-error-card{width:100%;border:var(--stroke-thin) solid rgba(200,50,58,.3);border-left:var(--stroke-bold) solid var(--danger);border-radius:var(--r-2);background:rgba(200,50,58,.08);padding:var(--s-2) var(--s-3);display:flex;flex-direction:column;gap:8px}.message-error-title{font-size:12px;font-weight:600;color:var(--danger)}.message-error-body{font-size:12px;color:var(--text);line-height:1.5;white-space:pre-wrap;word-break:break-word}.message-error-section{display:flex;flex-direction:column;gap:4px;padding-top:6px;border-top:var(--stroke-thin) solid rgba(200,50,58,.18)}.message-error-section-label{font-size:10.5px;font-weight:600;color:var(--text-2);text-transform:uppercase;letter-spacing:.04em}.message-error-item{display:flex;flex-direction:column;gap:2px;padding:4px 6px;background:rgba(0,0,0,.04);border-radius:var(--r-1);font-size:11.5px;line-height:1.45}.message-error-item-name{font-family:var(--font-mono);font-size:11px;color:var(--text);font-weight:600}.message-error-item-msg{color:var(--text);white-space:pre-wrap;word-break:break-word}.message-error-item-foot{font-size:10px}.message-error-foot,.message-error-item-foot{font-family:var(--font-mono);color:var(--text-2)}.message-error-foot{font-size:10.5px;padding-top:6px;border-top:var(--stroke-thin) solid rgba(200,50,58,.18)}.message-time{font-size:10px;color:var(--text-3);padding:0 var(--s-1)}.chat-todos{padding:var(--s-2) var(--s-3) 0}.todo-panel{position:relative}.todo-bar{display:flex;align-items:center;gap:var(--s-2);width:100%;padding:var(--s-2) var(--s-3);border:var(--stroke-thin) solid var(--border);border-radius:var(--r-2);background:var(--bg-2);cursor:pointer;font-size:12px;text-align:left;color:var(--text-1);transition:background .15s,border-color .15s}.todo-bar:hover{background:var(--bg-3);border-color:var(--novi-blue,var(--info))}.todo-bar-icon{flex-shrink:0;font-family:var(--font-mono);color:var(--info);line-height:1}.todo-bar-icon.spinning{display:inline-block;animation:todo-spin 1.4s linear infinite}@keyframes todo-spin{to{transform:rotate(1turn)}}.todo-bar-text{flex:1 1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.todo-bar-count{flex-shrink:0;font-size:10px;font-family:var(--font-mono);color:var(--text-2)}.todo-bar-caret{flex-shrink:0;color:var(--text-3);transition:transform .15s}.todo-bar-caret.up{transform:rotate(180deg)}.todo-bar-done .todo-bar-icon{color:var(--success)}.todo-pop{position:absolute;bottom:calc(100% + 6px);left:0;right:0;max-height:280px;overflow-y:auto;border:var(--stroke-thin) solid var(--border);border-radius:var(--r-2);background:var(--bg-2);box-shadow:var(--shadow-3);z-index:20;font-size:12px}.todo-pop-head{display:flex;align-items:center;gap:var(--s-2);padding:var(--s-2) var(--s-3);position:-webkit-sticky;position:sticky;top:0;background:var(--bg-2);border-bottom:var(--stroke-thin) solid var(--border)}.todo-pop-title{font-weight:500;color:var(--novi-blue,var(--info))}.todo-pop-meta{flex:1 1;font-size:10px;color:var(--text-2)}.todo-pop-list{list-style:none;margin:0;padding:var(--s-1) var(--s-3) var(--s-2);display:flex;flex-direction:column;gap:4px}.todo-item{display:flex;align-items:flex-start;gap:var(--s-2);padding:4px 0;line-height:1.4}.todo-icon{width:14px;text-align:center;font-family:var(--font-mono);color:var(--text-3);flex-shrink:0}.todo-text{color:var(--text-1);word-break:break-word}.todo-completed .todo-icon{color:var(--success)}.todo-completed .todo-text{color:var(--text-3);text-decoration:line-through}.todo-in_progress .todo-icon{color:var(--info)}.todo-in_progress .todo-text{color:var(--text-1);font-weight:500}.todo-pending .todo-icon{color:var(--text-3)}.typing-indicator{display:inline-flex;gap:4px;align-items:center;padding:var(--s-1) 0;align-self:flex-start;width:-moz-fit-content;width:fit-content}.typing-label{margin-left:6px;font-size:11.5px;color:var(--text-2);letter-spacing:.2px;animation:typing-label-pulse 1.6s ease-in-out infinite}@keyframes typing-label-pulse{0%,to{opacity:.65}50%{opacity:1}}.typing-dot{width:6px;height:6px;border-radius:50%;background:var(--text-3);animation:typing 1.2s ease-in-out infinite}.typing-dot:nth-child(2){animation-delay:.2s}.typing-dot:nth-child(3){animation-delay:.4s}@keyframes typing{0%,60%,to{transform:translateY(0);opacity:.4}30%{transform:translateY(-6px);opacity:1}}.chat-input-area{padding:var(--s-3) var(--s-5) var(--s-4);flex-shrink:0;background:var(--surface)}.plan-exec-banner{max-width:640px;margin:0 auto;padding:var(--s-2) var(--s-3) var(--s-2) var(--s-3);display:flex;align-items:center;justify-content:space-between;gap:var(--s-3);border:var(--stroke-thin) solid color-mix(in srgb,var(--novi-cobalt) 35%,transparent);border-radius:var(--radius-2,8px);background:color-mix(in srgb,var(--novi-cobalt) 8%,var(--surface))}.plan-exec-banner-main{min-width:0;display:flex;flex-direction:column;gap:2px}.plan-exec-banner-text{display:flex;align-items:center;gap:var(--s-2);min-width:0;font-size:12px;color:var(--text)}.plan-exec-banner-text svg{color:var(--novi-cobalt);flex-shrink:0}.plan-exec-banner-text span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.plan-exec-banner-hint{font-size:11px;color:var(--text-3);padding-left:calc(14px + var(--s-2))}.plan-exec-banner .btn{flex-shrink:0}.chat-input-wrap{max-width:640px;margin:0 auto;border:var(--stroke-thin) solid var(--border-soft);border-radius:var(--r-4);overflow:hidden;transition:border-color var(--dur-2) var(--ease-out),box-shadow var(--dur-2) var(--ease-out),background-color var(--dur-2) var(--ease-out),border-radius var(--dur-3) var(--ease-out);background:var(--surface-2)}.chat-input-wrap:hover{border-color:var(--border)}.chat-input-wrap:focus-within{border-color:color-mix(in srgb,var(--primary) 55%,var(--border));background:var(--surface);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary) 10%,transparent)}.chat-textarea-slot{display:grid;grid-template-rows:1fr;transition:grid-template-rows var(--dur-3) var(--ease-out)}.chat-textarea-slot>.chat-textarea{overflow:hidden}.chat-textarea{display:block;width:100%;padding:10px var(--s-4) 6px;font-family:var(--font-body);font-size:13.5px;line-height:1.55;color:var(--text);background:transparent;border:none;outline:none;resize:none;min-height:52px;max-height:200px;transition:opacity var(--dur-2) var(--ease-out)}.chat-textarea::placeholder{color:var(--text-3)}.chat-input-bar{display:flex;align-items:center;padding:6px var(--s-2) 6px var(--s-2);gap:var(--s-2);background:transparent}.chat-input-actions{gap:6px;padding-left:var(--s-1)}.chat-action-btn,.chat-input-actions{display:inline-flex;align-items:center}.chat-action-btn{justify-content:center;width:26px;height:26px;border-radius:var(--r-2);border:var(--stroke-thin) solid var(--border);background:transparent;color:var(--text-2);cursor:pointer;transition:background var(--dur-1),color var(--dur-1),border-color var(--dur-1);flex-shrink:0}.chat-action-btn:hover{color:var(--text);background:var(--bg-3);border-color:var(--ink-300)}.chat-input-hint{font-size:11px;color:var(--text-3);flex:1 1;text-align:right;padding-right:var(--s-2)}.chat-input-wrap--collapsed{border-radius:var(--r-pill);background:var(--surface)}.chat-input-wrap--collapsed:focus-within{box-shadow:var(--shadow-1)}.chat-input-wrap--collapsed .chat-textarea-slot{grid-template-rows:0fr}.chat-input-wrap--collapsed .chat-textarea{opacity:0;min-height:0;padding-top:0;padding-bottom:0;pointer-events:none}.chat-input-wrap--collapsed .chat-input-bar{padding:6px var(--s-2)}.chat-running-info{display:inline-flex;align-items:center;gap:var(--s-2);margin-left:auto;font-size:12px;color:var(--text-2)}.chat-running-spinner{width:14px;height:14px;border:1.5px solid var(--border);border-top-color:var(--text-2);border-radius:50%;animation:spin .9s linear infinite;flex-shrink:0}.chat-running-text{font-family:var(--font-mono);font-size:12px;color:var(--text-2);white-space:nowrap}.chat-running-warning{margin:4px var(--s-3) 0;font-size:11px;line-height:1.5;color:var(--text-3,var(--text-2))}.chat-running-warning-link{margin-left:6px;padding:0;border:none;background:none;font-size:11px;color:var(--novi-cobalt,var(--primary));cursor:pointer}.chat-running-warning-link:hover{text-decoration:underline}.chat-stop-btn{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:50%;border:none;background:var(--danger);color:#fff;cursor:pointer;margin-left:2px;box-shadow:0 0 0 4px color-mix(in srgb,var(--danger) 12%,transparent);transition:transform var(--dur-1),background var(--dur-1);flex-shrink:0}.chat-stop-btn:hover{background:#a82930;transform:scale(1.05)}.chat-stop-btn:active{transform:scale(.95)}.file-tree{padding:var(--s-2)}.file-tree-empty{padding:var(--s-5);text-align:center;color:var(--text-3);font-size:12px}.file-item{display:flex;align-items:center;gap:6px;padding:4px var(--s-2);border-radius:var(--r-1);cursor:pointer;font-size:12.5px;color:var(--text-2);transition:background var(--dur-1),color var(--dur-1);-webkit-user-select:none;-moz-user-select:none;user-select:none}.file-item:hover{background:var(--bg-3);color:var(--text)}.file-item.active{background:color-mix(in srgb,var(--primary) 14%,transparent);color:var(--text)}.file-item.active .file-item-icon{color:var(--primary)}.file-item-chevron{width:12px;height:12px}.file-item-chevron,.file-item-icon{color:var(--text-3);flex-shrink:0;display:inline-flex;align-items:center}.file-item-dir .file-item-icon{color:var(--novi-cobalt)}.file-item-name{flex:1 1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-item-dir{font-weight:500;color:var(--text)}.file-item-loading{font-size:11px;color:var(--text-3);padding:4px var(--s-2)}.editor-header{display:flex;align-items:center;padding:0 var(--s-4);height:36px;border-bottom:var(--stroke-thin) solid var(--border);gap:var(--s-3);flex-shrink:0;background:var(--surface-2)}.editor-filename{font-family:var(--font-mono);font-size:12px;color:var(--text-2);flex:1 1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.code-area{flex:1 1;overflow:auto;background:var(--ink-900);position:relative}.code-content{padding:var(--s-4);font-family:var(--font-mono);font-size:13px;line-height:1.7;color:#E5E4DF;white-space:pre;min-height:100%;-moz-tab-size:2;tab-size:2}.editor-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;gap:var(--s-3);color:var(--text-3);text-align:center}.editor-empty p{font-size:13px;max-width:220px;line-height:1.5}.preview-frame-wrap{flex:1 1;display:flex;flex-direction:column;min-height:0;background:var(--surface)}.preview-toolbar{display:flex;align-items:center;gap:var(--s-2);padding:0 var(--s-3);height:36px;border-bottom:var(--stroke-thin) solid var(--border);background:var(--surface-2);flex-shrink:0}.preview-url{flex:1 1;font-family:var(--font-mono);font-size:11px;color:var(--text-2);background:var(--bg-3);border:var(--stroke-thin) solid var(--border);border-radius:var(--r-1);padding:2px 8px;height:24px;outline:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.preview-stage,.preview-stage .preview-device,.preview-stage .preview-screen{flex:1 1;min-height:0;display:flex}.preview-iframe{flex:1 1;border:none;width:100%}.preview-stage.is-phone,.preview-stage.is-web{overflow:auto;padding:var(--s-4);background:var(--bg-3)}.preview-stage.is-phone .preview-device,.preview-stage.is-web .preview-device{flex:0 0 auto;margin:auto;display:flex}.preview-stage.is-phone .preview-screen,.preview-stage.is-web .preview-screen{flex:0 0 auto;display:flex;background:#fff;border:1px solid var(--border);box-shadow:0 8px 30px rgba(0,0,0,.12)}.preview-stage.is-phone .preview-iframe,.preview-stage.is-web .preview-iframe{flex:1 1;width:100%;min-height:0}.preview-stage.is-web{container-type:size}.preview-stage.is-web .preview-screen{aspect-ratio:16/9;width:min(100cqw,100cqh * 16/9)}.preview-stage.is-phone .preview-screen{width:393px;height:852px}.preview-mode-seg{align-items:center;gap:2px;padding:1px;background:var(--bg-3)}.preview-mode-seg,.preview-mode-tag{display:inline-flex;border-radius:var(--r-2)}.preview-mode-tag{position:absolute;top:8px;left:50%;transform:translateX(-50%);z-index:40;align-items:baseline;gap:6px;padding:3px 10px;background:color-mix(in srgb,var(--panel-bg) 85%,transparent);border:1px solid var(--border);box-shadow:0 2px 8px rgba(0,0,0,.08);pointer-events:none;white-space:nowrap}.preview-mode-tag-label{font-size:12px;font-weight:600;color:var(--text)}.preview-mode-tag-desc{font-size:11px;color:var(--text-3)}.preview-placeholder{flex:1 1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--s-3);color:var(--text-3);text-align:center}.preview-placeholder p{font-size:13px;max-width:240px;line-height:1.5}.preview-stage{position:relative}.elpick-hint{position:absolute;top:10px;left:50%;transform:translateX(-50%);z-index:50;padding:5px 12px;font-size:12px;color:#fff;background:var(--primary);border-radius:var(--r-pill,999px);box-shadow:0 4px 14px rgba(20,16,8,.22);white-space:nowrap;pointer-events:none}.elpick-popup{position:fixed;z-index:60;display:flex;flex-direction:column;gap:8px;padding:10px;background:var(--surface);border:var(--stroke-thin) solid var(--border);border-radius:12px;box-shadow:0 16px 40px rgba(20,16,8,.24)}.elpick-popup-head{display:flex;align-items:center;gap:8px}.elpick-popup-title{flex:1 1;font-size:12.5px;font-weight:600;color:var(--text)}.elpick-popup-selector,.elpick-popup-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.elpick-popup-selector{font-family:var(--font-mono);font-size:10.5px;color:var(--text-2);background:var(--bg-3);border-radius:var(--r-1);padding:3px 7px}.elpick-popup-textarea{width:100%;resize:vertical;font-size:12.5px;line-height:1.5;color:var(--text);background:var(--surface-2);border:var(--stroke-thin) solid var(--border);border-radius:8px;padding:7px 9px;outline:none;box-sizing:border-box}.elpick-popup-textarea:focus{border-color:var(--primary)}.elpick-popup-actions{display:flex;justify-content:flex-end;gap:8px}.elpick-staged-chip{position:absolute;top:8px;left:50%;transform:translateX(-50%);z-index:20;display:inline-flex;align-items:center;gap:5px;padding:4px 11px;font-size:12px;font-weight:500;color:#fff;background:var(--primary);border:none;border-radius:var(--r-pill,999px);box-shadow:0 4px 14px rgba(20,16,8,.2);cursor:pointer}.elpick-staged-chip:hover{filter:brightness(1.06)}.pv-console-btn{position:relative}.pv-console-badge{position:absolute;top:-3px;right:-3px;min-width:15px;height:15px;padding:0 3px;display:inline-flex;align-items:center;justify-content:center;font-size:9.5px;font-weight:600;line-height:1;color:#fff;background:var(--danger);border-radius:999px;box-shadow:0 0 0 1.5px var(--surface-2)}.pv-console{flex:0 0 auto;height:240px;display:flex;flex-direction:column;min-height:0;border-top:var(--stroke-thin) solid var(--border);background:var(--surface)}.pv-console-head{display:flex;align-items:center;gap:var(--s-2);padding:0 var(--s-3);height:34px;flex-shrink:0;border-bottom:var(--stroke-thin) solid var(--border);background:var(--surface-2)}.pv-console-title{font-size:12px;font-weight:600;color:var(--text)}.pv-console-count{font-size:11px;font-family:var(--font-mono);color:var(--text-2);background:var(--bg-3);border-radius:var(--r-1);padding:1px 6px}.pv-console-list{flex:1 1;min-height:0;overflow-y:auto;font-family:var(--font-mono);font-size:11.5px;line-height:1.5}.pv-console-empty{padding:18px var(--s-3);color:var(--text-2);font-family:var(--font-sans,inherit);font-size:12px}.pv-log{display:flex;align-items:flex-start;gap:8px;padding:5px var(--s-3);border-bottom:var(--stroke-thin) solid color-mix(in srgb,var(--border) 60%,transparent)}.pv-log:hover{background:var(--bg-3)}.pv-log--error{background:color-mix(in srgb,var(--danger) 5%,transparent)}.pv-log-level{flex-shrink:0;margin-top:1px;padding:0 5px;height:16px;display:inline-flex;align-items:center;font-size:10px;font-weight:600;border-radius:var(--r-1);color:#fff}.pv-log-level--error{background:var(--danger)}.pv-log-level--warn{background:var(--warning)}.pv-log-level--network{background:var(--text-2)}.pv-log-body{flex:1 1;min-width:0}.pv-log-text{color:var(--text);word-break:break-word;white-space:pre-wrap}.pv-log-meta{display:flex;flex-wrap:wrap;gap:4px 12px;margin-top:2px;word-break:break-all}.pv-log-meta,.pv-log-stack{color:var(--text-2);font-size:10.5px}.pv-log-stack{margin:4px 0 0;padding:6px 8px;background:var(--bg-3);border-radius:var(--r-1);white-space:pre-wrap;word-break:break-word;max-height:140px;overflow:auto}.pv-log-time{flex-shrink:0;color:var(--text-2);font-size:10px;margin-top:2px}.pv-log-actions{flex-shrink:0;display:flex;gap:2px;opacity:0;transition:opacity .12s}.pv-log:hover .pv-log-actions{opacity:1}.staged-modal{width:min(460px,calc(100% - 48px));max-height:min(70vh,560px);border-radius:16px;box-shadow:0 24px 60px rgba(20,16,8,.28);overflow:hidden}.staged-modal-head{gap:8px;padding:16px 18px 12px}.staged-modal-title{flex:1 1;font-size:15px;font-weight:600;color:var(--text)}.staged-modal-list{padding:0 18px;gap:12px}.staged-empty{padding:24px 0;text-align:center;font-size:13px;color:var(--text-3)}.staged-item{display:flex;flex-direction:column;gap:6px;padding:10px;background:var(--surface-2);border:var(--stroke-thin) solid var(--border);border-radius:10px}.staged-item-head{display:flex;align-items:center;gap:8px}.staged-item-index{flex:0 0 auto;width:18px;height:18px;display:grid;place-items:center;font-size:11px;font-weight:600;color:#fff;background:var(--primary);border-radius:50%}.staged-item-desc{flex:1 1;font-size:12.5px;font-weight:600;color:var(--text)}.staged-item-desc,.staged-item-selector{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.staged-item-selector{font-family:var(--font-mono);font-size:10.5px;color:var(--text-2)}.staged-item-textarea{width:100%;resize:vertical;font-size:12.5px;line-height:1.5;color:var(--text);background:var(--surface);border:var(--stroke-thin) solid var(--border);border-radius:8px;padding:6px 8px;outline:none;box-sizing:border-box}.staged-item-textarea:focus{border-color:var(--primary)}.staged-modal-foot{gap:9px;padding:14px 18px 16px}.output-log{flex:1 1;overflow-y:auto;padding:var(--s-3);font-family:var(--font-mono);font-size:12px;line-height:1.6;color:#E5E4DF;background:var(--ink-900)}.output-log-line{white-space:pre-wrap;word-break:break-all}.output-log-line.err{color:#F0708A}.output-log-line.ok{color:#6BC18A}.output-log-line.info{color:#7AA9FF}.page{flex:1 1;overflow-y:auto;padding:var(--s-7) var(--s-6)}.page-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--s-6)}.page-title{font-size:24px;font-weight:300;letter-spacing:-.02em}.project-grid-header{display:flex;align-items:baseline;gap:var(--s-2);margin-bottom:var(--s-3);font-size:12px;color:var(--text-3);letter-spacing:.01em}.project-grid-count{font-family:var(--font-mono);font-size:13px;font-weight:500;color:var(--text-2)}.project-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(288px,1fr));grid-gap:var(--s-5);gap:var(--s-5)}@keyframes cardIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.project-card{background:var(--surface);border:var(--stroke-thin) solid var(--border);border-radius:var(--r-3);padding:var(--s-5);cursor:pointer;transition:border-color var(--dur-2) var(--ease-out),box-shadow var(--dur-2) var(--ease-out),transform var(--dur-2) var(--ease-out);display:flex;flex-direction:column;gap:var(--s-3);box-shadow:var(--shadow-1);position:relative;overflow:hidden;animation:cardIn var(--dur-3) var(--ease-out) both}.project-card:hover{border-color:color-mix(in srgb,var(--primary) 35%,var(--border));box-shadow:var(--shadow-3);transform:translateY(-2px)}.project-card:hover .project-card-accent{opacity:1}.project-card-accent{position:absolute;top:0;left:0;right:0;height:2px;background:linear-gradient(90deg,var(--novi-cobalt) 0,var(--novi-teal) 100%);border-radius:var(--r-3) var(--r-3) 0 0;opacity:0;transition:opacity var(--dur-2) var(--ease-out)}.project-card-icon-pill{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:var(--r-2);background:color-mix(in srgb,var(--primary) 10%,transparent);color:var(--primary);border:var(--stroke-hair) solid color-mix(in srgb,var(--primary) 20%,transparent);flex-shrink:0}[data-theme=dark] .project-card-icon-pill{background:color-mix(in srgb,var(--primary) 15%,transparent);border-color:color-mix(in srgb,var(--primary) 25%,transparent)}.project-card-fresh-dot{width:6px;height:6px;border-radius:50%;background:var(--novi-emerald);animation:freshPulse 2.4s ease-in-out infinite;flex-shrink:0}@keyframes freshPulse{0%,to{opacity:.6;box-shadow:0 0 0 0 rgba(30,132,73,.4)}50%{opacity:1;box-shadow:0 0 0 4px rgba(30,132,73,0)}}.project-card-head{display:flex;align-items:center;justify-content:space-between}.project-card-name{font-size:16px;font-weight:500;color:var(--text);letter-spacing:-.02em;line-height:1.3}.project-card-desc{font-size:11.5px;line-height:1.5;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.project-card-desc,.project-card-meta{font-family:var(--font-mono);color:var(--text-3)}.project-card-meta{display:flex;align-items:center;gap:var(--s-3);font-size:11px;flex-wrap:wrap;margin-top:var(--s-1)}.project-card-model-tag{display:inline-flex;align-items:center;padding:1px 7px;border:var(--stroke-hair) solid var(--border);border-radius:var(--r-pill);background:var(--bg-2);font-family:var(--font-mono);font-size:10.5px;color:var(--text-2);letter-spacing:.01em}.project-card-actions{display:flex;gap:var(--s-2);justify-content:flex-end;margin-top:var(--s-1)}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--s-9) var(--s-6);text-align:center;gap:var(--s-4);color:var(--text-2)}.empty-state h2{font-size:18px;font-weight:400;color:var(--text)}.empty-state p{font-size:13px;max-width:320px;line-height:1.6}.form-page{flex:1 1;overflow-y:auto;padding:var(--s-7) var(--s-6);max-width:600px;margin:0 auto;width:100%}.form-section{margin-bottom:var(--s-5)}.form-label{display:block;font-size:12px;font-weight:500;color:var(--text-2);margin-bottom:var(--s-2);letter-spacing:.02em;text-transform:uppercase}.form-input{display:block;width:100%;height:38px;padding:0 var(--s-4);font-family:var(--font-body);font-size:14px;color:var(--text);background:var(--surface);border:var(--stroke-thin) solid var(--border);border-radius:var(--r-2);outline:none;transition:border-color var(--dur-1)}.form-input:focus{border-color:var(--primary);box-shadow:0 0 0 3px rgba(30,91,198,.1)}.form-select{display:block;width:100%;height:38px;padding:0 var(--s-4);font-family:var(--font-body);font-size:14px;color:var(--text);background:var(--surface);border:var(--stroke-thin) solid var(--border);border-radius:var(--r-2);outline:none;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='6'><path fill='%239A9A9F' d='M0 0h10L5 6z'/></svg>");background-repeat:no-repeat;background-position:right 12px center;transition:border-color var(--dur-1)}.form-select:focus{border-color:var(--primary)}.form-textarea{display:block;width:100%;padding:var(--s-3) var(--s-4);font-family:var(--font-body);font-size:13px;color:var(--text);background:var(--surface);border:var(--stroke-thin) solid var(--border);border-radius:var(--r-2);outline:none;resize:vertical;min-height:80px;transition:border-color var(--dur-1)}.form-textarea:focus{border-color:var(--primary);box-shadow:0 0 0 3px rgba(30,91,198,.1)}.form-hint{font-size:12px;color:var(--text-3);margin-top:var(--s-2)}.form-row{display:grid;grid-template-columns:1fr 1fr;grid-gap:var(--s-4);gap:var(--s-4)}.seg-control{display:flex;border:var(--stroke-thin) solid var(--border);border-radius:var(--r-2);overflow:hidden}.seg-btn{flex:1 1;padding:7px 12px;font-size:13px;font-family:var(--font-body);background:transparent;border:none;color:var(--text-2);cursor:pointer;transition:background var(--dur-1),color var(--dur-1);border-right:var(--stroke-thin) solid var(--border)}.seg-btn:last-child{border-right:none}.seg-btn.active{background:var(--text);color:var(--bg)}.seg-btn:hover:not(.active){background:var(--bg-3)}.template-option{display:block;width:100%;text-align:left;padding:var(--s-3) var(--s-4);background:transparent;border:var(--stroke-thin) solid var(--border);border-radius:var(--r-2);cursor:pointer;transition:border-color .12s,background .12s}.template-option.active,.template-option:hover{border-color:var(--primary)}.template-option.active{box-shadow:0 0 0 3px rgba(30,91,198,.1)}.template-option-title{font-size:14px;font-weight:500;color:var(--text)}.template-option-desc{font-size:12px;margin-top:2px}.model-select{position:relative;display:inline-flex;min-width:0}.model-select-trigger{display:inline-flex;align-items:center;gap:var(--s-2);font-family:var(--font-body);color:var(--text);cursor:pointer}.model-select-trigger:disabled{opacity:.45;cursor:not-allowed}.model-select-icon{width:16px;height:16px;border-radius:var(--r-1);object-fit:contain;flex-shrink:0}.model-select-icon--empty{background:transparent}.model-select-label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.model-select-caret{color:var(--text-3);flex-shrink:0}.model-select-menu{position:absolute;left:0;z-index:30;min-width:100%;max-width:260px;margin:0;padding:var(--s-1);list-style:none;background:var(--surface);border:var(--stroke-thin) solid var(--border);border-radius:var(--r-3);box-shadow:0 8px 24px rgba(15,16,18,.14);animation:fadeIn var(--dur-1) var(--ease-out);max-height:min(48vh,320px);overflow-y:auto}.model-select-menu--bottom{top:calc(100% + 6px)}.model-select-menu--top{bottom:calc(100% + 6px)}.model-select-menu--fixed{position:fixed;left:auto;z-index:1000}.model-select-option{display:flex;align-items:center;gap:var(--s-2);width:100%;padding:var(--s-2) var(--s-3);border:none;border-radius:var(--r-2);background:transparent;color:var(--text-2);font-family:var(--font-body);font-size:12.5px;text-align:left;white-space:nowrap;cursor:pointer;transition:background var(--dur-1) var(--ease-out),color var(--dur-1) var(--ease-out)}.model-select-option:hover{background:var(--bg-2);color:var(--text)}.model-select-option.is-selected{color:var(--primary);font-weight:600}.model-select--inline{max-width:200px}.model-select--inline .model-select-trigger{height:28px;padding:0 var(--s-3);font-size:12px;background:var(--bg-2);border:var(--stroke-thin) solid var(--border);border-radius:var(--r-2);transition:border-color var(--dur-1),background var(--dur-1)}.model-select--inline .model-select-trigger:hover:not(:disabled){background-color:var(--bg-3);border-color:var(--ink-300)}.model-select--inline .model-select-label{max-width:120px}.model-select--form{width:100%}.model-select--form .model-select-trigger{width:100%;height:38px;padding:0 var(--s-4);font-size:14px;background:var(--surface);border:var(--stroke-thin) solid var(--border);border-radius:var(--r-2);transition:border-color var(--dur-1)}.model-select--form .model-select-trigger:hover:not(:disabled){border-color:var(--ink-300)}.model-select--form .model-select-label{flex:1 1}.model-select--form .model-select-menu{max-width:100%}.model-select--chip{flex:0 1 auto;max-width:200px}.model-select--chip .model-select-trigger{width:100%;gap:var(--s-2);padding:6px var(--s-3);font-size:12px;color:var(--text-2);background:var(--surface-2);border:var(--stroke-thin) solid var(--border-soft);border-radius:var(--r-pill);transition:border-color var(--dur-2) var(--ease-out),background var(--dur-2) var(--ease-out),color var(--dur-2) var(--ease-out)}.model-select--chip .model-select-trigger>svg:first-child{color:var(--primary)}.model-select--chip .model-select-trigger:not(:disabled):hover{border-color:color-mix(in srgb,var(--primary) 45%,var(--border));background:var(--surface);color:var(--text)}.model-select--chip .model-select-trigger.is-error{border-color:var(--danger);box-shadow:0 0 0 2px color-mix(in srgb,var(--danger) 14%,transparent)}.model-select--chip .model-select-label{max-width:120px}.divider{height:1px;background:var(--border);margin:var(--s-4) 0}@keyframes spin{to{transform:rotate(1turn)}}.spinner{width:18px;height:18px;border:2px solid var(--border);border-top-color:var(--primary);border-radius:50%;animation:spin .7s linear infinite}.fatal-mask{position:fixed;inset:0;z-index:2000;display:grid;place-items:center;padding:var(--s-5);background:rgba(15,16,18,.42);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);animation:fatal-mask-in .18s var(--ease-out)}.fatal-mask-card{width:min(440px,100%);background:var(--panel-bg);border:1px solid var(--border);border-radius:var(--r-4);padding:var(--s-6) var(--s-5) var(--s-5);box-shadow:var(--shadow-3);text-align:center;animation:fatal-card-in .22s var(--ease-out)}.fatal-mask-ic{width:52px;height:52px;margin:0 auto var(--s-3);border-radius:var(--r-3);display:flex;align-items:center;justify-content:center}.fatal-mask-card.tone-error .fatal-mask-ic{background:rgba(200,50,58,.1);color:var(--danger)}.fatal-mask-card.tone-warn .fatal-mask-ic{background:rgba(232,114,44,.12);color:var(--warning)}.fatal-mask-card h2{font-size:17px;font-weight:600;color:var(--text);margin-bottom:var(--s-2)}.fatal-mask-msg{font-size:13px;line-height:1.65;color:var(--text-2)}.fatal-mask-detail{margin-top:var(--s-3);padding:var(--s-2) var(--s-3);border-radius:var(--r-2);background:var(--bg-2);font-family:var(--font-mono);font-size:11px;color:var(--text-3);word-break:break-all;max-height:96px;overflow:auto}.fatal-mask-actions{margin-top:var(--s-5);display:flex;flex-wrap:wrap;justify-content:center;gap:var(--s-2)}@keyframes fatal-mask-in{0%{opacity:0}}@keyframes fatal-card-in{0%{opacity:0;transform:translateY(8px) scale(.98)}}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}.flex{display:flex}.flex-1{flex:1 1}.items-center{align-items:center}.gap-2{gap:var(--s-2)}.gap-3{gap:var(--s-3)}.text-mono{font-family:var(--font-mono)}.text-sm{font-size:12px}.text-xs{font-size:11px}.text-muted{color:var(--text-2)}.text-faint{color:var(--text-3)}.model-select-inline{height:28px;padding:0 22px 0 var(--s-3);font-family:var(--font-body);font-size:12px;color:var(--text);background:var(--bg-2);border:var(--stroke-thin) solid var(--border);border-radius:var(--r-2);outline:none;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='8' height='5'><path fill='%239A9A9F' d='M0 0h8L4 5z'/></svg>");background-repeat:no-repeat;background-position:right 8px center;transition:border-color var(--dur-1),background var(--dur-1)}.model-select-inline:hover:not(:disabled){background-color:var(--bg-3);border-color:var(--ink-300)}.model-select-inline:focus{border-color:var(--primary);box-shadow:0 0 0 2px color-mix(in srgb,var(--primary) 12%,transparent)}.model-select-inline:disabled{opacity:.45;cursor:not-allowed}.confirm-overlay{position:fixed;inset:0;background:rgba(15,16,18,.48);z-index:1000;display:flex;align-items:center;justify-content:center;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);animation:fadeIn var(--dur-1) var(--ease-out)}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.confirm-dialog{background:var(--surface);border:var(--stroke-thin) solid var(--border);border-radius:var(--r-3);box-shadow:var(--shadow-3);padding:var(--s-5);width:340px;display:flex;flex-direction:column;gap:var(--s-4);animation:dialogIn var(--dur-2) var(--ease-out)}@keyframes dialogIn{0%{opacity:0;transform:translateY(-8px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}.confirm-dialog-title{font-size:14px;font-weight:600;color:var(--text)}.confirm-dialog-body{font-size:13px;color:var(--text-2);line-height:1.65}.confirm-dialog-body strong{color:var(--text);font-weight:500}.confirm-dialog-footer{display:flex;gap:var(--s-2);justify-content:flex-end}.staged-modal{display:flex;flex-direction:column;width:460px;max-width:92vw;max-height:80vh;background:var(--surface);border:var(--stroke-thin) solid var(--border);border-radius:var(--r-3);box-shadow:var(--shadow-3);animation:dialogIn var(--dur-2) var(--ease-out)}.staged-modal-head{display:flex;align-items:center;justify-content:space-between;gap:var(--s-2);padding:var(--s-4) var(--s-4) var(--s-3);border-bottom:var(--stroke-thin) solid var(--border)}.staged-modal-list{flex:1 1;overflow-y:auto;flex-direction:column;gap:var(--s-3)}.staged-modal-foot,.staged-modal-list{padding:var(--s-3) var(--s-4);display:flex}.staged-modal-foot{justify-content:flex-end;gap:var(--s-2);border-top:var(--stroke-thin) solid var(--border)}.skill-card{display:flex;align-items:flex-start;gap:var(--s-3);width:100%;text-align:left;padding:var(--s-3);background:var(--surface-2);border:var(--stroke-thin) solid var(--border-soft);border-radius:var(--r-2);cursor:pointer;transition:border-color var(--dur-1) var(--ease-out),background var(--dur-1) var(--ease-out)}.skill-card:hover:not(:disabled){border-color:color-mix(in srgb,var(--primary) 55%,var(--border));background:var(--surface)}.skill-card:disabled{opacity:.5;cursor:not-allowed}.skill-card-icon{flex-shrink:0;color:var(--primary);margin-top:1px}.skill-card-text{display:flex;flex-direction:column;gap:2px}.skill-card-name{font-size:13px;font-weight:600;color:var(--text)}.skill-card-desc{font-size:12px;color:var(--text-3);line-height:1.5}.toast-area{position:fixed;bottom:var(--s-5);left:50%;transform:translateX(-50%);z-index:9999;display:flex;flex-direction:column;gap:var(--s-2);pointer-events:none}.toast{background:var(--ink-800);color:#fff;padding:8px 16px;border-radius:var(--r-2);font-size:13px;box-shadow:var(--shadow-3);animation:toastIn var(--dur-2) var(--ease-out)}@keyframes toastIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.ask-user-card{margin:8px 0;padding:12px 14px;border:1px solid var(--accent,#4f74ff);border-radius:var(--r-3,8px);background:var(--surface-1,#f7f9ff);display:flex;flex-direction:column;gap:10px}.ask-user-card--answered{border-color:var(--border,#d6dae3);background:var(--surface-2,#fafbfd);opacity:.92}.ask-user-card-head{display:flex;align-items:center;gap:8px}.ask-user-card-title{font-weight:600;font-size:13px;flex:1 1}.ask-user-card-badge{font-size:11px;padding:2px 8px;border-radius:999px;background:var(--ink-100,#e8ecf2);color:var(--text-2,#555)}.ask-user-card-badge--pending{background:var(--accent,#4f74ff);color:#fff}.ask-user-card-desc{font-size:12px;color:var(--text-2,#555)}.ask-user-question{display:flex;flex-direction:column;gap:6px}.ask-user-question-head{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}.ask-user-question-header{font-size:11px;padding:1px 6px;background:var(--ink-100,#e8ecf2);color:var(--text-2,#555);border-radius:4px;text-transform:uppercase;letter-spacing:.04em}.ask-user-question-text{font-size:13px;font-weight:500}.ask-user-question-mode{font-size:11px;color:var(--text-3,#888)}.ask-user-options{display:flex;flex-direction:column;gap:6px}.ask-user-option{display:flex;align-items:flex-start;gap:8px;padding:8px 10px;border:1px solid var(--border,#d6dae3);border-radius:var(--r-2,6px);background:#fff;cursor:pointer;transition:border-color var(--dur-1,.12s),background var(--dur-1,.12s)}.ask-user-option--selected,.ask-user-option:hover{border-color:var(--accent,#4f74ff)}.ask-user-option--selected{background:var(--accent-soft,#eef2ff)}.ask-user-option input{margin-top:3px}.ask-user-option-body{flex:1 1;display:flex;flex-direction:column;gap:4px}.ask-user-option-label{font-size:13px;font-weight:500}.ask-user-option-desc{font-size:12px;color:var(--text-2,#555)}.ask-user-option-preview{margin-top:4px;padding:6px 8px;background:var(--surface-2,#fafbfd);border:1px solid var(--border,#d6dae3);border-radius:var(--r-1,4px);font-size:12px;overflow-x:auto}.ask-user-option-preview--text{font-family:var(--font-mono);white-space:pre}.ask-user-other-input{margin-top:2px;padding:4px 8px;border:1px solid var(--border,#d6dae3);border-radius:var(--r-1,4px);font-size:12px;width:100%;box-sizing:border-box}.ask-user-actions{display:flex;justify-content:flex-end}.ask-user-answer-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.ask-user-answer-list li{padding:6px 8px;background:#fff;border:1px solid var(--border,#d6dae3);border-radius:var(--r-1,4px)}.ask-user-answer-q{font-size:12px;color:var(--text-2,#555);margin-bottom:2px}.ask-user-answer-a{font-size:13px;font-weight:500}.projects-hero{flex-direction:column;align-items:center;gap:var(--s-3);padding-bottom:var(--s-5)}.projects-hero-logo{height:72px;width:auto}[data-theme=dark] .projects-hero-logo{filter:brightness(0) invert(1)}.projects-hero-sub{font-size:13.5px;letter-spacing:.01em;opacity:.65}.quick-start-wrap{width:100%;max-width:760px;margin:0 auto var(--s-7)}.quick-start-label{font-size:26px;font-weight:300;letter-spacing:-.03em;text-align:center;margin-bottom:var(--s-4);background:linear-gradient(135deg,var(--ink-800) 0,var(--novi-cobalt) 60%,var(--novi-teal) 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}[data-theme=dark] .quick-start-label{background:linear-gradient(135deg,var(--ink-200) 0,#6EA8FF 60%,#5DD9D4 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.quick-start-box{border:var(--stroke-thin) solid var(--border-soft);border-radius:var(--r-4);background:var(--surface-2);overflow:hidden;transition:border-color var(--dur-2) var(--ease-out),box-shadow var(--dur-2) var(--ease-out)}.quick-start-box:focus-within{border-color:color-mix(in srgb,var(--primary) 55%,var(--border));background:var(--surface);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary) 10%,transparent)}.quick-start-input{display:block;width:100%;background:transparent;border:none;padding:var(--s-4) var(--s-4) var(--s-2);font-family:var(--font-body);font-size:15px;color:var(--text);resize:none;min-height:76px;max-height:200px;outline:none;line-height:1.6}.quick-start-input::placeholder{color:var(--text-3)}.quick-start-bar{display:flex;align-items:center;flex-wrap:wrap;row-gap:var(--s-2);padding:var(--s-2) var(--s-3) var(--s-2) var(--s-4);gap:var(--s-2)}.quick-start-hint{flex:1 1;min-width:0;font-size:11px;color:var(--text-3);letter-spacing:.01em}.quick-start-btn{flex-shrink:0;align-self:center;background:linear-gradient(135deg,var(--novi-cobalt) 0,#1A5DC6 100%);border:none;box-shadow:0 2px 8px rgba(30,91,198,.32),0 1px 2px rgba(30,91,198,.2);transition:box-shadow var(--dur-2),transform var(--dur-1),opacity var(--dur-1)}.quick-start-btn:not(:disabled):hover{box-shadow:0 4px 16px rgba(30,91,198,.42),0 1px 4px rgba(30,91,198,.24);transform:translateY(-1px)}.quick-start-btn:not(:disabled):active{transform:translateY(0);box-shadow:0 1px 4px rgba(30,91,198,.24)}.quick-start-btn:disabled{background:linear-gradient(135deg,var(--novi-cobalt) 0,#1A5DC6 100%);opacity:.45;box-shadow:none}.lp-root{--lp-bg:#FAFAF7;--lp-elev:#FFFFFF;--lp-sunken:#F2F1EC;--lp-hover:#F0EFE9;--lp-line:#E5E3DC;--lp-line-strong:#D5D3CB;--lp-line-faint:#EDEBE3;--lp-text:#18181B;--lp-muted:#71717A;--lp-faint:#A1A1AA;--lp-primary:#1E5BC6;--lp-primary-fg:#FFFFFF;--lp-primary-soft:rgba(30,91,198,0.07);--lp-primary-strong:#194FAB;--lp-success:#1E8449;font-family:var(--font-display);background:radial-gradient(900px 600px at 70% -10%,var(--lp-primary-soft),transparent 60%),var(--lp-bg);color:var(--lp-text);min-height:100vh;-webkit-font-smoothing:antialiased}.lp-topbar{height:56px;border-bottom:1px solid var(--lp-line);padding:0 var(--s-5);position:-webkit-sticky;position:sticky;top:0;z-index:30;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:color-mix(in oklab,var(--lp-bg) 88%,transparent)}.lp-topbar,.lp-topbar-inner{display:flex;align-items:center}.lp-topbar-inner{width:100%;max-width:1200px;margin:0 auto;gap:var(--s-5)}.lp-brand{display:flex;align-items:center;gap:var(--s-3);cursor:default;-webkit-user-select:none;-moz-user-select:none;user-select:none}.lp-brand-img{height:32px;width:auto}.lp-brand-mark,.lp-brand-name{color:var(--lp-text)}.lp-brand-name{font-size:16px;font-weight:400;letter-spacing:-.01em}.lp-brand-cn{font-size:10px;font-weight:300;letter-spacing:.25em;color:var(--lp-faint);margin-left:2px}.lp-nav{display:flex;gap:2px;margin-left:var(--s-6)}.lp-nav a{padding:6px 12px;font-size:13.5px;color:var(--lp-muted);border-radius:var(--r-2);cursor:pointer;transition:color .12s,background .12s}.lp-nav a:hover{color:var(--lp-text);background:var(--lp-hover)}.lp-topbar-spacer{flex:1 1}.lp-topbar-actions{display:flex;align-items:center;gap:var(--s-2)}.lp-beta-tag{font-family:var(--font-mono);font-size:10.5px;letter-spacing:.06em;padding:2px 8px;border:1px solid var(--lp-line-strong);border-radius:var(--r-pill);color:var(--lp-faint);background:var(--lp-elev)}.lp-btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--s-2);height:34px;padding:0 var(--s-4);font-family:var(--font-body);font-size:13.5px;font-weight:500;border-radius:var(--r-2);border:1px solid transparent;cursor:pointer;transition:all .12s cubic-bezier(.2,.7,.2,1);white-space:nowrap;letter-spacing:-.005em}.lp-btn:active{transform:translateY(.5px)}.lp-btn:disabled{opacity:.45;cursor:not-allowed;transform:none}.lp-btn-primary{background:var(--lp-primary);color:var(--lp-primary-fg)}.lp-btn-primary:hover:not(:disabled){background:var(--lp-primary-strong)}.lp-btn-secondary{background:var(--lp-text);color:#FAFAFA}.lp-btn-secondary:hover:not(:disabled){opacity:.88}.lp-btn-sm{height:28px;font-size:12.5px;padding:0 var(--s-3)}.lp-btn-lg{height:44px;font-size:14.5px;padding:0 var(--s-5);border-radius:var(--r-3)}.lp-container{max-width:1200px;margin:0 auto;padding:0 var(--s-6)}.lp-hero{padding:96px 0 80px}.lp-eyebrow{display:inline-flex;align-items:center;gap:var(--s-2);padding:4px 10px 4px 4px;border-radius:var(--r-pill);background:var(--lp-elev);border:1px solid var(--lp-line);font-family:var(--font-mono);font-size:11.5px;color:var(--lp-muted);margin-bottom:var(--s-5)}.lp-eyebrow-tag{background:var(--lp-primary);color:#fff;padding:1px 8px;border-radius:var(--r-pill);font-size:10.5px;font-weight:500}.lp-h1{font-family:var(--font-display);font-weight:250;font-size:clamp(48px,7vw,88px);line-height:.98;letter-spacing:-.035em;color:var(--lp-text);max-width:16ch;margin:0}.lp-h1 em{font-style:normal;font-weight:400;color:var(--lp-primary)}.lp-sub{font-size:19px;line-height:1.55;color:var(--lp-muted);max-width:56ch;margin-top:var(--s-5);font-weight:300}.lp-auth-form{margin-top:var(--s-7);flex-direction:column;max-width:500px}.lp-auth-form,.lp-auth-row{display:flex;gap:var(--s-2)}.lp-auth-input{flex:1 1;height:44px;padding:0 var(--s-4);background:var(--lp-elev);border:1px solid var(--lp-line-strong);border-radius:var(--r-3);color:var(--lp-text);font-family:var(--font-body);font-size:14px;outline:none;transition:border-color .12s,box-shadow .12s;box-sizing:border-box}.lp-auth-input::placeholder{color:var(--lp-faint)}.lp-auth-input:focus{border-color:var(--lp-primary);box-shadow:0 0 0 3px rgba(30,91,198,.12)}.lp-auth-input-err{border-color:#C8323A!important;box-shadow:0 0 0 3px rgba(200,50,58,.1)!important}.lp-auth-input:disabled{opacity:.5;cursor:not-allowed}.lp-auth-error{font-size:12.5px;color:#C8323A;margin:0}@keyframes lp-shake{0%,to{transform:translateX(0)}20%{transform:translateX(-6px)}40%{transform:translateX(6px)}60%{transform:translateX(-4px)}80%{transform:translateX(4px)}}.lp-shake{animation:lp-shake .45s cubic-bezier(.2,.7,.2,1)}.lp-spinner{width:16px;height:16px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:lp-spin .6s linear infinite}@keyframes lp-spin{to{transform:rotate(1turn)}}.lp-trust{display:flex;gap:var(--s-5);margin-top:var(--s-7);padding-top:var(--s-5);border-top:1px dashed var(--lp-line);font-family:var(--font-mono);font-size:11px;color:var(--lp-faint);letter-spacing:.08em;text-transform:uppercase;flex-wrap:wrap}.lp-canvas{margin-top:80px;perspective:1600px}.lp-canvas-frame{border:1px solid var(--lp-line);border-radius:14px;background:var(--lp-elev);box-shadow:0 24px 60px -20px rgba(0,0,0,.14),0 0 0 .5px rgba(0,0,0,.06);overflow:hidden;transform:rotateX(2deg);transform-origin:center top}.lp-canvas-bar{height:38px;display:flex;align-items:center;gap:var(--s-3);padding:0 var(--s-4);border-bottom:1px solid var(--lp-line);background:var(--lp-sunken)}.lp-dots{display:flex;gap:6px}.lp-dots span{width:10px;height:10px;border-radius:50%;background:var(--lp-line-strong)}.lp-url{flex:1 1;font-size:11.5px;text-align:center}.lp-tail,.lp-url{font-family:var(--font-mono);color:var(--lp-faint)}.lp-tail{font-size:10.5px;letter-spacing:.08em}.lp-canvas-body{display:grid;grid-template-columns:190px 1fr 300px;min-height:420px}.lp-side{border-right:1px solid var(--lp-line);background:var(--lp-sunken);padding:var(--s-4);display:flex;flex-direction:column;gap:2px;font-size:13px}.lp-group-label{font-family:var(--font-mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--lp-faint);margin:10px 0 4px;padding:0 var(--s-2)}.lp-item{display:flex;align-items:center;gap:var(--s-2);padding:5px var(--s-2);border-radius:var(--r-2);color:var(--lp-muted);font-size:13px}.lp-item-active{background:rgba(0,0,0,.05);color:var(--lp-text);font-weight:500}.lp-item-mono{font-family:var(--font-mono);font-size:12px}.lp-item-primary{color:var(--lp-primary)}.lp-main{background:var(--lp-bg);padding:var(--s-5);display:flex;flex-direction:column;gap:var(--s-4)}.lp-crumb{display:flex;gap:6px;align-items:center;font-family:var(--font-mono);font-size:11px;color:var(--lp-faint)}.lp-crumb-sep{color:var(--lp-line-strong)}.lp-crumb-cur{color:var(--lp-text)}.lp-preview-area{flex:1 1;background-image:linear-gradient(var(--lp-line-faint) .5px,transparent .5px),linear-gradient(90deg,var(--lp-line-faint) .5px,transparent .5px);background-size:24px 24px;background-color:var(--lp-elev);display:flex;align-items:center;justify-content:center;padding:var(--s-6);min-height:280px}.lp-preview-area,.lp-preview-card{border:1px solid var(--lp-line);border-radius:var(--r-3)}.lp-preview-card{background:var(--lp-elev);padding:var(--s-5);width:100%;max-width:320px;box-shadow:0 4px 16px -8px rgba(0,0,0,.1),0 0 0 .5px rgba(0,0,0,.06)}.lp-badge{font-family:var(--font-mono);font-size:10.5px;font-weight:500;padding:2px 8px;border-radius:var(--r-pill);border:1px solid}.lp-badge-primary{color:var(--lp-primary)}.lp-badge-green{color:var(--lp-success);font-family:var(--font-mono);font-size:10px}.lp-task{display:flex;align-items:center;gap:8px;padding:6px 10px;border:1px solid var(--lp-line);border-radius:6px;font-size:12px;color:var(--lp-text)}.lp-task-done{color:var(--lp-faint);text-decoration:line-through}.lp-task-check{width:12px;height:12px;border-radius:3px;border:1px solid var(--lp-line-strong);background:transparent;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.lp-task-check-done{background:var(--lp-success);border-color:var(--lp-success)}.lp-chat{border-left:1px solid var(--lp-line);background:var(--lp-elev);padding:var(--s-4);display:flex;flex-direction:column;gap:var(--s-3)}.lp-chat-head{display:flex;justify-content:space-between;align-items:center;padding-bottom:var(--s-3);border-bottom:1px solid var(--lp-line)}.lp-msg{font-size:12.5px;line-height:1.55;padding:10px 12px;border-radius:var(--r-3);max-width:92%}.lp-msg-user{background:var(--lp-primary);color:#fff;align-self:flex-end}.lp-msg-ai{background:var(--lp-sunken);color:var(--lp-text)}.lp-who{display:block;font-family:var(--font-mono);font-size:9.5px;letter-spacing:.12em;margin-bottom:4px;opacity:.7;text-transform:uppercase}.lp-section{margin-top:128px}.lp-muted{color:var(--lp-muted)}.lp-section-title{font-family:var(--font-display);font-weight:300;font-size:40px;letter-spacing:-.02em;margin-bottom:var(--s-3)}.lp-section-lede{font-size:16px;color:var(--lp-muted);max-width:56ch;margin-bottom:var(--s-7);font-weight:300}.lp-feat-grid{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:var(--s-4);gap:var(--s-4)}.lp-feat-card{padding:var(--s-6);border:1px solid var(--lp-line);border-radius:var(--r-3);background:var(--lp-elev);display:flex;flex-direction:column;gap:var(--s-3);min-height:220px;position:relative}.lp-feat-num{position:absolute;top:var(--s-4);right:var(--s-4);font-family:var(--font-mono);font-size:10px;letter-spacing:.12em;color:var(--lp-faint)}.lp-feat-title{font-size:18px;font-weight:500;letter-spacing:-.01em;margin-top:var(--s-3)}.lp-feat-desc{font-size:13.5px;color:var(--lp-muted);line-height:1.55}.lp-chips{display:flex;gap:6px;flex-wrap:wrap;margin-top:auto;padding-top:var(--s-2)}.lp-chip{display:inline-flex;align-items:center;padding:4px 10px;background:var(--lp-sunken);border:1px solid var(--lp-line);border-radius:var(--r-pill);font-size:12px;color:var(--lp-muted)}.lp-flow{padding:128px 0}.lp-flow-steps{display:grid;grid-template-columns:repeat(3,1fr);border:1px solid var(--lp-line);border-radius:var(--r-3);background:var(--lp-elev);overflow:hidden}.lp-flow-step{padding:var(--s-6);border-right:1px solid var(--lp-line);display:flex;flex-direction:column;gap:var(--s-4)}.lp-flow-step:last-child{border-right:none}.lp-flow-num{font-family:var(--font-mono);font-size:11px;letter-spacing:.14em;color:var(--lp-faint)}.lp-flow-title{font-size:20px;font-weight:500;letter-spacing:-.01em}.lp-flow-desc{font-size:13.5px;color:var(--lp-muted);line-height:1.55}.lp-flow-visual{margin-top:var(--s-3);background:var(--lp-bg);border:1px solid var(--lp-line);border-radius:var(--r-2);padding:var(--s-4);min-height:96px;justify-content:center}.lp-flow-visual,.lp-footer-cta{display:flex;align-items:center}.lp-footer-cta{margin:0 0 80px;padding:80px 48px;border:1px solid var(--lp-line);border-radius:14px;background:radial-gradient(600px 400px at 80% 30%,var(--lp-primary-soft),transparent 60%),var(--lp-elev);justify-content:space-between;gap:var(--s-6);position:relative;overflow:hidden}.lp-footer-deco{position:absolute;right:-24px;top:-12px;width:220px;height:auto;opacity:.14;pointer-events:none}.lp-footer-cta-h{font-family:var(--font-display);font-weight:300;font-size:36px;letter-spacing:-.02em;line-height:1.1;max-width:22ch;position:relative}.lp-docfoot{padding:var(--s-6) 0;border-top:1px solid var(--lp-line);font-family:var(--font-mono);font-size:11px;color:var(--lp-faint);display:flex;justify-content:space-between;letter-spacing:.08em;margin-bottom:var(--s-6)}.lp-docfoot-links{display:flex;gap:var(--s-6)}.lp-docfoot-links a{cursor:pointer}.lp-docfoot-links a:hover{color:var(--lp-text)}@media (max-width:900px){.lp-feat-grid,.lp-flow-steps{grid-template-columns:1fr}.lp-flow-step{border-right:none;border-bottom:1px solid var(--lp-line)}.lp-flow-step:last-child{border-bottom:none}.lp-canvas-body{grid-template-columns:1fr}.lp-side{display:none}.lp-chat{border-left:none;border-top:1px solid var(--lp-line)}.lp-footer-cta{flex-direction:column;align-items:flex-start}.lp-nav{display:none}.lp-auth-row{flex-direction:column}}.topbar-divider{width:1px;height:18px;background:var(--border);flex:none}.chat-usage-bar{display:flex;align-items:center;gap:var(--s-2);margin:0 var(--s-3) var(--s-2);padding:4px var(--s-3);border:1px solid var(--border-soft);border-radius:var(--r-2);background:var(--surface-2,var(--bg-1));font-family:var(--font-mono);font-size:12px;color:var(--text-2);cursor:default}.chat-usage-dot{width:7px;height:7px;border-radius:var(--r-pill);background:var(--text-3);flex:none}.chat-usage-label{font-family:var(--font-sans,inherit);color:var(--text-3);flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chat-usage-item{margin-left:auto;white-space:nowrap;flex:none}.chat-usage-item+.chat-usage-item{margin-left:var(--s-2)}.chat-usage-out{font-weight:600}.chat-usage-bar.is-running{border-color:color-mix(in srgb,var(--primary) 40%,var(--border-soft))}.chat-usage-bar.is-running .chat-usage-dot{background:var(--primary);animation:usage-pulse 1.2s ease-out infinite}.chat-usage-bar.is-running .chat-usage-label,.chat-usage-bar.is-running .chat-usage-out{color:var(--primary)}.chat-usage-bar.is-running .chat-usage-out{animation:usage-bump .35s ease-out}@keyframes usage-pulse{0%{box-shadow:0 0 0 0 color-mix(in srgb,var(--primary) 55%,transparent)}70%{box-shadow:0 0 0 6px color-mix(in srgb,var(--primary) 0%,transparent)}to{box-shadow:0 0 0 0 color-mix(in srgb,var(--primary) 0%,transparent)}}@keyframes usage-bump{0%{transform:scale(1)}40%{transform:scale(1.18)}to{transform:scale(1)}}@media (prefers-reduced-motion:reduce){.chat-usage-bar.is-running .chat-usage-dot,.chat-usage-bar.is-running .chat-usage-out{animation:none}}.account-badge-root{position:relative;display:inline-flex}.account-badge{display:inline-flex;align-items:center;gap:6px;height:28px;padding:0 10px;border:var(--stroke-thin) solid var(--border);border-radius:var(--r-pill);background:var(--surface-2);color:var(--text);cursor:pointer;transition:border-color var(--dur-2) var(--ease-out),background var(--dur-2) var(--ease-out)}.account-badge:hover{border-color:color-mix(in srgb,var(--primary) 45%,var(--border));background:var(--surface)}.account-badge svg{color:var(--novi-cobalt)}.account-badge-value{font-family:var(--font-mono);font-size:12.5px;font-weight:500}.account-badge-ring{position:relative;display:inline-grid;place-items:center;width:24px;height:24px;flex-shrink:0}.account-badge-ring .account-ring-svg{position:absolute;inset:0}.account-badge-ring .account-ring-track{fill:none;stroke:color-mix(in srgb,var(--text-3) 30%,transparent);stroke-width:2}.account-badge-ring .account-ring-fill{fill:none;stroke:var(--novi-cobalt);stroke-width:2;stroke-linecap:round;transition:stroke-dashoffset var(--dur-2) var(--ease-out),stroke var(--dur-2) var(--ease-out)}.account-badge-ring .account-ring-fill[data-level=warn]{stroke:var(--warning)}.account-badge-ring .account-ring-fill[data-level=danger]{stroke:var(--danger)}.account-popover{position:absolute;top:calc(100% + 8px);right:0;z-index:1200;width:320px;max-height:min(72vh,560px);overflow-y:auto;background:var(--surface);border:var(--stroke-thin) solid var(--border);border-radius:var(--r-3);box-shadow:var(--shadow-3);padding:var(--s-3);animation:dialogIn var(--dur-2) var(--ease-out)}.account-popover-head{display:flex;align-items:center;gap:var(--s-2);padding-bottom:var(--s-3);border-bottom:var(--stroke-thin) solid var(--border)}.account-avatar{display:grid;place-items:center;width:32px;height:32px;border-radius:50%;background:var(--bg-3);color:var(--text-2);flex-shrink:0}.account-id{flex:1 1;min-width:0}.account-name{font-size:13px;font-weight:600;color:var(--text)}.account-email,.account-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.account-email{font-size:11.5px;color:var(--text-3)}.account-popover-error{margin-top:var(--s-2);font-size:12px;color:var(--danger)}.account-section{padding-top:var(--s-3)}.account-section-title{font-size:11px;letter-spacing:.04em;text-transform:uppercase;color:var(--text-3);margin-bottom:var(--s-2)}.account-credit-total{display:flex;align-items:baseline;gap:6px;color:var(--text)}.account-credit-total svg{color:var(--novi-cobalt);align-self:center}.account-credit-num{font-family:var(--font-mono);font-size:22px;font-weight:600}.account-credit-unit{font-size:12px;color:var(--text-3)}.account-daily{margin-top:var(--s-2)}.account-daily-row{display:flex;justify-content:space-between;font-size:12px;color:var(--text-2)}.account-daily-remaining{color:var(--text-3);margin-top:2px}.account-daily-bar{height:6px;border-radius:var(--r-pill);background:var(--bg-3);overflow:hidden;margin:6px 0}.account-daily-bar-fill{height:100%;background:linear-gradient(90deg,var(--novi-cobalt),var(--novi-teal,#2BB3A3));border-radius:var(--r-pill);transition:width var(--dur-2) var(--ease-out)}.account-models{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px}.account-model{display:flex;align-items:center;justify-content:space-between;gap:var(--s-2);padding:5px 6px;border-radius:var(--r-1)}.account-model:hover{background:var(--surface-2)}.account-model-main{display:flex;align-items:center;gap:var(--s-2);min-width:0}.account-model-icon{width:16px;height:16px;flex-shrink:0;border-radius:3px}.account-model-icon-dot{background:var(--novi-cobalt);border-radius:50%;width:8px;height:8px}.account-model-name{font-size:12.5px;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.account-model-price{font-family:var(--font-mono);font-size:11px;color:var(--text-3);flex-shrink:0}.account-models-empty{font-size:12px;color:var(--text-3)}.account-popover-foot{margin-top:var(--s-3);padding-top:var(--s-2);border-top:var(--stroke-thin) solid var(--border);font-size:11px;color:var(--text-3)}.plan-doc-wrap{display:flex;flex-direction:column;height:100%;min-height:0}.plan-doc-empty{flex:1 1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--s-3);padding:var(--s-6);text-align:center;color:var(--text-muted);font-size:13px}.plan-doc-empty p{max-width:320px;line-height:1.6}.plan-doc-toolbar{display:flex;align-items:center;gap:var(--s-2);padding:var(--s-2) var(--s-3);border-bottom:var(--stroke-thin) solid var(--border);font-size:12px;color:var(--text-2);flex-shrink:0}.plan-doc-path{font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.plan-doc-hint{margin-left:auto;color:var(--text-3);font-size:11px;flex-shrink:0}.plan-doc-body{flex:1 1;overflow:auto;padding:var(--s-4);min-height:0}.plan-doc-md{padding:0}.plan-doc-md ::selection{background:color-mix(in srgb,var(--primary) 28%,transparent)}.plan-doc-diff-toggle{display:inline-flex;align-items:center;gap:4px;flex-shrink:0;padding:2px 8px;font-size:11px;line-height:1.6;border:var(--stroke-thin) solid var(--border);border-radius:var(--r-2);background:var(--surface);color:var(--text-2);cursor:pointer}.plan-doc-diff-toggle:hover:not(:disabled){background:var(--bg-2,var(--surface));color:var(--text)}.plan-doc-diff-toggle:disabled{opacity:.45;cursor:not-allowed}.plan-doc-diff-toggle.active{background:color-mix(in srgb,var(--primary) 14%,transparent);color:var(--primary);border-color:color-mix(in srgb,var(--primary) 40%,var(--border))}.plan-doc-diff{font-family:var(--font-mono,ui-monospace,SFMono-Regular,Menlo,monospace);font-size:12px;line-height:1.7;white-space:pre-wrap;word-break:break-word}.plan-doc-diff-line{display:flex;gap:var(--s-2);padding:0 var(--s-2);border-radius:var(--r-1)}.plan-doc-diff-gutter{flex-shrink:0;width:1ch;text-align:center;opacity:.7;-webkit-user-select:none;-moz-user-select:none;user-select:none}.plan-doc-diff-text{flex:1 1;min-width:0}.plan-doc-diff-line.del{background:color-mix(in srgb,#e5484d 18%,transparent);color:var(--text)}.plan-doc-diff-line.add{background:color-mix(in srgb,#30a46c 20%,transparent);color:var(--text)}.plan-doc-diff-line.same{color:var(--text-2)}.plan-doc-staged{flex-shrink:0;border-top:var(--stroke-thin) solid var(--border);background:var(--bg-2,var(--surface));max-height:40%;display:flex;flex-direction:column}.plan-doc-staged-head{display:flex;align-items:center;justify-content:space-between;padding:var(--s-2) var(--s-3);font-size:12px;color:var(--text-2)}.plan-doc-staged-list{overflow:auto;padding:0 var(--s-3) var(--s-3);display:flex;flex-direction:column;gap:var(--s-2)}.plan-doc-staged-item{display:flex;align-items:flex-start;gap:var(--s-2);padding:var(--s-2);border:var(--stroke-thin) solid var(--border);border-radius:var(--r-2);background:var(--surface)}.plan-doc-staged-text{flex:1 1;min-width:0;display:flex;flex-direction:column;gap:2px}.plan-doc-staged-snippet{font-size:11px;color:var(--text-3)}.plan-doc-staged-comment{font-size:12px;color:var(--text);line-height:1.5}.md-comment-popup{position:fixed;z-index:1100;background:var(--surface);border:var(--stroke-thin) solid var(--border);border-radius:var(--r-3);box-shadow:var(--shadow-3);padding:var(--s-3);display:flex;flex-direction:column;gap:var(--s-2);animation:dialogIn var(--dur-2) var(--ease-out)}.md-comment-popup-head{display:flex;align-items:center;gap:var(--s-2)}.md-comment-popup-title{flex:1 1;min-width:0;font-size:12px;font-weight:600;color:var(--text)}.md-comment-popup-heading,.md-comment-popup-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.md-comment-popup-heading{font-size:11px;color:var(--text-3)}.md-comment-popup-textarea{width:100%;box-sizing:border-box;resize:vertical;min-height:60px;background:var(--bg-3,var(--surface));border:var(--stroke-thin) solid var(--border);border-radius:var(--r-2);padding:var(--s-2);font-size:13px;color:var(--text);font-family:inherit}.md-comment-popup-textarea:focus{outline:none;border-color:var(--primary)}.md-comment-popup-actions{display:flex;justify-content:flex-end;gap:var(--s-2)}.conv-mode-seg{display:inline-flex;gap:2px;padding:2px;margin-right:var(--s-2);background:var(--bg-3,var(--surface));border:var(--stroke-thin) solid var(--border);border-radius:var(--r-2);flex-shrink:0}.conv-mode-btn{border:none;background:transparent;color:var(--text-muted);font-size:12px;padding:3px 10px;border-radius:calc(var(--r-2) - 2px);cursor:pointer}.conv-mode-btn:hover{color:var(--text-2)}.conv-mode-btn.active{background:var(--surface);color:var(--primary);font-weight:600;box-shadow:var(--shadow-1,0 1px 2px rgba(0,0,0,.08))}