/* Tiffany Towncar — styling for markup rendered by the ttc-booking plugin.
   Structure (grids, [hidden]) comes from the plugin's blocks.css; this file adds the look. */

/* ---------- Shared ---------- */
.ttc-button {
	font: inherit;
	font-size: 15px;
	font-weight: 700;
	line-height: 1.2;
	border-radius: 10px;
	padding: 12px 16px;
	border: 1px solid transparent;
	text-decoration: none;
	cursor: pointer;
	box-sizing: border-box;
}
/* Vehicle facts in words, no icons: a small muted label over each bold navy value (Passengers, Luggage, Child seats).
   A line of three columns under the vehicle pickers; in a vehicle tile (--tile) two, the child seats under them. */
.ttc-facts { display: grid; grid-template-columns: auto auto minmax(0, 1fr); gap: 2px 18px; margin: 0; padding: 8px 12px; border: 1px solid var(--wp--preset--color--border); border-radius: 8px; background: var(--wp--preset--color--white); text-align: left; }
.ttc-facts__item { display: flex; flex-direction: column; min-width: 0; }
.ttc-facts__label { font-size: 12px; font-weight: 500; line-height: 1.3; color: var(--wp--preset--color--muted); }
.ttc-facts__value { font-size: 15px; font-weight: 700; line-height: 1.3; color: var(--wp--preset--color--navy); }
.ttc-facts--tile { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 4px 12px; padding: 0; border: 0; background: none; }
.ttc-facts--tile .ttc-facts__item--seats { grid-column: 1 / -1; }
/* In a tile each kind of child seat takes its own line ("2 car seats", "2 boosters"), never broken mid-phrase. */
.ttc-facts__part { white-space: nowrap; }
.ttc-facts--tile .ttc-facts__part { display: block; }
.ttc-facts--tile .ttc-facts__sep { display: none; }
/* Every primary action is brass with navy text (7.5:1); the darker edge keeps it outlined on white (WCAG 1.4.11). */
.ttc-button--primary { background: var(--wp--preset--color--gold); color: var(--wp--preset--color--navy); border-color: var(--wp--custom--shade--gold-edge); font-weight: 800; }
.ttc-button--primary:hover { background: var(--wp--custom--shade--gold-hover); color: var(--wp--preset--color--navy); }
.ttc-button--secondary { background: var(--wp--preset--color--white); color: var(--wp--preset--color--brand); border-color: var(--wp--preset--color--brand); }
.ttc-button--secondary:hover { background: var(--wp--preset--color--tint); }
/* Typed addresses over the mileage cap: call, or send the trip as a request without a price. */
.ttc-booking__callus { margin: 0; padding: 12px; border-radius: 12px; background: var(--wp--preset--color--tint); font-size: 14px; }
.ttc-booking__callus[hidden] { display: none; }
.ttc-button:disabled { opacity: 0.5; cursor: not-allowed; }

.ttc-field { margin: 0; display: flex; flex-direction: column; gap: 6px; }
/* Address suggestions (address-autocomplete.js): the list overlays what follows the field. */
.ttc-field { position: relative; }
.ttc-places { position: absolute; left: 0; right: 0; top: 100%; z-index: 30; margin: 4px 0 0; padding: 4px 0; list-style: none; background: var(--wp--preset--color--white); border: 1px solid var(--wp--preset--color--border); border-radius: 12px; box-shadow: 0 12px 28px rgba(0, 33, 71, 0.16); max-height: 320px; overflow-y: auto; overscroll-behavior: contain; }
.ttc-places [role="option"] { display: flex; flex-direction: column; justify-content: center; min-height: 52px; padding: 8px 14px; cursor: pointer; }
.ttc-places [role="option"] + [role="option"] { border-top: 1px solid var(--wp--preset--color--border); }
.ttc-places [role="option"] strong { font-size: 15px; color: var(--wp--preset--color--ink); }
.ttc-places [role="option"] span { font-size: 13px; color: var(--wp--preset--color--muted); }
.ttc-places [role="option"][aria-selected="true"],
.ttc-places [role="option"]:hover { background: var(--wp--preset--color--tint); }
.ttc-places__attribution { padding: 6px 14px 4px; font-size: 11px; color: var(--wp--preset--color--muted); text-align: right; }

