/* Desktop header: keep every item on one line (fixes "Areas We Serve" / phone / "Book Now" wrapping).
   The header sits inside a max-w-7xl (1280px) container, so past 1280px viewport width the available
   room for logo + nav + phone + Book Now stops growing - it stays the same from a 1280px laptop up to
   a huge 2000px+ monitor. So this tighter spacing applies everywhere from 1024px up, not just "narrow"
   laptops, otherwise the phone number and Book Now button overflow past the right edge on every screen
   1280px and wider. */
@media (min-width:1024px){
  header nav a,
  header a[href^="tel:"],
  header a[href="/book-now"]{white-space:nowrap}
  header nav{gap:0}
  header nav > div > a{padding-left:.375rem;padding-right:.375rem}
  header > div > nav ~ div{gap:.5rem;flex-shrink:0}
  header a[href^="tel:"]{gap:.25rem}
  header a[href="/book-now"]{padding-left:1rem;padding-right:1rem}
  /* nudge the logo in a touch from the very left edge */
  header > div > a:first-child{margin-left:.25rem}
}
/* Narrower laptops (1024-1279px): the container is not yet capped at 1280px here, so there is even
   less room than above. Shrink the logo a little more and drop the phone number to icon-only so
   nothing wraps. At 1280px+ the container is fixed at 1280px wide and the full-size logo (xl:h-16)
   has room thanks to the spacing rules above - logo size itself is never reduced from there up. */
@media (min-width:1024px) and (max-width:1279px){
  header img[alt^="Film Unit Car"]{height:2.5rem}
  header nav > div > a{font-size:13px}
  header a[href^="tel:"]{font-size:0;gap:0}
  header a[href="/book-now"]{font-size:13px}
}

/* Fleet cards: show the whole vehicle. The car photos are 1300x600 (13:6) on a black background,
   so the picture box uses the same ratio instead of a fixed height that crops the car. */
