/* ========================================================================== 
   ROOFLINE OBSIDIAN
   Nocturnal architecture / kinetic Swiss-tech visual system.

   This stylesheet is intentionally loaded after the structural foundation and
   Atelier layer. It preserves the existing semantic markup, Customizer values,
   interactions, and accessibility behaviour while replacing the visual system.
   ========================================================================== */

/* --------------------------------------------------------------------------
   01. System tokens
   -------------------------------------------------------------------------- */
:root{
  --obs-black:var(--ink,#070907);
  --obs-black-2:var(--ink-2,#0b0e0b);
  --obs-black-3:#111510;
  --obs-panel:color-mix(in srgb,var(--ink-2,#0b0e0b) 90%,var(--paper,#f1f2e9));
  --obs-bone:var(--paper,#f1f2e9);
  --obs-bone-2:var(--paper-2,#e1e3d8);
  --obs-white:var(--cream,#fafbf2);
  --obs-muted:var(--mut,#62675f);
  --obs-muted-dark:var(--mut-d,#b8beb3);
  --obs-accent:var(--copper,#d7ff3f);
  --obs-accent-strong:var(--copper-3,#c6f022);
  --obs-highlight:var(--accent-d,var(--obs-accent));
  --obs-accent-ink:var(--ink,#101500);
  --obs-orange:var(--gold,#ff6138);
  --obs-line:rgba(7,9,7,.18);
  --obs-line-dark:rgba(241,242,233,.2);
  --obs-line-acid:rgba(215,255,63,.36);
  --obs-grid:48px;
  --obs-radius:0px;
  --obs-shadow:0 28px 80px -48px rgba(0,0,0,.7);
  --obs-ease:cubic-bezier(.2,.8,.2,1);
  --wrap:1380px;
  --r:var(--obs-radius);
  --section-space:clamp(5.5rem,9.5vw,9rem);

}

body.design-corners-soft{--obs-radius:14px}
body.design-corners-square,
body.design-corners-architectural{--obs-radius:0px}
body.design-spacing-compact{--section-space:clamp(4rem,7vw,6rem)}
body.design-spacing-balanced{--section-space:clamp(5rem,8vw,7.5rem)}
body.design-spacing-airy{--section-space:clamp(6rem,10vw,9.5rem)}

/* --------------------------------------------------------------------------
   02. Foundation, type, rhythm, and access
   -------------------------------------------------------------------------- */
html{scroll-padding-top:106px;background:var(--obs-black);accent-color:var(--obs-accent)}
body{
  overflow-x:hidden;
  background:var(--obs-black);
  color:var(--obs-black);
  font-family:var(--sans),Arial,sans-serif;
  font-size:clamp(1rem,.97rem + .14vw,1.08rem);
  line-height:1.62;
  letter-spacing:-.012em;
}
main{overflow:clip;background:var(--obs-bone)}
a,button,input,select,textarea{border-radius:var(--obs-radius)}
::selection{background:var(--obs-accent);color:var(--obs-accent-ink)}
::-moz-selection{background:var(--obs-accent);color:var(--obs-accent-ink)}
:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
button:focus-visible,
a:focus-visible{
  outline:3px solid var(--obs-black)!important;
  outline-offset:4px!important;
}
.site-head :focus-visible,.hero :focus-visible,.page-hero :focus-visible,
.sec--dark :focus-visible,.sec--projects :focus-visible,.site-foot :focus-visible,
.obs-review--01 :focus-visible,.obs-estimate__intro :focus-visible,
.obs-stats :focus-visible{outline-color:var(--obs-accent)!important}
.sec--tint :focus-visible,.cta-band :focus-visible,.m-menu :focus-visible,
.est-card :focus-visible,.obs-review--02 :focus-visible,
.obs-review--03 :focus-visible{outline-color:var(--obs-black)!important}
.skip-link,
.screen-reader-text:focus{
  background:var(--obs-accent);
  color:var(--obs-accent-ink);
  border:2px solid var(--obs-black);
  font-family:var(--mono),monospace;
  font-weight:700;
  text-transform:uppercase;
}

h1,h2,h3,h4,.h-xl,.h-lg,.h-md,
.hero h1,.page-hero h1,.cta-band h2,.foot-statement{
  color:var(--obs-black);
  font-family:var(--display),"Arial Black",sans-serif;
  font-weight:750;
  line-height:.92;
  letter-spacing:-.065em;
  text-transform:uppercase;
  text-wrap:balance;
}
.h-xl{font-size:clamp(3.8rem,8vw,8.8rem)}
.h-lg{font-size:clamp(2.9rem,5.6vw,6.3rem)}
.h-md{font-size:clamp(1.8rem,3.1vw,3rem)}
h1 em,h2 em,h3 em,.accent,
.hero h1 em,.page-hero h1 em,.cta-band h2 em,.why-title-accent{
  color:inherit;
  font-family:inherit;
  font-style:normal;
  font-weight:inherit;
}
.sec--dark h1,.sec--dark h2,.sec--dark h3,.sec--dark h4,
.page-hero h1,.site-foot h2,.site-foot h3{color:var(--obs-white)}
.lede{
  max-width:48ch;
  color:var(--obs-muted);
  font-size:clamp(1.02rem,.98rem + .36vw,1.32rem);
  line-height:1.62;
}
.sec--dark .lede,.page-hero .lede,.hero .lede{color:var(--obs-muted-dark)}
.eyebrow,.hero-eyebrow,.mono-note,.fig-cap,.meta-row,.entry-meta,
.post-meta,.svc-idx,.svc-row-n,.tl-year,.foot-h,.contact-h{
  font-family:var(--mono),monospace;
  font-size:.62rem;
  font-weight:650;
  letter-spacing:.18em;
  line-height:1.4;
  text-transform:uppercase;
}
.eyebrow{
  display:inline-flex;
  align-items:center;
  gap:.75rem;
  color:#4a6200;
}
.eyebrow::before{
  width:26px;
  height:6px;
  background:var(--obs-accent);
  clip-path:polygon(0 0,100% 0,72% 100%,0 100%);
}
.eyebrow--bare::before{display:none}
.sec--dark .eyebrow,.page-hero .eyebrow,.hero .eyebrow,.site-foot .eyebrow{
  color:var(--obs-accent);
}
.mono-note{color:var(--obs-muted)}
.sec--dark .mono-note{color:var(--obs-muted-dark)}
.wrap{width:min(100%,var(--wrap));padding-inline:clamp(1.1rem,4vw,3.5rem)}
.wrap--narrow{max-width:980px}
.wrap--wide{max-width:1540px}
.sec{
  position:relative;
  padding-block:var(--section-space);
  background:var(--obs-bone);
}
.sec--sm{padding-block:calc(var(--section-space) * .62)}
.sec--tint{
  background-color:var(--obs-bone-2);
  background-image:
    linear-gradient(rgba(7,9,7,.055) 1px,transparent 1px),
    linear-gradient(90deg,rgba(7,9,7,.055) 1px,transparent 1px);
  background-size:var(--obs-grid) var(--obs-grid);
}
.sec--dark{
  background-color:var(--obs-black);
  background-image:
    linear-gradient(rgba(215,255,63,.055) 1px,transparent 1px),
    linear-gradient(90deg,rgba(215,255,63,.055) 1px,transparent 1px);
  background-size:var(--obs-grid) var(--obs-grid);
  color:var(--obs-white);
}
.sec--dark::after{
  content:"";
  position:absolute;
  top:0;
  right:clamp(1.1rem,4vw,3.5rem);
  width:min(28vw,370px);
  height:7px;
  background:var(--obs-accent);
}
.sec-head,.sec-head--c{
  position:relative;
  display:grid;
  grid-template-columns:minmax(0,1.15fr) minmax(250px,.5fr);
  gap:2rem clamp(3rem,8vw,8rem);
  align-items:end;
  max-width:none;
  margin:0 0 clamp(3rem,6vw,5.5rem);
  padding-top:1.25rem;
  border-top:1px solid var(--obs-line);
  text-align:left;
}
.sec--dark .sec-head,.sec--dark .sec-head--c,.home-reviews .sec-head--c{border-color:var(--obs-line-dark)}
.sec-head > div,.sec-head--c .eyebrow,.sec-head--c h2{grid-column:1}
.sec-head > div > h2,.sec-head--c h2{max-width:12ch;margin-top:1.1rem}
.sec-head .lede,.sec-head--c .lede{grid-column:2;grid-row:1/3;align-self:end;margin:0}
.sec-head-aside{grid-column:2;grid-row:1;justify-self:end}
.grid-2,.grid-3,.grid-4{gap:clamp(1rem,2vw,1.5rem)}
.split,.split--form{gap:clamp(3rem,8vw,8rem)}
.split--tight{align-items:start}
.tac{text-align:center}

/* Technical grid ornament on textured surfaces. */
.has-surface-texture .sec--dark,
.has-surface-texture .page-hero,
.has-surface-texture .site-foot{
  background-image:
    linear-gradient(rgba(215,255,63,.055) 1px,transparent 1px),
    linear-gradient(90deg,rgba(215,255,63,.055) 1px,transparent 1px);
  background-size:var(--obs-grid) var(--obs-grid);
}

/* --------------------------------------------------------------------------
   03. Controls, links, fields
   -------------------------------------------------------------------------- */
.btn{
  position:relative;
  min-height:52px;
  overflow:hidden;
  border:1px solid transparent;
  border-radius:var(--obs-radius);
  padding:1rem 1.55rem;
  font-family:var(--mono),monospace;
  font-size:.66rem;
  font-weight:700;
  letter-spacing:.15em;
  text-transform:uppercase;
  transition:color .25s var(--obs-ease),background .25s var(--obs-ease),
    border-color .25s var(--obs-ease),transform .25s var(--obs-ease);
}
.btn::before{
  content:"";
  position:absolute;
  top:0;
  right:0;
  width:13px;
  height:13px;
  background:currentColor;
  clip-path:polygon(100% 0,0 0,100% 100%);
  opacity:.45;
}
.btn::after{font-size:1.2em;transition:transform .25s var(--obs-ease)}
.btn:hover{transform:translate(-2px,-2px)}
.btn:hover::after{transform:translateX(5px)}
.btn--copper,.btn--gold{
  background:var(--obs-accent);
  border-color:var(--obs-accent);
  color:var(--obs-accent-ink);
}
.btn--copper:hover,.btn--gold:hover{background:var(--obs-accent-strong);border-color:var(--obs-accent-strong)}
.btn--ink{background:var(--obs-black);border-color:var(--obs-black);color:var(--obs-white)}
.btn--ink:hover{background:var(--obs-orange);border-color:var(--obs-orange);color:#170500}
.btn--ghost{background:transparent;border-color:currentColor;color:var(--obs-black)}
.btn--ghost:hover{background:var(--obs-black);border-color:var(--obs-black);color:var(--obs-white)}
.sec--dark .btn--ghost,.hero .btn--ghost,.page-hero .btn--ghost,.site-foot .btn--ghost{
  border-color:var(--obs-muted-dark);
  color:var(--obs-white);
}
.sec--dark .btn--ghost:hover,.hero .btn--ghost:hover,.page-hero .btn--ghost:hover{
  background:var(--obs-accent);
  border-color:var(--obs-accent);
  color:var(--obs-accent-ink);
}
.tlink{
  display:inline-flex;
  align-items:center;
  gap:.65rem;
  color:#405600;
  font-family:var(--mono),monospace;
  font-size:.63rem;
  font-weight:700;
  letter-spacing:.15em;
  text-transform:uppercase;
}
.tlink::before{content:"";width:16px;height:3px;background:var(--obs-accent);transition:width .25s var(--obs-ease)}
.tlink::after{content:"↗"}
.tlink:hover::before{width:30px}
.sec--dark .tlink,.home-reviews .tlink,.site-foot .tlink{color:var(--obs-accent)}

.field{gap:.45rem}
.field label,
.est-card .field label{
  position:static;
  width:auto;
  height:auto;
  overflow:visible;
  clip:auto;
  color:var(--obs-muted);
  font-family:var(--mono),monospace;
  font-size:.58rem;
  font-weight:650;
  letter-spacing:.15em;
  text-transform:uppercase;
}
.field input,.field select,.field textarea,
.comment-form input[type=text],.comment-form input[type=email],
.comment-form input[type=url],.comment-form textarea,
.search-form .search-field{
  min-height:52px;
  width:100%;
  border:1px solid var(--obs-line);
  border-radius:var(--obs-radius);
  background:var(--obs-white);
  color:var(--obs-black);
  padding:.8rem 1rem;
  box-shadow:none;
  transition:border-color .2s,box-shadow .2s;
}
.field textarea,.comment-form textarea{min-height:140px}
.field input:focus,.field select:focus,.field textarea:focus,
.comment-form input:focus,.comment-form textarea:focus,.search-form .search-field:focus{
  border-color:#5e7700;
  box-shadow:inset 5px 0 0 var(--obs-accent);
}
.field label.consent,.est-card .field label.consent{
  color:var(--obs-muted);
  font-family:var(--sans),sans-serif;
  font-size:.85rem;
  font-weight:500;
  letter-spacing:0;
  line-height:1.5;
  text-transform:none;
}
.consent input{accent-color:#5c7600}
.panel{
  border:1px solid var(--obs-line);
  border-top:7px solid var(--obs-accent);
  border-radius:var(--obs-radius);
  background:var(--obs-white);
  box-shadow:var(--obs-shadow);
}
.sec--dark .panel{border-color:var(--obs-line-dark);border-top-color:var(--obs-accent);background:var(--obs-panel)}

/* --------------------------------------------------------------------------
   04. Utility bar, desktop header, dropdowns
   -------------------------------------------------------------------------- */
.topbar{
  position:relative;
  z-index:125;
  border:0;
  background:var(--obs-accent);
  color:var(--obs-accent-ink);
  font-family:var(--mono),monospace;
  font-size:.58rem;
  font-weight:700;
  letter-spacing:.14em;
}
.topbar .wrap{min-height:34px;padding-block:.35rem}
.topbar-bullets{gap:0}
.topbar-bullets span{padding-inline:1rem;border-right:1px solid rgba(16,21,0,.28)}
.topbar-bullets span:first-child{padding-left:0}
.topbar-bullets span::before{width:5px;height:5px;border-radius:0;background:var(--obs-black)}
.topbar a,.topbar-soc a{color:var(--obs-accent-ink)}
.topbar a:hover,.topbar-soc a:hover{color:#334200}

.site-head{
  position:sticky;
  top:0;
  z-index:120;
  border-bottom:1px solid var(--obs-line-dark);
  background:rgba(7,9,7,.96);
  color:var(--obs-white);
  backdrop-filter:blur(18px) saturate(.7);
}
.site-head::after{
  content:"";
  position:absolute;
  right:0;
  bottom:-1px;
  width:clamp(80px,14vw,220px);
  height:2px;
  background:var(--obs-accent);
}
.site-head.is-stuck{box-shadow:0 22px 55px -38px #000}
.site-head .wrap{min-height:86px;gap:clamp(1rem,2.8vw,3rem)}
.site-logo,.site-head .custom-logo{max-width:220px;max-height:49px;width:auto}
.site-head .site-logo,
.site-head .custom-logo{filter:grayscale(1) brightness(0) invert(1)}
.nav{gap:clamp(.8rem,1.8vw,1.65rem)}
.nav .menu-item > a,.nav > li > a{
  position:relative;
  padding-block:2.1rem;
  border:0;
  color:var(--obs-white);
  font-family:var(--mono),monospace;
  font-size:.62rem;
  font-weight:650;
  letter-spacing:.11em;
  text-transform:uppercase;
}
.nav .menu-item > a::before{
  content:"";
  position:absolute;
  right:0;
  bottom:21px;
  left:0;
  height:4px;
  background:var(--obs-accent);
  transform:scaleX(0);
  transform-origin:left;
  transition:transform .25s var(--obs-ease);
}
.nav .menu-item > a::after{display:none}
.nav .menu-item > a:hover,
.nav .current-menu-item > a,.nav .current-menu-ancestor > a,.nav .current_page_item > a{
  border:0;
  color:var(--obs-white);
}
.nav .menu-item > a:hover::before,
.nav .current-menu-item > a::before,.nav .current-menu-ancestor > a::before,
.nav .current_page_item > a::before{transform:scaleX(1)}
.nav .sub-menu{
  top:calc(100% + 1px);
  left:-1.2rem;
  min-width:270px;
  padding:.5rem;
  border:1px solid var(--obs-line-acid);
  border-top:5px solid var(--obs-accent);
  border-radius:0;
  background:var(--obs-black-2);
  box-shadow:0 32px 70px -32px #000;
}
.nav .sub-menu:has(> li:nth-child(7)){min-width:510px}
.nav .sub-menu a{
  padding:.7rem .8rem;
  color:var(--obs-muted-dark);
  font-family:var(--sans),sans-serif;
  font-size:.82rem;
  letter-spacing:0;
  text-transform:none;
}
.nav .sub-menu a:hover{background:var(--obs-accent);color:var(--obs-accent-ink)}
.nav-phone{color:var(--obs-white);font-family:var(--mono),monospace;font-size:.64rem;letter-spacing:.08em}
.nav-phone:hover{color:var(--obs-accent)}
.head-actions{gap:1rem}
.head-cta{min-height:44px;padding:.75rem 1rem}
.burger{
  width:50px;
  height:50px;
  margin:0;
  border:1px solid var(--obs-line-dark);
  border-radius:0;
  align-items:center;
  justify-content:center;
}
.burger span{width:23px;height:2px;background:var(--obs-white)}
.burger span:nth-child(2){width:15px;margin-left:8px;background:var(--obs-accent)}

/* --------------------------------------------------------------------------
   05. Mobile navigation
   -------------------------------------------------------------------------- */
.m-menu{
  background-color:var(--obs-accent);
  background-image:
    linear-gradient(rgba(7,9,7,.11) 1px,transparent 1px),
    linear-gradient(90deg,rgba(7,9,7,.11) 1px,transparent 1px);
  background-size:48px 48px;
  color:var(--obs-accent-ink);
}
.m-menu::before{
  content:"";
  position:absolute;
  top:-22vw;
  right:-24vw;
  width:68vw;
  aspect-ratio:1.8;
  border:clamp(35px,8vw,110px) solid rgba(7,9,7,.08);
  transform:rotate(-28deg);
  pointer-events:none;
}
.m-head,.m-nav,.m-foot{position:relative;z-index:1}
.m-head{border-color:rgba(7,9,7,.24);padding-block:1.15rem}
.m-head .site-logo{max-height:44px;max-width:205px;filter:brightness(0)}
.m-close{color:var(--obs-accent-ink);font-weight:700}
.m-nav{padding-top:clamp(1.5rem,5vh,3rem)}
.m-nav > a,.m-nav > .m-group > a{
  position:relative;
  border-bottom:1px solid rgba(7,9,7,.24);
  color:var(--obs-accent-ink);
  font-family:var(--display),"Arial Black",sans-serif;
  font-size:clamp(2.1rem,9vw,5.2rem);
  font-weight:750;
  letter-spacing:-.06em;
  line-height:.94;
  text-transform:uppercase;
}
.m-nav a:hover{color:#354300}
.m-group > a::after{color:var(--obs-accent-ink);font-size:1.3rem}
.m-subwrap,.m-nav .sub-menu{border:0}
.m-subwrap a,.m-nav .sub-menu a{
  margin:0;
  padding:.55rem 0 .55rem 1rem;
  border-left:3px solid var(--obs-black);
  color:#293400;
  font-family:var(--mono),monospace;
  font-size:.74rem;
  font-weight:650;
  letter-spacing:.08em;
  text-transform:uppercase;
}
.m-subwrap a.m-subwrap-all{color:var(--obs-accent-ink)}
.m-foot{border-color:rgba(7,9,7,.24)}
.m-phone{color:var(--obs-accent-ink);font-family:var(--display),sans-serif;font-size:1.8rem;font-weight:700}
.m-phone span{color:#3e4f00}
.m-menu .btn{background:var(--obs-black);border-color:var(--obs-black);color:var(--obs-white)}

/* --------------------------------------------------------------------------
   06. Homepage hero: kinetic poster / roofline cut
   -------------------------------------------------------------------------- */
.hero{
  min-height:min(92vh,980px);
  overflow:hidden;
  background-color:var(--obs-black);
  background-image:
    linear-gradient(rgba(215,255,63,.07) 1px,transparent 1px),
    linear-gradient(90deg,rgba(215,255,63,.07) 1px,transparent 1px);
  background-size:var(--obs-grid) var(--obs-grid);
  color:var(--obs-white);
  text-align:left;
}
.hero::before{
  content:"";
  position:absolute;
  z-index:2;
  top:-16%;
  left:42%;
  width:19%;
  height:132%;
  border-inline:1px solid var(--obs-line-acid);
  background:rgba(215,255,63,.035);
  transform:skewX(-17deg);
  pointer-events:none;
}
.hero::after{
  content:"RFL / SYSTEM 01";
  position:absolute;
  z-index:5;
  right:clamp(1rem,3vw,2.2rem);
  top:50%;
  color:var(--obs-accent);
  font-family:var(--mono),monospace;
  font-size:.56rem;
  font-weight:650;
  letter-spacing:.18em;
  text-transform:uppercase;
  writing-mode:vertical-rl;
}
.hero-media{
  position:absolute;
  z-index:1;
  inset:0 0 0 47%;
  overflow:hidden;
  clip-path:polygon(17% 0,100% 0,100% 100%,0 100%);
}
.hero-media::after{
  content:"";
  position:absolute;
  inset:0;
  border-left:1px solid var(--obs-line-acid);
  background:linear-gradient(108deg,rgba(7,9,7,.92) 0,rgba(7,9,7,.13) 45%,rgba(7,9,7,.3) 100%);
}
.hero-media img{
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:center;
  filter:grayscale(.88) contrast(1.24) brightness(.68) saturate(.35);
  transform:scale(1.025);
}
.design-tone-monochrome .hero-media img{filter:grayscale(1) contrast(1.28) brightness(.68)}
.design-tone-cinematic .hero-media img{filter:grayscale(.55) saturate(.72) contrast(1.2) brightness(.7)}
.hero-veil{z-index:2;background:linear-gradient(90deg,var(--obs-black) 0,rgba(7,9,7,.88) 35%,rgba(7,9,7,.02) 72%)}
.hero-media-note{
  right:1.2rem;
  bottom:2rem;
  color:var(--obs-muted-dark);
  font-size:.54rem;
  font-weight:650;
}
.hero-inner{z-index:4;padding-block:clamp(6rem,13vh,10rem)}
.hero-copy{width:min(65%,920px);padding:0}
.hero-eyebrow{
  justify-content:flex-start;
  margin:0 0 1.7rem;
  color:var(--obs-accent);
  font-family:var(--mono),monospace;
  font-size:.62rem;
  font-weight:700;
  letter-spacing:.2em;
}
.hero-eyebrow::before{width:34px;height:6px;background:var(--obs-accent);clip-path:polygon(0 0,100% 0,72% 100%,0 100%)}
.hero-eyebrow::after{display:none}
.hero h1{
  max-width:10.8ch;
  margin:0;
  color:var(--obs-white);
  font-size:clamp(4.15rem,8.8vw,10rem);
  line-height:.78;
  letter-spacing:-.078em;
}
.hero h1 em{
  display:inline;
  padding:0 .08em;
  background:var(--obs-accent);
  color:var(--obs-accent-ink);
  box-decoration-break:clone;
  -webkit-box-decoration-break:clone;
}
.hero-sub{max-width:48ch;margin:2rem 0 0;color:#d6dbd1;font-size:clamp(.98rem,.92rem + .25vw,1.16rem)}
.hero-ctas{justify-content:flex-start;margin-top:2.1rem}
.hero-proof{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,210px));
  gap:0;
  width:max-content;
  max-width:100%;
  margin-top:2.6rem;
  padding:0;
  border:1px solid var(--obs-line-dark);
  color:var(--obs-muted-dark);
  font-family:var(--mono),monospace;
  font-size:.56rem;
  letter-spacing:.1em;
}
.hero-proof span{padding:.85rem 1rem .85rem 2rem}
.hero-proof span + span{border-left:1px solid var(--obs-line-dark)}
.hero-proof span::before{left:.9rem;top:1.15rem;width:7px;height:7px;background:var(--obs-accent);transform:none}
.hero-layout-centered .hero{text-align:center}
.hero-layout-centered .hero-media{inset:0;clip-path:none}
.hero-layout-centered .hero-media::after{background:rgba(7,9,7,.66)}
.hero-layout-centered .hero-copy{width:min(100%,1000px);margin-inline:auto}
.hero-layout-centered .hero h1{margin-inline:auto}
.hero-layout-centered .hero-eyebrow,.hero-layout-centered .hero-ctas{justify-content:center}
.hero-layout-centered .hero-sub{margin-inline:auto}
.hero-layout-centered .hero-proof{margin-inline:auto}

/* --------------------------------------------------------------------------
   07. Estimate, metrics, proof system
   -------------------------------------------------------------------------- */
#estimate{
  padding-top:0;
  background-color:var(--obs-black-2);
  background-image:linear-gradient(90deg,transparent 49.9%,rgba(215,255,63,.06) 50%,transparent 50.1%);
  color:var(--obs-white);
}
.stats-bar{
  position:relative;
  z-index:8;
  grid-template-columns:repeat(3,1fr);
  margin-top:-38px;
  overflow:visible;
  border:1px solid var(--obs-line-acid);
  border-top:8px solid var(--obs-accent);
  border-radius:0;
  background:var(--obs-black);
  box-shadow:0 30px 80px -42px #000;
}
.stats-bar::before{
  content:"LIVE PROJECT INDEX";
  position:absolute;
  top:-2rem;
  left:0;
  color:var(--obs-accent);
  font-family:var(--mono),monospace;
  font-size:.52rem;
  font-weight:700;
  letter-spacing:.17em;
}
.stats-bar .stat{position:relative;align-items:flex-start;padding:1.6rem clamp(1rem,3vw,2.2rem);text-align:left}
.stats-bar .stat + .stat{border-left:1px solid var(--obs-line-dark)}
.stats-bar .stat::after{content:"+";position:absolute;top:.5rem;right:.75rem;color:var(--obs-accent);font-family:var(--mono);font-size:.7rem}
.stats-bar .stat-n,.stats-bar .stat-n sup{
  color:var(--obs-white);
  font-family:var(--display),sans-serif;
  font-size:clamp(2.4rem,4.2vw,4.5rem);
  font-weight:750;
  letter-spacing:-.065em;
  line-height:.88;
}
.stats-bar .stat-l{color:var(--obs-muted-dark);font-size:.54rem}
.estimate-grid{
  grid-template-columns:minmax(0,.78fr) minmax(430px,1.22fr);
  gap:clamp(3rem,8vw,8rem);
  margin-top:clamp(5.5rem,9vw,9rem);
}
.estimate-intro .eyebrow{color:var(--obs-accent)}
.estimate-intro .h-lg{max-width:9ch;margin-top:1.15rem;color:var(--obs-white)}
.estimate-intro .lede{max-width:39ch;margin-top:1.5rem;color:var(--obs-muted-dark)}
.trust-badges{
  grid-template-columns:1fr 1fr;
  gap:0;
  margin-top:2.8rem;
  border-top:1px solid var(--obs-line-dark);
}
.tbadge{align-items:center;gap:.9rem;padding:1rem .8rem 1rem 0;border-bottom:1px solid var(--obs-line-dark)}
.tbadge:nth-child(odd){border-right:1px solid var(--obs-line-dark)}
.tbadge:nth-child(even){padding-left:1rem}
.tbadge-ic,.tbadge span.tbadge-ic{
  width:40px;
  height:40px;
  border:1px solid var(--obs-line-acid);
  border-radius:0;
  background:transparent;
  color:var(--obs-accent);
}
.tbadge-ic svg{width:19px;height:19px;stroke-width:1.6}
.tbadge b{color:var(--obs-white);font-size:.75rem;text-transform:none}
.tbadge > div > span{color:var(--obs-muted-dark);font-size:.68rem}
.est-card{
  position:relative;
  max-width:none;
  margin:0;
  padding:clamp(2rem,4vw,3.4rem);
  border:1px solid rgba(7,9,7,.25);
  border-top:8px solid var(--obs-accent-ink);
  border-radius:0;
  background:var(--obs-accent);
  color:var(--obs-accent-ink);
  box-shadow:0 40px 90px -50px #000;
}
.est-card::before{
  content:"FORM / 01";
  position:absolute;
  top:1rem;
  right:1rem;
  width:auto;
  height:auto;
  background:transparent;
  color:#3d4e00;
  font-family:var(--mono),monospace;
  font-size:.52rem;
  letter-spacing:.18em;
}
.est-card-kicker{display:block;margin-bottom:1.1rem;color:#3d4e00;font-family:var(--mono);font-size:.56rem;font-weight:700;letter-spacing:.17em}
.est-card h2{max-width:13ch;color:var(--obs-accent-ink);font-family:var(--display);font-size:clamp(2.3rem,4.2vw,4.4rem);font-weight:750;line-height:.86}
.est-sub{max-width:46ch;margin-top:.8rem;color:#293400}
.est-card .form-grid{margin-top:2.2rem;gap:1.2rem}
.est-card .field label{color:#344200}
.est-card .field input,.est-card .field select{
  border:1px solid rgba(16,21,0,.3);
  background:rgba(250,251,242,.72);
}
.est-card .field input:focus,.est-card .field select:focus{border-color:var(--obs-black);box-shadow:inset 5px 0 0 var(--obs-black)}
.est-card .field label.consent{color:#293400}
.est-card .btn{width:100%;margin-top:.3rem;background:var(--obs-black);border-color:var(--obs-black);color:var(--obs-white)}
.est-note{color:#344200;text-align:left}

/* --------------------------------------------------------------------------
   08. Homepage service bento
   -------------------------------------------------------------------------- */
#services{
  background-color:var(--obs-bone);
  background-image:linear-gradient(90deg,transparent calc(50% - .5px),rgba(7,9,7,.05) 50%,transparent calc(50% + .5px));
}
#services .grid-3{
  display:grid;
  grid-template-columns:repeat(12,1fr);
  gap:12px;
  border:0;
}
.icard{
  position:relative;
  display:grid;
  grid-template-columns:52px minmax(0,1fr) 42px;
  grid-template-rows:auto 1fr auto;
  gap:.8rem 1rem;
  min-height:270px;
  padding:clamp(1.5rem,3vw,2.2rem);
  overflow:hidden;
  border:1px solid var(--obs-line-dark);
  border-radius:0;
  background:var(--obs-black);
  color:var(--obs-white);
  box-shadow:none;
  transition:background .3s var(--obs-ease),color .3s var(--obs-ease),transform .3s var(--obs-ease);
}
.icard:nth-child(1){grid-column:span 7;min-height:340px}
.icard:nth-child(2){grid-column:span 5;min-height:340px;background:var(--obs-panel)}
.icard:nth-child(3){grid-column:span 4}
.icard:nth-child(4){grid-column:span 4;background:var(--obs-panel)}
.icard:nth-child(5){grid-column:span 4}
.icard:nth-child(6){grid-column:1/-1;min-height:240px;background:var(--obs-orange);color:#170500}
.icard::before{
  content:"";
  position:absolute;
  right:-38px;
  bottom:-52px;
  width:150px;
  height:96px;
  border:1px solid var(--obs-line-acid);
  transform:rotate(-28deg);
  transition:transform .4s var(--obs-ease);
}
.icard:hover{padding:clamp(1.5rem,3vw,2.2rem);border-color:var(--obs-accent);background:var(--obs-accent);color:var(--obs-accent-ink);transform:translateY(-5px)}
.icard:hover::before{border-color:rgba(7,9,7,.3);transform:rotate(-35deg) translateY(-8px)}
.icard-index{grid-column:1;grid-row:1;color:var(--obs-accent);font-size:.58rem;padding-top:.25rem}
.icard-ic{
  grid-column:3;
  grid-row:1;
  width:40px;
  height:40px;
  margin:0;
  border:1px solid var(--obs-line-acid);
  border-radius:0;
  background:transparent;
  color:var(--obs-accent);
}
.icard-ic svg{width:19px;height:19px;stroke-width:1.5}
.icard h3{grid-column:1/-1;grid-row:2;align-self:end;max-width:12ch;color:inherit;font-size:clamp(1.85rem,3vw,3.6rem);line-height:.9}
.icard p{grid-column:2/4;grid-row:3;max-width:54ch;margin:0;color:var(--obs-muted-dark);font-size:.82rem;line-height:1.55}
.icard .tlink{grid-column:1;grid-row:3;align-self:end;color:var(--obs-accent)}
.icard .tlink::before{display:none}
.icard:hover .icard-index,.icard:hover .icard-ic,.icard:hover .tlink{color:var(--obs-accent-ink);border-color:rgba(7,9,7,.28)}
.icard:hover p{color:#263300}
.icard:nth-child(6) .icard-index,.icard:nth-child(6) .icard-ic,.icard:nth-child(6) .tlink{color:#170500;border-color:rgba(23,5,0,.3)}

/* --------------------------------------------------------------------------
   09. Why-us architectural spread
   -------------------------------------------------------------------------- */
.sec--dark:has(.why){overflow:hidden}
.sec--dark:has(.why)::before{
  content:"";
  position:absolute;
  right:-8vw;
  bottom:-12vw;
  width:42vw;
  aspect-ratio:2/1;
  border:1px solid var(--obs-line-acid);
  transform:rotate(-27deg);
  pointer-events:none;
}
.why{grid-template-columns:minmax(0,1.16fr) minmax(0,.84fr);gap:clamp(3.5rem,9vw,9rem)}
.why-media{padding:0 8% 10% 0}
.why-media .ph{
  aspect-ratio:4/5;
  border:0;
  border-radius:0;
  box-shadow:24px 24px 0 var(--obs-accent);
  clip-path:polygon(0 0,80% 0,100% 16%,100% 100%,0 100%);
}
.why-media .ph-img{filter:grayscale(.85) contrast(1.25) brightness(.82)}
.why-media::after{
  content:"";
  position:absolute;
  top:-22px;
  right:calc(8% - 22px);
  width:42%;
  height:1px;
  background:var(--obs-accent);
}
.why-badge{
  right:auto;
  bottom:10%;
  left:0;
  width:min(230px,56%);
  height:auto;
  min-height:118px;
  padding:1.25rem;
  border:1px solid var(--obs-black);
  border-radius:0;
  background:var(--obs-orange);
  color:#180600;
  box-shadow:none;
  align-items:flex-start;
  text-align:left;
}
.why-badge b{font-family:var(--display);font-size:clamp(2.4rem,4vw,4rem);font-weight:750;letter-spacing:-.06em}
.why-badge span{font-size:.54rem;font-weight:700}
.why-copy .h-lg{max-width:10ch;margin-top:1.1rem}
.why-title-accent{display:inline;color:var(--obs-accent)}
.why-lede{margin-top:1.7rem}
.why-detail{margin-top:1rem;color:var(--obs-muted-dark);font-size:.9rem}
.checks{
  grid-template-columns:1fr 1fr;
  gap:0;
  margin:2.2rem 0;
  border-top:1px solid var(--obs-line-dark);
}
.checks li{
  min-height:52px;
  padding:.9rem .8rem .9rem 2.2rem;
  border-bottom:1px solid var(--obs-line-dark);
  color:var(--obs-muted-dark);
  font-size:.8rem;
}
.checks li:nth-child(odd){border-right:1px solid var(--obs-line-dark)}
.checks li::before{
  content:"↗";
  top:.9rem;
  left:.55rem;
  width:auto;
  height:auto;
  border:0;
  border-radius:0;
  background:transparent;
  color:var(--obs-accent);
  font-size:.8rem;
}

/* --------------------------------------------------------------------------
   10. Process / system sequence
   -------------------------------------------------------------------------- */
body.home .sec--tint:has(.steps){
  background-color:var(--obs-accent);
  background-image:
    linear-gradient(rgba(7,9,7,.11) 1px,transparent 1px),
    linear-gradient(90deg,rgba(7,9,7,.11) 1px,transparent 1px);
  color:var(--obs-accent-ink);
}
body.home .sec--tint:has(.steps) .sec-head--c{border-color:rgba(7,9,7,.28)}
body.home .sec--tint:has(.steps) .eyebrow{color:#334200}
body.home .sec--tint:has(.steps) .eyebrow::before{background:var(--obs-black)}
body.home .sec--tint:has(.steps) .lede{color:#293400}
.steps{
  display:grid;
  grid-template-columns:repeat(4,1fr);
  gap:0;
  border-top:1px solid var(--obs-line);
  border-left:1px solid var(--obs-line);
}
.step{
  position:relative;
  min-height:300px;
  padding:clamp(1.5rem,3vw,2.3rem);
  overflow:hidden;
  border:0;
  border-right:1px solid var(--obs-line);
  border-bottom:1px solid var(--obs-line);
  border-radius:0;
  background:transparent;
  text-align:left;
}
.step::before{
  content:"";
  position:absolute;
  top:-35px;
  right:-58px;
  width:150px;
  height:76px;
  border-bottom:1px solid currentColor;
  transform:rotate(-28deg);
  opacity:.25;
}
.step-n{
  display:block;
  width:auto;
  height:auto;
  margin:0 0 clamp(3.5rem,6vw,6rem);
  background:transparent;
  color:transparent;
  font-family:var(--display),sans-serif;
  font-size:clamp(3.6rem,6vw,7rem);
  font-weight:750;
  letter-spacing:-.08em;
  line-height:.7;
  -webkit-text-stroke:1px var(--obs-black);
}
.step h3{color:var(--obs-black);font-size:1.22rem;letter-spacing:-.035em}
.step p{margin-top:.8rem;color:var(--obs-muted);font-size:.84rem;line-height:1.6}
.step .mono-note{display:block;margin-top:.9rem;color:#445900}
.sec--dark .steps{border-color:var(--obs-line-dark)}
.sec--dark .step{border-color:var(--obs-line-dark);background:transparent}
.sec--dark .step-n{-webkit-text-stroke-color:var(--obs-accent)}
.sec--dark .step h3{color:var(--obs-white)}
.sec--dark .step p{color:var(--obs-muted-dark)}

/* --------------------------------------------------------------------------
   11. Project atlas / image field
   -------------------------------------------------------------------------- */
.sec--projects{
  background-color:var(--obs-black);
  background-image:
    linear-gradient(rgba(215,255,63,.05) 1px,transparent 1px),
    linear-gradient(90deg,rgba(215,255,63,.05) 1px,transparent 1px);
  background-size:var(--obs-grid) var(--obs-grid);
  color:var(--obs-white);
}
.sec--projects::before{content:"";position:absolute;top:0;left:0;width:31%;height:8px;background:var(--obs-orange)}
.sec--projects .wrap{max-width:1540px}
.sec--projects .sec-head--c{border-color:var(--obs-line-dark)}
.sec--projects .h-lg{color:var(--obs-white)}
.sec--projects .lede{color:var(--obs-muted-dark)}
.sec--projects .eyebrow{color:var(--obs-accent)}
.proj-grid{
  display:grid;
  grid-template-columns:repeat(12,1fr);
  grid-auto-rows:minmax(210px,14vw);
  gap:7px;
}
.ptile{height:100%;aspect-ratio:auto;border:1px solid var(--obs-line-dark);border-radius:0;box-shadow:none}
.ptile:nth-child(1){grid-column:1/8;grid-row:span 2;clip-path:polygon(0 0,86% 0,100% 13%,100% 100%,0 100%)}
.ptile:nth-child(2){grid-column:8/13}
.ptile:nth-child(3){grid-column:8/13}
.ptile:nth-child(4){grid-column:1/5}
.ptile:nth-child(5){grid-column:5/9}
.ptile:nth-child(6){grid-column:9/13;clip-path:polygon(0 0,100% 0,100% 100%,14% 100%,0 80%)}
.ptile::before{content:"↗";position:absolute;z-index:3;top:.7rem;right:.8rem;color:var(--obs-accent);font-family:var(--mono);font-size:.8rem}
.ptile::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 35%,rgba(7,9,7,.86));opacity:.74;transition:opacity .35s}
.ptile img{filter:grayscale(.72) contrast(1.18) saturate(.55);transition:transform .65s var(--obs-ease),filter .4s}
.ptile:hover img{filter:grayscale(.05) contrast(1.08) saturate(.9);transform:scale(1.045)}
.ptile:hover::after{opacity:.4}
.ptile-cap{
  right:1rem;
  bottom:1rem;
  left:1rem;
  max-width:none;
  padding:.75rem .85rem;
  border:1px solid var(--obs-line-acid);
  border-radius:0;
  background:rgba(7,9,7,.88);
  box-shadow:none;
  backdrop-filter:blur(10px);
}
.ptile-cap b{color:var(--obs-accent);font-size:.54rem}
.ptile-cap span{color:var(--obs-white);font-family:var(--sans);font-size:.85rem}

/* --------------------------------------------------------------------------
   12. Reviews: high-contrast editorial bento
   -------------------------------------------------------------------------- */
.home-reviews{
  overflow:hidden;
  background:var(--obs-bone);
  color:var(--obs-black);
}
.home-reviews::before{content:"";position:absolute;right:0;top:0;width:42%;height:8px;background:var(--obs-accent)}
.home-reviews .h-lg{color:var(--obs-black)}
.home-reviews .lede{color:var(--obs-muted)}
.home-reviews .eyebrow{color:#4a6200}
.home-reviews .sec-head--c{border-color:var(--obs-line)}
.reviews-grid{
  display:grid;
  grid-template-columns:1.28fr .72fr;
  gap:8px;
  border:0;
}
.rcard{
  position:relative;
  min-height:260px;
  padding:clamp(1.8rem,4vw,3.6rem);
  border:1px solid var(--obs-line-dark);
  border-radius:0;
  background:var(--obs-black);
  box-shadow:none;
  color:var(--obs-white);
}
.rcard:first-child{grid-row:span 2;min-height:528px;padding-right:clamp(3rem,9vw,9rem)}
.rcard:nth-child(2){background:var(--obs-accent);border-color:var(--obs-accent);color:var(--obs-accent-ink)}
.rcard:nth-child(3){background:var(--obs-orange);border-color:var(--obs-orange);color:#180600}
.rcard .q-mark{position:absolute;top:1rem;right:1.5rem;color:var(--obs-accent);font-family:var(--display);font-size:clamp(4rem,8vw,8rem);font-weight:750}
.rcard:nth-child(2) .q-mark,.rcard:nth-child(3) .q-mark{color:rgba(7,9,7,.28)}
.rcard .stars{color:var(--obs-accent);font-size:.7rem}
.rcard:nth-child(2) .stars,.rcard:nth-child(3) .stars{color:inherit}
.rcard blockquote{color:inherit;font-size:.92rem;line-height:1.65}
.rcard:first-child blockquote{max-width:24ch;font-family:var(--display);font-size:clamp(2rem,3.5vw,3.8rem);font-weight:650;line-height:1.08;letter-spacing:-.05em;text-transform:uppercase}
.rcite{margin-top:1.3rem;padding-top:1rem;border-color:currentColor}
.rcite .ravatar{width:36px;height:36px;border-radius:0;background:var(--obs-accent);color:var(--obs-accent-ink)}
.rcard:nth-child(2) .ravatar,.rcard:nth-child(3) .ravatar{background:var(--obs-black);color:var(--obs-white)}
.rcite b,.rcite span{color:inherit}

/* --------------------------------------------------------------------------
   13. CTA signal block
   -------------------------------------------------------------------------- */
.cta-band{
  position:relative;
  overflow:hidden;
  padding-block:clamp(2rem,4vw,4rem);
  background:var(--obs-black);
  color:var(--obs-accent-ink);
  text-align:left;
}
.cta-band .wrap{max-width:1540px}
.cta-band-inner,
.cta-band > .wrap:not(:has(.cta-band-inner)){
  position:relative;
  overflow:hidden;
  padding:clamp(3rem,8vw,8rem);
  background-color:var(--obs-accent);
  background-image:
    linear-gradient(rgba(7,9,7,.11) 1px,transparent 1px),
    linear-gradient(90deg,rgba(7,9,7,.11) 1px,transparent 1px);
  background-size:48px 48px;
}
.cta-band-inner::before,
.cta-band > .wrap:not(:has(.cta-band-inner))::before{
  content:"PROJECT SIGNAL / OPEN";
  display:block;
  margin-bottom:2rem;
  color:#374700;
  font-family:var(--mono),monospace;
  font-size:.56rem;
  font-weight:700;
  letter-spacing:.19em;
  text-transform:uppercase;
}
.cta-band-inner::after,
.cta-band > .wrap:not(:has(.cta-band-inner))::after{
  content:"";
  position:absolute;
  right:-8%;
  bottom:-48%;
  width:48%;
  aspect-ratio:1.7;
  border:clamp(22px,5vw,72px) solid rgba(7,9,7,.12);
  transform:rotate(-28deg);
  pointer-events:none;
}
.cta-band .eyebrow{position:relative;z-index:1;color:#3b4c00}
.cta-band h2{
  position:relative;
  z-index:1;
  max-width:14ch;
  margin:0;
  color:var(--obs-accent-ink);
  font-size:clamp(3.3rem,7.5vw,8.4rem);
  line-height:.82;
}
.cta-band .lede{position:relative;z-index:1;max-width:50ch;margin:1.5rem 0 0;color:#293400}
.cta-band .hero-ctas{position:relative;z-index:1;justify-content:flex-start;margin-top:2.2rem}
.cta-band .btn--gold,.cta-band .btn--copper{background:var(--obs-black);border-color:var(--obs-black);color:var(--obs-white)}
.cta-band .btn--ghost{border-color:var(--obs-black);color:var(--obs-black)}
.cta-band .btn--ghost:hover{background:var(--obs-orange);border-color:var(--obs-orange);color:#180600}

/* --------------------------------------------------------------------------
   14. FAQ ledger
   -------------------------------------------------------------------------- */
.home-faq{background:var(--obs-white)}
.faq-layout{grid-template-columns:minmax(260px,.68fr) minmax(0,1.32fr);gap:clamp(3rem,10vw,10rem)}
.faq-intro{position:sticky;top:138px;padding-left:1.3rem;border-left:7px solid var(--obs-accent)}
.faq-intro .h-lg{max-width:8ch;margin-top:1rem}
.acc{border-top:1px solid var(--obs-line)}
.acc-item{border-color:var(--obs-line)}
.acc-q{
  padding:1.5rem 0;
  color:var(--obs-black);
  font-family:var(--sans),sans-serif;
  font-size:clamp(1rem,1.3vw,1.22rem);
  font-weight:700;
  letter-spacing:-.025em;
  text-transform:none;
}
.acc-q:hover{color:#405600}
.acc-q .acc-ico{
  width:34px;
  height:34px;
  border:1px solid var(--obs-line);
  border-radius:0;
  color:#415600;
  font-family:var(--mono);
}
.acc-item.is-open .acc-ico{border-color:var(--obs-accent);background:var(--obs-accent);color:var(--obs-accent-ink)}
.acc-a-in{max-width:66ch;padding:0 4rem 1.8rem 0;color:var(--obs-muted);font-size:.92rem}
.sec--dark .acc,.sec--dark .acc-item{border-color:var(--obs-line-dark)}
.sec--dark .acc-q{color:var(--obs-white)}
.sec--dark .acc-q:hover{color:var(--obs-accent)}
.sec--dark .acc-a-in{color:var(--obs-muted-dark)}

/* --------------------------------------------------------------------------
   15. Inner-page covers
   -------------------------------------------------------------------------- */
.page-hero{
  position:relative;
  overflow:hidden;
  padding-block:clamp(6rem,11vw,10.5rem);
  background-color:var(--obs-black);
  background-image:
    linear-gradient(rgba(215,255,63,.065) 1px,transparent 1px),
    linear-gradient(90deg,rgba(215,255,63,.065) 1px,transparent 1px);
  background-size:var(--obs-grid) var(--obs-grid);
  color:var(--obs-white);
}
.page-hero::before{
  content:"";
  position:absolute;
  top:0;
  right:0;
  width:35%;
  height:8px;
  background:var(--obs-accent);
}
.page-hero::after{
  content:"";
  position:absolute;
  right:-10%;
  bottom:-28%;
  width:42%;
  aspect-ratio:1.8;
  border:1px solid var(--obs-line-acid);
  transform:rotate(-27deg);
  pointer-events:none;
}
.page-hero .wrap{position:relative;z-index:1}
.page-hero .wrap:not(:has(.page-hero-media)){padding-right:min(23vw,320px)}
.page-hero .wrap:not(:has(.page-hero-media))::after{
  content:"RFL / DOCUMENT";
  position:absolute;
  top:0;
  right:clamp(1.1rem,4vw,3.5rem);
  width:auto;
  aspect-ratio:auto;
  border:0;
  color:var(--obs-accent);
  font-family:var(--mono);
  font-size:.54rem;
  letter-spacing:.17em;
  transform:none;
}
.page-hero .wrap:has(.page-hero-media){
  display:grid;
  grid-template-columns:minmax(0,.88fr) minmax(380px,1.12fr);
  gap:clamp(3rem,8vw,8rem);
  align-items:center;
}
.page-hero .wrap:has(.page-hero-media) > :not(.page-hero-media){grid-column:1}
.page-hero .wrap:has(.page-hero-media) .eyebrow{grid-row:1}
.page-hero .wrap:has(.page-hero-media) h1{grid-row:2}
.page-hero .wrap:has(.page-hero-media) .lede{grid-row:3}
.page-hero .wrap:has(.page-hero-media) .meta-row{grid-row:4}
.page-hero h1{
  max-width:11ch;
  margin-top:1.35rem;
  color:var(--obs-white);
  font-size:clamp(3.8rem,7.5vw,8.5rem);
  line-height:.8;
}
.page-hero h1 em{color:var(--obs-accent)}
.page-hero .lede{max-width:46ch;margin-top:1.7rem}
.page-hero-media{grid-column:2;grid-row:1/6;margin:0}
.page-hero-media .ph{
  aspect-ratio:4/5;
  border:1px solid var(--obs-line-acid);
  box-shadow:18px 18px 0 var(--obs-accent);
  clip-path:polygon(0 0,82% 0,100% 15%,100% 100%,0 100%);
}
.page-hero-media .ph-img{filter:grayscale(.82) contrast(1.22) brightness(.75)}
.meta-row{
  display:flex;
  flex-wrap:wrap;
  gap:0;
  margin-top:2rem;
  border-top:1px solid var(--obs-line-dark);
  color:var(--obs-muted-dark);
}
.meta-row span{padding:.85rem 1.2rem .85rem 0;margin-right:1.2rem;border-right:1px solid var(--obs-line-dark);font-size:.55rem}
.meta-row b{color:var(--obs-accent)}

/* --------------------------------------------------------------------------
   16. Images, frames, captions
   -------------------------------------------------------------------------- */
.ph{
  border:1px solid var(--obs-line);
  border-radius:var(--obs-radius);
  background-color:var(--obs-bone-2);
  background-image:
    linear-gradient(135deg,transparent 47%,rgba(7,9,7,.08) 48%,rgba(7,9,7,.08) 52%,transparent 53%);
  background-size:24px 24px;
}
.ph.has-image{border:0;box-shadow:var(--obs-shadow)}
.ph-img{filter:saturate(.7) contrast(1.1)}
.sec--dark .ph{border-color:var(--obs-line-dark);background-color:var(--obs-panel)}
.design-tone-cinematic .ph-img,.design-tone-cinematic .pcard img,.design-tone-cinematic .post-thumb img{filter:saturate(.55) contrast(1.2) brightness(.86)}
.design-tone-monochrome .ph-img,.design-tone-monochrome .pcard img,.design-tone-monochrome .post-thumb img{filter:grayscale(1) contrast(1.2)}
.clip-pitch{clip-path:polygon(0 0,82% 0,100% 16%,100% 100%,0 100%)}
.frame::after{
  top:-16px;
  right:-16px;
  width:45%;
  height:45%;
  border-color:#607700;
  border-width:2px;
}
.frame--bl::after{top:auto;right:auto;bottom:-16px;left:-16px}
.fig-cap{
  margin-top:.75rem;
  padding-top:.6rem;
  border-top:1px solid var(--obs-line);
  color:var(--obs-muted);
  font-size:.54rem;
}
.sec--dark .fig-cap{border-color:var(--obs-line-dark);color:var(--obs-muted-dark)}
.ph-tag{border-radius:0;color:#405600}

/* --------------------------------------------------------------------------
   17. Service hubs, cards, directories
   -------------------------------------------------------------------------- */
.svc-row{
  grid-template-columns:72px 1fr minmax(180px,310px);
  gap:clamp(1.5rem,4vw,3.5rem);
  padding:1.3rem;
  border:1px solid var(--obs-line);
  border-bottom:0;
  background:var(--obs-white);
  transition:background .25s,color .25s,padding .25s;
}
.svc-row:last-child{border-bottom:1px solid var(--obs-line)}
.svc-row:hover{padding-inline:1.8rem;border-color:var(--obs-line);background:var(--obs-black);color:var(--obs-white)}
.svc-row-n{color:#4a6200}
.svc-row h3{font-family:var(--display);font-size:clamp(2.2rem,4.4vw,5rem);font-weight:750;line-height:.86}
.svc-row p{max-width:59ch;color:var(--obs-muted);font-size:.86rem}
.svc-row:hover h3{color:var(--obs-white)}
.svc-row:hover p{color:var(--obs-muted-dark)}
.svc-row:hover .svc-row-n,.svc-row:hover .tlink{color:var(--obs-accent)}
.svc-row-media{width:auto;overflow:hidden}
.svc-row-media .ph{box-shadow:none}
.svc-row-media .ph-img{filter:grayscale(.8) contrast(1.18)}
.svc-row:hover .ph-img{filter:none}

.svc-card{
  border:1px solid var(--obs-line);
  border-radius:0;
  background:var(--obs-white);
  box-shadow:none;
  transition:transform .3s var(--obs-ease),border-color .3s;
}
.svc-card:hover{border-color:#5d7600;box-shadow:none;transform:translateY(-6px)}
.svc-card .ph{border:0;border-radius:0;box-shadow:none}
.svc-card .ph-img{filter:grayscale(.65) contrast(1.15)}
.svc-card:hover .ph-img{filter:none}
.svc-body{padding:1.4rem 1.4rem 1.7rem;border-top:7px solid var(--obs-accent)}
.svc-idx{color:#4a6200}
.svc-card h3{font-size:1.45rem}
.svc-card p{color:var(--obs-muted);font-size:.86rem}
.sec--dark .svc-card{border-color:var(--obs-line-dark);background:var(--obs-panel)}
.sec--dark .svc-card h3{color:var(--obs-white)}
.sec--dark .svc-card p{color:var(--obs-muted-dark)}

.area-card{
  position:relative;
  min-height:230px;
  padding:1.5rem;
  overflow:hidden;
  border:1px solid var(--obs-line);
  border-radius:0;
  background:var(--obs-white);
  box-shadow:none;
  transition:background .25s,color .25s,transform .25s;
}
.area-card::after{content:"";position:absolute;right:-36px;bottom:-35px;width:105px;height:70px;border:1px solid var(--obs-line);transform:rotate(-28deg)}
.area-card:hover{padding:1.5rem;border-color:var(--obs-accent);background:var(--obs-accent);color:var(--obs-accent-ink);box-shadow:none;transform:translateY(-5px)}
.area-card h3{font-family:var(--display);font-size:clamp(1.8rem,2.5vw,2.7rem);font-weight:750}
.area-card p{color:var(--obs-muted);font-size:.85rem}
.area-card:hover p,.area-card:hover .mono-note,.area-card:hover .tlink{color:#293400}
.linkgrid{gap:0 1rem}
.linkgrid a{
  min-height:58px;
  padding:.8rem .9rem;
  border:1px solid var(--obs-line);
  border-bottom:0;
  color:var(--obs-black);
  font-family:var(--mono),monospace;
  font-size:.61rem;
  font-weight:650;
  letter-spacing:.08em;
  text-transform:uppercase;
}
.linkgrid a:last-child{border-bottom:1px solid var(--obs-line)}
.linkgrid a::before{width:8px;height:8px;background:var(--obs-accent);transform:none}
.linkgrid a:hover{padding-left:1.25rem;background:var(--obs-black);color:var(--obs-accent)}

/* --------------------------------------------------------------------------
   18. Technical lists, callouts, specs, timeline
   -------------------------------------------------------------------------- */
.ticks{gap:0;border-top:1px solid var(--obs-line)}
.ticks li{padding:1rem .7rem 1rem 2.3rem;border-bottom:1px solid var(--obs-line);font-size:.88rem}
.ticks li::before{content:"↗";top:1rem;left:.7rem;width:auto;height:auto;background:transparent;color:#4a6200;transform:none}
.sec--dark .ticks{border-color:var(--obs-line-dark)}
.sec--dark .ticks li{border-color:var(--obs-line-dark);color:var(--obs-muted-dark)}
.sec--dark .ticks li::before{color:var(--obs-accent)}
.spec{font-size:.88rem}
.spec tr,.spec tr:last-child{border-color:var(--obs-line)}
.spec th{color:var(--obs-muted);font-size:.55rem;letter-spacing:.15em}
.spec td{font-weight:600}
.sec--dark .spec tr{border-color:var(--obs-line-dark)}
.emergency{
  position:relative;
  overflow:hidden;
  padding:clamp(1.5rem,3vw,2.4rem);
  border:0;
  border-left:8px solid var(--obs-orange);
  border-radius:0;
  background:var(--obs-black);
  color:var(--obs-white);
}
.emergency::after{content:"!";position:absolute;right:1rem;bottom:-.25em;color:rgba(215,255,63,.14);font-family:var(--display);font-size:8rem;font-weight:800;line-height:1}
.emergency .mono-note{color:var(--obs-orange)}
.emergency .emg-title{position:relative;z-index:1;margin-top:.35rem;color:var(--obs-white);font-size:clamp(1.6rem,3vw,2.8rem)}
.emergency p{position:relative;z-index:1;max-width:58ch;color:var(--obs-muted-dark)}
.emergency .tlink{position:relative;z-index:1;color:var(--obs-accent)}
.tl{gap:0;padding-left:2rem;border-left:3px solid var(--obs-black)}
.tl-item{padding:0 0 2.5rem .7rem}
.tl-item::before{left:calc(-2rem - 7px);width:11px;height:11px;background:var(--obs-accent);transform:none}
.tl-year{color:#4a6200}
.tl-item h3{font-family:var(--display);font-size:1.8rem;font-weight:750}
.tl-item p{color:var(--obs-muted);font-size:.88rem}
.crew-copy-cols{padding-block:2rem;border-block:1px solid var(--obs-line)}
.crew-copy-note{color:#4a6200;border-color:var(--obs-line)}
.stats-band{gap:0;border-top:1px solid var(--obs-line-dark)}
.stats-band .stat{padding:1.3rem;border-right:1px solid var(--obs-line-dark);border-top:0}
.stats-band .stat:last-child{border-right:0}
.stats-band .stat-n,.stats-band .stat-n sup{color:var(--obs-accent);font-size:clamp(2.8rem,5vw,5.5rem)}

/* --------------------------------------------------------------------------
   19. Projects, filters, blog cards, articles
   -------------------------------------------------------------------------- */
.pcard{gap:.8rem}
.pcard-media{overflow:hidden;border-radius:0;background:var(--obs-black)}
.pcard-media .ph,.pcard-media img{filter:grayscale(.72) contrast(1.17);transition:filter .35s,transform .55s var(--obs-ease)}
.pcard:hover .pcard-media .ph,.pcard:hover .pcard-media img{filter:none;transform:scale(1.035)}
.pcard-meta{padding-top:.7rem;border-top:4px solid var(--obs-accent);color:var(--obs-muted);font-size:.54rem}
.pcard-meta b{color:#4a6200}
.pcard h2,.pcard h3{font-family:var(--display);font-size:clamp(1.6rem,2.3vw,2.4rem);font-weight:750}
.chips{gap:0}
.chip{
  border-radius:0;
  border-color:var(--obs-line);
  margin:-1px 0 0 -1px;
  color:var(--obs-muted);
  font-size:.57rem;
  font-weight:650;
}
.chip:hover{border-color:#5d7600;color:#405600}
.chip.is-on{background:var(--obs-black);border-color:var(--obs-black);color:var(--obs-accent)}

.blog-grid{gap:clamp(1.2rem,2.3vw,2rem)}
.post-card{
  gap:.85rem;
  padding-bottom:1.4rem;
  border-bottom:1px solid var(--obs-line);
}
.post-card .post-thumb,.post-card .ph{margin:0;overflow:hidden;border-radius:0;background:var(--obs-black)}
.post-card .post-thumb img,.post-card .ph-img{filter:grayscale(.78) contrast(1.17);transition:filter .35s,transform .55s var(--obs-ease)}
.post-card:hover .post-thumb img,.post-card:hover .ph-img{filter:none;transform:scale(1.035)}
.entry-meta,.post-meta{margin:.25rem 0 0;color:var(--obs-muted);font-size:.55rem}
.entry-meta b,.post-meta b{color:#4a6200}
.post-card h3{font-family:var(--display);font-size:clamp(1.55rem,2.3vw,2.4rem);font-weight:750;line-height:.95}
.post-card p{color:var(--obs-muted);font-size:.88rem}
.card--featured{
  padding:clamp(1.2rem,3vw,2.2rem);
  border:1px solid var(--obs-line);
  border-left:8px solid var(--obs-accent);
  border-radius:0;
  background:var(--obs-white);
}
.card--featured .post-body{border-color:var(--obs-line)}
.card--featured h2{font-family:var(--display);font-size:clamp(2.4rem,5vw,5.5rem);font-weight:750;line-height:.86}
.content-grid{grid-template-columns:minmax(0,1fr) minmax(260px,320px);gap:clamp(2.5rem,6vw,6rem)}
.widget-area{padding-left:1.5rem;border-left:1px solid var(--obs-line)}
.widget{padding-bottom:1.5rem;border-bottom:1px solid var(--obs-line)}
.widget .foot-h{color:#405600}
.widget a:hover{color:#405600}
.article{max-width:780px}
.article > p{color:#252a24;line-height:1.78}
.article > p:first-of-type{font-family:var(--sans);font-size:clamp(1.16rem,1.4vw,1.4rem);font-weight:550;line-height:1.6}
.article h2{margin:1.7em 0 .65em;font-family:var(--display);font-size:clamp(2.2rem,4.4vw,4.8rem);font-weight:750;line-height:.9}
.article h3{font-family:var(--display);font-size:clamp(1.5rem,2.4vw,2.4rem);font-weight:700}
.article a{color:#405600;text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:.18em}
.article ul li::before{background:var(--obs-accent);transform:none}
.article .pull{
  margin:2.2em 0;
  padding:1.2rem 1.4rem;
  border:0;
  border-left:8px solid var(--obs-accent);
  background:var(--obs-black);
  color:var(--obs-white);
  font-family:var(--display);
  font-size:clamp(1.5rem,2.8vw,2.6rem);
  font-style:normal;
  line-height:1.15;
  text-transform:uppercase;
}
.post-thumb{border-radius:0}
.post-thumb img{width:100%;filter:saturate(.7) contrast(1.12)}
.author-box{
  border:1px solid var(--obs-line);
  border-radius:0;
  background:var(--obs-white);
  box-shadow:12px 12px 0 var(--obs-accent);
}
.author-box .ph{border-radius:0}
.pn{gap:1px;background:var(--obs-line)}
.pn a{padding:1.3rem;background:var(--obs-white)}
.pn a:hover{background:var(--obs-accent)}

/* --------------------------------------------------------------------------
   20. Contact details, WordPress comments, pagination, search
   -------------------------------------------------------------------------- */
.contact-h{color:#405600}
.contact-val{color:var(--obs-black);font-family:var(--display);font-size:clamp(1.4rem,2vw,2rem);font-weight:700;letter-spacing:-.035em}
a.contact-val:hover{color:#405600}
.contact-area{color:var(--obs-black)}
.comment-body{
  padding:1.4rem;
  border:1px solid var(--obs-line);
  border-left:5px solid var(--obs-accent);
  border-radius:0;
  background:var(--obs-white);
}
.comment-meta{color:var(--obs-muted);font-size:.58rem}
.comment-respond{border-color:var(--obs-line)}
.pagination .page-numbers,.pager a{
  min-width:44px;
  height:44px;
  border-color:var(--obs-line);
  border-radius:0;
  color:var(--obs-muted);
}
.pagination .page-numbers.current,.pager a.is-on{background:var(--obs-black);border-color:var(--obs-black);color:var(--obs-accent)}
.pagination a.page-numbers:hover{border-color:#5d7600;color:#405600}
.search-form{display:flex;gap:0;max-width:680px}
.search-form label{flex:1}
.search-form .search-field{border-right:0}
.search-form .search-submit{
  min-width:120px;
  border:1px solid var(--obs-black);
  background:var(--obs-black);
  color:var(--obs-white);
  font-family:var(--mono);
  font-size:.62rem;
  font-weight:700;
  letter-spacing:.12em;
  text-transform:uppercase;
}
.search-form .search-submit:hover{background:var(--obs-accent);border-color:var(--obs-accent);color:var(--obs-accent-ink)}

/* --------------------------------------------------------------------------
   21. Footer
   -------------------------------------------------------------------------- */
.site-foot{
  position:relative;
  overflow:hidden;
  padding:0;
  border:0;
  background-color:var(--obs-black);
  background-image:
    linear-gradient(rgba(215,255,63,.055) 1px,transparent 1px),
    linear-gradient(90deg,rgba(215,255,63,.055) 1px,transparent 1px);
  background-size:var(--obs-grid) var(--obs-grid);
  color:var(--obs-muted-dark);
}
.site-foot::before{content:"";display:block;width:42%;height:8px;margin-left:auto;background:var(--obs-accent)}
.site-foot::after{
  content:"";
  position:absolute;
  right:-12%;
  bottom:5%;
  width:44%;
  aspect-ratio:2;
  border:1px solid var(--obs-line-acid);
  transform:rotate(-27deg);
  pointer-events:none;
}
.foot-intro{position:relative;z-index:1;padding-block:clamp(4rem,8vw,8rem);border-bottom:1px solid var(--obs-line-dark)}
.foot-intro .eyebrow{color:var(--obs-accent)}
.foot-statement{
  max-width:14ch;
  margin-top:1.25rem;
  color:var(--obs-white);
  font-size:clamp(3.5rem,8vw,9rem);
  line-height:.8;
}
.foot-statement::after{content:" /";color:var(--obs-accent)}
.foot-grid{
  position:relative;
  z-index:1;
  grid-template-columns:1.45fr .7fr .7fr 1fr;
  gap:clamp(2rem,5vw,5rem);
  padding-block:clamp(3.5rem,7vw,6rem);
}
.foot-brand .site-logo{max-width:205px;max-height:50px;filter:grayscale(1) brightness(0) invert(1)}
.foot-brand p{color:var(--obs-muted-dark);font-size:.86rem}
.foot-h{margin-bottom:1.2rem;color:var(--obs-accent);font-size:.55rem}
.foot-links{gap:.7rem}
.foot-links a{color:var(--obs-muted-dark);font-family:var(--mono);font-size:.61rem;letter-spacing:.05em;text-transform:uppercase}
.foot-links a:hover{color:var(--obs-accent)}
.foot-soc-sq a{
  width:42px;
  height:42px;
  border:1px solid var(--obs-line-dark);
  border-radius:0;
  background:transparent;
  color:var(--obs-muted-dark);
}
.foot-soc-sq a:hover{background:var(--obs-accent);border-color:var(--obs-accent);color:var(--obs-accent-ink)}
.fc-row{padding-bottom:1rem;border-bottom:1px solid var(--obs-line-dark)}
.fc-ic{color:var(--obs-accent)}
.fc-row b,.fc-row b a{color:var(--obs-white)}
.fc-row span,.fc-row a{color:var(--obs-muted-dark);font-size:.82rem}
.foot-bot{
  position:relative;
  z-index:1;
  padding-block:1.4rem;
  border-top:1px solid var(--obs-line-dark);
  color:var(--obs-muted-dark);
  font-family:var(--mono);
  font-size:.52rem;
  letter-spacing:.1em;
}

/* --------------------------------------------------------------------------
   22. Motion
   -------------------------------------------------------------------------- */
.scr-reveal .rv,.scr-reveal .rv-group > *{
  transform:translateY(20px);
  transition-duration:.7s;
  transition-timing-function:var(--obs-ease);
}

/* --------------------------------------------------------------------------
   23. Responsive system
   -------------------------------------------------------------------------- */
@media (max-width:1120px){
  .hero-media{inset:0 0 0 44%}
  .hero-copy{width:70%}
  .estimate-grid{grid-template-columns:1fr 1fr;gap:3.5rem}
  .foot-grid{grid-template-columns:1.2fr 1fr 1fr}
  .foot-contact{grid-column:2/4}
}

@media (max-width:980px){
  .site-head .wrap{min-height:74px}
  .site-logo,.site-head .custom-logo{max-height:43px;max-width:195px}
  .hero{min-height:auto;display:block}
  .hero::before{top:34%;left:-10%;width:120%;height:12%;transform:skewY(-7deg)}
  .hero::after{display:none}
  .hero-media{
    position:relative;
    inset:auto;
    width:100%;
    height:min(58vh,620px);
    clip-path:polygon(0 0,100% 0,100% 82%,16% 100%,0 100%);
  }
  .hero-media::after{border:0;background:linear-gradient(180deg,transparent,rgba(7,9,7,.7))}
  .hero-inner{padding-block:4.5rem 6rem}
  .hero-copy{width:100%;max-width:790px}
  .hero h1{font-size:clamp(4.2rem,12vw,7.5rem)}
  .hero-layout-centered .hero-media{position:absolute;height:100%}
  .hero-layout-centered .hero-inner{padding-block:8rem}
  .estimate-grid{grid-template-columns:1fr;gap:3.5rem}
  .estimate-intro .h-lg{max-width:12ch}
  .trust-badges{max-width:700px}
  .why{grid-template-columns:1fr}
  .why-media{max-width:750px}
  .why-media .ph{aspect-ratio:5/4}
  .why-copy{max-width:780px}
  .reviews-grid{grid-template-columns:1fr 1fr}
  .rcard:first-child{grid-column:1/-1;grid-row:auto;min-height:400px}
  .faq-layout{grid-template-columns:1fr;gap:2.8rem}
  .faq-intro{position:static}
  .faq-intro .h-lg{max-width:12ch}
  .page-hero .wrap:has(.page-hero-media){grid-template-columns:1fr}
  .page-hero .wrap:has(.page-hero-media) > :not(.page-hero-media){grid-column:1}
  .page-hero-media{grid-column:1;grid-row:auto;margin-top:2.8rem}
  .page-hero-media .ph{aspect-ratio:16/9;box-shadow:12px 12px 0 var(--obs-accent)}
  .content-grid{grid-template-columns:1fr}
  .widget-area{padding:2rem 0 0;border-top:1px solid var(--obs-line);border-left:0}
  .foot-grid{grid-template-columns:1fr 1fr}
  .foot-contact{grid-column:auto}
}

@media (max-width:760px){
  :root{--section-space:clamp(4.5rem,15vw,6.5rem);--obs-grid:36px}
  .topbar{display:none}
  .sec-head,.sec-head--c{grid-template-columns:1fr;gap:1rem}
  .sec-head .lede,.sec-head--c .lede{grid-column:1;grid-row:auto;margin-top:.4rem}
  .sec-head-aside{grid-column:1;grid-row:auto;justify-self:start}
  .stats-bar{grid-template-columns:1fr;margin-top:-24px}
  .stats-bar .stat{display:grid;grid-template-columns:minmax(105px,.4fr) 1fr;align-items:center;padding:1rem 1.2rem}
  .stats-bar .stat + .stat{border-top:1px solid var(--obs-line-dark);border-left:0}
  .stats-bar .stat-n{font-size:2.5rem}
  #services .grid-3{grid-template-columns:1fr 1fr}
  .icard:nth-child(n){grid-column:auto;min-height:290px}
  .icard:nth-child(1),.icard:nth-child(6){grid-column:1/-1}
  .steps{grid-template-columns:1fr 1fr}
  .step{min-height:260px}
  .proj-grid{grid-template-columns:1fr 1fr;grid-auto-rows:280px}
  .ptile:nth-child(n){grid-column:auto;grid-row:auto;clip-path:none}
  .ptile:nth-child(1){grid-column:1/-1}
  .reviews-grid{grid-template-columns:1fr}
  .rcard:first-child{grid-column:auto;min-height:360px}
  .cta-band .wrap{padding-inline:0}
  .cta-band-inner,.cta-band > .wrap:not(:has(.cta-band-inner)){padding-inline:clamp(1.3rem,7vw,3rem)}
  .page-hero .wrap:not(:has(.page-hero-media)){padding-right:clamp(1.1rem,4vw,3.5rem)}
  .page-hero .wrap:not(:has(.page-hero-media))::after{display:none}
  .page-hero h1{font-size:clamp(3.7rem,14vw,6rem)}
  .meta-row{flex-direction:column;align-items:flex-start}
  .meta-row span{width:100%;margin:0;padding:.7rem 0;border-right:0;border-bottom:1px solid var(--obs-line-dark)}
  .svc-row{grid-template-columns:52px 1fr;padding:1.2rem .8rem}
  .svc-row:hover{padding-inline:1rem}
  .svc-row-media{display:none}
  .foot-grid{grid-template-columns:1fr 1fr}
  .foot-brand{grid-column:1/-1}
}

@media (max-width:560px){
  .hero-media{height:46vh;min-height:360px}
  .hero-inner{padding-block:3.8rem 5rem}
  .hero h1{font-size:clamp(3.65rem,18vw,5.8rem)}
  .hero-ctas{flex-direction:column;align-items:stretch}
  .hero-proof{grid-template-columns:1fr;width:100%}
  .hero-proof span + span{border-top:1px solid var(--obs-line-dark);border-left:0}
  .estimate-grid{margin-top:4.5rem}
  .trust-badges{grid-template-columns:1fr}
  .tbadge:nth-child(odd){border-right:0}
  .tbadge:nth-child(even){padding-left:0}
  .est-card{padding:1.4rem}
  .est-card::before{display:none}
  .form-grid{grid-template-columns:1fr}
  #services .grid-3{grid-template-columns:1fr}
  .icard:nth-child(n){grid-column:1;min-height:270px}
  .icard{grid-template-columns:38px minmax(0,1fr) 38px;padding:1.35rem}
  .icard:hover{padding:1.35rem}
  .icard p{grid-column:1/-1}
  .icard .tlink{grid-column:1/-1;grid-row:auto}
  .why-media{padding:0 5% 8% 0}
  .why-media .ph{aspect-ratio:4/5;box-shadow:14px 14px 0 var(--obs-accent)}
  .why-badge{width:66%;bottom:8%}
  .checks{grid-template-columns:1fr}
  .checks li:nth-child(odd){border-right:0}
  .steps{grid-template-columns:1fr}
  .step{min-height:0}
  .step-n{margin-bottom:2rem}
  .proj-grid{grid-template-columns:1fr;grid-auto-rows:320px}
  .ptile:nth-child(n){grid-column:1}
  .ptile-cap{right:.65rem;bottom:.65rem;left:.65rem}
  .rcard:first-child{min-height:340px}
  .acc-a-in{padding-right:0}
  .page-hero-media .ph{aspect-ratio:4/3;box-shadow:8px 8px 0 var(--obs-accent);clip-path:none}
  .search-form{flex-direction:column;gap:.6rem}
  .search-form .search-field{border-right:1px solid var(--obs-line)}
  .search-form .search-submit{min-height:48px}
  .foot-grid{grid-template-columns:1fr}
  .foot-brand,.foot-contact{grid-column:auto}
  .foot-bot{align-items:flex-start;flex-direction:column;gap:.65rem}
}

/* No visitor should lose content or context when motion is reduced. */
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{
    animation-duration:.01ms!important;
    animation-iteration-count:1!important;
    scroll-behavior:auto!important;
    transition-duration:.01ms!important;
  }
  .scr-reveal .rv,.scr-reveal .rv-group > *{opacity:1!important;transform:none!important}
}

/* Forced-color users retain structural borders, focus, and readable controls. */
@media (forced-colors:active){
  .btn,.panel,.icard,.svc-card,.area-card,.rcard,.step,.ptile,
  .field input,.field select,.field textarea,.acc-q .acc-ico{border:1px solid CanvasText}
  .hero h1 em{background:Highlight;color:HighlightText}
  .eyebrow::before,.tlink::before,.stats-bar,.site-head::after{background:Highlight}
}

/* ========================================================================== 
   24. Obsidian editorial markup integration
   The .obs-* hooks add information architecture and art-directed registers
   without replacing the durable theme classes above.
   ========================================================================== */

/* Shared section folio. */
.obs-section-register{
  display:flex;
  align-items:center;
  gap:.8rem;
  min-width:0;
  color:var(--obs-muted);
  font-family:var(--mono),monospace;
  font-size:.53rem;
  font-weight:700;
  letter-spacing:.16em;
  line-height:1.3;
  text-transform:uppercase;
}
.obs-section-register > span:first-child{
  flex:none;
  padding:.42rem .55rem;
  border:1px solid var(--obs-line);
  background:rgba(250,251,242,.35);
}
.obs-section-register .eyebrow{margin:0}
.obs-section-register--light{color:var(--obs-muted-dark)}
.obs-section-register--light > span:first-child{border-color:var(--obs-line-dark);background:rgba(7,9,7,.2)}

/* Utility rail. */
.obs-utility__grid{
  display:grid!important;
  grid-template-columns:130px minmax(0,1fr) auto;
  gap:0;
  align-items:stretch!important;
  min-height:34px;
  padding-block:0!important;
}
.obs-utility__marker{
  display:grid;
  grid-template-columns:1fr;
  align-content:center;
  padding-right:1rem;
  border-right:1px solid rgba(16,21,0,.28);
  font-size:.48rem;
  line-height:1.35;
}
.obs-utility__marker span:last-child{opacity:.62}
.obs-utility__facts{align-items:center;padding-left:1rem}
.obs-utility__social{padding-left:1.2rem;border-left:1px solid rgba(16,21,0,.28)}
.obs-utility__social-label{font-size:.48rem;opacity:.62}

/* Desktop masthead becomes a measured four-cell strip. */
.obs-head-grid{
  display:grid!important;
  grid-template-columns:86px minmax(150px,220px) minmax(0,1fr) auto;
  align-items:stretch!important;
  gap:0!important;
  min-height:86px;
}
.obs-head-edition{
  display:flex;
  flex-direction:column;
  justify-content:center;
  padding-right:1rem;
  border-right:1px solid var(--obs-line-dark);
  color:var(--obs-muted-dark);
  font-family:var(--mono),monospace;
  font-size:.46rem;
  letter-spacing:.1em;
  line-height:1.45;
  text-transform:uppercase;
}
.obs-head-edition b{color:var(--obs-accent);font-weight:700}
.obs-head-grid > .obs-brand{
  display:flex;
  align-items:center;
  padding-inline:clamp(1rem,2.4vw,2rem);
  border-right:1px solid var(--obs-line-dark);
}
.obs-primary{display:flex;align-items:stretch;justify-content:center;padding-inline:clamp(.7rem,2vw,1.8rem)}
.obs-primary .nav{height:100%}
.obs-head-actions{
  display:flex;
  align-items:stretch;
  gap:0;
  border-left:1px solid var(--obs-line-dark);
}
.obs-head-phone{
  display:flex;
  flex-direction:column;
  justify-content:center;
  min-width:150px;
  padding-inline:1rem;
  line-height:1.3;
}
.obs-head-phone span{color:var(--obs-muted-dark);font-size:.46rem;font-weight:500;letter-spacing:.13em;text-transform:uppercase}
.obs-head-phone b{color:var(--obs-white);font-size:.68rem;font-weight:650}
.obs-head-cta{align-self:stretch;min-height:0;border:0;padding-inline:1.25rem}
.obs-head-cta::after{display:none}
.obs-head-cta > span:last-child{font-size:.9rem}
.obs-burger{align-self:center;justify-self:end}
.obs-burger b{display:none}

/* Mobile folio layout. */
.obs-m-menu__head{display:grid;grid-template-columns:1fr auto auto;gap:1rem}
.obs-m-menu__folio,
.obs-m-menu__label,.obs-m-menu__coordinates{
  color:#3e4f00;
  font-family:var(--mono),monospace;
  font-size:.5rem;
  font-weight:700;
  letter-spacing:.17em;
  text-transform:uppercase;
}
.obs-m-menu__body{
  display:flex;
  flex:1 1 auto;
  min-height:0;
  overflow:hidden;
  padding:1.25rem clamp(1.25rem,4vw,2.5rem) 0;
}
.obs-m-menu__label{width:52px;padding-top:.8rem;writing-mode:vertical-rl}
.obs-m-menu__body .m-nav{flex:1;padding:0 0 1.5rem}
.obs-m-menu__foot{display:grid;grid-template-columns:minmax(0,1fr) minmax(190px,.48fr);gap:1rem;align-items:end}
.obs-m-menu__foot .m-phone{margin:0}
.obs-m-menu__foot .btn{grid-column:2;grid-row:1}
.obs-m-menu__coordinates{grid-column:1/-1}

/* Poster hero editorial grid. */
.obs-hero__field{position:absolute;z-index:3;inset:0;pointer-events:none}
.obs-hero__axis{position:absolute;background:var(--obs-line-acid)}
.obs-hero__axis--x{right:0;bottom:18%;left:0;height:1px}
.obs-hero__axis--y{top:0;bottom:0;left:calc(50% - 1px);width:1px}
.obs-hero__folio{
  position:absolute;
  left:clamp(1rem,3vw,2.2rem);
  bottom:calc(18% + .75rem);
  color:var(--obs-accent);
  font-family:var(--mono),monospace;
  font-size:.54rem;
  font-weight:700;
  letter-spacing:.18em;
}
.obs-hero__media-register{
  position:absolute;
  z-index:4;
  top:1rem;
  right:1rem;
  display:flex;
  gap:1rem;
  padding:.55rem .65rem;
  border:1px solid rgba(215,255,63,.38);
  background:rgba(7,9,7,.7);
  color:var(--obs-accent);
  font-family:var(--mono),monospace;
  font-size:.48rem;
  font-weight:700;
  letter-spacing:.13em;
}
.obs-hero__grid{
  display:grid;
  grid-template-columns:64px minmax(0,1fr) minmax(170px,230px);
  gap:clamp(1.4rem,3.4vw,3.5rem);
  align-items:end;
}
.obs-hero__rail{
  align-self:stretch;
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:1rem;
  padding-block:.25rem;
  color:var(--obs-muted-dark);
  font-family:var(--mono),monospace;
  font-size:.48rem;
  font-weight:600;
  letter-spacing:.12em;
  text-transform:uppercase;
  writing-mode:vertical-rl;
}
.obs-hero__rail-index{color:var(--obs-accent);font-weight:700}
.obs-hero__rail-line{flex:1;width:1px;min-height:50px;background:var(--obs-line-acid)}
.obs-hero__copy{width:auto;max-width:910px;padding:0}
.obs-hero__copy-top{
  display:grid;
  grid-template-columns:auto 1fr auto;
  gap:.7rem;
  align-items:center;
  margin-bottom:1.5rem;
  padding-bottom:.7rem;
  border-bottom:1px solid var(--obs-line-dark);
  color:var(--obs-accent);
}
.obs-hero__copy-top > span:first-child{font-size:.52rem}
.obs-hero__copy-top .hero-eyebrow{margin:0}
.obs-hero__edition{
  color:var(--obs-muted-dark);
  font-family:var(--mono),monospace;
  font-size:.48rem;
  font-weight:650;
  letter-spacing:.16em;
}
.obs-hero__line{display:block;width:max-content;max-width:100%}
.obs-hero__line--signal{margin:.08em 0 .06em .5ch;transform:skewX(-7deg)}
.obs-hero__lower{
  display:grid;
  grid-template-columns:minmax(250px,1fr) auto;
  gap:1.4rem 2rem;
  align-items:end;
  max-width:760px;
  margin-top:2rem;
}
.obs-hero__lower .hero-sub{margin:0}
.obs-hero__lower .hero-ctas{flex-wrap:nowrap;margin:0}
.obs-hero__actions .btn{white-space:nowrap}
.obs-hero__actions .btn::after{display:none}
.obs-hero__proof{
  grid-template-columns:auto minmax(130px,1fr) minmax(130px,1fr);
  width:100%;
  max-width:760px;
}
.obs-hero__proof-label{
  display:flex;
  align-items:center;
  padding:.85rem!important;
  background:var(--obs-accent);
  color:var(--obs-accent-ink);
}
.obs-hero__proof-label::before{display:none}
.obs-hero__dispatch{
  position:relative;
  align-self:end;
  display:flex;
  flex-direction:column;
  gap:.45rem;
  padding:1.1rem;
  border:1px solid var(--obs-line-acid);
  background:rgba(7,9,7,.82);
  backdrop-filter:blur(12px);
}
.obs-hero__dispatch::before{content:"";position:absolute;top:0;right:0;width:12px;height:12px;background:var(--obs-accent);clip-path:polygon(100% 0,0 0,100% 100%)}
.obs-hero__dispatch-label{color:var(--obs-accent);font-family:var(--mono);font-size:.48rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase}
.obs-hero__dispatch a{color:var(--obs-white);font-family:var(--display);font-size:1.15rem;font-weight:700;letter-spacing:-.035em}
.obs-hero__dispatch p{color:var(--obs-muted-dark);font-size:.72rem;line-height:1.45}

/* Estimate dossier. */
.obs-estimate{position:relative;overflow:hidden}
.obs-estimate__marquee{
  display:flex;
  justify-content:space-around;
  gap:2rem;
  overflow:hidden;
  height:78px;
  border-bottom:1px solid var(--obs-line-acid);
  color:rgba(215,255,63,.12);
  font-family:var(--display),sans-serif;
  font-size:clamp(3rem,6vw,6rem);
  font-weight:800;
  letter-spacing:-.06em;
  line-height:.92;
  text-transform:uppercase;
  white-space:nowrap;
}
.obs-stats{margin-top:-1px}
.obs-stats::before{display:none}
.obs-stats__label{
  position:absolute;
  z-index:2;
  top:-1.75rem;
  left:0;
  color:var(--obs-accent);
  font-family:var(--mono),monospace;
  font-size:.5rem;
  font-weight:700;
  letter-spacing:.17em;
}
.obs-stat{display:grid!important;grid-template-columns:42px 1fr;grid-template-rows:1fr auto;column-gap:1rem}
.obs-stat__index{
  grid-column:1;
  grid-row:1/3;
  align-self:stretch;
  display:flex;
  align-items:center;
  justify-content:center;
  border-right:1px solid var(--obs-line-dark);
  color:var(--obs-accent);
  font-family:var(--mono),monospace;
  font-size:.55rem;
  font-weight:700;
}
.obs-stat .stat-n{grid-column:2;grid-row:1}
.obs-stat .stat-l{grid-column:2;grid-row:2}
.obs-estimate__intro .obs-section-register{margin-bottom:1.1rem;color:var(--obs-muted-dark)}
.obs-estimate__intro .obs-section-register > span{border-color:var(--obs-line-dark);background:transparent}
.obs-trust__item{
  display:grid;
  grid-template-columns:38px 40px 1fr;
  gap:.75rem;
}
.obs-trust__index{
  align-self:stretch;
  display:grid;
  place-items:center;
  border-right:1px solid var(--obs-line-dark);
  color:var(--obs-accent);
  font-family:var(--mono),monospace;
  font-size:.46rem!important;
  letter-spacing:.1em;
  writing-mode:vertical-rl;
}
.obs-trust__item .tbadge-ic{margin:0}
.obs-form-ticket{
  display:flex;
  justify-content:space-between;
  gap:1rem;
  margin:-1rem -1rem 2rem;
  padding:.7rem 1rem;
  border-bottom:1px solid rgba(16,21,0,.28);
  color:#344200;
  font-family:var(--mono),monospace;
  font-size:.48rem;
  font-weight:700;
  letter-spacing:.14em;
}
.obs-form-head{position:relative}
.obs-form-grid{margin-top:2.1rem}
.obs-form-submit .btn{display:flex;justify-content:space-between}
.obs-form-submit .btn::after{display:none}
.obs-form-note{padding-top:1rem;border-top:1px solid rgba(16,21,0,.24);font-size:.68rem}
.obs-form-note span{font-family:var(--mono);font-size:.5rem;font-weight:700;letter-spacing:.12em}
.obs-form-status{padding:.8rem;border:1px solid rgba(16,21,0,.28);font-weight:700}
.obs-form-status--success{color:#243000!important;background:rgba(250,251,242,.45)}
.obs-form-status--error{color:#691b08!important;background:#fff0ea}

/* Services section index. */
.obs-services__head{
  display:grid;
  grid-template-columns:repeat(12,1fr);
  gap:1rem;
  align-items:end;
  margin-bottom:clamp(3rem,6vw,5.5rem);
  padding-top:1.2rem;
  border-top:1px solid var(--obs-line);
}
.obs-services__head .obs-section-register{grid-column:1/7}
.obs-services__head .h-lg{grid-column:1/8;max-width:10ch;margin-top:1rem}
.obs-services__brief{
  grid-column:9/13;
  grid-row:1/3;
  display:grid;
  grid-template-columns:auto 1fr;
  gap:1.2rem;
  align-items:end;
}
.obs-services__count{
  color:transparent;
  font-family:var(--display),sans-serif;
  font-size:clamp(5rem,9vw,9rem);
  font-weight:800;
  letter-spacing:-.08em;
  line-height:.7;
  -webkit-text-stroke:1px #5c7600;
}
.obs-services__brief .lede{font-size:.92rem}
.obs-service{
  grid-template-columns:minmax(0,1fr) 44px;
  grid-template-rows:auto 1fr auto;
}
.obs-service__register{
  grid-column:1;
  grid-row:1;
  display:flex;
  align-items:center;
  gap:.7rem;
  color:var(--obs-muted-dark);
  font-family:var(--mono),monospace;
  font-size:.48rem;
  letter-spacing:.13em;
  text-transform:uppercase;
}
.obs-service__register .icard-index{position:static;padding:0}
.obs-service__type{padding-left:.7rem;border-left:1px solid var(--obs-line-dark)}
.obs-service__icon{grid-column:2;grid-row:1}
.obs-service__content{grid-column:1/-1;grid-row:2;align-self:end}
.obs-service__content h3{max-width:12ch;color:inherit}
.obs-service__content p{max-width:54ch;margin-top:.65rem;color:var(--obs-muted-dark);font-size:.82rem}
.obs-service .obs-service__link{grid-column:1/-1;grid-row:3;justify-content:space-between;padding-top:1rem;border-top:1px solid var(--obs-line-dark)}
.obs-service__link > span{font-size:1rem}
.obs-service:hover .obs-service__type,.obs-service:hover .obs-service__content p{color:#293400}
.obs-service:hover .obs-service__link{border-color:rgba(7,9,7,.25)}
.obs-services__footer{
  display:flex;
  justify-content:space-between;
  gap:1rem;
  margin-top:1rem;
  padding-top:.75rem;
  border-top:1px solid var(--obs-line);
  color:var(--obs-muted);
  font-family:var(--mono),monospace;
  font-size:.5rem;
  font-weight:650;
  letter-spacing:.13em;
}

/* Proof spread. */
.obs-proof{padding-top:0!important}
.obs-proof__ticker{
  position:relative;
  z-index:2;
  display:flex;
  justify-content:space-between;
  gap:1rem;
  padding:.72rem clamp(1.1rem,4vw,3.5rem);
  border-bottom:1px solid var(--obs-line-acid);
  background:var(--obs-accent);
  color:var(--obs-accent-ink);
  font-family:var(--mono),monospace;
  font-size:.52rem;
  font-weight:700;
  letter-spacing:.17em;
}
.obs-proof__grid{padding-top:var(--section-space);padding-bottom:calc(var(--section-space) * .25)}
.obs-proof__media-label{
  position:absolute;
  top:.8rem;
  left:.8rem;
  z-index:2;
  padding:.5rem .6rem;
  border:1px solid var(--obs-line-acid);
  background:rgba(7,9,7,.76);
  color:var(--obs-accent);
  font-family:var(--mono),monospace;
  font-size:.48rem;
  font-weight:700;
  letter-spacing:.14em;
}
.obs-proof__copy .obs-section-register{margin-bottom:1rem}
.obs-proof__narrative{padding-left:1.1rem;border-left:1px solid var(--obs-line-acid)}
.obs-proof__checks li::before{display:none}
.obs-proof__checks li{display:grid;grid-template-columns:32px 1fr;gap:.7rem;align-items:start;padding-left:.6rem}
.obs-proof__checks li > span{
  color:var(--obs-accent);
  font-family:var(--mono),monospace;
  font-size:.5rem;
  font-weight:700;
}
.obs-proof__checks li > b{color:var(--obs-muted-dark);font-size:.8rem;font-weight:550}
.obs-proof__cta{justify-content:space-between;min-width:220px}
.obs-proof__cta::after{display:none}

/* Project protocol. */
.obs-process__head,
.obs-projects__head{
  display:grid;
  grid-template-columns:repeat(12,1fr);
  gap:1rem;
  align-items:end;
  margin-bottom:clamp(3rem,6vw,5.5rem);
  padding-top:1.2rem;
  border-top:1px solid currentColor;
}
.obs-process__head .obs-section-register,.obs-projects__head .obs-section-register{grid-column:1/7}
.obs-process__head .h-lg,.obs-projects__head .h-lg{grid-column:1/8;max-width:10ch;margin-top:1rem}
.obs-process__head .lede,.obs-projects__head .lede{grid-column:9/13;grid-row:1/3;font-size:.95rem}
.obs-process__count,.obs-projects__archive{
  grid-column:12;
  grid-row:1;
  justify-self:end;
  color:#405600;
  font-family:var(--mono),monospace;
  font-size:.52rem;
  font-weight:700;
  letter-spacing:.13em;
  line-height:1.35;
  text-align:right;
}
.obs-process__track{counter-reset:obs-step}
.obs-step{display:flex;flex-direction:column}
.obs-step__register{display:flex;align-items:flex-start;justify-content:space-between}
.obs-step__register .step-n{margin-bottom:clamp(3rem,6vw,5rem)}
.obs-step__status{color:#405600;font-family:var(--mono);font-size:.48rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;writing-mode:vertical-rl}
.obs-step__body{margin-top:auto}
.obs-step__vector{align-self:flex-end;margin-top:1rem;color:#405600;font-family:var(--mono);font-size:1.15rem}
.obs-process__baseline,
.obs-cta__baseline{
  display:flex;
  justify-content:space-between;
  gap:1rem;
  margin-top:.8rem;
  padding-top:.7rem;
  border-top:1px solid rgba(7,9,7,.3);
  color:#354400;
  font-family:var(--mono),monospace;
  font-size:.48rem;
  font-weight:700;
  letter-spacing:.14em;
}

/* Projects field archive. */
.obs-projects__head{border-color:var(--obs-line-dark)}
.obs-projects__head .obs-section-register{color:var(--obs-muted-dark)}
.obs-projects__head .obs-section-register > span{border-color:var(--obs-line-dark);background:rgba(7,9,7,.35)}
.obs-projects__archive{color:var(--obs-accent)}
.obs-project__serial{
  position:absolute;
  z-index:4;
  top:.75rem;
  left:.75rem;
  padding:.4rem .5rem;
  border:1px solid var(--obs-line-acid);
  background:rgba(7,9,7,.75);
  color:var(--obs-accent);
  font-family:var(--mono),monospace;
  font-size:.5rem;
  font-weight:700;
  letter-spacing:.13em;
}
.obs-project__caption{
  display:grid;
  grid-template-columns:1fr auto;
  gap:.2rem 1rem;
  align-items:end;
}
.obs-project__meta{grid-column:1;color:var(--obs-muted-dark)!important;font-family:var(--mono)!important;font-size:.45rem!important;letter-spacing:.13em;text-transform:uppercase}
.obs-project__caption b{grid-column:1}
.obs-project__caption > span:not(.obs-project__meta):not(.obs-project__arrow){grid-column:1}
.obs-project__arrow{grid-column:2;grid-row:1/4;align-self:center;color:var(--obs-accent)!important;font-family:var(--mono)!important;font-size:1rem!important}
.obs-projects__cta{
  display:grid;
  grid-template-columns:1fr auto;
  align-items:center;
  gap:1rem;
  margin-top:1rem!important;
  padding-top:.9rem;
  border-top:1px solid var(--obs-line-dark);
  color:var(--obs-muted-dark);
  font-family:var(--mono),monospace;
  font-size:.5rem;
  font-weight:700;
  letter-spacing:.14em;
  text-align:left;
}

/* Kinetic testimonial viewer. */
.obs-reviews__grid{
  display:grid;
  grid-template-columns:minmax(260px,.68fr) minmax(0,1.32fr);
  gap:clamp(3rem,9vw,9rem);
  align-items:start;
}
.obs-reviews__head{
  position:sticky;
  top:140px;
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  padding-top:1.2rem;
  border-top:1px solid var(--obs-line);
}
.obs-reviews__head .h-lg{max-width:8ch;margin-top:1rem}
.obs-reviews__head .lede{margin-top:1.2rem;font-size:.96rem}
.obs-reviews__rating{
  display:grid;
  grid-template-columns:1fr auto;
  gap:.1rem 1rem;
  width:100%;
  margin-top:2rem;
  padding:1rem;
  border:1px solid var(--obs-line);
}
.obs-reviews__rating > span{grid-column:1;color:#4a6200;font-size:.72rem;letter-spacing:.12em}
.obs-reviews__rating b{grid-column:2;grid-row:1/3;align-self:center;font-family:var(--display);font-size:2.2rem;line-height:1}
.obs-reviews__rating small{grid-column:1;color:var(--obs-muted);font-family:var(--mono);font-size:.48rem;letter-spacing:.12em}
.obs-reviews__stage{min-width:0}
.obs-reviews__rail{
  position:relative;
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:8px;
  min-height:0;
  border:0;
}
.obs-review{
  min-height:280px;
  padding:clamp(1.8rem,4vw,3.2rem);
  border:1px solid var(--obs-line-acid);
  background:var(--obs-black);
  color:var(--obs-white);
}
.obs-reviews__rail .obs-review--01{grid-column:1/-1;grid-row:auto;min-height:470px;padding-right:clamp(2rem,5vw,4.5rem);background:var(--obs-black);color:var(--obs-white)}
.obs-review--02{background:var(--obs-accent);border-color:var(--obs-accent);color:var(--obs-accent-ink)}
.obs-review--03{background:var(--obs-orange);border-color:var(--obs-orange);color:#180600}
.obs-review blockquote{max-width:25ch;margin-block:auto;color:inherit;font-family:var(--display);font-size:clamp(1.35rem,2.2vw,2.2rem);font-weight:700;line-height:1.08;letter-spacing:-.045em;text-transform:uppercase}
.obs-reviews__rail .obs-review--01 blockquote{max-width:22ch;font-size:clamp(2.2rem,4.2vw,4.5rem)}
.obs-review blockquote p{color:inherit}
.obs-review__top{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem}
.obs-review__top .q-mark{position:static;color:var(--obs-accent);font-size:5rem;line-height:.5}
.obs-review__top .stars{margin-left:auto;color:var(--obs-accent)}
.obs-review__index{color:var(--obs-muted-dark);font-family:var(--mono);font-size:.5rem;font-weight:700;letter-spacing:.13em}
.obs-review--02 .q-mark,.obs-review--02 .stars,.obs-review--02 .obs-review__index,
.obs-review--03 .q-mark,.obs-review--03 .stars,.obs-review--03 .obs-review__index{color:inherit}
.obs-review__cite{position:relative;display:grid;grid-template-columns:38px 1fr auto;gap:.8rem;align-items:center}
.obs-review__verified{color:var(--obs-accent)!important;font-family:var(--mono);font-size:.48rem!important;letter-spacing:.12em;text-transform:uppercase}
.obs-review--02 .obs-review__verified,.obs-review--03 .obs-review__verified{color:inherit!important}
.obs-review--02 .ravatar,.obs-review--03 .ravatar{background:var(--obs-black);color:var(--obs-white)}

/* Project start CTA. */
.obs-cta__stamp{
  position:absolute;
  z-index:3;
  top:1rem;
  right:clamp(1rem,3vw,2rem);
  color:var(--obs-accent);
  font-family:var(--mono),monospace;
  font-size:.52rem;
  font-weight:700;
  letter-spacing:.16em;
}
.obs-cta__grid{
  display:grid;
  grid-template-columns:70px minmax(0,1fr) auto;
  gap:clamp(1.5rem,4vw,4rem);
  align-items:end;
}
.obs-cta__rail{
  align-self:stretch;
  display:flex;
  flex-direction:column;
  justify-content:space-between;
  align-items:center;
  padding-right:1rem;
  border-right:1px solid rgba(7,9,7,.3);
  color:#354400;
  font-family:var(--mono),monospace;
  font-size:.48rem;
  font-weight:700;
  letter-spacing:.14em;
  writing-mode:vertical-rl;
}
.obs-cta__cross{font-size:1.5rem;writing-mode:horizontal-tb}
.obs-cta__kicker{
  display:block;
  margin-bottom:1.1rem;
  color:#354400;
  font-family:var(--mono),monospace;
  font-size:.55rem;
  font-weight:700;
  letter-spacing:.16em;
  text-transform:uppercase;
}
.obs-cta__copy h2{font-size:clamp(3.2rem,6.5vw,7.5rem)}
.obs-cta__actions{flex-direction:column;align-items:stretch;margin:0!important}
.obs-cta__actions .btn{min-width:210px;justify-content:space-between}
.obs-cta__actions .btn::after{display:none}
.obs-cta__baseline{border-color:var(--obs-line-dark);color:var(--obs-muted-dark)}

/* FAQ register. */
.obs-faq__intro{padding-left:0;border:0}
.obs-faq__intro .obs-section-register{padding-left:1rem;border-left:7px solid var(--obs-accent)}
.obs-faq__signal{
  display:flex;
  justify-content:space-between;
  width:100%;
  margin-top:2rem;
  padding:.8rem;
  border:1px solid var(--obs-line);
  color:#405600;
  font-family:var(--mono),monospace;
  font-size:.5rem;
  font-weight:700;
  letter-spacing:.13em;
}
.obs-faq__list{counter-reset:obs-faq}
.obs-faq__item .acc-q{display:grid;grid-template-columns:55px minmax(0,1fr) 34px;text-align:left}
.obs-faq__index{color:#405600;font-family:var(--mono);font-size:.54rem;font-weight:700;letter-spacing:.1em}
.obs-faq__question{padding-right:1rem}
.obs-faq__item .acc-a-in{padding-left:55px}

/* Footer project index. */
.obs-foot__signal{
  display:flex;
  justify-content:space-between;
  gap:1rem;
  padding:.75rem clamp(1.1rem,4vw,3.5rem);
  border-bottom:1px solid var(--obs-line-acid);
  background:var(--obs-accent);
  color:var(--obs-accent-ink);
  font-family:var(--mono),monospace;
  font-size:.52rem;
  font-weight:700;
  letter-spacing:.16em;
}
.obs-foot__intro{
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  gap:1rem 3rem;
  align-items:end;
}
.obs-foot__intro .obs-section-register{grid-column:1/-1}
.obs-foot__intro .foot-statement{grid-column:1}
.obs-foot__direct{
  grid-column:2;
  display:grid;
  grid-template-columns:1fr auto;
  gap:.15rem 1rem;
  min-width:235px;
  padding:1rem;
  border:1px solid var(--obs-line-acid);
  color:var(--obs-white);
}
.obs-foot__direct > span:first-child{grid-column:1;color:var(--obs-accent);font-family:var(--mono);font-size:.48rem;font-weight:700;letter-spacing:.13em;text-transform:uppercase}
.obs-foot__direct b{grid-column:1;font-family:var(--display);font-size:1.25rem;letter-spacing:-.035em}
.obs-foot__direct > span:last-child{grid-column:2;grid-row:1/3;align-self:center;color:var(--obs-accent);font-size:1.1rem}
.obs-foot__grid > *{position:relative;padding-top:1.2rem;border-top:1px solid var(--obs-line-dark)}
.obs-foot__cell-label{
  display:block;
  margin-bottom:1.2rem;
  color:var(--obs-muted-dark);
  font-family:var(--mono),monospace;
  font-size:.47rem;
  font-weight:650;
  letter-spacing:.13em;
}
.obs-foot__social{align-items:center}
.obs-foot__social > span{margin-right:.35rem;color:var(--obs-muted-dark);font-family:var(--mono);font-size:.48rem;letter-spacing:.1em;text-transform:uppercase}
.obs-foot__bottom{display:grid;grid-template-columns:1fr auto 1fr}
.obs-foot__bottom > span:last-child{text-align:right}
.obs-foot__coordinates{color:var(--obs-accent)}

/* Search and 404 are deliberate product surfaces, not generic fallbacks. */
.error404 .page-hero h1{max-width:none;font-size:clamp(4.8rem,11vw,12rem)}
.error404 .page-hero .eyebrow{color:var(--obs-orange)}
.error404 main > .sec{
  background-color:var(--obs-accent);
  background-image:linear-gradient(rgba(7,9,7,.11) 1px,transparent 1px),linear-gradient(90deg,rgba(7,9,7,.11) 1px,transparent 1px);
  background-size:48px 48px;
}
.error404 main > .sec .wrap::before{
  content:"404 / LOST SIGNAL";
  display:block;
  margin-bottom:1.2rem;
  color:#354400;
  font-family:var(--mono),monospace;
  font-size:.55rem;
  font-weight:700;
  letter-spacing:.16em;
}
.search-results .page-hero h1,.search-no-results .page-hero h1{max-width:15ch}
.sec--dark [style*="color:var(--mut)"]{color:var(--obs-muted-dark)!important}

/* Gutenberg/editor output inherits the product language. */
.entry-content blockquote:not(.pull){margin:2rem 0;padding:1.2rem 1.4rem;border-left:7px solid var(--obs-accent);background:var(--obs-white)}
.entry-content table{width:100%;border-collapse:collapse}
.entry-content th,.entry-content td{padding:.8rem;border:1px solid var(--obs-line);text-align:left}
.entry-content th{background:var(--obs-black);color:var(--obs-white);font-family:var(--mono);font-size:.62rem;letter-spacing:.08em;text-transform:uppercase}
.entry-content code,.entry-content pre{font-family:var(--mono),monospace}
.entry-content code{padding:.15em .35em;background:var(--obs-bone-2)}
.entry-content pre{overflow:auto;margin:1.5rem 0;padding:1.2rem;background:var(--obs-black);color:var(--obs-white)}
.entry-content hr,.wp-block-separator{margin-block:2rem;border:0;border-top:1px solid var(--obs-line)}
.wp-block-button__link{border-radius:0;background:var(--obs-black);color:var(--obs-white);font-family:var(--mono);font-size:.65rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase}
.wp-block-button__link:hover{background:var(--obs-accent);color:var(--obs-accent-ink)}

/* New markup responsive integration. */
@media (max-width:1260px){
  .obs-head-grid{grid-template-columns:minmax(150px,200px) minmax(0,1fr) auto}
  .obs-head-edition{display:none}
  .obs-head-grid > .obs-brand{padding-left:0}
  .obs-primary{padding-inline:.6rem}
  .obs-head-phone{display:none}
  .obs-hero__grid{grid-template-columns:52px minmax(0,1fr) minmax(150px,190px);gap:1.5rem}
  .obs-hero__lower{grid-template-columns:1fr}
  .obs-hero__lower .hero-ctas{margin-top:.35rem}
}

@media (max-width:980px){
  .obs-head-grid{grid-template-columns:1fr auto;align-items:center!important}
  .obs-head-grid > .obs-brand{border:0}
  .obs-primary,.obs-head-actions{display:none}
  .obs-burger{display:flex}
  .obs-hero__grid{grid-template-columns:54px minmax(0,1fr)}
  .obs-hero__dispatch{grid-column:2;margin-top:1rem;max-width:320px}
  .obs-hero__copy{grid-column:2}
  .obs-hero__rail{grid-column:1;grid-row:1/3}
  .obs-hero__proof{grid-template-columns:auto 1fr 1fr}
  .obs-services__head .obs-section-register{grid-column:1/8}
  .obs-services__head .h-lg{grid-column:1/9}
  .obs-services__brief{grid-column:9/13}
  .obs-services__brief{grid-template-columns:1fr}
  .obs-services__count{font-size:6rem}
  .obs-process__head .h-lg,.obs-projects__head .h-lg{grid-column:1/9}
  .obs-process__head .lede,.obs-projects__head .lede{grid-column:9/13}
  .obs-reviews__grid{grid-template-columns:1fr}
  .obs-reviews__head{position:static;display:grid;grid-template-columns:1fr minmax(220px,.45fr);gap:1rem 2rem}
  .obs-reviews__head .obs-section-register,.obs-reviews__head .h-lg{grid-column:1}
  .obs-reviews__head .lede{grid-column:1}
  .obs-reviews__rating{grid-column:2;grid-row:1/4;margin:0}
  .obs-reviews__rail{min-height:0}
  .obs-reviews__rail .obs-review--01{min-height:440px}
  .obs-review--02,.obs-review--03{min-height:260px}
  .obs-cta__grid{grid-template-columns:54px minmax(0,1fr)}
  .obs-cta__actions{grid-column:2;flex-direction:row;flex-wrap:wrap}
  .obs-foot__intro{grid-template-columns:1fr}
  .obs-foot__intro .foot-statement,.obs-foot__direct{grid-column:1}
  .obs-foot__direct{max-width:350px}
}

@media (max-width:760px){
  .obs-utility__grid{grid-template-columns:1fr auto}
  .obs-utility__marker{display:none}
  .obs-utility__facts{padding-left:0}
  .obs-m-menu__foot{grid-template-columns:1fr}
  .obs-m-menu__foot .btn{grid-column:1;grid-row:auto}
  .obs-hero__field{display:none}
  .obs-hero__media-register{top:.75rem;right:.75rem}
  .obs-hero__grid{grid-template-columns:1fr}
  .obs-hero__rail{
    grid-column:1;
    grid-row:auto;
    flex-direction:row;
    align-items:center;
    padding-bottom:.75rem;
    border-bottom:1px solid var(--obs-line-dark);
    writing-mode:horizontal-tb;
  }
  .obs-hero__rail-line{width:auto;height:1px;min-height:0}
  .obs-hero__copy,.obs-hero__dispatch{grid-column:1}
  .obs-hero__copy-top{grid-template-columns:auto 1fr}
  .obs-hero__edition{display:none}
  .obs-hero__proof{grid-template-columns:1fr}
  .obs-hero__proof-label{justify-content:center}
  .obs-hero__proof span + span{border-top:1px solid var(--obs-line-dark);border-left:0}
  .obs-stat{grid-template-columns:34px 1fr!important}
  .obs-trust__item{grid-template-columns:34px 40px 1fr}
  .obs-services__head,
  .obs-process__head,.obs-projects__head{grid-template-columns:1fr;gap:1rem}
  .obs-services__head .obs-section-register,.obs-services__head .h-lg,
  .obs-services__brief,.obs-process__head .obs-section-register,
  .obs-process__head .h-lg,.obs-process__head .lede,
  .obs-projects__head .obs-section-register,.obs-projects__head .h-lg,
  .obs-projects__head .lede{grid-column:1;grid-row:auto}
  .obs-services__brief{grid-template-columns:auto 1fr;align-items:center}
  .obs-services__count{font-size:5rem}
  .obs-process__count,.obs-projects__archive{display:none}
  .obs-reviews__rail{grid-template-columns:1fr;min-height:0}
  .obs-review--01,.obs-review--02,.obs-review--03{grid-column:1;min-height:300px}
  .obs-reviews__rail .obs-review--01{min-height:400px}
  .obs-reviews__head{display:flex}
  .obs-reviews__rating{margin-top:1.5rem}
  .obs-review__cite{grid-template-columns:38px 1fr}
  .obs-review__verified{grid-column:1/-1}
  .obs-cta__grid{grid-template-columns:1fr}
  .obs-cta__rail{display:none}
  .obs-cta__actions{grid-column:1;flex-direction:column}
  .obs-faq__item .acc-q{grid-template-columns:48px minmax(0,1fr) 34px}
  .obs-faq__item .acc-a-in{padding-left:48px}
  .obs-foot__bottom{grid-template-columns:1fr}
  .obs-foot__bottom > span:last-child{text-align:left}
}

@media (max-width:560px){
  .obs-m-menu__head{grid-template-columns:1fr auto}
  .obs-m-menu__folio{display:none}
  .obs-m-menu__body{padding-left:1rem}
  .obs-m-menu__label{width:36px}
  .obs-hero__media-register{display:none}
  .obs-hero__lower{grid-template-columns:1fr}
  .obs-hero__actions{flex-direction:column;align-items:stretch}
  .obs-hero__actions .btn{white-space:normal}
  .obs-estimate__marquee{height:58px;font-size:3rem}
  .obs-form-ticket{margin:-.4rem -.4rem 1.5rem}
  .obs-service{grid-template-columns:minmax(0,1fr) 38px}
  .obs-projects__cta{grid-template-columns:1fr}
  .obs-reviews__rail{min-height:0}
  .obs-reviews__rail .obs-review--01{min-height:360px}
  .obs-review--02,.obs-review--03{min-height:260px}
  .obs-review blockquote{font-size:clamp(1.45rem,7vw,2.35rem)}
  .obs-reviews__rail .obs-review--01 blockquote{font-size:clamp(1.9rem,9vw,3rem)}
  .obs-review__top .q-mark{font-size:4rem}
  .obs-faq__item .acc-q{grid-template-columns:1fr 34px;gap:.7rem}
  .obs-faq__index{grid-column:1/-1}
  .obs-faq__question{grid-column:1}
  .obs-faq__item .acc-ico{grid-column:2;grid-row:2}
  .obs-faq__item .acc-a-in{padding-left:0}
  .obs-foot__signal{flex-direction:column;gap:.2rem}
  .obs-foot__direct{min-width:0;width:100%}
}

/* --------------------------------------------------------------------------
   25. Buyer controls, brand fallback, and final accessibility guarantees
   -------------------------------------------------------------------------- */

/* The code-native fallback wordmark replaces the bundled legacy raster mark
   while uploaded Customizer logos remain untouched. */
.site-logo.site-wordmark{
  display:inline-flex;
  align-items:center;
  gap:.72rem;
  width:auto;
  max-width:230px;
  height:auto;
  color:var(--obs-white);
  filter:none!important;
}
.site-wordmark__mark{
  position:relative;
  flex:none;
  display:grid;
  place-items:center;
  width:39px;
  height:34px;
  overflow:hidden;
  background:var(--obs-accent);
  color:var(--obs-accent-ink);
  clip-path:polygon(0 25%,50% 0,100% 25%,100% 100%,0 100%);
}
.site-wordmark__mark::after{
  content:"";
  position:absolute;
  right:7px;
  bottom:7px;
  left:7px;
  height:2px;
  background:currentColor;
  transform:skewX(-34deg);
}
.site-wordmark__mark svg{width:22px;height:22px;stroke-width:1.8}
.site-wordmark__text{
  min-width:0;
  color:var(--obs-white);
  font-family:var(--display),"Arial Black",sans-serif;
  font-size:clamp(.92rem,.86rem + .25vw,1.18rem);
  font-weight:750;
  letter-spacing:-.045em;
  line-height:.92;
  text-transform:uppercase;
}
.m-menu .site-wordmark__text{color:var(--obs-accent-ink)}
.m-menu .site-wordmark__mark{background:var(--obs-black);color:var(--obs-accent)}
.site-foot .site-wordmark__text{color:var(--obs-white)}

/* Status and inline links stay legible on white/bone surfaces. */
.form-status--success,
.sec:not(.sec--dark) .form-status--success{
  padding:.8rem 1rem;
  border-left:5px solid #4c6400;
  background:#e8f4c8;
  color:#283600!important;
}
.obs-text-link{
  color:#334b00!important;
  font-weight:750;
  text-decoration:underline;
  text-decoration-thickness:2px;
  text-underline-offset:.2em;
}
.obs-text-link:hover{color:var(--obs-black)!important}

/* Highlight typography remains independently buyer-selectable. */
h1 em,h2 em,h3 em,.accent,
.hero h1 em,.page-hero h1 em,.cta-band h2 em,.why-title-accent{
  font-family:var(--accent-font),var(--display),sans-serif;
  font-style:normal;
  font-weight:600;
}
.hero h1 em{background:var(--obs-highlight);color:var(--obs-black)}
.page-hero h1 em,.why-title-accent{color:var(--obs-highlight)}
.cta-band h2 em{color:var(--obs-black);text-decoration:underline;text-decoration-thickness:.08em;text-underline-offset:.08em}

/* “Natural” is truly unfiltered; cinematic and monochrome remain art-directed
   alternatives. Scale/crop motion is retained because it does not change hue. */
.design-tone-natural .hero-media img,
.design-tone-natural .why-media .ph-img,
.design-tone-natural .ptile img,
.design-tone-natural .ptile:hover img,
.design-tone-natural .page-hero-media .ph-img,
.design-tone-natural .svc-row-media .ph-img,
.design-tone-natural .svc-row:hover .ph-img,
.design-tone-natural .svc-card .ph-img,
.design-tone-natural .svc-card:hover .ph-img,
.design-tone-natural .pcard-media .ph,
.design-tone-natural .pcard-media img,
.design-tone-natural .pcard:hover .pcard-media .ph,
.design-tone-natural .pcard:hover .pcard-media img,
.design-tone-natural .post-card .post-thumb img,
.design-tone-natural .post-card .ph-img,
.design-tone-natural .post-card:hover .post-thumb img,
.design-tone-natural .post-card:hover .ph-img,
.design-tone-natural .post-thumb img,
.design-tone-natural .ph-img{
  filter:none;
}

/* The precision grid switch controls all decorative grid fields. Structural
   rules, borders, photos, and readable contrast remain exactly the same. */
body:not(.has-surface-texture) .sec--tint,
body:not(.has-surface-texture) .sec--dark,
body:not(.has-surface-texture) .hero,
body:not(.has-surface-texture) .page-hero,
body:not(.has-surface-texture) .sec--projects,
body:not(.has-surface-texture) .site-foot,
body:not(.has-surface-texture) .m-menu,
body:not(.has-surface-texture) .cta-band-inner,
body:not(.has-surface-texture) .cta-band > .wrap:not(:has(.cta-band-inner)),
body:not(.has-surface-texture) #estimate,
body:not(.has-surface-texture) #services,
body.error404:not(.has-surface-texture) main > .sec{
  background-image:none;
}

/* All three testimonials remain in normal document flow. This deliberately
   outranks the retired quote-rotator rules in the structural stylesheet. */
.obs-reviews__rail > .obs-review{
  position:relative;
  inset:auto;
  visibility:visible;
  opacity:1;
  transform:none;
}

@media (max-width:560px){
  .site-logo.site-wordmark{max-width:190px;gap:.58rem}
  .site-wordmark__mark{width:34px;height:30px}
  .site-wordmark__text{font-size:.9rem}
  .obs-hero__copy,.obs-hero__copy-top,.obs-hero__line{min-width:0}
  .obs-hero h1{
    width:100%;
    max-width:100%;
    font-size:clamp(3rem,13.5vw,4.25rem);
    line-height:.84;
  }
  .obs-hero__line{width:100%;max-width:100%}
  .obs-hero__line--signal{
    width:fit-content;
    margin-left:0;
    padding-inline:.12em;
  }
  .obs-hero__copy-top .hero-eyebrow{
    min-width:0;
    overflow-wrap:anywhere;
    letter-spacing:.14em;
    white-space:normal;
  }
}
