/* Gulf View public presentation — canonical design system
   Components: hero banners + marketing cards + listing cards + timeline.
   Runtime theme variables remain authored by theme.css.php.
   Historical SEO18/20/21 CSS links are decommissioned after installation. */

/* ---- design18 consolidated ---- */
/* GULF VIEW | SEO-18.5 | Public design contract | 2026-11-02
   Reusable public-site geometry + quiet champagne-gold outlines.
   This stylesheet is intentionally linked after the dynamic central theme and SEO18 footer fix.
   No changes to home hero, brand images, backend, data, status colors, buttons, fixed widgets.
*/
.gv-public-site {
  /* Derived from the centrally managed gold --brand-primary. */
  --gv-public-outline: color-mix(in srgb, var(--brand-primary) 30%, transparent);
  --gv-public-divider: color-mix(in srgb, var(--brand-primary) 21%, transparent);
  --border: var(--gv-public-outline);
  --border-soft: var(--gv-public-divider);
  --gv-inner-hero-block: 440px;
  --gv-inner-hero-tablet-min: 320px;
  --gv-inner-hero-mobile-min: 280px;
}

/* Scoped to public page banners only; the main/home hero is deliberately untouched.
   440px is the normal desktop envelope. Longer translated copy can expand safely. */
.gv-public-site .gv-site-main > :is(.gv-site-page-hero, .gv-site-hero:not(.is-home)) {
  block-size: auto !important;
  min-block-size: var(--gv-inner-hero-block) !important;
  max-block-size: none !important;
  height: auto !important;
  min-height: var(--gv-inner-hero-block) !important;
  max-height: none !important;
  box-sizing: border-box;
  align-items: center;
}
/* Preserve image cover and text position for central page-hero variants. */
.gv-public-site .gv-site-main > .gv-site-page-hero.is-brand-hero {
  justify-content: flex-end;
}
.gv-public-site .gv-site-main > .gv-site-page-hero.is-brand-hero > img,
.gv-public-site .gv-site-main > .gv-site-page-hero.has-media:not(.gv-service-page-hero):not(.is-brand-hero) > img {
  object-fit: cover;
}

/* Theme-based gold borders inherit in the header, nav, page cards, tables and footer.
   Keep explicit success, error, focus and active controls unchanged. */
.gv-public-site .gv-site-frame::before,
.gv-public-site .gv-site-frame::after {
  background: var(--gv-public-divider);
}

@media (max-width: 820px) {
  .gv-public-site .gv-site-main > :is(.gv-site-page-hero, .gv-site-hero:not(.is-home)) {
    block-size: auto !important;
    min-block-size: var(--gv-inner-hero-tablet-min) !important;
    min-height: var(--gv-inner-hero-tablet-min) !important;
    max-block-size: none !important;
  }
}
@media (max-width: 620px) {
  .gv-public-site .gv-site-main > :is(.gv-site-page-hero, .gv-site-hero:not(.is-home)) {
    block-size: auto !important;
    min-block-size: var(--gv-inner-hero-mobile-min) !important;
    min-height: var(--gv-inner-hero-mobile-min) !important;
    max-block-size: none !important;
  }
  /* Do not shrink/hide descriptive text for the sake of a fixed pixel height. */
  .gv-public-site .gv-site-main > .gv-site-page-hero.is-brand-hero {
    overflow: hidden;
  }
}


/* ---- hero20 consolidated ---- */
/* GULF VIEW | SEO-20 | Unified internal page heroes and compact journal.
   Follows gv-public-design-18-5. Appearance resolves from the website's existing
   html[data-appearance] switch. The assets below are site-owned and separate per
   appearance; central website-pages media_url and media_dark_url may override. */
.gv-public-site{--gv20-desktop:350px;--gv20-tablet:300px;--gv20-mobile:240px;--gv20-radius:24px}
.gv-public-site .gv-site-main > :is(.gv-site-page-hero,.gv-site-hero:not(.is-home)) {
  position:relative!important; isolation:isolate; overflow:hidden;
  box-sizing:border-box!important; display:flex!important; align-items:center!important;
  justify-content:flex-start!important; gap:0!important;
  min-height:var(--gv20-desktop)!important; min-block-size:var(--gv20-desktop)!important;
  height:auto!important;max-height:none!important;
  margin-block:0 28px!important; padding:clamp(20px,3.5vw,46px)!important;
  border-radius:var(--gv20-radius)!important;
  border:1px solid var(--gv-public-outline,var(--border));
  background-repeat:no-repeat!important;background-size:cover!important;
  background-position: center center!important;
}
/* The original img remains in the DOM as fallback/SEO but is not displayed above
   the CSS backgrounds: backgrounds change on the exact user's theme toggle. */
.gv-public-site .gv-site-main > :is(.gv-site-page-hero,.gv-site-hero:not(.is-home)) > img,
.gv-public-site .gv-site-main > .gv-site-hero:not(.is-home) > .gv-site-hero-media {
  display:none!important;
}
.gv-public-site .gv-site-main > .gv-site-page-hero > div,
.gv-public-site .gv-site-main > .gv-site-hero:not(.is-home) > .gv-site-hero-copy {
  position:relative!important; z-index:1!important;
  width:min(51%,690px)!important; max-width:690px!important;
  margin:0 0 0 auto!important;
  padding:0!important; grid-column:auto!important;grid-row:auto!important;
  color:var(--gv20-ink)!important;
  text-align:start!important;
}
.gv-public-site .gv-site-main > :is(.gv-site-page-hero,.gv-site-hero:not(.is-home)) :is(h1,p,.gv-site-kicker) {color:var(--gv20-ink)!important;text-shadow:none!important}
.gv-public-site .gv-site-main > :is(.gv-site-page-hero,.gv-site-hero:not(.is-home)) h1 {
  font-size:clamp(1.6rem,2.8vw,2.6rem)!important;line-height:1.22!important;margin:.35em 0 .35em!important;
  letter-spacing:normal!important;overflow-wrap:anywhere;
}
.gv-public-site .gv-site-main > :is(.gv-site-page-hero,.gv-site-hero:not(.is-home)) p {
  font-size:clamp(.84rem,1.05vw,.98rem)!important;line-height:1.7!important;
  max-width:58ch;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;
  overflow:hidden;margin:0 0 16px!important;
}
.gv-public-site .gv-site-main > :is(.gv-site-page-hero,.gv-site-hero:not(.is-home)) .gv-site-kicker {
  display:block;font-size:.7rem!important;font-weight:800;letter-spacing:.04em;color:var(--brand-primary)!important;
}
/* Dark and light use distinct source files, no image stretching. Gradients preserve
   contrast and direct attention toward headings/primary CTA, never hide content. */
