/* =====================================================================
   Hilary Kilgore — Site-wide Stylesheet
   Brand: Cormorant Garamond + Work Sans · Deep Teal / Cream / Sage
   Loaded by every page. Pair with /assets/css/neighborhoods.css on
   /neighborhoods/* pages and /assets/css/article.css on blog posts.
   ===================================================================== */

:root {
  --hk-ink:        #1b504e;
  --hk-paper:      #e3ded2;
  --hk-accent:     #2c7d7b;
  --hk-sage:       #759967;
  --hk-lime:       #c1f9aa;
  --hk-lavender:   #dabdf9;
  --hk-black:      #000000;
  --hk-white:      #ffffff;
  --hk-paper-soft: #ece7da;
  --hk-paper-deep: #d9d3c3;
  --hk-ink-08:     rgba(27, 80, 78, 0.08);
  --hk-ink-12:     rgba(27, 80, 78, 0.12);
  --hk-ink-16:     rgba(27, 80, 78, 0.16);
  --hk-ink-32:     rgba(27, 80, 78, 0.32);
  --hk-ink-64:     rgba(27, 80, 78, 0.64);
  --display:       'Cormorant Garamond', Garamond, 'Times New Roman', serif;
  --body:          'Work Sans', 'Helvetica Neue', Arial, sans-serif;
  --shadow-sm:     0 2px 8px rgba(27, 80, 78, 0.08);
  --shadow-md:     0 8px 24px rgba(27, 80, 78, 0.12);
  --shadow-lg:     0 16px 48px rgba(27, 80, 78, 0.18);
  --radius:        4px;
  --radius-lg:     6px;
}

/* ─── RESET / BASE ─── */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; }
body {
  font-family: var(--body);
  background: var(--hk-paper);
  color: var(--hk-ink);
  line-height: 1.65;
  font-size: 16px;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}
img { max-width: 100%; display: block; }
a { color: var(--hk-accent); text-decoration: none; transition: color 0.15s; }
a:hover { color: var(--hk-ink); }

/* ─── LAYOUT ─── */
.wrap { max-width: 1240px; margin: 0 auto; padding: 0 32px; }

/* Nav styles live in /assets/js/site-nav.js (injected by <site-nav>).
   The placeholder-height rules below MUST live in this stylesheet
   (inlined into <head>) so they're applied before site-nav.js runs.
   Otherwise the JS-injected brokerage band + nav appear from nowhere
   and shift everything below them down. */
site-nav {
  display: block;
  min-height: 134px; /* 60 band + 74 nav at desktop */
}
@media (max-width: 980px) {
  site-nav { min-height: 124px; }
}
@media (max-width: 720px) {
  /* brokerage-band stacks to two rows on mobile (name above meta) */
  site-nav { min-height: 170px; }
}

/* ─── BUTTONS ─── */
.btn {
  display: inline-block;
  font-family: var(--body);
  font-size: 13px;
  font-weight: 600;
  letter-spacing: 0.06em;
  padding: 14px 28px;
  border-radius: 2px;
  transition: all 0.2s;
  border: 1.5px solid transparent;
  cursor: pointer;
  text-decoration: none;
}
.btn-primary { background: var(--hk-accent); color: var(--hk-paper); border-color: var(--hk-accent); }
.btn-primary:hover { background: var(--hk-ink); border-color: var(--hk-ink); color: var(--hk-paper); }
.btn-outline { background: transparent; color: var(--hk-ink); border-color: var(--hk-ink); }
.btn-outline:hover { background: var(--hk-ink); color: var(--hk-paper); }
.btn-light { background: var(--hk-paper); color: var(--hk-ink); border-color: var(--hk-paper); }
.btn-light:hover { background: var(--hk-lime); border-color: var(--hk-lime); color: var(--hk-ink); }
.btn-outline-light { background: transparent; color: var(--hk-paper); border-color: rgba(227, 222, 210, 0.5); }
.btn-outline-light:hover { background: rgba(227, 222, 210, 0.12); border-color: var(--hk-paper); color: var(--hk-paper); }

/* ─────────────────────────────────────────────────────────────────────
   FOOTER — Three variants
   .footer          → full multi-column footer (home, about, blog, posts,
                      404, mortgage calculator). The <footer> tag is also
                      caught by the bare selector below so legacy markup
                      that hasn't been updated still renders correctly.
   .footer-compact  → narrow centered footer (open house pages).
   .footer-bio      → bio-link page footer (links).
   ───────────────────────────────────────────────────────────────────── */

