/*
 * Documentation
 * Docs: /Docs/Apps/Microsites/jadallas.md
 * Visual theme for the jadallas site. Defines layout, typography, colors, and component styling.
 */
/* Documentation: Base styling and layout rules.  Docs: /Docs/Apps/Microsites/jadallas.md */

:root {
    --bg-color: #000000;
    --text-color: #f0f0f0;
    --accent-dim: #555;
    --gold: #d4af37;
    --tanzanite: #6a0dad;
    --mercury: #b0c4de;
    --bronze: #cd7f32;
    --fire: #ff4500;
    --angel-blue: #87ceeb;
    /* WHY: Introduce shared surface tokens to modernize the hero card while keeping the palette cohesive. */
    --surface-glass: rgba(8, 8, 12, 0.78);
    --surface-border: rgba(212, 175, 55, 0.2);
    --surface-shadow: 0 35px 80px rgba(0, 0, 0, 0.55);
    --glow-gold: 0 0 35px rgba(212, 175, 55, 0.18);
    --font-heading: "Cinzel", serif;
    --font-mystical: "Cinzel Decorative", cursive;
    --font-body: "Montserrat", sans-serif;
}
/* Documentation: Component styling and visual treatments.  Docs: /Docs/Apps/Microsites/jadallas.md */

* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

/* WHY: Layer subtle gradients behind the scene to modernize the ambient backdrop while preserving the dark mood. */
html,
body {
    background-color: var(--bg-color);
    background-image: radial-gradient(circle at 20% 20%, rgba(106, 13, 173, 0.15), transparent 45%), radial-gradient(circle at 80% 10%, rgba(212, 175, 55, 0.12), transparent 40%), radial-gradient(circle at 50% 80%, rgba(135, 206, 235, 0.08), transparent 45%);
    color: var(--text-color);
    font-family: var(--font-body);
    height: 100vh;
    width: 100%;
    overflow: hidden;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    perspective: 1200px;
    perspective-origin: center center;
    transform-style: preserve-3d;
    cursor: crosshair;
    /* WHY: Start spotlight off-screen so all shapes are fully obscured until the user's first mouseover interaction. */
    --x: -1000px;
    --y: -1000px;
    line-height: 1.6;
}

/* --- ATMÓSFERA Y CAPAS --- */
.layer {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    pointer-events: none;
    transform-style: preserve-3d;
    opacity: 1;
}

@keyframes pulse-void {
    0%, 100% {
        opacity: 0.5;
    }

    50% {
        opacity: 0.7;
    }
}

/* WHY: Reduced from 200% to 100%, blur from 80px to 40px to cut GPU buffer size and blur cost. */
.fog {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    z-index: -2;
    opacity: 0.08;
    background: radial-gradient(circle, rgba(255, 255, 255, 0.05) 0%, transparent 50%);
    filter: blur(40px);
    animation: fog-drift 40s infinite alternate;
    contain: strict;
}

@keyframes fog-drift {
    from {
        transform: translate(-30px, -30px);
    }

    to {
        transform: translate(30px, 30px);
    }
}

/* --- ESTRELLAS --- */
/* WHY: Removed per-star box-shadow (causes repaint per frame) and use background radial-gradient glow instead. */
.star {
    position: absolute;
    background: radial-gradient(circle, white 30%, rgba(255, 255, 255, 0.3) 70%, transparent);
    border-radius: 50%;
    opacity: 0;
    animation: twinkle var(--duration) ease-in-out infinite;
    animation-delay: var(--delay);
    contain: strict;
}

@keyframes twinkle {
    0%, 100% {
        opacity: 0;
        transform: scale(0.1);
    }

    50% {
        opacity: var(--opacity);
        transform: scale(1);
    }
}

/* --- FORMAS MÍSTICAS --- */
/* WHY: Replaced per-shape drop-shadow filter (GPU-expensive per frame) with static opacity glow on hero shapes only. */
/* WHY: Removed CSS float-shape animation — JS drift system now drives random wandering movement for a "lurking in the dark" effect. */
.shape-container {
    position: absolute;
    transform-style: preserve-3d;
    will-change: transform;
    contain: layout style;
}

.shape {
    fill: none;
    stroke-width: 1;
    vector-effect: non-scaling-stroke;
    opacity: 0.4;
}

    .shape.hero {
        stroke-width: 1.5;
        opacity: 0.8;
        filter: drop-shadow(0 0 10px var(--glow-color));
    }

/* float-shape keyframes removed — replaced by JS drift system in app.js */

/* --- SUSURROS CRÍPTICOS --- */
/* WHY: Removed animated filter:blur() (triggers GPU repaint every frame) and animated text-shadow. Now uses opacity+transform only for compositor-friendly animation. */
.whisper {
    position: absolute;
    font-family: var(--font-mystical);
    color: var(--gold);
    font-size: 1.5rem;
    letter-spacing: 4px;
    opacity: 0;
    white-space: nowrap;
    pointer-events: none;
    will-change: opacity, transform;
    animation: cryptic-flash var(--duration) ease-out infinite;
    animation-delay: var(--delay);
    text-shadow: 0 0 10px rgba(212, 175, 55, 0.4);
    mix-blend-mode: screen;
    font-weight: 400;
}

