.layout{display:flex;min-height:100vh;background-color:#f9fafb}.sidebar{width:240px;background-color:#fff;border-right:1px solid #E5E7EB;display:flex;flex-direction:column;position:fixed;height:100vh;left:0;top:0}.sidebar-header{padding:24px;border-bottom:1px solid #E5E7EB}.sidebar-header h2{font-size:18px;font-weight:600;color:#111827;margin-bottom:4px}.sidebar-subtitle{font-size:12px;color:#4b5563}.sidebar-nav{flex:1;padding:16px;display:flex;flex-direction:column;gap:4px}.nav-link{padding:12px 16px;color:#4b5563;text-decoration:none;font-size:14px;border-radius:4px;transition:all .2s}.nav-link:hover{background-color:#f9fafb;color:#111827}.nav-link.active{background-color:#eff6ff;color:#2563eb;font-weight:500}.sidebar-footer{padding:24px;border-top:1px solid #E5E7EB}.user-info{margin-bottom:16px}.user-name{font-size:14px;font-weight:500;color:#111827;margin-bottom:4px}.user-role{font-size:12px;color:#4b5563}.btn-logout{width:100%;padding:8px 16px;background-color:transparent;color:#dc2626;border:1px solid #DC2626;border-radius:4px;font-size:14px;cursor:pointer;transition:all .2s}.btn-logout:hover{background-color:#fee2e2}.main-content{flex:1;margin-left:240px;padding:32px;min-height:100vh}.login-container{min-height:100vh;display:flex;align-items:center;justify-content:center;background-color:#f9fafb;padding:24px}.login-card{width:100%;max-width:400px;background-color:#fff;border:1px solid #E5E7EB;border-radius:8px;padding:32px}.login-header{text-align:center;margin-bottom:32px}.login-header h1{font-size:20px;font-weight:600;color:#111827;margin-bottom:8px}.login-subtitle{font-size:13px;color:#4b5563;margin-bottom:8px}.login-description{font-size:14px;color:#4b5563}.login-form{display:flex;flex-direction:column;gap:16px}.error-message{padding:12px;background-color:#fee2e2;border:1px solid #DC2626;border-radius:4px;color:#dc2626;font-size:14px}.form-field{display:flex;flex-direction:column;gap:8px}.form-field label{font-size:12px;font-weight:500;color:#111827}.form-field input{padding:12px;border:1px solid #E5E7EB;border-radius:4px;font-size:14px;color:#111827;background-color:#fff}.form-field input:focus{outline:none;border-color:#2563eb}.form-field input:disabled{background-color:#f9fafb;cursor:not-allowed}.btn-primary{padding:12px 24px;background-color:#2563eb;color:#fff;border:none;border-radius:4px;font-size:14px;font-weight:500;cursor:pointer;transition:background-color .2s}.btn-primary:hover:not(:disabled){background-color:#1d4ed8}.login-footer{margin-top:24px;padding-top:24px;border-top:1px solid #E5E7EB}.login-hint{font-size:12px;color:#4b5563;text-align:center}.dashboard{max-width:1200px;margin:0 auto}.dashboard-header{margin-bottom:24px}.dashboard-header h1{font-size:20px;font-weight:600;color:#111827;margin-bottom:8px}.dashboard-subtitle{font-size:14px;color:#4b5563}.status-banner{background-color:#eff6ff;border:1px solid #2563EB;border-radius:4px;padding:16px;margin-bottom:24px}.status-banner-content{display:flex;align-items:center;gap:12px}.status-icon{font-size:20px}.status-text{display:flex;flex-direction:column;gap:4px}.status-text strong{font-size:14px;font-weight:600;color:#111827}.status-text span{font-size:13px;color:#4b5563}.dashboard-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:24px;margin-bottom:24px}.dashboard-card{background-color:#fff;border:1px solid #E5E7EB;border-radius:8px;padding:24px}.dashboard-card h2{font-size:16px;font-weight:600;color:#111827;margin-bottom:16px}.card-stat{display:flex;flex-direction:column;gap:4px;margin-bottom:16px}.stat-value{font-size:32px;font-weight:600;color:#111827}.stat-value-small{font-size:24px;margin-top:8px}.stat-label{font-size:13px;color:#4b5563}.card-action{margin-top:16px}.btn-secondary{display:inline-block;padding:8px 16px;background-color:transparent;color:#2563eb;border:1px solid #2563EB;border-radius:4px;font-size:14px;text-decoration:none;cursor:pointer;transition:all .2s}.next-action-card{background-color:#fff;border:1px solid #E5E7EB;border-radius:8px;padding:24px}.next-action-card h2{font-size:16px;font-weight:600;color:#111827;margin-bottom:8px}.next-action-card p{font-size:14px;color:#4b5563;margin-bottom:16px}.installations{max-width:1200px;margin:0 auto}.create-form-card input,.create-form-card select{width:100%;padding:12px;border:1px solid #E5E7EB;border-radius:4px;font-size:14px}.installations-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:24px}.installation-card{background-color:#fff;border:1px solid #E5E7EB;border-radius:8px;padding:24px;transition:box-shadow .2s}.installation-card:hover{box-shadow:0 2px 8px #0000001a}.btn-destructive{padding:8px 16px;background-color:transparent;color:#dc2626;border:1px solid #DC2626;border-radius:4px;font-size:14px;cursor:pointer;transition:all .2s}.btn-destructive:hover{background-color:#fee2e2}.installation-detail{max-width:800px;margin:0 auto}.btn-back{padding:8px 16px;background-color:transparent;color:#2563eb;border:1px solid #2563EB;border-radius:4px;font-size:14px;cursor:pointer;transition:all .2s}.btn-back:hover{background-color:#eff6ff}.header-actions{display:flex;gap:8px}.detail-card{background-color:#fff;border:1px solid #E5E7EB;border-radius:8px;padding:24px}.detail-title{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px;padding-bottom:16px;border-bottom:1px solid #E5E7EB}.detail-title h1{font-size:20px;font-weight:600;color:#111827;margin:0}.detail-info{display:flex;flex-direction:column;gap:16px}.info-row{display:flex;gap:12px;font-size:14px}.info-label{color:#4b5563;font-weight:500;min-width:150px}.info-value{color:#111827}.edit-form-card{background-color:#fff;border:1px solid #E5E7EB;border-radius:8px;padding:24px}.edit-form-card h2{font-size:18px;font-weight:600;color:#111827;margin-bottom:24px}.edit-form-card .form-field{margin-bottom:16px}.edit-form-card label{display:block;font-size:12px;font-weight:500;color:#111827;margin-bottom:8px}.edit-form-card input,.edit-form-card select{width:100%;padding:12px;border:1px solid #E5E7EB;border-radius:4px;font-size:14px}.edit-form-card .form-actions{display:flex;gap:12px;margin-top:24px}.status-badge{padding:6px 12px;border-radius:12px;font-size:12px;font-weight:500}.status-badge.status-active{background-color:#dcfce7;color:#16a34a}.status-badge.status-completed{background-color:#eff6ff;color:#2563eb}.status-badge.status-archived{background-color:#f3f4f6;color:#4b5563}.checklists{max-width:1200px;margin:0 auto}.checklists-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:24px}.checklist-card{background-color:#fff;border:1px solid #E5E7EB;border-radius:8px;padding:24px}.status-badge.status-closed{background-color:#f3f4f6;color:#4b5563}.checklist-detail{max-width:1000px;margin:0 auto}.detail-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px}.header-info{display:flex;align-items:center;gap:16px}.header-info h1{font-size:20px;font-weight:600;color:#111827;margin:0}.progress-card{background-color:#fff;border:1px solid #E5E7EB;border-radius:8px;padding:24px;margin-bottom:24px}.progress-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.progress-header h2{font-size:16px;font-weight:600;color:#111827;margin:0}.progress-text{font-size:14px;color:#4b5563}.progress-bar{width:100%;height:8px;background-color:#e5e7eb;border-radius:4px;overflow:hidden;margin-bottom:8px}.progress-fill{height:100%;background-color:#16a34a;transition:width .3s}.progress-percentage{font-size:14px;font-weight:600;color:#111827;text-align:right}.items-section{margin-top:24px}.items-section h2{font-size:18px;font-weight:600;color:#111827;margin-bottom:16px}.items-list{display:flex;flex-direction:column;gap:16px}.item-card{background-color:#fff;border:1px solid #E5E7EB;border-radius:8px;padding:20px}.item-header{display:flex;align-items:center;gap:12px;margin-bottom:12px}.item-number{width:32px;height:32px;display:flex;align-items:center;justify-content:center;background-color:#f3f4f6;border-radius:50%;font-size:14px;font-weight:600;color:#111827}.item-header h3{font-size:16px;font-weight:600;color:#111827;flex:1;margin:0}.item-notes{padding:12px;background-color:#f9fafb;border-radius:4px;font-size:14px;color:#4b5563;margin-bottom:12px}.item-actions{display:flex;gap:8px;padding-top:12px;border-top:1px solid #E5E7EB}.status-badge{padding:4px 12px;border-radius:12px;font-size:12px;font-weight:500}.status-badge.status-in-progress{background-color:#eff6ff;color:#2563eb}.status-badge.status-completed{background-color:#dcfce7;color:#16a34a}.status-badge.status-failed{background-color:#fee2e2;color:#dc2626}.status-badge.status-blocked{background-color:#fef3c7;color:#d97706}.status-badge.status-pending{background-color:#f3f4f6;color:#4b5563}.reports{max-width:1200px;margin:0 auto}.create-form-card{background-color:#fff;border:1px solid #E5E7EB;border-radius:8px;padding:24px;margin-bottom:24px}.create-form-card h2{font-size:16px;font-weight:600;color:#111827;margin-bottom:16px}.create-form-card .form-field{margin-bottom:16px}.create-form-card label{display:block;font-size:12px;font-weight:500;color:#111827;margin-bottom:8px}.create-form-card select{width:100%;padding:12px;border:1px solid #E5E7EB;border-radius:4px;font-size:14px}.create-form-card .form-actions{display:flex;gap:12px;margin-top:24px}.empty-state p{font-size:14px;color:#4b5563;margin-bottom:16px}.reports-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:24px}.report-card{background-color:#fff;border:1px solid #E5E7EB;border-radius:8px;padding:24px}.card-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:16px}.card-header h3{font-size:16px;font-weight:600;color:#111827;flex:1;margin-right:12px}.report-version{padding:4px 8px;background-color:#f3f4f6;border-radius:4px;font-size:12px;font-weight:500;color:#4b5563}.card-body{margin-bottom:16px}.card-info{display:flex;gap:8px;margin-bottom:8px;font-size:14px}.card-info .info-label{color:#4b5563;font-weight:500}.card-info .info-value{color:#111827}.card-actions{display:flex;gap:8px;padding-top:16px;border-top:1px solid #E5E7EB}.audit{max-width:1400px;margin:0 auto}.page-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px}.page-header h1{font-size:20px;font-weight:600;color:#111827}.loading{padding:32px;text-align:center;color:#4b5563;font-size:14px}.error-message{background-color:#fee2e2;border:1px solid #DC2626;border-radius:4px;padding:12px;margin-bottom:24px;color:#dc2626;font-size:14px}.empty-state{background-color:#fff;border:1px solid #E5E7EB;border-radius:8px;padding:48px;text-align:center}.empty-state p{font-size:14px;color:#4b5563}.audit-table{background-color:#fff;border:1px solid #E5E7EB;border-radius:8px;overflow:hidden}.audit-table table{width:100%;border-collapse:collapse}.audit-table thead{background-color:#f9fafb}.audit-table th{padding:12px 16px;text-align:left;font-size:12px;font-weight:600;color:#4b5563;text-transform:uppercase;border-bottom:1px solid #E5E7EB}.audit-table td{padding:12px 16px;font-size:14px;color:#111827;border-bottom:1px solid #E5E7EB}.audit-table tbody tr:hover{background-color:#f9fafb}.audit-table tbody tr:last-child td{border-bottom:none}.entity-id{font-family:monospace;font-size:12px;color:#6b7280}.event-type-badge{padding:4px 8px;border-radius:4px;font-size:12px;font-weight:500}.event-type-badge.event-type-create{background-color:#dcfce7;color:#16a34a}.event-type-badge.event-type-update{background-color:#eff6ff;color:#2563eb}.event-type-badge.event-type-delete{background-color:#fee2e2;color:#dc2626}.event-type-badge.event-type-status_change{background-color:#fef3c7;color:#d97706}.event-type-badge.event-type-access{background-color:#f3f4f6;color:#4b5563}.event-type-badge.event-type-auth_success{background-color:#dcfce7;color:#16a34a}.event-type-badge.event-type-auth_failure{background-color:#fee2e2;color:#dc2626}:root{--color-background: #F9FAFB;--color-surface: #FFFFFF;--color-border: #E5E7EB;--color-text-primary: #111827;--color-text-secondary: #4B5563;--color-primary: #2563EB;--color-primary-hover: #1d4ed8;--color-success: #16A34A;--color-warning: #D97706;--color-error: #DC2626;--color-info: #0284C7;--font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;--spacing-1: 4px;--spacing-2: 8px;--spacing-3: 12px;--spacing-4: 16px;--spacing-6: 24px;--spacing-8: 32px}*{box-sizing:border-box;margin:0;padding:0}body{margin:0;font-family:var(--font-family);font-size:14px;line-height:1.5;color:var(--color-text-primary);background-color:var(--color-background);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#root{width:100%;min-height:100vh}h1,h2,h3,h4,h5,h6{font-weight:600;color:var(--color-text-primary);line-height:1.2}h1{font-size:20px}h2{font-size:18px}h3{font-size:16px}p{font-size:14px;color:var(--color-text-secondary);line-height:1.5}button,.btn-primary,.btn-secondary{font-family:var(--font-family);font-size:14px;font-weight:500;border:none;border-radius:4px;cursor:pointer;transition:all .2s;padding:12px 24px}.btn-primary{background-color:var(--color-primary);color:#fff}.btn-primary:hover:not(:disabled){background-color:var(--color-primary-hover)}.btn-primary:disabled{background-color:#9ca3af;cursor:not-allowed}.btn-secondary{background-color:transparent;color:var(--color-primary);border:1px solid var(--color-primary)}.btn-secondary:hover{background-color:#eff6ff}a{color:var(--color-primary);text-decoration:none}a:hover{text-decoration:underline}input,textarea,select{font-family:var(--font-family);font-size:14px;color:var(--color-text-primary);background-color:var(--color-surface);border:1px solid var(--color-border);border-radius:4px;padding:12px}input:focus,textarea:focus,select:focus{outline:none;border-color:var(--color-primary)}input:disabled,textarea:disabled,select:disabled{background-color:var(--color-background);cursor:not-allowed}.text-primary{color:var(--color-text-primary)}.text-secondary{color:var(--color-text-secondary)}.text-success{color:var(--color-success)}.text-warning{color:var(--color-warning)}.text-error{color:var(--color-error)}.text-info{color:var(--color-info)}
