/* Hero — full, used site-wide via template-parts/hero.php + the home-hero pattern.
   Background is the real Riz Taxi car (client-supplied photo, cropped three
   different ways per hero variant rather than reusing one identical frame —
   see docs/image-list.md) under the same navy gradient overlay used with the
   placeholder SVGs before. */
.hero{
  padding-block:calc(var(--space-32) + 76px) var(--space-24);
  padding-inline:var(--gutter);
  background:
    linear-gradient(180deg, rgba(6,15,36,.88) 0%, rgba(10,31,68,.82) 100%),
    url('../img/hero-interior.webp') center/cover no-repeat;
  color:var(--c-white);
}
.hero--home{
  background-image:
    linear-gradient(180deg, rgba(6,15,36,.82) 0%, rgba(10,31,68,.72) 100%),
    url('../img/hero-home.webp');
}
.hero--tourist{
  background-image:
    linear-gradient(180deg, rgba(6,15,36,.85) 0%, rgba(10,31,68,.75) 100%),
    url('../img/hero-tourist.webp');
}
.hero--compact{
  padding-block:calc(var(--space-24) + 76px) var(--space-16);
}
/* Home hero is centred (unlike the left-aligned interior heroes from
   template-parts/hero.php): title, subheading and the button row all
   share one visual centreline. WP's own global-styles rule already
   auto-centers each direct child of a layout:"constrained" group by
   its own max-width (`margin-left/right:auto !important`), so the box
   itself is centred regardless of hero__title's 20ch vs hero__subheading's
   60ch; text-align:center finishes the job by centring the content
   inside each box, and justify-content:center centres the two buttons
   inside their own (already-centred) row box. */
.hero--home .hero__title,
.hero--home .hero__subheading{
  text-align:center;
}
.hero--home .hero__actions{
  justify-content:center;
}
.hero__title{ color:var(--c-white); max-width:20ch; }
.hero__subheading{
  max-width:60ch;
  font-size:1.2rem;
  color:rgba(255,255,255,.82);
}
.hero__actions{
  display:flex;
  flex-wrap:wrap;
  gap:var(--space-4);
  margin-block-start:var(--space-8);
}
/* Every interior hero's "Call to Book" button gets its phone icon from a
   real inline <svg> hand-written in template-parts/hero.php. Every other
   "Call ..." button site-wide (home hero, CTA bands, the Contact page's
   phone CTA, etc.) is a real Gutenberg core/button block instead, built
   via inc/pattern-helpers.php so the client can edit it in place — a
   button block's save() only ever re-serialises its plain text attribute,
   so hand-adding an <svg> inside it would fail block validation the
   moment the page reopens in the editor. Painting the icon via mask-image
   sidesteps that (pure CSS, block markup stays exactly what core/button
   expects) and the [href^="tel:"] selector picks up every such button
   automatically instead of needing a one-off rule per pattern. */
.wp-block-button.btn-primary .wp-block-button__link[href^="tel:"]::before{
  content:"";
  width:18px; height:18px;
  background-color:currentColor;
  -webkit-mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M22%2016.92v3a2%202%200%200%201-2.18%202%2019.79%2019.79%200%200%201-8.63-3.07%2019.5%2019.5%200%200%201-6-6%2019.79%2019.79%200%200%201-3.07-8.67A2%202%200%200%201%204.11%202h3a2%202%200%200%201%202%201.72c.127.96.362%201.903.7%202.81a2%202%200%200%201-.45%202.11L8.09%209.91a16%2016%200%200%200%206%206l1.27-1.27a2%202%200%200%201%202.11-.45c.907.338%201.85.573%202.81.7A2%202%200%200%201%2022%2016.92z%22/%3E%3C/svg%3E");
  mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M22%2016.92v3a2%202%200%200%201-2.18%202%2019.79%2019.79%200%200%201-8.63-3.07%2019.5%2019.5%200%200%201-6-6%2019.79%2019.79%200%200%201-3.07-8.67A2%202%200%200%201%204.11%202h3a2%202%200%200%201%202%201.72c.127.96.362%201.903.7%202.81a2%202%200%200%201-.45%202.11L8.09%209.91a16%2016%200%200%200%206%206l1.27-1.27a2%202%200%200%201%202.11-.45c.907.338%201.85.573%202.81.7A2%202%200%200%201%2022%2016.92z%22/%3E%3C/svg%3E");
  -webkit-mask-repeat:no-repeat;
  mask-repeat:no-repeat;
  -webkit-mask-size:contain;
  mask-size:contain;
  flex-shrink:0;
}
/* Every other Gutenberg CTA button — "Request a Quote" (btn-secondary) and
   the internal "Explore ..."/"Learn More ..." links (btn-primary, but not
   a tel: link) — gets a plain forward-arrow instead, same mask-image
   technique so it stays block-validation-safe. ::after (trailing, "Text →")
   rather than ::before, matching the hand-written arrow on the interior
   heroes' "Request a Quote" button in template-parts/hero.php. */
