/* WooCommerce screens only. Loaded conditionally by inc/assets.php. */

/* ---------- product grid ----------
   minmax() replaces the carousel that overflowed horizontally on the live
   site (scrollWidth 934 > clientWidth 929), and the fixed aspect-ratio stops
   the uneven card heights that caused layout shift. */
.products, .card-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(min(240px, 100%), 1fr));
  gap: var(--gap);
  list-style: none;
  margin: 0;
  padding: 0;
}
.card { display: flex; flex-direction: column; background: var(--bg); }
.card__media { display: block; aspect-ratio: 1 / 1; overflow: hidden; background: var(--bg-soft); }
.card__img { inline-size: 100%; block-size: 100%; object-fit: cover; transition: transform .3s ease; }
.card:hover .card__img { transform: scale(1.03); }
.card__body { display: flex; flex-direction: column; gap: .5rem; padding-block: .75rem; flex: 1; }
.card__title { font-size: 1rem; font-weight: 400; margin: 0; line-height: 1.35; }
.card__price { font-size: 1.25rem; font-weight: 700; color: var(--ink); margin: 0; }
.card__price del { color: var(--muted); font-weight: 400; font-size: .875em; }
.card__price ins { text-decoration: none; }
/* Ploni has no medium-bold, so 700 jumps straight to Ultrabold and reads
   heavy on a small button. The price keeps the weight instead. */
.card__cta { margin-block-start: auto; font-weight: 400; }
.card--cat .card__body { text-align: center; }

/* ---------- archives ---------- */
.archive { padding-block-end: 3rem; }
.archive__head { padding-block: .5rem 1.5rem; }
.archive__intro { max-inline-size: 70ch; color: var(--muted); }
.archive__seo {
  max-inline-size: 70ch;
  margin-block-start: 3rem;
  padding-block-start: 2rem;
  border-block-start: 1px solid var(--line);
  color: var(--muted);
}
.subcats ul {
  display: flex;
  flex-wrap: wrap;
  gap: .5rem;
  list-style: none;
  margin: 0 0 1.5rem;
  padding: 0;
}
.subcats a {
  display: inline-block;
  padding: .45rem .9rem;
  border: 1px solid var(--line);
  font-size: .9375rem;
}
.subcats a:hover { border-color: var(--brand); color: var(--brand); text-decoration: none; }

/* ---------- single product ---------- */
.product__top { display: grid; grid-template-columns: 1fr; gap: var(--gap); padding-block-end: 1rem; }
@media (min-width: 900px) {
  .product__top { grid-template-columns: 1.1fr .9fr; align-items: start; gap: 3rem; }
}
.product__title { font-size: clamp(1.5rem, 3vw, 2rem); margin-block-end: .5rem; }
.product__price { font-size: 1.5rem; font-weight: 700; margin-block: 0 1rem; }
.product__price del { color: var(--muted); font-weight: 400; font-size: .8em; }
.product__price ins { text-decoration: none; }
.product__excerpt { color: var(--muted); }

.product__buybox form.cart { display: flex; flex-direction: column; gap: 1rem; margin-block: 1.25rem; }
.product__buybox .quantity input {
  inline-size: 5rem;
  padding: .6rem;
  border: 1px solid var(--line);
  font: inherit;
}
.product__buybox .single_add_to_cart_button {
  inline-size: 100%;
  font-size: 1.0625rem;
  padding-block: .9rem;
  border: 0;
  background: var(--brand);
  color: #fff;
  font-weight: 400;
  cursor: pointer;
}
.product__buybox .single_add_to_cart_button:hover { background: var(--brand-dark); }

.trust {
  list-style: none;
  margin: 1.25rem 0 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: .35rem;
  font-size: .875rem;
  color: var(--muted);
}
.trust li::before { content: "✓"; color: var(--brand); margin-inline-end: .5rem; font-weight: 700; }

.product__description { margin-block-start: 3rem; max-inline-size: 70ch; }
.product__policy { margin-block-start: 2rem; }
.product__related { margin-block-start: 3rem; }