html[data-appearance="dark"] .gv-public-site .gv-site-main > :is(.gv-site-page-hero,.gv-site-hero:not(.is-home)){
 --gv20-ink:#f6f2e9;
 background-image:linear-gradient(270deg,rgba(4,19,13,.96) 0%,rgba(4,19,13,.9) 37%,rgba(4,19,13,.38) 75%,rgba(4,19,13,.22) 100%),var(--gv20-hero-dark,none)!important;
 background-color:#06150f!important;
}
html[data-appearance="light"] .gv-public-site .gv-site-main > :is(.gv-site-page-hero,.gv-site-hero:not(.is-home)){
 --gv20-ink:#1b2820;
 background-image:linear-gradient(270deg,rgba(250,248,243,.98) 0%,rgba(250,248,243,.91) 35%,rgba(250,248,243,.12) 77%,rgba(250,248,243,.05) 100%),var(--gv20-hero-light,none)!important;
 background-color:#faf8f3!important;
}
/* Automatic per-page defaults. PHP inline variables can be centrally overridden. */
body[data-public-page="branches"]{--gv20-hero-light:url("/assets/images/site-library/unified-heroes/branches-light.webp");--gv20-hero-dark:url("/assets/images/site-library/unified-heroes/branches-dark.webp")}
body[data-public-page="careers"]{--gv20-hero-light:url("/assets/images/site-library/unified-heroes/careers-light.webp");--gv20-hero-dark:url("/assets/images/site-library/unified-heroes/careers-dark.webp")}
body[data-public-page="faq"]{--gv20-hero-light:url("/assets/images/site-library/unified-heroes/faq-light.webp");--gv20-hero-dark:url("/assets/images/site-library/unified-heroes/faq-dark.webp")}
body[data-public-page="partners"]{--gv20-hero-light:url("/assets/images/site-library/unified-heroes/partners-light.webp");--gv20-hero-dark:url("/assets/images/site-library/unified-heroes/partners-dark.webp")}
body[data-public-page="privacy"]{--gv20-hero-light:url("/assets/images/site-library/unified-heroes/privacy-light.webp");--gv20-hero-dark:url("/assets/images/site-library/unified-heroes/privacy-dark.webp")}
body[data-public-page="projects"]{--gv20-hero-light:url("/assets/images/site-library/unified-heroes/projects-light.webp");--gv20-hero-dark:url("/assets/images/site-library/unified-heroes/projects-dark.webp")}
body[data-public-page="real-estate"]{--gv20-hero-light:url("/assets/images/site-library/unified-heroes/real-estate-light.webp");--gv20-hero-dark:url("/assets/images/site-library/unified-heroes/real-estate-dark.webp")}
body[data-public-page="store"]{--gv20-hero-light:url("/assets/images/site-library/unified-heroes/store-light.webp");--gv20-hero-dark:url("/assets/images/site-library/unified-heroes/store-dark.webp")}
body[data-public-page="blog"]{--gv20-hero-light:url("/assets/images/site-library/unified-heroes/blog-light.webp");--gv20-hero-dark:url("/assets/images/site-library/unified-heroes/blog-dark.webp")}
body[data-public-page="about"]{--gv20-hero-light:url("/assets/images/site-library/unified-heroes/about-light.webp");--gv20-hero-dark:url("/assets/images/site-library/unified-heroes/about-dark.webp")}
body[data-public-page="services"]{--gv20-hero-light:url("/assets/images/site-library/unified-heroes/services-light.webp");--gv20-hero-dark:url("/assets/images/site-library/unified-heroes/services-dark.webp")}
body[data-public-page="contact"]{--gv20-hero-light:url("/assets/images/site-library/unified-heroes/contact-light.webp");--gv20-hero-dark:url("/assets/images/site-library/unified-heroes/contact-dark.webp")}
body[data-public-page="vendors"]{--gv20-hero-light:url("/assets/images/site-library/unified-heroes/vendors-light.webp");--gv20-hero-dark:url("/assets/images/site-library/unified-heroes/vendors-dark.webp")}
body[data-public-page="terms"]{--gv20-hero-light:url("/assets/images/site-library/unified-heroes/terms-light.webp");--gv20-hero-dark:url("/assets/images/site-library/unified-heroes/terms-dark.webp")}
body[data-public-page="appointments"]{--gv20-hero-light:url("/assets/images/site-library/unified-heroes/appointments-light.webp");--gv20-hero-dark:url("/assets/images/site-library/unified-heroes/appointments-dark.webp")}

