/* ==========================================================================
   Pine & Seal Mobile Notary & Signings — Design System
   Palette: Pine (deep green), Charcoal, Cream, Gold seal accent, Sage
   Type: Fraunces (display serif) / Inter (body) / IBM Plex Mono (utility)
   Signature element: the notarial "seal" mark — concentric stamp used as a
   recurring motif near CTAs, section dividers and the footer.
   ========================================================================== */

/* Fonts are loaded via <link> tags in each page's <head> (faster and more
   reliable than @import). Fallback stacks below are chosen to still feel
   intentional — not system-default — if webfonts fail to load. */

:root{
  --pine:        #1B3A2E;
  --pine-dark:   #10241C;
  --pine-mid:    #24503F;
  --navy:        #0A1F3C;
  --charcoal:    #232323;
  --cream:       #F7F2E6;
  --cream-dark:  #EEE4CE;
  --paper:       #FCFAF4;
  --gold:        #AC7C24;
  --gold-light:  #D1A550;
  --sage:        #6E8F76;
  --white:       #FFFFFF;
  --ink:         #1E1E1C;
  --muted:       #5B6660;
  --line:        rgba(27, 58, 46, 0.16);

  --font-display: 'Fraunces', 'Iowan Old Style', 'Palatino Linotype', Palatino, Georgia, serif;
  --font-body: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  --font-mono: 'IBM Plex Mono', 'SFMono-Regular', Consolas, 'Courier New', monospace;

  --max: 1180px;
  --radius: 3px;
  --shadow-card: 0 1px 2px rgba(16,36,28,0.06), 0 8px 24px rgba(16,36,28,0.06);
}

*,*::before,*::after{ box-sizing: border-box; }
html{ scroll-behavior: smooth; }
body{
  margin:0;
  font-family: var(--font-body);
  color: var(--ink);
  background: var(--paper);
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
}
img{ max-width:100%; display:block; }
a{ color: inherit; text-decoration: none; }
ul{ margin:0; padding:0; list-style:none; }
h1,h2,h3,h4{
  font-family: var(--font-display);
  color: var(--navy);
  line-height: 1.05;
  margin: 0 0 .5em;
  font-weight: 480;
  letter-spacing: -0.015em;
  font-variation-settings: 'SOFT' 0, 'WONK' 0;
  text-wrap: balance;
}
h1{
  font-size: clamp(2.6rem, 6.4vw, 4.6rem);
  font-weight: 380;
  letter-spacing: -0.025em;
  line-height: 0.98;
}
h1 em{ font-weight: 500; }
h2{ font-size: clamp(1.9rem, 3.6vw, 2.7rem); font-weight: 420; letter-spacing: -0.02em; }
h3{ font-size: 1.32rem; font-weight: 520; letter-spacing: -0.01em; }
h4{ font-weight: 560; }
p{ margin: 0 0 1em; color: var(--charcoal); font-size: 1.02rem; }
body{ font-size: 16.5px; }
.container{ max-width: var(--max); margin: 0 auto; padding: 0 24px; }
section{ padding: 72px 0; }
@media (max-width:720px){ section{ padding: 52px 0; } }

/* Focus visibility */
a:focus-visible, button:focus-visible, input:focus-visible, textarea:focus-visible, select:focus-visible{
  outline: 2px solid var(--gold);
  outline-offset: 3px;
}
@media (prefers-reduced-motion: reduce){
  *{ animation-duration: 0.001ms !important; animation-iteration-count: 1 !important; transition-duration: 0.001ms !important; scroll-behavior: auto !important; }
}

/* ---------- Eyebrow / mono labels ---------- */
.eyebrow{
  font-family: var(--font-mono);
  font-size: .74rem;
  font-weight: 500;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--gold);
  display:flex;
  align-items:center;
  gap:12px;
  margin-bottom: 16px;
}
.eyebrow::before{
  content:"";
  width: 28px; height:1px; background: var(--gold);
  display:inline-block;
}
.eyebrow::after{
  content: "§";
  font-size: .85em;
  color: var(--gold-light);
  margin-left: -2px;
}

/* ---------- Ledger texture (subtle document-margin lines) ---------- */
.ledger-bg{
  background-image: repeating-linear-gradient(
    to bottom,
    transparent 0px, transparent 27px, rgba(27,58,46,0.05) 28px
  );
}

