/* Content blocks: contact rows, link lists, points, fare examples, cards, details, reviews, footer. */

/* Contact rows */
.azb-contact { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--s-3); }
.azb-contact__row { display: grid; grid-template-columns: 52px minmax(0, 1fr) 24px; align-items: center; gap: var(--s-4); padding: var(--s-5); background: var(--azb-raised); border: 1px solid var(--azb-line); border-radius: var(--radius-card); color: var(--azb-ink) !important; text-decoration: none; }
.azb-contact__icon { display: grid; place-items: center; width: 52px; height: 52px; border-radius: var(--radius-pill); background: var(--azb-accent-soft); color: var(--azb-accent); }
.azb-contact__text { display: grid; gap: 2px; }
.azb-contact__text strong { font: 700 1.25rem/1.2 var(--font-display); }
.azb-contact__text span { color: var(--azb-muted); font-size: var(--fs-small); overflow-wrap: anywhere; }
.azb-contact__go { color: var(--azb-accent); }
@media (hover: hover) and (pointer: fine) { .azb-contact__row:hover { border-color: var(--azb-accent); } }

/* Link lists (footer columns) */
.azb-ll__title { margin: 0 0 var(--s-4); font: 500 var(--fs-label)/1.4 var(--font-mono); letter-spacing: var(--tracking-label); text-transform: uppercase; color: var(--azb-muted); }
.azb-ll__list { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--s-1); }
.azb-ll__list a, .azb-ll__list span { display: inline-flex; align-items: center; min-height: 36px; color: color-mix(in srgb, var(--azb-ink) 82%, var(--azb-bg)) !important; text-decoration: none; font-size: var(--fs-small); }
.azb-ll__list a:hover { color: var(--azb-ink) !important; }

/* Points */
.azb-points { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--s-5); }
.azb-points li { display: grid; grid-template-columns: 44px minmax(0, 1fr); gap: var(--s-4); align-items: start; }
.azb-points__icon { display: grid; place-items: center; width: 44px; height: 44px; border-radius: var(--radius-pill); background: var(--azb-accent-soft); color: var(--azb-accent); }
.azb-points strong { display: block; font: 700 1.125rem/1.3 var(--font-display); color: var(--azb-ink); }
.azb-points span > span { display: block; color: var(--azb-muted); font-size: var(--fs-small); margin-top: 2px; }
@media (min-width: 1024px) {
	.azb-points--inline { grid-auto-flow: column; grid-auto-columns: minmax(0, 1fr); gap: var(--s-8); }
}

/* Fare examples */
.azb-fares { display: grid; gap: var(--s-4); }
.azb-fares__title { margin: 0; font: 800 var(--fs-h3)/1.15 var(--font-display); }
.azb-fares__list { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--s-2); }
.azb-fares__list li { display: grid; grid-template-columns: minmax(0, 1fr) auto auto; gap: var(--s-4); align-items: center; padding: var(--s-4) var(--s-5); background: var(--azb-raised); border-radius: var(--radius-card); }
.azb-fares__route { display: inline-flex; flex-wrap: wrap; align-items: center; gap: var(--s-2); }
.azb-fares__route .azb-icon { width: 16px; height: 16px; color: var(--azb-accent); }
.azb-fares__class { font-size: var(--fs-small); color: var(--azb-muted); }
.azb-fares__price { font: 500 1.0625rem/1 var(--font-mono); color: var(--azb-accent-hi); font-variant-numeric: tabular-nums; white-space: nowrap; }
.azb-fares__note { margin: 0; font-size: var(--fs-small); color: var(--azb-muted); }
@media (max-width: 599px) { .azb-fares__list li { grid-template-columns: minmax(0, 1fr) auto; } .azb-fares__class { grid-row: 2; } }

/* Content cards */
.azb-cards { display: grid; gap: var(--s-8); }
.azb-cards__title { margin: 0; font: 800 var(--fs-h2)/1.05 var(--font-display); letter-spacing: var(--tracking-display); }
.azb-cards__grid { display: grid; gap: var(--s-4); grid-template-columns: 1fr; }
@media (min-width: 768px) { .azb-cards__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.azb-card { position: relative; display: grid; grid-template-columns: 112px minmax(0, 1fr) 24px; align-items: center; gap: var(--s-5); min-height: 112px; padding-right: var(--s-5); overflow: hidden; background: var(--azb-raised); border: 1px solid var(--azb-line); border-radius: var(--radius-card); color: var(--azb-ink) !important; text-decoration: none; }
.azb-card--noimg { grid-template-columns: minmax(0, 1fr) 24px; padding-left: var(--s-5); }
.azb-card__media { align-self: stretch; }
.azb-card__media img { width: 100%; height: 100%; object-fit: cover; }
.azb-card__body { display: grid; gap: var(--s-1); padding-block: var(--s-4); }
.azb-card__title { margin: 0; font: 700 1.1875rem/1.2 var(--font-display) !important; letter-spacing: -0.01em; color: var(--azb-ink); }
.azb-card__line { color: var(--azb-muted); font-size: var(--fs-small); line-height: 1.45; }
.azb-card__tag { justify-self: start; margin-top: var(--s-1); font: 500 0.6875rem/1 var(--font-mono); letter-spacing: var(--tracking-label); text-transform: uppercase; color: var(--azb-accent); }
.azb-card__go { color: var(--azb-accent); }
@media (hover: hover) and (pointer: fine) { .azb-card:hover { border-color: color-mix(in srgb, var(--azb-accent) 55%, transparent); } }
.azb-cards__group { display: grid; gap: var(--s-6); padding-top: var(--s-8); border-top: 1px solid var(--azb-line); scroll-margin-top: calc(var(--header-h) + var(--s-6)); }
.azb-cards__ghead h2 { margin: 0 0 var(--s-2); font: 800 clamp(1.625rem, 3vw, 2.25rem)/1.05 var(--font-display); }
.azb-cards__gdesc { color: var(--azb-muted); max-width: 36ch; }
.azb-cards__gdesc p { margin: 0; }
@media (min-width: 1024px) {
	.azb-cards__group { grid-template-columns: minmax(220px, 300px) minmax(0, 1fr); gap: var(--s-12); }
}
.azb-cards--rows .azb-cards__grid { grid-template-columns: 1fr; }

/* Details lists */
.azb-details { display: grid; gap: var(--s-5); }
.azb-details__title { margin: 0; font: 800 var(--fs-h3)/1.15 var(--font-display); }
.azb-details__list { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--s-4); }
.azb-details__list li { display: grid; grid-template-columns: 28px minmax(0, 1fr); gap: var(--s-3); align-items: start; }
.azb-details__list .azb-icon { color: var(--azb-accent); margin-top: 2px; }
.azb-details__list strong { display: block; font-weight: 600; color: var(--azb-ink); }
.azb-details__note { display: block; color: var(--azb-muted); font-size: var(--fs-small); margin-top: 2px; }
.azb-details__code { display: grid; place-items: center; width: 28px; height: 28px; border-radius: var(--radius-pill); background: var(--azb-accent-soft); color: var(--azb-accent-hi); font: 500 0.8125rem/1 var(--font-mono); }

