/* Дополнения к статической версии codevera.ru.
   Возвращают то, что раньше делал React: появление блоков и аккордеон FAQ. */

/* появление при скролле (аналог framer-motion) */
[data-reveal] {
    opacity: 0;
    transform: translateY(18px);
    transition: opacity .55s cubic-bezier(.22,.61,.36,1),
                transform .55s cubic-bezier(.22,.61,.36,1);
    will-change: opacity, transform;
}
[data-reveal].is-visible { opacity: 1; transform: none; }

/* если JS отключён — контент всё равно виден */
.no-js [data-reveal] { opacity: 1; transform: none; }

/* FAQ */
.faq-answer[hidden] { display: none; }
.faq-answer {
    animation: faq-in .28s ease;
}
@keyframes faq-in {
    from { opacity: 0; transform: translateY(-6px); }
    to   { opacity: 1; transform: none; }
}
button[aria-expanded] span.grid { transition: transform .3s ease, background .3s ease; }
button[aria-expanded="true"] span.grid { transform: rotate(45deg); }

/* мобильное меню */
.mobile-menu {
    display: none;
    border-top: 1px solid rgba(255,255,255,.06);
    background: rgba(10,10,12,.98);
    backdrop-filter: blur(12px);
}
.mobile-menu.is-open { display: block; }
.mobile-menu a {
    display: block;
    padding: 14px 24px;
    color: #B7B7B7;
    text-decoration: none;
    font-size: 15px;
    border-bottom: 1px solid rgba(255,255,255,.04);
}
.mobile-menu a:hover { color: #fff; background: rgba(255,255,255,.03); }

/* состояние формы */
.form-note { font-size: 14px; margin-top: 10px; }
.form-note.ok { color: #4ade80; }
.form-note.err { color: #f87171; }
form.is-sending button[type="submit"] { opacity: .6; pointer-events: none; }

@media (prefers-reduced-motion: reduce) {
    [data-reveal] { opacity: 1; transform: none; transition: none; }
    .faq-answer { animation: none; }
}