/* ---------- Seal signature mark (SVG-based) ---------- */
.seal{
  --seal-size: 64px;
  width: var(--seal-size); height: var(--seal-size);
  border-radius: 50%;
  border: 1.5px solid var(--gold);
  position: relative;
  display:flex; align-items:center; justify-content:center;
  flex-shrink:0;
}
.seal::before{
  content:"";
  position:absolute; inset:6px;
  border-radius:50%;
  border: 1px dashed var(--gold-light);
}
.seal-mark{
  font-family: var(--font-display);
  font-style: italic;
  font-weight: 600;
  font-size: calc(var(--seal-size) * 0.30);
  color: var(--gold);
  letter-spacing: -0.02em;
}

/* ==========================================================================
   Header / Nav
   ========================================================================== */
.topbar{
  background: var(--pine-dark);
  color: var(--cream-dark);
  font-family: var(--font-mono);
  font-size: .74rem;
  letter-spacing: .03em;
}
.topbar .container{
  display:flex; justify-content:space-between; align-items:center;
  padding-top:8px; padding-bottom:8px; gap: 12px; flex-wrap:wrap;
}
.topbar a{ color: var(--gold-light); }
.topbar a:hover{ color: var(--white); }

header.site{
  position: sticky; top:0; z-index: 50;
  background: var(--paper);
  border-bottom: 1px solid var(--line);
}
.nav{
  display:flex; align-items:center; justify-content:space-between;
  padding: 16px 0;
}
.brand{ display:flex; align-items:center; gap:12px; }
.brand-mark{
  width:40px; height:40px; border-radius:50%;
  background: var(--pine);
  display:flex; align-items:center; justify-content:center;
  color: var(--gold-light);
  font-family: var(--font-display); font-style:italic; font-weight:600;
  font-size: 1.1rem;
  flex-shrink:0;
}
.brand-logo-img{
  width:46px; height:46px; border-radius:50%;
  object-fit: cover;
  background: var(--white);
  border: 1px solid var(--line);
  flex-shrink:0;
}
.footer-brand .brand-logo-img{
  width:52px; height:52px;
  border-color: rgba(247,242,230,0.25);
}
.brand-name{
  font-family: var(--font-display);
  font-size: 1.18rem;
  color: var(--navy);
  line-height:1.05;
}
.brand-name small{
  display:block;
  font-family: var(--font-mono);
  font-size: .62rem;
  letter-spacing: .1em;
  color: var(--muted);
  text-transform: uppercase;
  margin-top: 3px;
}
.nav-links{ display:flex; align-items:center; gap: 28px; }
.nav-links a{
  font-size: .92rem; font-weight:500; color: var(--charcoal);
  position:relative; padding: 4px 0;
}
.nav-links a:hover{ color: var(--pine); }
.nav-links a.active{ color: var(--pine); }
.nav-cta{ display:flex; align-items:center; gap:10px; }
.nav-toggle{ display:none; background:none; border:none; cursor:pointer; padding:8px; }
.nav-toggle span{ display:block; width:24px; height:2px; background:var(--pine-dark); margin:5px 0; }

@media (max-width: 920px){
  .nav-links{
    position:fixed; inset: 73px 0 0 0; background: var(--paper);
    flex-direction:column; align-items:flex-start; padding: 28px 24px;
    gap: 4px; transform: translateX(100%); transition: transform .28s ease;
    overflow-y:auto; border-top:1px solid var(--line);
  }
  .nav-links.open{ transform: translateX(0); }
  .nav-links a{ width:100%; padding: 14px 0; border-bottom:1px solid var(--line); font-size:1.05rem; }
  .nav-toggle{ display:block; }
  .nav-cta .btn-text{ display:none; }
}

/* ==========================================================================
   Buttons
   ========================================================================== */
