:root{--bg-color:#0c0f16;--panel-bg:#121826bf;--panel-border:#ffffff14;--text-primary:#f3f4f6;--text-secondary:#9ca3af;--accent-publico:#10b981;--accent-privado:#06b6d4;--accent-camiones:#f59e0b;--active-accent:var(--accent-publico);--active-accent-rgb:16, 185, 129;--shadow-main:0 8px 32px 0 #0000005e;--font-family:"Outfit", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif}*{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font-family);background-color:var(--bg-color);color:var(--text-primary);width:100vw;height:100vh;overflow:hidden}#map{z-index:1;width:100%;height:100%;position:absolute;top:0;left:0}.sidebar{background:var(--panel-bg);-webkit-backdrop-filter:blur(16px);border:1px solid var(--panel-border);z-index:10;width:380px;box-shadow:var(--shadow-main);border-radius:16px;flex-direction:column;transition:all .3s cubic-bezier(.4,0,.2,1);display:flex;position:absolute;top:20px;bottom:20px;left:20px}.sidebar-header{border-bottom:1px solid var(--panel-border);padding:24px}.logo-container{align-items:center;gap:10px;margin-bottom:6px;display:flex;position:relative}.logo-dot{background-color:var(--active-accent);border-radius:50%;width:10px;height:10px;transition:background-color .3s}.logo-pulse{background-color:var(--active-accent);opacity:.75;border-radius:50%;width:10px;height:10px;transition:background-color .3s;animation:2s infinite pulse;position:absolute;left:0}@keyframes pulse{0%{opacity:.75;transform:scale(1)}to{opacity:0;transform:scale(2.8)}}.sidebar h1{letter-spacing:-.02em;font-size:1.5rem;font-weight:600}.subtitle{color:var(--text-secondary);font-size:.85rem}.sidebar-scroll{flex-direction:column;flex:1;gap:24px;padding:24px;display:flex;overflow-y:auto}.sidebar-scroll::-webkit-scrollbar{width:6px}.sidebar-scroll::-webkit-scrollbar-track{background:0 0}.sidebar-scroll::-webkit-scrollbar-thumb{background:#ffffff1a;border-radius:3px}.sidebar-scroll::-webkit-scrollbar-thumb:hover{background:#fff3}.control-group{flex-direction:column;gap:10px;display:flex}.control-group h3{text-transform:uppercase;letter-spacing:.05em;color:var(--text-secondary);font-size:.9rem;font-weight:500}.toggle-buttons{background:#ffffff0a;border:1px solid #ffffff05;border-radius:10px;gap:8px;padding:4px;display:flex}.toggle-buttons .btn{color:var(--text-secondary);font-family:var(--font-family);cursor:pointer;background:0 0;border:none;border-radius:8px;flex:1;justify-content:center;align-items:center;gap:6px;padding:8px 12px;font-size:.85rem;font-weight:500;transition:all .2s;display:flex}.toggle-buttons .btn:hover{color:var(--text-primary);background:#ffffff0a}.toggle-buttons .btn.active{color:var(--bg-color);background-color:var(--active-accent);box-shadow:0 4px 12px rgba(var(--active-accent-rgb), .3);font-weight:600}.helper-text{color:var(--text-secondary);font-size:.75rem}.slider-header{justify-content:space-between;align-items:center;display:flex}.slider-value{color:var(--active-accent);background:rgba(var(--active-accent-rgb), .1);border-radius:4px;padding:2px 8px;font-size:.95rem;font-weight:600;transition:all .3s}input[type=range]{appearance:none;background:#ffffff1a;border-radius:3px;outline:none;width:100%;height:6px}input[type=range]::-webkit-slider-thumb{appearance:none;background:var(--active-accent);cursor:pointer;width:16px;height:16px;box-shadow:0 0 10px rgba(var(--active-accent-rgb), .5);border-radius:50%;transition:all .1s}input[type=range]::-webkit-slider-thumb:hover{transform:scale(1.2)}.setting-row{flex-direction:column;gap:6px;margin-bottom:8px;display:flex}.setting-row label{color:var(--text-secondary);font-size:.8rem}.checkbox-container{align-items:center;gap:8px;font-size:.85rem;display:flex}.checkbox-container input[type=checkbox]{accent-color:var(--active-accent);cursor:pointer;width:16px;height:16px}select{border:1px solid var(--panel-border);color:var(--text-primary);font-family:var(--font-family);cursor:pointer;background:#ffffff0d;border-radius:8px;outline:none;padding:8px 12px}select option{color:var(--text-primary);background-color:#121826}.stats-grid{gap:12px;display:flex}.stat-box{border:1px solid var(--panel-border);background:#ffffff08;border-radius:12px;flex-direction:column;flex:1;align-items:center;padding:12px;display:flex}.stat-label{color:var(--text-secondary);margin-bottom:4px;font-size:.75rem}.stat-value{color:var(--active-accent);font-size:1.35rem;font-weight:700;transition:color .3s}.stat-unit{color:var(--text-secondary);font-size:.7rem}.filter-status{background:rgba(var(--active-accent-rgb), .15);border:1px dashed var(--active-accent);border-radius:10px;justify-content:space-between;align-items:center;margin-top:10px;padding:10px 14px;animation:.3s fadeIn;display:flex}.filter-status.hidden{display:none!important}.filter-status-content{align-items:center;gap:8px;font-size:.85rem;font-weight:500;display:flex}.btn-clear{color:var(--text-primary);cursor:pointer;background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;padding:2px;font-size:.8rem;transition:background-color .2s;display:flex}.btn-clear:hover{background:#ffffff1a}.top-routes{margin-top:12px}.top-routes h4{color:var(--text-secondary);margin-bottom:8px;font-size:.8rem;font-weight:600}.top-routes ul{flex-direction:column;gap:8px;list-style:none;display:flex}.top-routes li{background:#ffffff05;border:1px solid #ffffff08;border-radius:8px;justify-content:space-between;align-items:center;padding:8px 12px;font-size:.8rem;transition:transform .2s;display:flex}.top-routes li:hover{background:#ffffff0a;transform:translate(4px)}.route-names{flex-direction:column;max-width:70%;display:flex}.route-od{text-overflow:ellipsis;white-space:nowrap;font-weight:500;overflow:hidden}.route-count{color:var(--active-accent);font-weight:600}.sidebar-footer{border-top:1px solid var(--panel-border);text-align:center;padding:16px 24px}.sidebar-footer p{color:var(--text-secondary);font-size:.7rem}.tooltip{color:var(--text-primary);z-index:999;pointer-events:none;background:#0a0f1aeb;border:1px solid #ffffff26;border-radius:8px;flex-direction:column;gap:6px;padding:12px 16px;font-size:.85rem;transition:opacity .15s;display:flex;position:absolute;box-shadow:0 4px 20px #00000080}.tooltip.hidden{opacity:0;display:none!important}.tooltip-title{border-bottom:1px solid #ffffff1a;padding-bottom:4px;font-size:.9rem;font-weight:700}.tooltip-row{justify-content:space-between;gap:20px;display:flex}.tooltip-value{color:var(--active-accent);font-weight:600}.loading-overlay{z-index:10000;background:#0c0f16e6;flex-direction:column;justify-content:center;align-items:center;gap:20px;width:100%;height:100%;transition:opacity .5s;display:flex;position:absolute;top:0;left:0}.loading-overlay.hidden{opacity:0;pointer-events:none}.spinner{border:4px solid #ffffff1a;border-left-color:var(--active-accent);border-radius:50%;width:40px;height:40px;animation:1s linear infinite spin}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes fadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.map-custom-controls{z-index:9;flex-direction:column;gap:8px;display:flex;position:absolute;top:110px;right:10px}.map-control-btn{border:1px solid var(--panel-border);width:29px;height:29px;color:var(--text-primary);cursor:pointer;background:#121826d9;border-radius:4px;justify-content:center;align-items:center;font-size:.95rem;transition:all .2s;display:flex;box-shadow:0 1px 4px #0000004d}.map-control-btn:hover{color:var(--active-accent);background:#ffffff1a}.map-control-btn.active{border-color:var(--active-accent);box-shadow:0 0 8px rgba(var(--active-accent-rgb), .3)}.sidebar-toggle-btn{background:var(--panel-bg);-webkit-backdrop-filter:blur(12px);border:1px solid var(--panel-border);width:44px;height:44px;color:var(--text-primary);cursor:pointer;z-index:100;box-shadow:var(--shadow-main);border-radius:50%;justify-content:center;align-items:center;font-size:1.25rem;transition:all .2s;display:none;position:absolute;top:20px;left:20px}.sidebar-toggle-btn:hover{border-color:var(--active-accent);background:#ffffff26}.sidebar-close-btn{border:1px solid var(--panel-border);width:28px;height:28px;color:var(--text-primary);cursor:pointer;background:#ffffff0d;border-radius:50%;justify-content:center;align-items:center;font-size:.8rem;transition:all .2s;display:none;position:absolute;top:15px;right:15px}.sidebar-close-btn:hover{color:#ff3b30;background:#ffffff26}@media (width<=768px){.sidebar-toggle-btn,.sidebar-close-btn{display:flex}.sidebar{z-index:1000;width:320px;max-width:calc(100vw - 40px);transition:transform .3s cubic-bezier(.4,0,.2,1);left:20px;transform:translate(-120%)}.sidebar.open{transform:translate(0)}.sidebar-header{padding-top:36px}}.export-container{flex-direction:column;gap:8px;display:flex}.btn-record-action{border:1px solid var(--panel-border);color:var(--text-primary);font-family:var(--font-family);cursor:pointer;background:#ffffff0d;border-radius:10px;justify-content:center;align-items:center;gap:10px;width:100%;padding:12px 16px;font-size:.9rem;font-weight:600;transition:all .3s;display:flex}.btn-record-action:hover{background:#ffffff1a;border-color:#fff3}.btn-record-action.recording{color:#fca5a5;background:#ef444433;border-color:#ef4444;animation:1.5s infinite borderPulse}.record-dot-icon{font-size:.8rem;transition:transform .2s}.btn-record-action.recording .record-dot-icon{animation:1s infinite alternate scalePulse}@keyframes borderPulse{0%{box-shadow:0 0 #ef444466}70%{box-shadow:0 0 0 8px #ef444400}to{box-shadow:0 0 #ef444400}}@keyframes scalePulse{0%{opacity:1;transform:scale(1)}to{opacity:.5;transform:scale(1.3)}}
