body { margin:0;background:#fff;color:#15171c;font-family:Arial,'PingFang SC','Microsoft YaHei',sans-serif;line-height:1.65; }
* { box-sizing:border-box; }
::selection { background:#f4f640;color:#15171c; }
.page-header,.page-main,.page-footer { max-width:1040px;margin:0 auto; }
.page-header { display:flex;align-items:center;justify-content:space-between;gap:20px;border-bottom:1px solid #ccd0d8;padding:18px 0; }
.page-brand { color:#15171c;font-size:27px;font-weight:900;letter-spacing:-.04em;text-decoration:none; }
.page-header span { color:#565d68;font-size:12px; }
.page-main { padding:20px 0 48px; }
.page-main a,.page-footer a { color:#1639c7;text-underline-offset:4px; }
a:focus-visible,summary:focus-visible { outline:2px solid #244cf4;outline-offset:3px; }
.page-crumbs { display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin:0 0 22px;font-size:13px;color:#565d68; }
.page-crumbs svg { width:12px;height:12px;stroke:currentColor;stroke-width:1.5;fill:none; }
h1 { max-width:28ch;margin:0 0 12px;font-size:clamp(28px,3.2vw,38px);line-height:1.25;font-weight:900;letter-spacing:-.025em; }
.page-lead { margin:0 0 10px;font-size:17px;max-width:72ch; }
.page-updated { margin:0 0 24px;color:#565d68;font-size:13px; }
.page-section { margin-top:40px;padding-top:28px;border-top:1px solid #ccd0d8; }
.page-section h2 { margin:0 0 16px;font-size:25px;line-height:1.35;letter-spacing:-.02em;font-weight:850; }
.page-section p { max-width:72ch;margin:10px 0;font-size:16px; }
.traffic-connections { margin:26px 0; }
.traffic-connections h3 { margin:0 0 12px;font-size:19px;line-height:1.4; }
.traffic-connections table { width:100%;border-collapse:collapse;font-size:14px; }
.traffic-connections th,.traffic-connections td { border-top:1px solid #ccd0d8;padding:12px 14px;text-align:left;vertical-align:top; }
.traffic-connections th:first-child,.traffic-connections td:first-child { width:90px;padding-left:0;white-space:nowrap; }
.traffic-connections th { font-weight:700; }
.traffic-connections p { color:#565d68;font-size:13px; }
.page-history { margin:0;padding:0;list-style:none; }
.page-history li { padding:16px 0;border-top:1px solid #ccd0d8; }
.page-history li:first-child { border-top:0;padding-top:0; }
.page-history time { display:inline-block;font-weight:750;margin-bottom:3px; }
.page-history p { margin:0;font-size:15px; }
.page-sources,.page-related { padding-left:20px;margin:0; }
.page-sources li,.page-related li { padding:7px 0; }
.page-sources span { color:#565d68;font-size:13px;display:block; }
.page-faq details { padding:14px 0;border-top:1px solid #ccd0d8; }
.page-faq summary { cursor:pointer;font-size:16px;font-weight:700;min-height:32px; }
.page-faq details p { margin:10px 0 0;font-size:15px; }
.page-footer { border-top:1px solid #ccd0d8;padding:22px 0 36px;color:#565d68;font-size:13px; }
@media(max-width:1100px) { .page-header,.page-main,.page-footer { margin-left:24px;margin-right:24px; } }
@media(max-width:600px) {
 .page-header,.page-main,.page-footer { margin-left:18px;margin-right:18px; }
 .page-header span { text-align:right;max-width:130px; }
 .page-main { padding-top:16px; }
 .page-crumbs { margin-bottom:18px;font-size:12px; }
 .page-lead { font-size:16px; }
 .page-updated { font-size:12px;margin-bottom:20px; }
 .page-section { margin-top:30px;padding-top:24px; }
 .page-section h2 { font-size:23px; }
 .traffic-connections th,.traffic-connections td { padding:10px 8px; }
 .traffic-connections th:first-child,.traffic-connections td:first-child { width:64px; }
}

.transit-calendar { --cal-ink:#15171c; --cal-blue:#244cf4; --cal-muted:#565d68; --cal-line:#ccd0d8; color:var(--cal-ink); font-family:Arial,'PingFang SC','Microsoft YaHei',sans-serif; line-height:1.6; min-width:0; }
.transit-calendar *, .transit-calendar *::before, .transit-calendar *::after { box-sizing:border-box; }
.transit-calendar ::selection { background:#f4f640; color:#15171c; }
 .calendar-control { display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:8px 12px;border:1px solid var(--cal-line);background:white;color:var(--cal-ink);font:inherit;font-size:14px;cursor:pointer; }
.transit-calendar button:focus-visible, .transit-calendar a:focus-visible { outline:2px solid var(--cal-blue); outline-offset:2px; }
.calendar-strip { position:relative;display:flex;gap:4px;overflow-x:auto;padding:3px 0 7px;scroll-snap-type:x proximity;overscroll-behavior-x:contain;scrollbar-width:thin;scrollbar-color:var(--cal-line) white; }
.calendar-day { flex:0 0 60px;display:grid;justify-items:center;align-content:center;gap:1px;height:48px;padding:4px 6px;border:0;border-bottom:2px solid transparent;border-radius:0;background:white;color:var(--cal-ink);font:inherit;cursor:pointer;scroll-snap-align:center; }
.calendar-day[data-record='false'] { color:#565d68;background:#f3f4f6; }
.calendar-day:hover { background:#edf1ff; }
.calendar-day[aria-pressed='true'] { border-bottom-color:var(--cal-blue); }
.calendar-weekday { font-size:11px;line-height:15px;font-weight:400; }
.calendar-number { font-size:14px;line-height:18px;font-weight:650;font-variant-numeric:tabular-nums; }
.calendar-note { margin:3px 0 0;padding-bottom:12px;border-bottom:1px solid var(--cal-line);color:var(--cal-muted);font-size:11px; }
.calendar-feedback { margin:12px 0; color:#a72b3b; font-size:14px; }
.calendar-feedback:empty { display:none; }
.calendar-view { min-width:0; padding-top:20px; }
.calendar-view > .detail-section.transit-section { margin:0 auto; }
.calendar-view .transit-map { margin:0; }
.calendar-view h2 { font-size:clamp(26px,3.3vw,34px); line-height:1.35; letter-spacing:-.025em; margin:0 0 10px; font-weight:900; }
.calendar-archive > p { margin:0 0 24px; }
.calendar-snapshot-meta { color:var(--cal-muted); font-size:14px; }
.archive-segments { margin:28px 0; padding:0; list-style:none; border-top:1px solid var(--cal-line); }
.archive-segments li { display:grid; grid-template-columns:130px minmax(0,1fr); align-items:center; gap:24px; padding:22px 0; border-bottom:1px solid var(--cal-line); }
.archive-segment-status { font-size:16px; font-weight:800; color:#a72b3b; }
.archive-segments .is-running .archive-segment-status { color:#1639c7; }
.archive-segment-route { position:relative; display:flex; justify-content:space-between; gap:30px; padding:0 0 19px; font-size:16px; font-weight:750; }
.archive-segment-route::after { content:''; position:absolute; left:0; right:0; bottom:0; border-top:4px dashed #a72b3b; }
.is-running .archive-segment-route::after { border-top-style:solid; border-color:var(--cal-blue); }
.calendar-archive .archive-detail { background:#f3f4f6; padding:18px 22px; font-size:15px; }
.calendar-archive .archive-services { margin:24px 0; font-size:16px; }
.calendar-archive .archive-services p { margin:8px 0; }
.calendar-archive .archive-source { border-top:1px solid var(--cal-line); padding-top:18px; font-size:13px; color:var(--cal-muted); }
.calendar-archive a { color:#1639c7; text-underline-offset:4px; }
.calendar-empty { padding:22px 0 34px; }
.calendar-empty h2 { margin:0 0 14px; }
.calendar-empty p { color:var(--cal-muted); margin:0 0 24px; max-width:60ch; font-size:16px; }
.calendar-empty button { background:var(--cal-blue); border-color:var(--cal-blue); color:white; padding-inline:18px; }
.calendar-empty button:hover { background:#1639c7; color:white; }
.calendar-screenreader { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip-path:inset(50%); white-space:nowrap; border:0; }
@media(max-width:600px) {
  .archive-segments li { grid-template-columns:1fr; gap:12px; }
  .archive-segment-route { font-size:14px; gap:20px; }
  .calendar-view { padding-top:24px; }
}
@media(prefers-reduced-motion:no-preference) {
  .calendar-day, .calendar-control { transition:background-color 150ms ease-out,border-color 150ms ease-out; }
}

.page-header .language-switch {display:inline-flex;align-items:center;justify-content:center;min-width:44px;min-height:44px;color:#1639c7;text-underline-offset:4px;font-size:14px;}
.page-footer nav {display:flex;flex-wrap:wrap;gap:4px 18px;margin-top:12px;}
.page-footer nav a {display:inline-flex;align-items:center;min-height:44px;}
.calendar-view .tm-network h2 {font-size:22px;margin:0 0 6px;line-height:1.35;}

.page-header {position:relative;gap:16px;}
.header-nav {display:flex;gap:18px;overflow-x:auto;min-width:0;margin-left:auto;font-size:13px;}
.header-nav a {display:inline-flex;align-items:center;min-height:44px;flex-shrink:0;white-space:nowrap;color:#15171c;text-decoration:none;}
.account-entry {display:inline-flex;align-items:center;min-height:44px;color:#15171c;font-size:13px;}
.header-menu-toggle {display:inline-flex;align-items:center;justify-content:center;width:44px;min-height:44px;border:1px solid #ccd0d8;background:white;cursor:pointer;}
.header-menu-toggle svg {width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.5;}
.header-menu-toggle[hidden],.header-nav[hidden] {display:none;}
@media(max-width:700px) {
 .page-header {gap:12px;}
 .page-brand {margin-right:auto;}
 .header-nav {position:absolute;left:0;right:0;top:100%;z-index:5;background:#fff;border-bottom:1px solid #ccd0d8;padding:12px;flex-direction:column;gap:0;}
}

.traffic-city-nav{display:flex;gap:18px;align-items:center;margin:0 0 14px;flex-wrap:wrap;font-size:14px}.traffic-city-nav a{display:inline-flex;align-items:center;min-height:44px;text-decoration:none;border-bottom:2px solid transparent}.traffic-city-nav a[aria-current="page"]{color:#15171c;font-weight:750;border-bottom-color:#244cf4}.traffic-city-nav a:hover{text-decoration:underline}.calendar-view h3{font-size:19px;line-height:1.4;margin:28px 0 12px}.forecast-source-difference{border-top:1px solid #ccd0d8;margin-top:24px;padding-top:2px}.forecast-source-difference p{max-width:72ch}.lyon-forecast .archive-segments{margin:18px 0 28px}.lyon-forecast .archive-segment-route span{min-width:0;max-width:48%;overflow-wrap:break-word}.lyon-forecast .archive-segment-route span:last-child{text-align:right}.lyon-forecast .traffic-connections td{overflow-wrap:break-word}.lyon-forecast .traffic-connections th:first-child{white-space:normal}@media(max-width:600px){.traffic-city-nav{margin-bottom:10px}.lyon-forecast .archive-segment-route{font-size:13px;gap:18px}.lyon-forecast .traffic-connections table{font-size:13px}.forecast-source-difference p{font-size:15px}}

.paris-station-list{columns:2;column-gap:40px;padding-left:20px;font-size:15px;line-height:1.7}.paris-station-list li{break-inside:avoid;margin-bottom:7px}.paris-forecast .archive-segment-route span{min-width:0;max-width:48%;overflow-wrap:break-word}.paris-forecast .archive-segment-route span:last-child{text-align:right}@media(max-width:600px){.paris-station-list{columns:1}.paris-forecast .archive-segment-route{font-size:13px;gap:20px}}

/* Transport calendars lead with date, line selection and station diagram. */
.transport-priority .page-main>h1 { font-size:20px;line-height:1.35;margin:12px 0 16px; }
.transport-priority .page-main>.transit-calendar { margin-top:0; }
.transport-priority .calendar-view .t1-day-diagrams { margin:0; }
.transport-priority .calendar-view .pm-line-chooser { margin:0 0 10px; }
.transport-priority .calendar-view .paris-schematic { border:0;margin-top:0;padding-top:0; }
.transport-priority .calendar-view .pm-corridor-title { font-size:13px;margin:10px 0; }
.transport-priority .transport-map-caption { display:block;margin:8px 0 4px;padding:0;border:0;background:none;color:#565d68;font-size:13px;line-height:1.6; }
.transport-priority .transport-map-caption>div { display:inline; }
.transport-priority .transport-map-caption strong,.transport-priority .transport-map-caption h2,.transport-priority .transport-map-caption p { font-size:13px;font-weight:400;line-height:1.6;color:inherit;margin:0; }
.transport-priority .transport-map-caption span { display:inline;margin-left:8px;font-size:13px;color:inherit; }
.transport-priority .transport-map-caption .tm-line-id { display:none; }
.transport-priority .calendar-view .pm-legend,.transport-priority .calendar-view .n7-legend,.transport-priority .calendar-view .tm-legend { font-size:12px;margin:5px 0;padding-top:3px;gap:12px; }
.transport-priority .calendar-view .t1-scroll-hint { font-size:12px;margin:5px 0;color:#565d68; }
.transport-priority .calendar-view .tm-station-info { margin:10px 0;padding:0;border:0;background:none;font-size:13px; }
.transport-priority .calendar-view .tm-station-title { font-size:13px;font-weight:600;margin:0 0 4px; }
.transport-priority .calendar-view .tm-station-detail,.transport-priority .calendar-view .tm-map-note,.transport-priority .calendar-view .pm-map-sources { font-size:12px;line-height:1.6;margin:4px 0; }
.transport-priority .transport-record-caption { font-size:13px;line-height:1.6;color:#565d68;margin:12px 0; }
.transport-priority .transport-record-caption h2,.transport-priority .transport-record-caption h3 { font-size:13px;font-weight:600;line-height:1.6;margin:0 0 5px; }
.transport-priority .transport-record-caption p { font-size:13px;line-height:1.6;margin:4px 0; }
.transport-priority .transport-page-context { margin:18px 0;font-size:13px;color:#565d68; }
.transport-priority .transport-page-context>summary { min-height:44px;cursor:pointer; }
.transport-priority .transport-page-context .page-lead,.transport-priority .transport-page-context .page-updated { font-size:13px;line-height:1.6;margin:8px 0; }
.transport-priority .transport-page-context .traffic-city-nav { font-size:13px;margin:10px 0; }
.transport-priority .calendar-note,.transport-priority .transport-calendar-note { font-size:12px;color:#565d68;margin:10px 0;padding:0;border:0; }
.transport-priority .transport-screenreader { position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0; }
.transport-priority .toulouse-nov7-map .tm-track::before { left:6%;right:6%;border-top:4px solid #7b8390; }
.transport-priority .toulouse-nov7-map .tm-track::after { display:none; }
.transport-priority .toulouse-nov7-map .tm-label { width:142px; }
.transport-priority .toulouse-nov7-map .tm-state { font-size:12px; }
.transport-priority .toulouse-nov7-map .tm-running .tm-state { color:#565d68; }
.transport-priority .nov7-map-sources { font-size:13px;color:#565d68; }
@media(max-width:600px) {
 .transport-priority .page-main>h1 { font-size:18px; }
 .transport-priority .calendar-view .pm-line-chooser { gap:6px; }
 .transport-priority .calendar-view .t1-period-switch { margin-bottom:4px; }
 .transport-priority .transport-map-caption span { margin-left:0;display:block; }
}
