
/* ==========================================================================
   Revelate — front-end design system
   Native WordPress blocks remain the content model. This stylesheet provides
   layout, art direction and responsive behaviour without hiding editability.
   ========================================================================== */

:root{
  --rv-accent:#B88B45;
  --rv-ink:#0D1B16;
  --rv-forest:#18382D;
  --rv-cream:#F5F0E7;
  --rv-paper:#FBF8F2;
  --rv-white:#FFFFFF;
  --rv-text:#18251F;
  --rv-muted:#5A6861;
  --rv-border:rgba(13,27,22,.15);
  --rv-shadow:0 22px 70px rgba(13,27,22,.10);
  --rv-surface-shadow:none;
  --rv-image-shadow:none;
  --rv-image-border:0px;
  --rv-sans:-apple-system,BlinkMacSystemFont,"Segoe UI",Inter,Arial,sans-serif;
  --rv-serif:Georgia,"Times New Roman",serif;
  --rv-shell-max:1320px;
  --rv-prose-max:760px;
  --rv-shell:min(var(--rv-shell-max),calc(100vw - 48px));
  --rv-prose:min(var(--rv-prose-max),calc(100vw - 48px));
  --rv-header-h:88px;
  --rv-page-title-size:clamp(2.5rem,4.6vw,4.25rem);
  --rv-section-title-size:clamp(2.05rem,3.4vw,3.25rem);
  --rv-hero-title-size:clamp(2.8rem,5.2vw,4.65rem);
  --rv-monumental-title-size:clamp(3rem,5.8vw,5rem);
  --rv-page-header-title-size:clamp(2.5rem,4.7vw,4.2rem);
  --rv-image-hero-title-size:clamp(2.8rem,5.2vw,4.75rem);
  --rv-intro-title-size:clamp(2.15rem,3.6vw,3.45rem);
  --rv-heading-tracking:-.02em;
  --rv-display-tracking:-.028em;
  --rv-hero-editorial-min:clamp(600px,78vh,820px);
  --rv-hero-media-min:640px;
  --rv-hero-monumental-min:640px;
  --rv-hero-image-min:clamp(560px,82vh,840px);
  --rv-ease:cubic-bezier(.2,.65,.25,1);
}

*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  margin:0;
  background:var(--rv-paper);
  color:var(--rv-text);
  font-family:var(--rv-sans);
  font-size:17px;
  line-height:1.7;
  text-rendering:optimizeLegibility;
  -webkit-font-smoothing:antialiased;
}
img{max-width:100%;height:auto}
a{color:inherit}
button,input,textarea,select{font:inherit}
button{cursor:pointer}
::selection{background:var(--rv-accent);color:var(--rv-ink)}
:where(a,button,input,textarea,select,summary):focus-visible{
  outline:3px solid var(--rv-accent);
  outline-offset:4px;
}
.screen-reader-text{
  position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;
  clip:rect(0,0,0,0);white-space:nowrap;border:0
}
.screen-reader-text:focus{
  top:12px;left:12px;z-index:99999;width:auto;height:auto;padding:10px 14px;margin:0;
  clip:auto;background:#fff;color:#111;white-space:normal;border-radius:2px
}
.rv-skip-link{font-weight:700}

h1,h2,h3,h4,h5,h6{
  font-family:var(--rv-serif);
  font-weight:500;
  letter-spacing:var(--rv-heading-tracking,-.02em);
  color:var(--rv-ink);
}
p{margin-top:0}
.entry-content a:not(.wp-block-button__link):not(.rv-text-link){
  text-decoration:underline;
  text-decoration-thickness:.08em;
  text-underline-offset:.16em
}

