@import"https://fonts.googleapis.com/css2?family=JetBrains+Mono:ital,wght@0,400;0,500;0,600;1,400&family=Geist+Sans:wght@400;500;600;700&display=swap";.header{height:64px;background:linear-gradient(135deg,var(--color-bg-secondary) 0%,var(--color-bg-tertiary) 100%);border-bottom:1px solid var(--color-border);position:sticky;top:0;z-index:100}.header-content{height:100%;display:flex;align-items:center;justify-content:space-between;padding:0 var(--spacing-xl);gap:var(--spacing-xl)}.header-logo{display:flex;align-items:center;gap:var(--spacing-md);min-width:200px;color:var(--color-primary);font-size:var(--font-size-lg);font-weight:600;letter-spacing:-.02em}.header-logo svg{display:block}.header-title{background:linear-gradient(135deg,#3b82f6,#06b6d4);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;font-family:var(--font-mono)}.header-center{flex:1;display:flex;justify-content:center}.tenant-info{display:flex;flex-direction:column;align-items:center;gap:var(--spacing-xs)}.tenant-label{font-size:var(--font-size-xs);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em}.tenant-name{font-size:var(--font-size-sm);color:var(--color-text-primary);font-weight:500}.header-actions{display:flex;align-items:center;gap:var(--spacing-md);min-width:fit-content}.header-btn{width:40px;height:40px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-md);color:var(--color-text-secondary);transition:all var(--transition-fast)}.header-btn:hover{color:var(--color-text-primary);background-color:var(--color-bg-tertiary)}.header-btn--icon{cursor:pointer}.user-menu-container{position:relative}.user-btn{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-sm);border-radius:var(--radius-md);cursor:pointer;transition:background-color var(--transition-fast)}.user-btn:hover{background-color:var(--color-bg-tertiary)}.user-avatar{width:32px;height:32px;border-radius:var(--radius-md);background:linear-gradient(135deg,#3b82f6,#06b6d4);color:#fff;display:flex;align-items:center;justify-content:center;font-size:var(--font-size-sm);font-weight:600;font-family:var(--font-mono)}.user-menu-dropdown{position:absolute;top:calc(100% + var(--spacing-sm));right:0;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);min-width:200px;box-shadow:var(--shadow-lg);overflow:hidden;animation:slideDown var(--transition-fast) ease-out;z-index:var(--z-dropdown)}@keyframes slideDown{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.user-menu-header{padding:var(--spacing-md) var(--spacing-md);display:flex;flex-direction:column;gap:var(--spacing-sm);border-bottom:1px solid var(--color-border)}.user-name{font-size:var(--font-size-sm);font-weight:500;color:var(--color-text-primary)}.user-role-badge{display:inline-flex;align-items:center;justify-content:center;padding:var(--spacing-xs) var(--spacing-sm);border-radius:var(--radius-sm);font-size:var(--font-size-xs);font-weight:600;color:#fff;width:fit-content}.user-menu-divider{height:1px;background:var(--color-border)}.user-menu-item{width:100%;padding:var(--spacing-md) var(--spacing-md);text-align:left;font-size:var(--font-size-sm);color:var(--color-text-secondary);cursor:pointer;transition:all var(--transition-fast)}.user-menu-item:hover{color:var(--color-text-primary);background-color:var(--color-bg-tertiary)}.user-menu-item--danger:hover{color:var(--color-error);background-color:#ef44441a}.header-mobile-toggle{display:none;background:transparent;border:none;color:var(--color-text-primary);cursor:pointer;padding:var(--spacing-sm);margin-right:var(--spacing-sm);border-radius:var(--radius-md)}.header-mobile-toggle:hover{background:var(--color-bg-tertiary)}@media (max-width: 768px){.header-mobile-toggle{display:inline-flex}}.sidebar{width:240px;background:var(--color-bg-secondary);border-right:1px solid var(--color-border);display:flex;flex-direction:column;transition:width var(--transition-base);overflow:hidden}.sidebar--collapsed{width:64px}.sidebar-nav{flex:1;display:flex;flex-direction:column;gap:var(--spacing-sm);padding:var(--spacing-lg) var(--spacing-md);overflow-y:auto}.nav-group{display:flex;flex-direction:column;gap:var(--spacing-sm)}.nav-group+.nav-group{margin-top:var(--spacing-md)}.nav-group-label{padding:0 var(--spacing-md);margin-bottom:2px;font-size:.65rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--color-text-muted)}.sidebar-project{padding:0 var(--spacing-md) var(--spacing-md);margin-bottom:var(--spacing-sm);border-bottom:1px solid var(--color-border)}.sidebar-project .nav-group-label{padding:0;display:block}.sidebar-project-select{width:100%;margin-top:4px;padding:6px 8px;border-radius:var(--radius-sm);border:1px solid var(--color-border);background:var(--color-bg);color:var(--color-text-primary);font-size:var(--font-size-sm)}.nav-item{display:flex;align-items:center;gap:var(--spacing-md);padding:var(--spacing-md) var(--spacing-md);border-radius:var(--radius-md);color:var(--color-text-secondary);font-size:var(--font-size-sm);font-weight:500;text-decoration:none;cursor:pointer;transition:all var(--transition-fast);position:relative;white-space:nowrap;background:transparent;border:none;width:100%;text-align:left;font-family:inherit}.nav-item:hover{color:var(--color-text-primary);background-color:var(--color-bg-tertiary)}.nav-item--active{color:var(--color-primary);background:linear-gradient(90deg,rgba(59,130,246,.1) 0%,transparent 100%);border-left:3px solid var(--color-primary);padding-left:calc(var(--spacing-md) - 3px)}.nav-item--active .nav-icon{color:var(--color-primary)}.nav-icon{display:flex;align-items:center;justify-content:center;flex-shrink:0;color:inherit;transition:color var(--transition-fast)}.nav-label{flex:1;min-width:0}.sidebar--collapsed .nav-label{display:none}.nav-badge{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 4px;background:var(--color-primary);color:#fff;border-radius:var(--radius-sm);font-size:.65rem;font-weight:700;margin-left:auto;flex-shrink:0}.sidebar--collapsed .nav-badge{display:none}.sidebar-footer{padding:var(--spacing-md);border-top:1px solid var(--color-border);display:flex;justify-content:center}.sidebar-toggle{width:40px;height:40px;border-radius:var(--radius-md);display:flex;align-items:center;justify-content:center;color:var(--color-text-secondary);background:none;cursor:pointer;transition:all var(--transition-fast)}.sidebar-toggle:hover{color:var(--color-text-primary);background-color:var(--color-bg-tertiary)}.sidebar-nav::-webkit-scrollbar{width:6px}.sidebar-nav::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:3px}.sidebar-nav::-webkit-scrollbar-thumb:hover{background:var(--color-text-muted)}@media (max-width: 768px){.sidebar{position:fixed;top:0;left:0;height:100vh;width:260px;z-index:1100;transform:translate(-100%);transition:transform var(--transition-base);box-shadow:4px 0 24px #00000059}.sidebar--mobile-open{transform:translate(0)}.sidebar--collapsed.sidebar--mobile-open{width:260px}}.mobile-nav-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;z-index:1050;animation:vc-fade-in .15s ease-out}@keyframes vc-fade-in{0%{opacity:0}to{opacity:1}}.wizard{width:260px;flex-shrink:0;background:var(--color-bg-secondary);border-left:1px solid var(--color-border);display:flex;flex-direction:column;overflow-y:auto;padding:var(--spacing-lg) var(--spacing-md);gap:var(--spacing-lg)}.wizard--collapsed{width:40px;padding:var(--spacing-md) 0;align-items:center;gap:0}.wizard-header{display:flex;align-items:center;justify-content:space-between}.wizard-title{font-size:var(--font-size-sm);font-weight:700;color:var(--color-text-primary)}.wizard-toggle{width:28px;height:28px;border-radius:var(--radius-md);display:flex;align-items:center;justify-content:center;color:var(--color-text-secondary);background:none;border:none;cursor:pointer;transition:all var(--transition-fast)}.wizard-toggle:hover{color:var(--color-text-primary);background-color:var(--color-bg-tertiary)}.wizard-hint{margin:0;font-size:.72rem;line-height:1.5;color:var(--color-text-muted)}.wizard-project{width:100%;padding:6px 8px;border-radius:var(--radius-sm);border:1px solid var(--color-border);background:var(--color-bg);color:var(--color-text-primary);font-size:var(--font-size-sm)}.wizard-project:disabled{opacity:.6;cursor:not-allowed}.wizard-steps{display:flex;flex-direction:column;gap:var(--spacing-lg)}.wizard-step-label{display:flex;align-items:center;gap:8px;font-size:.72rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--color-text-muted);margin-bottom:var(--spacing-sm)}.wizard-step-num{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:9px;background:var(--color-bg-tertiary);color:var(--color-text-secondary);font-size:.65rem;font-weight:700}.wizard-items{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:2px}.wizard-item{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:var(--radius-sm);text-decoration:none;color:var(--color-text-secondary);font-size:var(--font-size-sm);transition:background-color var(--transition-fast),color var(--transition-fast)}.wizard-item:hover{background-color:var(--color-bg-tertiary);color:var(--color-text-primary)}.wizard-item.active{color:var(--color-primary)}.wizard-item-label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.wiz-mark{flex-shrink:0;width:16px;text-align:center;font-size:.8rem;line-height:1}.wiz-mark--done{color:var(--color-success, #22c55e)}.wiz-mark--active{color:var(--color-warning, #f59e0b)}.wiz-mark--failed{color:var(--color-error, #ef4444)}.wiz-mark--todo{color:var(--color-text-muted)}@media (max-width: 1024px){.wizard{display:none}}.dashboard{flex:1;overflow-y:auto;padding:var(--spacing-2xl);display:flex;flex-direction:column;gap:var(--spacing-2xl)}.dashboard-hero{background:linear-gradient(135deg,#3b82f626,#06b6d426);border:1px solid var(--color-border);border-radius:var(--radius-xl);padding:var(--spacing-2xl);position:relative;overflow:hidden}.dashboard-hero:before{content:"";position:absolute;top:-50%;right:-50%;width:100%;height:100%;background:radial-gradient(circle,rgba(59,130,246,.1) 0%,transparent 70%);pointer-events:none}.hero-content{position:relative;z-index:1}.hero-title{font-size:var(--font-size-3xl);margin-bottom:var(--spacing-md);background:linear-gradient(135deg,#3b82f6,#06b6d4);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.hero-subtitle{font-size:var(--font-size-lg);color:var(--color-text-secondary);max-width:600px}.dashboard-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:var(--spacing-lg)}.stat-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--spacing-lg);display:flex;flex-direction:column;gap:var(--spacing-md);transition:all var(--transition-base)}.stat-card:hover{border-color:var(--color-primary);box-shadow:var(--shadow-md)}.stat-label{font-size:var(--font-size-sm);color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.05em;font-weight:600}.stat-value{font-size:var(--font-size-3xl);font-weight:700;color:var(--color-text-primary);font-family:var(--font-mono)}.stat-bar{height:4px;background:var(--color-bg-tertiary);border-radius:2px;overflow:hidden}.stat-bar-fill{height:100%;background:linear-gradient(90deg,#3b82f6,#06b6d4);border-radius:2px;transition:width var(--transition-base)}.create-job-section{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--spacing-xl)}.section-title{font-size:var(--font-size-xl);margin-bottom:var(--spacing-lg);color:var(--color-text-primary)}.create-job-form{display:flex;flex-direction:column;gap:var(--spacing-md)}.job-input{font-family:var(--font-sans);padding:var(--spacing-md);border:1px solid var(--color-border);background:var(--color-bg-primary);color:var(--color-text-primary);border-radius:var(--radius-md);font-size:var(--font-size-base);resize:vertical;transition:all var(--transition-fast)}.job-input:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px #3b82f61a}.job-input::placeholder{color:var(--color-text-muted)}.job-input:disabled{opacity:.6;cursor:not-allowed}.btn{padding:var(--spacing-md) var(--spacing-xl);border-radius:var(--radius-md);font-size:var(--font-size-base);font-weight:600;cursor:pointer;transition:all var(--transition-fast);border:none;display:inline-flex;align-items:center;justify-content:center;white-space:nowrap;gap:var(--spacing-sm)}.btn--primary{background:linear-gradient(135deg,#3b82f6,#2563eb);color:#fff;box-shadow:var(--shadow-md)}.btn--primary:hover:not(:disabled){background:linear-gradient(135deg,#2563eb,#1d4ed8);box-shadow:var(--shadow-lg)}.btn:disabled{opacity:.5;cursor:not-allowed}.error-message{padding:var(--spacing-md);background:#ef44441a;border:1px solid rgba(239,68,68,.3);color:#ef4444;border-radius:var(--radius-md);font-size:var(--font-size-sm)}.state-distribution{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--spacing-xl)}.state-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:var(--spacing-md)}.state-badge{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-md);background:var(--color-bg-primary);border:1px solid var(--color-border);border-radius:var(--radius-md);transition:all var(--transition-fast)}.state-badge:hover{border-color:var(--color-primary);transform:translateY(-2px);box-shadow:var(--shadow-md)}.state-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}.state-label{font-size:var(--font-size-sm);color:var(--color-text-secondary);font-weight:500;flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.state-count{font-size:var(--font-size-lg);font-weight:700;color:var(--color-text-primary);font-family:var(--font-mono)}.jobs-list-section{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--spacing-xl)}.jobs-list{display:flex;flex-direction:column;gap:var(--spacing-md)}.job-card{padding:var(--spacing-lg);background:var(--color-bg-primary);border:1px solid var(--color-border);border-radius:var(--radius-md);transition:all var(--transition-fast);cursor:pointer}.job-card:hover{border-color:var(--color-primary);box-shadow:var(--shadow-md)}.job-card--link{display:block;color:inherit;text-decoration:none}.job-card--link:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.job-card--link:hover .job-open-hint{opacity:1;transform:translate(2px)}.job-header{display:flex;align-items:center;gap:var(--spacing-md);margin-bottom:var(--spacing-md)}.job-id{font-family:var(--font-mono);font-size:var(--font-size-sm);color:var(--color-text-secondary);font-weight:600}.job-state{padding:var(--spacing-xs) var(--spacing-md);border-radius:var(--radius-sm);color:#fff;font-size:var(--font-size-xs);font-weight:700;text-transform:uppercase;letter-spacing:.05em}.job-description{font-size:var(--font-size-base);color:var(--color-text-primary);margin-bottom:var(--spacing-sm);line-height:1.5}.job-meta{display:flex;align-items:center;gap:var(--spacing-md);font-size:var(--font-size-sm);color:var(--color-text-muted)}.job-review{padding:2px 8px;border-radius:10px;font-size:var(--font-size-xs);font-weight:600}.job-review--pending_review{background:#f59e0b22;color:var(--color-warning)}.job-review--approved{background:#16a34a22;color:var(--color-success)}.job-review--rejected{background:#dc262633;color:var(--color-error)}.job-review--changes_requested{background:#38bdf822;color:#38bdf8}.job-open-hint{margin-left:auto;font-size:var(--font-size-xs);font-weight:600;color:var(--color-accent);opacity:.6;transition:opacity var(--transition-fast),transform var(--transition-fast)}.empty-state{text-align:center;padding:var(--spacing-2xl) var(--spacing-xl);background:var(--color-surface);border:1px dashed var(--color-border);border-radius:var(--radius-lg)}.empty-icon{margin-bottom:var(--spacing-lg);color:var(--color-text-muted);display:flex;justify-content:center}.empty-icon svg{opacity:.5}.empty-title{font-size:var(--font-size-lg);color:var(--color-text-primary);margin-bottom:var(--spacing-sm)}.empty-text{color:var(--color-text-secondary);font-size:var(--font-size-sm)}.dashboard::-webkit-scrollbar{width:8px}.dashboard::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:4px}.dashboard::-webkit-scrollbar-thumb:hover{background:var(--color-text-muted)}@media (max-width: 768px){.dashboard{padding:var(--spacing-lg);gap:var(--spacing-lg)}.dashboard-stats{grid-template-columns:repeat(2,1fr)}.hero-title{font-size:var(--font-size-2xl)}.state-grid{grid-template-columns:repeat(auto-fill,minmax(120px,1fr))}}.toast-container{position:fixed;top:16px;right:16px;z-index:9999;display:flex;flex-direction:column;gap:8px;max-width:420px;pointer-events:none}.toast{display:flex;align-items:center;gap:10px;padding:12px 16px;border-radius:8px;font-size:13px;font-weight:500;color:#e2e8f0;background:#1e293b;border:1px solid #334155;box-shadow:0 8px 24px #0006;pointer-events:auto;animation:toast-slide-in .25s ease-out}.toast--success{border-left:3px solid #22c55e}.toast--success .toast__icon{color:#4ade80}.toast--error{border-left:3px solid #ef4444}.toast--error .toast__icon{color:#f87171}.toast--warning{border-left:3px solid #f59e0b}.toast--warning .toast__icon{color:#fbbf24}.toast--info{border-left:3px solid #3b82f6}.toast--info .toast__icon{color:#60a5fa}.toast__icon{flex-shrink:0;width:20px;height:20px;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:14px}.toast__message{flex:1;line-height:1.4}.toast__close{flex-shrink:0;background:none;border:none;color:#64748b;font-size:16px;cursor:pointer;padding:0 2px;line-height:1}.toast__close:hover{color:#e2e8f0}@keyframes toast-slide-in{0%{opacity:0;transform:translate(40px)}to{opacity:1;transform:translate(0)}}.req-form{display:flex;flex-direction:column;gap:var(--spacing-lg);max-width:760px}.req-form__section{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--spacing-md) var(--spacing-lg)}.req-form__section header{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:var(--spacing-sm)}.req-form__section h3{margin:0;font-size:14px;letter-spacing:.04em;text-transform:uppercase;color:var(--color-text-secondary)}.req-form__hint{font-size:12px;color:var(--color-text-tertiary)}.req-form__textarea,.req-form__input{width:100%;background:var(--color-bg-elevated);color:var(--color-text-primary);border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:var(--spacing-sm);font-family:inherit;font-size:13px;resize:vertical}.req-form__textarea:focus,.req-form__input:focus,.req-form__field input:focus,.req-form__field select:focus{outline:2px solid var(--color-accent);outline-offset:-1px}.req-form__chips{display:flex;flex-wrap:wrap;gap:var(--spacing-xs)}.req-form__chip{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border:1px solid var(--color-border);border-radius:999px;font-size:12px;font-weight:600;color:var(--color-text-secondary);background:transparent;cursor:pointer;transition:var(--transition-fast);-webkit-user-select:none;user-select:none}.req-form__chip:hover{border-color:var(--color-accent);color:var(--color-accent)}.req-form__chip.is-active{background:var(--color-accent);border-color:var(--color-accent);color:var(--color-bg)}.req-form__chip input{display:none}.req-form__grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:var(--spacing-sm)}.req-form__field{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--color-text-tertiary)}.req-form__field input,.req-form__field select{background:var(--color-bg-elevated);color:var(--color-text-primary);border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:6px 8px;font-size:13px}.req-form__inline-check{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--color-text-primary)}.req-form__error{background:var(--color-danger-bg, rgba(248, 113, 113, .1));color:var(--color-danger, #f87171);padding:var(--spacing-sm);border-radius:var(--radius-sm);font-size:13px}.req-form__actions{display:flex;justify-content:flex-end}.req-form__submit{background:var(--color-accent);color:var(--color-bg);border:none;padding:10px 20px;border-radius:var(--radius-sm);font-weight:700;cursor:pointer;transition:var(--transition-fast)}.req-form__submit:hover:not([disabled]){filter:brightness(1.1)}.req-form__submit[disabled]{opacity:.5;cursor:not-allowed}.bom-editor{display:flex;flex-direction:column;gap:var(--spacing-lg)}.bom-editor__header{display:flex;justify-content:space-between;align-items:flex-end;gap:var(--spacing-md)}.bom-editor__header h2{margin:0;font-size:20px;color:var(--color-text-primary)}.bom-editor__hint{font-size:12px;color:var(--color-text-tertiary)}.bom-editor__actions{display:flex;gap:var(--spacing-sm)}.bom-editor__btn{background:transparent;color:var(--color-text-secondary);border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:8px 14px;font-weight:600;cursor:pointer;transition:var(--transition-fast)}.bom-editor__btn:hover{border-color:var(--color-accent);color:var(--color-accent)}.bom-editor__btn--primary{background:var(--color-accent);color:var(--color-bg);border-color:var(--color-accent)}.bom-editor__btn--primary:hover{filter:brightness(1.1);color:var(--color-bg)}.bom-editor__layout{display:grid;grid-template-columns:1fr 320px;gap:var(--spacing-lg);align-items:start}@media (max-width: 960px){.bom-editor__layout{grid-template-columns:1fr}}.bom-editor__table-wrap{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);overflow-x:auto}.bom-editor__table{width:100%;border-collapse:collapse;font-size:13px}.bom-editor__table th{text-align:left;font-size:11px;letter-spacing:.04em;text-transform:uppercase;color:var(--color-text-tertiary);padding:var(--spacing-sm) var(--spacing-md);border-bottom:1px solid var(--color-border);font-weight:700}.bom-editor__table tbody tr:nth-child(2n){background:var(--color-bg-elevated)}.bom-editor__table tbody tr:hover{background:var(--color-bg-hover)}.bom-editor__table td{padding:4px 8px;vertical-align:middle}.bom-editor__cell{width:100%;background:transparent;color:var(--color-text-primary);border:1px solid transparent;border-radius:var(--radius-sm);padding:6px 8px;font:inherit}.bom-editor__cell:focus{outline:none;border-color:var(--color-accent);background:var(--color-bg)}.bom-editor__row-del{background:transparent;border:none;color:var(--color-text-tertiary);cursor:pointer;font-size:18px;line-height:1;width:24px;height:24px;border-radius:50%;transition:var(--transition-fast)}.bom-editor__row-del:hover{background:var(--color-danger-bg, rgba(248, 113, 113, .15));color:var(--color-danger, #f87171)}.bom-editor__empty{text-align:center;color:var(--color-text-tertiary);padding:var(--spacing-lg);font-size:13px}.bom-editor__sidebar{position:sticky;top:var(--spacing-md);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--spacing-md);display:flex;flex-direction:column;gap:var(--spacing-sm);max-height:calc(100vh - 100px);overflow-y:auto}.bom-editor__sidebar h3{margin:0;font-size:13px;letter-spacing:.04em;text-transform:uppercase;color:var(--color-text-secondary)}.bom-editor__search,.bom-editor__tier{background:var(--color-bg-elevated);color:var(--color-text-primary);border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:6px 8px;font-size:13px}.bom-editor__search:focus,.bom-editor__tier:focus{outline:2px solid var(--color-accent);outline-offset:-1px}.bom-editor__candidates{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--spacing-xs)}.bom-editor__candidate{background:var(--color-bg-elevated);border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:var(--spacing-sm);display:grid;grid-template-columns:1fr auto;gap:4px;align-items:start}.bom-editor__candidate-main{display:flex;flex-direction:column;gap:2px;min-width:0}.bom-editor__candidate-main strong{color:var(--color-text-primary);font-size:13px;font-family:var(--font-mono);word-break:break-all}.bom-editor__candidate-main span{color:var(--color-text-secondary);font-size:12px}.bom-editor__candidate-meta{grid-column:1 / -1;display:flex;flex-wrap:wrap;gap:8px;font-size:11px;color:var(--color-text-tertiary)}.bom-editor__score{margin-left:auto;color:var(--color-success, #4ade80);font-weight:700}.bom-editor__add-btn{background:transparent;border:1px solid var(--color-border);color:var(--color-text-secondary);border-radius:var(--radius-sm);padding:4px 8px;font-size:11px;font-weight:700;cursor:pointer;transition:var(--transition-fast);align-self:flex-start}.bom-editor__add-btn:hover{background:var(--color-accent);border-color:var(--color-accent);color:var(--color-bg)}.assistant-page{display:flex;flex-direction:column;height:100%;max-width:860px;margin:0 auto}.assistant-header{margin-bottom:var(--spacing-md)}.assistant-header h2{margin:0;color:var(--color-text-primary);font-size:var(--font-size-2xl)}.assistant-header p{margin:var(--spacing-xs) 0 0;color:var(--color-text-secondary);font-size:var(--font-size-sm)}.assistant-messages{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:var(--spacing-md);padding:var(--spacing-md);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);min-height:240px}.assistant-empty{margin:auto;color:var(--color-text-muted);font-size:var(--font-size-sm);text-align:center}.assistant-message{display:flex;flex-direction:column;max-width:85%}.assistant-message--user{align-self:flex-end;align-items:flex-end}.assistant-message--assistant{align-self:flex-start;align-items:flex-start}.assistant-message__role{font-size:var(--font-size-xs);color:var(--color-text-muted);margin-bottom:var(--spacing-xs)}.assistant-message__bubble{padding:var(--spacing-sm) var(--spacing-md);border-radius:var(--radius-md);white-space:pre-wrap;word-break:break-word;font-size:var(--font-size-sm);line-height:1.5}.assistant-message--user .assistant-message__bubble{background:var(--color-primary);color:#fff}.assistant-message--assistant .assistant-message__bubble{background:var(--color-bg-tertiary);color:var(--color-text-primary)}.assistant-tools{margin-top:var(--spacing-sm);width:100%}.assistant-tools__summary{cursor:pointer;font-size:var(--font-size-xs);color:var(--color-text-secondary);list-style:none}.assistant-tools__summary::-webkit-details-marker{display:none}.assistant-tools__summary:before{content:"▸";display:inline-block;margin-right:var(--spacing-xs)}.assistant-tools[open] .assistant-tools__summary:before{content:"▾"}.assistant-tool{margin-top:var(--spacing-sm);padding:var(--spacing-sm);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-bg-secondary);font-size:var(--font-size-xs)}.assistant-tool--error{border-color:var(--color-error)}.assistant-tool__name{font-family:var(--font-mono);color:var(--color-text-primary);font-weight:600}.assistant-tool__badge{margin-left:var(--spacing-sm);padding:1px 8px;border-radius:var(--radius-xl);font-size:var(--font-size-xs);font-weight:700;background:var(--color-error-bg);color:var(--color-error)}.assistant-tool__field{margin-top:var(--spacing-xs);color:var(--color-text-secondary)}.assistant-tool__field pre{margin:2px 0 0;padding:var(--spacing-xs) var(--spacing-sm);background:var(--color-bg);border-radius:var(--radius-sm);overflow-x:auto;font-family:var(--font-mono);color:var(--color-text-primary);white-space:pre-wrap;word-break:break-word}.assistant-notice{margin-top:var(--spacing-sm);font-size:var(--font-size-xs);color:var(--color-warning)}.assistant-error{margin-top:var(--spacing-sm);padding:var(--spacing-sm) var(--spacing-md);border-radius:var(--radius-md);background:var(--color-error-bg);color:var(--color-error);font-size:var(--font-size-sm)}.assistant-composer{display:flex;gap:var(--spacing-sm);margin-top:var(--spacing-md)}.assistant-composer textarea{flex:1;resize:none;min-height:48px;max-height:160px;padding:var(--spacing-sm) var(--spacing-md);border-radius:var(--radius-md);border:1px solid var(--color-border);background:var(--color-bg);color:var(--color-text-primary);font-size:var(--font-size-sm);font-family:var(--font-sans);box-sizing:border-box}.assistant-composer button{align-self:flex-end;padding:var(--spacing-sm) var(--spacing-lg);border:none;border-radius:var(--radius-md);background:var(--color-primary);color:#fff;font-weight:700;font-size:var(--font-size-sm);cursor:pointer}.assistant-composer button:disabled{opacity:.5;cursor:not-allowed}.assistant-clear{margin-top:var(--spacing-sm);align-self:flex-end;background:transparent;border:none;color:var(--color-text-muted);font-size:var(--font-size-xs);cursor:pointer}.assistant-clear:hover{color:var(--color-text-secondary)}.app-shell{display:flex;flex-direction:column;height:100vh;width:100%}.app-body{display:flex;flex:1;overflow:hidden}.app-main{flex:1;display:flex;flex-direction:column;overflow:auto}:root{--color-bg-primary: #0a0e27;--color-bg-secondary: #111834;--color-bg-tertiary: #1a1f3a;--color-surface: #16192e;--color-border: #2d3254;--color-bg: var(--color-bg-primary);--color-bg-alt: var(--color-bg-secondary);--color-text-primary: #f1f5f9;--color-text-secondary: #94a3b8;--color-text-muted: #64748b;--color-text-tertiary: var(--color-text-muted);--color-error-bg: color-mix(in srgb, var(--color-error) 18%, transparent);--color-warning-bg: color-mix(in srgb, var(--color-warning) 18%, transparent);--color-success-bg: color-mix(in srgb, var(--color-success) 18%, transparent);--color-info-bg: color-mix(in srgb, var(--color-info) 18%, transparent);--color-primary: #3b82f6;--color-primary-hover: #2563eb;--color-primary-dark: #1d4ed8;--color-accent: #fbbf24;--color-accent-hover: #f59e0b;--color-success: #10b981;--color-warning: #f59e0b;--color-error: #ef4444;--color-info: #06b6d4;--color-state-queued: #64748b;--color-state-requirements: #a78bfa;--color-state-components: #818cf8;--color-state-schematic: #60a5fa;--color-state-layout: #34d399;--color-state-drc: #fbbf24;--color-state-validation: #fb923c;--color-state-export: #4ade80;--color-state-manufacturer: #2dd4bf;--color-state-done: #22c55e;--color-state-failed: #ef4444;--spacing-xs: .25rem;--spacing-sm: .5rem;--spacing-md: 1rem;--spacing-lg: 1.5rem;--spacing-xl: 2rem;--spacing-2xl: 3rem;--font-size-xs: .75rem;--font-size-sm: .875rem;--font-size-base: 1rem;--font-size-lg: 1.125rem;--font-size-xl: 1.25rem;--font-size-2xl: 1.5rem;--font-size-3xl: 1.875rem;--font-size-4xl: 2.25rem;--font-mono: "JetBrains Mono", "Courier New", monospace;--font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", sans-serif;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .05);--shadow-md: 0 4px 6px rgba(0, 0, 0, .1);--shadow-lg: 0 10px 15px rgba(0, 0, 0, .15);--shadow-xl: 0 20px 25px rgba(0, 0, 0, .2);--transition-fast: .15s cubic-bezier(.4, 0, .2, 1);--transition-base: .25s cubic-bezier(.4, 0, .2, 1);--transition-slow: .35s cubic-bezier(.4, 0, .2, 1);--radius-sm: .375rem;--radius-md: .5rem;--radius-lg: .75rem;--radius-xl: 1rem;--z-base: 0;--z-dropdown: 1000;--z-modal: 1100;--z-tooltip: 1200}[data-theme=light]{--color-bg-primary: #ffffff;--color-bg-secondary: #f8f9fa;--color-bg-tertiary: #f3f4f6;--color-surface: #ffffff;--color-border: #e5e7eb;--color-text-primary: #1f2937;--color-text-secondary: #6b7280;--color-text-muted: #9ca3af;--color-text-tertiary: var(--color-text-muted);--color-primary: #2563eb;--color-primary-hover: #1d4ed8;--color-primary-dark: #1e40af;--color-accent: #d97706;--color-accent-hover: #b45309;--color-success: #059669;--color-warning: #d97706;--color-error: #dc2626;--color-info: #0891b2}*{transition:background-color var(--transition-fast),color var(--transition-fast),border-color var(--transition-fast)}.theme-transition *{transition:none!important}*{margin:0;padding:0;box-sizing:border-box}html,body,#root{width:100%;min-height:100%}body{font-family:var(--font-sans);font-size:var(--font-size-base);line-height:1.6;color:var(--color-text-primary);background-color:var(--color-bg-primary)}h1,h2,h3,h4,h5,h6{font-weight:600;line-height:1.2;margin-bottom:var(--spacing-md);color:var(--color-text-primary)}h1{font-size:var(--font-size-3xl);letter-spacing:-.02em}h2{font-size:var(--font-size-2xl);letter-spacing:-.01em}h3{font-size:var(--font-size-xl)}h4{font-size:var(--font-size-lg)}p{margin-bottom:var(--spacing-md);color:var(--color-text-secondary)}p:last-child{margin-bottom:0}a{color:var(--color-primary);text-decoration:none;transition:color var(--transition-fast)}a:hover{color:var(--color-primary-hover);text-decoration:underline}button{font-family:inherit;font-size:inherit;cursor:pointer;border:none;background:none;padding:0}input,textarea,select{font-family:var(--font-sans);font-size:var(--font-size-base);color:var(--color-text-primary);background-color:var(--color-surface);border:1px solid var(--color-border);padding:var(--spacing-sm) var(--spacing-md);border-radius:var(--radius-md);transition:border-color var(--transition-fast),box-shadow var(--transition-fast)}input:focus,textarea:focus,select:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px #3b82f61a}input::placeholder{color:var(--color-text-muted)}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--color-text-muted)}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px;border-radius:var(--radius-sm)}:focus:not(:focus-visible){outline:none}.skip-link{position:absolute;left:var(--spacing-md);top:-100px;z-index:1000;padding:var(--spacing-sm) var(--spacing-md);background:var(--color-primary);color:#fff;border-radius:var(--radius-md);text-decoration:none;transition:top var(--transition-fast)}.skip-link:focus{top:var(--spacing-md)}.skip-link:hover{color:#fff;text-decoration:none}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}
