:root{--bg-primary:#fff;--bg-secondary:#f8fafc;--bg-tertiary:#f1f5f9;--border-color:#e2e8f0;--text-primary:#1e293b;--text-secondary:#64748b;--text-tertiary:#94a3b8;--accent-primary:#3b82f6;--accent-primary-hover:#2563eb;--accent-success:#10b981;--accent-success-hover:#059669;--accent-danger:#ef4444;--accent-danger-hover:#dc2626;--accent-warning:#f59e0b;--accent-warning-hover:#d97706;--accent-info:#06b6d4;--accent-info-hover:#0891b2;--accent-purple:#8b5cf6;--accent-purple-hover:#7c3aed;--accent-teal:#14b8a6;--accent-teal-hover:#0d9488;--shadow-sm:0 1px 2px 0 rgba(0,0,0,.05);--shadow-md:0 4px 6px -1px rgba(0,0,0,.1);--shadow-lg:0 10px 15px -3px rgba(0,0,0,.1)}body.dark-mode{--bg-primary:#0f172a;--bg-secondary:#1e293b;--bg-tertiary:#334155;--border-color:#334155;--text-primary:#f1f5f9;--text-secondary:#cbd5e1;--text-tertiary:#94a3b8;--accent-primary:#60a5fa;--accent-primary-hover:#3b82f6;--accent-success:#34d399;--accent-success-hover:#10b981;--accent-danger:#f87171;--accent-danger-hover:#ef4444;--accent-warning:#fbbf24;--accent-warning-hover:#f59e0b;--accent-info:#22d3ee;--accent-info-hover:#06b6d4;--accent-purple:#a78bfa;--accent-purple-hover:#8b5cf6;--accent-teal:#2dd4bf;--accent-teal-hover:#14b8a6;--shadow-sm:0 1px 2px 0 rgba(0,0,0,.3);--shadow-md:0 4px 6px -1px rgba(0,0,0,.4);--shadow-lg:0 10px 15px -3px rgba(0,0,0,.5)}*{box-sizing:border-box;padding:0;margin:0}body,html{max-width:100vw;overflow-x:hidden;height:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}#__next,body>*{min-height:0}.app-shell{display:flex;height:100vh;height:100dvh;overflow:hidden;position:relative}.app-sidebar-slot{width:280px;flex-shrink:0;height:100%;min-height:0}.app-sidebar-slot.is-drawer{position:fixed;top:0;left:0;z-index:1101;height:100vh;height:100dvh;width:min(85vw,320px);padding-left:env(safe-area-inset-left);transition:transform .3s cubic-bezier(.25,.46,.45,.94)}.app-sidebar-slot.is-closed{transform:translateX(-100%);pointer-events:none}.app-sidebar-overlay{position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:1100}.app-shell.sidebar-open .leaflet-control-zoom{display:none!important}.app-map-slot{flex:1 1;position:relative;overflow:hidden;min-width:0;min-height:0}#map-wrapper,#map-wrapper-placeholder,.map-wrapper{position:relative;width:100%;height:100%;min-height:0}.hamburger-button{display:flex;position:fixed;top:max(12px,env(safe-area-inset-top));right:max(12px,env(safe-area-inset-right));z-index:1102;background:var(--bg-primary);border:1px solid var(--border-color);border-radius:8px;width:48px;height:48px;cursor:pointer;box-shadow:var(--shadow-md);align-items:center;justify-content:center;color:var(--text-primary);transition:all .2s ease;touch-action:manipulation}.hamburger-button:hover{background:var(--bg-secondary)}.map-placing-pin .leaflet-marker-pane,.map-placing-pin .leaflet-overlay-pane .leaflet-interactive,.map-placing-pin .leaflet-overlay-pane path,.map-placing-pin .leaflet-shadow-pane{pointer-events:none!important}.map-banner{position:absolute;top:20px;left:50%;transform:translateX(-50%);z-index:1000;color:#fff;padding:12px 24px;border-radius:8px;box-shadow:0 4px 6px rgba(0,0,0,.3);font-size:16px;font-weight:700;text-align:center;pointer-events:none;max-width:min(560px,calc(100% - 48px));box-sizing:border-box}.map-banner-pulse{animation:pulse 2s infinite}.map-banner-pin{background-color:#0077b6}.map-banner-success{background-color:#28a745}.map-banner-warning{background-color:#ffc107;color:#333}.map-banner-purple{background-color:#9b59b6}.map-banner-teal{background-color:#16a085}@media (max-width:1024px){html{font-size:15px}body{position:fixed;width:100%;height:100%;overflow:hidden;overscroll-behavior:none}.mobile-sidebar{overflow-y:auto;-webkit-overflow-scrolling:touch}.map-banner{top:max(12px,env(safe-area-inset-top));left:max(72px,calc(env(safe-area-inset-left) + 64px));right:max(68px,calc(env(safe-area-inset-right) + 56px));transform:none;max-width:none;font-size:13px;padding:10px 12px;line-height:1.35}.leaflet-top{top:max(8px,env(safe-area-inset-top))}.leaflet-left{left:max(8px,env(safe-area-inset-left))}.leaflet-bottom{bottom:max(0px,env(safe-area-inset-bottom))}.leaflet-control-zoom a{width:36px!important;height:36px!important;line-height:36px!important}.leaflet-control-attribution{max-width:min(220px,46vw);font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.leaflet-popup-content-wrapper{max-width:min(280px,calc(100vw - 48px))}.leaflet-popup-content{margin:10px 12px;font-size:13px}.entity-popup{min-width:0;max-width:min(240px,calc(100vw - 64px))}.parroquia-label{font-size:10px!important;padding:2px 6px!important}.checkboxLabel,button,input[type=checkbox]{min-height:44px}.button{min-height:48px}.checkboxLabel{padding:12px 8px}}@media (max-width:768px){html{font-size:14px}}@media (max-width:480px){.hamburger-button{width:44px;height:44px;top:max(10px,env(safe-area-inset-top));right:max(10px,env(safe-area-inset-right))}.map-banner{font-size:12px;padding:8px 10px}}body{color:#333;background:linear-gradient(180deg,#e6f7ff,#b3e0ff);font-family:Arial,sans-serif;transition:background .3s ease,color .3s ease}body.dark-mode{color:#f1f5f9;background:linear-gradient(180deg,#0f172a,#1e293b)}a{color:inherit;text-decoration:none}@media (prefers-color-scheme:dark){html{color-scheme:dark}}.dropdown{position:relative;display:inline-block}.dropdown-button{padding:10px 20px;background-color:#007bff;color:#fff;border:none;border-radius:5px;cursor:pointer;font-size:16px}.dropdown-content{display:none;position:absolute;background-color:#f9f9f9;min-width:160px;box-shadow:0 8px 16px 0 rgba(0,0,0,.2);z-index:1;border-radius:5px}.dropdown-content a{color:#000;padding:12px 16px;text-decoration:none;display:block}.dropdown-content a:hover{background-color:#e6f7ff}.dropdown:hover .dropdown-content{display:block}.dropdown:hover .dropdown-button{background-color:#0056b3}.leaflet-container{transition:zoom .8s cubic-bezier(.25,.46,.45,.94);background-color:#87ceeb}body.dark-mode .leaflet-container{background-color:#1e293b}.dark-map-tiles{filter:invert(90%) hue-rotate(180deg) brightness(85%) contrast(90%)}.leaflet-tile,.leaflet-tile-container,.leaflet-tile-pane{background-color:#87ceeb}.leaflet-popup-content-wrapper,.leaflet-popup-tip{background:var(--bg-primary)!important;color:var(--text-primary)!important;border:1px solid var(--border-color);box-shadow:var(--shadow-lg)}.leaflet-popup-content{margin:14px 16px}.leaflet-popup-content,.leaflet-popup-content h3,.leaflet-popup-content strong{color:var(--text-primary)!important}.leaflet-popup-content p{color:var(--text-secondary)!important}.leaflet-popup-content a{color:var(--accent-primary)!important;font-weight:600;text-decoration:underline}.leaflet-popup-close-button{color:var(--text-secondary)!important}.leaflet-tooltip{background:var(--bg-primary)!important;border:1px solid var(--border-color)!important;color:var(--text-primary)!important;box-shadow:var(--shadow-md)!important}.leaflet-tooltip-top:before{border-top-color:var(--bg-primary)!important}.user-location-icon.leaflet-div-icon,.vehiculo-marker.leaflet-div-icon{background:transparent!important;border:none!important}.user-location-marker{position:relative;width:44px;height:44px;pointer-events:none}.user-location-dot{z-index:2;width:18px;height:18px;margin:-9px 0 0 -9px;background:#2563eb;border:3px solid #fff;box-shadow:0 1px 8px rgba(37,99,235,.55)}.user-location-dot,.user-location-pulse{position:absolute;top:50%;left:50%;border-radius:50%}.user-location-pulse{z-index:1;width:22px;height:22px;margin:-11px 0 0 -11px;background:rgba(37,99,235,.35);animation:user-location-pulse 2s ease-out infinite}@keyframes user-location-pulse{0%{transform:scale(.7);opacity:.75}to{transform:scale(2.6);opacity:0}}.map-wrapper-dark .leaflet-popup-content-wrapper,.map-wrapper-dark .leaflet-popup-tip,.map-wrapper-dark .leaflet-tooltip{background:#0f172a!important;color:#f8fafc!important;border-color:#475569!important}.map-wrapper-dark .leaflet-popup-content,.map-wrapper-dark .leaflet-popup-content h3,.map-wrapper-dark .leaflet-popup-content p,.map-wrapper-dark .leaflet-popup-content strong,.map-wrapper-dark .leaflet-tooltip,.map-wrapper-dark .parroquia-popup small,.map-wrapper-dark .parroquia-popup span,.map-wrapper-dark .parroquia-popup strong{color:#f8fafc!important}.map-wrapper-dark .leaflet-tooltip-top:before{border-top-color:#0f172a!important}.entity-popup{position:relative;min-width:205px;overflow:hidden}.entity-popup-content{position:relative;z-index:1}.entity-popup h3{margin:0 0 8px;font-size:15px;line-height:1.3}.entity-popup-watermark{position:absolute;right:-16px;bottom:-22px;z-index:0;width:105px;height:105px;transform:rotate(45deg);opacity:.14;pointer-events:none}.map-wrapper-dark .entity-popup-watermark,body.dark-mode .entity-popup-watermark{opacity:.2}.entity-links{display:flex;flex-direction:column;gap:4px;margin-top:10px;padding-top:8px;border-top:1px solid var(--border-color)}.entity-links>strong{margin-bottom:2px;color:var(--text-primary)!important;font-size:12px}.entity-link{display:flex;align-items:center;gap:8px;padding:7px 10px;border:1px solid var(--border-color);border-radius:7px;background:var(--bg-tertiary);color:var(--accent-primary)!important;text-decoration:none!important;transition:background-color .2s ease,transform .2s ease}.entity-link:hover{background:var(--bg-secondary);transform:translateX(2px)}.entity-link svg{flex-shrink:0}.pin-delete-button{display:flex;align-items:center;justify-content:center;width:100%;margin-top:10px;padding:8px 12px;border:none;border-radius:6px;background:var(--accent-danger);color:#fff!important;font-size:13px;font-weight:600;cursor:pointer;touch-action:manipulation}.pin-delete-button:hover{background:var(--accent-danger-hover)}.pin-navigate-button{display:flex;align-items:center;justify-content:center;width:100%;margin-top:10px;padding:8px 12px;border:none;border-radius:6px;background:var(--accent-success);color:#fff!important;font-size:13px;font-weight:600;cursor:pointer;touch-action:manipulation}.pin-navigate-button:hover{background:var(--accent-success-hover)}.pin-navigate-button-secondary{background:var(--bg-tertiary);color:var(--text-primary)!important;border:1px solid var(--border-color)}.pin-navigate-button-secondary:hover{background:var(--bg-secondary)}.entity-navigation{margin-top:10px;padding-top:8px;border-top:1px solid var(--border-color)}.entity-route-info,.entity-route-status{margin:0 0 8px;font-size:12px;color:var(--text-secondary)!important}.entity-route-info strong{color:var(--text-primary)!important}.map-wrapper-dark .entity-route-info,.map-wrapper-dark .entity-route-status{color:#cbd5e1!important}.map-wrapper-dark .pin-navigate-button-secondary{background:#1e293b;border-color:#475569;color:#f8fafc!important}.entity-route-picker-title{margin:0 0 8px;font-size:12px;font-weight:700;color:var(--text-primary)!important}.entity-route-picker-help{margin:-3px 0 8px;font-size:11px;color:var(--text-secondary)!important}.entity-route-picker{display:flex;flex-direction:column;gap:6px;margin-bottom:8px}.entity-route-option{display:flex;flex-direction:column;align-items:flex-start;gap:2px;width:100%;padding:8px 10px;border:1px solid var(--border-color);border-radius:6px;background:var(--bg-tertiary);color:var(--text-primary)!important;text-align:left;cursor:pointer;touch-action:manipulation}.entity-route-option.is-active{border-color:var(--accent-success);background:rgba(16,185,129,.12);box-shadow:inset 0 0 0 1px var(--accent-success)}.entity-route-option-label{font-size:12px;font-weight:700}.entity-route-option-meta{font-size:11px;color:var(--text-secondary)!important}.route-selector-panel{position:absolute;left:50%;bottom:max(20px,env(safe-area-inset-bottom));z-index:1001;transform:translateX(-50%);width:min(420px,calc(100% - 32px));padding:12px;border-radius:12px;border:1px solid var(--border-color);background:var(--bg-primary);box-shadow:var(--shadow-lg);pointer-events:auto}.route-selector-title{margin:0 0 10px;font-size:13px;font-weight:700;color:var(--text-primary);text-align:center}.route-selector-options{display:flex;flex-direction:column;gap:8px}.route-selector-option{display:flex;flex-direction:column;align-items:flex-start;gap:2px;width:100%;padding:10px 12px;border:1px solid var(--border-color);border-radius:8px;background:var(--bg-secondary);color:var(--text-primary);text-align:left;cursor:pointer;touch-action:manipulation}.route-selector-option.is-active{border-color:var(--accent-success);background:rgba(16,185,129,.12);box-shadow:inset 0 0 0 1px var(--accent-success)}.route-selector-option-label{font-size:13px;font-weight:700}.route-selector-option-meta{font-size:12px;color:var(--text-secondary)}.route-selector-clear{width:100%;margin-top:10px;padding:8px 12px;border:1px solid var(--border-color);border-radius:8px;background:var(--bg-tertiary);color:var(--text-primary);font-size:13px;font-weight:600;cursor:pointer;touch-action:manipulation}.route-selector-clear:hover{background:var(--bg-secondary)}.map-wrapper-dark .route-selector-panel{background:#0f172a;border-color:#475569}.map-wrapper-dark .route-selector-clear,.map-wrapper-dark .route-selector-option{background:#1e293b;border-color:#475569;color:#f8fafc}.map-wrapper-dark .route-selector-option.is-active{background:rgba(16,185,129,.18)}@media (max-width:1024px){.route-selector-panel{bottom:max(12px,env(safe-area-inset-bottom));width:calc(100% - 24px)}}.map-wrapper-dark .entity-link{background:#1e293b;border-color:#475569;color:#93c5fd!important}.map-wrapper-dark .entity-link:hover{background:#334155}input[type=range]{transition:transform .1s ease}@keyframes pulse{0%,to{opacity:1}50%{opacity:.88}}.parroquia-label{background:hsla(0,0%,100%,.92)!important;border:1px solid rgba(30,41,59,.35)!important;border-radius:6px!important;box-shadow:0 2px 8px rgba(0,0,0,.12)!important;color:#1e293b!important;font-size:11px!important;font-weight:700!important;padding:3px 8px!important;pointer-events:none!important;text-align:center!important;white-space:nowrap!important}body.dark-mode .parroquia-label{background:rgba(15,23,42,.9)!important;border-color:rgba(148,163,184,.4)!important;color:#f1f5f9!important}.parroquia-popup strong{display:block;color:var(--text-primary)!important;font-size:15px;font-weight:700;line-height:1.25}.parroquia-popup small,.parroquia-popup span{display:block;margin-top:5px}.parroquia-popup span{color:var(--text-secondary)!important;font-size:12px}.parroquia-popup small{color:var(--text-secondary)!important;font-size:11px}