/* ============================================================================
   CSS VARIABLES - Colors, Spacing, Transitions, Z-Index
   ============================================================================ */

:root {

    --white: rgb(255, 255, 255);
    --color-dark: rgb(26, 25, 26);
    --clear-bg: rgb(0,0,0,0);
    --mnav-bg: rgb(0,0,0,0.7);
    --mnav-line-f: rgba(255, 255, 255, 0.1);
    --mnav-line-h: rgba(255, 255, 255, 0.05);
    --ovrly-bg: rgb(0,0,0,0.5);
    --shadow: rgba(0, 0, 0, 0.3);

    --spacing-xs: 0.5rem;
    --spacing-sm: 1rem;
    --spacing-md: 1.5rem;
    --spacing-lg: 2rem;
    --spacing-xl: 3rem;
    --spacing-2xl: 4rem;
    --spacing-3xl: 5rem;

    --transition-fast: 0.15s ease-in-out;
    --transition-base: 0.25s ease-in-out;
    --transition-slow: 0.4s ease-in-out;
    --nav-transition: 0.3s ease-in-out;

    --z-base: 1;
    --z-dropdown: 100;
    --z-sticky: 200;
    --z-modal: 1000;
}

/* ============================================================================
   ANIMATIONS - Greeting Text Effects
   ============================================================================ */

