/* ═══════════════════════════════════════════
   SITE STYLES
   ═══════════════════════════════════════════ */
:root {
    --bg: #121212;
    --bg-card: #161616;
    --wine: #6b1d2a;
    --wine-deep: #4a0e1a;
    --wine-light: #8b2e3f;
    --wine-glow: #a03450;
    --rose-muted: #c4727e;
    --blush: #d4959e;
    --cream: #e8ddd3;
    --text: #c8c0b8;
    --text-dim: #706860;
    --text-bright: #ede6df;
    --border: rgba(107, 29, 42, 0.15);
    --border-hover: rgba(107, 29, 42, 0.35);
    --grain: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.04'/%3E%3C/svg%3E");
}

* {
    margin: 0;
    padding: 0;
    box-sizing: border-box
}

html {
    scroll-behavior: smooth
}

body {
    font-family: 'Crimson Pro', serif;
    background: var(--bg);
    color: var(--text);
    overflow-x: hidden;
    -webkit-font-smoothing: antialiased
}

body::after {
    content: '';
    position: fixed;
    inset: 0;
    background: var(--grain);
    pointer-events: none;
    z-index: 9999;
    opacity: .5
}

::selection {
    background: var(--wine);
    color: var(--cream)
}

::-webkit-scrollbar {
    width: 4px
}

::-webkit-scrollbar-track {
    background: var(--bg)
}

::-webkit-scrollbar-thumb {
    background: var(--wine-deep);
    border-radius: 2px
}

.creatures-layer {
    position: fixed;
    inset: 0;
    pointer-events: none;
    z-index: 100;
    overflow: hidden
}

.creature {
    position: absolute;
    opacity: .06;
    font-size: 1.2rem;
    animation: cFloat 20s ease-in-out infinite;
    filter: grayscale(1)
}

@keyframes cFloat {

    0%,
    100% {
        transform: translate(0, 0) rotate(0)
    }

    25% {
        transform: translate(30px, -40px) rotate(5deg)
    }

    50% {
        transform: translate(-20px, -80px) rotate(-3deg)
    }

    75% {
        transform: translate(40px, -30px) rotate(7deg)
    }
}

.side-nav {
    position: fixed;
    left: 24px;
    top: 50%;
    transform: translateY(-50%);
    z-index: 1000;
    display: flex;
    flex-direction: column;
    gap: 20px
}

.side-nav-item {
    width: 8px;
    height: 8px;
    border: 1.5px solid var(--text-dim);
    border-radius: 50%;
    cursor: pointer;
    transition: all .5s cubic-bezier(.22, 1, .36, 1);
    background: transparent;
    position: relative
}

.side-nav-item.active {
    background: var(--wine);
    border-color: var(--wine-light);
    box-shadow: 0 0 12px rgba(107, 29, 42, .4);
    transform: scale(1.3)
}

.side-nav-item::after {
    content: attr(data-label);
    position: absolute;
    left: 20px;
    top: 50%;
    transform: translateY(-50%);
    font-family: 'DM Sans', sans-serif;
    font-size: .65rem;
    letter-spacing: .15em;
    text-transform: uppercase;
    color: var(--text-dim);
    white-space: nowrap;
    opacity: 0;
    transition: opacity .3s;
    pointer-events: none
}

.side-nav-item:hover::after {
    opacity: 1
}

/* ═══ HEADER ═══ */
.site-header {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    z-index: 999;
    display: flex;
    align-items: center;
    justify-content: center;
    height: 56px;
    background: rgba(12, 12, 12, 0.7);
    backdrop-filter: blur(16px);
    -webkit-backdrop-filter: blur(16px);
    border-bottom: 1px solid var(--border);
}

.header-nav {
    list-style: none;
    display: flex;
    align-items: center;
    gap: 0;
    width: 100%;
    max-width: 800px;
    justify-content: center;
    padding: 0 16px;
}

.header-nav li {
    flex: 1;
    text-align: center;
}

.header-nav li a {
    font-family: 'DM Sans', sans-serif;
    font-size: 0.6rem;
    letter-spacing: 0.2em;
    text-transform: uppercase;
    color: var(--text-dim);
    text-decoration: none;
    padding: 8px 6px;
    display: block;
    transition: color 0.4s ease, text-shadow 0.4s ease;
    white-space: nowrap;
}

.header-nav li a:hover {
    color: var(--rose-muted);
    text-shadow: 0 0 12px rgba(107, 29, 42, 0.3);
}

/* Center orb placeholder */
.header-nav li.orb-li {
    flex: 0 0 auto;
    position: relative;
    top: 40px;
    padding: 0 12px;
}

.header__movimiento {
    top: -3px;
    z-index: 1;
    animation: movimiento 3s ease-in-out infinite;
    will-change: transform;
}

.banner {
    display: flex;
    align-items: center;
    justify-content: space-around;
    opacity: 0.5;
    position: relative;
    z-index: 2;
    background-image: url('/src/banner/barra.png');
    background-size: contain;
    background-position: center;

    .banner__h2 {
        color: black;
    }

    .banner__img {
        height: 100%;
    }

    .banner__central {
        height: 10rem;
        position: relative;
        z-index: 99;
    }

    .banner__central {
        height: 10rem;
        position: relative;
        z-index: 99;
    }
}

@media (max-width:480px) {
    .banner__img {
        display: none;
    }

    .banner__central {
        display: block;
    }
}

@keyframes movimiento {
    0% {
        transform: translate3d(0, 0, 0);
    }

    50% {
        transform: translate3d(0, 10px, 0);
    }

    100% {
        transform: translate3d(0, 0, 0);
    }
}

.header-orb-wrap {
    position: relative;
    top: 12px;
    z-index: 2;
    width: 68px;
    height: 68px;
    border-radius: 50%;
    background: var(--bg);
    border: 1px solid var(--border);
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: 0 4px 24px rgba(0, 0, 0, 0.5), 0 0 30px rgba(107, 29, 42, 0.08);
    cursor: grab;
    overflow: hidden;
}

.header-orb-wrap:active {
    cursor: grabbing;
}

.header-orb-wrap::before {
    content: '';
    position: absolute;
    inset: -1px;
    border-radius: 50%;
    background: conic-gradient(from 0deg, rgba(107, 29, 42, 0.3), transparent 30%, rgba(107, 29, 42, 0.15) 60%, transparent 90%);
    animation: orbBorderSpin 8s linear infinite;
    z-index: 0;
}

@keyframes orbBorderSpin {
    to {
        transform: rotate(360deg);
    }
}

.header-orb-wrap canvas {
    border-radius: 50%;
    position: relative;
    z-index: 1;
}

/* Dropdown menu */
.header-nav li {
    position: relative;
}

.dropdown {
    position: relative;
}

.dropdown>a {
    position: relative;
    padding-right: 14px !important;
}

/* Flecha indicadora */
.dropdown>a::after {
    content: '▾';
    position: absolute;
    right: 2px;
    top: 50%;
    transform: translateY(-50%);
    font-size: 0.5rem;
    opacity: 0.6;
    transition: all 0.3s cubic-bezier(0.25, 0.1, 0.25, 1);
}

.dropdown:hover>a::after {
    opacity: 1;
    transform: translateY(-50%) translateY(2px);
    color: var(--wine-glow);
}

/* Invisible bridge so hover isn't lost when moving mouse down */
.dropdown::after {
    content: '';
    position: absolute;
    bottom: -24px;
    left: -20px;
    right: -20px;
    height: 30px;
    z-index: 1;
}

.dropdown-content {
    position: absolute;
    top: calc(100% + 20px);
    left: 50%;
    transform: translateX(-50%) translateY(10px) scale(0.98);
    background: rgba(18, 18, 18, 0.85);
    /* Premium dark glass */
    backdrop-filter: blur(24px) saturate(180%);
    -webkit-backdrop-filter: blur(24px) saturate(180%);
    border: 1px solid rgba(255, 255, 255, 0.06);
    border-top: 1px solid rgba(255, 255, 255, 0.12);
    /* Light source from top */
    border-radius: 16px;
    padding: 16px;
    min-width: 240px;
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    /* Spring ease for an organic feel */
    transition: all 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275);
    z-index: 1000;
    box-shadow:
        0 24px 48px rgba(0, 0, 0, 0.6),
        0 0 0 1px rgba(107, 29, 42, 0.15) inset,
        0 0 60px rgba(107, 29, 42, 0.15);
}

/* Inner glow accent for the card */
.dropdown-content::after {
    content: '';
    position: absolute;
    inset: 0;
    border-radius: inherit;
    box-shadow: inset 0 0 20px rgba(107, 29, 42, 0.05);
    pointer-events: none;
    z-index: -1;
}

.dropdown:hover .dropdown-content {
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
    transform: translateX(-50%) translateY(0) scale(1);
}

.dropdown-content a {
    display: flex;
    align-items: center;
    padding: 12px 18px;
    margin-bottom: 6px;
    border-radius: 10px;
    font-family: 'DM Sans', sans-serif;
    font-size: 0.65rem;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--text-dim);
    text-decoration: none;
    background: transparent;
    transition: all 0.3s cubic-bezier(0.25, 0.1, 0.25, 1);
    white-space: nowrap;
    position: relative;
    overflow: hidden;
    border: 1px solid transparent;

    /* Base state for entrance animation */
    opacity: 0;
    transform: translateY(-8px);
}

.dropdown-content a:last-child {
    margin-bottom: 0;
}

/* Hover dynamic gradient background */
.dropdown-content a::before {
    content: '';
    position: absolute;
    inset: 0;
    background: linear-gradient(90deg, rgba(107, 29, 42, 0.15), transparent);
    opacity: 0;
    transition: opacity 0.3s cubic-bezier(0.25, 0.1, 0.25, 1);
    z-index: -1;
}

/* Hover glowing dot */
.dropdown-content a::after {
    content: '';
    position: absolute;
    left: 10px;
    top: 50%;
    transform: translateY(-50%) scale(0);
    width: 4px;
    height: 4px;
    border-radius: 50%;
    background: var(--wine-glow);
    transition: transform 0.4s cubic-bezier(0.34, 1.56, 0.64, 1);
    /* ease-out-back */
    box-shadow: 0 0 10px var(--wine-glow);
}

.dropdown-content a:hover {
    color: var(--cream);
    padding-left: 24px;
    border-color: rgba(107, 29, 42, 0.4);
    background: rgba(107, 29, 42, 0.08);
    box-shadow: 0 4px 16px rgba(0, 0, 0, 0.3);
    /* Remove the initial transition delay on hover so feedback is instant */
    transition: all 0.2s cubic-bezier(0.25, 0.1, 0.25, 1) 0s !important;
}

.dropdown-content a:hover::before {
    opacity: 1;
}

.dropdown-content a:hover::after {
    transform: translateY(-50%) scale(1);
}

/* Subtle separator via box-shadow on the a tag instead of pseudo element to keep it cleaner */
.dropdown-content a:not(:last-child) {
    border-bottom: 1px solid rgba(255, 255, 255, 0.02);
}

.dropdown-content a:hover:not(:last-child) {
    border-bottom: 1px solid rgba(107, 29, 42, 0.4);
}

/* Stagger entrance animations */
.dropdown:hover .dropdown-content a {
    opacity: 1;
    transform: translateY(0);
}

.dropdown:hover .dropdown-content a:nth-child(1) {
    transition: all 0.4s cubic-bezier(0.25, 0.1, 0.25, 1) 0.05s;
}

.dropdown:hover .dropdown-content a:nth-child(2) {
    transition: all 0.4s cubic-bezier(0.25, 0.1, 0.25, 1) 0.10s;
}

.dropdown:hover .dropdown-content a:nth-child(3) {
    transition: all 0.4s cubic-bezier(0.25, 0.1, 0.25, 1) 0.15s;
}

.dropdown:hover .dropdown-content a:nth-child(4) {
    transition: all 0.4s cubic-bezier(0.25, 0.1, 0.25, 1) 0.20s;
}

.dropdown:hover .dropdown-content a:nth-child(5) {
    transition: all 0.4s cubic-bezier(0.25, 0.1, 0.25, 1) 0.25s;
}

.dropdown:hover .dropdown-content a:nth-child(6) {
    transition: all 0.4s cubic-bezier(0.25, 0.1, 0.25, 1) 0.30s;
}

.dropdown:hover .dropdown-content a:nth-child(7) {
    transition: all 0.4s cubic-bezier(0.25, 0.1, 0.25, 1) 0.35s;
}

.dropdown:hover .dropdown-content a:nth-child(8) {
    transition: all 0.4s cubic-bezier(0.25, 0.1, 0.25, 1) 0.40s;
}

.dropdown:hover .dropdown-content a:nth-child(9) {
    transition: all 0.4s cubic-bezier(0.25, 0.1, 0.25, 1) 0.45s;
}

.dropdown:hover .dropdown-content a:nth-child(10) {
    transition: all 0.4s cubic-bezier(0.25, 0.1, 0.25, 1) 0.50s;
}

/* Mobile header */
@media(max-width:768px) {
    .header-nav li a {
        font-size: 0.5rem;
        letter-spacing: 0.1em;
        padding: 8px 3px;
    }

    .header-orb-wrap {
        width: 54px;
        height: 54px;
        top: 8px;
    }

    .site-header {
        height: 48px;
    }

    .dropdown>a::after {
        font-size: 0.45rem;
        right: 0px;
    }

    .dropdown-content {
        min-width: 150px;
        padding: 8px 0;
        border-radius: 10px;
    }

    .dropdown-content a {
        font-size: 0.5rem;
        padding: 10px 20px;
        letter-spacing: 0.15em;
    }

    .dropdown-content a:hover {
        padding-left: 24px;
    }
}

/* ═══ LOCKED MODAL ═══ */
.locked-overlay {
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, .85);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    z-index: 9000;
    display: flex;
    align-items: center;
    justify-content: center;
    opacity: 0;
    visibility: hidden;
    transition: opacity .4s cubic-bezier(.22, 1, .36, 1), visibility .4s;
}

.locked-overlay.open {
    opacity: 1;
    visibility: visible;
}

.locked-modal {
    background: var(--bg-card);
    border: 1px solid var(--border-hover);
    border-radius: 24px;
    padding: 56px 48px;
    text-align: center;
    max-width: 420px;
    width: 90%;
    position: relative;
    transform: translateY(20px) scale(.96);
    transition: transform .4s cubic-bezier(.22, 1, .36, 1);
    box-shadow: 0 24px 80px rgba(0, 0, 0, .6), 0 0 60px rgba(107, 29, 42, .12);
}

.locked-overlay.open .locked-modal {
    transform: translateY(0) scale(1);
}

.locked-icon {
    font-size: 2.8rem;
    margin-bottom: 24px;
    display: block;
    animation: lockPulse 2.5s ease-in-out infinite;
}

@keyframes lockPulse {

    0%,
    100% {
        transform: scale(1);
        filter: drop-shadow(0 0 8px rgba(107, 29, 42, .3));
    }

    50% {
        transform: scale(1.08);
        filter: drop-shadow(0 0 18px rgba(107, 29, 42, .6));
    }
}

.locked-title {
    font-family: 'Cinzel', serif;
    font-size: 1.1rem;
    color: var(--cream);
    letter-spacing: .08em;
    margin-bottom: 12px;
}

.locked-sub {
    font-family: 'Crimson Pro', serif;
    font-size: 1rem;
    color: var(--text-dim);
    line-height: 1.7;
    margin-bottom: 28px;
}

.locked-date {
    font-family: 'Cinzel', serif;
    font-size: 1.7rem;
    font-weight: 600;
    color: var(--wine-light);
    letter-spacing: .12em;
    margin-bottom: 6px;
    text-shadow: 0 0 24px rgba(107, 29, 42, .5);
}

.locked-date-label {
    font-family: 'DM Sans', sans-serif;
    font-size: .6rem;
    letter-spacing: .3em;
    text-transform: uppercase;
    color: var(--text-dim);
    margin-bottom: 28px;
    display: block;
}

.locked-countdown {
    display: flex;
    gap: 12px;
    justify-content: center;
    margin-bottom: 32px;
}

.locked-cd-box {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 4px;
}

.locked-cd-val {
    font-family: 'Cinzel', serif;
    font-size: 1.4rem;
    font-weight: 600;
    color: var(--cream);
    min-width: 52px;
    background: rgba(107, 29, 42, .12);
    border: 1px solid var(--border);
    border-radius: 8px;
    padding: 8px 4px 6px;
    line-height: 1;
}

.locked-cd-label {
    font-family: 'DM Sans', sans-serif;
    font-size: .5rem;
    letter-spacing: .15em;
    text-transform: uppercase;
    color: var(--text-dim);
}

.locked-close {
    font-family: 'DM Sans', sans-serif;
    font-size: .6rem;
    letter-spacing: .2em;
    text-transform: uppercase;
    color: var(--text-dim);
    background: none;
    border: 1px solid var(--border);
    border-radius: 8px;
    padding: 10px 24px;
    cursor: pointer;
    transition: all .3s cubic-bezier(.22, 1, .36, 1);
}

.locked-close:hover {
    border-color: var(--wine-light);
    color: var(--rose-muted);
    background: rgba(107, 29, 42, .06);
}



.hero {
    height: 100vh;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    position: relative;
    overflow: hidden;
    padding-top: 56px
}

