/* WP-specific overrides — loaded AFTER design.css.
 *
 * The design CSS is an SPA: `.page` is the section wrapper (display:none unless
 * `.on`) and `.search`/`.pop`/`.satc`/`.scrim` are full-screen overlays. WordPress
 * body_class() puts `page` on every static Page and `search` on results pages, so
 * `<body class="page">` matched `.page{display:none}` and the whole page rendered
 * invisible (0-height). These resets force any such collision on <body> back to a
 * normal document flow. The design's overlay DIVs (div.search, div.pop…) keep their
 * own rules untouched — only <body> is corrected. */
body.page,
body.search,
body.pop,
body.satc,
body.scrim,
body.mini,
body.band,
body.hero {
  display: block;
  position: static;
  inset: auto;
  z-index: auto;
  padding: 0;
  padding-top: 66px;      /* matches the design body rule (fixed header height) */
  background: var(--bg);
  align-items: initial;
  justify-content: initial;
}

/* ============================================================================
 * Cart + Checkout — restyle Woo's functional markup into the Jauki design.
 * The templates/fields/payment/place-order stay Woo (money path untouched);
 * only presentation is themed here. (P5 validates the money path / G-CHK.)
 * ==========================================================================*/
.woocommerce-cart .entry-title,
.woocommerce-checkout .entry-title { font-family:"Vollkorn",Georgia,serif; }

/* 2-column layouts */
.woocommerce-cart .woocommerce { display:grid; grid-template-columns:minmax(0,1fr) 360px; gap:30px; align-items:start; }
.woocommerce-cart .woocommerce-notices-wrapper { grid-column:1 / -1; }
.woocommerce-checkout form.checkout.woocommerce-checkout { display:grid; grid-template-columns:minmax(0,1fr) 400px; gap:16px 30px; align-items:start; }
.woocommerce-checkout #customer_details { grid-column:1; grid-row:1 / span 2; }
.woocommerce-checkout #order_review_heading { grid-column:2; grid-row:1; margin:0; font-family:"Vollkorn",serif; }
.woocommerce-checkout #order_review { grid-column:2; grid-row:2; }
/* DEFECT D4 (P2): this query was 900px — a THIRD breakpoint that desynchronised
   cart/checkout from the rest of the system. design.css declares exactly two
   (980 and 560), so between 901 and 980 the page chrome had already gone tablet
   while cart and checkout were still two-column, squeezing the order-summary
   card. Raised to 980 so the whole system collapses in one step. Nothing else in
   this block depended on 900 specifically (checked rule by rule).
   D4b: `.cart-collaterals{grid-column:2}` (further down this file) was NOT reset
   here, so on a collapsed single-track grid it created an IMPLICIT second column
   and the cart form kept rendering in a squeezed left column. MEASURED at 390px
   with the legacy inline CSS suppressed: the cart form was 187px wide with its
   right edge at 437px against a 390px viewport (68px of document overflow). */
@media(max-width:980px){
  .woocommerce-cart .woocommerce,
  .woocommerce-checkout form.checkout.woocommerce-checkout { grid-template-columns:1fr; }
  .woocommerce-checkout #order_review_heading,
  .woocommerce-checkout #order_review { grid-column:1; }
  .woocommerce-cart .cart-collaterals { grid-column:1; }
}

/* cart table -> clean rows */
.woocommerce table.cart { border:1px solid var(--bor); border-radius:16px; overflow:hidden; background:var(--wht); border-collapse:separate; }
.woocommerce table.cart th { background:var(--oat); color:var(--soft); font-weight:800; font-size:12px; text-transform:uppercase; letter-spacing:.06em; padding:12px 14px; }
.woocommerce table.cart td { padding:14px; border-top:1px solid var(--bor); vertical-align:middle; }
/* Cart thumbnails: force a fixed 64px render. WooCommerce's own
   `.woocommerce table.cart img{width:32px}` shares our specificity and can win
   on load-order, and WP may serve a tiny fallback size for some products, so
   pin the box hard and let object-fit crop whatever intrinsic size arrives. */
.woocommerce table.cart td.product-thumbnail { width:80px; }
.woocommerce table.cart td.product-thumbnail img,
.woocommerce #content table.cart td.product-thumbnail img { width:64px !important; height:64px !important; max-width:64px !important; min-width:64px; object-fit:cover; border-radius:10px; display:block; }
/* Pin the cart table to its grid column (auto layout let the wide thumbnail
   column push the table under the summary card). Fixed layout distributes the
   fixed columns and lets the product name wrap in whatever space is left. */
.woocommerce-cart table.cart { table-layout:fixed; width:100%; }
.woocommerce-cart table.cart th.product-remove,   .woocommerce-cart table.cart td.product-remove   { width:34px; }
.woocommerce-cart table.cart th.product-thumbnail, .woocommerce-cart table.cart td.product-thumbnail { width:78px; }
.woocommerce-cart table.cart th.product-price,     .woocommerce-cart table.cart td.product-price,
.woocommerce-cart table.cart th.product-quantity,  .woocommerce-cart table.cart td.product-quantity { width:82px; }
.woocommerce-cart table.cart th.product-subtotal,  .woocommerce-cart table.cart td.product-subtotal { width:92px; }
.woocommerce-cart table.cart td.product-name { word-break:break-word; }
.woocommerce .quantity input.qty { width:64px; padding:8px; border:1px solid var(--bor); border-radius:8px; background:var(--bg); }
.woocommerce a.remove { color:var(--acd) !important; }

/* summary / totals cards */
.woocommerce .cart_totals,
.woocommerce-checkout #order_review { background:var(--wht); border:1px solid var(--bor); border-radius:16px; padding:20px; }
.woocommerce .cart_totals h2,
.woocommerce-checkout #order_review_heading { font-size:17px; }
.woocommerce .cart_totals table,
.woocommerce-checkout .shop_table { border:0; }
.woocommerce .cart_totals th, .woocommerce .cart_totals td,
.woocommerce-checkout .shop_table th, .woocommerce-checkout .shop_table td { border:0; border-top:1px solid var(--bor); padding:10px 0; }
.woocommerce .order-total .amount { color:var(--ink); font-size:19px; }

/* coupon + free shipping wording */
.woocommerce .coupon .input-text { border:1px solid var(--bor); border-radius:999px; padding:11px 16px; background:var(--bg); }
.woocommerce .cart_totals .free-shipping,
.woocommerce-checkout .free { color:var(--sage); font-weight:800; }

/* form fields */
.woocommerce form .form-row input.input-text,
.woocommerce form .form-row textarea,
.woocommerce-checkout select,
.select2-container .select2-selection { border:1px solid var(--bor) !important; border-radius:10px !important; padding:12px 14px !important; background:var(--wht) !important; font-family:inherit; min-height:46px; }
.woocommerce form .form-row label { font-weight:700; color:var(--ink); font-size:13px; }
.woocommerce-checkout #customer_details { background:var(--wht); border:1px solid var(--bor); border-radius:16px; padding:20px; }
.woocommerce-checkout h3 { font-family:"Vollkorn",serif; font-size:17px; margin:6px 0 12px; }

/* payment box */
.woocommerce-checkout #payment { background:transparent; border-radius:12px; }
.woocommerce-checkout #payment div.payment_box { background:var(--oat); border-radius:10px; }

/* ---- Checkout: proto import (form-checkout.php reproduces the prototype's
   .cgrid/.ckform/.csum/.ropt structure; design.css styles those 1:1). Only the
   Woo-native payment list needs mapping onto the proto's .ropt look, plus a few
   glue rules so Woo's billing .form-row fields sit inside the .ckform flow. ---- */
.ryytas-checkout .cgrid { margin-top:6px; }
/* WooCommerce forces `form.checkout { display:grid }`, which makes our .cgrid a
   grid ITEM sized to ~min-content (collapsing it to ~670px and cramping both
   columns — coupon input truncated, item names over-wrapped). Force the form back
   to block so .cgrid is the grid and fills the full 1100px content width 1:1 with
   the prototype. */
.ryytas-checkout.checkout, form.checkout.ryytas-checkout { display:block !important; }
.ryytas-checkout .cgrid { width:100%; }
/* Order-summary product thumbnails (proto .cline img = 74px square). A Woo/core img
   rule was collapsing them to ~13px; pin the proto size, scoped to the summary. */
