/* ===================================
   RESET & BASE STYLES
   =================================== */

:root {
    --text-scale: 0.98; /* Change this value to scale all text sizes (e.g., 1.2 for 20% larger, 0.8 for 20% smaller) */
    --base-width: 2070;
    --base-height: 1300;
}

*,
*::before,
*::after {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

html {
    scroll-behavior: smooth;
    overflow-x: hidden;
    overflow-y: auto;
}

body {
    --background-color: #1F032C;
    font-family: 'Jost', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
    color: #ffffff;
    overflow-x: hidden;
    overflow-y: auto;
    background: var(--background-color); /* linear-gradient(135deg, #1a0b2e 0%, #2d1654 100%); */
    background-attachment: fixed;
    background-size: 100% 100%;
    margin: 0;
    padding: 0;
}

/* ===================================
   ASPECT RATIO CONTAINER (2070×1300px)
   =================================== */
#viewport-container {
    width: 100%;
    min-height: 100vh;
    position: relative;
}

#scaled-container {
    width: calc(var(--base-width) * 1px);
    height: calc(var(--base-height) * 1px);
    position: fixed;
    top: 50%;
    left: 50%;
    transform-origin: center center;
    background: #1F032C;
}

#scaled-container::before {
    content: '';
    position: absolute;
    top: -100px;
    left: 0;
    width: 100%;
    height: 150px;
    background: linear-gradient(to bottom, var(--background-color) 0%, rgba(31, 3, 44, 0.95) 30%, transparent 100%);
    z-index: 1000;
    pointer-events: none;
}

#scaled-container::after {
    content: '';
    position: absolute;
    bottom: -100px;
    left: 0;
    width: 100%;
    height: 150px;
    background: linear-gradient(to top, var(--background-color) 0%, rgba(31, 3, 44, 0.95) 30%, transparent 100%);
    z-index: 1000;
    pointer-events: none;
}

.scale-cover {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    z-index: 1000;
    pointer-events: none;
}

.scale-cover:before {
    content: '';
    position: absolute;
    bottom: calc(100% + 99px);
    left: 0;
    width: 100%;
    height: 2500px;
    background: var(--background-color);
    z-index: 1000;
    pointer-events: none;
}

.scale-cover:after {
    content: '';
    position: absolute;
    top: calc(100% + 99px);
    left: 0;
    width: 100%;
    height: 2500px;
    background: var(--background-color);
    z-index: 1000;
    pointer-events: none;
}

.scale-cover-left {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    z-index: 1000;
    pointer-events: none;
}

.scale-cover-left:before {
    content: '';
    position: absolute;
    top: 0;
    left: -100px;
    width: 150px;
    height: 100%;
    background: linear-gradient(to right, var(--background-color) 0%, rgba(31, 3, 44, 0.95) 30%, transparent 100%);
    z-index: 1000;
    pointer-events: none;
}

.scale-cover-left:after {
    content: '';
    position: absolute;
    top: 0;
    right: calc(100% + 99px);
    width: 2500px;
    height: 100%;
    background: var(--background-color);
    z-index: 1000;
    pointer-events: none;
}

.scale-cover-right {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    z-index: 1000;
    pointer-events: none;
}

.scale-cover-right:before {
    content: '';
    position: absolute;
    top: 0;
    right: -100px;
    width: 150px;
    height: 100%;
    background: linear-gradient(to left, var(--background-color) 0%, rgba(31, 3, 44, 0.95) 30%, transparent 100%);
    z-index: 1000;
    pointer-events: none;
}

.scale-cover-right:after {
    content: '';
    position: absolute;
    top: 0;
    left: calc(100% + 99px);
    width: 2500px;
    height: 100%;
    background: var(--background-color);
    z-index: 1000;
    pointer-events: none;
}

/* ===================================
   VERTICAL TIMELINE
   =================================== */
.timeline {
    position: fixed;
    left: calc((-207 / var(--base-width)) * 100vw);
    top: calc(3.83vw * 2.5);
    height: calc(((1200 / var(--base-height)) * 100vh) - (3.83vw * 2.5));
    z-index: 100;
    pointer-events: none;
}

.timeline-line {
    position: absolute;
    left: 0;
    top: 0;
    width: 1px;
    height: 100%;
    background-color: transparent;
    border-left: 1px solid #E8405C;
    transform: translateX(-50%);
}


