:root{--red:#d7263d;--red-dark:#a91d30;--dark:#1a1a2e;--gray:#6b7280;--bg:#f4f5f7;--card:#fff;--green:#16a34a;--amber:#d97706;--blue:#2563eb;--good:#0ca30c;--warning:#d97706;--critical:#d03b3b;--muted:#898781;--hairline:#e1e0d9;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif}*{box-sizing:border-box}html,body,#root{height:100%}body{background:var(--bg);color:var(--dark);min-height:100vh;margin:0}.container{max-width:480px;margin:0 auto;padding:24px 20px 60px}.wide{max-width:900px}.dashboard-container{max-width:1200px}.dashboard-grid{grid-template-columns:1fr 380px;align-items:start;gap:16px;display:grid}.dashboard-sidebar{position:sticky;top:16px}@media (width<=860px){.dashboard-grid{grid-template-columns:1fr}.dashboard-sidebar{position:static}}.reports-container{max-width:1440px}.reports-grid-2{grid-template-columns:1fr 1fr;align-items:stretch;gap:16px;margin-bottom:16px;display:grid}.reports-grid-2>.card{flex-direction:column;margin-bottom:0;display:flex}.person-kpi-grid{flex-wrap:wrap;gap:10px;display:flex}.person-kpi-card{cursor:pointer;text-align:left;background:#f4f5f7;border:none;border-radius:10px;flex:230px;padding:14px 16px;font-family:inherit;transition:background .12s}.person-kpi-card:hover{background:#eceef2}.person-kpi-card .top{justify-content:space-between;align-items:center;gap:8px;margin-bottom:6px;display:flex}.person-kpi-card .name{font-size:14px;font-weight:700}.person-kpi-card .meta{color:var(--gray);margin-top:2px;font-size:12px}.person-kpi-card .view-profile{color:var(--blue);margin-top:8px;font-size:12px;font-weight:600}.profile-modal-header{justify-content:space-between;align-items:center;gap:12px;margin-bottom:4px;display:flex}.profile-modal-role{color:var(--gray);text-transform:uppercase;letter-spacing:.4px;font-size:12px;font-weight:700}.header{background:var(--red);color:#fff;align-items:center;gap:10px;padding:16px 20px;display:flex}.header h1{flex:1;margin:0;font-size:18px;font-weight:600}.header a{color:#fff}.header-logo{object-fit:contain;background:#fff;border-radius:50%;flex-shrink:0;width:26px;height:26px;padding:3px}.header-btn{color:#fff;white-space:nowrap;background:#ffffff2e;border-radius:999px;padding:6px 12px;font-size:13px}.header-btn:hover:not(:disabled){background:#ffffff4d}.header-btn:disabled{opacity:.7;cursor:not-allowed}.badge{background:#fff3;border-radius:999px;padding:2px 10px;font-size:12px}.card{background:var(--card);border-radius:14px;margin-bottom:16px;padding:20px;box-shadow:0 1px 3px #00000014}h2{flex-wrap:wrap;align-items:center;gap:4px;margin:0 0 12px;font-size:16px;display:flex}.stat-grid{flex-wrap:wrap;gap:10px;display:flex}.stat-tile{text-align:center;background:#f4f5f7;border:2px solid #0000;border-radius:10px;flex:110px;padding:14px 10px;font-family:inherit}.stat-tile:hover{background:#eceef2}.stat-tile-active{border-color:var(--red);background:#fdecee}.stat-tile .num{color:var(--dark);font-size:22px;font-weight:800}.stat-tile .label{color:var(--gray);text-transform:uppercase;letter-spacing:.4px;margin-top:2px;font-size:11px}.kpi-grid{flex-wrap:wrap;gap:12px;display:flex}.kpi-tile{background:#f4f5f7;border-radius:10px;flex-direction:column;flex:150px;gap:6px;padding:14px 16px;display:flex}.kpi-tile-top{align-items:center;gap:8px;display:flex}.kpi-tile-icon{font-size:15px;line-height:1}.kpi-tile-label{color:var(--gray);font-size:12px;font-weight:600}.kpi-tile-value{color:var(--dark);font-size:26px;font-weight:800;line-height:1.1}.kpi-tile-delta{align-items:center;gap:3px;width:fit-content;font-size:12px;font-weight:700;display:inline-flex}.kpi-tile-delta.is-good{color:var(--good)}.kpi-tile-delta.is-bad{color:var(--critical)}.kpi-tile-delta.is-neutral{color:var(--muted)}.kpi-tile-delta-note{color:var(--muted);font-size:11px;font-weight:500}.period-selector{flex-wrap:wrap;align-items:center;gap:14px;margin-bottom:16px;display:flex}.period-tabs{background:#f4f5f7;border-radius:999px;padding:3px;display:inline-flex}.period-tab{color:var(--gray);border-radius:999px;padding:6px 16px;font-family:inherit;font-size:13px;font-weight:600}.period-tab.active{background:var(--dark);color:#fff}.period-nav{align-items:center;gap:10px;display:inline-flex}.period-nav-btn{width:28px;height:28px;color:var(--dark);background:#f4f5f7;border-radius:50%;justify-content:center;align-items:center;font-family:inherit;font-size:14px;line-height:1;display:inline-flex}.period-nav-btn:hover:not(:disabled){background:#eceef2}.period-nav-btn:disabled{opacity:.35;cursor:not-allowed}.period-label{color:var(--dark);text-align:center;min-width:140px;font-size:14px;font-weight:700}.report-day-heading{border-bottom:1px solid #eceef2;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;margin:0 0 4px;padding-bottom:8px;font-size:14px;font-weight:700;display:flex}.report-day-heading .hint{margin:0;font-weight:500;display:inline}.report-day-group summary{cursor:pointer;list-style:none}.report-day-group summary::-webkit-details-marker{display:none}.report-day-heading-label{align-items:center;gap:2px;display:inline-flex}.report-day-chevron{color:var(--gray);transition:transform .15s;display:inline-block}.report-day-group[open] .report-day-chevron{transform:rotate(90deg)}.bar-chart{position:relative}.bar-chart-svg{width:100%;display:block}.bar-chart-axis{height:14px;color:var(--gray);margin-top:4px;font-size:10px;position:relative}.bar-chart-axis span{white-space:nowrap;position:absolute;top:0;transform:translate(-50%)}.bar-chart-tooltip{background:var(--dark);color:#fff;pointer-events:none;border-radius:6px;padding:4px 10px;font-size:12px;position:absolute;top:4px;right:4px}.bar-chart-table{margin-top:10px;font-size:12px}.bar-chart-table summary{color:var(--gray);font-weight:600}.bar-chart-table table{border-collapse:collapse;width:100%;margin-top:8px}.bar-chart-table th,.bar-chart-table td{text-align:left;border-bottom:1px solid #eceef2;padding:4px 8px}.heatmap-legend{color:var(--gray);align-items:center;gap:6px;margin-top:8px;font-size:11px;display:flex}.heatmap-legend-bar{background:linear-gradient(90deg,#2563eb,#22c55e,#f59e0b,#d7263d);border-radius:4px;flex:1;height:8px}label{color:var(--gray);margin:14px 0 6px;font-size:13px;font-weight:600;display:block}input,textarea,select{border:1px solid #d9dbe1;border-radius:10px;width:100%;padding:12px 14px;font-family:inherit;font-size:16px}textarea{resize:vertical;min-height:60px}button{cursor:pointer;border:none;border-radius:10px;padding:13px 18px;font-family:inherit;font-size:15px;font-weight:600}.btn-primary{background:var(--red);color:#fff;width:100%;margin-top:18px}.btn-primary:disabled{cursor:not-allowed;background:#e5a5ac}.btn-primary:hover:not(:disabled){background:var(--red-dark)}.btn-secondary{color:var(--dark);background:#eef0f4}.btn-green{background:var(--green);color:#fff}.btn-amber{background:var(--amber);color:#fff}.btn-blue{background:var(--blue);color:#fff}.btn-danger{color:#991b1b;background:#fecaca}.btn-sm{border-radius:8px;padding:8px 12px;font-size:13px}.sos-row{gap:10px;margin-top:18px;display:flex}.sos-row .btn-primary{flex:1;width:auto;margin-top:0}.call-fab{background:var(--green);color:#fff;border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;width:52px;text-decoration:none;display:flex}.call-fab:hover{background:#128a3e}.call-fab svg{fill:#fff;width:22px;height:22px}.status-pill{text-transform:capitalize;border-radius:999px;padding:3px 10px;font-size:12px;font-weight:600;display:inline-block}.status-pending{color:#92400e;background:#fde68a}.status-assigned{color:#1e40af;background:#bfdbfe}.status-enroute{color:#3730a3;background:#c7d2fe}.status-arrived{color:#065f46;background:#a7f3d0}.status-completed{color:#065f46;background:#d1fae5}.status-cancelled{color:#991b1b;background:#fecaca}.status-available{color:#065f46;background:#a7f3d0}.status-on_trip{color:#1e40af;background:#bfdbfe}.status-offline{color:#991b1b;background:#fecaca}.error{color:var(--red);margin-top:8px;font-size:13px}.hint{color:var(--gray);margin-top:6px;font-size:13px}.success-box{text-align:center;padding:40px 20px}.success-box .icon{margin-bottom:12px;font-size:48px}.qr-poster{text-align:center;flex-direction:column;align-items:center;padding:32px 24px 24px;display:flex}.qr-poster-logo{width:55%;max-width:200px;height:auto;margin-bottom:20px}.qr-poster-rule{background:var(--red);border-radius:2px;width:60px;height:3px;margin-bottom:24px}.qr-poster-canvas{border-radius:8px;display:block;width:220px!important;max-width:100%!important;height:auto!important}.qr-poster-caption{color:var(--red);letter-spacing:.3px;margin:20px 0 4px;font-size:20px;font-weight:800}.qr-poster-url{color:var(--gray);word-break:break-all;margin:0;font-size:11px}.qr-poster-phone{color:var(--red);letter-spacing:.3px;margin:10px 0 0;font-size:17px;font-weight:800;text-decoration:none;display:block}.qr-poster-footer{color:var(--gray);padding-top:24px;font-size:10px;line-height:1.6}.download-qr-link{text-align:center;border-radius:10px;margin-top:20px;padding:13px 18px;font-size:15px;font-weight:600;text-decoration:none;display:block}.site-footer{text-align:center;color:var(--gray);border-top:1px solid #e5e7eb;margin-top:28px;padding-top:16px;font-size:12px;line-height:1.6}.admin-nav{background:var(--card);border-bottom:1px solid #e5e7eb;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:4px 16px;padding:0 20px;display:flex}.admin-nav-links{scrollbar-width:none;gap:4px;display:flex;overflow-x:auto}.admin-nav-links::-webkit-scrollbar{display:none}.admin-nav-link{color:var(--gray);border-bottom:2px solid #0000;flex-shrink:0;padding:14px 12px;font-size:14px;font-weight:600;text-decoration:none}.admin-nav-link:hover{color:var(--dark)}.admin-nav-link.active{color:var(--red);border-bottom-color:var(--red)}.admin-nav-user{color:var(--gray);flex-shrink:0;align-items:center;gap:10px;padding:10px 0;font-size:13px;display:flex}.map-container{border-radius:12px;width:100%;height:320px;overflow:hidden}.map-legend{color:var(--gray);flex-wrap:wrap;gap:10px 16px;margin-top:10px;font-size:12px;display:flex}.map-legend span{align-items:center;gap:5px;display:inline-flex}.map-legend i{border-radius:50%;flex-shrink:0;width:10px;height:10px;display:inline-block}.map-legend i.pin{border-radius:50% 50% 50% 0;transform:rotate(-45deg)}.timeline{flex-direction:column;margin:12px 0;display:flex}.timeline-step{gap:12px;padding-bottom:16px;display:flex;position:relative}.timeline-step:last-child{padding-bottom:0}.timeline-step:after{content:"";background:#e5e7eb;width:2px;position:absolute;top:20px;bottom:0;left:9px}.timeline-step:last-child:after{display:none}.timeline-dot{color:#fff;z-index:1;background:#d1d5db;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:20px;height:20px;font-size:11px;font-weight:700;display:flex}.timeline-step.done .timeline-dot{background:var(--green)}.timeline-body .label{font-size:13px;font-weight:600}.timeline-step.pending .timeline-body .label{color:var(--gray);font-weight:500}.timeline-body .time{color:var(--gray);margin-top:1px;font-size:12px}.request-row{border:1px solid #eceef2;border-radius:12px;margin-bottom:10px;padding:14px}.request-row .top{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;margin-bottom:6px;display:flex}.request-row .name{font-weight:600}.request-row .meta{color:var(--gray);margin-top:2px;font-size:13px}.request-row .actions{flex-wrap:wrap;gap:8px;margin-top:10px;display:flex}a.maps-link{color:var(--blue);margin-top:8px;font-size:14px;font-weight:600;text-decoration:none;display:inline-block}.overlay{z-index:9999;background:#0000008c;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.popup-card{text-align:center;background:#fff;border-radius:16px;width:100%;max-width:380px;padding:24px}.popup-card .siren{font-size:40px}.popup-card h2{margin:8px 0 4px;font-size:20px}.popup-card p{word-break:break-word}.popup-card-wide{text-align:left;max-width:600px}.popup-card-wide h2{text-align:center}.popup-card-wide .btn-primary{margin-top:16px}.route-map{height:360px;margin-top:8px}details summary{cursor:pointer;font-size:14px;font-weight:600}.top-links{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;display:flex}.top-links a{font-size:14px}
