@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-cyrillic-ext-wght-normal-DjL33-gN.woff2) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-cyrillic-wght-normal-BEAKL7Jp.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-vietnamese-wght-normal-6IgcOCM7.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-latin-ext-wght-normal-DC-KSUi6.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-latin-wght-normal-BgDaEnEv.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-cyrillic-ext-wght-normal-I4S5GZfc.woff2) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-cyrillic-wght-normal-BmXc_FBt.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-symbols2-wght-normal-GZpp1pK2.woff2) format("woff2-variations");unicode-range:U+2000-2001,U+2004-2008,U+200A,U+23B8-23BD,U+2500-259F}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-vietnamese-wght-normal-D8KDMBhC.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-latin-ext-wght-normal-DrnZ1wKl.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-latin-wght-normal-B_7UjwxQ.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--ink-900: #0a0a0b;--ink-850: #0e0e10;--ink-800: #141416;--ink-750: #1a1a1d;--ink-700: #232327;--stage: #070708;--white: #f4f4f5;--gray-300: #d4d4d8;--gray-400: #a1a1a6;--gray-500: #6e6e76;--gray-600: #52525a;--line: rgba(255, 255, 255, .09);--line-strong: rgba(255, 255, 255, .14);--fn-blue: #1e2530;--fn-blue-hover: #28313f;--fn-red-surface: #2a1e1e;--fn-red-hover: #392727;--fn-red: #c98b8b;--fn-green: #7fae8f;--fn-amber: #cbb285;--surface-app: var(--ink-900);--surface-panel: var(--ink-800);--surface-raised: var(--ink-750);--surface-stage: var(--stage);--surface-stage-line: rgba(255, 255, 255, .05);--border-default: var(--line);--border-input: var(--line-strong);--border-focus: rgba(255, 255, 255, .55);--text-primary: var(--white);--text-secondary: var(--gray-400);--text-muted: var(--gray-500);--text-on-accent: var(--white);--bubble-user-bg: var(--white);--bubble-user-text: var(--ink-900);--bubble-assistant-bg: var(--ink-750);--bubble-assistant-text: #ededee;--bubble-log-bg: var(--ink-850);--bubble-log-border: rgba(255, 255, 255, .08);--badge-preview-bg: rgba(255, 255, 255, .07);--badge-preview-text: var(--gray-300);--badge-deployed-bg: rgba(127, 174, 143, .14);--badge-deployed-text: #9ec7ab;--badge-partial-bg: rgba(203, 178, 133, .14);--badge-partial-text: var(--fn-amber);--conn-on: var(--fn-green);--conn-off: var(--fn-red);--btn-deploy-bg: var(--fn-blue);--btn-deploy-hover: var(--fn-blue-hover);--btn-teardown-bg: var(--fn-red-surface);--btn-teardown-hover: var(--fn-red-hover);--btn-send-bg: var(--white);--btn-send-text: var(--ink-900);--btn-disabled-bg: #26262a;--log-ok: var(--fn-green);--log-error: var(--fn-red);--focus-ring: 0 0 0 3px rgba(255, 255, 255, .16);--topbar-height: 48px;--font-ui: "Geist Variable", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-mono: "Geist Mono Variable", "SF Mono", "Consolas", "Menlo", monospace;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .4), inset 0 1px 0 rgba(255, 255, 255, .03);--shadow-md: 0 6px 22px rgba(0, 0, 0, .45), inset 0 1px 0 rgba(255, 255, 255, .04);--shadow-lg: 0 18px 50px rgba(0, 0, 0, .6), inset 0 1px 0 rgba(255, 255, 255, .05);--ease: cubic-bezier(.4, 0, .2, 1);--transition-theme: background-color .2s var(--ease), color .2s var(--ease), border-color .2s var(--ease), box-shadow .2s var(--ease)}*{box-sizing:border-box}body{margin:0;font-family:var(--font-ui);background:var(--surface-app);color:var(--text-primary);transition:var(--transition-theme);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;letter-spacing:-.005em;text-rendering:optimizeLegibility}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip-link{position:absolute;top:-100%;left:8px;padding:8px 16px;background:var(--btn-deploy-bg);color:var(--text-on-accent);border-radius:0 0 8px 8px;font-size:14px;font-weight:600;text-decoration:none;z-index:9999;transition:top .15s}.skip-link:focus{top:0;outline:none;box-shadow:var(--focus-ring)}:focus-visible{outline:none;box-shadow:var(--focus-ring);border-radius:4px}.app{display:flex;flex-direction:column;height:100vh}.topbar{display:flex;align-items:center;gap:10px;padding:0 16px;height:var(--topbar-height);background:var(--surface-panel);border-bottom:1px solid var(--border-default);transition:var(--transition-theme);flex-shrink:0;z-index:50}.topbar h1{font-size:15px;font-weight:600;margin:0;color:var(--text-primary);letter-spacing:-.02em;white-space:nowrap}.badge{padding:2px 10px;border-radius:999px;font-size:11px;font-weight:700;letter-spacing:.4px;text-transform:uppercase;white-space:nowrap;flex-shrink:0;transition:var(--transition-theme)}.badge-preview{background:var(--badge-preview-bg);color:var(--badge-preview-text)}.badge-deployed{background:var(--badge-deployed-bg);color:var(--badge-deployed-text)}.badge-partial{background:var(--badge-partial-bg);color:var(--badge-partial-text)}.status-text{flex:1;font-size:12px;color:var(--text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.conn{display:flex;align-items:center;gap:5px;font-size:11px;font-weight:500;white-space:nowrap;flex-shrink:0}.conn:before{content:"";display:inline-block;width:7px;height:7px;border-radius:50%;flex-shrink:0}.conn-on{color:var(--conn-on)}.conn-off{color:var(--conn-off)}.conn-on:before{background:var(--conn-on);box-shadow:0 0 0 3px #7fae8f29}.conn-off:before{background:var(--conn-off);box-shadow:0 0 0 3px #c98b8b24}.deploy-btn,.teardown-btn{border:1px solid var(--line-strong);border-radius:7px;padding:6px 14px;font-size:13px;font-weight:500;cursor:pointer;transition:background .16s var(--ease),border-color .16s var(--ease),transform .16s var(--ease),opacity .16s var(--ease);flex-shrink:0;white-space:nowrap}.deploy-btn{background:var(--btn-deploy-bg);color:var(--text-on-accent)}.teardown-btn{background:var(--btn-teardown-bg);color:var(--fn-red)}.deploy-btn:hover:not(:disabled){background:var(--btn-deploy-hover);border-color:#ffffff38;transform:translateY(-1px)}.teardown-btn:hover:not(:disabled){background:var(--btn-teardown-hover);border-color:#c98b8b66;transform:translateY(-1px)}.deploy-btn:disabled,.teardown-btn:disabled{background:var(--btn-disabled-bg);cursor:not-allowed;opacity:.65}.layout{display:grid;grid-template-columns:var(--chat-width, 380px) 1fr;flex:1;min-height:0;position:relative;transition:grid-template-columns .22s ease}.layout[data-chat-collapsed=true],.layout[data-chat-floating=true]{grid-template-columns:0 1fr}.chat{display:flex;flex-direction:column;background:var(--surface-panel);border-right:1px solid var(--border-default);min-height:0;overflow:hidden;position:relative;transition:var(--transition-theme);contain:layout style}.chat[data-floating=true]{position:fixed;top:var(--chat-float-y, 20px);left:var(--chat-float-x, 20px);width:var(--chat-float-w, 380px)!important;height:var(--chat-float-h, 520px);border-radius:14px;border:1px solid var(--border-default);box-shadow:var(--shadow-lg);z-index:100;overflow:hidden}.chat[data-maximized=true]{position:fixed;inset:var(--topbar-height) 0 0 0;width:100%!important;height:auto;border-radius:0;box-shadow:none;z-index:200;border-right:none;border-top:1px solid var(--border-default)}.chat-header{display:flex;align-items:center;gap:2px;padding:8px 8px 8px 14px;border-bottom:1px solid var(--border-default);background:var(--surface-panel);flex-shrink:0;transition:var(--transition-theme)}.chat-title{font-size:13px;font-weight:600;margin:0;flex:1;color:var(--text-primary)}.chat-panel-btn{background:none;border:none;border-radius:5px;width:26px;height:26px;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--text-muted);font-size:13px;transition:background .12s,color .12s;padding:0;flex-shrink:0}.chat-panel-btn:hover{background:var(--surface-app);color:var(--text-primary)}.chat-panel-btn[aria-pressed=true]{background:var(--badge-preview-bg);color:var(--badge-preview-text)}.chat-resize-handle{position:absolute;right:-4px;top:0;width:8px;height:100%;cursor:col-resize;z-index:20}.chat-resize-handle:after{content:"";position:absolute;left:3px;top:0;bottom:0;width:2px;border-radius:1px;background:transparent;transition:background .15s}.chat-resize-handle:hover:after,.chat-resize-handle:active:after{background:var(--border-focus);opacity:.6}.chat-reopen-btn{position:absolute;left:0;top:50%;transform:translateY(-50%);z-index:20;background:var(--surface-panel);border:1px solid var(--border-default);border-left:none;border-radius:0 8px 8px 0;padding:12px 6px;cursor:pointer;color:var(--text-secondary);font-size:12px;font-weight:500;display:flex;flex-direction:column;align-items:center;gap:5px;writing-mode:vertical-lr;transition:var(--transition-theme),background .12s;box-shadow:var(--shadow-md)}.chat-reopen-btn:hover{background:var(--surface-app);color:var(--text-primary)}.chat-log{flex:1;overflow-y:auto;padding:14px 12px;display:flex;flex-direction:column;gap:8px;scroll-behavior:smooth}.chat-message-row{display:flex;align-items:flex-end;gap:7px}.chat-message-row.row-user{flex-direction:row-reverse}.chat-avatar{width:28px;height:28px;border-radius:50%;background:var(--bubble-assistant-bg);display:flex;align-items:center;justify-content:center;font-size:13px;flex-shrink:0;transition:var(--transition-theme)}.chat-message{padding:9px 13px;border-radius:14px;font-size:14px;line-height:1.6;white-space:pre-wrap;word-break:break-word;animation:message-in .18s ease both;transition:var(--transition-theme)}.chat-user{background:var(--bubble-user-bg);color:var(--bubble-user-text);max-width:82%;border-bottom-right-radius:4px}.chat-assistant{background:var(--bubble-assistant-bg);color:var(--bubble-assistant-text);max-width:88%;border-bottom-left-radius:4px}.chat-message.chat-log-entry{align-self:stretch;flex:0 0 auto;background:var(--bubble-log-bg);border:1px solid var(--bubble-log-border);border-left:3px solid var(--log-ok);font-family:var(--font-mono);font-size:12px;line-height:1.5;padding:7px 11px;border-radius:6px;overflow:visible}.chat-message.chat-log-entry.log-entry-error{border-left-color:var(--log-error)}.log-ok{color:var(--log-ok)}.log-error{color:var(--log-error)}.chat-message.chat-log-entry code{font-size:11.5px;font-family:inherit;white-space:pre-wrap;word-break:break-word;overflow-wrap:anywhere}.chat-message code{font-size:11px;font-family:inherit}.chat-busy-wrapper{display:flex;align-items:flex-end;gap:7px}.chat-busy-dots{display:flex;align-items:center;gap:4px;padding:11px 14px;background:var(--bubble-assistant-bg);border-radius:14px 14px 14px 4px;transition:var(--transition-theme)}.chat-busy-dots span{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--text-muted);animation:dot-pulse 1.4s ease infinite}.chat-busy-dots span:nth-child(2){animation-delay:.2s}.chat-busy-dots span:nth-child(3){animation-delay:.4s}.chat-message.chat-error{align-self:stretch;background:#c98b8b14;border:1px solid rgba(201,139,139,.22);border-left:3px solid var(--log-error);color:var(--fn-red);font-size:13px;border-radius:8px;display:flex;align-items:flex-start;gap:8px;white-space:pre-wrap;animation:message-in .18s ease both}.chat-error-icon{flex-shrink:0;font-size:15px;margin-top:1px}.chat-scroll-btn{position:absolute;bottom:74px;right:12px;background:var(--surface-panel);border:1px solid var(--border-default);border-radius:20px;padding:5px 12px;font-size:12px;font-weight:500;cursor:pointer;color:var(--text-secondary);box-shadow:var(--shadow-sm);z-index:10;transition:var(--transition-theme),box-shadow .12s,color .12s}.chat-scroll-btn:hover{box-shadow:var(--shadow-md);color:var(--text-primary)}.chat-input-area{border-top:1px solid var(--border-default);background:var(--surface-panel);transition:var(--transition-theme);flex-shrink:0}.chat-input{display:flex;align-items:flex-end;gap:8px;padding:10px 10px 6px}.chat-input textarea{flex:1;padding:8px 10px;border:1px solid var(--border-input);border-radius:8px;font-size:13px;font-family:inherit;line-height:1.5;resize:none;overflow-y:auto;max-height:160px;background:var(--surface-app);color:var(--text-primary);transition:var(--transition-theme),border-color .15s,box-shadow .15s}.chat-input textarea:focus{border-color:var(--border-focus);outline:none;box-shadow:var(--focus-ring)}.chat-input textarea::placeholder{color:var(--text-muted)}.chat-input button{background:var(--btn-send-bg);color:var(--btn-send-text);border:none;border-radius:8px;padding:8px 14px;font-size:13px;font-weight:600;cursor:pointer;flex-shrink:0;transition:opacity .15s,var(--transition-theme)}.chat-input button:disabled{background:var(--btn-disabled-bg);color:var(--text-on-accent);cursor:not-allowed;opacity:.65}.chat-hint{font-size:11px;color:var(--text-muted);padding:0 10px 8px;text-align:right;-webkit-user-select:none;user-select:none;line-height:1}.diagram-section{flex:1;min-height:0;overflow:hidden;display:flex;flex-direction:column}.stage{position:relative;overflow:hidden;cursor:grab;flex:1;background-color:var(--surface-stage);background-image:linear-gradient(90deg,var(--surface-stage-line) 1px,transparent 1px),linear-gradient(var(--surface-stage-line) 1px,transparent 1px);background-size:24px 24px;transition:background-color .2s ease}.stage:active{cursor:grabbing}.stage:focus-visible{outline:2px solid var(--border-focus);outline-offset:-2px;box-shadow:none}.diagram-canvas{transform-origin:0 0;width:fit-content;padding:24px;will-change:transform;contain:layout style}.diagram-canvas svg{max-width:none}.diagram-error-overlay{position:absolute;top:12px;left:50%;transform:translate(-50%);max-width:80%;z-index:10;padding:6px 14px;border-radius:8px;background:#dc2626eb;color:#fff;font-size:12px;text-align:center;box-shadow:var(--shadow-md)}.diagram-empty,.diagram-error{display:flex;align-items:center;justify-content:center;height:100%;color:var(--text-secondary);font-size:14px;padding:24px;text-align:center}.diagram-error{color:var(--log-error);white-space:pre-wrap;font-family:monospace;font-size:12px}.diagram-empty-hint{display:flex;flex-direction:column;align-items:center;gap:6px;max-width:360px}.diagram-empty-icon{font-size:30px;line-height:1;color:var(--text-muted);opacity:.7;margin-bottom:4px}.diagram-empty-title{font-size:15px;font-weight:600;color:var(--text-primary)}.stage-kb-hint{position:absolute;bottom:12px;right:14px;font-size:10px;color:var(--text-muted);pointer-events:none;-webkit-user-select:none;user-select:none;opacity:0;transition:opacity .25s;background:var(--surface-panel);padding:3px 8px;border-radius:4px;border:1px solid var(--border-default)}.stage:focus-visible .stage-kb-hint{opacity:1}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;display:flex;align-items:center;justify-content:center;z-index:1000;padding:16px;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.modal-box{background:var(--surface-panel);border:1px solid var(--border-default);border-radius:14px;padding:24px 28px;max-width:420px;width:100%;box-shadow:var(--shadow-lg);transition:var(--transition-theme);animation:modal-in .16s ease both}.modal-title{font-size:16px;font-weight:700;margin:0 0 10px;color:var(--text-primary)}.modal-message{font-size:14px;color:var(--text-secondary);line-height:1.6;margin:0 0 20px}.modal-actions{display:flex;gap:10px;justify-content:flex-end}.modal-cancel-btn{background:none;border:1px solid var(--border-default);border-radius:7px;padding:7px 16px;font-size:13px;font-weight:500;cursor:pointer;color:var(--text-primary);transition:background .12s,var(--transition-theme)}.modal-cancel-btn:hover{background:var(--surface-app)}.modal-confirm-btn{border:none;border-radius:7px;padding:7px 18px;font-size:13px;font-weight:600;cursor:pointer;color:var(--text-on-accent);transition:background .15s}.diagram-toolbar{position:absolute;bottom:14px;right:14px;display:flex;flex-direction:column;gap:4px;z-index:10}.diagram-toolbar-btn{width:32px;height:32px;border-radius:8px;border:1px solid var(--border-default);background:var(--surface-panel);color:var(--text-secondary);font-size:16px;font-weight:600;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow-sm);transition:background .12s,color .12s,var(--transition-theme);padding:0;line-height:1}.diagram-toolbar-btn:hover{background:var(--surface-app);color:var(--text-primary);box-shadow:var(--shadow-md)}.chat-assistant .md-list{margin:4px 0 0;padding-left:18px;font-size:14px;line-height:1.6}.chat-assistant .md-list li{margin:2px 0}.chat-assistant .md-code{font-family:var(--font-mono);font-size:12px;background:#ffffff14;padding:1px 5px;border-radius:4px}@keyframes message-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@keyframes dot-pulse{0%,80%,to{opacity:.25;transform:scale(.75)}40%{opacity:1;transform:scale(1)}}@keyframes modal-in{0%{opacity:0;transform:scale(.95) translateY(8px)}to{opacity:1;transform:scale(1) translateY(0)}}@media(prefers-reduced-motion:reduce){.chat-message,.chat-message.chat-log-entry,.chat-busy-dots span,.modal-box,.viz-settings{animation:none}.layout,body,.topbar,.chat,.chat-header,.chat-input-area,.stage,.stage-kb-hint{transition:none}.deploy-btn:hover:not(:disabled),.teardown-btn:hover:not(:disabled),.auth-submit:hover:not(:disabled){transform:none}}*{scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.16) transparent}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#ffffff24;border:2px solid transparent;background-clip:padding-box;border-radius:999px}::-webkit-scrollbar-thumb:hover{background:#ffffff42;background-clip:padding-box}::-webkit-scrollbar-corner{background:transparent}.view-tabs{display:flex;gap:4px;margin-left:8px}.view-tab{border:1px solid var(--border-default);background:transparent;color:var(--text-secondary);padding:4px 12px;border-radius:6px;cursor:pointer;font-size:13px;transition:var(--transition-theme)}.view-tab:hover{color:var(--text-primary)}.view-tab-active{background:var(--surface-panel);color:var(--text-primary);border-color:var(--border-focus)}.view-tab:disabled,.view-tab-wip{opacity:.5;cursor:not-allowed}.view-tab-wip:hover{color:var(--text-secondary)}.wip-tag{margin-left:6px;font-size:10px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;padding:1px 5px;border-radius:4px;background:var(--border-default);color:var(--text-secondary)}.layout-deployed{display:flex;flex-direction:column;min-height:0}.deployed-state{display:flex;flex-direction:column;flex:1;min-height:0}.deployed-toolbar{display:flex;align-items:center;gap:12px;padding:10px 16px;border-bottom:1px solid var(--border-default);background:var(--surface-panel)}.project-form{display:flex;align-items:center;gap:8px}.topbar-projects{gap:6px}.topbar-projects select{max-width:200px}.topbar-projects button{padding:4px 10px}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;padding:0;border:1px solid var(--border-default);background:var(--surface-app);color:var(--text-secondary);border-radius:6px;cursor:pointer;transition:border-color .12s var(--ease),color .12s var(--ease),background .12s var(--ease)}.icon-btn:hover{color:var(--text-primary);border-color:var(--border-focus)}.icon-btn svg{display:block;width:16px;height:16px;flex:none}.details-btn{border:1px solid var(--border-default);background:var(--surface-app);color:var(--text-primary);padding:5px 12px;border-radius:6px;cursor:pointer;font-size:13px;transition:border-color .12s var(--ease),color .12s var(--ease)}.details-btn:hover{border-color:var(--border-focus)}.details-btn[aria-expanded=true]{border-color:var(--border-focus);color:var(--text-primary)}.chat-details{display:flex;flex-direction:column;gap:12px;padding:16px;border-bottom:1px solid var(--border-default);background:var(--surface-panel);font-size:13px;animation:viz-settings-in .2s var(--ease)}.chat-details-row{display:grid;grid-template-columns:96px 1fr;align-items:center;gap:12px;max-width:620px}.chat-details-row>label{color:var(--text-secondary);font-size:12px}.chat-details-value{color:var(--text-primary)}.chat-details-inline{display:flex;align-items:center;gap:10px;min-width:0}.chat-details-name-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chat-details-id-text{font-family:var(--font-mono);font-size:12px;color:var(--text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.link-btn{flex:none;border:none;background:none;padding:0;font-size:12px;font-family:inherit;color:var(--text-secondary);cursor:pointer;transition:color .12s var(--ease)}.link-btn:hover{color:var(--text-primary);text-decoration:underline}.link-btn.is-copied{color:var(--conn-on);text-decoration:none}.chat-details-edit{display:flex;align-items:center;gap:8px;min-width:0}.chat-details-edit input{flex:1;min-width:0;max-width:360px;border:1px solid var(--border-input);border-radius:6px;padding:6px 9px;background:var(--surface-app);color:var(--text-primary);font-size:13px}.details-save-btn{flex:none;border:1px solid var(--border-input);background:var(--surface-app);color:var(--text-primary);padding:6px 14px;border-radius:6px;cursor:pointer;font-size:13px;transition:border-color .12s var(--ease),background .12s var(--ease)}.details-save-btn:hover{border-color:var(--border-focus);background:var(--surface-raised)}.project-form label{font-size:13px;color:var(--text-secondary)}.project-form input{border:1px solid var(--border-input);border-radius:6px;padding:5px 9px;background:var(--surface-app);color:var(--text-primary);font-size:13px}.project-form button,.guide-btn,.settings-btn{border:1px solid var(--border-default);background:var(--surface-app);color:var(--text-primary);padding:5px 12px;border-radius:6px;cursor:pointer;font-size:13px;transition:border-color .12s ease,color .12s ease}.project-form button:hover,.guide-btn:hover,.settings-btn:hover,.guide-btn[aria-expanded=true],.settings-btn[aria-expanded=true]{border-color:var(--border-focus)}.project-form select{border:1px solid var(--border-input);border-radius:6px;padding:5px 9px;background:var(--surface-app);color:var(--text-primary);font-size:13px;cursor:pointer;max-width:340px}.guide-btn{margin-left:auto}.settings-btn{font-weight:550}.viz-settings{padding:24px 24px 28px;border-bottom:1px solid var(--border-default);background:radial-gradient(140% 120% at 100% 0%,rgba(255,255,255,.04),transparent 55%),var(--surface-app);font-size:13px;color:var(--text-secondary);max-height:62vh;overflow-y:auto;animation:viz-settings-in .22s ease}@keyframes viz-settings-in{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}.viz-settings-head{max-width:760px;margin:0 auto 20px}.viz-settings-head h3{margin:0 0 6px;font-size:16px;font-weight:650;letter-spacing:-.012em;color:var(--text-primary)}.viz-settings-sub{margin:0;line-height:1.55;max-width:680px}.viz-steps{list-style:none;margin:0 auto;padding:0;max-width:760px}.viz-step{position:relative;display:grid;grid-template-columns:28px 1fr;column-gap:16px;padding-bottom:20px}.viz-step:not(:last-child):before{content:"";position:absolute;left:13.5px;top:30px;bottom:0;width:1px;background:var(--border-default)}.viz-step-num{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;font-size:13px;font-weight:650;color:var(--text-primary);background:var(--surface-raised);border:1px solid var(--line-strong);box-shadow:0 0 0 4px var(--surface-app);z-index:1}.viz-step-body{min-width:0;padding-top:3px}.viz-step-title{font-size:14px;font-weight:600;color:var(--text-primary);margin-bottom:4px}.viz-step-hint{margin:0 0 12px;line-height:1.55;max-width:620px}.viz-step-body code,.viz-settings-sub code{background:var(--surface-stage);border:1px solid var(--border-default);border-radius:4px;padding:1px 5px;font-size:12px;color:var(--text-primary)}.viz-primary-btn{border:1px solid var(--border-focus);background:var(--btn-deploy-bg);color:var(--text-on-accent);padding:7px 16px;border-radius:7px;cursor:pointer;font-size:13px;font-weight:550;transition:background-color .15s ease,transform 80ms ease}.viz-primary-btn:hover:not(:disabled){background:var(--btn-deploy-hover)}.viz-primary-btn:active:not(:disabled){transform:translateY(1px)}.viz-primary-btn:disabled{opacity:.5;cursor:not-allowed}.token-count{margin-left:8px;font-size:11px;font-weight:600;color:var(--text-secondary);background:var(--surface-stage);border:1px solid var(--border-default);border-radius:999px;padding:1px 8px;vertical-align:middle}.token-list{list-style:none;margin:12px 0;padding:0;max-width:620px;display:flex;flex-direction:column;gap:6px}.token-row{display:flex;align-items:center;gap:12px;padding:8px 12px;border:1px solid var(--border-default);border-radius:8px;background:var(--surface-raised)}.token-row-preview{font-family:var(--font-mono);font-size:12px;color:var(--text-primary)}.token-row-date{flex:1;min-width:0;font-size:12px;color:var(--text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.token-row-confirm{display:inline-flex;align-items:center;gap:10px;font-size:12px;color:var(--text-secondary)}.token-danger{color:var(--fn-red)}.token-danger:hover{color:#e0a3a3}.token-hint{margin:8px 0 0;font-size:12px;color:var(--text-muted)}.token-new{margin-top:14px;max-width:620px;padding:12px;border:1px solid var(--line-strong);border-radius:9px;background:var(--surface-panel);box-shadow:var(--shadow-sm)}.token-new-title{font-size:12px;font-weight:600;color:var(--fn-amber);margin-bottom:8px}.token-new .token-chip{margin-top:0}.token-chip{margin-top:12px;display:flex;align-items:center;gap:8px;padding:7px 7px 7px 12px;background:var(--surface-panel);border:1px solid var(--border-default);border-radius:8px;max-width:620px}.token-chip code{flex:1;min-width:0;overflow-x:auto;white-space:nowrap;color:var(--text-primary);font-size:12px;border:0;background:none;padding:0}.mcp-snippet{margin:0;padding:14px 78px 14px 14px;background:var(--surface-panel);border:1px solid var(--border-default);border-radius:9px;font-size:12px;line-height:1.6;overflow-x:auto;white-space:pre;color:var(--text-primary);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}.cmd-block{position:relative;max-width:620px}.copy-btn{position:absolute;top:8px;right:8px;z-index:1;border:1px solid var(--border-input);background:var(--surface-app);color:var(--text-secondary);padding:4px 11px;border-radius:6px;font-size:11px;font-weight:550;cursor:pointer;transition:color .12s ease,border-color .12s ease,background-color .12s ease}.token-chip .copy-btn{position:static}.copy-btn:hover{color:var(--text-primary);border-color:var(--border-focus)}.copy-btn:active{transform:translateY(1px)}.copy-btn.is-copied{color:var(--conn-on);border-color:var(--conn-on)}.viz-remove{max-width:760px;margin:4px auto 0;border-top:1px solid var(--border-default);padding-top:16px}.viz-remove summary{cursor:pointer;color:var(--text-secondary);font-size:13px;font-weight:550;-webkit-user-select:none;user-select:none;list-style:none}.viz-remove summary::-webkit-details-marker{display:none}.viz-remove summary:before{content:"▸ ";color:var(--text-muted)}.viz-remove[open] summary:before{content:"▾ "}.viz-remove summary:hover{color:var(--text-primary)}.viz-remove .cmd-block{margin-top:12px}.auth-screen{min-height:100vh;display:flex;align-items:center;justify-content:center;background:radial-gradient(120% 100% at 50% -10%,rgba(255,255,255,.05),transparent 60%),var(--surface-app);padding:24px}.auth-card{background:var(--surface-raised);border:1px solid var(--border-default);border-radius:16px;padding:36px 34px;max-width:400px;width:100%;box-shadow:var(--shadow-lg)}.auth-brand{font-size:1.35rem;font-weight:600;letter-spacing:-.02em;color:var(--text-primary);text-align:center;margin-bottom:22px}.auth-tabs{display:flex;gap:4px;padding:4px;background:var(--surface-app);border:1px solid var(--border-default);border-radius:10px;margin-bottom:22px}.auth-tab{flex:1;border:none;background:none;color:var(--text-secondary);font:inherit;font-size:.9rem;padding:8px 10px;border-radius:7px;cursor:pointer;transition:color .12s var(--ease),background .12s var(--ease)}.auth-tab:hover{color:var(--text-primary)}.auth-tab.is-active{color:var(--text-primary);background:var(--surface-raised);box-shadow:var(--shadow-sm)}.auth-form{display:flex;flex-direction:column;gap:14px}.auth-field{display:flex;flex-direction:column;gap:6px}.auth-field>span{font-size:.8rem;color:var(--text-secondary)}.auth-input{border:1px solid var(--border-input);border-radius:8px;padding:10px 12px;background:var(--surface-app);color:var(--text-primary);font-size:.95rem}.auth-input:focus{outline:none;box-shadow:var(--focus-ring);border-color:var(--border-focus)}.auth-submit{margin-top:4px;border:1px solid var(--line-strong);background:var(--white);color:var(--ink-900);font:inherit;font-weight:600;font-size:.95rem;padding:11px 16px;border-radius:9px;cursor:pointer;transition:opacity .12s var(--ease),transform .12s var(--ease)}.auth-submit:hover:not(:disabled){transform:translateY(-1px)}.auth-submit:disabled{opacity:.55;cursor:not-allowed}.auth-switch{margin:4px 0 0;text-align:center;font-size:.85rem;color:var(--text-secondary)}.auth-link{border:none;background:none;padding:0;font:inherit;font-size:.85rem;color:var(--text-primary);font-weight:500;text-decoration:underline;text-underline-offset:2px;cursor:pointer}.auth-link:disabled{color:var(--text-muted);cursor:not-allowed;text-decoration:none}.auth-error{margin:0;color:var(--fn-red);font-size:.85rem;line-height:1.5}.auth-notice{margin:0;color:var(--text-secondary);font-size:.85rem;line-height:1.5}.auth-dev{margin:0;font-size:.8rem;color:var(--text-muted);background:var(--surface-app);border:1px dashed var(--border-default);border-radius:8px;padding:8px 10px}.auth-dev code{font-family:var(--font-mono);color:var(--text-primary)}.auth-verify-lead{margin:0 0 4px;color:var(--text-secondary);font-size:.92rem;line-height:1.55}.auth-verify-lead strong{color:var(--text-primary)}.auth-code{display:flex;gap:8px;justify-content:center;margin:6px 0}.auth-code-box{width:44px;height:52px;text-align:center;font-family:var(--font-mono);font-size:1.4rem;color:var(--text-primary);background:var(--surface-app);border:1px solid var(--border-input);border-radius:9px}.auth-code-box:focus{outline:none;box-shadow:var(--focus-ring);border-color:var(--border-focus)}.user-menu{display:inline-flex;align-items:center;gap:8px;margin-left:4px}.user-avatar{width:28px;height:28px;border-radius:50%;object-fit:cover;flex:none}.user-avatar-fallback{display:inline-flex;align-items:center;justify-content:center;background:var(--surface-raised);border:1px solid var(--line-strong);color:var(--text-primary);font-size:.8rem;font-weight:600}.user-name{font-size:.85rem;color:var(--text-secondary);max-width:140px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.logout-btn{padding:5px 10px;font-size:.8rem;color:var(--text-secondary);background:transparent;border:1px solid var(--border-default);border-radius:6px;cursor:pointer}.logout-btn:hover{color:var(--text-primary);border-color:var(--border-focus)}.devpanel-bar{flex:none;display:flex;align-items:center;gap:8px;width:100%;height:34px;padding:0 16px;border:none;border-top:1px solid var(--border-default);background:var(--surface-panel);color:var(--text-secondary);font-size:12px;font-family:inherit;cursor:pointer;transition:color .12s var(--ease),background .12s var(--ease)}.devpanel-bar:hover{color:var(--text-primary);background:var(--surface-raised)}.devpanel-bar svg{display:block;flex:none}.devpanel-bar-label{font-weight:500;letter-spacing:.01em}.devpanel-panel{flex:none;position:relative;display:flex;flex-direction:column;width:100%;height:var(--devpanel-h, 320px);border-top:1px solid var(--border-default);background:var(--surface-panel)}.devpanel-resize{position:absolute;top:-5px;left:0;right:0;height:11px;cursor:ns-resize;z-index:3}.devpanel-resize:after{content:"";position:absolute;top:5px;left:0;right:0;height:2px;background:transparent;transition:background .12s var(--ease)}.devpanel-resize:hover:after{background:var(--border-focus)}.devpanel-header{flex:none;display:flex;align-items:center;gap:10px;padding:7px 12px;border-bottom:1px solid var(--border-default)}.devpanel-tabs{display:flex;align-items:center;gap:4px}.devpanel-tab{border:1px solid transparent;background:none;color:var(--text-secondary);font:inherit;font-size:12.5px;padding:3px 11px;border-radius:6px;cursor:pointer;transition:color .12s var(--ease),background .12s var(--ease),border-color .12s var(--ease)}.devpanel-tab:hover{color:var(--text-primary)}.devpanel-tab.is-active{color:var(--text-primary);background:var(--surface-raised);border-color:var(--border-default);font-weight:500}.devpanel-dot{width:7px;height:7px;border-radius:50%;flex:none;background:var(--text-muted)}.devpanel-dot-up{background:var(--conn-on);box-shadow:0 0 0 3px #7fae8f29}.devpanel-dot-down{background:var(--conn-off)}.devpanel-dot-checking{background:var(--fn-amber)}.devpanel-status-text{font-size:12px;color:var(--text-secondary)}.devpanel-spacer{flex:1}.devpanel-port-field{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--text-secondary)}.devpanel-port{width:72px;border:1px solid var(--border-input);border-radius:6px;padding:4px 8px;background:var(--surface-app);color:var(--text-primary);font-size:12px;font-family:var(--font-mono)}.devpanel-body{flex:1;min-height:0;display:flex;background:var(--surface-app)}.devpanel-iframe{flex:1;width:100%;height:100%;border:0;background:#fff}.devpanel-empty{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:24px;text-align:center;color:var(--text-secondary);font-size:13px;line-height:1.55}.devpanel-empty-icon{font-size:26px;color:var(--text-muted);opacity:.7}.devpanel-empty-title{color:var(--text-primary);font-weight:600}.devpanel-empty p{margin:0;max-width:460px}.devpanel-empty code{font-family:var(--font-mono);font-size:12px;color:var(--text-primary);background:var(--surface-stage);border:1px solid var(--border-default);border-radius:4px;padding:1px 5px}.devpanel-empty-actions{display:flex;align-items:center;gap:10px;margin-top:6px}.devpanel-url{width:min(520px,70vw);border:1px solid var(--border-input);border-radius:6px;padding:7px 10px;background:var(--surface-app);color:var(--text-primary);font-size:13px;font-family:var(--font-mono)}.devpanel-error{color:var(--fn-red);font-size:12px;margin-top:8px}.devpanel-aside{color:var(--text-muted);font-size:12px;margin-top:8px}.devpanel-link-url{max-width:min(620px,80vw);overflow:hidden}.devpanel-link-url code{font-family:var(--font-mono);font-size:12px;color:var(--text-secondary);word-break:break-all}.devpanel-open-btn{margin-top:6px;padding:8px 18px;font-weight:500}.mcp-guide{padding:24px 24px 32px;border-bottom:1px solid var(--border-default);background:radial-gradient(140% 120% at 100% 0%,rgba(255,255,255,.04),transparent 55%),var(--surface-app);color:var(--text-secondary);font-size:13px;line-height:1.6;max-height:70vh;overflow-y:auto;animation:viz-settings-in .22s var(--ease)}.guide-head{max-width:820px;margin:0 auto 24px}.guide-head h3{margin:0 0 8px;font-size:17px;font-weight:650;letter-spacing:-.014em;color:var(--text-primary)}.guide-lede{margin:0;max-width:760px}.guide-lede strong,.guide-cases strong,.guide-note strong,.guide-tool p strong{color:var(--text-primary);font-weight:600}.guide-section{max-width:820px;margin:26px auto 0}.guide-section-title{margin:0 0 14px;font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted)}.guide-flow{display:flex;flex-wrap:wrap;align-items:stretch;gap:8px}.guide-flow-step{flex:1 1 150px;min-width:130px;border:1px solid var(--border-default);background:var(--surface-raised);border-radius:10px;padding:12px 14px;color:var(--text-primary);font-size:12.5px;font-weight:600;line-height:1.45}.guide-flow-step em{display:inline;color:var(--text-secondary);font-weight:400;font-style:normal;font-size:11.5px}.guide-flow-arrow{align-self:center;color:var(--text-muted);font-size:16px}.guide-section p{margin:0 0 10px;max-width:780px}.guide-section p:last-child{margin-bottom:0}.guide-aside{color:var(--text-muted);font-size:12px}.guide-inline-link{border:none;background:none;padding:0;font:inherit;color:var(--text-primary);font-weight:600;text-decoration:underline;text-underline-offset:2px;cursor:pointer;transition:color .12s var(--ease)}.guide-inline-link:hover{color:#fff}.mcp-guide code{font-family:var(--font-mono);font-size:12px;color:var(--text-primary);background:var(--surface-stage);border:1px solid var(--border-default);border-radius:4px;padding:1px 5px}