.ryytas-checkout .csum .cline img {
  width:64px !important; height:64px !important; min-width:64px; max-width:64px !important;
  object-fit:cover; border-radius:10px; display:block; flex:0 0 auto; aspect-ratio:1/1;
}
/* In-summary coupon (.nlrow): keep input + button on one line, input takes the slack. */
.ryytas-checkout .csum .nlrow { display:flex; gap:8px; align-items:center; }
.ryytas-checkout .csum .nlrow input { flex:1 1 auto; min-width:0; margin:0; }
.ryytas-checkout .csum .nlrow .btn { flex:0 0 auto; white-space:nowrap; }
/* Woo billing/shipping/additional field-group headings are replaced by our own
   "2 · Kontaktinė informacija" step heading — hide every heading inside the block. */
.ryytas-checkout #customer_details h3,
.ryytas-checkout #customer_details .woocommerce-additional-fields > h3 { display:none; }
/* Shipping selector lives in step 1 (.ropt cards); hide the duplicate selector +
   row that WooCommerce renders inside the summary review-order table. */
.ryytas-checkout .csum tr.woocommerce-shipping-totals,
.ryytas-checkout .csum #shipping_method { display:none; }
.ryytas-checkout #customer_details .woocommerce-billing-fields__field-wrapper,
.ryytas-checkout #customer_details .woocommerce-additional-fields__field-wrapper { display:flex; flex-wrap:wrap; gap:10px; }
.ryytas-checkout #customer_details p.form-row { margin:0; flex:1 1 100%; }
.ryytas-checkout #customer_details p.form-row-first { flex:1 1 calc(50% - 5px); }
.ryytas-checkout #customer_details p.form-row-last { flex:1 1 calc(50% - 5px); }
.ryytas-checkout #customer_details p.form-row label { font-weight:600; font-size:12.5px; color:var(--soft); margin:0 0 3px; }
/* Pair El.paštas + Telefonas 50/50 (proto .frow row); hide the optional company
   field (absent from the prototype). CSS-only — does not affect submission. */
.ryytas-checkout #customer_details #billing_email_field,
.ryytas-checkout #customer_details #billing_phone_field { flex:1 1 calc(50% - 5px); }
.ryytas-checkout #customer_details #billing_company_field { display:none; }
/* Remove stray legacy checkboxes injected by old custom-css-js snippets that are
   NOT in the prototype: a duplicate newsletter opt-in (#newsletter_signup) and a
   mislabeled "prekė gali vėluoti" consent (#special_offers_signup). Both optional,
   so hiding is safe. The proto keeps only: terms + the Klaviyo newsletter. */
.ryytas-checkout p:has(#newsletter_signup),
.ryytas-checkout p:has(#special_offers_signup),
.ryytas-checkout label:has(#newsletter_signup),
.ryytas-checkout label:has(#special_offers_signup),
.ryytas-checkout #newsletter_signup,
.ryytas-checkout #special_offers_signup { display:none !important; }
/* Newsletter opt-in: inline checkbox + label on one line, left-aligned (proto .chk),
   instead of a checkbox floating centered above its label. */
.ryytas-checkout #customer_details p.form-row#kl_newsletter_checkbox_field,
.ryytas-checkout #customer_details p.form-row.woocommerce-form__label-for-checkbox,
.ryytas-checkout #customer_details p.form-row:has(input[type="checkbox"]) {
  flex:1 1 100% !important; display:flex; align-items:center; margin-top:4px;
}
.ryytas-checkout #customer_details p.form-row label.checkbox,
.ryytas-checkout #customer_details p.form-row .woocommerce-form__label-for-checkbox,
.ryytas-checkout #customer_details p.form-row:has(input[type="checkbox"]) label {
  display:flex !important; align-items:center; gap:9px; margin:0 !important;
  font-weight:500 !important; font-size:13.5px !important; color:var(--ink) !important;
  text-align:left; cursor:pointer;
}
.ryytas-checkout #customer_details p.form-row input[type="checkbox"] {
  width:18px; height:18px; flex:0 0 auto; margin:0; accent-color:var(--ac);
}
/* Terms + ALL checkout checkboxes: a full-width input rule was stretching the
   checkbox to ~607px (the "red box" over the label). Pin every checkout checkbox to
   18px and lay the terms row out inline (checkbox + text on one line). */
.ryytas-checkout input[type="checkbox"] {
  width:18px !important; height:18px !important; min-width:18px; flex:0 0 auto;
  margin:0 8px 0 0; accent-color:var(--ac); vertical-align:middle; display:inline-block;
}
.ryytas-checkout p.form-row.validate-required,
.ryytas-checkout .woocommerce-terms-and-conditions-wrapper p.form-row {
  display:flex; align-items:center; border:0; padding:0; text-align:left; margin:8px 0 0;
}
.ryytas-checkout label.woocommerce-form__label-for-checkbox {
  display:flex; align-items:center; gap:8px; margin:0 !important; cursor:pointer;
  font-weight:500 !important; font-size:13.5px !important; color:var(--ink) !important; text-align:left;
}
.ryytas-checkout .woocommerce-terms-and-conditions-checkbox-text { display:inline; }
.ryytas-checkout #customer_details .form-row input.input-text,
.ryytas-checkout #customer_details .form-row textarea,
.ryytas-checkout #customer_details .form-row .select2-container { border:1.5px solid var(--bor) !important; border-radius:12px !important; padding:12px 14px !important; background:var(--wht) !important; min-height:auto; }
/* Map Woo's native payment list onto the proto .ropt card look */
.ryytas-checkout #payment { background:transparent; padding:0; }
.ryytas-checkout #payment ul.payment_methods { border:0 !important; background:transparent !important; padding:0; margin:0; list-style:none; display:flex; flex-direction:column; gap:10px; }
.ryytas-checkout #payment ul.payment_methods li.wc_payment_method {
  border:1.5px solid var(--bor); border-radius:13px; background:var(--wht);
  padding:12px 14px; margin:0; display:flex; align-items:center; flex-wrap:wrap; gap:10px;
  font-size:14px; font-weight:600; cursor:pointer; transition:border-color .15s; }
.ryytas-checkout #payment ul.payment_methods li.wc_payment_method:has(input:checked) { border-color:var(--ac); }
.ryytas-checkout #payment ul.payment_methods li label { margin:0; font-weight:600; color:var(--ink); cursor:pointer; }
.ryytas-checkout #payment ul.payment_methods li .payment_box { flex:1 0 100%; background:var(--oat); border-radius:10px; margin:6px 0 0; font-size:13px; }
.ryytas-checkout #payment ul.payment_methods li img { max-height:22px; width:auto; margin-left:auto; }
.ryytas-checkout #payment .place-order { padding:0; margin:14px 0 0; }
/* shipping cards rendered natively as .ropt in the template need no extra rules */

/* all Woo buttons -> design coral pill */
.woocommerce a.button, .woocommerce button.button, .woocommerce input.button,
.woocommerce #respond input#submit, .woocommerce-checkout #place_order,
.wc-proceed-to-checkout .checkout-button {
  background:var(--ac) !important; color:#fff !important; border:0 !important;
  border-radius:999px !important; font-weight:800 !important; font-family:inherit !important;
  padding:13px 26px !important; font-size:14px !important; transition:background .15s;
}
.woocommerce a.button:hover, .woocommerce button.button:hover, .woocommerce input.button:hover,
.woocommerce-checkout #place_order:hover, .wc-proceed-to-checkout .checkout-button:hover { background:var(--acd) !important; }
.woocommerce-checkout #place_order, .wc-proceed-to-checkout .checkout-button { width:100%; text-align:center; font-size:15px !important; padding:15px 26px !important; }
.woocommerce .button.alt.disabled { opacity:.6; }

/* cart totals card was hidden by a leftover rule — restore + place right column */
.woocommerce .cart-collaterals { display:block !important; grid-column:2; float:none; width:auto; }
.woocommerce .cart-collaterals .cross-sells { margin-top:18px; }
.woocommerce .cart_totals h2 { font-family:"Vollkorn",serif; }
/* the side-cart / overlays must honour the hidden attribute (design.css forces display) */
.mini[hidden], .cart-widget-side[hidden], .scrim[hidden], .search[hidden], .pop[hidden] { display:none !important; }

/* ---- Generic / legal page content (Prekių pristatymas, policies, taisyklės, etc.)
   Legacy WP editor content renders through page.php > .entry with no type scale;
   give it a themed document look: constrained measure, Vollkorn heads, Hanken body. */
.page-body { max-width: 820px; margin: 0 auto; }
/* Cart & checkout are wide two-column commerce layouts, NOT prose — release
   them from the 820px reading measure so the items table isn't crushed. */
