:root{--bg: #f1f5f9;--surface: #ffffff;--surface-2: #f8fafc;--surface-3: #f1f5f9;--border: #e2e8f0;--text: #0f172a;--text-muted: #475569;--text-faint: #94a3b8;--accent: #2563eb;--accent-2: #16a34a;--danger: #dc2626;--warning: #d97706;--info: #0284c7;--font-sans: ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, "Apple Color Emoji", "Segoe UI Emoji";--fs-12: 12px;--fs-13: 13px;--fs-14: 14px;--fs-16: 16px;--fs-18: 18px;--sp-4: 4px;--sp-6: 6px;--sp-8: 8px;--sp-10: 10px;--sp-12: 12px;--sp-16: 16px;--sp-20: 20px;--sp-24: 24px;--r-8: 8px;--r-10: 10px;--r-12: 12px;--shadow-1: 0 1px 3px rgba(0,0,0,.07), 0 4px 12px rgba(0,0,0,.06);--shadow-2: 0 1px 2px rgba(0,0,0,.05);--focus: 0 0 0 3px rgba(37,99,235,.2);--sidebar-w: 260px;--topbar-h: 56px;--details-w: 340px;--control-h: 34px;--control-h-sm: 30px;--chrome-bg: var(--surface);--chrome-border: var(--border);--chrome-text: var(--text);--chrome-text-muted: var(--text-muted);--chrome-text-faint: var(--text-faint);--theme-toggle-bg: var(--surface-2);--nav-hover-bg: var(--surface-3);--nav-active-bg: #eff6ff;--nav-active-color: var(--accent);--nav-active-border: #bfdbfe;--tree-active-bg: #eff6ff;--tree-active-color: var(--accent);--tree-active-border: #bfdbfe;--badge-default-bg: var(--surface-3);--badge-default-color: var(--text-muted);--badge-default-border: var(--border);--badge-success-bg: #f0fdf4;--badge-success-color: #15803d;--badge-success-border: #bbf7d0;--badge-warn-bg: #fffbeb;--badge-warn-color: #92400e;--badge-warn-border: #fde68a;--badge-info-bg: #f0f9ff;--badge-info-color: #075985;--badge-info-border: #bae6fd;--badge-danger-bg: #fef2f2;--badge-danger-color: #991b1b;--badge-danger-border: #fecaca;--btn-danger-bg: #fef2f2;--btn-danger-color: var(--danger);--btn-danger-border: #fecaca;--btn-danger-hover-bg: #fee2e2;--btn-danger-hover-border: #fca5a5;--btn-hover-border: #cbd5e1;--table-selected: #eff6ff;--table-selected-hover: #dbeafe;--login-bg: linear-gradient(135deg, #eff6ff 0%, #f8fafc 50%, #f0fdf4 100%);--skeleton-from: #f1f5f9;--skeleton-via: #e2e8f0;--dialog-backdrop: rgba(15,23,42,.35)}[data-theme=dark]{--bg: #0f172a;--surface: #1e293b;--surface-2: #162032;--surface-3: #253347;--border: #334155;--text: #f1f5f9;--text-muted: #94a3b8;--text-faint: #64748b;--accent: #3b82f6;--accent-2: #22c55e;--danger: #f87171;--warning: #fbbf24;--info: #38bdf8;--shadow-1: 0 1px 3px rgba(0,0,0,.4), 0 4px 12px rgba(0,0,0,.3);--shadow-2: 0 1px 2px rgba(0,0,0,.25);--focus: 0 0 0 3px rgba(59,130,246,.3);--chrome-bg: #0d1117;--chrome-border: #1e2d3d;--chrome-text: #e2e8f0;--chrome-text-muted: #7a9bb8;--chrome-text-faint: #4a6880;--theme-toggle-bg: rgba(255,255,255,.07);--nav-hover-bg: rgba(255,255,255,.06);--nav-active-bg: rgba(59,130,246,.18);--nav-active-color: #60a5fa;--nav-active-border: rgba(59,130,246,.3);--tree-active-bg: rgba(59,130,246,.18);--tree-active-color: #60a5fa;--tree-active-border: rgba(59,130,246,.3);--badge-default-bg: #253347;--badge-default-color: #94a3b8;--badge-default-border: #334155;--badge-success-bg: #052e16;--badge-success-color: #86efac;--badge-success-border: #14532d;--badge-warn-bg: #431407;--badge-warn-color: #fcd34d;--badge-warn-border: #78350f;--badge-info-bg: #0c2a3f;--badge-info-color: #7dd3fc;--badge-info-border: #0c4a6e;--badge-danger-bg: #2d0a0a;--badge-danger-color: #fca5a5;--badge-danger-border: #7f1d1d;--btn-danger-bg: #2d0a0a;--btn-danger-color: #fca5a5;--btn-danger-border: #7f1d1d;--btn-danger-hover-bg: #3f0f0f;--btn-danger-hover-border: #991b1b;--btn-hover-border: #475569;--table-selected: rgba(59,130,246,.14);--table-selected-hover: rgba(59,130,246,.22);--login-bg: linear-gradient(135deg, #0f172a 0%, #1e293b 50%, #0a1628 100%);--skeleton-from: #1e293b;--skeleton-via: #253347;--dialog-backdrop: rgba(0,0,0,.65)}[data-theme=neutral]{--bg: #dce6f0;--surface: #edf3f8;--surface-2: #e4edf5;--surface-3: #d8e4ee;--border: #bacfdf;--text: #1a2f42;--text-muted: #3d5a73;--text-faint: #6b8fa8;--accent: #0284c7;--accent-2: #16a34a;--danger: #dc2626;--warning: #d97706;--info: #0284c7;--shadow-1: 0 1px 3px rgba(0,0,0,.1), 0 4px 12px rgba(0,0,0,.08);--shadow-2: 0 1px 2px rgba(0,0,0,.07);--focus: 0 0 0 3px rgba(2,132,199,.22);--chrome-bg: #1a3a5f;--chrome-border: #254d6e;--chrome-text: #dbeeff;--chrome-text-muted: #7fb3d6;--chrome-text-faint: #4e80a0;--theme-toggle-bg: rgba(0,0,0,.25);--nav-hover-bg: rgba(255,255,255,.09);--nav-active-bg: rgba(255,255,255,.14);--nav-active-color: #dbeeff;--nav-active-border: rgba(255,255,255,.22);--tree-active-bg: rgba(2,132,199,.14);--tree-active-color: #0284c7;--tree-active-border: rgba(2,132,199,.25);--badge-default-bg: #d8e4ee;--badge-default-color: #3d5a73;--badge-default-border: #bacfdf;--badge-success-bg: #ecfdf5;--badge-success-color: #15803d;--badge-success-border: #a7f3d0;--badge-warn-bg: #fffbeb;--badge-warn-color: #92400e;--badge-warn-border: #fde68a;--badge-info-bg: #e0f2fe;--badge-info-color: #0369a1;--badge-info-border: #bae6fd;--badge-danger-bg: #fef2f2;--badge-danger-color: #991b1b;--badge-danger-border: #fecaca;--btn-danger-bg: #fef2f2;--btn-danger-color: #dc2626;--btn-danger-border: #fecaca;--btn-danger-hover-bg: #fee2e2;--btn-danger-hover-border: #fca5a5;--btn-hover-border: #8cafc8;--table-selected: #dbeafe;--table-selected-hover: #bfdbfe;--login-bg: linear-gradient(135deg, #1a3a5f 0%, #1e4976 60%, #152e4d 100%);--skeleton-from: #e4edf5;--skeleton-via: #d8e4ee;--dialog-backdrop: rgba(10,25,40,.42)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}body{font-family:var(--font-sans);font-size:var(--fs-14);color:var(--text);background:var(--bg)}a{color:inherit;text-decoration:none}a:hover{text-decoration:underline}button{font-family:inherit;font-size:inherit}.shell{display:grid;grid-template-columns:var(--sidebar-w) 1fr;min-height:100vh}.sidebar{border-right:1px solid var(--chrome-border);background:var(--chrome-bg);color:var(--chrome-text);padding:var(--sp-16);position:sticky;top:0;height:100vh;overflow-y:auto}.brand{display:flex;align-items:center;gap:var(--sp-10);padding:var(--sp-10);border-radius:var(--r-10)}.brand-badge{width:28px;height:28px;border-radius:9px;background:linear-gradient(135deg,var(--accent),#7c3aed);box-shadow:0 2px 8px #2563eb4d;flex-shrink:0}.brand-title{font-weight:700;letter-spacing:-.2px;color:var(--chrome-text)}.brand-subtitle{font-size:var(--fs-12);color:var(--chrome-text-faint);margin-top:2px}.nav{margin-top:var(--sp-16);display:flex;flex-direction:column;gap:2px}.nav-section-title{margin-top:var(--sp-16);font-size:11px;text-transform:uppercase;color:var(--chrome-text-faint);letter-spacing:.08em;padding:0 var(--sp-10);font-weight:600}.nav-item{display:flex;align-items:center;justify-content:space-between;padding:8px var(--sp-10);border-radius:var(--r-8);color:var(--chrome-text-muted);cursor:pointer;border:1px solid transparent;-webkit-user-select:none;user-select:none;font-size:var(--fs-13)}.nav-item:hover{background:var(--nav-hover-bg);color:var(--chrome-text);text-decoration:none}.nav-item.active{background:var(--nav-active-bg);color:var(--nav-active-color);border-color:var(--nav-active-border);font-weight:500}button.nav-item{background:none;width:100%;text-align:left}.nav-item-disabled{opacity:.45;cursor:not-allowed}.nav-item-disabled:hover{background:none;color:var(--chrome-text-muted)}.nav-project-ctx{display:flex;align-items:center;gap:6px;padding:5px var(--sp-10) 3px;margin-bottom:2px}.nav-project-dot{width:7px;height:7px;border-radius:50%;background:var(--chrome-text-faint);flex-shrink:0}.nav-project-dot.active{background:var(--success)}.nav-project-label{font-size:11px;color:var(--chrome-text-faint);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-style:italic}.nav-project-dot.active+.nav-project-label{color:var(--chrome-text-muted);font-style:normal}.nav-project-clear{margin-left:auto;background:none;border:none;cursor:pointer;color:var(--chrome-text-faint);font-size:14px;line-height:1;padding:0 2px;flex-shrink:0}.nav-project-clear:hover{color:var(--danger)}.footer-note{padding:var(--sp-12) var(--sp-10);color:var(--chrome-text-faint);font-size:var(--fs-12)}.main{display:grid;grid-template-rows:var(--topbar-h) 1fr;min-height:100vh;overflow:hidden;background:var(--bg)}.topbar{display:flex;align-items:center;justify-content:space-between;padding:0 var(--sp-16);border-bottom:1px solid var(--chrome-border);background:var(--chrome-bg);color:var(--chrome-text);position:sticky;top:0;z-index:10;box-shadow:var(--shadow-2)}.topbar-left{display:flex;align-items:center;gap:var(--sp-12)}.topbar-title{font-weight:600;font-size:var(--fs-14);color:var(--chrome-text)}.breadcrumbs{color:var(--chrome-text-faint);font-size:var(--fs-12);margin-top:2px}.topbar-actions{display:flex;align-items:center;gap:var(--sp-8)}.topbar-hamburger{background:transparent!important;border-color:transparent!important;color:var(--chrome-text)!important;box-shadow:none!important}.topbar-hamburger:hover{background:var(--nav-hover-bg)!important;border-color:transparent!important;color:var(--chrome-text)!important;box-shadow:none!important}.theme-toggle{display:flex;align-items:center;gap:2px;background:var(--theme-toggle-bg);border:1px solid var(--chrome-border);border-radius:var(--r-8);padding:2px}.theme-btn{width:26px;height:26px;display:flex;align-items:center;justify-content:center;border-radius:6px;border:none;background:transparent;color:var(--chrome-text-muted);cursor:pointer;font-size:13px;transition:background .12s,color .12s}.theme-btn:hover{background:var(--nav-hover-bg);color:var(--chrome-text)}.theme-btn.active{background:var(--chrome-text);color:var(--chrome-bg)}.workspace{display:grid;grid-template-columns:1fr var(--details-w);gap:var(--sp-16);padding:var(--sp-16);overflow:hidden;align-items:start}.workspace.triple{grid-template-columns:300px 1fr var(--details-w)}.workspace.single{grid-template-columns:1fr}.panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-12);overflow:hidden;box-shadow:var(--shadow-1);display:flex;flex-direction:column}.pane{min-height:360px}.panel-header{display:flex;align-items:flex-start;justify-content:space-between;padding:var(--sp-16);border-bottom:1px solid var(--border);flex-shrink:0;background:var(--surface)}.panel-title{font-weight:600;font-size:var(--fs-14);color:var(--text)}.panel-subtitle{color:var(--text-faint);font-size:var(--fs-12);margin-top:3px}.btn{height:var(--control-h);display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-6);padding:0 var(--sp-12);border-radius:var(--r-8);border:1px solid var(--border);color:var(--text-muted);background:var(--surface);cursor:pointer;text-decoration:none;white-space:nowrap;font-size:var(--fs-13);font-weight:500;box-shadow:var(--shadow-2);transition:background .12s,border-color .12s,color .12s}.btn:hover{background:var(--surface-3);color:var(--text);border-color:var(--btn-hover-border);text-decoration:none}.btn:focus-visible{outline:none;box-shadow:var(--focus)}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff;box-shadow:0 1px 3px #2563eb4d}.btn.primary:hover{background:#1d4ed8;border-color:#1d4ed8}.btn.danger{border-color:var(--btn-danger-border);background:var(--btn-danger-bg);color:var(--btn-danger-color)}.btn.danger:hover{background:var(--btn-danger-hover-bg);border-color:var(--btn-danger-hover-border)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-group{display:flex;gap:var(--sp-8);align-items:center}.badge{display:inline-flex;align-items:center;padding:2px 8px;border-radius:999px;font-size:11px;font-weight:500;white-space:nowrap}.badge{border:1px solid var(--badge-default-border);color:var(--badge-default-color);background:var(--badge-default-bg)}.badge.success{border-color:var(--badge-success-border);color:var(--badge-success-color);background:var(--badge-success-bg)}.badge.warn{border-color:var(--badge-warn-border);color:var(--badge-warn-color);background:var(--badge-warn-bg)}.badge.info{border-color:var(--badge-info-border);color:var(--badge-info-color);background:var(--badge-info-bg)}.badge.danger{border-color:var(--badge-danger-border);color:var(--badge-danger-color);background:var(--badge-danger-bg)}.input{height:var(--control-h);padding:0 var(--sp-12);border-radius:var(--r-8);border:1px solid var(--border);background:var(--surface);color:var(--text);outline:none;font-size:var(--fs-13);font-family:inherit;width:100%;box-shadow:var(--shadow-2);transition:border-color .12s,box-shadow .12s}.input:focus{box-shadow:var(--focus);border-color:#93c5fd}.input::placeholder{color:var(--text-faint)}select.input{cursor:pointer}select.input option{background:var(--surface);color:var(--text)}textarea.input{height:auto;padding:var(--sp-10) var(--sp-12);resize:vertical}input[type=number]{-moz-appearance:textfield}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.field{margin-bottom:var(--sp-12)}.field>label{display:block;font-size:var(--fs-12);font-weight:500;color:var(--text-muted);margin-bottom:5px}.value{color:var(--text);font-size:var(--fs-13)}.table{width:100%;border-collapse:collapse}.table th,.table td{padding:10px 14px;border-bottom:1px solid var(--border);font-size:var(--fs-13);text-align:left}.table th{color:var(--text-faint);font-weight:600;font-size:11px;text-transform:uppercase;letter-spacing:.05em;background:var(--surface-2)}.table tbody tr{cursor:pointer}.table tbody tr:hover{background:var(--surface-2)}.table tbody tr.selected{background:var(--table-selected)}.table tbody tr.selected:hover{background:var(--table-selected-hover)}.table td.num,.table th.num{text-align:right;font-variant-numeric:tabular-nums}.tabs{display:flex;gap:2px;padding:var(--sp-10) var(--sp-16);border-bottom:1px solid var(--border);flex-shrink:0;background:var(--surface-2)}.tab{padding:6px 12px;border-radius:var(--r-8);color:var(--text-muted);border:1px solid transparent;cursor:pointer;font-size:var(--fs-13);font-weight:500;-webkit-user-select:none;user-select:none}.tab:hover{color:var(--text);background:var(--surface)}.tab.active{color:var(--accent);background:var(--surface);border-color:var(--border);box-shadow:var(--shadow-2)}.details{padding:var(--sp-16);overflow-y:auto}.tree{padding:var(--sp-8);overflow-y:auto;flex:1}.tree-item{display:flex;align-items:center;justify-content:space-between;padding:8px var(--sp-10);border-radius:var(--r-8);color:var(--text-muted);cursor:pointer;border:1px solid transparent;-webkit-user-select:none;user-select:none;font-size:var(--fs-13)}.tree-item:hover{background:var(--surface-3);color:var(--text)}.tree-item.active{background:var(--tree-active-bg);color:var(--tree-active-color);border-color:var(--tree-active-border);font-weight:500}.tree-indent-1{padding-left:28px}.tree-indent-2{padding-left:48px}.dialog-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--dialog-backdrop);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);display:flex;align-items:center;justify-content:center;z-index:100;padding:var(--sp-20)}.dialog{width:min(640px,100%);border:1px solid var(--border);border-radius:14px;background:var(--surface);color:var(--text);box-shadow:0 20px 60px #0000002e,0 4px 12px #00000014;display:flex;flex-direction:column;max-height:calc(100vh - 80px)}.dialog-header{display:flex;justify-content:space-between;align-items:flex-start;padding:var(--sp-16) var(--sp-20);border-bottom:1px solid var(--border);flex-shrink:0}.dialog-title{font-weight:600;font-size:var(--fs-16);color:var(--text)}.dialog-subtitle{color:var(--text-faint);font-size:var(--fs-13);margin-top:4px}.dialog-body{padding:var(--sp-20);overflow-y:auto;flex:1}.dialog-footer{display:flex;justify-content:flex-end;gap:var(--sp-8);padding:var(--sp-16) var(--sp-20);border-top:1px solid var(--border);flex-shrink:0;background:var(--surface-2);border-radius:0 0 14px 14px}.state-container{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--sp-24);gap:var(--sp-12);min-height:240px;color:var(--text-faint);text-align:center}.state-icon{font-size:32px;opacity:.5}.state-title{font-weight:600;color:var(--text-muted);font-size:var(--fs-16)}.state-message{font-size:var(--fs-13);max-width:320px}.toast-container{position:fixed;bottom:var(--sp-24);right:var(--sp-24);display:flex;flex-direction:column;gap:var(--sp-8);z-index:200}.toast{padding:var(--sp-12) var(--sp-16);border-radius:var(--r-10);border:1px solid var(--border);background:var(--surface);box-shadow:0 8px 24px #0000001f,0 2px 6px #0000000f;font-size:var(--fs-13);max-width:360px;display:flex;align-items:flex-start;gap:var(--sp-10);color:var(--text)}.toast.success{border-left:3px solid var(--accent-2)}.toast.error{border-left:3px solid var(--danger)}.toast.info{border-left:3px solid var(--info)}.field-error{display:block;color:var(--danger);font-size:var(--fs-12);margin-top:4px}.sidebar.collapsed{width:0;overflow:hidden;padding:0;border-right:none}.shell.sidebar-collapsed{grid-template-columns:0 1fr}.scroll-area{overflow-y:auto;flex:1}.text-right{text-align:right}.text-faint{color:var(--text-faint)}.text-muted{color:var(--text-muted)}.text-success{color:var(--badge-success-color)}.text-danger{color:var(--danger)}.text-warning{color:var(--warning)}.flex{display:flex}.flex-col{display:flex;flex-direction:column}.items-center{align-items:center}.gap-8{gap:var(--sp-8)}.gap-10{gap:var(--sp-10)}.mt-4{margin-top:var(--sp-4)}.mt-6{margin-top:var(--sp-6)}.w-full{width:100%}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-12)}.form-grid.single{grid-template-columns:1fr}.separator{height:1px;background:var(--border);margin:var(--sp-16) 0}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:var(--sp-24);background:var(--login-bg)}.login-card{width:100%;max-width:400px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-12);padding:var(--sp-24);box-shadow:0 20px 60px #0000001a,0 4px 12px #0000000f;display:flex;flex-direction:column;gap:var(--sp-16)}.wizard-steps{display:flex;gap:var(--sp-8);margin-bottom:var(--sp-16)}.wizard-step{flex:1;height:4px;border-radius:2px;background:var(--border);transition:background .2s}.wizard-step.done{background:var(--accent)}.wizard-step.active{background:#93c5fd}@keyframes shimmer{0%{background-position:-400px 0}to{background-position:400px 0}}.skeleton{background:linear-gradient(90deg,var(--skeleton-from) 25%,var(--skeleton-via) 50%,var(--skeleton-from) 75%);background-size:800px 100%;animation:shimmer 1.5s infinite;border-radius:var(--r-8)}.skeleton-row{height:40px;margin-bottom:1px}