.hero-bg-line {
    position: absolute;
    width: 1px;
    height: 100%;
    background: linear-gradient(180deg, transparent, var(--border), transparent)
}

.hero-bat {
    position: absolute;
    font-size: 1.8rem;
    opacity: .04;
    animation: batFly 12s ease-in-out infinite
}

@keyframes batFly {
    0% {
        transform: translate(0, 0) scaleX(1)
    }

    25% {
        transform: translate(100px, -60px) scaleX(-1)
    }

    50% {
        transform: translate(200px, -20px) scaleX(-1)
    }

    75% {
        transform: translate(80px, 30px) scaleX(1)
    }

    100% {
        transform: translate(0, 0) scaleX(1)
    }
}

.hero-content {
    text-align: center;
    z-index: 2;
    opacity: 0;
    animation: hReveal 2.5s cubic-bezier(.22, 1, .36, 1) .3s forwards
}

@keyframes hReveal {
    from {
        opacity: 0;
        transform: translateY(40px);
        filter: blur(4px)
    }

    to {
        opacity: 1;
        transform: translateY(0);
        filter: blur(0)
    }
}

.hero-eyebrow {
    font-family: 'DM Sans', sans-serif;
    font-size: 1rem;
    letter-spacing: .5em;
    text-transform: uppercase;
    color: rgb(177, 44, 44);
    margin-bottom: 32px
}

.hero h1 {
    font-family: 'Cinzel', serif;
    font-size: clamp(2.2rem, 5.5vw, 4.2rem);
    font-weight: 400;
    color: var(--cream);
    letter-spacing: .08em;
    line-height: 1.2
}

.hero h1 em {
    font-family: 'Homemade Apple', cursive;
    font-style: normal;
    font-size: .55em;
    color: var(--wine-light);
    display: block;
    margin-top: 16px;
    letter-spacing: .02em
}

.hero-divider {
    width: 40px;
    height: 1px;
    background: var(--wine);
    margin: 36px auto;
    position: relative
}

.hero-divider::before {
    content: '🦇';
    position: absolute;
    top: -10px;
    left: 50%;
    transform: translateX(-50%);
    font-size: .9rem;
    opacity: .3
}

.hero-sub {
    font-size: 1.05rem;
    font-weight: 300;
    color: var(--text-dim);
    max-width: 440px;
    line-height: 1.9;
    font-style: italic
}

.scroll-cue {
    position: absolute;
    bottom: 48px;
    transform: translateX(-50%);
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 10px;
    opacity: 0;
    animation: hReveal 1.5s 2.5s cubic-bezier(.22, 1, .36, 1) forwards;
    cursor: pointer
}

.scroll-cue span {
    font-family: 'DM Sans', sans-serif;
    font-size: .6rem;
    letter-spacing: .4em;
    text-transform: uppercase;
    color: var(--text-dim)
}

.scroll-line {
    width: 1px;
    height: 32px;
    background: var(--wine);
    position: relative;
    overflow: hidden
}

.scroll-line::after {
    content: '';
    position: absolute;
    top: -100%;
    left: 0;
    width: 100%;
    height: 100%;
    background: var(--wine-glow);
    animation: sPulse 2s ease-in-out infinite
}

@keyframes sPulse {
    0% {
        top: -100%
    }

    100% {
        top: 100%
    }
}

.section {
    min-height: 100vh;
    padding: 120px 24px;
    position: relative
}

.section-header {
    text-align: center;
    margin-bottom: 80px
}

.section-label {
    font-family: 'DM Sans', sans-serif;
    font-size: .6rem;
    letter-spacing: .5em;
    text-transform: uppercase;
    color: var(--wine-light);
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 16px;
    margin-bottom: 24px
}

.section-label::before,
.section-label::after {
    content: '';
    width: 24px;
    height: 1px;
    background: var(--wine)
}

.section-heading {
    font-family: 'Cinzel', serif;
    font-size: clamp(1.6rem, 3.5vw, 2.4rem);
    font-weight: 400;
    color: var(--text-bright);
    letter-spacing: .06em;
    margin-bottom: 16px
}

.section-epi {
    font-style: italic;
    font-weight: 300;
    font-size: .95rem;
    color: rgb(177, 44, 44);
    max-width: 420px;
    margin: 0 auto;
    line-height: 1.8
}

.reveal {
    opacity: 0;
    transform: translateY(50px);
    transition: all 1.2s cubic-bezier(.22, 1, .36, 1)
}

.reveal.visible {
    opacity: 1;
    transform: translateY(0)
}

.museo-wrap {
    position: relative;
    width: 100%;
    overflow: hidden
}

.museo-track {
    display: flex;
    gap: 40px;
    padding: 0 calc(50vw - 280px);
    transition: transform .6s cubic-bezier(.22, 1, .36, 1);
    cursor: grab;
    user-select: none;
    -webkit-user-select: none;
    touch-action: pan-y
}

.museo-track.dragging {
    transition: none;
    cursor: grabbing
}

.sala-card {
    flex: 0 0 560px;
    min-height: 400px;
    background: var(--bg-card);
    border: 1px solid var(--border);
    border-radius: 24px;
    position: relative;
    overflow: hidden;
    transition: transform .4s cubic-bezier(.22, 1, .36, 1), box-shadow .4s, opacity .4s;
    transform-style: preserve-3d
}

.sala-card.dim {
    opacity: .45;
    transform: scale(.92)
}

.sala-card:hover {
    border-color: var(--border-hover);
    box-shadow: 0 30px 80px rgba(0, 0, 0, .5), 0 0 60px rgba(107, 29, 42, .06)
}

.sala-inner {
    padding: 48px 44px;
    position: relative;
    z-index: 2;
    height: 100%;
    display: flex;
    flex-direction: column
}

.sala-num-bg {
    font-family: 'Cinzel', serif;
    font-size: 7rem;
    font-weight: 700;
    color: rgba(107, 29, 42, .035);
    position: absolute;
    top: -20px;
    right: 16px;
    line-height: 1;
    pointer-events: none;
    transition: color .5s
}

.sala-card:hover .sala-num-bg {
    color: rgba(107, 29, 42, .06)
}

.sala-icon2 {
    font-size: 2rem;
    margin-bottom: 18px;
    display: inline-block;
    transition: transform .6s cubic-bezier(.22, 1, .36, 1);
    filter: drop-shadow(0 0 8px rgba(107, 29, 42, .15))
}

.sala-card:hover .sala-icon2 {
    transform: scale(1.15) translateY(-4px)
}

.sala-title2 {
    font-family: 'Cinzel', serif;
    font-size: 1.3rem;
    font-weight: 500;
    color: var(--text-bright);
    letter-spacing: .04em;
    margin-bottom: 14px;
    line-height: 1.3
}

.sala-text2 {
    font-size: .95rem;
    line-height: 1.9;
    color: var(--text);
    font-weight: 300;
    margin-bottom: auto;
    max-width: 460px
}

.sala-quote2 {
    font-family: 'Homemade Apple', cursive;
    font-size: .78rem;
    color: var(--rose-muted);
    line-height: 1.7;
    padding: 20px 0 0;
    border-top: 1px solid var(--border);
    margin-top: 20px
}

.sala-photo2 {
    width: 100%;
    height: 130px;
    border: 1px dashed rgba(107, 29, 42, .1);
    border-radius: 12px;
    display: flex;
    align-items: center;
    justify-content: center;
    margin-top: 14px;
    font-family: 'DM Sans', sans-serif;
    font-size: .55rem;
    letter-spacing: .15em;
    text-transform: uppercase;
    color: var(--text-dim);
    transition: all .4s;
    cursor: pointer;
    background: rgba(107, 29, 42, .015)
}

.sala-photo2:hover {
    border-color: var(--wine);
    background: rgba(107, 29, 42, .04);
    color: var(--rose-muted)
}

.museo-dots {
    display: flex;
    justify-content: center;
    gap: 12px;
    margin-top: 36px
}

.museo-dot {
    width: 28px;
    height: 3px;
    background: rgba(107, 29, 42, .12);
    border-radius: 2px;
    transition: all .5s;
    cursor: pointer
}

.museo-dot.active {
    width: 48px;
    background: var(--wine)
}

.museo-hint {
    text-align: center;
    margin-top: 14px;
    font-family: 'DM Sans', sans-serif;
    font-size: .5rem;
    letter-spacing: .4em;
    text-transform: uppercase;
    color: var(--text-dim);
    opacity: .35
}

.museo-arrows {
    position: absolute;
    top: 50%;
    left: 0;
    right: 0;
    display: flex;
    justify-content: space-between;
    padding: 0 max(12px, calc(50vw - 340px));
    pointer-events: none;
    transform: translateY(-50%);
    z-index: 5
}

.museo-arrow {
    width: 44px;
    height: 44px;
    border-radius: 50%;
    background: rgba(12, 12, 12, .7);
    border: 1px solid var(--border);
    color: var(--text-dim);
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    pointer-events: auto;
    font-size: 1rem;
    transition: all .3s;
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px)
}

.museo-arrow:hover {
    border-color: var(--wine);
    color: var(--rose-muted);
    background: rgba(107, 29, 42, .08)
}

.museo-arrow.hide {
    opacity: 0;
    pointer-events: none
}

@media(max-width:768px) {
    .sala-card {
        flex: 0 0 85vw;
        min-height: auto
    }

    .museo-track {
        padding: 0 8vw;
        gap: 20px
    }

    .sala-inner {
        padding: 32px 24px
    }

    .sala-num-bg {
        font-size: 4.5rem
    }
}

#constelacion {
    background-color: black;
    padding-bottom: 60px
}