.btn{
  display:inline-flex; align-items:center; justify-content:center; gap:8px;
  font-family: var(--font-body); font-weight:600; font-size:.95rem;
  padding: 14px 26px; border-radius: var(--radius);
  border: 1px solid transparent; cursor:pointer; white-space:nowrap;
  transition: transform .15s ease, background .15s ease, border-color .15s ease, color .15s ease;
}
.btn:hover{ transform: translateY(-1px); }
.btn-primary{ background: var(--pine); color: var(--white); }
.btn-primary:hover{ background: var(--pine-dark); }
.btn-gold{ background: var(--gold); color: var(--navy); }
.btn-gold:hover{ background: var(--gold-light); }
.btn-outline{ background: transparent; color: var(--navy); border-color: var(--pine); }
.btn-outline:hover{ background: var(--pine); color:var(--white); }
.btn-outline-light{ background: transparent; color: var(--cream); border-color: rgba(247,242,230,.5); }
.btn-outline-light:hover{ background: rgba(247,242,230,.1); border-color: var(--cream); }
.btn-sm{ padding: 10px 18px; font-size:.85rem; }
.btn-block{ width:100%; }

/* ==========================================================================
   Hero
   ========================================================================== */
.hero{
  background: linear-gradient(180deg, var(--pine-dark) 0%, var(--pine) 100%);
  color: var(--cream);
  padding: 88px 0 96px;
  position: relative;
  overflow:hidden;
}
.hero::after{
  content:"";
  position:absolute; right:-120px; top:-120px;
  width:420px; height:420px; border-radius:50%;
  border: 1px solid rgba(217,190,141,0.18);
}
.hero::before{
  content:"";
  position:absolute; right:-40px; top:-40px;
  width:280px; height:280px; border-radius:50%;
  border: 1px dashed rgba(217,190,141,0.15);
}
.hero-inner{ display:grid; grid-template-columns: 1.15fr .85fr; gap:56px; align-items:center; position:relative; z-index:1; }
@media (max-width: 900px){ .hero-inner{ grid-template-columns: 1fr; } }
.hero h1{ color: var(--white); }
.hero h1 em{ color: var(--gold-light); font-style: italic; }
.hero-sub{ font-size: 1.1rem; color: var(--cream-dark); max-width: 52ch; margin-bottom: 30px; }
.hero-ctas{ display:flex; gap:14px; flex-wrap:wrap; margin-bottom: 28px; }
.hero-trustline{ display:flex; gap:22px; flex-wrap:wrap; font-family: var(--font-mono); font-size:.74rem; letter-spacing:.04em; color: var(--gold-light); }
.hero-trustline span{ display:flex; align-items:center; gap:7px; }
.hero-trustline span::before{ content:"✓"; color: var(--gold); }

.hero-card{
  background: var(--paper); border-radius: var(--radius); padding: 32px;
  box-shadow: 0 24px 60px rgba(0,0,0,0.35);
  border: 1px solid var(--line);
}
.hero-card .eyebrow{ margin-bottom: 10px; }
.hero-card h3{ margin-bottom: 6px; }
.hero-card p.small{ color: var(--muted); font-size:.9rem; margin-bottom:20px; }
.hero-stamp{ display:flex; align-items:center; gap:14px; padding-top:18px; margin-top:18px; border-top:1px solid var(--line); }
.hero-stamp p{ margin:0; font-size:.84rem; color: var(--muted); }
.hero-stamp strong{ display:block; color: var(--navy); font-family: var(--font-display); font-size:1rem; }

/* ==========================================================================
   Trust bar
   ========================================================================== */
.trustbar{ background: var(--cream-dark); padding: 26px 0; border-bottom: 1px solid var(--line); }
.trustbar .container{ display:flex; flex-wrap:wrap; gap: 28px; justify-content: space-between; align-items:center; }
.trust-item{ display:flex; align-items:center; gap:10px; font-size:.88rem; font-weight:600; color: var(--navy); }
.trust-item .dot{ width:8px; height:8px; border-radius:50%; background: var(--gold); flex-shrink:0; }

/* ==========================================================================
   Section headers
   ========================================================================== */
.section-head{ max-width: 680px; margin-bottom: 44px; }
.section-head.center{ margin-left:auto; margin-right:auto; text-align:center; }

/* ==========================================================================
   Service cards / grids
   ========================================================================== */
.grid-3{ display:grid; grid-template-columns: repeat(3, 1fr); gap: 24px; }
.grid-2{ display:grid; grid-template-columns: repeat(2, 1fr); gap: 24px; }
.grid-4{ display:grid; grid-template-columns: repeat(4, 1fr); gap: 20px; }
@media (max-width: 900px){ .grid-3, .grid-4{ grid-template-columns: repeat(2,1fr); } }
@media (max-width: 620px){ .grid-3, .grid-2, .grid-4{ grid-template-columns: 1fr; } }

