/* SAPAMEFA V9.7 — Canonical Product Detail System */
.sapamefa-product-page{min-width:0;overflow:clip;background:var(--smf-color-surface);color:var(--smf-color-text);font-family:var(--smf-font-sans)}
.sapamefa-product-page *{box-sizing:border-box}.sapamefa-product-page a{text-decoration:none}.sapamefa-product-page button,.sapamefa-product-page input,.sapamefa-product-page select{font:inherit}.sapamefa-product-page img{display:block;max-width:100%}
.sapamefa-product-meta{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:var(--smf-space-3)}.sapamefa-product-meta>span{display:inline-flex;align-items:center;gap:var(--smf-space-2);padding:var(--smf-space-2) var(--smf-space-3);border:var(--smf-border-width-hairline) solid var(--smf-color-white-24);border-radius:var(--smf-radius-small);background:var(--smf-color-white-08);color:var(--smf-color-white-92);font-size:var(--smf-font-size-2xs);font-weight:var(--smf-font-weight-bold);line-height:var(--smf-line-title);font-variant-numeric:tabular-nums lining-nums}.sapamefa-product-meta i{color:var(--smf-color-bright)}.sapamefa-product-stock{color:var(--smf-color-success-soft)}.sapamefa-product-stock.is-preorder{color:var(--smf-color-warning)}.sapamefa-product-stock.is-preorder i{color:var(--smf-color-warning)}
.sapamefa-product-gallery{padding-block:var(--smf-section-compact);border-bottom:var(--smf-border-width-hairline) solid var(--smf-color-border);background:var(--smf-color-surface)}
.sapamefa-product-gallery__single,.sapamefa-product-gallery__grid{width:min(896px,100%);margin-inline:auto;border:0;border-radius:0;background:var(--smf-color-transparent);overflow:hidden}
.sapamefa-product-gallery__single{position:relative;width:min(672px,100%);aspect-ratio:1/1;display:block;padding:0;background:var(--smf-color-transparent);cursor:zoom-in}
.sapamefa-product-gallery__grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0;background:var(--smf-color-transparent)}
.sapamefa-product-gallery__item,.sapamefa-product-gallery__placeholder{position:relative;aspect-ratio:1/1;display:flex;align-items:center;justify-content:center;padding:0;border:0;border-radius:0;background:var(--smf-color-transparent);overflow:hidden}
.sapamefa-product-gallery__grid>*:nth-child(2n){border-left:var(--smf-gallery-divider-size) solid var(--smf-gallery-divider-color)}
.sapamefa-product-gallery__grid>*:nth-child(n+3){border-top:var(--smf-gallery-divider-size) solid var(--smf-gallery-divider-color)}
.sapamefa-product-gallery__item{cursor:zoom-in}.sapamefa-product-gallery__item[hidden]{display:none}.sapamefa-product-gallery__grid.is-expanded .sapamefa-product-gallery__item.is-extra{display:flex}
.sapamefa-product-gallery__single img,.sapamefa-product-gallery__item img{width:100%;height:100%;object-fit:contain;padding:0;background:var(--smf-color-transparent);transition:transform var(--smf-motion-image) var(--smf-ease-emphasized)}.sapamefa-product-gallery__single:hover img,.sapamefa-product-gallery__single:focus-visible img,.sapamefa-product-gallery__item:hover img,.sapamefa-product-gallery__item:focus-visible img{transform:scale(1.03)}
.sapamefa-product-gallery__placeholder .sapamefa-media-placeholder{border:0;background:var(--smf-color-transparent)}.sapamefa-product-gallery__placeholder .sapamefa-media-placeholder>img{width:min(46%,180px);max-height:72px;opacity:.4;filter:none}
.sapamefa-zoom-indicator{position:absolute;inset:0;z-index:1;display:flex;align-items:center;justify-content:center;opacity:0;pointer-events:none;transition:opacity var(--smf-motion-control) var(--smf-ease-standard)}.sapamefa-product-gallery__single:hover .sapamefa-zoom-indicator,.sapamefa-product-gallery__single:focus-visible .sapamefa-zoom-indicator,.sapamefa-product-gallery__item:hover .sapamefa-zoom-indicator,.sapamefa-product-gallery__item:focus-visible .sapamefa-zoom-indicator{opacity:1}.sapamefa-zoom-indicator i{position:absolute;display:block;background:var(--smf-color-bright)}.sapamefa-zoom-indicator .is-top,.sapamefa-zoom-indicator .is-bottom{width:var(--smf-border-width-strong);height:30px}.sapamefa-zoom-indicator .is-left,.sapamefa-zoom-indicator .is-right{width:30px;height:var(--smf-border-width-strong)}.sapamefa-zoom-indicator .is-top{transform:translateY(-50%)}.sapamefa-zoom-indicator .is-bottom{transform:translateY(50%)}.sapamefa-zoom-indicator .is-left{transform:translateX(-50%)}.sapamefa-zoom-indicator .is-right{transform:translateX(50%)}
.sapamefa-product-gallery__toggle-wrap{text-align:center;margin-top:var(--smf-space-7)}.sapamefa-product-gallery__toggle{display:inline-flex;align-items:center;gap:var(--smf-space-2);padding:var(--smf-space-2);border:0;background:transparent;color:var(--smf-color-text-muted);font-size:var(--smf-type-sm);font-weight:var(--smf-font-weight-semibold);line-height:var(--smf-line-title);cursor:pointer}.sapamefa-product-gallery__toggle:hover,.sapamefa-product-gallery__toggle:focus-visible{color:var(--smf-color-teal)}.sapamefa-product-gallery__toggle i{font-size:var(--smf-font-size-2xs);transition:transform var(--smf-motion-control) var(--smf-ease-standard)}.sapamefa-product-gallery__toggle[aria-expanded=true] i{transform:rotate(180deg)}
/* ND22 — intro row (product blurb + consult CTA), replaces the ND20/ND21 bordered intro block. */
.sapamefa-product-intro-section{padding-block:var(--smf-space-7);border-bottom:var(--smf-border-width-hairline) solid var(--smf-color-border);background:var(--smf-color-surface-soft)}
.sapamefa-product-intro-row{display:flex;align-items:center;justify-content:flex-start;gap:1.5cm;flex-wrap:nowrap}
.sapamefa-product-intro{flex:1 1 auto;min-width:0}
.sapamefa-product-intro__text{margin:0;text-align:left;font-family:var(--smf-font-sans);font-size:var(--smf-type-reading-size);font-style:normal;font-weight:var(--smf-font-weight-regular);line-height:var(--smf-type-reading-line);color:var(--smf-color-teal)}
.sapamefa-product-intro__text strong{font-weight:var(--smf-font-weight-semibold);color:inherit}
.sapamefa-product-consult-cta{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;gap:var(--smf-space-2);height:58px;padding-inline:var(--smf-space-5);border:0;border-radius:var(--smf-radius-control);background:var(--smf-color-teal);color:#fff;font-size:var(--smf-type-sm);font-weight:var(--smf-font-weight-semibold);line-height:var(--smf-line-title);letter-spacing:var(--smf-tracking-button);cursor:pointer;white-space:nowrap}
.sapamefa-product-consult-cta:hover{opacity:.92}
.sapamefa-product-consult-cta:focus-visible{outline:var(--smf-border-width-strong) solid var(--smf-color-focus);outline-offset:var(--smf-focus-offset)}

/* ND22 — three-tab strip restored to its pre-ND20 card/border/state design. */
.sapamefa-product-details{padding-block:var(--smf-section-compact);background:var(--smf-color-surface-soft)}.sapamefa-tabs--product{overflow:hidden;border:var(--smf-border-width-hairline) solid var(--smf-color-border);border-radius:var(--smf-radius-feature);background:var(--smf-color-surface)}.sapamefa-tabs--product .sapamefa-tabs__list{display:flex;border-bottom:var(--smf-border-width-hairline) solid var(--smf-color-border);background:var(--smf-color-surface-soft)}.sapamefa-tabs--product .sapamefa-tabs__tab{flex:1 1 0;min-width:0;min-height:58px;padding-inline:var(--smf-space-6);border:0;border-bottom:var(--smf-border-width-strong) solid transparent;background:transparent;color:var(--smf-color-text-muted);font-size:var(--smf-type-sm);font-weight:var(--smf-font-weight-semibold);cursor:pointer}.sapamefa-tabs--product .sapamefa-tabs__tab[hidden]{display:none}.sapamefa-tabs--product .sapamefa-tabs__tab:hover,.sapamefa-tabs--product .sapamefa-tabs__tab:focus-visible{color:var(--smf-color-teal)}.sapamefa-tabs--product .sapamefa-tabs__tab.is-active{border-bottom-color:var(--smf-color-teal);background:var(--smf-color-surface);color:var(--smf-color-deep)}.sapamefa-tabs__panel{padding:0}.sapamefa-product-details__content{min-height:140px;padding:var(--smf-space-8);overflow:hidden;transition:max-height var(--smf-motion-control) var(--smf-ease-standard)}.sapamefa-product-details__content.is-fully-expanded{overflow:visible}.sapamefa-product-details__empty{margin:0;color:var(--smf-color-text-muted);font-style:normal}.sapamefa-product-details__toggle{width:100%;min-height:48px;display:flex;align-items:center;justify-content:center;gap:var(--smf-space-2);border:0;border-top:var(--smf-border-width-hairline) solid var(--smf-color-border);background:var(--smf-color-surface);color:var(--smf-color-text-muted);font-size:var(--smf-type-sm);font-weight:var(--smf-font-weight-semibold);line-height:var(--smf-line-title);cursor:pointer}.sapamefa-product-details__toggle[hidden]{display:none}.sapamefa-product-details__toggle:hover,.sapamefa-product-details__toggle:focus-visible{color:var(--smf-color-teal);background:var(--smf-color-surface-soft)}.sapamefa-product-details__toggle i{transition:transform var(--smf-motion-fast) var(--smf-ease-standard)}.sapamefa-product-details__toggle[aria-expanded=true] i{transform:rotate(180deg)}
.sapamefa-product-related{padding-block:var(--smf-section-standard);border-top:var(--smf-border-width-hairline) solid var(--smf-color-border-soft);background:var(--smf-color-surface)}
@media(max-width:1599px){.sapamefa-product-grid--related{grid-template-columns:repeat(4,minmax(0,1fr));gap:28px}}
@media(max-width:1299px){.sapamefa-product-grid--related{grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}}
@media(max-width:1023px){.sapamefa-product-intro-row{gap:var(--smf-space-5)}}
@media(max-width:991px){.sapamefa-product-grid--related{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}}
@media(max-width:767px){.sapamefa-product-gallery{padding-block:var(--smf-space-8)}.sapamefa-product-gallery__single img,.sapamefa-product-gallery__item img{padding:0}.sapamefa-product-intro-row{flex-direction:column;align-items:stretch;gap:var(--smf-space-4)}.sapamefa-product-intro__text{text-align:left}.sapamefa-product-consult-cta{align-self:flex-start}.sapamefa-tabs--product .sapamefa-tabs__list{flex-direction:column}.sapamefa-tabs--product .sapamefa-tabs__tab{justify-content:flex-start;text-align:left;border-bottom:var(--smf-border-width-hairline) solid var(--smf-color-border);border-left:var(--smf-border-width-emphasis) solid transparent}.sapamefa-tabs--product .sapamefa-tabs__tab.is-active{border-left-color:var(--smf-color-teal);border-bottom-color:var(--smf-color-border)}.sapamefa-product-details__content{padding:var(--smf-space-6) var(--smf-space-5)}.sapamefa-product-grid--related{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}}
@media(max-width:575px){.sapamefa-product-grid--related{grid-template-columns:1fr;gap:16px}}
@media(prefers-reduced-motion:reduce){.sapamefa-product-gallery__single img,.sapamefa-product-gallery__item img,.sapamefa-product-details__content,.sapamefa-product-gallery__toggle i{transition:none!important}}

/* V9.14 product visual harmonization. */
.sapamefa-product-details__content{overflow-wrap:anywhere;}
@media(max-width:389px){.sapamefa-tabs__list button{padding-inline:var(--smf-space-3)}}

/* SAPAMEFA V10.7 — Product Gallery transparent rounded-frame contract.
   Every product image is clipped by a real transparent frame and scales
   proportionally with object-fit: contain; square exposed corners are forbidden. */
.sapamefa-product-gallery__single,
.sapamefa-product-gallery__grid {
  border: var(--smf-border-width-hairline) solid var(--smf-color-transparent);
  border-radius: var(--smf-radius-media);
  background: var(--smf-color-transparent);
  overflow: hidden;
}
.sapamefa-product-gallery__item,
.sapamefa-product-gallery__placeholder {
  border: var(--smf-border-width-hairline) solid var(--smf-color-transparent);
  border-radius: var(--smf-radius-control);
  background: var(--smf-color-transparent);
  overflow: hidden;
}
.sapamefa-product-gallery__single img,
.sapamefa-product-gallery__item img,
.sapamefa-product-gallery__placeholder img {
  max-width: 100%;
  max-height: 100%;
  border-radius: inherit;
  object-fit: contain;
  box-sizing: border-box;
  clip-path: inset(0 round var(--smf-radius-control));
}


#sapamefa-product-page .sapamefa-product-related .sapamefa-product-grid--related {
  align-items: stretch;
  gap: 32px;
}
#sapamefa-product-page .sapamefa-product-related .sapamefa-product-card__body {
  padding-bottom: var(--smf-space-5);
}

