/*
Theme Name: PressMyShirt
Theme URI: https://pressmyshirt.example
Author: H2H Media
Author URI: https://h2hmedia.example
Description: Custom apparel printing site — fused marketplace/space-navy visual system with automatic light/dark mode based on the visitor's OS setting.
Version: 0.2.5
Requires at least: 6.4
Tested up to: 6.6
Requires PHP: 7.4
License: Proprietary
Text Domain: pressmyshirt
*/

/* ===================================================================
   DESIGN TOKENS
   Light values are the defaults. Dark values apply automatically when
   the visitor's OS is set to dark (prefers-color-scheme), UNLESS they
   have explicitly chosen a mode with the header toggle, in which case
   that choice (stored as data-theme on <html>, persisted in
   localStorage by main.js) wins regardless of the OS setting.
   =================================================================== */
:root{
  --pms-bg:#FFFFFF;
  --pms-bg-alt:#F5F5F2;
  --pms-tile-bg:#EBEBE6;
  --pms-card-bg:#FFFFFF;
  --pms-header-bg:rgba(255,255,255,.92);
  --pms-input-bg:#F5F5F2;
  --pms-stage-bg:#F5F5F2;
  --pms-ink:#131316;
  --pms-ink-2:#55555F;
  --pms-ink-3:#6E6E78;
  --pms-line:#E2E2DC;
  --pms-line-soft:#EFEFEA;
  --pms-accent:#E0201B;
  --pms-accent-2:#B7150F;
  --pms-accent-ink:#FFFFFF;
  --pms-accent-glow:rgba(224,32,27,.28);
  --pms-gold:#D8FF47;
  --pms-gold-ink:#1A1A1A;
  --pms-sale:#E0201B;
  --pms-sale-bg:#E0201B;
  --pms-go:#0E8A55;
  --pms-garment:#DADFE8;
  --pms-track-bg:#D8D8D2;
  --pms-knob-bg:#FFFFFF;
  --pms-orbit:rgba(19,19,22,.10);
  --pms-orbit-2:rgba(224,32,27,.10);
  --pms-stage-shadow:0 24px 50px -28px rgba(19,19,22,.22);
  --pms-promo-bg:#131316;
  --pms-promo-ink:#FFFFFF;
  --pms-footer-bg:#131316;
  --pms-footer-ink:#FFFFFF;
  --pms-footer-dim:rgba(255,255,255,.6);
  --pms-footer-line:rgba(255,255,255,.14);
  --pms-radius:14px;
  --pms-radius-sm:10px;
  --pms-maxw:1320px;
  --pms-pad:clamp(16px,3.4vw,40px);
}

