/* ============================================================================
   MAXIVO — Impeccable polish (impeccable.style principles).
   Inherits the existing tokens; adds craft, removes AI-slop tells.
   Discipline: flat, square, quiet — NO gradients, glass, rounding, bounce, or
   hype. Only hierarchy, typographic detail, and honest micro-interaction.
   Enqueued last, scoped to body.maxivo.
   ============================================================================ */

/* — /typeset : headings never leave an orphan word; body copy reads clean — */
body.maxivo h1, body.maxivo h2, body.maxivo h3,
body.maxivo .product_title, body.maxivo .mx-archive-title, body.maxivo .mx-sec-title,
body.maxivo .mx-hero-copy h1, body.maxivo .mx-lb-hero h1, body.maxivo .mx-editorial-panel h2,
body.maxivo .mx-drop-copy h2, body.maxivo .mx-about-h, body.maxivo .mx-size-intro h1 { text-wrap: balance; }
body.maxivo p, body.maxivo .mx-hero-aside p, body.maxivo .mx-feature p, body.maxivo .mx-measure-row p { text-wrap: pretty; }

/* — /typeset : prices & counters use tabular figures so digits line up in columns — */
body.maxivo .woocommerce-Price-amount, body.maxivo .amount, body.maxivo .price,
body.maxivo .order-line .value, body.maxivo .fc-total, body.maxivo .fc-line-total, body.maxivo .fc-subtotal,
body.maxivo .fc-shipping, body.maxivo [data-cd], body.maxivo .mx-card-price,
body.maxivo #ufc-qp-notice [data-ufc-qty] > div:last-child, body.maxivo table.shop_table .amount,
body.maxivo .quantity-box input, body.maxivo .quantity input.qty {
  font-variant-numeric: tabular-nums; font-feature-settings: "tnum" 1;
}

/* — /delight : one crisp, on-brand focus ring — never the browser's default halo — */
body.maxivo a:focus-visible, body.maxivo button:focus-visible, body.maxivo input:focus-visible,
body.maxivo select:focus-visible, body.maxivo textarea:focus-visible,
body.maxivo [tabindex]:focus-visible, body.maxivo .mx-sw:focus-visible {
  outline: 2px solid var(--mx-accent) !important; outline-offset: 3px !important;
}

/* — /delight : consistent, quiet transitions on interactive things (single properties;
   no scale-bounce, no shadow bloom — those read as AI slop) — */
body.maxivo .mx-btn, body.maxivo a.button, body.maxivo button.button,
body.maxivo .single_add_to_cart_button, body.maxivo .mx-drop-cta, body.maxivo .mx-sec-link,
body.maxivo #ufc-qp-notice [data-ufc-qty] {
  transition: background-color .2s ease, color .2s ease, border-color .2s ease, opacity .2s ease;
}

/* — reviews are on for the PDP, but empty ☆☆☆☆☆ on every grid card reads as "unrated" →
   hide the 0-review rating on loop/related cards (real ratings still show once earned). — */
body.maxivo li.product .star-rating, body.maxivo li.product .woocommerce-product-rating,
body.maxivo .product__rating:empty, body.maxivo li.product .star-rating:not([data-has-rating]) { display: none !important; }

/* — editorial image zoom toned down (impeccable flags aggressive image-on-hover) — */
body.maxivo .mx-zoom { transition: transform .7s cubic-bezier(.2,.7,.2,1) !important; }
body.maxivo a:hover > .mx-fill .mx-zoom, body.maxivo .mx-hoverzoom:hover .mx-zoom { transform: scale(1.03) !important; }

/* — /distill : chrome links (nav / utils / footer / drawer) get a quiet hover — a subtle dim,
   not the crude default text-underline (kept only on in-content prose links). — */
body.maxivo .mx-nav a, body.maxivo .mx-utils a, body.maxivo .mx-footer a,
body.maxivo .mx-drawer a, body.maxivo .mx-sec-link, body.maxivo .mx-archive-crumb a {
  transition: color .18s ease, opacity .18s ease;
}
body.maxivo .mx-nav a:hover, body.maxivo .mx-utils a:hover, body.maxivo .mx-footer a:hover,
body.maxivo .mx-drawer a:hover, body.maxivo .mx-archive-crumb a:hover {
  text-decoration: none !important; opacity: .6;
}

@media (prefers-reduced-motion: reduce) {
  body.maxivo .mx-zoom, body.maxivo .mx-btn, body.maxivo .mx-utils a,
  body.maxivo #ufc-qp-notice [data-ufc-qty] { transition: none !important; }
  body.maxivo .mx-zoom { transform: none !important; }
}
