:root{--bg: #0a0a0a;--panel: #111418;--board: #0c0f12;--line-head: #1a1f25;--text: #f4f6f8;--muted: #8b97a3;--amber: #ffcb05;--green: #16884a;--blue: #0065ae;--red: #ff5a5f;--border: #232a31;--row: #14181d;--db-dark: #0a2f6b;--db-head: #1a4ea3;--db-frame: #4f86d6}*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:var(--bg);color:var(--text);font-family:Segoe UI,system-ui,-apple-system,sans-serif;-webkit-font-smoothing:antialiased}#app{min-height:100dvh;display:flex;justify-content:center;padding:max(env(safe-area-inset-top),12px) 12px 24px}.board{width:100%;max-width:720px;background:var(--panel);border:1px solid var(--border);border-radius:16px;overflow:hidden;box-shadow:0 12px 40px #00000080;display:flex;flex-direction:column}.topbar{display:flex;align-items:center;gap:12px;padding:14px 18px;background:var(--board);border-bottom:1px solid var(--border)}.update-banner{display:block;width:100%;padding:12px 18px;border:0;background:var(--amber);color:#111;font:inherit;font-weight:700;cursor:pointer;text-align:center}.update-banner:hover{filter:brightness(1.05)}.appver{text-align:center;color:var(--muted);font-size:11px;margin:4px 0 12px}.linklike{border:0;background:none;color:var(--muted);font:inherit;text-decoration:underline;cursor:pointer;padding:0}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;display:flex;align-items:flex-end;justify-content:center;background:#0009;padding:12px}.sheet{position:relative;width:100%;max-width:480px;max-height:85vh;overflow-y:auto;padding:18px 18px calc(18px + env(safe-area-inset-bottom));border-radius:14px 14px 0 0;background:var(--panel);border:1px solid var(--border);text-align:left;line-height:1.5}.sheet h2{font-size:15px;margin:16px 0 4px}.sheet h2:first-of-type{margin-top:0}.sheet p{margin:0 0 6px;font-size:14px;color:var(--text)}.sheet-close{position:absolute;top:6px;right:10px;border:0;background:none;color:var(--muted);font-size:26px;line-height:1;cursor:pointer}@media (min-width: 520px){.overlay{align-items:center}.sheet{border-radius:14px}}.install-btn{display:block;margin:16px auto 0;padding:11px 18px;border:1px solid var(--db-frame);border-radius:10px;background:var(--db-head);color:#fff;font:inherit;font-weight:600;cursor:pointer}.install-btn:hover{filter:brightness(1.08)}.ios-hint{position:relative;max-width:420px;margin:10px auto 0;padding:12px 36px 12px 14px;border:1px solid var(--border);border-radius:10px;background:var(--panel);color:var(--text);font-size:14px;line-height:1.45;text-align:left}.ios-hint-close{position:absolute;top:4px;right:8px;border:0;background:none;color:var(--muted);font-size:22px;line-height:1;cursor:pointer}.topbar h1{font-size:18px;font-weight:600;margin:0;letter-spacing:.5px}.clock{margin-left:auto;font-variant-numeric:tabular-nums;font-family:SFMono-Regular,Roboto Mono,ui-monospace,monospace;color:var(--amber);font-size:16px}.station{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 18px 6px}.station-name{font-size:22px;font-weight:700}.station-dist{color:var(--muted);font-size:14px}.station-head,.ni-head{display:flex;align-items:center;gap:8px;min-width:0}.station-name,.ni-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.badge{flex:none;display:grid;place-items:center;width:22px;height:22px;color:#fff;font-weight:800;font-size:13px;font-family:Arial,sans-serif;line-height:1}.badge-s{background:var(--green);border-radius:50%}.badge-u{background:var(--blue);border-radius:4px}.toolbar{display:flex;align-items:center;gap:10px;padding:12px 18px 0;flex-wrap:wrap}.compass-btn{font-size:13px;padding:6px 12px}.geo{display:inline-flex;align-items:center;gap:8px}.geo-dist{font-variant-numeric:tabular-nums;font-family:SFMono-Regular,Roboto Mono,ui-monospace,monospace;color:var(--amber);font-size:14px;white-space:nowrap}.compass{position:relative;width:38px;height:38px;flex:0 0 auto;border-radius:50%;border:2px solid var(--border);background:var(--board)}.compass.sm{width:30px;height:30px}.compass:after{content:"";position:absolute;left:50%;top:50%;width:4px;height:4px;margin:-2px 0 0 -2px;border-radius:50%;background:var(--muted)}.needle{position:absolute;top:0;right:0;bottom:0;left:0;transform:rotate(0);transition:transform .12s linear}.needle:before{content:"";position:absolute;left:50%;top:3px;transform:translate(-50%);border-left:5px solid transparent;border-right:5px solid transparent;border-bottom:13px solid var(--amber)}.compass.sm .needle:before{top:2px;border-left:4px solid transparent;border-right:4px solid transparent;border-bottom:10px solid var(--amber)}.north{position:absolute;top:0;right:0;bottom:0;left:0;transition:transform .12s linear}.north-dot,.north-n{position:absolute;left:50%;top:2px;transform:translate(-50%);color:var(--red)}.north-dot{display:none;width:5px;height:5px;border-radius:50%;background:var(--red)}.north-n{top:-12px;font-size:9px;font-weight:800;line-height:1}.compass.sm .north-n{top:-11px;font-size:8px}.north.live .north-dot{display:block}.north.live .north-n{display:none}.finder{margin-top:18px;border-top:4px solid var(--border);background:var(--panel);padding-bottom:12px}.finder .search-filter{justify-content:flex-start;margin:14px 0 2px;padding:0 18px;max-width:none}.finder .search{margin-top:6px}.nearby-title{margin:0;padding:12px 18px 6px;font-size:12px;letter-spacing:.8px;text-transform:uppercase;color:var(--muted);font-weight:600}.nearby-radius{text-transform:none;font-weight:400;opacity:.85}.nearby-list{list-style:none;margin:0;padding:0 0 6px}.nearby-item{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 18px;cursor:pointer}.nearby-item:hover{background:var(--row)}.nearby-item:focus-visible{outline:2px solid var(--green);outline-offset:-2px}.ni-name{font-weight:600}.empty-board{padding:26px 18px;text-align:center}.empty-board .lead{margin:0 0 10px}.empty-board .muted{margin:12px 0 0;font-size:13px}.departures{list-style:none;margin:0;padding:0;background:var(--board)}.row{display:grid;grid-template-columns:58px 1fr auto 72px 64px;align-items:center;gap:10px;padding:12px 18px;border-top:1px solid var(--border);font-size:17px}.row.head{font-size:12px;letter-spacing:.8px;text-transform:uppercase;color:var(--muted);background:var(--line-head);border-top:none;padding-top:8px;padding-bottom:8px}.row:not(.head):nth-child(2n){background:var(--row)}.line{display:inline-grid;place-items:center;min-width:44px;padding:3px 8px;border-radius:6px;background:var(--green);color:#fff;font-weight:800;font-size:15px;font-family:Arial,sans-serif}.row.head .line{background:none;color:var(--muted);font-weight:400;padding:0}.dest{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.platform{color:var(--muted);font-size:14px;white-space:nowrap}.time{text-align:right;font-family:SFMono-Regular,Roboto Mono,ui-monospace,monospace;font-variant-numeric:tabular-nums}.row.head .time{font-family:inherit}.clocktime.delayed{color:var(--muted);text-decoration:line-through}.delay{color:var(--red);font-size:13px;margin-left:4px}.countdown{text-align:right;font-weight:800;color:var(--amber);font-variant-numeric:tabular-nums;font-family:SFMono-Regular,Roboto Mono,ui-monospace,monospace}.row.head .countdown{color:var(--muted);font-weight:400;font-family:inherit}.row.cancelled .dest,.row.cancelled .clocktime{text-decoration:line-through;color:var(--muted)}.row.cancelled .countdown{color:var(--red)}.row.prow{grid-template-columns:58px 1fr 72px 64px}.nearest-btn{border:1px solid var(--db-frame);border-radius:999px;background:var(--db-head);color:#fff;padding:6px 14px;font:inherit;font-size:13px;font-weight:600;cursor:pointer}.nearest-btn:hover{filter:brightness(1.08)}.platform-group{margin:14px 12px 0;border:2px solid var(--db-frame);border-radius:8px;overflow:hidden;background:var(--db-dark);color:#fff}.platform-head{display:flex;align-items:center;gap:10px;margin:0;padding:9px 14px;font-size:14px;font-weight:800;letter-spacing:1px;text-transform:uppercase;color:#fff;background:var(--db-head)}.departures.grouped{background:var(--db-dark)}.platform-dir{margin-left:auto;text-transform:none;font-weight:600;font-size:13px;letter-spacing:0;opacity:.9;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.platform-group .row{border-top-color:#ffffff24}.platform-group .row:not(.head):nth-child(2n){background:#ffffff0f}.platform-group .countdown{color:#fff}.platform-group .platform{color:#ffffffbf}.status{padding:28px 18px;text-align:center;color:var(--muted);font-size:16px}.status.error,.error{color:var(--red)}.lead{color:var(--text);font-size:17px;margin:0 0 20px}button{cursor:pointer;font:inherit;border:1px solid var(--border);background:var(--row);color:var(--text);padding:8px 14px;border-radius:10px}button:hover{border-color:var(--muted)}.primary{background:var(--green);border-color:var(--green);color:#fff;font-weight:700;padding:12px 20px;font-size:16px}.primary.small{padding:8px 14px;font-size:14px;margin-top:12px}.search-filter{display:flex;justify-content:center;gap:18px;margin:24px auto 0;max-width:420px;padding:0;border:0}.search-filter label{display:flex;align-items:center;gap:6px;cursor:pointer;font-size:15px}.search-filter input{accent-color:var(--green);width:18px;height:18px}.search{display:flex;gap:8px;margin:10px auto 0;max-width:420px}.search input{flex:1;padding:11px 14px;border-radius:10px;border:1px solid var(--border);background:var(--board);color:var(--text);font:inherit}.search input:focus{outline:none;border-color:var(--green)}.search-results{list-style:none;margin:14px auto 0;padding:0;max-width:420px;text-align:left}.search-results .result{display:flex;align-items:center;gap:8px;padding:11px 14px;border:1px solid var(--border);border-radius:10px;margin-bottom:6px;cursor:pointer}.search-results .result:not(.disabled):hover{border-color:var(--green);background:var(--row)}.search-results .result.disabled{cursor:default;opacity:.5}.search-results .result.disabled .result-name{text-decoration:line-through}.search-results .muted{color:var(--muted);padding:8px 4px}.meta{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 18px;border-top:1px solid var(--border);color:var(--muted);font-size:13px}.meta button{font-size:13px;padding:6px 10px}#updated{font-variant-numeric:tabular-nums}@media (max-width: 480px){.row{grid-template-columns:48px 1fr 58px 56px;font-size:15px}.row.prow{grid-template-columns:48px 1fr 58px 56px}.row .platform{display:none}.station-name{font-size:19px}.station{row-gap:8px}}