@keyframes cryptic-flash {
    0% {
        opacity: 0;
        transform: scale(0.9) translateZ(-50px);
    }

    10% {
        opacity: 0.25;
        transform: scale(1.05) translateZ(0);
    }

    30% {
        opacity: 0.1;
        transform: scale(1) translateZ(0);
    }

    100% {
        opacity: 0;
    }
}

@media (prefers-reduced-motion: reduce) {
    /* WHY: Honor accessibility preferences by disabling ambient scene motion. */
    .reduced-motion .star,
    .reduced-motion .shape-container,
    .reduced-motion .whisper {
        animation: none !important;
    }

    .reduced-motion .star,
    .reduced-motion .whisper {
        opacity: 0.35;
        transform: none;
    }
}

/* --- CONTENIDO PRINCIPAL --- */
/* WHY: Elevate the hero content with a glass surface to create a modern focal point. */
.container {
    width: 100%;
    max-width: 900px;
    padding: 3.5rem 3.5rem 3.25rem;
    opacity: 1;
    z-index: 10;
    text-align: center;
    margin: 0 auto;
    transform: translateZ(80px);
    position: relative;
}

.hero-sheen {
    display: none;
}

.hero {
    position: relative;
    z-index: 1;
    display: flex;
    flex-direction: column;
    gap: 1.5rem;
}

