:root{--sp-bg: #f4f5f1;--sp-surface: #ffffff;--sp-surface-2: #f9faf7;--sp-border: #dcdfd6;--sp-text: #20231f;--sp-muted: #6c7168;--sp-accent: #0c6b58;--sp-good: #047857;--sp-warn: #7c5800;--sp-bad: #b42318;--sp-radius: 8px}.sp-empty{margin:0;padding:22px;border:1px dashed var(--sp-border);border-radius:var(--sp-radius);color:var(--sp-muted);text-align:center}.sp-spinner{width:22px;height:22px;margin:18px auto;border:3px solid var(--sp-border);border-top-color:var(--sp-accent);border-radius:50%;animation:sp-spin .8s linear infinite}@keyframes sp-spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.sp-spinner{animation-duration:2.4s}}.sp-syncbar{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:18px;padding:11px 14px;border:1px solid var(--sp-border);border-radius:var(--sp-radius);background:var(--sp-surface-2);font-size:13px}.sp-syncbar span{flex:1 1 auto}.sp-syncbar button{padding:5px 11px;border:1px solid currentColor;border-radius:6px;background:transparent;color:inherit;font:inherit;cursor:pointer}.sp-syncbar-info{border-color:color-mix(in srgb,var(--sp-accent) 40%,var(--sp-border));background:color-mix(in srgb,var(--sp-accent) 8%,var(--sp-surface));color:var(--sp-accent)}.sp-syncbar-warn{border-color:color-mix(in srgb,var(--sp-warn) 40%,var(--sp-border));background:color-mix(in srgb,var(--sp-warn) 8%,var(--sp-surface));color:var(--sp-warn)}.sp-syncbar-bad{border-color:color-mix(in srgb,var(--sp-bad) 40%,var(--sp-border));background:color-mix(in srgb,var(--sp-bad) 8%,var(--sp-surface));color:var(--sp-bad)}.sp-panel{margin-bottom:16px;padding:18px;border:1px solid var(--sp-border);border-radius:var(--sp-radius);background:var(--sp-surface)}.sp-panel-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}.sp-panel-head h3{margin:0;font-size:16px}.sp-panel-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.sp-tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:10px}.sp-tile{padding:12px 14px;border:1px solid var(--sp-border);border-radius:var(--sp-radius);background:var(--sp-surface)}.sp-tile-label{font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--sp-muted)}.sp-tile-value{margin-top:5px;font-size:22px;font-weight:800;line-height:1;color:var(--sp-accent)}.sp-tile-unit{margin-left:3px;font-size:12px;font-weight:600;color:var(--sp-muted)}.sp-tile-meta{margin-top:6px;font-size:12px;color:var(--sp-muted)}.sp-search{width:100%;margin-bottom:16px;padding:10px 13px;border:1px solid var(--sp-border);border-radius:var(--sp-radius);background:var(--sp-surface);color:inherit;font:inherit}.sp-segmented{display:inline-flex;padding:2px;border:1px solid var(--sp-border);border-radius:7px;background:var(--sp-surface-2)}.sp-seg{padding:5px 12px;border:0;border-radius:5px;background:transparent;color:var(--sp-muted);font:inherit;font-size:13px;cursor:pointer}.sp-seg-active{background:var(--sp-surface);color:var(--sp-text);font-weight:600;box-shadow:0 1px 2px #0000001f}.sp-ghost{padding:5px 11px;border:1px solid var(--sp-border);border-radius:6px;background:var(--sp-surface);color:var(--sp-muted);font:inherit;font-size:12px;cursor:pointer;white-space:nowrap}.sp-ghost:hover{border-color:var(--sp-accent);color:var(--sp-accent)}.sp-primary{padding:10px 20px;border:0;border-radius:var(--sp-radius);background:var(--sp-accent);color:#fff;font:inherit;font-weight:600;cursor:pointer}.sp-primary:disabled,.sp-ghost:disabled{opacity:.45;cursor:default}.sp-pager{display:flex;flex-wrap:wrap;align-items:center;gap:5px;margin-top:14px}.sp-page{min-width:32px;padding:5px 9px;border:1px solid var(--sp-border);border-radius:6px;background:var(--sp-surface);color:var(--sp-text);font:inherit;font-size:13px;cursor:pointer}.sp-page:hover:not(:disabled){border-color:var(--sp-accent)}.sp-page:disabled{opacity:.4;cursor:default}.sp-page-current{border-color:var(--sp-accent);background:var(--sp-accent);color:#fff;font-weight:700}.sp-page-gap{padding:0 4px;color:var(--sp-muted)}.sp-page-summary{color:var(--sp-muted);font-size:12px}.sp-fatal{margin:40px auto;max-width:480px;padding:22px;border:1px solid var(--sp-border);border-radius:var(--sp-radius);background:var(--sp-surface);text-align:center}.sp-fatal a{color:var(--sp-accent);font-weight:600}.push-toggle{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 12px;margin:0 0 12px;font-size:14px}:root{--bg: #0e1116;--surface: #171b22;--surface-2: #1e232c;--border: #262c36;--text: #e6e9ef;--muted: #9aa4b2;--dim: #6b7482;--accent: #4c8dff;--bad: #ff6b6b;--good: #4bd07f;--warn: #f7b955;--sp-bg: var(--bg);--sp-surface: var(--surface);--sp-surface-2: var(--surface-2);--sp-border: var(--border);--sp-text: var(--text);--sp-muted: var(--muted);--sp-accent: var(--accent);--sp-good: var(--good);--sp-warn: var(--warn);--sp-bad: var(--bad);--sp-radius: 10px;--line-red: #d2323c;--line-orange: #f79424;--line-yellow: #fdd304;--line-green: #4bb04f;--line-blue: #0099d8;--line-beige: #cbb26a}*,*:before,*:after{box-sizing:border-box}body{margin:0;min-height:100vh;background:var(--bg);color:var(--text);font:15px/1.5 -apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif}.nav{display:flex;align-items:center;gap:16px;padding:12px 20px;background:var(--surface);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:2}.nav a{color:var(--muted);text-decoration:none;font-size:14px}.nav a:hover,.nav a.active{color:var(--text)}.nav .brand{font-weight:700;font-size:16px;color:var(--text);letter-spacing:.04em}.nav .spacer{flex:1}.nav .who{font-size:13px;color:var(--dim)}.container{max-width:720px;margin:0 auto;padding:20px 16px 72px}.empty{color:var(--dim);text-align:center;padding:40px 12px}.favorites{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px}.fav{display:inline-flex;align-items:stretch;border:1px solid var(--border);border-radius:999px;background:var(--surface);overflow:hidden}.fav button{border:none;background:none;color:var(--muted);font:inherit;font-size:13px;padding:6px 12px;cursor:pointer}.fav button:hover{color:var(--text)}.fav .drop{padding:6px 10px 6px 4px;color:var(--dim);font-size:15px;line-height:1}.fav .drop:hover{color:var(--bad)}.fav.active{border-color:var(--accent)}.fav.active button{color:var(--text)}.fav-note{align-self:center;font-size:12px;color:var(--dim)}.picker{display:flex;gap:8px;align-items:end;margin-bottom:12px}.picker label{flex:1 1 0;min-width:0}.picker label span{display:block;font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--dim);margin-bottom:4px}.picker select{width:100%;padding:10px;background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:8px;font-size:15px}.picker .swap{flex:0 0 auto;height:40px;width:40px;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--muted);font-size:16px;cursor:pointer}.picker .swap:hover{color:var(--text);border-color:var(--accent)}.board-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:20px}.board-actions .star{padding:7px 14px;border:1px solid var(--border);border-radius:999px;background:var(--surface);color:var(--muted);font-size:13px;cursor:pointer}.board-actions .star:hover:not(:disabled){color:var(--text);border-color:var(--accent)}.board-actions .star:disabled{opacity:.5;cursor:default}.walk{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--dim)}.walk input{width:56px;padding:6px 8px;background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:8px;font:inherit}.walk .unit{color:var(--dim)}.board-head h1{font-size:19px;margin:0 0 2px;font-weight:600}.board-head .arrow{color:var(--dim)}.board-head .feed{margin:0 0 16px;font-size:12px;color:var(--dim)}.board-head .feed.stale{color:var(--warn)}.trains{list-style:none;margin:0;padding:0}.train{display:flex;align-items:center;gap:14px;padding:12px 14px;background:var(--surface);border:1px solid var(--border);border-radius:10px;margin-bottom:8px}.train .leaves{min-width:92px;display:flex;flex-direction:column}.train .leaves .count{font-size:24px;font-weight:700;font-variant-numeric:tabular-nums;line-height:1.1}.train .leaves .at{font-size:12px;color:var(--dim);font-variant-numeric:tabular-nums}.train .where{flex:1;min-width:0}.train .headsign{font-weight:600}.train .detail{font-size:13px;color:var(--muted)}.train .detail.warn,.train .late{color:var(--warn)}.train .early{color:var(--good)}.train.missed{opacity:.55}.train .line{flex:0 0 auto;padding:3px 10px;border-radius:999px;font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:#0b0e13;background:var(--muted)}.train .line[data-line=red]{background:var(--line-red);color:#fff}.train .line[data-line=orange]{background:var(--line-orange)}.train .line[data-line=yellow]{background:var(--line-yellow)}.train .line[data-line=green]{background:var(--line-green)}.train .line[data-line=blue]{background:var(--line-blue);color:#fff}.train .line[data-line=beige]{background:var(--line-beige)}.alert{padding:12px 14px;border:1px solid var(--border);border-left:3px solid var(--warn);border-radius:8px;background:var(--surface);margin-bottom:10px}.alert h3{margin:0 0 4px;font-size:15px}.alert p{margin:0;font-size:14px;color:var(--muted)}.alert-meta{display:flex;align-items:center;gap:10px;margin-top:8px!important}.alert-meta a{color:var(--accent);font-size:13px}.chip{display:inline-block;padding:2px 8px;border-radius:999px;border:1px solid var(--border);background:var(--surface-2);color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.06em}@media(max-width:520px){.picker{flex-wrap:wrap}.picker label{flex:1 1 100%}.picker .swap{margin-inline:auto}.train .leaves{min-width:76px}}
