/* ============================================================
   LS PEPTIDES — page and commerce styling
   Hello Elementor ships almost no opinion, so every page not built in
   Elementor (the content pages, and all of WooCommerce's own templates)
   arrives unstyled. This is that layer.

   Content pages are wrapped in .page-content by Hello Elementor and
   .entry-content elsewhere, so :is() covers both without doubling every rule.
   ============================================================ */

/* Hello Elementor sets body colour to #333, which disappears on the dark
   ground. Establish the real base before anything else. */
body{
  color: var(--ls-text);
  background: var(--ls-ink);
}

/* ============================================================
   PAGE SHELL
   ============================================================ */
body:not(.elementor-page) .site-main,
.woocommerce-page .site-main{
  max-width: 1280px;
  margin-inline: auto;
  padding: clamp(34px, 5vw, 60px) clamp(18px, 4vw, 40px) clamp(56px, 7vw, 92px);
  color: var(--ls-mute);
}

.page-header,
.entry-header,
.woocommerce-products-header{
  margin: 0 0 34px;
  padding-bottom: 22px;
  border-bottom: 1px solid var(--ls-line-soft);
}

.page-title,
.entry-title,
.woocommerce-products-header__title{
  font-family: "Archivo", sans-serif;
  font-weight: 800;
  font-size: clamp(1.9rem, 4.2vw, 2.9rem);
  line-height: 1.06;
  letter-spacing: -.022em;
  text-transform: uppercase;
  color: #fff;
  margin: 0;
  text-wrap: balance;
}

/* ============================================================
   CONTENT TYPOGRAPHY
   These are long legal and informational documents, so they are set for
   reading: a measure near 74 characters, real hierarchy, tables that behave.
   ============================================================ */
:is(.entry-content, .page-content){
  color: var(--ls-mute);
  font-family: "IBM Plex Sans", system-ui, sans-serif;
  font-weight: 300;
  font-size: 16px;
  line-height: 1.75;
}

:is(.entry-content, .page-content) > *{ max-width: 74ch; }
:is(.entry-content, .page-content) > :is(figure, .wp-block-table, .ls-ruo-strip, .ls-sealed-notice){
  max-width: none;
}

:is(.entry-content, .page-content) h2{
  font-family: "Archivo", sans-serif;
  font-weight: 800;
  font-size: clamp(1.3rem, 2.4vw, 1.7rem);
  line-height: 1.16;
  letter-spacing: -.012em;
  text-transform: uppercase;
  color: #fff;
  margin: 50px 0 16px;
  padding-top: 26px;
  border-top: 1px solid var(--ls-line-soft);
  text-wrap: balance;
}
:is(.entry-content, .page-content) > h2:first-child{
  margin-top: 0;
  padding-top: 0;
  border-top: 0;
}

:is(.entry-content, .page-content) h3{
  font-family: "Archivo", sans-serif;
  font-weight: 700;
  font-size: 1.02rem;
  letter-spacing: .01em;
  text-transform: uppercase;
  color: var(--ls-sky);
  margin: 32px 0 12px;
}

:is(.entry-content, .page-content) p{ margin: 0 0 16px; }
:is(.entry-content, .page-content) strong{ color: var(--ls-text); font-weight: 600; }

:is(.entry-content, .page-content) a{
  color: var(--ls-azure);
  text-decoration: none;
  border-bottom: 1px solid rgba(70, 166, 245, .35);
  transition: border-color .25s var(--ls-ease);
}
:is(.entry-content, .page-content) a:hover{ border-bottom-color: var(--ls-azure); }

:is(.entry-content, .page-content) :is(ul, ol){ margin: 0 0 20px; padding-left: 22px; }
:is(.entry-content, .page-content) li{ margin-bottom: 9px; }
:is(.entry-content, .page-content) li::marker{ color: var(--ls-faint); }
:is(.entry-content, .page-content) ol li::marker{
  font-family: "IBM Plex Mono", monospace;
  font-size: .85em;
  color: var(--ls-azure);
}

:is(.entry-content, .page-content) code{
  font-family: "IBM Plex Mono", monospace;
  font-size: .88em;
  background: var(--ls-surface-2);
  color: var(--ls-sky);
  padding: 2px 7px;
  border-radius: 2px;
}

/* Tables carry the specification and rate data, so they get real treatment.
   Wide ones scroll inside their own container rather than pushing the page. */
