
/* Expiran Products Box Styler v1.4.4
   Styles existing markup (#portfolio / #products / .firtl-item / .gal-spin-effect)
   No DOM moving, so sliders (مثل wclps) بهم نمی‌ریزن. */

:root{
  --expiran-accent: #ff4040;
  --expiran-cols: 3;
  --expiran-radius: 18px;
  --expiran-shadow: 0 16px 40px rgba(2,6,23,.16);
}

/* JS adds this class to the correct section (portfolio/products) */
.expiran-pbox-enhanced{
  margin: 18px auto;
  padding: 10px;
  max-width: 1240px;
}

.expiran-pbox-enhanced{
  background: rgba(255,255,255,.82);
  border: 1px solid rgba(2,6,23,.08);
  border-radius: calc(var(--expiran-radius) + 10px);
  box-shadow: var(--expiran-shadow);
  padding: clamp(16px, 2.8vw, 28px);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
}

/* Make the detected container a responsive grid (JS adds .expiran-pbox-grid) */
.expiran-pbox-grid{
  display: grid !important;
  grid-template-columns: repeat(var(--expiran-cols), minmax(0, 1fr));
  gap: 16px;
  width: 100%;
}

/* If the grid container has a heading/other elements, keep them full-width */
.expiran-pbox-grid > h1,
.expiran-pbox-grid > h2,
.expiran-pbox-grid > h3,
.expiran-pbox-grid > h4,
.expiran-pbox-grid > h5,
.expiran-pbox-grid > h6,
.expiran-pbox-grid > :not(.firtl-item){
  grid-column: 1 / -1;
}

/* Clear legacy floats/widths that force stacking */
.expiran-pbox-grid > .firtl-item{
  float: none !important;
  width: auto !important;
  max-width: none !important;
  margin: 0 !important;
}

@media (max-width: 1024px){
  .expiran-pbox-grid{ grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (max-width: 780px){
  .expiran-pbox-grid{ grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 480px){
  .expiran-pbox-grid{ grid-template-columns: 1fr; }
}

/* Card look (only for your portfolio cards) */
.expiran-pbox-enhanced .firtl-item{ margin: 0 !important; }

.expiran-pbox-enhanced .gal-spin-effect{
  position: relative;
  border-radius: var(--expiran-radius);
  overflow: hidden;
  border: 1px solid rgba(2,6,23,.08);
  background: #fff;
  min-height: 220px;
  box-shadow: 0 10px 24px rgba(2,6,23,.08);
  transform: translateZ(0);
}

.expiran-pbox-enhanced .gal-spin-effect img{
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transform: scale(1.03);
  transition: transform .65s cubic-bezier(.2,.75,.25,1);
}

.expiran-pbox-enhanced .gal-text-box{
  position: absolute;
  inset: 0;
  display: flex;
  align-items: flex-end;
  padding: 14px;
  background: radial-gradient(120% 120% at 0% 0%, rgba(255,255,255,.05) 0%, rgba(2,6,23,.78) 100%);
}

.expiran-pbox-enhanced .info-gal-con{ width: 100%; }

.expiran-pbox-enhanced .info-gal-con span{
  display: inline-flex;
  max-width: 100%;
  padding: 9px 11px;
  border-radius: 999px;
  font-weight: 800;
  font-size: 14px;
  letter-spacing: .2px;
  color: #fff;
  border: 1px solid rgba(255,255,255,.22);
  background: rgba(255,255,255,.10);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
}

.expiran-pbox-enhanced .gal-spin-effect::after{
  content:"";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background: linear-gradient(135deg, rgba(255,64,64,0) 0%, rgba(255,64,64,.22) 100%);
  opacity: 0;
  transition: opacity .35s ease;
}

.expiran-pbox-enhanced a:hover .gal-spin-effect img,
.expiran-pbox-enhanced a:focus .gal-spin-effect img{ transform: scale(1.12); }

.expiran-pbox-enhanced a:hover .gal-spin-effect::after,
.expiran-pbox-enhanced a:focus .gal-spin-effect::after{ opacity: 1; }

@media (prefers-reduced-motion: reduce){
  .expiran-pbox-enhanced .gal-spin-effect img,
  .expiran-pbox-enhanced .gal-spin-effect::after{
    transition: none !important;
  }
}