div.overflow-hidden:is(.h-32,.h-44,.h-48,.h-52):has(> img:is([src*="/images/vehicles/"]:not([src*="luggage"]):not([src*="directors-executive"]),[src*="/images/stock/minibus"],[src*="/images/stock/coach"],[src*="/images/stock/splitter"])){
  height:auto;aspect-ratio:13/6;background:#000}
div.overflow-hidden:is(.h-32,.h-44,.h-48,.h-52) > img:is([src*="/images/vehicles/"],[src*="/images/stock/minibus"],[src*="/images/stock/coach"],[src*="/images/stock/splitter"]){object-fit:cover;object-position:center}
/* Big vehicle panel on the Fleet page: never crop the car, black bars blend into the black photo background */
div.overflow-hidden.min-h-\[320px\]:has(> img[src*="/images/vehicles/"]:not([src*="luggage"]):not([src*="directors-executive"])){background:#000;display:flex;align-items:center}
div.overflow-hidden.min-h-\[320px\] > img[src*="/images/vehicles/"]:not([src*="luggage"]):not([src*="directors-executive"]){object-fit:contain;height:auto;max-height:100%}

/* Square photos are shown in wide banners: keep the subject (faces, car) inside the visible strip */
img[src*="/hero/airports-hero"]{object-position:50% 67%}
img[src*="/hero/areas-hero"]{object-position:50% 76%}
img[src*="/hero/booknow-hero"]{object-position:50% 40%}
img[src*="/hero/contact-hero"]{object-position:50% 27%}
img[src*="/hero/costs-hero"]{object-position:50% 30%}
img[src*="/hero/services-hero"]{object-position:50% 22%}
img[src*="/hero/about-hero"]{object-position:50% 72%}
img[src*="/context/private-driver-hire-with-car-for-film-productions"]{object-position:50% 35%}
img[src*="/context/film-industry-transportation-service-client-exit"]{object-position:50% 25%}

/* Dropdown lists in the quote forms: the closed select is dark with white text, but the open list is drawn on a white
   background by the browser, so the option text must be dark or it becomes invisible. */
select option,select optgroup{background:#fff;color:#121414}
select option:disabled{color:#8a8f8f}

/* Legal pages (Terms & Conditions, Privacy Policy): the compiled Tailwind CSS never includes the
   "prose" typography plugin or any list-utility classes, because the original site never used
   <ul>/<li> in its body copy - so bullet lists need their own plain styling here instead. */
.legal-prose ul{list-style:disc;padding-left:1.25rem;margin:.75rem 0}
.legal-prose li{margin:.35rem 0}
.legal-prose .legal-summary{background:var(--color-cream);border:1px solid rgba(18,20,20,.08);border-radius:.75rem;padding:1.25rem 1.5rem;margin:1.5rem 0}
.legal-prose .legal-summary ul{margin:.5rem 0 0;list-style:none;padding-left:0}
.legal-prose .legal-summary li{margin:.3rem 0}

/* Hero badges/kickers/subtitles sit directly over a photo behind a gradient overlay. The overlay
   is dark enough on most photos, but a few (bright sky, pale walls, etc.) leave the small gold text
   under WCAG AA contrast at that exact spot. A solid dark text-shadow guarantees a readable edge
   around the glyphs on every photo without changing how the text looks on already-dark photos. */
.hero-scrim-text{text-shadow:0 1px 2px rgba(0,0,0,.9),0 0 10px rgba(0,0,0,.7),0 0 18px rgba(0,0,0,.5)}

/* Hero overlay + text contrast, forced via plain CSS instead of relying on the page's own HTML classes.
   On pages that load the React bundle, the app re-renders its hero section after the page first paints
   and resets that section's classes back to whatever is compiled into that bundle - so a class we add or
   change only in the HTML (like a lighter gradient, or a text-shadow class) can briefly show correctly
   and then get overwritten a moment later. These rules target the SAME elements by the plain utility
   classes that are always present either way (bg-gradient-to-r/-to-t, or just "the only h1 on the page"),
   and !important wins regardless of which exact gradient class the bundle puts back - so the lighter,
   more-visible overlay and the readable text stay correct even after that re-render. */
div.absolute.inset-0.bg-gradient-to-r{background-image:linear-gradient(to right,rgba(18,20,20,.70),rgba(18,20,20,0)) !important}
div.absolute.inset-0.bg-gradient-to-t{background-image:linear-gradient(to top,rgba(18,20,20,.55),rgba(18,20,20,0)) !important}
/* Hero height: 86vh on phones, 92vh from md (768px) up. Not written as Tailwind min-h-[86vh]/
   md:min-h-[92vh] utility classes for two reasons - the compiled bundle only ever contains the exact
   arbitrary values the original site used at build time (it already happens to ship min-h-[92vh], but
   never shipped an 86vh or a responsive variant of either, so those class names would compile to
   nothing), and on top of that the hero section's own classes are just as likely to get reset after
   hydration as everything else in it. Targeting "the section with the page's only h1 in it" sidesteps
   both problems the same way the gradient/text rules above do. */
section:has(h1){min-height:86vh !important}
@media (min-width:768px){
  section:has(h1){min-height:92vh !important}
}
h1{text-shadow:0 1px 2px rgba(0,0,0,.9),0 0 10px rgba(0,0,0,.7),0 0 18px rgba(0,0,0,.5)}
[class*="text-gold-light text-lg md:text-xl font-medium"],
[class*="text-gold-light text-lg font-semibold"],
[class*="text-white/70 text-sm font-medium tracking-wide"],
[class*="text-white/75 text-base leading-relaxed mb-8 max-w-xl"],
[class*="text-white/80 text-base sm:text-lg leading-relaxed mb-8 max-w-2xl"]{text-shadow:0 1px 2px rgba(0,0,0,.9),0 0 10px rgba(0,0,0,.7),0 0 18px rgba(0,0,0,.5)}

/* Hero content wrapper top/bottom padding (the booking-bar overlap gap).
   The server HTML for this wrapper is "py-24 md:py-28" on every hero page, but on hydrated
   pages the bundle resets it to an older "pb-16 pt-28" after first paint - same reset pattern
   as the gradient/text/height rules above. That shrinks the empty space below the hero's
   buttons, so the floating booking-bar card (which overlaps the hero by a fixed amount) ends
   up flush against the buttons instead of leaving a visible gap, on hydrated pages only -
   while static pages (which never get touched after load) keep the correct spacing. Forcing
   the intended py-24/md:py-28 values here keeps every page's gap identical to the correct
   pages (e.g. Production Transport), regardless of hydration. */
section:has(h1) > [class*="relative z-10 max-w-7xl mx-auto"]{padding-top:96px !important;padding-bottom:96px !important}
@media (min-width:768px){
  section:has(h1) > [class*="relative z-10 max-w-7xl mx-auto"]{padding-top:112px !important;padding-bottom:112px !important}
}

/* ================================================================
   UNIFIED NAVIGATION — replaces both the old React-hydrated header
   and the old static-page header with ONE identical component that
   is plain HTML/CSS/JS, so it renders exactly the same on every
   page regardless of how that page is built. The old header (which
   still exists in the markup so nothing else on the page breaks)
   is hidden here; it is never deleted or edited.
   ================================================================ */
body > div#root header{display:none!important}

:root{
  --fuc-ink:#121414;
  --fuc-ink-2:#1b1f1e;
  --fuc-green:#2d8c42;
  --fuc-green-dark:#1f6631;
  --fuc-green-light:#5cb873;
  --fuc-cream:#f8f8f8;
  --fuc-line:rgba(255,255,255,.1);
}

.fuc-header{
  position:fixed;top:0;left:0;right:0;z-index:50;
  background:var(--fuc-ink);
  font-family:"Inter",ui-sans-serif,system-ui,sans-serif;
  transition:background-color .25s ease,box-shadow .25s ease,padding .25s ease;
  padding:14px 0;
}
.fuc-header.fuc-scrolled{background:rgba(255,255,255,.97);box-shadow:0 2px 14px rgba(0,0,0,.08);padding:8px 0}

.fuc-bar{
  max-width:1280px;margin:0 auto;padding:0 20px;
  display:flex;align-items:center;justify-content:space-between;gap:16px;
}
.fuc-logo{display:flex;align-items:center;flex:none}
.fuc-logo img{height:40px;width:auto;display:block;transition:height .25s ease}
.fuc-header.fuc-scrolled .fuc-logo img{height:34px}

.fuc-nav{display:flex;align-items:center;gap:2px}
.fuc-nav .fuc-trig,.fuc-nav .fuc-plain{
  font:inherit;background:none;border:none;cursor:pointer;
  color:#fff;font-size:14px;font-weight:500;white-space:nowrap;
  display:inline-flex;align-items:center;gap:5px;
  padding:9px 13px;border-radius:999px;
  transition:background-color .15s,color .15s;
}
.fuc-header.fuc-scrolled .fuc-nav .fuc-trig,
.fuc-header.fuc-scrolled .fuc-nav .fuc-plain{color:var(--fuc-ink)}
.fuc-nav .fuc-trig:hover,.fuc-nav .fuc-plain:hover{background:rgba(255,255,255,.1);color:var(--fuc-green-light)}
.fuc-header.fuc-scrolled .fuc-nav .fuc-trig:hover,
.fuc-header.fuc-scrolled .fuc-nav .fuc-plain:hover{background:rgba(45,140,66,.1);color:var(--fuc-green-dark)}
.fuc-nav .fuc-trig[aria-expanded="true"]{background:rgba(45,140,66,.22);color:var(--fuc-green-light)}
.fuc-header.fuc-scrolled .fuc-nav .fuc-trig[aria-expanded="true"]{background:rgba(45,140,66,.12);color:var(--fuc-green-dark)}
.fuc-nav .fuc-active-link{color:var(--fuc-green-light)}
.fuc-header.fuc-scrolled .fuc-nav .fuc-active-link{color:var(--fuc-green-dark)}
.fuc-nav .fuc-trig svg{transition:transform .18s}
.fuc-nav .fuc-trig[aria-expanded="true"] svg{transform:rotate(180deg)}

.fuc-right{display:flex;align-items:center;gap:12px;flex:none}
.fuc-phone{color:#fff;font-size:13.5px;font-weight:500;white-space:nowrap}
.fuc-header.fuc-scrolled .fuc-phone{color:var(--fuc-ink)}
.fuc-book{
  background:var(--fuc-green);color:#fff;font-weight:600;font-size:13.5px;
  padding:10px 20px;border-radius:999px;white-space:nowrap;
}
.fuc-book:hover{background:var(--fuc-green-dark)}
.fuc-burger{display:none;background:none;border:none;color:#fff;padding:6px;cursor:pointer}
.fuc-header.fuc-scrolled .fuc-burger{color:var(--fuc-ink)}

/* Mega panels — one shared component for every dropdown on every page */
.fuc-panel-host{position:relative;max-width:1280px;margin:0 auto}
.fuc-megapanel{
  position:absolute;top:14px;left:20px;
  background:#fff;color:var(--fuc-ink);
  border:1px solid rgba(0,0,0,.08);border-radius:16px;
  box-shadow:0 24px 48px -12px rgba(0,0,0,.35);
  padding:22px;display:none;z-index:60;
  max-height:min(70vh,560px);overflow-y:auto;
}
.fuc-megapanel.fuc-open{display:block}
.fuc-megapanel.fuc-wide{min-width:640px}
.fuc-megapanel.fuc-mid{min-width:420px}
.fuc-megapanel.fuc-narrow{min-width:220px}

.fuc-mega-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:22px}
.fuc-group-title{font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--fuc-green);margin:0 0 10px}
.fuc-group-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px}
.fuc-group-list a{display:block;padding:7px 8px;border-radius:8px;font-size:13.5px;color:var(--fuc-ink);text-decoration:none}
.fuc-group-list a:hover{background:var(--fuc-cream);color:var(--fuc-green-dark)}

.fuc-card-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.fuc-card-grid.fuc-card-grid-4{grid-template-columns:repeat(3,1fr)}
.fuc-place-card{
  border:1px solid rgba(0,0,0,.08);border-radius:12px;padding:11px 13px;
  display:flex;align-items:center;gap:9px;font-size:13.5px;font-weight:500;
  color:var(--fuc-ink);text-decoration:none;
}
.fuc-place-card:hover{border-color:var(--fuc-green);background:var(--fuc-cream)}
.fuc-ic{width:26px;height:26px;border-radius:8px;background:rgba(45,140,66,.12);display:flex;align-items:center;justify-content:center;flex:none;color:var(--fuc-green);font-size:13px}

.fuc-mega-foot{margin-top:16px;padding-top:14px;border-top:1px solid rgba(0,0,0,.08);display:flex;justify-content:flex-end}
.fuc-mega-foot a{font-size:13px;font-weight:600;color:var(--fuc-green-dark);text-decoration:none}
.fuc-mega-foot a:hover{color:var(--fuc-green)}

.fuc-backdrop{position:fixed;inset:0;background:rgba(10,12,15,.35);z-index:40;display:none}
.fuc-backdrop.fuc-open{display:block}

/* Mobile sheet */
.fuc-mobile-menu{display:none;position:fixed;inset:0;z-index:65;background:var(--fuc-ink);padding:18px;overflow-y:auto}
.fuc-mobile-menu.fuc-open{display:block}
.fuc-mtop{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}
.fuc-mclose{background:none;border:none;color:#fff;padding:8px;cursor:pointer}
.fuc-macc{border-bottom:1px solid rgba(255,255,255,.1)}
.fuc-macc>button{width:100%;background:none;border:none;color:#fff;text-align:left;font:inherit;padding:14px 4px;font-size:15px;font-weight:500;display:flex;justify-content:space-between;align-items:center;cursor:pointer}
.fuc-mlist{display:none;padding:0 4px 14px;flex-direction:column;gap:2px}
.fuc-mlist.fuc-open{display:flex}
.fuc-mlist a{color:rgba(255,255,255,.78);font-size:14px;padding:7px 8px;border-radius:8px;text-decoration:none}
.fuc-mlist a:hover{background:rgba(255,255,255,.06);color:#fff}
.fuc-mplain{display:block;color:#fff;padding:14px 4px;font-size:15px;font-weight:500;border-bottom:1px solid rgba(255,255,255,.1);text-decoration:none}
.fuc-mbook{display:inline-block;margin-top:16px;background:var(--fuc-green);color:#fff;font-weight:600;font-size:14px;padding:12px 22px;border-radius:999px;text-decoration:none}

@media (max-width:1024px){
  .fuc-nav,.fuc-phone{display:none}
  .fuc-burger{display:flex}
}
@media (max-width:900px){
  .fuc-megapanel.fuc-wide{min-width:0;left:16px;right:16px;width:auto}
  .fuc-mega-grid{grid-template-columns:repeat(2,1fr)}
  .fuc-card-grid{grid-template-columns:repeat(2,1fr)}
}
@media (max-width:560px){
  .fuc-logo img{height:30px}
  .fuc-book{display:none}
  .fuc-bar{padding:0 16px}
}
