:root{--link-color:hsl(212 100% 45%);--link-hover-color:hsl(212 100% 45%)}a{color:var(--link-color);text-decoration:underline}nav>a,li>a{color:inherit;text-decoration:inherit}.hx-pt-4{padding-top:0!important}.hx-pb-8{padding-bottom:0!important}#map{height:calc(100vh - 64px);height:calc(100dvh - 64px);width:100vw;position:relative;left:50%;right:50%;margin-left:-50vw;margin-right:-50vw;font-family:roboto,sans-serif;font-weight:400;font-style:normal;font-size:14px;z-index:10}.esd-calendar{margin-left:5px}.disclaimer{font-size:.8em;margin-top:10px}.last-update{text-align:right;font-weight:300;font-style:italic;margin-top:0}.route-label{display:inline-block;border:1.5px solid #0078a8;border-radius:3px;margin-right:6px;margin-top:2px;padding:0 4px;font-weight:600;color:#0078a8;font-size:.9em;background-color:#f0f7ff;line-height:1.4;min-width:38px;text-align:center;flex-shrink:0}.route-line{margin-bottom:4px;padding:6px 8px;border-radius:4px;transition:all .15s ease;border-left:3px solid transparent;display:flex;flex-direction:column;align-items:flex-start}.route-line:hover{background-color:#f0f7ff}.route-line.active{background-color:#f0f7ff;border-left:3px solid #0078a8}.route-link{cursor:pointer;color:inherit;text-decoration:none;display:block}.route-link.active{font-weight:500;color:#0078a8}.route-details{margin-left:21px;display:none}.route-details.active{display:block}.route-header{display:flex;align-items:flex-start;width:100%;white-space:nowrap}.route-time{width:47px;padding-right:6px;font-family:roboto mono,monospace;font-size:13px;color:#333;font-weight:500;flex-shrink:0;margin-top:4px}.route-name{display:flex;align-items:flex-start;max-width:calc(100% - 47px);min-width:0}.route-schedule{display:none;padding-left:10px;border:1px solid #199900;margin-left:0;margin-top:5px;margin-bottom:5px;padding-right:10px;padding-top:5px;padding-bottom:5px}.route-schedule.active{display:block}.link-show{background:0 0;border:none;padding:0;color:var(--link-color);text-decoration:underline;cursor:pointer}.link-show:hover{color:var(--link-hover-color)}.station-routes-list{margin-bottom:16px}.station-routes-list.hidden{display:none}.station-description{color:#333;margin-bottom:16px;line-height:1.4;font-size:.9em}.route-loader{position:fixed;bottom:12vh;left:50%;transform:translateX(-50%);background-color:rgba(0,0,0,.8);color:#fff;padding:8px 16px;border-radius:4px;z-index:4000;backdrop-filter:blur(4px);font-weight:500;font-size:.9em}.railway-network-loader{position:fixed;bottom:12vh;left:50%;transform:translateX(-50%);background-color:rgba(0,0,0,.8);color:#fff;padding:8px 16px;border-radius:4px;z-index:4000;backdrop-filter:blur(4px);font-weight:500;font-size:.9em}.loading-text{font-size:14px;font-weight:500;text-align:center;white-space:nowrap}.sidepanel-routes-content{padding:12px}.sidepanel-routes-content h2{margin:0 0 16px;font-size:1.4rem;font-weight:600;color:#000}.sidepanel-routes-content h3{font-size:.9rem;font-weight:600;color:#333;text-transform:uppercase;letter-spacing:.5px;margin:16px 0 8px}.route-more-info{display:none;color:var(--link-color);text-decoration:none;font-size:.85em;margin:4px 0 0 40px;font-weight:500;width:100%;padding-left:7px}.route-more-info.active{display:block}.route-show{display:none;color:var(--link-color);text-decoration:none;font-size:.85em;margin:4px 0 0 40px;font-weight:500;width:100%;padding-left:7px;text-align:left}.route-show.active{display:block}.route-more-info:hover{color:var(--link-hover-color)}.route-destination{color:#000;font-weight:400;word-wrap:break-word;overflow-wrap:break-word;white-space:normal;flex:1;min-width:0}.route-group{margin-bottom:20px}.route-group-title{font-size:.9rem;font-weight:600;color:#333;text-transform:uppercase;letter-spacing:.5px;margin:0 0 8px;padding:0}.route-group-content{margin-bottom:0}.route-details-link-container{margin-bottom:16px}.route-details-link{color:var(--link-color);text-decoration:none;font-weight:500;font-size:.9em}.route-details-link:hover{color:var(--link-hover-color);text-decoration:underline}.station-details-link-container{margin-bottom:16px}.station-details-link{color:var(--link-color);text-decoration:none;font-weight:500;font-size:.9em}.station-details-link:hover{color:var(--link-hover-color);text-decoration:underline}.route-station-line{margin-bottom:8px;padding:6px 8px;border-radius:4px;border-left:3px solid transparent}.route-station-header{display:flex;align-items:flex-start;width:100%}.route-station-info{display:flex;flex-direction:column;flex:1;min-width:0}.route-station-name{font-weight:400;color:#333;word-wrap:break-word;overflow-wrap:break-word}.route-station-role{font-size:.8em;color:#666;font-style:italic;margin-top:2px}.back-to-train-list-container{margin-bottom:16px}.back-to-train-list{background:0 0;border:none;color:var(--link-color);text-decoration:none;cursor:pointer;font-size:.9em;font-weight:500;padding:0;font-family:inherit}.back-to-train-list:hover{color:var(--link-hover-color);text-decoration:underline}@keyframes sweep{0%{opacity:0}100%{opacity:1}}.route-timeline{list-style:none;padding-left:6rem;position:relative}.route-timeline::before{content:'';position:absolute;left:4.45rem;top:15px;bottom:25px;width:2px;background:#199900}.route-timeline li{position:relative;padding:.5rem 0;margin:.5rem 0;display:flex;align-items:center}.route-timeline li::before{content:'';position:absolute;left:-2rem;top:50%;transform:translateY(-50%);width:16px;height:16px;border:2px solid #199900;border-radius:50%;background:#fff}.route-timeline li.terminal::before{background:#199900}.station-time{position:absolute;right:calc(100% + 2.5rem);min-width:4rem;text-align:right}.route-schedule-table{width:100%;border-collapse:collapse;margin:1rem 0}.route-schedule-table th{text-align:left;padding:.5rem;font-weight:600;color:#333;border-bottom:2px solid #199900}.route-schedule-table td{padding:.5rem;border-bottom:1px solid #eee}.route-schedule-table tr,.route-schedule-table td{background:#fff!important}@media(max-width:768px){.route-schedule-table{font-size:.9em}.route-schedule-table th,.route-schedule-table td{padding:.4rem}}.station-page-description{margin-bottom:20px;line-height:1.5;color:#333}.station-page-content{margin-top:20px}.station-page-content h2{font-size:1.5rem;margin-bottom:15px;color:#333}.station-route{padding:8px;border-radius:4px;transition:background-color .2s;display:flex;align-items:center;text-decoration:none;color:inherit;border-left:1px dotted transparent}.station-route:hover{background-color:transparent}.station-route-ref{display:inline-block;padding:2px 8px;margin-right:10px;background-color:#f0f7ff;border:1.5px solid #0078a8;border-radius:3px;font-weight:600;min-width:53px;text-align:center;color:#0078a8}.station-route-name{text-decoration:underline dotted #0078a8;text-decoration-thickness:1px;text-underline-offset:2px;color:#333;display:inline}.station-route:hover .station-route-name{color:var(--link-hover-color);text-decoration:underline var(--link-hover-color)}.station-route-time{display:inline-block;font-family:roboto mono,monospace;font-size:.9em;color:#333;font-weight:500;width:45px;margin-right:10px}.station-route-container{display:flex;align-items:center;margin-bottom:10px;position:relative}.calendar-icon{background:0 0;border:none;font-size:1.1em;cursor:pointer;padding:4px 6px;margin-left:8px;border-radius:4px;transition:background-color .2s ease;display:flex;align-items:center;justify-content:center;opacity:.7;flex-shrink:0}.calendar-icon:hover{background-color:#f0f7ff;opacity:1;transform:scale(1.1)}.calendar-icon:active{transform:scale(.95)}.station-name{text-decoration:underline dotted #0078a8;text-decoration-thickness:1px;text-underline-offset:2px;color:#333}.station-name:hover{color:var(--link-hover-color);text-decoration:underline var(--link-hover-color)}.station-more-info{display:block;color:var(--link-color);text-decoration:none;font-size:.85em;margin:4px 0 12px;font-weight:500}.station-more-info:hover{color:var(--link-hover-color);text-decoration:underline}.train-info-container{display:inline}.dashed-link{background:0 0;border:none;padding:0;font-size:inherit;font-family:inherit;cursor:pointer;border-bottom:1px dashed var(--link-color);color:var(--link-color);margin-left:5px;line-height:1}.dashed-link:hover{color:var(--link-hover-color);border-bottom-color:var(--link-hover-color)}.train-info-description{display:none;margin:8px 0;padding:12px;background-color:#f5f5f5;border-radius:4px;font-size:.9em;line-height:1.4;color:#333}.train-gallery{display:flex;flex-wrap:wrap;gap:10px;margin:1rem 0}.train-gallery img{width:150px;height:150px;object-fit:cover;border-radius:8px;cursor:pointer;transition:transform .2s}.train-gallery img:hover{transform:scale(1.05)}.lightbox{display:none;position:fixed;top:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,.9);z-index:1000;cursor:pointer;overflow:hidden}.lightbox-figure{margin:0;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);text-align:center;padding:0 1rem}.lightbox-figure img{max-width:100vw;max-height:90vh;width:auto;height:auto;min-height:300px;margin:auto;object-fit:contain}#lightbox-caption{color:#fff;margin-top:1rem;font-size:1rem;text-align:center;position:relative}.lightbox-copyright{color:#999;font-size:.8rem;margin-top:.5rem;text-align:center;font-style:italic;position:relative}.lightbox-copyright a{color:#999;text-decoration:underline}.lightbox-copyright a:hover{color:#fff}@media(max-width:768px){.lightbox-figure img{width:100vw;height:auto;min-height:300px;object-fit:contain}}body.lightbox-open{overflow:hidden}.station-hint{position:absolute;bottom:15vh;left:50%;transform:translateX(-50%);background-color:rgba(0,0,0,.8);color:#fff;padding:8px 16px;border-radius:4px;z-index:1000;backdrop-filter:blur(4px);font-weight:500;font-size:.9em;animation:fade-in .3s ease-in-out;width:320px;box-sizing:border-box;box-shadow:0 0 10px rgba(0,0,0,.2)}.hint-content{display:block;padding-right:20px;box-sizing:border-box}.hint-close-btn{background:0 0;border:none;color:#fff;font-size:1.2em;cursor:pointer;padding:0;line-height:1;position:absolute;top:8px;right:12px}.hint-close-btn:hover{color:#ddd}@keyframes fade-in{from{opacity:0;transform:translate(-50%,10px)}to{opacity:1;transform:translate(-50%,0)}}@media(max-width:480px){.station-hint{width:280px}}body,html{overflow-x:hidden}.route-schedule-table tr:last-child td{border-bottom:2px solid #199900}.station-marker{display:flex;align-items:center;justify-content:center;cursor:pointer;width:18px;height:18px;border-radius:50%;border:2px solid #c8102e;background:#fff;box-sizing:border-box}.station-marker.station-marker-with-icon{width:22px;height:22px}.station-marker.hidden{display:none}.station-marker.active{background:#c8102e;border:2px solid #fff}.station-icon{width:14px;height:14px;color:#c8102e;fill:#c8102e}.station-icon.active{color:#fff;fill:#fff}.station-marker.active .station-icon{color:#fff;fill:#fff}.maplibregl-popup{max-width:350px!important}.maplibregl-popup-content{padding-bottom:12px!important;padding-top:12px!important;padding-left:20px!important;padding-right:20px!important;border-radius:12px!important}.maplibregl-popup-close-button{position:absolute!important;right:0!important;top:0!important;width:20px!important;height:20px!important;background:0 0!important;color:transparent!important;border:none!important;cursor:pointer!important;display:flex!important;align-items:center!important;justify-content:center!important;text-decoration:none!important;font-size:0!important;text-indent:-9999px!important;outline:none!important;margin-top:5px!important;margin-right:5px!important}.maplibregl-popup-close-button:hover{color:transparent!important}.maplibregl-popup-close-button:focus{outline:none!important;box-shadow:none!important}.maplibregl-popup-close-button::before,.maplibregl-popup-close-button::after{content:""!important;position:absolute!important;top:50%!important;left:50%!important;width:16px!important;height:2px!important;background-color:#838383!important;transform:translate(-50%,-50%)rotate(45deg)!important}.maplibregl-popup-close-button::after{transform:translate(-50%,-50%)rotate(-45deg)!important}.maplibregl-popup-close-button:hover::before,.maplibregl-popup-close-button:hover::after{background-color:#000!important}.route-modal{display:none;position:fixed;left:50%;top:85vh;transform:translate(-50%,-50%);z-index:5000;min-width:320px;max-width:340px;width:90vw;border-radius:8px;box-shadow:0 2px 16px rgba(0,0,0,.18);font-size:.98em}.route-modal.active{display:block}.route-modal-content{background:rgba(24,24,24,.92);border-radius:8px;box-shadow:0 2px 16px rgba(0,0,0,.18);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);padding:18px 18px 12px;position:relative}.route-modal-title{color:#fff;font-weight:700;font-size:1.15rem;margin:0 0 12px;text-align:center;text-shadow:0 2px 8px rgba(0,0,0,.18)}.route-modal-close-btn{position:absolute;top:10px;right:14px;background:0 0;border:none;color:#fff;font-size:1.3em;cursor:pointer;opacity:.8;z-index:2}.route-modal-close-btn:hover{color:#ddd;opacity:1}.route-modal-stations{position:relative;margin:0 0 10px 7px;padding:0;list-style:none}.route-modal-station-row{display:flex;align-items:center;margin-bottom:6px;position:relative}.route-modal-station-row:not(:last-child) .route-modal-station-point::after{content:'';position:absolute;left:50%;top:100%;transform:translateX(-50%);width:3px;height:22px;background:#199900;z-index:0}.route-modal-station-point{width:14px;height:14px;border-radius:50%;border:2px solid #199900;background:#fff;margin-right:10px;position:relative;z-index:1}.route-modal-station-point.terminal{background:#199900;border-color:#199900}.route-modal-station-time,.route-modal-station-name{color:#fff;text-shadow:0 1px 6px rgba(0,0,0,.32)}.route-modal-station-time{font-family:roboto mono,monospace;font-size:1em;font-weight:500;margin-right:8px;min-width:44px;text-align:right}.route-modal-station-name{font-size:1em;font-weight:400;flex:1;min-width:0;word-break:break-word}.route-modal-details-link{display:inline-block;color:#4ec3ff;text-shadow:0 1px 6px rgba(0,0,0,.32);font-weight:600;font-size:.98em;margin:10px 0 0;cursor:pointer}.route-modal-details-link:hover{color:#fff}@media(max-width:480px){.route-modal{min-width:0;width:96vw;max-width:98vw;left:50%;bottom:10vh;transform:translateX(-50%,0)}.route-modal-content{padding:10px 4vw 8px}.route-modal-title{font-size:1em}}.poi-marker{cursor:pointer}.poi-popup{font-size:15px}