/* ============================================================
   JOHN LACK WEBSITE · CANONICAL GLOBAL SYSTEM
   Shared tokens, header/navigation, footer, typography, buttons,
   cards, FAQ, spacing, accessibility and responsive safeguards.
   Page CSS may define unique layouts, but should not create a
   parallel visual system for these shared components.
   ============================================================ */

:root{
  --color-bg:#f4f0e7;
  --color-paper:#fbfaf6;
  --color-ink:#24302b;
  --color-muted:#65706b;
  --color-sage:#bcc9b3;
  --color-sage-dark:#53685c;
  --color-blue:#dbe7ec;
  --color-sand:#e7d6bd;
  --color-rose:#dfc7c2;
  --color-dark-section:#26332e;
  --color-dark-section-text:#edf0ed;
  --color-line:rgba(36,48,43,.14);
  --site-max:1180px;
  --readable-max:720px;
  --legal-max:790px;
  --faq-max:820px;
  --radius-large:26px;
  --radius-card:22px;
  --radius-small:16px;
  --shadow-standard:0 16px 45px rgba(40,48,43,.09);
  --section-space:92px;
  --header-height:84px;

  /* legacy aliases retained while older page CSS is being consolidated */
  --bg:var(--color-bg);
  --paper:var(--color-paper);
  --ink:var(--color-ink);
  --muted:var(--color-muted);
  --sage:var(--color-sage);
  --sage-dark:var(--color-sage-dark);
  --blue:var(--color-blue);
  --sand:var(--color-sand);
  --rose:var(--color-rose);
  --line:var(--color-line);
  --max:var(--site-max);
  --radius:var(--radius-large);
  --shadow:var(--shadow-standard);
}

*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;max-width:100%;overflow-x:hidden}
body{
  margin:0;
  max-width:100%;
  overflow-x:hidden;
  background:var(--color-paper);
  color:var(--color-ink);
  font-family:"Lato",system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  font-size:18px;
  line-height:1.65;
}
img{max-width:100%;height:auto;display:block}
a{color:inherit}

/* Accessibility */
.skip-link{
  position:fixed;
  left:16px;
  top:12px;
  z-index:2000;
  transform:translateY(-160%);
  padding:10px 14px;
  border-radius:999px;
  background:var(--color-ink);
  color:#fff;
  font-family:"Montserrat",sans-serif;
  font-size:.82rem;
  text-decoration:none;
  transition:transform .18s ease;
}
.skip-link:focus{transform:translateY(0)}
:focus-visible{outline:3px solid rgba(83,104,92,.42);outline-offset:4px}

/* Shared page geometry */
.container{
  width:min(var(--site-max),calc(100% - 40px));
  margin-inline:auto;
  min-width:0;
}
.section{padding:var(--section-space) 0}
main,section,header,footer,.container{max-width:100%;min-width:0}

/* Shared typography */
h1,h2,h3,h4{
  font-family:"Montserrat",system-ui,sans-serif;
  font-weight:500;
  letter-spacing:-.025em;
  line-height:1.08;
}
p{line-height:1.65}
.eyebrow{
  font-family:"Montserrat",sans-serif;
  text-transform:uppercase;
  letter-spacing:.13em;
  font-size:.78rem;
  font-weight:600;
  color:var(--color-sage-dark);
}
.microcopy{color:var(--color-muted);font-size:.84rem}
.small-link{
  font-family:"Montserrat",sans-serif;
  font-size:.82rem;
  font-weight:600;
  text-underline-offset:4px;
}

/* Shared buttons */
a.button,button.button,.button{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:10px;
  padding:14px 22px;
  border:1px solid var(--color-ink);
  border-radius:999px;
  background:var(--color-ink);
  color:#fff;
  font-family:"Montserrat",sans-serif;
  font-size:.82rem;
  font-weight:600;
  letter-spacing:.035em;
  line-height:1.2;
  text-decoration:none;
  cursor:pointer;
  transition:transform .18s ease,box-shadow .18s ease,background .18s ease;
}
a.button:hover,button.button:hover,.button:hover{
  transform:translateY(-2px);
  box-shadow:0 8px 20px rgba(36,48,43,.16);
}
a.button.ghost,button.button.ghost,.button.ghost{
  background:transparent;
  color:var(--color-ink);
}

