/*
Theme Name: EquipVora
Theme URI: https://equipvora.shop/
Description: EquipVora -- Compact equipment, bought direct. WooCommerce storefront for equipvora.shop. Identical codebase across the group; the palette and copy live in inc/brand.php.
Author: EquipVora
Version: 1.0.0
Requires at least: 6.4
Requires PHP: 7.4
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: equipvora
Tags: e-commerce, custom-colors, custom-menu, full-width-template, translation-ready
WC requires at least: 8.0
WC tested up to: 9.4
*/

/* ===========================================================================
   This stylesheet is IDENTICAL in all five stores. Nothing here hardcodes a
   brand colour: the palette arrives as CSS custom properties printed into the
   <head> by functions.php from inc/brand.php. That is deliberate -- the UK
   build derived each store's CSS by literal colour swap, which meant five
   near-copies to keep in sync. Here there is one stylesheet and five palettes.

   Sections:
     1. tokens + reset        6. product page (PDP)
     2. buttons               7. cart / checkout / account
     3. header + nav          8. forms
     4. hero + sections       9. footer
     5. cards + tiles        10. WooCommerce overrides
   ======================================================================== */

/* ---- 1. tokens + reset ------------------------------------------------- */
/* :root palette is printed by functions.php -- see mf_palette_css() */
:root{ --radius:14px; --wrap:1200px;
  --font:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Arial,sans-serif; }

*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%;overflow-x:clip}
body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--font);font-size:16px;line-height:1.65;overflow-x:clip}
img,svg{max-width:100%;display:block}
img{height:auto}
a{color:inherit;text-decoration:none}
button{font:inherit}
h1,h2,h3,h4{font-family:var(--head);font-weight:700;line-height:1.06;letter-spacing:var(--head-tracking,-.01em);margin:0 0 .5em;text-transform:var(--head-transform,uppercase)}
h1{font-size:clamp(2.3rem,6vw,4rem)}
h2{font-size:clamp(1.9rem,4.4vw,3rem)}
h3{font-size:clamp(1.25rem,2.4vw,1.6rem)}
p{margin:0 0 1rem}
.wrap{width:min(100% - 2.4rem,var(--wrap));margin-inline:auto}
.eyebrow{font-family:var(--head);letter-spacing:.22em;text-transform:uppercase;color:var(--brand);font-size:.9rem;font-weight:700;margin:0 0 .6rem}
.muted{color:var(--ink-2)}
.center{text-align:center}
.sr,.screen-reader-text{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
[hidden]{display:none!important}

/* ---- 2. buttons -------------------------------------------------------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.6rem;padding:.95rem 1.7rem;border-radius:999px;
  font-weight:800;font-size:.98rem;border:2px solid transparent;cursor:pointer;transition:.18s ease;
  text-align:center;background:transparent;color:inherit;font-family:inherit;line-height:1.2}
.btn--primary{background:var(--brand);color:var(--brand-ink)}
.btn--primary:hover{background:var(--brand-hover);transform:translateY(-2px);color:var(--brand-ink)}
.btn--ghost{border-color:var(--brand);color:var(--brand);background:var(--brand-soft)}
.btn--ghost:hover{background:var(--brand);color:var(--brand-ink);transform:translateY(-2px)}
.btn--block{width:100%}
.btn--lg{padding:1.15rem 2rem;font-size:1.06rem}
.btn--grow{flex:1}

/* ---- 3. header + nav --------------------------------------------------- */
.topbar{background:var(--brand);color:var(--brand-ink);font-weight:700;font-size:.82rem;letter-spacing:.03em}
.topbar__in{display:flex;gap:1.6rem;justify-content:center;flex-wrap:wrap;padding:.55rem 0}
.topbar span{display:inline-flex;align-items:center;gap:.4rem;white-space:nowrap}
.header{position:sticky;top:0;z-index:60;background:var(--header-bg);backdrop-filter:blur(12px);border-bottom:1px solid var(--line)}
.header__in{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.85rem 0}
.logo{display:flex;align-items:center;gap:.6rem;font-family:var(--head);font-size:1.6rem;font-weight:700;text-transform:uppercase;letter-spacing:.01em}
.logo b{color:var(--brand);font-weight:700}
.logo__mark{width:34px;height:34px;flex:0 0 34px}
.nav{display:flex;align-items:center;gap:1.7rem}
.nav a{font-weight:600;font-size:.95rem;color:var(--ink-2);transition:.15s}
.nav a:hover,.nav a[aria-current="page"],.nav li.current-menu-item>a{color:var(--brand)}
.nav ul{list-style:none;margin:0;padding:0;display:flex;align-items:center;gap:1.7rem}
/* the basket is a button, not a nav link -- .nav a would otherwise repaint its
   label in the muted link colour and leave it unreadable on the brand fill */
.nav a.btn--primary,.nav a.btn--primary:hover{color:var(--brand-ink)}
.nav a.btn--ghost,.nav a.btn--ghost:hover{color:var(--brand)}
.header__right{display:flex;align-items:center;gap:.9rem}
.burger{display:none;background:none;border:0;padding:.4rem;cursor:pointer}
.burger span{display:block;width:26px;height:2px;background:var(--ink);margin:5px 0;transition:.25s}
.burger[aria-expanded="true"] span:nth-child(1){transform:translateY(7px) rotate(45deg)}
.burger[aria-expanded="true"] span:nth-child(2){opacity:0}
.burger[aria-expanded="true"] span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}
.cartlink{position:relative;font-size:1.35rem;line-height:1;display:none}
.cartbadge{position:absolute;top:-6px;right:-9px;background:var(--brand);color:var(--brand-ink);
  font-size:.66rem;font-weight:800;min-width:18px;height:18px;border-radius:9px;display:grid;
  place-items:center;padding:0 4px}
