/* Tesseract Void — the storefront and content pages.
   Depends on tokens.css. Never loaded on the plane.

   WooCommerce's own three stylesheets are not loaded at all (see inc/enqueue.php),
   so this file owns the shop, product, cart, checkout and account pages outright
   rather than out-shouting them. The block stylesheets remain, and are themed
   here and in theme.json.

   The plane is where this site spends its boldness. Everything here is quieter,
   but it carries three things across: the palette, the three typefaces, and the
   veil — a scrim over each work that lifts when you attend to it. */

/* ---------- shell ---------- */

html.tess-page-html,
body.tess-page{ overflow-x:clip; }

body.tess-page{
  min-height:100vh;
  display:flex;
  flex-direction:column;
  background:
    radial-gradient(120% 80% at 50% -10%, rgba(70,54,120,.30), transparent 62%),
    var(--night);
  background-attachment:fixed;
}

.site-main{
  flex:1;
  width:100%;
  max-width:1180px;
  margin:0 auto;
  padding:clamp(2rem,5vw,4rem) clamp(1.1rem,4vw,3rem) clamp(4rem,9vw,7rem);
}

/* The blocks size themselves from their container, not the viewport: at 66ch
   the checkout declared itself mobile and folded the order summary into an
   accordion. Commerce pages get the full width so the two-column layout, the
   sidebar and the wide alignments all resolve as intended. */
.tess-commerce .entry-body{ max-width:none; }
.tess-commerce .site-main > .entry > .page-head{ margin-bottom:clamp(1.8rem,4vw,3rem); }
.alignwide{ max-width:1180px; margin-inline:auto; }
.alignfull{ max-width:none; }

/* ---------- header ---------- */

.site-head{
  border-bottom:1px solid var(--hair);
  padding:0 clamp(1.1rem,4vw,3rem);
  padding-top:var(--safe-t);
  position:relative;z-index:5;
}
.site-head-in{
  max-width:1180px;margin:0 auto;
  min-height:76px;
  display:flex;align-items:center;gap:clamp(1rem,3vw,3rem);
}

.wordmark{
  font-family:var(--disp);
  font-size:1.06rem;
  letter-spacing:.32em;
  padding-left:.32em;
  text-transform:uppercase;
  white-space:nowrap;
  transition:color .4s;
}
.wordmark:hover{color:var(--gold-pale)}
.wordmark-img img{max-height:52px;width:auto;display:block}

.site-nav{margin-left:auto}
.nav-list{list-style:none;display:flex;gap:clamp(.9rem,2.2vw,2.2rem);align-items:center}
.nav-list a,
.site-head-end a{
  font-family:var(--mono);
  font-size:.68rem;
  letter-spacing:.2em;
  text-transform:uppercase;
  color:var(--bone-dim);
  transition:color .35s;
  display:inline-block;
  padding:.6rem 0;
  white-space:nowrap;
}
.nav-list a:hover,
.site-head-end a:hover{color:var(--bone)}
.nav-list .current-menu-item > a{color:var(--bone)}

.site-head-end{display:flex;gap:clamp(.8rem,2.2vw,1.8rem);align-items:center}
.site-cart .n{
  color:var(--gold-pale);
  font-size:.6rem;
  letter-spacing:.06em;
  margin-left:.15em;
}

/* ---------- page heads ---------- */

.page-head{margin-bottom:clamp(2.2rem,5vw,4rem)}
.eyebrow{
  font-family:var(--mono);
  font-size:.62rem;
  letter-spacing:.3em;
  text-transform:uppercase;
  color:var(--gold-pale);
  margin-bottom:1.3rem;
}
.page-head h1,
.empty h1{
  font-family:var(--disp);
  font-weight:400;
  font-size:clamp(2rem,5vw,3.6rem);
  line-height:1.06;
  max-width:22ch;
}

/* ---------- long-form content ---------- */

.entry-body{
  max-width:66ch;
  font-size:1.05rem;
  line-height:1.8;
  color:rgba(241,236,224,.78);
}
.entry-body > * + *{margin-top:1.4rem}
.entry-body h2,
.entry-body h3{
  font-family:var(--disp);font-weight:400;color:var(--bone);
  line-height:1.2;margin-top:2.6rem;
}
.entry-body h2{font-size:clamp(1.5rem,3vw,2.1rem)}
.entry-body h3{font-size:clamp(1.2rem,2.2vw,1.5rem)}
.entry-body a{color:var(--gold-pale);border-bottom:1px solid rgba(217,179,106,.35);transition:border-color .3s}
.entry-body a:hover{border-color:var(--gold)}
.entry-body blockquote{
  border-left:1px solid var(--gold);padding-left:1.6rem;
  font-family:var(--disp);font-style:italic;font-size:1.3rem;color:var(--bone);
}
.entry-body ul,.entry-body ol{padding-left:1.4rem}
.entry-body li+li{margin-top:.5rem}
.entry-body hr{border:0;border-top:1px solid var(--hair);margin:2.6rem 0}
.entry-body code,.entry-body pre{
  font-family:var(--mono);font-size:.85em;
  background:rgba(10,8,26,.7);border:1px solid var(--hair);
}
.entry-body code{padding:.15em .4em}
.entry-body pre{padding:1.2rem;overflow:auto}

.entry-hero{margin-bottom:2.6rem}
.entry-hero img{width:100%;height:auto;display:block}

/* ---------- post lists ---------- */