/* Shared cards: common geometry, page-specific backgrounds remain allowed. */
.card,.trust-card,.process-card,.legal-card,.recognition-tile,.support-choice{
  border-radius:var(--radius-card);
  border:1px solid var(--color-line);
}

/* Canonical FAQ */
.faq,.faq-list{
  width:min(var(--faq-max),100%);
  margin-inline:auto;
}
.faq details,.faq-list details{
  border-bottom:1px solid var(--color-line);
}
.faq details:first-child,.faq-list details:first-child{border-top:1px solid var(--color-line)}
.faq summary,.faq-list summary{
  position:relative;
  padding:18px 42px 18px 0;
  list-style:none;
  cursor:pointer;
  font-family:"Montserrat",sans-serif;
  font-weight:600;
  line-height:1.4;
}
.faq summary::-webkit-details-marker,.faq-list summary::-webkit-details-marker{display:none}
.faq summary::after,.faq-list summary::after{
  content:"+";
  position:absolute;
  right:0;
  top:50%;
  transform:translateY(-50%);
  font-size:1.35rem;
  font-weight:400;
  color:var(--color-sage-dark);
}
.faq details[open] summary::after,.faq-list details[open] summary::after{content:"−"}
.faq details > p,.faq-list details > p{
  margin:-2px 0 18px;
  color:var(--color-muted);
  font-family:"Lato",sans-serif;
}

/* ============================================================
   CANONICAL HEADER / NAVIGATION
   The global JS replaces legacy page headers with this markup.
   ============================================================ */
body .site-nav{
  position:sticky !important;
  top:0;
  z-index:1000 !important;
  width:100%;
  border-bottom:1px solid var(--color-line) !important;
  background:rgba(251,250,246,.94) !important;
  backdrop-filter:blur(14px);
  -webkit-backdrop-filter:blur(14px);
}
body .site-nav .nav-inner{
  min-height:var(--header-height) !important;
  display:flex !important;
  align-items:center !important;
  justify-content:space-between !important;
  gap:30px !important;
}
body .site-nav .brand{
  flex:0 0 auto;
  color:var(--color-ink) !important;
  font-family:"Montserrat",sans-serif !important;
  font-size:1.05rem !important;
  font-weight:600 !important;
  letter-spacing:.01em !important;
  line-height:1 !important;
  text-decoration:none !important;
}
body .site-nav .desktop-nav{
  display:flex !important;
  align-items:center !important;
  gap:34px !important;
  margin-left:auto !important;
}
body .site-nav .desktop-nav > a,
body .site-nav .nav-dropdown-toggle{
  color:#3d4843 !important;
  font-family:"Montserrat",sans-serif !important;
  font-size:.92rem !important;
  font-weight:500 !important;
  line-height:1.2 !important;
  text-decoration:none !important;
  white-space:nowrap;
}
body .site-nav .desktop-nav > a:not(.nav-cta):hover,
body .site-nav .desktop-nav > a[aria-current="page"],
body .site-nav .nav-dropdown-toggle:hover,
body .site-nav .nav-dropdown.is-current .nav-dropdown-toggle{
  color:var(--color-sage-dark) !important;
}
body .site-nav .nav-cta,
body .site-nav .nav-cta:visited,
body .site-nav .nav-cta:hover,
body .site-nav .nav-cta:focus{
  padding:10px 16px !important;
  color:#fff !important;
}

