/*
Theme Name: Universal Airport Transfer
Theme URI: https://universalairporttransfer.com
Author: Universal Travel Assistance LLC
Description: Premium airport transfer and chauffeur service theme. Dark cinematic hero, a full booking enquiry form that posts to the booking desk, and twelve content sections written for search and answer engines. Manrope, Cormorant Garamond, Instrument Serif and IBM Plex Mono, self-hosted.
Version: 1.13.1
Requires at least: 6.2
Tested up to: 6.7
Requires PHP: 7.4
License: GNU General Public License v2 or later
Text Domain: universal-airport-transfer
*/

/* ============================================================
   1. Tokens
   One place for every colour and measure. The design came out of
   a bundle that carried these as inline styles on every element,
   which is unmaintainable; naming them once means a change to the
   brand blue is a change to one line.
   ============================================================ */
:root{
  --ink:#071726;            /* body text on light */
  --ink-60:rgba(7,23,38,.6);
  --ink-45:rgba(7,23,38,.45);
  --ink-14:rgba(7,23,38,.14);
  --ink-08:rgba(7,23,38,.08);
  --night:#04121f;          /* dark section ground */
  --night-2:#08203a;
  --blue:#1FA2E8;           /* brand */
  --blue-deep:#0C7CBE;
  --blue-ink:#0b5e93;
  --sky:#7FD2F7;
  --paper:#fff;
  --paper-2:#F4F8FC;
  --line:rgba(255,255,255,.12);
  --mono:'IBM Plex Mono',ui-monospace,monospace;
  --sans:'Manrope',system-ui,-apple-system,sans-serif;
  --serif:'Cormorant Garamond',Georgia,serif;
  --accent-serif:'Instrument Serif',Georgia,serif;
  --wrap:1240px;
  --pad:clamp(20px,5vw,64px);
  --radius:18px;
}

/* ============================================================
   2. Base
   ============================================================ */
*{box-sizing:border-box;}
html{scroll-behavior:smooth;scroll-padding-top:88px;}
body{margin:0;background:var(--night);color:var(--ink);font-family:var(--sans);
  -webkit-font-smoothing:antialiased;overflow-x:hidden;}
