/*
Theme Name: Generational Wealth
Theme URI: https://generationalwealth.org
Author: GenerationalWealth.org
Description: Institutional WordPress theme for the Income-to-Wealth Assessment™ and GenerationalWealth.org.
Version: 1.0.0
Requires at least: 6.5
Tested up to: 6.8
Requires PHP: 8.1
Text Domain: generational-wealth
*/

:root {
  --gw-emerald: #0b3b34;
  --gw-emerald-2: #0e4a40;
  --gw-navy: #0d2233;
  --gw-gold: #c79a47;
  --gw-gold-dark: #a97927;
  --gw-sage: #dde8e1;
  --gw-paper: #f3eee5;
  --gw-white: #fafaf7;
  --gw-text: #324743;
  --gw-muted: #6d7b77;
  --gw-line: #d9dfdb;
  --gw-shadow: 0 18px 45px rgba(13, 34, 51, .08);
  --gw-radius: 18px;
  --gw-serif: "DM Serif Display", Georgia, serif;
  --gw-sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  --gw-max: 1240px;
}

*,
*::before,
*::after { box-sizing: border-box; }

html { scroll-behavior: smooth; }

body {
  margin: 0;
  background: var(--gw-white);
  color: var(--gw-text);
  font-family: var(--gw-sans);
  font-size: 17px;
  line-height: 1.65;
  -webkit-font-smoothing: antialiased;
}

body.gw-menu-open { overflow: hidden; }

img { display: block; max-width: 100%; height: auto; }
a { color: inherit; text-decoration: none; }
button, input, select, textarea { font: inherit; }

h1, h2, h3, h4 {
  margin: 0 0 .6em;
  color: var(--gw-emerald);
  font-family: var(--gw-serif);
  font-weight: 400;
  line-height: 1.03;
  letter-spacing: -.025em;
}

h1 { font-size: clamp(3.35rem, 6vw, 5.75rem); }
h2 { font-size: clamp(2.45rem, 4.5vw, 4rem); }
h3 { font-size: clamp(1.65rem, 2.4vw, 2.25rem); }
h4 { font-size: 1.35rem; }
p { margin: 0 0 1.15em; }