.sky {
    position: relative;
    width: 100%;
    max-width: 960px;
    height: 520px;
    margin: 0 auto;
    border-radius: 24px;
    background: radial-gradient(ellipse at 30% 25%, #12121c, #0a0a0e 55%, #060608);
    overflow: hidden;
    border: 1px solid rgba(107, 29, 42, .06);
    cursor: crosshair
}

.sky-canvas {
    position: absolute;
    inset: 0;
    z-index: 1;
    pointer-events: none
}

.sky-nebula {
    position: absolute;
    border-radius: 50%;
    filter: blur(80px);
    pointer-events: none;
    animation: nebPulse 10s ease-in-out infinite
}

@keyframes nebPulse {

    0%,
    100% {
        opacity: .6;
        transform: scale(1)
    }

    50% {
        opacity: 1;
        transform: scale(1.06)
    }
}

.neb-1 {
    width: 320px;
    height: 220px;
    top: 3%;
    left: 12%;
    background: rgba(107, 29, 42, .09)
}

.neb-2 {
    width: 220px;
    height: 200px;
    bottom: 8%;
    right: 8%;
    background: rgba(60, 20, 50, .07)
}

.neb-3 {
    width: 160px;
    height: 160px;
    top: 38%;
    left: 52%;
    background: rgba(40, 15, 60, .05)
}

.mini-star {
    position: absolute;
    width: 1.5px;
    height: 1.5px;
    background: var(--cream);
    border-radius: 50%;
    opacity: .1;
    animation: mTw var(--ms-d, 4s) ease-in-out infinite
}

@keyframes mTw {

    0%,
    100% {
        opacity: .04
    }

    50% {
        opacity: .25
    }
}

.star {
    position: absolute;
    cursor: pointer;
    z-index: 3;
    transition: transform .35s cubic-bezier(.22, 1, .36, 1)
}

.star-dot {
    width: 100%;
    height: 100%;
    border-radius: 50%;
    background: radial-gradient(circle, rgba(230, 220, 210, .85), rgba(200, 180, 160, .3) 50%, transparent 70%);
    animation: sPul var(--dur, 3s) ease-in-out infinite;
    animation-delay: var(--del, 0s);
    transition: all .3s
}

@keyframes sPul {

    0%,
    100% {
        opacity: .3;
        transform: scale(1)
    }

    50% {
        opacity: 1;
        transform: scale(1.25)
    }
}

.star:hover {
    transform: scale(2.8);
    z-index: 10
}

.star:hover .star-dot {
    animation: none;
    opacity: 1;
    background: radial-gradient(circle, #fff, var(--wine-glow) 40%, transparent 70%);
    box-shadow: 0 0 24px 8px rgba(160, 52, 80, .35)
}

.star-tip {
    position: absolute;
    top: calc(100% + 14px);
    left: 50%;
    transform: translateX(-50%) translateY(10px);
    background: rgba(8, 8, 12, .97);
    border: 1px solid rgba(107, 29, 42, .2);
    border-radius: 12px;
    padding: 14px 20px;
    white-space: nowrap;
    font-family: 'Homemade Apple', cursive;
    font-size: .75rem;
    color: var(--rose-muted);
    opacity: 0;
    pointer-events: none;
    transition: all .4s cubic-bezier(.22, 1, .36, 1);
    z-index: 20;
    box-shadow: 0 12px 40px rgba(0, 0, 0, .6)
}

.star:hover .star-tip {
    opacity: 1;
    transform: translateX(-50%) translateY(0)
}

.star.discovered {
    animation: starBurst .7s cubic-bezier(.22, 1, .36, 1)
}

.star.discovered .star-dot {
    background: radial-gradient(circle, #fff, var(--wine-glow) 45%, transparent 70%);
    box-shadow: 0 0 14px 5px rgba(160, 52, 80, .25);
    animation: none;
    opacity: 1
}

@keyframes starBurst {
    0% {
        transform: scale(1)
    }

    30% {
        transform: scale(4)
    }

    60% {
        transform: scale(0.8)
    }

    100% {
        transform: scale(1)
    }
}

.star-ring {
    position: absolute;
    inset: -8px;
    border-radius: 50%;
    border: 1px solid rgba(160, 52, 80, .2);
    opacity: 0;
    transform: scale(0);
    pointer-events: none
}

.star.discovered .star-ring {
    animation: ringPulse 2s ease-out forwards
}

@keyframes ringPulse {
    0% {
        opacity: .6;
        transform: scale(0)
    }

    50% {
        opacity: .3
    }

    100% {
        opacity: 0;
        transform: scale(5)
    }
}

.sky-counter {
    text-align: center;
    margin-top: 24px;
    font-family: 'DM Sans', sans-serif;
    font-size: .7rem;
    letter-spacing: .2em;
    text-transform: uppercase;
    color: var(--text-dim);
}

.sky-counter strong {
    color: red;
    font-weight: 600;

}

.sky-all-found {
    display: none;
    text-align: center;
    margin-top: 12px;
    font-family: 'Homemade Apple', cursive;
    font-size: .85rem;
    color: var(--rose-muted);
    animation: rvUp .8s ease
}

.sky-all-found.show {
    display: block
}

@keyframes rvUp {
    from {
        opacity: 0;
        transform: translateY(16px)
    }

    to {
        opacity: 1;
        transform: translateY(0)
    }
}

.shooting {
    position: absolute;
    width: 100px;
    height: 1px;
    background: linear-gradient(90deg, rgba(200, 180, 170, .7), transparent);
    opacity: 0;
    animation: shootS 1s ease-out;
    pointer-events: none;
    z-index: 2
}

@keyframes shootS {
    0% {
        opacity: 0;
        transform: translateX(0) translateY(0)
    }

    8% {
        opacity: .9
    }

    100% {
        opacity: 0;
        transform: translateX(260px) translateY(130px)
    }
}

@media(max-width:768px) {
    .sky {
        height: 380px;
        border-radius: 16px
    }
}

/* ═══ PLANET WORLD REVEAL ═══ */
.sky.collapsing {
    animation: skyCollapse 1.5s cubic-bezier(.22, 1, .36, 1) forwards
}

@keyframes skyCollapse {
    0% {
        opacity: 1;
        transform: scale(1)
    }

    60% {
        opacity: 0;
        transform: scale(.85)
    }

    100% {
        opacity: 0;
        height: 0;
        padding: 0;
        margin: 0;
        border: 0;
        overflow: hidden;
        transform: scale(.85)
    }
}

.sky-counter.fade-out,
.sky-all-found.fade-out {
    animation: fadeDown .6s ease forwards
}

@keyframes fadeDown {
    to {
        opacity: 0;
        transform: translateY(-10px)
    }
}

.world-reveal {
    display: none;
    width: 100%;
    max-width: 960px;
    margin: 40px auto 0;
    flex-direction: column;
    align-items: center;
    opacity: 0;
    transform: translateY(40px)
}

.world-reveal.show {
    display: flex;
    animation: worldFadeIn 1.2s cubic-bezier(.22, 1, .36, 1) .3s forwards
}

@keyframes worldFadeIn {
    from {
        opacity: 0;
        transform: scale(.9) translateY(30px)
    }

    to {
        opacity: 1;
        transform: scale(1) translateY(0)
    }
}

.world-row {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0;
    width: 100%
}

.world-panel {
    flex: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 16px;
    padding: 32px 20px;
    cursor: pointer;
    position: relative;
    border-radius: 20px;
    transition: background .4s
}

.world-panel:hover {
    background: rgba(107, 29, 42, .03)
}

.world-panel-label-top {
    font-family: 'DM Sans', sans-serif;
    font-size: .5rem;
    letter-spacing: .4em;
    text-transform: uppercase;
    color: var(--text-dim)
}

.world-panel-title {
    font-family: 'Cinzel', serif;
    font-size: clamp(1.1rem, 2.5vw, 1.6rem);
    font-weight: 400;
    color: var(--cream);
    letter-spacing: .06em;
    text-align: center;
    transition: text-shadow .5s
}

.world-panel:hover .world-panel-title {
    text-shadow: 0 0 30px rgba(107, 29, 42, .3)
}

.world-canvas-wrap {
    width: 280px;
    height: 280px;
    position: relative;
    border-radius: 50%;
    overflow: hidden
}

.world-canvas-wrap canvas {
    border-radius: 50%
}

.world-divider {
    width: 1px;
    height: 320px;
    background: linear-gradient(180deg, transparent, var(--border), transparent);
    flex-shrink: 0;
    margin: 0 8px
}

.world-cities {
    display: flex;
    gap: 24px;
    margin-top: 8px
}

.world-city {
    display: flex;
    align-items: center;
    gap: 6px;
    font-family: 'DM Sans', sans-serif;
    font-size: .55rem;
    letter-spacing: .15em;
    text-transform: uppercase;
    color: var(--text-dim)
}

.world-city::before {
    content: '';
    width: 5px;
    height: 5px;
    border-radius: 50%;
    background: var(--wine-glow);
    box-shadow: 0 0 6px var(--wine-glow)
}

.world-panel.active .world-panel-title {
    color: var(--wine-glow);
    text-shadow: 0 0 30px rgba(107, 29, 42, .4)
}

.world-subtitle {
    font-family: 'Homemade Apple', cursive;
    font-size: .7rem;
    color: var(--rose-muted);
    margin-top: 4px;
    opacity: 0;
    transition: opacity .5s
}

.world-panel:hover .world-subtitle {
    opacity: 1
}

@media(max-width:768px) {
    .world-row {
        flex-direction: column;
        gap: 32px
    }

    .world-divider {
        width: 120px;
        height: 1px;
        background: linear-gradient(90deg, transparent, var(--border), transparent)
    }

    .world-canvas-wrap {
        width: 220px;
        height: 220px
    }
}

#jardin {
    background: linear-gradient(180deg, var(--bg), #0c100c 50%, var(--bg));
    overflow: hidden
}

.garden-wrap {
    max-width: 880px;
    margin: 0 auto;
    position: relative
}

.garden-ambient {
    position: absolute;
    inset: 0;
    pointer-events: none;
    overflow: hidden
}

.garden-spore {
    position: absolute;
    width: 2px;
    height: 2px;
    border-radius: 50%;
    background: rgba(107, 29, 42, .15);
    animation: sporeFloat var(--sp-d, 12s) ease-in-out var(--sp-del, 0s) infinite
}

@keyframes sporeFloat {

    0%,
    100% {
        opacity: 0;
        transform: translateY(0) scale(.5)
    }

    20% {
        opacity: .4
    }

    50% {
        transform: translateY(-25vh) translateX(var(--sp-x, 10px)) scale(1);
        opacity: .15
    }

    100% {
        opacity: 0;
        transform: translateY(-50vh) scale(.3)
    }
}

.flowers-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 24px;
    margin-bottom: 48px
}

.flower-card {
    background: var(--bg-card);
    border: 1px solid var(--border);
    border-radius: 20px;
    padding: 36px 20px 28px;
    text-align: center;
    cursor: pointer;
    transition: all .5s cubic-bezier(.22, 1, .36, 1);
    position: relative;
    overflow: visible
}

.flower-card::before {
    content: '';
    position: absolute;
    inset: -1px;
    border-radius: 20px;
    background: radial-gradient(circle at 50% 40%, rgba(107, 29, 42, .08), transparent 65%);
    opacity: 0;
    transition: opacity .6s;
    z-index: 0
}

.flower-card:hover::before {
    opacity: 1
}

.flower-card:hover {
    border-color: var(--border-hover);
    transform: translateY(-6px);
    box-shadow: 0 16px 48px rgba(0, 0, 0, .3)
}

.flower-icon {
    font-size: 2.6rem;
    display: block;
    margin-bottom: 16px;
    transition: all .8s cubic-bezier(.22, 1, .36, 1);
    filter: grayscale(1) brightness(.3);
    transform: scale(.6) rotate(-15deg);
    position: relative;
    z-index: 1
}

.flower-card.bloomed {
    border-color: rgba(107, 29, 42, .25)
}

.flower-card.bloomed .flower-icon {
    filter: grayscale(0) brightness(1);
    transform: scale(1.1) rotate(0)
}

.flower-card.blooming .flower-icon {
    animation: bloomPop .8s cubic-bezier(.22, 1, .36, 1)
}

@keyframes bloomPop {
    0% {
        transform: scale(.6) rotate(-15deg);
        filter: grayscale(1) brightness(.3)
    }

    50% {
        transform: scale(1.4) rotate(5deg);
        filter: grayscale(0) brightness(1.2)
    }

    100% {
        transform: scale(1.1) rotate(0);
        filter: grayscale(0) brightness(1)
    }
}

.flower-name {
    font-family: 'DM Sans', sans-serif;
    font-size: .55rem;
    letter-spacing: .2em;
    text-transform: uppercase;
    color: var(--text-dim);
    margin-bottom: 8px;
    transition: all .5s;
    position: relative;
    z-index: 1
}

.flower-card.bloomed .flower-name {
    color: var(--wine-light)
}

.flower-msg {
    font-family: 'Homemade Apple', cursive;
    font-size: .68rem;
    color: var(--rose-muted);
    line-height: 1.6;
    opacity: 0;
    transform: translateY(10px) scale(.95);
    transition: all .7s cubic-bezier(.22, 1, .36, 1) .15s;
    min-height: 36px;
    position: relative;
    z-index: 1
}

.flower-card.bloomed .flower-msg {
    opacity: 1;
    transform: translateY(0) scale(1)
}

/* Burst particles on bloom */
.bloom-particle {
    position: absolute;
    width: 4px;
    height: 4px;
    border-radius: 50%;
    pointer-events: none;
    z-index: 10
}

.bloom-particle.p-wine {
    background: var(--wine-glow)
}

.bloom-particle.p-cream {
    background: rgba(232, 221, 211, .5)
}

.bloom-particle.p-rose {
    background: var(--rose-muted)
}

@keyframes burstOut {
    0% {
        opacity: 1;
        transform: translate(0, 0) scale(1)
    }

    100% {
        opacity: 0;
        transform: translate(var(--bx), var(--by)) scale(0)
    }
}

.garden-controls {
    text-align: center;
    position: relative
}

.garden-bar-wrap {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 16px;
    margin-bottom: 16px
}

.garden-bar {
    width: 220px;
    height: 4px;
    background: rgba(107, 29, 42, .08);
    border-radius: 3px;
    overflow: hidden;
    position: relative
}

.garden-fill {
    height: 100%;
    width: 0%;
    background: linear-gradient(90deg, var(--wine-deep), var(--wine), var(--wine-glow));
    border-radius: 3px;
    transition: width .8s cubic-bezier(.22, 1, .36, 1);
    position: relative
}

.garden-fill::after {
    content: '';
    position: absolute;
    right: 0;
    top: -2px;
    bottom: -2px;
    width: 8px;
    border-radius: 50%;
    background: var(--wine-glow);
    box-shadow: 0 0 8px var(--wine-glow);
    opacity: 0;
    transition: opacity .3s
}

.garden-fill[style*="width: 0"]::after {
    opacity: 0
}

.garden-pct {
    font-family: 'DM Sans', sans-serif;
    font-size: .65rem;
    letter-spacing: .1em;
    color: var(--text-dim)
}

.garden-prompt {
    font-family: 'DM Sans', sans-serif;
    font-size: .5rem;
    letter-spacing: .35em;
    text-transform: uppercase;
    color: var(--text-dim);
    opacity: .4;
    margin-top: 8px
}

.garden-complete {
    display: none;
    margin-top: 16px;
    font-family: 'Homemade Apple', cursive;
    font-size: .85rem;
    color: var(--rose-muted);
    animation: rvUp .8s ease
}

.garden-complete.show {
    display: block
}

@media(max-width:768px) {
    .flowers-grid {
        grid-template-columns: repeat(2, 1fr);
        gap: 16px
    }

    .flower-card {
        padding: 28px 14px 22px
    }
}

@media(max-width:480px) {
    .flowers-grid {
        grid-template-columns: 1fr 1fr;
        gap: 12px
    }

    .flower-card {
        padding: 24px 12px 18px
    }

    .flower-icon {
        font-size: 2.2rem
    }
}

#libro {
    display: flex;
    flex-direction: column;
    align-items: center
}

.book-wrap {
    max-width: 620px;
    width: 100%
}

.book-page {
    display: none;
    background: var(--bg-card);
    border: 1px solid var(--border);
    border-radius: 16px;
    padding: 56px 48px;
    position: relative;
    animation: pgFlip .7s cubic-bezier(.22, 1, .36, 1)
}

.book-page.active {
    display: block
}

@keyframes pgFlip {
    from {
        opacity: 0;
        transform: translateX(20px)
    }

    to {
        opacity: 1;
        transform: translateX(0)
    }
}

.page-cat {
    position: absolute;
    bottom: 16px;
    right: 24px;
    font-size: .9rem;
    opacity: .08
}

.pg-chapter {
    font-family: 'DM Sans', sans-serif;
    font-size: .55rem;
    letter-spacing: .5em;
    text-transform: uppercase;
    color: var(--wine-light);
    margin-bottom: 12px
}

.pg-title {
    font-family: 'Cinzel', serif;
    font-size: 1.5rem;
    font-weight: 400;
    color: var(--text-bright);
    letter-spacing: .04em;
    margin-bottom: 28px;
    line-height: 1.3
}

.pg-body {
    font-size: 1.02rem;
    line-height: 2;
    font-weight: 300;
    color: var(--text);
    margin-bottom: 24px
}

.pg-illus {
    width: 100%;
    height: 120px;
    border: 1px dashed var(--border);
    border-radius: 10px;
    display: flex;
    align-items: center;
    justify-content: center;
    margin: 20px 0;
    font-family: 'DM Sans', sans-serif;
    font-size: .6rem;
    letter-spacing: .15em;
    text-transform: uppercase;
    color: var(--text-dim)
}

.pg-handwritten {
    font-family: 'Homemade Apple', cursive;
    font-size: .9rem;
    color: var(--rose-muted);
    text-align: center;
    line-height: 1.8;
    margin-top: 24px
}

.book-nav {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-top: 24px
}

.book-btn {
    padding: 10px 24px;
    background: transparent;
    border: 1px solid var(--border);
    border-radius: 8px;
    color: var(--text-dim);
    font-family: 'DM Sans', sans-serif;
    font-size: .7rem;
    letter-spacing: .1em;
    cursor: pointer;
    transition: all .3s
}

.book-btn:hover {
    border-color: var(--wine);
    color: var(--rose-muted)
}

.book-btn:disabled {
    opacity: .2;
    cursor: not-allowed
}

.pg-num {
    font-family: 'Cinzel', serif;
    font-size: .75rem;
    color: var(--text-dim);
    letter-spacing: .1em
}

#descifra {
    background: linear-gradient(180deg, var(--bg), #0f0c14 50%, var(--bg))
}

.puzzle-wrap {
    max-width: 600px;
    margin: 0 auto
}

.puzzle-step {
    display: none;
    animation: pzIn .6s cubic-bezier(.22, 1, .36, 1)
}

.puzzle-step.active {
    display: block
}

@keyframes pzIn {
    from {
        opacity: 0;
        transform: scale(.97)
    }

    to {
        opacity: 1;
        transform: scale(1)
    }
}

.puzzle-card {
    background: var(--bg-card);
    border: 1px solid var(--border);
    border-radius: 20px;
    padding: 48px;
    text-align: center
}

.pz-icon {
    font-size: 2rem;
    margin-bottom: 16px;
    display: block
}

.pz-lang {
    font-family: 'DM Sans', sans-serif;
    font-size: .55rem;
    letter-spacing: .4em;
    text-transform: uppercase;
    color: var(--wine-light);
    margin-bottom: 6px
}

.pz-title {
    font-family: 'Cinzel', serif;
    font-size: 1.3rem;
    font-weight: 400;
    color: var(--text-bright);
    letter-spacing: .04em;
    margin-bottom: 14px
}

.pz-prompt {
    font-size: .95rem;
    font-weight: 300;
    color: var(--text-dim);
    line-height: 1.7;
    margin-bottom: 28px
}

.letter-row {
    display: flex;
    justify-content: center;
    gap: 8px;
    flex-wrap: wrap;
    margin: 20px 0
}

.letter-tile {
    width: 42px;
    height: 52px;
    border: 1.5px solid var(--border);
    border-radius: 8px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-family: 'Cinzel', serif;
    font-size: 1.2rem;
    color: var(--text-dim);
    background: rgba(22, 22, 22, .8);
    cursor: pointer;
    transition: all .4s;
    user-select: none
}

.letter-tile:hover {
    border-color: var(--wine);
    color: var(--rose-muted)
}

.letter-tile.open {
    border-color: var(--wine-light);
    color: var(--cream);
    background: rgba(107, 29, 42, .08);
    animation: tRev .4s ease
}

@keyframes tRev {
    0% {
        transform: rotateX(90deg)
    }

    100% {
        transform: rotateX(0)
    }
}

.letter-tile.space {
    border: none;
    background: none;
    width: 16px;
    cursor: default
}

.pz-options {
    display: flex;
    flex-direction: column;
    gap: 10px;
    margin: 20px 0
}

.pz-opt {
    padding: 14px 20px;
    background: transparent;
    border: 1px solid var(--border);
    border-radius: 10px;
    color: var(--text);
    font-family: 'Crimson Pro', serif;
    font-size: .95rem;
    cursor: pointer;
    transition: all .3s;
    text-align: left
}

.pz-opt:hover {
    border-color: var(--wine);
    color: var(--text-bright)
}

.pz-opt.correct {
    border-color: var(--wine-light);
    background: rgba(107, 29, 42, .08);
    color: var(--rose-muted)
}

.pz-opt.wrong {
    opacity: .2
}

.pz-reveal {
    display: none;
    margin-top: 28px;
    padding: 24px;
    border: 1px solid var(--border);
    border-radius: 14px;
    background: rgba(107, 29, 42, .03);
    animation: rvUp .8s ease
}

.pz-reveal.show {
    display: block
}

@keyframes rvUp {
    from {
        opacity: 0;
        transform: translateY(16px)
    }

    to {
        opacity: 1;
        transform: translateY(0)
    }
}

.pz-reveal-text {
    font-family: 'Homemade Apple', cursive;
    font-size: .85rem;
    color: var(--rose-muted);
    line-height: 1.8
}

.pz-next {
    display: inline-block;
    margin-top: 20px;
    padding: 10px 28px;
    background: transparent;
    border: 1px solid var(--wine);
    border-radius: 30px;
    color: var(--rose-muted);
    font-family: 'DM Sans', sans-serif;
    font-size: .7rem;
    letter-spacing: .15em;
    cursor: pointer;
    transition: all .3s
}

.pz-next:hover {
    background: var(--wine);
    color: var(--cream)
}

.pz-dots {
    display: flex;
    justify-content: center;
    gap: 10px;
    margin-top: 28px
}

.pz-dot {
    width: 6px;
    height: 6px;
    border-radius: 50%;
    border: 1.5px solid var(--text-dim);
    transition: all .4s
}

.pz-dot.done {
    background: var(--wine);
    border-color: var(--wine)
}

.pz-dot.now {
    border-color: var(--wine-light);
    box-shadow: 0 0 8px rgba(107, 29, 42, .3)
}

#final {
    min-height: 100vh;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    background: var(--bg);
    position: relative;
    overflow: hidden;
    padding: 80px 24px
}

.final-creatures {
    position: absolute;
    inset: 0;
    pointer-events: none;
    overflow: hidden
}

.final-float {
    position: absolute;
    opacity: 0;
    animation: gFloat 5s ease-in infinite
}

@keyframes gFloat {
    0% {
        opacity: 0;
        transform: translateY(80vh) scale(.6)
    }

    10% {
        opacity: .08
    }

    90% {
        opacity: .04
    }

    100% {
        opacity: 0;
        transform: translateY(-10vh) scale(1)
    }
}

.final-inner {
    max-width: 520px;
    text-align: center;
    z-index: 2
}

.final-inner h2 {
    font-family: 'Cinzel', serif;
    font-size: clamp(1.5rem, 4vw, 2.2rem);
    font-weight: 400;
    color: var(--text-bright);
    letter-spacing: .06em;
    margin-bottom: 40px;
    line-height: 1.4
}

.final-letter {
    text-align: left;
    padding: 36px;
    border: 1px solid var(--border);
    border-radius: 16px;
    background: var(--bg-card);
    position: relative
}

.final-letter::before {
    content: '🐈‍⬛';
    position: absolute;
    top: -14px;
    left: 24px;
    font-size: .9rem;
    opacity: .15
}

.final-letter p {
    font-size: .95rem;
    font-weight: 300;
    line-height: 2;
    color: var(--text);
    margin-bottom: 12px
}

.final-letter strong {
    color: var(--rose-muted);
    font-weight: 500
}

.final-sig {
    font-family: 'Homemade Apple', cursive;
    font-size: .95rem;
    color: var(--wine-light);
    text-align: right;
    margin-top: 24px
}

.final-date {
    font-family: 'DM Sans', sans-serif;
    font-size: .6rem;
    letter-spacing: .4em;
    text-transform: uppercase;
    color: var(--text-dim);
    margin-top: 32px
}