.timeline-marker {
    position: absolute;
    left: 0;
    display: flex;
    align-items: center;
    gap: calc((10.35 / var(--base-width)) * 100vw);
    transform: translateY(-50%);
    pointer-events: auto;
    cursor: pointer;
}

.timeline-marker:hover .timeline-dot {
    transform: translateX(-50%) scale(1.5) !important;
}

.timeline-marker:hover .timeline-label {
    opacity: 1 !important;
}

.timeline-dot {
    width: calc((10.35 / var(--base-width)) * 100vw);
    height: calc((10.35 / var(--base-width)) * 100vw);
    border-radius: 50%;
    background-color: #E8405C;
    border: 1px solid #E8405C;
    position: relative;
    left: 0px;
    transform: translateX(-50%);
    transition: transform 0.3s ease;
}

.timeline-label {
    font-family: 'Jost', sans-serif;
    font-size: calc(min(100vw / var(--base-width), 100vh / var(--base-height)) * 25.875 * var(--text-scale));
    font-weight: 400;
    color: #ffffff; /* #E8405C; */
    letter-spacing: 0;
    white-space: nowrap;
    opacity: 0;
    transition: opacity 0.3s ease;
}

/* Timeline marker positions */
.timeline-marker[data-time="0h"] { top: calc((0 / var(--base-height)) * 100vh + 0% * (100% - ((393.3 / var(--base-height)) * 100vh)) / 100%); }
.timeline-marker[data-time="12h"] { top: calc(((20.7 / var(--base-height)) * 100vh) + 0.19% * (100% - ((393.3 / var(--base-height)) * 100vh)) / 100%); }
.timeline-marker[data-time="24h"] { top: calc(((41.4 / var(--base-height)) * 100vh) + 0.38% * (100% - ((393.3 / var(--base-height)) * 100vh)) / 100%); }
.timeline-marker[data-time="5d"] { top: calc(((62.1 / var(--base-height)) * 100vh) + 1.88% * (100% - ((393.3 / var(--base-height)) * 100vh)) / 100%); }
.timeline-marker[data-time="21d"] { top: calc(((82.8 / var(--base-height)) * 100vh) + 7.89% * (100% - ((393.3 / var(--base-height)) * 100vh)) / 100%); }
.timeline-marker[data-time="26d"] { top: calc(((103.5 / var(--base-height)) * 100vh) + 9.77% * (100% - ((393.3 / var(--base-height)) * 100vh)) / 100%); }
.timeline-marker[data-time="28d"] { top: calc(((124.2 / var(--base-height)) * 100vh) + 10.53% * (100% - ((393.3 / var(--base-height)) * 100vh)) / 100%); }
.timeline-marker[data-time="36d"] { top: calc(((144.9 / var(--base-height)) * 100vh) + 13.53% * (100% - ((393.3 / var(--base-height)) * 100vh)) / 100%); }
.timeline-marker[data-time="40d"] { top: calc(((165.6 / var(--base-height)) * 100vh) + 15.04% * (100% - ((393.3 / var(--base-height)) * 100vh)) / 100%); }
.timeline-marker[data-time="44d"] { top: calc(((186.3 / var(--base-height)) * 100vh) + 16.54% * (100% - ((393.3 / var(--base-height)) * 100vh)) / 100%); display: none; }
.timeline-marker[data-time="48d"] { top: calc(((207 / var(--base-height)) * 100vh) + 16.05% * (100% - ((393.3 / var(--base-height)) * 100vh)) / 100%); }
.timeline-marker[data-time="52d"] { top: calc(((227.7 / var(--base-height)) * 100vh) + 18.55% * (100% - ((393.3 / var(--base-height)) * 100vh)) / 100%); }
.timeline-marker[data-time="54d"] { top: calc(((248.4 / var(--base-height)) * 100vh) + 20.30% * (100% - ((393.3 / var(--base-height)) * 100vh)) / 100%); }
.timeline-marker[data-time="9w"] { top: calc(((269.1 / var(--base-height)) * 100vh) + 23.68% * (100% - ((393.3 / var(--base-height)) * 100vh)) / 100%); }
.timeline-marker[data-time="10w"] { top: calc(((289.8 / var(--base-height)) * 100vh) + 26.32% * (100% - ((393.3 / var(--base-height)) * 100vh)) / 100%); }
.timeline-marker[data-time="12w"] { top: calc(((310.5 / var(--base-height)) * 100vh) + 31.58% * (100% - ((393.3 / var(--base-height)) * 100vh)) / 100%); }
.timeline-marker[data-time="16w"] { top: calc(((331.2 / var(--base-height)) * 100vh) + 42.11% * (100% - ((393.3 / var(--base-height)) * 100vh)) / 100%); }
.timeline-marker[data-time="20w"] { top: calc(((351.9 / var(--base-height)) * 100vh) + 52.63% * (100% - ((393.3 / var(--base-height)) * 100vh)) / 100%); }
.timeline-marker[data-time="28w"] { top: calc(((372.6 / var(--base-height)) * 100vh) + 73.68% * (100% - ((393.3 / var(--base-height)) * 100vh)) / 100%); }
.timeline-marker[data-time="38w"] { top: calc(((393.3 / var(--base-height)) * 100vh) + 100% * (100% - ((393.3 / var(--base-height)) * 100vh)) / 100%); }

