/*
Theme Name: Peptides Store Child
Template: astra
Version: 2.0.0
Description: Astra child theme for Atlanta Peptides. Ports the approved demo design —
             dark hero, trust marquee, research-area grid, product data strips,
             batch-verification block, RUO compliance.
*/

/* ============================================================
   1. TOKENS — Clinical Teal
   ============================================================ */
:root{
  --brand:        #14b8a6;
  --brand-hover:  #0d9488;
  --on-brand:     #04211f;

  --ink-deep:     #0c2b33;   /* dark section background */
  --ink-deep-2:   #123d47;   /* grid lines on dark */
  --ink-deep-3:   #24444c;   /* dividers on dark */
  --on-deep:      #b6c6c9;
  --on-deep-dim:  #8ca4a8;

  --ink:          #0c1416;
  --ink-soft:     #5b6b6e;
  --paper:        #ffffff;
  --paper-alt:    #f6f8f8;
  --line:         #e2e8e8;
  --radius:       2px;

  --font-head:    "Barlow Condensed", system-ui, sans-serif;
  --font-body:    "Inter", system-ui, -apple-system, sans-serif;
  --font-mono:    "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
  --page:         1280px;
}

body,button,input,select,textarea{font-family:var(--font-body);color:var(--ink)}
h1,h2,h3,h4,h5,h6{font-family:var(--font-head);font-weight:700;letter-spacing:.03em}
.ap-wrap{max-width:var(--page);margin:0 auto;padding-inline:28px}
.ap-mono{font-family:var(--font-mono)}

/* ============================================================
   2. BUTTONS
   ============================================================ */
.woocommerce a.button,.woocommerce button.button,.woocommerce .button.alt,
.wp-block-button__link,.ast-button,.ap-btn{
  display:inline-flex;align-items:center;justify-content:center;gap:9px;
  font-family:var(--font-head);font-weight:700;font-size:16px;letter-spacing:.14em;
  text-transform:uppercase;padding:14px 28px;border-radius:var(--radius);
  background:var(--brand);color:var(--on-brand);border:1.5px solid var(--brand);
  transition:.18s;text-decoration:none}
