/* Monarch BioLabs — v3 site styles
   1. Tokens + base   2. Current header / hero (kept from live site)
   3. v3 components   4. Page templates   5. Responsive */

/* ---------- 1. Tokens + base ---------- */
:root{
  --ink:#0A1A12; --ink-2:#3C4A43; --muted:#6E7A74;
  --g-900:#0C3525; --g-700:#1B6446; --g-600:#2E7D5B; --g-500:#3A9A6E; --g-300:#9FD3B7;
  --tint:#F2F8F4; --tint-2:#E6F2EB; --line:#E3ECE7; --white:#FFFFFF;
  --grad:linear-gradient(100deg,#155B3F 0%,#2E8A61 60%,#46AE7E 100%);
  --mono:"IBM Plex Mono",ui-monospace,monospace; --sans:"Inter",system-ui,sans-serif;
  --sys:-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif;
  --r-lg:28px; --r-md:20px; --max:1280px;
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{font:400 16px/1.55 var(--sans);color:var(--ink);background:var(--white);-webkit-font-smoothing:antialiased;overflow-x:hidden}
img{display:block;max-width:100%}
a{color:inherit;text-decoration:none}
button,input,select,textarea{font:inherit;color:inherit}
button{border:0;background:none;cursor:pointer}
.wrap{max-width:var(--max);margin:0 auto;padding:0 28px}
.eyebrow{font-family:var(--mono);font-size:12px;font-weight:500;letter-spacing:.18em;text-transform:uppercase;color:var(--g-600)}
.eyebrow.line{display:inline-flex;align-items:center;gap:12px}
.eyebrow.line::after{content:"";width:80px;height:1px;background:linear-gradient(90deg,var(--g-300),transparent)}
h1,h2,h3{font-weight:900;letter-spacing:-.045em;line-height:.98}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}

/* ---------- 2. Current header / hero (recreated from live site) ---------- */
.mb-ticker{background:#0B1F1A;color:rgba(255,255,255,.85);width:100%;overflow:hidden;white-space:nowrap;height:40px;display:flex;align-items:center;font-family:var(--sys)}
.mb-ticker-track{display:inline-flex;align-items:center;gap:40px;padding-left:40px;animation:mb-ticker 96s linear infinite}
.mb-ticker-track span{font-size:.72rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;display:inline-flex;align-items:center;gap:8px}
.mb-ticker-track span::before{content:"✓";color:#6FE3A0}
@keyframes mb-ticker{to{transform:translateX(-50%)}}
.mb-header{position:sticky;top:0;z-index:60;background:rgba(255,255,255,.96);backdrop-filter:blur(8px);border-bottom:1px solid #E3E8F0;padding:24px 0;font-family:var(--sys)}
.mb-nav-wrap{max-width:1240px;margin:0 auto;padding:0 24px;display:flex;align-items:center;justify-content:space-between;height:76px;gap:24px;position:relative}
.mb-logo{display:flex;align-items:center;gap:11px;color:#0B1F1A}
.mb-logo img{width:50px;height:50px;object-fit:contain;flex-shrink:0}
.mb-logo-text{display:flex;flex-direction:column;line-height:.88;font-family:Montserrat,sans-serif;font-weight:900;text-transform:uppercase;font-size:1rem;letter-spacing:.01em}
.mb-logo-text .p{color:#0F2E26}.mb-logo-text .s{color:#2E7D5B}
.mb-nav-links{display:flex;gap:30px;list-style:none}
.mb-nav-links a{font-size:.88rem;font-weight:700;color:#10192E;transition:color .15s;position:relative}
.mb-nav-links a:hover,.mb-nav-links a[aria-current=page]{color:#2E7D5B}
.mb-nav-links a[aria-current=page]::after{content:"";position:absolute;left:0;right:0;bottom:-8px;height:2px;border-radius:2px;background:#2E7D5B}
.mb-nav-right{display:flex;align-items:center;gap:16px}
.mb-icon{color:#0B1F1A;padding:5px;display:inline-flex;align-items:center;justify-content:center;position:relative;border-radius:8px;transition:color .15s,background .15s}
.mb-icon:hover{color:#2E7D5B;background:#E1F5EA}
.mb-badge{position:absolute;top:-3px;right:-5px;background:#2E7D5B;color:#fff;font-size:.62rem;font-weight:700;min-width:16px;height:16px;padding:0 3px;border-radius:50%;display:flex;align-items:center;justify-content:center;line-height:1;border:2px solid #fff}
.mb-toggle{display:none;align-items:center;justify-content:center;width:44px;height:44px;border:1px solid #E3E8F0;border-radius:10px;background:#fff;color:#0B1F1A;font-size:25px;line-height:1}

.mb-hero{position:relative;min-height:620px;display:flex;align-items:center;background:#062D23 url("https://monarchbiolabs.com/wp-content/uploads/2026/09/01-Codex-Image-Sep-21-2026-11_46_37-AM.png") center/cover no-repeat;font-family:var(--sys)}
.mb-hero-inner{width:100%;padding:0 clamp(40px,5.5vw,104px)}
.mb-hero-content{position:relative;z-index:2;width:min(620px,46vw);padding:110px 0 96px;color:#fff;transform:translateX(144px)}
.mb-hero h1{margin:0 0 20px;color:#fff;font-size:clamp(2.8rem,6vw,5.5rem);font-weight:800;line-height:.98;letter-spacing:-.045em}
.mb-hero .mb-sub{max-width:680px;margin:0 0 30px;color:rgba(255,255,255,.88);font-size:clamp(1rem,1.7vw,1.23rem);line-height:1.7}
.mb-cta{display:flex;flex-wrap:wrap;gap:12px}
.mb-btn{display:inline-flex;align-items:center;justify-content:center;padding:15px 30px;border-radius:10px;font-size:.92rem;font-weight:700;background:#2E7D5B;border:1px solid #2E7D5B;color:#fff;white-space:nowrap;transition:transform .15s,background .15s}
.mb-btn:hover{background:#255E45;border-color:#255E45;transform:translateY(-1px)}
.mb-hero-mobile{display:none}
.mb-stats-band{background:radial-gradient(120% 140% at 80% 0%,#163B30 0%,#0B1F1A 55%,#071410 100%);color:#fff;font-family:var(--sys)}
.mb-stats-inner{width:min(100% - 80px,1440px);margin:0 auto}
.mb-stats{border-top:1px solid rgba(255,255,255,.1);padding:28px 0 32px;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:20px;text-align:center}
.mb-stats .num{display:block;font-size:1.7rem;font-weight:800;color:#fff;line-height:1.55}
.mb-stats .label{font-size:.76rem;color:rgba(255,255,255,.55);text-transform:uppercase;letter-spacing:.05em}

/* ---------- 3. v3 components ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;height:52px;padding:0 28px;border-radius:999px;font-weight:800;font-size:15px;letter-spacing:-.01em;transition:transform .15s,box-shadow .15s,opacity .15s;white-space:nowrap}
.btn svg{width:17px;height:17px}
.btn-primary{background:var(--grad);color:#fff;box-shadow:0 14px 30px -12px rgba(30,110,75,.6)}
.btn-primary:hover{transform:translateY(-1px);box-shadow:0 18px 34px -12px rgba(30,110,75,.7)}
.btn-outline{background:#fff;border:1px solid var(--line);color:var(--ink)}
.btn-outline:hover{border-color:var(--g-300)}
.btn-light{background:#fff;color:var(--g-900)}
.btn-sm{height:40px;padding:0 18px;font-size:13.5px}
.btn[disabled],.btn.is-disabled{opacity:.45;pointer-events:none;box-shadow:none}
.icon-btn{width:42px;height:42px;border-radius:999px;display:grid;place-items:center;background:var(--tint);border:1px solid var(--line);position:relative;flex-shrink:0}
.icon-btn:hover{background:var(--tint-2)}
.icon-btn svg{width:18px;height:18px}
.chip{display:inline-flex;align-items:center;gap:8px;height:34px;padding:0 16px;border-radius:999px;border:1px solid var(--line);background:#fff;font-size:11.5px;font-weight:800;letter-spacing:.14em;text-transform:uppercase}

section{position:relative}
.sec{padding:96px 0}
.sec-head{display:flex;align-items:end;justify-content:space-between;gap:24px;margin-bottom:36px}
.sec-head h2{font-size:clamp(40px,5vw,64px);margin-top:12px}
.sec-head p{color:var(--ink-2);max-width:440px;margin-top:14px}

/* Best sellers */
.bestsellers{background:linear-gradient(180deg,#fff 0%,var(--tint) 100%)}
.car-ctrl{display:flex;gap:10px;align-items:center}
.car-ctrl .icon-btn{background:#fff}
/* Best Sellers uses the same .pc card as the All Peptides grid; the track is
   just a horizontal scroller around it. */
.track{display:grid;grid-auto-flow:column;grid-auto-columns:calc((100% - 60px)/4);gap:20px;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;padding:6px 2px 26px}
/* Scoped to #track, not .track: a later `.track` rule (repeat(3,1fr)) belongs to
   a different component and was overriding this one, which is what left the
   Best Sellers cards at mismatched widths. Flex so the basis resolves against
   the row width and every card matches the All Peptides grid. */
#track{display:flex}
#track .pc{flex:0 0 calc((100% - 60px)/4);scroll-snap-align:start;min-width:0}
#track .pc > *{min-width:0}
.track::-webkit-scrollbar{display:none}
.bs{scroll-snap-align:start;border-radius:var(--r-lg);background:linear-gradient(170deg,#fff 0%,var(--tint-2) 100%);border:1px solid var(--line);padding:22px;display:flex;flex-direction:column;gap:18px;transition:transform .25s,box-shadow .25s}
.bs:hover{transform:translateY(-4px);box-shadow:0 26px 44px -26px rgba(12,53,37,.4)}
/* Reserve two title lines so the image and the button line up across every card,
   however long the product name is. */
.bs .top{display:flex;justify-content:space-between;align-items:start;gap:10px}
/* min-height reserves two lines, so the image and the button sit at the same
   height on every card no matter how long the product name is. */
.bs h3{font-size:20px;letter-spacing:-.03em;line-height:1.1;font-weight:900;min-height:2em;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.bs .from{font-size:13px;font-weight:800;white-space:nowrap}
.bs .from small{font-weight:600;color:var(--muted);margin-right:3px}
.bs .pic{border-radius:var(--r-md);overflow:hidden;aspect-ratio:4/5;background:#EDEDEB;display:block}
.bs .pic img{width:100%;height:100%;object-fit:cover;transform:scale(1.08);transition:transform .5s}
.bs:hover .pic img{transform:scale(1.14) rotate(-1.5deg)}
/* margin-top:auto pins the action row to the bottom edge of every card. */
.bs .act{display:flex;gap:8px;margin-top:auto}
.bs .act .icon-btn{background:#fff}
.bs .act .btn{flex:1;width:100%}

/* Statement band / page hero (molecule backgrounds) */
.statement{padding:24px 0}
.band{position:relative;overflow:hidden;border-radius:36px;background:radial-gradient(120% 140% at 80% 20%,#1E6A4A 0%,#0C3525 55%,#07241A 100%);color:#fff;padding:96px 56px;max-width:calc(var(--max) - 56px);margin:0 auto}
.mol{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;-webkit-mask-image:linear-gradient(90deg,rgba(0,0,0,.18) 0%,rgba(0,0,0,.35) 35%,#000 62%);mask-image:linear-gradient(90deg,rgba(0,0,0,.18) 0%,rgba(0,0,0,.35) 35%,#000 62%)}
.mol .drift{animation:mol-drift 18s ease-in-out infinite alternate;transform-box:fill-box;transform-origin:center}
.mol .d2{animation-duration:24s;animation-direction:alternate-reverse}
.mol .d3{animation-duration:30s}
@keyframes mol-drift{from{transform:translate(0,0) rotate(0deg)}to{transform:translate(-14px,10px) rotate(2.5deg)}}
@media (prefers-reduced-motion:reduce){.mol .drift,.mb-ticker-track{animation:none}}
.band .inner{position:relative;max-width:640px}
.band .eyebrow,.page-hero .eyebrow{color:var(--g-300)}
.band h2{font-size:clamp(40px,6.4vw,92px);letter-spacing:-.05em;line-height:.9;margin:20px 0 26px;text-transform:uppercase}
.band h2 span{white-space:nowrap}
.solid{background:linear-gradient(100deg,#fff 0%,#BFE9D2 100%);-webkit-background-clip:text;background-clip:text;color:transparent}
.outline{color:transparent;-webkit-text-stroke:1.5px rgba(191,233,210,.55)}
.band p{color:#BFD6CA;max-width:460px;font-size:17px;margin-bottom:30px}

.page-hero{padding:20px 0 0}
.page-hero .band{padding:72px 56px 76px}
.page-hero h1{font-size:clamp(44px,6vw,84px);letter-spacing:-.05em;line-height:.92;margin:18px 0 18px;text-transform:uppercase}
.page-hero p{margin-bottom:0}
.crumbs{display:flex;gap:8px;align-items:center;font-size:13px;color:var(--muted);flex-wrap:wrap}
.crumbs a:hover{color:var(--g-600)}
.crumbs span[aria-hidden]{opacity:.5}

/* Catalog */
.search{display:flex;align-items:center;gap:10px;height:54px;padding:0 20px;border-radius:999px;border:1px solid var(--line);background:#fff;max-width:440px;box-shadow:0 8px 20px -16px rgba(12,53,37,.4)}
.search svg{width:18px;height:18px;color:var(--muted);flex-shrink:0}
.search input{flex:1;border:0;outline:0;font:500 15px var(--sans);min-width:0;background:none}
.search:focus-within{border-color:var(--g-300)}
.toolbar{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:18px;flex-wrap:wrap}
.select{height:48px;padding:0 44px 0 18px;border-radius:999px;border:1px solid var(--line);background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' fill='none' stroke='%236E7A74' stroke-width='1.8'%3E%3Cpath d='m1 1 5 5 5-5'/%3E%3C/svg%3E") no-repeat right 18px center;appearance:none;font-size:14px;font-weight:700;cursor:pointer}
.pills{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:30px}
.pills button{height:40px;padding:0 18px;border-radius:999px;border:1px solid var(--line);background:#fff;font-size:13.5px;font-weight:700;color:var(--ink-2);white-space:nowrap}
.pills button:hover{border-color:var(--g-300)}
.pills button[aria-pressed=true]{background:var(--g-900);border-color:var(--g-900);color:#fff}
.pills button .n{font-family:var(--mono);font-size:11px;margin-left:6px;opacity:.7}
.grid{display:grid;grid-template-columns:repeat(4,1fr);gap:20px}
.empty{padding:48px;text-align:center;color:var(--muted);border:1px dashed var(--line);border-radius:var(--r-md)}
.pc{position:relative;border-radius:var(--r-md);border:1px solid var(--line);background:#fff;padding:14px;display:flex;flex-direction:column;transition:box-shadow .25s,transform .25s}
.pc:hover{transform:translateY(-3px);box-shadow:0 24px 40px -26px rgba(12,53,37,.4)}
.pc[hidden]{display:none}
/* Portrait tile: the product photos are square with wide empty margins, so a
   4:5 crop trims the dead space at the sides and renders the vial ~25% larger
   without clipping it. */
.pc .pic{border-radius:14px;overflow:hidden;aspect-ratio:4/5;background:#EDEDEB;margin-bottom:16px;display:block}
.pc .pic img{width:100%;height:100%;object-fit:cover;transform:scale(1.06)}
.pure{position:absolute;top:24px;right:24px;padding:6px 11px;border-radius:999px;background:var(--grad);color:#fff;font-size:11.5px;font-weight:800;line-height:1.2;white-space:nowrap;box-shadow:0 8px 18px -8px rgba(30,110,75,.8)}
.pc .cat{font-family:var(--mono);font-size:10.5px;font-weight:500;letter-spacing:.16em;text-transform:uppercase;color:var(--g-600);margin:0 4px 6px}
.pc h3{font-size:19px;letter-spacing:-.03em;line-height:1.15;margin:0 4px 10px;font-weight:900;min-height:2.3em;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.pc h3 a:hover{color:var(--g-600)}
.sizes{display:flex;gap:6px;flex-wrap:wrap;margin:0 4px 10px}
.sizes span{font-size:11px;font-weight:800;letter-spacing:.04em;padding:4px 10px;border-radius:999px;background:var(--tint-2);color:var(--g-700)}
.ruo{display:flex;align-items:center;gap:7px;font-size:12px;color:var(--muted);margin:0 4px 14px}
.ruo i{width:7px;height:7px;border-radius:50%;background:#34C27A;flex-shrink:0}
.pc .foot{margin-top:auto;padding:14px 4px 2px;border-top:1px solid var(--line)}
.pc .price{font-size:11px;font-weight:800;letter-spacing:.12em;color:var(--muted);margin-bottom:10px}
.pc .price b{font-size:21px;letter-spacing:-.03em;color:var(--g-700);margin-left:4px}
.pc .act{display:flex;gap:8px}
.pc .act .btn{flex:1}
.pc .act .icon-btn{width:40px;height:40px}

/* Verified science */
.science{background:var(--tint)}
.science .wrap{display:grid;grid-template-columns:1fr 1fr;gap:64px;align-items:center}
.science h2{font-size:clamp(40px,5vw,64px);margin:16px 0 18px}
.science h2 span{display:block}
.science h2 span:nth-child(2){color:var(--g-600)}
.science h2 span:nth-child(3){color:transparent;-webkit-text-stroke:1.5px var(--g-600)}
.science .lede{color:var(--ink-2);max-width:460px}
.feat{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.feat>div{background:#fff;border:1px solid var(--line);border-radius:var(--r-md);padding:24px}
.feat .ic{width:44px;height:44px;border-radius:14px;background:var(--grad);display:grid;place-items:center;color:#fff;margin-bottom:18px;box-shadow:0 10px 20px -10px rgba(30,110,75,.7)}
.feat .ic svg{width:20px;height:20px}
.feat h3{font-size:18px;letter-spacing:-.02em;margin-bottom:6px;line-height:1.2}
.feat p{font-size:14px;color:var(--muted)}

/* Footer */
footer.site{background:var(--tint);color:var(--ink-2);padding:72px 0 30px;border-top:1px solid var(--line)}
.fgrid{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr) minmax(0,.9fr) minmax(0,1.3fr);gap:40px;margin-bottom:56px}
.fgrid>*{min-width:0}
.news .btn{flex-shrink:0}
.brand{display:flex;align-items:center;gap:10px;white-space:nowrap}
.brand img{width:auto;height:46px}
.brand .mb-logo-text .p{color:#0F2E26}.brand .mb-logo-text .s{color:#2E7D5B}
footer .about{margin-top:16px;max-width:340px;font-size:14px}
footer .about+.about{margin-top:10px;color:var(--muted);font-size:13px}
footer h4{font-family:var(--mono);font-size:11px;font-weight:500;letter-spacing:.18em;text-transform:uppercase;color:var(--g-600);margin-bottom:16px}
footer ul{list-style:none;display:grid;gap:10px;font-size:14.5px}
footer ul a:hover,footer .mail:hover{color:var(--g-700)}
.news p{font-size:14px;margin-bottom:14px}
.news form{display:flex;gap:6px;background:#fff;border:1px solid var(--line);border-radius:999px;padding:5px}
.news input{flex:1;min-width:0;border:0;outline:0;background:none;padding:0 14px;color:var(--ink);font-size:14px}
.news input::placeholder{color:var(--muted)}
.news .btn{height:40px;padding:0 18px;font-size:13.5px}
.legal{border-top:1px solid var(--line);padding-top:24px;display:flex;justify-content:space-between;gap:32px;font-size:12.5px;color:var(--muted)}
.legal p{max-width:780px}

/* Toast */
.toast{position:fixed;left:50%;bottom:28px;transform:translate(-50%,24px);opacity:0;background:var(--g-900);color:#fff;padding:14px 20px;border-radius:999px;font-weight:700;font-size:14px;display:flex;align-items:center;gap:10px;box-shadow:0 18px 40px -16px rgba(0,0,0,.5);transition:all .3s;z-index:100;pointer-events:none}
.toast.show{opacity:1;transform:translate(-50%,0)}
.toast i{width:20px;height:20px;border-radius:50%;background:#34C27A;display:grid;place-items:center;font-style:normal;font-size:12px}

/* ---------- 4. Page templates ---------- */
/* Product */
.pdp{padding:36px 0 80px}
.pdp .crumbs{margin-bottom:28px}
.pdp-grid{display:grid;grid-template-columns:1.05fr 1fr;gap:56px;align-items:start}
.gallery{position:sticky;top:150px}
.gallery .main{border-radius:var(--r-lg);overflow:hidden;background:#EDEDEB;aspect-ratio:1/1;position:relative;border:1px solid var(--line)}
.gallery .main img{width:100%;height:100%;object-fit:cover;transform:scale(1.04)}
.gallery .pure{top:20px;right:20px;padding:9px 15px;font-size:14px}
.gallery .notes{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:12px}
.gallery .notes div{background:var(--tint);border:1px solid var(--line);border-radius:16px;padding:14px;font-size:12.5px;color:var(--ink-2)}
.gallery .notes strong{display:block;font-size:15px;color:var(--ink);letter-spacing:-.02em}
.buy .cat{font-family:var(--mono);font-size:11.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--g-600)}
.buy h1{font-size:clamp(38px,4.4vw,58px);margin:12px 0 14px}
.buy .short{color:var(--ink-2);font-size:16.5px;max-width:520px}
.buy .pricebox{display:flex;align-items:baseline;gap:14px;margin:24px 0 6px}
.buy .pricebox b{font-size:40px;font-weight:900;letter-spacing:-.04em;color:var(--g-700)}
.buy .sku{font-family:var(--mono);font-size:12px;color:var(--muted)}
.buy .ship{font-size:13.5px;color:var(--muted)}
.opt-label{display:flex;justify-content:space-between;font-size:13px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;margin:28px 0 10px}
.opt-label span{font-weight:600;letter-spacing:0;text-transform:none;color:var(--muted)}
.size-opts{display:flex;gap:8px;flex-wrap:wrap}
.size-opts button{min-width:84px;height:48px;padding:0 18px;border-radius:14px;border:1.5px solid var(--line);background:#fff;font-weight:800;font-size:15px}
.size-opts button:hover{border-color:var(--g-300)}
.size-opts button[aria-pressed=true]{border-color:var(--g-600);background:var(--tint);color:var(--g-700);box-shadow:inset 0 0 0 1px var(--g-600)}
.size-opts button small{display:block;font-size:11px;font-weight:600;color:var(--muted);margin-top:-2px}
.addon{display:flex;align-items:center;gap:14px;margin-top:22px;padding:14px 16px;border:1px solid var(--line);border-radius:18px;cursor:pointer;background:#fff}
.addon:hover{border-color:var(--g-300)}
.addon input{width:20px;height:20px;accent-color:var(--g-600)}
.addon img{width:52px;height:52px;border-radius:12px;object-fit:cover;background:#EDEDEB}
.addon div{flex:1;font-size:14px}
.addon strong{display:block;font-size:15px}
.addon span{color:var(--muted)}
.addon b{font-size:15px}
.cart-row{display:flex;gap:10px;margin-top:22px}
.qty{display:flex;align-items:center;border:1px solid var(--line);border-radius:999px;height:52px;background:#fff}
.qty button{width:44px;height:100%;font-size:20px;color:var(--ink-2)}
.qty input{width:40px;text-align:center;border:0;outline:0;font-weight:800;background:none}
.cart-row .btn{flex:1}
.secure{display:flex;align-items:center;justify-content:center;gap:8px;font-size:12.5px;color:var(--muted);margin-top:12px}
.coa-link{display:flex;align-items:center;gap:14px;margin-top:22px;padding:16px 18px;border-radius:18px;background:var(--tint);border:1px solid var(--line)}
.coa-link .ic{width:40px;height:40px;border-radius:12px;background:var(--grad);display:grid;place-items:center;color:#fff;flex-shrink:0}
.coa-link .ic svg{width:18px;height:18px}
.coa-link div{flex:1;font-size:14px}
.coa-link strong{display:block;font-size:15px}
.coa-link span{color:var(--muted)}
.coa-link a{font-weight:800;font-size:14px;color:var(--g-700);white-space:nowrap}
.coa-link a:hover{text-decoration:underline}
.ruo-note{margin-top:18px;font-size:12.5px;color:var(--muted);line-height:1.5}
.tabs{margin-top:72px}
.tablist{display:flex;gap:6px;border-bottom:1px solid var(--line);overflow-x:auto;scrollbar-width:none}
.tablist button{padding:14px 18px;font-weight:800;font-size:15px;color:var(--muted);border-bottom:2px solid transparent;margin-bottom:-1px;white-space:nowrap}
.tablist button[aria-selected=true]{color:var(--ink);border-bottom-color:var(--g-600)}
.tabpanel{padding:32px 0;max-width:820px;color:var(--ink-2)}
.tabpanel p+p{margin-top:12px}
.spec{width:100%;border-collapse:collapse;font-size:15px}
.spec th,.spec td{text-align:left;padding:14px 0;border-bottom:1px solid var(--line);vertical-align:top}
.spec th{width:38%;font-weight:700;color:var(--ink)}
.spec td{font-family:var(--mono);font-size:13.5px}

/* COA library */
.coa-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.coa{display:flex;gap:16px;align-items:center;padding:16px;border:1px solid var(--line);border-radius:var(--r-md);background:#fff;transition:box-shadow .2s,transform .2s}
.coa:hover{transform:translateY(-2px);box-shadow:0 20px 36px -26px rgba(12,53,37,.4)}
.coa[hidden]{display:none}
.coa img{width:76px;height:76px;border-radius:14px;object-fit:cover;background:#EDEDEB;flex-shrink:0}
.coa .body{flex:1;min-width:0}
.coa .t{font-family:var(--mono);font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--g-600)}
.coa h3{font-size:17px;letter-spacing:-.02em;line-height:1.2;margin:4px 0 6px}
.status{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:700;padding:4px 10px;border-radius:999px}
.status.ok{background:var(--tint-2);color:var(--g-700)}
.status.soon{background:#FBF3DF;color:#8A6412}
.status i{width:6px;height:6px;border-radius:50%;background:currentColor}
.coa .btn{height:40px;padding:0 16px;font-size:13px}
.coa-note{display:flex;gap:16px;align-items:center;justify-content:space-between;margin-top:36px;padding:24px 28px;border-radius:var(--r-md);background:var(--tint);border:1px solid var(--line);flex-wrap:wrap}
.coa-note p{color:var(--ink-2);max-width:620px}

/* About */
.split{display:grid;grid-template-columns:1fr 1fr;gap:64px;align-items:center}
.split h2{font-size:clamp(36px,4.4vw,56px);margin:14px 0 18px}
.split p{color:var(--ink-2);font-size:16.5px}
.split p+p{margin-top:14px}
.photo-tile{border-radius:var(--r-lg);overflow:hidden;aspect-ratio:4/5;box-shadow:0 40px 80px -30px rgba(12,53,37,.45)}
.photo-tile img{width:100%;height:100%;object-fit:cover;object-position:50% 72%}
.pillars{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
.pillars>div{background:#fff;border:1px solid var(--line);border-radius:var(--r-md);padding:26px}
.pillars .ic{width:44px;height:44px;border-radius:14px;background:var(--grad);display:grid;place-items:center;color:#fff;margin-bottom:22px;box-shadow:0 10px 20px -10px rgba(30,110,75,.7)}
.pillars .ic svg{width:20px;height:20px}
.pillars h3{font-size:19px;letter-spacing:-.02em;line-height:1.2;margin-bottom:8px}
.pillars p{font-size:14.5px;color:var(--muted)}
.pillars small{display:block;margin-top:10px;font-size:12.5px;color:var(--muted);font-style:italic}
.cta-card{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:40px;border-radius:var(--r-lg);background:linear-gradient(170deg,#fff 0%,var(--tint-2) 100%);border:1px solid var(--line);flex-wrap:wrap}
.cta-card h2{font-size:clamp(28px,3.2vw,40px)}
.cta-card p{color:var(--ink-2);margin-top:8px}
.cta-card .btns{display:flex;gap:10px;flex-wrap:wrap}

/* FAQ */
.faq-layout{display:grid;grid-template-columns:260px 1fr;gap:56px;align-items:start}
.faq-nav{position:sticky;top:150px;display:grid;gap:4px}
.faq-nav a{padding:10px 14px;border-radius:12px;font-weight:700;font-size:14.5px;color:var(--ink-2)}
.faq-nav a:hover{background:var(--tint)}
.faq-nav a.active{background:var(--g-900);color:#fff}
.faq-group{margin-bottom:48px;scroll-margin-top:150px}
.faq-group h2{font-size:clamp(26px,3vw,36px);margin-bottom:18px}
.faq-group details{border:1px solid var(--line);border-radius:18px;background:#fff;margin-bottom:10px;transition:border-color .2s}
.faq-group details[open]{border-color:var(--g-300);background:linear-gradient(170deg,#fff 0%,var(--tint) 100%)}
.faq-group summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;align-items:center;gap:20px;padding:20px 22px;font-weight:800;font-size:16.5px;letter-spacing:-.01em}
.faq-group summary::-webkit-details-marker{display:none}
.faq-group summary::after{content:"+";flex-shrink:0;width:30px;height:30px;border-radius:50%;background:var(--tint-2);color:var(--g-700);display:grid;place-items:center;font-size:18px;font-weight:600;transition:transform .2s}
.faq-group details[open] summary::after{transform:rotate(45deg);background:var(--g-600);color:#fff}
.faq-group details p{padding:0 22px 22px;color:var(--ink-2);max-width:720px}
.faq-search{margin-bottom:32px}

/* Contact */
.contact-grid{display:grid;grid-template-columns:1.4fr 1fr;gap:40px;align-items:start}
.form-card{border:1px solid var(--line);border-radius:var(--r-lg);padding:36px;background:#fff;box-shadow:0 30px 60px -40px rgba(12,53,37,.35)}
.form-card h2{font-size:32px;margin-bottom:8px}
.form-card>p{color:var(--muted);margin-bottom:26px}
.field{display:grid;gap:8px;margin-bottom:18px}
.field label{font-size:13px;font-weight:800;letter-spacing:.04em}
.field input,.field select,.field textarea{height:52px;padding:0 18px;border-radius:14px;border:1px solid var(--line);background:var(--tint);outline:0;font-size:15px;transition:border-color .15s,background .15s}
.field textarea{height:150px;padding:14px 18px;resize:vertical}
.field select{appearance:none;background:var(--tint) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' fill='none' stroke='%236E7A74' stroke-width='1.8'%3E%3Cpath d='m1 1 5 5 5-5'/%3E%3C/svg%3E") no-repeat right 18px center}
.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--g-500);background:#fff}
.row2{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px}
.form-msg{margin-top:14px;font-size:14px;color:var(--g-700);font-weight:700;display:none}
.side-cards{display:grid;gap:16px}
.side-cards>div{border:1px solid var(--line);border-radius:var(--r-md);padding:24px;background:linear-gradient(170deg,#fff 0%,var(--tint) 100%)}
.side-cards .ic{width:40px;height:40px;border-radius:12px;background:var(--grad);display:grid;place-items:center;color:#fff;margin-bottom:16px}
.side-cards .ic svg{width:18px;height:18px}
.side-cards h3{font-size:18px;letter-spacing:-.02em;margin-bottom:6px}
.side-cards p{font-size:14.5px;color:var(--muted)}
.side-cards a.link{display:inline-block;margin-top:10px;font-weight:800;color:var(--g-700)}
.side-cards a.link:hover{text-decoration:underline}

/* ---------- 5. Responsive ---------- */
@media (max-width:1080px){
  .track{grid-auto-columns:calc((100% - 40px)/3)}
  .grid{grid-template-columns:repeat(3,1fr)}
  .coa-grid{grid-template-columns:repeat(2,1fr)}
  .pillars{grid-template-columns:repeat(2,1fr)}
  .fgrid{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
}
@media (max-width:900px){
  .mb-hero{min-height:560px}
  .mb-hero-content{padding:88px 0 76px;width:min(620px,70vw);transform:translateX(48px)}
  .mb-stats{grid-template-columns:repeat(2,minmax(0,1fr))}
  .pdp-grid,.split,.contact-grid{grid-template-columns:1fr;gap:36px}
  .gallery{position:static}
  .faq-layout{grid-template-columns:1fr;gap:24px}
  .faq-nav{position:static;display:flex;overflow-x:auto;scrollbar-width:none}
  .faq-nav a{white-space:nowrap}
}
@media (max-width:820px){
  .wrap{padding:0 16px}
  .sec{padding:64px 0}
  .sec-head{flex-direction:column;align-items:start}
  .track{grid-auto-columns:46%}
  .grid{grid-template-columns:1fr 1fr;gap:12px}
  .pc{padding:10px}
  .pure{top:16px;right:16px;padding:4px 8px;font-size:10px}
  .pc h3{font-size:16px}
  .pc .act .icon-btn{display:none}
  .band,.page-hero .band{padding:64px 24px;margin:0 16px;border-radius:28px}
  .mol{opacity:.55;-webkit-mask-image:none;mask-image:none}
  .pills{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;margin-inline:-16px;padding-inline:16px}
  .science .wrap{grid-template-columns:1fr;gap:44px}
  .feat{grid-template-columns:1fr}
  .coa-grid{grid-template-columns:1fr}
  .legal{flex-direction:column}
  .row2{grid-template-columns:minmax(0,1fr)}
  .form-card{padding:24px}
}
@media (max-width:768px){
  .mb-nav-links{display:none}
  .mb-toggle{display:inline-flex}
  .mb-logo{gap:8px}
  .mb-logo img{width:40px;height:40px}
  .mb-logo-text{font-size:.82rem}
  .mb-nav-wrap{padding:0 18px}
  .mb-header nav{position:absolute;top:calc(100% + 10px);left:12px;right:12px;z-index:99;padding:10px;border:1px solid #E3E8F0;border-radius:14px;background:#fff;box-shadow:0 16px 40px rgba(8,35,28,.16);display:none}
  .mb-header nav.open{display:block}
  .mb-header nav.open .mb-nav-links{display:grid;gap:2px}
  .mb-header nav.open .mb-nav-links a{display:block;padding:12px 14px;border-radius:9px}
  .mb-header nav.open .mb-nav-links a::after{display:none}
  .mb-header nav.open .mb-nav-links a[aria-current=page]{background:#E1F5EA}
}
@media (max-width:600px){
  .mb-header{padding:12px 0}
  .mb-nav-wrap{height:64px}
  .mb-nav-right{gap:4px}
  .mb-icon{width:40px;height:40px}
  .mb-logo img{width:34px;height:34px}
  .mb-logo-text{font-size:.9rem;white-space:nowrap}
  .mb-hero{display:block;min-height:0;background:#062D23;overflow:hidden}
  .mb-hero-mobile{display:block;width:100%}
  .mb-hero-mobile img{width:100%;height:auto}
  .mb-hero-inner{position:absolute;top:0;left:0;right:0;z-index:2;padding:0}
  .mb-hero-content{width:100%;max-width:390px;margin:0 auto;padding:24px 18px 0;transform:none;text-align:center}
  .mb-hero h1{max-width:330px;margin:0 auto 11px;font-size:clamp(2.05rem,10vw,2.45rem);line-height:.96}
  .mb-hero .mb-sub{max-width:340px;margin:0 auto 13px;font-size:.83rem;line-height:1.35}
  .mb-cta{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;max-width:350px;margin:0 auto}
  .mb-btn{width:100%;min-height:44px;padding:11px 8px;font-size:.8rem;line-height:1.1}
  .mb-stats-inner{width:100%;padding:0 14px}
  .mb-stats{gap:10px 8px;padding:14px 0 16px}
  .mb-stats .num{font-size:1.22rem;line-height:1.05}
  .mb-stats .label{display:block;margin-top:5px;font-size:.58rem;line-height:1.2;letter-spacing:.035em}
  .fgrid{grid-template-columns:minmax(0,1fr)}
  .pillars{grid-template-columns:1fr}
  .gallery .notes{grid-template-columns:1fr 1fr 1fr;gap:6px}
  .gallery .notes div{padding:10px;font-size:11px}
  .gallery .notes strong{font-size:13px}
  .cta-card{padding:28px}
}
@media (max-width:560px){ .track{grid-auto-columns:78%} }

/* The Best Sellers row is #track, which is display:flex, so the responsive
   `.track{grid-auto-columns:...}` rules above never reach it — its cards stayed
   pinned at four-across on a phone, roughly 79px each. That truncated the
   product names ("Retat rut…"), split prices mid-number ("$10 / 5.00") and cut
   off the buttons. These mirror the breakpoints above in flex terms. */
/* A price must never break mid-number — "$105.00" was wrapping to "$10 / 5.00"
   in the narrow cards. */
.pc .price b,.pc .price,.bs .from{white-space:nowrap}
.pc h3{overflow-wrap:anywhere}

@media (max-width:1080px){ #track .pc{flex:0 0 calc((100% - 40px)/3)} }
@media (max-width:820px){ #track .pc{flex:0 0 46%} }
@media (max-width:560px){ #track .pc{flex:0 0 78%} }

/* Mobile sticky buy bar (product page) */
.buybar{display:none}
@media (max-width:820px){
  .buybar{display:flex;align-items:center;gap:12px;position:fixed;left:10px;right:10px;bottom:calc(10px + env(safe-area-inset-bottom));z-index:80;padding:10px 10px 10px 18px;border-radius:22px;background:rgba(255,255,255,.96);backdrop-filter:blur(14px);border:1px solid var(--line);box-shadow:0 18px 40px -14px rgba(12,53,37,.45);transform:translateY(140%);transition:transform .3s}
  .buybar.show{transform:none}
  .buybar>div{flex:1;min-width:0;line-height:1.2}
  .buybar .bb-name{display:block;font-size:12.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .buybar b{font-size:19px;font-weight:900;letter-spacing:-.03em;color:var(--g-700)}
  .buybar .btn{height:48px;padding:0 22px}
  .toast{bottom:calc(92px + env(safe-area-inset-bottom))}
  /* Product page on phones */
  .pdp{padding:18px 0 56px}
  .pdp .crumbs{margin-bottom:16px;font-size:12px}
  .buy h1{font-size:34px}
  .buy .pricebox b{font-size:34px}
  .size-opts{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr))}
  .size-opts button{height:56px}
  .tabs{margin-top:48px}
  .tablist{margin-inline:-16px;padding-inline:16px}
  .spec th{width:44%;font-size:14px}
  .spec td{font-size:12.5px}
  /* Bigger tap targets + tighter hero spacing */
  .pills button{height:44px}
  .btn-sm{height:44px}
  .pc .act .btn{font-size:13px;padding:0 10px}
  .page-hero{padding-top:12px}
  .page-hero h1{font-size:clamp(40px,11vw,60px)}
  .page-hero p{font-size:15px}
  .band p{font-size:15.5px}
  .sec-head h2{font-size:clamp(34px,9vw,48px)}
  .science h2{font-size:clamp(34px,9vw,48px)}
  .search{height:52px;max-width:none}
  .toolbar .select{height:52px}
  .coa{padding:12px;gap:12px}
  .coa img{width:64px;height:64px}
  .coa .btn{padding:0 14px}
  .faq-group summary{padding:18px;font-size:15.5px}
  .faq-group details p{padding:0 18px 18px;font-size:15px}
}
@media (max-width:420px){
  .pc .price b{font-size:18px}
  .pc .cat{font-size:9.5px;letter-spacing:.1em}
  .sizes span{font-size:10px;padding:3px 8px}
  .ruo{font-size:11px}
  .coa{flex-wrap:wrap}
  .coa .btn{width:100%}
}
/* ---------- v3 floating glass nav ---------- */
.nav-shell{position:sticky;top:0;z-index:70;background:#fff;border-bottom:1px solid var(--line);box-shadow:0 8px 24px -22px rgba(12,53,37,.5)}
.nav{position:relative;max-width:1320px;margin:0 auto;height:78px;display:flex;align-items:center;gap:20px;padding:0 28px;background:#fff;color:var(--ink)}
.nav .mb-logo{gap:8px}
.nav .mb-logo img{width:auto;height:48px}
.nav .mb-logo-text{font-size:1.1rem}
.nav nav{margin:0 auto}
.nav-links{display:flex;gap:2px;list-style:none}
.nav-links a{display:block;padding:10px 14px;border-radius:999px;font-size:12.5px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;transition:background .2s,color .2s}
.nav-links a:hover{background:rgba(46,125,91,.1)}
.nav-links a[aria-current=page]{background:var(--g-900);color:#fff}
.nav-actions{display:flex;align-items:center;gap:8px}
.nav-ic{width:42px;height:42px;border-radius:999px;display:grid;place-items:center;background:var(--tint);border:1px solid var(--line);position:relative;color:inherit;transition:background .2s,border-color .2s}
.nav-ic:hover{background:var(--tint-2)}
.nav-ic svg{width:19px;height:19px}
.nav-badge{position:absolute;top:-4px;right:-4px;min-width:18px;height:18px;padding:0 5px;border-radius:999px;background:var(--g-600);color:#fff;font-size:10.5px;font-weight:800;display:grid;place-items:center;border:2px solid #fff}
.nav-cta{margin-left:4px}
.nav-menu{display:none}
/* Over the dark hero, before scrolling: dark glass */

/* ---------- v3 cinematic hero ---------- */
.hx{position:relative;min-height:clamp(560px,42vw,760px);display:flex;align-items:center;background:#0B1F1A;color:#fff;overflow:hidden;padding:96px 0 160px}
.hx-media{position:absolute;inset:0}
.hx-media img{width:100%;height:100%;object-fit:cover;object-position:70% 50%}
.hx-media::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(6,22,16,.9) 0%,rgba(6,22,16,.62) 34%,rgba(6,22,16,0) 60%),linear-gradient(180deg,rgba(6,22,16,.35) 0%,rgba(6,22,16,0) 30%,rgba(6,22,16,0) 70%,rgba(6,22,16,.55) 100%)}
.hx .wrap{position:relative;width:100%;max-width:1320px}
.hx-copy{max-width:min(680px,92vw)}
/* Cap at 96px: the lines are nowrap, and above this "ELEVATE THE" outgrows the copy column. */
.hx h1{margin:22px 0 22px;font-size:clamp(52px,7vw,96px);font-weight:900;line-height:.88;letter-spacing:-.05em;text-transform:uppercase}
.hx h1 span{display:block;white-space:nowrap}
.hx h1 .outline{-webkit-text-stroke:1.6px rgba(191,233,210,.75)}
.hx-sub{max-width:500px;font-size:18px;line-height:1.6;color:rgba(255,255,255,.82);margin-bottom:32px}
.hx-ctas{display:flex;gap:12px;flex-wrap:wrap}
.btn-glass{background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.3);color:#fff;backdrop-filter:blur(8px)}
.btn-glass:hover{background:rgba(255,255,255,.16)}
.hx-stats{position:relative;z-index:5;margin-top:-84px}
.hx-stats .card{display:grid;grid-template-columns:repeat(4,1fr);background:radial-gradient(120% 160% at 85% 0%,#1E6A4A 0%,#0C3525 50%,#07241A 100%);border:1px solid rgba(159,211,183,.18);border-radius:26px;box-shadow:0 30px 60px -30px rgba(7,36,26,.7);padding:8px}
.hx-stats .card>div{padding:22px 24px;border-right:1px solid rgba(159,211,183,.16)}
.hx-stats .card>div:last-child{border-right:0}
.hx-stats strong{display:block;font-size:30px;font-weight:900;letter-spacing:-.04em;line-height:1.05;color:#fff}
.hx-stats span{font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:#9FD3B7}
body.hero-dark .bestsellers{padding-top:72px}

@media (max-width:1080px){
  .nav-cta{display:none}
  .nav nav{margin:0}
  .nav-actions{margin-left:auto}
  .nav-menu{display:grid}
  .nav #site-nav{position:absolute;top:calc(100% + 8px);left:12px;right:12px;padding:8px;border-radius:20px;background:#fff;border:1px solid var(--line);box-shadow:0 24px 48px -20px rgba(12,53,37,.4);display:none;color:var(--ink)}
  .nav.menu-open #site-nav{display:block}
  .nav.menu-open .nav-links{display:grid;gap:2px}
  .nav-links{display:none}
  .nav.menu-open .nav-links a{padding:15px 16px;font-size:13.5px;border-radius:14px}
  .hx-media img{object-position:86% 50%}
  .hx-stats .card{grid-template-columns:repeat(2,1fr)}
  .hx-stats .card>div:nth-child(2){border-right:0}
  .hx-stats .card>div:nth-child(-n+2){border-bottom:1px solid rgba(159,211,183,.16)}
}
@media (max-width:760px){

  .nav{height:66px;padding:0 12px 0 16px;gap:10px}
  .nav .mb-logo{gap:8px}
  .nav .mb-logo img{width:auto;height:42px}
  .nav .mb-logo-text{font-size:.95rem}
  .nav-ic{width:42px;height:42px}
  .hide-sm{display:none}
  .hx{display:block;min-height:0;padding:0 0 96px}
  .hx-media{position:relative;height:auto}
  .hx-media img{height:auto;aspect-ratio:4/3.4;object-position:80% 50%}
  .hx-media::after{background:linear-gradient(180deg,rgba(6,22,16,.55) 0%,rgba(6,22,16,0) 28%,rgba(6,22,16,0) 55%,#0B1F1A 100%)}
  .hx .wrap{margin-top:-64px}
  .hx h1{font-size:clamp(44px,13.2vw,66px);margin:16px 0 16px}
  .hx-sub{font-size:16px;margin-bottom:24px}
  /* On a phone the hero copy sits over the busiest part of the photo — the
     stone ledge runs straight behind the headline, and because the outlined
     word is transparent that hard edge shows through the letters and reads as
     a strikethrough. A scrim behind the copy restores contrast, and the stroke
     goes fully opaque so the outline holds up at this size. */
  .hx .wrap{position:relative}
  .hx .hx-copy{position:relative;z-index:1}
  .hx .hx-copy::before{content:"";position:absolute;inset:-24px -16px -16px;background:linear-gradient(180deg,rgba(7,26,19,0) 0%,rgba(7,26,19,.72) 22%,rgba(7,26,19,.88) 100%);z-index:-1;pointer-events:none}
  .hx h1 .outline{-webkit-text-stroke-color:rgba(191,233,210,1)}
  /* The display tracking (-.045em) is drawn for large screens. At phone size
     the 1.6px outline strokes of neighbouring letters touch and merge, so
     "STANDARD." reads as one tangled shape. Smaller type with looser tracking
     separates the letterforms; line-height goes above 1 so the two lines stop
     sitting on top of each other. */
  /* Scoped to body.monarch-v3 to match the theme-guard rule further down
     (body.monarch-v3 h1,h2,h3{letter-spacing:-.045em;line-height:.98}); a plain
     `.hx h1` loses to it on specificity and only the font-size took effect. */
  body.monarch-v3 .hx h1{font-size:43px;letter-spacing:-.015em;line-height:1.06;text-align:center}
  /* The vials sit at ~68.6% across the 2000px-wide source. With object-fit:cover
     the position needed to centre them depends on the box height, so shortening
     the image (tried at 232px) shifted the required value and clipped GHK-Cu.
     Height is left alone and 82% centres the trio across the 375-430px range
     real phones use. The headline is centred to match; buttons stay left.
     87% is measured, not guessed: sampling the source's column luminance puts
     the vial trio at x=1209-1704 of 2000, i.e. centred on 72.8%. Solving
     p = (0.728*W - Wwin/2) / (W - Wwin) for a 375px viewport gives 86.8%. */
  body.monarch-v3 .hx img{object-position:87% 50%}
  /* Sub-copy centred under the headline; the buttons below stay left-aligned. */
  body.monarch-v3 .hx .hx-sub{text-align:center;margin-left:auto;margin-right:auto}
  /* Hero crop left at the shared 80%. It looks like a desktop-only composition,
     but the vials sit right-of-centre in the source image: 50% shows a single
     vial and 72% clips GHK-Cu, while 80% frames all three centred on a phone. */
  .hx-ctas{display:grid;grid-template-columns:1fr 1fr;gap:10px}
  .hx-ctas .btn{padding:0 12px;height:54px}
  .hx-stats{margin-top:-64px}
  .hx-stats .card{border-radius:22px;padding:4px}
  .hx-stats .card>div{padding:16px}
  .hx-stats strong{font-size:23px}
  .hx-stats span{font-size:9.5px;letter-spacing:.1em}
  body.hero-dark .bestsellers{padding-top:48px}
}

/* ---------- Promise cards (under Rise Above band) ---------- */
.promise{padding:24px 0 0}
.promise-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}
.pr-card{position:relative;padding:36px;border-radius:28px;background:linear-gradient(170deg,#fff 0%,var(--tint) 100%);border:1px solid var(--line);box-shadow:0 30px 60px -44px rgba(12,53,37,.5);transition:transform .25s,box-shadow .25s}
.pr-card:hover{transform:translateY(-3px);box-shadow:0 34px 64px -40px rgba(12,53,37,.55)}
.pr-ic{width:56px;height:56px;border-radius:18px;background:var(--grad);display:grid;place-items:center;color:#fff;margin-bottom:22px;box-shadow:0 14px 28px -12px rgba(30,110,75,.7)}
.pr-ic svg{width:24px;height:24px}
.pr-card h3{font-size:clamp(22px,2.2vw,27px);letter-spacing:-.03em;line-height:1.15;margin-bottom:12px}
.pr-card p{color:var(--ink-2);font-size:16px;line-height:1.65;margin-bottom:20px}
.pr-card ul{list-style:none;display:grid;gap:10px}
.pr-card li{display:flex;align-items:flex-start;gap:10px;font-weight:700;font-size:15px;color:var(--ink)}
.pr-card li::before{content:"✓";flex-shrink:0;width:22px;height:22px;border-radius:50%;background:var(--tint-2);border:1px solid var(--g-300);color:var(--g-700);display:grid;place-items:center;font-size:12px;font-weight:900;margin-top:1px}
@media (max-width:820px){
  .promise{padding:16px 0 0}
  .promise-grid{grid-template-columns:1fr;gap:14px}
  .pr-card{padding:26px 22px;border-radius:24px}
  .pr-card p{font-size:15px}
  .pr-card li{font-size:14.5px}
}

/* ---------- Homepage FAQ ---------- */
.home-faq{padding:96px 0 72px;background:linear-gradient(180deg,#fff 0%,var(--tint) 100%)}
.hf-grid{display:grid;grid-template-columns:.9fr 1.1fr;gap:64px;align-items:start}
.hf-intro{position:sticky;top:120px}
.hf-intro h2{font-size:clamp(38px,4.6vw,60px);margin:22px 0 18px}
.hf-sub{color:var(--ink-2);font-size:17px;max-width:460px}
.hf-note{margin:32px 0 26px;padding:22px 24px;border-radius:20px;border:1px solid var(--g-300);border-left:4px solid var(--g-600);background:linear-gradient(170deg,var(--tint) 0%,var(--tint-2) 100%);max-width:520px}
.hf-note strong{display:block;font-size:17px;margin-bottom:6px}
.hf-note p{font-size:14.5px;color:var(--ink-2)}
.hf-note a{color:var(--g-700);font-weight:800;text-decoration:underline;text-underline-offset:3px}
.hf-list{display:grid;gap:14px}
.hf-item{background:#fff;border:1px solid var(--line);border-radius:22px;transition:border-color .2s,box-shadow .2s}
.hf-item[open]{border-color:var(--g-300);border-left:4px solid var(--g-600);box-shadow:0 24px 44px -30px rgba(12,53,37,.45)}
.hf-item summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:16px;padding:22px 24px}
.hf-item summary::-webkit-details-marker{display:none}
.hf-num{flex-shrink:0;width:36px;height:36px;border-radius:50%;display:grid;place-items:center;font-size:13px;font-weight:800;background:var(--tint-2);color:var(--g-700);border:1px solid var(--g-300);transition:background .2s,color .2s}
.hf-item[open] .hf-num{background:var(--g-600);color:#fff;border-color:var(--g-600)}
.hf-q{flex:1;font-weight:800;font-size:17px;letter-spacing:-.01em}
.hf-item[open] .hf-q{color:var(--g-700)}
.hf-ic{flex-shrink:0;position:relative;width:36px;height:36px;border-radius:50%;border:1.5px solid var(--g-300);color:var(--g-700)}
.hf-ic::before,.hf-ic::after{content:"";position:absolute;left:50%;top:50%;width:13px;height:2px;border-radius:2px;background:currentColor;transform:translate(-50%,-50%)}
.hf-ic::after{transform:translate(-50%,-50%) rotate(90deg);transition:transform .2s}
.hf-item[open] .hf-ic{border-color:var(--g-600)}
.hf-item[open] .hf-ic::after{transform:translate(-50%,-50%) rotate(0deg)}
.hf-item p{padding:0 24px 24px 76px;color:var(--ink-2);font-size:15.5px;line-height:1.7}
@media (max-width:900px){
  .hf-grid{grid-template-columns:1fr;gap:36px}
  .hf-intro{position:static}
}
@media (max-width:760px){
  .home-faq{padding:64px 0 48px}
  .hf-item summary{padding:18px 16px;gap:12px}
  .hf-num,.hf-ic{width:32px;height:32px}
  .hf-q{font-size:15.5px}
  .hf-item p{padding:0 18px 20px 18px;font-size:15px}
  .hf-intro .btn{width:100%}
}

/* ---------- Final CTA (homepage bottom) ---------- */
.final-cta{padding:24px 0 96px;background:var(--tint)}
/* align-items:flex-end puts the buttons on the same baseline as the chips row
   instead of floating them at the vertical centre of the card. */
.fc-card{position:relative;overflow:hidden;display:flex;align-items:flex-end;justify-content:space-between;gap:40px;padding:64px 64px;border-radius:32px;background:radial-gradient(120% 160% at 90% 0%,#1E6A4A 0%,#0C3525 50%,#07241A 100%);color:#fff;box-shadow:0 40px 80px -40px rgba(7,36,26,.6)}
.fc-card .mol{opacity:.5}
.fc-copy,.fc-btns{position:relative}
/* color must be explicit: the pill sits on a dark card on the homepage CTA and
   on a light background in the FAQ section, and inherited text went black there. */
.fc-tag{display:inline-flex;align-items:center;gap:8px;height:34px;padding:0 16px;border-radius:999px;background:var(--grad);color:#fff;font-size:12px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;box-shadow:0 10px 24px -10px rgba(46,138,97,.8)}
.fc-tag i{width:7px;height:7px;border-radius:50%;background:#fff}
.fc-card h2{font-size:clamp(32px,4vw,54px);letter-spacing:-.04em;line-height:1.02;margin:20px 0 22px}
.fc-card h2 span{background:linear-gradient(100deg,#fff 0%,#BFE9D2 100%);-webkit-background-clip:text;background-clip:text;color:transparent}
/* margin/padding 0: the theme indents every <ul> by 48px, which pushed the chip
   row right of the headline and paragraph above it. */
.fc-chips{display:flex;flex-wrap:wrap;gap:8px;list-style:none;margin-left:0;padding-left:0}
.fc-copy .fc-chips{margin-bottom:0}
/* min-height, not height: on the shop header these chips are laid out in a
   two-column grid, and at phone width "Free Shipping $200+" wraps to three
   lines. A fixed height left that text hanging outside the pill. */
.fc-chips li{display:inline-flex;align-items:center;gap:7px;min-height:36px;padding:7px 14px;border-radius:999px;background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.16);font-size:13.5px;font-weight:700;color:#E3F1EA}
.fc-chips li::before{content:"✓";color:#6FE3A0;font-weight:900}
.fc-btns{display:flex;gap:12px;flex-shrink:0}
@media (max-width:1080px){
  .fc-card{flex-direction:column;align-items:flex-start;padding:48px 40px}
}
@media (max-width:760px){
  .final-cta{padding:16px 0 64px}
  .fc-card{padding:40px 22px;border-radius:26px;gap:28px}
  .fc-card h2{font-size:clamp(28px,8.4vw,38px)}
  .fc-chips li{min-height:34px;font-size:12.5px;padding:6px 12px}
  .fc-btns{display:grid;grid-template-columns:1fr 1fr;width:100%}
  .fc-btns .btn{padding:0 12px}
}

/* ---------- Checkout ---------- */
body.is-checkout{background:var(--tint)}
.co-header{background:#fff;border-bottom:1px solid var(--line)}
.co-header-in{max-width:1180px;margin:0 auto;height:76px;padding:0 24px;display:flex;align-items:center;justify-content:space-between}
.co-header .mb-logo img{width:auto;height:44px}
.co-header .mb-logo{gap:8px}
.co-secure{display:inline-flex;align-items:center;gap:8px;font-weight:800;font-size:13.5px;color:var(--g-700)}
.co-secure svg{width:17px;height:17px}
.co{padding:32px 0 80px}
.co-wrap{max-width:1180px;margin:0 auto;padding:0 24px;display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:36px;align-items:start}
.co-wrap>*{min-width:0}
.co-steps{display:flex;flex-wrap:wrap;gap:8px;align-items:center;font-size:13.5px;color:var(--muted);margin-bottom:18px}
.co-steps a{color:var(--g-700);font-weight:700}
.co-steps b{color:var(--ink)}
.co-block{background:#fff;border:1px solid var(--line);border-radius:24px;padding:26px;margin-bottom:14px}
.co-block-h{display:flex;align-items:center;gap:12px;margin-bottom:18px}
.co-block-h h2{font-size:22px;letter-spacing:-.03em}
.co-n{width:30px;height:30px;border-radius:50%;background:var(--grad);color:#fff;display:grid;place-items:center;font-weight:800;font-size:13.5px;flex-shrink:0}
.row3{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr) minmax(0,1fr);gap:14px}
.field input,.field select,.field textarea{width:100%;min-width:0}
.row2>*,.row3>*{min-width:0}
.field .opt{font-weight:500;color:var(--muted);letter-spacing:0}
.field input.invalid,.field select.invalid{border-color:#D14343;background:#FFF6F6}
.co-check{display:flex;gap:12px;align-items:flex-start;font-size:14.5px;color:var(--ink-2);cursor:pointer;line-height:1.5;border-radius:12px}
.co-check+.co-check{margin-top:14px}
.co-check input{width:20px;height:20px;margin-top:1px;accent-color:var(--g-600);flex-shrink:0}
.co-check a{color:var(--g-700);font-weight:700;text-decoration:underline;text-underline-offset:2px}
.co-check.invalid{outline:2px solid #D14343;outline-offset:6px}
.co-ship{display:grid;gap:10px}
.co-opt{display:flex;align-items:center;gap:14px;padding:16px 18px;border:1.5px solid var(--line);border-radius:16px;cursor:pointer;transition:border-color .15s,background .15s}
.co-opt:hover{border-color:var(--g-300)}
.co-opt:has(input:checked){border-color:var(--g-600);background:var(--tint)}
.co-opt input{width:20px;height:20px;accent-color:var(--g-600)}
.co-opt-t{flex:1}
.co-opt-t b{display:block;font-size:15.5px}
.co-opt-t small{color:var(--muted);font-size:13px}
.co-opt-p{font-size:15.5px;color:var(--g-700)}
.co-fine{font-size:12.5px;color:var(--muted);margin-top:12px}
.co-pay{display:flex;gap:16px;align-items:flex-start;padding:20px;border-radius:16px;border:1.5px dashed var(--g-300);background:var(--tint)}
.co-pay>svg{width:26px;height:26px;color:var(--g-600);flex-shrink:0;margin-top:2px}
.co-pay strong{display:block;font-size:16px;margin-bottom:4px}
.co-pay p{font-size:14px;color:var(--ink-2)}
.co-place{width:100%;height:58px;font-size:16.5px;margin-top:6px}
.co-place:disabled{opacity:.5;pointer-events:none}
.co-err{color:#B42323;font-weight:700;font-size:14px;margin-top:10px;min-height:1px}
.co-back{display:inline-block;margin-top:14px;font-weight:700;color:var(--ink-2)}
.co-back:hover{color:var(--g-700)}
.co-side{position:sticky;top:24px}
.co-card{background:#fff;border:1px solid var(--line);border-radius:24px;padding:26px;box-shadow:0 30px 60px -44px rgba(12,53,37,.5)}
.co-card h2{font-size:22px;letter-spacing:-.03em;margin-bottom:16px}
.co-line{display:flex;align-items:center;gap:14px;padding:12px 0;border-bottom:1px solid var(--line)}
.co-thumb{position:relative;flex-shrink:0}
.co-thumb img{width:60px;height:60px;border-radius:14px;object-fit:cover;background:#EDEDEB}
.co-thumb i{position:absolute;top:-7px;right:-7px;min-width:22px;height:22px;padding:0 6px;border-radius:99px;background:var(--g-900);color:#fff;font-style:normal;font-size:11.5px;font-weight:800;display:grid;place-items:center;border:2px solid #fff}
.co-lt{flex:1;min-width:0}
.co-lt b{display:block;font-size:15px}
.co-lt small{color:var(--muted);font-size:12.5px}
.co-line>b{font-size:15px;white-space:nowrap}
.co-nudge{margin:14px 0 4px;padding:10px 14px;border-radius:12px;background:var(--tint);font-size:13.5px;color:var(--ink-2)}
.co-nudge b{color:var(--g-700)}
.co-sum{display:flex;justify-content:space-between;gap:12px;padding:8px 0;font-size:14.5px;color:var(--ink-2)}
.co-sum:first-of-type{margin-top:10px}
.co-sum b{color:var(--ink);font-weight:700;text-align:right}
.co-total{border-top:1px solid var(--line);margin-top:6px;padding-top:14px;font-size:17px;color:var(--ink)}
.co-total b{font-size:24px;font-weight:900;letter-spacing:-.03em}
.co-ruo{font-size:12px;color:var(--muted);margin-top:12px}
.co-empty{padding:12px 0;color:var(--muted)}
.co-empty a{color:var(--g-700);font-weight:800}
.co-mini{display:none}
.co-main[hidden]{display:none}
.co-login h1{font-size:clamp(34px,4vw,46px);margin:12px 0 8px}
.co-login-sub{color:var(--ink-2);margin-bottom:22px}
.co-login-sub a,.co-have{color:var(--g-700);font-weight:700;text-decoration:underline;text-underline-offset:3px}
.co-have{margin-left:auto;font-size:13.5px;white-space:nowrap}
.req{color:#D14343}
.pw{position:relative}
.pw input{width:100%;padding-right:56px}
.pw-eye{position:absolute;right:6px;top:50%;transform:translateY(-50%);width:42px;height:42px;border-radius:12px;display:grid;place-items:center;color:var(--ink-2)}
.pw-eye:hover{background:var(--tint-2)}
.pw-eye svg{width:20px;height:20px}
.co-login-links{display:flex;justify-content:space-between;gap:12px;margin-top:16px;font-weight:700;font-size:14.5px}
.co-login-links a{color:var(--g-700);text-decoration:underline;text-underline-offset:3px}
.co-coupon{display:flex;gap:8px;margin:14px 0 4px}
.co-coupon input{flex:1;min-width:0;height:44px;padding:0 14px;border-radius:12px;border:1px solid var(--line);background:var(--tint);outline:0}
.co-coupon input:focus{border-color:var(--g-500);background:#fff}
.co-nudge small{color:var(--muted)}
@media (max-width:900px){
  .co-wrap{grid-template-columns:minmax(0,1fr);gap:0}
  .co-block-h{flex-wrap:wrap}
  .co-have{white-space:normal}
  .co-side{display:none}
  .co-mini{display:block;background:#fff;border:1px solid var(--line);border-radius:20px;margin-bottom:16px;overflow:hidden}
  .co-mini summary{list-style:none;display:flex;justify-content:space-between;align-items:center;padding:16px 18px;font-weight:800;color:var(--g-700);cursor:pointer}
  .co-mini summary::-webkit-details-marker{display:none}
  .co-mini summary span::after{content:" ▾"}
  .co-mini[open] summary span::after{content:" ▴"}
  .co-mini summary b{font-size:18px;color:var(--ink)}
  .co-mini>div{padding:0 18px 16px}
}
@media (max-width:600px){
  .co{padding:18px 0 56px}
  .co-wrap,.co-header-in{padding:0 12px}
  .co-header-in{height:64px}
  .co-header .mb-logo img{height:38px}
  .co-block{padding:20px 16px;border-radius:20px}
  .row3{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
  .row3 .field:first-child{grid-column:1/-1}
}

/* ---------- SMS consent box ---------- */
.sms-consent{margin:6px 0 14px;padding:14px 16px;border-radius:16px;border:1px solid var(--g-300);background:var(--tint);animation:sms-in .3s ease}
.sms-consent[hidden]{display:none}
.sms-consent .co-check{font-size:12.5px;line-height:1.55;color:var(--ink-2);margin:0}
.sms-consent b{color:var(--ink);font-size:14px}
.sms-consent a{color:var(--g-700);font-weight:700;text-decoration:underline}
@keyframes sms-in{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}
.wo-body .sms-consent{margin-top:10px}
.wo-opt{margin-top:6px;font-size:14px}
.co-mkt{margin:4px 0 6px;font-size:14px}
.co-mkt+.co-mkt{margin-top:10px}
.co-note{font-size:12px;line-height:1.5;color:var(--muted)}
.co-mkt em.opt{font-style:normal;color:var(--muted);font-weight:600}
.gate-opt.invalid{border-color:#D14343;background:#FFF6F6}
.wo-sms-fine{display:block;margin-top:8px;font-size:11.5px;line-height:1.5;color:var(--muted)}
.wo-sms-fine[hidden]{display:none}
.wo-sms-fine a{color:var(--g-700);font-weight:700;text-decoration:underline}

/* ---------- Legal pages ---------- */
.legal-sec{padding-top:48px}
.legal-layout{display:grid;grid-template-columns:250px minmax(0,1fr);gap:48px;align-items:start}
.legal-toc{position:sticky;top:110px;display:grid;gap:2px;max-height:calc(100vh - 140px);overflow-y:auto}
.legal-toc h4{font-family:var(--mono);font-size:11px;font-weight:500;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);margin:0 0 10px 12px}
.legal-toc a{padding:8px 12px;border-radius:10px;font-size:14px;font-weight:600;color:var(--ink-2);border-left:2px solid transparent}
.legal-toc a:hover{background:var(--tint)}
.legal-toc a.active{color:var(--g-700);background:var(--tint);border-left-color:var(--g-600)}
.legal-toc a.is-new::after{content:"New";margin-left:6px;font-size:10px;font-weight:800;padding:2px 6px;border-radius:99px;background:var(--g-600);color:#fff;vertical-align:1px}
.legal-doc{max-width:760px;font-size:16px;line-height:1.75;color:var(--ink-2)}
.legal-doc h2{font-size:clamp(24px,2.6vw,30px);letter-spacing:-.03em;line-height:1.15;color:var(--ink);margin:40px 0 12px;scroll-margin-top:110px}
.legal-doc p{margin-bottom:12px}
.legal-doc ul{margin:4px 0 14px 20px;display:grid;gap:6px}
.legal-doc a{color:var(--g-700);font-weight:700;text-decoration:underline;text-underline-offset:2px}
.legal-doc strong{color:var(--ink)}
.legal-date{font-family:var(--mono);font-size:13px;color:var(--muted)}
.legal-new{position:relative;margin:36px 0 8px;padding:6px 26px 16px;border-radius:22px;border:1.5px solid var(--g-300);background:linear-gradient(170deg,#fff 0%,var(--tint) 100%)}
.legal-new h2{margin-top:14px}
.legal-flag{position:absolute;top:-12px;left:22px;padding:3px 12px;border-radius:99px;background:var(--grad);color:#fff;font-size:11px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}
.legal-added{padding-left:12px;border-left:3px solid var(--g-500)}
@media (max-width:900px){
  .legal-layout{grid-template-columns:1fr;gap:20px}
  .legal-toc{position:static;max-height:none;display:flex;overflow-x:auto;scrollbar-width:none;gap:6px}
  .legal-toc h4{display:none}
  .legal-toc a{white-space:nowrap;border:1px solid var(--line);border-radius:999px;border-left-width:1px}
  .legal-new{padding:4px 16px 12px}
}

/* ---------- Account portal ---------- */
.acct{background:var(--tint);min-height:60vh}
.acct-auth{padding:48px 16px 80px}
.acct-auth[hidden],.acct-app[hidden]{display:none}
.auth-card{max-width:520px;margin:0 auto;background:#fff;border:1px solid var(--line);border-radius:30px;overflow:hidden;box-shadow:0 40px 80px -46px rgba(12,53,37,.5)}
.auth-top{position:relative;overflow:hidden;padding:32px 30px 28px;color:#fff;background:radial-gradient(120% 160% at 90% 0%,#1E6A4A 0%,#0C3525 55%,#07241A 100%)}
.auth-top>*:not(.mol){position:relative}
.auth-top .mol{opacity:.6}
.auth-top .eyebrow{color:var(--g-300)}
.auth-top h1{font-size:clamp(32px,5vw,42px);letter-spacing:-.04em;margin:12px 0 10px}
.auth-top p{color:#BFD6CA;font-size:15px;max-width:400px}
.auth-tabs{display:grid;grid-template-columns:1fr 1fr;padding:6px;margin:20px 26px 0;background:var(--tint);border-radius:999px;border:1px solid var(--line)}
.auth-tabs[hidden]{display:none}
.auth-tabs button{height:44px;border-radius:999px;font-weight:800;font-size:14.5px;color:var(--ink-2)}
.auth-tabs button[aria-selected=true]{background:#fff;color:var(--g-700);box-shadow:0 6px 16px -10px rgba(12,53,37,.5)}
.auth-body{padding:22px 26px 28px}
.auth-body[hidden]{display:none}
.auth-row{display:flex;justify-content:space-between;align-items:center;gap:12px;margin:4px 0 6px;font-size:14px}
.auth-row a,.auth-back,.auth-fine a{color:var(--g-700);font-weight:700;text-decoration:underline;text-underline-offset:3px}
.auth-btn{width:100%;height:54px;margin-top:10px}
.auth-fine{font-size:12.5px;color:var(--muted);text-align:center;margin-top:14px}
.auth-lead{color:var(--ink-2);margin-bottom:18px;font-size:15px}
.auth-done{margin-top:14px;padding:14px 16px;border-radius:14px;background:var(--tint);color:var(--g-700);font-weight:700;font-size:14px}
.auth-done[hidden]{display:none}
.auth-back{display:inline-block;margin-top:16px;font-size:14px}
.auth-body .co-check{margin-top:8px;font-size:14px}
.pw-meter{height:6px;border-radius:99px;background:var(--line);margin-top:8px;overflow:hidden}
.pw-meter i{display:block;height:100%;width:0;border-radius:99px;transition:width .25s,background .25s}
.pw-meter[data-s="1"] i{width:25%;background:#D14343}.pw-meter[data-s="2"] i{width:50%;background:#E0A030}.pw-meter[data-s="3"] i{width:75%;background:#3A9A6E}.pw-meter[data-s="4"] i{width:100%;background:#1B6446}
.pw-hint{font-size:12.5px;color:var(--muted)}
.acct-app{padding:36px 0 80px}
.acct-grid{display:grid;grid-template-columns:260px minmax(0,1fr);gap:28px;align-items:start}
.acct-grid>*{min-width:0}
.acct-side{position:sticky;top:110px;background:#fff;border:1px solid var(--line);border-radius:24px;padding:14px}
.acct-me{display:flex;align-items:center;gap:12px;padding:8px 8px 16px;border-bottom:1px solid var(--line);margin-bottom:8px}
.acct-me b{display:block;font-size:15.5px}
.acct-me small{display:block;font-size:12.5px;color:var(--muted);word-break:break-all}
.acct-av{flex-shrink:0;width:44px;height:44px;border-radius:50%;background:var(--grad);color:#fff;display:grid;place-items:center;font-weight:900;font-size:18px}
.acct-nav{display:grid;gap:2px}
.acct-nav a{padding:12px 14px;border-radius:14px;font-weight:700;font-size:15px;color:var(--ink-2)}
.acct-nav a:hover{background:var(--tint)}
.acct-nav a.active{background:var(--g-900);color:#fff}
.acct-nav .acct-out{color:#B42323}
.acct-head{margin-bottom:20px}
.acct-head h1{font-size:clamp(32px,4vw,46px);margin:10px 0 8px}
.acct-head p{color:var(--ink-2);max-width:620px}
.acct-card{background:#fff;border:1px solid var(--line);border-radius:24px;padding:24px;margin-bottom:14px}
.acct-card[hidden]{display:none}
.ac-h{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px}
.ac-h h2{font-size:21px;letter-spacing:-.03em}
.acct-sample{font-size:12.5px;color:var(--muted);font-style:italic;margin-top:10px}
.acct-back{display:inline-block;margin-bottom:12px;font-weight:700;color:var(--g-700)}
.acct-help{font-size:14px;color:var(--ink-2)}
.acct-help a{color:var(--g-700);font-weight:700}
.dash-cards{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:12px;margin-bottom:14px}
.dash-card{display:flex;flex-direction:column;gap:4px;padding:20px;border-radius:22px;background:#fff;border:1px solid var(--line);transition:transform .2s,box-shadow .2s}
.dash-card:hover{transform:translateY(-2px);box-shadow:0 20px 36px -26px rgba(12,53,37,.45)}
.dash-card b{font-size:17px}
.dash-card small{color:var(--muted);font-size:13px}
.dash-hero{background:radial-gradient(120% 160% at 90% 0%,#1E6A4A 0%,#0C3525 60%);color:#fff;border:0}
.dash-hero .eyebrow{color:var(--g-300)}
.dash-hero b{font-size:24px;font-family:var(--mono);letter-spacing:.02em}
.dash-hero small{color:#BFD6CA}
.dash-hero em{font-style:normal;font-weight:800;margin-top:6px;color:#fff}
.dash-hero .status{align-self:flex-start}
.dc-ic{width:40px;height:40px;border-radius:12px;background:var(--tint-2);color:var(--g-700);display:grid;place-items:center;margin-bottom:8px}
.dc-ic svg{width:19px;height:19px}
.status.st-ship{background:#E3EEFB;color:#1F5AA6}
.status.st-done{background:var(--tint-2);color:var(--g-700)}
.status.st-proc{background:#FBF3DF;color:#8A6412}
.status.st-off{background:#F4E4E4;color:#9A2B2B}
.again{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.again-item{display:flex;flex-direction:column;gap:4px;padding:12px;border:1px solid var(--line);border-radius:18px}
.again-item img{border-radius:12px;aspect-ratio:1/1;object-fit:cover;background:#EDEDEB;margin-bottom:6px}
.again-item b{font-size:15px}
.again-item small{color:var(--muted);font-size:12.5px;margin-bottom:8px}
.again-item .btn{margin-top:auto}
.order-list{display:grid;gap:10px}
.order-row{display:grid;grid-template-columns:auto 1fr auto auto auto;align-items:center;gap:16px;padding:16px 18px;background:#fff;border:1px solid var(--line);border-radius:20px;transition:border-color .15s,box-shadow .15s}
.order-row:hover{border-color:var(--g-300);box-shadow:0 16px 30px -24px rgba(12,53,37,.45)}
.or-imgs{display:flex}
.or-imgs img{width:48px;height:48px;border-radius:12px;object-fit:cover;background:#EDEDEB;border:2px solid #fff}
.or-imgs img+img{margin-left:-14px}
.or-main b{display:block;font-family:var(--mono);font-size:15px}
.or-main small{color:var(--muted);font-size:13px}
.or-total{font-size:16px}
.or-go{font-size:22px;color:var(--muted)}
.track{display:grid;grid-template-columns:repeat(3,1fr);margin:4px 0 20px;position:relative}
.tk{position:relative;display:flex;flex-direction:column;align-items:center;gap:8px;font-size:13px;font-weight:700;color:var(--muted)}
.tk::before{content:"";position:absolute;top:10px;left:-50%;right:50%;height:3px;background:var(--line)}
.tk:first-child::before{display:none}
.tk.on::before{background:var(--g-600)}
.tk i{position:relative;width:22px;height:22px;border-radius:50%;background:#fff;border:3px solid var(--line)}
.tk.on i{background:var(--g-600);border-color:var(--g-600)}
.tk.on{color:var(--g-700)}
.track-meta{display:flex;flex-wrap:wrap;align-items:center;gap:14px 28px;padding-top:16px;border-top:1px solid var(--line)}
.track-meta small{display:block;font-size:12px;color:var(--muted)}
.track-meta b{font-size:15px}
.track-meta .btn{margin-left:auto}
.mono-b{font-family:var(--mono);font-size:14px!important;letter-spacing:.02em}
.oi{display:grid;grid-template-columns:60px 1fr auto;gap:14px;align-items:center;padding:12px 0;border-bottom:1px solid var(--line)}
.oi img{width:60px;height:60px;border-radius:14px;object-fit:cover;background:#EDEDEB}
.oi small{display:block;color:var(--muted);font-size:12.5px}
.oi-coa{font-size:13px;font-weight:700;color:var(--g-700);text-decoration:underline;text-underline-offset:2px}
.addr{line-height:1.7;color:var(--ink-2)}
.sub-top{display:grid;grid-template-columns:60px 1fr auto;gap:14px;align-items:center;margin-bottom:16px}
.sub-top img{width:60px;height:60px;border-radius:14px;object-fit:cover;background:#EDEDEB}
.sub-top b{display:block;font-size:16px}
.sub-top small{color:var(--muted);font-size:13px}
.sub-acts{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}
.sub-cancel{color:#B42323}
.det-h{font-size:18px;letter-spacing:-.02em;margin:22px 0 12px;padding-top:18px;border-top:1px solid var(--line)}
@media (max-width:900px){
  .acct-grid{grid-template-columns:1fr;gap:16px}
  .acct-side{position:static;padding:12px}
  .acct-nav{display:flex;overflow-x:auto;scrollbar-width:none;gap:6px;margin:0 -4px;padding:2px 4px}
  .acct-nav a{white-space:nowrap;padding:10px 16px;border:1px solid var(--line);border-radius:999px;font-size:14px}
  .dash-cards{grid-template-columns:1fr 1fr}
  .dash-hero{grid-column:1/-1}
  .again{grid-template-columns:1fr 1fr}
}
@media (max-width:600px){
  .acct-auth{padding:20px 12px 56px}
  .auth-top{padding:24px 20px 22px}
  .auth-tabs{margin:16px 16px 0}
  .auth-body{padding:18px 16px 22px}
  .acct-app{padding:16px 0 56px}
  .acct-card{padding:18px 16px;border-radius:20px}
  .order-row{grid-template-columns:auto 1fr auto;gap:10px 12px;padding:14px}
  .order-row .status{grid-column:2;justify-self:start}
  .order-row .or-total{grid-column:3;grid-row:1}
  .order-row .or-go{display:none}
  .track-meta .btn{margin-left:0;width:100%}
  .sub-top{grid-template-columns:52px 1fr}
  .sub-top .status{grid-column:1/-1;justify-self:start}
  .sub-acts .btn{flex:1}
}

/* ---------- Researcher verification gate ---------- */
body.gate-open,body.wo-open{overflow:hidden}
.gate{position:fixed;inset:0;z-index:200;display:grid;place-items:center;padding:20px;background:rgba(5,20,14,.62);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);transition:opacity .35s}
.gate.leaving{opacity:0}
.gate-card{width:min(520px,100%);max-height:calc(100dvh - 40px);overflow-y:auto;border-radius:30px;background:#fff;box-shadow:0 50px 100px -30px rgba(0,0,0,.6);animation:pop-in .45s cubic-bezier(.2,.8,.2,1)}
@keyframes pop-in{from{opacity:0;transform:translateY(18px) scale(.98)}to{opacity:1;transform:none}}
.gate-top{position:relative;overflow:hidden;padding:30px 30px 28px;color:#fff;background:radial-gradient(120% 160% at 90% 0%,#1E6A4A 0%,#0C3525 55%,#07241A 100%)}
.gate-top .mol{opacity:.6}
.gate-top>*:not(.mol){position:relative}
.gate-logo{display:flex;align-items:center;justify-content:center;gap:8px;padding:16px 20px;background:#fff;border-bottom:1px solid var(--line)}
.gate-logo img{height:44px;width:auto}
.gate-logo .mb-logo-text{font-size:1rem}
.gate-logo .mb-logo-text .p{color:#0F2E26}.gate-logo .mb-logo-text .s{color:#2E7D5B}
.gate-top h2{font-size:clamp(30px,5vw,38px);letter-spacing:-.04em;margin-bottom:10px}
.gate-top p{color:#BFD6CA;font-size:15px;line-height:1.55;max-width:420px}
.gate-body{padding:24px 30px 28px}
.gate-opt{position:relative;display:flex;gap:14px;align-items:flex-start;padding:16px 18px;border:1.5px solid var(--line);border-radius:18px;cursor:pointer;font-size:15px;line-height:1.5;color:var(--ink);transition:border-color .15s,background .15s}
.gate-opt+.gate-opt{margin-top:10px}
.gate-opt:hover{border-color:var(--g-300)}
.gate-opt input{position:absolute;opacity:0;pointer-events:none}
.gate-box{flex-shrink:0;width:24px;height:24px;border-radius:8px;border:2px solid var(--g-300);background:#fff;display:grid;place-items:center;margin-top:1px;transition:all .15s}
.gate-opt:has(input:checked){border-color:var(--g-600);background:var(--tint)}
.gate-opt input:checked+.gate-box{background:var(--g-600);border-color:var(--g-600)}
.gate-opt input:checked+.gate-box::after{content:"✓";color:#fff;font-size:14px;font-weight:900}
.gate-opt input:focus-visible+.gate-box{box-shadow:0 0 0 4px rgba(46,125,91,.25)}
.gate-enter{width:100%;height:56px;margin-top:18px;font-size:16px}
.gate-enter:disabled{opacity:.4;box-shadow:none;cursor:not-allowed}
.gate-fine{font-size:12.5px;color:var(--muted);text-align:center;margin-top:14px;line-height:1.5}
.gate-fine a{color:var(--g-700);font-weight:700;text-decoration:underline;text-underline-offset:2px}

/* ---------- Welcome offer ---------- */
.wo{position:fixed;inset:0;z-index:180;display:grid;place-items:center;padding:20px;visibility:hidden}
.wo[aria-hidden=false]{visibility:visible}
.wo-scrim{position:absolute;inset:0;background:rgba(5,20,14,.55);backdrop-filter:blur(6px);opacity:0;transition:opacity .3s}
.wo[aria-hidden=false] .wo-scrim{opacity:1}
.wo-card{position:relative;width:min(860px,100%);max-height:calc(100dvh - 40px);overflow-y:auto;display:grid;grid-template-columns:.9fr 1.1fr;border-radius:30px;background:#fff;box-shadow:0 50px 100px -30px rgba(0,0,0,.6);opacity:0;transform:translateY(20px) scale(.98);transition:opacity .35s,transform .35s cubic-bezier(.2,.8,.2,1)}
.wo[aria-hidden=false] .wo-card{opacity:1;transform:none}
.wo-x{position:absolute;top:14px;right:14px;z-index:3;width:40px;height:40px;border-radius:50%;background:rgba(255,255,255,.92);border:1px solid var(--line);font-size:24px;line-height:1;color:var(--ink-2);display:grid;place-items:center}
.wo-x:hover{background:#fff;color:var(--ink)}
.wo-art{position:relative;overflow:hidden;min-height:100%;background:radial-gradient(120% 140% at 80% 10%,#1E6A4A 0%,#0C3525 55%,#07241A 100%)}

.wo-art::after{content:"";position:absolute;inset:0;background:radial-gradient(60% 50% at 50% 50%,rgba(7,36,26,.55) 0%,rgba(7,36,26,0) 100%)}
.wo-art .mol{opacity:.85;-webkit-mask-image:none;mask-image:none}
.wo-badge{position:absolute;inset:0;z-index:2;display:flex;flex-direction:column;align-items:center;justify-content:center;color:#fff;line-height:.82;text-align:center}
.wo-badge b{display:block;font-size:clamp(88px,11vw,124px);font-weight:900;letter-spacing:-.06em;background:linear-gradient(100deg,#fff,#BFE9D2);-webkit-background-clip:text;background-clip:text;color:transparent}
.wo-badge span{font-size:clamp(40px,5vw,56px);font-weight:900;letter-spacing:.04em;text-transform:uppercase;-webkit-text-stroke:1.2px rgba(191,233,210,.8);color:transparent}
.wo-body{padding:38px 36px 32px}
.wo-body[hidden]{display:none}
.wo-body h2{font-size:clamp(28px,3.4vw,38px);letter-spacing:-.04em;line-height:1.02;margin:12px 0 10px}
.wo-sub{color:var(--ink-2);font-size:15px;margin-bottom:20px}
.wo-body .field{margin-bottom:12px}
.wo-body .field input{height:48px}
.wo-body .field input.invalid{border-color:#D14343;background:#FFF6F6}
.wo-body .co-check{font-size:13px;margin-top:4px}
.wo-cta{width:100%;height:54px;margin-top:16px}
.wo-fine{font-size:12px;color:var(--muted);text-align:center;margin-top:12px}
.wo-done{display:flex;flex-direction:column;justify-content:center;text-align:center}
.wo-check{width:56px;height:56px;border-radius:50%;background:var(--grad);color:#fff;display:grid;place-items:center;font-size:24px;font-weight:900;margin:0 auto 6px;box-shadow:0 14px 28px -12px rgba(30,110,75,.7)}
.wo-code{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;padding:16px 18px;border-radius:18px;border:2px dashed var(--g-500);background:var(--tint)}
.wo-code b{font-family:var(--mono);font-size:clamp(17px,4.6vw,24px);letter-spacing:.08em;color:var(--g-700);word-break:break-all;text-align:left}
.wo-sent{font-size:13.5px;color:var(--muted);margin-top:12px}
.wo-cta:disabled{opacity:.7;pointer-events:none}
.wo-code span{font-weight:800;font-size:13px;color:#fff;background:var(--g-700);padding:8px 14px;border-radius:999px}
@media (max-width:760px){
  .gate{place-items:end center;padding:0}
  .gate-card{width:100%;border-radius:28px 28px 0 0;max-height:94dvh;animation:sheet-up .45s cubic-bezier(.2,.8,.2,1)}
  @keyframes sheet-up{from{transform:translateY(100%)}to{transform:none}}
  .gate-top{padding:24px 20px 22px}
  .gate-body{padding:18px 16px calc(20px + env(safe-area-inset-bottom))}
  .gate-opt{padding:14px;font-size:14.5px}
  .wo{place-items:end center;padding:0}
  .wo-card{grid-template-columns:1fr;width:100%;border-radius:28px 28px 0 0;max-height:94dvh;transform:translateY(100%)}
  .wo-art{min-height:170px;height:170px}

  .wo-badge b{font-size:78px}
  .wo-badge span{font-size:34px}
  .wo-body{padding:22px 18px calc(22px + env(safe-area-inset-bottom))}
  .wo-body h2{font-size:28px}
}

/* ---------- Cart drawer ---------- */
.cart-scrim,.search-scrim{position:fixed;inset:0;z-index:90;background:rgba(7,26,19,.45);backdrop-filter:blur(3px);opacity:0;pointer-events:none;transition:opacity .3s}
body.cart-open .cart-scrim,body.search-open .search-scrim{opacity:1;pointer-events:auto}
body.cart-open,body.search-open{overflow:hidden}
/* The exclusions are essential. WooCommerce reuses the class "cart" on markup
   that has nothing to do with this drawer:
     <form class="variations_form cart">          -> the product size picker
     <table class="shop_table ... cart ...">      -> the cart page's line items
   A bare `.cart` turned the size picker into an invisible off-screen drawer;
   without :not(table) the cart page's table became a fixed 1009px panel parked
   off the right edge of the viewport, leaving the page looking empty. */
.cart:not(form):not(table){position:fixed;top:0;right:0;bottom:0;z-index:95;width:min(440px,100%);background:#fff;display:flex;flex-direction:column;transform:translateX(100%);transition:transform .35s cubic-bezier(.2,.8,.2,1);box-shadow:-30px 0 60px -30px rgba(7,26,19,.5)}
body.cart-open .cart:not(form):not(table){transform:none}
.cart-head{display:flex;align-items:center;justify-content:space-between;padding:20px 22px;border-bottom:1px solid var(--line)}
.cart-head h2{font-size:24px;letter-spacing:-.03em}
.cart-ship{padding:16px 22px;background:var(--tint);border-bottom:1px solid var(--line)}
.cart-ship p{font-size:14px;color:var(--ink-2);margin-bottom:10px}
.cart-ship b{color:var(--g-700)}
.cart-ship .bar{height:8px;border-radius:99px;background:#fff;border:1px solid var(--line);overflow:hidden}
.cart-ship .bar i{display:block;height:100%;background:var(--grad);border-radius:99px;transition:width .4s}
.cart-items{flex:1;overflow-y:auto;padding:6px 22px;-webkit-overflow-scrolling:touch}
.cart-line{display:grid;grid-template-columns:76px 1fr auto;gap:14px;padding:16px 0;border-bottom:1px solid var(--line);align-items:start}
.cl-img{border-radius:14px;overflow:hidden;background:#EDEDEB;aspect-ratio:1/1}
.cl-img img{width:100%;height:100%;object-fit:cover;transform:scale(1.08)}
.cl-name{display:block;font-weight:800;font-size:15.5px;letter-spacing:-.01em;line-height:1.25}
.cl-size{display:block;font-size:12.5px;color:var(--muted);margin:3px 0 10px}
.cl-row{display:flex;align-items:center;gap:12px}
.qty-sm{height:38px}
.qty-sm button{width:36px;font-size:17px}
.qty-sm span{min-width:22px;text-align:center;font-weight:800;font-size:14px}
.cl-remove{font-size:13px;font-weight:700;color:var(--muted);text-decoration:underline;text-underline-offset:3px;padding:8px 0}
.cl-remove:hover{color:var(--ink)}
.cl-price{font-size:15.5px;font-weight:900;letter-spacing:-.02em;color:var(--g-700);white-space:nowrap}
.cart-empty{text-align:center;padding:56px 12px}
.cart-empty .ic{width:64px;height:64px;border-radius:20px;background:var(--tint);display:grid;place-items:center;margin:0 auto 18px;color:var(--g-600)}
.cart-empty .ic svg{width:28px;height:28px}
.cart-empty h3{font-size:22px;margin-bottom:8px}
.cart-empty p{color:var(--muted);margin-bottom:22px}
.cart-upsell{display:flex;align-items:center;gap:12px;margin:0 22px 12px;padding:12px;border:1px dashed var(--g-300);border-radius:16px;background:var(--tint)}
.cart-upsell[hidden]{display:none}
.cart-upsell img{width:48px;height:48px;border-radius:10px;object-fit:cover;background:#EDEDEB}
.cart-upsell div{flex:1;font-size:13px;line-height:1.35}
.cart-upsell strong{display:block;font-size:14px}
.cart-upsell span{color:var(--muted)}
.cart-foot{padding:16px 22px calc(18px + env(safe-area-inset-bottom));border-top:1px solid var(--line);background:#fff}
.cart-foot[hidden]{display:none}
.cart-sub{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:4px}
.cart-sub span{font-weight:800}
.cart-sub b{font-size:24px;font-weight:900;letter-spacing:-.03em}
.cart-note{font-size:12.5px;color:var(--muted);margin-bottom:14px}
.cart-continue{display:block;width:100%;margin-top:10px;padding:12px;font-weight:800;font-size:14px;color:var(--ink-2)}
.cart-continue:hover{color:var(--g-700)}

/* ---------- Search panel ---------- */
.search-panel{position:fixed;top:0;left:0;right:0;z-index:95;background:#fff;box-shadow:0 30px 60px -30px rgba(7,26,19,.5);transform:translateY(-105%);transition:transform .35s cubic-bezier(.2,.8,.2,1);max-height:88vh;overflow-y:auto;border-radius:0 0 28px 28px}
body.search-open .search-panel{transform:none}
.sp-inner{max-width:860px;margin:0 auto;padding:22px 28px 30px}
.sp-field{display:flex;align-items:center;gap:12px;height:60px;padding:0 10px 0 20px;border-radius:999px;border:1.5px solid var(--g-300);background:var(--tint)}
.sp-field:focus-within{border-color:var(--g-600);background:#fff;box-shadow:0 0 0 4px rgba(46,125,91,.12)}
.sp-field svg{width:20px;height:20px;color:var(--g-600);flex-shrink:0}
.sp-field input{flex:1;min-width:0;border:0;outline:0;background:none;font-size:17px;font-weight:600}
.sp-field input::-webkit-search-cancel-button{display:none}
.sp-cancel{padding:10px 14px;font-weight:800;font-size:14px;color:var(--ink-2);border-radius:999px}
.sp-cancel:hover{background:var(--tint-2)}
.sp-body{padding-top:22px}
.sp-group+.sp-group{margin-top:22px}
.sp-group h4{font-family:var(--mono);font-size:11px;font-weight:500;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);margin-bottom:12px}
.sp-chips{display:flex;flex-wrap:wrap;gap:8px}
.sp-chips a{height:40px;padding:0 16px;border-radius:999px;border:1px solid var(--line);display:inline-flex;align-items:center;font-weight:700;font-size:14px;color:var(--ink-2)}
.sp-chips a:hover{border-color:var(--g-300);background:var(--tint)}
.sp-results{display:grid;gap:4px}
.sp-hit{display:flex;align-items:center;gap:14px;padding:10px;border-radius:16px;transition:background .15s}
.sp-hit:hover,.sp-hit:focus{background:var(--tint);outline:0}
.sp-hit img{width:56px;height:56px;border-radius:12px;object-fit:cover;background:#EDEDEB;flex-shrink:0}
.sp-txt{flex:1;min-width:0}
.sp-txt b{display:block;font-size:15.5px;letter-spacing:-.01em}
.sp-txt small{display:block;font-size:12.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sp-price{font-weight:900;font-size:15px;color:var(--g-700);white-space:nowrap}
.sp-all{display:inline-block;margin-top:14px;font-weight:800;color:var(--g-700)}
.sp-all:hover{text-decoration:underline}
.sp-none{text-align:center;padding:26px 0 8px}
.sp-none h3{font-size:22px;margin-bottom:6px}
.sp-none p{color:var(--muted);margin-bottom:18px}
@media (max-width:760px){
  .search-panel{max-height:100dvh;height:100dvh;border-radius:0}
  .sp-inner{padding:14px 14px calc(24px + env(safe-area-inset-bottom))}
  .sp-field{height:54px;padding-left:16px}
  .sp-hit img{width:52px;height:52px}
  .cart-head{padding:16px 18px}
  .cart-ship,.cart-items{padding-left:18px;padding-right:18px}
  .cart-upsell{margin:0 18px 12px}
  .cart-foot{padding-left:18px;padding-right:18px}
}

/* Inputs at 16px on phones so iOS doesn't zoom on focus */
@media (max-width:820px){ input,select,textarea{font-size:16px!important} }

/* ---------- 6. Theme guard ----------
   Storefront + the child theme load their own base styles on this page. These
   body-scoped rules restate the v3 base so the theme cannot win on a tie, and
   so text inside the theme's own white cards (verification gate, welcome
   popup, cart drawer) stays dark instead of inheriting white. */
body.monarch-v3{color:var(--ink);background:var(--white);font:400 16px/1.55 var(--sans)}
body.monarch-v3 h1,body.monarch-v3 h2,body.monarch-v3 h3{font-weight:900;letter-spacing:-.045em;line-height:.98;color:inherit}
/* Storefront sets links to 300, so a linked product name never inherited the
   heading's weight and rendered light inside a bold h3. */
body.monarch-v3 h1 a,body.monarch-v3 h2 a,body.monarch-v3 h3 a{font-weight:inherit}

/* The child theme prints an inline <style id="monarch-mobile-navigation-and-hero">
   that forces the system font with !important on body, every heading and every
   button. It is printed directly in wp_head rather than enqueued, so the plugin
   cannot dequeue it — these rules out-specify it (body.monarch-v3 + !important)
   to restore the Inter / IBM Plex Mono typography the redesign is built on. */
body.monarch-v3,
body.monarch-v3 input,body.monarch-v3 select,body.monarch-v3 textarea,
body.monarch-v3 button,body.monarch-v3 .button,body.monarch-v3 .btn,
body.monarch-v3 h1,body.monarch-v3 h2,body.monarch-v3 h3,
body.monarch-v3 h4,body.monarch-v3 h5,body.monarch-v3 h6{font-family:var(--sans)!important}
body.monarch-v3 h1,body.monarch-v3 h2,body.monarch-v3 h3{font-weight:900}
body.monarch-v3 .btn,body.monarch-v3 button.btn{font-weight:800}
body.monarch-v3 .mb-logo-text,body.monarch-v3 .logo-text{font-family:Montserrat,sans-serif!important}
body.monarch-v3 .eyebrow,body.monarch-v3 .pc .cat,body.monarch-v3 .buy .cat,
body.monarch-v3 .buy .sku,body.monarch-v3 .hx-stats span,body.monarch-v3 .pills button .n,
body.monarch-v3 footer h4,body.monarch-v3 .coa .t,body.monarch-v3 .spec td,
body.monarch-v3 .mono-b,body.monarch-v3 .wo-code b{font-family:var(--mono)!important}
/* The ticker and the recreated header intentionally use the system stack. */
body.monarch-v3 .mb-ticker,body.monarch-v3 .mb-ticker-track span,
body.monarch-v3 .mb-header,body.monarch-v3 .mb-stats-band{font-family:var(--sys)!important}
/* No blanket anchor rule here. A `body.monarch-v3 a` (or the :not() variant)
   out-specifies every component rule that colours a link — buttons, the active
   nav pill — and silently overrides them. v3.css already loads last, so the
   base `a{color:inherit}` wins on its own; anything that needs a specific
   colour states it on its own component below. */
/* The theme indents every <ul> (~44–48px). Ours are nav rows, chip rows and
   footer link columns, which must line up with the heading above them. */
body.monarch-v3 .nav-links,
body.monarch-v3 footer.site ul,
body.monarch-v3 .fc-chips,
body.monarch-v3 .pc .sizes{margin-left:0;padding-left:0;list-style:none}
body.monarch-v3 .nav-links a{color:var(--ink)}
body.monarch-v3 .nav-links a[aria-current=page]{color:#fff}
body.monarch-v3 .age-gate__card,body.monarch-v3 .monarch-welcome-offer__card,body.monarch-v3 .monarch-cart-drawer{color:var(--ink)}

/* The verification gate and welcome offer keep the theme's own styling by
   choice — a v3-styled version was built and rejected. Only the colour rule
   above applies to them. */
/* Only the hero is a dark surface; .statement and .final-cta are light sections
   whose own rules colour the dark bands inside them. */
body.monarch-v3 .hx,body.monarch-v3 .hx h1{color:#fff}
/* ---------- Footer newsletter ----------
   The theme styles footer <form> elements as a white rounded pill laid out in a
   row, which turned this into a white circle with the fine print beside the
   input. Reset the form itself and keep the flex row on .news-row. */
body.monarch-v3 .news-form{display:block;background:none;border:0;border-radius:0;padding:0;box-shadow:none;max-width:none}
body.monarch-v3 .news-fine{display:block;width:auto;float:none}
.news-form{margin-top:14px}
.news-row{display:flex;gap:8px;flex-wrap:wrap}
.news-row input{flex:1 1 170px;min-width:0;height:44px;padding:0 14px;border:1px solid var(--line);border-radius:999px;background:#fff;color:var(--ink);font-size:14px}
.news-row input:focus{outline:2px solid var(--g-300);outline-offset:1px}
.news-row .btn{flex:0 0 auto;height:44px}
.news-hp{position:absolute!important;left:-9999px!important;width:1px;height:1px;overflow:hidden}
.news-fine{margin-top:10px;font-size:11.5px;line-height:1.45;color:var(--muted)}
.news-msg:empty{display:none}
.news-msg{margin-top:8px;font-size:13px;font-weight:700;color:var(--g-700)}
.news-form.is-done .news-row,.news-form.is-done .news-fine{display:none}
@media(max-width:520px){.news-row .btn{flex:1 1 100%}}
/* ---------- Shop page header ----------
   Same dark molecule band as the homepage sections, so the shop does not open
   on a bare white page. The h1 swaps to the selected category. */
.shop-top{padding:26px 0 10px}
.shop-top .band{padding:72px 56px}
/* `.band .inner` is more specific than a bare `.shop-inner`, so this must be
   scoped the same way — otherwise the hero stays 640px and the trust chips
   wrap, leaving one orphan chip on its own line. */
.band .shop-inner{max-width:880px}
.shop-top h1{font-size:clamp(34px,5.2vw,70px);line-height:.92;letter-spacing:-.05em;margin:18px 0 18px;text-transform:uppercase;color:#fff}
.shop-sub{max-width:620px;font-size:17px;line-height:1.6;color:#BFD6CA}
/* ---------- Sticky ticker + header ----------
   .nav-shell was already sticky, but the ticker above it scrolled away, so the
   bar appeared to jump as you scrolled. Both stick now: the ticker at the very
   top and the header directly beneath it, offset by the ticker's 40px. The
   ticker keeps the higher z-index so the header's shadow falls under it. */
body.monarch-v3 .mb-ticker{position:sticky;top:0;z-index:75}
body.monarch-v3 .nav-shell{top:40px;z-index:70}
/* NOTE: html/body carry overflow-x:hidden, which makes them a scrolling
   ancestor and stops position:sticky pinning these bars. Swapping that for
   overflow-x:clip was tried and reverted — it let 574px of horizontal overflow
   through and still didn't restore sticky. Left alone deliberately; the bars
   scroll with the page. */

/* ---------- Promise cards ----------
   The icon now sits inside the <h3> (see front-page.php) so it reads inline in
   front of "Sourced" / "Shipping" rather than floating above the heading. Card
   text is centred; the checklist is centred as a block but keeps its items
   left-aligned, otherwise the tick marks stagger and get hard to scan. */
body.monarch-v3 .pr-card{text-align:center}
body.monarch-v3 .pr-card h3{display:flex;align-items:center;justify-content:center;gap:12px;flex-wrap:wrap}
body.monarch-v3 .pr-card .pr-ic{flex:0 0 auto;margin:0}
body.monarch-v3 .pr-card ul{width:fit-content;max-width:100%;margin-left:auto;margin-right:auto;text-align:left}

/* Match the other page headers: solid line above an outlined one. */
body.monarch-v3 .shop-inner h1 .solid,
body.monarch-v3 .shop-inner h1 .outline{display:block}
body.monarch-v3 .shop-inner h1 .outline{color:transparent;-webkit-text-fill-color:transparent;-webkit-text-stroke:1.6px rgba(191,233,210,.75)}
.shop-top .fc-chips{margin-top:24px}
@media(max-width:760px){
  .shop-top{padding:14px 0 4px}
  .shop-top .band{padding:40px 24px;border-radius:26px}
  .shop-sub{font-size:15.5px}
  /* Two even columns beats 3+1 with an orphan on the second row. */
  .shop-top .fc-chips{display:grid;grid-template-columns:1fr 1fr}
}
/* Shop page: tighten the gap before the product grid and after it. */
.shop-top + .sec{padding-top:44px}
.shop-close{padding:8px 0 72px}
/* ---------- Product page (WooCommerce markup, v3 styling) ----------
   The child theme renders .monarch-pdp and WooCommerce renders the variation
   form. We restyle both rather than replacing them, so add-to-cart keeps
   working exactly as it does today. */
body.monarch-v3 .monarch-pdp{padding:34px 0 0}
body.monarch-v3 .monarch-pdp .container{max-width:var(--max);margin:0 auto;padding:0 28px}
body.monarch-v3 .monarch-pdp__crumbs{font-family:var(--mono);font-size:11.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin-bottom:22px}
body.monarch-v3 .monarch-pdp__crumbs a{color:var(--g-600)}
body.monarch-v3 .monarch-pdp__grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:56px;align-items:start}
body.monarch-v3 .monarch-pdp__grid > *{min-width:0}

body.monarch-v3 .monarch-pdp__image{position:relative;border-radius:var(--r-lg);overflow:hidden;background:var(--tint);border:1px solid var(--line);aspect-ratio:4/5}
body.monarch-v3 .monarch-pdp__image img{width:100%;height:100%;object-fit:cover}
body.monarch-v3 .monarch-pdp__verified{position:absolute;top:16px;left:16px;z-index:2;font-family:var(--mono);font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;background:var(--grad);color:#fff;border-radius:999px;padding:7px 13px}

body.monarch-v3 .monarch-pdp__category{font-family:var(--mono);font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--g-600)}
body.monarch-v3 .monarch-pdp__info h1{font-size:clamp(34px,4.4vw,56px);line-height:.96;letter-spacing:-.045em;margin:12px 0 16px}
body.monarch-v3 .monarch-pdp__summary{font-size:16.5px;line-height:1.6;color:var(--ink-2);margin-bottom:22px}
body.monarch-v3 .monarch-pdp__price{font-size:34px;font-weight:900;letter-spacing:-.04em;color:var(--g-700);margin-bottom:10px}
body.monarch-v3 .monarch-pdp__price del{opacity:.45;font-size:22px;margin-right:8px}
body.monarch-v3 .monarch-pdp__shipping{font-size:14px;color:var(--muted);margin-bottom:18px}
body.monarch-v3 .monarch-pdp__coa-link{display:inline-flex;align-items:center;gap:10px;font-size:14px;font-weight:700;color:var(--g-700);border:1px solid var(--line);background:#fff;border-radius:999px;padding:10px 16px;margin-bottom:24px}
body.monarch-v3 .monarch-pdp__coa-link .badge{font-family:var(--mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;background:var(--tint-2);border-radius:999px;padding:4px 9px}

/* Variation picker */
body.monarch-v3 .variations{width:100%;border:0;margin:0 0 18px}
body.monarch-v3 .variations th,body.monarch-v3 .variations td{border:0;padding:0 0 10px;display:block;text-align:left;background:none}
body.monarch-v3 .variations .label label{font-size:12.5px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--ink)}
body.monarch-v3 .variations select{width:100%;height:54px;padding:0 44px 0 16px;border:1px solid var(--line);border-radius:14px;background:#fff;font-size:15px;font-weight:700;color:var(--ink);appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230A1A12' stroke-width='2'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 14px center;background-size:18px}
body.monarch-v3 .variations select:focus{outline:2px solid var(--g-300);outline-offset:1px}
body.monarch-v3 .reset_variations{font-size:13px;color:var(--muted)}
body.monarch-v3 .single_variation .price{font-size:26px;font-weight:900;color:var(--g-700);letter-spacing:-.03em}
body.monarch-v3 .woocommerce-variation-add-to-cart{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:14px}
body.monarch-v3 form.cart .quantity input[type=number]{height:56px;width:88px;border:1px solid var(--line);border-radius:14px;text-align:center;font-weight:800;font-size:16px;background:#fff;color:var(--ink)}
body.monarch-v3 form.cart .single_add_to_cart_button{flex:1;min-width:190px;height:56px;padding:0 28px;border:0;border-radius:999px;background:var(--grad);color:#fff;font-size:15px;font-weight:800;letter-spacing:-.01em;cursor:pointer;box-shadow:0 14px 30px -12px rgba(30,110,75,.6);transition:transform .15s,opacity .15s}
body.monarch-v3 form.cart .single_add_to_cart_button:hover{transform:translateY(-1px)}
body.monarch-v3 form.cart .single_add_to_cart_button.disabled{opacity:.45;box-shadow:none;cursor:not-allowed}

body.monarch-v3 .monarch-pdp__buy-assurance{margin-top:18px;font-size:14px;color:var(--ink-2)}
body.monarch-v3 .monarch-pdp__trust{display:flex;flex-wrap:wrap;gap:8px;margin-top:18px}
body.monarch-v3 .monarch-pdp__trust span{font-family:var(--mono);font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--g-700);background:var(--tint);border:1px solid var(--line);border-radius:999px;padding:8px 13px}
body.monarch-v3 .monarch-pdp__research-note{margin-top:20px;font-size:12.5px;line-height:1.6;color:var(--muted);border-top:1px solid var(--line);padding-top:16px}

/* Tabs */
body.monarch-v3 .monarch-pdp__tabs{margin:64px 0 0}
body.monarch-v3 .monarch-pdp__tabs h2,body.monarch-v3 .monarch-pdp__tabs h3{font-size:22px;letter-spacing:-.03em;margin-bottom:12px}
body.monarch-v3 .monarch-pdp__tabs p,body.monarch-v3 .monarch-pdp__tabs li{font-size:15.5px;line-height:1.65;color:var(--ink-2)}
body.monarch-v3 .monarch-pdp__tabs table{width:100%;border-collapse:collapse}
body.monarch-v3 .monarch-pdp__tabs td,body.monarch-v3 .monarch-pdp__tabs th{padding:12px 14px;border-bottom:1px solid var(--line);font-size:14.5px;text-align:left}

/* Related products: theme cards restyled to match the v3 grid */
body.monarch-v3 .monarch-related-products{padding:72px 0 20px}
body.monarch-v3 .research-card-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:20px}
body.monarch-v3 .research-card{border:1px solid var(--line);border-radius:var(--r-md);background:#fff;padding:14px;display:flex;flex-direction:column;transition:transform .25s,box-shadow .25s}
body.monarch-v3 .research-card:hover{transform:translateY(-3px);box-shadow:0 24px 40px -26px rgba(12,53,37,.4)}
body.monarch-v3 .research-card__image{position:relative;display:block;border-radius:14px;overflow:hidden;aspect-ratio:4/5;background:#EDEDEB;margin-bottom:14px}
body.monarch-v3 .research-card__image img{width:100%;height:100%;object-fit:cover}
body.monarch-v3 .research-card__verified{position:absolute;top:10px;right:10px;font-family:var(--mono);font-size:9.5px;letter-spacing:.1em;background:var(--grad);color:#fff;border-radius:999px;padding:5px 10px}
body.monarch-v3 .research-card__body h3,body.monarch-v3 .research-card__body h2{font-size:18px;font-weight:900;letter-spacing:-.03em;line-height:1.15;margin:0 0 8px}
body.monarch-v3 .research-card__pills{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 10px;padding-left:0;list-style:none}
body.monarch-v3 .research-card__pills span,body.monarch-v3 .research-card__pills li{font-family:var(--mono);font-size:10.5px;letter-spacing:.06em;background:var(--tint);border:1px solid var(--line);border-radius:999px;padding:5px 9px;color:var(--ink-2)}
body.monarch-v3 .research-card__footer{margin-top:auto;padding-top:12px;border-top:1px solid var(--line);font-weight:900;font-size:19px;color:var(--g-700);letter-spacing:-.03em}

@media(max-width:980px){
  body.monarch-v3 .monarch-pdp__grid{grid-template-columns:minmax(0,1fr);gap:28px}
  body.monarch-v3 .research-card-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:760px){
  body.monarch-v3 .monarch-pdp .container{padding:0 16px}
  body.monarch-v3 .monarch-pdp__tabs{margin-top:40px}
  body.monarch-v3 .monarch-related-products{padding-top:44px}
}

/* Size picker: the theme swaps the native select for .pill-selector buttons
   (the select stays in the DOM, hidden, and still carries the value). */
body.monarch-v3 .pill-selector{display:flex;flex-wrap:wrap;gap:10px;margin:4px 0 4px}
body.monarch-v3 .pill-option{display:inline-flex;align-items:center;justify-content:center;min-width:86px;height:52px;padding:0 20px;border:1.5px solid var(--line);border-radius:14px;background:#fff;color:var(--ink);font-size:15px;font-weight:800;letter-spacing:-.01em;cursor:pointer;transition:border-color .18s,background .18s,transform .12s}
body.monarch-v3 .pill-option:hover{border-color:var(--g-300);transform:translateY(-1px)}
body.monarch-v3 .pill-option[aria-pressed="true"]{border-color:var(--g-600);background:var(--tint);box-shadow:inset 0 0 0 1px var(--g-600)}
body.monarch-v3 .pill-option__label{pointer-events:none}
body.monarch-v3 .variations .label label{font-size:12.5px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--ink);margin-bottom:6px;display:block}

/* Cap the product photo so it does not tower over the buy column. */
body.monarch-v3 .monarch-pdp__image{max-width:520px}
body.monarch-v3 .monarch-pdp__grid{grid-template-columns:minmax(0,.95fr) minmax(0,1.05fr)}

/* No SKUs anywhere on the storefront (WooCommerce prints them in product meta). */
body.monarch-v3 .sku,body.monarch-v3 .sku_wrapper,body.monarch-v3 .product_meta .sku_wrapper,body.monarch-v3 .buy .sku{display:none!important}

/* Whole card is a click target. */
body.monarch-v3 .pc[data-url]{cursor:pointer}

/* ===========================================================================
   Content pages, COA Library, cart, checkout and account.
   These are rendered by the theme/WooCommerce; shell mode supplies the v3
   header and footer and everything below restyles their own markup.
   =========================================================================== */

/* ---------- Shared page shell ---------- */
body.monarch-v3 .content-area,
body.monarch-v3 .site-main{max-width:var(--max);margin:0 auto;padding:0 28px;width:100%}
/* Page header as the molecule band, matching the COA Library design. v3.js
   wraps the existing copy in .inner and injects the <svg class="mol">. */
body.monarch-v3 .page-header{position:relative;overflow:hidden;border-radius:36px;background:radial-gradient(120% 140% at 80% 20%,#1E6A4A 0%,#0C3525 55%,#07241A 100%);color:#fff;padding:68px 56px;max-width:calc(var(--max) - 56px);margin:20px auto 30px;border:0}
body.monarch-v3 .page-header .inner{position:relative;max-width:820px}
body.monarch-v3 .page-header .container{padding:0;max-width:none;margin:0}
body.monarch-v3 .page-header h1,
body.monarch-v3 .page-header .entry-title{color:#fff!important;-webkit-text-fill-color:#fff!important}
body.monarch-v3 .page-header p,body.monarch-v3 .page-header .lead{color:#BFD6CA;max-width:620px}
body.monarch-v3 .page-header .eyebrow{color:var(--g-300)}
/* Titles outside the band (COA Library, legal) stay dark on light. */
body.monarch-v3 .entry-title{color:var(--ink)!important;-webkit-text-fill-color:var(--ink)!important}
body.monarch-v3 .page-header p,body.monarch-v3 .lead{margin-top:6px}
body.monarch-v3 .section > .container > *:first-child{margin-top:0}
body.monarch-v3 .page-header .container,
body.monarch-v3 .section .container,
body.monarch-v3 .coa-library-wrap{max-width:var(--max);margin:0 auto;padding:0 28px}
body.monarch-v3 .page-header h1,
body.monarch-v3 .entry-title{font-size:clamp(34px,5vw,62px);line-height:.98;letter-spacing:-.045em;text-transform:uppercase;margin:12px 0 14px}
body.monarch-v3 .page-header p,
body.monarch-v3 .lead{font-size:17.5px;line-height:1.65;color:var(--ink-2);max-width:760px}
body.monarch-v3 .section{padding:10px 0 56px}
body.monarch-v3 .section h2,body.monarch-v3 .entry-content h2{font-size:clamp(24px,3vw,36px);letter-spacing:-.04em;margin:40px 0 14px}
body.monarch-v3 .section h3,body.monarch-v3 .entry-content h3{font-size:21px;letter-spacing:-.03em;margin:28px 0 10px}
body.monarch-v3 .section p,body.monarch-v3 .entry-content p,
body.monarch-v3 .section li,body.monarch-v3 .entry-content li{font-size:16px;line-height:1.7;color:var(--ink-2);max-width:820px}
body.monarch-v3 .entry-content ul,body.monarch-v3 .section ul{padding-left:20px;margin:12px 0}
body.monarch-v3 .entry-content li,body.monarch-v3 .section li{margin-bottom:8px}
body.monarch-v3 .entry-content a,body.monarch-v3 .section a{color:var(--g-700);text-decoration:underline;text-underline-offset:3px}
body.monarch-v3 .entry-header{padding-top:40px}

/* ---------- COA Library ---------- */
body.monarch-v3 .coa-library-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:18px;margin-top:24px}
body.monarch-v3 .coa-library-card{border:1px solid var(--line);border-radius:var(--r-md);background:#fff;padding:18px;display:flex;flex-direction:column;gap:10px;transition:transform .2s,box-shadow .2s}
body.monarch-v3 .coa-library-card:hover{transform:translateY(-3px);box-shadow:0 22px 38px -26px rgba(12,53,37,.4)}
body.monarch-v3 .coa-library-card h3,body.monarch-v3 .coa-library-card h4{font-size:17px;font-weight:900;letter-spacing:-.02em;margin:0}
body.monarch-v3 .coa-library-card .btn{margin-top:auto}

/* ---------- WooCommerce: cart ---------- */
body.monarch-v3 .woocommerce table.shop_table{border:1px solid var(--line);border-radius:var(--r-md);border-collapse:separate;border-spacing:0;overflow:hidden;background:#fff;width:100%}
body.monarch-v3 .woocommerce table.shop_table th{background:var(--tint);font-family:var(--mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--g-700);padding:14px 16px;text-align:left;border:0}
body.monarch-v3 .woocommerce table.shop_table td{padding:16px;border:0;border-top:1px solid var(--line);vertical-align:middle;font-size:15px}
body.monarch-v3 .woocommerce table.shop_table .product-thumbnail img{width:76px;height:76px;object-fit:cover;border-radius:12px;background:var(--tint)}
body.monarch-v3 .woocommerce table.shop_table .product-name a{font-weight:800;color:var(--ink)}
body.monarch-v3 .woocommerce .product-remove a.remove{display:inline-grid;place-items:center;width:32px;height:32px;border-radius:50%;background:var(--tint);color:var(--ink)!important;font-size:18px;text-decoration:none}
body.monarch-v3 .woocommerce .quantity input[type=number]{height:46px;width:80px;border:1px solid var(--line);border-radius:12px;text-align:center;font-weight:800;background:#fff;color:var(--ink)}
body.monarch-v3 .cart_totals{background:var(--tint);border:1px solid var(--line);border-radius:var(--r-md);padding:22px}
body.monarch-v3 .cart_totals h2{font-size:20px;letter-spacing:-.03em;margin-bottom:12px}
body.monarch-v3 .cart_totals table{width:100%}
body.monarch-v3 .cart_totals th,body.monarch-v3 .cart_totals td{padding:10px 0;border-bottom:1px solid var(--line);font-size:15px;text-align:left}
body.monarch-v3 .cart_totals .order-total td,body.monarch-v3 .cart_totals .order-total th{font-size:19px;font-weight:900;border-bottom:0}
body.monarch-v3 .woocommerce .coupon input[type=text]{height:48px;padding:0 14px;border:1px solid var(--line);border-radius:999px;background:#fff;min-width:0}

/* WooCommerce buttons everywhere */
body.monarch-v3 .woocommerce a.button,
body.monarch-v3 .woocommerce button.button,
body.monarch-v3 .woocommerce input.button,
body.monarch-v3 .woocommerce .checkout-button,
body.monarch-v3 #place_order{display:inline-flex;align-items:center;justify-content:center;height:52px;padding:0 26px;border:0;border-radius:999px;background:var(--grad)!important;color:#fff!important;font-weight:800;font-size:15px;letter-spacing:-.01em;cursor:pointer;box-shadow:0 14px 30px -12px rgba(30,110,75,.6);text-decoration:none}
body.monarch-v3 .woocommerce a.button:hover,body.monarch-v3 .woocommerce button.button:hover{transform:translateY(-1px)}
body.monarch-v3 .woocommerce a.button.alt.wc-forward{width:100%}
body.monarch-v3 .woocommerce .button[name="update_cart"]{background:#fff!important;color:var(--ink)!important;border:1px solid var(--line);box-shadow:none}

/* ---------- WooCommerce: checkout ---------- */
body.monarch-v3 .woocommerce-checkout h3,
body.monarch-v3 .woocommerce-checkout h2{font-size:22px;letter-spacing:-.03em;margin:0 0 16px}
body.monarch-v3 .woocommerce-checkout .col2-set{display:grid;grid-template-columns:minmax(0,1fr);gap:0}
body.monarch-v3 .woocommerce form .form-row{display:flex;flex-direction:column;margin:0 0 14px;padding:0}
body.monarch-v3 .woocommerce form .form-row label{font-size:12.5px;font-weight:800;letter-spacing:.04em;margin-bottom:6px;color:var(--ink)}
body.monarch-v3 .woocommerce form .form-row input.input-text,
body.monarch-v3 .woocommerce form .form-row textarea,
body.monarch-v3 .woocommerce form .form-row select,
body.monarch-v3 .select2-container .select2-selection--single{height:52px;min-width:0;width:100%;padding:0 14px;border:1px solid var(--line);border-radius:14px;background:#fff;font-size:15px;color:var(--ink)}
body.monarch-v3 .woocommerce form .form-row textarea{height:auto;min-height:96px;padding:12px 14px}
body.monarch-v3 .woocommerce form .form-row input.input-text:focus,
body.monarch-v3 .woocommerce form .form-row select:focus{outline:2px solid var(--g-300);outline-offset:1px}
body.monarch-v3 .select2-container .select2-selection--single .select2-selection__rendered{line-height:50px;padding-left:0}
body.monarch-v3 .select2-container .select2-selection--single .select2-selection__arrow{height:50px}
body.monarch-v3 #order_review,
body.monarch-v3 .woocommerce-checkout-review-order{background:var(--tint);border:1px solid var(--line);border-radius:var(--r-lg);padding:24px}
body.monarch-v3 .woocommerce-checkout-review-order-table{background:transparent;border:0}
body.monarch-v3 .woocommerce-checkout-review-order-table th{background:transparent;padding:10px 0}
body.monarch-v3 .woocommerce-checkout-review-order-table td{padding:10px 0;border-top:1px solid var(--line)}
body.monarch-v3 .woocommerce-checkout-review-order-table .order-total th,
body.monarch-v3 .woocommerce-checkout-review-order-table .order-total td{font-size:20px;font-weight:900}
body.monarch-v3 #payment{background:#fff;border:1px solid var(--line);border-radius:var(--r-md);padding:18px;margin-top:16px}
body.monarch-v3 #payment ul.payment_methods{padding:0;margin:0;list-style:none}
body.monarch-v3 #payment div.form-row{padding:14px 0 0}
body.monarch-v3 .woocommerce-privacy-policy-text p,
body.monarch-v3 .woocommerce-terms-and-conditions-wrapper p{font-size:12.5px;line-height:1.6;color:var(--muted)}

/* Notices */
body.monarch-v3 .woocommerce-message,
body.monarch-v3 .woocommerce-info,
body.monarch-v3 .woocommerce-error{border:1px solid var(--line);border-left:4px solid var(--g-600);border-radius:12px;background:var(--tint);padding:14px 18px;font-size:14.5px;list-style:none}
body.monarch-v3 .woocommerce-error{border-left-color:#B42323;background:#FDF2F2}

/* ---------- WooCommerce: my account ---------- */
body.monarch-v3 .woocommerce-MyAccount-navigation ul{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:4px}
body.monarch-v3 .woocommerce-MyAccount-navigation a{display:block;padding:12px 16px;border-radius:12px;font-weight:700;font-size:14.5px;color:var(--ink)}
body.monarch-v3 .woocommerce-MyAccount-navigation li.is-active a,
body.monarch-v3 .woocommerce-MyAccount-navigation a:hover{background:var(--tint)}
body.monarch-v3 .woocommerce-MyAccount-navigation li.is-active a{background:var(--g-900);color:#fff}
body.monarch-v3 .woocommerce-MyAccount-content{background:#fff;border:1px solid var(--line);border-radius:var(--r-md);padding:24px}
body.monarch-v3 .woocommerce-account .woocommerce{display:grid;grid-template-columns:minmax(0,240px) minmax(0,1fr);gap:28px;align-items:start;padding:32px 0 64px}
body.monarch-v3 .woocommerce-account form.woocommerce-form-login,
body.monarch-v3 .woocommerce-account form.woocommerce-form-register{border:1px solid var(--line);border-radius:var(--r-md);padding:24px;background:#fff}

@media(max-width:900px){
  body.monarch-v3 .woocommerce-account .woocommerce{grid-template-columns:minmax(0,1fr)}
  body.monarch-v3 .woocommerce-MyAccount-navigation ul{flex-direction:row;flex-wrap:wrap}
}
@media(max-width:760px){
  body.monarch-v3 .content-area,body.monarch-v3 .site-main,
  body.monarch-v3 .page-header .container,body.monarch-v3 .section .container,
  body.monarch-v3 .coa-library-wrap{padding:0 16px}
  body.monarch-v3 .page-header{padding:34px 0 20px}
  body.monarch-v3 .woocommerce table.shop_table td{padding:12px}
}

/* .band is added by v3.js after the generic .page-header rules, so these must
   out-specify them or the sub-heading stays dark-on-dark inside the band. */
body.monarch-v3 .page-header.band p,
body.monarch-v3 .page-header.band .lead{color:#BFD6CA}
body.monarch-v3 .page-header.band .eyebrow{color:var(--g-300)}
body.monarch-v3 .page-header.band a{color:#fff}

/* ---------- Content page typography ----------
   The band is inset (max-width minus 56px, 56px of inner padding), so the body
   below has to use the same inset or the text does not line up under it. */
body.monarch-v3 .section .container,
body.monarch-v3 .entry-content > *{max-width:calc(var(--max) - 56px);margin-left:auto;margin-right:auto}
body.monarch-v3 .section .container{padding:0 56px}
body.monarch-v3 .section .lead{font-size:20px;line-height:1.6;color:var(--ink);max-width:800px;margin:0 0 34px}
body.monarch-v3 .section p,body.monarch-v3 .section li,
body.monarch-v3 .entry-content p,body.monarch-v3 .entry-content li{max-width:760px;font-size:16.5px;line-height:1.75;color:var(--ink-2)}
body.monarch-v3 .section h2,body.monarch-v3 .entry-content h2{font-size:30px;letter-spacing:-.035em;margin:52px 0 14px;max-width:760px}
/* Short rule under each section heading, matching the brand gradient. */
body.monarch-v3 .section h2::after,body.monarch-v3 .entry-content h2::after{content:"";display:block;width:54px;height:3px;border-radius:3px;background:var(--grad);margin-top:14px}
body.monarch-v3 .section h3,body.monarch-v3 .entry-content h3{font-size:19px;margin:30px 0 8px}
body.monarch-v3 .section .container > *:first-child{margin-top:0}

/* COA Library: "View PDF" is the green gradient button, so its label is white.
   Scoped to .btn-primary only — "PDF Coming Soon" is a white outline button and
   must keep its dark label. */
body.monarch-v3 .coa .btn-primary,
body.monarch-v3 .coa-library-card .btn-primary,
body.monarch-v3 .coa-library-grid .btn-primary,
body.monarch-v3 .entry-content .btn-primary{color:#fff!important;-webkit-text-fill-color:#fff!important}

@media(max-width:760px){
  body.monarch-v3 .section .container{padding:0 16px}
  body.monarch-v3 .section .lead{font-size:17.5px}
  body.monarch-v3 .section h2,body.monarch-v3 .entry-content h2{font-size:25px;margin:38px 0 12px}
}

/* ---------- FAQ accordion ----------
   The theme put the answer text in dark ink on a solid green panel. These are
   white cards with a dark question and a green +/− toggle instead. */
body.monarch-v3 .accordion-group{max-width:820px}
body.monarch-v3 .accordion-item{background:#fff!important;border:1px solid var(--line);border-radius:16px;margin-bottom:10px;overflow:hidden;transition:border-color .2s,box-shadow .2s}
body.monarch-v3 .accordion-item:hover{border-color:var(--g-300)}
body.monarch-v3 .accordion-item.open{border-color:var(--g-300);box-shadow:0 18px 34px -24px rgba(12,53,37,.45)}
body.monarch-v3 .accordion-trigger{position:relative;display:block;width:100%;text-align:left;background:transparent!important;color:var(--ink)!important;font-size:17px;font-weight:800;letter-spacing:-.015em;line-height:1.35;padding:20px 62px 20px 22px;border:0;cursor:pointer}
body.monarch-v3 .accordion-item.open .accordion-trigger{color:var(--g-900)!important}
/* Circle + horizontal bar; the vertical bar is a <span> added by v3.js so the
   marker can animate from + to −. */
body.monarch-v3 .accordion-trigger::after{content:"";position:absolute;right:18px;top:50%;transform:translateY(-50%);width:30px;height:30px;border-radius:50%;background:var(--tint);border:1px solid var(--line);transition:background .2s,border-color .2s}
body.monarch-v3 .accordion-trigger::before{content:"";position:absolute;right:26px;top:50%;width:14px;height:2px;border-radius:2px;background:var(--g-700);transform:translateY(-50%);z-index:2;transition:background .2s}
body.monarch-v3 .accordion-trigger .bar{position:absolute;right:32px;top:50%;width:2px;height:14px;border-radius:2px;background:var(--g-700);transform:translateY(-50%);z-index:2;transition:opacity .2s,transform .2s}
body.monarch-v3 .accordion-item.open .accordion-trigger .bar{opacity:0;transform:translateY(-50%) rotate(90deg)}
body.monarch-v3 .accordion-item.open .accordion-trigger::after{background:var(--g-900);border-color:var(--g-900)}
body.monarch-v3 .accordion-item.open .accordion-trigger::before{background:#fff}
body.monarch-v3 .accordion-panel{background:#fff!important}
body.monarch-v3 .accordion-panel-inner{padding:0 22px 22px}
body.monarch-v3 .accordion-panel-inner p{color:var(--ink-2)!important;font-size:16px;line-height:1.75;max-width:720px;margin:0}
@media(max-width:760px){
  body.monarch-v3 .accordion-trigger{font-size:15.5px;padding:17px 56px 17px 18px}
  body.monarch-v3 .accordion-panel-inner{padding:0 18px 18px}
}

/* ---------- Login / Register ----------
   The two cards hold different amounts of copy, so their buttons sat at
   different heights. Equal-height columns with the button pinned to the bottom
   line them up. */
body.monarch-v3 .woocommerce-account .u-columns,
body.monarch-v3 .woocommerce-account .col2-set{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:28px;align-items:stretch;width:100%}
body.monarch-v3 .woocommerce-account .u-column1,
body.monarch-v3 .woocommerce-account .u-column2,
body.monarch-v3 .woocommerce-account .col-1,
body.monarch-v3 .woocommerce-account .col-2{width:100%;max-width:none;float:none;display:flex;flex-direction:column}
body.monarch-v3 .woocommerce-account form.woocommerce-form-login,
body.monarch-v3 .woocommerce-account form.woocommerce-form-register{display:flex;flex-direction:column;height:100%;box-sizing:border-box}
/* Everything above the button keeps its natural size; this pushes the button
   (and the "Forgot password?" link under it) to the card's bottom edge. */
body.monarch-v3 .woocommerce-account form.woocommerce-form-login .form-row-wide.woocommerce-form-row,
body.monarch-v3 .woocommerce-account form .woocommerce-form-login__submit,
body.monarch-v3 .woocommerce-account form .woocommerce-form-register__submit{margin-top:auto}
body.monarch-v3 .woocommerce-account form.woocommerce-form-login button[type=submit],
body.monarch-v3 .woocommerce-account form.woocommerce-form-register button[type=submit]{width:100%;margin-top:auto}
body.monarch-v3 .woocommerce-account .lost_password{margin:14px 0 0}
body.monarch-v3 .woocommerce-account .lost_password a{font-weight:700;color:var(--g-700)}
body.monarch-v3 .woocommerce-account h2{font-size:34px;letter-spacing:-.04em;margin:0 0 14px}

/* ---------- Mobile ---------- */
@media(max-width:900px){
  body.monarch-v3 .woocommerce-account .u-columns,
  body.monarch-v3 .woocommerce-account .col2-set{grid-template-columns:minmax(0,1fr);gap:18px}
}
@media(max-width:760px){
  /* Page header band */
  body.monarch-v3 .page-header{padding:38px 22px;border-radius:24px;margin:12px 16px 22px;max-width:none}
  body.monarch-v3 .page-header h1,body.monarch-v3 .page-header .entry-title{font-size:clamp(28px,8vw,40px)}
  body.monarch-v3 .page-header p,body.monarch-v3 .page-header .lead{font-size:15.5px}
  /* Cart table becomes stacked rows */
  body.monarch-v3 .woocommerce table.shop_table thead{display:none}
  body.monarch-v3 .woocommerce table.shop_table tr{display:grid;grid-template-columns:76px minmax(0,1fr);gap:4px 14px;padding:14px;border-top:1px solid var(--line);align-items:center}
  body.monarch-v3 .woocommerce table.shop_table td{border:0;padding:2px 0;font-size:14.5px}
  body.monarch-v3 .woocommerce table.shop_table td.product-thumbnail{grid-row:span 4}
  body.monarch-v3 .woocommerce table.shop_table td::before{content:attr(data-title) ": ";font-weight:800;color:var(--muted);font-size:12px}
  body.monarch-v3 .woocommerce table.shop_table td.product-thumbnail::before,
  body.monarch-v3 .woocommerce table.shop_table td.product-name::before{content:none}
  body.monarch-v3 .woocommerce table.shop_table td.actions{grid-column:span 2}
  /* Checkout + account */
  body.monarch-v3 #order_review,body.monarch-v3 .woocommerce-checkout-review-order{padding:18px;border-radius:22px}
  body.monarch-v3 .woocommerce-MyAccount-content{padding:18px}
  body.monarch-v3 .woocommerce a.button,body.monarch-v3 .woocommerce button.button,
  body.monarch-v3 .woocommerce input.button,body.monarch-v3 #place_order{width:100%}
  /* Search panel */
  body.monarch-v3 .sp-inner{padding:16px 16px 24px}
  body.monarch-v3 .sp-field{height:54px}
  body.monarch-v3 .sp-field input{font-size:16px}
}

/* ---------- About page cards ---------- */
body.monarch-v3 .ab-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;margin-top:34px}
body.monarch-v3 .ab-card{position:relative;background:#fff;border:1px solid var(--line);border-radius:var(--r-md);padding:30px 28px 26px;transition:transform .22s,box-shadow .22s,border-color .22s}
body.monarch-v3 .ab-card:hover{transform:translateY(-3px);border-color:var(--g-300);box-shadow:0 26px 44px -30px rgba(12,53,37,.45)}
body.monarch-v3 .ab-card.span-2{grid-column:1 / -1;background:var(--tint);border-color:var(--tint-2)}
body.monarch-v3 .ab-n{display:inline-block;font-family:var(--mono);font-size:11px;letter-spacing:.18em;color:var(--g-600);margin-bottom:10px}
body.monarch-v3 .ab-card h2{font-size:22px!important;letter-spacing:-.03em;margin:0 0 12px!important;max-width:none}
/* The gradient rule belongs to the section headings, not these cards. */
body.monarch-v3 .ab-card h2::after{display:none}
body.monarch-v3 .ab-card p{font-size:15.5px;line-height:1.7;color:var(--ink-2);max-width:none;margin:0 0 12px}
body.monarch-v3 .ab-card p:last-child{margin-bottom:0}
body.monarch-v3 .ab-card a{color:var(--g-700);font-weight:700}
/* Lead paragraph sits above the grid as the page intro. */
body.monarch-v3 .section .lead{font-size:21px;line-height:1.55;color:var(--ink);max-width:820px;margin:0}

/* ---------- Login / Register: put both buttons on the same line ----------
   The login form has "Forgot password?" under its button, so ordering the
   button last in both forms is what actually lines them up. */
body.monarch-v3 .woocommerce-account form.woocommerce-form-login .lost_password{order:8;margin:0 0 14px;text-align:left}
body.monarch-v3 .woocommerce-account form.woocommerce-form-login button[type=submit],
body.monarch-v3 .woocommerce-account form.woocommerce-form-register button[type=submit]{order:9;margin-top:auto;width:100%}
body.monarch-v3 .woocommerce-account form.woocommerce-form-register .woocommerce-privacy-policy-text{order:7}

@media(max-width:860px){
  body.monarch-v3 .ab-grid{grid-template-columns:minmax(0,1fr);gap:14px;margin-top:26px}
  body.monarch-v3 .ab-card{padding:24px 20px}
  body.monarch-v3 .ab-card h2{font-size:20px!important}
  body.monarch-v3 .section .lead{font-size:18px}
}

/* ---------- Page hero headline ----------
   Two lines: solid then outlined, matching the homepage hero. v3.js splits the
   page's existing title into the two spans. */
body.monarch-v3 .page-header h1,
body.monarch-v3 .page-header .entry-title{font-size:clamp(38px,6vw,86px)!important;line-height:.9;letter-spacing:-.05em;text-transform:uppercase;margin:14px 0 18px}
body.monarch-v3 .page-header h1 .solid{display:block}
body.monarch-v3 .page-header h1 .outline{display:block;color:transparent!important;-webkit-text-fill-color:transparent!important;-webkit-text-stroke:1.6px rgba(191,233,210,.75)}
body.monarch-v3 .faq-none,body.monarch-v3 .faq-layout .empty{margin-top:24px;font-weight:700;color:var(--muted)}
@media(max-width:860px){
  body.monarch-v3 .faq-layout{grid-template-columns:minmax(0,1fr);gap:22px}
  body.monarch-v3 .faq-nav{position:static;display:flex;flex-wrap:wrap;gap:6px}
  body.monarch-v3 .faq-nav a{font-size:13px;padding:8px 12px;border:1px solid var(--line);border-radius:999px}
  body.monarch-v3 .page-header h1 .outline{-webkit-text-stroke-width:1.2px}
  /* Same problem the hero headline had, on every page header (About, FAQ, COA
     Library, Contact): at the display tracking of -.045em the outline strokes
     of neighbouring letters touch, so "QUESTIONS." / "LIBRARY." read as one
     tangled shape. Scoped past the body.monarch-v3 h1 guard rule. */
  /* .shop-inner is included because the shop hero lives in .band, not
     .page-header, so it was missed here and its outlined word kept tangling. */
  body.monarch-v3 .page-header h1,
  body.monarch-v3 .shop-inner h1{letter-spacing:-.015em;line-height:1.06}
  body.monarch-v3 .shop-inner h1 .outline{-webkit-text-stroke-color:rgba(191,233,210,1)}
  /* A long product name wraps to three lines and the 0.98 line-height clipped
     the last one (e.g. "CJC-1295 + Ipamorelin Blend (No DAC)"). */
  body.monarch-v3 .pdp h1{line-height:1.1;overflow-wrap:anywhere}
  /* The icon buttons are grid but only had align-items, so the glyph sat right
     of centre in its circle — most visible on the hamburger. */
  body.monarch-v3 .nav-ic{place-items:center;place-content:center}
  body.monarch-v3 .page-header h1 .outline{-webkit-text-stroke-color:rgba(191,233,210,1)}

  /* The coupon row squeezed its input to 116px, truncating the placeholder to
     "Coupon co…". Stacked, both get the full width. */
  /* Not tag-qualified: this theme renders the coupon row as a <div class=
     "checkout_coupon">, not WooCommerce's usual <form>. */
  /* flex-wrap needs !important — without it the row stayed on one line and the
     input was squeezed to 114px, truncating the placeholder to "Coupon co…". */
  body.monarch-v3 .checkout_coupon{flex-wrap:wrap!important;gap:10px}
  body.monarch-v3 .checkout_coupon .input-text,
  body.monarch-v3 .checkout_coupon input[type=text]{flex:1 1 100%!important;width:100%!important;min-width:0}
  body.monarch-v3 .checkout_coupon button,
  body.monarch-v3 .checkout_coupon .button{flex:1 1 100%;width:100%}

  /* WooCommerce draws its notice icon as an absolutely positioned ::before,
     which landed on top of "Returning customer?" at this width. */
  body.monarch-v3 .woocommerce-info,
  body.monarch-v3 .woocommerce-message{padding-left:46px}
}
/* ---------- Cart drawer ----------
   The theme renders the action buttons above the coupon and totals; these put
   Proceed to Checkout / Continue Shopping at the bottom, under the totals. */
body.monarch-v3 .monarch-cart-drawer__body{display:flex;flex-direction:column;gap:14px}
body.monarch-v3 .monarch-cart-coupon{order:1}
body.monarch-v3 .monarch-cart-drawer__totals{order:2}
body.monarch-v3 .monarch-cart-drawer__checkout{order:3}
body.monarch-v3 .monarch-cart-drawer__continue{order:4}
body.monarch-v3 .monarch-cart-drawer__trust{order:5}
body.monarch-v3 .monarch-cart-drawer__checkout{background:var(--grad)!important;color:#fff!important;border-radius:999px;height:54px;display:flex;align-items:center;justify-content:center;font-weight:800;text-decoration:none}
body.monarch-v3 .monarch-cart-drawer__continue{background:#fff!important;color:var(--g-900)!important;border:1px solid var(--line);border-radius:999px;height:52px;font-weight:800;cursor:pointer}
body.monarch-v3 .monarch-cart-drawer__items{flex:1;overflow:auto}
/* ---------- FAQ section nav ----------
   The active pill was dark green on dark green, and the content-page rule that
   underlines links was reaching these too. */
body.monarch-v3 .faq-nav a{text-decoration:none!important;color:var(--ink-2)!important}
body.monarch-v3 .faq-nav a:hover{background:var(--tint);color:var(--g-900)!important}
body.monarch-v3 .faq-nav a.active{background:var(--g-900);color:#fff!important}
body.monarch-v3 .faq-group summary{text-decoration:none!important}

/* ---------- Login / Register ----------
   NOTE: .woocommerce-account is a class on <body>, so it must be chained
   (body.monarch-v3.woocommerce-account), not written as a descendant — that
   mistake is why earlier account rules silently did nothing. */
body.monarch-v3.woocommerce-account .u-columns,
body.monarch-v3.woocommerce-account .col2-set{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:28px;align-items:stretch;width:100%}
body.monarch-v3.woocommerce-account .u-column1,
body.monarch-v3.woocommerce-account .u-column2{width:100%;max-width:none;float:none;display:flex;flex-direction:column}
body.monarch-v3.woocommerce-account form.woocommerce-form-login,
body.monarch-v3.woocommerce-account form.woocommerce-form-register{display:flex;flex-direction:column;min-height:100%;border:1px solid var(--line);border-radius:var(--r-md);padding:26px;background:#fff;box-sizing:border-box}
/* Both cards end with their button, which is what lines the two buttons up.
   This was previously done by giving rows explicit `order` values, but
   WooCommerce puts .form-row on EVERY row — username, password and the submit
   row alike — so `form p.form-row{order:9;margin-top:auto}` hit all three at
   once. Three auto top-margins in one flex column split the free space between
   them and stacked the fields on top of each other. Rows now keep their
   document order and only the submit row is pushed to the bottom. */
/* flex-shrink:0 is the important half. The two cards stretch to equal height,
   and with height:100% the taller card's rows were shrunk to fit — the boxes
   compressed to almost nothing and their labels spilled out and landed on top
   of each other. Rows must keep their natural height; the card grows instead. */
body.monarch-v3.woocommerce-account form.woocommerce-form-login > *,
body.monarch-v3.woocommerce-account form.woocommerce-form-register > *{order:0;flex:0 0 auto}
body.monarch-v3.woocommerce-account form p.mb-remember{margin:0 0 12px;font-size:14px;display:flex;align-items:center;gap:8px}
body.monarch-v3.woocommerce-account form.woocommerce-form-login p.lost_password{margin:12px 0 0}
body.monarch-v3.woocommerce-account form.woocommerce-form-login p.lost_password a{font-weight:700;color:var(--g-700);text-decoration:none}
body.monarch-v3.woocommerce-account form p.form-row{margin:0 0 14px}
body.monarch-v3.woocommerce-account form p.woocommerce-form-login__submit,
body.monarch-v3.woocommerce-account form p.woocommerce-form-register__submit,
body.monarch-v3.woocommerce-account form p.form-row:has(button[type=submit]){margin-top:auto;margin-bottom:0}
body.monarch-v3.woocommerce-account form button[type=submit]{width:100%}
body.monarch-v3.woocommerce-account h2{font-size:32px;letter-spacing:-.04em;margin:0 0 14px}
body.monarch-v3.woocommerce-account .woocommerce-privacy-policy-text p{font-size:12.5px;line-height:1.6;color:var(--muted)}

/* ---------- Cart / checkout totals ----------
   Row headers were getting the table-head tint, which drew grey blocks behind
   SUBTOTAL / SHIPMENT and broke the alignment of the totals column. */
body.monarch-v3 .woocommerce table.shop_table tbody th,
body.monarch-v3 .woocommerce table.shop_table tfoot th{background:transparent!important;font-family:var(--mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--g-700);padding:14px 0;vertical-align:top}
body.monarch-v3 .woocommerce table.shop_table tfoot td,
body.monarch-v3 .woocommerce-checkout-review-order-table td{text-align:right;padding:14px 0;font-weight:700}
body.monarch-v3 .woocommerce-checkout-review-order-table .order-total th,
body.monarch-v3 .woocommerce-checkout-review-order-table .order-total td{font-size:19px;font-weight:900;color:var(--ink);border-top:1px solid var(--line)}
/* Shipping choices as full-width selectable rows */
body.monarch-v3 ul#shipping_method{list-style:none;margin:8px 0 0;padding:0;display:flex;flex-direction:column;gap:8px;text-align:left}
body.monarch-v3 ul#shipping_method li{display:flex;align-items:center;gap:10px;margin:0;padding:12px 14px;border:1px solid var(--line);border-radius:14px;background:#fff;font-size:14.5px;cursor:pointer}
/* Selected row stays white — the green fill was distracting. The radio itself
   marks the choice; the border darkens slightly so the row still reads as
   selected without colour. */
body.monarch-v3 ul#shipping_method li:has(input:checked){border-color:var(--ink);background:#fff;box-shadow:none}
body.monarch-v3 ul#shipping_method label{margin:0;font-weight:700;cursor:pointer}
body.monarch-v3 ul#shipping_method .amount{margin-left:auto;font-weight:900;color:var(--g-700)}
body.monarch-v3 .woocommerce-shipping-destination{font-size:13px;color:var(--muted);margin-top:8px}

/* Pin the submit buttons to the bottom of each card so the two line up however
   much copy each form holds.
   This used to pin `form p.form-row`, but WooCommerce puts .form-row on EVERY
   row — username, password and the submit row alike — so all of them were
   absolutely positioned to the same bottom corner and rendered on top of one
   another. It only showed above 900px, because the rule was switched off for
   mobile. The submit row is now targeted by its own class, and the card stays a
   flex column so the rest of the rows flow normally. */
body.monarch-v3.woocommerce-account form.woocommerce-form-login,
body.monarch-v3.woocommerce-account form.woocommerce-form-register{position:relative;padding-bottom:124px!important}
body.monarch-v3.woocommerce-account form p.woocommerce-form-login__submit,
body.monarch-v3.woocommerce-account form p.woocommerce-form-register__submit,
body.monarch-v3.woocommerce-account form p.form-row:has(button[type=submit]){position:absolute;left:26px;right:26px;bottom:26px;margin:0}
body.monarch-v3.woocommerce-account form p.form-row button{width:100%}
@media(max-width:900px){
  body.monarch-v3.woocommerce-account form.woocommerce-form-login,
  body.monarch-v3.woocommerce-account form.woocommerce-form-register{position:static;padding-bottom:26px!important}
  body.monarch-v3.woocommerce-account form p.woocommerce-form-login__submit,
  body.monarch-v3.woocommerce-account form p.woocommerce-form-register__submit,
  body.monarch-v3.woocommerce-account form p.form-row:has(button[type=submit]){position:static;margin-top:14px}
}
/* The visually-hidden label in the footer signup was rendering full width on
   some pages (WooCommerce styles win over the base .sr-only rule), pushing the
   page ~920px wider than the viewport. */
body.monarch-v3 .sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0 0 0 0)!important;clip-path:inset(50%)!important;white-space:nowrap!important;border:0!important}
/* Shipping choices lifted out of the narrow table cell (see v3.js). */
body.monarch-v3 .mb-ship-choices{margin:6px 0 10px}
body.monarch-v3 .mb-ship-label{font-family:var(--mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--g-700);margin:0 0 8px}
body.monarch-v3 .mb-ship-choices ul#shipping_method{width:100%;margin:0}
body.monarch-v3 .mb-ship-choices li{width:100%;box-sizing:border-box}
/* ---------- Checkout removals (owner's request) ----------
   1. The Hostinger Reach plugin injects a "Subscribe to our Newsletter" opt-in
      into the payment step. Hidden here rather than unhooked from the plugin,
      so it stays gone regardless of Reach's own settings and on both sites. An
      unchecked box posts nothing, so nobody is subscribed either way.
   2. The shipping card's intro line ("Enter the address where your order should
      be delivered.") restated its own heading. */
body.monarch-v3 p.hostinger-reach-optin{display:none!important}
body.monarch-v3 .checkout-shipping-form .checkout-card__intro{display:none!important}

/* Researcher checks now live in the shipping card. */
body.monarch-v3 #billing_research_field_field,
body.monarch-v3 #billing_institutional_certify_field,
body.monarch-v3 #monarch_sms_optin_field{margin-top:14px}

/* ---------- Mobile tap targets ----------
   Measured at 390px: the cart/checkout quantity buttons rendered 28px tall, the
   "Remove" control 19px and the footer link rows 20px. Anything under ~44px is
   hard to hit accurately on a phone, so these grow on small screens only and the
   desktop layout is untouched. Inline links inside sentences (the privacy copy,
   breadcrumbs) are deliberately left alone -- padding those out would break the
   paragraphs they sit in. */
@media (max-width:760px){
  /* The theme sets min-height:28px on these, so !important is required. */
  body.monarch-v3 .monarch-qty-minus,
  body.monarch-v3 .monarch-qty-plus{min-width:44px!important;min-height:44px!important;display:inline-flex;align-items:center;justify-content:center;font-size:18px;line-height:1}
  body.monarch-v3 .monarch-remove-item{min-height:44px!important;display:inline-flex;align-items:center;padding:0 2px}
  body.monarch-v3 .fgrid ul{gap:0}
  body.monarch-v3 .fgrid ul li{margin:0}
  body.monarch-v3 .fgrid ul li a{display:inline-flex;align-items:center;min-height:44px}
  body.monarch-v3 .woocommerce-form-login-toggle a.showlogin,
  body.monarch-v3 .woocommerce-form-coupon-toggle a.showcoupon{display:inline-flex;align-items:center;min-height:44px}
  body.monarch-v3 ul#shipping_method li{min-height:48px}
  /* The drawer's quantity controls carry no class of their own. */
  body.monarch-v3 .monarch-drawer-qty button{min-width:44px!important;min-height:44px!important}
  body.monarch-v3 .monarch-drawer-item__name{display:inline-flex;align-items:center;min-height:40px}
  body.monarch-v3 .car-ctrl .chip{min-height:44px;padding-left:18px;padding-right:18px}
  body.monarch-v3 footer .mail{display:inline-flex;align-items:center;min-height:44px}
  /* WooCommerce's own .remove sizing wins without !important. */
  body.monarch-v3 .woocommerce a.remove{width:40px!important;height:40px!important;line-height:40px!important;font-size:21px}
  body.monarch-v3 .woocommerce td.product-name > a{display:inline-flex;align-items:center;min-height:40px}
  body.monarch-v3 .faq-nav a{min-height:44px;display:inline-flex;align-items:center}
  body.monarch-v3 .nav-links a{display:inline-flex;align-items:center;min-height:44px}
  /* Breadcrumb links share one line, so min-height would push the row open.
     Vertical padding on an inline box grows the touch area to ~44px while the
     line box itself stays 17px, leaving the layout untouched. */
  body.monarch-v3 .breadcrumb a,
  body.monarch-v3 .crumbs a{padding-top:13px;padding-bottom:13px}
  /* "View COA" is a real destination, not body copy, so it gets a full target. */
  body.monarch-v3 .coa-link a{display:inline-flex;align-items:center;min-height:44px}

  /* Checkout order-summary stepper. Its .qty-control is a grid of fixed tracks
     ~56px wide, sitting in a 96px column beside the thumbnail, so the 44px
     buttons above overflowed it and the "+" landed on top of "Remove". Letting
     the product block wrap drops the stepper onto its own full-width line,
     which is the only way it fits at 44px. */
  body.monarch-v3 .monarch-review-product{flex-wrap:wrap}
  body.monarch-v3 .monarch-review-qty-row{flex:1 0 100%;width:100%;margin-left:0;display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px}
  body.monarch-v3 .qty-control{display:inline-flex!important;width:auto!important;flex:0 0 auto;align-items:center}
}

/* ---------- Cart page line items ----------
   Six columns (remove, thumbnail, product, price, quantity, subtotal) have a
   min-content width wider than the 567px card they sit in, so the table spilled
   past its own card and clipped the Subtotal column. table-layout:fixed plus
   explicit widths keeps every column inside the card and leaves the product
   name the remaining space. `.woocommerce-cart` is a <body> class, so it is
   chained, not a descendant. */
body.monarch-v3.woocommerce-cart .woocommerce-cart-form table.shop_table{width:100%;table-layout:fixed;border-collapse:collapse}
body.monarch-v3.woocommerce-cart table.shop_table td,
body.monarch-v3.woocommerce-cart table.shop_table th{padding:14px 8px;vertical-align:middle}
body.monarch-v3.woocommerce-cart table.shop_table .product-remove{width:30px;padding-left:0}
body.monarch-v3.woocommerce-cart table.shop_table .product-thumbnail{width:56px}
body.monarch-v3.woocommerce-cart table.shop_table .product-thumbnail img{width:56px;height:56px;object-fit:cover;border-radius:10px;display:block}
/* nowrap: at 76px "$200.00" broke across two lines mid-number. */
body.monarch-v3.woocommerce-cart table.shop_table .product-price{width:86px;text-align:right;white-space:nowrap}
body.monarch-v3.woocommerce-cart table.shop_table .product-quantity{width:124px}

/* The − / input / + control is 165px at its natural size, which pushed the "+"
   outside the quantity cell. It is compacted here for the table layout only;
   below 760px the table stacks and the 44px mobile tap targets apply instead. */
@media (min-width:761px){
  body.monarch-v3.woocommerce-cart table.shop_table .quantity{display:flex;align-items:center;justify-content:flex-start;gap:2px;width:100%}
  body.monarch-v3.woocommerce-cart table.shop_table .monarch-qty-btn{min-width:32px!important;width:32px;padding:0;flex:0 0 32px}
  body.monarch-v3.woocommerce-cart table.shop_table .quantity input.input-text{width:44px;min-width:0;padding:0;text-align:center}
}
body.monarch-v3.woocommerce-cart table.shop_table .product-subtotal{width:86px;text-align:right;padding-right:0;font-weight:800;white-space:nowrap}
body.monarch-v3.woocommerce-cart table.shop_table td.product-name{overflow-wrap:anywhere}
body.monarch-v3.woocommerce-cart table.shop_table td.product-name a{font-weight:700;line-height:1.35;text-decoration:none}

/* Below the two-column breakpoint WooCommerce stacks the table into rows, so the
   fixed widths above must not follow it there. */
@media (max-width:760px){
  body.monarch-v3.woocommerce-cart .woocommerce-cart-form table.shop_table{table-layout:auto}
  /* The stacked table prefixes each cell with attr(data-title) ": ". Cells that
     carry no data-title (remove, thumbnail, and the checkout review order's
     price) therefore rendered a bare ":". Cells that do have a title keep it. */
  body.monarch-v3 table.shop_table td:not([data-title])::before{content:none!important}
  /* The stacked row prints its label with float:left, which only reads as a
     row when the value is pushed right — otherwise it ran together as
     "Price:$65.00". */
  body.monarch-v3.woocommerce-cart table.shop_table td{text-align:right}
  /* margin-right rather than relying on text-align: the theme's inline CSS
     overrides the cell alignment, so the label and value ran together as
     "Price:$65.00" whatever the alignment said. */
  body.monarch-v3.woocommerce-cart table.shop_table td::before{float:left;font-weight:700;color:var(--g-700);margin-right:10px}
  /* The emptied remove cell was leaving a blank pill above each thumbnail. */
  body.monarch-v3.woocommerce-cart table.shop_table td.product-remove{padding:6px 0 0;background:none;min-height:0}
  body.monarch-v3.woocommerce-cart table.shop_table td.product-name,
  body.monarch-v3.woocommerce-cart table.shop_table td.product-thumbnail{text-align:left}
  /* The theme pins the remove × absolutely, which suits the desktop table but
     drops it on top of the thumbnail once the rows stack. */
  body.monarch-v3.woocommerce-cart table.shop_table td.product-remove{position:static;text-align:right}
  body.monarch-v3.woocommerce-cart table.shop_table td.product-remove a.remove{position:static!important;float:right;margin:0}
  body.monarch-v3.woocommerce-cart table.shop_table .product-remove,
  body.monarch-v3.woocommerce-cart table.shop_table .product-thumbnail,
  body.monarch-v3.woocommerce-cart table.shop_table .product-price,
  body.monarch-v3.woocommerce-cart table.shop_table .product-quantity,
  body.monarch-v3.woocommerce-cart table.shop_table .product-subtotal{width:auto}
}
/* Welcome popup: the phone label's "(optional)" is a hint, not part of the label. */
.monarch-welcome-offer label span em{font-style:normal;font-weight:500;color:var(--color-text-muted)}

/* Welcome popup field order: name, email, phone. The theme writes them as
   name, phone, email; reordering here rather than rewriting its markup means a
   change to that markup cannot silently break the order. The form is a grid,
   so order applies. nth-of-type is used because CSS cannot select a label by
   the input inside it in older browsers. */
.monarch-welcome-offer form label:nth-of-type(1){order:1}
.monarch-welcome-offer form label:nth-of-type(2){order:3}
.monarch-welcome-offer form label:nth-of-type(3){order:2}
.monarch-welcome-offer form label:nth-of-type(4){order:4}
.monarch-welcome-offer form .btn{order:5}
/* Checkout marketing consent: matches the billing-address toggle beside it, but
   spaced away so it does not read as part of that control. */
body.monarch-v3 .monarch-marketing-optin{margin-top:14px;align-items:flex-start}
body.monarch-v3 .monarch-marketing-optin input{margin-top:2px;flex:0 0 auto}
body.monarch-v3 .monarch-marketing-optin span{font-weight:500;line-height:1.45}
/* Phone: footer links were 18-22px tall and tightly stacked, well under the
   44px touch minimum, so neighbouring links were easy to hit by mistake.
   Covers both lists — the Shop column is filled by JS with the same markup. */
@media (max-width:760px){
  body.monarch-v3 footer.site ul li{margin:0}
  body.monarch-v3 footer.site ul li a{display:inline-flex;align-items:center;min-height:44px}
}
/* Welcome popup consent box was 13x13 - hard to hit accurately on a phone, and
   inconsistent with the 22px box on the bridge page. The label is tappable too,
   but the box itself should not be the fiddly part. */
.monarch-welcome-offer__consent input[type="checkbox"]{width:22px;height:22px;flex:0 0 auto;accent-color:var(--color-accent,#2E7D5B)}