/*
Theme Name: PressMyShirt
Theme URI: https://pressmyshirt.example
Author: H2H Media
Author URI: https://h2hmedia.example
Description: Custom apparel printing landing page — console/tech visual system (Style C). Upload your art, pick the garment, we press it.
Version: 0.1.0
Requires at least: 6.4
Tested up to: 6.6
Requires PHP: 7.4
License: Proprietary
Text Domain: pressmyshirt
*/

:root{
  --pms-accent:#12E08D;
  --pms-accent-2:#5EEAD4;
  --pms-bg:#04080A;
  --pms-bg-alt:#070F11;
  --pms-panel:#0B1417;
  --pms-ink:#E4F4EC;
  --pms-ink-muted:#9CB8AC;
  --pms-faint:#618075;
  --pms-line:rgba(120,240,200,.15);
  --pms-line-soft:rgba(120,240,200,.075);
  --pms-on-accent:#03231A;
  --pms-maxw:1440px;
}

*{ box-sizing:border-box; }
html{ scroll-behavior:smooth; }
body{ margin:0; background:var(--pms-bg); font-family:Archivo,sans-serif; font-variation-settings:"wdth" 100; color:var(--pms-ink); }
a{ color:var(--pms-accent); text-decoration:none; }
a:hover{ color:var(--pms-accent-2); }
button{ font:inherit; color:inherit; background:none; border:none; cursor:pointer; }
img,svg{ max-width:100%; }
h1,h2,h3,p{ margin:0; }