.woocommerce-cart .page-body, .woocommerce-checkout .page-body { max-width: none; }
.page-body > h1.ds { margin: 0 0 20px; }
.entry { font-family: "Hanken Grotesk", system-ui, sans-serif; color: var(--ink); font-size: 15.5px; line-height: 1.72; }
.entry > *:first-child { margin-top: 0; }
.entry h1, .entry h2, .entry h3, .entry h4 { font-family: "Vollkorn", Georgia, serif; color: var(--ink); line-height: 1.28; margin: 28px 0 10px; }
.entry h1 { font-size: 25px; }
.entry h2 { font-size: 20px; }
.entry h3 { font-size: 17px; }
.entry h4 { font-size: 15.5px; }
.entry p { margin: 0 0 13px; }
.entry ul, .entry ol { margin: 0 0 15px; padding-left: 22px; }
.entry li { margin: 5px 0; }
.entry li::marker { color: var(--sage); }
.entry a { color: var(--acd); text-decoration: underline; text-underline-offset: 2px; }
.entry strong, .entry b { color: var(--ink); font-weight: 600; }
.entry img { max-width: 100%; height: auto; border-radius: 12px; }
.entry table { width: 100%; border-collapse: collapse; margin: 0 0 16px; }
.entry th, .entry td { border: 1px solid var(--bor); padding: 9px 12px; text-align: left; }

/* ---- Cart / checkout parity with the design mock ----
   The design shows text-only shipping labels; the MultiParcels plugin injects
   100px carrier brand logos that bloat and misalign the shipping list. Hide them. */
.multiparcels_carrier_icon,
img.multiparcels_carrier_icon { display: none !important; }
/* tidy the shipping method rows (radio · label · price) */
#shipping_method li, .woocommerce-shipping-methods li { list-style: none; margin: 6px 0; display: flex; align-items: center; gap: 8px; }
#shipping_method li label, .woocommerce-shipping-methods li label { margin: 0; }
.shop_table .shipping .woocommerce-shipping-methods { margin: 0; padding: 0; }

/* cart cross-sell ("Dažnai perkama kartu") — compact stacked card in the summary
   column, not Woo's cramped side-by-side float. */
.woocommerce-cart .cart-collaterals .cross-sells,
.woocommerce-cart .cart-collaterals .cart_totals { float: none !important; width: 100% !important; }
.woocommerce-cart .cart-collaterals .cross-sells { margin: 0 0 20px !important; }
.woocommerce-cart .cross-sells > h2 { font-family:"Vollkorn",serif; font-size:16px; margin:0 0 10px; }
.woocommerce-cart .cross-sells ul.products { display:block !important; margin:0; }
.woocommerce-cart .cross-sells ul.products li.product { width:100% !important; margin:0 !important; float:none !important;
  display:grid; grid-template-columns:56px 1fr auto; align-items:center; gap:10px;
  background:var(--wht); border:1px solid var(--bor); border-radius:14px; padding:10px 12px; }
.woocommerce-cart .cross-sells ul.products li.product img { width:56px !important; height:56px; object-fit:cover; border-radius:10px; margin:0 !important; }
.woocommerce-cart .cross-sells ul.products li.product .woocommerce-loop-product__title { font-size:12.5px; padding:0; font-weight:600; line-height:1.25; }
.woocommerce-cart .cross-sells ul.products li.product .price { font-size:12px; grid-column:2; }
.woocommerce-cart .cross-sells ul.products li.product .button { grid-column:3; grid-row:1 / span 2; margin:0; padding:8px 12px; font-size:12px; white-space:nowrap; }
.woocommerce-cart .cross-sells ul.products li.product .star-rating { display:none; }

/* proto-style cart cross-sell replaces Woo's default block */
.woocommerce-cart .cart-collaterals .cross-sells { display: none !important; }
.woocommerce-cart .xsell { margin: 16px 0 0; }
.woocommerce-cart .xsell .lbl { display:block; font-size:11px; letter-spacing:.08em; text-transform:uppercase; color:var(--soft); margin-bottom:10px; }
.woocommerce-cart .xrow { display:grid; grid-template-columns:64px 1fr auto; align-items:center; gap:12px; background:var(--wht); border:1px solid var(--bor); border-radius:16px; padding:12px 14px; margin-bottom:10px; }
.woocommerce-cart .xrow img { width:64px; height:64px; object-fit:cover; border-radius:12px; }
.woocommerce-cart .xrow .xinfo b { display:block; font-size:14px; }
.woocommerce-cart .xrow .xinfo span { font-size:12px; color:var(--soft); }
.woocommerce-cart .xrow .btn { margin:0; white-space:nowrap; }

/* ============================================================================
 * MEASURED LAYOUT DEFECT FIXES — appended, nothing above is reordered.
 * Rules are scoped to WooCommerce's cart/checkout body classes (or .ryytas-checkout)
 * so they cannot reach any other page even if this theme is activated elsewhere.
 * ==========================================================================*/

/* ---------------------------------------------------------------------------
 * DEFECT D1 (P1) — horizontal overflow on the checkout payment area.
 *
 * WHAT THE MARKUP ACTUALLY IS (fetched live from https://ryytas.lv/atsiskaitymas/
 * with a populated cart):
 *   <div class="montonio-bank-payments-form">
 *     <select class="montonio-payments-country-dropdown">…</select>
 *     <div id="montonio-payments-description"
 *          class="montonio-bank-items montonio-bank-items--grid">
 *       <div class="bank-region-EE montonio-bank-item montonio-bank-item--hidden"
 *            data-bank="HABAEE2X">
 *         <img class="montonio-bank-item-img"
 *              src="https://public.montonio.com/images/aspsps_logos/swedbank.png">
 *       </div>
 *       … 39 of these, of which only the selected country's are shown …
 *     </div>
 *   </div>
 * inside  <div id="payment" class="woocommerce-checkout-payment">.
 *
 * WHAT THE PLUGIN'S OWN CSS DOES (montonio-for-woocommerce 9.2.2,
 * assets/css/montonio-style.css — fetched and read):
 *   .montonio-bank-payments-form .montonio-bank-items{
 *       display:flex; flex-direction:row; flex-wrap:wrap; gap:15px }
 *   .montonio-bank-payments-form .montonio-bank-items .montonio-bank-item{
 *       width:100px; height:100px; … }
 *   .montonio-bank-payments-form .montonio-bank-items .montonio-bank-item--hidden{
 *       display:none !important }
 *   #montonio-payments-description.montonio-bank-items .montonio-bank-item-img,
 *   #payment #montonio-payments-description.montonio-bank-items .montonio-bank-item-img{
 *       max-width:100%; max-height:26px; display:block; … }
 * i.e. the plugin ALREADY wraps and already caps the logo. When that stylesheet
 * loads there is no overflow at all; the container is 320px, the row wraps.
 *
 * The rules below are therefore a CONTAINMENT GUARANTEE, not a fight with the
 * plugin: they restate wrapping + a sane logo box at a specificity that survives
 * the legacy inline woodmart CSS, and add an overflow-x:auto scroll container as
 * a last resort so the bank row can never widen the document. They also clear the
 * one legacy rule that really does force a floor on the payment box:
 *     div#payment{ flex:1 1 360px; min-width:320px; … }   (legacy inline block)
 * which pins #payment to 320px minimum inside a ~298px column at a 390 viewport.
 * `.woocommerce-checkout #payment` (0,1,1,0) outranks `div#payment` (0,1,0,1),
 * so no !important is needed to beat it. -------------------------------------*/
.woocommerce-checkout #payment,
.woocommerce-checkout .woocommerce-checkout-payment{
  min-width:0;
  max-width:100%;
}
.woocommerce-checkout #payment .payment_box,
.woocommerce-checkout #payment .montonio-bank-payments-form{
  max-width:100%;
  min-width:0;
}
/* Last-resort containment: if any future/legacy rule stops the row wrapping, the
   overflow is absorbed by this element's own scroll box instead of the document. */
.woocommerce-checkout #payment .montonio-bank-payments-form{
  overflow-x:auto;
  -webkit-overflow-scrolling:touch;
}
/* Wrapping row. (0,1,2,0) beats the plugin's (0,0,2,0) and the legacy inline
   `.montonio-bank-item` block rules, without !important. */
.woocommerce-checkout #payment .montonio-bank-items{
  display:flex;
  flex-direction:row;
  flex-wrap:wrap;
  gap:8px;
  max-width:100%;
}
.woocommerce-checkout #payment .montonio-bank-items .montonio-bank-item{
  flex:0 0 auto;
  max-width:100%;
  box-sizing:border-box;
}
/* Logo box. The plugin's own `#payment #montonio-payments-description… ` selector
   carries two IDs and therefore still wins on max-width/max-height — which is
   exactly what we want (100% / 26px). We only add the width/height:auto the
   plugin does not set, so an unstyled intrinsic size (some logos are 2000px wide)
   can never be used. `object-fit:contain` keeps aspect ratio inside the cap. */
