/* ============================================================
   components.css — every reusable component the plan references.
   Tokens only. Hero / before-after / buttons / eyebrow mirror the
   approved blend mockup (/tmp/prime-mockups/blend.html).
   ============================================================ */

/* ============================================================
   HEADER  (partials/header.njk)
   ============================================================ */
.site-header{
  position:sticky;top:0;z-index:50;
  display:flex;align-items:center;justify-content:space-between;
  gap:24px;
  padding:18px 0;
  background:linear-gradient(180deg,rgba(6,7,11,.92),rgba(6,7,11,.55) 70%,transparent);
  backdrop-filter:blur(10px);
  -webkit-backdrop-filter:blur(10px);
}
.site-header > .container{
  display:flex;align-items:center;justify-content:space-between;gap:24px;width:min(var(--max),calc(100% - 40px));
}
.brand{
  display:flex;align-items:center;gap:12px;
  font-family:var(--font-display);font-size:1.35rem;font-weight:800;letter-spacing:-.01em;color:var(--text);
}
.brand .mark{
  width:38px;height:38px;border:1px solid var(--lime);border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  font-size:.95rem;color:var(--lime);font-family:var(--font-display);
}
.nav-desktop{display:flex;align-items:center;gap:34px}
.nav-desktop a{
  color:#c8c6c1;font-size:.78rem;font-weight:600;
  letter-spacing:.13em;text-transform:uppercase;
}
.nav-desktop a:hover{color:var(--text);opacity:1}
.header-cta{display:flex;align-items:center;gap:14px}

.menu-toggle{
  display:none;width:44px;height:44px;border:1px solid var(--line-2);border-radius:10px;
  align-items:center;justify-content:center;color:var(--text);
}
.menu-toggle .bars{position:relative;width:18px;height:2px;background:currentColor}
.menu-toggle .bars::before,.menu-toggle .bars::after{
  content:"";position:absolute;left:0;width:18px;height:2px;background:currentColor;
}
.menu-toggle .bars::before{top:-6px}
.menu-toggle .bars::after{top:6px}

.mobile-nav{
  display:none;flex-direction:column;gap:4px;
  padding:8px 0 16px;
  border-top:1px solid var(--line);
}
.mobile-nav a{
  color:var(--text);padding:13px 4px;font-weight:600;
  letter-spacing:.04em;border-bottom:1px solid var(--line);
}
.mobile-nav[hidden]{display:none}

@media (max-width:860px){
  .nav-desktop{display:none}
  .header-cta .btn-patreon-text{display:none}
  .menu-toggle{display:flex}
  .mobile-nav.is-open{display:flex}
}

/* ============================================================
   HERO  (index.njk — mirrors mockup hero exactly)
   ============================================================ */