/* Firefox-specific timeline positions - percentages relative to timeline container */
@-moz-document url-prefix() {
    .timeline-marker[data-time="0h"] { top: 0%; }
    .timeline-marker[data-time="12h"] { top: 1.87%; }
    .timeline-marker[data-time="24h"] { top: 3.74%; }
    .timeline-marker[data-time="5d"] { top: 6.60%; }
    .timeline-marker[data-time="21d"] { top: 12.86%; }
    .timeline-marker[data-time="26d"] { top: 16.01%; }
    .timeline-marker[data-time="28d"] { top: 18.31%; }
    .timeline-marker[data-time="36d"] { top: 22.30%; }
    .timeline-marker[data-time="40d"] { top: 25.17%; }
    .timeline-marker[data-time="44d"] { top: 28.03%; }
    .timeline-marker[data-time="48d"] { top: 30.89%; }
    .timeline-marker[data-time="52d"] { top: 33.75%; }
    .timeline-marker[data-time="54d"] { top: 36.04%; }
    .timeline-marker[data-time="9w"] { top: 40.32%; }
    .timeline-marker[data-time="10w"] { top: 44.04%; }
    .timeline-marker[data-time="12w"] { top: 49.75%; }
    .timeline-marker[data-time="16w"] { top: 59.42%; }
    .timeline-marker[data-time="20w"] { top: 69.09%; }
    .timeline-marker[data-time="28w"] { top: 86.74%; }
    .timeline-marker[data-time="38w"] { top: 100%; }
}

/* ===================================
   SCROLL CONTAINER
   =================================== */
.slides-container {
    height: calc(var(--base-height) * 1px);
    width: calc(var(--base-width) * 1px);
    overflow: hidden;
    position: relative;
}

/* ===================================
   INDIVIDUAL SLIDES
   =================================== */
.slide {
    height: calc(var(--base-height) * 1px);
    width: calc(var(--base-width) * 1px);
    position: fixed;
    top: 0;
    left: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    opacity: 0;
}

/* ===================================
   SLIDE 1: TITLE SLIDE SPECIFIC
   =================================== */

.logo {
    position: fixed;
    top: calc((51.75 / var(--base-width)) * 100vw);
    left: calc((51.75 / var(--base-width)) * 100vw);
    z-index: 100;
}

.logo a {
    display: inline-block;
    line-height: calc(0 * var(--text-scale));
}

.logo-img {
    width: 3.83vw;
    height: auto;
    cursor: pointer;
    transition: transform 0.3s ease;
    display: block;
}

.logo a:hover .logo-img {
    transform: scale(1.1);
}

#slide-1 .slide-content {
    display: flex;
    width: 1524.141px;
    padding: 0;
    align-items: center;
    justify-content: space-between;
    gap: 85.698px;
    margin: 0 auto;
    position: relative;
    z-index: 10;
}

#slide-1 .left-side {
    width: 677.925px;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}

#slide-1 .main-title-svg {
    width: 100%;
    height: auto;
}

#slide-1 .right-side {
    width: 760.518px;
    flex-shrink: 0;
}

#slide-1 .section-title {
    font-family: 'Jost', sans-serif;
    font-size: calc(54.855px * var(--text-scale));
    font-weight: 400;
    line-height: calc(1.2 * var(--text-scale));
    margin-bottom: calc(10.35px * var(--text-scale));
    letter-spacing: 0;
}

