/* =========================================================
   Rawel Geo — component styles
   Tokens live in theme.json; this file styles the pieces
   the block editor cannot express on its own.
   ========================================================= */

:root {
  --rg-display: var(--wp--preset--font-family--display);
  --rg-body:    var(--wp--preset--font-family--body);
  --rg-mono:    var(--wp--preset--font-family--mono);

  --rg-paper:    var(--wp--preset--color--paper);
  --rg-paper-2:  var(--wp--preset--color--paper-2);
  --rg-ink:      var(--wp--preset--color--ink);
  --rg-ink-2:    var(--wp--preset--color--ink-2);
  --rg-muted:    var(--wp--preset--color--muted);
  --rg-rule:     var(--wp--preset--color--rule);
  --rg-rule-2:   var(--wp--preset--color--rule-2);
  --rg-ochre:    var(--wp--preset--color--ochre);
  --rg-ochre-lt: var(--wp--preset--color--ochre-lt);
  --rg-hydro:    var(--wp--preset--color--hydro);
  --rg-basalt:   var(--wp--preset--color--basalt);
  --rg-basalt-2: var(--wp--preset--color--basalt-2);
  --rg-rule-dk:  var(--wp--preset--color--rule-dk);
}

html { scroll-behavior: smooth; }
body { -webkit-font-smoothing: antialiased; overflow-x: hidden; }

/* ---------- grain overlay ---------- */
.rg-grain {
  position: fixed; inset: 0; z-index: 9999;
  pointer-events: none; opacity: .055; mix-blend-mode: multiply;
}

/* ---------- shared type helpers ---------- */
.rg-eyebrow {
  font-family: var(--rg-mono); font-size: .7rem; font-weight: 500;
  letter-spacing: .22em; text-transform: uppercase;
  color: var(--rg-ochre); margin: 0;
}
.rg-eyebrow--hydro { color: var(--rg-hydro); }
.rg-lede { max-width: 62ch; color: var(--rg-ink-2); font-size: 1.05rem; }
.rg-num { font-family: var(--rg-mono); font-variant-numeric: tabular-nums; }

/* ---------- scroll reveal ---------- */
.rg-rev {
  opacity: 0; transform: translateY(28px);
  transition: opacity .7s cubic-bezier(.22,.8,.3,1), transform .7s cubic-bezier(.22,.8,.3,1);
}
.rg-rev.is-in { opacity: 1; transform: none; }
.rg-rev--1 { transition-delay: .09s; }
.rg-rev--2 { transition-delay: .18s; }
.rg-rev--3 { transition-delay: .27s; }
.rg-rev--4 { transition-delay: .36s; }

/* ---------- depth rail ---------- */
.rg-rail {
  position: fixed; left: clamp(.5rem, 2.2vw, 1.6rem); top: 50%;
  transform: translateY(-50%); z-index: 60;
  display: flex; flex-direction: column; align-items: center; gap: .7rem;
}
.rg-rail__track {
  width: 2px; height: min(46vh, 340px);
  background: var(--rg-rule-2); position: relative; overflow: hidden;
}
.rg-rail__fill {
  position: absolute; inset-inline: 0; top: 0; height: 0%;
  background: linear-gradient(180deg, var(--rg-ochre-lt), var(--rg-ochre));
}
.rg-rail__read {
  font-family: var(--rg-mono); font-size: .66rem; letter-spacing: .12em;
  color: var(--rg-ochre); white-space: nowrap; font-variant-numeric: tabular-nums;
}
.rg-rail__cap {
  font-family: var(--rg-mono); font-size: .58rem; letter-spacing: .2em;
  color: var(--rg-muted); writing-mode: vertical-rl; text-transform: uppercase;
}
@media (max-width: 820px) { .rg-rail { display: none; } }

/* ---------- header ---------- */
.wp-site-blocks > header {
  position: sticky; top: 0; z-index: 70;
  background: rgba(255,255,255,.86);
  backdrop-filter: blur(12px);
  border-bottom: 1px solid var(--rg-rule);
}
.rg-brand { text-decoration: none; display: block; line-height: 1.05; }
.rg-brand strong {
  display: block; font-family: var(--rg-display); font-weight: 700;
  font-size: 1.12rem; letter-spacing: .02em; text-transform: uppercase; color: var(--rg-ink);
}
.rg-brand span {
  display: block; font-family: var(--rg-mono); font-size: .58rem;
  letter-spacing: .18em; color: var(--rg-muted); text-transform: uppercase;
}
.rg-nav a {
  color: var(--rg-ink-2); text-decoration: none; font-size: .82rem; font-weight: 500;
  letter-spacing: .04em; text-transform: uppercase; position: relative; padding-block: .3rem;
}
.rg-nav a::after {
  content: ""; position: absolute; left: 0; bottom: 0;
  height: 1px; width: 0; background: var(--rg-ochre); transition: width .3s ease;
}
.rg-nav a:hover::after { width: 100%; }
.rg-nav a:hover { color: var(--rg-ink); }

