/* This file contains effects only. Layout and typography live in landing.css. */
.cursor-light { pointer-events:none; position:fixed; inset:0 auto auto 0; width:440px; height:440px; z-index:-1; border-radius:50%; background:radial-gradient(circle,#9b62ff2b,#8f4eff12 35%,transparent 70%); filter:blur(38px); opacity:0; transition:opacity .4s; }
body.pointer-active .cursor-light { opacity:1; }
.reading-progress { position:fixed; inset:0 0 auto; height:2px; z-index:120; pointer-events:none; background:linear-gradient(90deg,#8f4eff,#e0caff); transform:scaleX(0); transform-origin:left; }
.card::before,.price-card::before,.plat::before,.step::before,.connection-demo::before { content:''; position:absolute; inset:0; z-index:-1; pointer-events:none; border-radius:inherit; background:radial-gradient(380px circle at var(--pointer-x,50%) var(--pointer-y,0%),#b58aff18,transparent 65%); opacity:0; transition:opacity .15s; }
.btn-ghost,.connection-demo { backdrop-filter:blur(16px) saturate(130%); -webkit-backdrop-filter:blur(16px) saturate(130%); }
.switch-track { transition:background-color .15s; }.switch-track>span { transition:transform .2s var(--ease),background-color .15s; }
.faq-q i { transition:transform .2s var(--ease); }.faq-a { transition:max-height .25s var(--ease); }
.price-indicator { transition:transform .15s var(--ease),width .15s var(--ease),height .15s var(--ease); }
.reveal.motion-pending { opacity:1; }
.reveal-enter { animation:panel-in .3s ease-out both; animation-delay:var(--reveal-delay,0ms); }
@keyframes panel-in { from { opacity:.6; transform:translateY(12px); filter:blur(4px); } to { opacity:1; transform:none; filter:none; } }
.hero-intro { animation:hero-in .3s ease-out both; animation-delay:var(--intro-delay,0ms); }
@keyframes hero-in { from { opacity:0; transform:translateY(12px); filter:blur(4px); } to { opacity:1; transform:none; filter:none; } }
@keyframes aurora-drift { to { transform:translate(35%,-24%) scale(1.2); opacity:.9; } }
@keyframes horizon-breathe { 50% { transform:translateY(-8px); opacity:.65; } }
@keyframes orbit-breathe { 50% { opacity:.4; transform:scaleX(.96); } }
@keyframes signal-flow { to { transform:translateX(300%); } }
@media(prefers-reduced-motion:no-preference) {
  .aurora-one { animation:aurora-drift 14s ease-in-out infinite alternate; }.aurora-two { animation:aurora-drift 18s ease-in-out -7s infinite alternate-reverse; }
  .hero-orbit { animation:horizon-breathe 8s ease-in-out infinite; }.hero-orbit span { animation:orbit-breathe 9s ease-in-out infinite; }.hero-orbit span:nth-child(2) { animation-delay:-3s; }.hero-orbit span:nth-child(3) { animation-delay:-6s; }
  .connection-demo[data-connected="true"] .route-line span { animation:signal-flow 2.4s linear infinite; }.connection-demo[data-connected="true"] .route-line:nth-of-type(4) span { animation-delay:1.2s; }
}
@media(hover:hover) {
  .card:hover::before,.price-card:hover::before,.plat:hover::before,.step:hover::before,.connection-demo:hover::before { opacity:1; }
}
body.page-hidden *,.ambient-paused .aurora,.ambient-paused .hero-orbit,.ambient-paused .hero-orbit span,.ambient-paused .route-line span { animation-play-state:paused!important; }
@media(max-width:760px) { .cursor-light { display:none; }.aurora { filter:blur(40px); } }
@media(prefers-reduced-motion:reduce) {
  html { scroll-behavior:auto; }*,*::before,*::after { animation:none!important; transition:none!important; }
  .reveal.motion-pending { opacity:1; transform:none; filter:none; }.cursor-light { display:none; }
}
