/* ==========================================================================
   Geva Velocity - home page
   Design system: "Geva Velocity" (Novamira active design)
   ========================================================================== */

/* @font-face for FUP Bilu is printed by geva_print_font_faces() in
   functions.php, which resolves each weight from the theme's assets/fonts
   folder or from a Media Library upload, whichever is present. */

:root{
  --g-bg:#FFFFFF;
  --g-surface:#F2F4FA;
  --g-ink:#0A0C12;
  --g-accent:#1B4DFF;
  --g-accent-tint:#EEF2FF;
  --g-muted:#787E94;
  --g-line:#E4E7F0;
  --g-dark:#0A0C12;
  --g-on-dark:#F4F5FA;
  --g-on-dark-muted:#9BA2BC;
  --g-display:"FUP Bilu","Assistant","Arial Hebrew",sans-serif;
  --g-body:"Assistant","Arial Hebrew",Arial,sans-serif;
  --g-max:1180px;
  --g-pad:clamp(20px,4vw,52px);
  --g-pill:100px;
}

/* ---------- reset / base ---------- */
.geva *,.geva *::before,.geva *::after{box-sizing:border-box}
.geva{background:var(--g-bg);color:var(--g-ink);font-family:var(--g-body);font-size:16px;line-height:1.6;-webkit-font-smoothing:antialiased;overflow-x:clip}
.geva img{display:block;max-width:100%;height:auto}
.geva a{color:inherit;text-decoration:none}
.geva h1,.geva h2,.geva h3,.geva h4{font-family:var(--g-display);font-weight:800;line-height:.9;letter-spacing:-.03em;margin:0;text-wrap:balance}
.geva p{margin:0}
.geva ul,.geva ol{margin:0;padding:0;list-style:none}
.geva :focus-visible{outline:3px solid var(--g-accent);outline-offset:3px}
.geva-wrap{max-width:var(--g-max);margin-inline:auto;padding-inline:var(--g-pad)}
.geva-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.geva-skip:focus{position:fixed;inset-block-start:8px;inset-inline-start:8px;z-index:200;background:var(--g-accent);color:#fff;padding:10px 18px;border-radius:var(--g-pill);width:auto;height:auto;clip:auto}

/* ---------- buttons ---------- */
.geva-btn{display:inline-block;font-family:var(--g-body);font-weight:700;border:0;border-radius:var(--g-pill);cursor:pointer;font-variant-numeric:tabular-nums;white-space:nowrap;transition:transform .12s ease,background-color .18s ease}
.geva-btn:active{transform:scale(.97)}
/* These carry the `.geva` prefix on purpose. `.geva a{color:inherit}` has a
   specificity of 0,1,1 and silently beats any single-class colour rule, which
   left the buttons taking their colour from the surrounding text instead of
   their own. Keep the prefix on every rule that colours a button. */
.geva .geva-btn--primary{background:var(--g-accent);color:#fff;font-size:clamp(14px,1.4vw,17px);padding:clamp(12px,1.4vw,16px) clamp(20px,2.4vw,30px)}
.geva .geva-btn--primary:hover{background:#123DDB;color:#fff}
.geva .geva-btn--onblue{background:#fff;color:var(--g-accent);font-size:clamp(13px,1.2vw,15px);padding:12px 22px}
.geva .geva-btn--onblue:hover{background:#EEF2FF;color:var(--g-accent)}
.geva .geva-btn--small{background:var(--g-accent);color:#fff;font-size:14px;padding:10px 18px}
.geva .geva-btn--small:hover{background:#123DDB;color:#fff}

/* ---------- header ---------- */
.geva-header{position:sticky;top:0;z-index:60;background:rgba(255,255,255,.94);backdrop-filter:saturate(1.4) blur(10px);border-bottom:1px solid var(--g-line)}
.geva-header__in{display:flex;align-items:center;gap:clamp(14px,2.4vw,30px);padding-block:14px}
.geva-header__logo{width:clamp(86px,8.6vw,116px);flex:none;line-height:0}
/* The logo file carries a small address/phone strip below the mark that is
   illegible at any header size. Crop to the mark; the phone is a button and
   the address is in the footer. */
.geva-header__logo img,
img.geva-footer__logo{height:auto;aspect-ratio:500/201;object-fit:cover;object-position:50% 0}
.geva-header__logo img{width:100%}
.geva-header__logo .geva-wordmark{font-family:var(--g-display);font-weight:800;font-size:26px;letter-spacing:-.03em;color:var(--g-accent)}
.geva-nav{flex:1}
.geva-nav ul{display:flex;gap:clamp(12px,1.8vw,26px);font-size:clamp(13px,1.15vw,15px);font-weight:600;white-space:nowrap}
.geva-nav a:hover,.geva-nav .is-current>a{color:var(--g-accent)}
.geva-header__lang{font-size:12.5px;font-weight:700;letter-spacing:.06em;color:var(--g-muted)}
.geva-header__lang:hover{color:var(--g-accent)}
.geva-burger{display:none;flex-direction:column;gap:4px;background:0;border:0;padding:8px;cursor:pointer}
.geva-burger span{display:block;width:22px;height:2px;background:var(--g-ink)}

/* ---------- hero ---------- */
/* Full viewport height, minus the sticky header so the hero ends exactly at
   the fold rather than 76px past it. --geva-header-h is kept in sync with the
   real header height by geva.js; the literal is the pre-script fallback.
   svh keeps mobile stable while the browser chrome collapses. */
.geva-hero{position:relative;background:var(--g-dark)}
.geva-hero__sticky{position:relative;width:100%;min-height:calc(100vh - var(--geva-header-h,76px));min-height:calc(100svh - var(--geva-header-h,76px));display:flex;align-items:flex-end;overflow:hidden;isolation:isolate}
/* Scroll-scrubbed sequence: the section is a track, the visual pins to the
   fold and the frame is chosen from how far through the track we are.
   Tune the rotation speed with --geva-seq-track and nothing else. */
.geva-hero--seq{height:var(--geva-seq-track,210vh)}
.geva-hero--seq .geva-hero__sticky{position:sticky;top:var(--geva-header-h,76px);height:calc(100vh - var(--geva-header-h,76px));height:calc(100svh - var(--geva-header-h,76px))}
.geva-hero__canvas{position:absolute;inset:0;width:100%;height:100%;display:block}
/* The first frame is painted as a plain image until the sequence is
   preloaded, so the hero is never blank. */
.geva-hero--seq.is-ready .geva-hero__poster{opacity:0}
.geva-hero--seq .geva-hero__poster{transition:opacity .3s ease}
.geva-hero__media{position:absolute;inset:0;z-index:0;overflow:hidden;pointer-events:none}
.geva-hero__poster{width:100%;height:100%;object-fit:cover;object-position:50% 58%}
/* Oversized on purpose: the player's own title bar and control strip sit at
   the iframe's top and bottom edges, so scaling up pushes them outside the
   hero crop and only the picture remains. */
.geva-hero__media iframe{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%) scale(1.4);width:100vw;height:56.25vw;min-height:100%;min-width:177.78vh;border:0;pointer-events:none;opacity:0;transition:opacity .7s ease}
.geva-hero__media.is-playing iframe{opacity:1}
.geva-hero__veil{position:absolute;inset:0;z-index:1;background:linear-gradient(to top,rgba(10,12,18,.96) 0%,rgba(10,12,18,.84) 26%,rgba(10,12,18,.5) 58%,rgba(10,12,18,.12) 86%)}
.geva-hero__in{position:relative;z-index:2;width:100%;color:#fff;padding-block:clamp(30px,5vw,60px)}
.geva-hero__tagline{font-family:var(--g-display);font-weight:600;font-size:clamp(13px,1.5vw,17px);color:#9DB4FF;margin-bottom:clamp(10px,1.4vw,16px)}
.geva-hero h1{font-size:clamp(38px,7.4vw,92px);line-height:.88;max-width:15ch;color:#fff}
.geva-hero__row{display:flex;align-items:flex-end;justify-content:space-between;gap:clamp(18px,3vw,40px);margin-top:clamp(16px,2.4vw,28px);flex-wrap:wrap}
.geva-hero__row p{font-size:clamp(14px,1.4vw,17px);color:#C9CEE2;max-width:36ch;line-height:1.55}

/* ---------- proof numbers ---------- */
.geva-nums{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(18px,3vw,44px);padding-block:clamp(36px,5.5vw,72px)}
.geva-nums__n{font-family:var(--g-display);font-weight:800;font-size:clamp(40px,6vw,76px);line-height:.9;color:var(--g-accent);font-variant-numeric:tabular-nums}
.geva-nums__l{font-size:clamp(13px,1.25vw,15px);color:var(--g-muted);margin-top:clamp(6px,.8vw,10px);line-height:1.45;max-width:24ch}

/* ---------- services ---------- */
.geva-svc{border-top:1px solid var(--g-line)}
.geva-svc__head{display:flex;align-items:baseline;justify-content:space-between;gap:20px;padding-block:clamp(28px,3.6vw,46px) clamp(10px,1.4vw,18px)}
.geva-svc__head h2{font-size:clamp(28px,4vw,48px)}
.geva-svc__head span{font-size:clamp(12px,1.1vw,14px);font-weight:700;color:var(--g-accent)}
.geva-row{display:grid;grid-template-columns:clamp(140px,20vw,250px) 1fr auto;gap:clamp(18px,3vw,42px);align-items:center;padding-block:clamp(18px,2.2vw,28px);border-top:1px solid var(--g-line);transition:background-color .18s ease}
.geva-row:hover{background:var(--g-surface)}
.geva-row__thumb{aspect-ratio:2/1;overflow:hidden;background:var(--g-surface)}
.geva-row__thumb img{width:100%;height:100%;object-fit:cover}
.geva-row h3{font-size:clamp(22px,3.2vw,38px);line-height:1}
.geva-row p{font-size:clamp(13.5px,1.3vw,16px);color:var(--g-muted);max-width:46ch;margin-top:clamp(5px,.7vw,9px);line-height:1.5}
.geva-row__free{display:inline-block;font-size:clamp(11px,1vw,12.5px);font-weight:700;letter-spacing:.08em;color:var(--g-accent);margin-bottom:6px}
.geva-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:clamp(10px,1.3vw,16px)}
.geva-chips span{font-size:clamp(12px,1.15vw,13.5px);font-weight:600;padding:6px 14px;border-radius:var(--g-pill);background:var(--g-accent-tint);color:var(--g-accent)}
.geva-row__go{font-size:clamp(18px,2vw,26px);color:var(--g-accent);font-weight:700;line-height:1}

/* ---------- charter ---------- */
.geva-charter{background:var(--g-dark);color:var(--g-on-dark);margin-top:clamp(36px,5vw,68px);padding-block:clamp(44px,6.5vw,92px)}
.geva-charter__in{display:grid;grid-template-columns:1fr 1.3fr;gap:clamp(26px,4.5vw,66px);align-items:start}
.geva-charter h2{font-size:clamp(34px,5.6vw,68px);color:#fff}
.geva-charter__sub{font-size:clamp(14px,1.35vw,16px);color:var(--g-on-dark-muted);margin-top:clamp(12px,1.6vw,20px);max-width:32ch;line-height:1.55}
.geva-charter ol{display:grid;grid-template-columns:1fr 1fr;gap:0 clamp(20px,3vw,44px);counter-reset:gc}
.geva-charter li{counter-increment:gc;display:grid;grid-template-columns:auto 1fr;gap:clamp(10px,1.3vw,15px);padding-block:clamp(10px,1.2vw,14px);border-top:1px solid rgba(255,255,255,.13);font-size:clamp(13px,1.25vw,14.5px);color:#D3D8E8;line-height:1.45}
.geva-charter li::before{content:counter(gc,decimal-leading-zero);font-family:var(--g-display);font-weight:800;color:#5B7CFF;font-size:clamp(12px,1.15vw,14px)}

/* ---------- free diagnostics band ---------- */
.geva-band{background:var(--g-accent);color:#fff}
.geva-band__in{padding-block:clamp(26px,3.4vw,42px);display:flex;align-items:center;justify-content:space-between;gap:22px;flex-wrap:wrap}
.geva-band h2{font-size:clamp(22px,3.4vw,42px)}
.geva-band p{font-size:clamp(13px,1.3vw,15px);color:#C7D2FF;margin-top:6px}

/* ---------- footer ---------- */
.geva-footer{padding-block:clamp(32px,4.4vw,56px) clamp(32px,4.4vw,56px);border-top:1px solid var(--g-line);display:grid;grid-template-columns:auto 1fr auto;gap:clamp(22px,4vw,52px);align-items:center}
img.geva-footer__logo{width:clamp(104px,11vw,150px);max-width:150px;flex:none}
.geva-footer__cols{display:flex;gap:clamp(20px,3.6vw,50px);flex-wrap:wrap;font-size:clamp(13px,1.25vw,15px);color:var(--g-muted);line-height:1.5}
.geva-footer__cols b{display:block;color:var(--g-ink);font-weight:700}
.geva-footer__cols a:hover{color:var(--g-accent)}
.geva-footer__lang{font-size:13px;font-weight:700;color:var(--g-muted);border:1px solid var(--g-line);border-radius:var(--g-pill);padding:9px 17px;white-space:nowrap}

/* ---------- mobile call bar ---------- */
.geva .geva-callbar{display:none;position:fixed;inset-inline:0;bottom:0;z-index:80;background:var(--g-accent);color:#fff;text-align:center;font-weight:700;font-size:17px;padding:15px;font-variant-numeric:tabular-nums;box-shadow:0 -1px 0 rgba(255,255,255,.2)}

/* ---------- responsive ---------- */
@media (max-width:900px){
  .geva-charter__in{grid-template-columns:1fr}
  .geva-charter ol{grid-template-columns:1fr}
  .geva-footer{grid-template-columns:1fr;gap:24px}
}
@media (max-width:760px){
  .geva-nav{display:none}
  .geva-nav.is-open{display:block;position:absolute;inset-inline:0;top:100%;background:#fff;border-bottom:1px solid var(--g-line);padding:8px var(--g-pad) 18px}
  .geva-nav.is-open ul{flex-direction:column;gap:0;white-space:normal}
  .geva-nav.is-open li{border-top:1px solid var(--g-line)}
  .geva-nav.is-open a{display:block;padding:13px 0;font-family:var(--g-display);font-size:19px;font-weight:800;letter-spacing:-.02em}
  .geva-burger{display:flex}
  .geva-header__in{position:relative}
  .geva-header .geva-btn--small{display:none}
  .geva-nums{grid-template-columns:1fr;gap:22px}
  .geva-row{grid-template-columns:1fr;gap:14px}
  .geva-row__thumb{aspect-ratio:16/7}
  .geva-row__go{display:none}
  .geva .geva-callbar{display:block}
  .geva{padding-bottom:56px}
}

@media (prefers-reduced-motion:reduce){
  .geva *{animation:none!important;transition:none!important}
}

/* ==========================================================================
   Service pages
   ========================================================================== */

/* Page hero: shorter than the home hero and image-only, so the two never
   read as the same layout. */
.geva-phero{position:relative;min-height:clamp(240px,34vw,400px);display:flex;align-items:flex-end;background:var(--g-dark);overflow:hidden;isolation:isolate}
.geva-phero__media{position:absolute;inset:0;z-index:0}
.geva-phero__media img{width:100%;height:100%;object-fit:cover;object-position:50% 55%}
.geva-phero__veil{position:absolute;inset:0;z-index:1;background:linear-gradient(to top,rgba(10,12,18,.94) 0%,rgba(10,12,18,.7) 40%,rgba(10,12,18,.3) 100%)}
.geva-phero__in{position:relative;z-index:2;width:100%;color:#fff;padding-block:clamp(24px,3.4vw,44px)}
.geva-crumb{display:flex;gap:9px;align-items:center;font-size:13px;font-weight:600;color:#9BA2BC;margin-bottom:clamp(10px,1.4vw,16px)}
.geva-crumb a:hover{color:#fff}
.geva-phero__free{display:inline-block;font-size:12px;font-weight:700;letter-spacing:.08em;color:#0A0C12;background:#fff;padding:5px 12px;border-radius:var(--g-pill);margin-bottom:12px}
.geva-phero h1{font-size:clamp(36px,6.4vw,80px);color:#fff}

/* Lead paragraph: one idea, set large, with the single action beside it. */
.geva-lead{padding-block:clamp(34px,5vw,64px);display:grid;grid-template-columns:1fr auto;gap:clamp(20px,4vw,52px);align-items:center;border-bottom:1px solid var(--g-line)}
.geva-lead p{font-size:clamp(18px,2.2vw,26px);line-height:1.45;color:var(--g-ink);max-width:34ch;font-weight:600}
.geva-lead .geva-btn{justify-self:start}

/* Numbered blocks: the numbers are real sequence markers for a department's
   areas of work, not decoration. */
.geva-blocks{padding-block:clamp(30px,4.4vw,58px);display:grid;grid-template-columns:repeat(2,1fr);gap:clamp(26px,4vw,56px) clamp(30px,5vw,72px)}
.geva-block{display:grid;grid-template-columns:auto 1fr;gap:6px clamp(14px,2vw,22px);align-content:start}
.geva-block__n{font-family:var(--g-display);font-weight:800;font-size:clamp(15px,1.6vw,19px);color:var(--g-accent);line-height:1.5;font-variant-numeric:tabular-nums}
.geva-block h2{font-size:clamp(21px,2.6vw,30px);line-height:1.04}
.geva-block p{grid-column:2;font-size:clamp(14.5px,1.4vw,16px);color:var(--g-muted);line-height:1.6;max-width:44ch}

/* Quiet ground, used once per page. */
.geva-note{background:var(--g-surface)}
.geva-note__in{padding-block:clamp(30px,4.4vw,58px);display:flex;flex-direction:column;align-items:flex-start;gap:12px}
.geva-note h2{font-size:clamp(24px,3.2vw,38px)}
.geva-note p{font-size:clamp(15px,1.5vw,17px);color:var(--g-muted);max-width:62ch;line-height:1.6}
.geva .geva-note__link{font-weight:700;font-size:15px;color:var(--g-accent)}

.geva-more{padding-block:clamp(34px,5vw,68px)}
.geva-more h2{font-size:clamp(22px,2.8vw,32px);margin-bottom:clamp(14px,2vw,22px)}
.geva-more__list{display:grid;grid-template-columns:1fr 1fr;gap:0 clamp(30px,5vw,72px)}
.geva-more__item{display:grid;grid-template-columns:1fr auto;gap:4px 18px;align-items:baseline;padding-block:clamp(16px,2vw,24px);border-top:1px solid var(--g-line)}
.geva-more__item h3{font-size:clamp(19px,2.2vw,26px)}
.geva-more__item p{grid-column:1;font-size:14px;color:var(--g-muted);line-height:1.5;max-width:40ch}
.geva-more__item span{color:var(--g-accent);font-weight:700;font-size:20px}
.geva .geva-more__item:hover h3{color:var(--g-accent)}
.geva-svcpage__missing{padding-block:80px}

/* ==========================================================================
   Journal on the home page
   One lead entry against a stack of shorter ones: deliberately not a row of
   three equal cards.
   ========================================================================== */
.geva-journal{padding-block:clamp(40px,5.6vw,76px);border-top:1px solid var(--g-line)}
.geva-journal__head{display:flex;align-items:baseline;justify-content:space-between;gap:20px;flex-wrap:wrap;margin-bottom:clamp(20px,2.6vw,32px)}
.geva-journal__head h2{font-size:clamp(28px,4vw,48px)}
.geva-journal__head p{font-size:clamp(14px,1.4vw,16px);color:var(--g-muted)}
.geva-journal__grid{display:grid;grid-template-columns:1.15fr 1fr;gap:clamp(26px,4vw,56px);align-items:start}
.geva-journal__rest{display:flex;flex-direction:column}
.geva-post{display:block}
.geva-post h3{font-size:clamp(20px,2.4vw,28px);line-height:1.06;margin-bottom:7px}
.geva-post p{font-size:clamp(14px,1.35vw,15.5px);color:var(--g-muted);line-height:1.55;max-width:46ch}
.geva .geva-post:hover h3{color:var(--g-accent)}
.geva-post--lead h3{font-size:clamp(24px,3.2vw,38px);margin-top:clamp(14px,1.8vw,20px)}
.geva-post__media{aspect-ratio:16/9;overflow:hidden;background:var(--g-surface)}
.geva-post__media img{width:100%;height:100%;object-fit:cover}
.geva-post__more{display:inline-block;margin-top:12px;font-weight:700;font-size:14.5px;color:var(--g-accent)}
.geva-journal__rest .geva-post{padding-block:clamp(14px,1.8vw,20px);border-top:1px solid var(--g-line)}
.geva-journal__rest .geva-post:first-child{border-top:0;padding-top:0}

@media (max-width:900px){
  .geva-blocks,.geva-more__list,.geva-journal__grid{grid-template-columns:1fr}
  .geva-lead{grid-template-columns:1fr;align-items:start;gap:22px}
  .geva-journal__rest .geva-post:first-child{border-top:1px solid var(--g-line);padding-top:clamp(14px,1.8vw,20px)}
}
/* ==========================================================================
   Contact page
   No photographic hero here: the page opens on the information itself, which
   keeps it a distinct layout family from the home and service pages.
   ========================================================================== */
.geva-chead{padding-block:clamp(34px,5vw,72px) clamp(20px,2.6vw,32px)}
.geva-chead h1{font-size:clamp(40px,7vw,88px)}
.geva-chead p{font-size:clamp(16px,1.8vw,20px);color:var(--g-muted);max-width:46ch;margin-top:clamp(12px,1.6vw,20px);line-height:1.55}

.geva-contact{display:grid;grid-template-columns:1.15fr 1fr;gap:clamp(28px,5vw,72px);padding-bottom:clamp(34px,5vw,68px);align-items:start}

/* The phone number is the page's primary action, so it is the largest thing
   on it and is a tap target in its own right. */
.geva .geva-tel{display:block;background:var(--g-accent);color:#fff;padding:clamp(20px,3vw,32px);text-decoration:none;transition:background-color .18s ease}
.geva .geva-tel:hover{background:#123DDB;color:#fff}
.geva-tel__l{display:block;font-size:13px;font-weight:700;letter-spacing:.1em;color:#C7D2FF}
.geva-tel__n{display:block;font-family:var(--g-display);font-weight:800;font-size:clamp(34px,5.6vw,64px);line-height:1;letter-spacing:-.02em;margin-block:6px 8px;font-variant-numeric:tabular-nums}
.geva-tel__c{display:block;font-size:13.5px;color:#C7D2FF}

.geva-facts{margin:0;padding:0;display:grid;gap:0}
.geva-facts>div{display:grid;grid-template-columns:120px 1fr;gap:16px;padding-block:clamp(13px,1.6vw,17px);border-bottom:1px solid var(--g-line)}
.geva-facts dt{font-size:13px;font-weight:700;letter-spacing:.06em;color:var(--g-muted);margin:0}
.geva-facts dd{margin:0;font-size:clamp(15px,1.5vw,17px);font-weight:600}

.geva-contact__side h2{font-size:clamp(22px,2.8vw,30px);margin-bottom:clamp(12px,1.6vw,18px)}
.geva-hours{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums}
.geva-hours th,.geva-hours td{text-align:start;padding-block:clamp(11px,1.4vw,14px);border-bottom:1px solid var(--g-line);font-size:clamp(14.5px,1.5vw,16px)}
.geva-hours th{font-weight:600;color:var(--g-ink)}
.geva-hours td{font-weight:700;text-align:end;direction:ltr}
.geva-hours .is-closed{color:var(--g-muted);font-weight:600;direction:rtl}
.geva-contact__note{margin-top:clamp(14px,2vw,20px);font-size:14.5px;color:var(--g-muted);line-height:1.6}

/* Map bleeds edge to edge; the address and the two navigation actions sit
   on a solid bar beneath it rather than floating over the map. */
.geva-map{width:100vw;margin-inline:calc(50% - 50vw)}
.geva-map iframe{display:block;width:100%;height:clamp(280px,42vw,460px);border:0;filter:grayscale(.15)}
.geva-map__bar{background:var(--g-ink);color:#fff}
.geva-map__in{display:flex;align-items:center;justify-content:space-between;gap:20px;flex-wrap:wrap;padding-block:clamp(18px,2.4vw,26px)}
.geva-map__in p{font-size:14px;color:var(--g-on-dark-muted);line-height:1.5}
.geva-map__in b{display:block;color:#fff;font-weight:700;font-size:clamp(16px,1.8vw,19px)}
.geva-map__btns{display:flex;gap:10px;flex-wrap:wrap}
.geva .geva-btn--ghost{background:transparent;color:#fff;box-shadow:inset 0 0 0 1.5px rgba(255,255,255,.4);font-size:clamp(13px,1.2vw,15px);padding:12px 22px}
.geva .geva-btn--ghost:hover{background:rgba(255,255,255,.1);color:#fff}

@media (max-width:900px){
  .geva-contact{grid-template-columns:1fr}
  .geva-facts>div{grid-template-columns:110px 1fr}
  .geva-map__in{flex-direction:column;align-items:flex-start}
}
/* ==========================================================================
   Light hero
   The supplied artwork is a near-white technical illustration with the car on
   one side and clear space on the other, so the hero inverts: dark type, a
   scrim that runs from the text edge instead of from the bottom, and the
   image anchored so the car never sits under the words.
   ========================================================================== */
.geva-hero--light .geva-hero__sticky{background:#EDF0F6;align-items:center}
.geva-hero.geva-hero--light .geva-hero__poster{object-position:12% 50%}

/* Opaque at the text edge (the right, in RTL), clear over the car. */
.geva-hero.geva-hero--light .geva-hero__veil{
	background:linear-gradient(to left,rgba(255,255,255,.95) 0%,rgba(255,255,255,.88) 24%,rgba(255,255,255,.5) 48%,rgba(255,255,255,0) 72%);
}

.geva-hero.geva-hero--light .geva-hero__in{color:var(--g-ink)}
.geva-hero.geva-hero--light .geva-hero__tagline{color:var(--g-accent)}
.geva-hero.geva-hero--light h1{color:var(--g-ink)}
.geva-hero.geva-hero--light .geva-hero__row p{color:var(--g-muted)}

/* Keep the type inside the clear zone of the artwork. */
.geva-hero.geva-hero--light .geva-hero__tagline,
.geva-hero.geva-hero--light h1,
.geva-hero.geva-hero--light .geva-hero__row{max-width:min(54%,600px)}
.geva-hero.geva-hero--light .geva-hero__row{align-items:center}

@media (max-width:1100px){
	.geva-hero.geva-hero--light .geva-hero__tagline,
	.geva-hero.geva-hero--light h1,
	.geva-hero.geva-hero--light .geva-hero__row{max-width:min(66%,560px)}
	.geva-hero.geva-hero--light .geva-hero__veil{
		background:linear-gradient(to left,rgba(255,255,255,.96) 0%,rgba(255,255,255,.9) 40%,rgba(255,255,255,.35) 72%,rgba(255,255,255,0) 92%);
	}
}

/* Below the fold of a phone, stop overlaying entirely: the picture becomes a
   band and the type sits under it on plain white. */
@media (max-width:760px){
	.geva-hero--light{height:auto}
	.geva-hero--light .geva-hero__sticky{position:static;height:auto;min-height:0;flex-direction:column;background:var(--g-bg)}
	.geva-hero.geva-hero--light .geva-hero__media{position:relative;inset:auto;flex:1 1 auto;min-height:clamp(180px,44vw,260px)}
	.geva-hero.geva-hero--light .geva-hero__in{flex:0 0 auto}
	.geva-hero.geva-hero--light .geva-hero__poster{object-position:30% 50%}
	.geva-hero.geva-hero--light .geva-hero__veil{display:none}
	.geva-hero.geva-hero--light .geva-hero__in{position:relative;padding-block:clamp(20px,4vw,28px) clamp(24px,5vw,34px)}
	.geva-hero.geva-hero--light .geva-hero__tagline,
	.geva-hero.geva-hero--light h1,
	.geva-hero.geva-hero--light .geva-hero__row{max-width:100%}
}
/* ==========================================================================
   Light service hero
   The commissioned renders are near-white blueprint scenes with the vehicle
   on one side, so the page hero inverts the same way the home hero does.
   ========================================================================== */
.geva-phero--light{background:var(--g-heroWash,#EDF0F6)}
.geva-phero--light .geva-phero__media img{object-position:12% 50%}

/* Opaque at the text edge (the right, in RTL), clear over the vehicle. */
.geva-phero--light .geva-phero__veil{
	background:linear-gradient(to left,rgba(255,255,255,.95) 0%,rgba(255,255,255,.87) 26%,rgba(255,255,255,.45) 54%,rgba(255,255,255,0) 78%);
}

.geva-phero--light .geva-phero__in{color:var(--g-ink)}
.geva-phero--light .geva-crumb{color:var(--g-muted)}
.geva-phero--light .geva-crumb a:hover{color:var(--g-accent)}
.geva-phero--light h1{color:var(--g-ink)}

/* On white the badge cannot stay white-on-white. */
.geva-phero--light .geva-phero__free{background:var(--g-accent);color:#fff}

/* Keep the type inside the clear zone of the artwork. */
.geva-phero--light .geva-crumb,
.geva-phero--light .geva-phero__free,
.geva-phero--light h1{max-width:min(56%,620px)}

@media (max-width:900px){
	.geva-phero--light .geva-phero__veil{
		background:linear-gradient(to left,rgba(255,255,255,.96) 0%,rgba(255,255,255,.9) 46%,rgba(255,255,255,.55) 76%,rgba(255,255,255,.2) 100%);
	}
	.geva-phero--light .geva-phero__media img{object-position:24% 50%}
	.geva-phero--light .geva-crumb,
	.geva-phero--light .geva-phero__free,
	.geva-phero--light h1{max-width:100%}
}
/* ==========================================================================
   Services rail
   A pinned section whose panels move sideways with vertical scroll. Tune the
   traverse speed with --geva-rail-track and nothing else. Below 900px the
   pinning is dropped entirely for a native swipe carousel.
   ========================================================================== */
/* A faint blueprint grid, drawn in the accent hue at very low alpha so it
   reads as drafting paper rather than a pattern. Fine 28px squares with a
   heavier 140px major line, the way a real drawing sheet is ruled. */
.geva-rail{position:relative;height:var(--geva-rail-track,230vh);background-color:var(--g-bg);
	background-image:
		linear-gradient(to right, rgba(27,77,255,.045) 1px, transparent 1px),
		linear-gradient(to bottom, rgba(27,77,255,.045) 1px, transparent 1px),
		linear-gradient(to right, rgba(27,77,255,.085) 1px, transparent 1px),
		linear-gradient(to bottom, rgba(27,77,255,.085) 1px, transparent 1px);
	background-size:28px 28px,28px 28px,140px 140px,140px 140px}
.geva-rail__sticky{position:sticky;top:var(--geva-header-h,76px);height:calc(100vh - var(--geva-header-h,76px));height:calc(100svh - var(--geva-header-h,76px));display:flex;flex-direction:column;overflow:hidden}

.geva-rail__head{flex:0 0 auto;display:flex;align-items:baseline;justify-content:space-between;gap:24px;padding-block:clamp(44px,7vw,96px) clamp(4px,.7vw,10px)}
.geva-rail__head h2{font-size:clamp(30px,5vw,60px)}
.geva-rail__meter{display:flex;align-items:center;gap:14px;flex:none}
.geva-rail__count{font-size:13px;font-weight:700;color:var(--g-muted);font-variant-numeric:tabular-nums;letter-spacing:.06em}
.geva-rail__count b{color:var(--g-accent)}
.geva-rail__bar{display:block;width:clamp(70px,12vw,150px);height:2px;background:var(--g-line);overflow:hidden}
.geva-rail__bar i{display:block;height:100%;width:0;background:var(--g-accent);transform-origin:right center}

.geva-rail__viewport{flex:1 1 auto;min-height:0;display:flex;align-items:center;overflow:hidden}
.geva-rail__track{display:flex;gap:clamp(18px,2.6vw,40px);padding-inline:var(--g-pad);will-change:transform}

.geva-panel{flex:0 0 auto;width:min(74vw,940px);display:grid;grid-template-columns:1.05fr .95fr;gap:clamp(18px,3vw,44px);align-items:center;background:transparent}
.geva-panel__media{position:relative;aspect-ratio:1;height:clamp(200px,40vh,440px);width:auto;max-width:100%;margin-inline:auto;display:flex;align-items:center;justify-content:center}
/* A cut-out object sits on the white ground and is never cropped. */
.geva-panel__object{width:100%;height:100%;object-fit:contain}

/* Until a cut-out exists, the department's real workshop photograph fills the
   square instead. A photograph is cropped, an object is not. */
.geva-panel__photo{width:100%;height:100%;object-fit:cover}

.geva-panel__body{display:flex;flex-direction:column;align-items:flex-start;gap:clamp(7px,1vw,11px)}
.geva-panel__i{font-family:var(--g-display);font-weight:800;font-size:clamp(13px,1.4vw,16px);color:var(--g-accent);font-variant-numeric:tabular-nums}
.geva-panel__free{font-size:clamp(10.5px,1.1vw,12px);font-weight:700;letter-spacing:.08em;color:#fff;background:var(--g-accent);padding:4px 11px;border-radius:var(--g-pill)}
.geva-panel h3{font-size:clamp(26px,4.2vw,52px);line-height:1}
.geva-panel p{font-size:clamp(14px,1.5vw,17px);color:var(--g-muted);line-height:1.55;max-width:38ch}
.geva-panel__more{font-weight:700;font-size:14.5px;color:var(--g-accent);margin-top:4px}
.geva-panel:hover h3{color:var(--g-accent)}

/* A soft disc sits behind a cut-out object so it reads as a lit product shot
   rather than a sticker on white. Photographs fill the square and cover it,
   so the disc is drawn only for object panels. */
.geva-panel__media.is-object::before{content:"";position:absolute;inset:4%;border-radius:50%;
	background:radial-gradient(circle at 36% 30%, #FFFFFF 0%, #F4F6FC 38%, #DDE4F3 100%);
	z-index:0}
.geva-panel__media.is-object img{position:relative;z-index:1}

@media (max-width:900px){
	/* No pinning on a phone: a plain swipe carousel, no script involved. */
	.geva-rail{height:auto}
	.geva-rail__sticky{position:static;height:auto;overflow:visible}
	.geva-rail__head{padding-block:clamp(28px,6vw,44px) 14px}
	.geva-rail__meter{display:none}
	.geva-rail__viewport{overflow-x:auto;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;padding-bottom:clamp(24px,5vw,40px);scrollbar-width:none}
	.geva-rail__viewport::-webkit-scrollbar{display:none}
	.geva-rail__track{transform:none!important;gap:16px}
	.geva-panel{width:min(84vw,460px);grid-template-columns:1fr;gap:14px;scroll-snap-align:center}
	.geva-panel__media{aspect-ratio:4/3;height:auto;width:100%}
}

@media (prefers-reduced-motion:reduce){
	.geva-rail{height:auto}
	.geva-rail__sticky{position:static;height:auto;overflow:visible}
	.geva-rail__viewport{overflow-x:auto}
	.geva-rail__track{transform:none!important}
}
/* --------------------------------------------------------------------------
   Panel hover: the object lifts off its disc and drifts.
   Motivated feedback on an interactive card, not decoration. Only where a
   real pointer exists, and never under reduced motion.
   -------------------------------------------------------------------------- */
@media (hover:hover) and (pointer:fine){
	.geva-panel__media.is-object img{
		transition:transform .45s cubic-bezier(.22,.61,.36,1),filter .45s ease;
		will-change:transform;
	}
	.geva-panel__media.is-object::before{
		transition:transform .5s cubic-bezier(.22,.61,.36,1),opacity .5s ease;
	}

	.geva-panel:hover .geva-panel__media.is-object img,
	.geva-panel:focus-visible .geva-panel__media.is-object img{
		animation:geva-float 3.4s ease-in-out infinite;
		filter:drop-shadow(0 18px 22px rgba(10,12,18,.13));
	}

	/* The disc eases back and softens, so the object reads as having risen
	   off it rather than the pair scaling together. */
	.geva-panel:hover .geva-panel__media.is-object::before,
	.geva-panel:focus-visible .geva-panel__media.is-object::before{
		transform:scale(.965);
		opacity:.85;
	}
}

@keyframes geva-float{
	0%   {transform:translate3d(0,0,0)}
	50%  {transform:translate3d(0,-9px,0)}
	100% {transform:translate3d(0,0,0)}
}

@media (prefers-reduced-motion:reduce){
	.geva-panel:hover .geva-panel__media.is-object img{animation:none;filter:none}
	.geva-panel:hover .geva-panel__media.is-object::before{transform:none;opacity:1}
}
/* ==========================================================================
   FAQ accordion
   Native <details>, so it is keyboard operable, findable with in-page search,
   and works with the stylesheet alone. No script is involved.
   ========================================================================== */
.geva-faq{padding-block:clamp(44px,6vw,86px);border-top:1px solid var(--g-line)}
.geva-faq__head{margin-bottom:clamp(18px,2.6vw,32px)}
.geva-faq__head h2{font-size:clamp(30px,4.6vw,56px)}
.geva-faq__head p{font-size:clamp(15px,1.5vw,17px);color:var(--g-muted);margin-top:10px;max-width:52ch}

.geva-faq__list{border-top:1px solid var(--g-line);max-width:82ch}
.geva-faq__item{border-bottom:1px solid var(--g-line)}

.geva-faq__item summary{
	list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;
	gap:20px;padding-block:clamp(16px,2vw,22px);
}
.geva-faq__item summary::-webkit-details-marker{display:none}
.geva-faq__item summary:focus-visible{outline:3px solid var(--g-accent);outline-offset:3px}

.geva-faq__q{font-family:var(--g-display);font-weight:800;letter-spacing:-.02em;
	font-size:clamp(19px,2.3vw,27px);line-height:1.15}
.geva-faq__item:hover .geva-faq__q,
.geva-faq__item[open] .geva-faq__q{color:var(--g-accent)}

/* A plus that becomes a minus. Two rules, so nothing rotates into a smudge. */
.geva-faq__mark{position:relative;flex:none;width:20px;height:20px}
.geva-faq__mark::before,
.geva-faq__mark::after{content:"";position:absolute;inset-inline:0;top:9px;height:2px;
	background:var(--g-accent);transition:transform .25s ease}
.geva-faq__mark::after{transform:rotate(90deg)}
.geva-faq__item[open] .geva-faq__mark::after{transform:rotate(0deg)}

.geva-faq__a{padding-bottom:clamp(18px,2.2vw,26px);display:flex;flex-direction:column;gap:12px}
.geva-faq__a p{font-size:clamp(14.5px,1.5vw,16.5px);color:var(--g-muted);line-height:1.65;max-width:66ch}

.geva .geva-faq__more{display:inline-block;margin-top:clamp(20px,2.6vw,30px);
	font-weight:700;font-size:15px;color:var(--g-accent)}
.geva-faq__cta{margin-top:clamp(14px,1.8vw,20px);font-size:15px;color:var(--g-muted)}
.geva .geva-faq__cta a{font-weight:700;color:var(--g-accent);font-variant-numeric:tabular-nums}

/* Height animation where the browser can interpolate to auto. Everywhere else
   the panel simply appears, which is a fine outcome. */
@supports selector(::details-content){
	.geva-faq__item::details-content{
		block-size:0;overflow:hidden;
		transition:block-size .32s ease, content-visibility .32s allow-discrete;
		interpolate-size:allow-keywords;
	}
	.geva-faq__item[open]::details-content{block-size:auto}
}

@media (prefers-reduced-motion:reduce){
	.geva-faq__item::details-content{transition:none}
	.geva-faq__mark::before,.geva-faq__mark::after{transition:none}
}