.woocommerce-checkout #payment .montonio-bank-items .montonio-bank-item-img{
  width:auto;
  height:auto;
  max-width:100%;
  max-height:26px;
  object-fit:contain;
  display:block;
}
/* Checkout form controls must never re-drive a grid/flex track wider than its box
   (an <input>'s intrinsic width is ~385px, well over a 298px mobile column). */
.woocommerce-checkout .ckform input,
.woocommerce-checkout .ckform textarea,
.woocommerce-checkout .ckform select,
.woocommerce-checkout .csum input,
.woocommerce-checkout form .form-row input.input-text,
.woocommerce-checkout form .form-row textarea,
.woocommerce-checkout form .form-row select,
.woocommerce-checkout .select2-container{
  max-width:100%;
  min-width:0;
}

/* ---------------------------------------------------------------------------
 * DEFECT D2 (P1) — cart table has 6 columns and does not collapse.
 *
 * FINDING (important, and it changes what this fix is FOR): WooCommerce's own
 * woocommerce-smallscreen.css already stacks `table.shop_table_responsive` below
 * 768px (thead hidden, tr/td display:block, td::before = attr(data-title)).
 * With every stylesheet actually loading, the live cart measures 0px of
 * horizontal overflow at 390. The 94px THEAD overflow that was reported is what
 * happens when woocommerce-smallscreen.css is absent.
 *
 * This block is still correct on its own merits, for two independent reasons:
 *   1. The theme pins fixed column widths above (34+78+82+82+92 = 368px with
 *      `table-layout:fixed`). In a ~298px mobile column that alone overflows the
 *      moment Woo's smallscreen CSS is not in the cascade. Those widths are
 *      released here.
 *   2. The approved design specifies row CARDS, not Woo's plain stacked list.
 * CSS-only — the cart template is untouched (that is separate, larger work).
 *
 * Woo's smallscreen rules are same-specificity and load EARLIER than this file,
 * so we win ties; `table.cart.shop_table_responsive` is used where an explicit
 * margin is wanted. The single `!important` below (text-align) is required
 * because woocommerce-smallscreen.css writes `text-align:right!important` on
 * every td — that is the ONLY place it uses !important in this area. ---------*/
@media (max-width:560px){
  .woocommerce-cart table.cart{
    display:block;
    width:100%;
    table-layout:auto;
    border:0;
    background:transparent;
    border-radius:0;
    overflow:visible;
  }
  .woocommerce-cart table.cart thead{display:none}
  .woocommerce-cart table.cart tbody{display:block;width:100%}
  /* one row = one card */
  .woocommerce-cart table.cart.shop_table_responsive tbody tr.cart_item{
    display:grid;
    grid-template-columns:64px minmax(0,1fr) auto;
    column-gap:12px;
    row-gap:4px;
    align-items:center;
    width:100%;
    margin:0 0 10px;
    padding:12px;
    background:var(--wht);
    border:1px solid var(--bor);
    border-radius:16px;
  }
  /* Woo tints every 2nd row; inside cards that reads as a bug. */
  .woocommerce-cart table.cart.shop_table_responsive tbody tr:nth-child(2n) td{
    background-color:transparent;
  }
  .woocommerce-cart table.cart td{
    display:block;
    width:auto;
    border-top:0;
    padding:0;
    text-align:left !important;   /* beats woocommerce-smallscreen's !important */
  }
  .woocommerce-cart table.cart td.product-thumbnail{grid-column:1;grid-row:1 / span 3}
  .woocommerce-cart table.cart td.product-name    {grid-column:2;grid-row:1;font-weight:600;line-height:1.3}
  .woocommerce-cart table.cart td.product-remove  {grid-column:3;grid-row:1;text-align:right !important}
  .woocommerce-cart table.cart td.product-price   {grid-column:2;grid-row:2;font-size:13px;color:var(--soft)}
  .woocommerce-cart table.cart td.product-quantity{grid-column:2;grid-row:3}
  .woocommerce-cart table.cart td.product-subtotal{grid-column:3;grid-row:3;text-align:right !important;font-weight:800}
  /* Woo prints "Cena: " etc. from data-title; keep it, but as a small inline
     label rather than a floated block, and never on the two label-less cells. */
  .woocommerce-cart table.cart td::before{
    float:none;
    display:inline;
    font-weight:600;
    color:var(--soft);
    font-size:12px;
  }
  .woocommerce-cart table.cart td.product-name::before,
  .woocommerce-cart table.cart td.product-subtotal::before,
  .woocommerce-cart table.cart td.product-thumbnail::before,
  .woocommerce-cart table.cart td.product-remove::before,
  .woocommerce-cart table.cart td.actions::before{display:none}
  /* thumbnails already pinned to 64px above; keep the cell from claiming 78px */
  .woocommerce-cart table.cart td.product-thumbnail{width:64px}
  /* the coupon / update row is a full-width strip, not a card */
  .woocommerce-cart table.cart tbody tr:has(td.actions){
    display:block;
    width:100%;
    margin:0;
    padding:0;
    border:0;
    background:transparent;
  }
  .woocommerce-cart table.cart td.actions{
    display:block;
    width:100%;
    padding:0;
  }
  .woocommerce-cart table.cart td.actions .coupon{
    display:flex;
    flex-wrap:wrap;
    gap:8px;
    margin:0 0 10px;
  }
  .woocommerce-cart table.cart td.actions .coupon .input-text{
    flex:1 1 140px;
    min-width:0;
    width:auto;
  }
  .woocommerce-cart table.cart td.actions .button{width:100%}
  .woocommerce-cart table.cart td.actions .coupon .button{width:auto;flex:0 0 auto}
  /* release the desktop fixed-column widths so nothing sets a 368px floor */
  .woocommerce-cart table.cart th.product-remove,   .woocommerce-cart table.cart td.product-remove,
  .woocommerce-cart table.cart th.product-price,    .woocommerce-cart table.cart td.product-price,
  .woocommerce-cart table.cart th.product-quantity, .woocommerce-cart table.cart td.product-quantity,
  .woocommerce-cart table.cart th.product-subtotal, .woocommerce-cart table.cart td.product-subtotal{
    width:auto;
  }
  /* the totals card is a plain 2-col table; keep it inside its box */
  .woocommerce-cart .cart_totals table.shop_table{width:100%;table-layout:fixed}
  .woocommerce-cart .cart_totals table.shop_table th,
  .woocommerce-cart .cart_totals table.shop_table td{word-break:break-word}
}

/* DEFECT D4b (P1, follow-up) — the reset added to the collapse query above did
   NOT take effect: `.woocommerce .cart-collaterals{grid-column:2}` appears LATER
   in this file at the same (0,2,0) specificity, and a media query adds none, so
   the later rule won and the summary column kept forcing an IMPLICIT second grid
   track. MEASURED at 390px: table.cart rendered 187px wide (47px of document
   overflow with the legacy inline CSS suppressed) instead of filling the row.
   Restated here with (0,3,0) so it wins on specificity as well as order. */
@media (max-width:980px){
  .woocommerce-cart .woocommerce .cart-collaterals{grid-column:1;width:100%}
  .woocommerce-cart .woocommerce form.woocommerce-cart-form{grid-column:1;min-width:0}
}

/* ===========================================================================
   MINI-CART DRAWER INTERIOR                          (iss-20260829-05, 2026-08-29)
   ---------------------------------------------------------------------------
   header.php renders `<aside class="mini cart-widget-side">` and fills it with
   woocommerce_mini_cart(). design.css styles the DRAWER (.mini, .mini-h,
   .mini-f) but nothing styled its CONTENTS — that job was being done, by
   accident, by 68 `.cart-widget-side ...` rules inside the woodmart-era
   "Simple Custom CSS and JS" blocks. inc/legacy-suppression.php now stops those
   blocks reaching this theme, so the interior is restyled here deliberately.

   Deliberately NOT a port of those 68 rules. About half of them target woodmart
   markup this theme never emits (.wd-scroll-content, .wd-heading, .wd-cross-icon,
   .custom-sale-div) and the rest carry the OLD brand's type and colour. Carrying
   them forward is exactly the coupling we are removing. These are written
   against this theme's own tokens instead.
   ========================================================================= */
.mini .widget_shopping_cart_content { display:flex; flex-direction:column; flex:1 1 auto; min-height:0; }