#slide-1 .section-text {
    font-family: 'Crimson Text', serif;
    font-size: calc(43.056px * var(--text-scale));
    line-height: calc(1.4 * var(--text-scale));
    font-weight: 400;
    color: #ffffff;
    letter-spacing: 0;
    margin-top: 10px;
}

#slide-1 .scroll-indicator {
    position: absolute;
    bottom: 62.1px;
    left: 50%;
    transform: translateX(-50%);
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 10.35px;
    z-index: 10;
}

#slide-1 .scroll-text {
    font-family: 'Jost', sans-serif;
    font-size: calc(24.84px * var(--text-scale));
    font-weight: 400;
    color: #E8405C;
    letter-spacing: 0;
    margin: 0;
}

#slide-1 .scroll-arrow {
    width: calc(14.49px * var(--text-scale));
    height: auto;
    animation: bounce 2s ease-in-out infinite;
}

@keyframes bounce {
    0%, 100% {
        transform: translateY(0);
    }
    50% {
        transform: translateY(16.56px);
    }
}

p[data-text="init"] span {
    display: block;
}

p[data-text="init"] span:nth-of-type(2) {
    transform: translateY(300%);
    opacity: 0;
}

p[data-text="init"] span:nth-of-type(3) {
    transform: translateY(300%);
    opacity: 0;
}

/* ===================================
   SLIDE 2: OVULE ILLUSTRATION
   =================================== */
#slide-2 .slide-content {
    display: flex;
    width: 1448.172px;
    padding: 0;
    align-items: center;
    justify-content: space-between;
    gap: 190.854px;
    margin: 0 auto;
    position: relative;
    z-index: 10;
}

#slide-2 .left-side {
    width: 539.235px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    position: relative;
    gap: 41.4px;
    margin-right: 71.829px;
    margin-left: 71.829px;
}

#slide-2 .stage-label,
.stage-label-mobile {
    font-family: 'Jost', sans-serif;
    font-size: calc(43.056px * var(--text-scale));
    font-weight: 700;
    color: #E8405C;
    letter-spacing: 2px;
    margin: 0;
    position: absolute;
    top: 0px;
    transform: translateY(0%);
    z-index: 2;
}

#slide-2 .stage-label span,
.stage-label-mobile span {
    position: absolute;
    display: block;
    top: 0px;
    left: 0px;
    white-space: nowrap;
    transform: translateX(-50%) translateY(-100%);
    opacity: 0;
}

#slide-2 .black-gradient-bg {
    position: absolute;
    width: 100%;
    height: auto;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%) scale(1.5);
    z-index: 0;
    opacity: 0;
}

#slide-2 .ovule-illustration {
    width: 100%;
    height: auto;
    display: block;
    position: relative;
    z-index: 1;
}

#slide-2 .left-side > img:not(.black-gradient-bg):not(.ovule-illustration) {
    width: 100%;
    height: auto;
    display: block;
    position: absolute;
    top: 50%;
    left: 50%;
    opacity: 0;
    z-index: 1;
}

#slide-2 .heartbeat-pulse {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: 31.05px;
    height: 31.05px;
    z-index: 10;
    opacity: 0;
}

#slide-2 .pulse-image {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    height: 100%;
    z-index: 3;
}

#slide-2 .pulse-ring {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    border-radius: 50%;
    background-color: #E8405C;
    width: 200%;
    height: 200%;
}

#slide-2 .pulse-ring-middle {
    animation: heartbeat-pulse-1 1.5s ease-out infinite;
}

#slide-2 .pulse-ring-outer {
    animation: heartbeat-pulse-2 1.5s ease-out infinite;
    animation-delay: 0.1s;
}

@keyframes heartbeat-pulse-1 {
    0% {
        transform: translate(-50%, -50%) scale(1);
        opacity: 0;
    }
    40% {
        transform: translate(-50%, -50%) scale(1.75);
        opacity: 0.5;
    }
    80% {
        transform: translate(-50%, -50%) scale(1);
        opacity: 0;
    }
    100% {
        transform: translate(-50%, -50%) scale(1);
        opacity: 0;
    }
}