.card{
  background: var(--white); border:1px solid var(--line); border-radius: var(--radius);
  padding: 30px 26px; box-shadow: var(--shadow-card);
}
.card .num{ font-family: var(--font-mono); font-size:.72rem; color: var(--gold); letter-spacing:.08em; margin-bottom: 14px; display:block; }
.card h3{ margin-bottom:10px; }
.card p{ color: var(--muted); font-size:.94rem; margin-bottom: 0;}
.card a.card-link{ display:inline-block; margin-top:14px; font-size:.86rem; font-weight:600; color: var(--pine); border-bottom: 1px solid var(--gold); }

.service-block{ padding: 40px 0; border-bottom: 1px solid var(--line); display:grid; grid-template-columns: 260px 1fr; gap:40px; }
.service-block:last-child{ border-bottom:none; }
@media (max-width: 820px){ .service-block{ grid-template-columns: 1fr; gap:14px; } }
.service-block .service-label{ font-family: var(--font-mono); font-size:.72rem; letter-spacing:.08em; color: var(--gold); text-transform:uppercase; }
.service-block h2{ margin-top:6px; }
.service-block ul{ margin-top:14px; }
.service-block ul li{ position:relative; padding-left:20px; margin-bottom:8px; color:var(--charcoal); font-size:.95rem; }
.service-block ul li::before{ content:"—"; position:absolute; left:0; color: var(--gold); }

/* ==========================================================================
   Service area
   ========================================================================== */
.area-pill-row{ display:flex; flex-wrap:wrap; gap:10px; margin-top: 10px; }
.area-pill{
  font-family: var(--font-mono); font-size:.78rem; padding: 8px 14px;
  border: 1px solid var(--line); border-radius: 20px; color: var(--navy);
  background: var(--white);
}
.area-block{ padding: 34px 0; border-bottom:1px solid var(--line); }
.area-block:last-child{ border-bottom:none; }
.area-block h3{ display:flex; align-items:center; gap:10px; }
.area-block h3 .pin{ color: var(--gold); }
.map-placeholder{
  background: var(--pine-dark);
  color: var(--cream-dark);
  border-radius: var(--radius);
  min-height: 340px;
  display:flex; align-items:center; justify-content:center; text-align:center; flex-direction:column; gap:10px;
  padding: 30px;
  position:relative; overflow:hidden;
}
.map-placeholder::before{
  content:""; position:absolute; inset:0; opacity:.5;
  background-image: radial-gradient(circle, rgba(217,190,141,0.18) 1px, transparent 1px);
  background-size: 22px 22px;
}
.map-placeholder .seal{ margin-bottom: 6px; position:relative; z-index:1; }
.map-placeholder p{ color: var(--cream-dark); position:relative; z-index:1; max-width: 40ch; }

/* ==========================================================================
   Why us / stats
   ========================================================================== */
.why-strip{ background: var(--pine); color: var(--cream); }
.why-strip h2{ color: var(--white); }
.why-strip p{ color: var(--cream-dark); }
.why-list{ display:grid; grid-template-columns: repeat(2,1fr); gap: 28px 40px; margin-top: 30px; }
@media (max-width:700px){ .why-list{ grid-template-columns: 1fr; } }
.why-item{ display:flex; gap:16px; }
.why-item .seal{ --seal-size:46px; }
.why-item h4{ color: var(--white); margin-bottom:6px; font-family:var(--font-display); font-size:1.05rem; }
.why-item p{ font-size:.92rem; margin:0; }

/* ==========================================================================
   Testimonials
   ========================================================================== */
.testi-card{
  background: var(--cream); border: 1px solid var(--line); border-radius: var(--radius);
  padding: 28px; position:relative;
}
.testi-card::before{ content:"“"; font-family: var(--font-display); font-size:3.4rem; color: var(--gold-light); position:absolute; top:6px; left:18px; line-height:1; }
.testi-card p.quote{ padding-top: 22px; font-style: italic; color: var(--charcoal); font-size:.98rem; }
.testi-stars{ color: var(--gold); letter-spacing:2px; margin-bottom:10px; font-size:.9rem; }
.testi-name{ font-weight:700; color: var(--navy); font-size:.9rem; margin-top:14px; }
.testi-role{ color: var(--muted); font-size:.8rem; }
.testi-note{ text-align:center; font-size:.82rem; color:var(--muted); margin-top:20px; font-family: var(--font-mono); }

