/*
 * Route page styles.
 *
 * Loaded alongside main.css for /routes/{origin-to-destination}.
 */

/* ============ HERO ============ */
.hj-route-hero { padding-top: 64px; padding-bottom: 100px; }
.hj-route-hero-grid {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 80px;
	align-items: center;
	margin-bottom: var(--space-7);
}
.hj-route-name {
	font-family: var(--display);
	font-variation-settings: "opsz" 144;
	font-size: clamp(56px, 9vw, 128px);
	font-weight: 300;
	line-height: 0.92;
	letter-spacing: -0.028em;
	color: var(--cream);
	margin: 0 0 32px 0;
}
.hj-route-name .to {
	display: block;
	font-style: italic;
	color: var(--gold);
	font-weight: 200;
	font-size: 0.55em;
	margin: 8px 0;
}
.hj-route-summary {
	font-family: var(--serif);
	font-size: 20px;
	line-height: 1.6;
	color: var(--cream);
	max-width: 56ch;
	margin: 0 0 40px 0;
}
.hj-route-summary em { color: var(--gold); font-style: italic; }

.hj-route-map {
	padding: 20px;
}
.hj-route-map svg {
	width: 100%;
	max-width: 500px;
	height: auto;
	display: block;
	margin: 0 auto;
}

/* ============ AIRCRAFT GRID ============ */
.hj-route-aircraft-grid {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 1px;
	background: var(--rule);
	border: 1px solid var(--rule);
}
.hj-route-aircraft-grid .hj-card {
	border: none;
	margin: 0;
	background: var(--cream-soft);
}

/* ============ AIRPORTS ============ */
.hj-airports {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 56px;
	margin-top: var(--space-5);
}
.hj-airport-col h3 {
	font-family: var(--display);
	font-variation-settings: "opsz" 96;
	font-size: clamp(28px, 3vw, 32px);
	font-weight: 400;
	line-height: 1;
	margin: 0 0 8px 0;
	letter-spacing: -0.01em;
}
.hj-airport-col h3 em { font-style: italic; color: var(--oxblood); font-weight: 300; }
.hj-airport-col > .role {
	font-family: var(--sans);
	font-size: 12px;
	letter-spacing: 0.24em;
	text-transform: uppercase;
	color: var(--ink-mute);
	font-weight: 600;
	margin-bottom: 32px;
	display: block;
}
.hj-airport-item { padding: 24px 0; border-bottom: 1px solid var(--rule-soft); }
.hj-airport-item:last-child { border-bottom: none; }
.hj-airport-head {
	display: flex;
	justify-content: space-between;
	align-items: baseline;
	margin-bottom: 10px;
	gap: 16px;
	flex-wrap: wrap;
}
.hj-airport-name {
	font-family: var(--display);
	font-size: 22px;
	font-weight: 500;
	color: var(--ink);
	letter-spacing: -0.005em;
}
.hj-airport-code {
	font-family: var(--sans);
	font-size: 12px;
	letter-spacing: 0.22em;
	color: var(--oxblood);
	font-weight: 700;
	background: var(--cream-soft);
	padding: 4px 10px;
	border: 1px solid var(--rule-soft);
}
.hj-airport-desc {
	font-family: var(--serif);
	font-size: 16px;
	line-height: 1.55;
	color: var(--charcoal);
	margin: 0;
}
.hj-airport-desc em { color: var(--oxblood); font-style: italic; }