/* OS says dark, and the visitor hasn't explicitly picked light */
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --pms-bg:#080C18;
    --pms-bg-alt:#0D1222;
    --pms-tile-bg:#111728;
    --pms-card-bg:#111728;
    --pms-header-bg:rgba(8,12,24,.86);
    --pms-input-bg:#111728;
    --pms-stage-bg:#111728;
    --pms-ink:#FFFFFF;
    --pms-ink-2:#A3AFC7;
    --pms-ink-3:#8291B5;
    --pms-line:rgba(255,255,255,.10);
    --pms-line-soft:rgba(255,255,255,.06);
    --pms-accent:#4C8DFF;
    --pms-accent-2:#7B4DFF;
    --pms-accent-ink:#06112B;
    --pms-accent-glow:rgba(76,141,255,.5);
    --pms-gold:#FFC44D;
    --pms-gold-ink:#241800;
    --pms-sale:#FF6B81;
    --pms-sale-bg:#C62B47;
    --pms-go:#34D399;
    --pms-garment:#1F2A42;
    --pms-track-bg:#242E46;
    --pms-knob-bg:#FFFFFF;
    --pms-orbit:rgba(255,255,255,.09);
    --pms-orbit-2:rgba(255,196,77,.14);
    --pms-stage-shadow:0 30px 70px -32px rgba(0,0,0,.9);
    --pms-promo-bg:linear-gradient(90deg,#2E6DF0,#7B4DFF 60%,#FF6B81);
    --pms-promo-ink:#FFFFFF;
    --pms-footer-bg:#0D1222;
    --pms-footer-ink:#FFFFFF;
    --pms-footer-dim:#8291B5;
    --pms-footer-line:rgba(255,255,255,.10);
  }
}
/* visitor explicitly picked dark via the header toggle — wins over OS */
:root[data-theme="dark"]{
  --pms-bg:#080C18;
  --pms-bg-alt:#0D1222;
  --pms-tile-bg:#111728;
  --pms-card-bg:#111728;
  --pms-header-bg:rgba(8,12,24,.86);
  --pms-input-bg:#111728;
  --pms-stage-bg:#111728;
  --pms-ink:#FFFFFF;
  --pms-ink-2:#A3AFC7;
  --pms-ink-3:#8291B5;
  --pms-line:rgba(255,255,255,.10);
  --pms-line-soft:rgba(255,255,255,.06);
  --pms-accent:#4C8DFF;
  --pms-accent-2:#7B4DFF;
  --pms-accent-ink:#06112B;
  --pms-accent-glow:rgba(76,141,255,.5);
  --pms-gold:#FFC44D;
  --pms-gold-ink:#241800;
  --pms-sale:#FF6B81;
  --pms-sale-bg:#C62B47;
  --pms-go:#34D399;
  --pms-garment:#1F2A42;
  --pms-track-bg:#242E46;
  --pms-knob-bg:#FFFFFF;
  --pms-orbit:rgba(255,255,255,.09);
  --pms-orbit-2:rgba(255,196,77,.14);
  --pms-stage-shadow:0 30px 70px -32px rgba(0,0,0,.9);
  --pms-promo-bg:linear-gradient(90deg,#2E6DF0,#7B4DFF 60%,#FF6B81);
  --pms-promo-ink:#FFFFFF;
  --pms-footer-bg:#0D1222;
  --pms-footer-ink:#FFFFFF;
  --pms-footer-dim:#8291B5;
  --pms-footer-line:rgba(255,255,255,.10);
}

/* ===================================================================
   BASE
   =================================================================== */
*{ box-sizing:border-box; }
html{ scroll-behavior:smooth; overflow-x:hidden; }
body{
  margin:0; background:var(--pms-bg); color:var(--pms-ink); overflow-x:hidden; max-width:100%;
  font-family:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  font-size:15px; line-height:1.6; -webkit-font-smoothing:antialiased;
  transition:background .2s ease, color .2s ease;
}
img,svg{ max-width:100%; display:block; }
a{ color:inherit; text-decoration:none; }
button{ font:inherit; color:inherit; background:none; border:none; cursor:pointer; }
input,select,textarea{ font:inherit; color:inherit; }
h1,h2,h3,h4{ margin:0; font-family:"Bricolage Grotesque","Inter",sans-serif; font-weight:700; letter-spacing:-.02em; line-height:1.08; }
:focus-visible{ outline:2px solid var(--pms-accent); outline-offset:2px; border-radius:4px; }

.pms-wrap{ max-width:var(--pms-maxw); margin:0 auto; padding-inline:var(--pms-pad); }
.pms-sub{ color:var(--pms-ink-2); }
.pms-faint{ color:var(--pms-ink-3); }

/* buttons */
.pms-btn{
  display:inline-flex; align-items:center; justify-content:center; gap:8px;
  border-radius:100px; font-weight:700; font-size:14.5px; padding:14px 26px;
  transition:background .15s ease, border-color .15s ease, opacity .15s ease; white-space:nowrap;
}
.pms-btn-primary{ background:var(--pms-accent); color:var(--pms-accent-ink); box-shadow:0 14px 30px -14px var(--pms-accent-glow); }
.pms-btn-primary:hover{ opacity:.9; }
.pms-btn-outline{ border:1.5px solid var(--pms-line); background:var(--pms-input-bg); }
.pms-btn-outline:hover{ border-color:var(--pms-ink-3); }
.pms-btn-sm{ padding:9px 16px; font-size:13px; }
.pms-btn-lg{ padding:16px 30px; font-size:16px; }
.pms-btn.is-disabled, .pms-btn:disabled{
  background:var(--pms-bg-alt); color:var(--pms-ink-3); box-shadow:none; cursor:not-allowed; opacity:.7; pointer-events:none;
}

/* ===================================================================
   PROMO STRIP
   =================================================================== */
.pms-promo{ background:var(--pms-promo-bg); color:var(--pms-promo-ink); font-size:13.5px; }
.pms-promo-inner{ display:flex; align-items:center; justify-content:center; gap:10px; height:38px; text-align:center; }

/* ===================================================================
   HEADER
   =================================================================== */
.pms-header{
  position:sticky; top:0; z-index:50; background:var(--pms-header-bg); backdrop-filter:blur(14px);
  border-bottom:1px solid var(--pms-line);
}
.pms-header-bar{ display:flex; align-items:center; gap:18px; height:68px; }
.pms-logo{ display:flex; align-items:center; gap:10px; flex:0 0 auto; }
.pms-logo-mark{
  width:34px; height:34px; border-radius:10px; display:grid; place-items:center; flex:0 0 auto;
  background:linear-gradient(135deg,var(--pms-accent),var(--pms-accent-2));
  box-shadow:0 8px 20px -8px var(--pms-accent-glow);
}
.pms-logo-mark span{ font-family:"Bricolage Grotesque",sans-serif; font-weight:800; font-size:16px; color:var(--pms-accent-ink); }
.pms-logo-word{ font-family:"Bricolage Grotesque",sans-serif; font-weight:800; font-size:18px; letter-spacing:-.02em; }

.pms-search{ flex:1; max-width:460px; position:relative; min-width:0; }
.pms-search input{
  width:100%; height:42px; border-radius:100px; border:1px solid var(--pms-line);
  background:var(--pms-input-bg); color:var(--pms-ink); padding:0 42px 0 38px; font-size:13.5px; outline:none;
}
.pms-search input:focus-visible{ border-color:var(--pms-accent); box-shadow:0 0 0 3px var(--pms-accent-glow); }
.pms-search > svg{ position:absolute; left:14px; top:12px; pointer-events:none; }
.pms-search-submit{
  position:absolute; right:4px; top:4px; width:34px; height:34px; border-radius:50%;
  display:grid; place-items:center; color:var(--pms-ink-2); transition:background .15s ease,color .15s ease;
}
.pms-search-submit:hover{ background:var(--pms-tile-bg); color:var(--pms-ink); }

.pms-main-nav{ display:flex; gap:4px; margin-left:auto; flex:0 0 auto; }
.pms-main-nav a{ padding:8px 13px; border-radius:100px; font-size:13.5px; font-weight:600; color:var(--pms-ink-2); transition:background .15s ease,color .15s ease; }
.pms-main-nav a:hover{ background:var(--pms-input-bg); color:var(--pms-ink); }
.pms-main-nav a.is-current{ background:var(--pms-accent); color:var(--pms-accent-ink); }
.pms-main-nav a.is-sale{ color:var(--pms-sale); font-weight:700; }

.pms-header-actions{ display:flex; align-items:center; gap:4px; flex:0 0 auto; }
.pms-icon-btn{ position:relative; width:40px; height:40px; border-radius:50%; display:grid; place-items:center; transition:background .15s ease; }
.pms-icon-btn:hover{ background:var(--pms-input-bg); }
.pms-icon-btn .pms-count{
  position:absolute; top:1px; right:0; min-width:16px; height:16px; border-radius:8px; background:var(--pms-sale-bg); color:#fff;
  font-size:10px; font-weight:700; display:grid; place-items:center; border:2px solid var(--pms-header-bg);
}
.pms-icon-btn .pms-count[data-count="0"]{ display:none; }

/* light/dark toggle */
.pms-theme-toggle{
  display:flex; align-items:center; gap:8px; margin-left:6px; padding:6px 6px 6px 12px;
  border-radius:100px; border:1px solid var(--pms-line); background:var(--pms-input-bg);
}
.pms-theme-toggle .pms-tt-label{ font-size:12px; font-weight:600; color:var(--pms-ink-2); }
.pms-theme-toggle .pms-tt-track{ position:relative; width:38px; height:22px; border-radius:11px; background:var(--pms-track-bg); transition:background .2s ease; }
.pms-theme-toggle .pms-tt-knob{
  position:absolute; top:2px; left:2px; width:18px; height:18px; border-radius:50%; background:var(--pms-knob-bg);
  display:grid; place-items:center; box-shadow:0 2px 6px rgba(0,0,0,.3); transition:left .2s ease;
}
@media (prefers-color-scheme:dark){ :root:not([data-theme="light"]) .pms-theme-toggle .pms-tt-knob{ left:18px; } }
:root[data-theme="dark"] .pms-theme-toggle .pms-tt-knob{ left:18px; }
.pms-theme-toggle .pms-tt-icon-sun{ display:block; }
.pms-theme-toggle .pms-tt-icon-moon{ display:none; }
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]) .pms-theme-toggle .pms-tt-icon-sun{ display:none; }
  :root:not([data-theme="light"]) .pms-theme-toggle .pms-tt-icon-moon{ display:block; }
}
:root[data-theme="dark"] .pms-theme-toggle .pms-tt-icon-sun{ display:none; }
:root[data-theme="dark"] .pms-theme-toggle .pms-tt-icon-moon{ display:block; }