/* SAPAMEFA V10.11-work — Product Gallery internal-divider correction.
   The rounded outer frame remains transparent and provides clipping only.
   Grid cells have no visible perimeter frame; only internal row/column
   boundaries are drawn for galleries containing two or more images. */
#sapamefa-product-page .sapamefa-product-gallery__grid > .sapamefa-product-gallery__item,
#sapamefa-product-page .sapamefa-product-gallery__grid > .sapamefa-product-gallery__placeholder {
  border: 0;
  border-radius: 0;
}
#sapamefa-product-page .sapamefa-product-gallery__grid > .sapamefa-product-gallery__item img,
#sapamefa-product-page .sapamefa-product-gallery__grid > .sapamefa-product-gallery__placeholder img {
  border-radius: 0;
  clip-path: none;
}
#sapamefa-product-page .sapamefa-product-gallery__grid > *:nth-child(2n) {
  border-left: var(--smf-gallery-divider-size) solid var(--smf-gallery-divider-color);
}
#sapamefa-product-page .sapamefa-product-gallery__grid > *:nth-child(n + 3) {
  border-top: var(--smf-gallery-divider-size) solid var(--smf-gallery-divider-color);
}

/* ND18/ND20 — description-tab typography exception.
   Scope strictly limited to #sapamefa-product-content-description; the
   .sapamefa-richtext rules in sapamefa-components.css stay untouched and
   continue to govern every other rich-text area (specs, accessories, CMS).
   SAPAMEFA_V3.40 — Product description is the contract's explicit
   "Product description" role: 16px / 400 / 1.65 (canonical body scale),
   not the Lead role, and block spacing stays reduced from 0.75em to 0.5em. */
