[hidden] { display: none !important; }
::selection { background: #c8e6de; color: #172033; }
:focus-visible { outline: 3px solid #0f766e; outline-offset: 3px; }

.visually-hidden { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; }
.portal-main--routes { padding-top: 22px; padding-bottom: 80px; }
.portal-brand { min-width: 0; max-width: 100%; }
.portal-brand__name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.portal-footer { border-top: 1px solid var(--portal-line); background: #fff; }
.portal-footer__inner { width: min(100% - 48px, 1280px); min-height: 80px; margin: 0 auto; display: flex; align-items: center; gap: 32px; color: var(--portal-muted); font-size: .9rem; }
.portal-footer__inner span { margin-right: auto; font-weight: 700; color: var(--portal-ink); }
.portal-footer__text { flex: 1 1 100%; margin: 0; }
.portal-footer a, .breadcrumbs a, .text-link { color: var(--portal-accent-dark); text-decoration: none; text-underline-offset: 4px; }
.portal-footer a:hover, .breadcrumbs a:hover, .text-link:hover { text-decoration: underline; }

.portal-intro { padding: 10px 0 72px; }
.home-directory { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(280px, .9fr); gap: 72px; padding: 44px 0; border-top: 1px solid var(--portal-line); border-bottom: 1px solid var(--portal-line); }
.home-directory h2, .home-journal h2 { margin: 0; font-size: 1.8rem; line-height: 1.25; }
.home-directory p, .home-journal p { color: var(--portal-muted); line-height: 1.75; margin: 14px 0 0; }
.home-directory__countries { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 18px; align-content: center; }
.home-directory__countries a { padding: 14px 4px; border-bottom: 1px solid var(--portal-line); color: var(--portal-ink); text-decoration: none; font-weight: 600; }
.home-directory__countries a:hover { color: var(--portal-accent); }
.home-journal { display: flex; justify-content: space-between; align-items: center; gap: 32px; padding: 56px 0 0; }
.home-journal .text-link { white-space: nowrap; font-weight: 600; }

.breadcrumbs { display: flex; flex-wrap: wrap; align-items: center; gap: 9px; color: var(--portal-muted); font-size: .82rem; line-height: 1.5; }
.breadcrumbs span:last-child { max-width: 45ch; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.routes-heading { padding: 22px 0 20px; }
.routes-heading h1 { margin: 0; font-size: 1.95rem; line-height: 1.25; }
.routes-heading p { margin: 9px 0 0; color: var(--portal-muted); font-size: .95rem; line-height: 1.55; }
.routes-heading--country { display: flex; align-items: end; justify-content: space-between; gap: 24px; }
.route-total { white-space: nowrap; color: var(--portal-muted); font-size: .88rem; }
.route-total strong { color: var(--portal-ink); font-size: 1.3rem; font-variant-numeric: tabular-nums; }
.section-heading { display: flex; align-items: center; justify-content: space-between; gap: 18px; margin-bottom: 10px; }
.section-heading h2, .source-note h2 { margin: 0; font-size: 1.05rem; }
.country-search input, .route-filters input, .route-filters select { min-height: 40px; padding: 8px 11px; border: 1px solid #cbd4dd; border-radius: 6px; background: #fff; color: var(--portal-ink); font: inherit; }
.country-search input { width: 240px; }

.country-table-wrap, .route-results { width: 100%; overflow: hidden; border: 1px solid var(--portal-line); border-radius: 6px; background: #fff; }
.country-table, .route-table { width: 100%; border-collapse: collapse; table-layout: fixed; }
.country-table thead, .route-table thead { background: #edf2f4; color: #425267; font-size: .78rem; }
.country-table th, .country-table td, .route-table th, .route-table td { text-align: left; vertical-align: middle; border-bottom: 1px solid var(--portal-line); }
.country-table thead th, .route-table thead th { padding: 11px 14px; font-weight: 600; }
.country-table tbody tr:last-child > *, .route-table tbody tr:last-child > * { border-bottom: 0; }
.country-table tbody tr:nth-child(even), .route-table tbody tr:nth-child(even) { background: #fafbfc; }
.country-table tbody tr:hover, .route-table tbody tr:hover { background: #f0f7f5; }
.country-table th, .country-table td { padding: 13px 14px; }
.country-table th:first-child { width: 35%; }
.country-table th:nth-child(2) { width: 33%; }
.country-table th:nth-child(3) { width: 18%; }
.country-table th:last-child { width: 14%; }
.country-code { display: inline-block; width: 34px; margin-right: 12px; color: var(--portal-accent-dark); font-size: .75rem; font-weight: 800; }
.country-table tbody th a { color: var(--portal-ink); text-decoration: none; }
.country-table tbody th a:hover, .route-table__name a:hover { color: var(--portal-accent-dark); text-decoration: underline; text-underline-offset: 3px; }
.country-table__english, .country-table__count { color: var(--portal-muted); font-size: .88rem; }
.country-table__action a, .route-table__action a { color: var(--portal-accent-dark); font-size: .88rem; font-weight: 600; text-decoration: none; white-space: nowrap; }
.country-table__action a:hover, .route-table__action a:hover { text-decoration: underline; text-underline-offset: 3px; }
.empty-filter { padding: 14px 2px; color: var(--portal-muted); font-size: .9rem; }
.source-note { margin-top: 32px; padding: 22px 0 0; border-top: 1px solid var(--portal-line); }
.source-note p { max-width: 90ch; margin: 9px 0 0; color: var(--portal-muted); font-size: .88rem; line-height: 1.7; }
.source-note a { color: var(--portal-accent-dark); }
.source-note__date { font-variant-numeric: tabular-nums; }

.route-filters { display: grid; grid-template-columns: minmax(200px, 2fr) minmax(130px, 1fr) minmax(130px, 1fr) auto auto; align-items: end; gap: 10px; margin-bottom: 14px; }
.route-filters label { display: flex; flex-direction: column; min-width: 0; gap: 4px; color: var(--portal-muted); font-size: .78rem; }
.route-filters input, .route-filters select { width: 100%; font-size: .9rem; }
.route-filters button { min-height: 40px; padding: 0 16px; border: 0; border-radius: 6px; background: var(--portal-accent); color: #fff; font: inherit; font-size: .88rem; cursor: pointer; }
.route-filters button:hover { background: var(--portal-accent-dark); }
.filter-reset { min-height: 40px; padding: 10px 4px; color: var(--portal-accent-dark); font-size: .88rem; text-decoration: none; white-space: nowrap; }
.filter-reset:hover { text-decoration: underline; }
.route-table th:first-child { width: 33%; }
.route-table th:nth-child(2) { width: 12%; }
.route-table th:nth-child(3) { width: 16%; }
.route-table th:nth-child(4) { width: 16%; }
.route-table th:nth-child(5) { width: 13%; }
.route-table th:last-child { width: 10%; }
.route-table tbody th, .route-table tbody td { padding: 12px 14px; color: #344358; font-size: .88rem; line-height: 1.4; overflow-wrap: anywhere; }
.route-table__name a { display: block; color: var(--portal-ink); font-size: .94rem; font-weight: 700; line-height: 1.4; text-decoration: none; }
.route-table__name small { display: block; margin-top: 4px; color: var(--portal-muted); font-size: .78rem; font-weight: 400; }
.route-table td:nth-child(4), .route-table td:nth-child(5) { font-variant-numeric: tabular-nums; }
.route-table__action { white-space: nowrap; }
.price-state { color: #765522; }
.price-state--reviewed { color: var(--portal-accent-dark); }
.route-table__empty { padding: 30px 14px !important; text-align: center !important; color: var(--portal-muted) !important; }
.route-table__empty a { margin-left: 12px; color: var(--portal-accent-dark); }
.route-pagination { display: flex; align-items: center; justify-content: center; gap: 24px; padding: 20px 0; color: var(--portal-muted); font-size: .88rem; }
.route-pagination a { color: var(--portal-accent-dark); }
.route-list-note { margin: 18px 0 0; color: var(--portal-muted); font-size: .84rem; line-height: 1.6; }

.route-detail-heading { padding: 22px 0 0; }
.route-detail-heading__top { display: flex; align-items: baseline; flex-wrap: wrap; gap: 8px 20px; }
.route-detail-heading h1 { margin: 0; font-size: 1.95rem; line-height: 1.25; overflow-wrap: anywhere; }
.route-detail-heading__top span { color: var(--portal-muted); font-size: .9rem; }
.route-detail-heading__summary { max-width: 80ch; margin: 10px 0 0; color: var(--portal-muted); font-size: .95rem; line-height: 1.6; }
.route-facts { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 0; margin: 22px 0 0; border-top: 1px solid var(--portal-line); border-bottom: 1px solid var(--portal-line); }
.route-facts div { min-width: 0; padding: 12px 16px 12px 0; }
.route-facts dt { color: var(--portal-muted); font-size: .76rem; }
.route-facts dd { margin: 5px 0 0; color: var(--portal-ink); font-size: .9rem; font-weight: 600; line-height: 1.35; overflow-wrap: anywhere; font-variant-numeric: tabular-nums; }
.detail-nav { display: flex; gap: 26px; overflow-x: auto; border-bottom: 1px solid var(--portal-line); }
.detail-nav a { padding: 12px 0; color: var(--portal-ink); font-size: .85rem; font-weight: 600; white-space: nowrap; text-decoration: none; }
.detail-nav a:hover { color: var(--portal-accent-dark); }
.detail-layout { width: 100%; }
.detail-content { min-width: 0; }
.detail-section { display: grid; grid-template-columns: 190px minmax(0, 1fr); column-gap: 32px; padding: 28px 0; border-bottom: 1px solid var(--portal-line); scroll-margin-top: 20px; }
.detail-section > h2 { grid-column: 1; margin: 0; color: var(--portal-ink); font-size: 1.05rem; }
.detail-section > :not(h2) { grid-column: 2; }
.detail-section h3 { margin: 18px 0 9px; font-size: .94rem; }
.detail-section p { max-width: 80ch; margin: 0 0 10px; line-height: 1.65; overflow-wrap: anywhere; font-size: .9rem; }
.detail-section .detail-muted { color: var(--portal-muted); }
.multiline { white-space: pre-line; overflow-wrap: anywhere; }
.source-field-list { width: 100%; margin: 8px 0 0; border-top: 1px solid var(--portal-line); }
.source-field-list > div { display: grid; grid-template-columns: minmax(170px, 25%) minmax(0, 1fr); gap: 14px; padding: 11px 0; border-bottom: 1px solid var(--portal-line); }
.source-field-list dt { color: #425267; font-size: .82rem; font-weight: 600; }
.source-field-list dt code { display: block; margin-top: 3px; color: #758295; font-family: inherit; font-size: .72rem; font-weight: 400; }
.source-field-list dd { min-width: 0; margin: 0; color: #344358; font-size: .9rem; line-height: 1.65; }
.source-field-list--admin { border-top: 0; }
.source-field-list--admin > div { grid-template-columns: minmax(0, 1fr); gap: 4px; padding: 7px 0; }
.source-field-list--admin dt { font-size: .76rem; }
.source-field-list--admin dt code { display: inline; margin-left: 5px; }
.source-field-list--admin dd { color: #4b5563; font-size: .8rem; }
.partition-summary { padding: 0 0 12px; }
.partition-summary h3 { margin-top: 0; }
.detail-callout { padding: 12px 16px; margin: 8px 0 14px; border-radius: 4px; background: #edf4f1; color: #254239; }
.detail-callout p { margin: 5px 0 0; }
.price-table-wrap { width: 100%; overflow-x: auto; margin-bottom: 10px; border: 1px solid var(--portal-line); border-radius: 4px; background: #fff; }
.price-table { width: 100%; min-width: 450px; border-collapse: collapse; font-variant-numeric: tabular-nums; }
.price-table th, .price-table td { padding: 10px 13px; text-align: left; border-bottom: 1px solid var(--portal-line); font-size: .88rem; }
.price-table th { background: #edf2f4; font-size: .78rem; }
.price-table tr:last-child td { border-bottom: 0; }
.plain-list { list-style: none; margin: 0; padding: 0; }
.plain-list li { display: flex; gap: 18px; padding: 8px 0; border-bottom: 1px solid var(--portal-line); font-size: .88rem; line-height: 1.5; }
.plain-list li span { color: var(--portal-muted); }
.goods-inline { color: #344358; }
.related-routes { padding: 28px 0 0; }
.related-routes h2 { margin: 0 0 8px; font-size: 1.05rem; }
.related-routes a { display: flex; justify-content: space-between; gap: 15px; padding: 11px 0; border-bottom: 1px solid var(--portal-line); color: var(--portal-ink); font-size: .9rem; text-decoration: none; }
.related-routes a:hover { color: var(--portal-accent-dark); }
.source-note--detail { margin-top: 32px; }
.source-note--detail .text-link { display: inline-block; margin-top: 12px; font-size: .88rem; font-weight: 600; }

@media (max-width: 980px) {
    .route-filters { grid-template-columns: minmax(200px, 2fr) repeat(2, minmax(130px, 1fr)) auto; }
    .filter-reset { grid-column: 1 / -1; padding: 0; min-height: 0; }
    .route-table th:nth-child(2), .route-table td:nth-child(2) { display: none; }
    .route-table th:first-child { width: 37%; }
    .route-table th:nth-child(3) { width: 20%; }
    .route-table th:nth-child(4) { width: 19%; }
    .route-table th:nth-child(5) { width: 14%; }
    .route-table th:last-child { width: 10%; }
}
@media (max-width: 760px) {
    .portal-footer__inner { width: min(100% - 32px, 1280px); flex-wrap: wrap; gap: 14px; padding: 20px 0; }
    .portal-main--routes { padding-top: 16px; }
    .portal-intro { padding: 0 0 56px; }
    .home-directory { grid-template-columns: 1fr; gap: 20px; padding: 30px 0; }
    .home-directory__countries { gap: 0 15px; }
    .home-journal { align-items: flex-start; flex-direction: column; gap: 12px; }
    .routes-heading { padding: 18px 0 16px; }
    .routes-heading h1 { font-size: 1.55rem; }
    .section-heading { align-items: stretch; flex-direction: column; gap: 10px; }
    .country-search input { width: 100%; }
    .country-table th:first-child { width: 54%; }
    .country-table th:nth-child(3) { width: 20%; }
    .country-table th:last-child { width: 26%; }
    .country-table__english, .country-table thead th:nth-child(2) { display: none; }
    .country-table th, .country-table td { padding: 12px 9px; }
    .country-code { width: 24px; margin-right: 6px; }
    .country-table__action a { font-size: .82rem; }
    .routes-heading--country { align-items: flex-start; flex-direction: column; gap: 4px; }
    .route-total { margin: 0; }
    .route-filters { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 9px; }
    .route-filters label:first-child { grid-column: 1 / -1; }
    .route-filters button { grid-column: 1; }
    .filter-reset { grid-column: 2; align-self: center; }
    .route-results { overflow: visible; border: 0; border-radius: 0; background: transparent; }
    .route-table, .route-table tbody { display: block; width: 100%; }
    .route-table thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; }
    .route-table__row { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px 18px; padding: 14px 0; border-bottom: 1px solid var(--portal-line); background: transparent !important; }
    .route-table__row > th, .route-table__row > td { display: block !important; padding: 0; border: 0; }
    .route-table__row > th { width: 100%; }
    .route-table__name { grid-column: 1 / -1; }
    .route-table__name a { font-size: .98rem; }
    .route-table__row td::before { content: attr(data-label); display: block; margin-bottom: 3px; color: var(--portal-muted); font-size: .75rem; }
    .route-table__action { grid-column: 1 / -1; }
    .route-table__action::before { display: none !important; }
    .route-table__empty-row { display: block; }
    .route-table__empty { display: block; width: 100%; padding: 28px 0 !important; border-bottom: 1px solid var(--portal-line) !important; }
    .route-detail-heading { padding-top: 18px; }
    .route-detail-heading h1 { font-size: 1.55rem; }
    .route-facts { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 14px; }
    .detail-nav { gap: 20px; }
    .detail-section { display: block; padding: 22px 0; }
    .detail-section > h2 { margin-bottom: 15px; }
    .source-field-list > div { grid-template-columns: minmax(0, 1fr); gap: 4px; }
    .plain-list li { display: block; }
    .plain-list li span { display: block; margin-top: 4px; }
}

.country-jump { display: flex; flex-wrap: wrap; gap: 8px; padding: 4px 0 12px; }
.country-jump a { display: inline-flex; align-items: center; gap: 8px; padding: 9px 12px; border: 1px solid var(--portal-line); border-radius: 6px; background: #fff; color: var(--portal-ink); font-size: .88rem; font-weight: 600; text-decoration: none; }
.country-jump a:hover { border-color: var(--portal-accent); color: var(--portal-accent-dark); }
.country-jump span { color: var(--portal-muted); font-size: .78rem; font-variant-numeric: tabular-nums; }
.country-route-group { padding: 25px 0; border-bottom: 1px solid var(--portal-line); scroll-margin-top: 20px; }
.country-route-group__heading { display: flex; align-items: baseline; justify-content: space-between; gap: 16px; margin-bottom: 10px; }
.country-route-group__heading h2 { margin: 0; font-size: 1.2rem; }
.country-route-group__heading p { margin: 5px 0 0; color: var(--portal-muted); font-size: .82rem; }
.country-route-group__heading a { color: var(--portal-accent-dark); font-size: .88rem; font-weight: 600; text-decoration: none; white-space: nowrap; }
.country-route-group__heading a:hover { text-decoration: underline; text-underline-offset: 3px; }
.route-preview-list { margin: 0; padding: 0; list-style: none; }
.route-preview-list li { display: grid; grid-template-columns: minmax(0, 1fr) 140px 140px; align-items: center; gap: 16px; padding: 11px 0; border-top: 1px solid var(--portal-line); color: var(--portal-muted); font-size: .84rem; }
.route-preview-list li span { overflow-wrap: anywhere; }
.route-preview-list a { min-width: 0; color: var(--portal-ink); font-size: .92rem; font-weight: 600; line-height: 1.4; overflow-wrap: anywhere; text-decoration: none; }
.route-preview-list a:hover { color: var(--portal-accent-dark); text-decoration: underline; }
.country-route-group__empty { margin: 0; padding: 12px 0; color: var(--portal-muted); font-size: .88rem; }
.route-groups { border-top: 1px solid var(--portal-line); }
.route-group { padding: 24px 0; border-bottom: 1px solid var(--portal-line); }
.route-group h2 { margin: 0 0 16px; font-size: 1.26rem; }
.route-type-group + .route-type-group { margin-top: 22px; }
.route-type-group h3 { margin: 0 0 7px; font-size: .94rem; }
.route-type-group h3 span { margin-left: 8px; color: var(--portal-muted); font-size: .8rem; font-weight: 400; }
.route-name-list { margin: 0; padding: 0; list-style: none; }
.route-name-list li { border-top: 1px solid var(--portal-line); }
.route-name-list a { display: flex; align-items: center; justify-content: space-between; gap: 16px; min-height: 42px; padding: 9px 0; color: var(--portal-ink); font-size: .91rem; font-weight: 600; line-height: 1.45; overflow-wrap: anywhere; text-decoration: none; }
.route-name-list a:hover { color: var(--portal-accent-dark); }
.route-name-list a span { flex: none; color: var(--portal-accent-dark); }
.route-list-empty { padding: 24px 0; border-top: 1px solid var(--portal-line); border-bottom: 1px solid var(--portal-line); color: var(--portal-muted); font-size: .91rem; }
.route-list-empty a { color: var(--portal-accent-dark); }
.route-detail-heading { padding-bottom: 14px; }
.route-detail-heading p { margin: 8px 0 0; color: var(--portal-muted); font-size: .92rem; }
.route-detail-section { padding: 24px 0; border-top: 1px solid var(--portal-line); }
.route-detail-section h2 { margin: 0 0 16px; font-size: 1.12rem; }
.route-detail-fields { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 28px; margin: 0; }
.route-detail-fields > div { min-width: 0; padding: 13px 0; border-bottom: 1px solid var(--portal-line); }
.route-detail-fields dt { color: var(--portal-muted); font-size: .8rem; }
.route-detail-fields dd { margin: 5px 0 0; color: var(--portal-ink); font-size: .96rem; line-height: 1.65; overflow-wrap: anywhere; }
.route-back-link { display: inline-block; margin-top: 22px; font-size: .88rem; font-weight: 600; }
@media (max-width: 760px) {
    .country-jump { gap: 7px; }
    .country-route-group__heading { align-items: flex-start; }
    .route-preview-list li { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 5px 14px; }
    .route-preview-list a { grid-column: 1 / -1; }
    .route-detail-fields { grid-template-columns: minmax(0, 1fr); gap: 0; }
}
