/* ==========================================================================
   BEACON PLUMBING CO. — Demo template stylesheet
   Design concept: a working blueprint. Copper "pipe" line runs the spine of
   every page; each section carries a spec-tag callout (like a margin note
   on a schematic) explaining what the section is for and why it's there —
   this is a sales demo, so the annotations are part of the deliverable.
   ========================================================================== */

@import url('https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght@9..144,400;9..144,500;9..144,600;9..144,700&family=Work+Sans:wght@400;500;600&family=IBM+Plex+Mono:wght@400;500&display=swap');

:root{
  --navy: #16324F;
  --navy-deep: #0E2137;
  --paper: #F5F1E6;
  --paper-dim: #ECE6D6;
  --copper: #C1662F;
  --copper-deep: #8F4A22;
  --copper-light: #E2A06C;
  --slate: #5B6B74;
  --line: #D8CFB6;
  --ink: #22221F;
  --white: #FFFFFF;

  --display: 'Fraunces', serif;
  --body: 'Work Sans', sans-serif;
  --mono: 'IBM Plex Mono', monospace;
}

*, *::before, *::after{ box-sizing: border-box; }
html{ scroll-behavior: smooth; }
body{
  margin:0;
  background: var(--paper);
  color: var(--ink);
  font-family: var(--body);
  line-height: 1.5;
  -webkit-font-smoothing: antialiased;
}
img{ max-width:100%; display:block; }
a{ color: inherit; text-decoration: none; }
h1,h2,h3,h4{ font-family: var(--display); margin:0; color: var(--navy); font-weight: 600; }
p{ margin:0; }
ul{ margin:0; padding:0; list-style:none; }
:focus-visible{ outline: 2px solid var(--copper); outline-offset: 3px; }

.wrap{
  max-width: 1120px;
  margin: 0 auto;
  padding: 0 32px;
}
.eyebrow{
  font-family: var(--mono);
  font-size: 12px;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--copper-deep);
}

/* ---------- Blueprint spine (signature element) ---------- */
.blueprint-spine{
  position: fixed;
  top:0; left:0; bottom:0;
  width: 26px;
  z-index: 5;
  pointer-events: none;
}
.blueprint-spine svg{ height: 100%; width: 100%; }
@media (max-width: 860px){ .blueprint-spine{ display:none; } }

/* ---------- Spec-tag annotations ---------- */
.section{ position: relative; }
.spec-tag{
  position: absolute;
  top: 22px;
  left: 44px;
  max-width: 230px;
  font-family: var(--mono);
  font-size: 11px;
  line-height: 1.45;
  color: var(--slate);
  background: transparent;
  z-index: 3;
}
.spec-tag .tag-id{
  display:inline-block;
  color: var(--white);
  background: var(--copper);
  padding: 2px 7px;
  margin-bottom: 6px;
  letter-spacing: .06em;
}
.spec-tag .tag-goal{ color: var(--slate); }
.spec-tag .tag-goal b{ color: var(--navy-deep); font-weight: 600; }
@media (max-width: 980px){
  .spec-tag{ position: static; max-width: none; margin: 0 0 18px; padding: 10px 14px; border-left: 3px solid var(--copper); background: var(--paper-dim); }
}
.section-inner{ padding-left: 0; }
@media (min-width: 981px){
  .section-inner{ padding-left: 258px; }
  .section-inner.no-indent{ padding-left: 0; }
}

