/* Audio45 Featured Mosaic Wall */
.audio45-fmw{
  position:relative;
  margin:30px 0;
  padding:28px 22px;
  background:var(--audio45-fmw-bg,linear-gradient(180deg,#101820,#081016));
  border-radius:18px;
  color:var(--audio45-fmw-text-color,#fff);
  overflow:hidden;
  isolation:isolate;
}
.audio45-fmw:before{
  content:"";
  position:absolute;
  inset:0;
  z-index:0;
  background:
    radial-gradient(circle at 15% 20%, rgba(122,201,67,.22), transparent 28%),
    radial-gradient(circle at 80% 10%, rgba(30,115,190,.22), transparent 30%),
    radial-gradient(circle at 50% 95%, rgba(255,255,255,.08), transparent 32%);
  pointer-events:none;
}
.audio45-fmw-inner{position:relative;z-index:2}
.audio45-fmw-particles{
  position:absolute;
  inset:0;
  z-index:1;
  pointer-events:none;
  overflow:hidden;
}
.audio45-fmw-particle{
  position:absolute;
  display:flex;
  align-items:center;
  justify-content:center;
  color:var(--audio45-fmw-particle-color,#7ac943);
  opacity:var(--audio45-fmw-particle-opacity,.34);
  will-change:transform,opacity;
  animation-name:audio45-fmw-float;
  animation-timing-function:linear;
  animation-iteration-count:infinite;
}
.audio45-fmw-particle svg{
  width:100%;
  height:100%;
  filter:drop-shadow(0 0 8px currentColor);
}
@keyframes audio45-fmw-float{
  0%{transform:translate3d(0,120%,0) rotate(0deg);opacity:0}
  8%{opacity:calc(var(--audio45-fmw-particle-opacity,.34) * .78)}
  48%{opacity:var(--audio45-fmw-particle-opacity,.34)}
  92%{opacity:calc(var(--audio45-fmw-particle-opacity,.34) * .70)}
  100%{transform:translate3d(0,-145vh,0) rotate(360deg);opacity:0}
}
.audio45-fmw-head{text-align:center;margin-bottom:24px}
.audio45-fmw-kicker{
  display:block;
  text-transform:uppercase;
  letter-spacing:.42em;
  color:var(--audio45-fmw-accent-color,#7ac943);
  font-weight:700;
  font-size:14px;
  margin-bottom:6px;
}
.audio45-fmw h2{
  margin:0;
  text-transform:uppercase;
  font-family:var(--audio45-fmw-title-font,inherit);
  font-size:var(--audio45-fmw-title-size,64px);
  line-height:1;
  font-weight:900;
  letter-spacing:.02em;
  color:var(--audio45-fmw-title-color,#fff);
}
.audio45-fmw-groups{display:grid;gap:var(--audio45-fmw-gap,12px)}
.audio45-fmw-grid{
  display:grid;
  grid-template-columns:1fr 1fr 1fr 1fr 1fr 1fr;
  grid-template-rows:1fr 1fr;
  gap:var(--audio45-fmw-gap,12px);
  height:var(--audio45-fmw-height,430px);
}
.audio45-fmw-card{
  position:relative;
  min-width:0;
  min-height:0;
  background:var(--audio45-fmw-card-bg,rgba(255,255,255,.10));
  border:1px solid rgba(255,255,255,.12);
  border-radius:var(--audio45-fmw-card-radius,10px);
  overflow:hidden;
  box-shadow:0 14px 34px rgba(0,0,0,.30);
  backdrop-filter:blur(6px);
  transition:transform .22s ease,box-shadow .22s ease;
}
.audio45-fmw-card:hover{transform:translateY(-3px);box-shadow:0 18px 42px rgba(0,0,0,.40)}
.audio45-fmw-card.tile-1{grid-column:1;grid-row:1 / span 2}
.audio45-fmw-card.tile-2{grid-column:2;grid-row:1}
.audio45-fmw-card.tile-3{grid-column:3 / span 2;grid-row:1}
.audio45-fmw-card.tile-4{grid-column:5;grid-row:1 / span 2}
.audio45-fmw-card.tile-5{grid-column:6;grid-row:1}
.audio45-fmw-card.tile-6{grid-column:2 / span 2;grid-row:2}
.audio45-fmw-card.tile-7{grid-column:4;grid-row:2}
.audio45-fmw-card.tile-8{grid-column:6;grid-row:2}
.audio45-fmw-image-link{
  position:relative;
  display:block;
  color:inherit;
  text-decoration:none;
  background:#0d1116;
  overflow:hidden;
}
.audio45-fmw-image{
  display:block;
  width:100%;
  height:100%;
  object-fit:cover;
  background:#0d1116;
  transition:transform .25s ease;
}
.audio45-fmw-image-link:hover .audio45-fmw-image{transform:scale(1.035)}
.audio45-fmw-badge{
  position:absolute;
  top:0;
  left:0;
  width:var(--audio45-fmw-badge-size,92px);
  max-width:46%;
  z-index:3;
}
.audio45-fmw-badge img{display:block;width:100%;height:auto}
.audio45-fmw-card-body{
  padding:12px;
  background:linear-gradient(180deg,rgba(0,0,0,.05),rgba(0,0,0,.20));
}
.audio45-fmw-card h3{
  margin:0 0 5px;
  font-size:var(--audio45-fmw-card-title-size,18px);
  line-height:1.18;
  font-weight:850;
}
.audio45-fmw-card h3 a{
  color:var(--audio45-fmw-text-color,#fff);
  text-decoration:none;
}
.audio45-fmw-card h3 a:hover{color:var(--audio45-fmw-accent-color,#7ac943)}
.audio45-fmw-vendor{
  font-size:13px;
  color:var(--audio45-fmw-accent-color,#7ac943);
  margin-bottom:6px;
}
.audio45-fmw-description{
  color:rgba(255,255,255,.78);
  font-size:13px;
  line-height:1.35;
  margin:0 0 8px;
}
.audio45-fmw-price{
  font-weight:850;
  color:var(--audio45-fmw-price-color,#7ac943);
  font-size:15px;
}
.audio45-fmw-card.tall,
.audio45-fmw-card.small{
  display:flex;
  flex-direction:column;
}
.audio45-fmw-card.tall .audio45-fmw-image-link{
  flex:1 1 auto;
  min-height:0;
}
.audio45-fmw-card.tall .audio45-fmw-card-body{
  flex:0 0 auto;
}
.audio45-fmw-card.small .audio45-fmw-image-link{
  height:64%;
  min-height:0;
}
.audio45-fmw-card.small .audio45-fmw-card-body{
  height:36%;
  overflow:hidden;
}
.audio45-fmw-card.small .audio45-fmw-description{
  display:none;
}
.audio45-fmw-card.small h3{
  font-size:clamp(13px,1.15vw,var(--audio45-fmw-card-title-size,18px));
}
.audio45-fmw-card.wide{
  display:grid;
  grid-template-columns:44% 56%;
}
.audio45-fmw-card.wide .audio45-fmw-image-link{
  height:100%;
}
.audio45-fmw-card.wide .audio45-fmw-card-body{
  display:flex;
  flex-direction:column;
  justify-content:center;
  overflow:hidden;
}
.audio45-fmw-empty,.audio45-fmw-error{
  padding:12px 16px;
  border-radius:10px;
  background:#111;
  color:#fff;
}

@media(max-width:1100px){
  .audio45-fmw-grid{
    grid-template-columns:1fr 1fr 1fr 1fr;
    grid-template-rows:repeat(4, minmax(150px,1fr));
    height:auto;
  }
  .audio45-fmw-card.tile-1{grid-column:1;grid-row:1 / span 2}
  .audio45-fmw-card.tile-2{grid-column:2;grid-row:1}
  .audio45-fmw-card.tile-3{grid-column:3 / span 2;grid-row:1}
  .audio45-fmw-card.tile-4{grid-column:4;grid-row:2 / span 2}
  .audio45-fmw-card.tile-5{grid-column:2;grid-row:2}
  .audio45-fmw-card.tile-6{grid-column:1 / span 2;grid-row:3}
  .audio45-fmw-card.tile-7{grid-column:3;grid-row:2}
  .audio45-fmw-card.tile-8{grid-column:3;grid-row:3}
}
@media(max-width:760px){
  .audio45-fmw{
    padding:22px 14px;
  }
  .audio45-fmw h2{
    font-size:clamp(38px,9vw,var(--audio45-fmw-title-size,64px));
  }
  .audio45-fmw-kicker{
    letter-spacing:.26em;
    font-size:12px;
  }
  .audio45-fmw-grid{
    display:grid;
    grid-template-columns:1fr 1fr;
    grid-template-rows:auto;
    height:auto;
  }
  .audio45-fmw-card.tile-1,
  .audio45-fmw-card.tile-2,
  .audio45-fmw-card.tile-3,
  .audio45-fmw-card.tile-4,
  .audio45-fmw-card.tile-5,
  .audio45-fmw-card.tile-6,
  .audio45-fmw-card.tile-7,
  .audio45-fmw-card.tile-8{
    grid-column:auto;
    grid-row:auto;
  }
  .audio45-fmw-card.tall .audio45-fmw-image-link,
  .audio45-fmw-card.small .audio45-fmw-image-link{
    height:auto;
  }
  .audio45-fmw-card.tall .audio45-fmw-image,
  .audio45-fmw-card.small .audio45-fmw-image{
    aspect-ratio:1/1;
  }
  .audio45-fmw-card.wide{
    grid-column:1 / -1;
    grid-template-columns:40% 60%;
    min-height:190px;
  }
}
@media(max-width:520px){
  .audio45-fmw-grid{
    grid-template-columns:1fr;
  }
  .audio45-fmw-card.wide{
    grid-column:auto;
    display:flex;
    flex-direction:column;
  }
  .audio45-fmw-card.wide .audio45-fmw-image{
    aspect-ratio:16/10;
  }
  .audio45-fmw-card.small .audio45-fmw-card-body{
    height:auto;
  }
  .audio45-fmw-badge{
    width:min(var(--audio45-fmw-badge-size,92px),86px);
  }
}


/* 45audio v1.1: small-card text fix only.
   Main title, wide cards, and tall cards are untouched. */
.audio45-fmw-card.small .audio45-fmw-image-link{
  height:50%;
  min-height:0;
}

.audio45-fmw-card.small .audio45-fmw-card-body{
  height:50%;
  overflow:hidden;
  display:flex;
  flex-direction:column;
  justify-content:flex-start;
  padding:8px 9px;
}

.audio45-fmw-card.small h3{
  font-size:clamp(12px,1vw,14px);
  line-height:1.08;
  margin:0 0 2px;
}

.audio45-fmw-card.small .audio45-fmw-vendor{
  font-size:11px;
  line-height:1.1;
  margin:0 0 2px;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}

.audio45-fmw-card.small .audio45-fmw-description{
  display:-webkit-box;
  -webkit-line-clamp:2;
  -webkit-box-orient:vertical;
  overflow:hidden;
  font-size:11px;
  line-height:1.18;
  margin:0 0 3px;
  color:rgba(255,255,255,.72);
}

.audio45-fmw-card.small .audio45-fmw-price{
  margin-top:auto;
  font-size:12px;
  line-height:1;
}

/* Mobile readability for small cards only */
@media(max-width:760px){
  .audio45-fmw-card.small .audio45-fmw-card-body{
    height:auto;
    min-height:112px;
  }
  .audio45-fmw-card.small .audio45-fmw-description{
    -webkit-line-clamp:2;
  }
  .audio45-fmw-card.small .audio45-fmw-price{
    font-size:14px;
  }
}

@media(max-width:520px){
  .audio45-fmw-card.small h3{
    font-size:16px;
    line-height:1.18;
  }
  .audio45-fmw-card.small .audio45-fmw-vendor,
  .audio45-fmw-card.small .audio45-fmw-description{
    font-size:13px;
    line-height:1.3;
  }
}