/* Blog uses same central hero; no special oversized lead block. */
.gv-public-site .gv-seo20-blog-hero .gv-site-actions {display:flex;flex-wrap:wrap;gap:10px;margin-top:14px}
.gv-public-site .gv-blog-directory{padding-top:18px!important;scroll-margin-top:120px}
.gv-public-site .gv-blog-tools{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:25px!important}
.gv-public-site .gv-blog-tools label{flex:1 1 240px;min-width:0}
.gv-public-site .gv-blog-tools input{min-height:46px!important}
.gv-public-site .gv-blog-filters{display:flex;flex-wrap:wrap;gap:8px}
.gv-public-site .gv-blog-grid {display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr))!important;align-items:stretch;gap:16px!important}
.gv-public-site .gv-blog-grid .gv-blog-card,.gv-public-site .gv-blog-grid .gv-blog-card.is-featured{
  display:flex!important;grid-column:auto!important;grid-row:auto!important;min-height:0!important;max-height:none!important;
  transform:none;overflow:hidden!important;
}
.gv-public-site .gv-blog-card-media{aspect-ratio:16 / 9!important;min-height:0!important;max-height:190px!important;flex:none!important}
.gv-public-site .gv-blog-card-media img{width:100%!important;height:100%!important;object-fit:cover!important}
.gv-public-site .gv-blog-card-copy{padding:16px!important;display:flex;flex-direction:column;gap:8px}
.gv-public-site .gv-blog-card-copy h3{font-size:clamp(1rem,1.15vw,1.18rem)!important;line-height:1.42!important;margin:0!important;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.gv-public-site .gv-blog-card-copy p{font-size:.88rem!important;line-height:1.6!important;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;margin:0!important}
.gv-public-site .gv-blog-card-copy small{margin-top:auto}
@media(max-width:900px){
 .gv-public-site .gv-site-main > :is(.gv-site-page-hero,.gv-site-hero:not(.is-home)){
  min-height:var(--gv20-tablet)!important;min-block-size:var(--gv20-tablet)!important;
 }
 .gv-public-site .gv-blog-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}
}
@media(max-width:620px){
 .gv-public-site .gv-site-main > :is(.gv-site-page-hero,.gv-site-hero:not(.is-home)){
  min-height:var(--gv20-mobile)!important;min-block-size:var(--gv20-mobile)!important;
  padding:22px!important;align-items:center!important;
 }
 .gv-public-site .gv-site-main > .gv-site-page-hero > div,
 .gv-public-site .gv-site-main > .gv-site-hero:not(.is-home) > .gv-site-hero-copy{
  width:100%!important;max-width:none!important;margin:0!important;
 }
 .gv-public-site .gv-site-main > :is(.gv-site-page-hero,.gv-site-hero:not(.is-home)) h1{font-size:clamp(1.45rem,6vw,2rem)!important}
 .gv-public-site .gv-site-main > :is(.gv-site-page-hero,.gv-site-hero:not(.is-home)) p{font-size:.85rem!important}
 .gv-public-site .gv-blog-grid{grid-template-columns:1fr!important}
 .gv-public-site .gv-blog-card-media{max-height:220px!important}
 html[data-appearance="dark"] .gv-public-site .gv-site-main > :is(.gv-site-page-hero,.gv-site-hero:not(.is-home)){
  background-image:linear-gradient(90deg,rgba(4,19,13,.89),rgba(4,19,13,.65)),var(--gv20-hero-dark,none)!important;
 }
 html[data-appearance="light"] .gv-public-site .gv-site-main > :is(.gv-site-page-hero,.gv-site-hero:not(.is-home)){
  background-image:linear-gradient(90deg,rgba(250,248,243,.9),rgba(250,248,243,.62)),var(--gv20-hero-light,none)!important;
 }
}
@media(prefers-reduced-motion:reduce){.gv-public-site .gv-blog-grid .gv-blog-card{transition:none!important}}


/* ---- hero21 consolidated ---- */
/* GULF VIEW SEO-21 | one canonical image plane, no backgrounds layered over photos.
   Loaded after SEO-18.5 and SEO-20. All rules scoped to public canonical inner heroes. */
.gv-public-site { --gv21-gold:var(--gv-public-outline,color-mix(in srgb,var(--brand-primary) 30%,transparent)); }
.gv-public-site .gv-site-main > section[data-gv21-hero="1"]{
 position:relative!important;isolation:isolate!important;overflow:hidden!important;
 display:flex!important;align-items:center!important;justify-content:flex-start!important;
 box-sizing:border-box!important;min-height:350px!important;min-block-size:350px!important;
 height:auto!important;max-height:none!important;padding:clamp(22px,3.4vw,46px)!important;
 margin-block:0 24px!important;gap:0!important;
 border:1px solid var(--gv21-gold)!important;border-radius:22px!important;
 background-image:none!important;background-color:var(--surface)!important;
 box-shadow:none!important;
}
/* SEO-20 defined a more-specific html[data-appearance] image background.
   Explicitly neutralize it at EQUAL/HIGHER specificity to prevent double images.
   This hero uses the single direct child image as the sole photo layer. */