/* ---------- Header ---------- */
.site-header{
  position: sticky; top:0; z-index: 20;
  background: rgba(245,241,230,.92);
  backdrop-filter: blur(6px);
  border-bottom: 1px solid var(--line);
}
.site-header .wrap{
  display:flex; align-items:center; justify-content:space-between;
  padding: 16px 32px;
}
.logo{ display:flex; align-items:center; gap:10px; font-family: var(--display); font-weight:700; font-size:20px; color: var(--navy-deep); }
.logo .mark{ width:30px; height:30px; }
.logo .mark svg{ width:100%; height:100%; }
.nav-menu{ display:flex; align-items:center; gap:34px; }
.nav-menu a{
  font-family: var(--mono); font-size:13px; letter-spacing:.04em; text-transform:uppercase;
  color: var(--navy); position:relative; padding: 4px 0;
}
.nav-menu a.active{ color: var(--copper-deep); }
.nav-menu a.active::after{
  content:''; position:absolute; left:0; right:0; bottom:-2px; height:2px; background: var(--copper);
}
.nav-menu a:hover{ color: var(--copper-deep); }
.header-actions{ display:flex; align-items:center; gap:18px; }
.phone-link{ font-family: var(--mono); font-size:13px; color:var(--navy); white-space:nowrap; }
.btn{
  display:inline-flex; align-items:center; gap:8px;
  font-family: var(--body); font-weight:600; font-size:14px;
  padding: 12px 22px; border-radius: 2px; cursor:pointer; border:none;
  transition: transform .15s ease, background .15s ease;
}
.btn-primary{ background: var(--copper); color: var(--white); }
.btn-primary:hover{ background: var(--copper-deep); transform: translateY(-1px); }
.btn-ghost{ background: transparent; color: var(--navy); border: 1px solid var(--navy); }
.btn-ghost:hover{ background: var(--navy); color: var(--white); }
.btn-sm{ padding: 9px 16px; font-size: 13px; }
.nav-toggle{ display:none; background:none; border:none; cursor:pointer; }
@media (max-width: 860px){
  .nav-menu{ display:none; }
  .phone-link{ display:none; }
  .nav-toggle{ display:block; }
  .site-header.open .nav-menu{
    display:flex; flex-direction:column; align-items:flex-start; gap:0;
    position:absolute; top:100%; left:0; right:0; background: var(--paper);
    border-bottom:1px solid var(--line); padding: 8px 32px 20px;
  }
  .site-header.open .nav-menu a{ padding: 12px 0; width:100%; border-bottom:1px solid var(--line); }
}

/* ---------- Hero ---------- */
.hero{ padding: 76px 0 88px; overflow:hidden; }
.hero-grid{ display:grid; grid-template-columns: 1.1fr .9fr; gap: 56px; align-items:center; }
.hero h1{ font-size: clamp(38px, 5vw, 58px); line-height: 1.05; letter-spacing:-.01em; }
.hero .lede{ font-size:18px; color: var(--slate); margin-top:18px; max-width: 46ch; }
.hero-cta-row{ display:flex; align-items:center; gap:20px; margin-top:32px; flex-wrap:wrap; }
.hero-note{ font-family: var(--mono); font-size:12px; color: var(--slate); }
.hero-visual{
  position:relative; border-radius: 3px; overflow:hidden;
  aspect-ratio: 4/3.1; background: var(--navy);
}
.hero-visual svg{ width:100%; height:100%; display:block; }
.hero-visual figcaption{
  position:absolute; bottom:0; left:0; right:0;
  font-family: var(--mono); font-size:11px; color: var(--paper);
  background: linear-gradient(180deg, transparent, rgba(14,33,55,.85));
  padding: 30px 18px 12px;
}
@media (max-width: 860px){ .hero-grid{ grid-template-columns: 1fr; } }

/* ---------- Benefit cards ---------- */
.benefits{ padding: 60px 0; background: var(--paper-dim); }
.card-row{ display:grid; grid-template-columns: repeat(3,1fr); gap: 24px; }
.benefit-card{
  background: var(--white); border: 1px solid var(--line); padding: 30px 26px;
  border-top: 3px solid var(--copper);
}
.benefit-card .icon{ width:34px; height:34px; margin-bottom:16px; color: var(--copper-deep); }
.benefit-card h3{ font-size:19px; margin-bottom:8px; }
.benefit-card p{ color: var(--slate); font-size: 14.5px; }
@media (max-width: 760px){ .card-row{ grid-template-columns:1fr; } }

/* ---------- Section headers ---------- */
.section-head{ margin-bottom: 40px; }
.section-head h2{ font-size: clamp(28px, 3.4vw, 38px); margin-top: 8px; }
.section-head .lede{ color: var(--slate); font-size:16px; margin-top:10px; max-width:60ch; }