:is(.entry-content, .page-content) :is(figure.wp-block-table, .wp-block-table){
  margin: 0 0 26px;
  overflow-x: auto;
  border: 1px solid var(--ls-line-soft);
  border-radius: 2px;
}
:is(.entry-content, .page-content) table{
  width: 100%;
  min-width: 420px;
  border-collapse: collapse;
  font-size: 14.5px;
  background: var(--ls-surface);
}
:is(.entry-content, .page-content) th{
  text-align: left;
  padding: 12px 15px;
  background: var(--ls-surface-2);
  border-bottom: 1px solid var(--ls-line);
  font-family: "IBM Plex Mono", monospace;
  font-size: 11px;
  font-weight: 500;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--ls-sky);
  white-space: nowrap;
}
:is(.entry-content, .page-content) td{
  padding: 12px 15px;
  border-bottom: 1px solid var(--ls-line-soft);
  vertical-align: top;
  color: var(--ls-mute);
}
:is(.entry-content, .page-content) tr:last-child td{ border-bottom: 0; }
:is(.entry-content, .page-content) tr:hover td{ background: var(--ls-surface-2); }
:is(.entry-content, .page-content) td:first-child{ color: var(--ls-text); }

/* ============================================================
   BREADCRUMB
   ============================================================ */
.woocommerce-breadcrumb{
  font-family: "IBM Plex Mono", monospace;
  font-size: 11px;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--ls-faint);
  margin: 0 0 18px;
}
.woocommerce-breadcrumb a{ color: var(--ls-faint); text-decoration: none; }
.woocommerce-breadcrumb a:hover{ color: var(--ls-azure); }

/* ============================================================
   SHOP ARCHIVE FURNITURE
   ============================================================ */
.woocommerce .woocommerce-result-count{ margin: 0; padding-top: 10px; }
.woocommerce .woocommerce-ordering{ margin: 0 0 26px; }

.woocommerce nav.woocommerce-pagination ul{
  border: 0;
  display: flex;
  gap: 8px;
  justify-content: center;
  margin-top: 40px;
  padding: 0;
}
.woocommerce nav.woocommerce-pagination ul li{ border: 0; margin: 0; }
.woocommerce nav.woocommerce-pagination ul li a,
.woocommerce nav.woocommerce-pagination ul li span{
  min-width: 40px;
  padding: 10px 12px;
  border: 1px solid var(--ls-line);
  border-radius: 2px;
  background: transparent;
  color: var(--ls-mute);
  font-family: "IBM Plex Mono", monospace;
  font-size: 13px;
  transition: background .25s var(--ls-ease), border-color .25s var(--ls-ease), color .25s var(--ls-ease);
}
.woocommerce nav.woocommerce-pagination ul li span.current,
.woocommerce nav.woocommerce-pagination ul li a:hover{
  background: var(--ls-blue);
  border-color: var(--ls-blue);
  color: #fff;
}

/* ============================================================
   SINGLE PRODUCT
   ============================================================ */
.single-product div.product{
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: clamp(28px, 4vw, 56px);
  align-items: start;
}
.single-product div.product .woocommerce-product-gallery,
.single-product div.product .summary{
  width: 100% !important;
  float: none !important;
  margin: 0;
}
.single-product div.product .woocommerce-tabs,
.single-product div.product .related,
.single-product div.product .up-sells{ grid-column: 1 / -1; }

@media (max-width: 900px){
  .single-product div.product{ grid-template-columns: 1fr; }
}

.single-product .woocommerce-product-gallery__image img{
  border: 1px solid var(--ls-line-soft);
  border-radius: 3px;
}

.single-product div.product .product_title{
  font-family: "Archivo", sans-serif;
  font-weight: 800;
  font-size: clamp(1.75rem, 3.4vw, 2.4rem);
  line-height: 1.08;
  letter-spacing: -.018em;
  text-transform: uppercase;
  color: #fff;
  margin: 0 0 10px;
}
.single-product div.product p.price{
  font-family: "Archivo", sans-serif;
  font-weight: 800;
  font-size: 1.85rem;
  color: #fff;
  font-variant-numeric: tabular-nums;
  margin: 0 0 18px;
}
.single-product div.product .woocommerce-product-details__short-description{
  color: var(--ls-mute);
  font-size: 15.5px;
  line-height: 1.7;
}
.single-product div.product .woocommerce-product-details__short-description p{ margin: 0 0 12px; }

.single-product div.product .quantity input.qty{
  background: var(--ls-ink);
  border: 1px solid var(--ls-line);
  color: var(--ls-text);
  padding: 14px 10px;
  border-radius: 2px;
  font-family: "IBM Plex Mono", monospace;
  width: 74px;
  text-align: center;
}
.single-product div.product form.cart{
  display: flex;
  gap: 12px;
  align-items: center;
  margin: 22px 0 0;
  flex-wrap: wrap;
}

