/* =========================================================================
   NRVE — front-end styles
   Brand identity + WooCommerce shell (heavy Woo styles live in
   nrve-woocommerce.css and load only on Woo pages).

   Width system:
   --nrve-wide   (1440px) = outer cap for full-bleed sections (hero, header)
   --nrve-measure(1240px) = inner content measure used everywhere else
   Padding is a consistent 5vw clamp on all sides.
   ========================================================================= */

:root{
    --nrve-black:#0B0B0B;
    --nrve-white:#fff;
    --nrve-off:#F5F5F2;
    --nrve-grey:#686863;
    --nrve-border:#D8D8D2;
    --nrve-success:#1a7a4c;
    --nrve-danger:#c0392b;
    --nrve-focus:#3b82f6;
    --nrve-wide:1440px;
    --nrve-measure:1240px;
    --nrve-pad:clamp(20px,5vw,80px);
}

/* Base ------------------------------------------------------------------ */
html{scroll-behavior:smooth}
body{overflow-x:hidden}
a:focus-visible,
button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible{
    outline:2px solid var(--nrve-focus);
    outline-offset:2px;
}

/* The single source of truth for content width */
.nrve-container{
    max-width:var(--nrve-measure);
    margin-inline:auto;
    padding-inline:var(--nrve-pad);
}
.nrve-container--wide{ max-width:var(--nrve-wide); }

/* Skip link (a11y) ------------------------------------------------------ */
.nrve-skip-link{
    position:absolute;left:-9999px;top:0;z-index:1000;
    background:var(--nrve-black);color:#fff;
    padding:12px 18px;font-size:12px;letter-spacing:.08em;text-transform:uppercase;
}
.nrve-skip-link:focus{left:8px;top:8px;}

/* Header --------------------------------------------------------------- */
.nrve-header{position:relative;z-index:20;border-bottom:1px solid var(--nrve-border);background:rgba(245,245,242,.94);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}
.nrve-header-inner{max-width:var(--nrve-wide);margin-inline:auto;padding:0 var(--nrve-pad);min-height:78px;display:flex;align-items:center;justify-content:space-between;gap:24px}
.nrve-logo{font-weight:900;font-size:30px;letter-spacing:-.085em;text-decoration:none;line-height:1}
/* Navigation — classic menu rendered into .nrve-nav */
.nrve-nav{display:flex;align-items:center;flex:1;justify-content:flex-end}
.nrve-nav .nrve-menu{display:flex;gap:28px;align-items:center;list-style:none;padding:0;margin:0}
.nrve-nav .nrve-menu li{margin:0;list-style:none}
.nrve-nav .nrve-menu a{
    text-decoration:none;text-transform:uppercase;font-size:11px;font-weight:700;
    letter-spacing:.08em;color:var(--nrve-black);transition:color .15s;
}
.nrve-nav .nrve-menu a:hover,
.nrve-nav .nrve-menu .current-menu-item > a{color:var(--nrve-grey)}
.nrve-menu-toggle{display:none;background:none;border:0;font-size:22px;cursor:pointer}

/* Native core/navigation block (if it ever renders) */
.nrve-header .wp-block-navigation{justify-content:flex-end;flex:1}
.nrve-header .wp-block-navigation .wp-block-navigation-item__content{
    text-decoration:none;text-transform:uppercase;font-size:11px;font-weight:700;
    letter-spacing:.08em;color:var(--nrve-black);transition:color .15s;padding:0;
}
.nrve-header .wp-block-navigation .wp-block-navigation-item__content:hover,
.nrve-header .wp-block-navigation .current-menu-item > .wp-block-navigation-item__content{color:var(--nrve-grey)}
.nrve-header .wp-block-navigation .wp-block-navigation__container{gap:28px;list-style:none;padding:0;margin:0;align-items:center}
.nrve-header .wp-block-navigation .wp-block-navigation__responsive-container-open,
.nrve-header .wp-block-navigation .wp-block-navigation__responsive-container-close{font-size:22px;background:none;border:0;cursor:pointer}

/* Header right cluster: account, search toggle, cart. Position:relative so
   the mini-cart dropdown can anchor to it. */
.nrve-header-actions{display:flex;align-items:center;gap:22px;position:relative}
.nrve-icon-link{display:inline-flex;align-items:center;gap:7px;text-decoration:none;text-transform:uppercase;font-size:11px;font-weight:700;letter-spacing:.08em;color:var(--nrve-black);background:none;border:0;cursor:pointer}
.nrve-icon-link svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:1.6}

