:root{--fc-red:#d32f2f;--fc-dark-red:#b71c1c;--fc-gray:#343a40;--fc-light-gray:#f8f9fa;--fc-accent:#0288d1}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;background-color:var(--fc-light-gray);color:var(--fc-gray);overflow-x:hidden}.navbar-custom{background-color:#fff;box-shadow:0 2px 10px rgba(0,0,0,.1);padding:8px 20px;position:-webkit-sticky;position:sticky;top:0;z-index:50}.navbar-logo{height:40px;width:auto;object-fit:contain}.brand-text{color:var(--fc-red);font-weight:800;font-size:1.5rem;text-transform:uppercase;letter-spacing:1px}.brand-text span{color:var(--fc-gray)}.live-badge-nav{display:flex;align-items:center;gap:6px;background:var(--fc-red);color:#fff;padding:6px 14px;border-radius:20px;font-size:.8rem;font-weight:700;letter-spacing:1px;animation:pulse 2s infinite}.public-page{min-height:calc(100dvh - 60px);position:relative}.bg-map-layer{position:fixed;top:56px;left:0;right:0;bottom:0;z-index:0;filter:blur(6px) brightness(.92) saturate(.7);pointer-events:none}.bg-map-layer:after{content:"";position:absolute;inset:0;background:rgba(248,250,252,.45);z-index:1}.no-events-wrapper{min-height:calc(100dvh - 60px);display:flex;align-items:center;justify-content:center;position:relative;z-index:2;padding:2rem 1rem}.no-events-content{text-align:center;max-width:480px;background:hsla(0,0%,100%,.88);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-radius:20px;padding:2.5rem 2rem;box-shadow:0 8px 40px rgba(0,0,0,.08);border:1px solid hsla(0,0%,100%,.7)}.no-events-logo{height:70px;width:auto;margin-bottom:1.5rem;object-fit:contain}.no-events-title{font-size:1.6rem;font-weight:800;color:#0f172a;margin-bottom:.75rem;line-height:1.3}.no-events-desc{font-size:.95rem;color:#64748b;line-height:1.7;margin-bottom:1.5rem}.no-events-divider{width:60px;height:3px;background:linear-gradient(90deg,var(--fc-red),#ef5350);margin:0 auto 1.5rem;border-radius:2px}.no-events-cta-text{font-size:.9rem;color:#475569;font-weight:600;margin-bottom:1rem}.no-events-fb-btn{display:inline-flex;align-items:center;gap:10px;background:#1877f2;color:#fff;padding:12px 24px;border-radius:12px;text-decoration:none;font-weight:600;font-size:.9rem;transition:all .3s;box-shadow:0 4px 15px rgba(24,119,242,.25)}.no-events-fb-btn:hover{transform:translateY(-2px);box-shadow:0 8px 25px rgba(24,119,242,.35);color:#fff}.events-showcase{min-height:calc(100dvh - 60px);padding:2rem 1rem;max-width:720px;margin:0 auto;position:relative;z-index:2}.next-event-hero{background:hsla(0,0%,100%,.92);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-radius:16px;box-shadow:0 8px 40px rgba(0,0,0,.08);border:1px solid hsla(0,0%,100%,.7);overflow:hidden;position:relative;margin-bottom:2rem}.next-event-accent{height:5px;background:linear-gradient(90deg,var(--fc-red),#ef5350,var(--fc-dark-red))}.next-event-top{display:flex;align-items:center;justify-content:center;margin-bottom:.75rem}.next-event-logo{height:60px;width:auto;object-fit:contain}.next-event-content{padding:2rem}.next-event-badge{display:inline-flex;align-items:center;gap:6px;background:rgba(211,47,47,.08);color:var(--fc-red);padding:5px 14px;border-radius:20px;font-size:.7rem;font-weight:700;letter-spacing:1.5px;margin-bottom:1rem}.next-event-name{font-size:1.8rem;font-weight:800;color:#0f172a;margin-bottom:1.5rem;line-height:1.2}.next-event-meta{display:flex;flex-direction:column;gap:1rem;margin-bottom:1.5rem}.next-event-meta-item{display:flex;align-items:flex-start;gap:12px;color:var(--fc-red)}.meta-label{font-size:.72rem;font-weight:600;color:#94a3b8;text-transform:uppercase;letter-spacing:.5px}.meta-value{font-size:.95rem;color:#334155;font-weight:500}.next-event-countdown{display:inline-flex;align-items:center;gap:8px;background:#fef3c7;color:#92400e;padding:8px 16px;border-radius:10px;font-size:.85rem;margin-bottom:1.25rem}.next-event-info{display:flex;align-items:flex-start;gap:10px;background:#f8fafc;border:1px solid #e2e8f0;padding:1rem;border-radius:10px;font-size:.85rem;color:#64748b;line-height:1.5}.upcoming-section{margin-bottom:2rem}.upcoming-title{font-size:.8rem;font-weight:700;color:#94a3b8;text-transform:uppercase;letter-spacing:2px;margin-bottom:.75rem}.upcoming-list{display:flex;flex-direction:column;gap:.5rem}.upcoming-card{display:flex;align-items:center;gap:1rem;background:hsla(0,0%,100%,.88);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);padding:1rem 1.25rem;border-radius:12px;box-shadow:0 2px 8px rgba(0,0,0,.05);border:1px solid hsla(0,0%,100%,.6);transition:all .2s}.upcoming-card:hover{box-shadow:0 4px 12px rgba(0,0,0,.08);transform:translateY(-1px)}.upcoming-card-date{display:flex;flex-direction:column;align-items:center;min-width:48px;padding:6px;background:rgba(211,47,47,.06);border-radius:10px}.upcoming-day{font-size:1.3rem;font-weight:800;color:var(--fc-red);line-height:1}.upcoming-month{font-size:.6rem;font-weight:700;color:var(--fc-red);letter-spacing:1px}.upcoming-card-info{flex:1 1;min-width:0}.upcoming-card-name{font-size:.95rem;font-weight:700;color:#0f172a;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.upcoming-card-route{display:flex;align-items:center;gap:4px;font-size:.8rem;color:#64748b;margin-top:2px}.upcoming-card-time{color:#94a3b8}.events-footer{text-align:center;padding:1rem 0 2rem}.events-fb-link{display:inline-flex;align-items:center;gap:8px;color:#64748b;font-size:.82rem;text-decoration:none;padding:8px 16px;border-radius:8px;transition:all .2s}.events-fb-link:hover{background:#f1f5f9;color:#1877f2}.live-container{height:calc(100dvh - 60px);display:flex;flex-direction:column}.map-wrapper{flex-grow:1;position:relative;background:#e9ecef}.leaflet-container{width:100%;height:100%;z-index:1}.live-status-bar{position:absolute;top:15px;left:50%;transform:translateX(-50%);z-index:1000;display:flex;align-items:center;background:hsla(0,0%,100%,.95);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);padding:6px 14px;border-radius:50px;box-shadow:0 4px 20px rgba(0,0,0,.15);border:1px solid hsla(0,0%,100%,.5);gap:12px;max-width:95vw;white-space:nowrap}.live-status-item{display:flex;align-items:center;gap:8px}.live-status-item.event-name{flex-direction:column;align-items:flex-start;padding-right:12px;border-right:1px solid #e2e8f0;line-height:1;min-width:0}.live-status-item.event-name .label{font-size:.6rem;text-transform:uppercase;color:#94a3b8;font-weight:700;letter-spacing:.5px}.live-status-item.event-name .value{font-size:.9rem;font-weight:800;color:#0f172a;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.live-status-item .label{font-size:.6rem;text-transform:uppercase;color:#94a3b8;font-weight:700;letter-spacing:.5px}.live-status-item .value{font-size:.9rem;font-weight:800;color:#0f172a}.km-progress{background:rgba(211,47,47,.05);padding:4px 12px;border-radius:20px}.km-progress .value{color:var(--fc-red)!important;font-size:1.1rem!important}.km-progress.is-neutralized{background:rgba(245,158,11,.12)}.km-progress.is-neutralized .value{color:#b45309!important;font-size:.85rem!important;letter-spacing:.5px}.km-progress.is-neutralized svg{color:#b45309!important}.speed-pill{background:#f1f5f9;padding:4px 10px;border-radius:20px;font-size:.8rem;color:#475569}.audio-player-bar{background-color:#fff;color:var(--fc-gray);padding:15px 20px max(15px,env(safe-area-inset-bottom));display:flex;align-items:center;justify-content:space-between;box-shadow:0 -5px 20px rgba(0,0,0,.15);z-index:10;position:relative;border-top:4px solid var(--fc-red)}.audio-controls{gap:15px}.audio-controls,.play-btn{display:flex;align-items:center}.play-btn{background-color:var(--fc-red);border:none;width:50px;height:50px;border-radius:50%;justify-content:center;color:#fff;transition:transform .2s;box-shadow:0 4px 10px rgba(211,47,47,.4)}.play-btn:hover{transform:scale(1.05);background-color:var(--fc-dark-red)}.volume-control{display:flex;align-items:center;gap:10px;width:150px}.volume-control>button{color:var(--fc-gray)!important}.form-range::-webkit-slider-thumb{background:var(--fc-red)}.live-indicator{display:flex;align-items:center;gap:8px;font-weight:700;color:#dc3545;animation:pulse 2s infinite}.live-dot{width:10px;height:10px;background-color:#dc3545;border-radius:50%}.transcription-panel{background-color:#f8f9fa;border-top:1px solid #dee2e6;padding:15px 20px;font-size:.95rem;color:#555;font-style:italic;display:flex;align-items:center;gap:10px}.ai-icon{color:var(--fc-accent)}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@media (max-width:768px){.navbar-logo{height:32px}.no-events-title{font-size:1.3rem}.no-events-desc{font-size:.88rem}.next-event-content{padding:1.25rem}.next-event-name{font-size:1.4rem}.next-event-badge{font-size:.65rem}.volume-control{width:100px}.play-btn{width:42px;height:42px}}@media (max-width:400px){.no-events-icon{width:70px;height:70px}.no-events-icon svg{width:36px;height:36px}.events-showcase{padding:1rem .75rem}}.reconnecting-overlay{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:1100;background:rgba(15,23,42,.85);color:#fff;padding:1.5rem 2.5rem;border-radius:20px;display:flex;align-items:center;gap:1.25rem;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);box-shadow:0 10px 40px rgba(0,0,0,.3);border:1px solid hsla(0,0%,100%,.1);pointer-events:none;text-align:left;min-width:320px}.reconnecting-icon{color:#fbbf24;animation:rotate-pulse 2s ease-in-out infinite}@keyframes rotate-pulse{0%{transform:scale(1);opacity:.8}50%{transform:scale(1.2);opacity:1}to{transform:scale(1);opacity:.8}}.elevation-profile{position:absolute;left:0;right:0;bottom:0;height:80px;background:transparent;pointer-events:none;z-index:500;overflow:hidden}.osm-mini-credit{position:absolute;top:6px;right:6px;z-index:600;padding:2px 6px;background:hsla(0,0%,100%,.75);color:#475569;font-size:.65rem;font-weight:600;text-decoration:none;border-radius:4px;line-height:1.2;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.osm-mini-credit:hover{color:#0f172a;text-decoration:underline}.elevation-svg{width:100%;height:100%;display:block}.elevation-readout{position:absolute;top:6px;right:10px;display:flex;gap:12px;align-items:baseline;padding:4px 12px;background:hsla(0,0%,100%,.92);color:#0f172a;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);border-radius:14px;font-size:.75rem;font-weight:600;pointer-events:none;box-shadow:0 2px 8px rgba(15,23,42,.12)}.ep-ele,.ep-pct{color:#475569}.ep-km,.ep-km strong{color:var(--fc-red,#d32f2f)}.ep-km strong{font-weight:800;font-size:.9rem}.ep-neutralized{color:#b45309;font-weight:800;font-size:.8rem;letter-spacing:.5px}@media (max-width:600px){.elevation-profile{height:60px}.elevation-readout{font-size:.7rem;gap:8px;padding:3px 8px}}.sim-overlay{position:fixed;top:70px;right:12px;z-index:1100;width:280px;background:rgba(15,23,42,.92);color:#f1f5f9;border-radius:12px;padding:12px;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);box-shadow:0 10px 30px rgba(0,0,0,.35);border:1px solid rgba(148,163,184,.25);font-size:.85rem}.sim-overlay-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.sim-overlay-title{display:flex;align-items:center;gap:6px;font-size:.7rem;font-weight:800;letter-spacing:.5px;color:#fbbf24;text-transform:uppercase}.sim-overlay-collapse{background:transparent;border:0;color:#94a3b8;cursor:pointer;padding:4px;border-radius:4px;display:flex;align-items:center}.sim-overlay-collapse:hover{background:rgba(148,163,184,.15);color:#f1f5f9}.sim-overlay-body{display:flex;flex-direction:column;gap:10px}.sim-overlay-field{display:flex;flex-direction:column;gap:4px}.sim-overlay-label{font-size:.65rem;font-weight:700;color:#94a3b8;text-transform:uppercase;letter-spacing:.5px;display:flex;justify-content:space-between;align-items:baseline}.sim-overlay-kmval{color:#fbbf24;font-weight:800;font-size:.7rem;letter-spacing:0;text-transform:none}.sim-overlay-field input[type=range],.sim-overlay-field select{width:100%}.sim-overlay-field select{background:rgba(30,41,59,.9);color:#f1f5f9;border:1px solid rgba(148,163,184,.3);border-radius:6px;padding:6px 8px;font-size:.8rem}.sim-overlay-field input[type=range]{accent-color:#d32f2f}.sim-overlay-actions{display:flex;gap:6px}.sim-overlay-btn{flex:1 1;display:flex;align-items:center;justify-content:center;gap:5px;background:rgba(51,65,85,.7);color:#f1f5f9;border:1px solid rgba(148,163,184,.25);border-radius:6px;padding:6px 8px;font-size:.75rem;font-weight:700;cursor:pointer;transition:background .15s}.sim-overlay-btn:hover:not(:disabled){background:rgba(71,85,105,.9)}.sim-overlay-btn.active{background:#d32f2f;border-color:#d32f2f}.sim-overlay-btn:disabled{opacity:.4;cursor:not-allowed}.sim-overlay-hint{font-size:.65rem;color:#94a3b8;line-height:1.3}.sim-overlay-pill{position:fixed;top:70px;right:12px;z-index:1100;background:rgba(15,23,42,.9);color:#fbbf24;border:1px solid rgba(148,163,184,.3);border-radius:999px;padding:6px 12px;font-size:.7rem;font-weight:800;letter-spacing:.5px;cursor:pointer;display:flex;align-items:center;gap:6px;box-shadow:0 4px 14px rgba(0,0,0,.3);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.sim-overlay-pill:hover{background:rgba(30,41,59,.95)}@media (max-width:600px){.sim-overlay{width:calc(100vw - 24px);right:12px;left:12px}}.cyclist-marker-img{width:40px;height:40px;display:block;transform-origin:50% 50%;transition:transform .4s ease-out;will-change:transform}.audio-interrupted-banner{position:absolute;top:-36px;left:50%;transform:translateX(-50%);background:#f59e0b;color:#1f2937;border:none;border-radius:8px 8px 0 0;padding:8px 16px;font-size:.8rem;font-weight:700;cursor:pointer;box-shadow:0 -2px 8px rgba(0,0,0,.2);z-index:5;white-space:nowrap;animation:audio-banner-in .25s ease-out}.audio-interrupted-banner:hover{background:#fbbf24}@keyframes audio-banner-in{0%{transform:translate(-50%,8px);opacity:0}to{transform:translate(-50%);opacity:1}}