.post-list{
  display:grid;
  grid-template-columns:repeat(auto-fill,minmax(min(300px,100%),1fr));
  gap:clamp(2rem,4vw,3.4rem);
}
.post-card-img{display:block;overflow:hidden;margin-bottom:1.2rem;background:var(--ink)}
.post-card-img img{width:100%;height:auto;display:block;transition:transform .8s var(--e)}
.post-card:hover .post-card-img img{transform:scale(1.03)}
.entry-meta{
  font-family:var(--mono);font-size:.6rem;letter-spacing:.18em;
  text-transform:uppercase;color:rgba(241,236,224,.45);margin-bottom:.7rem;
}
.post-card h2{
  font-family:var(--disp);font-weight:400;font-style:italic;
  font-size:clamp(1.2rem,2.2vw,1.55rem);line-height:1.25;
}
.post-card h2 a{transition:color .35s}
.post-card h2 a:hover{color:var(--gold-pale)}
.post-card .excerpt{margin-top:.8rem;color:var(--bone-dim);line-height:1.7;font-size:.96rem}
.post-card .more,
.tlink-page{
  display:inline-flex;align-items:center;margin-top:1rem;
  font-family:var(--mono);font-size:.66rem;letter-spacing:.2em;text-transform:uppercase;
  color:var(--bone);border-bottom:1px solid var(--gold);padding-bottom:.35rem;
  transition:letter-spacing .4s,color .4s;min-height:40px;
}
.post-card .more:hover,
.tlink-page:hover{letter-spacing:.28em;color:var(--gold-pale)}

.post-nav{
  display:flex;justify-content:space-between;gap:2rem;
  margin-top:4rem;padding-top:2rem;border-top:1px solid var(--hair);
  font-family:var(--mono);font-size:.66rem;letter-spacing:.16em;text-transform:uppercase;
}
.post-nav a{color:var(--bone-dim);transition:color .35s}
.post-nav a:hover{color:var(--gold-pale)}
.post-nav .next{margin-left:auto;text-align:right}

.archive-intro{color:var(--bone-dim);max-width:60ch;margin-bottom:2.6rem;line-height:1.8}

/* ---------- empty states ---------- */

.empty{padding:clamp(2rem,8vw,5rem) 0;max-width:52ch}
.empty p{color:var(--bone-dim);line-height:1.8;margin-top:1.2rem}
.empty-actions{display:flex;gap:2rem;flex-wrap:wrap;margin-top:1.8rem}
.empty-404 h1{margin-bottom:0}

/* ---------- forms ---------- */

.search-form{display:flex;gap:.8rem;flex-wrap:wrap;margin-top:1.8rem;max-width:440px}

input[type="text"],input[type="email"],input[type="search"],input[type="password"],
input[type="tel"],input[type="url"],input[type="number"],input[type="date"],
textarea,select{
  background:rgba(10,8,26,.65);
  border:1px solid rgba(241,236,224,.14);
  color:var(--bone);
  font-family:var(--text);
  font-size:16px; /* anything smaller makes iOS zoom the page on focus */
  padding:.85rem 1rem;
  outline:none;
  width:100%;
  border-radius:0;
  transition:border-color .3s;
}
textarea{min-height:9rem;line-height:1.7}
input:focus,textarea:focus,select:focus{border-color:var(--gold)}
input::placeholder,textarea::placeholder{color:rgba(241,236,224,.35)}
select{
  appearance:none;
  background-image:linear-gradient(45deg,transparent 49%,var(--gold-pale) 50%);
  background-size:8px 8px;background-position:calc(100% - 1rem) center;
  background-repeat:no-repeat;padding-right:2.6rem;
}

/* Scoped deliberately: the block checkout floats its labels over the input, so
   a blanket `label { display:block }` stacks the label on top of the value and
   the field reads as broken. */
.search-form label,
.comment-form label,
.wc-classic-form label{
  font-family:var(--mono);font-size:.62rem;letter-spacing:.16em;
  text-transform:uppercase;color:var(--bone-dim);display:block;margin-bottom:.5rem;
}
.search-form input[type="search"]{flex:1;min-width:200px}

button,
.button,
input[type="submit"],
a.button{
  display:inline-flex;align-items:center;justify-content:center;
  font-family:var(--mono);
  font-size:.68rem;
  letter-spacing:.2em;
  text-transform:uppercase;
  color:var(--bone);
  background:none;
  border:1px solid rgba(240,216,166,.42);
  border-radius:0;
  padding:1rem 1.7rem;
  cursor:pointer;
  min-height:46px;
  text-align:center;
  transition:border-color .4s,color .4s,background-color .4s;
}
button:hover,.button:hover,input[type="submit"]:hover,a.button:hover{
  border-color:var(--gold-pale);color:var(--gold-pale);
}
button.alt,.button.alt,input[type="submit"].alt{
  background:var(--gold);border-color:var(--gold);color:var(--night);
}
button.alt:hover,.button.alt:hover,input[type="submit"].alt:hover{
  background:var(--gold-pale);border-color:var(--gold-pale);color:var(--night);
}
button[disabled],.button[disabled],.button.disabled{opacity:.4;cursor:not-allowed}

/* ---------- footer ---------- */