@media(max-width:900px){
  .burger{display:block}
  .nav{position:fixed;inset:auto 0 0 0;top:0;height:100dvh;background:var(--bg-2);flex-direction:column;justify-content:center;
    gap:1.6rem;transform:translateX(-100%);transition:transform .3s ease,visibility .3s;z-index:70;visibility:hidden}
  .nav.open{transform:none;visibility:visible}
  .nav ul{flex-direction:column;gap:1.6rem}
  .nav a{font-size:1.35rem;font-family:var(--head);text-transform:uppercase}
  .nav .btn{margin-top:.6rem}
  .cartlink{display:block}
  .nav__cart{display:none}
}
.skip{position:absolute;left:-9999px;top:0;background:var(--brand);color:var(--brand-ink);
  padding:.7rem 1.1rem;z-index:100;font-weight:800;border-radius:0 0 8px 0}
.skip:focus{left:0}

/* ---- 4. hero + sections ------------------------------------------------ */
.hero{position:relative;padding:4.4rem 0 3.4rem;background:
  radial-gradient(900px 520px at 78% 22%,var(--hero-glow-1),transparent 60%),
  radial-gradient(700px 460px at 8% 78%,var(--hero-glow-2),transparent 62%),var(--bg)}
.hero__grid{display:grid;grid-template-columns:1.02fr 1.1fr;gap:3rem;align-items:center}
.hero p.lead{font-size:1.12rem;color:var(--ink-2);max-width:52ch}
.hero__cta{display:flex;gap:.9rem;flex-wrap:wrap;margin:1.6rem 0 1.4rem}
.hero__pills{display:flex;gap:1.4rem;flex-wrap:wrap;font-size:.86rem;color:var(--ink-2);font-weight:600}
.hero__pills span{display:inline-flex;align-items:center;gap:.45rem}
.hero__media{border-radius:22px;overflow:hidden;border:1px solid var(--line);box-shadow:var(--shadow)}
.hero__media img{width:100%;aspect-ratio:1200/760;object-fit:cover}
@media(max-width:900px){.hero__grid{grid-template-columns:1fr;gap:2rem}.hero{padding:2.6rem 0 2.4rem}}
section{padding:4rem 0}
.sec-head{max-width:62ch;margin-bottom:2.4rem}
.sec-head.center{margin-inline:auto}
.band{background:var(--bg-2);border-block:1px solid var(--line)}
.pagehead{padding:2.4rem 0 1.4rem}
.pagehead h1{margin-bottom:.5rem}
.crumbs{font-size:.84rem;color:var(--ink-3);margin-bottom:1rem}
.crumbs a{color:var(--ink-2)}
.crumbs a:hover{color:var(--brand)}

/* ---- 5. cards + tiles -------------------------------------------------- */
.grid-2{display:grid;grid-template-columns:repeat(2,1fr);gap:1.6rem}
.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:1.4rem}
.grid-4{display:grid;grid-template-columns:repeat(4,1fr);gap:1.2rem}
@media(max-width:980px){.grid-4{grid-template-columns:repeat(2,1fr)}.grid-3{grid-template-columns:1fr}}
@media(max-width:760px){.grid-2{grid-template-columns:1fr}}
@media(max-width:520px){.grid-4{grid-template-columns:1fr}}

/* the home-page range grid is a <ul> so it can share content-product.php's <li> */
.mf-products{list-style:none;margin:0;padding:0}

.card{background:var(--bg-2);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;transition:.2s ease;display:flex;flex-direction:column}
.card:hover{border-color:var(--line-2);transform:translateY(-4px)}
.card__media{position:relative;background:var(--bg-3)}
.card__media img{width:100%;aspect-ratio:1200/760;object-fit:cover}
.card__tag{position:absolute;top:.9rem;left:.9rem;background:var(--brand);color:var(--brand-ink);font-size:.72rem;font-weight:800;
  letter-spacing:.08em;padding:.34rem .7rem;border-radius:999px;text-transform:uppercase;z-index:2}