#sapamefa-product-content-description {
  font-family: var(--smf-font-sans) !important;
  font-size: var(--smf-type-body-size) !important;
  line-height: var(--smf-type-body-line) !important;
  letter-spacing: var(--smf-tracking-normal) !important;
}
#sapamefa-product-content-description :is(p, li, td, th, blockquote, figcaption) {
  font-family: var(--smf-font-sans) !important;
  font-size: var(--smf-type-body-size) !important;
  font-style: normal !important;
  font-weight: var(--smf-type-body-weight) !important;
  line-height: var(--smf-type-body-line) !important;
  letter-spacing: var(--smf-tracking-normal) !important;
}
#sapamefa-product-content-description :is(em, i) {
  font-style: italic !important;
  font-weight: inherit !important;
}
#sapamefa-product-content-description :is(strong, b) {
  color: inherit !important;
}
#sapamefa-product-content-description u {
  text-decoration: underline !important;
}
#sapamefa-product-content-description :is(s, strike, del) {
  text-decoration: line-through !important;
}
#sapamefa-product-content-description li + li {
  margin-top: 0 !important;
}
#sapamefa-product-content-description :is(p, ul, ol, blockquote, table, figure) {
  margin-block: 0.5em !important;
}
#sapamefa-product-content-description > :first-child {
  margin-top: 0 !important;
}
#sapamefa-product-content-description > :last-child {
  margin-bottom: 0 !important;
}

