/* ===========================================================
   pnhealthpass.com homepage v2 (2026-10-18) — story-driven layout
   Loads after styles.v12.css (header, footer, buttons, tokens).
   Images: Pexels photos, cropped for each slot, served from Cloudflare Pages
   (images/home/). Entrance animation follows the home.v1.css rule: THERE IS
   NO STATE IN WHICH CONTENT IS INVISIBLE (no delay, no fill-mode; stagger by
   duration). Everything honors prefers-reduced-motion.
   =========================================================== */

:root {
  --mint: #2FD6B0;
  --mint-ink: #04382E;
  --mint-soft: #E6FBF5;
  --navy-900: #071645;
  --hand: "Caveat", "Segoe Script", cursive;
}

@keyframes h2In { from { opacity: 0; transform: translateY(18px); } to { opacity: 1; transform: none; } }
.h2-rv { animation: h2In calc(520ms + var(--i, 0) * 110ms) cubic-bezier(.2,.7,.3,1); }

.h2-wrap { max-width: var(--container); margin: 0 auto; padding: 0 24px; }
.h2-eyebrow { display: inline-block; font-size: 12.5px; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; color: var(--med-blue); margin: 0 0 10px; }
.h2-title { font-size: clamp(28px, 3.4vw, 42px); line-height: 1.15; color: var(--deep-trust-blue); margin: 0 0 14px; font-weight: 700; }
.h2-sub { font-size: 17px; line-height: 1.6; color: var(--ink-soft); margin: 0; }
.h2-center { text-align: center; max-width: 760px; margin: 0 auto 42px; }
.h2-hand { font-family: var(--hand); font-weight: 600; line-height: 1.05; }

