:root{--bg: #0A0E17;--surface: #111827;--surface-elev: rgba(255, 255, 255, .03);--border-soft: rgba(255, 255, 255, .04);--border-med: rgba(255, 255, 255, .08);--text-primary: #FFFFFF;--text-secondary: rgba(255, 255, 255, .7);--text-muted: rgba(255, 255, 255, .5);--text-subtle: rgba(255, 255, 255, .35);--text-faint: rgba(255, 255, 255, .2);--accent: #63A4FF;--accent-bg: rgba(99, 164, 255, .15);--accent-border: rgba(99, 164, 255, .4);--on-time: #22C55E;--slightly-late: #F59E0B;--late: #EF4444;--cancelled: #6B7280;--assumed: rgba(255, 255, 255, .45);--on-time-bg: rgba(34, 197, 94, .1);--slightly-late-bg: rgba(245, 158, 11, .1);--late-bg: rgba(239, 68, 68, .1);--cancelled-bg: rgba(107, 114, 128, .1);--assumed-bg: rgba(255, 255, 255, .06);--alert-bg: linear-gradient(135deg, rgba(245, 158, 11, .15), rgba(239, 68, 68, .1));--alert-border: rgba(245, 158, 11, .3);--radius-sm: 12px;--radius-md: 14px;--radius-lg: 20px;font-family:SF Pro Display,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;color-scheme:dark}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;padding:0;background:var(--bg);color:var(--text-primary);min-height:100vh;min-height:100dvh;overscroll-behavior-y:contain}body{padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom)}button{font-family:inherit;cursor:pointer}.app{max-width:480px;margin:0 auto;padding:16px 20px 32px}.alert{display:block;width:100%;text-align:left;background:var(--alert-bg);border:1px solid var(--alert-border);border-radius:var(--radius-md);padding:12px 16px;margin-bottom:20px;cursor:pointer;transition:background .2s ease;color:inherit;font:inherit}.alert__row{display:flex;align-items:center;gap:8px}.alert__icon{font-size:16px;line-height:1}.alert__header{color:var(--slightly-late);font-size:13px;font-weight:600;flex:1;line-height:1.3}.alert__chevron{color:var(--text-subtle);font-size:18px;transition:transform .2s ease}.alert[aria-expanded=true] .alert__chevron{transform:rotate(180deg)}.alert__description{color:var(--text-secondary);font-size:12px;line-height:1.5;margin:10px 0 0 24px}.station{text-align:center;margin-bottom:8px}.station__name{color:var(--text-primary);font-size:20px;font-weight:700;margin:0;letter-spacing:-.02em}.direction{display:flex;justify-content:center;align-items:center;gap:12px;margin-top:10px}.direction__btn{background:transparent;border:1px solid var(--border-med);border-radius:var(--radius-lg);padding:6px 16px;color:var(--text-subtle);font-size:13px;font-weight:600;transition:background .2s,color .2s,border-color .2s}.direction__btn[aria-pressed=true]{background:var(--accent-bg);border-color:var(--accent-border);color:var(--accent)}.hero{text-align:center;padding:28px 0 20px}.hero__countdown{font-size:80px;font-weight:800;line-height:1;letter-spacing:-.04em;font-variant-numeric:tabular-nums}.hero__label{color:var(--text-subtle);font-size:16px;font-weight:500;margin-top:2px;letter-spacing:.05em;text-transform:uppercase}.hero__train-info{margin-top:16px;display:flex;justify-content:center;align-items:center;gap:12px}.hero__train-num{color:var(--text-secondary);font-size:15px;font-weight:600}.hero__dot{color:var(--text-faint)}.hero__time{color:var(--text-muted);font-size:15px}.hero__status{display:inline-flex;align-items:center;gap:6px;margin-top:10px;padding:5px 14px;border-radius:var(--radius-lg)}.hero__status-dot{width:8px;height:8px;border-radius:50%}.hero__status-label{font-size:14px;font-weight:600}.divider{height:1px;background:#ffffff0f;margin:4px 0 16px}.upcoming-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;padding:0 4px}.upcoming-header__label{color:var(--text-subtle);font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase}.refresh-btn{background:none;border:none;color:var(--text-subtle);font-size:13px;padding:4px 8px;border-radius:6px}.refresh-btn:disabled{opacity:.5}.train-list{display:flex;flex-direction:column;gap:8px;list-style:none;padding:0;margin:0}.train{display:flex;align-items:center;justify-content:space-between;background:var(--surface-elev);border:1px solid var(--border-soft);border-radius:var(--radius-sm);padding:14px 16px}.train__left{display:flex;align-items:center;gap:12px}.train__time{color:var(--text-secondary);font-size:16px;font-weight:700;font-variant-numeric:tabular-nums;min-width:72px}.train__num{color:var(--text-subtle);font-size:13px}.train__status{display:flex;align-items:center;gap:6px}.train__status-dot{width:7px;height:7px;border-radius:50%}.train__status-label{font-size:13px;font-weight:600}.status--on-time{color:var(--on-time)}.status--slightly-late{color:var(--slightly-late)}.status--late{color:var(--late)}.status--cancelled{color:var(--cancelled);text-decoration:line-through}.status--assumed{color:var(--assumed)}.status-bg--on-time{background:var(--on-time-bg);color:var(--on-time)}.status-bg--slightly-late{background:var(--slightly-late-bg);color:var(--slightly-late)}.status-bg--late{background:var(--late-bg);color:var(--late)}.status-bg--cancelled{background:var(--cancelled-bg);color:var(--cancelled)}.status-bg--assumed{background:var(--assumed-bg);color:var(--assumed)}.dot--on-time{background:var(--on-time)}.dot--slightly-late{background:var(--slightly-late)}.dot--late{background:var(--late)}.dot--cancelled{background:var(--cancelled)}.dot--assumed{background:var(--assumed);outline:1px dashed rgba(255,255,255,.25);outline-offset:-1px}.hero__countdown--on-time{color:var(--on-time);text-shadow:0 0 60px rgba(34,197,94,.2)}.hero__countdown--slightly-late{color:var(--slightly-late);text-shadow:0 0 60px rgba(245,158,11,.2)}.hero__countdown--late{color:var(--late);text-shadow:0 0 60px rgba(239,68,68,.2)}.hero__countdown--cancelled{color:var(--cancelled)}.hero__countdown--assumed{color:var(--assumed);text-shadow:none}.footer{margin-top:24px;text-align:center;padding:0 8px}.footer__line{color:var(--text-faint);font-size:11px;margin:0}.footer__disclaimer{color:#ffffff1f;font-size:10px;margin:6px 0 0}.footer__stale{color:var(--slightly-late)}.footer__feedback-link{display:inline-block;margin-top:10px;color:var(--accent);font-size:11px;font-weight:600;text-decoration:none;padding:4px 10px;opacity:.75;cursor:pointer;border-radius:8px}.footer__feedback-link:hover,.footer__feedback-link:focus{opacity:1;outline:none}.fb-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000;display:flex;align-items:flex-end;justify-content:center;z-index:9999;transition:background .2s ease}.fb-overlay.open{background:#0000008c}.fb-sheet{width:100%;max-width:480px;background:var(--surface);border-top-left-radius:18px;border-top-right-radius:18px;padding:20px 20px calc(20px + env(safe-area-inset-bottom));transform:translateY(100%);transition:transform .25s cubic-bezier(.22,.61,.36,1);box-shadow:0 -8px 32px #00000080}.fb-overlay.open .fb-sheet{transform:translateY(0)}.fb-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.fb-title{margin:0;color:var(--text-primary);font-size:17px;font-weight:700}.fb-close{background:transparent;border:none;color:var(--text-muted);font-size:26px;line-height:1;padding:0 6px}.fb-label{display:block;color:var(--text-subtle);font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;margin-bottom:14px}.fb-select,.fb-textarea{display:block;width:100%;margin-top:6px;background:var(--surface-elev);border:1px solid var(--border-med);border-radius:10px;color:var(--text-primary);font-family:inherit;font-size:14px;padding:10px 12px;text-transform:none;letter-spacing:normal}.fb-textarea{resize:vertical;min-height:110px}.fb-select:focus,.fb-textarea:focus{outline:none;border-color:var(--accent-border)}.fb-counter{text-align:right;color:var(--text-faint);font-size:11px;margin-top:-6px;margin-bottom:10px}.fb-status{color:var(--text-muted);font-size:12px;min-height:16px;margin-bottom:10px}.fb-status--error{color:var(--late)}.fb-submit{display:block;width:100%;background:var(--accent);color:#0a0e17;border:none;border-radius:12px;padding:12px;font-weight:700;font-size:15px}.fb-submit:disabled{opacity:.6}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.sp-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000;display:flex;align-items:flex-end;justify-content:center;z-index:9999;transition:background .2s ease}.sp-overlay.open{background:#0000008c}.sp-sheet{width:100%;max-width:480px;background:var(--surface);border-top-left-radius:18px;border-top-right-radius:18px;padding:20px 0 calc(20px + env(safe-area-inset-bottom));max-height:75vh;display:flex;flex-direction:column;transform:translateY(100%);transition:transform .25s cubic-bezier(.22,.61,.36,1);box-shadow:0 -8px 32px #00000080}.sp-overlay.open .sp-sheet{transform:translateY(0)}.sp-header{display:flex;justify-content:space-between;align-items:center;padding:0 20px 16px}.sp-title{margin:0;color:var(--text-primary);font-size:17px;font-weight:700}.sp-close{background:transparent;border:none;color:var(--text-muted);font-size:26px;line-height:1;padding:0 6px}.sp-chips{display:flex;gap:6px;padding:0 20px 12px;overflow-x:auto}.sp-chip{padding:4px 12px;border:1px solid var(--border-med);border-radius:14px;font-size:12px;font-weight:600;color:var(--text-subtle);white-space:nowrap}.sp-chip--active{background:var(--accent-bg);border-color:var(--accent-border);color:var(--accent)}.sp-list{list-style:none;padding:0 8px;margin:0;overflow-y:auto}.sp-row{padding:10px 12px;margin:2px 0;border-radius:8px;color:var(--text-secondary);font-size:14px;display:flex;justify-content:space-between;align-items:center;cursor:pointer}.sp-row:hover,.sp-row:focus{background:var(--surface-elev);outline:none}.sp-row--indent{padding-left:28px}.sp-row--active{background:var(--accent-bg);color:var(--accent)}.sp-check{color:var(--accent);font-weight:700}.station__name--button{background:transparent;border:none;color:var(--text-primary);font-size:20px;font-weight:700;letter-spacing:-.02em;padding:6px 10px;border-radius:8px;cursor:pointer;font-family:inherit;display:inline-flex;align-items:center;gap:6px}.station__name--button:hover,.station__name--button:focus{background:var(--surface-elev);outline:none}.station__chevron{color:var(--text-subtle);font-size:39px;line-height:1;transform:translateY(2px)}