.single-product .product_meta{
  margin-top: 24px;
  padding-top: 18px;
  border-top: 1px solid var(--ls-line-soft);
  font-family: "IBM Plex Mono", monospace;
  font-size: 11px;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--ls-faint);
}
.single-product .product_meta a{ color: var(--ls-sky); text-decoration: none; }

.single-product .woocommerce-tabs{ margin-top: 54px; }
.single-product .woocommerce-tabs ul.tabs{
  padding: 0;
  margin: 0 0 26px;
  border-bottom: 1px solid var(--ls-line);
}
.single-product .woocommerce-tabs ul.tabs::before{ display: none; }
.single-product .woocommerce-tabs ul.tabs li{
  background: var(--ls-surface);
  border: 1px solid var(--ls-line);
  border-bottom: 0;
  border-radius: 2px 2px 0 0;
  margin: 0 4px 0 0;
  padding: 0;
}
.single-product .woocommerce-tabs ul.tabs li::before,
.single-product .woocommerce-tabs ul.tabs li::after{ display: none; }
.single-product .woocommerce-tabs ul.tabs li a{
  display: block;
  padding: 12px 20px;
  font-family: "Archivo", sans-serif;
  font-weight: 700;
  font-size: 12px;
  letter-spacing: .09em;
  text-transform: uppercase;
  color: var(--ls-mute);
}
.single-product .woocommerce-tabs ul.tabs li.active{ background: var(--ls-surface-2); }
.single-product .woocommerce-tabs ul.tabs li.active a{ color: var(--ls-azure); }

.single-product .woocommerce-Tabs-panel{ color: var(--ls-mute); font-size: 15.5px; line-height: 1.75; }
.single-product .woocommerce-Tabs-panel h3{
  font-family: "Archivo", sans-serif;
  font-weight: 700;
  font-size: 1rem;
  letter-spacing: .02em;
  text-transform: uppercase;
  color: var(--ls-sky);
  margin: 30px 0 12px;
}
.single-product .woocommerce-Tabs-panel h3:first-child{ margin-top: 0; }
.single-product .woocommerce-Tabs-panel table{
  width: 100%;
  max-width: 620px;
  border-collapse: collapse;
  font-family: "IBM Plex Mono", monospace;
  font-size: 13px;
  border: 1px solid var(--ls-line-soft);
  margin-bottom: 22px;
}
.single-product .woocommerce-Tabs-panel table td{
  padding: 11px 14px;
  border-bottom: 1px solid var(--ls-line-soft);
}
.single-product .woocommerce-Tabs-panel table tr:last-child td{ border-bottom: 0; }
.single-product .woocommerce-Tabs-panel table td:first-child{
  color: var(--ls-faint);
  text-transform: uppercase;
  font-size: 10.5px;
  letter-spacing: .1em;
  width: 42%;
  background: var(--ls-surface);
}
.single-product .woocommerce-Tabs-panel table td:last-child{ color: var(--ls-text); }

.single-product .related > h2,
.single-product .up-sells > h2{
  font-family: "Archivo", sans-serif;
  font-weight: 800;
  font-size: 1.35rem;
  letter-spacing: -.01em;
  text-transform: uppercase;
  color: #fff;
  margin: 54px 0 24px;
  padding-top: 30px;
  border-top: 1px solid var(--ls-line-soft);
}

/* ============================================================
   CART, CHECKOUT, ACCOUNT
   These are where the money is, and they arrive completely unstyled.
   ============================================================ */
.woocommerce table.shop_table{
  border: 1px solid var(--ls-line-soft);
  border-radius: 2px;
  border-collapse: collapse;
  background: var(--ls-surface);
}
.woocommerce table.shop_table th{
  padding: 14px 16px;
  background: var(--ls-surface-2);
  border-bottom: 1px solid var(--ls-line);
  font-family: "IBM Plex Mono", monospace;
  font-size: 11px;
  font-weight: 500;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--ls-sky);
}
.woocommerce table.shop_table td{
  padding: 16px;
  border-top: 0;
  border-bottom: 1px solid var(--ls-line-soft);
  color: var(--ls-mute);
}
.woocommerce table.shop_table tfoot td,
.woocommerce table.shop_table tfoot th{ font-weight: 600; color: var(--ls-text); }
.woocommerce table.shop_table .product-name a{ color: var(--ls-text); text-decoration: none; font-weight: 500; }
.woocommerce table.shop_table .amount{
  font-family: "IBM Plex Mono", monospace;
  color: var(--ls-text);
  font-variant-numeric: tabular-nums;
}
.woocommerce table.shop_table .order-total .amount{
  font-family: "Archivo", sans-serif;
  font-weight: 800;
  font-size: 1.25rem;
  color: #fff;
}

