/* ═══════════════════════════════════════════
   BOUNDLESS TINY HOMES — SHARED STYLES
   boundlesstinyhomes.com
═══════════════════════════════════════════ */

*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
:root {
  --amber:     #c6916d;
  --amber-d:   #b07858;
  --amber-dd:  #7a4e2e;
  --amber-lt:  #ddb99d;
  --amber-xlt: #f0ddd3;
  --amber-bg:  #faf3ee;
  --forest:    #1C3A2E;
  --forest-2:  #24503E;
  --forest-3:  #2E6B52;
  --sage:      #6BB5A0;
  --cream:     #f4f4eb;
  --paper:     #FAFAF6;
  --ink:       #1a1a1a;
  --mid:       #6a6460;
  --faint:     #a09890;
  --hairline:  #e2dbd2;
  --hairline-d:#cfc5bb;
  --footer-bg: #0e1b12;
}
html { scroll-behavior: smooth; }
body { font-family: 'DM Sans', sans-serif; font-size: 16px; font-weight: 500; color: var(--ink); background: var(--amber-bg); overflow-x: hidden; line-height: 1.6; -webkit-font-smoothing: antialiased; }

/* ── SCROLL REVEAL ─────────────────────────── */
.sr { opacity: 0; transform: translateY(18px); transition: opacity 0.65s ease, transform 0.65s ease; }
.sr.on { opacity: 1; transform: none; }
.d1 { transition-delay: 0.1s; } .d2 { transition-delay: 0.2s; }
.d3 { transition-delay: 0.3s; } .d4 { transition-delay: 0.4s; }

/* ── SHARED INNER WRAPPER ──────────────────── */
.inner { max-width: 1440px; margin: 0 auto; padding: 0 64px; }

/* ── UTILITIES ─────────────────────────────── */
.eyebrow { font-size: 15px; font-weight: 700; letter-spacing: 0.2em; text-transform: uppercase; color: var(--amber); font-family: 'DM Mono', monospace; margin-bottom: 14px; display: block; }
.eyebrow.light { color: rgba(255,255,255,0.6); }
.s-title { font-size: clamp(34px, 3.4vw, 48px); font-weight: 700; color: var(--forest); letter-spacing: -0.035em; line-height: 1.05; margin-bottom: 16px; }
.s-title.white { color: white; }
.s-body { font-size: 18px; color: var(--mid); line-height: 1.8; }
.s-body.light { color: rgba(255,255,255,0.5); }

/* Buttons */
.btn-white { display: inline-flex; align-items: center; gap: 8px; background: white; color: var(--amber-dd); font-size: 17px; font-weight: 700; padding: 16px 32px; border-radius: 3px; text-decoration: none; transition: opacity 0.16s; }
.btn-white:hover { opacity: 0.88; }
.btn-amber { display: inline-flex; align-items: center; gap: 8px; background: var(--amber); color: white; font-size: 17px; font-weight: 700; padding: 16px 32px; border-radius: 3px; text-decoration: none; transition: background 0.16s; }
.btn-amber:hover { background: var(--amber-d); }
.btn-forest { display: inline-flex; align-items: center; gap: 8px; background: var(--forest); color: white; font-size: 17px; font-weight: 700; padding: 16px 32px; border-radius: 3px; text-decoration: none; transition: background 0.16s; }
.btn-forest:hover { background: var(--forest-2); }