.pms-nav-toggle{ display:none; flex-direction:column; justify-content:center; gap:5px; width:34px; height:34px; margin-left:4px; }
.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); }

@media (max-width:960px){
  .pms-search{ order:5; flex-basis:100%; max-width:none; height:0; overflow:hidden; margin:0; }
  .pms-search.is-open{ height:42px; margin-top:12px; }
  .pms-header-bar{ flex-wrap:wrap; height:auto; padding-block:12px; }
  .pms-main-nav{ display:none; order:4; flex-basis:100%; flex-direction:column; align-items:flex-start; gap:0; max-height:0; overflow:hidden; transition:max-height .25s ease; margin-left:0; }
  .pms-main-nav.is-open{ display:flex; max-height:320px; padding-top:10px; }
  .pms-main-nav a{ padding:12px 4px; width:100%; border-top:1px solid var(--pms-line-soft); border-radius:0; }
  .pms-nav-toggle{ display:flex; }
  .pms-header-bar{ gap:10px; }
  .pms-logo-word{ font-size:16px; }
  .pms-header-actions{ gap:2px; margin-left:auto; }
  .pms-saved-btn{ display:none; }
  .pms-theme-toggle{ gap:0; padding:6px; }
  .pms-theme-toggle .pms-tt-label{ display:none; }
}