/* ND22 — consult & quote modal. */
.sapamefa-product-modal {
  position: fixed;
  inset: 0;
  z-index: 1000;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: var(--smf-space-6);
}
.sapamefa-product-modal[hidden] {
  display: none;
}
.sapamefa-product-modal__backdrop {
  position: absolute;
  inset: 0;
  background: #000;
  opacity: 0.5;
  transition: opacity 0.8s var(--smf-ease-standard);
}
.sapamefa-product-modal__backdrop.is-fading-out {
  opacity: 0;
}
.sapamefa-product-modal__dialog {
  position: relative;
  z-index: 1;
  width: min(1320px, 92vw);
  max-height: min(760px, 74vh);
  display: flex;
  flex-direction: column;
  overflow: hidden;
  background: var(--smf-color-surface);
  border-radius: var(--smf-radius-feature);
  box-shadow: 0 24px 64px rgba(3, 35, 46, 0.32);
  outline: 0;
  transition: opacity 0.6s var(--smf-ease-standard);
}
.sapamefa-product-modal__dialog.is-fading-out {
  opacity: 0;
  pointer-events: none;
}
.sapamefa-product-modal__close {
  position: absolute;
  top: var(--smf-space-3);
  right: var(--smf-space-3);
  z-index: 2;
  width: 36px;
  height: 36px;
  display: flex;
  align-items: center;
  justify-content: center;
  border: 0;
  border-radius: 50%;
  background: var(--smf-color-surface-soft);
  color: var(--smf-color-text-muted);
  cursor: pointer;
}
.sapamefa-product-modal__close:hover,
.sapamefa-product-modal__close:focus-visible {
  color: var(--smf-color-teal);
  background: var(--smf-color-teal-10);
}
.sapamefa-product-modal__close:focus-visible {
  outline: var(--smf-border-width-strong) solid var(--smf-color-focus);
  outline-offset: var(--smf-focus-offset);
}
.sapamefa-product-modal__body {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  align-items: stretch;
  gap: 1cm;
  padding: 1cm;
  overflow: auto;
}
.sapamefa-product-modal__media {
  position: relative;
  container-type: size;
  background: #fff;
  border: var(--smf-border-width-hairline) solid var(--smf-color-border);
  border-radius: var(--smf-radius-control);
}
/* ND30 mục 4 — the canvas must use the maximum available square within the
   left column instead of a fixed cap. `aspect-ratio` alone on an
   auto-sized absolutely positioned box does not reliably shrink to the
   shorter axis (it can stretch to the inset-bound width and overflow the
   height instead) — measured and confirmed while building this fix. Sizing
   the square explicitly from the container's own query dimensions
   (`cqw`/`cqh`, via `container-type:size` on `.media`) gives a true
   `min(width, height)` square, minus a symmetric gutter, then centers it
   with `inset:0; margin:auto` on definite (non-auto) width/height — no
   fixed px limit, no JS measurement needed. */
