*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;-webkit-text-size-adjust:100%}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,sans-serif;background:var(--bg-base);color:var(--text-primary);line-height:1.5;min-height:100vh}button{font-family:inherit;cursor:pointer;border:none;background:none}input,select,textarea{font-family:inherit}a{text-decoration:none;color:inherit}img{max-width:100%;display:block}:root{--bg-base: #f1f5f9;--bg-card: #ffffff;--bg-sidebar: #1e293b;--bg-sidebar-hover: #334155;--bg-sidebar-active: #2563eb;--text-primary: #1e293b;--text-secondary: #64748b;--text-muted: #94a3b8;--text-sidebar: #94a3b8;--text-sidebar-active: #ffffff;--border: #e2e8f0;--border-focus: #2563eb;--primary: #2563eb;--primary-dark: #1d4ed8;--primary-light: #dbeafe;--success: #059669;--success-bg: #d1fae5;--success-text: #065f46;--danger: #dc2626;--danger-bg: #fee2e2;--danger-text: #7f1d1d;--warning: #d97706;--warning-bg: #fef3c7;--warning-text: #78350f;--info: #0284c7;--info-bg: #e0f2fe;--info-text: #0c4a6e;--neutral-bg: #f1f5f9;--neutral-text: #475569;--shadow-sm: 0 1px 2px rgba(0,0,0,.05);--shadow: 0 1px 3px rgba(0,0,0,.1), 0 1px 2px rgba(0,0,0,.06);--shadow-md: 0 4px 6px rgba(0,0,0,.07), 0 2px 4px rgba(0,0,0,.06);--shadow-lg: 0 10px 15px rgba(0,0,0,.1), 0 4px 6px rgba(0,0,0,.05);--radius-sm: 4px;--radius: 8px;--radius-md: 10px;--radius-lg: 12px;--sidebar-width: 260px;--header-height: 60px;--transition: .2s ease}.app-layout{display:flex;min-height:100vh}.sidebar{position:fixed;top:0;left:0;height:100vh;width:var(--sidebar-width);background:var(--bg-sidebar);display:flex;flex-direction:column;z-index:100;transition:transform var(--transition)}.sidebar-overlay{display:none;position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;z-index:99}.sidebar-header{display:flex;align-items:center;justify-content:space-between;padding:20px 16px 16px;border-bottom:1px solid rgba(255,255,255,.08)}.sidebar-brand{display:flex;align-items:center;gap:10px}.sidebar-brand-icon{width:36px;height:36px;background:var(--primary);border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center;font-weight:700;font-size:13px;color:#fff;flex-shrink:0}.sidebar-brand-text{font-size:14px;font-weight:600;color:#fff;line-height:1.3}.sidebar-close-btn{color:var(--text-sidebar);padding:4px;border-radius:var(--radius-sm);display:none;transition:color var(--transition)}.sidebar-close-btn:hover{color:#fff}.sidebar-nav{flex:1;padding:12px 8px;display:flex;flex-direction:column;gap:2px;overflow-y:auto}.sidebar-link{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:var(--radius-sm);color:var(--text-sidebar);font-size:14px;font-weight:500;transition:background var(--transition),color var(--transition)}.sidebar-link:hover{background:var(--bg-sidebar-hover);color:#fff}.sidebar-link-active{background:var(--bg-sidebar-active)!important;color:#fff!important}.sidebar-footer{padding:12px 16px;border-top:1px solid rgba(255,255,255,.08)}.sidebar-version{font-size:12px;color:var(--text-muted)}.main-wrapper{flex:1;margin-left:var(--sidebar-width);display:flex;flex-direction:column;min-height:100vh}.header{position:sticky;top:0;z-index:50;height:var(--header-height);background:var(--bg-card);border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;padding:0 24px;box-shadow:var(--shadow-sm)}.header-left{display:flex;align-items:center;gap:12px}.header-menu-btn{display:none;align-items:center;justify-content:center;width:36px;height:36px;border-radius:var(--radius-sm);color:var(--text-secondary);transition:background var(--transition)}.header-menu-btn:hover{background:var(--bg-base);color:var(--text-primary)}.header-title{font-size:18px;font-weight:600;color:var(--text-primary)}.header-right{display:flex;align-items:center;gap:8px}.header-user{width:36px;height:36px;background:var(--primary-light);border-radius:50%;display:flex;align-items:center;justify-content:center;color:var(--primary)}.header-logout{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:var(--radius-sm);color:var(--text-secondary);transition:background var(--transition),color var(--transition)}.header-logout:hover{background:var(--danger-bg);color:var(--danger)}.main-content{flex:1;padding:24px}.loading-fullscreen{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:var(--bg-base)}.loading-inline{display:flex;align-items:center;justify-content:center;padding:40px}.loading-spinner{border:3px solid var(--border);border-top-color:var(--primary);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.card{background:var(--bg-card);border-radius:var(--radius-lg);border:1px solid var(--border);box-shadow:var(--shadow-sm)}.card-header{display:flex;align-items:center;justify-content:space-between;padding:20px 24px 0}.card-title{font-size:16px;font-weight:600;color:var(--text-primary)}.card-body{padding:20px 24px}.kpi-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:16px;margin-bottom:24px}.kpi-card{background:var(--bg-card);border-radius:var(--radius-lg);border:1px solid var(--border);padding:20px;box-shadow:var(--shadow-sm);display:flex;flex-direction:column;gap:8px}.kpi-label{font-size:13px;color:var(--text-secondary);font-weight:500}.kpi-value{font-size:28px;font-weight:700;color:var(--text-primary);line-height:1.2}.kpi-value.kpi-success{color:var(--success)}.kpi-value.kpi-danger{color:var(--danger)}.kpi-value.kpi-primary{color:var(--primary)}.kpi-icon{width:44px;height:44px;border-radius:var(--radius);display:flex;align-items:center;justify-content:center;margin-bottom:4px}.kpi-icon-primary{background:var(--primary-light);color:var(--primary)}.kpi-icon-success{background:var(--success-bg);color:var(--success)}.kpi-icon-danger{background:var(--danger-bg);color:var(--danger)}.kpi-icon-warning{background:var(--warning-bg);color:var(--warning)}.table-wrapper{overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:14px}thead th{text-align:left;padding:10px 16px;font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--text-secondary);background:var(--bg-base);border-bottom:1px solid var(--border);white-space:nowrap}tbody tr{border-bottom:1px solid var(--border);transition:background var(--transition)}tbody tr:last-child{border-bottom:none}tbody tr:hover{background:#f8fafc}tbody td{padding:12px 16px;color:var(--text-primary);vertical-align:middle}.td-secondary{color:var(--text-secondary);font-size:13px}.badge{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;border-radius:99px;font-size:12px;font-weight:600;white-space:nowrap}.badge-success{background:var(--success-bg);color:var(--success-text)}.badge-danger{background:var(--danger-bg);color:var(--danger-text)}.badge-info{background:var(--info-bg);color:var(--info-text)}.badge-neutral{background:var(--neutral-bg);color:var(--neutral-text)}.badge-primary{background:var(--primary-light);color:var(--primary)}.btn{display:inline-flex;align-items:center;gap:6px;padding:8px 16px;border-radius:var(--radius);font-size:14px;font-weight:600;transition:all var(--transition);white-space:nowrap}.btn-primary{background:var(--primary);color:#fff}.btn-primary:hover{background:var(--primary-dark)}.btn-secondary{background:var(--bg-base);color:var(--text-primary);border:1px solid var(--border)}.btn-secondary:hover{background:var(--border)}.btn-danger{background:var(--danger);color:#fff}.btn-danger:hover{background:#b91c1c}.btn-ghost{color:var(--text-secondary);padding:6px 10px}.btn-ghost:hover{background:var(--bg-base);color:var(--text-primary)}.btn-sm{padding:5px 12px;font-size:13px}.btn-icon{padding:7px;border-radius:var(--radius-sm)}.btn:disabled{opacity:.6;cursor:not-allowed}.form-group{display:flex;flex-direction:column;gap:6px;margin-bottom:16px}.form-label{font-size:13px;font-weight:600;color:var(--text-primary)}.form-input,.form-select,.form-textarea{width:100%;padding:9px 12px;border:1px solid var(--border);border-radius:var(--radius);font-size:14px;color:var(--text-primary);background:var(--bg-card);transition:border-color var(--transition),box-shadow var(--transition);outline:none}.form-input:focus,.form-select:focus,.form-textarea:focus{border-color:var(--border-focus);box-shadow:0 0 0 3px #2563eb1a}.form-textarea{resize:vertical;min-height:80px}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:16px}.form-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:8px;padding-top:16px;border-top:1px solid var(--border)}.form-error{font-size:12px;color:var(--danger)}.alert{padding:12px 16px;border-radius:var(--radius);font-size:14px;margin-bottom:16px}.alert-danger{background:var(--danger-bg);color:var(--danger-text);border:1px solid #fca5a5}.alert-success{background:var(--success-bg);color:var(--success-text);border:1px solid #6ee7b7}.page-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:24px;flex-wrap:wrap;gap:12px}.page-header-title{font-size:20px;font-weight:700;color:var(--text-primary)}.page-header-subtitle{font-size:14px;color:var(--text-secondary);margin-top:2px}.filter-bar{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:20px;align-items:flex-end}.filter-bar .form-input,.filter-bar .form-select{max-width:220px}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:200;padding:16px}.modal{background:var(--bg-card);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);width:100%;max-height:90vh;display:flex;flex-direction:column;animation:fadeInScale .15s ease}.modal-sm{max-width:400px}.modal-md{max-width:560px}.modal-lg{max-width:720px}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:20px 24px 16px;border-bottom:1px solid var(--border)}.modal-title{font-size:16px;font-weight:700;color:var(--text-primary)}.modal-close{color:var(--text-muted);padding:4px;border-radius:var(--radius-sm);transition:color var(--transition),background var(--transition)}.modal-close:hover{background:var(--bg-base);color:var(--text-primary)}.modal-body{padding:20px 24px 24px;overflow-y:auto}@keyframes fadeInScale{0%{opacity:0;transform:scale(.97)}to{opacity:1;transform:scale(1)}}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#1e293b,#0f172a);padding:16px}.login-card{background:var(--bg-card);border-radius:var(--radius-lg);padding:40px;width:100%;max-width:400px;box-shadow:var(--shadow-lg)}.login-logo{text-align:center;margin-bottom:28px}.login-logo-icon{width:60px;height:60px;background:var(--primary);border-radius:var(--radius-md);display:inline-flex;align-items:center;justify-content:center;font-size:22px;font-weight:800;color:#fff;margin-bottom:12px}.login-logo-title{font-size:20px;font-weight:700;color:var(--text-primary)}.login-logo-subtitle{font-size:13px;color:var(--text-secondary);margin-top:4px}.login-form .form-group{margin-bottom:18px}.input-password-wrap{position:relative;display:flex;align-items:center}.input-password-wrap .form-input{width:100%;padding-right:42px}.input-password-eye{position:absolute;right:10px;display:flex;align-items:center;justify-content:center;color:var(--text-muted);padding:4px;border-radius:var(--radius-sm);transition:color var(--transition)}.input-password-eye:hover{color:var(--primary)}.campanha-progress{margin-bottom:16px;background:var(--neutral-bg);border-radius:var(--radius-md);padding:12px 16px}.campanha-progress-info{display:flex;align-items:center;gap:8px;font-size:14px;color:var(--text-secondary);margin-bottom:8px}.campanha-progress-bar{height:8px;background:var(--border);border-radius:99px;overflow:hidden}.campanha-progress-fill{height:100%;background:var(--success);border-radius:99px;transition:width .4s ease}.alert-info{background:var(--info-bg);color:var(--info-text);border:1px solid #bae6fd;border-radius:var(--radius-md);padding:10px 14px;margin-bottom:16px}.badge-warning{background:var(--warning-bg);color:var(--warning-text)}.login-btn{width:100%;justify-content:center;padding:11px;font-size:15px;margin-top:8px}.variacao-positive{color:var(--success);font-weight:600}.variacao-negative{color:var(--danger);font-weight:600}.variacao-neutral{color:var(--text-muted)}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 24px;color:var(--text-muted);text-align:center;gap:8px}.empty-state-title{font-size:15px;font-weight:600;color:var(--text-secondary)}.empty-state-text{font-size:13px}.toast-container{position:fixed;bottom:24px;right:24px;z-index:300;display:flex;flex-direction:column;gap:8px}.toast{background:var(--text-primary);color:#fff;padding:12px 20px;border-radius:var(--radius);font-size:14px;box-shadow:var(--shadow-lg);animation:slideInRight .2s ease;min-width:240px;max-width:360px}.toast-success{background:var(--success)}.toast-danger{background:var(--danger)}@keyframes slideInRight{0%{transform:translate(110%);opacity:0}to{transform:translate(0);opacity:1}}.status-aberta{background:var(--info-bg);color:var(--info-text)}.status-em_andamento{background:var(--warning-bg);color:var(--warning-text)}.status-concluida{background:var(--success-bg);color:var(--success-text)}.status-cancelada{background:var(--neutral-bg);color:var(--neutral-text)}.dashboard-charts{display:grid;grid-template-columns:1fr 340px;gap:16px;margin-bottom:16px}@media (max-width: 900px){.dashboard-charts{grid-template-columns:1fr}}@media (max-width: 768px){.sidebar{transform:translate(-100%)}.sidebar.sidebar-open{transform:translate(0);box-shadow:var(--shadow-lg)}.sidebar-overlay{display:block}.sidebar-close-btn{display:flex}.main-wrapper{margin-left:0}.header-menu-btn{display:flex}.main-content{padding:16px}.kpi-grid{grid-template-columns:repeat(2,1fr);gap:12px}.form-row{grid-template-columns:1fr}.page-header{flex-direction:column;align-items:flex-start}.filter-bar{flex-direction:column}.filter-bar .form-input,.filter-bar .form-select{max-width:100%}.modal{margin:0;border-radius:var(--radius-lg) var(--radius-lg) 0 0}.modal-overlay{align-items:flex-end;padding:0}thead th:nth-child(n+4),tbody td:nth-child(n+4){display:none}}@media (max-width: 480px){.kpi-grid{grid-template-columns:1fr}.login-card{padding:28px 20px}}