/* Full footer — applies to <footer> or <footer class="footer"> */
footer,
.footer {
  background: var(--hk-ink);
  color: rgba(227, 222, 210, 0.7);
  padding: 80px 0 40px;
}
.footer-grid {
  display: grid;
  grid-template-columns: 2fr 1fr 1fr 1fr;
  gap: 48px;
  margin-bottom: 48px;
}
.footer-mark { margin-bottom: 24px; }
.footer-tag {
  font-family: var(--display);
  font-style: italic;
  font-size: 18px;
  color: var(--hk-paper);
  margin-bottom: 24px;
  max-width: 320px;
  line-height: 1.5;
}
.footer-tag::before, .footer-tag::after { content: '"'; color: var(--hk-lime); }
.footer-col h4 {
  font-family: var(--body);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.24em;
  text-transform: uppercase;
  color: var(--hk-lime);
  margin-bottom: 18px;
}
.footer-col ul { list-style: none; }
.footer-col li { margin-bottom: 10px; }
.footer-col a {
  color: rgba(227, 222, 210, 0.75);
  font-size: 14px;
  font-family: var(--body);
}
.footer-col a:hover { color: var(--hk-lime); }

.footer-brokerage {
  text-align: center;
  margin: 0 auto 28px;
  max-width: 720px;
}
.footer-brokerage .brokerage-name {
  font-family: var(--display);
  font-style: italic;
  font-weight: 500;
  font-size: 32px;
  color: var(--hk-paper);
  letter-spacing: -0.005em;
  line-height: 1.1;
  margin-bottom: 8px;
}
.footer-brokerage .brokerage-meta {
  font-family: var(--body);
  font-size: 13px;
  color: rgba(227, 222, 210, 0.65);
  letter-spacing: 0.04em;
  display: inline-flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 10px;
  line-height: 1.5;
}
.footer-brokerage .brokerage-meta a { color: var(--hk-lime); text-decoration: none; }
.footer-brokerage .brokerage-meta a:hover { text-decoration: underline; }
.footer-brokerage .brokerage-sep { color: rgba(227, 222, 210, 0.35); }

.footer-bottom {
  border-top: 1px solid rgba(227, 222, 210, 0.14);
  padding-top: 24px;
  display: flex;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 16px;
  font-size: 12px;
  color: rgba(227, 222, 210, 0.5);
  font-family: var(--body);
}
.footer-bottom a { color: rgba(227, 222, 210, 0.65); }
.footer-bottom a:hover { color: var(--hk-lime); }
.footer-disclaimer { max-width: 720px; line-height: 1.55; }

@media (max-width: 900px) {
  .footer-grid { grid-template-columns: 1fr 1fr; }
  .footer-brokerage .brokerage-name { font-size: 28px; }
  .footer-brokerage .brokerage-meta { font-size: 12px; gap: 8px; }
}
@media (max-width: 600px) {
  .footer-grid { grid-template-columns: 1fr; }
}

/* Compact footer — used by open house pages */
.footer-compact {
  margin-top: 48px;
  padding: 28px 20px 40px;
  text-align: center;
  border-top: 1px solid var(--hk-ink-12);
  font-size: 12px;
  color: var(--hk-ink-64);
  line-height: 1.6;
  background: transparent;
}
.footer-compact a { color: var(--hk-ink-64); text-decoration: underline; }
.footer-compact .footer-tag {
  font-family: var(--display);
  font-style: italic;
  font-size: 18px;
  color: var(--hk-accent);
  margin: 0 0 14px;
  max-width: none;
  line-height: 1.3;
  letter-spacing: 0.01em;
  background: none;
}
.footer-compact .footer-tag::before,
.footer-compact .footer-tag::after { content: none; }

/* Bio-link page footer — narrow, centered, paper bg */
.footer-bio {
  margin-top: 36px;
  padding: 24px 0 8px;
  border-top: 1px solid var(--hk-ink-12);
  text-align: center;
  font-family: var(--body);
  font-size: 12px;
  color: var(--hk-ink-64);
  line-height: 1.6;
  background: transparent;
}
.footer-bio a { color: var(--hk-accent); }
.footer-bio .footer-mark {
  font-family: var(--display);
  font-style: italic;
  font-size: 16px;
  color: var(--hk-ink);
  margin-bottom: 6px;
}
.footer-bio .footer-brokerage {
  margin: 8px 0 12px;
  max-width: none;
  text-align: center;
}
.footer-bio .footer-disclaimer {
  max-width: 540px;
  margin: 0 auto;
  font-size: 11px;
  color: var(--hk-ink-32);
  line-height: 1.55;
}