img,video{max-width:100%;display:block;}
a{color:#1187cf;text-decoration:none;}
a:hover{color:#0a5f95;}
input,select,textarea,button{font-family:inherit;}
input::placeholder,textarea::placeholder{color:var(--ink-45);}
::selection{background:var(--sky);color:var(--night);}
:focus-visible{outline:2px solid var(--blue);outline-offset:2px;}
.uat-sr{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;
  clip:rect(0 0 0 0);white-space:nowrap;border:0;}
.uat-skip{position:absolute;left:-9999px;top:0;z-index:200;padding:12px 20px;background:var(--paper);
  color:var(--ink);border-radius:0 0 8px 0;}
.uat-skip:focus{left:0;}

.uat-wrap{max-width:var(--wrap);margin:0 auto;padding-left:var(--pad);padding-right:var(--pad);}
.uat-sec{position:relative;padding:clamp(72px,9vw,132px) 0;overflow:hidden;}
.uat-sec--light{background:var(--paper);color:var(--ink);}
.uat-sec--tint{background:var(--paper-2);color:var(--ink);}
.uat-sec--dark{background:var(--night);color:#EAF3FA;}

/* A photograph behind a dark section, dimmed enough that text on top
   keeps a contrast ratio a person can actually read. */
.uat-bg{position:absolute;inset:-8% 0;background-size:cover;background-position:center;
  opacity:.28;pointer-events:none;}
.uat-sec--dark .uat-bg::after,.uat-bg::after{content:"";position:absolute;inset:0;
  background:linear-gradient(180deg,rgba(4,18,31,.82),rgba(4,18,31,.94));}

.uat-eyebrow{display:inline-flex;align-items:center;gap:12px;margin:0 0 18px;font-family:var(--mono);
  font-size:11px;letter-spacing:.28em;text-transform:uppercase;color:var(--blue);}
.uat-eyebrow::before{content:"";width:28px;height:1px;background:currentColor;}
.uat-h2{margin:0 0 18px;font-family:var(--serif);font-weight:400;font-size:clamp(30px,4.2vw,52px);
  line-height:1.1;letter-spacing:-.02em;}
.uat-sec--light .uat-h2,.uat-sec--tint .uat-h2{color:var(--night);}
.uat-sec--dark .uat-h2{color:#fff;}
.uat-h2 em{font-family:var(--accent-serif);font-style:italic;color:var(--blue);}
.uat-lead{margin:0 0 38px;max-width:68ch;font-size:clamp(15.5px,1.5vw,18px);line-height:1.75;}
.uat-sec--light .uat-lead,.uat-sec--tint .uat-lead{color:var(--ink-60);}
.uat-sec--dark .uat-lead{color:rgba(234,243,250,.7);}

.uat-btn{display:inline-flex;align-items:center;gap:11px;padding:17px 30px;border:0;border-radius:100px;
  cursor:pointer;font-size:14.5px;font-weight:700;letter-spacing:-.005em;
  background:linear-gradient(120deg,var(--blue),var(--blue-deep));color:#fff;
  box-shadow:0 14px 30px -12px rgba(31,162,232,.7);
  transition:transform .3s cubic-bezier(.2,.8,.2,1),box-shadow .3s ease,filter .3s ease;}
.uat-btn:hover{color:#fff;transform:translateY(-2px);box-shadow:0 20px 38px -14px rgba(31,162,232,.8);}
.uat-btn--ghost{background:transparent;color:inherit;border:1px solid currentColor;box-shadow:none;}
.uat-btn--ghost:hover{color:inherit;background:rgba(255,255,255,.08);box-shadow:none;}
.uat-btn--light{background:#fff;color:var(--night);box-shadow:0 14px 30px -14px rgba(0,0,0,.5);}
.uat-btn--light:hover{color:var(--night);}

/* ============================================================
   3. Top bar and header
   ============================================================ */
.uat-topbar{background:var(--night);color:rgba(234,243,250,.62);font-family:var(--mono);font-size:10.5px;
  letter-spacing:.16em;text-transform:uppercase;border-bottom:1px solid var(--line);}
.uat-topbar__in{display:flex;align-items:center;justify-content:space-between;gap:20px;
  min-height:36px;flex-wrap:wrap;}
.uat-topbar a{color:inherit;}
.uat-topbar a:hover{color:var(--sky);}
.uat-clocks{display:flex;gap:18px;}
.uat-clocks span b{color:var(--sky);font-weight:500;}

.uat-header{position:sticky;top:0;z-index:120;background:rgba(4,18,31,.86);
  backdrop-filter:saturate(160%) blur(14px);-webkit-backdrop-filter:saturate(160%) blur(14px);
  border-bottom:1px solid var(--line);}
.uat-header__in{display:flex;align-items:center;justify-content:space-between;gap:24px;min-height:72px;}
.uat-brand{display:flex;align-items:center;gap:13px;color:#fff;}
.uat-brand:hover{color:#fff;}
/* The lockup carries three lines of wordmark beside the mark, so its height
   sets how readable the name is. At 40px each line came out around 8px tall,
   too small to read on a laptop. 58px gives the words a legible size while
   still fitting the 72px header. */
.uat-brand img{display:block;height:58px;width:auto;}
@media (max-width:900px){.uat-brand img{height:48px;}}
@media (max-width:560px){.uat-brand img{height:36px;}}
.uat-brand__t{font-family:var(--mono);font-size:10.5px;line-height:1.45;letter-spacing:.2em;
  text-transform:uppercase;}
.uat-nav{display:flex;align-items:center;gap:28px;}
.uat-nav a{color:rgba(234,243,250,.78);font-size:14px;font-weight:500;}
.uat-nav a:hover{color:#fff;}
.uat-burger{display:none;width:46px;height:42px;border:1px solid var(--line);border-radius:12px;
  background:transparent;cursor:pointer;padding:0;}
.uat-burger span{display:block;width:18px;height:1.5px;margin:4px auto;background:#fff;
  transition:transform .3s ease,opacity .3s ease;}
.uat-burger[aria-expanded=true] span:nth-child(1){transform:translateY(5.5px) rotate(45deg);}
.uat-burger[aria-expanded=true] span:nth-child(2){opacity:0;}
.uat-burger[aria-expanded=true] span:nth-child(3){transform:translateY(-5.5px) rotate(-45deg);}

/* ============================================================
   4. Hero
   The poster image is the LCP element and loads eagerly; the video
   is attached by script after first paint. The original bundle
   autoplayed a 7 MB file as the first thing on the page, which is
   a slow first render and a large mobile data bill for a visitor
   who may only want the phone number.
   ============================================================ */
.uat-hero{position:relative;min-height:clamp(560px,88vh,880px);display:flex;align-items:flex-end;
  background:var(--night);overflow:hidden;}
.uat-hero__media{position:absolute;inset:0;}
.uat-hero__media img,.uat-hero__media video{width:100%;height:100%;object-fit:cover;}
.uat-hero__media::after{content:"";position:absolute;inset:0;
  background:linear-gradient(180deg,rgba(4,18,31,.55) 0%,rgba(4,18,31,.35) 38%,rgba(4,18,31,.93) 100%);}
.uat-hero__in{position:relative;width:100%;padding-top:clamp(70px,12vw,140px);
  padding-bottom:clamp(40px,6vw,72px);}
.uat-hero h1{margin:0 0 22px;font-family:var(--serif);font-weight:300;
  font-size:clamp(44px,8.4vw,104px);line-height:.98;letter-spacing:-.03em;color:#fff;}
.uat-hero h1 em{display:block;font-family:var(--accent-serif);font-style:italic;color:var(--sky);}
.uat-hero__p{margin:0 0 34px;max-width:56ch;font-size:clamp(16px,1.7vw,19px);line-height:1.7;
  color:rgba(234,243,250,.82);}
.uat-hero__cta{display:flex;flex-wrap:wrap;gap:14px;}
.uat-hero__cta .uat-btn--ghost{color:#fff;border-color:rgba(255,255,255,.4);}

.uat-stats{display:grid;gap:1px;margin-top:clamp(36px,5vw,60px);
  grid-template-columns:repeat(auto-fit,minmax(220px,1fr));
  background:var(--line);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;}
.uat-stat{padding:24px 26px;background:rgba(4,18,31,.62);
  backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);}
.uat-stat b{display:block;font-family:var(--serif);font-weight:400;font-size:clamp(28px,3.4vw,40px);
  line-height:1;color:#fff;}
.uat-stat b sup{font-size:.5em;vertical-align:super;color:var(--sky);}
.uat-stat i{display:block;margin:10px 0 4px;font-style:normal;font-family:var(--mono);font-size:9.5px;
  letter-spacing:.22em;text-transform:uppercase;color:var(--sky);}
.uat-stat span{display:block;font-size:12.5px;line-height:1.55;color:rgba(234,243,250,.6);}

/* The scrolling strip of service words under the hero. Duplicated in the
   markup so the translate can loop without a visible seam. */
.uat-ticker{background:var(--night-2);border-top:1px solid var(--line);
  border-bottom:1px solid var(--line);overflow:hidden;}
.uat-ticker__track{display:flex;width:max-content;gap:0;animation:uatMarquee 38s linear infinite;}
.uat-ticker__i{display:flex;align-items:center;gap:11px;padding:15px 30px;white-space:nowrap;
  font-family:var(--mono);font-size:11.5px;letter-spacing:.18em;text-transform:uppercase;
  color:rgba(234,243,250,.62);}
.uat-ticker__i b{color:var(--sky);font-weight:500;}
@keyframes uatMarquee{from{transform:translateX(0)}to{transform:translateX(-50%)}}

/* ============================================================
   5. Booking enquiry
   ============================================================ */
.uat-book{position:relative;background:var(--paper);border-radius:var(--radius);
  box-shadow:0 40px 90px -50px rgba(4,18,31,.7);overflow:hidden;}
.uat-book__head{padding:clamp(24px,3vw,34px) clamp(22px,3vw,38px) 0;}
.uat-tabs{display:flex;gap:2px;overflow-x:auto;border-bottom:1px solid var(--ink-08);
  scrollbar-width:none;}
.uat-tabs::-webkit-scrollbar{display:none;}
.uat-tab{position:relative;flex:none;padding:14px 18px 16px;border:0;background:none;cursor:pointer;
  font-size:13.5px;font-weight:600;color:var(--ink-45);transition:color .3s ease;}
.uat-tab[aria-selected=true]{font-weight:700;color:var(--blue-ink);}
.uat-tab::after{content:"";position:absolute;left:10px;right:10px;bottom:-1px;height:2px;border-radius:2px;
  background:linear-gradient(90deg,var(--blue),var(--sky));transform:scaleX(0);transform-origin:left;
  transition:transform .45s cubic-bezier(.2,.8,.2,1);}
.uat-tab[aria-selected=true]::after{transform:scaleX(1);}

.uat-tabpanel{padding:22px clamp(22px,3vw,38px) 0;}
.uat-tabpanel__card{padding:20px 22px;border:1px solid var(--ink-08);border-radius:14px;
  background:var(--paper-2);}
.uat-tabpanel__t{display:flex;flex-wrap:wrap;align-items:baseline;gap:12px;margin:0 0 8px;
  font-size:17px;font-weight:700;color:var(--night);}
.uat-tabpanel__t span{font-family:var(--mono);font-size:10px;letter-spacing:.16em;text-transform:uppercase;
  color:var(--ink-45);font-weight:400;}
.uat-tabpanel__b{margin:0 0 14px;font-size:14.5px;line-height:1.7;color:var(--ink-60);}
.uat-facts{display:flex;flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none;}
.uat-fact{display:inline-flex;align-items:center;gap:7px;padding:7px 14px;border-radius:100px;
  background:#fff;border:1px solid var(--ink-08);font-size:12px;color:var(--ink-60);}
.uat-fact::before{content:"";width:5px;height:5px;border-radius:50%;background:var(--blue);}

.uat-form{padding:clamp(20px,3vw,30px) clamp(22px,3vw,38px) clamp(26px,3vw,38px);}
.uat-grid{display:grid;gap:18px 20px;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));}
.uat-f{display:flex;flex-direction:column;}
.uat-f--wide{grid-column:1/-1;}
.uat-f label{margin-bottom:9px;font-family:var(--mono);font-size:9.5px;letter-spacing:.2em;
  text-transform:uppercase;color:var(--ink-45);}
.uat-f .req{color:#D64530;}
/* 16px minimum: iOS Safari zooms the viewport on focus for anything smaller. */
.uat-f input,.uat-f select,.uat-f textarea{width:100%;padding:14px 15px;font-size:16px;color:var(--ink);
  background:#fff;border:1px solid var(--ink-14);border-radius:12px;
  transition:border-color .2s ease,box-shadow .2s ease;}
.uat-f input:hover,.uat-f select:hover,.uat-f textarea:hover{border-color:rgba(7,23,38,.3);}
.uat-f input:focus,.uat-f select:focus,.uat-f textarea:focus{outline:none;border-color:var(--blue);
  box-shadow:0 0 0 4px rgba(31,162,232,.14);}
.uat-f textarea{resize:vertical;min-height:108px;line-height:1.65;}

/* Location field with its suggestion list. The list is a real <ul> that the
   keyboard can walk, not a div that only responds to a mouse. */
.uat-loc{position:relative;}
.uat-loc__list{position:absolute;z-index:30;left:0;right:0;top:calc(100% + 6px);margin:0;padding:6px;
  list-style:none;background:#fff;border:1px solid var(--ink-14);border-radius:12px;
  box-shadow:0 24px 50px -24px rgba(4,18,31,.5);max-height:266px;overflow:auto;}
.uat-loc__list[hidden]{display:none;}
.uat-loc__list li{padding:0;}
.uat-loc__list button{display:block;width:100%;padding:11px 12px;border:0;border-radius:9px;
  background:none;text-align:left;cursor:pointer;transition:background .16s ease;}
.uat-loc__list button:hover,.uat-loc__list button:focus-visible{background:var(--paper-2);}
.uat-loc__main{display:block;font-size:14px;font-weight:600;color:var(--night);}
.uat-loc__sub{display:block;margin-top:2px;font-size:12px;color:var(--ink-45);}

.uat-count{display:flex;align-items:center;border:1px solid var(--ink-14);border-radius:12px;
  overflow:hidden;background:#fff;transition:border-color .2s ease,box-shadow .2s ease;}
.uat-count:focus-within{border-color:var(--blue);box-shadow:0 0 0 4px rgba(31,162,232,.14);}
.uat-count button{flex:none;width:44px;height:50px;border:0;background:transparent;cursor:pointer;
  font-size:19px;line-height:1;color:var(--blue-ink);transition:background .18s ease,color .18s ease;}
.uat-count button:hover{background:var(--blue);color:#fff;}
.uat-count input{flex:1;min-width:0;height:50px;padding:0;text-align:center;border:0;background:transparent;
  font-size:17px;font-weight:600;color:var(--night);-moz-appearance:textfield;}
.uat-count input::-webkit-outer-spin-button,.uat-count input::-webkit-inner-spin-button{
  -webkit-appearance:none;margin:0;}
.uat-count input:focus{outline:none;}

.uat-chips{display:flex;flex-wrap:wrap;gap:10px;}
.uat-chip{position:relative;cursor:pointer;}
.uat-chip input{position:absolute;opacity:0;width:1px;height:1px;}
.uat-chip span{display:inline-block;padding:11px 17px;border-radius:100px;border:1px solid var(--ink-14);
  background:#fff;font-size:13.5px;font-weight:700;color:rgba(7,23,38,.7);
  transition:all .42s cubic-bezier(.34,1.45,.64,1);}
.uat-chip:hover span{border-color:var(--blue);}
.uat-chip:has(input:checked) span{border-color:var(--blue);color:#fff;
  background:linear-gradient(120deg,var(--blue),var(--blue-deep));
  box-shadow:0 10px 24px rgba(31,162,232,.32);}
.uat-chip:has(input:focus-visible) span{outline:2px solid var(--blue);outline-offset:2px;}

.uat-submit{display:flex;flex-wrap:wrap;align-items:center;gap:18px;margin-top:26px;
  padding-top:24px;border-top:1px solid var(--ink-08);}
.uat-submit p{margin:0;flex:1 1 260px;font-size:12.5px;line-height:1.6;color:var(--ink-45);}
.uat-hp{position:absolute!important;left:-9999px!important;width:1px;height:1px;overflow:hidden;}

.uat-result{display:flex;gap:15px;align-items:flex-start;margin:0 0 26px;padding:20px 24px;
  border-radius:14px;font-size:15px;line-height:1.65;}
.uat-result--ok{background:#E8F6EE;border-left:3px solid #1C7A4D;color:#12563a;}
.uat-result--bad{background:#FCECE9;border-left:3px solid #D64530;color:#8C2A21;}
.uat-result__m{flex:none;width:26px;height:26px;border-radius:50%;display:flex;align-items:center;
  justify-content:center;font-size:14px;font-weight:700;color:#fff;}
.uat-result--ok .uat-result__m{background:#1C7A4D;}
.uat-result--bad .uat-result__m{background:#D64530;}
.uat-result strong{display:block;font-size:17px;}
.uat-result p{margin:6px 0 0;font-size:14px;}
.uat-result__ref{display:inline-block;margin-top:8px;padding:4px 12px;background:rgba(0,0,0,.07);
  border-radius:6px;font-family:var(--mono);font-size:13px;letter-spacing:.08em;}

/* ============================================================
   6. Content sections
   ============================================================ */
.uat-cards{display:grid;gap:26px;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));}
.uat-card{position:relative;border-radius:var(--radius);overflow:hidden;background:#fff;
  border:1px solid var(--ink-08);transition:transform .4s cubic-bezier(.2,.8,.2,1),box-shadow .4s ease;}
.uat-card:hover{transform:translateY(-4px);box-shadow:0 30px 60px -34px rgba(4,18,31,.55);}
.uat-card__img{aspect-ratio:16/10;background-size:cover;background-position:center;}
.uat-card__b{padding:22px 24px 26px;}
.uat-card__n{font-family:var(--mono);font-size:10px;letter-spacing:.22em;text-transform:uppercase;
  color:var(--blue);}
.uat-card h3{margin:10px 0 9px;font-size:19px;font-weight:700;line-height:1.3;color:var(--night);}
.uat-card p{margin:0;font-size:14.5px;line-height:1.7;color:var(--ink-60);}

/* Numbered list used by pricing factors and the booking steps. */
.uat-steps{display:grid;gap:18px;margin:0;padding:0;list-style:none;counter-reset:uat;}
.uat-steps li{counter-increment:uat;display:grid;grid-template-columns:48px 1fr;gap:18px;
  align-items:start;padding:20px 22px;border-radius:14px;background:rgba(255,255,255,.04);
  border:1px solid var(--line);}
.uat-sec--light .uat-steps li,.uat-sec--tint .uat-steps li{background:#fff;border-color:var(--ink-08);}
.uat-steps li::before{content:counter(uat,decimal-leading-zero);display:flex;align-items:center;
  justify-content:center;width:48px;height:48px;border-radius:50%;font-family:var(--mono);font-size:13px;
  background:linear-gradient(150deg,var(--blue),var(--blue-deep));color:#fff;}
.uat-steps h3{margin:0 0 6px;font-size:17px;font-weight:700;line-height:1.35;}
.uat-sec--light .uat-steps h3,.uat-sec--tint .uat-steps h3{color:var(--night);}
.uat-steps p{margin:0;font-size:14.5px;line-height:1.7;}
.uat-sec--dark .uat-steps p{color:rgba(234,243,250,.68);}
.uat-sec--light .uat-steps p,.uat-sec--tint .uat-steps p{color:var(--ink-60);}

/* Fleet picker: a list of classes beside the photograph of the chosen one. */
.uat-fleet{display:grid;gap:clamp(22px,3vw,42px);grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);
  align-items:start;}
.uat-fleet__list{display:grid;gap:10px;margin:0;padding:0;list-style:none;}
.uat-fleet__b{display:grid;grid-template-columns:1fr auto;gap:6px 14px;width:100%;padding:18px 20px;
  border:1px solid var(--ink-08);border-radius:14px;background:#fff;cursor:pointer;text-align:left;
  transition:border-color .3s ease,background .3s ease,box-shadow .3s ease;}
.uat-fleet__b:hover{border-color:var(--blue);}
.uat-fleet__b[aria-selected=true]{border-color:var(--blue);background:var(--paper-2);
  box-shadow:inset 3px 0 0 var(--blue);}
.uat-fleet__b b{font-size:17px;font-weight:700;color:var(--night);}
.uat-fleet__b i{grid-column:1/-1;font-style:normal;font-family:var(--mono);font-size:9.5px;
  letter-spacing:.18em;text-transform:uppercase;color:var(--ink-45);}
.uat-fleet__cap{align-self:center;font-size:12.5px;color:var(--ink-60);text-align:right;}
.uat-fleet__view{position:relative;border-radius:var(--radius);overflow:hidden;min-height:340px;
  background:var(--night);}
.uat-fleet__layer{position:absolute;inset:0;background-size:cover;background-position:center;
  opacity:0;transform:scale(1.05);transition:opacity .9s cubic-bezier(.22,.75,.2,1),
  transform 1.5s cubic-bezier(.22,.75,.2,1);}
.uat-fleet__layer.is-on{opacity:1;transform:scale(1);}
.uat-fleet__cap2{position:absolute;left:0;right:0;bottom:0;padding:26px 26px 24px;color:#fff;
  background:linear-gradient(180deg,rgba(4,18,31,0),rgba(4,18,31,.9));}
.uat-fleet__cap2 h3{margin:0 0 8px;font-family:var(--serif);font-weight:400;font-size:26px;}
.uat-fleet__cap2 p{margin:0;font-size:14px;line-height:1.65;color:rgba(255,255,255,.78);}

.uat-why{display:grid;gap:14px;margin:0;padding:0;list-style:none;
  grid-template-columns:repeat(auto-fit,minmax(300px,1fr));}
.uat-why li{display:grid;grid-template-columns:22px 1fr;gap:14px;padding:20px 22px;border-radius:14px;
  background:rgba(255,255,255,.04);border:1px solid var(--line);font-size:14.5px;line-height:1.7;
  color:rgba(234,243,250,.78);}
.uat-why li::before{content:"";width:22px;height:22px;border-radius:50%;margin-top:2px;
  background:linear-gradient(150deg,var(--blue),var(--blue-deep));
  -webkit-mask:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M9 16.2 4.8 12l-1.4 1.4L9 19 21 7l-1.4-1.4z' fill='white'/></svg>") center/16px no-repeat,linear-gradient(#000,#000);
  mask:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M9 16.2 4.8 12l-1.4 1.4L9 19 21 7l-1.4-1.4z' fill='white'/></svg>") center/16px no-repeat;}

.uat-quotes{display:grid;gap:20px;grid-template-columns:repeat(auto-fit,minmax(290px,1fr));}
.uat-quote{display:flex;flex-direction:column;padding:26px 26px 22px;border-radius:var(--radius);
  background:rgba(255,255,255,.045);border:1px solid var(--line);}
.uat-quote p{margin:0 0 20px;flex:1;font-family:var(--serif);font-size:19px;line-height:1.55;
  color:#fff;}
.uat-quote footer{display:flex;align-items:center;gap:13px;}
.uat-quote__a{flex:none;width:38px;height:38px;border-radius:50%;display:flex;align-items:center;
  justify-content:center;font-weight:700;color:#fff;
  background:linear-gradient(150deg,var(--blue),var(--blue-deep));}
.uat-quote__n{display:block;font-size:14px;font-weight:600;color:#fff;}
.uat-quote__r{display:block;margin-top:2px;font-family:var(--mono);font-size:9.5px;letter-spacing:.18em;
  text-transform:uppercase;color:var(--sky);}

.uat-google{margin-top:44px;padding-top:34px;border-top:1px solid var(--line);}
.uat-google--first{margin-top:8px;padding-top:0;border-top:0;}
.uat-ownquotes{margin-top:44px;padding-top:34px;border-top:1px solid var(--line);}
.uat-h2 + .uat-ownquotes{margin-top:8px;padding-top:0;border-top:0;}
.uat-google__t{margin:0 0 18px;font-family:var(--mono);font-size:10px;letter-spacing:.2em;
  text-transform:uppercase;color:var(--sky);}

.uat-hubs{display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));}
.uat-hub{padding:24px;border-radius:14px;background:rgba(255,255,255,.045);border:1px solid var(--line);}
.uat-hub i{display:block;font-style:normal;font-family:var(--mono);font-size:9.5px;letter-spacing:.22em;
  text-transform:uppercase;color:var(--sky);}
.uat-hub b{display:block;margin:9px 0 6px;font-family:var(--serif);font-weight:400;font-size:24px;
  color:#fff;}
.uat-hub span{font-size:13.5px;line-height:1.6;color:rgba(234,243,250,.62);}

.uat-faq{display:grid;gap:10px;max-width:920px;}
.uat-faq details{border:1px solid var(--ink-08);border-radius:14px;background:#fff;overflow:hidden;}
.uat-faq summary{display:flex;align-items:center;justify-content:space-between;gap:18px;
  padding:20px 24px;cursor:pointer;list-style:none;font-size:16.5px;font-weight:700;color:var(--night);}
.uat-faq summary::-webkit-details-marker{display:none;}
.uat-faq summary::after{content:"";flex:none;width:11px;height:11px;border-right:2px solid var(--blue);
  border-bottom:2px solid var(--blue);transform:rotate(45deg) translateY(-3px);
  transition:transform .3s ease;}
.uat-faq details[open] summary::after{transform:rotate(-135deg) translateY(-3px);}
.uat-faq .uat-faq__a{padding:0 24px 22px;margin:0;font-size:15px;line-height:1.8;color:var(--ink-60);}

.uat-split{display:grid;gap:clamp(26px,4vw,60px);grid-template-columns:repeat(auto-fit,minmax(300px,1fr));
  align-items:center;}
.uat-media{position:relative;border-radius:var(--radius);overflow:hidden;background:var(--night);}
.uat-media video,.uat-media img{width:100%;height:100%;object-fit:cover;}

.uat-footer{background:var(--night);color:rgba(234,243,250,.6);padding:clamp(50px,6vw,80px) 0 34px;
  border-top:1px solid var(--line);}
.uat-footer__g{display:grid;gap:34px;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));
  padding-bottom:34px;border-bottom:1px solid var(--line);}
.uat-footer .uat-fh{margin:0 0 14px;font-family:var(--mono);font-size:9.5px;letter-spacing:.24em;
  text-transform:uppercase;color:var(--sky);}
.uat-footer ul{margin:0;padding:0;list-style:none;display:grid;gap:9px;}
.uat-footer a{color:rgba(234,243,250,.72);font-size:14px;}
.uat-footer a:hover{color:#fff;}
.uat-footer__b{display:flex;flex-wrap:wrap;gap:14px 28px;justify-content:space-between;
  padding-top:26px;font-size:12.5px;}

/* ============================================================
   7. Motion and responsive
   ============================================================ */
/* Only hide before revealing if JavaScript is actually running to reveal it again.
   Parked at opacity:0 unconditionally, a script that fails to load leaves ten of
   the fourteen sections as headings above blank space — the page looks broken
   rather than plain. The html.uat-js class is set by an inline script in the head. */
.uat-js [data-reveal]{opacity:0;transform:translateY(18px);}
.uat-js [data-reveal].is-in{opacity:1;transform:none;transition:opacity .7s ease,transform .7s cubic-bezier(.2,.8,.2,1);}

@media (max-width:900px){
  .uat-fleet{grid-template-columns:1fr;}
  .uat-fleet__view{min-height:260px;}
}
@media (max-width:820px){
  /* Anchored to the header rather than the viewport. The header carries a
     backdrop-filter, which creates a containing block for fixed children, so a
     position:fixed menu inside it lands in the wrong place and paints no
     background over the hero. Absolute inside the sticky header is correct. */
  .uat-nav{position:absolute;top:100%;left:0;right:0;display:none;flex-direction:column;
    align-items:stretch;gap:0;padding:12px 0 26px;background:#04121f;
    border-top:1px solid var(--line);max-height:calc(100vh - 108px);overflow-y:auto;
    box-shadow:0 30px 60px -30px rgba(0,0,0,.9);}
  .uat-nav.is-open{display:flex;}
  .uat-nav a{padding:15px var(--pad);border-bottom:1px solid var(--line);font-size:16px;}
  .uat-burger{display:block;}
  .uat-clocks{display:none;}
}
@media (max-width:560px){
  .uat-steps li{grid-template-columns:1fr;gap:12px;}
  .uat-submit .uat-btn{width:100%;justify-content:center;}
}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto;}
  .uat-ticker__track{animation:none;}
  .uat-js [data-reveal]{opacity:1;transform:none;}
  .uat-card:hover,.uat-btn:hover{transform:none;}
}

/* ============================================================
   8. Inner page prose
   ============================================================ */
.uat-prose{font-size:17px;line-height:1.85;color:var(--ink-60);}
.uat-prose > *:first-child{margin-top:0;}
.uat-prose p{margin:0 0 22px;}
.uat-prose h2{margin:46px 0 14px;font-family:var(--serif);font-weight:400;font-size:30px;line-height:1.2;
  color:var(--night);}
.uat-prose h3{margin:32px 0 10px;font-size:20px;font-weight:700;color:var(--night);}
.uat-prose ul,.uat-prose ol{margin:0 0 22px;padding-left:22px;}
.uat-prose li{margin:0 0 10px;}
.uat-prose li::marker{color:var(--blue);}
.uat-prose strong{color:var(--night);}
.uat-prose a{border-bottom:1px solid rgba(31,162,232,.45);}
.uat-prose blockquote{margin:26px 0;padding:4px 0 4px 20px;border-left:2px solid var(--blue);
  font-family:var(--serif);font-size:21px;font-style:italic;color:var(--night);}
.uat-prose table{border-collapse:collapse;width:100%;margin:24px 0;font-size:15px;}
.uat-prose th,.uat-prose td{border:1px solid var(--ink-08);padding:9px 12px;text-align:left;}
.uat-prose th{background:var(--paper-2);color:var(--night);}
@media (max-width:900px){
  .uat-prose{font-size:16px;}
  .uat-prose h2{font-size:26px;}
  .uat-prose table{display:block;overflow-x:auto;}
}

/* ---------------- registered company details ----------------
   Set quieter than the navigation above it. This block is read once, by the
   person who has decided to check whether we are real, and it should not
   compete with the links somebody uses on every visit. */
.uat-legal{display:grid;gap:26px 34px;grid-template-columns:repeat(auto-fit,minmax(14rem,1fr));
  padding:30px 0 26px;margin-top:34px;border-top:1px solid var(--line);}
.uat-legal .uat-fh{margin:0 0 10px;font-family:var(--mono);font-size:9px;letter-spacing:.22em;
  text-transform:uppercase;color:var(--sky);}
.uat-legal p{margin:0;font-size:13px;line-height:1.75;color:rgba(234,243,250,.62);}
.uat-legal a{color:rgba(234,243,250,.62);border-bottom:1px solid rgba(127,210,247,.35);}
.uat-legal a:hover{color:#fff;}

/* ---------------- the journey film ----------------
   A full-bleed band rather than a picture beside a paragraph. The film is the
   argument here — a quiet car on an empty road — so it gets the whole width and
   the words sit on top of it. Sized in viewport height but capped, so it stays a
   band the reader scrolls through rather than a second full-screen opener. */
.uat-film{position:relative;isolation:isolate;display:flex;align-items:flex-end;
  min-height:clamp(26rem,62vh,40rem);background:var(--night);overflow:hidden;}
.uat-film__media{position:absolute;inset:0;z-index:-1;}
.uat-film__media video,.uat-film__media img{width:100%;height:100%;object-fit:cover;}
/* Two stops rather than one: the lower half needs to carry body text, the upper
   half only has to stop the film looking washed out. */
.uat-film__media::after{content:"";position:absolute;inset:0;
  background:linear-gradient(180deg,rgba(4,18,31,.45) 0%,rgba(4,18,31,.2) 34%,rgba(4,18,31,.92) 100%);}
.uat-film__in{position:relative;width:100%;padding-top:clamp(3rem,10vh,7rem);
  padding-bottom:clamp(2.25rem,6vh,4rem);}
.uat-film__in .uat-h2{max-width:16ch;color:#fff;}
.uat-film__in .uat-lead{max-width:52ch;margin-bottom:0;color:rgba(234,243,250,.8);}
@media (max-width:700px){
  .uat-film{min-height:24rem;}
  .uat-film__in .uat-h2{max-width:none;}
}

/* ---------------- parent company byline ----------------
   Beside the logo on wide screens, under it where the header is narrow. */
.uat-brandwrap{display:flex;align-items:center;gap:16px;min-width:0;}
.uat-by{padding-left:16px;border-left:1px solid var(--line);font-size:11.5px;line-height:1.35;
  color:rgba(234,243,250,.6);white-space:nowrap;}
.uat-by span{display:block;font-weight:600;color:rgba(234,243,250,.85);}
.uat-by:hover,.uat-by:hover span{color:#fff;}
@media (max-width:1100px){
  .uat-brandwrap{flex-direction:column;align-items:flex-start;gap:3px;}
  .uat-by{padding-left:0;border-left:0;font-size:10.5px;}
  .uat-by span{display:inline;}
}
@media (max-width:1100px) and (min-width:561px){.uat-brand img{height:42px;}}

/* 1.10.5 — fixes from the 2026-09-19 browser audit.
   Space is reserved for the reviews widget and the About photo carries its real
   proportions, so neither grows after an anchor jump and pushes the target
   section below the fold. */
.uat-google .ti-widget{min-height:240px;}
@media (max-width:700px){.uat-google .ti-widget{min-height:480px;}}
/* The hero eyebrow sits on moving video; a soft shadow keeps it legible on the
   bright frames. */
.uat-hero .uat-eyebrow{text-shadow:0 1px 14px rgba(0,0,0,.85),0 0 2px rgba(0,0,0,.6);}
/* Four cards read as a row of four on desktop instead of three and an orphan. */
@media (min-width:1100px){
  #services .uat-cards,#how .uat-cards{grid-template-columns:repeat(4,minmax(0,1fr));}
}
/* The menu's call-to-action keeps the side gutter instead of touching the edges. */
@media (max-width:820px){
  .uat-nav .uat-btn{margin:16px var(--pad) 0;justify-content:center;}
}

/* ============================================================
   9. Airport pages (1.11.0)
   airport.php reuses the front page's sections; these are the
   few pieces it adds. The hero is shorter than the homepage's
   so the answer to "what do I get at this airport" is on the
   first screen of a phone, not under it.
   ============================================================ */
.uat-hero--page{min-height:clamp(460px,64vh,640px);}
.uat-hero--page h1{font-size:clamp(40px,6.4vw,84px);}
.uat-crumbs{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 18px;font-family:var(--mono);font-size:11px;
  letter-spacing:.16em;text-transform:uppercase;color:rgba(234,243,250,.6);}
.uat-crumbs a{color:rgba(234,243,250,.85);text-decoration:none;}
.uat-crumbs a:hover{color:#fff;text-decoration:underline;}
.uat-airport__terminals{display:flex;flex-wrap:wrap;gap:6px 14px;align-items:baseline;margin:0 0 28px;
  font-size:15px;color:var(--ink-60);}
.uat-airport__terminals span{font-family:var(--mono);font-size:11px;letter-spacing:.2em;text-transform:uppercase;
  color:var(--blue-deep);}
.uat-airport__terminals b{font-weight:600;color:var(--night);}
.uat-airport__more{margin:0 0 24px;font-size:15px;}
.uat-airport__more a{color:var(--blue-deep);}
.uat-airport__rating,.uat-airport__terms{margin:28px 0 0;max-width:70ch;font-size:14.5px;line-height:1.7;
  color:var(--ink-60);}
.uat-airport__rating a,.uat-airport__terms a{color:var(--blue-deep);}
/* Editors only: the list of what an unfinished airport page is waiting for. */
.uat-draftnote{background:#FFF4CC;color:#3D2E00;border-bottom:1px solid #E8C84A;padding:14px 0;font-size:14px;line-height:1.55;}
.uat-draftnote ul{margin:6px 0 0;padding-left:20px;}
/* Type-led hero: no photograph until the company's own are supplied (Erin, UAT-07a). */
.uat-hero--type{background:linear-gradient(180deg,var(--night) 0%,var(--night-2) 100%);}
.uat-hero--type .uat-eyebrow{font-family:var(--mono);color:var(--sky);}
.uat-jump{display:flex;flex-wrap:wrap;gap:10px 22px;margin:28px 0 0;font-size:14px;}
.uat-jump a{color:rgba(234,243,250,.85);text-decoration:underline;text-underline-offset:4px;}
.uat-jump a:hover{color:#fff;}
.uat-airport__sec .uat-lead{margin-bottom:28px;}