.site-foot{
  border-top:1px solid var(--hair);
  padding:clamp(2.6rem,6vw,4rem) clamp(1.1rem,4vw,3rem) calc(1.6rem + var(--safe-b));
  margin-top:auto;position:relative;z-index:2;
}
.site-foot-in{
  max-width:1180px;margin:0 auto;
  display:flex;gap:clamp(2rem,6vw,5rem);flex-wrap:wrap;justify-content:space-between;
}
.foot-tag{
  font-family:var(--disp);font-style:italic;font-size:1.1rem;
  color:var(--bone-dim);margin-top:.9rem;max-width:26ch;
}
.foot-plane{
  display:inline-flex;align-items:center;margin-top:1.4rem;
  font-family:var(--mono);font-size:.64rem;letter-spacing:.22em;text-transform:uppercase;
  color:var(--bone);border-bottom:1px solid var(--gold);padding-bottom:.35rem;
  transition:letter-spacing .4s,color .4s;min-height:40px;
}
.foot-plane:hover{letter-spacing:.3em;color:var(--gold-pale)}
.foot-list{list-style:none;display:grid;gap:.9rem}
.foot-list a{
  font-family:var(--mono);font-size:.64rem;letter-spacing:.18em;
  text-transform:uppercase;color:var(--bone-dim);transition:color .35s;
}
.foot-list a:hover{color:var(--bone)}
.site-foot-base{
  max-width:1180px;margin:clamp(2.4rem,5vw,3.6rem) auto 0;
  padding-top:1.6rem;border-top:1px solid var(--hair);
  display:flex;justify-content:space-between;gap:1.5rem;flex-wrap:wrap;
  font-family:var(--mono);font-size:.58rem;letter-spacing:.18em;
  text-transform:uppercase;color:rgba(241,236,224,.4);
}
.foot-line{color:var(--gold-pale);opacity:.6}

/* ================= WooCommerce ================= */

.wc-main{width:100%}

.wc-back{
  display:inline-flex;align-items:center;
  font-family:var(--mono);font-size:.62rem;letter-spacing:.2em;text-transform:uppercase;
  color:var(--bone-dim);margin-bottom:2.2rem;min-height:40px;transition:color .35s;
}
.wc-back:hover{color:var(--gold-pale)}
.wc-back::before{content:"←";margin-right:.7em}

/* WooCommerce's own archive template prints this above the loop on category
   pages. Its title is suppressed — the theme sets its own page head — so all
   that is left is the description, and on the shop itself, nothing at all. */
.woocommerce-products-header{margin:0}
.woocommerce-products-header:empty{display:none}
.term-description{
  color:var(--bone-dim);line-height:1.8;max-width:60ch;margin-bottom:.6rem;
}
.term-description > * + *{margin-top:1rem}

.woocommerce-result-count{
  font-family:var(--mono);font-size:.62rem;letter-spacing:.16em;
  text-transform:uppercase;color:rgba(241,236,224,.45);margin:0;
}
/* The sort control is removed on the shop (see inc/woocommerce.php). This is
   kept so it lands correctly styled if the catalogue grows and it comes back. */
.woocommerce-ordering{margin:1.2rem 0 2.4rem;max-width:280px}

/* --- the grid of works --- */

ul.products{
  list-style:none;padding:0;
  display:grid;
  grid-template-columns:repeat(auto-fill,minmax(min(280px,100%),1fr));
  gap:clamp(2.4rem,4vw,4rem);
  margin:2.4rem 0 0;
}
ul.products li.product{
  position:relative;float:none;width:auto;margin:0;clear:none;display:flex;flex-direction:column;
}

/* The veil: a scrim over the work that lifts as you attend to it. WooCommerce
   wraps the image and the title in a single link, so the scrim is pinned to the
   image alone — otherwise it falls across the title as well. */
ul.products li.product .woocommerce-loop-product__link{
  display:block;position:relative;color:inherit;
}
ul.products li.product .woocommerce-loop-product__link > img,
ul.products li.product .attachment-woocommerce_thumbnail{
  width:100%;height:auto;display:block;
  aspect-ratio:1/1;object-fit:cover;
  background:var(--ink);
  box-shadow:0 40px 90px -40px rgba(3,2,12,.9);
  transition:transform .9s var(--e),filter .9s var(--e);
  filter:saturate(.72) brightness(.66);
}
ul.products li.product:hover .attachment-woocommerce_thumbnail,
ul.products li.product:focus-within .attachment-woocommerce_thumbnail,
ul.products li.product:hover .woocommerce-loop-product__link > img,
ul.products li.product:focus-within .woocommerce-loop-product__link > img{
  filter:saturate(1) brightness(1);
  transform:scale(1.02);
}

/* Titles are whole instructions — several lines of them, in the manner of a
   Dalí title. They are set as a paragraph beneath the work rather than squeezed
   into a label, and given a measure that lets them be read. */
ul.products li.product .woocommerce-loop-product__title{
  font-family:var(--disp);font-weight:400;font-style:italic;
  font-size:clamp(.98rem,1.4vw,1.12rem);line-height:1.45;
  margin:1.2rem 0 .8rem;color:var(--bone);max-width:34ch;
  transition:color .4s;
}
ul.products li.product:hover .woocommerce-loop-product__title{color:var(--gold-pale)}
ul.products li.product .price{
  font-family:var(--mono);font-size:.72rem;letter-spacing:.14em;
  color:var(--bone);display:block;margin:0;
}
ul.products li.product .price del{opacity:.45;margin-right:.5em}
ul.products li.product .price ins{text-decoration:none;color:var(--gold-pale)}
.wc-edition{
  font-family:var(--mono);font-size:.58rem;letter-spacing:.18em;
  text-transform:uppercase;color:rgba(241,236,224,.45);margin-top:.5rem;
}
ul.products li.product .wc-view-link{
  align-self:flex-start;margin-top:1rem;
  border:0;border-bottom:1px solid var(--gold);padding:0 0 .35rem;min-height:40px;
  font-size:.64rem;color:var(--bone);
}
ul.products li.product .wc-view-link:hover{border-color:var(--gold-pale);color:var(--gold-pale)}

/* --- a single work --- */