.woocommerce .cart_totals h2,
.woocommerce-checkout h3,
.woocommerce-account h2,
.woocommerce-checkout #order_review_heading{
  font-family: "Archivo", sans-serif;
  font-weight: 800;
  font-size: 1.12rem;
  letter-spacing: -.005em;
  text-transform: uppercase;
  color: #fff;
  margin: 0 0 18px;
}

/* form fields */
.woocommerce form .form-row label,
.woocommerce-page form .form-row label{
  display: block;
  margin-bottom: 7px;
  font-family: "IBM Plex Mono", monospace;
  font-size: 11px;
  letter-spacing: .11em;
  text-transform: uppercase;
  color: var(--ls-faint);
}
.woocommerce form .form-row .required{ color: var(--ls-warn); border: 0; }

.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--default .select2-selection--single{
  background: var(--ls-ink) !important;
  border: 1px solid var(--ls-line) !important;
  border-radius: 2px !important;
  color: var(--ls-text) !important;
  padding: 13px 15px !important;
  font-family: "IBM Plex Sans", sans-serif;
  font-size: 15px;
  height: auto !important;
  transition: border-color .25s var(--ls-ease);
}
.woocommerce form .form-row input.input-text:focus,
.woocommerce form .form-row textarea:focus,
.woocommerce form .form-row select:focus{
  outline: none;
  border-color: var(--ls-azure) !important;
}
.woocommerce form .form-row input.input-text::placeholder,
.woocommerce form .form-row textarea::placeholder{ color: var(--ls-faint); }

.select2-container--default .select2-selection--single .select2-selection__rendered{
  color: var(--ls-text) !important;
  line-height: 1.5 !important;
}
.select2-dropdown{ background: var(--ls-surface-2); border-color: var(--ls-line); color: var(--ls-text); }
.select2-container--default .select2-results__option--highlighted[aria-selected]{ background: var(--ls-blue); }

/* buttons */
.woocommerce a.button,
.woocommerce button.button,
.woocommerce input.button,
.woocommerce a.button.alt,
.woocommerce button.button.alt,
.woocommerce input.button.alt{
  background: var(--ls-blue);
  color: #fff;
  border: 1px solid transparent;
  border-radius: 2px;
  padding: 15px 28px;
  font-family: "Archivo", sans-serif;
  font-weight: 700;
  font-size: 12.5px;
  letter-spacing: .1em;
  text-transform: uppercase;
  transition: background .3s var(--ls-ease), transform .3s var(--ls-ease);
}
.woocommerce a.button:hover,
.woocommerce button.button:hover,
.woocommerce input.button:hover,
.woocommerce a.button.alt:hover,
.woocommerce button.button.alt:hover{
  background: var(--ls-azure);
  color: #fff;
  transform: translateY(-2px);
}
.woocommerce button.button:disabled,
.woocommerce button.button.alt:disabled{
  background: var(--ls-raise);
  color: var(--ls-faint);
  transform: none;
}

#place_order{ width: 100%; padding: 18px 28px !important; font-size: 14px !important; }

.woocommerce .cart_totals,
.woocommerce-checkout #order_review{
  background: var(--ls-surface);
  border: 1px solid var(--ls-line-soft);
  border-radius: 2px;
  padding: 24px;
}
.woocommerce-checkout #payment{ background: transparent; border-radius: 0; }
.woocommerce-checkout #payment ul.payment_methods{
  border-bottom: 1px solid var(--ls-line-soft);
  padding: 0 0 18px;
  margin: 0 0 18px;
}
.woocommerce-checkout #payment ul.payment_methods li{ list-style: none; }
.woocommerce-checkout #payment ul.payment_methods label{
  font-family: "Archivo", sans-serif !important;
  font-size: 14px !important;
  font-weight: 700;
  letter-spacing: .03em !important;
  text-transform: none !important;
  color: var(--ls-text) !important;
}
.woocommerce-checkout #payment div.payment_box{
  background: var(--ls-ink) !important;
  border: 1px solid var(--ls-line);
  border-radius: 2px;
  color: var(--ls-mute);
  font-size: 14px;
  line-height: 1.65;
}
.woocommerce-checkout #payment div.payment_box::before{ display: none; }