.gw-shell { width: min(calc(100% - 48px), var(--gw-max)); margin-inline: auto; }
.gw-section { padding: 96px 0; }
.gw-section--tight { padding: 64px 0; }
.gw-section--paper { background: var(--gw-paper); }
.gw-section--white { background: #fff; }
.gw-section--navy { background: var(--gw-navy); color: #fff; }
.gw-section--emerald { background: var(--gw-emerald); color: #fff; }
.gw-section--navy h2,
.gw-section--navy h3,
.gw-section--emerald h2,
.gw-section--emerald h3 { color: #fff; }

.gw-eyebrow {
  display: block;
  margin-bottom: 20px;
  color: var(--gw-gold-dark);
  font-size: .75rem;
  font-weight: 700;
  letter-spacing: .16em;
  text-transform: uppercase;
}

.gw-lead { max-width: 720px; color: var(--gw-text); font-size: 1.18rem; }
.gw-muted { color: var(--gw-muted); }
.gw-center { text-align: center; }
.gw-center .gw-lead { margin-inline: auto; }

.gw-button {
  display: inline-flex;
  min-height: 50px;
  align-items: center;
  justify-content: center;
  gap: 10px;
  padding: 12px 24px;
  border: 1px solid var(--gw-emerald);
  border-radius: 7px;
  background: var(--gw-emerald);
  color: #fff;
  font-size: .93rem;
  font-weight: 700;
  line-height: 1;
  transition: transform .2s ease, background .2s ease, color .2s ease;
}
.gw-button:hover,
.gw-button:focus-visible { transform: translateY(-2px); background: var(--gw-emerald-2); }
.gw-button--outline { background: transparent; color: var(--gw-emerald); }
.gw-button--outline:hover { color: #fff; }
.gw-button--gold { border-color: var(--gw-gold); background: var(--gw-gold); color: var(--gw-navy); }
.gw-button--gold:hover { background: #d8ab5a; }
.gw-button--light { border-color: rgba(255,255,255,.7); background: transparent; color: #fff; }
.gw-actions { display: flex; flex-wrap: wrap; gap: 14px; margin-top: 30px; }

.gw-site-header {
  position: sticky;
  z-index: 1000;
  top: 0;
  border-bottom: 1px solid var(--gw-line);
  background: rgba(250,250,247,.96);
  backdrop-filter: blur(14px);
}
.admin-bar .gw-site-header { top: 32px; }
.gw-header-inner { display: flex; min-height: 82px; align-items: center; justify-content: space-between; gap: 32px; }
.gw-brand { display: inline-flex; align-items: center; gap: 12px; color: var(--gw-emerald); }
.gw-brand svg { width: 44px; height: 52px; flex: none; }
.gw-brand-wordmark { font-family: var(--gw-serif); font-size: 1.25rem; letter-spacing: .045em; white-space: nowrap; }
.gw-brand-wordmark small { display: block; margin-top: -3px; font-family: var(--gw-sans); font-size: .48rem; font-weight: 700; letter-spacing: .11em; }
.gw-nav { display: flex; align-items: center; gap: 28px; }
.gw-nav a { position: relative; font-size: .87rem; font-weight: 650; }
.gw-nav a:not(.gw-button)::after {
  position: absolute;
  right: 0;
  bottom: -8px;
  left: 0;
  height: 2px;
  background: var(--gw-gold);
  content: "";
  transform: scaleX(0);
  transition: transform .2s ease;
}
.gw-nav a:hover::after,
.gw-nav .current-menu-item > a::after { transform: scaleX(1); }
.gw-menu-toggle { display: none; width: 48px; height: 48px; border: 1px solid var(--gw-line); border-radius: 50%; background: #fff; color: var(--gw-emerald); cursor: pointer; }
.gw-menu-toggle span,
.gw-menu-toggle span::before,
.gw-menu-toggle span::after { display: block; width: 20px; height: 2px; margin: auto; background: currentColor; content: ""; transition: .2s; }
.gw-menu-toggle span::before { transform: translateY(-7px); }
.gw-menu-toggle span::after { transform: translateY(5px); }

.gw-hero { padding: 24px 0 0; background: var(--gw-white); }
.gw-hero-grid { display: grid; min-height: 680px; grid-template-columns: .9fr 1.1fr; align-items: stretch; }
.gw-hero-copy { display: flex; flex-direction: column; justify-content: center; padding: 72px 68px 72px 0; }
.gw-hero-copy h1 { max-width: 650px; }
.gw-hero-copy .gw-lead { max-width: 610px; }
.gw-hero-media { position: relative; min-height: 640px; overflow: hidden; }
.gw-hero-media > img { width: 100%; height: 100%; object-fit: cover; }
.gw-score-card {
  position: absolute;
  top: 30px;
  right: 30px;
  width: min(360px, calc(100% - 60px));
  padding: 28px;
  border: 1px solid rgba(11,59,52,.15);
  border-radius: 12px;
  background: rgba(255,255,255,.96);
  box-shadow: var(--gw-shadow);
}
.gw-score-card h3 { margin-bottom: 2px; font-family: var(--gw-sans); font-size: 1rem; font-weight: 700; letter-spacing: 0; }
.gw-score { display: flex; align-items: baseline; gap: 8px; margin: 8px 0 18px; color: var(--gw-emerald); font-family: var(--gw-serif); font-size: 3.65rem; line-height: 1; }
.gw-score small { color: var(--gw-muted); font-family: var(--gw-sans); font-size: .9rem; }
.gw-score-row { display: grid; grid-template-columns: 1fr 1.2fr 30px; align-items: center; gap: 10px; margin: 12px 0; font-size: .72rem; }
.gw-score-track { height: 5px; overflow: hidden; border-radius: 999px; background: #e5e8e5; }
.gw-score-track i { display: block; height: 100%; background: var(--gw-emerald); }
.gw-profile-label { display: block; margin-top: 20px; padding: 9px 12px; background: var(--gw-gold); color: var(--gw-navy); font-size: .68rem; font-weight: 800; letter-spacing: .08em; text-align: center; }
.gw-trustline { display: flex; gap: 8px; align-items: flex-start; margin-top: 22px; color: var(--gw-muted); font-size: .74rem; }

.gw-proof-strip { background: var(--gw-emerald); color: #fff; }
.gw-proof-grid { display: grid; grid-template-columns: repeat(4, 1fr); }
.gw-proof-item { display: flex; min-height: 112px; align-items: center; justify-content: center; gap: 14px; padding: 20px; border-right: 1px solid rgba(255,255,255,.22); text-align: center; }
.gw-proof-item:last-child { border-right: 0; }
.gw-icon {
  display: inline-grid;
  width: 48px;
  height: 48px;
  flex: none;
  place-items: center;
  border-radius: 50%;
  background: #edf4ef;
  color: var(--gw-emerald);
  font-size: 1.1rem;
}
.gw-proof-item .gw-icon { border: 1px solid rgba(255,255,255,.7); background: transparent; color: #fff; }
.gw-proof-item strong { display: block; font-size: .84rem; }

.gw-flow { display: grid; margin-top: 42px; grid-template-columns: repeat(5, 1fr); align-items: center; }
.gw-flow-item { position: relative; text-align: center; }
.gw-flow-item:not(:last-child)::after { position: absolute; top: 29px; right: -8px; color: var(--gw-gold); content: "→"; }
.gw-flow-symbol { display: grid; width: 64px; height: 64px; margin: 0 auto 12px; place-items: center; border: 1px solid var(--gw-emerald); border-radius: 50% 50% 6px 6px; color: var(--gw-emerald); font-family: var(--gw-serif); font-size: 1.4rem; }
.gw-flow-item strong { color: var(--gw-emerald); font-family: var(--gw-serif); font-size: 1.05rem; font-weight: 400; }

.gw-product-grid { display: grid; grid-template-columns: .75fr 1.6fr; align-items: center; gap: 70px; }
.gw-product-cards { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; align-items: stretch; }
.gw-product-card,
.gw-card {
  border: 1px solid var(--gw-line);
  border-radius: 10px;
  background: rgba(255,255,255,.88);
  box-shadow: 0 10px 30px rgba(13,34,51,.035);
}
.gw-product-card { position: relative; min-height: 255px; padding: 22px; text-align: center; }
.gw-product-card:not(:last-child)::after { position: absolute; top: 50%; right: -15px; z-index: 2; color: var(--gw-gold); content: "→"; }
.gw-product-visual { display: grid; height: 115px; margin: 18px 0; place-items: center; background: linear-gradient(135deg, var(--gw-paper), #fff); color: var(--gw-emerald); font-family: var(--gw-serif); font-size: 2.2rem; }
.gw-product-card h3 { font-family: var(--gw-serif); font-size: 1.1rem; }
.gw-product-card p { color: var(--gw-muted); font-size: .75rem; }

.gw-card-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; }
.gw-card { padding: 30px; }
.gw-card h3 { margin-top: 20px; font-size: 1.55rem; }
.gw-card p { color: var(--gw-muted); font-size: .91rem; }

.gw-process { display: grid; grid-template-columns: .8fr 1.2fr; gap: 70px; align-items: center; }
.gw-steps { display: grid; grid-template-columns: repeat(4, 1fr); gap: 18px; margin-top: 35px; }
.gw-step-number { display: grid; width: 50px; height: 50px; margin-bottom: 18px; place-items: center; border: 2px solid var(--gw-gold); border-radius: 50%; color: var(--gw-gold); font-family: var(--gw-serif); font-size: 1.3rem; }
.gw-steps h3 { color: #fff; font-family: var(--gw-sans); font-size: .95rem; font-weight: 700; letter-spacing: 0; }
.gw-steps p { color: rgba(255,255,255,.72); font-size: .76rem; }
.gw-report-preview { padding: 28px; border-radius: 10px; background: #fff; color: var(--gw-text); box-shadow: var(--gw-shadow); }
.gw-report-preview h3 { font-family: var(--gw-sans); font-size: .9rem; font-weight: 700; letter-spacing: 0; }
.gw-report-columns { display: grid; grid-template-columns: 1fr 1fr; gap: 26px; margin-top: 18px; }
.gw-report-list { margin: 0; padding: 0; list-style: none; }
.gw-report-list li { display: flex; justify-content: space-between; padding: 8px 0; border-bottom: 1px solid var(--gw-line); font-size: .73rem; }

.gw-audience-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; }
.gw-audience-card { overflow: hidden; border: 1px solid var(--gw-line); border-radius: 10px; background: #fff; }
.gw-audience-media { height: 160px; background: var(--gw-sage); }
.gw-audience-media img { width: 100%; height: 100%; object-fit: cover; }
.gw-audience-body { padding: 22px; }
.gw-audience-body h3 { font-size: 1.3rem; }
.gw-audience-body p { color: var(--gw-muted); font-size: .84rem; }

.gw-stage-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; }
.gw-stage-card { padding: 26px; border: 1px solid rgba(11,59,52,.12); border-radius: 10px; background: rgba(255,255,255,.7); }
.gw-stage-card h3 { font-size: 1.35rem; }
.gw-stage-card p { color: var(--gw-muted); font-size: .85rem; }

.gw-national-grid { display: grid; grid-template-columns: .75fr 1.4fr; gap: 64px; align-items: center; }
.gw-map-card { position: relative; min-height: 300px; overflow: hidden; border: 1px solid var(--gw-line); border-radius: 12px; background: #f7f5ef; }
.gw-map-lines { position: absolute; inset: 0; opacity: .26; background-image: linear-gradient(30deg, transparent 24%, #a6b3ad 25%, transparent 26%), linear-gradient(-30deg, transparent 24%, #a6b3ad 25%, transparent 26%); background-size: 80px 80px; }
.gw-state { position: absolute; padding: 8px 12px; border: 1px solid var(--gw-line); border-radius: 999px; background: #fff; font-size: .75rem; font-weight: 700; }
.gw-state--ca { top: 75px; left: 65px; padding: 22px; border: 0; border-radius: 10px; background: var(--gw-emerald); color: #fff; text-align: center; }
.gw-state--wa { top: 30px; left: 250px; }
.gw-state--tx { bottom: 55px; left: 48%; }
.gw-state--ny { top: 65px; right: 55px; }
.gw-state--fl { right: 90px; bottom: 35px; }

.gw-insight-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; }
.gw-insight-card { overflow: hidden; border: 1px solid var(--gw-line); border-radius: 10px; background: #fff; }
.gw-insight-thumb { height: 190px; background: linear-gradient(135deg, var(--gw-emerald), var(--gw-sage)); }
.gw-insight-card:nth-child(2) .gw-insight-thumb { background: linear-gradient(45deg, var(--gw-paper), #b5c3ba); }
.gw-insight-card:nth-child(3) .gw-insight-thumb { background: linear-gradient(135deg, var(--gw-navy), var(--gw-gold)); }
.gw-insight-body { padding: 25px; }
.gw-insight-body h3 { font-size: 1.55rem; }
.gw-insight-body p { color: var(--gw-muted); font-size: .86rem; }

.gw-final-cta { padding: 56px 0; background: linear-gradient(110deg, var(--gw-emerald), var(--gw-navy)); color: #fff; }
.gw-final-grid { display: grid; grid-template-columns: 1.1fr auto; align-items: center; gap: 40px; }
.gw-final-cta h2 { margin: 0; color: #fff; }
.gw-final-cta p { margin: 8px 0 0; color: rgba(255,255,255,.78); }

.gw-site-footer { padding: 74px 0 30px; background: var(--gw-navy); color: rgba(255,255,255,.78); }
.gw-footer-grid { display: grid; grid-template-columns: 1.3fr repeat(3, .7fr); gap: 55px; }
.gw-footer-brand .gw-brand { color: #fff; }
.gw-footer-brand p { max-width: 410px; margin-top: 22px; }
.gw-footer-column h3 { color: #fff; font-family: var(--gw-sans); font-size: .76rem; font-weight: 800; letter-spacing: .12em; text-transform: uppercase; }
.gw-footer-column a { display: block; padding: 5px 0; font-size: .85rem; }
.gw-footer-column a:hover { color: #fff; }
.gw-footer-bottom { display: flex; justify-content: space-between; gap: 30px; margin-top: 55px; padding-top: 22px; border-top: 1px solid rgba(255,255,255,.15); font-size: .72rem; }

.gw-page-hero { padding: 110px 0 85px; background: var(--gw-paper); }
.gw-page-hero .gw-lead { max-width: 760px; }
.gw-page-content { padding: 90px 0; }
.gw-page-grid { display: grid; grid-template-columns: .75fr 1.25fr; gap: 80px; }
.gw-rich-copy h2 { margin-top: 1.35em; }
.gw-rich-copy h2:first-child { margin-top: 0; }
.gw-rich-copy ul { padding-left: 1.25em; }
.gw-rich-copy li { margin-bottom: .55em; }
.gw-quote { padding: 38px; border-left: 4px solid var(--gw-gold); background: var(--gw-paper); color: var(--gw-emerald); font-family: var(--gw-serif); font-size: 1.8rem; line-height: 1.25; }

.gw-article { max-width: 820px; margin-inline: auto; }
.gw-article-meta { margin-bottom: 30px; color: var(--gw-muted); font-size: .82rem; }
.gw-article h2 { margin-top: 1.3em; }

.screen-reader-text { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(1px,1px,1px,1px); white-space: nowrap; }
:focus-visible { outline: 3px solid var(--gw-gold); outline-offset: 3px; }

@media (max-width: 1100px) {
  .gw-nav { gap: 18px; }
  .gw-nav a { font-size: .78rem; }
  .gw-brand-wordmark { font-size: 1rem; }
  .gw-hero-grid { grid-template-columns: 1fr 1fr; }
  .gw-hero-copy { padding-right: 36px; }
  .gw-product-grid,
  .gw-process,
  .gw-national-grid { gap: 38px; }
  .gw-audience-grid { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 900px) {
  .admin-bar .gw-site-header { top: 46px; }
  .gw-shell { width: min(calc(100% - 36px), var(--gw-max)); }
  .gw-menu-toggle { display: grid; place-items: center; }
  .gw-nav {
    position: fixed;
    z-index: 999;
    top: 82px;
    right: 0;
    bottom: 0;
    left: 0;
    display: none;
    padding: 40px 24px;
    background: var(--gw-white);
    flex-direction: column;
    align-items: stretch;
    gap: 0;
  }
  .admin-bar .gw-nav { top: 128px; }
  .gw-nav.is-open { display: flex; }
  .gw-nav a { padding: 15px 0; border-bottom: 1px solid var(--gw-line); font-size: 1rem; }
  .gw-nav .gw-button { margin-top: 22px; border-bottom: 0; }
  .gw-hero-grid,
  .gw-product-grid,
  .gw-process,
  .gw-national-grid,
  .gw-page-grid { grid-template-columns: 1fr; }
  .gw-hero-copy { padding: 65px 0 45px; }
  .gw-hero-media { min-height: 610px; }
  .gw-score-card { top: auto; right: 20px; bottom: 20px; }
  .gw-proof-grid { grid-template-columns: repeat(2, 1fr); }
  .gw-proof-item:nth-child(2) { border-right: 0; }
  .gw-proof-item:nth-child(-n+2) { border-bottom: 1px solid rgba(255,255,255,.22); }
  .gw-flow { grid-template-columns: 1fr; gap: 18px; }
  .gw-flow-item { display: grid; grid-template-columns: 70px 1fr; align-items: center; text-align: left; }
  .gw-flow-item:not(:last-child)::after { top: auto; right: auto; bottom: -15px; left: 30px; content: "↓"; }
  .gw-flow-symbol { margin: 0; }
  .gw-product-cards,
  .gw-card-grid { grid-template-columns: repeat(2, 1fr); }
  .gw-product-card:last-child { grid-column: 1 / -1; }
  .gw-product-card:not(:last-child)::after { display: none; }
  .gw-stage-grid { grid-template-columns: repeat(2, 1fr); }
  .gw-footer-grid { grid-template-columns: 1.2fr 1fr 1fr; }
  .gw-footer-brand { grid-column: 1 / -1; }
}

@media (max-width: 620px) {
  body { font-size: 16px; }
  .gw-shell { width: min(calc(100% - 28px), var(--gw-max)); }
  .gw-section { padding: 68px 0; }
  .gw-header-inner { min-height: 72px; }
  .gw-brand-wordmark { font-size: .88rem; }
  .gw-brand-wordmark small { display: none; }
  .gw-brand svg { width: 36px; height: 42px; }
  .gw-nav { top: 72px; }
  .gw-hero { padding-top: 0; }
  .gw-hero-copy { padding-top: 58px; }
  .gw-hero-media { min-height: 520px; }
  .gw-score-card { right: 12px; bottom: 12px; width: calc(100% - 24px); padding: 20px; }
  .gw-score { font-size: 2.9rem; }
  .gw-score-row { grid-template-columns: 1fr 1fr 25px; }
  .gw-proof-grid,
  .gw-product-cards,
  .gw-card-grid,
  .gw-audience-grid,
  .gw-stage-grid,
  .gw-insight-grid,
  .gw-steps,
  .gw-report-columns,
  .gw-footer-grid { grid-template-columns: 1fr; }
  .gw-proof-item { border-right: 0; border-bottom: 1px solid rgba(255,255,255,.22); }
  .gw-proof-item:last-child { border-bottom: 0; }
  .gw-product-card:last-child { grid-column: auto; }
  .gw-audience-media { height: 210px; }
  .gw-final-grid { grid-template-columns: 1fr; }
  .gw-final-grid .gw-actions { margin-top: 0; }
  .gw-footer-brand,
  .gw-footer-column { grid-column: auto; }
  .gw-footer-bottom { flex-direction: column; }
  .gw-map-card { min-height: 360px; }
  .gw-state--ca { left: 24px; }
  .gw-state--wa { left: 190px; }
  .gw-state--ny { top: 150px; right: 20px; }
}

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