.woocommerce a.button:hover,.woocommerce button.button:hover,.woocommerce .button.alt:hover,
.wp-block-button__link:hover,.ast-button:hover,.ap-btn:hover{
  background:var(--ink-deep);border-color:var(--ink-deep);color:#fff;transform:translateY(-2px)}
.ap-btn-ghost{background:transparent;color:#fff;border-color:#3f5a60}
.ap-btn-ghost:hover{background:transparent;border-color:var(--brand);color:var(--brand);transform:none}
input,select,textarea{border-radius:var(--radius)!important}

/* ============================================================
   3. ANNOUNCEMENT BAR
   ============================================================ */
.ap-topbar{background:var(--ink-deep);color:#fff;font-size:12.5px;letter-spacing:.1em;
  text-align:center;padding:9px 16px;font-weight:500}
.ap-topbar span{color:var(--brand)}

/* ============================================================
   4. HEADER (Astra overrides to match demo)
   ============================================================ */
.ast-primary-header-bar{border-bottom:1px solid var(--line)!important}
.site-title,.site-title a{font-family:var(--font-head)!important;font-weight:700!important;
  font-size:20px!important;letter-spacing:.09em!important;text-transform:uppercase!important;
  color:var(--ink)!important}
.site-description{font-family:var(--font-body)!important;font-size:8.5px!important;
  font-weight:600!important;letter-spacing:.24em!important;text-transform:uppercase!important;
  color:var(--ink-soft)!important}
.main-header-menu .menu-link,.main-navigation .menu-link{
  font-family:var(--font-head)!important;font-size:15px!important;font-weight:600!important;
  letter-spacing:.1em!important;text-transform:uppercase!important}
.main-header-menu .menu-item{position:relative}
.main-header-menu .menu-item > .menu-link::after{content:"";position:absolute;left:0;right:100%;
  bottom:8px;height:2px;background:var(--brand);transition:right .25s}
.main-header-menu .menu-item:hover > .menu-link::after{right:0}

/* ============================================================
   5. DARK SECTION BASE (hero + COA)
   ============================================================ */
.ap-dark{position:relative;background:var(--ink-deep);color:#fff;overflow:hidden}
.ap-dark::before{content:"";position:absolute;inset:0;
  background-image:linear-gradient(var(--ink-deep-2) 1px,transparent 1px),
                   linear-gradient(90deg,var(--ink-deep-2) 1px,transparent 1px);
  background-size:56px 56px;opacity:.55;pointer-events:none}
.ap-dark > *{position:relative;z-index:2}
.ap-eyebrow{display:inline-flex;align-items:center;gap:9px;font-size:11px;font-weight:600;
  letter-spacing:.22em;text-transform:uppercase;color:var(--brand);margin-bottom:20px}
.ap-eyebrow i{width:22px;height:1px;background:var(--brand);display:block}

/* ---- HERO ---- */
.ap-hero::after{content:"";position:absolute;right:-12%;top:-30%;width:62%;height:170%;
  background:radial-gradient(closest-side,color-mix(in srgb,var(--brand) 26%,transparent),transparent);
  filter:blur(10px);pointer-events:none;z-index:1}
.ap-hero-in{display:grid;grid-template-columns:1.05fr .95fr;gap:40px;align-items:center;
  padding-block:88px}
.ap-hero h1{font-size:clamp(42px,5.2vw,74px);line-height:.98;text-transform:uppercase;
  color:#fff;margin:0}
.ap-hero h1 em{font-style:normal;color:var(--brand)}
.ap-hero p{margin-top:20px;max-width:46ch;color:var(--on-deep);font-size:16.5px;line-height:1.68}
.ap-cta{display:flex;gap:13px;margin-top:32px;flex-wrap:wrap}
.ap-stats{display:flex;gap:34px;margin-top:48px;padding-top:24px;border-top:1px solid var(--ink-deep-3);flex-wrap:wrap}
.ap-stats b{display:block;font-family:var(--font-head);font-size:29px;font-weight:700;color:#fff;line-height:1}
.ap-stats span{font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--on-deep-dim);margin-top:6px;display:block}
.ap-chain{width:100%;max-height:420px}
@media(max-width:940px){.ap-hero-in{grid-template-columns:1fr;padding-block:56px}.ap-chain{display:none}}

/* ============================================================
   6. TRUST MARQUEE
   ============================================================ */
.ap-marquee{background:var(--paper-alt);border-block:1px solid var(--line);overflow:hidden;padding:15px 0}
.ap-marquee-track{display:flex;width:max-content;animation:ap-scroll 34s linear infinite}
.ap-marquee-i{display:flex;align-items:center;gap:11px;padding-inline:30px;white-space:nowrap;
  font-size:12.5px;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-soft)}
.ap-marquee-i s{width:5px;height:5px;background:var(--brand);border-radius:50%;text-decoration:none}
@keyframes ap-scroll{to{transform:translateX(-50%)}}
@media(prefers-reduced-motion:reduce){.ap-marquee-track{animation:none}}

/* ============================================================
   7. SECTION HEADINGS
   ============================================================ */
.ap-sec{padding-block:72px}
.ap-sec-h{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:32px;
  gap:20px;flex-wrap:wrap}
.ap-sec-h h2{font-size:38px;text-transform:uppercase;line-height:1;margin:0;color:var(--ink)}
.ap-sec-h h2 s{text-decoration:none;color:var(--brand)}
.ap-sec-h p{color:var(--ink-soft);font-size:14.5px;margin:8px 0 0}
.ap-more{font-family:var(--font-head);font-weight:700;font-size:15px;letter-spacing:.14em;
  text-transform:uppercase;border-bottom:2px solid var(--brand);padding-bottom:3px;
  color:var(--ink);text-decoration:none}

/* ============================================================
   8. RESEARCH-AREA GRID
   ============================================================ */
.ap-cats{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line);
  border:1px solid var(--line)}
.ap-cat{background:var(--paper);padding:24px 22px;transition:.2s;display:block;text-decoration:none}
.ap-cat:hover{background:var(--ink-deep)}
.ap-cat:hover .ap-cat-n,.ap-cat:hover .ap-cat-c{color:#fff}
.ap-cat b{font-family:var(--font-head);font-size:11px;font-weight:700;letter-spacing:.2em;
  color:var(--brand);display:block;margin-bottom:10px}
.ap-cat-n{font-family:var(--font-head);font-size:22px;font-weight:600;text-transform:uppercase;
  line-height:1.1;color:var(--ink);transition:.2s}
.ap-cat-c{font-size:12px;color:var(--ink-soft);margin-top:7px;transition:.2s}
@media(max-width:900px){.ap-cats{grid-template-columns:repeat(2,1fr)}}

/* ============================================================
   9. PRODUCT CARDS — data strip is the signature element
   ============================================================ */
.woocommerce ul.products{display:grid!important;gap:18px!important;margin:0!important}
.woocommerce ul.products.columns-4{grid-template-columns:repeat(4,1fr)!important}
.woocommerce ul.products.columns-5{grid-template-columns:repeat(5,1fr)!important}
.woocommerce ul.products.columns-3{grid-template-columns:repeat(3,1fr)!important}
@media(max-width:1080px){.woocommerce ul.products[class*=columns-]{grid-template-columns:repeat(3,1fr)!important}}
@media(max-width:720px){.woocommerce ul.products[class*=columns-]{grid-template-columns:repeat(2,1fr)!important}}

.woocommerce ul.products li.product{width:auto!important;margin:0!important;float:none!important;
  border:1px solid var(--line);background:var(--paper);display:flex;flex-direction:column;
  transition:.22s;overflow:hidden;text-align:left;padding:0}
.woocommerce ul.products li.product:hover{border-color:var(--ink-deep);transform:translateY(-3px);
  box-shadow:0 14px 30px -18px rgba(0,0,0,.4)}
.woocommerce ul.products li.product a img{margin:0!important;aspect-ratio:1;object-fit:cover;
  width:100%;background:var(--paper-alt);border-bottom:1px solid var(--line);border-radius:0}
.woocommerce ul.products li.product .woocommerce-loop-product__title{
  font-family:var(--font-body)!important;font-size:16px!important;font-weight:600!important;
  text-transform:none!important;padding:0!important;margin:6px 0 0!important;
  line-height:1.25;color:var(--ink)}
.ap-card-cat{font-size:9.5px;font-weight:700;letter-spacing:.18em;text-transform:uppercase;
  color:var(--brand);padding:0;margin:0}
.ap-card-sub{font-size:12.5px;color:var(--ink-soft);padding:4px 0 0;margin:0;line-height:1.45}
.ap-strip{display:flex;margin:12px 0 0;border:1px solid var(--line);border-radius:var(--radius);
  overflow:hidden;background:var(--paper-alt)}
.ap-strip div{flex:1;padding:7px 6px;text-align:center;border-right:1px solid var(--line)}
.ap-strip div:last-child{border:0}
.ap-strip b{display:block;font-family:var(--font-mono);font-size:11px;font-weight:700;color:var(--ink)}
.ap-strip span{display:block;font-size:8.5px;letter-spacing:.1em;text-transform:uppercase;
  color:var(--ink-soft);margin-top:3px}
.woocommerce ul.products li.product .price{font-family:var(--font-mono)!important;
  font-size:15.5px!important;font-weight:700!important;color:var(--ink)!important;
  padding:0!important;margin:0!important;display:block;white-space:nowrap;line-height:1.3}
.woocommerce ul.products li.product .price .woocommerce-Price-amount{white-space:nowrap}
.woocommerce ul.products li.product .price del{opacity:.5;font-size:.8em}
.woocommerce ul.products li.product .button{font-family:var(--font-head)!important;
  font-size:13.5px!important;font-weight:700!important;letter-spacing:.12em!important;
  padding:9px 15px!important;margin:0!important;background:transparent!important;
  color:var(--ink)!important;border:1.5px solid var(--ink)!important;width:auto!important;
  border-radius:var(--radius)!important;transform:none!important;white-space:nowrap;flex:none}
.woocommerce ul.products li.product:hover .button{background:var(--brand)!important;
  border-color:var(--brand)!important;color:var(--on-brand)!important}

/* Astra emits the summary children in its own order; flex `order` puts them
   back in the demo's sequence, and the price/button footer is pinned bottom. */
.woocommerce ul.products li.product .astra-shop-summary-wrap{
  display:flex!important;flex-direction:column;flex:1 1 auto;width:100%;
  padding:15px 15px 17px}
.woocommerce ul.products li.product .astra-shop-summary-wrap > .ap-card-cat{order:1}
.woocommerce ul.products li.product .astra-shop-summary-wrap > .ast-loop-product__link,
.woocommerce ul.products li.product .astra-shop-summary-wrap > .woocommerce-loop-product__title{order:2}
.woocommerce ul.products li.product .astra-shop-summary-wrap > .ap-card-sub{order:3}
.woocommerce ul.products li.product .astra-shop-summary-wrap > .ap-strip{order:4}
.woocommerce ul.products li.product .astra-shop-summary-wrap > .ap-card-f{order:5}
.ap-card-f{display:flex;align-items:center;justify-content:space-between;gap:10px;
  margin-top:auto;padding-top:14px}
.woocommerce ul.products li.product .astra-shop-summary-wrap > .screen-reader-text,
.woocommerce ul.products li.product .ast-woo-product-category,
.woocommerce ul.products li.product .ast-on-card-button,
.woocommerce ul.products li.product .star-rating,
.woocommerce ul.products li.product .woocommerce-product-rating{display:none!important}
.woocommerce ul.products li.product .ast-loop-product__link{text-decoration:none!important}
.astra-shop-thumbnail-wrap .ap-card-cat,
.astra-shop-thumbnail-wrap .ap-card-sub,
.astra-shop-thumbnail-wrap .ap-strip{display:none!important}

/* image area: drawn vial on a graph-paper field, like the demo */
.woocommerce ul.products li.product .astra-shop-thumbnail-wrap{position:relative}
.ap-vialbox{aspect-ratio:1;display:grid;place-items:center;background:var(--paper-alt);
  border-bottom:1px solid var(--line);position:relative;overflow:hidden}
.ap-vialbox:before{content:"";position:absolute;inset:0;
  background-image:linear-gradient(var(--line) 1px,transparent 1px),
                   linear-gradient(90deg,var(--line) 1px,transparent 1px);
  background-size:26px 26px;opacity:.65}
.ap-vial{position:relative;z-index:2;transition:transform .3s}
.woocommerce ul.products li.product:hover .ap-vial{transform:scale(1.06) translateY(-3px)}
/* The badge is emitted inside the summary wrap and lifted onto the image
   corner from here, anchored to the card rather than the thumbnail. Keeping it
   out of the image in the markup is what lets the phone breakpoint below drop
   it back into the text flow. */
.woocommerce ul.products li.product{position:relative}
.ap-badge{position:absolute;top:10px;left:10px;z-index:3;background:var(--ink-deep);color:#fff;
  font-family:var(--font-head);font-size:10px;font-weight:700;letter-spacing:.14em;
  text-transform:uppercase;padding:5px 9px;border-radius:var(--radius)}
.ap-badge.a{background:var(--brand);color:var(--on-brand)}

/* ============================================================
   10. BATCH VERIFICATION BLOCK
   ============================================================ */
.ap-coa-in{display:grid;grid-template-columns:1fr 1fr;gap:52px;align-items:center;padding-block:72px}
.ap-coa-in h2{font-size:42px;text-transform:uppercase;line-height:1.02;color:#fff;margin:0}
.ap-coa-in h2 s{text-decoration:none;color:var(--brand)}
.ap-coa-in p{color:var(--on-deep);margin-top:16px;font-size:16px;line-height:1.7;max-width:48ch}
.ap-lookup{display:flex;margin-top:26px;border:1.5px solid var(--ink-deep-3);
  border-radius:var(--radius);overflow:hidden;max-width:520px}
.ap-lookup input{flex:1;background:transparent;border:0!important;padding:14px 17px;color:#fff;
  font-family:var(--font-mono);font-size:14px;outline:none}
.ap-lookup input::placeholder{color:#6d878c}
.ap-lookup button{background:var(--brand);color:var(--on-brand);border:0;cursor:pointer;
  font-family:var(--font-head);font-weight:700;font-size:15px;letter-spacing:.14em;
  text-transform:uppercase;padding-inline:24px}
.ap-coa-card{background:rgba(255,255,255,.05);border:1px solid var(--ink-deep-3);
  border-radius:3px;padding:24px}
.ap-coa-row{display:flex;justify-content:space-between;gap:14px;padding:11px 0;
  border-bottom:1px solid var(--ink-deep-3);font-size:13.5px}
.ap-coa-row:last-child{border:0}
.ap-coa-row span{color:var(--on-deep-dim);letter-spacing:.06em;text-transform:uppercase;
  font-size:10.5px;font-weight:600;padding-top:2px;white-space:nowrap}
.ap-coa-row b{font-family:var(--font-mono);font-weight:500;text-align:right;color:#fff}
.ap-pass{color:var(--brand)}
.ap-miss{color:#ff8f8f}
@media(max-width:940px){.ap-coa-in{grid-template-columns:1fr;gap:34px}}

/* ============================================================
   11. COMMITMENT BAND
   ============================================================ */
.ap-commit{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);
  border:1px solid var(--line)}
.ap-cm{background:var(--paper);padding:32px 28px}
.ap-cm .num{font-family:var(--font-mono);font-size:11px;color:var(--brand);font-weight:700;letter-spacing:.1em}
.ap-cm h3{font-size:23px;font-weight:600;text-transform:uppercase;margin:13px 0 9px;color:var(--ink)}
.ap-cm p{font-size:14px;color:var(--ink-soft);line-height:1.65;margin:0}
@media(max-width:860px){.ap-commit{grid-template-columns:1fr}}

/* ============================================================
   12. PDP
   ============================================================ */
.woocommerce div.product .product_title{font-family:var(--font-head);font-size:44px;
  font-weight:700;text-transform:uppercase;line-height:1.02}
.woocommerce div.product p.price{font-family:var(--font-mono);font-size:30px;font-weight:700;color:var(--ink)}
.woocommerce-tabs ul.tabs{border-bottom:1px solid var(--line)!important;padding:0!important;margin-bottom:24px!important}
.woocommerce-tabs ul.tabs li{background:transparent!important;border:0!important;
  border-bottom:2px solid transparent!important;border-radius:0!important;margin:0!important}
.woocommerce-tabs ul.tabs li a{font-family:var(--font-body)!important;font-weight:600!important;
  font-size:15px!important;color:var(--ink-soft)!important;padding:14px 26px!important;text-transform:none!important}
.woocommerce-tabs ul.tabs li.active{border-bottom-color:var(--ink)!important}
.woocommerce-tabs ul.tabs li.active a{color:var(--ink)!important}
.woocommerce-tabs ul.tabs li::before,.woocommerce-tabs ul.tabs li::after{display:none!important}

.ap-spec{width:100%;border-collapse:collapse;margin:6px 0}
.ap-spec th,.ap-spec td{padding:11px 16px;border:1px solid var(--line);text-align:left;vertical-align:top;font-size:14px}
.ap-spec th{background:var(--paper-alt);width:30%;font-weight:600;font-family:var(--font-body);color:var(--ink)}
.ap-spec td{font-family:var(--font-mono);font-size:13px;color:var(--ink);word-break:break-word}
@media(max-width:600px){.ap-spec th{width:42%}}

.ap-coalink{display:inline-flex;align-items:center;gap:9px;margin:16px 0 0;padding:11px 18px;
  border:1.5px solid var(--brand);color:var(--brand);font-family:var(--font-head);font-weight:700;
  letter-spacing:.12em;text-transform:uppercase;border-radius:var(--radius);transition:.18s;
  font-size:14px;text-decoration:none}
.ap-coalink:hover{background:var(--brand);color:var(--on-brand)}
.ap-ruo{border:1px solid #d9534f;background:rgba(217,83,79,.06);padding:12px 15px;margin-top:18px;
  font-size:12.8px;line-height:1.6;color:#8a2b28;border-radius:var(--radius)}
.ap-ruo b{display:block;text-transform:uppercase;letter-spacing:.08em;margin-bottom:2px;font-size:11px}
.ap-trustrow{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);
  border:1px solid var(--line);margin-top:22px}
.ap-trustrow div{background:var(--paper);padding:14px 12px;text-align:center}
.ap-trustrow b{display:block;font-family:var(--font-head);font-size:15px;text-transform:uppercase;color:var(--ink)}
.ap-trustrow span{font-size:10.5px;color:var(--ink-soft);letter-spacing:.06em}

/* variation swatches: equal-width buttons, dark when selected */
.wvs-style-squared .variable-item{border-radius:var(--radius)!important;min-width:96px!important}
.variable-items-wrapper .variable-item.selected,
.variable-items-wrapper .variable-item[aria-checked=true]{
  background:var(--ink)!important;color:#fff!important;box-shadow:none!important;border-color:var(--ink)!important}

/* ============================================================
   13. CART CONSENT GATE (Tagada redirects checkout — gate lives here)
   ============================================================ */
.ap-consent{border:1px solid var(--line);background:var(--paper-alt);padding:13px 15px;
  margin:0 0 14px;border-radius:var(--radius);transition:border-color .2s}
.ap-consent label{display:flex;gap:10px;align-items:flex-start;font-size:13px;line-height:1.55;
  color:var(--ink-soft);cursor:pointer}
.ap-consent input[type=checkbox]{margin-top:2px;flex:none;accent-color:var(--brand)}
.ap-consent.ap-shake{border-color:#d9534f;background:rgba(217,83,79,.06);animation:ap-shake .4s}
@keyframes ap-shake{0%,100%{transform:translateX(0)}25%{transform:translateX(-5px)}75%{transform:translateX(5px)}}
.wc-proceed-to-checkout .ap-disabled{opacity:.45;pointer-events:none}

/* ============================================================
   14. FOOTER
   ============================================================ */
.ap-ruo-footer{background:var(--paper-alt);border-top:1px solid var(--line);padding:20px 16px;
  text-align:center;font-size:12px;color:var(--ink-soft);line-height:1.7}
.ap-ruo-footer b{display:block;color:var(--ink);letter-spacing:.1em;text-transform:uppercase;
  font-size:11px;margin-bottom:4px}


/* ============================================================
   15. FULL-BLEED — beat Astra's .entry-content > * content-width rule
   ============================================================ */
.entry-content > .ap-dark,
.entry-content > .ap-marquee,
.entry-content > .ap-sec,
.ap-dark,.ap-marquee,.ap-sec{
  width:100vw!important;max-width:100vw!important;
  margin-left:calc(50% - 50vw)!important;
  margin-right:calc(50% - 50vw)!important}

.home .site-content .ast-container{max-width:100%!important;padding-left:0!important;padding-right:0!important}
.home .entry-content{margin-block:0!important}
.home .site-content{padding-block:0!important}
.home #primary,.home .site-main{margin-block:0!important;padding-block:0!important}
.home .entry-content > *:first-child{margin-top:0!important}

/* links inside our components never get theme underlines */
.ap-btn,.ap-more,.ap-cat,.ap-coalink,.ap-hero a,.ap-sec a,.ap-dark a{text-decoration:none!important}
.ap-btn:hover,.ap-more:hover,.ap-coalink:hover{text-decoration:none!important}

/* header spacing */
.ast-site-identity{padding-block:12px}


/* ============================================================
   16. SITE CHROME — custom header, mobile nav, search, footer
   Astra's own header/footer are hidden rather than unhooked, so a
   parent-theme change can only over-render, never under-render.
   ============================================================ */
#masthead.site-header,
.site-header .main-header-bar-wrap,
.ast-mobile-header-wrap,
.site-footer,
.ast-above-header-wrap,
.ast-below-header-wrap{display:none!important}

.ap-topbar{background:var(--ink-deep);color:#fff;font-size:12.5px;letter-spacing:.1em;
  text-align:center;padding:9px 16px;font-weight:500}
.ap-topbar span{color:var(--brand)}

.ap-header{position:sticky;top:0;z-index:60;background:rgba(255,255,255,.93);
  backdrop-filter:blur(12px);border-bottom:1px solid var(--line)}
.admin-bar .ap-header{top:32px}
@media(max-width:782px){.admin-bar .ap-header{top:46px}}

.ap-nav{display:flex;align-items:center;justify-content:space-between;height:72px;gap:20px}
.ap-logo{display:flex;align-items:center;gap:11px;color:var(--ink);text-decoration:none!important}
.ap-mark{width:32px;height:32px;flex:none}
.ap-logo-t{font-family:var(--font-head),sans-serif;font-weight:700;font-size:20px;
  letter-spacing:.09em;line-height:1;text-transform:uppercase}
.ap-logo-t small{display:block;font-family:var(--font-body),sans-serif;font-size:8.5px;
  font-weight:600;letter-spacing:.24em;color:var(--ink-soft);margin-top:3px}

.ap-menu{display:flex;gap:30px;font-family:var(--font-head),sans-serif;font-size:15px;
  font-weight:600;letter-spacing:.1em;text-transform:uppercase}
.ap-menu a{position:relative;padding-block:6px;color:var(--ink);text-decoration:none!important}
.ap-menu a:after{content:"";position:absolute;left:0;right:100%;bottom:0;height:2px;
  background:var(--brand);transition:right .25s}
.ap-menu a:hover:after,.ap-menu a.on:after{right:0}

.ap-navr{display:flex;gap:18px;align-items:center;color:var(--ink-soft)}
.ap-navr button,.ap-navr a{display:grid;place-items:center;background:none;border:0;
  padding:0;color:inherit;cursor:pointer;text-decoration:none!important}
.ap-navr svg{display:block}
.ap-cartn{position:relative}
.ap-cart-count{position:absolute;top:-6px;right:-8px;background:var(--brand);color:var(--on-brand);
  font-size:10px;font-weight:700;font-style:normal;min-width:16px;height:16px;border-radius:9px;
  display:grid;place-items:center;padding:0 4px;line-height:1}

.ap-burger{display:none;flex-direction:column;gap:4px;width:22px}
.ap-burger span{display:block;height:2px;background:currentColor;width:100%}
.ap-mobnav{display:none;border-top:1px solid var(--line);background:var(--paper)}
.ap-mobnav a{display:block;padding:13px 0;border-bottom:1px solid var(--line);
  font-family:var(--font-head),sans-serif;font-weight:600;letter-spacing:.1em;
  text-transform:uppercase;color:var(--ink);text-decoration:none!important}
body.ap-nav-open .ap-mobnav{display:block}
@media(max-width:900px){.ap-menu{display:none}.ap-burger{display:flex}}

.ap-searchbar{display:none;border-top:1px solid var(--line);background:var(--paper);padding:14px 0}
body.ap-search-open .ap-searchbar{display:block}
.ap-searchbar form{display:flex;border:1.5px solid var(--line);border-radius:var(--radius);overflow:hidden}
.ap-searchbar input[type=search]{flex:1;border:0;padding:13px 16px;font-size:14px;outline:none;
  background:var(--paper);color:var(--ink)}
.ap-searchbar button{background:var(--ink-deep);color:#fff;border:0;padding:0 26px;cursor:pointer;
  font-family:var(--font-head),sans-serif;font-weight:700;letter-spacing:.14em;text-transform:uppercase}

.ap-footer{background:var(--ink-deep);color:#fff;padding-top:60px}
.ap-fgrid{display:grid;grid-template-columns:1.6fr 1fr 1fr 1fr;gap:36px;padding-bottom:44px}
.ap-fgrid h4{font-family:var(--font-head),sans-serif;font-size:13px;letter-spacing:.2em;
  text-transform:uppercase;color:var(--brand);margin-bottom:14px}
.ap-fgrid a{display:block;color:#a8bcc0;font-size:14px;padding:5px 0;text-decoration:none!important}
.ap-fgrid a:hover{color:#fff}
/* Contact block in the footer's brand column: phone and support address.
   Kept slightly brighter than the nav links because it is information, not
   navigation, and it has to be readable at a glance. */
.ap-fcontact{margin-top:14px}
.ap-fcontact a{display:inline-block;color:#d3e2e5;font-size:14px;padding:3px 0;
  text-decoration:none!important;letter-spacing:.01em}
.ap-fcontact a:first-child{font-family:var(--font-head),sans-serif;font-size:15px;
  letter-spacing:.04em;color:#fff}
.ap-fcontact a:hover{color:#fff;text-decoration:underline!important}
.ap-fgrid p{color:#a8bcc0;font-size:14px;line-height:1.7;max-width:34ch;margin-top:12px}
.ap-logo-d,.ap-logo-d .ap-logo-t{color:#fff}
.ap-logo-d .ap-logo-t small{color:var(--on-deep-dim)}
.ap-ruof{border-top:1px solid var(--ink-deep-3);padding:20px 0;font-size:12px;color:#7e979c;
  line-height:1.7;text-align:center}
.ap-ruof b{color:var(--on-deep);letter-spacing:.1em;text-transform:uppercase;font-size:11px}
.ap-fbot{border-top:1px solid var(--ink-deep-3);padding:17px 0;display:flex;
  justify-content:space-between;font-size:12px;color:#7e979c;flex-wrap:wrap;gap:10px}
@media(max-width:860px){.ap-fgrid{grid-template-columns:1fr 1fr}}


/* ============================================================
   17. CART DRAWER
   ============================================================ */
.ap-scrim{position:fixed;inset:0;background:rgba(6,14,16,.5);opacity:0;pointer-events:none;
  transition:.25s;z-index:80}
body.ap-cart-open .ap-scrim{opacity:1;pointer-events:auto}
.ap-drawer{position:fixed;top:0;right:0;bottom:0;width:400px;max-width:92vw;background:var(--paper);
  z-index:90;transform:translateX(100%);transition:transform .28s cubic-bezier(.4,0,.2,1);
  display:flex;flex-direction:column}
body.ap-cart-open .ap-drawer{transform:none}
.ap-dwrap{flex:1;display:flex;flex-direction:column;min-height:0}
.ap-dhead{display:flex;justify-content:space-between;align-items:center;padding:20px 22px;
  border-bottom:1px solid var(--line)}
.ap-dhead h3{font-family:var(--font-head),sans-serif;font-size:20px;text-transform:uppercase;
  letter-spacing:.1em;margin:0}
.ap-dhead button{background:none;border:0;cursor:pointer;color:var(--ink)}
.ap-dbody{flex:1;overflow-y:auto;padding:8px 22px}
.ap-ci{display:flex;gap:14px;padding:16px 0;border-bottom:1px solid var(--line);align-items:center}
.ap-ci-i{width:60px;height:60px;background:var(--paper-alt);border:1px solid var(--line);
  display:grid;place-items:center;flex:none;overflow:hidden}
.ap-ci-i img{width:100%;height:100%;object-fit:cover;margin:0}
.ap-ci-b{flex:1;min-width:0}
.ap-ci-b b{font-size:14.5px;display:block}
.ap-ci-b span{font-size:12px;color:var(--ink-soft);font-family:var(--font-mono),monospace}
.ap-rm{font-size:11.5px;color:var(--ink-soft);text-decoration:underline;margin-top:5px;display:inline-block}
.ap-ci-p{font-family:var(--font-mono),monospace;font-weight:700;font-size:14px}
.ap-dfoot{border-top:1px solid var(--line);padding:20px 22px}
.ap-drow{display:flex;justify-content:space-between;font-size:14px;color:var(--ink-soft);padding:5px 0}
.ap-drow.ap-tot{color:var(--ink);font-weight:700;font-size:17px;font-family:var(--font-mono),monospace;
  padding-top:12px;margin-top:8px;border-top:1px solid var(--line)}
.ap-dfoot .ap-btn{margin-top:14px}
.ap-dnote{font-size:11.5px;color:var(--ink-soft);text-align:center;margin-top:10px}
.ap-empty{text-align:center;padding:60px 20px;color:var(--ink-soft);font-size:14.5px}
.ap-full{width:100%}
.ap-toast{position:fixed;bottom:26px;left:50%;transform:translate(-50%,20px);background:var(--ink-deep);
  color:#fff;padding:13px 22px;border-radius:var(--radius);font-size:14px;z-index:95;opacity:0;
  transition:.25s;pointer-events:none}
.ap-toast.on{opacity:1;transform:translate(-50%,0)}


/* ============================================================
   18. PAGE HEADER (dark banner) — shop, category, PDP, COA
   ============================================================ */
.ap-phead{background:var(--ink-deep);color:#fff;position:relative;overflow:hidden;
  width:100vw;max-width:100vw;margin-left:calc(50% - 50vw);margin-right:calc(50% - 50vw)}
.ap-phead:before{content:"";position:absolute;inset:0;
  background-image:linear-gradient(rgba(255,255,255,.045) 1px,transparent 1px),
                   linear-gradient(90deg,rgba(255,255,255,.045) 1px,transparent 1px);
  background-size:44px 44px}
.ap-phead-in{position:relative;z-index:2;padding-block:52px}
.ap-phead-in.tight{padding-block:26px}
.ap-phead h1{font-family:var(--font-head),sans-serif;font-size:46px;font-weight:700;
  text-transform:uppercase;line-height:1.03;color:#fff;margin:0}
.ap-phead p{color:var(--on-deep-dim);margin-top:10px;font-size:15px}
.ap-crumb{font-size:11.5px;letter-spacing:.12em;text-transform:uppercase;
  color:var(--on-deep-dim);margin-bottom:14px}
.ap-phead-in.tight .ap-crumb{margin-bottom:0}
.ap-crumb a{color:inherit;text-decoration:none!important}
.ap-crumb a:hover{color:var(--brand)}

/* archive/product pages: kill Astra's inner padding so the banner sits flush */
.woocommerce.archive .site-content .ast-container,
.woocommerce.single-product .site-content .ast-container,
.page .site-content .ast-container{max-width:100%!important;padding-inline:0!important}
.woocommerce.archive .site-content,
.woocommerce.single-product .site-content{padding-top:0!important}
.woocommerce.archive #primary,
.woocommerce.single-product #primary,
.page #primary{margin-block:0!important;padding-block:0!important;width:100%!important}
.woocommerce.archive #secondary,
.woocommerce.single-product #secondary{display:none!important}


/* ============================================================
   19. SHOP ARCHIVE — sidebar filter + toolbar
   ============================================================ */
.ap-shop{display:grid;grid-template-columns:236px 1fr;gap:36px;align-items:start;
  max-width:var(--page);margin:0 auto;padding:44px 28px 60px}
@media(max-width:900px){.ap-shop{grid-template-columns:1fr;gap:26px}}
.ap-sideblock+.ap-sideblock{margin-top:28px}
.ap-sideblock h4{font-family:var(--font-head),sans-serif;font-size:13px;letter-spacing:.18em;
  text-transform:uppercase;color:var(--ink);padding-bottom:11px;margin-bottom:6px;
  border-bottom:1px solid var(--line)}
.ap-sideblock p{font-size:13px;color:var(--ink-soft);line-height:1.6;padding-top:4px}
.ap-sideblock p b{color:var(--ink)}
.ap-fbtn{position:relative;display:flex;justify-content:space-between;align-items:center;
  width:100%;padding:8px 0 8px 12px;font-size:14px;color:var(--ink-soft);
  text-decoration:none!important;transition:.15s}
.ap-fbtn:hover{color:var(--ink)}
.ap-fbtn.on{color:var(--ink);font-weight:600}
.ap-fbtn.on:before{content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);
  width:3px;height:14px;background:var(--brand)}
.ap-fbtn i{font-style:normal;font-family:var(--font-mono),monospace;font-size:11px;color:var(--ink-soft)}
.ap-sideblock .ap-more{display:inline-block;margin-top:12px;font-size:13px;color:var(--brand)}

.ap-shopmain{min-width:0}
.woocommerce .ap-shopmain .woocommerce-result-count{float:none;margin:0;font-size:13px;color:var(--ink-soft)}
.woocommerce .ap-shopmain .woocommerce-ordering{float:none;margin:0}
.woocommerce .ap-shopmain .woocommerce-ordering select{border:1px solid var(--line);padding:9px 12px;
  border-radius:var(--radius);font-size:13.5px;background:var(--paper);color:var(--ink)}
.ap-shopmain>.woocommerce-result-count,
.ap-shopmain>.woocommerce-ordering{display:inline-block;vertical-align:middle}
.ap-shopmain{position:relative}
.ap-shopmain>form.woocommerce-ordering{float:right}
.ap-shopmain>.woocommerce-result-count{padding-top:10px}
.ap-shopmain>ul.products{clear:both;padding-top:16px;border-top:1px solid var(--line);margin-top:16px!important}
.woocommerce nav.woocommerce-pagination{margin-top:36px}
.woocommerce nav.woocommerce-pagination ul{border:0;gap:6px;display:flex}
.woocommerce nav.woocommerce-pagination ul li{border:1px solid var(--line);border-radius:var(--radius)}
.woocommerce nav.woocommerce-pagination ul li .page-numbers.current{background:var(--ink-deep);color:#fff}


/* ============================================================
   20. PRODUCT PAGE
   ============================================================ */
.single-product div.product{max-width:var(--page);margin:0 auto!important;padding:44px 28px 20px;
  display:grid;grid-template-columns:1.05fr 1fr;gap:48px;align-items:start}
@media(max-width:900px){.single-product div.product{grid-template-columns:1fr;gap:30px}}
.single-product div.product .woocommerce-product-gallery{width:100%!important;float:none!important;
  margin:0!important;border:1px solid var(--line);background:var(--paper-alt)}
.single-product div.product .summary{width:100%!important;float:none!important;margin:0!important;
  display:flex;flex-direction:column}
.single-product div.product .woocommerce-tabs,
.single-product div.product .related,
.single-product div.product .up-sells{grid-column:1/-1}

.ap-pdp-cat{font-size:10px;font-weight:700;letter-spacing:.18em;text-transform:uppercase;
  color:var(--brand);margin-bottom:2px}
.single-product div.product .product_title{font-family:var(--font-head),sans-serif!important;
  font-size:44px!important;font-weight:700!important;text-transform:uppercase;line-height:1.02;
  margin:6px 0 0!important;color:var(--ink)}
.single-product div.product .woocommerce-product-details__short-description{
  color:var(--ink-soft);font-size:15.5px;line-height:1.65;margin-top:10px}
.single-product div.product p.price,
.single-product div.product .price{font-family:var(--font-mono),monospace!important;
  font-size:30px!important;font-weight:700!important;color:var(--ink)!important;margin:20px 0 4px!important}
.single-product div.product .price del{opacity:.5;font-size:.7em}
.ap-instock{display:inline-flex;align-items:center;gap:7px;font-size:12.5px;color:var(--ink-soft)}
.ap-instock s{width:7px;height:7px;background:var(--brand);border-radius:50%;text-decoration:none}
.ap-optlab{font-family:var(--font-head),sans-serif;font-size:13px;letter-spacing:.16em;
  text-transform:uppercase;color:var(--ink-soft);margin:24px 0 10px}

.single-product table.variations{margin:0!important;border:0}
.single-product table.variations th,
.single-product table.variations td{border:0!important;padding:0!important;display:block}
.single-product table.variations label{display:none}
.single-product table.variations select{display:none}
.single-product .reset_variations{font-size:12px;color:var(--ink-soft)}
.ap-swatches{display:flex;gap:9px;flex-wrap:wrap}
.ap-sw{min-width:96px;text-align:center;padding:12px 16px;border:1px solid var(--line);
  background:var(--paper);border-radius:var(--radius);transition:.15s;font-size:14px;
  cursor:pointer;font-family:var(--font-body),sans-serif;color:var(--ink)}
.ap-sw:hover{background:var(--paper-alt)}
.ap-sw.on{background:var(--ink-deep);color:#fff;border-color:var(--ink-deep)}

.single-product form.cart{display:flex;gap:12px;margin-top:22px!important;align-items:stretch;flex-wrap:wrap}
.single-product form.variations_form{display:block}
.single-product .woocommerce-variation-add-to-cart{display:flex;gap:12px;align-items:stretch;margin-top:22px}
.single-product form.cart .quantity{display:flex;border:1px solid var(--line);border-radius:var(--radius)}
.single-product form.cart .quantity input{width:64px;border:0;text-align:center;
  font-family:var(--font-mono),monospace;font-weight:700;background:transparent}
.single-product form.cart button.single_add_to_cart_button{flex:1;background:var(--ink-deep)!important;
  color:#fff!important;border:0!important;font-family:var(--font-head),sans-serif!important;
  font-weight:700!important;letter-spacing:.13em!important;text-transform:uppercase!important;
  font-size:15px!important;padding:14px 26px!important;border-radius:var(--radius)!important}
.single-product form.cart button.single_add_to_cart_button:hover{background:var(--brand)!important;
  color:var(--on-brand)!important}

.ap-trustrow{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);
  border:1px solid var(--line);margin-top:22px}
.ap-trustrow div{background:var(--paper);padding:14px 12px;text-align:center}
.ap-trustrow b{display:block;font-family:var(--font-head),sans-serif;font-size:15px;text-transform:uppercase}
.ap-trustrow span{font-size:10.5px;color:var(--ink-soft);letter-spacing:.06em}

/* tabs */
.woocommerce-tabs{padding-top:26px}
.woocommerce div.product .woocommerce-tabs ul.tabs{padding:0!important;margin:0 0 24px!important;
  border-bottom:1px solid var(--line);display:flex;gap:0;flex-wrap:wrap}
.woocommerce div.product .woocommerce-tabs ul.tabs:before{display:none}
.woocommerce div.product .woocommerce-tabs ul.tabs li{background:none!important;border:0!important;
  border-radius:0!important;margin:0!important;padding:0!important}
.woocommerce div.product .woocommerce-tabs ul.tabs li:before,
.woocommerce div.product .woocommerce-tabs ul.tabs li:after{display:none!important}
.woocommerce div.product .woocommerce-tabs ul.tabs li a{padding:14px 26px!important;font-weight:600;
  font-size:15px;color:var(--ink-soft)!important;border-bottom:2px solid transparent;
  margin-bottom:-1px;display:block;text-decoration:none!important}
.woocommerce div.product .woocommerce-tabs ul.tabs li.active a{color:var(--ink)!important;
  border-bottom-color:var(--ink)}
.woocommerce div.product .woocommerce-tabs .panel{max-width:900px;color:var(--ink-soft);
  line-height:1.75;font-size:15px;margin:0}
.woocommerce div.product .woocommerce-tabs .panel h2{display:none}

.woocommerce div.product .related>h2,
.woocommerce div.product .up-sells>h2{font-family:var(--font-head),sans-serif;font-weight:700;
  font-size:38px;text-transform:uppercase;letter-spacing:-.01em;margin-bottom:26px;color:var(--ink)}


/* ============================================================
   21. COA REGISTER PAGE
   ============================================================ */
.ap-coapage{padding:44px 28px 64px}
.ap-searchbig{display:flex;border:1.5px solid var(--line);border-radius:var(--radius);
  overflow:hidden;max-width:560px}
.ap-searchbig input{flex:1;border:0;padding:15px 18px;font-family:var(--font-mono),monospace;
  font-size:14px;outline:none;background:var(--paper);color:var(--ink)}
.ap-searchbig button{background:var(--ink-deep);color:#fff;border:0;padding:0 26px;cursor:pointer;
  font-family:var(--font-head),sans-serif;font-weight:700;letter-spacing:.14em;text-transform:uppercase}
.ap-coanote{font-size:13.5px;color:var(--ink-soft);margin-top:12px}
.ap-coanote b{color:var(--ink)}
.ap-tablewrap{overflow-x:auto;margin-top:28px}
.ap-coatable{width:100%;border-collapse:collapse;font-size:14px}
.ap-coatable th{text-align:left;padding:12px 14px;background:var(--paper-alt);
  border:1px solid var(--line);font-family:var(--font-head),sans-serif;font-size:12.5px;
  letter-spacing:.14em;text-transform:uppercase;color:var(--ink-soft)}
.ap-coatable td{padding:13px 14px;border:1px solid var(--line);
  font-family:var(--font-mono),monospace;font-size:13px;color:var(--ink)}
.ap-coatable tr:hover td{background:var(--paper-alt)}
.ap-coatable .nm{font-family:var(--font-body),sans-serif;font-weight:600}
.ap-coatable .nm a{color:var(--ink);text-decoration:none!important}
.ap-coatable .nm a:hover{color:var(--brand)}
.ap-coatable .pur{color:var(--brand);font-weight:700}
.ap-dl{color:var(--brand);font-weight:700;text-decoration:none!important}
.ap-noresult{text-align:center;padding:34px;color:var(--ink-soft)}


/* ============================================================
   22. CONTENT PAGES — policies, about, learn, contact
   ============================================================ */
.ap-page{max-width:860px;margin:0 auto;padding:48px 28px 64px;font-size:15.5px;
  line-height:1.75;color:var(--ink-soft)}
.ap-page h2{font-family:var(--font-head),sans-serif;font-size:28px;font-weight:700;
  text-transform:uppercase;color:var(--ink);margin:34px 0 12px;letter-spacing:.01em}
.ap-page h3{font-size:17px;font-weight:700;color:var(--ink);margin:22px 0 8px}
.ap-page p{margin-bottom:14px}
.ap-page ul{margin:0 0 16px 20px}
.ap-page li{margin-bottom:7px}
.ap-page a{color:var(--brand)}
.ap-page table{width:100%;border-collapse:collapse;margin:8px 0 20px}
.ap-page th,.ap-page td{border:1px solid var(--line);padding:11px 15px;text-align:left;font-size:14.5px}
.ap-page th{background:var(--paper-alt);color:var(--ink);font-weight:600;width:32%}

/* WooCommerce account/cart/checkout keep a reading column of their own */
.woocommerce-cart .entry-content,
.woocommerce-checkout .entry-content,
.woocommerce-account .entry-content,
.search .entry-content,
.error404 .entry-content{max-width:var(--page);margin:0 auto!important;padding:44px 28px 64px}


/* ============================================================
   23. ARCHIVE / SINGLE CONTAINER RESET
   Astra makes .ast-container a flex row (content + sidebar). Our
   full-bleed banner has to be a block-level sibling, not a flex item.
   ============================================================ */
.woocommerce.archive .site-content .ast-container,
.woocommerce.single-product .site-content .ast-container,
.page .site-content .ast-container,
.search .site-content .ast-container,
.error404 .site-content .ast-container{display:block!important}
.woocommerce.archive #primary,
.woocommerce.single-product #primary,
.page #primary,.search #primary{max-width:100%!important;float:none!important}
.woocommerce.archive .site-main,
.woocommerce.single-product .site-main,
.page .site-main{margin:0!important;padding:0!important}
.woocommerce.archive .ast-woocommerce-container{padding:0!important}
.woocommerce .woocommerce-breadcrumb{display:none!important}
.woocommerce.archive .site-content > .ast-container > .ast-row{display:block!important}

/* term description, if any, sits under the banner in the reading column */
.woocommerce .term-description{max-width:var(--page);margin:0 auto;padding:26px 28px 0;
  color:var(--ink-soft);font-size:15px}

/* shop toolbar: count left, sort hard right */
.ap-shopmain{display:grid;grid-template-columns:1fr auto;align-items:center;column-gap:16px}
.ap-shopmain > *{grid-column:1/-1}
.ap-shopmain > .woocommerce-result-count{grid-column:1;margin:0!important}
.ap-shopmain > .woocommerce-ordering{grid-column:2;justify-self:end;margin:0!important}
.ap-shopmain > ul.products{margin-top:16px!important}


/* ============================================================
   24. CONTACT
   ============================================================ */
.ap-contact{max-width:860px;margin:0 auto;padding:48px 28px 70px}
.ap-contact-details h2{font-family:var(--font-head);font-size:30px;font-weight:700;
  text-transform:uppercase;color:var(--ink);margin:0 0 14px;letter-spacing:.01em}
.ap-cbig{font-family:var(--font-head);font-size:24px;font-weight:700;letter-spacing:.04em;margin:0 0 8px}
.ap-cbig a{color:var(--ink);text-decoration:none!important}
.ap-cmail{font-size:16px;font-weight:600;letter-spacing:.04em;margin:0 0 16px}
.ap-cmail a{color:var(--brand);text-decoration:none!important}
.ap-caddr{color:var(--ink-soft);font-size:15.5px;line-height:1.7;margin:0 0 16px}
.ap-chours{color:var(--ink-soft);font-size:14px;line-height:1.7;margin:0}

.ap-notice{margin-top:26px;padding:14px 18px;border-radius:var(--radius);font-size:14.5px}
.ap-notice.ok{border:1px solid var(--brand);background:rgba(20,184,166,.08);color:var(--ink)}
.ap-notice.bad{border:1px solid #d9534f;background:rgba(217,83,79,.07);color:#8a2b28}

.ap-form{margin-top:34px;display:flex;flex-direction:column;gap:14px}
.ap-frow{display:grid;grid-template-columns:1fr 1fr;gap:14px}
@media(max-width:600px){.ap-frow{grid-template-columns:1fr}}
.ap-form input[type=text],.ap-form input[type=email],.ap-form input[type=tel],
.ap-form textarea{width:100%;border:1px solid var(--line)!important;background:var(--paper-alt);
  padding:15px 17px;font-size:15px;color:var(--ink);border-radius:var(--radius)!important;
  font-family:var(--font-body)}
.ap-form input:focus,.ap-form textarea:focus{outline:none;border-color:var(--ink-deep)!important;
  background:var(--paper)}
.ap-form textarea{resize:vertical;min-height:180px;line-height:1.6}
.ap-form button{align-self:flex-start;margin-top:6px;cursor:pointer}
.ap-fnote{font-size:12.5px;color:var(--ink-soft);line-height:1.65;margin-top:4px}
.ap-hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}


/* ============================================================
   25. PRODUCT PAGE — order and cleanup
   Astra emits summary children in its own sequence; flex `order`
   restores the demo's: category → title → lede → price → stock →
   size → cart → COA → RUO → trust.
   ============================================================ */
.single-product div.product .summary > .ap-pdp-cat{order:1}
.single-product div.product .summary > .product_title{order:2}
.single-product div.product .summary > .woocommerce-product-details__short-description{order:3}
.single-product div.product .summary > .price{order:4}
.single-product div.product .summary > .ap-instock{order:5}
.single-product div.product .summary > .ap-optlab,
.single-product div.product .summary > .ap-swatches{order:6}
.single-product div.product .summary > form.cart,
.single-product div.product .summary > .variations_form,
.single-product div.product .summary > .stock{order:7}
.single-product div.product .summary > .ap-coalink{order:8}
.single-product div.product .summary > .ap-ruo{order:9}
.single-product div.product .summary > .ap-trustrow{order:10}

/* Astra/WooCommerce furniture the demo doesn't have */
.single-product .summary > .woocommerce-breadcrumb,
.single-product .summary .single-product-category,
.single-product .summary .product_meta,
.single-product .ast-stock-detail,
.single-product .summary > .stock,
.single-product .woocommerce-product-rating,
.single-product .summary .woocommerce-variation-price,
.single-product .summary .woocommerce-variation-availability{display:none!important}
.single-product .summary > .ap-trustrow ~ .ap-trustrow{display:none!important}

/* size block */
.single-product .summary > .ap-optlab{margin:24px 0 10px}
.ap-sw small{display:block;font-family:var(--font-mono),monospace;font-size:11px;
  opacity:.7;margin-top:3px}
.ap-sw small .amount,.ap-sw small bdi{color:inherit!important;font-size:inherit!important;font-weight:400!important}
span.ap-sw{display:inline-block;cursor:default}

/* the drawn vial in the gallery frame */
.ap-gal{aspect-ratio:1;display:grid;place-items:center;position:relative;overflow:hidden;
  background:var(--paper-alt)}
.ap-gal:before{content:"";position:absolute;inset:0;
  background-image:linear-gradient(var(--line) 1px,transparent 1px),
                   linear-gradient(90deg,var(--line) 1px,transparent 1px);
  background-size:32px 32px;opacity:.6}
.ap-gal .ap-vial{position:relative;z-index:2}
.single-product .woocommerce-product-gallery__trigger{display:none}

/* Astra page title band on ordinary pages duplicates our banner */
.page .entry-title,
.page .ast-single-entry-banner,
.page .ast-archive-description{display:none!important}

/* Variation Swatches plugin, restyled to the demo's size chips */
.single-product .woo-variation-swatches .variable-items-wrapper{display:flex!important;gap:9px;
  flex-wrap:wrap;padding:0!important;margin:0!important;list-style:none}
.single-product .variable-items-wrapper li.variable-item{margin:0!important;padding:0!important;
  box-shadow:none!important;border:0!important;background:none!important;min-width:0!important;
  width:auto!important;height:auto!important;border-radius:0!important}
.single-product .variable-items-wrapper li.variable-item .variable-item-span{
  display:block;min-width:96px;text-align:center;padding:12px 16px;
  border:1px solid var(--line);background:var(--paper);border-radius:var(--radius);
  transition:.15s;font-size:14px;line-height:1.2;color:var(--ink);font-weight:500;
  height:auto!important;width:auto!important;margin:0!important}
.single-product .variable-items-wrapper li.variable-item:hover .variable-item-span{background:var(--paper-alt)}
.single-product .variable-items-wrapper li.variable-item.selected .variable-item-span,
.single-product .variable-items-wrapper li.variable-item[aria-checked=true] .variable-item-span{
  background:var(--ink-deep);color:#fff;border-color:var(--ink-deep)}
.single-product .variable-items-wrapper li.variable-item.radio-variable-item:before,
.single-product .variable-items-wrapper li.variable-item input{display:none!important}
.ap-swprice{display:block;font-family:var(--font-mono),monospace;font-size:11px;
  opacity:.7;margin-top:3px;font-weight:400}

/* the plugin's own attribute label, restyled as the demo's eyebrow */
.single-product table.variations th.label label,
.single-product table.variations .label{font-family:var(--font-head),sans-serif!important;
  font-size:13px!important;letter-spacing:.16em;text-transform:uppercase;
  color:var(--ink-soft)!important;font-weight:600!important;display:block!important;
  margin:0 0 10px!important}
.single-product table.variations .woo-selected-variation-item-name{display:none!important}
.single-product table.variations select{display:none!important}

/* size chips carry the size only — price lives in the price line */
.ap-sw small,.ap-swprice{display:none!important}
.single-product .reset_variations,
.single-product table.variations a.reset_variations{display:none!important}
.single-product .variable-items-wrapper li.variable-item.selected .variable-item-span,
.single-product .variable-items-wrapper li.variable-item[aria-checked="true"] .variable-item-span,
.single-product .variable-items-wrapper li.variable-item.selected span,
.single-product .variable-items-wrapper li.variable-item[class*="selected"] span{
  background:var(--ink-deep)!important;color:#fff!important;border-color:var(--ink-deep)!important;
  opacity:1!important}
.single-product .variable-items-wrapper li.variable-item{opacity:1!important}

/* chip sizing has to beat the plugin's inline dimensions */
.single-product .variable-items-wrapper li.variable-item .variable-item-span{
  min-width:96px!important;padding:12px 16px!important;font-size:14px!important;
  line-height:1.2!important;display:block!important}
.single-product .woocommerce-variation-price{display:none!important}

/* Size chips keep the demo's footprint even without the price line under them. */
.single-product .variable-items-wrapper li.variable-item .variable-item-span,
.ap-swatches .ap-sw{
  min-width:96px!important;min-height:62px!important;height:auto!important;
  padding:12px 18px!important;font-size:15px!important;line-height:1.2!important;
  display:flex!important;align-items:center;justify-content:center;
  box-sizing:border-box}
.single-product .variable-items-wrapper li.variable-item{min-height:62px}

/* a price range plus a button has to survive a 235px card */
.ap-card-f .price{flex:1 1 auto;min-width:0;font-size:14.5px!important;
  overflow:hidden;text-overflow:ellipsis}
.ap-card-f .button{flex:0 0 auto}

/* Buy It Now — full width, own line, same colour as Add to Cart */
.ap-buynow{flex:0 0 100%;width:100%;order:9;margin-top:12px;cursor:pointer;
  background:var(--ink-deep);color:#fff;border:1.5px solid var(--ink-deep);
  font-family:var(--font-head),sans-serif;font-weight:700;letter-spacing:.13em;
  text-transform:uppercase;font-size:15px;padding:14px 26px;border-radius:var(--radius);
  transition:.18s}
.ap-buynow:hover{background:var(--brand);border-color:var(--brand);color:var(--on-brand)}
.single-product form.cart,
.single-product .woocommerce-variation-add-to-cart{flex-wrap:wrap}

/* COA link matches Buy It Now: full width, centred */
.single-product .summary > .ap-coalink{display:flex;width:100%;justify-content:center;
  align-items:center;gap:9px;text-align:center;padding:14px 26px;margin-top:16px}


/* ============================================================
   26. CART / CHECKOUT (classic shortcode — the block cart has no
   hook for the compliance gate, so we run the shortcode version)
   ============================================================ */
.ap-cartwrap{max-width:var(--page);margin:0 auto;padding:44px 28px 64px}
.woocommerce-cart .entry-content,
.woocommerce-checkout .entry-content{max-width:100%!important;padding:0!important;margin:0!important}

.woocommerce table.shop_table{border:1px solid var(--line);border-radius:var(--radius);
  border-collapse:collapse;width:100%}
.woocommerce table.shop_table th{background:var(--paper-alt);border-bottom:1px solid var(--line);
  font-family:var(--font-head),sans-serif;font-size:12.5px;letter-spacing:.14em;
  text-transform:uppercase;color:var(--ink-soft);padding:14px 16px;text-align:left}
.woocommerce table.shop_table td{border-top:1px solid var(--line);padding:16px;vertical-align:middle}
.woocommerce table.shop_table .product-name a{color:var(--ink);font-weight:600;text-decoration:none!important}
.woocommerce table.shop_table .product-price,
.woocommerce table.shop_table .product-subtotal,
.woocommerce table.shop_table .amount{font-family:var(--font-mono),monospace}
.woocommerce table.shop_table img{width:64px;border:1px solid var(--line)}
.woocommerce .cart-collaterals{margin-top:34px}
.woocommerce .cart_totals h2,
.woocommerce-checkout h3,
.woocommerce-billing-fields h3{font-family:var(--font-head),sans-serif;font-size:22px;
  text-transform:uppercase;letter-spacing:.04em;color:var(--ink)}
.woocommerce .cart_totals table{border:1px solid var(--line)}
.woocommerce .checkout-button,
.woocommerce #place_order{width:100%;background:var(--ink-deep)!important;color:#fff!important;
  border:1.5px solid var(--ink-deep)!important}
.woocommerce .checkout-button:hover,
.woocommerce #place_order:hover{background:var(--brand)!important;border-color:var(--brand)!important;
  color:var(--on-brand)!important}
.woocommerce form .form-row input.input-text,
.woocommerce form .form-row textarea,
.woocommerce form .form-row select{border:1px solid var(--line)!important;padding:13px 15px;
  background:var(--paper-alt);border-radius:var(--radius)!important}
.woocommerce-message,.woocommerce-info{border-top-color:var(--brand)!important}
.woocommerce-message::before,.woocommerce-info::before{color:var(--brand)!important}

/* the 18+ / research-use gate */
.ap-consent{display:flex;gap:11px;align-items:flex-start;font-size:13px;color:var(--ink-soft);
  line-height:1.55;background:var(--paper-alt);border:1px solid var(--line);
  padding:14px 16px;margin:0 0 14px;border-radius:var(--radius)}
.ap-consent input{margin-top:2px;accent-color:var(--brand);flex:none}
.ap-consent.err{border-color:#d9534f;background:rgba(217,83,79,.06);color:#8a2b28}
.wc-proceed-to-checkout .checkout-button.ap-disabled,
.wc-proceed-to-checkout a.button.ap-disabled{opacity:.4;cursor:not-allowed}
.ap-consent.ap-shake{animation:ap-shake .45s;border-color:#d9534f;background:rgba(217,83,79,.07)}
@keyframes ap-shake{
  0%,100%{transform:translateX(0)}
  20%,60%{transform:translateX(-5px)}
  40%,80%{transform:translateX(5px)}}
@media(prefers-reduced-motion:reduce){.ap-consent.ap-shake{animation:none}}


/* ============================================================
   27. ACCEPTED PAYMENT MARKS
   ============================================================ */
.ap-payrow{display:flex;gap:10px;flex-wrap:wrap;justify-content:center;align-items:center;
  padding:22px 0;border-top:1px solid var(--ink-deep-3)}
.ap-pay{display:inline-flex;align-items:center;justify-content:center;gap:3px;
  height:34px;min-width:56px;padding:0 11px;border-radius:4px;background:#fff;
  font-family:var(--font-body),sans-serif;font-size:13px;font-weight:800;
  letter-spacing:.02em;line-height:1}
.ap-pay svg{display:block;height:20px;width:auto}
.ap-pay-visa{color:#1a1f71;font-style:italic;letter-spacing:.06em}
.ap-pay-mc{padding:0 8px}
.ap-pay-mc svg{height:22px}
.ap-pay-amex{background:#1f72cd;color:#fff;letter-spacing:.04em}
.ap-pay-apple{background:#000;color:#fff;font-weight:600;letter-spacing:0}
.ap-pay-apple .ap-apple{height:15px;margin-right:1px}
.ap-pay-ach{background:transparent;color:#cfe0e2;border:1.5px solid #4a6b70;letter-spacing:.08em}
@media(max-width:520px){.ap-payrow{gap:8px}.ap-pay{height:30px;min-width:48px;font-size:12px}}


/* ============================================================
   28. AGE GATE — our own card, not the plugin's default panel
   Dark, gridded, molecule mark on top: the same language as the
   hero, so the first thing a visitor sees already looks like us.
   ============================================================ */
.age-gate,
.age-gate__background{background:none!important;box-shadow:none!important;
  padding:0!important;border:0!important;max-width:none!important;width:auto!important}
.age-gate__background-color{backdrop-filter:blur(9px)}

.age-gate__form{position:relative;overflow:hidden;
  background:var(--ink-deep)!important;color:#fff;
  border:1px solid var(--ink-deep-3)!important;border-radius:3px!important;
  padding:44px 46px 34px!important;max-width:520px!important;width:calc(100vw - 40px);
  margin:0 auto!important;text-align:center;
  box-shadow:0 40px 100px -30px rgba(0,0,0,.75)!important}
.age-gate__form:before{content:"";position:absolute;inset:0;pointer-events:none;
  background-image:linear-gradient(var(--ink-deep-2) 1px,transparent 1px),
                   linear-gradient(90deg,var(--ink-deep-2) 1px,transparent 1px);
  background-size:44px 44px;opacity:.5}
.age-gate__form > *{position:relative;z-index:2}

.ap-gate-mark{display:flex;justify-content:center;margin-bottom:20px}
.ap-gate-mark .ap-mark{width:44px;height:44px}

.age-gate__heading:empty{display:none}
.age-gate__headline{font-family:var(--font-head),sans-serif!important;font-size:32px;
  font-weight:700;text-transform:uppercase;color:#fff;margin:0 0 16px;line-height:1.05;
  letter-spacing:.02em}
.age-gate__headline:before{content:"— Atlanta Peptides —";display:block;
  font-family:var(--font-mono),monospace;font-size:10px;font-weight:700;
  letter-spacing:.28em;text-transform:uppercase;color:var(--brand);margin-bottom:16px}
.age-gate__subheadline{display:none}
.age-gate__challenge{font-size:15px;line-height:1.7;color:var(--on-deep);
  margin:0 auto 28px;max-width:40ch}

.age-gate__buttons{display:flex;gap:11px;justify-content:center;flex-wrap:wrap}
.age-gate__submit{font-family:var(--font-head),sans-serif;font-weight:700;
  letter-spacing:.14em;text-transform:uppercase;font-size:14.5px;padding:15px 26px;
  border-radius:var(--radius);cursor:pointer;border:1.5px solid transparent;
  transition:.18s;line-height:1}
.age-gate__submit--yes{background:var(--brand)!important;color:var(--on-brand)!important;
  border-color:var(--brand)!important;order:1}
.age-gate__submit--yes:hover{background:#fff!important;border-color:#fff!important;
  color:var(--ink-deep)!important;transform:translateY(-2px)}
.age-gate__submit--no{background:transparent!important;color:var(--on-deep-dim)!important;
  border-color:#3f5a60!important;order:2}
.age-gate__submit--no:hover{border-color:var(--on-deep)!important;color:#fff!important}

.age-gate__remember-wrapper{margin-top:20px;font-size:12px;color:var(--on-deep-dim)}
.age-gate__remember{display:inline-flex;gap:8px;align-items:center;cursor:pointer}
.age-gate__remember-field{accent-color:var(--brand)}
.age-gate__errors{color:#ff8f8f;font-size:13.5px;margin-top:14px}

.age-gate__form:after{content:"For research use only · Not for human or veterinary consumption";
  display:block;margin-top:26px;padding-top:18px;border-top:1px solid var(--ink-deep-3);
  font-family:var(--font-mono),monospace;font-size:10px;letter-spacing:.12em;
  text-transform:uppercase;color:#7e979c;line-height:1.7}

@media(max-width:520px){
  .age-gate__form{padding:34px 24px 28px!important}
  .age-gate__headline{font-size:25px}
  .age-gate__submit{width:100%}}

/* the plugin's stylesheet wins on these three, so raise specificity */
.age-gate__form{
  background-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSI+PGNpcmNsZSBjeD0iMTMiIGN5PSIxNCIgcj0iMy40IiBmaWxsPSIjMTRiOGE2Ii8+PGNpcmNsZSBjeD0iMjciIGN5PSIxNCIgcj0iMy40IiBzdHJva2U9IiMxNGI4YTYiIHN0cm9rZS13aWR0aD0iMS42Ii8+PGNpcmNsZSBjeD0iMjAiIGN5PSIyNyIgcj0iMy40IiBzdHJva2U9IiMxNGI4YTYiIHN0cm9rZS13aWR0aD0iMS42Ii8+PHBhdGggZD0iTTEzIDE0aDE0TTEzIDE0bDcgMTNNMjcgMTRsLTcgMTMiIHN0cm9rZT0iIzE0YjhhNiIgc3Ryb2tlLXdpZHRoPSIxLjMiIG9wYWNpdHk9Ii42NSIvPjwvc3ZnPg=="),
    linear-gradient(var(--ink-deep-2) 1px,transparent 1px),
    linear-gradient(90deg,var(--ink-deep-2) 1px,transparent 1px)!important;
  background-repeat:no-repeat,repeat,repeat!important;
  background-position:center 40px,0 0,0 0!important;
  background-size:46px 46px,44px 44px,44px 44px!important;
  padding-top:104px!important}
.age-gate__form:before{display:none}
.age-gate__form .age-gate__headline:before{
  content:"\2014\00a0 Atlanta Peptides \00a0\2014"!important;display:block!important;
  font-family:var(--font-mono),monospace!important;font-size:10px!important;
  font-weight:700!important;letter-spacing:.28em!important;text-transform:uppercase!important;
  color:var(--brand)!important;margin-bottom:16px!important}
.age-gate__form .age-gate__remember-text,
.age-gate__form .age-gate__remember{color:var(--on-deep-dim)!important;font-size:12px!important}
.age-gate__form .age-gate__challenge{color:var(--on-deep)!important}
.age-gate__form .age-gate__headline{color:#fff!important}


/* ============================================================
   29. BLOG
   ============================================================ */
.blog .ast-container,.single-post .ast-container,.archive.category .ast-container{
  display:block!important;max-width:100%!important;padding-inline:0!important}
.blog #primary,.single-post #primary,.archive.category #primary{
  max-width:100%!important;width:100%!important;margin:0!important;padding:0!important}
.blog #secondary,.single-post #secondary,.archive.category #secondary{display:none!important}
.blog .site-content,.single-post .site-content{padding-top:0!important}
.blog .ast-single-entry-banner,.single-post .ast-single-entry-banner{display:none!important}

.blog .site-main,.archive.category .site-main{max-width:var(--page);margin:0 auto!important;
  padding:48px 28px 64px!important}
.blog .ast-row,.archive.category .ast-row{display:grid!important;
  grid-template-columns:repeat(3,1fr);gap:22px;margin:0!important}
@media(max-width:1000px){.blog .ast-row,.archive.category .ast-row{grid-template-columns:repeat(2,1fr)}}
@media(max-width:680px){.blog .ast-row,.archive.category .ast-row{grid-template-columns:1fr}}
.blog .ast-article-post,.archive.category .ast-article-post{
  border:1px solid var(--line);border-radius:var(--radius);background:var(--paper);
  padding:26px 24px!important;margin:0!important;width:auto!important;transition:.2s;
  box-shadow:none!important}
.blog .ast-article-post:hover,.archive.category .ast-article-post:hover{
  border-color:var(--ink-deep);transform:translateY(-3px);
  box-shadow:0 14px 30px -18px rgba(0,0,0,.35)}
.blog .ast-blog-featured-section,.archive .ast-blog-featured-section{display:none}
.blog .entry-title,.archive.category .entry-title{font-family:var(--font-head),sans-serif!important;
  font-size:22px!important;line-height:1.15;text-transform:uppercase;letter-spacing:.01em}
.blog .entry-title a,.archive.category .entry-title a{color:var(--ink);text-decoration:none!important}
.blog .entry-title a:hover,.archive.category .entry-title a:hover{color:var(--brand)}
.blog .ast-taxonomy-container a,.archive .ast-taxonomy-container a{
  font-size:10px;font-weight:700;letter-spacing:.18em;text-transform:uppercase;
  color:var(--brand)!important;text-decoration:none!important}
.blog .entry-meta,.blog .post-meta,.archive .entry-meta,
.blog .ast-blog-meta-container,.archive .ast-blog-meta-container{
  font-family:var(--font-mono),monospace;font-size:11px!important;
  letter-spacing:.04em;color:var(--ink-soft)!important;text-transform:uppercase}
.blog .entry-meta a,.archive .entry-meta a,
.blog .ast-blog-meta-container a,.archive .ast-blog-meta-container a{
  color:var(--ink-soft)!important;text-decoration:none!important}
.blog .entry-content p,.archive.category .entry-content p{font-size:14.5px;color:var(--ink-soft);
  line-height:1.6}
.blog .ast-blog-single-element.ast-blog-featured-section img{border-radius:0}

/* single post: the reading column */
.single-post .site-main{max-width:820px;margin:0 auto!important;padding:48px 28px 64px!important}
.single-post .entry-content{font-size:16.5px;line-height:1.8;color:var(--ink-soft)}
.single-post .entry-content h2{font-family:var(--font-head),sans-serif;font-size:28px;
  font-weight:700;text-transform:uppercase;color:var(--ink);margin:38px 0 14px;letter-spacing:.01em}
.single-post .entry-content p{margin-bottom:18px}
.single-post .entry-content a{color:var(--brand)}
.single-post .entry-content table{width:100%;border-collapse:collapse;margin:8px 0 24px}
.single-post .entry-content th,.single-post .entry-content td{border:1px solid var(--line);
  padding:12px 15px;text-align:left;font-size:14.5px;vertical-align:top}
.single-post .entry-content th{background:var(--paper-alt);color:var(--ink);font-weight:600;width:32%}
.single-post .post-navigation,.single-post .ast-single-related-posts-container{
  max-width:820px;margin:0 auto;padding-inline:28px}

/* Astra's default page background and link colour don't belong here */
body.blog,body.single-post,body.archive.category,body.archive.author{
  background:var(--paper)!important}
.blog .site-content,.single-post .site-content,.archive.category .site-content{
  background:var(--paper)}
.single-post .ast-article-single{background:none!important;box-shadow:none!important;
  border:0!important;padding:0!important;margin:0!important}
.blog .entry-meta a,.blog .entry-meta,
.single-post .entry-meta a,.single-post .entry-meta,
.archive .entry-meta a,.archive .entry-meta,
.blog .posted-by a,.single-post .posted-by a,.archive .posted-by a,
.blog .posted-on a,.single-post .posted-on a,.archive .posted-on a{
  color:var(--ink-soft)!important;text-decoration:none!important;
  font-family:var(--font-mono),monospace;font-size:11.5px;letter-spacing:.04em;
  text-transform:uppercase}
.single-post .entry-meta{padding-bottom:22px;margin-bottom:26px;
  border-bottom:1px solid var(--line)}
.single-post .entry-content > p:first-of-type{font-size:18px;color:var(--ink);line-height:1.7}

/* The answer is remembered for a year and the box is pre-ticked, so the gate
   is genuinely a first-visit-only interruption. Showing an unticked-able
   checkbox would only let a visitor opt back into seeing it on every page. */
.age-gate__remember-wrapper{display:none!important}


/* ============================================================
   30. MOBILE — touch targets and density
   The icons stay the same size; the tappable box around them grows.
   iOS and Android both want ~44px, and a 19px cart icon is the kind
   of thing that quietly costs conversions on a phone.
   ============================================================ */
.ap-navr > button,
.ap-navr > a{min-width:44px;min-height:44px;margin:0 -6px}
.ap-burger{min-width:44px;min-height:44px;justify-content:center;align-items:center}
.ap-burger span{width:22px}
.ap-cart-count{top:2px;right:2px}

@media(max-width:900px){
  .ap-nav{height:64px;gap:8px}
  .ap-navr{gap:2px}
  .ap-logo{gap:9px}
  .ap-logo-t{font-size:17px;letter-spacing:.06em;white-space:nowrap}
  .ap-logo-t small{font-size:7.5px;letter-spacing:.2em}
  .ap-mark{width:28px;height:28px}
  .ap-topbar{font-size:11px;letter-spacing:.06em;padding:8px 12px}
}
@media(max-width:400px){
  .ap-logo-t{font-size:15px}
  .ap-logo-t small{font-size:7px;letter-spacing:.16em}
}

/* card button: a comfortable thumb target */
@media(max-width:900px){
  .woocommerce ul.products li.product .button{padding:12px 18px!important;min-height:44px;
    display:inline-flex;align-items:center}
  .ap-card-f{gap:8px}
}

/* ---- COA register: table on desktop, stacked cards on a phone ---- */
@media(max-width:720px){
  .ap-tablewrap{overflow-x:visible}
  .ap-coatable,.ap-coatable tbody,.ap-coatable tr,.ap-coatable td{display:block;width:100%}
  .ap-coatable thead{display:none}
  .ap-coatable tr{border:1px solid var(--line);border-radius:var(--radius);
    margin-bottom:12px;padding:14px 16px;background:var(--paper)}
  .ap-coatable tr:hover td{background:none}
  .ap-coatable td{border:0;padding:4px 0;display:flex;justify-content:space-between;
    align-items:baseline;gap:14px;font-size:13.5px}
  .ap-coatable td:before{content:attr(data-label);flex:none;
    font-family:var(--font-head),sans-serif;font-size:11px;letter-spacing:.14em;
    text-transform:uppercase;color:var(--ink-soft)}
  .ap-coatable td.nm{padding-bottom:10px;margin-bottom:8px;
    border-bottom:1px solid var(--line);font-size:16px}
  .ap-coatable td.nm:before{display:none}
  .ap-coatable td.nm a{font-weight:700}
  .ap-coatable .ap-dl{min-height:32px;display:inline-flex;align-items:center}
  .ap-searchbig{max-width:100%}
  .ap-searchbig input{font-size:16px}   /* 16px stops iOS zooming on focus */
}

/* iOS zooms any input under 16px on focus — that reflow looks like a bug.
   `input:not([type])` matters: an input with no type attribute still behaves as
   a text field, but [type=text] matches the *attribute*, not the property, so a
   bare <input> slips past the guard. The batch lookup on the homepage did
   exactly that and kept zooming on iPhone. */
@media(max-width:720px){
  input:not([type]),
  input[type=text],input[type=email],input[type=tel],input[type=search],
  input[type=number],input[type=password],textarea,select{font-size:16px!important}
}

/* Phone-only: the product card drops to ~156px wide at 390px, where an 80px
   corner badge covers most of the vial (measured: badge x10–90, vial x34–122
   — 56px of overlap, right across the cap). Below 600px the badge leaves the
   image entirely and sits above the category label instead, so the product art
   is never obscured. Desktop and tablet keep the demo's corner badge. */
@media(max-width:600px){
  .woocommerce ul.products li.product .astra-shop-summary-wrap > .ap-badge{
    position:static;order:0;align-self:flex-start;
    margin:0 0 7px;font-size:9px;letter-spacing:.08em;padding:4px 7px}
}

/* Phone-only card footer and data strip.
   At 390px the card is 158px wide, leaving 126px inside the summary padding.
   The footer used to sit price and button on one row: the button takes 62px
   and the gap 10px, so the price got 54px — about 5.8 characters of the 15.5px
   mono face. Every one of the 28 prices is longer than that, and the five
   variable products carry a range ("$50.00 – $275.00", 16 characters) that had
   no chance. Stacking hands the price the full width, lets a range wrap
   instead of clipping, and turns the button into a 126x40 target — it was
   62x36, under the 44px minimum for a thumb.
   The strip's three cells leave 30px for a label, but "VERIFIED" needs ~50px
   at the desktop tracking and "PENDING" ~44px, so the word every product page
   is meant to advertise was the one getting cut. Tightening the tracking and
   padding fits it whole rather than abbreviating or dropping it. */
@media(max-width:600px){
  .woocommerce ul.products li.product .ap-card-f{
    flex-direction:column;align-items:stretch;gap:9px}
  .woocommerce ul.products li.product .ap-card-f .price{
    font-size:16px!important;white-space:normal!important}
  .woocommerce ul.products li.product .ap-card-f .button{
    width:100%!important;text-align:center;padding:11px 15px!important}

  .ap-strip div{padding:7px 3px}
  .ap-strip b{font-size:10.5px}
  .ap-strip span{font-size:8px;letter-spacing:.02em}
}