.final-bat-deco {
    margin-top: 20px;
    font-size: 1.2rem;
    opacity: .08;
    letter-spacing: .3em
}

@media(max-width:768px) {
    .side-nav {
        display: none
    }

    .sala-card {
        flex: 0 0 85vw;
        min-height: auto
    }

    .museo-track {
        padding: 0 8vw;
        gap: 20px
    }

    .sala-inner {
        padding: 28px 20px
    }

    .sala-num-bg {
        font-size: 4rem
    }

    .book-page {
        padding: 32px 28px
    }

    .puzzle-card {
        padding: 32px 24px
    }

    .letter-tile {
        width: 36px;
        height: 44px;
        font-size: 1rem
    }

    .sky {
        height: 380px
    }
}

@media(max-width:480px) {
    .flowers-grid {
        grid-template-columns: 1fr 1fr;
        gap: 12px
    }

    .flower-card {
        padding: 22px 12px 18px
    }
}

/* ═══════════════════════════════════════
   GLOBAL: PETAL RAIN
   ═══════════════════════════════════════ */
.petal-rain {
    position: fixed;
    inset: 0;
    pointer-events: none;
    z-index: 98;
    overflow: hidden
}

.falling-petal {
    position: absolute;
    width: var(--pw, 12px);
    height: var(--ph, 10px);
    background: radial-gradient(ellipse, rgba(160, 52, 80, .5), rgba(107, 29, 42, .2) 60%, transparent);
    border-radius: 50% 0 50% 50%;
    opacity: 0;
    animation: petalFall var(--pf-dur, 8s) ease-in-out var(--pf-del, 0s) infinite;
    transform-origin: center
}

@keyframes petalFall {
    0% {
        opacity: 0;
        transform: translateX(0) translateY(-20px) rotate(0deg) scale(.5)
    }

    10% {
        opacity: .5
    }

    50% {
        transform: translateX(var(--px, 30px)) translateY(50vh) rotate(180deg) scale(1)
    }

    90% {
        opacity: .2
    }

    100% {
        opacity: 0;
        transform: translateX(var(--px2, -20px)) translateY(105vh) rotate(360deg) scale(.3)
    }
}

/* ═══════════════════════════════════════
   GLOBAL: CURSOR TRAIL
   ═══════════════════════════════════════ */
.cursor-heart {
    position: fixed;
    pointer-events: none;
    z-index: 10000;
    font-size: .7rem;
    opacity: 0;
    animation: cursorFade .8s ease-out forwards
}

@keyframes cursorFade {
    0% {
        opacity: .8;
        transform: scale(1) translateY(0)
    }

    100% {
        opacity: 0;
        transform: scale(.3) translateY(-30px) rotate(20deg)
    }
}

/* ═══════════════════════════════════════
   GLOBAL: BUTTERFLIES
   ═══════════════════════════════════════ */
.butterfly-layer {
    position: fixed;
    inset: 0;
    pointer-events: none;
    z-index: 97;
    overflow: hidden
}

.butterfly {
    position: absolute;
    font-size: 1.4rem;
    opacity: .12;
    animation: butterflyFly var(--bf-dur, 18s) ease-in-out infinite;
    filter: hue-rotate(var(--bf-hue, 0deg))
}

@keyframes butterflyFly {
    0% {
        transform: translate(0, 0) rotate(0) scaleX(1)
    }

    15% {
        transform: translate(60px, -80px) rotate(10deg) scaleX(-1)
    }

    30% {
        transform: translate(120px, -40px) rotate(-5deg) scaleX(1)
    }

    50% {
        transform: translate(80px, -120px) rotate(8deg) scaleX(-1)
    }

    70% {
        transform: translate(160px, -60px) rotate(-10deg) scaleX(1)
    }

    85% {
        transform: translate(40px, -100px) rotate(5deg) scaleX(-1)
    }

    100% {
        transform: translate(0, 0) rotate(0) scaleX(1)
    }
}

/* ═══════════════════════════════════════
   CONTADOR DE AMOR
   ═══════════════════════════════════════ */
#contador {
    min-height: 60vh;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    background: linear-gradient(180deg, var(--bg), #0e0a10 50%, var(--bg));
    padding: 80px 24px;
    position: relative;
    overflow: hidden
}

.counter-glow {
    position: absolute;
    width: 400px;
    height: 400px;
    border-radius: 50%;
    background: radial-gradient(circle, rgba(107, 29, 42, .08), transparent 70%);
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    animation: counterPulse 4s ease-in-out infinite
}

@keyframes counterPulse {

    0%,
    100% {
        transform: translate(-50%, -50%) scale(1);
        opacity: .5
    }

    50% {
        transform: translate(-50%, -50%) scale(1.15);
        opacity: 1
    }
}

.counter-grid {
    display: flex;
    gap: 32px;
    justify-content: center;
    flex-wrap: wrap;
    margin-top: 32px
}

.counter-box {
    text-align: center;
    min-width: 100px;
    padding: 24px 20px;
    background: var(--bg-card);
    border: 1px solid var(--border);
    border-radius: 16px;
    transition: all .4s
}

.counter-box:hover {
    border-color: var(--border-hover);
    transform: translateY(-4px);
    box-shadow: 0 12px 40px rgba(0, 0, 0, .3)
}

.counter-value {
    font-family: 'Cinzel', serif;
    font-size: clamp(1.8rem, 4vw, 2.8rem);
    font-weight: 600;
    color: var(--wine-light);
    display: block;
    line-height: 1;
    margin-bottom: 8px;
    min-width: 60px
}

.counter-label {
    font-family: 'DM Sans', sans-serif;
    font-size: .6rem;
    letter-spacing: .25em;
    text-transform: uppercase;
    color: var(--text-dim)
}

.counter-msg {
    font-family: 'Homemade Apple', cursive;
    font-size: .85rem;
    color: var(--rose-muted);
    margin-top: 24px;
    opacity: .8
}

/* ═══════════════════════════════════════
   LÍNEA DEL TIEMPO
   ═══════════════════════════════════════ */
#timeline {
    padding: 120px 24px;
    background: linear-gradient(180deg, var(--bg), #0a0c10 50%, var(--bg))
}

.timeline-wrap {
    max-width: 700px;
    margin: 0 auto;
    position: relative;
    padding-left: 40px
}

.timeline-line {
    position: absolute;
    left: 16px;
    top: 0;
    bottom: 0;
    width: 2px;
    background: linear-gradient(180deg, transparent, var(--wine), var(--wine-light), var(--wine), transparent)
}

.timeline-item {
    position: relative;
    margin-bottom: 48px;
    opacity: 0;
    transform: translateX(30px);
    transition: all 1s cubic-bezier(.22, 1, .36, 1)
}

.timeline-item.visible {
    opacity: 1;
    transform: translateX(0)
}

.timeline-dot {
    position: absolute;
    left: -32px;
    top: 8px;
    width: 12px;
    height: 12px;
    border-radius: 50%;
    border: 2px solid var(--wine);
    background: var(--bg);
    transition: all .4s;
    z-index: 2
}

.timeline-item.visible .timeline-dot {
    background: var(--wine);
    box-shadow: 0 0 12px rgba(107, 29, 42, .4)
}

.timeline-date {
    font-family: 'DM Sans', sans-serif;
    font-size: .6rem;
    letter-spacing: .3em;
    text-transform: uppercase;
    color: var(--wine-light);
    margin-bottom: 8px
}

.timeline-title {
    font-family: 'Cinzel', serif;
    font-size: 1.2rem;
    font-weight: 400;
    color: var(--text-bright);
    letter-spacing: .04em;
    margin-bottom: 8px
}

.timeline-desc {
    font-size: .92rem;
    font-weight: 300;
    line-height: 1.8;
    color: var(--text)
}

.timeline-emoji {
    position: absolute;
    left: -48px;
    top: 4px;
    font-size: 1.2rem;
    opacity: .2;
    transition: opacity .4s
}

.timeline-item.visible .timeline-emoji {
    opacity: .5
}

/* ═══════════════════════════════════════
   SOBRES SECRETOS
   ═══════════════════════════════════════ */
#sobres {
    padding: 120px 24px;
    background-image: url("/src/cartas.png");
    background-size: cover;

    background-repeat: no-repeat;
}

.header__movimiento {
    position: relative;
    width: 40px;
}

.sobres-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 28px;
    max-width: 700px;
    margin: 0 auto
}

.sobre-card {
    position: relative;
    height: 200px;
    perspective: 800px;
    cursor: pointer
}

.sobre-inner {
    position: relative;
    width: 100%;
    height: 100%;
    transition: transform .8s cubic-bezier(.22, 1, .36, 1);
    transform-style: preserve-3d
}

.sobre-card.opened .sobre-inner {
    transform: rotateY(180deg)
}

.sobre-front,
.sobre-back {
    position: absolute;
    inset: 0;
    backface-visibility: hidden;
    border-radius: 16px;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-direction: column;
    padding: 20px
}

.sobre-front {
    background: var(--bg-card);
    border: 1px solid var(--border);
    overflow: hidden
}

.sobre-front::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: 40%;
    background: linear-gradient(180deg, rgba(107, 29, 42, .06), transparent);
    clip-path: polygon(0 0, 50% 60%, 100% 0)
}

.sobre-seal {
    width: 36px;
    height: 36px;
    border-radius: 50%;
    background: radial-gradient(circle at 40% 40%, var(--wine-glow), var(--wine), var(--wine-deep));
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: .9rem;
    box-shadow: 0 2px 12px rgba(107, 29, 42, .3);
    z-index: 2;
    transition: all .6s
}

.sobre-card:hover .sobre-seal {
    transform: scale(1.15);
    box-shadow: 0 4px 20px rgba(107, 29, 42, .5)
}

.sobre-num {
    font-family: 'DM Sans', sans-serif;
    font-size: .5rem;
    letter-spacing: .3em;
    text-transform: uppercase;
    color: var(--text-dim);
    margin-top: 12px;
    z-index: 2
}

.sobre-back {
    background: var(--bg-card);
    border: 1px solid var(--border-hover);
    transform: rotateY(180deg);
    text-align: center
}

.sobre-back-text {
    font-family: 'Homemade Apple', cursive;
    font-size: .75rem;
    color: var(--rose-muted);
    line-height: 1.7
}

.sobre-back-label {
    font-family: 'DM Sans', sans-serif;
    font-size: .45rem;
    letter-spacing: .3em;
    text-transform: uppercase;
    color: var(--text-dim);
    margin-top: 12px
}

@media(max-width:600px) {
    .sobres-grid {
        grid-template-columns: repeat(2, 1fr);
        gap: 16px
    }

    .sobre-card {
        height: 170px
    }
}

/* ═══════════════════════════════════════
   ORÁCULO DEL AMOR
   ═══════════════════════════════════════ */
#oraculo {
    padding: 120px 24px;
    background-image: url("/src/oraculo.png");
    background-position: bottom;
    background-repeat: no-repeat;
    background-size: cover;
    text-align: center
}

.oracle-wrap {
    position: relative;
    top: 40px;
    max-width: 500px;
    margin: 0 auto
}

