/* Lunivo v9.3 — shared premium motion system
   Lightweight scroll reveals, ambient glow and micro-interactions. */

:root{
  --lv-motion-gold: var(--primary, #c99f57);
  --lv-motion-card: var(--card, #111317);
  --lv-motion-border: var(--border, #2b2e34);
}

/* ----- scroll reveal ----- */
html.lv-motion-init .lv-motion-reveal{
  opacity:0;
  transform:translate3d(0,16px,0) scale(.997);
  transition:
    opacity .48s cubic-bezier(.2,.72,.25,1),
    transform .56s cubic-bezier(.2,.72,.25,1);
  transition-delay:var(--lv-motion-delay,0ms);
  will-change:opacity,transform;
}
html.lv-motion-init .lv-motion-reveal.lv-motion-visible{
  opacity:1;
  transform:none;
}

/* ----- homepage ambient hero glow ----- */
.hero{
  position:relative;
  isolation:isolate;
}
.hero::before{
  content:"";
  position:absolute;
  z-index:-1;
  left:-10%;
  top:4%;
  width:68%;
  height:78%;
  pointer-events:none;
  opacity:.62;
  filter:blur(10px);
  background:
    radial-gradient(circle at 30% 34%,color-mix(in srgb,var(--lv-motion-gold) 15%,transparent) 0 14%,transparent 46%),
    radial-gradient(circle at 72% 62%,color-mix(in srgb,var(--lv-motion-gold) 8%,transparent) 0 12%,transparent 44%);
  animation:lvAmbientDrift 9s ease-in-out infinite alternate;
}
@keyframes lvAmbientDrift{
  0%{transform:translate3d(-1%,0,0) scale(.98);opacity:.46}
  100%{transform:translate3d(4%,2%,0) scale(1.06);opacity:.72}
}

/* ----- card / icon micro-interactions ----- */
.appCard,
.myAppsGrid article,
.regionPanel,
.data-card,
.summary-card,
.result-card,
.project-card,
.feature-section,
.benefitGrid article{
  transition:
    transform .2s ease,
    border-color .2s ease,
    box-shadow .2s ease;
}

@media(hover:hover) and (pointer:fine){
  .appCard:hover,
  .myAppsGrid article:hover,
  .benefitGrid article:hover{
    transform:translateY(-3px);
    border-color:color-mix(in srgb,var(--lv-motion-gold) 32%,var(--lv-motion-border));
    box-shadow:0 15px 36px rgba(0,0,0,.18);
  }

  .appIcon{
    transition:transform .22s cubic-bezier(.2,.72,.25,1),box-shadow .22s ease,border-color .22s ease;
  }
  .appCard:hover .appIcon,
  .myAppsGrid article:hover .appIcon{
    transform:translateY(-1px) scale(1.045);
    border-color:color-mix(in srgb,var(--lv-motion-gold) 48%,var(--lv-motion-border));
    box-shadow:0 0 0 4px color-mix(in srgb,var(--lv-motion-gold) 6%,transparent);
  }
}

/* ----- one-pass premium button shine ----- */
.lv-motion-shine{
  position:relative!important;
  overflow:hidden!important;
  isolation:isolate;
}
.lv-motion-shine::after{
  content:"";
  position:absolute;
  z-index:2;
  top:-55%;
  bottom:-55%;
  left:-48%;
  width:30%;
  pointer-events:none;
  opacity:0;
  transform:skewX(-18deg) translateX(0);
  background:linear-gradient(90deg,transparent,rgba(255,255,255,.24),transparent);
}

@media(hover:hover) and (pointer:fine){
  .lv-motion-shine:hover::after,
  .lv-motion-shine:focus-visible::after{
    opacity:1;
    animation:lvButtonShine .62s ease-out both;
  }
}
@keyframes lvButtonShine{
  from{transform:skewX(-18deg) translateX(0)}
  to{transform:skewX(-18deg) translateX(540%)}
}

/* ----- panel entrances ----- */
.myLunivoMenu:not(.hidden) .myLunivoMenuCard{
  animation:lvPanelIn .24s cubic-bezier(.2,.78,.25,1) both;
}
.accountDangerModal:not(.hidden) .accountDangerDialog{
  animation:lvDialogIn .22s cubic-bezier(.2,.78,.25,1) both;
}
.lv-fullapp-shell{
  animation:lvShellIn .28s cubic-bezier(.2,.75,.25,1) both;
}
@keyframes lvPanelIn{
  from{opacity:0;transform:translate3d(14px,-5px,0) scale(.985)}
  to{opacity:1;transform:none}
}
@keyframes lvDialogIn{
  from{opacity:0;transform:translateY(10px) scale(.985)}
  to{opacity:1;transform:none}
}
@keyframes lvShellIn{
  from{opacity:0;transform:translateY(-8px)}
  to{opacity:1;transform:none}
}

/* ----- full apps: keep installed PWA inside its own app ----- */
html.lv-installed-pwa .toolora-back,
html.lv-installed-pwa .lv-fullapp-back{
  display:none!important;
}
html.lv-installed-pwa .lv-fullapp-brand{
  pointer-events:none!important;
  cursor:default!important;
}
@media(display-mode:standalone){
  .toolora-back,
  .lv-fullapp-back{
    display:none!important;
  }
  .lv-fullapp-brand{
    pointer-events:none!important;
    cursor:default!important;
  }
}

/* ----- light mode keeps the glow restrained ----- */
html[data-toolora-theme="light"] .hero::before,
html[data-theme="light"] .hero::before,
html.light .hero::before{
  opacity:.38;
}

/* ----- mobile: lighter animations for smoothness ----- */
@media(max-width:620px){
  html.lv-motion-init .lv-motion-reveal{
    transform:translate3d(0,10px,0);
    transition-duration:.4s,.46s;
  }
  .hero::before{
    width:92%;
    height:58%;
    left:-24%;
    top:2%;
    opacity:.45;
    filter:blur(8px);
    animation-duration:11s;
  }
}

/* Accessibility / battery-friendly fallback */
@media(prefers-reduced-motion:reduce){
  .hero::before,
  .myLunivoMenuCard,
  .accountDangerDialog,
  .lv-fullapp-shell,
  .lv-motion-shine::after{
    animation:none!important;
  }
  html.lv-motion-init .lv-motion-reveal,
  .appCard,
  .myAppsGrid article,
  .regionPanel,
  .appIcon,
  .data-card,
  .summary-card,
  .result-card,
  .project-card,
  .feature-section,
  .benefitGrid article{
    opacity:1!important;
    transform:none!important;
    transition:none!important;
  }
}
