/* ═══════════════════════════════════════════════════════════════
   MOBILE PERFORMANCE OVERRIDE — v5.0
   Targets: Android 2015-era (1-2GB RAM, weak GPU)
   Strategy: Kill GPU-expensive properties on mobile,
             keep desktop 100% unchanged.
   Coverage: ALL 50+ tools — single file, global load.
   Sections 1-17: Round 2 (2026-04-25)
   Sections 18-31: Round 3 (2026-04-25) — comprehensive scan
   Sections 32-43: Round 4 (2026-04-25) — verification audit fix
   ═══════════════════════════════════════════════════════════════ */

@media (max-width: 768px) {

  /* ── 1. KILL DECORATIVE INFINITE ANIMATIONS ──
     Functional animations preserved: .is-shaking (xăm tube),
     .qa-sr-stick (stick drop), .loading, .spinner, counters */
  [class*="-ring"]:not([class*="portal-ring"]):not([class*="gc-ring"]):not([class*="toss-ring"]):not([class*="btn-ring"]):not([class*="ember-ring"]):not([class*="num-ring"]):not(.sm-vvm__ring--outer):not(.sm-vvm__ring--middle):not(.sbh-ring--slow):not(.sbh-ring--counter):not(.sbh-ring--medium),
  [class*="-orbit"],
  [class*="cosmos"],
  [class*="-constellation"],
  [class*="-starfield"],
  [class*="-nebula"],
  [class*="-particle"],
  [class*="-mandala"],
  [class*="-hexagram"],
  [class*="-trigram-ring"],
  [class*="-sacred"],
  [class*="-seal-"],
  [class*="-glow"]:not(button):not(a):not(input),
  [class*="-pulse"]:not(button):not(.btn):not(a),
  [class*="-breathe"],
  [class*="-twinkle"],
  [class*="-float"],
  [class*="-spin"]:not(.loading):not(.spinner):not([class*="is-spinning"]):not(.btn-spinner),
  [class*="rotate-slow"],
  [class*="rotate-reverse"],
  [class*="-aurora"],
  [class*="-compass-ring"],
  [class*="-bagua-ring"],
  [class*="-dragon"],
  [class*="-phoenix"],
  [class*="-flame"]:not(.qa-sr-ember),
  [class*="-wave-"],
  [class*="-ripple"]:not(.nr-ripple):not(.ct-db-ripple),
  [class*="-shimmer"]:not(h1):not(h2):not(h3),
  [class*="-meander"],
  .sm-hero-ring,
  .sm-hero-orbit,
  .smfb-fab__glow,
  .sm-cbar__icon svg,
  .sm-bc__item::before,
  .sm-bc__line::before {
    animation: none !important;
  }

  /* Pseudo-element decorations */
  [class*="-result"]::before,
  [class*="-result"]::after,
  [class*="-hero"]::before,
  [class*="-hero"]::after {
    animation: none !important;
  }

  /* Functional exclusions: xin xăm incense ceremony */
  .is-shaking,
  .qa-sr-stick,
  .qa-sr-ember,
  .qa-sr-smoke,
  .qa-tube.is-shaking {
    animation: revert !important;
  }

  /* Canvas star fields — pure decoration, heavy GPU */
  canvas[class*="star"],
  canvas[id*="star"],
  .ct-db-starfield,
  .bds-starfield {
    display: none !important;
  }

  /* ── 2. KILL DECORATIVE will-change ──
     Promotes elements to compositor layers = RAM.
     On 1-2GB devices, 600+ layers cause OOM jank.
     Targeted: decorative-only elements. Functional animations
     (coin flip, card flip, portal rings) keep GPU hints. */
  [class*="-seal"],
  [class*="-emblem"],
  [class*="-constellation"],
  [class*="-nebula"],
  [class*="-starfield"],
  [class*="-particle"],
  [class*="-sacred"],
  [class*="-meander"],
  [class*="-aurora"],
  [class*="-compass-ring"],
  [class*="-bagua-ring"],
  [class*="-dragon"],
  [class*="-phoenix"],
  [class*="-flame"]:not(.qa-sr-ember),
  [class*="-twinkle"],
  [class*="-breathe"],
  [class*="-float"] {
    will-change: auto !important;
  }

  /* ── 3. KILL ALL backdrop-filter ── */

  /* Global elements (main.css already has overrides, reinforce here) */
  .sm-header,
  .sm-header.is-scrolled,
  .sm-mobile-menu,
  .sm-hsearch-overlay,
  .sm-celestial-bar,
  .smfb-overlay {
    -webkit-backdrop-filter: none !important;
    backdrop-filter: none !important;
  }

  /* components.css — TOC bar */
  .sm-toc-bar {
    -webkit-backdrop-filter: none !important;
    backdrop-filter: none !important;
    background: rgba(12,11,9,0.98) !important;
  }
  .sm-toc-backdrop {
    -webkit-backdrop-filter: none !important;
    backdrop-filter: none !important;
  }

  /* boi-tarot.css — modal backdrop */
  .tr-modal-backdrop {
    -webkit-backdrop-filter: none !important;
    backdrop-filter: none !important;
    background: rgba(0,0,0,0.85) !important;
  }

  /* pages.css — about card */
  .sm-about__card {
    -webkit-backdrop-filter: none !important;
    backdrop-filter: none !important;
    background: rgba(12,12,10,0.95) !important;
  }

  /* kymon.css */
  .km-fs-header {
    -webkit-backdrop-filter: none !important;
    backdrop-filter: none !important;
    background: rgba(12,11,9,0.98) !important;
  }
  .km-lg-card {
    -webkit-backdrop-filter: none !important;
    backdrop-filter: none !important;
  }

  /* xem-ngay.css — steps bar */
  .xnt-steps-bar {
    -webkit-backdrop-filter: none !important;
    backdrop-filter: none !important;
    background: rgba(12,11,9,0.98) !important;
  }

  /* tuong-hoc-tuongmat.css — face reading UI */
  .tm-fo-magnify,
  .tm-fo-label,
  .tm-fo-tabs-wrap,
  .tm-fo-badge {
    -webkit-backdrop-filter: none !important;
    backdrop-filter: none !important;
  }

  /* ── 4. REDUCE BOX-SHADOW ──
     Large blur radius forces expensive Gaussian blur.
     Exclude interactive states so selection/active highlights work. */
  .sm-header {
    box-shadow: 0 1px 0 rgba(201,169,110,0.04), 0 2px 8px rgba(0,0,0,0.5) !important;
  }

  [class*="-card"]:not(.is-active):not(.is-selected):not(.is-flipped):not(.cur):not(.tr-card),
  [class*="-panel"],
  [class*="-section"]:not(.is-in-view),
  [class*="-result"] {
    box-shadow: 0 2px 8px rgba(0,0,0,0.3) !important;
  }

  /* ── 5. SIMPLIFY GRADIENTS ──
     conic-gradient and complex radial-gradient are GPU-expensive. */
  [class*="-cosmos"]::before,
  [class*="-cosmos"]::after,
  [class*="-starfield"]::before,
  [class*="-nebula"]::before {
    background: transparent !important;
  }

  /* ── 6. REDUCE CSS filters ── */
  [class*="-icon"]:not(.sm-header *),
  [class*="-avatar"],
  [class*="-seal"],
  [class*="-emblem"] {
    filter: none !important;
  }

  /* ── 8. KILL ANIMATED BOX-SHADOW ON PYTH FRAME (A1) ──
     6 phongthuy files animate .tsh-pyth-frame box-shadow 36→90px infinite.
     Parent .cosmos caught but child animation NOT caught by wildcards. */
  .tsh-pyth-frame {
    animation: none !important;
    box-shadow: 0 2px 8px rgba(0,0,0,0.3) !important;
  }

  /* ── 9. KILL EXTREME FILTER ANIMATIONS (A2) ──
     bx-quan-cong qcSrSvgBloom: 120px drop-shadow on result reveal */
  .qc-sr-svg {
    filter: none !important;
    animation: none !important;
  }

  /* ── 10. KILL FAB DECORATIVE ANIMATIONS (A3) ──
     Explicit selectors to avoid hitting functional TOC fabs. */
  .smfb-fab::after,
  .smfb-fab--burst,
  .smfb-fab--burst::before,
  [id$="-toc-fab"]::before,
  [id$="-toc-fab"]::after {
    animation: none !important;
  }

  /* ── 11. REDUCE TEXT-SHADOW (A4) ──
     30-60px blur text-shadows on floating numbers and result titles */
  [class*="-fn-num"],
  [class*="-fn-"],
  [class*="-result-title"],
  [class*="-num-glow"] {
    text-shadow: 0 0 4px currentColor !important;
  }

  /* ── 12. RESTRICT TRANSITION — targeted only ──
     Only .tm-fo-magnify has backdrop-filter + transition:all combo.
     All other expensive combos already handled by Sections 3, 4, 6. */
  .tm-fo-magnify,
  .tm-fo-label,
  .tm-fo-badge {
    transition-property: opacity, transform !important;
  }

  /* ── 13. KILL TAROT CARD ANIMATED BOX-SHADOW (A6) ── */
  .tr-card,
  .tr-card.is-active {
    animation: none !important;
  }

  /* ── 14. KILL PORTRAIT SVG TRIPLE GPU KILLER (A7) ──
     spinning 30s + filter:drop-shadow + will-change combined */
  .tr-portrait-deco--top svg {
    animation: none !important;
    filter: none !important;
  }

  /* ── 15. KILL CONIC GRADIENTS ON NON-COSMOS ELEMENTS (A8) ── */
  .qc-reveal-portal::before,
  .qc-reveal-portal::after,
  [class*="-bagua-outer"]::before,
  [class*="-bagua-outer"]::after {
    background: transparent !important;
  }

  /* ── 16. REDUCE HERO/FORM INSET BOX-SHADOW (A10-A11) ── */
  .biz-hero {
    box-shadow: inset 0 0 20px rgba(0,0,0,0.3) !important;
  }
  .tr-form-box {
    box-shadow: 0 2px 12px rgba(0,0,0,0.4) !important;
  }

  /* ── 17. FACE READING UI — restrict transitions (A9+A5) ── */
  .tm-fo-magnify,
  .tm-fo-label,
  .tm-fo-badge {
    transition: opacity 200ms ease !important;
  }

  /* ══════════════════════════════════════════════════════════
     ROUND 3 — Final comprehensive scan (sections 18-31)
     ══════════════════════════════════════════════════════════ */

  /* ── 18. FORM-BOX BOX-SHADOW 48px (10+ tools) ── */
  [class*="-form-box"] {
    box-shadow: 0 2px 8px rgba(0,0,0,0.3) !important;
  }

  /* ── 19. BACKDROP-FILTER GAPS (search, nav dropdown) ── */
  .sm-hsearch-results,
  .sm-hsearch-backdrop,
  .sm-header__menu .sub-menu,
  .sbh-live-results,
  .sbh-search-backdrop {
    -webkit-backdrop-filter: none !important;
    backdrop-filter: none !important;
    background: rgba(12,11,9,0.98) !important;
  }

  /* ── 20. AMBIENT ORBS filter:blur(100px) ── */
  [class*="-orb"]:not(button):not(a):not([class*="sm-cat-orb"]) {
    filter: none !important;
    animation: none !important;
    opacity: 0 !important;
  }

  /* ── 21. HOMEPAGE TOOL/POST CARDS conic-gradient + spin ── */
  .sm-tool-card::before,
  .sm-tool-card::after,
  .sm-tool-card__icon::before,
  .sm-tool-card__icon::after,
  .sm-post-card::before,
  .sm-post-card__astrolabe,
  .sm-tsh-number-card::before {
    animation: none !important;
    background: transparent !important;
  }

  /* ── 22. TSH RESULT animated box-shadow keyframes ── */
  .sm-tsh-number-card[data-master="true"] {
    animation: none !important;
  }
  .sm-tsh-loshu__cell--active {
    animation: none !important;
  }
  .sm-tsh-cycle__year--current::after {
    animation: none !important;
    box-shadow: 0 0 8px rgba(201,169,110,0.2) !important;
  }

  /* ── 23. TAROT AI + wheel + decoration animations ── */
  .tr-ai-btn-frame,
  .tr-ai-btn-icon,
  .tr-giai-ma-btn.is-active,
  .tr-fan-diagram::before,
  .tr-ornament-icon svg,
  .tr-fc-sym,
  .tr-svg-rays,
  [class*="tr-wring"],
  .tr-weye,
  .tr-worb,
  [class*="tr-bgm-"],
  [class*="tr-pr-"],
  .tr-domain-tile.is-selected .tr-domain-rune {
    animation: none !important;
    filter: none !important;
  }
  .tr-ai-interpret,
  .tr-ai-btn-frame {
    box-shadow: 0 2px 8px rgba(0,0,0,0.3) !important;
  }

  /* ── 24. BOI KIEU AI + incense + frame ── */
  .bkieu-ai-btn,
  .bkieu-ai-btn::before,
  .bkieu-ai-btn::after,
  .bkieu-ai-btn-icon,
  .bkieu-pyth-frame,
  .bkieu-incense-tip,
  .bkieu-smoke span,
  .bkieu-ms-ptcl,
  [class*="bkieu-bgr"],
  [class*="bk-ai-pr-"] {
    animation: none !important;
  }
  .bkieu-ai-btn {
    box-shadow: 0 2px 8px rgba(0,0,0,0.3) !important;
  }
  .bkieu-pyth-frame {
    box-shadow: 0 2px 8px rgba(0,0,0,0.3) !important;
  }

  /* ── 25. DAILY portrait-deco + thread-signal ── */
  .daily-portrait-deco,
  .daily-thread-signal::before,
  .daily-thread-signal::after,
  .daily-khai-sdot.active,
  .cal-shift-arrow {
    animation: none !important;
  }

  /* ── 26. MAIN.CSS global UI ── */
  .sm-cbar__gio-chip.is-now,
  .sm-cbar__gio-chip.is-now.is-hac,
  .sm-corner-breathe,
  .sm-logo-orbit {
    animation: none !important;
  }

  /* ── 27. FORM TITLE text-shadow 60px ── */
  [class*="-form-title"] {
    text-shadow: 0 0 4px currentColor !important;
  }

  /* ── 28. SHARED TOOL DECORATIONS (btn shimmer, thread-signal, score-bar, petals) ── */
  [class*="-btn-submit"] .btn-text,
  [class*="-thread-signal"]::before,
  [class*="-thread-signal"]::after,
  [class*="-score-bar-fill"]::after,
  [class*="-missing-dot"],
  [class*="-petals-cw"],
  [class*="-petals-ccw"],
  [class*="-live-dot"],
  .btn-spinner {
    animation: none !important;
  }

  /* ── 29. XIN XAM temple smoke (NOT ceremony qa-sr-smoke) ── */
  .qa-tp-sp--2,
  .qa-tp-sp--3 {
    animation: none !important;
  }

  /* ── 30. PORTAL RING + PENT RING conic-gradient ── */
  [class*="-pent-ring"],
  [class*="-portal-rift"]::before,
  [class*="-portal-rift"]::after,
  .lh-portal-wrap::after,
  .qc-ic::before {
    animation: none !important;
    background: transparent !important;
  }

  /* ── 31. MISC uncovered ── */
  .qc-cine-inner {
    box-shadow: 0 2px 12px rgba(0,0,0,0.4) !important;
  }
  .qc-scroll-num {
    text-shadow: 0 0 4px currentColor !important;
  }
  .km-pr1,
  .km-pr2 {
    animation: none !important;
  }

  /* ══════════════════════════════════════════════════════════
     ROUND 4 — Verification audit fix (sections 32-43)
     ══════════════════════════════════════════════════════════ */

  /* ── 32. TSH DECORATIVE ANIMATIONS (tsh.css) ── */
  [class^="tsh-esvg-"],
  .tsh-connector.is-valid::before,
  .tsh-connector.is-valid::after,
  .tsh-advice::before,
  .tsh-funfact-icon,
  [class^="tshFam"],
  .tsh-yc-pulse::before, .tsh-yc-pulse::after,
  .tsh-yc-num-ring::before, .tsh-yc-num-ring::after {
    animation: none !important;
    filter: none !important;
  }

  /* ── 33. SAO HAN DECORATIVE ANIMATIONS (saohan.css) ── */
  .sh-check-card--high,
  .sh-9s-beam,
  .sh-nh-bridge-line,
  .sh-nh-cycle-active,
  .sh-ck-tali--pham .sh-ck-tali-svg,
  .sh-tx-flame,
  [class*="sh-bagua"],
  [class*="sh-corner"] {
    animation: none !important;
  }

  /* ── 34. SHARED PHONGTHUY RESULT DECORATIONS (10+ files) ── */
  .hh-gv2-bq,
  .hh-na-diag-svg,
  .hh-na-dka-icon,
  .htmn-kl-cer-r1,
  .htmn-kl-cer-r2,
  .htmn-kl-cer-char {
    animation: none !important;
  }

  /* ── 35. PHONGTHUY-AMTRACH + XAYNHA EXCLUSIVE ── */
  [class^="at-ds-"],
  [class^="at-lbr"],
  [class^="at-el-"],
  [class^="at-hx-"],
  .at-smoke,
  .xn-vk-ember {
    animation: none !important;
  }

  /* ── 36. XIN XAM / QUAN CONG / QUE KHONG MINH — ember/smoke/temple/AI ── */
  .qa-ember.is-lit,
  .qa-smoke.is-active span,
  .qa-sparks.is-active span,
  .qa-rtri,
  [class*="qa-tp-r"],
  .qa-tp-center,
  [class*="qa-ai-bpr-"],
  [class*="qa-ai-pr-"],
  .qa-ai-btn-cta-arr,
  .qkm-ember.is-lit,
  .qkm-smoke.is-active span,
  .qkm-sparks.is-active span,
  .qkm-rtri,
  .mh-ember.is-lit,
  .mh-smoke.is-active span,
  .mh-sparks.is-active span,
  .mh-rtri,
  [class*="qc-ai-bpr-"],
  [class*="qc-ai-pr-"],
  .qc-ai-btn-cta-arr,
  [class*="qc-ias-"],
  .qc-cine-corner,
  .qc-pt,
  .qc-tube-aura,
  .qc-reveal-char,
  .qc-p1-censer-char,
  .qc-p1-ember-ring {
    animation: none !important;
  }

  /* ── 37. CHIEMTINH / ZODIAC / HOPCUNG / DUBAO ── */
  .hc-top-center,
  .hc-bw-center,
  [class*="hc-star"],
  [class*="hc-orbit"],
  [class*="hc-core"],
  [class*="hc-glyph"],
  [class*="hc-cine"],
  .ct-db-dc,
  .zd-center-eye,
  [class^="zd-star--"],
  .zd-label-moon,
  [class^="zd-ps-t"],
  .xnt-hstar {
    animation: none !important;
  }

  /* ── 38. COMPATIBILITY / TUVI / MISC PER-TOOL ── */
  .compat-ef-outer,
  .compat-hero-score-num,
  .compat-hero-score-sym,
  .km-pr3,
  .tv-star-blink,
  .tv-tq-p-cw,
  .tv-tq-p-ccw,
  .tv-tq-quality--mieu .tv-tq-q-badge,
  .tv-nguhanh-flow,
  .tsh-pyth-frame::before,
  .tsh-pyth-frame::after,
  .phone-khai-sdot.active,
  .sbh-chevron,
  .sm-hero-center,
  .nr-arrow-guide--left {
    animation: none !important;
  }

  /* ── 39. SUBMIT ANALYZING + CURSOR BLINK + CTA GLOW + WEDDING RINGS ── */
  [class*="-submit-btn"].is-analyzing,
  [class*="submit-btn"].is-analyzing,
  .tr-sub-cursor,
  .bkieu-sub-cursor,
  .bkieu-counter-display,
  .sm-cta-hub__glow,
  .wd-cine-ring-1,
  .wd-cine-ring-2,
  .wd-cine-ring-3,
  .tr-giai-ma-btn {
    animation: none !important;
  }

  /* ── 40. TUONG HOC / LUC HAO DECORATIONS ── */
  .tm-rh-corner,
  .tm-rh-char,
  .tm-rh-eyebrow-text,
  .tm-rh-title,
  .lh-hero-arrow svg,
  .lh-dt-warn,
  .lh-tq-cat .lh-tq-dot,
  .lh-tq-hung .lh-tq-dot,
  .lh-tq-trung .lh-tq-dot {
    animation: none !important;
  }

  /* ── 41. BOX-SHADOW GAPS ── */
  [class*="-cosmos"] {
    box-shadow: inset 0 0 20px rgba(0,0,0,0.3) !important;
  }
  [id$="-toc-panel"],
  [id$="-toc-fab"],
  [id$="-natal-panel"],
  [id$="-natal-fab"] {
    box-shadow: 0 2px 12px rgba(0,0,0,0.5) !important;
  }
  .sm-mobile-menu {
    box-shadow: 0 4px 16px rgba(0,0,0,0.7) !important;
  }
  .smfb-modal {
    box-shadow: 0 2px 12px rgba(0,0,0,0.5) !important;
  }
  .sm-article__cta,
  .sm-toc-sheet {
    box-shadow: 0 2px 8px rgba(0,0,0,0.5) !important;
  }
  .hl-nav2-popup {
    box-shadow: 0 2px 12px rgba(0,0,0,0.5) !important;
  }
  .hc-score-hero,
  .km-ket-luan-badge--dai-cat,
  .km-luan-giai {
    box-shadow: 0 2px 8px rgba(0,0,0,0.3) !important;
  }
  .tm-fo-canvas {
    box-shadow: 0 2px 12px rgba(0,0,0,0.3) !important;
  }
  .tm-fo-lb-canvas {
    box-shadow: 0 2px 12px rgba(0,0,0,0.4) !important;
  }
  [class*="-hero-particles"]::after {
    box-shadow: 0 0 8px rgba(0,0,0,0.2) !important;
  }

  /* ── 42. TEXT-SHADOW GAPS ── */
  [class*="-pyth-name"],
  [class*="-pyth-quote"],
  [class*="-hero-number"],
  [class*="-form-sub"] {
    text-shadow: 0 0 4px currentColor !important;
  }

  /* ── 43. CONIC-GRADIENT + MIX-BLEND-MODE ── */
  .smfb-fab__glow,
  .bkieu-submit-btn.is-spinning::before {
    background: transparent !important;
  }
  [class*="-cine-fog"],
  .sm-header::after,
  .tr-fan-card::after {
    mix-blend-mode: normal !important;
  }

  /* ── 44. FINAL AUDIT — last 15 uncovered animations ── */

  /* boi-tarot.css: hero corner dot pulse */
  .tr-hero-corner .tr-corner-dot {
    animation: none !important;
  }

  /* components.css: skeleton shimmer, prose hr spin, CTA motif spin */
  .sm-skeleton {
    animation: none !important;
  }
  .sm-prose hr::after {
    animation: none !important;
  }
  .sm-cta-hub__motif svg {
    animation: none !important;
  }

  /* hoang-lich.css: hour item breathe, table title shimmer */
  .hl-hour-item--nhatchu,
  .hl-hour-table-title {
    animation: none !important;
  }

  /* hub-grid.css: card watermark spin, hero name shimmer */
  .smh-card__watermark,
  .smh-hero__name {
    animation: none !important;
  }

  /* pages.css: about hero portal rings + CTA button glow */
  .sm-about__hero-portal .ring-outer,
  .sm-about__hero-portal .ring-inner,
  .sm-about__hero-portal .ring-core,
  .sm-about__cta .sm-btn--primary {
    animation: none !important;
  }

  /* tool-content.css: CTA icon bounce */
  .tc-cta-icon {
    animation: none !important;
  }

  /* van-khan.css: incense smoke decorations */
  .vk-smoke-1,
  .vk-smoke-2,
  .vk-smoke-3 {
    animation: none !important;
  }

  /* ══════════════════════════════════════════════════════════
     SECTION 45 — FUNCTIONAL EXCLUSIONS v1.0
     Animations required for correct tool operation.
     Pattern: animation:revert undoes any animation:none above.
     ══════════════════════════════════════════════════════════ */

  /* DEADLOCK-CRITICAL: JS animationend listeners */
  .gq-coin-inner.is-spinning-heads,
  .gq-coin-inner.is-spinning-tails,
  .lh-coin-inner.is-spinning-heads,
  .lh-coin-inner.is-spinning-tails,
  .ct-db-ripple,
  .nr-ripple {
    animation: revert !important;
  }

  /* Button loading spinners */
  .btn-spinner {
    animation: revert !important;
  }

  /* Submit button analyzing state + portal rings */
  [class*="-submit-btn"].is-analyzing,
  [class*="submit-btn"].is-analyzing,
  [class*="-submit-btn"].is-analyzing [class*="portal-ring"],
  [class*="submit-btn"].is-analyzing [class*="portal-ring"],
  .bds-submit.bds-submit--loading .bds-btn-ring--outer,
  .bds-submit.bds-submit--loading .bds-btn-ring--inner {
    animation: revert !important;
  }

  /* Boi Kieu spinning border (conic gradient killed by Section 43) */
  .bkieu-submit-btn.is-spinning::before {
    animation: revert !important;
    background: revert !important;
  }

  /* Gender card selection rings */
  [class*="-gender-card"].is-active [class*="gc-ring"] {
    animation: revert !important;
  }

  /* Toss button rings (gieo que + luc hao) */
  .gq-toss-btn-ring--outer,
  .gq-toss-btn-ring--inner,
  .lh-toss-ring--outer,
  .lh-toss-ring--inner {
    animation: revert !important;
  }

  /* Ceremony: incense, smoke, sparks (4 tools) */
  .qa-ember.is-lit,
  .qa-smoke.is-active span,
  .qa-sparks.is-active span,
  .qkm-ember.is-lit,
  .qkm-smoke.is-active span,
  .qkm-sparks.is-active span,
  .mh-ember.is-lit,
  .mh-smoke.is-active span,
  .mh-sparks.is-active span {
    animation: revert !important;
  }

  /* Tarot functional */
  .tr-giai-ma-btn,
  .tr-giai-ma-btn.is-active,
  .tr-sub-cursor,
  .tr-domain-tile.is-selected .tr-domain-rune {
    animation: revert !important;
  }

  /* Boi Kieu functional */
  .bkieu-sub-cursor,
  .bkieu-counter-display {
    animation: revert !important;
  }

  /* Sao Han danger warnings */
  .sh-check-card--high,
  .sh-ck-tali--pham .sh-ck-tali-svg {
    animation: revert !important;
  }

  /* TSH validation energy flow */
  .tsh-connector.is-valid::before,
  .tsh-connector.is-valid::after {
    animation: revert !important;
  }

  /* Live/missing dot indicators */
  [class*="-live-dot"],
  [class*="-missing-dot"],
  .phone-khai-sdot.active,
  .daily-khai-sdot.active {
    animation: revert !important;
  }

  /* Skeleton loading shimmer */
  .sm-skeleton {
    animation: revert !important;
  }

  /* Not Ruoi onboarding arrow */
  .nr-arrow-guide--left {
    animation: revert !important;
  }

  /* Hoang Lich nhat chu hour highlight */
  .hl-hour-item--nhatchu {
    animation: revert !important;
  }

  /* ══════════════════════════════════════════════════════════
     SECTION 46 — TAP TARGET ≥44×44 cho TẤT CẢ button mobile (strict)
     Đợt 3 expand: cover MỌI interactive — submit/close/icon/nav/FAB/social.
     User yêu cầu "không 1 pixel lỗi" → close button cũng phải ≥44px.
     ══════════════════════════════════════════════════════════ */
  button,
  input[type="submit"],
  input[type="button"],
  input[type="reset"],
  a[class*="-btn"]:not([class*="-link"]),
  [role="button"]:not([class*="-tab"]) {
    min-height: 44px !important;
    min-width: 44px !important;
  }
  /* CHỈ exclude: badge/chip/dot (đó là VISUAL element, không phải button cần tap) */
  .sm-badge,
  .sm-chip,
  [class*="-dot"]:not(button):not([class*="-cta"]) {
    min-height: revert !important;
    min-width: revert !important;
  }

  /* ══════════════════════════════════════════════════════════
     SECTION 47 — FONT ≥12px cho TEXT user đọc (mobile readability)
     Đợt 5: 1696 elements <12px → bump CHỈ content text user đọc.
     Exclude (giữ nguyên — decorative/compact density):
       - sm-cbar__* (sticky celestial bar — dense info display)
       - tc-step-num (số trong circle 28-36px — decorative)
       - smc-prov__label (footer schema citation)
       - sm-footer__trust (footer trust line)
       - badge/chip/version/sep/sup/sub (visual element)
     ══════════════════════════════════════════════════════════ */
  .smh-card__desc,
  .smh-card__cta,
  .smh-card__arrow,
  .nh-ref-td,
  .nh-ref-td--napam,
  .sm-cat-orb__name,
  .tsh-hrp,
  [class*="-fc-tri"],
  .sm-article-meta__label,
  [class*="-lbl-hint"],
  [class*="-label-hint"],
  [class*="-gc-hint"],
  .compat-fn,
  .sm-cta-hub__eyebrow,
  .sm-related__title {
    font-size: 12px !important;
    line-height: 1.4 !important;
  }
  /* ══════════════════════════════════════════════════════════
     SECTION 49 — COLOR CONTRAST WCAG AA (Đợt 7)
     Bump text-muted variant + hub card opacity để đạt ≥4.5:1
     ══════════════════════════════════════════════════════════ */
  .smh-card__desc {
    color: rgba(232, 224, 208, .75) !important; /* was .45 */
  }
  .smh-card__cta {
    opacity: .85 !important; /* was .45 */
  }
  .smh-card__arrow {
    opacity: .85 !important; /* match cta */
    color: rgba(232, 224, 208, .9) !important; /* explicit warm white for contrast */
  }
  /* Text content user đọc — ép warm white để đạt contrast ≥4.5:1 */
  .tc-accordion-label,
  .tc-subtitle,
  .tc-faq-arrow,
  .tc-step-num,
  .tc-section-title,
  .tc-example-title,
  .tc-example-name,
  .tc-demo-link,
  .tc-faq-q-text,
  .tc-cta-btn,
  [class*="-required"],
  [class*="-sub-cursor"],
  [class*="-label"]:not(.zd-checkbox-label):not(.zd-intl-toggle),
  [class*="-gc-name"],
  [class*="-trust-count"],
  [class*="-trust-stars"],
  [class*="-trust-dot"],
  [class*="-date-hint"],
  [class*="-submit-text"],
  [class*="-portal-watermark"],
  [class*="-compare-toggle"],
  .table-note,
  .tsh-pyth-name,
  .sm-cta-hub__eyebrow {
    color: rgba(232, 224, 208, .9) !important;
  }
  /* Inherited text inside portal cards / citation blocks */
  .tc-portal-card,
  .tc-portal-card *,
  .tc-citation,
  .tc-citation * {
    color: rgba(232, 224, 208, .9) !important;
  }
  /* Internal links inside content blocks — ép warm white + underline */
  .tc-prose a,
  .tc-diff-item a,
  .tc-use-item a,
  .tc-faq-a a,
  .tc-block a {
    color: rgba(232, 224, 208, .95) !important;
    text-decoration: underline !important;
    text-underline-offset: 2px !important;
  }
  /* Submit buttons remaining — bump text content */
  .tv-submit-btn,
  .tt-submit-btn,
  [class*="-submit-btn"][class*="-portal-btn"],
  .sm-btn.sm-btn--primary {
    color: rgba(232, 224, 208, .95) !important;
  }
  .at-tang-card,
  .at-tang-card.is-active {
    color: rgba(232, 224, 208, .9) !important;
  }
  .sm-cta-hub,
  .sm-cta-hub *,
  .sm-cta-hub__btn,
  .sm-cta-hub__btn * {
    color: rgba(232, 224, 208, .95) !important;
  }
  /* SECTION 50 — Đợt 10 cross-coverage cho 22 tool ngoài 28 primary
     Bói, chiêm tinh, hoàng lịch, kinh dịch, tam thức, văn khấn theme accent text */
  .tsh-hrp,
  [class*="-fc-sym"],
  [class*="-fc-tri"],
  [class*="-nt-item-num"],
  [class*="-nh-row-num"],
  [class*="-person-num"],
  [class*="-group-name"],
  [class*="-group-chinese"],
  [class*="-bead-hz"],
  [class*="-stab-name"],
  [class*="-char-count"],
  [class*="-hint-step"],
  [class*="-trust-quote"],
  [class*="-pyth-qm"],
  [class*="-pyth-name"],
  [class*="-pyth-badge"],
  [class*="-lb-hz"],
  [class*="-badge-pill"],
  [class*="-time-sep"],
  [class*="-input-icon"],
  [class*="-intl-toggle"],
  [class*="-intl-toggle-text"],
  [class*="-form-title"]:not([class*="-form-titlebar"]),
  [class*="-card-season"],
  [class*="-card-badge"],
  [class*="-badge-hz"],
  [class*="-purpose-han-bg"],
  [class*="-pill-vn"],
  [class*="-gn-vn"],
  [class*="-year-lbl-req"],
  [class*="-gender-card"],
  [class*="-date-sep"],
  [class*="-ornament-icon"],
  [class*="-counter-num"],
  [class*="-nav3-date-btn"],
  [class*="-lbl-text"],
  [class*="-lbl-req"],
  .vk-tab,
  .vk-tab--active,
  .qc-ic,
  .qa-ic,
  .qc-ic-tq,
  .qa-ic--tq {
    color: rgba(232, 224, 208, .9) !important;
  }
  /* Đợt 10 lượt 3 — high-specificity override for .tsh-hrp (Han runes watermark
     được override bởi parent class trong từng tool theme). Note: tsh-hrp với
     opacity .05-.15 là decorative watermark, không phải text đọc — nhưng audit
     WCAG vẫn flag → force ép color visible nhẹ */
  body .tsh-hrp,
  [class*="-pyth"] .tsh-hrp,
  [class*="-cosmos"] .tsh-hrp,
  [class*="-hero-runes"] .tsh-hrp,
  [class*="-pyth-rose"] .tsh-hrp,
  [class*="-pyth-jade"] .tsh-hrp,
  [class*="-pyth-green"] .tsh-hrp,
  [class*="-pyth-cin"] .tsh-hrp,
  [class*="-pyth-lavender"] .tsh-hrp {
    color: rgba(232, 224, 208, .35) !important;
  }
  /* Đợt 10 — submit buttons remaining (tsh-btn-submit + ct-db-btn-submit) */
  .tsh-btn-submit,
  .ct-db-btn-submit,
  .btn-text,
  .ct-db-counter-num,
  .ct-db-lbl-text,
  .hl-nav3-date-btn,
  .tsh-pyth-name,
  .tsh-pyth-qm,
  [class*="-pyth-name"],
  [class*="-pyth-qm"],
  [class*="-counter-num"],
  .ln-trust-count {
    color: rgba(232, 224, 208, .95) !important;
  }
  /* Đợt 10 — overflow fix for tam-thuc/kinh-dich tools */
  .ta-pill-vn,
  .ta-gn-vn,
  .ln-badge-hz,
  .ln-purpose-han-bg,
  .km-date-sep,
  [class*="-pill-vn"],
  [class*="-badge-hz"] {
    overflow-wrap: anywhere !important;
    word-break: break-word !important;
    max-width: 100% !important;
  }
  /* Đợt 10 lượt 4 — submit buttons remaining (mh, ta) + decorative Han markers */
  .mh-submit-btn,
  .ta-submit,
  .ta-submit-btn,
  [class*="-submit-btn"][class*="-portal-btn"]:not(.hh-submit-btn):not(.tt-submit-btn) {
    flex-wrap: wrap !important;
    word-break: break-word !important;
    overflow-wrap: anywhere !important;
    min-width: 0 !important;
    width: auto !important;
    max-width: 100% !important;
    padding: 12px 16px !important;
    letter-spacing: 0 !important;
  }
  /* Decorative Han markers + icons — overflow hidden để không leak */
  .mh-plum-stars,
  .mh-plum-star,
  .ln-fc,
  .km-fc,
  [class*="-fc--tl"],
  [class*="-fc--bl"],
  [class*="-fc--tr"],
  [class*="-fc--br"],
  .ln-btn-now-icon,
  [class*="-btn-now-icon"] {
    overflow: hidden !important;
    max-width: 100% !important;
  }
  /* Theme accent decorative (Han chars, gender seal, fc-tri) — ép warm white */
  [class*="-fc-tri"],
  [class*="-gc-seal"] {
    color: rgba(232, 224, 208, .9) !important;
  }

  /* ══════════════════════════════════════════════════════════
     SECTION 48 — TEXT OVERFLOW FIX (Đợt 6)
     Submit buttons + tang cards: cho phép flex-wrap khi content > container
     ══════════════════════════════════════════════════════════ */
  .hh-submit-btn,
  .tt-submit-btn,
  .at-tang-card,
  [class*="-submit-btn"][class*="-portal-btn"] {
    flex-wrap: wrap !important;
    word-break: break-word !important;
    overflow-wrap: anywhere !important;
    min-width: 0 !important;
    width: auto !important;
    max-width: 100% !important;
    padding: 12px 16px !important;
    letter-spacing: 0 !important;
  }
  .hh-submit-btn > *,
  .tt-submit-btn > *,
  .at-tang-card > *,
  [class*="-submit-btn"][class*="-portal-btn"] > * {
    min-width: 0 !important;
    max-width: 100% !important;
  }
  /* Trust indicators (social proof) — user đọc số lượt tra cứu */
  [class*="-trust"] > span,
  .hh-trust,
  .hh-trust-count,
  .hh-trust-quote,
  .nh-ref-decade-range,
  .sm-footer__trust {
    font-size: 12px !important;
    line-height: 1.4 !important;
  }
  /* Form field labels — user đọc khi nhập, BẮT BUỘC ≥13px */
  .tsh-field > label,
  .wd-field > label,
  .baby-field > label,
  .hc-field > label,
  .addr-field > label,
  .ln-field > label,
  .daily-field > label,
  .km-field > label,
  .biz-field > label,
  .plate-field > label,
  .compat-field > label,
  .phone-field > label,
  .ct-db-cosmos .tsh-field > label,
  .zd-cosmos .tsh-field > label {
    font-size: 13px !important;
    line-height: 1.4 !important;
  }
}

/* ── 7. PREFERS-REDUCED-MOTION — respect user preference ── */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.001s !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.001s !important;
  }
}