.hero{position:relative;overflow:hidden;min-height:min(86vh,820px);display:flex;align-items:flex-end}
.hero-bg{position:absolute;inset:0;z-index:0}
.hero-bg img{width:100%;height:100%;object-fit:cover;object-position:62% center}
.hero-scrim{
  position:absolute;inset:0;z-index:1;
  background:linear-gradient(100deg,rgba(6,7,11,.95) 0%,rgba(6,7,11,.82) 34%,rgba(6,7,11,.2) 70%,rgba(6,7,11,.5) 100%);
}
.hero-glow{
  position:absolute;left:-160px;bottom:-120px;z-index:1;
  width:520px;height:520px;border-radius:50%;
  background:radial-gradient(circle,rgba(47, 139, 255,.18),transparent 64%);
  filter:blur(16px);pointer-events:none;
}
.hero-inner{
  position:relative;z-index:5;
  display:grid;grid-template-columns:minmax(0,1fr) minmax(0,460px);
  gap:40px;align-items:end;
  width:min(var(--max),calc(100% - 40px));margin-inline:auto;
  padding:64px 0 60px;
}
.hero-copy{max-width:640px}
.hero h1{font-size:var(--h1);margin:20px 0;line-height:.96;font-weight:800;letter-spacing:-.035em}
.hero h1 em{font-style:normal;color:var(--lime)}
.hero-sub{font-size:1.1rem;line-height:1.62;color:#d7d4ce;max-width:510px;margin-bottom:30px}
.hero-cta{display:flex;flex-wrap:wrap;gap:16px;align-items:center;margin-bottom:30px}
.hero-meta{display:flex;flex-wrap:wrap;gap:28px;font-size:.82rem;color:#9d9a94;letter-spacing:.03em}
.hero-meta b{color:var(--text);font-weight:600}
.hero-meta .star{color:var(--lime)}

@media (max-width:920px){
  .hero{align-items:center;min-height:auto}
  .hero-inner{grid-template-columns:1fr;padding:90px 0 56px}
  .hero-art{order:-1}
}

/* ============================================================
   BEFORE / AFTER  (partials/before-after.njk + slider.js)
   Mirrors mockup .ba-frame / handle / knob / tags.
   ============================================================ */
.before-after{position:relative;border-radius:16px;overflow:hidden;border:1px solid rgba(47, 139, 255,.32);box-shadow:0 40px 90px rgba(0,0,0,.6),0 0 50px rgba(47, 139, 255,.14);--pos:50%}
.before-after img{display:block;width:100%;height:100%;object-fit:cover;object-position:60% center}
.ba-after,.ba-before > img{aspect-ratio:16/9}

.ba-after{display:block;width:100%}
.ba-before{position:absolute;inset:0;clip-path:inset(0 50% 0 0);clip-path:inset(0 calc(100% - var(--pos)) 0 0)}
[data-fallback="filter"] .ba-before img{filter:saturate(.78) contrast(.92) brightness(.97)}

/* Range input overlays the whole image, transparent, draggable everywhere */
.ba-range{position:absolute;inset:0;z-index:4}
.ba-range input[type="range"]{
  -webkit-appearance:none;appearance:none;
  position:absolute;inset:0;width:100%;height:100%;
  margin:0;background:transparent;cursor:ew-resize;opacity:0;
}
.ba-range input[type="range"]::-webkit-slider-thumb{-webkit-appearance:none;width:44px;height:100%}
.ba-range input[type="range"]::-moz-range-thumb{width:44px;height:100%;border:0}

.ba-handle{
  position:absolute;top:0;bottom:0;left:var(--pos);z-index:3;
  width:2px;background:var(--blue);box-shadow:0 0 14px var(--blue);
  transform:translateX(-1px);pointer-events:none;
}
.ba-knob{
  position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);
  width:44px;height:44px;border-radius:50%;
  background:var(--blue);color:var(--blue-ink);
  display:flex;align-items:center;justify-content:center;
  font-size:1rem;font-weight:700;box-shadow:0 0 14px rgba(47, 139, 255,.6);
}
.ba-tag{
  position:absolute;top:14px;z-index:3;
  padding:5px 13px;border-radius:30px;
  font-family:var(--font-mono);font-size:.7rem;font-weight:500;
  letter-spacing:.08em;text-transform:uppercase;
}
.ba-tag.b{left:14px;background:rgba(6,7,11,.8);color:#cfcdc8}
.ba-tag.a{right:14px;background:var(--lime);color:var(--lime-ink)}

.ba-cap{margin-top:14px;font-size:.85rem;color:#cfccc6}
.ba-cap b{color:var(--blue);font-weight:600}

/* ============================================================
   PRODUCT CARD  (partials/product-card.njk)
   ============================================================ */
.pack-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}
@media (max-width:980px){.pack-grid{grid-template-columns:repeat(2,1fr)}}
@media (max-width:640px){.pack-grid{grid-template-columns:1fr}}

.product-card{
  display:flex;flex-direction:column;
  background:var(--surface);
  border:1px solid var(--line);
  border-radius:var(--radius);
  overflow:hidden;
  transition:transform .2s ease,border-color .2s ease,box-shadow .2s ease;
}
.product-card:hover{transform:translateY(-3px);border-color:var(--line-2);box-shadow:0 24px 60px rgba(0,0,0,.45)}
.product-card-media{position:relative;aspect-ratio:16/10;overflow:hidden}
.product-card-media img{width:100%;height:100%;object-fit:cover;transition:transform .4s ease}
.product-card:hover .product-card-media img{transform:scale(1.04)}

.badges{position:absolute;top:12px;left:12px;display:flex;gap:8px;flex-wrap:wrap;z-index:2}
.badge{
  padding:5px 11px;border-radius:30px;
  font-family:var(--font-mono);font-size:.66rem;font-weight:500;
  letter-spacing:.08em;text-transform:uppercase;
}
.badge-popular{background:var(--blue);color:var(--blue-ink)}
.badge-value{background:var(--lime);color:var(--lime-ink)}
.badge-free{background:rgba(6,7,11,.82);color:#cfcdc8;border:1px solid var(--line-2)}

.product-card-body{display:flex;flex-direction:column;gap:10px;padding:20px;flex:1}
.product-card .ptype{font-family:var(--font-mono);font-size:.7rem;letter-spacing:.12em;text-transform:uppercase;color:var(--faint)}
.product-card h3{font-family:var(--font-display);font-size:1.18rem;line-height:1.12}
.product-card h3 a{color:var(--text)}
.product-card h3 a:hover{color:var(--lime);opacity:1}
.product-card .blurb{font-size:.9rem;color:var(--muted);line-height:1.5}

.price-row{display:flex;align-items:baseline;gap:10px;margin-top:auto;padding-top:6px}
.price-now{font-family:var(--font-display);font-size:1.4rem;color:var(--text)}
.price-was{font-size:.9rem;color:var(--faint);text-decoration:line-through}
.price-save{
  font-family:var(--font-mono);font-size:.68rem;letter-spacing:.06em;
  color:var(--lime);background:rgba(198, 255, 58,.12);
  padding:3px 9px;border-radius:20px;
}
.product-card .actions{display:flex;gap:10px;margin-top:4px}
.product-card .actions .btn{flex:1}

/* ============================================================
   BUNDLE BAND  (partials/sticky / bundle band on index + bundle.njk)
   ============================================================ */
.bundle-band{
  position:relative;overflow:hidden;
  border:1px solid rgba(198, 255, 58,.28);
  border-radius:var(--radius);
  background:
    radial-gradient(700px 400px at 88% -20%, rgba(198, 255, 58,.10), transparent 60%),
    var(--surface-2);
}
.bundle-band-inner{
  display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);
  gap:36px;align-items:center;padding:40px;
}
@media (max-width:860px){.bundle-band-inner{grid-template-columns:1fr;padding:28px}}
.bundle-band h2{margin-bottom:14px}
.bundle-band .price-row{margin:18px 0}
.bundle-media{border-radius:var(--radius-sm);overflow:hidden;border:1px solid var(--line)}
.bundle-media img{width:100%;aspect-ratio:16/10;object-fit:cover}

/* ============================================================
   FINDER  (partials/finder.njk + finder.js)
   ============================================================ */
.finder{
  background:var(--surface);
  border:1px solid var(--line);
  border-radius:var(--radius);
  padding:32px;
  display:grid;grid-template-columns:minmax(0,360px) minmax(0,1fr);
  gap:32px;align-items:center;
}
@media (max-width:780px){.finder{grid-template-columns:1fr;padding:24px}}
.finder-controls label{display:block;font-family:var(--font-mono);font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;color:var(--faint);margin-bottom:10px}
.finder select{
  width:100%;background:var(--ink-2);border:1px solid var(--line-2);
  border-radius:var(--radius-sm);padding:14px 16px;color:var(--text);
  cursor:pointer;appearance:none;
  background-image:linear-gradient(45deg,transparent 50%,var(--blue) 50%),linear-gradient(135deg,var(--blue) 50%,transparent 50%);
  background-position:calc(100% - 20px) center,calc(100% - 14px) center;
  background-size:6px 6px,6px 6px;background-repeat:no-repeat;
}
.finder select:focus{outline:none;border-color:var(--blue);box-shadow:0 0 0 3px rgba(47, 139, 255,.18)}
.finder-result{
  border:1px solid var(--line);border-radius:var(--radius-sm);
  padding:22px;background:var(--ink-2);
}
.finder-result h3{font-family:var(--font-display);font-size:1.25rem;color:var(--text);margin-bottom:8px}
.finder-result .blurb{font-size:.9rem;color:var(--muted);margin-bottom:14px}
.finder-result .actions{display:flex;gap:10px;flex-wrap:wrap}

/* ============================================================
   PROOF WALL + REVIEWS + COUNTERS
   ============================================================ */
.proof-wall{display:grid;gap:24px}
.review-featured{
  border:1px solid var(--line-2);border-radius:var(--radius);
  padding:32px;background:var(--surface);
  display:grid;gap:16px;
}
.review-featured .quote{font-family:var(--font-display);font-size:clamp(1.2rem,2.4vw,1.7rem);line-height:1.3;color:var(--text)}
.review-meta{display:flex;align-items:center;gap:12px;font-size:.85rem;color:var(--muted)}
.review-meta .author{color:var(--text);font-weight:600}
.review-stars{color:var(--lime);letter-spacing:.08em}

.review-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
@media (max-width:860px){.review-grid{grid-template-columns:1fr}}
.review-card{
  border:1px solid var(--line);border-radius:var(--radius-sm);
  padding:20px;background:var(--surface);display:flex;flex-direction:column;gap:12px;
}
.review-card .text{font-size:.9rem;color:var(--muted);line-height:1.55}
.review-card .author{font-size:.82rem;color:var(--text);font-weight:600}
.review-card .source{font-family:var(--font-mono);font-size:.68rem;letter-spacing:.08em;color:var(--faint);text-transform:uppercase}

.counters{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:18px;text-align:center;margin-top:8px}
.counter{
  border:1px solid var(--line);border-radius:var(--radius-sm);
  padding:24px 16px;background:var(--ink-2);
}
.counter .num{font-family:var(--font-display);font-size:2rem;color:var(--text);line-height:1}
.counter .num .star{color:var(--lime)}
.counter .label{font-family:var(--font-mono);font-size:.68rem;letter-spacing:.1em;text-transform:uppercase;color:var(--faint);margin-top:8px}

/* ============================================================
   EMAIL CAPTURE  (partials/email-capture.njk + email.js)
   ============================================================ */
.email-capture{
  border:1px solid var(--line-2);border-radius:var(--radius);
  padding:40px;background:
    radial-gradient(600px 360px at 92% 120%, rgba(47, 139, 255,.08), transparent 60%),
    var(--surface);
  text-align:center;
}
.email-capture h2{margin-bottom:12px}
.email-capture p{max-width:480px;margin:0 auto 24px}
.email-form{display:flex;gap:12px;max-width:520px;margin:0 auto;flex-wrap:wrap}
.email-form .input{flex:1;min-width:200px}
.email-form .btn{flex-shrink:0}
.email-honeypot{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.email-consent{font-size:.74rem;color:var(--faint);margin-top:14px}
.email-success{
  display:none;margin-top:8px;
  border:1px solid rgba(47, 139, 255,.3);border-radius:var(--radius-sm);
  padding:24px;background:var(--ink-2);
}
.email-success.is-visible{display:block}
.email-error{display:none;margin-top:12px;color:#ff8a8a;font-size:.85rem}
.email-error.is-visible{display:block}

/* ============================================================
   VIDEO GRID + YOUTUBE FACADE  (partials/video-grid.njk + video.js)
   ============================================================ */
.video-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
@media (max-width:860px){.video-grid{grid-template-columns:1fr}}
.video-facade{
  position:relative;display:block;width:100%;
  aspect-ratio:16/9;border-radius:var(--radius-sm);overflow:hidden;
  border:1px solid var(--line);background:var(--ink-2);
}
.video-facade img{width:100%;height:100%;object-fit:cover;transition:transform .4s ease}
.video-facade:hover img{transform:scale(1.04)}
.video-facade .play{
  position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
}
.video-facade .play span{
  width:64px;height:64px;border-radius:50%;
  background:rgba(47, 139, 255,.92);color:var(--blue-ink);
  display:flex;align-items:center;justify-content:center;
  font-size:1.5rem;box-shadow:0 0 30px rgba(47, 139, 255,.45);
  transition:transform .2s ease;
}
.video-facade:hover .play span{transform:scale(1.08)}
.video-facade .vtitle{
  position:absolute;left:0;right:0;bottom:0;padding:14px 16px;
  background:linear-gradient(transparent,rgba(6,7,11,.85));
  font-size:.85rem;color:var(--text);font-weight:600;
}
.video-embed{width:100%;aspect-ratio:16/9;border:0;border-radius:var(--radius-sm)}

/* ============================================================
   FAQ  (partials/faq.njk)
   ============================================================ */
.faq{display:grid;gap:12px;max-width:820px;margin-inline:auto}
.faq details{
  border:1px solid var(--line);border-radius:var(--radius-sm);
  background:var(--surface);overflow:hidden;
}
.faq details[open]{border-color:var(--line-2)}
.faq summary{
  list-style:none;cursor:pointer;
  padding:20px 22px;
  font-family:var(--font-display);font-size:1.05rem;color:var(--text);
  display:flex;align-items:center;justify-content:space-between;gap:16px;
}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";font-family:var(--font-mono);color:var(--blue);font-size:1.3rem;transition:transform .2s ease}
.faq details[open] summary::after{transform:rotate(45deg)}
.faq .faq-a{padding:0 22px 20px;color:var(--muted);line-height:1.6;font-size:.95rem}

/* ============================================================
   STICKY BUY BAR  (partials/sticky-buy.njk)
   ============================================================ */
.sticky-buy{
  position:fixed;left:0;right:0;bottom:0;z-index:60;
  transform:translateY(110%);
  transition:transform .26s ease;
  background:rgba(11,15,18,.94);
  backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
  border-top:1px solid var(--line-2);
}
.sticky-buy.is-visible{transform:translateY(0)}
.sticky-buy-inner{
  display:flex;align-items:center;justify-content:space-between;gap:16px;
  width:min(var(--max),calc(100% - 40px));margin-inline:auto;padding:12px 0;
}
.sticky-buy .meta{display:flex;align-items:baseline;gap:12px;min-width:0}
.sticky-buy .name{font-family:var(--font-display);font-size:1.05rem;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sticky-buy .price{font-family:var(--font-mono);color:var(--lime);font-size:.95rem}
@media (max-width:520px){.sticky-buy .name{display:none}}

/* ============================================================
   LIGHTBOX  (partials/lightbox.njk + lightbox.js)
   ============================================================ */
.gallery-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
@media (max-width:780px){.gallery-grid{grid-template-columns:repeat(2,1fr)}}
.gallery-grid a{display:block;aspect-ratio:16/10;border-radius:var(--radius-sm);overflow:hidden;border:1px solid var(--line)}
.gallery-grid img{width:100%;height:100%;object-fit:cover;transition:transform .3s ease}
.gallery-grid a:hover img{transform:scale(1.05)}

.lightbox{
  position:fixed;inset:0;z-index:120;
  display:flex;align-items:center;justify-content:center;
  background:rgba(6,7,11,.94);
  padding:32px;
}
.lightbox[hidden]{display:none}
.lightbox-frame{position:relative;max-width:1200px;width:100%;display:flex;flex-direction:column;align-items:center;gap:14px}
.lightbox-frame img{max-width:100%;max-height:80vh;object-fit:contain;border-radius:var(--radius-sm)}
.lightbox-cap{font-size:.85rem;color:var(--muted);font-family:var(--font-mono);letter-spacing:.04em}
.lightbox-btn{
  position:absolute;top:50%;transform:translateY(-50%);
  width:48px;height:48px;border-radius:50%;
  border:1px solid var(--line-2);background:rgba(11,15,18,.8);color:var(--text);
  display:flex;align-items:center;justify-content:center;font-size:1.3rem;
}
.lightbox-btn:hover{border-color:var(--blue);color:var(--blue)}
.lightbox-prev{left:-8px}
.lightbox-next{right:-8px}
.lightbox-close{
  position:absolute;top:-44px;right:0;
  width:44px;height:44px;border-radius:50%;
  border:1px solid var(--line-2);background:rgba(11,15,18,.8);color:var(--text);
  display:flex;align-items:center;justify-content:center;font-size:1.1rem;
}
.lightbox-close:hover{border-color:var(--blue);color:var(--blue)}
@media (max-width:640px){
  .lightbox-prev{left:4px}.lightbox-next{right:4px}
}

/* ============================================================
   BREADCRUMBS  (partials/breadcrumbs.njk)
   ============================================================ */
.breadcrumbs{
  display:flex;flex-wrap:wrap;gap:8px;align-items:center;
  font-family:var(--font-mono);font-size:.72rem;letter-spacing:.06em;
  color:var(--faint);text-transform:uppercase;padding:20px 0;
}
.breadcrumbs a{color:var(--muted)}
.breadcrumbs a:hover{color:var(--blue)}
.breadcrumbs .sep{color:var(--line-2)}

/* ============================================================
   FOOTER  (partials/footer.njk)
   ============================================================ */
.site-footer{
  border-top:1px solid var(--line);
  background:var(--ink-2);
  padding:56px 0 32px;margin-top:80px;
}
.site-footer .footer-grid{
  display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:32px;
}
@media (max-width:780px){.site-footer .footer-grid{grid-template-columns:1fr 1fr}}
@media (max-width:480px){.site-footer .footer-grid{grid-template-columns:1fr}}
.footer-col h4{font-family:var(--font-mono);font-size:.72rem;letter-spacing:.12em;text-transform:uppercase;color:var(--faint);margin-bottom:14px;font-weight:500}
.footer-col a{display:block;color:var(--muted);padding:5px 0;font-size:.9rem}
.footer-col a:hover{color:var(--text)}
.footer-brandline{font-family:var(--font-display);font-size:1.3rem;color:var(--text);margin-bottom:10px}
.footer-bottom{
  display:flex;flex-wrap:wrap;justify-content:space-between;gap:16px;
  margin-top:40px;padding-top:24px;border-top:1px solid var(--line);
  font-size:.8rem;color:var(--faint);
}
.back-to-top{font-family:var(--font-mono);font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.back-to-top:hover{color:var(--blue)}

/* ============================================================
   PROSE  (article bodies)
   ============================================================ */
.prose{max-width:740px;margin-inline:auto}
.prose > * + *{margin-top:1.1em}
.prose h2{margin-top:1.6em;font-size:1.7rem}
.prose h3{margin-top:1.4em}
.prose p,.prose li{color:var(--muted);line-height:1.72}
.prose a{color:var(--blue);text-decoration:underline;text-underline-offset:3px}
.prose ul,.prose ol{padding-left:1.3em}
.prose img{border-radius:var(--radius-sm);margin-block:1.4em}
.prose blockquote{border-left:2px solid var(--lime);padding-left:18px;color:var(--text);font-style:italic}

/* ============================================================
   SECTION HEADERS (shared)
   ============================================================ */
.section-head{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:32px;flex-wrap:wrap}
.section-head h2{max-width:640px}
.section-head .link-more{font-family:var(--font-mono);font-size:.78rem;letter-spacing:.08em;text-transform:uppercase;color:var(--blue)}