@keyframes fadeInUp {
    from {
        opacity: 0;
        transform: translateY(20px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@keyframes glitch {
    0% {
        transform: translateX(0) skewX(0deg);
        text-shadow: 0 0 0 transparent;
        clip-path: inset(0 0 0 0);
    }
    10% {
        transform: translateX(-2px) skewX(-2deg);
        text-shadow: 2px 0 0 rgba(255, 0, 0, 0.7), -2px 0 0 rgba(0, 255, 255, 0.7);
        clip-path: inset(40% 0 20% 0);
    }
    20% {
        transform: translateX(2px) skewX(2deg);
        text-shadow: -2px 0 0 rgba(255, 0, 0, 0.7), 2px 0 0 rgba(0, 255, 255, 0.7);
        clip-path: inset(20% 0 40% 0);
    }
    35% {
        transform: translateX(-1px) skewX(1deg);
        text-shadow: 3px 0 0 rgba(255, 0, 0, 0.6), -3px 0 0 rgba(0, 255, 255, 0.6);
        clip-path: inset(60% 0 10% 0);
    }
    50% {
        transform: translateX(1px) skewX(-1deg);
        text-shadow: -1px 0 0 rgba(255, 0, 0, 0.5), 1px 0 0 rgba(0, 255, 255, 0.5);
        clip-path: inset(10% 0 60% 0);
    }
    65% {
        transform: translateX(-2px) skewX(2deg);
        text-shadow: 2px 0 0 rgba(255, 0, 0, 0.4), -2px 0 0 rgba(0, 255, 255, 0.4);
        clip-path: inset(30% 0 30% 0);
    }
    80% {
        transform: translateX(1px) skewX(-1deg);
        text-shadow: -1px 0 0 rgba(255, 0, 0, 0.3), 1px 0 0 rgba(0, 255, 255, 0.3);
        clip-path: inset(50% 0 20% 0);
    }
    100% {
        transform: translateX(0) skewX(0deg);
        text-shadow: 0 0 0 transparent;
        clip-path: inset(0 0 0 0);
    }
}

@keyframes wipeOutRed {
    0% { 
        clip-path: inset(0 0 0 0);
        transform: translateX(0);
    }
    100% { 
        clip-path: inset(0 0 0 100%);
        transform: translateX(3px);
    }
}

@keyframes wipeOutGreen {
    0% { 
        clip-path: inset(0 0 0 0);
        transform: translateX(0);
    }
    100% { 
        clip-path: inset(0 0 0 100%);
        transform: translateX(0);
    }
}

@keyframes wipeOutBlue {
    0% { 
        clip-path: inset(0 0 0 0);
        transform: translateX(0);
    }
    100% { 
        clip-path: inset(0 0 0 100%);
        transform: translateX(-3px);
    }
}

@keyframes wipeInRed {
    0% { 
        clip-path: inset(0 100% 0 0);
        transform: translateX(-3px);
    }
    100% { 
        clip-path: inset(0 0 0 0);
        transform: translateX(0);
    }
}

@keyframes wipeInGreen {
    0% { 
        clip-path: inset(0 100% 0 0);
        transform: translateX(0);
    }
    100% { 
        clip-path: inset(0 0 0 0);
        transform: translateX(0);
    }
}

@keyframes wipeInBlue {
    0% { 
        clip-path: inset(0 100% 0 0);
        transform: translateX(3px);
    }
    100% { 
        clip-path: inset(0 0 0 0);
        transform: translateX(0);
    }
}

/* ============================================================================
   BASE LAYOUT - Full Screen Configuration
   ============================================================================ */

html, body {
    margin: 0;
    padding: 0;
    height: 100vh;
    overflow: hidden;
}

/* ============================================================================
   FULLSCREEN OVERLAY SYSTEM - Background Images & Layers
   ============================================================================ */

.fullscreen-overlay {
    width: 100vw;
    height: 100vh;
    position: fixed;
    top: 0;
    left: 0;
    z-index: 0;
    overflow: hidden;
    pointer-events: none;
}

.overlay-container {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    pointer-events: none;
    z-index: 5;
    isolation: isolate;
}

.dark-overlay {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: var(--ovrly-bg);
    z-index: 9;
    pointer-events: none;
}

.overlay-image {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    opacity: 1;
    mix-blend-mode: screen;
    filter: brightness(1.3) contrast(1.2) blur(10px); 
    transform: scaleY(1) translateZ(0);
    will-change: transform, filter;
    backface-visibility: hidden;
    -webkit-backface-visibility: hidden;
}

/* ============================================================================
   TEXT OVERLAY - Greeting System & Typography
   ============================================================================ */

.text-overlay {
    position: absolute;
    inset: 0;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    pointer-events: none;
    z-index: 10;
    padding: var(--spacing-xl);
}

.main-text, .sub-text {
    text-align: center;
    font-family: 'Interstate', sans-serif;
    color: var(--white);
    margin: 0;
    text-wrap: nowrap;
}

.main-text {
    animation: fadeInUp 0.8s ease-out;
}

.sub-text.initial-load {
    animation: fadeInUp 0.8s ease-out;
}

.main-text {
    font-size: clamp(4rem, 10vw, 12rem);
    font-weight: 800;
    letter-spacing: 0.02em;
    line-height: 1;
    margin-bottom: var(--spacing-md);
    text-align: center;
    width: 100%;
}

.greeting-scroll-container {
    position: relative;
    height: 1.3em;
    overflow: hidden;
}

.greeting-wrapper {
    display: flex;
    flex-direction: column;
    transition: transform 0.9s cubic-bezier(0.4, 0, 0.2, 1);
    transform: translateY(0);
}

.scrolling-greeting {
    flex-shrink: 0;
    height: 1.3em;
    display: flex;
    align-items: center;
    justify-content: center;
    white-space: nowrap;
    font-weight: 800;
    line-height: 1.2;
}

.scrolling-greeting.glitch {
    animation: glitch 0.15s ease-in-out;
}

.sub-text {
    font-size: clamp(1rem, 2vw, 1.5rem);
    font-weight: 400;
    letter-spacing: 0.05em;
    opacity: 0.95;
    max-width: 600px;
    line-height: 1.4;
    text-shadow: 0 1px 10px var(--shadow);
    position: relative;
    white-space: nowrap;
}

.sub-text.wipe-out::before,
.sub-text.wipe-out::after {
    content: attr(data-text);
    position: absolute;
    left: 0;
    top: 0;
    font-size: inherit;
    font-weight: inherit;
    letter-spacing: inherit;
    line-height: inherit;
    white-space: nowrap;
}

.sub-text.wipe-out::before {
    color: rgb(255, 0, 0);
    animation: wipeOutRed 0.6s cubic-bezier(0.4, 0, 0.2, 1) forwards;
    mix-blend-mode: lighten;
}

.sub-text.wipe-out::after {
    color: rgb(0, 255, 0);
    animation: wipeOutGreen 0.6s 0.05s cubic-bezier(0.4, 0, 0.2, 1) forwards;
    mix-blend-mode: lighten;
}

.sub-text.wipe-out {
    color: rgb(0, 0, 255);
    animation: wipeOutBlue 0.6s 0.1s cubic-bezier(0.4, 0, 0.2, 1) forwards;
}

.sub-text.wipe-in::before,
.sub-text.wipe-in::after {
    content: attr(data-text);
    position: absolute;
    left: 0;
    top: 0;
    font-size: inherit;
    font-weight: inherit;
    letter-spacing: inherit;
    line-height: inherit;
    white-space: nowrap;
}

.sub-text.wipe-in::before {
    color: rgb(255, 0, 0);
    animation: wipeInRed 0.6s cubic-bezier(0.4, 0, 0.2, 1) forwards;
    mix-blend-mode: lighten;
}

.sub-text.wipe-in::after {
    color: rgb(0, 255, 0);
    animation: wipeInGreen 0.6s 0.05s cubic-bezier(0.4, 0, 0.2, 1) forwards;
    mix-blend-mode: lighten;
}

.sub-text.wipe-in {
    color: rgb(0, 0, 255);
    animation: wipeInBlue 0.6s 0.1s cubic-bezier(0.4, 0, 0.2, 1) forwards;
}


/* ============================================================================
   RESPONSIVE DESIGN - Mobile & Tablet Adjustments
   ============================================================================ */

@media (max-width: 768px) {
    .text-overlay {
        padding: var(--spacing-md);
    }

    .main-text {
        font-size: clamp(2.5rem, 10vw, 5rem);
        flex-wrap: nowrap;
        gap: 0.2em;
        max-width: 95vw; 
    }

    .greeting-scroll-container {
        max-width: 95vw; 
        height: 1.5em;
    }

    .scrolling-greeting {
        text-align: center;
        padding: 0 0.5rem; 
        height: 1.5em;
    }

    .sub-text {
        font-size: clamp(0.9rem, 3vw, 1.2rem);
        max-width: 90vw; 
    }
}

@media (min-width: 769px) and (max-width: 1024px) {
    .main-text {
        font-size: clamp(4rem, 10vw, 8rem);
    }

    .sub-text {
        font-size: clamp(1rem, 2.5vw, 1.3rem);
    }
}