/* ==========================================================================
   FAQ / accordion
   ========================================================================== */
.faq-item{ border-bottom: 1px solid var(--line); }
.faq-q{
  width:100%; text-align:left; background:none; border:none; cursor:pointer;
  padding: 20px 0; display:flex; justify-content:space-between; align-items:center; gap:16px;
  font-family: var(--font-display); font-size: 1.05rem; color: var(--navy); font-weight:500;
}
.faq-q .icon{ font-family: var(--font-mono); color: var(--gold); font-size:1.2rem; flex-shrink:0; transition: transform .2s ease; }
.faq-item.open .icon{ transform: rotate(45deg); }
.faq-a{ max-height:0; overflow:hidden; transition: max-height .25s ease; }
.faq-a p{ padding-bottom: 20px; color: var(--muted); max-width: 68ch; }
.faq-item.open .faq-a{ max-height: 320px; }

/* ==========================================================================
   CTA band
   ========================================================================== */
.cta-band{
  background: var(--pine-dark); color: var(--cream);
  border-radius: var(--radius);
  padding: 48px 40px;
  display:flex; align-items:center; justify-content:space-between; gap:30px; flex-wrap:wrap;
  position:relative; overflow:hidden;
}
.cta-band::after{ content:""; position:absolute; left:-60px; bottom:-60px; width:200px; height:200px; border-radius:50%; border:1px dashed rgba(217,190,141,.18); }
.cta-band h2{ color: var(--white); margin-bottom: 8px; }
.cta-band p{ color: var(--cream-dark); margin:0; }
.cta-band .actions{ display:flex; gap:12px; flex-wrap:wrap; position:relative; z-index:1; }

/* ==========================================================================
   Forms
   ========================================================================== */
.form-card{ background: var(--white); border:1px solid var(--line); border-radius: var(--radius); padding: 34px; box-shadow: var(--shadow-card); }
.form-row{ display:grid; grid-template-columns: 1fr 1fr; gap: 18px; }
@media (max-width:640px){ .form-row{ grid-template-columns: 1fr; } }
.field{ margin-bottom: 18px; }
.field label{ display:block; font-size:.82rem; font-weight:600; color: var(--navy); margin-bottom:6px; }
.field input, .field select, .field textarea{
  width:100%; padding: 12px 14px; border:1px solid var(--line); border-radius: var(--radius);
  font-family: var(--font-body); font-size:.95rem; background: var(--paper); color: var(--ink);
}
.field input:focus, .field select:focus, .field textarea:focus{ border-color: var(--gold); background: var(--white); }
.field textarea{ resize: vertical; min-height: 110px; }
.form-note{ font-size:.78rem; color: var(--muted); margin-top:-6px; margin-bottom:18px; }
.form-success{ display:none; background: var(--cream); border:1px solid var(--gold-light); border-radius: var(--radius); padding: 18px 20px; font-size:.9rem; color: var(--navy); margin-top:14px; }
.form-success.show{ display:block; }

/* ==========================================================================
   Hours / contact info blocks
   ========================================================================== */
.hours-list{ }
.hours-list li{ display:flex; justify-content:space-between; padding: 10px 0; border-bottom: 1px solid var(--line); font-size:.94rem; }
.hours-list li span:last-child{ font-family: var(--font-mono); color: var(--navy); }
.contact-info-row{ display:flex; gap:14px; align-items:flex-start; margin-bottom:22px; }
.contact-info-row .ic{ width:38px; height:38px; border-radius:50%; background:var(--cream-dark); display:flex; align-items:center; justify-content:center; flex-shrink:0; color:var(--pine); font-family:var(--font-mono); font-size:.8rem; }
.contact-info-row h4{ margin-bottom:2px; font-family:var(--font-display); font-size:1rem; }
.contact-info-row p{ margin:0; color: var(--muted); font-size:.9rem; }

/* ==========================================================================
   Breadcrumb / page header (interior pages)
   ========================================================================== */
.page-header{
  background: var(--cream-dark);
  padding: 54px 0 44px;
  border-bottom: 1px solid var(--line);
}
.breadcrumb{ font-family: var(--font-mono); font-size:.76rem; color: var(--muted); margin-bottom:14px; }
.breadcrumb a{ color: var(--pine); }
.page-header h1{ margin-bottom: 10px; }
.page-header .lead{ max-width: 62ch; color: var(--muted); font-size:1.05rem; }

