/* Velora design system — Home Page 2.0.
   Single source of truth, enqueued site-wide. Pages supply only markup
   plus --hero-lg / --hero-md / --hero-sm for their own hero image.
   Generated 2026-08-30 19:18 — edit this file, not the pages. */

.vh2{--g:#caa078;--g2:#c49a6c;--glow:rgba(202,160,120,.55);
  --ink:#05060a;--body:#4d4e58;--soft:#83848f;--gray:#F3F4F6;--line:rgba(6,8,18,.08);
  --gl:rgba(255,255,255,.60);--gl-brd:rgba(255,255,255,.78);
  --gd:rgba(255,255,255,.055);--gd-brd:rgba(255,255,255,.13);
  --mono:ui-monospace,SFMono-Regular,Menlo,"Cascadia Mono",monospace;
  font-family:'Inter',system-ui,-apple-system,'Segoe UI',sans-serif;color:var(--body);
  font-size:16px;line-height:1.7;-webkit-font-smoothing:antialiased}
.vh2 *,.vh2 *::before,.vh2 *::after{box-sizing:border-box}
.vh2 > p,.vh2 .cards > p,.vh2 .fleet > p,.vh2 .cities > p,.vh2 .steps > p,.vh2 .split > p,.vh2 .band > p,.vh2 .statbar > p,.vh2 .areas > p,.vh2 p:empty{display:none!important;margin:0!important}
.vh2 > section{width:100vw;margin-left:calc(50% - 50vw);padding:clamp(52px,5.4vw,88px) 0;position:relative;overflow:hidden}
body.velora-v2{background:#05060a}
.vh2 .wrap{width:min(1180px,90vw);margin-inline:auto;position:relative;z-index:2}
/* sections sit on fractional pixel boundaries (clamp+vw), so the dark page
   background can show through as a 1px seam — overlap them by 1px. */
.vh2 > section + section{margin-top:-1px}
.vh2 h1,.vh2 h2,.vh2 h3,.vh2 h4{font-family:'Montserrat',system-ui,sans-serif;color:var(--ink);margin:0;line-height:1.12;letter-spacing:-.03em;font-weight:700}
.vh2 h2{font-size:clamp(29px,4vw,50px)}
.vh2 h3{font-size:clamp(17px,1.7vw,20px);letter-spacing:-.02em}
.vh2 p{margin:0 0 1em}
.vh2 p:last-child{margin-bottom:0}
.vh2 a{color:inherit;text-decoration:none}
.vh2 .eyebrow{font-family:var(--mono);font-size:11px;font-weight:500;letter-spacing:.26em;
  text-transform:uppercase;color:var(--g2);margin:0 0 18px;display:block}
.vh2 .lead{font-size:clamp(15.5px,1.4vw,17.5px);max-width:60ch;color:var(--body);font-weight:350}
.vh2 .sec-head{max-width:720px;margin:0 0 clamp(28px,3.2vw,44px)}
.vh2 .sec-head.mid{margin-inline:auto;text-align:center}
.vh2 .sec-head.mid .lead{margin-inline:auto}
.vh2 .sec-head h2+p{margin-top:20px}
.vh2 .bg-gray{background:var(--gray)}
.vh2 .bg-white{background:#fff}
.vh2 .bg-dark{background:#05060a;color:#a9abb8}
.vh2 .bg-dark h2,.vh2 .bg-dark h3,.vh2 .bg-dark h4{color:#fff}
.vh2 .bg-dark .eyebrow{color:var(--g)}
/* aurora field */
.vh2 .aura::before,.vh2 .aura::after{content:"";position:absolute;border-radius:50%;pointer-events:none;z-index:0}
.vh2 .aura::before{width:62vw;height:62vw;left:-18vw;top:-24vw;
  background:radial-gradient(circle closest-side,rgba(202,160,120,.26),rgba(202,160,120,.10) 46%,transparent 72%)}
.vh2 .aura::after{width:56vw;height:56vw;right:-16vw;bottom:-24vw;
  background:radial-gradient(circle closest-side,rgba(120,140,200,.18),rgba(120,140,200,.07) 46%,transparent 72%)}
.vh2 .grid-lines::before{content:"";position:absolute;inset:0;pointer-events:none;z-index:0;
  background-image:linear-gradient(rgba(255,255,255,.045) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.045) 1px,transparent 1px);
  background-size:72px 72px;
  -webkit-mask-image:radial-gradient(ellipse 78% 62% at 50% 42%,#000 25%,transparent 78%);
  mask-image:radial-gradient(ellipse 78% 62% at 50% 42%,#000 25%,transparent 78%)}
/* glass */
.vh2 .glass{background:var(--gl);backdrop-filter:blur(12px) saturate(1.35);-webkit-backdrop-filter:blur(12px) saturate(1.35);
  border:1px solid var(--gl-brd);box-shadow:inset 0 1px 0 rgba(255,255,255,.9),0 20px 44px -30px rgba(8,10,20,.5)}
.vh2 .glass-d{background:var(--gd);backdrop-filter:blur(12px) saturate(1.2);-webkit-backdrop-filter:blur(12px) saturate(1.2);
  border:1px solid var(--gd-brd);box-shadow:inset 0 1px 0 rgba(255,255,255,.10),0 26px 54px -34px rgba(0,0,0,.92)}
/* buttons */
.vh2 .btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;text-decoration:none;
  font-family:'Montserrat',sans-serif;font-size:13.5px;font-weight:600;letter-spacing:.02em;
  padding:16px 32px;border-radius:100px;border:1px solid transparent;cursor:pointer;position:relative;
  transition:transform .3s cubic-bezier(.22,.61,.36,1),box-shadow .3s ease,background .3s ease,border-color .3s ease,color .3s ease}
.vh2 .btn-gold{background:linear-gradient(135deg,#dcb894,var(--g) 45%,var(--g2));color:#120f0c;
  box-shadow:0 10px 30px -14px var(--glow),inset 0 1px 0 rgba(255,255,255,.5)}
.vh2 .btn-gold:hover{transform:translateY(-2px);box-shadow:0 18px 42px -14px var(--glow),inset 0 1px 0 rgba(255,255,255,.6)}
.vh2 .btn-glass{background:rgba(255,255,255,.07);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);
  border-color:rgba(255,255,255,.20);color:#fff}
.vh2 .btn-glass:hover{border-color:var(--g);color:var(--g);transform:translateY(-2px)}
.vh2 .btn-ink{background:var(--ink);color:#fff}
.vh2 .btn-ink:hover{transform:translateY(-2px);box-shadow:0 16px 34px -18px rgba(5,6,10,.8)}
.vh2 .btn-line{border-color:rgba(6,8,18,.16);color:var(--ink);background:rgba(255,255,255,.5);
  }
.vh2 .btn-line:hover{border-color:var(--ink);transform:translateY(-2px)}
.vh2 .btns{display:flex;flex-wrap:wrap;gap:14px;margin-top:26px}
.vh2 .sec-head.mid+.btns,.vh2 .btns.mid{justify-content:center}
/* ============ HERO ============ */
.vh2 .hero{padding:0;min-height:min(92vh,900px);display:flex;align-items:center;background:#05060a}
.vh2 .hero-bg{position:absolute;inset:0;z-index:0;background-position:var(--hero-pos,center 30%);background-size:cover;background-repeat:no-repeat;background-image:var(--hero-lg)}
@media(max-width:1100px){.vh2 .hero-bg{background-image:var(--hero-md,var(--hero-lg))}}
@media(max-width:800px){.vh2 .hero-bg{background-image:var(--hero-sm,var(--hero-md,var(--hero-lg)))}}
.vh2 .hero-bg::after{content:"";position:absolute;inset:0;
  background:linear-gradient(180deg,rgba(5,6,10,.80) 0%,rgba(5,6,10,.52) 34%,rgba(5,6,10,.88) 84%,#05060a 100%)}
.vh2 .hero-glow{position:absolute;left:50%;bottom:-30%;transform:translateX(-50%);width:120vw;height:70vh;z-index:1;
  background:radial-gradient(ellipse at center,rgba(202,160,120,.22),transparent 62%);pointer-events:none}
.vh2 .hero .wrap{text-align:center;padding:clamp(120px,15vw,180px) 0 clamp(72px,8vw,104px)}
.vh2 .hero h1{color:#fff;font-size:clamp(36px,5.6vw,70px);line-height:1.04;letter-spacing:-.04em;
  font-weight:700;margin:0 auto;max-width:15ch}
.vh2 .hero .sub{color:#c3c5d0;font-size:clamp(15.5px,1.6vw,19px);margin:26px auto 0;max-width:54ch;font-weight:350}
.vh2 .pill{display:inline-flex;align-items:center;gap:10px;border-radius:100px;padding:9px 20px;margin-bottom:30px;
  background:rgba(255,255,255,.06);;
  border:1px solid rgba(255,255,255,.14);color:#e6e2dc;
  font-family:var(--mono);font-size:10.5px;font-weight:500;letter-spacing:.24em;text-transform:uppercase}
.vh2 .pill i{width:6px;height:6px;border-radius:50%;background:var(--g);box-shadow:0 0 0 4px rgba(202,160,120,.18);
  animation:vpulse 2.6s ease-in-out infinite}
@keyframes vpulse{0%,100%{box-shadow:0 0 0 3px rgba(202,160,120,.16)}50%{box-shadow:0 0 0 7px rgba(202,160,120,.04)}}
.vh2 .hero .btns{justify-content:center;margin-top:40px}
/* glass stat bar */
.vh2 .statbar{margin:clamp(52px,6vw,76px) auto 0;border-radius:22px;padding:clamp(22px,2.6vw,34px) clamp(18px,2.4vw,34px);
  display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(14px,2vw,28px);max-width:960px}
.vh2 .statbar .s{text-align:center;position:relative}
.vh2 .statbar .s+.s::before{content:"";position:absolute;left:calc(-1 * clamp(7px,1vw,14px));top:12%;bottom:12%;
  width:1px;background:linear-gradient(180deg,transparent,rgba(255,255,255,.16),transparent)}
.vh2 .statbar .n{font-family:'Montserrat',sans-serif;font-size:clamp(23px,2.8vw,34px);font-weight:700;color:#fff;
  letter-spacing:-.035em;line-height:1;display:block}
.vh2 .statbar .l{font-family:var(--mono);font-size:10px;color:#9b9daa;margin-top:11px;display:block;
  letter-spacing:.16em;text-transform:uppercase;line-height:1.5}
@media(max-width:760px){.vh2 .statbar{grid-template-columns:repeat(2,1fr);gap:24px 14px}
  .vh2 .statbar .s:nth-child(odd)+.s::before{display:none}}
/* ============ GLASS CARDS ============ */
.vh2 .cards{display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(14px,1.5vw,20px)}
.vh2 .card{border-radius:20px;padding:clamp(24px,2.3vw,32px);display:flex;flex-direction:column;
  transition:transform .4s cubic-bezier(.22,.61,.36,1),box-shadow .4s ease,border-color .4s ease}
.vh2 .card:hover{transform:translateY(-6px);border-color:rgba(202,160,120,.5);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.9),0 30px 60px -34px rgba(8,10,20,.6)}
.vh2 .ico{width:48px;height:48px;border-radius:15px;display:grid;place-items:center;margin-bottom:22px;
  background:linear-gradient(150deg,rgba(255,255,255,.9),rgba(255,255,255,.35));
  border:1px solid rgba(255,255,255,.9);color:var(--g2);
  box-shadow:0 8px 20px -12px rgba(8,10,20,.35),inset 0 1px 0 #fff}
.vh2 .card:hover .ico{color:var(--ink)}
.vh2 .card p{font-size:14px;margin:12px 0 0;color:var(--soft);line-height:1.65}
.vh2 .card .more{margin-top:auto;padding-top:22px;font-family:var(--mono);font-size:10.5px;
  letter-spacing:.16em;text-transform:uppercase;color:var(--ink);display:inline-flex;align-items:center;gap:8px}
.vh2 .card:hover .more{color:var(--g2)}
.vh2 .card .more span{transition:transform .3s ease}
.vh2 .card:hover .more span{transform:translateX(5px)}
/* ============ SPLIT ============ */
.vh2 .split{display:grid;grid-template-columns:1fr 1fr;gap:clamp(34px,5vw,80px);align-items:center}
.vh2 .split.rev .media{order:2}
.vh2 .media{border-radius:24px;overflow:hidden;position:relative;
  box-shadow:0 40px 80px -46px rgba(8,10,20,.6);border:1px solid rgba(255,255,255,.6)}
.vh2 .media img{display:block;width:100%;height:100%;object-fit:cover;aspect-ratio:4/3}
.vh2 .media .tag{position:absolute;left:18px;bottom:18px;border-radius:100px;padding:9px 18px;
  background:rgba(255,255,255,.16);backdrop-filter:blur(10px) saturate(1.25);-webkit-backdrop-filter:blur(10px) saturate(1.25);
  border:1px solid rgba(255,255,255,.3);color:#fff;
  font-family:var(--mono);font-size:10px;letter-spacing:.2em;text-transform:uppercase}
.vh2 .areas{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;margin:32px 0 0;padding:0;list-style:none}
.vh2 .areas li{border-radius:14px;padding:16px 18px;display:flex;gap:12px;align-items:flex-start;
  transition:transform .3s ease,border-color .3s ease}
.vh2 .areas li:hover{transform:translateY(-3px);border-color:rgba(202,160,120,.45)}
.vh2 .areas b{display:block;font-family:'Montserrat',sans-serif;font-size:13.5px;color:var(--ink);font-weight:600;letter-spacing:-.01em}
.vh2 .areas small{display:block;font-size:11.5px;color:var(--soft);margin-top:3px;line-height:1.5}
.vh2 .areas .pin{flex:0 0 auto;color:var(--g2);margin-top:2px}
@media(max-width:560px){.vh2 .areas{grid-template-columns:1fr}}
/* ============ DARK BAND ============ */
.vh2 .band{display:grid;grid-template-columns:1.02fr .98fr;gap:clamp(34px,5vw,72px);align-items:center}
.vh2 .band .phone{display:flex;justify-content:center;position:relative}
.vh2 .band .phone::before{content:"";position:absolute;width:96%;height:84%;border-radius:50%;
  background:radial-gradient(circle closest-side,rgba(202,160,120,.26),rgba(202,160,120,.09) 44%,transparent 70%)}
.vh2 .band .phone img{width:min(420px,100%);height:auto;display:block;position:relative;
  filter:drop-shadow(0 40px 60px rgba(0,0,0,.7))}
.vh2 .band p{color:#a9abb8;max-width:50ch;font-weight:350}
.vh2 .flist{list-style:none;margin:32px 0 0;padding:0;display:grid;gap:11px}
.vh2 .flist li{border-radius:14px;padding:15px 18px;display:flex;gap:14px;align-items:center;
  color:#d5d6de;font-size:14.5px;transition:transform .3s ease,border-color .3s ease}
.vh2 .flist li:hover{transform:translateX(5px);border-color:rgba(202,160,120,.4)}
.vh2 .flist .tick{flex:0 0 auto;width:26px;height:26px;border-radius:9px;display:grid;place-items:center;
  background:rgba(202,160,120,.14);border:1px solid rgba(202,160,120,.34);color:var(--g)}
/* ============ STEPS ============ */
.vh2 .steps{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(20px,2.6vw,34px);position:relative}
.vh2 .step{border-radius:20px;padding:clamp(24px,2.4vw,32px);position:relative;
  transition:transform .4s cubic-bezier(.22,.61,.36,1),border-color .4s ease}
.vh2 .step:hover{transform:translateY(-6px);border-color:rgba(202,160,120,.45)}
.vh2 .step .num{width:44px;height:44px;border-radius:50%;display:grid;place-items:center;margin-bottom:22px;
  font-family:var(--mono);font-size:12px;letter-spacing:.06em;color:var(--ink);font-weight:600;
  background:linear-gradient(150deg,#fff,rgba(255,255,255,.4));border:1px solid rgba(255,255,255,.9);
  box-shadow:0 0 0 5px rgba(202,160,120,.10),0 8px 18px -10px rgba(8,10,20,.4)}
.vh2 .step:hover .num{box-shadow:0 0 0 7px rgba(202,160,120,.16),0 8px 18px -10px rgba(8,10,20,.4)}
.vh2 .step p{font-size:14px;color:var(--soft);margin-top:12px;line-height:1.65}
/* ============ FLEET ============ */
.vh2 .fleet{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(14px,1.5vw,20px)}
.vh2 .veh{border-radius:20px;padding:26px 26px 24px;display:block;
  transition:transform .4s cubic-bezier(.22,.61,.36,1),border-color .4s ease,box-shadow .4s ease}
.vh2 .veh:hover{transform:translateY(-6px);border-color:rgba(202,160,120,.5);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.9),0 30px 60px -34px rgba(8,10,20,.6)}
.vh2 .veh .top{display:flex;justify-content:space-between;align-items:flex-start;gap:14px}
.vh2 .veh .cap{flex:0 0 auto;color:var(--soft);font-family:var(--mono);font-size:9.5px;
  letter-spacing:.16em;text-transform:uppercase;border:1px solid var(--line);border-radius:100px;padding:5px 12px}
.vh2 .veh .mk{font-size:12px;color:var(--g2);font-family:var(--mono);letter-spacing:.1em;
  text-transform:uppercase;margin:10px 0 0}
.vh2 .veh p{font-size:13.5px;color:var(--soft);margin:12px 0 0;line-height:1.65}
/* ============ CITIES ============ */
.vh2 .cities{display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(12px,1.3vw,18px)}
.vh2 .city{position:relative;border-radius:18px;overflow:hidden;aspect-ratio:3/4;display:block;
  transition:transform .45s cubic-bezier(.22,.61,.36,1),box-shadow .45s ease}
.vh2 .city:hover{transform:translateY(-7px);box-shadow:0 34px 60px -32px rgba(8,10,20,.7)}
.vh2 .city img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .7s cubic-bezier(.22,.61,.36,1)}
.vh2 .city:hover img{transform:scale(1.08)}
.vh2 .city .ov{position:absolute;inset:0;background:linear-gradient(180deg,transparent 34%,rgba(5,6,10,.72) 100%)}
.vh2 .city .txt{position:absolute;left:12px;right:12px;bottom:12px;z-index:2;border-radius:13px;padding:13px 15px;
  background:rgba(255,255,255,.10);backdrop-filter:blur(10px) saturate(1.25);-webkit-backdrop-filter:blur(10px) saturate(1.25);
  border:1px solid rgba(255,255,255,.20)}
.vh2 .city .nm{font-family:'Montserrat',sans-serif;color:#fff;font-weight:600;font-size:15.5px;
  letter-spacing:-.02em;display:block}
.vh2 .city .ap{color:#c8cad4;font-family:var(--mono);font-size:9.5px;margin-top:5px;display:block;letter-spacing:.14em;text-transform:uppercase;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.vh2 .city .ap b{color:var(--g);font-weight:600}
/* ============ FINAL CTA ============ */
.vh2 .ctabox{position:relative;overflow:hidden;border-radius:28px;text-align:center;
  padding:clamp(38px,4.2vw,62px) clamp(24px,3.4vw,54px);
  background:linear-gradient(155deg,#0a0b10 0%,#15151d 46%,#08090e 100%);
  border:1px solid rgba(202,160,120,.30);
  box-shadow:0 44px 96px -52px rgba(8,10,20,.95),inset 0 1px 0 rgba(255,255,255,.07)}
.vh2 .ctabox::before{content:"";position:absolute;left:50%;top:-34%;width:86%;padding-bottom:64%;
  transform:translateX(-50%);pointer-events:none;
  background:radial-gradient(circle closest-side,rgba(202,160,120,.22),rgba(202,160,120,.06) 48%,transparent 72%)}
.vh2 .ctabox > *{position:relative;z-index:1}
.vh2 .ctabox .eyebrow{color:var(--g)}
.vh2 .ctabox h2{color:#fff}
.vh2 .ctabox h2{max-width:17ch;margin-inline:auto}
.vh2 .ctabox p{color:#a9abb8;margin:20px auto 0;max-width:52ch;font-weight:350}
.vh2 .ctabox .tel{display:inline-block;margin-top:26px;font-family:'Montserrat',sans-serif;color:var(--g);
  font-size:clamp(22px,2.8vw,34px);font-weight:700;letter-spacing:-.035em;transition:color .3s ease}
.vh2 .ctabox .tel:hover{color:var(--g)}
.vh2 .ctabox .btns{justify-content:center}
.vh2 .cta-info{list-style:none;text-align:left;
  margin:clamp(32px,3.6vw,44px) 0 0;padding:clamp(26px,2.8vw,34px) 0 0;
  border-top:1px solid rgba(255,255,255,.10);
  display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(18px,2.2vw,26px)}
.vh2 .cta-info li{display:grid;grid-template-columns:auto 1fr;gap:12px;align-items:start}
.vh2 .cta-info .i{width:32px;height:32px;border-radius:10px;display:grid;place-items:center;
  background:rgba(202,160,120,.12);border:1px solid rgba(202,160,120,.30);color:var(--g)}
.vh2 .cta-info b{display:block;font-family:'Montserrat',sans-serif;font-size:13px;font-weight:600;
  color:#fff;letter-spacing:-.01em;line-height:1.3}
.vh2 .cta-info span{display:block;font-size:11.5px;color:#83848f;margin-top:4px;line-height:1.5}
@media(max-width:900px){.vh2 .cta-info{grid-template-columns:repeat(2,1fr)}}
@media(max-width:460px){.vh2 .cta-info{grid-template-columns:1fr;gap:14px}}
/* ============ RESPONSIVE ============ */
@media(max-width:1024px){
  .vh2 .cards{grid-template-columns:repeat(2,1fr)}
  .vh2 .fleet{grid-template-columns:repeat(2,1fr)}
  .vh2 .cities{grid-template-columns:repeat(3,1fr)}
  .vh2 .split,.vh2 .band{grid-template-columns:1fr;gap:40px}
  .vh2 .split.rev .media{order:0}
  .vh2 .band .phone img{width:min(340px,78%)}
}
@media(max-width:760px){
  .vh2 .steps{grid-template-columns:1fr}
  .vh2 .cities{grid-template-columns:repeat(2,1fr)}
  .vh2 .btns .btn{flex:1 1 auto}
}
@media(max-width:520px){.vh2 .cards,.vh2 .fleet{grid-template-columns:1fr}}
/* --- perf --- */
.vh2 .card,.vh2 .veh,.vh2 .city,.vh2 .step,.vh2 .areas li,.vh2 .flist li{contain:layout paint}
.vh2 > section.defer{content-visibility:auto}
.vh2 > section.defer.s-tall{contain-intrinsic-size:auto 1200px}
.vh2 > section.defer.s-mid{contain-intrinsic-size:auto 900px}
.vh2 > section.defer.s-short{contain-intrinsic-size:auto 620px}
@media(max-width:1024px){
  .vh2 .glass{background:rgba(255,255,255,.86);backdrop-filter:none;-webkit-backdrop-filter:none}
  .vh2 .glass-d{background:rgba(255,255,255,.07);backdrop-filter:none;-webkit-backdrop-filter:none}
  .vh2 .city .txt,.vh2 .media .tag,.vh2 .pill,.vh2 .btn-glass{backdrop-filter:none;-webkit-backdrop-filter:none}
  .vh2 .city .txt{background:rgba(10,11,16,.62)}
  .vh2 .media .tag{background:rgba(10,11,16,.5)}
  .vh2 .pill{background:rgba(255,255,255,.12)}
  .vh2 .aura::before,.vh2 .aura::after{display:none}
}
.vh2 .hero-book{margin:38px auto 0;max-width:1060px;text-align:left}
.vh2 .hero-book .vqw-bar{box-shadow:0 26px 60px -28px rgba(0,0,0,.75)}
@media(max-width:760px){.vh2 .hero-book{margin-top:26px}}
/* ============ MOBILE TUNING (<=760px) ============ */
@media(max-width:760px){
  /* vertical rhythm: 72px -> 48px per section */
  .vh2 > section{padding:48px 0}
  .vh2 .sec-head{margin-bottom:30px}
  .vh2 .sec-head h2+p{margin-top:14px}
  .vh2 .btns{margin-top:26px;gap:10px}

  /* hero: header is fixed ~64px, so trim the generous top pad */
  .vh2 .hero{min-height:auto}
  .vh2 .hero .wrap{padding:96px 0 52px}
  .vh2 .hero h1{font-size:33px;max-width:18ch}
  .vh2 .hero .sub{margin-top:18px;font-size:15px}
  .vh2 .pill{margin-bottom:22px}
  .vh2 .statbar{margin-top:34px;padding:20px 14px;gap:20px 10px;border-radius:18px}
  .vh2 .statbar .l{font-size:9px;letter-spacing:.12em;margin-top:8px}

  /* service cards: icon beside the title instead of above it */
  .vh2 .cards{gap:12px}
  .vh2 .card{display:grid;grid-template-columns:auto 1fr;column-gap:14px;align-items:center;padding:20px}
  .vh2 .card .ico{margin:0;width:40px;height:40px;border-radius:12px;grid-row:1;grid-column:1}
  .vh2 .card h3{grid-row:1;grid-column:2}
  .vh2 .card p{grid-column:1/-1;margin-top:12px}
  .vh2 .card .more{grid-column:1/-1;padding-top:16px}

  /* steps: same treatment */
  .vh2 .steps{gap:12px}
  .vh2 .step{display:grid;grid-template-columns:auto 1fr;column-gap:14px;align-items:center;padding:20px}
  .vh2 .step .num{margin:0;width:38px;height:38px;grid-row:1;grid-column:1}
  .vh2 .step h3{grid-row:1;grid-column:2}
  .vh2 .step p{grid-column:1/-1;margin-top:10px}

  /* fleet + lists: tighter boxes */
  .vh2 .fleet{gap:12px}
  .vh2 .veh{padding:20px}
  .vh2 .veh p{margin-top:9px}
  .vh2 .areas{gap:10px;margin-top:24px}
  .vh2 .areas li{padding:13px 15px}
  .vh2 .flist{gap:9px;margin-top:24px}
  .vh2 .flist li{padding:13px 15px;font-size:14px}
  .vh2 .split,.vh2 .band{gap:30px}
  .vh2 .cities{gap:10px}
  .vh2 .city .ap{font-size:8.5px;letter-spacing:.10em}
  .vh2 .city{aspect-ratio:4/5}
  .vh2 .ctabox{padding:38px 22px;border-radius:22px}
  .vh2 .ctabox .tel{margin-top:22px}

  /* intrinsic sizes retuned for the stacked layout (desktop hints caused scroll jump) */
  .vh2 > section.defer.s-tall{contain-intrinsic-size:auto 1500px}
  .vh2 > section.defer.s-mid{contain-intrinsic-size:auto 1150px}
  .vh2 > section.defer.s-short{contain-intrinsic-size:auto 780px}

  /* theme has a fixed 65px call/quote bar pinned to the bottom on mobile */
}
@media(max-width:420px){
  .vh2 .hero h1{font-size:30px}
  .vh2 .statbar .n{font-size:21px}
  .vh2 .btns .btn{width:100%;flex:1 1 100%}
}

.vh2.v-anim .v-fx{opacity:0;transform:translateY(22px);
  transition:opacity .75s cubic-bezier(.22,.61,.36,1),transform .75s cubic-bezier(.22,.61,.36,1)}
.vh2.v-anim .v-fx.v-in{opacity:1;transform:none}
@media(prefers-reduced-motion:reduce){.vh2 *{transition:none!important;animation:none!important}
  .vh2.v-anim .v-fx{opacity:1!important;transform:none!important}}

/* ============ CONTACT PAGE ============ */
.vh2 .planning{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(14px,1.6vw,20px)}
.vh2 .plan{border-radius:20px;overflow:hidden;display:block;background:#fff;border:1px solid var(--line);
  transition:transform .4s cubic-bezier(.22,.61,.36,1),border-color .4s ease,box-shadow .4s ease}
.vh2 .plan:hover{transform:translateY(-6px);border-color:rgba(202,160,120,.5);box-shadow:0 30px 60px -34px rgba(8,10,20,.55)}
.vh2 .plan .shot{display:block;aspect-ratio:16/10;overflow:hidden}
.vh2 .plan .shot img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .6s cubic-bezier(.22,.61,.36,1)}
.vh2 .plan:hover .shot img{transform:scale(1.06)}
.vh2 .plan .body{display:block;padding:20px 22px 22px}
.vh2 .plan .kicker{display:block;font-family:var(--mono);font-size:9.5px;letter-spacing:.18em;text-transform:uppercase;color:var(--g2);display:block}
.vh2 .plan h3{margin-top:8px}
.vh2 .plan p{font-size:13.5px;color:var(--soft);margin-top:9px;line-height:1.6}
.vh2 .plan .go{display:inline-flex;align-items:center;gap:7px;margin-top:14px;font-family:var(--mono);
  font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink)}
.vh2 .plan:hover .go{color:var(--g2)}
/* reassurance band */
.vh2 .assure{display:grid;grid-template-columns:1.05fr .95fr;gap:clamp(30px,4vw,60px);align-items:center}
.vh2 .assure p{color:#a9abb8;max-width:48ch;font-weight:350}
.vh2 .assure .shot{border-radius:22px;overflow:hidden;border:1px solid rgba(255,255,255,.10);
  box-shadow:0 40px 80px -46px rgba(0,0,0,.95)}
.vh2 .assure .shot img{width:100%;height:100%;object-fit:cover;display:block;aspect-ratio:16/10}
.vh2 .facts{list-style:none;margin:28px 0 0;padding:0;display:grid;gap:10px}
.vh2 .facts li{display:grid;grid-template-columns:auto 1fr;gap:13px;align-items:start;
  border-radius:14px;padding:14px 16px;background:rgba(255,255,255,.045);border:1px solid rgba(255,255,255,.12)}
.vh2 .facts .n{font-family:var(--mono);font-size:10px;letter-spacing:.08em;color:var(--g);
  border:1px solid rgba(202,160,120,.35);background:rgba(202,160,120,.10);
  border-radius:8px;width:26px;height:26px;display:grid;place-items:center}
.vh2 .facts b{display:block;font-family:'Montserrat',sans-serif;font-size:13.5px;color:#fff;font-weight:600}
.vh2 .facts span{display:block;font-size:12.5px;color:#83848f;margin-top:3px;line-height:1.55}
@media(max-width:900px){.vh2 .planning{grid-template-columns:1fr}.vh2 .assure{grid-template-columns:1fr;gap:30px}}

.vh2 .hero.compact{min-height:auto}
.vh2 .hero.compact .wrap{padding:clamp(108px,12vw,150px) 0 clamp(56px,6vw,84px)}
.vh2 .hero.compact h1{max-width:16ch}
.vh2 .ways{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(14px,1.6vw,20px)}
.vh2 .way{border-radius:20px;padding:clamp(24px,2.4vw,32px);display:block;
  transition:transform .4s cubic-bezier(.22,.61,.36,1),border-color .4s ease,box-shadow .4s ease}
.vh2 .way:hover{transform:translateY(-6px);border-color:rgba(202,160,120,.5);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.9),0 30px 60px -34px rgba(8,10,20,.6)}
.vh2 .way .ico{margin-bottom:20px}
.vh2 .way .big{display:block;font-family:'Montserrat',sans-serif;font-size:clamp(17px,1.7vw,20px);
  font-weight:700;color:var(--ink);letter-spacing:-.02em;margin-top:4px;word-break:break-word}
.vh2 .way .sm{display:block;font-size:13px;color:var(--soft);margin-top:8px;line-height:1.6}
.vh2 .contact-split{display:grid;grid-template-columns:1.15fr .85fr;gap:clamp(24px,3vw,40px);align-items:start}
.vh2 .panel{border-radius:20px;padding:clamp(26px,2.6vw,36px)}
.vh2 .panel h3{margin-bottom:6px}
.vh2 .panel .hint{font-size:13.5px;color:var(--soft);margin-bottom:22px}
/* form */
.vh2 .cf-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.vh2 .cf-full{grid-column:1/-1}
.vh2 .cf-label{font-family:var(--mono);font-size:9.5px;letter-spacing:.18em;text-transform:uppercase;
  color:var(--soft);display:block;margin-bottom:7px}
.vh2 .cf-field{width:100%;border-radius:12px;padding:14px 15px;font:inherit;font-size:14.5px;appearance:none;
  background:rgba(255,255,255,.8);border:1px solid var(--line);color:var(--ink);
  transition:border-color .22s,box-shadow .22s}
.vh2 .cf-field::placeholder{color:#a2a3ad}
.vh2 .cf-field:hover{border-color:rgba(202,160,120,.45)}
.vh2 .cf-field:focus{outline:none;border-color:var(--g);box-shadow:0 0 0 3px rgba(202,160,120,.22)}
.vh2 textarea.cf-field{min-height:132px;resize:vertical}
.vh2 .cf-hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.vh2 .cf-btn{margin-top:18px;width:100%}
.vh2 .cf-msg{margin-top:14px;border-radius:12px;padding:13px 16px;font-size:13.5px;display:none}
.vh2 .cf-msg.ok{display:block;background:rgba(92,154,114,.12);border:1px solid rgba(92,154,114,.4);color:#2f6b45}
.vh2 .cf-msg.err{display:block;background:rgba(217,99,79,.10);border:1px solid rgba(217,99,79,.4);color:#a33422}
@media(max-width:640px){.vh2 .cf-grid{grid-template-columns:1fr}}
/* side panels */
.vh2 .rows{list-style:none;margin:0;padding:0;display:grid;gap:12px}
.vh2 .rows li{display:flex;justify-content:space-between;gap:14px;align-items:baseline;
  padding-bottom:12px;border-bottom:1px solid var(--line);font-size:14px}
.vh2 .rows li:last-child{border-bottom:0;padding-bottom:0}
.vh2 .rows b{font-family:'Montserrat',sans-serif;font-size:13.5px;color:var(--ink);font-weight:600}
.vh2 .rows span{color:var(--soft);font-size:13px;text-align:right}
.vh2 .chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}
.vh2 .chip{font-family:var(--mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;
  border:1px solid var(--line);border-radius:99px;padding:6px 12px;color:var(--body)}
.vh2 .chip.on{border-color:rgba(202,160,120,.5);color:var(--g2)}
/* faq */
.vh2 .faq{display:grid;gap:12px;max-width:860px;margin-inline:auto}
.vh2 .faq details{border-radius:16px;padding:0;overflow:hidden;transition:border-color .3s ease}
.vh2 .faq details[open]{border-color:rgba(202,160,120,.45)}
.vh2 .faq summary{list-style:none;cursor:pointer;padding:20px 24px;display:flex;align-items:center;
  justify-content:space-between;gap:16px;font-family:'Montserrat',sans-serif;font-size:15.5px;
  font-weight:600;color:var(--ink);letter-spacing:-.01em}
.vh2 .faq summary::-webkit-details-marker{display:none}
.vh2 .faq summary:focus-visible{outline:2px solid var(--g);outline-offset:-2px}
.vh2 .faq summary .pm{flex:0 0 auto;width:26px;height:26px;border-radius:50%;display:grid;place-items:center;
  border:1px solid var(--line);color:var(--g2);font-size:16px;line-height:1;transition:transform .3s ease}
.vh2 .faq details[open] summary .pm{transform:rotate(45deg)}
.vh2 .faq .ans{padding:0 24px 22px;font-size:14px;color:var(--soft);line-height:1.7}
.vh2 .faq .ans a{color:var(--g2);font-weight:500}
@media(max-width:900px){.vh2 .contact-split{grid-template-columns:1fr}}
@media(max-width:760px){
  .vh2 .ways{grid-template-columns:1fr}
  .vh2 .way{padding:20px}
  .vh2 .panel{padding:22px}
  .vh2 .faq summary{padding:17px 18px;font-size:14.5px}
  .vh2 .faq .ans{padding:0 18px 18px}
}


/* ==== EDITORIAL / LANDING ==== */
.vh2 .prose{max-width:780px;margin-inline:auto;display:grid;gap:24px}
.vh2 .prose h3{font-size:clamp(16px,1.6vw,18px)}
.vh2 .prose p{font-size:15.5px;color:var(--body);line-height:1.78;margin:8px 0 0}
.vh2 .prose a{color:var(--g2);font-weight:500;text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px}
.vh2 .prose a:hover{color:var(--ink)}
.vh2 .planning.two{grid-template-columns:repeat(2,1fr)}
.vh2 .plan .code{display:inline-block;font-family:var(--mono);font-size:10px;letter-spacing:.16em;border:1px solid rgba(202,160,120,.45);color:var(--g2);border-radius:99px;padding:5px 11px;margin-bottom:10px}
.vh2 .plan .times{display:block;font-family:var(--mono);font-size:10px;letter-spacing:.08em;color:var(--soft);margin-top:12px;text-transform:uppercase;line-height:1.6}
.vh2 .routes{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;max-width:1000px;margin-inline:auto}
.vh2 .route{border:1px solid var(--line);border-radius:12px;padding:14px 16px;font-size:13px;color:var(--body);background:rgba(255,255,255,.6);transition:border-color .25s ease,transform .25s ease}
.vh2 .route:hover{border-color:rgba(202,160,120,.5);color:var(--ink);transform:translateY(-3px)}
.vh2 .trust{display:flex;flex-wrap:wrap;justify-content:center;gap:9px;margin-top:24px}
.vh2 .trust span{font-family:var(--mono);font-size:9.5px;letter-spacing:.16em;text-transform:uppercase;color:#c3c5d0;border:1px solid rgba(255,255,255,.16);background:rgba(255,255,255,.05);border-radius:99px;padding:7px 14px}
@media(max-width:900px){.vh2 .routes{grid-template-columns:repeat(2,1fr)}}
@media(max-width:760px){.vh2 .planning.two{grid-template-columns:1fr}}
@media(max-width:520px){.vh2 .routes{grid-template-columns:1fr}}

.vh2 .fleet.four{grid-template-columns:repeat(4,1fr)}
@media(max-width:1024px){.vh2 .fleet.four{grid-template-columns:repeat(2,1fr)}}
@media(max-width:520px){.vh2 .fleet.four{grid-template-columns:1fr}}

/* card meta line — lets a .card carry the feature tags a .veh gets via .mk */
.vh2 .card .mk{margin:0 0 10px;font-size:12.5px;line-height:1.5;letter-spacing:.04em;text-transform:uppercase;color:#6b7280;font-weight:600}
.vh2 .card .cap{display:inline-block;margin:0 0 10px;padding:4px 10px;border:1px solid rgba(17,17,17,.14);border-radius:999px;font-size:11.5px;letter-spacing:.06em;text-transform:uppercase;color:#374151;background:rgba(255,255,255,.55)}
.vh2 .bg-dark .card .mk{color:#9ca3af}
.vh2 .bg-dark .card .cap{color:#d1d5db;border-color:rgba(255,255,255,.18);background:rgba(255,255,255,.06)}

/* booking slot — placement only; the wide layout ships with the plugin */
.vh2 .book-slot{max-width:1180px;margin:0 auto}
.vh2 .book-slot > *{max-width:100%}
.vh2 .book-slot p:empty{display:none}

/* ============ LEGAL ============ */
.vh2 .legal{max-width:920px;margin:0 auto;display:grid;gap:18px}
.vh2 .legal .doc{border-radius:20px;padding:clamp(22px,3vw,34px)}
.vh2 .legal h2{font-size:clamp(18px,2vw,22px);line-height:1.3;color:var(--ink);font-weight:600;margin:0 0 12px;letter-spacing:-.01em}
.vh2 .legal h3{font-size:clamp(15.5px,1.6vw,17px);color:var(--ink);font-weight:600;margin:20px 0 6px}
.vh2 .legal p{font-size:15.5px;line-height:1.78;color:var(--body);margin:0 0 12px}
.vh2 .legal p:last-child{margin-bottom:0}
.vh2 .legal strong{color:var(--ink);font-weight:600}
.vh2 .legal a{color:var(--ink);text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--g)}
.vh2 .legal a:hover{color:var(--g2)}
.vh2 .legal ul,.vh2 .legal ol{margin:0 0 12px;padding-left:0;list-style:none;display:grid;gap:8px}
.vh2 .legal li{position:relative;padding-left:22px;font-size:15.5px;line-height:1.7;color:var(--body)}
.vh2 .legal ul li::before{content:'';position:absolute;left:4px;top:11px;width:6px;height:6px;border-radius:50%;background:var(--g)}
.vh2 .legal ol{counter-reset:lg}
.vh2 .legal ol li{counter-increment:lg}
.vh2 .legal ol li::before{content:counter(lg)'.';position:absolute;left:0;top:0;color:var(--g);font-weight:600;font-size:13.5px;line-height:1.95}
.vh2 .legal .tw{overflow-x:auto;-webkit-overflow-scrolling:touch;margin:0 0 12px;border:1px solid var(--line);border-radius:14px}
.vh2 .legal table{width:100%;border-collapse:collapse;font-size:14.5px;min-width:420px}
.vh2 .legal th{text-align:left;padding:12px 16px;background:rgba(6,8,18,.035);color:var(--ink);font-weight:600;font-size:12.5px;letter-spacing:.05em;text-transform:uppercase;white-space:nowrap}
.vh2 .legal td{padding:12px 16px;border-top:1px solid var(--line);color:var(--body);line-height:1.6;vertical-align:top}
.vh2 .legal .win{display:inline-block;padding:3px 11px;border-radius:999px;border:1px solid rgba(202,160,120,.4);background:rgba(202,160,120,.10);color:var(--ink);font-weight:600;font-size:13px;white-space:nowrap}
.vh2 .stamp{display:inline-block;margin-top:16px;padding:6px 16px;border-radius:999px;border:1px solid rgba(255,255,255,.22);background:rgba(255,255,255,.07);color:#e7e3dd;font-size:11.5px;letter-spacing:.09em;text-transform:uppercase}
@media(max-width:760px){.vh2 .legal .doc{padding:20px 18px;border-radius:16px}}

/* generic bullet list — for landing-page copy outside .legal */
.vh2 .blist{list-style:none;margin:0;padding:0;display:grid;gap:10px;max-width:70ch}
.vh2 .blist.two{grid-template-columns:repeat(2,minmax(0,1fr));max-width:none}
.vh2 .blist li{position:relative;padding-left:24px;font-size:15.5px;line-height:1.7;color:var(--body)}
.vh2 .blist li::before{content:'';position:absolute;left:5px;top:11px;width:6px;height:6px;border-radius:50%;background:var(--g)}
.vh2 .blist a{color:var(--ink);text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--g)}
.vh2 .blist strong{color:var(--ink);font-weight:600}
@media(max-width:760px){.vh2 .blist.two{grid-template-columns:1fr}}

/* definition list — fact sheets (event dates, venues, specifications) */
.vh2 .deflist{display:grid;grid-template-columns:minmax(140px,auto) 1fr;gap:0;max-width:860px;border:1px solid var(--line);border-radius:16px;overflow:hidden;background:rgba(255,255,255,.5)}
.vh2 .deflist dt{padding:13px 18px;font-size:12.5px;letter-spacing:.05em;text-transform:uppercase;font-weight:600;color:var(--ink);background:rgba(6,8,18,.035);border-top:1px solid var(--line)}
.vh2 .deflist dd{margin:0;padding:13px 18px;font-size:15px;line-height:1.65;color:var(--body);border-top:1px solid var(--line)}
.vh2 .deflist dt:first-of-type,.vh2 .deflist dt:first-of-type + dd{border-top:0}
.vh2 .deflist a{color:var(--ink);text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--g)}
@media(max-width:640px){.vh2 .deflist{grid-template-columns:1fr}.vh2 .deflist dd{border-top:0;padding-top:0}.vh2 .deflist dt{border-top:1px solid var(--line)}}

/* ============ TESTIMONIALS ============ */
.vh2 .quotes{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:16px}
.vh2 .quote{border-radius:20px;padding:26px 24px 22px;display:flex;flex-direction:column;gap:14px;position:relative}
.vh2 .quote .stars{display:flex;gap:3px;color:var(--g)}
.vh2 .quote .stars svg{width:15px;height:15px;fill:currentColor;stroke:none}
.vh2 .quote blockquote{margin:0;font-size:15.5px;line-height:1.72;color:var(--body);flex:1}
.vh2 .quote figcaption{display:flex;flex-direction:column;gap:2px;padding-top:14px;border-top:1px solid var(--line)}
.vh2 .quote .who{font-size:14.5px;font-weight:600;color:var(--ink);letter-spacing:-.01em}
.vh2 .quote .role{font-size:12.5px;letter-spacing:.04em;text-transform:uppercase;color:var(--soft);font-weight:500}
@media(max-width:760px){.vh2 .quotes{grid-template-columns:1fr}.vh2 .quote{padding:22px 20px 18px;border-radius:16px}}

/* ============ MEDIA CARDS ============ */
/* image-led card grid: services, fleet summaries, any hub-to-detail list */
.vh2 .svcs{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(18px,2.2vw,28px)}
.vh2 .svcs.two{grid-template-columns:repeat(2,1fr)}
.vh2 .svc{display:flex;flex-direction:column;background:#fff;border:1px solid rgba(6,8,18,.07);border-radius:18px;overflow:hidden;text-decoration:none;color:inherit;transition:transform .45s cubic-bezier(.22,.61,.36,1),box-shadow .45s,border-color .45s}
.vh2 .svc:hover{transform:translateY(-4px);border-color:rgba(202,160,120,.4);box-shadow:0 30px 60px -40px rgba(8,10,20,.45)}
.vh2 .svc-img{display:block;position:relative;overflow:hidden;aspect-ratio:16/10;background:#ece9e6}
.vh2 .svc-img picture{display:block;height:100%}
.vh2 .svc-img img{display:block;width:100%;height:100%;object-fit:cover;transition:transform .7s cubic-bezier(.22,.61,.36,1)}
.vh2 .svc:hover .svc-img img{transform:scale(1.05)}
.vh2 .svc-img.fit{background:linear-gradient(180deg,#fff,#F3F4F6)}
.vh2 .svc-img.fit img{object-fit:contain;padding:7% 6%}
.vh2 .svc:hover .svc-img.fit img{transform:scale(1.04)}
.vh2 .svc-body{display:flex;flex-direction:column;flex:1;padding:22px 22px 20px}
.vh2 .svc-tags{display:block;font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--g2);font-weight:600;line-height:1.6;margin-bottom:9px}
.vh2 .svc h3{font-size:19px;line-height:1.2;letter-spacing:-.02em;color:var(--ink);margin:0}
.vh2 .svc-desc{display:block;flex:1;font-size:14.5px;line-height:1.7;color:var(--body);margin:10px 0 0}
.vh2 .svc-go{display:inline-flex;align-items:center;gap:9px;margin-top:18px;font-size:12.5px;letter-spacing:.09em;text-transform:uppercase;font-weight:600;color:var(--ink);transition:gap .25s,color .25s}
.vh2 .svc-go i{width:15px;height:1px;background:currentColor;position:relative;display:inline-block}
.vh2 .svc-go i::after{content:"";position:absolute;right:0;top:-3px;width:5px;height:5px;border-top:1px solid currentColor;border-right:1px solid currentColor;transform:rotate(45deg)}
.vh2 .svc:hover .svc-go{gap:14px;color:var(--g2)}
@media(max-width:1100px){.vh2 .svcs,.vh2 .svcs.two{grid-template-columns:repeat(2,1fr)}}
@media(max-width:700px){.vh2 .svcs,.vh2 .svcs.two{grid-template-columns:1fr}}

/* footer seam and link underlines — previously injected per page */
.elementor-element-d0ff173{padding-top:0 !important}
.velora-footer{border-top:0 !important}
.vh2 .prose a,.vh2 .legal a,.vh2 .blist a,.vh2 .deflist a,.vh2 .fv-desc a,.vh2 .ans a,.vh2 p a,.vh2 li a{text-decoration:none}
.vh2 .legal a,.vh2 .blist a,.vh2 .deflist a,.vh2 .fv-desc a{color:var(--g2);font-weight:500}

/* ============ TESTIMONIAL SLIDER ============ */
/* one white panel; the quote is the focal point and sits optically centred,
   so a short review does not leave the box looking half empty */
.vh2 .tslide{max-width:840px;margin:0 auto;position:relative}
.vh2 .tstage{position:relative;display:grid;place-items:center;text-align:center;
  background:#fff;border:1px solid rgba(6,8,18,.07);border-radius:26px;
  box-shadow:0 44px 90px -64px rgba(8,10,20,.55);
  padding:clamp(36px,5vw,62px) clamp(24px,5vw,68px)}
.vh2 .tslide figure{grid-area:1/1;margin:0;display:flex;flex-direction:column;
  align-items:center;justify-content:center;gap:18px;width:100%;
  opacity:0;transform:translateY(12px);pointer-events:none;
  transition:opacity .7s ease,transform .7s cubic-bezier(.22,.61,.36,1)}
.vh2 .tslide figure.on{opacity:1;transform:none;pointer-events:auto}
.vh2 .tslide .stars{display:flex;gap:5px;color:var(--g)}
.vh2 .tslide .stars svg{width:15px;height:15px;fill:currentColor;stroke:none}
.vh2 .tslide blockquote{margin:0;max-width:34ch;font-size:clamp(18px,2.1vw,25px);
  line-height:1.5;letter-spacing:-.02em;color:var(--ink);font-weight:400}
.vh2 .tslide figcaption{display:flex;flex-direction:column;align-items:center;gap:4px;margin-top:4px}
.vh2 .tslide figcaption::before{content:'';width:30px;height:1px;background:rgba(202,160,120,.55);margin-bottom:14px}
.vh2 .tslide .who{font-size:14.5px;font-weight:600;color:var(--ink);letter-spacing:-.01em;font-style:normal}
.vh2 .tslide .role{font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--soft);font-weight:500;font-style:normal}
.vh2 .tnav{display:flex;align-items:center;justify-content:center;gap:8px;margin-top:24px}
.vh2 .tdot{width:7px;height:7px;padding:0;border:0;border-radius:50%;background:rgba(6,8,18,.16);
  cursor:pointer;transition:background .3s,width .3s;-webkit-appearance:none;appearance:none}
.vh2 .tdot[aria-selected="true"]{background:var(--g);width:24px;border-radius:4px}
.vh2 .tdot:focus-visible{outline:2px solid var(--g);outline-offset:3px}
@media(max-width:760px){
  .vh2 .tstage{border-radius:20px;padding:32px 22px}
  .vh2 .tslide blockquote{font-size:17px;line-height:1.55;max-width:30ch}
  .vh2 .tslide figure{gap:15px}
  .vh2 .tnav{margin-top:20px}
}
@media(prefers-reduced-motion:reduce){.vh2 .tslide figure{transition:none}}

/* ============ STATEMENT + CAPABILITY STRIP ============ */
/* editorial split, deliberately not another card grid */
.vh2 .stmt{display:grid;grid-template-columns:1.05fr 1fr;gap:clamp(28px,5vw,80px);align-items:start}
.vh2 .stmt h2{font-size:clamp(30px,4.4vw,52px);line-height:1.06;letter-spacing:-.035em;color:var(--ink);margin:12px 0 0;max-width:14ch}
.vh2 .stmt .rule{width:54px;height:2px;background:var(--g);margin:22px 0 0}
.vh2 .stmt p{font-size:16px;line-height:1.8;color:var(--body);margin:0 0 16px;max-width:56ch}
.vh2 .stmt p:last-child{margin-bottom:0}
.vh2 .stmt p strong,.vh2 .stmt p b{color:var(--ink);font-weight:600}
.vh2 .capstrip{list-style:none;margin:clamp(38px,5vw,64px) 0 0;padding:0;display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--line)}
.vh2 .capstrip li{padding:26px 30px 0 0;border-right:1px solid var(--line);margin-right:30px}
.vh2 .capstrip li:last-child{border-right:0;margin-right:0;padding-right:0}
.vh2 .capstrip .n{display:block;font-family:var(--mono);font-size:11px;letter-spacing:.18em;color:var(--g);margin-bottom:12px}
.vh2 .capstrip b{display:block;font-size:17px;line-height:1.25;letter-spacing:-.02em;color:var(--ink);font-weight:600;margin-bottom:8px}
.vh2 .capstrip span.t{display:block;font-size:14.5px;line-height:1.7;color:var(--body)}
@media(max-width:900px){.vh2 .stmt{grid-template-columns:1fr;gap:20px}.vh2 .stmt h2{max-width:none}.vh2 .capstrip{grid-template-columns:1fr;gap:0}.vh2 .capstrip li{border-right:0;margin-right:0;padding:22px 0;border-bottom:1px solid var(--line)}.vh2 .capstrip li:last-child{border-bottom:0}}


/* ---- responsive repairs ---- */
/* several pages set grid-template-columns inline on .steps, which beats a
   plain media query and pushed 4 columns onto a 375px screen — these have to
   be !important to win against the inline declaration */
@media(max-width:900px){.vh2 .steps{grid-template-columns:repeat(2,1fr) !important}}
@media(max-width:600px){.vh2 .steps{grid-template-columns:1fr !important}}
/* same inline-style problem on any other grid we set per page */
@media(max-width:900px){.vh2 .vehs,.vh2 .cards{grid-template-columns:repeat(2,1fr) !important}}
@media(max-width:600px){.vh2 .vehs,.vh2 .cards{grid-template-columns:1fr !important}}

/* the quotes are stacked in one grid cell, so a symmetric crossfade shows
   both texts at once — clear the outgoing one before the next arrives */
.vh2 .tslide figure{transition:opacity .26s ease,transform .26s ease}
.vh2 .tslide figure.on{transition:opacity .5s ease .26s,transform .5s cubic-bezier(.22,.61,.36,1) .26s}
@media(prefers-reduced-motion:reduce){.vh2 .tslide figure,.vh2 .tslide figure.on{transition:none}}

/* ---- booking picker must escape the section ---- */
/* .vh2 > section clips its contents so full-bleed decorations cannot spill.
   The booking widget's date and time popups were being cut off at that edge.
   Both popups sit in the DOM permanently and are toggled with a .hidden
   class, so the clip is lifted ONLY while one is actually open - matching on
   the element alone kept the hero unclipped and let its gold glow bleed 508px
   into the next section. */
.vh2 > section:has(.vqw-picker-popup:not(.hidden)),
.vh2 > section:has([class*="picker-popup"]:not(.hidden)){overflow:visible;z-index:60}
.vh2 .vqw-picker-popup:not(.hidden){z-index:99999}

/* ============ CARDS: WHITE, LIFTED ============ */
/* back to white. Solid rather than the old 60% glass: it reads cleaner under
   a soft shadow and drops the backdrop-filter, which was a per-frame blur on
   every card. The glow is layered - a tight contact shadow, a mid diffuse one
   and a wide soft one - so the card floats instead of sitting in a grey box. */
.vh2 .card,.vh2 .card.glass{background:#fff;border:1px solid rgba(255,255,255,.9);
  backdrop-filter:none;-webkit-backdrop-filter:none;
  box-shadow:0 1px 2px rgba(8,10,20,.04),
             0 10px 26px -14px rgba(8,10,20,.14),
             0 34px 64px -30px rgba(8,10,20,.20),
             inset 0 1px 0 #fff}
/* hover lifts it and warms the glow to the brand gold */
.vh2 .card:hover{transform:translateY(-6px);border-color:rgba(202,160,120,.45);
  box-shadow:0 1px 2px rgba(8,10,20,.05),
             0 16px 34px -14px rgba(8,10,20,.16),
             0 44px 80px -30px rgba(202,160,120,.38),
             inset 0 1px 0 #fff}
/* the icon plate picks up the same lift */
.vh2 .card .ico{box-shadow:0 10px 22px -12px rgba(8,10,20,.30),inset 0 1px 0 #fff}
.vh2 .card:hover .ico{box-shadow:0 12px 26px -10px rgba(202,160,120,.45),inset 0 1px 0 #fff}
/* a card on a dark section keeps its own treatment */
.vh2 .bg-dark .card,.vh2 .bg-dark .card.glass{background:rgba(255,255,255,.055);
  border-color:rgba(255,255,255,.13);box-shadow:none}
.vh2 .bg-dark .card h3{color:#fff}
.vh2 .bg-dark .card p{color:#a9abb8}

/* ---- .facts on a light section ---- */
/* the component was built for bg-dark (white label, translucent white chip)
   and is used that way on six pages. About Us puts it on bg-white, where the
   label and the chip were both white on white and effectively invisible.
   Light-section variants rather than a changed default, so the six dark
   usages are untouched. */
.vh2 .bg-white .facts li,.vh2 .bg-gray .facts li{background:rgba(6,8,18,.028);border-color:var(--line)}
.vh2 .bg-white .facts b,.vh2 .bg-gray .facts b{color:var(--ink)}
.vh2 .bg-white .facts span,.vh2 .bg-gray .facts span{color:var(--body)}
/* the pale gold chip left the figure itself at 2.4:1 - the number is content,
   not decoration, so it takes a darkened gold that still reads as the accent */
.vh2 .bg-white .facts .n,.vh2 .bg-gray .facts .n{color:#7d5528;border-color:rgba(202,160,120,.5);background:rgba(202,160,120,.14);font-weight:600}

/* card body text was below the AA floor */
/* .card p used var(--soft) #83848f, which is 3.71:1 on white - under the 4.5:1
   minimum for body copy. This predates the white/black switch. var(--body)
   #4d4e58 reads the same but passes. */
.vh2 .card p{color:var(--body)}
.vh2 .bg-dark .card p{color:#a9abb8}

/* ============ SMOKED GLASS PANELS ============ */
/* Dark translucent panels. Deliberately NOT applied to every .glass element:
   .panel.glass wraps the contact FORM and .doc wraps legal prose, and darkening
   those turned field labels, the enquiry dropdown, opening hours and area chips
   unreadable (2.1-2.6:1). Only panels whose inner type is defined here are
   included, so every child is accounted for.
   Alpha .78 blends to about #43454a over the light sections, keeping white
   text near 9:1. */
.vh2 .card.glass,.vh2 .veh.glass,.vh2 .step.glass,.vh2 .way.glass,.vh2 .tstage,.vh2 details.glass{background:rgba(17,19,25,.78);
  backdrop-filter:blur(14px) saturate(1.45);-webkit-backdrop-filter:blur(14px) saturate(1.45);
  border:1px solid rgba(255,255,255,.16);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.13),0 30px 62px -34px rgba(5,6,10,.6)}
.vh2 .card.glass:hover,.vh2 .veh.glass:hover,.vh2 .step.glass:hover,.vh2 .way.glass:hover,.vh2 details.glass:hover{border-color:rgba(202,160,120,.5);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.16),0 40px 78px -32px rgba(202,160,120,.34)}
.vh2 .card.glass h3,.vh2 .veh.glass h3,.vh2 .step.glass h3,.vh2 .way.glass h3,.vh2 .tstage h3,.vh2 details.glass h3,.vh2 .card.glass h4,.vh2 .veh.glass h4,.vh2 .step.glass h4,.vh2 .way.glass h4,.vh2 .tstage h4,.vh2 details.glass h4,.vh2 .card.glass summary,.vh2 .veh.glass summary,.vh2 .step.glass summary,.vh2 .way.glass summary,.vh2 .tstage summary,.vh2 details.glass summary{color:#fff}
.vh2 .card.glass p,.vh2 .veh.glass p,.vh2 .step.glass p,.vh2 .way.glass p,.vh2 .tstage p,.vh2 details.glass p,.vh2 .card.glass .ans,.vh2 .veh.glass .ans,.vh2 .step.glass .ans,.vh2 .way.glass .ans,.vh2 .tstage .ans,.vh2 details.glass .ans,.vh2 .card.glass blockquote,.vh2 .veh.glass blockquote,.vh2 .step.glass blockquote,.vh2 .way.glass blockquote,.vh2 .tstage blockquote,.vh2 details.glass blockquote{color:#c6c8d2}
.vh2 .card.glass .big,.vh2 .veh.glass .big,.vh2 .step.glass .big,.vh2 .way.glass .big,.vh2 .tstage .big,.vh2 details.glass .big,.vh2 .card.glass .who,.vh2 .veh.glass .who,.vh2 .step.glass .who,.vh2 .way.glass .who,.vh2 .tstage .who,.vh2 details.glass .who{color:#fff}
.vh2 .card.glass .cap,.vh2 .veh.glass .cap,.vh2 .step.glass .cap,.vh2 .way.glass .cap,.vh2 .tstage .cap,.vh2 details.glass .cap{color:#dcdee6;border-color:rgba(255,255,255,.2);background:rgba(255,255,255,.07)}
.vh2 .card.glass .num,.vh2 .veh.glass .num,.vh2 .step.glass .num,.vh2 .way.glass .num,.vh2 .tstage .num,.vh2 details.glass .num,.vh2 .card.glass .pm,.vh2 .veh.glass .pm,.vh2 .step.glass .pm,.vh2 .way.glass .pm,.vh2 .tstage .pm,.vh2 details.glass .pm,.vh2 .card.glass .stars,.vh2 .veh.glass .stars,.vh2 .step.glass .stars,.vh2 .way.glass .stars,.vh2 .tstage .stars,.vh2 details.glass .stars{color:var(--g)}
.vh2 .card.glass .more,.vh2 .veh.glass .more,.vh2 .step.glass .more,.vh2 .way.glass .more,.vh2 .tstage .more,.vh2 details.glass .more{color:var(--g)}
.vh2 .card.glass a,.vh2 .veh.glass a,.vh2 .step.glass a,.vh2 .way.glass a,.vh2 .tstage a,.vh2 details.glass a{color:#e8c9a6}
.vh2 .card.glass:hover .more,.vh2 .veh.glass:hover .more{color:#fff}
.vh2 .card.glass .ico,.vh2 .veh.glass .ico,.vh2 .step.glass .ico,.vh2 .way.glass .ico,.vh2 .tstage .ico,.vh2 details.glass .ico{background:linear-gradient(150deg,rgba(255,255,255,.14),rgba(255,255,255,.04));
  border:1px solid rgba(255,255,255,.16);color:var(--g);box-shadow:inset 0 1px 0 rgba(255,255,255,.14)}
.vh2 .card.glass:hover .ico,.vh2 .way.glass:hover .ico{border-color:rgba(202,160,120,.5)}
.vh2 .tstage figcaption::before{background:rgba(202,160,120,.6)}

/* smoked-panel contrast top-ups */
/* measured on the live blend (~#43454a): .sm sat at 3.9:1 and the accordion
   marker at 4.05:1, both under the 4.5 floor */
.vh2 .card.glass .sm,.vh2 .veh.glass .sm,.vh2 .step.glass .sm,.vh2 .way.glass .sm,.vh2 .tstage .sm,.vh2 details.glass .sm{color:#bdbfc9}
.vh2 .card.glass .pm,.vh2 .veh.glass .pm,.vh2 .step.glass .pm,.vh2 .way.glass .pm,.vh2 .tstage .pm,.vh2 details.glass .pm{color:#e0bd97}
.vh2 .card.glass .role,.vh2 .veh.glass .role,.vh2 .step.glass .role,.vh2 .way.glass .role,.vh2 .tstage .role,.vh2 details.glass .role{color:#b4b6c1}

/* FAQ answer links inside a smoked panel */
/* .vh2 .faq .ans a is (0,3,1) and outranked the panel rule at (0,2,2), so the
   link stayed at --g2 and measured 3.77:1 on the dark blend */
.vh2 details.glass .ans a,.vh2 .faq details.glass .ans a{color:#e8c9a6}

/* smoked-panel accent legibility */
/* the brand gold #caa078 and the muted grey both measure 3.9:1 against the
   smoked blend - a shade under the floor. Lifted to a lighter gold and a
   lighter grey that keep the same character but clear 4.5:1. */
.vh2 .card.glass .mk,.vh2 .veh.glass .mk,.vh2 .step.glass .mk,.vh2 .way.glass .mk,.vh2 .tstage .mk,.vh2 details.glass .mk{color:#bdbfc9}
.vh2 .card.glass .more,.vh2 .veh.glass .more,.vh2 .step.glass .more,.vh2 .way.glass .more,.vh2 .tstage .more,.vh2 details.glass .more,.vh2 .card.glass .more span,.vh2 .veh.glass .more span,.vh2 .step.glass .more span,.vh2 .way.glass .more span,.vh2 .tstage .more span,.vh2 details.glass .more span,.vh2 .card.glass .num,.vh2 .veh.glass .num,.vh2 .step.glass .num,.vh2 .way.glass .num,.vh2 .tstage .num,.vh2 details.glass .num,.vh2 .card.glass .stars,.vh2 .veh.glass .stars,.vh2 .step.glass .stars,.vh2 .way.glass .stars,.vh2 .tstage .stars,.vh2 details.glass .stars{color:#e0bd97}
.vh2 .card.glass:hover .more,.vh2 .card.glass:hover .more span,
.vh2 .veh.glass:hover .more,.vh2 .veh.glass:hover .more span{color:#fff}

/* ---- luxury pass on the smoked panels ---- */
/* the flat neutral charcoal read cold and cheap. Warm espresso instead:
   a gold wash falling from the top edge, a vertical gradient so the panel has
   depth rather than being one dead fill, a gold hairline instead of plain
   white, and a warm glow pooled along the bottom inside edge.
   The blend goes DARKER than before (about rgb(59,54,50) to rgb(29,27,25)),
   so every text token measured earlier gains contrast rather than losing it. */
.vh2 .card.glass,.vh2 .veh.glass,.vh2 .step.glass,.vh2 .way.glass,.vh2 .tstage,.vh2 details.glass{background:
    radial-gradient(120% 100% at 50% 0%,rgba(202,160,120,.11),transparent 58%),
    linear-gradient(158deg,rgba(36,29,24,.88) 0%,rgba(17,14,12,.94) 100%);
  border:1px solid rgba(202,160,120,.20);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.10),
             inset 0 -80px 90px -80px rgba(202,160,120,.22),
             0 34px 70px -38px rgba(8,6,4,.70)}
.vh2 .card.glass:hover,.vh2 .veh.glass:hover,.vh2 .step.glass:hover,.vh2 .way.glass:hover,.vh2 .tstage:hover,.vh2 details.glass:hover{border-color:rgba(202,160,120,.46);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.14),
             inset 0 -90px 100px -80px rgba(202,160,120,.30),
             0 46px 88px -36px rgba(202,160,120,.30)}
/* the step number and the icon plate were white chips carrying light gold
   text - washed out to grey blobs. Both become lit gold wells. */
.vh2 .card.glass .num,.vh2 .veh.glass .num,.vh2 .step.glass .num,.vh2 .way.glass .num,.vh2 .tstage .num,.vh2 details.glass .num,.vh2 .card.glass .ico,.vh2 .veh.glass .ico,.vh2 .step.glass .ico,.vh2 .way.glass .ico,.vh2 .tstage .ico,.vh2 details.glass .ico{
  background:linear-gradient(150deg,rgba(202,160,120,.24),rgba(202,160,120,.05));
  border:1px solid rgba(202,160,120,.42);color:#f2d7b6;
  box-shadow:0 0 0 5px rgba(202,160,120,.09),inset 0 1px 0 rgba(255,255,255,.14)}
.vh2 .step.glass:hover .num,.vh2 .card.glass:hover .ico,.vh2 .way.glass:hover .ico{
  border-color:rgba(202,160,120,.65);box-shadow:0 0 0 7px rgba(202,160,120,.14),inset 0 1px 0 rgba(255,255,255,.18)}
/* warm the type a touch so it sits with the espresso rather than against it */
.vh2 .card.glass p,.vh2 .veh.glass p,.vh2 .step.glass p,.vh2 .way.glass p,.vh2 .tstage p,.vh2 details.glass p,.vh2 .card.glass .ans,.vh2 .veh.glass .ans,.vh2 .step.glass .ans,.vh2 .way.glass .ans,.vh2 .tstage .ans,.vh2 details.glass .ans,.vh2 .card.glass blockquote,.vh2 .veh.glass blockquote,.vh2 .step.glass blockquote,.vh2 .way.glass blockquote,.vh2 .tstage blockquote,.vh2 details.glass blockquote{color:#d3cec7}
.vh2 .card.glass .mk,.vh2 .veh.glass .mk,.vh2 .step.glass .mk,.vh2 .way.glass .mk,.vh2 .tstage .mk,.vh2 details.glass .mk,.vh2 .card.glass .sm,.vh2 .veh.glass .sm,.vh2 .step.glass .sm,.vh2 .way.glass .sm,.vh2 .tstage .sm,.vh2 details.glass .sm{color:#c6bfb6}
.vh2 .card.glass .role,.vh2 .veh.glass .role,.vh2 .step.glass .role,.vh2 .way.glass .role,.vh2 .tstage .role,.vh2 details.glass .role{color:#bdb6ac}
.vh2 .card.glass .cap,.vh2 .veh.glass .cap,.vh2 .step.glass .cap,.vh2 .way.glass .cap,.vh2 .tstage .cap,.vh2 details.glass .cap{color:#e6ded4;border-color:rgba(202,160,120,.28);background:rgba(202,160,120,.10)}
.vh2 .tstage figcaption::before{background:rgba(202,160,120,.7)}

/* ============ HERO: FULL SCREEN EVERYWHERE ============ */
/* Every hero was a different height: min(92vh,900px) capped desktop at 900px,
   the 760px breakpoint dropped it to min-height:auto so phone heroes were just
   as tall as their text, and .compact opted some pages out entirely.
   One rule now, all pages, all widths.
   svh (small viewport height) rather than vh so the mobile URL bar cannot make
   the hero taller than the screen and push the content out of view. */
.vh2 .hero,.vh2 .hero.compact,.vh2 .hero.legal-hero{min-height:100vh;min-height:100svh}
@media(max-width:900px){.vh2 .hero,.vh2 .hero.compact{min-height:100vh;min-height:100svh}}
@media(max-width:760px){.vh2 .hero,.vh2 .hero.compact{min-height:100vh;min-height:100svh}}
/* the fixed header is about 64px, so keep the copy clear of it while still
   centring in what remains */
@media(max-width:760px){.vh2 .hero .wrap{padding:104px 0 64px}}
/* a full-screen box on a phone is portrait, so cover has to scale the image up
   a long way. The 300px derivative was being used below 800px, which meant a
   ~4x upscale; use the 768 one instead. */
@media(max-width:800px){.vh2 .hero-bg{background-image:var(--hero-md,var(--hero-lg))}}
@media(max-width:480px){.vh2 .hero-bg{background-image:var(--hero-md,var(--hero-lg))}}

/* hero padding scales with viewport HEIGHT */
/* the old padding was clamp(120px,15vw,180px) top - tied to WIDTH, so on a
   wide but short screen it reserved 284px of vertical space and pushed the
   hero past 100svh. Tying it to vh keeps every hero at exactly one screen.
   The top value clears the ~64px fixed header. */
.vh2 .hero .wrap,.vh2 .hero.compact .wrap,.vh2 .hero.legal-hero .wrap{
  padding:clamp(80px,10svh,124px) 0 clamp(40px,6svh,72px)}
@media(max-width:760px){.vh2 .hero .wrap,.vh2 .hero.compact .wrap{
  padding:clamp(76px,9svh,104px) 0 clamp(36px,5svh,56px)}}
/* the hero holds the booking widget on 18 pages, which is what pushed those
   heroes taller than the rest - trim its top margin so they match */
.vh2 .hero-book{margin-top:clamp(20px,3svh,38px)}
@media(max-width:760px){.vh2 .hero-book{margin-top:clamp(16px,2.4svh,26px)}}
.vh2 .hero .trust{margin-top:clamp(16px,2.4svh,30px)}

/* final hero trim */
/* the busiest hero (two-line h1 + sub + trust row + booking widget) was still
   25px over one screen at 1440x900; the rest were exact. Tightening the lower
   padding and the widget gap brings them all onto the same screen. */
.vh2 .hero .wrap,.vh2 .hero.compact .wrap,.vh2 .hero.legal-hero .wrap{
  padding:clamp(80px,10svh,124px) 0 clamp(26px,4svh,56px)}
.vh2 .hero-book{margin-top:clamp(16px,2.3svh,32px)}
@media(max-width:760px){
  .vh2 .hero .wrap,.vh2 .hero.compact .wrap{padding:clamp(74px,8.5svh,100px) 0 clamp(24px,3.5svh,44px)}
  .vh2 .hero-book{margin-top:clamp(14px,2svh,22px)}}

/* tablet: the booking widget alone is ~470px */
/* at 768 wide the widget stacks and eats nearly half the screen, so the pages
   carrying it plus a long headline ran over one screen. Tighten the vertical
   rhythm between 761 and 1100 so those land on the same height as the rest. */
@media(min-width:761px) and (max-width:1100px){
  .vh2 .hero .wrap,.vh2 .hero.compact .wrap{padding:clamp(70px,7.2svh,94px) 0 clamp(18px,2.4svh,36px)}
  .vh2 .hero .sub{margin-top:clamp(12px,1.9svh,20px)}
  .vh2 .hero .trust{margin-top:clamp(10px,1.6svh,20px)}
  .vh2 .hero-book{margin-top:clamp(10px,1.5svh,20px)}
}

/* first section with no hero above it */
/* the hero used to clear the fixed header. On a page that opens straight into
   a content section (booking is now just the form) the header would sit over
   the top of it, so add the clearance back. */
.vh2 > section:first-of-type:not(.hero){padding-top:calc(clamp(52px,5.4vw,88px) + 84px)}
@media(max-width:760px){.vh2 > section:first-of-type:not(.hero){padding-top:calc(clamp(52px,5.4vw,88px) + 68px)}}

/* ============ FLAT GREY PANELS ============ */
/* Replaces the espresso glass with the flat light-grey card the owner
   referenced: no border, no shadow, no blur - just a soft grey block.
   The sections themselves are #F3F4F6, so a card in that exact grey would be
   invisible on every other section; on .bg-gray the panel steps one shade
   darker so it still reads as a card. */
.vh2 .card.glass,.vh2 .veh.glass,.vh2 .step.glass,.vh2 .way.glass,.vh2 .tstage,.vh2 details.glass{background:#F3F4F6;border:0;border-radius:16px;
  backdrop-filter:none;-webkit-backdrop-filter:none;box-shadow:none;
  transition:background .3s ease,transform .35s cubic-bezier(.22,.61,.36,1)}
.vh2 .bg-gray .card.glass,.vh2 .bg-gray .veh.glass,.vh2 .bg-gray .step.glass,.vh2 .bg-gray .way.glass,.vh2 .bg-gray .tstage,.vh2 .bg-gray details.glass{background:#E7E9ED}
.vh2 .card.glass:hover,.vh2 .veh.glass:hover,.vh2 .step.glass:hover,.vh2 .way.glass:hover,.vh2 .tstage:hover,.vh2 details.glass:hover{background:#E9EBEF;border:0;box-shadow:none;transform:translateY(-3px)}
.vh2 .bg-gray .card.glass:hover,.vh2 .bg-gray .veh.glass:hover,.vh2 .bg-gray .step.glass:hover,
.vh2 .bg-gray .way.glass:hover,.vh2 .bg-gray details.glass:hover{background:#DFE2E7}
/* type returns to dark on light */
.vh2 .card.glass h3,.vh2 .veh.glass h3,.vh2 .step.glass h3,.vh2 .way.glass h3,.vh2 .tstage h3,.vh2 details.glass h3,.vh2 .card.glass h4,.vh2 .veh.glass h4,.vh2 .step.glass h4,.vh2 .way.glass h4,.vh2 .tstage h4,.vh2 details.glass h4,.vh2 .card.glass summary,.vh2 .veh.glass summary,.vh2 .step.glass summary,.vh2 .way.glass summary,.vh2 .tstage summary,.vh2 details.glass summary,.vh2 .card.glass .who,.vh2 .veh.glass .who,.vh2 .step.glass .who,.vh2 .way.glass .who,.vh2 .tstage .who,.vh2 details.glass .who,.vh2 .card.glass .big,.vh2 .veh.glass .big,.vh2 .step.glass .big,.vh2 .way.glass .big,.vh2 .tstage .big,.vh2 details.glass .big{color:var(--ink)}
.vh2 .card.glass p,.vh2 .veh.glass p,.vh2 .step.glass p,.vh2 .way.glass p,.vh2 .tstage p,.vh2 details.glass p,.vh2 .card.glass .ans,.vh2 .veh.glass .ans,.vh2 .step.glass .ans,.vh2 .way.glass .ans,.vh2 .tstage .ans,.vh2 details.glass .ans,.vh2 .card.glass blockquote,.vh2 .veh.glass blockquote,.vh2 .step.glass blockquote,.vh2 .way.glass blockquote,.vh2 .tstage blockquote,.vh2 details.glass blockquote{color:var(--body)}
.vh2 .card.glass .mk,.vh2 .veh.glass .mk,.vh2 .step.glass .mk,.vh2 .way.glass .mk,.vh2 .tstage .mk,.vh2 details.glass .mk,.vh2 .card.glass .sm,.vh2 .veh.glass .sm,.vh2 .step.glass .sm,.vh2 .way.glass .sm,.vh2 .tstage .sm,.vh2 details.glass .sm,.vh2 .card.glass .role,.vh2 .veh.glass .role,.vh2 .step.glass .role,.vh2 .way.glass .role,.vh2 .tstage .role,.vh2 details.glass .role{color:#5f6068}
.vh2 .card.glass .cap,.vh2 .veh.glass .cap,.vh2 .step.glass .cap,.vh2 .way.glass .cap,.vh2 .tstage .cap,.vh2 details.glass .cap{color:#3f4048;border-color:rgba(6,8,18,.12);background:rgba(255,255,255,.7)}
.vh2 .card.glass a,.vh2 .veh.glass a,.vh2 .step.glass a,.vh2 .way.glass a,.vh2 .tstage a,.vh2 details.glass a,.vh2 details.glass .ans a{color:#7d5528}
.vh2 .card.glass .num,.vh2 .veh.glass .num,.vh2 .step.glass .num,.vh2 .way.glass .num,.vh2 .tstage .num,.vh2 details.glass .num,.vh2 .card.glass .pm,.vh2 .veh.glass .pm,.vh2 .step.glass .pm,.vh2 .way.glass .pm,.vh2 .tstage .pm,.vh2 details.glass .pm,.vh2 .card.glass .stars,.vh2 .veh.glass .stars,.vh2 .step.glass .stars,.vh2 .way.glass .stars,.vh2 .tstage .stars,.vh2 details.glass .stars{color:#7d5528}
/* icon moves to the top right in a soft circle, title sits beside it */
.vh2 .card.glass,.vh2 .way.glass{display:grid;grid-template-columns:1fr auto;column-gap:16px;align-content:start}
.vh2 .card.glass .ico,.vh2 .way.glass .ico{grid-column:2;grid-row:1;align-self:start;margin:0;
  width:44px;height:44px;border-radius:50%;background:rgba(255,255,255,.85);border:0;
  color:#3f4048;box-shadow:none}
.vh2 .bg-gray .card.glass .ico,.vh2 .bg-gray .way.glass .ico{background:rgba(255,255,255,.9)}
.vh2 .card.glass h3,.vh2 .way.glass h3{grid-column:1;grid-row:1;align-self:center;margin:0}
.vh2 .card.glass > :not(.ico):not(h3),.vh2 .way.glass > :not(.ico):not(h3){grid-column:1 / -1}
.vh2 .card.glass:hover .ico,.vh2 .way.glass:hover .ico{border:0;box-shadow:none}
/* the read-more line becomes a white pill button */
.vh2 .card.glass .more,.vh2 .way.glass .more{justify-self:start;display:inline-flex;align-items:center;
  margin-top:18px;padding:9px 18px;border-radius:999px;background:#fff;color:var(--ink);
  font-size:13px;font-weight:600;letter-spacing:0;text-transform:none;
  transition:background .25s ease,color .25s ease}
.vh2 .card.glass .more span,.vh2 .way.glass .more span{display:none}
.vh2 .card.glass:hover .more,.vh2 .way.glass:hover .more{background:var(--ink);color:#fff}
.vh2 .tstage figcaption::before{background:rgba(6,8,18,.18)}

/* ---- card: pin the button to the bottom ---- */
/* the grid layout packed rows to the top, so the pill sat directly under the
   description and landed at a different height in each card. Back to a flex
   column with the icon positioned in the corner instead: margin-top:auto then
   pushes the pill to the floor of every card, so the row lines up. */
.vh2 .card.glass,.vh2 .way.glass{display:flex;flex-direction:column;position:relative}
.vh2 .card.glass .ico,.vh2 .way.glass .ico{position:absolute;top:clamp(20px,2.1vw,28px);right:clamp(20px,2.1vw,28px);margin:0}
.vh2 .card.glass h3,.vh2 .way.glass h3{padding-right:62px;margin:0}
.vh2 .card.glass .more,.vh2 .way.glass .more{margin-top:auto;align-self:flex-start}
/* the description should take the slack, not the gap above the button */
.vh2 .card.glass > p,.vh2 .way.glass > p{margin-bottom:18px}
.vh2 .card.glass > p:last-of-type,.vh2 .way.glass > p:last-of-type{margin-bottom:0}
/* ---- step number: solid black ---- */
.vh2 .step.glass .num{background:var(--ink);border:0;color:#fff;box-shadow:none;font-weight:600}
.vh2 .step.glass:hover .num{background:var(--ink);border:0;box-shadow:none}

/* ---- header needs a solid bar when there is no hero ---- */
/* .velora-header is rgba(10,10,10,.55) with a blur: designed to sit over the
   dark hero. /booking/ has no hero any more, so the bar floated over a light
   page and washed out to grey. On a page with no hero it becomes solid.
   Specificity is deliberately high: the .velora-header rule is printed inline
   by the header template, so a plain single-class selector here would lose. */
body.velora-v2:not(:has(.vh2 > section.hero)) .velora-header{
  background:#0a0a0a;
  backdrop-filter:none;-webkit-backdrop-filter:none;
  border-bottom:1px solid rgba(202,160,120,.20)}
/* the logo lockup and nav sit on solid black now, so keep them legible */
body.velora-v2:not(:has(.vh2 > section.hero)) .velora-header .nav-link{color:#e8e6e2}

/* facts chip must fit its value */
/* .facts .n was a fixed 26x26 box, which suits a single digit but clips a
   multi-character value like 24/7. Let it grow horizontally, keep the height
   so the row of chips still lines up. */
.vh2 .facts .n{width:auto;min-width:26px;padding:0 7px;white-space:nowrap;letter-spacing:.04em}

/* chip sizes to its text */
/* width:auto alone was not enough: the chip is display:grid inside a grid
   column, and its auto track collapsed to the 26px minimum, so 24/7 still
   clipped. inline-flex sizes to content, and justify-self:start stops the
   column stretching it back. */
.vh2 .facts .n{display:inline-flex;align-items:center;justify-content:center;
  justify-self:start;width:auto;min-width:26px;height:26px;padding:0 8px;
  white-space:nowrap;box-sizing:border-box}

/* ---- header solidifies once you scroll ---- */
/* The bar is rgba(10,10,10,.55)+blur so it can sit over the dark hero. Past
   the hero it was floating over light content and washing out to grey on every
   page. A script toggles .velora-scrolled on <body> past 56px; the paint
   happens here. Specificity is high on purpose - the base .velora-header rule
   is printed inline by the header template. */
body.velora-v2 .velora-header{transition:background .28s ease,border-color .28s ease}
body.velora-v2.velora-scrolled .velora-header{
  background:#0a0a0a;
  backdrop-filter:none;-webkit-backdrop-filter:none;
  border-bottom:1px solid rgba(202,160,120,.20)}
body.velora-v2.velora-scrolled .velora-header .nav-link{color:#e8e6e2}
@media(prefers-reduced-motion:reduce){body.velora-v2 .velora-header{transition:none}}
