/* =========================================================================
   GENESIS HOME & COMMERCIAL INSPECTIONS
   Aesthetic: luxury heraldic — warm near-black + champagne gold
   Display: Fraunces (optical serif)  ·  Body: Plus Jakarta Sans
   ========================================================================= */

/* ---------- Tokens (BRIGHT / ivory premium) ---------- */
:root{
  --black:        #ffffff;   /* page background (now light) */
  --black-2:      #f6f3ec;   /* raised / alt section (warm ivory) */
  --black-3:      #ffffff;   /* card */
  --line:         #e7e1d4;   /* hairline */
  --gold:         #b7944a;   /* champagne gold, deepened for contrast on white */
  --gold-bright:  #caa85e;
  --gold-deep:    #9a7a38;   /* deep gold */
  --cream:        #14110b;   /* PRIMARY DARK TEXT/HEADINGS (name kept for reuse) */
  --text:         #4f4a40;   /* body text on light */
  --text-dim:     #8a8273;   /* muted */
  --ink:          #14110b;   /* true ink (header/footer bg) */
  --maxw:         1240px;
  --ease:         cubic-bezier(.22,.61,.36,1);
}

/* ---------- Reset ---------- */
*{ margin:0; padding:0; box-sizing:border-box; }
html{ scroll-behavior:smooth; -webkit-font-smoothing:antialiased; }
body{
  font-family:"Plus Jakarta Sans", system-ui, sans-serif;
  background:var(--black);
  color:var(--text);
  font-size:16px; line-height:1.7;
  overflow-x:hidden;
}
img{ display:block; max-width:100%; }
a{ color:inherit; text-decoration:none; }
ul{ list-style:none; }

/* subtle grain texture (light) */
body::before{
  content:""; position:fixed; inset:0; z-index:1; pointer-events:none;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.025'/%3E%3C/svg%3E");
  mix-blend-mode:multiply;
}

/* ---------- Typography ---------- */
.display, h1, h2, h3{
  font-family:"Fraunces", Georgia, serif;
  color:var(--cream);
  font-weight:500;
  line-height:1.06;
  letter-spacing:-.01em;
}
h1{ font-size:clamp(2.6rem, 6vw, 5.2rem); font-optical-sizing:auto; }
h2{ font-size:clamp(2rem, 4vw, 3.4rem); }
h3{ font-size:1.35rem; }
.eyebrow{
  font-family:"Plus Jakarta Sans",sans-serif;
  font-size:.74rem; font-weight:700; letter-spacing:.32em; text-transform:uppercase;
  color:var(--gold); display:inline-flex; align-items:center; gap:.7rem;
}
.eyebrow::before{ content:""; width:34px; height:1px; background:var(--gold-deep); }
.lead{ font-size:1.18rem; color:var(--text); max-width:60ch; }
.serif-italic{ font-family:"Fraunces",serif; font-style:italic; font-weight:400; }

/* ---------- Layout ---------- */
.wrap{ width:100%; max-width:var(--maxw); margin:0 auto; padding:0 28px; position:relative; z-index:2; }
section{ position:relative; z-index:2; }
.section{ padding:clamp(72px,11vw,150px) 0; }
.center{ text-align:center; }
.grid{ display:grid; gap:28px; }