.oracle-ball {
    position: relative;
    width: 220px;
    height: 220px;
    margin: 0 auto;
    border-radius: 50%;
    background: radial-gradient(circle at 35% 30%, rgba(80, 50, 100, .4), rgba(20, 10, 30, .9) 60%, #0a0810);
    border: 1px solid rgba(107, 29, 42, .15);
    box-shadow: 0 0 60px rgba(107, 29, 42, .1), 0 20px 60px rgba(0, 0, 0, .5), inset 0 -20px 40px rgba(107, 29, 42, .05);
    cursor: pointer;
    position: relative;
    overflow: hidden;
    transition: all .6s
}

.oracle-ball:hover {
    box-shadow: 0 0 80px rgba(107, 29, 42, .2), 0 20px 60px rgba(0, 0, 0, .5), inset 0 -20px 40px rgba(107, 29, 42, .1);
    transform: scale(1.05)
}

.oracle-inner-glow {
    position: absolute;
    inset: 20%;
    border-radius: 50%;
    background: radial-gradient(circle, rgba(107, 29, 42, .15), transparent 70%);
    animation: oracleGlow 3s ease-in-out infinite
}

@keyframes oracleGlow {

    0%,
    100% {
        opacity: .3;
        transform: scale(.8)
    }

    50% {
        opacity: .8;
        transform: scale(1.1)
    }
}

.oracle-smoke {
    position: absolute;
    inset: 0;
    border-radius: 50%;
    background: radial-gradient(ellipse at var(--sx, 50%) var(--sy, 50%), rgba(160, 52, 80, .08), transparent 50%);
    animation: smokeShift 6s ease-in-out infinite
}

@keyframes smokeShift {
    0% {
        --sx: 30%;
        --sy: 40%
    }

    33% {
        --sx: 60%;
        --sy: 30%
    }

    66% {
        --sx: 40%;
        --sy: 60%
    }

    100% {
        --sx: 30%;
        --sy: 40%
    }
}

.oracle-text {
    position: absolute;
    inset: 15%;
    display: flex;
    align-items: center;
    justify-content: center;
    text-align: center;
    font-family: 'Homemade Apple', cursive;
    font-size: .75rem;
    color: var(--rose-muted);
    line-height: 1.6;
    opacity: 0;
    transition: all 1s cubic-bezier(.22, 1, .36, 1)
}

.oracle-text.show {
    opacity: 1
}

.oracle-prompt {
    font-family: 'DM Sans', sans-serif;
    font-size: .55rem;
    letter-spacing: .3em;
    text-transform: uppercase;
    color: var(--text-dim);
    margin-top: 24px;
    opacity: .5
}

.oracle-base {
    width: 280px;
    height: 30px;
    margin: 0 auto;
    background: linear-gradient(180deg, rgba(40, 20, 30, .6), rgba(20, 10, 15, .8));
    border-radius: 0 0 20px 20px;
    margin-top: -8px
}

/* ═══════════════════════════════════════
   RITUAL DE VELAS
   ═══════════════════════════════════════ */
#velas {
    padding: 120px 24px;
    background: linear-gradient(180deg, var(--bg), #080808 50%, var(--bg));
    position: relative
}

.velas-wrap {
    max-width: 800px;
    margin: 0 auto
}

.velas-row {
    display: flex;
    justify-content: center;
    gap: 40px;
    flex-wrap: wrap
}

.vela-item {
    text-align: center;
    cursor: pointer;
    transition: all .5s
}

.vela-item:hover {
    transform: translateY(-4px)
}

.vela-body {
    width: 28px;
    height: 80px;
    margin: 0 auto;
    background: linear-gradient(180deg, #e8ddd3, #d4c8bc, #c4b8ac);
    border-radius: 4px 4px 2px 2px;
    position: relative;
    box-shadow: 0 4px 16px rgba(0, 0, 0, .3)
}

.vela-wick {
    width: 2px;
    height: 12px;
    background: linear-gradient(180deg, #2a2020, #4a3030);
    margin: 0 auto;
    border-radius: 1px;
    margin-bottom: -2px
}

.vela-flame {
    width: 14px;
    height: 24px;
    margin: 0 auto;
    margin-bottom: -4px;
    border-radius: 50% 50% 50% 50%/60% 60% 40% 40%;
    background: radial-gradient(ellipse at 50% 80%, #ffe080, #ff8844 40%, #ff4400 70%, transparent);
    opacity: 0;
    transition: opacity .6s;
    animation: flameFlicker 0.3s ease-in-out infinite alternate;
    filter: blur(.5px)
}

.vela-item.lit .vela-flame {
    opacity: 1
}

@keyframes flameFlicker {
    0% {
        transform: scaleX(1) scaleY(1) rotate(-2deg)
    }

    100% {
        transform: scaleX(.9) scaleY(1.05) rotate(2deg)
    }
}

.vela-glow {
    position: absolute;
    top: -40px;
    left: -30px;
    width: 88px;
    height: 88px;
    border-radius: 50%;
    background: radial-gradient(circle, rgba(255, 200, 100, .12), transparent 60%);
    opacity: 0;
    transition: opacity .6s;
    pointer-events: none
}

.vela-item.lit .vela-glow {
    opacity: 1
}

.vela-promise {
    font-family: 'Homemade Apple', cursive;
    font-size: .7rem;
    color: var(--rose-muted);
    margin-top: 16px;
    opacity: 0;
    transform: translateY(8px);
    transition: all .6s .3s;
    max-width: 120px;
    line-height: 1.5
}

.vela-item.lit .vela-promise {
    opacity: 1;
    transform: translateY(0)
}

.vela-counter {
    text-align: center;
    margin-top: 32px;
    font-family: 'DM Sans', sans-serif;
    font-size: .6rem;
    letter-spacing: .25em;
    text-transform: uppercase;
    color: var(--text-dim)
}

.vela-complete {
    display: none;
    text-align: center;
    margin-top: 16px;
    font-family: 'Homemade Apple', cursive;
    font-size: .85rem;
    color: var(--rose-muted);
    animation: rvUp .8s ease
}

.vela-complete.show {
    display: block
}

@media(max-width:600px) {
    .velas-row {
        gap: 24px
    }

    .vela-body {
        height: 60px;
        width: 22px
    }
}

/* ═══════════════════════════════════════
   REPRODUCTOR MUSICAL
   ═══════════════════════════════════════ */
.music-player {
    position: fixed;
    bottom: 24px;
    right: 24px;
    z-index: 500;
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 12px 20px;
    background: rgba(22, 22, 22, .95);
    border: 1px solid var(--border);
    border-radius: 40px;
    backdrop-filter: blur(16px);
    -webkit-backdrop-filter: blur(16px);
    cursor: pointer;
    transition: all .4s
}

.music-player:hover {
    border-color: var(--border-hover);
    box-shadow: 0 4px 24px rgba(0, 0, 0, .4)
}

.music-btn {
    width: 32px;
    height: 32px;
    border-radius: 50%;
    border: 1px solid var(--wine);
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--rose-muted);
    font-size: .8rem;
    background: transparent;
    transition: all .3s;
    cursor: pointer;
    flex-shrink: 0
}

.music-btn:hover {
    background: var(--wine);
    color: var(--cream)
}

.music-bars {
    display: flex;
    align-items: flex-end;
    gap: 2px;
    height: 20px
}

.music-bar {
    width: 3px;
    background: var(--wine);
    border-radius: 2px;
    transition: height .2s;
    animation: musicPulse var(--mb-dur, .6s) ease-in-out infinite alternate;
    animation-play-state: paused
}

.music-player.playing .music-bar {
    animation-play-state: running
}

@keyframes musicPulse {
    0% {
        height: 4px;
        opacity: .4
    }

    100% {
        height: var(--mb-h, 16px);
        opacity: 1
    }
}

.music-title {
    font-family: 'DM Sans', sans-serif;
    font-size: .55rem;
    letter-spacing: .15em;
    text-transform: uppercase;
    color: var(--text-dim);
    max-width: 120px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap
}

/* ═══════════════════════════════════════
   TYPEWRITER EFFECT
   ═══════════════════════════════════════ */
.typewriter-text {
    overflow: hidden;
    border-right: 2px solid var(--wine-light);
    white-space: normal;
    animation: blink .8s step-end infinite
}

@keyframes blink {

    0%,
    100% {
        border-color: var(--wine-light)
    }

    50% {
        border-color: transparent
    }
}

.type-cursor {
    display: inline-block;
    width: 2px;
    height: 1em;
    background: var(--wine-light);
    animation: blink .8s step-end infinite;
    vertical-align: text-bottom;
    margin-left: 2px
}

/* ═══════════════════════════════════════
   HEART FIREWORKS
   ═══════════════════════════════════════ */
.fireworks-layer {
    position: fixed;
    inset: 0;
    pointer-events: none;
    z-index: 9998;
    overflow: hidden
}

.firework-heart {
    position: absolute;
    font-size: 1rem;
    opacity: 0;
    pointer-events: none;
    animation: fwBurst 1.5s ease-out forwards
}

@keyframes fwBurst {
    0% {
        opacity: 0;
        transform: translateY(100vh) scale(.3)
    }

    20% {
        opacity: 1
    }

    60% {
        opacity: .8;
        transform: translateY(var(--fw-y, 30vh)) scale(1.2)
    }

    100% {
        opacity: 0;
        transform: translateY(var(--fw-y2, 20vh)) scale(.5) translateX(var(--fw-x, 0px))
    }
}

.fw-particle {
    position: absolute;
    width: 4px;
    height: 4px;
    border-radius: 50%;
    background: var(--wine-glow);
    animation: fwSpread 1s ease-out forwards
}

@keyframes fwSpread {
    0% {
        opacity: 1;
        transform: translate(0, 0) scale(1)
    }

    100% {
        opacity: 0;
        transform: translate(var(--fwp-x, 30px), var(--fwp-y, -40px)) scale(0)
    }
}

/* ╔══════════════════════════════════════════════════════════════
   ☾ SECTION IDENTITY SYSTEM — Each section is its own world
   ══════════════════════════════════════════════════════════════╝ */

/* ── HERO: El Umbral Cósmico ─────────────────────────────────── */
.hero {
    background: #020204;
    min-height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
    position: relative;
    overflow: hidden;
}

.hero::before {
    content: '';
    position: absolute;
    inset: 0;
    background:
        radial-gradient(ellipse 60% 50% at 50% 35%, rgba(80, 20, 40, .45), transparent 65%),
        radial-gradient(ellipse 40% 30% at 25% 60%, rgba(40, 10, 60, .2), transparent 50%),
        radial-gradient(ellipse 35% 25% at 75% 70%, rgba(60, 15, 30, .15), transparent 50%);
    z-index: 1;
    pointer-events: none;
    animation: heroNebulaBreath 12s ease-in-out infinite;
}

@keyframes heroNebulaBreath {

    0%,
    100% {
        opacity: .8;
        transform: scale(1)
    }

    50% {
        opacity: 1;
        transform: scale(1.08)
    }
}

/* diagonal light beams */
.hero::after {
    content: '';
    position: absolute;
    inset: 0;
    z-index: 1;
    pointer-events: none;
    background:
        linear-gradient(135deg, transparent 30%, rgba(160, 52, 80, .02) 45%, transparent 60%),
        linear-gradient(225deg, transparent 40%, rgba(100, 30, 60, .015) 55%, transparent 70%);
    animation: heroBeamsShift 20s ease-in-out infinite alternate;
}

@keyframes heroBeamsShift {
    0% {
        opacity: .5;
        transform: translateX(-5%)
    }

    100% {
        opacity: 1;
        transform: translateX(5%)
    }
}

.hero-stars-layer {
    position: absolute;
    inset: 0;
    z-index: 0;
    overflow: hidden
}

.hero-star-pt {
    position: absolute;
    border-radius: 50%;
    background: #fff;
    animation: starwink var(--sw-d, 3s) ease-in-out var(--sw-dl, 0s) infinite alternate
}

@keyframes starwink {
    0% {
        opacity: .05
    }

    100% {
        opacity: var(--sw-op, .7)
    }
}

.hero-content {
    position: relative;
    z-index: 2;
    text-align: center;
    padding: 0 24px
}

.hero h1 {
    font-family: 'Cinzel', serif;
    font-size: clamp(2.2rem, 6vw, 5rem);
    font-weight: 600;
    color: #f5e8d8;
    letter-spacing: .06em;
    line-height: 1.15;
    text-shadow: 0 0 80px rgba(160, 52, 80, .4), 0 0 30px rgba(160, 52, 80, .15), 0 2px 4px rgba(0, 0, 0, .8);
    animation: heroTitlePulse 6s ease-in-out infinite;
}

@keyframes heroTitlePulse {

    0%,
    100% {
        text-shadow: 0 0 80px rgba(160, 52, 80, .3), 0 0 30px rgba(160, 52, 80, .1), 0 2px 4px rgba(0, 0, 0, .8)
    }

    50% {
        text-shadow: 0 0 100px rgba(160, 52, 80, .5), 0 0 50px rgba(160, 52, 80, .2), 0 2px 4px rgba(0, 0, 0, .8)
    }
}

.hero h1 em {
    display: block;
    font-style: normal;
    font-family: 'Homemade Apple', cursive;
    font-size: .45em;
    color: rgba(200, 120, 130, .8);
    letter-spacing: .02em;
    margin-top: 20px;
}


.hero-divider {
    width: 80px;
    height: 1px;
    background: linear-gradient(90deg, transparent, rgba(160, 52, 80, .5), transparent);
    margin: 28px auto 0;
    position: relative;
}

.hero-divider::before {
    content: '🦇';
    position: absolute;
    top: -10px;
    left: 50%;
    transform: translateX(-50%);
    font-size: .9rem;
    opacity: .2;
    animation: batGentleFloat 8s ease-in-out infinite;
}

@keyframes batGentleFloat {

    0%,
    100% {
        transform: translateX(-50%) translateY(0)
    }

    50% {
        transform: translateX(-50%) translateY(-4px)
    }
}

.scroll-cue {
    z-index: 3
}

/* ── SECTION DIVIDERS — Transitions between worlds ───────────── */
.section {
    position: relative
}

.section::before {
    content: '';
    position: absolute;
    top: -80px;
    left: 0;
    right: 0;
    height: 160px;
    pointer-events: none;
    z-index: 5;
}

/* ── CONTADOR: El Latido Eterno ──────────────────────────────── */
#contador {
    background: #050000;
    position: relative;
    overflow: hidden;
    padding: 100px 24px;
}

/* CRT scanlines — más agresivas */
#contador::before {
    content: '';
    position: absolute;
    inset: 0;
    pointer-events: none;
    z-index: 1;
    background: repeating-linear-gradient(180deg,
            transparent 0px, transparent 2px,
            rgba(0, 0, 0, .25) 2px, rgba(0, 0, 0, .25) 3px);
    animation: crtFlicker 0.1s linear infinite;
}

@keyframes crtFlicker {

    0%,
    100% {
        opacity: .7
    }

    50% {
        opacity: .85
    }
}

/* viñeta + CRT bend */
#contador::after {
    content: '';
    position: absolute;
    inset: 0;
    pointer-events: none;
    z-index: 1;
    background:
        radial-gradient(ellipse 65% 55% at 50% 50%, transparent 35%, rgba(0, 0, 0, .85)),
        radial-gradient(ellipse 90% 80% at 50% 50%, rgba(80, 0, 0, .03), transparent 60%);
}

#contador .section-header {
    position: relative;
    z-index: 2
}

#contador .section-label {
    color: rgba(180, 40, 40, .5);
    letter-spacing: .7em;
    font-size: .5rem;
}

#contador .section-heading {
    font-size: clamp(1.3rem, 2.8vw, 1.8rem);
    color: rgba(220, 150, 150, .8);
    text-shadow: 0 0 20px rgba(200, 30, 30, .15);
}

.counter-grid {
    position: relative;
    z-index: 2
}

.counter-box {
    background: rgba(20, 0, 0, .7);
    border: 1px solid rgba(180, 20, 20, .15);
    border-radius: 6px;
    padding: 36px 24px;
    position: relative;
    overflow: hidden;
}

/* interior glow pulse */
.counter-box::before {
    content: '';
    position: absolute;
    inset: 0;
    background: radial-gradient(ellipse at 50% 80%, rgba(200, 20, 20, .06), transparent 60%);
    animation: counterBoxPulse 2s ease-in-out infinite;
}

@keyframes counterBoxPulse {

    0%,
    100% {
        opacity: .4
    }

    50% {
        opacity: 1
    }
}

.counter-value {
    font-family: 'Cinzel', serif;
    font-size: clamp(3rem, 8vw, 5.5rem) !important;
    font-weight: 700;
    color: #cc2222 !important;
    text-shadow: 0 0 40px rgba(200, 20, 20, .6), 0 0 80px rgba(200, 20, 20, .25), 0 0 120px rgba(200, 20, 20, .1);
    display: block;
    line-height: 1;
    min-width: auto !important;
    animation: heartbeatGlow 1.2s ease-in-out infinite;
    font-variant-numeric: tabular-nums;
}

@keyframes heartbeatGlow {

    0%,
    100% {
        transform: scale(1);
        text-shadow: 0 0 40px rgba(200, 20, 20, .5), 0 0 80px rgba(200, 20, 20, .2)
    }

    14% {
        transform: scale(1.04);
        text-shadow: 0 0 60px rgba(200, 20, 20, .7), 0 0 100px rgba(200, 20, 20, .35)
    }

    28% {
        transform: scale(1)
    }

    42% {
        transform: scale(1.025);
        text-shadow: 0 0 50px rgba(200, 20, 20, .6), 0 0 90px rgba(200, 20, 20, .3)
    }

    70% {
        transform: scale(1)
    }
}

.counter-label {
    font-family: 'DM Sans', sans-serif;
    font-size: .6rem;
    letter-spacing: .5em;
    text-transform: uppercase;
    color: rgb(177, 44, 44) !important;
    font-weight: 600;
    margin-top: 12px;
    display: block;
}

.counter-msg {
    position: relative;
    z-index: 2;
    font-family: 'Homemade Apple', cursive;
    font-size: .85rem;
    color: rgba(200, 100, 100, .6) !important;
    margin-top: 36px;
}

/* ── MUSEO: La Galería a Medianoche ──────────────────────────── */
#museo {
    background:
        radial-gradient(ellipse 90% 40% at 50% 0%, rgba(70, 50, 25, .35), transparent 55%),
        linear-gradient(180deg, #0a0806, #0e0c08 50%, #0a0806);
    position: relative;
}

/* brick texture */
#museo::before {
    content: '';
    position: absolute;
    inset: 0;
    pointer-events: none;
    background-image:
        repeating-linear-gradient(90deg, rgba(60, 40, 20, .05) 0px, rgba(60, 40, 20, .05) 1px, transparent 1px, transparent 60px),
        repeating-linear-gradient(180deg, rgba(60, 40, 20, .05) 0px, rgba(60, 40, 20, .05) 1px, transparent 1px, transparent 34px);
}

/* warm ceiling glow */
#museo::after {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: 300px;
    pointer-events: none;
    background: radial-gradient(ellipse 60% 100% at 50% 0%, rgba(180, 140, 60, .04), transparent 70%);
}

#museo .section-label {
    color: rgba(200, 160, 80, .45);
    letter-spacing: .6em;
}

#museo .section-heading {
    color: #ead8b0;
    text-shadow: 0 0 40px rgba(180, 140, 60, .08);
}

#museo .section-epi {
    color: rgba(180, 150, 100, .4)
}

.sala-card {
    border: 1px solid rgba(180, 150, 80, .1) !important;
    background: rgba(16, 12, 6, .97) !important;
    box-shadow:
        0 0 0 4px rgba(16, 12, 6, .9),
        0 0 0 5px rgba(180, 150, 80, .06),
        0 0 0 9px rgba(16, 12, 6, .7),
        0 0 0 10px rgba(180, 150, 80, .03),
        0 24px 70px rgba(0, 0, 0, .75) !important;
    position: relative;
}

/* museum spotlight cone from above */
.sala-card::before {
    content: '';
    position: absolute;
    top: -60px;
    left: 50%;
    transform: translateX(-50%);
    width: 40%;
    height: 60px;
    background: linear-gradient(180deg, rgba(220, 180, 80, .05), transparent);
    clip-path: polygon(40% 0%, 60% 0%, 100% 100%, 0% 100%);
    pointer-events: none;
    opacity: 0;
    transition: opacity .6s;
}

.sala-card:hover::before {
    opacity: 1
}

/* warm glow from top on hover */
.sala-card::after {
    content: '';
    position: absolute;
    inset: 0;
    border-radius: 24px;
    pointer-events: none;
    background: radial-gradient(ellipse 70% 30% at 50% -5%, rgba(220, 180, 80, .07), transparent 55%);
    opacity: 0;
    transition: opacity .5s;
}

.sala-card:hover::after {
    opacity: 1
}

.sala-inner {
    background: transparent !important
}

.sala-title,
.sala-title2 {
    color: #e8d8b0 !important
}

.sala-card:hover {
    box-shadow:
        0 0 0 4px rgba(16, 12, 6, .9),
        0 0 0 5px rgba(200, 160, 80, .12),
        0 0 0 9px rgba(16, 12, 6, .7),
        0 0 0 10px rgba(200, 160, 80, .06),
        0 -10px 50px rgba(220, 180, 80, .03) inset,
        0 30px 80px rgba(0, 0, 0, .85) !important;
    border-color: rgba(200, 160, 80, .22) !important;
}

.sala-quote2 {
    color: rgba(200, 170, 100, .7) !important
}

/* ── CONSTELACIÓN: El Cielo Infinito ─────────────────────────── */
#constelacion {
    position: relative;
    overflow: hidden;
}

/* aurora borealis effect */
#constelacion::after {
    content: '';
    position: absolute;
    top: 0;
    left: -20%;
    right: -20%;
    height: 40%;
    pointer-events: none;
    background:
        radial-gradient(ellipse 80% 100% at 30% 100%, rgba(50, 100, 150, .04), transparent 50%),
        radial-gradient(ellipse 60% 80% at 60% 100%, rgba(80, 40, 120, .03), transparent 50%),
        radial-gradient(ellipse 40% 60% at 45% 90%, rgba(40, 80, 100, .025), transparent);
    animation: auroraDrift 25s ease-in-out infinite alternate;
}

@keyframes auroraDrift {
    0% {
        transform: translateX(-5%) skewX(-2deg);
        opacity: .6
    }

    100% {
        transform: translateX(5%) skewX(2deg);
        opacity: 1
    }
}

#constelacion .section-label {
    color: rgb(255, 255, 255);
    letter-spacing: .6em;
}

#constelacion .section-heading {
    color: rgb(255, 255, 255);
    text-shadow: 0 0 40px rgba(120, 80, 200, .15);

}

#constelacion .section-epi {
    color: rgb(255, 255, 255);
    background-color: rgba(51, 51, 107, 0.671);
    border-radius: 20px;
}

.sky-counter,
#skyAllFound {
    font-family: 'DM Sans', sans-serif;
    letter-spacing: .25em;
    color: rgba(167, 167, 248, 0.45);
    border: none !important;
    background: none !important;
}

#skyAllFound {
    font-family: 'Cinzel', serif;
    color: rgba(200, 180, 255, .85) !important;
    text-shadow: 0 0 25px rgba(150, 100, 255, .35), 0 0 60px rgba(120, 60, 200, .15);
    letter-spacing: .06em;
    font-size: clamp(1.2rem, 3vw, 2rem);
}