@media (max-width:420px){
  .pms-icon-btn{ width:36px; height:36px; }
  .pms-theme-toggle .pms-tt-track{ width:34px; height:20px; }
  .pms-theme-toggle .pms-tt-knob{ width:16px; height:16px; }
  :root[data-theme="dark"] .pms-theme-toggle .pms-tt-knob{ left:16px; }
}
@media (max-width:420px) and (prefers-color-scheme:dark){
  :root:not([data-theme="light"]) .pms-theme-toggle .pms-tt-knob{ left:16px; }
}

/* ===================================================================
   HERO
   =================================================================== */
.pms-hero{ position:relative; background:var(--pms-bg-alt); border-bottom:1px solid var(--pms-line); overflow:hidden; }
.pms-hero-glow{
  position:absolute; inset:0; pointer-events:none; opacity:.5;
  background:radial-gradient(50% 46% at 76% 10%,var(--pms-accent-glow),transparent 68%),
             radial-gradient(42% 40% at 8% 78%,var(--pms-gold),transparent 85%);
}
@media (prefers-color-scheme:dark){ :root:not([data-theme="light"]) .pms-hero-glow{ opacity:1; } }
:root[data-theme="dark"] .pms-hero-glow{ opacity:1; }

.pms-hero-inner{ position:relative; display:grid; grid-template-columns:minmax(0,1.02fr) minmax(0,.98fr); gap:48px; align-items:center; padding-block:clamp(32px,4vw,56px); }
.pms-flag{ display:inline-flex; align-items:center; gap:8px; background:var(--pms-gold); color:var(--pms-gold-ink); border-radius:100px; padding:6px 15px; font-size:12.5px; font-weight:800; margin-bottom:18px; }
.pms-hero h1{ font-size:clamp(32px,4vw,54px); max-width:12.5ch; }
.pms-hero p.pms-hero-sub{ margin:18px 0 0; font-size:17px; line-height:1.6; color:var(--pms-ink-2); max-width:46ch; }
.pms-hero-cta{ display:flex; gap:12px; flex-wrap:wrap; margin-top:28px; }
.pms-hero-stats{ display:flex; gap:28px; flex-wrap:wrap; margin-top:30px; padding-top:22px; border-top:1px solid var(--pms-line); }
.pms-hero-stats div span{ display:block; font-family:"Bricolage Grotesque",sans-serif; font-weight:800; font-size:22px; }
.pms-hero-stats div small{ color:var(--pms-ink-3); font-size:12.5px; }

