@import"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;600&display=swap";:root{font-family:Inter,-apple-system,BlinkMacSystemFont,system-ui,sans-serif;line-height:1.6;font-weight:400;color-scheme:light;color:#1f2933;background-color:#f6f7f9;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh}a{font-weight:500;color:#2563eb;text-decoration:none}a:hover{color:#1d4ed8;text-decoration:underline}h1,h2,h3,h4,h5,h6{margin:0;line-height:1.3}h1{font-size:1.75rem}h2{font-size:1.5rem}h3{font-size:1.25rem}h4{font-size:1rem}p{margin:0 0 1rem}p:last-child{margin-bottom:0}ul,ol{margin:0 0 1rem;padding-left:1.5rem}li{margin-bottom:.25rem}code{font-family:JetBrains Mono,Fira Code,SF Mono,monospace;font-size:.875em;background:#1f293314;padding:.125rem .375rem;border-radius:3px}pre{margin:0}pre code{background:none;padding:0}button{border-radius:6px;border:1px solid #d4d9e2;padding:.5rem 1rem;font-size:.875rem;font-weight:500;font-family:inherit;background-color:#f0f2f5;color:#1f2933;cursor:pointer;transition:all .15s ease}button:hover{border-color:#2563eb;background-color:#e7ebf0}button:focus,button:focus-visible{outline:2px solid #2563eb;outline-offset:2px}button:disabled{opacity:.5;cursor:not-allowed}table{border-collapse:collapse;width:100%}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:#f0f2f5}::-webkit-scrollbar-thumb{background:#cbd2dc;border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#b5bcc7}::selection{background:#2563eb33}:focus-visible{outline:2px solid #2563eb;outline-offset:2px}:root{--color-bg-primary: #f6f7f9;--color-bg-secondary: #ffffff;--color-bg-tertiary: #f0f2f5;--color-bg-hover: #eef2f6;--color-text-primary: #1f2933;--color-text-secondary: #4b5563;--color-text-muted: #8a93a3;--color-accent-green: #1f7a3e;--color-accent-amber: #b45309;--color-accent-blue: #2563eb;--color-accent-red: #b91c1c;--color-accent-purple: #7c3aed;--color-accent-cyan: #0891b2;--color-border: #e2e6ee;--color-border-focus: #2563eb;--font-mono: "JetBrains Mono", "Fira Code", "SF Mono", "Consolas", monospace;--font-sans: "Inter", -apple-system, BlinkMacSystemFont, sans-serif;--spacing-xs: .25rem;--spacing-sm: .5rem;--spacing-md: 1rem;--spacing-lg: 1.5rem;--spacing-xl: 2rem;--radius-sm: 4px;--radius-md: 6px;--radius-lg: 8px}#root{max-width:1400px;margin:0 auto;padding:var(--spacing-lg);text-align:left;min-height:100vh;display:flex;flex-direction:column}.dashboard{display:flex;flex-direction:column;gap:var(--spacing-lg);flex:1}.dashboard-header{display:flex;justify-content:space-between;align-items:flex-start;border-bottom:1px solid var(--color-border);padding-bottom:var(--spacing-lg)}.dashboard-header h1{font-family:var(--font-sans);font-size:1.75rem;font-weight:600;color:var(--color-text-primary);margin:0;display:flex;align-items:center;gap:var(--spacing-sm)}.dashboard-header h1:before{content:"✓";color:var(--color-accent-blue);font-family:var(--font-mono)}.dashboard-subtitle{color:var(--color-text-secondary);font-size:.875rem;margin-top:var(--spacing-xs)}.dashboard-meta{text-align:right;font-family:var(--font-mono);font-size:.75rem;color:var(--color-text-muted)}.dashboard-meta span{display:block}.validation-banner{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg-secondary);padding:var(--spacing-md)}.validation-banner-title{font-family:var(--font-sans);font-size:.875rem;font-weight:600;color:var(--color-text-primary);margin-bottom:var(--spacing-xs)}.validation-banner-text{margin:0;font-size:.8125rem;color:var(--color-text-secondary)}.tabs{display:flex;gap:var(--spacing-xs);border-bottom:1px solid var(--color-border);padding-bottom:var(--spacing-xs)}.tab{padding:var(--spacing-sm) var(--spacing-md);background:transparent;border:none;border-radius:var(--radius-sm) var(--radius-sm) 0 0;color:var(--color-text-secondary);font-family:var(--font-sans);font-size:.875rem;font-weight:500;cursor:pointer;transition:all .15s ease;position:relative}.tab:hover{color:var(--color-text-primary);background:var(--color-bg-tertiary)}.tab.active{color:var(--color-accent-blue);background:var(--color-bg-tertiary)}.tab.active:after{content:"";position:absolute;bottom:-1px;left:0;right:0;height:2px;background:var(--color-accent-blue)}.panel{background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:var(--radius-md);overflow:hidden;box-shadow:0 1px 2px #0f172a0f}.panel-header{padding:var(--spacing-md);border-bottom:1px solid var(--color-border);display:flex;justify-content:space-between;align-items:center}.panel-title{font-family:var(--font-sans);font-size:1rem;font-weight:600;color:var(--color-text-primary);margin:0}.panel-body{padding:var(--spacing-md)}.rule-list{display:flex;flex-direction:column;gap:var(--spacing-sm)}.rule-card{background:var(--color-bg-tertiary);border:1px solid var(--color-border);border-radius:var(--radius-md);overflow:hidden;transition:border-color .15s ease}.rule-card:hover{border-color:var(--color-border-focus)}.rule-card-header{padding:var(--spacing-md);cursor:pointer;display:flex;justify-content:space-between;align-items:flex-start;gap:var(--spacing-md)}.rule-card-header:hover{background:var(--color-bg-hover)}.rule-card-main{flex:1}.rule-card-title{font-family:var(--font-sans);font-size:.9375rem;font-weight:500;color:var(--color-text-primary);margin:0 0 var(--spacing-xs) 0;display:flex;align-items:center;gap:var(--spacing-sm)}.rule-card-id{font-family:var(--font-mono);font-size:.75rem;color:var(--color-text-muted)}.rule-card-meta{display:flex;gap:var(--spacing-sm);flex-wrap:wrap;margin-top:var(--spacing-xs)}.rule-card-body{padding:var(--spacing-md);border-top:1px solid var(--color-border);background:var(--color-bg-primary)}.rule-card-expand{color:var(--color-text-muted);font-size:.75rem;transition:transform .2s ease}.rule-card-expand.expanded{transform:rotate(180deg)}.badge{display:inline-flex;align-items:center;padding:.125rem .5rem;font-family:var(--font-mono);font-size:.6875rem;font-weight:500;border-radius:var(--radius-sm);text-transform:uppercase;letter-spacing:.025em}.badge-type{background:#61afef26;color:var(--color-accent-blue);border:1px solid rgba(97,175,239,.3)}.badge-category{background:#98c37926;color:var(--color-accent-green);border:1px solid rgba(152,195,121,.3)}.badge-system{background:#c678dd26;color:var(--color-accent-purple);border:1px solid rgba(198,120,221,.3)}.badge-priority-high{background:#e06c7526;color:var(--color-accent-red);border:1px solid rgba(224,108,117,.3)}.badge-priority-medium{background:#e5c07b26;color:var(--color-accent-amber);border:1px solid rgba(229,192,123,.3)}.badge-priority-low{background:#56b6c226;color:var(--color-accent-cyan);border:1px solid rgba(86,182,194,.3)}.rule-section{margin-bottom:var(--spacing-md)}.rule-section:last-child{margin-bottom:0}.rule-section-title{font-family:var(--font-mono);font-size:.6875rem;font-weight:600;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:var(--spacing-xs)}.rule-expression{background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:var(--spacing-sm) var(--spacing-md);font-family:var(--font-mono);font-size:.8125rem;color:var(--color-accent-amber);overflow-x:auto}.rule-message{color:var(--color-text-primary);font-size:.875rem;font-style:italic}.rule-suggestions{display:flex;flex-direction:column;gap:var(--spacing-xs)}.rule-suggestion{display:flex;align-items:flex-start;gap:var(--spacing-sm);font-size:.8125rem;color:var(--color-text-secondary)}.rule-source{font-family:var(--font-mono);font-size:.75rem;color:var(--color-text-muted)}.rule-source a{color:var(--color-accent-blue);text-decoration:none}.rule-source a:hover{text-decoration:underline}.table-container{overflow-x:auto}.data-table{width:100%;border-collapse:collapse;font-family:var(--font-mono);font-size:.8125rem}.data-table th,.data-table td{padding:var(--spacing-sm) var(--spacing-md);text-align:left;border-bottom:1px solid var(--color-border)}.data-table th{background:var(--color-bg-tertiary);color:var(--color-text-secondary);font-weight:600;text-transform:uppercase;font-size:.6875rem;letter-spacing:.05em;white-space:nowrap}.data-table td{color:var(--color-text-primary)}.data-table tr:hover td{background:var(--color-bg-hover)}.data-table td.number{text-align:right;color:var(--color-accent-amber)}.data-table td.boolean-true{color:var(--color-accent-green)}.data-table td.boolean-false{color:var(--color-text-muted)}.table-selector{display:flex;gap:var(--spacing-sm);flex-wrap:wrap;margin-bottom:var(--spacing-md)}.table-selector-btn{padding:var(--spacing-sm) var(--spacing-md);background:var(--color-bg-tertiary);border:1px solid var(--color-border);border-radius:var(--radius-sm);color:var(--color-text-secondary);font-family:var(--font-sans);font-size:.8125rem;cursor:pointer;transition:all .15s ease}.table-selector-btn:hover{border-color:var(--color-border-focus);color:var(--color-text-primary)}.table-selector-btn.active{border-color:var(--color-accent-blue);background:#2563eb14;color:var(--color-accent-blue)}.category-section{margin-bottom:var(--spacing-lg)}.category-header{display:flex;align-items:center;gap:var(--spacing-sm);margin-bottom:var(--spacing-md);cursor:pointer;padding:var(--spacing-sm);margin-left:calc(var(--spacing-sm) * -1);border-radius:var(--radius-sm)}.category-header:hover{background:var(--color-bg-tertiary)}.category-title{font-family:var(--font-sans);font-size:.875rem;font-weight:600;color:var(--color-text-primary);margin:0}.category-count{font-family:var(--font-mono);font-size:.6875rem;color:var(--color-text-muted);background:var(--color-bg-tertiary);padding:.125rem .375rem;border-radius:var(--radius-sm)}.category-toggle{color:var(--color-text-muted);font-size:.75rem;transition:transform .2s ease}.category-toggle.collapsed{transform:rotate(-90deg)}.loading{display:flex;align-items:center;justify-content:center;padding:var(--spacing-xl);color:var(--color-text-muted);font-family:var(--font-mono);font-size:.875rem}.loading:before{content:"⟳";margin-right:var(--spacing-sm);animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.empty-state{text-align:center;padding:var(--spacing-xl);color:var(--color-text-muted)}.stats-row{display:flex;gap:var(--spacing-md);margin-bottom:var(--spacing-lg)}.stat-card{flex:1;background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--spacing-md);box-shadow:0 1px 2px #0f172a0f}.stat-value{font-family:var(--font-mono);font-size:1.5rem;font-weight:600;color:var(--color-accent-green)}.stat-label{font-size:.75rem;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em;margin-top:var(--spacing-xs)}.two-column{display:grid;grid-template-columns:1fr 1fr;gap:var(--spacing-lg)}@media(max-width:900px){.two-column{grid-template-columns:1fr}}.mono{font-family:var(--font-mono)}.muted{color:var(--color-text-muted)}.text-green{color:var(--color-accent-green)}.text-amber{color:var(--color-accent-amber)}.mt-md{margin-top:var(--spacing-md)}.mb-md{margin-bottom:var(--spacing-md)}.config-playground{display:flex;flex-direction:column;gap:var(--spacing-md)}.playground-column-label{margin-bottom:var(--spacing-md)}.column-title{font-family:var(--font-sans);font-size:.875rem;font-weight:600;color:var(--color-text-primary);margin-bottom:var(--spacing-xs)}.column-helper{margin:0;font-size:.75rem;color:var(--color-text-secondary)}.example-loader{display:flex;align-items:center;gap:var(--spacing-md);padding:var(--spacing-sm);background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:var(--radius-md)}.example-label{font-family:var(--font-mono);font-size:.75rem;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em}.example-buttons{display:flex;gap:var(--spacing-xs);flex-wrap:wrap}.example-btn{padding:var(--spacing-xs) var(--spacing-sm);background:var(--color-bg-tertiary);border:1px solid var(--color-border);border-radius:var(--radius-sm);color:var(--color-text-secondary);font-family:var(--font-mono);font-size:.75rem;cursor:pointer;transition:all .15s ease}.example-btn:hover{border-color:var(--color-accent-blue);color:var(--color-text-primary)}.example-btn.reset{border-color:var(--color-accent-red);color:var(--color-accent-red)}.example-btn.reset:hover{background:#e06c751a}.playground-layout{display:grid;grid-template-columns:1fr 1fr;gap:var(--spacing-lg);min-height:600px}@media(max-width:1000px){.playground-layout{grid-template-columns:1fr}}.playground-left,.playground-right{background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--spacing-md);overflow-y:auto;max-height:70vh;box-shadow:0 1px 2px #0f172a0f}.compact-config-builder{display:flex;flex-direction:column;gap:var(--spacing-md)}.workflow-intro{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg-tertiary);padding:var(--spacing-md)}.workflow-title{font-family:var(--font-sans);font-size:.875rem;font-weight:600;color:var(--color-text-primary);margin-bottom:var(--spacing-xs)}.workflow-steps{margin:0;padding-left:1.25rem;font-size:.75rem;color:var(--color-text-secondary)}.workflow-steps li{margin-bottom:.25rem}.workflow-steps li:last-child{margin-bottom:0}.workflow-note{margin-top:var(--spacing-sm);font-size:.75rem;color:var(--color-text-muted)}.config-section{border-bottom:1px solid var(--color-border);padding-bottom:var(--spacing-md)}.config-section:last-child{border-bottom:none;padding-bottom:0}.section-header{display:flex;align-items:center;gap:var(--spacing-sm);margin-bottom:var(--spacing-sm)}.section-title{font-family:var(--font-mono);font-size:.6875rem;font-weight:600;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em}.section-help{margin:0 0 var(--spacing-sm) 0;font-size:.75rem;color:var(--color-text-secondary)}.section-meta{font-family:var(--font-mono);font-size:.75rem;color:var(--color-accent-amber)}.config-row{display:flex;align-items:center;gap:var(--spacing-sm);margin-bottom:var(--spacing-sm)}.config-label{font-family:var(--font-mono);font-size:.75rem;color:var(--color-text-secondary);width:60px;flex-shrink:0}.config-select{flex:1;padding:var(--spacing-xs) var(--spacing-sm);background:var(--color-bg-tertiary);border:1px solid var(--color-border);border-radius:var(--radius-sm);color:var(--color-text-primary);font-family:var(--font-mono);font-size:.75rem;cursor:pointer}.config-select:focus{outline:none;border-color:var(--color-border-focus)}.pressure-buttons{display:flex;align-items:center;gap:var(--spacing-xs)}.pressure-btn{padding:var(--spacing-xs) var(--spacing-sm);background:var(--color-bg-tertiary);border:1px solid var(--color-border);border-radius:var(--radius-sm);color:var(--color-text-secondary);font-family:var(--font-mono);font-size:.75rem;cursor:pointer;transition:all .15s ease;min-width:36px}.pressure-btn:hover{border-color:var(--color-border-focus)}.pressure-btn.active{background:var(--color-accent-blue);border-color:var(--color-accent-blue);color:var(--color-bg-primary)}.pressure-unit{font-family:var(--font-mono);font-size:.75rem;color:var(--color-text-muted)}.preset-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--spacing-xs);margin-bottom:var(--spacing-sm)}.preset-btn{display:flex;flex-direction:column;padding:var(--spacing-sm);background:var(--color-bg-tertiary);border:1px solid var(--color-border);border-radius:var(--radius-sm);cursor:pointer;transition:all .15s ease;text-align:left}.preset-btn:hover{border-color:var(--color-accent-blue);background:var(--color-bg-hover)}.preset-name{font-family:var(--font-sans);font-size:.75rem;color:var(--color-text-primary)}.preset-flow{font-family:var(--font-mono);font-size:.6875rem;color:var(--color-text-muted)}.component-add-section{margin-bottom:var(--spacing-sm)}.browse-catalog-btn{width:100%;padding:var(--spacing-sm) var(--spacing-md);background:var(--color-accent-blue);border:none;border-radius:var(--radius-sm);color:#fff;font-family:var(--font-sans);font-size:.8125rem;font-weight:500;cursor:pointer;transition:all .15s ease}.browse-catalog-btn:hover:not(:disabled){background:var(--color-accent-blue-hover, #2563eb)}.browse-catalog-btn:disabled{background:var(--color-bg-tertiary);color:var(--color-text-muted);cursor:not-allowed}.component-list{display:flex;flex-direction:column;gap:var(--spacing-xs)}.component-item{display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-xs) var(--spacing-sm);background:var(--color-bg-tertiary);border:1px solid var(--color-border);border-radius:var(--radius-sm)}.component-info{display:flex;flex-direction:column;flex:1;min-width:0;overflow:hidden}.component-name{font-family:var(--font-sans);font-size:.75rem;color:var(--color-text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.component-sku{font-family:var(--font-mono);font-size:.625rem;color:var(--color-text-muted)}.component-finish{font-family:var(--font-sans);font-size:.625rem;color:var(--color-accent-amber);font-weight:500}.component-pricing{display:flex;flex-direction:column;align-items:flex-end;margin-right:var(--spacing-sm)}.component-unit-price{font-family:var(--font-mono);font-size:.75rem;color:var(--color-text-secondary)}.component-controls{display:flex;align-items:center;gap:var(--spacing-xs)}.qty-btn{width:20px;height:20px;padding:0;background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:3px;color:var(--color-text-secondary);font-size:.875rem;cursor:pointer;display:flex;align-items:center;justify-content:center}.qty-btn:hover:not(:disabled){border-color:var(--color-border-focus);color:var(--color-text-primary)}.qty-btn:disabled{opacity:.5;cursor:not-allowed}.qty-value{font-family:var(--font-mono);font-size:.75rem;color:var(--color-text-primary);min-width:16px;text-align:center}.component-flow{font-family:var(--font-mono);font-size:.6875rem;color:var(--color-accent-amber);min-width:32px;text-align:right}.remove-btn{width:20px;height:20px;padding:0;background:transparent;border:none;color:var(--color-accent-red);font-size:1rem;cursor:pointer;opacity:.6}.remove-btn:hover{opacity:1}.clear-btn{padding:var(--spacing-xs) var(--spacing-sm);background:transparent;border:1px solid var(--color-accent-red);border-radius:var(--radius-sm);color:var(--color-accent-red);font-family:var(--font-mono);font-size:.625rem;cursor:pointer;text-transform:uppercase}.clear-btn:hover{background:#e06c751a}.controls-subsection{margin-top:var(--spacing-sm)}.add-control-btn{padding:var(--spacing-xs) var(--spacing-sm);background:var(--color-bg-tertiary);border:1px solid var(--color-accent-blue);border-radius:var(--radius-sm);color:var(--color-accent-blue);font-family:var(--font-mono);font-size:.6875rem;cursor:pointer}.add-control-btn:hover:not(:disabled){background:#2563eb14}.add-control-btn:disabled{opacity:.5;cursor:not-allowed}.assignment-matrix{margin-top:var(--spacing-sm);overflow-x:auto}.assignment-matrix.compact{font-size:.75rem}.matrix-header{display:flex;align-items:center;gap:var(--spacing-sm);padding-bottom:var(--spacing-xs);border-bottom:1px solid var(--color-border);margin-bottom:var(--spacing-xs)}.matrix-label{font-family:var(--font-mono);font-size:.6875rem;color:var(--color-text-muted);min-width:80px}.matrix-col-header{font-family:var(--font-mono);font-size:.6875rem;color:var(--color-accent-cyan);min-width:36px;text-align:center;display:flex;align-items:center;gap:2px}.remove-col-btn{background:transparent;border:none;color:var(--color-accent-red);font-size:.75rem;cursor:pointer;padding:0;line-height:1;opacity:.5}.remove-col-btn:hover{opacity:1}.matrix-row{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-xs) 0}.matrix-row-label{font-family:var(--font-mono);font-size:.6875rem;color:var(--color-text-secondary);min-width:80px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.matrix-cell{min-width:36px;display:flex;justify-content:center}.matrix-cell input[type=checkbox]{cursor:pointer;accent-color:var(--color-accent-green)}.rule-firing-panel{display:flex;flex-direction:column;gap:var(--spacing-md)}.rule-firing-panel .status-banner{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-sm) var(--spacing-md);border-radius:var(--radius-sm);font-family:var(--font-mono)}.status-banner.status-ok{background:#98c37926;border:1px solid rgba(152,195,121,.3)}.status-banner.status-warn{background:#e5c07b26;border:1px solid rgba(229,192,123,.3)}.status-banner.status-fail{background:#e06c7526;border:1px solid rgba(224,108,117,.3)}.status-icon{font-size:1rem}.status-banner.status-ok .status-icon,.status-banner.status-ok .status-text{color:var(--color-accent-green)}.status-banner.status-warn .status-icon,.status-banner.status-warn .status-text{color:var(--color-accent-amber)}.status-banner.status-fail .status-icon,.status-banner.status-fail .status-text{color:var(--color-accent-red)}.status-label{font-family:var(--font-mono);font-size:.625rem;text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-muted)}.status-text{font-weight:600;font-size:.875rem}.status-meta{color:var(--color-text-muted);font-size:.75rem;margin-left:auto}.validation-hint{margin:0;font-size:.75rem;color:var(--color-text-secondary)}.flow-info{background:var(--color-bg-tertiary);border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:var(--spacing-sm)}.flow-stat{display:flex;justify-content:space-between;align-items:center}.flow-label{font-family:var(--font-mono);font-size:.6875rem;color:var(--color-text-muted);text-transform:uppercase}.flow-value{font-family:var(--font-mono);font-size:1rem;color:var(--color-accent-amber);font-weight:600}.flow-breakdown{margin-top:var(--spacing-sm)}.flow-breakdown summary{font-family:var(--font-mono);font-size:.6875rem;color:var(--color-accent-blue);cursor:pointer}.flow-breakdown ul{margin:var(--spacing-xs) 0 0 0;padding-left:var(--spacing-md);font-family:var(--font-mono);font-size:.6875rem;color:var(--color-text-secondary);list-style:none}.flow-breakdown li:before{content:"→";margin-right:var(--spacing-xs);color:var(--color-text-muted)}.rule-stats{display:flex;gap:var(--spacing-sm)}.rule-stats .stat{flex:1;text-align:center;padding:var(--spacing-sm);background:var(--color-bg-tertiary);border:1px solid var(--color-border);border-radius:var(--radius-sm)}.rule-stats .stat-value{font-family:var(--font-mono);font-size:1.25rem;font-weight:600}.rule-stats .stat-label{font-family:var(--font-mono);font-size:.625rem;color:var(--color-text-muted);text-transform:uppercase;margin-top:2px}.rule-stats .stat.pass .stat-value{color:var(--color-accent-green)}.rule-stats .stat.fail .stat-value{color:var(--color-accent-red)}.rule-stats .stat.na .stat-value{color:var(--color-text-muted)}.messages-summary{display:flex;flex-direction:column;gap:var(--spacing-xs)}.messages-summary .message{padding:var(--spacing-xs) var(--spacing-sm);border-radius:var(--radius-sm);font-family:var(--font-mono);font-size:.6875rem}.messages-summary .message.error{background:#e06c751a;border:1px solid rgba(224,108,117,.3);color:var(--color-accent-red)}.messages-summary .message.warning{background:#e5c07b1a;border:1px solid rgba(229,192,123,.3);color:var(--color-accent-amber)}.rules-list{display:flex;flex-direction:column;gap:var(--spacing-xs)}.rules-header{font-family:var(--font-mono);font-size:.6875rem;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:var(--spacing-xs)}.rules-hint{margin:0 0 var(--spacing-sm) 0;font-size:.75rem;color:var(--color-text-secondary)}.rule-item{background:var(--color-bg-tertiary);border:1px solid var(--color-border);border-radius:var(--radius-sm);cursor:pointer;transition:all .15s ease}.rule-item:hover{border-color:var(--color-border-focus)}.rule-item.status-pass{border-left:3px solid var(--color-accent-green)}.rule-item.status-fail{border-left:3px solid var(--color-accent-red)}.rule-item.status-na{border-left:3px solid var(--color-text-muted)}.rule-item.status-warn{border-left:3px solid var(--color-accent-amber)}.rule-item.status-pass{background:#1f7a3e0d}.rule-item.status-fail{background:#b91c1c0f}.rule-item.status-warn{background:#b453090f}.rule-item.status-na{background:#8a93a30a}.rule-item .rule-header{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-sm)}.rule-status-icon{font-size:.75rem}.rule-item.status-pass .rule-status-icon{color:var(--color-accent-green)}.rule-item.status-fail .rule-status-icon{color:var(--color-accent-red)}.rule-item.status-na .rule-status-icon{color:var(--color-text-muted)}.rule-item.status-warn .rule-status-icon{color:var(--color-accent-amber)}.rule-item .rule-name{flex:1;font-family:var(--font-sans);font-size:.75rem;color:var(--color-text-primary)}.rule-link{background:transparent;border:none;color:var(--color-accent-blue);font-size:.875rem;cursor:pointer;padding:0;opacity:.6}.rule-link:hover{opacity:1}.rule-details{padding:var(--spacing-sm);border-top:1px solid var(--color-border);background:var(--color-bg-primary)}.rule-details .rule-message{font-family:var(--font-mono);font-size:.6875rem;color:var(--color-text-secondary);margin-bottom:var(--spacing-sm)}.checks-list{display:flex;flex-direction:column;gap:var(--spacing-xs)}.check-item{display:flex;justify-content:space-between;align-items:flex-start;padding:var(--spacing-xs) var(--spacing-sm);background:var(--color-bg-secondary);border-radius:3px;font-family:var(--font-mono);font-size:.6875rem;gap:var(--spacing-sm)}.check-item.passed{color:var(--color-accent-green)}.check-item.failed{color:var(--color-accent-red)}.check-item.warning{color:var(--color-accent-amber)}.checks-explanation{font-family:var(--font-sans);font-size:.6875rem;color:var(--color-text-muted);padding:var(--spacing-xs) var(--spacing-sm);margin-bottom:var(--spacing-xs);background:var(--color-bg-tertiary);border-radius:3px;border-left:2px solid var(--color-accent-blue)}.check-desc{color:var(--color-text-secondary);flex:1}.check-warning-msg{display:block;font-size:.625rem;color:var(--color-accent-amber);margin-top:2px}.check-values{font-weight:500}.rule-details .suggestions{margin-top:var(--spacing-sm);padding-top:var(--spacing-sm);border-top:1px solid var(--color-border)}.suggestions-label{font-family:var(--font-mono);font-size:.6875rem;color:var(--color-text-muted);text-transform:uppercase;display:block;margin-bottom:var(--spacing-xs)}.rule-details .suggestion{font-family:var(--font-sans);font-size:.6875rem;color:var(--color-text-secondary);padding:var(--spacing-xs) 0}.rule-details .suggestion.priority-high{color:var(--color-accent-red)}.rule-details .suggestion.priority-medium{color:var(--color-accent-amber)}.rule-details .suggestion.priority-low{color:var(--color-accent-cyan)}.related-checks{margin-top:var(--spacing-sm);padding-top:var(--spacing-sm);border-top:1px dashed var(--color-border)}.related-checks-title{font-family:var(--font-mono);font-size:.6875rem;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:var(--spacing-xs)}.related-checks-body{display:flex;flex-direction:column;gap:var(--spacing-xs);font-size:.75rem;color:var(--color-text-secondary)}.related-checks-line{display:flex;gap:var(--spacing-xs);flex-wrap:wrap}.related-checks-label{font-family:var(--font-mono);color:var(--color-text-muted)}.combinations-summary{border-top:1px solid var(--color-border);padding-top:var(--spacing-md)}.combinations-header{display:flex;justify-content:space-between;align-items:center;font-family:var(--font-mono);font-size:.6875rem;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:var(--spacing-sm)}.combinations-count{color:var(--color-text-secondary)}.combinations-list{display:flex;flex-direction:column;gap:var(--spacing-xs)}.combo-item{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-xs) var(--spacing-sm);background:var(--color-bg-tertiary);border-radius:var(--radius-sm);font-family:var(--font-mono);font-size:.6875rem}.combo-item.passed .combo-icon{color:var(--color-accent-green)}.combo-item.failed .combo-icon{color:var(--color-accent-red)}.combo-desc{flex:1;color:var(--color-text-secondary)}.combo-flow{color:var(--color-accent-amber)}.assembly-summary{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg-secondary);padding:var(--spacing-md);box-shadow:0 1px 2px #0f172a0a}.assembly-summary-title{font-family:var(--font-sans);font-size:.875rem;font-weight:600;color:var(--color-text-primary);margin-bottom:var(--spacing-sm)}.assembly-summary-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--spacing-sm);margin-bottom:var(--spacing-md)}@media(max-width:900px){.assembly-summary-grid{grid-template-columns:1fr}}.summary-label{font-family:var(--font-mono);font-size:.6875rem;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:2px}.summary-value{font-size:.8125rem;color:var(--color-text-primary)}.summary-section{margin-top:var(--spacing-sm)}.summary-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:var(--spacing-xs)}.summary-list li{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--spacing-sm);font-size:.75rem;color:var(--color-text-secondary)}.summary-component-info{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0}.summary-component-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.summary-component-finish{font-size:.625rem;color:var(--color-accent-purple);font-weight:500}.summary-meta{font-family:var(--font-mono);color:var(--color-text-muted);flex-shrink:0}.summary-stack{display:flex;flex-direction:column;gap:var(--spacing-xs);font-size:.75rem;color:var(--color-text-secondary)}.summary-line{display:flex;gap:var(--spacing-xs)}.summary-muted{font-size:.75rem;color:var(--color-text-muted)}.finish-resolver{border:1px solid var(--color-accent-amber);border-radius:var(--radius-md);background:#fffbeb;padding:var(--spacing-md);margin-bottom:var(--spacing-md)}.finish-resolver-header{display:flex;align-items:center;gap:var(--spacing-sm);margin-bottom:var(--spacing-sm)}.finish-resolver-icon{font-size:1.25rem}.finish-resolver-title{font-family:var(--font-sans);font-size:.875rem;font-weight:600;color:var(--color-accent-amber)}.finish-resolver-desc{font-size:.75rem;color:var(--color-text-secondary);margin:0 0 var(--spacing-md) 0;line-height:1.4}.finish-breakdown{background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:var(--spacing-sm);margin-bottom:var(--spacing-md)}.finish-breakdown-title{font-family:var(--font-sans);font-size:.75rem;font-weight:600;color:var(--color-text-muted);margin-bottom:var(--spacing-sm);text-transform:uppercase;letter-spacing:.05em}.finish-group{margin-bottom:var(--spacing-sm)}.finish-group:last-child{margin-bottom:0}.finish-group-header{display:flex;align-items:center;gap:var(--spacing-sm);font-size:.75rem;font-weight:500;color:var(--color-text-primary)}.finish-swatch{width:12px;height:12px;border-radius:2px;border:1px solid rgba(0,0,0,.2)}.finish-name{flex:1}.finish-count{font-family:var(--font-mono);font-size:.625rem;color:var(--color-text-muted)}.finish-components{list-style:none;padding:0;margin:var(--spacing-xs) 0 0 calc(12px + var(--spacing-sm));font-size:.625rem;color:var(--color-text-muted)}.finish-components li{padding:2px 0}.finish-options{margin-bottom:var(--spacing-sm)}.finish-options-title{font-family:var(--font-sans);font-size:.75rem;font-weight:600;color:var(--color-text-muted);margin-bottom:var(--spacing-sm);text-transform:uppercase;letter-spacing:.05em}.finish-options-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:var(--spacing-sm)}.finish-option-btn{display:flex;flex-direction:column;align-items:center;gap:var(--spacing-xs);padding:var(--spacing-sm);background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:var(--radius-sm);cursor:pointer;transition:all .15s ease}.finish-option-btn:hover{border-color:var(--color-accent-blue);background:var(--color-bg-hover)}.finish-option-swatch{width:24px;height:24px;border-radius:var(--radius-sm);border:1px solid rgba(0,0,0,.2)}.finish-option-name{font-family:var(--font-sans);font-size:.625rem;font-weight:500;color:var(--color-text-primary);text-align:center}.finish-option-change{font-family:var(--font-mono);font-size:.5625rem}.finish-option-change .no-change{color:var(--color-accent-green)}.finish-option-change .will-change{color:var(--color-accent-amber)}.finish-resolver-note{font-size:.625rem;color:var(--color-text-muted);margin:0;line-height:1.4;font-style:italic}.product-modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;z-index:9998;animation:fadeIn .2s ease-out}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.product-modal-container{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);background:var(--color-bg-primary);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg),0 25px 50px -12px #00000040;z-index:9999;display:flex;flex-direction:column;animation:slideInModal .3s ease-out;max-height:85vh;width:90vw;max-width:900px;overflow:hidden}@keyframes slideInModal{0%{opacity:0;transform:translate(-50%,-45%)}to{opacity:1;transform:translate(-50%,-50%)}}.product-modal-header{background:var(--color-bg-primary);color:var(--color-text-primary);padding:var(--spacing-md) var(--spacing-lg);display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--color-border)}.product-modal-header h2{margin:0;font-family:var(--font-sans);font-size:1.125rem;font-weight:600;color:var(--color-text-primary)}.product-modal-back{background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:var(--radius-sm);color:var(--color-accent-primary);font-family:var(--font-sans);font-size:.8125rem;font-weight:500;cursor:pointer;padding:var(--spacing-xs) var(--spacing-md);margin-right:var(--spacing-sm);transition:all .15s ease}.product-modal-back:hover{background:#e7f5ff;border-color:var(--color-accent-primary)}.product-modal-close{background:transparent;border:none;color:var(--color-text-muted);font-size:1.25rem;cursor:pointer;padding:var(--spacing-xs);width:32px;height:32px;border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center;transition:all .15s ease}.product-modal-close:hover{color:var(--color-accent-error);background:#fff5f5}.product-modal-search{padding:var(--spacing-md) var(--spacing-lg);border-bottom:1px solid var(--color-border);background:var(--color-bg-secondary)}.product-modal-search-input{width:100%;padding:var(--spacing-md);background:var(--color-bg-primary);border:1px solid var(--color-border);border-radius:var(--radius-md);color:var(--color-text-primary);font-family:var(--font-sans);font-size:.9375rem;box-sizing:border-box}.product-modal-search-input:focus{outline:none;border-color:var(--color-accent-primary);box-shadow:0 0 0 3px #228be61a}.product-modal-search-input::placeholder{color:var(--color-text-muted)}.product-modal-legend{margin-top:var(--spacing-md);display:flex;gap:var(--spacing-lg);align-items:center}.product-modal-legend-item{display:flex;align-items:center;gap:var(--spacing-sm);font-family:var(--font-sans);font-size:.8125rem;color:var(--color-text-secondary)}.product-modal-legend-color{width:16px;height:16px;border:1px solid var(--color-border);border-radius:var(--radius-sm)}.product-modal-legend-color.missing{background:#fff9db;border-color:#ffec99}.product-modal-content{flex:1;overflow-y:auto;padding:var(--spacing-lg);background:var(--color-bg-secondary)}.product-modal-no-results{padding:var(--spacing-xl);text-align:center;color:var(--color-text-muted);font-family:var(--font-sans);font-size:1rem}.product-category-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--spacing-md)}.product-category-card{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--spacing-xl) var(--spacing-lg);background:var(--color-bg-primary);border:1px solid var(--color-border);border-radius:var(--radius-md);cursor:pointer;transition:all .15s ease;text-align:center;box-shadow:var(--shadow-sm)}.product-category-card:hover{border-color:var(--color-accent-primary);box-shadow:var(--shadow-md);transform:translateY(-2px)}.product-category-label{font-family:var(--font-sans);font-size:1.125rem;font-weight:600;color:var(--color-text-primary);margin-bottom:var(--spacing-sm)}.product-category-count{font-family:var(--font-sans);font-size:.875rem;color:var(--color-text-muted)}.product-subcategory-group{margin-bottom:var(--spacing-lg)}.product-subcategory-header{font-family:var(--font-sans);font-size:.8125rem;font-weight:600;color:var(--color-accent-primary);text-transform:uppercase;letter-spacing:.03em;padding:var(--spacing-sm) var(--spacing-md);background:#e7f5ff;border-left:4px solid var(--color-accent-primary);border-radius:0;margin-bottom:var(--spacing-md)}.product-list{display:flex;flex-direction:column;gap:var(--spacing-sm)}.product-item{display:flex;align-items:center;gap:var(--spacing-md);padding:var(--spacing-md);background:var(--color-bg-primary);border:1px solid var(--color-border);border-radius:var(--radius-md);cursor:pointer;transition:all .15s ease}.product-item:hover{border-color:var(--color-accent-primary);box-shadow:var(--shadow-md)}.product-item.missing-gpm{background:#fffbeb;border-color:#fcd34d}.product-item.missing-gpm:hover{background:#fef3c7;border-color:var(--color-accent-warning)}.product-thumbnail{flex-shrink:0;width:60px;height:60px;display:flex;align-items:center;justify-content:center;background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:var(--radius-md);overflow:hidden}.product-thumbnail img{max-width:100%;max-height:100%;object-fit:contain}.product-no-image{font-family:var(--font-sans);font-size:.6875rem;color:var(--color-text-muted)}.product-modal-content .product-info{flex:1;display:flex;flex-direction:column;gap:4px;min-width:0}.product-collection{font-family:var(--font-sans);font-size:.6875rem;font-weight:600;color:var(--color-accent-primary);text-transform:uppercase;letter-spacing:.03em}.product-model{font-family:var(--font-sans);font-size:.9375rem;font-weight:500;color:var(--color-text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.product-modal-content .product-sku{font-family:var(--font-mono);font-size:.75rem;color:var(--color-text-muted)}.product-modal-content .product-finish{font-family:var(--font-sans);font-size:.625rem;color:var(--color-accent-purple);font-weight:500;padding:2px 6px;background:#7c3aed1a;border-radius:3px;width:fit-content}.product-flow{font-family:var(--font-sans);font-size:1rem;font-weight:700;color:var(--color-accent-primary);flex-shrink:0;min-width:70px;text-align:right;background:#e7f5ff;padding:var(--spacing-xs) var(--spacing-sm);border-radius:var(--radius-sm)}@media(max-width:600px){.product-modal-container{width:95vw;max-height:90vh}.product-category-grid{grid-template-columns:1fr}.product-item{flex-wrap:wrap}.product-flow{width:100%;text-align:left;margin-top:var(--spacing-xs)}}.filter-panel{margin-bottom:var(--spacing-md)}.filter-bar{display:flex;flex-direction:column;gap:var(--spacing-md);padding:var(--spacing-md)}.filter-row{display:flex;flex-wrap:wrap;gap:var(--spacing-md);align-items:flex-end}.filter-group{display:flex;flex-direction:column;gap:var(--spacing-xs)}.filter-group-search{flex:1;min-width:200px}.filter-label{font-family:var(--font-sans);font-size:.6875rem;font-weight:600;color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.05em}.filter-input{padding:var(--spacing-sm) var(--spacing-md);background:var(--color-bg-primary);border:1px solid var(--color-border);border-radius:var(--radius-sm);font-family:var(--font-sans);font-size:.875rem;color:var(--color-text-primary);width:100%;transition:border-color .15s ease}.filter-input:focus{outline:none;border-color:var(--color-border-focus)}.filter-input::placeholder{color:var(--color-text-muted)}.filter-select{padding:var(--spacing-sm) var(--spacing-md);background:var(--color-bg-primary);border:1px solid var(--color-border);border-radius:var(--radius-sm);font-family:var(--font-sans);font-size:.8125rem;color:var(--color-text-primary);cursor:pointer;min-width:140px;transition:border-color .15s ease}.filter-select:focus{outline:none;border-color:var(--color-border-focus)}.filter-clear-btn{padding:var(--spacing-sm) var(--spacing-md);background:var(--color-bg-tertiary);border:1px solid var(--color-border);border-radius:var(--radius-sm);font-family:var(--font-sans);font-size:.8125rem;color:var(--color-text-secondary);cursor:pointer;transition:all .15s ease;white-space:nowrap}.filter-clear-btn:hover{background:var(--color-bg-hover);border-color:var(--color-border-focus);color:var(--color-text-primary)}.filter-toggles{gap:var(--spacing-sm)}.filter-toggle{padding:var(--spacing-xs) var(--spacing-sm);background:var(--color-bg-tertiary);border:1px solid var(--color-border);border-radius:var(--radius-sm);font-family:var(--font-sans);font-size:.75rem;color:var(--color-text-muted);cursor:pointer;transition:all .15s ease}.filter-toggle:hover{border-color:var(--color-border-focus);color:var(--color-text-secondary)}.filter-toggle.active{background:#2563eb14;border-color:var(--color-accent-blue);color:var(--color-accent-blue)}.results-summary{display:flex;justify-content:space-between;align-items:center;padding:var(--spacing-sm) 0;margin-bottom:var(--spacing-sm)}.results-count{font-family:var(--font-sans);font-size:.8125rem;color:var(--color-text-secondary)}.results-page{font-family:var(--font-mono);font-size:.75rem;color:var(--color-text-muted)}.pagination{display:flex;justify-content:center;align-items:center;gap:var(--spacing-md);padding:var(--spacing-md) 0;border-top:1px solid var(--color-border);margin-top:var(--spacing-md)}.pagination-btn{padding:var(--spacing-sm) var(--spacing-md);background:var(--color-bg-tertiary);border:1px solid var(--color-border);border-radius:var(--radius-sm);font-family:var(--font-sans);font-size:.8125rem;color:var(--color-text-secondary);cursor:pointer;transition:all .15s ease}.pagination-btn:hover:not(:disabled){background:var(--color-bg-hover);border-color:var(--color-border-focus);color:var(--color-text-primary)}.pagination-btn:disabled{opacity:.5;cursor:not-allowed}.pagination-info{font-family:var(--font-mono);font-size:.8125rem;color:var(--color-text-secondary)}.data-table td.mono{font-family:var(--font-mono);font-size:.75rem}