/* The plane's atmosphere, carried through: the work blurred behind the page,
   with its own glow blooming behind it. */
.wc-atmos{position:fixed;inset:0;z-index:0;pointer-events:none;overflow:hidden}
.wc-atmos-img{
  position:absolute;inset:-8%;
  background-size:cover;background-position:center;
  filter:blur(90px) saturate(.8) brightness(.5);
  opacity:.42;
}
.wc-atmos-glow{
  position:absolute;left:22%;top:34%;width:56vmax;height:56vmax;
  transform:translate(-50%,-50%);
  background:radial-gradient(closest-side,hsl(var(--work-glow,40 44% 55%) / .28),transparent 72%);
}
.single-product .site-head,
.single-product .site-main,
.single-product .site-foot{position:relative;z-index:2}

.single-product div.product{
  display:grid;
  grid-template-columns:1.05fr .95fr;
  gap:clamp(1.8rem,5vw,4.5rem);
  align-items:start;
}
.single-product div.product .woocommerce-product-gallery{position:relative;margin:0;min-width:0}
.single-product div.product .woocommerce-product-gallery__wrapper{margin:0}
.single-product div.product .woocommerce-product-gallery img{
  width:100%;height:auto;display:block;background:var(--ink);
  box-shadow:0 50px 120px -50px rgba(3,2,12,.95);
}
/* The thin gold frame from the plane's panel. */
.single-product .woocommerce-product-gallery__image:first-child{
  position:relative;outline:1px solid rgba(217,179,106,.34);outline-offset:0;
}
.single-product .flex-control-thumbs{
  list-style:none;display:flex;gap:.8rem;margin:1rem 0 0;padding:0;
}
.single-product .flex-control-thumbs li{width:74px}
.single-product .flex-control-thumbs img{opacity:.4;transition:opacity .4s;box-shadow:none;cursor:pointer}
.single-product .flex-control-thumbs img.flex-active,
.single-product .flex-control-thumbs img:hover{opacity:1}
.woocommerce-product-gallery__trigger{
  position:absolute;top:1rem;right:1rem;z-index:3;
  width:44px;height:44px;display:flex;align-items:center;justify-content:center;
  background:rgba(8,6,26,.7);border:1px solid var(--hair);color:var(--bone);
  font-size:0;
}
.woocommerce-product-gallery__trigger::before{content:"⌕";font-size:1.4rem;line-height:1}
.woocommerce-product-gallery__trigger img{display:none}

.single-product div.product .summary{min-width:0}
.wc-edition-single{
  font-family:var(--mono);font-size:.64rem;letter-spacing:.2em;
  text-transform:uppercase;color:var(--gold-pale);margin-bottom:1.1rem;
}
.single-product .product_title{
  font-family:var(--disp);font-weight:400;font-style:italic;
  font-size:clamp(1.35rem,2.4vw,1.95rem);line-height:1.32;
  margin:0 0 1.4rem;max-width:26ch;
}
.single-product div.product p.price,
.single-product div.product span.price{
  font-family:var(--disp);font-size:clamp(1.5rem,2.6vw,2rem);
  color:var(--bone);margin:0 0 1.8rem;display:block;
}
.single-product div.product p.price del{font-size:.6em;color:var(--bone-dim)}
.single-product div.product p.price ins{text-decoration:none;color:var(--gold-pale)}
.woocommerce-product-details__short-description{
  color:var(--bone-dim);line-height:1.85;margin-bottom:2rem;max-width:52ch;
}
.woocommerce-product-details__short-description p+p{margin-top:1rem}

form.cart{display:flex;gap:1.2rem;align-items:center;flex-wrap:wrap;margin:0 0 1.6rem}
.quantity{display:inline-flex;align-items:center}
.quantity input.qty{width:5.5rem;text-align:center;padding:.85rem .5rem}
form.cart button.single_add_to_cart_button{
  flex:0 0 auto;background:var(--gold);border-color:var(--gold);color:var(--night);
  padding:1.05rem 2.4rem;
}
form.cart button.single_add_to_cart_button:hover{background:var(--gold-pale);border-color:var(--gold-pale);color:var(--night)}
.stock{
  font-family:var(--mono);font-size:.62rem;letter-spacing:.18em;
  text-transform:uppercase;color:var(--bone-dim);margin:0;
}
.stock.out-of-stock{color:#e2a0a0}

/* --- express checkout --- */

/* Apple Pay and Google Pay are brand-locked buttons drawn inside Stripe's own
   cross-origin frames. Their fill, stroke and corner radius are fixed by Apple
   and Google respectively, and no stylesheet here can reach in to change them:
   Google draws a 1px #757575 stroke around its button and Apple draws none,
   and both are correct by their own guidelines. Painting a matching stroke
   around the Apple Pay button would be mimicry of something we do not control
   and cannot keep in step.

   So the mismatch is settled by treating what we do own — the tray they sit
   in. Framed and labelled, the two read as a pair, which is enough for the eye
   to stop going to the one pixel between them. It is the same treatment the
   checkout's express block already gets, so the two pages agree.

   They are laid out on an equal-width track so they can never arrive at two
   different sizes, and fall to a stack when the column is narrow. */
#wc-stripe-express-checkout-element{
  display:grid!important;
  grid-template-columns:repeat(auto-fit,minmax(11rem,1fr));
  gap:.7rem!important;
  align-items:start;
  margin:1.9rem 0 0!important;
  padding:1.05rem 1.15rem 1.15rem;
  border:1px solid var(--hair);
  background:rgba(10,8,26,.4);
}
/* The label is set from PHP so it can be translated; this is the fallback. */
#wc-stripe-express-checkout-element::before{
  content:var(--express-label,"Or acquire instantly");
  grid-column:1/-1;
  font-family:var(--mono);font-size:.6rem;letter-spacing:.24em;
  text-transform:uppercase;color:rgba(241,236,224,.5);
  margin-bottom:.3rem;
}
#wc-stripe-express-checkout-element > .StripeElement{min-width:0;width:100%}
/* On a browser with neither wallet the container is still printed. An empty
   framed tray announcing nothing is worse than no tray. */