.world-reveal {
    background: linear-gradient(180deg, rgba(2, 2, 15, .97), rgba(5, 5, 25, .92)) !important;
    border: 1px solid rgba(100, 80, 180, .08) !important;
}

/* ── JARDÍN: Raíces de Sangre ────────────────────────────────── */
#jardin {
    background:
        radial-gradient(ellipse 80% 30% at 50% 100%, rgba(15, 35, 8, .8), transparent 50%),
        radial-gradient(ellipse 60% 40% at 20% 60%, rgba(10, 25, 5, .4), transparent 50%),
        linear-gradient(180deg, #050a03, #081008 40%, #060e04 70%, #050a03) !important;
    position: relative;
    overflow: hidden;
}

/* ground fog */
#jardin::after {
    content: '';
    position: absolute;
    bottom: 0;
    left: 0;
    right: 0;
    height: 180px;
    background:
        radial-gradient(ellipse 100% 60% at 50% 100%, rgba(20, 40, 10, .5), transparent 60%),
        linear-gradient(0deg, rgba(8, 16, 4, .9), transparent);
    pointer-events: none;
    animation: fogDrift 15s ease-in-out infinite alternate;
}

@keyframes fogDrift {
    0% {
        transform: translateX(-3%);
        opacity: .7
    }

    100% {
        transform: translateX(3%);
        opacity: 1
    }
}

/* root veins — more varied */
#jardin::before {
    content: '';
    position: absolute;
    inset: 0;
    pointer-events: none;
    background-image:
        radial-gradient(ellipse 2px 80px at 12% 100%, rgba(50, 70, 25, .2), transparent),
        radial-gradient(ellipse 3px 100px at 28% 100%, rgba(40, 60, 20, .15), transparent),
        radial-gradient(ellipse 2px 60px at 42% 100%, rgba(50, 70, 25, .18), transparent),
        radial-gradient(ellipse 2px 90px at 58% 100%, rgba(40, 65, 20, .12), transparent),
        radial-gradient(ellipse 3px 70px at 72% 100%, rgba(50, 70, 25, .16), transparent),
        radial-gradient(ellipse 2px 55px at 88% 100%, rgba(40, 60, 20, .14), transparent);
}

#jardin .section-label {
    color: rgba(90, 150, 50, .45);
    letter-spacing: .5em;
}

#jardin .section-heading {
    color: #c8e0a8;
    text-shadow: 0 0 30px rgba(80, 140, 40, .1);
}

#jardin .section-epi {
    color: rgba(120, 170, 70, .4)
}

.flower-card {
    border: 1px solid rgba(60, 100, 30, .1) !important;
    background: rgba(6, 12, 3, .8) !important;
    box-shadow: 0 6px 24px rgba(0, 0, 0, .6) !important;
    transition: all .5s cubic-bezier(.22, 1, .36, 1);
}

.flower-card:hover {
    border-color: rgba(80, 140, 40, .2) !important;
    box-shadow: 0 6px 24px rgba(0, 0, 0, .6), 0 0 30px rgba(60, 120, 30, .06) !important;
}

.flower-card.bloomed {
    border-color: rgba(107, 29, 42, .25) !important;
    background: rgba(10, 18, 5, .85) !important;
    box-shadow: 0 6px 24px rgba(0, 0, 0, .5), 0 0 20px rgba(107, 29, 42, .06) !important;
}

/* ── LIBRO: El Manuscrito Antiguo ─────────────────────────────── */
#libro {
    background:
        radial-gradient(ellipse 60% 40% at 50% 30%, rgba(30, 24, 14, .9), transparent 60%),
        radial-gradient(ellipse 80% 60% at 50% 80%, rgba(20, 16, 8, .8), transparent 55%),
        linear-gradient(180deg, #12100a, #1a1510 30%, #16130d 70%, #100e08);
    position: relative;
    overflow: hidden;
}

/* aged paper texture — ink stains */
#libro::before {
    content: '';
    position: absolute;
    inset: 0;
    pointer-events: none;
    background-image:
        radial-gradient(ellipse 60px 40px at 12% 25%, rgba(180, 150, 90, .035), transparent),
        radial-gradient(ellipse 30px 50px at 85% 70%, rgba(120, 80, 40, .025), transparent),
        radial-gradient(ellipse 40px 60px at 60% 15%, rgba(180, 150, 90, .02), transparent),
        radial-gradient(ellipse 25px 35px at 30% 80%, rgba(100, 60, 30, .03), transparent),
        radial-gradient(ellipse 50px 20px at 70% 45%, rgba(160, 130, 70, .015), transparent);
}

/* dust motes floating */
#libro::after {
    content: '';
    position: absolute;
    inset: 0;
    pointer-events: none;
    background-image:
        radial-gradient(1px 1px at 15% 20%, rgba(220, 190, 120, .15), transparent),
        radial-gradient(1px 1px at 45% 60%, rgba(220, 190, 120, .1), transparent),
        radial-gradient(1.5px 1.5px at 75% 30%, rgba(220, 190, 120, .12), transparent),
        radial-gradient(1px 1px at 85% 75%, rgba(220, 190, 120, .08), transparent),
        radial-gradient(1px 1px at 25% 90%, rgba(220, 190, 120, .11), transparent);
    animation: dustFloat 30s ease-in-out infinite alternate;
}

@keyframes dustFloat {
    0% {
        transform: translateY(0) translateX(0)
    }

    50% {
        transform: translateY(-15px) translateX(8px)
    }

    100% {
        transform: translateY(-5px) translateX(-5px)
    }
}

#libro .section-label {
    color: rgba(180, 150, 80, .45);
    letter-spacing: .6em;
    font-size: .45rem;
}

#libro .section-heading {
    color: #e8d8b0;
    font-size: clamp(1.8rem, 4vw, 2.8rem);
    font-family: 'Cinzel', serif;
    text-shadow: 0 0 30px rgba(180, 140, 60, .06);
}

#libro .section-epi {
    color: rgba(180, 150, 90, .4);
    font-style: italic;
}

#book {
    box-shadow:
        -12px 0 20px rgba(0, 0, 0, .5),
        12px 0 20px rgba(0, 0, 0, .5),
        0 0 0 1px rgba(180, 150, 80, .04),
        0 25px 70px rgba(0, 0, 0, .7) !important;
    background: linear-gradient(135deg, #1a1510, #1f1a12) !important;
    border-color: rgba(180, 150, 80, .1) !important;
}

/* spine shadow — encuadernación */
#book::after {
    content: '';
    position: absolute;
    left: 50%;
    top: 0;
    bottom: 0;
    width: 8px;
    transform: translateX(-50%);
    background: linear-gradient(90deg, rgba(0, 0, 0, .3), transparent, rgba(0, 0, 0, .3));
    pointer-events: none;
    z-index: 1;
}

.book-page {
    background: linear-gradient(135deg, #1f1a12, #1a1510) !important;
    border-color: rgba(180, 150, 80, .06) !important;
    border-radius: 2px 6px 6px 2px !important;
}

.pg-body {
    color: #c8b888 !important;
    font-family: 'Crimson Pro', serif !important;
    font-size: 1.05rem !important;
    line-height: 1.9 !important;
}

.pg-handwritten {
    color: rgba(180, 140, 80, .8) !important;
}

.book-btn {
    border-color: rgba(180, 150, 80, .15) !important;
    color: rgba(180, 150, 80, .5) !important;
    transition: all .4s cubic-bezier(.22, 1, .36, 1);
}

.book-btn:hover {
    background: rgba(180, 150, 80, .06) !important;
    color: #e8d8a8 !important;
    border-color: rgba(180, 150, 80, .3) !important;
}

/* ── TIMELINE: Fotogramas de una Historia ─────────────────────── */
#timeline {
    background:
        radial-gradient(ellipse 70% 40% at 50% 20%, rgba(10, 14, 22, .9), transparent 60%),
        linear-gradient(180deg, #080a10, #060e1a 30%, #0a0e18 60%, #04080e) !important;
    position: relative;
    overflow: hidden;
}

/* film sprocket holes — more defined */
#timeline::before {
    content: '';
    position: absolute;
    left: 0;
    top: 0;
    bottom: 0;
    width: 32px;
    pointer-events: none;
    z-index: 1;
    background:
        repeating-linear-gradient(180deg,
            transparent 0px, transparent 18px,
            rgba(255, 255, 255, .08) 18px, rgba(255, 255, 255, .08) 36px),
        linear-gradient(90deg, rgba(0, 0, 0, .7), transparent);
}

#timeline::after {
    content: '';
    position: absolute;
    right: 0;
    top: 0;
    bottom: 0;
    width: 32px;
    pointer-events: none;
    z-index: 1;
    background:
        repeating-linear-gradient(180deg,
            transparent 0px, transparent 18px,
            rgba(255, 255, 255, .08) 18px, rgba(255, 255, 255, .08) 36px),
        linear-gradient(270deg, rgba(0, 0, 0, .7), transparent);
}

#timeline .section-label {
    color: rgba(160, 180, 220, .4);
    letter-spacing: .6em;
    font-size: .45rem;
}

#timeline .section-heading {
    color: #c8d8f0;
    text-shadow: 0 0 30px rgba(100, 140, 200, .08);
}

#timeline .section-epi {
    color: rgba(140, 160, 200, .35);
}

.timeline-wrap {
    border-left: none !important
}

.timeline-item {
    padding: 28px 32px 28px 24px;
    border: 1px solid rgba(120, 150, 200, .06);
    border-radius: 4px;
    background: rgba(8, 10, 18, .75);
    backdrop-filter: blur(8px);
    position: relative;
    margin-left: 20px !important;
    transition: border-color .5s, box-shadow .5s;
}

/* film frame effect */
.timeline-item::before {
    content: '';
    position: absolute;
    inset: -2px;
    border-radius: 4px;
    pointer-events: none;
    border: 1px solid transparent;
    background: linear-gradient(135deg, rgba(140, 160, 200, .04), transparent 50%, rgba(140, 160, 200, .02)) border-box;
    mask: linear-gradient(#fff 0 0) padding-box, linear-gradient(#fff 0 0);
    mask-composite: exclude;
    -webkit-mask-composite: xor;
}

.timeline-item.visible {
    border-color: rgba(140, 170, 220, .15) !important;
    box-shadow: 0 0 30px rgba(100, 140, 200, .04), 0 12px 40px rgba(0, 0, 0, .5) !important;
}

.timeline-line {
    background: linear-gradient(180deg,
            transparent, rgba(120, 160, 220, .15), rgba(120, 160, 220, .3), rgba(120, 160, 220, .15), transparent) !important;
}

.timeline-dot {
    width: 14px !important;
    height: 14px !important;
    border: 2px solid rgba(120, 160, 220, .3) !important;
    left: -36px !important;
    top: 30px !important;
    transition: all .5s;
}

.timeline-item.visible .timeline-dot {
    background: rgba(140, 170, 220, .6) !important;
    box-shadow: 0 0 16px rgba(120, 160, 220, .35) !important;
    border-color: rgba(140, 170, 220, .6) !important;
}

.timeline-date {
    color: rgba(140, 170, 220, .6) !important;
    font-size: .5rem !important;
    letter-spacing: .5em !important;
}

.timeline-title {
    color: #d0e0f8 !important;
    font-family: 'Cinzel', serif !important;
}

.timeline-desc {
    color: rgba(180, 195, 220, .6) !important;
    font-family: 'Crimson Pro', serif !important;
    font-size: 1rem !important;
}

/* ── PIANO: Cabaret de Terciopelo ────────────────────────────── */
#piano {
    background:
        radial-gradient(ellipse 50% 40% at 50% 20%, rgba(60, 5, 8, .5), transparent 60%),
        radial-gradient(ellipse 80% 60% at 50% 85%, rgba(50, 5, 5, .7), transparent 70%),
        linear-gradient(180deg, #0a0404, #100808 40%, #0c0606) !important;
    position: relative;
    overflow: hidden;
}

/* velvet curtain — wider, deeper folds */
#piano::before,
#piano::after {
    content: '';
    position: absolute;
    top: 0;
    bottom: 0;
    width: 120px;
    pointer-events: none;
    z-index: 1;
}

#piano::before {
    left: 0;
    background:
        linear-gradient(90deg, #200808 0%, rgba(28, 6, 6, .6) 40%, transparent 100%);
}

#piano::after {
    right: 0;
    background:
        linear-gradient(270deg, #200808 0%, rgba(28, 6, 6, .6) 40%, transparent 100%);
}

#piano .section-label {
    color: rgba(200, 80, 80, .4);
    letter-spacing: .6em;
    font-size: .45rem;
}

#piano .section-heading {
    color: #f0d0c8;
    text-shadow: 0 0 50px rgba(150, 20, 20, .2), 0 0 100px rgba(120, 0, 0, .08);
    font-style: italic;
}

#piano .section-epi {
    color: rgba(200, 110, 110, .35);
}

.piano-wrap {
    position: relative;
    z-index: 2;
}

.piano-keys {
    background: linear-gradient(180deg, #1a0a0a, #100606);
    border: 1px solid rgba(120, 20, 20, .15);
    border-radius: 8px 8px 0 0;
    padding: 20px 16px 0;
    box-shadow: 0 -8px 40px rgba(0, 0, 0, .5), 0 0 80px rgba(80, 10, 10, .06);
}

.piano-key {
    background: linear-gradient(180deg, #f5ede8, #e8ddd3) !important;
    border-color: rgba(0, 0, 0, .2) !important;
    box-shadow: 0 6px 0 rgba(0, 0, 0, .25), 0 8px 14px rgba(0, 0, 0, .4) !important;
    transition: all .12s ease-out;
}

.piano-key:hover {
    background: linear-gradient(180deg, #fff, #f5ede8) !important;
    transform: translateY(1px);
    box-shadow: 0 5px 0 rgba(0, 0, 0, .25), 0 7px 12px rgba(0, 0, 0, .4) !important;
}

.piano-key.played {
    transform: translateY(3px);
    border-bottom: 2px solid rgba(160, 40, 40, .6) !important;
    box-shadow: 0 0 20px rgba(150, 30, 30, .2), 0 2px 0 rgba(0, 0, 0, .3) !important;
}

.piano-msg-area {
    background: rgba(8, 3, 3, .9) !important;
    border-color: rgba(120, 20, 20, .12) !important;
    border-top: none !important;
    border-radius: 0 0 8px 8px !important;
}

.piano-msg-text {
    font-family: 'Homemade Apple', cursive !important;
    font-size: .85rem !important;
    color: rgba(230, 170, 160, .9) !important;
    text-shadow: 0 0 15px rgba(200, 100, 80, .1);
}

.piano-dot.lit {
    background: rgba(200, 40, 40, .75) !important;
    border-color: rgba(200, 40, 40, .75) !important;
    box-shadow: 0 0 10px rgba(200, 40, 40, .45), 0 0 20px rgba(200, 40, 40, .15) !important;
}

/* ── SOBRES: El Escritorio a la Luz de una Vela ──────────────── */
#sobres {
    position: relative;
    overflow: hidden;
}

/* wood grain lines — more texture */
#sobres::before {
    content: '';
    position: absolute;
    inset: 0;
    pointer-events: none;
    background-image:
        repeating-linear-gradient(92deg,
            transparent 0px, transparent 6px,
            rgba(80, 50, 20, .02) 6px, rgba(80, 50, 20, .02) 7px),
        repeating-linear-gradient(89deg,
            transparent 0px, transparent 16px,
            rgba(80, 50, 20, .012) 16px, rgba(80, 50, 20, .012) 17px),
        repeating-linear-gradient(91.5deg,
            transparent 0px, transparent 40px,
            rgba(60, 35, 10, .008) 40px, rgba(60, 35, 10, .008) 41px);
}

/* desk lamp light — warm asymmetric pool */
#sobres::after {
    content: '';
    position: absolute;
    top: -50px;
    left: 50%;
    transform: translateX(-30%);
    width: 400px;
    height: 350px;
    pointer-events: none;
    background: radial-gradient(ellipse 100% 80% at 50% 0%, rgba(220, 180, 100, .04), transparent 60%);
}

#sobres .section-label {
    color: rgb(228, 191, 131);
    letter-spacing: .6em;
    font-size: .45rem;
}

#sobres .section-heading {
    color: #edd8a8;
    text-shadow: 0 0 30px rgba(200, 160, 80, .06);
}

#sobres .section-epi {
    color: rgba(228, 191, 131, 0.726);
    background: #393f2b;
    border-radius: 20px;
}