/* ---------- Services overview (home teaser) ---------- */
.services-teaser{ padding: 70px 0; }
.teaser-grid{ display:grid; grid-template-columns: repeat(4, 1fr); gap: 18px; }
.teaser-card{
  border:1px solid var(--line); background: var(--white); padding: 22px;
  transition: border-color .15s ease, transform .15s ease;
}
.teaser-card:hover{ border-color: var(--copper); transform: translateY(-3px); }
.teaser-card .num{ font-family: var(--mono); font-size:12px; color: var(--copper); }
.teaser-card h4{ font-size:17px; margin: 10px 0 8px; }
.teaser-card p{ font-size:13.5px; color:var(--slate); }
.teaser-card .link{ font-family: var(--mono); font-size:12px; margin-top:14px; display:inline-block; color: var(--navy); border-bottom:1px solid var(--copper); }
@media (max-width: 900px){ .teaser-grid{ grid-template-columns: repeat(2,1fr); } }
@media (max-width: 560px){ .teaser-grid{ grid-template-columns: 1fr; } }

/* ---------- Testimonials ---------- */
.testimonials{ padding: 70px 0; background: var(--navy-deep); color: var(--paper); }
.testimonials .eyebrow{ color: var(--copper-light); }
.testimonials .section-head h2{ color: var(--white); }
.testimonials .section-head .lede{ color: #BFCBD3; }
.quote-row{ display:grid; grid-template-columns: repeat(3,1fr); gap: 24px; }
.quote-card{ background: rgba(255,255,255,.05); border: 1px solid rgba(255,255,255,.14); padding: 26px; }
.quote-card p.quote{ font-family: var(--display); font-size:17px; line-height:1.4; color: var(--paper); }
.quote-card .who{ margin-top:18px; font-family: var(--mono); font-size:12px; color: var(--copper-light); }
.stars{ color: var(--copper-light); font-size:13px; letter-spacing:2px; margin-bottom:14px; }
@media (max-width: 860px){ .quote-row{ grid-template-columns:1fr; } }

/* ---------- CTA banner ---------- */
.cta-banner{ padding: 60px 0; }
.cta-banner .inner{
  background: var(--copper); color: var(--white);
  padding: 46px 48px; display:flex; align-items:center; justify-content:space-between; gap:30px; flex-wrap:wrap;
  border-radius: 2px;
}
.cta-banner h3{ color: var(--white); font-size: 26px; }
.cta-banner p{ color: rgba(255,255,255,.85); margin-top:6px; }
.cta-banner .btn-ghost{ border-color: var(--white); color: var(--white); }
.cta-banner .btn-ghost:hover{ background: var(--white); color: var(--copper-deep); }

/* ---------- Page header (interior pages) ---------- */
.page-header{ padding: 58px 0 40px; border-bottom: 1px solid var(--line); }
.page-header h1{ font-size: clamp(32px,4.2vw,46px); }
.page-header .lede{ color: var(--slate); margin-top: 14px; max-width: 56ch; font-size:16.5px; }

/* ---------- Service breakdown ---------- */
.service-list{ padding: 60px 0; display:flex; flex-direction:column; gap: 26px; }
.service-block{
  display:grid; grid-template-columns: 1fr 1.6fr; gap: 34px;
  border: 1px solid var(--line); background: var(--white); padding: 34px;
}
.service-block .meta{ font-family: var(--mono); font-size:12px; color: var(--copper-deep); margin-bottom:10px; }
.service-block h3{ font-size: 24px; margin-bottom: 12px; }
.service-block .outcome{ color: var(--slate); margin-bottom:16px; }
.service-block ul.features{ display:flex; flex-direction:column; gap:8px; margin-bottom: 18px; }
.service-block ul.features li{ font-size:14px; padding-left:18px; position:relative; color: var(--ink); }
.service-block ul.features li::before{ content:'—'; position:absolute; left:0; color: var(--copper); }
.price-tag{
  display:inline-block; font-family: var(--mono); font-size:13px;
  border:1px dashed var(--copper); padding: 8px 14px; color: var(--copper-deep);
}
@media (max-width: 820px){ .service-block{ grid-template-columns: 1fr; } }

/* ---------- Process steps ---------- */
.process{ padding: 60px 0; background: var(--paper-dim); }
.step-row{ display:grid; grid-template-columns: repeat(3,1fr); gap:26px; position:relative; }
.step{ background: var(--white); border:1px solid var(--line); padding:30px; position:relative; }
.step .step-num{ font-family: var(--display); font-size:40px; color: var(--copper-light); line-height:1; }
.step h4{ margin: 14px 0 8px; font-size:18px; }
.step p{ color: var(--slate); font-size:14px; }
@media (max-width: 820px){ .step-row{ grid-template-columns:1fr; } }

/* ---------- FAQ ---------- */
.faq{ padding: 60px 0; }
.faq-item{ border-bottom: 1px solid var(--line); }
.faq-item summary{
  cursor:pointer; padding: 22px 0; font-family: var(--display); font-size: 18px; color: var(--navy);
  display:flex; justify-content:space-between; align-items:center; list-style:none;
}
.faq-item summary::-webkit-details-marker{ display:none; }
.faq-item summary::after{ content:'+'; font-family: var(--mono); font-size:22px; color: var(--copper); }
.faq-item[open] summary::after{ content:'–'; }
.faq-item .a{ padding: 0 0 24px; color: var(--slate); max-width: 68ch; font-size:15px; }

/* ---------- About: story / team ---------- */
.story{ padding: 64px 0; }
.story-grid{ display:grid; grid-template-columns: 1fr 1fr; gap: 54px; align-items:center; }
.story h2{ font-size: clamp(26px,3.2vw,36px); margin-bottom:16px; }
.story p{ color: var(--slate); margin-bottom:14px; font-size:15.5px; }
.story-visual{ aspect-ratio: 5/4; background: var(--navy); border-radius:2px; overflow:hidden; }
.story-visual svg{ width:100%; height:100%; }
@media (max-width: 860px){ .story-grid{ grid-template-columns:1fr; } }

.team{ padding: 60px 0; background: var(--paper-dim); }
.team-row{ display:grid; grid-template-columns: repeat(3,1fr); gap:24px; }
.team-card{ background: var(--white); border:1px solid var(--line); }
.team-photo{ aspect-ratio: 1/1; background: var(--navy); }
.team-photo svg{ width:100%; height:100%; }
.team-card .info{ padding: 20px; }
.team-card h4{ font-size:17px; }
.team-card .role{ font-family: var(--mono); font-size:11.5px; color: var(--copper-deep); margin: 4px 0 10px; text-transform:uppercase; letter-spacing:.05em; }
.team-card p.bio{ font-size:13.5px; color: var(--slate); }
@media (max-width: 820px){ .team-row{ grid-template-columns:1fr; } }

.credentials{ padding: 60px 0; }
.badge-row{ display:grid; grid-template-columns: repeat(4,1fr); gap:20px; }
.badge{ border:1px solid var(--line); padding: 24px 18px; text-align:center; background: var(--white); }
.badge .icon{ width:30px; height:30px; margin: 0 auto 12px; color: var(--copper); }
.badge h5{ font-family: var(--display); font-size:15px; color: var(--navy); margin-bottom:4px; }
.badge p{ font-size:12px; color: var(--slate); }
@media (max-width: 820px){ .badge-row{ grid-template-columns: repeat(2,1fr); } }

.case-study{ padding: 64px 0; background: var(--navy-deep); color: var(--paper); }
.case-study .eyebrow{ color: var(--copper-light); }
.case-grid{ display:grid; grid-template-columns: .9fr 1.1fr; gap: 44px; align-items:center; }
.case-grid h2{ color: var(--white); font-size: clamp(24px,3vw,32px); margin-bottom:16px; }
.case-grid p{ color:#C6CFD5; margin-bottom: 14px; font-size:15px; }
.case-stats{ display:flex; gap: 30px; margin-top: 22px; }
.case-stats div b{ font-family: var(--display); font-size:28px; color: var(--copper-light); display:block; }
.case-stats div span{ font-family: var(--mono); font-size:11px; color:#9FB0B9; }
.case-visual{ aspect-ratio: 4/3; background: rgba(255,255,255,.06); border:1px solid rgba(255,255,255,.15); }
.case-visual svg{ width:100%; height:100%; }
@media (max-width: 860px){ .case-grid{ grid-template-columns:1fr; } }

/* ---------- Contact page ---------- */
.contact-grid{ padding: 60px 0 80px; display:grid; grid-template-columns: 1fr 1fr; gap: 54px; }
.contact-form{ display:flex; flex-direction:column; gap:18px; }
.field label{ display:block; font-family: var(--mono); font-size:12px; color: var(--slate); margin-bottom:6px; text-transform:uppercase; letter-spacing:.04em; }
.field input, .field select, .field textarea{
  width:100%; border:1px solid var(--line); background: var(--white); padding: 12px 14px;
  font-family: var(--body); font-size:14.5px; color: var(--ink); border-radius:2px;
}
.field textarea{ resize: vertical; min-height:110px; }
.field input:focus, .field select:focus, .field textarea:focus{ border-color: var(--copper); }
.form-note{ font-family: var(--mono); font-size:11.5px; color: var(--slate); }

.contact-info{ display:flex; flex-direction:column; gap: 26px; }
.info-block{ border-left: 3px solid var(--copper); padding-left: 18px; }
.info-block .label{ font-family: var(--mono); font-size:11.5px; text-transform:uppercase; color: var(--copper-deep); letter-spacing:.05em; margin-bottom:6px; }
.info-block .value{ font-size:15.5px; }
.hours-table{ width:100%; border-collapse:collapse; font-size:14px; }
.hours-table td{ padding: 4px 0; color: var(--slate); }
.hours-table td:last-child{ text-align:right; color: var(--ink); font-family: var(--mono); font-size:13px; }

.map-block{ padding: 0 0 70px; }
.map-visual{ border:1px solid var(--line); background: var(--white); aspect-ratio: 16/6; }
.map-visual svg{ width:100%; height:100%; }
@media (max-width: 860px){ .contact-grid{ grid-template-columns:1fr; } .map-visual{ aspect-ratio: 4/5;} }

.next-steps{ padding: 0 0 70px; }
.next-card{ background: var(--paper-dim); border:1px dashed var(--copper); padding: 24px 30px; display:flex; align-items:center; gap:18px; }
.next-card .icon{ width:26px; height:26px; color: var(--copper-deep); flex-shrink:0; }
.next-card p{ font-size:14.5px; color: var(--slate); }
.next-card p b{ color: var(--navy); }

/* ---------- Footer ---------- */
.site-footer{ background: var(--navy-deep); color: var(--paper); padding: 56px 0 26px; margin-left: 0; }
.footer-grid{ display:grid; grid-template-columns: 1.4fr 1fr 1fr 1fr; gap: 40px; padding-bottom: 36px; border-bottom: 1px solid rgba(255,255,255,.12); }
.footer-grid .logo{ color: var(--white); }
.footer-grid p.tag{ color:#9FB0B9; font-size:13.5px; margin-top:12px; max-width:30ch; }
.footer-col h5{ font-family: var(--mono); font-size:11.5px; letter-spacing:.08em; text-transform:uppercase; color: var(--copper-light); margin-bottom:14px; }
.footer-col ul{ display:flex; flex-direction:column; gap:10px; }
.footer-col a{ color:#C6CFD5; font-size:14px; }
.footer-col a:hover{ color: var(--white); }
.footer-bottom{ display:flex; justify-content:space-between; align-items:center; padding-top: 22px; flex-wrap:wrap; gap:14px; }
.footer-bottom p{ font-size:12.5px; color:#8494A0; }
.social-icons{ display:flex; gap:14px; }
.social-icons a{ width:32px; height:32px; border:1px solid rgba(255,255,255,.2); border-radius:50%; display:flex; align-items:center; justify-content:center; }
.social-icons svg{ width:15px; height:15px; }
.social-icons a:hover{ border-color: var(--copper-light); }

/* ---------- Demo notice ---------- */
.demo-banner{
  background: var(--ink); color: var(--paper); font-family: var(--mono); font-size:12px;
  text-align:center; padding: 9px 16px;
}
.demo-banner b{ color: var(--copper-light); }