/* Reviews: carries its own section padding so nothing renders while the section is switched off */
.azb-reviews { display: grid; gap: var(--s-8); max-width: var(--container); margin-inline: auto; padding: var(--section-pad) var(--gutter); }

/* Blog posts */
.azb-posts { display: grid; gap: var(--s-5); grid-template-columns: 1fr; }
@media (min-width: 768px) { .azb-posts { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.azb-post a { display: grid; gap: var(--s-4); height: 100%; padding-bottom: var(--s-6); background: var(--azb-raised); border: 1px solid var(--azb-line); border-radius: var(--radius-card); overflow: hidden; color: var(--azb-ink) !important; text-decoration: none; }
.azb-post__media { aspect-ratio: 16 / 9; overflow: hidden; background: var(--azb-surface); }
.azb-post__media img { width: 100%; height: 100%; object-fit: cover; }
.azb-post__body { display: grid; gap: var(--s-2); padding-inline: var(--s-6); }
.azb-post__date { font: 500 var(--fs-label)/1 var(--font-mono); letter-spacing: var(--tracking-label); text-transform: uppercase; color: var(--azb-accent); padding-top: var(--s-4); }
.azb-post__title { margin: 0; font: 800 clamp(1.3rem, 2.2vw, 1.6rem)/1.15 var(--font-display) !important; }
.azb-post__excerpt { color: var(--azb-muted); font-size: var(--fs-small); }
.azb-pager ul { display: flex; flex-wrap: wrap; gap: var(--s-2); list-style: none; margin: var(--s-8) 0 0; padding: 0; }
.azb-pager a, .azb-pager span { display: inline-flex; align-items: center; min-height: var(--tap); padding: 0 var(--s-4); border-radius: var(--radius-pill); box-shadow: inset 0 0 0 1px var(--azb-line); color: var(--azb-ink); text-decoration: none; }
.azb-pager .current { background: var(--azb-accent); color: var(--azb-bg); box-shadow: none; }
.azb-ph--block { display: block; margin: 0 0 var(--s-6); padding: var(--s-4); }
.azb-reviews__title { margin: 0; font: 800 var(--fs-h2)/1.05 var(--font-display); }
.azb-reviews__list { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--s-5); }
@media (min-width: 768px) { .azb-reviews__list { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.azb-review { padding: var(--s-6); background: var(--azb-raised); border-radius: var(--radius-card); }
.azb-review blockquote { margin: 0 0 var(--s-4); }
.azb-review blockquote p { margin: 0; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; font-size: var(--fs-lead); }
.azb-review__by { margin: 0; display: flex; flex-wrap: wrap; gap: var(--s-2) var(--s-3); font-size: var(--fs-small); color: var(--azb-muted); }
.azb-review__by strong { color: var(--azb-ink); }
.azb-review__rating { font-family: var(--font-mono); }

/* Footer helpers (applied to Theme Builder footer containers) */
.azb-footer { border-top: 1px solid var(--azb-line); }
.azb-footer__line { color: var(--azb-muted); font-size: var(--fs-small); max-width: 32ch; }
.azb-footer__legal, .azb-footer__legal p { color: var(--azb-muted); font-size: 0.8125rem; margin: 0; }
.azb-footer__legal a { color: var(--azb-muted); }

/* Legal bar links run in a row. The nav already carries an accessible name, so the
   visible "Legal" heading would only repeat it. */
.azb-footer__legal .azb-ll__title { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; }
.azb-footer__legal .azb-ll__list { display: flex; flex-wrap: wrap; gap: var(--s-1) var(--s-5); }

/* A long value with no break opportunity, such as the booking email address, otherwise
   sets the minimum width of its footer column and pushes the whole grid wider than the
   screen. Allow it to wrap instead. */
.azb-ll__list a, .azb-ll__list span { overflow-wrap: anywhere; min-width: 0; }