/* ---------- hero ---------- */
.rg-hero { position: relative; overflow: hidden; border-bottom: 1px solid var(--rg-rule); }
.rg-topo { position: absolute; inset: 0; opacity: .32; pointer-events: none; }
.rg-topo path { fill: none; stroke: var(--rg-hydro); stroke-width: 1; }
.rg-hero__in {
  position: relative; display: grid; grid-template-columns: 1.35fr .65fr;
  gap: clamp(2rem, 5vw, 4rem); align-items: center;
  padding-block: clamp(3.5rem, 9vw, 7rem);
}
.rg-hero h1 { margin: 1rem 0 1.4rem; }
.rg-hero h1 .rg-ln { display: block; overflow: hidden; }
.rg-hero h1 .rg-ln > i {
  display: block; font-style: normal; transform: translateY(105%);
  animation: rgRise .95s cubic-bezier(.19,1,.22,1) forwards;
}
.rg-hero h1 .rg-ln:nth-child(2) > i { animation-delay: .1s; }
.rg-hero h1 .rg-ln:nth-child(3) > i { animation-delay: .2s; }
@keyframes rgRise { to { transform: none; } }
.rg-hero h1 em { font-style: normal; color: var(--rg-ochre); }
.rg-hero__sub { max-width: 52ch; color: var(--rg-ink-2); font-size: clamp(1rem, 1.4vw, 1.15rem); }
.rg-hero__cta { display: flex; gap: .8rem; flex-wrap: wrap; margin-top: 2rem; }
.rg-hero__meta {
  display: flex; gap: 2rem; flex-wrap: wrap; margin-top: 2.6rem;
  padding-top: 1.5rem; border-top: 1px solid var(--rg-rule);
}
.rg-hero__meta div { display: flex; flex-direction: column; gap: .15rem; }
.rg-hero__meta b { font-family: var(--rg-mono); font-size: 1.35rem; color: var(--rg-ink); font-weight: 600; }
.rg-hero__meta span {
  font-family: var(--rg-mono); font-size: .6rem; letter-spacing: .16em;
  color: var(--rg-muted); text-transform: uppercase;
}