@keyframes heartbeat-pulse-2 {
    0% {
        transform: translate(-50%, -50%) scale(1);
        opacity: 0;
    }
    40% {
        transform: translate(-50%, -50%) scale(1.5);
        opacity: 0.75;
    }
    80% {
        transform: translate(-50%, -50%) scale(1);
        opacity: 0;
    }
    100% {
        transform: translate(-50%, -50%) scale(1);
        opacity: 0;
    }
}

.size-info {
    position: absolute;
    bottom: 0;
    left: 50%;
    transform: translate(-50%, 150%);
    z-index: 2;
    opacity: 0;
    width: 414px;
    height: 82.8px;
}

.size-info-left {
    position: absolute;
    left: 113.85px;
    width: 186.3px;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 4.14px;
}

.size-info-separator {
    position: absolute;
    left: 207px;
    top: 50%;
    transform: translateY(-50%);
    width: 1px;
    height: 52.45px;
    background-color: #E8405C;
    opacity: 0;
}

.size-info-right {
    position: absolute;
    left: 113.85px;
    width: 186.3px;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 4.14px;
    opacity: 0;
}

.size-label {
    font-family: 'Jost', sans-serif;
    font-size: calc(22.977px * var(--text-scale));
    font-weight: 400;
    color: #E8405C;
    letter-spacing: 0;
    text-transform: uppercase;
}

.size-value {
    font-family: 'Jost', sans-serif;
    font-size: calc(25.875px * var(--text-scale));
    font-weight: 400;
    color: #FFFFFF;
    letter-spacing: 0;
    white-space: nowrap;
}

#slide-2 .right-side {
    width: 650px; /* 574.425px; */
    flex-shrink: 0;
    height: 555px;
    position: relative;
    display: flex;
    align-items: center;
}

#slide-2 .right-side p {
    position: absolute;
    top: 0;
    bottom: 0;
    margin: auto;
    height: fit-content;
    line-height: calc(1.3 * var(--text-scale));
}

#slide-2 .right-side p > img {
    height: 222px;
}

#slide-2 .section-text {
    font-family: 'Jost', sans-serif;
    font-size: calc(30.1806px * var(--text-scale));
    line-height: calc(1.6 * var(--text-scale));
    font-weight: 400;
    color: #ffffff;
    letter-spacing: 0;
}

#eye-closing-animation {
    position: relative;
    height: 250px;
    margin: 0 auto;
    margin-left: -20px;
    display: block;
}

#eye-closing-animation img {
    height: 100%;
    top: 0;
    left: 0;
}

#eye-opening-animation {
    position: relative;
    height: 250px;
    margin: 0 auto;
    margin-left: -20px;
    display: block;
}

#eye-opening-animation img {
    height: 100%;
    top: 0;
    left: 0;
}

/* Sperms */
#slide-2 .sperm {
    position: absolute;
    width: 165.6px;
    height: auto;
    opacity: 1;
    z-index: 50;
    transform-origin: 99.1% 0.6%; /* Head position: (223/225, 1/157) */
    transform: scale(1.5);
}

/* Sperm 1 - Main sperm from bottom left corner to ovule */
#slide-2 .sperm-1 {
    top: 87%;
    left: -20%;
}

/* Sperm 2 - From top 25% down to left side at 70% */
#slide-2 .sperm-2 {
    top: -20%;
    left: 25%;
}

/* Sperm 3 - From bottom 35vw to top 65vw */
#slide-2 .sperm-3 {
    top: 130%;
    left: 724.5px;
}

/* Sperm 4 - From bottom right 95vw to top 50vw */
#slide-2 .sperm-4 {
    top: 110%;
    left: 1966.5px;
}

#slide-2 [data-text="10w"] > img {
    max-width: 414px;
}

/* ===================================
   GENERIC SLIDE CONTENT
   =================================== */
.slide-content {
    padding: 51.75px;
    width: 100%;
}

.slide-content.centered {
    text-align: center;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    height: 100%;
}

.slide-content h2 {
    font-size: clamp(calc(32px * var(--text-scale)), calc(5vw * var(--text-scale)), calc(48px * var(--text-scale)));
    margin-bottom: 20px;
    font-weight: 600;
}

.slide-content p {
    font-size: clamp(calc(16px * var(--text-scale)), calc(2vw * var(--text-scale)), calc(20px * var(--text-scale)));
    line-height: calc(1.6 * var(--text-scale));
    color: #d0d0d0;
}

