/*
Theme Name: DeSouza Roofing
Theme URI: https://desouzaroofing.example
Author: Sonic
Author URI: https://sonic777.ai
Description: Custom authority theme for DeSouza Roofing: roof replacement, roof repair and siding in Boston, MA and the northern suburbs. Built from BRAND-BRIEF.md + STYLE-GUIDE.md.
Version: 1.0
Requires at least: 6.4
Tested up to: 6.6
Requires PHP: 7.4
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: desouza-roofing
*/

/* =========================================================================
   1. TOKENS  - the single source of truth (STYLE-GUIDE.md §1, §2, §8)
   ========================================================================= */
:root{
  /* colour */
  --ink:#131922;
  --ink-800:#1C232D;
  --ember:#B8371A;
  --ember-bright:#E8623C;
  --ember-deep:#8E2913;
  --paper:#FFFFFF;
  --bone:#F4F2EF;
  --slate-900:#1C232D;
  --slate-700:#2A313A;
  --slate-500:#59616D;
  --slate-300:#C9CDD3;
  --slate-100:#E7E9EC;
  --good:#1E7A4B;
  --warn:#A9700C;
  --urgent:#A32316;

  /* type */
  --font-display:"Archivo","Archivo Fallback",system-ui,-apple-system,"Segoe UI",sans-serif;
  --font-body:"Public Sans","Public Sans Fallback",system-ui,-apple-system,"Segoe UI",sans-serif;

  /* space */
  --s-1:.5rem; --s-2:.75rem; --s-3:1rem; --s-4:1.5rem;
  --s-5:2rem;  --s-6:3rem;   --s-7:4rem;
  --section-y:clamp(3.5rem,2.4rem + 5.4vw,7rem);

  /* structure */
  --radius:5px;
  --radius-lg:6px;
  --border:1px solid var(--slate-100);
  --shadow:0 1px 3px rgba(19,25,34,.08);
  --shadow-lift:0 8px 24px rgba(19,25,34,.10);
  --measure:68ch;
  --header-h:72px;
}

/* =========================================================================
   2. RESET + BASE
   ========================================================================= */
