/*
Theme Name: MW Linocut
Theme URI: https://markandrewwebber.com
Author: Mark Andrew Webber
Description: Editorial letterpress-inspired theme for hand-cut linocut city map editions. WooCommerce-ready, fully editable from the Customizer.
Version: 1.8.0
Requires at least: 6.0
Tested up to: 6.6
Requires PHP: 7.4
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: mw-linocut
Tags: portfolio, e-commerce, custom-colors, editorial
WC requires at least: 8.0
WC tested up to: 9.1
*/

:root{
  --ink:#14110F;
  --paper:#F5F3EE;
  --press:#16325C;
  --reg:#C13B2A;
  --grey:#8C877D;
  --rule:#D6D2C8;
  --display:'Archivo','Helvetica Neue',Arial,sans-serif;
  --body:'Newsreader',Georgia,serif;
  --mono:'DM Mono','SFMono-Regular',Consolas,monospace;
  --pad:clamp(20px,5vw,72px);
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *{animation:none!important;transition:none!important}
}
body{
  background:var(--paper);
  color:var(--ink);
  font-family:var(--body);
  font-size:17px;
  line-height:1.55;
  -webkit-font-smoothing:antialiased;
}
img{max-width:100%;height:auto;display:block}
a{color:inherit}
:focus-visible{outline:2px solid var(--press);outline-offset:3px}
.screen-reader-text{
  position:absolute!important;width:1px;height:1px;
  overflow:hidden;clip:rect(1px,1px,1px,1px);white-space:nowrap;
}
.skip-link{
  position:absolute;left:-9999px;top:0;z-index:999;
  background:var(--ink);color:var(--paper);padding:12px 18px;
  font-family:var(--display);font-size:12px;text-transform:uppercase;
  text-decoration:none;
}
.skip-link:focus{left:0}
.eyebrow{
  font-family:var(--mono);
  font-size:11px;
  letter-spacing:.14em;
  text-transform:uppercase;
  color:var(--grey);
}

/* ---------- nav ---------- */
.site-header{
  position:sticky;top:0;z-index:50;
  background:var(--paper);
  border-bottom:1px solid var(--rule);
}
.nav{
  display:flex;align-items:center;gap:28px;
  padding:14px var(--pad);
}
.wordmark{
  font-family:var(--display);
  font-weight:800;
  font-size:14px;
  letter-spacing:.02em;
  text-transform:uppercase;
  text-decoration:none;
  margin-right:auto;
}
.wordmark span{color:var(--grey);font-weight:400}
.nav ul{display:flex;gap:24px;list-style:none;margin:0;padding:0}
.nav a.link,
.nav .menu-item a{
  font-family:var(--display);
  font-size:13px;
  letter-spacing:.04em;
  text-decoration:none;
  text-transform:uppercase;
  padding-bottom:2px;
  border-bottom:1.5px solid transparent;
}
.nav a.link:hover,
.nav .menu-item a:hover{border-color:var(--ink)}
.nav a.link.is-primary,
.nav .current-menu-item > a{color:var(--press);border-color:var(--press)}
/* On the front page the first nav item (Maps) carries the accent, matching
   the original design, whether it comes from a real menu or the fallback. */
.home .nav ul > li:first-child > a{color:var(--press);border-color:var(--press)}
/* =========================================================
   MAPS MEGA-PANEL
   The panel is a sibling of .nav inside .site-header, so its
   width is the header's width — never the menu item's.
   ========================================================= */
.site-header{position:sticky}
.nav .has-maps-panel > a::after{
  content:'';
  display:inline-block;
  width:5px;height:5px;
  margin-left:7px;
  vertical-align:2px;
  border-right:1.5px solid currentColor;
  border-bottom:1.5px solid currentColor;
  transform:rotate(45deg);
  transition:transform .15s ease;
}
.maps-panel{
  display:none;
  position:absolute;
  top:100%;
  left:0;
  right:0;
  width:100%;
  background:var(--paper);
  border-top:1.5px solid var(--ink);
  border-bottom:1px solid var(--rule);
  z-index:60;
}
/* Opened by JS on hover, focus, tap and keyboard. */
.site-header.is-panel-open .maps-panel{display:block}
.site-header.is-panel-open .has-maps-panel > a::after{transform:rotate(-135deg)}

