/* alenpich.ir edge mirror — restore touch-scroll on Swiper carousels.
   The static mirror has no JS, so Swiper never initializes; its track keeps the JS-set
   transform frozen at slide 0 and the container stays overflow:hidden. Turn each .swiper
   into a native horizontal scroller and neutralize the frozen transform so every slide is
   reachable by swipe. High-specificity selectors (html body …) so these win even though the
   stylesheet is injected EARLY in <head>, before the theme CSS. */
html body .swiper,
html body .swiper-initialized,
html body .swiper-horizontal,
html body .swiper.\!overflow-hidden {
  overflow-x: auto !important;
  overflow-y: hidden !important;
  -webkit-overflow-scrolling: touch;
  scroll-snap-type: x proximity;
  touch-action: pan-x pan-y;
}
html body .swiper-wrapper {
  transform: none !important;
  -webkit-transform: none !important;
  transition: none !important;
}
html body .swiper-slide { scroll-snap-align: start; opacity: 1 !important; }
html body .swiper-button-next,
html body .swiper-button-prev { display: none !important; }
html body .swiper::-webkit-scrollbar,
html body .swiper-initialized::-webkit-scrollbar { height: 0; background: transparent; }

/* Un-fade images: the theme starts imgs at opacity-0 and JS adds data-loaded=true to fade them
   in. With JS stripped, any image whose load-event didn't fire during prerender stays invisible
   (the faded blog cards). Force every image + its transition wrapper visible. */
html body img { opacity: 1 !important; }
html body [class*="opacity-0"] img,
html body img[class*="opacity-0"] { opacity: 1 !important; }


/* ── Fonts (edge fix 2026-07-10): the Boom React bundle injects @font-face at runtime;
   with JS stripped the edge never declares them, so YekanBakh/IRANYekan fell back to
   system sans. The .ttf files ARE on the edge (theme /fonts/). Declare them here.
   IRANYekan has no files anywhere on origin or edge → alias it to YekanBakh so those
   rules render the branded face too. */
@font-face{font-family:YekanBakh;src:url(/wp-content/themes/Boom/fonts/YekanBakh-Hairline.ttf) format('truetype');font-weight:100 200;font-style:normal;font-display:swap}
@font-face{font-family:YekanBakh;src:url(/wp-content/themes/Boom/fonts/YekanBakh-Light.ttf) format('truetype');font-weight:300;font-style:normal;font-display:swap}
@font-face{font-family:YekanBakh;src:url(/wp-content/themes/Boom/fonts/YekanBakh-Regular.ttf) format('truetype');font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:YekanBakh;src:url(/wp-content/themes/Boom/fonts/YekanBakh-Medium.ttf) format('truetype');font-weight:500 600;font-style:normal;font-display:swap}
@font-face{font-family:YekanBakh;src:url(/wp-content/themes/Boom/fonts/YekanBakh-Bold.ttf) format('truetype');font-weight:700;font-style:normal;font-display:swap}
@font-face{font-family:YekanBakh;src:url(/wp-content/themes/Boom/fonts/YekanBakh-Fat.ttf) format('truetype');font-weight:800;font-style:normal;font-display:swap}
@font-face{font-family:YekanBakh;src:url(/wp-content/themes/Boom/fonts/YekanBakh-Heavy.ttf) format('truetype');font-weight:900;font-style:normal;font-display:swap}
@font-face{font-family:IRANYekan;src:url(/wp-content/themes/Boom/fonts/YekanBakh-Regular.ttf) format('truetype');font-weight:100 500;font-style:normal;font-display:swap}
@font-face{font-family:IRANYekan;src:url(/wp-content/themes/Boom/fonts/YekanBakh-Bold.ttf) format('truetype');font-weight:600 900;font-style:normal;font-display:swap}

/* ── Skeleton shimmer (edge fix 2026-07-10): HeroUI skeleton wrappers get captured in their
   loading state (before: shimmer at opacity-100, content at opacity-0, pointer-events:none).
   With JS stripped they never resolve — freeze them into their "loaded" look. */
html body div[class*="bg-content3"]::before,
html body div[class*="bg-content3"]::after { opacity: 0 !important; animation: none !important; }
html body div[class*="pointer-events-none"][class*="bg-content3"] { pointer-events: auto !important; background: transparent !important; }
html body div[class*="group-data-"][class*="opacity-0"],
html body div[class*="opacity-0"][class*="group-data-"] { opacity: 1 !important; }
/* trailing card placeholders (no real content inside) = the "stuck loading" row */
html body div[class*="bg-content3"][class*="pointer-events-none"]:not(:has(img)) { display: none !important; }
