:root{color-scheme:light;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;color:#171a18;background:#f5f3ee;font-synthesis:none;text-rendering:optimizeLegibility;--page: #f5f3ee;--surface: #ffffff;--surface-muted: #efede7;--ink: #171a18;--muted: #5e6863;--line: #d9d6ce;--accent: #14643f;--accent-strong: #0f4f32;--accent-tint: #e7f3eb;--mint: #2c8b5c;--mint-bright: #14643f;--lime: #829914;--danger: #9f342f;--danger-tint: #faece9}*{box-sizing:border-box}html,body{width:100%;height:100%;overflow:hidden}html{min-width:320px;background:var(--page)}body{min-width:320px;margin:0;background:var(--page)}button,input{font:inherit}button{color:inherit}button,label,input[type=radio]{-webkit-tap-highlight-color:transparent}[hidden]{display:none!important}.app-shell{width:min(100%,720px);height:100vh;margin:0 auto;padding:28px 18px 48px;overflow-y:auto;overscroll-behavior-y:contain;-webkit-overflow-scrolling:touch}.app-shell.input-focused,.app-shell.search-active{padding-bottom:45vh}@supports (height: 100dvh){.app-shell{height:100dvh}}.hero{display:flex;align-items:center;gap:11px;padding:4px 4px 20px}.brand-mark{display:flex;flex:0 0 auto;align-items:end;gap:2px;width:27px;height:20px}.brand-mark span{width:6px;border-radius:999px;background:var(--mint)}.brand-mark span:nth-child(1){height:9px}.brand-mark span:nth-child(2){height:20px;background:var(--lime)}.brand-mark span:nth-child(3){height:14px;background:var(--accent)}.step-label{margin:0 0 8px;color:var(--accent);font-size:.72rem;font-weight:750;letter-spacing:.14em;text-transform:uppercase}h2,p{margin-top:0}.brand-title{margin:0;font-size:.92rem;font-weight:760;letter-spacing:.015em;line-height:1}.planner-panel,.results-section{position:relative;border:1px solid var(--line);border-radius:24px;background:var(--surface);box-shadow:0 12px 36px #221e160e}.planner-panel{padding:22px 18px 18px}.saved-journey-banner{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:16px;padding:16px;border:1px solid #b9d8c6;border-radius:18px;background:var(--accent-tint)}.saved-journey-banner .step-label{margin-bottom:5px}.saved-journey-route{margin:0;color:var(--ink);font-size:.88rem;font-weight:720;line-height:1.35}.saved-journey-status{min-height:1.2em;margin:5px 0 0;color:#4f5954;font-size:.72rem}.saved-journey-actions{display:flex;flex:0 0 auto;gap:8px}.saved-journey-actions button,.save-journey-button{min-height:40px;padding:0 12px;border:1px solid #8eaaa0;border-radius:11px;color:var(--accent-strong);background:var(--surface);cursor:pointer;font-size:.76rem;font-weight:750}.saved-journey-actions button:hover,.saved-journey-actions button:focus-visible,.save-journey-button:hover,.save-journey-button:focus-visible{border-color:var(--accent);outline:2px solid var(--ink);outline-offset:2px;background:#dbeee2}.saved-journey-actions button:disabled,.save-journey-button:disabled{cursor:wait;opacity:.65}.section-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:24px}.section-heading h2{margin-bottom:0;font-size:clamp(1.45rem,7vw,2rem);font-weight:640;letter-spacing:-.035em}.network-status{display:inline-flex;flex:0 0 auto;align-items:center;gap:7px;padding:7px 10px;border:1px solid #b9d8c6;border-radius:999px;color:var(--accent-strong);background:var(--accent-tint);font-size:.7rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase}.network-status>span{width:6px;height:6px;border-radius:50%;background:var(--accent)}.route-fields{display:grid;grid-template-columns:18px minmax(0,1fr);gap:14px}.route-line{display:grid;grid-template-rows:14px minmax(58px,1fr) 14px;justify-items:center;margin-top:38px;margin-bottom:25px}.route-dot{width:10px;height:10px;border:2px solid var(--accent);border-radius:50%;background:var(--surface);box-shadow:0 0 0 4px #e2eee7}.route-dot--to{border-color:var(--lime)}.route-stem{width:1px;height:calc(100% + 4px);margin:-2px 0;background:linear-gradient(var(--mint),rgba(214,240,107,.7))}.field-stack{display:grid;gap:14px}.station-field{position:relative;min-width:0}.station-field:focus-within{z-index:30}.station-input-row{display:flex;align-items:center;gap:8px}.station-field label,.datetime-field label,.timing-fieldset legend{display:block;margin-bottom:7px;color:#555f5a;font-size:.75rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.input-shell{position:relative;flex:1 1 auto;min-width:0}.input-shell input,.datetime-field input{width:100%;border:1px solid var(--line);border-radius:14px;outline:none;color:var(--ink);background:var(--surface);transition:border-color .16s ease,box-shadow .16s ease,background .16s ease}.input-shell input{height:54px;padding:0 44px 0 15px}.input-shell input::placeholder{color:#6d7671}.input-shell input:focus,.datetime-field input:focus{border-color:var(--accent);background:var(--surface);box-shadow:0 0 0 3px #d8eadf}.input-shell input[aria-invalid=true]{border-color:var(--danger)}.input-state{position:absolute;top:50%;right:16px;width:8px;height:8px;border:1px solid #78817c;border-radius:50%;transform:translateY(-50%)}input[data-selected=true]+.input-state{border:0;background:var(--accent);box-shadow:0 0 0 4px #e2eee7}.search-cancel{display:none;flex:0 0 auto;min-height:42px;padding:0 9px;border:1px solid #bdbab2;border-radius:11px;color:var(--ink);background:var(--surface);font-size:.72rem;font-weight:700;cursor:pointer}.search-cancel:focus-visible{outline:2px solid var(--ink);outline-offset:2px}.input-shell.is-loading .input-state{width:15px;height:15px;border:2px solid #b9d8c6;border-top-color:var(--accent);animation:spin .7s linear infinite}@keyframes spin{to{transform:translateY(-50%) rotate(360deg)}}.field-message,.planner-message{min-height:18px;margin:5px 2px 0;color:var(--danger);font-size:.76rem;line-height:1.4}.planner-message{min-height:20px;margin:12px 2px 2px}.suggestions{position:absolute;z-index:20;top:calc(100% - 18px);right:0;left:0;max-height:310px;overflow-y:auto;overscroll-behavior:contain;padding:6px;border:1px solid var(--line);border-radius:15px;background:var(--surface);box-shadow:0 14px 32px #221e1624;-webkit-overflow-scrolling:touch}.suggestion-option{display:grid;width:100%;gap:8px;padding:12px 11px;border:0;border-radius:10px;text-align:left;background:transparent;cursor:pointer}.suggestion-option:hover,.suggestion-option:focus-visible{outline:2px solid var(--ink);outline-offset:-2px;background:var(--accent-tint)}.suggestion-heading{margin:4px 11px 3px;color:#5e6863;font-size:.61rem;font-weight:800;letter-spacing:.11em;text-transform:uppercase}.suggestion-heading:not(:first-child){margin-top:10px;padding-top:10px;border-top:1px solid var(--line)}.suggestion-name{overflow:hidden;color:var(--ink);font-size:.9rem;font-weight:650;text-overflow:ellipsis;white-space:nowrap}.suggestion-option--place{grid-template-columns:minmax(0,1fr) auto;align-items:center}.place-copy{display:grid;min-width:0;gap:3px}.place-secondary{overflow:hidden;color:var(--muted);font-size:.7rem;text-overflow:ellipsis;white-space:nowrap}.place-type{align-self:center;padding:4px 7px;border:1px solid #b9d8c6;border-radius:999px;color:var(--accent-strong);background:var(--accent-tint);font-size:.58rem;font-weight:760;letter-spacing:.045em;text-transform:uppercase}.suggestion-empty{margin:0;padding:16px 12px;color:var(--muted);font-size:.85rem}.app-shell.search-active{padding-top:0}.app-shell.search-active .hero,.app-shell.search-active .saved-journey-banner,.app-shell.search-active .planner-panel>.section-heading,.app-shell.search-active .route-line,.app-shell.search-active #journey-form>:not(.route-fields),.app-shell.search-active .results-section,.app-shell.search-active .phone-footer{display:none!important}.app-shell.search-active .planner-panel{padding:0;border:0;border-radius:0;background:transparent;box-shadow:none;backdrop-filter:none}.app-shell.search-active .route-fields,.app-shell.search-active .field-stack{display:block}.app-shell.search-active .station-field:not(.is-search-active){display:none}.app-shell.search-active .station-field.is-search-active{display:flex;height:var(--search-shell-height, 100vh);min-height:0;flex-direction:column}.app-shell.search-active .search-cancel{display:inline-flex;align-items:center;justify-content:center}.app-shell.search-active .suggestions{position:static;flex:1 1 auto;min-height:0;margin-top:6px}.app-shell.search-active .suggestion-option{grid-template-columns:minmax(0,1fr) minmax(0,40%);align-items:center;gap:6px;padding:8px 10px}.app-shell.search-active .suggestion-name{min-width:0}.app-shell.search-active .suggestion-option .mode-list{min-width:0;flex-wrap:nowrap;justify-content:flex-end;overflow:hidden}.app-shell.search-active .suggestion-option .mode-chip{flex:0 0 auto}.app-shell.search-active .suggestion-option .mode-chip:nth-child(n+3){display:none}.app-shell.search-active .suggestion-heading{margin-top:3px;margin-bottom:2px}.app-shell.search-active .suggestion-heading:not(:first-child){margin-top:6px;padding-top:6px}.app-shell.search-active .field-message{flex:0 0 auto}.timing-fieldset{min-width:0;margin:17px 0 0;padding:0;border:0}.segmented-control{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));padding:4px;border:1px solid var(--line);border-radius:14px;background:var(--surface-muted)}.segmented-control label{min-width:0;cursor:pointer}.segmented-control input{position:absolute;width:1px;height:1px;opacity:0}.segmented-control span{display:grid;min-height:40px;place-items:center;padding:6px;border-radius:10px;color:#505a55;font-size:.75rem;font-weight:650;text-align:center;transition:color .16s ease,background .16s ease}.segmented-control input:checked+span{color:#fff;background:var(--accent)}.segmented-control input:focus-visible+span{outline:2px solid var(--ink);outline-offset:2px}.datetime-field{margin-top:14px;overflow:hidden}.datetime-field input{height:52px;min-width:0;max-width:100%;padding:0 14px}.primary-action,.go-button{display:flex;width:100%;align-items:center;justify-content:space-between;border:0;border-radius:14px;cursor:pointer;transition:transform .16s ease,background .16s ease,opacity .16s ease}.primary-action{min-height:56px;padding:0 17px;color:#fff;background:var(--accent);font-weight:760;box-shadow:0 8px 20px #221e1614}.primary-action:hover,.go-button:hover{transform:translateY(-1px)}.primary-action:focus-visible,.go-button:focus-visible{outline:2px solid var(--ink);outline-offset:3px}.primary-action:active,.go-button:active{transform:translateY(0)}.primary-action:disabled{cursor:wait;color:#fff;background:#4f665a;opacity:1}.button-arrow{font-size:1.3rem}.results-section{margin-top:18px;padding:22px 18px;scroll-margin-top:20px}.journey-results{display:grid;gap:14px}.journey-step-controls{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:-6px 0 16px}.journey-step-controls button{min-height:42px;padding:0 12px;border:1px solid #aebcb4;border-radius:12px;color:var(--accent);background:var(--surface);cursor:pointer;font-size:.78rem;font-weight:750}.journey-step-controls button:hover,.journey-step-controls button:focus-visible{border-color:var(--accent);outline:2px solid var(--ink);outline-offset:2px;background:var(--accent-tint)}.journey-step-controls button:disabled{border-color:var(--line);color:#737b77;background:var(--surface-muted);cursor:not-allowed}.journey-step-controls button.is-loading{cursor:wait}.journey-step-error{margin:0 0 14px}.journey-card{position:relative;overflow:hidden;padding:18px;border:1px solid var(--line);border-radius:18px;background:var(--surface)}.journey-card:before{position:absolute;top:0;right:0;left:0;height:3px;background:var(--accent);content:""}.journey-card--cheapest:before{background:var(--lime)}.journey-card--combined:before{background:linear-gradient(90deg,var(--mint),var(--lime))}.journey-card__header,.journey-summary{display:flex;align-items:center;justify-content:space-between;gap:14px}.option-badge{color:var(--accent);font-size:.73rem;font-weight:800;letter-spacing:.09em;text-transform:uppercase}.option-badges{display:flex;align-items:center;flex-wrap:wrap;gap:7px}.option-badge--cheapest{color:#5b6d00}.journey-fare{color:#4f5954;font-size:.82rem;font-weight:650}.journey-summary{margin:23px 0 20px}.journey-duration{display:flex;align-items:baseline;margin-bottom:0}.journey-duration strong{font-size:clamp(2.7rem,13vw,4rem);font-weight:630;letter-spacing:-.065em;line-height:.9}.journey-duration span{margin-left:6px;color:var(--muted);font-size:.82rem;font-weight:700}.journey-times{display:flex;gap:16px}.journey-times p{margin-bottom:0}.journey-times span,.journey-times strong{display:block}.journey-times span{margin-bottom:3px;color:#5e6863;font-size:.64rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.journey-times strong{color:var(--ink);font-size:.92rem}.leg-strip,.mode-list{display:flex;align-items:center;flex-wrap:wrap}.leg-strip{gap:7px;padding-top:16px;border-top:1px solid var(--line)}.mode-list{gap:5px}.mode-chip{display:inline-flex;min-height:24px;align-items:center;padding:4px 8px;border:1px solid transparent;border-radius:999px;font-size:.66rem;font-weight:800;letter-spacing:.035em;line-height:1;text-transform:uppercase}.mode-chip--tube{color:#fff;background:#2557a7}.mode-chip--elizabeth-line{color:#fff;background:#6b3b80}.mode-chip--dlr{color:#fff;background:#00766d}.mode-chip--overground{color:#fff;background:#a64700}.mode-chip--bus{color:#fff;background:#b32632}.mode-chip--national-rail{color:#fff;background:#37474f}.mode-chip--walking{color:#fff;background:#536b14}.mode-chip--other{color:#fff;background:#4f5d57}.mode-list--compact .mode-chip{min-height:20px;padding:3px 6px;font-size:.56rem}.change-point{display:inline-flex;align-items:center;gap:5px;color:#59635e}.change-point small{max-width:150px;overflow:hidden;font-size:.64rem;text-overflow:ellipsis;white-space:nowrap}.leg-identity{display:inline-flex;align-items:center;gap:6px}.leg-route-name{color:#4f5954;font-size:.68rem;font-weight:750}.go-button{min-height:46px;padding:0 14px;border:1px solid var(--accent);color:#fff;background:var(--accent);font-size:.82rem;font-weight:720}.journey-card__actions{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);gap:9px;margin-top:18px}.save-journey-button{min-height:46px}.save-journey-status{min-height:1.2em;margin:7px 0 -4px;color:#4f5954;font-size:.72rem;text-align:right}.go-button.is-selected{color:#fff;background:var(--accent-strong)}.results-note{margin:0;padding:14px;border-radius:12px;color:var(--muted);background:var(--surface-muted);font-size:.82rem;line-height:1.5}.phone-footer{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:10px;padding:28px 10px 0;color:#5e6863;font-size:.68rem}.active-journey-view{padding-bottom:24px}.active-journey-header{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;padding:4px 4px 20px}.active-journey-header h1{margin:0;font-size:clamp(1.65rem,8vw,2.35rem);font-weight:650;letter-spacing:-.045em}.end-journey-button{flex:0 0 auto;min-height:42px;padding:0 13px;border:1px solid #c27a74;border-radius:12px;color:#832823;background:var(--danger-tint);font-size:.76rem;font-weight:750;cursor:pointer}.end-journey-button:hover,.end-journey-button:focus-visible{outline:2px solid var(--ink);outline-offset:2px;border-color:var(--danger);background:#f7dfdb}.active-journey-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));overflow:hidden;margin-bottom:18px;border:1px solid var(--line);border-radius:18px;background:var(--surface)}.active-journey-summary>div{min-width:0;padding:14px 10px;text-align:center}.active-journey-summary>div+div{border-left:1px solid var(--line)}.active-journey-summary span,.active-journey-summary strong{display:block}.active-journey-summary span{margin-bottom:5px;color:#5e6863;font-size:.59rem;font-weight:750;letter-spacing:.08em;text-transform:uppercase}.active-journey-summary strong{overflow:hidden;color:var(--ink);font-size:clamp(.78rem,3.4vw,.98rem);text-overflow:ellipsis;white-space:nowrap}.active-stage-list{display:grid;gap:12px;margin:0;padding:0;list-style:none}.active-stage{position:relative;display:grid;grid-template-columns:34px minmax(0,1fr);gap:11px;padding:16px;border:1px solid var(--line);border-radius:18px;background:var(--surface);transition:border-color .18s ease,background .18s ease,box-shadow .18s ease}.active-stage.is-live{border-color:var(--accent);background:var(--accent-tint);box-shadow:inset 3px 0 0 var(--accent)}.active-stage__marker{display:grid;width:30px;height:30px;place-items:center;border:1px solid #bdbab2;border-radius:50%;color:#505a55;background:var(--surface-muted);font-size:.7rem;font-weight:800}.active-stage.is-live .active-stage__marker{border-color:var(--accent);color:#fff;background:var(--accent)}.active-stage__content{min-width:0}.active-stage__eyebrow{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:24px}.active-stage__number{color:#5e6863;font-size:.64rem;font-weight:740;letter-spacing:.07em;text-transform:uppercase}.active-stage__content h2{margin:12px 0 14px;color:var(--ink);font-size:1rem;font-weight:650;letter-spacing:-.015em;line-height:1.35}.active-stage__route{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:10px;margin:0;padding-top:13px;border-top:1px solid var(--line)}.active-stage__route>span:not(.active-stage__arrow){min-width:0}.active-stage__route>span:last-child{text-align:right}.active-stage__route small,.active-stage__route strong,.active-stage__route time{display:block}.active-stage__route small{color:#5e6863;font-size:.59rem;font-weight:750;letter-spacing:.08em;text-transform:uppercase}.active-stage__route strong{overflow:hidden;margin:3px 0;font-size:.76rem;text-overflow:ellipsis;white-space:nowrap}.active-stage__route time{color:#505a55;font-size:.7rem}.active-stage__arrow{color:var(--accent);font-size:1rem}.active-stage__meta{margin:10px 0 0;color:#5e6863;font-size:.72rem}.stop-disclosure{display:flex;width:100%;min-height:42px;align-items:center;justify-content:space-between;margin-top:14px;padding:0 12px;border:1px solid #8cb7a0;border-radius:11px;color:var(--accent-strong);background:var(--surface);font-size:.72rem;font-weight:740;cursor:pointer}.stop-disclosure>span:last-child{font-size:1.05rem;transition:transform .16s ease}.stop-disclosure[aria-expanded=true]>span:last-child{transform:rotate(180deg)}.stop-disclosure:hover,.stop-disclosure:focus-visible{outline:2px solid var(--ink);outline-offset:2px;border-color:var(--accent);background:var(--accent-tint)}.active-stop-list{position:relative;display:grid;gap:0;margin:14px 0 2px;padding:2px 0 0;list-style:none}.active-stop-row{position:relative;display:grid;grid-template-columns:18px minmax(0,1fr) auto;align-items:center;gap:9px;min-height:40px;color:#5e6863;font-size:.75rem}.active-stop-row:not(:last-child):after{position:absolute;z-index:0;top:25px;bottom:-15px;left:6px;width:1px;background:#cbc8bf;content:""}.active-stop-row__dot{position:relative;z-index:1;width:13px;height:13px;border:2px solid #68736d;border-radius:50%;background:var(--surface);transition:border-color .16s ease,background .16s ease,box-shadow .16s ease}.active-stop-row__name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.active-stop-row__time{color:#505a55;font-variant-numeric:tabular-nums}.active-stop-row.is-done{color:#365d49}.active-stop-row.is-done .active-stop-row__dot{border-color:#327653;background:#327653}.active-stop-row.is-next{color:var(--ink);font-weight:720}.active-stop-row.is-next .active-stop-row__dot{border-color:var(--accent);background:var(--surface);box-shadow:0 0 0 4px #d8eadf}.active-stop-row.is-next .active-stop-row__time{color:var(--accent-strong)}.maps-link{display:inline-flex;min-height:38px;align-items:center;margin-top:12px;padding:0 12px;border:1px solid #8cb7a0;border-radius:11px;color:var(--accent-strong);background:var(--accent-tint);font-size:.74rem;font-weight:750;text-decoration:none}.maps-link:after{margin-left:8px;content:"↗"}.maps-link:hover,.maps-link:focus-visible{outline:2px solid var(--ink);outline-offset:2px;border-color:var(--accent);background:#dbeee2}.footer-separator{width:3px;height:3px;border-radius:50%;background:#7b827e}@media(min-width:600px){.app-shell{padding:32px 28px 64px}.hero{padding-bottom:24px}.planner-panel,.results-section{padding:28px;border-radius:28px}.field-stack{gap:18px}.suggestion-option{grid-template-columns:minmax(0,1fr) auto;align-items:center}.journey-card{padding:22px}.active-stage{padding:20px}}@media(max-width:380px){.saved-journey-banner{align-items:stretch;flex-direction:column}.saved-journey-actions button{flex:1 1 0}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