.card__body{padding:1.4rem;display:flex;flex-direction:column;gap:.6rem;flex:1}
.card__body h3{margin:0;font-size:1.2rem}
.card__price{display:flex;align-items:baseline;gap:.6rem;margin-top:auto;padding-top:.6rem;flex-wrap:wrap}
.card__price b{font-family:var(--head);font-size:1.9rem;color:var(--brand);font-weight:700}
.card__price s{color:var(--ink-3);font-size:.98rem}
.card ul{margin:.2rem 0 .4rem;padding-left:1.1rem;color:var(--ink-2);font-size:.93rem}
.card ul li{margin-bottom:.25rem}
.card__actions{display:grid;gap:.5rem;margin-top:.4rem}
.card__desc{color:var(--ink-2);font-size:.94rem;margin:0}

.tile{background:var(--bg-2);border:1px solid var(--line);border-radius:var(--radius);padding:1.5rem}
.tile__ico{width:46px;height:46px;border-radius:12px;background:var(--brand-soft);display:grid;place-items:center;margin-bottom:.9rem;color:var(--brand);font-size:1.4rem}
.tile h3{font-size:1.15rem;margin-bottom:.35rem}
.tile p{margin:0;color:var(--ink-2);font-size:.94rem}

.steps{counter-reset:s;display:grid;grid-template-columns:repeat(4,1fr);gap:1.2rem}
@media(max-width:900px){.steps{grid-template-columns:repeat(2,1fr)}}
@media(max-width:520px){.steps{grid-template-columns:1fr}}
.step{background:var(--bg-2);border:1px solid var(--line);border-radius:var(--radius);padding:1.4rem;position:relative}
.step::before{counter-increment:s;content:counter(s);font-family:var(--head);font-size:2.4rem;color:var(--brand);opacity:.35;line-height:1}
.step h3{font-size:1.1rem;margin:.4rem 0 .3rem}
.step p{margin:0;font-size:.92rem;color:var(--ink-2)}

.cta{background:linear-gradient(120deg,var(--accent),var(--accent-2));border-radius:20px;padding:3rem 2rem;text-align:center;border:1px solid var(--accent-line)}
.cta h2{margin-bottom:.6rem;color:var(--cta-ink)}
.cta p{color:var(--cta-ink-2);max-width:56ch;margin-inline:auto}

/* ---- 6. product page (PDP) --------------------------------------------- */
.pdp{padding:2.4rem 0 3rem}
.pdp__grid{display:grid;grid-template-columns:1.15fr .85fr;gap:2.6rem;align-items:start}
@media(max-width:980px){.pdp__grid{grid-template-columns:1fr;gap:1.8rem}}
.stockline{display:inline-flex;align-items:center;gap:.5rem;color:var(--brand);font-weight:700;font-size:.82rem;
  letter-spacing:.1em;text-transform:uppercase;margin-bottom:.7rem}