/* ===================================
   SLIDE 3: STATISTICS
   =================================== */
#slide-3 {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 0px;
}

.slide-3-title {
    font-family: 'Jost', sans-serif;
    font-size: calc(54.855px * var(--text-scale));
    font-weight: 400;
    color: #E8405C;
    letter-spacing: 0.1em;
    margin: 0;
    text-align: center;
}

.slide-3-sources {
    display: block;
    position: fixed;
    bottom: calc(41.4 / var(--base-height) * 100vh);
    right: calc(51.75 / var(--base-width) * 100vw);
    font-family: 'Jost', sans-serif;
    font-size: calc(min(100vw / var(--base-width), 100vh / var(--base-height)) * 37.26 * 0.5 * var(--text-scale));
    font-weight: 500;
    color: #ffffff;
    opacity: 0;
    margin: 0;
    text-align: right;
    max-width: 1242px;
    line-height: calc(1.4 * var(--text-scale));
}

.stats-container {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 41.4px;
    padding: 41.4px;
}

.stat-item {
    text-align: center;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0px;
}

.stat-number {
    font-family: 'Jost', sans-serif;
    font-size: calc(72.45px * var(--text-scale));
    font-weight: 400;
    color: #FFFFFF;
    margin: 0;
    letter-spacing: 0;
}

.stat-text {
    font-family: 'Jost', sans-serif;
    font-size: calc(31.05px * var(--text-scale));
    font-weight: 400;
    color: #FFFFFF;
    margin: 0;
    line-height: calc(1.1 * var(--text-scale));
    letter-spacing: 0;
    min-height: 3em;
}

.stat-separator {
    width: 62.1px;
    height: 2px;
    background-color: #E8405C;
    margin-top: 31.05px;
}

/* ===================================
   SCROLLBAR STYLING
   =================================== */
.slides-container::-webkit-scrollbar {
    width: 8px;
}

.gsap-marker-start,
.gsap-marker-end,
.gsap-marker-scroller-start,
.gsap-marker-scroller-end {
    opacity: 0;
    pointer-events: none;
}

/* ===================================
   LOADING STATE (Optional)
   =================================== */
body.loading {
    overflow: hidden;
}

/* ===================================
   MODE CHANGE OVERLAY
   =================================== */
.mode-change-overlay {
    position: fixed;
    top: 0;
    left: 0;
    width: 100vw;
    height: 100vh;
    background-color: var(--background-color);
    z-index: 10000;
    display: flex;
    align-items: center;
    justify-content: center;
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.1s ease;
}

.mode-change-overlay.active {
    opacity: 1;
    pointer-events: all;
}

.mode-change-message {
    font-family: 'Jost', sans-serif;
    font-size: calc(48px * var(--text-scale));
    font-weight: 700;
    color: #ffffff;
    opacity: 0;
    transform: scale(0.9);
    transition: opacity 0.1s ease, transform 0.1s ease;
}

.mode-change-overlay.active .mode-change-message {
    opacity: 1;
    transform: scale(1);
}

body.fade-out {
    opacity: 0;
}

/* ===================================
   SCROLL SPACER
   =================================== */
#scroll-spacer {
    height: 15000px;
    width: 1px;
    position: absolute;
    top: 0;
    left: 0;
    pointer-events: none;
    opacity: 0;
}

.stage-label-mobile {
    display: none;
}

.stage-zoom {
    display: none;
}


/* ===================================
   RESPONSIVE STYLES - MOBILE/TABLET (up to 768px)
   =================================== */