.sapamefa-product-modal__canvas {
  position: absolute;
  inset: 0;
  margin: auto;
  width: min(calc(100cqw - 2 * var(--smf-space-4)), calc(100cqh - 2 * var(--smf-space-4)));
  aspect-ratio: 1 / 1;
  overflow: hidden;
}
.sapamefa-product-modal__image {
  width: 100%;
  height: 100%;
  object-fit: contain;
  background: #fff;
}
.sapamefa-product-modal__image.is-fallback {
  opacity: 0.5;
}
/* ND30 mục 5 — this wrapper is layout-only now (no border/background/radius/
   padding of its own): the existing contact-form-card component is the sole
   visual frame for the form column, matching the left column's single-frame
   treatment instead of nesting a second card inside another. */
.sapamefa-product-modal__form {
  overflow: auto;
}

/* 00-TRIEN-KHAI-03 direct fix — the Product template does not load
   sapamefa-contact.css, so the Product Modal must own its scoped form rules
   inside the asset that is actually loaded on Product pages. The right panel
   reuses the Contact-page component language at 88% scale, with a real 5mm
   inner inset and a full-width submit control. */
#sapamefa-product-page .sapamefa-product-modal__form {
  min-width: 0;
  display: flex;
  overflow: auto;
}
#sapamefa-product-page .sapamefa-product-modal .contact-form-card {
  width: 100%;
  min-height: 100%;
  margin: 0;
  padding: 5mm !important;
  box-sizing: border-box;
  border: var(--smf-border-width-hairline) solid var(--smf-color-border);
  border-radius: var(--smf-radius-feature);
  background: var(--smf-color-surface-soft);
  box-shadow: none;
  display: flex;
  flex-direction: column;
}
#sapamefa-product-page .sapamefa-product-modal .contact-form-card > form {
  width: 100%;
  min-width: 0;
  display: block;
}
#sapamefa-product-page .sapamefa-product-modal .contact-form-card h2,
#sapamefa-product-page .sapamefa-product-modal .sapamefa-form-card__title {
  margin: 0 0 8px;
  color: var(--smf-color-deep);
  font-size: calc(var(--smf-font-size-xl) * 0.88);
  line-height: var(--smf-line-heading);
  font-weight: var(--smf-font-weight-extrabold);
  letter-spacing: var(--smf-tracking-wide);
  text-transform: uppercase;
  text-align: center;
}
#sapamefa-product-page .sapamefa-product-modal .contact-form-card__intro,
#sapamefa-product-page .sapamefa-product-modal .sapamefa-form-card__intro {
  margin: 0 0 calc(var(--smf-space-6) * 0.88);
  color: var(--smf-color-text-muted);
  font-size: calc(var(--smf-font-size-xs) * 0.88);
  line-height: var(--smf-line-body);
  text-align: center;
}
#sapamefa-product-page .sapamefa-product-modal .contact-form-grid,
#sapamefa-product-page .sapamefa-product-modal .sapamefa-form-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0 15px;
}
#sapamefa-product-page .sapamefa-product-modal .contact-field,
#sapamefa-product-page .sapamefa-product-modal .sapamefa-form-field {
  min-width: 0;
  margin-bottom: 15px;
}
#sapamefa-product-page .sapamefa-product-modal .contact-field label,
#sapamefa-product-page .sapamefa-product-modal .sapamefa-form-field label {
  display: block;
  margin-bottom: 6px;
  color: var(--smf-color-text-muted);
  font-size: calc(var(--smf-font-size-2xs) * 0.88);
  line-height: var(--smf-line-compact);
  font-weight: var(--smf-font-weight-extrabold);
  letter-spacing: var(--smf-tracking-eyebrow);
  text-transform: uppercase;
}
#sapamefa-product-page .sapamefa-product-modal .contact-field input,
#sapamefa-product-page .sapamefa-product-modal .contact-field select,
#sapamefa-product-page .sapamefa-product-modal .contact-field textarea,
#sapamefa-product-page .sapamefa-product-modal .sapamefa-form-field input,
#sapamefa-product-page .sapamefa-product-modal .sapamefa-form-field select,
#sapamefa-product-page .sapamefa-product-modal .sapamefa-form-field textarea {
  width: 100%;
  max-width: none;
  box-sizing: border-box;
  border: var(--smf-border-width-hairline) solid var(--smf-color-border);
  border-radius: var(--smf-radius-control);
  background: var(--smf-color-surface);
  color: var(--smf-neutral-800);
  font: inherit;
  font-size: calc(var(--smf-font-size-sm) * 0.88);
  line-height: var(--smf-line-compact);
  padding: calc(var(--smf-space-3) * 0.88) 12px;
  outline: 0;
}
#sapamefa-product-page .sapamefa-product-modal .contact-field textarea,
#sapamefa-product-page .sapamefa-product-modal .sapamefa-form-field textarea {
  min-height: 111px;
  resize: vertical;
}
#sapamefa-product-page .sapamefa-product-modal .contact-field input[readonly],
#sapamefa-product-page .sapamefa-product-modal .sapamefa-form-field input[readonly] {
  background: var(--smf-color-surface-soft);
  color: var(--smf-color-text-muted);
  cursor: default;
}
#sapamefa-product-page .sapamefa-product-modal .contact-privacy,
#sapamefa-product-page .sapamefa-product-modal .sapamefa-form-privacy {
  width: 100%;
  max-width: none;
  margin: 12px 0 calc(var(--smf-space-4) * 0.88);
  color: var(--smf-color-teal);
  font-size: calc(var(--smf-font-size-2xs) * 0.88);
  line-height: var(--smf-line-compact);
  font-style: normal;
  text-align: center;
}
#sapamefa-product-page .sapamefa-product-modal .contact-submit,
#sapamefa-product-page .sapamefa-product-modal .sapamefa-form-submit {
  display: flex !important;
  width: 100% !important;
  max-width: none !important;
  min-width: 0;
  min-height: calc(var(--smf-height-control) * 0.88);
  margin: 0 auto !important;
  padding: 13px 19px !important;
  box-sizing: border-box;
  flex: 0 0 auto;
  align-items: center;
  justify-content: center;
  border: 0;
  border-radius: var(--smf-radius-control);
  cursor: pointer;
  color: var(--smf-color-white) !important;
  background: var(--smf-gradient-brand-horizontal);
  font-size: calc(var(--smf-font-size-xs) * 0.88);
  line-height: var(--smf-line-compact);
  font-weight: var(--smf-font-weight-extrabold);
  letter-spacing: var(--smf-tracking-eyebrow);
  text-transform: uppercase;
  text-align: center;
}
#sapamefa-product-page .sapamefa-product-modal .contact-submit:hover,
#sapamefa-product-page .sapamefa-product-modal .contact-submit:focus-visible {
  color: var(--smf-color-deep) !important;
  background: var(--smf-color-bright);
}
#sapamefa-product-page .sapamefa-product-modal [data-sapamefa-product-modal-submit-target] {
  display: none !important;
}
.sapamefa-product-modal__thanks {
  position: absolute;
  inset: 0;
  z-index: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: var(--smf-space-3);
  text-align: center;
  padding: var(--smf-space-6);
  opacity: 0;
  transition: opacity 1.2s var(--smf-ease-standard);
}
.sapamefa-product-modal__thanks[hidden] {
  display: none;
}
.sapamefa-product-modal__thanks.is-visible {
  opacity: 1;
}
.sapamefa-product-modal__thanks.is-fading-out {
  transition-duration: 0.8s;
  opacity: 0;
}
.sapamefa-product-modal__thanks-text,
.sapamefa-product-modal__thanks-line {
  margin: 0;
  color: #fff;
  font-style: italic;
  font-weight: var(--smf-font-weight-regular);
  max-width: 480px;
}
.sapamefa-product-modal__thanks-line {
  font-size: 1.2em;
}
@media (max-width: 767px) {
  .sapamefa-product-modal {
    padding: var(--smf-space-4);
    align-items: flex-end;
  }
  .sapamefa-product-modal__dialog {
    width: 100%;
    max-height: min(92vh, 720px);
  }
  .sapamefa-product-modal__body {
    grid-template-columns: minmax(0, 1fr);
    gap: 0;
    padding: 0;
  }
  .sapamefa-product-modal__media {
    aspect-ratio: 1 / 1;
    border: 0;
    border-bottom: var(--smf-border-width-hairline) solid var(--smf-color-border);
    border-radius: 0;
  }
  #sapamefa-product-page .sapamefa-product-modal .contact-form-card {
    min-height: auto;
    padding: 5mm !important;
  }
  #sapamefa-product-page .sapamefa-product-modal .contact-form-grid,
  #sapamefa-product-page .sapamefa-product-modal .sapamefa-form-grid {
    grid-template-columns: minmax(0, 1fr);
    gap: 0;
  }
}
@media (prefers-reduced-motion: reduce) {
  .sapamefa-product-modal__dialog,
  .sapamefa-product-modal__thanks,
  .sapamefa-product-modal__backdrop {
    transition-duration: 0.01ms !important;
  }
}