/* ==========================================================================
   Footer
   ========================================================================== */
footer.site{ background: var(--pine-dark); color: var(--cream-dark); padding: 60px 0 0; }
.footer-grid{ display:grid; grid-template-columns: 1.4fr 1fr 1fr 1fr; gap: 40px; padding-bottom: 40px; border-bottom: 1px solid rgba(247,242,230,0.12); }
@media (max-width:900px){ .footer-grid{ grid-template-columns: 1fr 1fr; } }
@media (max-width:560px){ .footer-grid{ grid-template-columns: 1fr; } }
.footer-grid h4{ color: var(--gold-light); font-family: var(--font-mono); font-size:.74rem; letter-spacing:.1em; text-transform:uppercase; margin-bottom: 16px; font-weight:500; }
.footer-grid a, .footer-grid p{ color: var(--cream-dark); font-size:.88rem; }
.footer-grid li{ margin-bottom: 10px; }
.footer-grid a:hover{ color: var(--white); }
.footer-brand{ display:flex; align-items:center; gap:10px; margin-bottom:14px; }
.footer-brand .brand-name{ color: var(--white); }
.footer-brand .brand-name small{ color: var(--gold-light); }
.footer-bottom{ display:flex; justify-content:space-between; align-items:center; padding: 22px 0 26px; flex-wrap:wrap; gap:10px; font-size:.78rem; color: rgba(247,242,230,0.55); }

/* ==========================================================================
   Sticky mobile call bar
   ========================================================================== */
.mobile-callbar{
  position: fixed; left:0; right:0; bottom:0; z-index:60;
  display:none; grid-template-columns: 1fr 1fr; gap: 1px;
  background: var(--line);
  box-shadow: 0 -6px 20px rgba(0,0,0,0.15);
}
.mobile-callbar a{
  background: var(--pine); color: var(--white); text-align:center; padding: 14px 0;
  font-weight:700; font-size:.92rem; display:flex; align-items:center; justify-content:center; gap:8px;
}
.mobile-callbar a.text{ background: var(--gold); color: var(--navy); }
@media (max-width: 720px){
  .mobile-callbar{ display:grid; }
  body{ padding-bottom: 54px; }
}

/* ==========================================================================
   Misc utility
   ========================================================================== */
.text-center{ text-align:center; }
.mt-0{ margin-top:0; }
.badge-row{ display:flex; flex-wrap:wrap; gap:12px; }
.badge{ font-family: var(--font-mono); font-size:.72rem; padding:8px 12px; border:1px solid var(--line); border-radius: 3px; color: var(--navy); }
.two-col{ display:grid; grid-template-columns: 1fr 1fr; gap: 56px; align-items:center; }
@media (max-width:860px){ .two-col{ grid-template-columns: 1fr; gap:30px; } }
.divider{ height:1px; background: var(--line); border:none; margin: 0; }
.pull-quote{ font-family: var(--font-display); font-style:italic; font-size:1.35rem; color: var(--navy); border-left: 3px solid var(--gold); padding-left: 22px; margin: 24px 0; }
.credential-strip{ display:flex; flex-wrap:wrap; gap: 22px; margin-top: 20px; }
.credential{ display:flex; align-items:center; gap:10px; font-size:.85rem; color: var(--navy); font-weight:600; }
.credential .seal{ --seal-size:32px; }

/* ==========================================================================
   WordPress-specific adjustments
   ========================================================================== */
/* Keep sticky header below the WP admin toolbar when logged in */
body.admin-bar header.site{ top: 32px; }
@media (max-width: 782px){ body.admin-bar header.site{ top: 46px; } }

/* Entry content: default styling for whatever editors type in the block editor */
.entry-content{ font-size: 1.02rem; }
.entry-content > *:first-child{ margin-top: 0; }
.entry-content h2{ margin-top: 1.4em; }
.entry-content h3{ margin-top: 1.2em; }
.entry-content ul, .entry-content ol{ margin: 0 0 1.2em; padding-left: 1.3em; }
.entry-content ul{ list-style: none; padding-left: 0; }
.entry-content ul li{ position:relative; padding-left:20px; margin-bottom:8px; }
.entry-content ul li::before{ content:"—"; position:absolute; left:0; color: var(--gold); }
.entry-content ol{ list-style: decimal; padding-left: 1.4em; }
.entry-content ol li{ margin-bottom: 8px; }
.entry-content a{ color: var(--pine); text-decoration: underline; text-decoration-color: var(--gold); text-underline-offset: 3px; }
.entry-content img{ border-radius: var(--radius); }
.entry-content figcaption{ font-family: var(--font-mono); font-size:.78rem; color: var(--muted); margin-top:8px; }
.entry-content blockquote{ font-family: var(--font-display); font-style:italic; font-size:1.35rem; color: var(--navy); border-left: 3px solid var(--gold); padding-left: 22px; margin: 24px 0; }