/* ---------- core column (signature) ---------- */
.rg-core-stage {
  position: relative; display: flex; justify-content: center;
  align-items: flex-start; min-height: clamp(340px, 52vh, 560px);
}
.rg-core {
  position: relative; width: clamp(64px, 7vw, 86px); height: clamp(320px, 50vh, 520px);
  border-radius: 44px / 26px; overflow: hidden;
  box-shadow: inset -14px 0 26px rgba(0,0,0,.42),
              inset 12px 0 18px rgba(255,255,255,.22),
              0 26px 54px rgba(21,26,27,.22);
  background: linear-gradient(180deg,
    #7D6B57 0 7%,  #8C7F6C 7% 14%,  #574F43 14% 19%, #CFCCC1 19% 29%,
    #B2AEA1 29% 34%, #414D49 34% 45%, #333C3A 45% 50%, #97917F 50% 59%,
    #B8791F 59% 62%, #7A7062 62% 71%, #D3D0C5 71% 80%, #4F5854 80% 89%,
    #8B8474 89% 100%);
  clip-path: inset(0 0 100% 0);
  animation: rgExtract 1.7s cubic-bezier(.5,0,.2,1) .35s forwards;
}
@keyframes rgExtract { to { clip-path: inset(0 0 0% 0); } }
.rg-core::after {
  content: ""; position: absolute; inset: 0;
  background: repeating-linear-gradient(180deg, rgba(0,0,0,.14) 0 1px, transparent 1px 9px);
  mix-blend-mode: multiply;
}
.rg-core__ticks {
  position: absolute; right: calc(50% + clamp(46px, 4.6vw, 58px)); top: 0;
  height: clamp(320px, 50vh, 520px);
  display: flex; flex-direction: column; justify-content: space-between; text-align: right;
}
.rg-core__ticks span {
  font-family: var(--rg-mono); font-size: .6rem; color: var(--rg-muted);
  letter-spacing: .08em; position: relative; padding-right: .7rem;
}
.rg-core__ticks span::after {
  content: ""; position: absolute; right: 0; top: 50%;
  width: .42rem; height: 1px; background: var(--rg-rule-2);
}
.rg-core__label {
  position: absolute; left: calc(50% + clamp(46px, 4.6vw, 58px)); top: 50%;
  transform: translateY(-50%); display: flex; flex-direction: column; gap: .35rem;
}
.rg-core__label b { font-family: var(--rg-mono); font-size: .72rem; color: var(--rg-ochre); letter-spacing: .1em; }
.rg-core__label span {
  font-family: var(--rg-mono); font-size: .58rem; color: var(--rg-muted);
  letter-spacing: .14em; text-transform: uppercase;
}
@media (max-width: 900px) {
  .rg-hero__in { grid-template-columns: 1fr; }
  .rg-core-stage { display: none; }
}

/* ---------- client ticker ---------- */
.rg-ticker {
  border-block: 1px solid var(--rg-rule); background: var(--rg-paper-2);
  overflow: hidden; padding-block: .95rem;
}
.rg-ticker__row { display: flex; gap: 3.2rem; width: max-content; animation: rgSlide 34s linear infinite; }
.rg-ticker:hover .rg-ticker__row { animation-play-state: paused; }
@keyframes rgSlide { to { transform: translateX(-50%); } }
.rg-ticker__row span {
  font-family: var(--rg-mono); font-size: .74rem; letter-spacing: .2em;
  text-transform: uppercase; color: var(--rg-muted); white-space: nowrap;
}
.rg-ticker__row span::before {
  content: "\25C6"; color: var(--rg-ochre); margin-right: 1rem;
  font-size: .55rem; vertical-align: middle;
}

/* ---------- strata divider ---------- */
.rg-strata { height: 8px; display: flex; }
.rg-strata i {
  flex: 1; display: block; transform: scaleY(0); transform-origin: bottom;
  transition: transform .5s cubic-bezier(.22,.8,.3,1);
}
.rg-strata.is-in i { transform: none; }
.rg-strata i:nth-child(1) { background: #7D6B57; transition-delay: 0s; }
.rg-strata i:nth-child(2) { background: #97917F; transition-delay: .05s; }
.rg-strata i:nth-child(3) { background: var(--rg-ochre); transition-delay: .1s; }
.rg-strata i:nth-child(4) { background: #414D49; transition-delay: .15s; }
.rg-strata i:nth-child(5) { background: var(--rg-hydro); transition-delay: .2s; }
.rg-strata i:nth-child(6) { background: #CFCCC1; transition-delay: .25s; }

/* ---------- stats band ---------- */
.rg-stats { background: var(--rg-basalt); padding-block: clamp(2.5rem, 5vw, 4rem); }
.rg-stats__grid {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
  gap: 1px; background: var(--rg-rule-dk);
}
.rg-stat { background: var(--rg-basalt); padding: 1.7rem 1.2rem; display: flex; flex-direction: column; gap: .3rem; }
.rg-stat b {
  font-family: var(--rg-mono); font-size: clamp(1.8rem, 3.4vw, 2.7rem); font-weight: 600;
  color: #F2F3F0; line-height: 1; font-variant-numeric: tabular-nums;
}
.rg-stat span {
  font-family: var(--rg-mono); font-size: .6rem; letter-spacing: .16em;
  text-transform: uppercase; color: #8D9794;
}

/* ---------- services ---------- */
.rg-svc-grid {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 1.5rem; margin-top: 2.6rem;
}
.rg-svc-col { border-top: 2px solid var(--rg-ink); padding-top: 1.1rem; }
.rg-svc-col > h3 { margin: 0 0 .3rem; }
.rg-svc-col > p { font-size: .9rem; color: var(--rg-ink-2); margin: 0 0 1.2rem; }
.rg-svc {
  display: block; text-decoration: none; color: inherit; padding: .85rem 0;
  border-bottom: 1px solid var(--rg-rule); position: relative; transition: padding-left .3s ease;
}
.rg-svc::before {
  content: ""; position: absolute; left: 0; top: 50%; width: 0; height: 1px;
  background: var(--rg-ochre); transition: width .3s ease;
}
.rg-svc:hover { padding-left: 1.5rem; }
.rg-svc:hover::before { width: 1rem; }
.rg-svc b { display: block; font-weight: 600; font-size: 1rem; }
.rg-svc span { display: block; font-size: .83rem; color: var(--rg-ink-2); margin-top: .15rem; }

/* ---------- fleet ---------- */
.rg-fleet { margin-top: 2.6rem; border-top: 1px solid var(--rg-rule-2); }
.rg-fleet__head,
.rg-fleet__row { display: grid; grid-template-columns: 2.4fr .7fr 1.9fr; gap: 1.5rem; }
.rg-fleet__head { padding-bottom: .7rem; }
.rg-fleet__head span {
  font-family: var(--rg-mono); font-size: .6rem; letter-spacing: .18em;
  text-transform: uppercase; color: var(--rg-muted);
}
.rg-fleet__row {
  padding: 1.05rem 0; border-bottom: 1px solid var(--rg-rule); align-items: baseline;
  transition: background .25s ease, padding-left .25s ease;
}
.rg-fleet__row:hover { background: rgba(162,102,15,.06); padding-left: .8rem; }
.rg-fleet__row b { font-weight: 500; font-size: .98rem; color: var(--rg-ink); }
.rg-fleet__qty { font-family: var(--rg-mono); color: var(--rg-ochre); font-size: 1.05rem; font-variant-numeric: tabular-nums; }
.rg-fleet__cap { font-family: var(--rg-mono); font-size: .78rem; color: var(--rg-ink-2); }
@media (max-width: 700px) {
  .rg-fleet__head, .rg-fleet__row { grid-template-columns: 1fr .5fr; gap: .8rem; }
  .rg-fleet__cap, .rg-fleet__head span:last-child { display: none; }
}

/* ---------- regions ---------- */
.rg-reg-grid {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
  gap: 1px; background: var(--rg-rule-2); margin-top: 2.6rem;
}
.rg-reg { background: var(--rg-paper); padding: 1.5rem 1.2rem; position: relative; overflow: hidden; }
.rg-reg::after {
  content: ""; position: absolute; left: 0; bottom: 0; height: 3px; width: 0;
  background: var(--rg-hydro); transition: width .55s cubic-bezier(.22,.8,.3,1);
}
.rg-reg.is-in::after { width: var(--rg-w, 50%); }
.rg-reg b {
  font-family: var(--rg-mono); font-size: 2rem; font-weight: 600;
  display: block; line-height: 1; font-variant-numeric: tabular-nums;
}
.rg-reg > span { font-size: .85rem; color: var(--rg-ink-2); display: block; margin-top: .35rem; }
.rg-reg i {
  font-family: var(--rg-mono); font-style: normal; font-size: .58rem; letter-spacing: .16em;
  text-transform: uppercase; color: var(--rg-ochre); display: block; margin-top: .5rem;
}

/* ---------- contact ---------- */
.rg-contact { background: var(--rg-basalt); color: #E9EBE8; border-top: 1px solid var(--rg-rule-dk); }
.rg-contact h2 { color: #F2F3F0; }
.rg-contact .rg-lede { color: #B4BCB9; }
.rg-contact__grid {
  display: grid; grid-template-columns: 1.1fr .9fr;
  gap: clamp(2rem, 5vw, 4rem); align-items: start;
}
.rg-card { border: 1px solid var(--rg-rule-dk); padding: clamp(1.4rem, 3vw, 2.2rem); background: var(--rg-basalt-2); }
.rg-ct-list { display: flex; flex-direction: column; gap: 1.4rem; margin-top: 1.6rem; }
.rg-ct { border-left: 2px solid var(--rg-ochre-lt); padding-left: 1rem; }
.rg-ct b { display: block; font-weight: 600; font-size: 1rem; color: #F2F3F0; }
.rg-ct a, .rg-ct span { display: block; font-family: var(--rg-mono); font-size: .84rem; color: #B4BCB9; text-decoration: none; }
.rg-ct a:hover { color: var(--rg-ochre-lt); }
@media (max-width: 820px) { .rg-contact__grid { grid-template-columns: 1fr; } }

/* Contact Form 7 / native form fields inside the dark card */
.rg-card label {
  font-family: var(--rg-mono); font-size: .6rem; letter-spacing: .16em;
  text-transform: uppercase; color: #8D9794; display: block; margin-bottom: .4rem;
}
.rg-card input[type="text"], .rg-card input[type="tel"],
.rg-card input[type="email"], .rg-card textarea, .rg-card select {
  width: 100%; background: var(--rg-basalt); border: 1px solid var(--rg-rule-dk);
  color: #E9EBE8; padding: .75rem .85rem; font-family: var(--rg-body);
  font-size: .95rem; margin-bottom: 1.1rem; border-radius: 0;
}
.rg-card input:focus, .rg-card textarea:focus, .rg-card select:focus {
  outline: 2px solid var(--rg-ochre-lt); outline-offset: 1px; border-color: transparent;
}
.rg-card input[type="submit"], .rg-card button {
  width: 100%; background: var(--rg-ochre-lt); color: var(--rg-basalt);
  border: 1px solid var(--rg-ochre-lt); padding: .8rem 1.15rem; cursor: pointer;
  font-family: var(--rg-mono); font-size: .72rem; letter-spacing: .14em; text-transform: uppercase;
  transition: background .25s ease;
}
.rg-card input[type="submit"]:hover, .rg-card button:hover { background: #E0A02E; }

/* ---------- footer ---------- */
.wp-site-blocks > footer { border-top: 1px solid var(--rg-rule); background: var(--rg-paper); }
.rg-foot p {
  font-family: var(--rg-mono); font-size: .66rem; letter-spacing: .1em;
  color: var(--rg-muted); text-transform: uppercase; margin: 0;
}

/* ---------- accessibility floor ---------- */
:focus-visible { outline: 2px solid var(--rg-ochre); outline-offset: 3px; }

.rg-skip {
  position: absolute; left: -9999px; top: 0; z-index: 99999;
  background: var(--rg-ochre); color: #fff; padding: .7rem 1.1rem;
  font-family: var(--rg-mono); font-size: .72rem; text-transform: uppercase;
}
.rg-skip:focus { left: .5rem; top: .5rem; }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .01ms !important;
    scroll-behavior: auto !important;
  }
  .rg-rev { opacity: 1; transform: none; }
  .rg-core { clip-path: none; }
  .rg-hero h1 .rg-ln > i { transform: none; }
}

/* ---------- layout scaffolding used by patterns ---------- */
.rg-wrap {
  max-width: 1280px;
  margin-inline: auto;
  padding-inline: clamp(1.25rem, 5vw, 5rem);
}
.rg-section { padding-block: clamp(3.5rem, 8vw, 6.5rem); }
.rg-section--tint { background: var(--rg-paper-2); }
.rg-section h2 { margin: .6rem 0 1.1rem; }

/* hero buttons — solid + outline pair */
.rg-hero__cta .wp-element-button {
  display: inline-flex; align-items: center; gap: .55rem;
  font-family: var(--rg-mono); font-size: .72rem; letter-spacing: .14em;
  text-transform: uppercase; padding: .72rem 1.15rem; text-decoration: none;
  border: 1px solid var(--rg-ochre); background: var(--rg-ochre); color: var(--rg-paper);
  border-radius: 0; transition: background .25s ease, color .25s ease;
}
.rg-hero__cta .wp-element-button:hover {
  background: var(--rg-ochre-lt); border-color: var(--rg-ochre-lt);
}
.rg-hero__cta .is-style-outline {
  background: transparent; color: var(--rg-ochre);
}
.rg-hero__cta .is-style-outline:hover {
  background: var(--rg-ochre); color: var(--rg-paper);
}

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

.rg-svc-hero {
  position: relative; overflow: hidden;
  border-bottom: 1px solid var(--rg-rule);
  background: var(--rg-paper);
}
.rg-topo--flat { opacity: .28; }
.rg-svc-hero__in {
  position: relative;
  padding-block: clamp(3rem, 7vw, 5.5rem);
}
.rg-svc-hero h1 { margin: .8rem 0 1.2rem; max-width: 18ch; }
.rg-svc-hero .rg-lede { font-size: clamp(1rem, 1.4vw, 1.15rem); }

/* spec chips */
.rg-specs {
  display: flex; flex-wrap: wrap; gap: 2rem;
  margin-top: 2.4rem; padding-top: 1.5rem;
  border-top: 1px solid var(--rg-rule);
}
.rg-spec { display: flex; flex-direction: column; gap: .15rem; }
.rg-spec b {
  font-family: var(--rg-mono); font-size: 1.2rem; font-weight: 600;
  color: var(--rg-ink); font-variant-numeric: tabular-nums;
}
.rg-spec span {
  font-family: var(--rg-mono); font-size: .58rem; letter-spacing: .16em;
  text-transform: uppercase; color: var(--rg-muted);
}

/* definition lists */
.rg-defs { margin: 2.2rem 0 0; display: grid; gap: 0; }
.rg-def {
  display: grid; grid-template-columns: 15rem 1fr; gap: 1.5rem;
  padding: 1.2rem 0; border-bottom: 1px solid var(--rg-rule);
}
.rg-def:first-child { border-top: 1px solid var(--rg-rule-2); }
.rg-def dt {
  font-family: var(--rg-display); font-weight: 700; text-transform: uppercase;
  font-size: 1.02rem; letter-spacing: .01em; color: var(--rg-ink);
}
.rg-def dd { margin: 0; color: var(--rg-ink-2); font-size: .97rem; }
@media (max-width: 780px) {
  .rg-def { grid-template-columns: 1fr; gap: .35rem; }
}

/* checklists */
.rg-checks {
  list-style: none; margin: 2rem 0 0; padding: 0;
  display: grid; gap: 0 2.5rem;
}
.rg-checks--two { grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); }
.rg-checks--one { grid-template-columns: 1fr; }
.rg-checks li {
  position: relative; padding: .7rem 0 .7rem 1.6rem;
  border-bottom: 1px solid var(--rg-rule);
  color: var(--rg-ink-2); font-size: .95rem;
}
.rg-checks li::before {
  content: ""; position: absolute; left: 0; top: 1.28rem;
  width: .55rem; height: 1px; background: var(--rg-ochre);
}

/* figures */
.rg-figure { margin: 2.6rem 0 0; }
.rg-figure img {
  display: block; width: 100%; height: auto;
  border: 1px solid var(--rg-rule);
  filter: saturate(.92) contrast(1.03);
}
.rg-figure figcaption {
  font-family: var(--rg-mono); font-size: .66rem; letter-spacing: .1em;
  text-transform: uppercase; color: var(--rg-muted);
  margin-top: .7rem; padding-left: .9rem;
  border-left: 2px solid var(--rg-ochre);
}
.rg-figure--half { max-width: 420px; }

/* related services */
.rg-related {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: 1px; background: var(--rg-rule-2); margin-top: 2rem;
}
.rg-related__item {
  background: var(--rg-paper-2); padding: 1.4rem 1.2rem;
  text-decoration: none; display: block;
  transition: background .25s ease, padding-left .25s ease;
}
.rg-related__item:hover { background: var(--rg-paper); padding-left: 1.7rem; }
.rg-related__item span {
  display: block; font-family: var(--rg-mono); font-size: .58rem;
  letter-spacing: .16em; text-transform: uppercase; color: var(--rg-ochre);
  margin-bottom: .35rem;
}
.rg-related__item b {
  display: block; font-family: var(--rg-display); font-weight: 700;
  text-transform: uppercase; font-size: 1.05rem; color: var(--rg-ink);
}

/* service page CTA */
.rg-svc-cta {
  display: grid; grid-template-columns: 1.1fr .9fr;
  gap: clamp(2rem, 5vw, 4rem); align-items: start;
}
@media (max-width: 820px) { .rg-svc-cta { grid-template-columns: 1fr; } }

/* =========================================================
   Gallery band
   ========================================================= */
.rg-section--flush { padding-bottom: 0; }
.rg-gallery {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: 2px; margin-top: 2.4rem;
}
.rg-gallery__item { margin: 0; overflow: hidden; background: var(--rg-paper-2); }
.rg-gallery__item img {
  display: block; width: 100%; height: 240px; object-fit: cover;
  filter: saturate(.9) contrast(1.04);
  transition: transform .6s cubic-bezier(.22,.8,.3,1), filter .4s ease;
}
.rg-gallery__item:hover img { transform: scale(1.04); filter: saturate(1) contrast(1.06); }

/* =========================================================
   Contact Form 7
   ========================================================= */
.rg-card .wpcf7 { margin: 0; }
.rg-card .wpcf7-form label {
  font-family: var(--rg-mono); font-size: .6rem; letter-spacing: .16em;
  text-transform: uppercase; color: #8D9794; display: block; margin-bottom: .4rem;
}
.rg-card .wpcf7-form p { margin: 0 0 1.1rem; }
.rg-card .wpcf7-form-control-wrap { display: block; }
.rg-card .wpcf7-form input[type="text"],
.rg-card .wpcf7-form input[type="tel"],
.rg-card .wpcf7-form input[type="email"],
.rg-card .wpcf7-form textarea,
.rg-card .wpcf7-form select {
  width: 100%; background: var(--rg-basalt); border: 1px solid var(--rg-rule-dk);
  color: #E9EBE8; padding: .75rem .85rem; font-family: var(--rg-body);
  font-size: .95rem; border-radius: 0; -webkit-appearance: none; appearance: none;
}
.rg-card .wpcf7-form select {
  background-image: linear-gradient(45deg, transparent 50%, #8D9794 50%),
                    linear-gradient(135deg, #8D9794 50%, transparent 50%);
  background-position: calc(100% - 18px) 1.15rem, calc(100% - 12px) 1.15rem;
  background-size: 6px 6px, 6px 6px;
  background-repeat: no-repeat;
}
.rg-card .wpcf7-form input:focus,
.rg-card .wpcf7-form textarea:focus,
.rg-card .wpcf7-form select:focus {
  outline: 2px solid var(--rg-ochre-lt); outline-offset: 1px; border-color: transparent;
}
.rg-card .wpcf7-form input[type="submit"] {
  width: 100%; background: var(--rg-ochre-lt); color: var(--rg-basalt);
  border: 1px solid var(--rg-ochre-lt); padding: .85rem 1.15rem; cursor: pointer;
  font-family: var(--rg-mono); font-size: .72rem; letter-spacing: .14em;
  text-transform: uppercase; transition: background .25s ease;
}
.rg-card .wpcf7-form input[type="submit"]:hover { background: #E0A02E; }

/* CF7 validation + response messaging */
.rg-card .wpcf7-not-valid-tip {
  font-family: var(--rg-mono); font-size: .66rem; letter-spacing: .06em;
  color: #E8A0A0; margin-top: .35rem;
}
.rg-card .wpcf7-response-output {
  margin: 1.2rem 0 0 !important; padding: .85rem 1rem !important;
  border: 1px solid var(--rg-rule-dk) !important; border-left-width: 3px !important;
  font-family: var(--rg-mono); font-size: .74rem; color: #E9EBE8;
}
.rg-card .wpcf7 form.sent .wpcf7-response-output { border-left-color: var(--rg-hydro) !important; }
.rg-card .wpcf7 form.invalid .wpcf7-response-output,
.rg-card .wpcf7 form.failed .wpcf7-response-output { border-left-color: #C46A6A !important; }
.rg-card .wpcf7-spinner { background-color: var(--rg-ochre-lt); }

.rg-form-fallback {
  font-family: var(--rg-mono); font-size: .82rem; color: #B4BCB9; line-height: 1.7;
}
.rg-form-fallback a { color: var(--rg-ochre-lt); }

@media (prefers-reduced-motion: reduce) {
  .rg-gallery__item:hover img { transform: none; }
}

/* capability listed without its own page */
.rg-svc--plain { cursor: default; }
.rg-svc--plain:hover { padding-left: 0; }
.rg-svc--plain:hover::before { width: 0; }
.rg-svc--plain b { color: var(--rg-ink-2); }

/* =========================================================
   SEO-supporting components
   ========================================================= */

/* breadcrumbs */
.rg-crumbs {
  font-family: var(--rg-mono); font-size: .62rem; letter-spacing: .14em;
  text-transform: uppercase; color: var(--rg-muted);
  display: flex; flex-wrap: wrap; gap: .5rem; align-items: center;
  margin-bottom: 1.4rem;
}
.rg-crumbs a { color: var(--rg-muted); text-decoration: none; }
.rg-crumbs a:hover { color: var(--rg-ochre); }
.rg-crumbs span[aria-hidden] { color: var(--rg-rule-2); }
.rg-crumbs [aria-current] { color: var(--rg-ink); }

/* hold image space before load — keeps CLS at zero */
.rg-figure img { aspect-ratio: 16 / 10; object-fit: cover; }
.rg-figure--half img { aspect-ratio: 1 / 1; }
.rg-gallery__item img { aspect-ratio: 4 / 3; height: auto; }

@media (max-width: 600px) {
  .rg-gallery__item img { aspect-ratio: 16 / 10; }
}