/* Phone address picker (address-autocomplete.js): the whole visible screen, above the sticky header; the script sizes it to the space above the keyboard. */
html.ttc-sheet-open,
html.ttc-sheet-open body { overflow: hidden; }
.ttc-sheet { position: fixed; left: 0; right: 0; top: 0; height: 100dvh; z-index: 1000; display: flex; flex-direction: column; background: var(--wp--preset--color--white); color: var(--wp--preset--color--ink); }
.ttc-sheet__bar { display: flex; align-items: center; gap: 4px; min-height: 56px; padding: 0 8px; border-bottom: 1px solid var(--wp--preset--color--border); }
.ttc-sheet__back,
.ttc-sheet__clear { display: flex; align-items: center; justify-content: center; width: 44px; height: 44px; padding: 0; border: 0; background: transparent; color: inherit; cursor: pointer; }
.ttc-sheet__title { margin: 0; font-size: 17px; font-weight: 800; }
.ttc-sheet__search { position: relative; margin: 12px 16px 0; }
.ttc-sheet__input { width: 100%; height: 48px; box-sizing: border-box; padding: 0 48px 0 14px; border: 2px solid var(--wp--preset--color--brand); border-radius: 12px; background: var(--wp--preset--color--white); color: inherit; font: inherit; font-size: 16px; -webkit-appearance: none; appearance: none; }
.ttc-sheet__input:focus { outline: none; box-shadow: 0 0 0 4px var(--wp--preset--color--tint); }
.ttc-sheet__input::-webkit-search-cancel-button { display: none; }
.ttc-sheet__clear { position: absolute; top: 2px; right: 2px; color: var(--wp--preset--color--muted); }
.ttc-sheet__credit { margin: 6px 16px 4px; font-size: 11px; color: var(--wp--preset--color--muted); text-align: right; }
.ttc-sheet__list { flex: 1; margin: 0; padding: 0; list-style: none; overflow-y: auto; overscroll-behavior: contain; }
.ttc-sheet__list [role="option"] { display: flex; flex-direction: column; justify-content: center; gap: 1px; min-height: 60px; box-sizing: border-box; padding: 8px 16px 8px 48px; border-bottom: 1px solid var(--wp--preset--color--border); background-repeat: no-repeat; background-position: 16px center; background-size: 20px; cursor: pointer; }
.ttc-sheet__list [role="option"][aria-selected="true"] { background-color: var(--wp--preset--color--tint); }
.ttc-sheet__list strong { font-size: 16px; }
.ttc-sheet__list span { font-size: 13px; color: var(--wp--preset--color--muted); }
.ttc-sheet__place { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23475569' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 10c0 5-8 12-8 12s-8-7-8-12a8 8 0 0 1 16 0z'/%3E%3Ccircle cx='12' cy='10' r='3'/%3E%3C/svg%3E"); }
.ttc-sheet__typed { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23002147' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 20h9'/%3E%3Cpath d='M16.5 3.5a2.1 2.1 0 0 1 3 3L7 19l-4 1 1-4z'/%3E%3C/svg%3E"); }
.ttc-sheet__typed strong { color: var(--wp--preset--color--brand); }
.ttc-field label { font-size: 13px; font-weight: 700; color: var(--wp--preset--color--muted); }
.ttc-quote input:not([type="radio"], [type="checkbox"]),
.ttc-quote select,
.ttc-quote textarea {
	font: inherit;
	font-size: 16px;
	font-weight: 600;
	color: var(--wp--preset--color--ink);
	background: var(--wp--preset--color--white);
	border: 1px solid var(--wp--preset--color--field);
	border-radius: 10px;
	padding: 11px 12px;
	min-height: 46px;
	width: 100%;
	box-sizing: border-box;
}
/* iOS draws its date & time field with a minimum width of its own and a centred value: keep it in the column, reading left. */
.ttc-quote input[type="date"], .ttc-quote input[type="time"] { min-width: 0; -webkit-appearance: none; appearance: none; text-align: left; }
.ttc-quote input[type="date"]::-webkit-date-and-time-value, .ttc-quote input[type="time"]::-webkit-date-and-time-value { text-align: left; }
/* Own caret so it sits clear of the rounded border in every browser (incl. iOS Safari). */
.ttc-quote select {
	appearance: none;
	-webkit-appearance: none;
	padding-right: 40px;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5l5 5 5-5' fill='none' stroke='%23475569' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
	background-repeat: no-repeat;
	background-position: right 14px center;
	background-size: 12px 8px;
}
.ttc-quote input[aria-invalid="true"],
.ttc-quote select[aria-invalid="true"],
.ttc-quote textarea[aria-invalid="true"] { border-color: var(--wp--custom--status--danger--text); box-shadow: 0 0 0 1px var(--wp--custom--status--danger--text); }
.ttc-field-error { font-size: 13px; font-weight: 600; color: var(--wp--custom--status--danger--text); }

/* ---------- Quote form ---------- */
.ttc-quote {
	background: var(--wp--preset--color--white);
	color: var(--wp--preset--color--ink);
	border-radius: 18px;
	padding: 28px;
	box-shadow: 0 24px 60px rgba(0, 33, 71, 0.35);
	box-sizing: border-box;
}
@media (max-width: 480px) { .ttc-quote { padding: 20px; } }
.ttc-quote__step { display: flex; flex-direction: column; gap: 16px; margin: 0; }
.ttc-quote__heading { margin: 0; font-size: 22px; font-weight: 800; letter-spacing: 0; }

.ttc-quote__trip {
	border: 0;
	margin: 0;
	padding: 4px;
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 4px;
	background: var(--wp--preset--color--surface);
	border-radius: 12px;
}
.ttc-quote__trip label {
	position: relative;
	display: flex;
	align-items: center;
	justify-content: center;
	min-height: 44px;
	border-radius: 9px;
	font-size: 14px;
	font-weight: 600;
	color: var(--wp--preset--color--muted);
	cursor: pointer;
}
.ttc-quote__trip input { position: absolute; inset: 0; margin: 0; opacity: 0; cursor: pointer; }
.ttc-quote__trip label:has(input:checked) {
	background: var(--wp--preset--color--white);
	color: var(--wp--preset--color--navy);
	font-weight: 700;
	box-shadow: 0 1px 3px rgba(0, 33, 71, 0.15);
}
.ttc-quote__trip label:has(input:focus-visible) { outline: 3px solid var(--wp--preset--color--brand); outline-offset: 2px; }

.ttc-quote__places { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 12px 8px; align-items: end; }
.ttc-quote__places > .ttc-field:first-child { grid-column: 1; grid-row: 1; }
.ttc-quote__places > .ttc-field:last-child { grid-column: 1; grid-row: 2; }
.ttc-quote__swap {
	grid-column: 2;
	grid-row: 1 / span 2;
	align-self: center;
	width: 46px;
	height: 46px;
	border-radius: 50%;
	border: 1px solid var(--wp--preset--color--field);
	background: var(--wp--preset--color--white);
	color: var(--wp--preset--color--brand);
	display: inline-flex;
	align-items: center;
	justify-content: center;
	cursor: pointer;
}
.ttc-quote__party { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
@media (min-width: 520px) { .ttc-quote__party { grid-template-columns: repeat(4, minmax(0, 1fr)); } }

.ttc-quote__submit { width: 100%; min-height: 52px; font-size: 17px; }
.ttc-quote__fineprint { margin: 0; font-size: 13px; color: var(--wp--preset--color--muted); text-align: center; }

.ttc-quote__message {
	margin: 0;
	padding: 12px 14px;
	border-radius: 12px;
	background: var(--wp--custom--status--notice--bg);
	border: 1px solid var(--wp--custom--status--notice--border);
	color: var(--wp--custom--status--notice--text);
	font-size: 14px;
	font-weight: 600;
}
.ttc-quote__alert {
	margin: 0;
	padding: 12px 14px;
	border-radius: 12px;
	background: var(--wp--custom--status--danger--bg);
	border: 1px solid var(--wp--custom--status--danger--border);
	color: var(--wp--custom--status--danger--strong);
	font-size: 14px;
	font-weight: 600;
}
.ttc-quote__alert p { margin: 0; }
/* Two or more errors: a list at the top, each a button that takes you to its field. */
.ttc-quote__alert-title { font-weight: 800; }
.ttc-quote__alert-list { margin: 4px 0 0; padding-left: 20px; }
.ttc-quote__alert-list .ttc-quote__link { min-height: 32px; color: inherit; text-align: left; }

/* Vehicle step */
.ttc-quote__summary {
	display: flex;
	justify-content: space-between;
	align-items: flex-start;
	gap: 12px;
	border: 1px solid var(--wp--preset--color--border);
	border-radius: 14px;
	padding: 14px 16px;
}
.ttc-quote__summary p { margin: 0; display: flex; flex-direction: column; gap: 2px; }
.ttc-quote__summary strong { font-size: 16px; }
.ttc-quote__summary span { font-size: 13px; color: var(--wp--preset--color--muted); }
.ttc-quote__link {
	background: none;
	border: 0;
	padding: 0 4px;
	min-height: 44px;
	font: inherit;
	font-size: 14px;
	font-weight: 700;
	color: var(--wp--preset--color--brand);
	text-decoration: underline;
	cursor: pointer;
}
.ttc-quote__vehicle-list { display: flex; flex-direction: column; gap: 12px; }
.ttc-vehicle-option {
	display: flex;
	align-items: center;
	gap: 14px;
	width: 100%;
	padding: 14px;
	text-align: left;
	font: inherit;
	color: var(--wp--preset--color--ink);
	background: var(--wp--preset--color--white);
	border: 1px solid var(--wp--preset--color--border);
	border-radius: 14px;
	cursor: pointer;
}
.ttc-vehicle-option[aria-checked="true"] {
	border: 2px solid var(--wp--preset--color--brand);
	padding: 13px;
	box-shadow: 0 6px 18px rgba(0, 33, 71, 0.15);
}
.ttc-vehicle-option:disabled { cursor: not-allowed; color: var(--wp--preset--color--muted); }
.ttc-vehicle-option:disabled .ttc-vehicle-option__image { opacity: 0.45; }
.ttc-vehicle-option__image { width: 92px; height: 56px; object-fit: contain; flex: none; }
@media (max-width: 781px) {
	.ttc-vehicle-option__image { width: 72px; height: 44px; }
}
.ttc-vehicle-option__text { flex: 1; display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.ttc-vehicle-option__name { font-size: 16px; }
.ttc-vehicle-option__meta { font-size: 13px; color: var(--wp--preset--color--muted); }
.ttc-vehicle-option__reason { font-size: 13px; font-weight: 700; color: var(--wp--custom--status--warning--text); }
.ttc-vehicle-option__price { font-size: 18px; font-weight: 800; }
.ttc-quote__note {
	margin: 0;
	padding: 12px 14px;
	border-radius: 12px;
	background: var(--wp--custom--status--notice--bg);
	border: 1px solid var(--wp--custom--status--notice--border);
	color: var(--wp--custom--status--notice--text);
	font-size: 13px;
}
.ttc-quote__bar { display: flex; align-items: center; gap: 14px; border-top: 1px solid var(--wp--preset--color--border); padding-top: 16px; }
.ttc-quote__bar p { margin: 0; flex: 1; font-weight: 700; }
.ttc-quote__bar .ttc-button { min-height: 52px; padding-inline: 24px; font-size: 17px; }

/* Details step */
.ttc-quote__group { border: 0; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 12px; }
.ttc-quote__group > legend { padding: 0; margin-bottom: 4px; font-size: 16px; font-weight: 800; }
.ttc-quote__publix { border: 0; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 4px 20px; }
.ttc-quote__publix legend { width: 100%; margin-bottom: 4px; font-size: 13px; font-weight: 700; color: var(--wp--preset--color--muted); }
.ttc-quote__publix label { display: inline-flex; align-items: center; gap: 8px; min-height: 44px; font-weight: 600; }
.ttc-quote__hint { margin: 0; font-size: 13px; color: var(--wp--preset--color--muted); }
.ttc-quote__status { margin: 0; font-size: 14px; font-weight: 600; color: var(--wp--preset--color--brand); }

/* ---------- Route cards ---------- */
.ttc-route-cards__bar { display: flex; justify-content: flex-end; }
.ttc-segmented {
	display: inline-flex;
	gap: 4px;
	padding: 4px;
	background: var(--wp--preset--color--white);
	border: 1px solid var(--wp--preset--color--border);
	border-radius: 12px;
}
.ttc-segmented button,
.ttc-route-card__from button {
	font: inherit;
	font-weight: 700;
	border: 0;
	cursor: pointer;
	background: transparent;
	color: var(--wp--preset--color--muted);
}
.ttc-segmented button { min-height: 44px; padding: 0 18px; border-radius: 9px; font-size: 15px; }
.ttc-segmented button[aria-pressed="true"] { background: var(--wp--preset--color--brand); color: var(--wp--preset--color--white); }
@media (max-width: 600px) {
	.ttc-route-cards__bar .ttc-segmented { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); width: 100%; }
}
.ttc-route-card {
	background: var(--wp--preset--color--white);
	border: 1px solid var(--wp--preset--color--border);
	border-radius: 16px;
	overflow: hidden;
	gap: 0;
}
.ttc-route-card__image { display: block; width: 100%; height: 168px; object-fit: cover; }
.ttc-route-card__body { padding: 20px 24px 24px; gap: 16px; }
.ttc-route-card__title { margin: 0; font-size: 20px; font-weight: 800; letter-spacing: 0; }
.ttc-route-card__price { margin: 0; font-size: 15px; color: var(--wp--preset--color--muted); }
.ttc-route-card__price strong { font-size: 28px; color: var(--wp--preset--color--ink); }
.ttc-route-card__from {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 6px;
	padding: 4px;
	background: var(--wp--preset--color--surface);
	border-radius: 10px;
}
.ttc-route-card__from button { min-height: 44px; padding: 0 4px; border-radius: 8px; font-size: 13px; line-height: 1.2; }
.ttc-route-card__from button[aria-pressed="true"] { background: var(--wp--preset--color--white); color: var(--wp--preset--color--brand); box-shadow: 0 1px 2px rgba(14, 26, 43, 0.12); }

/* ---------- Fleet ---------- */
.ttc-vehicle {
	background: var(--wp--preset--color--white);
	border: 1px solid var(--wp--preset--color--border);
	border-radius: 16px;
	overflow: hidden;
	padding-bottom: 20px;
	gap: 10px;
}
.ttc-vehicle > :not(.ttc-vehicle__image) { margin-inline: 20px; }
.ttc-vehicle__image {
	height: 150px;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 16px;
	border-bottom: 1px solid var(--wp--preset--color--tint);
	box-sizing: border-box;
}
.ttc-vehicle__image:empty { display: none; }
.ttc-vehicle__image img { max-width: 100%; max-height: 118px; width: auto; height: auto; object-fit: contain; }
.ttc-vehicle__name { margin: 0; font-size: 20px; font-weight: 800; letter-spacing: 0; }
.ttc-vehicle__specs { margin: 0; font-size: 14px; color: var(--wp--preset--color--muted); }
.ttc-vehicle__price { margin: 4px 0 0; font-size: 14px; color: var(--wp--preset--color--muted); }
.ttc-vehicle__price strong { font-size: 24px; font-weight: 800; color: var(--wp--preset--color--navy); }
/* Hourly charters: one quiet line under the cards, so the cards keep the flat prices the quote card shows. */
.ttc-fleet__hourly { margin: 4px 0 0; font-size: 14px; color: var(--wp--preset--color--muted); }
.ttc-fleet__hourly a { display: inline-flex; align-items: center; min-height: 44px; font-weight: 700; color: var(--wp--preset--color--brand); white-space: nowrap; }

/* ---------- Reviews ---------- */
.ttc-reviews { display: flex; flex-direction: column; gap: 24px; }
/* One scrolling row in the wide container: the navy Google rating card, then 300px review cards; the next card peeks in at the edge. */
.ttc-reviews__track { display: flex; gap: 20px; overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: none; overscroll-behavior-x: contain; }
.ttc-reviews__track::-webkit-scrollbar { display: none; }
.ttc-reviews__track > * { flex: 0 0 300px; scroll-snap-align: start; }
.ttc-reviews__track > .ttc-reviews__lead { flex-basis: 260px; }
.ttc-reviews__track:focus-visible { outline: 2px solid var(--wp--preset--color--brand); outline-offset: 4px; border-radius: 16px; }
.ttc-reviews__lead {
	box-sizing: border-box;
	display: flex;
	flex-direction: column;
	gap: 10px;
	padding: 28px 24px;
	background: var(--wp--preset--color--navy);
	border-radius: 16px;
	color: var(--wp--preset--color--white);
	text-decoration: none;
}
a.ttc-reviews__lead:hover, a.ttc-reviews__lead:focus { color: var(--wp--preset--color--white); }
.ttc-reviews__lead-label { font-size: 13px; font-weight: 800; letter-spacing: 0.12em; text-transform: uppercase; color: var(--wp--preset--color--mist); }
.ttc-reviews__lead-rating { font-size: 64px; font-weight: 800; line-height: 1; }
.ttc-reviews__lead-stars { color: var(--wp--preset--color--star); letter-spacing: 4px; font-size: 20px; }
.ttc-reviews__lead-count { font-size: 15px; color: var(--wp--preset--color--sky); }
.ttc-reviews__cta {
	margin-top: auto;
	align-self: flex-start;
	display: inline-flex;
	align-items: center;
	gap: 8px;
	min-height: 44px;
	padding: 0 16px;
	border-radius: 12px;
	background: var(--wp--preset--color--gold);
	color: var(--wp--preset--color--navy);
	font-size: 15px;
	font-weight: 800;
}
a.ttc-reviews__lead:hover .ttc-reviews__cta { background: var(--wp--custom--shade--gold-hover); }
/* Under the row: how far along it is, and Previous / Next (phones swipe). reviews.js shows them only when the row overflows. */
.ttc-reviews__controls { display: flex; align-items: center; gap: 24px; }
.ttc-reviews__controls[hidden] { display: none; }
.ttc-reviews__progress { position: relative; flex: 1 1 auto; height: 4px; border-radius: 2px; background: var(--wp--preset--color--tint); overflow: hidden; }
.ttc-reviews__progress-bar { position: absolute; inset: 0 auto 0 0; width: 0; border-radius: 2px; background: var(--wp--preset--color--star); transition: width 0.2s ease; }
.ttc-reviews__arrows { display: flex; gap: 10px; }
.ttc-reviews__arrow { display: flex; align-items: center; justify-content: center; width: 44px; height: 44px; padding: 0; border-radius: 50%; border: 1px solid var(--wp--preset--color--navy); background: var(--wp--preset--color--navy); color: var(--wp--preset--color--white); cursor: pointer; }
.ttc-reviews__arrow:disabled { border-color: var(--wp--preset--color--border); background: var(--wp--preset--color--white); color: var(--wp--preset--color--muted); cursor: default; opacity: 0.6; }
@media (max-width: 781px) {
	.ttc-reviews__arrows { display: none; }
	.ttc-reviews__track { gap: 16px; }
}
@media (prefers-reduced-motion: reduce) {
	.ttc-reviews__progress-bar { transition: none; }
}
.ttc-review__stars { margin: 0; color: var(--wp--preset--color--star); letter-spacing: 2px; font-size: 18px; }
.ttc-review {
	margin: 0;
	padding: 24px;
	background: var(--wp--preset--color--white);
	border: 1px solid var(--wp--preset--color--border);
	border-radius: 16px;
	display: flex;
	flex-direction: column;
	gap: 14px;
}
.ttc-review__quote { margin: 0; padding: 0; border: 0; font-size: 16px; font-style: normal; color: var(--wp--preset--color--ink); }
.ttc-review__quote p { margin: 0; }
/* Google reviews can be long: a few lines keep the row even, and Read more (reviews.js) shows the rest in place. */
.ttc-review--google .ttc-review__quote p { display: -webkit-box; -webkit-line-clamp: 7; -webkit-box-orient: vertical; overflow: hidden; }
.ttc-review--google.is-expanded .ttc-review__quote p { display: block; -webkit-line-clamp: unset; overflow: visible; }
.ttc-review__more { align-self: flex-start; min-height: 44px; margin: -12px 0 -8px; padding: 0; border: 0; background: none; color: var(--wp--preset--color--navy); font: inherit; font-size: 15px; font-weight: 700; text-decoration: underline; text-underline-offset: 3px; cursor: pointer; }
.ttc-review__more:hover { text-decoration-thickness: 2px; }
.ttc-review__more[hidden] { display: none; }
.ttc-review__by { margin-top: auto; display: flex; align-items: center; gap: 12px; font-size: 14px; }
.ttc-review__by > span:last-child { display: flex; flex-direction: column; }
.ttc-review__initials {
	flex: none;
	width: 40px;
	height: 40px;
	border-radius: 50%;
	background: var(--wp--preset--color--brand);
	color: var(--wp--preset--color--white);
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: 14px;
	font-weight: 800;
}
.ttc-review__trip { color: var(--wp--preset--color--muted); }

/* ---------- Rates: a group per starting point, each price its own Book button, the vehicle row pinned under the header ---------- */
.ttc-rates { display: flex; flex-direction: column; gap: 28px; }
/* rates-table.js sets --ttc-rates-top to the pinned header's bottom edge. */
.ttc-rates__vehicle-bar { position: sticky; top: var(--ttc-rates-top, 0px); z-index: 40; display: flex; flex-direction: column; gap: 10px; padding: 24px 0 16px; background: var(--ttc-vehicle-bar-bg, var(--wp--preset--color--white)); border-bottom: 1px solid var(--wp--preset--color--border); }
.ttc-rates__eyebrow { margin: 0; font-size: 13px; font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase; color: var(--wp--preset--color--muted); }
.ttc-rates__vehicles { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; }
.ttc-rates__vehicles button { font: inherit; display: flex; align-items: center; gap: 12px; padding: 10px 12px; border: 2px solid var(--wp--preset--color--border); border-radius: 10px; background: var(--wp--preset--color--white); color: var(--wp--preset--color--ink); text-align: left; cursor: pointer; }
.ttc-rates__vehicles button[aria-checked="true"] { border-color: var(--wp--preset--color--navy); background: var(--wp--preset--color--tint); }
/* Two classes: beats .wp-block-post-content img { height: auto }, so every photo sits in the same box. */
.ttc-rates .ttc-rates__vehicle-image { width: 56px; height: 30px; object-fit: contain; flex: none; }
.ttc-rates__vehicle-text { display: flex; flex-direction: column; min-width: 0; }
.ttc-rates__vehicle-name { font-size: 15px; font-weight: 700; color: var(--wp--preset--color--navy); }
.ttc-rates__vehicle-cap,
.ttc-rates__vehicle-seats { font-size: 12px; color: var(--wp--preset--color--muted); }
.ttc-rates__facts { display: none; }
.ttc-rates__group { display: flex; flex-direction: column; scroll-margin-top: calc(var(--ttc-rates-top, 0px) + var(--ttc-rates-bar-h, 0px)); }
/* Each group's title pins under the vehicle row (--ttc-rates-bar-h, measured by rates-table.js) until the next group takes over. */
.ttc-rates__group-head { position: sticky; top: calc(var(--ttc-rates-top, 0px) + var(--ttc-rates-bar-h, 0px)); z-index: 39; display: flex; justify-content: space-between; align-items: flex-end; gap: 16px; padding: 12px 0; background: var(--ttc-vehicle-bar-bg, var(--wp--preset--color--white)); border-bottom: 2px solid var(--wp--preset--color--navy); }
.ttc-rates__group-title { display: flex; align-items: center; flex-wrap: wrap; gap: 8px 14px; min-width: 0; }
.ttc-rates__group-title h2 { margin: 0; font-size: 22px; font-weight: 700; line-height: 1.25; color: var(--wp--preset--color--navy); }
.ttc-rates__flip { font: inherit; display: inline-flex; align-items: center; gap: 6px; min-height: 36px; padding: 6px 14px; border: 1px solid var(--wp--preset--color--field); border-radius: 999px; background: var(--wp--preset--color--white); color: var(--wp--preset--color--navy); font-size: 14px; font-weight: 600; cursor: pointer; }
.ttc-rates__flip:hover,
.ttc-rates__flip[aria-pressed="true"] { border-color: var(--wp--custom--shade--gold-edge); background: color-mix(in srgb, var(--wp--preset--color--gold) 10%, var(--wp--preset--color--white)); }
.ttc-rates:not(.is-enhanced) .ttc-rates__flip { display: none; }
.ttc-rates__columns { display: grid; grid-template-columns: 150px 150px; gap: 12px; margin: 0; font-size: 13px; font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase; color: var(--wp--preset--color--muted); text-align: center; }
.ttc-rates__rows { list-style: none; margin: 0; padding: 0; }
.ttc-rates__row { display: flex; justify-content: space-between; align-items: center; gap: 16px; padding: 10px 0; border-bottom: 1px solid var(--wp--preset--color--border); }
.ttc-rates__place { margin: 0; display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.ttc-rates__dir { font-size: 12px; color: var(--wp--preset--color--muted); }
.ttc-rates__name { font-size: 17px; font-weight: 600; color: var(--wp--preset--color--ink); }
.ttc-rates__terms { font-size: 13px; color: var(--wp--preset--color--muted); }
.ttc-rates__prices { display: grid; grid-template-columns: 150px 150px; gap: 12px; flex: none; }
/* The price is the Book button: amount on top, "Book →" under it. */
.ttc-rates__price { display: flex; flex-wrap: wrap; justify-content: center; align-items: baseline; column-gap: 4px; padding: 8px; border: 1.5px solid var(--wp--preset--color--border); border-radius: 10px; background: var(--wp--preset--color--white); color: var(--wp--preset--color--navy); line-height: 1.25; text-align: center; text-decoration: none; }
.ttc-rates__price--wide { grid-column: 1 / -1; }
/* Call buttons dial instead of selecting: dashed, so they read apart from the prices. */
.ttc-rates__price--call { border-style: dashed; }
.ttc-rates__amount { order: -1; flex-basis: 100%; font-size: 20px; font-weight: 800; }
.ttc-rates__trip,
.ttc-rates__cta { font-size: 12px; font-weight: 600; }
.ttc-rates__trip-label { display: none; }
.ttc-rates__price:hover { border-color: var(--wp--custom--shade--gold-edge); background: color-mix(in srgb, var(--wp--preset--color--gold) 10%, var(--wp--preset--color--white)); color: var(--wp--preset--color--navy); }
.ttc-rates__price.is-selected { border-color: var(--wp--custom--shade--gold-edge); background: var(--wp--preset--color--gold); }
@media (prefers-reduced-motion: no-preference) {
	.ttc-rates__price,
	.ttc-rates__flip { transition: background-color 0.15s ease, border-color 0.15s ease; }
}
/* The chosen price, pinned to the bottom of the screen while the table scrolls. */
.ttc-rates__selection { position: sticky; bottom: 16px; z-index: 40; display: flex; justify-content: space-between; align-items: center; gap: 16px; padding: 16px 20px; border-radius: 12px; background: var(--wp--preset--color--navy); color: var(--wp--preset--color--white); box-shadow: 0 8px 24px rgba(0, 33, 71, 0.2); }
.ttc-rates__selection-text { margin: 0; font-size: 15px; }
.ttc-rates__selection .ttc-button { flex: none; }
@media (max-width: 781px) {
	.ttc-rates { gap: 24px; }
	/* Phones: four photo tiles and the chosen one's facts, edge to edge under the header (like Book your ride). */
	.ttc-rates__vehicle-bar {
		top: var(--ttc-rates-top, var(--ttc-sticky-top, 0px));
		gap: 8px;
		margin-inline: calc(0px - var(--wp--style--root--padding-left)) calc(0px - var(--wp--style--root--padding-right));
		padding: 12px var(--wp--style--root--padding-right) 12px var(--wp--style--root--padding-left);
	}
	.ttc-rates__eyebrow { display: none; }
	.ttc-rates__vehicles { gap: 6px; }
	.ttc-rates__vehicles button { flex-direction: column; justify-content: center; gap: 4px; min-height: 60px; padding: 6px 4px; text-align: center; }
	.ttc-rates .ttc-rates__vehicle-image { width: 100%; height: 24px; }
	.ttc-rates__vehicle-name { font-size: 12px; white-space: nowrap; }
	.ttc-rates__vehicle-cap,
	.ttc-rates__vehicle-seats { display: none; }
	.ttc-rates__group-head { top: calc(var(--ttc-rates-top, var(--ttc-sticky-top, 0px)) + var(--ttc-rates-bar-h, 0px)); align-items: center; padding: 12px 0 10px; }
	.ttc-rates__group-title { flex-wrap: nowrap; justify-content: space-between; width: 100%; }
	.ttc-rates__group-title h2 { font-size: 18px; }
	.ttc-rates__flip { flex: none; justify-content: center; width: 44px; height: 44px; padding: 0; border-radius: 50%; font-size: 18px; }
	.ttc-rates__flip-text { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
	.ttc-rates__columns { display: none; }
	.ttc-rates__row { flex-direction: column; align-items: stretch; gap: 8px; padding: 12px 0; }
	.ttc-rates__dir { font-size: 11px; }
	.ttc-rates__name { font-size: 16px; }
	.ttc-rates__prices { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
	/* Label on the left, price on the right; 52px tall for the thumb. */
	.ttc-rates__price { flex-wrap: nowrap; justify-content: space-between; align-items: center; gap: 8px; min-height: 52px; padding: 10px 12px; text-align: left; }
	.ttc-rates__amount { order: 0; flex-basis: auto; font-size: 18px; white-space: nowrap; }
	.ttc-rates__trip { display: flex; flex-direction: column; }
	.ttc-rates__trip-label { display: inline; }
	.ttc-rates__cta { display: none; }
	.ttc-rates__price--wide .ttc-rates__cta { display: inline; order: -1; font-weight: 500; }
	/* The choice is a sheet fixed to the bottom (it stands in for the Call / Book bar), with room left under the last row. */
	.ttc-rates.has-selection { padding-bottom: 96px; }
	.ttc-rates__selection { position: fixed; left: 0; right: 0; bottom: 0; z-index: 60; flex-direction: column; align-items: stretch; gap: 10px; padding: 14px var(--wp--style--root--padding-right) calc(18px + env(safe-area-inset-bottom)) var(--wp--style--root--padding-left); border-radius: 0; box-shadow: 0 -6px 20px rgba(0, 33, 71, 0.15); }
	.ttc-rates__selection-text { font-size: 13px; line-height: 1.35; }
	.ttc-rates__selection .ttc-button { width: 100%; min-height: 52px; font-size: 16px; }
}

/* Popular destinations: photo tiles, text over a navy fade (ttc/route-cards, tiles layout) */
.ttc-route-tiles { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 20px; }
.ttc-route-tile { margin: 0; }
.ttc-route-tile__link { position: relative; display: flex; flex-direction: column; justify-content: flex-end; min-height: 440px; height: 100%; overflow: hidden; border-radius: 18px; background: var(--wp--preset--color--brand); color: var(--wp--preset--color--white); text-decoration: none; }
/* Two classes: beats .wp-block-post-content img { height: auto }, which would leave the photo at its own height. */
.ttc-route-tile .ttc-route-tile__image { position: absolute; inset: 0; z-index: 0; width: 100%; height: 100%; object-fit: cover; transition: transform 0.4s ease; }
.ttc-route-tile__link::after { content: ""; position: absolute; inset: 0; z-index: 1; background: linear-gradient(180deg, rgba(0, 33, 71, 0) 20%, rgba(0, 33, 71, 0.7) 50%, rgba(0, 33, 71, 0.96) 100%); }
.ttc-route-tile__body { position: relative; z-index: 2; display: flex; flex-direction: column; gap: 8px; padding: 20px; }
.ttc-route-tile__title { margin: 0; font-size: 20px; line-height: 1.2; color: var(--wp--preset--color--white); }
.ttc-route-tile__text { margin: 0; font-size: 14px; line-height: 1.5; color: var(--wp--preset--color--sky); }
.ttc-route-tile__price { align-self: flex-start; display: inline-flex; align-items: center; min-height: 36px; margin-top: 4px; padding: 0 14px; border-radius: 999px; background: var(--wp--preset--color--gold); color: var(--wp--preset--color--navy); font-size: 14px; font-weight: 800; }
.ttc-route-tile__link:hover .ttc-route-tile__title,
.ttc-route-tile__link:focus-visible .ttc-route-tile__title { text-decoration: underline; text-underline-offset: 4px; }
@media (prefers-reduced-motion: no-preference) { .ttc-route-tile__link:hover .ttc-route-tile__image { transform: scale(1.04); } }
@media (max-width: 1099px) { .ttc-route-tiles { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 599px) { .ttc-route-tiles { grid-template-columns: minmax(0, 1fr); gap: 16px; } .ttc-route-tile__link { min-height: 300px; } }

/* Popular rides (News sidebar) */
.ttc-popular { padding: 20px 20px 4px; border: 1px solid var(--wp--preset--color--border); border-radius: 16px; background: var(--wp--preset--color--white); }
.ttc-popular__title { margin: 0 0 10px; font-size: 15px; font-weight: 800; line-height: 1.3; }
.ttc-popular__note { font-size: 13px; font-weight: 600; color: var(--wp--preset--color--muted); }
.ttc-popular__list { margin: 0; padding: 0; list-style: none; }
.ttc-popular__ride { display: flex; justify-content: space-between; align-items: center; gap: 12px; min-height: 48px; border-top: 1px solid var(--wp--preset--color--border); font-size: 14px; color: var(--wp--preset--color--ink); text-decoration: none; }
.ttc-popular__ride:hover .ttc-popular__to { text-decoration: underline; }
.ttc-popular__from { font-weight: 800; color: var(--wp--preset--color--brand); }
.ttc-popular__arrow { display: inline-block; width: 16px; height: 12px; margin: 0 6px; vertical-align: -1px; background: url("../images/icons/arrow-oneway.svg") center / contain no-repeat; }
.ttc-popular__to { font-weight: 700; }
.ttc-popular__price { font-weight: 800; color: var(--wp--preset--color--brand); white-space: nowrap; }

/* ---------- Quote-first booking (home page): pick-up, drop-off, then the price card ---------- */
.ttc-qf { display: flex; flex-direction: column; gap: 24px; }
.ttc-qf__head { display: flex; justify-content: space-between; align-items: flex-end; flex-wrap: wrap; gap: 12px 24px; }
.ttc-qf__heading { margin: 0; color: var(--wp--preset--color--navy); }
.ttc-qf__intro { margin: 6px 0 0; color: var(--wp--preset--color--muted); }
.ttc-qf__rates { font-weight: 700; }
.ttc-qf__route-card,
.ttc-qf__picker-chips { display: none; }
.ttc-qf__body { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr); gap: 32px; align-items: start; padding: 32px; border: 1px solid var(--wp--preset--color--border); border-radius: 16px; background: var(--wp--preset--color--white); }
.ttc-qf__form { display: flex; flex-direction: column; gap: 22px; min-width: 0; }
.ttc-qf__field { display: flex; flex-direction: column; gap: 8px; min-width: 0; }
.ttc-qf__label { margin: 0; font-size: 13px; font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase; color: var(--wp--preset--color--muted); }
.ttc-qf__pickup-row { display: flex; gap: 8px; }
.ttc-qf__pickup { flex: 1; min-width: 0; display: flex; justify-content: space-between; align-items: center; gap: 12px; min-height: 60px; padding: 10px 16px; border: 1.5px solid var(--wp--preset--color--field); border-radius: 10px; background: var(--wp--preset--color--white); color: var(--wp--preset--color--ink); font: inherit; text-align: left; cursor: pointer; }
.ttc-qf__pickup[aria-expanded="true"],
.ttc-qf__pickup:hover { border-color: var(--wp--custom--shade--gold-edge); }
.ttc-qf__pickup-text { display: flex; flex-direction: column; min-width: 0; }
.ttc-qf__pickup-group { font-size: 12px; color: var(--wp--preset--color--muted); }
.ttc-qf__pickup-name { font-size: 17px; font-weight: 700; color: var(--wp--preset--color--navy); }
.ttc-qf__change { flex: none; font-size: 14px; font-weight: 700; color: var(--wp--preset--color--brand); text-decoration: underline; text-underline-offset: 3px; }
.ttc-qf__swap { flex: none; width: 52px; border: 1.5px solid var(--wp--preset--color--border); border-radius: 10px; background: var(--wp--preset--color--white); color: var(--wp--preset--color--navy); font: inherit; font-size: 20px; cursor: pointer; }
.ttc-qf__swap:hover { border-color: var(--wp--custom--shade--gold-edge); background: color-mix(in srgb, var(--wp--preset--color--gold) 10%, var(--wp--preset--color--white)); }
/* Desktop: the full pick-up list opens under the field; phones: a full-screen sheet. */
.ttc-qf__picker { display: flex; flex-direction: column; gap: 12px; padding: 14px; border: 1px solid var(--wp--preset--color--border); border-radius: 12px; background: var(--wp--preset--color--white); box-shadow: 0 8px 24px rgba(0, 33, 71, 0.08); }
.ttc-qf__picker-head { display: flex; justify-content: space-between; align-items: center; gap: 12px; }
.ttc-qf__picker-title { margin: 0; font-size: 15px; font-weight: 800; color: var(--wp--preset--color--navy); }
.ttc-qf__close { display: flex; align-items: center; justify-content: center; width: 44px; height: 44px; padding: 0; border: 0; border-radius: 50%; background: var(--wp--preset--color--surface); color: var(--wp--preset--color--navy); font: inherit; font-size: 18px; cursor: pointer; }
.ttc-qf__picker-groups { display: flex; flex-direction: column; gap: 12px; }
.ttc-qf__picker-label { margin: 0 0 4px; font-size: 12px; font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase; color: var(--wp--preset--color--muted); }
.ttc-qf__picker-items { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 4px; }
.ttc-qf__picker-items button { min-height: 44px; padding: 8px 10px; border: 0; border-radius: 8px; background: transparent; color: var(--wp--preset--color--ink); font: inherit; font-size: 15px; font-weight: 600; text-align: left; cursor: pointer; }
.ttc-qf__picker-items button:hover { background: color-mix(in srgb, var(--wp--preset--color--gold) 10%, var(--wp--preset--color--white)); }
.ttc-qf__picker-items button[aria-pressed="true"] { background: var(--wp--preset--color--tint); color: var(--wp--preset--color--navy); }
.ttc-qf__popular { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; }
.ttc-qf:not(.is-enhanced) .ttc-qf__popular { display: none; }
.ttc-qf__popular-label { font-size: 13px; color: var(--wp--preset--color--muted); }
.ttc-qf__chip { min-height: 36px; padding: 0 12px; border: 1px solid var(--wp--preset--color--field); border-radius: 999px; background: var(--wp--preset--color--white); color: var(--wp--preset--color--navy); font: inherit; font-size: 13px; font-weight: 600; cursor: pointer; }
.ttc-qf__chip[aria-pressed="true"] { border-color: var(--wp--preset--color--navy); background: var(--wp--preset--color--navy); color: var(--wp--preset--color--white); }
.ttc-qf__dropoffs { display: flex; flex-direction: column; border: 1px solid var(--wp--preset--color--border); border-radius: 12px; overflow: hidden; }
.ttc-qf__dropoff { display: grid; grid-template-columns: 16px minmax(0, 1fr) auto auto; align-items: center; gap: 12px; min-height: 52px; padding: 10px 16px; border: 0; border-bottom: 1px solid var(--wp--preset--color--border); background: var(--wp--preset--color--white); color: var(--wp--preset--color--ink); font: inherit; text-align: left; cursor: pointer; }
.ttc-qf__dropoff:last-child { border-bottom: 0; }
.ttc-qf__dropoff:hover,
.ttc-qf__dropoff[aria-checked="true"] { background: color-mix(in srgb, var(--wp--preset--color--gold) 10%, var(--wp--preset--color--white)); }
.ttc-qf__dot { width: 16px; height: 16px; box-sizing: border-box; border: 2px solid var(--wp--preset--color--field); border-radius: 50%; background: var(--wp--preset--color--white); }
.ttc-qf__dropoff[aria-checked="true"] .ttc-qf__dot { border: 5px solid var(--wp--custom--shade--gold-edge); }
.ttc-qf__dropoff-name { font-size: 16px; font-weight: 600; }
.ttc-qf__dropoff-group { font-size: 12px; color: var(--wp--preset--color--muted); }
.ttc-qf__from { font-size: 14px; color: var(--wp--preset--color--muted); white-space: nowrap; }
.ttc-qf__more { min-height: 44px; border: 1px solid var(--wp--preset--color--border); border-radius: 10px; background: var(--wp--preset--color--surface); color: var(--wp--preset--color--navy); font: inherit; font-size: 14px; font-weight: 700; cursor: pointer; }
/* The price card: navy, beside the form and pinned under the header while it scrolls (rates-table's measuring, quote-first.js). */
.ttc-qf__quote { position: sticky; top: calc(var(--ttc-qf-top, 144px) + 16px); display: flex; flex-direction: column; gap: 20px; padding: 28px; border-radius: 14px; background: var(--wp--preset--color--navy); color: var(--wp--preset--color--white); }
.ttc-qf__route { margin: 0; display: flex; flex-direction: column; gap: 4px; }
.ttc-qf__route-from { font-size: 13px; color: var(--wp--preset--color--mist); }
.ttc-qf__route-to { font-size: 22px; font-weight: 700; line-height: 1.25; }
/* The vehicles on a white panel, two by two as in the details step's booking card: the black cars need a light ground. */
.ttc-qf__choices { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; padding: 8px; border-radius: 12px; background: var(--wp--preset--color--white); }
.ttc-qf__choices button { display: flex; flex-direction: column; align-items: stretch; gap: 4px; min-width: 0; padding: 9px 11px; border: 1px solid var(--wp--preset--color--border); border-radius: 10px; background: var(--wp--preset--color--white); color: var(--wp--preset--color--navy); font: inherit; font-size: 12px; text-align: left; cursor: pointer; }
.ttc-qf__choices button[aria-checked="true"] { padding: 8px 10px; border: 2px solid var(--wp--preset--color--navy); background: var(--wp--preset--color--tint); }
.ttc-qf__choices button:focus-visible { outline-color: var(--wp--preset--color--brand); }
.ttc-qf__choice-top { display: flex; justify-content: space-between; align-items: center; gap: 8px; }
.ttc-qf .ttc-qf__choice-image { width: 58px; height: 30px; object-fit: contain; }
.ttc-qf__choice-price { font-size: 15px; font-weight: 800; }
.ttc-qf__choices .ttc-qf__vehicle-name { font-size: 14px; font-weight: 700; }
.ttc-qf__choice-facts { margin-top: 2px; }
.ttc-qf__trip[aria-checked="true"] { border: 2px solid var(--wp--preset--color--gold); }
.ttc-qf__trips { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.ttc-qf__trip { display: flex; justify-content: space-between; align-items: center; gap: 8px; padding: 10px 14px; border: 2px solid color-mix(in srgb, var(--wp--preset--color--white) 30%, var(--wp--preset--color--navy)); border-radius: 10px; background: transparent; color: var(--wp--preset--color--white); font: inherit; text-align: left; cursor: pointer; }
.ttc-qf__trip[aria-disabled="true"] { opacity: 0.55; cursor: not-allowed; }
.ttc-qf__trip-label { display: flex; flex-direction: column; font-size: 14px; }
.ttc-qf__trip strong { font-size: 22px; font-weight: 800; }
.ttc-qf__book { display: flex; align-items: center; justify-content: center; min-height: 52px; font-size: 17px; text-align: center; }
.ttc-qf__note { margin: 0; font-size: 13px; color: var(--wp--preset--color--mist); }
/* Tablets: side by side the price card would be too narrow for its vehicles, so it follows the form at full width. */
@media (min-width: 782px) and (max-width: 1099px) {
	.ttc-qf__body { grid-template-columns: minmax(0, 1fr); }
	.ttc-qf__quote { position: static; }
	.ttc-qf__choices { grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); }
}
@media (max-width: 781px) {
	/* Phones (4a): nothing pinned. A route card (pick-up and drop-off rows, each opening a full-screen list), the vehicles
	   two by two, one way or round trip, Book. Without JS the drop-off list stays as rendered. */
	.ttc-qf { gap: 14px; }
	.ttc-qf__heading { font-size: 24px; font-weight: 700; }
	.ttc-qf__intro { margin-top: 4px; font-size: 14px; }
	.ttc-qf__body { grid-template-columns: minmax(0, 1fr); gap: 14px; padding: 0; border: 0; background: transparent; }
	.ttc-qf.is-enhanced .ttc-qf__form { gap: 0; }
	.ttc-qf.is-enhanced .ttc-qf__field > :not(.ttc-qf__picker) { display: none; }
	.ttc-qf__route-card { position: relative; display: flex; flex-direction: column; border: 1px solid var(--wp--preset--color--border); border-radius: 14px; background: var(--wp--preset--color--white); }
	.ttc-qf__row { display: flex; align-items: center; gap: 12px; min-height: 72px; padding: 12px 14px 12px 72px; border: 0; background: transparent; color: var(--wp--preset--color--ink); font: inherit; text-align: left; cursor: pointer; }
	.ttc-qf__row-text { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
	.ttc-qf__row + .ttc-qf__row { border-top: 1px solid color-mix(in srgb, var(--wp--preset--color--border) 50%, var(--wp--preset--color--white)); }
	.ttc-qf__row-label { font-size: 11px; font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase; color: var(--wp--preset--color--muted); }
	.ttc-qf__row-value { font-size: 17px; font-weight: 700; line-height: 1.25; color: var(--wp--preset--color--navy); }
	/* "Change ›": a gold pill on each row; the whole row opens its list. */
	/* Navy on white with a brass edge: 16:1 (the gold-edge text on a gold tint was 4.3:1), 44px tall to tap. */
	.ttc-qf__row-change { flex: none; display: inline-flex; align-items: center; gap: 2px; min-height: 44px; padding: 0 12px 0 14px; border: 1px solid var(--wp--custom--shade--gold-edge); border-radius: 999px; background: var(--wp--preset--color--white); color: var(--wp--preset--color--navy); font-size: 13px; font-weight: 800; line-height: 1.2; }
	.ttc-qf__row:hover .ttc-qf__row-change { border-color: var(--wp--custom--shade--gold-edge); }
	.ttc-qf__swap--card { position: absolute; top: 50%; left: 14px; width: 44px; height: 44px; border-radius: 50%; font-size: 18px; transform: translateY(-50%); }
	/* The pick-up and drop-off lists: full screen, the page behind locked (html.ttc-qf-picking). */
	.ttc-qf__picker,
	.ttc-qf__sheet { position: fixed; inset: 0; z-index: 1000; display: flex; flex-direction: column; gap: 12px; padding: 0 16px 24px; border: 0; border-radius: 0; background: var(--wp--preset--color--white); box-shadow: none; overflow-y: auto; overscroll-behavior: contain; }
	.ttc-qf__picker-head { position: sticky; top: 0; z-index: 1; flex-direction: row-reverse; justify-content: flex-end; gap: 12px; margin: 0 -16px; padding: 8px 16px; border-bottom: 1px solid var(--wp--preset--color--border); background: var(--wp--preset--color--white); }
	.ttc-qf__picker-title { font-size: 17px; font-weight: 700; }
	.ttc-qf__sheet-sub { margin: 2px 0 0; font-size: 12px; color: var(--wp--preset--color--muted); }
	.ttc-qf__picker-chips { display: flex; flex-wrap: wrap; gap: 6px; }
	.ttc-qf__picker-chips .ttc-qf__chip { min-height: 40px; font-weight: 500; }
	.ttc-qf__picker-label { font-size: 11px; }
	.ttc-qf__picker-items { grid-template-columns: minmax(0, 1fr); gap: 0; }
	.ttc-qf__picker-items button { min-height: 52px; border-bottom: 1px solid color-mix(in srgb, var(--wp--preset--color--border) 50%, var(--wp--preset--color--white)); border-radius: 0; font-size: 16px; font-weight: 500; }
	.ttc-qf__picker-items button[aria-pressed="true"] { background: var(--wp--preset--color--surface); }
	.ttc-qf__sheet-rows { display: flex; flex-direction: column; }
	.ttc-qf__sheet-rows .ttc-qf__dropoff { grid-template-columns: 16px minmax(0, 1fr) auto; grid-template-areas: "dot name from" "dot group from"; row-gap: 0; min-height: 60px; padding: 10px 0; border-bottom: 1px solid color-mix(in srgb, var(--wp--preset--color--border) 50%, var(--wp--preset--color--white)); background: transparent; }
	.ttc-qf__sheet-rows .ttc-qf__dot { grid-area: dot; }
	.ttc-qf__sheet-rows .ttc-qf__dropoff-name { grid-area: name; font-weight: 500; }
	.ttc-qf__sheet-rows .ttc-qf__dropoff-group { grid-area: group; }
	.ttc-qf__sheet-rows .ttc-qf__from { grid-area: from; }
	.ttc-qf__dropoff { grid-template-columns: 16px minmax(0, 1fr) auto; min-height: 56px; padding: 10px 14px; }
	.ttc-qf__dropoffs .ttc-qf__dropoff-group { display: none; }
	/* The price card becomes plain blocks on the page: vehicle cards, trip cards, Book. */
	.ttc-qf__quote { position: static; gap: 14px; padding: 0; border-radius: 0; background: transparent; color: var(--wp--preset--color--ink); }
	.ttc-qf__quote :focus-visible { outline-color: var(--wp--preset--color--brand); }
	.ttc-qf__route { display: none; }
	.ttc-qf__choices { padding: 0; border-radius: 0; background: transparent; }
	.ttc-qf__choices button,
	.ttc-qf__choices button[aria-checked="true"] { padding: 10px; border-width: 2px; border-radius: 12px; }
	.ttc-qf__choices button[aria-checked="true"] { background: var(--wp--preset--color--surface); }
	.ttc-qf .ttc-qf__choice-image { width: 52px; height: 28px; }
	.ttc-qf__choice-price { font-size: 16px; }
	.ttc-qf__trips { gap: 10px; }
	.ttc-qf__trip { flex-direction: column; align-items: flex-start; justify-content: center; gap: 2px; min-height: 72px; padding: 12px 14px; border-color: var(--wp--preset--color--border); border-radius: 12px; background: var(--wp--preset--color--white); color: var(--wp--preset--color--ink); }
	.ttc-qf__trip[aria-checked="true"] { border-color: var(--wp--custom--shade--gold-edge); background: color-mix(in srgb, var(--wp--preset--color--gold) 10%, var(--wp--preset--color--white)); }
	.ttc-qf__trip-label { flex-direction: row; flex-wrap: wrap; gap: 0 4px; font-size: 13px; }
	.ttc-qf__trip strong { font-size: 24px; color: var(--wp--preset--color--navy); }
	.ttc-qf__book { min-height: 56px; border-radius: 12px; font-size: 17px; }
	.ttc-qf__note { font-size: 12px; text-align: center; color: var(--wp--preset--color--muted); }
	html.ttc-qf-picking body { overflow: hidden; }
}

/* ---------- Rates & reservations (route finder): search and Starting from | Going to, the vehicle picker pinned under the header, then a navy band per starting point over From → To rows; cards on phones and tablets, table rows from 1024px ---------- */
.ttc-rf { display: flex; flex-direction: column; gap: 20px; }
.ttc-rf__top { display: flex; flex-direction: column; gap: 12px; }
.ttc-rf__title { margin: 0; font-size: 26px; font-weight: 800; line-height: 1.2; color: var(--wp--preset--color--navy); }
.ttc-rf__lede { margin: 4px 0 0; font-size: 14px; color: var(--wp--preset--color--muted); }
.ttc-rf__controls { display: flex; flex-direction: column; gap: 10px; }
.ttc-rf__search { position: relative; flex: 1; margin: 0; }
.ttc-rf__search svg { position: absolute; top: 50%; left: 14px; color: var(--wp--preset--color--muted); transform: translateY(-50%); pointer-events: none; }
.ttc-rf__search input { width: 100%; height: 50px; box-sizing: border-box; padding: 0 14px 0 42px; border: 1px solid var(--wp--preset--color--field); border-radius: 10px; background: var(--wp--preset--color--white); color: var(--wp--preset--color--ink); font: inherit; font-size: 16px; }
.ttc-rf__direction { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 4px; padding: 4px; border-radius: 10px; background: var(--wp--preset--color--tint); }
.ttc-rf__direction button { display: flex; align-items: center; justify-content: center; gap: 6px; min-height: 44px; padding: 0 12px; border: 0; border-radius: 8px; background: transparent; color: var(--wp--preset--color--navy); font: inherit; font-size: 14px; font-weight: 700; white-space: nowrap; cursor: pointer; }
.ttc-rf__direction button[aria-checked="true"] { background: var(--wp--preset--color--navy); color: var(--wp--preset--color--white); }
/* The vehicle picker: the tiles, then (phones) the chosen vehicle's facts line; it scrolls with the page. */
.ttc-rf__pick { display: flex; flex-direction: column; gap: 8px; }
.ttc-rf__vehicles { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 6px; }
.ttc-rf__vehicles button { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 4px; min-width: 0; min-height: 60px; padding: 6px 4px; border: 2px solid var(--wp--preset--color--border); border-radius: 10px; background: var(--wp--preset--color--white); color: var(--wp--preset--color--navy); font: inherit; cursor: pointer; }
.ttc-rf__vehicles button[aria-checked="true"] { border-color: var(--wp--preset--color--navy); background: var(--wp--preset--color--tint); }
/* Two classes: beats .wp-block-post-content img { height: auto }. */
.ttc-rf .ttc-rf__vehicle-image { width: 100%; height: 24px; object-fit: contain; }
.ttc-rf__vehicle-text { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.ttc-rf__vehicle-name { font-size: 13px; font-weight: 700; white-space: nowrap; }
.ttc-rf__vehicle-facts { display: none; }
/* Jump to: a link per group, wrapping on wide screens and one sideways-scrolling line on phones. */
.ttc-rf__jump { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.ttc-rf__jump-label { margin-right: 4px; font-size: 12px; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; white-space: nowrap; color: var(--wp--preset--color--muted); }
.ttc-rf__jump a { display: inline-flex; align-items: center; min-height: 36px; padding: 0 14px; box-sizing: border-box; border: 1px solid var(--wp--preset--color--border); border-radius: 999px; background: var(--wp--preset--color--white); color: var(--wp--preset--color--navy); font-size: 14px; font-weight: 600; text-decoration: none; white-space: nowrap; }
.ttc-rf__jump a:hover { border: 1px solid var(--wp--custom--shade--gold-edge); background: color-mix(in srgb, var(--wp--preset--color--gold) 8%, var(--wp--preset--color--white)); }
.ttc-rf__jump a[hidden] { display: none; }
@media (max-width: 781px) {
	.ttc-rf__jump { flex-wrap: nowrap; overflow-x: auto; margin-inline: calc(0px - var(--wp--style--root--padding-left)) calc(0px - var(--wp--style--root--padding-right)); padding: 2px var(--wp--style--root--padding-right) 4px var(--wp--style--root--padding-left); scrollbar-width: none; }
	.ttc-rf__jump::-webkit-scrollbar { display: none; }
}
.ttc-rf__empty { padding: 20px; border: 1px dashed var(--wp--preset--color--field); border-radius: 12px; text-align: center; }
.ttc-rf__empty p { margin: 4px 0; }
/* html's scroll-padding-top already clears the header (site.css): a linked or jumped-to group adds only a gap. */
.ttc-rf__group { display: flex; flex-direction: column; scroll-margin-top: 12px; }
/* The band says where the group's rides start (or end, flipped); phones run it edge to edge. It scrolls with the page, so it never covers a price. */
.ttc-rf__band { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 12px; margin-inline: calc(0px - var(--wp--style--root--padding-left)) calc(0px - var(--wp--style--root--padding-right)); padding: 10px var(--wp--style--root--padding-right) 10px var(--wp--style--root--padding-left); background: var(--wp--preset--color--navy); color: var(--wp--preset--color--white); }
.ttc-rf__band h2 { display: flex; flex-direction: column; flex: 1; min-width: 0; margin: 0; line-height: 1.2; color: var(--wp--preset--color--white); }
.ttc-rf__band-label { font-size: 12px; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; color: var(--wp--custom--shade--gold-hover); }
.ttc-rf__band-name { font-size: 18px; font-weight: 800; }
.ttc-rf__group-count { font-size: 13px; color: var(--wp--preset--color--mist); white-space: nowrap; }
/* "⇄ Reverse direction" in words on every screen: 40px tall, 44px with its gap, on phones. */
.ttc-rf__flip { display: inline-flex; align-items: center; justify-content: center; gap: 6px; flex: none; min-height: 40px; padding: 0 12px; border: 1px solid var(--wp--preset--color--mist); border-radius: 999px; background: transparent; color: var(--wp--preset--color--white); font: inherit; font-size: 13px; font-weight: 700; white-space: nowrap; cursor: pointer; }
.ttc-rf__flip:hover { border-color: var(--wp--preset--color--white); }
/* A group flipped on its own: brass, like every chosen thing. */
.ttc-rf__flip[aria-pressed="true"] { border-color: var(--wp--custom--shade--gold-hover); background: var(--wp--preset--color--gold); color: var(--wp--preset--color--navy); }
.ttc-rf__columns { display: none; }
.ttc-rf__rows { display: grid; grid-template-columns: minmax(0, 1fr); gap: 10px; margin: 0; padding: 12px 0 0; list-style: none; }
.ttc-rf__row { display: flex; flex-direction: column; gap: 14px; padding: 16px; border: 1px solid var(--wp--preset--color--border); border-radius: 12px; background: var(--wp--preset--color--white); }
/* From over To beside the dot, dashed line and pin; the hotel or park end (not the band's) is the bold one. */
.ttc-rf__route { display: grid; grid-template-columns: 18px minmax(0, 1fr); gap: 10px; align-items: start; margin: 0; }
.ttc-rf__route-icon { grid-row: span 2; margin-top: 3px; color: var(--wp--preset--color--navy); }
.ttc-rf__route-line { stroke: var(--wp--preset--color--border); }
.ttc-rf__route-hole { fill: var(--wp--preset--color--white); }
.ttc-rf__end { display: flex; flex-direction: column; font-size: 15px; font-weight: 600; line-height: 1.3; color: var(--wp--preset--color--ink); }
.ttc-rf__end.is-place { font-size: 17px; font-weight: 800; color: var(--wp--preset--color--navy); }
.ttc-rf__end-label { font-size: 12px; font-weight: 500; color: var(--wp--preset--color--muted); }
.ttc-rf__route--hourly { display: flex; flex-direction: column; gap: 2px; }
.ttc-rf__terms { font-size: 13px; color: var(--wp--preset--color--muted); }
.ttc-rf__prices { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
/* Each price goes straight to the details step: the amount, then One way / Round trip. */
.ttc-rf__price { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 2px; min-height: 60px; box-sizing: border-box; padding: 8px; border: 1.5px solid var(--wp--preset--color--navy); border-radius: 8px; background: var(--wp--preset--color--white); color: var(--wp--preset--color--navy); line-height: 1.2; text-align: center; text-decoration: none; }
.ttc-rf__price--wide { grid-column: 1 / -1; }
/* Call buttons dial instead of booking: dashed. */
.ttc-rf__price--call { border-style: dashed; }
.ttc-rf__amount { font-size: 20px; font-weight: 800; white-space: nowrap; }
.ttc-rf__trip { font-size: 13px; font-weight: 500; }
.ttc-rf__price:hover { border-color: var(--wp--custom--shade--gold-edge); color: var(--wp--preset--color--navy); }
/* Both prices on the faint blue-grey surface with the navy edge, lifted off the white card (navy 14.8:1); Call buttons stay white and dashed. Every price turns whisper brass with the brass edge on hover (navy 15.1:1). */
.ttc-rf__price:not(.ttc-rf__price--call) { background: var(--wp--preset--color--surface); }
.ttc-rf__price:hover,
.ttc-rf__price:not(.ttc-rf__price--call):hover { background: color-mix(in srgb, var(--wp--preset--color--gold) 8%, var(--wp--preset--color--white)); }
@media (prefers-reduced-motion: no-preference) {
	.ttc-rf__price,
	.ttc-rf__flip { transition: background-color 0.15s ease, border-color 0.15s ease; }
}
@media (min-width: 600px) and (max-width: 1023px) {
	.ttc-rf__rows { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	/* Side by side, a title on two lines would lift its card's prices: they sit at the bottom. */
	.ttc-rf__prices { margin-top: auto; }
	.ttc-rf__controls { flex-direction: row; }
	.ttc-rf__direction { flex: none; }
}
/* Phones: the name on its own line, then the count and Reverse direction under it. */
@media (max-width: 599px) {
	.ttc-rf__band h2 { flex-basis: 100%; }
	.ttc-rf__band .ttc-rf__group-count { margin-right: auto; }
}
/* Small phones: the band's name and the price lines still fit. */
@media (max-width: 379px) {
	.ttc-rf__band-name { font-size: 16px; }
	.ttc-rf__amount { font-size: 18px; }
	.ttc-rf__trip { font-size: 12px; }
}
@media (min-width: 1024px) {
	.ttc-rf { gap: 24px; }
	.ttc-rf__top { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.4fr); align-items: end; gap: 20px 32px; }
	.ttc-rf__title { font-size: 36px; }
	.ttc-rf__lede { margin-top: 6px; font-size: 15px; }
	.ttc-rf__controls { flex-direction: row; gap: 12px; }
	.ttc-rf__direction { flex: none; }
	.ttc-rf__direction button { padding: 0 16px; }
	.ttc-rf__vehicles { gap: 12px; }
	.ttc-rf__vehicles button { flex-direction: row; justify-content: flex-start; gap: 12px; min-height: 0; padding: 10px 14px; border-radius: 12px; text-align: left; }
	.ttc-rf .ttc-rf__vehicle-image { flex: none; width: 72px; height: 40px; }
	.ttc-rf__vehicle-name { font-size: 15px; }
	.ttc-rf__vehicle-facts { display: grid; margin-top: 2px; }
	.ttc-rf__facts { display: none; }
	.ttc-rf__group { overflow: hidden; border: 1px solid var(--wp--preset--color--border); border-radius: 12px; }
	.ttc-rf__band { flex-wrap: nowrap; gap: 12px; margin-inline: 0; padding: 12px 20px; }
	.ttc-rf__band h2 { flex: none; }
	.ttc-rf__band-name { font-size: 20px; }
	.ttc-rf__group-count { margin-right: auto; align-self: flex-end; padding-bottom: 2px; }
	.ttc-rf__flip { min-height: 36px; padding: 0 14px; }
	.ttc-rf__columns { display: grid; grid-template-columns: 170px 170px; gap: 12px; margin: 0; font-size: 12px; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; color: var(--wp--preset--color--mist); text-align: center; }
	.ttc-rf__rows { display: flex; flex-direction: column; gap: 0; padding: 0; }
	.ttc-rf__row { flex-direction: row; justify-content: space-between; align-items: center; gap: 16px; padding: 14px 20px; border: 0; border-top: 1px solid var(--wp--preset--color--border); border-radius: 0; }
	.ttc-rf__rows > .ttc-rf__row:first-child { border-top: 0; }
	.ttc-rf__route { flex: 1; gap: 4px 12px; align-items: center; }
	.ttc-rf__route-icon { margin-top: 0; }
	.ttc-rf__route--hourly { align-items: flex-start; }
	.ttc-rf__end { display: block; }
	.ttc-rf__end-label { font-size: 13px; }
	.ttc-rf__prices { flex: none; grid-template-columns: 170px 170px; gap: 12px; }
	.ttc-rf__price { min-height: 0; padding: 9px 10px; }
	.ttc-rf__amount { font-size: 21px; }
}

/* ---------- From price ---------- */
.ttc-from-price { margin: 0; font-size: 22px; font-weight: 500; }
.ttc-from-price strong { font-weight: 800; }

/* ---------- Booking result pages (/booking/...) ---------- */
.ttc-result { max-width: 760px; margin: 0 auto; padding: 64px 24px 80px; }
.ttc-result__title { margin: 0 0 16px; font-size: clamp(28px, 4vw, 40px); }
.ttc-result #ttc-pay { margin: 24px 0; }
.ttc-result__contact { margin-top: 32px; padding-top: 20px; border-top: 1px solid var(--wp--preset--color--border); color: var(--wp--preset--color--muted); }
.ttc-review__name { font-weight: 800; }
a.ttc-review__name { color: inherit; }
.ttc-reviews__credit { margin: -12px 0 0; font-size: 12px; color: var(--wp--preset--color--muted); text-align: right; }

/* The quote card is white even inside dark sections: keep the brand focus ring. */
.ttc-quote :where(a, button, input, select, textarea, summary, [tabindex]):focus-visible { outline-color: var(--wp--preset--color--brand); }

/* Booking extras: seat types, luggage badge, extra charges, price box. */
.ttc-quote__seat-types { display: flex; flex-direction: column; gap: 8px; }
.ttc-quote__seat-types[hidden] { display: none; }
.ttc-vehicle-option__badge { align-self: flex-start; margin-top: 4px; padding: 2px 8px; border-radius: 6px; background: var(--wp--custom--status--notice--bg); color: var(--wp--custom--status--notice--text); font-size: 12px; font-weight: 700; }
.ttc-vehicle-option__base { display: block; font-size: 12px; font-weight: 600; color: var(--wp--preset--color--muted); text-align: right; }
/* Charges that could apply, in muted text: one that does shows as its own price line above the total. */
/* Charges that could be added: info (the tip box's blue), with an icon and the amount in bold so it's seen; worded "only if" so it never reads as charged. */
.ttc-quote__extras { margin: 0; padding: 0; list-style: none; display: flex; flex-direction: column; gap: 6px; font-size: 13px; }
.ttc-quote__extras li { display: flex; align-items: flex-start; gap: 8px; padding: 8px 12px; border-radius: 8px; background: var(--wp--preset--color--tint); color: var(--wp--preset--color--ink); line-height: 1.45; }
.ttc-quote__extras svg { flex: none; margin-top: 1px; color: var(--wp--preset--color--navy); }
.ttc-quote__extras strong { color: var(--wp--preset--color--navy); font-weight: 800; }
/* Choice cards (luggage type, child seat type): an icon, what it is, and for seats the ages and weights it fits. */
.ttc-choice-legend { margin: 0 0 8px; font-size: 13px; font-weight: 700; color: var(--wp--preset--color--muted); }
.ttc-choices-grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: 8px; }
.ttc-choice { display: flex; align-items: flex-start; gap: 12px; width: 100%; box-sizing: border-box; padding: 12px; border: 1px solid var(--wp--preset--color--border); border-radius: 12px; background: var(--wp--preset--color--white); color: var(--wp--preset--color--ink); font: inherit; text-align: left; cursor: pointer; }
.ttc-choice:hover { border: 1px solid var(--wp--custom--shade--gold-edge); }
.ttc-choice[aria-checked="true"] { border: 2px solid var(--wp--preset--color--navy); padding: 11px; background: var(--wp--preset--color--tint); }
.ttc-choice__icon { flex: none; width: 36px; height: 36px; color: var(--wp--preset--color--navy); }
.ttc-choice__fill { fill: var(--wp--preset--color--gold); fill-opacity: 0.28; }
.ttc-choice__solid { fill: currentColor; }
.ttc-choice__text { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.ttc-choice__text strong { font-size: 15px; color: var(--wp--preset--color--navy); }
.ttc-choice__text > span { font-size: 13px; line-height: 1.4; color: var(--wp--preset--color--muted); }
.ttc-choice__text > .ttc-choice__tags { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 4px; }
.ttc-choice__tag { padding: 2px 8px; border-radius: 999px; background: var(--wp--preset--color--surface); color: var(--wp--preset--color--ink); font-size: 12px; font-weight: 600; }
.ttc-luggage { margin-top: 4px; }
/* Free car seats: a card per seat type with its own − n +, the total at most one per child (quote-form.js). */
.ttc-seat-qty__head { display: flex; justify-content: space-between; align-items: baseline; gap: 8px; margin: 0; }
.ttc-seat-qty__head strong { font-size: 14px; color: var(--wp--preset--color--ink); }
.ttc-seat-qty__count { flex: none; font-size: 13px; font-weight: 700; color: var(--wp--preset--color--muted); }
.ttc-seat-qty__count.is-full { color: var(--wp--preset--color--navy); }
.ttc-seat-qty__list { display: grid; grid-template-columns: minmax(0, 1fr); gap: 8px; }
.ttc-seat-qty__note { margin: 0; font-size: 12px; color: var(--wp--preset--color--muted); }
.ttc-seat-card { display: flex; flex-direction: column; align-items: flex-start; gap: 10px; padding: 12px; border: 1px solid var(--wp--preset--color--border); border-radius: 12px; background: var(--wp--preset--color--white); }
.ttc-seat-card.is-on { border: 2px solid var(--wp--preset--color--navy); padding: 11px; background: var(--wp--preset--color--tint); }
.ttc-seat-card__top { display: flex; align-items: flex-start; gap: 12px; }
.ttc-seat-card > .ttc-choice__tags { display: flex; flex-wrap: wrap; gap: 6px; }
/* The quantity sits on the left, under the tags; at the bottom when cards sit side by side. */
.ttc-seat-card .ttc-stepper__control { margin-top: auto; }
.ttc-seat-card .ttc-stepper__control button[disabled] { opacity: 0.35; cursor: not-allowed; }
.ttc-seat-card .ttc-stepper__control output { display: grid; place-items: center; width: 48px; min-height: 44px; font-size: 16px; font-weight: 800; color: var(--wp--preset--color--ink); }
@media (min-width: 600px) {
	.ttc-choices-grid,
	.ttc-seat-qty__list { grid-template-columns: repeat(3, minmax(0, 1fr)); }
	.ttc-luggage .ttc-choice { flex-direction: column; gap: 8px; }
}
/* The driver tip in the booking summary: 20%, 25%, 30%, Custom (20% or more), or cash; "Gratuity is not included" stays in its heading. */
.ttc-tip { display: flex; flex-direction: column; gap: 8px; padding: 12px; border-radius: 12px; background: var(--wp--preset--color--tint); }
.ttc-tip__head { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: baseline; gap: 2px 8px; margin: 0; }
.ttc-tip__head strong { font-size: 15px; color: var(--wp--preset--color--navy); }
.ttc-tip__head span { font-size: 12px; color: var(--wp--preset--color--muted); }
.ttc-tip__options { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 6px; }
.ttc-tip__options button { min-height: 48px; padding: 6px 8px; border: 1px solid var(--wp--preset--color--border); border-radius: 10px; background: var(--wp--preset--color--white); color: var(--wp--preset--color--navy); font: inherit; font-size: 14px; font-weight: 700; line-height: 1.2; cursor: pointer; }
.ttc-tip__options button small { display: block; font-size: 12px; font-weight: 500; color: var(--wp--preset--color--muted); }
.ttc-tip__options button[aria-checked="true"] { border: 2px solid var(--wp--preset--color--navy); }
.ttc-tip__options .ttc-tip__cash { grid-column: 1 / -1; }
.ttc-tip__custom { display: flex; align-items: center; gap: 8px; font-size: 14px; }
.ttc-tip__custom[hidden] { display: none; }
.ttc-quote .ttc-tip__custom input { flex: none; width: 90px; min-height: 44px; }
.ttc-tip__driver { display: flex; align-items: center; gap: 6px; margin: 0; font-size: 13px; font-weight: 600; color: var(--wp--preset--color--ink); }
.ttc-tip__driver svg { flex: none; color: var(--wp--preset--color--navy); }
.ttc-quote__gratuity { display: flex; align-items: flex-start; gap: 6px; margin: 0; font-size: 13px; font-weight: 600; line-height: 1.45; color: var(--wp--preset--color--ink); }
.ttc-quote__gratuity svg { flex: none; margin-top: 1px; color: var(--wp--preset--color--navy); }
.ttc-quote__party-problem[hidden], .ttc-quote__price[hidden] { display: none; }
.ttc-quote__party-problem { margin: 0; padding: 10px 12px; border-radius: 10px; background: var(--wp--custom--status--warning--bg); color: var(--wp--custom--status--warning--text); font-size: 14px; font-weight: 700; }
.ttc-quote__price { border: 1px solid var(--wp--preset--color--border); border-radius: 12px; padding: 14px; }
.ttc-quote__price h3 { margin: 0 0 8px; font-size: 15px; font-weight: 800; }
.ttc-quote__price-lines { display: grid; grid-template-columns: 1fr auto; gap: 4px 12px; font-size: 14px; }
.ttc-quote__price-lines strong { border-top: 1px solid var(--wp--preset--color--border); padding-top: 6px; font-size: 16px; }
.ttc-quote__card-note { margin: 0; padding: 12px 14px; border-radius: 12px; background: var(--wp--preset--color--surface); font-size: 13px; }
.ttc-fineprint { margin-top: 32px; }
/* Reservations: the collapsed quote form above it is hidden, and .page-main > [hidden] + * would take its gap away. */
.page-main > .wp-block-ttc-fine-print { margin-block-start: 48px; }
.ttc-fineprint h2 { margin: 0 0 16px; font-size: clamp(22px, 3vw, 28px); font-weight: 800; }
.ttc-fineprint__grid { display: grid; grid-template-columns: 1fr; gap: 16px; }
@media (min-width: 768px) { .ttc-fineprint__grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.ttc-fineprint__item { border: 1px solid var(--wp--preset--color--border); border-radius: 14px; padding: 18px; display: flex; flex-direction: column; gap: 6px; }
.ttc-fineprint__item h3 { margin: 0; font-size: 17px; font-weight: 800; }
.ttc-fineprint__item p { margin: 0; font-size: 15px; color: var(--wp--preset--color--muted); }
.ttc-fineprint__tag { color: var(--wp--preset--color--brand); }
.ttc-fineprint__item--call { background: var(--wp--preset--color--surface); }
/* Car seats: each type on its own line, its ages and weights under the name. */
.ttc-fineprint__seats { display: flex; flex-direction: column; gap: 8px; margin: 4px 0 0; padding: 0; list-style: none; }
.ttc-fineprint__seats li { display: flex; flex-direction: column; font-size: 14px; color: var(--wp--preset--color--muted); }
.ttc-fineprint__seats strong { font-size: 15px; color: var(--wp--preset--color--ink); }
/* The ages and the weights each stay on one line: a narrow card breaks between them, not inside. */
.ttc-fineprint__seats span span { white-space: nowrap; }
.ttc-fineprint__item .ttc-fineprint__note { font-size: 13px; }
.ttc-quote__flight[hidden], .ttc-quote__add-flight[hidden], .ttc-quote__hint[hidden] { display: none; }
.ttc-quote__add-flight { align-self: flex-start; }

/* ---------- Book your ride (ttc/route-booking) ---------- */
.ttc-route-booking { display: flex; flex-direction: column; gap: 20px; }
.ttc-route-booking__head { display: flex; justify-content: space-between; align-items: flex-end; gap: 16px 24px; flex-wrap: wrap; }
.ttc-route-booking__heading { margin: 0; color: var(--wp--preset--color--navy); }
.ttc-route-booking__intro { margin: 6px 0 0; color: var(--wp--preset--color--muted); }
.ttc-route-booking__rates { font-weight: 700; }
.ttc-route-booking__tabs { display: flex; flex-wrap: wrap; gap: 8px; }
.ttc-route-booking__tabs button { font: inherit; font-size: 15px; font-weight: 700; min-height: 44px; padding: 0 18px; border-radius: 999px; cursor: pointer; background: var(--wp--preset--color--white); color: var(--wp--preset--color--ink); border: 1px solid var(--wp--preset--color--border); }
.ttc-route-booking__tabs button[aria-selected="true"] { background: var(--wp--preset--color--navy); color: var(--wp--preset--color--white); border-color: var(--wp--preset--color--navy); }
.ttc-route-booking__tabs button { display: inline-flex; align-items: center; gap: 8px; }
.ttc-route-booking__tab-name { white-space: nowrap; }
.ttc-route-booking__tab-count { font-size: 12px; font-weight: 600; color: var(--wp--preset--color--muted); }
.ttc-route-booking__tabs button[aria-selected="true"] .ttc-route-booking__tab-count { padding: 1px 7px; border-radius: 999px; background: var(--wp--preset--color--gold); color: var(--wp--preset--color--navy); font-weight: 800; }
/* Styled by .ttc-segmented, like One way / Round trip on Rates. */
.ttc-route-booking__direction { align-self: flex-start; }
.ttc-route-booking__vehicles { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; }
.ttc-route-booking__vehicles button { font: inherit; display: flex; align-items: center; gap: 12px; min-height: 76px; padding: 10px 14px; border-radius: 14px; cursor: pointer; text-align: left; background: var(--wp--preset--color--white); color: var(--wp--preset--color--ink); border: 1px solid var(--wp--preset--color--border); }
.ttc-route-booking__vehicles button > span { display: flex; flex-direction: column; }
.ttc-route-booking__vehicles button > span > span { font-size: 13px; color: var(--wp--preset--color--muted); }
.ttc-route-booking__vehicles .ttc-route-booking__seats { font-size: 12px; }
.ttc-route-booking__vehicles button[aria-checked="true"] { background: var(--wp--preset--color--tint); border: 2px solid var(--wp--preset--color--brand); padding: 9px 13px; }
.ttc-route-booking__vehicle-image { width: 88px; height: 52px; object-fit: contain; flex: none; }
/* Desktop: the wrapper is invisible to layout and the cards carry every detail, so the one-line facts are for phones only. */
.ttc-route-booking__vehicle-bar { display: contents; }
.ttc-route-booking__facts { display: none; }
/* Phones: the vehicle and the routes are pickers (route-booking.js), each opening a sheet. */
.ttc-route-booking__pickers { display: flex; flex-direction: column; gap: 12px; }
.ttc-route-booking__picker-field { display: flex; flex-direction: column; gap: 6px; }
.ttc-route-booking__picker-label { font-size: 13px; font-weight: 700; color: var(--wp--preset--color--muted); }
.ttc-route-booking__picker { display: flex; align-items: center; width: 100%; min-height: 52px; padding: 8px 40px 8px 14px; border: 1px solid var(--wp--preset--color--field); border-radius: 12px; background: var(--wp--preset--color--white) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5l5 5 5-5' fill='none' stroke='%23475569' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") no-repeat right 16px center / 12px 8px; color: var(--wp--preset--color--ink); font: inherit; font-size: 16px; font-weight: 700; text-align: left; cursor: pointer; }
.ttc-route-booking__picker-value { display: flex; align-items: center; gap: 12px; min-width: 0; }
.ttc-route-booking__picker-value .ttc-route-booking__vehicle-image { width: 80px; height: 48px; }
.ttc-route-booking__picker-value > span { display: flex; flex-direction: column; min-width: 0; }
.ttc-route-booking__picker-value > span > span { font-size: 13px; font-weight: 500; color: var(--wp--preset--color--muted); }
.ttc-choices { position: fixed; inset: 0; z-index: 1000; display: flex; flex-direction: column; justify-content: flex-end; }
.ttc-choices__backdrop { position: absolute; inset: 0; background: rgba(0, 33, 71, 0.45); }
.ttc-choices__panel { position: relative; display: flex; flex-direction: column; max-height: 85dvh; padding-bottom: env(safe-area-inset-bottom); background: var(--wp--preset--color--white); border-radius: 20px 20px 0 0; box-shadow: 0 -12px 32px rgba(0, 33, 71, 0.2); color: var(--wp--preset--color--ink); }
.ttc-choices__head { display: flex; align-items: center; justify-content: space-between; padding: 8px 8px 4px 24px; }
.ttc-choices__title { margin: 0; font-size: 20px; font-weight: 800; }
.ttc-choices__close { display: flex; align-items: center; justify-content: center; width: 44px; height: 44px; padding: 0; border: 0; background: transparent; color: inherit; cursor: pointer; }
.ttc-choices__options { display: flex; flex-direction: column; gap: 8px; padding: 4px 16px 24px; overflow-y: auto; overscroll-behavior: contain; }
.ttc-choices__option { display: flex; align-items: center; gap: 12px; min-height: 56px; padding: 10px 12px; border: 1px solid var(--wp--preset--color--border); border-radius: 12px; background: var(--wp--preset--color--white); color: inherit; font: inherit; font-size: 16px; text-align: left; cursor: pointer; }
.ttc-choices__option[aria-pressed="true"] { border: 2px solid var(--wp--preset--color--brand); padding: 9px 11px; background: var(--wp--preset--color--tint); }
.ttc-choices__option > span,
.ttc-choices__option-text { flex: 1; display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.ttc-choices__option > span > span,
.ttc-choices__option-text > span { font-size: 13px; color: var(--wp--preset--color--muted); }
.ttc-choices__option .ttc-route-booking__vehicle-image { width: 96px; height: 56px; }
.ttc-choices__option > .ttc-choices__count { flex: none; font-size: 14px; color: var(--wp--preset--color--muted); }
.ttc-route-booking__search { margin: 0; }
.ttc-route-booking__search input { width: 100%; min-height: 54px; padding: 0 16px; font: inherit; font-size: 16px; border: 1px solid var(--wp--preset--color--field); border-radius: 12px; background: var(--wp--preset--color--white); }
.ttc-route-booking__panel { display: flex; flex-direction: column; gap: 12px; }
.ttc-route-booking.is-enhanced .ttc-route-booking__area { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
.ttc-route-booking__area { margin: 8px 0 0; font-size: 18px; color: var(--wp--preset--color--navy); }
.ttc-route-booking__tiles { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; }
.ttc-route-booking__tile { display: flex; flex-direction: column; gap: 6px; padding: 18px; background: var(--wp--preset--color--white); border: 1px solid var(--wp--preset--color--border); border-radius: 16px; }
.ttc-route-booking__from { font-size: 13px; font-weight: 600; color: var(--wp--preset--color--muted); }
.ttc-route-booking__to { font-size: 18px; font-weight: 800; line-height: 1.25; color: var(--wp--preset--color--ink); }
.ttc-route-booking__vehicle { margin-top: auto; font-size: 13px; color: var(--wp--preset--color--muted); }
.ttc-route-booking__buttons { padding-top: 10px; display: flex; flex-direction: column; gap: 8px; }
.ttc-route-booking__oneway,
.ttc-route-booking__roundtrip { display: flex; justify-content: space-between; align-items: center; min-height: 44px; padding: 0 14px; border-radius: 10px; font-size: 14px; font-weight: 700; text-decoration: none; }
.ttc-route-booking__oneway { background: var(--wp--preset--color--gold); color: var(--wp--preset--color--navy); border: 1px solid var(--wp--custom--shade--gold-edge); }
.ttc-route-booking__roundtrip { background: var(--wp--preset--color--white); color: var(--wp--preset--color--brand); border: 1px solid var(--wp--preset--color--brand); }
.ttc-route-booking__oneway strong,
.ttc-route-booking__roundtrip strong { font-size: 17px; font-weight: 800; }
.ttc-route-booking__oneway:hover { background: var(--wp--custom--shade--gold-hover); }
.ttc-route-booking__roundtrip:hover { background: var(--wp--preset--color--tint); }
@media (prefers-reduced-motion: no-preference) {
	.ttc-route-booking__oneway,
	.ttc-route-booking__roundtrip { transition: background-color 0.15s ease; }
}
.ttc-route-booking__call { margin: 0; font-size: 14px; color: var(--wp--preset--color--muted); }
.ttc-route-booking__more,
.ttc-route-booking__empty { margin: 0; font-size: 14px; color: var(--wp--preset--color--muted); }
/* "Route not listed?" (home, Book your ride, Rates & Reservations): a soft blue-grey panel, the title over the muted line and a brass Get a quote (navy on brass 7.5:1, muted on the tint 6.6:1). */
.ttc-route-booking__custom,
.ttc-qf__custom,
.ttc-rf__custom,
.ttc-rates__custom { display: flex; justify-content: space-between; align-items: center; gap: 14px 24px; flex-wrap: wrap; padding: 20px 24px; border: 0; border-radius: 12px; background: var(--wp--preset--color--tint); }
.ttc-route-booking__custom p,
.ttc-qf__custom p,
.ttc-rf__custom p,
.ttc-rates__custom p { margin: 0; display: flex; flex-direction: column; gap: 2px; }
.ttc-route-booking__custom strong,
.ttc-qf__custom strong,
.ttc-rf__custom strong,
.ttc-rates__custom strong { font-size: 18px; font-weight: 800; color: var(--wp--preset--color--navy); }
.ttc-route-booking__custom p span,
.ttc-qf__custom p span,
.ttc-rf__custom p span,
.ttc-rates__custom p span { font-size: 14px; color: var(--wp--preset--color--muted); }
.ttc-route-booking__custom a,
.ttc-qf__custom a,
.ttc-rf__custom a,
.ttc-rates__custom a { font-weight: 800; }
.ttc-route-booking__custom > a,
.ttc-qf__custom > a,
.ttc-rf__custom > a,
.ttc-rates__custom > a { display: inline-flex; align-items: center; min-height: 48px; padding: 0 20px; border: 1px solid var(--wp--custom--shade--gold-edge); border-radius: 8px; background: var(--wp--preset--color--gold); color: var(--wp--preset--color--navy); text-decoration: none; white-space: nowrap; }
.ttc-route-booking__custom > a:hover,
.ttc-qf__custom > a:hover,
.ttc-rf__custom > a:hover,
.ttc-rates__custom > a:hover { background: var(--wp--custom--shade--gold-hover); color: var(--wp--preset--color--navy); }
@media (min-width: 782px) {
	.ttc-route-booking__pickers { display: none !important; }
}
@media (max-width: 781px) {
	.ttc-route-booking.is-enhanced .ttc-route-booking__tabs,
	.ttc-route-booking.is-enhanced .ttc-route-booking__vehicle { display: none; }
	/* Phones: every vehicle as a photo tile, the chosen one's facts on one line, both pinned under the header while the
	   routes scroll by (--ttc-sticky-top is the header's height, site.css). Edge to edge, on the section's own background. */
	.ttc-route-booking__head { order: -2; }
	.ttc-route-booking__vehicle-bar {
		order: -1;
		position: sticky;
		top: var(--ttc-sticky-top, 0px);
		z-index: 40;
		display: flex;
		flex-direction: column;
		gap: 8px;
		margin-inline: calc(0px - var(--wp--style--root--padding-left)) calc(0px - var(--wp--style--root--padding-right));
		padding: 10px var(--wp--style--root--padding-right) 12px var(--wp--style--root--padding-left);
		background: var(--ttc-vehicle-bar-bg, var(--wp--preset--color--white));
		border-bottom: 1px solid var(--wp--preset--color--border);
	}
	.ttc-route-booking__vehicles { gap: 6px; }
	.ttc-route-booking__vehicles button { flex-direction: column; justify-content: center; gap: 4px; min-height: 68px; padding: 8px 4px; text-align: center; }
	.ttc-route-booking__vehicles button[aria-checked="true"] { padding: 7px 3px; }
	.ttc-route-booking__vehicles .ttc-route-booking__vehicle-image { width: 100%; height: 30px; }
	.ttc-route-booking__vehicles button > span > strong { font-size: 13px; line-height: 1.2; white-space: nowrap; }
	.ttc-route-booking__vehicles button > span > span { display: none; }
	.ttc-route-booking__facts,
	.ttc-rates__facts { display: grid; }
	.ttc-route-booking__direction { align-self: stretch; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.ttc-segmented button { padding: 0 8px; font-size: 14px; }
	.ttc-route-booking__tiles { grid-template-columns: minmax(0, 1fr); }
	.ttc-route-booking__buttons { flex-direction: row; }
	.ttc-route-booking__oneway,
	.ttc-route-booking__roundtrip { flex: 1; flex-direction: column; justify-content: center; align-items: flex-start; min-height: 56px; line-height: 1.2; }
}
/* 768–781px: the tall desktop header (menu wrapping) is still up, so the vehicle row stays in place there. */
@media (min-width: 768px) and (max-width: 781px) {
	.ttc-route-booking__vehicle-bar { position: static; }
}
@media (min-width: 782px) and (max-width: 1099px) {
	.ttc-route-booking__tiles { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* Quote form: address mode and the way back to the route list */
.ttc-quote__addresses { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
@media (max-width: 599px) { .ttc-quote__addresses { grid-template-columns: minmax(0, 1fr); } }
.ttc-quote__change-route { display: inline-flex; align-items: center; min-height: 44px; margin-bottom: 8px; font-weight: 700; }

/* ---------- Quote form: wide on Reservations, narrow until the details step ---------- */
.ttc-quote.alignwide:not(.is-details) { max-width: 760px; margin-inline: auto; }
.ttc-quote.is-details { background: transparent; box-shadow: none; padding: 0; }
.ttc-quote.is-details .ttc-quote__change-route { margin-bottom: 12px; }
/* Typed addresses: the route link only on the first step — later, Edit (vehicles) and the details fields change the addresses. */
.ttc-quote.is-address-path:not(.is-route-step) [data-action="change-route"] { display: none; }

/* ---------- Your details ---------- */
.ttc-details { display: grid; grid-template-columns: minmax(0, 1fr); gap: 16px; align-items: start; }
.ttc-details__main { display: flex; flex-direction: column; gap: 16px; min-width: 0; }
.ttc-details__card { background: var(--wp--preset--color--white); border: 1px solid var(--wp--preset--color--border); border-radius: 16px; padding: 22px 24px; display: flex; flex-direction: column; gap: 14px; }
.ttc-details__card h3 { margin: 0; font-size: 19px; font-weight: 800; color: var(--wp--preset--color--navy); }
.ttc-details__card--return { border-color: var(--wp--preset--color--mist); }
.ttc-details__head { display: flex; justify-content: space-between; align-items: center; gap: 12px; flex-wrap: wrap; }
.ttc-details__row { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.ttc-details__row--one { grid-template-columns: minmax(0, 1fr); }
/* Where the confirmation goes, next to Book: "Confirmation goes to" and Edit on one row, the address on its own row
   under them (whole, breaking before the @ if it must). Amber while it's empty or looks wrong. */
.ttc-email-check { display: grid; grid-template-columns: minmax(0, 1fr) auto; grid-template-areas: "label edit" "email email"; align-items: baseline; gap: 2px 10px; margin: 0 0 12px; padding: 10px 12px; border-radius: 10px; background: var(--wp--preset--color--surface); font-size: 14px; line-height: 1.35; color: var(--wp--preset--color--muted); }
.ttc-email-check > span { grid-area: label; }
.ttc-email-check strong { grid-area: email; min-width: 0; color: var(--wp--preset--color--ink); }
.ttc-email-check a { grid-area: edit; color: var(--wp--preset--color--navy); font-weight: 700; text-decoration: underline; text-underline-offset: 3px; }
.ttc-email-check.is-empty,
.ttc-email-check.is-off { background: var(--wp--custom--status--warning--bg); color: var(--wp--custom--status--warning--text); }
.ttc-email-check.is-off strong { color: inherit; }
.ttc-details__bar .ttc-email-check { display: none; }
.ttc-details__row > * { margin: 0; min-width: 0; }
/* A time is three dropdowns (QuoteForm::timeField): Hour : Minutes AM/PM, the same on every phone and browser. */
.ttc-time { display: grid; grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr) minmax(0, 1.2fr); align-items: center; gap: 6px; }
.ttc-time__colon { font-size: 18px; font-weight: 800; color: var(--wp--preset--color--navy); }
.ttc-quote .ttc-time select { min-width: 0; padding-left: 10px; padding-right: 26px; background-position: right 10px center; font-variant-numeric: tabular-nums; }
/* The note under a flight time, in the notice style: when the flight arrives, or when we pick up before it leaves. */
.ttc-time__note { display: flex; align-items: flex-start; gap: 8px; line-height: 1.45; }
.ttc-time__note svg { flex: none; margin-top: 1px; }
.ttc-time__note[hidden] { display: none; }
@media (min-width: 900px) {
	/* Its own row under the date, the dropdowns at their own width. */
	.ttc-details__row > .ttc-field--time { grid-column: 1 / -1; }
	.ttc-time { grid-template-columns: 120px auto 120px 130px; justify-content: start; }
}
.ttc-details__trip button { min-height: 40px; font-size: 14px; }
.ttc-details__check { display: flex; gap: 10px; align-items: flex-start; font-weight: 600; cursor: pointer; }
.ttc-details__check input { width: 20px; height: 20px; margin: 2px 0 0; accent-color: var(--wp--preset--color--brand); flex: none; }
.ttc-details__check .ttc-quote__hint { display: block; font-weight: 400; }
.ttc-details__preorder { margin: -6px 0 0 30px; font-weight: 700; }
.ttc-details__note { margin: 0; }
.ttc-details__card > .ttc-quote__link { align-self: flex-start; }
.ttc-details__switch { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 12px 14px; border: 1px solid var(--wp--preset--color--border); border-radius: 12px; background: var(--wp--preset--color--surface); }
.ttc-details__switch .ttc-quote__hint { display: block; }
.ttc-switch { position: relative; flex: none; width: 52px; height: 30px; border: 0; border-radius: 999px; background: var(--wp--preset--color--field); cursor: pointer; }
.ttc-switch[aria-checked="true"] { background: var(--wp--preset--color--brand); }
.ttc-switch__knob { position: absolute; top: 3px; left: 3px; width: 24px; height: 24px; border-radius: 50%; background: var(--wp--preset--color--white); box-shadow: 0 1px 3px rgba(0, 33, 71, 0.3); }
.ttc-switch[aria-checked="true"] .ttc-switch__knob { left: 25px; }
.ttc-details__kids { display: flex; flex-direction: column; gap: 12px; padding: 14px; border-radius: 12px; background: var(--wp--preset--color--surface); border: 1px solid var(--wp--preset--color--border); }
.ttc-stepper { display: flex; flex-direction: column; gap: 6px; }
.ttc-stepper__control { display: inline-flex; align-items: stretch; align-self: flex-start; border: 1px solid var(--wp--preset--color--field); border-radius: 10px; overflow: hidden; background: var(--wp--preset--color--white); }
.ttc-stepper__control button { font: inherit; font-size: 20px; width: 44px; min-height: 44px; border: 0; background: var(--wp--preset--color--surface); color: var(--wp--preset--color--brand); cursor: pointer; }
.ttc-quote .ttc-stepper__control input { width: 56px; min-height: 44px; border: 0; border-radius: 0; text-align: center; font-weight: 800; -moz-appearance: textfield; }
.ttc-stepper__control input::-webkit-outer-spin-button,
.ttc-stepper__control input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }

/* Booking card */
.ttc-booking { gap: 16px; }
.ttc-booking__mini { display: none; }
.ttc-booking__body { display: flex; flex-direction: column; gap: 14px; }
.ttc-booking__head { display: flex; justify-content: space-between; align-items: center; gap: 12px; }
.ttc-booking__title { margin: 0; }
.ttc-booking__route { margin: 0; font-weight: 700; }
.ttc-booking__vehicles { display: flex; flex-direction: column; gap: 8px; }
.ttc-booking__vehicle { display: flex; align-items: center; gap: 12px; width: 100%; padding: 10px 12px; text-align: left; font: inherit; color: var(--wp--preset--color--ink); background: var(--wp--preset--color--white); border: 1px solid var(--wp--preset--color--border); border-radius: 12px; cursor: pointer; }
.ttc-booking__vehicle img { width: 64px; height: 34px; object-fit: contain; flex: none; }
.ttc-booking__vehicle[aria-checked="true"] { border: 2px solid var(--wp--preset--color--brand); background: var(--wp--preset--color--tint); padding: 9px 11px; }
.ttc-booking__vehicle[aria-disabled="true"] { opacity: 0.55; cursor: not-allowed; }
.ttc-booking__vehicle-text { display: flex; flex-direction: column; font-size: 12px; color: var(--wp--preset--color--muted); }
.ttc-booking__vehicle-text strong { font-size: 15px; color: var(--wp--preset--color--ink); }
.ttc-booking__vehicle-reason { font-weight: 700; color: var(--wp--custom--status--warning--text); }
.ttc-booking__vehicle-price { margin-left: auto; font-size: 16px; font-weight: 800; }
.ttc-booking .ttc-quote__price-lines { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 6px 12px; font-size: 14px; }
.ttc-booking__total { display: flex; justify-content: space-between; margin: 0; padding-top: 10px; border-top: 1px solid var(--wp--preset--color--border); font-size: 18px; font-weight: 800; }
.ttc-booking__book { width: 100%; min-height: 52px; font-size: 17px; }
/* Notes in the booking card stay compact so total and Book fit on short laptop screens. */
.ttc-booking .ttc-quote__extras li,
.ttc-booking .ttc-quote__card-note { padding: 8px 12px; font-size: 12px; line-height: 1.45; }
/* Phones: the booking card is folded, so a price card with the same notes ends the form (above the Book now bar). */
.ttc-details__price { display: none; }
.ttc-details__price .ttc-quote__price-lines { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 6px 12px; font-size: 14px; }
.ttc-details__price .ttc-quote__extras li,
.ttc-details__price .ttc-quote__card-note { margin: 0; padding: 8px 12px; font-size: 13px; line-height: 1.45; }
.ttc-booking__problem,
.ttc-details__bar-problem { box-sizing: border-box; margin: 0; padding: 10px 12px; border-radius: 10px; background: var(--wp--custom--status--warning--bg); color: var(--wp--custom--status--warning--text); font-size: 14px; font-weight: 700; }
.ttc-booking__problem a,
.ttc-details__bar-problem a { color: inherit; }
.ttc-details__bar { display: none; }

@media (min-width: 900px) {
	.ttc-details { grid-template-columns: minmax(0, 7fr) minmax(0, 4fr); gap: 24px; }
	.ttc-details__side { grid-column: 2; grid-row: 1; display: flex; flex-direction: column; }
	.ttc-details__main { grid-column: 1; grid-row: 1; }
	/* The booking card has its own Change route beside the title. */
	.ttc-quote.is-details .ttc-quote__change-route { display: none; }
}
/* Sticky under the header; a card taller than the screen pins by its bottom instead (quote-form.js sets --ttc-side-top), so the total and Book stay in view. */
.ttc-details__side { position: sticky; top: var(--ttc-side-top, 144px); }

/* Every vehicle in view, no scrolling list: photo and price over the name, capacity and seats, so each line reads whole;
   two by two from 1100px, one per row below, where a half-width tile would break "4 passengers" apart. */
@media (min-width: 1100px) {
	.ttc-booking__vehicles { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (min-width: 900px) {
	.ttc-booking__vehicle { display: grid; grid-template-columns: minmax(0, 1fr) auto; grid-template-areas: "photo price" "text text"; align-items: center; gap: 4px 8px; padding: 10px; }
	.ttc-booking__vehicle[aria-checked="true"] { padding: 9px; }
	.ttc-booking__vehicle img { grid-area: photo; justify-self: start; width: 56px; height: 30px; }
	.ttc-booking__vehicle-text { grid-area: text; min-width: 0; }
	.ttc-booking__vehicle-price { grid-area: price; margin-left: 0; }
}

@media (max-width: 899px) {
	.ttc-details__side { position: static; order: -1; }
	.ttc-details__card { padding: 18px 16px; }
	.ttc-details__row { grid-template-columns: minmax(0, 1fr); }
	.ttc-details__row--keep { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.ttc-booking__mini { display: flex; justify-content: space-between; align-items: flex-start; gap: 12px; }
	.ttc-booking__mini p { margin: 0; display: flex; flex-direction: column; gap: 2px; font-size: 14px; color: var(--wp--preset--color--muted); }
	.ttc-booking__mini strong { font-size: 15px; color: var(--wp--preset--color--ink); }
	/* The vehicles show straight away, no toggle; the price lines, total and notes are in the price card that ends the form. */
	.ttc-booking__body { border-top: 1px solid var(--wp--preset--color--border); padding-top: 14px; }
	.ttc-booking__head,
	.ttc-booking__route,
	.ttc-booking .ttc-quote__price-lines,
	.ttc-booking__total,
	.ttc-booking .ttc-tip,
	.ttc-booking .ttc-quote__extras,
	.ttc-booking .ttc-quote__card-note,
	.ttc-booking__book { display: none; }
	/* Pinned to the screen, not sticky in the form: iOS moves fixed bars down as its toolbars hide. The page leaves room for it (quote-form.js measures it). */
	html.ttc-details-open body { padding-bottom: var(--ttc-bar-h, calc(84px + env(safe-area-inset-bottom))); }
	.ttc-details__price { display: flex; }
	.ttc-details__bar { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; position: fixed; left: 0; right: 0; bottom: 0; z-index: 60; margin: 0; padding: 12px var(--wp--style--root--padding-right) calc(16px + env(safe-area-inset-bottom)) var(--wp--style--root--padding-left); 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); }
	/* While the keyboard is up the bar would sit on top of it and cover the address suggestions (quote-form.js watches the visible screen). */
	html.ttc-keyboard-up .ttc-details__bar,
	html:not(.ttc-vv) .ttc-quote__details:has(input:not([type="checkbox"]):not([type="radio"]):focus, textarea:focus) .ttc-details__bar { display: none; }
	.ttc-details__bar-problem { flex: 1 0 100%; }
	/* Phones and portrait tablets: the line rides on the Book bar, the address on one line (… if longer than the bar). */
	.ttc-booking .ttc-email-check { display: none; }
	.ttc-details__bar .ttc-email-check { display: grid; flex: 1 0 100%; margin: 0; padding: 6px 10px; font-size: 13px; }
	.ttc-details__bar .ttc-email-check strong { overflow: hidden; font-size: inherit; white-space: nowrap; text-overflow: ellipsis; }
	.ttc-details__bar p:not(.ttc-details__bar-problem):not(.ttc-email-check) { margin: 0; display: flex; flex-direction: column; flex: 1; font-size: 12px; color: var(--wp--preset--color--muted); }
	.ttc-details__bar strong { font-size: 20px; color: var(--wp--preset--color--ink); }
	.ttc-details__bar .ttc-button { min-height: 50px; padding-inline: 22px; }
}

/* FAQs page (ttc/faqs on templates/page-faqs.html): heading and search, a sticky topic column beside the FAQs on
   desktop (a row of links above them on phones), the drive-time table, and the navy "Still have a question?". */
.ttc-faqs__head { padding-bottom: 32px; border-bottom: 1px solid var(--wp--preset--color--tint); }
.ttc-faqs__title { margin: 0; font-size: var(--wp--preset--font-size--xx-large); line-height: 1.1; letter-spacing: -0.02em; text-wrap: balance; }
.ttc-faqs__intro { margin: 12px 0 0; max-width: 54ch; font-size: 18px; color: var(--wp--preset--color--muted); }
.ttc-faqs__search { position: relative; max-width: 560px; margin-top: 24px; }
.ttc-faqs__search[hidden] { display: none; }
.ttc-faqs__search svg { position: absolute; left: 16px; top: 50%; translate: 0 -50%; color: var(--wp--preset--color--muted); pointer-events: none; }
.ttc-faqs__input { width: 100%; height: 54px; padding: 0 16px 0 48px; font: inherit; font-size: 16px; color: var(--wp--preset--color--ink); background: var(--wp--preset--color--white); border: 1px solid var(--wp--preset--color--border); border-radius: 10px; box-shadow: 0 1px 2px rgba(0, 33, 71, 0.06); }
.ttc-faqs__input::placeholder { color: var(--wp--preset--color--muted); opacity: 1; }
.ttc-faqs__input:focus { outline: none; border: 1px solid var(--wp--preset--color--navy); box-shadow: 0 0 0 3px var(--wp--preset--color--tint); }
.ttc-faqs__status { margin: 8px 0 0; font-size: 14px; color: var(--wp--preset--color--muted); }
.ttc-faqs__status:empty { display: none; }

.ttc-faqs__body { display: grid; grid-template-columns: 220px minmax(0, 1fr); gap: 64px; padding-block: 48px 8px; }
.ttc-faqs__toc { position: sticky; top: 136px; align-self: start; }
.ttc-faqs__toc-title { margin: 0 0 10px; font-size: 13px; font-weight: 800; color: var(--wp--preset--color--muted); }
.ttc-faqs__links { list-style: none; margin: 0; padding: 0; border-left: 1px solid var(--wp--preset--color--border); }
.ttc-faqs__links [hidden] { display: none; }
.ttc-faqs__links a { display: block; margin-left: -1px; padding: 7px 0 7px 16px; border-left: 2px solid transparent; font-size: 15px; font-weight: 600; color: var(--wp--preset--color--muted); text-decoration: none; }
.ttc-faqs__links a:hover { color: var(--wp--preset--color--navy); }
.ttc-faqs__links a.is-current { border-left: 2px solid var(--wp--preset--color--gold); font-weight: 800; color: var(--wp--preset--color--navy); }
.ttc-faqs__ask { margin: 28px 0 0; padding-top: 20px; border-top: 1px solid var(--wp--preset--color--tint); font-size: 14px; color: var(--wp--preset--color--muted); }
.ttc-faqs__ask a { display: block; font-size: 16px; font-weight: 800; color: var(--wp--preset--color--navy); }

.ttc-faqs__main { min-width: 0; max-width: 720px; }
.ttc-faqs__group[hidden] { display: none; }
.ttc-faqs__group { margin-bottom: 56px; } /* below, not above: a topic the search hides leaves no gap */
.ttc-faqs__group-title { margin: 0 0 14px; font-size: 26px; line-height: 1.25; letter-spacing: -0.01em; }

.ttc-faq { border-bottom: 1px solid var(--wp--preset--color--border); }
.ttc-faq[hidden] { display: none; }
.ttc-faqs__group-title + .ttc-faq { border-top: 1px solid var(--wp--preset--color--border); }
.ttc-faq__q { display: flex; align-items: flex-start; gap: 16px; padding: 18px 0; list-style: none; cursor: pointer; font-size: 18px; line-height: 1.4; font-weight: 700; color: var(--wp--preset--color--ink); }
.ttc-faq__q::-webkit-details-marker { display: none; }
.ttc-faq__text { flex: 1; text-wrap: pretty; }
.ttc-faq__q:hover .ttc-faq__text { text-decoration: underline; text-decoration-color: var(--wp--custom--shade--gold-edge); text-underline-offset: 4px; }
.ttc-faq__icon { flex: none; display: grid; place-items: center; width: 28px; height: 28px; margin-top: -1px; border: 1px solid var(--wp--preset--color--border); border-radius: 50%; color: var(--wp--preset--color--navy); transition: transform 0.3s cubic-bezier(0.16, 1, 0.3, 1), background-color 0.2s; }
.ttc-faq__icon::before,
.ttc-faq__icon::after { content: ""; grid-area: 1 / 1; width: 12px; height: 2px; border-radius: 1px; background: currentColor; }
.ttc-faq__icon::after { transform: rotate(90deg); }
.ttc-faq__q:hover .ttc-faq__icon { border: 1px solid var(--wp--preset--color--navy); }
.ttc-faq[open] .ttc-faq__icon { transform: rotate(45deg); border: 1px solid var(--wp--preset--color--navy); background: var(--wp--preset--color--navy); color: var(--wp--preset--color--white); }
.ttc-faq__a { max-width: 65ch; padding: 0 44px 22px 0; color: var(--wp--preset--color--muted); }
.ttc-faq__a p { margin: 0; }
.ttc-faq__a p + p { margin-top: 10px; }
.ttc-faq__a strong { font-weight: 700; color: var(--wp--preset--color--ink); }
.ttc-faq--toggled[open] .ttc-faq__a { animation: ttc-faq-in 0.35s cubic-bezier(0.16, 1, 0.3, 1); }
@keyframes ttc-faq-in { from { opacity: 0; transform: translateY(-4px); } }
.ttc-faqs mark { border-radius: 2px; background: var(--wp--custom--status--notice--bg); box-shadow: 0 0 0 2px var(--wp--custom--status--notice--bg); color: inherit; }

.ttc-faqs__times { width: 100%; border-collapse: collapse; font-variant-numeric: tabular-nums; }
.ttc-faqs__times th,
.ttc-faqs__times td { padding: 14px 0; border-bottom: 1px solid var(--wp--preset--color--border); text-align: left; }
.ttc-faqs__times thead th { padding-top: 0; font-size: 13px; font-weight: 800; color: var(--wp--preset--color--muted); }
.ttc-faqs__times thead th:last-child,
.ttc-faqs__times td { text-align: right; }
.ttc-faqs__times tbody tr:first-child > * { border-top: 1px solid var(--wp--preset--color--border); }
.ttc-faqs__times tbody th,
.ttc-faqs__times td { font-size: 17px; font-weight: 700; color: var(--wp--preset--color--ink); }
.ttc-faqs__times td { white-space: nowrap; }
.ttc-faqs__times small { display: block; font-size: 14px; font-weight: 500; color: var(--wp--preset--color--muted); }
.ttc-faqs__times tr[hidden] { display: none; }
.ttc-faqs__note { margin: 12px 0 0; font-size: 14px; color: var(--wp--preset--color--muted); }

.ttc-faqs__empty { margin-bottom: 56px; padding-block: 32px; border-block: 1px solid var(--wp--preset--color--border); }
.ttc-faqs__empty[hidden] { display: none; }
.ttc-faqs__empty p { margin: 0; color: var(--wp--preset--color--muted); }

.ttc-faqs__contact { display: flex; align-items: center; justify-content: space-between; gap: 32px; padding: 40px 48px; border-radius: 16px; background: var(--wp--preset--color--navy); color: var(--wp--preset--color--white); }
.ttc-faqs__contact-title { margin: 0 0 6px; font-size: 28px; color: var(--wp--preset--color--white); }
.ttc-faqs__contact p { margin: 0; color: var(--wp--preset--color--mist); }
.ttc-faqs__actions { display: flex; flex-wrap: wrap; gap: 12px; }
.ttc-faqs__action { display: inline-flex; align-items: center; justify-content: center; min-height: 48px; padding: 0 22px; border-radius: 8px; font-size: 15px; font-weight: 800; text-decoration: none; }
.ttc-faqs__action--call { border: 1px solid var(--wp--preset--color--mist); color: var(--wp--preset--color--white); }
.ttc-faqs__action--call:hover { background: var(--wp--custom--shade--navy-deep); }
.ttc-faqs__action--book { background: var(--wp--preset--color--gold); color: var(--wp--preset--color--navy); }
.ttc-faqs__action--book:hover { background: var(--wp--custom--shade--gold-hover); }

@media (max-width: 899px) {
	.ttc-faqs__body { grid-template-columns: minmax(0, 1fr); gap: 0; padding-top: 0; }
	.ttc-faqs__toc { position: static; margin-inline: calc(-1 * var(--wp--style--root--padding-left)) calc(-1 * var(--wp--style--root--padding-right)); margin-bottom: 32px; border-bottom: 1px solid var(--wp--preset--color--tint); }
	.ttc-faqs__toc-title,
	.ttc-faqs__ask { display: none; }
	.ttc-faqs__links { display: flex; gap: 8px; overflow-x: auto; padding: 16px var(--wp--style--root--padding-right) 16px var(--wp--style--root--padding-left); border-left: 0; scrollbar-width: none; }
	.ttc-faqs__links::-webkit-scrollbar { display: none; }
	.ttc-faqs__links li { flex: none; }
	.ttc-faqs__links a,
	.ttc-faqs__links a.is-current { display: inline-flex; align-items: center; min-height: 44px; margin: 0; padding: 0 14px; border: 1px solid var(--wp--preset--color--border); border-radius: 999px; font-size: 14px; font-weight: 700; color: var(--wp--preset--color--navy); white-space: nowrap; }
	.ttc-faqs__contact { flex-direction: column; align-items: flex-start; padding: 32px 24px; }
}
@media (max-width: 560px) {
	.ttc-faqs__head { padding-bottom: 24px; }
	.ttc-faqs__intro { font-size: 16px; }
	.ttc-faqs__group-title { font-size: 23px; }
	.ttc-faq__q { gap: 12px; font-size: 17px; }
	.ttc-faq__a { padding-right: 0; }
	.ttc-faqs__actions,
	.ttc-faqs__action { width: 100%; }
}
@media (prefers-reduced-motion: reduce) {
	.ttc-faq__icon { transition: none; }
	.ttc-faq--toggled[open] .ttc-faq__a { animation: none; }
}
