:root{
  color-scheme:light dark;
  --bg:#eef4f2;--surface:#fff;--surface2:#f6f9f8;--ink:#18342c;--muted:#6b7e77;--border:#dbe5e1;--soft:#edf3f1;
  --accent:#1d6f42;--accent-soft:#e7f3ec;--orange:#a85c00;--orange-bg:#fff0d2;--blue:#003082;--red:#c0392b;--metro:#2980b9;--ferry:#087f8c;
  --shadow:0 18px 56px rgba(29,63,49,.10);--shadow-sm:0 8px 28px rgba(29,63,49,.08);--radius:20px;
  --text-secondary:var(--muted);--surface-1:color-mix(in srgb,var(--surface) 90%,#000 10%);
}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:var(--bg);color:var(--ink);font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif}body{min-height:100dvh;padding:max(14px,env(safe-area-inset-top)) 12px max(18px,env(safe-area-inset-bottom))}a{color:inherit;text-decoration:none}button,input{font:inherit}.site-shell{width:min(820px,100%);margin:0 auto;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}.topbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px;border-bottom:1px solid var(--border)}.brand{display:flex;align-items:center;gap:9px}.brand-mark{display:grid;place-items:center;width:38px;height:38px;border-radius:12px;background:var(--accent);color:#fff;font-weight:900;font-size:13px}.brand b{display:block;font-size:15px}.brand small{display:block;color:var(--muted);font-size:10px;margin-top:1px}.site-footer{display:flex;justify-content:space-between;gap:10px;padding:12px 14px;border-top:1px solid var(--border);color:var(--muted);font-size:8.5px}.back-link,.ghost-button{border:1px solid var(--border);background:var(--surface);color:var(--ink);border-radius:10px;padding:8px 11px;font-size:10px;font-weight:800;cursor:pointer}
.freshness{display:flex;align-items:center;gap:6px;color:var(--muted);font-size:10px;font-weight:750}.freshness i{width:7px;height:7px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.freshness.stale i,.freshness.error i{background:var(--orange);box-shadow:0 0 0 3px var(--orange-bg)}
.home-hero{position:relative;padding:34px 22px 24px;background:linear-gradient(135deg,var(--surface),var(--surface2))}.home-hero>small,.stop-hero>small,.section-head small,.journey-title>small{display:block;color:var(--accent);font-size:9px;font-weight:900;letter-spacing:.13em}.home-hero h1,.stop-hero h1,.journey-title h1{margin:6px 0 5px;font-size:clamp(26px,7vw,38px);line-height:1.05;letter-spacing:-.04em}.home-hero>p,.stop-hero p,.journey-title p,.section-note,.map-note{margin:0;color:var(--muted);font-size:11px}.search-wrap{display:grid;grid-template-columns:20px 1fr;align-items:center;gap:9px;margin-top:20px;padding:0 14px;min-height:50px;border:1px solid var(--border);border-radius:14px;background:var(--surface);box-shadow:var(--shadow-sm)}.search-wrap svg{width:18px;height:18px;fill:none;stroke:var(--muted);stroke-width:1.8}.search-wrap input{width:100%;height:48px;border:0;outline:0;background:transparent;color:var(--ink);font-size:14px}.search-wrap input::placeholder{color:var(--muted)}.search-results{position:absolute;z-index:50;left:22px;right:22px;top:calc(100% - 8px);padding:6px;border:1px solid var(--border);border-radius:14px;background:var(--surface);box-shadow:0 20px 60px rgba(20,45,35,.16);max-height:340px;overflow:auto}.search-result{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 10px;border-radius:10px}.search-result:hover,.search-result:focus{background:var(--soft)}.search-result b{display:block;font-size:12px}.search-result small{display:block;margin-top:2px;color:var(--muted);font-size:9px}.result-arrow{color:var(--muted);font-weight:900}.home-section{padding:24px 18px 22px;border-top:1px solid var(--border)}.section-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:5px}.section-head h2{margin:3px 0 0;font-size:20px;letter-spacing:-.02em}.section-head.compact{margin:0 0 10px}.section-head.compact h2{font-size:16px}.section-note{margin-bottom:14px}.card-list,.departure-list,.journey-stops{display:grid;gap:9px}.nearby-list{margin-top:12px}.nearby-card,.departure-card,.journey-stop{border:1px solid var(--border);border-radius:15px;background:var(--surface);box-shadow:var(--shadow-sm)}.nearby-card{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center;padding:13px 14px}.nearby-card:hover{border-color:color-mix(in srgb,var(--accent) 45%,var(--border));background:var(--surface2)}.nearby-card b{display:block;font-size:13px}.nearby-card small{display:block;margin-top:4px;color:var(--muted);font-size:9px}.distance{display:inline-flex;align-items:center;min-height:26px;padding:5px 8px;border-radius:999px;background:var(--accent-soft);color:var(--accent);font-size:9px;font-weight:850}.card-skeleton{height:74px;border:1px solid var(--border);border-radius:15px;background:linear-gradient(90deg,var(--surface2) 25%,var(--soft) 45%,var(--surface2) 65%);background-size:220% 100%;animation:shimmer 1.1s ease-in-out infinite}@keyframes shimmer{0%{background-position:100% 0}100%{background-position:-100% 0}}
.stop-hero{padding:24px 18px 18px;background:linear-gradient(135deg,var(--surface),var(--surface2))}.departures{padding:13px 13px 16px;border-top:1px solid var(--border);background:var(--surface2)}.departure-card{display:grid;grid-template-columns:58px auto minmax(0,1fr) auto;gap:10px;align-items:center;min-height:72px;padding:10px 11px;transition:border-color .15s ease,transform .15s ease}.departure-card.clickable:hover{border-color:color-mix(in srgb,var(--accent) 45%,var(--border));transform:translateY(-1px)}.departure-card.cancelled{opacity:.62}.dep-time{font-size:16px;font-weight:900;font-variant-numeric:tabular-nums;letter-spacing:-.03em}.line-badge{display:inline-flex;align-items:center;justify-content:center;min-width:42px;width:max-content;height:30px;padding:0 8px;border-radius:8px;background:var(--line-color,var(--accent));color:#fff;font-size:11px;font-weight:900;white-space:nowrap;overflow:visible;text-overflow:clip;max-width:none}.line-badge.train{--line-color:var(--blue)}.line-badge.tram{--line-color:var(--red)}.line-badge.metro{--line-color:var(--metro)}.line-badge.ferry{--line-color:var(--ferry)}.dep-main{min-width:0}.dep-main b{display:block;font-size:13px;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dep-main small{display:block;margin-top:4px;color:var(--muted);font-size:9px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dep-status{display:flex;flex-direction:column;align-items:flex-end;gap:3px;min-width:58px}.status-badge{display:inline-flex;align-items:center;min-height:20px;padding:3px 6px;border-radius:999px;background:var(--soft);color:var(--muted);font-size:8px;font-weight:850;line-height:1;white-space:nowrap}.status-badge.live{background:#e7f5ed;color:#1d7a49}.status-badge.cancelled{background:#f9e3e3;color:#9b3131}.delay{font-size:9px;font-weight:900;color:var(--orange);white-space:nowrap}.countdown{font-size:8.5px;font-weight:800;color:var(--muted);white-space:nowrap}.countdown.soon{color:var(--accent)}.empty{padding:36px 18px;text-align:center;color:var(--muted)}.empty b{display:block;color:var(--ink);font-size:14px;margin-bottom:5px}
.journey-shell{width:min(1180px,100%)}.journey-hero{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:14px;align-items:center;padding:20px 18px;background:linear-gradient(135deg,var(--surface),var(--surface2));border-bottom:1px solid var(--border)}.journey-hero .line-badge{height:42px;min-width:52px;padding:0 11px;font-size:15px;border-radius:11px}.journey-title h1{font-size:clamp(20px,5vw,31px);margin-top:4px}.journey-grid{display:grid;grid-template-columns:minmax(0,.9fr) minmax(360px,1.1fr);gap:0;min-height:590px}.journey-stops-wrap,.journey-map-wrap{padding:16px}.journey-map-wrap{border-left:1px solid var(--border);background:var(--surface2)}.journey-map{height:520px;border:1px solid var(--border);border-radius:16px;overflow:hidden;background:var(--soft)}.map-note{margin-top:7px}.journey-stop{position:relative;display:grid;grid-template-columns:46px 14px minmax(0,1fr) auto;gap:9px;align-items:center;min-height:56px;padding:9px 10px}.journey-stop::before{content:"";position:absolute;left:68px;top:-10px;bottom:calc(50% + 7px);width:2px;background:var(--border)}.journey-stop::after{content:"";position:absolute;left:68px;top:calc(50% + 7px);bottom:-10px;width:2px;background:var(--border)}.journey-stop:first-child::before,.journey-stop:last-child::after{display:none}.journey-stop .stop-dot{position:relative;z-index:2;width:12px;height:12px;border:2px solid #bcc9c4;border-radius:50%;background:var(--surface)}.journey-stop.current{border-color:color-mix(in srgb,var(--accent) 50%,var(--border));background:var(--accent-soft)}.journey-stop.current .stop-dot{border-color:var(--accent);background:var(--accent)}.journey-stop.passed{background:var(--surface2);color:var(--muted)}.journey-stop.passed .stop-dot{border-color:#aab7b2;background:#aab7b2}.journey-stop.passed b,.journey-stop.passed time,.journey-stop.passed small,.journey-stop.passed .stop-chevron{color:var(--muted)}.journey-stop time{font-size:11px;font-weight:850;font-variant-numeric:tabular-nums}.journey-stop b{display:block;font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.journey-stop small{display:block;margin-top:2px;color:var(--muted);font-size:8.5px}.stop-chevron{color:var(--muted);font-weight:900}.leaflet-container{font:inherit;background:var(--soft)}.leaflet-attribution-flag{display:none}
@media(max-width:760px){body{padding:0;background:var(--surface)}.site-shell{min-height:100dvh;border:0;border-radius:0;box-shadow:none}.topbar{padding:12px}.home-hero{padding:28px 14px 21px}.search-results{left:14px;right:14px}.home-section{padding:21px 12px}.stop-hero{padding:20px 14px 16px}.departures{padding:9px 8px 13px}.departure-card{grid-template-columns:48px auto minmax(0,1fr) auto;gap:7px;min-height:68px;padding:9px 8px}.dep-time{font-size:14px}.line-badge{min-width:38px;height:28px;padding:0 7px;font-size:10px}.dep-main b{font-size:12px}.dep-status{min-width:52px}.journey-hero{grid-template-columns:auto minmax(0,1fr);padding:15px 12px;gap:10px}.journey-hero>.status-badge{grid-column:2;justify-self:start}.journey-grid{grid-template-columns:1fr}.journey-stops-wrap{padding:13px 9px}.journey-map-wrap{padding:13px 9px;border-left:0;border-top:1px solid var(--border)}.journey-map{height:320px}.journey-stop{grid-template-columns:42px 14px minmax(0,1fr) auto;gap:7px}.journey-stop::before,.journey-stop::after{left:61px}.site-footer{padding-bottom:max(12px,env(safe-area-inset-bottom))}}
@media(max-width:430px){.departure-card{grid-template-columns:46px auto minmax(0,1fr)}.dep-status{grid-column:3;align-items:flex-start;flex-direction:row;flex-wrap:wrap;margin-top:-2px}.dep-main{grid-column:3;grid-row:1}.line-badge{grid-row:1 / span 2}.dep-time{grid-row:1 / span 2;align-self:start;padding-top:4px}.journey-stop b{font-size:11.5px}}
@media(prefers-color-scheme:dark){:root{--bg:#0c1519;--surface:#142126;--surface2:#18272d;--ink:#edf5f1;--muted:#9baea6;--border:#2b3b40;--soft:#203036;--accent:#56b77c;--accent-soft:#193e29;--orange:#ffbf68;--orange-bg:#4a3219;--shadow:0 18px 56px rgba(0,0,0,.28);--shadow-sm:0 8px 28px rgba(0,0,0,.18)}.status-badge.live{background:#193e29;color:#8fdda8}.status-badge.cancelled{background:#472929;color:#ffaaaa}.leaflet-tile{filter:brightness(.82) contrast(1.05)}}
@media(prefers-reduced-motion:reduce){.card-skeleton{animation:none}.departure-card{transition:none}}
.error-shell{max-width:680px}.error-state{padding:54px 24px 58px;text-align:center;background:linear-gradient(135deg,var(--surface),var(--surface2))}.error-state>small{display:block;color:var(--accent);font-size:9px;font-weight:900;letter-spacing:.13em}.error-state h1{margin:8px 0 8px;font-size:clamp(28px,7vw,42px);letter-spacing:-.04em}.error-state p{max-width:480px;margin:0 auto;color:var(--muted);font-size:12px;line-height:1.6}.error-home{display:inline-flex;margin-top:22px;min-height:42px;align-items:center;padding:0 15px;border-radius:11px;background:var(--accent);color:#fff;font-size:11px;font-weight:850}
.search-type-label{padding:8px 10px 7px;color:var(--accent);font-size:9px;font-weight:900;letter-spacing:.08em;text-transform:none;border-bottom:1px solid var(--border)}.search-empty{padding:13px 10px;color:var(--muted);font-size:10px}.search-trip small{max-width:620px}.search-trip b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.departure-card.reliability-card{display:block;padding:0;overflow:hidden}.departure-summary{display:grid;grid-template-columns:58px auto minmax(0,1fr) auto;gap:10px;align-items:center;min-height:72px;padding:10px 11px;cursor:pointer;outline:0}.departure-summary:focus-visible{box-shadow:inset 0 0 0 2px var(--accent)}.dep-trip-link{display:block;font-size:13px;font-weight:700;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.reliability-detail{margin:0 10px 10px;padding:10px 12px;border:1px solid var(--border);border-radius:12px;background:var(--surface2)}.reliability-head{display:flex;align-items:center;gap:7px}.reliability-head b{font-size:10px}.reliability-dot,.legend-dot{width:9px;height:9px;border-radius:50%;flex:0 0 auto}.reliability-detail.very .reliability-dot,.legend-dot.very{background:#28b66f}.reliability-detail.good .reliability-dot,.legend-dot.good{background:#e4bf22}.reliability-detail.reasonable .reliability-dot,.legend-dot.reasonable{background:#e58a19}.reliability-detail.low .reliability-dot,.legend-dot.low{background:#d94b4b}.reliability-detail.loading .reliability-dot{background:#94a3b8}.reliability-detail p{margin:6px 0 0;color:var(--muted);font-size:9px;line-height:1.45}.reliability-chevron{margin-left:auto;color:var(--muted);font-size:13px}.reliability-open .reliability-chevron{transform:rotate(180deg)}.reliability-legend{margin-top:14px;padding:14px;border:1px solid var(--border);border-radius:15px;background:var(--surface)}.reliability-legend h2{margin:0 0 10px;font-size:13px}.reliability-legend>div{display:grid;grid-template-columns:12px minmax(0,1fr) auto;gap:7px;align-items:center;min-height:28px}.reliability-legend b{font-size:9px}.reliability-legend small{color:var(--muted);font-size:8px;text-align:right}
@media(max-width:760px){.departure-summary{grid-template-columns:48px auto minmax(0,1fr) auto;gap:7px;min-height:68px;padding:9px 8px}.reliability-detail{margin:0 7px 7px}.reliability-legend{margin:12px 0 0}}
@media(max-width:430px){.departure-summary{grid-template-columns:46px auto minmax(0,1fr)}.departure-summary .dep-status{grid-column:3;align-items:flex-start;flex-direction:row;flex-wrap:wrap;margin-top:-2px}.departure-summary .dep-main{grid-column:3;grid-row:1}.departure-summary .line-badge{grid-row:1 / span 2}.departure-summary .dep-time{grid-row:1 / span 2;align-self:start;padding-top:4px}.reliability-legend>div{grid-template-columns:12px minmax(0,1fr)}.reliability-legend small{grid-column:2;text-align:left}}
.top-actions{display:flex;align-items:center;gap:8px}.nav-link{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:0 11px;border:1px solid var(--border);border-radius:10px;background:var(--surface);font-size:10px;font-weight:850}.buurt-shell{width:min(980px,100%)}.buurt-hero{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:22px 18px;background:linear-gradient(135deg,var(--surface),var(--surface2));border-bottom:1px solid var(--border)}.buurt-hero>div>small{display:block;color:var(--accent);font-size:9px;font-weight:900;letter-spacing:.13em}.buurt-hero h1{margin:5px 0;font-size:clamp(24px,6vw,34px);letter-spacing:-.04em}.buurt-hero p{margin:0;color:var(--muted);font-size:10px}.buurt-map-section{padding:14px;background:var(--surface2);border-bottom:1px solid var(--border)}.buurt-map{height:330px;border:1px solid var(--border);border-radius:16px;overflow:hidden;background:var(--soft)}.buurt-departures{padding:16px 14px 20px}.mode-filter{min-height:44px;padding:0 34px 0 11px;border:1px solid var(--border);border-radius:11px;background:var(--surface);color:var(--ink);font-size:10px;font-weight:800}.buurt-stops{display:grid;gap:12px;margin-top:12px}.buurt-stop-card{border:1px solid var(--border);border-radius:16px;overflow:hidden;background:var(--surface);box-shadow:var(--shadow-sm)}.buurt-stop-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 13px;background:var(--surface2)}.buurt-stop-head b{display:block;font-size:13px}.buurt-stop-head small{display:block;margin-top:3px;color:var(--muted);font-size:9px}.buurt-dep-list{display:grid}.buurt-dep{display:grid;grid-template-columns:46px auto minmax(0,1fr) 18px;gap:8px;align-items:center;min-height:52px;padding:8px 12px;border-top:1px solid var(--border)}.buurt-dep:hover{background:var(--surface2)}.buurt-dep time{font-size:11px;font-weight:900}.mini-line{display:inline-flex;align-items:center;justify-content:center;min-width:34px;height:26px;padding:0 6px;border-radius:7px;background:var(--accent);color:#fff;font-size:9px;font-weight:900}.mini-line.train{background:var(--blue)}.mini-line.tram{background:var(--red)}.mini-line.metro{background:var(--metro)}.mini-line.ferry{background:var(--ferry)}.buurt-dep b{display:block;font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.buurt-dep small{display:block;margin-top:2px;color:var(--muted);font-size:8px}.show-all{display:flex;align-items:center;min-height:44px;padding:0 12px;border-top:1px solid var(--border);color:#3478f6;font-size:9px;font-weight:850}.buurt-empty{padding:12px;color:var(--muted);font-size:9px;border-top:1px solid var(--border)}
@media(max-width:430px){.top-actions{gap:5px}.nav-link,.ghost-button{min-height:44px;padding:0 9px}.buurt-hero{padding:17px 12px}.buurt-map-section{padding:9px}.buurt-map{height:280px}.buurt-departures{padding:13px 9px 18px}.buurt-dep{grid-template-columns:42px auto minmax(0,1fr) 14px;padding:8px 9px}.mode-filter{max-width:132px}}
.platform-alert-host{padding:10px 12px 0;background:var(--surface2)}.platform-alert{display:grid;grid-template-columns:auto minmax(0,1fr) 44px;gap:10px;align-items:center;padding:12px 10px 12px 13px;border:1px solid #e64d5f;border-radius:13px;background:color-mix(in srgb,#9d1e34 88%,var(--surface));color:#fff}.platform-alert-icon{font-size:18px}.platform-alert-text b,.platform-alert-text span{display:block}.platform-alert-text b{font-size:11px}.platform-alert-text span{margin-top:3px;font-size:9px;line-height:1.45}.platform-alert-close{width:44px;height:44px;border:0;border-radius:10px;background:transparent;color:#fff;font-size:23px;cursor:pointer}.dep-meta{display:flex!important;gap:5px;align-items:center;flex-wrap:wrap;white-space:normal!important}.dep-meta>span:not(:last-child)::after{content:' ·';color:var(--muted)}.dep-meta .platform-new{color:#d83a4d;font-weight:900}.dep-meta .platform-old{color:var(--muted);text-decoration:none}.platform-stop-change{color:#d83a4d!important;font-weight:850}.platform-timeline-host{padding:12px 14px;background:var(--surface2);border-bottom:1px solid var(--border)}.platform-change-timeline{padding:13px;border:1px solid #e64d5f;border-radius:14px;background:color-mix(in srgb,#9d1e34 12%,var(--surface))}.platform-change-timeline h2{margin:0 0 9px;color:#d83a4d;font-size:12px}.timeline-row{display:grid;grid-template-columns:42px 12px minmax(0,1fr);gap:8px;align-items:center;min-height:34px;position:relative}.timeline-row time{font-size:9px;color:var(--muted);font-variant-numeric:tabular-nums}.timeline-row b{font-size:9px}.timeline-dot{width:9px;height:9px;border-radius:50%;border:2px solid #91a19b;background:var(--surface);position:relative;z-index:2}.timeline-row.changed .timeline-dot{border-color:#e64d5f;background:#e64d5f}.timeline-row:not(:last-child) .timeline-dot::after{content:'';position:absolute;left:2px;top:8px;width:2px;height:27px;background:var(--border)}
@media(max-width:430px){.platform-alert-host{padding:8px 8px 0}.platform-alert{grid-template-columns:auto minmax(0,1fr) 44px;padding:10px 7px 10px 10px}.platform-timeline-host{padding:9px}.platform-change-timeline{padding:11px}}
/* V9 PWA install prompt */
.pwa-install{position:fixed;z-index:1200;left:50%;bottom:max(16px,env(safe-area-inset-bottom));transform:translateX(-50%);width:min(560px,calc(100% - 24px));display:grid;grid-template-columns:minmax(0,1fr) auto 44px;align-items:center;gap:10px;padding:11px 10px 11px 14px;border:1px solid color-mix(in srgb,#3b82f6 55%,var(--border));border-radius:15px;background:var(--surface);box-shadow:0 18px 60px rgba(10,30,45,.24)}.pwa-install[hidden]{display:none}.pwa-install b,.pwa-install span{display:block}.pwa-install b{font-size:11px}.pwa-install span{margin-top:2px;color:var(--muted);font-size:9px}.pwa-install button{min-height:44px;border:0;border-radius:10px;padding:0 12px;background:#3b82f6;color:#fff;font-size:9px;font-weight:900;cursor:pointer}.pwa-install .pwa-install-close{width:44px;padding:0;background:var(--soft);color:var(--ink);font-size:20px}@media(max-width:430px){.pwa-install{grid-template-columns:minmax(0,1fr) 44px}.pwa-install #pwaInstallAction{grid-column:1 / -1;grid-row:2;width:100%}.pwa-install .pwa-install-close{grid-column:2;grid-row:1}}
@media(display-mode:standalone){.pwa-install{display:none!important}}
/* V9 fullscreen display */
body.display-page{padding:0;background:#07111f;color:#f8fafc;overflow-x:hidden}.display-board{min-height:100dvh;width:100%;background:#07111f;display:flex;flex-direction:column;cursor:pointer;outline:0}.display-head{display:flex;justify-content:space-between;align-items:end;gap:24px;padding:28px 34px 22px;border-bottom:2px solid #1e293b;background:#0b1728}.display-head small{color:#60a5fa;font-size:13px;font-weight:900;letter-spacing:.14em}.display-head h1{margin:7px 0 0;font-size:clamp(30px,5vw,58px);line-height:1;letter-spacing:-.04em}.display-clock{text-align:right}.display-clock b{display:block;font-size:clamp(32px,5vw,56px);font-variant-numeric:tabular-nums}.display-clock span{display:block;margin-top:3px;color:#86efac;font-size:12px;font-weight:850}.display-clock span.stale{color:#fbbf24}.display-rows{flex:1;display:grid;align-content:start}.display-row{display:grid;grid-template-columns:110px 100px minmax(0,1fr) 140px;gap:20px;align-items:center;min-height:86px;padding:14px 34px;border-bottom:1px solid #1e293b}.display-row.cancelled{opacity:.55}.display-time{font-size:clamp(26px,4vw,42px);font-weight:900;font-variant-numeric:tabular-nums}.display-line{display:inline-flex;align-items:center;justify-content:center;justify-self:start;min-width:72px;height:54px;padding:0 12px;border-radius:10px;background:#1d6f42;color:#fff;font-size:clamp(20px,3vw,30px);font-weight:900}.display-line.train{background:#003082}.display-line.tram{background:#c0392b}.display-line.metro{background:#2980b9}.display-line.ferry{background:#087f8c}.display-destination{min-width:0}.display-destination b{display:block;font-size:clamp(20px,3vw,34px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.display-destination small{display:block;margin-top:4px;color:#94a3b8;font-size:clamp(11px,1.5vw,17px)}.display-info{display:flex;flex-direction:column;align-items:flex-end;gap:6px}.display-delay{color:#fbbf24;font-size:clamp(14px,2vw,22px)}.display-live{display:inline-flex;padding:6px 10px;border-radius:999px;background:#334155;color:#cbd5e1;font-size:12px;font-weight:900}.display-live.live{background:#14532d;color:#bbf7d0}.display-live.cancelled{background:#7f1d1d;color:#fecaca}.display-empty{padding:60px 34px;color:#94a3b8;font-size:24px}.display-foot{display:flex;justify-content:space-between;gap:20px;padding:12px 34px;border-top:1px solid #1e293b;color:#64748b;font-size:11px;background:#0b1728}@media(max-width:700px){.display-head{padding:20px 18px 16px}.display-row{grid-template-columns:72px 64px minmax(0,1fr) 90px;gap:10px;min-height:70px;padding:10px 16px}.display-line{min-width:54px;height:42px}.display-foot{padding:10px 16px}.display-destination small{font-size:10px}}@media(max-width:480px){.display-head{align-items:start}.display-clock b{font-size:28px}.display-row{grid-template-columns:58px 48px minmax(0,1fr);gap:8px}.display-info{grid-column:3;align-items:flex-start;flex-direction:row}.display-line{min-width:44px;height:34px;font-size:14px}.display-time{font-size:19px}.display-destination b{font-size:16px}}
/* V9 live vehicle approach */
.vehicle-proximity{display:block!important;margin-top:4px!important;color:#2f7fd8!important;font-size:9px!important;font-weight:850;white-space:normal!important}.vehicle-proximity[hidden]{display:none!important}@media(prefers-color-scheme:dark){.vehicle-proximity{color:#7db7ff!important}}
/* V9 pinned notification controls */
.notify-controls{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:13px}.notify-controls button,.notify-controls select{min-height:44px;border:1px solid var(--border);border-radius:10px;background:var(--surface);color:var(--ink);font-size:9px;font-weight:850}.notify-controls button{padding:0 12px;cursor:pointer}.notify-controls button.active{border-color:#3b82f6;background:#eaf2ff;color:#1d5db8}.notify-controls label{display:flex;align-items:center;gap:6px;color:var(--muted);font-size:9px;font-weight:800}.notify-controls select{padding:0 28px 0 9px}.notify-controls #notifyState{color:var(--muted);font-size:8.5px}.journey-notify{padding:0 14px 12px;background:var(--surface2);border-bottom:1px solid var(--border)}.journey-notify .notify-controls{margin-top:0;padding-top:10px}.notify-permission{display:grid;grid-template-columns:minmax(0,1fr) auto 44px;gap:8px;align-items:center;padding:10px 12px;background:#eaf2ff;border-bottom:1px solid #bcd4ff;color:#17365e}.notify-permission[hidden]{display:none}.notify-permission b,.notify-permission span{display:block}.notify-permission b{font-size:10px}.notify-permission span{margin-top:2px;font-size:8.5px}.notify-permission button{min-height:44px;border:0;border-radius:9px;background:#3b82f6;color:#fff;padding:0 12px;font-size:9px;font-weight:900}.notify-permission #notifyPermissionClose{width:44px;padding:0;background:transparent;color:#17365e;font-size:20px}@media(prefers-color-scheme:dark){.notify-controls button.active{background:#173b67;color:#bfdbfe}.notify-permission{background:#172e4c;border-color:#284d7a;color:#dbeafe}.notify-permission #notifyPermissionClose{color:#dbeafe}}@media(max-width:430px){.notify-permission{grid-template-columns:minmax(0,1fr) 44px}.notify-permission #notifyPermissionAllow{grid-column:1 / -1;grid-row:2}.notify-permission #notifyPermissionClose{grid-column:2;grid-row:1}.notify-controls{gap:6px}.notify-controls #notifyState{width:100%}}

.buurt-dep-loading{display:grid}.buurt-dep-skeleton{display:grid;grid-template-columns:46px 34px minmax(0,1fr);gap:8px;align-items:center;min-height:52px;padding:8px 12px;border-top:1px solid var(--border)}.buurt-dep-skeleton i{display:block;border-radius:6px;background:linear-gradient(90deg,var(--surface2) 25%,var(--soft) 45%,var(--surface2) 65%);background-size:220% 100%;animation:shimmer 1.1s ease-in-out infinite}.sk-time{height:12px}.sk-line{height:26px}.sk-text{height:18px}.loading-label{color:var(--muted);pointer-events:none}.buurt-stop-card.loading .distance{opacity:.75}
@media(prefers-reduced-motion:reduce){.buurt-dep-skeleton i{animation:none}}

/* V14 compact Full-HD display */
.display-line{max-width:80px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@media(min-width:701px){.display-head{padding:18px 24px 14px;gap:18px}.display-head small{font-size:11px}.display-head h1{margin-top:4px;font-size:36px}.display-clock b{font-size:36px}.display-clock span{font-size:11px}.display-row{grid-template-columns:92px 88px minmax(0,1fr) 118px;gap:12px;min-height:60px;padding:6px 24px}.display-time{font-size:30px}.display-line{min-width:0;width:80px;height:36px;padding:0 8px;border-radius:8px;font-size:16px}.display-destination b{font-size:24px;line-height:1.1}.display-destination small{margin-top:2px;font-size:15px}.display-info{gap:3px}.display-delay{font-size:16px}.display-live{padding:4px 8px;font-size:14px}.display-foot{padding:8px 24px;font-size:10px}}
.delay-wrap{display:inline-flex;align-items:center;gap:5px;white-space:nowrap}.delay-trend{font-size:12px;font-weight:950;line-height:1}.delay-trend.up{color:#dc2626}.delay-trend.stable{color:#94a3b8}.delay-trend.down{color:#15803d}
.favorite-controls{display:flex;align-items:center;gap:9px;margin-top:13px}.favorite-toggle{min-height:38px;padding:0 12px;border:1px solid var(--border);border-radius:10px;background:var(--surface);color:var(--ink);font-size:10px;font-weight:900;cursor:pointer}.favorite-toggle.active{border-color:#f2b705;background:#fff8d8;color:#8a6500}.favorite-controls>span{color:var(--muted);font-size:9px}.favorites-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:12px}.favorite-card{min-width:0;border:1px solid var(--border);border-radius:15px;background:var(--surface);box-shadow:var(--shadow-sm);overflow:hidden}.favorite-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:11px 12px;background:var(--surface2)}.favorite-head a{display:block;font-size:12px;font-weight:900}.favorite-head small{display:block;margin-top:2px;color:var(--muted);font-size:8px}.favorite-star{color:#d49b00;font-size:18px}.favorite-manage{display:inline-grid;place-items:center;flex:0 0 36px;width:36px;height:36px;border:1px solid var(--border);border-radius:9px;background:var(--surface);color:#d49b00;font-size:17px;cursor:pointer}.favorite-manage:hover{background:#fff8d8;border-color:#e6bf42}.favorite-manage:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.favorite-deps{display:grid}.favorite-dep{display:grid;grid-template-columns:40px 42px minmax(0,1fr) auto;gap:7px;align-items:center;min-height:48px;padding:7px 10px;border-top:1px solid var(--border)}.favorite-dep time{font-size:10px;font-weight:900}.favorite-dep b{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:10px}.favorite-dep small{display:block;margin-top:2px;color:var(--muted);font-size:8px}.favorite-live{padding:4px 6px;border-radius:999px;background:var(--soft);color:var(--muted);font-size:7px;font-weight:900}.favorite-live.live{background:#dcfce7;color:#166534}.favorite-skeleton{height:106px;margin:9px}.favorites-section .section-note{margin:0}@media(max-width:760px){.favorites-list{grid-template-columns:1fr}.favorite-dep{grid-template-columns:38px 40px minmax(0,1fr) auto}}

/* V17 departure row link + separate reliability chevron */
.departure-summary.has-journey{cursor:pointer;transition:background .15s ease,box-shadow .15s ease}.departure-summary.has-journey:hover{background:var(--surface2)}.departure-summary.has-journey:active{background:var(--soft)}.departure-summary:not(.has-journey){cursor:default}.reliability-toggle{margin-left:auto;display:inline-grid;place-items:center;width:36px;height:36px;padding:0;border:0;border-radius:9px;background:transparent;color:var(--muted);font:900 17px/1 system-ui;cursor:pointer;transition:transform .15s ease,background .15s ease}.reliability-toggle:hover{background:var(--soft)}.reliability-toggle:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.reliability-open .reliability-toggle{transform:rotate(180deg)}.reliability-explanation[hidden]{display:none!important}@media(max-width:760px){.reliability-toggle{width:44px;height:44px;font-size:19px}}

/* V21 reliability color bar: 4px visual, larger touch target */
.departure-card.reliability-card{position:relative}
.reliability-bar{position:absolute;z-index:6;left:0;top:0;bottom:0;width:24px;min-width:24px;padding:0;border:0;background:transparent;cursor:pointer;appearance:none;-webkit-appearance:none;-webkit-tap-highlight-color:transparent;touch-action:manipulation}
.reliability-bar::before{content:"";position:absolute;z-index:1;left:0;top:0;bottom:0;width:4px;min-width:4px;background:#6b7280;transition:background .15s ease;pointer-events:none}
.reliability-bar.very::before{background:#16a34a}
.reliability-bar.good::before{background:#eab308}
.reliability-bar.reasonable::before{background:#f97316}
.reliability-bar.low::before,.reliability-bar.loading::before{background:#6b7280}
.reliability-bar:hover::before{filter:brightness(.92)}
.reliability-bar:focus-visible{outline:2px solid var(--accent);outline-offset:-2px;border-radius:12px 0 0 12px}
.departure-summary{padding-left:20px}
.reliability-detail{margin-left:14px}
.reliability-head{gap:6px}
.reliability-kiecht{font-size:9px;color:var(--muted);font-weight:750}
.reliability-label::before{content:"· ";color:var(--muted);font-weight:700}
.reliability-toggle,.reliability-legend{display:none!important}
@media(max-width:760px){.reliability-bar{width:24px;min-width:24px}.departure-summary{padding-left:24px}.reliability-detail{margin-left:14px}}

/* V22 modaliteitsfilter tabs */
.mode-tabs-shell{margin:-13px -13px 13px;padding:12px 14px 14px;background:transparent;border-bottom:0}
.mode-tabs-shell[hidden]{display:none!important}
.mode-tabs{display:flex;gap:7px;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch}
.mode-tabs::-webkit-scrollbar{display:none}
.mode-tab{flex:0 0 74px;width:74px;height:38px;min-height:38px;padding:0 10px;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--border);border-radius:999px;background:var(--surface);color:var(--ink);font-size:12px;font-weight:800;white-space:nowrap;cursor:pointer;transition:background .15s ease,border-color .15s ease}
.mode-tab:hover{background:var(--soft)}
.mode-tab.active{background:#1D6F42;border-color:#248653;color:#fff;box-shadow:0 0 0 1px rgba(76,175,120,.08),0 5px 16px rgba(0,0,0,.18)}
.mode-tab:focus-visible{outline:2px solid #56b77c;outline-offset:2px}
@media(max-width:760px){.mode-tabs-shell{margin:-9px -8px 10px;padding:12px 0 14px 12px}.mode-tabs{padding-right:12px}.mode-tab{width:74px;height:40px;min-height:40px;padding:0 10px;font-size:12px}}

.departure-card[hidden]{display:none!important}

/* V23 compact reliability detail */
.reliability-detail{margin:0 10px 10px 14px;padding:9px 12px;border:1px solid var(--border);border-radius:10px;background:#f3f5f4;color:var(--text-secondary);font-size:13px;font-weight:400;line-height:1.35}
.reliability-detail[hidden]{display:none!important}
.reliability-inline{display:flex;align-items:center;gap:8px;min-height:20px}
.reliability-dot{width:8px;height:8px;border-radius:50%;flex:0 0 8px;background:#6b7280}
.reliability-detail.very .reliability-dot{background:#16a34a}
.reliability-detail.good .reliability-dot{background:#eab308}
.reliability-detail.reasonable .reliability-dot{background:#f97316}
.reliability-detail.low .reliability-dot,.reliability-detail.loading .reliability-dot{background:#6b7280}
.reliability-text{min-width:0;color:var(--text-secondary);font-size:13px;font-weight:400}
.reliability-head,.reliability-kiecht,.reliability-label,.reliability-explanation{display:none!important}
@media(max-width:760px){.reliability-detail{margin:0 7px 7px 14px;padding:9px 11px;font-size:13px}.reliability-text{font-size:13px}}

/* V27 feedback widget */
.feedback-button{position:fixed;z-index:1401;right:18px;bottom:max(18px,env(safe-area-inset-bottom));display:flex;align-items:center;gap:7px;min-height:40px;padding:0 13px;border:0;border-radius:999px;background:#1D6F42;color:#fff;font-size:12px;font-weight:800;cursor:pointer;box-shadow:0 8px 24px rgba(29,111,66,.22)}
.feedback-button svg{width:16px;height:16px;flex:0 0 16px}.feedback-button:focus-visible{outline:2px solid #56b77c;outline-offset:2px}
.feedback-panel{position:fixed;z-index:1400;right:18px;bottom:max(70px,calc(env(safe-area-inset-bottom) + 70px));width:min(340px,calc(100vw - 24px));padding:16px;border:1px solid #dbe5e1;border-radius:16px;background:#fff;color:#18342c;box-shadow:0 18px 50px rgba(24,52,44,.16)}
.feedback-panel[hidden],.feedback-thanks[hidden],.feedback-error[hidden]{display:none!important}.feedback-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:14px}.feedback-head h2{margin:0;font-size:15px;line-height:1.2}.feedback-head p{margin:4px 0 0;color:#6b7e77;font-size:11px}.feedback-close{width:32px;height:32px;flex:0 0 32px;border:1px solid #dbe5e1;border-radius:9px;background:#f3f6f5;color:#18342c;font-size:18px;cursor:pointer}.feedback-field{display:block;margin-top:12px}.feedback-field>span{display:block;margin-bottom:6px;font-size:11px;font-weight:800}.feedback-field small{font-weight:500;color:#6b7e77}.feedback-field select,.feedback-field textarea{width:100%;border:1px solid #dbe5e1;border-radius:10px;background:#fff;color:#18342c;font:inherit;outline:none}.feedback-field select{height:42px;padding:0 11px;font-size:12px}.feedback-field textarea{min-height:92px;padding:10px 11px;resize:none;font-size:12px;line-height:1.45}.feedback-field select:focus,.feedback-field textarea:focus{border-color:#1D6F42;box-shadow:0 0 0 3px rgba(29,111,66,.10)}.feedback-limit{display:block;margin-top:5px;text-align:right;color:#6b7e77;font-size:9px}.feedback-submit{width:100%;min-height:42px;margin-top:14px;border:0;border-radius:10px;background:#1D6F42;color:#fff;font-size:12px;font-weight:850;cursor:pointer}.feedback-submit:disabled{opacity:.6;cursor:wait}.feedback-error{margin-top:10px;color:#a13b3b;font-size:10px}.feedback-thanks{display:grid;place-items:center;min-height:150px;color:#1D6F42;font-size:18px;font-weight:900}
@media(max-width:520px){.feedback-button{right:12px;bottom:max(12px,env(safe-area-inset-bottom))}.feedback-panel{right:12px;bottom:max(64px,calc(env(safe-area-inset-bottom) + 64px));width:calc(100vw - 24px)}}

/* V28 option 3: richting per vertrek */
.dep-direction{display:block!important;margin-top:2px!important;color:var(--muted)!important;font-size:9px!important;font-weight:400!important;line-height:1.25;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* V28 option 6: rit-samenvatting */
.journey-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;padding:10px 14px 12px;background:var(--surface2);border-bottom:1px solid var(--border)}
.journey-summary-item{display:grid;grid-template-columns:32px minmax(0,1fr);gap:8px;align-items:center;min-width:0;min-height:56px;padding:8px 10px;border:1px solid var(--border);border-radius:12px;background:var(--surface)}
.journey-summary-icon{display:grid;place-items:center;width:32px;height:32px;border-radius:9px;background:var(--accent-soft);color:var(--accent)}
.journey-summary-icon svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.journey-summary-item small{display:block;color:var(--muted);font-size:7.5px;font-weight:900;letter-spacing:.08em}
.journey-summary-item b{display:block;margin-top:2px;color:var(--ink);font-size:10px;line-height:1.25;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.journey-stop[href]{cursor:pointer;text-decoration:none;color:inherit}
.journey-stop[href]:hover{border-color:color-mix(in srgb,var(--accent) 45%,var(--border));background:var(--accent-soft)}
@media(max-width:760px){.journey-summary{grid-template-columns:1fr 1fr;padding:9px;gap:7px}.journey-summary-item{min-height:52px;padding:7px 8px}.journey-grid{grid-template-columns:1fr}.journey-map-wrap{order:1;border-left:0;border-top:0;border-bottom:1px solid var(--border)}.journey-stops-wrap{order:2}.journey-map{height:320px}}
@media(max-width:430px){.journey-summary-item{grid-template-columns:28px minmax(0,1fr)}.journey-summary-icon{width:28px;height:28px}.journey-summary-item b{font-size:9px}.dep-direction{font-size:8.5px!important}}


/* V29 approved mockups 1, 3 and 4 */
.dep-next-stop{display:block!important;margin-top:3px!important;color:var(--muted)!important;font-size:9px!important;font-weight:500!important;line-height:1.25;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dep-next-stop[hidden]{display:none!important}
.status-badge.on-time{background:#e7f5ed;color:#1d7a49}
.status-badge.delay-late{background:#fee5e5;color:#c62828}
.departure-summary .dep-status{display:grid;grid-template-columns:minmax(0,auto) 17px;grid-auto-rows:min-content;align-items:center;justify-items:end;column-gap:7px;min-width:78px}
.departure-summary .dep-status .status-badge{grid-column:1;grid-row:1}
.departure-summary .dep-status .countdown{grid-column:1;grid-row:2}
.dep-chevron{grid-column:2;grid-row:1 / span 2;align-self:center;color:var(--muted);font-size:18px;font-weight:900;line-height:1}

.journey-summary{display:block;padding:10px 14px 12px;background:var(--surface2);border-bottom:1px solid var(--border)}
.journey-summary-track{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:7px}
.journey-summary-item{grid-template-columns:30px minmax(0,1fr);gap:7px;min-height:58px;padding:7px 9px}
.journey-summary-item[hidden]{display:none!important}
.journey-summary-icon{width:30px;height:30px;border-radius:9px}
.journey-summary-icon svg{width:17px;height:17px}
.journey-summary-item b{font-size:10px}
.journey-summary-sub{display:block;margin-top:2px;color:var(--muted);font-size:7.5px;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.journey-summary-dots{display:none}
.journey-map-frame{position:relative;min-width:0}
.journey-map-legend{position:absolute;z-index:800;top:10px;right:10px;display:grid;gap:5px;padding:8px 9px;border:1px solid rgba(219,229,225,.95);border-radius:10px;background:rgba(255,255,255,.94);box-shadow:0 5px 18px rgba(24,52,44,.12);color:#334a42;font-size:8.5px;font-weight:750;line-height:1;pointer-events:none;backdrop-filter:blur(4px)}
.journey-map-legend span{display:flex;align-items:center;gap:6px;white-space:nowrap}
.journey-map-legend span[hidden]{display:none!important}
.journey-map-legend i{display:block;flex:0 0 auto}
.journey-map-legend i.vehicle{width:8px;height:8px;border-radius:50%;background:#1d6f42;box-shadow:0 0 0 2px #fff,0 0 0 3px #1d6f42}
.journey-map-legend i.route{width:13px;height:3px;border-radius:999px;background:#2980b9}
.journey-map-legend i.stop{width:8px;height:8px;border:2px solid #7f918a;border-radius:50%;background:#fff}
.journey-mobile-live{display:none}
.map-note[hidden]{display:none!important}

@media(max-width:767px){
  .journey-summary{padding:8px 0 7px;overflow:hidden}
  .journey-summary-track{display:flex;gap:8px;overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x mandatory;scroll-padding-left:12px;padding:0 12px 5px;scrollbar-width:none;-webkit-overflow-scrolling:touch}
  .journey-summary-track::-webkit-scrollbar{display:none}
  .journey-summary-item{flex:0 0 145px;scroll-snap-align:start;min-height:64px;padding:8px 9px}
  .journey-summary-dots{display:flex;align-items:center;justify-content:center;gap:5px;min-height:10px;padding-top:1px}
  .journey-summary-dot{width:6px;height:6px;padding:0;border:0;border-radius:999px;background:#cdd8d4;cursor:pointer;transition:width .15s ease,background .15s ease}
  .journey-summary-dot.active{width:16px;background:#1D6F42}
  .journey-grid{display:flex;flex-direction:column;min-height:0}
  .journey-map-wrap{order:1;padding:10px 0 12px;border-left:0;border-top:0;border-bottom:1px solid var(--border)}
  .journey-map-wrap .section-head{padding:0 12px}
  .journey-map-frame{width:100%}
  .journey-map{height:300px;width:100%;border-left:0;border-right:0;border-radius:0}
  .journey-map-wrap .map-note{padding:0 12px}
  .journey-map-legend{top:8px;right:8px;padding:7px 8px;font-size:8px}
  .journey-stops-wrap{order:2;padding:13px 9px}
  .journey-mobile-live{display:flex;align-items:center;justify-content:flex-end;gap:6px;margin:-3px 2px 9px;color:var(--muted);font-size:8.5px;font-weight:750}
  .journey-mobile-live[hidden]{display:none!important}
  .journey-mobile-live i{width:7px;height:7px;border-radius:50%;background:#1d6f42}
}
@media(max-width:430px){
  .departure-summary .dep-status{display:grid;grid-template-columns:auto 16px;align-items:center;justify-items:start;column-gap:5px;min-width:0;margin-top:-2px}
  .departure-summary .dep-status .status-badge,.departure-summary .dep-status .countdown{justify-self:start}
  .dep-chevron{font-size:17px}
  .dep-next-stop{font-size:8.5px!important}
  .journey-summary-item{flex-basis:138px}
}
