@import"https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap";.app-layout{min-height:100vh;background-color:#f8fafc;display:flex;flex-direction:column}:root{--header-height: 60px;--primary-color: #1e40af;--primary-hover: #1d4ed8;--secondary-color: #7c3aed;--secondary-hover: #6d28d9;--background: #f8fafc;--surface: #ffffff;--text-primary: #1e293b;--text-secondary: #64748b;--border-color: #e2e8f0;--shadow-sm: 0 1px 2px 0 rgb(0 0 0 / .05);--shadow-md: 0 4px 6px -1px rgb(0 0 0 / .1);--radius: .75rem;--transition: all .2s ease}.app-header{background-color:var(--surface);border-bottom:1px solid var(--border-color);box-shadow:var(--shadow-sm);position:sticky;top:0;z-index:100;height:var(--header-height);overflow:visible;width:100%}.header-wrapper{padding:0 2rem;height:100%;display:flex;align-items:center;justify-content:space-between;width:100%}.brand-logo{width:48px;height:48px;object-fit:contain;display:block}.brand-info h1{font-size:1.5rem;font-weight:700;color:#1e293b;margin:0}.user-info{font-size:.875rem;color:var(--text-secondary);padding:.5rem 1rem;background-color:var(--background);border-radius:.5rem}.nav-link,.customize-button,.logout-button{display:flex;align-items:center;gap:.5rem;padding:.5rem 1rem;border-radius:.5rem;font-size:.875rem;font-weight:500;transition:var(--transition);text-decoration:none;border:none;background:none;cursor:pointer;white-space:nowrap}.nav-link{color:var(--text-secondary);position:relative}.nav-link.active{color:var(--primary-color);background-color:#eff6ff;font-weight:600}.nav-link:after{content:"";position:absolute;bottom:-1px;left:1rem;right:1rem;height:0;background-color:var(--primary-color);border-radius:3px 3px 0 0;transition:height .2s ease}.nav-link.active:after{height:3px}.nav-link.active svg{stroke-width:2.5}.customize-button{color:var(--secondary-color);background-color:#ede9fe}.customize-button:hover{background-color:#ddd6fe;transform:translateY(-1px);box-shadow:var(--shadow-md)}@media (max-width: 1024px){.header-wrapper{padding:0 1.5rem}}@media (max-width: 768px){.app-header{height:auto}.header-wrapper{padding:1rem;flex-direction:column;align-items:flex-start;gap:1rem}.header-brand{gap:.75rem}.brand-logo{width:40px;height:40px}.brand-info h1{font-size:1.25rem}.brand-subtitle{font-size:.75rem}.user-info{display:none}.header-nav{width:100%;justify-content:flex-end;flex-wrap:wrap}.nav-link,.customize-button,.logout-button{padding:.5rem .75rem;font-size:.813rem}}.nav-link:focus-visible,.customize-button:focus-visible,.logout-button:focus-visible{outline:2px solid var(--primary-color);outline-offset:2px}.loading-state{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100vh;background-color:#f8fafc}.loading-spinner-container{position:relative;width:64px;height:64px;margin-bottom:1.5rem}.loading-spinner{position:absolute;width:100%;height:100%;border:4px solid #e2e8f0;border-top-color:#1e40af;border-radius:50%;animation:spin 1s linear infinite}.loading-spinner:after{content:"";position:absolute;inset:8px;border:3px solid transparent;border-top-color:#7c3aed;border-radius:50%;animation:spin .75s linear infinite reverse}.loading-message{font-size:1.125rem;color:#64748b;font-weight:500;text-align:center}.error-state{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100vh;background-color:#f8fafc;padding:2rem;text-align:center}.error-icon{font-size:4rem;margin-bottom:1.5rem;animation:pulse 2s ease-in-out infinite}@keyframes pulse{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.05);opacity:.8}}.error-title{font-size:1.875rem;font-weight:700;color:#1e293b;margin:0 0 .75rem}.error-message{font-size:1.125rem;color:#64748b;margin:0 0 2rem;max-width:500px;line-height:1.6}.retry-button{display:inline-flex;align-items:center;gap:.5rem;padding:.75rem 1.5rem;background-color:#1e40af;color:#fff;border:none;border-radius:.5rem;font-size:1rem;font-weight:500;cursor:pointer;transition:all .2s ease}.retry-button:hover{background-color:#1d4ed8;transform:translateY(-1px);box-shadow:0 4px 6px -1px #0000001a}.retry-button:active{transform:translateY(0)}.modal-overlay{position:fixed;inset:0;background-color:#00000080;display:flex;align-items:center;justify-content:center;z-index:9999;padding:20px;animation:fadeIn .2s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.modal-content{background:#fff;border-radius:12px;max-width:800px;width:100%;max-height:90vh;overflow:hidden;box-shadow:0 20px 25px -5px #0000001a,0 10px 10px -5px #0000000a;display:flex;flex-direction:column;animation:slideUp .3s ease}.modal-content.modal-large{max-width:1200px}@keyframes slideUp{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:24px;border-bottom:1px solid #e5e7eb}.modal-header h2{margin:0;font-size:1.25rem;font-weight:600;color:#111827}.modal-close{background:none;border:none;padding:8px;cursor:pointer;color:#6b7280;transition:all .2s;border-radius:6px}.modal-close:hover{background:#f3f4f6;color:#111827}.modal-body{padding:24px;overflow-y:auto;flex:1}.modal-footer{display:flex;justify-content:flex-end;gap:12px;padding:24px;border-top:1px solid #e5e7eb}.modal-btn{padding:10px 20px;border:none;border-radius:6px;font-size:.875rem;font-weight:500;cursor:pointer;transition:all .2s}.modal-btn:disabled{opacity:.6;cursor:not-allowed}.modal-btn.cancel{background:#f3f4f6;color:#374151}.modal-btn.cancel:hover:not(:disabled){background:#e5e7eb}.modal-btn.confirm{background:#4f46e5;color:#fff}.modal-btn.confirm:hover:not(:disabled){background:#4338ca}.modal-btn.danger{background:#dc2626;color:#fff}.modal-btn.danger:hover:not(:disabled){background:#b91c1c}.modal-form{display:flex;flex-direction:column;gap:16px}.form-group{display:flex;flex-direction:column;gap:6px}.form-group label{font-size:.875rem;font-weight:500;color:#374151}.form-group input,.form-group select{padding:10px 12px;border:1px solid #d1d5db;border-radius:6px;font-size:.875rem;transition:all .2s}.form-group input:focus,.form-group select:focus{outline:none;border-color:#4f46e5;box-shadow:0 0 0 3px #4f46e51a}.form-group input:disabled,.form-group select:disabled{background:#f9fafb;color:#9ca3af;cursor:not-allowed}.form-error{color:#dc2626;font-size:.75rem;margin-top:4px}@media (max-width: 640px){.modal-content{max-width:100%}.modal-header,.modal-body,.modal-footer{padding:16px}}.stats-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:4px;margin:0;width:100%;height:100%;padding:0;align-content:center;grid-auto-rows:minmax(0,1fr)}.stat-card{background:#fff;border-radius:10px;padding:8px 10px;box-shadow:0 1px 3px #00000014;text-align:center;transition:all .3s ease;border:1px solid #e5e7eb;height:100%;min-height:45px;display:flex;flex-direction:column;justify-content:center;align-items:center;overflow:hidden}.stat-card:hover{transform:translateY(-2px);box-shadow:0 4px 12px #0000001a}.stat-card.clickable{cursor:pointer}.stat-card.clickable:hover{transform:translateY(-3px);box-shadow:0 6px 16px #0000001f}.stat-card.status-ok,.stat-card.status-error{border-color:#93c5fd;background:linear-gradient(to bottom,#fff,#eff6ff)}.stat-card.status-ok .stat-value,.stat-card.status-error .stat-value{color:#1e40af}.stat-card.status-ok:hover,.stat-card.status-error:hover{border-color:#60a5fa;background:linear-gradient(to bottom,#fff,#dbeafe);transform:translateY(-3px);box-shadow:0 6px 16px #3b82f626}.stat-value{font-size:1.25rem;font-weight:600;line-height:1;margin-bottom:3px;color:#1f2937}.stat-label{font-size:.65rem;color:#6b7280;font-weight:500;text-transform:uppercase;letter-spacing:.025em;line-height:1;max-width:100%;word-wrap:break-word}@media (max-width: 768px){.stats-grid{grid-template-columns:repeat(2,1fr);gap:16px}.stat-card{padding:20px 16px}.stat-value{font-size:2rem}}.agency-status-modal .modal-content{max-width:900px}.agency-status-content{display:flex;flex-direction:column;gap:16px}.agency-status-summary{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:0}.summary-card{display:flex;align-items:center;justify-content:center;gap:8px;padding:8px 12px;border-radius:4px;background:#f9fafb;border:1px solid #e5e7eb}.summary-card.active{background:#f0fdf4;border-color:#86efac}.summary-card.inactive{background:#fef2f2;border-color:#fca5a5}.summary-emoji{font-size:18px;line-height:1;display:inline-flex;align-items:center;justify-content:center;background:#fff;padding:8px;border-radius:4px;width:36px;height:36px}.summary-info{display:flex;align-items:center;gap:6px}.summary-value{font-size:14px;font-weight:600;color:#111827;line-height:1}.summary-label{font-size:12px;color:#6b7280;font-weight:500}.agency-status-table-container{max-height:800px;min-height:600px;overflow-y:auto;border:1px solid #e5e7eb;border-radius:8px}.agency-status-table{width:100%;border-collapse:collapse;font-size:.875rem}.agency-status-table thead{position:sticky;top:0;background:#f9fafb;z-index:10}.agency-status-table th{text-align:left;padding:12px 16px;font-weight:600;color:#374151;border-bottom:1px solid #e5e7eb}.agency-status-table td{padding:12px 16px;border-bottom:1px solid #f3f4f6}.agency-status-table tbody tr:last-child td{border-bottom:none}.agency-status-table tbody tr:hover{background:#f9fafb}.status-cell{display:flex;align-items:center;gap:8px}.status-indicator{font-size:16px}.status-text{font-weight:500;font-size:.813rem}.status-active .status-text{color:#10b981}.status-inactive .status-text{color:#ef4444}.agency-name-cell{font-weight:500;color:#1f2937}.last-activity-cell{color:#6b7280}.postes-cell{min-width:150px}.postes-indicators{display:flex;gap:8px;flex-wrap:wrap}.poste-badge{display:inline-flex;align-items:center;gap:4px;padding:4px 8px;border-radius:4px;font-size:.75rem;font-weight:500;background:#f3f4f6;color:#6b7280;cursor:help}.poste-badge.active{background:#d1fae5;color:#065f46}.poste-badge.inactive{background:#fee2e2;color:#991b1b}.no-postes{color:#9ca3af}.agency-status-footer{margin-top:8px;padding-top:16px;border-top:1px solid #e5e7eb;font-size:.875rem;color:#6b7280}.agency-status-footer p{margin:0;display:flex;align-items:center;gap:12px}.legend{display:flex;align-items:center;gap:16px;margin-left:auto}.legend-item{display:flex;align-items:center;gap:6px;font-size:.75rem}.legend-dot{width:8px;height:8px;border-radius:50%}.legend-dot.active{background:#10b981}.legend-dot.inactive{background:#ef4444}@media (max-width: 768px){.agency-status-modal .modal-content{max-width:95%}.agency-status-summary{grid-template-columns:1fr}.agency-status-table{font-size:.75rem}.agency-status-table th,.agency-status-table td{padding:8px 12px}.postes-cell{min-width:auto}.agency-status-footer p{flex-direction:column;align-items:flex-start;gap:8px}.legend{margin-left:0}}.main-chart{height:100%;display:flex;flex-direction:column}.chart-header{margin-bottom:24px}.chart-header h3{margin:0 0 16px;font-size:1.25rem;font-weight:600;color:#111827}.agency-labels{display:flex;flex-wrap:wrap;gap:12px}.agency-label{display:inline-flex;align-items:center;padding:6px 16px;background-color:#7c3aed;color:#fff;border-radius:20px;font-size:.875rem;font-weight:500;letter-spacing:.025em}.chart-container{flex:1;min-height:300px;position:relative}@media (max-width: 768px){.agency-selector{gap:8px}.agency-checkbox{font-size:.8125rem;padding:4px 8px}}.categories-pie-chart{height:100%;display:flex;flex-direction:column;width:100%;overflow:hidden}.categories-pie-chart .chart-header{margin-bottom:24px}.categories-pie-chart .chart-header h3{margin:0 0 12px;font-size:1.125rem;font-weight:600;color:#111827}.chart-controls{display:flex;gap:12px;align-items:center}.agency-select{flex:1;padding:8px 12px;border:1px solid #e5e7eb;border-radius:6px;font-size:.875rem;color:#374151;background:#fff;cursor:pointer;transition:all .2s}.agency-select:hover{border-color:#d1d5db}.agency-select:focus{outline:none;border-color:#4f46e5;box-shadow:0 0 0 3px #4f46e51a}.chart-type-toggle{display:flex;gap:4px;background:#f3f4f6;padding:4px;border-radius:6px}.toggle-btn{padding:6px 8px;border:none;background:transparent;border-radius:4px;cursor:pointer;transition:all .2s;color:#6b7280;display:flex;align-items:center;justify-content:center}.toggle-btn:hover{color:#374151}.toggle-btn.active{background:#fff;color:#4f46e5;box-shadow:0 1px 2px #0000000d}.toggle-btn svg{width:16px;height:16px}.categories-pie-chart .chart-container{flex:1;min-height:300px;max-height:400px;position:relative;display:flex;align-items:center;justify-content:center;width:100%;overflow:hidden;padding:20px}.categories-pie-chart canvas{max-width:100%!important;max-height:100%!important}.agency-performance{height:100%;display:flex;flex-direction:column}.agency-performance .chart-header{margin-bottom:24px}.agency-performance .chart-header h3{margin:0;font-size:1.125rem;font-weight:600;color:#111827}.agency-performance .chart-container{flex:1;min-height:250px;position:relative}.hourly-visits-modal{padding:20px 0}.modal-header-info{margin-bottom:20px;padding-bottom:15px;border-bottom:1px solid #e5e7eb}.modal-header-info p{margin:0;color:#6b7280;font-size:.875rem}.visits-list{max-height:400px;overflow-y:auto}.no-visits{text-align:center;padding:40px 20px;color:#9ca3af}.no-visits p{margin:0}.visits-table-modal{width:100%;border-collapse:collapse;font-size:.875rem}.visits-table-modal thead{position:sticky;top:0;background:#f9fafb;z-index:10}.visits-table-modal th{text-align:left;padding:12px 16px;font-weight:600;color:#374151;border-bottom:1px solid #e5e7eb}.visits-table-modal td{padding:12px 16px;border-bottom:1px solid #f3f4f6}.visits-table-modal tbody tr:hover{background:#f9fafb}.visits-table-modal tbody tr:last-child td{border-bottom:none}.visits-table-modal .phone-number{font-family:monospace;color:#6b7280}.visits-table-modal .category-badge{display:inline-block;padding:4px 12px;border-radius:9999px;font-size:.75rem;font-weight:500;line-height:1}.visits-timeline{height:100%;display:flex;flex-direction:column}.visits-timeline .chart-header{margin-bottom:24px}.visits-timeline .chart-header h3{margin:0 0 4px;font-size:1.125rem;font-weight:600;color:#111827}.visits-timeline .chart-header p{margin:0;font-size:.875rem;color:#6b7280}.visits-timeline .chart-container{flex:1;min-height:200px;position:relative}.visit-details-modal{padding:1rem}.visit-info-section{margin-bottom:2rem}.visit-info-section h3{margin:0 0 1rem;font-size:1rem;font-weight:600;color:#1f2937}.visit-info-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:2rem}.info-item label{font-size:.813rem;font-weight:600;color:#6b7280}.info-item span{font-size:.875rem;color:#1f2937}.info-item strong{font-family:Courier New,monospace}.conversation-section{margin-top:2rem;padding-top:2rem;border-top:2px solid #e5e7eb}.conversation-section h3{margin:0 0 1rem;font-size:1rem;font-weight:600;color:#1f2937}.conversation-container{max-height:400px;overflow-y:auto;padding-right:.5rem;display:flex;flex-direction:column;gap:1rem}.conversation-entry{padding:1rem;border-radius:8px;border:1px solid #e5e7eb}.conversation-entry.user{background-color:#eff6ff;border-color:#3b82f6;margin-right:2rem}.conversation-entry.avatar{background-color:#f0fdf4;border-color:#22c55e;margin-left:2rem}.entry-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}.entry-type{font-weight:600;font-size:.875rem;color:#374151}.entry-time{font-size:.75rem;color:#6b7280;font-family:Courier New,monospace}.entry-content{color:#1f2937;font-size:.875rem;line-height:1.5;white-space:pre-wrap;word-break:break-word}.entry-step{margin-top:.5rem;font-size:.75rem;color:#6b7280;font-style:italic}.no-conversation{text-align:center;padding:3rem 2rem;background-color:#f9fafb;border-radius:8px;color:#6b7280}.no-conversation p{margin:0;font-style:italic}.additional-data{margin-top:2rem;padding:1rem;background-color:#f9fafb;border-radius:8px}.additional-data summary{cursor:pointer;font-weight:600;color:#374151;font-size:.875rem}.additional-data pre{margin-top:1rem;padding:1rem;background-color:#fff;border:1px solid #e5e7eb;border-radius:4px;font-size:.75rem;overflow-x:auto}.conversation-container::-webkit-scrollbar{width:6px}.conversation-container::-webkit-scrollbar-track{background:#f1f1f1;border-radius:3px}.conversation-container::-webkit-scrollbar-thumb{background:#888;border-radius:3px}.conversation-container::-webkit-scrollbar-thumb:hover{background:#555}@media (max-width: 1200px){.visit-info-grid{grid-template-columns:repeat(2,1fr)}}@media (max-width: 768px){.conversation-entry.user{margin-right:0}.conversation-entry.avatar{margin-left:0}.visit-info-grid{grid-template-columns:1fr;gap:1rem}}.visits-table{height:100%;display:flex;flex-direction:column}.visits-table .table-header{margin-bottom:20px}.visits-table .table-header-content{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:16px}.category-filter-container{display:flex;gap:8px;align-items:center;background:#f9fafb;padding:4px;border-radius:8px;border:1px solid #e5e7eb}.filter-btn{padding:6px 14px;background:transparent;border:none;border-radius:6px;font-size:.813rem;font-weight:500;color:#6b7280;cursor:pointer;transition:all .2s ease;display:flex;align-items:center;gap:6px;white-space:nowrap}.filter-btn:hover{background:#fff;color:#374151;box-shadow:0 1px 2px #0000000d}.filter-btn.active{background:#fff;color:#111827;font-weight:600;box-shadow:0 1px 3px #0000001a;position:relative}.filter-btn.active:after{content:"✓";position:absolute;top:2px;right:4px;font-size:10px;font-weight:700}.filter-dot{width:8px;height:8px;border-radius:50%;display:inline-block}.filter-dot.danger{background:#ef4444}.filter-dot.success{background:#22c55e}.filter-dot.warning{background:#3b82f6}.filter-btn.filter-danger.active{color:#ef4444;background:#fef2f2;border:1px solid #fecaca}.filter-btn.filter-danger.active:after{color:#ef4444}.filter-btn.filter-success.active{color:#22c55e;background:#f0fdf4;border:1px solid #bbf7d0}.filter-btn.filter-success.active:after{color:#22c55e}.filter-btn.filter-warning.active{color:#3b82f6;background:#eff6ff;border:1px solid #bfdbfe}.filter-btn.filter-warning.active:after{color:#3b82f6}.filter-btn.filter-none.active{background:#fff;color:#6b7280;border:1px solid #d1d5db}.filter-btn.filter-none.active:after{color:#6b7280}.visits-table .table-header h3{margin:0 0 4px;font-size:1.125rem;font-weight:600;color:#111827}.visits-table .table-subtitle{margin:0;font-size:.875rem;color:#6b7280;font-weight:500}.visits-table .table-container{flex:1;overflow:auto;border:1px solid #e5e7eb;border-radius:8px}.visits-table table{width:100%;border-collapse:collapse;font-size:.875rem;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;table-layout:fixed}.visits-table th:nth-child(1),.visits-table td:nth-child(1){width:14%}.visits-table th:nth-child(2),.visits-table td:nth-child(2){width:17%}.visits-table th:nth-child(3),.visits-table td:nth-child(3){width:14%}.visits-table th:nth-child(4),.visits-table td:nth-child(4){width:25%}.visits-table th:nth-child(5),.visits-table td:nth-child(5){width:10%;text-align:center}.visits-table td:nth-child(5){text-align:center}.visits-table th:nth-child(6),.visits-table td:nth-child(6){width:10%}.visits-table th:nth-child(7),.visits-table td:nth-child(7){width:10%}.visits-table thead{position:sticky;top:0;background:#f9fafb;z-index:10}.visits-table th{text-align:left;padding:12px 8px;font-weight:600;font-family:inherit;color:#374151;border-bottom:1px solid #e5e7eb;white-space:nowrap}.visits-table td{padding:12px 8px;font-family:inherit;font-size:.875rem;color:#1f2937;border-bottom:1px solid #f3f4f6}.visits-table tbody tr{transition:background-color .2s ease}.visits-table tbody tr:hover{background:#f9fafb}.visits-table tbody tr.status-row-success{background:#22c55e0d;border-left:4px solid #22c55e}.visits-table tbody tr.status-row-success:hover{background:#22c55e26}.visits-table tbody tr.status-row-warning{background:#3b82f60d;border-left:4px solid #3b82f6}.visits-table tbody tr.status-row-warning:hover{background:#3b82f626}.visits-table tbody tr.status-row-danger{background:#ef44440d;border-left:4px solid #ef4444}.visits-table tbody tr.status-row-danger:hover{background:#ef444426}.visits-table tbody tr.status-row-success td:first-child,.visits-table tbody tr.status-row-warning td:first-child,.visits-table tbody tr.status-row-danger td:first-child{padding-left:16px}.visits-table tbody tr:last-child td{border-bottom:none}.visits-table .empty-message{text-align:center;color:#9ca3af;padding:48px 16px}.visits-table .phone-number{font-family:Courier New,Courier,monospace;font-size:.875rem;color:#1f2937}.visits-table .category-badge{display:inline-block;padding:4px 12px;border-radius:9999px;font-size:.75rem;font-weight:500;font-family:inherit;line-height:1}.category-badge.category-immobilier{background:#dbeafe;color:#1e40af}.category-badge.category-automobile{background:#fce7f3;color:#be185d}.category-badge.category-renovation{background:#d1fae5;color:#065f46}.category-badge.category-demenagement{background:#fed7aa;color:#c2410c}.category-badge.category-vacances{background:#e9d5ff;color:#7c3aed}.category-badge.category-outillage{background:#fef3c7;color:#b45309}.category-badge.category-autres{background:#f3f4f6;color:#6b7280}.visits-table .view-logs-btn{padding:6px 14px;background:#3b82f6;color:#fff;border:none;border-radius:6px;font-size:.813rem;font-family:inherit;font-weight:500;cursor:pointer;transition:all .2s ease}.visits-table .view-logs-btn:hover{background:#2563eb;transform:translateY(-1px);box-shadow:0 2px 4px #0000001a}.visits-table .view-logs-btn:active{transform:translateY(0);box-shadow:none}.status-column{text-align:center}.status-cell{text-align:center;padding:8px}.status-selector{display:inline-flex;gap:6px;align-items:center}.status-btn{width:28px;height:28px;border:2px solid transparent;border-radius:50%;background:transparent;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s ease;position:relative}.status-btn:hover{transform:scale(1.1)}.status-btn.active{border-color:currentColor;background:#0000000d}.status-btn.active:after{content:"";position:absolute;inset:-4px;border:1px solid currentColor;border-radius:50%;opacity:.3}.status-btn .status-dot{width:14px;height:14px;border-radius:50%;pointer-events:none}.status-btn.status-success{color:#22c55e}.status-btn.status-success .status-dot{background:#22c55e}.status-btn.status-success.active{background:#22c55e1a}.status-btn.status-info{color:#3b82f6}.status-btn.status-info .status-dot{background:#3b82f6}.status-btn.status-info.active{background:#3b82f61a}.status-btn.status-danger{color:#ef4444}.status-btn.status-danger .status-dot{background:#ef4444}.status-btn.status-danger.active{background:#ef44441a}.status-btn.status-none{color:#9ca3af}.status-none-icon{font-size:18px;font-weight:700;line-height:1}.status-btn.status-none.active{background:#9ca3af1a;border-color:#9ca3af}.actions-column,.actions-cell{text-align:center}.delete-btn{background:transparent;border:none;cursor:pointer;padding:4px 8px;display:inline-flex;align-items:center;gap:4px;transition:all .2s ease;position:relative;color:#ef4444;font-size:14px}.delete-icon{font-size:18px;font-weight:700;color:#ef4444;display:inline-block;transition:transform .2s ease}.delete-text{display:none;font-size:13px;font-weight:500;color:#ef4444}.delete-btn:hover .delete-text{display:inline}.delete-btn:hover .delete-icon{transform:scale(1.2)}.delete-btn:hover{transform:translate(-2px)}.delete-btn:active{transform:scale(.95)}.delete-btn:disabled{opacity:.5;cursor:not-allowed}.delete-btn:disabled:hover{transform:none}.visits-table tbody tr.deleting{opacity:.5;background:#fef2f2;animation:fadeOut .5s ease-out}@keyframes fadeOut{0%{opacity:1;transform:translate(0)}to{opacity:.5;transform:translate(-10px)}}.visits-table tbody tr:hover .status-indicator{transform:scale(1.1)}@media (max-width: 768px){.table-header-content{flex-direction:column;align-items:flex-start}.category-filter-container{width:100%;overflow-x:auto;padding:4px}.filter-btn{padding:4px 10px;font-size:.75rem}.filter-dot{width:6px;height:6px}.visits-table table{font-size:.75rem}.visits-table th,.visits-table td{padding:8px 12px}.visits-table .category-badge{font-size:.625rem;padding:3px 8px}.status-selector{gap:4px}.status-btn{width:24px;height:24px}.status-btn .status-dot{width:10px;height:10px}.status-none-icon{font-size:14px}.delete-btn{padding:2px 4px;font-size:12px}.delete-icon{font-size:16px}.delete-text{font-size:11px}}.react-grid-layout{position:relative;transition:height .2s ease}.react-grid-item{transition:all .2s ease;transition-property:left,top,width,height}.react-grid-item img{pointer-events:none;-webkit-user-select:none;user-select:none}.react-grid-item.resizing{transition:none;z-index:1;will-change:width,height}.react-grid-item.react-draggable-dragging{transition:none;z-index:3;will-change:transform}.react-grid-item.react-grid-placeholder{background:red;opacity:.2;transition-duration:.1s;z-index:2;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.react-grid-item.react-grid-placeholder.placeholder-resizing{transition:none}.react-grid-item>.react-resizable-handle{position:absolute;width:20px;height:20px}.react-grid-item>.react-resizable-handle:after{content:"";position:absolute;right:3px;bottom:3px;width:5px;height:5px;border-right:2px solid rgba(0,0,0,.4);border-bottom:2px solid rgba(0,0,0,.4)}.react-resizable-hide>.react-resizable-handle{display:none}.react-grid-item>.react-resizable-handle.react-resizable-handle-sw{bottom:0;left:0;cursor:sw-resize;transform:rotate(90deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-se{bottom:0;right:0;cursor:se-resize}.react-grid-item>.react-resizable-handle.react-resizable-handle-nw{top:0;left:0;cursor:nw-resize;transform:rotate(180deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-ne{top:0;right:0;cursor:ne-resize;transform:rotate(270deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-w,.react-grid-item>.react-resizable-handle.react-resizable-handle-e{top:50%;margin-top:-10px;cursor:ew-resize}.react-grid-item>.react-resizable-handle.react-resizable-handle-w{left:0;transform:rotate(135deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-e{right:0;transform:rotate(315deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-n,.react-grid-item>.react-resizable-handle.react-resizable-handle-s{left:50%;margin-left:-10px;cursor:ns-resize}.react-grid-item>.react-resizable-handle.react-resizable-handle-n{top:0;transform:rotate(225deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-s{bottom:0;transform:rotate(45deg)}.react-resizable{position:relative}.react-resizable-handle{position:absolute;width:20px;height:20px;background-repeat:no-repeat;background-origin:content-box;box-sizing:border-box;background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2IDYiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmYwMCIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSI2cHgiIGhlaWdodD0iNnB4Ij48ZyBvcGFjaXR5PSIwLjMwMiI+PHBhdGggZD0iTSA2IDYgTCAwIDYgTCAwIDQuMiBMIDQgNC4yIEwgNC4yIDQuMiBMIDQuMiAwIEwgNiAwIEwgNiA2IEwgNiA2IFoiIGZpbGw9IiMwMDAwMDAiLz48L2c+PC9zdmc+);background-position:bottom right;padding:0 3px 3px 0}.react-resizable-handle-sw{bottom:0;left:0;cursor:sw-resize;transform:rotate(90deg)}.react-resizable-handle-se{bottom:0;right:0;cursor:se-resize}.react-resizable-handle-nw{top:0;left:0;cursor:nw-resize;transform:rotate(180deg)}.react-resizable-handle-ne{top:0;right:0;cursor:ne-resize;transform:rotate(270deg)}.react-resizable-handle-w,.react-resizable-handle-e{top:50%;margin-top:-10px;cursor:ew-resize}.react-resizable-handle-w{left:0;transform:rotate(135deg)}.react-resizable-handle-e{right:0;transform:rotate(315deg)}.react-resizable-handle-n,.react-resizable-handle-s{left:50%;margin-left:-10px;cursor:ns-resize}.react-resizable-handle-n{top:0;transform:rotate(225deg)}.react-resizable-handle-s{bottom:0;transform:rotate(45deg)}.dashboard-grid-container{padding:12px;background:#f7f8fa;min-height:calc(100vh - 60px);width:100%;box-sizing:border-box;overflow-x:hidden;overflow-y:auto}.filter-section{margin-bottom:12px}.edit-mode-container{margin-bottom:24px}.edit-mode-banner{background:#4f46e5;color:#fff;padding:16px 24px;border-radius:12px;margin-bottom:16px;display:flex;justify-content:space-between;align-items:center;box-shadow:0 2px 8px #4f46e54d}.widget-selector-panel{background:#fff;border-radius:12px;padding:20px;box-shadow:0 1px 3px #00000014;border:1px solid #e5e7eb}.widget-selector-panel h3{margin:0 0 8px;font-size:1.125rem;font-weight:600;color:#111827}.widget-selector-hint{margin:0 0 16px;font-size:.875rem;color:#6b7280}.widget-selector-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:12px}.widget-selector-item{display:flex;align-items:center;gap:12px;padding:12px 16px;background:#f9fafb;border:2px solid #e5e7eb;border-radius:8px;cursor:pointer;transition:all .2s;-webkit-user-select:none;user-select:none;position:relative;overflow:hidden}.widget-selector-item:after{content:"Position par défaut";position:absolute;right:-80px;top:50%;transform:translateY(-50%);background:#4f46e5;color:#fff;padding:2px 8px;border-radius:4px;font-size:11px;font-weight:500;opacity:0;transition:all .3s;pointer-events:none}.widget-selector-item.hidden:hover:after{right:12px;opacity:1}.widget-selector-item:hover{background:#f3f4f6;border-color:#9ca3af}.widget-selector-item.visible{background:#eff6ff;border-color:#4f46e5}.widget-selector-item.visible:hover{background:#dbeafe;border-color:#4f46e5}.widget-selector-item.hidden{opacity:.7}.widget-selector-status{font-size:1.25rem;color:#4f46e5;font-weight:600;width:24px;text-align:center}.widget-selector-item.hidden .widget-selector-status{color:#9ca3af}.widget-selector-title{flex:1;font-size:.875rem;font-weight:500;color:#111827}.dashboard-grid-container.edit-mode{position:relative}.dashboard-grid-container.edit-mode:before{content:"";position:absolute;inset:0;background-image:linear-gradient(rgba(79,70,229,.03) 1px,transparent 1px),linear-gradient(90deg,rgba(79,70,229,.03) 1px,transparent 1px);background-size:15px 15px;pointer-events:none;z-index:0}.edit-mode-banner p{margin:0;font-weight:500}.edit-actions{display:flex;gap:12px;align-items:center}.magnetic-toggle{display:flex;align-items:center;gap:8px;padding:6px 12px;background:#ffffff1a;border-radius:6px;cursor:pointer;-webkit-user-select:none;user-select:none;margin-right:auto}.magnetic-toggle:hover{background:#fff3}.magnetic-toggle input[type=checkbox]{width:18px;height:18px;cursor:pointer}.magnetic-toggle span{font-size:.875rem;font-weight:500;color:#fff}.edit-actions button{padding:8px 20px;border:none;border-radius:6px;font-size:.875rem;font-weight:500;cursor:pointer;transition:all .2s}.save-btn{background:#fff;color:#4f46e5}.save-btn:hover{background:#f3f4f6}.reset-btn{background:#fff3;color:#fff;border:1px solid rgba(255,255,255,.3)}.reset-btn:hover{background:#ffffff4d}.cancel-btn{background:#dc2626;color:#fff}.cancel-btn:hover{background:#b91c1c}.dashboard-loading{display:flex;justify-content:center;align-items:center;height:60vh;font-size:1.125rem;color:#6b7280}.dashboard-grid{margin-top:0}.widget-container{background:#fff;border-radius:12px;box-shadow:0 1px 3px #00000014;overflow:hidden;height:100%;display:flex;flex-direction:column;transition:all .3s ease;border:1px solid #e5e7eb}.widget-container:hover{box-shadow:0 4px 12px #0000001a;border-color:#d1d5db}.widget-header{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;border-bottom:1px solid #f3f4f6;background:#fafbfc;transition:background .2s}.dashboard-grid-container.edit-mode .widget-header{cursor:move;position:relative}.dashboard-grid-container.edit-mode .widget-header:hover{background:#f3f4f6}.dashboard-grid-container.edit-mode .widget-header:before{content:"⋮⋮";position:absolute;left:8px;top:50%;transform:translateY(-50%);color:#9ca3af;font-size:12px;opacity:0;transition:opacity .2s}.dashboard-grid-container.edit-mode .widget-header:hover:before{opacity:1}.widget-header h3{margin:0;font-size:1.125rem;font-weight:600;color:#111827}.widget-close{background:none;border:none;font-size:1.5rem;color:#9ca3af;cursor:pointer;padding:0;width:28px;height:28px;display:flex;align-items:center;justify-content:center;transition:all .2s;border-radius:6px}.widget-close:hover{color:#ef4444;background:#fee2e2}.widget-content{flex:1;padding:16px;overflow:hidden;display:flex;flex-direction:column}.react-grid-item{transition:all .1s ease-out;transition-property:left,top,width,height}.react-grid-item.widget-re-enabled{animation:widget-restore .5s ease-out}@keyframes widget-restore{0%{opacity:0;transform:scale(.95)}50%{transform:scale(1.02)}to{opacity:1;transform:scale(1)}}.react-grid-item.cssTransforms{transition-property:transform,width,height}.react-grid-item.resizing{transition:none;z-index:1000;box-shadow:0 8px 16px #00000026;position:relative}.react-grid-item.resizing:after{content:attr(data-grid);position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background:#4f46e5e6;color:#fff;padding:4px 12px;border-radius:4px;font-size:12px;font-weight:600;pointer-events:none;z-index:1001;white-space:nowrap}.react-grid-item.dragging{transition:none!important;z-index:1000;cursor:move;opacity:.9;box-shadow:0 12px 24px #00000040;transform:scale(1.03)}.react-grid-item.dropping{visibility:hidden}.react-grid-item:not(.dragging){transition:all .12s ease-out}.react-grid-item.react-draggable-dragging .widget-container{border-color:#4f46e5;border-width:2px}.react-grid-item.react-draggable-dragging .widget-header{cursor:move}.react-grid-item>.react-resizable-handle{position:absolute;width:24px;height:24px;bottom:0;right:0;cursor:se-resize;opacity:0;transition:opacity .2s}.dashboard-grid-container.edit-mode .react-grid-item:hover>.react-resizable-handle{opacity:1}.react-grid-item>.react-resizable-handle:after{content:"⋮⋮";position:absolute;right:2px;bottom:2px;width:20px;height:20px;display:flex;align-items:center;justify-content:center;color:#9ca3af;font-size:10px;transform:rotate(45deg);background:#fff;border-radius:4px;box-shadow:0 1px 3px #0000001a}.react-grid-item:hover>.react-resizable-handle:after{color:#4f46e5;background:#eff6ff}.react-grid-placeholder{background:#4f46e5;opacity:.15;transition:all 80ms ease-out;z-index:2;border-radius:12px;border:2px dashed #4f46e5;animation:placeholder-pulse 1s infinite}@keyframes placeholder-pulse{0%,to{opacity:.15}50%{opacity:.25}}.widget-content>div{height:100%;width:100%}.widget-container .stats-grid{height:100%;width:100%;display:grid;grid-template-columns:repeat(3,1fr);gap:12px;align-items:stretch;padding:0;margin:0}.widget-container:has(.stats-grid) .widget-content{padding:6px}.widget-container:has(.stats-grid) .widget-header{padding:8px 12px;min-height:auto}.widget-container:has(.stats-grid) .widget-header h3{font-size:1rem}.widget-container canvas{max-height:100%!important}.widget-container .visits-table{height:100%;overflow:hidden}.widget-container .visits-table .table-container{max-height:calc(100% - 60px);overflow-y:auto}@media (max-width: 768px){.dashboard-grid-container{padding:10px}.widget-header{padding:10px 12px}.widget-content{padding:12px}}.dashboard-filters-card{background-color:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow-sm);border:1px solid var(--border-color);padding:1rem 1.25rem;flex:1}.filters-container{display:flex;align-items:center;gap:2rem;flex-wrap:wrap;justify-content:flex-end}.filter-section{display:flex;align-items:center;gap:.75rem}.filter-title{font-size:.875rem;font-weight:600;color:var(--text-secondary);margin:0;text-transform:uppercase;letter-spacing:.025em}.period-buttons{display:flex;gap:.5rem;flex-wrap:wrap}.period-btn{padding:.5rem 1rem;border:1px solid var(--border-color);background-color:var(--surface);color:var(--text-primary);border-radius:.5rem;font-size:.875rem;font-weight:500;cursor:pointer;transition:all .2s ease;white-space:nowrap}.period-btn:hover{background-color:var(--background);border-color:var(--primary-color);color:var(--primary-color)}.period-btn.active{background-color:var(--primary-color);color:#fff;border-color:var(--primary-color)}.period-btn.active:hover{background-color:var(--primary-hover);border-color:var(--primary-hover)}.filter-divider{width:1px;background-color:var(--border-color);align-self:stretch;margin:0 .5rem}.agency-dropdown{position:relative;min-width:240px}.agency-dropdown-button{width:100%;padding:.5rem 2.5rem .5rem 1rem;border:1px solid var(--border-color);border-radius:.5rem;font-size:.875rem;font-weight:500;background-color:var(--surface);color:var(--text-primary);cursor:pointer;transition:all .2s ease;display:flex;align-items:center;justify-content:space-between;text-align:left}.agency-dropdown-button:hover{border-color:var(--primary-color);background-color:var(--background)}.agency-dropdown-button:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 3px #1e40af1a}.dropdown-arrow{transition:transform .2s ease;margin-left:.5rem}.dropdown-arrow.open{transform:rotate(180deg)}.agency-dropdown-menu{position:absolute;top:calc(100% + 4px);left:0;right:0;background-color:var(--surface);border:1px solid var(--border-color);border-radius:.5rem;box-shadow:0 10px 25px -5px #0000001a,0 10px 10px -5px #0000000a;z-index:50;display:flex;flex-direction:column;max-height:320px}.dropdown-controls{padding:.75rem 1rem;border-bottom:1px solid var(--border-color);background-color:var(--background);position:sticky;top:0;z-index:1}.dropdown-control-btn{width:100%;padding:.5rem 1rem;background-color:var(--primary-color);color:#fff;border:none;border-radius:.375rem;font-size:.875rem;font-weight:500;cursor:pointer;transition:all .2s ease}.dropdown-control-btn:hover{background-color:var(--primary-hover)}.dropdown-control-btn:active{transform:scale(.98)}.dropdown-items-wrapper{flex:1;overflow-y:auto;padding:.5rem}.dropdown-items-wrapper::-webkit-scrollbar{width:6px}.dropdown-items-wrapper::-webkit-scrollbar-track{background:transparent}.dropdown-items-wrapper::-webkit-scrollbar-thumb{background-color:var(--border-color);border-radius:3px}.dropdown-items-wrapper::-webkit-scrollbar-thumb:hover{background-color:var(--text-secondary)}.dropdown-item{padding:.625rem .75rem;display:flex;align-items:center;gap:.75rem;cursor:pointer;transition:all .15s ease;border-radius:.375rem;margin-bottom:.25rem}.dropdown-item:hover{background-color:var(--background)}.dropdown-item:last-child{margin-bottom:0}.dropdown-divider{height:1px;background-color:var(--border-color);margin:.25rem 0}.agency-checkbox{width:18px;height:18px;cursor:pointer;flex-shrink:0;accent-color:var(--primary-color)}.agency-name{font-size:.875rem;color:var(--text-primary);-webkit-user-select:none;user-select:none}@media (max-width: 1024px){.filters-container{justify-content:flex-start}}@media (max-width: 768px){.dashboard-filters-card{padding:.75rem}.filters-container{flex-direction:column;align-items:stretch;gap:1rem}.filter-section{flex-direction:column;align-items:flex-start;width:100%}.filter-divider{display:none}.period-buttons{gap:.375rem}.period-btn{padding:.375rem .75rem;font-size:.813rem}.agency-select{width:100%;min-width:auto}}:root{--surface: #ffffff;--background: #f8fafc;--border-color: #e2e8f0;--text-primary: #1e293b;--text-secondary: #64748b;--primary-color: #1e40af;--primary-hover: #1d4ed8;--shadow-sm: 0 1px 2px 0 rgb(0 0 0 / .05);--radius: .75rem}.dashboard-container{min-height:100vh;background-color:#f8fafc;display:flex;flex-direction:column}.dashboard-content{flex:1;width:100%;padding:1rem}.dashboard-top-section{display:flex;gap:1rem;margin-bottom:1rem;align-items:stretch}.dashboard-title-card{background:#fff;border-radius:.75rem;padding:1rem 1.5rem;box-shadow:0 1px 3px #00000014;border:1px solid #e2e8f0;display:flex;flex-direction:column;justify-content:center;flex:0 0 auto;min-width:300px}.dashboard-title{font-size:1.5rem;font-weight:700;color:#1e293b;margin:0 0 .25rem}.dashboard-subtitle{font-size:.875rem;color:#64748b}@media (max-width: 1024px){.dashboard-content{padding:1rem}.dashboard-top-section{flex-direction:column}.dashboard-title-card{min-width:auto;width:100%}}@media (max-width: 768px){.dashboard-content{padding:.75rem}.dashboard-title{font-size:1.25rem}.dashboard-subtitle{font-size:.75rem}.dashboard-title-card{padding:.75rem 1rem}}.dashboard-content{animation:fadeInUp .5s ease}@keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.dashboard-container.customizing .dashboard-content{position:relative}.dashboard-container.customizing .dashboard-content:before{content:"";position:absolute;inset:-2px;background:linear-gradient(45deg,#7c3aed,#1e40af);border-radius:1rem;opacity:.1;pointer-events:none;animation:pulse 2s ease-in-out infinite}@keyframes pulse{0%,to{opacity:.1}50%{opacity:.2}}.alert-details-modal{padding:1rem}.alert-header-info{text-align:center;margin-bottom:2rem;padding-bottom:1.5rem;border-bottom:2px solid #e5e7eb}.alert-header-info h3{margin:0 0 .5rem;font-size:1.5rem;color:#1f2937}.agency-code-display{margin:.25rem 0;color:#6b7280;font-family:Courier New,monospace}.alerts-count{margin:.5rem 0 0;font-size:1.125rem;color:#ef4444;font-weight:600}.alerts-list-detailed{display:flex;flex-direction:column;gap:1.5rem;max-height:60vh;overflow-y:auto;padding-right:.5rem}.alert-detail-item{padding:1rem;border-radius:8px;border:1px solid #e5e7eb;background-color:#fafafa}.alert-detail-item.severity-high{border-color:#ef4444;background-color:#fef2f2}.alert-detail-item.severity-medium{border-color:#f59e0b;background-color:#fffbeb}.alert-detail-item.severity-low{border-color:#3b82f6;background-color:#eff6ff}.alert-detail-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.75rem}.alert-timestamp{font-size:.875rem;color:#6b7280}.severity-badge{padding:.25rem .75rem;border-radius:9999px;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em}.severity-badge.severity-high{background-color:#ef4444;color:#fff}.severity-badge.severity-medium{background-color:#f59e0b;color:#fff}.severity-badge.severity-low{background-color:#3b82f6;color:#fff}.alert-type,.alert-message,.alert-app-type{margin:.5rem 0;font-size:.875rem;color:#374151}.alert-details{margin-top:.75rem;font-size:.875rem;color:#374151}.details-content{margin-top:.5rem;padding:.75rem;background-color:#f3f4f6;border-radius:4px;font-size:.75rem;font-family:Courier New,monospace;overflow-x:auto;white-space:pre-wrap;word-break:break-word}.alerts-list-detailed::-webkit-scrollbar{width:6px}.alerts-list-detailed::-webkit-scrollbar-track{background:#f1f1f1;border-radius:3px}.alerts-list-detailed::-webkit-scrollbar-thumb{background:#888;border-radius:3px}.alerts-list-detailed::-webkit-scrollbar-thumb:hover{background:#555}.monitoring-grid{background:#fff;border-radius:12px;padding:1.5rem;box-shadow:0 1px 3px #0000001a}.monitoring-controls{display:flex;flex-wrap:wrap;gap:1rem;margin-bottom:1.5rem;align-items:center}.monitoring-search{flex:1;min-width:200px}.search-input{width:100%;padding:.5rem 1rem;border:1px solid #e2e8f0;border-radius:8px;font-size:.875rem;transition:all .2s}.monitoring-filters{display:flex;gap:.5rem}.monitoring-type-filters{display:flex;gap:.5rem;padding-left:1rem;border-left:1px solid #e5e7eb}.filter-btn{padding:.5rem 1rem;border:1px solid #e2e8f0;background:#fff;border-radius:8px;font-size:.875rem;cursor:pointer;transition:all .2s;white-space:nowrap}.filter-btn:hover{background:#f9fafb}.filter-btn.active{background:#3b82f6;color:#fff;border-color:#3b82f6}.filter-btn.status-ok.active{background:#22c55e;border-color:#22c55e}.filter-btn.status-warning.active{background:#f59e0b;border-color:#f59e0b}.filter-btn.status-error.active{background:#ef4444;border-color:#ef4444}.monitoring-update-time{color:#6b7280;font-size:.875rem;margin-left:auto}.monitoring-table-container{overflow-x:auto}.monitoring-table{width:100%;border-collapse:collapse}.monitoring-table th{text-align:left;padding:.75rem 1rem;font-weight:600;color:#374151;border-bottom:2px solid #e5e7eb;font-size:.875rem;background:#f9fafb;position:sticky;top:0}.monitoring-table td{padding:.75rem 1rem;border-bottom:1px solid #f3f4f6}.monitoring-table tr:hover{background-color:#f9fafb}.monitoring-table tr.status-error{background-color:#fef2f2}.monitoring-table tr.status-error:hover{background-color:#fee2e2}.monitoring-table tr.status-warning{background-color:#fffbeb}.monitoring-table tr.status-warning:hover{background-color:#fef3c7}.agency-code{font-family:Courier New,monospace;color:#1f2937}.agency-name{color:#6b7280}.status-cell .status-indicator{display:flex;align-items:center;gap:.5rem}.status-icon{font-size:1rem}.status-text{font-size:.875rem;font-weight:500}.connection-info,.check-info{display:flex;align-items:center;gap:.5rem}.connection-icon,.check-icon{font-size:.875rem}.connection-time,.check-time{font-size:.875rem;color:#6b7280}.alerts-cell{text-align:center}.alerts-badge{display:inline-flex;align-items:center;gap:.25rem;background:#ef4444;color:#fff;padding:.25rem .75rem;border-radius:9999px;font-size:.75rem;font-weight:600;transition:all .2s}.alerts-badge.clickable:hover{background:#dc2626;transform:scale(1.05)}.monitoring-table tr.has-alerts:hover{background-color:#fef2f2}.alerts-count{font-size:.875rem}.no-alerts{color:#d1d5db}.post-type-cell{font-weight:500}.post-type-indicator{display:flex;align-items:center;gap:.5rem}.post-type-icon{font-size:1.125rem}.post-type-label{font-size:.875rem;color:#6b7280}.monitoring-table tr.agency-group-start{border-top:3px solid #e5e7eb}.monitoring-table tr.agency-group-end{border-bottom:2px solid #e5e7eb}.monitoring-table tr.agency-row{background-color:#f3f4f6;font-weight:600}.monitoring-table tr.agency-row:hover{background-color:#e5e7eb}.monitoring-table tr.post-row{background-color:#fafbfc}.monitoring-table tr.post-row td{padding-left:2rem}.monitoring-table tr.post-row .agency-code{padding-left:3rem}.post-agency-code{color:#9ca3af;font-size:.8rem}.empty-state{text-align:center;padding:3rem 2rem;color:#9ca3af}.empty-state p{font-size:1.125rem;margin:0 0 .5rem}.empty-state span{font-size:.875rem}@media (max-width: 768px){.monitoring-controls{flex-direction:column;align-items:stretch}.monitoring-filters{flex-wrap:wrap}.monitoring-update-time{margin-left:0;text-align:center}.monitoring-table{font-size:.75rem}.monitoring-table th,.monitoring-table td{padding:.5rem}.agency-name{display:none}}.monitoring-dashboard{min-height:100vh;background-color:#f7f8fa}.monitoring-content{padding:2rem;max-width:1600px;margin:0 auto}.monitoring-header{margin-bottom:2rem}.monitoring-title{font-size:2rem;font-weight:600;color:#1a202c;margin:0 0 .5rem}.monitoring-subtitle{font-size:1rem;color:#718096}@media (max-width: 768px){.monitoring-content{padding:1rem}.monitoring-title{font-size:1.5rem}.monitoring-subtitle{font-size:.875rem}}:root{--primary-color: #1e40af;--primary-hover: #1d4ed8;--secondary-color: #7c3aed;--tertiary-color: #059669;--background: #f8fafc;--surface: #ffffff;--text-primary: #1e293b;--text-secondary: #64748b;--text-muted: #94a3b8;--border-color: #e2e8f0;--shadow-sm: 0 1px 2px 0 rgb(0 0 0 / .05);--shadow-md: 0 4px 6px -1px rgb(0 0 0 / .1);--shadow-lg: 0 10px 15px -3px rgb(0 0 0 / .1);--radius: .75rem;--transition: all .2s ease}.franchise-container{min-height:100vh;background-color:var(--background);display:flex;flex-direction:column}.franchise-loading,.franchise-error{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100vh;background-color:var(--background);color:var(--text-primary)}.loading-spinner{width:48px;height:48px;border:3px solid var(--border-color);border-top-color:var(--primary-color);border-radius:50%;animation:spin 1s linear infinite;margin-bottom:1rem}@keyframes spin{to{transform:rotate(360deg)}}.error-icon{font-size:48px;margin-bottom:1rem}.franchise-header{background-color:var(--surface);border-bottom:1px solid var(--border-color);box-shadow:var(--shadow-sm);position:sticky;top:0;z-index:100}.header-brand{display:flex;align-items:center;gap:1.5rem}.brand-logo{width:56px;height:56px;object-fit:contain;display:block}.brand-info h1{font-size:1.5rem;font-weight:700;color:var(--text-primary);margin:0}.brand-subtitle{font-size:.875rem;color:var(--text-secondary)}.header-nav{display:flex;align-items:center;gap:1rem}.nav-link,.logout-button{display:flex;align-items:center;gap:.5rem;padding:.5rem 1rem;border-radius:.5rem;font-size:.875rem;font-weight:500;transition:var(--transition);text-decoration:none;border:none;background:none;cursor:pointer}.nav-link{color:var(--text-secondary)}.nav-link:hover{color:var(--text-primary);background-color:var(--background)}.logout-button{color:#fff;background-color:var(--primary-color)}.logout-button:hover{background-color:var(--primary-hover);transform:translateY(-1px);box-shadow:var(--shadow-md)}.franchise-tabs{background-color:var(--surface);border-bottom:1px solid var(--border-color);position:sticky;top:81px;z-index:90}.tabs-wrapper{max-width:1400px;margin:0 auto;padding:0 2rem;display:flex;gap:2rem;overflow-x:auto}.tab-button{display:flex;align-items:center;gap:.5rem;padding:1rem 0;border:none;background:none;font-size:.875rem;font-weight:500;color:var(--text-secondary);cursor:pointer;position:relative;transition:var(--transition);white-space:nowrap}.tab-button:hover{color:var(--text-primary)}.tab-button.active{color:var(--primary-color)}.tab-button.active:after{content:"";position:absolute;bottom:0;left:0;right:0;height:3px;background-color:var(--primary-color);border-radius:3px 3px 0 0}.franchise-main{flex:1;max-width:1400px;margin:0 auto;padding:2rem;width:100%}.content-loading,.content-error{display:flex;align-items:center;justify-content:center;min-height:400px;color:var(--text-secondary)}.tab-content{animation:fadeIn .3s ease}.overview-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:1.5rem;margin-bottom:2rem}.stat-card{background-color:var(--surface);border-radius:var(--radius);padding:1.5rem;box-shadow:var(--shadow-sm);border:1px solid var(--border-color);display:flex;align-items:center;gap:1.5rem;transition:var(--transition)}.stat-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-md)}.stat-card.primary .stat-icon{background:linear-gradient(135deg,#dbeafe,#bfdbfe);color:var(--primary-color)}.stat-card.secondary .stat-icon{background:linear-gradient(135deg,#ede9fe,#ddd6fe);color:var(--secondary-color)}.stat-card.tertiary .stat-icon{background:linear-gradient(135deg,#d1fae5,#a7f3d0);color:var(--tertiary-color)}.stat-icon{width:64px;height:64px;border-radius:var(--radius);display:flex;align-items:center;justify-content:center;flex-shrink:0}.stat-content h3{font-size:.875rem;font-weight:500;color:var(--text-secondary);margin:0 0 .5rem}.stat-value{font-size:2rem;font-weight:700;color:var(--text-primary);margin:0;line-height:1}.stat-value.status-active{color:var(--tertiary-color)}.stat-label{font-size:.75rem;color:var(--text-muted)}.info-section{background:linear-gradient(135deg,#fef2f2,#fee2e2);border:1px solid #fca5a5;border-radius:1rem;padding:2.5rem;box-shadow:0 4px 6px -1px #00000012,0 2px 4px -1px #00000008;position:relative;overflow:hidden}.info-section:before{content:"";position:absolute;top:0;right:0;width:300px;height:300px;background:#dc26260d;border-radius:50%;transform:translate(100px,-100px)}.info-section:after{content:"";position:absolute;bottom:0;left:0;width:200px;height:200px;background:#dc262608;border-radius:50%;transform:translate(-50px,50px)}.franchise-info-header{display:flex;align-items:center;gap:2rem;position:relative;z-index:1}.franchise-icon{width:80px;height:80px;background:#fff;border:2px solid #fca5a5;border-radius:1rem;display:flex;align-items:center;justify-content:center;flex-shrink:0;box-shadow:0 4px 6px -1px #00000012}.franchise-icon svg{width:48px;height:48px;stroke:#dc2626;stroke-width:1.5}.franchise-title-section{flex:1}.franchise-name{font-size:2rem;font-weight:700;color:#1e293b!important;margin:0 0 .5rem}.franchise-subtitle{font-size:1rem;color:#64748b;margin:0;font-weight:500}.section-title{font-size:1.125rem;font-weight:600;color:var(--text-primary);margin:0 0 1.5rem}.info-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:1.5rem}.info-item{display:flex;flex-direction:column;gap:.25rem}.info-item label{font-size:.75rem;font-weight:500;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em}.info-item p{font-size:.875rem;color:var(--text-primary);margin:0}.monospace{font-family:Consolas,Monaco,monospace;font-size:.813rem;background-color:var(--background);padding:.25rem .5rem;border-radius:.25rem;display:inline-block}.agency-card{background-color:var(--surface);border-radius:var(--radius);padding:1.5rem;box-shadow:var(--shadow-sm);border:1px solid var(--border-color);transition:var(--transition)}.agency-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-md)}.agency-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1rem}.agency-header h3{font-size:1.125rem;font-weight:600;color:var(--text-primary);margin:0}.status-badge{font-size:.75rem;padding:.25rem .75rem;border-radius:9999px;font-weight:500}.status-badge.active{background-color:#d1fae5;color:#065f46}.status-badge.inactive{background-color:#fee2e2;color:#991b1b}.status-badge.multi-screen{background-color:#f0f9ff;color:#0369a1;border:1px solid #e0f2fe}.detail-row{display:flex;align-items:center;justify-content:space-between;font-size:.875rem}.detail-label{color:var(--text-secondary)}.detail-value{color:var(--text-primary);font-weight:500}.detail-link{color:var(--primary-color);text-decoration:none;font-weight:500;transition:var(--transition)}.detail-link:hover{color:var(--primary-hover);text-decoration:underline}.staff-section{background-color:var(--surface);border-radius:var(--radius);padding:2rem;box-shadow:var(--shadow-sm);border:1px solid var(--border-color)}.table-responsive{overflow-x:auto}.modern-table{width:100%;border-collapse:collapse}.modern-table thead{background-color:var(--background)}.modern-table th{padding:.75rem 1rem;text-align:left;font-size:.75rem;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em;border-bottom:2px solid var(--border-color)}.modern-table td{padding:1rem;border-bottom:1px solid var(--border-color)}.modern-table tbody tr{transition:var(--transition)}.modern-table tbody tr:hover{background-color:var(--background)}.staff-name{display:flex;align-items:center;gap:.75rem}.name-full{font-weight:500;color:var(--text-primary)}.agency-badge{display:inline-block;padding:.25rem .75rem;background-color:var(--background);color:var(--text-secondary);border-radius:.375rem;font-size:.875rem;font-weight:500}.contact-link{display:inline-flex;align-items:center;gap:.375rem;color:var(--text-secondary);text-decoration:none;font-size:.875rem;transition:var(--transition)}.contact-link:hover{color:var(--primary-color)}.contact-link svg{flex-shrink:0}.no-data{color:var(--text-muted);font-size:.875rem}.config-section{min-height:400px}.config-subsection{margin-bottom:3rem}.config-subsection:last-child{margin-bottom:0}.config-subsection .section-title{font-size:1.25rem;font-weight:600;color:var(--text-primary);margin-bottom:1.5rem;padding-bottom:.75rem;border-bottom:2px solid var(--border-color)}.config-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(350px,1fr));gap:1.5rem}.config-single{max-width:600px;margin:0 auto}.config-single .config-card{box-shadow:var(--shadow-md);padding:2rem}.config-single .config-card h3{font-size:1.25rem;margin-bottom:1.5rem;padding-bottom:1rem;border-bottom:1px solid var(--border-color)}.config-card{background-color:var(--surface);border-radius:var(--radius);padding:1.5rem;box-shadow:var(--shadow-sm);border:1px solid var(--border-color)}.config-card h3{font-size:1.125rem;font-weight:600;color:var(--text-primary);margin:0 0 1rem}.config-details{display:flex;flex-direction:column;gap:1rem}.config-detail-row{display:flex;justify-content:space-between;align-items:center;padding:.5rem 0}.config-detail-row .config-label{font-size:.875rem;color:var(--text-secondary)}.config-detail-row .config-value{font-size:.875rem;color:var(--text-primary)}.status-badge.small{font-size:.75rem;padding:.25rem .75rem}.config-item{display:flex;flex-direction:column;gap:.25rem}.config-item label{font-size:.75rem;font-weight:500;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em}.config-item p,.config-item a{font-size:.875rem;color:var(--text-primary);margin:0}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:4rem;color:var(--text-muted);text-align:center}.empty-state svg{margin-bottom:1rem;opacity:.5}.agencies-section{background-color:var(--surface);border-radius:var(--radius);padding:2rem;box-shadow:var(--shadow-sm);border:1px solid var(--border-color);margin-top:1.5rem}.agency-detail-card{background-color:var(--background);border-radius:calc(var(--radius) - 4px);padding:1.5rem;border:1px solid var(--border-color)}.agency-header-large{display:flex;justify-content:space-between;align-items:center;margin-bottom:2rem;padding-bottom:1.5rem;border-bottom:1px solid var(--border-color)}.agency-header-large h3{font-size:1.5rem;font-weight:600;color:var(--text-primary);margin:0 0 .5rem}.agency-header-actions{display:flex;align-items:center;gap:12px}.edit-agency-btn{background:transparent;border:1px solid var(--border-color);border-radius:6px;padding:6px 10px;cursor:pointer;color:var(--text-secondary);transition:var(--transition);display:flex;align-items:center;justify-content:center}.edit-agency-btn:hover{background:var(--background);color:var(--primary-color);border-color:var(--primary-color)}.edit-agency-btn svg{width:16px;height:16px}.agency-id{font-size:.875rem;color:var(--text-muted);font-family:var(--font-mono)}.status-badge.large{padding:.75rem 1.25rem;font-size:.875rem;font-weight:500}.agency-info-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1.5rem}.agency-info-item{display:flex;align-items:flex-start;gap:1rem;padding:1rem;background-color:var(--surface);border-radius:8px;border:1px solid var(--border-color);transition:all .2s ease}.agency-info-item:hover{border-color:var(--primary-color);box-shadow:var(--shadow-sm)}.agency-info-item svg{flex-shrink:0;margin-top:.25rem;color:var(--primary-color)}.agency-info-item label{font-size:.75rem;font-weight:500;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:.25rem;display:block}.agency-info-item p{font-size:1rem;font-weight:500;color:var(--text-primary);margin:0}.video-link{display:inline-flex;align-items:center;gap:.25rem;color:var(--primary-color);text-decoration:none;font-weight:500;transition:all .2s ease}.video-link:hover{color:var(--primary-hover);text-decoration:underline}.staff-summary{padding:1.5rem;background:linear-gradient(135deg,#f5f3ff,#ede9fe);border-radius:var(--radius);border:1px solid #e9d5ff}.summary-card{display:flex;align-items:center;gap:1.5rem}.summary-icon{width:64px;height:64px;background:#fff;border-radius:12px;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 12px #9333ea26;color:var(--secondary-color)}.summary-content h3{font-size:1.5rem;font-weight:600;color:var(--text-primary);margin:0 0 .25rem}.summary-content p{font-size:.875rem;color:var(--text-secondary);margin:0}.edit-btn,.add-staff-btn{display:flex;align-items:center;gap:6px;padding:8px 16px;background:var(--primary-color);color:#fff;border:none;border-radius:6px;font-size:.875rem;font-weight:500;cursor:pointer;transition:all .2s ease}.edit-btn:hover,.add-staff-btn:hover{background:var(--primary-hover);transform:translateY(-1px);box-shadow:var(--shadow-sm)}.config-card-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem}.config-card-header h3{margin:0}.staff-header{display:flex;flex-direction:column;gap:1.5rem;margin-bottom:2rem}.staff-header-top{display:flex;justify-content:space-between;align-items:center;width:100%;gap:2rem}.staff-header .staff-summary{flex:1;margin:0}.staff-filters{display:flex;gap:1rem;width:100%;align-items:center}.search-box{flex:1;position:relative;max-width:500px}.search-icon{position:absolute;left:16px;top:50%;transform:translateY(-50%);color:var(--text-secondary);pointer-events:none;width:20px;height:20px;z-index:1}.staff-search-input{width:100%;padding:12px 16px 12px 48px!important;border:1px solid var(--border-color);border-radius:var(--radius);font-size:.875rem;transition:var(--transition);background-color:var(--surface);box-sizing:border-box}.staff-search-input:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 3px #1e40af1a}.staff-search-input::placeholder{color:var(--text-secondary);opacity:.7}.agency-filter{padding:.75rem 1rem;border:1px solid var(--border-color);border-radius:var(--radius);font-size:.875rem;background-color:var(--surface);cursor:pointer;transition:var(--transition);min-width:200px}.agency-filter:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 3px #1e40af1a}.no-results{text-align:center;padding:3rem 1rem;color:var(--text-secondary)}.no-results svg{color:var(--text-muted);margin-bottom:1rem}.no-results p{font-size:1.125rem;margin-bottom:1.5rem}.reset-filters-btn{background-color:var(--primary-color);color:#fff;border:none;padding:.5rem 1.5rem;border-radius:var(--radius);font-size:.875rem;font-weight:500;cursor:pointer;transition:var(--transition)}.reset-filters-btn:hover{background-color:var(--primary-hover);transform:translateY(-1px)}.action-buttons{display:flex;gap:8px}.action-btn{padding:6px;background:none;border:1px solid transparent;border-radius:4px;cursor:pointer;transition:all .2s ease;display:flex;align-items:center;justify-content:center}.action-btn:hover{background:var(--background)}.action-btn.edit{color:var(--primary-color)}.action-btn.edit:hover{border-color:var(--primary-color);background:#4f46e51a}.action-btn.delete{color:#dc2626}.action-btn.delete:hover{border-color:#dc2626;background:#dc26261a}@media (max-width: 768px){.header-brand{gap:1rem}.brand-logo{width:48px;height:48px}.brand-info h1{font-size:1.25rem}.tabs-wrapper{padding:0 1rem;gap:1.5rem}.franchise-main{padding:1rem}.overview-grid{grid-template-columns:1fr}.stat-card{padding:1rem}.info-section{padding:1.5rem}.agencies-grid{grid-template-columns:1fr}.modern-table{font-size:.813rem}.modern-table th,.modern-table td{padding:.5rem}.config-grid{grid-template-columns:1fr}}.stat-card,.agency-card,.config-card{animation:slideUp .4s ease}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}button:focus-visible,a:focus-visible{outline:2px solid var(--primary-color);outline-offset:2px}.tech-log-details{max-height:70vh;overflow-y:auto;padding:20px}.detail-section{margin-bottom:24px;padding-bottom:20px;border-bottom:1px solid var(--border-color, #e0e0e0)}.detail-section:last-child{border-bottom:none;margin-bottom:0}.detail-section h3{font-size:16px;font-weight:600;color:var(--text-primary, #333);margin-bottom:12px}.detail-row{display:flex;margin-bottom:8px;line-height:1.6}.detail-label{font-weight:500;color:var(--text-secondary, #666);margin-right:8px;min-width:120px}.detail-value{flex:1;color:var(--text-primary, #333);word-break:break-word}.code-block{font-family:Monaco,Consolas,Courier New,monospace;font-size:12px;background-color:var(--bg-secondary, #f5f5f5);padding:8px;border-radius:4px;display:block}.json-display{font-family:Monaco,Consolas,Courier New,monospace;font-size:12px;background-color:var(--bg-secondary, #f5f5f5);padding:12px;border-radius:4px;overflow-x:auto;white-space:pre-wrap;word-break:break-word}.error-section{background-color:var(--error-bg, #fee);padding:16px;border-radius:4px;border:1px solid var(--error-border, #fcc)}.error-text{color:var(--error-color, #c00);font-weight:500}.visits-grid{background:#fff;border-radius:12px;padding:1.5rem;box-shadow:0 1px 3px #0000001a}.visits-table-wrapper{width:100%;overflow-x:auto;border:1px solid #e5e7eb;border-radius:8px;min-width:0}.visits-table{width:1283px;border-collapse:collapse;table-layout:fixed}.visits-table *{box-sizing:border-box}.visits-table thead{background-color:#f9fafb}.visits-table th{padding:1rem;text-align:left;font-weight:600;color:#374151;font-size:.875rem;border-bottom:2px solid #e5e7eb;background-color:#f9fafb;position:sticky;top:0;z-index:10}.visits-table td{padding:1rem;border-bottom:1px solid #f3f4f6;vertical-align:middle;font-size:.875rem}.visits-table th:nth-child(1),.visits-table td:nth-child(1){width:216px;white-space:nowrap}.visits-table th:nth-child(2),.visits-table td:nth-child(2){width:315px}.visits-table th:nth-child(3),.visits-table td:nth-child(3){width:208px}.visits-table th:nth-child(4),.visits-table td:nth-child(4){width:165px}.visits-table th:nth-child(5),.visits-table td:nth-child(5){width:250px}.visits-table th:nth-child(6),.visits-table td:nth-child(6){width:120px;text-align:center;white-space:nowrap}.visit-row{transition:background-color .15s ease;cursor:pointer}.visit-row:hover{background-color:#f9fafb}.visit-date{font-family:monospace;color:#4b5563;font-size:.8125rem;white-space:nowrap;display:block}.agency-info{min-width:0}.agency-name-primary{font-weight:600;color:#1f2937;font-size:.875rem;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.agency-code-secondary{font-family:monospace;color:#6b7280;font-size:.75rem;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-top:.125rem}.visit-category{color:#6b7280;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.visit-phone{font-family:monospace;color:#4b5563;white-space:nowrap;display:inline-block;width:100%}.visit-logs{font-size:.75rem;color:#6b7280;font-family:monospace;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:1.5;padding-right:.5rem}.view-details-btn{padding:.375rem .75rem;background:#3b82f6;color:#fff;border:none;border-radius:6px;font-size:.8125rem;font-weight:500;cursor:pointer;transition:all .15s ease;white-space:nowrap;display:inline-block}.view-details-btn:hover{background:#2563eb;box-shadow:0 1px 3px #3b82f64d}.visits-by-agency{display:flex;flex-direction:column;gap:2rem}.agency-group{border:1px solid #e5e7eb;border-radius:8px;overflow:hidden;box-shadow:0 1px 2px #0000000d}.agency-group-header{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.5rem;background:#f9fafb;border-bottom:1px solid #e5e7eb;margin:0;cursor:pointer;transition:background-color .2s ease}.agency-group-header:hover{background:#f3f4f6}.agency-header-left{display:flex;align-items:center;gap:.75rem}.agency-group-header .agency-name{font-weight:600;color:#1f2937;font-size:1.125rem}.agency-group-header .agency-code{font-family:monospace;color:#6b7280;font-size:1rem;font-weight:400}.visit-count{margin-left:auto;background:#3b82f6;color:#fff;padding:.25rem .75rem;border-radius:9999px;font-size:.875rem;font-weight:500}.empty-state{text-align:center;padding:4rem 2rem;color:#9ca3af}.empty-state p{font-size:1.125rem;margin:0}.tech-log-btn{padding:6px 12px;border-radius:4px;border:1px solid var(--border-color, #dee2e6);background-color:var(--secondary-color, #6c757d);color:#fff;font-size:12px;font-weight:500;cursor:pointer;transition:all .2s ease;white-space:nowrap}.tech-log-btn:hover:not(:disabled){background-color:var(--secondary-hover, #5a6268);transform:translateY(-1px)}.tech-log-btn:disabled{background-color:var(--disabled-bg, #e9ecef);color:var(--disabled-text, #6c757d);cursor:not-allowed;opacity:.6}.collapse-toggle{background:none;border:none;padding:4px;cursor:pointer;color:#6b7280;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:all .2s ease}.collapse-toggle:hover{background:#e5e7eb;color:#374151}.collapse-toggle svg{transition:transform .2s ease}@media (max-width: 768px){.visits-grid{padding:1rem}.visits-table-wrapper{margin:0 -1rem;border-radius:0;border-left:none;border-right:none}.visits-table{font-size:.8125rem}.visits-table th,.visits-table td{padding:.75rem .5rem}@media (max-width: 480px){.visits-table th:nth-child(5),.visits-table td:nth-child(5){display:none}.visits-table{width:1006px}}.agency-code-secondary{display:none}.view-details-btn{padding:.25rem .5rem;font-size:.75rem}}.visits-table-wrapper::-webkit-scrollbar{height:8px}.visits-table-wrapper::-webkit-scrollbar-track{background:#f3f4f6}.visits-table-wrapper::-webkit-scrollbar-thumb{background:#d1d5db;border-radius:4px}.visits-table-wrapper::-webkit-scrollbar-thumb:hover{background:#9ca3af}.visits-page{min-height:100vh;background-color:#f7f8fa}.visits-content{padding:2rem;max-width:1400px;margin:0 auto}.visits-header{margin-bottom:2rem}.visits-title{font-size:2rem;font-weight:600;color:#1a202c;margin:0 0 .5rem}.visits-subtitle{font-size:1rem;color:#718096}.visits-controls{margin-bottom:2rem;background:#fff;padding:1.5rem;border-radius:12px;box-shadow:0 1px 3px #0000001a;display:flex;flex-wrap:wrap;gap:2rem;align-items:center;justify-content:space-between}.period-controls,.sort-controls{display:flex;align-items:center;gap:1rem}.period-select{padding:.5rem 1rem;border:1px solid #e5e7eb;border-radius:8px;font-size:.875rem;background:#fff;cursor:pointer;transition:all .2s}.period-select:hover{border-color:#d1d5db}.period-select:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}.sort-controls label{font-weight:500;color:#374151}.sort-buttons{display:flex;gap:.5rem}.sort-button{display:flex;align-items:center;gap:.5rem;padding:.5rem 1rem;border:1px solid #e5e7eb;background:#fff;border-radius:8px;font-size:.875rem;color:#6b7280;cursor:pointer;transition:all .2s}.sort-button:hover{background:#f9fafb;border-color:#d1d5db}.sort-button.active{background:#3b82f6;color:#fff;border-color:#3b82f6}.sort-button.active svg{stroke:#fff}.sort-button svg{stroke:currentColor}.search-controls{display:flex;align-items:center;gap:1rem;flex:1;max-width:400px}.search-controls label{font-weight:500;color:#374151;white-space:nowrap}.search-input-wrapper{position:relative;flex:1;display:flex;align-items:center;background:#fff;border-radius:8px}.search-input{width:100%;padding:10px 40px 10px 16px;border:1px solid #e5e7eb;border-radius:8px;font-size:.875rem;background:#fff;transition:all .2s}.search-input.with-icon{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='none' stroke='%239ca3af' stroke-width='2'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cpath d='m21 21-4.35-4.35' stroke-linecap='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:12px center;background-size:20px 20px;padding-left:44px}.search-input:hover{border-color:#d1d5db}.search-input:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}.search-input::placeholder{color:#9ca3af;opacity:1}.clear-search{position:absolute;right:.75rem;padding:.375rem;background:none;border:none;color:#9ca3af;cursor:pointer;border-radius:4px;transition:all .2s;display:flex;align-items:center;justify-content:center}.clear-search:hover{background:#f3f4f6;color:#374151}.collapse-controls{margin-left:auto}.toggle-all-btn{display:flex;align-items:center;gap:.5rem;padding:.5rem 1rem;background:#fff;border:1px solid #e5e7eb;border-radius:8px;font-size:.875rem;font-weight:500;color:#374151;cursor:pointer;transition:all .2s ease;white-space:nowrap}.toggle-all-btn:hover{background:#f3f4f6;border-color:#d1d5db}.toggle-all-btn svg{width:16px;height:16px}@media (max-width: 768px){.visits-content{padding:1rem}.visits-title{font-size:1.5rem}.visits-controls{flex-direction:column;align-items:stretch}.sort-controls{flex-direction:column;align-items:stretch;gap:.5rem}.sort-buttons{width:100%}.sort-button{flex:1;justify-content:center}.search-controls{max-width:none;width:100%}}.no-visits-warning{background:#fef3c7;border:1px solid #fbbf24;border-radius:8px;padding:1rem;margin-bottom:1rem;text-align:center}.no-visits-warning p{margin:.25rem 0;color:#92400e}:root{--swx-primary: #0055A4;--swx-primary-dark: #004080;--swx-accent: #FF8C00;--swx-bg: #F0F2F5;--swx-card-bg: #FFFFFF;--swx-text: #2E3A46;--swx-text-light: #6C757D;--swx-error: #D32F2F;--swx-success: #4CAF50;--swx-warning: #FF9800;--swx-border: #E0E0E0;--swx-radius: 8px;--swx-radius-sm: 4px;--swx-shadow: 0 2px 8px rgba(0, 0, 0, .08);--swx-shadow-hover: 0 4px 16px rgba(0, 0, 0, .12)}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Inter,sans-serif;background-color:var(--swx-bg);color:var(--swx-text);height:100vh;overflow-x:hidden}#root{min-height:100vh}#login-form,#reset-form{background-color:var(--swx-card-bg);padding:2.5rem;width:100%;max-width:400px;margin:10vh auto;border-radius:var(--swx-radius);box-shadow:var(--swx-shadow);text-align:center}.login-logo{width:80px;height:80px;margin:0 auto 20px;display:block;object-fit:contain}#login-form h1,#reset-form h1{font-size:2rem;font-weight:600;margin-bottom:2rem;color:var(--swx-primary)}#login-form input[type=email],#login-form input[type=password],#reset-form input[type=email]{width:100%;padding:.875rem 1rem;margin-bottom:1.25rem;border:1px solid var(--swx-border);border-radius:var(--swx-radius);font-size:1rem;transition:all .2s ease;background-color:#fafafa}#login-form input:focus,#reset-form input:focus{outline:none;border-color:var(--swx-primary);background-color:#fff;box-shadow:0 0 0 3px #0055a41a}#login-form button,#reset-form button{width:100%;padding:.875rem;font-size:1rem;font-weight:600;color:#fff;background-color:var(--swx-primary);border:none;border-radius:var(--swx-radius);cursor:pointer;transition:all .2s ease}#login-form button:hover,#reset-form button:hover{background-color:var(--swx-primary-dark);transform:translateY(-1px);box-shadow:0 4px 12px #0055a44d}#error{margin-top:1rem;font-size:.875rem;color:var(--swx-error);min-height:1.25rem}#error .reset-success{margin-top:1rem;font-size:.95rem;color:var(--swx-success);background:#eafbe7;border-radius:var(--swx-radius-sm);padding:.75rem}#error .back-to-login-btn{margin-top:1.5rem;background:var(--swx-accent);color:#fff;font-weight:500;border:none;border-radius:var(--swx-radius);padding:.75rem 1.5rem;cursor:pointer;transition:background .2s}#error .back-to-login-btn:hover{background:#ff7000}.reset-password-container{min-height:100vh;display:flex;align-items:center;justify-content:center;background-color:var(--swx-bg)}.reset-password-form{background-color:var(--swx-card-bg);padding:2.5rem;width:100%;max-width:400px;border-radius:var(--swx-radius);box-shadow:var(--swx-shadow);text-align:center}.reset-password-form h1{font-size:2rem;font-weight:600;margin-bottom:2rem;color:var(--swx-primary)}.reset-password-form input[type=password]{width:100%;padding:.875rem 1rem;margin-bottom:1.25rem;border:1px solid var(--swx-border);border-radius:var(--swx-radius);font-size:1rem;transition:all .2s ease;background-color:#fafafa}.reset-password-form input:focus{outline:none;border-color:var(--swx-primary);background-color:#fff;box-shadow:0 0 0 3px #0055a41a}.reset-password-form button[type=submit]{width:100%;padding:.875rem;font-size:1rem;font-weight:600;color:#fff;background-color:var(--swx-primary);border:none;border-radius:var(--swx-radius);cursor:pointer;transition:all .2s ease;margin-bottom:0}.reset-password-form button[type=submit]:hover:not(:disabled){background-color:var(--swx-primary-dark);transform:translateY(-1px);box-shadow:0 4px 12px #0055a44d}.reset-password-form button[type=submit]:disabled{opacity:.6;cursor:not-allowed}.reset-email-info{margin-bottom:1.5rem;font-size:.95rem;color:var(--swx-text-light)}.reset-email-info strong{color:var(--swx-text)}.error-message{margin-top:1rem;font-size:.875rem;color:var(--swx-error);background:#ffe6e6;border-radius:var(--swx-radius-sm);padding:.75rem}.success-message{margin-top:1rem;font-size:.95rem;color:var(--swx-success);background:#eafbe7;border-radius:var(--swx-radius-sm);padding:1rem;line-height:1.5}.loading-message{font-size:1.125rem;color:var(--swx-text-light);margin-top:2rem}.reset-password-form .back-to-login-btn{margin-top:1.5rem;background:transparent;color:var(--swx-primary);font-weight:500;border:1px solid var(--swx-primary);border-radius:var(--swx-radius);padding:.75rem 1.5rem;cursor:pointer;transition:all .2s;width:100%}.reset-password-form .back-to-login-btn:hover:not(:disabled){background:var(--swx-primary);color:#fff;transform:translateY(-1px);box-shadow:0 2px 8px #0055a44d}.reset-password-form .back-to-login-btn:disabled{opacity:.6;cursor:not-allowed}.bi-dashboard{display:flex;flex-direction:column;height:100vh;background-color:var(--swx-bg)}.bi-header{background-color:var(--swx-card-bg);box-shadow:var(--swx-shadow);position:sticky;top:0;z-index:100}.header-content{max-width:100%;padding:.5rem 1.5rem;display:flex;justify-content:space-between;align-items:center}.header-left{display:flex;align-items:center;gap:1rem}.header-left h1{font-size:1.125rem;font-weight:600;color:var(--swx-primary);margin:0}.subtitle{font-size:.7rem;color:var(--swx-text-light)}.header-right{display:flex;align-items:center;gap:1rem}.customize-btn,.logout-btn{color:#fff;border:none;padding:.375rem .875rem;border-radius:var(--swx-radius);font-weight:500;font-size:.8125rem;cursor:pointer;transition:all .2s ease}.customize-btn{background-color:var(--swx-primary)}.customize-btn:hover{background-color:var(--swx-primary-dark);transform:translateY(-1px);box-shadow:0 2px 8px #0055a44d}.customize-btn.active{background-color:var(--swx-primary-dark)}.logout-btn{background-color:var(--swx-accent)}.logout-btn:hover{background-color:#e67e00;transform:translateY(-1px);box-shadow:0 2px 8px #ff8c004d}.bi-content{flex:1;overflow-y:auto;padding:1.5rem}.filters-bar{background-color:var(--swx-card-bg);padding:1.25rem;border-radius:var(--swx-radius);box-shadow:var(--swx-shadow);margin-bottom:1.5rem;display:flex;gap:1.5rem;flex-wrap:wrap;align-items:flex-end}.filter-group{display:flex;flex-direction:column;gap:.5rem;flex:1;min-width:200px}.filter-group label{font-size:.875rem;font-weight:500;color:var(--swx-text-light)}.filter-select,.search-input{padding:.625rem 1rem;border:1px solid var(--swx-border);border-radius:var(--swx-radius-sm);font-size:.875rem;background-color:#fafafa;transition:all .2s ease}.filter-select:focus,.search-input:focus{outline:none;border-color:var(--swx-primary);background-color:#fff}.search-input{flex:2}.kpi-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:1.25rem;margin-bottom:1.5rem}.kpi-card{background-color:var(--swx-card-bg);padding:1.5rem;border-radius:var(--swx-radius);box-shadow:var(--swx-shadow);display:flex;flex-direction:column;transition:all .2s ease;position:relative;overflow:hidden}.kpi-card:before{content:"";position:absolute;top:0;left:0;width:4px;height:100%;background:linear-gradient(135deg,var(--swx-primary),var(--swx-accent));opacity:0;transition:opacity .3s ease}.kpi-card:hover:before{opacity:1}.kpi-card:hover{transform:translateY(-2px) translate(2px);box-shadow:var(--swx-shadow-hover)}.kpi-value{font-size:2.25rem;font-weight:700;background:linear-gradient(135deg,var(--swx-primary),var(--swx-primary-dark));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;margin-bottom:.5rem}.kpi-label{font-size:.875rem;font-weight:500;color:var(--swx-text);margin-bottom:.25rem}.kpi-period{font-size:.75rem;color:var(--swx-text-light)}.chart-container{background-color:var(--swx-card-bg);padding:1.5rem;border-radius:var(--swx-radius);box-shadow:var(--swx-shadow);min-height:350px;position:relative;overflow:hidden}.chart-container.clickable{cursor:pointer;transition:all .2s ease}.chart-container.clickable:hover{transform:translateY(-2px);box-shadow:var(--swx-shadow-hover)}.chart-container.full-width{grid-column:1 / -1}.chart{width:100%;height:300px}.category-filter-btn{display:flex;align-items:center;gap:.5rem;padding:.625rem 1rem;background-color:#fafafa;border:1px solid var(--swx-border);border-radius:var(--swx-radius-sm);font-size:.875rem;cursor:pointer;transition:all .2s ease;min-width:120px}.category-filter-btn:hover{background-color:#fff;border-color:var(--swx-primary)}.category-count{background-color:var(--swx-primary);color:#fff;padding:.125rem .5rem;border-radius:1rem;font-size:.75rem;font-weight:600}.category-filter-dropdown{background-color:var(--swx-card-bg);border:1px solid var(--swx-border);border-radius:var(--swx-radius);box-shadow:var(--swx-shadow-hover);padding:1.25rem;margin-top:-.5rem;margin-bottom:1.5rem;max-width:600px}.category-filter-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.category-filter-header h3{font-size:1rem;font-weight:600;color:var(--swx-text);margin:0}.clear-btn{background:none;border:none;color:var(--swx-primary);font-size:.875rem;cursor:pointer;text-decoration:underline;transition:opacity .2s ease}.clear-btn:hover{opacity:.8}.category-options{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:.75rem}.category-option{display:flex;align-items:center;cursor:pointer}.category-option input[type=checkbox]{margin-right:.75rem;cursor:pointer}.category-label{flex:1;padding:.5rem .75rem;border-radius:var(--swx-radius-sm);font-size:.875rem;transition:all .2s ease;text-transform:capitalize}.category-option:hover .category-label{transform:translate(2px)}.logs-section{background-color:var(--swx-card-bg);padding:1.5rem;border-radius:var(--swx-radius);box-shadow:var(--swx-shadow)}.logs-section h2{font-size:1.25rem;font-weight:600;color:var(--swx-primary);margin-bottom:1.25rem}.logs-table-container{overflow-x:auto}.logs-table{width:100%;border-collapse:collapse;font-size:.875rem}.logs-table th{background-color:#f8f9fa;color:var(--swx-text);font-weight:600;padding:.875rem 1rem;text-align:left;border-bottom:2px solid var(--swx-border);position:sticky;top:0}.logs-table td{padding:.875rem 1rem;border-bottom:1px solid var(--swx-border)}.logs-table tr:hover{background-color:#f8f9fa}.category-badge{display:inline-block;padding:.25rem .75rem;border-radius:1rem;font-size:.75rem;font-weight:500;text-transform:capitalize}.category-badge{font-weight:600}.view-btn{background-color:var(--swx-primary);color:#fff;border:none;padding:.375rem .875rem;border-radius:var(--swx-radius-sm);font-size:.75rem;font-weight:500;cursor:pointer;transition:all .2s ease}.view-btn:hover{background-color:var(--swx-primary-dark)}.table-footer{padding:1rem;text-align:center;color:var(--swx-text-light);font-size:.875rem;border-top:1px solid var(--swx-border);margin-top:1rem}.loading-screen,.error-screen{display:flex;align-items:center;justify-content:center;height:100vh;font-size:1.125rem;color:var(--swx-text-light)}.error-screen{color:var(--swx-error)}.chart-loading{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:flex;gap:.5rem}.chart-loading span{width:8px;height:8px;border-radius:50%;background-color:var(--swx-primary);animation:chartPulse 1.4s ease-in-out infinite}.chart-loading span:nth-child(2){animation-delay:.2s}.chart-loading span:nth-child(3){animation-delay:.4s}@keyframes chartPulse{0%,80%,to{transform:scale(0);opacity:.8}40%{transform:scale(1);opacity:1}}@media (max-width: 1200px){.charts-grid{grid-template-columns:1fr}.kpi-grid{grid-template-columns:repeat(2,1fr)}.category-options{grid-template-columns:1fr}}@media (max-width: 768px){.bi-content{padding:1rem}.header-content{padding:1rem;flex-direction:column;gap:1rem;align-items:flex-start}.filters-bar{flex-direction:column}.filter-group{width:100%}.kpi-grid{grid-template-columns:1fr}.logs-table{font-size:.75rem}.logs-table th,.logs-table td{padding:.5rem}}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.kpi-card,.chart-container,.logs-section,.category-filter-dropdown{animation:fadeIn .4s ease-out}.info-section{background-color:var(--swx-card-bg);padding:1.5rem;border-radius:var(--swx-radius);box-shadow:var(--swx-shadow);margin-top:2rem}.info-section h2{font-size:1.25rem;font-weight:600;color:var(--swx-primary);margin-bottom:1.25rem}.info-cards-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:1.25rem}.info-card-small{background-color:#f8f9fa;padding:1.25rem;border-radius:var(--swx-radius-sm);border:1px solid var(--swx-border)}.info-card-small h3{font-size:1rem;font-weight:600;color:var(--swx-text);margin-bottom:1rem}.info-card-small p{margin-bottom:.5rem;font-size:.875rem}.info-card-small strong{color:var(--swx-primary)}.text-muted{color:var(--swx-text-light);font-size:.75rem}.agency-list{list-style:none;padding:0}.agency-list li{padding:.5rem 0;border-bottom:1px solid var(--swx-border);font-size:.875rem;display:flex;justify-content:space-between;align-items:center}.agency-list li:last-child{border-bottom:none}.country-badge{background-color:var(--swx-primary);color:#fff;padding:.125rem .5rem;border-radius:.75rem;font-size:.75rem;text-transform:uppercase}.menu-toggle{display:flex;flex-direction:column;justify-content:space-between;width:24px;height:18px;background:none;border:none;cursor:pointer;padding:0;transition:all .3s ease}.menu-toggle span{display:block;width:100%;height:3px;background-color:var(--swx-primary);border-radius:2px;transition:all .3s ease}.menu-toggle:hover span{background-color:var(--swx-primary-dark)}.sidebar{position:fixed;top:0;left:-280px;width:280px;height:100vh;background-color:var(--swx-card-bg);box-shadow:2px 0 8px #0000001a;transition:left .3s ease;z-index:1000;overflow-y:auto}.sidebar.active{left:0}.sidebar-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background-color:#00000080;z-index:999;opacity:0;animation:fadeIn .3s ease forwards}.sidebar-header{display:flex;justify-content:space-between;align-items:center;padding:1.5rem;border-bottom:1px solid var(--swx-border)}.sidebar-header h3{font-size:1.25rem;font-weight:600;color:var(--swx-primary);margin:0}.close-sidebar{background:none;border:none;font-size:2rem;color:var(--swx-text-light);cursor:pointer;transition:color .2s ease;line-height:1;padding:0;width:30px;height:30px;display:flex;align-items:center;justify-content:center}.close-sidebar:hover{color:var(--swx-primary)}.sidebar-nav{padding:1rem 0}.nav-item{display:flex;align-items:center;padding:1rem 1.5rem;text-decoration:none;color:var(--swx-text);transition:all .2s ease;position:relative;font-weight:500}.nav-item:before{content:"";position:absolute;left:0;top:0;width:4px;height:100%;background-color:var(--swx-primary);transform:scaleY(0);transition:transform .2s ease}.nav-item:hover{background-color:#0055a40d;color:var(--swx-primary)}.nav-item.active{background-color:#0055a41a;color:var(--swx-primary);font-weight:600}.nav-item.active:before,.nav-item:hover:before{transform:scaleY(1)}.info-card{background-color:var(--swx-card-bg);padding:2rem;border-radius:var(--swx-radius);box-shadow:var(--swx-shadow);margin-bottom:1.5rem}.info-card h2{font-size:1.5rem;font-weight:600;color:var(--swx-primary);margin-bottom:1.5rem}.info-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:1.5rem}.info-item label{display:block;font-size:.875rem;color:var(--swx-text-light);margin-bottom:.5rem;font-weight:500}.info-item p{font-size:1.125rem;color:var(--swx-text);margin:0}.mono{font-family:Courier New,monospace;font-size:.875rem;background-color:#0055a40d;padding:.25rem .5rem;border-radius:var(--swx-radius-sm)}.agencies-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(350px,1fr));gap:1.5rem}.agency-card{background-color:#f8f9fa;padding:1.5rem;border-radius:var(--swx-radius);border:1px solid var(--swx-border)}.agency-card h3{font-size:1.125rem;font-weight:600;color:var(--swx-text);margin-bottom:1rem}.agency-details{display:flex;flex-direction:column;gap:.75rem}.detail-item{display:flex;gap:.5rem;font-size:.875rem}.detail-label{font-weight:500;color:var(--swx-text-light)}.status-active{color:var(--swx-success);font-weight:600}.status-inactive{color:var(--swx-text-light)}.link{color:var(--swx-primary);text-decoration:none;transition:opacity .2s ease}.link:hover{opacity:.8;text-decoration:underline}.config-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1.5rem}.config-item{background-color:#f8f9fa;padding:1.25rem;border-radius:var(--swx-radius-sm);border:1px solid var(--swx-border)}.config-item h4{font-size:1rem;font-weight:600;color:var(--swx-text);margin-bottom:1rem}.staff-table-container{overflow-x:auto}.staff-table{width:100%;border-collapse:collapse;font-size:.875rem}.staff-table th{background-color:#f8f9fa;color:var(--swx-text);font-weight:600;padding:.875rem 1rem;text-align:left;border-bottom:2px solid var(--swx-border)}.staff-table td{padding:.875rem 1rem;border-bottom:1px solid var(--swx-border)}.staff-table tr:hover{background-color:#f8f9fa}.expand-chart-btn{position:absolute;top:1rem;right:1rem;background-color:#0055a41a;border:1px solid var(--swx-primary);border-radius:var(--swx-radius-sm);padding:.5rem;cursor:pointer;transition:all .2s ease;z-index:10;color:var(--swx-primary)}.expand-chart-btn:hover{background-color:var(--swx-primary);color:#fff;transform:scale(1.1)}.chart-modal-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background-color:#000000b3;z-index:1100;animation:fadeIn .3s ease}.chart-modal{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);width:90%;max-width:1000px;max-height:90vh;background-color:var(--swx-card-bg);border-radius:var(--swx-radius);box-shadow:0 4px 24px #0003;z-index:1101;display:flex;flex-direction:column;animation:modalSlideIn .3s ease}.chart-modal-header{display:flex;justify-content:space-between;align-items:center;padding:1.5rem;border-bottom:1px solid var(--swx-border)}.chart-modal-header h2{font-size:1.5rem;font-weight:600;color:var(--swx-primary);margin:0}.close-modal-btn{background:none;border:none;font-size:2rem;color:var(--swx-text-light);cursor:pointer;transition:color .2s ease;line-height:1;padding:0;width:40px;height:40px;display:flex;align-items:center;justify-content:center;border-radius:var(--swx-radius-sm)}.close-modal-btn:hover{background-color:#0000000d;color:var(--swx-primary)}.chart-modal-content{flex:1;padding:2rem;overflow-y:auto;display:flex;align-items:center;justify-content:center}@keyframes modalSlideIn{0%{opacity:0;transform:translate(-50%,-45%)}to{opacity:1;transform:translate(-50%,-50%)}}.edit-mode-notice{background-color:#0055a41a;border:1px solid var(--swx-primary);border-radius:var(--swx-radius);padding:1rem 1.5rem;margin-bottom:1.5rem;display:flex;align-items:center;gap:1rem}.edit-mode-notice p{margin:0;color:var(--swx-primary);font-size:.875rem}.edit-mode-notice strong{font-weight:600}.layout{margin-top:1rem}.layout.edit-mode .react-grid-item{transition:all .2s ease;touch-action:none}.layout.edit-mode .react-grid-item:hover{box-shadow:0 4px 16px #0055a433}.react-grid-item{background-color:var(--swx-card-bg);border-radius:var(--swx-radius);box-shadow:var(--swx-shadow);overflow:hidden;transition:none}.react-grid-item.react-grid-placeholder{background-color:#0055a41a;border:2px dashed var(--swx-primary);border-radius:var(--swx-radius)}.react-grid-item .react-resizable-handle{position:absolute;width:20px;height:20px;bottom:0;right:0;cursor:se-resize}.react-grid-item .react-resizable-handle:after{content:"";position:absolute;right:3px;bottom:3px;width:5px;height:5px;border-right:2px solid var(--swx-primary);border-bottom:2px solid var(--swx-primary);opacity:.5}.grid-item-content{width:100%;height:100%;padding:1.5rem;overflow:auto}.drag-handle{position:absolute;top:0;left:0;right:0;height:40px;background:linear-gradient(to bottom,rgba(0,85,164,.1),transparent);cursor:move;display:none;align-items:center;justify-content:center;z-index:10}.edit-mode .drag-handle{display:flex}.drag-handle:before{content:"⋮⋮⋮";color:var(--swx-primary);font-size:1.25rem;letter-spacing:.25rem}.edit-toolbar{position:fixed;right:1rem;top:50%;transform:translateY(-50%);background-color:var(--swx-card-bg);border-radius:var(--swx-radius);box-shadow:var(--swx-shadow-hover);padding:1.5rem;width:280px;z-index:100;max-height:80vh;overflow-y:auto}.edit-toolbar h3{font-size:1.125rem;font-weight:600;color:var(--swx-primary);margin-bottom:1rem}.component-list{display:flex;flex-direction:column;gap:.75rem}.component-toggle-item{display:flex;align-items:center;gap:.75rem;padding:.5rem;border-radius:var(--swx-radius-sm);cursor:pointer;transition:background-color .2s ease}.component-toggle-item:hover{background-color:#0055a40d}.component-toggle-item input[type=checkbox]{cursor:pointer}.edit-toolbar-actions{margin-top:1.5rem;display:flex;flex-direction:column;gap:.75rem}.reset-layout-btn{background-color:var(--swx-accent);color:#fff;border:none;padding:.75rem 1rem;border-radius:var(--swx-radius-sm);font-weight:500;cursor:pointer;transition:all .2s ease}.reset-layout-btn:hover{background-color:#e67e00;transform:translateY(-1px)}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:#f1f1f1}::-webkit-scrollbar-thumb{background:#c1c1c1;border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#a8a8a8}