/* ---------- Buttons ---------- */
.btn{
  display:inline-flex; align-items:center; gap:.6rem;
  font-weight:600; font-size:.95rem; letter-spacing:.01em;
  padding:1rem 1.7rem; border-radius:2px; cursor:pointer; border:1px solid transparent;
  transition:all .35s var(--ease); position:relative;
}
.btn-gold{ background:var(--gold); color:#fff; }
.btn-gold:hover{ background:var(--gold-bright); transform:translateY(-2px); box-shadow:0 14px 30px -12px rgba(154,122,56,.45); }
.btn-ghost{ border-color:var(--line); color:var(--ink); }
.btn-ghost:hover{ border-color:var(--gold); color:var(--gold); }
.btn-block{ width:100%; justify-content:center; }

/* ---------- Header ---------- */
.header{
  position:fixed; top:0; left:0; right:0; z-index:50;
  transition:background .4s var(--ease), border-color .4s, padding .4s;
  border-bottom:1px solid transparent; padding:18px 0;
}
.header.scrolled{
  background:rgba(255,255,255,.94); backdrop-filter:blur(14px);
  border-color:var(--line); padding:10px 0;
  box-shadow:0 8px 30px -18px rgba(20,17,11,.3);
}
/* At top: text is white over the hero photo. When scrolled (white bar): dark text. */
.brand .bt b{ color:#fff; }
.menu a{ color:rgba(255,255,255,.85); }
.nav-phone b{ color:var(--gold-bright); }
.nav-phone span{ color:rgba(255,255,255,.7); }
.burger span{ background:#fff; }
.header.scrolled .brand .bt b{ color:var(--ink); }
.header.scrolled .menu a{ color:var(--text); }
.header.scrolled .menu a:hover, .header.scrolled .menu a.active{ color:var(--ink); }
.header.scrolled .nav-phone b{ color:var(--gold); }
.header.scrolled .nav-phone span{ color:var(--text-dim); }
.header.scrolled .burger span{ background:var(--ink); }
.nav{ display:flex; align-items:center; justify-content:space-between; gap:24px; }
.brand{ display:flex; align-items:center; gap:12px; flex:0 0 auto; }
.brand img{ height:48px; width:auto; transition:height .4s var(--ease); }
.header.scrolled .brand img{ height:42px; }
.brand .bt{ font-family:"Fraunces",serif; line-height:1.05; white-space:nowrap; }
.brand .bt b{ display:block; font-size:1.02rem; font-weight:600; letter-spacing:.01em; }
.brand .bt span{ font-size:.58rem; letter-spacing:.22em; text-transform:uppercase; color:var(--gold-bright); font-family:"Plus Jakarta Sans",sans-serif; }
.header.scrolled .brand .bt span{ color:var(--gold); }
.menu{ display:flex; align-items:center; gap:26px; flex:1 1 auto; justify-content:center; }
.menu a{ font-size:.88rem; font-weight:500; position:relative; padding:4px 0; transition:color .3s; white-space:nowrap; }
.menu a::after{ content:""; position:absolute; left:0; bottom:-2px; width:0; height:1px; background:var(--gold); transition:width .35s var(--ease); }
.menu a:hover, .menu a.active{ color:#fff; }
.menu a:hover::after, .menu a.active::after{ width:100%; }

/* ---------- Services dropdown ---------- */
.has-dropdown{ position:relative; }
.dd-toggle{ display:inline-flex; align-items:center; gap:5px; cursor:pointer; }
.dd-toggle .caret{ width:8px; height:8px; border-right:1.5px solid currentColor; border-bottom:1.5px solid currentColor; transform:rotate(45deg); transition:transform .3s var(--ease); margin-top:-3px; opacity:.7; }
.has-dropdown:hover .dd-toggle .caret{ transform:rotate(225deg); margin-top:2px; }
.dropdown{
  position:absolute; top:100%; left:50%; transform:translateX(-50%) translateY(10px);
  min-width:260px; padding:10px; margin-top:14px;
  background:#fff; border:1px solid var(--line); border-radius:10px;
  box-shadow:0 24px 50px -20px rgba(20,17,11,.28);
  opacity:0; visibility:hidden; transition:opacity .3s var(--ease), transform .3s var(--ease), visibility .3s;
  z-index:60;
}
/* hover bridge so it doesn't close in the gap */
.dropdown::before{ content:""; position:absolute; top:-14px; left:0; right:0; height:14px; }
.has-dropdown:hover .dropdown{ opacity:1; visibility:visible; transform:translateX(-50%) translateY(0); }
.dropdown a{
  display:flex; flex-direction:column; gap:2px; padding:11px 14px; border-radius:7px;
  color:var(--text) !important; white-space:normal; transition:background .25s, color .25s;
}
.dropdown a::after{ display:none; }
.dropdown a b{ font-family:"Fraunces",serif; font-size:1rem; color:var(--ink); font-weight:600; }
.dropdown a span{ font-size:.78rem; color:var(--text-dim); }
.dropdown a:hover{ background:var(--black-2); }
.dropdown a:hover b{ color:var(--gold); }
/* at top (transparent header over photo) the dropdown panel itself stays white — that's intentional */
.nav-cta{ display:flex; align-items:center; gap:16px; flex:0 0 auto; }
.nav-phone{ display:flex; flex-direction:column; align-items:flex-end; line-height:1.1; white-space:nowrap; }
.nav-phone span{ font-size:.58rem; letter-spacing:.16em; text-transform:uppercase; color:var(--text-dim); }
.nav-phone b{ font-size:.95rem; color:var(--gold); font-weight:700; }
.nav-cta .btn{ white-space:nowrap; padding:.85rem 1.4rem; font-size:.9rem; }
.btn-phone{ gap:.5rem; font-weight:700; letter-spacing:.01em; }
.btn-phone svg{ flex:0 0 auto; }
.burger{ display:none; flex-direction:column; gap:5px; background:none; border:0; cursor:pointer; padding:6px; }
.burger span{ width:26px; height:2px; background:var(--cream); transition:.3s; }

/* ---------- Hero ---------- */
.hero{ position:relative; min-height:100vh; display:flex; align-items:center; padding-top:120px; padding-bottom:60px; }
.hero-bg{ position:absolute; inset:0; z-index:0; }
.hero-slide{
  position:absolute; inset:0; width:100%; height:100%; object-fit:cover;
  filter:saturate(1.05) brightness(.96);
  opacity:0; transition:opacity 1.6s ease-in-out; transform:scale(1.06);
}
.hero-slide.is-active{ opacity:1; animation:heroZoom 7s ease-out forwards; }
@keyframes heroZoom{ from{ transform:scale(1.06);} to{ transform:scale(1.12);} }
.hero-bg::after{
  content:""; position:absolute; inset:0;
  background:
    radial-gradient(120% 100% at 15% 40%, rgba(20,17,11,.18), rgba(20,17,11,.5) 85%),
    linear-gradient(180deg, rgba(20,17,11,.14), rgba(20,17,11,.4));
}
.hero-inner{ position:relative; z-index:2; max-width:850px; }
.hero h1{ margin:1.4rem 0 1.6rem; color:#fff; }
.hero h1 em{ color:var(--gold-bright); font-style:italic; }
.hero .lead{ margin-bottom:2.4rem; color:rgba(255,255,255,.92); }
.hero .eyebrow{ color:var(--gold-bright); }
.hero-actions{ display:flex; gap:16px; flex-wrap:wrap; }
.hero-actions .btn-ghost{ border-color:rgba(255,255,255,.45); color:#fff; }
.hero-actions .btn-ghost:hover{ border-color:var(--gold-bright); color:var(--gold-bright); }
.hero-scroll{ position:absolute; bottom:34px; left:50%; transform:translateX(-50%); z-index:2; color:rgba(255,255,255,.7); font-size:.7rem; letter-spacing:.25em; text-transform:uppercase; display:flex; flex-direction:column; align-items:center; gap:10px; }
.hero-scroll::after{ content:""; width:1px; height:46px; background:linear-gradient(var(--gold),transparent); animation:pulse 2.2s infinite; }
@keyframes pulse{ 0%,100%{opacity:.3} 50%{opacity:1} }

/* ---------- Trust bar ---------- */
.trustbar{ border-top:1px solid var(--line); border-bottom:1px solid var(--line); background:var(--black-2); }
.trustbar .wrap{ display:grid; grid-template-columns:repeat(4,1fr); }
.trust-item{ padding:30px 22px; text-align:center; border-right:1px solid var(--line); }
.trust-item:last-child{ border-right:0; }
.trust-item b{ display:block; font-family:"Fraunces",serif; color:var(--gold); font-size:1.05rem; margin-bottom:3px; }
.trust-item span{ font-size:.82rem; color:var(--text-dim); }

/* ---------- Section heading block ---------- */
.sec-head{ max-width:680px; margin-bottom:56px; }
.sec-head.center{ margin-inline:auto; }
.sec-head h2{ margin:1.1rem 0 1rem; }

/* ---------- Services grid ---------- */
.svc-grid{ grid-template-columns:repeat(3,1fr); }
.svc-card{
  background:var(--black-2); border:1px solid var(--line); border-radius:4px;
  padding:36px 32px; position:relative; overflow:hidden;
  transition:transform .45s var(--ease), border-color .45s, background .45s;
}
.svc-card::before{
  content:""; position:absolute; top:0; left:0; width:100%; height:2px;
  background:linear-gradient(90deg,var(--gold),transparent); transform:scaleX(0); transform-origin:left;
  transition:transform .5s var(--ease);
}
.svc-card:hover{ transform:translateY(-6px); border-color:var(--gold-deep); background:var(--black-2); box-shadow:0 24px 50px -28px rgba(20,17,11,.4); }
.svc-card:hover::before{ transform:scaleX(1); }
.svc-num{ font-family:"Fraunces",serif; font-size:.9rem; color:var(--gold-deep); letter-spacing:.1em; }
.svc-card h3{ margin:18px 0 12px; }
.svc-card p{ font-size:.95rem; color:var(--text-dim); }
.svc-ico{ width:46px; height:46px; stroke:var(--gold); stroke-width:1.4; fill:none; margin-bottom:6px; }

/* ---------- Split (why / about) ---------- */
.split{ display:grid; grid-template-columns:1.05fr 1fr; gap:64px; align-items:center; }
.split-media{ position:relative; }
.split-media img{ width:100%; height:540px; object-fit:cover; border-radius:4px; filter:saturate(1.05) brightness(1.02); }
.split-media .frame{ position:absolute; inset:14px; border:1px solid rgba(255,255,255,.5); border-radius:4px; pointer-events:none; }
.split-media .badge{
  position:absolute; bottom:-26px; left:-26px; background:var(--ink); border:1px solid var(--gold-deep);
  padding:22px 26px; border-radius:4px; max-width:230px; box-shadow:0 24px 50px -24px rgba(20,17,11,.5);
}
.split-media .badge b{ font-family:"Fraunces",serif; color:var(--gold-bright); font-size:2.4rem; display:block; line-height:1; }
.split-media .badge span{ font-size:.82rem; color:rgba(255,255,255,.7); }
.vlist{ margin-top:26px; display:grid; gap:18px; }
.vlist li{ display:flex; gap:16px; align-items:flex-start; }
.vlist .vk{ flex:0 0 auto; width:30px; height:30px; border:1px solid var(--gold-deep); border-radius:50%; display:grid; place-items:center; color:var(--gold); font-size:.8rem; }
.vlist .vt b{ display:block; color:var(--cream); font-family:"Fraunces",serif; font-size:1.08rem; margin-bottom:2px; }
.vlist .vt span{ font-size:.92rem; color:var(--text-dim); }

/* ---------- What we catch ---------- */
.catch-grid{ grid-template-columns:repeat(3,1fr); }
.catch-card{ border-radius:14px; overflow:hidden; border:1px solid var(--line); background:#fff;
  transition:transform .4s var(--ease), box-shadow .4s; }
.catch-card:hover{ transform:translateY(-5px); box-shadow:0 26px 54px -30px rgba(20,17,11,.45); }
.catch-card img{ width:100%; height:230px; object-fit:cover; }
.catch-card figcaption{ padding:22px 24px; }
.catch-card figcaption b{ display:block; font-family:"Fraunces",serif; font-size:1.2rem; color:var(--ink); margin-bottom:6px; }
.catch-card figcaption span{ font-size:.92rem; color:var(--text-dim); }
@media(max-width:900px){ .catch-grid{ grid-template-columns:1fr; max-width:480px; margin-inline:auto; } }

/* ---------- Service area band ---------- */
.area{ background:var(--black-2); border-top:1px solid var(--line); border-bottom:1px solid var(--line); }
.area-cities{ display:flex; flex-wrap:wrap; gap:14px; margin-top:30px; }
.city-chip{
  display:inline-block; border:1px solid var(--line); border-radius:40px; padding:12px 24px;
  font-family:"Fraunces",serif; font-size:1.05rem; color:var(--cream); cursor:pointer;
  transition:.35s var(--ease);
}
.city-chip:hover{ border-color:var(--gold); color:var(--gold); transform:translateY(-2px); }
/* selected/current city */
.city-chip.lead-chip,
.city-chip.is-current{ background:var(--gold); color:#fff; border-color:var(--gold); }
.city-chip.is-current:hover{ color:#fff; transform:none; }
.city-chip.lead-chip{ background:var(--gold); color:var(--black); border-color:var(--gold); }

/* ---------- Process ---------- */
.steps{ grid-template-columns:repeat(3,1fr); counter-reset:step; }
.step{ position:relative; padding:40px 30px; border:1px solid var(--line); border-radius:4px; background:var(--black-2); }
.step .n{ font-family:"Fraunces",serif; font-size:3.4rem; color:var(--gold-deep); line-height:1; opacity:.55; }
.step h3{ margin:14px 0 10px; }
.step p{ color:var(--text-dim); font-size:.95rem; }

/* ---------- CTA band ---------- */
.cta{ position:relative; overflow:hidden; background:var(--ink); }
.cta-inner{ text-align:center; max-width:720px; margin:0 auto; position:relative; z-index:3; }
.cta h2{ margin-bottom:1.2rem; color:#fff; }
.cta .lead{ margin:0 auto 2.2rem; color:rgba(255,255,255,.9); }
.cta .eyebrow{ color:var(--gold-bright); }
.cta-glow{ position:absolute; width:600px; height:600px; border-radius:50%; background:radial-gradient(circle,rgba(199,168,94,.18),transparent 70%); top:-200px; left:50%; transform:translateX(-50%); pointer-events:none; z-index:1; }
.cta-bg{ position:absolute; inset:0; z-index:0; }
.cta-bg img{ width:100%; height:100%; object-fit:cover; filter:saturate(1.05) brightness(.62); }
.cta-bg::after{ content:""; position:absolute; inset:0;
  background:radial-gradient(120% 120% at 50% 0%, rgba(20,17,11,.42), rgba(20,17,11,.72) 85%); }
.cta .btn-ghost{ border-color:rgba(255,255,255,.45); color:#fff; }
.cta .btn-ghost:hover{ border-color:var(--gold-bright); color:var(--gold-bright); }

/* ---------- Page-hero background image ---------- */
.page-hero.has-bg{ background:var(--ink); }
.page-hero-bg{ position:absolute; inset:0; z-index:0; }
.page-hero-bg img{ width:100%; height:100%; object-fit:cover; filter:saturate(1.05) brightness(.74); }
.page-hero-bg::after{ content:""; position:absolute; inset:0;
  background:linear-gradient(180deg, rgba(20,17,11,.32), rgba(20,17,11,.62)),
             radial-gradient(110% 95% at 12% 35%, rgba(20,17,11,.18), rgba(20,17,11,.55) 85%); }
.page-hero.has-bg .wrap, .page-hero.has-bg h1, .page-hero.has-bg .lead{ position:relative; z-index:2; color:#fff; }
.page-hero.has-bg .lead{ color:rgba(255,255,255,.92); }
.page-hero.has-bg .eyebrow{ color:var(--gold-bright); }
.page-hero.has-bg .breadcrumb, .page-hero.has-bg .breadcrumb a{ color:rgba(255,255,255,.75); }
.page-hero.has-bg .lead a{ color:var(--gold-bright); }
.page-hero .wrap{ position:relative; z-index:2; }

/* ---------- Testimonials ---------- */
.quotes{ grid-template-columns:repeat(3,1fr); }
.quote{ background:var(--black-2); border:1px solid var(--line); border-radius:4px; padding:34px 30px; }
.quote .stars{ color:var(--gold); letter-spacing:3px; margin-bottom:16px; }
.quote p{ font-family:"Fraunces",serif; font-style:italic; font-size:1.1rem; color:var(--cream); line-height:1.5; }
.quote .who{ margin-top:20px; font-size:.85rem; color:var(--text-dim); }
.quote .who b{ color:var(--gold); font-style:normal; display:block; font-family:"Plus Jakarta Sans",sans-serif; }

/* ---------- Footer (all black, anchors the bright site) ---------- */
.footer{ background:#000; border-top:0; padding:70px 0 30px; }
.footer-grid{ display:grid; grid-template-columns:1.4fr 1fr 1fr 1.2fr; gap:40px; margin-bottom:50px; }
.footer .brand{ margin-bottom:18px; }
.footer .brand .bt b{ color:#fff; }
.footer .brand .bt span{ color:var(--gold-bright); }
.footer p{ font-size:.9rem; color:rgba(255,255,255,.55); max-width:34ch; }
.footer h4{ font-size:.78rem; letter-spacing:.2em; text-transform:uppercase; color:var(--gold-bright); margin-bottom:18px; }
.footer-links a{ display:block; font-size:.92rem; color:rgba(255,255,255,.6); padding:6px 0; transition:color .3s, padding-left .3s; }
.footer-links a:hover{ color:var(--gold-bright); padding-left:6px; }
.footer-contact a{ display:flex; gap:10px; font-size:.92rem; color:rgba(255,255,255,.78); padding:6px 0; }
.footer-bottom{ border-top:1px solid rgba(255,255,255,.12); padding-top:24px; display:flex; justify-content:space-between; gap:14px; flex-wrap:wrap; font-size:.8rem; color:rgba(255,255,255,.45); }

/* ---------- Page hero (inner pages) ---------- */
.page-hero{ padding:170px 0 70px; border-bottom:1px solid var(--line); position:relative; background:var(--black-2); }
.page-hero h1{ font-size:clamp(2.4rem,5vw,4rem); margin-top:1rem; }
.page-hero .lead{ margin-top:1.1rem; }
.breadcrumb{ font-size:.82rem; color:var(--text-dim); }
.breadcrumb a:hover{ color:var(--gold); }

/* ---------- Forms ---------- */
.form{ display:grid; gap:20px; }
.form-row{ display:grid; grid-template-columns:1fr 1fr; gap:20px; }
.field label{ display:block; font-size:.8rem; letter-spacing:.06em; text-transform:uppercase; color:var(--text-dim); margin-bottom:8px; }
.field input, .field select, .field textarea{
  width:100%; background:var(--black); border:1px solid var(--line); border-radius:3px;
  padding:14px 16px; color:var(--cream); font-family:inherit; font-size:.96rem; transition:border-color .3s;
}
.field input:focus, .field select:focus, .field textarea:focus{ outline:none; border-color:var(--gold); }
.field textarea{ min-height:130px; resize:vertical; }
.form-note{ font-size:.82rem; color:var(--text-dim); }
.form-status{ font-size:.92rem; padding:12px 16px; border-radius:3px; display:none; }
.form-status.ok{ display:block; background:rgba(219,202,154,.1); border:1px solid var(--gold-deep); color:var(--gold); }
.form-status.err{ display:block; background:rgba(220,80,80,.1); border:1px solid #a55; color:#e7a3a3; }

/* ---------- FAQ ---------- */
.faq-item{ border-bottom:1px solid var(--line); }
.faq-q{ width:100%; text-align:left; background:none; border:0; cursor:pointer; padding:26px 0; display:flex; justify-content:space-between; gap:20px; align-items:center; color:var(--cream); font-family:"Fraunces",serif; font-size:1.2rem; }
.faq-q .pm{ flex:0 0 auto; width:30px; height:30px; border:1px solid var(--gold-deep); border-radius:50%; display:grid; place-items:center; color:var(--gold); transition:.35s; }
.faq-item.open .pm{ transform:rotate(45deg); background:var(--gold); color:var(--black); }
.faq-a{ max-height:0; overflow:hidden; transition:max-height .45s var(--ease); }
.faq-a p{ padding:0 0 26px; color:var(--text-dim); max-width:70ch; }

/* ---------- Reveal animation ---------- */
[data-reveal]{ opacity:0; transform:translateY(26px); transition:opacity .8s var(--ease), transform .8s var(--ease); }
[data-reveal].in{ opacity:1; transform:none; }
[data-reveal][data-d="1"]{ transition-delay:.08s; }
[data-reveal][data-d="2"]{ transition-delay:.16s; }
[data-reveal][data-d="3"]{ transition-delay:.24s; }
[data-reveal][data-d="4"]{ transition-delay:.32s; }
[data-reveal][data-d="5"]{ transition-delay:.40s; }

/* ---------- Mobile menu panel ---------- */
.mobile-panel{ position:fixed; inset:0; z-index:60; background:var(--black); transform:translateX(100%); transition:transform .5s var(--ease); display:flex; flex-direction:column; padding:30px 28px; overflow-y:auto; }
.mobile-panel.open{ transform:none; }
.mobile-panel .mp-top{ display:flex; justify-content:space-between; align-items:center; margin-bottom:40px; }
.mp-close{ background:none; border:0; color:var(--ink); font-size:2rem; cursor:pointer; }
.mobile-panel a{ font-family:"Fraunces",serif; font-size:1.6rem; color:var(--text); padding:13px 0; border-bottom:1px solid var(--line); }
.mobile-panel a:hover{ color:var(--gold); }
/* mobile services accordion */
.mp-services .mp-sub{ max-height:0; overflow:hidden; transition:max-height .4s var(--ease); }
.mp-services.open .mp-sub{ max-height:420px; }
.mp-services .mp-sub a{ font-size:1.05rem; color:var(--text-dim); padding:10px 0 10px 16px; border-bottom:1px solid var(--line); }
#mpServicesToggle{ display:flex; justify-content:space-between; align-items:center; }
#mpServicesToggle .caret{ width:9px; height:9px; border-right:2px solid currentColor; border-bottom:2px solid currentColor; transform:rotate(45deg); transition:transform .3s; }
.mp-services.open #mpServicesToggle .caret{ transform:rotate(-135deg); }

/* ---------- Floating action buttons (call + email) ---------- */
.fab{ position:fixed; right:20px; bottom:22px; z-index:55; display:flex; flex-direction:column; gap:12px; }
.fab a{ width:54px; height:54px; border-radius:50%; display:grid; place-items:center;
  box-shadow:0 12px 28px -8px rgba(20,17,11,.45); transition:transform .3s var(--ease), box-shadow .3s; position:relative; }
.fab a svg{ width:24px; height:24px; }
.fab .fab-call{ background:var(--gold); color:#fff; }
.fab .fab-email{ background:var(--ink); color:#fff; }
.fab a:hover{ transform:translateY(-3px) scale(1.05); box-shadow:0 16px 34px -8px rgba(20,17,11,.55); }
.fab a .fab-label{ position:absolute; right:64px; top:50%; transform:translateY(-50%); white-space:nowrap;
  background:var(--ink); color:#fff; font-size:.78rem; padding:6px 12px; border-radius:6px;
  opacity:0; pointer-events:none; transition:opacity .25s; }
.fab a:hover .fab-label{ opacity:1; }
.fab .fab-call{ animation:fabpulse 2.6s infinite; }
@keyframes fabpulse{ 0%,100%{ box-shadow:0 12px 28px -8px rgba(20,17,11,.45),0 0 0 0 rgba(183,148,74,.5);} 50%{ box-shadow:0 12px 28px -8px rgba(20,17,11,.45),0 0 0 12px rgba(183,148,74,0);} }
@media(max-width:620px){ .fab a{ width:50px; height:50px; } .fab{ right:16px; bottom:16px; } }

/* ---------- Footer credit ---------- */
.footer-credit{ color:rgba(255,255,255,.4); }
.footer-credit a{ color:var(--gold-bright); transition:color .3s; }
.footer-credit a:hover{ color:#fff; }

/* ---------- Contact page ---------- */
.contact-strip{ display:grid; grid-template-columns:repeat(4,1fr); gap:18px; }
.contact-tile{ display:flex; flex-direction:column; align-items:flex-start; gap:6px;
  background:#fff; border:1px solid var(--line); border-radius:14px; padding:24px 22px;
  transition:transform .35s var(--ease), border-color .35s, box-shadow .35s; }
a.contact-tile:hover{ transform:translateY(-5px); border-color:var(--gold-deep); box-shadow:0 24px 50px -28px rgba(20,17,11,.4); }
.contact-tile .ct-ico{ font-size:1.5rem; margin-bottom:4px; }
.contact-tile b{ font-family:"Fraunces",serif; font-size:1.1rem; color:var(--ink); }
.contact-tile .ct-val{ font-size:.9rem; color:var(--text-dim); word-break:break-word; }
a.contact-tile:hover .ct-val{ color:var(--gold); }

.form-shell{ max-width:780px; margin:0 auto; background:#fff; border:1px solid var(--line);
  border-radius:20px; padding:clamp(28px,5vw,52px); box-shadow:0 40px 80px -50px rgba(20,17,11,.4); }
.form-shell-head{ text-align:center; margin-bottom:32px; }

@media(max-width:900px){ .contact-strip{ grid-template-columns:1fr 1fr; } }
@media(max-width:560px){ .contact-strip{ grid-template-columns:1fr; } }

/* ---------- Responsive ---------- */
@media(max-width:1080px){
  .menu, .nav-phone{ display:none; }
  .burger{ display:flex; }
}
@media(max-width:980px){
  .split{ grid-template-columns:1fr; gap:48px; }
  .split-media img{ height:420px; }
  .svc-grid, .steps, .quotes{ grid-template-columns:1fr 1fr; }
  .footer-grid{ grid-template-columns:1fr 1fr; }
  .trustbar .wrap{ grid-template-columns:1fr 1fr; }
  .trust-item:nth-child(2){ border-right:0; }
  .trust-item:nth-child(1),.trust-item:nth-child(2){ border-bottom:1px solid var(--line); }
}
@media(max-width:620px){
  .wrap{ padding:0 20px; }
  .svc-grid, .steps, .quotes, .form-row{ grid-template-columns:1fr; }
  .hero-actions{ flex-direction:column; }
  .hero-actions .btn{ width:100%; justify-content:center; }
  .split-media .badge{ left:0; bottom:-20px; }
}
