@font-face{font-family:'Bricolage Grotesque';src:url('/fonts/bricolage-grotesque/font.woff2') format('woff2');font-weight:600 800;font-display:swap}
@font-face{font-family:Figtree;src:url('/fonts/figtree/font.woff2') format('woff2');font-weight:400 700;font-display:swap}
@font-face{font-family:'JetBrains Mono';src:url('/fonts/jetbrains-mono/font.woff2') format('woff2');font-weight:500 700;font-display:swap}
:root{
 color-scheme:light dark;
 --ink:light-dark(#10201A,#E9F2EC);--ground:light-dark(#E8EEE9,#101A15);--surface:light-dark(#FFFFFF,#18251E);
 --brand:light-dark(#0A3D2A,#9BD3B4);--brand-2:light-dark(#0E6B47,#A5DEC0);--brand-tint:light-dark(#E6F2EA,#243C2F);
 --accent:#F2B33D;--accent-tint:light-dark(#FCEFD3,#3E3019);--muted:light-dark(#56675E,#B6C7BD);--line:light-dark(#E1E7E3,#364B3E);
 --danger:light-dark(#9F1D14,#FFBFA6);--danger-tint:light-dark(#FDF3F1,#38271F);--warn:light-dark(#9A4508,#F7CF7E);
 --dark:#10201A;--hero:#0A3D2A;--green:#0E6B47;--white:#FFFFFF;--dark-muted:#CFE0D6;--hero-line:#22372D;--focus:light-dark(#0E6B47,#F2B33D);
 --shadow-sm:0 1px 2px rgba(10,61,42,.06),0 2px 6px rgba(10,61,42,.06);--shadow-md:0 1px 2px rgba(10,61,42,.06),0 10px 28px rgba(10,61,42,.10);--shadow-lg:0 2px 6px rgba(6,42,28,.12),0 28px 70px rgba(6,42,28,.32);--shadow:var(--shadow-md);--radius-small:10px;--radius:14px;--radius-large:22px;
 --route-blue:#DCEBF7;--route-blue-ink:#0F2A44;--route-rose:#F6DCD5;--route-rose-ink:#4A1A10;--print-paper:#FFFFFF;--print-ink:#000000;
 font-family:Figtree,system-ui,-apple-system,'Segoe UI',sans-serif;
}
:root[data-theme=light]{color-scheme:light}:root[data-theme=dark]{color-scheme:dark}
*{box-sizing:border-box}html{background:var(--ground);color:var(--ink);scroll-padding-top:24px}body{margin:0;line-height:1.5}main,section,article,form,aside{min-width:0}[hidden]{display:none!important}
h1,h2,h3,.d{font-family:'Bricolage Grotesque',Georgia,serif;letter-spacing:-.025em;line-height:1.12}h1{font-size:clamp(32px,4vw,40px);margin:0 0 16px;font-weight:800}h2{font-size:26px;margin:0 0 16px}h3{font-size:20px;margin:0 0 12px}p{margin:10px 0;overflow-wrap:anywhere}.m,time,.pnr,.hold-clock{font-family:'JetBrains Mono',ui-monospace,monospace;font-variant-numeric:tabular-nums}
a{color:var(--brand-2);text-underline-offset:4px;overflow-wrap:anywhere;min-height:44px;display:inline-flex;align-items:center}button,input,select,textarea{font:inherit}button,.button,.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;min-width:44px;padding:10px 20px;border:1px solid transparent;border-radius:var(--radius-small);background:var(--green);color:var(--white);font-weight:700;cursor:pointer;text-decoration:none}button:hover:not(:disabled),.button:hover{filter:brightness(.95)}button:disabled{cursor:not-allowed;background:var(--brand-tint);color:var(--muted);border-color:var(--line)}.primary{background:var(--accent);color:var(--dark)}.dark{background:var(--dark);color:var(--white)}.secondary,.outline{background:var(--surface);color:var(--ink);border-color:var(--line)}.danger{background:var(--danger);color:var(--surface)}.danger-outline{background:var(--danger-tint);color:var(--danger);border-color:var(--danger)}
:focus-visible{outline:3px solid var(--focus);outline-offset:3px}.dark-panel :focus-visible,.site-header.hero-header :focus-visible{outline-color:var(--accent)}.skip-link{position:absolute;left:16px;top:8px;transform:translateY(-200%);background:var(--surface);padding:12px;z-index:20}.skip-link:focus{transform:none}
.wrap{width:100%;max-width:1240px;margin:auto;padding-inline:32px}.page-main{padding-block:36px 64px}.stack{display:flex;flex-direction:column;gap:18px}.row,.actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.spread{justify-content:space-between}.muted{color:var(--muted)}.eyebrow,.lbl{font-size:12px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--muted)}.card,.panel,article{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-large);padding:24px;margin-bottom:18px}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr));gap:16px}.dark-panel{background:var(--dark);color:var(--white);border-color:var(--dark)}.dark-panel .muted{color:var(--dark-muted)}.dark-panel h2,.dark-panel h3{color:var(--white)}
label{display:block;font-weight:600;margin:12px 0 4px}input,select,textarea{min-height:44px;padding:12px 14px;background:var(--surface);color:var(--ink);border:1px solid var(--line);border-radius:var(--radius-small);min-width:0}input:not([type=checkbox]),select,textarea{width:100%;max-width:100%}input::placeholder{color:var(--muted);opacity:1}input[type=checkbox]{width:22px;height:22px;min-height:22px;accent-color:var(--green)}fieldset{min-width:0;border:1px solid var(--line);border-radius:var(--radius);padding:16px;margin:16px 0}legend{font-weight:700;padding:0 8px}.check{display:inline-flex;gap:8px;align-items:center;min-height:44px;margin-right:16px}.forms{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:28px}.field{border:1px solid var(--line);border-radius:var(--radius);padding:10px 14px;background:var(--surface)}.field label{margin:0}.field input{border:0;padding:0;font-weight:700;font-size:19px}.form-actions{margin-top:18px}
.chip{border:1px solid var(--line);border-radius:999px;padding:8px 14px;background:var(--surface);color:var(--ink);font-size:14px}.chip[aria-pressed=true]{background:var(--dark);color:var(--white);border-color:var(--dark)}.badge{display:inline-flex;align-items:center;gap:6px;border-radius:999px;padding:5px 10px;font-size:13px;font-weight:700;background:var(--brand-tint);color:var(--brand)}.status-held,.status-offered,.warning-badge{background:var(--accent-tint);color:var(--warn)}.status-waiting,.status-expired,.status-cancelled{color:var(--muted);background:var(--ground)}.list-state,#message:not(:empty),#admin-message:not(:empty),.alert{padding:16px 20px;border-radius:var(--radius);background:var(--brand-tint);color:var(--brand);font-weight:600;margin:16px 0;white-space:pre-wrap}.error,#message.error,#admin-message.error{background:var(--danger-tint);color:var(--danger)}.confirmation{padding:18px 20px;border:1px solid var(--danger);border-radius:var(--radius);background:var(--danger-tint);margin-top:16px}.table-scroll{overflow-x:auto;max-width:100%;margin:16px 0}table{width:100%;border-collapse:collapse;font-size:15px}th,td{text-align:left;border-bottom:1px solid var(--line);padding:14px;vertical-align:top}th{font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);white-space:nowrap}td button{white-space:nowrap}caption{text-align:left;font-weight:700;padding-bottom:12px}
.site-header{background:var(--surface);border-bottom:1px solid var(--line)}.header-inner{display:flex;align-items:center;justify-content:space-between;gap:24px;padding-block:14px}.brand{display:flex;align-items:center;gap:10px;font:800 25px 'Bricolage Grotesque',Georgia,serif;color:var(--ink);text-decoration:none}.brand svg{width:34px;height:34px;flex:none}.brand-mark{fill:var(--hero)}.brand-lines{stroke:var(--accent)}.desktop-nav{display:flex;gap:30px}.desktop-nav a{font-size:15px;font-weight:600;text-decoration:none;color:var(--muted)}.desktop-nav a[aria-current=page]{color:var(--brand);box-shadow:inset 0 -2px var(--green)}.account-nav{display:flex;align-items:center;gap:10px}.initials{width:44px;height:44px;border-radius:50%;background:var(--accent);color:var(--dark);display:grid;place-items:center;font-weight:700}.hero-header{background:var(--hero);color:var(--white);border:0}.hero-header .brand,.hero-header .desktop-nav a{color:var(--white)}.hero-header .brand-mark{fill:var(--accent)}.hero-header .brand-lines{stroke:var(--hero)}.hero-header .desktop-nav a[aria-current=page]{box-shadow:inset 0 -2px var(--accent)}.hero-header .outline{background:transparent;color:var(--white);border-color:var(--dark-muted)}.phone-tabs{display:none}.steps{display:flex;justify-content:center;gap:0;list-style:none;padding:16px 0;margin:0;font-size:14px;font-weight:700}.steps li{display:flex;align-items:center;gap:8px;color:var(--muted)}.steps li+li:before{content:'';width:40px;height:2px;background:var(--line);margin:0 10px}.steps span{width:26px;height:26px;border:2px solid var(--line);border-radius:50%;display:grid;place-items:center}.steps [aria-current=step]{color:var(--ink)}.steps [aria-current=step] span{background:var(--accent);color:var(--dark);border-color:var(--accent)}.site-footer{padding-block:32px;border-top:1px solid var(--line);font-size:14px;color:var(--muted)}.site-footer .wrap{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap}.site-footer a{font-weight:600}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
/* Booking controls retain their accessible labels during the page redesign. */
.seat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(64px,1fr));gap:8px}.seat-grid label{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;min-height:44px;border:1px solid var(--brand);border-radius:var(--radius-small);padding:8px;margin:0}.seat-grid label:has(input:disabled){background:var(--ground);color:var(--muted);border-color:var(--line)}.seat-grid label:has(input:checked){background:var(--green);color:var(--white)}.seat-grid label:has(input:focus-visible){outline:3px solid var(--focus);outline-offset:3px}.seat-key{display:flex;gap:16px;flex-wrap:wrap;color:var(--muted)}.journey-grid{display:grid;grid-template-columns:1fr 1fr auto;gap:16px;padding-block:20px;border-block:1px solid var(--line);margin:18px 0}.journey-grid span,.journey-grid strong{display:block}.checkout-card,.hold-clock{padding:16px;border-radius:var(--radius);background:var(--brand-tint);color:var(--brand)}.hold-clock{font-weight:700}.ticket-total{font-size:20px;font-weight:700}.pnr{font-size:38px;color:var(--brand);letter-spacing:.12em}.ticket-seats li{margin-block:12px}
@media(max-width:767px){.wrap{padding-inline:16px}.page-main{padding-block:24px 40px}body{padding-bottom:80px}.header-inner{gap:12px;padding-block:12px}.brand{font-size:21px}.desktop-nav{display:none}.account-nav .signup-link{display:none}.account-nav .button{padding-inline:12px}.phone-tabs{position:fixed;bottom:0;left:0;right:0;z-index:15;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));background:var(--surface);border-top:1px solid var(--line);padding:4px 6px max(8px,env(safe-area-inset-bottom))}.phone-tabs a{display:flex;flex-direction:column;justify-content:center;gap:3px;text-decoration:none;color:var(--muted);font-size:12px;font-weight:700;min-height:58px;min-width:0}.phone-tabs svg{width:20px;height:20px}.phone-tabs a[aria-current=page]{color:var(--brand);background:var(--brand-tint);border-radius:var(--radius)}.forms{grid-template-columns:1fr}.card,.panel,article{padding:16px;border-radius:16px}.journey-grid{grid-template-columns:1fr 1fr}.steps{font-size:12px}.steps li{gap:4px}.steps li+li:before{width:12px;margin:0 4px}.steps span{width:24px;height:24px}.site-footer .wrap{flex-direction:column}}
@page{size:A4;margin:12mm}
@media print{html{color-scheme:light!important}body{background:var(--print-paper);color:var(--print-ink);padding:0;max-width:none}.site-header,.site-footer,.phone-tabs,.steps,nav,button,.button,#message,.no-print,.skip-link{display:none!important}article,section{box-shadow:none;border:0}.ticket-page{font-size:11pt;line-height:1.3}.ticket-page article{padding:0;margin:0;break-inside:avoid;background:var(--print-paper);color:var(--print-ink)}.ticket-page .journey-grid{grid-template-columns:1fr 1fr auto}.ticket-page .pnr,.ticket-page .muted,.ticket-page .badge{color:var(--print-ink)}.ticket-page .badge{background:var(--print-paper)}}
.card,.panel,article{color:var(--ink)}.dark-panel{color:var(--white)}
/* Home: approved Main / PhoneHome composition. */
.home-hero{background:var(--hero);color:var(--white);position:relative}.hero-layout{display:grid;grid-template-columns:1.08fr 1fr;gap:40px;align-items:center;padding-block:36px 72px}.hero-copy h1{font-size:clamp(42px,5.2vw,72px);line-height:.98;color:var(--white);margin:0 0 24px}.hero-copy h1 span{color:var(--accent)}.hero-illustration svg{display:block;width:100%;border-radius:28px}.search-box{background:var(--surface);color:var(--ink);border-radius:var(--radius-large);overflow:hidden;box-shadow:var(--shadow)}.search-tabs{display:flex;background:var(--brand-tint)}.search-tabs button{flex:1;background:transparent;color:var(--muted);border-radius:0;min-height:52px;padding:8px}.search-tabs [aria-selected=true]{background:var(--surface);color:var(--brand)}.search-box form{padding:20px;display:flex;flex-direction:column;gap:12px}.station-fields{position:relative;border:1px solid var(--line);border-radius:var(--radius)}.station-field{display:flex;gap:14px;align-items:center;padding:8px 16px}.station-field+ .station-field{border-top:1px solid var(--line)}.station-field>div{flex:1;padding-right:46px;min-width:0}.station-field label{margin:0}.station-field input{border:0;background:transparent;padding:0;font-size:19px;font-weight:700}.origin-dot{width:12px;height:12px;border:3px solid var(--green);border-radius:50%;flex:none}.destination-dot{width:12px;height:12px;background:var(--accent);border-radius:3px;flex:none}.swap{position:absolute;right:12px;top:50%;transform:translateY(-50%);padding:0;width:44px;height:44px;border-radius:50%;color:var(--brand-2)}.search-fields{display:grid;grid-template-columns:1.4fr 1fr;gap:12px}.search-submit{width:100%;min-height:58px;font-size:18px;border-radius:var(--radius)}.quick-links{display:flex;gap:24px;flex-wrap:wrap;margin-top:18px}.quick-links a{font-weight:600;font-size:15px;color:var(--white);text-decoration:none}.phone-hero-art{display:none}.home-section{padding-top:72px}.home-section h2{font-size:40px}.station-tabs{display:flex;gap:4px;background:var(--brand-tint);border-radius:12px;padding:4px}.station-tabs button{background:transparent;color:var(--ink);padding:8px 16px}.station-tabs [aria-selected=true]{background:var(--surface);color:var(--brand)}.board-container{border-radius:var(--radius-large);padding:10px;overflow-x:auto;margin-top:20px}.departure-table{color:var(--white)}.departure-table th{color:var(--dark-muted)}.departure-table td,.departure-table th{border-color:var(--hero-line);padding:16px 18px}.board-time{font-size:26px;font-weight:700;color:var(--accent)}.board-destination{font-size:22px;font-weight:700}.board-duration{color:var(--dark-muted)}.board-book{background:var(--hero);color:var(--white)}.route-tile{display:flex;flex-direction:column;justify-content:space-between;gap:30px;min-height:230px;padding:24px;border-radius:var(--radius-large);text-decoration:none}.route-tile .lbl{color:inherit}.route-tile strong{font-size:30px}.route-green{background:var(--hero);color:var(--white)}.route-amber{background:var(--accent);color:var(--dark)}.route-blue{background:var(--route-blue);color:var(--route-blue-ink)}.route-rose{background:var(--route-rose);color:var(--route-rose-ink)}.journey-tiles{padding-bottom:80px}.journey-tiles .card{padding:28px;display:flex;flex-direction:column;gap:14px;overflow:hidden}.mini-seats{font-size:52px;color:var(--green);background:var(--ground);padding:0 16px;border-radius:var(--radius);align-self:start}.queue-art{display:flex;gap:8px}.queue-art span{width:44px;height:44px;border-radius:50%;display:grid;place-items:center;background:var(--hero)}.queue-art span:nth-child(2){background:var(--accent);color:var(--dark)}.refund-tile{background:var(--accent-tint)}.refund-art,.ticket-art{border:1px solid var(--line);border-radius:var(--radius);padding:16px;background:var(--surface);font-weight:700}.ticket-art span{border-left:2px dashed var(--line);margin-left:12px;padding-left:12px}.results-area:has(#results:empty){display:none}.results-area{padding-block:24px}
@media(max-width:767px){.hero-layout{display:block;padding-top:18px;padding-bottom:0}.hero-copy h1{font-size:34px;margin-bottom:82px}.hero-illustration{display:none}.home-hero{background:linear-gradient(var(--hero) 230px,var(--ground) 230px);padding-bottom:8px}.phone-hero-art{display:block;position:absolute;top:110px;left:0;right:0;overflow:hidden}.phone-hero-art svg{width:100%;position:static!important;display:block}.search-box{position:relative;margin:0 -2px}.search-box form{padding:14px;gap:10px}.search-fields{gap:10px}.field input,.station-field input{font-size:17px}.quick-links{display:none}.home-section{padding-top:24px}.home-section h2{font-size:22px}.station-tabs{max-width:100%}.station-tabs button{padding:8px 12px;font-size:14px}.departure-table thead,.board-duration{display:none}.departure-table td{padding:14px 6px}.board-time{font-size:18px}.board-destination{font:700 16px Figtree,system-ui,sans-serif}.board-fare{font-size:12px;color:var(--dark-muted)}.board-container{margin-top:10px;padding-inline:10px;border-radius:16px}.journey-tiles{padding-bottom:36px}}
.result-search-band{background:var(--hero);padding-block:20px}.update-search{display:grid;grid-template-columns:2fr 1fr .7fr auto;gap:10px;align-items:stretch}.update-route{display:flex;gap:10px;align-items:center;background:var(--surface);padding:8px 14px;border-radius:12px}.update-route>div{flex:1;min-width:0}.update-route input{border:0;font-weight:700;font-size:17px;padding:8px 0}.update-route button{padding:0;border-radius:50%}.date-row{display:flex;gap:8px;max-width:100%;min-width:0}#date-strip{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px;flex:1;min-width:0;background:var(--surface);padding:6px;border:1px solid var(--line);border-radius:var(--radius)}.date-chip{display:flex;flex-direction:column;gap:2px;background:transparent;color:var(--ink);padding:8px 4px;min-width:0}.date-chip span{font-size:12px}.date-chip strong{font-size:20px}.date-chip[aria-pressed=true]{background:var(--green);color:var(--white)}.result-filters .check{margin:0}.sort-field{display:flex;gap:8px;align-items:center;margin-left:auto}.sort-field label{margin:0}.sort-field select{width:auto}.result-card{padding:0;overflow:hidden;border-radius:22px}.result-head{display:flex;flex-wrap:wrap;gap:24px;align-items:center;width:100%;padding:22px 26px;background:var(--surface);color:var(--ink);text-align:left;border-radius:0}.result-journey{display:flex;gap:18px;align-items:center;flex:2 1 420px;min-width:0}.result-journey>div>span{display:block}.journey-time{display:block;font-size:34px;font-weight:700;line-height:1.2}.arrival{text-align:right}.journey-line{flex:1;min-width:0;text-align:center;display:flex;flex-direction:column;gap:6px;font-weight:500}.route-track{display:block;width:100%;height:3px;background:var(--green);position:relative;margin-block:4px}.route-track:before,.route-track:after{content:'';position:absolute;top:-4px;width:11px;height:11px;border-radius:50%;border:2px solid var(--green);background:var(--surface)}.route-track:before{left:0}.route-track:after{right:0;border-radius:2px;background:var(--accent);border:0}.small{font-size:13px}.result-info{flex:1 1 240px;display:flex;flex-direction:column;align-items:end;gap:8px}.from-fare{font-size:26px;color:var(--brand)}.demand{display:flex;align-items:center;gap:6px;font-size:13px;font-weight:600}.demand-bars{display:flex;gap:2px}.demand-bars i{width:6px;height:14px;border-radius:2px;background:var(--line)}.level-3 i{background:var(--green)}.level-2 i:nth-child(-n+2){background:var(--accent)}.level-1 i:first-child{background:var(--danger)}.result-details{padding:20px 26px 24px;background:var(--ground);border-top:1px solid var(--line)}.class-tiles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-bottom:16px}.class-tile{display:flex;flex-direction:column;align-items:start;gap:6px;padding:16px;border:2px solid var(--line);background:var(--surface);color:var(--ink);min-width:0;text-align:left}.class-tile[aria-pressed=true]{background:var(--hero);color:var(--white);border-color:var(--hero)}.class-fare{font-size:26px}.class-free{color:var(--brand-2)}.full-class .class-free{color:var(--danger)}.class-tile[aria-pressed=true] .class-free{color:var(--accent)}.full-class{border-color:var(--danger);background:var(--danger-tint)}.timetable-row{display:grid;grid-template-columns:110px 1.6fr 1fr .7fr .8fr auto;align-items:center;gap:16px;padding:16px;border-bottom:1px solid var(--hero-line)}.timetable-row.today{grid-template-columns:110px 1.5fr 1fr .7fr .9fr .8fr auto}.timetable-status{font-weight:700}.timetable-row .muted{color:var(--dark-muted)}
/* Search controls share label rows, input baselines and fixed touch heights. */
#timetable-form{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto;align-items:end;gap:16px}
#timetable-form>div{display:grid;gap:8px;min-width:0}
#timetable-form label{margin:0}
#timetable-form input,#timetable-form select,#timetable-form>button{height:48px;min-height:48px;margin:0}
.update-search{grid-template-columns:minmax(0,2fr) minmax(180px,1fr) minmax(120px,.7fr) auto;gap:12px}
.update-search .field,.update-route>div{padding:10px 14px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface)}
.update-route{display:grid;grid-template-columns:minmax(0,1fr) 44px minmax(0,1fr);align-items:center;gap:12px}
.update-route>div,.update-search .field{display:grid;grid-template-rows:18px 44px;gap:2px;min-width:0}
.update-route label,.update-search .field label{margin:0;line-height:18px}
.update-route input,.update-search .field input{height:44px;min-height:44px;padding:0;border:0;background:transparent;font-size:17px;font-weight:700;line-height:normal}
.update-route button{width:44px;height:44px;min-height:44px;padding:0;align-self:center;border-radius:50%;background:var(--surface)}
.update-search>.primary{border-radius:var(--radius)}
@media(max-width:767px){#timetable-form{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px;padding:16px}#timetable-form>button{grid-column:1/-1}.update-route{gap:8px}.update-route>div,.update-search .field{padding-inline:12px}}
@media(max-width:767px){.update-search{grid-template-columns:1fr 1fr;gap:8px}.update-route{grid-column:1/-1}.update-search .primary{grid-column:1/-1}.result-head{padding:16px;gap:14px}.result-journey{gap:10px;flex-basis:100%}.journey-time{font-size:24px}.journey-line .small{font-size:12px}.result-info{flex-direction:row;flex-wrap:wrap;justify-content:space-between;align-items:center;flex-basis:100%;gap:8px}.from-fare{font-size:20px}.result-details{padding:12px}.class-tiles{gap:8px}.class-tile{padding:8px;gap:4px;font-size:12px;border-width:1px}.class-tile .m,.class-feature{display:none}.class-fare{font:700 14px Figtree,system-ui,sans-serif}.class-free{font-size:11px}.date-row>button{padding:0;min-width:44px}#date-strip{display:flex;overflow-x:auto}.date-chip{flex:0 0 54px}.sort-field{margin-left:0}.timetable-row{grid-template-columns:70px 1fr;gap:8px;padding:12px}.timetable-row>div{font-size:13px}.timetable-row .board-time{grid-row:span 2}.timetable-row>span,.timetable-row>a{grid-column:2}.result-filters{gap:8px}}
.coach-strip{display:flex;gap:10px;overflow-x:auto;padding:14px;background:var(--surface);border:1px solid var(--line);border-radius:20px;margin-block:22px}.coach-tab{flex:none;min-width:150px;height:64px;display:flex;flex-direction:column;align-items:start;justify-content:center;background:var(--ground);color:var(--ink);border:2px solid var(--line);border-radius:var(--radius);padding:0 18px}.coach-tab[aria-selected=true]{background:var(--hero);color:var(--white);border-color:var(--hero)}.engine{flex:none;width:110px;min-height:64px;background:var(--hero);color:var(--accent);border-radius:14px 46px 14px 14px;display:grid;place-items:center;font-size:12px;font-weight:700}.booking-layout{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:24px;align-items:start}.seat-page-title{font-size:40px;margin:16px 0 4px}.seat-summary .dark-panel{background:var(--hero);border-color:var(--hero);display:flex;flex-direction:column;gap:14px}.seat-summary p{margin:0}.seat-summary .primary{width:100%;min-height:50px}.summary-total{border-top:1px solid var(--hero-line);padding-top:14px}.summary-total .d{font-size:34px}.seat-chip{background:var(--white);color:var(--dark);border-radius:8px;padding:8px 12px;font-size:14px}.coach-scroll{overflow-x:auto;max-width:100%;padding:8px 4px 16px}.coach-body{display:inline-flex;gap:10px;border:2px solid var(--line);border-radius:44px 20px 20px 44px;padding:20px 26px 20px 30px;background:var(--ground)}.coach-body.business{gap:14px}.coach-body.sleeper{gap:26px}.seat-column{display:flex;flex-direction:column;align-items:center;gap:8px}.seat-half{display:flex;flex-direction:column;gap:8px;min-height:100px}.aisle{height:30px;display:grid;place-items:center;font-size:11px;color:var(--muted)}.seat-button{width:46px;height:46px;min-width:46px;padding:0;border:2px solid var(--muted);border-radius:12px 12px 7px 7px;background:var(--surface);color:var(--ink);font-size:14px}.seat-button[aria-pressed=true]{background:var(--green);color:var(--white);border-color:var(--green)}.seat-button:disabled{background:var(--line);color:var(--muted);border-color:var(--line)}.traveller-fields fieldset{background:var(--surface);border-radius:var(--radius)}.pay-layout{display:grid;grid-template-columns:1fr 1fr;gap:24px;align-items:start}.pay-layout .checkout-card{background:transparent;color:var(--white);padding:0;line-height:1.8}.pay-layout .hold-clock{background:var(--accent-tint);color:var(--warn)}.pay-layout form button{margin-top:18px;width:100%}
.timetable-status{font-weight:700}
@media(max-width:767px){.booking-layout,.pay-layout{grid-template-columns:1fr}.seat-page-title{font-size:30px}.coach-strip{padding:10px}.coach-tab{padding-inline:12px}.coach-body{padding:16px;gap:8px}.seat-summary{position:static}.seat-half{min-height:100px}}

.booking-layout>div,.pay-layout>div{min-width:0}
@media(max-width:767px){.timetable-row.today{grid-template-columns:70px 1fr}}
.trips-layout{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:28px;align-items:start}.trips-layout>div{min-width:0}.trip-title{font-size:38px}.trip-wait-title{font-size:26px;padding-top:10px}.trip-tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin-bottom:18px}.trip-tabs button{background:transparent;color:var(--muted);border-radius:0}.trip-tabs [aria-selected=true]{border-bottom:3px solid var(--green);color:var(--brand)}.booking-card{display:flex;flex-direction:column;gap:12px}.booking-card h3{font-size:24px;margin:0}.booking-card p{margin:0}.held-card{border-color:var(--accent);background:var(--accent-tint)}.offered-card{background:var(--hero);color:var(--white);border-color:var(--hero)}.offered-card .hold-clock{background:transparent;color:var(--white);padding:0}.offered-card .badge{background:var(--accent);color:var(--dark)}.waiting-card h3{margin-top:14px}.account-forms{max-width:980px;margin-top:24px}.account-forms form{display:flex;flex-direction:column}.account-forms button{margin-top:20px}.ticket-wrap{max-width:1064px}.e-ticket{display:flex;flex-wrap:wrap;overflow:hidden;padding:0;border-radius:22px;box-shadow:var(--shadow)}.ticket-body{flex:999 1 520px;min-width:0}.ticket-banner{background:var(--hero);color:var(--white);padding:20px 28px;display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}.ticket-banner .d{font-size:20px}.ticket-banner .badge{background:var(--accent);color:var(--dark)}.ticket-content{padding:28px;display:flex;flex-direction:column;gap:24px}.ticket-journey{display:flex;align-items:center;gap:20px}.ticket-journey>div{display:flex;flex-direction:column;min-width:0}.ticket-journey>div:last-child{text-align:right}.ticket-time{font-size:36px;line-height:1.2}.ticket-train{flex:1;text-align:center;gap:8px}.ticket-person{display:grid;grid-template-columns:2fr 1fr 1fr;gap:20px;border-top:1px solid var(--line);padding-block:16px}.ticket-person>div{display:flex;flex-direction:column;gap:4px;overflow-wrap:anywhere}.ticket-fare{border-top:1px solid var(--line);padding-top:16px}.ticket-stub{flex:1 1 240px;border-left:2px dashed var(--line);background:var(--ground);padding:28px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;text-align:center}.cancel-ticket{color:var(--danger);margin-left:auto}.ticket-actions{gap:12px}
@media(max-width:767px){.trips-layout{grid-template-columns:1fr}.trip-title{font-size:32px}.ticket-page{background:var(--hero)}.ticket-page .page-main{padding-top:18px}.ticket-page .site-header{background:var(--hero);color:var(--white)}.ticket-page .brand{color:var(--white)}.ticket-content{padding:20px;gap:18px}.ticket-banner{padding:14px 20px}.ticket-banner .d{font-size:17px}.ticket-time{font-size:26px}.ticket-journey{gap:10px}.ticket-train .route-track{display:none}.ticket-train .small{font-size:11px}.ticket-person{grid-template-columns:1fr 1fr;gap:14px}.ticket-person>div:first-child{grid-column:1/-1}.ticket-stub{border-left:0;border-top:2px dashed var(--line);padding:22px 20px}.ticket-actions{flex-direction:column;align-items:stretch}.ticket-actions .dark{background:var(--accent);color:var(--dark)}.cancel-ticket{margin-left:0;justify-content:center;color:var(--accent)}}
@media print{.ticket-wrap{padding:0;max-width:none}.e-ticket{display:flex!important;border-radius:0;box-shadow:none}.ticket-banner{background:var(--print-paper);color:var(--print-ink);border-bottom:1px solid var(--print-ink);padding:8px 0}.ticket-content{padding:12px 0;gap:12px}.ticket-time{font-size:24pt}.ticket-person{grid-template-columns:2fr 1fr 1fr;gap:12px;padding-block:8px}.ticket-person>div:first-child{grid-column:auto}.ticket-stub{padding:12px;border-color:var(--print-ink);background:var(--print-paper);flex-basis:170px}.ticket-page .grid.no-print{display:none}.ticket-page{background:var(--print-paper)}.ticket-journey,.ticket-person{break-inside:avoid}}

@media(max-width:767px){.ticket-journey{display:grid;grid-template-columns:1fr 1fr}.ticket-train{grid-column:1/-1;grid-row:2;flex-direction:row!important;justify-content:center}.ticket-journey>div:last-child{grid-column:2;grid-row:1}}
.admin-workspace{display:grid;grid-template-columns:240px minmax(0,1fr);min-height:calc(100vh - 78px)}.admin-sidebar{background:var(--dark);color:var(--white);padding:24px 16px;display:flex;flex-direction:column;gap:28px}.admin-sidebar .brand{color:var(--white);font-size:22px}.admin-word{font:700 12px Figtree,system-ui,sans-serif;letter-spacing:.08em;color:var(--accent)}.admin-sidebar nav{display:flex;flex-direction:column;gap:4px}.admin-sidebar nav a{min-height:44px;padding:10px 14px;border-radius:var(--radius-small);color:var(--dark-muted);text-decoration:none;font-weight:600}.admin-sidebar nav a:hover{background:var(--hero)}.admin-sidebar>p{margin-top:auto;font-size:14px;color:var(--dark-muted)}.admin-sidebar .outline{background:transparent;color:var(--white);border-color:var(--dark-muted)}.admin-main{padding:32px 36px}.admin-title h1{font-size:36px;margin:4px 0 20px}.admin-title p{margin:0}.admin-kpis{grid-template-columns:repeat(4,minmax(0,1fr));margin-bottom:24px}.kpi{padding:20px 22px;display:flex;flex-direction:column;gap:6px;margin:0;border-radius:var(--radius)}.kpi .d{font-size:34px;overflow-wrap:anywhere}.admin-main h2{font-size:20px}.admin-main #trains>button{margin-bottom:16px}.admin-main #train-filter{width:320px;max-width:100%}.admin-main #new-train{float:right}.admin-panels{display:grid;grid-template-columns:1fr 1fr;gap:16px}.admin-panels>section{min-width:0}.fee-controls{display:flex;gap:10px;align-items:center}.fee-controls input{width:90px;font:700 28px 'Bricolage Grotesque',Georgia,serif;text-align:center;padding:8px}.fee-controls button{padding-inline:12px}.fee-controls .dark{margin-left:auto}.revenue-chart{display:flex;gap:10px;align-items:stretch;height:200px;margin-top:20px}.revenue-column{flex:1;min-width:0;display:flex;flex-direction:column;justify-content:end;align-items:center;gap:6px;position:relative;padding-bottom:24px}.revenue-column>span:first-child{font-size:10px;overflow-wrap:anywhere;text-align:center}.revenue-column>span:last-child{position:absolute;bottom:0;left:0;right:0;text-align:center;color:var(--muted);font-size:11px}.revenue-bar{background:var(--green);width:100%;max-width:36px;border-radius:6px 6px 0 0;max-height:150px;min-height:0;flex-shrink:1}.revenue-bar.negative{background:var(--danger)}.admin-login{max-width:600px}.admin-login button{margin-top:20px}.admin-main #train-form{border-top:1px solid var(--line);padding-top:20px}.admin-main #train-table td:first-child{font-family:'JetBrains Mono',ui-monospace,monospace}.admin-main #train-table th{white-space:nowrap}.admin-main #train-table td{min-width:90px}.admin-main #train-table td:nth-child(2){min-width:190px}.admin-main #train-table td:nth-child(5){min-width:200px}
@media(max-width:1000px){.admin-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.admin-panels{grid-template-columns:1fr}.admin-main{padding:24px}}
@media(max-width:767px){.admin-workspace{grid-template-columns:1fr}.admin-sidebar{padding:16px;gap:12px}.admin-sidebar nav{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}.admin-sidebar>p{margin:0}.admin-sidebar>button{align-self:start}.admin-main{padding:24px 16px}.admin-sidebar .brand{display:none}.kpi{padding:16px}.kpi .d{font-size:28px}.fee-controls{flex-wrap:wrap}.fee-controls .dark{margin-left:0}.admin-page .site-footer{margin-top:0}}

/* Icons8 Material Outlined: 24px visual grid, inside existing 44px touch targets. */
.ui-icon{display:inline-block;width:24px;height:24px;flex:none;background:currentColor;mask:var(--icon-url) center/contain no-repeat;-webkit-mask:var(--icon-url) center/contain no-repeat;vertical-align:middle}
.icon-search{--icon-url:url('/icons/icons8/search.png')}.icon-clock{--icon-url:url('/icons/icons8/clock.png')}.icon-ticket{--icon-url:url('/icons/icons8/ticket.png')}.icon-settings{--icon-url:url('/icons/icons8/settings.png')}.icon-seat{--icon-url:url('/icons/icons8/seat.png')}.icon-swap{--icon-url:url('/icons/icons8/swap.png')}
.desktop-nav a{gap:8px}
.mini-seats{display:grid;place-items:center;width:80px;height:72px;padding:12px}.mini-seats .ui-icon{width:48px;height:48px}
button,.button,.chip,.coach-tab,.class-tile{transition:background-color 160ms ease,border-color 160ms ease,color 160ms ease}
#swap-stations .ui-icon,#update-swap .ui-icon{transition:transform 180ms ease}
#swap-stations:active .ui-icon,#update-swap:active .ui-icon{transform:rotate(180deg)}
.seat-button[aria-pressed=true]{animation:seat-picked 180ms ease-out}
@keyframes seat-picked{from{transform:scale(.92)}to{transform:scale(1)}}
@media(min-width:768px) and (max-width:1100px){.desktop-nav .ui-icon{display:none}}
@media(prefers-reduced-motion:reduce){button,.button,.chip,.coach-tab,.class-tile,#swap-stations .ui-icon,#update-swap .ui-icon{transition:none}.seat-button[aria-pressed=true]{animation:none}#swap-stations:active .ui-icon,#update-swap:active .ui-icon{transform:none}}
/* Expandable phone navigation uses the shared palette and locally hosted icons. */
@media(max-width:767px){
 body{padding-bottom:calc(88px + env(safe-area-inset-bottom,0px))}
 .phone-tabs{left:50%;right:auto;bottom:calc(12px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);display:inline-flex;width:max-content;max-width:calc(100% - 24px);gap:3px;padding:4px;border:1px solid var(--line);border-radius:999px;background:var(--surface);box-shadow:var(--shadow)}
 .phone-tabs a{flex-direction:row;flex-shrink:0;gap:0;min-width:44px;min-height:44px;padding:0 7px;border-radius:999px;font:600 12px Figtree,system-ui,sans-serif;white-space:nowrap;transition:background-color 150ms,color 150ms,transform 150ms}
 .phone-tabs .ui-icon{width:20px;height:20px}
 .phone-tabs a[aria-current=page]{background:var(--accent);color:var(--dark);border-radius:999px}
 .phone-tabs a:focus-visible{background:var(--brand-tint);color:var(--brand)}
 .phone-tabs a:active{transform:scale(.96)}
 .phone-tab-label{display:grid;grid-template-columns:0fr;margin-left:0;opacity:0;transform:translateX(-4px);transition:grid-template-columns 320ms cubic-bezier(.2,.8,.2,1),margin-left 320ms cubic-bezier(.2,.8,.2,1),opacity 220ms,transform 250ms}
 .phone-tab-label>span{min-width:0;overflow:hidden;white-space:nowrap}
 .phone-tabs[data-expanded=true] .phone-tab-label{grid-template-columns:1fr;margin-left:4px;opacity:1;transform:translateX(0)}
}
@media(max-width:340px){.phone-tabs{gap:2px}.phone-tabs a{padding-inline:5px;font-size:11px}.phone-tabs .ui-icon{width:18px;height:18px}.phone-tabs[data-expanded=true] .phone-tab-label{margin-left:3px}}
@media(prefers-reduced-motion:reduce){.phone-tabs a,.phone-tab-label{transition:none}.phone-tabs a:active{transform:none}}
/* Replace the browser's blue touch overlay with the site's own press feedback. */
a,button,summary,label,[role=button],[role=tab]{-webkit-tap-highlight-color:transparent}
a,button,summary,[role=button],[role=tab]{-webkit-user-select:none;user-select:none}
button,.button,.chip,.coach-tab,.class-tile{transition:background-color 160ms ease,border-color 160ms ease,color 160ms ease,scale 150ms ease}
button:active:not(:disabled),.button:active{scale:.97}
@media(hover:hover) and (pointer:fine){.phone-tabs a:hover{background:var(--brand-tint);color:var(--brand)}}
@media(prefers-reduced-motion:reduce){button,.button,.chip,.coach-tab,.class-tile{transition:none}button:active:not(:disabled),.button:active{scale:1}}

/* Owner-supplied calendar, scoped to reusable date fields. */

    .date-selector {--paper:var(--surface);--soft:var(--brand-tint);--gold:var(--accent);--day-radius:18px;}
    .date-selector, .date-selector * { box-sizing: border-box; }
    .date-selector { width: 100%; max-width: 100%; margin: 0; color: var(--ink); font-family: Figtree, system-ui, sans-serif; }
    .date-selector button { font: inherit; color: inherit; cursor: pointer; }
    .date-selector button:disabled { opacity: .35; cursor: not-allowed; }
    .date-selector button:focus-visible { outline: 2px solid var(--ink); outline-offset: 2px; }
    .date-selector .picker { width: 352px; max-width: calc(100vw - 24px); margin: 0; background: var(--paper); padding: 12px 6px; border: 1px solid var(--line); border-radius: 16px; font-size: 13px; }
    .date-selector .header { display: flex; justify-content: space-between; gap: 4px; margin: 0 0 4px; }
    .date-selector .header-group { display: flex; gap: 2px; align-items: center; }
    .date-selector .header button { min-height: 44px; border: 0; border-radius: 8px; padding: 7px 8px; background: transparent; }
    .date-selector .header button:hover { background: var(--soft); }
    .date-selector .nav { min-width: 44px; font-size: 18px; line-height: 1; }
    .date-selector .viewport { min-height: 0; }
    .date-selector .days { width: 100%; table-layout: fixed; border-spacing: 0; }
    .date-selector .days th { height: 26px; color: var(--muted); font-size: 11px; font-weight: 500; }
    .date-selector .days td { height: 44px; padding: 0; text-align: center; }
    .date-selector .day { position: relative; display: block; width: 100%; height: 44px; margin: auto; padding: 0; border: 0; border-radius: 50%; background: transparent; font-size: 14px; font-variant-numeric: tabular-nums; }
    /* The visible disc is 36px; its full cell remains a 44px touch target. */
    .date-selector .day:not(:disabled):hover { background: radial-gradient(circle var(--day-radius), var(--soft) 99%, transparent 100%); }
    .date-selector .day.endpoint, .date-selector .day.endpoint:hover { background: radial-gradient(circle var(--day-radius), var(--gold) 99%, transparent 100%); color: var(--dark); }
    /* Override the shared disabled-button fill without enlarging the disc. */
    .date-selector .day:disabled { background: radial-gradient(circle var(--day-radius), var(--soft) 99%, transparent 100%) !important; }
    .date-selector .day[aria-current="date"]::after { content: ""; position: absolute; width: 3px; height: 3px; bottom: 7px; left: calc(50% - 1.5px); border-radius: 50%; background: currentColor; }
    .date-selector .choices { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; padding-top: 4px; }
    .date-selector .choice { min-height: 52px; border: 0; border-radius: 12px; background: var(--soft); }
    .date-selector .choice[aria-pressed="true"] { background: var(--gold); color: var(--dark); }
    .date-selector .sr-only { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
    .date-selector .enter { animation: calendar-enter 180ms ease-out; }
    @keyframes calendar-enter { from { opacity: 0; transform: translateX(var(--slide, 0px)); } to { opacity: 1; transform: translateX(0); } }
    @media (prefers-reduced-motion: reduce) { .date-selector .enter { animation: none; } }
    @media (pointer: coarse) { .date-selector .day { width: 100%; height: 44px; } .date-selector .days td { height: 44px; } .date-selector .header button { min-height: 44px; } }
    .date-selector .field-label { display: block; color: var(--muted); font-size: 11px; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; margin-bottom: 8px; }
    .date-selector .date-trigger { width: 100%; min-height: 48px; padding: 13px 14px; border: 1px solid var(--line); border-radius: 15px; background: transparent; text-align: left; }
    .date-selector .date-trigger { transition: border-color 180ms, background-color 180ms; }
    .date-selector .date-trigger:hover, .date-selector .date-trigger[aria-expanded="true"] { border-color: var(--gold); background: var(--soft); }
    .date-selector .date-value { display: flex; align-items: center; justify-content: space-between; gap: 8px; font-size: 18px; font-weight: 600; }
    .date-selector .calendar-icon { width: 19px; height: 19px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
    .date-selector .picker[popover] { position: fixed; inset: auto; z-index: 10; box-shadow: 0 18px 60px #0006; transform-origin: var(--origin, top left); opacity: 0; transform: translateY(var(--offset, -8px)) scale(.96); transition: opacity 180ms ease, transform 280ms cubic-bezier(.2,.8,.2,1), display 280ms allow-discrete, overlay 280ms allow-discrete; max-height: calc(100dvh - 24px); overflow-y: auto; }
    .date-selector .picker:popover-open { opacity: 1; transform: translateY(0) scale(1); }
    @starting-style { .date-selector .picker:popover-open { opacity: 0; transform: translateY(var(--offset, -8px)) scale(.96); } }
    .date-selector .picker::backdrop { background: transparent; }
    .date-selector [hidden] { display: none !important; }
    @media(prefers-reduced-motion: reduce) { .date-selector .picker[popover], .date-selector .date-trigger { transition: none; } }

.date-selector .picker {line-height:1.3}
.date-selector .days {margin:0;font-size:13px}
.date-selector .days th,.date-selector .days td {border:0;text-align:center;padding:0}
.date-selector .date-trigger {display:flex;justify-content:space-between;color:var(--ink);border-radius:var(--radius-small);padding:10px 12px}
.date-selector .date-value {width:100%;font-size:16px}
.date-selector .header button {min-width:44px;min-height:44px}
.date-selector .day {min-width:0;min-height:44px}
.date-selector .choice {min-width:0;padding:8px}
@media(hover:none){.date-selector .day:not(:disabled):hover,.date-selector .header button:hover {background:transparent}.date-selector .day.endpoint:hover{background:radial-gradient(circle var(--day-radius), var(--gold) 99%, transparent 100%)}}


/* P6-T6i: joined hero, readable result times and permanent phone labels. */
#message:empty{display:none}
.journey-time{font-family:'Bricolage Grotesque',Georgia,serif;letter-spacing:-.025em}
.arrival-day{font-size:14px;color:var(--warn);margin-left:2px;vertical-align:super}
.date-chip:disabled{background:var(--ground);color:var(--muted);border-color:transparent}
@media(max-width:767px){
 body{padding-bottom:calc(112px + env(safe-area-inset-bottom))}
 .phone-tabs{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));width:calc(100% - 32px);max-width:360px;gap:4px}
 .phone-tabs a{flex-direction:column;gap:3px;min-height:58px;min-width:44px;padding:4px;font-size:12px}
 .phone-tabs .phone-tab-label,.phone-tabs[data-expanded=true] .phone-tab-label{display:block;margin-left:0;opacity:1;transform:none;transition:none}
 .phone-tab-label>span{display:block;overflow:visible}
}

.result-head:focus-visible{outline-offset:-3px}

/* P6-T6j: Option A is the same dark customer header on every view. */
.brand{--logo-square:light-dark(#0A3D2A,#F2B33D);--logo-lines:light-dark(#F2B33D,#0A3D2A)}
.brand svg{width:40px;height:40px}
.brand-mark,.hero-header .brand-mark{fill:var(--logo-square)}
.brand-lines,.hero-header .brand-lines{stroke:var(--logo-lines)}
.brand-lights{fill:var(--logo-lines)}
.site-header{background:var(--hero);color:var(--white);border:0}
.header-inner{min-height:84px;gap:20px;padding-block:14px}
.site-header .brand,.admin-sidebar .brand{--logo-square:#F2B33D;--logo-lines:#0A3D2A;color:var(--white)}
.desktop-nav{gap:6px;padding:6px;border-radius:999px;background:rgba(255,255,255,.07)}
.site-header .desktop-nav a{padding:10px 20px;min-height:44px;border-radius:999px;color:#DDEBE2;white-space:nowrap}
.site-header .desktop-nav a[aria-current=page]{background:var(--accent);color:var(--dark);box-shadow:none;font-weight:700}
.account-nav{gap:18px}
.account-avatar{text-decoration:none;border-radius:50%}
.site-header .account-link{background:transparent;border:0;border-radius:10px;padding:10px 0;min-height:44px;color:var(--white);font-weight:700;text-decoration:none;white-space:nowrap}
.site-header .signup-link{background:var(--white);color:var(--hero);white-space:nowrap}
.site-header :focus-visible{outline-color:var(--accent)}
.site-header .desktop-nav a[aria-current=page]:focus-visible{outline-color:var(--white)}
.phone-login{display:none}
.site-footer .wrap{align-items:center}
.site-footer .brand{font-size:22px}
/* Admin retains its light shell; its dark sidebar uses Option A colours. */
.admin-page .site-header{background:var(--surface);color:var(--ink);border-bottom:1px solid var(--line)}
.admin-page .site-header .brand{--logo-square:light-dark(#0A3D2A,#F2B33D);--logo-lines:light-dark(#F2B33D,#0A3D2A);color:var(--ink)}
.admin-page .desktop-nav{background:var(--brand-tint)}
.admin-page .desktop-nav a,.admin-page .account-link{color:var(--ink)}
.admin-page .site-header :focus-visible{outline-color:var(--focus)}
@media(min-width:768px) and (max-width:1100px){.header-inner{gap:12px;padding-inline:20px}.site-header .desktop-nav a{padding-inline:10px}.account-nav{gap:12px}.site-header .brand{font-size:22px}.site-header .signup-link{padding-inline:12px}}
@media(min-width:768px) and (max-width:900px){.header-inner{flex-wrap:wrap;justify-content:space-between}.desktop-nav{order:3;justify-content:center;width:100%}}
@media(max-width:767px){.header-inner{min-height:68px;padding-block:12px}.site-header .account-nav>:not(.phone-login){display:none!important}.site-header .phone-login{display:inline-flex}.site-header .brand{font-size:21px}}

/* Depth.dc.html: outlines remain on inputs, seats and selection controls. */
@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--shadow-sm:0 1px 3px rgba(0,0,0,.3),0 3px 8px rgba(0,0,0,.25);--shadow-md:0 2px 4px rgba(0,0,0,.3),0 12px 30px rgba(0,0,0,.35);--shadow-lg:0 3px 8px rgba(0,0,0,.35),0 28px 70px rgba(0,0,0,.55)}}:root[data-theme=dark]{--shadow-sm:0 1px 3px rgba(0,0,0,.3),0 3px 8px rgba(0,0,0,.25);--shadow-md:0 2px 4px rgba(0,0,0,.3),0 12px 30px rgba(0,0,0,.35);--shadow-lg:0 3px 8px rgba(0,0,0,.35),0 28px 70px rgba(0,0,0,.55)}
.card,.panel,article,.coach-strip,.traveller-fields fieldset,.table-scroll{border:0;box-shadow:var(--shadow-md)}
.table-scroll{border-radius:var(--radius);background:var(--surface)}
.home-hero{background:radial-gradient(900px 520px at 78% 18%,#17694A 0%,rgba(23,105,74,0) 70%),linear-gradient(180deg,#0B4430 0%,#0A3D2A 55%,#08321F 100%);isolation:isolate}
.home-hero:before{content:'';position:absolute;inset:0;z-index:-1;pointer-events:none;background:repeating-linear-gradient(115deg,transparent 0 90px,rgba(255,255,255,.025) 91px 93px,transparent 94px 110px)}
.hero-copy h1{text-shadow:0 4px 24px rgba(0,0,0,.25)}
.hero-layout{padding-bottom:0;align-items:start}.hero-copy{display:flow-root}
.search-box{position:relative;z-index:2;margin-bottom:-90px;box-shadow:var(--shadow-lg)}
#board{padding-top:140px}
#board .quick-links{margin:0 0 20px}
#board .quick-links a{color:var(--brand-2)}
.hero-illustration{border-radius:28px;overflow:hidden;box-shadow:var(--shadow-lg);transform:perspective(1400px) rotateY(-4deg)}
.hero-train{filter:drop-shadow(0 8px 5px rgba(6,42,28,.3))}
.board-container{background:linear-gradient(180deg,#172B22 0%,#10201A 100%);box-shadow:var(--shadow-lg),inset 0 1px 0 rgba(255,255,255,.06)}
.board-time{text-shadow:0 0 14px rgba(242,179,61,.35)}
.desktop-nav{box-shadow:inset 0 1px 0 rgba(255,255,255,.08),0 6px 18px rgba(0,0,0,.18)}
.site-header .signup-link{box-shadow:0 6px 16px rgba(0,0,0,.22)}
/* Only submission/action controls receive the raised treatment. */
button:not([type=button]):not([role=tab]):not(.chip):not(.date-chip):not(.seat-button):not(.primary):not(.dark):not(.danger):not(.outline):not(.secondary):not(.danger-outline),.brand-button{background:linear-gradient(180deg,#13805A 0%,#0E6B47 100%);box-shadow:0 2px 0 #0A4A31,0 10px 22px rgba(14,107,71,.25)}
button.primary:not([type=button]),.button.primary{background:linear-gradient(180deg,#F6C152 0%,#F2B33D 100%);box-shadow:0 2px 0 #C98E1C,0 10px 22px rgba(242,179,61,.3)}
button:not([type=button]):active:not(:disabled),.brand-button:active,.button.primary:active{translate:0 1px;scale:1}
button:disabled{box-shadow:none!important;background:var(--brand-tint)!important}
.route-tile{position:relative;overflow:hidden;box-shadow:var(--shadow-md);transition:transform 180ms ease,box-shadow 180ms ease}
.route-tile:before{content:attr(data-destination);position:absolute;left:18px;bottom:42px;font:800 54px 'Bricolage Grotesque',Georgia,serif;opacity:.1;white-space:nowrap;pointer-events:none}
.route-tile>*{position:relative}
@media(hover:hover){.route-tile:hover{transform:translateY(-8px);box-shadow:var(--shadow-lg)}}
.result-card{border:0;box-shadow:var(--shadow-md)}
.result-details{border:0;background:linear-gradient(180deg,var(--ground),var(--surface));box-shadow:inset 0 8px 12px -10px rgba(10,61,42,.18)}
.class-tile{border-color:transparent;box-shadow:var(--shadow-sm);transition:transform 180ms ease,box-shadow 180ms ease,background-color 160ms ease}
.class-tile[aria-pressed=true]{transform:translateY(-4px);box-shadow:0 0 0 4px rgba(242,179,61,.45),0 16px 32px rgba(10,61,42,.3)}
.full-class{border-color:var(--danger)}
.e-ticket{box-shadow:var(--shadow-lg)}
.seat-button{border:2px solid var(--muted);box-shadow:none}
.result-head,[role=tab],.chip,.date-chip,.swap,.date-row>button,.date-selector button,.phone-tabs a{box-shadow:none}
button,.button{transition:translate 160ms ease,background-color 160ms ease,box-shadow 160ms ease}
@media(max-width:767px){.home-hero{padding-bottom:0}.hero-layout{padding-bottom:0}.search-box{margin-bottom:-90px}#board{padding-top:120px}.phone-hero-art{pointer-events:none}.ticket-page .steps li{color:var(--dark-muted)}.ticket-page .steps [aria-current=step]{color:var(--white)}.ticket-page .steps span{border-color:var(--dark-muted)}.ticket-page .steps li+li:before{background:var(--dark-muted)}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.hero-illustration,.route-tile:hover,.class-tile[aria-pressed=true]{transform:none}button:active,.button:active{translate:none;scale:1}.phone-tabs a:active{transform:none}}
@media print{.card,.panel,article,.e-ticket,.table-scroll{box-shadow:none!important}.hero-illustration{transform:none}}

/* Delight Ideas 1–3. Decorative layers never intercept booking controls. */
.route-tile{min-height:280px;justify-content:flex-end;gap:12px;padding-top:150px}
.route-tile:before{content:none}
.route-watermark{position:absolute;left:18px;bottom:36px;font:800 54px 'Bricolage Grotesque',Georgia,serif;opacity:.1;pointer-events:none;white-space:nowrap}
.route-tile .route-landmark{position:absolute;right:-6px;top:8px;width:78%;opacity:.65;pointer-events:none}
.route-green .route-landmark{color:#7FC8A0}.route-amber .route-landmark{color:#A8721A}.route-blue .route-landmark{color:#7FA6CC}.route-rose .route-landmark{color:#C98A7A}
.hero-train.enter-train{animation:hero-train-in 1.6s cubic-bezier(.2,.8,.2,1) both}
.hills-enter{animation:hills-in 1.6s ease-out both}
.parallax-back,.parallax-front{will-change:transform}
.board-flip{display:inline-block;animation:board-flip 600ms ease-out both;transform-origin:50% 50%}
.loading-cards{display:grid;gap:16px;margin-block:16px}
.loading-card{background:var(--surface);padding:20px;border-radius:var(--radius-large);box-shadow:var(--shadow-sm);display:flex;flex-direction:column;gap:12px}
.skeleton{display:block;border-radius:10px;background:linear-gradient(90deg,var(--line) 0%,var(--ground) 50%,var(--line) 100%);background-size:800px 100%;animation:loading-shimmer 1.4s linear infinite}
.skeleton-title{height:22px;width:40%}.skeleton-line{height:14px;width:80%}.skeleton-block{height:70px;width:100%}
.booked-moment{display:grid;grid-template-columns:64px minmax(0,1fr);column-gap:24px;align-items:center;background:var(--hero)!important;color:var(--white)!important;padding:28px!important}
.booked-moment strong{font-size:34px}.booked-moment>span:last-child{grid-column:2;color:var(--dark-muted);font-weight:400}
.booked-tick{width:64px;height:64px;grid-row:span 2;background:var(--accent);color:var(--hero);border-radius:50%;display:grid;place-items:center;box-shadow:0 0 0 10px rgba(242,179,61,.12);animation:booked-pop 500ms 200ms cubic-bezier(.2,.8,.2,1) both}
.just-booked{position:relative;animation:ticket-rise 700ms cubic-bezier(.2,.8,.2,1) both;transform-origin:50% 100%}
.just-booked:after{content:'';position:absolute;inset:0 auto 0 0;width:40%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.35),transparent);pointer-events:none;animation:ticket-shine 800ms 500ms ease-in-out both}
@keyframes hero-train-in{from{transform:translateX(-120%)}to{transform:translateX(0)}}
@keyframes hills-in{from{transform:translateX(30px)}to{transform:translateX(0)}}
@keyframes board-flip{0%{transform:rotateX(90deg);opacity:0}60%{transform:rotateX(-12deg);opacity:1}100%{transform:rotateX(0);opacity:1}}
@keyframes loading-shimmer{from{background-position:-400px 0}to{background-position:400px 0}}
@keyframes ticket-rise{from{transform:translateY(80px) scale(.96);opacity:0}to{transform:translateY(0) scale(1);opacity:1}}
@keyframes ticket-shine{from{transform:translateX(-160%) skewX(-20deg)}to{transform:translateX(360%) skewX(-20deg)}}
.board-controls{display:flex;flex-direction:column;align-items:end;gap:8px}.board-kind{display:flex;gap:0;background:var(--brand-tint);border-radius:12px;padding:4px}.board-kind button{background:transparent;color:var(--ink);padding:8px 12px;min-height:40px}.board-kind button[aria-pressed=true]{background:var(--surface);color:var(--brand)}.board-updated{margin:14px 0 0}.board-note{font-size:13px;margin:10px 0 0}.departure-table{width:100%;table-layout:fixed}.departure-table th:nth-child(1),.departure-table td:nth-child(1){width:12%}.departure-table th:nth-child(2),.departure-table td:nth-child(2){width:23%}.departure-table th:nth-child(3),.departure-table td:nth-child(3){width:17%}.departure-table th:nth-child(4),.departure-table td:nth-child(4){width:15%}.departure-table th:nth-child(5),.departure-table td:nth-child(5){width:23%}.departure-table th:nth-child(6),.departure-table td:nth-child(6){width:10%}.board-train strong{display:block}.board-train small,.board-phone-note{display:none}.board-time.is-late{text-decoration:line-through;text-decoration-thickness:2px}.status-badge{display:inline-block;border-radius:999px;padding:5px 9px;font-size:13px;font-weight:700;white-space:nowrap}.status-late{background:var(--accent);color:var(--dark)}.status-cancelled,.status-train-cancelled{background:var(--danger);color:var(--white)}.status-on{background:var(--green);color:var(--white)}.status-scheduled,.status-departed,.status-arrived{background:var(--dark-muted);color:var(--dark)}.board-status-cell small{display:block;font-size:12px;margin-top:4px}.board-reason{color:var(--dark-muted)}.board-countdown{color:var(--white)}
@keyframes booked-pop{0%{transform:scale(0)}70%{transform:scale(1.15)}100%{transform:scale(1)}}
@media(max-width:767px){.booked-moment{grid-template-columns:44px minmax(0,1fr);gap:12px;padding:20px!important}.booked-moment strong{font-size:28px}.booked-tick{width:44px;height:44px}}
@media(prefers-reduced-motion:reduce){.parallax-back,.parallax-front{transform:none!important;will-change:auto}.just-booked:after{display:none}}
@media(max-width:767px){.departure-table thead{display:none}.departure-table,.departure-table tbody{display:block}.departure-table tr{display:grid;grid-template-columns:64px minmax(0,1fr) auto;grid-template-areas:"time train status" "time note action";column-gap:12px;row-gap:6px;padding:14px 0;border-bottom:1px solid var(--hero-line)}.departure-table td{display:block;width:auto!important;min-width:0;padding:0;font-size:13px;border:0!important}.departure-table td:nth-child(1){grid-area:time;display:flex;flex-direction:column;gap:2px}.departure-table td:nth-child(2){grid-area:train;align-self:start}.departure-table td:nth-child(3),.departure-table td:nth-child(4){display:none}.departure-table td:nth-child(5){grid-area:status;text-align:right;align-self:start}.departure-table td:nth-child(5) small{display:none}.departure-table td:nth-child(6){grid-area:note;align-self:center;color:var(--dark-muted);font-size:13px}.departure-table td:nth-child(7){grid-area:action;text-align:right;align-self:center}.departure-table td:nth-child(7):has(.board-desktop-only){display:none}.board-time{font:700 17px 'JetBrains Mono',ui-monospace,monospace;color:var(--accent);text-decoration:none!important}.board-time.is-late>span:first-child{color:var(--dark-muted);text-decoration:line-through;text-decoration-thickness:2px}.board-phone-expected{font:700 15px 'JetBrains Mono',ui-monospace,monospace;color:var(--accent)}.board-train{overflow:hidden;line-height:1.25}.board-train strong{font-size:16px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.board-train small{display:block;margin-top:2px;color:var(--dark-muted);font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.status-badge{font-size:12px;padding:4px 6px}.board-book{min-height:36px;padding:0 12px;font-size:13px}.board-phone-note{display:block}.board-reason,.board-countdown{font-size:13px}}
@media print{.booked-moment,.just-booked:after{display:none!important}.just-booked{animation:none;transform:none}}
.theme-control{position:relative;flex:none}.theme-button{width:44px;height:44px;padding:0;border:1px solid rgba(255,255,255,.18);background:rgba(255,255,255,.07);color:var(--white);display:grid;place-items:center}.theme-button svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.theme-menu{position:absolute;right:0;top:52px;z-index:20;width:200px;padding:6px;border:1px solid var(--line);border-radius:14px;background:var(--surface);box-shadow:var(--shadow-lg)}.theme-menu button{width:100%;justify-content:space-between;background:transparent;color:var(--ink);font-size:15px;text-align:left}.theme-menu button[aria-checked=true]{background:var(--brand-tint);color:var(--brand)}.theme-menu button[aria-checked=true]::after{content:'✓';font-weight:800}.admin-page .theme-button{background:var(--brand-tint);color:var(--ink);border-color:var(--line)}
@media(max-width:767px){.theme-control{margin-left:auto}.theme-menu{right:-8px}.header-inner{gap:8px}}

/* Keep native select semantics; supporting browsers can theme the popup too. */
@supports (appearance:base-select) {
 select:not([multiple]):not([size]),select:not([multiple]):not([size])::picker(select){appearance:base-select}
 select:not([multiple]):not([size]){padding:10px 12px;border-radius:var(--radius-small);font-weight:600;cursor:pointer;justify-content:space-between;align-items:center;gap:12px}
 select:not([multiple]):not([size]):open{border-color:var(--accent);background:var(--brand-tint)}
 select:not([multiple]):not([size])::picker-icon{color:var(--muted);margin-inline-start:auto;flex-shrink:0}
 select:not([multiple]):not([size])::picker(select){background:var(--surface);color:var(--ink);border:1px solid var(--line);border-radius:16px;padding:6px;box-shadow:0 18px 60px #0006;margin-block-start:8px;max-height:min(320px,calc(100dvh - 24px));max-width:calc(100vw - 24px);overflow-y:auto;font:500 14px Figtree,system-ui,sans-serif}
 select:not([multiple]):not([size]) option{min-height:44px;padding:10px 12px;border-radius:10px;gap:12px;background:transparent;color:var(--ink);cursor:pointer}
 select:not([multiple]):not([size]) option:hover,select:not([multiple]):not([size]) option:focus-visible{background:var(--brand-tint);outline:2px solid var(--ink);outline-offset:-2px}
 select:not([multiple]):not([size]) option:checked{background:var(--accent);color:var(--dark);font-weight:700}
 select:not([multiple]):not([size]) option:disabled{color:var(--muted);cursor:not-allowed}
 select:not([multiple]):not([size]) option::checkmark{color:currentColor;margin-inline-start:auto;order:1}
}

@media(max-width:767px){.ticket-page h1{color:var(--white)}.ticket-page .site-footer{color:var(--dark-muted)}.ticket-page .site-footer a{color:var(--white)}.ticket-page .site-footer .brand{--logo-square:var(--accent);--logo-lines:var(--hero)}}
.warning-badge{color:light-dark(#7A4B00,#F7CF7E)}
.ticket-time{font-family:'Bricolage Grotesque',Georgia,serif}
.seat-key{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:0 0 20px;padding-bottom:16px;border-bottom:1px solid var(--line)}
.seat-key>span{display:flex;flex-direction:column;align-items:center;gap:4px;text-align:center;min-width:0}
.seat-key>span:before{content:'';width:20px;height:20px;flex:none;border:2px solid var(--muted);border-radius:6px 6px 4px 4px;background:var(--surface);margin-bottom:3px}
.seat-key strong{font-size:14px;color:var(--ink);line-height:1.3}
.seat-key small{font-size:12px;line-height:1.3;color:var(--muted)}
.seat-key>span:nth-child(2):before{background:var(--green);border-color:var(--green)}
.seat-key>span:nth-child(3):before{background:var(--brand-tint);border-color:var(--line)}

.seat-journey-summary{padding:20px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);margin:16px 0 24px;color:var(--ink)}
.seat-journey-heading{display:flex;align-items:center;flex-wrap:wrap;gap:10px;padding-bottom:16px;border-bottom:1px solid var(--line)}
.seat-journey-route{display:grid;grid-template-columns:minmax(0,1fr) 32px minmax(0,1fr);gap:12px;align-items:center;padding-top:16px}
.seat-journey-stop{display:flex;flex-direction:column;gap:4px;min-width:0}
.seat-journey-clock{font-size:28px;line-height:1.2}
.seat-journey-stop .lbl{margin:0}
.seat-journey-arrow{color:var(--brand);font-size:24px;text-align:center}
.seat-journey-duration{margin:16px 0 0}
@media(max-width:767px){.seat-journey-summary{padding:16px}.seat-journey-route{gap:8px;grid-template-columns:minmax(0,1fr) 24px minmax(0,1fr)}.seat-journey-clock{font-size:26px}}

.date-row{align-items:center}
.date-row>button{width:44px;height:44px;flex:none;padding:0;border-radius:50%}
#date-strip{background:transparent;border:0;padding:2px;gap:8px;border-radius:0}
.date-chip{min-height:64px;border:1px solid var(--line);border-radius:12px;background:var(--surface);padding:8px 6px;gap:4px}
.date-chip strong{font-size:16px;white-space:nowrap}
.date-chip[aria-pressed=true]{background:var(--accent);border-color:var(--accent);color:var(--dark)}
.date-chip:disabled{background:var(--surface);border-color:var(--line);opacity:.45}
.result-filters{display:grid;gap:12px}
.result-class-segments{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:4px;padding:4px;border:1px solid var(--line);border-radius:14px;background:var(--surface)}
.result-class-segments .chip{padding:8px 6px;min-width:0;border:0;border-radius:10px;background:transparent;color:var(--muted);font-size:14px;box-shadow:none}
.result-class-segments .chip[aria-pressed=true]{background:var(--brand-tint);color:var(--ink)}
.result-options{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.result-options .check{font-size:14px;gap:8px}
.result-options .sort-field{margin:0;font-size:14px;gap:8px}
.result-options select{min-height:44px;padding:8px 10px}
.result-title h2{margin:4px 0 6px;font-size:28px;line-height:1.2}
.result-title p{margin:0;font-size:14px}
@media(max-width:767px){#date-strip{display:flex;overflow-x:auto;scrollbar-width:none}#date-strip::-webkit-scrollbar{display:none}.date-chip{flex:0 0 72px}.date-chip strong{font-size:15px}.result-title h2{font-size:24px}}
