:root{--bg:#07111f;--panel:#0d1a2b;--panel2:#112238;--line:#20334a;--text:#f4f7fb;--muted:#8ea0b7;--accent:#63e6be;--accent2:#79a7ff;--warn:#ffd166;--bad:#ff7b8a;--safe:#80ed99;font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"SF Pro Display",Segoe UI,sans-serif;color-scheme:dark}*{box-sizing:border-box}html{background:var(--bg)}body{margin:0;background:radial-gradient(circle at 20% -10%,#17385c 0,transparent 35%),var(--bg);color:var(--text);min-height:100vh}.app-shell{max-width:760px;margin:auto;min-height:100vh;padding:calc(env(safe-area-inset-top) + 18px) 16px calc(98px + env(safe-area-inset-bottom))}.topbar{display:flex;justify-content:space-between;align-items:center;padding:8px 2px 18px}.eyebrow,.label{font-size:11px;letter-spacing:.15em;font-weight:800;color:var(--accent)}h1{font-size:29px;margin:4px 0 0;letter-spacing:-.04em}h2{font-size:22px;margin:3px 0;letter-spacing:-.03em}h3{font-size:18px;margin:4px 0}.mode-pill,.badge{border:1px solid var(--line);background:#0b1726;border-radius:999px;color:var(--text);padding:9px 12px;font-weight:700}.mode-pill{display:flex;gap:7px;align-items:center}.dot{width:7px;height:7px;border-radius:50%;background:var(--accent)}.card{border:1px solid var(--line);background:linear-gradient(180deg,rgba(17,34,56,.94),rgba(10,24,40,.96));border-radius:22px;padding:18px;box-shadow:0 18px 50px rgba(0,0,0,.16)}.glow{box-shadow:0 22px 70px rgba(67,150,255,.11)}.hero-row,.section-head,.source-row,.advisor-head,.endpoint,.saved-bus-head,.map-head{display:flex;justify-content:space-between;align-items:center;gap:12px}.place{font-size:24px;font-weight:800;margin-top:4px}.icon-button,.text-button{background:none;border:0;color:var(--accent);font-weight:800}.hero-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:22px 0}.hero-grid>div{padding:12px 10px;border-radius:16px;background:#081522;border:1px solid #162b42}.metric{display:block;font-size:22px;font-weight:850}.metric-label{display:block;color:var(--muted);font-size:11px;margin-top:5px}.source-row{font-size:11px;color:var(--muted)}.badge{padding:6px 9px;font-size:10px;color:var(--accent)}.section-head{margin:26px 2px 10px}.section-head.subhead{margin-top:18px}.stack{display:grid;gap:10px}.compact-stack{margin-top:12px}.stop-card,.rail-card{padding:16px}.compact-stop{box-shadow:none;background:#091827}.stop-top{display:flex;justify-content:space-between;gap:10px;align-items:start}.stop-name{font-weight:850;font-size:17px}.stop-code{font-size:11px;color:var(--muted);margin-top:3px}.distance{color:var(--muted);font-size:12px}.stop-actions{display:flex;align-items:center;gap:8px}.favorite-stop{width:36px;height:36px;border-radius:12px;border:1px solid var(--line);background:#081522;color:var(--muted);font-size:20px;line-height:1}.favorite-stop.saved{color:var(--warn);border-color:#5c4a23;background:#211b0e}.services{display:flex;gap:8px;overflow:auto;padding-top:14px}.service{flex:0 0 auto;min-width:72px;padding:10px;border-radius:14px;background:#081522;border:1px solid #1b314a}.service-no{font-size:15px;font-weight:900}.eta{font-size:20px;font-weight:900;margin-top:4px}.eta small{font-size:10px;color:var(--muted);font-weight:700}.load{font-size:10px;color:var(--muted);margin-top:3px}.train-list{display:grid;gap:8px;margin-top:14px}.train-row{display:grid;grid-template-columns:52px 1fr auto;gap:10px;align-items:center;padding:10px;border-radius:14px;background:#081522;border:1px solid #172d46}.line-badge{font-size:11px;font-weight:950;letter-spacing:.03em;padding:7px 4px;text-align:center;border-radius:9px;background:#24364d;color:#fff}.line-ewl{background:#009645}.line-cgl{background:#009645}.line-nsl{background:#d42e12}.line-nel{background:#9900aa}.line-ccl,.line-cel{background:#fa9e0d;color:#1a1200}.line-dtl{background:#005ec4}.line-tel{background:#9d5b25}.line-bpl{background:#748477}.line-slrt,.line-plrt{background:#748477}.train-dest{min-width:0}.train-dest strong{display:block;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.train-dest span{display:block;color:var(--muted);font-size:10px;margin-top:3px}.train-times{display:flex;gap:4px;align-items:center}.train-times span{min-width:31px;text-align:center;padding:7px 5px;border-radius:9px;background:#10243a;color:#b8c9db;font-size:11px;font-weight:800}.train-times .next{background:var(--accent);color:#06231b}.manual,.advisor,.traveller,.integration,.planner,.saved,.saved-buses,.map-card{margin-top:12px}.manual{display:flex;justify-content:space-between;align-items:center;gap:12px}.manual form,.planner-grid,.saved-stop-form{display:flex;gap:8px}.manual input,.advisor-form input,.planner input,.place-fields input,.saved-stop-form input{min-width:0;width:100%;background:#07111f;border:1px solid var(--line);border-radius:13px;color:var(--text);padding:12px;outline:none}.manual button,.advisor-form button,.primary,.secondary,.saved-stop-form button{border:0;border-radius:13px;background:var(--accent);color:#052218;font-weight:900;padding:0 14px}.saved-buses p{color:var(--muted);font-size:13px;line-height:1.45}.counter{min-width:34px;height:34px;border-radius:999px;background:#07111f;border:1px solid var(--line);display:grid;place-items:center;font-size:12px;font-weight:900;color:var(--accent)}.view-switch{display:flex;padding:3px;border-radius:12px;border:1px solid var(--line);background:#07111f}.view-switch button{border:0;background:transparent;color:var(--muted);font-weight:800;padding:8px 11px;border-radius:9px}.view-switch button.active{background:#17304a;color:var(--text)}.transport-map{height:390px;border-radius:16px;overflow:hidden;background:#091827;border:1px solid var(--line);margin-top:14px}.leaflet-container{font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"SF Pro Display",Segoe UI,sans-serif}.leaflet-popup-content-wrapper,.leaflet-popup-tip{background:#0b1726;color:#f4f7fb}.leaflet-control-attribution{font-size:9px!important}.map-legend{display:flex;gap:12px;flex-wrap:wrap;padding-top:12px;color:var(--muted);font-size:11px}.map-legend span{display:flex;gap:6px;align-items:center}.legend-dot{width:10px;height:10px;border-radius:50%;display:inline-block;border:2px solid #07111f}.saved-dot{background:var(--warn)}.bus-dot{background:var(--accent)}.rail-dot{background:var(--accent2)}.you-dot{background:var(--bad)}.map-note{color:var(--muted);font-size:10px;line-height:1.4;margin:10px 0 0}.map-unavailable{display:grid;place-items:center;height:100%;padding:24px;text-align:center;color:var(--muted)}.planner-grid{margin-top:14px}.quick-destinations,.chips{display:flex;gap:7px;overflow:auto;padding-top:10px}.quick-destinations button,.chips button{white-space:nowrap;border:1px solid var(--line);background:transparent;color:var(--muted);border-radius:999px;padding:8px 10px}.place-fields{display:grid;gap:10px;margin:14px 0}.place-fields label{font-size:11px;color:var(--muted);font-weight:800}.place-fields input{display:block;margin-top:5px}.saved p,.traveller p,.integration p{color:var(--muted);line-height:1.5}.secondary{background:#142b42;color:var(--text);border:1px solid var(--line)}.advisor-head{justify-content:flex-start}.freya-orb{height:42px;width:42px;border-radius:50%;display:grid;place-items:center;background:radial-gradient(circle at 35% 30%,#a6f7df,var(--accent) 40%,#1e9273);color:#06231b;font-weight:950;box-shadow:0 0 30px rgba(99,230,190,.22)}.advisor-reply{margin:16px 0;padding:14px;border-radius:14px;background:#07111f;color:#dbe6f1;line-height:1.45}.advisor-form{display:grid;grid-template-columns:1fr 44px;gap:8px}.advisor-form button{font-size:20px}.primary.full,.secondary.full{width:100%;padding:14px;margin-top:10px}.primary:disabled{opacity:.4}.alert{display:flex;gap:12px;align-items:flex-start}.alert-icon{height:38px;width:38px;border-radius:12px;display:grid;place-items:center;background:#101f31}.alert-title{font-weight:850}.alert-copy{color:var(--muted);font-size:13px;margin-top:4px;line-height:1.4}.endpoint{margin-top:9px;padding:12px 14px;background:#07111f;border-radius:13px}.endpoint span{color:var(--muted);font-size:11px}.bottom-nav{position:fixed;left:50%;bottom:calc(10px + env(safe-area-inset-bottom));transform:translateX(-50%);width:min(92%,720px);display:grid;grid-template-columns:repeat(4,1fr);border:1px solid var(--line);background:rgba(7,17,31,.92);backdrop-filter:blur(18px);border-radius:22px;padding:8px;z-index:1000;box-shadow:0 18px 60px rgba(0,0,0,.45)}.bottom-nav button,.bottom-nav a{border:0;background:transparent;color:var(--muted);padding:8px 4px;border-radius:14px;font-size:18px}.bottom-nav span{display:block;font-size:10px;margin-top:3px}.bottom-nav .active{color:var(--accent);background:#0f2236}.hidden{display:none!important}.toast{position:fixed;left:50%;bottom:105px;transform:translate(-50%,20px);background:#e9fef7;color:#06231b;padding:11px 15px;border-radius:999px;font-weight:800;font-size:12px;opacity:0;pointer-events:none;transition:.2s;z-index:2000}.toast.show{opacity:1;transform:translate(-50%,0)}.skeleton{height:18px;width:55%;border-radius:8px;background:linear-gradient(90deg,#11253a,#1b3651,#11253a);background-size:200% 100%;animation:shimmer 1.3s infinite;margin:10px 0}.skeleton.wide{width:82%;height:24px}.empty,.empty-inline{color:var(--muted);font-size:13px}.empty-inline{padding:6px 0}@keyframes shimmer{to{background-position:-200% 0}}@media(max-width:520px){.hero-grid{grid-template-columns:repeat(3,1fr)}.manual{display:block}.manual form{margin-top:12px}.planner-grid{display:grid}.metric{font-size:18px}.metric-label{font-size:10px}.card{border-radius:19px}.app-shell{padding-left:12px;padding-right:12px}.train-row{grid-template-columns:48px 1fr}.train-times{grid-column:2;justify-content:flex-start}.transport-map{height:330px}.transport-heading{align-items:flex-end}.view-switch button{padding:7px 9px;font-size:12px}.saved-stop-form{display:grid;grid-template-columns:1fr auto}.saved-stop-form button{padding:0 16px}}.rail-board-note{margin-top:12px;padding:9px 11px;border-radius:12px;background:#081522;border:1px solid #17304a;color:var(--muted);font-size:11px;line-height:1.35}.rail-board-note::before{content:"●";color:var(--accent);margin-right:7px}

.top-actions{display:flex;align-items:center;gap:8px}.install-pill{border:1px solid #2f5e68;background:#0d2b32;color:var(--accent);border-radius:999px;padding:9px 12px;font-weight:850;white-space:nowrap}.install-pill.installed{color:var(--muted);background:#0b1726;border-color:var(--line)}.install-pill:disabled{opacity:.7}.profile-card{margin-top:12px}.profile-head,.profile-id-row{display:flex;justify-content:space-between;align-items:center;gap:12px}.profile-card>p{color:var(--muted);font-size:13px;line-height:1.5}.sync-badge{border-radius:999px;padding:6px 9px;background:#10243a;border:1px solid var(--line);color:var(--muted);font-size:10px;font-weight:850;white-space:nowrap}.sync-badge.synced{color:var(--accent);border-color:#245c50;background:#0d2b27}.sync-badge.error{color:var(--bad);border-color:#61333c;background:#27131a}.profile-id-row{margin-top:14px;padding:12px 14px;border-radius:14px;background:#07111f;border:1px solid var(--line)}.profile-id-label{display:block;color:var(--muted);font-size:10px;font-weight:800;margin-bottom:3px}.profile-id-row code{font-size:13px;color:#dbe6f1}.profile-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}.profile-actions .secondary{padding:10px 12px}.pair-panel{margin-top:14px;padding:14px;border-radius:16px;background:#07111f;border:1px solid #17304a}.pair-copy{display:grid;gap:4px}.pair-copy span{color:var(--muted);font-size:11px;line-height:1.4}.pair-panel img{display:block;width:min(260px,100%);aspect-ratio:1/1;margin:14px auto;background:#fff;border-radius:14px;padding:8px}.install-sheet{position:fixed;inset:0;z-index:3000;background:rgba(3,9,16,.72);backdrop-filter:blur(8px);display:grid;place-items:end center;padding:16px 16px calc(16px + env(safe-area-inset-bottom))}.install-sheet-card{position:relative;width:min(100%,560px);border:1px solid var(--line);background:#0d1a2b;border-radius:24px;padding:22px;box-shadow:0 24px 80px rgba(0,0,0,.55)}.install-sheet-card p{color:var(--muted);line-height:1.55}.install-close{position:absolute;right:14px;top:12px;width:36px;height:36px;border-radius:50%;border:1px solid var(--line);background:#07111f;color:var(--text);font-size:22px}.cloud-pulse{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--accent);margin-right:6px}
@media(max-width:620px){.topbar{align-items:flex-start}.top-actions{flex-direction:column;align-items:flex-end}.install-pill,.mode-pill{padding:8px 10px;font-size:12px}.profile-actions{display:grid;grid-template-columns:1fr 1fr}.profile-actions button:first-child{grid-column:1/-1}}

.brand-block{display:flex;align-items:center;gap:12px;min-width:0}.brand-mark{width:48px;height:48px;flex:0 0 48px;border-radius:14px;object-fit:cover;box-shadow:0 8px 24px rgba(0,0,0,.28),0 0 22px rgba(99,230,190,.08)}@media(max-width:520px){.brand-block{gap:9px}.brand-mark{width:42px;height:42px;flex-basis:42px;border-radius:12px}.brand-block h1{font-size:25px}}

.context-note{margin-top:5px;color:var(--muted);font-size:11px;line-height:1.35}
.next-up{margin-top:12px;border-color:#285064;background:linear-gradient(145deg,rgba(16,44,58,.96),rgba(9,26,43,.98))}
.next-up-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}
.next-up-head h2{font-size:20px;margin-top:5px}.next-up>p{color:var(--muted);font-size:13px;line-height:1.45;margin:10px 0 0}
.next-up-action{flex:0 0 auto;border-radius:999px;background:var(--accent);color:#06231b;font-size:11px;font-weight:950;padding:7px 10px}
.next-up-options{display:grid;gap:7px;margin-top:12px}.next-option{display:grid;grid-template-columns:32px 1fr auto;align-items:center;gap:9px;padding:10px 11px;border-radius:13px;background:#07111f;border:1px solid #17304a}.next-icon{width:30px;height:30px;border-radius:9px;background:#102a37;color:var(--accent);display:grid;place-items:center}.next-option strong{display:block;font-size:12px}.next-option span:not(.next-icon){display:block;font-size:10px;color:var(--muted);margin-top:2px}.next-option b{font-size:12px;color:var(--accent)}
.saved-rail{margin-top:12px}.saved-rail p{color:var(--muted);font-size:13px;line-height:1.45}.station-chips{display:flex;gap:7px;overflow:auto;padding-top:10px}.station-chip{white-space:nowrap;border:1px solid #29445e;background:#0a1928;color:var(--text);border-radius:999px;padding:9px 11px;font-weight:800}.station-chip span{color:var(--accent);margin-right:4px}
.favorite-station{width:36px;height:36px;border-radius:12px;border:1px solid var(--line);background:#081522;color:var(--muted);font-size:20px;line-height:1}.favorite-station.saved{color:var(--warn);border-color:#5c4a23;background:#211b0e}
.service{position:relative}.pin-service{position:absolute;right:5px;top:5px;width:22px;height:22px;border:0;border-radius:8px;background:#10243a;color:var(--muted);font-size:12px;display:grid;place-items:center;padding:0}.pin-service.active{background:#3c3313;color:var(--warn)}.service.pinned{border-color:#5c4a23;box-shadow:inset 0 0 0 1px rgba(255,209,102,.14)}.service-pref-note{margin-top:10px;color:var(--muted);font-size:10px}
.saved-rail-dot{background:#c7a7ff}
.profile-summary{display:flex;justify-content:space-between;align-items:center;gap:12px;cursor:pointer;list-style:none}.profile-summary::-webkit-details-marker{display:none}.profile-summary::after{content:"›";color:var(--muted);font-size:22px;transform:rotate(90deg);transition:.2s}.profile-card[open] .profile-summary::after{transform:rotate(270deg)}.profile-details{padding-top:4px}.profile-details>p{color:var(--muted);font-size:13px;line-height:1.5}
.location-sheet-card{text-align:left}.location-orb{width:52px;height:52px;border-radius:50%;display:grid;place-items:center;background:#0d2b32;color:var(--accent);font-size:26px;border:1px solid #2f5e68;margin-bottom:15px}.sheet-actions{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-top:18px}.sheet-actions .primary,.sheet-actions .secondary{padding:13px}
.map-popup{min-width:170px}.map-popup strong{display:block;font-size:13px}.map-popup small{display:block;color:#9eb0c5;margin:3px 0 8px}.map-popup>div{font-size:11px;line-height:1.45}.map-popup button{margin-top:9px;border:0;border-radius:9px;background:#63e6be;color:#052218;font-weight:850;padding:7px 9px}
@media(max-width:520px){.next-up-head h2{font-size:18px}.sheet-actions{grid-template-columns:1fr}.station-chips{margin-right:-4px}.next-option{grid-template-columns:28px 1fr auto}}

.nav-section{scroll-margin-top:18px}
.bottom-nav button,.bottom-nav a{transition:transform .18s ease,background .18s ease,color .18s ease,box-shadow .18s ease}
.bottom-nav button.active,.bottom-nav a.active{transform:translateY(-2px);box-shadow:0 7px 20px rgba(99,230,190,.08)}
.bottom-nav button.active span,.bottom-nav a.active span{font-weight:850}
.data-core-head{display:flex;justify-content:space-between;align-items:center;gap:12px}
.data-core-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin-top:14px}
.data-core-grid>div{padding:12px;border-radius:14px;background:#07111f;border:1px solid var(--line)}
.data-core-grid span{display:block;color:var(--muted);font-size:10px;font-weight:750}
.data-core-grid strong{display:block;margin-top:5px;font-size:13px;color:var(--text)}
.data-core-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:12px}
.data-core-actions button{min-height:44px}
.data-core-result{margin-top:10px;padding:10px 12px;border-radius:12px;background:#081522;color:var(--muted);font-size:11px;line-height:1.4}
.developer-data{margin-top:12px;border-top:1px solid var(--line);padding-top:11px}
.developer-data summary{cursor:pointer;color:var(--muted);font-size:11px;font-weight:800}
.endpoint-list{display:grid;gap:7px;margin-top:9px}
.endpoint-button{display:flex;justify-content:space-between;align-items:center;gap:10px;width:100%;padding:11px 12px;border-radius:12px;border:1px solid var(--line);background:#07111f;color:var(--text);text-align:left}
.endpoint-button code{font-size:11px}.endpoint-button span{font-size:10px;color:var(--muted)}
@media(max-width:520px){.data-core-grid{grid-template-columns:1fr 1fr}.data-core-actions{grid-template-columns:1fr}}

.bottom-nav a{text-decoration:none;text-align:center;cursor:pointer}

.bottom-nav a.active{
  background:var(--accent)!important;
  color:#052218!important;
  box-shadow:0 8px 24px rgba(99,230,190,.28)!important;
  transform:translateY(-2px) scale(1.02);
}
.bottom-nav a.active span{color:#052218!important;font-weight:900}
.bottom-nav a[aria-current="page"]{outline:1px solid rgba(255,255,255,.16)}

.saved-stop-tools{display:flex;gap:7px;justify-content:flex-end;margin-top:10px;padding-top:9px;border-top:1px solid var(--line)}
.saved-stop-tools button{border:1px solid var(--line);background:#07111f;color:var(--muted);border-radius:10px;padding:7px 9px;font-size:10px;font-weight:800}
.saved-stop-tools button:first-child{margin-right:auto;color:var(--accent)}
.error-state{border-color:#61333c!important;color:#ffb2bc!important}
button:disabled{cursor:wait}

.planner-title-row{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.planner-copy{color:var(--muted);font-size:12px;line-height:1.45;margin:8px 0 0}.native-badge{border:1px solid #285c50;background:#0d2b27;color:var(--accent);border-radius:999px;padding:6px 9px;font-size:10px;font-weight:900;white-space:nowrap}
.journey-input-grid{display:grid!important;grid-template-columns:1fr 38px 1fr;align-items:center}.swap-trip{height:38px;width:38px;border-radius:12px;border:1px solid var(--line);background:#0a1928;color:var(--accent);font-size:18px;font-weight:900}
.journey-actions{display:grid;grid-template-columns:1.25fr .75fr;gap:8px;margin-top:12px}.journey-actions button{min-height:46px;padding:0 14px}
.journey-status{margin-top:12px;padding:10px 12px;border-radius:12px;background:#07111f;border:1px solid var(--line);color:var(--muted);font-size:11px;line-height:1.4}.journey-status.error{border-color:#61333c;color:#ffb2bc}
.journey-results{display:grid;gap:10px;margin-top:10px}.journey-option{padding:14px;border-radius:17px;background:#081522;border:1px solid #1b314a}.journey-option.recommended{border-color:#3d7c6d;box-shadow:inset 0 0 0 1px rgba(99,230,190,.08)}
.journey-option-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.journey-option h4{margin:4px 0 0;font-size:17px}.journey-duration{text-align:right}.journey-duration strong{display:block;color:var(--accent);font-size:18px}.journey-duration span{display:block;color:var(--muted);font-size:10px;margin-top:3px}
.journey-meta{display:flex;gap:6px;flex-wrap:wrap;margin-top:10px}.journey-meta span{padding:5px 7px;border-radius:999px;background:#10243a;color:#aebed0;font-size:9px;font-weight:800}
.journey-steps{display:grid;gap:8px;margin-top:12px}.journey-step{display:grid;grid-template-columns:36px 1fr;gap:9px;align-items:center;padding:9px 0;border-top:1px solid rgba(32,51,74,.55)}.journey-step:first-child{border-top:0}.journey-step-icon{width:34px;height:34px;border-radius:10px;background:#10243a;color:var(--accent);display:grid;place-items:center;font-size:11px;font-weight:950}.bus-step-icon{background:#193527;color:#80ed99}.rail-step-icon{background:#152b46;color:#79a7ff}.transfer-step .journey-step-icon{color:var(--warn);background:#332b12}.journey-step strong{display:block;font-size:11px}.journey-step div span{display:block;color:var(--muted);font-size:9px;margin-top:3px;line-height:1.35}.journey-limitations{display:grid;gap:3px;color:var(--muted);font-size:9px;line-height:1.4;padding:2px 4px}
@media(max-width:520px){.journey-input-grid{grid-template-columns:1fr 34px!important}.journey-input-grid #tripTo{grid-column:1/-1}.swap-trip{grid-column:2;grid-row:1}.journey-actions{grid-template-columns:1fr}.journey-option-head{align-items:center}}