.pms-stage{
  position:relative; border-radius:20px; padding:28px; background:var(--pms-stage-bg); border:1px solid var(--pms-line);
  box-shadow:var(--pms-stage-shadow); aspect-ratio:4/4.4; display:grid; place-items:center;
}
.pms-stage-orbit{ position:absolute; inset:9%; border-radius:50%; border:1px solid var(--pms-orbit); animation:pms-spin 70s linear infinite; }
.pms-stage-orbit-2{ position:absolute; inset:21%; border-radius:50%; border:1px solid var(--pms-orbit-2); }
.pms-stage-sweep{
  position:absolute; left:12%; right:12%; height:2px; top:22%; opacity:.35;
  background:linear-gradient(90deg,transparent,var(--pms-accent),transparent); box-shadow:0 0 16px var(--pms-accent);
  animation:pms-sweep 3.2s ease-in-out infinite;
}
@media (prefers-color-scheme:dark){ :root:not([data-theme="light"]) .pms-stage-sweep{ opacity:.9; } }
:root[data-theme="dark"] .pms-stage-sweep{ opacity:.9; }
.pms-stage-garment{ position:relative; width:58%; filter:drop-shadow(0 18px 28px rgba(0,0,0,.25)); }
@keyframes pms-spin{ to{ transform:rotate(360deg); } }
@keyframes pms-sweep{ 0%,100%{ top:20%; } 50%{ top:78%; } }

@media (max-width:960px){ .pms-hero-inner{ grid-template-columns:1fr; } }
@media (max-width:520px){
  .pms-hero-cta{ gap:8px; }
  .pms-hero-cta .pms-btn{ flex:1 1 auto; text-align:center; padding-inline:14px; }
  .pms-hero-stats{ gap:10px; flex-wrap:nowrap; justify-content:space-between; }
  .pms-hero-stats div span{ font-size:17px; }
  .pms-hero-stats div small{ font-size:10.5px; line-height:1.3; }
}

/* ===================================================================
   TRUST STRIP
   =================================================================== */