/* GÓI 01 — Tab Thông số kỹ thuật: lưới thông số động.
   Mỗi .sapamefa-specs-row là một nhóm thông số; data-spec-count phản ánh số
   ô có dữ liệu thực tế trong đúng nhóm đó (không tính ô rỗng đã bị ẩn ở
   Liquid/JS), dùng để chia đều 1-3 cột trên desktop. Từ 4 ô trở lên dùng
   chung lưới 4 cột và tự xuống hàng. */
.sapamefa-specs-grid {
  display: flex;
  flex-direction: column;
  gap: var(--smf-space-5);
}
.sapamefa-specs-row {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: var(--smf-space-4);
}
.sapamefa-specs-row[data-spec-count="1"] {
  grid-template-columns: minmax(0, 1fr);
}
.sapamefa-specs-row[data-spec-count="2"] {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}
.sapamefa-specs-row[data-spec-count="3"] {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}
.sapamefa-specs-cell {
  min-width: 0;
  padding: var(--smf-space-4) var(--smf-space-5);
  border: var(--smf-border-width-hairline) solid var(--smf-color-border);
  border-radius: var(--smf-radius-control);
  background: var(--smf-color-surface-soft);
}
.sapamefa-specs-cell__label {
  display: block;
  margin: 0 0 var(--smf-space-2);
  color: var(--smf-color-text-muted);
  font-size: var(--smf-type-sm);
  font-weight: var(--smf-font-weight-semibold);
  line-height: var(--smf-line-compact);
  letter-spacing: var(--smf-tracking-normal);
  text-transform: none;
  overflow-wrap: anywhere;
}
.sapamefa-specs-cell__value {
  display: block;
  color: var(--smf-color-text-strong);
  font-size: var(--smf-font-size-sm);
  font-weight: var(--smf-font-weight-semibold);
  line-height: var(--smf-line-compact);
  font-variant-numeric: tabular-nums lining-nums;
  overflow-wrap: anywhere;
}
@media (max-width: 1023px) {
  .sapamefa-specs-row {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  }
}
@media (max-width: 767px) {
  .sapamefa-specs-row {
    grid-template-columns: minmax(0, 1fr) !important;
  }
  .sapamefa-specs-cell {
    padding: var(--smf-space-3) var(--smf-space-4);
  }
}