*,*::before,*::after{box-sizing:border-box;}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;}
body{
  margin:0;
  background:var(--paper);
  color:var(--slate-700);
  font-family:var(--font-body);
  font-size:clamp(1.0625rem,1.02rem + .2vw,1.1875rem);
  line-height:1.7;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
h1,h2,h3,h4,h5,h6{
  font-family:var(--font-display);
  color:var(--slate-900);
  margin:0 0 var(--s-3);
  text-wrap:balance;
}
h1{font-size:clamp(2.1rem,1.5rem + 2.9vw,3.75rem);font-weight:800;font-stretch:105%;letter-spacing:-.025em;line-height:1.02;}
h2{font-size:clamp(1.65rem,1.3rem + 1.7vw,2.6rem);font-weight:700;letter-spacing:-.02em;line-height:1.1;}
h3{font-size:clamp(1.25rem,1.1rem + .7vw,1.6rem);font-weight:700;letter-spacing:-.01em;line-height:1.2;}
h4{font-size:1.0625rem;font-weight:700;letter-spacing:.01em;}
p{margin:0 0 var(--s-4);}
a{color:var(--ember);text-decoration-thickness:1px;text-underline-offset:3px;}
a:hover{color:var(--ember-deep);}
strong{font-weight:700;color:var(--slate-900);}
em{font-style:normal;font-weight:600;color:var(--slate-900);} /* brand never leans - §7 */
img,video,svg,iframe{max-width:100%;height:auto;display:block;}
img{background:var(--slate-100);}
ul,ol{margin:0 0 var(--s-4);padding-left:1.25rem;}
li{margin-bottom:.4rem;}
hr{border:0;border-top:1px solid var(--slate-100);margin:var(--s-6) 0;}
:focus-visible{outline:2px solid var(--ember);outline-offset:2px;border-radius:2px;}
::selection{background:var(--ember);color:#fff;}
.dz-sr{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0;}
.dz-skip{position:absolute;left:-9999px;top:0;z-index:200;background:var(--ink);color:#fff;padding:.75rem 1.25rem;}
.dz-skip:focus{left:0;}

/* =========================================================================
   3. LAYOUT PRIMITIVES  (STYLE-GUIDE §8 - authored ONCE, inherited by all pages)
   ========================================================================= */
.dz-container{width:100%;max-width:1200px;margin-inline:auto;padding-inline:clamp(1.25rem,.9rem + 1.7vw,2.5rem);}
.dz-container--narrow{max-width:820px;}
.dz-section{padding-block:var(--section-y);}
.dz-section--tight{padding-block:calc(var(--section-y) * .62);}
.dz-section--bone{background:var(--bone);}
.dz-section--ink{background:var(--ink);color:#C7CDD6;}
.dz-section--ink h1,.dz-section--ink h2,.dz-section--ink h3,.dz-section--ink h4{color:#fff;}
.dz-section--ink a{color:var(--ember-bright);}
.dz-section--ink strong,.dz-section--ink em{color:#fff;}

.dz-grid{display:grid;gap:clamp(1.25rem,1rem + 1.2vw,2rem);}
.dz-grid-2{grid-template-columns:1fr;}
.dz-grid-3{grid-template-columns:1fr;}
.dz-grid-4{grid-template-columns:repeat(2,1fr);}
@media(min-width:768px){
  .dz-grid-2{grid-template-columns:repeat(2,1fr);}
  .dz-grid-3{grid-template-columns:repeat(2,1fr);}
}
@media(min-width:1024px){
  .dz-grid-3{grid-template-columns:repeat(3,1fr);}
  .dz-grid-4{grid-template-columns:repeat(4,1fr);}
}

.dz-eyebrow{
  font-family:var(--font-display);font-size:.75rem;font-weight:700;text-transform:uppercase;
  letter-spacing:.14em;color:var(--ember);margin:0 0 var(--s-2);display:flex;align-items:center;gap:.6rem;
}
.dz-eyebrow::before{content:"";width:22px;height:2px;background:var(--ember);flex:none;}
.dz-section--ink .dz-eyebrow{color:var(--ember-bright);}
.dz-section--ink .dz-eyebrow::before{background:var(--ember-bright);}
.dz-lead{font-size:clamp(1.15rem,1.05rem + .5vw,1.375rem);line-height:1.6;color:var(--slate-500);max-width:60ch;}
.dz-section--ink .dz-lead{color:#AEB6C1;}
.dz-head{max-width:var(--measure);margin-bottom:var(--s-6);}

/* --- ICON SIZE GUARD (STYLE-GUIDE §4 hard limits) -----------------------
   Every dz_icon() carries .dz-i, so an unsized icon can never blow up to
   full container width. Components override the default; nothing exceeds 80px. */
.dz-i{width:20px;height:20px;flex:none;max-width:48px;max-height:48px;}
.dz-btn .dz-i{width:18px;height:18px;}
.dz-card__more .dz-i,.dz-scard__more .dz-i{width:17px;height:17px;}
.dz-checks .dz-i{width:22px;height:22px;}
.dz-pain>.dz-i{width:24px;height:24px;}
.dz-card__icon.dz-i{width:40px;height:40px;}
.dz-cta__tel .dz-i,.dz-side__tel .dz-i{width:22px;height:22px;}
.dz-callbar .dz-i{width:18px;height:18px;}
.dz-footer__tel .dz-i{width:20px;height:20px;}
.dz-header__tel .dz-i{width:17px;height:17px;}
.dz-burger .dz-i,.dz-drawer__close .dz-i{width:22px;height:22px;}
.dz-hero__trust .dz-i{width:17px;height:17px;}

/* =========================================================================
   4. BUTTONS
   ========================================================================= */
.dz-btn{
  display:inline-flex;align-items:center;justify-content:center;gap:.55rem;
  min-height:52px;padding:.85rem 1.6rem;
  font-family:var(--font-body);font-size:1rem;font-weight:600;letter-spacing:.01em;
  border-radius:var(--radius);border:2px solid transparent;text-decoration:none;cursor:pointer;
  transition:background .18s ease,color .18s ease,border-color .18s ease,transform .18s ease;
}
.dz-btn svg{width:18px;height:18px;flex:none;}
.dz-btn--primary{background:var(--ember);color:#fff;border-color:var(--ember);}
.dz-btn--primary:hover{background:var(--ember-deep);border-color:var(--ember-deep);color:#fff;transform:translateY(-1px);}
.dz-btn--ghost{background:transparent;color:var(--slate-900);border-color:var(--slate-300);}
.dz-btn--ghost:hover{border-color:var(--ink);background:var(--ink);color:#fff;}
.dz-btn--onink{background:transparent;color:#fff;border-color:rgba(255,255,255,.35);}
.dz-btn--onink:hover{background:#fff;color:var(--ink);border-color:#fff;}
.dz-btn--wide{width:100%;}
.dz-btns{display:flex;flex-wrap:wrap;gap:var(--s-2);}
@media(max-width:479px){ .dz-btns .dz-btn{width:100%;} }

/* =========================================================================
   5. HEADER + NAV
   ========================================================================= */
.dz-header{position:sticky;top:0;z-index:90;background:rgba(255,255,255,.97);backdrop-filter:blur(8px);border-bottom:1px solid var(--slate-100);}
.dz-header__bar{display:flex;align-items:center;gap:1rem;min-height:var(--header-h);}
.dz-logo{flex:none;}
.dz-logo{display:flex;align-items:center;gap:.6rem;text-decoration:none;margin-right:auto;flex:none;}
.dz-logo__mark{width:30px;height:22px;flex:none;}
.dz-logo__mark path{stroke:var(--ember);stroke-width:2.4;fill:none;stroke-linecap:square;stroke-linejoin:miter;}
.dz-logo__txt{display:flex;flex-direction:column;line-height:1;}
.dz-logo__name{font-family:var(--font-display);font-weight:800;font-stretch:108%;font-size:1.28rem;letter-spacing:-.02em;color:var(--ink);}
.dz-logo__sub{font-family:var(--font-display);font-weight:700;font-size:.6rem;letter-spacing:.18em;text-transform:uppercase;color:var(--slate-500);margin-top:3px;}

.dz-nav{display:none;}
@media(min-width:1024px){
  .dz-nav{display:flex;align-items:center;gap:1.15rem;}
  .dz-nav a{font-size:.9rem;font-weight:500;color:var(--slate-700);text-decoration:none;padding:.4rem 0;position:relative;white-space:nowrap;}
  .dz-nav a::after{content:"";position:absolute;left:0;right:100%;bottom:0;height:2px;background:var(--ember);transition:right .2s ease;}
  .dz-nav a:hover,.dz-nav .current-menu-item>a,.dz-nav .current-page-ancestor>a{color:var(--ink);}
  .dz-nav a:hover::after,.dz-nav .current-menu-item>a::after,.dz-nav .current-page-ancestor>a::after{right:0;}
  .dz-nav ul{display:flex;gap:1.15rem;list-style:none;margin:0;padding:0;align-items:center;}
  .dz-nav li{margin:0;}
}
/* --- desktop dropdowns (WP sub-menus) ---------------------------------- */
@media(min-width:1024px){
  .dz-nav li{position:relative;}
  .dz-nav .sub-menu{
    position:absolute;top:100%;left:-1rem;min-width:230px;
    display:block;flex-direction:column;gap:0;
    background:var(--paper);border:var(--border);border-radius:var(--radius-lg);
    box-shadow:var(--shadow-lift);padding:.4rem 0;margin:0;
    opacity:0;visibility:hidden;transform:translateY(6px);
    transition:opacity .16s ease,transform .16s ease,visibility .16s;
    z-index:95;
  }
  .dz-nav li:hover>.sub-menu,
  .dz-nav li:focus-within>.sub-menu{opacity:1;visibility:visible;transform:translateY(0);}
  .dz-nav .sub-menu li{width:100%;}
  .dz-nav .sub-menu a{display:block;padding:.6rem 1rem;font-size:.92rem;white-space:nowrap;}
  .dz-nav .sub-menu a::after{display:none;}
  .dz-nav .sub-menu a:hover{background:var(--bone);color:var(--ember);}
  /* parent items with children get a caret */
  .dz-nav .menu-item-has-children>a{padding-right:.85rem;}
  .dz-nav .menu-item-has-children>a::before{
    content:"";position:absolute;right:0;top:50%;margin-top:-2px;
    width:6px;height:6px;border-right:1.5px solid var(--slate-500);border-bottom:1.5px solid var(--slate-500);
    transform:rotate(45deg) translateY(-1px);transition:border-color .16s ease;
  }
  .dz-nav .menu-item-has-children:hover>a::before{border-color:var(--ember);}
}

.dz-header__cta{display:none;}
.dz-btn{white-space:nowrap;}
@media(min-width:1200px){ .dz-header__cta{display:inline-flex;} }
.dz-header__tel{display:none;}
@media(min-width:768px){
  .dz-header__tel{display:inline-flex;align-items:center;gap:.45rem;font-family:var(--font-display);font-weight:700;font-size:1rem;color:var(--ink);text-decoration:none;letter-spacing:-.01em;white-space:nowrap;flex:none;}
  .dz-header__tel svg{width:17px;height:17px;stroke:var(--ember);}
  .dz-header__tel:hover{color:var(--ember);}
}
.dz-burger{display:inline-flex;align-items:center;justify-content:center;width:46px;height:46px;background:none;border:1px solid var(--slate-300);border-radius:var(--radius);cursor:pointer;}
.dz-burger svg{width:22px;height:22px;stroke:var(--ink);stroke-width:2;}
@media(min-width:1024px){ .dz-burger{display:none;} }

.dz-drawer{position:fixed;inset:0;z-index:120;background:var(--ink);display:flex;flex-direction:column;transform:translateX(100%);transition:transform .28s ease;overflow-y:auto;}
.dz-drawer[data-open="true"]{transform:translateX(0);}
.dz-drawer__top{display:flex;align-items:center;justify-content:space-between;min-height:var(--header-h);padding-inline:clamp(1.25rem,.9rem + 1.7vw,2.5rem);border-bottom:1px solid rgba(255,255,255,.12);}
.dz-drawer__top .dz-logo__name{color:#fff;}
.dz-drawer__close{width:46px;height:46px;background:none;border:1px solid rgba(255,255,255,.3);border-radius:var(--radius);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;}
.dz-drawer__close svg{width:22px;height:22px;stroke:#fff;stroke-width:2;}
.dz-drawer nav ul{list-style:none;margin:0;padding:var(--s-3) 0;}
.dz-drawer nav li{margin:0;border-bottom:1px solid rgba(255,255,255,.08);}
.dz-drawer nav a{display:block;min-height:48px;padding:.9rem clamp(1.25rem,.9rem + 1.7vw,2.5rem);color:#fff;text-decoration:none;font-size:1.05rem;font-weight:500;}
.dz-drawer nav a:hover{background:rgba(255,255,255,.06);color:var(--ember-bright);}
.dz-drawer nav .sub-menu{padding:0 0 .5rem;}
.dz-drawer nav .sub-menu a{padding-left:calc(clamp(1.25rem,.9rem + 1.7vw,2.5rem) + 1.1rem);font-size:.95rem;color:#AEB6C1;min-height:44px;}
.dz-drawer__foot{margin-top:auto;padding:var(--s-4) clamp(1.25rem,.9rem + 1.7vw,2.5rem) var(--s-5);display:grid;gap:var(--s-2);}

/* sticky mobile call bar - STYLE-GUIDE §8 */
.dz-callbar{position:fixed;left:0;right:0;bottom:0;z-index:80;display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--slate-100);padding-bottom:env(safe-area-inset-bottom);box-shadow:0 -2px 12px rgba(19,25,34,.10);}
.dz-callbar a{display:flex;align-items:center;justify-content:center;gap:.5rem;min-height:60px;font-family:var(--font-body);font-weight:600;font-size:.98rem;text-decoration:none;}
.dz-callbar__call{background:var(--ember);color:#fff;}
.dz-callbar__est{background:var(--ink);color:#fff;}
.dz-callbar svg{width:18px;height:18px;flex:none;}
@media(min-width:768px){ .dz-callbar{display:none;} }
@media(max-width:767px){ body{padding-bottom:60px;} }

/* =========================================================================
   6. HERO
   ========================================================================= */
.dz-hero{position:relative;background:var(--ink);color:#fff;overflow:hidden;}
.dz-hero__media{position:absolute;inset:0;}
.dz-hero__media img{width:100%;height:100%;object-fit:cover;object-position:72% 42%;background:var(--ink);}
@media(min-width:1024px){ .dz-hero__media img{object-position:center 42%;} }
.dz-hero__scrim{position:absolute;inset:0;background:
  linear-gradient(180deg,rgba(19,25,34,.90) 0%,rgba(19,25,34,.70) 38%,rgba(19,25,34,.52) 62%,rgba(19,25,34,.86) 100%);}
@media(min-width:1024px){
  .dz-hero__scrim{background:
    linear-gradient(90deg,rgba(19,25,34,.95) 0%,rgba(19,25,34,.86) 42%,rgba(19,25,34,.40) 72%,rgba(19,25,34,.55) 100%);}
}
.dz-hero__inner{position:relative;padding-block:clamp(2.5rem,2rem + 3vw,4.5rem);
  display:flex;flex-direction:column;justify-content:center;}
@media(min-width:768px){ .dz-hero__inner{min-height:clamp(520px,78vh,680px);} }
.dz-hero__copy{max-width:none;}
@media(min-width:768px){ .dz-hero__copy{max-width:34rem;} }
@media(min-width:1024px){ .dz-hero__copy{max-width:min(56%,38rem);} }
.dz-hero h1{color:#fff;font-size:clamp(2.35rem,1.65rem + 3.1vw,4.25rem);font-weight:800;font-stretch:112%;letter-spacing:-.03em;line-height:1;margin-bottom:var(--s-4);}
.dz-hero h1 .dz-hl{color:var(--ember-bright);}
.dz-hero__sub{font-size:clamp(1.08rem,1.02rem + .35vw,1.24rem);line-height:1.55;color:#D3D9E1;max-width:34rem;margin-bottom:var(--s-4);}
.dz-hero em,.dz-phero em,.dz-cta em,.dz-footer em{color:#fff;}
.dz-hero .dz-eyebrow{color:var(--ember-bright);}
.dz-hero .dz-eyebrow::before{background:var(--ember-bright);}
.dz-hero__trust{display:flex;flex-wrap:wrap;gap:.6rem 1.5rem;margin-top:var(--s-4);padding-top:var(--s-3);border-top:1px solid rgba(255,255,255,.16);max-width:34rem;}
.dz-hero__trust li{display:flex;align-items:center;gap:.5rem;font-size:.92rem;color:#C7CDD6;margin:0;}
.dz-hero__trust ul{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:.6rem 1.5rem;}
.dz-hero__trust svg{width:17px;height:17px;stroke:var(--ember-bright);stroke-width:2;flex:none;}

/* compact hero for interior pages */
.dz-phero{position:relative;background:var(--ink);color:#fff;overflow:hidden;}
.dz-phero__media{position:absolute;inset:0;}
.dz-phero__media img{width:100%;height:100%;object-fit:cover;object-position:center 45%;}
.dz-phero__scrim{position:absolute;inset:0;background:linear-gradient(180deg,rgba(19,25,34,.92) 0%,rgba(19,25,34,.72) 55%,rgba(19,25,34,.92) 100%);}
@media(min-width:1024px){.dz-phero__scrim{background:linear-gradient(90deg,rgba(19,25,34,.95) 0%,rgba(19,25,34,.82) 48%,rgba(19,25,34,.52) 100%);}}
.dz-phero__inner{position:relative;padding-block:clamp(2.5rem,1.8rem + 4vw,4.5rem);}
.dz-phero h1{color:#fff;margin-bottom:var(--s-3);}
.dz-phero__sub{font-size:clamp(1.08rem,1rem + .4vw,1.28rem);color:#C7CDD6;max-width:56ch;line-height:1.6;margin-bottom:var(--s-4);}
.dz-phero .dz-eyebrow{color:var(--ember-bright);}
.dz-phero .dz-eyebrow::before{background:var(--ember-bright);}

/* breadcrumbs */
.dz-crumbs{font-size:.82rem;color:#98A1AD;margin-bottom:var(--s-3);}
.dz-crumbs a{color:#98A1AD;text-decoration:none;}
.dz-crumbs a:hover{color:#fff;text-decoration:underline;}
.dz-crumbs span{margin:0 .4rem;opacity:.5;}

/* =========================================================================
   7. CARDS / COMPONENTS
   ========================================================================= */
.dz-card{background:var(--paper);border:var(--border);border-radius:var(--radius-lg);padding:var(--s-4);transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease;}
.dz-card--link:hover{transform:translateY(-4px);box-shadow:var(--shadow-lift);border-color:var(--slate-300);}
.dz-card h3{margin-bottom:.5rem;}
.dz-card p{margin-bottom:0;font-size:.98rem;color:var(--slate-500);}
.dz-card__icon{width:40px;height:40px;stroke:var(--ember);stroke-width:1.75;fill:none;stroke-linecap:square;stroke-linejoin:miter;margin-bottom:var(--s-3);}
.dz-section--bone .dz-card{background:var(--paper);}
.dz-card__more{display:inline-flex;align-items:center;gap:.4rem;margin-top:var(--s-3);font-size:.92rem;font-weight:600;color:var(--ember);text-decoration:none;}
.dz-card--link:hover .dz-card__more{gap:.7rem;}

/* service card with photo */
.dz-scard{display:flex;flex-direction:column;background:var(--paper);border:var(--border);border-radius:var(--radius-lg);overflow:hidden;text-decoration:none;color:inherit;transition:transform .18s ease,box-shadow .18s ease;}
.dz-scard:hover{transform:translateY(-4px);box-shadow:var(--shadow-lift);color:inherit;}
.dz-scard__img{aspect-ratio:4/3;width:100%;object-fit:cover;}
.dz-scard__body{padding:var(--s-4);display:flex;flex-direction:column;flex:1;}
.dz-scard__body h3{margin-bottom:.5rem;}
.dz-scard__body p{font-size:.98rem;color:var(--slate-500);margin-bottom:var(--s-3);}
.dz-scard__more{margin-top:auto;font-size:.92rem;font-weight:600;color:var(--ember);display:inline-flex;gap:.4rem;align-items:center;}
.dz-scard:hover .dz-scard__more{gap:.7rem;}

/* pain / problem list */
.dz-pain{display:flex;gap:var(--s-3);align-items:flex-start;padding:var(--s-3) 0;border-bottom:1px solid var(--slate-100);}
.dz-pain:last-child{border-bottom:0;}
.dz-pain svg{width:24px;height:24px;flex:none;stroke:var(--ember);stroke-width:1.75;fill:none;margin-top:.3rem;}
.dz-pain h3{font-size:1.08rem;margin-bottom:.25rem;}
.dz-pain p{margin:0;font-size:.98rem;color:var(--slate-500);}

/* stats */
.dz-stat{text-align:left;}
.dz-stat__n{font-family:var(--font-display);font-size:clamp(2.5rem,2rem + 2.4vw,3.75rem);font-weight:800;font-stretch:108%;letter-spacing:-.03em;line-height:1;color:var(--ember-bright);display:block;}
.dz-section--bone .dz-stat__n,.dz-section:not(.dz-section--ink) .dz-stat__n{color:var(--ember);}
.dz-stat__l{display:block;margin-top:.6rem;font-size:.92rem;line-height:1.45;color:inherit;opacity:.85;}

/* numbered process */
.dz-step{position:relative;padding-top:var(--s-4);border-top:3px solid var(--ember);}
.dz-step__n{font-family:var(--font-display);font-size:.75rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--ember);display:block;margin-bottom:.6rem;}
.dz-step h3{font-size:1.18rem;margin-bottom:.5rem;}
.dz-step p{font-size:.98rem;color:var(--slate-500);margin:0;}
.dz-section--ink .dz-step{border-top-color:var(--ember-bright);}
.dz-section--ink .dz-step__n{color:var(--ember-bright);}
.dz-section--ink .dz-step p{color:#AEB6C1;}

/* split feature */
.dz-split{display:grid;gap:clamp(1.75rem,1.2rem + 2.4vw,3.5rem);align-items:center;}
@media(min-width:1024px){ .dz-split{grid-template-columns:1fr 1fr;} .dz-split--wide-l{grid-template-columns:1.15fr 1fr;} }
.dz-split__img{border-radius:var(--radius-lg);overflow:hidden;}
.dz-split__img img{width:100%;aspect-ratio:4/3;object-fit:cover;}

/* checklist */
.dz-checks{list-style:none;margin:0 0 var(--s-4);padding:0;display:grid;gap:.7rem;}
.dz-checks li{display:flex;gap:.7rem;align-items:flex-start;margin:0;font-size:1rem;}
.dz-checks svg{width:22px;height:22px;flex:none;stroke:var(--ember);stroke-width:2;fill:none;margin-top:.22rem;}
.dz-section--ink .dz-checks svg{stroke:var(--ember-bright);}

/* callout */
.dz-callout{border-left:3px solid var(--ember);background:var(--bone);padding:var(--s-4);border-radius:0 var(--radius) var(--radius) 0;margin:var(--s-5) 0;}
.dz-callout p:last-child{margin-bottom:0;}
.dz-callout__t{font-family:var(--font-display);font-weight:700;color:var(--slate-900);display:block;margin-bottom:.4rem;}
.dz-callout--urgent{border-left-color:var(--urgent);}
.dz-callout--good{border-left-color:var(--good);}

/* FAQ */
.dz-faq{border-top:1px solid var(--slate-100);margin:var(--s-5) 0;}
.dz-faq__item{border-bottom:1px solid var(--slate-100);}
.dz-faq__item>summary{
  list-style:none;cursor:pointer;display:flex;justify-content:space-between;gap:var(--s-3);align-items:flex-start;
  padding:1.15rem 0;font-family:var(--font-display);font-weight:700;font-size:1.08rem;color:var(--slate-900);line-height:1.35;min-height:44px;
}
.dz-faq__item>summary::-webkit-details-marker{display:none;}
.dz-faq__item>summary::after{content:"";flex:none;width:14px;height:14px;margin-top:.4rem;border-right:2px solid var(--ember);border-bottom:2px solid var(--ember);transform:rotate(45deg);transition:transform .2s ease;}
.dz-faq__item[open]>summary::after{transform:rotate(-135deg);}
.dz-faq__item>summary:hover{color:var(--ember);}
.dz-faq__a{padding:0 0 1.25rem;color:var(--slate-500);}
.dz-faq__a p:last-child{margin-bottom:0;}
.dz-faq__a>*:first-child{margin-top:0;}

/* CTA band */
.dz-cta{background:var(--ink);color:#fff;}
.dz-cta__inner{display:grid;gap:var(--s-4);align-items:center;}
@media(min-width:1024px){ .dz-cta__inner{grid-template-columns:1.4fr 1fr;gap:var(--s-6);} }
.dz-cta h2{color:#fff;margin-bottom:var(--s-3);}
.dz-cta p{color:#AEB6C1;margin-bottom:0;}
.dz-cta__act{display:grid;gap:var(--s-2);}
.dz-cta__tel{display:flex;align-items:center;justify-content:center;gap:.6rem;min-height:64px;background:var(--ember);color:#fff;text-decoration:none;border-radius:var(--radius);font-family:var(--font-display);font-weight:800;font-size:1.45rem;letter-spacing:-.02em;transition:background .18s ease;}
.dz-cta__tel:hover{background:var(--ember-deep);color:#fff;}
.dz-cta__tel svg{width:22px;height:22px;flex:none;}
.dz-cta__note{font-size:.86rem;color:#8B94A1;text-align:center;margin:0;}

/* area / link chips */
.dz-chips{display:flex;flex-wrap:wrap;gap:.5rem;list-style:none;margin:0;padding:0;}
.dz-chips li{margin:0;}
.dz-chips a{display:inline-flex;align-items:center;min-height:44px;padding:.55rem 1rem;border:var(--border);border-radius:var(--radius);background:var(--paper);color:var(--slate-700);text-decoration:none;font-size:.94rem;font-weight:500;transition:all .16s ease;}
.dz-chips a:hover{border-color:var(--ember);color:var(--ember);}

/* related links */
.dz-related{display:grid;gap:var(--s-2);list-style:none;margin:0;padding:0;}
.dz-related li{margin:0;}
.dz-related a{display:flex;align-items:center;justify-content:space-between;gap:var(--s-3);padding:1rem var(--s-3);border:var(--border);border-radius:var(--radius);text-decoration:none;color:var(--slate-900);font-weight:600;font-size:1rem;background:var(--paper);transition:all .16s ease;}
.dz-related a::after{content:"→";color:var(--ember);transition:transform .16s ease;}
.dz-related a:hover{border-color:var(--ember);}
.dz-related a:hover::after{transform:translateX(4px);}

/* =========================================================================
   8. PAGE CONTENT (Gutenberg prose) - inherited by every built page
   ========================================================================= */
.dz-main{padding-block:var(--section-y);}
.dz-layout{display:grid;gap:clamp(2rem,1.4rem + 2.4vw,3.5rem);}
/* Grid/flex items default to min-width:auto and refuse to shrink below their
   min-content width - a nowrap table then forces the whole column wider than the
   viewport. Every layout child must be allowed to shrink. */
.dz-layout > *,.dz-grid > *,.dz-split > *{min-width:0;}
.dz-prose > *{max-width:100%;}
@media(min-width:1024px){ .dz-layout--sidebar{grid-template-columns:minmax(0,1fr) 320px;align-items:start;} }
.dz-prose{max-width:var(--measure);}
.dz-layout--sidebar .dz-prose{max-width:none;}
.dz-prose>*:first-child{margin-top:0;}
.dz-prose h2{margin-top:var(--s-6);scroll-margin-top:calc(var(--header-h) + 16px);}
.dz-prose h3{margin-top:var(--s-5);scroll-margin-top:calc(var(--header-h) + 16px);}
.dz-prose h2+h3{margin-top:var(--s-4);}
.dz-prose ul,.dz-prose ol{padding-left:1.3rem;}
.dz-prose li::marker{color:var(--ember);font-weight:700;}
.dz-prose figure{margin:var(--s-5) 0;}
.dz-prose figure img{border-radius:var(--radius-lg);width:100%;}
.dz-prose figcaption{font-size:.86rem;color:var(--slate-500);margin-top:.6rem;text-align:left;}
.dz-prose blockquote{margin:var(--s-5) 0;padding:0 0 0 var(--s-4);border-left:3px solid var(--ember);font-size:1.1rem;color:var(--slate-900);}
.dz-prose blockquote p:last-child{margin-bottom:0;}
.dz-prose table{display:block;overflow-x:auto;width:100%;border-collapse:collapse;margin:var(--s-5) 0;font-size:.96rem;white-space:nowrap;}
@media(min-width:768px){ .dz-prose table{display:table;white-space:normal;} }
.dz-prose th,.dz-prose td{padding:.8rem 1rem;text-align:left;border-bottom:1px solid var(--slate-100);vertical-align:top;}
.dz-prose thead th{background:var(--ink);color:#fff;font-family:var(--font-display);font-size:.78rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;border-bottom:0;}
.dz-prose tbody tr:nth-child(even){background:var(--bone);}
.dz-prose .wp-block-table{overflow-x:auto;}
.dz-prose .wp-block-separator{border-top:1px solid var(--slate-100);margin:var(--s-6) 0;}
.dz-prose .wp-block-columns{gap:var(--s-4);}
.dz-prose .wp-block-image{margin:var(--s-5) 0;}

/* sidebar */
.dz-side{display:grid;gap:var(--s-4);position:sticky;top:calc(var(--header-h) + 20px);}
@media(max-width:1023px){ .dz-side{position:static;} }
.dz-side__box{border:var(--border);border-radius:var(--radius-lg);padding:var(--s-4);background:var(--bone);}
.dz-side__box h3{font-size:1.12rem;margin-bottom:var(--s-2);}
.dz-side__box p{font-size:.94rem;color:var(--slate-500);}
.dz-side__box--ink{background:var(--ink);border-color:var(--ink);}
.dz-side__box--ink h3{color:#fff;}
.dz-side__box--ink p{color:#AEB6C1;}
.dz-side__tel{display:flex;align-items:center;justify-content:center;gap:.5rem;min-height:56px;background:var(--ember);color:#fff;border-radius:var(--radius);text-decoration:none;font-family:var(--font-display);font-weight:800;font-size:1.24rem;letter-spacing:-.02em;}
.dz-side__tel:hover{background:var(--ember-deep);color:#fff;}
.dz-side__list{list-style:none;margin:0;padding:0;display:grid;gap:.1rem;}
.dz-side__list li{margin:0;border-bottom:1px solid var(--slate-100);}
.dz-side__list li:last-child{border-bottom:0;}
.dz-side__list a{display:block;padding:.7rem 0;font-size:.95rem;font-weight:500;color:var(--slate-700);text-decoration:none;}
.dz-side__list a:hover{color:var(--ember);}

/* on-this-page */
.dz-toc{border:var(--border);border-radius:var(--radius-lg);padding:var(--s-4);background:var(--bone);margin-bottom:var(--s-5);}
.dz-toc h2{font-size:.78rem!important;text-transform:uppercase;letter-spacing:.12em;color:var(--slate-500);margin:0 0 var(--s-2)!important;font-weight:700;}
.dz-toc ol{margin:0;padding-left:1.1rem;}
.dz-toc li{margin-bottom:.35rem;font-size:.95rem;}
.dz-toc a{color:var(--slate-700);text-decoration:none;}
.dz-toc a:hover{color:var(--ember);text-decoration:underline;}

/* =========================================================================
   9. FOOTER
   ========================================================================= */
.dz-footer{background:var(--ink);color:#98A1AD;padding-block:var(--s-7) var(--s-5);font-size:.94rem;}
.dz-footer a{color:#C7CDD6;text-decoration:none;}
.dz-footer a:hover{color:var(--ember-bright);}
.dz-footer__grid{display:grid;gap:var(--s-5);}
@media(min-width:768px){ .dz-footer__grid{grid-template-columns:1.4fr 1fr 1fr;} }
@media(min-width:1024px){ .dz-footer__grid{grid-template-columns:1.6fr 1fr 1fr 1fr;} }
.dz-footer h3{color:#fff;font-size:.78rem;text-transform:uppercase;letter-spacing:.12em;margin-bottom:var(--s-3);font-weight:700;}
.dz-footer ul{list-style:none;margin:0;padding:0;}
.dz-footer li{margin-bottom:.55rem;}
.dz-footer .dz-logo__name{color:#fff;}
.dz-footer .dz-logo__sub{color:#98A1AD;}
.dz-footer__blurb{margin:var(--s-3) 0 var(--s-4);max-width:34ch;line-height:1.6;}
.dz-footer__tel{display:inline-flex;align-items:center;gap:.5rem;font-family:var(--font-display);font-weight:800;font-size:1.4rem;color:#fff!important;letter-spacing:-.02em;}
.dz-footer__tel:hover{color:var(--ember-bright)!important;}
.dz-footer__tel svg{width:20px;height:20px;stroke:var(--ember-bright);}
.dz-footer__bottom{margin-top:var(--s-6);padding-top:var(--s-4);border-top:1px solid rgba(255,255,255,.10);display:flex;flex-wrap:wrap;gap:var(--s-2) var(--s-4);justify-content:space-between;font-size:.85rem;}
.dz-footer__bottom p{margin:0;}

/* =========================================================================
   10. MOTION  (≤350ms, fade + ≤12px rise - STYLE-GUIDE §7)
   ========================================================================= */
[data-reveal]{opacity:0;transform:translateY(12px);transition:opacity .45s ease,transform .45s ease;}
[data-reveal].is-in{opacity:1;transform:none;}
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important;}
  [data-reveal]{opacity:1;transform:none;}
}

/* =========================================================================
   11. 404 / misc
   ========================================================================= */
.dz-404{text-align:center;padding-block:var(--s-7);}
.dz-404 .dz-btns{justify-content:center;}

/* =========================================================================
   12. ESTIMATE REQUEST FORM  (.dz-est - static markup, no backend)
   ========================================================================= */
.dz-est{background:var(--bone);border:var(--border);border-radius:var(--radius-lg);padding:clamp(1.25rem,1rem + 1.4vw,2rem);margin:var(--s-5) 0;}
.dz-est__grid{display:grid;gap:var(--s-3);}
@media(min-width:560px){ .dz-est__grid{grid-template-columns:repeat(2,1fr);} .dz-est__f--full{grid-column:1/-1;} }
.dz-est__f{display:flex;flex-direction:column;gap:.4rem;min-width:0;}
.dz-est label{font-family:var(--font-display);font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.12em;color:var(--slate-500);}
.dz-est input,.dz-est select,.dz-est textarea{
  font-family:var(--font-body);font-size:1rem;color:var(--slate-900);
  background:var(--paper);border:1px solid var(--slate-300);border-radius:var(--radius);
  padding:.7rem .85rem;min-height:46px;width:100%;
  transition:border-color .2s ease,box-shadow .2s ease;
}
.dz-est textarea{min-height:110px;resize:vertical;line-height:1.6;}
.dz-est select{appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--slate-500) 50%),linear-gradient(135deg,var(--slate-500) 50%,transparent 50%);background-position:calc(100% - 20px) 21px,calc(100% - 14px) 21px;background-size:6px 6px,6px 6px;background-repeat:no-repeat;padding-right:2.5rem;}
.dz-est input:focus,.dz-est select:focus,.dz-est textarea:focus{outline:none;border-color:var(--ember);box-shadow:0 0 0 3px rgba(184,55,26,.14);}
.dz-est input:focus-visible,.dz-est select:focus-visible,.dz-est textarea:focus-visible{outline:2px solid var(--ember);outline-offset:2px;}
.dz-est .dz-btn{margin-top:var(--s-2);}
.dz-est__note{font-size:.85rem;color:var(--slate-500);line-height:1.55;margin:var(--s-3) 0 0;}