/* gallery */
.woocommerce-product-gallery { position: relative; }
.woocommerce-product-gallery__wrapper { margin: 0; }
.product__thumbs {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(72px, 1fr));
  gap: .5rem;
  margin-block-start: .5rem;
  list-style: none;
  padding: 0;
}
.product__thumbs img { aspect-ratio: 1 / 1; object-fit: cover; }
.product__thumbs [aria-current="true"] img { outline: 2px solid var(--brand); }

/* ---------- variation swatches ---------- */
.swatches { display: flex; flex-wrap: wrap; gap: .5rem; margin-block: .5rem; }
.swatch {
  padding: .45rem .85rem;
  border: 1px solid var(--line);
  background: #fff;
  cursor: pointer;
  border-radius: var(--radius);
}
.swatch[aria-pressed="true"] { border-color: var(--brand); box-shadow: inset 0 0 0 1px var(--brand); }
.swatches__select { position: absolute; inline-size: 1px; block-size: 1px; overflow: hidden; clip-path: inset(50%); }

/* ---------- mobile sticky buy bar ---------- */
.sticky-cta {
  position: fixed;
  inset-inline: 0;
  inset-block-end: 0;
  z-index: 50;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  padding: .75rem 1rem;
  background: #fff;
  border-block-start: 1px solid var(--line);
  box-shadow: 0 -2px 12px rgb(0 0 0 / .08);
}
.sticky-cta__price { font-weight: 700; white-space: nowrap; }
.sticky-cta .btn { flex: 1; max-inline-size: 60%; }
@media (min-width: 768px) { .sticky-cta { display: none; } }

/* ---------- cart + checkout ---------- */
.woocommerce-cart-form table { inline-size: 100%; border-collapse: collapse; }
.woocommerce-cart-form th,
.woocommerce-cart-form td { padding: .75rem; border-block-end: 1px solid var(--line); text-align: start; }
.cart-collaterals { margin-block-start: 2rem; }
@media (min-width: 900px) {
  .mh-cart { display: grid; grid-template-columns: 1.6fr .9fr; gap: 2rem; align-items: start; }
  .cart-collaterals { margin-block-start: 0; }
  .mh-checkout { display: grid; grid-template-columns: 1.2fr .8fr; gap: 2rem; align-items: start; }
}
.woocommerce-checkout input[type="text"],
.woocommerce-checkout input[type="email"],
.woocommerce-checkout input[type="tel"],
.woocommerce-checkout textarea,
.woocommerce-checkout select {
  inline-size: 100%;
  padding: .7rem;
  border: 1px solid var(--line);
  font: inherit;
  border-radius: var(--radius);
}
#place_order { inline-size: 100%; font-size: 1.0625rem; padding-block: .9rem; }