.mini ul.woocommerce-mini-cart {
  list-style:none; margin:0; padding:0; overflow-y:auto; flex:1 1 auto; min-height:0;
}
/* WooCommerce nests the <img> INSIDE the product <a>, with the title as a
   sibling TEXT NODE of that image -- not as separate children of the <li>.
   So the ANCHOR carries the two-column layout; treating the <li> as the grid
   put the thumbnail above the title instead of beside it. */
.mini ul.woocommerce-mini-cart li.mini_cart_item {
  position:relative; display:block; margin:0;
  padding:10px 44px 10px 0; border-bottom:1px solid #E9DCCB;
}
.mini ul.woocommerce-mini-cart li.mini_cart_item::after { content:none; }   /* Woo clearfix */
.mini ul.woocommerce-mini-cart li.mini_cart_item > a:not(.remove) {
  display:grid; grid-template-columns:56px minmax(0,1fr); gap:10px;
  align-items:center; text-decoration:none;
  color:#503A32; font-size:14px; font-weight:700; line-height:1.35;
}
.mini ul.woocommerce-mini-cart li.mini_cart_item img {
  width:56px; height:56px; object-fit:cover; border-radius:12px; margin:0; float:none;
}
/* sits under the title, aligned to the text column (56px thumb + 10px gap) */
.mini ul.woocommerce-mini-cart li.mini_cart_item .quantity {
  display:block; margin-top:6px; padding-left:66px;
  font-size:13px; color:#8A7265;
}
/* Woo prints the remove link FIRST in source order; pin it top-right instead of
   letting it lead the row. 44x44 = the minimum touch target. */