/* ----- Header ----- */
.site-header{
  position:relative;
  z-index:1000;
  width:100%;
  background:rgba(251,248,242,.96);
  border-bottom:1px solid var(--rv-border);
  transition:background-color .25s ease,border-color .25s ease,box-shadow .25s ease,transform .25s ease
}
.revelate-sticky-header .site-header{position:sticky;top:0}
.admin-bar.revelate-sticky-header .site-header{top:32px}
.rv-header-shell{
  width:var(--rv-shell);
  height:var(--rv-header-h);
  margin:0 auto;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:28px
}
.site-branding{display:flex;align-items:center;min-width:0}
.custom-logo-link{display:inline-flex;align-items:center}
.custom-logo{display:block;max-height:48px;width:auto}
.rv-site-name{
  font-family:var(--rv-serif);
  font-size:26px;
  font-weight:600;
  line-height:1;
  letter-spacing:-.025em;
  text-decoration:none;
  color:var(--rv-ink)
}
.primary-navigation{
  display:flex;
  align-items:center;
  gap:26px
}
.primary-navigation #primary-menu{
  display:flex;
  align-items:center;
  gap:25px;
  list-style:none;
  padding:0;
  margin:0
}
.primary-navigation a{
  min-height:44px;
  display:inline-flex;
  align-items:center;
  color:var(--rv-ink);
  font-size:16px;
  font-weight:600;
  text-decoration:none;
  position:relative
}
.primary-navigation .rv-nav-link::after{
  content:"";
  position:absolute;
  left:0;right:100%;bottom:7px;
  height:1px;
  background:currentColor;
  transition:right .25s ease
}
.primary-navigation .rv-nav-link:hover::after,
.primary-navigation .current-menu-item>.rv-nav-link::after{right:0}
.rv-header-cta{
  padding:0 16px;
  border:1px solid var(--rv-ink);
  gap:8px;
  transition:background .2s ease,color .2s ease,transform .2s ease
}
.rv-header-cta:hover{background:var(--rv-ink);color:#fff;transform:translateY(-1px)}
.rv-menu-toggle{
  display:none;
  align-items:center;
  gap:12px;
  min-height:44px;
  border:0;
  background:transparent;
  color:var(--rv-ink);
  padding:8px 0;
  font-size:16px;
  font-weight:700
}
.rv-menu-icon{display:grid;gap:5px;width:24px}
.rv-menu-icon span{display:block;height:2px;background:currentColor;transition:transform .2s ease}
.rv-menu-toggle[aria-expanded="true"] .rv-menu-icon span:first-child{transform:translateY(3.5px) rotate(45deg)}
.rv-menu-toggle[aria-expanded="true"] .rv-menu-icon span:last-child{transform:translateY(-3.5px) rotate(-45deg)}

.rv-header-overlay-light .site-header{
  position:absolute;
  top:0;
  left:0;
  background:linear-gradient(to bottom,rgba(5,18,14,.72),rgba(5,18,14,0));
  border-bottom-color:transparent;
  color:#fff
}
.admin-bar.rv-header-overlay-light .site-header{top:32px}
.rv-header-overlay-light .site-header .rv-site-name,
.rv-header-overlay-light .site-header .primary-navigation a,
.rv-header-overlay-light .site-header .rv-menu-toggle{color:#fff}
.rv-header-overlay-light .site-header .custom-logo{filter:none}
.rv-header-overlay-light .site-header .rv-header-cta{border-color:#fff}
.rv-header-overlay-light .site-header.is-scrolled{
  position:fixed;
  background:rgba(13,27,22,.97);
  background:color-mix(in srgb,var(--rv-ink) 97%,transparent);
  border-bottom-color:rgba(255,255,255,.12);
  box-shadow:0 8px 30px rgba(0,0,0,.12)
}
.admin-bar.rv-header-overlay-light .site-header.is-scrolled{top:32px}

/* ----- General content ----- */
.site-main{min-height:55vh}
.rv-content-shell{
  width:var(--rv-shell);
  margin:0 auto;
  padding:100px 0 120px
}
.rv-article-shell{max-width:980px}
.rv-entry-header{margin-bottom:52px}
.rv-page-title,
.rv-archive-header h1{
  max-width:18ch;
  margin:0;
  font-size:var(--rv-page-title-size);
  line-height:.93
}
.rv-featured-image{margin:0 0 64px}
.rv-featured-image img{width:100%;display:block}
.entry-content>*:not(.alignwide):not(.alignfull){
  max-width:var(--rv-prose);
  margin-left:auto;
  margin-right:auto
}
.entry-content>.alignwide{max-width:var(--rv-shell);margin-left:auto;margin-right:auto}
.entry-content>.alignfull{width:100%;max-width:none}
/* Native block typography must win when a user chooses a font size in Gutenberg.
   Preserve the existing 18px fallback for unstyled body copy only. */
.entry-content>p:not([class*="-font-size"]):not([style*="font-size"]),
.entry-content>ul:not([class*="-font-size"]):not([style*="font-size"]),
.entry-content>ol:not([class*="-font-size"]):not([style*="font-size"]){font-size:18px}
.rv-kicker{
  margin:0 0 16px;
  font-family:var(--rv-sans);
  font-size:16px;
  line-height:1.3;
  font-weight:700;
  text-transform:uppercase;
  letter-spacing:.14em;
  color:var(--rv-muted)
}
.rv-prose{max-width:720px}
.rv-prose p{font-size:18px;line-height:1.8}
.rv-text-link{
  min-height:44px;
  display:inline-flex;
  align-items:center;
  gap:10px;
  text-decoration:none;
  font-weight:700;
  border-bottom:1px solid currentColor
}
.rv-button,
.wp-block-button__link{
  min-height:48px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  border-radius:var(--rv-btn-radius,0px);
  font-weight:700;
  text-decoration:none!important;
  transition:transform .2s ease,background-color .2s ease,color .2s ease,border-color .2s ease
}
.rv-button:hover,
.wp-block-button__link:hover{transform:translateY(-2px)}

/* ----- Core block style variations ----- */
.wp-block-image.is-style-revelate-frame{
  position:relative;
  padding:14px;
  background:var(--rv-cream)
}
.wp-block-image.is-style-revelate-frame::after{
  content:"";
  position:absolute;
  inset:0;
  border:1px solid rgba(13,27,22,.18);
  pointer-events:none
}
/* Two on-brand photo treatments: a duotone tinted from the site's own ink
   and accent colours (never a fixed colour, so it always matches whatever
   palette a project uses), and a fine grain for an editorial, less-stock
   feel. Both are pure CSS, applied via a pseudo-element so the original
   image file is never touched or duplicated. */
.wp-block-image.is-style-revelate-duotone{position:relative}
.wp-block-image.is-style-revelate-duotone img{
  filter:grayscale(1) contrast(1.08)
}
.wp-block-image.is-style-revelate-duotone::after{
  content:"";
  position:absolute;
  inset:0;
  background:linear-gradient(135deg,var(--rv-ink),var(--rv-accent));
  mix-blend-mode:color;
  pointer-events:none
}
.wp-block-image.is-style-revelate-grain{position:relative}
.wp-block-image.is-style-revelate-grain::after{
  content:"";
  position:absolute;
  inset:0;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/></filter><rect width='100%25' height='100%25' filter='url(%23n)'/></svg>");
  opacity:.2;
  mix-blend-mode:overlay;
  pointer-events:none
}
.wp-block-group.is-style-revelate-card{
  padding:32px;
  border:1px solid var(--rv-border);
  background:#fff
}
.wp-block-button.is-style-revelate-arrow .wp-block-button__link::after{
  content:"↗";
  margin-left:12px
}
.wp-block-heading.is-style-revelate-display{
  font-size:clamp(2.75rem,5.5vw,5rem);
  line-height:.95;
  max-width:16ch
}

/* ==========================================================================
   Revelate pattern system
   ========================================================================== */
.rv-section{
  position:relative;
  padding:var(--rv-section-y,clamp(90px,10vw,160px)) 24px
}
.rv-section>.wp-block-group__inner-container{width:100%}
.rv-section--tight{padding-top:72px;padding-bottom:72px}
.rv-section--dark{
  background:var(--rv-ink);
  color:rgba(255,255,255,.84)
}
.rv-section--dark :where(h1,h2,h3,h4,h5,h6){color:#fff}
.rv-section--cream{background:var(--rv-cream)}
.rv-section--white{background:#fff}
.rv-shell{width:min(var(--rv-shell-max,1320px),100%);margin-inline:auto}
.rv-section-heading{
  max-width:18ch;
  margin-top:0;
  margin-bottom:28px;
  font-size:var(--rv-section-title-size);
  line-height:1
}
.rv-section-lede{
  max-width:680px;
  font-size:18px;
  line-height:1.8;
  color:var(--rv-muted)
}
.rv-section--dark .rv-section-lede{color:rgba(255,255,255,.72)}
.rv-rule{height:1px;background:var(--rv-border);border:0}
.rv-section--dark .rv-rule{background:rgba(255,255,255,.18)}

/* Hero 01 — editorial split */
.rv-hero-editorial{
  min-height:var(--rv-hero-editorial-min);
  background:var(--rv-ink);
  color:#fff;
  overflow:hidden;
  padding:0
}
.rv-hero-editorial>.wp-block-group__inner-container,
.rv-hero-editorial>.rv-hero-grid{
  min-height:inherit
}
.rv-hero-grid{
  width:100%;
  min-height:inherit;
  display:grid!important;
  grid-template-columns:minmax(0,1.06fr) minmax(420px,.94fr);
  gap:0!important;
  align-items:stretch!important;
  margin:0!important
}
.rv-hero-copy{
  min-width:0;
  display:flex;
  flex-direction:column;
  justify-content:center;
  padding:calc(var(--rv-header-h) + 90px) clamp(44px,7vw,110px) 90px max(24px,calc((100vw - var(--rv-shell-max,1320px))/2));
  position:relative;
  z-index:2
}
.rv-hero-kicker{
  margin:0 0 24px;
  color:rgba(255,255,255,.76);
  font-size:16px;
  font-weight:700;
  letter-spacing:.16em;
  text-transform:uppercase
}
.rv-hero-title{
  max-width:13ch;
  margin:0;
  color:#fff;
  font-size:var(--rv-hero-title-size);
  line-height:.98;
  letter-spacing:var(--rv-display-tracking,-.028em)
}
.rv-hero-copy>p:not(.rv-hero-kicker){
  max-width:650px;
  margin-top:32px;
  color:rgba(255,255,255,.80);
  font-size:18px;
  line-height:1.75
}
.rv-hero-media{
  min-width:0;
  height:100%;
  min-height:var(--rv-hero-media-min);
  margin:0!important;
  overflow:hidden
}
.rv-hero-media img{
  display:block;
  width:100%;
  height:100%;
  min-height:var(--rv-hero-media-min);
  object-fit:cover;
  object-position:center
}

/* Hero 02 — monumental text */
.rv-hero-monumental{
  min-height:var(--rv-hero-monumental-min);
  display:flex;
  align-items:flex-end;
  background:var(--rv-cream);
  overflow:hidden
}
.rv-hero-monumental .rv-shell{position:relative;z-index:2}
.rv-hero-monumental .rv-hero-title{
  max-width:15ch;
  color:var(--rv-ink);
  font-size:var(--rv-monumental-title-size)
}
.rv-hero-monumental .rv-hero-meta{
  margin-top:54px;
  display:grid;
  grid-template-columns:minmax(0,1fr) minmax(300px,480px);
  gap:60px;
  align-items:end
}
.rv-hero-monumental .rv-hero-meta p{margin:0;font-size:18px;line-height:1.8}

/* Editorial intro */
.rv-editorial-intro .rv-intro-grid{
  display:grid!important;
  grid-template-columns:minmax(0,1.25fr) minmax(320px,.75fr);
  gap:clamp(60px,8vw,130px)!important;
  align-items:start!important
}
.rv-intro-title{
  margin:0;
  max-width:16ch;
  font-size:var(--rv-intro-title-size);
  line-height:1
}
.rv-intro-copy p{font-size:18px;line-height:1.82;color:var(--rv-muted)}
.rv-intro-copy p:first-child{margin-top:0}

/* Split feature */
.rv-split-feature .rv-feature-grid{
  display:grid!important;
  grid-template-columns:minmax(0,1.05fr) minmax(380px,.95fr);
  gap:0!important;
  align-items:center!important
}
.rv-feature-media{
  height:clamp(520px,58vw,760px);
  margin:0!important;
  overflow:hidden
}
.rv-feature-media img{width:100%;height:100%;object-fit:cover}
.rv-feature-panel{
  position:relative;
  z-index:2;
  margin-left:-80px!important;
  padding:clamp(44px,5vw,78px)!important;
  background:var(--rv-paper);
  box-shadow:var(--rv-shadow)
}
.rv-feature-panel h2{
  max-width:10ch;
  margin:0 0 28px;
  font-size:clamp(3rem,5vw,5.3rem);
  line-height:.92
}
.rv-feature-panel p{font-size:17px;line-height:1.8;color:var(--rv-muted)}

/* Feature cards */
.rv-card-grid{
  display:grid!important;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:18px!important
}
.rv-card{
  min-height:360px;
  display:flex;
  flex-direction:column;
  justify-content:space-between;
  padding:34px!important;
  border:1px solid var(--rv-border);
  background:#fff
}
.rv-card-number{
  margin:0;
  color:var(--rv-accent);
  font-size:16px;
  font-weight:700;
  letter-spacing:.14em
}
.rv-card h3{
  margin:70px 0 18px;
  font-size:clamp(2rem,3vw,3.3rem);
  line-height:.98
}
.rv-card p{margin-bottom:0;color:var(--rv-muted);font-size:16px;line-height:1.75}

/* Stats — intentionally not equal cards */
.rv-stats-layout{
  display:grid!important;
  grid-template-columns:minmax(0,1.3fr) minmax(340px,.7fr);
  gap:0!important;
  border-top:1px solid rgba(255,255,255,.18);
  border-bottom:1px solid rgba(255,255,255,.18)
}
.rv-stat-primary{
  padding:56px 70px 58px 0!important;
  border-right:1px solid rgba(255,255,255,.18)
}
.rv-stat-primary .rv-stat-number{
  margin:0;
  color:var(--rv-accent);
  font-family:var(--rv-serif);
  font-size:clamp(7rem,17vw,15rem);
  line-height:.8;
  letter-spacing:-.04em
}
.rv-stat-primary p:last-child{
  max-width:450px;
  margin:36px 0 0;
  color:rgba(255,255,255,.66)
}
.rv-stat-support{
  display:grid!important;
  grid-template-rows:1fr 1fr;
  gap:0!important
}
.rv-stat-small{
  display:flex;
  flex-direction:column;
  justify-content:flex-end;
  padding:46px!important
}
.rv-stat-small:first-child{border-bottom:1px solid rgba(255,255,255,.18)}
.rv-stat-small h3{
  margin:0 0 8px;
  color:#fff;
  font-size:clamp(2.8rem,5vw,5rem);
  line-height:.9
}
.rv-stat-small p{margin:0;color:rgba(255,255,255,.62);font-size:16px;font-weight:700;text-transform:uppercase;letter-spacing:.12em}

/* Gallery — art-directed rather than equal tiles */
.rv-gallery-grid{
  display:grid!important;
  grid-template-columns:repeat(12,minmax(0,1fr));
  gap:20px!important;
  align-items:start!important
}
.rv-gallery-a{grid-column:1 / span 7;height:560px}
.rv-gallery-b{grid-column:9 / span 4;height:690px;margin-top:90px!important}
.rv-gallery-c{grid-column:2 / span 4;height:420px;margin-top:-90px!important}
.rv-gallery-d{grid-column:6 / span 7;height:500px;margin-top:20px!important}
.rv-gallery-grid figure{overflow:hidden;margin-bottom:0!important}
.rv-gallery-grid img{
  width:100%;
  height:100%;
  object-fit:cover;
  transition:transform .65s var(--rv-ease)
}
.rv-gallery-grid figure:hover img{transform:scale(1.025)}

/* Testimonial */
.rv-quote-grid{
  display:grid!important;
  grid-template-columns:minmax(0,1.3fr) minmax(280px,.7fr);
  gap:80px!important;
  align-items:end!important
}
.rv-quote{
  margin:0;
  max-width:20ch;
  color:var(--rv-ink);
  font-family:var(--rv-serif);
  font-size:clamp(2.8rem,5vw,5.5rem);
  line-height:.98
}
.rv-quote-meta{padding-bottom:10px}
.rv-quote-meta p{margin:0 0 8px;color:var(--rv-muted)}

/* Testimonial with photo: a portrait beside the quote instead of text alone. */
.rv-quote-portrait{
  display:grid!important;
  grid-template-columns:minmax(240px,340px) 1fr;
  gap:clamp(32px,5vw,64px)!important;
  align-items:center!important
}
.rv-quote-portrait-photo{
  position:relative;
  margin:0!important;
  aspect-ratio:4/5;
  overflow:hidden
}
.rv-quote-portrait-photo img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
.rv-quote-portrait-copy .rv-quote{
  max-width:none;
  font-size:clamp(1.5rem,2.6vw,2.25rem);
  line-height:1.25
}
.rv-quote-portrait-copy .rv-quote-meta{padding-bottom:0;margin-top:24px}

/* Team list: rows share the same rhythm as .rv-service-list. */
.rv-team-list{display:block!important;border-top:1px solid var(--rv-border)}
.rv-team-row{
  display:grid!important;
  grid-template-columns:64px minmax(0,1fr) minmax(0,1.5fr);
  gap:6px clamp(20px,4vw,64px);
  align-items:center;
  padding:clamp(20px,2.6vw,30px) 0;
  border-bottom:1px solid var(--rv-border)
}
.rv-team-row-photo{
  position:relative;
  margin:0!important;
  width:64px;
  height:64px;
  border-radius:50%;
  overflow:hidden
}
.rv-team-row-photo img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
.rv-team-row h3{margin:0;font-size:1.15rem}
.rv-team-row .rv-team-role{margin:2px 0 0;font-size:16px}
.rv-team-row>p{margin:0;color:var(--rv-muted);font-size:16px;line-height:1.6}

/* FAQ */
.rv-faq-layout{
  display:grid!important;
  grid-template-columns:minmax(0,.72fr) minmax(440px,1.28fr);
  gap:clamp(60px,8vw,130px)!important;
  align-items:start!important
}
.rv-faq-list details{
  padding:24px 0;
  border-top:1px solid var(--rv-border)
}
.rv-faq-list details:last-child{border-bottom:1px solid var(--rv-border)}
.rv-faq-list summary{
  cursor:pointer;
  font-size:19px;
  font-weight:700
}
.rv-faq-list details p{padding-top:16px;color:var(--rv-muted)}

/* CTA */
.rv-cta{
  overflow:hidden;
  background:var(--rv-ink);
  color:#fff
}
.rv-cta-grid{
  display:grid!important;
  grid-template-columns:minmax(0,1.2fr) minmax(300px,.8fr);
  gap:80px!important;
  align-items:end!important
}
.rv-cta h2{
  max-width:10ch;
  margin:0;
  color:#fff;
  font-size:clamp(3.7rem,7vw,7rem);
  line-height:.88
}
.rv-cta-copy p{color:rgba(255,255,255,.72);font-size:17px;line-height:1.8}
.rv-cta .wp-block-button__link{
  background:var(--rv-accent)!important;
  color:var(--rv-on-accent,var(--rv-ink))!important;
  border:1px solid var(--rv-accent)
}
.rv-cta .wp-block-button__link:hover{background:transparent!important;color:#fff!important}

/* Contact split */
.rv-contact-grid{
  display:grid!important;
  grid-template-columns:minmax(0,.8fr) minmax(460px,1.2fr);
  gap:clamp(70px,10vw,160px)!important
}
.rv-contact-details a{display:block;margin-bottom:10px;font-size:20px;font-weight:700;text-decoration:none}
.rv-form-placeholder{
  min-height:390px;
  padding:42px!important;
  border:1px dashed rgba(13,27,22,.28);
  background:rgba(255,255,255,.55)
}
.rv-form-placeholder p{color:var(--rv-muted)}

/* Logo strip */
.rv-logo-strip{
  display:grid!important;
  grid-template-columns:repeat(4,1fr);
  gap:0!important;
  border-top:1px solid var(--rv-border);
  border-bottom:1px solid var(--rv-border)
}
.rv-logo-item{
  min-height:120px;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:24px!important;
  border-right:1px solid var(--rv-border);
  color:var(--rv-muted);
  font-family:var(--rv-serif);
  font-size:22px
}
.rv-logo-item:last-child{border-right:0}

/* Motion */
.rv-motion-ready .rv-reveal{
  opacity:0;
  transform:translateY(24px);
  transition:opacity .72s var(--rv-ease),transform .72s var(--rv-ease)
}
.rv-motion-ready .rv-reveal.is-visible{
  opacity:1;
  transform:none
}
.rv-parallax img{transform:translate3d(0,var(--rv-parallax-y,0),0) scale(1.04);will-change:transform}

/* ----- Blog / archives ----- */
.rv-archive-header{margin-bottom:70px}
.rv-archive-description{max-width:680px;color:var(--rv-muted);font-size:18px}
.rv-post-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:50px 28px
}
.rv-post-card{background:#fff;border:1px solid var(--rv-border)}
.rv-post-card-image{display:block;aspect-ratio:4/3;overflow:hidden}
.rv-post-card-image img{width:100%;height:100%;object-fit:cover;transition:transform .5s var(--rv-ease)}
.rv-post-card:hover .rv-post-card-image img{transform:scale(1.025)}
.rv-post-card-copy{padding:30px}
.rv-post-card-copy h2{margin:0 0 16px;font-size:clamp(2rem,3vw,3.2rem);line-height:.98}
.rv-post-card-copy h2 a{text-decoration:none}
.rv-post-card-copy>p:not(.rv-kicker){color:var(--rv-muted)}
.navigation.pagination{margin-top:64px}
.nav-links{display:flex;gap:8px;flex-wrap:wrap}
.page-numbers{min-width:44px;min-height:44px;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--rv-border);text-decoration:none}
.page-numbers.current{background:var(--rv-ink);color:#fff}
.rv-404{max-width:800px;padding:70px 0}
.rv-404 h1{font-size:clamp(3rem,6vw,5rem);margin:0 0 28px}
.rv-empty-state{padding:70px 0}
.comments-area{margin-top:90px;padding-top:50px;border-top:1px solid var(--rv-border)}
.comment-list{padding-left:20px}
.comment-body{margin-bottom:36px}

/* ----- Forms ----- */
input[type="text"],input[type="email"],input[type="tel"],input[type="url"],input[type="search"],input[type="number"],select,textarea{
  width:100%;
  min-height:48px;
  padding:12px 14px;
  border:1px solid rgba(13,27,22,.30);
  border-radius:0;
  background:#fff;
  color:var(--rv-text)
}
textarea{min-height:150px}
input[type="submit"],button[type="submit"]{
  min-height:48px;
  padding:12px 20px;
  border:1px solid var(--rv-ink);
  border-radius:0;
  background:var(--rv-ink);
  color:#fff;
  font-weight:700
}
label{font-weight:600}

/* Contact Form 7 / Gravity Forms / WPForms */
.wpcf7-form,.gform_wrapper,.wpforms-container{font-size:16px}
.gform_wrapper input,.gform_wrapper textarea,.wpforms-container input,.wpforms-container textarea{border-radius:0!important}

/* ----- WooCommerce baseline ----- */
.woocommerce .button,
.woocommerce button.button,
.woocommerce input.button{
  border-radius:0!important;
  background:var(--rv-ink)!important;
  color:#fff!important;
  min-height:44px
}
.woocommerce ul.products li.product a img{margin-bottom:18px}
.woocommerce ul.products li.product .woocommerce-loop-product__title{
  font-family:var(--rv-serif);
  font-size:1.55rem;
  color:var(--rv-ink)
}
.woocommerce div.product .product_title{font-size:clamp(2.8rem,5vw,5rem);line-height:.95}
.woocommerce .price{color:var(--rv-forest)!important;font-weight:700}

/* ----- Footer ----- */
.site-footer{
  background:#091712;
  background:color-mix(in srgb,var(--rv-ink) 90%,#000);
  color:rgba(255,255,255,.72);
  padding:82px 24px 26px
}
.rv-footer-shell{
  width:min(1320px,100%);
  margin:0 auto;
  display:grid;
  grid-template-columns:1.3fr .8fr .8fr .7fr;
  gap:60px;
  align-items:start
}
.site-footer .rv-site-name{color:#fff;font-size:28px}
.site-footer .custom-logo{filter:none}
.rv-footer-brand p{max-width:340px;margin:22px 0 0;font-size:16px;line-height:1.7}
.rv-footer-contact a,
.rv-footer-social a,
.rv-footer-nav a{
  display:block;
  margin-bottom:8px;
  color:rgba(255,255,255,.78);
  text-decoration:none;
  font-size:16px
}
.rv-footer-nav ul{list-style:none;margin:0;padding:0}
.rv-footer-base{
  width:min(1320px,100%);
  margin:70px auto 0;
  padding-top:20px;
  border-top:1px solid rgba(255,255,255,.12);
  display:flex;
  justify-content:space-between;
  gap:24px
}
.rv-footer-base p{margin:0;font-size:16px;color:rgba(255,255,255,.48)}

/* ----- Responsive ----- */
@media (max-width:1100px){
  :root{--rv-shell:min(100% - 40px,1320px)}
  .rv-hero-grid{grid-template-columns:minmax(0,1.12fr) minmax(380px,.88fr)}
  .rv-hero-copy{padding-left:40px;padding-right:52px}
  .rv-feature-panel{margin-left:-44px!important;padding:52px!important}
  .rv-card-grid{grid-template-columns:1fr 1fr}
  .rv-card-grid>.rv-card:last-child{grid-column:1 / -1}
  .rv-footer-shell{grid-template-columns:1.2fr 1fr 1fr;gap:44px}
  .rv-footer-social{grid-column:2}
}
@media (max-width:900px){
  .rv-header-layout-centred{--rv-header-h:88px}
  :root{--rv-header-h:76px}
  body.rv-menu-open{overflow:hidden}
  .admin-bar.revelate-sticky-header .site-header,
  .admin-bar.rv-header-overlay-light .site-header,
  .admin-bar.rv-header-overlay-light .site-header.is-scrolled{top:46px}
  .rv-menu-toggle{display:inline-flex}
  .primary-navigation{
    position:fixed;
    inset:var(--rv-header-h) 0 auto;
    display:none;
    padding:28px 24px 34px;
    background:rgba(13,27,22,.98);
    background:color-mix(in srgb,var(--rv-ink) 98%,transparent);
    color:#fff;
    border-top:1px solid rgba(255,255,255,.12);
    box-shadow:0 18px 40px rgba(0,0,0,.18)
  }
  .primary-navigation.is-open{display:block}
  .admin-bar .primary-navigation{top:calc(var(--rv-header-h) + 46px)}
  .primary-navigation #primary-menu{display:block}
  .primary-navigation li{border-bottom:1px solid rgba(255,255,255,.12)}
  .primary-navigation a{width:100%;min-height:52px;color:#fff!important;font-size:18px}
  .primary-navigation .rv-nav-link::after{display:none}
  .rv-header-cta{margin-top:20px;width:auto!important;display:inline-flex!important;border-color:#fff}
  .rv-hero-grid{grid-template-columns:1fr!important}
  .rv-hero-copy{min-height:620px;padding:calc(var(--rv-header-h) + 76px) 28px 72px}
  .rv-hero-media{min-height:500px;height:500px}
  .rv-hero-media img{min-height:500px}
  .rv-hero-title{font-size:clamp(4rem,12vw,7rem);max-width:11ch}
  .rv-hero-monumental .rv-hero-meta,
  .rv-editorial-intro .rv-intro-grid,
  .rv-split-feature .rv-feature-grid,
  .rv-quote-grid,
  .rv-faq-layout,
  .rv-cta-grid,
  .rv-contact-grid{grid-template-columns:1fr!important}
  .rv-hero-monumental .rv-hero-meta{gap:32px}
  .rv-editorial-intro .rv-intro-grid,
  .rv-quote-grid,
  .rv-faq-layout,
  .rv-cta-grid,
  .rv-contact-grid{gap:46px!important}
  .rv-feature-panel{margin:-72px 24px 0!important;padding:46px!important}
  .rv-card-grid{grid-template-columns:1fr!important}
  .rv-card-grid>.rv-card:last-child{grid-column:auto}
  .rv-stats-layout{grid-template-columns:1fr!important}
  .rv-stat-primary{border-right:0;border-bottom:1px solid rgba(255,255,255,.18);padding-right:0!important}
  .rv-stat-support{grid-template-columns:1fr 1fr;grid-template-rows:auto}
  .rv-stat-small:first-child{border-bottom:0;border-right:1px solid rgba(255,255,255,.18)}
  .rv-gallery-a{grid-column:1 / span 8;height:470px}
  .rv-gallery-b{grid-column:9 / span 4;height:560px;margin-top:60px!important}
  .rv-gallery-c{grid-column:2 / span 4;height:340px;margin-top:-60px!important}
  .rv-gallery-d{grid-column:6 / span 7;height:410px}
  .rv-footer-shell{grid-template-columns:1fr 1fr}
  .rv-footer-social{grid-column:auto}
}
@media (max-width:680px){
  :root{--rv-shell:calc(100vw - 36px);--rv-prose:calc(100vw - 36px)}
  body{font-size:16px}
  .rv-content-shell{padding:76px 0 90px}
  .rv-section{padding:82px 18px}
  .rv-header-shell{width:calc(100vw - 36px)}
  .rv-site-name{font-size:23px}
  .rv-hero-copy{min-height:560px;padding:calc(var(--rv-header-h) + 58px) 18px 60px}
  .rv-hero-title{font-size:clamp(3.7rem,15vw,5.8rem);line-height:.89;max-width:10.5ch}
  .rv-hero-copy>p:not(.rv-hero-kicker){font-size:16px}
  .rv-hero-media{height:420px;min-height:420px}
  .rv-hero-media img{min-height:420px}
  .rv-hero-monumental{min-height:680px}
  .rv-hero-monumental .rv-hero-title{font-size:clamp(3.7rem,17vw,6rem)}
  .rv-section-heading,.rv-intro-title{font-size:clamp(3rem,13vw,5rem)}
  .rv-feature-media{height:430px}
  .rv-feature-panel{margin:-46px 14px 0!important;padding:34px 26px!important}
  .rv-feature-panel h2{font-size:clamp(2.9rem,12vw,4.2rem)}
  .rv-card{min-height:310px;padding:28px!important}
  .rv-stat-primary{padding:42px 0!important}
  .rv-stat-primary .rv-stat-number{font-size:clamp(7rem,36vw,11rem)}
  .rv-stat-support{grid-template-columns:1fr}
  .rv-stat-small{padding:34px 0!important}
  .rv-stat-small:first-child{border-right:0;border-bottom:1px solid rgba(255,255,255,.18)}
  .rv-gallery-grid{display:block!important}
  .rv-gallery-grid figure{width:100%;height:340px;margin:0 0 14px!important}
  .rv-gallery-b{height:430px!important}
  .rv-quote{font-size:clamp(2.6rem,11vw,4.2rem)}
  .rv-logo-strip{grid-template-columns:1fr 1fr}
  .rv-logo-item{border-bottom:1px solid var(--rv-border)}
  .rv-logo-item:nth-child(2){border-right:0}
  .rv-post-grid{grid-template-columns:1fr}
  .rv-footer-shell{grid-template-columns:1fr;gap:34px}
  .rv-footer-base{display:block;margin-top:50px}
  .rv-footer-base p+p{margin-top:8px}
}
@media (max-width:420px){
  .rv-feature-panel{margin:-32px 8px 0!important;padding:30px 22px!important}
  .rv-form-placeholder{padding:28px!important}
}


/* ==========================================================================
   Revelate 2.2 — art direction and composition primitives
   ========================================================================== */

/* Token-driven surfaces and image treatments. */
.rv-card,.rv-review,.rv-path,.rv-formcard,.rv-form-placeholder,.rv-feature-panel{
  box-shadow:var(--rv-surface-shadow,none)
}
.rv-feature-media,.rv-team-photo,.rv-media-card-image,.rv-gallery-grid figure,
.rv-ratio-1x1,.rv-ratio-4x5,.rv-ratio-3x2,.rv-ratio-16x9{
  box-shadow:var(--rv-image-shadow,none);
  border:var(--rv-image-border,0px) solid var(--rv-border)
}

/* Low-level composition vocabulary for bespoke sections. */
.rv-layout-70-30,.rv-layout-65-35,.rv-layout-60-40,.rv-layout-40-60,.rv-layout-35-65,.rv-layout-30-70{
  display:grid!important;
  align-items:start!important;
  gap:clamp(32px,6vw,104px)!important
}
.rv-layout-70-30{grid-template-columns:minmax(0,7fr) minmax(260px,3fr)}
.rv-layout-65-35{grid-template-columns:minmax(0,13fr) minmax(280px,7fr)}
.rv-layout-60-40{grid-template-columns:minmax(0,3fr) minmax(300px,2fr)}
.rv-layout-40-60{grid-template-columns:minmax(300px,2fr) minmax(0,3fr)}
.rv-layout-35-65{grid-template-columns:minmax(280px,7fr) minmax(0,13fr)}
.rv-layout-30-70{grid-template-columns:minmax(260px,3fr) minmax(0,7fr)}
.rv-align-center{align-items:center!important}
.rv-align-end{align-items:end!important}
.rv-gap-tight{gap:clamp(18px,2.5vw,36px)!important}
.rv-gap-wide{gap:clamp(48px,8vw,144px)!important}
.rv-stack{display:flex!important;flex-direction:column;gap:clamp(18px,2.5vw,34px)!important}
.rv-cluster{display:flex!important;flex-wrap:wrap;align-items:center;gap:14px 22px!important}
.rv-sticky{position:sticky;top:calc(var(--rv-header-h) + 32px)}
.rv-bleed-left{margin-left:max(-120px,calc((var(--rv-shell-max,1320px) - 100vw)/2))!important}
.rv-bleed-right{margin-right:max(-120px,calc((var(--rv-shell-max,1320px) - 100vw)/2))!important}

/* Art-directed overlap: first child is media, second child is content. */
.rv-overlap{
  display:grid!important;
  grid-template-columns:repeat(12,minmax(0,1fr));
  align-items:center!important;
  gap:0!important
}
.rv-overlap>*{margin-block-start:0!important;min-width:0}
.rv-overlap>:first-child{grid-column:1 / span 8;grid-row:1}
.rv-overlap>:nth-child(2){grid-column:7 / -1;grid-row:1;position:relative;z-index:2;padding:clamp(32px,5vw,72px)!important;background:var(--rv-paper);box-shadow:var(--rv-surface-shadow,none)}
.rv-overlap--reverse>:first-child{grid-column:5 / -1}
.rv-overlap--reverse>:nth-child(2){grid-column:1 / span 6}

/* Horizontal editorial/card rail. Useful when a reference needs movement without a JS carousel. */
.rv-scroll-row{
  display:grid!important;
  grid-auto-flow:column;
  grid-auto-columns:minmax(280px,34%);
  gap:20px!important;
  overflow-x:auto;
  overscroll-behavior-inline:contain;
  scroll-snap-type:inline mandatory;
  scrollbar-width:thin;
  padding-bottom:12px
}
.rv-scroll-row>*{scroll-snap-align:start;margin-block-start:0!important;min-width:0}

/* Large typographic statement / brand band. */
.rv-type-band{padding-block:clamp(56px,8vw,120px)}
.rv-type-band .rv-type-display{
  max-width:18ch;margin:0;font-family:var(--rv-serif);font-size:clamp(3.4rem,8vw,8.6rem);line-height:.92;
  letter-spacing:var(--rv-display-tracking,-.028em);text-wrap:balance
}
.rv-type-band.rv-center .rv-type-display{margin-inline:auto}

/* Mosaic that accepts 3–5 normal image/group children. */
.rv-mosaic{display:grid!important;grid-template-columns:repeat(12,minmax(0,1fr));gap:clamp(12px,2vw,28px)!important}
.rv-mosaic>*{margin-block-start:0!important;min-width:0}
.rv-mosaic>:nth-child(1){grid-column:1 / span 7}
.rv-mosaic>:nth-child(2){grid-column:8 / -1;margin-top:clamp(36px,7vw,100px)!important}
.rv-mosaic>:nth-child(3){grid-column:2 / span 4}
.rv-mosaic>:nth-child(4){grid-column:6 / span 7}
.rv-mosaic>:nth-child(5){grid-column:4 / span 6}

/* Header layout variants. Mobile intentionally converges on one predictable menu. */
.rv-header-layout-centred{--rv-header-h:132px}
.rv-header-layout-split .rv-header-shell{display:grid;grid-template-columns:auto minmax(0,1fr);gap:40px}
.rv-header-layout-split .primary-navigation{display:grid;grid-template-columns:minmax(0,1fr) auto;width:100%}
.rv-header-layout-split .primary-navigation #primary-menu{justify-content:center}
.rv-header-layout-split .rv-header-cta{justify-self:end}
.rv-header-layout-centred .rv-header-shell{height:auto;min-height:var(--rv-header-h);padding:20px 0;display:grid;grid-template-columns:1fr;justify-items:center;gap:10px}
.rv-header-layout-centred .primary-navigation{justify-content:center}
.rv-header-layout-centred .primary-navigation #primary-menu{justify-content:center}
.rv-header-layout-compact{--rv-header-h:72px}
.rv-header-layout-compact .rv-header-shell{gap:20px}
.rv-header-layout-compact .primary-navigation,.rv-header-layout-compact .primary-navigation #primary-menu{gap:18px}
.rv-header-layout-compact .primary-navigation a{font-size:16px}
.rv-header-layout-compact .rv-header-cta{background:var(--rv-ink);color:#fff;border-color:var(--rv-ink)}
.rv-header-overlay-light .rv-header-layout-compact .rv-header-cta{background:rgba(255,255,255,.12);border-color:#fff}

/* Footer layout variants. */
.rv-footer-layout-editorial .rv-footer-shell{grid-template-columns:minmax(0,1.5fr) repeat(3,minmax(0,1fr));align-items:start}
.rv-footer-layout-editorial .rv-footer-brand .rv-site-name{font-size:clamp(2.5rem,4vw,4.4rem);line-height:.95;display:inline-block;margin-bottom:22px}
.rv-footer-layout-centred .rv-footer-shell{display:flex;flex-direction:column;align-items:center;text-align:center;gap:28px}
.rv-footer-layout-centred .rv-footer-nav ul,.rv-footer-layout-centred .rv-footer-social{display:flex;flex-wrap:wrap;justify-content:center;gap:12px 24px}
.rv-footer-layout-centred .rv-footer-base{justify-content:center;gap:28px;text-align:center}
.rv-footer-layout-compact .rv-footer-shell{grid-template-columns:minmax(0,1.25fr) minmax(0,.75fr);gap:48px}
.rv-footer-layout-compact .rv-footer-nav,.rv-footer-layout-compact .rv-footer-social{grid-column:2}
.rv-footer-layout-compact .rv-footer-contact{grid-row:1 / span 2;grid-column:2}

@media (max-width:900px){
  .rv-header-layout-centred{--rv-header-h:88px}
  .rv-layout-70-30,.rv-layout-65-35,.rv-layout-60-40,.rv-layout-40-60,.rv-layout-35-65,.rv-layout-30-70{grid-template-columns:1fr!important}
  .rv-sticky{position:static}
  .rv-bleed-left,.rv-bleed-right{margin-left:0!important;margin-right:0!important}
  .rv-overlap{display:block!important}
  .rv-overlap>:first-child,.rv-overlap>:nth-child(2),.rv-overlap--reverse>:first-child,.rv-overlap--reverse>:nth-child(2){grid-column:auto;grid-row:auto}
  .rv-overlap>:nth-child(2){margin:-48px 18px 0!important}
  .rv-scroll-row{grid-auto-columns:minmax(260px,76%)}
  .rv-mosaic{display:grid!important;grid-template-columns:1fr 1fr}
  .rv-mosaic>*{grid-column:auto!important;margin-top:0!important}
  .rv-mosaic>:first-child{grid-column:1 / -1!important}
  .rv-header-layout-split .rv-header-shell,.rv-header-layout-centred .rv-header-shell{display:flex;height:var(--rv-header-h);min-height:0;padding:0;justify-content:space-between;gap:24px}
  .rv-header-layout-split .primary-navigation,.rv-header-layout-centred .primary-navigation{display:block;width:auto}
  .rv-footer-layout-editorial .rv-footer-shell,.rv-footer-layout-compact .rv-footer-shell{grid-template-columns:1fr 1fr}
  .rv-footer-layout-compact .rv-footer-contact,.rv-footer-layout-compact .rv-footer-nav,.rv-footer-layout-compact .rv-footer-social{grid-column:auto;grid-row:auto}
}
@media (max-width:680px){
  .rv-scroll-row{grid-auto-columns:88%}
  .rv-mosaic{grid-template-columns:1fr}
  .rv-mosaic>*{grid-column:1!important}
  .rv-footer-layout-editorial .rv-footer-shell,.rv-footer-layout-compact .rv-footer-shell{grid-template-columns:1fr}
}

/* Reduced motion */
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{
    animation-duration:.01ms!important;
    animation-iteration-count:1!important;
    transition-duration:.01ms!important;
    scroll-behavior:auto!important
  }
  .rv-motion-ready .rv-reveal{opacity:1;transform:none}
  .rv-parallax img{transform:none!important}
}

/* ==========================================================================
   Revelate 1.1 layer
   Design tokens, header modes, section tones, footer call to action and the
   additional pattern library. Colours, radius and spacing all read from the
   CSS variables the Customizer / design presets write.
   ========================================================================== */

/* ----- Shape tokens ----- */
.rv-card,
.rv-post-card,
.wp-block-group.is-style-revelate-card,
.wp-block-image.is-style-revelate-frame,
.rv-team-photo,
.rv-gallery-grid figure,
.rv-feature-media,
.rv-formcard{border-radius:var(--rv-radius,0);overflow:hidden}

/* ----- Better line breaks in headlines and short copy ----- */
h1,h2,h3,.rv-band-quote,.rv-quote{text-wrap:balance}
.rv-section-lede,.rv-page-header-lead,.rv-hero-image-lead{text-wrap:pretty}

/* ----- Text roles (Styles panel on any paragraph) ----- */
p.is-style-rv-kicker{
  margin:0 0 16px;
  font-size:16px;
  line-height:1.3;
  font-weight:700;
  text-transform:uppercase;
  letter-spacing:.14em;
  color:var(--rv-muted)
}
p.is-style-rv-lead{
  max-width:44rem;
  font-size:clamp(1.125rem,1.6vw,1.35rem);
  line-height:1.7;
  color:var(--rv-muted)
}

/* ----- Section tones (Styles panel on any Group) ----- */
.wp-block-group.is-style-rv-tone-paper{background:var(--rv-paper);color:var(--rv-text)}
.wp-block-group.is-style-rv-tone-cream{background:var(--rv-cream);color:var(--rv-text)}
.wp-block-group.is-style-rv-tone-dark{background:var(--rv-ink);color:rgba(255,255,255,.84)}
.wp-block-group.is-style-rv-tone-forest{background:var(--rv-forest);color:rgba(255,255,255,.86)}
.is-style-rv-tone-dark :where(h1,h2,h3,h4,h5,h6),
.is-style-rv-tone-forest :where(h1,h2,h3,h4,h5,h6){color:#fff}
.is-style-rv-tone-dark .rv-kicker,
.is-style-rv-tone-forest .rv-kicker,
.is-style-rv-tone-dark .rv-section-lede,
.is-style-rv-tone-forest .rv-section-lede,
.rv-section--dark .rv-kicker{color:rgba(255,255,255,.7)}
.is-style-rv-tone-dark a:not(.wp-block-button__link),
.is-style-rv-tone-forest a:not(.wp-block-button__link){color:#fff}


/* Expanded paired colour surfaces. Accent + Complementary Accent are the two
   editable brand colours; Soft and Deep variants are derived automatically.
   Foreground colours are calculated by the theme, so these section styles
   remain readable when the project palette changes. */
.wp-block-group.is-style-rv-tone-accent-soft,
.rv-section--accent-soft{background:var(--rv-accent-soft);color:var(--rv-ink)}
.wp-block-group.is-style-rv-tone-support-soft,
.rv-section--support-soft{background:var(--rv-support-soft);color:var(--rv-ink)}
.wp-block-group.is-style-rv-tone-accent,
.rv-section--accent{background:var(--rv-accent);color:var(--rv-on-accent)}
.wp-block-group.is-style-rv-tone-support,
.rv-section--support{background:var(--rv-support);color:var(--rv-on-support)}
.wp-block-group.is-style-rv-tone-accent-deep,
.rv-section--accent-deep{background:var(--rv-accent-deep);color:var(--rv-on-accent-deep)}
.wp-block-group.is-style-rv-tone-support-deep,
.rv-section--support-deep{background:var(--rv-support-deep);color:var(--rv-on-support-deep)}
:where(
  .is-style-rv-tone-accent-soft,.is-style-rv-tone-support-soft,.is-style-rv-tone-accent,.is-style-rv-tone-support,.is-style-rv-tone-accent-deep,.is-style-rv-tone-support-deep,
  .rv-section--accent-soft,.rv-section--support-soft,.rv-section--accent,.rv-section--support,.rv-section--accent-deep,.rv-section--support-deep
) :where(h1,h2,h3,h4,h5,h6,p,a:not(.wp-block-button__link),.rv-kicker,.rv-section-lede){color:inherit}
:where(
  .is-style-rv-tone-accent-soft,.is-style-rv-tone-support-soft,.is-style-rv-tone-accent,.is-style-rv-tone-support,.is-style-rv-tone-accent-deep,.is-style-rv-tone-support-deep,
  .rv-section--accent-soft,.rv-section--support-soft,.rv-section--accent,.rv-section--support,.rv-section--accent-deep,.rv-section--support-deep
) .wp-block-button:not(.is-style-outline):not(.is-style-rv-button-sweep) .wp-block-button__link{
  background:var(--rv-paper);color:var(--rv-ink);border-color:var(--rv-paper)
}
:where(
  .is-style-rv-tone-accent-soft,.is-style-rv-tone-support-soft,.is-style-rv-tone-accent,.is-style-rv-tone-support,.is-style-rv-tone-accent-deep,.is-style-rv-tone-support-deep,
  .rv-section--accent-soft,.rv-section--support-soft,.rv-section--accent,.rv-section--support,.rv-section--accent-deep,.rv-section--support-deep
) .wp-block-button.is-style-outline .wp-block-button__link{
  background:transparent;color:inherit;border-color:currentColor
}

/* Paired-tone sections need enough selector weight to beat the base heading
   colour. The earlier :where()-only rule intentionally had zero specificity,
   which could leave headings using --rv-ink on a deep accent surface. */
.rv-section--accent :where(h1,h2,h3,h4,h5,h6,p,a:not(.wp-block-button__link),.rv-kicker,.rv-section-lede),
.rv-section--support :where(h1,h2,h3,h4,h5,h6,p,a:not(.wp-block-button__link),.rv-kicker,.rv-section-lede),
.rv-section--accent-deep :where(h1,h2,h3,h4,h5,h6,p,a:not(.wp-block-button__link),.rv-kicker,.rv-section-lede),
.rv-section--support-deep :where(h1,h2,h3,h4,h5,h6,p,a:not(.wp-block-button__link),.rv-kicker,.rv-section-lede),
.wp-block-group.is-style-rv-tone-accent :where(h1,h2,h3,h4,h5,h6,p,a:not(.wp-block-button__link),.rv-kicker,.rv-section-lede),
.wp-block-group.is-style-rv-tone-support :where(h1,h2,h3,h4,h5,h6,p,a:not(.wp-block-button__link),.rv-kicker,.rv-section-lede),
.wp-block-group.is-style-rv-tone-accent-deep :where(h1,h2,h3,h4,h5,h6,p,a:not(.wp-block-button__link),.rv-kicker,.rv-section-lede),
.wp-block-group.is-style-rv-tone-support-deep :where(h1,h2,h3,h4,h5,h6,p,a:not(.wp-block-button__link),.rv-kicker,.rv-section-lede){color:inherit}

/* Buttons on dark or image backgrounds */
.is-style-rv-tone-dark .wp-block-button:not(.is-style-outline) .wp-block-button__link,
.is-style-rv-tone-forest .wp-block-button:not(.is-style-outline) .wp-block-button__link,
.rv-hero-image .wp-block-button:not(.is-style-outline) .wp-block-button__link,
.rv-band .wp-block-button:not(.is-style-outline) .wp-block-button__link{
  background:var(--rv-accent);
  color:var(--rv-on-accent,var(--rv-ink));
  border:1px solid var(--rv-accent)
}
.is-style-rv-tone-dark .wp-block-button.is-style-outline .wp-block-button__link,
.is-style-rv-tone-forest .wp-block-button.is-style-outline .wp-block-button__link,
.rv-hero-image .wp-block-button.is-style-outline .wp-block-button__link,
.rv-band .wp-block-button.is-style-outline .wp-block-button__link{
  background:transparent;
  color:#fff;
  border:1px solid rgba(255,255,255,.55)
}
.rv-hero-image .wp-block-button__link:hover,
.rv-band .wp-block-button__link:hover{background:#fff;color:var(--rv-ink);border-color:#fff}

/* ----- Announcement bar ----- */
.rv-announce{
  position:relative;
  z-index:1001;
  padding:10px 20px;
  background:var(--rv-forest);
  color:#fff;
  text-align:center;
  font-size:16px;
  line-height:1.4
}
.rv-announce p,
.rv-announce a{margin:0;color:#fff;font-weight:600;text-decoration:none}
.rv-announce a:hover{text-decoration:underline}
/* Default until revelate.js measures the real height, so overlay headers never overlap the bar. */
.rv-has-announce{--rv-announce-h:40px}

/* ----- Header modes ----- */
.rv-header-is-overlay .site-header{top:var(--rv-announce-h,0px)}
.admin-bar.rv-header-is-overlay .site-header{top:calc(32px + var(--rv-announce-h,0px))}
.rv-header-is-overlay .site-header.is-scrolled{top:0}
.admin-bar.rv-header-is-overlay .site-header.is-scrolled{top:32px}

.rv-header-overlay-dark .site-header{
  position:absolute;
  left:0;
  background:transparent;
  border-bottom-color:transparent
}
.rv-header-overlay-dark .site-header.is-scrolled{
  position:fixed;
  background:color-mix(in srgb,var(--rv-paper) 96%,transparent);
  border-bottom-color:var(--rv-border);
  box-shadow:0 8px 30px rgba(13,27,22,.08)
}

/* ----- Footer call to action band ----- */
.rv-footer-cta{
  padding:clamp(56px,7vw,96px) 24px;
  background:var(--rv-forest);
  color:#fff
}
.rv-footer-cta-inner{
  width:min(1320px,100%);
  margin:0 auto;
  display:flex;
  flex-wrap:wrap;
  gap:32px 56px;
  align-items:center;
  justify-content:space-between
}
.rv-footer-cta h2{margin:0 0 10px;color:#fff;font-size:clamp(2rem,4vw,3.4rem);line-height:1.05}
.rv-footer-cta p{max-width:52ch;margin:0;color:rgba(255,255,255,.78);font-size:18px;line-height:1.7}
.rv-footer-cta-button{
  min-height:52px;
  display:inline-flex;
  align-items:center;
  gap:10px;
  padding:0 30px;
  background:var(--rv-accent);
  color:var(--rv-on-accent,var(--rv-ink));
  font-weight:700;
  text-decoration:none;
  border-radius:var(--rv-btn-radius,0);
  transition:transform .2s ease
}
.rv-footer-cta-button:hover{transform:translateY(-2px)}
.rv-footer-address,
.rv-footer-hours{margin:14px 0 0;font-size:16px;line-height:1.7;color:rgba(255,255,255,.72)}

/* ==========================================================================
   Additional patterns
   ========================================================================== */

/* Page header (inner-page title band) */
.rv-page-header{
  padding:clamp(72px,9vw,132px) 24px clamp(56px,7vw,96px);
  background:var(--rv-cream);
  border-bottom:1px solid var(--rv-border)
}
.rv-page-header-title{
  max-width:16ch;
  margin:0 0 24px;
  font-size:var(--rv-page-header-title-size);
  line-height:1
}
.rv-page-header-lead{
  max-width:44rem;
  margin:0;
  font-size:clamp(1.125rem,1.5vw,1.3rem);
  line-height:1.7;
  color:var(--rv-muted)
}

/* Hero: full-bleed image (the image is a normal, replaceable Image block) */
.rv-hero-image{
  position:relative;
  isolation:isolate;
  display:flex;
  align-items:flex-end;
  min-height:var(--rv-hero-image-min);
  padding:calc(var(--rv-header-h) + 60px) 24px clamp(56px,9vh,110px);
  background:var(--rv-ink);
  color:#fff;
  overflow:hidden
}
.rv-hero-image .rv-hero-bg{position:absolute;inset:0;margin:0!important;z-index:-2}
.rv-hero-image .rv-hero-bg img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.rv-hero-image::before{
  content:"";
  position:absolute;
  inset:0;
  z-index:-1;
  background:linear-gradient(180deg,rgba(0,0,0,.5) 0%,rgba(0,0,0,.08) 42%,rgba(0,0,0,.78) 100%)
}
.rv-hero-image-inner{position:relative;width:min(var(--rv-shell-max,1320px),100%);margin:0 auto}
.rv-hero-image .rv-hero-kicker{margin:0 0 22px}
.rv-hero-image-title{
  max-width:14ch;
  margin:0 0 24px;
  color:#fff;
  font-size:var(--rv-image-hero-title-size);
  line-height:.98;
  letter-spacing:var(--rv-display-tracking,-.028em)
}
.rv-hero-image-lead{max-width:40rem;margin:0;font-size:clamp(1.1rem,1.5vw,1.3rem);line-height:1.7;color:rgba(255,255,255,.88)}
.rv-hero-image .wp-block-buttons{margin-top:36px}

/* Process steps */
.rv-steps{
  display:grid!important;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:clamp(24px,3vw,48px)!important;
  margin-top:clamp(40px,5vw,72px)!important
}
.rv-step{margin:0;padding-top:24px;border-top:1px solid var(--rv-border)}
.rv-step-number{margin:0 0 28px;font-family:var(--rv-serif);font-size:1.4rem;font-style:italic;color:var(--rv-forest)}
.rv-step h3{margin:0 0 12px;font-size:1.55rem;line-height:1.15}
.rv-step p:last-child{margin:0;color:var(--rv-muted)}

/* Full-bleed image band with a large quote */
.rv-band{
  position:relative;
  isolation:isolate;
  display:flex;
  align-items:center;
  min-height:clamp(480px,70vh,760px);
  padding:clamp(72px,9vw,140px) 24px;
  background:var(--rv-ink);
  color:#fff;
  text-align:center;
  overflow:hidden
}
.rv-band-bg{position:absolute;inset:0;margin:0!important;z-index:-2}
.rv-band-bg img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.rv-band::before{content:"";position:absolute;inset:0;z-index:-1;background:rgba(0,0,0,.55)}
.rv-band-inner{width:min(980px,100%);margin:0 auto}
.rv-band-quote{margin:0 0 28px;font-family:var(--rv-serif);font-size:clamp(2rem,4.6vw,4rem);font-style:italic;line-height:1.1;color:#fff}
.rv-band-cite{margin:0;font-size:16px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--rv-accent)}

/* Team */
.rv-team-grid{
  display:grid!important;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:clamp(24px,3vw,48px)!important;
  margin-top:clamp(40px,5vw,72px)!important
}
.rv-team-card{margin:0}
.rv-team-photo{position:relative;margin:0 0 20px!important;aspect-ratio:4/5;overflow:hidden}
.rv-team-photo img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
.rv-team-card h3{margin:0 0 4px;font-size:1.5rem}
.rv-team-role{margin:0 0 12px;font-size:16px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--rv-muted)}
.rv-team-card p:last-child{margin:0;color:var(--rv-muted)}

/* Timeline */
.rv-timeline{margin-top:clamp(40px,5vw,72px)!important;border-top:1px solid var(--rv-border)}
.rv-timeline-item{
  display:grid!important;
  grid-template-columns:minmax(120px,.28fr) minmax(0,1fr);
  gap:clamp(20px,4vw,64px)!important;
  align-items:start!important;
  padding:36px 0;
  border-bottom:1px solid var(--rv-border)
}
.rv-timeline-year{margin:0;font-family:var(--rv-serif);font-size:clamp(2rem,3.4vw,3.2rem);line-height:1;color:var(--rv-forest)}
.rv-timeline-item h3{margin:0 0 8px;font-size:1.5rem}
.rv-timeline-item p:last-child{max-width:52ch;margin:0;color:var(--rv-muted)}

/* Feature checklist */
.rv-feature-list-grid{
  display:grid!important;
  grid-template-columns:minmax(0,1fr) minmax(0,1fr);
  gap:clamp(40px,7vw,120px)!important;
  align-items:start!important
}
.rv-checklist{margin:0;padding:0;list-style:none}
.rv-checklist li{position:relative;padding:18px 0 18px 40px;border-bottom:1px solid var(--rv-border);font-size:18px;line-height:1.5}
.rv-checklist li:first-child{border-top:1px solid var(--rv-border)}
.rv-checklist li::before{content:"✓";position:absolute;left:6px;top:18px;font-weight:700;color:var(--rv-forest)}

/* Long-form text in two columns */
.rv-columns-text{column-count:2;column-gap:clamp(40px,6vw,96px)}
.rv-columns-text p{margin:0 0 1.4em;font-size:18px;line-height:1.85}

/* Responsive for the additions */
@media (max-width:1100px){
  .rv-steps{grid-template-columns:1fr 1fr}
  .rv-team-grid{grid-template-columns:1fr 1fr}
}
@media (max-width:900px){
  .rv-feature-list-grid{grid-template-columns:1fr!important}
  .rv-columns-text{column-count:1}
  .admin-bar.rv-header-is-overlay .site-header{top:calc(46px + var(--rv-announce-h,0px))}
  .admin-bar.rv-header-is-overlay .site-header.is-scrolled{top:46px}
  .rv-hero-image{min-height:600px}
}
@media (max-width:680px){
  .rv-steps,
  .rv-team-grid{grid-template-columns:1fr!important}
  .rv-timeline-item{grid-template-columns:1fr!important;gap:10px!important;padding:28px 0}
  .rv-hero-image{padding:calc(var(--rv-header-h) + 40px) 18px 56px}
  .rv-page-header{padding:64px 18px 48px}
  .rv-band{padding:72px 18px}
}

/* ==========================================================================
   Revelate 2.0: layout utilities
   A fixed, pre-tested, responsive vocabulary. Any page can be composed from
   these without writing new layout CSS, which is what keeps imported designs
   from breaking on a real site.
   ========================================================================== */

/* Section tones (classes as well as block styles) */
.rv-section--paper{background:var(--rv-paper)}
.rv-section--forest{background:var(--rv-forest);color:rgba(255,255,255,.86)}
.rv-section--forest :where(h1,h2,h3,h4,h5,h6){color:#fff}
.rv-section--forest .rv-kicker,
.rv-section--forest .rv-section-lede{color:rgba(255,255,255,.72)}
.rv-section--forest a:not(.wp-block-button__link){color:#fff}
.rv-section--dark .wp-block-button:not(.is-style-outline) .wp-block-button__link,
.rv-section--forest .wp-block-button:not(.is-style-outline) .wp-block-button__link{
  background:var(--rv-accent);
  color:var(--rv-on-accent,var(--rv-ink));
  border:1px solid var(--rv-accent)
}
.rv-section--dark .wp-block-button.is-style-outline .wp-block-button__link,
.rv-section--forest .wp-block-button.is-style-outline .wp-block-button__link{
  background:transparent;
  color:#fff;
  border:1px solid rgba(255,255,255,.55)
}
.rv-section--flush-top{padding-top:0}
.rv-section--flush-bottom{padding-bottom:0}

/* Grids: 2, 3 or 4 equal columns that stack on smaller screens */
.rv-grid{
  display:grid!important;
  gap:var(--rv-gap,clamp(24px,3vw,48px))!important;
  align-items:start!important
}
.rv-grid>*{margin:0!important;min-width:0}
.rv-grid--2{grid-template-columns:repeat(2,minmax(0,1fr))}
.rv-grid--3{grid-template-columns:repeat(3,minmax(0,1fr))}
.rv-grid--4{grid-template-columns:repeat(4,minmax(0,1fr))}
.rv-grid--center{align-items:center!important}
.rv-grid--top-space{margin-top:clamp(40px,5vw,72px)!important}

/* Split: two columns, media and text */
.rv-split{
  display:grid!important;
  grid-template-columns:minmax(0,1fr) minmax(0,1fr);
  gap:clamp(32px,6vw,110px)!important;
  align-items:center!important
}
.rv-split>*{margin:0!important;min-width:0}
.rv-split--left-wide{grid-template-columns:minmax(0,1.3fr) minmax(0,1fr)}
.rv-split--right-wide{grid-template-columns:minmax(0,1fr) minmax(0,1.3fr)}
.rv-split--reverse>:first-child{order:2}

/* Image shapes */
.rv-ratio-1x1,
.rv-ratio-4x5,
.rv-ratio-3x2,
.rv-ratio-16x9{margin:0;overflow:hidden}
.rv-ratio-1x1{aspect-ratio:1/1}
.rv-ratio-4x5{aspect-ratio:4/5}
.rv-ratio-3x2{aspect-ratio:3/2}
.rv-ratio-16x9{aspect-ratio:16/9}
.rv-ratio-1x1 img,
.rv-ratio-4x5 img,
.rv-ratio-3x2 img,
.rv-ratio-16x9 img{display:block;width:100%;height:100%;object-fit:cover}

/* Alignment helpers */
.rv-center{text-align:center}
.rv-center .wp-block-buttons{justify-content:center}
.rv-narrow{max-width:44rem;margin-left:auto!important;margin-right:auto!important}

/* Media card: image, title, text */
.rv-media-card{margin:0}
.rv-media-card-image{
  margin:0 0 20px!important;
  aspect-ratio:4/5;
  overflow:hidden;
  border-radius:var(--rv-radius,0)
}
.rv-media-card-image img{display:block;width:100%;height:100%;object-fit:cover;transition:transform .7s var(--rv-ease)}
.rv-media-card:hover .rv-media-card-image img{transform:scale(1.035)}
.rv-media-card h3{margin:0 0 8px;font-size:1.5rem;line-height:1.15}
.rv-media-card p{margin:0;color:var(--rv-muted)}


/* Image tile: reusable photographic card with a safe gradient overlay.
   Use inside rv-grid/rv-grid--N; all siblings inherit identical geometry. */
.rv-image-tile{
  position:relative;
  min-width:0;
  min-height:clamp(280px,30vw,420px);
  overflow:hidden;
  background:#111;
  color:#fff;
  isolation:isolate
}
.rv-image-tile-media{
  position:absolute;
  inset:0;
  margin:0!important;
  width:100%;
  height:100%;
  overflow:hidden
}
.rv-image-tile-media img{
  display:block;
  width:100%;
  height:100%;
  object-fit:cover;
  transition:transform .7s var(--rv-ease)
}
.rv-image-tile::after{
  content:"";
  position:absolute;
  inset:0;
  z-index:1;
  pointer-events:none;
  background:linear-gradient(180deg,rgba(0,0,0,.02) 34%,rgba(0,0,0,.82) 100%)
}
.rv-image-tile-content{
  position:absolute;
  z-index:2;
  left:clamp(20px,2.2vw,30px);
  right:clamp(20px,2.2vw,30px);
  bottom:clamp(20px,2.2vw,28px);
  color:#fff
}
.rv-image-tile-content :where(h2,h3,h4,p,a){color:inherit}
.rv-image-tile-kicker{
  margin:0 0 8px!important;
  font-size:12px;
  line-height:1.3;
  font-weight:700;
  letter-spacing:.13em;
  text-transform:uppercase
}
.rv-image-tile-title{
  margin:0!important;
  font-size:clamp(1.55rem,2.2vw,2.1rem)!important;
  line-height:1.08!important
}
.rv-image-tile-text{margin:10px 0 0!important;font-size:16px;line-height:1.5;color:rgba(255,255,255,.88)!important}
.rv-image-tile-link{margin:14px 0 0!important;font-weight:700}
.rv-image-tile-link a{text-decoration:none;color:#fff}
.rv-image-tile:hover .rv-image-tile-media img{transform:scale(1.035)}
@media (max-width:680px){.rv-image-tile{min-height:340px}}

/* Stat: one figure and its label */
.rv-stat{margin:0;padding-top:20px;border-top:1px solid var(--rv-border)}
.rv-stat-value{
  margin:0 0 8px;
  font-family:var(--rv-serif);
  font-size:clamp(2.6rem,5vw,4.5rem);
  line-height:1;
  color:var(--rv-ink)
}
.rv-stat-label{margin:0;font-size:16px;color:var(--rv-muted)}
.rv-section--dark .rv-stat{border-color:rgba(255,255,255,.2)}
.rv-section--dark .rv-stat-value{color:var(--rv-accent)}
.rv-section--dark .rv-stat-label{color:rgba(255,255,255,.72)}
.rv-section--forest .rv-stat{border-color:rgba(255,255,255,.22)}
.rv-section--forest .rv-stat-value{color:#fff}
.rv-section--forest .rv-stat-label{color:rgba(255,255,255,.75)}

@media (max-width:1100px){
  .rv-grid--4,
  .rv-grid--3{grid-template-columns:repeat(2,minmax(0,1fr))}
  .rv-grid--3>:last-child:nth-child(odd){grid-column:1 / -1}
}
@media (max-width:900px){
  .rv-split,
  .rv-split--left-wide,
  .rv-split--right-wide{grid-template-columns:1fr!important}
  .rv-split--reverse>:first-child{order:0}
}
@media (max-width:680px){
  .rv-grid--2,
  .rv-grid--3,
  .rv-grid--4{grid-template-columns:1fr!important}
}

/* Wrapper groups inside grids: allowed to shrink so a long word cannot force sideways scrolling */
.rv-split-copy,
.rv-timeline-body,
.rv-feature-list-copy,
.rv-quote-portrait-copy{min-width:0}

/* WordPress adds a top margin to every sibling after the first inside a normal
   group. Inside a grid the spacing comes from the grid gap, so cancel it. */
.rv-card-grid>*,
.rv-steps>*,
.rv-team-grid>*,
.rv-gallery-grid>*,
.rv-hero-grid>*,
.rv-feature-grid>*,
.rv-intro-grid>*,
.rv-faq-layout>*,
.rv-contact-grid>*,
.rv-cta-grid>*,
.rv-quote-grid>*,
.rv-quote-portrait>*,
.rv-team-row>*,
.rv-logo-strip>*,
.rv-feature-list-grid>*,
.rv-stats-layout>*,
.rv-stat-support>*,
.rv-hero-meta>*,
.rv-timeline-item>*{margin-block-start:0!important}

/* Quote: do not inherit WordPress' default quote border or paragraph spacing */
.wp-block-quote.rv-quote{border:0;padding:0}
.rv-quote p{margin:0;color:inherit;font:inherit;line-height:inherit}

/* Cards: keep titles level across a row, whatever the length of the text */
.rv-card{justify-content:flex-start}
.rv-card-number{margin-bottom:clamp(40px,5vw,72px)}

/* Air between a section heading and the grid that follows it */
.rv-shell>.rv-card-grid,
.rv-shell>.rv-steps,
.rv-shell>.rv-team-grid,
.rv-shell>.rv-timeline,
.rv-shell>.rv-gallery-grid{margin-block-start:clamp(40px,5vw,72px)!important}

/* Logo size (Customize > Site Identity). The header height follows the logo. */
:root{--rv-logo-scale:1}
@media (max-width:900px){:root{--rv-logo-scale:.72}}
.site-header .custom-logo{object-fit:contain;max-width:55vw}
.rv-logo-w .site-header .custom-logo{width:calc(var(--rv-logo-w) * var(--rv-logo-scale));max-height:none}
.rv-logo-h .site-header .custom-logo{height:calc(var(--rv-logo-h) * var(--rv-logo-scale));max-height:none}
.rv-logo-w:not(.rv-logo-h) .site-header .custom-logo{height:auto}
.rv-logo-h:not(.rv-logo-w) .site-header .custom-logo{width:auto}

/* ---- Service list, get-started paths and reviews (2.1.0) ---- */
.rv-service-list>*,
.rv-paths>*,
.rv-reviews>*,
.rv-service>*,
.rv-path>*,
.rv-review>*,
.rv-team-list>*{margin-block-start:0!important}
.rv-shell>.rv-service-list,
.rv-shell>.rv-paths,
.rv-shell>.rv-reviews,
.rv-shell>.rv-team-list{margin-block-start:clamp(40px,5vw,72px)!important}

/* Service list: rows that work for any number of services */
.rv-service-list{display:block!important;border-top:1px solid var(--rv-border)}
.rv-service{
  display:grid!important;
  grid-template-columns:64px minmax(0,1fr) minmax(0,1.5fr);
  gap:6px clamp(20px,4vw,64px);
  align-items:baseline;
  padding:clamp(24px,3vw,38px) 0;
  border-bottom:1px solid var(--rv-border)
}
.rv-service-number{margin:0;font-size:16px;font-weight:700;letter-spacing:.14em;color:var(--rv-muted)}
.rv-service h3{margin:0;font-size:clamp(1.5rem,2.3vw,2.2rem);line-height:1.15}
.rv-service-text{margin:0;font-size:17px;line-height:1.75;color:var(--rv-muted)}
.rv-section--dark .rv-service-list,
.rv-section--dark .rv-service{border-color:rgba(255,255,255,.2)}
.rv-section--dark .rv-service-number,
.rv-section--dark .rv-service-text{color:rgba(255,255,255,.76)}

/* Get-started paths: whole tile is one link */
.rv-paths{display:grid!important;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px!important}
.rv-path{
  position:relative;
  display:flex!important;
  flex-direction:column;
  justify-content:space-between;
  min-height:260px;
  padding:32px!important;
  border:1px solid var(--rv-border);
  background:#fff;
  transition:transform .3s,border-color .3s
}
.rv-path h3{margin:0 0 12px;font-size:clamp(1.5rem,2vw,2rem);line-height:1.1}
.rv-path p{margin:0;font-size:16px;line-height:1.65;color:var(--rv-muted)}
.rv-path .rv-path-link{margin-top:28px;font-weight:700;color:var(--rv-ink)}
.rv-path-link a{color:inherit;text-decoration:none}
.rv-path-link a::after{content:"";position:absolute;inset:0}
.rv-path-link a:focus-visible{outline:none}
.rv-path:hover{transform:translateY(-4px);border-color:var(--rv-accent)}
.rv-path:focus-within{outline:3px solid var(--rv-accent);outline-offset:3px}
.rv-section--dark .rv-path{background:rgba(255,255,255,.05);border-color:rgba(255,255,255,.22)}
.rv-section--dark .rv-path p{color:rgba(255,255,255,.78)}
.rv-section--dark .rv-path .rv-path-link{color:#fff}

/* Reviews. The star rating is real text for screen readers, drawn as stars. */
.rv-reviews{display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px!important}
.rv-review{display:flex!important;flex-direction:column;padding:32px!important;border:1px solid var(--rv-border);background:#fff}
.rv-review-stars{position:relative;height:22px;margin:0 0 20px;overflow:hidden;white-space:nowrap;text-indent:110%;font-size:16px}
.rv-review-stars::before{content:"★★★★★";position:absolute;left:0;top:0;text-indent:0;font-size:20px;line-height:22px;letter-spacing:3px;color:var(--rv-accent)}
.rv-review-stars.rv-rating-4::before{content:"★★★★☆"}
.rv-review-stars.rv-rating-3::before{content:"★★★☆☆"}
.rv-review-text{margin:0 0 24px;font-size:17px;line-height:1.75;color:var(--rv-ink)}
.rv-review .rv-review-author{margin:0;margin-block-start:auto!important;font-size:16px;color:var(--rv-ink)}
.rv-review .rv-review-source{margin:2px 0 0;font-size:16px;color:var(--rv-muted)}

/* Four people sit in one row instead of leaving one on their own */
@media (min-width:1101px){
  .rv-team-grid:has(>:nth-child(4):last-child){grid-template-columns:repeat(4,minmax(0,1fr))}
}
@media (max-width:1100px){
  .rv-paths{grid-template-columns:repeat(2,minmax(0,1fr))}
  .rv-reviews{grid-template-columns:repeat(2,minmax(0,1fr))}
  .rv-reviews>:last-child:nth-child(odd){grid-column:1 / -1}
}
@media (max-width:900px){
  .rv-service{grid-template-columns:1fr}
}
@media (max-width:680px){
  .rv-paths,
  .rv-reviews{grid-template-columns:1fr!important}
  .rv-reviews>:last-child:nth-child(odd){grid-column:auto}
  .rv-path{min-height:0}
  .rv-quote-portrait{grid-template-columns:1fr!important}
  .rv-quote-portrait-photo{max-width:220px}
  .rv-team-row{grid-template-columns:48px 1fr!important}
  .rv-team-row>p{grid-column:1 / -1}
  .rv-team-row-photo{width:48px;height:48px}
}

/* Three steps fill the row; a form or shop block gets air below its heading */
@media (min-width:1101px){
  .rv-steps:has(>:nth-child(3):last-child){grid-template-columns:repeat(3,minmax(0,1fr))}
}
.rv-shell:not(.rv-contact-grid)>.rv-form-placeholder{margin-block-start:clamp(32px,4vw,56px)!important}

/* ==========================================================================
   Revelate 2.3 — design-quality guardrails and expanded composition layer
   ========================================================================== */

/* Typography is intentionally controlled. Premium design should come from
   composition, spacing and image direction rather than oversized headlines. */
.rv-page-title{font-size:var(--rv-page-title-size);line-height:1.02}
.rv-section-heading{font-size:var(--rv-section-title-size);line-height:1.06;max-width:22ch}
.rv-hero-title{font-size:var(--rv-hero-title-size);line-height:1.01;max-width:16ch}
.rv-hero-monumental .rv-hero-title{font-size:var(--rv-monumental-title-size);line-height:.99;max-width:18ch}
.rv-page-header-title{font-size:var(--rv-page-header-title-size);line-height:1.02;max-width:18ch}
.rv-hero-image-title{font-size:var(--rv-image-hero-title-size);line-height:1.01;max-width:16ch}
.rv-intro-title{font-size:var(--rv-intro-title-size);line-height:1.04;max-width:20ch}
.rv-feature-panel h2{font-size:var(--rv-section-title-size);line-height:1.05;max-width:13ch}
.rv-card h3{font-size:clamp(1.45rem,2vw,2.05rem);line-height:1.08;margin:36px 0 14px}
.rv-quote{font-size:clamp(2rem,3.6vw,3.5rem);line-height:1.08}
.rv-band-quote{font-size:clamp(1.85rem,3.5vw,3.25rem);line-height:1.12}
.rv-type-band{padding-block:clamp(52px,6.5vw,92px)}
.rv-type-band .rv-type-display{
  max-width:24ch;
  margin:0;
  font-family:var(--rv-serif);
  font-size:clamp(2.25rem,4.3vw,4.6rem);
  line-height:1.02;
  letter-spacing:var(--rv-display-tracking,-.028em);
  text-wrap:balance
}

/* Keep every header composition logo-left. `centred` remains as a backwards-
   compatible setting but deliberately renders as a conventional left-led row. */
.rv-header-layout-centred{--rv-header-h:88px}
.rv-header-layout-centred .rv-header-shell{
  width:var(--rv-shell);
  height:var(--rv-header-h);
  min-height:0;
  margin:0 auto;
  padding:0;
  display:flex;
  flex-direction:row;
  align-items:center;
  justify-content:space-between;
  justify-items:initial;
  gap:28px
}
.rv-header-layout-centred .site-branding{margin-right:auto}
.rv-header-layout-centred .primary-navigation{justify-content:flex-end}
.rv-header-layout-centred .primary-navigation #primary-menu{justify-content:flex-end}

/* A calm, useful monumental hero rather than a billboard. */
.rv-hero-monumental{align-items:center}
.rv-hero-monumental .rv-hero-meta{margin-top:38px;grid-template-columns:minmax(0,1.2fr) auto;gap:36px 56px;align-items:center}
.rv-hero-monumental .rv-hero-meta p{max-width:54ch;font-size:17px;line-height:1.72}

/* Equal-height overlap. The image is cropped to the copy panel rather than
   looking like an unrelated tile beside it. */
.rv-overlap{align-items:stretch!important}
.rv-overlap>:first-child{height:100%;min-height:360px;overflow:hidden}
.rv-overlap>:first-child img{display:block;width:100%;height:100%;object-fit:cover}
.rv-overlap>:nth-child(2){display:flex;flex-direction:column;justify-content:center;min-height:360px}
.rv-overlap .rv-section-heading{max-width:14ch}

/* Card groups are a deliberate surface, not four cards sitting over an
   unexplained scrollbar/background. */
.rv-card-deck{
  display:grid!important;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:18px!important;
  padding:18px!important;
  background:color-mix(in srgb,var(--rv-cream) 68%,#fff);
  border:1px solid var(--rv-border)
}
.rv-card-deck>*{margin-block-start:0!important;min-width:0}
.rv-card-deck .rv-card{min-height:250px;padding:28px!important;background:#fff;border:1px solid var(--rv-border);box-shadow:none}
.rv-card-deck .rv-card p{font-size:16px;line-height:1.65}
.rv-card-deck .rv-card h3{margin-top:28px}

/* Existing rail becomes a real rail only when content cannot fit. It uses a
   coherent track surface and hides the browser's heavy scrollbar. */
.rv-scroll-row{
  grid-auto-columns:minmax(260px,31%);
  gap:16px!important;
  padding:18px!important;
  background:color-mix(in srgb,var(--rv-cream) 68%,#fff);
  border:1px solid var(--rv-border);
  scrollbar-width:none
}
.rv-scroll-row::-webkit-scrollbar{display:none}
.rv-scroll-row .rv-card{min-height:250px;padding:28px!important}

/* Five-image mosaic: one cohesive composition with a shared footprint. All
   cells crop intentionally, so the fifth image cannot fall out as an orphan. */
.rv-mosaic{
  display:grid!important;
  grid-template-columns:repeat(12,minmax(0,1fr));
  grid-template-rows:repeat(6,minmax(54px,6.5vw));
  gap:clamp(10px,1.3vw,18px)!important
}
.rv-mosaic>*{margin:0!important;min-width:0;height:100%;overflow:hidden}
.rv-mosaic>figure img{display:block;width:100%;height:100%;object-fit:cover}
.rv-mosaic--3>:nth-child(1){grid-column:1 / span 7;grid-row:1 / span 6}
.rv-mosaic--3>:nth-child(2){grid-column:8 / -1;grid-row:1 / span 3}
.rv-mosaic--3>:nth-child(3){grid-column:8 / -1;grid-row:4 / span 3}
.rv-mosaic--4>:nth-child(1){grid-column:1 / span 7;grid-row:1 / span 4}
.rv-mosaic--4>:nth-child(2){grid-column:8 / -1;grid-row:1 / span 3}
.rv-mosaic--4>:nth-child(3){grid-column:1 / span 4;grid-row:5 / span 2}
.rv-mosaic--4>:nth-child(4){grid-column:5 / -1;grid-row:4 / span 3}
.rv-mosaic--5>:nth-child(1){grid-column:1 / span 7;grid-row:1 / span 4}
.rv-mosaic--5>:nth-child(2){grid-column:8 / -1;grid-row:1 / span 3}
.rv-mosaic--5>:nth-child(3){grid-column:8 / -1;grid-row:4 / span 3}
.rv-mosaic--5>:nth-child(4){grid-column:1 / span 3;grid-row:5 / span 2}
.rv-mosaic--5>:nth-child(5){grid-column:4 / span 4;grid-row:5 / span 2}

/* Footer CTA: stronger hierarchy, real separation and an appropriately sized
   action. */
.rv-footer-cta{padding:clamp(64px,7vw,96px) 24px}
.rv-footer-cta-inner{
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  gap:48px clamp(72px,9vw,150px);
  align-items:center;
  justify-content:normal
}
.rv-footer-cta-inner>div{max-width:760px}
.rv-footer-cta h2{font-size:clamp(2rem,3.3vw,3rem);line-height:1.08;margin:0 0 14px}
.rv-footer-cta p{font-size:17px;line-height:1.68;max-width:58ch}
.rv-footer-cta-button{
  min-height:58px;
  min-width:150px;
  justify-content:center;
  padding:0 36px;
  font-size:17px;
  line-height:1.2
}

/* ----- 2.3 composition primitives --------------------------------------- */
.rv-grid-2,.rv-grid-3,.rv-grid-4{
  display:grid!important;
  align-items:stretch!important;
  gap:clamp(18px,2.5vw,34px)!important
}
.rv-grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}
.rv-grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}
.rv-grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}
.rv-grid-2>*,.rv-grid-3>*,.rv-grid-4>*{margin-block-start:0!important;min-width:0}
.rv-media-cover,.rv-media-cover figure{height:100%}
.rv-media-cover img{display:block;width:100%;height:100%;object-fit:cover}
.rv-surface{padding:clamp(24px,3vw,40px)!important;background:#fff;border:1px solid var(--rv-border)}
.rv-surface--soft{background:var(--rv-cream)}
.rv-surface--dark{background:var(--rv-ink);color:#fff}
.rv-surface--dark :where(h2,h3,h4,p){color:#fff}
.rv-section--compact{padding-block:clamp(52px,6vw,86px)}
.rv-section--generous{padding-block:clamp(96px,10vw,150px)}
.rv-width-narrow{max-width:760px!important}
.rv-width-medium{max-width:980px!important}
.rv-width-wide{max-width:1180px!important}
.rv-bento{
  display:grid!important;
  grid-template-columns:repeat(12,minmax(0,1fr));
  grid-auto-rows:minmax(90px,auto);
  gap:18px!important
}
.rv-bento>*{margin-block-start:0!important;min-width:0}
.rv-bento>:nth-child(1){grid-column:1 / span 7;grid-row:span 2}
.rv-bento>:nth-child(2){grid-column:8 / -1}
.rv-bento>:nth-child(3){grid-column:8 / -1}
.rv-bento>:nth-child(4){grid-column:1 / span 5}
.rv-bento>:nth-child(5){grid-column:6 / -1}
.rv-media-inset{position:relative;min-height:clamp(440px,54vw,720px);overflow:hidden}
.rv-media-inset>figure{position:absolute;inset:0;margin:0!important}
.rv-media-inset>figure img{display:block;width:100%;height:100%;object-fit:cover}
.rv-media-inset>.wp-block-group{position:absolute;z-index:2;left:clamp(20px,5vw,72px);bottom:clamp(20px,5vw,72px);max-width:min(520px,calc(100% - 40px));padding:clamp(26px,3.5vw,46px)!important;background:var(--rv-paper);box-shadow:var(--rv-shadow)}
.rv-media-inset .rv-section-heading{font-size:clamp(2rem,3.2vw,3rem);max-width:15ch}

@media (max-width:1100px){
  .rv-card-deck{grid-template-columns:repeat(2,minmax(0,1fr))}
  .rv-grid-4{grid-template-columns:repeat(2,minmax(0,1fr))}
}

@media (max-width:900px){
  .rv-header-layout-centred .rv-header-shell{display:flex;height:var(--rv-header-h);padding:0;justify-content:space-between;gap:24px}
  .rv-overlap>:first-child{min-height:340px;height:420px}
  .rv-overlap>:nth-child(2){min-height:0}
  .rv-footer-cta-inner{grid-template-columns:1fr;gap:28px}
  .rv-footer-cta-button{justify-self:start}
  .rv-grid-3{grid-template-columns:repeat(2,minmax(0,1fr))}
  .rv-bento{grid-template-columns:1fr 1fr}
  .rv-bento>*{grid-column:auto!important;grid-row:auto!important}
  .rv-bento>:first-child{grid-column:1 / -1!important}
}

@media (max-width:680px){
  /* Override older mobile rules that made headings larger than desktop. */
  .rv-hero-title{font-size:clamp(2.55rem,11vw,3.6rem);line-height:1.01;max-width:12ch}
  .rv-hero-monumental{min-height:520px}
  .rv-hero-monumental .rv-hero-title{font-size:clamp(2.65rem,11.5vw,3.75rem);line-height:1;max-width:13ch}
  .rv-hero-monumental .rv-hero-meta{display:block;margin-top:28px}
  .rv-hero-monumental .rv-hero-meta .wp-block-buttons{margin-top:24px}
  .rv-section-heading,.rv-intro-title{font-size:clamp(2rem,8.8vw,2.75rem);line-height:1.05}
  .rv-page-header-title,.rv-hero-image-title{font-size:clamp(2.4rem,10vw,3.35rem);line-height:1.02}
  .rv-feature-panel h2{font-size:clamp(2rem,8.8vw,2.75rem)}
  .rv-type-band .rv-type-display{font-size:clamp(2.15rem,9vw,3rem);line-height:1.04}
  .rv-quote{font-size:clamp(1.9rem,8.5vw,2.65rem)}
  .rv-card h3{font-size:clamp(1.45rem,7vw,1.85rem)}
  .rv-card-deck,.rv-grid-2,.rv-grid-3,.rv-grid-4,.rv-bento{grid-template-columns:1fr!important}
  .rv-card-deck{padding:12px!important;gap:12px!important}
  .rv-card-deck .rv-card{min-height:0}
  .rv-scroll-row{grid-auto-columns:84%;padding:12px!important}
  .rv-mosaic{grid-template-columns:1fr 1fr;grid-template-rows:none;grid-auto-rows:180px}
  .rv-mosaic>*{grid-column:auto!important;grid-row:auto!important}
  .rv-mosaic>:first-child{grid-column:1 / -1!important;grid-row:span 2!important}
  .rv-mosaic>:last-child:nth-child(odd){grid-column:1 / -1!important}
  .rv-media-inset{min-height:560px}
  .rv-media-inset>.wp-block-group{left:18px;right:18px;bottom:18px;max-width:none}
  .rv-footer-cta-button{min-height:56px;padding:0 32px;font-size:16.5px}
}
@media (max-width:900px){
  .rv-overlap,.rv-overlap>*{width:100%!important;max-width:100%!important;min-width:0!important}
  .rv-overlap>:first-child{height:420px!important}
}

/* Optional two-row header. Branding stays firmly left aligned. */
.rv-header-layout-stacked{--rv-header-h:126px}
.rv-header-layout-stacked .rv-header-shell{
  height:auto;
  min-height:var(--rv-header-h);
  display:grid;
  grid-template-columns:1fr;
  align-content:center;
  justify-items:start;
  gap:10px
}
.rv-header-layout-stacked .site-branding{justify-self:start}
.rv-header-layout-stacked .primary-navigation{width:100%;justify-content:space-between}
.rv-header-layout-stacked .primary-navigation #primary-menu{justify-content:flex-start}
.rv-header-layout-stacked .rv-header-cta{margin-left:auto}
@media (max-width:900px){
  .rv-header-layout-stacked{--rv-header-h:88px}
  .rv-header-layout-stacked .rv-header-shell{display:flex;height:var(--rv-header-h);min-height:0;justify-content:space-between;gap:24px}
  .rv-header-layout-stacked .primary-navigation{display:block;width:auto}
}


/* ==========================================================================
   Revelate 2.4 — design discipline layer
   Uses a fixed spacing/type vocabulary, fitted image compositions, stronger
   action hierarchy and small icons at their intended visual scale.
   ========================================================================== */
:root{
  --rv-support:#356B7A;
  --rv-accent-soft:#EFE4D3;
  --rv-accent-strong:#967236;
  --rv-accent-deep:#886C38;
  --rv-support-soft:#D7DFDC;
  --rv-support-deep:#2A555E;
  --rv-on-accent:#0D1B16;
  --rv-on-support:#FFFFFF;
  --rv-on-accent-deep:#FFFFFF;
  --rv-on-support-deep:#FFFFFF;
  --rv-surface-soft:#F3F2EF;
  --rv-space-1:4px;--rv-space-2:8px;--rv-space-3:12px;--rv-space-4:16px;
  --rv-space-5:24px;--rv-space-6:32px;--rv-space-7:48px;--rv-space-8:64px;
  --rv-space-9:96px;--rv-space-10:128px;--rv-space-11:192px;
  --rv-text-xs:.75rem;--rv-text-sm:.875rem;--rv-text-base:1rem;--rv-text-md:1.125rem;
  --rv-text-lg:1.25rem;--rv-text-xl:1.5rem;--rv-text-2xl:1.875rem;--rv-text-3xl:2.25rem;
  --rv-text-4xl:3rem;--rv-text-5xl:3.75rem;--rv-text-6xl:4.5rem;
}

/* Action hierarchy: one obvious primary action, with progressively quieter alternatives. */
.wp-block-button.is-style-rv-secondary .wp-block-button__link{
  background:var(--rv-accent-soft);color:var(--rv-ink);border:1px solid transparent
}
.wp-block-button.is-style-rv-secondary .wp-block-button__link:hover{background:var(--rv-accent);color:var(--rv-on-accent,var(--rv-ink))}
.wp-block-button.is-style-rv-quiet .wp-block-button__link{background:transparent;color:currentColor;border:1px solid transparent;padding-inline:var(--rv-space-2)}
.wp-block-button.is-style-rv-quiet .wp-block-button__link:hover{background:var(--rv-surface-soft)}
.wp-block-button.is-style-rv-raised .wp-block-button__link{box-shadow:0 8px 20px rgba(13,27,22,.14);transform:translateY(0)}
.wp-block-button.is-style-rv-raised .wp-block-button__link:hover{transform:translateY(-2px);box-shadow:0 12px 28px rgba(13,27,22,.18)}

/* Closing CTA: the copy and action are one visual unit, not two things at opposite edges. */
.rv-cta{padding-block:clamp(72px,8vw,104px)}
.rv-cta .rv-cta-grid{
  width:min(780px,100%);
  display:grid!important;
  grid-template-columns:minmax(0,360px) minmax(300px,340px);
  gap:40px!important;
  justify-content:center;
  align-items:center!important
}
.rv-cta h2{max-width:12ch;font-size:clamp(2.25rem,3.6vw,3.35rem);line-height:1.04;margin:0}
.rv-cta-copy{max-width:380px}
.rv-cta-copy p{max-width:38ch;margin:0 0 var(--rv-space-5);font-size:17px;line-height:1.65}
.rv-cta .wp-block-buttons{gap:var(--rv-space-3);align-items:center}
.rv-cta .wp-block-button__link{min-height:60px;min-width:190px;display:inline-flex;align-items:center;justify-content:center;padding:0 34px;font-size:16px;font-weight:700}

.rv-footer-cta{padding:clamp(72px,8vw,104px) 24px}
.rv-footer-cta-inner{
  width:min(820px,100%);
  grid-template-columns:minmax(0,520px) max-content;
  gap:48px;
  justify-content:center;
  align-items:center
}
.rv-footer-cta-inner>div{max-width:520px}
.rv-footer-cta h2{max-width:18ch;font-size:clamp(2.1rem,3vw,2.8rem);line-height:1.07;margin-bottom:var(--rv-space-4)}
.rv-footer-cta p{max-width:50ch;font-size:17px;line-height:1.65}
.rv-footer-cta-button{min-width:196px;min-height:60px;padding:0 36px;font-size:16.5px;font-weight:700;justify-content:center}

/* Fitted gallery: a single rectangular footprint. Cells can crop, never overlap. */
.rv-mosaic,.rv-gallery-fit{
  position:relative;
  display:grid!important;
  grid-template-columns:minmax(0,1.6fr) repeat(2,minmax(0,1fr));
  grid-template-rows:repeat(2,minmax(210px,1fr));
  gap:clamp(12px,1.5vw,20px)!important;
  min-height:clamp(460px,48vw,680px);
  isolation:isolate
}
.rv-mosaic>*,.rv-gallery-fit>*{position:relative!important;inset:auto!important;transform:none!important;margin:0!important;min-width:0;min-height:0;overflow:hidden}
.rv-mosaic.rv-gallery-fit>*{margin:0!important;margin-top:0!important;translate:none!important}
.rv-mosaic>figure img,.rv-gallery-fit>figure img{display:block;width:100%;height:100%;object-fit:cover;object-position:center}
.rv-mosaic--3>:nth-child(1),.rv-gallery-fit--3>:nth-child(1){grid-column:1 / 2;grid-row:1 / 3}
.rv-mosaic--3>:nth-child(2),.rv-gallery-fit--3>:nth-child(2){grid-column:2 / 4;grid-row:1 / 2}
.rv-mosaic--3>:nth-child(3),.rv-gallery-fit--3>:nth-child(3){grid-column:2 / 4;grid-row:2 / 3}
.rv-mosaic--4>:nth-child(1),.rv-gallery-fit--4>:nth-child(1){grid-column:1 / 2;grid-row:1 / 3}
.rv-mosaic--4>:nth-child(2),.rv-gallery-fit--4>:nth-child(2){grid-column:2 / 4;grid-row:1 / 2}
.rv-mosaic--4>:nth-child(3),.rv-gallery-fit--4>:nth-child(3){grid-column:2 / 3;grid-row:2 / 3}
.rv-mosaic--4>:nth-child(4),.rv-gallery-fit--4>:nth-child(4){grid-column:3 / 4;grid-row:2 / 3}
.rv-mosaic--5>:nth-child(1),.rv-gallery-fit--5>:nth-child(1){grid-column:1 / 2;grid-row:1 / 3}
.rv-mosaic--5>:nth-child(2),.rv-gallery-fit--5>:nth-child(2){grid-column:2 / 3;grid-row:1 / 2}
.rv-mosaic--5>:nth-child(3),.rv-gallery-fit--5>:nth-child(3){grid-column:3 / 4;grid-row:1 / 2}
.rv-mosaic--5>:nth-child(4),.rv-gallery-fit--5>:nth-child(4){grid-column:2 / 3;grid-row:2 / 3}
.rv-mosaic--5>:nth-child(5),.rv-gallery-fit--5>:nth-child(5){grid-column:3 / 4;grid-row:2 / 3}

/* True masonry is separate from a fitted gallery: intrinsic image ratios flow down columns. */
.rv-masonry{column-count:3;column-gap:clamp(12px,1.5vw,20px)}
.rv-masonry>*{display:inline-block;width:100%;margin:0 0 clamp(12px,1.5vw,20px)!important;break-inside:avoid;vertical-align:top}
.rv-masonry figure img,.rv-masonry>figure img{display:block;width:100%;height:auto}

/* Small two-tone source icons are used at their intended scale inside a larger chip. */
.rv-icon-feature{position:relative;padding:var(--rv-space-6)!important}
.rv-icon-feature::before,.rv-icon-text::before{
  content:"";display:block;width:24px;height:24px;flex:0 0 24px;background:currentColor;
  -webkit-mask:var(--rv-icon) center/contain no-repeat;mask:var(--rv-icon) center/contain no-repeat
}
.rv-icon-feature::before{width:24px;height:24px;margin:12px 12px 36px;background:var(--rv-support);box-shadow:0 0 0 12px var(--rv-support-soft)}
.rv-icon-feature h3{margin-top:0}
.rv-icon-text{display:flex;align-items:center;gap:var(--rv-space-3)}
.rv-icon--mail{--rv-icon:url(../icons/icon-mail.svg)}
.rv-icon--phone{--rv-icon:url(../icons/icon-phone-ring.svg)}
.rv-icon--location{--rv-icon:url(../icons/icon-location-pin.svg)}
.rv-icon--home{--rv-icon:url(../icons/icon-home.svg)}
.rv-icon--check{--rv-icon:url(../icons/icon-check.svg)}
.rv-icon--star{--rv-icon:url(../icons/icon-star.svg)}
.rv-icon--calendar{--rv-icon:url(../icons/icon-calendar.svg)}
.rv-icon--work{--rv-icon:url(../icons/icon-work.svg)}
.rv-icon--search{--rv-icon:url(../icons/icon-search.svg)}
.rv-icon--chart{--rv-icon:url(../icons/icon-chart.svg)}
.rv-icon--lock{--rv-icon:url(../icons/icon-lock.svg)}
.rv-icon--bolt{--rv-icon:url(../icons/icon-bolt.svg)}
.rv-icon--users{--rv-icon:url(../icons/icon-user-group.svg)}
.rv-icon--trophy{--rv-icon:url(../icons/icon-trophy.svg)}
.rv-icon--shop{--rv-icon:url(../icons/icon-shopping-bag.svg)}
.rv-icon--calculator{--rv-icon:url(../icons/icon-calculator.svg)}
.rv-icon--presentation{--rv-icon:url(../icons/icon-presentation.svg)}
.rv-icon--camera{--rv-icon:url(../icons/icon-camera.svg)}
.rv-icon--certificate{--rv-icon:url(../icons/icon-certificate.svg)}
.rv-icon--help{--rv-icon:url(../icons/icon-help.svg)}

/* Additional marketing-page compositions: centred-media hero and icon-led features. */
.rv-hero-centered{padding:clamp(84px,10vw,140px) 24px 0;text-align:center;background:var(--rv-paper);overflow:hidden}
.rv-hero-centered .rv-shell{max-width:1100px}
.rv-hero-centered-copy{max-width:760px;margin:0 auto clamp(44px,6vw,76px)!important}
.rv-hero-centered .rv-hero-title{max-width:15ch;margin-inline:auto;color:var(--rv-ink)}
.rv-hero-centered .rv-hero-kicker{color:var(--rv-muted)}
.rv-hero-centered .wp-block-buttons{justify-content:center;margin-top:var(--rv-space-6)}
.rv-hero-centered-media{width:min(980px,100%);margin:0 auto!important;aspect-ratio:16/9;overflow:hidden}
.rv-hero-centered-media img{width:100%;height:100%;object-fit:cover;display:block}
.rv-icon-grid{display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(18px,2.5vw,32px)!important}
.rv-icon-grid>*{margin-block-start:0!important;min-width:0}

@media (max-width:900px){
  .rv-cta .rv-cta-grid,.rv-footer-cta-inner{grid-template-columns:1fr!important;gap:var(--rv-space-6)!important}
  .rv-cta-copy,.rv-footer-cta-inner>div{max-width:620px}
  .rv-footer-cta-button{justify-self:start}
  .rv-masonry{column-count:2}
  .rv-icon-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:680px){
  .rv-cta{padding-block:var(--rv-space-8)}
  .rv-cta h2{font-size:clamp(2.1rem,9vw,2.8rem)}
  .rv-cta .wp-block-button__link,.rv-footer-cta-button{min-height:58px;min-width:168px}
  .rv-mosaic,.rv-gallery-fit{grid-template-columns:1fr 1fr!important;grid-template-rows:none!important;grid-auto-rows:180px;min-height:0}
  .rv-mosaic>*,.rv-gallery-fit>*{grid-column:auto!important;grid-row:auto!important}
  .rv-mosaic>:first-child,.rv-gallery-fit>:first-child{grid-column:1 / -1!important;grid-row:span 2!important}
  .rv-mosaic>:last-child:nth-child(even),.rv-gallery-fit>:last-child:nth-child(even){grid-column:1 / -1!important}
  .rv-masonry{column-count:1}
  .rv-icon-grid{grid-template-columns:1fr}
  .rv-hero-centered{padding-top:var(--rv-space-8)}
}

/* CTA variants: same hierarchy rules, different composition families. */
.rv-cta--centered .rv-cta-centered-shell{max-width:760px;text-align:center;margin-inline:auto}
.rv-cta--centered h2{max-width:14ch;margin-inline:auto}
.rv-cta--centered .rv-cta-copy{max-width:620px;margin:var(--rv-space-5) auto 0!important}
.rv-cta--centered .rv-cta-copy p{max-width:48ch;margin-inline:auto}
.rv-cta--centered .wp-block-buttons{justify-content:center}
.rv-cta--panel{background:var(--rv-paper)!important;color:var(--rv-ink)!important}
.rv-cta--panel .rv-cta-panel{
  width:min(920px,100%);margin-inline:auto!important;padding:clamp(32px,5vw,56px);
  background:var(--rv-surface-soft);display:grid!important;grid-template-columns:minmax(0,1fr) max-content;
  gap:clamp(32px,4vw,56px);align-items:center
}
.rv-cta--panel .rv-cta-panel-copy{max-width:620px}
.rv-cta--panel h2{color:var(--rv-ink)!important;max-width:16ch;font-size:clamp(2rem,3vw,2.8rem)}
.rv-cta--panel p{color:var(--rv-muted)!important;max-width:50ch;margin-bottom:0}
.rv-cta--panel .wp-block-button__link{min-width:190px;min-height:60px;display:inline-flex;align-items:center;justify-content:center;padding:0 34px;font-weight:700}
@media (max-width:900px){
  .rv-cta--panel .rv-cta-panel{grid-template-columns:1fr!important}
  .rv-cta--panel .wp-block-buttons{justify-content:flex-start}
}
.rv-cta--panel .rv-cta-panel>*{margin-block-start:0!important}
.rv-gallery-fit-image,.rv-masonry-image{min-width:0}


/* ----- Mega menu columns -----
 * Base, media-query-independent styling for the column heading/list markup
 * the mega menu walker outputs (inc/mega-menu.php). The panel itself
 * (position, grid) is desktop-only, below, since on mobile the columns
 * simply stack inside the already-open menu like any other sub-menu.
 */
.rv-mega-col{width:100%}
.rv-mega-col-title{
  display:block;
  padding:0 0 6px;
  font-size:16px;
  font-weight:700;
  letter-spacing:.06em;
  text-transform:uppercase;
  color:var(--rv-muted,#5a6861);
  border-bottom:1px solid var(--rv-border);
  margin-bottom:10px
}
.rv-mega-col-desc{display:block;margin:-6px 0 10px;font-size:16px;line-height:1.5;color:var(--rv-muted)}
.rv-mega-col-list{margin:0;padding:0;list-style:none}
.rv-mega-col-list li{border:0}
.rv-mega-col-list a{display:block;padding:8px 0;font-size:16px;font-weight:500}

/* ----- Primary navigation dropdowns -----
 * WordPress already outputs nested <ul class="sub-menu"> markup. These rules
 * keep child pages as true dropdown items on desktop instead of flattening every
 * nested UL into the top-level flex row. On mobile the submenu remains visibly
 * nested inside the open menu so every destination is keyboard/touch accessible.
 */
@media (min-width:901px){
  #primary-menu>li{position:relative}
  #primary-menu>li.menu-item-has-children>a{
    padding-right:18px
  }
  #primary-menu>li.menu-item-has-children>a::before{
    content:"";
    position:absolute;
    right:1px;
    top:50%;
    width:6px;
    height:6px;
    border-right:1.5px solid currentColor;
    border-bottom:1.5px solid currentColor;
    transform:translateY(-70%) rotate(45deg);
    transform-origin:center;
    transition:transform .2s ease
  }
  #primary-menu>li.menu-item-has-children:hover>a::before,
  #primary-menu>li.menu-item-has-children:focus-within>a::before{
    transform:translateY(-30%) rotate(225deg)
  }
  .primary-navigation #primary-menu .sub-menu{
    position:absolute;
    z-index:1000;
    top:calc(100% - 2px);
    left:-18px;
    display:flex;
    flex-direction:column;
    align-items:stretch;
    gap:0;
    width:max-content;
    min-width:300px;
    max-width:min(360px,calc(100vw - 32px));
    padding:12px 0;
    margin:0;
    background:#fff;
    border:1px solid rgba(17,17,17,.10);
    border-radius:var(--rv-radius-sm,6px);
    box-shadow:0 18px 42px rgba(20,10,30,.16);
    opacity:0;
    visibility:hidden;
    pointer-events:none;
    transform:translateY(8px);
    transition:opacity .18s ease,transform .18s ease,visibility .18s ease
  }
  .primary-navigation #primary-menu li:hover>.sub-menu,
  .primary-navigation #primary-menu li:focus-within>.sub-menu{
    opacity:1;
    visibility:visible;
    pointer-events:auto;
    transform:translateY(0)
  }
  .primary-navigation #primary-menu .sub-menu li{
    position:relative;
    width:100%;
    border:0
  }
  .primary-navigation #primary-menu .sub-menu a,
  .rv-header-overlay-light .site-header .primary-navigation #primary-menu .sub-menu a{
    display:flex;
    width:100%;
    min-height:0;
    padding:11px 18px;
    color:var(--rv-ink)!important;
    font-size:16px;
    font-weight:600;
    line-height:1.3;
    white-space:normal
  }
  .primary-navigation #primary-menu .sub-menu a::after{display:none}
  .primary-navigation #primary-menu .sub-menu a:hover,
  .primary-navigation #primary-menu .sub-menu a:focus-visible{
    background:var(--rv-paper,#f7f4ef)
  }
  .primary-navigation #primary-menu .sub-menu .sub-menu{
    top:-13px;
    left:calc(100% - 4px)
  }

  /* Mega menu: a top-level item marked as mega gets a full-width panel of
     columns instead of the narrow flyout list above. !important guards the
     properties the generic .sub-menu rules above also set, since both
     selectors match the same element (the panel is still a .sub-menu). */
  .primary-navigation #primary-menu .rv-mega-panel{
    display:grid!important;
    grid-template-columns:repeat(var(--rv-mega-cols,3),minmax(0,1fr));
    gap:8px 32px!important;
    width:min(var(--rv-shell),calc(100vw - 48px))!important;
    max-width:none!important;
    min-width:0!important;
    left:50%!important;
    padding:32px!important;
    align-items:start;
    transform:translateX(-50%) translateY(8px)!important
  }
  .primary-navigation #primary-menu li.rv-mega:hover>.rv-mega-panel,
  .primary-navigation #primary-menu li.rv-mega:focus-within>.rv-mega-panel{
    transform:translateX(-50%) translateY(0)!important
  }
  .rv-mega-cols-2{--rv-mega-cols:2}
  .rv-mega-cols-3{--rv-mega-cols:3}
  .rv-mega-cols-4{--rv-mega-cols:4}
  .primary-navigation #primary-menu .rv-mega-col-title{color:var(--rv-muted,#5a6861)!important}
  .primary-navigation #primary-menu .rv-mega-col-title:hover,
  .primary-navigation #primary-menu .rv-mega-col-title:focus-visible{
    background:transparent!important;
    color:var(--rv-ink)!important
  }
  .primary-navigation #primary-menu .rv-mega-col-list a{
    color:var(--rv-ink)!important;
    font-size:16px!important;
    font-weight:500!important;
    padding:8px 0!important
  }
  .primary-navigation #primary-menu .rv-mega-col-list a:hover,
  .primary-navigation #primary-menu .rv-mega-col-list a:focus-visible{
    background:transparent!important;
    color:var(--rv-accent,#B88B45)!important
  }
}

@media (max-width:900px){
  .primary-navigation #primary-menu>li.menu-item-has-children>a{
    font-weight:700
  }
  .primary-navigation #primary-menu .sub-menu{
    position:static;
    display:block;
    width:auto;
    min-width:0;
    max-width:none;
    padding:0 0 8px 18px;
    margin:0;
    background:transparent;
    border:0;
    border-left:1px solid rgba(255,255,255,.20);
    border-radius:0;
    box-shadow:none;
    opacity:1;
    visibility:visible;
    pointer-events:auto;
    transform:none
  }
  .primary-navigation #primary-menu .sub-menu li{
    border-bottom:0
  }
  .primary-navigation #primary-menu .sub-menu a{
    min-height:44px;
    padding:8px 0 8px 14px;
    font-size:16px!important;
    font-weight:500;
    line-height:1.35;
    opacity:.86
  }
}

/* ==========================================================================
   Revelate 2.5 — advanced native theme controls
   ========================================================================== */

/* Per-page content width and spacing. */
.rv-content-width-narrow{--rv-prose-max:640px}
.rv-content-width-standard{--rv-prose-max:760px}
.rv-content-width-wide{--rv-prose-max:980px}
.rv-content-spacing-none .rv-content-shell{padding-top:0;padding-bottom:0}
.rv-content-spacing-compact .rv-content-shell{padding-top:56px;padding-bottom:72px}
.rv-content-spacing-standard .rv-content-shell{padding-top:100px;padding-bottom:120px}
.rv-content-spacing-spacious .rv-content-shell{padding-top:140px;padding-bottom:170px}

/* Optional classic sidebar for standard WordPress content. */
.rv-content-with-sidebar{
  display:grid;
  grid-template-columns:minmax(0,1fr) var(--rv-sidebar-w,320px);
  gap:var(--rv-sidebar-gap,56px);
  align-items:start
}
.rv-content-with-sidebar.rv-sidebar-layout-left{grid-template-columns:var(--rv-sidebar-w,320px) minmax(0,1fr)}
.rv-content-with-sidebar.rv-sidebar-layout-left>.rv-main-column{grid-column:2;grid-row:1}
.rv-content-with-sidebar.rv-sidebar-layout-left>.rv-sidebar{grid-column:1;grid-row:1}
.rv-main-column{min-width:0}
.rv-sidebar{min-width:0}
.rv-sidebar .widget{padding:28px 0;border-top:1px solid var(--rv-border)}
.rv-sidebar .widget:first-child{border-top:0;padding-top:0}
.rv-sidebar .widget-title{margin:0 0 18px;font-size:1.35rem;line-height:1.15}
.rv-sidebar ul{list-style:none;margin:0;padding:0}
.rv-sidebar li+li{margin-top:10px}
.rv-sidebar a{text-decoration:none}
.rv-sidebar a:hover{text-decoration:underline;text-underline-offset:.18em}
.rv-sidebar input[type="search"]{min-width:0}

/* Header search uses native details/summary so it works without extra JS. */
.rv-header-search{position:relative}
.rv-header-search summary{
  list-style:none;width:44px;height:44px;display:grid;place-items:center;cursor:pointer;
  color:inherit;line-height:1;border-radius:var(--rv-btn-radius,0);background:transparent
}
.rv-header-search summary::-webkit-details-marker{display:none}
.rv-header-search summary:hover{background:transparent;color:inherit}
.rv-header-search-icon{
  display:block;width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.8;
  stroke-linecap:round;stroke-linejoin:round;pointer-events:none
}
.rv-header-search-panel{
  position:absolute;right:0;top:calc(100% + 12px);z-index:1200;width:min(420px,calc(100vw - 48px));
  padding:18px;background:#fff;color:var(--rv-ink);border:1px solid var(--rv-border);box-shadow:0 18px 60px rgba(0,0,0,.16)
}
.rv-header-search-panel .search-form{display:flex;gap:8px;margin:0}
.rv-header-search-panel .search-field{min-width:0;flex:1}
.rv-header-search-panel .search-submit{flex:none}

/* Additional post metadata. */
.rv-post-meta,.rv-single-meta{font-size:16px;color:var(--rv-muted)}
.rv-single-meta{display:flex;flex-wrap:wrap;gap:10px 22px;margin-top:18px}
.rv-single-meta a{color:inherit}

/* Back to top. */
.rv-scroll-top{
  position:fixed;right:24px;bottom:24px;z-index:1100;width:48px;height:48px;display:grid;place-items:center;
  background:var(--rv-ink);color:#fff;text-decoration:none;border:1px solid rgba(255,255,255,.14);
  box-shadow:0 10px 34px rgba(0,0,0,.18);border-radius:var(--rv-btn-radius,0);font-size:21px
}
.rv-scroll-top:hover{transform:translateY(-2px)}

@media (max-width:1100px){
  .rv-content-with-sidebar{grid-template-columns:minmax(0,1fr) minmax(240px,30%);gap:36px}
}
@media (max-width:900px){
  .rv-content-with-sidebar,.rv-content-with-sidebar.rv-sidebar-layout-left{grid-template-columns:1fr;gap:52px}
  .rv-content-with-sidebar.rv-sidebar-layout-left>.rv-main-column,
  .rv-content-with-sidebar.rv-sidebar-layout-left>.rv-sidebar{grid-column:1;grid-row:auto}
  .rv-content-with-sidebar.rv-sidebar-layout-left>.rv-sidebar{order:2}
  .rv-header-search{width:100%;border-bottom:1px solid rgba(255,255,255,.12)}
  .rv-header-search summary{width:100%;height:52px;display:flex;justify-content:flex-start;padding:0 18px;color:#fff}
  .rv-header-search-panel{position:static;width:100%;box-shadow:none;border:0;border-top:1px solid rgba(255,255,255,.12);padding:14px 18px;background:rgba(255,255,255,.96)}
  .rv-header-cta--desktop-only{display:none!important}
  .rv-scroll-top{right:16px;bottom:16px;width:44px;height:44px}
}

/* ----- 2.6 global header/footer editor ---------------------------------- */
.rv-primary-menu{display:flex;align-items:center;min-width:0}
.rv-header-social{display:flex;align-items:center;gap:12px}
.rv-header-social a{font-size:16px;text-decoration:none;color:inherit;white-space:nowrap}
.rv-header-html{font-size:16px;line-height:1.4}
.rv-header-html :where(p,ul,ol){margin:0}
.rv-header-widget{display:flex;align-items:center}
.rv-header-widget .widget{margin:0}
.rv-header-widget .widget-title{display:none}
.rv-header-widget :where(p,ul,ol){margin-block:0}

.rv-footer-column{min-width:0}
.rv-footer-column>*+*{margin-top:28px}
.rv-footer-widget .widget{margin:0}
.rv-footer-widget .widget-title{margin:0 0 12px;color:#fff;font-size:16px}
.rv-footer-widget :where(p,li,a),.rv-footer-html{font-size:16px;line-height:1.7;color:inherit}
.rv-footer-widget ul{margin:0;padding-left:18px}
.rv-footer-html :where(p,ul,ol){margin-top:0}
.site-footer:not(.rv-footer-layout-compact):not(.rv-footer-layout-editorial) .rv-footer-shell.rv-footer-cols-1{grid-template-columns:minmax(0,1fr)}
.site-footer:not(.rv-footer-layout-compact):not(.rv-footer-layout-editorial) .rv-footer-shell.rv-footer-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}
.site-footer:not(.rv-footer-layout-compact):not(.rv-footer-layout-editorial) .rv-footer-shell.rv-footer-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}
.site-footer:not(.rv-footer-layout-compact):not(.rv-footer-layout-editorial) .rv-footer-shell.rv-footer-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}
.rv-footer-base>.rv-footer-copyright,.rv-footer-base>.rv-footer-credit{margin:0}

@media (max-width:900px){
  .rv-primary-menu{display:block;width:100%}
  .rv-header-social{display:flex;flex-wrap:wrap;gap:8px 18px;margin-top:14px}
  .rv-header-social a{color:#fff!important;font-size:16px}
  .rv-header-html,.rv-header-widget{margin-top:14px;color:#fff}
  .rv-header-html a,.rv-header-widget a{color:#fff}
  .rv-header-widget{display:block}
  .site-footer:not(.rv-footer-layout-compact):not(.rv-footer-layout-editorial) .rv-footer-shell.rv-footer-cols-3,.site-footer:not(.rv-footer-layout-compact):not(.rv-footer-layout-editorial) .rv-footer-shell.rv-footer-cols-4{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:620px){
  .site-footer:not(.rv-footer-layout-compact):not(.rv-footer-layout-editorial) .rv-footer-shell.rv-footer-cols-2,.site-footer:not(.rv-footer-layout-compact):not(.rv-footer-layout-editorial) .rv-footer-shell.rv-footer-cols-3,.site-footer:not(.rv-footer-layout-compact):not(.rv-footer-layout-editorial) .rv-footer-shell.rv-footer-cols-4{grid-template-columns:1fr}
}
/* Builder-aware legacy header layouts. The visual variants still tune scale,
   but the component editor owns the right-hand composition. */
.rv-header-layout-split .primary-navigation{display:flex;align-items:center;justify-content:flex-end;gap:26px;width:auto}
.rv-header-layout-split .primary-navigation .rv-primary-menu{min-width:0}
.rv-header-widget a,.rv-header-html a,.rv-header-social a{min-height:0;display:inline;font-weight:inherit;position:static}


/* Revelate 3.0.4 — ecommerce header utilities and social icons. */
.rv-header-searchbar{width:clamp(260px,34vw,620px);min-width:0}
.rv-header-searchbar form{display:flex;align-items:stretch;width:100%;margin:0}
.rv-header-searchbar .rv-header-searchbar-label{display:block;flex:1;min-width:0;margin:0}
.rv-header-searchbar :where(.search-field,input[type="search"]){width:100%;min-width:0;height:46px;margin:0;padding:0 15px;border:1px solid var(--rv-border);border-right:0;border-radius:var(--rv-btn-radius,0) 0 0 var(--rv-btn-radius,0);background:#fff;color:var(--rv-ink);font-size:16px}
.rv-header-searchbar :where(.search-submit,button[type="submit"]){
  display:grid!important;place-items:center!important;flex:0 0 46px;width:46px!important;min-width:46px!important;height:46px!important;margin:0!important;padding:0!important;
  border:1px solid var(--rv-border)!important;border-left:0!important;border-radius:0 var(--rv-btn-radius,0) var(--rv-btn-radius,0) 0!important;
  background:#fff!important;color:var(--rv-ink)!important;box-shadow:none!important;font-size:0!important;position:relative!important;cursor:pointer
}
.rv-header-searchbar :where(.search-submit,button[type="submit"]):hover,
.rv-header-searchbar :where(.search-submit,button[type="submit"]):focus,
.rv-header-searchbar :where(.search-submit,button[type="submit"]):active{
  background:#fff!important;color:var(--rv-ink)!important;border-color:var(--rv-border)!important;box-shadow:none!important;transform:none!important
}
.rv-header-searchbar-icon{display:block;width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;pointer-events:none}
.rv-header-cart{position:relative;width:44px;height:44px;display:inline-grid!important;place-items:center;color:inherit;text-decoration:none}
.rv-header-cart-icon{width:23px;height:23px;background:currentColor;-webkit-mask:url(../icons/icon-cart.svg) center/contain no-repeat;mask:url(../icons/icon-cart.svg) center/contain no-repeat}
.rv-header-cart-count{position:absolute;top:1px;right:0;min-width:19px;height:19px;padding:0 5px;display:grid;place-items:center;border-radius:999px;background:var(--rv-accent);color:var(--rv-ink);font-size:12px;line-height:1;font-weight:800}
.rv-social-link{gap:8px}
.rv-social-icon{display:inline-block;width:20px;height:20px;flex:none;background:currentColor}
.rv-social-icon--instagram{-webkit-mask:url(../icons/icon-instagram.svg) center/contain no-repeat;mask:url(../icons/icon-instagram.svg) center/contain no-repeat}
.rv-social-icon--facebook{-webkit-mask:url(../icons/icon-facebook.svg) center/contain no-repeat;mask:url(../icons/icon-facebook.svg) center/contain no-repeat}
.rv-social-icon--linkedin{-webkit-mask:url(../icons/icon-linkedin.svg) center/contain no-repeat;mask:url(../icons/icon-linkedin.svg) center/contain no-repeat}
.rv-social-icon--youtube{-webkit-mask:url(../icons/icon-youtube.svg) center/contain no-repeat;mask:url(../icons/icon-youtube.svg) center/contain no-repeat}
.rv-social-icon--x{-webkit-mask:url(../icons/icon-x.svg) center/contain no-repeat;mask:url(../icons/icon-x.svg) center/contain no-repeat}
.rv-header-social .rv-social-label{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
.rv-header-social a{width:40px;height:40px;display:inline-grid!important;place-items:center;border-radius:999px}
.rv-header-social a:hover{background:color-mix(in srgb,currentColor 8%,transparent)}
@media (max-width:900px){
  .primary-navigation .rv-header-searchbar{width:100%;margin:20px 0 0}
  .primary-navigation .rv-header-searchbar :where(.search-field,input[type="search"]){height:48px}
  .primary-navigation .rv-header-searchbar :where(.search-submit,button[type="submit"]){height:48px;color:var(--rv-ink)}
  .primary-navigation .rv-header-cart{margin-top:16px;color:#fff}
  .primary-navigation .rv-header-social a{color:#fff!important;background:rgba(255,255,255,.08)}
}

/* ==========================================================================
   Revelate 2.9 accessibility guardrails
   These defaults cover mechanics the theme can make safe automatically.
   Content meaning and complete WCAG conformance still require human review.
   ========================================================================== */
:root{--rv-focus-offset:24px}
html{scroll-padding-top:var(--rv-focus-offset)}
:where([id],a[href],button,input,select,textarea,summary,[tabindex]:not([tabindex="-1"])){scroll-margin-top:var(--rv-focus-offset)}
#primary[tabindex="-1"]:focus{outline:none}
:where(button,input:not([type="hidden"]):not([type="checkbox"]):not([type="radio"]),select,textarea,summary){min-height:44px}
:where(input[type="checkbox"],input[type="radio"]){min-width:24px;min-height:24px;accent-color:var(--rv-accent)}
summary{cursor:pointer}
.site-branding a,
.rv-header-search summary,
.rv-header-social a,
.rv-footer-brand a,
.rv-footer-social a,
.rv-footer-nav a{min-height:44px;display:inline-flex;align-items:center}
:where(a,button,input,textarea,select,summary,[tabindex]):focus-visible{outline-color:var(--rv-focus,var(--rv-accent));outline-width:3px;outline-style:solid;outline-offset:4px}
@media (forced-colors:active){
  :where(a,button,input,textarea,select,summary,[tabindex]):focus-visible{outline:3px solid Highlight;outline-offset:4px}
  .wp-block-button__link,.rv-button,.rv-header-cta,.rv-footer-cta-button{border:1px solid ButtonText}
}

/* ==========================================================================
   Revelate 3.0 — Container 2.0
   Portable layout presets for the native core/group block. The editor stores
   only CSS classes; the content itself remains standard Gutenberg markup.
   ========================================================================== */
.rv-container{position:relative;min-width:0}
.rv-container.rv-width-content{width:var(--rv-prose);max-width:100%;margin-inline:auto}
.rv-container.rv-width-wide{width:var(--rv-shell);max-width:100%;margin-inline:auto}
.rv-container.rv-width-full{width:100%;max-width:none}

.rv-container.rv-layout-stack{display:flex!important;flex-direction:column}
.rv-container.rv-layout-row{display:flex!important;flex-direction:row;align-items:stretch;flex-wrap:nowrap}
.rv-container.rv-layout-grid-2,
.rv-container.rv-layout-grid-3,
.rv-container.rv-layout-grid-4,
.rv-container.rv-layout-grid-30-70,
.rv-container.rv-layout-grid-40-60,
.rv-container.rv-layout-grid-60-40,
.rv-container.rv-layout-grid-70-30{display:grid!important;align-items:stretch}
.rv-container.rv-layout-grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}
.rv-container.rv-layout-grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}
.rv-container.rv-layout-grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}
.rv-container.rv-layout-grid-30-70{grid-template-columns:minmax(0,3fr) minmax(0,7fr)}
.rv-container.rv-layout-grid-40-60{grid-template-columns:minmax(0,2fr) minmax(0,3fr)}
.rv-container.rv-layout-grid-60-40{grid-template-columns:minmax(0,3fr) minmax(0,2fr)}
.rv-container.rv-layout-grid-70-30{grid-template-columns:minmax(0,7fr) minmax(0,3fr)}
.rv-container[class*="rv-layout-"]>*{min-width:0;margin-block-start:0!important}

.rv-container.rv-gap-d-0{gap:0!important}.rv-container.rv-gap-d-s{gap:var(--rv-space-3,12px)!important}
.rv-container.rv-gap-d-m{gap:var(--rv-space-5,24px)!important}.rv-container.rv-gap-d-l{gap:var(--rv-space-7,48px)!important}
.rv-container.rv-gap-d-xl{gap:var(--rv-space-9,96px)!important}
.rv-container.rv-pad-d-0{padding:0!important}.rv-container.rv-pad-d-s{padding:var(--rv-space-4,16px)!important}
.rv-container.rv-pad-d-m{padding:var(--rv-space-6,32px)!important}.rv-container.rv-pad-d-l{padding:var(--rv-space-8,64px)!important}
.rv-container.rv-pad-d-xl{padding:var(--rv-space-10,128px)!important}

.rv-container.rv-minh-50{min-height:50vh}.rv-container.rv-minh-75{min-height:75vh}.rv-container.rv-minh-screen{min-height:100svh}
.rv-container.rv-valign-start{align-items:start}.rv-container.rv-valign-center{align-items:center}.rv-container.rv-valign-end{align-items:end}.rv-container.rv-valign-stretch{align-items:stretch}
.rv-container.rv-layout-stack.rv-valign-start{justify-content:flex-start}.rv-container.rv-layout-stack.rv-valign-center{justify-content:center}.rv-container.rv-layout-stack.rv-valign-end{justify-content:flex-end}
.rv-container.rv-position-sticky{position:sticky;top:var(--rv-focus-offset,24px);align-self:start}
.rv-container.rv-overflow-hidden{overflow:hidden}.rv-container.rv-overflow-clip{overflow:clip}

.rv-container.rv-overlay-dark,
.rv-container.rv-overlay-light,
.rv-container.rv-overlay-gradient{isolation:isolate;overflow:hidden}
.rv-container.rv-overlay-dark::before,
.rv-container.rv-overlay-light::before,
.rv-container.rv-overlay-gradient::before{content:"";position:absolute;inset:0;z-index:0;pointer-events:none}
.rv-container.rv-overlay-dark::before{background:rgba(0,0,0,.48)}
.rv-container.rv-overlay-light::before{background:rgba(255,255,255,.58)}
.rv-container.rv-overlay-gradient::before{background:linear-gradient(180deg,rgba(0,0,0,.05),rgba(0,0,0,.72))}
.rv-container[class*="rv-overlay-"]>*{position:relative;z-index:1}

@media (max-width:1100px){
  .rv-container.rv-layout-grid-4{grid-template-columns:repeat(2,minmax(0,1fr))}
  .rv-container.rv-gap-d-xl{gap:var(--rv-space-8,64px)!important}
  .rv-container.rv-pad-d-xl{padding:var(--rv-space-9,96px)!important}
}
@media (max-width:900px){
  .rv-container.rv-layout-row{flex-direction:column}
  .rv-container.rv-layout-grid-2,
  .rv-container.rv-layout-grid-3,
  .rv-container.rv-layout-grid-4,
  .rv-container.rv-layout-grid-30-70,
  .rv-container.rv-layout-grid-40-60,
  .rv-container.rv-layout-grid-60-40,
  .rv-container.rv-layout-grid-70-30{grid-template-columns:1fr}
  .rv-container.rv-position-sticky{position:relative;top:auto}
  .rv-container.rv-pad-d-l{padding:var(--rv-space-7,48px)!important}
  .rv-container.rv-pad-d-xl{padding:var(--rv-space-8,64px)!important}
  .rv-container.rv-gap-sm-0{gap:0!important}.rv-container.rv-gap-sm-s{gap:var(--rv-space-3,12px)!important}
  .rv-container.rv-gap-sm-m{gap:var(--rv-space-5,24px)!important}.rv-container.rv-gap-sm-l{gap:var(--rv-space-7,48px)!important}
  .rv-container.rv-pad-sm-0{padding:0!important}.rv-container.rv-pad-sm-s{padding:var(--rv-space-4,16px)!important}
  .rv-container.rv-pad-sm-m{padding:var(--rv-space-6,32px)!important}.rv-container.rv-pad-sm-l{padding:var(--rv-space-7,48px)!important}
}

/* ==========================================================================
   Revelate 3.0 — Header Builder 2.0 and navigation styles
   ========================================================================== */
@media (min-width:901px){
  .rv-mobile-branding,.rv-menu-toggle{display:none!important}
  .rv-header-shell{width:var(--rv-shell);height:auto;min-height:var(--rv-header-h);margin:0 auto;display:block}
  .primary-navigation,
  .rv-header-layout-split .primary-navigation,
  .rv-header-layout-centred .primary-navigation,
  .rv-header-layout-stacked .primary-navigation{display:block;width:100%;gap:0}
  .rv-header-row{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;column-gap:clamp(18px,3vw,44px)}
  .rv-header-row--top{min-height:38px;border-bottom:1px solid color-mix(in srgb,currentColor 12%,transparent);font-size:16px}
  .rv-header-row--main{min-height:var(--rv-header-h)}
  .rv-header-zone{display:flex;align-items:center;gap:22px;min-width:0}
  .rv-header-zone--left{justify-content:flex-start}
  .rv-header-zone--center{justify-content:center}
  .rv-header-zone--right{justify-content:flex-end}
  .rv-header-zone .primary-navigation{display:block}
  .rv-secondary-menu-list{display:flex;align-items:center;gap:18px;margin:0;padding:0;list-style:none}
  .rv-secondary-menu a{display:inline-flex;align-items:center;min-height:36px;text-decoration:none;color:inherit;font-size:16px;font-weight:500}
  .rv-header-row--top .site-branding .custom-logo{max-height:30px}
  .rv-header-row--top .rv-site-name{font-size:19px}
}

/* Primary-menu visual recipes. The menu hierarchy remains normal WordPress. */
.rv-nav-style-clean .primary-navigation .rv-nav-link::after,
.rv-nav-style-minimal .primary-navigation .rv-nav-link::after,
.rv-nav-style-pills .primary-navigation .rv-nav-link::after,
.rv-nav-style-segmented .primary-navigation .rv-nav-link::after,
.rv-nav-style-editorial .primary-navigation .rv-nav-link::after,
.rv-nav-style-bold .primary-navigation .rv-nav-link::after,
.rv-nav-style-button .primary-navigation .rv-nav-link::after{display:none}
.rv-nav-style-underline .primary-navigation .rv-nav-link::after{display:block}
.rv-nav-style-clean .primary-navigation .rv-nav-link:hover,
.rv-nav-style-clean .primary-navigation .current-menu-item>.rv-nav-link{color:var(--rv-accent)}
.rv-nav-style-pills .primary-navigation #primary-menu{gap:6px!important}
.rv-nav-style-pills .primary-navigation #primary-menu>li>.rv-nav-link{min-height:40px;padding:0 13px;border-radius:999px}
.rv-nav-style-pills .primary-navigation #primary-menu>li>.rv-nav-link:hover,
.rv-nav-style-pills .primary-navigation #primary-menu>.current-menu-item>.rv-nav-link{background:var(--rv-accent-soft);color:var(--rv-ink)}
.rv-nav-style-segmented .primary-navigation #primary-menu{gap:0!important;padding:4px;border:1px solid var(--rv-border);border-radius:var(--rv-btn-radius);background:color-mix(in srgb,var(--rv-paper) 86%,transparent)}
.rv-nav-style-segmented .primary-navigation #primary-menu>li>.rv-nav-link{min-height:38px;padding:0 13px;border-radius:var(--rv-btn-radius)}
.rv-nav-style-segmented .primary-navigation #primary-menu>li>.rv-nav-link:hover,
.rv-nav-style-segmented .primary-navigation #primary-menu>.current-menu-item>.rv-nav-link{background:var(--rv-ink);color:#fff}
.rv-nav-style-editorial .primary-navigation #primary-menu>li>.rv-nav-link{font-size:1rem!important;font-weight:600!important;letter-spacing:.13em;text-transform:uppercase}
.rv-nav-style-bold .primary-navigation #primary-menu>li>.rv-nav-link{font-size:clamp(1rem,1.25vw,1.2rem)!important;font-weight:700!important;letter-spacing:-.015em}
.rv-nav-style-minimal .primary-navigation #primary-menu>li>.rv-nav-link{font-weight:500!important;opacity:.72}
.rv-nav-style-minimal .primary-navigation #primary-menu>li>.rv-nav-link:hover,
.rv-nav-style-minimal .primary-navigation #primary-menu>.current-menu-item>.rv-nav-link{opacity:1}
.rv-nav-style-button .primary-navigation #primary-menu{gap:8px!important}
.rv-nav-style-button .primary-navigation #primary-menu>li>.rv-nav-link{min-height:40px;padding:0 14px;border:1px solid currentColor;border-radius:var(--rv-btn-radius)}
.rv-nav-style-button .primary-navigation #primary-menu>li>.rv-nav-link:hover,
.rv-nav-style-button .primary-navigation #primary-menu>.current-menu-item>.rv-nav-link{background:var(--rv-ink);border-color:var(--rv-ink);color:#fff}

@media (min-width:901px){
  .rv-dropdown-style-soft .primary-navigation #primary-menu .sub-menu{padding:10px;border:0;border-radius:14px;box-shadow:0 20px 60px rgba(0,0,0,.16)}
  .rv-dropdown-style-soft .primary-navigation #primary-menu .sub-menu a{border-radius:8px}
  .rv-dropdown-style-bordered .primary-navigation #primary-menu .sub-menu{padding:6px;border:2px solid var(--rv-ink);border-radius:0;box-shadow:none}
  .rv-dropdown-style-bordered .primary-navigation #primary-menu .sub-menu a{border-bottom:1px solid var(--rv-border)}
  .rv-dropdown-style-bordered .primary-navigation #primary-menu .sub-menu li:last-child>a{border-bottom:0}
}

/* Mobile always keeps the logo outside the collapsible panel. The builder's
   Site Identity instance is hidden only at this breakpoint to avoid duplicate
   navigation landmarks/links. */
@media (max-width:900px){
  .site-header .rv-header-shell,
  .rv-header-layout-split .rv-header-shell,
  .rv-header-layout-centred .rv-header-shell,
  .rv-header-layout-stacked .rv-header-shell{width:var(--rv-shell);height:var(--rv-header-h);min-height:0;margin:0 auto;padding:0;display:flex;align-items:center;justify-content:space-between;gap:20px}
  .rv-mobile-branding{display:block;position:relative;z-index:1202;min-width:0}
  .rv-mobile-branding .site-branding{display:flex}
  .rv-menu-toggle{display:inline-flex;position:relative;z-index:1203}
  .primary-navigation{z-index:1200;color:#fff;background:rgba(13,27,22,.985);background:color-mix(in srgb,var(--rv-ink) 98.5%,transparent)}
  .primary-navigation .rv-header-row,.primary-navigation .rv-header-zone{display:block;width:100%}
  .primary-navigation .rv-header-zone:empty{display:none}
  .primary-navigation .site-branding{display:none!important}
  .primary-navigation .rv-primary-menu,.primary-navigation .rv-secondary-menu{display:block;width:100%}
  .primary-navigation .rv-secondary-menu-list{display:block;margin:0;padding:0;list-style:none}
  .primary-navigation .rv-secondary-menu-list li{border-bottom:1px solid rgba(255,255,255,.12)}
  .primary-navigation .rv-secondary-menu-list a{display:flex;align-items:center;min-height:48px;color:#fff;text-decoration:none;font-size:16px}
  .primary-navigation .rv-header-social,.primary-navigation .rv-header-html,.primary-navigation .rv-header-widget{margin:18px 0 0}
  .primary-navigation #primary-menu{display:block!important;background:transparent!important;border:0!important;padding:0!important}
  .primary-navigation #primary-menu>li>.rv-nav-link{padding:0!important;border:0!important;border-radius:0!important;background:transparent!important;opacity:1!important;text-transform:none!important;letter-spacing:normal!important;font-size:18px!important;color:#fff!important}
  .rv-header-overlay-light .site-header .rv-mobile-branding .rv-site-name{color:#fff}
  .rv-header-overlay-light .site-header .rv-mobile-branding .custom-logo{filter:none}

  /* Default dropdown panel. */
  .rv-mobile-menu-dropdown .primary-navigation{position:fixed;inset:var(--rv-header-h) 0 auto;display:none;max-height:calc(100dvh - var(--rv-header-h));overflow:auto;padding:28px 24px 34px;border-top:1px solid rgba(255,255,255,.12);box-shadow:0 18px 40px rgba(0,0,0,.18)}
  .rv-mobile-menu-dropdown .primary-navigation.is-open{display:block}
  .admin-bar.rv-mobile-menu-dropdown .primary-navigation{top:calc(var(--rv-header-h) + 46px);max-height:calc(100dvh - var(--rv-header-h) - 46px)}

  /* Drawer and fullscreen stay rendered so the opening motion is reliable;
     aria-hidden + inert from revelate.js keep the closed panel inaccessible. */
  .rv-mobile-menu-drawer .primary-navigation{position:fixed;display:block;top:0;right:0;bottom:0;left:auto;width:min(390px,88vw);padding:calc(var(--rv-header-h) + 32px) 28px 40px;overflow:auto;transform:translateX(105%);visibility:hidden;box-shadow:-22px 0 60px rgba(0,0,0,.28);transition:transform .28s var(--rv-ease),visibility .28s}
  .rv-mobile-menu-drawer .primary-navigation.is-open{transform:translateX(0);visibility:visible}
  .admin-bar.rv-mobile-menu-drawer .primary-navigation{top:46px}
  .rv-mobile-menu-fullscreen .primary-navigation{position:fixed;display:flex;flex-direction:column;justify-content:center;inset:0;padding:calc(var(--rv-header-h) + 36px) max(28px,8vw) 44px;overflow:auto;opacity:0;visibility:hidden;transform:scale(.985);transition:opacity .24s ease,transform .24s var(--rv-ease),visibility .24s}
  .rv-mobile-menu-fullscreen .primary-navigation.is-open{opacity:1;visibility:visible;transform:none}
  .admin-bar.rv-mobile-menu-fullscreen .primary-navigation{top:46px}
  .rv-mobile-menu-fullscreen .primary-navigation #primary-menu>li>.rv-nav-link{min-height:58px;font-size:clamp(1.6rem,7vw,2.6rem)!important;font-weight:650!important;line-height:1.1}
}

/* Header spacing presets retain the 2.x stored slugs while Builder 2.0 owns positioning. */
@media (min-width:901px){
  .rv-header-layout-standard{--rv-header-h:88px}
  .rv-header-layout-split{--rv-header-h:98px}
  .rv-header-layout-stacked{--rv-header-h:112px}
  .rv-header-layout-compact{--rv-header-h:72px}
  .rv-header-layout-centred{--rv-header-h:100px}
  .rv-header-layout-split .rv-header-zone{gap:30px}
  .rv-header-layout-stacked .rv-header-row--main{padding-block:10px}
  .rv-header-layout-centred .rv-header-zone--center .site-branding .rv-site-name{font-size:30px}
}
.rv-component-test .rv-card{padding:28px;border:1px solid var(--rv-border);background:#fff;box-shadow:var(--rv-surface-shadow)}
.rv-component-test .rv-card h3{margin-top:0}
.rv-component-test-form{max-width:640px;margin-top:32px}
.rv-component-test-form input,.rv-component-test-form select{width:100%;max-width:100%;padding:10px 12px;border:1px solid var(--rv-border);background:#fff;color:var(--rv-ink)}

/* Navigation recipe contrast on transparent/light-text headers. */
.rv-header-overlay-light.rv-nav-style-pills .primary-navigation #primary-menu>li>.rv-nav-link:hover,
.rv-header-overlay-light.rv-nav-style-pills .primary-navigation #primary-menu>.current-menu-item>.rv-nav-link{background:rgba(255,255,255,.14);color:#fff}
.rv-header-overlay-light.rv-nav-style-segmented .primary-navigation #primary-menu{background:rgba(255,255,255,.08);border-color:rgba(255,255,255,.26)}
.rv-header-overlay-light.rv-nav-style-segmented .primary-navigation #primary-menu>li>.rv-nav-link:hover,
.rv-header-overlay-light.rv-nav-style-segmented .primary-navigation #primary-menu>.current-menu-item>.rv-nav-link{background:#fff;color:var(--rv-ink)!important}
.rv-header-overlay-light.rv-nav-style-button .primary-navigation #primary-menu>li>.rv-nav-link{border-color:rgba(255,255,255,.72)}
.rv-header-overlay-light.rv-nav-style-button .primary-navigation #primary-menu>li>.rv-nav-link:hover,
.rv-header-overlay-light.rv-nav-style-button .primary-navigation #primary-menu>.current-menu-item>.rv-nav-link{background:#fff;border-color:#fff;color:var(--rv-ink)!important}


/* ========================================================================== 
   Revelate 3.0.1 — hardening after range/stress test
   ========================================================================== */

/* Revelate owns horizontal overflow inside explicit components (for example .rv-scroll-row); the document itself should never become wider because an off-canvas element is transformed outside the viewport. */
html{overflow-x:clip}

/* Segmented navigation needs enough internal space for labels and submenu
   chevrons. The small gap keeps the control readable without losing the
   segmented visual treatment. */
.rv-nav-style-segmented .primary-navigation #primary-menu{
  gap:4px!important;
  padding:5px;
}
.rv-nav-style-segmented .primary-navigation #primary-menu>li>.rv-nav-link{
  min-height:42px;
  padding-inline:18px;
}
@media (min-width:901px){
  .rv-nav-style-segmented .primary-navigation #primary-menu>li.menu-item-has-children>.rv-nav-link{padding-right:34px}
  .rv-nav-style-segmented .primary-navigation #primary-menu>li.menu-item-has-children>.rv-nav-link::before{right:14px}
}

/* Container 2.0: WordPress constrained-layout auto margins must not recenter
   individual children inside a deliberate Revelate layout. Stack alignment is
   vertical only; children continue to occupy a predictable full-width column. */
.rv-container[class*="rv-layout-"].is-layout-constrained>:where(:not(.alignleft):not(.alignright):not(.alignfull)){
  margin-left:0!important;
  margin-right:0!important;
}
.rv-container.rv-layout-stack{align-items:stretch!important}
.rv-container.rv-layout-stack>*{max-width:100%;min-width:0}
.rv-container.rv-layout-stack.rv-valign-start{align-items:stretch!important;justify-content:flex-start}
.rv-container.rv-layout-stack.rv-valign-center{align-items:stretch!important;justify-content:center}
.rv-container.rv-layout-stack.rv-valign-end{align-items:stretch!important;justify-content:flex-end}
.rv-container.rv-layout-stack.rv-valign-stretch{align-items:stretch!important;justify-content:stretch}
.rv-container:not(.rv-layout-stack).rv-valign-start{align-items:start}
.rv-container:not(.rv-layout-stack).rv-valign-center{align-items:center}
.rv-container:not(.rv-layout-stack).rv-valign-end{align-items:end}
.rv-container:not(.rv-layout-stack).rv-valign-stretch{align-items:stretch}

/* Reliable media-fill primitive. Use rv-media-fill directly, or choose the
   image block style “Fill Frame”. It is intentionally opt-in: a normal image
   should retain its intrinsic ratio and continue contributing its own height. */
.rv-media-fill,
figure.is-style-rv-fill{
  position:relative;
  overflow:hidden;
  min-width:0;
}
figure.is-style-rv-fill{min-height:clamp(280px,38vw,520px)}
figure.rv-media-fill,figure.is-style-rv-fill{margin:0!important}
.rv-media-fill>img,
.rv-media-fill>figure,
.rv-media-fill>figure>img,
figure.is-style-rv-fill>img{
  display:block;
  width:100%;
  height:100%;
  min-width:0;
}
.rv-media-fill>img,
.rv-media-fill>figure>img,
figure.is-style-rv-fill>img{object-fit:cover;object-position:center}
.rv-media-fill>figure{margin:0!important}
/* When the frame's height comes from min-height rather than a fixed height,
   absolute positioning lets the image fill that used box without depending on
   percentage-height resolution. */
.rv-media-fill:not(figure)>figure,
figure.rv-media-fill>img,
figure.is-style-rv-fill>img{
  position:absolute;
  inset:0;
}

/* Canonical fitted mosaic behaviour. Earlier release rules remain in the file
   so old unversioned compositions keep their vocabulary, but this final block
   is the single authoritative cascade for fitted mosaics. Fitted cells own
   their aspect: child aspect-ratio declarations cannot force overlap. */
.rv-mosaic,.rv-gallery-fit{
  position:relative;
  display:grid!important;
  grid-template-columns:minmax(0,1.6fr) repeat(2,minmax(0,1fr));
  grid-template-rows:repeat(2,minmax(210px,1fr));
  gap:clamp(12px,1.5vw,20px)!important;
  min-height:clamp(460px,48vw,680px);
  isolation:isolate;
  align-items:stretch!important;
}
.rv-mosaic>*,.rv-gallery-fit>*{
  position:relative!important;
  inset:auto!important;
  transform:none!important;
  translate:none!important;
  margin:0!important;
  min-width:0;
  min-height:0;
  height:auto;
  overflow:hidden;
  aspect-ratio:auto!important;
}
.rv-mosaic>figure img,.rv-gallery-fit>figure img{
  position:absolute;
  inset:0;
  display:block;
  width:100%;
  height:100%!important;
  max-width:none;
  object-fit:cover;
  object-position:center;
}
.rv-mosaic--3>:nth-child(1),.rv-gallery-fit--3>:nth-child(1){grid-column:1 / 2;grid-row:1 / 3}
.rv-mosaic--3>:nth-child(2),.rv-gallery-fit--3>:nth-child(2){grid-column:2 / 4;grid-row:1 / 2}
.rv-mosaic--3>:nth-child(3),.rv-gallery-fit--3>:nth-child(3){grid-column:2 / 4;grid-row:2 / 3}
.rv-mosaic--4>:nth-child(1),.rv-gallery-fit--4>:nth-child(1){grid-column:1 / 2;grid-row:1 / 3}
.rv-mosaic--4>:nth-child(2),.rv-gallery-fit--4>:nth-child(2){grid-column:2 / 4;grid-row:1 / 2}
.rv-mosaic--4>:nth-child(3),.rv-gallery-fit--4>:nth-child(3){grid-column:2 / 3;grid-row:2 / 3}
.rv-mosaic--4>:nth-child(4),.rv-gallery-fit--4>:nth-child(4){grid-column:3 / 4;grid-row:2 / 3}
.rv-mosaic--5>:nth-child(1),.rv-gallery-fit--5>:nth-child(1){grid-column:1 / 2;grid-row:1 / 3}
.rv-mosaic--5>:nth-child(2),.rv-gallery-fit--5>:nth-child(2){grid-column:2 / 3;grid-row:1 / 2}
.rv-mosaic--5>:nth-child(3),.rv-gallery-fit--5>:nth-child(3){grid-column:3 / 4;grid-row:1 / 2}
.rv-mosaic--5>:nth-child(4),.rv-gallery-fit--5>:nth-child(4){grid-column:2 / 3;grid-row:2 / 3}
.rv-mosaic--5>:nth-child(5),.rv-gallery-fit--5>:nth-child(5){grid-column:3 / 4;grid-row:2 / 3}

@media (max-width:900px){
  /* Off-canvas drawer transforms must not enlarge the document scroll area while closed. */
  body.rv-mobile-menu-drawer{overflow-x:clip}

  .rv-mosaic,.rv-gallery-fit{
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
    grid-template-rows:none!important;
    grid-auto-rows:minmax(180px,30vw);
    min-height:0;
  }
  .rv-mosaic>*,.rv-gallery-fit>*{grid-column:auto!important;grid-row:auto!important}
  .rv-mosaic>:first-child,.rv-gallery-fit>:first-child{grid-column:1 / -1!important;grid-row:span 2!important}
  .rv-mosaic>:last-child:nth-child(even),.rv-gallery-fit>:last-child:nth-child(even){grid-column:1 / -1!important}

  /* The overlap panel keeps an inset on small screens without making its
     margin box wider than the viewport. */
  .rv-overlap>:nth-child(2){
    width:calc(100% - 36px)!important;
    max-width:calc(100% - 36px)!important;
    margin:-48px auto 0!important;
  }
}
@media (max-width:560px){
  .rv-mosaic,.rv-gallery-fit{grid-template-columns:1fr!important;grid-auto-rows:260px}
  .rv-mosaic>*,.rv-gallery-fit>*,
  .rv-mosaic>:first-child,.rv-gallery-fit>:first-child,
  .rv-mosaic>:last-child:nth-child(even),.rv-gallery-fit>:last-child:nth-child(even){grid-column:1!important;grid-row:auto!important}
}

/* ----- Custom logo protection -----
   WordPress custom logos are user-supplied assets. Render the uploaded file
   faithfully instead of recolouring JPG/PNG/SVG logos for dark sections. */
html body .site-header .site-branding .custom-logo-link .custom-logo,
html body .site-header .rv-mobile-branding .site-branding .custom-logo-link .custom-logo,
html body .site-footer .rv-footer-brand .custom-logo-link .custom-logo{
  filter:none!important;
  opacity:1!important;
  mix-blend-mode:normal!important
}



/* ==========================================================================
   Revelate 3.0.5 — editable equal-height Cover media
   ========================================================================== */
/* Use on a native core/cover block inside a Revelate grid when the photograph
   should match the height of the neighbouring copy. WordPress retains its
   native focal-point and minimum-height controls; this style only makes the
   cover stretch to the grid cell instead of imposing its own default height. */
.rv-cover-fill,
.wp-block-cover.is-style-rv-cover-fill{
  align-self:stretch;
  height:100%;
  min-height:0;
  margin:0;
  overflow:hidden;
}
.rv-cover-fill .wp-block-cover__image-background,
.wp-block-cover.is-style-rv-cover-fill .wp-block-cover__image-background{
  width:100%;
  height:100%;
  object-fit:cover;
}
@media (max-width:900px){
  .rv-cover-fill,
  .wp-block-cover.is-style-rv-cover-fill{
    height:auto;
    min-height:360px;
  }
}

/* Revelate 3.0.6 — client-editable split-media focal point + practical min heights. */
.rv-container.rv-minh-400{min-height:400px}
.rv-container.rv-minh-500{min-height:500px}
.rv-container.rv-minh-600{min-height:600px}
.rv-container.rv-minh-700{min-height:700px}
.rv-container.rv-minh-800{min-height:800px}
figure.rv-media-fill{min-height:clamp(280px,38vw,520px)}
.rv-media-fill>img,
.rv-media-fill>figure>img,
figure.is-style-rv-fill>img{
  object-position:var(--rv-focus-x,50%) var(--rv-focus-y,50%);
}

/* Revelate focal-point utility classes (5% increments). */
.rv-focus-x-0{--rv-focus-x:0%}
.rv-focus-x-5{--rv-focus-x:5%}
.rv-focus-x-10{--rv-focus-x:10%}
.rv-focus-x-15{--rv-focus-x:15%}
.rv-focus-x-20{--rv-focus-x:20%}
.rv-focus-x-25{--rv-focus-x:25%}
.rv-focus-x-30{--rv-focus-x:30%}
.rv-focus-x-35{--rv-focus-x:35%}
.rv-focus-x-40{--rv-focus-x:40%}
.rv-focus-x-45{--rv-focus-x:45%}
.rv-focus-x-50{--rv-focus-x:50%}
.rv-focus-x-55{--rv-focus-x:55%}
.rv-focus-x-60{--rv-focus-x:60%}
.rv-focus-x-65{--rv-focus-x:65%}
.rv-focus-x-70{--rv-focus-x:70%}
.rv-focus-x-75{--rv-focus-x:75%}
.rv-focus-x-80{--rv-focus-x:80%}
.rv-focus-x-85{--rv-focus-x:85%}
.rv-focus-x-90{--rv-focus-x:90%}
.rv-focus-x-95{--rv-focus-x:95%}
.rv-focus-x-100{--rv-focus-x:100%}
.rv-focus-y-0{--rv-focus-y:0%}
.rv-focus-y-5{--rv-focus-y:5%}
.rv-focus-y-10{--rv-focus-y:10%}
.rv-focus-y-15{--rv-focus-y:15%}
.rv-focus-y-20{--rv-focus-y:20%}
.rv-focus-y-25{--rv-focus-y:25%}
.rv-focus-y-30{--rv-focus-y:30%}
.rv-focus-y-35{--rv-focus-y:35%}
.rv-focus-y-40{--rv-focus-y:40%}
.rv-focus-y-45{--rv-focus-y:45%}
.rv-focus-y-50{--rv-focus-y:50%}
.rv-focus-y-55{--rv-focus-y:55%}
.rv-focus-y-60{--rv-focus-y:60%}
.rv-focus-y-65{--rv-focus-y:65%}
.rv-focus-y-70{--rv-focus-y:70%}
.rv-focus-y-75{--rv-focus-y:75%}
.rv-focus-y-80{--rv-focus-y:80%}
.rv-focus-y-85{--rv-focus-y:85%}
.rv-focus-y-90{--rv-focus-y:90%}
.rv-focus-y-95{--rv-focus-y:95%}
.rv-focus-y-100{--rv-focus-y:100%}

/* ==========================================================================
   Revelate 3.1 — Motion system
   Native, dependency-free motion primitives. JavaScript adds .rv-motion-ready
   only on pages that use them, keeping Gutenberg editing static and predictable.
   ========================================================================== */
:root{
  --rv-motion-fast:520ms;
  --rv-motion-normal:900ms;
  --rv-motion-slow:1250ms;
  --rv-motion-stagger:140ms;
  --rv-motion-sequence-gap:190ms;
  --rv-motion-distance:32px;
}

/* Entrance effects. Individual translate/scale properties intentionally leave
   transform available to scroll-linked treatments on the same block. */
.rv-motion-ready :where(.rv-motion-fade,.rv-motion-fade-up,.rv-motion-slide-left,.rv-motion-slide-right,.rv-motion-scale,.rv-motion-clip){
  --rv-motion-duration:var(--rv-motion-normal);
  --rv-motion-delay:0ms;
  opacity:0;
  transition:
    opacity var(--rv-motion-duration) var(--rv-ease) var(--rv-motion-delay),
    translate var(--rv-motion-duration) var(--rv-ease) var(--rv-motion-delay),
    scale var(--rv-motion-duration) var(--rv-ease) var(--rv-motion-delay),
    clip-path var(--rv-motion-duration) var(--rv-ease) var(--rv-motion-delay);
  will-change:opacity,translate,scale,clip-path
}
.rv-motion-ready .rv-motion-fade-up{translate:0 var(--rv-motion-distance)}
.rv-motion-ready .rv-motion-slide-left{translate:calc(var(--rv-motion-distance) * -1.4) 0}
.rv-motion-ready .rv-motion-slide-right{translate:calc(var(--rv-motion-distance) * 1.4) 0}
.rv-motion-ready .rv-motion-scale{scale:.965}
.rv-motion-ready .rv-motion-clip{clip-path:inset(0 0 100% 0);translate:0 18px}
.rv-motion-ready :where(.rv-motion-fade,.rv-motion-fade-up,.rv-motion-slide-left,.rv-motion-slide-right,.rv-motion-scale,.rv-motion-clip).is-visible{
  opacity:1;translate:0 0;scale:1;clip-path:inset(0 0 0 0)
}
.rv-motion-trigger-load,.rv-motion-trigger-hover,.rv-motion-replay{--rv-motion-marker:1}
.rv-motion-speed-fast{--rv-motion-duration:var(--rv-motion-fast)!important}
.rv-motion-speed-slow{--rv-motion-duration:var(--rv-motion-slow)!important}
.rv-motion-delay-short{--rv-motion-delay:120ms!important}
.rv-motion-delay-medium{--rv-motion-delay:240ms!important}
.rv-motion-delay-long{--rv-motion-delay:420ms!important}

/* Nested choreography. Stagger is deliberately simple; Sequence has a slightly
   stronger editorial rise so a whole section can play as one composition. */
.rv-motion-ready .rv-motion-stagger>* ,
.rv-motion-ready .rv-motion-sequence>*{
  opacity:0;
  translate:0 22px;
  transition:
    opacity var(--rv-motion-normal) var(--rv-ease) calc(var(--rv-motion-index,0) * var(--rv-motion-stagger)),
    translate var(--rv-motion-normal) var(--rv-ease) calc(var(--rv-motion-index,0) * var(--rv-motion-stagger))
}
.rv-motion-ready .rv-motion-sequence>*{
  translate:0 38px;
  transition-duration:var(--rv-motion-slow);
  transition-delay:calc(var(--rv-motion-index,0) * var(--rv-motion-sequence-gap))
}
.rv-motion-ready :where(.rv-motion-stagger,.rv-motion-sequence).is-visible>*{opacity:1;translate:0 0}

/* Timeline choreography reveals each direct child as that child reaches the
   viewport rather than playing the whole parent in one batch. */
.rv-motion-ready .rv-motion-timeline>*{
  opacity:0;
  translate:0 24px;
  transition:opacity var(--rv-motion-normal) var(--rv-ease),translate var(--rv-motion-normal) var(--rv-ease)
}
.rv-motion-ready .rv-motion-timeline>*.is-visible{opacity:1;translate:0 0}

/* Scroll-linked movement. motion.js supplies the CSS variables only on larger
   screens, while entrance effects continue to use the individual translate API. */
.rv-motion-ready :where(.rv-scroll-depth-subtle,.rv-scroll-depth-strong,.rv-scroll-drift-left,.rv-scroll-drift-right,.rv-scroll-scale){
  transform:translate3d(var(--rv-scroll-x,0),var(--rv-scroll-y,0),0) scale(var(--rv-scroll-scale,1));
  will-change:transform
}

/* Pinned storytelling primitive. Put this on one column/Container while the
   neighbouring content continues scrolling. */
.rv-motion-ready .rv-motion-pin{position:sticky;top:var(--rv-focus-offset,24px);align-self:start}

/* Stacked cards. Direct child blocks remain ordinary Gutenberg content. */
.rv-motion-ready .rv-motion-stack-cards{display:block!important;position:relative}
.rv-motion-ready .rv-motion-stack-cards>*{
  position:sticky;
  top:calc(var(--rv-focus-offset,24px) + (var(--rv-stack-index,0) * 14px));
  margin-block-end:clamp(24px,4vw,52px)!important;
  transform-origin:center top;
  box-shadow:0 18px 54px rgba(13,27,22,.12)
}
.rv-motion-ready .rv-motion-stack-cards>*:last-child{margin-block-end:0!important}
.rv-stack-panel{min-height:clamp(300px,42vw,520px);display:flex;flex-direction:column;justify-content:flex-end}

/* Flip boxes: first direct child is the front, second is the back. Hover/focus
   works on pointer/keyboard devices; motion.js adds tap toggling on touch. */
.rv-motion-ready .rv-flip-box{display:grid!important;perspective:1200px;isolation:isolate}
.rv-motion-ready .rv-flip-box>.rv-flip-front,
.rv-motion-ready .rv-flip-box>.rv-flip-back{
  grid-area:1 / 1;
  min-height:100%;
  backface-visibility:hidden;
  transform-style:preserve-3d;
  transition:transform var(--rv-motion-normal) var(--rv-ease),opacity var(--rv-motion-normal) var(--rv-ease)
}
.rv-motion-ready .rv-flip-box>.rv-flip-front{transform:rotateY(0deg)}
.rv-motion-ready .rv-flip-box>.rv-flip-back{transform:rotateY(180deg);opacity:0}
.rv-motion-ready .rv-flip-box:is(:hover,:focus-within,.is-flipped)>.rv-flip-front{transform:rotateY(-180deg);opacity:0}
.rv-motion-ready .rv-flip-box:is(:hover,:focus-within,.is-flipped)>.rv-flip-back{transform:rotateY(0deg);opacity:1}
.rv-flip-front,.rv-flip-back{padding:clamp(26px,3.5vw,44px)!important;border:1px solid var(--rv-border);background:var(--rv-paper)}
.rv-flip-back{background:var(--rv-ink);color:#fff}
.rv-flip-back :where(h2,h3,h4,p,a){color:inherit}

/* Image reveals and hover treatments. The figure itself stays geometrically
   visible to IntersectionObserver; the crop animates on the image inside it. */
.rv-motion-ready figure.rv-image-reveal-wipe,
.rv-motion-ready figure.rv-image-reveal-zoom{
  overflow:hidden;
  opacity:0;
  transition:opacity 1.2s var(--rv-ease)
}
.rv-motion-ready figure:is(.rv-image-reveal-wipe,.rv-image-reveal-zoom)>img{
  clip-path:inset(0 0 100% 0);
  transition:clip-path 1.35s var(--rv-ease),scale 1.45s var(--rv-ease)
}
.rv-motion-ready figure.rv-image-reveal-zoom>img{scale:1.075}
.rv-motion-ready figure:is(.rv-image-reveal-wipe,.rv-image-reveal-zoom).is-visible{opacity:1}
.rv-motion-ready figure:is(.rv-image-reveal-wipe,.rv-image-reveal-zoom).is-visible>img{clip-path:inset(0);scale:1}
figure.rv-image-hover-zoom{overflow:hidden}
figure.rv-image-hover-zoom>img{transition:transform .78s var(--rv-ease)}
figure.rv-image-hover-zoom:hover>img{transform:scale(1.04)}
figure.rv-image-hover-lift{transition:translate .35s var(--rv-ease),box-shadow .35s var(--rv-ease)}
figure.rv-image-hover-lift:hover{translate:0 -6px;box-shadow:0 18px 48px rgba(13,27,22,.16)}

/* Button micro-interactions. */
.wp-block-button.is-style-rv-button-lift .wp-block-button__link{transition:translate .28s var(--rv-ease),box-shadow .28s var(--rv-ease)}
.wp-block-button.is-style-rv-button-lift .wp-block-button__link:hover{translate:0 -4px;box-shadow:0 14px 32px rgba(13,27,22,.18)}
.wp-block-button.is-style-rv-button-arrow .wp-block-button__link::after{
  content:"→";
  display:inline-block;
  margin-left:14px;
  font-size:1.45em;
  line-height:.7;
  font-weight:500;
  translate:0 -1px;
  transition:translate .34s var(--rv-ease)
}
.wp-block-button.is-style-rv-button-arrow .wp-block-button__link:hover::after,
.wp-block-button.is-style-rv-button-arrow .wp-block-button__link:focus-visible::after{translate:8px -1px}
body .wp-block-button.is-style-rv-button-sweep>.wp-block-button__link{
  background-color:var(--rv-ink);
  background-image:linear-gradient(90deg,var(--rv-support),var(--rv-support));
  background-repeat:no-repeat;
  background-position:0 0;
  background-size:0 100%;
  color:#fff;
  border-color:var(--rv-ink);
  transition:background-size .52s var(--rv-ease),color .28s ease,border-color .34s ease,translate .28s var(--rv-ease),box-shadow .28s var(--rv-ease)
}
body .wp-block-button.is-style-rv-button-sweep>.wp-block-button__link:hover,
body .wp-block-button.is-style-rv-button-sweep>.wp-block-button__link:focus-visible{
  background-color:var(--rv-ink);
  background-size:100% 100%;
  color:var(--rv-on-support,#fff);
  border-color:var(--rv-support);
  translate:0 -2px;
  box-shadow:0 12px 28px rgba(13,27,22,.16)
}

/* More expressive off-canvas motion while retaining the existing accessible
   aria-hidden/inert behaviour from revelate.js. */
@media (max-width:900px){
  body::before{content:"";position:fixed;inset:0;z-index:999;background:rgba(5,10,8,.46);opacity:0;visibility:hidden;pointer-events:none;transition:opacity .3s ease,visibility .3s}
  body.rv-menu-open::before{opacity:1;visibility:visible;pointer-events:auto}
  .rv-mobile-menu-drawer .primary-navigation{transition:transform .42s var(--rv-ease),visibility .42s}
  .rv-mobile-menu-fullscreen .primary-navigation{transform:scale(.965) translateY(12px);transition:opacity .34s ease,transform .42s var(--rv-ease),visibility .34s}
  .rv-mobile-menu-drawer .primary-navigation #primary-menu>li,
  .rv-mobile-menu-fullscreen .primary-navigation #primary-menu>li{opacity:0;translate:18px 0;transition:opacity .34s ease,translate .42s var(--rv-ease)}
  .rv-mobile-menu-fullscreen .primary-navigation #primary-menu>li{translate:0 18px}
  :where(.rv-mobile-menu-drawer,.rv-mobile-menu-fullscreen) .primary-navigation.is-open #primary-menu>li{opacity:1;translate:0 0}
  :where(.rv-mobile-menu-drawer,.rv-mobile-menu-fullscreen) .primary-navigation.is-open #primary-menu>li:nth-child(1){transition-delay:.05s}
  :where(.rv-mobile-menu-drawer,.rv-mobile-menu-fullscreen) .primary-navigation.is-open #primary-menu>li:nth-child(2){transition-delay:.09s}
  :where(.rv-mobile-menu-drawer,.rv-mobile-menu-fullscreen) .primary-navigation.is-open #primary-menu>li:nth-child(3){transition-delay:.13s}
  :where(.rv-mobile-menu-drawer,.rv-mobile-menu-fullscreen) .primary-navigation.is-open #primary-menu>li:nth-child(4){transition-delay:.17s}
  :where(.rv-mobile-menu-drawer,.rv-mobile-menu-fullscreen) .primary-navigation.is-open #primary-menu>li:nth-child(5){transition-delay:.21s}
  :where(.rv-mobile-menu-drawer,.rv-mobile-menu-fullscreen) .primary-navigation.is-open #primary-menu>li:nth-child(n+6){transition-delay:.25s}
}

@media (max-width:900px){
  .rv-motion-ready .rv-motion-pin{position:static}
  .rv-motion-ready .rv-motion-stack-cards>*{position:relative;top:auto;margin-block-end:20px!important;box-shadow:var(--rv-surface-shadow,0 12px 36px rgba(13,27,22,.08))}
  .rv-motion-ready :where(.rv-scroll-depth-subtle,.rv-scroll-depth-strong,.rv-scroll-drift-left,.rv-scroll-drift-right,.rv-scroll-scale){transform:none!important}
}

@media (prefers-reduced-motion:reduce){
  .rv-motion-ready :where(.rv-motion-fade,.rv-motion-fade-up,.rv-motion-slide-left,.rv-motion-slide-right,.rv-motion-scale,.rv-motion-clip),
  .rv-motion-ready :where(.rv-motion-stagger,.rv-motion-sequence)>*,
  .rv-motion-ready .rv-motion-timeline>*{opacity:1!important;translate:none!important;scale:1!important;clip-path:none!important}
  .rv-motion-ready .rv-motion-pin,.rv-motion-ready .rv-motion-stack-cards>*{position:static!important;top:auto!important}
  .rv-motion-ready .rv-flip-box{display:block!important;perspective:none!important}
  .rv-motion-ready .rv-flip-box>.rv-flip-front,.rv-motion-ready .rv-flip-box>.rv-flip-back{display:block!important;transform:none!important;opacity:1!important}
  .rv-motion-ready .rv-flip-box>.rv-flip-back{margin-top:16px!important}
  .rv-motion-ready figure:is(.rv-image-reveal-wipe,.rv-image-reveal-zoom){opacity:1!important}
  .rv-motion-ready figure:is(.rv-image-reveal-wipe,.rv-image-reveal-zoom)>img{clip-path:none!important;scale:1!important}
  body::before{transition:none!important}
}


/* ========================================================================== 
   Revelate 3.2 — Container-first layout engine
   A Container remains core/group. Explicit rv-layout-* classes own geometry;
   WordPress constrained-layout widths must never resize their direct children.
   ========================================================================== */
.rv-container{position:relative;min-width:0}
.rv-container[class*="rv-layout-"]>:where(:not(.alignleft):not(.alignright):not(.alignfull)){
  min-width:0;
  max-width:none!important;
  width:auto;
  margin-left:0!important;
  margin-right:0!important;
}
/* Grid media with an intrinsic aspect ratio can otherwise size itself from the
   shared grid row height and overflow its track. Keep visual media inside the
   finite track while leaving flex-row children free to size naturally. */
.rv-container[class*="rv-layout-grid-"]>figure[class*="rv-ratio-"],
.rv-container[class*="rv-layout-grid-"]>.wp-block-image[class*="rv-ratio-"]{
  width:100%!important;
  max-width:100%!important;
}

.rv-container[class*="rv-layout-"].is-layout-constrained>:where(:not(.alignleft):not(.alignright):not(.alignfull)){
  max-width:none!important;
  width:auto!important;
}

/* Additional useful split ratios. */
.rv-container.rv-layout-grid-35-65,
.rv-container.rv-layout-grid-65-35{display:grid!important;align-items:stretch}
.rv-container.rv-layout-grid-35-65{grid-template-columns:minmax(0,7fr) minmax(0,13fr)!important}
.rv-container.rv-layout-grid-65-35{grid-template-columns:minmax(0,13fr) minmax(0,7fr)!important}

/* Pattern-layout aliases. These mirror the long-standing pattern hooks so the
   geometry can be selected/changed from the Container panel without replacing
   the visual/component hook that a pattern may still need. */
.rv-hero-editorial>.rv-layout-hero-editorial{min-height:inherit}
.rv-layout-hero-editorial{width:100%;
  min-height:inherit;
  display:grid!important;
  grid-template-columns:minmax(0,1.06fr) minmax(420px,.94fr);
  gap:0!important;
  align-items:stretch!important;
  margin:0!important}
.rv-hero-monumental .rv-layout-hero-meta{margin-top:54px;
  display:grid;
  grid-template-columns:minmax(0,1fr) minmax(300px,480px);
  gap:60px;
  align-items:end}
.rv-hero-monumental .rv-layout-hero-meta p{margin:0;font-size:18px;line-height:1.8}
.rv-editorial-intro .rv-layout-editorial-intro{display:grid!important;
  grid-template-columns:minmax(0,1.25fr) minmax(320px,.75fr);
  gap:clamp(60px,8vw,130px)!important;
  align-items:start!important}
.rv-split-feature .rv-layout-feature-split{display:grid!important;
  grid-template-columns:minmax(0,1.05fr) minmax(380px,.95fr);
  gap:0!important;
  align-items:center!important}
.rv-layout-card-grid{display:grid!important;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:18px!important}
.rv-layout-stats-editorial{display:grid!important;
  grid-template-columns:minmax(0,1.3fr) minmax(340px,.7fr);
  gap:0!important;
  border-top:1px solid rgba(255,255,255,.18);
  border-bottom:1px solid rgba(255,255,255,.18)}
.rv-layout-stats-support{display:grid!important;
  grid-template-rows:1fr 1fr;
  gap:0!important}
.rv-layout-gallery-editorial{display:grid!important;
  grid-template-columns:repeat(12,minmax(0,1fr));
  gap:20px!important;
  align-items:start!important}
.rv-layout-gallery-editorial figure{overflow:hidden;margin-bottom:0!important}
.rv-layout-gallery-editorial img{width:100%;
  height:100%;
  object-fit:cover;
  transition:transform .65s var(--rv-ease)}
.rv-layout-gallery-editorial figure:hover img{transform:scale(1.025)}
.rv-layout-quote-split{display:grid!important;
  grid-template-columns:minmax(0,1.3fr) minmax(280px,.7fr);
  gap:80px!important;
  align-items:end!important}
.rv-layout-quote-portrait{display:grid!important;
  grid-template-columns:minmax(240px,340px) 1fr;
  gap:clamp(32px,5vw,64px)!important;
  align-items:center!important}
.rv-layout-faq-split{display:grid!important;
  grid-template-columns:minmax(0,.72fr) minmax(440px,1.28fr);
  gap:clamp(60px,8vw,130px)!important;
  align-items:start!important}
.rv-layout-cta-split{display:grid!important;
  grid-template-columns:minmax(0,1.2fr) minmax(300px,.8fr);
  gap:80px!important;
  align-items:end!important}
.rv-layout-contact-split{display:grid!important;
  grid-template-columns:minmax(0,.8fr) minmax(460px,1.2fr);
  gap:clamp(70px,10vw,160px)!important}
.rv-layout-logo-grid{display:grid!important;
  grid-template-columns:repeat(4,1fr);
  gap:0!important;
  border-top:1px solid var(--rv-border);
  border-bottom:1px solid var(--rv-border)}
@media (max-width:1100px){
  .rv-layout-hero-editorial{grid-template-columns:minmax(0,1.12fr) minmax(380px,.88fr)}
  .rv-layout-card-grid{grid-template-columns:1fr 1fr}
  .rv-layout-card-grid>.rv-card:last-child{grid-column:1 / -1}
}
@media (max-width:900px){
  .rv-layout-hero-editorial{grid-template-columns:1fr!important}
  .rv-hero-monumental .rv-layout-hero-meta, .rv-editorial-intro .rv-layout-editorial-intro, .rv-split-feature .rv-layout-feature-split, .rv-layout-quote-split, .rv-layout-faq-split, .rv-layout-cta-split, .rv-layout-contact-split{grid-template-columns:1fr!important}
  .rv-hero-monumental .rv-layout-hero-meta{gap:32px}
  .rv-editorial-intro .rv-layout-editorial-intro, .rv-layout-quote-split, .rv-layout-faq-split, .rv-layout-cta-split, .rv-layout-contact-split{gap:46px!important}
  .rv-layout-card-grid{grid-template-columns:1fr!important}
  .rv-layout-card-grid>.rv-card:last-child{grid-column:auto}
  .rv-layout-stats-editorial{grid-template-columns:1fr!important}
  .rv-layout-stats-support{grid-template-columns:1fr 1fr;grid-template-rows:auto}
}
@media (max-width:680px){
  .rv-layout-stats-support{grid-template-columns:1fr}
  .rv-layout-gallery-editorial{display:block!important}
  .rv-layout-gallery-editorial figure{width:100%;height:340px;margin:0 0 14px!important}
  .rv-layout-logo-grid{grid-template-columns:1fr 1fr}
}
.rv-layout-gallery-editorial figure{box-shadow:var(--rv-image-shadow,none);
  border:var(--rv-image-border,0px) solid var(--rv-border)}
.rv-layout-gallery-editorial figure{border-radius:var(--rv-radius,0);overflow:hidden}
.rv-layout-steps{display:grid!important;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:clamp(24px,3vw,48px)!important;
  margin-top:clamp(40px,5vw,72px)!important}
.rv-layout-team-grid{display:grid!important;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:clamp(24px,3vw,48px)!important;
  margin-top:clamp(40px,5vw,72px)!important}
.rv-layout-timeline-row{display:grid!important;
  grid-template-columns:minmax(120px,.28fr) minmax(0,1fr);
  gap:clamp(20px,4vw,64px)!important;
  align-items:start!important;
  padding:36px 0;
  border-bottom:1px solid var(--rv-border)}
.rv-layout-timeline-row h3{margin:0 0 8px;font-size:1.5rem}
.rv-layout-timeline-row p:last-child{max-width:52ch;margin:0;color:var(--rv-muted)}
.rv-layout-feature-list{display:grid!important;
  grid-template-columns:minmax(0,1fr) minmax(0,1fr);
  gap:clamp(40px,7vw,120px)!important;
  align-items:start!important}
@media (max-width:1100px){
  .rv-layout-steps{grid-template-columns:1fr 1fr}
  .rv-layout-team-grid{grid-template-columns:1fr 1fr}
}
@media (max-width:900px){
  .rv-layout-feature-list{grid-template-columns:1fr!important}
}
@media (max-width:680px){
  .rv-layout-steps, .rv-layout-team-grid{grid-template-columns:1fr!important}
  .rv-layout-timeline-row{grid-template-columns:1fr!important;gap:10px!important;padding:28px 0}
}
.rv-layout-split{display:grid!important;
  grid-template-columns:minmax(0,1fr) minmax(0,1fr);
  gap:clamp(32px,6vw,110px)!important;
  align-items:center!important}
.rv-layout-split>*{margin:0!important;min-width:0}
@media (max-width:900px){
  .rv-layout-split{grid-template-columns:1fr!important}
}
.rv-layout-card-grid>*, .rv-layout-steps>*, .rv-layout-team-grid>*, .rv-layout-gallery-editorial>*, .rv-layout-hero-editorial>*, .rv-layout-feature-split>*, .rv-layout-editorial-intro>*, .rv-layout-faq-split>*, .rv-layout-contact-split>*, .rv-layout-cta-split>*, .rv-layout-quote-split>*, .rv-layout-quote-portrait>*, .rv-layout-logo-grid>*, .rv-layout-feature-list>*, .rv-layout-stats-editorial>*, .rv-layout-stats-support>*, .rv-layout-hero-meta>*, .rv-layout-timeline-row>*{margin-block-start:0!important}
.rv-shell>.rv-layout-card-grid, .rv-shell>.rv-layout-steps, .rv-shell>.rv-layout-team-grid, .rv-shell>.rv-layout-gallery-editorial{margin-block-start:clamp(40px,5vw,72px)!important}
.rv-layout-paths>*, .rv-layout-reviews>*{margin-block-start:0!important}
.rv-shell>.rv-layout-paths, .rv-shell>.rv-layout-reviews{margin-block-start:clamp(40px,5vw,72px)!important}
.rv-layout-paths{display:grid!important;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px!important}
.rv-layout-reviews{display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px!important}
@media (min-width:1101px){
  .rv-layout-team-grid:has(>:nth-child(4):last-child){grid-template-columns:repeat(4,minmax(0,1fr))}
}
@media (max-width:1100px){
  .rv-layout-paths{grid-template-columns:repeat(2,minmax(0,1fr))}
  .rv-layout-reviews{grid-template-columns:repeat(2,minmax(0,1fr))}
  .rv-layout-reviews>:last-child:nth-child(odd){grid-column:1 / -1}
}
@media (max-width:680px){
  .rv-layout-paths, .rv-layout-reviews{grid-template-columns:1fr!important}
  .rv-layout-reviews>:last-child:nth-child(odd){grid-column:auto}
  .rv-layout-quote-portrait{grid-template-columns:1fr!important}
}
@media (min-width:1101px){
  .rv-layout-steps:has(>:nth-child(3):last-child){grid-template-columns:repeat(3,minmax(0,1fr))}
}
.rv-shell:not(.rv-layout-contact-split)>.rv-form-placeholder{margin-block-start:clamp(32px,4vw,56px)!important}
.rv-hero-monumental .rv-layout-hero-meta{margin-top:38px;grid-template-columns:minmax(0,1.2fr) auto;gap:36px 56px;align-items:center}
.rv-hero-monumental .rv-layout-hero-meta p{max-width:54ch;font-size:17px;line-height:1.72}
@media (max-width:680px){
  .rv-hero-monumental .rv-layout-hero-meta{display:block;margin-top:28px}
  .rv-hero-monumental .rv-layout-hero-meta .wp-block-buttons{margin-top:24px}
}
.rv-cta .rv-layout-cta-split{width:min(780px,100%);
  display:grid!important;
  grid-template-columns:minmax(0,360px) minmax(300px,340px);
  gap:40px!important;
  justify-content:center;
  align-items:center!important}
@media (max-width:900px){
  .rv-cta .rv-layout-cta-split{grid-template-columns:1fr!important;gap:var(--rv-space-6)!important}
}

/* Generic Container presets are authoritative when an editor changes a pattern
   to a simpler layout. This block deliberately comes after the pattern aliases. */
.rv-container.rv-layout-stack{display:flex!important;flex-direction:column!important;grid-template-columns:none!important}
.rv-container.rv-layout-row{display:flex!important;flex-direction:row!important;align-items:stretch;flex-wrap:nowrap;grid-template-columns:none!important}
.rv-container.rv-layout-grid-2{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important}
.rv-container.rv-layout-grid-3{display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr))!important}
.rv-container.rv-layout-grid-4{display:grid!important;grid-template-columns:repeat(4,minmax(0,1fr))!important}
.rv-container.rv-layout-grid-30-70{display:grid!important;grid-template-columns:minmax(0,3fr) minmax(0,7fr)!important}
.rv-container.rv-layout-grid-35-65{display:grid!important;grid-template-columns:minmax(0,7fr) minmax(0,13fr)!important}
.rv-container.rv-layout-grid-40-60{display:grid!important;grid-template-columns:minmax(0,2fr) minmax(0,3fr)!important}
.rv-container.rv-layout-grid-60-40{display:grid!important;grid-template-columns:minmax(0,3fr) minmax(0,2fr)!important}
.rv-container.rv-layout-grid-65-35{display:grid!important;grid-template-columns:minmax(0,13fr) minmax(0,7fr)!important}
.rv-container.rv-layout-grid-70-30{display:grid!important;grid-template-columns:minmax(0,7fr) minmax(0,3fr)!important}

@media (max-width:1100px){
  .rv-container.rv-layout-grid-4{grid-template-columns:repeat(2,minmax(0,1fr))!important}
}
@media (max-width:900px){
  .rv-container.rv-layout-row{flex-direction:column!important}
  .rv-container.rv-layout-grid-2,
  .rv-container.rv-layout-grid-3,
  .rv-container.rv-layout-grid-4,
  .rv-container.rv-layout-grid-30-70,
  .rv-container.rv-layout-grid-35-65,
  .rv-container.rv-layout-grid-40-60,
  .rv-container.rv-layout-grid-60-40,
  .rv-container.rv-layout-grid-65-35,
  .rv-container.rv-layout-grid-70-30{grid-template-columns:1fr!important}
}



/* ========================================================================== 
   Revelate 3.3 — semantic colour + design freedom architecture
   Components inherit a local foreground/background contract. This deliberately
   removes the old assumption that every design is dark ink on warm paper.
   ========================================================================== */
:root{
  --rv-bg:var(--rv-paper);
  --rv-fg:var(--rv-ink);
  --rv-heading:var(--rv-ink);
  --rv-muted-fg:var(--rv-muted);
  --rv-surface-bg:var(--rv-cream);
  --rv-surface-fg:var(--rv-ink);
  --rv-surface-heading:var(--rv-ink);
  --rv-accent-bg:var(--rv-accent);
  --rv-accent-fg:var(--rv-on-accent,var(--rv-ink));
  --rv-complement-bg:var(--rv-support);
  --rv-complement-fg:var(--rv-on-support,#fff);
  --rv-button-bg:var(--rv-ink);
  --rv-button-fg:#fff;
  --rv-link:var(--rv-forest)
}
body{background:var(--rv-bg);color:var(--rv-fg)}
/* Headings follow their local section by default. Components can still set a
   deliberate heading role, but a white-on-dark parent can no longer be
   defeated by the old global --rv-ink heading rule. */
h1,h2,h3,h4,h5,h6{color:inherit}
.site-header{background:color-mix(in srgb,var(--rv-bg) 96%,transparent)}
.rv-site-name,.primary-navigation a,.rv-menu-toggle{color:var(--rv-heading)}
:where(.entry-content) :where(a:not(.wp-block-button__link):not(.rv-text-link)){color:var(--rv-link,currentColor)}
.rv-kicker,p.is-style-rv-kicker,.rv-section-lede,p.is-style-rv-lead{color:var(--rv-muted-fg,var(--rv-muted))}

/* Any wrapper may become a page/section palette scope. A design package can
   set these variables on its own class without having to fight theme globals. */
.rv-palette-scope{
  background:var(--rv-bg);
  color:var(--rv-fg)
}
.rv-palette-scope :where(h1,h2,h3,h4,h5,h6){color:var(--rv-heading,currentColor)}
.rv-palette-scope :where(.rv-kicker,.rv-section-lede,p.is-style-rv-kicker,p.is-style-rv-lead){color:var(--rv-muted-fg,currentColor)}
.rv-palette-scope :where(a:not(.wp-block-button__link)){color:var(--rv-link,currentColor)}
.rv-palette-scope :where(.wp-block-button:not(.is-style-outline) .wp-block-button__link){
  background:var(--rv-button-bg);color:var(--rv-button-fg);border-color:var(--rv-button-bg)
}

/* Use Revelate colours by default, but never overwrite native block-editor
   palette selections made on a Button block. */
.wp-block-button:not(.is-style-outline):not(.is-style-rv-button-sweep) .wp-block-button__link:not(.has-background){background:var(--rv-button-bg);border-color:var(--rv-button-bg)}
.wp-block-button:not(.is-style-outline):not(.is-style-rv-button-sweep) .wp-block-button__link:not(.has-text-color){color:var(--rv-button-fg)}
.rv-button{background:var(--rv-button-bg);color:var(--rv-button-fg);border-color:var(--rv-button-bg)}
.wp-block-button.is-style-outline .wp-block-button__link{background:transparent;color:var(--rv-heading,currentColor);border-color:currentColor}
.rv-palette-scope .wp-block-button.is-style-outline .wp-block-button__link{
  background:transparent;color:var(--rv-heading,currentColor);border-color:currentColor
}

/* Section tones define a complete local role set, not merely background+body
   colour. This makes headings, muted copy, links and buttons deterministic. */
.rv-section--white{
  --rv-bg:#fff;--rv-fg:var(--rv-ink);--rv-heading:var(--rv-ink);--rv-muted-fg:var(--rv-muted);--rv-button-bg:var(--rv-ink);--rv-button-fg:var(--rv-on-ink,#fff);
  background:var(--rv-bg);color:var(--rv-fg)
}
.rv-section--paper,.wp-block-group.is-style-rv-tone-paper{
  --rv-bg:var(--rv-paper);--rv-fg:var(--rv-ink);--rv-heading:var(--rv-ink);--rv-muted-fg:var(--rv-muted);--rv-button-bg:var(--rv-ink);--rv-button-fg:var(--rv-on-ink,#fff);
  background:var(--rv-bg);color:var(--rv-fg)
}
.rv-section--cream,.wp-block-group.is-style-rv-tone-cream{
  --rv-bg:var(--rv-cream);--rv-fg:var(--rv-ink);--rv-heading:var(--rv-ink);--rv-muted-fg:var(--rv-surface-muted,var(--rv-muted));--rv-button-bg:var(--rv-ink);--rv-button-fg:var(--rv-on-ink,#fff);
  background:var(--rv-bg);color:var(--rv-fg)
}
.rv-section--dark,.wp-block-group.is-style-rv-tone-dark{
  --rv-bg:var(--rv-ink);--rv-fg:var(--rv-on-ink,#fff);--rv-heading:var(--rv-on-ink,#fff);--rv-muted-fg:var(--rv-muted-on-ink,var(--rv-on-ink,#fff));--rv-link:var(--rv-on-ink,#fff);--rv-button-bg:var(--rv-accent);--rv-button-fg:var(--rv-on-accent,var(--rv-ink));
  background:var(--rv-bg);color:var(--rv-fg)
}
.wp-block-group.is-style-rv-tone-forest{
  --rv-bg:var(--rv-forest);--rv-fg:var(--rv-on-forest,#fff);--rv-heading:var(--rv-on-forest,#fff);--rv-muted-fg:var(--rv-muted-on-forest,var(--rv-on-forest,#fff));--rv-link:var(--rv-on-forest,#fff);--rv-button-bg:var(--rv-accent);--rv-button-fg:var(--rv-on-accent,var(--rv-ink));
  background:var(--rv-bg);color:var(--rv-fg)
}

:where(.rv-section--accent-soft,.wp-block-group.is-style-rv-tone-accent-soft){--rv-bg:var(--rv-accent-soft);--rv-fg:var(--rv-ink);--rv-heading:var(--rv-ink);--rv-muted-fg:var(--rv-ink);--rv-button-bg:var(--rv-ink);--rv-button-fg:var(--rv-on-ink,#fff);background:var(--rv-bg);color:var(--rv-fg)}
:where(.rv-section--support-soft,.wp-block-group.is-style-rv-tone-support-soft){--rv-bg:var(--rv-support-soft);--rv-fg:var(--rv-ink);--rv-heading:var(--rv-ink);--rv-muted-fg:var(--rv-ink);--rv-button-bg:var(--rv-ink);--rv-button-fg:var(--rv-on-ink,#fff);background:var(--rv-bg);color:var(--rv-fg)}
:where(.rv-section--accent,.wp-block-group.is-style-rv-tone-accent){--rv-bg:var(--rv-accent);--rv-fg:var(--rv-on-accent);--rv-heading:var(--rv-on-accent);--rv-muted-fg:var(--rv-on-accent);--rv-button-bg:var(--rv-ink);--rv-button-fg:var(--rv-on-ink,#fff)}
:where(.rv-section--support,.wp-block-group.is-style-rv-tone-support){--rv-bg:var(--rv-support);--rv-fg:var(--rv-on-support);--rv-heading:var(--rv-on-support);--rv-muted-fg:var(--rv-on-support);--rv-button-bg:var(--rv-ink);--rv-button-fg:var(--rv-on-ink,#fff)}
:where(.rv-section--accent-deep,.wp-block-group.is-style-rv-tone-accent-deep){--rv-bg:var(--rv-accent-deep);--rv-fg:var(--rv-on-accent-deep);--rv-heading:var(--rv-on-accent-deep);--rv-muted-fg:var(--rv-on-accent-deep);--rv-button-bg:var(--rv-paper);--rv-button-fg:var(--rv-on-paper,var(--rv-ink))}
:where(.rv-section--support-deep,.wp-block-group.is-style-rv-tone-support-deep){--rv-bg:var(--rv-support-deep);--rv-fg:var(--rv-on-support-deep);--rv-heading:var(--rv-on-support-deep);--rv-muted-fg:var(--rv-on-support-deep);--rv-button-bg:var(--rv-paper);--rv-button-fg:var(--rv-on-paper,var(--rv-ink))}
:where(.rv-section--accent-soft,.rv-section--support-soft,.rv-section--accent,.rv-section--support,.rv-section--accent-deep,.rv-section--support-deep,.is-style-rv-tone-accent-soft,.is-style-rv-tone-support-soft,.is-style-rv-tone-accent,.is-style-rv-tone-support,.is-style-rv-tone-accent-deep,.is-style-rv-tone-support-deep){background:var(--rv-bg);color:var(--rv-fg)}
:where(.rv-section,.rv-palette-scope,.is-style-rv-tone-paper,.is-style-rv-tone-cream,.is-style-rv-tone-dark,.is-style-rv-tone-forest,.is-style-rv-tone-accent-soft,.is-style-rv-tone-support-soft,.is-style-rv-tone-accent,.is-style-rv-tone-support,.is-style-rv-tone-accent-deep,.is-style-rv-tone-support-deep) :where(h1,h2,h3,h4,h5,h6){color:var(--rv-heading,currentColor)}
:where(.rv-section,.rv-palette-scope,.is-style-rv-tone-paper,.is-style-rv-tone-cream,.is-style-rv-tone-dark,.is-style-rv-tone-forest,.is-style-rv-tone-accent-soft,.is-style-rv-tone-support-soft,.is-style-rv-tone-accent,.is-style-rv-tone-support,.is-style-rv-tone-accent-deep,.is-style-rv-tone-support-deep) :where(.rv-kicker,.rv-section-lede,p.is-style-rv-kicker,p.is-style-rv-lead){color:var(--rv-muted-fg,currentColor)}
:where(.rv-section,.rv-palette-scope,.is-style-rv-tone-paper,.is-style-rv-tone-cream,.is-style-rv-tone-dark,.is-style-rv-tone-forest,.is-style-rv-tone-accent-soft,.is-style-rv-tone-support-soft,.is-style-rv-tone-accent,.is-style-rv-tone-support,.is-style-rv-tone-accent-deep,.is-style-rv-tone-support-deep) :where(.wp-block-button:not(.is-style-outline):not(.is-style-rv-button-sweep) .wp-block-button__link){background:var(--rv-button-bg);color:var(--rv-button-fg);border-color:var(--rv-button-bg)}

/* Container freedom: widths, bleed, local rhythm and a 12-column canvas. */
.rv-container.rv-width-compact{width:min(900px,100%);max-width:100%;margin-inline:auto}
.rv-container.rv-width-max{width:min(1600px,calc(100vw - 48px));max-width:100%;margin-inline:auto}
.rv-container.rv-width-viewport{
  width:min(1600px,calc(100vw - 48px));max-width:calc(100vw - 48px);
  margin-left:calc((100% - min(1600px,calc(100vw - 48px))) / 2)!important;
  margin-right:calc((100% - min(1600px,calc(100vw - 48px))) / 2)!important
}
.rv-container.rv-bleed-both{
  --rv-bleed-width:min(calc(100% + min(240px,12vw)),calc(100vw - 48px));
  width:var(--rv-bleed-width);max-width:calc(100vw - 48px);
  margin-left:calc((100% - var(--rv-bleed-width)) / 2)!important;
  margin-right:calc((100% - var(--rv-bleed-width)) / 2)!important
}
.rv-space-y-0{padding-block:0!important}.rv-space-y-s{padding-block:clamp(32px,4vw,56px)!important}.rv-space-y-m{padding-block:clamp(56px,7vw,96px)!important}.rv-space-y-l{padding-block:clamp(84px,10vw,150px)!important}.rv-space-y-xl{padding-block:clamp(120px,14vw,220px)!important}
.rv-container.rv-layout-canvas-12{display:grid!important;grid-template-columns:repeat(12,minmax(0,1fr));align-items:start}
.rv-span-2{grid-column-end:span 2}.rv-span-3{grid-column-end:span 3}.rv-span-4{grid-column-end:span 4}.rv-span-5{grid-column-end:span 5}.rv-span-6{grid-column-end:span 6}.rv-span-7{grid-column-end:span 7}.rv-span-8{grid-column-end:span 8}.rv-span-9{grid-column-end:span 9}.rv-span-10{grid-column-end:span 10}.rv-span-11{grid-column-end:span 11}.rv-span-12{grid-column-end:span 12}
.rv-start-1{grid-column-start:1}.rv-start-2{grid-column-start:2}.rv-start-3{grid-column-start:3}.rv-start-4{grid-column-start:4}.rv-start-5{grid-column-start:5}.rv-start-6{grid-column-start:6}.rv-start-7{grid-column-start:7}.rv-start-8{grid-column-start:8}.rv-start-9{grid-column-start:9}.rv-start-10{grid-column-start:10}.rv-start-11{grid-column-start:11}.rv-start-12{grid-column-start:12}
.rv-self-start{align-self:start}.rv-self-center{align-self:center}.rv-self-end{align-self:end}.rv-order-first{order:-1}.rv-order-last{order:99}

/* 3.3.1 motion regression fix: entrance effects deliberately begin concealed.
   Visibility is restored by motion.js as the element enters the viewport. The
   reduced-motion and no-IntersectionObserver fallbacks below still reveal all
   content immediately. */

/* Contrast audit UI is only injected for authorised users in audit mode. */
.rv-contrast-fail{outline:3px solid #ff2f55!important;outline-offset:3px!important}
.rv-contrast-review{outline:3px dashed #ffb000!important;outline-offset:3px!important}
#rv-contrast-audit-panel{position:fixed;right:18px;bottom:18px;z-index:999999;width:min(380px,calc(100vw - 36px));max-height:70vh;overflow:auto;padding:18px;background:#111;color:#fff;border:1px solid rgba(255,255,255,.2);box-shadow:0 18px 60px rgba(0,0,0,.34);font:14px/1.45 -apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}
#rv-contrast-audit-panel strong{color:#fff}#rv-contrast-audit-panel button{margin-top:12px;padding:8px 12px;border:1px solid #fff;background:#fff;color:#111;font-weight:700}

@media (max-width:900px){
  .rv-container.rv-width-max,.rv-container.rv-width-viewport{width:calc(100vw - 36px);margin-inline:auto}
  .rv-container.rv-bleed-both,.rv-bleed-left,.rv-bleed-right{width:auto;max-width:100%;margin-inline:0!important}
  .rv-container.rv-layout-canvas-12{grid-template-columns:1fr!important}
  .rv-container.rv-layout-canvas-12>*{grid-column:1 / -1!important;order:initial}
}

/* 3.4.2: Astra/Spectra-familiar editor controls with native core/group markup. */
.rv-container.rv-justify-start{justify-content:flex-start!important}
.rv-container.rv-justify-center{justify-content:center!important}
.rv-container.rv-justify-end{justify-content:flex-end!important}
.rv-container.rv-justify-between{justify-content:space-between!important}
.rv-container.rv-justify-around{justify-content:space-around!important}
.rv-container.rv-align-start{align-items:flex-start!important}
.rv-container.rv-align-center{align-items:center!important}
.rv-container.rv-align-end{align-items:flex-end!important}
.rv-container.rv-align-stretch{align-items:stretch!important}
.rv-container.rv-layout-row.rv-flex-wrap{flex-wrap:wrap}
.rv-container.rv-equal-height:is([class*="rv-layout-grid-"],.rv-layout-row) > :where(.wp-block-group,.wp-block-cover,.rv-container,.wp-block-column){align-self:stretch;min-height:100%;height:auto}
.rv-container.rv-equal-height:is([class*="rv-layout-grid-"],.rv-layout-row) > :where(.wp-block-group,.rv-container) {display:flex;flex-direction:column}
.rv-container.rv-equal-height:is([class*="rv-layout-grid-"],.rv-layout-row) > :where(.wp-block-group,.rv-container) > :where(.wp-block-cover,.wp-block-group):last-child{flex-grow:1}
@media(max-width:900px){
 .rv-container.rv-equal-height:is([class*="rv-layout-grid-"],.rv-layout-row) > :where(.wp-block-group,.wp-block-cover,.rv-container,.wp-block-column){min-height:0}
}