/* ── NAV ───────────────────────────────────── */
nav {
  position: fixed; top: 0; left: 0; right: 0; z-index: 200;
  height: 88px; display: flex; align-items: center;
  padding: 0 56px; background: var(--amber);
  border-bottom: 1px solid rgba(0,0,0,0.07);
}
.nav-inner { width: 100%; max-width: 1440px; margin: 0 auto; display: flex; align-items: stretch; justify-content: space-between; height: 100%; }
.nav-logo { display: flex; align-items: center; }
.nav-logo img { height: 48px; width: auto; display: block; filter: brightness(0) invert(1); opacity: 0.93; }
.nav-links { display: flex; align-items: stretch; gap: 0; list-style: none; }
.nav-links li { display: flex; position: relative; }
.nav-links a { display: flex; align-items: center; font-size: 17px; font-weight: 500; color: rgba(255,255,255,0.8); text-decoration: none; letter-spacing: 0.01em; transition: color 0.18s, background 0.18s; padding: 0 18px; }
.nav-links a:hover { color: white; background: rgba(255,255,255,0.12); }
.nav-phone { font-family: 'DM Mono', monospace !important; font-size: 17px !important; color: white !important; font-weight: 700 !important; letter-spacing: 0.02em !important; }
.nav-phone:hover { background: rgba(255,255,255,0.12) !important; }
.nav-right { display: flex; align-items: center; gap: 8px; padding-left: 16px; }
.nav-cta {
  background: white; color: var(--amber-dd);
  padding: 14px 22px; border-radius: 3px;
  font-weight: 700; font-size: 16px;
  white-space: nowrap; letter-spacing: -0.01em;
  text-decoration: none; display: inline-flex; align-items: center; gap: 8px;
  transition: background 0.18s, color 0.18s, box-shadow 0.18s;
  box-shadow: 0 0 0 2px rgba(255,255,255,0.35);
}
.nav-cta::before {
  content: '✓';
  font-size: 14px; font-weight: 700;
  background: var(--forest); color: white;
  width: 18px; height: 18px; border-radius: 50%;
  display: inline-flex; align-items: center; justify-content: center;
  flex-shrink: 0;
}
.nav-cta:hover { background: var(--forest); color: white; box-shadow: 0 0 0 2px rgba(255,255,255,0.15); }
.nav-cta:hover::before { background: var(--amber); }
.nav-contact-btn {
  display: none; align-items: center; gap: 6px;
  padding: 9px 14px; border-radius: 3px;
  font-size: 15px; font-weight: 700; letter-spacing: 0.02em;
  color: rgba(255,255,255,0.85); text-decoration: none;
  background: rgba(255,255,255,0.1); border: 1px solid rgba(255,255,255,0.18);
  transition: background 0.18s, color 0.18s;
  white-space: nowrap;
}
.nav-contact-btn:hover { background: rgba(255,255,255,0.2); color: white; }

/* ── NAV DROPDOWNS ─────────────────────────── */
.nav-links li.has-dropdown > a::after {
  content: '';
  display: inline-block;
  width: 0; height: 0;
  border-left: 4px solid transparent;
  border-right: 4px solid transparent;
  border-top: 5px solid rgba(255,255,255,0.6);
  margin-left: 7px;
  transition: transform 0.18s;
}
.nav-links li.has-dropdown:hover > a::after { transform: rotate(180deg); }
.nav-dropdown {
  position: absolute; top: 100%; left: 0;
  min-width: 220px;
  background: var(--forest);
  border-radius: 0 0 4px 4px;
  border: 1px solid rgba(255,255,255,0.08);
  border-top: 2px solid var(--amber);
  padding: 8px 0;
  opacity: 0; pointer-events: none;
  transform: translateY(-6px);
  transition: opacity 0.18s, transform 0.18s;
  z-index: 300;
}
.nav-links li.has-dropdown:hover .nav-dropdown { opacity: 1; pointer-events: all; transform: translateY(0); }
.nav-dropdown a {
  display: block; padding: 11px 20px;
  font-size: 14.5px; font-weight: 500;
  color: rgba(255,255,255,0.7);
  text-decoration: none; background: none;
  transition: background 0.14s, color 0.14s;
  border-radius: 0; margin: 0; white-space: nowrap;
}
.nav-dropdown a:hover { background: rgba(255,255,255,0.07); color: white; }
.nav-dropdown-divider { height: 1px; background: rgba(255,255,255,0.07); margin: 6px 0; }

/* ── HAMBURGER + MOBILE MENU ───────────────── */
.nav-hamburger {
  display: none;
  flex-shrink: 0;
  align-self: center;
  flex-direction: column;
  justify-content: center;
  gap: 5px;
  background: none; border: none; cursor: pointer;
  padding: 10px; margin-left: 8px;
  width: 44px; height: 44px;
}
.nav-hamburger span { display: block; width: 22px; height: 2px; background: white; border-radius: 2px; transition: transform 0.22s, opacity 0.22s; }
.nav-hamburger.open span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.nav-hamburger.open span:nth-child(2) { opacity: 0; }
.nav-hamburger.open span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }

.mobile-menu {
  display: none; position: fixed; top: 88px; left: 0; right: 0; bottom: 0;
  background: var(--forest); z-index: 199; overflow-y: auto;
  padding: 24px 28px 56px; flex-direction: column;
}
.mobile-menu.open { display: flex; }
.mobile-menu a { font-size: 17px; font-weight: 600; color: rgba(255,255,255,0.72); text-decoration: none; padding: 15px 0; border-bottom: 1px solid rgba(255,255,255,0.07); display: block; transition: color 0.15s; }
.mobile-menu a:hover { color: white; }
.mobile-menu-section { font-size: 14px; font-family: 'DM Mono', monospace; font-weight: 700; letter-spacing: 0.2em; text-transform: uppercase; color: rgba(255,255,255,0.28); padding: 22px 0 6px; }
.mobile-menu-cta { margin-top: 24px; background: white; color: var(--amber-dd) !important; font-size: 17px; font-weight: 700; padding: 17px 24px; border-radius: 3px; text-align: center; border-bottom: none !important; display: block; }
.mobile-menu-cta:hover { background: var(--amber-xlt) !important; }
.mobile-menu-item-featured { font-size: 18px !important; font-weight: 700 !important; color: white !important; border-bottom: 2px solid rgba(255,255,255,0.14) !important; padding: 18px 0 !important; }
.mobile-contact-btns { display: flex !important; gap: 10px; margin-top: 10px; }
.mobile-contact-btn { flex: 1; display: flex !important; align-items: center; justify-content: center; gap: 8px; padding: 15px 16px; border-radius: 3px; font-size: 16px; font-weight: 700; text-decoration: none; border-bottom: none !important; transition: background 0.18s, color 0.18s; }
.mobile-contact-btn-call { background: rgba(255,255,255,0.08); color: white !important; border: 1px solid rgba(255,255,255,0.15); }
.mobile-contact-btn-call:hover { background: rgba(255,255,255,0.14); color: white !important; }
.mobile-contact-btn-text { background: rgba(255,255,255,0.08); color: white !important; border: 1px solid rgba(255,255,255,0.15); }
.mobile-contact-btn-text:hover { background: rgba(255,255,255,0.14); color: white !important; }

/* ── MARQUEE ───────────────────────────────── */
.marquee { background: var(--forest); overflow: hidden; padding: 13px 0; }
.marquee-inner { display: inline-flex; animation: ticker 30s linear infinite; white-space: nowrap; }
.m-item { display: inline-flex; align-items: center; gap: 16px; padding: 0 22px; font-size: 14px; font-weight: 700; letter-spacing: 0.18em; text-transform: uppercase; color: rgba(255,255,255,0.32); font-family: 'DM Mono', monospace; }
.m-dot { width: 3px; height: 3px; border-radius: 50%; background: var(--amber); opacity: 0.6; flex-shrink: 0; }
@keyframes ticker { from { transform: translateX(0); } to { transform: translateX(-50%); } }

/* ── FOOTER ────────────────────────────────── */
footer { background: var(--footer-bg); }
.footer-inner { max-width: 1440px; margin: 0 auto; }
.footer-top { display: grid; grid-template-columns: 2.2fr 1fr 1fr 1fr; gap: 64px; padding: 80px 72px 60px; border-bottom: 1px solid rgba(255,255,255,0.06); }
.footer-brand { display: flex; flex-direction: column; }
.footer-logo { margin-bottom: 24px; }
.footer-logo img { height: 32px; width: auto; display: block; object-fit: contain; object-position: left center; filter: brightness(0) invert(1); opacity: 0.55; }
.footer-tagline { font-size: 15px; color: rgba(255,255,255,0.28); line-height: 1.82; max-width: 300px; margin-bottom: 28px; }
.footer-contact-block { display: flex; flex-direction: column; gap: 8px; }
.footer-contact-block a { font-size: 15px; font-family: 'DM Mono', monospace; color: rgba(255,255,255,0.35); text-decoration: none; transition: color 0.18s; letter-spacing: 0.02em; }
.footer-contact-block a:hover { color: rgba(255,255,255,0.65); }
.f-col-head { font-size: 13px; font-family: 'DM Mono', monospace; font-weight: 700; letter-spacing: 0.18em; text-transform: uppercase; color: rgba(255,255,255,0.28); margin-bottom: 22px; }
.f-links { list-style: none; display: flex; flex-direction: column; gap: 13px; }
.f-links a { font-size: 16px; color: rgba(255,255,255,0.42); text-decoration: none; transition: color 0.18s; line-height: 1.4; }
.f-links a:hover { color: rgba(255,255,255,0.78); }
.footer-bottom { display: flex; justify-content: space-between; align-items: center; padding: 22px 72px; }
.footer-copy { font-size: 14px; font-family: 'DM Mono', monospace; color: rgba(255,255,255,0.18); letter-spacing: 0.04em; }
.footer-legal { display: flex; gap: 28px; }
.footer-legal a { font-size: 14px; font-family: 'DM Mono', monospace; color: rgba(255,255,255,0.18); text-decoration: none; transition: color 0.18s; }
.footer-legal a:hover { color: rgba(255,255,255,0.45); }