/* Screen-reader only helper (WordPress convention) */
.screen-reader-text{
  border:0; clip:rect(1px,1px,1px,1px); clip-path: inset(50%);
  height:1px; margin:-1px; overflow:hidden; padding:0; position:absolute; width:1px; word-wrap:normal;
}
.skip-link{ position:absolute; left:-9999px; top:0; background:var(--pine-dark); color:var(--white); padding:12px 18px; z-index:999; }
.skip-link:focus{ left:12px; top:12px; }

/* WordPress alignment classes used by the block editor */
.alignwide{ margin-left: -60px; margin-right: -60px; max-width: none; }
.alignfull{ width: 100vw; position: relative; left: 50%; right: 50%; margin-left: -50vw; margin-right: -50vw; max-width: none; }
.aligncenter{ margin-left:auto; margin-right:auto; display:block; }

/* Form submission notices (from admin-post.php redirects) */
.form-alert{ border-radius: var(--radius); padding: 16px 18px; font-size: .9rem; margin-bottom: 18px; }
.form-alert.success{ background: var(--cream); border: 1px solid var(--gold-light); color: var(--navy); }
.form-alert.error{ background: #FBEAEA; border: 1px solid #E0A9A9; color: #7A2323; }

/* ==========================================================================
   Scroll-reveal animation system
   Elements get .reveal added by JS, then .is-visible when scrolled into
   view. Respects prefers-reduced-motion via the global rule near the top
   of this file, which zeroes out transition-duration.
   ========================================================================== */
.reveal{
  opacity: 0;
  transform: translateY(28px);
  transition: opacity .7s cubic-bezier(.16,1,.3,1), transform .7s cubic-bezier(.16,1,.3,1);
  transition-delay: var(--reveal-delay, 0s);
}
.reveal.is-visible{ opacity: 1; transform: translateY(0); }

/* Sticky header gains a shadow once the page has scrolled */
header.site.is-scrolled{ box-shadow: 0 4px 18px rgba(16,36,28,0.08); }

/* Decorative hero rings drift slowly for a bit of life */
@keyframes pine-seal-ring-spin{ from{ transform: rotate(0deg); } to{ transform: rotate(360deg); } }
.hero::after{ animation: pine-seal-ring-spin 90s linear infinite; }
.hero::before{ animation: pine-seal-ring-spin 70s linear infinite reverse; }

/* ==========================================================================
   Stats / by-the-numbers band (animated count-up via JS)
   ========================================================================== */
.stats-band{ background: var(--paper); border-top:1px solid var(--line); border-bottom:1px solid var(--line); }
.stats-grid{ display:grid; grid-template-columns: repeat(4,1fr); gap: 20px; text-align:center; }
@media (max-width: 760px){ .stats-grid{ grid-template-columns: repeat(2,1fr); gap: 30px 20px; } }
.stat{ padding: 6px 10px; }
.stat .stat-number{
  font-family: var(--font-display); font-weight: 400; font-size: clamp(2rem, 4vw, 2.8rem);
  color: var(--navy); line-height:1; display:flex; align-items:baseline; justify-content:center; gap:2px;
}
.stat .stat-number .suffix{ font-size: .55em; color: var(--gold); font-weight:500; }
.stat .stat-label{ font-family: var(--font-mono); font-size:.72rem; letter-spacing:.08em; text-transform:uppercase; color: var(--muted); margin-top:8px; }

/* ==========================================================================
   Process timeline (enhanced "how it works" — connected steps)
   ========================================================================== */
.timeline{ position:relative; padding-left: 8px; }
.timeline::before{
  content:""; position:absolute; left: 23px; top: 8px; bottom: 8px; width:1px;
  background: repeating-linear-gradient(to bottom, var(--gold-light) 0 6px, transparent 6px 12px);
}
.timeline-step{ position:relative; padding-left: 56px; margin-bottom: 26px; }
.timeline-step:last-child{ margin-bottom:0; }
.timeline-step .step-dot{
  position:absolute; left:0; top:0; width:46px; height:46px; border-radius:50%;
  background: var(--pine); color: var(--white); display:flex; align-items:center; justify-content:center;
  font-family: var(--font-display); font-weight:500; font-size:1.1rem; z-index:1;
  box-shadow: 0 0 0 6px var(--paper);
}
.timeline-step h4{ margin-bottom:4px; font-family:var(--font-display); font-size:1.05rem; }
.timeline-step p{ margin:0; font-size:.92rem; color: var(--muted); }

/* ==========================================================================
   Blog: card grid, single post, archive
   ========================================================================== */
.blog-grid{ display:grid; grid-template-columns: repeat(3, 1fr); gap: 28px; }
@media (max-width: 900px){ .blog-grid{ grid-template-columns: repeat(2,1fr); } }
@media (max-width: 620px){ .blog-grid{ grid-template-columns: 1fr; } }

.post-card{
  background: var(--white); border:1px solid var(--line); border-radius: var(--radius);
  overflow:hidden; box-shadow: var(--shadow-card); display:flex; flex-direction:column;
  transition: transform .25s ease, box-shadow .25s ease;
}
.post-card:hover{ transform: translateY(-4px); box-shadow: 0 16px 34px rgba(16,36,28,0.12); }
.post-card .post-thumb{ aspect-ratio: 16/10; overflow:hidden; background: var(--cream-dark); }
.post-card .post-thumb img{ width:100%; height:100%; object-fit:cover; display:block; transition: transform .5s ease; }
.post-card:hover .post-thumb img{ transform: scale(1.05); }
.post-card .post-thumb.no-image{ display:flex; align-items:center; justify-content:center; }
.post-card-body{ padding: 22px 22px 24px; display:flex; flex-direction:column; flex:1; }
.post-meta{ font-family: var(--font-mono); font-size:.7rem; letter-spacing:.06em; text-transform:uppercase; color: var(--gold); margin-bottom:10px; display:flex; gap:10px; flex-wrap:wrap; align-items:center; }
.post-meta .sep{ color: var(--line); }
.post-card h3{ font-size: 1.15rem; margin-bottom: 10px; }
.post-card h3 a{ color: var(--navy); }
.post-card p{ color: var(--muted); font-size:.92rem; margin-bottom: 16px; flex:1; }
.post-card .card-link{ font-size:.86rem; font-weight:600; color: var(--pine); border-bottom: 1px solid var(--gold); align-self:flex-start; }

.single-post-header{ max-width: 820px; margin: 0 auto; text-align:center; }
.single-post-header .post-meta{ justify-content:center; }
.single-post-thumb{ max-width: 1000px; margin: 0 auto 8px; border-radius: var(--radius); overflow:hidden; }
.single-post-body{ max-width: 720px; margin: 0 auto; }
.author-box{
  max-width: 720px; margin: 48px auto 0; padding: 24px; background: var(--cream);
  border:1px solid var(--line); border-radius: var(--radius); display:flex; gap:16px; align-items:center;
}
.author-box img{ width:56px; height:56px; border-radius:50%; object-fit:cover; flex-shrink:0; }
.author-box h4{ margin-bottom:2px; font-size:1rem; }
.author-box p{ margin:0; font-size:.86rem; color: var(--muted); }

.pagination-row{ display:flex; justify-content:center; gap:10px; margin-top: 40px; flex-wrap:wrap; }
.pagination-row a, .pagination-row span{
  font-family: var(--font-mono); font-size:.85rem; padding: 10px 16px; border:1px solid var(--line);
  border-radius: var(--radius); color: var(--navy);
}
.pagination-row a:hover{ border-color: var(--gold); color: var(--pine); }
.pagination-row span.current{ background: var(--pine); color: var(--white); border-color: var(--pine); }

/* Category pill on archive/blog headers */
.cat-pill{
  display:inline-block; font-family: var(--font-mono); font-size:.7rem; letter-spacing:.06em;
  text-transform:uppercase; color: var(--gold); background: var(--cream-dark); padding:5px 10px; border-radius: 20px;
}