@media (min-width: 901px){
  .woocommerce-checkout form.checkout{
    display: grid;
    grid-template-columns: minmax(0, 1.05fr) minmax(0, .95fr);
    gap: 44px;
    align-items: start;
  }
  .woocommerce-checkout form.checkout #customer_details{ grid-column: 1; }
  .woocommerce-checkout form.checkout #order_review_heading,
  .woocommerce-checkout form.checkout #order_review{ grid-column: 2; }
  .woocommerce-checkout form.checkout .col2-set .col-1,
  .woocommerce-checkout form.checkout .col2-set .col-2{ width: 100%; float: none; }
}

/* account */
.woocommerce-account .woocommerce-MyAccount-navigation ul{ list-style: none; margin: 0; padding: 0; }
.woocommerce-account .woocommerce-MyAccount-navigation li{ border-bottom: 1px solid var(--ls-line-soft); }
.woocommerce-account .woocommerce-MyAccount-navigation li a{
  display: block;
  padding: 13px 4px;
  color: var(--ls-mute);
  text-decoration: none;
  font-family: "Archivo", sans-serif;
  font-size: 13px;
  font-weight: 600;
  letter-spacing: .06em;
  text-transform: uppercase;
  transition: color .25s var(--ls-ease), padding-left .25s var(--ls-ease);
}
.woocommerce-account .woocommerce-MyAccount-navigation li a:hover,
.woocommerce-account .woocommerce-MyAccount-navigation li.is-active a{
  color: var(--ls-azure);
  padding-left: 6px;
}

/* notices */
.woocommerce-message,
.woocommerce-info,
.woocommerce-error{
  border-radius: 2px;
  padding: 16px 20px 16px 46px;
  font-size: 14.5px;
}
.woocommerce-message::before,
.woocommerce-info::before,
.woocommerce-error::before{ top: 17px; left: 18px; }

.cart-empty{
  font-family: "Archivo", sans-serif;
  font-weight: 700;
  text-transform: uppercase;
  color: var(--ls-text);
}

/* ============================================================
   THEME BUILDER WRAPPER
   Hello Elementor renders a Theme Builder template inside
   .elementor.elementor-bc-flex-widget, which is display:flex with a row
   direction. A top-level container therefore becomes a flex item and shrinks
   to its content instead of filling the page — the product template rendered
   at 607px inside a 1265px wrapper. Blocking the wrapper is simpler and safer
   than fighting it with widths on every template.
   ============================================================ */
body.single-product .elementor.elementor-bc-flex-widget,
body.tax-product_cat .elementor.elementor-bc-flex-widget{
  display: block;
}
body.single-product .elementor.elementor-bc-flex-widget > .e-con,
body.tax-product_cat .elementor.elementor-bc-flex-widget > .e-con{
  width: 100%;
  max-width: none;
}

/* The template owns the page shell now, so drop the generic padding that
   would otherwise double up on it. */
body.single-product.elementor-page .site-main{
  max-width: none;
  padding: 0;
}

/* ============================================================
   RESPONSIVE
   ============================================================ */
@media (max-width: 782px){
  :is(.entry-content, .page-content){ font-size: 15.5px; line-height: 1.7; }
  :is(.entry-content, .page-content) h2{ margin-top: 36px; padding-top: 22px; }
  :is(.entry-content, .page-content) :is(th, td){ padding: 11px 12px; }
  .single-product div.product form.cart{ width: 100%; }
  .single-product div.product form.cart .button{ flex: 1; }
  .woocommerce table.shop_table :is(th, td){ padding: 12px 10px; }
}

/* The related widget prints its own "Related products" heading directly
   inside section.related; the template already provides a styled one. */
body.single-product .elementor-widget-woocommerce-product-related section.related > h2{
  display: none;
}

/* ============================================================
   2026-09-05 CART + CHECKOUT MODERNISATION
   Appended last on purpose: these override the base rules above.
   ============================================================ */

/* Hello Elementor's reset paints every anchor #CC3366; brand links are
   violet, warming to azure on hover. Buttons/menus set their own colours
   at higher specificity and are unaffected. */