.wp-block-button.btn-primary .wp-block-button__link:not([href^="tel:"])::after,
.wp-block-button.btn-secondary .wp-block-button__link::after{
  content:"";
  width:16px; height:16px;
  background-color:currentColor;
  -webkit-mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cline%20x1%3D%225%22%20y1%3D%2212%22%20x2%3D%2219%22%20y2%3D%2212%22/%3E%3Cpolyline%20points%3D%2212%205%2019%2012%2012%2019%22/%3E%3C/svg%3E");
  mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cline%20x1%3D%225%22%20y1%3D%2212%22%20x2%3D%2219%22%20y2%3D%2212%22/%3E%3Cpolyline%20points%3D%2212%205%2019%2012%2012%2019%22/%3E%3C/svg%3E");
  -webkit-mask-repeat:no-repeat;
  mask-repeat:no-repeat;
  -webkit-mask-size:contain;
  mask-size:contain;
  flex-shrink:0;
}

/* Buttons rendered via Gutenberg core/button blocks reuse .btn-primary/.btn-secondary */
.wp-block-button.btn-primary,
.wp-block-button.btn-secondary{ margin:0; }
.wp-block-buttons{ display:flex; flex-wrap:wrap; gap:var(--space-4); }

/* Trust bar */
.trust-bar{
  background:var(--c-white);
  border-block-end:1px solid var(--c-border);
}
.trust-bar__inner{
  display:flex;
  flex-wrap:wrap;
  justify-content:center;
  gap:var(--space-8) var(--space-16);
  padding-block:var(--space-6);
}
.trust-bar__item{
  display:flex;
  align-items:center;
  gap:var(--space-2);
  color:var(--c-ink-muted);
  font-weight:600;
  font-size:var(--fs-small);
}
.trust-bar__item svg{ color:var(--c-gold-600); flex-shrink:0; }

/* Service cards — also used by the areas grid (.area-card shares .service-card
   styling, .areas-grid shares the same heading/padding as .service-cards).
   Both wrap their content in .container, which already handles padding-inline. */
.service-cards,
.areas-grid{ padding-block:var(--space-24); }
.service-cards h2,
.areas-grid h2{ text-align:center; margin-block-end:var(--space-12); }
.service-cards__grid{
  display:grid;
  grid-template-columns:1fr;
  gap:var(--space-6);
}
@media (min-width:768px){
  .service-cards__grid{ grid-template-columns:repeat(2, 1fr); }
}
@media (min-width:1024px){
  .service-cards__grid{ grid-template-columns:repeat(4, 1fr); }
}
.service-card{
  display:flex;
  flex-direction:column;
  background:var(--c-white);
  border:1px solid var(--c-border);
  border-radius:var(--radius-md);
  box-shadow:var(--shadow-sm);
  padding:var(--space-8);
  transition:transform var(--dur) var(--ease), box-shadow var(--dur) var(--ease);
}
.service-card:hover{
  transform:translateY(-4px);
  box-shadow:var(--shadow-md);
}
.service-card__icon{ color:var(--c-gold-600); margin-block-end:var(--space-4); }
.service-card h3{ font-size:var(--fs-h3); margin-block-end:var(--space-2); }
.service-card p{ color:var(--c-ink-muted); font-size:var(--fs-small); margin-block-end:var(--space-4); }
.service-card__link{
  margin-block-start:auto;
  font-weight:600;
  color:var(--c-navy-800);
  text-decoration:none;
}
.service-card__link:hover{ color:var(--c-gold-600); }

