:root {
    color-scheme: light;
}

.dark {
    color-scheme: dark;
}

* {
    -webkit-tap-highlight-color: transparent;
}

body {
    text-rendering: optimizeLegibility;
}

.bg-noise {
    background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 240 240' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.55'/%3E%3C/svg%3E");
}

body.modal-open {
    overflow: hidden;
}

dialog::backdrop {
    opacity: 0;
}

dialog[open]::backdrop {
    animation: fade-in .18s ease forwards;
}

dialog[open] > div {
    animation: modal-in .22s ease forwards;
}

@keyframes fade-in {
    to { opacity: 1; }
}

@keyframes modal-in {
    from { opacity: 0; transform: translateY(20px) scale(.98); }
    to { opacity: 1; transform: translateY(0) scale(1); }
}

.review-track {
    will-change: transform;
}

@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after {
        animation-duration: .001ms !important;
        animation-iteration-count: 1 !important;
        scroll-behavior: auto !important;
        transition-duration: .001ms !important;
    }
}

.grecaptcha-badge {
    visibility: hidden;
}

.reveal-prep {
    opacity: 0;
    transform: translateY(14px);
}

.reveal-in {
    opacity: 1;
    transform: translateY(0);
    transition: opacity .55s ease, transform .55s ease;
}

html.dark, html[data-theme="dark"] {
    color-scheme: dark;
}

[data-scroll-hint] {
    cursor: pointer;
}

@supports (height: 100dvh) {
    dialog > div {
        max-height: 92dvh;
    }
}

/* Refuerzo del modo oscuro para que no dependa solo de las variantes generadas. */
html.dark body,
html[data-theme="dark"] body {
    background: #020617 !important;
    color: #f8fafc !important;
}

html.dark header,
html[data-theme="dark"] header,
html.dark footer,
html[data-theme="dark"] footer {
    background: rgba(2, 6, 23, .82) !important;
    border-color: rgba(255, 255, 255, .10) !important;
}

html.dark dialog > div,
html[data-theme="dark"] dialog > div {
    background: #020617 !important;
    color: #f8fafc !important;
    border-color: rgba(255, 255, 255, .10) !important;
}

html.dark [class*="bg-white"],
html[data-theme="dark"] [class*="bg-white"],
html.dark [class*="bg-slate-50"],
html[data-theme="dark"] [class*="bg-slate-50"],
html.dark [class*="bg-slate-100"],
html[data-theme="dark"] [class*="bg-slate-100"] {
    background-color: rgba(15, 23, 42, .82) !important;
}

html.dark [class*="bg-sky-50"],
html[data-theme="dark"] [class*="bg-sky-50"] {
    background-color: rgba(14, 165, 233, .14) !important;
}

html.dark [class*="bg-amber-50"],
html[data-theme="dark"] [class*="bg-amber-50"] {
    background-color: rgba(245, 158, 11, .14) !important;
}

html.dark [class*="bg-emerald-50"],
html[data-theme="dark"] [class*="bg-emerald-50"] {
    background-color: rgba(16, 185, 129, .14) !important;
}

html.dark [class*="bg-rose-50"],
html[data-theme="dark"] [class*="bg-rose-50"] {
    background-color: rgba(244, 63, 94, .14) !important;
}

html.dark [class*="text-slate-950"],
html[data-theme="dark"] [class*="text-slate-950"],
html.dark [class*="text-slate-900"],
html[data-theme="dark"] [class*="text-slate-900"],
html.dark [class*="text-slate-800"],
html[data-theme="dark"] [class*="text-slate-800"] {
    color: #f8fafc !important;
}

html.dark [class*="text-slate-700"],
html[data-theme="dark"] [class*="text-slate-700"],
html.dark [class*="text-slate-600"],
html[data-theme="dark"] [class*="text-slate-600"],
html.dark [class*="text-slate-500"],
html[data-theme="dark"] [class*="text-slate-500"] {
    color: #cbd5e1 !important;
}

html.dark [class*="border-white"],
html[data-theme="dark"] [class*="border-white"],
html.dark [class*="border-slate"],
html[data-theme="dark"] [class*="border-slate"] {
    border-color: rgba(255, 255, 255, .12) !important;
}

html.dark [class*="shadow"],
html[data-theme="dark"] [class*="shadow"] {
    box-shadow: 0 18px 55px rgba(0, 0, 0, .35) !important;
}

html.dark input,
html[data-theme="dark"] input {
    background-color: rgba(2, 6, 23, .88) !important;
    color: #f8fafc !important;
    border-color: rgba(255, 255, 255, .14) !important;
}

html.dark #themeToggle,
html[data-theme="dark"] #themeToggle {
    background: rgba(15, 23, 42, .9) !important;
    color: #f8fafc !important;
}

/* La vista previa del chat deja el botón en flujo normal para que nunca tape mensajes. */
.chat-preview-safe button[data-open-rules] {
    position: static;
}

html.dark .site-bg,
html[data-theme="dark"] .site-bg {
    background:
        radial-gradient(circle at top left, rgba(14, 165, 233, .24), transparent 34%),
        radial-gradient(circle at 85% 10%, rgba(56, 189, 248, .12), transparent 30%),
        linear-gradient(180deg, #020617, #0f172a 46%, #020617) !important;
}