a{ color: #A78BFA; }
a:hover{ color: var(--ls-azure); }

/* ---- CART: two-column grid, items left, sticky summary right ---- */
@media (min-width: 981px){
  .woocommerce-cart .page-content .woocommerce{
    display: grid;
    grid-template-columns: minmax(0, 1fr) 380px;
    gap: 36px;
    align-items: start;
  }
  .woocommerce-cart .page-content .woocommerce > .woocommerce-notices-wrapper{ grid-column: 1 / -1; }
  .woocommerce-cart .woocommerce-cart-form{ grid-column: 1; margin: 0; }
  .woocommerce-cart .cart-collaterals{ grid-column: 2; position: sticky; top: 24px; }
}
.woocommerce-cart .woocommerce-cart-form table.shop_table{ width: 100%; }
.woocommerce .cart-collaterals .cart_totals{ float: none; width: 100%; }
.woocommerce .cart-collaterals .cross-sells{ display: none; }

/* product cells */
.woocommerce table.shop_table td.product-thumbnail img{
  width: 64px;
  display: block;
  border: 1px solid var(--ls-line-soft);
  border-radius: 3px;
  background: var(--ls-ink);
}
.woocommerce table.shop_table .product-name a{ color: var(--ls-text); }
.woocommerce table.shop_table .product-name a:hover{ color: var(--ls-azure); }

/* the quantity input never sits in a .form-row, so style it directly */
.woocommerce .quantity .qty{
  background: var(--ls-ink);
  border: 1px solid var(--ls-line);
  border-radius: 2px;
  color: var(--ls-text);
  width: 64px;
  padding: 10px 4px;
  font-family: "IBM Plex Mono", monospace;
  font-variant-numeric: tabular-nums;
}
.woocommerce .quantity .qty:focus{ outline: none; border-color: var(--ls-azure); }

/* remove control: quiet ring, alarming only on hover */
.woocommerce a.remove{
  width: 26px;
  height: 26px;
  line-height: 23px;
  font-size: 16px;
  font-weight: 400;
  color: var(--ls-faint) !important;
  border: 1px solid var(--ls-line-soft);
  border-radius: 50%;
  transition: all .25s var(--ls-ease);
}
.woocommerce a.remove:hover{
  background: var(--ls-stop);
  border-color: var(--ls-stop);
  color: #fff !important;
}

/* coupon + update row */
.woocommerce table.shop_table td.actions{ padding: 16px; background: var(--ls-surface-2); }
.woocommerce table.shop_table td.actions .coupon .input-text{
  background: var(--ls-ink);
  border: 1px solid var(--ls-line);
  border-radius: 2px;
  color: var(--ls-text);
  padding: 12px 14px;
  width: 170px;
  margin-right: 8px;
  font-family: "IBM Plex Sans", sans-serif;
  font-size: 13.5px;
}
.woocommerce table.shop_table td.actions .coupon .input-text::placeholder{ color: var(--ls-faint); }
.woocommerce table.shop_table td.actions .coupon .input-text:focus{ outline: none; border-color: var(--ls-azure); }

/* summary card: same panel language as the rest of the site */
.woocommerce .cart_totals,
.woocommerce-checkout #order_review{
  position: relative;
  background: linear-gradient(180deg, var(--ls-surface-2), var(--ls-ink-2));
  border: 1px solid var(--ls-line);
  border-radius: 3px;
  padding: 26px;
  box-shadow: 0 18px 40px rgba(2,6,12,.45);
}
.woocommerce .cart_totals::before,
.woocommerce-checkout #order_review::before{
  content: "";
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 1px;
  background: linear-gradient(90deg, transparent, rgba(70,166,245,.35), transparent);
}
.woocommerce .cart_totals h2{ margin-top: 0; }

/* tables inside the summary cards go frameless */
.woocommerce .cart_totals table.shop_table,
.woocommerce-checkout #order_review table.shop_table{
  background: transparent;
  border: 0;
  width: 100%;
  margin: 0 0 6px;
}
.woocommerce .cart_totals table.shop_table th,
.woocommerce .cart_totals table.shop_table td,
.woocommerce-checkout #order_review table.shop_table th,
.woocommerce-checkout #order_review table.shop_table td{
  background: transparent;
  border: 0;
  border-bottom: 1px solid var(--ls-line-soft);
  padding: 13px 0;
}
.woocommerce .cart_totals table.shop_table th,
.woocommerce-checkout #order_review table.shop_table thead th{
  font-family: "IBM Plex Mono", monospace;
  font-size: 11px;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--ls-faint);
  text-align: left;
}
.woocommerce .cart_totals table.shop_table td{ text-align: right; }
.woocommerce .cart_totals tr:last-child th,
.woocommerce .cart_totals tr:last-child td,
.woocommerce-checkout #order_review tr.order-total th,
.woocommerce-checkout #order_review tr.order-total td{ border-bottom: 0; }

.woocommerce .wc-proceed-to-checkout{ padding: 8px 0 0; }
.woocommerce .wc-proceed-to-checkout a.checkout-button{
  display: block;
  width: 100%;
  text-align: center;
  padding: 17px 20px;
  font-size: 13.5px;
  margin: 0;
}