/* SAPAMEFA_V3.42-HOTFIX-20260727-04 — product modal consent row must match the contact-page form.
   Keep the checkbox inline with the privacy sentence, restore normal sentence casing,
   and prevent generic product-modal input/label rules from styling the checkbox row like a normal field. */
#sapamefa-product-page .sapamefa-product-modal .contact-field label:not(.sapamefa-form-consent-copy),
#sapamefa-product-page .sapamefa-product-modal .sapamefa-form-field label:not(.sapamefa-form-consent-copy) {
  display: block;
}
#sapamefa-product-page .sapamefa-product-modal .contact-field input:not([type="checkbox"]),
#sapamefa-product-page .sapamefa-product-modal .contact-field select,
#sapamefa-product-page .sapamefa-product-modal .contact-field textarea,
#sapamefa-product-page .sapamefa-product-modal .sapamefa-form-field input:not([type="checkbox"]),
#sapamefa-product-page .sapamefa-product-modal .sapamefa-form-field select,
#sapamefa-product-page .sapamefa-product-modal .sapamefa-form-field textarea {
  width: 100%;
}
#sapamefa-product-page .sapamefa-product-modal .contact-field .contact-privacy,
#sapamefa-product-page .sapamefa-product-modal .sapamefa-form-consent.contact-privacy {
  display: flex;
  align-items: flex-start;
  justify-content: center;
  gap: 6px;
  width: min(94%, 44rem);
  max-width: 94%;
  margin: 12px auto calc(var(--smf-space-4) * 0.88);
  color: var(--smf-color-teal);
  font-size: calc(var(--smf-font-size-2xs) * 0.88);
  line-height: var(--smf-line-compact);
  font-style: normal;
  font-weight: var(--smf-font-weight-medium, normal);
  letter-spacing: normal;
  text-transform: none;
  text-align: center;
}
#sapamefa-product-page .sapamefa-product-modal .sapamefa-form-consent-copy {
  display: inline;
  margin: 0;
  color: inherit;
  font: inherit;
  font-weight: inherit;
  line-height: inherit;
  letter-spacing: normal;
  text-transform: none;
  text-align: inherit;
  cursor: pointer;
}
#sapamefa-product-page .sapamefa-product-modal .sapamefa-form-consent-copy a {
  color: inherit;
  font: inherit;
  font-weight: inherit;
  text-decoration: underline;
  text-underline-offset: .15em;
  text-transform: none;
}
#sapamefa-product-page .sapamefa-product-modal .contact-privacy input[type="checkbox"],
#sapamefa-product-page .sapamefa-product-modal .sapamefa-form-consent.contact-privacy input[type="checkbox"] {
  appearance: auto;
  box-sizing: border-box;
  display: block;
  flex: 0 0 1em;
  width: 1em !important;
  min-width: 1em !important;
  max-width: 1em !important;
  height: 1em !important;
  min-height: 1em !important;
  max-height: 1em !important;
  margin: .08em 0 0;
  padding: 0 !important;
  border: 0 !important;
  border-radius: 2px;
  background: transparent !important;
  box-shadow: none !important;
}