.woocommerce-message,
.woocommerce-info,
.woocommerce-error {
  padding: .9rem 1rem;
  border-inline-start: 4px solid var(--brand);
  background: var(--bg-soft);
  list-style: none;
  margin-block-end: 1.5rem;
}
.woocommerce-error { border-color: #C0392B; }

/* ---------- product gallery ----------
   Our own markup (woocommerce/single-product/product-image.php) in place of
   WooCommerce's flexslider gallery. No library, so nothing here depends on a
   script having run — the main image is visible on first paint. */
.pgallery__main { margin: 0; }
.pgallery__img {
  inline-size: 100%;
  block-size: auto;
  /* Products are photographed in mixed ratios; box them so the buy column
     opposite does not jump between products. */
  aspect-ratio: 4 / 3;
  object-fit: contain;
  background: var(--surface, #fff);
}

.pgallery__thumbs {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(76px, 1fr));
  gap: .5rem;
  list-style: none;
  margin: .625rem 0 0;
  padding: 0;
}
.pgallery__thumbs li { list-style: none; margin: 0; }

.pgallery__thumb {
  display: block;
  position: relative;
  border: 1px solid var(--line);
  transition: opacity .2s ease, border-color .2s ease;
  opacity: .72;
}
.pgallery__thumb img {
  display: block;
  inline-size: 100%;
  aspect-ratio: 1 / 1;
  object-fit: cover;
}
.pgallery__thumb:hover,
.pgallery__thumb:focus-visible { opacity: 1; border-color: var(--brand); }
.pgallery__thumb[aria-current="true"] {
  opacity: 1;
  border-color: var(--brand);
  box-shadow: 0 0 0 1px var(--brand);
}

/* ---------- carousel ----------
   Four cards visible, scroll-snapped. No library: the grid becomes a single
   snapping row, so it degrades to a plain scroller without JS. */
/* Reserve room for the arrows so they sit beside the track instead of on top
   of the first and last card. */
.carousel { position: relative; }
@media (min-width: 768px) { .carousel { padding-inline: 3.25rem; } }
.carousel__track {
  display: grid;
  grid-auto-flow: column;
  grid-auto-columns: calc((100% - 3 * var(--gap)) / 4);
  gap: var(--gap);
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  scroll-behavior: smooth;
  scrollbar-width: none;
  padding-block-end: .5rem;
  list-style: none;
  margin: 0;
  padding-inline: 0;
}
.carousel__track::-webkit-scrollbar { display: none; }
.carousel__track > .card { scroll-snap-align: start; }

@media (max-width: 1099px) { .carousel__track { grid-auto-columns: calc((100% - 2 * var(--gap)) / 3); } }
@media (max-width: 767px)  { .carousel__track { grid-auto-columns: calc((100% - var(--gap)) / 2); } }
@media (max-width: 479px)  { .carousel__track { grid-auto-columns: 78%; } }

.carousel__btn {
  position: absolute;
  /* Centred against the track rather than pinned at a percentage of its
     height. 38% was tuned to one card height; the moment a product title
     wrapped to a second line the cards grew and the arrows slid down with
     them. inset-block:0 with auto margins ignores the height entirely. */
  inset-block: 0;
  margin-block: auto;
  z-index: 5;
  inline-size: 2.75rem;
  block-size: 2.75rem;
  border: 1px solid var(--line);
  border-radius: 50%;
  background: #fff;
  font-size: 1.25rem;
  line-height: 1;
  cursor: pointer;
  box-shadow: 0 2px 10px rgb(0 0 0 / .12);
}
.carousel__btn:hover { border-color: var(--brand); color: var(--brand); }
.carousel__btn[disabled] { opacity: .3; cursor: default; }
.carousel__btn--prev { inset-inline-end: 0; }
.carousel__btn--next { inset-inline-start: 0; }
@media (max-width: 767px) { .carousel__btn { display: none; } }

/* ---------- home: about + testimonials ---------- */
.home-about {
  display: grid;
  gap: 2rem;
  align-items: center;
  padding-block: 3rem;
}
@media (min-width: 900px) { .home-about { grid-template-columns: 1fr 1fr; } }
.home-about__img img { inline-size: 100%; aspect-ratio: 4 / 3; object-fit: cover; }
.home-about__body h2 { margin-block-end: .75rem; }
.home-about__body p { color: var(--muted); }
.home-about__body .btn { margin-block-start: .5rem; }

.home-reviews { padding-block: 3rem; background: var(--bg-soft); }
.home-reviews h2 { text-align: center; margin-block-end: .25rem; }
.home-reviews__lead { text-align: center; color: var(--muted); margin-block-end: 2rem; }
.home-reviews .carousel__track { grid-auto-columns: calc((100% - 2 * var(--gap)) / 3); }
@media (max-width: 767px) { .home-reviews .carousel__track { grid-auto-columns: 82%; } }
.review {
  scroll-snap-align: start;
  background: #fff;
  padding: 1.5rem;
  border: 1px solid var(--line);
}
.review img { inline-size: 100%; block-size: auto; }

/* ---------- gallery zoom trigger ----------
   WooCommerce injects a 🔍 emoji for the lightbox trigger, which renders as a
   different colour and weight per platform. Replaced with a drawn icon. */
.woocommerce-product-gallery__trigger {
  position: absolute;
  inset-block-start: .75rem;
  inset-inline-end: .75rem;
  z-index: 6;
  display: grid;
  place-items: center;
  inline-size: 2.5rem;
  block-size: 2.5rem;
  border-radius: 50%;
  background: #fff;
  border: 1px solid var(--line);
  box-shadow: 0 2px 8px rgb(0 0 0 / .12);
  font-size: 0;            /* hides the emoji glyph */
  text-indent: -9999px;
  overflow: hidden;
}
.woocommerce-product-gallery__trigger::after {
  content: "";
  inline-size: 1.15rem;
  block-size: 1.15rem;
  text-indent: 0;
  background: var(--ink);
  -webkit-mask: var(--mh-zoom) center / contain no-repeat;
  mask: var(--mh-zoom) center / contain no-repeat;
}
.woocommerce-product-gallery__trigger:hover { border-color: var(--brand); }
.woocommerce-product-gallery__trigger:hover::after { background: var(--brand); }

:root {
  --mh-zoom: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="black" stroke-width="2" stroke-linecap="round"><circle cx="11" cy="11" r="7"/><path d="M20 20l-3.5-3.5"/><path d="M11 8v6M8 11h6"/></svg>');
}


/* ---------- subcategory cards ----------
   Set apart from the product grid below them so the two blocks do not read as
   one long list of tiles. */
.card-grid--subcats { margin-block-end: 2rem; }

/* Two products per row on phones. The auto-fill track with a 240px floor
   collapses to a single column under about 520px, which wastes half the
   screen on a shop that is browsed almost entirely on mobile. */
@media (max-width: 599px) {
  .products,
  .card-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .75rem; }
  .card__title { font-size: .9375rem; line-height: 1.35; }
}


