.defect-map-view{flex-direction:column;gap:20px;padding:24px;display:flex}.defect-map-view h2{margin:0;font-size:1.3rem;font-weight:600}.defect-map-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;display:flex}.defect-map-header select{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg-tertiary);color:var(--text-primary);cursor:pointer;transition:border-color var(--transition-fast);outline:none;padding:8px 12px;font-size:.85rem}.defect-map-header select:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-light)}.defect-map-tabs{border-bottom:2px solid var(--border);gap:4px;margin-bottom:4px;display:flex}.defect-map-tab{cursor:pointer;color:var(--text-muted);background:0 0;border:none;border-bottom:2px solid #0000;margin-bottom:-2px;padding:8px 16px;font-size:.85rem;transition:color .15s,border-color .15s}.defect-map-tab:hover{color:var(--text)}.defect-map-tab.active{color:var(--primary);border-bottom-color:var(--primary);font-weight:600}.defect-map-canvas-wrapper{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);justify-content:center;align-items:center;min-height:300px;display:flex;position:relative;overflow:hidden}.defect-map-canvas{cursor:crosshair;max-width:100%;display:block}.defect-map-canvas.readonly{cursor:default}.defect-map-no-drawing{text-align:center;width:100%;min-height:400px;color:var(--text-muted);background:var(--bg-secondary,#f5f5f5);flex-direction:column;justify-content:center;align-items:center;gap:12px;padding:32px;display:flex}.defect-map-no-drawing h4{color:var(--text-primary);margin:0;font-size:1rem;font-weight:600}.defect-map-no-drawing p{max-width:400px;margin:0;font-size:.85rem;line-height:1.5}.defect-map-pin{cursor:pointer;z-index:2;border:2px solid #fff;border-radius:50%;width:16px;height:16px;transition:transform .1s;position:absolute;transform:translate(-50%,-50%);box-shadow:0 1px 4px #0000004d}.defect-map-pin:hover{z-index:3;transform:translate(-50%,-50%)scale(1.3)}.defect-map-pin.selected{box-shadow:0 0 0 3px var(--primary), 0 1px 4px #0000004d}.defect-map-pin-popover{z-index:10;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-lg,0 4px 12px #00000026);min-width:200px;max-width:300px;padding:12px;font-size:.82rem;position:absolute}.defect-map-pin-popover h4{margin:0 0 6px;font-size:.85rem}.defect-map-pin-popover input,.defect-map-pin-popover textarea{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-tertiary);width:100%;color:var(--text-primary);transition:border-color var(--transition-fast);outline:none;padding:6px 10px;font-size:.82rem}.defect-map-pin-popover input:focus,.defect-map-pin-popover textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-light)}.defect-map-pin-popover textarea{resize:vertical;min-height:48px}.defect-map-pin-popover .pin-actions{gap:6px;margin-top:8px;display:flex}.defect-map-toolbar{background:var(--surface-elevated,var(--bg-secondary,#f8f8f8));border:1px solid var(--border);border-radius:var(--radius-md);flex-wrap:wrap;align-items:center;gap:8px;padding:8px 12px;display:flex}.defect-map-toolbar label{color:var(--text-muted);font-size:.8rem;font-weight:500}.defect-map-toolbar select{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-tertiary);color:var(--text-primary);padding:4px 8px;font-size:.82rem}.defect-map-toolbar .pin-count{color:var(--text-muted);margin-left:auto;font-size:.8rem}.defect-map-session-list{flex-direction:column;gap:8px;display:flex}.defect-map-session-card{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);cursor:pointer;align-items:center;gap:12px;padding:12px 16px;transition:border-color .15s,background .15s;display:flex}.defect-map-session-card:hover{border-color:var(--primary);background:var(--surface-hover,#00000003)}.defect-map-session-card.active{border-color:var(--primary);background:var(--primary-bg,#3b82f60f)}.defect-map-session-card .session-info{flex:1;min-width:0}.defect-map-session-card .session-info h4{margin:0 0 2px;font-size:.85rem;font-weight:600}.defect-map-session-card .session-meta{color:var(--text-muted);flex-wrap:wrap;gap:12px;font-size:.75rem;display:flex}.defect-map-session-card .session-defect-count{white-space:nowrap;font-size:.9rem;font-weight:600}.defect-map-heatmap{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);position:relative;overflow:hidden}.defect-map-heatmap-legend{border-top:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:12px;padding:8px 12px;font-size:.78rem;display:flex}.defect-map-heatmap-legend .legend-item{align-items:center;gap:4px;display:flex}.defect-map-heatmap-legend .legend-dot{border-radius:50%;width:10px;height:10px;display:inline-block}.defect-map-stats{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px;display:grid}.defect-map-stats .stat-card{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);padding:16px}.defect-map-stats .stat-card h4{color:var(--text-muted);text-transform:uppercase;letter-spacing:.03em;margin:0 0 12px;font-size:.85rem;font-weight:600}.defect-map-stats .stat-big{margin-bottom:4px;font-size:1.8rem;font-weight:700;line-height:1}.defect-map-stats .stat-label{color:var(--text-muted);font-size:.78rem}.defect-map-pareto{flex-direction:column;gap:6px;display:flex}.defect-map-pareto .pareto-row{align-items:center;gap:8px;font-size:.82rem;display:flex}.defect-map-pareto .pareto-bar-bg{background:var(--bg-secondary,#eee);border-radius:4px;flex:1;height:8px;overflow:hidden}.defect-map-pareto .pareto-bar{border-radius:4px;height:100%;transition:width .3s}.defect-map-pareto .pareto-label{white-space:nowrap;text-overflow:ellipsis;min-width:100px;overflow:hidden}.defect-map-pareto .pareto-count{text-align:right;min-width:40px;font-weight:600}.defect-map-trend{flex-direction:column;gap:4px;display:flex}.defect-map-filters{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.defect-map-filters label{color:var(--text-secondary);font-size:.8rem;font-weight:500}.defect-map-filters select,.defect-map-filters input{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg-tertiary);color:var(--text-primary);transition:border-color var(--transition-fast);outline:none;padding:6px 10px;font-size:.85rem}.defect-map-filters select:focus,.defect-map-filters input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-light)}.defect-category-manager{flex-direction:column;gap:12px;display:flex}.defect-category-item{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);align-items:center;gap:10px;padding:8px 12px;display:flex}.defect-category-item.inactive{opacity:.5}.defect-category-item input:not([type=color]),.defect-category-item select{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-tertiary);color:var(--text-primary);transition:border-color var(--transition-fast);outline:none;padding:6px 10px;font-size:.85rem}.defect-category-item input:not([type=color]):focus,.defect-category-item select:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-light)}.defect-category-item input[type=color]{border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;width:28px;height:28px;padding:1px}.defect-category-badge{color:#fff;border-radius:12px;align-items:center;gap:6px;padding:2px 10px;font-size:.78rem;font-weight:500;display:inline-flex}.defect-severity-critical{background:#dc2626}.defect-severity-major{background:#f97316}.defect-severity-minor{color:#333;background:#eab308}.defect-severity-cosmetic{background:#6b7280}.defect-map-status{text-transform:uppercase;letter-spacing:.03em;border-radius:10px;align-items:center;padding:2px 8px;font-size:.72rem;font-weight:600;display:inline-flex}.defect-map-status.in-progress{color:#1d4ed8;background:#dbeafe}.defect-map-status.completed{color:#047857;background:#d1fae5}.defect-map-status.reviewed{color:#6d28d9;background:#ede9fe}.defect-map-form{flex-direction:column;gap:12px;display:flex}.defect-map-form .form-row{grid-template-columns:1fr 1fr;gap:12px;display:grid}.defect-map-form .form-group{flex-direction:column;gap:4px;display:flex}.defect-map-form .form-group label{color:var(--text-muted);font-size:.8rem;font-weight:500}.defect-map-form .form-group input,.defect-map-form .form-group select,.defect-map-form .form-group textarea{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-tertiary);color:var(--text-primary);padding:6px 10px;font-size:.85rem}.defect-map-summary{background:var(--surface-elevated,var(--bg-secondary,#f8f8f8));border:1px solid var(--border);border-radius:var(--radius-sm);flex-wrap:wrap;align-items:center;gap:16px;padding:8px 12px;font-size:.82rem;display:flex}.defect-map-summary .summary-item{align-items:center;gap:4px;display:flex}.defect-map-summary .summary-dot{border-radius:50%;width:8px;height:8px;display:inline-block}.defect-map-warning{border-radius:var(--radius-sm);color:#92400e;background:#fffbeb;border:1px solid #f59e0b;align-items:flex-start;gap:8px;padding:10px 14px;font-size:.82rem;line-height:1.45;display:flex}.defect-map-warning .warning-icon{flex-shrink:0;font-size:1rem;line-height:1}.defect-map-prerequisites{border-radius:var(--radius-md);color:#92400e;background:#fffbeb;border:1px solid #f59e0b;padding:14px 16px;font-size:.84rem;line-height:1.5}.defect-map-prerequisites .prerequisites-header{align-items:center;gap:8px;margin-bottom:6px;display:flex}.defect-map-prerequisites .prerequisites-header .warning-icon{font-size:1.1rem;line-height:1}.defect-map-prerequisites p{margin:0 0 8px}.defect-map-prerequisites .prerequisites-list{margin:0;padding-left:20px;list-style:outside}.defect-map-prerequisites .prerequisite-missing{margin-bottom:4px;font-weight:500}.defect-map-context-header{background:var(--surface-elevated,var(--bg-secondary,#f8f8f8));border:1px solid var(--border);border-radius:var(--radius-sm);flex-wrap:wrap;align-items:center;gap:12px;padding:10px 14px;font-size:.85rem;display:flex}.defect-map-context-header .context-label{color:var(--text-primary);font-weight:600}.defect-map-context-header .context-value{color:var(--text-muted)}.defect-map-context-header .context-separator{color:var(--border)}.defect-map-session-detail-header{flex-direction:column;gap:4px;display:flex}.defect-map-session-detail-header .session-detail-meta{color:var(--text-muted);flex-wrap:wrap;gap:12px;font-size:.8rem;display:flex}
.database-config-view{max-width:720px}.database-config-view h2{margin-bottom:.25rem}.database-config-view .section-description{color:var(--text-secondary);margin-bottom:1.5rem;font-size:.9rem}.database-status-cards{flex-wrap:wrap;gap:1rem;margin-bottom:1.5rem;display:flex}.status-card{background:var(--bg-secondary);border:1px solid var(--border);border-radius:8px;flex-direction:column;gap:.25rem;min-width:140px;padding:.75rem 1rem;display:flex}.status-card .status-label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;font-size:.75rem}.status-card .status-badge{font-size:.9rem;font-weight:600}.status-card .status-value{font-size:.85rem}.database-config-view .error-banner{background:var(--danger-bg);color:var(--danger);border:1px solid var(--danger);border-radius:8px;margin-bottom:1.5rem;padding:.75rem 1rem;font-size:.9rem}.database-form{flex-direction:column;gap:1rem;margin-bottom:1.5rem;display:flex}.database-form .form-row{gap:1rem;display:flex}.database-form .form-group{flex-direction:column;gap:.25rem;display:flex}.database-form label{color:var(--text-secondary);font-size:.85rem;font-weight:500}.database-form input,.database-form select{border:1px solid var(--border);background:var(--bg-tertiary);color:var(--text-primary);border-radius:6px;padding:.5rem .75rem;font-size:.9rem}.database-form input:focus,.database-form select:focus{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-light);outline:none}.database-actions{flex-wrap:wrap;gap:.75rem;margin-bottom:1.5rem;display:flex}.test-result{border-radius:8px;flex-direction:column;gap:.25rem;margin-bottom:1.5rem;padding:1rem;font-size:.9rem;display:flex}.test-result.success{background:var(--success-bg);border:1px solid var(--success);color:var(--success)}.test-result.error{background:var(--danger-bg);border:1px solid var(--danger);color:var(--danger)}.ready-banner{background:var(--success-bg);color:var(--success);border:1px solid var(--success);border-radius:8px;margin-bottom:1.5rem;padding:1rem;font-weight:500}.database-help{background:var(--bg-secondary);border:1px solid var(--border);border-radius:8px;padding:1rem 1.5rem}.database-help h3{margin:0 0 .5rem;font-size:.95rem}.database-help ul{color:var(--text-secondary);margin:0;padding-left:1.25rem;font-size:.85rem}.database-help li{margin-bottom:.25rem}.guide-section{margin-top:1.25rem}.guide-section>h3{margin:0 0 .25rem;font-size:.95rem}.guide-intro{color:var(--text-secondary);margin:0 0 .75rem;font-size:.85rem}.guide-toggle{background:var(--bg-tertiary);border:1px solid var(--border);cursor:pointer;text-align:left;width:100%;color:var(--text-primary);border-radius:6px;align-items:center;gap:.5rem;margin-bottom:2px;padding:.75rem 1rem;font-size:.875rem;font-weight:500;transition:background .15s;display:flex}.guide-toggle:hover{background:var(--bg-hover)}.guide-toggle-icon{color:var(--text-muted);flex-shrink:0;font-size:.65rem;transition:transform .2s}.guide-toggle-icon.open{transform:rotate(90deg)}.guide-toggle-label{flex:1}.guide-badge{text-transform:uppercase;letter-spacing:.04em;border-radius:4px;flex-shrink:0;padding:.15rem .5rem;font-size:.7rem;font-weight:600}.guide-badge.recommended{background:var(--success-bg);color:var(--success);border:1px solid var(--success)}.guide-content{border:1px solid var(--border);background:var(--bg-primary);color:var(--text-secondary);border-top:none;border-radius:0 0 6px 6px;margin-bottom:.5rem;padding:1rem 1.25rem;font-size:.85rem;line-height:1.6}.guide-content h4{color:var(--text-primary);margin:1rem 0 .4rem;font-size:.875rem}.guide-content h4:first-child{margin-top:.25rem}.guide-content p{margin:0 0 .5rem}.guide-benefit{border-left:3px solid var(--accent);color:var(--text-secondary);background:#3b82f614;border-radius:0 4px 4px 0;padding:.5rem .75rem;margin-bottom:.75rem!important}.guide-code-block{background:var(--bg-secondary);border:1px solid var(--border);border-radius:6px;margin:.5rem 0 .75rem;overflow:hidden}.guide-code-label{background:var(--bg-tertiary);color:var(--text-muted);border-bottom:1px solid var(--border);padding:.25rem .75rem;font-size:.75rem;font-weight:600}.guide-code-block pre{margin:0;padding:.75rem;overflow-x:auto}.guide-code-block code{font-family:var(--font-mono);white-space:pre;color:var(--text-primary);font-size:.8rem;line-height:1.5}.guide-steps{margin:.5rem 0;padding-left:1.25rem}.guide-steps li{margin-bottom:.35rem}.guide-table{border-collapse:collapse;width:100%;margin:.5rem 0 .75rem;font-size:.85rem}.guide-table td{border:1px solid var(--border);color:var(--text-primary);padding:.4rem .75rem}.guide-table td:first-child{background:var(--bg-tertiary);width:120px;font-weight:600}.guide-warning{background:var(--warning-bg);border:1px solid var(--warning);color:var(--warning);border-radius:6px;margin:.75rem 0 .25rem;padding:.6rem .75rem;font-size:.82rem}@media (max-width:600px){.database-form .form-row,.database-status-cards,.database-actions{flex-direction:column}.database-actions .btn{width:100%}}.backup-section{border-top:1px solid var(--border);margin-top:2rem;padding-top:1.5rem}.backup-section h3{margin:0 0 .5rem;font-size:1.05rem}.backup-controls{background:var(--bg-secondary);border:1px solid var(--border);border-radius:8px;flex-wrap:wrap;align-items:flex-end;gap:1rem;margin:1rem 0 1.25rem;padding:.75rem 1rem;display:flex}.backup-storage-select{flex-direction:column;flex:260px;gap:.4rem;display:flex}.backup-storage-label{color:var(--text-primary);cursor:pointer;align-items:center;gap:.5rem;font-size:.875rem;display:flex}.backup-storage-label input[type=radio]{cursor:pointer}.pre-migration-backup-row{background:var(--bg-secondary);border:1px solid var(--border);border-radius:8px;margin-top:1rem;padding:.75rem 1rem}.pre-migration-backup-label{color:var(--text-primary);cursor:pointer;align-items:center;gap:.5rem;font-size:.9rem;font-weight:500;display:flex}.pre-migration-backup-label input[type=checkbox]{cursor:pointer;width:16px;height:16px}.pre-migration-backup-hint{color:var(--text-muted);margin:.5rem 0 0 1.5rem;font-size:.8rem;line-height:1.4}.backup-list{border:1px solid var(--border);border-radius:8px;margin-top:1rem;overflow-x:auto}.backup-table{border-collapse:collapse;width:100%;font-size:.85rem}.backup-table thead{background:var(--bg-secondary)}.backup-table th{text-align:left;color:var(--text-secondary);border-bottom:1px solid var(--border);white-space:nowrap;padding:.6rem .75rem;font-weight:600}.backup-table td{border-bottom:1px solid var(--border-light);vertical-align:middle;padding:.55rem .75rem}.backup-table tbody tr:last-child td{border-bottom:none}.backup-table tbody tr:hover{background:var(--bg-hover)}.backup-row--expired{opacity:.55}.backup-badge{text-transform:uppercase;letter-spacing:.03em;border-radius:999px;padding:.15rem .5rem;font-size:.72rem;font-weight:600;display:inline-block}.backup-badge--queued{background:var(--bg-tertiary);color:var(--text-secondary)}.backup-badge--progress{background:var(--warning-bg);color:var(--warning)}.backup-badge--success{background:var(--success-bg);color:var(--success)}.backup-badge--error{background:var(--danger-bg);color:var(--danger)}.backup-badge--muted{background:var(--bg-secondary);color:var(--text-muted)}.backup-error-text{color:var(--danger);text-overflow:ellipsis;max-width:240px;margin-top:.25rem;font-size:.72rem;overflow:hidden}.backup-actions-cell{white-space:nowrap;gap:.4rem;display:flex}.backup-actions-cell .btn{padding:.25rem .6rem;font-size:.78rem}.backup-list-empty,.backup-list-loading{text-align:center;color:var(--text-muted);background:var(--bg-secondary);border:1px dashed var(--border);border-radius:8px;margin-top:.75rem;padding:1.25rem;font-size:.88rem}.backup-metrics{background:var(--bg-secondary);border:1px solid var(--border);border-radius:8px;margin-top:1rem;padding:1rem 1.25rem}.backup-metrics-loading{color:var(--text-muted);padding:.75rem 1rem;font-size:.85rem;font-style:italic}.backup-metrics-header h4{color:var(--text-primary);margin:0 0 .75rem;font-size:.9rem;font-weight:600}.backup-metrics-grid{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:.75rem;display:grid}.backup-metric{background:var(--bg-primary);border:1px solid var(--border);border-radius:6px;padding:.6rem .8rem}.backup-metric-label{text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);margin-bottom:.2rem;font-size:.72rem}.backup-metric-value{color:var(--text-primary);font-size:1.25rem;font-weight:700;line-height:1.2}.backup-metric-value--ok{color:var(--success)}.backup-metric-value--warn{color:var(--warning)}.backup-metric-value--bad{color:var(--danger)}.backup-metric-sub{color:var(--text-muted);margin-top:.2rem;font-size:.72rem}.backup-metric-sub--warn{color:var(--warning)}.backup-metric-alert{border-radius:6px;margin-top:.85rem;padding:.65rem .9rem;font-size:.82rem;line-height:1.4}.backup-metric-alert code{background:var(--bg-primary);border-radius:3px;padding:.1rem .35rem;font-size:.82rem}.backup-metric-alert--warn{background:var(--warning-bg);border:1px solid var(--warning);color:var(--text-primary)}.restore-status-banner{border:1px solid #0000;border-radius:8px;justify-content:space-between;align-items:flex-start;gap:.75rem;margin-bottom:.75rem;padding:.75rem 1rem;font-size:.875rem;display:flex}.restore-status-banner--progress{background:var(--warning-bg);border-color:var(--warning);color:var(--text-primary)}.restore-status-banner--success{background:var(--success-bg);border-color:var(--success);color:var(--text-primary)}.restore-status-banner--error{background:var(--danger-bg);border-color:var(--danger);color:var(--text-primary)}.restore-status-banner__content{flex-direction:column;gap:.2rem;display:flex}.restore-status-banner__label{font-weight:600}.restore-status-banner__detail{color:var(--text-secondary);font-size:.78rem}.restore-status-banner__detail--error{color:var(--danger)}.restore-status-banner__close{cursor:pointer;color:var(--text-muted);background:0 0;border:none;flex-shrink:0;padding:0;font-size:.9rem}.restore-status-banner__close:hover{color:var(--text-primary)}.restore-warning-box{background:var(--danger-bg);border:1px solid var(--danger);border-radius:6px;margin-bottom:1.25rem;padding:.75rem 1rem;font-size:.875rem}.restore-warning-box strong{color:var(--danger);margin-bottom:.4rem;display:block}.restore-warning-box p{color:var(--text-primary);margin:.3rem 0 0}.btn-warning{background:var(--warning);color:#fff;border:1px solid #0000}.btn-warning:hover:not(:disabled){opacity:.88}.btn-warning:disabled{opacity:.45;cursor:not-allowed}.modal--wide{max-width:520px}@media (max-width:768px){.backup-controls{flex-direction:column;align-items:stretch}.backup-controls .btn{width:100%}}.agent-token-box{background:var(--bg-secondary);border:1px solid var(--border);border-radius:8px;margin-top:1.5rem;padding:1rem 1.25rem}.agent-token-box h4{margin:0 0 .5rem;font-size:.95rem}.agent-token-description{color:var(--text-secondary);margin:0 0 .75rem;font-size:.85rem}.agent-token-status{flex-direction:column;gap:.4rem;font-size:.85rem;display:flex}.agent-token-status>div:first-child{align-items:center;gap:.6rem;display:flex}.agent-token-label{color:var(--text-primary);font-weight:600}.agent-token-meta{color:var(--text-muted);font-size:.8rem}.agent-token-actions{flex-wrap:wrap;gap:.5rem;margin-top:.5rem;display:flex}.token-warning{background:var(--warning-bg);color:var(--warning);border:1px solid var(--warning);border-radius:6px;margin-bottom:1rem;padding:.75rem 1rem;font-size:.85rem}.token-display{background:var(--bg-tertiary);border:1px solid var(--border);border-radius:6px;margin-bottom:.75rem;padding:.75rem 1rem;overflow-x:auto}.token-display code{color:var(--text-primary);word-break:break-all;-webkit-user-select:all;user-select:all;font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;font-size:.85rem}
.project-view{padding:24px}.project-view-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:20px;display:flex}.project-view-header h2{margin:0;font-size:1.25rem}.project-view-actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.project-cards{grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:16px;display:grid}.project-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;padding:16px;transition:border-color .15s,box-shadow .15s}.project-card:hover{border-color:var(--accent);box-shadow:0 2px 8px #0000000f}.project-card-header{justify-content:space-between;align-items:flex-start;gap:8px;margin-bottom:8px;display:flex}.project-card-title h3{margin:0;font-size:1rem;font-weight:600;line-height:1.3}.project-card-number{color:var(--text-muted);font-size:.75rem;font-family:var(--font-mono)}.project-card-customer{color:var(--text-muted);margin-bottom:4px;font-size:.8rem}.project-card-description{color:var(--text-secondary);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:4px 0 8px;font-size:.8rem;display:-webkit-box;overflow:hidden}.project-card-footer{color:var(--text-muted);border-top:1px solid var(--border);gap:12px;margin-top:8px;padding-top:8px;font-size:.75rem;display:flex}.project-card-meta{white-space:nowrap}.project-status-badge{white-space:nowrap;text-transform:uppercase;letter-spacing:.03em;border-radius:999px;padding:2px 8px;font-size:.7rem;font-weight:600;display:inline-block}.project-status-active{background:var(--success-bg,#dcfce7);color:var(--success-text,#166534)}.project-status-completed{background:var(--info-bg,#dbeafe);color:var(--info-text,#1e40af)}.project-status-archived{background:var(--neutral-bg,#f3f4f6);color:var(--neutral-text,#6b7280)}.project-status-on-hold{background:var(--warning-bg,#fef9c3);color:var(--warning-text,#854d0e)}.project-detail{padding:24px}.project-detail-header{margin-bottom:24px}.project-detail-nav{margin-bottom:8px}.project-detail-title-row{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.project-detail-title-row h2{margin:0 0 4px;font-size:1.25rem}.project-detail-meta{flex-wrap:wrap;align-items:center;gap:8px;margin-top:4px;display:flex}.project-detail-description{color:var(--text-secondary);max-width:600px;margin-top:8px;font-size:.85rem}.project-detail-actions{flex-shrink:0;gap:8px;display:flex}.project-products-section{margin-top:16px}.project-products-header{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.project-products-header h3{margin:0;font-size:1rem}.project-products-table{border-collapse:collapse;width:100%}.project-products-table th{text-align:left;text-transform:uppercase;color:var(--text-muted);border-bottom:2px solid var(--border);padding:8px 12px;font-size:.75rem;font-weight:600}.project-products-table td{border-bottom:1px solid var(--border);padding:10px 12px;font-size:.85rem}.project-product-row{cursor:pointer;transition:background .1s}.project-product-row:hover{background:var(--hover)}.add-product-list{border:1px solid var(--border);border-radius:var(--radius);max-height:300px;margin-top:8px;overflow-y:auto}.add-product-item{cursor:pointer;justify-content:space-between;align-items:center;padding:8px 12px;font-size:.85rem;transition:background .1s;display:flex}.add-product-item:hover{background:var(--hover)}.add-product-item+.add-product-item{border-top:1px solid var(--border)}.add-product-item-selected{background:var(--accent-bg,#eff6ff)}.product-check{color:var(--accent);flex-shrink:0;font-weight:600}.selected-products-chips{flex-wrap:wrap;gap:6px;margin-top:8px;display:flex}.product-chip{background:var(--accent-bg,#eff6ff);border:1px solid var(--accent-border,#bfdbfe);white-space:nowrap;border-radius:999px;align-items:center;gap:4px;padding:2px 8px;font-size:.75rem;font-weight:500;display:inline-flex}.product-chip-remove{cursor:pointer;color:var(--text-muted);background:0 0;border:none;padding:0 2px;font-size:.7rem;line-height:1}.product-chip-remove:hover{color:var(--danger,#dc2626)}.project-detail-name-cell{font-weight:500}.product-detail-view{padding:24px}.product-detail-view-header{margin-bottom:24px}.product-detail-view-header h2{margin:0;font-size:1.25rem;font-weight:600}.product-detail-view-id{color:var(--text-muted);font-size:1rem;font-weight:400}.product-detail-view-customer{color:var(--text-secondary);margin-top:4px;font-size:.85rem}.product-detail-view-section{margin-bottom:32px}.product-detail-view-section-header{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.product-detail-view-section-header h3{margin:0;font-size:1rem;font-weight:600}.product-detail-view-empty{padding:16px 0;font-size:.85rem}.product-detail-view-table{border-collapse:collapse;width:100%}.product-detail-view-table th{text-align:left;text-transform:uppercase;color:var(--text-muted);border-bottom:2px solid var(--border);padding:8px 12px;font-size:.75rem;font-weight:600}.product-detail-view-table th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none}.product-detail-view-table th.sortable:hover{color:var(--text-primary)}.product-detail-view-table td{border-bottom:1px solid var(--border);padding:10px 12px;font-size:.85rem}.product-detail-view-row.clickable{cursor:pointer;transition:background .1s}.product-detail-view-row.clickable:hover{background:var(--hover)}.product-detail-view-details-grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px;display:grid}.detail-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;justify-content:space-between;align-items:center;padding:14px 16px;transition:border-color .15s,box-shadow .15s;display:flex}.detail-card:hover{border-color:var(--accent);box-shadow:0 2px 8px #0000000f}.detail-card-main{min-width:0}.detail-card-name{white-space:nowrap;text-overflow:ellipsis;font-size:.9rem;font-weight:600;overflow:hidden}.detail-card-id{color:var(--text-muted);font-size:.75rem;font-family:var(--font-mono);margin-top:2px}.detail-card-meta{color:var(--text-muted);white-space:nowrap;flex-shrink:0;margin-left:12px;font-size:.75rem}.product-id-number{color:var(--text-muted);font-size:.75rem;font-family:var(--font-mono)}
.complaint-status-badge{border-radius:var(--radius-sm);white-space:nowrap;border:1px solid #0000;padding:2px 8px;font-size:12px;font-weight:500;display:inline-block}.complaint-status-badge[data-status=NEW]{color:var(--danger,#ef4444);border-color:var(--danger,#ef4444);background:#ef444414}.complaint-status-badge[data-status=IN_ANALYSIS]{color:#8b5cf6;background:#8b5cf614;border-color:#8b5cf6}.complaint-status-badge[data-status=CORRECTIVE_ACTION]{color:#3b82f6;background:#3b82f614;border-color:#3b82f6}.complaint-status-badge[data-status=CUSTOMER_RESPONSE]{color:#06b6d4;background:#06b6d414;border-color:#06b6d4}.complaint-status-badge[data-status=VERIFICATION]{color:var(--warning,#f59e0b);border-color:var(--warning,#f59e0b);background:#f59e0b14}.complaint-status-badge[data-status=CLOSED]{color:var(--success,#22c55e);border-color:var(--success,#22c55e);background:#22c55e14}.complaint-status-badge[data-status=REJECTED]{color:var(--text-muted);border-color:var(--border);background:var(--bg-secondary)}.complaint-priority{font-size:12px;font-weight:500}.complaint-priority[data-priority=CRITICAL]{color:var(--danger,#ef4444)}.complaint-priority[data-priority=HIGH]{color:var(--warning,#f59e0b)}.complaint-priority[data-priority=NORMAL]{color:var(--text-secondary)}.complaint-priority[data-priority=LOW]{color:var(--text-muted)}.complaint-type-pill{border-radius:var(--radius-sm);background:var(--bg-secondary);color:var(--text-secondary);border:1px solid var(--border);padding:1px 7px;font-size:11px;font-weight:500;display:inline-block}.complaint-sla{color:var(--text-secondary);font-size:13px}.complaint-sla--overdue{color:var(--danger,#ef4444);font-weight:500}.complaint-sla--overdue:after{content:" ⚠"}.complaint-detail{padding:16px 24px 32px}.complaint-detail-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:16px;padding-bottom:12px;display:flex}.complaint-detail-title{margin:0 0 4px;font-size:20px;font-weight:600}.complaint-detail-meta{color:var(--text-muted);flex-wrap:wrap;align-items:center;gap:12px;font-size:13px;display:flex}.complaint-info-grid{grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:12px 24px;display:grid}.complaint-progress{flex-wrap:wrap;align-items:center;gap:4px;margin:8px 0 16px;display:flex}.complaint-progress-step{color:var(--text-muted);align-items:center;gap:6px;font-size:12px;display:flex}.complaint-progress-step.active{color:var(--accent);font-weight:500}.complaint-progress-dot{background:var(--border);border-radius:50%;width:10px;height:10px}.complaint-progress-step.active .complaint-progress-dot{background:var(--accent)}.complaint-progress-separator{background:var(--border);width:18px;height:1px}.complaint-batch-result{border-radius:var(--radius-sm);padding:2px 8px;font-size:12px;font-weight:500;display:inline-block}.complaint-batch-result[data-result=OK]{color:var(--success,#22c55e);background:#22c55e1a}.complaint-batch-result[data-result=NOK]{color:var(--danger,#ef4444);background:#ef44441a}.complaint-batch-result[data-result=PARTIAL]{color:var(--warning,#f59e0b);background:#f59e0b1a}.complaint-attachment-item{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-secondary);align-items:center;gap:8px;padding:6px 8px;font-size:13px;display:flex}.complaint-attachment-item+.complaint-attachment-item{margin-top:6px}.complaint-attachment-name{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}
.csv-import-modal .modal-body{max-height:calc(90vh - 160px);overflow-y:auto}.csv-import-stage{flex-direction:column;gap:16px;display:flex}.csv-import-stage p{margin:0;line-height:1.5}.csv-import-notice{background:var(--warning-bg,#eab30814);border:1px solid var(--warning-border,#eab3084d);border-radius:var(--radius-md);padding:12px 14px;font-size:13px;line-height:1.5}.csv-import-actions-row{flex-wrap:wrap;gap:10px;display:flex}.csv-import-dropzone{border:2px dashed var(--border);border-radius:var(--radius-lg);text-align:center;cursor:pointer;background:var(--bg-primary);padding:48px 16px;transition:border-color .15s,background .15s}.csv-import-dropzone:hover,.csv-import-dropzone--active{border-color:var(--accent);background:var(--accent-light,#3b82f614)}.csv-import-dropzone--has-file{border-style:solid;border-color:var(--accent)}.csv-import-dropzone-icon{opacity:.7;margin-bottom:8px;font-size:36px}.csv-import-file-name{margin-bottom:4px;font-weight:600}.csv-import-file-size{color:var(--text-muted);margin-bottom:12px;font-size:13px}.csv-import-summary-grid{grid-template-columns:repeat(4,1fr);gap:10px;display:grid}@media (max-width:640px){.csv-import-summary-grid{grid-template-columns:repeat(2,1fr)}}.csv-import-summary-card{background:var(--bg-primary);border:1px solid var(--border);border-radius:var(--radius-md);text-align:center;padding:14px}.csv-import-summary-value{color:var(--text-primary);font-size:24px;font-weight:700;line-height:1.1}.csv-import-summary-sub{color:var(--text-muted);font-size:16px;font-weight:500}.csv-import-summary-label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.03em;margin-top:4px;font-size:12px}.csv-import-errors,.csv-import-preview{flex-direction:column;gap:6px;display:flex}.csv-import-errors h4,.csv-import-preview h4{margin:0;font-size:14px}.csv-import-errors-table,.csv-import-preview-table{border:1px solid var(--border);border-radius:var(--radius-md);max-height:260px;overflow:auto}.csv-import-errors-table table,.csv-import-preview-table table{border-collapse:collapse;width:100%;font-size:12px}.csv-import-errors-table th,.csv-import-errors-table td,.csv-import-preview-table th,.csv-import-preview-table td{border-bottom:1px solid var(--border);text-align:left;vertical-align:top;padding:6px 10px}.csv-import-errors-table th,.csv-import-preview-table th{background:var(--bg-primary);font-weight:600;position:sticky;top:0}.csv-import-errors-table tr:hover td{background:var(--danger-bg,#ef44440d)}.csv-import-applying{text-align:center;align-items:center;padding:32px 16px}.csv-import-spinner{border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;width:36px;height:36px;margin:0 auto;animation:.8s linear infinite csv-import-spin}@keyframes csv-import-spin{to{transform:rotate(360deg)}}.csv-import-result-banner{border-radius:var(--radius-md);border:1px solid var(--border);padding:16px}.csv-import-result-banner h4{margin:0 0 4px}.csv-import-result-banner--success{background:var(--success-bg,#22c55e14);border-color:var(--success-border,#22c55e4d)}.csv-import-result-banner--error{background:var(--danger-bg,#ef444414);border-color:var(--danger-border,#ef44444d)}.csv-import-help{flex-direction:column;gap:16px;display:flex}.csv-import-help h4{margin:0;font-size:14px}.csv-import-help-table{border:1px solid var(--border);border-radius:var(--radius-md);max-height:360px;overflow:auto}.csv-import-help-table table{border-collapse:collapse;width:100%;font-size:12px}.csv-import-help-table th,.csv-import-help-table td{border-bottom:1px solid var(--border);text-align:left;vertical-align:top;padding:6px 10px}.csv-import-help-table th{background:var(--bg-primary);font-weight:600;position:sticky;top:0}.csv-import-help code,.csv-import-help-table code{background:var(--bg-primary);border-radius:3px;padding:1px 5px;font-size:12px}