body .site-nav .nav-dropdown{
  display:block !important;
  position:relative !important;
}
body .site-nav .nav-dropdown-toggle{
  display:flex !important;
  align-items:center !important;
  gap:6px !important;
  padding:20px 0 !important;
  border:0 !important;
  background:none !important;
  cursor:pointer !important;
}
body .site-nav .nav-chevron{font-size:.9rem;transform:translateY(-1px)}
body .site-nav .nav-dropdown-menu{
  position:absolute !important;
  top:calc(100% - 6px) !important;
  left:-18px !important;
  z-index:1100 !important;
  width:250px !important;
  padding:8px !important;
  border:1px solid var(--color-line) !important;
  border-radius:18px !important;
  background:var(--color-paper) !important;
  box-shadow:var(--shadow-standard) !important;
  opacity:0 !important;
  visibility:hidden !important;
  transform:translateY(-6px) !important;
  transition:opacity .18s ease,visibility .18s ease,transform .18s ease !important;
}
body .site-nav .nav-dropdown:hover .nav-dropdown-menu,
body .site-nav .nav-dropdown:focus-within .nav-dropdown-menu,
body .site-nav .nav-dropdown.is-open .nav-dropdown-menu{
  opacity:1 !important;
  visibility:visible !important;
  transform:translateY(0) !important;
}
body .site-nav .nav-dropdown-menu a{
  display:block !important;
  padding:11px 12px !important;
  border-radius:10px !important;
  color:var(--color-ink) !important;
  font-family:"Montserrat",sans-serif !important;
  font-size:.88rem !important;
  font-weight:500 !important;
  line-height:1.35 !important;
  text-decoration:none !important;
}
body .site-nav .nav-dropdown-menu a:hover,
body .site-nav .nav-dropdown-menu a:focus-visible,
body .site-nav .nav-dropdown-menu a[aria-current="page"]{
  background:var(--color-bg) !important;
}

/* Mobile trigger is intentionally hidden on desktop. */
body .site-nav .global-menu-toggle{
  display:none !important;
  width:44px !important;
  height:44px !important;
  padding:0 !important;
  border:0 !important;
  background:transparent !important;
  flex-direction:column !important;
  align-items:center !important;
  justify-content:center !important;
  gap:5px !important;
  cursor:pointer !important;
}
body .site-nav .global-menu-toggle span{
  display:block !important;
  width:24px !important;
  height:2px !important;
  border-radius:2px !important;
  background:var(--color-ink) !important;
}

body .site-nav .menu-overlay{
  position:fixed !important;
  inset:0 !important;
  z-index:1200 !important;
  background:rgba(26,34,30,.42) !important;
  backdrop-filter:blur(8px);
  -webkit-backdrop-filter:blur(8px);
  opacity:0 !important;
  visibility:hidden !important;
  pointer-events:none !important;
  transition:opacity .2s ease,visibility .2s ease !important;
}
body .site-nav .menu-overlay.open{
  opacity:1 !important;
  visibility:visible !important;
  pointer-events:auto !important;
}
body .site-nav .menu-overlay-panel{
  position:absolute !important;
  top:0 !important;
  right:0 !important;
  width:min(440px,92vw) !important;
  height:100% !important;
  padding:34px 34px 42px !important;
  overflow-y:auto !important;
  background:var(--color-paper) !important;
  box-shadow:-20px 0 60px rgba(20,28,24,.14) !important;
  transform:translateX(100%) !important;
  transition:transform .25s ease !important;
}
body .site-nav .menu-overlay.open .menu-overlay-panel{transform:translateX(0) !important}
body .site-nav .menu-close{
  display:flex !important;
  align-items:center !important;
  justify-content:center !important;
  width:42px !important;
  height:42px !important;
  margin-left:auto !important;
  padding:0 !important;
  border:0 !important;
  background:transparent !important;
  color:var(--color-ink) !important;
  font-size:2rem !important;
  line-height:1 !important;
  cursor:pointer !important;
}
body .site-nav .overlay-nav{
  display:grid !important;
  gap:2px !important;
  margin-top:34px !important;
}
body .site-nav .overlay-nav a,
body .site-nav .overlay-label{
  display:block !important;
  border:0 !important;
  text-decoration:none !important;
}
body .site-nav .overlay-nav > a,
body .site-nav .overlay-group > a{
  padding:12px 0 !important;
  color:var(--color-ink) !important;
  font-family:"Montserrat",sans-serif !important;
  font-size:1.08rem !important;
  font-weight:500 !important;
}
body .site-nav .overlay-nav a:hover,
body .site-nav .overlay-nav a[aria-current="page"]{color:var(--color-sage-dark) !important}
body .site-nav .overlay-group{
  padding-bottom:18px !important;
  margin-bottom:10px !important;
  border-bottom:1px solid var(--color-line) !important;
}
body .site-nav .overlay-label{
  margin-bottom:6px !important;
  color:var(--color-muted) !important;
  font-family:"Montserrat",sans-serif !important;
  font-size:.72rem !important;
  letter-spacing:.09em !important;
  text-transform:uppercase !important;
}