/* ─────────────────────────────────────────────────────────────────────
   ASK HILARY FORM (compact, dark-bg variant)
   Used on blog post CTAs, homepage #contact, about page Let's Talk,
   and the bottom of every neighborhood page. All instances use
   form name="ask-hilary" with hidden context fields (post / area / source)
   so leads land in one Netlify form bucket but stay tagged by source.
   These styles assume a dark background context.
   ───────────────────────────────────────────────────────────────────── */
.cta-form {
  max-width: 480px;
  margin: 0 auto;
  text-align: left;
}
.cta-form-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
  margin-bottom: 12px;
}
.cta-form input,
.cta-form textarea {
  width: 100%;
  box-sizing: border-box;
  background: rgba(227, 222, 210, 0.06);
  border: 1px solid rgba(227, 222, 210, 0.18);
  border-radius: 4px;
  padding: 13px 14px;
  color: var(--hk-paper);
  font-family: var(--body);
  font-size: 15px;
  line-height: 1.4;
  transition: border-color 0.2s, background 0.2s;
}
.cta-form input::placeholder,
.cta-form textarea::placeholder { color: rgba(227, 222, 210, 0.45); }
.cta-form input:focus,
.cta-form textarea:focus {
  outline: none;
  border-color: var(--hk-lime);
  background: rgba(227, 222, 210, 0.10);
}
.cta-form textarea { resize: vertical; min-height: 90px; font-family: var(--body); }
.cta-form .cta-full { display: block; margin-bottom: 12px; }
.cta-form button[type="submit"] {
  width: 100%;
  margin-top: 4px;
  cursor: pointer;
  font-size: 14px;
  padding: 16px 28px;
}
.hp-field { position: absolute; left: -9999px; visibility: hidden; }
.cta-thanks { max-width: 460px; margin: 0 auto; text-align: center; }
.cta-thanks h4 {
  font-family: var(--display);
  font-style: italic;
  font-weight: 500;
  font-size: 26px;
  color: var(--hk-lime);
  margin-bottom: 10px;
}
.cta-thanks p {
  font-size: 15px;
  line-height: 1.65;
  color: rgba(227, 222, 210, 0.75);
}
.cta-alt {
  margin: 28px auto 0;
  font-size: 13px;
  color: rgba(227, 222, 210, 0.55);
  text-align: center;
  max-width: none;
}
.cta-alt a {
  color: rgba(227, 222, 210, 0.85);
  text-decoration: underline;
  text-decoration-color: rgba(227, 222, 210, 0.3);
  text-underline-offset: 3px;
}
.cta-alt a:hover { color: var(--hk-lime); text-decoration-color: var(--hk-lime); }

@media (max-width: 640px) {
  .cta-form-grid { grid-template-columns: 1fr; }
}

/* ─────────────────────────────────────────────────────────────────────
   FAQ ACCORDION — Used on neighborhood pages and pillar blog posts.
   Paired with FAQPage JSON-LD for AEO (AI Overviews, Perplexity, etc.).
   Built on native <details>/<summary> so content is in the DOM at load
   (schema-eligible) and works without JS. Optional JS in
   /assets/js/faq.js adds single-open behavior + smooth animation.
   ───────────────────────────────────────────────────────────────────── */