/* Why choose grid — also reused (via riztaxi_pattern_feature_grid()) for other
   feature-grid sections like "Airports We Cover". Several pages stack two
   .why-choose sections back to back with the identical white background, so
   --space-24 on both sides would leave a ~190px gap with no visual break to
   justify it; --space-16 still reads as generous but doesn't leave a void. */
.why-choose{ padding-block:var(--space-16); padding-inline:var(--gutter); background:var(--c-white); }
.why-choose h2{ text-align:center; margin-block-end:var(--space-12); }
/* .wp-block-group prefix raises specificity above core's own
   .wp-block-group-is-layout-flex rule (same single-class specificity as a
   bare .why-choose__grid) — the pattern is inserted with layout:flex so
   short-text items were wrapping two-per-row on mobile instead of stacking. */
.wp-block-group.why-choose__grid{
  display:grid;
  grid-template-columns:1fr;
  gap:var(--space-8);
}
@media (min-width:768px){
  .wp-block-group.why-choose__grid{ grid-template-columns:repeat(2, 1fr); }
}
@media (min-width:1024px){
  .wp-block-group.why-choose__grid{ grid-template-columns:repeat(3, 1fr); }
}
/* Icon above each item's heading, set via a --why-icon custom property per
   why-choose__item--<key> modifier class (added by riztaxi_pattern_feature_grid()).
   Uses mask-image (not a background-image on an <svg>) so the icon paints in
   --c-gold-600 via background-color, matching the service-card icon colour,
   and ships as inline CSS data-URIs — no extra icon-font/HTTP-request cost.
   Items without a recognised icon key fall back to the small gold dot. */
.why-choose__item{
  /* Checkmark default so an item left without a --why-choose__item--<key>
     modifier still gets a real icon instead of an empty/solid mask box. */
  --why-icon:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.75%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M20%206%209%2017l-5-5%22/%3E%3C/svg%3E");
}
.why-choose__item::before{
  content:"";
  display:block;
  width:32px;
  height:32px;
  margin-block-end:var(--space-3);
  background-color:var(--c-gold-600);
  -webkit-mask-image:var(--why-icon);
  mask-image:var(--why-icon);
  -webkit-mask-repeat:no-repeat;
  mask-repeat:no-repeat;
  -webkit-mask-size:contain;
  mask-size:contain;
}
.why-choose__item h3{
  font-size:var(--fs-body);
  color:var(--c-navy-800);
}
.why-choose__item p{ color:var(--c-ink-muted); font-size:var(--fs-small); }