/* Cart count badge */
.nrve-cart-link{position:relative}
.nrve-cart-count{
    display:inline-flex;align-items:center;justify-content:center;
    min-width:18px;height:18px;padding:0 5px;border-radius:9px;
    background:var(--nrve-black);color:#fff;font-size:10px;font-weight:800;line-height:1;
    transition:transform .2s;
}
.nrve-cart-count[data-count="0"]{background:var(--nrve-grey);}
.nrve-cart-link.is-pulsing .nrve-cart-count{animation:nrvePulse .5s ease}
@keyframes nrvePulse{0%{transform:scale(1)}40%{transform:scale(1.35)}100%{transform:scale(1)}}

/* Mini-cart dropdown — anchored to .nrve-header-actions (position:relative) */
.nrve-mini-cart{
    position:absolute;top:calc(100% + 14px);right:0;width:340px;max-width:calc(100vw - 32px);
    background:#fff;border:1px solid var(--nrve-border);
    box-shadow:0 24px 60px -28px rgba(0,0,0,.4);z-index:60;
    padding:18px;
}
.nrve-mini-cart[hidden]{display:none}
.nrve-mini-cart-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px}
.nrve-mini-cart-close{background:none;border:0;font-size:22px;line-height:1;cursor:pointer;color:var(--nrve-grey)}
.nrve-mini-cart-items{max-height:300px;overflow:auto}
.nrve-mini-cart-empty{color:var(--nrve-grey);font-size:13px;padding:14px 0}
.nrve-mini-cart-item{display:flex;flex-direction:column;gap:2px;padding:10px 0;border-bottom:1px solid var(--nrve-border)}
.nrve-mini-cart-item:last-child{border-bottom:0}
.nrve-mini-cart-title{font-size:13px;font-weight:600;line-height:1.3}
.nrve-mini-cart-meta{font-size:12px;color:var(--nrve-grey)}
.nrve-mini-cart-total{display:flex;justify-content:space-between;align-items:center;padding:14px 0;font-size:13px}
.nrve-mini-cart-total strong{font-size:15px}
/* Compact button row inside the mini-cart (overrides the heavy global button) */
.nrve-mini-cart-actions{display:flex;gap:8px;margin-top:12px}
.nrve-mini-cart-actions .nrve-button{
    flex:1;display:block;text-align:center;margin:0;
    padding:10px 12px!important;font-size:10px!important;font-weight:700;
    letter-spacing:.04em;transform:none!important;
}
.nrve-mini-cart-actions .nrve-button:hover{transform:none!important;background:#333}
.nrve-mini-cart-actions .nrve-button--outline{
    background:transparent!important;color:var(--nrve-black)!important;border:1px solid var(--nrve-border);
}
.nrve-mini-cart-actions .nrve-button--outline:hover{background:#f7f7f4!important;color:var(--nrve-black)!important}
.nrve-mini-cart-shop{display:block;text-align:center;margin-top:10px;font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--nrve-grey);text-decoration:none}

/* Dark variant --------------------------------------------------------- */
.nrve-dark{background:var(--nrve-black)!important;color:#fff}
.nrve-dark a{color:#fff}
.nrve-dark .nrve-header-inner{border-color:#292929}
.nrve-dark .nrve-icon-link{color:#fff}
.nrve-dark .nrve-cart-count{background:#fff;color:#0b0b0b}
.nrve-dark .nrve-cart-count[data-count="0"]{background:#444}

/* Hero ----------------------------------------------------------------- */
.nrve-hero{min-height:78vh;display:flex;align-items:center;position:relative;overflow:hidden}
.nrve-hero:after{content:"";position:absolute;inset:0;background:radial-gradient(circle at 78% 48%,rgba(255,255,255,.12),transparent 27%),radial-gradient(circle at 72% 54%,rgba(255,255,255,.06),transparent 10%);pointer-events:none}
.nrve-hero-content{position:relative;z-index:2;width:100%;max-width:var(--nrve-wide);margin-inline:auto;padding:10vw var(--nrve-pad)}
.nrve-eyebrow{text-transform:uppercase;letter-spacing:.18em;font-size:11px;font-weight:800;color:var(--nrve-grey)}
.nrve-dark .nrve-eyebrow{color:#999}
.nrve-hero h1{max-width:1000px;margin:26px 0 35px;font-size:clamp(4rem,10vw,10rem);line-height:.86;letter-spacing:-.075em}
.nrve-lead{max-width:610px;font-size:clamp(1.05rem,2vw,1.3rem);color:#55554f}
.nrve-dark .nrve-lead{color:#b5b5b0}

/* Page title — the restrained size for all inner pages (NOT the hero).
   The hero keeps the giant display sizing via .nrve-hero h1. */
.nrve-page-title{
    font-size:clamp(2rem,4.5vw,3.4rem)!important;
    font-weight:800;
    line-height:.96;
    letter-spacing:-.04em;
    margin:0 0 18px;
}
.nrve-page-header{ margin-bottom:34px; }

/* Pages that use a full pattern (hero/section) — hide the auto post-title
   and remove main padding so the pattern sits flush under the header. */
.nrve-has-pattern .nrve-main{ padding:0!important; }
.nrve-has-pattern .nrve-page-title,
.nrve-has-pattern .entry-title{ display:none!important; }
/* Remove default WP block margins so adjacent sections sit flush. */
.nrve-has-pattern .nrve-main > .wp-block-group{ margin-block:0; }

/* .nrve-main itself has NO padding — patterns provide their own via
   .nrve-section. For plain content pages (no pattern), the post-content
   block gets padding so there's no whitespace on pattern pages. */
.nrve-main{ padding:0; }
/* Plain content pages: add vertical breathing room to the content itself. */
body:not(.nrve-has-pattern) .nrve-main .entry-content,
body:not(.nrve-has-pattern) .nrve-main > p,
body:not(.nrve-has-pattern) .nrve-main .wp-block-post-content{
    padding-block:clamp(40px,6vw,80px);
}
/* If the page title shows (plain page), give it top spacing. */
body:not(.nrve-has-pattern) .nrve-main .nrve-page-title{
    margin-top:clamp(40px,6vw,80px);
    padding-inline:var(--nrve-pad);
    max-width:var(--nrve-measure);
    margin-inline:auto;
}
body:not(.nrve-has-pattern) .nrve-main .entry-content{
    max-width:var(--nrve-measure);
    margin-inline:auto;
    padding-inline:var(--nrve-pad);
}

/* Buttons -------------------------------------------------------------- */
.nrve-button,.wp-block-button__link{display:inline-block;padding:15px 22px;background:#0b0b0b;color:#fff!important;text-decoration:none;text-transform:uppercase;font-size:11px;font-weight:800;letter-spacing:.07em;border-radius:0;transition:transform .2s,background .2s;cursor:pointer}
.nrve-button:hover,.wp-block-button__link:hover{transform:translateY(-2px);background:#333}
.nrve-dark .nrve-button{background:#fff;color:#0b0b0b!important}
.nrve-dark .nrve-button:hover{background:#e6e6e6}

/* Sections & grids — all use the standard inner measure ---------------- */
.nrve-section{padding:clamp(50px,7vw,90px) var(--nrve-pad)}
.nrve-section > .nrve-container,
.nrve-section .nrve-grid,
.nrve-section .nrve-feature-grid{margin-inline:auto}
.nrve-grid{display:grid;grid-template-columns:1fr 1fr;gap:8vw;max-width:var(--nrve-measure);margin-inline:auto}
.nrve-feature-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--nrve-border);border:1px solid var(--nrve-border);margin-top:65px}
.nrve-feature{background:#fff;padding:35px;min-height:245px}
.nrve-feature-number{font-size:11px;font-weight:800;color:var(--nrve-grey);margin-bottom:55px}
.nrve-section-dark{background:var(--nrve-black);color:#fff}
.nrve-section-dark .nrve-copy{color:#aaa}
.nrve-copy{color:var(--nrve-grey);font-size:17px;max-width:570px}

/* Research notice bar — full bleed, centred text. */
.nrve-research-notice{display:flex;gap:18px;align-items:center;justify-content:center;text-align:center;padding:14px var(--nrve-pad);background:var(--nrve-danger);color:#fff;font-size:11px;line-height:1.45}
.nrve-research-notice strong{letter-spacing:.12em;white-space:nowrap}
.nrve-research-notice span{color:rgba(255,255,255,.85)}

/* FAQ accordion details */
.nrve-faq{border-bottom:1px solid var(--nrve-border);padding:0;margin:0}
.nrve-faq summary{
    cursor:pointer;padding:22px 0;font-weight:700;font-size:1.05rem;letter-spacing:-.01em;
    list-style:none;display:flex;justify-content:space-between;align-items:center;gap:16px;
}
.nrve-faq summary::-webkit-details-marker{display:none}
.nrve-faq summary:after{content:"+";font-size:20px;font-weight:400;color:var(--nrve-grey);transition:transform .2s}
.nrve-faq[open] summary:after{transform:rotate(45deg)}
.nrve-faq[open] summary{color:var(--nrve-black)}
.nrve-faq .nrve-copy{padding:0 0 22px;max-width:680px}

/* Footer --------------------------------------------------------------- */
.nrve-footer{background:#0b0b0b;color:#fff;padding:75px var(--nrve-pad) 30px}
.nrve-footer a{color:#fff;text-decoration:none;opacity:.9;transition:opacity .15s}
.nrve-footer a:hover{opacity:1}
.nrve-footer-grid{max-width:var(--nrve-measure);margin-inline:auto;display:grid;grid-template-columns:2fr repeat(3,1fr);gap:50px}
.nrve-footer small{color:#999}
.nrve-footer-bottom{max-width:var(--nrve-measure);margin:70px auto 0;padding-top:20px;border-top:1px solid #292929;display:flex;justify-content:space-between;gap:14px;color:#888;font-size:11px}

/* Trust strip (footer) ------------------------------------------------- */
.nrve-trust-strip{
    background:#111;color:#fff;
    padding:20px var(--nrve-pad);border-top:1px solid #1c1c1c;
}
.nrve-trust-strip .nrve-trust-items{
    max-width:var(--nrve-wide);margin:0 auto;
    display:flex;flex-wrap:wrap;gap:20px 36px;align-items:center;
}
.nrve-trust-strip .nrve-trust-items .nrve-payments{
    margin-left:auto;padding-left:0;border-top:0;
}
.nrve-trust-strip-item{display:flex;align-items:center;gap:8px;font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:#bbb;white-space:nowrap}
.nrve-trust-strip-item svg{width:16px;height:16px;stroke:#fff;fill:none;stroke-width:1.6;flex-shrink:0}

/* Payment icons -------------------------------------------------------- */
.nrve-payments{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.nrve-payments span{
    display:inline-flex;align-items:center;justify-content:center;
    min-width:42px;height:26px;padding:0 8px;border-radius:3px;
    background:#fff;color:#0b0b0b;font-size:9px;font-weight:800;letter-spacing:.04em;
    font-family:Arial,Helvetica,sans-serif;
}

/* Contact details block (from [nrve_contact] shortcode) */
.nrve-contact-block p{margin:0 0 16px}
.nrve-contact-block strong{display:block;font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--nrve-grey);margin-bottom:2px;font-weight:800}
.nrve-contact-block a{color:var(--nrve-black);text-decoration:underline}

/* Cards ---------------------------------------------------------------- */
.nrve-card{border:1px solid var(--nrve-border);background:#fff}

/* Age / research gate -------------------------------------------------- */
.nrve-age-gate{
    position:fixed;inset:0;z-index:9999;
    background:rgba(11,11,11,.78);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);
    display:flex;align-items:center;justify-content:center;padding:5vw;
}
.nrve-age-gate[hidden]{display:none}
.nrve-age-gate-inner{
    background:#fff;max-width:560px;padding:40px;text-align:center;
    border:3px solid var(--nrve-black);
}
.nrve-age-gate-inner p{color:#444;font-size:14px;line-height:1.55}
.nrve-age-gate-actions{display:flex;flex-direction:column;gap:10px;margin-top:24px;align-items:center}
.nrve-age-gate-leave{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--nrve-grey);text-decoration:none}

/* WooCommerce baseline (shared) — minimal non-conflicting rules.
   All shop/product/cart/checkout/account styling lives in
   nrve-woocommerce.css, which loads on WooCommerce pages AFTER this file. */
.woocommerce .products{gap:1px!important}
.woocommerce-message,.woocommerce-info,.woocommerce-error{border-radius:0!important}
.woocommerce span.onsale{border-radius:0!important;background:#0b0b0b!important}

/* Responsive ----------------------------------------------------------- */
@media(max-width:780px){
    /* Mobile nav — classic menu rendered into .nrve-nav */
    .nrve-nav{display:none;position:absolute;top:78px;left:0;right:0;background:#f5f5f2;border-bottom:1px solid var(--nrve-border);padding:25px var(--nrve-pad);flex-direction:column;align-items:flex-start;flex:initial;justify-content:flex-start}
    .nrve-nav.is-open{display:flex}
    .nrve-nav.is-open .nrve-menu{flex-direction:column;align-items:flex-start;gap:14px}
    .nrve-nav.is-open .nrve-menu a{font-size:15px}
    .nrve-menu-toggle{display:block}

    /* Native core/navigation mobile overlay */
    .nrve-header .wp-block-navigation__responsive-container.is-menu-open{
        background:#f5f5f2;padding:80px var(--nrve-pad) 40px;
    }
    .nrve-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item{
        padding:6px 0;
    }
    .nrve-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item__content{
        font-size:18px;text-transform:uppercase;letter-spacing:.06em;
    }

    .nrve-hero{min-height:75vh}
    .nrve-grid,.nrve-feature-grid,.nrve-footer-grid{grid-template-columns:1fr}
    .nrve-section{padding:80px var(--nrve-pad)}
    .nrve-feature{min-height:190px}
    .nrve-research-notice{align-items:flex-start;flex-direction:column;gap:5px}
    .nrve-footer-bottom{display:block}
    .nrve-footer-bottom span{display:block;margin-top:10px}
    .nrve-mini-cart{right:var(--nrve-pad);left:var(--nrve-pad);width:auto}
    .nrve-trust-strip .nrve-trust-items{flex-direction:column;align-items:flex-start;gap:14px}
    .nrve-trust-strip .nrve-trust-items .nrve-payments{margin-left:0;justify-content:flex-start}
    .nrve-age-gate-inner{padding:28px 22px}
}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}