#wc-stripe-express-checkout-element:not(:has(.StripeElement)){display:none!important}

.wc-plane-link{
  display:inline-flex;align-items:center;margin-top:.4rem;
  font-family:var(--mono);font-size:.62rem;letter-spacing:.2em;text-transform:uppercase;
  color:var(--bone-dim);border-bottom:1px solid transparent;padding-bottom:.3rem;
  transition:color .4s,border-color .4s;min-height:40px;
}
.wc-plane-link:hover{color:var(--gold-pale);border-color:var(--gold)}

.product_meta{
  margin-top:2rem;padding-top:1.4rem;border-top:1px solid var(--hair);
  font-family:var(--mono);font-size:.6rem;letter-spacing:.16em;
  text-transform:uppercase;color:rgba(241,236,224,.45);line-height:2.2;
}
.product_meta a{color:var(--bone-dim);transition:color .3s}
.product_meta a:hover{color:var(--gold-pale)}

/* --- tabs, related --- */

.woocommerce-tabs{
  grid-column:1/-1;margin-top:clamp(3rem,6vw,5rem);
  padding-top:2.4rem;border-top:1px solid var(--hair);
}
.woocommerce-tabs ul.tabs{list-style:none;display:flex;gap:2.2rem;flex-wrap:wrap;margin:0 0 2.2rem;padding:0}
.woocommerce-tabs ul.tabs li a{
  font-family:var(--mono);font-size:.64rem;letter-spacing:.2em;text-transform:uppercase;
  color:rgba(241,236,224,.45);padding-bottom:.5rem;display:inline-block;
  border-bottom:1px solid transparent;transition:color .35s,border-color .35s;
}
.woocommerce-tabs ul.tabs li.active a,
.woocommerce-tabs ul.tabs li a:hover{color:var(--bone);border-color:var(--gold)}
.woocommerce-Tabs-panel{max-width:66ch;color:rgba(241,236,224,.78);line-height:1.9}
.woocommerce-Tabs-panel > * + *{margin-top:1.2rem}
.woocommerce-Tabs-panel h2{
  font-family:var(--disp);font-weight:400;font-size:1.5rem;color:var(--bone);margin-bottom:1.2rem;
}
.woocommerce-Tabs-panel table{width:100%;border-collapse:collapse}
.woocommerce-Tabs-panel th,.woocommerce-Tabs-panel td{
  padding:.8rem 0;border-bottom:1px solid var(--hair);text-align:left;font-weight:400;
}
.woocommerce-Tabs-panel th{color:var(--bone-dim);font-family:var(--mono);font-size:.62rem;
  letter-spacing:.16em;text-transform:uppercase;width:34%}

.related.products,.upsells.products{grid-column:1/-1;margin-top:clamp(3rem,6vw,5rem)}
.related.products > h2,.upsells.products > h2,.cross-sells > h2{
  font-family:var(--disp);font-weight:400;font-size:clamp(1.4rem,2.6vw,1.9rem);margin-bottom:.4rem;
}

/* --- notices --- */