/* ============================================================
   CANONICAL FOOTER
   ============================================================ */
body .site-footer{
  padding:68px 0 26px !important;
  background:var(--color-dark-section) !important;
  color:var(--color-dark-section-text) !important;
}
body .site-footer .footer-grid{
  display:grid !important;
  grid-template-columns:1.4fr repeat(3,.75fr) !important;
  gap:44px !important;
  align-items:start !important;
}
body .site-footer .footer-brand .brand{
  color:var(--color-dark-section-text) !important;
  font-family:"Montserrat",sans-serif !important;
  font-size:1.08rem !important;
  font-weight:600 !important;
  text-decoration:none !important;
}
body .site-footer p{
  max-width:330px !important;
  margin:14px 0 20px !important;
  color:#cfd6d1 !important;
  font-size:.94rem !important;
}
body .site-footer h3{
  margin:0 0 14px !important;
  color:var(--color-dark-section-text) !important;
  font-size:.82rem !important;
  font-weight:600 !important;
  letter-spacing:.06em !important;
  text-transform:uppercase !important;
}
body .site-footer .footer-links,
body .site-footer .footer-contact{
  display:grid !important;
  gap:9px !important;
}
body .site-footer a{
  color:#cfd6d1 !important;
  font-family:"Lato",sans-serif !important;
  font-size:.91rem !important;
  text-decoration:none !important;
}
body .site-footer a:hover{color:#fff !important}
body .site-footer .footer-bottom{
  margin-top:46px !important;
  padding-top:18px !important;
  border-top:1px solid rgba(255,255,255,.12) !important;
  color:#aebbb3 !important;
  font-size:.8rem !important;
}

/* Homepage service cards are the canonical pathway-card reference. */
body .home-service-card{
  border:1px solid var(--color-line) !important;
  border-radius:var(--radius-large) !important;
}
body .home-service-card.service-individual{background:#f4f0e8 !important}
body .home-service-card.service-couples{background:#e4edf0 !important}
body .home-service-card.service-separation{background:#e8ece3 !important}

/* Overflow safety: animated tracks may be wide; the document may not be. */
.org-carousel,.testimonial-slider-viewport,.logo-marquee{max-width:100%;min-width:0;overflow:hidden}
.grid,.hero-grid,.home-about-grid,.home-approach-grid,.recognition-grid,.footer-grid{min-width:0}
.grid > *,.hero-grid > *,.home-about-grid > *,.home-approach-grid > *,.recognition-grid > *,.footer-grid > *{min-width:0}

@media(max-width:900px){
  :root{--section-space:68px;--header-height:76px}
  .container{width:min(var(--site-max),calc(100% - 32px))}
  body .site-nav .desktop-nav{display:none !important}
  body .site-nav .nav-dropdown{display:none !important}
  body .site-nav .global-menu-toggle{display:flex !important}
  body .site-footer .footer-grid{grid-template-columns:1fr 1fr !important;gap:34px 28px !important}
  body .site-footer .footer-brand{grid-column:1/-1 !important}
}

@media(max-width:600px){
  :root{--section-space:58px}
  body{font-size:17px}
  .container{width:min(var(--site-max),calc(100% - 28px))}
  body .site-nav .menu-overlay-panel{width:100% !important;padding:24px 24px 36px !important}
  body .site-footer{padding-top:54px !important}
  body .site-footer .footer-grid{grid-template-columns:1fr !important;gap:28px !important}
  body .site-footer .footer-brand{grid-column:auto !important}
  .hero-actions .button{width:100%}
}

@media(prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation-duration:.01ms !important;animation-iteration-count:1 !important;transition-duration:.01ms !important;scroll-behavior:auto !important}
}
