:root{--brand: #6D4AFF;--brand-strong: #5B3AE0;--accent: #14B8A6;--bg: #FAFAFC;--surface: #FFFFFF;--surface-2: #F2F3F8;--border: #E5E7EB;--border-soft: rgba(0, 0, 0, .06);--text: #1A1A1A;--muted: #6B7280;--on-brand: #FFFFFF;--success: #10B981;--warning: #FB923C;--error: #EF4444;--shadow-sm: 0 1px 2px rgba(16, 18, 40, .06);--shadow-md: 0 4px 16px rgba(109, 72, 255, .1), 0 1px 3px rgba(16, 18, 40, .06);--shadow-lg: 0 12px 32px rgba(16, 18, 40, .14);--header-h: 56px;--radius: 14px;--radius-sm: 10px;--radius-pill: 999px;--content-max: 680px;--tap-min: 44px;--ad-leaderboard-h: 90px;--ad-sticky-h: 56px;--icon-search: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='M20 20l-3.6-3.6'/%3E%3C/svg%3E");--icon-geo: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 21s7-5.6 7-11a7 7 0 10-14 0c0 5.4 7 11 7 11z'/%3E%3Ccircle cx='12' cy='10' r='2.6'/%3E%3C/svg%3E");--z-header: 60;--z-dropdown: 1100;--z-sticky-ad: 1200;--z-toast: 1300;color-scheme:light}html[data-theme=dark]{--brand: #8B5CF6;--brand-strong: #7C3AED;--accent: #2DD4BF;--bg: #0F0F12;--surface: #1E1E24;--surface-2: #26262F;--border: #374151;--border-soft: rgba(255, 255, 255, .07);--text: #E5E7EB;--muted: #9CA3AF;--success: #34D399;--warning: #FDBA74;--error: #F87171;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .4);--shadow-md: 0 4px 16px rgba(0, 0, 0, .45);--shadow-lg: 0 12px 32px rgba(0, 0, 0, .55);color-scheme:dark}*,*:before,*:after{box-sizing:border-box}body{min-height:100dvh;margin:0;display:flex;flex-direction:column;background:var(--bg);color:var(--text);font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,sans-serif;font-size:16px;line-height:1.5;-webkit-font-smoothing:antialiased;transition:background-color .25s ease,color .25s ease}h1,p,figure{margin:0}ul{margin:0;padding:0;list-style:none}button{font:inherit;color:inherit}a{color:var(--accent);text-decoration:none;border-radius:4px}a:hover{text-decoration:underline}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.skip-link{position:absolute;left:50%;top:-4rem;transform:translate(-50%);z-index:2000;padding:.6rem 1rem;background:var(--surface);color:var(--text);border-radius:0 0 var(--radius-sm) var(--radius-sm);box-shadow:var(--shadow-lg);transition:top .2s ease}.skip-link:focus{top:0}.app-header{position:sticky;top:0;z-index:var(--z-header);display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:.5rem;min-height:var(--header-h);padding:0 clamp(.6rem,3vw,1.25rem);padding-top:env(safe-area-inset-top,0px);background:linear-gradient(135deg,var(--brand) 0%,var(--brand-strong) 100%);color:var(--on-brand);box-shadow:var(--shadow-md)}.brand{display:flex;align-items:center;gap:.5rem;min-width:0}.header-logo{width:30px;height:30px;flex-shrink:0;object-fit:contain;padding:3px;background:#fff;border-radius:8px}.brand-name{font-weight:650;letter-spacing:-.01em;font-size:.95rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.clock-display{justify-self:center;font-size:clamp(1.05rem,3.4vw,1.6rem);font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:.02em;line-height:1;color:var(--on-brand)}.header-right{justify-self:end;display:flex;align-items:center;gap:.5rem}.status-dot{width:9px;height:9px;border-radius:50%;flex-shrink:0;background:var(--error);box-shadow:0 0 0 3px #ffffff2e}.status-dot.live{background:#4ade80}.status-dot.connecting{background:#fdba74}.status-dot.offline{background:#fca5a5}.status-dot.live,.status-dot.connecting{animation:dot-pulse 2.4s ease-in-out infinite}@keyframes dot-pulse{0%,to{opacity:.55}50%{opacity:1}}.btn-icon{width:36px;height:36px;display:grid;place-items:center;background:#ffffff1f;border:1px solid rgba(255,255,255,.28);border-radius:var(--radius-pill);color:var(--on-brand);font-size:1.05rem;line-height:1;cursor:pointer;transition:background-color .18s ease,transform .18s ease}.btn-icon:hover{background:#ffffff3d}.btn-icon:active{transform:scale(.94)}.app-main{flex:1;width:100%;max-width:var(--content-max);margin:0 auto;padding:clamp(.75rem,2.5vw,1.25rem) clamp(.6rem,3vw,1rem) 1.25rem;display:flex;flex-direction:column;gap:.85rem}html.has-sticky-ad .app-main{padding-bottom:calc(var(--ad-sticky-h) + env(safe-area-inset-bottom,0px) + 1.25rem)}html.has-sticky-ad .app-footer{margin-bottom:calc(var(--ad-sticky-h) + env(safe-area-inset-bottom,0px))}.toolbar{display:flex;flex-direction:column;gap:.6rem}.autocomplete-wrapper{position:relative;width:100%}.search-icon{position:absolute;left:.85rem;top:50%;transform:translateY(-50%);width:18px;height:18px;background-color:var(--muted);pointer-events:none;-webkit-mask:var(--icon-search) center / contain no-repeat;mask:var(--icon-search) center / contain no-repeat}.autocomplete-input{width:100%;height:46px;padding:0 calc(var(--tap-min) + .4rem) 0 2.6rem;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);font-size:1rem;box-shadow:var(--shadow-sm);transition:border-color .18s ease,box-shadow .18s ease}.autocomplete-input::placeholder{color:var(--muted)}.autocomplete-input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 22%,transparent)}.icon{display:inline-block;width:20px;height:20px;background-color:currentColor}.icon-geo{-webkit-mask:var(--icon-geo) center / contain no-repeat;mask:var(--icon-geo) center / contain no-repeat}.btn-location{position:absolute;right:4px;top:50%;transform:translateY(-50%);width:var(--tap-min);height:calc(var(--tap-min) - 6px);display:grid;place-items:center;background:transparent;border:none;border-radius:var(--radius-sm);color:var(--brand);cursor:pointer;transition:background-color .18s ease}.btn-location:hover{background:var(--surface-2)}.btn-location:disabled{opacity:.5;cursor:not-allowed}.btn-location.loading .icon{animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.segmented{display:grid;grid-template-columns:1fr 1fr;gap:4px;padding:4px;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-pill)}.seg-btn{min-height:36px;padding:0 .9rem;border:none;border-radius:var(--radius-pill);background:transparent;color:var(--muted);font-size:.9rem;font-weight:600;cursor:pointer;transition:background-color .18s ease,color .18s ease,box-shadow .18s ease}.seg-btn:hover{color:var(--text)}.seg-btn.active{background:var(--surface);color:var(--brand);box-shadow:var(--shadow-sm)}html[data-theme=dark] .seg-btn.active{background:var(--brand);color:#fff}.autocomplete-dropdown{position:absolute;top:calc(100% + 6px);left:0;right:0;max-height:min(320px,50vh);overflow-y:auto;overscroll-behavior:contain;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);box-shadow:var(--shadow-lg);z-index:var(--z-dropdown);display:none}.autocomplete-dropdown.visible{display:block}.autocomplete-item{display:flex;align-items:center;gap:.65rem;padding:.6rem .8rem;font-size:.95rem;cursor:pointer;border-bottom:1px solid var(--border-soft)}.autocomplete-item:last-child{border-bottom:none}.autocomplete-item:hover,.autocomplete-item.active{background:var(--surface-2)}.item-code{flex-shrink:0;min-width:3.2rem;padding:.1rem .45rem;text-align:center;font-size:.75rem;font-weight:700;letter-spacing:.03em;color:var(--brand);background:color-mix(in srgb,var(--brand) 12%,transparent);border-radius:6px}.item-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dashboard-grid{display:block;width:100%}.train-card{position:relative;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-md);overflow:hidden;scroll-margin-top:4.5rem}.card-head{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.9rem 1rem .7rem}.station-name{font-size:clamp(1.15rem,4vw,1.45rem);font-weight:700;letter-spacing:-.015em;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mode-badge{flex-shrink:0;padding:.2rem .6rem;font-size:.72rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--accent);background:color-mix(in srgb,var(--accent) 14%,transparent);border-radius:var(--radius-pill)}.card-progress{height:2px;background:transparent;overflow:hidden}.train-card.is-loading .card-progress{background:color-mix(in srgb,var(--brand) 20%,transparent)}.train-card.is-loading .card-progress:after{content:"";display:block;height:100%;width:35%;background:var(--brand);animation:progress-slide 1.1s ease-in-out infinite}@keyframes progress-slide{0%{transform:translate(-100%)}to{transform:translate(320%)}}.table-wrap{width:100%}.train-table{width:100%;border-collapse:collapse;table-layout:fixed}.train-table th{padding:.45rem .5rem;font-size:.7rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);background:var(--surface-2);border-top:1px solid var(--border-soft);border-bottom:1px solid var(--border);text-align:center}.train-table th.col-time{width:36%;text-align:left;padding-left:1rem}.train-table th.col-train{width:17%}.train-table th.col-place{width:31%;text-align:left}.train-table th.col-track{width:16%}.train-table td{padding:.55rem .5rem;border-bottom:1px solid var(--border-soft);text-align:center;vertical-align:middle;font-size:.95rem}.train-table tr:last-child td{border-bottom:none}.train-table tbody tr{transition:background-color .15s ease}.train-table tbody tr:hover{background:var(--surface-2)}.col-time{text-align:left!important;padding-left:1rem!important;white-space:nowrap}.col-place{overflow:hidden;text-overflow:ellipsis;max-width:0}.time-value{font-size:1.05rem;font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:-.01em}.time-value.time-scheduled{font-size:.82rem;font-weight:600;color:var(--muted);text-decoration:line-through;text-decoration-thickness:1px}.col-time .time-row{display:flex;align-items:center;gap:.3rem}.col-time .time-row.time-sub{margin-top:.05rem}.col-time .time-row .delay-chip{margin-left:0}.countdown.countdown-inline{display:inline;margin-top:0}.time-value.time-estimated.delay-minor{color:var(--warning)}.time-value.time-estimated.delay-major{color:var(--error)}.train-table tbody tr.is-cancelled{background:color-mix(in srgb,var(--error) 10%,transparent)}.train-table tbody tr.is-cancelled:hover{background:color-mix(in srgb,var(--error) 16%,transparent)}.is-cancelled .col-place,.is-cancelled .train-badge,.is-cancelled .track-badge{opacity:.72}.cancelled-chip{display:block;margin-top:.1rem;color:var(--error);font-size:.68rem;font-weight:800;letter-spacing:.02em;text-transform:uppercase;white-space:nowrap}.delay-chip{display:inline-block;margin-left:.35rem;padding:.05rem .4rem;font-size:.72rem;font-weight:700;font-variant-numeric:tabular-nums;border-radius:var(--radius-pill);vertical-align:1px}.delay-chip.delay-minor{color:var(--warning);background:color-mix(in srgb,var(--warning) 16%,transparent)}.delay-chip.delay-major{color:var(--error);background:color-mix(in srgb,var(--error) 16%,transparent)}.countdown{display:block;margin-top:.1rem;font-size:.72rem;font-variant-numeric:tabular-nums;color:var(--muted)}.train-badge{display:inline-block;min-width:2.6rem;padding:.15rem .45rem;font-size:.8rem;font-weight:700;letter-spacing:.02em;color:var(--brand);background:color-mix(in srgb,var(--brand) 12%,transparent);border:1px solid transparent;border-radius:6px;font-family:inherit}button.train-badge.is-clickable{cursor:pointer;min-height:30px;transition:background-color .15s ease,border-color .15s ease,transform .12s ease}button.train-badge.is-clickable:hover{background:color-mix(in srgb,var(--brand) 22%,transparent);border-color:color-mix(in srgb,var(--brand) 45%,transparent)}button.train-badge.is-clickable:active{transform:scale(.95)}.col-place{text-align:left!important;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500}.track-badge{display:inline-grid;place-items:center;min-width:1.85rem;height:1.85rem;padding:0 .35rem;font-size:.85rem;font-weight:700;font-variant-numeric:tabular-nums;color:var(--text);background:var(--surface-2);border:1px solid var(--border);border-radius:8px}.track-badge.track-unknown{color:var(--muted);border-style:dashed}.empty-state{padding:2rem 1rem;text-align:center;color:var(--muted);font-size:.95rem}.page-nav{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:.5rem;padding:.5rem .75rem;border-top:1px solid var(--border-soft)}.page-nav[hidden]{display:none}.page-range{grid-column:2;text-align:center;font-size:.72rem;font-variant-numeric:tabular-nums;color:var(--muted)}.page-btn{display:inline-flex;align-items:center;gap:.35rem;min-height:var(--tap-min);padding:0 .8rem;background:var(--surface-2);color:var(--brand);border:1px solid var(--border);border-radius:var(--radius-sm);font:inherit;font-size:.8rem;font-weight:600;cursor:pointer;transition:background-color .15s ease,border-color .15s ease}.page-first{grid-column:1;justify-self:start}.page-next{grid-column:3;justify-self:end}.page-btn[hidden]{display:none}.page-btn:hover{background:var(--brand);border-color:var(--brand);color:#fff}.page-arrow{font-size:1.05rem;line-height:1}@media(max-width:380px){.page-nav{padding:.5rem;gap:.35rem}.page-btn{padding:0 .55rem;font-size:.75rem}.page-range{font-size:.68rem}}.card-foot{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.5rem 1rem .65rem;border-top:1px solid var(--border-soft);font-size:.72rem;color:var(--muted);min-height:2rem}.status-note{font-weight:600}.status-note.is-warn{color:var(--warning)}.status-note.is-error{color:var(--error)}.error-state{padding:2.5rem 1.25rem;text-align:center;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-md)}.error-title{font-weight:700;color:var(--error);margin-bottom:.35rem}.error-state small{display:block;color:var(--muted)}.btn-retry{margin-top:1rem;min-height:var(--tap-min);padding:0 1.25rem;background:var(--brand);color:#fff;border:none;border-radius:var(--radius-sm);font-weight:600;cursor:pointer}.btn-retry:hover{background:var(--brand-strong)}.ad-slot{display:block;width:100%}.ad-slot[hidden],.ad-sticky[hidden]{display:none!important}.ad-leaderboard .ad-inner{min-height:var(--ad-leaderboard-h);display:grid;place-items:center;overflow:hidden;background:var(--surface-2);border:1px dashed var(--border);border-radius:var(--radius-sm)}.ad-placeholder{font-size:.7rem;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);opacity:.65}.ad-sticky{position:fixed;left:0;right:0;bottom:0;z-index:var(--z-sticky-ad);display:flex;align-items:center;gap:.35rem;height:calc(var(--ad-sticky-h) + env(safe-area-inset-bottom,0px));padding:0 .4rem env(safe-area-inset-bottom,0px);background:var(--surface);border-top:1px solid var(--border);box-shadow:0 -4px 16px #1012281a}.ad-sticky .ad-inner{flex:1;height:calc(var(--ad-sticky-h) - 8px);display:grid;place-items:center;overflow:hidden}.ad-close{flex-shrink:0;width:28px;height:28px;display:grid;place-items:center;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-pill);color:var(--muted);font-size:.7rem;line-height:1;cursor:pointer}.ad-close:hover{color:var(--text)}.app-footer{padding:.75rem 1rem calc(.75rem + env(safe-area-inset-bottom,0px));text-align:center;font-size:.72rem;color:var(--muted);border-top:1px solid var(--border-soft)}.toast{position:fixed;left:50%;bottom:calc(1.25rem + env(safe-area-inset-bottom,0px));transform:translate(-50%,1rem);z-index:var(--z-toast);max-width:min(90vw,420px);padding:.65rem 1rem;background:var(--surface);color:var(--text);border:1px solid var(--border);border-left:3px solid var(--accent);border-radius:var(--radius-sm);box-shadow:var(--shadow-lg);font-size:.88rem;opacity:0;pointer-events:none;transition:opacity .2s ease,transform .2s ease}.toast.visible{opacity:1;transform:translate(-50%)}.toast-warn{border-left-color:var(--warning)}.toast-error{border-left-color:var(--error)}html.has-sticky-ad .toast{bottom:calc(var(--ad-sticky-h) + 1rem + env(safe-area-inset-bottom,0px))}.noscript-note{margin:1rem;padding:1rem;text-align:center;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm)}@media(min-width:560px){.toolbar{flex-direction:row;align-items:center}.autocomplete-wrapper{flex:1}.segmented{flex-shrink:0}}@media(max-width:400px){:root{--header-h: 52px;--radius: 12px;--ad-leaderboard-h: 100px}.brand-name{display:none}.train-table th{font-size:.62rem;letter-spacing:.04em}.train-table td{font-size:.88rem;padding:.5rem .3rem}.train-table th.col-time,.col-time{padding-left:.6rem!important}.time-value{font-size:1rem}.delay-chip{font-size:.68rem;padding:.05rem .32rem}.cancelled-chip{font-size:.62rem;white-space:normal;line-height:1.15}.col-time .time-row{gap:.25rem}.train-badge{min-width:2.2rem;font-size:.74rem}.track-badge{min-width:1.6rem;height:1.6rem;font-size:.78rem}}@media(max-height:460px)and (orientation:landscape){:root{--header-h: 44px}.app-main{gap:.5rem;padding-top:.5rem}.card-head{padding:.6rem 1rem .5rem}.train-table td{padding:.4rem .5rem}}@media(min-width:768px){.train-table td{padding:.7rem .5rem}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}}@media print{.app-header,.toolbar,.ad-slot,.ad-sticky,.toast,.skip-link{display:none!important}.train-card{box-shadow:none;border-color:#999}}.train-dialog{width:min(560px,100vw - 1.5rem);max-width:none;max-height:min(86dvh,900px);padding:0;border:none;background:transparent;overflow:visible;color:var(--text)}.train-dialog::backdrop{background:#0a0a148c;backdrop-filter:blur(3px)}.train-dialog[open]{animation:dialog-in .18s ease-out}.train-dialog[open]::backdrop{animation:backdrop-in .18s ease-out}@keyframes dialog-in{0%{opacity:0;transform:translateY(10px) scale(.985)}to{opacity:1;transform:none}}@keyframes backdrop-in{0%{opacity:0}to{opacity:1}}html.dialog-open{overflow:hidden}.dialog-panel{display:flex;flex-direction:column;max-height:min(86dvh,900px);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-lg);overflow:hidden}.dialog-head{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem;padding:1rem 1rem .85rem;background:linear-gradient(135deg,var(--brand) 0%,var(--brand-strong) 100%);color:var(--on-brand)}.dialog-title-wrap{min-width:0}.dialog-title{margin:0;font-size:1.25rem;font-weight:700;letter-spacing:-.015em}.dialog-subtitle{margin:.15rem 0 0;font-size:.82rem;opacity:.88}.dialog-close{flex-shrink:0;width:34px;height:34px;display:grid;place-items:center;background:#ffffff29;border:1px solid rgba(255,255,255,.3);border-radius:var(--radius-pill);color:var(--on-brand);font-size:.8rem;cursor:pointer;transition:background-color .15s ease}.dialog-close:hover{background:#ffffff4d}.dialog-body{padding:1rem;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}.dialog-section+.dialog-section{margin-top:1.5rem}.dialog-section-title{margin:0 0 .5rem;font-size:.72rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}.dialog-note{margin:0;padding:.7rem .85rem;font-size:.88rem;background:var(--surface-2);border-radius:var(--radius-sm)}.dialog-note.muted{color:var(--muted)}.dialog-note.is-error{color:var(--error);background:color-mix(in srgb,var(--error) 12%,transparent)}.dialog-note.is-warn{color:var(--warning);background:color-mix(in srgb,var(--warning) 14%,transparent)}.composition-meta{margin:0 0 .6rem;font-size:.8rem;color:var(--muted)}.composition-strip{display:flex;gap:.4rem;padding:.2rem .2rem .6rem;margin:0;list-style:none;overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x proximity}.vehicle{position:relative;flex:0 0 auto;width:86px;display:flex;flex-direction:column;align-items:center;gap:.2rem;scroll-snap-align:start}.vehicle-box{width:100%;min-height:52px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.1rem;background:var(--surface-2);border:1px solid var(--border);border-radius:8px}.vehicle-locomotive .vehicle-box,.vehicle-motorUnit .vehicle-box{background:color-mix(in srgb,var(--brand) 14%,transparent);border-color:color-mix(in srgb,var(--brand) 40%,transparent)}.vehicle.is-head .vehicle-box{border-color:var(--accent);border-width:2px;box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 18%,transparent);border-radius:8px 16px 16px 8px}.vehicle-head-flag{position:absolute;top:-.55rem;left:50%;transform:translate(-50%);padding:.05rem .4rem;font-size:.58rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;white-space:nowrap;color:#fff;background:var(--accent);border-radius:var(--radius-pill)}.vehicle.is-head{margin-top:.55rem}.vehicle.is-head:after{content:"";position:absolute;left:-.32rem;top:50%;width:0;height:0;transform:translateY(-50%);border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:7px solid var(--accent)}.vehicle-top{font-size:1rem;font-weight:700;font-variant-numeric:tabular-nums;line-height:1.1}.vehicle-kind{font-size:.62rem;color:var(--muted);text-align:center;line-height:1.1}.vehicle-number{font-size:.55rem;min-height:2.1em;color:var(--muted);font-variant-numeric:tabular-nums;text-align:center;overflow-wrap:anywhere;line-height:1.05}.vehicle-features{font-size:.56rem;color:var(--accent);text-align:center;line-height:1.15}.composition-legend{margin:.35rem 0 0;font-size:.68rem;color:var(--muted)}.stop-list{position:relative;margin:0;padding:0 0 0 .25rem;list-style:none}.stop{position:relative;display:grid;grid-template-columns:1.2rem 1fr auto;align-items:start;gap:.6rem;padding:.45rem 0}.stop:before{content:"";position:absolute;left:.5rem;top:0;bottom:0;width:2px;background:var(--border)}.stop:first-child:before{top:50%}.stop:last-child:before{bottom:50%}.stop-dot{position:relative;z-index:1;width:11px;height:11px;margin-top:.35rem;margin-left:1px;border-radius:50%;background:var(--surface);border:2px solid var(--border)}.stop-passed .stop-dot{background:var(--muted);border-color:var(--muted)}.stop-passed .stop-name,.stop-passed .train-gps{margin:-.25rem 0 .6rem;font-size:.8rem;color:var(--muted)}.train-gps:before{content:"";display:inline-block;width:.5rem;height:.5rem;border-radius:50%;background:var(--accent);margin-right:.4rem}.stop-times{color:var(--muted)}.stop-current .stop-dot{background:var(--accent);border-color:var(--accent);box-shadow:0 0 0 4px color-mix(in srgb,var(--accent) 25%,transparent)}.stop-current .stop-name{color:var(--accent);font-weight:700}.stop-upcoming .stop-dot{border-color:var(--brand)}.stop-info{min-width:0;display:flex;flex-direction:column;gap:.1rem}.stop-name{font-size:.95rem;font-weight:600;overflow:hidden;text-overflow:ellipsis}.stop-name.stop-link{background:none;border:0;padding:0;font:inherit;color:inherit;text-align:left;cursor:pointer;text-decoration:underline;text-decoration-color:color-mix(in srgb,currentColor 35%,transparent);text-underline-offset:2px}.stop-name.stop-link:hover,.stop-name.stop-link:focus-visible{color:var(--brand);text-decoration-color:currentColor}.stop-times{font-size:.75rem;color:var(--muted);font-variant-numeric:tabular-nums}.stop-here{align-self:flex-start;margin-top:.15rem;padding:.05rem .45rem;font-size:.62rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:#fff;background:var(--accent);border-radius:var(--radius-pill)}.stop-side{display:flex;align-items:center;gap:.35rem;padding-top:.15rem}.track-badge.track-small{min-width:1.5rem;height:1.5rem;font-size:.75rem}@media(max-width:400px){.train-dialog{width:calc(100vw - .75rem)}.vehicle{width:68px}.stop-name{font-size:.9rem}.stop-times{font-size:.7rem}}@media(max-height:460px){.train-dialog,.dialog-panel{max-height:94dvh}.dialog-head{padding:.6rem 1rem .5rem}.dialog-title{font-size:1.05rem}}.alert-bar{background:color-mix(in srgb,var(--warning) 13%,var(--surface));border:1px solid color-mix(in srgb,var(--warning) 42%,transparent);border-radius:var(--radius-sm);overflow:hidden}.alert-toggle{width:100%;min-height:34px;display:flex;align-items:center;gap:.5rem;padding:.25rem .6rem;background:transparent;border:none;color:var(--text);font-size:.82rem;font-weight:600;text-align:left;cursor:pointer}.alert-icon{flex-shrink:0;width:18px;height:18px;display:grid;place-items:center;font-size:.72rem;font-weight:800;line-height:1;color:#fff;background:var(--warning);border-radius:50%}.alert-summary{flex:1;min-width:0}.alert-chevron{flex-shrink:0;width:0;height:0;border-left:4px solid transparent;border-right:4px solid transparent;border-top:5px solid var(--muted);transition:transform .18s ease}.alert-bar.is-open .alert-chevron{transform:rotate(180deg)}.alert-list[hidden]{display:none}.alert-list{margin:0;padding:0 .6rem .5rem;list-style:none;display:flex;flex-direction:column;gap:.5rem;max-height:40dvh;overflow-y:auto;overscroll-behavior:contain}.alert-item{display:flex;flex-direction:column;gap:.15rem;padding-top:.45rem;border-top:1px solid color-mix(in srgb,var(--warning) 30%,transparent)}.alert-tag{align-self:flex-start;padding:.05rem .4rem;font-size:.6rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;border-radius:var(--radius-pill);color:#fff}.alert-tag.is-general{background:var(--warning)}.alert-tag.is-train{background:var(--brand)}.alert-text{font-size:.84rem;font-weight:400;line-height:1.4;color:var(--text);overflow-wrap:anywhere}.alert-text.is-muted{color:var(--muted);font-style:italic}.btn-lang{width:auto;min-width:40px;padding:0 .5rem;font-size:.74rem;font-weight:700;letter-spacing:.04em}@media(max-width:400px){.alert-toggle{font-size:.78rem}.alert-text{font-size:.8rem}.btn-lang{min-width:36px;padding:0 .35rem;font-size:.7rem}}