/* ============ COST IN BANDS ============ */
.hj-cost-wrap {
	background: var(--ink);
	color: var(--cream);
	padding: 56px;
	border: 1px solid var(--gold);
	margin-top: var(--space-5);
}
.hj-cost-row {
	display: grid;
	grid-template-columns: 40px 1.4fr 1fr 1fr;
	gap: 24px;
	padding: 22px 0;
	border-bottom: 1px solid var(--rule-dark);
	align-items: baseline;
}
.hj-cost-row:first-of-type { border-top: 1px solid var(--gold); }
.hj-cost-row:last-of-type { border-bottom: 1px solid var(--gold); }
.hj-cost-row--head {
	padding: 12px 0;
	font-family: var(--sans);
	font-size: 11px;
	letter-spacing: 0.26em;
	text-transform: uppercase;
	color: var(--gold);
	font-weight: 700;
	border-bottom: 1px solid var(--gold);
}
.hj-cost-row--head ~ .hj-cost-row:first-of-type { border-top: none; }
.hj-cost-row .cost-roman {
	font-family: var(--display);
	font-size: 18px;
	color: var(--gold);
	font-style: italic;
	font-weight: 400;
}
.hj-cost-row .cost-class {
	font-family: var(--display);
	font-size: 20px;
	font-weight: 400;
	color: var(--cream);
}
.hj-cost-row .cost-class em {
	display: block;
	font-family: var(--serif);
	font-style: italic;
	font-size: 14px;
	color: var(--cream-mute);
	margin-top: 2px;
	font-weight: 400;
}
.hj-cost-row .cost-price {
	font-family: var(--display);
	font-variation-settings: "opsz" 48;
	font-size: 22px;
	color: var(--cream);
	font-weight: 400;
}
.hj-cost-row .cost-price em { font-style: italic; color: var(--gold); font-weight: 300; }
.hj-cost-row .cost-time {
	font-family: var(--serif);
	font-size: 16px;
	color: var(--cream);
	font-style: italic;
}
.hj-cost-caption {
	font-family: var(--serif);
	font-style: italic;
	font-size: 15px;
	color: var(--cream-mute);
	margin-top: 24px;
	padding-top: 24px;
	border-top: 1px solid var(--rule-dark);
	line-height: 1.6;
}

/* ============ SEASONAL CALENDAR ============ */
.hj-seasonal {
	display: grid;
	grid-template-columns: 1fr 2fr;
	gap: 56px;
	align-items: start;
}
.hj-season-intro h3 {
	font-family: var(--display);
	font-variation-settings: "opsz" 96;
	font-size: 32px;
	font-weight: 300;
	line-height: 1.05;
	color: var(--ink);
	margin: 0 0 20px 0;
	letter-spacing: -0.01em;
}
.hj-season-intro h3 em { font-style: italic; color: var(--oxblood); }
.hj-season-intro p {
	font-family: var(--serif);
	font-size: 17px;
	line-height: 1.6;
	color: var(--charcoal);
	margin: 0 0 16px 0;
}

.hj-season-calendar { border: 1px solid var(--rule); }
.hj-season-month {
	display: grid;
	grid-template-columns: 80px auto 1fr;
	gap: 24px;
	padding: 16px 24px;
	border-bottom: 1px solid var(--rule-soft);
	align-items: baseline;
}
.hj-season-month:last-child { border-bottom: none; }
.hj-season-month--peak { background: rgba(107, 40, 56, 0.06); }
.hj-season-month--high { background: rgba(168, 139, 92, 0.06); }
.hj-season-name {
	font-family: var(--display);
	font-size: 20px;
	font-weight: 500;
	color: var(--ink);
	letter-spacing: -0.005em;
}
.hj-season-tag {
	font-family: var(--sans);
	font-size: 10px;
	letter-spacing: 0.24em;
	text-transform: uppercase;
	font-weight: 700;
	padding: 3px 10px;
	border: 1px solid currentColor;
	white-space: nowrap;
}
.hj-season-tag--peak     { color: var(--oxblood); }
.hj-season-tag--high     { color: var(--gold); }
.hj-season-tag--moderate { color: var(--ink-mute); }
.hj-season-tag--low      { color: var(--ink-mute); opacity: 0.7; }
.hj-season-note {
	font-family: var(--serif);
	font-size: 16px;
	line-height: 1.5;
	color: var(--ink-mute);
	font-style: italic;
}

