.languages .language-home { width: 11px; height: 11px; }
.atlas-stamp { display: block; width: 100%; height: auto; flex: 0 0 auto; }
.stamp-ground { opacity: .6; stroke-width: 1.25; }
.stamp-sun { fill: currentColor; stroke: none; opacity: .34; }

.hero-river-card { display: grid; grid-template-columns: minmax(0, 1fr) auto; width: min(100%, 560px); margin-top: 22px; overflow: hidden; border: 1px solid #d7b780a8; border-radius: var(--radius); background: linear-gradient(100deg,#102e3bf2,#153d49e8); color: #fff2d9; text-decoration: none; }
.hero-river-diagram { display: grid; grid-template-columns: auto minmax(74px, 1fr) auto; gap: 9px; align-items: center; padding: 8px 12px; }
.hero-river-city { display: grid; justify-items: center; color: #f3d19b; font-size: var(--type-label); line-height: 1.3; }
.hero-river-city b { color: #fff2d9; font-weight: 690; }
.hero-river-city .atlas-stamp { width: 47px; }
.hero-river-trace { display: grid; color: #f8d6a3; font-size: var(--type-label); font-weight: 680; line-height: 1.3; }
.hero-river-trace > span { display: flex; justify-content: center; align-items: center; gap: 0 5px; flex-wrap: wrap; text-align: center; }
.hero-river-trace small { color: #f5e5cc; font-size: var(--type-caption); font-weight: 550; }
.hero-river-trace .icon { width: 15px; height: 15px; }
.hero-river-line { display: block; width: 100%; height: 21px; overflow: visible; fill: #f6d59d; }
.hero-river-line path { fill: none; stroke: #f6d59d; stroke-linecap: round; vector-effect: non-scaling-stroke; }
.hero-river-line .hero-river-halo { stroke: #76aeb0; stroke-width: 9; opacity: .27; }
.hero-river-stroke { stroke-width: 1.8; }
.hero-river-cta { display: flex; align-items: center; justify-content: center; gap: 8px; min-height: 44px; padding: 9px 15px; background: #efc98f; color: #102a3a; font-weight: 740; transition: background .22s; }
.hero-river-cta .icon { width: 18px; height: 18px; transition: transform .22s; }
.hero-river-card:hover .hero-river-cta { background: #ffe4b5; }
.hero-river-card:hover .hero-river-cta .icon { transform: translateX(3px); }

.home-river { padding-top: clamp(62px, 7vw, 105px); }
.atlas-board { border: 1px solid var(--line); border-radius: var(--radius); overflow: hidden; background: var(--panel); }
.atlas-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 10px 26px; padding: 13px clamp(14px, 2.3vw, 27px); border-bottom: 1px solid var(--line); background: var(--canvas); }
.route-buttons { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); min-width: min(100%, 320px); gap: 4px; padding: 4px; border: 1px solid var(--control-line); border-radius: var(--radius); }
.route-buttons button { display: grid; align-content: center; text-align: left; min-height: 54px; padding: 6px 9px; border: 1px solid transparent; border-radius: 3px; background: transparent; color: var(--muted); overflow-wrap: anywhere; cursor: pointer; }
.route-buttons button b { font-size: var(--type-label); font-weight: 700; line-height: 1.3; }
.route-buttons button span { margin-top: 2px; font-size: var(--type-caption); line-height: 1.35; }
.route-buttons button:focus-visible { outline-offset: -3px; }
.route-buttons button[aria-pressed="true"]:focus-visible { outline-color: var(--selected-ink); }
.route-buttons button:hover { color: var(--head); background: var(--wash); }
.route-buttons button[aria-pressed="true"] { background: var(--selected); color: var(--selected-ink); border-color: var(--selected); }
.route-status { display: flex; gap: 8px 24px; flex-wrap: wrap; }
.route-note { display: flex; align-items: center; gap: 9px; color: var(--link); font-size: var(--type-caption); line-height: 1.3; }
.route-note > .icon { width: 19px; height: 19px; }
.atlas-route-caption { display: block; color: var(--muted); }
.atlas-layout { display: grid; grid-template-columns: minmax(0, 2fr) minmax(290px, 1fr); }
.river-figure { display: flex; flex-direction: column; min-width: 0; background: #0e2934; color: #fff2d9; }
.river-stage { position: relative; flex: 1; min-height: 24rem; isolation: isolate; background: radial-gradient(ellipse at 55% 44%, #25515a 0, #143741 43%, #0a242f 88%); }
.river-svg { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; overflow: hidden; }
.river-mobile { display: none; }
.atlas-contours { fill: none; stroke: #ddc18b; stroke-width: 1; opacity: .23; }
.water-halo, .water-line, .road-line, .route-path, .route-direction { fill: none; stroke-linecap: round; vector-effect: non-scaling-stroke; }
.water-halo { stroke: #3c9ea7; stroke-width: 27; opacity: .2; }
.water-line { stroke: #72afb4; stroke-width: 2.2; opacity: .7; }
.road-line { stroke: #e8d4a9; stroke-width: 2.15; stroke-dasharray: 3 7; opacity: .87; }
.route-path { stroke: #f5b76c; stroke-width: 3; }
.route-direction { stroke: #f5b76c; stroke-width: 2.7; }
[data-route="0"] [data-water="1"], [data-route="1"] [data-water="0"] { display: none; }
.map-vessel { pointer-events: none; }
.map-compass { position: absolute; inset: 16px 18px auto auto; width: 34px; height: 48px; font: 650 12px var(--sans); color: #f7e5bf; pointer-events: none; }
.atlas-pin { position: absolute; top: var(--y); left: var(--x); z-index: 2; transform: translate(-50%, -50%); display: grid; place-items: center; width: 57px; height: 57px; color: #ffedd0; text-decoration: none; border-radius: 50%; }
.atlas-pin:focus-visible { outline-offset: 0; }
.atlas-pin-art { display: grid; place-items: center; width: 53px; height: 53px; background: #153743; border: 1px solid #d1b37d9c; border-radius: 50%; color: #f2d099; box-shadow: 0 0 0 4px #08212c93; transition: background .24s, color .24s, box-shadow .24s, transform .24s; }
.atlas-pin-art .atlas-stamp { width: 45px; }
.atlas-pin-name { position: absolute; bottom: calc(100% + 6px); left: 50%; transform: translateX(-50%); width: max-content; max-width: min(8rem, 28vw); text-align: center; line-height: 1.25; font-size: var(--type-caption); font-weight: 680; text-shadow: 0 1px 4px #031620, 0 0 6px #031620; }
@media (min-width: 671px) {
  .atlas-pin-kom .atlas-pin-name { bottom: auto; top: calc(100% + 7px); transform: translateX(-65%); }
}
.atlas-pin:is(:hover, [aria-current]) .atlas-pin-art { background: #efc185; color: #14313a; box-shadow: 0 0 0 5px #f5b76c3d; transform: scale(1.05); }
.atlas-pin:is(:hover, [aria-current]) .atlas-pin-name { color: #ffcf91; }
[data-route="0"] .atlas-pin-luxor:not([aria-current]) .atlas-pin-art,
[data-route="1"] .atlas-pin-aswan:not([aria-current]) .atlas-pin-art { border-color: #f9c685; box-shadow: 0 0 0 3px #f5b76c45; }
.atlas-pin-abu .atlas-pin-art { border-style: dashed; }
.river-figure figcaption { display: flex; flex-wrap: wrap; gap: 6px 17px; align-items: center; padding: 13px 18px; border-top: 1px solid #59737c; color: #e9dbc1; font-size: var(--type-caption); line-height: 1.4; }
.river-figure figcaption span { display: inline-flex; gap: 7px; align-items: center; }
.river-figure figcaption span:last-child { margin-left: auto; }
.river-figure figcaption i { width: 18px; border-top: 2px solid #f5b76c; }
.river-figure figcaption span:nth-child(2) i { border-top: 2px dashed #e8d4a9; }

.atlas-sidebar { display: flex; flex-direction: column; justify-content: space-between; min-width: 0; padding: clamp(16px, 2.3vw, 30px); background: var(--panel); }
.station-panel + .station-panel { margin-top: 18px; }
.atlas-ready .station-panel { margin-top: 0; }
.station-mast { display: grid; grid-template-columns: 90px minmax(0, 1fr); gap: 14px; align-items: center; margin-bottom: 14px; }
.station-mast > .atlas-stamp { padding: 5px; background: var(--wash); color: var(--link); border: 1px solid var(--line); border-radius: var(--radius); }
.station-mast h3 { font-size: clamp(1.8125rem, 3.15vw, 2.875rem); text-wrap: initial; }
.station-role { color: var(--accent); font-size: var(--type-caption); font-weight: 720; text-transform: uppercase; letter-spacing: .09em; line-height: 1.3; }
.station-panel > p { margin-top: 10px; line-height: 1.55; }
.station-panel .station-tip { padding: 10px 12px; border-left: 2px solid var(--link); background: var(--canvas); color: var(--muted); }
.station-tip-label { display: block; font-weight: 680; color: var(--head); }
.atlas-ready .station-tip-label { display: none; }
.station-topics { display: grid; gap: 4px; list-style: none; padding: 0; margin: 12px 0 0; }
.station-topics a { display: inline-flex; align-items: center; gap: 6px; min-height: 44px; font-weight: 660; }
.station-topics .icon, .station-source .icon { width: 15px; height: 15px; }
.station-panel .station-source { color: var(--muted); font-size: var(--type-caption); }
.atlas-sidebar-footer { display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 7px 12px; }
.atlas-sidebar-footer:not(:empty) { padding-top: 17px; }
.atlas-sidebar-footer > a { gap: 4px; font-size: var(--type-caption); }
.atlas-sidebar-footer > a .icon { width: 16px; height: 16px; }
.station-pagination { display: flex; gap: 6px; }
.station-pagination button { display: grid; place-items: center; width: 44px; height: 44px; border: 1px solid var(--control-line); border-radius: var(--radius); color: var(--head); background: var(--canvas); cursor: pointer; }
.station-pagination button:hover { color: var(--selected-ink); background: var(--selected); }
.station-pagination .icon { width: 18px; height: 18px; }

.trip-plan { container: trip-plan / inline-size; padding-block: clamp(54px, 6vw, 93px) clamp(63px, 7vw, 108px); }
.plan-flow { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); margin: 0; padding: 0; list-style: none; border-block: 1px solid var(--line); }
.plan-flow > li { position: relative; min-width: 0; display: grid; grid-template-rows: auto 1fr; gap: 13px; padding: clamp(14px, 2.3vw, 33px); overflow-wrap: break-word; }
.plan-flow > li + li { border-left: 1px solid var(--line); }
.plan-emblem { display: grid; place-items: center; width: 105px; height: 79px; color: var(--link); background: var(--wash); border-radius: 55% 55% 4px 4px; border: 1px solid var(--line); }
.plan-emblem .atlas-stamp { width: 92px; }
.plan-flow h3 { font-size: clamp(1.5625rem, 2.55vw, 2.375rem); }
.plan-flow p { margin-top: 7px; color: var(--muted); line-height: 1.55; }
.plan-flow a { margin-top: 10px; }
.place-photo { position: relative; }
.place-stamp { display: grid; place-items: center; position: absolute; right: 11px; bottom: 11px; width: 57px; height: 57px; color: #f5d8a7; background: #112e3bee; border: 1px solid #efd4a699; border-radius: 50%; box-shadow: 0 3px 14px #04182342; }
.place-stamp .atlas-stamp { width: 46px; }

.article-head-illustrated { display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(0, .9fr); align-items: center; max-width: none; gap: clamp(16px, 4vw, 54px); }
.article-head-illustrated h1 { font-size: clamp(2.75rem, 1.5rem + 3.6vw, 4.9375rem); text-wrap: balance; }
.article-head-cruise { display: grid; grid-template-columns: minmax(0, 1fr) clamp(110px, 16vw, 204px); align-items: center; max-width: none; gap: clamp(10px, 2vw, 27px); }
.article-head-cruise h1 { font-size: clamp(2.75rem, 1.5rem + 4.3vw, 5.0625rem); text-wrap: balance; }
.cruise-heading-stamp { display: grid; place-items: center; aspect-ratio: 1; padding: clamp(12px, 2vw, 24px); color: var(--link); background: var(--wash); border: 1px solid var(--line); border-radius: 50%; }
.cruise-heading-stamp .atlas-stamp { overflow: visible; }
.journal-image { position: relative; isolation: isolate; width: 100%; min-width: 0; aspect-ratio: 1.52; border-radius: var(--radius); background: var(--wash); }
.journal-image img { width: 100%; height: 100%; object-fit: cover; position: absolute; inset: 0; border-radius: inherit; }
.journal-image::after { content: ''; position: absolute; inset: 0; background: linear-gradient(0deg,#0923338c 0%,transparent 34%); border-radius: inherit; pointer-events: none; }
.journal-image figcaption { position: absolute; z-index: 1; inset: auto 10px 10px auto; max-width: calc(100% - 96px); padding: 3px 7px; border-radius: 2px; background: #102a3af5; color: #fff4de; font-weight: 650; font-size: var(--type-caption); }
.journal-stamp { display: grid; place-items: center; position: absolute; z-index: 1; bottom: 13px; left: 14px; width: 77px; height: 77px; color: #f3d3a0; background: #102e3ae8; border-radius: 50%; border: 1px solid #f6d09b; }
.journal-stamp .atlas-stamp { width: 65px; }
.chapter-nav { display: flex; gap: 5px 14px; align-items: center; flex-wrap: wrap; padding: 7px 0; margin-block: 2px clamp(22px, 3vw, 36px); border-block: 1px solid var(--line); color: var(--muted); font-size: var(--type-label); }
.chapter-nav > span { display: flex; align-items: center; gap: 5px; font-weight: 670; }
.chapter-nav > span .icon { width: 16px; height: 16px; }
.chapter-nav ul { display: flex; flex-wrap: wrap; gap: 2px 6px; list-style: none; padding: 0; margin: 0; }
.chapter-nav a { display: inline-flex; align-items: center; padding: 5px 8px; min-height: 44px; border-radius: 3px; font-weight: 650; }
.chapter-nav a:hover { background: var(--wash); text-decoration: underline; }
.article .booking-heading { font-size: clamp(1.625rem, 3.2vw, 2.25rem); margin-bottom: 12px; }
.booking-compact .booking-card { display: block; }
.booking-compact .booking-card h3 { font-size: clamp(1.4375rem, 2.6vw, 2rem); }
.booking-compact .booking-content { border-top: 3px solid var(--link); }
.booking-meta { display: flex; align-items: center; flex-wrap: wrap; gap: 7px 13px; }
.booking-duration { display: inline-flex; align-items: center; gap: 5px; color: var(--muted); font-weight: 640; font-size: var(--type-caption); }
.booking-duration .icon { width: 16px; height: 16px; }
.field-guide { position: relative; margin-block: clamp(33px, 5.5vw, 72px); background: var(--panel); border: 1px solid var(--line); border-radius: var(--radius); overflow: hidden; }
.field-guide-head { position: relative; display: grid; grid-template-columns: minmax(0, 1fr) 140px; gap: 14px; align-items: center; padding: clamp(18px, 3vw, 38px); color: #f4e5c9; background: radial-gradient(ellipse at 93% 0,#27505a,#102a3a 74%); }
.field-guide-head h2 { color: #fff0d1; }
.field-guide-head .section-tag { color: #f2be85; margin-bottom: 10px; }
.field-guide-head .section-tag::before { background: #f2be85; }
.field-guide-head .atlas-stamp { color: #f1c889; }
.field-flow { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0; list-style: none; padding: 0; margin: 0; }
.field-flow li { position: relative; display: grid; align-content: start; gap: 12px; padding: clamp(14px, 2.7vw, 32px); }
.field-flow li + li { border-left: 1px solid var(--line); }
.field-flow-icon { display: grid; place-items: center; width: 40px; height: 40px; color: var(--link); background: var(--wash); border: 1px solid var(--line); border-radius: 50%; }
.field-flow h3 { font-size: clamp(1.375rem, 2.35vw, 1.9375rem); }
.field-flow p { margin-top: 6px; color: var(--muted); line-height: 1.55; }
.field-flow a { gap: 5px; margin-top: 8px; }
.field-flow a .icon { width: 16px; height: 16px; }

.route-comparison { margin-bottom: clamp(38px, 5vw, 65px); }
.route-comparison-heading { display: flex; gap: 12px 28px; align-items: end; justify-content: space-between; flex-wrap: wrap; }
.route-comparison-heading > div > p { max-width: 66ch; color: var(--muted); }
.compare-language { display: flex; align-items: center; flex-wrap: wrap; gap: 5px 9px; font-size: var(--type-caption); color: var(--muted); }
.compare-language .icon { width: 16px; height: 16px; color: var(--link); }
.compare-language a { display: inline-flex; align-items: center; min-height: 44px; font-weight: 670; padding-inline: 4px; }
.ticket-shortcuts { display: none; }
.route-tickets { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 19rem), 1fr)); gap: clamp(14px, 2.3vw, 28px); }
.route-ticket { display: flex; flex-direction: column; min-width: 0; border: 1px solid var(--line); border-radius: var(--radius); background: var(--panel); overflow: hidden; }
.route-ticket-photo { position: relative; isolation: isolate; height: clamp(134px, 16vw, 200px); background: #102a3a; color: #fff1d7; }
.route-ticket-photo::after { content: ''; position: absolute; z-index: -1; inset: 0; background: linear-gradient(0deg,#082631df 0%,transparent 47%),linear-gradient(140deg,#0f2732a6,transparent 47%); pointer-events: none; }
.route-ticket-photo img { width: 100%; height: 100%; object-fit: cover; object-position: center 49%; position: absolute; z-index: -2; inset: 0; }
.route-ticket-photo[data-ticket-direction="1"] img { object-position: center 64%; }
.route-ticket-photo > p { position: absolute; inset: 12px auto auto 13px; padding: 5px 9px; display: flex; align-items: center; gap: 5px; border: 1px solid #e4bd899e; border-radius: var(--radius); background: #0e2937ed; font-size: var(--type-caption); font-weight: 680; }
.route-ticket-photo[data-ticket-direction="1"] > p { inset: 12px 13px auto auto; }
.route-ticket-photo > p .icon { width: 17px; height: 17px; }
.route-ticket-photo figcaption { position: absolute; inset: auto 12px 8px auto; max-width: calc(100% - 24px); padding: 2px 7px; border-radius: 2px; background: #102a3af5; font-size: var(--type-caption); color: #ffedce; font-weight: 650; }
.route-ticket-body { display: flex; flex-direction: column; align-items: start; padding: clamp(12px, 2.25vw, 27px); flex: 1; }
.route-ticket h3 { font-size: clamp(1.6875rem, 3vw, 2.6875rem); letter-spacing: -.05em; }
.ticket-diagram { --ticket-line: var(--accent); position: relative; container-type: inline-size; width: 100%; margin-block: 17px 14px; }
.ticket-diagram[data-ticket-direction="1"] { --ticket-line: var(--link); }
.ticket-axis { position: absolute; inset: 1px 11% auto; display: flex; align-items: center; gap: 0; color: var(--ticket-line); height: 15px; }
.ticket-axis span { border-top: 2px solid currentColor; flex: 1; }
.ticket-axis .icon { width: 22px; height: 22px; stroke-width: 2.1; }
.ticket-stations { position: relative; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); margin: 0; padding: 0; list-style: none; color: var(--head); }
.ticket-stations li { min-width: 0; display: grid; grid-template-rows: 17px auto auto; justify-items: center; text-align: center; font-size: var(--type-label); line-height: 1.35; }
.ticket-stations i { align-self: center; width: 9px; height: 9px; border: 2px solid var(--ticket-line); border-radius: 50%; background: var(--panel); }
.ticket-stations :is(:first-child,:last-child) i { width: 13px; height: 13px; border-width: 2px; }
.ticket-stations li:first-child i { background: var(--ticket-line); }
.ticket-stations strong { margin-top: 3px; }
.ticket-stations small { margin-top: 3px; color: var(--muted); font-size: var(--type-caption); overflow-wrap: anywhere; }
@container (max-width: 22rem) {
  .ticket-axis { display: none; }
  .ticket-stations { grid-template-columns: 1fr; }
  .ticket-stations::before { content: ''; position: absolute; inset: .8rem auto .8rem 6px; border-left: 2px solid var(--ticket-line); }
  .ticket-stations li { position: relative; grid-template: auto / 14px minmax(0, 1fr) auto; justify-items: start; align-items: baseline; text-align: start; gap: 8px; padding-block: 3px; }
  .ticket-stations i { justify-self: center; }
  .ticket-stations :is(strong, small) { margin-top: 0; }
}
.ticket-calendar { width: 100%; display: flex; flex-direction: column; gap: 6px; border-block: 1px dashed var(--line); padding-block: 9px 11px; }
.ticket-count { display: flex; flex-wrap: wrap; gap: 4px 15px; color: var(--head); font-size: .95rem; font-weight: 700; }
.ticket-count span { display: inline-flex; gap: 5px; align-items: center; }
.ticket-count .icon { width: 16px; height: 16px; color: var(--accent); }
.ticket-count span + span .icon { color: var(--link); }
.ticket-marks { display: flex; flex-wrap: wrap; gap: 4px; }
.ticket-marks span { display: grid; place-items: center; width: clamp(23px, 2.4vw, 31px); aspect-ratio: 1; background: var(--wash); color: var(--accent); border-radius: 50%; }
.ticket-marks span.night-mark { background: #173848; color: #f7daa6; }
.ticket-marks .icon { width: 15px; height: 15px; }
.route-ticket-review { display: flex; align-items: center; flex-wrap: wrap; gap: 4px 12px; margin-block: 0 10px; padding-top: 11px; }
.route-ticket-end { width: 100%; min-width: 0; margin-top: auto; }
.ticket-transfer-warning { display: flex; align-items: start; gap: 8px; margin-bottom: 10px; padding: 11px 12px; border-left: 3px solid var(--accent); background: var(--wash); color: var(--ink); font-size: var(--type-label); line-height: 1.5; }
.ticket-transfer-warning strong { display: block; margin-bottom: 2px; color: var(--accent); }
.ticket-transfer-warning .icon { width: 17px; height: 17px; color: var(--accent); }
.route-ticket .booking-source { max-width: 100%; }
.route-ticket-links { display: flex; flex-wrap: wrap; align-items: center; gap: 2px 14px; border-top: 1px solid var(--line); }
.route-ticket-links a { font-size: var(--type-label); }
.route-ticket-links .icon { width: 16px; height: 16px; }

.comparison-chapter { margin-block: clamp(40px, 6.5vw, 89px); }
.inclusion-table { width: 100%; table-layout: fixed; border: 1px solid var(--line); border-collapse: collapse; background: var(--panel); text-align: left; line-height: 1.52; overflow-wrap: break-word; }
.inclusion-table th, .inclusion-table td { padding: clamp(9px, 1.55vw, 20px); vertical-align: top; }
.inclusion-table thead { background: #102e3b; color: #fce9c9; }
.inclusion-table thead th { font-size: 1.02rem; }
.inclusion-table thead th:first-child { width: 23%; }
.inclusion-table thead th span { display: block; color: #e0d1b8; font-size: var(--type-caption); font-weight: 550; }
.inclusion-table tbody tr + tr { border-top: 1px solid var(--line); }
.inclusion-table tbody th { width: 23%; color: var(--head); background: var(--canvas); }
.inclusion-table tbody th > span { display: flex; align-items: start; gap: 7px; }
.inclusion-table tbody th .icon { width: 19px; height: 19px; color: var(--link); }
.inclusion-table td { width: 38.5%; border-left: 1px solid var(--line); }
.inclusion-table td.both-routes { width: auto; }
.both-routes-label { display: flex; align-items: center; gap: 4px; font-size: var(--type-caption); color: var(--positive); font-weight: 700; margin-bottom: 3px; }
.both-routes-label .icon { width: 14px; height: 14px; }
.mobile-route-key { display: none; }
.comparison-source { display: flex; gap: 8px; align-items: baseline; margin-top: 9px; color: var(--muted); font-size: var(--type-caption); }
.comparison-source .icon { width: 16px; height: 16px; color: var(--link); }
.comparison-source a { display: inline-flex; min-height: 32px; align-items: center; gap: 4px; }

.visit-tool { display: grid; grid-template-columns: minmax(0, .9fr) minmax(0, 1.4fr); border: 1px solid var(--line); background: var(--panel); border-radius: var(--radius); }
.visit-choices { margin: 0; min-width: 0; padding: 13px 17px 17px; border: 0; border-right: 1px solid var(--line); }
.visit-choices legend { padding: 0 7px; margin: 0; font-size: var(--type-caption); color: var(--head); font-weight: 700; }
.visit-choices label { display: flex; align-items: center; gap: 9px; min-height: 46px; margin-top: 5px; padding: 6px 9px; border: 1px solid var(--control-line); border-radius: var(--radius); background: var(--canvas); color: var(--ink); font-weight: 640; cursor: pointer; }
.visit-choices label:has(input:checked) { background: var(--wash); border-color: var(--link); }
.visit-choices label span { min-width: 0; overflow-wrap: break-word; }
.visit-choices input { width: 20px; height: 20px; flex: 0 0 auto; margin: 0; accent-color: var(--link); }
.visit-results { min-width: 0; padding: clamp(13px, 2vw, 26px); }
.visit-tool:has(.visit-choices[hidden]) { display: block; }
.visit-result { display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: start; gap: 10px; }
.visit-result + .visit-result { padding-top: 12px; }
.visit-result-icon { display: grid; place-items: center; width: 36px; height: 36px; border-radius: 50%; background: var(--wash); color: var(--link); }
.visit-result-icon .icon { width: 19px; height: 19px; }
.visit-result h3 { font-size: clamp(1.4375rem, 2.65vw, 2.0625rem); margin-block: 2px 5px; }
.visit-status { color: var(--positive); font-size: var(--type-caption); font-weight: 710; line-height: 1.4; }
.visit-optional { color: var(--accent); }
.visit-empty { color: var(--muted); }
.logbook { --logbook-inset: clamp(13px, 2.4vw, 30px); --route-ink: var(--link); border: 1px solid var(--line); border-radius: var(--radius); background: var(--panel); }
.logbook-toolbar { display: flex; flex-wrap: wrap; align-items: center; gap: 12px 22px; padding: 12px var(--logbook-inset); background: var(--canvas); border-bottom: 1px solid var(--line); }
.logbook-options { min-width: min(100%, 294px); }
.logbook-legend { display: flex; flex-wrap: wrap; align-items: center; gap: 5px 15px; list-style: none; margin: 0; padding: 0; }
.logbook-kind { display: inline-flex; gap: 5px; align-items: center; color: var(--muted); font-size: var(--type-caption); line-height: 1.4; font-weight: 650; }
.logbook-kind > i { width: 16px; flex: 0 0 auto; border-top: 2px solid var(--route-ink); }
.logbook-kind[data-kind="check"] > i { border-top-color: var(--accent); border-top-style: dashed; }
.logbook-kind[data-kind="independent"] > i { border-top-color: var(--muted); border-top-style: dashed; }
.logbook-kind[data-kind="road"] > i { border-top-color: var(--accent); border-top-style: dotted; }
.logbook-plan { padding: clamp(17px, 2.8vw, 32px) var(--logbook-inset); }
.logbook-plan:not([hidden]) + .logbook-plan:not([hidden]) { border-top: 1px solid var(--line); }
.logbook-plan h3 { display: flex; align-items: center; flex-wrap: wrap; gap: 7px 12px; font-size: clamp(1.6875rem, 3.35vw, 2.75rem); }
.logbook-plan h3 span { padding: 4px 8px; border: 1px solid var(--line); border-radius: var(--radius); background: var(--canvas); color: var(--link); font: 680 var(--type-caption)/1.4 var(--sans); letter-spacing: 0; }
.logbook-stages { --marker-size: 75px; display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); list-style: none; margin: 17px 0 0; padding: 0; }
.logbook-stage { position: relative; min-width: 0; display: flex; flex-direction: column; padding-inline: clamp(6px, 1.05vw, 14px); }
.logbook-stage:not(:last-child)::after { content: ''; position: absolute; top: calc(var(--marker-size) / 2); left: 50%; width: 100%; border-top: 2px solid var(--route-ink); pointer-events: none; }
.logbook-stage[data-kind="check"]::after { border-top-color: var(--accent); border-top-style: dashed; }
.logbook-stage[data-stage="landing"]::after { border-top-color: var(--muted); border-top-style: dashed; }
.logbook-stage-art { position: relative; z-index: 1; display: grid; place-items: center; width: var(--marker-size); height: var(--marker-size); margin: 0 auto 11px; border: 1px solid var(--route-ink); border-radius: 50%; background: var(--wash); color: var(--route-ink); }
.logbook-stage-art .atlas-stamp { width: 83%; }
.logbook-stage[data-kind="check"] .logbook-stage-art { color: var(--accent); border-color: var(--accent); border-style: dashed; background: var(--panel); }
.logbook-stage[data-kind="independent"] .logbook-stage-art { color: var(--muted); border-color: var(--muted); border-style: dashed; background: var(--panel); }
.logbook-stage[data-stage="landing"] .atlas-stamp { transform: scaleX(-1); }
.logbook-stage-body { display: flex; flex-direction: column; flex: 1; min-width: 0; }
.logbook-plan h4 { margin: 0; color: var(--head); font-size: 1.125rem; font-weight: 720; line-height: 1.35; }
.logbook-stage-body > p:not(.sr-only), .logbook-detour > div > p:last-child { margin-top: 4px; color: var(--muted); font-size: 1.0625rem; line-height: 1.52; }
.logbook-field { display: grid; align-content: end; gap: 4px; min-width: 0; padding-top: 11px; margin-top: auto; }
.logbook-field label { display: flex; align-items: end; min-height: 2.8em; color: var(--head); font-size: var(--type-label); font-weight: 680; line-height: 1.4; }
.logbook-field textarea { display: block; min-width: 0; width: 100%; min-height: 3.5rem; padding: 7px 8px; resize: vertical; border: 1px solid var(--control-line); border-radius: var(--radius); background: var(--canvas); color: var(--ink); font: inherit; font-size: 1.0625rem; line-height: 1.5; }
.logbook-field textarea:focus-visible { outline-offset: 2px; }
.logbook-detour { position: relative; display: grid; grid-template-columns: 74px minmax(0, 1fr) minmax(0, .65fr); align-items: center; gap: 7px 14px; margin: 23px clamp(6px, 1.05vw, 14px) 0; padding: 11px 14px; border: 1px dotted var(--accent); border-radius: var(--radius); background: var(--canvas); }
.logbook-detour::before { content: ''; position: absolute; top: -16px; left: 70%; height: 15px; border-left: 2px dotted var(--accent); }
[data-logbook-route="north"] .logbook-detour::before { left: 30%; }
.logbook-detour-art { color: var(--accent); }
.logbook-detour h4 { margin-top: 3px; font: 620 clamp(21px, 2.4vw, 29px)/1.08 var(--serif); letter-spacing: -.04em; }
.logbook-detour .logbook-field { margin-top: 0; padding-top: 0; }
.logbook-detour .logbook-field label { min-height: 0; }
.logbook-storage { padding: 8px var(--logbook-inset); border-bottom: 1px solid var(--line); background: var(--canvas); color: var(--muted); font-size: var(--type-caption); }
.logbook-storage[data-error], .logbook-field-error { color: var(--accent); font-size: var(--type-caption); font-weight: 640; }
.logbook-field-error:empty { height: 0; margin-top: -4px; }
.logbook-field:has(.logbook-field-error:not(:empty)) textarea { border-color: var(--accent); }
.transfer-note { display: flex; align-items: start; gap: 9px; margin-top: 13px; padding: 12px 15px; border-left: 2px solid var(--accent); background: var(--wash); }
.transfer-note .icon { color: var(--accent); width: 18px; height: 18px; margin-top: 3px; }

@media (max-width: 840px) {
  .hero-river-card { grid-template-columns: minmax(0, 1fr); }
  .atlas-layout { grid-template-columns: 1fr; }
  .atlas-sidebar { padding: 17px; }
  .river-stage { min-height: 23rem; }
  .atlas-route-caption { display: inline; }
  .article-head-illustrated { gap: 18px; }
}
@media (max-width: 1040px) {
  .logbook-stages { --marker-size: 52px; grid-template-columns: 1fr; }
  .logbook-stage { display: grid; grid-template-columns: var(--marker-size) minmax(0, 1fr); gap: 10px; padding: 0 0 15px; }
  .logbook-stage:not(:last-child)::after { left: calc(var(--marker-size) / 2); top: calc(var(--marker-size) / 2); bottom: calc(var(--marker-size) / -2); width: 0; border-top: 0; border-left: 2px solid var(--route-ink); }
  .logbook-stage[data-kind="check"]::after { border-left-color: var(--accent); border-left-style: dashed; }
  .logbook-stage[data-stage="landing"]::after { border-left-color: var(--muted); border-left-style: dashed; }
  .logbook-stage-art { margin: 0; }
  .logbook-field { padding-top: 7px; }
  .logbook-field label { min-height: 0; }
  .logbook-detour { margin: 4px 0 0; }
  .logbook-detour::before { display: none; }
}
@media (max-width: 670px) {
  .hero-river-card { grid-template-columns: 1fr; max-width: 380px; margin-top: 17px; }
  .hero-river-diagram { gap: 7px; padding: 6px 11px; }
  .hero-river-city .atlas-stamp { width: 40px; }
  .hero-river-cta { padding: 6px 8px; }
  .home-river { padding-top: 52px; }
  .atlas-toolbar { flex-wrap: wrap; justify-content: start; gap: 7px; padding: 9px 12px; }
  .route-buttons { width: 100%; }
  .route-note { gap: 5px; }
  .route-note .icon { width: 15px; height: 15px; }
  .atlas-route-caption { display: none; }
  .river-desktop { display: none; }
  .river-mobile { display: block; }
  .river-stage { min-height: 23rem; }
  .map-compass { inset: 14px 12px auto auto; width: 29px; height: 40px; }
  .atlas-pin { top: var(--my); left: var(--mx); width: 49px; height: 49px; }
  .atlas-pin-art { width: 43px; height: 43px; }
  .atlas-pin-art .atlas-stamp { width: 37px; }
  .atlas-pin-name { left: calc(100% + 3px); bottom: 50%; transform: translateY(50%); font-size: var(--type-caption); }
  :is(.atlas-pin-luxor, .atlas-pin-kom, .atlas-pin-abu) .atlas-pin-name { left: auto; right: calc(100% + 3px); }
  .river-figure figcaption { padding: 8px 11px; font-size: var(--type-caption); }
  .river-figure figcaption span:last-child { margin-left: 0; }
  .station-mast { grid-template-columns: 67px minmax(0, 1fr); gap: 10px; }
  .trip-plan { padding-block: 48px 57px; }
  .place-stamp { right: 5px; bottom: 5px; width: 33px; height: 33px; }
  .place-stamp .atlas-stamp { width: 28px; }
  .article-head-illustrated { grid-template-columns: 1fr; gap: 14px; }
  .article-head-illustrated h1, .article-head-cruise h1 { font-size: clamp(2.375rem, 1.25rem + 5.5vw, 3.875rem); }
  .article-head-cruise { display: block; }
  .cruise-heading-stamp { display: none; }
  .journal-image { height: clamp(137px, 43vw, 210px); aspect-ratio: auto; }
  .journal-stamp { width: 57px; height: 57px; }
  .journal-stamp .atlas-stamp { width: 47px; }
  .chapter-nav { padding: 6px 0; gap: 0; }
  .chapter-nav > span { flex-basis: 100%; }
  .chapter-nav a { padding-inline: 5px; }
  .field-guide-head { grid-template-columns: minmax(0, 1fr) 66px; gap: 7px; }
  .field-flow { grid-template-columns: 1fr; }
  .field-flow li { grid-template-columns: 34px minmax(0, 1fr); gap: 10px; }
  .field-flow li + li { border-left: 0; border-top: 1px solid var(--line); }
  .field-flow-icon { width: 34px; height: 34px; }
  .field-flow-icon .icon { width: 18px; height: 18px; }
  .route-tickets { grid-template-columns: 1fr; }
  .ticket-shortcuts { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 7px; margin: -6px 0 10px; }
  .ticket-shortcuts a { display: flex; align-items: center; gap: 7px; min-height: 48px; padding: 6px 9px; border: 1px solid var(--control-line); border-radius: var(--radius); background: var(--canvas); color: var(--head); text-decoration: none; }
  .ticket-shortcuts a:hover { background: var(--wash); }
  .ticket-shortcuts .icon { width: 17px; height: 17px; color: var(--accent); }
  .ticket-shortcuts a + a .icon { color: var(--link); }
  .ticket-shortcuts :is(b, small) { display: block; line-height: 1.35; }
  .ticket-shortcuts small { color: var(--muted); font-size: var(--type-caption); }
  .route-ticket-photo { height: clamp(127px, 34vw, 175px); }
  .logbook-toolbar { gap: 9px; }
  .logbook-legend { gap: 5px 10px; }
  .logbook-detour { grid-template-columns: 49px minmax(0, 1fr); gap: 8px; }
  .logbook-detour .logbook-field { grid-column: 2; }
}
@container trip-plan (max-width: 45rem) {
  .plan-flow { grid-template-columns: 1fr; }
  .plan-flow > li { grid-template-columns: 67px minmax(0, 1fr); grid-template-rows: auto; gap: 12px; padding: 13px 2px; }
  .plan-flow > li + li { border-left: 0; border-top: 1px solid var(--line); }
  .plan-emblem { width: 65px; height: 53px; }
  .plan-emblem .atlas-stamp { width: 57px; }
}
@container article-body (max-width: 40rem) {
  .visit-tool, .article-head-illustrated, .field-flow { grid-template-columns: 1fr; }
  .visit-choices { border-right: 0; border-bottom: 1px solid var(--line); }
  .field-flow li + li { border-left: 0; border-top: 1px solid var(--line); }
  .credits li { grid-template-columns: 1fr; }
  .inclusion-table, .inclusion-table tbody { display: block; }
  .inclusion-table thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
  .inclusion-table tbody tr { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); }
  .inclusion-table tbody th, .inclusion-table td { width: auto; }
  .inclusion-table tbody th, .inclusion-table .both-routes { grid-column: 1 / -1; border-left: 0; }
  .inclusion-table td { font-size: var(--type-label); }
  .inclusion-table td:first-of-type { border-left: 0; }
  .mobile-route-key { display: block; color: var(--accent); font-weight: 700; font-size: var(--type-caption); }
}
@media (max-width: 360px) {
  .atlas-pin-abu .atlas-pin-name { left: 50%; right: auto; top: 100%; bottom: auto; transform: translateX(-50%); }
  .inclusion-table tbody tr { grid-template-columns: 1fr; }
  .inclusion-table td { border-left: 0; }
  .inclusion-table td + td { border-top: 1px dashed var(--line); }
}
@media (prefers-reduced-motion: no-preference) {
  .hero-river-stroke { animation: hero-trace 1.1s ease-out both; }
  @keyframes hero-trace { from { stroke-dasharray: 100; stroke-dashoffset: 100; } to { stroke-dasharray: 100; stroke-dashoffset: 0; } }
  .route-changing .route-path { animation: atlas-draw .76s cubic-bezier(.28,.58,.29,1) both; }
  @keyframes atlas-draw { from { stroke-dasharray: 100; stroke-dashoffset: 100; } to { stroke-dasharray: 100; stroke-dashoffset: 0; } }
  @supports (animation-timeline: scroll()) {
    .inner-page .site-header::after { content: ''; position: absolute; inset: auto 0 -1px; height: 2px; background: var(--accent); transform: scaleX(0); transform-origin: left; animation: reading-progress linear both; animation-timeline: scroll(root block); pointer-events: none; }
    @keyframes reading-progress { to { transform: scaleX(1); } }
  }
}