/* ---------- subcategory block ----------
   Given its own heading and a tinted band. As a bare grid it sat directly
   above the product grid in the same style, so the two read as one list and
   the subcategories disappeared into it. */
.subcats-block {
  margin-block-end: 2.25rem;
  padding: 1.25rem;
  background: var(--bg-soft);
  border-radius: var(--radius);
}
.subcats-block__title {
  font-size: 1.125rem;
  margin: 0 0 1rem;
  font-weight: 400;
}
.card-grid--subcats { margin-block-end: 0; }
.card-grid--subcats .card { background: transparent; }
.card-grid--subcats .card__title { font-size: .9375rem; }

/* The subcategory block is the first thing under the intro now that the
   sibling row is gone, so it carries the weight on its own. */
.subcats-block {
  border: 1px solid var(--line);
  padding: 1.5rem 1.25rem;
}
.subcats-block__title {
  /* Ploni has no medium weight, so 700 lands on Ultrabold — right for a
     section heading that has to compete with the product grid below it. */
  font-size: 1.375rem;
  font-weight: 700;
  color: var(--ink);
  margin-block-end: 1.25rem;
}
.card-grid--subcats .card__title a { font-weight: 400; }
/* Three across on a phone would leave the names unreadable at this width. */
@media (max-width: 599px) {
  .card-grid--subcats { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* ---------- subcategory chips ----------
   Square image tiles gave three links the footprint of a product row and
   pushed the products themselves off the first screen. A small round thumb
   beside the name says the same thing in a fraction of the space. */
.card-grid--subcats {
  display: flex;
  flex-wrap: wrap;
  gap: .625rem;
}
.card-grid--subcats .card {
  flex-direction: row;
  align-items: center;
  gap: .625rem;
  /* Logical, not the physical shorthand: under RTL the thumb sits on the
     right, so the roomy side is the text end. Written physically it landed
     the other way round and the name pressed against the pill edge. */
  padding-block: .5rem;
  padding-inline-start: .5rem;
  padding-inline-end: 1.5rem;
  border: 1px solid var(--line);
  border-radius: 999px;
  background: #fff;
  transition: border-color .2s ease, box-shadow .2s ease;
}
.card-grid--subcats .card:hover {
  border-color: var(--brand);
  box-shadow: 0 1px 6px rgb(0 0 0 / .06);
}
.card-grid--subcats .card__media {
  flex: 0 0 auto;
  inline-size: 3.75rem;
  block-size: 3.75rem;
  border-radius: 50%;
  aspect-ratio: 1 / 1;
}
.card-grid--subcats .card:hover .card__img { transform: none; }
.card-grid--subcats .card__body {
  padding: 0;
  text-align: start;
  flex: 0 1 auto;
}
.card-grid--subcats .card__title {
  font-size: 1.0625rem;
  line-height: 1.3;
  margin: 0;
}
@media (max-width: 599px) {
  /* Chips wrap on their own; the two-column grid rule must not clamp them. */
  .card-grid--subcats { grid-template-columns: none; }
  .card-grid--subcats .card__title { font-size: .875rem; }
}

/* Subcategory chip name. Appended so it lands after the earlier rule and the
   small-screen override — equal specificity, so source order decides. */
.card-grid--subcats .card__title { font-size: 1.0625rem; line-height: 1.3; }
@media (max-width: 599px) {
  .card-grid--subcats .card__title { font-size: 1rem; }
}

/* ---------- cart: mobile layout and a checkout button you can find ----------
   WooCommerce's cart is a data table. On a phone a five-column table either
   scrolls sideways or crushes each column to a few characters, so below 768px
   every row becomes a card with its own labels. */
.cart-collaterals .checkout-button,
.wc-proceed-to-checkout .checkout-button {
  display: block;
  inline-size: 100%;
  padding-block: .95rem;
  background: var(--brand);
  color: #fff;
  border: 0;
  border-radius: var(--radius);
  font-size: 1.0625rem;
  text-align: center;
  text-decoration: none;
}
.cart-collaterals .checkout-button:hover,
.wc-proceed-to-checkout .checkout-button:hover { background: var(--brand-dark); }

@media (max-width: 767px) {
  .woocommerce-cart-form table,
  .woocommerce-cart-form thead,
  .woocommerce-cart-form tbody,
  .woocommerce-cart-form tr,
  .woocommerce-cart-form td { display: block; inline-size: 100%; }
  /* The header row has nowhere to sit once the rows are cards. */
  .woocommerce-cart-form thead { display: none; }

  .woocommerce-cart-form tr.cart_item {
    position: relative;
    border: 1px solid var(--line);
    border-radius: var(--radius);
    padding: .75rem 2.25rem .75rem .75rem;
    margin-block-end: .75rem;
  }
  .woocommerce-cart-form tr.cart_item td {
    border: 0;
    padding: .25rem 0;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .75rem;
  }
  /* The label each cell lost with the header row. */
  .woocommerce-cart-form tr.cart_item td::before {
    content: attr(data-title);
    color: var(--muted);
    font-size: .8125rem;
  }
  .woocommerce-cart-form td.product-thumbnail { display: block; }
  .woocommerce-cart-form td.product-thumbnail::before { content: none; }
  .woocommerce-cart-form td.product-thumbnail img { inline-size: 5rem; block-size: auto; }
  .woocommerce-cart-form td.product-name { font-weight: 700; }
  .woocommerce-cart-form td.product-name::before { content: none; }
  /* The remove link goes to the corner instead of taking a whole row. */
  .woocommerce-cart-form td.product-remove {
    position: absolute;
    inset-block-start: .5rem;
    inset-inline-end: .5rem;
    padding: 0;
  }
  .woocommerce-cart-form td.product-remove::before { content: none; }
  .woocommerce-cart-form td.actions { padding-block-start: .75rem; }
  .woocommerce-cart-form td.actions .button { inline-size: 100%; }
  .cart-collaterals { margin-block-start: 1.5rem; }
}

/* ---------- cart, laid out properly ----------
   WooCommerce wraps the whole cart in a single <div class="woocommerce">, so
   .mh-cart's two-column grid only ever saw one child and everything stacked
   full width. display:contents lifts the form and the totals up to be grid
   items themselves. */
.mh-cart > .woocommerce { display: contents; }

@media (min-width: 900px) {
  .mh-cart .woocommerce-notices-wrapper { grid-column: 1 / -1; }
}

/* The table itself */
.woocommerce-cart-form table.cart {
  inline-size: 100%;
  border-collapse: separate;
  border-spacing: 0;
}
.woocommerce-cart-form thead th {
  text-align: start;
  font-weight: 400;
  font-size: .8125rem;
  color: var(--muted);
  padding: 0 .75rem .625rem;
  border-block-end: 1px solid var(--line);
}
.woocommerce-cart-form td {
  padding: 1rem .75rem;
  border-block-end: 1px solid var(--line);
  vertical-align: middle;
}
.woocommerce-cart-form td.product-thumbnail img {
  inline-size: 4.5rem;
  block-size: 4.5rem;
  object-fit: cover;
  border-radius: var(--radius);
  display: block;
}
.woocommerce-cart-form td.product-name a { font-weight: 700; }
.woocommerce-cart-form td.product-name .variation,
.woocommerce-cart-form td.product-name dl { font-size: .8125rem; color: var(--muted); margin-block-start: .25rem; }
.woocommerce-cart-form td.product-remove a {
  display: grid;
  place-items: center;
  inline-size: 1.75rem;
  block-size: 1.75rem;
  border-radius: 50%;
  color: var(--muted);
  text-decoration: none;
  font-size: 1.1rem;
  line-height: 1;
}
.woocommerce-cart-form td.product-remove a:hover { background: var(--bg-soft); color: #C0392B; }
.woocommerce-cart-form td.actions {
  padding-block: 1.25rem;
  border-block-end: 0;
  display: flex;
  flex-wrap: wrap;
  gap: .625rem;
  align-items: center;
  justify-content: space-between;
}
.woocommerce-cart-form .coupon { display: flex; gap: .5rem; flex: 1 1 16rem; }
.woocommerce-cart-form .coupon input {
  flex: 1;
  padding: .6rem .75rem;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  font: inherit;
}
.woocommerce-cart-form .actions .button {
  padding: .6rem 1.1rem;
  border: 1px solid var(--line);
  background: #fff;
  border-radius: var(--radius);
  font: inherit;
  cursor: pointer;
}
.woocommerce-cart-form .actions .button:hover:not([disabled]) { border-color: var(--brand); color: var(--brand); }
.woocommerce-cart-form .actions .button[disabled] { opacity: .45; cursor: default; }

/* Totals sit in their own card so the eye lands on the amount and the button */
.cart-collaterals { inline-size: 100%; }
.cart-collaterals .cart_totals {
  border: 1px solid var(--line);
  border-radius: var(--radius);
  padding: 1.25rem;
  background: var(--bg-soft);
}
.cart-collaterals h2 { font-size: 1.125rem; margin: 0 0 .875rem; }
.cart-collaterals table { inline-size: 100%; border-collapse: collapse; }
.cart-collaterals th,
.cart-collaterals td {
  padding: .5rem 0;
  text-align: start;
  font-weight: 400;
  border-block-end: 1px solid var(--line);
}
.cart-collaterals td { text-align: end; }
.cart-collaterals .order-total th,
.cart-collaterals .order-total td {
  font-weight: 700;
  font-size: 1.125rem;
  border-block-end: 0;
  padding-block-start: .75rem;
}
.cart-collaterals .wc-proceed-to-checkout { margin-block-start: 1rem; padding: 0; }
@media (min-width: 900px) {
  .cart-collaterals { position: sticky; inset-block-start: 1.5rem; }
}

/* ---------- checkout ----------
   Same grid trap as the cart: WooCommerce wraps everything in one <div>, so
   .mh-checkout's two columns never received separate children. */
.mh-checkout > .woocommerce { display: contents; }
@media (min-width: 900px) {
  .mh-checkout .woocommerce-notices-wrapper { grid-column: 1 / -1; }
}

.woocommerce-checkout h3,
.woocommerce-checkout #order_review_heading { font-size: 1.125rem; margin: 0 0 1rem; }
.woocommerce-checkout .form-row { margin-block-end: .875rem; }
.woocommerce-checkout label { display: block; font-size: .875rem; margin-block-end: .3rem; color: var(--muted); }
.woocommerce-checkout .required { color: #C0392B; text-decoration: none; }

/* Order review as a card, so the amount and the pay button read as one unit */
#order_review {
  border: 1px solid var(--line);
  border-radius: var(--radius);
  padding: 1.25rem;
  background: var(--bg-soft);
}
#order_review table.shop_table { inline-size: 100%; border-collapse: collapse; }
#order_review th,
#order_review td {
  padding: .55rem 0;
  text-align: start;
  font-weight: 400;
  border-block-end: 1px solid var(--line);
  vertical-align: top;
}
#order_review td { text-align: end; }
#order_review .product-name { font-size: .9375rem; }
#order_review .order-total th,
#order_review .order-total td {
  font-weight: 700;
  font-size: 1.125rem;
  border-block-end: 0;
  padding-block-start: .75rem;
}

/* Payment methods */
#order_review .wc_payment_methods { list-style: none; margin: 1rem 0 0; padding: 0; }
#order_review .wc_payment_method {
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: #fff;
  padding: .75rem;
  margin-block-end: .5rem;
}
#order_review .wc_payment_method > label {
  display: flex;
  align-items: center;
  gap: .5rem;
  margin: 0;
  font-size: .9375rem;
  color: var(--ink);
  cursor: pointer;
}
/* PayPal ships a full-resolution logo with no width; unconstrained it filled
   the column and dwarfed every other option. */
