/* Tiffany Towncar — site chrome, homepage sections and utilities. Tokens come from theme.json. */

[hidden] { display: none !important; }

:where(a, button, input, select, textarea, summary, [tabindex]):focus-visible {
	outline: 3px solid var(--wp--preset--color--brand);
	outline-offset: 2px;
}
:where(.site-header, .site-footer, .hero, .section--navy, .section--brand, .ttc-qf__quote) :where(a, button, input, select, textarea, summary, [tabindex]):focus-visible {
	outline-color: var(--wp--preset--color--gold);
}

.eyebrow {
	margin: 0 0 8px;
	font-size: 13px;
	font-weight: 700;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--wp--preset--color--brand);
}
.has-navy-background-color .eyebrow,
.has-brand-background-color .eyebrow {
	color: var(--wp--preset--color--gold);
}

/* ---------- Header ---------- */
/* The phone bar and the header stay pinned together. */
.wp-site-blocks > .wp-block-template-part:has(> .site-header) {
	position: sticky;
	top: 0;
	z-index: 50;
	display: flex;
	flex-direction: column;
}
body.admin-bar .wp-site-blocks > .wp-block-template-part:has(> .site-header) { top: 32px; }
@media (max-width: 782px) { body.admin-bar .wp-site-blocks > .wp-block-template-part:has(> .site-header) { top: 46px; } }
@media (max-width: 600px) { body.admin-bar .wp-site-blocks > .wp-block-template-part:has(> .site-header) { top: 0; } }
.site-header {
	background: var(--wp--preset--color--navy);
	color: var(--wp--preset--color--white);
	padding-block: 12px;
}
.site-header__inner { gap: 16px 32px; }
.site-header__logo { margin: 0; }
.site-header .site-header__logo img { display: block; height: 63px; width: auto; }
.site-header__logo--side { display: none; }
.site-header__nav { flex: 1 1 auto; }
.site-header__nav a { color: var(--wp--preset--color--white); }
.site-header__nav a { text-decoration: none; }
.site-header__nav a:hover { text-decoration: underline; text-underline-offset: 4px; }
/* The page you're on: a gold bar under its menu item (functions.php adds aria-current). */
.site-header__nav a[aria-current="page"] { text-decoration: underline; text-decoration-color: var(--wp--preset--color--gold); text-decoration-thickness: 3px; text-underline-offset: 8px; }
/* Below 740px: the ☰ button (menu.js) slides the header's menu down from under it and turns into ✕; ✕ slides it back up.
   Without the script the button stays hidden and the menu stays in the header. */
.site-menu-toggle { display: none; }
@media (max-width: 739px) {
	.site-header.has-menu-toggle { position: relative; }
	.site-header.has-menu-toggle .site-header__inner { position: static; }
	/* At the right edge, where core's menu button was (two classes: beats the flex layout's margin reset). */
	.site-header__inner > .site-menu-toggle { position: relative; display: block; flex: none; width: 44px; height: 44px; margin-left: auto; padding: 0; border: 0; background: transparent; color: var(--wp--preset--color--white); cursor: pointer; }
	/* Two bars: apart as ☰, turned into ✕ while the menu is open. */
	.site-menu-toggle__bar { position: absolute; left: 12px; width: 20px; height: 2px; border-radius: 2px; background: currentColor; }
	.site-menu-toggle__bar:first-child { top: 16px; }
	.site-menu-toggle__bar:last-child { top: 26px; }
	.site-header.is-menu-open .site-menu-toggle__bar { top: 21px; }
	.site-header.is-menu-open .site-menu-toggle__bar:first-child { transform: rotate(45deg); }
	.site-header.is-menu-open .site-menu-toggle__bar:last-child { transform: rotate(-45deg); }
	/* The menu (the nav itself: core also gives its list the nav's class): a window under the header (room below for its shadow) that the list slides down into and back up out of;
	   hidden once closed, so its links leave the tab order. */
	.site-header.has-menu-toggle nav.site-header__nav { position: absolute; top: 100%; left: 0; right: 0; z-index: 60; overflow: hidden; padding-bottom: 32px; pointer-events: none; visibility: hidden; }
	.site-header.is-menu-open nav.site-header__nav { visibility: visible; }
	.site-header.has-menu-toggle .site-header__nav .wp-block-navigation__container { flex-direction: column; flex-wrap: nowrap; align-items: stretch; gap: 0; margin: 0; padding: 4px var(--wp--style--root--padding-right) 16px var(--wp--style--root--padding-left); border-top: 1px solid rgba(255, 255, 255, 0.15); background: var(--wp--preset--color--navy); box-shadow: 0 16px 32px rgba(0, 22, 52, 0.35); pointer-events: auto; transform: translateY(-105%); }
	.site-header.is-menu-open .site-header__nav .wp-block-navigation__container { transform: none; }
	/* Motion only once menu.js has set the menu up (is-menu-ready, a frame later): never as the page loads. */
	.site-header.is-menu-ready .site-menu-toggle__bar { transition: top 0.25s ease, transform 0.25s ease; }
	.site-header.is-menu-ready nav.site-header__nav { transition: visibility 0s linear 0.3s; }
	.site-header.is-menu-ready.is-menu-open nav.site-header__nav { transition-delay: 0s; }
	.site-header.is-menu-ready .site-header__nav .wp-block-navigation__container { transition: transform 0.3s ease; }
	.site-header.has-menu-toggle .site-header__nav .wp-block-navigation-item { width: 100%; border-bottom: 1px solid rgba(255, 255, 255, 0.12); }
	.site-header.has-menu-toggle .site-header__nav .wp-block-navigation-item:last-child { border-bottom: 0; }
	.site-header.has-menu-toggle .site-header__nav .wp-block-navigation-item__content { display: flex; align-items: center; width: 100%; min-height: 52px; font-size: 18px; font-weight: 700; }
}
@media (max-width: 739px) and (prefers-reduced-motion: reduce) {
	.site-header.is-menu-ready .site-menu-toggle__bar,
	.site-header.is-menu-ready .site-header__nav .wp-block-navigation__container { transition: none; }
}
.site-header__actions { gap: 12px; }
.site-header__actions .wp-block-button__link { min-height: 44px; display: inline-flex; align-items: center; font-size: 15px; }
/* Below 880px Book now would drop to a row of its own under the menu: it goes (the Book links on the page remain). */
@media (max-width: 879px) { .site-header .site-header__actions { display: none; } }
/* 740–767px: the side logo and the whole menu share one row, with room for a desktop scrollbar. */
@media (min-width: 740px) and (max-width: 767px) { .site-header__nav .wp-block-navigation__container { gap: 16px; } }
@media (max-width: 767px) {
	.site-header .site-header__logo img { height: 40px; }
	.site-header__logo--stacked { display: none; }
	.site-header__logo--side { display: block; }
	/* Logo and menu button on one row down to 375px phones (32px pushed the button onto a second row). */
	.site-header__inner { column-gap: 12px; }
	/* Phones: only the logo row stays pinned and the phone bar above it scrolls away, since the Call bar at the
	   bottom has both numbers. The details step hides that Call bar, so there the phone bar stays pinned too. */
	html:not(.ttc-details-open) .wp-site-blocks > .wp-block-template-part:has(> .site-header) { display: contents; }
	html:not(.ttc-details-open) .site-header { position: sticky; top: 0; z-index: 50; }
	html:not(.ttc-details-open) body.admin-bar .site-header { top: 46px; }
}
@media (max-width: 600px) { html:not(.ttc-details-open) body.admin-bar .site-header { top: 0; } }
/* Logo and menu button on one row on 360px phones too (the 40px logo pushed the button onto a second row). */
@media (max-width: 379px) { .site-header .site-header__logo img { height: 32px; } }

