:root {
    --motion-ease: cubic-bezier(.22,.75,.25,1);
    --motion-purple: #6d28d9;
}

html { scroll-behavior: smooth; }
::selection { color:#fff; background:rgba(109,40,217,.82); }

.m360-scroll-progress {
    position:fixed;
    inset:0 auto auto 0;
    z-index:1100;
    width:var(--scroll-progress,0%);
    height:3px;
    pointer-events:none;
    background:linear-gradient(90deg,#6d28d9,#b68cff,#d4af37);
    box-shadow:0 0 12px rgba(109,40,217,.45);
    transition:width .08s linear;
}

.motion-ready main { animation:m360-page-enter .46s var(--motion-ease) both; }

.public-navbar,
.memoria-navbar { transition:padding .25s ease, background .25s ease, box-shadow .25s ease, border-color .25s ease; }
.public-navbar.is-scrolled { padding-top:5px; padding-bottom:5px; background:rgba(23,17,38,.985); box-shadow:0 14px 35px rgba(15,8,25,.22); }
.memoria-navbar.is-scrolled { box-shadow:0 14px 35px rgba(15,8,25,.25); }

.logo-publico img,
.navbar-brand img { transition:transform .35s var(--motion-ease), box-shadow .35s ease; }
.logo-publico:hover img,
.navbar-brand:hover img { transform:rotate(-2deg) scale(1.035); box-shadow:0 12px 25px rgba(0,0,0,.24); }

.btn,
.public-navbar-link { position:relative; overflow:hidden; isolation:isolate; transition:transform .2s var(--motion-ease), box-shadow .2s ease, color .2s ease, background .2s ease, border-color .2s ease; }
.btn::after,
.public-navbar-link::after {
    content:"";
    position:absolute;
    z-index:-1;
    top:-80%;
    left:-45%;
    width:28%;
    height:260%;
    opacity:0;
    background:rgba(255,255,255,.28);
    transform:rotate(22deg) translateX(-180%);
    transition:transform .55s ease, opacity .2s ease;
}
.btn:hover,
.public-navbar-link:hover { transform:translateY(-2px); }
.btn:hover::after,
.public-navbar-link:hover::after { opacity:1; transform:rotate(22deg) translateX(650%); }
.btn:active,
.public-navbar-link:active { transform:translateY(0) scale(.985); }

.btn-whatsapp {
    color:#fff !important;
    background:linear-gradient(135deg,#25d366,#18a94f);
    border-color:#1fb95a;
    box-shadow:0 8px 20px rgba(24,169,79,.18);
    font-weight:750;
}
.btn-whatsapp:hover,.btn-whatsapp:focus {
    color:#fff !important;
    background:linear-gradient(135deg,#20c65e,#128f42);
    border-color:#128f42;
    box-shadow:0 12px 25px rgba(24,169,79,.26);
}

.motion-lift { transition:transform .28s var(--motion-ease), box-shadow .28s ease, border-color .28s ease !important; }
.motion-lift:hover { transform:translateY(-4px); border-color:rgba(109,40,217,.18) !important; box-shadow:0 16px 38px rgba(35,22,52,.09) !important; }
.motion-lift .metric-icon,
.motion-lift .quick-icon { transition:transform .32s var(--motion-ease), color .25s ease, background .25s ease; }
.motion-lift:hover .metric-icon,
.motion-lift:hover .quick-icon { transform:translateY(-2px) rotate(-4deg) scale(1.06); }

.motion-ready [data-motion-reveal] {
    opacity:0;
    transform:translateY(14px);
    transition:opacity .55s ease var(--motion-delay,0ms), transform .55s var(--motion-ease) var(--motion-delay,0ms);
}
.motion-ready [data-motion-reveal].is-motion-visible { opacity:1; transform:none; }

.form-control,
.form-select { transition:border-color .2s ease, box-shadow .2s ease, background .2s ease; }
.form-control:hover:not(:focus),
.form-select:hover:not(:focus) { border-color:#c9bdd9; }
.form-control:focus,
.form-select:focus { box-shadow:0 0 0 4px rgba(109,40,217,.09); }

.dashboard-card:focus-within,
.create-event-card:focus-within { border-color:rgba(109,40,217,.2) !important; box-shadow:0 12px 32px rgba(35,22,52,.075) !important; }

.metric-value.is-counting { font-variant-numeric:tabular-nums; }

:focus-visible { outline:3px solid rgba(109,40,217,.38) !important; outline-offset:3px; }

@keyframes m360-page-enter {
    from { opacity:0; transform:translateY(7px); }
    to { opacity:1; transform:none; }
}

@media (hover:none) {
    .motion-lift:hover,.btn:hover,.public-navbar-link:hover { transform:none; }
}

@media (prefers-reduced-motion:reduce) {
    html { scroll-behavior:auto; }
    *,*::before,*::after { animation-duration:.01ms !important; animation-iteration-count:1 !important; scroll-behavior:auto !important; transition-duration:.01ms !important; }
    .motion-ready [data-motion-reveal] { opacity:1; transform:none; }
}