@media screen and (max-width: 768px) {
    /* ===================================
        ASPECT RATIO CONTAINER (1140px X 2055px)
        =================================== */
    
    :root {
        --text-scale: 1.45;
        --base-width: 1140;
        --base-height: 2055;
    }

    .logo-img {
        width: 10vw;
    }

    #slide-1 .left-side,
    #slide-1 .right-side {
        width: 100%
    }

    #slide-1 .scroll-indicator {
        bottom: 80px;
    }

    #slide-1 .slide-content,
    #slide-2 .slide-content {
        flex-direction: column;
        width: calc(100% - 30%);
    }

    #slide-2 .slide-content {
        gap: 40vh;
    }

    #slide-2 .right-side {
        justify-content: center;
        text-align: center;
        transform: translateY(140px);
        width: 750px;
    }
    #slide-2 .right-side p {
        text-align: center;
        top: 140px;
        line-height: 1.4;
    }

    .timeline {
        top: calc(10vw * 2.5);
        height: calc(((1900 / var(--base-height)) * 100vh) - (10vw * 2.5))
    }

    .mode-change-message {
        font-size: calc(24px * var(--text-scale));
    }

    #slide-2 .sperm-4 {
        top: 110%;
        left: 800px;
    }

    #slide-2 .sperm-1 {
        top: 60%;
        left: -20%;
    }

    #scroll-spacer {
        height: 15000px;
    }

    #slide-1 .right-side p br {
        display: none;
    }

    #slide-1 .right-side p span:nth-child(4) {
        display: block;
        transform: translateY(5vh);
    }

    .timeline-marker:hover .timeline-dot {
        transform: translateX(-50%) scale(2) !important;
    }

    #eye-closing-animation,
    #eye-opening-animation {
        margin-left: 0px !important;
        height: 320px;
    }

    #eye-closing-animation img,
    #eye-opening-animation img {
        left: 50% !important;
        transform: translateX(-50%)!important;
    }

    #eye-opening-animation {
        
    }

    #slide-1 .section-text {
        line-height: calc(1.1 * var(--text-scale));
    }

    #slide-2 .stage-label {
        display: none;
    }

    .stage-label-mobile {
        display: block;
        position: fixed;
        top: 25vw;
        left: 50%;
        transform: none;
        font-size: calc(17px * var(--text-scale));
        letter-spacing: 3px;
    }

    .stage-label-mobile span {
        transform: translateX(-50%) translateY(-50%);
        pointer-events: none;
    }

    .timeline .timeline-line {
        display: none;
    }

    .timeline .timeline-dot {
        display: none;
    }

    .timeline {
        top: calc(25vh);
    }

    .timeline-marker {
        top: 0px !important;
    }

    .timeline-marker .timeline-label {
        position: relative;
    }

    .timeline-marker .timeline-label:before {
        content: "";
        position: absolute;
        border: 1px solid #E8405C;
        width: 200%;
        height: 150%;
        right: -10%;
        top: 50%;
        transform: translateY(-50%)
    }

    .size-info {
        position: initial;
        margin-top: 30px;
        width: auto;
        height: auto;
        transform: none !important;
    }

    .size-info-left {
        position: initial;
        width: auto;
        align-items: initial;
        margin-bottom: 20px;
    }

    .size-info-separator {
        display: none !important;
    }

    .size-info-right {
        position: initial;
        width: auto;
        align-items: initial;
    }

    .size-label {
        font-size: calc(min(100vw / var(--base-width), 100vh / var(--base-height)) * 22.977 * var(--text-scale));
    }

    .size-value {
        font-size: calc(min(100vw / var(--base-width), 100vh / var(--base-height)) * 25.875 * var(--text-scale));
    }

    #slide-2 .right-side p > img {
        height: 280px;
        margin-bottom: -35px;
    }

    .stage-zoom {
        position: absolute;
        display: block;
        left: 50%;
        top: 50%;
        transform: translateX(-50%);
        height: 650px;
        width: 100%;
    }

    .stage-zoom > div {
        position: absolute;
        top: 15%;
        left: 50%;
        width: 1px;
        height: calc(107% - 15%);
        background-color: rgb(146, 136, 172);
        transform-origin: 100% 0%;
        transform: translateX(-30px) rotate(22deg);
        height: 0%;
    }

    .stage-zoom > div:nth-child(2) {
        transform: translateX(30px) rotate(-22deg);
    }

    .stage-zoom > span {
        display: block;
        position: absolute;
        bottom: 0px;
        left: 50%;
        transform: translateX(-50%) translateY(-200%);
        font-size: calc(30.1806px * var(--text-scale));
        letter-spacing: 3px;
        color: rgb(146, 136, 172);
        opacity: 0;
    }

    .slide-3-sources {
        font-size: calc(min(100vw / var(--base-width), 100vh / var(--base-height)) * 24.84 * 0.5 * var(--text-scale));
        right: auto;
        left: 50%;
        text-align: center;
        transform: translateX(-50%);
        line-height: 1.5vh;
    }
}