/* ── PAGE HERO (interior pages) ────────────── */
.page-hero {
  padding-top: 88px; position: relative;
  min-height: 420px; display: flex; align-items: flex-end; overflow: hidden;
  background: var(--forest);
}
.page-hero-bg { position: absolute; inset: 0; z-index: 0; }
.page-hero-grid { position: absolute; inset: 0; width: 100%; height: 100%; z-index: 1; pointer-events: none; }
.page-hero-bg img { width: 100%; height: 100%; object-fit: cover; object-position: center 40%; display: block; }
.page-hero-bg::after {
  content: ''; position: absolute; inset: 0;
  background: linear-gradient(105deg, rgba(28,58,46,0.92) 0%, rgba(28,58,46,0.72) 50%, rgba(28,58,46,0.3) 100%);
}
.page-hero-content {
  position: relative; z-index: 2;
  width: 100%; max-width: 1440px; margin: 0 auto;
  padding: 64px 72px;
}
.page-hero-kicker { display: flex; align-items: center; gap: 14px; margin-bottom: 20px; }
.page-hero-kicker-line { width: 28px; height: 2px; background: var(--sage); flex-shrink: 0; }
.page-hero-kicker-text { font-size: 14px; font-weight: 700; letter-spacing: 0.2em; text-transform: uppercase; color: var(--sage); font-family: 'DM Mono', monospace; }
.page-hero-title { font-size: clamp(38px, 5vw, 64px); font-weight: 700; color: white; letter-spacing: -0.04em; line-height: 1.0; margin-bottom: 18px; max-width: 720px; }
.page-hero-sub { font-size: 18px; color: rgba(255,255,255,0.62); line-height: 1.75; max-width: 580px; }

/* ── SECTION DEFAULTS ──────────────────────── */
.section { padding: 104px 0; }
.section-inner { max-width: 1440px; margin: 0 auto; padding: 0 72px; }
.section-head { margin-bottom: 56px; max-width: 780px; }
.section-head-row { display: flex; justify-content: space-between; align-items: flex-end; margin-bottom: 48px; }

/* ── CTA BAND ──────────────────────────────── */
.section-cta-band { position: relative; overflow: hidden; min-height: 480px; display: flex; align-items: center; }
.cta-band-bg { position: absolute; inset: 0; z-index: 0; }
.cta-band-bg img { width: 100%; height: 100%; object-fit: cover; display: block; }
.cta-band-bg::after { content: ''; position: absolute; inset: 0; background: linear-gradient(105deg, rgba(28,58,46,0.93) 0%, rgba(28,58,46,0.72) 55%, rgba(28,58,46,0.3) 100%); }
.cta-band-inner { position: relative; z-index: 1; width: 100%; max-width: 1440px; margin: 0 auto; padding: 0 72px; }
.cta-band-content { max-width: 680px; padding: 96px 0; }
.cta-band-content .eyebrow { color: rgba(255,255,255,0.6); }
.cta-band-title { font-size: clamp(32px, 3.8vw, 52px); font-weight: 700; color: white; letter-spacing: -0.04em; line-height: 1.04; margin-bottom: 20px; }
.cta-band-sub { font-size: 18px; color: rgba(255,255,255,0.58); line-height: 1.78; margin-bottom: 40px; max-width: 500px; }

