@charset "UTF-8";
/* ==========================================================================
   GUN SNACKS v2 — main stylesheet

   PART 1 (below, through "age gate") is lifted VERBATIM from the approved
   design source, gun-snacks-site-current.html. Do not reformat or "tidy" it —
   it is the pixel reference. Add new rules in PART 2 instead.

   ONE deliberate deviation: the source's bare `nav{...}` rules are scoped here
   to `nav#site-nav`. The source document had exactly one <nav>; WordPress and
   WooCommerce emit several (breadcrumbs, pagination, menus), and unscoped the
   rules gave the breadcrumb a sticky bar and a 3px border, and — via
   `nav ul li:not(:last-child){display:none}` — hid all but the last breadcrumb
   and pagination item on mobile. Rendering of the actual site nav is
   unchanged; this is verified by the geometry diff against the source.

   PART 2 adds: age-gate visibility logic, WordPress core classes, editorial
   page/archive styling, and WooCommerce restyled in brand tokens.

   Tokens: --yellow #FFCE00  --black #111010  --red #E23A22  --paper #F5F0E4
   Rules:  3px solid black borders, 6px 6px 0 offset shadows, zero radius,
           flat color, no gradients.
   ========================================================================== */

/* ==========================================================================
   PART 1 — VERBATIM FROM DESIGN SOURCE
   ========================================================================== */
  :root{
    --yellow:#FFCE00;
    --black:#111010;
    --red:#E23A22;
    --paper:#F5F0E4;
    --kraft:#B8956A;
  }
  *{margin:0;padding:0;box-sizing:border-box;}
  html{scroll-behavior:smooth;}
  body{
    font-family:'Space Grotesk',Arial,sans-serif;
    background:var(--paper);
    color:var(--black);
    -webkit-font-smoothing:antialiased;
  }
  h1,h2,h3,.display{
    font-family:'Anton',Impact,sans-serif;
    font-weight:400;
    text-transform:uppercase;
    letter-spacing:.01em;
    line-height:.95;
  }
  .mono{font-family:'IBM Plex Mono',monospace;}

  /* ---------- photo placeholder system ---------- */
  .photo{
    position:relative;
    background:
      repeating-linear-gradient(45deg, rgba(17,16,16,.06) 0 14px, transparent 14px 28px),
      linear-gradient(160deg,#d9d2c0,#c4bca6);
    display:flex;align-items:flex-end;justify-content:flex-start;
    overflow:hidden;
  }
  .photo .shotnote{
    margin:14px;
    background:var(--black);
    color:var(--paper);
    font-size:11px;
    letter-spacing:.08em;
    text-transform:uppercase;
    padding:6px 10px;
    max-width:78%;
    line-height:1.5;
  }
  .photo .shotnote b{color:var(--yellow);}
  .photo.dark{
    background:
      repeating-linear-gradient(45deg, rgba(245,240,228,.05) 0 14px, transparent 14px 28px),
      linear-gradient(160deg,#232120,#111010);
  }

  /* ---------- top bar ---------- */
  .ticker{
    background:var(--black);color:var(--yellow);
    font-size:12px;letter-spacing:.14em;text-transform:uppercase;
    padding:8px 0;white-space:nowrap;overflow:hidden;
  }
  .ticker span{display:inline-block;padding-left:100%;animation:tick 26s linear infinite;}
  @keyframes tick{to{transform:translateX(-100%);}}
  @media (prefers-reduced-motion: reduce){
    .ticker span{animation:none;padding-left:16px;}
  }

  nav#site-nav{
    display:flex;align-items:center;justify-content:space-between;
    padding:18px 28px;
    background:var(--paper);
    border-bottom:3px solid var(--black);
    position:sticky;top:0;z-index:50;
  }
  .logo{font-family:'Anton',Impact,sans-serif;font-size:26px;text-transform:uppercase;letter-spacing:.02em;text-decoration:none;color:var(--black);}
  .logo em{font-style:normal;color:var(--red);}
  nav#site-nav ul{display:flex;gap:26px;list-style:none;}
  nav#site-nav a{color:var(--black);text-decoration:none;font-size:13px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;}
  nav#site-nav a:hover, nav#site-nav a:focus-visible{color:var(--red);}
  a:focus-visible, button:focus-visible{outline:3px solid var(--red);outline-offset:2px;}
  nav#site-nav a.cart{background:var(--black);color:var(--yellow) !important;padding:9px 16px;}
  nav#site-nav a.cart:hover{background:var(--red);color:var(--paper) !important;}
  @media(max-width:760px){nav#site-nav ul li:not(:last-child){display:none;}}

  /* ---------- hero ---------- */
  .hero{position:relative;border-bottom:3px solid var(--black);}
  .hero .photo{height:min(78vh,720px);}
  .hero-copy{
    position:absolute;inset:0;
    display:flex;flex-direction:column;justify-content:center;
    padding:0 28px;pointer-events:none;
  }
  .hero-copy h1{
    font-size:clamp(56px,11vw,150px);
    color:var(--paper);
    text-shadow:4px 4px 0 var(--black);
    max-width:12ch;
  }
  .hero-copy h1 .yel{color:var(--yellow);}
  .hero-copy p{
    margin-top:18px;color:var(--paper);
    background:var(--black);display:inline-block;width:fit-content;
    padding:8px 14px;font-size:15px;letter-spacing:.05em;
  }
  .hero-copy .btn{pointer-events:auto;}
  .btn{
    display:inline-block;margin-top:26px;width:fit-content;
    background:var(--yellow);color:var(--black);
    font-family:'Anton',Impact,sans-serif;text-transform:uppercase;
    font-size:20px;letter-spacing:.04em;
    padding:16px 34px;text-decoration:none;
    border:3px solid var(--black);
    box-shadow:6px 6px 0 var(--black);
    transition:transform .1s, box-shadow .1s;
  }
  .btn:hover{transform:translate(2px,2px);box-shadow:3px 3px 0 var(--black);background:var(--red);color:var(--paper);}

  /* ---------- product grid ---------- */
  section{padding:72px 28px;}
  .kicker{
    font-size:13px;font-weight:700;letter-spacing:.22em;text-transform:uppercase;
    color:var(--red);margin-bottom:10px;
  }
  .section-title{font-size:clamp(36px,6vw,72px);margin-bottom:40px;}
  .grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;max-width:1240px;margin:0 auto;}
  @media(max-width:900px){.grid{grid-template-columns:1fr;}}
  .card{border:3px solid var(--black);background:#fff;display:flex;flex-direction:column;}
  .card .photo{aspect-ratio:4/5;}
  .card-body{padding:18px;border-top:3px solid var(--black);display:flex;align-items:baseline;justify-content:space-between;gap:10px;}
  .card-body h3{font-size:22px;}
  .card-body .flavor{display:block;font-family:'Space Grotesk',sans-serif;font-size:12px;font-weight:500;letter-spacing:.1em;text-transform:uppercase;color:var(--red);margin-top:4px;}
  .price{font-family:'Anton',Impact,sans-serif;font-size:22px;white-space:nowrap;}
  .badge{
    position:absolute;top:12px;right:12px;
    background:var(--red);color:var(--paper);
    font-family:'Anton',Impact,sans-serif;font-size:13px;letter-spacing:.06em;text-transform:uppercase;
    padding:6px 10px;transform:rotate(4deg);
  }
  .statchip{
    display:flex;justify-content:space-between;
    padding:10px 18px;border-top:1px dashed var(--black);
    font-family:'IBM Plex Mono',monospace;font-size:12px;letter-spacing:.02em;
    background:var(--paper);
  }
  .statchip b{color:var(--red);}

  /* ---------- ballistic facts / receipts ---------- */
  .receipts{background:var(--black);color:var(--paper);border-top:3px solid var(--black);border-bottom:3px solid var(--black);}
  .receipts-inner{max-width:1240px;margin:0 auto;display:grid;grid-template-columns:1fr 420px;gap:56px;align-items:center;}
  @media(max-width:980px){.receipts-inner{grid-template-columns:1fr;}}
  .receipts h2{font-size:clamp(36px,6vw,72px);color:var(--yellow);margin-bottom:22px;}
  .receipts p{font-size:clamp(16px,1.8vw,20px);line-height:1.65;max-width:56ch;}
  .receipts p + p{margin-top:14px;}
  .receipts .lotlink{color:var(--yellow);font-weight:700;}

  .factslabel{
    background:#fff;color:var(--black);
    border:3px solid var(--black);
    padding:18px 20px;
    font-family:'IBM Plex Mono',monospace;
    box-shadow:10px 10px 0 var(--red);
  }
  .factslabel .fl-title{
    font-family:'Anton',Impact,sans-serif;font-size:34px;text-transform:uppercase;
    border-bottom:10px solid var(--black);padding-bottom:6px;letter-spacing:.01em;
  }
  .factslabel .fl-serving{font-size:12px;padding:8px 0;border-bottom:4px solid var(--black);line-height:1.5;}
  .factslabel table{width:100%;border-collapse:collapse;font-size:13px;}
  .factslabel td{padding:7px 0;border-bottom:1px solid var(--black);}
  .factslabel td:last-child{text-align:right;font-weight:600;}
  .factslabel tr.major td{font-weight:600;border-bottom:4px solid var(--black);}
  .factslabel .fl-foot{font-size:10.5px;line-height:1.6;padding-top:10px;}
  .factslabel .fl-foot b{color:var(--red);}

  /* ---------- meme review wall ---------- */
  .reviews{background:var(--yellow);border-bottom:3px solid var(--black);}
  .review-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;max-width:1240px;margin:0 auto;}
  @media(max-width:900px){.review-grid{grid-template-columns:1fr;}}
  .review{
    background:var(--paper);border:3px solid var(--black);padding:22px;
    box-shadow:6px 6px 0 var(--black);
  }
  .review:nth-child(2){transform:rotate(-1deg);}
  .review:nth-child(3){transform:rotate(1.2deg);}
  .review .stars{font-size:18px;letter-spacing:.15em;color:var(--red);margin-bottom:10px;}
  .review blockquote{font-size:16px;line-height:1.55;}
  .review cite{
    display:block;margin-top:14px;font-style:normal;font-size:12px;
    font-weight:700;letter-spacing:.1em;text-transform:uppercase;
  }
  .review cite span{display:block;font-weight:400;color:#6b6555;margin-top:2px;text-transform:none;letter-spacing:0;}

  /* ---------- full bleed lifestyle ---------- */
  .bleed{padding:0;border-bottom:3px solid var(--black);}
  .bleed .photo{height:min(70vh,620px);}
  .bleed-caption{
    position:absolute;top:40px;left:28px;
    color:var(--paper);font-size:clamp(30px,5vw,60px);
    text-shadow:3px 3px 0 var(--black);max-width:14ch;
  }

  /* ---------- drop strip ---------- */
  .drop{background:var(--red);border-bottom:3px solid var(--black);color:var(--paper);}
  .drop-inner{max-width:1240px;margin:0 auto;display:grid;grid-template-columns:1.1fr .9fr;gap:40px;align-items:center;}
  @media(max-width:900px){.drop-inner{grid-template-columns:1fr;}}
  .drop h2{font-size:clamp(36px,5.5vw,66px);}
  .drop p{margin-top:14px;font-size:17px;line-height:1.55;max-width:48ch;}
  .drop .photo{aspect-ratio:1/1;border:3px solid var(--black);}
  .btn.alt{background:var(--black);color:var(--yellow);}
  .btn.alt:hover{background:var(--paper);color:var(--black);}

  /* ---------- email ---------- */
  .email{background:var(--paper);text-align:center;}
  .email h2{font-size:clamp(32px,5vw,58px);}
  .email p{margin:14px 0 26px;font-size:16px;}
  .email-row{display:flex;justify-content:center;gap:0;max-width:520px;margin:0 auto;}
  .email input{
    flex:1;border:3px solid var(--black);border-right:0;background:#fff;
    padding:16px 18px;font-family:'Space Grotesk',sans-serif;font-size:15px;
  }
  .email button{
    border:3px solid var(--black);background:var(--black);color:var(--yellow);
    font-family:'Anton',Impact,sans-serif;text-transform:uppercase;font-size:17px;
    padding:0 26px;cursor:pointer;
  }
  .email button:hover{background:var(--red);color:var(--paper);}

  /* ---------- footer ---------- */
  footer{background:var(--black);color:var(--paper);padding:56px 28px 32px;}
  .foot-grid{max-width:1240px;margin:0 auto;display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:36px;}
  @media(max-width:900px){.foot-grid{grid-template-columns:1fr 1fr;}}
  footer .logo{color:var(--paper);font-size:30px;}
  footer h4{font-size:12px;letter-spacing:.2em;text-transform:uppercase;color:var(--yellow);margin-bottom:14px;}
  footer ul{list-style:none;}
  footer li{margin-bottom:10px;}
  footer a{color:var(--paper);text-decoration:none;font-size:14px;}
  footer a:hover{color:var(--yellow);}
  .legal{
    max-width:1240px;margin:44px auto 0;padding-top:20px;
    border-top:1px solid rgba(245,240,228,.25);
    font-size:12px;line-height:1.7;color:rgba(245,240,228,.7);
  }

  /* ---------- age gate ---------- */
  .gate{
    position:fixed;inset:0;background:var(--black);z-index:100;
    display:flex;align-items:center;justify-content:center;text-align:center;padding:24px;
  }
  .gate-box{max-width:480px;}
  .gate h2{color:var(--yellow);font-size:clamp(40px,8vw,68px);}
  .gate p{color:var(--paper);margin:18px 0 28px;font-size:16px;line-height:1.6;}
  .gate .row{display:flex;gap:14px;justify-content:center;}
  .gate button{
    font-family:'Anton',Impact,sans-serif;text-transform:uppercase;font-size:19px;
    padding:14px 30px;cursor:pointer;border:3px solid var(--yellow);
  }
  .gate .yes{background:var(--yellow);color:var(--black);}
  .gate .yes:hover{background:var(--red);border-color:var(--red);color:var(--paper);}
  .gate .no{background:transparent;color:var(--yellow);}

/* ==========================================================================
   PART 2 — WORDPRESS / WOOCOMMERCE LAYER
   ========================================================================== */

/* --------------------------------------------------------------------------
   AGE GATE — visibility
   The gate markup is always rendered. An inline blocking script in <head>
   adds .gs-verified to <html> when the acceptance cookie is present, so
   returning visitors never see a flash of the gate. With JS disabled the
   gate stays visible (fail-closed), which is the correct behaviour for a
   compliance control.
   -------------------------------------------------------------------------- */
.gs-verified .gate{display:none;}
html:not(.gs-verified) body{overflow:hidden;}
.gate-box .gate-legal{
  color:rgba(245,240,228,.55);font-size:12px;line-height:1.6;margin-top:22px;
}

/* Keep the sticky nav clear of the WP admin bar for logged-in users. */
.admin-bar nav#site-nav{top:32px;}
@media screen and (max-width:782px){.admin-bar nav#site-nav{top:46px;}}

/* --------------------------------------------------------------------------
   WORDPRESS CORE CLASSES
   -------------------------------------------------------------------------- */
.screen-reader-text{
  border:0;clip:rect(1px,1px,1px,1px);clip-path:inset(50%);height:1px;width:1px;
  margin:-1px;overflow:hidden;padding:0;position:absolute;word-wrap:normal!important;
}
.screen-reader-text:focus{
  background:var(--yellow);color:var(--black);clip:auto;clip-path:none;
  display:block;font-family:'Anton',Impact,sans-serif;text-transform:uppercase;
  font-size:16px;height:auto;left:8px;line-height:normal;padding:14px 22px;
  top:8px;width:auto;z-index:100000;border:3px solid var(--black);
  box-shadow:6px 6px 0 var(--black);text-decoration:none;
}
.alignleft{float:left;margin:0 26px 20px 0;}
.alignright{float:right;margin:0 0 20px 26px;}
.aligncenter{display:block;margin:0 auto 20px;}
.alignwide,.alignfull{max-width:none;}
img{max-width:100%;height:auto;}
.wp-caption{max-width:100%;}
.wp-caption-text,figcaption{
  font-family:'IBM Plex Mono',monospace;font-size:12px;
  padding:8px 0;color:#6b6555;
}
.sticky,.bypostauthor{}

/* --------------------------------------------------------------------------
   EDITORIAL PAGES — page.php / index.php / 404.php / policy pages
   -------------------------------------------------------------------------- */
.page-head{
  border-bottom:3px solid var(--black);
  padding:64px 28px 44px;background:var(--yellow);
}
.page-head-inner{max-width:1240px;margin:0 auto;}
.page-head h1{font-size:clamp(40px,7vw,84px);max-width:18ch;}
.page-head .kicker{color:var(--black);}

.entry{max-width:74ch;margin:0 auto;}
.entry p,.entry li{font-size:17px;line-height:1.7;}
.entry p+p{margin-top:16px;}
.entry h2{font-size:clamp(28px,4vw,44px);margin:40px 0 14px;}
.entry h3{font-size:clamp(22px,3vw,30px);margin:32px 0 12px;}
.entry ul,.entry ol{margin:16px 0 16px 22px;}
.entry li{margin-bottom:9px;}
.entry a{color:var(--black);text-decoration:underline;text-decoration-thickness:2px;
  text-underline-offset:3px;font-weight:700;}
.entry a:hover{color:var(--red);}
.entry blockquote{
  border-left:6px solid var(--red);padding:6px 0 6px 20px;margin:24px 0;
  font-size:19px;line-height:1.6;
}
.entry img{border:3px solid var(--black);}
.entry table{width:100%;border-collapse:collapse;border:3px solid var(--black);
  font-family:'IBM Plex Mono',monospace;font-size:14px;margin:24px 0;}
.entry th,.entry td{border:1px solid var(--black);padding:10px 12px;text-align:left;}
.entry th{background:var(--black);color:var(--yellow);text-transform:uppercase;
  letter-spacing:.1em;font-size:12px;}
.entry code,.entry pre{font-family:'IBM Plex Mono',monospace;background:#fff;
  border:2px solid var(--black);}
.entry code{padding:2px 6px;font-size:.92em;}
.entry pre{padding:16px;overflow-x:auto;margin:20px 0;}
.entry pre code{border:0;padding:0;}

/* Post/archive listing */
.post-list{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;
  max-width:1240px;margin:0 auto;}
@media(max-width:900px){.post-list{grid-template-columns:1fr;}}
.post-card{border:3px solid var(--black);background:#fff;display:flex;
  flex-direction:column;}
.post-card .photo{aspect-ratio:16/10;}
.post-card-body{padding:20px;border-top:3px solid var(--black);}
.post-card h2{font-size:24px;margin-bottom:8px;}
.post-card h2 a{color:var(--black);text-decoration:none;}
.post-card h2 a:hover{color:var(--red);}
.post-card .meta{font-family:'IBM Plex Mono',monospace;font-size:12px;
  color:#6b6555;margin-bottom:10px;}
.post-card p{font-size:15px;line-height:1.6;}

/* Pagination — shared by blog + shop */
.gs-pagination,.woocommerce-pagination{
  max-width:1240px;margin:48px auto 0;display:flex;justify-content:center;
}
.gs-pagination .page-numbers,.woocommerce-pagination .page-numbers{
  list-style:none;display:flex;gap:10px;flex-wrap:wrap;padding:0;
}
.gs-pagination a.page-numbers,.gs-pagination span.page-numbers,
.woocommerce-pagination a.page-numbers,.woocommerce-pagination span.page-numbers{
  display:block;border:3px solid var(--black);background:#fff;color:var(--black);
  font-family:'Anton',Impact,sans-serif;font-size:17px;text-transform:uppercase;
  padding:10px 17px;text-decoration:none;
}
.gs-pagination .current,.woocommerce-pagination .current{
  background:var(--black);color:var(--yellow);
}
.gs-pagination a:hover,.woocommerce-pagination a:hover{
  background:var(--red);color:var(--paper);
}

/* 404 */
.gs-404{text-align:center;}
.gs-404 h1{font-size:clamp(70px,18vw,190px);color:var(--red);}
.gs-404 p{font-size:18px;margin:16px auto 0;max-width:46ch;line-height:1.65;}

/* ==========================================================================
   WOOCOMMERCE
   Stock Woo markup restyled with brand tokens. The only template override
   in this theme is woocommerce/content-product.php (the loop card), because
   the card needs a structure — photo / name+flavor / price / stat strip —
   that CSS alone cannot produce from Woo's default markup. Everything else
   below is pure CSS over stock output, plus hooks in functions.php.
   ========================================================================== */

/* ---- Shop wrappers ------------------------------------------------------- */
.gs-shop{padding:72px 28px;}
.gs-shop-inner{max-width:1240px;margin:0 auto;}
.woocommerce-products-header{max-width:1240px;margin:0 auto;}
.woocommerce-products-header__title{font-size:clamp(36px,6vw,72px);margin-bottom:10px;}

.woocommerce-breadcrumb{
  font-family:'IBM Plex Mono',monospace;font-size:12px;letter-spacing:.06em;
  text-transform:uppercase;color:#6b6555;
  max-width:1240px;margin:0 auto 26px;
}
.woocommerce-breadcrumb a{color:var(--black);text-decoration:none;font-weight:600;}
.woocommerce-breadcrumb a:hover{color:var(--red);}

/* Result count + sort dropdown */
.woocommerce-result-count{
  font-family:'IBM Plex Mono',monospace;font-size:12px;text-transform:uppercase;
  letter-spacing:.08em;color:#6b6555;margin-bottom:22px;
}
.woocommerce-ordering select,
.gs-shop select,.entry select{
  font-family:'IBM Plex Mono',monospace;font-size:13px;
  border:3px solid var(--black);background:#fff;color:var(--black);
  padding:11px 14px;border-radius:0;cursor:pointer;
}
.woocommerce-ordering{margin-bottom:22px;}

/* ---- Product grid -------------------------------------------------------- */
/* Woo's loop wrapper. .card / .photo / .statchip / .price are the design
   source's classes, reused verbatim by content-product.php. */
ul.products{
  list-style:none;display:grid;grid-template-columns:repeat(3,1fr);gap:22px;
  max-width:1240px;margin:0 auto;padding:0;
}
@media(max-width:900px){ul.products{grid-template-columns:1fr;}}
ul.products::before,ul.products::after{content:none;display:none;}
ul.products li.product{
  border:3px solid var(--black);background:#fff;
  display:flex;flex-direction:column;margin:0;width:auto;float:none;
}
ul.products li.product a.gs-card-link{text-decoration:none;color:inherit;display:block;}
ul.products li.product .photo{aspect-ratio:4/5;}
ul.products li.product .photo img{
  width:100%;height:100%;object-fit:cover;display:block;
}
/* Woo prints .onsale inside the card; style it as the design's .badge */
ul.products li.product .onsale,
.single-product .onsale{
  position:absolute;top:12px;right:12px;z-index:2;
  background:var(--red);color:var(--paper);
  font-family:'Anton',Impact,sans-serif;font-size:13px;letter-spacing:.06em;
  text-transform:uppercase;padding:6px 10px;transform:rotate(4deg);
  margin:0;border-radius:0;line-height:1.2;
}
ul.products li.product .card-body{
  padding:18px;border-top:3px solid var(--black);
  display:flex;align-items:baseline;justify-content:space-between;gap:10px;
}
ul.products li.product .card-body h3,
ul.products li.product .card-body .woocommerce-loop-product__title{
  font-family:'Anton',Impact,sans-serif;font-weight:400;text-transform:uppercase;
  letter-spacing:.01em;line-height:.95;font-size:22px;padding:0;
}
/* Price: Anton, and neutralise Woo's default price markup */
ul.products li.product .price,
.single-product .summary .price{
  font-family:'Anton',Impact,sans-serif;font-size:22px;white-space:nowrap;
  color:var(--black);margin:0;
}
.single-product .summary .price{font-size:38px;display:block;margin:6px 0 18px;}
.price del{opacity:.45;font-size:.72em;margin-right:8px;font-weight:400;}
.price ins{text-decoration:none;color:var(--red);}
.price .woocommerce-Price-currencySymbol{font-size:.7em;vertical-align:top;}

/* Add-to-cart on the card sits below the stat strip, full width */
ul.products li.product .gs-card-cart{
  border-top:3px solid var(--black);
}
ul.products li.product .gs-card-cart .button{
  display:block;width:100%;margin:0;border:0;box-shadow:none;
  text-align:center;font-size:17px;padding:14px 10px;
}
ul.products li.product .gs-card-cart .button:hover{transform:none;box-shadow:none;}
ul.products li.product .gs-card-cart .added_to_cart{
  display:block;text-align:center;padding:10px;font-family:'IBM Plex Mono',monospace;
  font-size:12px;text-transform:uppercase;letter-spacing:.08em;
  border-top:1px dashed var(--black);color:var(--black);
}

/* ---- Buttons ------------------------------------------------------------- */
.woocommerce a.button,.woocommerce button.button,.woocommerce input.button,
.woocommerce #respond input#submit,.woocommerce a.button.alt,
.woocommerce button.button.alt,.woocommerce input.button.alt,
.wc-block-components-button,.wp-element-button,
.wc-block-cart__submit-button,.wc-block-components-checkout-place-order-button{
  display:inline-block;width:fit-content;
  background:var(--yellow);color:var(--black);
  font-family:'Anton',Impact,sans-serif;text-transform:uppercase;
  font-size:20px;letter-spacing:.04em;font-weight:400;
  padding:16px 34px;text-decoration:none;line-height:1.1;
  border:3px solid var(--black);border-radius:0;
  box-shadow:6px 6px 0 var(--black);
  transition:transform .1s,box-shadow .1s;
  cursor:pointer;
}
.woocommerce a.button:hover,.woocommerce button.button:hover,
.woocommerce input.button:hover,.woocommerce #respond input#submit:hover,
.woocommerce a.button.alt:hover,.woocommerce button.button.alt:hover,
.woocommerce input.button.alt:hover,
.wc-block-components-button:hover,.wp-element-button:hover,
.wc-block-cart__submit-button:hover,
.wc-block-components-checkout-place-order-button:hover{
  transform:translate(2px,2px);box-shadow:3px 3px 0 var(--black);
  background:var(--red);color:var(--paper);
}
.woocommerce .button:disabled,.woocommerce .button.disabled,
.wc-block-components-button:disabled{
  opacity:.45;box-shadow:3px 3px 0 var(--black);transform:none;cursor:not-allowed;
}
/* Secondary / ghost buttons (e.g. "Continue shopping", "Update cart") */
.woocommerce .button.gs-btn-alt,
.woocommerce .cart .actions .button[name="update_cart"]{
  background:var(--black);color:var(--yellow);
}
.woocommerce .button.gs-btn-alt:hover,
.woocommerce .cart .actions .button[name="update_cart"]:hover{
  background:var(--paper);color:var(--black);
}

/* ---- Notices ------------------------------------------------------------- */
.woocommerce-message,.woocommerce-info,.woocommerce-error,
.woocommerce-noreviews,.wc-block-components-notice-banner{
  border:3px solid var(--black)!important;border-radius:0!important;
  box-shadow:6px 6px 0 var(--black);
  background:var(--yellow)!important;color:var(--black)!important;
  font-family:'Space Grotesk',Arial,sans-serif;font-size:15px;line-height:1.6;
  padding:18px 22px!important;margin:0 auto 30px!important;max-width:1240px;
  display:flex;align-items:center;gap:14px;flex-wrap:wrap;
}
.woocommerce-error{background:var(--red)!important;color:var(--paper)!important;}
.woocommerce-error a{color:var(--paper);}
.woocommerce-message::before,.woocommerce-info::before,
.woocommerce-error::before{display:none;}
.woocommerce-message .button,.woocommerce-info .button{
  margin-left:auto;font-size:15px;padding:10px 20px;box-shadow:4px 4px 0 var(--black);
}
.woocommerce-error li{list-style:none;}

/* ---- Form fields --------------------------------------------------------- */
.woocommerce form .form-row input.input-text,
.woocommerce form .form-row textarea,
.woocommerce form .form-row select,
.woocommerce-page input[type="text"],.woocommerce-page input[type="email"],
.woocommerce-page input[type="tel"],.woocommerce-page input[type="password"],
.woocommerce-page input[type="search"],.woocommerce-page textarea,
.wc-block-components-text-input input,
.wc-blocks-components-select__select{
  border:3px solid var(--black);border-radius:0;background:#fff;
  font-family:'Space Grotesk',Arial,sans-serif;font-size:15px;
  padding:14px 16px;color:var(--black);width:100%;box-shadow:none;
}
.woocommerce form .form-row label,
.wc-block-components-text-input label{
  font-family:'IBM Plex Mono',monospace;font-size:12px;text-transform:uppercase;
  letter-spacing:.1em;font-weight:600;margin-bottom:7px;display:block;
}
.woocommerce form .form-row{margin-bottom:18px;}
.required{color:var(--red);}
input:focus-visible,textarea:focus-visible,select:focus-visible{
  outline:3px solid var(--red);outline-offset:2px;
}
.select2-container .select2-selection--single{
  border:3px solid var(--black)!important;border-radius:0!important;height:52px!important;
}
.select2-container--default .select2-selection--single .select2-selection__rendered{
  line-height:46px!important;font-family:'Space Grotesk',sans-serif;padding-left:14px!important;
}
.select2-dropdown{border:3px solid var(--black)!important;border-radius:0!important;}

/* Quantity input */
/* Classic Woo quantity box (product page). The block cart's stepper is
   styled in the Woo Blocks section — it holds an input and two buttons, so
   it can't share this fixed 82px width. */
.quantity input.qty{
  border:3px solid var(--black)!important;border-radius:0!important;background:#fff;
  font-family:'IBM Plex Mono',monospace;font-size:16px;font-weight:600;
  text-align:center;padding:12px 6px;width:82px;
}

/* ---- Single product ------------------------------------------------------ */
.gs-single{padding:56px 28px 0;}
.gs-single-inner{max-width:1240px;margin:0 auto;}
.single-product div.product{
  display:grid;grid-template-columns:1fr 1fr;gap:56px;align-items:start;
  max-width:1240px;margin:0 auto;
}
@media(max-width:980px){.single-product div.product{grid-template-columns:1fr;gap:34px;}}
.single-product .woocommerce-product-gallery{
  border:3px solid var(--black);background:#fff;position:relative;margin:0;
  box-shadow:10px 10px 0 var(--black);
}
.single-product .woocommerce-product-gallery img{display:block;width:100%;height:auto;}
.single-product .woocommerce-product-gallery__wrapper{margin:0;}
.single-product .flex-control-thumbs{
  display:grid;grid-template-columns:repeat(4,1fr);gap:8px;padding:8px;margin:0;
  list-style:none;border-top:3px solid var(--black);
}
.single-product .flex-control-thumbs li{margin:0;}
.single-product .flex-control-thumbs img{border:2px solid var(--black);cursor:pointer;}
.single-product .summary{margin:0;}
.single-product .product_title{font-size:clamp(38px,5.5vw,68px);margin-bottom:2px;}

/* Flavor subtitle: caliber / grain / count */
.gs-flavor{
  font-family:'Space Grotesk',sans-serif;font-size:13px;font-weight:500;
  letter-spacing:.1em;text-transform:uppercase;color:var(--red);
  display:block;margin-top:6px;
}
.single-product .gs-flavor{font-size:15px;margin-bottom:6px;}

/* Stat strip — same component as the design source's .statchip */
.gs-statstrip{
  display:flex;justify-content:space-between;gap:12px;
  padding:12px 0;margin:0 0 20px;
  border-top:1px dashed var(--black);border-bottom:1px dashed var(--black);
  font-family:'IBM Plex Mono',monospace;font-size:13px;letter-spacing:.02em;
}
.gs-statstrip b{color:var(--red);}

.single-product .woocommerce-product-details__short-description{
  font-size:16px;line-height:1.65;margin-bottom:22px;
}
.single-product .woocommerce-product-details__short-description p+p{margin-top:12px;}
.single-product form.cart{
  display:flex;gap:14px;align-items:center;flex-wrap:wrap;margin:26px 0;
}
.single-product form.cart .button{margin:0;}
.single-product .product_meta{
  font-family:'IBM Plex Mono',monospace;font-size:12px;text-transform:uppercase;
  letter-spacing:.06em;color:#6b6555;border-top:1px dashed var(--black);
  padding-top:16px;margin-top:8px;line-height:2;
}
.single-product .product_meta a{color:var(--black);text-decoration:none;font-weight:600;}
.single-product .product_meta a:hover{color:var(--red);}
.single-product .stock.in-stock{
  font-family:'IBM Plex Mono',monospace;font-size:13px;color:#2f7d32;font-weight:600;
}
.single-product .stock.out-of-stock{
  font-family:'IBM Plex Mono',monospace;font-size:13px;color:var(--red);font-weight:600;
}

/* Ballistic Facts panel on the single product page.
   Reuses .factslabel from the design source; this block only handles the
   full-width band it sits in. */
.gs-facts-band{
  background:var(--black);color:var(--paper);
  border-top:3px solid var(--black);border-bottom:3px solid var(--black);
  padding:72px 28px;margin-top:72px;
}
.gs-facts-inner{
  max-width:1240px;margin:0 auto;
  display:grid;grid-template-columns:1fr 420px;gap:56px;align-items:center;
}
@media(max-width:980px){.gs-facts-inner{grid-template-columns:1fr;}}
.gs-facts-inner h2{font-size:clamp(32px,5vw,60px);color:var(--yellow);margin-bottom:20px;}
.gs-facts-inner p{font-size:clamp(15px,1.7vw,18px);line-height:1.65;max-width:56ch;}
.gs-facts-inner p+p{margin-top:14px;}

/* Product tabs */
.woocommerce-tabs{grid-column:1/-1;margin-top:56px;}
.woocommerce-tabs ul.tabs{
  list-style:none;display:flex;gap:0;padding:0;margin:0 0 -3px;flex-wrap:wrap;
}
.woocommerce-tabs ul.tabs li{
  border:3px solid var(--black);border-right-width:0;background:var(--paper);margin:0;
}
.woocommerce-tabs ul.tabs li:last-child{border-right-width:3px;}
.woocommerce-tabs ul.tabs li a{
  display:block;padding:13px 24px;text-decoration:none;color:var(--black);
  font-family:'Anton',Impact,sans-serif;font-size:16px;text-transform:uppercase;
  letter-spacing:.04em;
}
.woocommerce-tabs ul.tabs li.active{background:var(--black);}
.woocommerce-tabs ul.tabs li.active a{color:var(--yellow);}
.woocommerce-tabs .panel{
  border:3px solid var(--black);background:#fff;padding:28px;
}
.woocommerce-tabs .panel h2{font-size:26px;margin-bottom:12px;}
.woocommerce-tabs table.shop_attributes{
  width:100%;border-collapse:collapse;font-family:'IBM Plex Mono',monospace;font-size:13px;
}
.woocommerce-tabs table.shop_attributes th,
.woocommerce-tabs table.shop_attributes td{
  padding:9px 0;border-bottom:1px solid var(--black);text-align:left;
}
.woocommerce-tabs table.shop_attributes td{text-align:right;font-weight:600;}
.woocommerce-tabs table.shop_attributes th{
  text-transform:uppercase;letter-spacing:.08em;font-size:12px;font-weight:600;
}

/* Related / upsells */
.related.products,.upsells.products{grid-column:1/-1;margin-top:72px;}
.related.products>h2,.upsells.products>h2{
  font-size:clamp(30px,4.5vw,52px);margin-bottom:30px;
}

/* ---- Cart (shortcode) ---------------------------------------------------- */
.woocommerce table.shop_table{
  border:3px solid var(--black);border-radius:0;border-collapse:collapse;
  width:100%;background:#fff;margin:0 0 30px;
}
.woocommerce table.shop_table th{
  background:var(--black);color:var(--yellow);
  font-family:'Anton',Impact,sans-serif;text-transform:uppercase;
  letter-spacing:.06em;font-size:14px;font-weight:400;padding:15px 16px;text-align:left;
}
.woocommerce table.shop_table td{
  border-top:1px solid var(--black);padding:18px 16px;
  font-family:'Space Grotesk',sans-serif;font-size:15px;vertical-align:middle;
}
.woocommerce table.shop_table td.product-name a{
  color:var(--black);text-decoration:none;font-weight:700;
}
.woocommerce table.shop_table td.product-name a:hover{color:var(--red);}
.woocommerce table.shop_table img{width:72px;border:3px solid var(--black);display:block;}
.woocommerce a.remove{
  color:var(--red)!important;font-size:22px;line-height:1;font-weight:700;
  border-radius:0;width:auto;height:auto;text-decoration:none;
}
.woocommerce a.remove:hover{background:var(--red)!important;color:var(--paper)!important;}
.woocommerce .cart-collaterals,.cart_totals{max-width:1240px;margin:0 auto;}
.cart_totals h2,.cross-sells h2{font-size:clamp(26px,3.5vw,40px);margin-bottom:18px;}
.cart_totals table.shop_table th{
  background:var(--paper);color:var(--black);border-top:1px solid var(--black);
}
.cart_totals .order-total .amount{
  font-family:'Anton',Impact,sans-serif;font-size:26px;
}
.woocommerce .coupon input.input-text{max-width:230px;}
.woocommerce .cart .actions{display:flex;gap:14px;flex-wrap:wrap;align-items:center;}
.woocommerce .cart .actions .coupon{display:flex;gap:12px;align-items:center;flex-wrap:wrap;}

/* ---- Cart / Checkout blocks (Woo Blocks) ---------------------------------
   Cart, checkout and account pages render through page.php with the class
   .gs-woo-entry instead of .entry, so the editorial page styles (74ch
   measure, link underlines, table and heading sizes) don't leak in. Woo's
   block styles use 2–3-class selectors; rules here are written to match or
   beat them, scoped to .wc-block-cart / .wc-block-checkout. */
.gs-woo-entry{max-width:1240px;margin:0 auto;}
.wc-block-cart,.wc-block-checkout{
  max-width:1240px;margin:0 auto;
  font-family:'Space Grotesk',Arial,sans-serif;color:var(--black);
}
.wc-block-cart a,.wc-block-checkout a{color:var(--black);}

/* Headings: "Cart totals", "Order summary", checkout step titles. */
.wc-block-components-title,.wc-block-checkout__form h2,
.wc-block-components-checkout-step__title,
body .wc-block-cart .wc-block-cart__totals-title,
body .wc-block-checkout .wc-block-components-checkout-order-summary__title-text{
  font-family:'Anton',Impact,sans-serif!important;text-transform:uppercase;
  font-weight:400!important;letter-spacing:.01em;color:var(--black);
}
body .wc-block-cart .wc-block-cart__totals-title,
body .wc-block-checkout .wc-block-components-checkout-order-summary__title-text{
  font-size:24px;line-height:1.1;padding:0;
}
.wc-block-components-checkout-step__description{font-size:14px;color:#6b6555;}

/* ---- Cart: items table ----
   Woo's cart.css sets `background:none !important` on the table and every
   cell, and hides the middle "Details" header cell with visibility:hidden
   (which hides its background too, leaving a gap in the header band). The
   two !importants here exist only to answer Woo's. */
body .wc-block-cart table.wc-block-cart-items{
  border:3px solid var(--black);background:#fff!important;border-collapse:collapse;width:100%;
}
body .wc-block-cart table.wc-block-cart-items .wc-block-cart-items__header th{
  background:var(--black)!important;color:var(--yellow);padding:13px 16px;border:0;
  font-family:'Anton',Impact,sans-serif;font-weight:400;text-transform:uppercase;
  letter-spacing:.06em;font-size:14px;
}
body .wc-block-cart table.wc-block-cart-items .wc-block-cart-items__header .wc-block-cart-items__header-product{visibility:visible;}
body .wc-block-cart .wc-block-cart-items__header .wc-block-cart-items__header-product > span{visibility:hidden;}
body .wc-block-cart .wc-block-cart-items__header th span{color:var(--yellow);}
/* Woo tags the cart with is-large / is-medium / is-small / is-mobile after
   measuring it. Cell padding is for the table layout only; on narrow carts
   Woo switches rows to a grid and hides the header row. */
body .wc-block-cart.is-large .wc-block-cart-items td,
body .wc-block-cart.is-medium .wc-block-cart-items td{border-top:1px solid var(--black);padding:20px 16px;vertical-align:top;}
body .wc-block-cart .wc-block-cart-items .wc-block-cart-items__row:first-child td{border-top:0;}
body .wc-block-cart.is-small table.wc-block-cart-items .wc-block-cart-items__header,
body .wc-block-cart.is-mobile table.wc-block-cart-items .wc-block-cart-items__header{display:none;}
body .wc-block-cart.is-small .wc-block-cart-items .wc-block-cart-items__row,
body .wc-block-cart.is-mobile .wc-block-cart-items .wc-block-cart-items__row{padding:16px 14px;}
.wc-block-cart-item__image img{border:3px solid var(--black);display:block;}
body .wc-block-cart .wc-block-components-product-name,
body .wc-block-checkout .wc-block-components-product-name{
  font-family:'Space Grotesk',Arial,sans-serif;font-weight:700;font-size:17px;
  text-transform:none;letter-spacing:0;line-height:1.3;color:var(--black);text-decoration:none;
}
body .wc-block-cart a.wc-block-components-product-name:hover{color:var(--red);}
/* Unit price under the name is small print; the line total carries the
   big Anton figure (the theme's generic .price rule would make both big). */
body .wc-block-cart .wc-block-cart-item__prices{margin:4px 0 8px;}
body .wc-block-cart .wc-block-cart-item__prices .price,
body .wc-block-cart .wc-block-cart-item__prices .wc-block-components-product-price__value{
  font-family:'IBM Plex Mono',monospace;font-size:13px;font-weight:400;
}
.wc-block-cart .wc-block-components-product-metadata{font-family:'IBM Plex Mono',monospace;font-size:12px;line-height:1.6;color:#6b6555;}
.wc-block-cart .wc-block-components-product-metadata p{margin:0;}
body .wc-block-cart .wc-block-cart-item__total .wc-block-components-product-price__value{
  font-family:'Anton',Impact,sans-serif;font-size:22px;
}

/* Quantity stepper: one bordered unit, − [qty] +. Woo draws its own
   rounded border with ::after; replaced by the theme's 3px square one. */
.wc-block-cart .wc-block-cart-item__quantity{display:flex;align-items:center;gap:14px;margin-top:12px;}
body .wc-block-cart .wc-block-components-quantity-selector{
  display:inline-flex;align-items:stretch;width:auto;min-width:0;margin:0;padding:0;
  border:3px solid var(--black);border-radius:0;background:#fff;
}
body .wc-block-cart .wc-block-components-quantity-selector::after{display:none;}
body .wc-block-cart .wc-block-components-quantity-selector input.wc-block-components-quantity-selector__input{
  width:46px;min-width:0;height:auto;margin:0;padding:9px 0;border:0;border-radius:0;
  background:transparent;box-shadow:none;text-align:center;
  font-family:'IBM Plex Mono',monospace;font-size:16px;font-weight:600;color:var(--black);
}
body .wc-block-cart .wc-block-components-quantity-selector .wc-block-components-quantity-selector__button{
  min-width:38px;padding:0;border:0;background:transparent;color:var(--black);
  font-family:'IBM Plex Mono',monospace;font-size:18px;font-weight:600;opacity:1;cursor:pointer;
}
body .wc-block-cart .wc-block-components-quantity-selector .wc-block-components-quantity-selector__button:disabled{opacity:.3;cursor:default;}
body .wc-block-cart .wc-block-components-quantity-selector .wc-block-components-quantity-selector__button:hover:not(:disabled){color:var(--red);}
/* Phones: a tighter stepper so image + details + total fit one row. */
body .wc-block-cart.is-mobile .wc-block-components-quantity-selector input.wc-block-components-quantity-selector__input{width:34px;}
body .wc-block-cart.is-mobile .wc-block-components-quantity-selector .wc-block-components-quantity-selector__button{min-width:30px;}
body .wc-block-cart.is-mobile .wc-block-cart-item__quantity{gap:10px;}
.wc-block-cart .wc-block-cart-item__remove-link{color:var(--black);}
.wc-block-cart .wc-block-cart-item__remove-link:hover{color:var(--red);}

/* ---- Totals (cart sidebar + checkout summary) ---- */
.wc-block-components-totals-item__value,
.wc-block-components-totals-footer-item .wc-block-components-totals-item__value{
  font-family:'Anton',Impact,sans-serif;
}
.wc-block-components-totals-footer-item .wc-block-components-totals-item__value{font-size:26px;}
body .wc-block-components-totals-footer-item .wc-block-components-totals-item__label{
  font-family:'Anton',Impact,sans-serif;text-transform:uppercase;font-size:20px;font-weight:400;
}

/* Coupon panel: a plain toggle row; the form below is input + button. */
body .wc-block-components-totals-coupon.wc-block-components-panel{border:0;background:transparent;}
body .wc-block-components-panel .wc-block-components-panel__button{
  font-family:'IBM Plex Mono',monospace;font-size:13px;font-weight:600;text-transform:uppercase;
  letter-spacing:.08em;padding:14px 32px 14px 0;color:var(--black);
}
body .wc-block-components-totals-coupon__form{display:flex;align-items:stretch;gap:10px;margin-bottom:6px;}
body .wc-block-components-totals-coupon__form .wc-block-components-totals-coupon__input{flex:1 1 auto;min-width:0;margin:0;}
body .wc-block-components-totals-coupon__form .wc-block-components-button.wc-block-components-totals-coupon__button{
  flex:0 0 auto;margin:0;padding:10px 18px;font-size:16px;box-shadow:3px 3px 0 var(--black);
}

/* Big submit buttons stay readable in every state (hover/focus/active),
   and never pick up a link underline. */
body .wc-block-components-button.wc-block-cart__submit-button,
body .wc-block-components-button.wc-block-components-checkout-place-order-button{
  width:100%;justify-content:center;text-align:center;text-decoration:none;
}
body .wc-block-components-button:not(.is-link):hover .wc-block-components-button__text,
body .wc-block-components-button:not(.is-link):focus .wc-block-components-button__text{color:inherit;}
body .wc-block-components-button:not(.is-link):focus{box-shadow:6px 6px 0 var(--black);outline:3px solid var(--red);outline-offset:2px;}

/* ---- Checkout: fields ---- */
body .wc-block-checkout .wc-block-components-form .wc-block-components-text-input input,
body .wc-block-checkout .wc-block-components-text-input input,
body .wc-block-components-totals-coupon .wc-block-components-text-input input{
  border:3px solid var(--black);border-radius:0;background:#fff;box-shadow:none;color:var(--black);
  font-family:'Space Grotesk',Arial,sans-serif;
}
body .wc-block-checkout .wc-block-components-text-input input:focus,
body .wc-block-components-totals-coupon .wc-block-components-text-input input:focus{
  border-color:var(--black);box-shadow:none;outline:3px solid var(--red);outline-offset:2px;
}
body .wc-block-components-text-input label{font-family:'IBM Plex Mono',monospace;font-size:12px;letter-spacing:.06em;}
body .wc-block-checkout .wc-blocks-components-select .wc-blocks-components-select__select{
  border:3px solid var(--black);border-radius:0;background:#fff;color:var(--black);
}
body .wc-block-checkout .wc-blocks-components-select .wc-blocks-components-select__container{border-radius:0;}
body .wc-block-components-checkbox .wc-block-components-checkbox__input[type=checkbox]{
  border:2px solid var(--black);border-radius:0;
}

/* Shipping/payment option boxes: one 3px square frame, not Woo's rounded
   inner highlight plus the theme's outer border. */
body .wc-block-checkout .wc-block-components-radio-control{background:#fff;border:0;border-radius:0;}
body .wc-block-checkout .wc-block-components-radio-control--highlight-checked::after{
  border:3px solid var(--black);border-radius:0;
}
body .wc-block-checkout .wc-block-components-radio-control--highlight-checked .wc-block-components-radio-control-accordion-option--checked-option-highlighted,
body .wc-block-checkout .wc-block-components-radio-control--highlight-checked .wc-block-components-radio-control__option--checked-option-highlighted{
  box-shadow:none;border-radius:0;
}
body .wc-block-checkout .wc-block-components-radio-control__option,
body .wc-block-checkout .wc-block-components-radio-control-accordion-option{border-radius:0;}
body .wc-block-checkout .wc-block-components-radio-control__input{border:2px solid var(--black);}

/* Authorize.net card field: the gateway draws one row holding three inputs
   at fixed widths. The theme's generic input styles (3px borders, padding)
   were drawing a second set of boxes over it; reset the inputs and frame
   the row instead. */
body .wc-block-checkout .wc-block-authnet-gateway-container input[type]{
  border:0;border-radius:0;padding:0 4px;margin:0;height:auto;background:transparent;box-shadow:none;
  font-family:'IBM Plex Mono',monospace;font-size:15px;color:var(--black);
}
body .wc-block-checkout .wc-block-authnet-gateway-container > div > div{
  border:3px solid var(--black);border-radius:0;background:#fff;height:auto;min-height:52px;
  padding:10px 14px;align-items:center;
}

/* ---- Checkout: order summary ---- */
body .wc-block-checkout .wp-block-woocommerce-checkout-order-summary-block{
  border:3px solid var(--black);border-radius:0;background:#fff;box-shadow:6px 6px 0 var(--black);
}
body .wc-block-checkout .wc-block-components-order-summary{border:0;box-shadow:none;padding:0 16px;background:transparent;}
body .wc-block-checkout .wc-block-components-order-summary-item .wc-block-components-product-name{font-size:15px;}
body .wc-block-checkout .wc-block-components-order-summary-item__individual-prices{
  font-family:'IBM Plex Mono',monospace;font-size:12px;
}
body .wc-block-checkout .wc-block-components-order-summary-item__total-price{
  font-family:'Anton',Impact,sans-serif;font-size:18px;
}
body .wc-block-checkout .wc-block-components-order-summary-item .wc-block-components-product-metadata{
  font-family:'IBM Plex Mono',monospace;font-size:11px;line-height:1.5;color:#6b6555;
}
body .wc-block-checkout .wc-block-components-order-summary-item__image img{border:2px solid var(--black);}
body .wc-block-checkout .wc-block-components-order-summary-item__quantity{
  border:2px solid var(--black);background:var(--yellow);color:var(--black);
  font-family:'IBM Plex Mono',monospace;font-weight:600;box-shadow:none;
}

/* ---- Empty cart ----------------------------------------------------------
   Woo's empty-cart block shows a "New in store" product grid (wc-block-grid)
   with its own link-blue titles and grey pill buttons; restyle it as the
   theme's product cards. */
.wp-block-woocommerce-empty-cart-block .with-empty-cart-icon{
  font-family:'Anton',Impact,sans-serif;font-weight:400;text-transform:uppercase;
  font-size:clamp(26px,4vw,40px);letter-spacing:.01em;
}
.wp-block-woocommerce-empty-cart-block .with-empty-cart-icon{margin-top:8px;}
/* Woo's sad face is 200px (mask pinned at 200px) with an 80px gap under it. */
.wp-block-woocommerce-empty-cart-block .with-empty-cart-icon::before{
  width:104px;height:104px;margin:0 auto 26px;-webkit-mask-size:contain;mask-size:contain;
}
/* The dotted separator → a short rule, with room on both sides. Core locks
   the hr's border and background with !important, so draw it in ::before. */
.wp-block-woocommerce-empty-cart-block .wp-block-separator{margin:56px auto 30px;color:inherit;opacity:1;}
.wp-block-woocommerce-empty-cart-block .wp-block-separator::before{
  content:"";display:block;width:96px;height:3px;margin:0 auto;padding:0;background:currentColor;
}
.wp-block-woocommerce-empty-cart-block h2:not(.with-empty-cart-icon){
  font-family:'Anton',Impact,sans-serif;font-weight:400;text-transform:uppercase;font-size:28px;
  letter-spacing:.02em;margin:0 0 28px;
}
/* The grid is built for 4 columns; with fewer products, centre fixed-width
   cards instead of leaving them packed to the left. Specificity beats Woo's
   .wc-block-grid.has-N-columns .wc-block-grid__product. */
.wp-block-woocommerce-empty-cart-block .wc-block-grid .wc-block-grid__products{
  justify-content:center;gap:24px;margin:0 0 16px;
}
.wp-block-woocommerce-empty-cart-block .wc-block-grid .wc-block-grid__products .wc-block-grid__product{
  flex:0 1 280px;max-width:280px;
}
.wp-block-woocommerce-empty-cart-block .wc-block-grid__product{
  border:3px solid var(--black);background:#fff;padding:0 0 18px;margin:0;
}
.wp-block-woocommerce-empty-cart-block .wc-block-grid__product-link{color:var(--black);text-decoration:none;}
.wp-block-woocommerce-empty-cart-block .wc-block-grid__product-image{margin:0;border-bottom:3px solid var(--black);}
.wp-block-woocommerce-empty-cart-block .wc-block-grid__product-image img{display:block;width:100%;}
.wp-block-woocommerce-empty-cart-block .wc-block-grid__product-title{
  font-family:'Anton',Impact,sans-serif;font-weight:400;text-transform:uppercase;
  font-size:20px;line-height:1.05;color:var(--black);margin:14px 14px 6px;
}
.wp-block-woocommerce-empty-cart-block .wc-block-grid__product-price{
  font-family:'Anton',Impact,sans-serif;font-size:20px;color:var(--black);margin:0 0 12px;
}
.wp-block-woocommerce-empty-cart-block .wc-block-grid__product .wp-block-button__link{
  border-radius:0;border:3px solid var(--black);background:var(--yellow);color:var(--black);
  font-family:'Anton',Impact,sans-serif;font-weight:400;text-transform:uppercase;
  font-size:16px;letter-spacing:.04em;padding:10px 18px;box-shadow:4px 4px 0 var(--black);
}
.wp-block-woocommerce-empty-cart-block .wc-block-grid__product .wp-block-button__link:hover{
  background:var(--red);color:var(--paper);transform:translate(2px,2px);box-shadow:2px 2px 0 var(--black);
}

/* ---- My account ---------------------------------------------------------- */
.woocommerce-account .woocommerce{
  max-width:1240px;margin:0 auto;
  display:grid;grid-template-columns:250px 1fr;gap:44px;align-items:start;
}
@media(max-width:900px){.woocommerce-account .woocommerce{grid-template-columns:1fr;gap:26px;}}
.woocommerce-MyAccount-navigation ul{list-style:none;border:3px solid var(--black);
  background:#fff;padding:0;margin:0;}
.woocommerce-MyAccount-navigation li{border-bottom:1px solid var(--black);}
.woocommerce-MyAccount-navigation li:last-child{border-bottom:0;}
.woocommerce-MyAccount-navigation a{
  display:block;padding:14px 18px;text-decoration:none;color:var(--black);
  font-family:'Anton',Impact,sans-serif;text-transform:uppercase;font-size:15px;
  letter-spacing:.04em;
}
.woocommerce-MyAccount-navigation li.is-active a,
.woocommerce-MyAccount-navigation a:hover{background:var(--black);color:var(--yellow);}
.woocommerce-account .woocommerce-MyAccount-content{font-size:16px;line-height:1.65;}
.woocommerce-account form.login,.woocommerce-account form.register,
.woocommerce form.checkout_coupon,.woocommerce form.lost_reset_password{
  border:3px solid var(--black);background:#fff;padding:26px;border-radius:0;
  box-shadow:6px 6px 0 var(--black);
}

/* ---- Misc ---------------------------------------------------------------- */
.woocommerce .woocommerce-error,.woocommerce .woocommerce-message{list-style:none;}
.woocommerce .star-rating span::before,.woocommerce .star-rating::before{color:var(--red);}
mark,.woocommerce mark{background:var(--yellow);color:var(--black);font-weight:700;}
.wc-block-components-loading-mask::after{border-top-color:var(--red);}

/* Shipping-restriction + adult-signature compliance callouts.
   See functions.php TODOs — these classes are ready for the plugin output. */
.gs-compliance-note{
  border:3px solid var(--black);background:var(--yellow);color:var(--black);
  padding:16px 20px;margin:0 0 24px;
  font-family:'IBM Plex Mono',monospace;font-size:13px;line-height:1.65;
}
.gs-compliance-note b{text-transform:uppercase;letter-spacing:.08em;}

/* ---- Responsive tables (cart, totals, order details) ---------------------
   Woo emits data-title on every cell of a .shop_table_responsive. Below the
   nav breakpoint the table stacks into labelled rows instead of scrolling
   sideways. Implemented here rather than relying on Woo's own responsive CSS
   so the cart is correct on mobile even if that stylesheet is ever dropped. */
@media(max-width:760px){
  .woocommerce table.shop_table_responsive,
  .woocommerce table.shop_table_responsive tbody,
  .woocommerce table.shop_table_responsive tr,
  .woocommerce table.shop_table_responsive td{
    display:block;width:100%;
  }
  .woocommerce table.shop_table_responsive thead{display:none;}
  .woocommerce table.shop_table_responsive tr{
    border-bottom:3px solid var(--black);
  }
  .woocommerce table.shop_table_responsive tr:last-child{border-bottom:0;}
  .woocommerce table.shop_table_responsive td{
    display:flex;justify-content:space-between;align-items:center;gap:14px;
    text-align:right;border-top:1px solid var(--black);padding:13px 15px;
  }
  .woocommerce table.shop_table_responsive td::before{
    content:attr(data-title);
    font-family:'IBM Plex Mono',monospace;font-size:11px;font-weight:600;
    text-transform:uppercase;letter-spacing:.08em;text-align:left;
    color:#6b6555;flex:0 0 auto;
  }
  .woocommerce table.shop_table_responsive td.product-remove::before,
  .woocommerce table.shop_table_responsive td.product-thumbnail::before,
  .woocommerce table.shop_table_responsive td.actions::before{content:none;}
  .woocommerce table.shop_table_responsive td.product-thumbnail{justify-content:flex-start;}
  .woocommerce table.shop_table_responsive td.product-remove{justify-content:flex-end;}
  .woocommerce table.shop_table_responsive td.actions{
    display:block;text-align:left;
  }
  .woocommerce .cart .actions,
  .woocommerce .cart .actions .coupon{flex-direction:column;align-items:stretch;}
  .woocommerce .cart .actions .button,
  .woocommerce .coupon input.input-text{width:100%;max-width:none;}
  .woocommerce .cart .actions .button{text-align:center;}

  /* Last-resort guard: any table without data-title scrolls inside its own
     box rather than pushing the page sideways. */
  .woocommerce table.shop_table:not(.shop_table_responsive){
    display:block;overflow-x:auto;white-space:nowrap;
  }
}

/* Card bottom alignment: push the add-to-cart bar to the foot of the card so
   cards of unequal content height still end flush, instead of leaving a strip
   of white below the button on the shorter ones. */
ul.products li.product .gs-card-cart{margin-top:auto;}

/* Scoping the source's nav rules to `nav#site-nav` (see PART 1 note) raised
   their specificity above the bare `.logo` rule, which the source relied on to
   win against `nav a`. Restate the source's .logo values at matching
   specificity so the wordmark renders exactly as designed. */
nav#site-nav a.logo{
  font-family:'Anton',Impact,sans-serif;font-size:26px;text-transform:uppercase;
  letter-spacing:.02em;text-decoration:none;color:var(--black);font-weight:400;
}

/* The design source styles bare `section` with full page-section padding
   (72px 28px). WooCommerce emits <section class="related products"> and
   <section class="up-sells"> *inside* div.product, where that padding reads
   as a stray indent against the tabs panel above it. */
.single-product div.product > section{padding:0;}

@media(max-width:760px){
  /* Stacked cart actions need clearance for the 6px offset shadows, otherwise
     each button sits on the previous one's shadow. */
  .woocommerce .cart .actions{gap:22px;}
  .woocommerce .cart .actions .coupon{gap:16px;}

  /* Cart totals is a two-cell label/value table. The generic responsive
     stacking above turns <th> and <td> into separate rows; flex the row
     instead so it stays "label left, amount right". */
  .cart_totals table.shop_table tr{
    display:flex;justify-content:space-between;align-items:baseline;gap:16px;
    border-bottom:1px solid var(--black);
  }
  .cart_totals table.shop_table tr:last-child{border-bottom:0;}
  .cart_totals table.shop_table th,
  .cart_totals table.shop_table td{
    display:block;border-top:0;padding:14px 15px;text-align:right;
  }
  .cart_totals table.shop_table th{
    text-align:left;background:transparent;color:var(--black);
    font-size:13px;flex:0 0 auto;
  }
  .cart_totals table.shop_table td::before{content:none;}
}

/* Cart table column widths. Woo's own stylesheet sets these; declare them here
   too so the layout does not depend on that file, otherwise the remove and
   thumbnail columns absorb the leftover table width and shove the product
   details to the right. */
.woocommerce table.shop_table th.product-remove,
.woocommerce table.shop_table td.product-remove{width:46px;text-align:center;}
.woocommerce table.shop_table th.product-thumbnail,
.woocommerce table.shop_table td.product-thumbnail{width:108px;}
.woocommerce table.shop_table th.product-price,
.woocommerce table.shop_table td.product-price,
.woocommerce table.shop_table th.product-subtotal,
.woocommerce table.shop_table td.product-subtotal{width:130px;}
.woocommerce table.shop_table th.product-quantity,
.woocommerce table.shop_table td.product-quantity{width:120px;}

/* The generic form-field rule gives inputs width:100%. Inside the flex
   .actions row that makes the coupon field demand the full row, wrapping the
   Apply-coupon and Update-cart buttons onto their own lines. Pin its width. */
.woocommerce .cart .actions .coupon{flex:0 1 auto;}
.woocommerce .cart .actions .coupon input.input-text{
  flex:0 0 220px;width:220px;max-width:220px;
}
.woocommerce .cart .actions .button{flex:0 0 auto;}

@media(max-width:760px){
  /* ...but on mobile everything goes full width again. */
  .woocommerce .cart .actions .coupon input.input-text{
    flex:1 1 auto;width:100%;max-width:none;
  }
  .woocommerce .cart .actions .button{flex:1 1 auto;}
}

/* Cart actions row — supersedes the flex treatment declared earlier.
   `display:flex` on the <td class="actions" colspan="6"> pulls the cell OUT of
   table layout: the colspan stops applying, the cell shrinks to its content
   (~250px), an anonymous cell is generated, and the remove column absorbs the
   slack. Keep the cell a real table-cell and lay the controls out inline
   instead. */
.woocommerce .cart .actions{display:table-cell;text-align:left;}
.woocommerce .cart .actions .coupon{
  display:inline-flex;flex-wrap:nowrap;gap:12px;align-items:center;
  vertical-align:middle;margin:0 14px 0 0;
}
.woocommerce .cart .actions .coupon input.input-text{
  flex:0 0 220px;width:220px;max-width:220px;
}
.woocommerce .cart .actions .button{vertical-align:middle;margin:0;}

@media(max-width:760px){
  .woocommerce .cart .actions{display:block;}
  .woocommerce .cart .actions .coupon{display:block;margin:0 0 22px;}
  .woocommerce .cart .actions .coupon input.input-text{
    flex:none;width:100%;max-width:none;margin-bottom:16px;
  }
  .woocommerce .cart .actions .button{display:block;width:100%;text-align:center;}
}

/* Uploaded logo (Customize → Site Identity → Logo) replaces the text
   wordmark in the nav. Sized by height so any logo aspect ratio works;
   smaller on mobile so it still fits beside the cart pill. */
nav#site-nav .custom-logo-link{display:block;line-height:0;flex:0 1 auto;min-width:0;}
nav#site-nav .custom-logo{display:block;height:46px;width:auto;max-width:100%;object-fit:contain;object-position:left center;}
@media(max-width:1000px){nav#site-nav .custom-logo{height:34px;}}
@media(max-width:880px){nav#site-nav .custom-logo{height:28px;}}
@media(max-width:360px){nav#site-nav .custom-logo{height:22px;}}

/* Photos inside the .photo placeholder blocks — Customizer images (hero,
   drop) and homepage product cards — fill the block edge to edge. The
   placeholder stripes stay underneath as the empty state. Badges sit above. */
.photo > .gs-photo-img,
.card .photo > img,
.spotlight .photo > img{
  position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block;
}
.photo .badge{z-index:2;}
/* Hero photo: the headline sits on the left, so a wide image is cropped
   toward its right side on narrow screens, where the subject usually is. */
.hero .photo > .gs-photo-img{object-position:70% center;}

/* Homepage product cards wrap their contents in a.gs-card-link, like the shop
   loop does; without this the titles render in default link blue. */
.card a.gs-card-link{display:block;color:inherit;text-decoration:none;}

/* Card rows line up across a grid row: the link fills the card and its
   name/price block absorbs any extra height (e.g. a days-left chip on one
   card), so the stat strip and add-to-cart bar sit at the same height on
   every card instead of following each card's own content. */
.card a.gs-card-link,
ul.products li.product a.gs-card-link{display:flex;flex-direction:column;flex:1 1 auto;}
.card a.gs-card-link > .photo,
ul.products li.product a.gs-card-link > .photo{flex:0 0 auto;}
.card .card-body,
ul.products li.product .card-body{flex:1 0 auto;}

/* WooCommerce crops product thumbnails square. The 4:5 frame suits the
   placeholder art but cuts the sides off a square product shot, so a card
   holding a real product photo goes square too. */
.card .photo:has(> img),
ul.products li.product .photo:has(> img){aspect-ratio:1/1;}

/* Footer: Instagram link under the tagline. */
footer .foot-social{
  display:inline-flex;align-items:center;gap:8px;margin-top:16px;
  color:var(--paper);font-size:14px;font-weight:700;text-decoration:none;
}
footer .foot-social svg{display:block;flex:0 0 auto;}
footer .foot-social:hover{color:var(--yellow);}

/* ---- Sign-up popup (gunsnacks_promo_popup / initPromo) ----------------- */
.gs-promo{
  position:fixed;inset:0;z-index:90;padding:20px;
  display:flex;align-items:center;justify-content:center;
  background:rgba(17,16,16,.72);
}
.gs-promo[hidden]{display:none;}
html.gs-promo-open body{overflow:hidden;}
.gs-promo-box{
  position:relative;width:100%;max-width:560px;max-height:calc(100vh - 40px);overflow:auto;
  background:var(--paper);border:3px solid var(--black);box-shadow:10px 10px 0 var(--black);
  padding:40px 36px 30px;text-align:center;
}
.gs-promo-box .kicker{margin-bottom:10px;}
.gs-promo-box h2{font-size:clamp(34px,6vw,52px);}
.gs-promo-box p{font-size:16px;line-height:1.55;margin:14px auto 22px;max-width:40ch;}
.gs-promo-box .gs-email-form{max-width:none;}
.gs-promo-box .gs-promo-fine{
  margin:16px auto 0;max-width:none;font-family:'IBM Plex Mono',monospace;font-size:11px;color:#6b6555;
}
/* The form's own note line repeats the popup's text; hide it in here only. */
.gs-promo-box .mc4wp-form-fields > p{display:none!important;}
.gs-promo-close{
  position:absolute;top:10px;right:12px;width:40px;height:40px;
  background:none;border:0;cursor:pointer;color:var(--black);
  font-family:'IBM Plex Mono',monospace;font-size:28px;line-height:1;
}
.gs-promo-close:hover{color:var(--red);}
@media(max-width:480px){
  .gs-promo-box{padding:36px 20px 24px;box-shadow:6px 6px 0 var(--black);}
  /* Field and button stack instead of squeezing side by side. One class
     more specific than the .gs-email-form rules further down, which would
     otherwise win on source order. */
  .gs-promo-box .gs-email-form .mc4wp-form-fields > div{flex-wrap:wrap!important;}
  .gs-promo-box .gs-email-form .mc4wp-form-fields input[type=email]{flex-basis:100%!important;border-right:3px solid var(--black)!important;border-bottom:0!important;}
  .gs-promo-box .gs-email-form .mc4wp-form-fields input[type=submit]{flex-basis:100%!important;padding:14px 20px!important;}
}

/* Footer: parent-brand note under the tagline (Customize → Footer & legal). */
footer .foot-parent{
  margin-top:18px;padding-top:16px;border-top:1px solid rgba(245,240,228,.25);
  font-size:13px;line-height:1.6;max-width:34ch;color:rgba(245,240,228,.65);
}
footer .foot-parent a{
  display:block;margin-top:6px;color:var(--yellow);font-weight:700;font-size:14px;
  text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:3px;
}
footer .foot-parent a:hover{color:var(--paper);}

/* A third-party signup form pasted into the Customizer. */
.gs-email-form{max-width:520px;margin:0 auto;text-align:left;}

/* Mailchimp for WP form ("Gun Snacks Signup", [mc4wp_form id=130]). Its
   markup carries inline styles written for the dark Coming Soon page (pill
   shapes, a --candy-yellow variable this theme doesn't define, white note
   text). Inline styles only yield to !important, so these overrides are
   scoped to .gs-email-form and redraw it as the snack-list design: square
   white field joined to a black Anton button. The form itself is left
   untouched, so any other page using it keeps its look. */
.gs-email-form .mc4wp-form-fields > div{gap:0!important;flex-wrap:nowrap!important;max-width:520px!important;margin:0 auto!important;}
.gs-email-form .mc4wp-form-fields input[type=email]{
  flex:1 1 auto!important;min-width:0!important;margin:0!important;
  border:3px solid var(--black)!important;border-right:0!important;border-radius:0!important;
  background:#fff!important;color:var(--black)!important;padding:16px 18px!important;
  font-family:'Space Grotesk',Arial,sans-serif!important;font-size:15px!important;
}
.gs-email-form .mc4wp-form-fields input[type=email]::placeholder{color:#6b6555;}
.gs-email-form .mc4wp-form-fields input[type=email]:focus-visible{outline:3px solid var(--red)!important;outline-offset:2px!important;}
.gs-email-form .mc4wp-form-fields input[type=submit]{
  flex:0 0 auto!important;margin:0!important;cursor:pointer;
  border:3px solid var(--black)!important;border-radius:0!important;
  background:var(--black)!important;color:var(--yellow)!important;padding:0 26px!important;
  font-family:'Anton',Impact,sans-serif!important;font-weight:400!important;font-size:17px!important;
  text-transform:uppercase;letter-spacing:.02em;
}
.gs-email-form .mc4wp-form-fields input[type=submit]:hover{background:var(--red)!important;color:var(--paper)!important;}
.gs-email-form .mc4wp-form-fields > p{
  margin:14px 0 0!important;color:#6b6555!important;text-align:center!important;
  font-family:'IBM Plex Mono',monospace!important;font-size:12px!important;
}
/* Success / error message after submitting. */
.gs-email-form .mc4wp-response .mc4wp-alert{
  max-width:520px;margin:16px auto 0;padding:12px 16px;text-align:center;font-size:14px;
  border:3px solid var(--black);background:var(--yellow);color:var(--black);
}
.gs-email-form .mc4wp-response .mc4wp-error{background:var(--red);color:var(--paper);}

/* ==========================================================================
   LIMITED RUNS — see inc/limited.php
   ========================================================================== */

/* Days-left chip: the .statchip's mono type, paper ground and dashed rule,
   as a standalone chip. Empty until gunsnacks.js fills it, and hidden while
   empty so no blank box flashes before JS runs (or if it never does). */
.gs-days-left{
  display:inline-block;font-family:'IBM Plex Mono',monospace;font-size:12px;
  letter-spacing:.02em;line-height:1.3;white-space:nowrap;color:var(--black);
  background:var(--paper);border:1px dashed var(--black);padding:4px 8px;
}
.gs-days-left b{color:var(--red);}
.gs-days-left:empty{display:none;}

/* Card: price on top, chip under it, both right-aligned. */
.gs-price-col{display:flex;flex-direction:column;align-items:flex-end;gap:7px;}

/* Product page: the badge sits above the title, not over the gallery. */
.badge.is-inline{position:static;display:inline-block;margin:0 0 16px;}
.gs-days-wrap{margin:-8px 0 20px;}

/* ---- Homepage spotlight band ------------------------------------------- */
.spotlight{background:var(--yellow);border-bottom:3px solid var(--black);}
.spotlight-inner{
  max-width:1240px;margin:0 auto;display:grid;grid-template-columns:.9fr 1.1fr;
  gap:56px;align-items:center;
}
@media(max-width:900px){.spotlight-inner{grid-template-columns:1fr;gap:30px;}}
/* An even frame, no offset shadow: the product photos have near-black
   backgrounds, so a one-sided shadow just read as a lopsided photo. */
.spotlight .photo{
  aspect-ratio:1/1;border:6px solid var(--black);box-shadow:none;
}
.spotlight .kicker{color:var(--black);}
.spotlight h2{font-size:clamp(42px,6.5vw,84px);}
.spotlight .flavor{
  display:block;margin-top:10px;font-size:13px;font-weight:700;
  letter-spacing:.1em;text-transform:uppercase;
}
.spotlight-price{display:flex;align-items:center;flex-wrap:wrap;gap:12px 16px;margin-top:22px;}
.spotlight .price{font-size:clamp(32px,4vw,44px);}
.spotlight-line{margin-top:18px;font-size:clamp(16px,1.6vw,19px);line-height:1.55;max-width:46ch;}
.spotlight .btn{margin-top:28px;}
/* Limited-run band extras: caution tape strips and a giant day count.
   Both sit behind the content (photo, copy); the tapes paint over the
   count. Static on purpose: scrolling tape made the page crawl. */
.spotlight.has-tape,.spotlight.has-count{position:relative;overflow:hidden;}
.spotlight.has-tape .spotlight-inner,.spotlight.has-count .spotlight-inner{position:relative;z-index:2;}
.spot-tape{
  position:absolute;left:-5%;width:110%;z-index:1;overflow:hidden;white-space:nowrap;pointer-events:none;
  background:var(--black);color:var(--yellow);
  font-family:'Anton',Impact,sans-serif;font-size:26px;line-height:1;letter-spacing:.06em;text-transform:uppercase;
  padding:12px 0;border-block:6px solid transparent;
  border-image:repeating-linear-gradient(-45deg,var(--black) 0 12px,var(--yellow) 12px 24px) 6;
}
.spot-tape.t1{top:22px;transform:rotate(-2.5deg);}
.spot-tape.t2{bottom:26px;transform:rotate(1.8deg);}
.spot-tape.t2 span{display:inline-block;margin-left:-180px;}
.spot-tape-sep{
  display:inline-block;width:.95em;height:.85em;margin:0 .55em;vertical-align:-.05em;background:currentColor;
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 21'%3E%3Cpath d='M12 0 24 21H0Z M10.6 7v7h2.8V7Z M10.6 15.6v2.8h2.8v-2.8Z' fill-rule='evenodd'/%3E%3C/svg%3E") center/contain no-repeat;
          mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 21'%3E%3Cpath d='M12 0 24 21H0Z M10.6 7v7h2.8V7Z M10.6 15.6v2.8h2.8v-2.8Z' fill-rule='evenodd'/%3E%3C/svg%3E") center/contain no-repeat;
}

.spot-count{
  /* Tied to the 1240px content column, not the window edge. */
  position:absolute;z-index:0;right:max(2.5%,calc((100% - 1240px) / 2 - 64px));bottom:-.06em;pointer-events:none;
  display:none;flex-direction:column;align-items:flex-end;
  font-family:'Anton',Impact,sans-serif;text-transform:uppercase;line-height:.8;
}
.spot-count.is-set{display:flex;}
.spot-count-label{font-size:clamp(26px,3vw,46px);color:rgba(17,16,16,.3);margin-bottom:.35em;letter-spacing:.02em;}
.spot-count-num{
  font-size:clamp(200px,22vw,330px);letter-spacing:-.02em;
  color:transparent;-webkit-text-stroke:3px rgba(17,16,16,.32);
}
/* A word ("Last day") reads top-down, so its label goes underneath. */
.spot-count.is-word{flex-direction:column-reverse;bottom:72px;}
.spot-count.is-word .spot-count-num{font-size:clamp(96px,10vw,150px);}
.spot-count.is-word .spot-count-label{margin:.3em 0 0;}
.spot-count.is-last .spot-count-num{-webkit-text-stroke-color:var(--red);}
.spot-count.is-last .spot-count-label{color:var(--red);}

@media(max-width:900px){
  .spotlight.has-tape{padding-top:104px;padding-bottom:110px;}
  .spot-tape{font-size:20px;padding:10px 0;}
  /* No free corner on one column: the count becomes a line above the
     photo ("30 DAYS LEFT"). row-reverse puts the figure before the label. */
  .spot-count,.spot-count.is-word{
    position:relative;right:auto;bottom:auto;z-index:2;
    flex-direction:row-reverse;justify-content:flex-end;align-items:flex-end;gap:12px;
    margin:-18px 0 24px;
  }
  .spot-count-num{font-size:120px;-webkit-text-stroke-color:rgba(17,16,16,.6);}
  .spot-count.is-word .spot-count-num{font-size:96px;}
  .spot-count-label,.spot-count.is-word .spot-count-label{font-size:34px;margin:0 0 .2em;color:rgba(17,16,16,.72);}
  .spot-count.is-last .spot-count-label{color:var(--red);}
}

/* Everyday box: the same band, mirrored. On phones the photo stays first. */
@media(min-width:901px){
  .staple .spotlight-inner{grid-template-columns:1.1fr .9fr;}
  .staple .photo{order:2;}
}

/* ==========================================================================
   EDITORIAL PAGE CONTENT — FAQ, Shipping Restrictions, Lot Data, Contact…
   ========================================================================== */

/* <details>/<summary> as an FAQ accordion. Consecutive items share a border. */
/* Margins only around the run as a whole — a negative margin between items
   would just collapse into a 24px one. */
.entry details{border:3px solid var(--black);background:#fff;margin:0;}
.entry details + details{margin-top:-3px;}
.entry :not(details) + details{margin-top:24px;}
.entry details + :not(details){margin-top:24px;}
.entry summary{
  list-style:none;cursor:pointer;position:relative;
  padding:18px 58px 18px 20px;
  font-family:'Anton',Impact,sans-serif;font-weight:400;text-transform:uppercase;
  font-size:clamp(18px,2.2vw,23px);letter-spacing:.01em;line-height:1.15;
}
.entry summary::-webkit-details-marker{display:none;}
.entry summary::after{
  content:"+";position:absolute;right:20px;top:50%;transform:translateY(-50%);
  font-family:'IBM Plex Mono',monospace;font-size:26px;line-height:1;
}
.entry details[open] > summary{border-bottom:1px dashed var(--black);}
.entry details[open] > summary::after{content:"\2212";}
.entry summary:hover{color:var(--red);}
.entry summary:focus-visible{outline:3px solid var(--red);outline-offset:-6px;}
.entry details > :not(summary){margin-left:20px;margin-right:20px;}
.entry details > summary + *{margin-top:16px;}
.entry details > :last-child:not(summary){margin-bottom:20px;}

/* Tables: the facts-label look. page.php wraps each one in .gs-table-wrap,
   which carries the frame and scrolls sideways inside itself on mobile. */
.entry .gs-table-wrap{
  overflow-x:auto;-webkit-overflow-scrolling:touch;
  background:#fff;border:3px solid var(--black);box-shadow:10px 10px 0 var(--red);
  padding:8px 20px 10px;margin:28px 10px 36px 0;
}
.entry figure.wp-block-table{margin:0;}
.entry .gs-table-wrap table{
  width:100%;border:0;margin:0;border-collapse:collapse;
  font-family:'IBM Plex Mono',monospace;font-size:13px;
}
.entry .gs-table-wrap th,.entry .gs-table-wrap td{
  border:0;border-bottom:1px solid var(--black);background:none;color:var(--black);
  padding:9px 14px 9px 0;text-align:left;vertical-align:top;
}
.entry .gs-table-wrap th{
  font-weight:600;text-transform:uppercase;letter-spacing:.08em;font-size:12px;
  border-bottom:4px solid var(--black);
}
.entry .gs-table-wrap tr:last-child td{border-bottom:0;}
/* Keep values like "GC-2607" and "1,050 fps" whole; only the last column
   wraps. On a narrow screen the wrapper scrolls instead of the page. */
.entry .gs-table-wrap th,.entry .gs-table-wrap td{white-space:nowrap;}
.entry .gs-table-wrap th:last-child,.entry .gs-table-wrap td:last-child{white-space:normal;min-width:12ch;}
/* Two-column (label | value) tables just wrap — scrolling sideways is only
   worth it for wide data tables like lot data. */
.entry .gs-table-wrap tr > :first-child:nth-last-child(2){white-space:normal;}
.entry .gs-table-wrap th:last-child,.entry .gs-table-wrap td:last-child{padding-right:0;}
/* Two-column tables read as label | value, like the facts label. */
.entry .gs-table-wrap td:nth-child(2):last-child{text-align:right;font-weight:600;}
.entry .gs-table-wrap th:nth-child(2):last-child{text-align:right;}
.entry .wp-block-table figcaption{margin-top:-24px;}

/* ---- WPForms -------------------------------------------------------------
   WPForms' modern markup draws its fields from CSS variables it sets on
   :root; redefining them on the container handles borders, colors and sizes.
   Type and the button's offset shadow need direct rules, one notch more
   specific than WPForms' own. A per-form style set in the block editor still
   wins, since WPForms prints that on the form's own ID. */
.wpforms-container{
  --wpforms-field-border-radius:0;
  --wpforms-field-border-size:3px;
  --wpforms-field-border-style:solid;
  --wpforms-field-border-color:var(--black);
  --wpforms-field-background-color:#fff;
  --wpforms-field-text-color:var(--black);
  --wpforms-field-size-font-size:15px;
  --wpforms-field-size-input-height:52px;
  --wpforms-field-size-padding-h:16px;
  --wpforms-label-color:var(--black);
  --wpforms-label-sublabel-color:#6b6555;
  --wpforms-label-error-color:var(--red);
  --wpforms-label-size-font-size:12px;
  --wpforms-button-background-color:var(--yellow);
  --wpforms-button-text-color:var(--black);
  --wpforms-button-border-radius:0;
  --wpforms-button-border-size:3px;
  --wpforms-button-border-style:solid;
  --wpforms-button-border-color:var(--black);
  --wpforms-button-size-height:auto;
  --wpforms-container-padding:0;
}
body .wpforms-container .wpforms-form input[type=text],
body .wpforms-container .wpforms-form input[type=email],
body .wpforms-container .wpforms-form input[type=tel],
body .wpforms-container .wpforms-form input[type=url],
body .wpforms-container .wpforms-form input[type=number],
body .wpforms-container .wpforms-form input[type=password],
body .wpforms-container .wpforms-form input[type=date],
body .wpforms-container .wpforms-form select,
body .wpforms-container .wpforms-form textarea{
  border:3px solid var(--black);border-radius:0;background:#fff;color:var(--black);
  font-family:'Space Grotesk',Arial,sans-serif;font-size:15px;box-shadow:none;
}
body .wpforms-container .wpforms-form input:focus,
body .wpforms-container .wpforms-form select:focus,
body .wpforms-container .wpforms-form textarea:focus{
  border-color:var(--black);box-shadow:none;outline:3px solid var(--red);outline-offset:2px;
}
body .wpforms-container .wpforms-form .wpforms-field-label{
  font-family:'IBM Plex Mono',monospace;font-size:12px;text-transform:uppercase;
  letter-spacing:.1em;font-weight:600;color:var(--black);margin-bottom:7px;
}
body .wpforms-container .wpforms-form .wpforms-field-sublabel,
body .wpforms-container .wpforms-form .wpforms-field-description{
  font-family:'IBM Plex Mono',monospace;font-size:11px;color:#6b6555;
}
body .wpforms-container .wpforms-form .wpforms-required-label{color:var(--red);}
body .wpforms-container .wpforms-form button[type=submit],
body .wpforms-container .wpforms-form .wpforms-submit{
  font-family:'Anton',Impact,sans-serif;text-transform:uppercase;font-weight:400;
  font-size:20px;letter-spacing:.04em;line-height:1.1;height:auto;
  padding:16px 34px;background:var(--yellow);color:var(--black);
  border:3px solid var(--black);border-radius:0;box-shadow:6px 6px 0 var(--black);
  transition:transform .1s,box-shadow .1s;cursor:pointer;
}
body .wpforms-container .wpforms-form button[type=submit]:hover,
body .wpforms-container .wpforms-form .wpforms-submit:hover{
  transform:translate(2px,2px);box-shadow:3px 3px 0 var(--black);
  background:var(--red);color:var(--paper);
}
/* Forms given the CSS class "gs-form-wide" in WPForms → Settings → General
   (the dealer price-sheet and contact forms) get a full-width button. */
body .wpforms-container.gs-form-wide .wpforms-form .wpforms-submit{width:100%;}
/* Side-by-side field pairs (CSS class wpforms-one-half) stack on phones;
   at 375px each half was 142px and placeholders were cut off. */
@media(max-width:600px){
  body .wpforms-container .wpforms-form .wpforms-field.wpforms-one-half{
    width:100%;margin-left:0;float:none;
  }
}
body .wpforms-container .wpforms-form label.wpforms-error,
body .wpforms-container .wpforms-form em.wpforms-error{
  font-family:'IBM Plex Mono',monospace;font-size:12px;color:var(--red);
}
body .wpforms-container .wpforms-confirmation-container-full{
  border:3px solid var(--black);border-radius:0;background:var(--yellow);color:var(--black);
  box-shadow:6px 6px 0 var(--black);
}

/* ==========================================================================
   SINGLE PRODUCT — winning against woocommerce.css / woocommerce-layout.css
   Woo's sheets style this page with selectors like
   `.woocommerce #content div.product div.images` (this theme's wrapper is
   #content), which outrank the plain rules in the WooCommerce section above.
   These restate the theme's intent at matching specificity.
   ========================================================================== */

/* Woo sizes gallery and summary at 48% for its float layout; inside the
   theme's two-column grid that halved them again (284px each at 1440). */
.woocommerce #content div.product div.images,
.woocommerce #content div.product div.summary,
.woocommerce div.product div.images,
.woocommerce div.product div.summary{float:none;width:auto;margin-bottom:0;}

/* Price: Woo's olive #958e09 at 1.25em → the theme's Anton price. */
.woocommerce div.product .summary p.price,
.woocommerce div.product .summary span.price{
  color:var(--black);font-size:38px;display:block;margin:6px 0 18px;
}
.woocommerce div.product .summary p.price ins{color:var(--red);}

/* Tabs: square, black-bordered, no Woo rounded-corner pseudo-elements. */
.woocommerce div.product .woocommerce-tabs ul.tabs{
  padding:0;margin:0 0 -3px;overflow:visible;position:relative;z-index:1;
}
.woocommerce div.product .woocommerce-tabs ul.tabs::before,
.woocommerce div.product .woocommerce-tabs ul.tabs li::before,
.woocommerce div.product .woocommerce-tabs ul.tabs li::after{display:none;}
.woocommerce div.product .woocommerce-tabs ul.tabs li{
  border:3px solid var(--black);border-right-width:0;border-radius:0;
  background:var(--paper);margin:0;padding:0;
}
.woocommerce div.product .woocommerce-tabs ul.tabs li:last-child{border-right-width:3px;}
.woocommerce div.product .woocommerce-tabs ul.tabs li a{
  padding:13px 24px;color:var(--black);font-family:'Anton',Impact,sans-serif;
  font-weight:400;font-size:16px;text-transform:uppercase;letter-spacing:.04em;
}
.woocommerce div.product .woocommerce-tabs ul.tabs li.active{background:var(--black);}
.woocommerce div.product .woocommerce-tabs ul.tabs li.active a{color:var(--yellow);}
.woocommerce div.product .woocommerce-tabs .panel{
  border:3px solid var(--black);background:#fff;padding:28px;margin:0;
}

/* Description content: the same rhythm as editorial pages (.entry). */
.woocommerce div.product .woocommerce-tabs .panel > h2:first-child{font-size:26px;margin:0 0 14px;}
.woocommerce div.product .woocommerce-tabs .panel h3{font-size:22px;margin:30px 0 10px;}
.woocommerce div.product .woocommerce-tabs .panel h2 + h3{margin-top:4px;}
.woocommerce div.product .woocommerce-tabs .panel p,
.woocommerce div.product .woocommerce-tabs .panel li{font-size:16px;line-height:1.65;max-width:74ch;}
.woocommerce div.product .woocommerce-tabs .panel p + p{margin-top:12px;}
.woocommerce div.product .woocommerce-tabs .panel ul,
.woocommerce div.product .woocommerce-tabs .panel ol{margin:12px 0 12px 22px;}

/* Tables written into a description get the facts-label look and scroll
   inside themselves on narrow screens. (Attributes table excluded.) */
.woocommerce div.product .woocommerce-tabs .panel table:not(.shop_attributes){
  display:block;overflow-x:auto;max-width:100%;width:max-content;
  border:3px solid var(--black);border-collapse:collapse;margin:14px 0 18px;
  padding:6px 16px 8px;font-family:'IBM Plex Mono',monospace;font-size:13px;
}
.woocommerce div.product .woocommerce-tabs .panel table:not(.shop_attributes) th,
.woocommerce div.product .woocommerce-tabs .panel table:not(.shop_attributes) td{
  padding:8px 18px 8px 0;border:0;border-bottom:1px solid var(--black);
  text-align:left;white-space:nowrap;background:none;
}
.woocommerce div.product .woocommerce-tabs .panel table:not(.shop_attributes) th:last-child,
.woocommerce div.product .woocommerce-tabs .panel table:not(.shop_attributes) td:last-child{padding-right:0;}
.woocommerce div.product .woocommerce-tabs .panel table:not(.shop_attributes) th{
  font-weight:600;text-transform:uppercase;letter-spacing:.06em;font-size:12px;
}
.woocommerce div.product .woocommerce-tabs .panel table:not(.shop_attributes) tbody tr:last-child > *{border-bottom:0;}
.woocommerce div.product .woocommerce-tabs .panel table:not(.shop_attributes) thead tr:last-child > *{
  border-bottom:4px solid var(--black);
}

/* Product loop (shop, related, upsells): Woo's 22.05% / 48% column widths,
   floats and margins fight the theme's CSS grid, and its olive price color
   outranks the theme's. */
.woocommerce ul.products li.product,
.woocommerce-page ul.products li.product,
.woocommerce ul.products[class*="columns-"] li.product,
.woocommerce-page ul.products[class*="columns-"] li.product{
  width:auto;float:none;margin:0;clear:none;
}
/* Woo's clearfix pseudo-elements would occupy the grid's first cell. */
.woocommerce ul.products::before,.woocommerce ul.products::after,
.woocommerce-page ul.products::before,.woocommerce-page ul.products::after{content:none;display:none;}
.woocommerce ul.products li.product .price{
  color:var(--black);font-size:22px;display:inline;margin:0;
}
.woocommerce ul.products li.product a img{margin:0;}
.woocommerce ul.products li.product .gs-card-cart .button{margin:0;}

/* Size picker on products with several sizes (variable products). The
   theme's form.cart is a flex row for qty + button; a variations form stacks
   the picker above that row instead. */
.woocommerce div.product form.cart.variations_form{display:block;}
.woocommerce div.product form.cart .variations{
  width:100%;border:0;border-collapse:collapse;margin:0 0 18px;
}
.woocommerce div.product form.cart .variations tr{display:block;}
.woocommerce div.product form.cart .variations th,
.woocommerce div.product form.cart .variations td{
  display:block;padding:0;border:0;text-align:left;line-height:1.4;
}
.woocommerce div.product form.cart .variations label{
  display:block;margin:0 0 7px;font-family:'IBM Plex Mono',monospace;font-size:12px;
  font-weight:600;text-transform:uppercase;letter-spacing:.1em;color:var(--black);
}
.woocommerce div.product form.cart .variations select{
  width:100%;max-width:340px;min-width:0;margin:0;
  border:3px solid var(--black);border-radius:0;background:#fff;color:var(--black);
  font-family:'Space Grotesk',Arial,sans-serif;font-size:16px;font-weight:700;
  padding:13px 16px;cursor:pointer;
}
/* gunsnacks.js swaps the select for square size buttons, styled like the
   product tabs: paper when off, black with yellow type when chosen. A size
   is always chosen, so Woo's "Clear" link adds nothing. */
.woocommerce div.product form.cart .reset_variations{display:none !important;}
.gs-size-picker{display:flex;flex-wrap:wrap;padding:0 3px 3px 0;}
.gs-size{
  margin:0 -3px -3px 0;padding:12px 20px;cursor:pointer;
  background:var(--paper);color:var(--black);border:3px solid var(--black);border-radius:0;
  font-family:'Anton',Impact,sans-serif;font-weight:400;font-size:17px;line-height:1.1;
  text-transform:uppercase;letter-spacing:.04em;
}
.gs-size[aria-checked="true"]{background:var(--black);color:var(--yellow);}
.gs-size:hover:not([aria-checked="true"]):not(:disabled){color:var(--red);}
.gs-size:disabled{opacity:.4;text-decoration:line-through;cursor:not-allowed;}
.gs-size:focus-visible{outline:3px solid var(--red);outline-offset:2px;position:relative;z-index:1;}
.woocommerce div.product form.cart .woocommerce-variation-description p{
  font-family:'IBM Plex Mono',monospace;font-size:13px;margin:0 0 8px;
}
.gs-visually-hidden{
  position:absolute !important;width:1px;height:1px;overflow:hidden;
  clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;
}
.woocommerce div.product form.cart .single_variation .price{
  font-family:'Anton',Impact,sans-serif;font-size:30px;color:var(--black);margin:0 0 16px;display:block;
}
.woocommerce div.product form.cart .woocommerce-variation-add-to-cart{
  display:flex;gap:14px;align-items:center;flex-wrap:wrap;
}

/* Grid tracks may shrink below their content's min width. Plain 1fr grew to
   fit the tab row and the description table, pushing the page 87px wider
   than a phone screen; with minmax(0,1fr) the table scrolls inside itself. */
.single-product div.product{grid-template-columns:minmax(0,1fr) minmax(0,1fr);}
@media(max-width:980px){.single-product div.product{grid-template-columns:minmax(0,1fr);}}

@media(max-width:760px){
  .woocommerce div.product .woocommerce-tabs .panel{padding:20px 18px;}
  .woocommerce div.product .woocommerce-tabs ul.tabs li a{padding:11px 16px;font-size:14px;}
  /* Tabs wrap onto a second row; every tab gets its full border and the
     negative margins collapse neighbors into a single 3px line. */
  .woocommerce div.product .woocommerce-tabs ul.tabs{flex-wrap:wrap;padding-right:3px;}
  .woocommerce div.product .woocommerce-tabs ul.tabs li,
  .woocommerce div.product .woocommerce-tabs ul.tabs li:last-child{border-right-width:3px;margin:0 -3px -3px 0;}
}

/* Under 600px WordPress lets the admin bar scroll away, so the sticky nav
   shouldn't keep a 46px gap for it (logged-in users only). */
@media screen and (max-width:600px){.admin-bar nav#site-nav{top:0;}}
