/* ==========================================================================
   HxP & Associates — design system (Bootstrap 5 companion stylesheet)
   Palette: pine / forest / jade / mint / sand / stone / line
   Type:    Clash Display (headlines) · Instrument Sans (body)
            Space Mono (labels) · Instrument Serif italic (accents)
   ========================================================================== */
:root {
  --hxp-pine: #0A2721;
  --hxp-forest: #173B32;
  --hxp-jade: #0D9E77;
  --hxp-mint: #4FEBB9;
  --hxp-sand: #F6F4EE;
  --hxp-stone: #5B6B62;
  --hxp-line: #E3E0D4;
  --font-display: "Clash Display", ui-sans-serif, system-ui, sans-serif;
  --font-sans: "Instrument Sans", ui-sans-serif, system-ui, sans-serif;
  --font-mono: "Space Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
  --font-serif: "Instrument Serif", Georgia, serif;
  --ease: cubic-bezier(0.22, 1, 0.36, 1);
  --header-h: 64px;

  --bs-body-font-family: var(--font-sans);
  --bs-body-color: var(--hxp-pine);
  --bs-body-bg: #fff;
  --bs-border-radius: 0;
  --bs-border-color: var(--hxp-line);
  --bs-link-color: var(--hxp-jade);
  --bs-link-hover-color: var(--hxp-pine);
  --bs-link-color-rgb: 13, 158, 119;
  --bs-link-hover-color-rgb: 10, 39, 33;
}
@media (min-width: 992px) { :root { --header-h: 80px; } }