.sobre-front {
    background: linear-gradient(135deg, #c4a060, #b08848, #c8a870) !important;
    border-color: rgba(100, 70, 20, .35) !important;
    box-shadow: 0 6px 20px rgba(0, 0, 0, .5), 0 1px 0 rgba(220, 180, 100, .06) !important;
}

.sobre-front::before {
    background: linear-gradient(180deg, rgba(80, 40, 0, .18), transparent) !important;
}

.sobre-seal {
    box-shadow:
        0 2px 4px rgba(0, 0, 0, .4),
        0 4px 12px rgba(0, 0, 0, .3),
        inset 0 1px 0 rgba(255, 200, 100, .1) !important;
    transform: none;
}

.sobre-num {
    color: rgba(60, 30, 0, .45) !important;
    font-size: .45rem;
    letter-spacing: .4em;
}

.sobre-back {
    background: linear-gradient(135deg, #1a1206, #100c04) !important;
    border-color: rgba(180, 140, 60, .12) !important;
    box-shadow: inset 0 2px 8px rgba(0, 0, 0, .3) !important;
}

.sobre-back-text {
    color: rgba(225, 185, 115, .85) !important;
    font-size: .78rem !important;
}

/* ── ROMPECABEZAS: El Salón de Cristal ───────────────────────── */
#rompecabezas {
    background:
        radial-gradient(ellipse 60% 50% at 50% 40%, rgba(10, 10, 18, .9), transparent 60%),
        linear-gradient(180deg, #060608, #08080e 40%, #0a0a10 70%, #060608) !important;
    position: relative;
    overflow: hidden;
}

/* marble veins — more visible */
#rompecabezas::before {
    content: '';
    position: absolute;
    inset: 0;
    pointer-events: none;
    background-image:
        radial-gradient(ellipse 1px 200px at 18% 40%, rgba(200, 200, 230, .06), transparent),
        radial-gradient(ellipse 1.5px 250px at 40% 20%, rgba(190, 190, 220, .04), transparent),
        radial-gradient(ellipse 1px 180px at 65% 60%, rgba(200, 200, 230, .05), transparent),
        radial-gradient(ellipse 1px 220px at 80% 25%, rgba(200, 200, 230, .035), transparent),
        radial-gradient(ellipse 1.5px 160px at 92% 70%, rgba(190, 190, 220, .04), transparent);
}

/* ambient light shift */
#rompecabezas::after {
    content: '';
    position: absolute;
    inset: 0;
    pointer-events: none;
    background:
        radial-gradient(ellipse 50% 40% at 50% 30%, rgba(140, 120, 200, .02), transparent 50%);
    animation: ambientShift 20s ease-in-out infinite alternate;
}

@keyframes ambientShift {
    0% {
        background: radial-gradient(ellipse 50% 40% at 35% 30%, rgba(140, 120, 200, .02), transparent 50%)
    }

    100% {
        background: radial-gradient(ellipse 50% 40% at 65% 60%, rgba(120, 140, 220, .02), transparent 50%)
    }
}

#rompecabezas .section-label {
    color: rgba(180, 180, 220, .35);
    letter-spacing: .6em;
    font-size: .45rem;
}

#rompecabezas .section-heading {
    color: #e0e0f0;
    text-shadow: 0 0 30px rgba(160, 150, 220, .08);
}

#rompecabezas .section-epi {
    color: rgba(180, 180, 220, .3);
}

.puzzle-board {
    background: rgba(16, 16, 24, .97) !important;
    border: 1px solid rgba(200, 180, 230, .06) !important;
    box-shadow:
        0 0 0 1px rgba(200, 180, 230, .03),
        0 0 60px rgba(140, 120, 200, .04),
        0 40px 100px rgba(0, 0, 0, .75) !important;
    padding: 8px !important;
    border-radius: 16px !important;
}

.puzzle-piece {
    background: rgba(22, 22, 34, .9) !important;
    border-color: rgba(200, 180, 230, .05) !important;
    font-family: 'Cinzel', serif !important;
    color: rgba(220, 210, 240, .65) !important;
    font-size: 1.1rem !important;
    letter-spacing: .03em;
    backdrop-filter: blur(4px);
    border-radius: 10px !important;
    transition: all .3s cubic-bezier(.22, 1, .36, 1);
}

.puzzle-piece:hover {
    background: rgba(35, 30, 50, .95) !important;
    border-color: rgba(160, 130, 210, .18) !important;
    box-shadow: 0 0 24px rgba(150, 100, 200, .1), inset 0 1px 0 rgba(255, 255, 255, .04) !important;
    transform: translateY(-1px);
}

.puzzle-piece.correct {
    border-color: rgba(180, 150, 230, .25) !important;
    background: rgba(30, 24, 48, .92) !important;
    box-shadow: 0 0 24px rgba(160, 120, 220, .12), 0 0 60px rgba(140, 100, 200, .04) !important;
}

.puzzle-shuffle-btn {
    border-color: rgba(200, 180, 230, .12) !important;
    color: rgba(200, 180, 230, .5) !important;
    transition: all .4s;
}

.puzzle-shuffle-btn:hover {
    background: rgba(160, 120, 200, .08) !important;
    color: #e0e0f8 !important;
    border-color: rgba(200, 180, 230, .25) !important;
}

/* ── ORÁCULO: La Cámara de los Misterios ─────────────────────── */
#oraculo {
    position: relative;
    overflow: hidden;
}

/* mystic smoke — denser, layered */
#oraculo::after {
    content: '';
    position: absolute;
    bottom: 0;
    left: -10%;
    right: -10%;
    height: 280px;
    pointer-events: none;
    background:
        radial-gradient(ellipse 60% 50% at 30% 100%, rgba(50, 25, 90, .25), transparent 60%),
        radial-gradient(ellipse 50% 40% at 70% 90%, rgba(40, 20, 80, .2), transparent 55%),
        radial-gradient(ellipse 80% 60% at 50% 100%, rgba(30, 15, 60, .15), transparent 70%);
    animation: smokeLayerDrift 18s ease-in-out infinite alternate;
}

@keyframes smokeLayerDrift {
    0% {
        transform: translateX(-3%) scaleY(1)
    }

    100% {
        transform: translateX(3%) scaleY(1.05)
    }
}

/* ceiling stars twinkling */
#oraculo::before {
    content: '';
    position: absolute;
    inset: 0;
    pointer-events: none;
    background-image:
        radial-gradient(1px 1px at 10% 8%, rgba(180, 160, 255, .2), transparent),
        radial-gradient(1px 1px at 30% 5%, rgba(180, 160, 255, .12), transparent),
        radial-gradient(1.5px 1.5px at 55% 12%, rgba(160, 140, 240, .18), transparent),
        radial-gradient(1px 1px at 72% 3%, rgba(180, 160, 255, .1), transparent),
        radial-gradient(1px 1px at 88% 15%, rgba(160, 140, 240, .14), transparent),
        radial-gradient(1px 1px at 45% 18%, rgba(180, 160, 255, .08), transparent);
    animation: ceilingTwinkle 8s ease-in-out infinite alternate;
}

@keyframes ceilingTwinkle {
    0% {
        opacity: .6
    }

    100% {
        opacity: 1
    }
}

#oraculo .section-label {
    color: rgb(255, 255, 255);
    letter-spacing: 0.6em;
    font-weight: 600;
    font-size: .65rem;

}

#oraculo .section-heading {
    color: #d0c0f0;
    text-shadow: 0 0 200px #050113cc, 0 0 200px #050113cc;
    border-radius: 20px;
}

#oraculo .section-epi {
    color: #d0c0f0;
    border-radius: 20px;
    text-shadow: 0 0 40px #050113cc, 0 0 80px #050113cc;
    background-color: #050113cc;
}

.oracle-ball {
    background: radial-gradient(circle at 30% 25%, rgba(80, 50, 130, .55), rgba(15, 8, 30, .96) 55%, #08040e) !important;
    border-color: rgba(140, 80, 200, .1) !important;
    box-shadow:
        0 0 80px rgba(100, 50, 200, .15),
        0 0 160px rgba(80, 30, 180, .08),
        0 30px 80px rgba(0, 0, 0, .65),
        inset 0 -30px 60px rgba(100, 50, 200, .08) !important;
    transition: box-shadow .6s;
}

.oracle-ball:hover {
    box-shadow:
        0 0 120px rgba(100, 50, 200, .25),
        0 0 240px rgba(80, 30, 180, .12),
        0 30px 80px rgba(0, 0, 0, .65),
        inset 0 -30px 80px rgba(100, 50, 200, .14) !important;
}

.oracle-inner-glow {
    background: radial-gradient(circle, rgba(130, 70, 230, .25), transparent 65%) !important;
}

.oracle-text {
    color: rgba(225, 210, 255, .92) !important;
    font-size: .8rem !important;
    text-shadow: 0 0 12px rgba(150, 100, 255, .35);
}

.oracle-prompt {
    color: #ffffff;
    border-radius: 20px;
    text-shadow: 0 0 40px #050113cc, 0 0 80px #050113cc;
}

.oracle-base {
    background: linear-gradient(180deg, rgba(30, 15, 60, .85), rgba(10, 5, 25, .95)) !important;
    box-shadow: 0 8px 30px rgba(0, 0, 0, .5) !important;
}

/* ── VELAS: El Altar Sagrado ─────────────────────────────────── */
#velas {
    background: #020202 !important;
    position: relative;
    overflow: hidden;
    transition: background 1.5s ease;
}

/* sacred darkness — warms up as candles light */
#velas::before {
    content: '';
    position: absolute;
    inset: 0;
    pointer-events: none;
    background: radial-gradient(ellipse 80% 60% at 50% 80%, rgba(30, 15, 5, .0), transparent 60%);
    transition: background 2s ease;
}

#velas .section-label {
    color: rgba(200, 150, 80, .35);
    letter-spacing: .6em;
    font-size: .45rem;
}

#velas .section-heading {
    color: #e8d0a0;
    text-shadow: 0 0 25px rgba(200, 120, 40, .1);
}

#velas .section-epi {
    color: rgba(200, 150, 80, .35);
}

.velas-wrap {
    position: relative;
    z-index: 2;
}

.vela-body {
    background: linear-gradient(180deg, #f0e8d8, #e0d4c0, #d0c4a8) !important;
    box-shadow: 0 10px 30px rgba(0, 0, 0, .65) !important;
    transition: box-shadow 1s ease;
}

.vela-item.lit .vela-body {
    box-shadow:
        0 10px 30px rgba(0, 0, 0, .5),
        0 -8px 40px rgba(255, 180, 80, .12),
        0 0 60px rgba(255, 150, 50, .06) !important;
}

.vela-promise {
    color: rgba(225, 175, 105, .85) !important;
    font-family: 'Homemade Apple', cursive !important;
    text-shadow: 0 0 10px rgba(200, 140, 60, .08);
}

.vela-counter {
    color: rgba(180, 130, 60, .35) !important;
}

.vela-complete {
    color: rgba(230, 180, 110, .95) !important;
    text-shadow: 0 0 20px rgba(220, 160, 60, .15);
}

/* ── FINAL: La Carta Bajo la Lluvia ──────────────────────────── */
#final {
    position: relative;
    overflow: hidden;
    background:
        radial-gradient(ellipse 70% 50% at 50% 30%, rgba(12, 8, 8, .95), transparent 60%),
        #060505 !important;
    min-height: 100vh;
}

/* rain atmosphere + condensation glow */
#final::before {
    content: '';
    position: absolute;
    inset: 0;
    pointer-events: none;
    z-index: 0;
    background:
        radial-gradient(ellipse 40% 30% at 50% 50%, rgba(30, 15, 15, .3), transparent 50%),
        radial-gradient(ellipse 80% 80% at 50% 20%, rgba(20, 10, 10, .0), rgba(6, 5, 5, .8)),
        linear-gradient(180deg, transparent, rgba(0, 0, 0, .5));
}

.final-inner {
    position: relative;
    z-index: 2;
    max-width: 580px !important;
}

#final h2 {
    font-family: 'Homemade Apple', cursive !important;
    font-size: clamp(1.1rem, 3vw, 1.5rem) !important;
    color: rgba(220, 180, 160, .85) !important;
    letter-spacing: .02em !important;
    line-height: 1.6 !important;
    font-weight: 400 !important;
}

.final-letter {
    background: linear-gradient(135deg, #f5eee8, #f0e8e0, #eee6dc) !important;
    border: none !important;
    border-radius: 3px !important;
    padding: 52px !important;
    box-shadow:
        0 1px 0 rgba(0, 0, 0, .08),
        0 2px 0 rgba(0, 0, 0, .06),
        0 4px 2px rgba(0, 0, 0, .12),
        0 8px 8px rgba(0, 0, 0, .1),
        0 20px 60px rgba(0, 0, 0, .55),
        inset 0 0 50px rgba(0, 0, 0, .025) !important;
    position: relative;
}

/* condensation glow around letter edges */
.final-letter::after {
    content: '';
    position: absolute;
    inset: -4px;
    border-radius: 6px;
    pointer-events: none;
    background: transparent;
    box-shadow: 0 0 40px rgba(200, 160, 140, .04), 0 0 80px rgba(180, 140, 120, .02);
}

.final-letter::before {
    content: '';
    position: absolute;
    left: 60px;
    top: 0;
    bottom: 0;
    width: 1px;
    background: rgba(200, 100, 100, .1);
    pointer-events: none;
}

.final-letter p,
#typewriterTarget p {
    color: #2a1a18 !important;
    font-family: 'Crimson Pro', serif !important;
    font-size: 1.05rem !important;
    line-height: 1.9 !important;
    font-weight: 400 !important;
}

.final-letter strong {
    color: #6b1d2a !important;
}

.final-sig {
    font-family: 'Homemade Apple', cursive !important;
    color: #6b1d2a !important;
    font-size: 1rem !important;
    margin-top: 36px !important;
    display: block !important;
    border-top: 1px solid rgba(107, 29, 42, .12) !important;
    padding-top: 28px !important;
}

.final-date {
    color: rgba(200, 160, 140, .45) !important;
    font-size: .55rem !important;
    letter-spacing: .35em !important;
}

.final-bat-deco {
    opacity: .25 !important;
    font-size: .85rem !important;
}

.type-cursor {
    background: #6b1d2a !important;
}

/* Rain drops — more visible, varied */
.rain-drop {
    position: absolute;
    width: 1px;
    background: linear-gradient(180deg, transparent, rgba(180, 180, 210, .2), rgba(160, 160, 200, .08));
    animation: rainFall linear infinite;
    pointer-events: none;
}

@keyframes rainFall {
    0% {
        transform: translateY(-100px);
        opacity: 0
    }

    10% {
        opacity: 1
    }

    90% {
        opacity: .4
    }

    100% {
        transform: translateY(110vh);
        opacity: 0
    }
}

/* ── DESCIFRA: Terminal del Corazón ───────────────────────────── */
#descifra {
    background:
        radial-gradient(ellipse 50% 40% at 50% 40%, rgba(0, 15, 6, .9), transparent 55%),
        radial-gradient(ellipse 70% 50% at 50% 50%, #040a04, #030804) !important;
    position: relative;
    overflow: hidden;
}

/* CRT scanlines — tighter, green-tinted */
#descifra::before {
    content: '';
    position: absolute;
    inset: 0;
    pointer-events: none;
    z-index: 1;
    background: repeating-linear-gradient(180deg,
            transparent 0px, transparent 2px,
            rgba(0, 255, 65, .018) 2px, rgba(0, 255, 65, .018) 3px);
    animation: descifraScanFlicker 0.08s linear infinite;
}

@keyframes descifraScanFlicker {

    0%,
    100% {
        opacity: .65
    }

    50% {
        opacity: .9
    }
}

/* phosphor glow vignette — more aggressive CRT bend */
#descifra::after {
    content: '';
    position: absolute;
    inset: 0;
    pointer-events: none;
    z-index: 1;
    background:
        radial-gradient(ellipse 45% 45% at 50% 50%, transparent 25%, rgba(0, 0, 0, .75)),
        radial-gradient(ellipse 70% 40% at 50% 50%, rgba(0, 50, 20, .1), transparent 55%);
}

#descifra .section-header {
    position: relative;
    z-index: 2;
}

#descifra .section-label {
    color: rgba(0, 200, 80, .35);
    letter-spacing: .7em;
    font-family: monospace;
    font-size: .45rem;
}

#descifra .section-heading {
    color: #a8ffc8;
    text-shadow: 0 0 25px rgba(0, 200, 80, .25), 0 0 60px rgba(0, 200, 80, .08);
    font-family: 'Cinzel', serif;
    animation: glitchText 8s ease-in-out infinite;
}

@keyframes glitchText {

    0%,
    90%,
    100% {
        text-shadow: 0 0 25px rgba(0, 200, 80, .25), 0 0 60px rgba(0, 200, 80, .08);
        transform: none
    }

    91% {
        text-shadow: -2px 0 rgba(255, 0, 0, .15), 2px 0 rgba(0, 255, 65, .15), 0 0 25px rgba(0, 200, 80, .4);
        transform: translateX(1px)
    }

    93% {
        text-shadow: 1px 0 rgba(255, 0, 0, .1), -1px 0 rgba(0, 255, 65, .1), 0 0 25px rgba(0, 200, 80, .3);
        transform: translateX(-1px)
    }

    95% {
        text-shadow: 0 0 25px rgba(0, 200, 80, .25), 0 0 60px rgba(0, 200, 80, .08);
        transform: none
    }
}

#descifra .section-epi {
    color: rgba(0, 200, 80, .3);
    font-family: monospace;
    letter-spacing: .08em;
}

.puzzle-wrap {
    position: relative;
    z-index: 2;
}

#descifra .puzzle-card {
    background: rgba(2, 8, 3, .92) !important;
    border-color: rgba(0, 180, 70, .08) !important;
    box-shadow: 0 0 50px rgba(0, 60, 20, .12), inset 0 1px 0 rgba(0, 180, 70, .03) !important;
}

#descifra .pz-lang {
    color: rgba(0, 200, 80, .45) !important;
    font-family: monospace !important;
    letter-spacing: .35em !important;
}

#descifra .pz-title {
    color: #c0ffe0 !important;
    text-shadow: 0 0 12px rgba(0, 200, 80, .18);
}