.faq-section {
  padding: 80px 0;
  background: var(--hk-paper-soft);
  border-top: 1px solid var(--hk-ink-08);
  border-bottom: 1px solid var(--hk-ink-08);
}
.faq-section .wrap { max-width: 880px; }
.faq-eyebrow {
  font-family: var(--body);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.32em;
  text-transform: uppercase;
  color: var(--hk-accent);
  margin-bottom: 16px;
  display: inline-flex;
  align-items: center;
  gap: 12px;
}
.faq-eyebrow::before {
  content: '';
  width: 32px;
  height: 1.5px;
  background: var(--hk-accent);
}
.faq-section h2 {
  font-family: var(--display);
  font-weight: 500;
  font-size: clamp(32px, 4.4vw, 48px);
  line-height: 1.1;
  letter-spacing: -0.01em;
  color: var(--hk-ink);
  margin-bottom: 12px;
}
.faq-section h2 em { font-style: italic; color: var(--hk-accent); }
.faq-section > .wrap > p.faq-lede {
  font-size: 16px;
  line-height: 1.7;
  color: var(--hk-ink-64);
  margin-bottom: 36px;
  max-width: 640px;
}
.faq-list {
  list-style: none;
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.faq-item {
  background: var(--hk-white);
  border: 1px solid var(--hk-ink-08);
  border-radius: var(--radius-lg);
  overflow: hidden;
  transition: border-color 0.2s, box-shadow 0.2s;
}
.faq-item[open] {
  border-color: var(--hk-ink-16);
  box-shadow: var(--shadow-sm);
}
.faq-item:hover { border-color: var(--hk-ink-16); }
.faq-question {
  list-style: none;
  cursor: pointer;
  padding: 22px 56px 22px 24px;
  position: relative;
  font-family: var(--display);
  font-weight: 500;
  font-style: italic;
  font-size: 21px;
  line-height: 1.35;
  color: var(--hk-ink);
  user-select: none;
}
.faq-question::-webkit-details-marker { display: none; }
.faq-question::marker { content: ''; }
.faq-question::after {
  content: '';
  position: absolute;
  right: 24px;
  top: 50%;
  width: 12px;
  height: 12px;
  border-right: 2px solid var(--hk-accent);
  border-bottom: 2px solid var(--hk-accent);
  transform: translateY(-75%) rotate(45deg);
  transition: transform 0.2s ease;
}
.faq-item[open] .faq-question::after {
  transform: translateY(-25%) rotate(-135deg);
}
.faq-question:focus-visible {
  outline: 2px solid var(--hk-accent);
  outline-offset: -2px;
}
.faq-answer {
  padding: 0 24px 24px 24px;
  font-family: var(--body);
  font-size: 15.5px;
  line-height: 1.75;
  color: var(--hk-ink);
}
.faq-answer p { margin: 0 0 12px; }
.faq-answer p:last-child { margin-bottom: 0; }
.faq-answer a {
  color: var(--hk-accent);
  text-decoration: underline;
  text-decoration-color: var(--hk-ink-16);
  text-underline-offset: 3px;
}
.faq-answer a:hover {
  color: var(--hk-ink);
  text-decoration-color: var(--hk-accent);
}
.faq-answer ul, .faq-answer ol {
  margin: 0 0 12px 20px;
  padding: 0;
}
.faq-answer li { margin-bottom: 6px; }

@media (max-width: 640px) {
  .faq-section { padding: 56px 0; }
  .faq-question {
    font-size: 18px;
    padding: 20px 48px 20px 18px;
  }
  .faq-question::after { right: 18px; }
  .faq-answer { padding: 0 18px 20px 18px; font-size: 15px; }
}

/* ─── AUTHOR BIO CARD ──────────────────────────────────────────────────
   E-E-A-T trust block. Appears at the bottom of every blog post (after
   article body, before related posts) and on every neighborhood page
   (after FAQ, before CTA banner). Sits on the paper background, not the
   ink hero. Reads cleanly to AI extractors via aria-label and explicit
   role/credentials copy.
   ──────────────────────────────────────────────────────────────────── */
.author-bio-card {
  background: var(--hk-paper-soft);
  border: 1px solid var(--hk-ink-12);
  border-radius: var(--radius);
  padding: 32px;
  margin: 56px auto;
  max-width: 760px;
  display: flex;
  align-items: flex-start;
  gap: 24px;
}
.author-bio-avatar {
  width: 88px;
  height: 88px;
  border-radius: 50%;
  object-fit: cover;
  border: 3px solid rgba(193, 249, 170, 0.6);
  flex-shrink: 0;
}
.author-bio-content { flex: 1; }
.author-bio-eyebrow {
  font-family: var(--body);
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.24em;
  text-transform: uppercase;
  color: var(--hk-ink-64);
  margin-bottom: 8px;
}
.author-bio-name {
  font-family: var(--display);
  font-size: 26px;
  font-weight: 500;
  color: var(--hk-ink);
  margin: 0 0 4px;
  line-height: 1.2;
}
.author-bio-role {
  font-family: var(--body);
  font-size: 14px;
  color: var(--hk-ink);
  margin: 0 0 10px;
}
.author-bio-creds {
  font-family: var(--body);
  font-size: 13px;
  line-height: 1.6;
  color: var(--hk-ink-64);
  margin: 0 0 14px;
}
.author-bio-link {
  font-family: var(--body);
  font-size: 13px;
  font-weight: 600;
  color: var(--hk-ink);
  text-decoration: none;
  border-bottom: 1px solid var(--hk-ink-32);
  padding-bottom: 1px;
  transition: border-color 0.2s;
}
.author-bio-link:hover { border-bottom-color: var(--hk-ink); color: var(--hk-ink); }

@media (max-width: 640px) {
  .author-bio-card {
    flex-direction: column;
    align-items: center;
    text-align: center;
    padding: 28px 22px;
    gap: 16px;
  }
  .author-bio-avatar { width: 72px; height: 72px; }
  .author-bio-name { font-size: 22px; }
}

/* ─── SECTION QUESTION (Q&A subhead for AEO) ───────────────────────────
   Visible H3 question that sits between the brand H2 and the section's
   intro paragraph. Pairs with FAQPage schema and helps AI engines extract
   the answer from the immediately-following content.
   ──────────────────────────────────────────────────────────────────── */
.section-question {
  display: block;
  font-family: var(--display);
  font-style: italic;
  font-weight: 400;
  font-size: 20px;
  line-height: 1.35;
  color: var(--hk-accent);
  margin: 6px 0 14px;
  letter-spacing: 0;
}
@media (max-width: 640px) {
  .section-question { font-size: 18px; }
}

/* ─── LAST UPDATED CAPTION ─────────────────────────────────────────────
   Small recency stamp shown above the footer on every content page.
   Visible signal that pairs with dateModified in JSON-LD schema.
   ──────────────────────────────────────────────────────────────────── */
.last-updated {
  max-width: 1240px;
  margin: 0 auto;
  padding: 32px 32px 0;
  font-family: var(--body);
  font-size: 12px;
  color: var(--hk-ink-64);
  letter-spacing: 0.04em;
  text-align: center;
}
.last-updated time { color: var(--hk-ink); font-weight: 500; }

/* ─────────────────────────────────────────────────────────────────────
   TCPA CONSENT BLOCK — Used inside .cta-form on every form that
   collects a phone number. The "required" attribute on the checkbox
   is toggled by /assets/js/cta-form.js based on whether the phone
   field has a value (Stacey's design call — only require formal
   consent when phone is actually being provided).
   Styles assume the dark-bg context of .cta-banner / #contact.
   ───────────────────────────────────────────────────────────────────── */
.cta-consent {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  margin: 6px 0 14px;
  padding: 12px 14px;
  background: rgba(227, 222, 210, 0.04);
  border: 1px solid rgba(227, 222, 210, 0.12);
  border-radius: 4px;
  cursor: pointer;
  transition: border-color 0.15s, background 0.15s;
}
.cta-consent:hover {
  border-color: rgba(193, 249, 170, 0.4);
}
.cta-consent input[type="checkbox"] {
  flex: 0 0 auto;
  margin-top: 3px;
  width: 16px;
  height: 16px;
  accent-color: var(--hk-lime);
  cursor: pointer;
}
.cta-consent-text {
  font-family: var(--body);
  font-size: 11.5px;
  line-height: 1.55;
  color: rgba(227, 222, 210, 0.72);
}
.cta-consent-text strong { color: rgba(227, 222, 210, 0.92); font-weight: 600; }
.cta-consent-text a {
  color: var(--hk-lime);
  text-decoration: underline;
  text-decoration-color: rgba(193, 249, 170, 0.4);
  text-underline-offset: 2px;
}
.cta-consent-text a:hover {
  color: var(--hk-paper);
  text-decoration-color: var(--hk-paper);
}
.cta-consent.cta-consent-required {
  border-left: 2px solid var(--hk-lime);
}
.cta-consent.cta-consent-invalid {
  border-color: #ff9aa2;
  background: rgba(255, 154, 162, 0.06);
}

/* Light-bg variant — used on /links/ and any form sitting on cream */
.lead-form .cta-consent,
.rg-form .cta-consent {
  background: rgba(27, 80, 78, 0.03);
  border-color: var(--hk-ink-12);
}
.lead-form .cta-consent-text,
.rg-form .cta-consent-text {
  color: var(--hk-ink-64);
}
.lead-form .cta-consent-text strong,
.rg-form .cta-consent-text strong { color: var(--hk-ink); }
.lead-form .cta-consent-text a,
.rg-form .cta-consent-text a {
  color: var(--hk-accent);
  text-decoration-color: var(--hk-ink-12);
}
.lead-form .cta-consent-text a:hover,
.rg-form .cta-consent-text a:hover {
  color: var(--hk-ink);
  text-decoration-color: var(--hk-accent);
}
.lead-form .cta-consent.cta-consent-required,
.rg-form .cta-consent.cta-consent-required {
  border-left: 2px solid var(--hk-sage);
}