.pms-trust{ display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:1px; background:var(--pms-line); border-block:1px solid var(--pms-line); }
.pms-trust > div{ background:var(--pms-bg); padding:22px 24px; display:flex; gap:12px; align-items:flex-start; }
.pms-trust b{ display:block; font-size:14px; }
.pms-trust small{ color:var(--pms-ink-3); font-size:12.5px; line-height:1.5; }
@media (max-width:860px){ .pms-trust{ grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media (max-width:520px){ .pms-trust > div{ padding:16px; } .pms-trust span{ display:none; } }

/* ===================================================================
   SECTIONS / TILES / PRODUCT GRID
   =================================================================== */
.pms-section{ padding:clamp(40px,5vw,64px) 0; }
.pms-section-alt{ background:var(--pms-bg-alt); }
.pms-section-head{ display:flex; align-items:flex-end; justify-content:space-between; gap:20px; margin-bottom:24px; flex-wrap:wrap; }
.pms-section-head h2{ font-size:clamp(22px,2.4vw,30px); }
.pms-section-head p{ margin:7px 0 0; color:var(--pms-ink-2); }

.pms-tiles{ display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:14px; }
.pms-tile{ position:relative; border-radius:var(--pms-radius); overflow:hidden; background:var(--pms-tile-bg); border:1px solid var(--pms-line); aspect-ratio:1; display:grid; place-items:center; transition:transform .18s ease; }
.pms-tile:hover{ transform:translateY(-3px); }
.pms-tile svg{ width:42%; }
.pms-tile img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }
.pms-tile-label{ position:absolute; left:0; right:0; bottom:0; padding:22px 12px 12px; font-weight:700; font-size:14px; color:#fff; background:linear-gradient(transparent,rgba(0,0,0,.62)); }
@media (max-width:860px){ .pms-tiles{ grid-template-columns:repeat(2,minmax(0,1fr)); } }

.pms-grid{ display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:18px; }
.pms-card{ display:flex; flex-direction:column; min-width:0; }
.pms-card-bed{ position:relative; border-radius:var(--pms-radius); overflow:hidden; border:1px solid var(--pms-line); background:var(--pms-card-bg); aspect-ratio:1; display:grid; place-items:center; padding:14px; transition:border-color .18s ease, box-shadow .18s ease; }
.pms-card:hover .pms-card-bed{ border-color:var(--pms-accent); }
.pms-card-bed svg{ width:56%; }
.pms-badge{ position:absolute; top:10px; left:10px; font-size:10.5px; font-weight:800; padding:4px 9px; border-radius:7px; text-transform:uppercase; }
.pms-badge-sale{ background:var(--pms-gold); color:var(--pms-gold-ink); }
.pms-badge-new{ background:var(--pms-ink); color:var(--pms-bg); }
.pms-badge-featured{ background:var(--pms-accent); color:var(--pms-accent-ink); }
.pms-card-info{ padding:11px 2px 0; }
.pms-card-name{ font-weight:600; font-size:14.5px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.pms-card-by{ font-size:12.5px; color:var(--pms-ink-3); margin-top:2px; }
.pms-card-price{ display:flex; align-items:baseline; gap:7px; margin-top:5px; }
.pms-card-price b{ font-family:"Bricolage Grotesque",sans-serif; font-size:16px; }
.pms-card-price s{ color:var(--pms-ink-3); font-size:13px; }
@media (max-width:960px){ .pms-grid{ grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media (max-width:520px){ .pms-grid{ gap:10px; } }

/* ===================================================================
   FOOTER
   =================================================================== */
.pms-footer{ background:var(--pms-footer-bg); color:var(--pms-footer-ink); padding:48px 0 28px; margin-top:40px; }
.pms-footer-grid{ display:grid; grid-template-columns:minmax(0,1.8fr) repeat(3,minmax(0,1fr)); gap:30px; }
.pms-footer-brand{ font-family:"Bricolage Grotesque",sans-serif; font-weight:800; font-size:18px; }
.pms-footer p{ margin:12px 0 0; color:var(--pms-footer-dim); font-size:13.5px; max-width:34ch; }
.pms-footer h5{ font-size:12.5px; color:var(--pms-footer-dim); margin:0 0 12px; text-transform:uppercase; letter-spacing:.06em; font-weight:700; }
.pms-footer ul{ list-style:none; margin:0; padding:0; display:grid; gap:8px; font-size:13.5px; }
.pms-footer a:hover{ color:var(--pms-gold); }
.pms-footer-bottom{ max-width:var(--pms-maxw); margin:28px auto 0; padding:20px var(--pms-pad) 0; border-top:1px solid var(--pms-footer-line); color:var(--pms-footer-dim); font-size:12.5px; }
@media (max-width:860px){ .pms-footer-grid{ grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media (max-width:520px){ .pms-footer-grid{ grid-template-columns:1fr; } }

/* ===================================================================
   WOOCOMMERCE — shop archive, single product, cart, checkout reskinned
   to the token system above so light/dark mode covers WooCommerce too.
   =================================================================== */
.pms-woo-wrap{ padding-top:40px; padding-bottom:72px; }
.pms-woo-wrap h1.page-title,
.pms-woo-wrap h1.product_title{ font-family:"Bricolage Grotesque",sans-serif; font-weight:800; letter-spacing:-.02em; font-size:30px; margin:0 0 24px; color:var(--pms-ink); }
.woocommerce-breadcrumb{ font-size:12.5px; color:var(--pms-ink-3); margin-bottom:22px; }
.woocommerce-breadcrumb a:hover{ color:var(--pms-accent); }

/* notices / "added to cart" message */
.woocommerce-notices-wrapper{ display:block; width:100%; }
.woocommerce-notices-wrapper .woocommerce-message,
.woocommerce-notices-wrapper .woocommerce-info,
.woocommerce-notices-wrapper .woocommerce-error{
  position:relative; display:flex; flex-wrap:wrap; align-items:center; gap:8px 16px;
  list-style:none !important; background:var(--pms-card-bg); border:1px solid var(--pms-line); border-left:3px solid var(--pms-accent);
  border-radius:var(--pms-radius-sm); padding:14px 18px 14px 44px !important; color:var(--pms-ink); font-size:14px; margin:0 0 24px !important;
}
.woocommerce-notices-wrapper .woocommerce-error{ border-left-color:var(--pms-sale); }
.woocommerce-notices-wrapper .woocommerce-message::before,
.woocommerce-notices-wrapper .woocommerce-info::before,
.woocommerce-notices-wrapper .woocommerce-error::before{
  position:absolute !important; top:50% !important; left:16px !important; right:auto !important;
  transform:translateY(-50%); margin:0 !important; width:auto !important; height:auto !important;
  font-size:18px !important; line-height:1 !important; color:var(--pms-accent);
}
.woocommerce-notices-wrapper .woocommerce-error::before{ color:var(--pms-sale); }
.woocommerce-notices-wrapper .woocommerce-message > a.button,
.woocommerce-notices-wrapper .woocommerce-message > a{
  position:static !important; float:none !important; order:2; margin:0 0 0 auto !important;
  padding:8px 16px !important; border-radius:100px; background:var(--pms-accent); color:var(--pms-accent-ink) !important;
  font-size:11.5px; font-weight:700; text-decoration:none !important; white-space:nowrap;
}
.woocommerce-notices-wrapper .woocommerce-message > *:not(a){ flex:1 1 auto; min-width:0; }

/* archive toolbar */
.woocommerce-result-count{ color:var(--pms-ink-3); font-size:13px; float:none !important; }
.woocommerce-ordering{ float:none !important; }
.woocommerce-ordering select{ background:var(--pms-input-bg); border:1px solid var(--pms-line); color:var(--pms-ink); border-radius:100px; padding:8px 14px; font-size:13px; }
.woocommerce-result-count, .woocommerce-ordering{ margin-bottom:24px; }

/* product grid (archive) — kill WooCommerce's legacy clearfix pseudo-elements
   FIRST: once the list becomes display:grid they turn into real, invisible
   grid items and silently occupy column 1, pushing every card over a slot. */
ul.products::before,
ul.products::after{ display:none !important; content:none !important; }
ul.products{
  display:grid !important; grid-template-columns:repeat(4,minmax(0,1fr)) !important; gap:18px !important;
  list-style:none !important; margin:0 !important; padding:0 !important; clear:both !important; justify-items:stretch !important;
}
ul.products > *:not(.product){ display:none !important; }
ul.products li.product{
  position:relative; background:var(--pms-card-bg); border:1px solid var(--pms-line); border-radius:var(--pms-radius); overflow:hidden;
  text-align:left; padding:0 !important; margin:0 !important; float:none !important; width:100% !important; min-width:0 !important;
  max-width:none !important; box-sizing:border-box; transition:border-color .18s ease, transform .18s ease;
}
ul.products li.product:hover{ border-color:var(--pms-accent); transform:translateY(-3px); }
ul.products li.product img{ width:100% !important; aspect-ratio:1/1; object-fit:cover; display:block; background:var(--pms-tile-bg); }
ul.products li.product .woocommerce-loop-product__title{
  font-size:14.5px !important; font-weight:600 !important; color:var(--pms-ink) !important; padding:14px 16px 4px !important; margin:0 !important;
}
ul.products li.product .price{ padding:0 16px 16px !important; margin:0 !important; display:block; font-family:"Bricolage Grotesque",sans-serif; font-size:15px; color:var(--pms-ink); }
ul.products li.product .price del{ color:var(--pms-ink-3); 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-gold); color:var(--pms-gold-ink); font-size:10.5px; font-weight:800;
  letter-spacing:.03em; text-transform:uppercase; padding:4px 9px; border-radius:7px; 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-accent-ink) !important; font-size:12.5px; font-weight:700;
  text-align:center; white-space:normal !important; padding:11px 16px; border-radius:100px;
}
.star-rating{ color:var(--pms-gold); }
.star-rating::before{ color:var(--pms-line); }

.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:100px; border:1px solid var(--pms-line); color:var(--pms-ink-2); font-size:13px; }
.woocommerce-pagination .page-numbers.current{ background:var(--pms-accent); color:var(--pms-accent-ink); border-color:transparent; }

/* single product */
.woocommerce div.product{ display:flex; flex-wrap:wrap; gap:48px; align-items:flex-start; }
.woocommerce div.product > .woocommerce-product-gallery{ flex:1.3 1 380px; min-width:0; max-width:100%; }
.woocommerce div.product > .summary{ flex:1 1 320px; min-width:0; max-width:100%; }
.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__wrapper{ background:var(--pms-tile-bg); border:1px solid var(--pms-line); border-radius:var(--pms-radius); 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 .flex-control-thumbs{ display:flex !important; flex-wrap:wrap; gap:12px; list-style:none !important; margin:28px 0 0 !important; padding:0 !important; }
.woocommerce div.product .flex-control-thumbs li{ width:96px !important; margin:0 !important; float:none !important; }
.woocommerce div.product .flex-control-thumbs li img{ width:96px !important; height:96px !important; object-fit:cover; border-radius:var(--pms-radius-sm); cursor:pointer; border:1.5px solid var(--pms-line); opacity:.65; }
.woocommerce div.product .flex-control-thumbs li img.flex-active{ opacity:1; border-color:var(--pms-accent); }
.woocommerce div.product .summary .price{ font-family:"Bricolage Grotesque",sans-serif; font-size:26px; color:var(--pms-ink); display:block; margin:14px 0 20px; }
.woocommerce div.product .summary .price del{ color:var(--pms-ink-3); font-size:17px; margin-right:10px; }
.woocommerce div.product .woocommerce-product-details__short-description{ color:var(--pms-ink-2); font-size:15px; line-height:1.7; margin-bottom:24px; }
.woocommerce div.product form.cart{ display:flex; align-items:center; gap:12px; flex-wrap:wrap; margin-bottom:24px; }
.woocommerce div.product form.cart input.qty{ width:64px; height:48px; padding:0 12px; background:var(--pms-input-bg); border:1px solid var(--pms-line); border-radius:var(--pms-radius-sm); color:var(--pms-ink); font-size:14px; }
.woocommerce div.product form.cart button.single_add_to_cart_button{
  height:48px; display:inline-flex; align-items:center; justify-content:center; background:var(--pms-accent); color:var(--pms-accent-ink);
  font-weight:700; font-size:13px; padding:0 28px; border-radius:100px; border:none; box-shadow:0 14px 30px -14px var(--pms-accent-glow);
}
.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; padding:0 0 12px; margin:0; font-size:13px; color:var(--pms-ink-2); font-weight:500; white-space:nowrap; }
.woocommerce div.product form.cart .variations select{ background:var(--pms-input-bg); border:1px solid var(--pms-line); color:var(--pms-ink); border-radius:var(--pms-radius-sm); padding:0 12px; font-size:13px; min-width:200px; height:44px; }
.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-size:13px; font-weight:600; color:var(--pms-ink-3); }
.woocommerce-tabs ul.tabs li.active a{ color:var(--pms-accent); }
.woocommerce-tabs .panel{ color:var(--pms-ink-2); font-size:14.5px; line-height:1.7; max-width:70ch; }

/* cart + checkout — classic shortcode markup */
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-2); text-align:left; }
table.shop_table th{ font-size:11px; letter-spacing:.06em; text-transform:uppercase; color:var(--pms-ink-3); }
table.shop_table td.product-name a{ color:var(--pms-ink); }
table.shop_table .product-thumbnail img{ width:64px; border-radius:var(--pms-radius-sm); }
table.shop_table .product-name .product-quantity,
.woocommerce-checkout-review-order-table .product-name .product-quantity,
.order_details .product-quantity{
  display:inline-flex !important; align-items:center; justify-content:center; min-width:22px; height:20px; margin-left:6px; padding:0 6px;
  border-radius:999px; background:var(--pms-ink) !important; color:var(--pms-bg) !important; font-size:11px; font-weight:700; vertical-align:middle;
}
.cart_totals, .checkout-review-order{ background:var(--pms-card-bg); border:1px solid var(--pms-line); border-radius:var(--pms-radius); padding:20px; }
.cart_totals .order-total .amount, .order-total .amount{ color:var(--pms-accent); font-family:"Bricolage Grotesque",sans-serif; }
.woocommerce form .form-row input.input-text,
.woocommerce form .form-row textarea,
.woocommerce form .form-row select,
.select2-container .select2-selection{
  background:var(--pms-input-bg) !important; border:1px solid var(--pms-line) !important; color:var(--pms-ink) !important; border-radius:var(--pms-radius-sm) !important; padding:12px !important; font-size:14px !important;
}
.woocommerce form .form-row label,
.woocommerce-checkout .form-row label,
.woocommerce-billing-fields label,
.woocommerce-shipping-fields label,
.woocommerce-additional-fields label,
.woocommerce-checkout #order_review label,
.woocommerce-checkout legend{ color:var(--pms-ink) !important; font-weight:600 !important; font-size:13px !important; opacity:1 !important; }
.woocommerce-checkout .required{ color:var(--pms-sale) !important; text-decoration:none; }

/* cart + checkout — WooCommerce BLOCKS markup (Cart & Checkout blocks) */
.wc-block-checkout label,
.wp-block-woocommerce-checkout label,
.wc-block-components-text-input label,
.wc-block-components-textarea label,
.wc-block-components-combobox-control label,
.wc-block-components-country-input label,
.wc-block-components-state-input label,
.wc-block-components-address-form label{ color:var(--pms-ink) !important; font-weight:600 !important; opacity:1 !important; }
.wc-block-components-order-summary-item__quantity,
.wc-block-cart-item__quantity{ background:var(--pms-ink) !important; color:var(--pms-bg) !important; border:1px solid var(--pms-line) !important; font-weight:700 !important; }

a.button, button.button, input.button, #place_order, .checkout-button{
  background:var(--pms-accent) !important; color:var(--pms-accent-ink) !important; font-weight:700 !important;
  font-size:13px !important; padding:14px 26px !important; border-radius:100px !important; border:none !important;
}

@media (max-width:960px){
  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; }
  ul.products{ grid-template-columns:1fr !important; }
}

@media (prefers-reduced-motion:reduce){ *{ animation:none !important; transition-duration:.01ms !important; scroll-behavior:auto; } }