.woocommerce-message,
.woocommerce-info,
.woocommerce-error,
.woocommerce-notice{
  list-style:none;
  border:1px solid var(--hair);
  border-left:2px solid var(--gold);
  background:rgba(10,8,26,.7);
  padding:1.1rem 1.4rem;
  margin:0 0 2rem;
  font-family:var(--mono);
  font-size:.68rem;
  letter-spacing:.08em;
  line-height:1.9;
  color:var(--bone);
  display:flex;align-items:center;gap:1.2rem;flex-wrap:wrap;
}
.woocommerce-error{border-left-color:#c97b7b}
.woocommerce-message .button,
.woocommerce-info .button{margin-left:auto;padding:.7rem 1.2rem;min-height:40px}

/* --- my account --- */

.woocommerce-account .woocommerce{
  display:grid;grid-template-columns:210px 1fr;gap:clamp(2rem,5vw,4rem);align-items:start;
}
.woocommerce-MyAccount-navigation ul{list-style:none;padding:0;margin:0}
.woocommerce-MyAccount-navigation li{border-bottom:1px solid var(--hair)}
.woocommerce-MyAccount-navigation a{
  display:block;padding:.95rem 0;
  font-family:var(--mono);font-size:.64rem;letter-spacing:.18em;
  text-transform:uppercase;color:var(--bone-dim);transition:color .35s;
}
.woocommerce-MyAccount-navigation li.is-active a,
.woocommerce-MyAccount-navigation a:hover{color:var(--gold-pale)}
.woocommerce-MyAccount-content{color:var(--bone-dim);line-height:1.8;min-width:0}
.woocommerce-MyAccount-content a{color:var(--gold-pale)}
.woocommerce-MyAccount-content h2,.woocommerce-MyAccount-content h3{
  font-family:var(--disp);font-weight:400;color:var(--bone);margin-bottom:1rem;
}

/* Login and register. The form is a considered object, not a browser default. */
.woocommerce-form-login,
.woocommerce-form-register,
.woocommerce-ResetPassword,
.woocommerce-EditAccountForm{
  border:1px solid var(--hair);background:rgba(10,8,26,.5);
  padding:clamp(1.6rem,4vw,2.4rem);max-width:460px;
}
.woocommerce-form-login .form-row,
.woocommerce-form-register .form-row,
.woocommerce-ResetPassword .form-row,
.woocommerce-EditAccountForm .form-row{margin-bottom:1.3rem;display:block}
.woocommerce-form-login label,
.woocommerce-form-register label,
.woocommerce-ResetPassword label,
.woocommerce-EditAccountForm label{
  font-family:var(--mono);font-size:.62rem;letter-spacing:.16em;
  text-transform:uppercase;color:var(--bone-dim);display:block;margin-bottom:.5rem;
}
.woocommerce-form-login__rememberme,
.woocommerce-form-login__submit{margin-top:.4rem}
.woocommerce-form-login__rememberme{
  display:inline-flex;align-items:center;gap:.6rem;
  font-family:var(--mono);font-size:.6rem;letter-spacing:.14em;
  text-transform:uppercase;color:var(--bone-dim);margin-left:1.2rem;
}
.woocommerce-form-login__rememberme input{width:auto;margin:0}
.woocommerce-form-login button,
.woocommerce-form-register button,
.woocommerce-ResetPassword button,
.woocommerce-EditAccountForm button{
  background:var(--gold);border-color:var(--gold);color:var(--night);
}
.woocommerce-form-login button:hover,
.woocommerce-form-register button:hover{background:var(--gold-pale);border-color:var(--gold-pale)}
.woocommerce-LostPassword{margin-top:1.2rem}
.woocommerce-LostPassword a{
  font-family:var(--mono);font-size:.62rem;letter-spacing:.16em;
  text-transform:uppercase;color:var(--gold-pale);
}
.required{color:#c97b7b;text-decoration:none}
.show-password-input{position:relative}

/* Order tables in the account area. */
table.shop_table,
table.woocommerce-orders-table,
table.woocommerce-table{width:100%;border-collapse:collapse;margin-bottom:2.4rem}
table.shop_table th,table.woocommerce-table th{
  font-family:var(--mono);font-size:.6rem;letter-spacing:.2em;text-transform:uppercase;
  color:rgba(241,236,224,.5);text-align:left;font-weight:400;
  padding:.9rem 1rem .9rem 0;border-bottom:1px solid var(--hair);
}
table.shop_table td,table.woocommerce-table td{
  padding:1.2rem 1rem 1.2rem 0;border-bottom:1px solid var(--hair);
  vertical-align:middle;color:var(--bone-dim);
}
table.shop_table .amount{color:var(--bone);font-family:var(--mono);font-size:.8rem;letter-spacing:.04em}
.woocommerce-orders-table__cell-order-actions .button{padding:.6rem 1rem;min-height:38px;font-size:.6rem}

/* --- order received --- */

.woocommerce-order{max-width:720px}
.woocommerce-thankyou-order-received,
.woocommerce-order p.woocommerce-notice{
  font-family:var(--disp);font-size:clamp(1.5rem,3vw,2.2rem);
  color:var(--bone);margin-bottom:1.8rem;line-height:1.3;
  border:0;background:none;padding:0;display:block;letter-spacing:0;text-transform:none;
}
ul.woocommerce-order-overview,
ul.woocommerce-thankyou-order-details{
  list-style:none;display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));
  gap:1.4rem;padding:1.6rem 0;border-block:1px solid var(--hair);margin-bottom:2.4rem;
}
ul.woocommerce-order-overview li{
  font-family:var(--mono);font-size:.58rem;letter-spacing:.18em;
  text-transform:uppercase;color:rgba(241,236,224,.45);border:0;
}
ul.woocommerce-order-overview li strong{
  display:block;margin-top:.6rem;font-family:var(--text);font-size:1rem;
  letter-spacing:0;text-transform:none;color:var(--bone);font-weight:400;
}
.woocommerce-column__title,
.woocommerce-order-details__title{
  font-family:var(--disp);font-weight:400;font-size:1.4rem;color:var(--bone);margin-bottom:1rem;
}
.woocommerce-columns{display:grid;grid-template-columns:1fr 1fr;gap:2.4rem;margin-top:2.4rem}
address{font-style:normal;color:var(--bone-dim);line-height:1.9}

/* ================= WooCommerce blocks ================= */
/* Cart, checkout and the order confirmation. theme.json supplies the palette
   and typography; these rules handle structure the presets cannot reach.
   Stripe's card fields live in a cross-origin iframe and are themed instead
   through the Appearance API — see inc/woocommerce.php. */

.wc-block-components-title,
.wc-block-components-checkout-step__title,
.wc-block-cart__totals-title,
.wc-block-components-checkout-order-summary__title-text{
  font-family:var(--disp)!important;font-weight:400!important;
  color:var(--bone)!important;letter-spacing:0!important;
}
.wc-block-cart__totals-title,
.wc-block-components-checkout-order-summary__title-text{
  font-size:1.3rem!important;text-transform:none!important;
}

.wc-block-components-sidebar-layout{gap:clamp(2rem,4vw,3.5rem)}
.wc-block-components-sidebar{
  background:rgba(10,8,26,.5);border:1px solid var(--hair);padding:clamp(1.4rem,3vw,2rem);
}