.why-choose__item--clock::before{ --why-icon:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.75%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Ccircle%20cx%3D%2212%22%20cy%3D%2212%22%20r%3D%2210%22/%3E%3Cpath%20d%3D%22M12%206v6l4%202%22/%3E%3C/svg%3E"); }
.why-choose__item--shield::before{ --why-icon:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.75%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M12%2022s8-4%208-10V5l-8-3-8%203v7c0%206%208%2010%208%2010z%22/%3E%3Cpath%20d%3D%22m9%2012%202%202%204-4%22/%3E%3C/svg%3E"); }
.why-choose__item--map-pin::before{ --why-icon:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.75%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M20%2010c0%206-8%2012-8%2012s-8-6-8-12a8%208%200%200%201%2016%200z%22/%3E%3Ccircle%20cx%3D%2212%22%20cy%3D%2210%22%20r%3D%223%22/%3E%3C/svg%3E"); }
.why-choose__item--car::before{ --why-icon:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.75%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M5%2017h14M5%2017a2%202%200%201%201-4%200%202%202%200%200%201%204%200zm14%200a2%202%200%201%200%204%200%202%202%200%200%200-4%200zM3%2017V9l2-5h14l2%205v8%22/%3E%3C/svg%3E"); }
.why-choose__item--smile::before{ --why-icon:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.75%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Ccircle%20cx%3D%2212%22%20cy%3D%2212%22%20r%3D%2210%22/%3E%3Cpath%20d%3D%22M8%2014s1.5%202%204%202%204-2%204-2%22/%3E%3Cline%20x1%3D%229%22%20y1%3D%229%22%20x2%3D%229.01%22%20y2%3D%229%22/%3E%3Cline%20x1%3D%2215%22%20y1%3D%229%22%20x2%3D%2215.01%22%20y2%3D%229%22/%3E%3C/svg%3E"); }
.why-choose__item--calendar::before{ --why-icon:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.75%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Crect%20x%3D%223%22%20y%3D%224%22%20width%3D%2218%22%20height%3D%2218%22%20rx%3D%222%22/%3E%3Cline%20x1%3D%2216%22%20y1%3D%222%22%20x2%3D%2216%22%20y2%3D%226%22/%3E%3Cline%20x1%3D%228%22%20y1%3D%222%22%20x2%3D%228%22%20y2%3D%226%22/%3E%3Cline%20x1%3D%223%22%20y1%3D%2210%22%20x2%3D%2221%22%20y2%3D%2210%22/%3E%3C/svg%3E"); }
.why-choose__item--tag::before{ --why-icon:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.75%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M20.59%2013.41%2011%203.83A2%202%200%200%200%209.59%203.24L3%203v6.59a2%202%200%200%200%20.59%201.41l9.59%209.59a2%202%200%200%200%202.82%200l4.59-4.59a2%202%200%200%200%200-2.82z%22/%3E%3Ccircle%20cx%3D%227.5%22%20cy%3D%227.5%22%20r%3D%221%22/%3E%3C/svg%3E"); }
.why-choose__item--luggage::before{ --why-icon:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.75%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Crect%20x%3D%223%22%20y%3D%227%22%20width%3D%2218%22%20height%3D%2213%22%20rx%3D%222%22/%3E%3Cpath%20d%3D%22M8%207V5a2%202%200%200%201%202-2h4a2%202%200%200%201%202%202v2%22/%3E%3Cline%20x1%3D%223%22%20y1%3D%2212%22%20x2%3D%2221%22%20y2%3D%2212%22/%3E%3C/svg%3E"); }
/* The original path here (and in service-cards.php's 'airport' icon) drew a
   house glyph, not a plane — close enough at a glance to go unnoticed but
   wrong on inspection. Replaced with a genuine aeroplane silhouette. */
.why-choose__item--plane::before{ --why-icon:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.75%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M17.8%2019.2%2016%2011l3.5-3.5C21%206%2021.5%204%2021%203c-1-.5-3%200-4.5%201.5L13%208%204.8%206.2c-.5-.1-1%20.1-1.3.5l-.7.8c-.5.5-.4%201.3.2%201.6l5.9%203.3-2%202H3v3l3%201%201%203h3l-1-3.6%202-2%203.3%205.9c.3.6%201.1.7%201.6.2l.8-.7c.4-.3.6-.8.5-1.3z%22/%3E%3C/svg%3E"); }
.why-choose__item--door::before{ --why-icon:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.75%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Crect%20x%3D%223%22%20y%3D%222%22%20width%3D%2214%22%20height%3D%2220%22%20rx%3D%221%22/%3E%3Cline%20x1%3D%2213%22%20y1%3D%2212%22%20x2%3D%2213%22%20y2%3D%2212.01%22/%3E%3C/svg%3E"); }
.why-choose__item--star::before{ --why-icon:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.75%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpolygon%20points%3D%2212%202%2015.09%208.26%2022%209.27%2017%2014.14%2018.18%2021.02%2012%2017.77%205.82%2021.02%207%2014.14%202%209.27%208.91%208.26%2012%202%22/%3E%3C/svg%3E"); }
.why-choose__item--steering-wheel::before{ --why-icon:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.75%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Ccircle%20cx%3D%2212%22%20cy%3D%2212%22%20r%3D%2210%22/%3E%3Ccircle%20cx%3D%2212%22%20cy%3D%2212%22%20r%3D%223%22/%3E%3Cpath%20d%3D%22M12%202v7M4.2%2016.5l6-3.5M19.8%2016.5l-6-3.5%22/%3E%3C/svg%3E"); }

/* Numbered steps — "how to book" style sections. Padding-block is deliberately
   lighter than the --space-24 "band" sections (why-choose, testimonial-slider):
   this section has no background of its own, so when it lands next to another
   plain section (text-section, bullet-section, faq-accordion) with the same
   --space-24 top/bottom padding, the two stack into an unintentional-looking
   ~190px void with no visual break to justify it. */
.steps{ padding-block:var(--space-16); padding-inline:var(--gutter); }
.steps h2{ text-align:center; margin-block-end:var(--space-12); }
/* .wp-block-group prefix — see .why-choose__grid comment above; same
   layout:flex vs display:grid specificity conflict applies here. */
.wp-block-group.steps__grid{
  display:grid;
  grid-template-columns:1fr;
  gap:var(--space-8);
}
@media (min-width:768px){
  .wp-block-group.steps__grid{ grid-template-columns:repeat(2, 1fr); }
}
@media (min-width:1024px){
  .wp-block-group.steps__grid{ grid-template-columns:repeat(4, 1fr); }
}
.steps__number{
  display:flex;
  align-items:center;
  justify-content:center;
  width:36px; height:36px;
  border-radius:50%;
  background:var(--c-gold-500);
  color:var(--c-navy-900);
  font-weight:700;
  margin-block-end:var(--space-3);
}
.steps__item h3{ font-size:var(--fs-body); margin-block-end:var(--space-1); }
.steps__item p{ color:var(--c-ink-muted); font-size:var(--fs-small); }

/* Simple centred text section — see .steps comment above re: lighter padding
   on backgroundless sections so they don't double up against their neighbours. */
.text-section{
  padding-block:var(--space-16);
  padding-inline:var(--gutter);
  max-width:calc(var(--container) * .75);
  margin-inline:auto;
  text-align:center;
}
.text-section .wp-block-buttons{ margin-block-start:var(--space-6); justify-content:center; }

/* Bullet-list section — "Popular Destinations" / flat lists (no title+desc split) */
.bullet-section{
  padding-block:var(--space-16);
  padding-inline:var(--gutter);
  max-width:calc(var(--container) * .7);
  margin-inline:auto;
  text-align:center;
}
.bullet-section__list{
  list-style:none;
  margin:0 0 var(--space-6);
  padding:0;
  display:grid;
  grid-template-columns:1fr;
  gap:var(--space-3);
  text-align:start;
}
@media (min-width:768px){
  .bullet-section__list{ grid-template-columns:repeat(2, 1fr); }
}
.bullet-section__list li{
  position:relative;
  padding-inline-start:var(--space-6);
  color:var(--c-ink);
}
.bullet-section__list li::before{
  content:"";
  position:absolute;
  inset-inline-start:0;
  top:.5em;
  width:8px;
  height:8px;
  border-radius:50%;
  background:var(--c-gold-500);
}
.bullet-section .wp-block-buttons{ justify-content:center; margin-block-start:var(--space-4); }

/* Two-column text split — "Business Travel / Leisure Travel" style sections */
.text-columns{ padding-block:var(--space-16); padding-inline:var(--gutter); }
.text-columns h2{ text-align:center; margin-block-end:var(--space-12); }
.text-columns .wp-block-columns{ max-width:var(--container); margin-inline:auto; gap:var(--space-16); }
.text-columns h3{ font-size:var(--fs-h3); margin-block-end:var(--space-2); }
.text-columns p{ color:var(--c-ink-muted); }

/* Sightseeing showcase — a core/columns block, styled directly (no extra wrapper divs
   so it round-trips through the block editor without validation warnings) */
.sightseeing-showcase.wp-block-columns{
  max-width:calc(var(--container) + var(--gutter) * 2);
  margin-inline:auto;
  padding-inline:var(--gutter);
  padding-block:var(--space-16);
  align-items:center;
  gap:var(--space-16);
}
.sightseeing-showcase__media{
  border-radius:var(--radius-lg);
  box-shadow:var(--shadow-md);
  overflow:hidden;
}
.sightseeing-showcase__media .wp-block-image{ margin:0; height:100%; }
.sightseeing-showcase__media img{
  width:100%;
  height:100%;
  min-height:280px;
  object-fit:cover;
  display:block;
}

/* CTA band — one shade lighter than .site-footer's navy-900 so the two don't
   read as one seamless block when the band sits directly above the footer
   (its usual position, via the *-cta patterns' "Closing CTA" placement). */
.cta-band{
  background:var(--c-navy-800);
  color:var(--c-white);
  padding-block:var(--space-16);
  padding-inline:var(--gutter);
  text-align:center;
}
.cta-band h2{ color:var(--c-white); }
.cta-band p{ color:rgba(255,255,255,.8); max-width:50ch; margin-inline:auto; }
.cta-band .wp-block-buttons{ margin-block-start:var(--space-6); }

/* Testimonial slider */
.testimonial-slider{ padding-block:var(--space-24); background:var(--c-white); }
.testimonial-slider h2{ text-align:center; margin-block-end:var(--space-12); }
.testimonial-slider__track{
  display:grid;
  grid-template-columns:1fr;
  gap:var(--space-6);
}
@media (min-width:768px){
  .testimonial-slider__track{ grid-template-columns:repeat(3, 1fr); }
}
.testimonial-card{
  margin:0;
  background:var(--c-bg);
  border:1px solid var(--c-border);
  border-radius:var(--radius-md);
  padding:var(--space-8);
}
.testimonial-card__stars{ color:var(--c-gold-500); display:flex; gap:2px; margin-block-end:var(--space-3); }
.testimonial-card__quote{ font-size:var(--fs-small); color:var(--c-ink); }
.testimonial-card footer{ margin-block-start:var(--space-4); display:flex; flex-direction:column; }
.testimonial-card__author{ font-weight:600; }
.testimonial-card__location{ color:var(--c-ink-muted); font-size:var(--fs-small); }

/* FAQ accordion */
.faq-accordion{ padding-block:var(--space-16); }
.faq-accordion h2{ text-align:center; margin-block-end:var(--space-12); }
.faq-accordion__list{
  max-width:760px;
  margin-inline:auto;
  display:flex;
  flex-direction:column;
  gap:var(--space-3);
}
.faq-item{
  background:var(--c-white);
  border:1px solid var(--c-border);
  border-radius:var(--radius-sm);
  padding:var(--space-4) var(--space-6);
}
.faq-item__question{
  cursor:pointer;
  font-weight:600;
  color:var(--c-navy-800);
  list-style:none;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:var(--space-4);
}
.faq-item__question::-webkit-details-marker{ display:none; }
.faq-item__question::after{
  content:"+";
  font-size:1.4rem;
  color:var(--c-gold-600);
  flex-shrink:0;
  transition:transform var(--dur) var(--ease);
}
.faq-item[open] .faq-item__question::after{ transform:rotate(45deg); }
.faq-item__answer{ padding-block-start:var(--space-3); color:var(--c-ink-muted); }
.faq-item__answer p:last-child{ margin-bottom:0; }

/* Contact page: quote form section + map */
.contact-form-section{
  padding-block:var(--space-16);
  padding-inline:var(--gutter);
  max-width:calc(var(--container) * .7);
  margin-inline:auto;
}
.contact-form-section a{ color:var(--c-navy-800); font-weight:600; }

.contact-map{ padding-block:var(--space-16); padding-inline:var(--gutter); }
.contact-map .container{ border-radius:var(--radius-lg); overflow:hidden; box-shadow:var(--shadow-md); }
.contact-map iframe{ display:block; }

.map-facade{
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:var(--space-4);
  min-height:280px;
  background:linear-gradient(135deg, var(--c-navy-800), var(--c-navy-700));
  color:var(--c-white);
  text-align:center;
  padding:var(--space-8);
}
.map-facade__button{
  display:inline-flex;
  align-items:center;
  gap:var(--space-2);
  padding:var(--space-3) var(--space-6);
  border-radius:var(--radius-pill);
  background:var(--c-gold-500);
  color:var(--c-navy-900);
  border:none;
  font-weight:600;
  font-size:var(--fs-body);
  cursor:pointer;
  transition:background-color var(--dur) var(--ease), transform var(--dur) var(--ease);
}
.map-facade__button:hover,
.map-facade__button:focus-visible{
  background:var(--c-gold-600);
  transform:translateY(-4px);
}
.map-facade__link{
  color:rgba(255,255,255,.8);
  font-size:var(--fs-small);
  text-decoration:underline;
}
.map-facade__link:hover{ color:var(--c-white); }

/* WPForms — themed to match the site's tokens */
.wpforms-container{ margin-block-start:var(--space-8); }
.wpforms-field{ padding:0 0 var(--space-4) !important; }
/* Two-column layout on wider screens — Name and Message span both
   columns (Name already has its own First/Last sub-row; Message reads
   better full-width), everything else pairs up in DOM order. WPForms'
   own hidden anti-spam fields use display:none so they don't take a
   grid cell, no manual re-ordering needed. */
@media (min-width:640px){
  .wpforms-field-container{
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:0 var(--space-6);
    align-items:start;
  }
  .wpforms-field-container .wpforms-field-name,
  .wpforms-field-container .wpforms-field-textarea{
    grid-column:1 / -1;
  }
}
.wpforms-field-label{
  font-weight:500 !important;
  color:var(--c-ink) !important;
  margin-block-end:var(--space-2) !important;
}
.wpforms-field-required{ color:var(--c-gold-600) !important; }
.wpforms-field input[type=text],
.wpforms-field input[type=email],
.wpforms-field input[type=tel],
.wpforms-field textarea{
  width:100% !important;
  border:1px solid var(--c-border) !important;
  border-radius:var(--radius-sm) !important;
  padding:var(--space-3) !important;
  font-family:var(--font-body) !important;
  font-size:var(--fs-body) !important;
  color:var(--c-ink) !important;
  background:var(--c-white) !important;
}
.wpforms-field input:focus,
.wpforms-field textarea:focus{
  outline:2px solid var(--c-gold-600) !important;
  outline-offset:1px;
  border-color:var(--c-gold-600) !important;
}
.wpforms-submit-container{ margin-block-start:var(--space-4); text-align:center; }
.wpforms-submit{
  display:inline-flex !important;
  align-items:center;
  padding:var(--space-3) var(--space-8) !important;
  border-radius:var(--radius-pill) !important;
  background:var(--c-gold-500) !important;
  color:var(--c-navy-900) !important;
  border:none !important;
  font-weight:600 !important;
  font-size:var(--fs-body) !important;
  cursor:pointer;
  transition:background-color var(--dur) var(--ease), transform var(--dur) var(--ease);
}
.wpforms-submit:hover{
  background:var(--c-gold-600) !important;
  transform:translateY(-4px);
}
/* Legal pages (Privacy Policy, Terms) — plain prose, not the marketing
   patterns used elsewhere, so this just needs a readable measure and
   normal spacing between the many H2/H3 sections. */
.legal-content{
  max-width:70ch;
  margin-inline:auto;
  padding-block:var(--space-16);
  padding-inline:var(--gutter);
}
.legal-content h2{ margin-block-start:var(--space-12); }
.legal-content h3{ margin-block-start:var(--space-8); }
.legal-content ul{ padding-inline-start:var(--space-6); margin:0 0 var(--space-4); }
.legal-content li{ margin-block-end:var(--space-2); }

.wpforms-confirmation-container-full{
  border:1px solid var(--c-success) !important;
  border-radius:var(--radius-sm) !important;
  padding:var(--space-6) !important;
  color:var(--c-ink) !important;
}

/* Blog index — card grid, same visual language as .service-card */
.blog-index{ padding-block:var(--space-24); }
.blog-index__grid{
  display:grid;
  grid-template-columns:1fr;
  gap:var(--space-8);
}
@media (min-width:768px){
  .blog-index__grid{ grid-template-columns:repeat(2, 1fr); }
}
.blog-card{
  display:flex;
  flex-direction:column;
  background:var(--c-white);
  border:1px solid var(--c-border);
  border-radius:var(--radius-md);
  box-shadow:var(--shadow-sm);
  overflow:hidden;
  transition:transform var(--dur) var(--ease), box-shadow var(--dur) var(--ease);
}
.blog-card:hover{
  transform:translateY(-4px);
  box-shadow:var(--shadow-md);
}
.blog-card__media{ display:block; line-height:0; background:var(--c-navy-800); }
.blog-card__media img{ width:100%; height:auto; aspect-ratio:1200/630; object-fit:cover; }
.blog-card__body{ display:flex; flex-direction:column; padding:var(--space-8); }
.blog-card__date{ color:var(--c-ink-muted); font-size:var(--fs-small); margin-block-end:var(--space-2); }
.blog-card__title{ font-size:var(--fs-h3); margin-block-end:var(--space-2); }
.blog-card__title a{ color:var(--c-navy-900); text-decoration:none; }
.blog-card__title a:hover{ color:var(--c-gold-600); }
.blog-card__excerpt{ color:var(--c-ink-muted); margin-block-end:var(--space-4); }
.blog-card__link{
  margin-block-start:auto;
  font-weight:600;
  color:var(--c-navy-800);
  text-decoration:none;
}
.blog-card__link:hover{ color:var(--c-gold-600); }

/* Single blog post */
.blog-post__meta{
  padding-block-start:var(--space-8);
  color:var(--c-ink-muted);
  font-size:var(--fs-small);
}
.blog-post__featured-image{ padding-block-start:var(--space-4); }
.blog-post__featured-image img{
  width:100%;
  height:auto;
  border-radius:var(--radius-md);
  box-shadow:var(--shadow-sm);
}

/* Current weather widget — compact card, same visual language as the
   trust-bar badges above it on the home page. */
.weather-section{ padding-block:var(--space-12); padding-inline:var(--gutter); background:var(--c-bg); }
.weather-widget{
  display:flex;
  align-items:center;
  justify-content:center;
  gap:var(--space-4);
  max-width:fit-content;
  margin-inline:auto;
  padding:var(--space-4) var(--space-8);
  background:var(--c-white);
  border:1px solid var(--c-border);
  border-radius:var(--radius-lg);
  box-shadow:var(--shadow-sm);
}
.weather-widget svg{ color:var(--c-gold-600); flex-shrink:0; }
.weather-widget__temp{
  font-family:var(--font-heading);
  font-weight:600;
  font-size:var(--fs-h3);
  color:var(--c-ink);
  margin:0;
}
.weather-widget__label{
  font-family:var(--font-body);
  font-weight:400;
  font-size:var(--fs-body);
  color:var(--c-ink-muted);
}
.weather-widget__location{
  margin:0;
  color:var(--c-ink-muted);
  font-size:var(--fs-small);
}
.blog-post__content{ padding-block-start:var(--space-8); }

/* ============================================================
   PPC "near me" landing page (page-templates/ppc-landing.php)
   Minimal chrome: simple header, form-first hero, trust bar,
   sticky click-to-call footer bar.
   ============================================================ */
.ppc-header{
  background:var(--c-white);
  border-bottom:1px solid var(--c-border);
  position:sticky; top:0; z-index:100;
}
.ppc-header__inner{
  display:flex; align-items:center; justify-content:space-between;
  gap:var(--space-4);
  padding-block:var(--space-3);
}
.ppc-header__logo{ display:inline-flex; }
.ppc-header__logo svg{ height:38px; width:auto; }

.ppc-hero{
  background:linear-gradient(160deg,var(--c-navy-800),var(--c-navy-900));
  color:var(--c-white); text-align:center;
}
.ppc-hero .hero__title,
.ppc-hero .hero__subheading{ color:var(--c-white); }
.ppc-hero__form{
  background:var(--c-white); color:var(--c-ink);
  max-width:560px; margin:var(--space-8) auto 0;
  padding:var(--space-6); border-radius:var(--radius-md);
  box-shadow:var(--shadow-lg); text-align:left;
}
.ppc-hero__form-title{ font-size:var(--fs-h3); margin:0 0 var(--space-4); }

.ppc-trust{
  display:flex; flex-wrap:wrap; justify-content:center;
  gap:var(--space-3) var(--space-6);
  list-style:none; margin:0;
  padding:var(--space-4) var(--gutter);
  background:var(--c-bg); border-bottom:1px solid var(--c-border);
  font-weight:600; color:var(--c-ink);
}
.ppc-trust li{ position:relative; padding-inline-start:1.5em; }
.ppc-trust li::before{ content:"\2714"; position:absolute; inset-inline-start:0; color:var(--c-success); }

.ppc-sticky-cta{
  position:fixed; inset-inline:0; bottom:0; z-index:200;
  background:var(--c-navy-900); padding:var(--space-3);
  display:flex; justify-content:center;
  box-shadow:0 -4px 20px rgba(10,31,68,.25);
}
.ppc-sticky-cta .btn-primary{ width:100%; max-width:420px; justify-content:center; }

.ppc-footer{
  background:var(--c-navy-900); color:var(--c-white);
  padding:var(--space-12) 0 calc(var(--space-12) + 64px);
}
.ppc-footer__inner{ text-align:center; display:flex; flex-direction:column; gap:var(--space-3); }
.ppc-footer a{ color:var(--c-gold-500); }
.ppc-footer__links{ display:flex; flex-wrap:wrap; justify-content:center; gap:var(--space-4); }
.ppc-footer__copy{ color:var(--c-ink-muted); font-size:var(--fs-small); margin:0; }

/* Keep the sticky CTA from covering the last of the page content. */
body:has(.ppc-sticky-cta){ padding-bottom:72px; }