/* ---- CHECKOUT ---- */
.woocommerce-form-coupon-toggle .woocommerce-info{
  background: var(--ls-surface);
  border: 1px solid var(--ls-line-soft);
  border-top: 2px solid var(--ls-blue);
  color: var(--ls-mute);
}
.woocommerce form.checkout_coupon{
  background: var(--ls-surface);
  border: 1px solid var(--ls-line-soft) !important;
  border-radius: 3px;
  padding: 20px !important;
}

/* two fields per row stays intact even where the reset kills floats */
.woocommerce-checkout .form-row-first,
.woocommerce-checkout .form-row-last{ width: 48.5%; }
.woocommerce-checkout .form-row{ margin-bottom: 14px; }

@media (min-width: 901px){
  .woocommerce-checkout form.checkout{
    grid-template-columns: minmax(0, 1fr) 420px;
  }
  .woocommerce-checkout form.checkout #order_review{ position: sticky; top: 24px; }
}

/* order review internals */
.woocommerce-checkout #order_review td.product-name{
  color: var(--ls-text);
  font-size: 14px;
}
.woocommerce-checkout #order_review .product-quantity{ color: var(--ls-faint); }
.woocommerce-checkout #payment{ background: transparent !important; }
.woocommerce-checkout #payment ul.payment_methods{ border-top: 0; padding-top: 4px; }
.woocommerce-checkout #payment div.payment_box p{ margin: 0 0 8px; }
.woocommerce-checkout .woocommerce-privacy-policy-text p,
.woocommerce-checkout .woocommerce-terms-and-conditions-wrapper{
  font-size: 12.5px;
  line-height: 1.6;
  color: var(--ls-faint);
}
#place_order{ margin-top: 6px; }

/* keep the compliance furniture compact inside the order card */
#order_review .ls-sealed-notice{ font-size: .8rem; }
#order_review .ls-consent label{ font-size: .82rem; }

/* The 74ch prose cap must not squeeze the store screens: the woocommerce
   wrapper gets the full shell width back. */
:is(.entry-content, .page-content) > .woocommerce{ max-width: none; }

/* summary tables must never outgrow their card */
.woocommerce .cart_totals table.shop_table,
.woocommerce-checkout #order_review table.shop_table{
  table-layout: fixed;
  width: 100% !important;
  min-width: 0;
}
.woocommerce .cart_totals table.shop_table th{ width: 44%; }

/* the checkout grid: billing spans both rows, so the order card sits
   directly under its heading instead of below the whole billing column */
@media (min-width: 901px){
  .woocommerce-checkout form.checkout{ grid-template-rows: auto 1fr; }
  .woocommerce-checkout form.checkout #customer_details{ grid-row: 1 / span 2; }
  .woocommerce-checkout form.checkout #order_review_heading{ grid-row: 1; align-self: start; margin-bottom: 0; }
  .woocommerce-checkout form.checkout #order_review{ grid-row: 2; align-self: start; margin-top: 18px; }
}

/* ---- cart on phones: the table becomes stacked rows ---- */
@media (max-width: 768px){
  .woocommerce-cart table.shop_table thead{ display: none; }
  .woocommerce-cart table.shop_table,
  .woocommerce-cart table.shop_table tbody{ display: block; width: 100%; }
  .woocommerce-cart table.shop_table tr{
    display: block;
    border-bottom: 1px solid var(--ls-line-soft);
    padding: 6px 0;
  }
  .woocommerce-cart table.shop_table td{
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 12px;
    border: 0;
    padding: 8px 14px;
    text-align: right;
  }
  .woocommerce-cart table.shop_table td::before{
    content: attr(data-title);
    font-family: "IBM Plex Mono", monospace;
    font-size: 10px;
    letter-spacing: .1em;
    text-transform: uppercase;
    color: var(--ls-faint);
  }
  .woocommerce-cart table.shop_table td.product-remove,
  .woocommerce-cart table.shop_table td.product-thumbnail{ justify-content: flex-start; }
  .woocommerce-cart table.shop_table td.product-remove::before,
  .woocommerce-cart table.shop_table td.product-thumbnail::before{ display: none; }
  .woocommerce-cart table.shop_table td.actions{ display: block; text-align: left; }
  .woocommerce-cart table.shop_table td.actions::before{ display: none; }
  .woocommerce-cart table.shop_table td.actions .coupon{
    display: flex;
    gap: 8px;
    margin-bottom: 10px;
  }
  .woocommerce-cart table.shop_table td.actions .coupon .input-text{
    flex: 1;
    width: auto;
    margin: 0;
  }
  .woocommerce-cart table.shop_table td.actions > .button{ width: 100%; }
}

