@import url('https://fonts.googleapis.com/css2?family=Barlow:wght@400;500;600;700&family=IBM+Plex+Mono:wght@400;500;600&display=swap');
:root{--paper:#f5f5f1;--ink:#202c3a;--muted:#6b737c;--line:#dce0e2;--yellow:#f0d64f;--navy:#202e42;--mono:'IBM Plex Mono',monospace}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font-family:Barlow,Arial,sans-serif;font-size:15px}a{color:inherit}button{font:inherit;cursor:pointer}a:focus-visible,button:focus-visible{outline:3px solid #9d7d05;outline-offset:4px}[hidden]{display:none!important}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.topbar{height:76px;max-width:1120px;margin:auto;border-bottom:1px solid #cfd4d7;display:flex;justify-content:space-between;align-items:center}.brand{display:flex;align-items:center;gap:18px;text-decoration:none}.brand-mark{background:var(--yellow);padding:9px 14px;font-weight:700;font-size:21px;letter-spacing:-.5px}.brand-label{font-size:10px;letter-spacing:1.7px;font-weight:600}.source-link{font-size:12px;color:var(--muted);text-decoration:none}.source-link:hover{text-decoration:underline}main,footer{max-width:1120px;margin:auto}.hero{padding:35px 0 28px}.route-label{font-size:10px;font-weight:600;letter-spacing:1.25px;margin:0 0 12px;color:#606a75}.route-label span{padding:0 9px;color:#939aa2}h1{font-size:44px;font-weight:600;letter-spacing:-1.2px;line-height:1.1;margin:0 0 12px}.title-dot{color:#c49f06}.intro{color:var(--muted);font-size:15px;margin:0}.filters{display:flex;align-items:end;justify-content:space-between;gap:20px;border-top:1px solid #cfd4d7;border-bottom:1px solid #cfd4d7;padding:18px 0;flex-wrap:wrap}fieldset{border:0;padding:0;margin:0;min-width:0}legend{font-size:10px;text-transform:uppercase;letter-spacing:1.1px;color:var(--muted);margin-bottom:9px}.date-buttons,.direction-buttons{display:flex;gap:3px}.filters button{background:transparent;border:1px solid transparent;color:#56616d;padding:9px 12px;min-height:38px;font-size:13px;border-radius:3px;white-space:nowrap}.filters button:hover{background:#e7e9e4}.date-buttons button[aria-pressed=true]{background:var(--navy);color:white}.date-buttons small{font-size:inherit;margin-right:3px}.direction-buttons{border:1px solid var(--line);padding:2px;background:white;border-radius:4px}.direction-buttons button{font-size:12px;padding:7px 10px;min-height:32px}.direction-buttons button[aria-pressed=true]{background:#e9ecef;color:var(--ink);font-weight:600}.result-meta{display:flex;justify-content:space-between;align-items:center;gap:12px;margin:21px 0 16px;font-size:12px;color:var(--muted)}.result-meta p{margin:0;font-weight:500;color:var(--ink)}.snapshot{font-size:11px}.day-group{margin-bottom:22px}.day-group h3{margin:0;background:var(--navy);color:#fff;padding:11px 18px;font-size:14px;font-weight:400;letter-spacing:.2px;display:flex;align-items:baseline;gap:6px;border-left:4px solid var(--yellow)}h3>span{font-weight:600}h3 small{color:#b3becb;font-size:11px;margin-left:auto}.table-wrap{background:white;border:1px solid var(--line);border-top:0}table{width:100%;border-collapse:collapse;table-layout:fixed;text-align:left}th{font-size:9px;text-transform:uppercase;letter-spacing:1.1px;color:#828992;font-weight:500;padding:10px 20px 8px;border-bottom:1px solid #e9edef}th:first-child{width:13%}th:nth-child(2){width:28%}th:nth-child(3),th:nth-child(4){width:14%}th:nth-child(5){width:12%}th:nth-child(6){width:19%}td{padding:13px 20px;border-bottom:1px solid #e9edef;height:72px}tbody tr:last-child td{border-bottom:0}tbody tr:hover{background:#fafbf8}.train strong{font-family:var(--mono);font-size:17px;font-weight:500;display:block}.train>span{display:block;font-size:9px;letter-spacing:.4px;color:#858b93;margin-top:5px}.route-cell>span{font-size:16px;font-weight:500}.route-cell i{font-style:normal;padding:0 12px;color:#a2aab3}.route-cell small{display:block;font-size:11px;color:#8a929b;margin-top:5px}.departure time,.arrival time{font-family:var(--mono);font-size:25px;letter-spacing:-1px;font-weight:500;white-space:nowrap}.arrival time{color:#78818c;font-size:22px;font-weight:400}.service-label{font-size:12px;color:#53685f;white-space:nowrap}.service-label span{color:#558069;font-size:7px;margin-right:6px}.booking-button{display:inline-flex;align-items:center;gap:7px;background:var(--navy);color:#fff;text-decoration:none;font-size:11px;font-weight:600;line-height:1;padding:11px 12px;border-radius:3px;white-space:nowrap}.booking-button:hover{background:#314966}.booking-button span{font-size:13px}.empty-card{display:flex;gap:12px;align-items:center;border:1px solid var(--line);border-top:0;padding:16px 20px;background:#eceee9;color:var(--muted)}.empty-card>span{font-size:18px}.empty-card strong{font-size:12px;font-weight:500;color:#4c5762}.empty-card p{margin:4px 0 0;font-size:12px;line-height:1.5}.data-links{display:flex;gap:24px;margin-top:16px}.data-links a{font-size:12px;text-decoration:none;color:#596571}.data-links a:hover{text-decoration:underline}.data-links span{margin-left:6px}footer{display:flex;justify-content:space-between;gap:12px;color:#939ba2;font-size:10px;padding:26px 0 24px;margin-top:24px;border-top:1px solid var(--line)}@media(max-width:1184px){.topbar,main,footer{margin-left:32px;margin-right:32px}}@media(max-width:760px){.brand-label{display:none}.filters{align-items:start;gap:15px}.departure time{font-size:22px}.arrival time{font-size:19px}td,th{padding-left:14px;padding-right:14px}.route-cell i{padding:0 5px}.route-cell>span{font-size:14px}.service-column{display:none}th:first-child{width:17%}th:nth-child(2){width:34%}th:nth-child(3),th:nth-child(4){width:18%}th:nth-child(6){width:13%}.booking-button{font-size:0;padding:10px}.booking-button span{font-size:16px}.snapshot{font-size:10px}}@media(max-width:520px){.topbar,main,footer{margin-left:16px;margin-right:16px}.topbar{height:65px}.brand-mark{font-size:18px;padding:8px 12px}.source-link{font-size:11px}.hero{padding:28px 0 24px}h1{font-size:36px}.route-label{font-size:8px;letter-spacing:.6px}.route-label span{padding:0 3px}.intro{font-size:13px}.filters{padding:16px 0;gap:16px}.filters button{font-size:12px;padding:8px 9px}.date-buttons{gap:0}.date-buttons small{display:block;font-size:10px;margin:0 0 3px}.date-buttons button:first-child{align-self:stretch;padding:10px}.direction-buttons button{font-size:11px;padding:7px 11px}.result-meta{align-items:start;gap:8px;flex-direction:column;margin:17px 0 12px}.day-group h3{padding:10px 12px;font-size:13px}.day-group{margin-bottom:18px}td,th{padding-left:10px;padding-right:7px}th{font-size:8px;letter-spacing:.6px}td{height:70px}.train strong{font-size:14px}.train>span{font-size:8px}.route-cell>span{font-size:12px}.route-cell i{padding:0 2px}.route-cell small{font-size:9px}.departure time{font-size:19px}.arrival time{font-size:17px}.data-links{gap:16px;flex-wrap:wrap}.data-links a{font-size:11px}footer{flex-direction:column;gap:6px}.empty-card{padding:13px 12px}.empty-card p{font-size:11px}}
/* Five-column departure board. */
th:first-child{width:13%}th:nth-child(2){width:36%}th:nth-child(3),th:nth-child(4){width:16%}th:nth-child(5){width:19%}
@media(max-width:760px){th:first-child{width:17%}th:nth-child(2){width:34%}th:nth-child(3),th:nth-child(4){width:18%}th:nth-child(5){width:13%}}
.line-list{border-top:1px solid var(--line);margin-top:8px}.line-card{display:grid;grid-template-columns:minmax(260px,1fr) 245px 170px 24px;gap:20px;align-items:center;padding:27px 24px;background:white;border:1px solid var(--line);border-top:0;text-decoration:none;transition:background .15s}.line-card:hover{background:#fafbf5}.line-name{font-size:24px;font-weight:600;letter-spacing:-.5px}.line-name>span{padding:0 12px;color:#8d96a0;font-weight:400}.route-status{display:inline-flex;align-items:center;gap:8px;font-size:12px;font-weight:500}.route-status:before{content:'';width:7px;height:7px;flex-shrink:0;border-radius:50%;background:currentColor}.route-status.active{color:#287448}.route-status.announced{color:#977009}.line-frequency{font-family:var(--mono);font-size:12px;color:var(--muted)}.line-arrow{font-size:22px;color:#737e8a}.frequency-note{font-size:12px;color:var(--muted);line-height:1.6;margin:18px 0 40px}.back-link{display:inline-block;font-size:12px;color:var(--muted);text-decoration:none;margin-bottom:24px}.back-link:hover{text-decoration:underline}.announcement{padding:26px;border:1px solid var(--line);background:white;margin-bottom:50px}.announcement h2{font-size:20px;margin:0 0 10px}.announcement p{color:var(--muted);margin:0;line-height:1.6}@media(max-width:900px){.line-card{grid-template-columns:1fr 220px 24px}.line-frequency{grid-column:1}.line-arrow{grid-column:3;grid-row:1 / 3;align-self:center}.line-card .route-status{grid-column:2;grid-row:1 / 3}}@media(max-width:580px){.line-card{grid-template-columns:1fr 24px;gap:13px;padding:22px 18px}.line-name{font-size:22px}.line-card .route-status{grid-column:1;grid-row:2}.line-frequency{grid-row:3}.line-arrow{grid-column:2;grid-row:1 / 4}.frequency-note{font-size:11px}}
/* Readable type across the line directory and departure tables. */
body{font-size:16px}.brand-label,.route-label,legend{font-size:12px}.intro{font-size:17px;line-height:1.5}.line-name{font-size:27px}.route-status{font-size:15px}.line-frequency,.frequency-note,.back-link{font-size:14px}.line-card{padding-top:30px;padding-bottom:30px}.filters button{font-size:15px}.date-buttons{flex-wrap:wrap}.result-meta{font-size:14px}.snapshot{font-size:13px}.day-group h3{font-size:17px}h3 small{font-size:13px}th{font-size:11px}.train strong{font-size:20px}.train>span{font-size:11px}.route-cell>span{font-size:18px}.departure time{font-size:28px}.arrival time{font-size:25px}.booking-button{font-size:14px}.empty-card strong,.empty-card p{font-size:14px}footer{font-size:12px}
@media(max-width:760px){.line-name{font-size:25px}.route-cell>span{font-size:16px}.departure time{font-size:24px}.arrival time{font-size:22px}.booking-button{font-size:0}.booking-button span{font-size:18px}}
@media(max-width:520px){.intro{font-size:16px}.route-label,legend{font-size:11px}.line-name{font-size:24px}.route-status{font-size:14px}.line-frequency,.frequency-note{font-size:13px}.filters button{font-size:14px}.date-buttons small{font-size:12px}.day-group h3{font-size:16px}th{font-size:10px;letter-spacing:.3px}.train strong{font-size:17px}.train>span{font-size:10px}.route-cell>span{font-size:14px}.departure time{font-size:21px}.arrival time{font-size:19px}.snapshot{font-size:12px}.empty-card p{font-size:13px}}
@media(min-width:901px){.line-card{grid-template-columns:minmax(260px,1fr) 225px 220px 24px}}
.schedule-button{display:inline-flex;align-items:center;justify-content:center;gap:10px;padding:13px 15px;border-radius:3px;background:var(--navy);color:white;font-size:14px;font-weight:600;white-space:nowrap}.line-card:hover .schedule-button{background:#314966}@media(min-width:901px){.line-card{grid-template-columns:minmax(240px,1fr) 205px 210px 165px;gap:16px}}@media(max-width:900px){.line-card{grid-template-columns:1fr 220px 165px}.schedule-button{grid-column:3;grid-row:1 / 3}}@media(max-width:580px){.line-card{grid-template-columns:1fr;gap:14px}.schedule-button{grid-column:1;grid-row:4;justify-self:start}}
.last-updated{font-size:14px;color:var(--muted)}footer{flex-wrap:wrap}
@media(max-width:760px){.booking-button{font-size:12px;padding:10px 8px}th:first-child{width:16%}th:nth-child(2){width:29%}th:nth-child(3),th:nth-child(4){width:17%}th:nth-child(5){width:21%}}
/* Comfortable reading sizes, including supporting information. */
body{font-size:18px;line-height:1.5}h1{font-size:52px}.intro{font-size:18px;line-height:1.6}.brand-label,.route-label,legend{font-size:14px}.line-name{font-size:28px;line-height:1.3}.route-status{font-size:17px;line-height:1.5}.line-frequency{font-size:16px;line-height:1.5}.schedule-button,.booking-button{font-size:16px;line-height:1.4}.frequency-note,.back-link,.result-meta,.snapshot,.last-updated{font-size:16px;line-height:1.6}.filters button{font-size:16px;min-height:44px}.day-group h3{font-size:20px}h3 small{font-size:15px}th{font-size:14px;letter-spacing:.5px}.train strong{font-size:22px}.train>span{font-size:13px}.route-cell>span{font-size:20px}.departure time{font-size:30px}.arrival time{font-size:28px}.empty-card strong,.empty-card p{font-size:16px}td{height:82px}footer{font-size:14px;line-height:1.6}
@media(min-width:1101px){.line-card{grid-template-columns:minmax(240px,1fr) 220px 235px 185px;gap:16px}}
@media(min-width:761px) and (max-width:1100px){.line-card{grid-template-columns:minmax(0,1fr) 220px 185px;gap:16px}.line-frequency{grid-column:1;grid-row:2}.line-card .route-status{grid-column:2;grid-row:1 / 3}.schedule-button{grid-column:3;grid-row:1 / 3}}
@media(max-width:760px){h1{font-size:42px}.line-card{grid-template-columns:minmax(0,1fr) 185px;gap:16px}.line-name{font-size:26px}.line-card .route-status{grid-column:1;grid-row:2}.line-frequency{grid-column:1;grid-row:3}.schedule-button{grid-column:2;grid-row:1 / 4}.table-wrap{overflow-x:auto}table{min-width:680px}th:first-child{width:15%}th:nth-child(2){width:30%}th:nth-child(3),th:nth-child(4){width:17%}th:nth-child(5){width:21%}.booking-button{font-size:16px;padding:10px 12px}.route-cell>span{font-size:18px}.departure time{font-size:26px}.arrival time{font-size:24px}.train strong{font-size:20px}.train>span{font-size:13px}.day-group h3{font-size:18px}.route-label,legend{font-size:13px}.intro{font-size:18px}.filters button{font-size:16px}.date-buttons small{font-size:14px}.snapshot,.empty-card p{font-size:16px}th{font-size:14px}.route-status{font-size:17px}.line-frequency,.frequency-note{font-size:16px}}
@media(max-width:580px){.line-card{grid-template-columns:minmax(0,1fr)}.schedule-button{grid-column:1;grid-row:4;justify-self:start}}
.legal-copy{max-width:820px;padding-bottom:36px}.legal-copy section{margin-bottom:30px}.legal-copy h2{font-size:26px;line-height:1.3;margin:0 0 12px}.legal-copy p{margin:0 0 14px;line-height:1.7}.legal-copy a{text-underline-offset:3px}.legal-draft{padding:14px 18px;border-left:3px solid var(--yellow);background:#eeeee7;color:var(--muted)}
