.alcm-root{
  --alcm-accent:#A8CE3E;
  --alcm-speed:5s;
  --alcm-ink:#EAF0F6;
  --alcm-muted:#C7D3E0;
  font-family:inherit;
  position:relative;
  width:100%;
}


/* --------------------------------------------------------------------------
   Fail-safe contra o estado "elementor-invisible" do próprio Elementor.
   Este widget já possui seu próprio reveal; por isso não deve depender da
   animação de entrada nativa do Elementor para se tornar visível.
   -------------------------------------------------------------------------- */
.elementor-widget-alcance-media.elementor-invisible{
  visibility:visible !important;
  opacity:1 !important;
}

/* --------------------------------------------------------------------------
   Reveal com progressive enhancement.
   Sem JS: SEMPRE visível.
   Com JS: só fica oculto enquanto aguarda entrar na viewport.
   -------------------------------------------------------------------------- */
.alcm-reveal{
  opacity:1;
  transform:none;
}
.alcm-reveal.alcm-js{
  transition:opacity .8s cubic-bezier(.16,.84,.34,1), transform .8s cubic-bezier(.16,.84,.34,1);
}
.alcm-reveal.alcm-js:not(.alcm-in){
  opacity:0;
  transform:translateY(24px);
}
.alcm-reveal.alcm-js.alcm-in{
  opacity:1;
  transform:none;
}

/* quadro */
.alcm-frame{
  position:relative;
  width:100%;
  height:340px;
  overflow:hidden;
  border-radius:18px;
  background:linear-gradient(135deg,#1E3062,#4B8199);
  isolation:isolate;
}
.alcm-img{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:center center;
  display:block;
  z-index:0;
}

/* placeholder */
.alcm-ph{
  position:absolute;
  inset:0;
  display:grid;
  place-items:center;
  color:rgba(255,255,255,.55);
}
.alcm-ph-hint{
  position:absolute;
  left:50%;
  bottom:14px;
  transform:translateX(-50%);
  z-index:5;
  font-size:.72rem;
  letter-spacing:.08em;
  color:rgba(255,255,255,.72);
  background:rgba(0,0,0,.42);
  padding:5px 11px;
  border-radius:999px;
  white-space:nowrap;
}

/* scan */
.alcm-fx--scan{
  position:absolute;
  left:0;
  right:0;
  height:34%;
  top:-40%;
  z-index:2;
  pointer-events:none;
  background:linear-gradient(180deg, transparent, rgba(168,206,62,.28), transparent);
  filter:blur(3px);
  animation:alcm-scan var(--alcm-speed) linear infinite;
  mix-blend-mode:screen;
}
@keyframes alcm-scan{
  from{ transform:translateY(-10%); }
  to{ transform:translateY(400%); }
}

/* pulse */
.alcm-fx--pulse{
  position:absolute;
  inset:0;
  z-index:2;
  pointer-events:none;
  border-radius:inherit;
  box-shadow:0 0 0 0 rgba(168,206,62,.34);
  animation:alcm-pulse var(--alcm-speed) ease-out infinite;
}
@keyframes alcm-pulse{
  0%{ box-shadow:0 0 0 0 rgba(168,206,62,.34); }
  70%,100%{ box-shadow:0 0 0 22px transparent; }
}

/* Ken Burns */
.alcm--anim-float .alcm-img{
  animation:alcm-float var(--alcm-speed) ease-in-out infinite alternate;
  transform-origin:center;
  will-change:transform;
}
@keyframes alcm-float{
  from{ transform:scale(1) translate3d(0,0,0); }
  to{ transform:scale(1.08) translate3d(-1.4%,-1%,0); }
}

/* overlay */
.alcm-overlay{
  position:absolute;
  inset:0;
  z-index:1;
  pointer-events:none;
}

/* conteúdo */
.alcm-content{
  position:absolute;
  z-index:3;
  left:0;
  right:0;
  bottom:0;
  padding:26px;
  display:flex;
  flex-direction:column;
  gap:8px;
}
.alcm--card .alcm-content{ padding:20px; }
.alcm-content--center{ text-align:center; align-items:center; }
.alcm-eyebrow{
  margin:0;
  font-weight:600;
  font-size:.7rem;
  letter-spacing:.2em;
  text-transform:uppercase;
  color:var(--alcm-accent);
}
.alcm-title{
  margin:0;
  font-weight:800;
  letter-spacing:-.01em;
  line-height:1.2;
  font-size:clamp(1.2rem,2.6vw,1.7rem);
  color:var(--alcm-ink);
}
.alcm-title .hl{ color:var(--alcm-accent); }
.alcm-desc{
  margin:0;
  font:inherit;
  font-size:.96rem;
  line-height:1.5;
  color:var(--alcm-muted);
  max-width:560px;
}
.alcm-content--center .alcm-desc{ margin-inline:auto; }
.alcm-badge{
  align-self:flex-start;
  margin-top:4px;
  padding:7px 14px;
  border-radius:999px;
  background:rgba(14,16,32,.72);
  color:var(--alcm-ink);
  font-size:.8rem;
  font-weight:600;
  border:1px solid rgba(168,206,62,.40);
  -webkit-backdrop-filter:blur(6px);
  backdrop-filter:blur(6px);
}
.alcm-content--center .alcm-badge{ align-self:center; }

/* banner */
.alcm--banner .alcm-content{ padding:clamp(24px,5vw,56px); }
.alcm--banner .alcm-title{ font-size:clamp(1.5rem,3.4vw,2.5rem); }

@media (max-width:640px){
  .alcm-content{ padding:18px; }
  .alcm--banner .alcm-content{ padding:22px; }
}

@media (prefers-reduced-motion:reduce){
  .alcm-fx--scan,
  .alcm-fx--pulse,
  .alcm--anim-float .alcm-img{ animation:none !important; }
  .alcm-reveal,
  .alcm-reveal.alcm-js:not(.alcm-in){ opacity:1 !important; transform:none !important; transition:none !important; }
}