html.lenis, html.lenis body { height: auto; }
.lenis.lenis-smooth { scroll-behavior: auto !important; }
html { scroll-padding-top: calc(var(--header-h) + 8px); }
body { font-family: var(--font-sans); color: var(--hxp-pine); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; overflow-x: hidden; }
::selection { background: var(--hxp-jade); color: #fff; }
img { max-width: 100%; }
a { text-decoration: none; }
:focus-visible { outline: 2px solid var(--hxp-jade); outline-offset: 2px; }
.screen-reader-text, .sr-only { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(1px,1px,1px,1px); white-space: nowrap; }
.skip-link:focus { position: fixed !important; z-index: 2000; top: 8px; left: 8px; width: auto; height: auto; clip: auto; padding: .75rem 1rem; background: var(--hxp-pine); color: #fff; }

/* ---------- Layout ---------- */
.container-hxp { width: 100%; max-width: 1280px; margin-inline: auto; padding-inline: 20px; }
@media (min-width: 576px) { .container-hxp { padding-inline: 32px; } }
@media (min-width: 992px) { .container-hxp { padding-inline: 48px; } }
.container-hxp.narrow { max-width: 896px; }
.sec    { padding-block: 80px; }
.sec-md { padding-block: 80px; }
.sec-sm { padding-block: 64px; }
.sec-trust { padding-block: 80px; }
.sec-article { padding-block: 56px; }
@media (min-width: 992px) {
  .sec { padding-block: 128px; } .sec-md { padding-block: 112px; } .sec-sm { padding-block: 96px; }
  .sec-trust { padding-block: 112px; } .sec-article { padding-block: 80px; }
}
.bg-pine { background: var(--hxp-pine) !important; color: #fff; }
.bg-sand { background: var(--hxp-sand) !important; }
.border-y-line { border-top: 1px solid var(--hxp-line); border-bottom: 1px solid var(--hxp-line); }
.row.g-hxp { --bs-gutter-x: 1.5rem; --bs-gutter-y: 3.5rem; }
.row.g-hxp-md { --bs-gutter-x: 1.5rem; --bs-gutter-y: 3rem; }
@media (min-width: 992px) { .row.g-hxp { --bs-gutter-x: 3.5rem; } .row.g-hxp-md { --bs-gutter-x: 3rem; } }
.row.g-hxp-sm { --bs-gutter-x: 1.5rem; --bs-gutter-y: 1.5rem; }

/* 1px hairline grids */
.line-grid { display: grid; gap: 1px; background: var(--hxp-line); grid-template-columns: 1fr; }
.line-grid.on-dark { background: rgba(255,255,255,.1); }
.card-grid { display: grid; gap: 1.5rem; grid-template-columns: 1fr; }
@media (min-width: 576px) { .cols-sm-2 { grid-template-columns: repeat(2, 1fr); } .cols-sm-3 { grid-template-columns: repeat(3, 1fr); } }
@media (min-width: 768px) { .cols-md-2 { grid-template-columns: repeat(2, 1fr); } .cols-md-3 { grid-template-columns: repeat(3, 1fr); } }
@media (min-width: 992px) { .cols-lg-2 { grid-template-columns: repeat(2, 1fr); } .cols-lg-3 { grid-template-columns: repeat(3, 1fr); } .cols-lg-4 { grid-template-columns: repeat(4, 1fr); } }
.line-grid > *, .card-grid > * { min-width: 0; }

/* ---------- Typography ---------- */
h1, h2, h3, h4 { font-family: var(--font-display); }
.font-display { font-family: var(--font-display); }
.font-mono { font-family: var(--font-mono); }
.serif-accent { font-family: var(--font-serif); font-style: italic; font-weight: 400; letter-spacing: -0.01em; }
.eyebrow { font-family: var(--font-mono); font-size: 12px; font-weight: 500; text-transform: uppercase; letter-spacing: .3em; color: var(--hxp-jade); margin-bottom: 1.25rem; }
.eyebrow-line { display: flex; align-items: center; gap: .75rem; }
.eyebrow-line::before { content: ""; width: 40px; height: 1px; background: var(--hxp-mint); flex: none; }
.mono-meta { font-family: var(--font-mono); font-size: 10px; text-transform: uppercase; letter-spacing: .2em; color: var(--hxp-stone); }
.h-section { font-family: var(--font-display); font-weight: 600; letter-spacing: -0.025em; line-height: 1.15; color: var(--hxp-pine); font-size: 1.5rem; margin: 0; }
.h-section.bold { font-weight: 700; }
.bg-pine .h-section { color: #fff; }
@media (min-width: 576px) { .h-section { font-size: 1.875rem; } }
@media (min-width: 992px) { .h-section { font-size: 2.25rem; } }
.h-card { font-family: var(--font-display); font-weight: 600; letter-spacing: -0.02em; line-height: 1.25; font-size: 1.25rem; color: var(--hxp-pine); margin: 0; }
.h-card.bold { font-weight: 700; letter-spacing: 0; }
@media (min-width: 576px) { .h-card.lg { font-size: 1.5rem; } }
.h-sm { font-family: var(--font-display); font-weight: 600; font-size: 1.125rem; line-height: 1.35; margin: 0; }
.lead-text { font-size: 1rem; line-height: 1.65; color: var(--hxp-stone); }
.body-sm { font-size: .875rem; line-height: 1.65; color: var(--hxp-stone); }
.bg-pine .body-sm { color: rgba(255,255,255,.6); }
.accent-jade .serif-accent, .text-jade { color: var(--hxp-jade); }
.accent-mint .serif-accent, .text-mint { color: var(--hxp-mint); }
.text-stone { color: var(--hxp-stone); }
.text-pine { color: var(--hxp-pine); }
.mw-sm { max-width: 24rem; } .mw-md { max-width: 28rem; } .mw-lg { max-width: 32rem; } .mw-xl { max-width: 36rem; } .mw-2xl { max-width: 42rem; } .mw-3xl { max-width: 48rem; }

/* ---------- Buttons ---------- */
.btn-hxp { display: inline-flex; align-items: center; justify-content: center; gap: .625rem; padding: 1rem 1.75rem; font-size: .875rem; font-weight: 600; line-height: 1.25; border: 1px solid transparent; border-radius: 0; transition: background-color .3s, color .3s, border-color .3s; cursor: pointer; text-align: center; }
.btn-hxp.sm { padding: .875rem 1.5rem; }
.btn-hxp .ico { transition: transform .3s; flex: none; }
.btn-hxp:hover .ico-r { transform: translateX(4px); }
.btn-hxp:hover .ico-d { transform: translateY(4px); }
.btn-hxp:hover .ico-ur { transform: translate(4px,-4px); }
.btn-mint { background: var(--hxp-mint); color: var(--hxp-pine); }
.btn-mint:hover { background: #fff; color: var(--hxp-pine); }
.btn-pine { background: var(--hxp-pine); color: #fff; }
.btn-pine:hover { background: var(--hxp-jade); color: #fff; }
.btn-ghost-light { border-color: rgba(255,255,255,.25); color: #fff; background: transparent; }
.btn-ghost-light:hover { border-color: var(--hxp-mint); color: var(--hxp-mint); }
.btn-outline-pine { border-color: var(--hxp-pine); color: var(--hxp-pine); background: transparent; }
.btn-outline-pine:hover { background: var(--hxp-pine); color: #fff; }
.btn-footer { border-color: rgba(255,255,255,.2); color: #fff; gap: .75rem; width: fit-content; }
.btn-footer:hover { border-color: var(--hxp-mint); background: var(--hxp-mint); color: var(--hxp-pine); }
.link-arrow { display: inline-flex; align-items: center; gap: .5rem; font-size: .875rem; font-weight: 600; color: var(--hxp-jade); transition: color .3s; }
.link-arrow .ico { transition: transform .3s; }
.link-arrow:hover .ico { transform: translateX(4px); }

/* ---------- Header ---------- */
.site-header { position: fixed; inset: 0 0 auto 0; z-index: 1030; background: rgba(255,255,255,.85); -webkit-backdrop-filter: blur(24px); backdrop-filter: blur(24px); border-bottom: 1px solid rgba(227,224,212,.7); }
.admin-bar .site-header { top: 32px; }
@media (max-width: 782px) { .admin-bar .site-header { top: 46px; } }
.site-header .bar { height: var(--header-h); display: flex; align-items: center; justify-content: space-between; }
.brand { display: flex; align-items: center; gap: .625rem; }
.brand-name { font-family: var(--font-display); font-weight: 700; font-size: 1.125rem; letter-spacing: -0.02em; color: var(--hxp-pine); }
.brand-name small { font-size: 1em; font-weight: 500; color: var(--hxp-stone); }
.brand img.custom-logo { max-height: 40px; width: auto; }
.nav-primary { display: none; align-items: center; gap: 1.75rem; margin: 0; padding: 0; list-style: none; }
@media (min-width: 992px) { .nav-primary { display: flex; } }
.nav-primary .nav-link { font-size: 13px; font-weight: 500; letter-spacing: .025em; color: rgba(23,59,50,.7); padding: 0; transition: color .3s; }
.nav-primary .nav-link:hover, .nav-primary .nav-link:focus { color: var(--hxp-pine); }
.nav-primary .nav-link.active, .nav-primary .active > .nav-link { color: var(--hxp-jade); }
.nav-primary .dropdown-menu { border: 1px solid var(--hxp-line); border-radius: 0; padding: .5rem 0; margin-top: 1rem !important; box-shadow: 0 24px 60px -24px rgba(10,39,33,.25); }
.nav-primary .dropdown-item { font-size: 13px; padding: .5rem 1rem; color: var(--hxp-forest); }
.nav-primary .dropdown-item:hover, .nav-primary .dropdown-item.active { background: var(--hxp-sand); color: var(--hxp-jade); }
.header-actions { display: flex; align-items: center; gap: .75rem; }
.btn-header { display: none; align-items: center; gap: .5rem; padding: .625rem 1.25rem; font-size: 13px; font-weight: 600; background: var(--hxp-pine); color: #fff; transition: background-color .3s; }
.btn-header:hover { background: var(--hxp-jade); color: #fff; }
.btn-header .ico { transition: transform .3s; }
.btn-header:hover .ico { transform: translate(2px,-2px); }
@media (min-width: 576px) { .btn-header { display: inline-flex; } }
.nav-toggle { width: 40px; height: 40px; display: inline-flex; align-items: center; justify-content: center; color: var(--hxp-pine); background: none; border: 0; padding: 0; }
.nav-toggle .ico-close { display: none; }
.nav-toggle[aria-expanded="true"] .ico-open { display: none; }
.nav-toggle[aria-expanded="true"] .ico-close { display: inline; }
@media (min-width: 992px) { .nav-toggle, .mobile-nav { display: none !important; } }
.mobile-nav { border-top: 1px solid var(--hxp-line); background: #fff; }
.mobile-nav ul { list-style: none; margin: 0; padding: 1rem 0 0; display: flex; flex-direction: column; gap: .25rem; }
.mobile-nav ul ul { padding: 0 0 0 1rem; }
.mobile-nav a { display: block; padding: .625rem 0; font-size: .875rem; font-weight: 500; color: rgba(23,59,50,.8); }
.mobile-nav a.active, .mobile-nav .active > a { color: var(--hxp-jade); }
.mobile-nav .btn-mobile-cta { display: flex; align-items: center; justify-content: center; gap: .5rem; margin: .5rem 0 1rem; padding: .75rem 1.25rem; background: var(--hxp-pine); color: #fff; font-size: .875rem; font-weight: 600; }

/* ---------- Hero ---------- */
.hero { position: relative; overflow: hidden; background: var(--hxp-pine); color: #fff; }
.hero-canvas { position: absolute; inset: 0; width: 100%; height: 100%; opacity: .7; }
.hero-glow { pointer-events: none; position: absolute; inset: 0; background: radial-gradient(ellipse at top right, rgba(79,235,185,.14), transparent 55%); }
.hero-inner { position: relative; padding-top: 128px; padding-bottom: 64px; }
@media (min-width: 992px) { .hero-inner { padding-top: 176px; padding-bottom: 96px; } }
.hero-eyebrow { font-family: var(--font-mono); font-weight: 700; font-size: .875rem; text-transform: uppercase; letter-spacing: .3em; color: var(--hxp-mint); display: flex; align-items: center; gap: .75rem; margin-bottom: 1.75rem; }
.hero-eyebrow::before { content: ""; width: 40px; height: 1px; background: var(--hxp-mint); flex: none; }
@media (min-width: 576px) { .hero-eyebrow { font-size: 1rem; } }
.hero-title { font-family: var(--font-display); font-weight: 700; font-size: 2.25rem; line-height: 1.04; letter-spacing: -0.025em; margin: 0; }
@media (min-width: 576px) { .hero-title { font-size: 3rem; } }
@media (min-width: 992px) { .hero-title { font-size: 3.75rem; } }
.hero-title .serif-accent, .page-hero h1 .serif-accent { color: var(--hxp-mint); }
.hero-text { margin-top: 1.75rem; max-width: 36rem; font-size: 1rem; line-height: 1.65; color: rgba(255,255,255,.65); }
.hero-text strong { font-weight: 600; color: #fff; }
@media (min-width: 576px) { .hero-text { font-size: 1.125rem; } }
.hero-quote { margin-top: 1.25rem; max-width: 36rem; font-size: 1.125rem; line-height: 1.35; color: var(--hxp-mint); }
@media (min-width: 576px) { .hero-quote { font-size: 1.25rem; } }
.hero-ctas { margin-top: 2.5rem; display: flex; flex-direction: column; gap: 1rem; }
@media (min-width: 576px) { .hero-ctas { flex-direction: row; } }
.hero-stats { margin-top: 3.5rem; display: grid; grid-template-columns: repeat(3, 1fr); max-width: 32rem; border-top: 1px solid rgba(255,255,255,.1); border-bottom: 1px solid rgba(255,255,255,.1); }
.hero-stats > div { padding: 1.25rem; }
.hero-stats > div:first-child { padding-left: 0; }
.hero-stats > div + div { border-left: 1px solid rgba(255,255,255,.1); }
.hero-stats .v { font-family: var(--font-display); font-weight: 700; font-size: 1.5rem; color: #fff; margin: 0; }
@media (min-width: 576px) { .hero-stats .v { font-size: 1.875rem; } }
.hero-stats .l { margin: .25rem 0 0; font-family: var(--font-mono); font-size: 10px; text-transform: uppercase; letter-spacing: .2em; color: rgba(255,255,255,.45); }
.hero-media { position: relative; display: none; }
@media (min-width: 992px) { .hero-media { display: block; } }
.hero-media-inner { position: absolute; right: 0; top: 1rem; width: 92%; }
.frame { position: relative; }
.frame::before { content: ""; position: absolute; inset: -12px; border: 1px solid rgba(79,235,185,.25); pointer-events: none; }
.frame.jade::before { border-color: rgba(13,158,119,.2); }
.frame.hide-xs::before { display: none; }
@media (min-width: 576px) { .frame.hide-xs::before { display: block; } }
.frame img { display: block; width: 100%; }
.frame .ratio-43 { aspect-ratio: 4/3; object-fit: cover; }
.hero-img-wrap { position: relative; overflow: hidden; }
.hero-img-wrap img { display: block; width: 100%; aspect-ratio: 4/5; object-fit: cover; }
.hero-img-wrap::after { content: ""; position: absolute; inset: 0; background: linear-gradient(to top, rgba(10,39,33,.85), transparent 50%, rgba(10,39,33,.2)); }
.hero-badge { position: absolute; z-index: 2; left: 1.25rem; right: 1.25rem; bottom: 1.25rem; display: flex; align-items: center; justify-content: space-between; padding: .75rem 1rem; border: 1px solid rgba(255,255,255,.15); background: rgba(10,39,33,.6); -webkit-backdrop-filter: blur(12px); backdrop-filter: blur(12px); font-family: var(--font-mono); font-size: 10px; text-transform: uppercase; }
.hero-badge .l { letter-spacing: .25em; color: var(--hxp-mint); }
.hero-badge .r { display: flex; align-items: center; gap: .5rem; letter-spacing: .2em; color: rgba(255,255,255,.7); }
.pulse-dot { width: 6px; height: 6px; border-radius: 50%; background: var(--hxp-mint); animation: hxpPulse 2s cubic-bezier(.4,0,.6,1) infinite; }
@keyframes hxpPulse { 50% { opacity: .5; } }

/* Page hero (sub pages) */
.page-hero { position: relative; overflow: hidden; background: var(--hxp-pine); color: #fff; }
.page-hero .bg-img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: .25; }
.page-hero .bg-img.dim { opacity: .2; }
.page-hero .bg-fade { position: absolute; inset: 0; background: linear-gradient(to right, var(--hxp-pine), rgba(10,39,33,.85), rgba(10,39,33,.4)); }
.page-hero .inner { position: relative; padding-top: 144px; padding-bottom: 80px; }
@media (min-width: 992px) { .page-hero .inner { padding-top: 192px; padding-bottom: 112px; } }
.page-hero .eyebrow { margin-bottom: 1.5rem; }
.page-hero h1 { max-width: 48rem; font-family: var(--font-display); font-weight: 600; font-size: 2.25rem; line-height: 1.05; letter-spacing: -0.025em; margin: 0; }
@media (min-width: 576px) { .page-hero h1 { font-size: 3rem; } }
@media (min-width: 992px) { .page-hero h1 { font-size: 3.75rem; } }
.page-hero .desc { margin-top: 1.5rem; max-width: 36rem; font-size: 1rem; line-height: 1.65; color: rgba(255,255,255,.65); }
@media (min-width: 576px) { .page-hero .desc { font-size: 1.125rem; } }
.page-hero.compact .inner { padding-top: 128px; padding-bottom: 64px; }
@media (min-width: 992px) { .page-hero.compact .inner { padding-top: 176px; padding-bottom: 96px; } }
.page-hero h1.article-title { font-weight: 700; line-height: 1.15; font-size: 1.875rem; max-width: none; }
@media (min-width: 576px) { .page-hero h1.article-title { font-size: 2.25rem; } }
@media (min-width: 992px) { .page-hero h1.article-title { font-size: 3rem; } }
.back-link { display: inline-flex; align-items: center; gap: .5rem; margin-bottom: 2rem; font-family: var(--font-mono); font-size: 12px; text-transform: uppercase; letter-spacing: .2em; color: rgba(255,255,255,.5); transition: color .3s; }
.back-link:hover { color: var(--hxp-mint); }
.meta-row { display: flex; flex-wrap: wrap; align-items: center; gap: .75rem; font-family: var(--font-mono); text-transform: uppercase; }

/* ---------- Marquee ---------- */
.marquee { overflow: hidden; border-top: 1px solid var(--hxp-line); border-bottom: 1px solid var(--hxp-line); background: var(--hxp-sand); padding-block: 1.25rem; }
.marquee-track { display: flex; width: max-content; align-items: center; gap: 3.5rem; animation: hxpMarquee 55s linear infinite; }
.marquee-item { display: flex; align-items: center; gap: 3.5rem; white-space: nowrap; }
.marquee-item .t1 { font-family: var(--font-display); font-size: .875rem; font-weight: 500; text-transform: uppercase; letter-spacing: .35em; color: rgba(10,39,33,.45); }
.marquee-item .t2 { font-size: 1.125rem; color: rgba(10,39,33,.6); }
.diamond { width: 6px; height: 6px; transform: rotate(45deg); background: rgba(13,158,119,.6); flex: none; }
.diamond.sm { width: 4px; height: 4px; background: var(--hxp-jade); }
@keyframes hxpMarquee { from { transform: translateX(0); } to { transform: translateX(-50%); } }

/* ---------- Cards / tiles ---------- */
.tile { height: 100%; padding: 2rem; background: #fff; display: flex; flex-direction: column; transition: background-color .5s; }
@media (min-width: 992px) { .tile { padding: 2.5rem; } }
.tile.sand { background: var(--hxp-sand); }
.tile.pine { background: var(--hxp-pine); color: #fff; }
.tile.compact { padding: 2rem; }
.tile .num { font-family: var(--font-mono); font-size: 12px; letter-spacing: .3em; color: var(--hxp-jade); }
.tile .num.mint { color: var(--hxp-mint); }
.tile p { margin: 0; }
.tile-hover .h-card, .tile-hover p, .tile-hover .ico-corner { transition: color .5s, transform .5s; }
.tile-hover:hover { background: var(--hxp-pine); }
.tile-hover:hover .h-card { color: #fff; }
.tile-hover:hover p { color: rgba(255,255,255,.65); }
.ico-corner { margin-top: 2rem; color: var(--hxp-line); }
.tile-hover:hover .ico-corner { color: var(--hxp-mint); transform: translate(4px,-4px); }
.serif-num { font-family: var(--font-serif); font-style: italic; font-size: 2.25rem; line-height: 1; color: rgba(10,39,33,.15); }
@media (min-width: 992px) { .serif-num { font-size: 3rem; } }
.serif-num.on-dark { font-size: 3rem; color: rgba(79,235,185,.3); }
.manifesto-h { display: flex; align-items: flex-start; gap: .625rem; margin-top: 1.25rem; font-family: var(--font-display); font-weight: 600; font-size: 1.125rem; color: var(--hxp-pine); }
.manifesto-h .ico { flex: none; margin-top: 4px; color: var(--hxp-jade); }

.svc-card { height: 100%; display: flex; flex-direction: column; padding: 2rem; border: 1px solid var(--hxp-line); background: #fff; transition: transform .5s, border-color .5s, box-shadow .5s; }
@media (min-width: 992px) { .svc-card { padding: 2.5rem; } }
.svc-card:hover { transform: translateY(-4px); border-color: var(--hxp-jade); box-shadow: 0 24px 60px -24px rgba(13,158,119,.32); }
.svc-icon { width: 48px; height: 48px; display: flex; align-items: center; justify-content: center; background: var(--hxp-pine); color: var(--hxp-mint); transition: background-color .5s, color .5s; }
.svc-card:hover .svc-icon { background: var(--hxp-jade); color: #fff; }
.svc-list { list-style: none; margin: 1.5rem 0 0; padding: 1.5rem 0 0; border-top: 1px solid var(--hxp-line); flex: 1; display: flex; flex-direction: column; gap: .625rem; }
.svc-list li { display: flex; align-items: center; gap: .625rem; font-size: .875rem; color: rgba(23,59,50,.8); }
.svc-card .link-arrow { margin-top: 2rem; }
.svc-card:hover .link-arrow { color: var(--hxp-pine); }
.svc-card:hover .link-arrow .ico { transform: translateX(4px); }

.check-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: .875rem; }
.check-list li { display: flex; align-items: center; gap: .75rem; font-size: .875rem; color: rgba(23,59,50,.8); }
.check-list li .ico { flex: none; color: var(--hxp-jade); }
.check-list.on-dark li { color: rgba(255,255,255,.75); }
.check-list.on-dark li .ico { color: var(--hxp-mint); }

.pathway { height: 100%; display: flex; flex-direction: column; padding: 2rem; }
@media (min-width: 992px) { .pathway { padding: 3rem; } }
.pathway.dark { background: var(--hxp-pine); color: #fff; }
.pathway.light { background: var(--hxp-sand); border: 1px solid var(--hxp-line); }
.pathway h3 { font-family: var(--font-display); font-weight: 600; letter-spacing: -0.025em; font-size: 1.5rem; line-height: 1.2; margin: 0; }
@media (min-width: 576px) { .pathway h3 { font-size: 1.875rem; } }
.pathway.light h3 { color: var(--hxp-pine); }
.pathway .check-list { margin-top: 2rem; flex: 1; }
.pathway .pathway-text + .check-list { margin-top: 1.5rem; }
.pathway .btn-hxp { margin-top: 2.5rem; width: fit-content; }

.stat-tile { background: var(--hxp-sand); padding: 2rem; height: 100%; }
@media (min-width: 992px) { .stat-tile { padding: 2.5rem; } }
.stat-tile .v { font-family: var(--font-display); font-weight: 600; letter-spacing: -0.025em; font-size: 3rem; line-height: 1; color: var(--hxp-pine); margin: 0; }
@media (min-width: 992px) { .stat-tile .v { font-size: 3.75rem; } }
.stat-tile .l { margin: .75rem 0 0; font-family: var(--font-mono); font-size: 12px; text-transform: uppercase; letter-spacing: .2em; color: var(--hxp-stone); }
.testimonial { height: 100%; margin: 0; padding: 2rem; border: 1px solid var(--hxp-line); background: #fff; }
@media (min-width: 992px) { .testimonial { padding: 2.5rem; } }
.testimonial blockquote { margin: 0; font-family: var(--font-serif); font-style: italic; font-size: 1.25rem; line-height: 1.35; color: rgba(23,59,50,.9); }
@media (min-width: 576px) { .testimonial blockquote { font-size: 1.5rem; } }
.testimonial figcaption { margin-top: 1.5rem; font-family: var(--font-mono); font-size: 12px; text-transform: uppercase; letter-spacing: .2em; color: var(--hxp-stone); }

.post-card { height: 100%; display: flex; flex-direction: column; border: 1px solid var(--hxp-line); background: #fff; color: inherit; transition: transform .5s, border-color .5s, box-shadow .5s; }
.post-card:hover { transform: translateY(-4px); border-color: var(--hxp-jade); box-shadow: 0 24px 60px -24px rgba(13,158,119,.28); color: inherit; }
.post-card .media { position: relative; overflow: hidden; }
.post-card .media img { display: block; width: 100%; aspect-ratio: 16/10; object-fit: cover; transition: transform .7s; }
.post-card.wide .media img { aspect-ratio: 16/9; }
.post-card:hover .media img { transform: scale(1.05); }
.post-card .body { flex: 1; display: flex; flex-direction: column; padding: 1.5rem; }
@media (min-width: 992px) { .post-card.wide .body { padding: 1.75rem; } }
.post-card .cat { color: var(--hxp-jade); }
.post-card h2, .post-card h3 { margin: .75rem 0 0; font-family: var(--font-display); font-weight: 600; font-size: 1.125rem; line-height: 1.35; color: var(--hxp-pine); transition: color .3s; }
.post-card.wide h2 { font-size: 1.25rem; font-weight: 700; }
.post-card:hover h2, .post-card:hover h3 { color: var(--hxp-jade); }
.post-card .excerpt { flex: 1; margin: .625rem 0 0; font-size: .875rem; line-height: 1.65; color: var(--hxp-stone); }
.post-card .byline { margin: 1.25rem 0 0; color: rgba(91,107,98,.7); }
.post-card .results { list-style: none; margin: 1.25rem 0 0; padding: 1.25rem 0 0; border-top: 1px solid var(--hxp-line); flex: 1; display: flex; flex-direction: column; gap: .5rem; }
.post-card .results li { display: flex; align-items: flex-start; gap: .625rem; font-size: .875rem; color: rgba(23,59,50,.85); }
.post-card .results .ico { flex: none; margin-top: 2px; color: var(--hxp-jade); }
.post-card .link-arrow { margin-top: 1.25rem; }
.post-card:hover .link-arrow .ico { transform: translateX(4px); }
.sample-badge { position: absolute; left: 1rem; top: 1rem; padding: .375rem .75rem; background: rgba(10,39,33,.85); color: var(--hxp-mint); font-family: var(--font-mono); font-size: 10px; text-transform: uppercase; letter-spacing: .2em; -webkit-backdrop-filter: blur(4px); backdrop-filter: blur(4px); }

.outcome-list { list-style: none; margin: 0; padding: 0; }
.outcome { height: 100%; display: flex; align-items: flex-start; gap: .75rem; padding: 1.25rem; border: 1px solid var(--hxp-line); background: #fff; font-size: .875rem; font-weight: 500; color: var(--hxp-forest); }
.outcome .ico { flex: none; margin-top: 2px; color: var(--hxp-mint); }
.cta-band { display: flex; flex-direction: column; align-items: flex-start; gap: 2rem; }
@media (min-width: 992px) { .cta-band { flex-direction: row; align-items: center; justify-content: space-between; } }
.cta-box { border: 1px solid var(--hxp-line); background: var(--hxp-sand); padding: 2rem; }
@media (min-width: 992px) { .cta-box { padding: 2.5rem; } }
.cta-box h2 { font-family: var(--font-display); font-weight: 700; font-size: 1.25rem; color: var(--hxp-pine); margin: 0; }
@media (min-width: 576px) { .cta-box h2 { font-size: 1.5rem; } }
.cta-box p { margin: .75rem 0 0; }
.cta-box .btn-hxp { margin-top: 1.5rem; }
.assurance { display: flex; gap: 1.25rem; padding: 1.5rem; border: 1px solid var(--hxp-line); background: var(--hxp-sand); }
.assurance + .assurance { margin-top: 1px; }
.assurance .ico { flex: none; margin-top: 4px; color: var(--hxp-mint); }
.assurance h3 { font-family: var(--font-display); font-weight: 700; font-size: 1rem; color: var(--hxp-pine); margin: 0; }
.assurance p { margin: .375rem 0 0; }
.info-box { border: 1px solid var(--hxp-line); background: #fff; padding: 1.5rem; }
.info-box ul { list-style: none; margin: 1rem 0 0; padding: 0; display: flex; flex-direction: column; gap: .625rem; font-size: .875rem; font-weight: 500; color: var(--hxp-forest); }

/* ---------- Article / case study ---------- */
.article-cover { display: block; width: 100%; aspect-ratio: 16/8; object-fit: cover; }
.article-content { margin-top: 3rem; }
.article-content > * { margin: 0; }
.article-content > * + * { margin-top: 1.5rem; }
.article-content p, .article-content li { font-size: 1rem; line-height: 1.7; color: rgba(23,59,50,.85); }
.article-content > p:first-child { font-family: var(--font-display); font-weight: 500; font-size: 1.25rem; line-height: 1.55; }
@media (min-width: 576px) { .article-content > p:first-child { font-size: 1.5rem; } }
.article-content h2, .article-content h3 { font-family: var(--font-display); font-weight: 600; color: var(--hxp-pine); margin-top: 2.5rem; }
.article-content a { color: var(--hxp-jade); text-decoration: underline; text-underline-offset: 3px; }
.article-content img { height: auto; }
.article-content blockquote { border-left: 2px solid var(--hxp-jade); padding-left: 1.25rem; font-family: var(--font-serif); font-style: italic; font-size: 1.375rem; color: var(--hxp-forest); }
.article-cta { margin-top: 4rem; }
.notice { display: flex; align-items: flex-start; gap: .75rem; padding: 1.25rem; margin-bottom: 2.5rem; border: 1px solid rgba(13,158,119,.3); background: rgba(13,158,119,.05); }
.notice .ico { flex: none; margin-top: 2px; color: var(--hxp-jade); }
.notice p { margin: 0; font-size: .875rem; line-height: 1.65; color: var(--hxp-stone); }
.cs-body { font-size: 1rem; line-height: 1.7; color: rgba(23,59,50,.9); }
.cs-body p:last-child { margin-bottom: 0; }
.results-panel { margin-top: 3.5rem; background: var(--hxp-pine); color: #fff; padding: 2rem; }
@media (min-width: 992px) { .results-panel { padding: 3rem; } }
.results-panel .eyebrow { margin-bottom: 2rem; }
.results-panel ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 1.5rem; grid-template-columns: 1fr; }
@media (min-width: 576px) { .results-panel ul { grid-template-columns: repeat(2,1fr); } }
.results-panel li { display: flex; align-items: flex-start; gap: .875rem; font-size: .875rem; line-height: 1.65; color: rgba(255,255,255,.85); }
.results-panel .chk { flex: none; width: 32px; height: 32px; display: flex; align-items: center; justify-content: center; background: var(--hxp-mint); color: var(--hxp-pine); }

/* ---------- Resources filters ---------- */
.filter-bar { display: flex; flex-wrap: wrap; align-items: center; gap: .625rem; }
.filter-btn { display: inline-block; padding: .625rem 1.25rem; border: 1px solid var(--hxp-line); background: transparent; font-family: var(--font-mono); font-size: 12px; text-transform: uppercase; letter-spacing: .15em; color: var(--hxp-stone); transition: color .3s, border-color .3s, background-color .3s; cursor: pointer; }
.filter-btn.cat { padding-inline: 1rem; }
.filter-btn:hover { border-color: var(--hxp-jade); color: var(--hxp-jade); }
.filter-btn.is-active, .filter-btn.is-active:hover { border-color: var(--hxp-pine); background: var(--hxp-pine); color: #fff; }
.filter-btn.cat.is-active, .filter-btn.cat.is-active:hover { border-color: var(--hxp-jade); background: var(--hxp-jade); color: #fff; }
.filter-sep { display: none; width: 1px; height: 20px; margin-inline: .75rem; background: var(--hxp-line); }
@media (min-width: 576px) { .filter-sep { display: block; } }
.results-grid { margin-top: 3rem; }
.empty-state { margin-top: 4rem; font-family: var(--font-mono); font-size: .875rem; text-transform: uppercase; letter-spacing: .2em; color: var(--hxp-stone); }
.hxp-pagination { margin-top: 3rem; display: flex; flex-wrap: wrap; gap: .5rem; }
.hxp-pagination .page-numbers { display: inline-flex; min-width: 40px; height: 40px; align-items: center; justify-content: center; padding: 0 .75rem; border: 1px solid var(--hxp-line); font-family: var(--font-mono); font-size: 12px; color: var(--hxp-stone); }
.hxp-pagination .page-numbers.current, .hxp-pagination a.page-numbers:hover { background: var(--hxp-pine); border-color: var(--hxp-pine); color: #fff; }
[hidden] { display: none !important; }

/* ---------- Accordion (FAQ) ---------- */
.hxp-accordion { border-top: 1px solid var(--hxp-line); }
.hxp-accordion .acc-item { border-bottom: 1px solid var(--hxp-line); }
.hxp-accordion .acc-btn { width: 100%; display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: 1.25rem 0; background: none; border: 0; text-align: left; font-family: var(--font-display); font-weight: 600; font-size: 1rem; line-height: 1.4; color: var(--hxp-pine); transition: color .3s; }
.hxp-accordion.lg .acc-btn { padding-block: 1.5rem; font-weight: 700; }
@media (min-width: 576px) { .hxp-accordion .acc-btn { font-size: 1.125rem; } }
.hxp-accordion .acc-btn:hover { color: var(--hxp-jade); }
.hxp-accordion .acc-btn .q { display: flex; align-items: baseline; }
.hxp-accordion .acc-btn .n { flex: none; margin-right: 1rem; font-family: var(--font-mono); font-size: 12px; letter-spacing: .2em; color: var(--hxp-mint); font-weight: 400; }
.hxp-accordion .chev { flex: none; transition: transform .2s; }
.hxp-accordion .acc-btn[aria-expanded="true"] .chev { transform: rotate(180deg); }
.hxp-accordion .acc-body { padding-bottom: 1.25rem; font-size: .875rem; line-height: 1.65; color: var(--hxp-stone); }
.hxp-accordion.lg .acc-body { padding-bottom: 1.5rem; padding-left: 2.5rem; }
@media (min-width: 576px) { .hxp-accordion.lg .acc-body { font-size: 1rem; } }
.hxp-accordion .acc-body p:last-child { margin-bottom: 0; }

/* ---------- Forms ---------- */
.hxp-label, .hxp-form label { display: block; margin-bottom: .375rem; font-family: var(--font-mono); font-size: 10px; font-weight: 500; text-transform: uppercase; letter-spacing: .2em; color: var(--hxp-stone); }
.hxp-form input[type=text], .hxp-form input[type=email], .hxp-form input[type=tel], .hxp-form select, .hxp-form textarea { width: 100%; border: 1px solid var(--hxp-line); border-radius: 0; background-color: #fff; padding: .75rem 1rem; font-size: .875rem; color: var(--hxp-pine); outline: none; transition: border-color .3s; font-family: var(--font-sans); }
.hxp-form select { appearance: none; -webkit-appearance: none; padding-right: 2.5rem; background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%235B6B62' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m2 5 6 6 6-6'/%3e%3c/svg%3e"); background-repeat: no-repeat; background-position: right 1rem center; background-size: 12px; }
.hxp-form ::placeholder { color: rgba(91,107,98,.6); }
.hxp-form input:focus, .hxp-form select:focus, .hxp-form textarea:focus { border-color: var(--hxp-jade); box-shadow: none; }
.hxp-form .form-grid { display: grid; gap: 1.25rem; grid-template-columns: 1fr; }
@media (min-width: 576px) { .hxp-form .form-grid { grid-template-columns: repeat(2, 1fr); } .hxp-form .span-2 { grid-column: span 2; } }
.hxp-form .btn-submit, .hxp-form .wpcf7-submit { width: 100%; display: flex; align-items: center; justify-content: center; gap: .625rem; padding: 1rem 1.75rem; border: 0; border-radius: 0; background: var(--hxp-pine); color: #fff; font-size: .875rem; font-weight: 600; font-family: var(--font-sans); transition: background-color .3s; cursor: pointer; }
.hxp-form .btn-submit:hover, .hxp-form .wpcf7-submit:hover { background: var(--hxp-jade); }
.hxp-form .btn-submit .ico { transition: transform .3s; }
.hxp-form .btn-submit:hover .ico-r { transform: translateX(4px); }
.hxp-form .btn-submit:disabled, .hxp-form .wpcf7-submit:disabled { opacity: .6; }
.hxp-form .field-error, .hxp-form .wpcf7-not-valid-tip { display: block; margin-top: .375rem; font-size: 12px; color: #b4382c; }
.hxp-form .is-invalid, .hxp-form .wpcf7-not-valid { border-color: #b4382c !important; }
.hxp-form .form-error { margin-top: 1rem; font-size: .875rem; color: #b4382c; }
.form-success { display: flex; flex-direction: column; align-items: flex-start; gap: 1rem; padding: 2rem; border: 1px solid rgba(79,235,185,.4); background: rgba(79,235,185,.05); }
.form-success .ico { color: var(--hxp-mint); }
.form-success h3 { font-family: var(--font-display); font-weight: 700; font-size: 1.5rem; color: var(--hxp-pine); margin: 0; }
.form-success p { margin: 0; font-size: .875rem; line-height: 1.65; color: var(--hxp-stone); }
.form-success button { background: none; border: 0; padding: 0; font-size: .875rem; font-weight: 600; color: var(--hxp-jade); }
.form-success button:hover { text-decoration: underline; }
.spin { animation: hxpSpin 1s linear infinite; }
@keyframes hxpSpin { to { transform: rotate(360deg); } }
/* Contact Form 7 */
.wpcf7 form .wpcf7-response-output { margin: 1.25rem 0 0; padding: .75rem 1rem; border: 1px solid var(--hxp-line); font-size: .875rem; }
.wpcf7 form.invalid .wpcf7-response-output, .wpcf7 form.failed .wpcf7-response-output { border-color: #b4382c; color: #b4382c; }
.wpcf7 form.sent .wpcf7-response-output { display: none; }
.wpcf7 .wpcf7-form-control-wrap { display: block; }
.wpcf7 .submit-wrap { position: relative; }
.wpcf7 .submit-wrap .wpcf7-spinner { position: absolute; right: 1rem; top: 50%; margin: -12px 0 0; }
.wpcf7 p { margin: 0; }
.wpcf7 .form-grid br { display: none; }

/* ---------- Footer ---------- */
.site-footer { background: var(--hxp-pine); color: #fff; }
.site-footer .inner { padding-block: 64px; }
@media (min-width: 992px) { .site-footer .inner { padding-block: 96px; } }
.site-footer .eyebrow { margin-bottom: 1rem; }
.footer-top { display: flex; flex-direction: column; gap: 3rem; }
@media (min-width: 992px) { .footer-top { flex-direction: row; align-items: flex-end; justify-content: space-between; } }
.footer-brand { display: inline-flex; align-items: center; gap: 1rem; color: #fff; }
.footer-brand:hover { color: #fff; }
.footer-brand .word { font-family: var(--font-display); font-weight: 700; font-size: 3rem; letter-spacing: -0.025em; line-height: 1; }
.footer-brand .word span { color: var(--hxp-mint); }
.footer-brand img { max-height: 64px; width: auto; }
@media (min-width: 992px) { .footer-brand .word { font-size: 4.5rem; } }
.footer-text { margin: 1.25rem 0 0; max-width: 28rem; font-size: .875rem; line-height: 1.65; color: rgba(255,255,255,.6); }
.footer-text .serif-accent { font-size: 1rem; color: var(--hxp-mint); }
.footer-cols { margin-top: 3.5rem; padding-top: 2.5rem; border-top: 1px solid rgba(255,255,255,.1); display: grid; gap: 2.5rem; grid-template-columns: 1fr; }
@media (min-width: 576px) { .footer-cols { grid-template-columns: repeat(3, 1fr); } }
.footer-h { margin-bottom: 1rem; font-family: var(--font-mono); font-size: 12px; text-transform: uppercase; letter-spacing: .25em; color: rgba(255,255,255,.4); }
.footer-cols ul { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: .625rem; font-size: .875rem; color: rgba(255,255,255,.7); }
.footer-cols ul.sitemap { display: grid; grid-template-columns: repeat(2, 1fr); column-gap: 1.5rem; row-gap: .625rem; }
.footer-cols ul.sitemap ul { display: contents; }
.footer-cols a { color: rgba(255,255,255,.7); transition: color .3s; }
.footer-cols a:hover { color: var(--hxp-mint); }
.footer-bottom { margin-top: 3rem; padding-top: 1.5rem; border-top: 1px solid rgba(255,255,255,.1); display: flex; flex-direction: column; gap: .75rem; font-size: 12px; color: rgba(255,255,255,.4); }
.footer-bottom p { margin: 0; }
.footer-bottom .tag { font-family: var(--font-mono); letter-spacing: .1em; }
@media (min-width: 576px) { .footer-bottom { flex-direction: row; align-items: center; justify-content: space-between; } }

/* ---------- Generic content (page.php / 404 / search) ---------- */
.entry-content { font-size: 1rem; line-height: 1.7; color: rgba(23,59,50,.85); }
.entry-content h2, .entry-content h3 { font-weight: 600; color: var(--hxp-pine); margin: 2rem 0 1rem; }
.entry-content a { color: var(--hxp-jade); text-decoration: underline; }
.alignleft { float: left; margin: 0 1.5rem 1rem 0; } .alignright { float: right; margin: 0 0 1rem 1.5rem; } .aligncenter { display: block; margin-inline: auto; }
.wp-caption { max-width: 100%; } .wp-caption-text { font-size: 12px; color: var(--hxp-stone); }

/* ---------- Motion (only when JS is running) ---------- */
html.js .reveal { opacity: 0; transform: translateY(32px); transition: opacity .8s var(--ease), transform .8s var(--ease); transition-delay: var(--d, 0s); }
html.js .reveal.is-in { opacity: 1; transform: none; }
.mline { display: block; overflow: hidden; padding-bottom: .08em; margin-bottom: -.08em; }
.mline > span { display: block; }
html.js .mline > span { transform: translateY(115%); transition: transform 1s var(--ease); transition-delay: var(--d, 0s); }
html.js .mline.is-in > span { transform: none; }
html.js .fade-in { opacity: 0; transition: opacity .8s ease; transition-delay: var(--d, 0s); }
html.js .fade-up { opacity: 0; transform: translateY(24px); transition: opacity .8s var(--ease), transform .8s var(--ease); transition-delay: var(--d, 0s); }
html.js .slide-left { opacity: 0; transform: translateX(60px); transition: opacity 1.1s var(--ease), transform 1.1s var(--ease); transition-delay: var(--d, 0s); }
html.js.is-loaded .fade-in, html.js.is-loaded .fade-up, html.js.is-loaded .slide-left { opacity: 1; transform: none; }
.parallax { will-change: transform; }
@media (prefers-reduced-motion: reduce) {
  html.js .reveal, html.js .fade-in, html.js .fade-up, html.js .slide-left, html.js .mline > span { opacity: 1 !important; transform: none !important; transition: none !important; }
  .marquee-track, .pulse-dot { animation: none; }
}

/* submit button loading state */
.btn-submit .ico-load { display: none; }
.btn-submit.is-loading .ico-load { display: inline-block; animation: hxpSpin 1s linear infinite; }
.btn-submit.is-loading .ico-r { display: none; }
.mt-grid { margin-top: 3.5rem; }

/* odd item in a 2-col hairline grid spans the row instead of leaving an empty cell */
@media (min-width: 576px) { .line-grid.cols-sm-2 > :last-child:nth-child(odd) { grid-column: span 2; } }

/* WordPress menu states in the mobile drawer */
.mobile-nav .current-menu-item > a, .mobile-nav .current-menu-ancestor > a { color: var(--hxp-jade); }
a.filter-btn { text-decoration: none; }