/* ---------- Phone bar ---------- */
.phone-toll-free .wp-block-button__link::before { content: "Toll free"; margin-right: 0.4em; font-weight: 600; color: var(--wp--preset--color--mist); }
.site-phones {
	background: var(--wp--custom--shade--navy-deep);
	box-shadow: inset 0 -1px 0 rgba(255, 255, 255, 0.12);
}
.site-phones .site-phones__list { gap: 0 24px; }
.site-phones .wp-block-button__link,
.site-phones .wp-block-button__link:hover {
	display: inline-flex;
	align-items: center;
	min-height: 40px;
	padding: 0;
	border: 0;
	border-radius: 0;
	background: transparent;
	color: var(--wp--preset--color--white);
	font-size: 14px;
	font-weight: 800;
}
.site-phones .wp-block-button__link:hover { text-decoration: underline; text-underline-offset: 4px; }
.site-phones__local .wp-block-button__link::before {
	content: "";
	width: 16px;
	height: 16px;
	margin-right: 8px;
	background: url("../images/icons/phone.svg") center / contain no-repeat;
}
@media (max-width: 767px) {
	/* The toll-free side is the longer one ("Toll free 1-888-…"): it gets the wider column and stays on one line. */
	.site-phones .site-phones__list { display: grid; grid-template-columns: minmax(0, 2fr) minmax(0, 3fr); gap: 0; }
	.site-phones .wp-block-button__link,
	.site-phones .wp-block-button__link:hover { width: 100%; min-height: 44px; justify-content: center; white-space: nowrap; }
	.site-phones__local { border-right: 1px solid rgba(255, 255, 255, 0.15); }
	.site-phones__local .wp-block-button__link::before { display: none; }
}

html.has-modal-open .site-mobile-bar { display: none !important; }
html.ttc-details-open .site-mobile-bar { display: none !important; }
html.ttc-rates-selected .site-mobile-bar { display: none !important; }
/* The details step's own Book bar shows below 900px: keep focused fields clear of it. */
@media (max-width: 899px) {
	html.ttc-details-open { scroll-padding-bottom: 96px; }
}
html { scroll-padding-top: 136px; }
/* Phones: the header's height, so a bar pinned further down (the Book your ride vehicle row) sits right under it. */
@media (max-width: 767px) { body { --ttc-sticky-top: 68px; } }
@media (min-width: 601px) and (max-width: 767px) { body.admin-bar { --ttc-sticky-top: 114px; } }
@media (max-width: 767px) {
	html { scroll-padding-top: 84px; scroll-padding-bottom: 96px; }
	html.ttc-details-open { scroll-padding-top: 128px; }
}
@media (max-width: 359px) { .site-phones .wp-block-button__link { font-size: 13px; } }