/* ---------- Mint CTA ------------------------------------------------------ */
.h2-cta {
  display: inline-flex; align-items: center; gap: 10px;
  background: var(--mint); color: var(--mint-ink); font-weight: 700; font-size: 17px;
  padding: 16px 30px; border-radius: 999px; text-decoration: none;
  box-shadow: 0 10px 24px -10px rgba(47,214,176,.7), 0 2px 0 rgba(255,255,255,.35) inset;
  transition: transform .2s cubic-bezier(.2,.7,.3,1), box-shadow .2s, background .2s;
}
.h2-cta:hover, .h2-cta:focus-visible { transform: translateY(-2px); background: #3BE3BD; box-shadow: 0 16px 30px -12px rgba(47,214,176,.8); }
.h2-cta svg { width: 18px; height: 18px; }

/* ---------- HERO ---------------------------------------------------------- */
.h2-hero { position: relative; overflow: hidden; background: var(--navy-900); color: #fff; isolation: isolate; }
.h2-hero-media { position: absolute; inset: 0 0 0 34%; z-index: -2; display: block; }
.h2-hero-media img { width: 100%; height: 100%; object-fit: cover; object-position: 62% 38%; display: block; }
.h2-hero::before { /* navy wash under the copy, fading into the photo */
  content: ""; position: absolute; inset: 0; z-index: -1;
  background: linear-gradient(90deg, var(--navy-900) 0%, var(--navy-900) 34%, rgba(7,22,69,.86) 44%, rgba(7,22,69,.25) 62%, rgba(7,22,69,0) 78%),
              linear-gradient(0deg, rgba(7,22,69,.55) 0%, rgba(7,22,69,0) 38%);
}
.h2-hero-inner { min-height: 600px; display: flex; align-items: center; padding: 72px 0 64px; }
.h2-hero-copy { max-width: 560px; }
.h2-hero .h2-eyebrow { color: var(--mint); }
.h2-hero h1 { font-size: clamp(38px, 5vw, 60px); line-height: 1.05; margin: 0 0 18px; color: #fff; font-weight: 700; letter-spacing: -.01em; }
.h2-hero .lede { font-size: 19px; line-height: 1.55; color: rgba(255,255,255,.9); margin: 0 0 22px; }
.h2-checks { list-style: none; padding: 0; margin: 0 0 30px; display: grid; gap: 11px; }
.h2-checks li { display: flex; gap: 12px; align-items: flex-start; font-size: 16.5px; line-height: 1.45; color: #fff; }
.h2-checks li::before {
  content: ""; flex: 0 0 22px; height: 22px; border-radius: 50%; margin-top: 1px;
  background: var(--mint) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%2304382E' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3.5 8.5l3 3 6-6.5'/%3E%3C/svg%3E") center/13px no-repeat;
}
.h2-hero-chips { display: flex; flex-wrap: wrap; gap: 10px 22px; margin-top: 26px; font-size: 14px; color: rgba(255,255,255,.82); }
.h2-hero-chips span { display: inline-flex; align-items: center; gap: 8px; }
.h2-hero-chips svg { width: 18px; height: 18px; opacity: .9; }
.h2-hero-note { position: absolute; right: 5%; top: 52px; transform: rotate(-6deg); font-size: 30px; color: #fff; text-shadow: 0 2px 14px rgba(7,22,69,.55); text-align: right; }

/* ---------- BENEFIT STRIP ------------------------------------------------- */
.h2-strip { background: linear-gradient(180deg, var(--mint-soft) 0%, #F2FDF9 100%); padding: 44px 0; border-bottom: 1px solid #D6F3EA; }
.h2-strip-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 18px; }
.h2-benefit { text-align: center; padding: 20px 14px; border-radius: 18px; background: rgba(255,255,255,.55); transition: transform .25s cubic-bezier(.2,.7,.3,1), box-shadow .25s, background .25s; }
.h2-benefit:hover { transform: translateY(-4px); background: #fff; box-shadow: 0 14px 30px -18px rgba(7,22,69,.35); }
.h2-benefit img { width: 46px; height: 46px; margin-bottom: 10px; }
.h2-benefit h3 { font-size: 17px; color: var(--deep-trust-blue); margin: 0 0 6px; }
.h2-benefit p { font-size: 14.5px; color: var(--ink-soft); margin: 0; line-height: 1.5; }

/* ---------- STORY --------------------------------------------------------- */
.h2-story { padding: 96px 0; background: #fff; }
.h2-story-grid { display: grid; grid-template-columns: 1fr 1.05fr; gap: 64px; align-items: center; }
.h2-story-media { position: relative; }
.h2-story-media img { width: 100%; height: auto; aspect-ratio: 4 / 3; object-fit: cover; object-position: 50% 40%; border-radius: 22px; display: block;
  box-shadow: 0 30px 60px -30px rgba(7,22,69,.45), 0 8px 18px -10px rgba(7,22,69,.25); }
.h2-story-tag { position: absolute; left: -18px; bottom: -22px; background: #fff; border-radius: 16px; padding: 16px 20px; max-width: 270px;
  box-shadow: 0 18px 40px -18px rgba(7,22,69,.4); border: 1px solid var(--border); }
.h2-story-tag strong { display: block; color: var(--deep-trust-blue); font-size: 15px; margin-bottom: 3px; }
.h2-story-tag span { font-size: 13.5px; color: var(--ink-soft); line-height: 1.45; }
.h2-story-copy p { font-size: 17px; line-height: 1.7; color: var(--ink); margin: 0 0 16px; }
.h2-story-copy .big { font-family: var(--font-serif); font-style: italic; font-size: 22px; line-height: 1.45; color: var(--deep-trust-blue); margin: 4px 0 20px; }
.h2-uber { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; margin: 22px 0 24px; }
.h2-uber div { background: var(--bg-alt); border: 1px solid var(--border); border-radius: 14px; padding: 14px 14px 12px; }
.h2-uber b { display: block; font-size: 13px; letter-spacing: .08em; text-transform: uppercase; color: var(--med-blue); margin-bottom: 4px; }
.h2-uber span { font-size: 14.5px; color: var(--ink); line-height: 1.45; }
.h2-sig { display: flex; align-items: center; gap: 14px; margin-top: 8px; padding-top: 18px; border-top: 1px solid var(--border); }
.h2-sig .h2-hand { font-size: 30px; color: var(--deep-trust-blue); }
.h2-sig small { display: block; font-size: 13.5px; color: var(--ink-soft); }

/* ---------- HOW IT WORKS -------------------------------------------------- */
.h2-how { padding: 92px 0; background: var(--bg-alt); }
.h2-steps { display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; }
.h2-step { background: #fff; border-radius: 22px; overflow: hidden; border: 1px solid var(--border);
  box-shadow: 0 10px 26px -18px rgba(7,22,69,.3); transition: transform .3s cubic-bezier(.2,.7,.3,1), box-shadow .3s; }
.h2-step:hover { transform: translateY(-6px); box-shadow: 0 26px 46px -24px rgba(7,22,69,.42); }
.h2-step-media { position: relative; aspect-ratio: 4 / 3; overflow: hidden; }
.h2-step-media img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform .6s cubic-bezier(.2,.7,.3,1); }
.h2-step:hover .h2-step-media img { transform: scale(1.04); }
.h2-step-num { position: absolute; left: 16px; top: 16px; width: 42px; height: 42px; border-radius: 50%; background: var(--deep-trust-blue); color: #fff;
  font-weight: 700; font-size: 18px; display: grid; place-items: center; box-shadow: 0 8px 18px -6px rgba(7,22,69,.6); border: 3px solid #fff; }
.h2-step-body { padding: 22px 24px 26px; text-align: center; }
.h2-step-body h3 { font-size: 20px; color: var(--deep-trust-blue); margin: 0 0 8px; }
.h2-step-body p { font-size: 15.5px; color: var(--ink-soft); line-height: 1.55; margin: 0; }

/* ---------- PRICE --------------------------------------------------------- */
.h2-price { padding: 96px 0; background: #fff; }
.h2-price-box { display: grid; grid-template-columns: 420px 1fr; border-radius: 28px; overflow: hidden; background: linear-gradient(135deg, #EEF5FE 0%, #E7F8F3 100%);
  border: 1px solid var(--border); box-shadow: 0 30px 70px -40px rgba(7,22,69,.45); }
.h2-price-card { margin: 26px; background: #fff; border-radius: 22px; padding: 30px 30px 26px; text-align: center;
  box-shadow: 0 20px 40px -24px rgba(7,22,69,.4); position: relative; z-index: 1; }
.h2-price-card .who { font-size: 12.5px; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; color: var(--med-blue); margin: 0 0 10px; }
.h2-price-fig { display: flex; align-items: baseline; justify-content: center; gap: 6px; color: var(--deep-trust-blue); }
.h2-price-fig strong { font-size: 60px; line-height: 1; font-weight: 700; letter-spacing: -.02em; }
.h2-price-fig span { font-size: 18px; color: var(--ink-soft); }
.h2-price-alt { font-size: 15px; color: var(--ink-soft); margin: 8px 0 18px; }
.h2-price-card hr { border: 0; border-top: 1px solid var(--border); margin: 0 0 16px; }
.h2-price-card .visits { font-size: 19px; font-weight: 700; color: var(--deep-trust-blue); margin: 0 0 4px; }
.h2-price-card .visits-sub { font-size: 14.5px; color: var(--ink-soft); margin: 0 0 20px; line-height: 1.5; }
.h2-price-card .h2-cta { width: 100%; justify-content: center; }
.h2-ticks { display: flex; flex-wrap: wrap; justify-content: center; gap: 8px 16px; margin-top: 16px; font-size: 13.5px; color: var(--ink-soft); }
.h2-ticks span { display: inline-flex; align-items: center; gap: 6px; }
.h2-ticks span::before { content: ""; width: 16px; height: 16px; border-radius: 50%; background: var(--mint) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%2304382E' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3.5 8.5l3 3 6-6.5'/%3E%3C/svg%3E") center/10px no-repeat; }
.h2-price-media { position: relative; min-height: 420px; }
.h2-price-media img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: 48% 30%; display: block; }
.h2-price-note { position: absolute; right: 6%; top: 26px; font-size: 28px; color: var(--deep-trust-blue); transform: rotate(-5deg); text-align: right;
  background: rgba(255,255,255,.78); padding: 6px 14px 8px; border-radius: 12px; backdrop-filter: blur(2px); }

/* ---------- WHAT WE TREAT ------------------------------------------------- */
.h2-treat { padding: 92px 0; background: var(--bg-alt); }
.h2-treat-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; }
.h2-treat-card { background: #fff; border: 1px solid var(--border); border-radius: 20px; padding: 26px; display: flex; gap: 16px; align-items: flex-start;
  transition: transform .25s cubic-bezier(.2,.7,.3,1), box-shadow .25s, border-color .25s; text-decoration: none; color: inherit; }
.h2-treat-card:hover { transform: translateY(-4px); border-color: #BFD6F5; box-shadow: 0 20px 40px -26px rgba(7,22,69,.4); }
.h2-treat-card .tile { flex: 0 0 52px; height: 52px; border-radius: 14px; background: #EEF5FE; display: grid; place-items: center; }
.h2-treat-card .tile img { width: 30px; height: 30px; }
.h2-treat-card h3 { font-size: 19px; color: var(--deep-trust-blue); margin: 2px 0 6px; }
.h2-treat-card .price { display: inline-block; font-size: 13px; font-weight: 700; color: var(--mint-ink); background: var(--mint-soft); border-radius: 999px; padding: 3px 10px; margin-bottom: 8px; }
.h2-treat-card p { font-size: 15px; color: var(--ink-soft); line-height: 1.55; margin: 0 0 10px; }
.h2-treat-card .go { font-size: 14.5px; font-weight: 700; color: var(--med-blue); }

/* ---------- MISSION BANNER ----------------------------------------------- */
.h2-mission { position: relative; overflow: hidden; color: #fff; isolation: isolate; background: var(--navy-900); }
.h2-mission picture { display: block; }
.h2-mission picture, .h2-mission picture img { position: absolute; inset: 0; width: 100%; height: 100%; z-index: -2; }
.h2-mission picture img { object-fit: cover; object-position: 50% 62%; }
.h2-mission::before { content: ""; position: absolute; inset: 0; z-index: -1;
  background: linear-gradient(90deg, rgba(7,22,69,.94) 0%, rgba(7,22,69,.82) 38%, rgba(7,22,69,.25) 70%, rgba(7,22,69,.1) 100%); }
.h2-mission-inner { min-height: 440px; display: flex; flex-direction: column; justify-content: center; padding: 72px 0; max-width: 620px; }
.h2-mission h2 { font-size: clamp(30px, 3.8vw, 46px); line-height: 1.1; margin: 0 0 16px; color: #fff; }
.h2-mission p { font-size: 18px; line-height: 1.6; color: rgba(255,255,255,.88); margin: 0 0 26px; }
.h2-mission-note { position: absolute; right: 7%; bottom: 46px; font-size: 30px; transform: rotate(-6deg); text-align: right; color: #FFE9C7; text-shadow: 0 2px 12px rgba(0,0,0,.45); }

/* ---------- GROUPS + FAQ -------------------------------------------------- */
.h2-groups { padding: 72px 0 24px; background: #fff; }
.h2-groups-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; }
.h2-group { display: block; text-decoration: none; color: inherit; border: 1px solid var(--border); border-radius: 18px; padding: 22px 24px;
  background: linear-gradient(180deg, #fff 0%, #F8FAFE 100%); transition: transform .25s cubic-bezier(.2,.7,.3,1), box-shadow .25s; }
.h2-group:hover { transform: translateY(-4px); box-shadow: 0 18px 36px -24px rgba(7,22,69,.4); }
.h2-group h3 { font-size: 18px; color: var(--deep-trust-blue); margin: 0 0 6px; }
.h2-group p { font-size: 14.5px; color: var(--ink-soft); margin: 0 0 10px; line-height: 1.5; }
.h2-group span { font-size: 14px; font-weight: 700; color: var(--med-blue); }

.h2-faq { padding: 72px 0 96px; background: #fff; }
.h2-faq-head { display: flex; justify-content: space-between; align-items: baseline; gap: 16px; margin-bottom: 22px; flex-wrap: wrap; }
.h2-faq-head h2 { font-size: 28px; color: var(--deep-trust-blue); margin: 0; }
.h2-faq-head a { font-weight: 700; color: var(--med-blue); text-decoration: none; }
.h2-faq-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 14px 18px; align-items: start; }
.h2-faq details { border: 1px solid var(--border); border-radius: 14px; background: #fff; transition: box-shadow .2s, border-color .2s; }
.h2-faq details[open] { border-color: #BFD6F5; box-shadow: 0 14px 30px -22px rgba(7,22,69,.4); }
.h2-faq summary { cursor: pointer; list-style: none; padding: 18px 52px 18px 20px; font-size: 16px; font-weight: 600; color: var(--ink); position: relative; }
.h2-faq summary::-webkit-details-marker { display: none; }
.h2-faq summary::after { content: "+"; position: absolute; right: 20px; top: 50%; transform: translateY(-50%); font-size: 22px; color: var(--med-blue); transition: transform .2s; }
.h2-faq details[open] summary::after { transform: translateY(-50%) rotate(45deg); }
.h2-faq details p { margin: 0; padding: 0 20px 18px; font-size: 15px; line-height: 1.6; color: var(--ink-soft); }

/* ---------- RESPONSIVE ---------------------------------------------------- */
@media (max-width: 1020px) {
  .h2-strip-grid { grid-template-columns: repeat(2, 1fr); }
  .h2-story-grid { grid-template-columns: 1fr; gap: 48px; }
  .h2-price-box { grid-template-columns: 1fr; }
  .h2-price-media { min-height: 320px; order: -1; }
  .h2-steps, .h2-treat-grid, .h2-groups-grid { grid-template-columns: 1fr; max-width: 560px; margin: 0 auto; }
  .h2-hero-note { display: none; }
}
@media (max-width: 760px) {
  .h2-wrap { padding: 0 16px; }
  .h2-hero { background: var(--navy-900); }
  .h2-hero::before { display: none; }
  .h2-hero-media { position: relative; inset: auto; height: 340px; z-index: 0; }
  .h2-hero-media img { object-position: 50% 30%; }
  .h2-hero-media::after { content: ""; position: absolute; inset: auto 0 0 0; height: 90px; background: linear-gradient(0deg, var(--navy-900), rgba(7,22,69,0)); }
  .h2-hero-inner { min-height: 0; padding: 8px 0 44px; }
  .h2-hero .lede { font-size: 17px; }
  .h2-cta { width: 100%; justify-content: center; }
  .h2-strip-grid { grid-template-columns: 1fr 1fr; gap: 12px; }
  .h2-benefit { padding: 16px 10px; }
  .h2-story, .h2-how, .h2-price, .h2-treat { padding: 64px 0; }
  .h2-story-tag { position: static; margin-top: -40px; margin-left: 14px; margin-right: 14px; }
  .h2-uber { grid-template-columns: 1fr; }
  .h2-price-card { margin: 16px; padding: 26px 20px 22px; }
  .h2-price-fig strong { font-size: 52px; }
  .h2-price-note { font-size: 22px; }
  .h2-mission picture img { object-position: 50% 30%; }
  .h2-mission::before { background: linear-gradient(0deg, rgba(7,22,69,.96) 0%, rgba(7,22,69,.78) 40%, rgba(7,22,69,.12) 72%, rgba(7,22,69,0) 100%); }
  .h2-mission-inner { min-height: 520px; justify-content: flex-end; padding: 56px 0 48px; }
  .h2-mission-note { display: none; }
  .h2-faq-grid { grid-template-columns: 1fr; }
}

@media (prefers-reduced-motion: reduce) {
  .h2-rv { animation: none; }
  .h2-cta, .h2-benefit, .h2-step, .h2-step-media img, .h2-treat-card, .h2-group { transition: none; }
  .h2-cta:hover, .h2-benefit:hover, .h2-step:hover, .h2-treat-card:hover, .h2-group:hover { transform: none; }
  .h2-step:hover .h2-step-media img { transform: none; }
}

/* styles.v12.css pads every <section> on small screens; the full-bleed bands manage their own spacing. */
.h2-hero, .h2-mission { padding: 0; }
/* Story card overlaps the photo on phones: keep it above the image. */
.h2-story-tag { position: relative; z-index: 1; }
@media (min-width: 761px) { .h2-story-tag { position: absolute; } }