.pms-disp{ font-variation-settings:"wdth" 125; font-weight:800; letter-spacing:-.03em; text-transform:uppercase; }
.pms-mono{ font-family:"IBM Plex Mono",monospace; letter-spacing:.14em; text-transform:uppercase; font-size:10.5px; }
.pms-muted{ color:var(--pms-faint); }
.pms-accent-text{ color:var(--pms-accent); }
.pms-accent-text-2{ color:var(--pms-accent-2); }
.pms-spectrum{ background:linear-gradient(96deg,#12E08D 0%,#5EEAD4 30%,#38BDF8 66%,#00C6C2 100%); -webkit-background-clip:text; background-clip:text; color:transparent; }

@keyframes pms-spin{ to{ transform:rotate(360deg); } }
.pms-spin{ transform-origin:210px 210px; animation:pms-spin 90s linear infinite; }
.pms-spin-r{ transform-origin:210px 210px; animation:pms-spin 60s linear infinite reverse; }
@keyframes pms-sweep{ 0%,100%{ top:18%; } 50%{ top:80%; } }
.pms-sweep{ position:absolute; left:14%; right:14%; height:2px; background:linear-gradient(90deg,transparent,#fff,transparent); box-shadow:0 0 16px rgba(255,255,255,.9); animation:pms-sweep 2.8s ease-in-out infinite; }

.pms-bk{ position:relative; }
.pms-bk::before,.pms-bk::after,.pms-bk i::before,.pms-bk i::after{ content:""; position:absolute; width:12px; height:12px; border:2px solid var(--pms-accent); pointer-events:none; opacity:.9; }
.pms-bk::before{ top:-1px; left:-1px; border-right:0; border-bottom:0; }
.pms-bk::after{ top:-1px; right:-1px; border-left:0; border-bottom:0; }
.pms-bk i{ position:absolute; inset:0; pointer-events:none; }
.pms-bk i::before{ bottom:-1px; left:-1px; border-right:0; border-top:0; }
.pms-bk i::after{ bottom:-1px; right:-1px; border-left:0; border-top:0; }

.pms-stars{ position:absolute; inset:0; opacity:.85; background-image:
  radial-gradient(1.4px 1.4px at 9% 14%,#CFFFEE,transparent),radial-gradient(1px 1px at 23% 41%,#9FE9D6,transparent),
  radial-gradient(1.2px 1.2px at 37% 9%,#fff,transparent),radial-gradient(1px 1px at 52% 27%,#A7E7FF,transparent),
  radial-gradient(1.5px 1.5px at 66% 6%,#CFFFEE,transparent),radial-gradient(1px 1px at 78% 33%,#fff,transparent),
  radial-gradient(1.1px 1.1px at 90% 17%,#9FE9D6,transparent),radial-gradient(1px 1px at 15% 62%,#fff,transparent),
  radial-gradient(1.3px 1.3px at 31% 78%,#A7E7FF,transparent),radial-gradient(1px 1px at 46% 57%,#CFFFEE,transparent),
  radial-gradient(1.2px 1.2px at 61% 84%,#fff,transparent),radial-gradient(1px 1px at 73% 65%,#9FE9D6,transparent);
  background-repeat:no-repeat; }

/* top nav */
.pms-rail-mark{ width:32px; height:32px; border-radius:7px; background:linear-gradient(135deg,var(--pms-accent),#38BDF8); display:flex; align-items:center; justify-content:center; flex:0 0 auto; }
.pms-rail-mark span{ font-family:Archivo,sans-serif; font-weight:800; font-size:13px; color:var(--pms-on-accent); }
.pms-topnav{ position:sticky; top:0; z-index:50; background:rgba(4,8,10,.92); backdrop-filter:blur(10px); border-bottom:1px solid var(--pms-line); }
.pms-topnav-inner{ max-width:var(--pms-maxw); margin:0 auto; padding:16px 56px; display:flex; align-items:center; gap:28px; }
.pms-topnav-brand{ display:flex; align-items:center; gap:10px; margin-right:auto; }
.pms-topnav-word{ font-size:16px; }
.pms-topnav-links{ display:flex; align-items:center; gap:26px; }
.pms-topnav-links a{ font-family:"IBM Plex Mono",monospace; letter-spacing:.1em; text-transform:uppercase; font-size:11px; color:var(--pms-ink-muted); }
.pms-topnav-links a:hover{ color:var(--pms-accent); }
.pms-topnav-actions{ display:flex; align-items:center; gap:14px; }
.pms-topnav-cta{ padding:10px 18px; font-size:10.5px; }
.pms-nav-toggle{ display:none; flex-direction:column; justify-content:center; gap:5px; width:34px; height:34px; }
.pms-nav-toggle span{ display:block; width:100%; height:2px; background:var(--pms-ink); border-radius:2px; transition:transform .2s ease, opacity .2s ease; }
.pms-nav-toggle.is-open span:nth-child(1){ transform:translateY(7px) rotate(45deg); }
.pms-nav-toggle.is-open span:nth-child(2){ opacity:0; }
.pms-nav-toggle.is-open span:nth-child(3){ transform:translateY(-7px) rotate(-45deg); }
.pms-content{ max-width:var(--pms-maxw); margin:0 auto; }

@media (max-width:960px){
  .pms-topnav-inner{ padding:14px 24px; flex-wrap:wrap; }
  .pms-topnav-links{
    order:3; flex-basis:100%; flex-direction:column; align-items:flex-start; gap:0;
    max-height:0; overflow:hidden; transition:max-height .25s ease;
  }
  .pms-topnav-links.is-open{ max-height:360px; padding-top:14px; }
  .pms-topnav-links a{ padding:12px 0; width:100%; border-top:1px solid var(--pms-line-soft); }
  .pms-nav-toggle{ display:flex; }
  .pms-topnav-cta{ display:none; }
}

/* hero */
.pms-hero{ padding:56px 56px 0; display:grid; grid-template-columns:minmax(0,.92fr) minmax(0,1.08fr); gap:46px; align-items:center; }
.pms-wordmark-row{ display:flex; align-items:center; gap:13px; margin-bottom:22px; flex-wrap:wrap; }
.pms-wordmark{ font-size:16px; }
.pms-h1{ font-size:56px; line-height:.96; }
.pms-lede{ font-variation-settings:"wdth" 106; font-weight:300; font-size:17px; line-height:1.66; color:var(--pms-ink-muted); max-width:46ch; margin-top:22px; text-transform:none; letter-spacing:0; }

.pms-console{ margin-top:30px; max-width:520px; background:var(--pms-panel); border:1px solid var(--pms-line); border-radius:6px; box-shadow:inset 0 1px 0 rgba(255,255,255,.05),0 24px 56px -30px rgba(0,0,0,.95); }
.pms-console-top{ display:flex; align-items:center; gap:10px; padding:11px 15px; border-bottom:1px solid var(--pms-line-soft); color:var(--pms-faint); }
.pms-dot{ width:7px; height:7px; border-radius:50%; background:var(--pms-accent); box-shadow:0 0 0 3px rgba(18,224,141,.22),0 0 12px rgba(18,224,141,.8); }
.pms-console-formats{ margin-left:auto; }
.pms-dropzone{ padding:20px 15px 6px; min-height:60px; border:1.5px dashed rgba(120,240,200,.3); margin:14px 15px 0; border-radius:5px; display:flex; align-items:center; justify-content:center; font-size:14px; color:var(--pms-ink-muted); }
.pms-console-actions{ display:flex; gap:9px; flex-wrap:wrap; padding:16px 15px; align-items:center; }

.pms-btn-primary{ background:linear-gradient(120deg,var(--pms-accent),#00C6C2); color:var(--pms-on-accent); font-weight:500; padding:12px 20px; border-radius:6px; box-shadow:0 10px 28px -12px rgba(18,224,141,.85); }
.pms-btn-outline{ border:1.5px solid rgba(120,240,200,.3); color:var(--pms-ink); padding:12px 20px; border-radius:6px; }
.pms-pill,.pms-chip{ border:1.5px solid rgba(120,240,200,.2); border-radius:100px; padding:7px 15px; background:rgba(255,255,255,.03); color:var(--pms-ink-muted); }
.pms-chip{ padding:10px 16px; }
.pms-pill.is-active,.pms-chip.is-active{ border-color:transparent; background:var(--pms-accent); color:var(--pms-on-accent); }

.pms-stage{ position:relative; border-radius:6px; overflow:hidden; padding:22px;
  background:radial-gradient(58% 52% at 18% 12%,rgba(18,224,141,.55) 0%,transparent 62%),radial-gradient(54% 48% at 86% 24%,rgba(56,189,248,.4) 0%,transparent 64%),radial-gradient(66% 58% at 66% 106%,rgba(0,198,194,.5) 0%,transparent 66%),linear-gradient(155deg,#052A20 0%,#04151E 52%,#020A0E 100%);
  box-shadow:0 28px 70px -32px rgba(18,224,141,.55),inset 0 0 0 1px rgba(120,240,200,.16); }
.pms-stage-inner{ position:relative; width:100%; aspect-ratio:1/1; display:flex; align-items:center; justify-content:center; }
.pms-stage-rings{ position:absolute; inset:0; width:100%; height:100%; }
.pms-stage-shirt{ position:relative; filter:drop-shadow(0 20px 32px rgba(0,0,0,.7)); }
.pms-readout{ position:absolute; text-align:center; font-family:"IBM Plex Mono",monospace; letter-spacing:.14em; text-transform:uppercase; }
.pms-readout span{ font-size:10px; color:rgba(190,255,235,.72); }
.pms-readout b{ display:block; font-size:15px; color:#fff; font-weight:500; margin-top:3px; text-transform:none; letter-spacing:.02em; }
.pms-readout-top{ top:2%; left:50%; transform:translateX(-50%); }
.pms-readout-right{ right:2%; top:50%; transform:translateY(-50%); text-align:right; }
.pms-readout-bottom{ bottom:2%; left:50%; transform:translateX(-50%); }
.pms-readout-left{ left:2%; top:50%; transform:translateY(-50%); text-align:left; }

/* stats */
.pms-stats{ margin-top:34px; padding:0 56px; display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); border-top:1px solid var(--pms-line); border-bottom:1px solid var(--pms-line); }
.pms-stat{ display:flex; align-items:center; gap:14px; padding:22px 26px; border-right:1px solid var(--pms-line-soft); }
.pms-stat-val{ font-size:20px; font-weight:500; display:block; text-transform:none; letter-spacing:0; }
.pms-stat-label{ font-size:9px; }

/* generic sections */
.pms-section{ padding:64px 56px; }
.pms-section-alt{ background:var(--pms-bg-alt); }
.pms-eyebrow{ display:flex; align-items:center; gap:10px; color:var(--pms-faint); margin-bottom:16px; }
.pms-rule{ width:28px; height:2px; background:linear-gradient(90deg,var(--pms-accent),#38BDF8); }
.pms-h2{ font-size:38px; margin-bottom:36px; }
.pms-h3{ font-size:34px; margin-bottom:22px; }
.pms-section-head{ display:flex; justify-content:space-between; align-items:flex-end; gap:32px; flex-wrap:wrap; margin-bottom:40px; }
.pms-section-desc{ font-variation-settings:"wdth" 106; font-weight:300; font-size:15.5px; color:var(--pms-ink-muted); max-width:46ch; text-transform:none; letter-spacing:0; line-height:1.66; }

.pms-grid-3{ display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:16px; }
.pms-grid-4{ display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:16px; }
.pms-grid-6{ display:grid; grid-template-columns:repeat(6,minmax(0,1fr)); gap:16px; }

.pms-card{ background:var(--pms-panel); border:1px solid var(--pms-line); border-radius:6px; padding:26px; display:flex; flex-direction:column; gap:14px; }
.pms-icon-circle{ width:44px; height:44px; border-radius:8px; background:rgba(18,224,141,.1); display:flex; align-items:center; justify-content:center; }
.pms-card h3{ font-size:17px; }
.pms-card p{ color:var(--pms-ink-muted); font-size:13.5px; line-height:1.6; }

.pms-module{ background:var(--pms-panel); border:1px solid var(--pms-line); border-radius:6px; overflow:hidden; display:flex; flex-direction:column; }
.pms-module-cap{ height:5px; background:var(--pms-accent); }
.pms-module-body{ padding:22px 20px; display:flex; flex-direction:column; gap:11px; flex:1; }
.pms-module-head{ display:flex; justify-content:space-between; align-items:center; }
.pms-module-n{ font-weight:600; }
.pms-live{ display:flex; align-items:center; gap:6px; color:var(--pms-faint); }
.pms-live-dot{ width:6px; height:6px; border-radius:50%; background:var(--pms-accent); }
.pms-module h3{ font-size:16px; letter-spacing:-.01em; text-transform:none; }
.pms-module p{ color:var(--pms-ink-muted); font-size:13.5px; line-height:1.6; }
.pms-gauges{ margin-top:auto; padding-top:14px; border-top:1px solid var(--pms-line-soft); display:grid; gap:9px; }
.pms-gauge{ display:grid; grid-template-columns:1fr auto; gap:8px; align-items:center; }
.pms-gauge span{ font-size:9px; }
.pms-gauge-track{ grid-column:1/-1; height:4px; border-radius:3px; background:rgba(255,255,255,.08); overflow:hidden; }
.pms-gauge-fill{ height:100%; border-radius:3px; background:var(--pms-accent); }

/* configure */
.pms-configure-grid{ display:grid; grid-template-columns:minmax(0,1.05fr) minmax(0,420px); gap:26px; align-items:start; }
.pms-configure-preview{ background:var(--pms-panel); border:1px solid var(--pms-line); border-radius:6px; padding:26px; }
.pms-configure-stage{ position:relative; border-radius:6px; overflow:hidden; padding:20px; display:flex; align-items:center; justify-content:center; aspect-ratio:4/2.9;
  background:radial-gradient(56% 52% at 20% 14%,rgba(18,224,141,.5) 0%,transparent 64%),radial-gradient(54% 50% at 86% 82%,rgba(56,189,248,.38) 0%,transparent 66%),linear-gradient(150deg,#062D22 0%,#03121A 100%);
  box-shadow:inset 0 0 0 1px rgba(120,240,200,.14); }
.pms-configure-meta{ display:flex; justify-content:space-between; gap:14px; flex-wrap:wrap; padding-top:16px; }
.pms-configure-controls{ display:flex; flex-direction:column; gap:20px; }
.pms-chip-row{ display:flex; flex-wrap:wrap; gap:8px; margin-top:10px; }
.pms-summary-card{ border-radius:6px; padding:22px; color:#fff;
  background:radial-gradient(70% 60% at 16% 8%,rgba(18,224,141,.4),transparent 66%),linear-gradient(150deg,#07311F 0%,#04222A 62%,#031218 100%);
  border:1px solid rgba(120,240,200,.24); }
.pms-summary-card-lg{ padding:26px 24px; box-shadow:0 26px 62px -30px rgba(18,224,141,.6); }
.pms-summary-row{ display:flex; justify-content:space-between; padding:9px 0; font-size:13px; color:var(--pms-ink-muted); border-bottom:1px solid rgba(120,240,200,.08); }
.pms-summary-row:last-child{ border-bottom:none; }
.pms-summary-row b{ color:var(--pms-ink); font-weight:400; font-size:12px; }

/* catalog */
.pms-catalog-card{ background:var(--pms-panel); border:1px solid var(--pms-line); border-radius:6px; overflow:hidden; display:flex; flex-direction:column; }
.pms-catalog-preview{ margin:18px; height:100px; border:1px dashed rgba(120,240,200,.2); border-radius:4px; display:flex; align-items:center; justify-content:center; color:#4A5850; font-size:8.5px; }
.pms-catalog-meta{ padding:0 17px 18px; display:grid; gap:8px; border-top:1px solid var(--pms-line-soft); padding-top:14px; }
.pms-catalog-row{ display:flex; justify-content:space-between; }

/* shop (WooCommerce) */
.pms-shop-card{ display:block; background:var(--pms-panel); border:1px solid var(--pms-line); border-radius:6px; overflow:hidden; }
.pms-shop-image{ aspect-ratio:1/1; background-size:cover; background-position:center; background-color:#0F1D18; }
.pms-shop-meta{ padding:14px 16px; display:flex; flex-direction:column; gap:6px; }
.pms-shop-meta b{ font-size:14px; font-weight:600; color:var(--pms-ink); }
.pms-shop-meta .pms-mono{ font-size:11px; }

/* pricing */
.pms-pricing-grid{ display:grid; grid-template-columns:minmax(0,1fr) minmax(0,400px); gap:30px; align-items:start; }
.pms-curve{ height:210px; }

/* cta banner */
.pms-cta{ margin:64px 56px; border-radius:8px; padding:48px 56px; display:flex; align-items:center; justify-content:space-between; gap:32px; flex-wrap:wrap;
  background:radial-gradient(70% 140% at 10% 0%,rgba(18,224,141,.28),transparent 60%),radial-gradient(60% 140% at 90% 100%,rgba(56,189,248,.22),transparent 60%),linear-gradient(120deg,#08160F 0%,#04151E 100%);
  border:1px solid rgba(120,240,200,.24); }
.pms-cta h2{ font-size:30px; margin-bottom:10px; }
.pms-cta p{ color:var(--pms-ink-muted); font-size:14.5px; max-width:52ch; }
.pms-cta-actions{ display:flex; gap:12px; flex-wrap:wrap; }

/* reviews */
.pms-review{ background:var(--pms-panel); border:1px solid var(--pms-line); border-radius:6px; padding:24px; display:flex; flex-direction:column; gap:14px; }
.pms-review p{ font-size:14px; color:#D8D0C1; line-height:1.65; }

/* faq */
.pms-faq{ border-top:1px solid var(--pms-line); margin-top:16px; }
.pms-faq-item{ border-bottom:1px solid var(--pms-line); }
.pms-faq-toggle{ width:100%; display:flex; justify-content:space-between; align-items:center; padding:20px 4px; text-align:left; }
.pms-faq-q{ font-size:15.5px; color:var(--pms-ink); text-transform:none; letter-spacing:0; }
.pms-faq-mark{ font-size:15px; }
.pms-faq-a{ font-size:14px; color:var(--pms-ink-muted); line-height:1.7; padding:0 4px 20px; max-width:70ch; text-transform:none; letter-spacing:0; }
.pms-faq-a[hidden]{ display:none; }

/* footer */
.pms-footer{ border-top:1px solid var(--pms-line); padding:52px 56px 30px;
  background:radial-gradient(52% 70% at 12% 0%,rgba(18,224,141,.16),transparent 68%),radial-gradient(46% 66% at 88% 10%,rgba(56,189,248,.12),transparent 70%),linear-gradient(180deg,#06110E 0%,#04080A 100%); }
.pms-footer-cols{ display:grid; grid-template-columns:2fr 1fr 1fr 1fr; gap:32px; }
.pms-footer-cols p{ font-size:13px; color:var(--pms-faint); line-height:1.7; max-width:32ch; margin-top:14px; }
.pms-footer-col{ display:flex; flex-direction:column; gap:10px; }
.pms-footer-col a{ font-size:13px; color:#B9B0A0; }
.pms-footer-bottom{ display:flex; justify-content:space-between; margin-top:40px; padding-top:20px; border-top:1px solid var(--pms-line-soft); }

.pms-fallback{ max-width:960px; margin:0 auto; padding:80px 24px; color:var(--pms-ink); }

/* responsive */
@media (max-width:1100px){
  .pms-hero{ grid-template-columns:1fr; }
  .pms-configure-grid{ grid-template-columns:1fr; }
  .pms-pricing-grid{ grid-template-columns:1fr; }
  .pms-grid-3{ grid-template-columns:repeat(2,minmax(0,1fr)); }
  .pms-grid-6{ grid-template-columns:repeat(3,minmax(0,1fr)); }
}
@media (max-width:960px){
  .pms-grid-6{ grid-template-columns:repeat(2,minmax(0,1fr)); }
  .pms-grid-4{ grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media (max-width:700px){
  .pms-section,.pms-hero{ padding-left:24px; padding-right:24px; }
  .pms-stats{ grid-template-columns:repeat(2,minmax(0,1fr)); padding-left:24px; padding-right:24px; }
  .pms-grid-3{ grid-template-columns:1fr; }
  .pms-grid-6{ grid-template-columns:repeat(2,minmax(0,1fr)); }
  .pms-grid-4{ grid-template-columns:1fr; }
  .pms-h1{ font-size:38px; }
  .pms-footer-cols{ grid-template-columns:1fr; }
  .pms-cta{ margin:48px 24px; padding:32px 28px; }
}

/* ===================================================================
   WooCommerce — reskins shop archive, single product, cart, checkout
   so they match the rest of the site instead of WC's default styling.
   =================================================================== */
.pms-woo-wrap{ padding-top:48px; padding-bottom:80px; }
.pms-woo-wrap h1.page-title,
.pms-woo-wrap h1.product_title{ font-family:Archivo,sans-serif; font-variation-settings:"wdth" 125; font-weight:800; letter-spacing:-.02em; text-transform:uppercase; color:var(--pms-ink); font-size:32px; margin:0 0 28px; }

.woocommerce-breadcrumb{ font-family:"IBM Plex Mono",monospace; letter-spacing:.1em; text-transform:uppercase; font-size:10px; color:var(--pms-faint); margin-bottom:24px; }
.woocommerce-breadcrumb a{ color:var(--pms-faint); }
.woocommerce-breadcrumb a:hover{ color:var(--pms-accent); }

.woocommerce-notices-wrapper .woocommerce-message,
.woocommerce-notices-wrapper .woocommerce-info,
.woocommerce-notices-wrapper .woocommerce-error{
  list-style:none; background:var(--pms-panel); border:1px solid var(--pms-line); border-left:3px solid var(--pms-accent);
  border-radius:6px; padding:14px 18px; color:var(--pms-ink); font-size:14px; margin:0 0 24px;
}
.woocommerce-notices-wrapper .woocommerce-error{ border-left-color:#FF6B6B; }
.woocommerce-notices-wrapper a.button{ margin-left:10px; }

/* archive toolbar */
.woocommerce-result-count{ color:var(--pms-faint); font-size:13px; float:none !important; }
.woocommerce-ordering{ float:none !important; }
.woocommerce-ordering select{
  background:var(--pms-panel); border:1.5px solid rgba(120,240,200,.2); color:var(--pms-ink); border-radius:6px; padding:8px 12px; font-size:13px;
}
.woocommerce-notices-wrapper + .woocommerce-result-count,
.woocommerce-result-count, .woocommerce-ordering{ margin-bottom:24px; }

/* product grid (archive) */
/* WooCommerce's legacy float-layout clearfix turns into a real, invisible grid item
   once this list becomes display:grid, silently occupying column 1 and pushing every
   real product card over by one slot. Confirmed via live DOM inspection. */
ul.products::before,
ul.products::after{ display:none !important; content:none !important; }
body.woocommerce ul.products.columns-4,
body.woocommerce-page ul.products.columns-4,
ul.products{
  display:grid !important; grid-template-columns:repeat(4,minmax(0,1fr)) !important; gap:16px !important;
  list-style:none !important; margin:0 !important; padding:0 !important; clear:both !important; direction:ltr !important; justify-items:stretch !important;
}
/* Belt-and-suspenders: only real product cards may occupy a grid slot. Anything else
   WooCommerce or a plugin injects as a stray child (hidden nodes, ad slots, etc.) is
   pulled completely out of layout so it can never eat a column. */
ul.products > *:not(.product){ display:none !important; }
ul.products li.product{
  position:relative; background:var(--pms-panel); border:1px solid var(--pms-line); border-radius:6px; overflow:hidden;
  text-align:left; padding:0 !important; margin:0 !important; float:none !important; clear:none !important;
  width:100% !important; min-width:0 !important; max-width:none !important; box-sizing:border-box;
  grid-column:auto !important; grid-row:auto !important; order:0 !important;
  transition:transform .18s ease, border-color .18s ease;
}
ul.products li.product:hover{ transform:translateY(-3px); border-color:var(--pms-accent); }
ul.products li.product a.woocommerce-LoopProduct-link,
ul.products li.product a.woocommerce-loop-product__link{ display:block; color:inherit; }
ul.products li.product img{ width:100% !important; aspect-ratio:1/1; object-fit:cover; display:block; background:#0F1D18; }
ul.products li.product .woocommerce-loop-product__title{
  font-size:14px !important; font-weight:600 !important; color:var(--pms-ink) !important;
  padding:14px 16px 4px !important; margin:0 !important; text-transform:none !important;
}
ul.products li.product .price{
  padding:0 16px 16px !important; margin:0 !important; display:block; font-family:"IBM Plex Mono",monospace; font-size:13px; color:var(--pms-accent);
}
ul.products li.product .price del{ color:var(--pms-faint); opacity:.7; margin-right:6px; }
ul.products li.product .price ins{ text-decoration:none; color:var(--pms-accent); }
ul.products li.product .onsale{
  position:absolute; top:12px; left:12px; background:var(--pms-accent); color:var(--pms-on-accent); font-family:"IBM Plex Mono",monospace;
  font-size:10px; letter-spacing:.08em; text-transform:uppercase; padding:4px 8px; border-radius:4px; min-width:0; height:auto; line-height:1.4;
}
ul.products li.product .button{
  margin:0 16px 16px !important; display:block !important; width:auto !important; box-sizing:border-box;
  background:var(--pms-accent); color:var(--pms-on-accent) !important; font-family:"IBM Plex Mono",monospace;
  font-size:10.5px; letter-spacing:.1em; text-transform:uppercase; text-align:center; white-space:normal !important;
  padding:10px 16px; border-radius:6px;
}
.star-rating{ color:var(--pms-accent); }
.star-rating::before{ color:rgba(255,255,255,.15); }

.woocommerce-pagination ul.page-numbers{ display:flex; gap:8px; list-style:none; padding:0; margin:32px 0 0; }
.woocommerce-pagination .page-numbers{
  display:flex; align-items:center; justify-content:center; min-width:34px; height:34px; border-radius:6px; border:1px solid var(--pms-line);
  color:var(--pms-ink-muted); font-size:13px;
}
.woocommerce-pagination .page-numbers.current{ background:var(--pms-accent); color:var(--pms-on-accent); border-color:transparent; }

/* single product */
.woocommerce div.product{ display:flex; flex-wrap:wrap; gap:56px; align-items:flex-start; }
.woocommerce div.product > .woocommerce-product-gallery{ flex:1.35 1 380px; min-width:0; }
.woocommerce div.product > .summary{ flex:1 1 320px; min-width:0; }
/* force these to their own full-width row regardless of where WC injects them */
.woocommerce div.product > .woocommerce-tabs,
.woocommerce div.product > .upsells.products,
.woocommerce div.product > .related.products{ flex:1 1 100%; width:100%; }

.woocommerce div.product .woocommerce-product-gallery{ position:relative; }
.woocommerce div.product .woocommerce-product-gallery__wrapper{
  background:var(--pms-panel); border:1px solid var(--pms-line); border-radius:6px; overflow:hidden; margin:0; padding:0; list-style:none;
}
.woocommerce div.product .woocommerce-product-gallery__image img{ width:100%; height:auto; display:block; }
.woocommerce div.product .woocommerce-product-gallery__trigger{
  position:absolute; top:14px; right:14px; z-index:2; width:36px; height:36px; border-radius:50%;
  background:rgba(4,8,10,.7); border:1px solid var(--pms-line); display:flex; align-items:center; justify-content:center;
}
.woocommerce div.product .woocommerce-product-gallery__trigger::before{ color:var(--pms-ink); }

/* thumbnail strip beneath the main image — click to swap */
.woocommerce div.product .flex-control-thumbs{
  display:flex !important; flex-wrap:wrap; gap:14px; list-style:none !important; margin:32px 0 0 !important; padding:0 !important;
}
.woocommerce div.product .flex-control-thumbs li{ width:104px !important; margin:0 !important; float:none !important; }
.woocommerce div.product .flex-control-thumbs li img{
  width:104px !important; height:104px !important; object-fit:cover; display:block; border-radius:6px; cursor:pointer;
  border:1.5px solid var(--pms-line); opacity:.65; transition:opacity .15s ease, border-color .15s ease;
}
.woocommerce div.product .flex-control-thumbs li img:hover{ opacity:1; border-color:rgba(18,224,141,.5); }
.woocommerce div.product .flex-control-thumbs li img.flex-active{ opacity:1; border-color:var(--pms-accent); }

.woocommerce div.product .summary{ padding-top:4px; }
.woocommerce div.product .summary .price{
  font-family:"IBM Plex Mono",monospace; font-size:22px; color:var(--pms-accent); display:block; margin:14px 0 20px;
}
.woocommerce div.product .summary .price del{ color:var(--pms-faint); font-size:16px; margin-right:10px; }
.woocommerce div.product .summary .price ins{ text-decoration:none; }
.woocommerce div.product .woocommerce-product-details__short-description{ color:var(--pms-ink-muted); font-size:15px; line-height:1.7; margin-bottom:24px; }
.woocommerce div.product .woocommerce-product-details__short-description p{ margin:0 0 12px; }

.woocommerce div.product form.cart{ display:flex; align-items:center; gap:12px; flex-wrap:wrap; margin-bottom:24px; }
.woocommerce div.product form.cart .quantity{ display:inline-flex; }
.woocommerce div.product form.cart input.qty{
  width:64px; height:48px; box-sizing:border-box; padding:0 12px;
  background:var(--pms-panel); border:1.5px solid rgba(120,240,200,.2); border-radius:6px; color:var(--pms-ink); font-size:14px;
}
.woocommerce div.product form.cart button.single_add_to_cart_button{
  height:48px; box-sizing:border-box; display:inline-flex; align-items:center; justify-content:center;
  background:linear-gradient(120deg,var(--pms-accent),#00C6C2); color:var(--pms-on-accent); font-weight:500; font-family:"IBM Plex Mono",monospace;
  letter-spacing:.1em; text-transform:uppercase; font-size:12px; padding:0 26px; border-radius:6px; box-shadow:0 10px 28px -12px rgba(18,224,141,.85); border:none;
}
.woocommerce div.product form.cart .variations{ width:100%; margin-bottom:16px; border-collapse:collapse; }
.woocommerce div.product form.cart .variations tbody{ display:flex; flex-direction:column; gap:10px; }
.woocommerce div.product form.cart .variations tr{ display:flex; align-items:flex-end; gap:14px; }
.woocommerce div.product form.cart .variations th.label{
  text-align:left; vertical-align:bottom; padding:0 0 12px; margin:0; font-size:13px; color:var(--pms-ink-muted); font-weight:500; white-space:nowrap;
}
.woocommerce div.product form.cart .variations td.value{ vertical-align:bottom; padding:0 0 12px; width:auto; }
.woocommerce div.product form.cart .variations select{
  background:var(--pms-panel); border:1.5px solid rgba(120,240,200,.2); color:var(--pms-ink); border-radius:6px;
  padding:0 12px; font-size:13px; min-width:200px; height:44px; box-sizing:border-box;
}
.woocommerce div.product .product_meta{ font-size:12.5px; color:var(--pms-faint); border-top:1px solid var(--pms-line-soft); padding-top:16px; }
.woocommerce div.product .product_meta a{ color:var(--pms-faint); }

.woocommerce-tabs{ margin-top:48px; }
.woocommerce-tabs ul.tabs{ display:flex; gap:24px; list-style:none; padding:0; margin:0 0 24px; border-bottom:1px solid var(--pms-line); }
.woocommerce-tabs ul.tabs li{ padding:0 0 14px; }
.woocommerce-tabs ul.tabs li a{
  font-family:"IBM Plex Mono",monospace; letter-spacing:.1em; text-transform:uppercase; font-size:11px; color:var(--pms-faint);
}
.woocommerce-tabs ul.tabs li.active a{ color:var(--pms-accent); }
.woocommerce-tabs .panel{ color:var(--pms-ink-muted); font-size:14.5px; line-height:1.7; max-width:70ch; }
.woocommerce-tabs table.shop_attributes{ width:100%; border-collapse:collapse; font-size:13.5px; }
.woocommerce-tabs table.shop_attributes th,
.woocommerce-tabs table.shop_attributes td{ padding:10px 0; border-bottom:1px solid var(--pms-line-soft); text-align:left; color:var(--pms-ink-muted); }
.woocommerce-tabs table.shop_attributes th{ width:200px; color:var(--pms-ink); font-weight:500; }

.related.products{ margin-top:56px; }
.related.products > h2{ font-family:Archivo,sans-serif; font-variation-settings:"wdth" 125; font-weight:800; text-transform:uppercase; font-size:22px; margin:0 0 20px; }

/* cart + checkout */
table.shop_table{ width:100%; border-collapse:collapse; margin-bottom:24px; }
table.shop_table th, table.shop_table td{ padding:14px 12px; border-bottom:1px solid var(--pms-line-soft); font-size:13.5px; color:var(--pms-ink-muted); text-align:left; }
table.shop_table th{ font-family:"IBM Plex Mono",monospace; letter-spacing:.08em; text-transform:uppercase; font-size:10.5px; color:var(--pms-faint); }
table.shop_table td.product-name a{ color:var(--pms-ink); }
table.shop_table .product-thumbnail img{ width:64px; border-radius:6px; }
.cart_totals, .checkout-review-order{ background:var(--pms-panel); border:1px solid var(--pms-line); border-radius:6px; padding:20px; }
.cart_totals .order-total .amount, .order-total .amount{ color:var(--pms-accent); font-family:"IBM Plex Mono",monospace; }

.woocommerce form .form-row input.input-text,
.woocommerce form .form-row textarea,
.woocommerce form .form-row select,
.select2-container .select2-selection{
  background:var(--pms-panel) !important; border:1.5px solid rgba(120,240,200,.2) !important; color:var(--pms-ink) !important; border-radius:6px !important; padding:12px !important; font-size:14px !important;
}
.woocommerce form .form-row label{ color:var(--pms-ink-muted); font-size:13px; }

a.button, button.button, input.button, #place_order, .checkout-button{
  background:linear-gradient(120deg,var(--pms-accent),#00C6C2) !important; color:var(--pms-on-accent) !important; font-family:"IBM Plex Mono",monospace !important;
  letter-spacing:.1em; text-transform:uppercase; font-size:12px !important; padding:14px 24px !important; border-radius:6px !important; border:none !important;
}

@media (max-width:960px){
  body.woocommerce ul.products.columns-4, body.woocommerce-page ul.products.columns-4, ul.products{ grid-template-columns:repeat(2,minmax(0,1fr)) !important; }
  .woocommerce div.product > .woocommerce-product-gallery,
  .woocommerce div.product > .summary{ flex:1 1 100%; }
}
@media (max-width:700px){
  .pms-woo-wrap{ padding-left:24px; padding-right:24px; }
  body.woocommerce ul.products.columns-4, body.woocommerce-page ul.products.columns-4, ul.products{ grid-template-columns:1fr !important; }
}