h1 {
    font-family: var(--font-heading);
    font-size: clamp(2.8rem, 6vw, 5rem);
    letter-spacing: 0.7rem;
    margin-bottom: 0.5rem;
    color: #ffffff;
    background: linear-gradient(to bottom, #fff 40%, #999 100%);
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
    text-shadow: 0 0 30px rgba(255, 255, 255, 0.2);
    font-weight: 400;
}

.line {
    width: 120px;
    height: 1px;
    background: linear-gradient(90deg, transparent, rgba(212, 175, 55, 0.85), transparent);
    margin: 0 auto;
    position: relative;
    overflow: hidden;
}

.hero-tagline {
    font-size: 1.05rem;
    color: rgba(255, 255, 255, 0.78);
    letter-spacing: 0.35em;
    margin-bottom: 0;
    font-weight: 300;
    text-transform: uppercase;
    text-shadow: 0 0 12px rgba(0, 0, 0, 0.7);
}

.sr-only {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

.interest-form-wrapper {
    margin-top: 2.4rem;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.65rem;
    position: relative;
    z-index: 1;
}

.interest-kicker {
    /* WHY: Reserve the decorative face for ambient whisper glyphs only; UI copy should remain in standard Cinzel. */
    font-family: var(--font-heading);
    letter-spacing: 0.22em;
    font-size: 0.75rem;
    color: rgba(212, 175, 55, 0.85);
}

.interest-form {
    display: flex;
    gap: 0.5rem;
    align-items: center;
    justify-content: center;
    flex-wrap: wrap;
}

    .interest-form input {
        /* WHY: Widen the email field so longer addresses fit without wrapping on desktop. */
        min-width: 380px;
        padding: 0.7rem 1rem;
        font-family: var(--font-body);
        font-size: 0.9rem;
        letter-spacing: 0.02em;
        color: #f2f2f2;
        background: rgba(10, 10, 16, 0.85);
        border: 1px solid rgba(212, 175, 55, 0.35);
        border-radius: 999px;
        outline: none;
        transition: border-color 0.3s ease, box-shadow 0.3s ease, background-color 0.3s ease;
    }

        .interest-form input::placeholder {
            color: rgba(255, 255, 255, 0.4);
        }

        .interest-form input:focus {
            border-color: var(--gold);
            background: rgba(18, 18, 26, 0.9);
            box-shadow: 0 0 18px rgba(212, 175, 55, 0.25);
        }

    .interest-form button {
        padding: 0.75rem 1.7rem;
        font-family: var(--font-heading);
        font-size: 0.78rem;
        letter-spacing: 0.2em;
        text-transform: uppercase;
        color: #140d02;
        background: linear-gradient(130deg, #f2d27b 0%, #d4af37 100%);
        border: 1px solid rgba(212, 175, 55, 0.55);
        border-radius: 999px;
        cursor: pointer;
        transition: transform 0.3s ease, box-shadow 0.3s ease, background-color 0.3s ease;
        font-weight: 400;
        box-shadow: var(--glow-gold);
    }

        .interest-form button:hover {
            transform: translateY(-1px);
            box-shadow: 0 0 24px rgba(212, 175, 55, 0.35);
            background: linear-gradient(130deg, #f7e0a0 0%, #e2c05f 100%);
        }

        .interest-form button:focus-visible {
            outline: 2px solid rgba(212, 175, 55, 0.8);
            outline-offset: 2px;
        }

.interest-status.message {
    min-height: 24px;
    font-size: 0.7rem;
    letter-spacing: 0.16em;
    text-transform: uppercase;
    color: #bfbfbf;
}

    .interest-status.message.pending {
        color: #cbd5e1;
    }

    .interest-status.message.success {
        color: #9ae6b4;
    }

    .interest-status.message.error {
        color: #feb2b2;
    }

/* EFECTO VELA (SPOTLIGHT) */
#spotlight {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    /* Vela más grande, núcleo más brillante y borde exterior totalmente oscuro */
    background: radial-gradient(circle 650px at var(--x) var(--y), rgba(255, 255, 230, 0.6) 0%, rgba(255, 255, 210, 0.25) 30%, rgba(0, 0, 0, 1) 75%);
    z-index: 5;
    pointer-events: none;
    mix-blend-mode: multiply;
    contain: strict;
}

@media (max-width: 768px) {
    h1 {
        font-size: 2.8rem;
        letter-spacing: 0.35rem;
    }

    .hero-tagline {
        font-size: 0.9rem;
        letter-spacing: 0.22em;
    }

    .interest-kicker {
        font-size: 0.75rem;
        letter-spacing: 0.2em;
    }

    .interest-form {
        flex-direction: column;
    }

        .interest-form button {
            width: 100%;
        }
}

/* Confirmation page styles */
.confirmation-page {
    margin: 0;
}

.confirmation-page--success,
.confirmation-page--error {
    display: flex;
    align-items: center;
    justify-content: center;
    /* WHY: Use dynamic viewport height on confirmation screens to prevent phantom vertical scroll on mobile browser chrome changes. */
  min-height: 100vh;
  min-height: 100dvh;
    margin: 0;
    background-color: #050505;
    color: #e5e5e5;
    font-family: "Montserrat", sans-serif;
    background-image: radial-gradient(circle at center, rgba(255, 255, 255, 0.08) 0%, rgba(0, 0, 0, 0.95) 70%);
}

    .confirmation-page--success .container,
    .confirmation-page--error .container {
        max-width: 480px;
        width: 90%;
        padding: 3.5rem 2.5rem;
        border: 1px solid rgba(212, 175, 55, 0.2);
        text-align: center;
        background: linear-gradient(160deg, rgba(12, 12, 16, 0.95), rgba(4, 4, 6, 0.9));
        box-shadow: var(--surface-shadow);
        border-radius: 24px;
    }

/* WHY: Provide a clearer hierarchy for confirmation pages without breaking the cryptic tone. */
.confirmation-panel {
    position: relative;
    overflow: hidden;
}

    .confirmation-panel::before {
        content: "";
        position: absolute;
        top: -30%;
        left: -20%;
        width: 140%;
        height: 60%;
        background: radial-gradient(circle, rgba(212, 175, 55, 0.08), transparent 70%);
        opacity: 0.8;
        pointer-events: none;
    }

.confirmation-kicker {
    /* WHY: Keep confirmation copy readable and consistent by using standard Cinzel instead of the decorative variant. */
    font-family: var(--font-heading);
    font-size: 0.75rem;
    letter-spacing: 0.35rem;
    color: rgba(212, 175, 55, 0.7);
    margin-bottom: 1.5rem;
    text-transform: uppercase;
}

.confirmation-page--success h1,
.confirmation-page--error h1 {
    font-family: "Cinzel", serif;
    font-weight: 400;
    margin-bottom: 0.75rem;
    font-size: 2.1rem;
    letter-spacing: 0.3rem;
    text-shadow: 0 0 18px rgba(0, 0, 0, 0.6);
}

.confirmation-page--success h1 {
    color: #9ae6b4;
}

.confirmation-page--error h1 {
    color: #fca5a5;
}

.confirmation-page--success p,
.confirmation-page--error p {
    color: #cfcfcf;
    line-height: 1.7;
    margin-bottom: 2.5rem;
    font-size: 1.05rem;
    text-transform: none;
    letter-spacing: 0.04em;
}

.confirmation-detail {
    color: #d7d7d7;
}

.confirmation-page--success a,
.confirmation-page--error a {
    color: #d4af37;
    font-family: "Montserrat", sans-serif;
    text-decoration: none;
    text-transform: uppercase;
    letter-spacing: 0.2em;
    font-size: 0.78rem;
    border: 1px solid rgba(212, 175, 55, 0.5);
    padding: 12px 24px;
    transition: all 0.3s;
}

    .confirmation-page--success a:hover,
    .confirmation-page--error a:hover {
        background: rgba(212, 175, 55, 0.18);
        color: #f5e7b8;
    }

.confirmation-actions {
    display: flex;
    justify-content: center;
}

.confirmation-page--success .confirmation-subtitle {
    color: rgba(212, 175, 55, 0.85);
    /* WHY: Decorative Cinzel is limited to the floating background whisper text; subtitles use standard Cinzel. */
    font-family: "Cinzel", serif;
    font-size: 1.1rem;
    margin-top: 0;
    margin-bottom: 2rem;
    letter-spacing: 0.2rem;
    font-weight: 400;
    text-transform: uppercase;
}

/* Documentation: Focus ring overrides are intentionally omitted to preserve default focus handling. */

/* WHY: Ensure primary body copy remains neutral and legible across microsites. */
p,
li {
    color: var(--text-neutral, #e5e7eb);
}
/* Last-Modified: 2026-03-01T21:04:58.0000000Z */