/* the mobile layout viewport must never be given a reason to expand */
@media (max-width: 768px){
  .woocommerce-cart .page-content .woocommerce,
  .woocommerce-cart .woocommerce-cart-form,
  .woocommerce-cart table.shop_table,
  .woocommerce-cart table.shop_table tbody,
  .woocommerce-cart table.shop_table tr,
  .woocommerce-cart table.shop_table td,
  .woocommerce-checkout form.checkout,
  .woocommerce-checkout #order_review{
    max-width: 100% !important;
    min-width: 0 !important;
    width: auto !important;
  }
  .woocommerce-cart table.shop_table td.actions .coupon .input-text{ width: 120px; }
  body{ overflow-x: hidden; }
}

/* long taxonomy/product names must never widen the phone viewport */
@media (max-width: 767px){
  body.single-product .woocommerce-breadcrumb{
    overflow-wrap: anywhere;
    max-width: 100%;
  }
  body.single-product .e-con,
  body.single-product .e-con-inner,
  body.single-product .elementor-widget{
    min-width: 0;
    max-width: 100%;
  }
}

/* ============================================================
   CONTACT PAGE
   Info cards on the left, the message form in a lit panel on the
   right. Single column on phones.
   ============================================================ */
.ls-contact-grid{
  display: grid;
  grid-template-columns: 1fr;
  gap: 26px;
  margin: 34px 0 10px;
}
@media (min-width: 900px){
  .ls-contact-grid{ grid-template-columns: 1fr 1fr; gap: 44px; align-items: start; }
}
.ls-contact-info{ display: grid; gap: 16px; }
.ls-info-card{
  padding: 20px 22px;
  background: var(--ls-surface);
  border: 1px solid var(--ls-line-soft);
  border-radius: 3px;
}
.ls-info-card__k{
  margin-bottom: 8px;
  font-family: "IBM Plex Mono", ui-monospace, monospace;
  font-size: 10px;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--ls-azure);
}
.ls-info-card__v{
  display: block;
  font-family: "Archivo", sans-serif;
  font-weight: 700;
  font-size: 17px;
  color: #fff;
  text-decoration: none;
  overflow-wrap: anywhere;
}
a.ls-info-card__v:hover{ color: var(--ls-azure); }
.ls-info-card__v--sm{ font-size: 15px; line-height: 1.5; }
.ls-info-card p{
  margin: 10px 0 0;
  font-size: .88rem;
  line-height: 1.6;
  color: var(--ls-mute);
}
.ls-info-card--warn{
  border-left: 2px solid var(--ls-warn);
}
.ls-info-card--warn .ls-info-card__k{ color: var(--ls-warn); }
.ls-info-card--warn strong{ color: var(--ls-text); }

.ls-contact-formcol{
  position: relative;
  padding: 30px 32px 34px;
  background: linear-gradient(180deg, var(--ls-surface-2), var(--ls-surface));
  border: 1px solid var(--ls-line);
  border-radius: 3px;
  overflow: hidden;
}
.ls-contact-formcol::before{
  content: "";
  position: absolute;
  inset: 0 0 auto 0;
  height: 2px;
  background: linear-gradient(90deg, transparent, var(--ls-azure), transparent);
}
:is(.entry-content, .page-content) .ls-contact-formcol h2{
  margin: 0 0 6px;
  padding: 0;
  border: 0;
  font-size: 24px;
}
.ls-contact-formcol > p{
  margin: 0 0 18px;
  color: var(--ls-faint);
  font-size: .88rem;
}
.ls-contact-formcol .lsp-contact{ max-width: none; }
.ls-contact-formcol .lsp-contact button{ width: 100%; padding: 16px 30px; }
@media (max-width: 767px){
  .ls-contact-formcol{ padding: 24px 18px 26px; }
}

/* the contact grid uses the full rail, not the 74ch text measure */
:is(.entry-content, .page-content) > .ls-contact-grid{ max-width: none; }

/* form fields match the button width exactly */
.ls-contact-formcol .lsp-contact p{ width: 100%; margin: 0 0 16px; }
.ls-contact-formcol .lsp-contact label{ display: block; width: 100%; }
.ls-contact-formcol .lsp-contact input[type="text"],
.ls-contact-formcol .lsp-contact input[type="email"],
.ls-contact-formcol .lsp-contact textarea{
  width: 100% !important;
  max-width: none !important;
  box-sizing: border-box;
}
