/* Legacy layout selectors; palette and typography tokens live in design-system.css. */

*,*::before,*::after{box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{
  margin:0;
  font-family:var(--sans);
  font-size:17px;
  line-height:1.65;
  color:var(--ink);
  background:var(--paper);
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}
img{max-width:100%;display:block;}
a{color:inherit;text-decoration:none;}
button{font-family:inherit;cursor:pointer;border:0;background:none;color:inherit;}
:focus-visible{outline:2px solid var(--brand-blue);outline-offset:2px;border-radius:2px;}

.container{max-width:1280px;margin:0 auto;padding:0 32px;}
@media (max-width: 768px){ .container{padding:0 20px;} }

/* Typography */
h1,h2,h3,h4{font-family:var(--serif);font-weight:700;color:var(--brand-blue-deep);line-height:1.15;letter-spacing:-0.01em;margin:0;text-wrap:balance;}
h1{font-size:clamp(2.5rem, 5vw, 4.25rem); line-height:1.05;}
h2{font-size:clamp(2rem, 3.5vw, 3rem);}
h3{font-size:1.5rem;font-weight:600;letter-spacing:-0.005em;}
p{margin:0 0 1em;text-wrap:pretty;}
.eyebrow{
  font-family:var(--sans);
  text-transform:uppercase;
  font-weight:600;
  letter-spacing:0.14em;
  font-size:0.78rem;
  color:var(--clay);
  display:inline-block;
}
.lede{font-size:1.15rem;color:var(--mute);max-width:65ch;}

/* Buttons */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:.55rem;
  padding:.95rem 1.4rem;
  font-size:.96rem;font-weight:600;letter-spacing:0.02em;
  border-radius:2px;
  transition:transform .2s ease, background .2s ease, box-shadow .2s ease, color .2s ease, border-color .2s ease;
  cursor:pointer; line-height:1;
  white-space:nowrap;
}
.btn-primary{background:var(--brand-blue);color:#fff;}
.btn-primary:hover{background:var(--brand-blue-deep);color:#fff;transform:translateY(-1px);box-shadow:none;}
.btn-outline-light{border:1px solid rgba(255,255,255,.6);color:#fff;}
.btn-outline-light:hover{border-color:#fff;background:rgba(255,255,255,.06);}
.btn-outline-dark{border:1px solid var(--brand-blue);color:var(--brand-blue-deep);}
.btn-outline-dark:hover{background:var(--brand-blue);color:#fff;}
.btn .arrow{display:inline-block;transition:transform .2s ease;}
.btn:hover .arrow{transform:translateX(3px);}


/* ============================================================
   HEADER / NAV (two-row: utility -> contact -> sticky main nav)
   ============================================================ */

/* Thin utility strip */
.utility{
  background:var(--ink);
  color:var(--bone);
  font-size:.8rem;
  letter-spacing:.01em;
}
.utility .inner{
  display:flex;align-items:center;justify-content:space-between;
  padding:.5rem 0;gap:1rem;
}
.utility .left{opacity:.85;}
.utility .right a{
  display:inline-flex;align-items:center;gap:.4rem;
  color:#fff;font-weight:500;
}
.utility .right a:hover{color:var(--clay);}
.utility .dot{display:inline-block;width:3px;height:3px;border-radius:50%;background:currentColor;opacity:.45;margin:0 .5rem;vertical-align:middle;}
@media (max-width: 768px){ .utility .left{display:none;} .utility .inner{justify-content:flex-end;} }

/* Top contact bar (white) */
.topbar{
  background:#fff;
  border-bottom:1px solid var(--line);
}
.topbar-inner{
  display:grid;
  grid-template-columns:auto 1fr auto auto;
  align-items:center;
  gap:2.5rem;
  padding:1.1rem 0;
}
.logo{ display:flex; align-items:center; line-height:1; }
.logo img{ display:block; height:64px; width:auto; }
.contact-block{
  display:flex; flex-direction:column; align-items:flex-end; line-height:1.25;
  text-align:right;
}
.contact-label{
  font-size:.75rem; font-weight:700; letter-spacing:.16em; text-transform:uppercase; color:var(--ink);
}
.contact-val{
  font-size:1.05rem; font-weight:600; color:var(--brand-blue-deep); letter-spacing:.005em;
  margin-top:.22rem;
}
.contact-val.phone{ color:var(--brand-blue-deep); font-variant-numeric:tabular-nums; font-weight:700; }
.contact-val:hover{ opacity:.82; }

@media (max-width: 1024px){
  .topbar-inner{ grid-template-columns:1fr auto; gap:1rem; padding:.85rem 0; }
  .topbar-inner .contact-block.email-block{ display:none; }
  .logo img{ height:50px; }
}
@media (max-width: 640px){
  .logo img{ height:42px; }
  .contact-label{ font-size:.75rem; }
  .contact-val{ font-size:.92rem; }
}

/* Main nav (sticky, teal) */
.site-header{
  position:sticky; top:0; z-index:50;
  background:var(--brand-blue-deep); /* logo teal */
  color:#fff;
  box-shadow:0 1px 0 rgba(0,0,0,.05);
}
.site-header .nav-inner{
  display:flex; align-items:stretch; justify-content:space-between; gap:0;
  min-height:56px;
  position:relative;
}
.nav{
  display:flex; align-items:stretch; gap:0;
  flex:1;
}
.nav .nav-link{
  display:inline-flex; align-items:center;
  padding:0 1.15rem; gap:.4rem;
  color:#fff;
  font-size:.82rem; font-weight:700;
  letter-spacing:.07em; text-transform:uppercase;
  position:relative;
  transition:background .15s ease, color .15s ease;
  min-height:56px;
  white-space:nowrap;
}
.nav .nav-link:hover,
.nav-item:hover > .nav-link,
.nav .nav-link.is-current{
  background:var(--ink); color:#fff;
}
.nav-item{ position:relative; display:flex; }
.nav .caret{
  display:inline-block; font-size:.75rem; opacity:.9;
  transform:translateY(-1px);
  transition:transform .15s ease;
}
.nav-item.has-sub:hover .caret{ transform:translateY(0) rotate(-180deg); }
.nav-dropdown{
  position:absolute; left:0; top:100%;
  background:#fff;
  min-width:280px;
  border:1px solid var(--line);
  border-top:0;
  box-shadow:0 20px 40px -12px rgba(0,0,0,.18);
  opacity:0; visibility:hidden; transform:translateY(-4px);
  transition:opacity .15s ease, visibility 0s linear .15s, transform .15s ease;
  z-index:60;
  display:flex; flex-direction:column;
}
.nav-item:hover .nav-dropdown,
.nav-item:focus-within .nav-dropdown,
.nav-item.open .nav-dropdown{
  opacity:1; visibility:visible; transform:translateY(0);
  transition:opacity .15s ease, visibility 0s linear 0s, transform .15s ease;
}
.nav-dropdown a{
  display:block; padding:.95rem 1.3rem;
  font-size:.76rem; font-weight:700; letter-spacing:.08em; text-transform:uppercase;
  color:var(--brand-blue-deep);
  border-bottom:1px solid var(--line);
  white-space:nowrap;
  transition:background .12s ease, color .12s ease;
}
.nav-dropdown a:last-child{ border-bottom:0; }
.nav-dropdown a:hover{ background:var(--bone); color:var(--brand-blue-deep); }

.nav-cta{
  border-radius:0 !important;
  padding:0 1.6rem !important;
  font-size:.82rem !important; font-weight:700;
  letter-spacing:.07em; text-transform:uppercase;
  align-self:stretch;
  display:inline-flex; align-items:center;
  white-space:nowrap;
}
.nav-cta:hover{ transform:none !important; box-shadow:none !important; }

/* Page hero (for non-homepage pages) */
.page-hero{
  position:relative; overflow:hidden;
  background:
    radial-gradient(900px 500px at 85% -10%, rgba(156,90,60,.10), transparent 60%),
    radial-gradient(900px 500px at 5% 110%, rgba(17,127,165,.28), transparent 60%),
    linear-gradient(155deg, #1a1a1a 0%, #0e6a8d 55%, #0e6a8d 100%);
  color:#fff;
  padding:4.5rem 0 4rem;
}
.page-hero::before{
  content:"";position:absolute;inset:0;pointer-events:none;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='600' height='600'><defs><pattern id='w' width='80' height='80' patternUnits='userSpaceOnUse'><path d='M0 40 Q 20 20 40 40 T 80 40' fill='none' stroke='%23ffffff' stroke-width='1' opacity='0.55'/></pattern></defs><rect width='600' height='600' fill='url(%23w)'/></svg>");
  opacity:.06;mix-blend-mode:screen;
}
.page-hero .container{ position:relative; }
.crumbs{
  font-size:.78rem; letter-spacing:.1em; text-transform:uppercase;
  color:rgba(255,255,255,.7); margin-bottom:1.1rem;
}
.crumbs a{ color:#ffffff; }
.crumbs a:hover{ color:#fff; }
.crumbs .sep{ margin:0 .55rem; opacity:.55; }
.page-hero h1{
  color:#fff; letter-spacing:-0.015em; font-size:clamp(2.25rem, 4.5vw, 3.75rem);
}
.page-hero h1 em{ font-style:italic; color:var(--clay); font-weight:700; }
.page-hero .sub{
  font-size:1.15rem; color:rgba(255,255,255,.82); margin-top:1.2rem; max-width:60ch; line-height:1.55;
}
@media (max-width:768px){
  .page-hero{ padding:3rem 0 3rem; }
  .page-hero .sub{ font-size:1.02rem; }
}

/* Page body (generic) */
.page-body{ padding:5rem 0; background:#fff; }
.page-body .container{ display:grid; grid-template-columns:1.5fr 1fr; gap:4rem; }
.page-body .prose{ color:var(--ink); font-size:1.05rem; line-height:1.7; }
.page-body .prose h2{ font-size:clamp(1.7rem, 2.8vw, 2.4rem); margin:0 0 1rem; }
.page-body .prose h3{ margin:2.2rem 0 .6rem; font-size:1.35rem; }
.page-body .prose p{ margin:0 0 1.1em; color:var(--ink); }
.page-body .prose ul{ margin:0 0 1.4em; padding:0; list-style:none; }
.page-body .prose ul li{
  position:relative; padding:.4rem 0 .4rem 1.5rem;
  border-bottom:1px solid var(--line);
  font-size:1rem; color:var(--ink);
}
.page-body .prose ul li::before{
  content:"";
  position:absolute; left:0; top:1.05em;
  width:6px; height:6px; background:var(--clay);
}
.page-body .prose ul li:last-child{ border-bottom:0; }
.page-body .aside{
  background:var(--bone); border:1px solid var(--line);
  padding:2rem 1.8rem; align-self:start; position:sticky; top:88px;
}
.page-body .aside h3{
  font-family:var(--serif); color:var(--brand-blue-deep); font-size:1.3rem;
  margin:0 0 1rem; letter-spacing:-0.005em;
}
.page-body .aside p{ color:var(--mute); font-size:.96rem; }
.page-body .aside .ph-num{
  display:block; font-family:var(--sans); font-weight:700; font-size:1.55rem;
  color:var(--clay); font-variant-numeric:tabular-nums; margin:.4rem 0 1rem;
}
.page-body .aside .btn{ width:100%; justify-content:center; }
.page-body .aside .meta{
  display:flex; flex-direction:column; gap:.6rem; margin-top:1.4rem;
  padding-top:1.4rem; border-top:1px solid var(--line);
  font-size:.84rem; color:var(--mute);
}
.page-body .aside .meta b{ color:var(--brand-blue-deep); font-weight:600; }
@media (max-width:900px){
  .page-body{ padding:3rem 0; }
  .page-body .container{ grid-template-columns:1fr; gap:2.5rem; }
  .page-body .aside{ position:static; }
}

/* "Related" tile strip on subpages */
.related{ background:var(--bone); padding:5rem 0; }
.related h2{ text-align:center; margin-bottom:2.5rem; }
.related h2 em{ font-style:italic; color:var(--clay); }
.related-grid{
  display:grid; grid-template-columns:repeat(4,1fr); gap:1rem;
}
.related-tile{
  display:flex; flex-direction:column;
  background:#fff; border:1px solid var(--line);
  padding:1.4rem 1.3rem 1.3rem;
  transition:transform .2s ease, box-shadow .2s ease, border-color .2s ease;
}
.related-tile:hover{ transform:translateY(-2px); box-shadow:0 16px 32px -16px rgba(0,0,0,.14); border-color:var(--clay); }
.related-tile .tag{
  font-size:.75rem; font-weight:700; letter-spacing:.16em; text-transform:uppercase;
  color:var(--mute); margin-bottom:.5rem;
}
.related-tile h3{
  color:var(--brand-blue-deep); font-size:1.15rem; font-family:var(--serif); font-weight:700;
  margin:0; letter-spacing:-0.005em; flex:1;
}
.related-tile .arrow{
  display:inline-flex; align-items:center; gap:.35rem;
  margin-top:1rem;
  font-size:.75rem; font-weight:700; letter-spacing:.1em; text-transform:uppercase;
  color:var(--clay);
}
@media (max-width:900px){ .related-grid{ grid-template-columns:repeat(2,1fr); } }
@media (max-width:560px){ .related-grid{ grid-template-columns:1fr; } }

/* Hero */
.hero{
  position:relative;overflow:hidden;
  background:
    radial-gradient(1200px 600px at 82% -10%, rgba(156,90,60,.14), transparent 60%),
    radial-gradient(1000px 600px at 10% 110%, rgba(17,127,165,.32), transparent 60%),
    linear-gradient(155deg, #1a1a1a 0%, #0e6a8d 55%, #0e6a8d 100%);
  color:#fff;
  padding:5.5rem 0 6rem;
}
.hero::before{
  content:"";position:absolute;inset:0;pointer-events:none;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='600' height='600'><defs><pattern id='w' width='80' height='80' patternUnits='userSpaceOnUse'><path d='M0 40 Q 20 20 40 40 T 80 40' fill='none' stroke='%23ffffff' stroke-width='1' opacity='0.55'/></pattern></defs><rect width='600' height='600' fill='url(%23w)'/></svg>");
  opacity:.06;mix-blend-mode:screen;
}
.hero .grid{
  position:relative;
  display:grid;grid-template-columns:1.2fr 1fr;gap:4rem;align-items:center;
}
.hero h1{color:#fff;letter-spacing:-0.015em;}
.hero h1 em{font-style:italic;color:var(--clay);font-weight:700;}
.hero .sub{
  font-size:1.2rem;color:rgba(255,255,255,.82);margin-top:1.4rem;max-width:34em;line-height:1.55;
}
.hero .eyebrow{color:#ffffff;}
.ticks{
  display:flex;flex-wrap:wrap;gap:1.8rem;margin:2.2rem 0 2.4rem;
}
.tick{display:inline-flex;align-items:center;gap:.55rem;font-size:.94rem;color:#fff;font-weight:500;}
.tick svg{flex:none;color:var(--clay);}
.cta-row{display:flex;flex-wrap:wrap;gap:.85rem;}
.hero-photo{
  position:relative;aspect-ratio:4/5;border-radius:2px;overflow:hidden;
  box-shadow:0 30px 80px -30px rgba(0,0,0,.6), 0 8px 20px -12px rgba(0,0,0,.4);
  background:linear-gradient(135deg,#B89B7A 0%,#6E5840 100%);
}
.hero-photo .ph-caption{padding:1.6rem;}
.ph-badge{
  position:absolute;left:1.2rem;bottom:1.2rem;
  background:rgba(255,255,255,.94);color:var(--ink);
  padding:.55rem .85rem;border-radius:2px;
  font-size:.76rem;font-weight:600;letter-spacing:.04em;
  font-variant-numeric:tabular-nums;
  box-shadow:0 8px 20px -10px rgba(0,0,0,.4);
}
@media (max-width:900px){
  .hero{padding:3.5rem 0 4rem;}
  .hero .grid{grid-template-columns:1fr;gap:2.4rem;}
  .hero-photo{aspect-ratio:5/4;}
}
@media (max-width:768px){
  .hero{padding:2.5rem 0 3rem;}
  .hero h1{font-size:clamp(1.95rem, 6.5vw, 3.25rem); line-height:1.1;}
  .hero .sub{font-size:1rem; margin-top:.95rem; line-height:1.5;}
  .ticks{gap:.95rem 1.4rem; margin:1.4rem 0 1.6rem;}
  .tick{font-size:.85rem;}
  .cta-row{gap:.6rem;}
  .cta-row .btn{flex:1 1 auto; min-height:48px;}
}
@media (max-width:560px){
  .hero{padding:2rem 0 2.5rem;}
  .hero h1{font-size:clamp(1.7rem, 8vw, 2.5rem);}
  .hero .sub{font-size:.94rem; margin-top:.75rem;}
  .ticks{gap:.7rem 1.1rem; margin:1.1rem 0 1.3rem;}
  .tick{font-size:.82rem;}
  .ph-badge{font-size:.75rem; padding:.45rem .7rem; left:.85rem; bottom:.85rem;}
}

/* Photo placeholder (texture system) */
.ph{
  position:relative;overflow:hidden;
  display:flex;flex-direction:column;justify-content:flex-end;
  color:rgba(255,255,255,.85);
}
.ph::before{
  content:"";position:absolute;inset:0;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='320' height='320'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 1  0 0 0 0 1  0 0 0 0 1  0 0 0 .25 0'/></filter><rect width='320' height='320' filter='url(%23n)' opacity='0.5'/></svg>");
  mix-blend-mode:overlay;opacity:.45;pointer-events:none;
}
.ph::after{
  content:"";position:absolute;inset:0;
  background:linear-gradient(180deg, transparent 35%, rgba(0,0,0,.55) 100%);
  pointer-events:none;
}
.ph .ph-caption{
  position:relative;z-index:1;
  padding:1.2rem;
  font-family:"JetBrains Mono", ui-monospace, "SF Mono", Menlo, Consolas, monospace;
  font-size:.75rem;line-height:1.5;letter-spacing:.02em;
  color:rgba(255,255,255,.92);
  text-transform:uppercase;
}
.ph .ph-caption b{display:block;color:#fff;font-weight:700;letter-spacing:.06em;font-size:.75rem;margin-bottom:.4rem;}

.ph.roman{background:linear-gradient(135deg,#B89B7A 0%,#6E5840 100%);}
.ph.venetian{background:linear-gradient(135deg,#C2B59B 0%,#6B5A45 100%);}
.ph.limewash{background:linear-gradient(135deg,#B8A88E 0%,#7D6B52 100%);}
.ph.fpe{background:var(--bone, #f5f1ea);}
.ph.cabinet{background:linear-gradient(135deg,#4A4036 0%,#2A2520 100%);}
.ph.team{background:var(--bone, #f5f1ea);}

/* Sections */
section{padding:5.5rem 0;}
@media (max-width:768px){ section{padding:4rem 0;} }

/* Trust bar */
.trust{
  background:var(--bone);
  padding:2.5rem 0;
  border-top:1px solid var(--line);
  border-bottom:1px solid var(--line);
}
.trust-grid{
  display:grid;grid-template-columns:repeat(6,1fr);gap:1.5rem;
}
.trust-item{
  display:flex;flex-direction:column;align-items:flex-start;gap:.5rem;
  padding:.25rem 0;
}
.trust-item .ic{
  width:44px;height:44px;color:var(--clay);
}
.trust-item .label{
  font-family:var(--serif);font-weight:700;color:var(--brand-blue-deep);font-size:1.1rem;line-height:1.15;
}
.trust-item .sub{
  font-size:.8rem;color:var(--mute);line-height:1.4;
}
@media (max-width: 1024px){ .trust-grid{grid-template-columns:repeat(3,1fr);row-gap:2rem;} }
@media (max-width: 600px){
  .trust{padding:1.6rem 0;}
  .trust-grid{grid-template-columns:repeat(2,1fr); gap:1.1rem 1.2rem;}
  .trust-item{gap:.35rem;}
  .trust-item .ic{width:34px; height:34px;}
  .trust-item .label{font-size:.95rem;}
  .trust-item .sub{font-size:.75rem;}
}
@media (max-width: 380px){
  .trust-grid{grid-template-columns:1fr; gap:.8rem;}
  .trust-item{flex-direction:row; align-items:center; gap:.7rem;}
  .trust-item .ic{width:30px; height:30px; flex:none;}
}

/* Section heads */
.section-head{margin-bottom:3rem;max-width:780px;}
.section-head.center{text-align:center;margin-left:auto;margin-right:auto;}
.section-head .eyebrow{margin-bottom:.9rem;}
.section-head h2 em{font-style:italic;color:var(--clay);}
.section-head .lede{margin-top:1.2rem;}

/* Specialty */
.specialty{background:var(--bone);}

/* Hard stats strip under section head */
.spec-stats{
  display:grid;grid-template-columns:repeat(4,1fr);
  border-top:1px solid var(--line);
  border-bottom:1px solid var(--line);
  margin:2.4rem 0 3rem;
  background:#fff;
}
.spec-stat{
  padding:1.5rem 1.4rem;
  border-right:1px solid var(--line);
  display:flex;flex-direction:column;gap:.25rem;
}
.spec-stat:last-child{border-right:0;}
.spec-stat .big{
  font-family:var(--serif);font-weight:700;color:var(--brand-blue-deep);
  font-size:2.2rem;line-height:1;letter-spacing:-0.02em;
  font-variant-numeric:tabular-nums;
}
.spec-stat .big em{font-style:italic;color:var(--clay);font-weight:700;}
.spec-stat .lbl{
  font-size:.78rem;color:var(--mute);line-height:1.45;margin-top:.4rem;
}
@media (max-width:900px){
  .spec-stats{grid-template-columns:repeat(2,1fr);}
  .spec-stat:nth-child(1),.spec-stat:nth-child(2){border-bottom:1px solid var(--line);}
  .spec-stat:nth-child(2){border-right:0;}
}

.spec-grid{
  display:grid;grid-template-columns:repeat(3,1fr);gap:1.6rem;
}
.spec-card{
  background:#fff;
  display:flex;flex-direction:column;
  border:1px solid var(--line);
  transition:transform .25s ease, box-shadow .25s ease;
  cursor:pointer;
  position:relative;
}
.spec-card:hover{transform:translateY(-4px);box-shadow:0 18px 36px -16px rgba(31,58,147,.22);}
.spec-card .ph{aspect-ratio:4/3;}
.spec-card .body{padding:1.5rem 1.5rem 1.7rem;display:flex;flex-direction:column;gap:.65rem;flex:1;}
.spec-card .tag{
  font-size:.75rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--mute);
  padding-bottom:.2rem;
}
.spec-card h3{color:var(--brand-blue-deep);font-size:1.4rem;}
.spec-card .desc{color:var(--mute);font-size:.95rem;line-height:1.6;margin:0;}
.spec-card .why{
  margin-top:.7rem;
  padding:.7rem .85rem;
  background:rgba(240,128,32,.06);
  border-left:2px solid var(--clay);
  font-size:.84rem;line-height:1.5;color:var(--ink);
}
.spec-card .why b{
  display:block;
  font-size:.75rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;
  color:var(--clay);margin-bottom:.2rem;
}
.spec-card .price{
  font-size:.92rem;font-weight:600;color:var(--brand-blue-deep);
  padding-top:1rem;margin-top:auto;border-top:1px solid var(--line);
  display:flex;align-items:center;justify-content:space-between;gap:.5rem;
}
.spec-card .price .arrow{color:var(--clay);transition:transform .2s ease;}
.spec-card:hover .price .arrow{transform:translateX(4px);}
@media (max-width:1024px){ .spec-grid{grid-template-columns:repeat(2,1fr);} }
@media (max-width:640px){ .spec-grid{grid-template-columns:1fr;} }

/* Audience guidance: unboxed text columns. */
.compare{
  margin-top:3.5rem;
  display:grid;grid-template-columns:1fr 1fr;
  border:0;
  background:transparent;
}
.compare-col{
  padding:0;
}
.compare-col .head{
  font-size:.75rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase;
  margin-bottom:.7rem;
}
.compare-col h3{
  font-family:var(--serif);font-weight:700;font-size:1.5rem;line-height:1.2;
  margin-bottom:1.4rem;letter-spacing:-0.005em;
}
.compare-col h3 em{font-style:italic;}
.compare-list{
  list-style:none;padding:0;margin:0;
  display:flex;flex-direction:column;
}
.compare-list li{
  padding:.85rem 0;
  font-size:.95rem;line-height:1.5;
  display:flex;align-items:flex-start;gap:.7rem;
  border-top:1px solid rgba(0,0,0,.07);
}
.compare-list li:first-child{border-top:0;}
.compare-list .mark{
  flex:none;width:18px;height:18px;margin-top:2px;
  display:inline-flex;align-items:center;justify-content:center;
}
@media (max-width:760px){
  .compare{grid-template-columns:1fr;}
}

/* Closing claim banner */
.claim{
  margin-top:3rem;
  padding:2rem 2.2rem;
  background:#fff;
  border:1px solid var(--line);
  border-left:4px solid var(--clay);
  display:flex;align-items:center;justify-content:space-between;gap:2rem;flex-wrap:wrap;
}
.claim .text{
  font-family:var(--serif);font-style:italic;font-weight:500;
  color:var(--brand-blue-deep);font-size:1.35rem;line-height:1.35;letter-spacing:-0.005em;
  max-width:70ch;text-wrap:balance;
}
.claim .text em{color:var(--clay);font-style:italic;}
.claim .cta{flex:none;}
@media (max-width:760px){ .claim .text{font-size:1.15rem;} }

/* Process */
.process-grid{
  display:grid;grid-template-columns:repeat(3,1fr);gap:2.4rem;
  margin-top:.5rem;
}
.process-col .num{
  font-family:var(--serif);font-size:3rem;font-weight:600;color:var(--brand-blue-deep);line-height:1;
  display:block;margin-bottom:.8rem;font-variant-numeric:tabular-nums;
  border-bottom:1px solid var(--line);padding-bottom:1rem;
}
.process-col h3{margin-bottom:.6rem;color:var(--brand-blue-deep);}
.process-col p{color:var(--mute);font-size:.98rem;}
@media (max-width:768px){ .process-grid{grid-template-columns:1fr;gap:2rem;} }

/* Logo strip */
.logo-strip{
  margin-top:4rem;background:var(--bone);padding:2rem 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);
}
.logo-strip .label{
  text-align:center;
  text-transform:uppercase;letter-spacing:.16em;font-size:.75rem;font-weight:600;color:var(--mute);
  margin-bottom:1.4rem;
}
.logos{
  display:flex;align-items:center;justify-content:center;gap:3.5rem;flex-wrap:wrap;
}
.logos .brand{
  font-family:var(--serif);font-weight:700;color:var(--brand-blue-deep);opacity:.55;
  transition:opacity .25s ease, color .25s ease, transform .25s ease;
  font-size:1.15rem;letter-spacing:-.005em;text-align:center;line-height:1.1;
}
.logos .brand .small{display:block;font-family:var(--sans);font-size:.75rem;letter-spacing:.16em;text-transform:uppercase;font-weight:600;opacity:.85;margin-top:.18rem;}
.logos .brand:hover{opacity:1;color:var(--ink);transform:translateY(-1px);}
@media (max-width:640px){ .logos{gap:2rem;} }

/* Founders */
.founders{background:var(--bone);}
.founders-grid{
  display:grid;grid-template-columns:1fr 1fr;gap:4rem;align-items:center;
}
.founders .ph{aspect-ratio:4/5;}
.founders h2{margin-top:.9rem;}
.founders p{color:var(--ink);line-height:1.7;}
.pullquote{
  font-family:var(--serif);font-style:italic;font-size:1.4rem;color:var(--brand-blue-deep);
  line-height:1.35;margin-top:1.8rem;padding-top:1.6rem;border-top:1px solid rgba(31,58,147,.2);
  letter-spacing:-0.005em;text-wrap:balance;
}
@media (max-width:900px){
  .founders-grid{grid-template-columns:1fr;gap:2.4rem;}
  .founders .ph{aspect-ratio:5/4;order:-1;}
}

/* Reviews */
.reviews{background:#fff;}
.reviews-grid{
  display:grid;grid-template-columns:repeat(3,1fr);gap:1.6rem;
}
.review-card{
  background:#fff;
  border:1px solid var(--line);
  border-left:4px solid var(--brand-blue-deep);
  padding:1.8rem 1.7rem 1.6rem;
  position:relative;
  box-shadow:var(--shadow-card);
  display:flex;flex-direction:column;
}
.review-card .g{
  position:absolute;top:1.2rem;right:1.3rem;
  width:22px;height:22px;
}
.review-card .body{
  font-size:1rem;line-height:1.6;color:var(--ink);
  font-family:var(--serif);font-style:italic;font-weight:400;
  flex:1;
  letter-spacing:-0.002em;
}
.review-card .stars{
  display:flex;gap:2px;color:var(--clay);margin-bottom:.85rem;
}
.review-card .attribution{
  margin-top:1.2rem;padding-top:1.1rem;border-top:1px solid var(--line);
  font-size:.82rem;color:var(--mute);font-weight:500;letter-spacing:.01em;
}
.review-card .attribution b{color:var(--brand-blue-deep);font-weight:600;font-family:var(--sans);}
.read-all{
  text-align:center;margin-top:2.4rem;
  font-size:.82rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--brand-blue-deep);
}
.read-all a{color:var(--brand-blue-deep);border-bottom:1px solid var(--brand-blue);padding-bottom:2px;}
.read-all a:hover{color:var(--brand-blue-deep);}
@media (max-width:900px){ .reviews-grid{grid-template-columns:1fr;} }

/* Service areas */
.areas{
  background:var(--ink);color:#fff;
  position:relative;overflow:hidden;
}
.areas::before{
  content:"";position:absolute;inset:0;
  background:
    radial-gradient(800px 400px at 10% 100%, rgba(156,90,60,.10), transparent 60%),
    radial-gradient(700px 400px at 95% 0%, rgba(17,127,165,.16), transparent 60%);
  pointer-events:none;
}
.areas .section-head h2{color:#fff;}
.areas .section-head .lede{color:rgba(255,255,255,.78);max-width:60ch;}
.area-grid{
  display:grid;grid-template-columns:repeat(4,1fr);gap:1.2rem;position:relative;
}
.area-card{
  background:rgba(255,255,255,.04);
  border:1px solid rgba(255,255,255,.12);
  padding:1.5rem 1.4rem 1.4rem;
  transition:background .2s ease, transform .2s ease, border-color .2s ease;
  display:flex;flex-direction:column;
}
.area-card:hover{background:rgba(255,255,255,.08);transform:translateY(-2px);border-color:rgba(156,90,60,.4);}
.area-card .zip{
  font-size:.75rem;color:var(--clay);font-weight:600;letter-spacing:.14em;text-transform:uppercase;
  font-variant-numeric:tabular-nums;margin-bottom:.7rem;
}
.area-card h3{color:#fff;font-size:1.4rem;font-family:var(--serif);font-weight:700;line-height:1.1;}
.area-card .count{color:rgba(255,255,255,.65);font-size:.88rem;margin-top:.5rem;flex:1;}
.area-card .more{
  margin-top:1.1rem;
  font-size:.78rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:#fff;
  display:inline-flex;gap:.4rem;align-items:center;
}
.area-card:hover .more .arrow{transform:translateX(3px);color:var(--clay);}
.also{
  margin-top:2rem;color:rgba(255,255,255,.7);font-size:.95rem;max-width:75ch;position:relative;
}
@media (max-width:1024px){ .area-grid{grid-template-columns:repeat(2,1fr);} }
@media (max-width:560px){ .area-grid{grid-template-columns:1fr;} }

/* Designer trade */
.trade{
  background:var(--bone);
  border-top:2px solid var(--clay);
}
.trade-grid{
  display:grid;grid-template-columns:1.05fr 1fr;gap:4rem;align-items:center;
}
.trade .ph{aspect-ratio:5/4;}
@media (max-width:900px){ .trade-grid{grid-template-columns:1fr;gap:2.4rem;} }

/* Form */
.form-wrap{max-width:760px;margin:0 auto;}
.steps-tabs{
  display:grid;grid-template-columns:repeat(4,1fr);
  gap:0;
  margin-bottom:1.5rem;
  border:1px solid var(--line);
  background:#fff;
}
.step-tab{
  padding:1rem 1.1rem;
  font-size:.82rem;font-weight:600;color:var(--mute);
  display:flex;align-items:center;gap:.65rem;
  border-right:1px solid var(--line);
  background:#fff;text-align:left;
  transition:background .2s ease, color .2s ease;
  cursor:pointer;
}
.step-tab:last-child{border-right:0;}
.step-tab .n{
  display:inline-flex;align-items:center;justify-content:center;
  width:22px;height:22px;border-radius:50%;
  background:var(--line);color:var(--brand-blue-deep);
  font-size:.75rem;font-weight:700;font-variant-numeric:tabular-nums;flex:none;
}
.step-tab.active{color:var(--brand-blue-deep);background:var(--bone);}
.step-tab.active .n{background:var(--brand-blue);color:#fff;}
.step-tab.done .n{background:var(--brand-blue-deep);color:#fff;}
.step-tab .ttxt{line-height:1.2;}
@media (max-width:760px){
  .steps-tabs{grid-template-columns:1fr 1fr;}
  .step-tab{border-bottom:1px solid var(--line);}
  .step-tab:nth-child(2){border-right:0;}
  .step-tab:nth-child(3),.step-tab:nth-child(4){border-bottom:0;}
}

.progress{
  height:3px;background:var(--line);overflow:hidden;margin-bottom:2rem;display:none;
}
.progress.show{display:block;}
.progress .bar{height:100%;background:var(--brand-blue);width:25%;transition:width .35s ease;}

.step-panel{display:none;}
.step-panel.active{display:block;animation:fade .25s ease;}
@keyframes fade{from{opacity:0;transform:translateY(4px);}to{opacity:1;transform:none;}}

.step-panel h3{font-size:1.65rem;margin-bottom:1.4rem;color:var(--brand-blue-deep);}
.radio-grid{
  display:grid;grid-template-columns:repeat(2,1fr);gap:.75rem;
}
.radio-card{
  position:relative;display:flex;align-items:center;gap:.9rem;
  padding:1.05rem 1.1rem;border:1px solid var(--line);background:#fff;
  cursor:pointer;transition:border-color .2s ease, background .2s ease, transform .15s ease;
}
.radio-card:hover{border-color:var(--brand-blue-deep);}
.radio-card input{position:absolute;opacity:0;inset:0;width:100%;height:100%;cursor:pointer;}
.radio-card .ic{width:30px;height:30px;color:var(--brand-blue-deep);flex:none;}
.radio-card .lbl{font-size:.98rem;font-weight:600;color:var(--brand-blue-deep);line-height:1.2;}
.radio-card .sm{display:block;font-weight:400;color:var(--mute);font-size:.82rem;margin-top:.18rem;letter-spacing:0;}
.radio-card input:checked + .ic, .radio-card.checked{border-color:var(--brand-blue);}
.radio-card.checked{background:var(--bone);border-color:var(--brand-blue);box-shadow:inset 0 0 0 1px var(--brand-blue);}
@media (max-width:600px){ .radio-grid{grid-template-columns:1fr;} }

.field-row{display:grid;grid-template-columns:1fr 1fr;gap:1rem;}
@media (max-width:600px){ .field-row{grid-template-columns:1fr;} }
.field{display:flex;flex-direction:column;margin-bottom:1rem;}
.field label{font-size:.86rem;font-weight:600;color:var(--brand-blue-deep);margin-bottom:.45rem;letter-spacing:.01em;}
.field input,.field select,.field textarea{
  font-family:inherit;font-size:1rem;color:var(--ink);
  padding:.85rem 1rem;border:1px solid var(--line);background:#fff;border-radius:0;
  transition:border-color .2s ease;
}
.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--brand-blue-deep);}
.field .help{font-size:.82rem;color:var(--mute);margin-top:.4rem;line-height:1.5;}
.tier-row{display:grid;grid-template-columns:repeat(3,1fr);gap:.6rem;margin-top:.4rem;}
.tier{
  display:block;padding:.75rem .6rem;text-align:center;
  border:1px solid var(--line);font-size:.86rem;font-weight:600;color:var(--brand-blue-deep);cursor:pointer;
  position:relative;
}
.tier input{position:absolute;opacity:0;}
.tier.checked{border-color:var(--brand-blue);background:var(--bone);box-shadow:inset 0 0 0 1px var(--brand-blue);}
.tier .pill{display:block;font-size:.75rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--clay);margin-bottom:.25rem;}
.tier .desc{display:block;font-size:.75rem;color:var(--mute);font-weight:400;margin-top:.2rem;letter-spacing:0;}

.step-actions{
  display:flex;align-items:center;justify-content:space-between;gap:1rem;
  margin-top:1.5rem;padding-top:1.5rem;border-top:1px solid var(--line);
}
.step-actions .back{
  font-size:.88rem;font-weight:600;color:var(--mute);
  display:inline-flex;align-items:center;gap:.4rem;
}
.step-actions .back:hover{color:var(--brand-blue-deep);}
.step-actions .back.hidden{visibility:hidden;}
.step-meta{font-size:.82rem;color:var(--mute);letter-spacing:.01em;}

/* Footer */
.footer{
  background:var(--ink);color:rgba(255,255,255,.78);padding:4.5rem 0 0;
}
.footer .logo .word{color:#fff;}
.footer .logo .word em{color:var(--clay);}
.footer .logo .tag{color:rgba(255,255,255,.55);}
.footer-grid{
  display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:2.5rem;
  padding-bottom:3rem;
}
.footer-col h4{
  color:#fff;font-family:var(--sans);font-size:.78rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;
  margin-bottom:1.1rem;
}
.footer-col ul{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.55rem;}
.footer-col li a{font-size:.93rem;color:rgba(255,255,255,.7);}
.footer-col li a:hover{color:var(--clay);}
.footer .tagline{font-size:.95rem;color:rgba(255,255,255,.7);margin-top:1.3rem;max-width:34ch;line-height:1.55;}
.contact-list{font-size:.93rem;line-height:1.7;color:rgba(255,255,255,.78);}
.contact-list a:hover{color:var(--clay);}
.contact-list .ph-num{color:var(--clay);font-weight:600;font-variant-numeric:tabular-nums;font-size:1rem;}
.social{display:flex;gap:.7rem;margin-top:1rem;}
.social a{
  width:36px;height:36px;display:inline-flex;align-items:center;justify-content:center;
  border:1px solid rgba(255,255,255,.2);
}
.social a:hover{border-color:var(--clay);color:var(--clay);}
.legal{
  border-top:1px solid rgba(255,255,255,.1);
  padding:1.4rem 0;
  display:flex;justify-content:space-between;gap:1rem;flex-wrap:wrap;
  font-size:.78rem;color:rgba(255,255,255,.55);
}
.legal a{color:rgba(255,255,255,.65);}
.legal a:hover{color:var(--clay);}
.legal .links{display:flex;gap:1.4rem;flex-wrap:wrap;}
@media (max-width:900px){ .footer-grid{grid-template-columns:1fr 1fr;} }
@media (max-width:560px){ .footer-grid{grid-template-columns:1fr;gap:2rem;} }

/* Mobile sticky bar */
.mobile-bar{
  display:none;
  position:fixed;left:0;right:0;bottom:0;z-index:60;
  background:#fff;border-top:1px solid var(--line);
  padding:.55rem;
  grid-template-columns:1fr 1fr;gap:.5rem;
  box-shadow:0 -8px 24px -10px rgba(0,0,0,.15);
}
.mobile-bar .btn{min-width:0;white-space:normal;text-align:center;line-height:1.2;padding:.85rem .5rem;font-size:.86rem;justify-content:center;}
.mobile-bar .btn-call{background:var(--brand-blue-deep);color:#fff;}
@media (max-width:768px){
  .mobile-bar{display:grid;}
  body{padding-bottom:74px;}
}


/* ============================================================
   HERO CAROUSEL (subpage hero with rotating image slots)
   ============================================================ */
.hero-carousel{
  position:relative; overflow:hidden;
  background:
    radial-gradient(900px 500px at 85% -10%, rgba(156,90,60,.10), transparent 60%),
    radial-gradient(900px 500px at 5% 110%, rgba(17,127,165,.28), transparent 60%),
    linear-gradient(155deg, #1a1a1a 0%, #0e6a8d 55%, #0e6a8d 100%);
  color:#fff;
  min-height:540px;
}
.hero-carousel.single{ min-height:440px; }
.hero-carousel::before{
  content:""; position:absolute; inset:0; pointer-events:none;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='600' height='600'><defs><pattern id='w' width='80' height='80' patternUnits='userSpaceOnUse'><path d='M0 40 Q 20 20 40 40 T 80 40' fill='none' stroke='%23ffffff' stroke-width='1' opacity='0.55'/></pattern></defs><rect width='600' height='600' fill='url(%23w)'/></svg>");
  opacity:.06; mix-blend-mode:screen; z-index:1;
}
.hero-slides{ position:absolute; inset:0; z-index:1; }
.hero-slide{
  position:absolute; inset:0;
  opacity:0; transition:opacity .9s ease;
  pointer-events:none;
}
.hero-slide.is-active{ opacity:1; pointer-events:auto; }
.hero-slide image-slot{
  width:100%; height:100%; display:block;
}
.hero-overlay{
  position:absolute; inset:0; z-index:2; pointer-events:none;
  background:
    /* Horizontal: dark left, fades right — protects the H1 / lede area */
    linear-gradient(90deg, rgba(11,37,51,.78) 0%, rgba(11,37,51,.62) 25%, rgba(11,37,51,.32) 55%, rgba(11,37,51,.05) 85%, rgba(11,37,51,0) 100%),
    /* Top vignette for breadcrumbs */
    linear-gradient(180deg, rgba(11,37,51,.45) 0%, rgba(11,37,51,0) 22%),
    /* Bottom vignette for hero-nav dots + visual anchor */
    linear-gradient(180deg, transparent 65%, rgba(11,37,51,.72) 100%);
}
.hero-content{
  position:relative; z-index:3;
  padding:5rem 0 5rem;
  min-height:540px;
  display:flex; flex-direction:column; justify-content:center;
}
.hero-carousel.single .hero-content{ min-height:440px; }
.hero-carousel .crumbs{
  font-size:.78rem; color:rgba(255,255,255,.85);
  letter-spacing:.1em; text-transform:uppercase; margin-bottom:1.1rem;
  text-shadow:0 1px 2px rgba(0,0,0,.45);
}
.hero-carousel .crumbs a{ color:#ffffff; }
.hero-carousel .crumbs a:hover{ color:#fff; }
.hero-carousel .crumbs .sep{ margin:0 .55rem; opacity:.55; }
.hero-carousel .eyebrow{
  color:#ffffff;
  text-shadow:0 1px 2px rgba(0,0,0,.5);
}
.hero-carousel h1{
  color:#fff; letter-spacing:-0.015em; font-size:clamp(2.25rem, 4.5vw, 3.75rem);
  margin:.6rem 0 0;
  text-shadow:0 2px 12px rgba(0,0,0,.55), 0 1px 3px rgba(0,0,0,.35);
}
.hero-carousel h1 em{ font-style:italic; color:var(--clay); font-weight:700; }
.hero-carousel .sub{
  font-size:1.15rem; color:rgba(255,255,255,.92);
  margin-top:1.2rem; max-width:60ch; line-height:1.55;
  text-shadow:0 1px 6px rgba(0,0,0,.55), 0 1px 2px rgba(0,0,0,.35);
}
.hero-nav{
  position:absolute; bottom:1.4rem; left:0; right:0;
  display:flex; justify-content:center; align-items:center; gap:.6rem;
  z-index:4;
}
.hero-dot{
  width:36px; height:3px;
  background:rgba(255,255,255,.35);
  border:0; padding:0; cursor:pointer;
  transition:background .2s ease;
}
.hero-dot.is-active{ background:var(--brand-blue); }
.hero-arrow{
  position:absolute; top:50%; transform:translateY(-50%);
  width:48px; height:48px;
  display:inline-flex; align-items:center; justify-content:center;
  background:rgba(0,0,0,.34); border:1px solid rgba(255,255,255,.22);
  color:#fff; cursor:pointer;
  font-size:1.3rem; line-height:1;
  z-index:4;
  transition:opacity .2s ease, background .2s ease, border-color .2s ease;
  opacity:0;
}
.hero-carousel:hover .hero-arrow{ opacity:.95; }
.hero-arrow:hover{ background:rgba(0,0,0,.55); border-color:#fff; }
.hero-prev{ left:1.5rem; }
.hero-next{ right:1.5rem; }
@media (max-width:768px){
  .hero-carousel{ min-height:420px; }
  .hero-carousel.single{ min-height:360px; }
  .hero-content{ min-height:420px; padding:2.5rem 0 2.5rem; }
  .hero-carousel.single .hero-content{ min-height:360px; }
  .hero-arrow{ display:none; }
  .hero-carousel h1{ font-size:clamp(1.9rem, 6.5vw, 3.25rem); line-height:1.1; margin:.4rem 0 0; }
  .hero-carousel .sub{ font-size:.98rem; margin-top:.85rem; line-height:1.5; }
  .hero-carousel .crumbs{ font-size:.75rem; margin-bottom:.7rem; }
  .hero-carousel .eyebrow{ font-size:.75rem; }
}
@media (max-width:560px){
  .hero-carousel{ min-height:340px; }
  .hero-carousel.single{ min-height:300px; }
  .hero-content{ min-height:340px; padding:1.75rem 0; }
  .hero-carousel.single .hero-content{ min-height:300px; }
  .hero-carousel h1{ font-size:clamp(1.65rem, 8vw, 2.5rem); }
  .hero-carousel .sub{ font-size:.92rem; margin-top:.65rem; }
  .hero-nav{ bottom:.9rem; }
}

/* ============================================================
   FEATURED PROJECT (case study — specialty finish pages)
   ============================================================ */
.featured-project{
  background:#fff; padding:5.5rem 0;
  border-top:1px solid var(--line);
}
.case-head{ margin-bottom:2.2rem; max-width:780px; }
.case-head .eyebrow{ margin-bottom:.7rem; }
.case-head h2{ color:var(--brand-blue-deep); }
.case-head h2 em{ font-style:italic; color:var(--clay); }
.case-head .meta{
  font-size:.82rem; color:var(--mute); letter-spacing:.06em;
  margin-top:.7rem; text-transform:uppercase; font-weight:600;
}
.case-grid{
  display:grid; grid-template-columns:1.55fr 1fr; gap:.85rem;
  grid-template-rows: 1fr 1fr 1fr;
}
.case-hero{ grid-column:1; grid-row:1 / span 3; position:relative; }
.case-hero image-slot{ width:100%; height:100%; min-height:560px; }
.case-tile{ position:relative; }
.case-tile image-slot{ width:100%; height:100%; min-height:180px; }
.case-label{
  position:absolute; top:.8rem; left:.8rem; z-index:5;
  font-size:.75rem; font-weight:700; letter-spacing:.14em; text-transform:uppercase;
  background:rgba(11,37,51,.85); color:#fff;
  padding:.35rem .6rem;
}
.case-narrative{
  margin-top:2rem;
  font-family:var(--serif); font-style:italic; font-weight:500;
  color:var(--brand-blue-deep); font-size:1.25rem; line-height:1.4;
  max-width:60ch; letter-spacing:-0.005em; text-wrap:balance;
}
@media (max-width:900px){
  .case-grid{ grid-template-columns:1fr 1fr; grid-template-rows:auto; }
  .case-hero{ grid-column:1 / -1; grid-row:auto; }
  .case-hero image-slot{ min-height:auto; aspect-ratio:5/4; }
  .case-tile image-slot{ min-height:auto; aspect-ratio:1; }
}

/* ============================================================
   RECENT WORK GRID (service-area + commercial)
   ============================================================ */
.work-grid{
  background:var(--bone); padding:5rem 0;
  border-top:1px solid var(--line);
}
.work-grid .section-head{ margin-bottom:2rem; max-width:780px; }
.work-tiles{
  display:grid; grid-template-columns:repeat(4,1fr); gap:.85rem;
}
.work-tile{ position:relative; }
.work-tile image-slot{ width:100%; aspect-ratio:4/5; }
.work-tile .work-cap{
  position:absolute; bottom:0; left:0; right:0; z-index:4;
  padding:.8rem .9rem;
  background:linear-gradient(0deg, rgba(0,0,0,.75) 0%, transparent 100%);
  color:#fff; font-size:.75rem; font-weight:700;
  letter-spacing:.1em; text-transform:uppercase;
  pointer-events:none;
}
@media (max-width:900px){ .work-tiles{ grid-template-columns:repeat(2,1fr); } }
@media (max-width:560px){ .work-tiles{ grid-template-columns:1fr; } }

/* ============================================================
   BEFORE / PROCESS / FINAL (residential service pages)
   ============================================================ */
.bpf{ background:#fff; padding:5rem 0; border-top:1px solid var(--line); }
.bpf .section-head{ margin-bottom:2rem; max-width:780px; }
.bpf-grid{
  display:grid; grid-template-columns:repeat(3,1fr); gap:.85rem;
}
.bpf-tile{ position:relative; }
.bpf-tile image-slot{ width:100%; aspect-ratio:4/3; }
.bpf-label{
  position:absolute; top:.8rem; left:.8rem; z-index:5;
  font-size:.75rem; font-weight:700; letter-spacing:.14em; text-transform:uppercase;
  background:rgba(11,37,51,.85); color:#fff;
  padding:.35rem .6rem;
}
@media (max-width:768px){ .bpf-grid{ grid-template-columns:1fr; } }

/* ============================================================
   MASTER PORTFOLIO GRID (portfolio.html)
   ============================================================ */
.master-section{ background:var(--bone); padding:5rem 0; border-top:1px solid var(--line); }
.master-section .section-head{ margin-bottom:2rem; max-width:780px; }
.master-grid{
  display:grid; grid-template-columns:repeat(4,1fr); gap:.7rem;
}
.master-grid image-slot{ width:100%; aspect-ratio:1; }
.master-grid .work-tile{ position:relative; }
@media (max-width:900px){ .master-grid{ grid-template-columns:repeat(2,1fr); } }
@media (max-width:560px){ .master-grid{ grid-template-columns:1fr; } }


/* ============================================================
   SUBPAGE TRUST STRIP (below hero)
   ============================================================ */
.trust-strip{
  background:var(--bone);
  padding:1.6rem 0;
  border-bottom:1px solid var(--line);
}
.trust-strip-inner{
  display:grid; grid-template-columns:repeat(6,1fr); gap:1.4rem;
  align-items:center;
}
.trust-strip-item{
  display:flex; align-items:center; gap:.7rem;
}
.trust-strip-item .ic{
  width:30px; height:30px; flex:none; color:var(--clay);
}
.trust-strip-item .lbl{
  font-family:var(--serif); font-weight:700; color:var(--brand-blue-deep);
  font-size:.94rem; line-height:1.15; display:block;
}
.trust-strip-item .sub{
  font-size:.75rem; color:var(--mute); line-height:1.3; display:block; margin-top:.15rem;
}
@media (max-width:1024px){ .trust-strip-inner{ grid-template-columns:repeat(3,1fr); row-gap:1.2rem; } }
@media (max-width:600px){
  .trust-strip{ padding:1.2rem 0; }
  .trust-strip-inner{ grid-template-columns:repeat(2,1fr); gap:.9rem 1rem; }
  .trust-strip-item{ gap:.55rem; }
  .trust-strip-item .ic{ width:26px; height:26px; }
  .trust-strip-item .lbl{ font-size:.86rem; }
  .trust-strip-item .sub{ font-size:.75rem; margin-top:.1rem; }
}
@media (max-width:380px){
  .trust-strip-inner{ grid-template-columns:1fr; gap:.7rem; }
  .trust-strip-item .ic{ width:24px; height:24px; }
}

/* ============================================================
   ENHANCED ASIDE (loss-framed warranty + scarcity + partners)
   ============================================================ */
.aside .warranty-pull{
  margin-top:1.4rem; padding-top:1.4rem;
  border-top:1px solid var(--line);
  font-family:var(--serif); font-style:italic;
  color:var(--brand-blue-deep); font-size:1.02rem; line-height:1.5;
  letter-spacing:-0.005em;
}
.aside .warranty-pull .pull-head{
  display:block; font-family:var(--sans); font-style:normal;
  font-size:.75rem; font-weight:700; letter-spacing:.14em; text-transform:uppercase;
  color:var(--clay); margin-bottom:.5rem;
}
.aside .scarcity{
  margin-top:1.2rem;
  padding:.75rem .85rem;
  background:rgba(240,128,32,.06);
  border-left:2px solid var(--clay);
  font-size:.88rem; line-height:1.45; color:var(--ink);
}
.aside .scarcity b{
  display:block; font-size:.75rem; font-weight:700; letter-spacing:.14em;
  text-transform:uppercase; color:var(--clay); margin-bottom:.25rem;
}
.aside .partners{
  margin-top:1.5rem; padding-top:1.4rem;
  border-top:1px solid var(--line);
}
.aside .partners h4{
  font-family:var(--sans); font-size:.75rem; font-weight:700; letter-spacing:.14em;
  text-transform:uppercase; color:var(--mute); margin:0 0 .7rem;
}
.aside .partner-list{
  display:flex; flex-direction:column; gap:.5rem; list-style:none; padding:0; margin:0;
}
.aside .partner-list li{
  font-size:.83rem; color:var(--brand-blue-deep); font-weight:600; line-height:1.3;
  padding-left:.95rem; position:relative;
}
.aside .partner-list li::before{
  content:""; position:absolute; left:0; top:.55em;
  width:5px; height:5px; background:var(--clay);
}

/* ============================================================
   FAQ SECTION (specialty + service-area pages)
   ============================================================ */
.faq-section{
  background:var(--paper); padding:5rem 0;
  border-top:1px solid var(--line);
}
.faq-section .container{
  display:grid; grid-template-columns:1fr 1.8fr; gap:4rem;
  max-width:1180px;
}
.faq-section .faq-head .eyebrow{ margin-bottom:.7rem; }
.faq-section .faq-head h2{ color:var(--ink); font-weight:400; }
.faq-section .faq-head h2 em{ font-style:italic; color:var(--clay); }
.faq-section .faq-head p{ color:var(--mute); margin-top:1rem; font-size:1rem; line-height:1.6; }
@media (max-width:900px){
  .faq-section{ padding:3.5rem 0; }
  .faq-section .container{ grid-template-columns:1fr; gap:1.8rem; }
}

/* ============================================================
   REVIEW PULL (specialty page targeted testimonial)
   ============================================================ */
.review-pull{
  background:var(--ink); color:#fff;
  padding:4.5rem 0;
  position:relative;
}
.review-pull::before{
  content:""; position:absolute; inset:0; pointer-events:none;
  background:
    radial-gradient(700px 360px at 90% 0%, rgba(156,90,60,.10), transparent 60%),
    radial-gradient(600px 360px at 5% 110%, rgba(17,127,165,.16), transparent 60%);
}
.review-pull .container{
  position:relative;
  display:grid; grid-template-columns:1fr 1.6fr; gap:3rem; align-items:center;
}
.review-pull .pull-label{
  font-size:.78rem; font-weight:700; letter-spacing:.14em; text-transform:uppercase; color:var(--clay);
  margin-bottom:.7rem;
}
.review-pull h3{
  color:#fff; font-family:var(--serif); font-weight:700;
  font-size:1.5rem; line-height:1.3; margin:0;
  letter-spacing:-0.005em;
}
.review-pull .stars{
  display:flex; gap:2px; color:var(--clay); margin-top:1rem;
}
.review-pull .quote{
  font-family:var(--serif); font-style:italic; font-weight:400;
  color:#fff; font-size:1.4rem; line-height:1.45;
  letter-spacing:-0.005em; text-wrap:balance; margin:0;
}
.review-pull .attr{
  margin-top:1.4rem; padding-top:1.2rem; border-top:1px solid rgba(255,255,255,.15);
  font-size:.84rem; color:rgba(255,255,255,.7); font-weight:500;
}
.review-pull .attr b{ color:#fff; font-weight:600; }
@media (max-width:760px){
  .review-pull .container{ grid-template-columns:1fr; gap:1.5rem; }
  .review-pull .quote{ font-size:1.15rem; }
}

/* ============================================================
   NEIGHBORHOODS GRID (service-area pages, SEO depth)
   ============================================================ */
.hoods{
  background:#fff; padding:5rem 0;
  border-top:1px solid var(--line);
}
.hoods .section-head{ max-width:780px; margin-bottom:2.5rem; }
.hoods .section-head p{
  color:var(--mute); font-size:1.02rem; line-height:1.65;
  margin:1rem 0 0; max-width:65ch;
}
.hood-grid{
  display:grid; grid-template-columns:repeat(3,1fr); gap:.85rem;
}
.hood-card{
  background:var(--bone); border:1px solid var(--line);
  padding:1.4rem 1.4rem 1.5rem;
  display:flex; flex-direction:column; gap:.45rem;
}
.hood-card .zip{
  font-family:var(--sans); font-size:.75rem; font-weight:700;
  letter-spacing:.16em; text-transform:uppercase; color:var(--mute);
}
.hood-card h3{
  font-family:var(--serif); color:var(--brand-blue-deep);
  font-size:1.18rem; font-weight:700; margin:0;
  letter-spacing:-0.005em;
}
.hood-card p{
  color:var(--ink); font-size:.92rem; line-height:1.55;
  margin:.25rem 0 0;
}
@media (max-width:900px){ .hood-grid{ grid-template-columns:repeat(2,1fr); } }
@media (max-width:560px){ .hood-grid{ grid-template-columns:1fr; } }

/* ============================================================
   LOCAL DETAIL STRIP (city facts row above prose)
   ============================================================ */
.local-strip{
  background:#fff; border-top:1px solid var(--line);
  border-bottom:1px solid var(--line);
}
.local-strip-inner{
  display:grid; grid-template-columns:repeat(4,1fr); gap:0;
}
.local-strip-item{
  padding:1.6rem 1.4rem;
  border-right:1px solid var(--line);
}
.local-strip-item:last-child{ border-right:0; }
.local-strip-item .ls-label{
  display:block; font-family:var(--sans);
  font-size:.75rem; font-weight:700; letter-spacing:.16em;
  text-transform:uppercase; color:var(--mute); margin-bottom:.45rem;
}
.local-strip-item .ls-val{
  display:block; font-family:var(--serif); color:var(--brand-blue-deep);
  font-size:1.05rem; line-height:1.35; font-weight:600;
  letter-spacing:-0.005em;
}
@media (max-width:900px){
  .local-strip-inner{ grid-template-columns:repeat(2,1fr); }
  .local-strip-item:nth-child(2){ border-right:0; }
  .local-strip-item:nth-child(1),
  .local-strip-item:nth-child(2){ border-bottom:1px solid var(--line); }
}
@media (max-width:560px){
  .local-strip-inner{ grid-template-columns:1fr; }
  .local-strip-item{ border-right:0; border-bottom:1px solid var(--line); }
  .local-strip-item:last-child{ border-bottom:0; }
}

/* ============================================================
   $25,000 Good Contractors guarantee section
   ============================================================ */
.guarantee{
  background:var(--paper);
  padding:clamp(3.5rem, 7vw, 5.5rem) 0;
}
.guarantee-grid{
  display:grid;
  grid-template-columns:minmax(220px, 320px) 1fr;
  gap:clamp(2rem, 5vw, 4.5rem);
  align-items:center;
}
.guarantee-badge{display:flex;justify-content:center;}
.guarantee-badge img{
  width:100%;
  max-width:320px;
  height:auto;
  filter:drop-shadow(0 14px 36px rgba(15, 87, 117, 0.18));
}
.guarantee-copy .eyebrow{margin-bottom:.65rem;}
.guarantee-copy h2{margin:0 0 1.1rem;}
.guarantee-copy h2 em{color:var(--clay);font-style:italic;font-weight:700;}
.guarantee-copy p{
  color:var(--mute);
  font-size:1.05rem;
  max-width:60ch;
  margin:0 0 1.6rem;
}
@media (max-width: 768px){
  .guarantee-grid{grid-template-columns:1fr;text-align:center;gap:2rem;}
  .guarantee-badge img{max-width:240px;}
  .guarantee-copy p{margin-left:auto;margin-right:auto;}
}

/* ============================================================
   Real-photo replacements for <image-slot> placeholders.
   Each <img> may be wrapped in a <picture> for WebP fallback,
   so selectors target both the img and any picture ancestor.
   ============================================================ */

/* Hero carousel slides */
.hero-slide picture{
  position:absolute; inset:0; display:block;
  width:100%; height:100%;
}
.hero-slide .hero-img{
  position:absolute; inset:0;
  width:100%; height:100%;
  object-fit:cover; display:block;
}

/* Featured Project — large hero photo */
.case-hero{ position:relative; }
.case-hero picture{
  display:block; width:100%; height:560px;
}
.case-hero .case-img{
  display:block; width:100%; height:560px;
  object-fit:cover;
}

/* Featured Project — small tiles */
.case-tile{ position:relative; }
.case-tile picture{
  display:block; width:100%; height:180px;
}
.case-tile .case-img{
  display:block; width:100%; height:180px;
  object-fit:cover;
}
@media (max-width:900px){
  .case-hero picture, .case-hero .case-img{ height:auto; aspect-ratio:5/4; }
  .case-tile picture, .case-tile .case-img{ height:auto; aspect-ratio:1; }
}

/* Homepage spec-card photo (.ph divs) */
.ph picture{
  position:absolute; inset:0; display:block;
  width:100%; height:100%;
  z-index:0;
}
.ph .ph-photo{
  position:absolute; inset:0;
  width:100%; height:100%;
  object-fit:cover; z-index:0;
  display:block;
}
.ph.has-photo .ph-caption{ display:none; }
.ph.has-photo::before{ opacity:0; }
.ph.has-photo::after{ opacity:0; }

/* ============================================================
   Legal / static pages (privacy, terms, cookies, disclaimer, sitemap)
   Single-column prose, no sidebar.
   ============================================================ */
.page-body.legal-page .container{
  display:block; max-width:880px;
}
.legal-prose{ max-width:760px; }
.legal-prose .meta-line{
  font-size:.86rem; color:var(--mute);
  border-bottom:1px solid var(--line);
  padding-bottom:1rem; margin-bottom:2rem;
}
.legal-prose h2{
  font-size:clamp(1.4rem, 2.4vw, 1.9rem);
  margin:2.6rem 0 .9rem;
}
.legal-prose h2:first-of-type{ margin-top:0; }
.legal-prose ol{
  margin:0 0 1.4em; padding-left:1.2rem;
}
.legal-prose ol li{ margin-bottom:.45em; }
.legal-prose a{
  color:var(--brand-blue-deep);
  border-bottom:1px solid rgba(17,127,165,.3);
}
.legal-prose a:hover{
  color:var(--clay);
  border-bottom-color:var(--clay);
}

/* ============================================================
   FAQ HUB page
   ============================================================ */
.faq-page .container{ max-width:980px; }
.faq-cat-head{
  font-family:var(--serif); font-size:1.8rem; font-weight:700;
  color:var(--brand-blue-deep); margin:2.8rem 0 1.1rem;
  padding-bottom:.6rem; border-bottom:2px solid var(--clay);
  display:inline-block;
}
.faq-page .faq-list{ margin-bottom:2.8rem; }

/* ============================================================
   PROJECTS page (case studies with line-item pricing)
   ============================================================ */
.projects-page .container{ max-width:1100px; }
.projects-intro{
  max-width:760px; margin:0 auto 3rem; text-align:center;
  font-size:1.1rem; color:var(--mute); line-height:1.6;
}
.projects-grid{
  display:grid;
  grid-template-columns:1fr;
  gap:2rem;
}
.project-card{
  background:#fff;
  border:1px solid var(--line);
  border-radius:6px;
  overflow:hidden;
  box-shadow:var(--shadow-card);
  transition:box-shadow .25s ease, transform .25s ease;
}
.project-card:hover{ box-shadow:var(--shadow-card-hover); }
.project-card-head{
  padding:1.8rem 2rem 1.2rem;
  background:var(--bone);
  border-bottom:1px solid var(--line);
}
.project-tag{
  display:inline-block;
  font-size:.75rem; font-weight:600; letter-spacing:.12em;
  text-transform:uppercase; color:var(--clay);
  margin-bottom:.55rem;
}
.project-card-head h2{
  font-size:1.6rem; margin:0 0 .65rem; color:var(--brand-blue-deep);
}
.project-scope{
  margin:0; color:var(--ink); font-size:1rem; line-height:1.55;
}
.project-card-body{ padding:1.8rem 2rem 2rem; }
.project-meta{
  display:grid; grid-template-columns:1fr 1fr; gap:1.5rem;
  margin-bottom:1.6rem; padding-bottom:1.3rem;
  border-bottom:1px dashed var(--line);
}
.project-meta .lbl{
  display:block; font-size:.75rem; letter-spacing:.14em;
  text-transform:uppercase; color:var(--mute); margin-bottom:.3rem; font-weight:600;
}
.project-meta .val{
  font-family:var(--serif); font-size:1.2rem; color:var(--brand-blue-deep); font-weight:600;
}
.project-meta .val.price{ color:var(--clay); }
.project-items{
  list-style:none; padding:0; margin:0 0 1.3rem;
}
.project-items li{
  display:flex; justify-content:space-between; align-items:baseline;
  padding:.7rem 0; border-bottom:1px solid var(--line);
  font-size:.96rem;
}
.project-items li:last-child{ border-bottom:0; }
.project-items .lbl{ color:var(--ink); flex:1; padding-right:1rem; }
.project-items .val{
  color:var(--brand-blue-deep); font-weight:600; font-variant-numeric:tabular-nums;
}
.project-note{
  margin:0; padding:1rem 1.2rem;
  background:var(--bone); border-left:3px solid var(--clay);
  font-size:.92rem; color:var(--ink); line-height:1.55;
}
@media (max-width:600px){
  .project-card-head, .project-card-body{ padding:1.4rem 1.3rem; }
  .project-meta{ grid-template-columns:1fr; gap:1rem; }
  .project-items li{ flex-direction:column; gap:.3rem; }
}

/* ============================================================
   BLOG index + blog post
   ============================================================ */
.blog-index .container{ max-width:1100px; }
.blog-grid{
  display:grid;
  grid-template-columns:repeat(auto-fill, minmax(320px, 1fr));
  gap:2rem;
}
.blog-card{
  display:flex; flex-direction:column;
  background:#fff;
  border:1px solid var(--line);
  border-radius:6px; overflow:hidden;
  box-shadow:var(--shadow-card);
  transition:box-shadow .25s ease, transform .25s ease;
}
.blog-card:hover{
  box-shadow:var(--shadow-card-hover);
  transform:translateY(-2px);
}
.blog-card-body{
  padding:1.6rem 1.6rem 1.8rem;
  display:flex; flex-direction:column; gap:.7rem;
  flex:1;
}
.blog-card-cat{
  font-size:.75rem; letter-spacing:.14em; text-transform:uppercase;
  font-weight:600; color:var(--clay);
}
.blog-card h2{
  font-size:1.35rem; line-height:1.25; color:var(--brand-blue-deep); margin:0;
}
.blog-card-excerpt{
  color:var(--mute); font-size:.96rem; line-height:1.55; margin:0;
  flex:1;
}
.blog-card-meta{
  font-size:.82rem; color:var(--mute);
  display:flex; gap:.5rem; align-items:center;
  margin-top:auto;
}
.blog-card-meta .dot{ opacity:.5; }

/* Blog post */
.blog-post .container{ max-width:780px; }
.blog-article .blog-meta{
  display:flex; gap:1rem; flex-wrap:wrap; align-items:center;
  margin-bottom:2rem; padding-bottom:1.3rem;
  border-bottom:1px solid var(--line);
  font-size:.82rem; color:var(--mute);
}
.blog-article .blog-cat{
  color:var(--clay); font-weight:600;
  letter-spacing:.12em; text-transform:uppercase;
}
.blog-article p.lede{
  font-size:1.2rem; line-height:1.55; color:var(--ink);
  margin-bottom:2rem; font-weight:500;
}
.blog-article h2{
  font-size:1.7rem; margin:2.5rem 0 1rem;
  color:var(--brand-blue-deep);
}
.blog-article p{
  font-size:1.05rem; line-height:1.7; color:var(--ink);
}
.blog-article ul, .blog-article ol{
  margin:0 0 1.4em; padding-left:1.4rem;
}
.blog-article ul li, .blog-article ol li{
  margin-bottom:.5em; line-height:1.6;
}
.blog-article a{
  color:var(--brand-blue-deep);
  border-bottom:1px solid rgba(17,127,165,.3);
}
.blog-article a:hover{ color:var(--brand-blue-deep); border-color:var(--brand-blue); }
.blog-back{
  margin-top:3rem; padding-top:1.5rem;
  border-top:1px solid var(--line);
}
.blog-back a{
  color:var(--brand-blue-deep); font-weight:600; font-size:.96rem;
}

/* ============================================================
   Full-card click overlay + a11y utility
   Used on Homepage .spec-card to make the whole card clickable.
   ============================================================ */
.visually-hidden{
  position:absolute; width:1px; height:1px; padding:0; margin:-1px;
  overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0;
}
.spec-card{ position:relative; }
.spec-card .card-link{
  position:absolute; inset:0; z-index:1;
  text-indent:-9999px; overflow:hidden;
  border-radius:inherit;
}
.spec-card .card-link:focus-visible{
  outline:2px solid var(--brand-blue); outline-offset:-3px;
}

/* ============================================================
   Skip-to-content link (a11y / WCAG 2.4.1)
   Visually hidden until keyboard-focused, then prominent.
   ============================================================ */
.skip-link{
  position:absolute;
  top:-100px; left:1rem;
  z-index:9999;
  background:var(--brand-blue);
  color:#fff;
  padding:.9rem 1.3rem;
  font-family:var(--sans);
  font-weight:600;
  font-size:.95rem;
  letter-spacing:.01em;
  text-decoration:none;
  border-radius:4px;
  box-shadow:0 6px 18px -6px rgba(0,0,0,.35);
  transition:top .2s ease;
}
.skip-link:focus,
.skip-link:focus-visible{
  top:1rem;
  outline:3px solid var(--brand-blue-deep);
  outline-offset:2px;
}
.skip-link:hover{ background:var(--brand-blue-deep); }

/* ============================================================
   prefers-reduced-motion: respect the user's OS-level setting.
   Squashes (not removes) animations + transitions so JS that
   depends on transitionend still fires, but visible motion is gone.
   The hero carousel auto-rotation is gated in JS separately.
   ============================================================ */
@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
  /* Specific elements with intentional motion get explicit kill */
  .hero-slide { transition: none !important; }
  .btn:hover { transform: none !important; }
  .blog-card:hover, .project-card:hover, .area-card:hover { transform: none !important; }
}

/* ============================================================
   Focus rings on interactive cards / overlays.
   WCAG 2.4.7 — visible focus indicator on every focusable element.
   Two patterns:
   - Cards WITHOUT overflow:hidden → outline-offset 4px (ring outside)
   - Cards WITH overflow:hidden → outline-offset -3px (ring just inside the edge)
   ============================================================ */
.area-card:focus-visible,
.related-tile:focus-visible,
.hood-card:focus-visible {
  outline: 3px solid var(--brand-blue);
  outline-offset: 4px;
  border-radius: 4px;
}
/* Cards that have overflow:hidden (clip an outside outline) — paint inside */
.spec-card:focus-visible,
.spec-card .card-link:focus-visible,
.work-tile:focus-visible,
.blog-card:focus-visible,
.project-card:focus-visible {
  outline: 3px solid var(--brand-blue);
  outline-offset: -3px;
  border-radius: inherit;
}
/* Nav links and dropdown items inside the sticky header */
.nav-link:focus-visible,
.nav-dropdown a:focus-visible {
  outline: 2px solid var(--brand-blue);
  outline-offset: 2px;
  border-radius: 2px;
}
/* Buttons get a bolder ring when keyboard-focused, not just the base 2px */
.btn:focus-visible {
  outline: 3px solid var(--brand-blue);
  outline-offset: 3px;
}
.btn-primary:focus-visible {
  outline-color: var(--brand-blue-deep);
}

/* ============================================================
   Cookie consent banner
   Fixed bottom, slides up on first visit, single-tap dismiss.
   ============================================================ */
.cookie-banner{
  position:fixed; left:1rem; right:1rem; bottom:1rem;
  z-index:90;
  background:var(--ink);
  color:rgba(255,255,255,.92);
  border-radius:6px;
  padding:1.1rem 1.3rem;
  box-shadow:0 12px 36px -8px rgba(0,0,0,.5), 0 2px 6px rgba(0,0,0,.18);
  transform:translateY(120%);
  transition:transform .28s cubic-bezier(.4,0,.2,1);
}
.cookie-banner--in{ transform:translateY(0); }
.cookie-banner--out{ transform:translateY(120%); transition:transform .28s ease-in; }
.cookie-banner--no-anim{ transition:none; }

.cookie-banner-inner{
  display:flex; align-items:center; gap:1.5rem;
  max-width:1280px; margin:0 auto;
  flex-wrap:wrap;
}
.cookie-banner-copy{ flex:1 1 320px; min-width:0; }
.cookie-banner-copy strong{
  display:block;
  font-family:var(--serif); font-size:1.05rem; color:#fff;
  margin-bottom:.25rem; letter-spacing:-0.005em;
}
.cookie-banner-copy p{
  margin:0; font-size:.9rem; line-height:1.5;
  color:rgba(255,255,255,.85);
}
.cookie-banner-copy a{
  color:var(--clay);
  text-decoration:underline;
  text-underline-offset:2px;
  text-decoration-thickness:1px;
}
.cookie-banner-copy a:hover{ color:#fff; }
.cookie-banner-actions{
  display:flex; gap:.65rem; flex-wrap:wrap; flex-shrink:0;
}
.cookie-btn{
  font-family:var(--sans); font-weight:600;
  padding:.7rem 1.15rem; font-size:.9rem;
  border-radius:4px; cursor:pointer;
  transition:background .15s ease, color .15s ease, border-color .15s ease;
  white-space:nowrap;
  min-height:44px;
}
.cookie-btn-primary{
  background:var(--brand-blue); color:#fff; border:1px solid var(--brand-blue);
}
.cookie-btn-primary:hover{ background:var(--brand-blue-deep); border-color:var(--brand-blue-deep); }
.cookie-btn-secondary{
  background:transparent; color:#fff;
  border:1px solid rgba(255,255,255,.45);
}
.cookie-btn-secondary:hover{
  background:rgba(255,255,255,.08);
  border-color:rgba(255,255,255,.7);
}
.cookie-btn:focus-visible{
  outline:3px solid var(--brand-blue);
  outline-offset:2px;
}

@media (max-width:640px){
  .cookie-banner{ left:.6rem; right:.6rem; bottom:.6rem; padding:1rem; }
  .cookie-banner-inner{ gap:1rem; }
  .cookie-banner-actions{ width:100%; }
  .cookie-banner-actions .cookie-btn{ flex:1 1 0; }
}

/* ============================================================
   Nav caret button (Option A: split chevron from link)
   Desktop: visual caret inline, same look as before
   Compact menu (≤1180px): dedicated 56px tap target on the right edge
   ============================================================ */
.nav-caret{
  background:transparent; border:0; cursor:pointer;
  color:#fff;
  font-size:.75rem; line-height:1;
  padding:0 1.15rem 0 0;
  margin-left:-.75rem;
  align-self:stretch;
  display:inline-flex; align-items:center;
  opacity:.9;
}
.nav-caret span{
  display:inline-block;
  transform:translateY(-1px);
  transition:transform .18s ease;
}
.nav-item.has-sub:hover .nav-caret span,
.nav-item.has-sub:focus-within .nav-caret span,
.nav-item.has-sub.open .nav-caret span{
  transform:translateY(0) rotate(-180deg);
}
@media (max-width:1180px){
  .nav-caret{ font-size:.75rem; padding-right:.85rem; margin-left:-.55rem; }
}

@media (max-width:1180px){
  /* Mobile: nav-item is a grid so link + caret button sit side by side */
  .nav-item.has-sub{
    display:grid;
    grid-template-columns:1fr 56px;
    align-items:stretch;
  }
  .nav-item.has-sub .nav-dropdown{ grid-column:1 / -1; }
  .nav-item.has-sub > .nav-link{
    justify-content:flex-start;
    border-right:0;
  }
  .nav-caret{
    margin-left:0; padding:0;
    border-left:1px solid var(--line);
    border-bottom:1px solid var(--line);
    min-height:56px;
    min-width:56px;
    font-size:1rem;
    justify-content:center;
    opacity:.85;
  }
  .nav-caret:hover, .nav-caret:focus-visible{
    background:var(--bone);
    opacity:1;
  }
  .nav-caret:focus-visible{
    outline:2px solid var(--brand-blue);
    outline-offset:-2px;
  }
}

/* ============================================================
   Sticky desktop CTA tab (right-edge vertical pill)
   Hidden on touch/mobile widths (mobile-bar handles those).
   Slides in after 600px scroll.
   ============================================================ */
.sticky-cta-tab{
  position:fixed;
  right:0;
  top:50%;
  transform:translateY(-50%) translateX(100%);
  background:var(--brand-blue);
  color:#fff;
  font-family:var(--sans);
  font-weight:700; font-size:.78rem;
  letter-spacing:.12em; text-transform:uppercase;
  padding:1.2rem .65rem;
  color:var(--ink);
  writing-mode:vertical-rl;
  text-orientation:mixed;
  text-decoration:none;
  white-space:nowrap;
  border-radius:6px 0 0 6px;
  box-shadow:-4px 4px 14px -2px rgba(0,0,0,.22);
  z-index:85;
  opacity:.94;
  transition:transform .3s cubic-bezier(.4,0,.2,1), background .15s ease, opacity .15s ease;
}
.scrolled-cta .sticky-cta-tab{
  transform:translateY(-50%) translateX(0);
}
.sticky-cta-tab:hover,
.sticky-cta-tab:focus-visible{
  background:var(--brand-blue-deep);
  opacity:1;
}
.scrolled-cta .sticky-cta-tab:hover,
.scrolled-cta .sticky-cta-tab:focus-visible{
  transform:translateY(-50%) translateX(-4px);
}
.sticky-cta-tab:focus-visible{
  outline:3px solid var(--brand-blue-deep);
  outline-offset:3px;
}
@media (max-width:1023px){ .sticky-cta-tab{ display:none; } }

/* ============================================================
   Form validation states (consultation form)
   ============================================================ */
.form-wrap input.invalid,
.form-wrap select.invalid{
  border-color:#c44434 !important;
  background:rgba(196,68,52,.04) !important;
  box-shadow:0 0 0 3px rgba(196,68,52,.12) !important;
}
.form-wrap input.invalid:focus,
.form-wrap select.invalid:focus{
  outline:0 !important;
  box-shadow:0 0 0 3px rgba(196,68,52,.22) !important;
}
.form-wrap .radio-grid.invalid{
  outline:2px solid #c44434;
  outline-offset:6px;
  border-radius:6px;
}
.field-error{
  display:block;
  margin-top:.5rem;
  color:#c44434;
  font-size:.84rem;
  font-weight:600;
  line-height:1.35;
}
.field-error::before{
  content:"⚠ ";
  font-weight:700;
}
/* Reduced motion: skip the smooth scroll */
@media (prefers-reduced-motion: reduce){
  .form-wrap input.invalid{ box-shadow:0 0 0 2px #c44434 !important; }
}

/* ============================================================
   Exit-intent modal (Homepage + contact only)
   Hidden on touch/mobile by JS; never shown if dismissed this session.
   ============================================================ */
.exit-modal-wrap{
  position:fixed; inset:0;
  z-index:120;
  display:flex; align-items:center; justify-content:center;
  opacity:0; pointer-events:none;
  transition:opacity .22s ease;
  padding:1.5rem;
}
.exit-modal-wrap--in{ opacity:1; pointer-events:auto; }
.exit-modal-wrap--out{ opacity:0; pointer-events:none; }
.exit-modal-wrap--no-anim{ transition:none; }
.exit-modal-backdrop{
  position:absolute; inset:0;
  background:rgba(11,37,51,.78);
  backdrop-filter:blur(4px);
  -webkit-backdrop-filter:blur(4px);
}
.exit-modal-card{
  position:relative;
  background:#fff;
  width:100%; max-width:560px;
  border-radius:8px;
  box-shadow:0 30px 80px -20px rgba(0,0,0,.55), 0 6px 16px rgba(0,0,0,.18);
  padding:2.4rem 2.4rem 2rem;
  transform:translateY(12px) scale(.99);
  transition:transform .25s cubic-bezier(.4,0,.2,1);
}
.exit-modal-wrap--in .exit-modal-card{
  transform:translateY(0) scale(1);
}
.exit-modal-close{
  position:absolute; top:.75rem; right:.85rem;
  width:38px; height:38px;
  background:transparent; border:0; cursor:pointer;
  color:var(--mute);
  border-radius:50%;
  display:inline-flex; align-items:center; justify-content:center;
  transition:background .15s ease, color .15s ease;
}
.exit-modal-close:hover{ background:var(--bone); color:var(--brand-blue-deep); }
.exit-modal-close:focus-visible{
  outline:2px solid var(--brand-blue);
  outline-offset:2px;
}
.exit-modal-eyebrow{
  display:inline-block;
  font-family:var(--sans);
  text-transform:uppercase;
  font-weight:600; font-size:.75rem;
  letter-spacing:.14em;
  color:var(--clay);
  margin-bottom:.85rem;
}
.exit-modal-body h2{
  font-family:var(--serif);
  font-size:clamp(1.5rem, 2.4vw, 1.9rem);
  font-weight:700; color:var(--brand-blue-deep);
  line-height:1.15; margin:0 0 .85rem;
  letter-spacing:-0.01em;
}
.exit-modal-body p{
  margin:0 0 1.4rem; color:var(--ink);
  font-size:1rem; line-height:1.55;
}
.exit-modal-label{
  display:block; font-size:.78rem; font-weight:700;
  text-transform:uppercase; letter-spacing:.08em;
  color:var(--brand-blue-deep); margin-bottom:.4rem;
}
.exit-modal-row{
  display:flex; gap:.6rem; align-items:stretch;
  flex-wrap:wrap;
}
.exit-modal-row input{
  flex:1 1 220px;
  padding:.9rem 1rem;
  font-size:1rem;
  border:1px solid var(--line);
  border-radius:4px;
  background:#fff; color:var(--ink);
  font-family:var(--sans);
  transition:border-color .15s ease, box-shadow .15s ease;
}
.exit-modal-row input:focus{
  outline:0;
  border-color:var(--brand-blue-deep);
  box-shadow:0 0 0 3px rgba(17,127,165,.18);
}
.exit-modal-row input.invalid{
  border-color:#c44434;
  box-shadow:0 0 0 3px rgba(196,68,52,.18);
}
.exit-modal-submit{
  white-space:nowrap;
  padding:.9rem 1.3rem;
}
.exit-modal-error{
  display:block; margin-top:.45rem;
  color:#c44434; font-size:.84rem; font-weight:600;
}
.exit-modal-error::before{ content:"⚠ "; font-weight:700; }
.exit-modal-foot{
  margin:1rem 0 0;
  font-size:.82rem; color:var(--mute); line-height:1.4;
}
.exit-modal-success{
  text-align:center; padding:1rem 0 .5rem;
}
.exit-modal-success-icon{
  width:64px; height:64px; border-radius:50%;
  background:var(--brand-blue); color:#fff;
  display:inline-flex; align-items:center; justify-content:center;
  margin-bottom:1.1rem;
}
.exit-modal-success h2{
  font-family:var(--serif); font-size:1.6rem; font-weight:700;
  color:var(--brand-blue-deep); margin:0 0 .55rem;
}
.exit-modal-success p{
  color:var(--mute); font-size:.96rem; line-height:1.55;
  max-width:38ch; margin:0 auto 1.4rem;
}
.exit-modal-done{ min-width:140px; }

@media (max-width:560px){
  .exit-modal-card{ padding:1.8rem 1.4rem 1.4rem; }
  .exit-modal-row{ flex-direction:column; }
  .exit-modal-row input, .exit-modal-submit{ width:100%; }
}

/* Real-photo replacement for work-tile image-slot */
.work-tile picture {
  display:block; width:100%; aspect-ratio:4/5;
}
.work-tile .work-img {
  display:block; width:100%; height:100%;
  aspect-ratio:4/5;
  object-fit:cover;
}

/* ============================================================
   Mobile-specific hero image + overlay refinements
   - Stronger overlay because at portrait width, text takes
     a higher proportion of the visible image.
   - Per-image object-position tweaks for cases where the
     subject of the photo sits off-center.
   ============================================================ */
@media (max-width: 1024px) {
  .hero-overlay {
    background:
      linear-gradient(180deg, rgba(11,37,51,.55) 0%, rgba(11,37,51,.30) 35%, rgba(11,37,51,.72) 100%),
      linear-gradient(90deg, rgba(11,37,51,.55) 0%, rgba(11,37,51,.30) 55%, rgba(11,37,51,.10) 100%);
  }
  /* Cabinet after-overview: navy cabinets sit on the left of the source;
     bias the mobile crop so the navy cabinets are visible, not the orange island. */
  .hero-slide img[src*="after-kitchen-overview"] {
    object-position: 30% center;
  }
  /* FPE hollandlac: dining table is center, but bright window is on left;
     bias right to keep darker walls under the H1. */
  .hero-slide img[src*="fpe-hollandlac-1"] {
    object-position: 65% center;
  }
  /* Roman Clay UP finished: bright window on left dominates mobile crop;
     bias right to keep the dark walls under the H1. */
  .hero-slide img[src*="dining-room-02-finished"] {
    object-position: 65% center;
  }
}

/* ============================================================
   AUDIT PASS — viewport + layout polish
   - Mobile bottom clearance for the sticky bar
   - Mobile area cards 2-col
   - Desktop projects 2-col
   - iPad-portrait keeps full nav (just tighter)
   - Mobile breadcrumb truncation
   - Mobile materials strip
   ============================================================ */

/* ── P0-2: mobile sticky bar clearance ──────────────────────
   The .mobile-bar is position:fixed at the bottom of mobile
   viewports. It covers the last ~70px of any page. Push the
   body's end content above it. */
@media (max-width: 768px) {
  body { padding-bottom: 76px; }
  /* Mobile bar itself already excludes itself from this */
  .footer { padding-bottom: calc(2.4rem + 76px); }
}

/* ── P1-5: Homepage area-grid 2-column on mobile ────────── */
@media (max-width: 600px) {
  .area-grid { grid-template-columns: repeat(2, 1fr) !important; gap: .8rem !important; }
  .area-card { padding: 1rem .9rem !important; }
  .area-card .zip { font-size:.75rem !important; }
  .area-card h3 { font-size: 1.05rem !important; }
  .area-card .count { font-size:.75rem !important; }
  .area-card .more { font-size:.75rem !important; }
}

/* ── P1-3: Projects 2-col on desktop ─────────────────────── */
@media (min-width: 1024px) {
  .projects-grid { grid-template-columns: repeat(2, 1fr); gap: 1.8rem; }
}

/* ── P1-4: REVERTED — iPad portrait stays on hamburger.
   Tried full nav at 820px but 7 nav items + CTA don't fit
   even at very tight padding (~960px content width needed).
   Hamburger at iPad portrait is the standard pattern. */

/* ── P2-8: Truncate breadcrumb to last 2 segments on mobile ── */
@media (max-width: 560px) {
  .hero-carousel .crumbs {
    display: flex; flex-wrap: nowrap; overflow: hidden;
    white-space: nowrap;
  }
  .hero-carousel .crumbs a { flex: 0 1 auto; }
  /* Hide everything except the last 3 nodes (sep + final-link + sep + current),
     leaving "/ FINAL_PARENT / CURRENT" visible. */
  .hero-carousel .crumbs > *:not(:nth-last-child(-n+3)) { display: none; }
}

/* ── P2-6: Mobile materials/logo strip ──────────────────────
   The .logos is display:flex (not grid), so stack via
   flex-direction column. */
@media (max-width: 560px) {
  .logo-strip .logos { flex-direction: column; gap: 1rem !important; }
  .logo-strip .label { font-size:.75rem !important; margin-bottom: .8rem !important; }
  .logo-strip .brand { font-size: 1.05rem !important; }
  .logo-strip .brand .small { font-size:.75rem !important; letter-spacing: .08em !important; }
}

/* Editorial tables: native table semantics with one horizontal hairline per row. */
.data-table {
  width: 100%;
  table-layout: fixed;
  border: 0;
  border-collapse: collapse;
  background: transparent;
}

.data-table caption:not(.data-table__sr-caption) {
  caption-side: top;
  padding: 0 0 1rem;
  color: var(--ink);
  text-align: left;
  font: 400 1.35rem/1.3 var(--serif);
}

.data-table__sr-caption {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

.data-table th,
.data-table td {
  padding: 1rem 1.25rem 1rem 0;
  border: 0;
  border-bottom: 1px solid var(--line);
  color: var(--ink);
  text-align: left;
  vertical-align: top;
  font-family: var(--sans);
  font-size: .95rem;
  font-weight: 400;
  line-height: 1.5;
  overflow-wrap: anywhere;
}

.data-table th:last-child,
.data-table td:last-child {
  padding-right: 0;
}

.data-table thead th {
  padding-top: 0;
  padding-bottom: .65rem;
  border-bottom: 1px solid var(--line-strong);
  color: var(--mute);
  font-family: var(--sans);
  font-size: .75rem;
  font-weight: 600;
  letter-spacing: .1em;
  text-transform: uppercase;
}

.data-table tbody th {
  font-family: var(--serif);
  font-size: 1.15rem;
  font-weight: 400;
  line-height: 1.3;
}

.data-table .is-us {
  padding-left: 1rem;
  background: var(--bone);
}

.data-table thead .is-us {
  color: var(--clay);
}

.data-table__tag {
  display: inline-block;
  margin-left: .75rem;
  color: var(--clay);
  font-family: var(--sans);
  font-size: .75rem;
  font-weight: 600;
  letter-spacing: .1em;
  line-height: 1.35;
  text-transform: uppercase;
  vertical-align: middle;
}

.data-table .num {
  font-variant-numeric: tabular-nums;
  text-align: right;
}

.data-table .note {
  display: block;
  margin-top: .25rem;
  color: var(--mute);
  font-size: .85rem;
}

.data-table--garage tbody th,
.data-table--garage thead th:first-child {
  width: 22%;
}

.data-table--pca tbody th,
.data-table--pca thead th:first-child {
  width: 28%;
}

/* G25 and G26 stay in their original comparison order when photos are approved. */
.failure-photo-pair:not([hidden]) {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1rem;
  width: 78%;
  margin: 2.5rem 0 1rem auto;
}

.failure-photo-pair:not([hidden]) .image-slot {
  min-width: 0;
}

@media (max-width: 640px) {
  .data-table,
  .data-table tbody,
  .data-table tr,
  .data-table tbody th,
  .data-table td {
    display: block;
    width: 100%;
  }

  .data-table thead {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
  }

  .data-table tbody tr {
    padding: 1rem 0;
    border-bottom: 1px solid var(--line);
  }

  .data-table tbody th,
  .data-table td,
  .data-table th:last-child,
  .data-table td:last-child {
    padding: 0;
    border: 0;
  }

  .data-table tbody th {
    margin-bottom: .75rem;
  }

  .data-table td {
    margin-top: .75rem;
  }

  .data-table td::before {
    content: attr(data-label);
    display: block;
    margin-bottom: .25rem;
    color: var(--mute);
    font-family: var(--sans);
    font-size: .75rem;
    font-weight: 600;
    letter-spacing: .1em;
    line-height: 1.35;
    text-transform: uppercase;
  }

  .data-table td.is-us {
    padding: .75rem 1rem;
    background: var(--bone);
  }

  .data-table td.is-us::before {
    color: var(--clay);
  }

  .data-table__tag {
    display: block;
    margin: .35rem 0 0;
  }

  .data-table .num {
    text-align: left;
  }

  .failure-photo-pair:not([hidden]) {
    grid-template-columns: 1fr;
    width: 100%;
  }
}