/* CSS-only fallback if the script hasn't run yet. */
@supports selector(:has(*)){
  .site-header:has(.has-maps-panel:hover) .maps-panel,
  .site-header:has(.has-maps-panel:focus-within) .maps-panel,
  .site-header:has(.maps-panel:hover) .maps-panel{display:block}
}

.maps-panel-inner{
  padding:26px var(--pad) 20px;
  max-width:1600px;
  margin:0 auto;
}
.maps-panel-grid{
  display:grid;
  grid-template-columns:repeat(auto-fill,minmax(210px,1fr));
  gap:1px;
  background:var(--rule);
  border:1px solid var(--rule);
}
.mp-item{
  display:flex;
  align-items:flex-start;
  gap:14px;
  padding:14px;
  background:var(--paper);
  text-decoration:none;
  border:0;
  transition:background .12s ease;
}
.mp-item:hover{background:#EFEDE7}
.mp-thumb{
  flex:0 0 54px;
  width:54px;
  aspect-ratio:4/5;
  border:1px solid var(--rule);
  overflow:hidden;
  background:#EFEDE7;
}
.mp-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.mp-thumb-blank{
  display:block;width:100%;height:100%;
  background:
    repeating-linear-gradient(90deg,#E6E3DB 0 1px,transparent 1px 7px),
    repeating-linear-gradient(0deg,#E6E3DB 0 1px,transparent 1px 7px),
    #EFEDE7;
}
.mp-body{display:flex;flex-direction:column;gap:3px;min-width:0;flex:1}
.mp-name{
  font-family:var(--display);
  font-weight:800;
  font-size:15px;
  line-height:1.1;
  letter-spacing:-.01em;
  text-transform:uppercase;
  color:var(--ink);
}
.mp-meta{
  font-family:var(--mono);
  font-size:10.5px;
  letter-spacing:.02em;
  color:var(--grey);
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.mp-foot{
  display:flex;
  align-items:baseline;
  justify-content:space-between;
  gap:10px;
  margin-top:4px;
  font-family:var(--mono);
  font-size:10.5px;
  letter-spacing:.02em;
}
.mp-state.remaining{color:var(--press)}
.mp-state.soldout{color:var(--reg)}
.mp-state.is-draft{color:var(--grey)}
.mp-price{color:var(--ink);font-weight:500;white-space:nowrap}
.mp-price del{opacity:.5;margin-right:4px}
.mp-price ins{text-decoration:none}
.mp-item.is-draft{background:#F1EFE9}
.mp-item.is-draft .mp-name{color:#5E5952}

.maps-panel-foot{
  display:flex;
  align-items:baseline;
  justify-content:space-between;
  gap:18px;
  flex-wrap:wrap;
  padding-top:14px;
  font-family:var(--mono);
  font-size:11px;
  letter-spacing:.04em;
  color:var(--grey);
}
.maps-panel-foot a{
  text-decoration:none;
  color:var(--ink);
  border-bottom:1px solid var(--rule);
  padding-bottom:2px;
}
.maps-panel-foot a:hover{border-color:var(--ink)}

/* ---------- standard submenus (if you add your own) ---------- */
.nav ul li.menu-item-has-children{position:relative}
.nav .menu-item-has-children > a::after{
  content:'';
  display:inline-block;
  width:5px;height:5px;
  margin-left:7px;
  vertical-align:2px;
  border-right:1.5px solid currentColor;
  border-bottom:1.5px solid currentColor;
  transform:rotate(45deg);
}
.nav .sub-menu{
  display:none;
  position:absolute;
  top:calc(100% + 13px);
  left:-18px;
  min-width:232px;
  flex-direction:column;
  gap:0;
  background:var(--paper);
  border:1px solid var(--rule);
  border-top:1.5px solid var(--ink);
  padding:6px 0;
  z-index:60;
  list-style:none;
}
.nav li:hover > .sub-menu,
.nav li:focus-within > .sub-menu,
.nav li.is-open > .sub-menu{display:flex}
.nav .sub-menu li{padding:0}
.nav .sub-menu a{
  display:flex;
  align-items:baseline;
  justify-content:space-between;
  gap:14px;
  padding:9px 18px;
  border:0;
  font-family:var(--display);
  font-size:13px;
  letter-spacing:.03em;
  text-transform:uppercase;
  text-decoration:none;
  white-space:nowrap;
}
.nav .sub-menu a:hover{background:#EFEDE7;border:0;color:var(--press)}
.nav .sub-menu .current-menu-item > a{color:var(--press)}
.nav-state{
  font-family:var(--mono);
  font-size:10px;
  letter-spacing:.06em;
  text-transform:uppercase;
  color:var(--grey);
}
.nav .sub-menu .is-soldout{color:var(--reg)}
/* Drafts are only ever rendered for logged-in editors. */
.nav .sub-menu .is-draft{color:var(--press);opacity:.75}
.nav .sub-menu .mw-map-draft > a{opacity:.72}
/* Keep a hoverable bridge between the item and its dropdown. */
.nav .menu-item-has-children::after{
  content:'';
  position:absolute;
  top:100%;left:0;right:0;height:15px;
}

.navlist{
  font-family:var(--mono);
  font-size:12px;
  text-decoration:none;
  border-bottom:1px solid var(--rule);
  white-space:nowrap;
}
.navlist:hover{border-color:var(--ink)}
.cart-link{
  font-family:var(--mono);font-size:12px;text-decoration:none;
  border-bottom:1px solid var(--rule);white-space:nowrap;
}
.cart-link:hover{border-color:var(--ink)}
.cart-count{color:var(--press)}
.nav-toggle{
  display:none;background:none;border:1.5px solid var(--ink);
  font-family:var(--display);font-size:11px;letter-spacing:.06em;
  text-transform:uppercase;padding:8px 12px;cursor:pointer;color:var(--ink);
}
@media(max-width:820px){
  .nav ul{
    display:none;position:absolute;top:100%;left:0;right:0;
    flex-direction:column;gap:0;background:var(--paper);
    border-bottom:1px solid var(--rule);padding:8px var(--pad) 18px;
  }
  .nav ul.is-open{display:flex}
  .nav ul li{padding:10px 0;border-bottom:1px solid var(--rule)}
  .nav-toggle{display:block;order:3}

  /* Dropdown becomes an indented block rather than a floating panel. */
  .nav .sub-menu{
    position:static;
    display:flex;
    min-width:0;
    border:0;
    padding:6px 0 0;
    margin-left:14px;
    background:transparent;
  }
  .nav .sub-menu li{padding:0;border:0}
  .nav .sub-menu a{
    justify-content:flex-start;
    gap:10px;
    padding:8px 0;
    font-size:12px;
    color:var(--grey);
  }
  .nav .sub-menu a:hover{background:transparent}
  .nav .menu-item-has-children::after{display:none}
  .nav .menu-item-has-children > a::after{display:none}

  /* Maps panel becomes a block inside the open mobile menu. */
  .nav .has-maps-panel > a::after{display:none}
  .maps-panel,
  .site-header:has(.has-maps-panel:hover) .maps-panel{
    display:none;
    position:static;
    width:auto;
    border:0;
    border-bottom:1px solid var(--rule);
    background:var(--paper);
  }
  .site-header.is-nav-open .maps-panel{display:block}
  .maps-panel-inner{padding:4px var(--pad) 16px}
  .maps-panel-grid{
    grid-template-columns:1fr;
    border:0;
    background:transparent;
    gap:0;
  }
  .mp-item{
    padding:10px 0;
    background:transparent;
    border-bottom:1px solid var(--rule);
  }
  .mp-item:last-child{border-bottom:0}
  .mp-item:hover,.mp-item.is-draft{background:transparent}
  .mp-thumb{flex-basis:38px;width:38px}
  .mp-name{font-size:13px}
  .maps-panel-foot{padding-top:10px;font-size:10.5px}
}

/* ---------- hero ---------- */
.hero{
  display:grid;
  grid-template-columns:minmax(0,0.95fr) minmax(0,1.05fr);
  border-bottom:1px solid var(--rule);
}
.hero-copy{
  padding:clamp(40px,7vw,88px) clamp(24px,4vw,56px) clamp(40px,7vw,88px) var(--pad);
  align-self:center;
}
h1{
  font-family:var(--display);
  font-weight:800;
  font-size:clamp(38px,5.4vw,74px);
  line-height:.94;
  letter-spacing:-.028em;
  text-transform:uppercase;
  margin:18px 0 22px;
}
h1 em{
  font-family:var(--body);
  font-style:italic;
  font-weight:300;
  text-transform:none;
  letter-spacing:-.01em;
}
.deck{
  font-size:clamp(17px,1.5vw,20px);
  line-height:1.5;
  max-width:34ch;
  color:#3A342E;
}
.actions{display:flex;align-items:center;gap:22px;margin-top:30px;flex-wrap:wrap}
.btn{
  display:inline-block;
  font-family:var(--display);
  font-size:13px;
  font-weight:600;
  letter-spacing:.06em;
  text-transform:uppercase;
  text-decoration:none;
  padding:14px 26px;
  background:var(--ink);
  color:var(--paper);
  border:1.5px solid var(--ink);
  transition:background .15s ease,color .15s ease;
  cursor:pointer;
}
.btn:hover{background:var(--press);border-color:var(--press);color:var(--paper)}
.btn-ghost{background:transparent;color:var(--ink)}
.btn-ghost:hover{background:var(--ink);color:var(--paper);border-color:var(--ink)}
.textlink{
  font-family:var(--mono);
  font-size:13px;
  text-decoration:none;
  border-bottom:1px solid var(--grey);
  padding-bottom:2px;
}
.textlink:hover{border-color:var(--ink)}

/* ---------- hero artwork: city of words ---------- */
.plate{
  position:relative;
  overflow:hidden;
  background:#EFEDE7;
  border-left:1px solid var(--rule);
  min-height:clamp(340px,52vw,600px);
}
.plate-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.streets{
  position:absolute;inset:-6%;
  font-family:var(--display);
  font-weight:600;
  font-size:10px;
  line-height:1.25;
  letter-spacing:.03em;
  text-transform:uppercase;
  color:var(--ink);
  columns:7;
  column-gap:9px;
  padding:16px;
  word-break:break-word;
  opacity:.82;
  mask-image:radial-gradient(120% 100% at 50% 45%,#000 55%,transparent 100%);
  -webkit-mask-image:radial-gradient(120% 100% at 50% 45%,#000 55%,transparent 100%);
}
.streets span{display:block}
.streets span:nth-child(3n){opacity:.42}
.streets span:nth-child(5n){opacity:.62;font-weight:400}
.streets span:nth-child(7n){color:var(--press)}
.river{position:absolute;inset:0;width:100%;height:100%}
.plate-tag{
  position:absolute;left:0;bottom:0;
  background:var(--paper);
  border-top:1px solid var(--rule);
  border-right:1px solid var(--rule);
  padding:9px 16px;
  font-family:var(--mono);
  font-size:11px;
  letter-spacing:.06em;
  color:var(--grey);
}
.regmark{position:absolute;top:16px;right:16px;color:var(--reg);opacity:.9}
@media(max-width:820px){
  .hero{grid-template-columns:1fr}
  .plate{border-left:0;border-top:1px solid var(--rule);order:-1;min-height:300px}
  .streets{columns:5}
  .hero-copy{padding:36px var(--pad) 44px}
}

/* ---------- sections ---------- */
.section{padding:clamp(52px,7vw,96px) var(--pad)}
.sec-head{
  display:flex;align-items:baseline;gap:18px;
  border-bottom:1.5px solid var(--ink);
  padding-bottom:12px;margin-bottom:36px;
}
h2{
  font-family:var(--display);
  font-weight:800;
  font-size:clamp(22px,2.4vw,30px);
  letter-spacing:-.015em;
  text-transform:uppercase;
}
.sec-head p{margin-left:auto;max-width:38ch;font-size:15px;color:var(--grey);text-align:right}
@media(max-width:700px){.sec-head{flex-direction:column;gap:8px}.sec-head p{margin-left:0;text-align:left}}

/* ---------- map grid ---------- */
.grid{
  display:grid;
  grid-template-columns:repeat(auto-fill,minmax(238px,1fr));
  gap:1px;
  background:var(--rule);
  border:1px solid var(--rule);
}
.card{
  background:var(--paper);
  padding:20px 20px 22px;
  display:flex;flex-direction:column;
  transition:background .15s ease;
}
.card:hover{background:#FBFAF7}
.thumb{
  aspect-ratio:4/5;
  background:
    repeating-linear-gradient(90deg,#E6E3DB 0 1px,transparent 1px 9px),
    repeating-linear-gradient(0deg,#E6E3DB 0 1px,transparent 1px 9px),
    #EFEDE7;
  border:1px solid var(--rule);
  margin-bottom:16px;
  display:flex;align-items:center;justify-content:center;
  font-family:var(--mono);font-size:10px;color:var(--grey);
  letter-spacing:.08em;text-align:center;padding:8px;
  overflow:hidden;text-decoration:none;
}
.thumb img{width:100%;height:100%;object-fit:cover}
.card h3{
  font-family:var(--display);
  font-weight:800;font-size:19px;
  text-transform:uppercase;letter-spacing:-.01em;
}
.card h3 a{text-decoration:none}
.meta{font-family:var(--mono);font-size:11.5px;color:var(--grey);margin-top:5px;letter-spacing:.02em}
.edition{
  font-family:var(--mono);font-size:11.5px;
  margin-top:12px;padding-top:10px;
  border-top:1px solid var(--rule);
  display:flex;justify-content:space-between;align-items:center;gap:10px;
}
.remaining{color:var(--press)}
.soldout{color:var(--reg)}
.price{font-weight:500;color:var(--ink)}
.price del{opacity:.5;margin-right:5px}
.price ins{text-decoration:none}
.card .btn{margin-top:14px;text-align:center;padding:11px 18px;font-size:11.5px}
.card .added_to_cart{
  display:block;margin-top:8px;font-family:var(--mono);font-size:11px;
  color:var(--press);text-align:center;text-decoration:none;
}
.spacer{flex:1}

/* ---------- commissions ---------- */
.commissions{background:var(--ink);color:var(--paper)}
.commissions .sec-head{border-color:rgba(245,243,238,.4)}
.commissions .sec-head p{color:#A9A296}
.comm-body{display:grid;grid-template-columns:1.15fr 1fr;gap:clamp(28px,5vw,72px);align-items:start}
.steps{list-style:none;counter-reset:s;margin:0;padding:0}
.steps li{
  counter-increment:s;
  display:grid;grid-template-columns:44px 1fr;gap:16px;
  padding:18px 0;border-bottom:1px solid rgba(245,243,238,.16);
}
.steps li::before{
  content:counter(s,decimal-leading-zero);
  font-family:var(--mono);font-size:12px;color:#8FA6C9;padding-top:4px;
}
.steps h4{font-family:var(--display);font-size:15px;text-transform:uppercase;letter-spacing:.03em;font-weight:600;margin-bottom:3px}
.steps p{font-size:15.5px;color:#C7C1B7;line-height:1.5}
.comm-aside{
  border:1px solid rgba(245,243,238,.28);
  padding:26px;
}
.comm-aside .from{font-family:var(--display);font-weight:800;font-size:clamp(30px,3.6vw,44px);letter-spacing:-.02em;margin:6px 0 4px}
.comm-aside p{font-size:15.5px;color:#C7C1B7;margin-bottom:20px}
.commissions .btn{background:var(--paper);color:var(--ink);border-color:var(--paper);width:100%;text-align:center}
.commissions .btn:hover{background:var(--press);color:var(--paper);border-color:var(--press)}
@media(max-width:820px){.comm-body{grid-template-columns:1fr}}

/* ---------- other work ---------- */
.work-strip{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:14px}
.work-strip .work-item{
  aspect-ratio:1;
  background:#EAE7E0;border:1px solid var(--rule);
  display:flex;align-items:flex-end;padding:9px;
  font-family:var(--mono);font-size:10px;color:var(--grey);
  text-decoration:none;position:relative;overflow:hidden;
}
.work-strip .work-item img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.work-strip .work-item span{position:relative;z-index:1}
.work-note{margin-top:20px;font-size:16px;color:var(--grey);max-width:52ch}

/* ---------- list ---------- */
.list-band{
  border-top:1px solid var(--rule);
  border-bottom:1px solid var(--rule);
  background:#EFEDE7;
  display:grid;grid-template-columns:1fr 1fr;gap:clamp(24px,5vw,64px);align-items:center;
}
.list-band h2{margin-bottom:10px}
.list-band p{color:#3A342E;max-width:40ch}
.signup{display:flex;gap:0;border:1.5px solid var(--ink);background:var(--paper)}
.signup input[type=email]{
  flex:1;border:0;background:transparent;padding:15px 16px;
  font-family:var(--body);font-size:16px;color:var(--ink);min-width:0;
}
.signup input[type=email]::placeholder{color:var(--grey)}
.signup button{
  border:0;border-left:1.5px solid var(--ink);
  background:var(--ink);color:var(--paper);
  font-family:var(--display);font-size:12px;font-weight:600;
  letter-spacing:.06em;text-transform:uppercase;
  padding:0 22px;cursor:pointer;
}
.signup button:hover{background:var(--press)}
.consent{font-family:var(--mono);font-size:11px;color:var(--grey);margin-top:10px}
@media(max-width:820px){.list-band{grid-template-columns:1fr}}

/* ---------- footer ---------- */
.site-footer{padding:44px var(--pad) 56px;display:grid;gap:26px}
.press{
  display:flex;flex-wrap:wrap;gap:10px 26px;align-items:center;
  font-family:var(--display);font-size:12px;letter-spacing:.06em;
  text-transform:uppercase;color:var(--grey);
  border-bottom:1px solid var(--rule);padding-bottom:24px;
}
.press strong{color:var(--ink);font-weight:600;margin-right:6px}
.foot-row{display:flex;flex-wrap:wrap;gap:12px 28px;align-items:center;font-family:var(--mono);font-size:12px;color:var(--grey)}
.foot-row ul{display:contents;list-style:none}
.foot-row a{text-decoration:none;border-bottom:1px solid var(--rule)}
.foot-row a:hover{border-color:var(--ink);color:var(--ink)}
.foot-row .r{margin-left:auto}

/* ---------- generic pages / posts ---------- */
.page-wrap{padding:clamp(52px,7vw,96px) var(--pad);max-width:74ch}
.page-wrap h1{font-size:clamp(30px,4vw,52px);margin-top:0}
.entry-content > * + *{margin-top:1.1em}
.entry-content h2,.entry-content h3{margin-top:1.8em}
.entry-content h3{font-family:var(--display);font-size:19px;text-transform:uppercase}
.entry-content ul,.entry-content ol{padding-left:1.3em}
.entry-content blockquote{
  border-left:2px solid var(--press);padding-left:20px;font-style:italic;color:#3A342E;
}
.entry-content a{text-decoration:none;border-bottom:1px solid var(--grey)}
.entry-content a:hover{border-color:var(--ink)}
.post-list{display:grid;gap:1px;background:var(--rule);border:1px solid var(--rule)}
.post-list article{background:var(--paper);padding:24px}
.post-list h2{font-size:22px;margin-bottom:6px}
.post-list h2 a{text-decoration:none}
.pagination{margin-top:32px;font-family:var(--mono);font-size:13px;display:flex;gap:14px;flex-wrap:wrap}
.pagination .page-numbers{text-decoration:none;border-bottom:1px solid var(--rule);padding-bottom:2px}
.pagination .current{color:var(--press);border-color:var(--press)}

/* =========================================================
   WOOCOMMERCE
   Styling Woo's own markup rather than overriding its
   templates, so core updates don't break the design.
   ========================================================= */
.woo-wrap{padding:clamp(40px,6vw,80px) var(--pad)}
.woocommerce .woocommerce-breadcrumb{
  font-family:var(--mono);font-size:11.5px;color:var(--grey);
  letter-spacing:.04em;margin-bottom:26px;
}
.woocommerce .woocommerce-breadcrumb a{text-decoration:none;border-bottom:1px solid var(--rule)}

/* headings */
.woocommerce .product_title,
.woocommerce-page h1.entry-title,
.woocommerce h1.page-title{
  font-family:var(--display);font-weight:800;
  font-size:clamp(28px,3.4vw,46px);line-height:1;
  letter-spacing:-.02em;text-transform:uppercase;margin-bottom:14px;
}

/* single product layout */
.woocommerce div.product{display:grid;grid-template-columns:1.05fr 1fr;gap:clamp(28px,5vw,64px);align-items:start}
.woocommerce div.product .woocommerce-product-gallery{width:100%;float:none;margin:0}
.woocommerce div.product .summary{width:100%;float:none;margin:0}
.woocommerce div.product .woocommerce-tabs,
.woocommerce div.product .related,
.woocommerce div.product .up-sells{grid-column:1/-1}
@media(max-width:820px){.woocommerce div.product{grid-template-columns:1fr}}

.woocommerce div.product p.price,
.woocommerce div.product span.price{
  font-family:var(--mono);font-size:22px;color:var(--ink);font-weight:500;margin-bottom:18px;
}
.woocommerce div.product p.price del{opacity:.5}
.woocommerce div.product .woocommerce-product-details__short-description{
  font-size:17px;color:#3A342E;margin-bottom:22px;
}
.woocommerce div.product form.cart{margin-bottom:24px;display:flex;gap:12px;flex-wrap:wrap;align-items:stretch}
.woocommerce .quantity .qty{
  width:76px;padding:13px 10px;border:1.5px solid var(--ink);background:var(--paper);
  font-family:var(--mono);font-size:15px;color:var(--ink);text-align:center;
}

/* all Woo buttons adopt the press-shop button */
.woocommerce #respond input#submit,
.woocommerce a.button,
.woocommerce button.button,
.woocommerce input.button,
.woocommerce a.button.alt,
.woocommerce button.button.alt,
.woocommerce input.button.alt,
.woocommerce #respond input#submit.alt{
  font-family:var(--display);font-size:13px;font-weight:600;
  letter-spacing:.06em;text-transform:uppercase;
  padding:14px 26px;border-radius:0;
  background:var(--ink);color:var(--paper);
  border:1.5px solid var(--ink);
  transition:background .15s ease,border-color .15s ease;
}
.woocommerce #respond input#submit:hover,
.woocommerce a.button:hover,
.woocommerce button.button:hover,
.woocommerce input.button:hover,
.woocommerce a.button.alt:hover,
.woocommerce button.button.alt:hover,
.woocommerce input.button.alt:hover{
  background:var(--press);border-color:var(--press);color:var(--paper);
}
.woocommerce a.button.disabled,
.woocommerce button.button:disabled,
.woocommerce button.button.disabled{
  background:var(--grey);border-color:var(--grey);color:var(--paper);opacity:1;
}

/* stock + meta */
.woocommerce div.product .stock{font-family:var(--mono);font-size:12.5px;color:var(--press)}
.woocommerce div.product .out-of-stock{color:var(--reg)}
.woocommerce div.product .product_meta{
  font-family:var(--mono);font-size:11.5px;color:var(--grey);
  border-top:1px solid var(--rule);padding-top:14px;letter-spacing:.02em;
}
.woocommerce div.product .product_meta a{text-decoration:none;border-bottom:1px solid var(--rule)}

/* the print spec block injected on single product */
.mw-spec{
  font-family:var(--mono);font-size:12.5px;color:var(--grey);
  border-top:1px solid var(--rule);border-bottom:1px solid var(--rule);
  padding:14px 0;margin-bottom:20px;display:grid;gap:6px;
}
.mw-spec div{display:flex;justify-content:space-between;gap:18px}
.mw-spec dt,.mw-spec .k{color:var(--grey)}
.mw-spec .v{color:var(--ink)}

/* tabs */
.woocommerce div.product .woocommerce-tabs ul.tabs{padding:0;margin:0 0 24px;border-bottom:1.5px solid var(--ink)}
.woocommerce div.product .woocommerce-tabs ul.tabs::before{display:none}
.woocommerce div.product .woocommerce-tabs ul.tabs li{
  background:transparent;border:0;border-radius:0;margin:0 24px 0 0;padding:0 0 10px;
}
.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 a{
  font-family:var(--display);font-size:13px;text-transform:uppercase;
  letter-spacing:.05em;font-weight:600;color:var(--grey);padding:0;
}
.woocommerce div.product .woocommerce-tabs ul.tabs li.active a{color:var(--ink)}

/* shop archive grid */
.woocommerce ul.products{
  display:grid!important;
  grid-template-columns:repeat(auto-fill,minmax(238px,1fr));
  gap:1px;background:var(--rule);border:1px solid var(--rule);
  margin:0;padding:0;
}
.woocommerce ul.products::before,
.woocommerce ul.products::after{display:none}
.woocommerce ul.products li.product{
  width:100%!important;margin:0!important;float:none!important;
  background:var(--paper);padding:20px;text-align:left;
}
.woocommerce ul.products li.product a img{margin-bottom:14px;border:1px solid var(--rule)}
.woocommerce ul.products li.product .woocommerce-loop-product__title{
  font-family:var(--display);font-weight:800;font-size:19px;
  text-transform:uppercase;letter-spacing:-.01em;padding:0;
}
.woocommerce ul.products li.product .price{
  font-family:var(--mono);font-size:12.5px;color:var(--ink);
}
.woocommerce .woocommerce-result-count,
.woocommerce .woocommerce-ordering select{
  font-family:var(--mono);font-size:12px;color:var(--grey);
}

/* cart */
.woocommerce table.shop_table{
  border:1px solid var(--rule);border-radius:0;border-collapse:collapse;
}
.woocommerce table.shop_table th{
  font-family:var(--display);font-size:12px;text-transform:uppercase;
  letter-spacing:.05em;color:var(--ink);border-bottom:1.5px solid var(--ink);
}
.woocommerce table.shop_table td{border-top:1px solid var(--rule);font-size:15.5px}
.woocommerce table.shop_table .product-name a{text-decoration:none;border-bottom:1px solid var(--rule)}
.woocommerce-cart table.cart img{width:64px;border:1px solid var(--rule)}
.woocommerce .cart-collaterals .cart_totals > h2,
.woocommerce-checkout h3{
  font-family:var(--display);font-size:16px;text-transform:uppercase;
  letter-spacing:.04em;font-weight:800;margin-bottom:14px;
}
.woocommerce .cart_totals table.shop_table{margin-bottom:18px}

/* forms + checkout */
.woocommerce form .form-row label,
.woocommerce-page form .form-row label{
  font-family:var(--mono);font-size:11.5px;letter-spacing:.06em;
  text-transform:uppercase;color:var(--grey);margin-bottom:6px;
}
.woocommerce form .form-row input.input-text,
.woocommerce form .form-row textarea,
.woocommerce form .form-row select,
.woocommerce-page form .form-row input.input-text,
.select2-container .select2-selection--single{
  border:1.5px solid var(--rule);background:var(--paper);border-radius:0;
  padding:12px 14px;font-family:var(--body);font-size:16px;color:var(--ink);
  height:auto;
}
.woocommerce form .form-row input.input-text:focus,
.woocommerce form .form-row textarea:focus,
.woocommerce form .form-row select:focus{border-color:var(--ink);outline:none}
.select2-container--default .select2-selection--single .select2-selection__rendered{
  line-height:1.4;color:var(--ink);padding-left:0;
}
.woocommerce-checkout #payment{background:#EFEDE7;border-radius:0;border:1px solid var(--rule)}
.woocommerce-checkout #payment div.payment_box{background:var(--paper);border:1px solid var(--rule)}
.woocommerce-checkout #payment div.payment_box::before{display:none}
.woocommerce-checkout #payment ul.payment_methods{border-bottom:1px solid var(--rule)}
.woocommerce-checkout #payment ul.payment_methods li label{
  font-family:var(--display);font-size:13px;text-transform:uppercase;letter-spacing:.04em;
}

/* notices */
.woocommerce-message,
.woocommerce-info,
.woocommerce-error{
  border-top:0;border-left:3px solid var(--press);
  background:#EFEDE7;border-radius:0;
  font-family:var(--body);font-size:15.5px;color:var(--ink);
}
.woocommerce-message::before,
.woocommerce-info::before{color:var(--press)}
.woocommerce-error{border-left-color:var(--reg)}
.woocommerce-error::before{color:var(--reg)}

/* order confirmation */
.woocommerce ul.order_details{
  border:1px solid var(--rule);padding:20px;margin-bottom:26px;
  display:flex;flex-wrap:wrap;gap:20px 34px;
}
.woocommerce ul.order_details li{
  border:0;margin:0;padding:0;float:none;
  font-family:var(--mono);font-size:11px;letter-spacing:.06em;
  text-transform:uppercase;color:var(--grey);
}
.woocommerce ul.order_details li strong{
  font-family:var(--display);font-size:16px;color:var(--ink);
  text-transform:none;letter-spacing:0;display:block;margin-top:4px;
}