/* ── FAQ ───────────────────────────────────── */
.faq-list { display: flex; flex-direction: column; border: 1px solid var(--hairline); border-radius: 5px; overflow: hidden; }
.faq-item { border-bottom: 1px solid var(--hairline); }
.faq-item:last-child { border-bottom: none; }
.faq-q { display: flex; justify-content: space-between; align-items: center; padding: 24px 28px; cursor: pointer; background: white; font-size: 18px; font-weight: 600; color: var(--forest); letter-spacing: -0.01em; transition: background 0.16s; user-select: none; gap: 16px; }
.faq-q:hover { background: var(--amber-bg); }
.faq-icon { font-size: 24px; color: var(--amber); flex-shrink: 0; transition: transform 0.24s; }
.faq-item.open .faq-icon { transform: rotate(45deg); }
.faq-a { display: none; padding: 0 28px 24px; font-size: 17px; color: var(--mid); line-height: 1.8; background: white; }
.faq-item.open .faq-a { display: block; }
.faq-more { display: inline-flex; align-items: center; gap: 8px; font-size: 17px; font-weight: 700; color: var(--amber-dd); text-decoration: none; margin-top: 28px; }
.faq-more:hover { text-decoration: underline; }

/* ── PROCESS STEPS ─────────────────────────── */
.process-steps { display: flex; flex-direction: column; gap: 0; border: 1px solid var(--hairline); border-radius: 5px; overflow: hidden; }
.process-step { display: grid; grid-template-columns: 96px 1fr; border-bottom: 1px solid var(--hairline); transition: background 0.16s; }
.process-step:last-child { border-bottom: none; }
.process-step:hover { background: var(--amber-bg); }
.ps-num { display: flex; align-items: center; justify-content: center; font-family: 'DM Mono', monospace; font-size: 24px; font-weight: 700; color: white; min-height: 96px; }
.ps-num.p1 { background: #1C3A2E; } .ps-num.p2 { background: #24503E; }
.ps-num.p3 { background: #2E6B52; } .ps-num.p4 { background: #3D7A60; }
.ps-num.p5 { background: #6BB5A0; }
.ps-body { padding: 26px 36px; display: flex; flex-direction: column; justify-content: center; }
.ps-title { font-size: 18px; font-weight: 700; color: var(--forest); letter-spacing: -0.01em; margin-bottom: 6px; }
.ps-desc { font-size: 17px; color: var(--mid); line-height: 1.75; }

/* ── REVIEW CARDS ──────────────────────────── */
.reviews-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; }
.review-card { background: rgba(255,255,255,0.05); border: 1px solid rgba(255,255,255,0.08); border-radius: 5px; padding: 28px 28px 24px; display: flex; flex-direction: column; gap: 16px; transition: background 0.18s; }
.review-card:hover { background: rgba(255,255,255,0.08); }
.review-card-stars { display: flex; gap: 3px; }
.review-card-stars svg { color: #F5C842; }
.review-text { font-size: 17px; color: rgba(255,255,255,0.72); line-height: 1.75; flex: 1; font-style: italic; }
.review-text::before { content: '\201C'; }
.review-text::after { content: '\201D'; }
.review-meta { display: flex; align-items: center; gap: 12px; margin-top: auto; padding-top: 16px; border-top: 1px solid rgba(255,255,255,0.07); }
.review-avatar { width: 38px; height: 38px; border-radius: 50%; flex-shrink: 0; background: var(--amber); display: flex; align-items: center; justify-content: center; font-size: 15px; font-weight: 700; color: white; }
.review-name { font-size: 15px; font-weight: 700; color: white; line-height: 1.2; }
.review-location { font-size: 13px; font-family: 'DM Mono', monospace; color: rgba(255,255,255,0.35); margin-top: 2px; letter-spacing: 0.04em; }
.review-verified { font-size: 12px; font-family: 'DM Mono', monospace; font-weight: 700; letter-spacing: 0.1em; color: var(--sage); text-transform: uppercase; margin-left: auto; flex-shrink: 0; }

/* ── FEATURE ITEMS ─────────────────────────── */
.features-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; }
.feature-item { padding: 24px 26px; background: rgba(255,255,255,0.05); border: 1px solid rgba(255,255,255,0.08); border-radius: 4px; display: flex; align-items: center; gap: 18px; transition: background 0.18s; }
.feature-item:hover { background: rgba(255,255,255,0.1); }
.feature-icon { color: var(--amber-lt); flex-shrink: 0; display: flex; align-items: center; justify-content: center; width: 40px; height: 40px; background: rgba(255,255,255,0.06); border-radius: 8px; }
.feature-name { font-size: 17px; font-weight: 600; color: rgba(255,255,255,0.8); line-height: 1.35; }

/* ── BLOG CARDS ────────────────────────────── */
.blog-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; }
.blog-card { background: white; border: 1px solid var(--hairline); border-radius: 5px; overflow: hidden; text-decoration: none; color: inherit; display: flex; flex-direction: column; transition: transform 0.22s, box-shadow 0.22s; }
.blog-card:hover { transform: translateY(-3px); box-shadow: 0 12px 32px rgba(28,58,46,0.08); }
.blog-card-img { height: 210px; overflow: hidden; }
.blog-card-img img { width: 100%; height: 100%; object-fit: cover; transition: transform 0.5s; display: block; }
.blog-card:hover .blog-card-img img { transform: scale(1.05); }
.blog-card-body { padding: 24px 26px; flex: 1; display: flex; flex-direction: column; }
.blog-tag { font-size: 14px; font-weight: 700; letter-spacing: 0.15em; text-transform: uppercase; font-family: 'DM Mono', monospace; color: var(--amber); margin-bottom: 10px; }
.blog-title { font-size: 18px; font-weight: 700; color: var(--forest); letter-spacing: -0.01em; line-height: 1.35; flex: 1; margin-bottom: 14px; }
.blog-date { font-size: 15px; font-family: 'DM Mono', monospace; color: var(--faint); }

/* ── BLOG POST (article) ───────────────────── */
.article-body { max-width: 780px; margin: 0 auto; padding: 80px 72px; font-size: 18px; line-height: 1.85; color: var(--ink); }
.article-body h2 { font-size: clamp(24px, 2.6vw, 34px); font-weight: 700; color: var(--forest); letter-spacing: -0.03em; line-height: 1.1; margin: 56px 0 18px; }
.article-body h3 { font-size: 20px; font-weight: 700; color: var(--forest); letter-spacing: -0.02em; margin: 36px 0 14px; }
.article-body p { margin-bottom: 24px; color: var(--mid); }
.article-body ul, .article-body ol { margin: 0 0 24px 28px; color: var(--mid); }
.article-body li { margin-bottom: 10px; }
.article-body strong { color: var(--ink); font-weight: 700; }
.article-body a { color: var(--amber-dd); text-decoration: underline; }
.article-body .callout { background: var(--amber-bg); border-left: 4px solid var(--amber); padding: 20px 24px; border-radius: 0 4px 4px 0; margin: 32px 0; }
.article-body .callout p { color: var(--ink); margin: 0; }

/* ── FORM ──────────────────────────────────── */
.form-group { margin-bottom: 20px; }
.form-label { display: block; font-size: 15px; font-weight: 700; color: var(--forest); letter-spacing: 0.02em; margin-bottom: 8px; font-family: 'DM Mono', monospace; }
.form-input, .form-select, .form-textarea {
  width: 100%; padding: 14px 18px; border: 1.5px solid var(--hairline-d);
  border-radius: 4px; font-family: 'DM Sans', sans-serif; font-size: 17px;
  color: var(--ink); background: white; transition: border-color 0.18s, box-shadow 0.18s;
  outline: none; appearance: none;
}
.form-input:focus, .form-select:focus, .form-textarea:focus {
  border-color: var(--amber); box-shadow: 0 0 0 3px rgba(198,145,109,0.15);
}
.form-textarea { resize: vertical; min-height: 120px; line-height: 1.6; }
.form-submit { width: 100%; padding: 17px 32px; background: var(--amber); color: white; font-family: 'DM Sans', sans-serif; font-size: 17px; font-weight: 700; border: none; border-radius: 4px; cursor: pointer; transition: background 0.18s; letter-spacing: -0.01em; }
.form-submit:hover { background: var(--amber-d); }
.form-note { font-size: 15px; color: var(--faint); line-height: 1.6; margin-top: 12px; }

/* ══════════════════════════════════════════
   RESPONSIVE
══════════════════════════════════════════ */

@media (max-width: 900px) {
  nav { padding: 0 24px; }
  .nav-inner { align-items: center; }
  .nav-links { display: none; }
  .nav-right { display: flex; gap: 8px; align-items: center; padding-left: 0; }
  .nav-contact-btn { display: inline-flex; }
  .nav-cta { display: none; }
  .nav-hamburger { display: flex; }
  .nav-logo img { height: 46px; }

  .page-hero-content { padding: 48px 32px; }
  .page-hero-title { font-size: clamp(32px, 7vw, 48px); }
  .page-hero-sub { font-size: 17px; }

  .section { padding: 72px 0; }
  .section-inner { padding: 0 32px; }
  .section-head { margin-bottom: 40px; }
  .cta-band-inner { padding: 0 32px; }
  .cta-band-content { padding: 72px 0; }

  .process-step { grid-template-columns: 80px 1fr; }
  .ps-num { min-height: 88px; font-size: 22px; }
  .ps-body { padding: 22px 24px; }

  .features-grid { grid-template-columns: repeat(2, 1fr); }
  .reviews-grid { grid-template-columns: 1fr; gap: 16px; }
  .blog-grid { grid-template-columns: repeat(2, 1fr); gap: 18px; }

  .footer-top { grid-template-columns: 1fr 1fr; gap: 40px; padding: 48px 32px 40px; }
  .footer-brand { grid-column: span 2; }
  .footer-bottom { flex-direction: column; gap: 12px; text-align: center; padding: 20px 32px; }
  .footer-legal { flex-wrap: wrap; justify-content: center; gap: 16px; }

  .article-body { padding: 56px 32px; }
}

@media (max-width: 1280px) and (min-width: 901px) {
  nav { padding: 0 32px; }
  .nav-links a { padding: 0 13px; font-size: 16px; }
  .nav-cta { padding: 12px 18px; font-size: 15px; }
}

@media (max-width: 600px) {
  nav { padding: 0 20px; }
  .nav-logo img { height: 28px; }
  .section-inner { padding: 0 20px; }
  .page-hero-content { padding: 40px 20px; }
  .features-grid { grid-template-columns: 1fr; }
  .blog-grid { grid-template-columns: 1fr; }
  .footer-top { grid-template-columns: 1fr; }
  .footer-brand { grid-column: span 1; }
  .footer-bottom { padding: 18px 20px; }
  .article-body { padding: 40px 20px; }
  .faq-q { font-size: 18px; padding: 20px 22px; }
}
@media (max-width: 480px) {
  .section-inner { padding: 0 16px; }
  .section-head { margin-bottom: 28px; }
  .s-title { font-size: clamp(24px, 7vw, 32px); }
  .s-body { font-size: 16px; }
  .s-body-sm { font-size: 16px; }
  .eyebrow { font-size: 13px; }
  .btn, .btn-white, .btn-amber { padding: 13px 22px; font-size: 15px; }
  .features-grid { gap: 12px; }
  .f-card { padding: 20px 18px; }
  .process-step { grid-template-columns: 64px 1fr; }
  .ps-num { min-height: 80px; font-size: 20px; }
  .ps-body { padding: 18px 20px; }
  .footer-top { padding: 36px 16px 32px; }
  .footer-bottom { padding: 16px; }
  .page-hero-title { font-size: clamp(26px, 8vw, 40px); }
  .page-hero-sub { font-size: 17px; }
}

/* ══════════════════════════════════════════════
   GLOBAL UTILITY GRID BREAKPOINTS
   Applied via g-two-col, g-three-col, g-sidebar
══════════════════════════════════════════════ */

/* Touch targets — Google recommends 44×44px minimum */
.btn, .btn-white, .btn-amber, .nav-cta, .form-submit {
  min-height: 44px;
}
.mc-toggle-btn { min-height: 40px; }
.mc-ext-btn, .mp-ext-btn { min-width: 32px; min-height: 32px; }
.mc-fp-btn, .mc-ld-btn, .mp-tbtn { min-height: 36px; }

@media (max-width: 900px) {
  /* Two-column grids → single column */
  .g-two-col {
    grid-template-columns: 1fr !important;
    gap: 40px !important;
  }
  /* Three-column grids → two column */
  .g-three-col {
    grid-template-columns: 1fr 1fr !important;
    gap: 16px !important;
  }
  /* Sidebar layout → stack */
  .g-sidebar {
    grid-template-columns: 1fr !important;
    gap: 32px !important;
  }
}

@media (max-width: 640px) {
  /* Three-col → single on phones */
  .g-three-col {
    grid-template-columns: 1fr !important;
  }
  /* Hero CTA buttons full-width on small screens */
  .hero-content .btn-white,
  .page-hero-content .btn,
  .cta-band-content .btn-amber {
    width: 100%;
    justify-content: center;
    min-height: 48px;
  }
}
@media (max-width: 480px) {
  .add-info-grid { grid-template-columns: 1fr !important; }
  .other-munis { grid-template-columns: 1fr 1fr !important; }
  .muni-hero-content { padding: 36px 16px 44px; }
  .stat-val { font-size: 28px; }
  .score-num { font-size: 48px; }
}
/* iOS input zoom prevention — font-size must be >= 16px on inputs */
@media (max-width: 640px) {
  input[type="text"], input[type="email"], input[type="tel"],
  input[type="number"], input[type="date"], textarea, select {
    font-size: 16px !important;
  }
}
/* Zoning muni nav bar */
@media (max-width: 640px) {
  .muni-nav-inner { padding: 0 16px; gap: 4px; overflow-x: auto; }
  .muni-nav-link { white-space: nowrap; padding: 10px 12px; font-size: 12px; }
}
/* ══════════════════════════════════════════════
   TOUCH TARGET COMPLIANCE (Google 44×44px min)
══════════════════════════════════════════════ */

/* Primary CTA buttons */
.btn-white, .btn-amber, .nav-cta {
  min-height: 44px;
  box-sizing: border-box;
}

/* Form submit */
.form-submit { min-height: 48px; }

/* Mobile: make all primary buttons full-width for easier tapping */
@media (max-width: 480px) {
  /* Nav CTA stays in nav — don't expand */
  .btn-white:not(.nav-cta),
  .btn-amber:not(.nav-cta) {
    min-height: 52px;
    padding: 14px 24px;
  }
}

/* Model card toggle buttons — increase tap area with padding */
@media (max-width: 900px) {
  /* mc-ext-btn circular icon buttons: wrap in padding for tap area */
  .mc-toggle-bar { padding: 10px 14px; }
  .mc-fp-btn { padding: 8px 16px; min-height: 44px; }
  .mc-ld-btn { padding: 8px 16px; min-height: 40px; }
  .mc-ext-btn {
    width: 36px; height: 36px;
    /* extend tap area via pseudo-element */
  }
  .mc-ext-btn::after {
    content: '';
    position: absolute;
    inset: -6px;
  }
  .mc-ext-btn { position: relative; }
}

/* Zoning page stat links and other small targets */
@media (max-width: 640px) {
  .muni-card { min-height: 0; }
  .muni-nav-link { min-height: 44px; display: inline-flex; align-items: center; }
  .reg-cat-card { padding: 18px 16px; }
}
/* ── MOBILE TYPOGRAPHY — minimum readable sizes ── */
@media (max-width: 640px) {
  /* Body text minimum — iOS zooms inputs/text < 16px */
  body { font-size:18px; }

  /* Section body text */
  .s-body { font-size:17px !important; }
  .s-body-sm { font-size:17px !important; }

  /* Description paragraphs used in municipality, services, about pages */
  p { font-size: 17px; }

  /* Municipality content */
  .add-info-label { font-size: 15px; }
  .add-info-val { font-size: 15px; }
  .reg-cat-body { font-size: 17px; }
  .muni-nav-link { font-size: 13px; }

  /* Model pages */
  .mp-ov-txt { font-size: 17px; }
  .mp-media-caption p { font-size: 17px; }
  .mp-fin-item { font-size: 16px; }
  .mp-faq-a { font-size: 17px; }
  .mp-oc-code { font-size: 17px; }

  /* Blog */
  .post-body, .post-body p { font-size: 18px; }

  /* Process steps */
  .ps-desc { font-size: 17px; }

  /* Footer links */
  .f-links a { font-size: 15px; }
  .footer-tagline { font-size: 15px; }

  /* Eyebrow labels — intentionally small but not 11px */
  .eyebrow { font-size: 13px; }

  /* ── GLOBAL +1pt BUMP on mobile ── */
  /* Section and content body text */
  .s-body { font-size: 18px !important; }
  .s-title { font-size: clamp(26px, 8vw, 34px); }
  .review-text { font-size: 17px; }
  .faq-q { font-size: 18px; }
  .faq-a { font-size: 17px; }
  .up-flex-body { font-size: 17px; }
  .up-incl-item { font-size: 17px; }
  .feature-desc { font-size: 16px; }
  .appt-checklist li { font-size: 17px; }
  .appt-trust-body { font-size: 16px; }
  .wa-use-body { font-size: 18px; }
  .wa-def-body { font-size: 17px; }
  /* Hero subs */
  .page-hero-sub { font-size: 18px; }
  .hero-sub { font-size: 17px; }
}