.dot{width:8px;height:8px;border-radius:50%;background:var(--brand);box-shadow:0 0 0 4px var(--brand-soft)}
.priceblock{background:var(--bg-2);border:1px solid var(--line);border-radius:var(--radius);padding:1.3rem;margin:1.2rem 0}
.priceblock__row{display:flex;align-items:baseline;gap:.8rem;flex-wrap:wrap}
.price-lg{font-family:var(--head);font-size:2.9rem;color:var(--brand);line-height:1;font-weight:700}
.was{color:var(--ink-3);text-decoration:line-through;font-size:1.1rem}
.save{background:var(--red,#dc2626);color:#fff;font-size:.76rem;font-weight:800;padding:.28rem .6rem;border-radius:6px;letter-spacing:.05em}
.taxline{font-size:.84rem;color:var(--ink-3);margin-top:.35rem}
.specgrid{display:grid;grid-template-columns:repeat(2,1fr);gap:.7rem;margin:1.2rem 0}
.specgrid div{background:var(--bg-2);border:1px solid var(--line);border-radius:10px;padding:.8rem .9rem}
.specgrid small{display:block;font-size:.68rem;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3);margin-bottom:.2rem}
.specgrid b{font-size:1rem}
@media(max-width:420px){.specgrid{grid-template-columns:1fr}}
.trustrow{display:grid;grid-template-columns:repeat(3,1fr);gap:.7rem;margin-top:1.2rem}
.trustrow div{text-align:center;background:var(--bg-2);border:1px solid var(--line);border-radius:10px;padding:.85rem .5rem;font-size:.78rem;color:var(--ink-2);font-weight:600}
.trustrow b{display:block;color:var(--ink);font-size:.84rem}
.spectable{width:100%;border-collapse:collapse;font-size:.95rem}
.spectable th,.spectable td{text-align:left;padding:.85rem 1rem;border-bottom:1px solid var(--line)}
.spectable th{color:var(--ink-2);font-weight:600;width:44%}
.spectable tr:nth-child(odd){background:var(--bg-2)}
.acc{border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;background:var(--bg-2)}
.acc details{border-bottom:1px solid var(--line)}
.acc details:last-child{border-bottom:0}
.acc summary{cursor:pointer;padding:1.1rem 1.3rem;font-weight:700;list-style:none;display:flex;justify-content:space-between;gap:1rem;align-items:center}
.acc summary::-webkit-details-marker{display:none}
.acc summary::after{content:"+";color:var(--brand);font-size:1.5rem;line-height:1;flex:0 0 auto}
.acc details[open] summary::after{content:"\2212"}
.acc .acc__body{padding:0 1.3rem 1.2rem;color:var(--ink-2)}
.acc .acc__body p:last-child{margin-bottom:0}
.acc .acc__body a{color:var(--brand);text-decoration:underline}
.delivery-summary{list-style:none;margin:1.3rem 0 0;padding:1.1rem 1.2rem;display:grid;gap:.6rem;
  background:var(--bg-2);border:1px solid var(--line);border-radius:var(--radius);font-size:.9rem;color:var(--ink-2)}
.delivery-summary strong{color:var(--ink)}
.delivery-summary a{color:var(--brand);text-decoration:underline}
.keypoints{margin-top:1.3rem;color:var(--ink-2);font-size:.95rem;padding-left:1.1rem}
.keypoints li{margin-bottom:.35rem}
.buynote{font-size:.82rem;color:var(--ink-3);margin:.6rem 0 0}
.attach-table{width:100%;border-collapse:collapse;font-size:.95rem;margin-top:1rem}
.attach-table th,.attach-table td{text-align:left;padding:.7rem 1rem;border-bottom:1px solid var(--line)}
.attach-table td:last-child{text-align:right;font-weight:700;color:var(--brand);white-space:nowrap}
.feature-row{display:grid;grid-template-columns:repeat(2,1fr);gap:1.4rem}
@media(max-width:760px){.feature-row{grid-template-columns:1fr}}

/* sticky mobile buy bar */
.stickybuy{position:fixed;left:0;right:0;bottom:0;z-index:55;background:var(--panel-bg);backdrop-filter:blur(10px);
  border-top:1px solid var(--line);padding:.7rem 1rem;display:none;align-items:center;justify-content:space-between;gap:1rem}
.stickybuy b{font-family:var(--head);font-size:1.5rem;color:var(--brand);font-weight:700}
.stickybuy .btn{padding:.75rem 1.4rem}
@media(max-width:980px){.stickybuy{display:flex}body.single-product{padding-bottom:78px}}

/* ---- 7. cart / checkout / account -------------------------------------- */
.summary{background:var(--bg-2);border:1px solid var(--line);border-radius:var(--radius);padding:1.5rem}
.minipolicy{list-style:none;display:flex;flex-wrap:wrap;gap:.4rem 1rem;margin:1rem 0 0;padding:0;font-size:.82rem}
.minipolicy a{color:var(--ink-3);text-decoration:underline}
.minipolicy a:hover{color:var(--brand)}
.paylist{list-style:none;margin:1.4rem 0 0;padding:1.1rem 1.2rem;display:grid;gap:.5rem;
  background:var(--bg-3);border-radius:10px;font-size:.87rem;color:var(--ink-2)}
.paylist li::before{content:"\2713";color:var(--brand);font-weight:800;margin-right:.5rem}

/* ---- 8. forms ---------------------------------------------------------- */
.form{display:grid;gap:1rem;max-width:640px}
.field label{display:block;font-size:.85rem;font-weight:700;margin-bottom:.35rem;color:var(--ink-2)}
input[type=text],input[type=email],input[type=tel],input[type=url],input[type=password],
input[type=number],input[type=search],textarea,select{
  width:100%;background:var(--bg-2);border:1px solid var(--line);border-radius:10px;
  padding:.85rem 1rem;color:var(--ink);font:inherit}
input:focus,textarea:focus,select:focus{outline:2px solid var(--brand);outline-offset:1px;border-color:transparent}
fieldset{border:1px solid var(--line);border-radius:var(--radius);padding:1.2rem;margin:0 0 1.1rem}
legend{padding:0 .5rem;font-weight:800;font-size:.86rem;letter-spacing:.08em;text-transform:uppercase;color:var(--brand)}
.field2{display:grid;grid-template-columns:1fr 1fr;gap:1rem}
@media(max-width:520px){.field2{grid-template-columns:1fr}}
.formnote{font-size:.85rem;color:var(--ink-3)}

/* ---- 9. footer --------------------------------------------------------- */
.footer{background:var(--bg-2);border-top:1px solid var(--line);padding:3rem 0 1.6rem;margin-top:2rem}
.footer__grid{display:grid;grid-template-columns:1.6fr repeat(3,1fr);gap:2rem}
@media(max-width:860px){.footer__grid{grid-template-columns:1fr 1fr}}
@media(max-width:520px){.footer__grid{grid-template-columns:1fr}}
.footer h4{font-size:1rem;letter-spacing:.08em;margin-bottom:.9rem}
.footer ul{list-style:none;margin:0;padding:0;display:grid;gap:.5rem}
.footer a{color:var(--ink-2);font-size:.92rem}
.footer a:hover{color:var(--brand)}
.footer p{color:var(--ink-2);font-size:.92rem}
.footer__bot{border-top:1px solid var(--line);margin-top:2.2rem;padding-top:1.2rem;display:flex;justify-content:space-between;
  gap:1rem;flex-wrap:wrap;font-size:.82rem;color:var(--ink-3)}
.footer__pay{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap;margin-top:2rem;
  padding-top:1.4rem;border-top:1px solid var(--line);font-size:.82rem;color:var(--ink-3)}
.paychip{background:var(--bg-3);border:1px solid var(--line);border-radius:6px;padding:.3rem .6rem;
  font-size:.72rem;font-weight:800;letter-spacing:.04em;color:var(--ink-2)}

/* policy pages */
.policy{display:grid;grid-template-columns:250px 1fr;gap:2.6rem;align-items:start}
@media(max-width:900px){.policy{grid-template-columns:1fr;gap:1.4rem}}
.policy__toc{position:sticky;top:96px;background:var(--bg-2);border:1px solid var(--line);
  border-radius:var(--radius);padding:1.2rem}
@media(max-width:900px){.policy__toc{position:static}}
.policy__toc h4{font-size:.8rem;letter-spacing:.1em;margin-bottom:.7rem;color:var(--ink-3)}
.policy__toc ul{list-style:none;margin:0;padding:0;display:grid;gap:.45rem}
.policy__toc a{font-size:.9rem;color:var(--ink-2)}
.policy__toc a:hover{color:var(--brand)}
.policy__body{max-width:70ch;color:var(--ink-2);font-size:1rem}
.policy__body h2{font-size:1.5rem;margin:2.4rem 0 .8rem;scroll-margin-top:110px}
.policy__body h2:first-child{margin-top:0}
.policy__body strong{color:var(--ink)}
.policy__body a{color:var(--brand);text-decoration:underline}
.policy__body ol,.policy__body ul{padding-left:1.2rem}
.policy__body li{margin-bottom:.5rem}
.policy__body table{width:100%;border-collapse:collapse;font-size:.95rem;margin:1rem 0}
.policy__body th,.policy__body td{text-align:left;padding:.75rem 1rem;border-bottom:1px solid var(--line)}
.policy__body th{color:var(--ink);font-weight:700}
.idcard{background:var(--bg-2);border:1px solid var(--line);border-radius:var(--radius);padding:1.5rem;margin-top:2rem}
.idcard h3{font-size:1.1rem;margin-bottom:.9rem}
.idcard dl{margin:0;display:grid;gap:.5rem}
.idcard dl>div{display:grid;grid-template-columns:190px 1fr;gap:1rem;font-size:.92rem}
@media(max-width:560px){.idcard dl>div{grid-template-columns:1fr;gap:.15rem}}
.idcard dt{color:var(--ink-3)}
.idcard dd{margin:0;color:var(--ink)}
.idcard a{color:var(--brand)}

/* reveal */
[data-reveal]{opacity:0;transform:translateY(18px);transition:opacity .6s ease,transform .6s ease}
[data-reveal].in{opacity:1;transform:none}
@media(prefers-reduced-motion:reduce){[data-reveal]{opacity:1;transform:none;transition:none}html{scroll-behavior:auto}}

/* ===========================================================================
   10. WooCommerce overrides
   Woo ships its own stylesheet and its own markup. Rather than override it
   template by template, the components above are mapped onto Woo's classes
   here, so a Woo update cannot silently restyle the store.
   ======================================================================== */

.woocommerce-notices-wrapper:empty{display:none}
.woocommerce-message,.woocommerce-info,.woocommerce-error{
  background:var(--bg-2);border:1px solid var(--line);border-left:4px solid var(--brand);
  border-radius:10px;padding:1rem 1.2rem;margin:0 0 1.4rem;color:var(--ink-2);list-style:none}
.woocommerce-error{border-left-color:var(--red,#dc2626)}
/* Woo draws an icon into these with a ::before glyph from its own icon font.
   That font is not loaded here, so it rendered as a broken-image box next to
   every notice. The coloured left border already says what the notice is. */
.woocommerce-message::before,.woocommerce-info::before,.woocommerce-error::before{display:none}
.woocommerce-message,.woocommerce-info,.woocommerce-error{padding-left:1.2rem}
.woocommerce-message a,.woocommerce-info a,.woocommerce-error a{color:var(--brand);text-decoration:underline}

/* Woo buttons -> .btn */
.woocommerce a.button,.woocommerce button.button,.woocommerce input.button,
.woocommerce a.button.alt,.woocommerce button.button.alt,.woocommerce input.button.alt,
.wc-block-components-button{
  display:inline-flex;align-items:center;justify-content:center;gap:.6rem;
  padding:.95rem 1.7rem;border-radius:999px;font-weight:800;font-size:.98rem;
  border:2px solid transparent;cursor:pointer;transition:.18s ease;line-height:1.2;
  background:var(--brand);color:var(--brand-ink);text-shadow:none}
.woocommerce a.button:hover,.woocommerce button.button:hover,.woocommerce input.button:hover,
.woocommerce a.button.alt:hover,.woocommerce button.button.alt:hover,.woocommerce input.button.alt:hover{
  background:var(--brand-hover);color:var(--brand-ink);transform:translateY(-2px)}
.woocommerce button.button:disabled,.woocommerce button.button.disabled{opacity:.5;cursor:not-allowed;transform:none}
.woocommerce .button.wc-backward{background:transparent;border-color:var(--brand);color:var(--brand)}

/* prices */
.woocommerce div.product p.price,.woocommerce div.product span.price{
  color:var(--brand);font-family:var(--head);font-size:2.9rem;line-height:1;font-weight:700}
.woocommerce div.product p.price del,.woocommerce div.product span.price del{
  color:var(--ink-3);font-family:var(--font);font-size:1.1rem;font-weight:400;opacity:1}
.woocommerce div.product p.price ins,.woocommerce div.product span.price ins{
  text-decoration:none;background:transparent;color:var(--brand)}
.woocommerce ul.products li.product .price{color:var(--brand);font-family:var(--head);font-size:1.9rem;font-weight:700}
.woocommerce ul.products li.product .price del{color:var(--ink-3);font-family:var(--font);font-size:.98rem;font-weight:400}
.woocommerce ul.products li.product .price ins{text-decoration:none;background:transparent}

/* shop loop -> card grid (the loop item itself is our .card markup) */
.woocommerce ul.products{display:grid;grid-template-columns:repeat(4,1fr);gap:1.2rem;margin:0;padding:0;list-style:none}
.woocommerce ul.products::before,.woocommerce ul.products::after{display:none}
.woocommerce ul.products li.product{width:auto;margin:0;float:none;padding:0}
@media(max-width:980px){.woocommerce ul.products{grid-template-columns:repeat(2,1fr)}}
@media(max-width:520px){.woocommerce ul.products{grid-template-columns:1fr}}
.woocommerce .woocommerce-result-count,.woocommerce .woocommerce-ordering{color:var(--ink-2);font-size:.9rem}
.woocommerce .woocommerce-ordering select{width:auto;padding:.5rem .8rem}
.woocommerce span.onsale{background:var(--brand);color:var(--brand-ink);font-family:var(--font);
  font-weight:800;font-size:.72rem;letter-spacing:.06em;padding:.34rem .7rem;border-radius:999px;
  min-height:0;min-width:0;line-height:1.4;top:.9rem;right:.9rem;left:auto;margin:0}

/* single product */
.woocommerce div.product{margin-bottom:0;position:relative}
.woocommerce span.onsale{position:absolute}
/* On the PDP the sale badge is emitted before the gallery, so anchoring it to
   div.product put it top-right of the whole two-column grid -- i.e. on top of
   the stock line in the buy box. Anchor it to the grid and sit it over the
   gallery instead, which is where a "Save $1,100" badge belongs. */
.woocommerce div.product .pdp__grid{position:relative}
.woocommerce div.product .pdp__grid>.onsale{top:.9rem;left:.9rem;right:auto;z-index:3}
@media(max-width:980px){.woocommerce div.product .pdp__grid>.onsale{top:.6rem;left:.6rem}}
.woocommerce div.product div.images,.woocommerce div.product div.summary{float:none;width:auto;margin:0}
.woocommerce div.product div.images img{border-radius:var(--radius)}
.woocommerce div.product .woocommerce-product-gallery{border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;background:var(--bg-3)}
/* auto-fill, not a fixed 8: these galleries carry 10 shots, which wrapped into
   a squashed second row on a hardcoded 8-column grid */
.woocommerce div.product .flex-control-thumbs{display:grid;grid-template-columns:repeat(auto-fill,minmax(68px,1fr));gap:.5rem;margin:.6rem;padding:0}
.woocommerce div.product .flex-control-thumbs li{width:auto;float:none;margin:0;list-style:none}
.woocommerce div.product .flex-control-thumbs img{border:2px solid var(--line);border-radius:9px;opacity:1}
.woocommerce div.product .flex-control-thumbs img.flex-active,
.woocommerce div.product .flex-control-thumbs img:hover{border-color:var(--brand);opacity:1}
@media(max-width:560px){.woocommerce div.product .flex-control-thumbs{grid-template-columns:repeat(auto-fill,minmax(56px,1fr))}}
.woocommerce div.product form.cart{margin:0}
.woocommerce div.product form.cart div.quantity{float:none;margin:0}
.woocommerce .quantity input.qty{width:74px;min-height:56px;text-align:center;background:var(--bg-2);
  border:1px solid var(--line);border-radius:999px;color:var(--ink);font:inherit;font-weight:700}
.woocommerce div.product form.cart .button{flex:1;min-height:56px}
.woocommerce-variation-add-to-cart{display:flex;gap:.7rem;align-items:stretch}
.woocommerce div.product .product_meta{font-size:.85rem;color:var(--ink-3);margin-top:1rem}
.woocommerce div.product .woocommerce-tabs ul.tabs{padding:0;margin:0 0 1.2rem;border-bottom:1px solid var(--line)}
.woocommerce div.product .woocommerce-tabs ul.tabs::before{border-bottom-color:var(--line)}
.woocommerce div.product .woocommerce-tabs ul.tabs li{background:var(--bg-2);border:1px solid var(--line);border-radius:10px 10px 0 0}
.woocommerce div.product .woocommerce-tabs ul.tabs li.active{background:var(--bg-3);border-bottom-color:var(--bg-3)}
.woocommerce div.product .woocommerce-tabs ul.tabs li a{color:var(--ink-2);font-weight:700}
.woocommerce div.product .woocommerce-tabs ul.tabs li.active a{color:var(--brand)}
.woocommerce-Reviews .comment-text{background:var(--bg-2);border:1px solid var(--line);border-radius:var(--radius);padding:1.2rem}

/* cart */
.woocommerce table.shop_table{border:1px solid var(--line);border-radius:var(--radius);border-collapse:separate;border-spacing:0;overflow:hidden}
.woocommerce table.shop_table th{background:var(--bg-2);color:var(--ink);font-weight:700;padding:1rem}
.woocommerce table.shop_table td{border-top:1px solid var(--line);padding:1rem;color:var(--ink-2)}
.woocommerce table.shop_table td.product-name a{color:var(--ink);font-weight:700}
.woocommerce table.shop_table img{width:72px;border-radius:9px}
.woocommerce-cart table.cart td.actions .coupon .input-text{width:auto;min-width:180px;display:inline-block;margin-right:.6rem}
.woocommerce .cart-collaterals .cart_totals,.woocommerce-page .cart-collaterals .cart_totals{width:100%;float:none}
.woocommerce .cart_totals table.shop_table{background:var(--bg-2)}
.woocommerce .cart_totals h2{font-size:1.4rem}
.cart-collaterals{background:var(--bg-2);border:1px solid var(--line);border-radius:var(--radius);padding:1.5rem}
.woocommerce a.remove{color:var(--ink-3)!important;font-weight:400}
.woocommerce a.remove:hover{color:var(--red,#dc2626)!important;background:transparent}

/* Cart / Checkout / My account: full width, no reading measure. See page.php. */
.storepage{width:100%}
.storepage a{color:var(--brand)}
.storepage a.button,.storepage .button{color:var(--brand-ink)}

/* ---- cart layout: items left, totals right ---- */
/* Woo's classic cart stacks the totals under a full-width table, which on a
   1360px page leaves the right half empty and the totals a long way from the
   items. */
body.woocommerce-cart .woocommerce{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,.85fr);gap:2.2rem;align-items:start}
body.woocommerce-cart .woocommerce>.woocommerce-notices-wrapper{grid-column:1/-1}
body.woocommerce-cart .cart-collaterals{position:sticky;top:96px;margin:0}
body.woocommerce-cart .cart-collaterals .cart_totals{width:100%;float:none}
@media(max-width:900px){
  body.woocommerce-cart .woocommerce{grid-template-columns:1fr;gap:1.4rem}
  body.woocommerce-cart .cart-collaterals{position:static}
}

/* ---- checkout layout: details left, order summary right ---- */
body.woocommerce-checkout form.checkout{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,.9fr);
  grid-template-rows:auto 1fr;gap:0 2.2rem;align-items:start}
body.woocommerce-checkout form.checkout>#customer_details{grid-column:1;grid-row:1/-1}
body.woocommerce-checkout form.checkout>#order_review_heading{grid-column:2;grid-row:1;margin:0 0 .9rem;font-size:1.3rem}
body.woocommerce-checkout form.checkout>#order_review{grid-column:2;grid-row:2;position:sticky;top:96px}
/* billing and "additional information" stack in the narrower left column
   rather than sitting side by side and squeezing every field */
body.woocommerce-checkout #customer_details.col2-set{display:block}
body.woocommerce-checkout #customer_details .col-1,
body.woocommerce-checkout #customer_details .col-2{width:auto;float:none;margin:0}
body.woocommerce-checkout #customer_details .col-2{margin-top:1.6rem}
@media(max-width:900px){
  body.woocommerce-checkout form.checkout{grid-template-columns:1fr;grid-template-rows:auto;gap:1.4rem}
  body.woocommerce-checkout form.checkout>#customer_details,
  body.woocommerce-checkout form.checkout>#order_review_heading,
  body.woocommerce-checkout form.checkout>#order_review{grid-column:1;grid-row:auto;position:static}
}

/* checkout */
.woocommerce-checkout #customer_details{background:var(--bg-2);border:1px solid var(--line);border-radius:var(--radius);padding:1.6rem;margin-bottom:1.4rem}
.woocommerce-checkout #order_review_heading{margin-top:2rem}
.woocommerce-checkout #order_review{background:var(--bg-2);border:1px solid var(--line);border-radius:var(--radius);padding:1.6rem}
/* Woo's own stylesheet targets `.woocommerce form .form-row input.input-text`,
   which outranks the bare `input[type=text]` rule in the forms section above.
   Without matching that specificity the checkout rendered white input boxes on
   the three dark stores. */
.woocommerce form .form-row input.input-text,
.woocommerce form .form-row textarea,
.woocommerce form .form-row select,
.woocommerce-page form .form-row input.input-text,
.woocommerce-page form .form-row textarea,
.woocommerce table.shop_table input.input-text,
.woocommerce .quantity input.qty{
  width:100%;background:var(--bg-2);border:1px solid var(--line);border-radius:10px;
  padding:.85rem 1rem;color:var(--ink);font:inherit;box-shadow:none}
.woocommerce form .form-row input.input-text::placeholder,
.woocommerce form .form-row textarea::placeholder{color:var(--ink-3)}
.woocommerce form .form-row input.input-text:focus,
.woocommerce form .form-row textarea:focus,
.woocommerce form .form-row select:focus{outline:2px solid var(--brand);outline-offset:1px;border-color:transparent}
.woocommerce .quantity input.qty{padding:.5rem;text-align:center}

.woocommerce form .form-row label{font-size:.85rem;font-weight:700;color:var(--ink-2);margin-bottom:.35rem}
.woocommerce form .form-row{padding:0;margin:0 0 1rem}
.woocommerce form .form-row .required{color:var(--red,#dc2626);text-decoration:none}
.woocommerce-checkout #payment{background:var(--bg-3);border-radius:var(--radius);border:1px solid var(--line)}
.woocommerce-checkout #payment ul.payment_methods{border-bottom:1px solid var(--line);padding:1.2rem}
.woocommerce-checkout #payment div.form-row{padding:1.2rem}
.woocommerce-checkout #payment div.payment_box{background:var(--bg-2);color:var(--ink-2);border-radius:10px}
.woocommerce-checkout #payment div.payment_box::before{border-bottom-color:var(--bg-2)}
.woocommerce-checkout #payment ul.payment_methods li{color:var(--ink-2)}
.select2-container--default .select2-selection--single{background:var(--bg-2);border:1px solid var(--line);border-radius:10px;height:auto;padding:.5rem .4rem}
.select2-container--default .select2-selection--single .select2-selection__rendered{color:var(--ink);line-height:1.8}
.select2-dropdown{background:var(--bg-2);border-color:var(--line);color:var(--ink)}
.select2-container--default .select2-results__option--highlighted[aria-selected]{background:var(--brand);color:var(--brand-ink)}

/* account + order tracking */
.woocommerce-MyAccount-navigation ul{list-style:none;margin:0 0 1.4rem;padding:0;display:flex;flex-wrap:wrap;gap:.5rem}
.woocommerce-MyAccount-navigation a{display:inline-block;padding:.6rem 1.1rem;background:var(--bg-2);
  border:1px solid var(--line);border-radius:999px;font-size:.9rem;font-weight:700;color:var(--ink-2)}
.woocommerce-MyAccount-navigation li.is-active a{background:var(--brand);color:var(--brand-ink);border-color:var(--brand)}
.woocommerce-order .woocommerce-order-overview{list-style:none;padding:1.2rem;background:var(--bg-2);
  border:1px solid var(--line);border-radius:var(--radius);display:grid;gap:.6rem}
form.track_order{max-width:640px}

/* Woo block cart/checkout, if the store uses the block templates */
.wc-block-components-title,.wc-block-cart__totals-title{color:var(--ink)}
.wc-block-cart,.wc-block-checkout{color:var(--ink-2)}
.wc-block-components-totals-item__value,.wc-block-formatted-money-amount{color:var(--ink)}