/* Line items */
.wc-block-cart-items__header{
  font-family:var(--mono)!important;font-size:.6rem!important;letter-spacing:.2em!important;
  text-transform:uppercase!important;color:rgba(241,236,224,.45)!important;
  border-bottom:1px solid var(--hair)!important;
}
.wc-block-cart-items__row{border-bottom:1px solid var(--hair)}
.wc-block-cart-items__row td{padding-block:1.4rem}
.wc-block-components-product-name{
  color:var(--bone)!important;font-family:var(--disp)!important;font-style:italic;
  font-size:1rem!important;line-height:1.45!important;text-decoration:none!important;
  display:block;max-width:44ch;
}
.wc-block-components-product-name:hover{color:var(--gold-pale)!important}
.wc-block-cart-item__image img,
.wc-block-components-order-summary-item__image img{border:1px solid var(--hair)}
.wc-block-components-product-price__value,
.wc-block-components-formatted-money-amount{
  font-family:var(--mono)!important;letter-spacing:.04em;color:var(--bone)!important;
}

/* Quantity and remove */
.wc-block-components-quantity-selector{
  border:1px solid rgba(241,236,224,.16)!important;border-radius:0!important;background:rgba(10,8,26,.6);
}
.wc-block-components-quantity-selector__input{
  color:var(--bone)!important;background:transparent!important;font-family:var(--mono)!important;
}
.wc-block-components-quantity-selector__button{color:var(--bone-dim)!important;background:transparent!important}
.wc-block-components-quantity-selector__button:hover{color:var(--gold-pale)!important}
.wc-block-cart-item__remove-link{
  color:rgba(241,236,224,.45)!important;text-decoration:none!important;
  font-family:var(--mono)!important;font-size:.6rem!important;letter-spacing:.14em!important;
  text-transform:uppercase!important;
}
.wc-block-cart-item__remove-link:hover{color:#e2a0a0!important}

/* Totals */
.wc-block-components-totals-wrapper{border-top:1px solid var(--hair)!important}
.wc-block-components-totals-item__label{
  font-family:var(--mono)!important;font-size:.64rem!important;letter-spacing:.16em!important;
  text-transform:uppercase!important;color:var(--bone-dim)!important;
}
.wc-block-components-totals-item__value{color:var(--bone)!important}
.wc-block-components-totals-footer-item{
  font-size:1.05rem;padding-block:1.2rem;
}
.wc-block-components-totals-footer-item .wc-block-components-totals-item__label{
  font-size:.72rem!important;color:var(--bone)!important;
}
.wc-block-components-totals-footer-item-tax-value{font-size:1.4rem;color:var(--bone)!important}

/* Fields. The block floats its label over the input, so the input needs top
   padding to make room for it and the label must stay absolutely positioned. */
.wc-block-components-text-input input,
.wc-block-components-textarea,
.wc-blocks-components-select__select,
.wc-block-components-combobox input{
  background:rgba(10,8,26,.65)!important;
  border:1px solid rgba(241,236,224,.16)!important;
  color:var(--bone)!important;
  border-radius:0!important;
  font-family:var(--text)!important;
  font-size:16px!important;
  box-shadow:none!important;
}
.wc-block-components-text-input input:focus,
.wc-blocks-components-select__select:focus,
.wc-block-components-combobox input:focus{
  border-color:var(--gold)!important;box-shadow:none!important;outline:none!important;
}
.wc-block-components-text-input label,
.wc-blocks-components-select__label,
.wc-block-components-combobox label{
  color:rgba(241,236,224,.5)!important;font-family:var(--text)!important;
}
.wc-block-components-text-input.is-active label,
.wc-block-components-text-input input:focus + label{color:var(--gold-pale)!important}
.wc-blocks-components-select__expand{fill:var(--gold-pale)}
.wc-block-components-checkbox__label{color:var(--bone-dim)!important;line-height:1.7}
.wc-block-components-checkbox__input{accent-color:var(--gold)}
.wc-block-components-checkbox__mark{fill:var(--night)}

/* Radio groups: shipping options and payment methods */
.wc-block-components-radio-control__option{
  border:1px solid var(--hair)!important;background:rgba(10,8,26,.45);
  padding:1rem 1.1rem!important;
}
.wc-block-components-radio-control__option-checked{border-color:var(--gold)!important}
.wc-block-components-radio-control__label{color:var(--bone)!important}
.wc-block-components-radio-control__secondary-label,
.wc-block-components-radio-control__description{color:var(--bone-dim)!important}
.wc-block-components-radio-control__input{accent-color:var(--gold)}
.wc-block-checkout__shipping-option--free{color:var(--gold-pale)!important}

/* Steps */
.wc-block-components-checkout-step{
  border:0;padding-block:1.6rem;border-bottom:1px solid var(--hair);
}
.wc-block-components-checkout-step__title{font-size:1.15rem!important}
.wc-block-components-checkout-step__description{color:var(--bone-dim)!important}
.wc-block-checkout__guest-checkout-notice,
.wc-block-components-address-card{color:var(--bone-dim)!important}
.wc-block-components-address-card{border:1px solid var(--hair)!important;padding:1rem 1.2rem!important}
.wc-block-components-address-card__edit{color:var(--gold-pale)!important}
.wc-block-components-address-form__address_2-toggle{color:var(--gold-pale)!important}

/* Buttons */
.wc-block-components-button,
.wc-block-cart__submit-button,
.wc-block-components-checkout-place-order-button{
  background:var(--gold)!important;color:var(--night)!important;
  border-radius:0!important;border:0!important;
  font-family:var(--mono)!important;font-size:.72rem!important;
  letter-spacing:.2em!important;text-transform:uppercase!important;
  min-height:52px!important;
}
.wc-block-components-button:hover,
.wc-block-cart__submit-button:hover,
.wc-block-components-checkout-place-order-button:hover{background:var(--gold-pale)!important}

/* Express checkout. The Apple Pay and Google Pay buttons are brand-locked
   iframes; only their surroundings are ours. */
.wc-block-components-express-payment{
  border:1px solid var(--hair)!important;background:rgba(10,8,26,.4);
  padding:1.2rem!important;border-radius:0!important;
}
.wc-block-components-express-payment__title-container{border:0!important}
.wc-block-components-express-payment__title{
  font-family:var(--mono)!important;font-size:.62rem!important;letter-spacing:.2em!important;
  text-transform:uppercase!important;color:var(--bone-dim)!important;background:none!important;
}
.wc-block-components-express-payment__event-buttons{padding:0;margin:0;list-style:none;display:grid;gap:.8rem}
.wc-block-components-express-payment-continue-rule{
  color:rgba(241,236,224,.4)!important;
  font-family:var(--mono)!important;font-size:.6rem!important;
  letter-spacing:.2em!important;text-transform:uppercase!important;
}
.wc-block-components-express-payment-continue-rule::before,
.wc-block-components-express-payment-continue-rule::after{
  border-color:var(--hair)!important;background:var(--hair)!important;
}

/* Notices and panels */
.wc-block-components-notice-banner{
  background:rgba(10,8,26,.85)!important;color:var(--bone)!important;
  border-radius:0!important;border-color:var(--gold)!important;
}
.wc-block-components-notice-banner__content{color:var(--bone)!important}
.wc-block-components-panel__button{color:var(--bone)!important}
.wc-block-components-checkout-order-summary__title{
  border:0;background:none;color:var(--bone);
}
.wc-block-components-order-summary-item__description{color:var(--bone-dim)}
.wc-block-components-order-summary-item__quantity{
  background:var(--ink)!important;border:1px solid var(--hair)!important;
  color:var(--bone)!important;border-radius:0!important;
}
.wc-block-checkout__terms{color:var(--bone-dim)}
.wc-block-checkout__terms a{color:var(--gold-pale)}

/* Empty cart */
.wp-block-woocommerce-empty-cart-block .wc-block-cart__empty-cart__title{
  font-family:var(--disp)!important;font-weight:400;color:var(--bone);
}
.wp-block-woocommerce-empty-cart-block .wp-block-separator{
  border-color:var(--hair);color:rgba(241,236,224,.3);
}
.wp-block-woocommerce-empty-cart-block .wc-block-grid__products{
  list-style:none;padding:0;
  display:grid;grid-template-columns:repeat(auto-fill,minmax(min(200px,100%),1fr));
  gap:2rem;
}
.wp-block-woocommerce-empty-cart-block .wc-block-grid__product-title{
  font-family:var(--disp)!important;font-style:italic;color:var(--bone);
  font-size:.95rem;line-height:1.4;
}
.wp-block-woocommerce-empty-cart-block .wc-block-grid__product-price{
  font-family:var(--mono);font-size:.68rem;color:var(--bone-dim);
}

/* ---------- narrower screens ---------- */

@media (max-width:900px){
  .single-product div.product{grid-template-columns:1fr}
  .woocommerce-account .woocommerce{grid-template-columns:1fr}
  .woocommerce-columns{grid-template-columns:1fr}
  .wc-block-components-sidebar-layout{display:block}
  .wc-block-components-sidebar{margin-top:2rem}
}

@media (max-width:640px){
  .site-head-in{
    display:grid;grid-template-columns:1fr auto;grid-template-areas:"mark end" "nav nav";
    gap:.5rem 1rem;padding-block:1rem;min-height:0;align-items:center;
  }
  .site-head-in > .wordmark{grid-area:mark}
  .site-head-end{grid-area:end;margin-left:0}
  .site-nav{grid-area:nav;margin-left:0}
  .nav-list{gap:1.6rem;padding-top:.2rem}
  .wordmark{font-size:.92rem;letter-spacing:.26em}

  table.shop_table thead{display:none}
  table.shop_table tr{display:block;border-bottom:1px solid var(--hair);padding:1rem 0}
  table.shop_table td{display:flex;justify-content:space-between;gap:1rem;border:0;padding:.5rem 0}
  table.shop_table td::before{
    content:attr(data-title);
    font-family:var(--mono);font-size:.58rem;letter-spacing:.18em;
    text-transform:uppercase;color:rgba(241,236,224,.45);
  }
  table.shop_table td.product-remove::before,
  table.shop_table td.product-thumbnail::before{content:none}

  .site-foot-base{flex-direction:column;gap:.8rem}
  ul.products{gap:2.6rem}
}

@media (prefers-reduced-motion:reduce){
  *{transition-duration:.001s!important;animation-duration:.001s!important}
}

/* ---------- print ----------
   Order confirmations get printed and filed, especially at these prices. */

@media print{
  .site-head,.site-foot,.skip-link,.woocommerce-ordering,.woocommerce-result-count,
  .wc-back,.wc-plane-link,form.cart,.related.products,.upsells.products,
  .woocommerce-tabs,.post-nav,.comments,.search-form,.wc-atmos{display:none!important}
  html,body,body.tess-page{background:#fff!important;color:#000!important}
  .site-main{max-width:none;padding:0}
  a{color:#000;text-decoration:underline}
  .page-head h1,.woocommerce-thankyou-order-received{color:#000}
  table.shop_table th,table.shop_table td{border-color:#999;color:#000}
  table.shop_table .amount,ul.woocommerce-order-overview li strong{color:#000}
  .eyebrow,.entry-meta,ul.woocommerce-order-overview li{color:#444}
  .woocommerce-order{max-width:none}
}