.mini ul.woocommerce-mini-cart li.mini_cart_item a.remove_from_cart_button {
  position:absolute; top:6px; right:0;
  display:flex; align-items:center; justify-content:center;
  width:44px; height:44px;
  font-size:18px; line-height:1; text-decoration:none;
  color:#8A7265; background:none; border-radius:999px;
}
.mini ul.woocommerce-mini-cart li.mini_cart_item a.remove_from_cart_button:hover { color:#C96A4F; background:#F3EAE0; }

.mini .woocommerce-mini-cart__total {
  display:flex; justify-content:space-between; align-items:baseline;
  margin:12px 0 0; padding-top:12px; border-top:1px solid #E9DCCB;
  font-size:17px; font-weight:800; color:#503A32;
}
.mini .woocommerce-mini-cart__total strong { font-weight:700; }

.mini .woocommerce-mini-cart__buttons {
  display:flex; flex-direction:column; gap:9px; margin:12px 0 0;
}
.mini .woocommerce-mini-cart__buttons a.button {
  display:block; width:100%; text-align:center; box-sizing:border-box;
  padding:13px 18px; border-radius:999px;
  font-size:14px; font-weight:800; text-decoration:none;
  border:1.5px solid #503A32; background:transparent; color:#503A32;
}
.mini .woocommerce-mini-cart__buttons a.button.checkout {
  background:#E8927C; border-color:#E8927C; color:#fff; order:-1;   /* primary action first */
}
.mini .woocommerce-mini-cart__buttons a.button.checkout:hover { background:#C96A4F; border-color:#C96A4F; }

.mini .woocommerce-mini-cart__empty-message {
  margin:18px 0; padding:22px 16px; text-align:center;
  color:#8A7265; font-size:14px;
  border:1px dashed #E9DCCB; border-radius:16px;
}

/* ---------------------------------------------------------------------------
 * Checkout proto-parity pass (2026-08-31) — deltas measured in a real browser
 * against ryytas-prototipas.html #pg-checkout at 1440px.
 * ------------------------------------------------------------------------- */

/* DEFECT: design.css carries a bare element rule `input{...;width:100%}`. Inside a
 * .ropt card `.ropt input{width:auto}` cancels it, but WooCommerce's payment list
 * rows are <li class="wc_payment_method">, not .ropt — so every gateway radio was
 * stretched to the full card width and pushed onto its own line, which is what made
 * step 3 render as a naked radio floating above each label. Pin every checkout radio. */
.ryytas-checkout input[type="radio"],
.woocommerce-checkout .ckform input[type="radio"] {
  width:18px !important; height:18px !important; min-width:18px; max-width:18px;
  flex:0 0 auto; margin:0 2px 0 0; padding:0 !important; border:0 !important;
  border-radius:50%; background:none !important; accent-color:var(--ac);
}
/* Gateway meta (proto .soft) sits right-aligned on the card, like .ropt b. */
.ryytas-checkout #payment ul.payment_methods li.wc_payment_method > label .soft { margin-left:auto; font-weight:500; }
/* Proto shows text meta, never card-logo strips. */
.ryytas-checkout #payment ul.payment_methods li.wc_payment_method > label img { display:none; }

/* Step 1: the .ryytas-ship wrapper broke .ckform's 11px gap between shipping cards. */
.ryytas-checkout .ryytas-ship { display:flex; flex-direction:column; gap:11px; }
/* Step 1: pickup-point picker moves under the shipping cards (proto <select>); its
 * plugin-rendered heading is dropped — the proto select is placeholder-only. */
.ryytas-checkout .ryytas-pickup { margin:0; }
.ryytas-checkout .ryytas-pickup h3,
.ryytas-checkout .ryytas-pickup h4,
.ryytas-checkout .ryytas-pickup > label,
.ryytas-checkout .ryytas-pickup .mp-pickup-title { display:none !important; }
.ryytas-checkout .ryytas-pickup select,
.ryytas-checkout .ryytas-pickup .select2-container { width:100% !important; }

/* Step 2: proto's contact form is placeholder-only — no labels, no asterisks, no
 * country selector, and no boxed card around the fields. */
.woocommerce-checkout .ryytas-checkout #customer_details {
  background:transparent; border:0; border-radius:0; padding:0;
}
.ryytas-checkout #customer_details p.form-row > label:not(.checkbox):not(.woocommerce-form__label-for-checkbox) { display:none !important; }
.ryytas-checkout #customer_details .required,
.ryytas-checkout #customer_details .optional { display:none; }
/* Country selector is hidden ONLY where the store sells to a single country
 * (see functions.php Section 16). On a locale the store does not sell to, the
 * selector must stay visible rather than silently pinning the wrong country. */
body.ryytas-country-locked .ryytas-checkout #customer_details #billing_country_field { display:none !important; }
.ryytas-checkout #customer_details #billing_city_field { flex:1 1 100% !important; }
.ryytas-checkout #customer_details textarea { min-height:46px; height:46px; resize:vertical; }
/* Fields must fill their row (proto). A plugin rule left inputs at their intrinsic
 * ~188px inside full-width rows, so "Miestas" looked half-width. */
.ryytas-checkout #customer_details .form-row input.input-text,
.ryytas-checkout #customer_details .form-row textarea,
.ryytas-checkout #customer_details .form-row select { width:100% !important; }
/* Proto marks nothing as required/optional — placeholders carry the meaning. */
.ryytas-checkout .required,
.ryytas-checkout .optional { display:none !important; }
/* MultiParcels prints its own "Atsiėmimo vieta" heading as a bare text node before
 * the select; the prototype's picker is placeholder-only. The plugin setting
 * display_pickup_location_title=no removes it at the source (see ops notes). */
/* DEFECT: the terms-row rule above matches `.form-row.validate-required`, which is
 * EVERY required billing field — it turned each field row into a flex row, so the
 * <input> stopped filling it (187px inside a 317px row). Restore block rows for the
 * contact fields (the terms row keeps its own inline layout via its wrapper). */
.ryytas-checkout #customer_details p.form-row.validate-required { display:block; }
.ryytas-checkout #customer_details p.form-row:has(input[type="checkbox"]) { display:flex; }
.ryytas-checkout #customer_details .form-row input,
.ryytas-checkout #customer_details .form-row textarea,
.ryytas-checkout #customer_details .form-row select { width:100% !important; }
.ryytas-checkout #customer_details .form-row input[type="checkbox"] { width:18px !important; }
/* Step-3 order bump (proto .bump). A generic `label{display:block}` rule flattened
 * the card, so restore the prototype's row layout inside the checkout. */
.ryytas-checkout .bump { display:flex !important; align-items:center; gap:12px; margin:8px 0 0;
  border:1.5px dashed var(--ac) !important; border-radius:14px; background:#E8927C0D; padding:12px 14px; cursor:pointer; }
.ryytas-checkout .bump img { width:48px !important; height:48px !important; border-radius:9px; object-fit:cover; flex:0 0 auto; }
.ryytas-checkout .bump .binfo { flex:1; display:flex; flex-direction:column; gap:1px; }
.ryytas-checkout .bump.bump-on { background:#E8927C1F; }

/* ---- Cross-sell row + cart summary (prototype parity, 2026-08-31) --------- */
/* Prototype .xsell row: dashed card, 64px thumb left, copy centre, CTA right.
 * The row is a <form> (it POSTs the tier contract), which defaults to block. */
.xsell { margin-top:14px; }
.xsell .lbl { display:block; margin-bottom:8px; }
.xsell .xrow {
  display:flex; align-items:center; gap:12px; margin:0;
  background:var(--oat); border:1.5px dashed var(--bor); border-radius:14px; padding:10px 12px;
}
.xsell .xrow img { width:56px !important; height:56px !important; border-radius:10px; object-fit:cover; flex:0 0 auto; }
.xsell .xinfo { flex:1; display:flex; flex-direction:column; gap:2px; min-width:0; }
.xsell .xinfo b { font-size:14px; }
.xsell .xinfo span { font-size:12.5px; color:var(--soft); }
.xsell .xrow .btn { flex:0 0 auto; }
/* The coupon now lives in the summary (proto .nlrow); hide Woo's in-table one. */
.woocommerce-cart .woocommerce-cart-form .actions .coupon { display:none; }
.woocommerce-cart .cart_totals .nlrow { display:flex; gap:8px; align-items:center; margin:10px 0; }
.woocommerce-cart .cart_totals .nlrow input { flex:1 1 auto; min-width:0; margin:0; }
.woocommerce-cart .cart_totals .nlrow .btn { flex:0 0 auto; white-space:nowrap; }
/* Mini-cart drawer: prototype order — progress, lines, cross-sell, totals, CTAs. */
.mini .prog { margin:12px 0; }
.mini .xsell { margin:12px 0; }
.mini .btn-big { width:100%; margin-top:8px; text-align:center; }
/* Mini-cart line meta (Plāns / Iepakojumi) — Woo renders it as a <dl> whose
 * <dt>/<dd> each take a full line, which broke the drawer row layout. */
.mini .mini-lines .variation { display:flex; flex-wrap:wrap; gap:2px 6px; margin:2px 0 0; font-size:12px; color:var(--soft); }
.mini .mini-lines .variation dt { font-weight:600; margin:0; }
.mini .mini-lines .variation dd { margin:0 8px 0 0; }
.mini .mini-lines .variation dd p { margin:0; }

/* Benefit cards: the 2x2 grid is sized by the panel image beside it, so each
   card is taller than its copy and the text sat pinned to the top with a large
   void beneath. Centring the column distributes that slack instead of dumping
   all of it at the bottom. */
.reason{justify-content:center}

/* ============================================================================
 * IMAGE FRAMING — show the whole picture (2026-08-31, Jonas: "make all picture
 * seeable ... now size is 1x1.2 and image is not full seeable").
 *
 * Every marketing image the theme ships (assets/img/**, all three locales) is
 * 2:3 PORTRAIT — 1024x1536, 960x1440, 720x1080 or 480x720. Verified: all 27
 * files, LT/LV/EN, have ratio 0.667. The design CSS framed them in nine
 * DIFFERENT boxes, none of them 2:3, each with object-fit:cover — so the
 * browser centre-cropped every one:
 *
 *   .hbcard>img      3/2      ->  44% of the image visible   <-- worst
 *   .bkcard .pimg    3/2      ->  44%
 *   .hero-i (<=980)  3/2      ->  44%
 *   .xcard img       1/0.9    ->  60%
 *   .gb-prod img     1/1      ->  67%
 *   .th              1/1      ->  67%
 *   .pimg img        1/1.15   ->  77%
 *   .hero-i img      4/4.6    ->  77%
 *   .gmain img       1/1.18   ->  79%
 *   .adimg.tall      2/2.4    ->  80%   (the literal "1x1.2" Jonas named)
 *
 * This is not cosmetic. ad1-ad9 / e3 / e4 carry their headline, their -44%
 * badge and their "PIRKT KOMPLEKTU" button BAKED INTO THE PIXELS, and that is
 * also the only surface the LV re-lettering (bin/imagekit) can reach. At 44%
 * the bundle cards on the home page and /rinkiniai showed the pouches and cut
 * off every word — the Latvian copy was rendered, uploaded, and invisible.
 *
 * Fix: give each box the source's own 2/3 ratio. object-fit:cover then has
 * nothing to crop, so the full frame shows with no letterbox and no distortion
 * (contain would have left pillar-boxes against the wrong background).
 *
 * NOT touched: .cline / .bump / .offer-b / .product-thumbnail and the PDP's own
 * Woo gallery — those frame WooCommerce product images, which really are square
 * (430x430), and 1/1 is correct for them.
 * ========================================================================= */
.hero-i img,
.pimg img,
.bkcard .pimg img,
.gb-prod img,
.hbcard > img,
.vthumb img,
.gmain img,
.xcard img,
.th,
.adimg,
.adimg.tall { aspect-ratio: 2 / 3; height: auto; }

/* height:auto is load-bearing, not tidiness. The home product cards carry
 * width="1024" height="1536" attributes (they stop the cards reflowing while
 * the image arrives). With BOTH dimensions resolved the browser uses them and
 * ignores aspect-ratio, so the 260px-wide card rendered a 1536px-tall box --
 * a 0.169 ratio, 25% of the image visible, worse than before the fix. */

/* .adimg was container-driven (height:100%) inside the stretch grids .rwrap /
 * .split, so its crop depended on how tall the copy beside it happened to be.
 * With a real ratio it must size itself and stop stretching. */
.adimg { height: auto; align-self: start; }

/* The <=980 breakpoint re-cropped the hero to 3/2 (44%). Mobile is where most
 * of this traffic lands, so it needs the rule more than the desktop does. */
@media (max-width: 980px) {
  .hero-i img { aspect-ratio: 2 / 3; }
}

/* /prenumerata/ reuses the checkout-summary .cline row for its plan list, but
 * fills it with the theme's own 2:3 pouch shots instead of Woo's square 430x430
 * thumbnails. The shared .cline img{aspect-ratio:1/1} therefore cut the top and
 * bottom off every bag (67% visible). Scoped to .subplans so the real checkout
 * summary, where 1/1 IS correct, is untouched. */
.subplans .cline img { aspect-ratio: 2 / 3; height: auto; }

/* Founder photo (GAP-01 closed 2026-08-31 — Jonas mailed it to hello@ryytas.lt).
 * The frame is 3:4, not the 2:3 of the marketing set, so it gets its own ratio
 * rather than joining the block above. .fphoto was 1/1.1, which would have cut
 * ~18% off a portrait that is already framed wide.
 *
 * The rule on the <img> exists because the two templates disagree: page-apie-mus
 * carries inline width/height/object-fit, front-page.php does not — there it is
 * a bare flex child that would size to its intrinsic 580px and overflow the
 * 290px box. One rule makes both render identically. */
.fphoto { aspect-ratio: 3 / 4; }
.fphoto img { width: 100%; height: 100%; object-fit: cover; border-radius: inherit; display: block; }

/* ---------------------------------------------------------------------------
 * Language switcher (2026-09-01).
 *
 * The header carried a <span class="lang">LT</span> — a LABEL, never a control.
 * The theme's own comment said "the actual switcher is separate work", and it
 * had never been done: on ryytas.lv/en/ee there was no way to change language
 * at all, and `.lang{display:none}` in design.css's mobile block meant phone
 * visitors did not even see the label. Jonas found it.
 *
 * Built on <details> so it works with JavaScript off, and styled here rather
 * than in design.css, which is regenerated by build/extract_design.py.
 * ------------------------------------------------------------------------- */
.lang-sw{position:relative;font-size:12px;font-weight:800}
.lang-sw>summary{
  list-style:none;cursor:pointer;user-select:none;
  border:1px solid #E9DCCB;border-radius:999px;padding:4px 10px;background:#fff;
  color:#503A32;line-height:1.35;
}
.lang-sw>summary::-webkit-details-marker{display:none}
.lang-sw>summary::after{content:"\25BE";margin-left:5px;font-size:9px;opacity:.65}
.lang-sw[open]>summary{border-color:#503A32}
.lang-sw>summary:focus-visible{outline:2px solid #503A32;outline-offset:2px}
.lang-sw>ul{
  position:absolute;top:calc(100% + 6px);right:0;z-index:60;margin:0;padding:6px;
  min-width:172px;list-style:none;background:#fff;border:1px solid #E9DCCB;
  border-radius:12px;box-shadow:0 10px 28px rgba(80,58,50,.16);
}
.lang-sw>ul li{margin:0}
.lang-sw>ul a{
  display:flex;align-items:center;gap:9px;padding:8px 10px;border-radius:8px;
  color:#503A32;text-decoration:none;font-weight:600;white-space:nowrap;
}
.lang-sw>ul a:hover,.lang-sw>ul a:focus-visible{background:#FAF5EF}
.lang-sw>ul a[aria-current="true"]{font-weight:800;background:#FAF5EF}
.lang-sw-c{
  font-size:10px;font-weight:800;letter-spacing:.04em;color:#8A7466;
  border:1px solid #E9DCCB;border-radius:999px;padding:2px 6px;min-width:30px;
  text-align:center;flex:0 0 auto;
}
/* design.css hides .lang under 760px. The switcher is a real control and the
   majority of this shop's traffic is mobile, so it stays — just tighter. */
@media (max-width:760px){
  .lang-sw{display:block}
  .lang-sw>summary{padding:4px 8px}
  .lang-sw>ul{min-width:164px}
}
/* the current locale renders as a <span> when it is gated (no URL to link to) */
.lang-sw>ul span[aria-current="true"]{
  display:flex;align-items:center;gap:9px;padding:8px 10px;border-radius:8px;
  color:#503A32;font-weight:800;background:#FAF5EF;white-space:nowrap;
}

/* ---------------------------------------------------------------------------
   Footer social links (2026-09-02)

   The footer previously rendered <span>f</span><span>ig</span>: two bare letters
   that were not links and not icons. These rules style real <a> elements with
   inline SVG. Sized for touch (36px target) and given a visible focus ring,
   because the old markup could not be reached by keyboard at all.
   --------------------------------------------------------------------------- */
.ftr .fsoc{display:flex;gap:10px;align-items:center;margin-top:14px;flex-wrap:wrap}
.ftr .fsoc-a{
  display:inline-flex;align-items:center;justify-content:center;
  width:36px;height:36px;border-radius:50%;
  border:1px solid currentColor;opacity:.72;
  color:inherit;text-decoration:none;
  transition:opacity .15s ease, transform .15s ease, background-color .15s ease;
}
.ftr .fsoc-a:hover,.ftr .fsoc-a:focus-visible{opacity:1;transform:translateY(-1px)}
.ftr .fsoc-a:focus-visible{outline:2px solid currentColor;outline-offset:2px}
.ftr .fsoc-a svg{display:block;width:18px;height:18px}
@media (max-width:760px){
  .ftr .fsoc{gap:12px}
  .ftr .fsoc-a{width:40px;height:40px}   /* 40px minimum touch target on phones */
}

/* ---------------------------------------------------------------------------
   Side-cart lines (2026-09-02)

   The stock WooCommerce mini-cart puts the thumbnail and the product name in one
   inline <a>, so a long name wraps around the image and is hard to read in a
   narrow drawer. This is a three-column grid — image | text | remove — which
   gives the NAME its own full-width column on its own line.
   --------------------------------------------------------------------------- */
.mini .rmini{list-style:none;margin:0;padding:0}
.mini .rmini-i{
  display:grid;grid-template-columns:56px 1fr 22px;gap:10px;align-items:start;
  padding:12px 0;border-bottom:1px solid rgba(0,0,0,.08);margin:0;position:relative;
}
.mini .rmini-img img{width:56px;height:56px;object-fit:cover;border-radius:8px;display:block;margin:0}
.mini .rmini-body{min-width:0}          /* lets the name wrap instead of overflowing */
.mini .rmini-name{display:block;font-weight:600;line-height:1.3;font-size:14px;margin-bottom:2px}
.mini .rmini-name a{color:inherit;text-decoration:none}
.mini .rmini-name a:hover{text-decoration:underline}
.mini .rmini-meta{display:block;font-size:12px;opacity:.7;line-height:1.35;margin-bottom:6px}
.mini .rmini-meta p{margin:0}
.mini .rmini-row{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:6px}
.mini .rmini-qty{display:inline-flex;align-items:center;border:1px solid rgba(0,0,0,.18);border-radius:999px;overflow:hidden}
.mini .rmini-b{
  width:30px;height:30px;border:0;background:transparent;cursor:pointer;
  font-size:16px;line-height:1;color:inherit;
}
.mini .rmini-b:hover{background:rgba(0,0,0,.06)}
.mini .rmini-b:focus-visible{outline:2px solid currentColor;outline-offset:-2px}
.mini .rmini-n{min-width:26px;text-align:center;font-variant-numeric:tabular-nums;font-size:14px}
.mini .rmini-price{font-weight:700;white-space:nowrap;font-size:14px}
.mini .rmini-x{
  grid-column:3;grid-row:1;justify-self:end;
  width:22px;height:22px;line-height:20px;text-align:center;border-radius:50%;
  text-decoration:none;opacity:.45;font-size:16px;color:inherit;
}
.mini .rmini-x:hover{opacity:1;background:rgba(0,0,0,.07)}
.mini .rmini-total{display:flex;justify-content:space-between;align-items:baseline;margin:14px 0 10px;font-size:15px}
.mini .rmini-buttons{display:flex;flex-direction:column;gap:8px;margin:0}
.mini .rmini-buttons .btn,.mini .rmini-buttons a{width:100%;text-align:center}
.mini .rmini-empty{opacity:.7;margin:18px 0}
@media (max-width:420px){
  .mini .rmini-i{grid-template-columns:48px 1fr 22px}
  .mini .rmini-img img{width:48px;height:48px}
}

/* ---------------------------------------------------------------------------
   Research page /tyrimai (2026-09-02)

   Reading a study list is a scanning task, not a reading task: the eye wants
   ingredient → design → sample size → source, in that order, and everything else
   should stay out of the way. Hence the fixed fact row and the badge at the top
   of each card rather than a wall of prose.

   All motion is decorative and behind prefers-reduced-motion. Nothing here
   animates layout — only opacity and transform — so there is no reflow and no
   cumulative layout shift.
   --------------------------------------------------------------------------- */
.rsrch{--rs-line:rgba(0,0,0,.10);--rs-soft:rgba(0,0,0,.045)}

/* hero */
.rs-hero{position:relative;overflow:hidden;padding:44px 0 8px}
.rs-hero-in{position:relative;z-index:1}
.rs-lede{max-width:64ch;font-size:17px;line-height:1.65;opacity:.85;margin:10px 0 0}
.rs-wave{display:block;width:100%;height:64px;margin:18px 0 6px;color:var(--brand,#C77E5A);opacity:.5}
.rs-wave path{stroke-dasharray:1400;stroke-dashoffset:1400;animation:rs-draw 2.4s cubic-bezier(.4,0,.2,1) forwards}
@keyframes rs-draw{to{stroke-dashoffset:0}}

/* counters */
.rs-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:14px;margin:18px 0 8px}
.rs-stat{
  border:1px solid var(--rs-line);border-radius:14px;padding:16px 18px;background:var(--rs-soft);
  opacity:0;transform:translateY(8px);animation:rs-in .5s ease forwards;animation-delay:calc(var(--d,0)*90ms + 250ms);
}
@keyframes rs-in{to{opacity:1;transform:none}}
.rs-stat b{display:block;font-size:30px;line-height:1.1;font-variant-numeric:tabular-nums}
.rs-stat span{display:block;font-weight:600;margin-top:2px}
.rs-stat em{display:block;font-style:normal;font-size:12.5px;opacity:.65;margin-top:6px;line-height:1.4}

/* how to read */
.rs-how{margin-top:34px}
.rs-how-g{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:16px;margin-top:14px}
.rs-how-c{border:1px solid var(--rs-line);border-radius:14px;padding:16px 18px}
.rs-how-c svg{color:var(--brand,#C77E5A);margin-bottom:8px}
.rs-how-c b{display:block;margin-bottom:6px}
.rs-how-c p{margin:0;font-size:14px;line-height:1.55;opacity:.82}

/* pull quote */
.rs-quote{
  margin:38px 0;padding:22px 24px;border:0;border-left:3px solid var(--brand,#C77E5A);
  background:var(--rs-soft);border-radius:0 14px 14px 0;
}
.rs-quote p{margin:0;font-size:18px;line-height:1.6}
.rs-quote cite{display:block;margin-top:10px;font-style:normal;font-size:14px;opacity:.7}

/* study cards */
.rs-list{margin-top:10px}
.rs-grp{margin:30px 0 10px;scroll-margin-top:90px}
.rs-grp-h{display:flex;align-items:baseline;gap:10px;font-size:21px;margin:0 0 12px}
.rs-cnt{font-size:13px;font-weight:500;opacity:.6}
.rs-card{border:1px solid var(--rs-line);border-radius:16px;padding:18px 20px;margin-bottom:12px;transition:box-shadow .18s ease,transform .18s ease}
.rs-card:hover{box-shadow:0 6px 22px rgba(0,0,0,.07);transform:translateY(-1px)}
.rs-card.is-neg{border-left:3px solid #B4544A}
.rs-card-top{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:8px}
.rs-badge{font-size:12px;padding:4px 10px;border-radius:999px;background:var(--rs-soft);border:1px solid var(--rs-line);opacity:.85}
.rs-badge-neg{background:rgba(180,84,74,.10);border-color:rgba(180,84,74,.35);opacity:1}
.rs-title{font-size:16.5px;line-height:1.4;margin:0 0 6px;font-weight:650}
.rs-who{margin:0 0 12px;font-size:14px;opacity:.75}
.rs-facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px 18px;margin:0 0 10px;padding:12px 0;border-top:1px solid var(--rs-line);border-bottom:1px solid var(--rs-line)}
.rs-facts div{min-width:0}
.rs-facts dt{font-size:12px;text-transform:uppercase;letter-spacing:.04em;opacity:.55;margin:0 0 2px}
.rs-facts dd{margin:0;font-size:14.5px;line-height:1.4}
.rs-note{margin:10px 0 0;font-size:14px;opacity:.8;line-height:1.55}
.rs-src{display:inline-flex;align-items:center;gap:6px;margin-top:12px;font-size:13.5px;text-decoration:none;border-bottom:1px solid currentColor;padding-bottom:1px}
.rs-src:hover{opacity:.75}

/* limits + legal */
.rs-limits{margin:40px 0 10px}
.rs-limits ul{margin:12px 0 0;padding-left:20px}
.rs-limits li{margin-bottom:8px;line-height:1.6;opacity:.88}
.rs-legal{margin-top:20px;padding:16px 18px;border:1px dashed var(--rs-line);border-radius:12px;font-size:13.5px;line-height:1.6;opacity:.8}
.rs-updated{margin-top:10px;font-size:12.5px;opacity:.6}

@media (max-width:640px){
  .rs-stat b{font-size:26px}
  .rs-quote p{font-size:16.5px}
  .rs-facts{grid-template-columns:1fr 1fr}
}
@media (prefers-reduced-motion:reduce){
  .rs-wave path{animation:none;stroke-dashoffset:0}
  .rs-stat{animation:none;opacity:1;transform:none}
  .rs-card{transition:none}
  .rs-card:hover{transform:none}
}

/* Homepage newsletter form (2026-09-12): the teaser row is now a real <form>. */
.teaser form.nlrow { display:flex; gap:8px; align-items:center; }
.teaser form.nlrow input[type=email] { flex:1 1 auto; min-width:0; margin:0; }
.teaser form.nlrow .btn { flex:0 0 auto; white-space:nowrap; }
.teaser .nl-msg { margin-top:8px; }
.teaser .nl-msg.is-error { color:#b3261e; }

/* Newsletter opt-in in its stable home just above #payment (form-checkout.php moves it
   there; inside #payment it was destroyed by every updated_checkout — 2026-09-13). */
.ryytas-checkout #kl_newsletter_checkbox_field.ryytas-optin {
  display:flex; align-items:center; margin:14px 0 6px; padding:0; text-align:left;
}
.ryytas-checkout #kl_newsletter_checkbox_field.ryytas-optin label.checkbox {
  display:flex; align-items:center; gap:10px; margin:0; font-size:14px; line-height:1.4; cursor:pointer;
}
.ryytas-checkout #kl_newsletter_checkbox_field.ryytas-optin input[type="checkbox"] { margin:0; flex:0 0 auto; }
.ryytas-checkout #kl_newsletter_checkbox_field.ryytas-optin .optional { display:none; }

/* --------------------------------------------------------------------------
 * Video testimonials (inc/testimonials.php)
 *
 * The old .vthumb rule styles an <img> inside a 1/1.4 box. These videos are
 * 9:16 reels, so the box is given the same footprint and the <video> fills it.
 * design.css is GENERATED (build/extract_design.py) and must not be hand-edited,
 * so the corrections live here, where ryytas-overrides is already enqueued.
 * ------------------------------------------------------------------------ */
.ryytas-vt-row {
  align-items: start;
  /* design.css sets .vrow to 5 columns, which leaves a ragged 5+3 once a surface
     carries 8 testimonials. Four columns makes 8 two clean rows at every width. */
  grid-template-columns: repeat(4, 1fr);
}

@media (max-width: 1000px) {
  .ryytas-vt-row { grid-template-columns: repeat(3, 1fr); }
}

.ryytas-vt-item {
  margin: 0;
  position: relative;
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.ryytas-vt-video {
  width: 100%;
  aspect-ratio: 9 / 16;
  height: auto;              /* never let a fixed height crop the speaker's face */
  display: block;
  border-radius: 14px;
  background: #000;
  object-fit: cover;
  cursor: pointer;
}

.ryytas-vt-by {
  font-size: 12px;
  line-height: 1.2;
  opacity: .62;
  text-align: center;
  word-break: break-all;
}

/* The fake strip drew a ▶ badge over a still image. A real <video> paints its own
   platform control, so any inherited badge here would be a second, dead button. */
.ryytas-vt .play { display: none !important; }

@media (max-width: 640px) {
  .ryytas-vt-row { grid-template-columns: repeat(2, 1fr); }
}

/* ----------------------------------------------------------------------
   Video atsiliepimai directly under the buy box (PDP + the 2+2 landing).

   As a 4-column grid this block is eight 9:16 videos tall — at phone width
   that is four rows of full-width portrait video between the add-to-cart
   button and the rest of the page, i.e. a wall the buyer has to scroll past
   to reach anything else. Placed beside the button, it has to stay ONE row
   high, so it becomes a swipeable rail with scroll-snap instead of a grid.
   The section below the fold (front page, and the strip style) keeps the
   grid — there, height costs nothing.
   -------------------------------------------------------------------- */
.ryytas-vt-buy { margin-top: 26px; }

.ryytas-vt-buy .ryytas-vt-row {
  display: flex;
  gap: 12px;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  -webkit-overflow-scrolling: touch;
  padding-bottom: 6px;
  /* the rail is the scroller; without this the grid rules above still apply */
  grid-template-columns: none;
  scrollbar-width: thin;
}

.ryytas-vt-buy .ryytas-vt-item {
  flex: 0 0 168px;
  scroll-snap-align: start;
}

@media (max-width: 640px) {
  /* Overrides the 2-column grid rule further up for this placement only. */
  .ryytas-vt-buy .ryytas-vt-row { grid-template-columns: none; }
  .ryytas-vt-buy .ryytas-vt-item { flex-basis: 144px; }
}

/* ----------------------------------------------------------------------
   The offer strip is a button, and now looks like one.

   It was a sentence in a link with text-decoration:none, sitting directly
   under the identical-looking "free delivery" strip, which is NOT a link.
   Two bars, same colour, same weight, same size — one clickable and one not,
   with nothing to tell them apart. The campaign's entire spend points at the
   page behind this bar.
   -------------------------------------------------------------------- */
.promo-offer {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 12px;
  flex-wrap: wrap;
  color: #FAF5EF;
  text-decoration: none;
  cursor: pointer;
}

/* min-width:0 lets the sentence wrap inside its flex item instead of forcing
   the pill off the right edge on a narrow phone. */
.promo-offer .promo-txt { text-decoration: none; min-width: 0; }

@media (max-width: 460px) {
  .promo-offer { gap: 8px; padding-left: 8px; padding-right: 8px; }
  .promo-offer .promo-btn { padding: 3px 11px; font-size: 11.5px; }
}

.promo-offer .promo-btn {
  display: inline-flex;
  align-items: center;
  border-radius: 999px;
  padding: 4px 14px;
  background: #FAF5EF;
  color: #503A32;
  font-size: 12px;
  font-weight: 800;
  line-height: 1.6;
  white-space: nowrap;
  transition: transform .15s ease, opacity .15s ease;
}

.promo-offer:hover .promo-btn,
.promo-offer:focus-visible .promo-btn { transform: translateY(-1px); opacity: .9; }
.promo-offer:focus-visible { outline: 2px solid #FAF5EF; outline-offset: -3px; }

@media (prefers-reduced-motion: reduce) {
  .promo-offer .promo-btn { transition: none; }
  .promo-offer:hover .promo-btn { transform: none; }
}
