@import "https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap";
:root{--color-primary:#0ea5e9;--color-primary-dark:#0284c7;--color-primary-light:#e0f2fe;--color-danger:#ef4444;--color-danger-light:#fee2e2;--color-warning:#f59e0b;--color-warning-light:#fef3c7;--color-success:#22c55e;--color-success-light:#dcfce7;--color-info:#6366f1;--color-info-light:#e0e7ff;--color-teal:#14b8a6;--color-teal-light:#ccfbf1;--color-purple:#a855f7;--color-purple-light:#f3e8ff;--color-bg:#f8fafc;--color-surface:#fff;--color-surface-raised:#f1f5f9;--color-border:#e2e8f0;--color-border-strong:#cbd5e1;--color-text:#0f172a;--color-text-secondary:#475569;--color-text-muted:#94a3b8;--color-text-on-dark:#fff;--sidebar-bg:#0f172a;--sidebar-text:#cbd5e1;--sidebar-text-active:#fff;--sidebar-active-bg:#1e293b;--sidebar-hover-bg:#1e293b;--sidebar-width:220px;--font-family:"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-size-xs:.75rem;--font-size-sm:.875rem;--font-size-base:1rem;--font-size-lg:1.125rem;--font-size-xl:1.25rem;--font-size-2xl:1.5rem;--font-size-3xl:1.875rem;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.25rem;--space-6:1.5rem;--space-8:2rem;--space-10:2.5rem;--space-12:3rem;--radius-sm:.375rem;--radius:.5rem;--radius-lg:.75rem;--radius-xl:1rem;--radius-full:9999px;--shadow-sm:0 1px 2px #0000000d;--shadow:0 1px 3px #0000001a, 0 1px 2px #0000000f;--shadow-md:0 4px 6px #00000012, 0 2px 4px #0000000f;--shadow-lg:0 10px 15px #0000001a, 0 4px 6px #0000000d;--transition:.15s ease;--transition-md:.25s ease}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-font-smoothing:antialiased;font-size:16px}body{font-family:var(--font-family);font-size:var(--font-size-base);color:var(--color-text);background:var(--color-bg);line-height:1.5}a{color:var(--color-primary);text-decoration:none}a:hover{text-decoration:underline}.app-layout{min-height:100vh;display:flex}.sidebar{width:var(--sidebar-width);background:var(--sidebar-bg);z-index:100;flex-direction:column;flex-shrink:0;display:flex;position:fixed;top:0;bottom:0;left:0;overflow-y:auto}.sidebar-logo{padding:var(--space-6) var(--space-5);border-bottom:1px solid #ffffff14}.sidebar-logo-title{font-size:var(--font-size-base);color:var(--sidebar-text-active);font-weight:700;line-height:1.2}.sidebar-logo-sub{font-size:var(--font-size-xs);color:var(--sidebar-text);margin-top:var(--space-1)}.sidebar-nav{padding:var(--space-4) var(--space-2);flex:1}.sidebar-nav-label{text-transform:uppercase;letter-spacing:.08em;color:var(--color-text-muted);padding:var(--space-3) var(--space-3) var(--space-2);font-size:.65rem;font-weight:600}.sidebar-nav-item{align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-3);border-radius:var(--radius);color:var(--sidebar-text);font-size:var(--font-size-sm);cursor:pointer;transition:background var(--transition), color var(--transition);margin-bottom:2px;font-weight:500;text-decoration:none;display:flex}.sidebar-nav-item:hover{background:var(--sidebar-hover-bg);color:var(--sidebar-text-active);text-decoration:none}.sidebar-nav-item.active{background:var(--color-primary);color:var(--sidebar-text-active)}.sidebar-nav-item svg{flex-shrink:0;width:18px;height:18px}.sidebar-footer{padding:var(--space-4) var(--space-4);border-top:1px solid #ffffff14}.sidebar-user{align-items:center;gap:var(--space-3);display:flex}.sidebar-user-avatar{border-radius:var(--radius-full);background:var(--color-primary);width:32px;height:32px;font-size:var(--font-size-sm);color:#fff;flex-shrink:0;justify-content:center;align-items:center;font-weight:600;display:flex}.sidebar-user-name{font-size:var(--font-size-xs);color:var(--sidebar-text-active);font-weight:600;line-height:1.2}.sidebar-user-role{color:var(--sidebar-text);font-size:.65rem}.main-content{margin-left:var(--sidebar-width);flex-direction:column;flex:1;min-height:100vh;display:flex}.page-header{padding:var(--space-6) var(--space-8);background:var(--color-surface);border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:center;gap:var(--space-4);display:flex}.page-header-left h1{font-size:var(--font-size-xl);color:var(--color-text);font-weight:700}.page-header-left p{font-size:var(--font-size-sm);color:var(--color-text-secondary);margin-top:2px}.page-body{padding:var(--space-8);flex:1}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}.card-header{padding:var(--space-5) var(--space-6);border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:center;gap:var(--space-4);display:flex}.card-header h2{font-size:var(--font-size-base);color:var(--color-text);font-weight:600}.card-body{padding:var(--space-6)}.kpi-grid{gap:var(--space-4);margin-bottom:var(--space-8);grid-template-columns:repeat(auto-fit,minmax(160px,1fr));display:grid}.kpi-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-5);gap:var(--space-2);transition:box-shadow var(--transition);cursor:default;flex-direction:column;display:flex}.kpi-card:hover{box-shadow:var(--shadow-md)}.kpi-card-icon{border-radius:var(--radius);justify-content:center;align-items:center;width:36px;height:36px;font-size:1.125rem;display:flex}.kpi-card-value{font-size:var(--font-size-3xl);color:var(--color-text);font-weight:700;line-height:1}.kpi-card-label{font-size:var(--font-size-xs);color:var(--color-text-secondary);font-weight:500}.kpi-danger .kpi-card-icon{background:var(--color-danger-light)}.kpi-danger .kpi-card-value{color:var(--color-danger)}.kpi-warning .kpi-card-icon{background:var(--color-warning-light)}.kpi-warning .kpi-card-value{color:var(--color-warning)}.kpi-success .kpi-card-icon{background:var(--color-success-light)}.kpi-success .kpi-card-value{color:var(--color-success)}.kpi-info .kpi-card-icon{background:var(--color-info-light)}.kpi-info .kpi-card-value{color:var(--color-info)}.kpi-teal .kpi-card-icon{background:var(--color-teal-light)}.kpi-teal .kpi-card-value{color:var(--color-teal)}.kpi-purple .kpi-card-icon{background:var(--color-purple-light)}.kpi-purple .kpi-card-value{color:var(--color-purple)}.btn{justify-content:center;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);border-radius:var(--radius);font-size:var(--font-size-sm);font-weight:500;font-family:var(--font-family);cursor:pointer;transition:all var(--transition);white-space:nowrap;border:1px solid #0000;text-decoration:none;display:inline-flex}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}.btn-primary:hover:not(:disabled){background:var(--color-primary-dark);border-color:var(--color-primary-dark);color:#fff;text-decoration:none}.btn-secondary{background:var(--color-surface);color:var(--color-text);border-color:var(--color-border-strong)}.btn-secondary:hover:not(:disabled){background:var(--color-surface-raised);text-decoration:none}.btn-danger{background:var(--color-danger);color:#fff;border-color:var(--color-danger)}.btn-danger:hover:not(:disabled){color:#fff;background:#dc2626;text-decoration:none}.btn-success{background:var(--color-success);color:#fff}.btn-success:hover:not(:disabled){color:#fff;background:#16a34a;text-decoration:none}.btn-whatsapp{color:#fff;background:#25d366;font-weight:600}.btn-whatsapp:hover:not(:disabled){color:#fff;background:#1da851;text-decoration:none}.btn-ghost{color:var(--color-text-secondary);background:0 0;border-color:#0000}.btn-ghost:hover:not(:disabled){background:var(--color-surface-raised);color:var(--color-text);text-decoration:none}.btn-sm{padding:var(--space-1) var(--space-3);font-size:var(--font-size-xs)}.btn-lg{padding:var(--space-3) var(--space-6);font-size:var(--font-size-base)}.badge{border-radius:var(--radius-full);font-size:var(--font-size-xs);align-items:center;padding:2px 8px;font-weight:600;line-height:1.4;display:inline-flex}.badge-pending{color:#475569;background:#f1f5f9}.badge-opened_whatsapp,.badge-sent{color:#1d4ed8;background:#dbeafe}.badge-replied_ok{background:var(--color-success-light);color:#15803d}.badge-replied_issue{color:#c2410c;background:#fff7ed}.badge-booked{background:var(--color-teal-light);color:#0f766e}.badge-no_reply{color:#64748b;background:#f1f5f9}.badge-snoozed{background:var(--color-purple-light);color:#7e22ce}.badge-closed,.badge-skipped{color:#94a3b8;background:#f1f5f9}.badge-overdue{background:var(--color-danger-light);color:#b91c1c}.badge-followup_3day{color:#1e40af;background:#dbeafe}.badge-reminder_6month{background:var(--color-teal-light);color:#0f766e}.badge-reminder_12month{background:var(--color-purple-light);color:#6b21a8}.badge-serviced{background:var(--color-success-light);color:#15803d}.badge-problem_found{color:#c2410c;background:#fff7ed}.badge-not_serviced{background:var(--color-danger-light);color:#b91c1c}.badge-repair_spare_part{color:#1e40af;background:#dbeafe}.badge-residential{color:#5b21b6;background:#ede9fe}.badge-commercial{color:#92400e;background:#fef3c7}.badge-active{background:var(--color-success-light);color:#15803d}.badge-inactive{color:#64748b;background:#f1f5f9}.badge-opted_out{background:var(--color-danger-light);color:#b91c1c}.form-group{gap:var(--space-2);flex-direction:column;display:flex}.form-label{font-size:var(--font-size-sm);color:var(--color-text);font-weight:500}.form-label.required:after{content:" *";color:var(--color-danger)}.form-control{width:100%;padding:var(--space-2) var(--space-3);border:1px solid var(--color-border-strong);border-radius:var(--radius);font-size:var(--font-size-sm);font-family:var(--font-family);color:var(--color-text);background:var(--color-surface);transition:border-color var(--transition), box-shadow var(--transition);outline:none}.form-control:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px #0ea5e926}.form-control.error{border-color:var(--color-danger)}.form-control:focus.error{box-shadow:0 0 0 3px #ef444426}.form-hint{font-size:var(--font-size-xs);color:var(--color-text-muted)}.form-error{font-size:var(--font-size-xs);color:var(--color-danger)}.form-section{border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-5);gap:var(--space-4);flex-direction:column;display:flex}.form-section-title{font-size:var(--font-size-sm);color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.05em;margin-bottom:var(--space-1);font-weight:600}.form-row{gap:var(--space-4);grid-template-columns:1fr 1fr;display:grid}.form-row-3{gap:var(--space-4);grid-template-columns:1fr 1fr 1fr;display:grid}.checkbox-group{gap:var(--space-3);flex-wrap:wrap;display:flex}.checkbox-item{align-items:center;gap:var(--space-2);cursor:pointer;font-size:var(--font-size-sm);display:flex}.checkbox-item input[type=checkbox]{width:16px;height:16px;accent-color:var(--color-primary);cursor:pointer}.radio-group{gap:var(--space-3);flex-wrap:wrap;display:flex}.radio-item{align-items:center;gap:var(--space-2);cursor:pointer;font-size:var(--font-size-sm);display:flex}.radio-item input[type=radio]{width:16px;height:16px;accent-color:var(--color-primary);cursor:pointer}.table-container{border-radius:var(--radius-lg);border:1px solid var(--color-border);overflow-x:auto}table{border-collapse:collapse;width:100%}thead th{background:var(--color-surface-raised);padding:var(--space-3) var(--space-4);text-align:left;font-size:var(--font-size-xs);color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--color-border);white-space:nowrap;font-weight:600}tbody tr{border-bottom:1px solid var(--color-border);transition:background var(--transition)}tbody tr:last-child{border-bottom:none}tbody tr:hover{background:var(--color-surface-raised)}tbody td{padding:var(--space-3) var(--space-4);font-size:var(--font-size-sm);color:var(--color-text);vertical-align:middle}.table-name-cell{color:var(--color-primary);cursor:pointer;font-weight:600}.table-name-cell:hover{text-decoration:underline}.task-row{align-items:flex-start;gap:var(--space-4);padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--color-border);transition:background var(--transition);display:flex}.task-row:last-child{border-bottom:none}.task-row:hover{background:var(--color-surface-raised)}.task-row-overdue{border-left:3px solid var(--color-danger)}.task-row-body{flex:1;min-width:0}.task-row-header{align-items:center;gap:var(--space-2);margin-bottom:var(--space-1);flex-wrap:wrap;display:flex}.task-customer-name{color:var(--color-text);font-weight:600;font-size:var(--font-size-sm)}.task-site-label{font-size:var(--font-size-xs);color:var(--color-text-muted);font-weight:500}.task-meta{font-size:var(--font-size-xs);color:var(--color-text-muted)}.task-due-overdue{color:var(--color-danger);font-weight:600}.task-actions{align-items:center;gap:var(--space-2);flex-wrap:wrap;flex-shrink:0;display:flex}.search-bar{align-items:center;display:flex;position:relative}.search-bar svg{left:var(--space-3);color:var(--color-text-muted);flex-shrink:0;width:16px;height:16px;position:absolute}.search-bar input{width:100%;padding-left:2.25rem}.alert{padding:var(--space-3) var(--space-4);border-radius:var(--radius);font-size:var(--font-size-sm);align-items:flex-start;gap:var(--space-3);display:flex}.alert-warning{background:var(--color-warning-light);color:#78350f;border:1px solid #fcd34d}.alert-danger{background:var(--color-danger-light);color:#7f1d1d;border:1px solid #fca5a5}.alert-success{background:var(--color-success-light);color:#14532d;border:1px solid #86efac}.modal-overlay{z-index:200;padding:var(--space-8);background:#00000080;justify-content:center;align-items:flex-start;display:flex;position:fixed;inset:0;overflow-y:auto}.modal{background:var(--color-surface);border-radius:var(--radius-xl);box-shadow:var(--shadow-lg);width:100%;max-width:560px;margin:auto}.modal-lg{max-width:720px}.modal-header{padding:var(--space-5) var(--space-6);border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:center;display:flex}.modal-header h2{font-size:var(--font-size-lg);font-weight:700}.modal-close{cursor:pointer;color:var(--color-text-muted);padding:var(--space-1);border-radius:var(--radius);transition:color var(--transition);background:0 0;border:none;justify-content:center;align-items:center;display:flex}.modal-close:hover{color:var(--color-text)}.modal-body{padding:var(--space-6);gap:var(--space-4);flex-direction:column;display:flex}.modal-footer{padding:var(--space-4) var(--space-6);border-top:1px solid var(--color-border);justify-content:flex-end;gap:var(--space-3);display:flex}.tabs{border-bottom:1px solid var(--color-border);gap:0;display:flex}.tab-btn{padding:var(--space-3) var(--space-5);font-size:var(--font-size-sm);font-weight:500;font-family:var(--font-family);color:var(--color-text-secondary);cursor:pointer;transition:color var(--transition), border-color var(--transition);white-space:nowrap;background:0 0;border:none;border-bottom:2px solid #0000;margin-bottom:-1px}.tab-btn:hover{color:var(--color-text)}.tab-btn.active{color:var(--color-primary);border-bottom-color:var(--color-primary)}.empty-state{text-align:center;padding:var(--space-12) var(--space-8);color:var(--color-text-muted)}.empty-state svg{width:48px;height:48px;margin:0 auto var(--space-4);opacity:.4}.empty-state h3{font-size:var(--font-size-base);color:var(--color-text-secondary);margin-bottom:var(--space-2);font-weight:600}.empty-state p{font-size:var(--font-size-sm)}.section-header{margin-bottom:var(--space-4);justify-content:space-between;align-items:center;display:flex}.section-header h2{font-size:var(--font-size-base);color:var(--color-text);align-items:center;gap:var(--space-2);font-weight:700;display:flex}.section-count{background:var(--color-surface-raised);border-radius:var(--radius-full);min-width:22px;height:22px;font-size:var(--font-size-xs);color:var(--color-text-secondary);justify-content:center;align-items:center;padding:0 6px;font-weight:700;display:inline-flex}.section-count.danger{background:var(--color-danger-light);color:var(--color-danger)}.duplicate-warning{background:var(--color-warning-light);border-radius:var(--radius);padding:var(--space-3) var(--space-4);font-size:var(--font-size-sm);color:#78350f;border:1px solid #fcd34d}.duplicate-warning a{color:#78350f;font-weight:600;text-decoration:underline}.detail-grid{gap:var(--space-4) var(--space-8);grid-template-columns:1fr 1fr;display:grid}.detail-item{flex-direction:column;gap:2px;display:flex}.detail-label{font-size:var(--font-size-xs);text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-muted);font-weight:600}.detail-value{font-size:var(--font-size-sm);color:var(--color-text);font-weight:500}.service-record-card{border:1px solid var(--color-border);border-radius:var(--radius-lg);overflow:hidden}.service-record-card-header{padding:var(--space-3) var(--space-4);background:var(--color-surface-raised);border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:center;display:flex}.service-record-card-body{padding:var(--space-4)}.problem-flags{gap:var(--space-2);margin-top:var(--space-2);flex-wrap:wrap;display:flex}.problem-flag{border-radius:var(--radius-full);font-size:var(--font-size-xs);color:#c2410c;background:#fff7ed;border:1px solid #fed7aa;align-items:center;gap:4px;padding:2px 8px;font-weight:600;display:inline-flex}.spinner{border:2px solid var(--color-border);border-top-color:var(--color-primary);border-radius:var(--radius-full);width:20px;height:20px;animation:.6s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.loading-overlay{padding:var(--space-12);justify-content:center;align-items:center;display:flex}.flex{display:flex}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-between{justify-content:space-between}.gap-2{gap:var(--space-2)}.gap-3{gap:var(--space-3)}.gap-4{gap:var(--space-4)}.gap-6{gap:var(--space-6)}.mt-2{margin-top:var(--space-2)}.mt-4{margin-top:var(--space-4)}.mt-6{margin-top:var(--space-6)}.mb-4{margin-bottom:var(--space-4)}.mb-6{margin-bottom:var(--space-6)}.text-sm{font-size:var(--font-size-sm)}.text-xs{font-size:var(--font-size-xs)}.text-muted{color:var(--color-text-muted)}.text-secondary{color:var(--color-text-secondary)}.font-bold{font-weight:700}.font-semibold{font-weight:600}.w-full{width:100%}.text-right{text-align:right}.text-danger{color:var(--color-danger)}.text-success{color:var(--color-success)}.login-page{background:linear-gradient(135deg,#0f172a 0%,#1e293b 50%,#0f172a 100%);justify-content:center;align-items:center;min-height:100vh;display:flex}.login-card{background:var(--color-surface);border-radius:var(--radius-xl);padding:var(--space-10);width:100%;max-width:400px;box-shadow:var(--shadow-lg)}.login-logo{text-align:center;margin-bottom:var(--space-8)}.login-logo-title{font-size:var(--font-size-2xl);color:var(--color-primary);font-weight:800;line-height:1.2}.login-logo-sub{font-size:var(--font-size-sm);color:var(--color-text-muted);margin-top:var(--space-1)}.login-form{gap:var(--space-4);flex-direction:column;display:flex}.login-error{background:var(--color-danger-light);border-radius:var(--radius);padding:var(--space-3) var(--space-4);font-size:var(--font-size-sm);color:#7f1d1d;text-align:center;border:1px solid #fca5a5}.site-card{border:1px solid var(--color-border);border-radius:var(--radius-lg);overflow:hidden}.site-card-header{padding:var(--space-3) var(--space-4);background:var(--color-surface-raised);cursor:pointer;-webkit-user-select:none;user-select:none;justify-content:space-between;align-items:center;display:flex}.site-card-title{align-items:center;gap:var(--space-3);font-weight:600;font-size:var(--font-size-sm);display:flex}.site-card-body{padding:var(--space-4)}@media (max-width:1024px){.form-row,.form-row-3,.detail-grid{grid-template-columns:1fr}}