/* ---------- Mobile Call / Book bar ---------- */
.site-mobile-bar { display: none; }
@media (max-width: 767px) {
	.site-mobile-bar {
		display: block;
		position: fixed;
		left: 0;
		right: 0;
		bottom: 0;
		z-index: 60;
		margin: 0 !important;
		padding: 10px 16px calc(14px + env(safe-area-inset-bottom));
		background: var(--wp--preset--color--white);
		border-top: 1px solid var(--wp--preset--color--border);
		box-shadow: 0 -8px 24px rgba(0, 33, 71, 0.12);
	}
	.site-mobile-bar .site-mobile-bar__actions { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
	.site-mobile-bar .wp-block-button { width: 100%; }
	.site-mobile-bar .wp-block-button__link { width: 100%; min-height: 50px; display: flex; align-items: center; justify-content: center; }
	.site-mobile-bar .is-style-outline .wp-block-button__link {
		background: var(--wp--preset--color--white);
		color: var(--wp--preset--color--brand);
		border: 1px solid var(--wp--preset--color--brand);
	}
	/* Call only where the page itself books: Rates & Reservations (Book would reload it and wipe the form) and the home page. */
	body:has(.ttc-quote__route[data-target="0"]) .site-mobile-bar__actions .wp-block-button:not(.is-style-outline),
	body.home .site-mobile-bar__actions .wp-block-button:not(.is-style-outline) { display: none; }
	body:has(.ttc-quote__route[data-target="0"]) .site-mobile-bar .site-mobile-bar__actions,
	body.home .site-mobile-bar .site-mobile-bar__actions { grid-template-columns: minmax(0, 1fr); }
	body { padding-bottom: calc(84px + env(safe-area-inset-bottom)); }
}

/* ---------- Call panel: the mobile Call button offers both numbers ---------- */
.site-mobile-bar .call-panel-fallback { display: none; }
@supports not selector(:popover-open) {
	.site-mobile-bar .call-panel-toggle { display: none; }
	.site-mobile-bar .call-panel-fallback { display: block; }
	.call-panel { display: none; }
}
.site-mobile-bar .call-panel {
	position: fixed;
	inset: auto 0 0 0;
	width: auto;
	max-width: none;
	margin: 0;
	border: 0;
	border-radius: 18px 18px 0 0;
	padding: 20px 16px calc(24px + env(safe-area-inset-bottom));
	background: var(--wp--preset--color--white);
	color: var(--wp--preset--color--ink);
	box-shadow: 0 -8px 24px rgba(0, 33, 71, 0.2);
}
.call-panel::backdrop { background: rgba(0, 33, 71, 0.55); }
.call-panel .call-panel__title { margin: 0 0 12px; font-size: 18px; font-weight: 800; }
.call-panel .call-panel__numbers { gap: 12px; }
.call-panel .wp-block-button { width: 100%; }
.call-panel .call-panel__numbers .wp-block-button__link {
	display: flex;
	justify-content: space-between;
	align-items: center;
	width: 100%;
	min-height: 56px;
	padding: 0 16px;
	border: 1px solid var(--wp--preset--color--brand);
	border-radius: 12px;
	background: var(--wp--preset--color--white);
	color: var(--wp--preset--color--brand);
	font-size: 18px;
	font-weight: 800;
}
.call-panel__local .wp-block-button__link::before { content: "Orlando"; }
.call-panel .call-panel__numbers .wp-block-button__link::before { margin: 0; font-size: 14px; font-weight: 600; color: var(--wp--preset--color--muted); }
.call-panel .call-panel__actions { margin-top: 4px; }
.call-panel .call-panel-close .wp-block-button__link {
	width: 100%;
	min-height: 48px;
	border: 0;
	background: transparent;
	color: var(--wp--preset--color--muted);
	font-size: 15px;
	font-weight: 700;
}

/* ---------- Footer ---------- */
.wp-site-blocks > .wp-block-template-part:has(> .site-footer) { margin-block-start: 0; }
.site-footer {
	background: var(--wp--preset--color--navy);
	color: var(--wp--preset--color--mist);
	padding-block: 56px 28px;
	font-size: 15px;
	margin-block-start: 0;
}
.site-footer a { color: var(--wp--preset--color--mist); text-decoration: none; }
.site-footer a:hover { color: var(--wp--preset--color--white); text-decoration: underline; }
.site-footer .site-footer__logo img { height: 63px; width: auto; }
.site-footer__heading { font-size: 15px; font-weight: 800; color: var(--wp--preset--color--white); margin: 0 0 10px; letter-spacing: 0; }
.site-footer__links { list-style: none; padding: 0; margin: 0; display: grid; gap: 10px; }
/* Cancel the 24px block gap and the 11px the 44px tap targets centre the text down, so the first item sits 10px under the heading like Quick links. */
.site-footer .footer-contact-list { gap: 0; margin-block-start: -11px; }
.site-footer .footer-contact .wp-block-button__link {
	background: transparent;
	color: var(--wp--preset--color--mist);
	padding: 0;
	border: 0;
	border-radius: 0;
	font-size: inherit;
	font-weight: 400;
	min-height: 44px;
	display: inline-flex;
	align-items: center;
	text-align: left;
}
.site-footer .footer-contact--phone .wp-block-button__link,
.site-footer .footer-contact.phone-toll-free .wp-block-button__link { font-weight: 700; color: var(--wp--preset--color--white); }
/* The headset icon says toll free here; the label stays for screen readers. */
.site-footer .phone-toll-free .wp-block-button__link { position: relative; }
.site-footer .phone-toll-free .wp-block-button__link::before { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.site-footer .footer-contact .wp-block-button__link:hover { background: transparent; color: var(--wp--preset--color--white); text-decoration: underline; }
.site-footer .footer-contact { display: flex; align-items: center; gap: 8px; }
.site-footer .footer-contact::before {
	content: "";
	flex: none;
	width: 16px;
	height: 16px;
	background: center / contain no-repeat;
}
.site-footer .footer-contact--phone::before { background-image: url("../images/icons/phone.svg"); }
.site-footer .footer-contact.phone-toll-free::before { background-image: url("../images/icons/toll-free.svg"); }
.site-footer .footer-contact--email::before { background-image: url("../images/icons/mail.svg"); }
/* Under the logo: "Follow us" and round outlined icons. */
.site-footer .footer-follow { margin: 28px 0 10px; font-size: 12px; font-weight: 800; letter-spacing: 0.08em; text-transform: uppercase; color: var(--wp--preset--color--white); }
.site-footer .footer-social { gap: 12px; margin: 0; padding: 0; }
.site-footer .footer-social .wp-social-link { color: var(--wp--preset--color--mist); }
.site-footer .footer-social .wp-social-link a { display: inline-flex; align-items: center; justify-content: center; width: 44px; height: 44px; padding: 0; border: 1px solid rgba(195, 209, 232, 0.45); border-radius: 999px; }
.site-footer .footer-social .wp-social-link svg { width: 22px; height: 22px; }
.site-footer .footer-social .wp-social-link:hover { color: var(--wp--preset--color--white); }
.site-footer .footer-social .wp-social-link a:hover { border-color: var(--wp--preset--color--white); }
/* Last in Contact: a gold link to Reservations. */
.site-footer .footer-book a { color: var(--wp--preset--color--gold); font-weight: 700; }
.site-footer .footer-book a:hover { color: var(--wp--preset--color--gold); }
.site-footer .footer-location { display: flex; align-items: center; min-height: 44px; margin: 0; }
.footer-location::before {
	content: "";
	flex: none;
	width: 16px;
	height: 16px;
	margin-right: 8px;
	background: url("../images/icons/location.svg") center / contain no-repeat;
}
.site-footer__bottom {
	border-top: 1px solid rgba(255, 255, 255, 0.12);
	margin-top: 40px;
	padding-top: 20px;
	font-size: 13px;
}
.site-footer__bottom p { margin: 0; }
.site-footer__bottom { gap: 6px 18px; }
.site-footer__legal { display: flex; flex-wrap: wrap; gap: 6px 18px; }
.site-footer .site-footer__legal a { text-decoration: underline; text-underline-offset: 3px; }
/* Phones: © on its own line, the legal links together under it. */
@media (max-width: 599px) { .site-footer__bottom > p:first-child { flex-basis: 100%; } }

/* ---------- Templates ---------- */
/* The sticky header already marks the top, and the navy footer has its own padding: 40px above, 64px before the footer. */
.page-main { margin-block-start: 0; padding-block: 40px 64px; }
@media (max-width: 767px) {
	.page-main { padding-block: 24px 48px; }
}
/* Kept in the page for search engines and screen readers, hidden on screen (every page title; blog posts keep theirs). */
.visually-hidden {
	position: absolute !important;
	width: 1px;
	height: 1px;
	margin: -1px;
	padding: 0;
	overflow: hidden;
	clip: rect(0 0 0 0);
	white-space: nowrap;
	border: 0;
}
.page-main > .visually-hidden + * { margin-block-start: 0; }
/* Pages and posts read in a column of about 70 characters (the 760px default ran past 100). In px, not ch: ch would follow each heading's own font size. */
.page-main:has(> .wp-block-post-content) { --wp--style--global--content-size: 650px; }
/* The title lines up with that column (the page group would make it 1200px wide). */
.page-main:has(> .wp-block-post-content) > .wp-block-post-title { max-width: var(--wp--style--global--content-size); }
.page-main > [hidden] + * { margin-block-start: 0; }
.page-main > .wp-block-post-title,
.page-main > h1 { margin-top: 0; }
.front-main > .wp-block-post-content > :first-child { margin-top: 0; }
/* Migrated pages and posts carry raw <img> tags at full size (About Us banner is 2000px): keep them inside the column. */
.wp-block-post-content img { max-width: 100%; height: auto; }
.wp-block-post-content a[href^="tel:"] { white-space: nowrap; }
/* Older posts (classic editor): an aligned image sits inside a paragraph, or in a [caption] box. The block layout only
   floats aligned blocks that are direct children, so these need their own float. On phones they stack, centered. */
.wp-block-post-content :is(img, .wp-caption).alignleft { float: left; margin: 4px 24px 12px 0; }
.wp-block-post-content :is(img, .wp-caption).alignright { float: right; margin: 4px 0 12px 24px; }
.wp-block-post-content :is(img, .wp-caption).aligncenter { display: block; margin-inline: auto; }
.wp-block-post-content .wp-caption { max-width: 100%; }
.wp-block-post-content .wp-caption-text { margin: 6px 0 0; font-size: 14px; color: var(--wp--preset--color--muted); }
.wp-block-post-content::after { content: ""; display: block; clear: both; }
/* Each image starts its own paragraph's row, so two in a row never squeeze the text between them. */
.wp-block-post-content > :is(p:has(> :is(img, .wp-caption):is(.alignleft, .alignright)), h2, h3, h4, h5, h6) { clear: both; }
@media (max-width: 599px) {
	.wp-block-post-content :is(img, .wp-caption):is(.alignleft, .alignright) { float: none; display: block; margin: 16px auto; }
}
.wp-block-button.is-style-outline .wp-block-button__link {
	background: transparent;
	color: var(--wp--preset--color--brand);
	border: 1px solid currentColor;
}
.post-card { gap: 10px; }
.post-card__date { font-size: 13px; font-weight: 700; color: var(--wp--preset--color--muted); }
.post-card__title { margin: 0; font-size: 19px; line-height: 1.3; }
.post-card__title a { color: var(--wp--preset--color--ink); text-decoration: none; }
.post-card__title a:hover { color: var(--wp--preset--color--brand); text-decoration: underline; }
.post-card .wp-block-post-featured-image { margin: 0; background: var(--wp--preset--color--tint); border-radius: 14px; }
/* Fill the card even when the only stored size is small (old X-theme crops): the card's flex column would shrink it. */
.post-card .wp-block-post-featured-image,
.news-feature__item .wp-block-post-featured-image { align-self: stretch; width: 100%; }
.post-card .wp-block-post-featured-image:not(.news-image--fallback) img,
.news-feature__item .wp-block-post-featured-image:not(.news-image--fallback) img { width: 100%; }
.not-found { padding-block: 40px; }

/* ---------- News: the latest post as a feature, then two columns beside a sticky booking sidebar ---------- */
.news-feature .wp-block-post-template { margin: 0; padding: 0; list-style: none; }
.news-feature__item { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: 40px; align-items: center; }
.news-feature__item .wp-block-post-featured-image { margin: 0; }
.news-image,
.news-image img { border-radius: 14px; }
.news-feature__text { gap: 14px; }
.news-feature__meta { gap: 8px; align-items: center; }
.news-latest { margin: 0; padding: 2px 8px; border-radius: 999px; background: var(--wp--preset--color--gold); color: var(--wp--preset--color--navy); font-size: 11px; font-weight: 800; letter-spacing: 0.04em; text-transform: uppercase; }
.news-feature__title { margin: 0; font-size: clamp(26px, 3vw, 36px); line-height: 1.15; }
.news-feature__title a { color: var(--wp--preset--color--ink); text-decoration: none; }
.news-feature__title a:hover { color: var(--wp--preset--color--brand); text-decoration: underline; }
.news-feature__excerpt .wp-block-post-excerpt__excerpt { margin: 0; font-size: 17px; line-height: 1.55; color: var(--wp--preset--color--muted); }
.news-feature__excerpt .wp-block-post-excerpt__more-text { margin: 10px 0 0; }
.news-feature__excerpt .wp-block-post-excerpt__more-link { display: inline-flex; align-items: center; min-height: 44px; font-weight: 700; color: var(--wp--preset--color--brand); text-decoration: underline; text-underline-offset: 3px; }
.news-body > * { margin-block: 0; }
.news-body { display: grid; grid-template-columns: minmax(0, 8fr) minmax(0, 4fr); gap: 48px; align-items: start; margin-top: 56px; padding-top: 40px; border-top: 1px solid var(--wp--preset--color--border); }
body.paged .news-body { margin-top: 0; padding-top: 0; border-top: 0; }
.news-main .wp-block-post-template { gap: 40px 28px; }
.post-card__excerpt .wp-block-post-excerpt__excerpt { margin: 0; font-size: 15px; line-height: 1.55; color: var(--wp--preset--color--muted); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.news-pager { align-self: stretch; width: 100%; margin-top: 48px; padding-top: 24px; border-top: 1px solid var(--wp--preset--color--border); font-size: 14px; }
.wp-block-query-pagination.news-pager { display: grid; grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr); align-items: center; gap: 12px; }
.news-pager .wp-block-query-pagination-previous { grid-column: 1; justify-self: start; }
.news-pager .wp-block-query-pagination-numbers { grid-column: 2; display: flex; gap: 6px; }
.news-pager .wp-block-query-pagination-next { grid-column: 3; justify-self: end; }
.news-pager .page-numbers { display: inline-flex; align-items: center; justify-content: center; min-width: 40px; min-height: 40px; border-radius: 10px; font-weight: 700; color: var(--wp--preset--color--ink); text-decoration: none; }
.news-pager .page-numbers.current { background: var(--wp--preset--color--brand); color: var(--wp--preset--color--white); }
.news-pager a.page-numbers:hover { background: var(--wp--preset--color--tint); }
.news-pager .wp-block-query-pagination-previous,
.news-pager .wp-block-query-pagination-next { display: inline-flex; align-items: center; min-height: 44px; padding: 0 18px; border: 1px solid var(--wp--preset--color--border); border-radius: 12px; font-weight: 700; color: var(--wp--preset--color--ink); text-decoration: none; }
.news-side { position: sticky; top: 24px; gap: 20px; }
.news-side > * { align-self: stretch; }
.news-book { gap: 12px; padding: 24px; border-radius: 16px; background: var(--wp--preset--color--navy); color: var(--wp--preset--color--mist); }
.news-book__eyebrow { margin: 0; font-size: 12px; font-weight: 800; letter-spacing: 0.08em; text-transform: uppercase; color: var(--wp--preset--color--gold); }
.news-book__lead { margin: 0; font-size: 22px; font-weight: 800; line-height: 1.25; color: var(--wp--preset--color--white); }
.news-book__buttons,
.news-book__button { width: 100%; }
.news-book__button .wp-block-button__link { display: flex; align-items: center; justify-content: center; width: 100%; min-height: 48px; border-radius: 12px; background: var(--wp--preset--color--gold); color: var(--wp--preset--color--navy); font-weight: 800; }
.news-book__call { align-self: center; margin: 0; text-align: center; }
.news-book__call a { display: inline-flex; align-items: center; min-height: 44px; color: var(--wp--preset--color--white); font-weight: 700; text-decoration: none; white-space: nowrap; }
.news-book__call a:hover { text-decoration: underline; }
/* Posts without a photo: navy tile with the logo and a gold edge (functions.php renders it). */
.wp-block-post-featured-image.news-image--fallback { position: relative; display: flex; align-self: stretch; width: 100%; margin: 0; overflow: hidden; background: linear-gradient(135deg, var(--wp--custom--shade--navy-deep), var(--wp--preset--color--navy)); }
.news-image--fallback a { display: flex; align-items: center; justify-content: center; width: 100%; }
.news-image--fallback img { width: auto; max-width: 60%; height: auto; max-height: 64px; border-radius: 0; }
.news-image--fallback::after { content: ""; position: absolute; inset: auto 0 0; height: 4px; background: var(--wp--preset--color--gold); }
/* Phones and tablets: one column; the booking card sits after the second post, Popular rides stays on desktop. */
@media (max-width: 899px) {
	.news-feature__item { grid-template-columns: minmax(0, 1fr); gap: 12px; }
	.news-body { display: flex; flex-direction: column; gap: 28px; margin-top: 36px; padding-top: 28px; }
	.news-main,
	.news-main > .wp-block-post-template { display: contents; }
	.news-main > .wp-block-post-template > li { order: 3; }
	.news-main > .wp-block-post-template > li:nth-child(-n+2) { order: 1; }
	.news-side { order: 2; position: static; }
	.news-pager { order: 4; margin-top: 4px; }
	.news-pager .wp-block-query-pagination-previous,
	.news-pager .wp-block-query-pagination-next { padding: 0 14px; }
	.news-side .ttc-popular { display: none; }
}

/* ---------- Homepage sections ---------- */
.section { padding-block: var(--wp--preset--spacing--60); margin-block: 0; }
.wp-block-post-content > .section + .section,
.wp-block-post-content > .hero + .section { margin-block-start: 0; }
.section--surface { background: var(--wp--preset--color--surface); --ttc-vehicle-bar-bg: var(--wp--preset--color--surface); }
/* Same background, no visible edge: one section's padding is the whole gap (reviews, then Book your ride). */
.wp-block-post-content > .section--surface + .section--surface { padding-top: 0; }

/* ---------- Award band (under the hero; patterns/award.php) ---------- */
.award-band { padding-block: 40px; margin-block: 0; background: var(--wp--preset--color--white); border-bottom: 1px solid var(--wp--preset--color--border); }
.wp-block-post-content > .award-band,
.wp-block-post-content > .award-band + .section { margin-block-start: 0; }
.award-band__inner { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: 32px; align-items: center; }
.award-band__plaque { margin: 0; }
.award-band__plaque img { display: block; width: 116px; height: auto; border-radius: 6px; box-shadow: 0 10px 28px rgba(0, 33, 71, 0.28); }
.award-band__text .eyebrow { margin: 0; }
.award-band__title { margin: 6px 0 8px; font-size: 30px; line-height: 1.15; }
.award-band__sub { margin: 0; max-width: 620px; font-size: 16px; color: var(--wp--preset--color--muted); }
.award-band__link { margin: 10px 0 0; font-weight: 800; }
/* The Google badge past a divider; on its own (no plaque set) it sits in the middle of the band. */
.award-band__google { align-self: stretch; display: flex; align-items: center; padding-left: 32px; border-left: 1px solid var(--wp--preset--color--border); }
.award-band__google:only-child { grid-column: 1 / -1; justify-content: center; padding-left: 0; border-left: 0; }
.award-band__google > .google-review-badge { flex: 0 0 220px; }
@media (max-width: 699px) {
	.award-band { padding-block: 32px; }
	.award-band__inner { grid-template-columns: auto minmax(0, 1fr); gap: 16px 18px; }
	.award-band__title { font-size: 22px; }
	.award-band__sub { font-size: 15px; }
	/* Phones: the divider runs under the award text, the badge centered below it. */
	.award-band__google { grid-column: 1 / -1; justify-content: center; padding: 18px 0 0; border-left: 0; border-top: 1px solid var(--wp--preset--color--border); }
	.award-band__google:only-child { padding-top: 0; border-top: 0; }
}

/* ---------- Google reviews badge (ttc_theme_google_badge(); Google's own colors are theme.json custom.google) ---------- */
/* The guideline style (google.html), the date at 11px in Google's grey so it reads (4.65:1; the source's 9px light grey was 2.4:1). */
.google-review-badge {
	font-family: -apple-system, BlinkMacSystemFont, "SF Pro Text", Roboto, Helvetica, sans-serif;
	background: var(--wp--preset--color--white);
	border: 1px solid var(--wp--custom--google--border);
	border-radius: 12px;
	padding: 20px;
	width: 100%;
	max-width: 220px;
	box-sizing: border-box;
	display: flex;
	flex-direction: column;
	box-shadow: 0 4px 12px rgba(0, 0, 0, 0.03);
}
.google-review-badge .badge-brand { display: flex; align-items: center; gap: 6px; margin-bottom: 10px; }
.google-review-badge .google-g-logo { flex-shrink: 0; }
.google-review-badge .brand-text { font-size: 13px; font-weight: 500; color: var(--wp--custom--google--label); }
.google-review-badge .badge-rating { display: flex; align-items: center; gap: 8px; margin-bottom: 12px; }
.google-review-badge .rating-number { font-size: 26px; font-weight: 700; color: var(--wp--custom--google--text); line-height: 1; }
.google-review-badge .rating-stars { display: flex; gap: 2px; color: var(--wp--custom--google--star-empty); font-size: 16px; line-height: 1; }
.google-review-badge .star.filled { color: var(--wp--custom--google--star); }
.google-review-badge .badge-footer { display: flex; flex-direction: column; gap: 4px; }
.google-review-badge .review-count a { font-size: 12px; color: var(--wp--custom--google--link); text-decoration: none; font-weight: 500; display: inline-block; padding-block: 14px; margin-block: -14px; }
.google-review-badge .review-count a:hover { text-decoration: underline; }
.google-review-badge .as-of-date { font-size: 11px; color: var(--wp--custom--google--meta); }
.section--navy { background: var(--wp--preset--color--navy); color: var(--wp--preset--color--white); }
/* Brand and navy are one color now: the CTA band takes the deeper navy so it stays apart from the navy footer under it. */
.section--brand { background: var(--wp--custom--shade--navy-deep); color: var(--wp--preset--color--white); }
.section--navy .eyebrow,
.section--brand .eyebrow,
.hero .eyebrow { color: var(--wp--preset--color--gold); }
.section-head { margin-bottom: 28px; padding-top: 8px; }
.section-head h2 { margin: 0; }
.section-head p:not(.eyebrow) { margin: 8px 0 0; font-size: 17px; color: var(--wp--preset--color--muted); }

/* Hero */
.hero {
	background:
		linear-gradient(90deg, rgba(0, 33, 71, 0.94) 0%, rgba(0, 33, 71, 0.78) 38%, rgba(0, 33, 71, 0.15) 68%, rgba(0, 33, 71, 0) 100%),
		url("../images/hero-suv.jpg") right center / cover no-repeat,
		var(--wp--preset--color--navy);
	color: var(--wp--preset--color--white);
	padding-block: 96px 104px;
	margin-block: 0;
}
.hero__copy { max-width: 640px; margin-left: 0; }
.hero__buttons { margin-top: 28px; gap: 12px; }
.hero__buttons .wp-block-button__link { min-height: 50px; display: inline-flex; align-items: center; }
.hero__buttons .is-style-outline .wp-block-button__link { color: var(--wp--preset--color--white); border: 1px solid rgba(255, 255, 255, 0.55); background: transparent; }
.hero h1 { color: var(--wp--preset--color--white); margin: 0; }
.hero .ttc-from-price { margin-top: 20px; color: var(--wp--preset--color--sky); }
.hero .ttc-from-price strong { color: var(--wp--preset--color--white); }
.hero__rating { margin: 20px 0 0; font-size: 15px; font-weight: 600; }
.hero__rating:empty { display: none; }
/* Two columns filled top to bottom: the hero's first three ticks on the left, the three complimentary ones on the right. */
.checklist {
	list-style: none;
	padding: 0;
	margin: 28px 0 0;
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	grid-template-rows: repeat(3, auto);
	grid-auto-flow: column;
	gap: 14px 24px;
}
.checklist li { position: relative; padding-left: 32px; }
.checklist li::before {
	content: "";
	position: absolute;
	left: 0;
	top: 1px;
	width: 22px;
	height: 22px;
	background: url("../images/icons/check.svg") center / contain no-repeat;
}
@media (max-width: 781px) {
	/* Phones: the photo sits behind the whole hero under a navy tint that deepens down the page, so the text reads and the
	   heading starts right under the header: Book, the ticks and the award band's top all fit on the first screen. */
	.hero {
		background:
			linear-gradient(180deg, rgba(0, 33, 71, 0.55) 0%, rgba(0, 33, 71, 0.82) 45%, var(--wp--preset--color--navy) 85%),
			url("../images/hero-suv-960.jpg") 70% top / cover no-repeat,
			var(--wp--preset--color--navy);
		padding-block: 28px;
	}
	.hero .eyebrow,
	.hero h1,
	.hero .ttc-from-price { text-shadow: 0 1px 12px rgba(0, 33, 71, 0.9); }
	.hero .eyebrow { margin: 0; }
	.hero h1 { margin-top: 6px; font-size: 34px; line-height: 1.12; }
	.hero .ttc-from-price { margin-top: 12px; font-size: 17px; line-height: 1.45; }
	.hero__rating { margin-top: 10px; font-size: 14px; }
	.hero__buttons { margin-top: 18px; }
	.hero__buttons .wp-block-button__link { min-height: 48px; }
	.hero .eyebrow { font-size: 12px; letter-spacing: 0.08em; }
	/* Phones: one tick per line, in list order, a little smaller than on wide screens. */
	.checklist { grid-template-columns: minmax(0, 1fr); grid-template-rows: none; grid-auto-flow: row; margin-top: 20px; gap: 8px; font-size: 15px; }
	.checklist li { padding-left: 28px; }
	.checklist li::before { top: 2px; width: 18px; height: 18px; }
}

/* Why Tiffany */
/* Popular destinations (navy band before the fleet) */
.destinations__head { gap: 16px; margin-bottom: 32px; }
.destinations__head .section-head { margin: 0; }
.destinations__lede { margin: 12px 0 0; max-width: 640px; font-size: 17px; }
.section--navy .section-head p:not(.eyebrow) { color: var(--wp--preset--color--mist); }
.destinations__all { margin: 0; }
.destinations__all a { font-weight: 700; color: var(--wp--preset--color--white); text-decoration: underline; text-underline-offset: 3px; }

/* Why Tiffany: photo with a "Since 1998" badge beside five promises */
.why { background: var(--wp--preset--color--white); border-bottom: 1px solid var(--wp--preset--color--border); }
.why-split { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: 56px; align-items: stretch; }
.why-photo { position: relative; min-height: 520px; margin: 0; overflow: hidden; border-radius: 18px; background: var(--wp--preset--color--navy); }
.why-photo__image { position: absolute; inset: 0; margin: 0; }
.why-photo__image img { width: 100%; height: 100%; object-fit: cover; object-position: 78% center; }
.why-badge { position: absolute; left: 20px; bottom: 20px; display: flex; flex-direction: column; gap: 2px; padding: 14px 18px; border-radius: 14px; background: var(--wp--preset--color--navy); box-shadow: 0 12px 30px rgba(0, 33, 71, 0.35); }
.why-badge p { margin: 0; }
.why-badge__year { font-size: 22px; font-weight: 800; color: var(--wp--preset--color--gold); }
.why-badge__text { font-size: 13px; color: var(--wp--preset--color--mist); }
.why-copy h2 { margin: 0; }
/* Block-gap margins would push each promise's text below its icon. */
.why-list > *,
.why-list__item > *,
.why-list__text > * { margin-block: 0; }
.why-list { display: flex; flex-direction: column; margin: 28px 0 0; padding: 0; list-style: none; }
.why-list__item { display: grid; grid-template-columns: 56px minmax(0, 1fr); gap: 16px; margin: 0; padding: 18px 0; border-top: 1px solid var(--wp--preset--color--border); }
.why-list > .why-list__item:first-child { padding-top: 0; border-top: 0; }
.why-list__icon { display: flex; align-items: center; justify-content: center; width: 56px; height: 56px; margin: 0; border-radius: 999px; background: var(--wp--preset--color--navy); }
.why-list__icon svg { display: block; width: 32px; height: 32px; }
.why-list__text > h3 { margin: 2px 0 4px; font-size: 18px; color: var(--wp--preset--color--navy); }
.why-list__text p a { color: var(--wp--preset--color--brand); font-weight: 600; text-decoration: underline; text-underline-offset: 3px; }
.why-list__text p { margin: 0; font-size: 15px; line-height: 1.55; color: var(--wp--preset--color--muted); }
.why-buttons { margin-top: 28px; gap: 12px; }
@media (max-width: 899px) {
	.why-split { grid-template-columns: minmax(0, 1fr); gap: 32px; }
	.why-photo { min-height: 260px; }
}

/* FAQ */
.faq .wp-block-details { margin-block: 12px 0; }
.faq .wp-block-details summary { font-size: 17px; font-weight: 700; cursor: pointer; }
.faq .wp-block-details p { margin: 12px 0 0; color: var(--wp--preset--color--muted); }

/* News */
.news-head { margin-bottom: 28px; }
.news-head h2, .news-head p { margin: 0; }

/* CTA band */
.cta { padding-block: 56px; }
.cta h2 { margin: 0; font-size: 32px; color: var(--wp--preset--color--white); }
.cta p { margin: 8px 0 0; color: var(--wp--preset--color--sky); font-size: 17px; }
.cta .is-style-outline .wp-block-button__link { color: var(--wp--preset--color--white); border-color: rgba(255, 255, 255, 0.5); }