/* ARTICLE-DETAIL-UI-02 — related products grid/carousel. */
#sapamefa-product-page .related-products__grid {
  display: grid;
  gap: 24px;
  width: 100%;
}
#sapamefa-product-page .related-products__item,
#sapamefa-product-page .related-products__slide {
  min-width: 0;
  display: flex;
}
#sapamefa-product-page .related-products__item > .sapamefa-product-card,
#sapamefa-product-page .related-products__slide > .sapamefa-product-card {
  width: 100%;
  height: 100%;
}
#sapamefa-product-page .related-products__carousel {
  position: relative;
  width: 100%;
  padding-inline: 52px;
}
#sapamefa-product-page .related-products__viewport {
  width: 100%;
  overflow: hidden;
  touch-action: pan-y;
}
#sapamefa-product-page .related-products__track {
  display: flex;
  align-items: stretch;
  gap: 24px;
  transform: translate3d(0,0,0);
  transition: transform 280ms var(--smf-ease-standard);
  will-change: transform;
}
#sapamefa-product-page .related-products__slide { flex: 0 0 calc((100% - 72px) / 4); }
#sapamefa-product-page .related-products__arrow {
  position: absolute;
  top: 50%;
  z-index: 3;
  width: 44px;
  height: 44px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1px solid var(--smf-color-border);
  border-radius: 50%;
  background: var(--smf-color-surface);
  color: var(--smf-color-teal);
  transform: translateY(-50%);
  cursor: pointer;
  transition: border-color var(--smf-motion-fast) var(--smf-ease-standard), color var(--smf-motion-fast) var(--smf-ease-standard), opacity var(--smf-motion-fast) var(--smf-ease-standard);
}
#sapamefa-product-page .related-products__arrow--prev { left: 0; }
#sapamefa-product-page .related-products__arrow--next { right: 0; }
#sapamefa-product-page .related-products__arrow:hover:not(:disabled) { border-color: var(--smf-color-teal); color: var(--smf-color-deep); }
#sapamefa-product-page .related-products__arrow:focus-visible { outline: 3px solid var(--smf-color-focus); outline-offset: 3px; }
#sapamefa-product-page .related-products__arrow:disabled { opacity: .35; cursor: not-allowed; }
@media (min-width: 1280px) {
  #sapamefa-product-page .related-products__grid[data-count="4"] { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  #sapamefa-product-page .related-products__grid[data-count="3"] { grid-template-columns: repeat(3, minmax(0, 340px)); justify-content: center; }
  #sapamefa-product-page .related-products__grid[data-count="2"] { grid-template-columns: repeat(2, minmax(0, 340px)); justify-content: center; }
  #sapamefa-product-page .related-products__grid[data-count="1"] { grid-template-columns: minmax(0, 340px); justify-content: center; }
}
@media (min-width: 768px) and (max-width: 1279px) {
  #sapamefa-product-page .related-products__grid[data-count="4"],
  #sapamefa-product-page .related-products__grid[data-count="3"],
  #sapamefa-product-page .related-products__grid[data-count="2"] { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  #sapamefa-product-page .related-products__grid[data-count="1"] { grid-template-columns: minmax(0, 340px); justify-content: center; }
  #sapamefa-product-page .related-products__carousel { padding-inline: 48px; }
}
@media (max-width: 767px) {
  #sapamefa-product-page .related-products__grid { grid-template-columns: 1fr; }
  #sapamefa-product-page .related-products__carousel { padding-inline: 42px; }
  #sapamefa-product-page .related-products__track { gap: 16px; }
  #sapamefa-product-page .related-products__arrow { width: 36px; height: 36px; }
}
@media (prefers-reduced-motion: reduce) {
  #sapamefa-product-page .related-products__track { transition: none; }
}
