:root {
    --bg-color: #0f172a;
    --text-primary: #f8fafc;
    --text-secondary: #94a3b8;
    --accent-1: #38bdf8;
    --font-main: 'Playfair Display', serif;
}

body {
    background-color: var(--bg-color);
    color: var(--text-primary);
    font-family: var(--font-main);
    overflow: hidden;
    min-height: 100vh;
    display: flex;
    justify-content: center;
    align-items: center;
    margin: 0;
    /* Bulb Off Cursor */
    cursor: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='32' height='32' viewBox='0 0 24 24' fill='none' stroke='%2338bdf8' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M15 22h-6'/><path d='M15 18H9'/><path d='M12 2v2'/><path d='M12 18a6 6 0 1 0 0-12 6 6 0 0 0 0 12z'/></svg>") 16 16, auto;
}

body.door-open {
    /* Bulb On (Glowing) Cursor */
    cursor: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='32' height='32' viewBox='0 0 24 24' fill='none' stroke='%2338bdf8' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M15 22h-6'/><path d='M15 18H9'/><path d='M12 2v2'/><path d='M12 18a6 6 0 1 0 0-12 6 6 0 0 0 0 12z'/><path d='M12 10a2 2 0 1 1-2 2'/><path d='M2 12h2'/><path d='M20 12h2'/><path d='M4.9 4.9l1.4 1.4'/><path d='M17.7 17.7l1.4 1.4'/><path d='M17.7 4.9l-1.4 1.4'/><path d='M4.9 17.7l-1.4 1.4'/></svg>") 16 16, auto;
}

.container {
    position: relative;
    width: 100vw;
    height: 100vh;
}

.white-overlay {
    position: fixed;
    top: 0;
    left: 0;
    width: 100vw;
    height: 100vh;
    background: white;
    opacity: 0;
    pointer-events: none;
    z-index: 9999;
    transition: opacity 2s ease;
}

.white-overlay.active {
    opacity: 1;
    pointer-events: auto;
}

.hero-title {
    position: relative;
    width: 100%;
    height: 100%;
}

.letter-wrapper {
    position: absolute;
    display: inline-flex;
    align-items: baseline;
    font-size: 5rem;
    font-weight: 700;
    text-transform: uppercase;
    transition: all 1.5s cubic-bezier(0.25, 1, 0.5, 1), transform 0.3s ease-out, font-size 1.5s ease;
    white-space: nowrap;
}

.letter {
    color: var(--text-primary);
    opacity: 1;
    text-shadow:
        0 0 10px var(--accent-1),
        0 0 20px var(--accent-1);
}

@keyframes shineWave {

    0%,
    100% {
        filter: brightness(1) drop-shadow(0 0 10px var(--accent-1));
        color: var(--text-primary);
    }

    50% {
        filter: brightness(2) drop-shadow(0 0 25px #fff);
        color: #fff;
    }
}

.letter.wave {
    animation: shineWave 3s ease-in-out infinite;
}

#L-O .letter {
    font-size: 0.9em;
}

.expansion {
    font-size: 3rem;
    font-weight: 400;
    text-transform: none;
    color: var(--text-primary);
    width: 0;
    overflow: hidden;
    white-space: nowrap;
    opacity: 1;
    display: inline-block;
    vertical-align: baseline;
    margin-left: 1.2rem;
    /* Match letter-spacing */
    letter-spacing: 1.2rem;
    transition: font-size 1.5s ease, margin-left 1.5s ease, letter-spacing 1.5s ease;
}

.word-connector {
    font-size: 2.5rem;
    /* Half size */
    font-weight: 600;
    color: var(--text-primary);
    opacity: 0;
    display: inline-block;
    position: absolute;
    white-space: nowrap;
    vertical-align: baseline;
    letter-spacing: 0.05rem;
    /* Absolute compression */
    transition: font-size 1.5s ease, opacity 1s ease, filter 1s ease;
}

.word-connector .wave {
    color: var(--text-primary);
    font-size: 2.5em;
    text-shadow:
        0 0 10px var(--accent-1),
        0 0 20px var(--accent-1),
        0 0 30px var(--accent-1),
        0 0 40px var(--accent-1);
}

.typing-cursor {
    border-right: 2px solid var(--accent-1);
    animation: blink 0.75s step-end infinite;
}

@keyframes blink {

    from,
    to {
        border-color: transparent
    }

    50% {
        border-color: var(--accent-1)
    }
}

.subtitle {
    position: absolute;
    margin: 0;
    text-align: center;
    font-size: 3rem;
    /* Academic Scale */
    font-weight: 700;
    color: #fff;
    font-family: 'Noto Serif KR', serif;
    /* Restored Font */
    letter-spacing: 0.5rem;
    /* Restored Spacing */

    text-shadow:
        0 0 5px #fff,
        0 0 15px var(--accent-1),
        0 0 30px var(--accent-1);

    opacity: 0;
    transition: opacity 1s ease;
    white-space: nowrap;

    /* Base Brightness 1.2 "Ready" */
    filter: brightness(1.2);
    transition: opacity 1s ease, font-size 1.5s ease, filter 1.5s ease;
}

.subtitle .aux {
    opacity: 0.6;
    /* 50% lower visual weight approx */
    transition: opacity 1.5s ease;
}

.subtitle.visible {
    opacity: 1;
}

.subtitle.brighten {
    animation: brightenText 1.5s forwards;
}

.subtitle-secondary {
    position: absolute;
    font-size: 1.2rem;
    /* Match and connector */
    font-weight: 300;
    color: var(--text-secondary);
    font-family: 'Noto Serif KR', serif;
    letter-spacing: 0.1rem;
    opacity: 0;
    transition: opacity 1s ease, filter 1s ease, font-size 1.5s ease;
    white-space: nowrap;
    filter: brightness(1.2);
}

.subtitle-secondary.visible {
    opacity: 1;
}

.subtitle-secondary.brighten {
    filter: brightness(2.5);
}

@keyframes brightenText {
    to {
        filter: brightness(3);
        text-shadow:
            0 0 10px #fff,
            0 0 20px #fff,
            0 0 40px var(--accent-1),
            0 0 60px var(--accent-1);
    }
}