html[data-appearance="dark"] body.gv-public-site .gv-site-main > section[data-gv21-hero="1"],
html[data-appearance="light"] body.gv-public-site .gv-site-main > section[data-gv21-hero="1"]{
 background-image:none!important;
 background-position:center!important;
 background-repeat:no-repeat!important;
}
/* Hide legacy media wrappers in hero sections; existing images are reused directly. */
body.gv-public-site .gv-site-main > section[data-gv21-hero="1"] > .gv-site-hero-media{display:none!important}
/* One img, sourced from the original central page media, optional dark counterpart. */
.gv-public-site .gv-site-main > section[data-gv21-hero="1"] > img.gv21-hero-photo {
 display:block!important;position:absolute!important;inset:0!important;z-index:0!important;
 width:100%!important;height:100%!important;max-width:none!important;max-height:none!important;
 padding:0!important;margin:0!important;aspect-ratio:auto!important;
 border:0!important;border-radius:0!important;object-fit:cover!important;
 object-position:center!important;opacity:1!important;filter:none!important;
 pointer-events:none!important;transform:none!important;
}
/* The frame is a separate foreground stroke. It never inherits image opacity or filter. */
.gv-public-site .gv-site-main > section[data-gv21-hero="1"]::before{
 content:""!important;position:absolute!important;inset:12px!important;z-index:5!important;
 display:block!important;pointer-events:none!important;
 border:1px solid color-mix(in srgb,var(--gv21-gold) 65%,transparent)!important;border-radius:14px!important;
 background:none!important;opacity:1!important;filter:none!important;
}
.gv-public-site .gv-site-main > section[data-gv21-hero="1"]::after{
 content:""!important;position:absolute!important;inset:0!important;z-index:1!important;
 display:block!important;pointer-events:none!important;opacity:1!important;
 background-size:100% 100%!important;backdrop-filter:none!important;
}
html[data-appearance="dark"] .gv-public-site .gv-site-main > section[data-gv21-hero="1"]::after{
 background:linear-gradient(to left,rgba(4,18,13,.76) 0%,rgba(4,18,13,.56) 27%,rgba(4,18,13,.12) 52%,transparent 75%)!important;
}
html[data-appearance="light"] .gv-public-site .gv-site-main > section[data-gv21-hero="1"]::after{
 background:linear-gradient(to left,rgba(250,248,244,.88) 0%,rgba(250,248,244,.66) 28%,rgba(250,248,244,.10) 52%,transparent 76%)!important;
}
html[dir="ltr"][data-appearance="dark"] .gv-public-site .gv-site-main > section[data-gv21-hero="1"]::after{
 background:linear-gradient(to right,rgba(4,18,13,.76) 0%,rgba(4,18,13,.56) 27%,rgba(4,18,13,.12) 52%,transparent 75%)!important;
}
html[dir="ltr"][data-appearance="light"] .gv-public-site .gv-site-main > section[data-gv21-hero="1"]::after{
 background:linear-gradient(to right,rgba(250,248,244,.88) 0%,rgba(250,248,244,.66) 28%,rgba(250,248,244,.10) 52%,transparent 76%)!important;
}
.gv-public-site .gv-site-main > section[data-gv21-hero="1"] > div,
.gv-public-site .gv-site-main > section[data-gv21-hero="1"] > .gv-site-hero-copy{
 position:relative!important;z-index:3!important;box-sizing:border-box!important;
 width:min(620px,61%)!important;max-width:620px!important;min-width:0!important;
 margin:0!important;padding:0!important;
 flex:0 1 620px!important;grid-area:auto!important;
 color:var(--text)!important;text-align:start!important;
}
.gv-public-site .gv-site-main > section[data-gv21-hero="1"] h1{
 margin:6px 0 10px!important;font-size:clamp(1.55rem,2.8vw,2.45rem)!important;
 line-height:1.22!important;letter-spacing:normal!important;max-width:none!important;
 text-wrap:balance!important;color:inherit!important;
}
.gv-public-site .gv-site-main > section[data-gv21-hero="1"] p{
 margin:0 0 14px!important;font-size:clamp(.85rem,1vw,1rem)!important;
 line-height:1.75!important;max-width:55ch!important;
 color:inherit!important;opacity:.92!important;text-wrap:pretty!important;
 display:-webkit-box!important;-webkit-box-orient:vertical!important;-webkit-line-clamp:3!important;overflow:hidden!important;
}
html[data-appearance="dark"] .gv-public-site .gv-site-main > section[data-gv21-hero="1"] > div{color:#f7f5f0!important}
html[data-appearance="light"] .gv-public-site .gv-site-main > section[data-gv21-hero="1"] > div{color:#1d2d23!important}
.gv-public-site .gv-site-main > section[data-gv21-hero="1"] .gv-site-kicker{
 color:var(--brand-primary)!important;font-size:.75rem!important;font-weight:800!important;
}
.gv-public-site .gv-site-main > section[data-gv21-hero="1"] .gv-site-actions{
 display:flex!important;flex-wrap:wrap!important;gap:10px!important;align-items:center!important;
 margin-top:12px!important;padding:0!important;min-height:0!important;
}
.gv-public-site .gv-site-main > section[data-gv21-hero="1"] .gv-site-actions .gv-site-button{
 min-height:42px!important;max-height:none!important;padding:10px 20px!important;
 font-size:.87rem!important;border-radius:11px!important;width:auto!important;
}
/* Keep soft-gold strokes separate from every background image in both themes. */
.gv-public-site .gv-site-main > section[data-gv21-hero="1"],
.gv-public-site .gv-site-main > section[data-gv21-hero="1"]::before{border-color:var(--gv21-gold)!important}
/* Five service benefit panels: one line on large screens, compact consistent geometry. */
@media(min-width:1080px){
 
}




@media(min-width:640px) and (max-width:1079px){
 
}
@media(max-width:900px){
 .gv-public-site .gv-site-main > section[data-gv21-hero="1"]{min-height:300px!important;min-block-size:300px!important}
}
@media(max-width:620px){
 .gv-public-site .gv-site-main > section[data-gv21-hero="1"]{
   min-height:240px!important;min-block-size:240px!important;
   padding:22px!important;display:flex!important;
 }
 .gv-public-site .gv-site-main > section[data-gv21-hero="1"]::before{inset:9px!important;border-radius:12px!important}
 .gv-public-site .gv-site-main > section[data-gv21-hero="1"] > div{
   width:100%!important;max-width:none!important;flex:1 1 auto!important;
   padding:0!important;margin:0!important;
 }
 .gv-public-site .gv-site-main > section[data-gv21-hero="1"] h1{font-size:clamp(1.4rem,5vw,1.8rem)!important}
 .gv-public-site .gv-site-main > section[data-gv21-hero="1"] p{font-size:.85rem!important;-webkit-line-clamp:3!important}
 .gv-public-site .gv-site-main > section[data-gv21-hero="1"] .gv-site-actions .gv-site-button{min-height:39px!important;padding:8px 12px!important;font-size:.79rem!important}
 
 html[data-appearance="dark"] .gv-public-site .gv-site-main > section[data-gv21-hero="1"]::after{background:linear-gradient(to left,rgba(4,18,13,.77),rgba(4,18,13,.44))!important}
 html[data-appearance="light"] .gv-public-site .gv-site-main > section[data-gv21-hero="1"]::after{background:linear-gradient(to left,rgba(250,248,244,.88),rgba(250,248,244,.44))!important}
}
@media(prefers-reduced-motion:reduce){.gv-public-site .gv-site-main > section[data-gv21-hero="1"] *{transition:none!important}}
/* Explicitly outrank SEO-20's theme-specific !important background rules.
   Otherwise a duplicate photograph layer would survive in some page variants. */
html[data-appearance="dark"] body.gv-public-site .gv-site-main > section.gv-site-page-hero[data-gv21-hero="1"],
html[data-appearance="light"] body.gv-public-site .gv-site-main > section.gv-site-page-hero[data-gv21-hero="1"]{
  background-image:none!important;
  background-size:auto!important;
}
html[data-appearance] body.gv-public-site .gv-site-main > section.gv-site-page-hero[data-gv21-hero="1"] > div{
  width:min(620px,61%)!important;max-width:620px!important;min-width:0!important;
  padding:0!important;margin:0!important;grid-area:auto!important;
  position:relative!important;z-index:3!important;text-align:start!important;
}
html[data-appearance="dark"] body.gv-public-site .gv-site-main > section.gv-site-page-hero[data-gv21-hero="1"] :is(h1,p){
  color:#f7f5f0!important;
}
html[data-appearance="light"] body.gv-public-site .gv-site-main > section.gv-site-page-hero[data-gv21-hero="1"] :is(h1,p){
  color:#1d2d23!important;
}
@media(max-width:620px){
 html[data-appearance] body.gv-public-site .gv-site-main > section.gv-site-page-hero[data-gv21-hero="1"] > div{
  width:100%!important;max-width:none!important;
 }
}

/* SEO-20.2: shared page-section geometry. Counts come from the website-section record.
   No cards are hidden, duplicated or silently removed. */
@media(min-width:1080px){
 
 
 
 
}
/* Timeline stage connectors must start/end at first/last badge, regardless of stage count. */
@media(min-width:1025px){
 
 
}
/* Only long service titles receive a smaller desktop type scale; never crop text on phones. */
@media(min-width:1220px){
 body.gv-public-site .gv-site-main > section[data-gv21-title-compact="1"] h1{
  font-size:clamp(1.4rem,1.8vw,1.85rem)!important;white-space:nowrap!important;
  max-width:100%!important;text-wrap:nowrap!important;
 }
 body.gv-public-site .gv-site-main > section[data-gv21-title-compact="1"] > div{
  width:min(800px,76%)!important;max-width:800px!important;flex-basis:800px!important;
 }
}
@media(max-width:1219px){
 body.gv-public-site .gv-site-main > section[data-gv21-title-compact="1"] h1{white-space:normal!important;text-wrap:balance!important}
}

/* SEO-21.1: Banner polish across RTL/LTR, a stable single image plane and CTAs. */
body.gv-public-site .gv-site-main > section[data-gv21-hero="1"] > img.gv21-hero-photo{
    display:block!important;object-fit:cover!important;object-position:center center!important;
    min-height:100%!important;min-width:100%!important;
}
body.gv-public-site .gv-site-main > section[data-gv21-hero="1"] > .gv21-hero-photo[style*="display: none"]{display:none!important}
body.gv-public-site .gv-site-main > section[data-gv21-hero="1"] .gv21-hero-actions{
    align-items:center!important;justify-content:flex-start!important;
}
body.gv-public-site .gv-site-main > section[data-gv21-hero="1"] .gv21-hero-actions a{
    white-space:normal!important;text-align:center!important;overflow-wrap:anywhere;
}
@media (max-width:620px){
 body.gv-public-site .gv-site-main > section[data-gv21-hero="1"]{min-height:270px!important}
 body.gv-public-site .gv-site-main > section[data-gv21-hero="1"] .gv-site-actions{gap:8px!important}
}


/* ---- Core component contracts ---- */
/* Gulf View Central Public UI — unified ownership for visual media, editorial cards,
   data listings and process timelines (SEO-21.4). No global display overrides.
   The dynamic page renderer provides content, item counts and semantic grid classes.
   Marketing: centered flexible rows. Listings: stable grid/card-height contract. */
/* Gulf View SEO-21.2 — repair service imagery + unified feature/timeline layout.
   Loaded LAST. Scoped to public pages; no backend, data or header changes. */

/* A. Photo restoration: no dark-resized imagery, opacity, filters or full-surface shade. */
html body.gv-public-site .gv-site-main > section[data-gv21-hero="1"] > img.gv21-hero-photo{
  opacity:1!important;filter:none!important;mix-blend-mode:normal!important;
  object-fit:cover!important;object-position:center!important;
}
html body.gv-public-site .gv-site-main > section[data-gv21-hero="1"] {
  background-image:none!important;box-shadow:none!important;
}
/* The photos occupy the whole banner and remain completely visible on their left half.
   A localized contrast scrim exists ONLY behind copy, not across the photograph. */
html[data-appearance="dark"] body.gv-public-site .gv-site-main > section[data-gv21-hero="1"]::after,
html[data-appearance="dark"] body.gv-public-site .gv-site-main > section.gv-site-page-hero[data-gv21-hero="1"]::after{
  background:linear-gradient(to left, rgba(4,20,15,.83) 0%,rgba(4,20,15,.70) 24%,rgba(4,20,15,.35) 42%,rgba(4,20,15,0) 66%)!important;
  opacity:1!important;filter:none!important;backdrop-filter:none!important;
}
html[data-appearance="light"] body.gv-public-site .gv-site-main > section[data-gv21-hero="1"]::after,
html[data-appearance="light"] body.gv-public-site .gv-site-main > section.gv-site-page-hero[data-gv21-hero="1"]::after{
  background:linear-gradient(to left,rgba(250,249,246,.97) 0%,rgba(250,249,246,.84) 25%,rgba(250,249,246,.36) 44%,rgba(250,249,246,0) 68%)!important;
  opacity:1!important;filter:none!important;backdrop-filter:none!important;
}
html[dir="ltr"][data-appearance="dark"] body.gv-public-site .gv-site-main > section[data-gv21-hero="1"]::after{
 background:linear-gradient(to right,rgba(4,20,15,.83) 0%,rgba(4,20,15,.70) 24%,rgba(4,20,15,.35) 42%,transparent 66%)!important;
}
html[dir="ltr"][data-appearance="light"] body.gv-public-site .gv-site-main > section[data-gv21-hero="1"]::after{
 background:linear-gradient(to right,rgba(250,249,246,.97) 0%,rgba(250,249,246,.84) 25%,rgba(250,249,246,.36) 44%,transparent 68%)!important;
}
html[data-appearance="dark"] body.gv-public-site .gv-site-main > section[data-gv21-hero="1"] > div,
html[data-appearance="dark"] body.gv-public-site .gv-site-main > section.gv-site-page-hero[data-gv21-hero="1"] :is(h1,p){color:#fff!important;}
html[data-appearance="light"] body.gv-public-site .gv-site-main > section[data-gv21-hero="1"] > div,
html[data-appearance="light"] body.gv-public-site .gv-site-main > section.gv-site-page-hero[data-gv21-hero="1"] :is(h1,p){color:#16291f!important;}


@media(max-width:620px){
 html[data-appearance="dark"] body.gv-public-site .gv-site-main > section[data-gv21-hero="1"]::after{background:linear-gradient(to bottom,rgba(4,20,15,.06),rgba(4,20,15,.28) 30%,rgba(4,20,15,.82))!important}
 html[data-appearance="light"] body.gv-public-site .gv-site-main > section[data-gv21-hero="1"]::after{background:linear-gradient(to bottom,rgba(250,249,246,.04),rgba(250,249,246,.44) 32%,rgba(250,249,246,.96))!important}
}

/* TYPOLOGY 1 — informational boxes: centered even when the last row is incomplete. */
html body.gv-public-site .gv-site-main :is(.gv-site-grid,.gv-site-service-grid,.gv-home-audience-grid,.gv-branch-grid,.gv-blog-grid,.gv-project-case-grid,.gv-t214-path-grid){
  display:flex!important; flex-flow:row wrap!important; justify-content:center!important;
  align-items:stretch!important; gap:clamp(12px,1.2vw,18px)!important;
  margin-inline:auto!important; max-width:100%!important;
}
html body.gv-public-site .gv-site-main :is(.gv-site-grid,.gv-site-service-grid,.gv-home-audience-grid,.gv-branch-grid,.gv-blog-grid,.gv-project-case-grid,.gv-t214-path-grid) > *{
  box-sizing:border-box!important; flex:0 1 clamp(260px,calc((100% - 36px)/3),385px)!important;
  min-width:0!important;max-width:100%!important; margin-inline:0!important;
}
/* Numbered feature boxes are informational, not job/store/property result cards. */
html body.gv-public-site .gv-site-main .gv-site-feature-grid[data-gv-feature-count]{
  display:flex!important; flex-flow:row wrap!important; justify-content:center!important;
  align-items:stretch!important; gap:clamp(10px,1vw,15px)!important;
  margin-inline:auto!important; max-width:100%!important;
}
html body.gv-public-site .gv-site-main .gv-site-feature-grid[data-gv-feature-count] > .gv-site-feature-card{
  box-sizing:border-box!important;flex:0 1 245px!important;min-width:0!important;max-width:100%!important;
  min-height:154px!important;display:flex!important;flex-direction:column!important;
  align-items:center!important;justify-content:flex-start!important;text-align:center!important;
  gap:10px!important;padding:clamp(14px,1.3vw,20px)!important;
}
html body.gv-public-site .gv-site-main .gv-site-feature-card :is(h3,p){text-align:center!important;margin-inline:auto!important}
html body.gv-public-site .gv-site-main .gv-site-feature-card .gv-site-feature-index{margin-inline:auto!important}
@media(min-width:1200px){
 html body.gv-public-site .gv-site-main .gv-site-feature-grid[data-gv-feature-count="6"] > .gv-site-feature-card{
  flex-basis:calc((100% - 5 * clamp(10px,1vw,15px))/6)!important;
 }
}
@media(min-width:700px) and (max-width:1199px){
 html body.gv-public-site .gv-site-main .gv-site-feature-grid[data-gv-feature-count] > .gv-site-feature-card{
  flex-basis:calc((100% - 28px)/3)!important;max-width:290px!important;
 }
}
@media(min-width:450px) and (max-width:699px){
 html body.gv-public-site .gv-site-main .gv-site-feature-grid[data-gv-feature-count] > .gv-site-feature-card{
  flex-basis:calc((100% - 12px)/2)!important;
 }
}
@media(max-width:449px){
 html body.gv-public-site .gv-site-main .gv-site-feature-grid[data-gv-feature-count] > .gv-site-feature-card{
  flex-basis:min(100%,380px)!important;
 }
 html body.gv-public-site .gv-site-main :is(.gv-site-grid,.gv-site-service-grid,.gv-home-audience-grid,.gv-branch-grid,.gv-blog-grid,.gv-project-case-grid,.gv-t214-path-grid) > *{flex-basis:100%!important;}
}

/* TYPOLOGY 2 — database-backed listing results: native GRID, never FLEX.
   8, 6 or 4 virtual tracks make one, two or three orphan cards center dynamically;
   all other cards retain equal row heights and bottom-anchored action buttons. */
html body.gv-public-site .gv-site-main :is(.gv-public-card-grid,.gv-site-products){
  display:grid!important;grid-template-columns:repeat(8,minmax(0,1fr))!important;
  column-gap:0!important;row-gap:16px!important;
  align-items:stretch!important;justify-content:stretch!important;
  width:100%!important;max-width:100%!important;margin-inline:auto!important;
}
html body.gv-public-site .gv-site-main :is(.gv-public-card-grid,.gv-site-products) > :not([hidden]){
  box-sizing:border-box!important;grid-column:span 2;
  width:calc(100% - 12px)!important;max-width:430px!important;
  min-width:0!important;height:100%!important;margin-inline:auto!important;
  flex:none!important;align-self:stretch!important;justify-self:center!important;
}
@media(min-width:1281px){
 html body.gv-public-site .gv-site-main :is(.gv-public-card-grid,.gv-site-products) > :last-child:nth-child(4n + 1){grid-column:4/span 2!important}
 html body.gv-public-site .gv-site-main :is(.gv-public-card-grid,.gv-site-products) > :nth-last-child(2):nth-child(4n + 1){grid-column:3/span 2!important}
 html body.gv-public-site .gv-site-main :is(.gv-public-card-grid,.gv-site-products) > :nth-last-child(3):nth-child(4n + 1){grid-column:2/span 2!important}
}
@media(min-width:901px) and (max-width:1280px){
 html body.gv-public-site .gv-site-main :is(.gv-public-card-grid,.gv-site-products){grid-template-columns:repeat(6,minmax(0,1fr))!important}
 html body.gv-public-site .gv-site-main :is(.gv-public-card-grid,.gv-site-products) > :last-child:nth-child(3n + 1){grid-column:3/span 2!important}
 html body.gv-public-site .gv-site-main :is(.gv-public-card-grid,.gv-site-products) > :nth-last-child(2):nth-child(3n + 1){grid-column:2/span 2!important}
}
@media(min-width:621px) and (max-width:900px){
 html body.gv-public-site .gv-site-main :is(.gv-public-card-grid,.gv-site-products){grid-template-columns:repeat(4,minmax(0,1fr))!important}
 html body.gv-public-site .gv-site-main :is(.gv-public-card-grid,.gv-site-products) > :last-child:nth-child(2n + 1){grid-column:2/span 2!important}
}
@media(max-width:620px){
 html body.gv-public-site .gv-site-main :is(.gv-public-card-grid,.gv-site-products){grid-template-columns:minmax(0,1fr)!important}
 html body.gv-public-site .gv-site-main :is(.gv-public-card-grid,.gv-site-products) > :not([hidden]){
  grid-column:1!important;width:100%!important;max-width:430px!important;
 }
}
/* Keep original semantic card internals, including action alignment. */
html body.gv-public-site .gv-site-main .gv-public-card-grid > .gv-public-card{
  display:flex!important;flex-direction:column!important;
}
html body.gv-public-site .gv-site-main .gv-public-card-grid .gv-public-card-body{flex:1 1 auto!important}
html body.gv-public-site .gv-site-main .gv-public-card-grid .gv-public-card-actions{margin-top:auto!important}

/* TYPOLOGY 3 — ONE canonical, data-driven process line (SEO-21.7).
   Uses the stable 21.5 PHP timeline classes, rather than the incompatible
   21.6 class switch. The line exists only between adjacent badges.
   A scroll viewport contains any overflow on mobile, never the entire page. */
html body.gv-public-site .gv-site-main .gv-site-timeline-section{overflow:visible!important}
html body.gv-public-site .gv-site-main .gv-timeline-viewport{
 display:block!important;
 box-sizing:border-box!important;
 width:100%!important;
 max-width:100%!important;
 overflow-x:auto!important;
 overflow-y:hidden!important;
 margin-inline:auto!important;
 padding:0 0 8px!important;
 scrollbar-width:thin;
}
html body.gv-public-site .gv-site-main ol.gv-site-timeline[data-step-count]{
 --gv-step-width:clamp(178px,13vw,212px);
 display:flex!important;
 flex-direction:row!important;
 flex-wrap:nowrap!important;
 align-items:flex-start!important;
 justify-content:flex-start!important;
 box-sizing:border-box!important;
 position:relative!important;
 width:max-content!important;
 min-width:0!important;
 max-width:none!important;
 margin-inline:auto!important;
 padding:0 0 16px!important;
 gap:0!important;
 border:0!important;
 list-style:none!important;
 isolation:isolate!important;
 overflow:visible!important;
}
/* Disable the old app.css full-width connector definitively; one line per gap only. */
html body.gv-public-site .gv-site-main ol.gv-site-timeline[data-step-count]::before{
 content:none!important;display:none!important;background:none!important;
}
html body.gv-public-site .gv-site-main ol.gv-site-timeline[data-step-count] > li.gv-site-timeline-step{
 box-sizing:border-box!important;
 position:relative!important;
 display:flex!important;
 flex:0 0 var(--gv-step-width)!important;
 flex-direction:column!important;
 align-items:center!important;
 justify-content:flex-start!important;
 min-width:0!important;
 max-width:none!important;
 gap:11px!important;
 margin:0!important;
 padding:0 10px!important;
 border:0!important;
 background:transparent!important;
 box-shadow:none!important;
 text-align:center!important;
 z-index:1!important;
}
/* Exactly N-1 connectors. RTL/LTR aware; centered badge to centered badge. */
html body.gv-public-site .gv-site-main ol.gv-site-timeline[data-step-count] > li.gv-site-timeline-step:not(:last-child)::after{
 content:""!important;
 display:block!important;
 position:absolute!important;
 top:25px!important;
 bottom:auto!important;
 inset-inline-start:50%!important;
 inset-inline-end:auto!important;
 width:100%!important;
 height:2px!important;
 border:0!important;
 border-radius:0!important;
 background:var(--brand-primary)!important;
 opacity:.78!important;
 box-shadow:none!important;
 z-index:-1!important;
 pointer-events:none!important;
}
html body.gv-public-site .gv-site-main ol.gv-site-timeline[data-step-count] > li.gv-site-timeline-step:last-child::after{
 content:none!important;display:none!important;
}
html body.gv-public-site .gv-site-main ol.gv-site-timeline[data-step-count] .gv-site-timeline-number{
 box-sizing:border-box!important;
 position:relative!important;
 z-index:3!important;
 display:grid!important;
 place-items:center!important;
 width:52px!important;
 height:52px!important;
 flex:0 0 52px!important;
 margin:0 auto!important;
 border:2px solid var(--brand-primary)!important;
 border-radius:50%!important;
 background:var(--surface)!important;
 box-shadow:none!important;
 color:var(--brand-primary)!important;
}
html body.gv-public-site .gv-site-main ol.gv-site-timeline[data-step-count] .gv-site-timeline-number svg{
 display:block!important;width:22px!important;height:22px!important;
}
html body.gv-public-site .gv-site-main ol.gv-site-timeline[data-step-count] .gv-site-timeline-step > div{
 padding:0!important;text-align:center!important;
}
@media(max-width:1049px){
 html body.gv-public-site .gv-site-main ol.gv-site-timeline[data-step-count]{--gv-step-width:188px;}
}
@media(max-width:620px){
 html body.gv-public-site .gv-site-main ol.gv-site-timeline[data-step-count]{--gv-step-width:170px;}
}
@media(prefers-reduced-motion:reduce){
 html body.gv-public-site .gv-site-main .gv-timeline-viewport{scroll-behavior:auto!important;}
}

/* Branch cards come from core_tenant_branches and stay in ONE centered group.
   Primary branch (Khobar) first, then Riyadh and Muscat by registered sort order. */
html body.gv-public-site .gv-site-main .gv-branch-network .gv-branch-directory{
 display:flex!important;
 flex-direction:row!important;
 justify-content:center!important;
 align-items:stretch!important;
 flex-wrap:wrap!important;
 gap:18px!important;
 width:100%!important;
 max-width:100%!important;
 margin-inline:auto!important;
}
html body.gv-public-site .gv-site-main .gv-branch-directory > article.gv-branch-card{
 box-sizing:border-box!important;
 flex:0 1 clamp(280px,calc((100% - 36px)/3),405px)!important;
 display:flex!important;
 flex-direction:column!important;
 justify-content:space-between!important;
 gap:20px!important;
 min-width:0!important;
 min-height:260px!important;
 max-width:100%!important;
 height:auto!important;
 margin:0!important;
 padding:clamp(19px,1.6vw,25px)!important;
 text-align:start!important;
}
html body.gv-public-site .gv-site-main .gv-branch-directory > article.gv-branch-card.is-headquarters{
 border-color:color-mix(in srgb,var(--brand-primary) 56%,transparent)!important;
}
html body.gv-public-site .gv-site-main .gv-branch-directory .gv-branch-card-heading{
 display:flex!important;
 flex-wrap:wrap!important;
 align-items:baseline!important;
 gap:4px 11px!important;
 margin:15px 0 12px!important;
}
html body.gv-public-site .gv-site-main .gv-branch-directory .gv-branch-card-heading h3{
 margin:0!important;
 font-size:clamp(1.1rem,1.5vw,1.5rem)!important;
 line-height:1.5!important;
}
html body.gv-public-site .gv-site-main .gv-branch-directory .gv-branch-country{
 color:var(--text-muted)!important;
 font-size:.75rem!important;
 font-weight:500!important;
 line-height:1.5!important;
}
html body.gv-public-site .gv-site-main .gv-branch-directory .gv-branch-card-actions{
 display:flex!important;flex-wrap:wrap!important;align-items:center!important;
 gap:10px 20px!important;
}
@media(min-width:651px) and (max-width:990px){
 html body.gv-public-site .gv-site-main .gv-branch-directory > article.gv-branch-card{
  flex-basis:calc((100% - 18px)/2)!important;
 }
}
@media(max-width:650px){
 html body.gv-public-site .gv-site-main .gv-branch-directory > article.gv-branch-card{
  flex:0 1 min(100%,440px)!important;
 }
}




html body.gv-public-site .gv-site-main .gv-site-feature-card .gv-site-feature-index svg{
  display:block!important;
  width:20px!important;
  height:20px!important;
}
html body.gv-public-site .gv-site-main .gv-site-feature-card .gv-site-feature-index{
  display:grid!important;
  place-items:center!important;
  color:var(--brand-primary)!important;
}
html body.gv-public-site .gv-site-main .gv-branch-routing{
  order:-1!important;
  margin-bottom:clamp(18px,2vw,24px)!important;
}
html body.gv-public-site .gv-site-main .gv-branch-directory{
  margin-top:0!important;
}