#order_review .wc_payment_method label img {
  max-block-size: 1.5rem;
  inline-size: auto;
  max-inline-size: 6rem;
  margin-inline-start: auto;
}
#order_review .payment_box {
  font-size: .8125rem;
  color: var(--muted);
  background: var(--bg-soft);
  padding: .625rem .75rem;
  margin-block-start: .5rem;
  border-radius: var(--radius);
}

/* The one button that matters on this page */
#place_order {
  inline-size: 100%;
  margin-block-start: 1rem;
  padding-block: .95rem;
  background: var(--brand);
  color: #fff;
  border: 0;
  border-radius: var(--radius);
  font-size: 1.0625rem;
  cursor: pointer;
}
#place_order:hover { background: var(--brand-dark); }

/* ---------- checkout: bullets and alignment ----------
   The shipping and payment lists were never reset, so both rendered with
   browser bullets. Scoping the earlier rules under #order_review missed the
   payment list, which lives in its own #payment wrapper — these are written
   by class so the nesting cannot matter. */
.woocommerce-shipping-methods,
.wc_payment_methods,
.woocommerce-checkout ul.payment_methods,
.woocommerce-checkout .shipping__list {
  list-style: none !important;
  margin: 0;
  padding: 0;
}
.woocommerce-shipping-methods li,
.wc_payment_methods li {
  list-style: none !important;
  margin: 0;
}
.woocommerce-shipping-methods li { padding-block: .3rem; }
.woocommerce-shipping-methods label { display: inline; margin: 0; color: var(--ink); }

/* Everything in the checkout reads right-to-left: `start` follows the
   document direction, unlike the `left` WooCommerce's own stylesheet assumes. */
.woocommerce-checkout,
.woocommerce-checkout table,
.woocommerce-checkout th,
.woocommerce-checkout td,
.mh-checkout,
.mh-cart,
.cart-collaterals,
#order_review { text-align: start; }

/* Amounts stay on the far side of their row so the column of numbers lines up. */
#order_review td,
#order_review .product-total,
.cart-collaterals td,
.woocommerce-cart-form td.product-subtotal { text-align: end; }

/* Numerals must not flip inside an RTL line. */
.woocommerce-Price-amount,
.amount { direction: ltr; unicode-bidi: isolate; display: inline-block; }

.wc_payment_method { padding-inline: .75rem; }
#payment .wc_payment_methods { margin-block-start: 1rem; }