/* ============ FAQ ============ */
.hj-faq-list { max-width: 900px; }
.hj-faq-item { border-bottom: 1px solid var(--rule); padding: 32px 0; }
.hj-faq-item:last-child { border-bottom: none; }
.hj-faq-item summary {
	font-family: var(--display);
	font-variation-settings: "opsz" 48;
	font-size: 26px;
	font-weight: 500;
	color: var(--ink);
	margin: 0;
	line-height: 1.2;
	letter-spacing: -0.005em;
	cursor: pointer;
	list-style: none;
	display: flex;
	justify-content: space-between;
	align-items: baseline;
	gap: 24px;
}
.hj-faq-item summary::-webkit-details-marker { display: none; }
.hj-faq-item summary::after {
	content: "+";
	font-family: var(--display);
	font-size: 28px;
	font-weight: 300;
	color: var(--oxblood);
	flex-shrink: 0;
	transition: transform var(--dur-fast);
}
.hj-faq-item[open] summary::after { content: "−"; }
.hj-faq-body {
	font-family: var(--serif);
	font-size: 18px;
	line-height: 1.65;
	color: var(--charcoal);
	max-width: 68ch;
	margin-top: 14px;
}

/* ============ RELATED ============ */
.hj-related-grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 1px;
	background: var(--rule-soft);
}
.hj-rel-item {
	padding: 28px 32px;
	background: var(--cream);
	display: block;
	color: inherit;
	transition: background var(--dur-fast);
}
.hj-rel-item:hover { background: var(--cream-soft); }
.hj-rel-item .rel-num {
	font-family: var(--sans);
	font-size: 11px;
	letter-spacing: 0.22em;
	color: var(--oxblood);
	font-weight: 700;
	margin-bottom: 10px;
}
.hj-rel-item .rel-name {
	font-family: var(--display);
	font-variation-settings: "opsz" 48;
	font-size: 22px;
	font-weight: 400;
	color: var(--ink);
	letter-spacing: -0.005em;
	margin-bottom: 4px;
}
.hj-rel-item .rel-name .arrow {
	color: var(--oxblood);
	font-style: italic;
	font-weight: 300;
	margin: 0 8px;
}
.hj-rel-item .rel-time {
	font-family: var(--serif);
	font-size: 14px;
	color: var(--ink-mute);
	font-style: italic;
}

/* ============ Lead paragraph + drop cap (shared with aircraft template) ============ */
.hj-lead-p {
	font-family: var(--serif);
	font-size: 22px;
	line-height: 1.55;
	max-width: var(--measure-body);
	color: var(--charcoal);
	margin: 0 0 28px 0;
}
.hj-lead-p .hj-drop {
	font-size: 68px;
	float: left;
	line-height: 0.85;
	padding-right: 14px;
	padding-top: 6px;
	color: var(--oxblood);
}

/* ============ RESPONSIVE ============ */
@media (max-width: 1100px) {
	.hj-route-hero { padding-top: 32px; padding-bottom: 64px; }
	.hj-route-hero-grid { grid-template-columns: 1fr; gap: 48px; }
	.hj-route-aircraft-grid { grid-template-columns: 1fr; }
	.hj-airports { grid-template-columns: 1fr; gap: 48px; }
	.hj-cost-wrap { padding: 36px 28px; }
	.hj-cost-row { grid-template-columns: 30px 1fr auto; gap: 12px; }
	.hj-cost-row .cost-time { display: none; }
	.hj-cost-row--head { grid-template-columns: 30px 1fr auto; }
	.hj-seasonal { grid-template-columns: 1fr; gap: 40px; }
	.hj-related-grid { grid-template-columns: 1fr 1fr; }
}

@media (max-width: 620px) {
	.hj-route-name { font-size: 56px; }
	.hj-related-grid { grid-template-columns: 1fr; }
	.hj-cost-wrap { padding: 28px 20px; }
	.hj-cost-row { grid-template-columns: 1fr auto; gap: 8px; }
	.hj-cost-row .cost-roman { display: none; }
}