#descifra .pz-prompt {
    color: rgba(0, 200, 80, .4) !important;
    font-family: monospace !important;
}

#descifra .letter-tile {
    border-color: rgba(0, 180, 70, .12) !important;
    color: rgba(0, 200, 80, .45) !important;
    background: rgba(0, 18, 8, .85) !important;
    font-family: monospace !important;
    transition: all .2s;
}

#descifra .letter-tile:hover {
    border-color: rgba(0, 220, 90, .4) !important;
    color: rgba(0, 255, 100, .85) !important;
    box-shadow: 0 0 14px rgba(0, 200, 80, .18) !important;
}

#descifra .letter-tile.open {
    border-color: rgba(107, 29, 42, .45) !important;
    color: var(--rose-muted) !important;
    background: rgba(107, 29, 42, .1) !important;
    text-shadow: 0 0 10px rgba(160, 52, 80, .35);
}

#descifra .pz-opt {
    border-color: rgba(0, 180, 70, .12) !important;
    color: rgba(0, 200, 80, .6) !important;
    font-family: monospace !important;
    background: transparent;
}

#descifra .pz-opt:hover {
    border-color: rgba(0, 220, 90, .3) !important;
    color: rgba(0, 255, 100, .9) !important;
    background: rgba(0, 40, 15, .2) !important;
}

#descifra .pz-opt.correct {
    border-color: rgba(107, 29, 42, .3) !important;
    background: rgba(107, 29, 42, .08) !important;
    color: var(--rose-muted) !important;
}

#descifra .pz-reveal {
    background: rgba(107, 29, 42, .04) !important;
    border-color: rgba(107, 29, 42, .12) !important;
}

#descifra .pz-reveal-text {
    color: var(--rose-muted) !important;
}

#descifra .pz-icon {
    filter: hue-rotate(100deg) brightness(1.2);
}

#descifra .pz-dot {
    border-color: rgba(0, 180, 70, .3) !important;
}

#descifra .pz-dot.done {
    background: rgba(107, 29, 42, .7) !important;
    border-color: rgba(107, 29, 42, .7) !important;
}

#descifra .pz-dot.now {
    border-color: rgba(0, 220, 90, .5) !important;
    box-shadow: 0 0 8px rgba(0, 200, 80, .3) !important;
}

#descifra .pz-next {
    border-color: rgba(107, 29, 42, .3) !important;
    color: var(--rose-muted) !important;
}

#descifra .pz-next:hover {
    background: var(--wine) !important;
    color: var(--cream) !important;
}

/* ── Shared section heading upgrades ─────────────────────────── */
.section-heading {
    font-size: clamp(2rem, 5vw, 3.2rem) !important;
    line-height: 1.15 !important;
}


/* ═══════════════════════════════════════════
   SECCIÓN SECRETA (PASSWORD LOCKED)
   ═══════════════════════════════════════════ */
#secreto-final {
    position: relative;
    min-height: 80vh;
}

.secret-lock-container {
    display: flex;
    justify-content: center;
    align-items: center;
    margin-top: 40px;
    transition: all 300ms cubic-bezier(0.25, 0.1, 0.25, 1);
}

.secret-lock-box {
    background: rgba(18, 18, 18, 0.6);
    backdrop-filter: blur(12px);
    border: 1px solid var(--border);
    border-radius: 20px;
    padding: 48px;
    text-align: center;
    max-width: 400px;
    width: 90%;
    box-shadow: 0 12px 40px rgba(0, 0, 0, 0.4), inset 0 0 20px rgba(107, 29, 42, 0.05);
}

.secret-icon {
    font-size: 2.5rem;
    margin-bottom: 20px;
    display: block;
    color: var(--wine-glow);
    filter: drop-shadow(0 0 12px rgba(107, 29, 42, 0.4));
}

.secret-lock-box h3 {
    font-family: 'Cinzel', serif;
    font-size: 1.2rem;
    color: var(--cream);
    margin-bottom: 8px;
    letter-spacing: 0.05em;
}

.secret-lock-box p {
    font-size: 0.85rem;
    color: var(--text-dim);
    margin-bottom: 24px;
}

.secret-inputs {
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 12px;
    margin-bottom: 24px;
}

.secret-inputs input {
    width: 64px;
    background: rgba(0, 0, 0, 0.3);
    border: 1px solid var(--border);
    color: var(--cream);
    font-family: 'DM Sans', sans-serif;
    font-size: 1.2rem;
    text-align: center;
    padding: 14px 0;
    border-radius: 10px;
    outline: none;
    transition: border-color 150ms cubic-bezier(0.25, 0.1, 0.25, 1), box-shadow 150ms cubic-bezier(0.25, 0.1, 0.25, 1);
}

.secret-inputs input:focus {
    border-color: var(--wine-light);
    box-shadow: 0 0 0 2px rgba(107, 29, 42, 0.2);
}

.secret-sep {
    color: var(--text-dim);
    font-size: 1.4rem;
    font-family: 'Cinzel', serif;
    opacity: 0.5;
}

.secret-btn {
    width: 100%;
    background: var(--wine);
    color: var(--cream);
    border: none;
    padding: 14px;
    border-radius: 10px;
    font-family: 'DM Sans', sans-serif;
    font-size: 0.8rem;
    text-transform: uppercase;
    letter-spacing: 0.2em;
    cursor: pointer;
    transition: transform 150ms cubic-bezier(0.25, 0.1, 0.25, 1), box-shadow 150ms cubic-bezier(0.25, 0.1, 0.25, 1), background 150ms;
}

.secret-btn:hover {
    background: var(--wine-light);
    transform: translateY(-2px);
    box-shadow: 0 6px 16px rgba(107, 29, 42, 0.3);
}

.secret-btn:active {
    transform: translateY(0) scale(0.98);
    transition-duration: 100ms;
}

.secret-error {
    color: var(--rose-muted) !important;
    font-size: 0.8rem !important;
    margin-top: 16px;
    margin-bottom: 0 !important;
    display: none;
}

@keyframes shake {

    0%,
    100% {
        transform: translateX(0);
    }

    20%,
    60% {
        transform: translateX(-6px);
    }

    40%,
    80% {
        transform: translateX(6px);
    }
}

.secret-content {
    opacity: 0;
    transform: translateY(30px);
    transition: all 400ms cubic-bezier(0.25, 0.1, 0.25, 1);
}

.secret-content.visible {
    opacity: 1;
    transform: translateY(0);
}

.secret-content visible {
    display: flex;
    justify-content: center;
}

.secret-inner {
    max-width: 600px;
    margin: 0 auto;
    text-align: center;
    background: rgba(107, 29, 42, 0.05);
    border: 1px solid var(--border);
    padding: 60px 40px;
    border-radius: 24px;
}

.secret-title {
    font-family: 'Cinzel', serif;
    font-size: 2rem;
    color: var(--cream);
    margin-bottom: 16px;
}

.secret-text {
    font-size: 1.1rem;
    color: var(--text);
    line-height: 1.6;
    margin-bottom: 40px;
}

.secret-photo-placeholder {
    width: 100%;
    aspect-ratio: 4/3;
    background: rgba(0, 0, 0, 0.2);
    border: 1px dashed var(--border-hover);
    border-radius: 16px;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--text-dim);
    font-style: italic;
    font-size: 0.9rem;
}

.secret-photo-placeholder:hover {
    border-color: var(--wine-glow);
    background: rgba(107, 29, 42, 0.05);
    transition: all 0.2s cubic-bezier(0.25, 0.1, 0.25, 1);
}

/* ── Reduced Motion ─────────────────────────────────────────── */
@media (prefers-reduced-motion: reduce) {

    *,
    *::before,
    *::after {
        animation-duration: 0.01ms !important;
        transition-duration: 0.01ms !important;
        scroll-behavior: auto !important;
    }
}

/* ════════════════════════════════════════════════════════════
   RESPONSIVE — MOBILE FIRST CORRECTIONS
   Breakpoints: 768px (tablet), 480px (mobile), 360px (small)
   ════════════════════════════════════════════════════════════ */

/* ── 768px: Tablets y pantallas medianas ──────────────────── */
@media (max-width: 768px) {

    /* HEADER */
    .site-header {
        height: 52px;
        padding: 0 8px;
    }

    .header-nav {
        max-width: 100%;
        padding: 0 4px;
        gap: 0;
    }

    .header-nav li a {
        font-size: 0.48rem;
        letter-spacing: 0.08em;
        padding: 8px 4px;
        white-space: nowrap;
    }

    .header-nav li.orb-li {
        padding: 0 6px;
        top: 36px;
    }

    .header-orb-wrap {
        width: 52px;
        height: 52px;
        top: 8px;
    }

    .header__movimiento {
        width: 32px;
    }

    /* SIDE NAV */
    .side-nav {
        display: none;
    }

    /* SECTIONS — padding general */
    .section {
        padding: 80px 16px;
    }

    .section-header {
        margin-bottom: 48px;
    }

    .section-heading {
        font-size: clamp(1.4rem, 5vw, 2rem) !important;
    }

    /* HERO */
    .hero {
        padding-top: 52px;
    }

    .hero-content {
        padding: 0 16px;
    }

    .hero h1 {
        font-size: clamp(1.8rem, 6vw, 3rem);
    }

    /* BANNER */
    .banner {
        height: auto !important;
        padding: 8px 0;
    }

    .banner__img {
        display: none;
    }

    .banner__central {
        display: block;
        height: 7rem;
    }

    /* CONTADOR */
    #contador {
        padding: 60px 16px;
    }

    .counter-grid {
        gap: 16px;
        flex-wrap: wrap;
    }

    .counter-box {
        min-width: 70px;
        padding: 20px 12px;
        flex: 1 1 calc(50% - 8px);
        max-width: calc(50% - 8px);
    }

    .counter-value {
        font-size: clamp(2rem, 8vw, 3.5rem) !important;
    }

    /* SOBRES */
    #sobres {
        padding: 80px 16px;
    }

    .sobres-grid {
        grid-template-columns: repeat(2, 1fr);
        gap: 16px;
        max-width: 100%;
    }

    .sobre-card {
        height: 180px;
    }

    /* CONSTELACION / SKY */
    #constelacion {
        padding-bottom: 40px;
    }

    .sky {
        height: 320px;
        border-radius: 12px;
    }

    /* WORLD REVEAL */
    .world-row {
        flex-direction: column;
        gap: 24px;
        align-items: center;
    }

    .world-divider {
        width: 100px;
        height: 1px;
        background: linear-gradient(90deg, transparent, var(--border), transparent);
    }

    .world-canvas-wrap {
        width: 200px;
        height: 200px;
    }

    .world-reveal {
        padding: 0 8px;
    }

    /* ORÁCULO */
    #oraculo {
        padding: 80px 16px;
    }

    .oracle-ball {
        width: 180px;
        height: 180px;
    }

    .oracle-base {
        width: 230px;
    }

    /* MUSEO / SALA CARDS */
    .sala-card {
        flex: 0 0 85vw;
        min-height: auto;
    }

    .museo-track {
        padding: 0 8vw;
        gap: 16px;
    }

    .sala-inner {
        padding: 28px 20px;
    }

    .sala-num-bg {
        font-size: 4rem;
    }

    /* JARDÍN / FLOWERS */
    .flowers-grid {
        grid-template-columns: repeat(2, 1fr);
        gap: 16px;
    }

    .flower-card {
        padding: 28px 14px 22px;
    }

    /* LIBRO */
    .book-page {
        padding: 28px 24px;
    }

    /* DESCIFRA */
    .puzzle-card {
        padding: 28px 20px;
    }

    .letter-tile {
        width: 34px;
        height: 42px;
        font-size: 0.95rem;
    }

    /* FINAL */
    #final {
        padding: 60px 16px;
    }

    .final-inner {
        max-width: 100% !important;
        padding: 0 4px;
    }

    .final-letter {
        padding: 28px 20px !important;
    }

    .final-letter::before {
        left: 28px;
    }

    /* SECRET / LOCK */
    .secret-lock-box {
        padding: 32px 24px;
        max-width: 100%;
    }

    /* MÚSICA */
    .music-player {
        bottom: 16px;
        right: 16px;
        padding: 10px 14px;
        gap: 8px;
    }

    .music-title {
        display: none;
    }

    /* TIMELINE */
    #timeline {
        padding: 80px 16px 80px 48px;
    }

    .timeline-wrap {
        padding-left: 28px;
    }

    /* VELAS */
    .velas-row {
        gap: 20px;
        justify-content: center;
    }

    .vela-body {
        height: 64px;
        width: 22px;
    }
}

/* ── 480px: Móviles ───────────────────────────────────────── */
@media (max-width: 480px) {

    /* HEADER — simplificado */
    .site-header {
        height: 48px;
    }

    .header-nav li a {
        font-size: 0.42rem;
        letter-spacing: 0.06em;
        padding: 6px 3px;
    }

    .header-nav li.orb-li {
        top: 32px;
        padding: 0 4px;
    }

    .header-orb-wrap {
        width: 44px;
        height: 44px;
    }

    .dropdown>a::after {
        display: none;
    }

    .dropdown-content {
        min-width: 140px;
        left: 0;
        transform: translateY(10px) scale(0.98);
    }

    .dropdown:hover .dropdown-content {
        transform: translateY(0) scale(1);
    }

    /* HERO */
    .hero h1 {
        font-size: clamp(1.5rem, 7vw, 2.2rem);
    }

    .hero h1 em {
        font-size: 0.5em;
    }

    .hero-eyebrow {
        font-size: 0.75rem;
        letter-spacing: 0.3em;
    }

    /* SECTIONS */
    .section {
        padding: 60px 12px;
    }

    .section-header {
        margin-bottom: 36px;
    }

    /* CONTADOR */
    .counter-box {
        flex: 1 1 calc(50% - 6px);
        max-width: calc(50% - 6px);
        min-width: 60px;
        padding: 16px 8px;
    }

    .counter-value {
        font-size: clamp(1.8rem, 9vw, 3rem) !important;
    }

    /* SOBRES */
    .sobres-grid {
        grid-template-columns: repeat(2, 1fr);
        gap: 12px;
    }

    .sobre-card {
        height: 160px;
    }

    /* SKY */
    .sky {
        height: 280px;
        border-radius: 10px;
    }

    /* WORLD REVEAL */
    .world-canvas-wrap {
        width: 160px;
        height: 160px;
    }

    .world-panel {
        padding: 20px 12px;
        gap: 10px;
    }

    /* ORACLE */
    .oracle-ball {
        width: 150px;
        height: 150px;
    }

    .oracle-base {
        width: 180px;
    }

    /* FLOWERS GRID */
    .flowers-grid {
        grid-template-columns: repeat(2, 1fr);
        gap: 10px;
    }

    .flower-card {
        padding: 22px 10px 18px;
    }

    .flower-icon {
        font-size: 2rem;
    }

    /* LIBRO */
    .book-page {
        padding: 24px 18px;
    }

    .pg-title {
        font-size: 1.2rem;
    }

    /* DESCIFRA */
    .letter-row {
        gap: 5px;
    }

    .letter-tile {
        width: 30px;
        height: 38px;
        font-size: 0.85rem;
    }

    /* FINAL */
    .final-letter {
        padding: 20px 16px !important;
    }

    #final h2 {
        font-size: clamp(0.95rem, 5vw, 1.2rem) !important;
        margin-bottom: 24px;
    }

    /* SECRET */
    .secret-lock-box {
        padding: 28px 18px;
    }

    .secret-inputs input {
        width: 52px;
        font-size: 1rem;
        padding: 12px 0;
    }

    /* LOCKED MODAL */
    .locked-modal {
        padding: 36px 24px;
    }

    .locked-countdown {
        gap: 8px;
    }

    .locked-cd-val {
        min-width: 42px;
        font-size: 1.1rem;
    }

    /* TIMELINE */
    #timeline {
        padding: 60px 12px 60px 40px;
    }

    .timeline-item {
        padding: 20px 16px 20px 16px !important;
        margin-left: 12px !important;
    }

    .timeline-dot {
        left: -28px !important;
        width: 10px !important;
        height: 10px !important;
    }

    /* MÚSICA */
    .music-player {
        bottom: 12px;
        right: 12px;
        padding: 8px 12px;
    }

    .music-bars {
        display: none;
    }
}

/* ── 360px: Móviles muy pequeños ─────────────────────────── */
@media (max-width: 360px) {

    .header-nav {
        padding: 0 2px;
    }

    .header-nav li a {
        font-size: 0.38rem;
        padding: 6px 2px;
    }

    .header-orb-wrap {
        width: 38px;
        height: 38px;
    }

    .counter-box {
        flex: 1 1 calc(50% - 4px);
        max-width: calc(50% - 4px);
        padding: 12px 6px;
    }

    .sobres-grid {
        grid-template-columns: 1fr 1fr;
        gap: 8px;
    }

    .sobre-card {
        height: 140px;
    }

    .sky {
        height: 240px;
    }

    .oracle-ball {
        width: 130px;
        height: 130px;
    }

    .oracle-base {
        width: 160px;
    }

    .world-canvas-wrap {
        width: 140px;
        height: 140px;
    }

    .final-letter {
        padding: 16px 12px !important;
    }

    .secret-inputs {
        gap: 8px;
    }

    .secret-inputs input {
        width: 46px;
        font-size: 0.95rem;
    }
}