body {
    min-height: 100vh;
    background-color: #000;
    color: #eee;
    font-family: 'Inter', system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    margin: 0;
    overflow-x: hidden !important;
}

.mobile-scroll-progress {
    display: none;
}

/* Portrait-narrow chapter flow only (`FT_SCROLL_LAYOUT` sets data-ft-scroll on <html>). */
html[data-ft-scroll="mobile-portrait"] .mobile-scroll-progress {
    display: block;
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 3px;
    background: rgba(255, 255, 255, 0.14);
    z-index: 2400;
    pointer-events: none;
    /* Stay on compositor; JS may set translate3d from Visual Viewport API (iOS Safari). */
    will-change: transform;
    backface-visibility: hidden;
}

html[data-ft-scroll="mobile-portrait"] .mobile-scroll-progress-bar {
    width: 0%;
    height: 100%;
    background: #fff;
    transition: width 90ms linear;
}

/* About page light theme overrides (only about.html uses .about-page on body) */
body.about-page {
    background-color: #fff;
    color: #000;
    padding-top: 12vh;
}

body.about-page .about-headline {
    margin-left: 2vw;
}

body.about-page .navbar,
body.about-page .navbar.show-on-scroll-up {
    background-color: #fff;
    color: #000;
}

body.about-page .navbar nav ul li a,
body.about-page .navbar.show-on-scroll-up nav ul li a {
    color: #000;
}

body.about-page .overlay {
    background: rgba(255, 255, 255, 0.55);
}

body.about-page .text,
body.about-page .text h2,
body.about-page .text p,
body.about-page .content,
body.about-page .content h1,
body.about-page .content h4 {
    color: #000;
}

body.about-page .cta,
body.about-page a {
    color: #000;
}

/* About page layout tweaks */
body.about-page .about .text {
    max-width: 760px;
    margin: 0 auto 0 2vw;
    padding: 0 4vw 0 0;
}

body.about-page .footer-inner {
    max-width: 760px;
    margin: 0 auto 0 0vw;
    padding: 0 4vw 0 0;
}

body.about-page .about .text p {
    font-weight: 300;
}

body.about-page footer svg .uuid-ee4c8b08-8041-4437-9896-336877966253 {
    fill: #000 !important;
}

/* Hover spectral gradient (red/orange/purple/darkblue) */
:root {
    --spectral-red: #ff2a2a;
    --spectral-orange: #ff7a18;
    --spectral-purple: #7a2bff;
    --spectral-deepblue: #071a4a;
}

@keyframes spectral-hue-loop {
    0%   { background-position: 0% 50%; }
    50%  { background-position: 100% 50%; }
    100% { background-position: 0% 50%; }
}

/* Apply to any element you want “animated gradient text” on hover */
.hover-spectral {
    transition: filter 220ms ease-out;
}

.hover-spectral:hover {
    background-image: linear-gradient(
        110deg,
        var(--spectral-red) 0%,
        var(--spectral-orange) 22%,
        var(--spectral-purple) 56%,
        var(--spectral-deepblue) 100%
    );
    background-size: 260% 200%;
    animation: spectral-hue-loop 6.5s ease-in-out infinite;
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
    color: transparent;
    filter: drop-shadow(0 0 16px rgba(0,0,0,0.35));
}

/* Scene 1: The Spark */
.scene-spark {
    position: relative;
    width: 100%;
    height: 100vh;
    background-color: #000;
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
}

.spark-fire-video {
    position: absolute;
    left: 50%;
    top: 58%;
    width: min(580px, 86vw);
    height: min(52vh, 420px);
    transform: translate(-50%, -72%);
    object-fit: contain;
    object-position: center center;
    opacity: 0;
    z-index: 4;
    pointer-events: none;
    mix-blend-mode: lighten; /* Illustrator-like Lighten compositing */
    filter: saturate(1.15) contrast(1.02) brightness(1.02);
    transition: opacity 420ms ease-out;
}

.spark-inner {
    position: relative;
    text-align: center;
    z-index: 2;
}

.spark-flame {
    position: absolute;
    left: 50%;
    top: 50%;
    width: 24px;
    height: 24px;
    border-radius: 999px;
    transform: translate(-50%, -50%);
    pointer-events: none;
    z-index: 1;
    opacity: 0;
    mix-blend-mode: screen;
    filter: blur(0.2px) saturate(1.25);
    background:
        radial-gradient(circle at 50% 40%,
            rgba(255, 255, 255, 0.95) 0%,
            rgba(255, 215, 120, 0.75) 22%,
            rgba(255, 120, 0, 0.55) 45%,
            rgba(255, 40, 0, 0.25) 65%,
            rgba(255, 0, 0, 0.0) 78%),
        radial-gradient(circle at 50% 65%,
            rgba(255, 60, 0, 0.35) 0%,
            rgba(255, 0, 0, 0.0) 70%);
}

.spark-flame.is-flaming {
    opacity: 1;
    animation: spark-flame-flicker 900ms ease-in-out infinite;
}

@keyframes spark-flame-flicker {
    0%   { transform: translate(-50%, -50%) scale(0.96); filter: blur(0.25px) saturate(1.35); }
    30%  { transform: translate(-50%, -50%) scale(1.06); filter: blur(0.15px) saturate(1.55); }
    60%  { transform: translate(-50%, -50%) scale(0.99); filter: blur(0.3px) saturate(1.3); }
    100% { transform: translate(-50%, -50%) scale(0.96); filter: blur(0.25px) saturate(1.35); }
}

.spark-flame-trail {
    position: absolute;
    width: 26px;
    height: 26px;
    border-radius: 999px;
    transform: translate(-50%, -50%);
    pointer-events: none;
    z-index: 1;
    mix-blend-mode: screen;
    background:
        radial-gradient(circle at 50% 40%,
            rgba(255,255,255,0.95) 0%,
            rgba(255,180,80,0.75) 28%,
            rgba(255,60,0,0.35) 55%,
            rgba(255,0,0,0) 75%);
    opacity: 0.9;
    filter: blur(0.4px) saturate(1.4);
}

@keyframes spark-trail-fade {
    0% { opacity: 0.75; transform: translate(-50%, -50%) scale(0.8); }
    70% { opacity: 0.18; transform: translate(-50%, -50%) scale(1.25); }
    100% { opacity: 0; transform: translate(-50%, -50%) scale(1.5); }
}

.spark-inner.is-forging .spark-text {
    transition: text-shadow 2400ms ease-out, filter 2400ms ease-out;
    text-shadow:
        0 0 10px rgba(255, 120, 20, 1),
        0 0 32px rgba(255, 80, 0, 0.95),
        0 0 110px rgba(255, 0, 0, 0.85);
    filter: saturate(1.45) brightness(1.18) blur(0.35px);
}

.spark-inner.is-forging .spark-line {
    transition: box-shadow 2400ms ease-out, filter 2400ms ease-out, background 2400ms ease-out;
    opacity: 1;
    background: radial-gradient(circle at center, #ffe6a8 0, rgba(255, 140, 0, 0.5) 35%, transparent 75%);
    box-shadow:
        0 0 22px rgba(255, 160, 0, 0.98),
        0 0 85px rgba(255, 70, 0, 0.8);
    filter: blur(1.4px) saturate(1.6);
}

.spark-inner.is-burning .spark-text {
    animation: spark-flashpaper-burn 620ms ease-out forwards;
}

@keyframes spark-flashpaper-burn {
    0% {
        opacity: 1;
        filter: saturate(1.6) brightness(1.15) blur(0.25px);
        transform: translateY(0) scale(1);
    }
    /* ignition flash */
    12% {
        opacity: 1;
        filter: saturate(2.2) brightness(2.2) blur(0.1px);
        text-shadow:
            0 0 10px rgba(255,255,255,1),
            0 0 30px rgba(255,220,140,1),
            0 0 80px rgba(255,120,0,0.9);
        transform: translateY(-2px) scale(1.015);
    }
    /* burn front / snap */
    45% {
        opacity: 0.95;
        filter: saturate(1.9) brightness(1.6) blur(0.35px) contrast(1.25);
        transform: translateY(-6px) scale(1.01);
    }
    /* vanish like flash paper */
    100% {
        opacity: 0;
        filter: saturate(0.9) brightness(0.65) blur(1.4px) contrast(0.9);
        transform: translateY(-18px) scale(0.985);
    }
}

.spark-line {
    position: absolute;
    top: 50%;
    left: 50%;
    width: 52vw;
    max-width: 840px;
    height: 2px;
    background: radial-gradient(circle at center, #ffffff 0, rgba(255, 255, 255, 0.2) 40%, transparent 80%);
    transform: translate(-50%, -50%) scaleX(0);
    transform-origin: center;
    filter: blur(1.5px);
    opacity: 0;
    box-shadow:
        0 0 12px rgba(255,255,255,0.9),
        0 0 40px rgba(255,255,255,0.7);
}

.spark-text {
    position: relative;
    display: inline-flex;
    flex-direction: column;
    gap: 0.2em;
    font-weight: 800;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    font-size: clamp(26px, 5vw, 46px);
    color: #f5f5f5;
    opacity: 0;
}

.spark-word {
    position: relative;
}

.spark-word-ignite {
    align-self: center;
}

.spark-word-stage {
    align-self: center;
}

.spark-text.is-glow {
    text-shadow:
        0 0 8px rgba(255,255,255,1),
        0 0 24px rgba(255,255,255,0.9),
        0 0 60px rgba(255,255,255,0.8);
}

/* Scene 2: The Disruption */
.scene-disruption {
    position: relative;
    width: 100%;
    height: 100vh;
    background-color: #000;
    overflow: visible;
    display: flex;
    align-items: center;
    justify-content: center;
}

.disruption-canvas {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    display: block;
    filter: blur(2px);
}

.disruption-overlay {
    position: absolute;
    inset: 0;
    background: radial-gradient(circle at center, rgba(255,255,255,0.06) 0, rgba(0,0,0,0.96) 55%, #000 100%);
    mix-blend-mode: soft-light;
    pointer-events: none;
}

.disruption-flash {
    position: fixed;
    inset: 0;
    z-index: 4;
    background:
        radial-gradient(ellipse 65% 55% at 50% 55%,
            rgba(255,255,255,1) 0%,
            rgba(255,255,255,0.92) 16%,
            rgba(255,255,255,0.55) 36%,
            rgba(255,255,255,0.0) 70%),
        linear-gradient(0deg, rgba(255,255,255,0.65), rgba(255,255,255,0.65));
    opacity: 0;
    pointer-events: none;
    filter: blur(1px);
}

.disruption-inner {
    position: relative;
    z-index: 2;
    max-width: 780px;
    padding: 0 6vw;
    text-align: center;
}

.disruption-text {
    margin: 0;
    font-weight: 400;
    font-size: clamp(22px, 3.4vw, 38px);
    line-height: 1.6;
    color: #f5f5f5;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    filter: blur(20px);
    opacity: 0;
    transform: scale(0.95);
}

/* Scene 3: The Depth */
.scene-depth {
    position: relative;
    width: 100%;
    min-height: 100vh;
    background-color: #000;
    overflow: hidden;
    display: flex;
    align-items: center;
    justify-content: center;
}

.depth-void {
    position: absolute;
    inset: -20%;
    pointer-events: none;
}

.depth-void-layer {
    position: absolute;
    inset: -30%;
    background-repeat: no-repeat;
    background-size: 120% 120%;
    opacity: 0.5;
    animation: depth-void-drift 28s ease-in-out infinite;
}

.depth-void-layer-1 {
    background-image: radial-gradient(
        ellipse 80% 60% at 30% 40%,
        rgba(45, 45, 55, 0.4) 0%,
        rgba(20, 20, 28, 0.2) 40%,
        transparent 70%
    );
    animation-delay: 0s;
}

.depth-void-layer-2 {
    background-image: radial-gradient(
        ellipse 70% 80% at 70% 60%,
        rgba(35, 38, 48, 0.35) 0%,
        rgba(15, 15, 22, 0.15) 50%,
        transparent 75%
    );
    animation-delay: -7s;
}

.depth-void-layer-3 {
    background-image: radial-gradient(
        ellipse 90% 50% at 50% 30%,
        rgba(40, 42, 52, 0.3) 0%,
        transparent 55%
    );
    animation-delay: -14s;
}

.depth-void-layer-4 {
    background-image: radial-gradient(
        ellipse 60% 90% at 60% 70%,
        rgba(30, 32, 42, 0.25) 0%,
        transparent 60%
    );
    animation-delay: -21s;
}

@keyframes depth-void-drift {
    0%, 100% {
        transform: translate(0, 0) scale(1);
        opacity: 0.5;
    }
    25% {
        transform: translate(3%, -2%) scale(1.02);
        opacity: 0.45;
    }
    50% {
        transform: translate(-2%, 4%) scale(0.98);
        opacity: 0.55;
    }
    75% {
        transform: translate(-3%, -1%) scale(1.01);
        opacity: 0.48;
    }
}

.depth-inner {
    position: relative;
    z-index: 2;
    max-width: 780px;
    padding: 0 2vw;
    text-align: center;
}

.depth-hotspot {
    position: absolute;
    left: 50%;
    top: 55%;
    width: 22px;
    height: 22px;
    margin-left: -11px;
    margin-top: -11px;
    border: 0;
    padding: 0;
    border-radius: 999px;
    background: transparent;
    cursor: pointer;
    z-index: 3;
}

.depth-hotspot-core {
    position: absolute;
    inset: 0;
    border-radius: 999px;
    background: radial-gradient(circle, rgba(255,255,255,0.95) 0, rgba(255,255,255,0.2) 55%, rgba(255,255,255,0.0) 75%);
    filter: drop-shadow(0 0 18px rgba(255,255,255,0.35));
    animation: depth-hotspot-pulse 1800ms ease-in-out infinite;
}

.depth-hotspot-ring {
    position: absolute;
    inset: -16px;
    border-radius: 999px;
    border: 1px solid rgba(255,255,255,0.22);
    opacity: 0.35;
    animation: depth-hotspot-ring 2200ms ease-in-out infinite;
}

@keyframes depth-hotspot-pulse {
    0%, 100% { transform: scale(0.92); opacity: 0.55; }
    50% { transform: scale(1.18); opacity: 0.95; }
}

@keyframes depth-hotspot-ring {
    0% { transform: scale(0.9); opacity: 0.2; }
    50% { transform: scale(1.05); opacity: 0.45; }
    100% { transform: scale(0.9); opacity: 0.2; }
}

.depth-text {
    margin: 0;
    font-weight: 300;
    font-size: clamp(17px, 2.2vw, 26px);
    line-height: 1.85;
    color: #d1d1d1;
    letter-spacing: 0.04em;
    z-index: 90;
}

.depth-word {
    display: inline-block;
    opacity: 1;
    padding: 0 0.15em 0 0;
}

/* Chapter 3 interaction: photo bursts */
.depth-photo-pop {
    position: absolute;
    width: min(44vw, 520px);
    max-width: 86vw;
    height: auto;
    aspect-ratio: 16 / 10;
    object-fit: cover;
    transform: translate(-50%, -50%);
    pointer-events: none;
    z-index: 1; /* behind depth-inner (z-index:2) but above depth-void */
    border-radius: 10px;
    box-shadow: 0 22px 60px rgba(0,0,0,0.72);
    opacity: 0;
    filter: saturate(1.05) contrast(1.05);
}

/* Scene 4: The Climax */
.scene-climax {
    position: relative;
    width: 100%;
    min-height: 100vh;
    background-color: #000;
    color: #fff;
    overflow: hidden;
    display: flex;
    align-items: center;
    justify-content: center;
}

.climax-inner {
    position: relative;
    text-align: center;
    padding: 0 6vw;
    width: 100%;
    max-width: 1200px;
}

.climax-line1 {
    margin: 0 0 0.4em;
    font-size: clamp(14px, 1.8vw, 22px);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.2em;
    color: rgba(255, 255, 255, 0.9);
}

.climax-word {
    display: inline-block;
    opacity: 0;
    transform: translate(0, 0);
}

.climax-energy-wrap {
    position: relative;
    width: 100%;
    display: block;
    font-size: 15vw;
    font-weight: 800;
    line-height: 0.9;
    letter-spacing: -0.02em;
    text-transform: uppercase;
}

/* Background "ONLY ENERGY" glitch layer (appears after reveal or on hover) */
.climax-energy-wrap::before {
    content: attr(data-text);
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
    width: 100%;
    text-align: center;
    white-space: nowrap;
    pointer-events: none;
    z-index: 0;
    opacity: 0;
    color: rgba(255, 255, 255, 0.14);
    filter: blur(0.9px) contrast(1.15);
    mix-blend-mode: screen;
}

.climax-energy-wrap.is-bg-glitch::before {
    opacity: 1;
    animation: climax-bg-glitch 520ms steps(12, end) infinite;
}

@keyframes climax-bg-glitch {
    0%   { clip-path: inset(0 0 0 0); transform: translate(-50%, -50%) translateX(0) skewX(0deg); opacity: 0.35; }
    8%   { clip-path: inset(4% 0 78% 0); transform: translate(-50%, -50%) translateX(-26px) skewX(-8deg); opacity: 0.85; }
    16%  { clip-path: inset(62% 0 10% 0); transform: translate(-50%, -50%) translateX(32px) skewX(10deg); opacity: 0.75; }
    24%  { clip-path: inset(14% 0 60% 0); transform: translate(-50%, -50%) translateX(-18px) skewX(-6deg); opacity: 0.9; }
    32%  { clip-path: inset(76% 0 6% 0); transform: translate(-50%, -50%) translateX(22px) skewX(7deg); opacity: 0.65; }
    40%  { clip-path: inset(28% 0 44% 0); transform: translate(-50%, -50%) translateX(-36px) skewX(-12deg); opacity: 0.95; }
    48%  { clip-path: inset(52% 0 18% 0); transform: translate(-50%, -50%) translateX(28px) skewX(9deg); opacity: 0.7; }
    56%  { clip-path: inset(10% 0 74% 0); transform: translate(-50%, -50%) translateX(-24px) skewX(-8deg); opacity: 0.9; }
    64%  { clip-path: inset(68% 0 8% 0); transform: translate(-50%, -50%) translateX(36px) skewX(12deg); opacity: 0.8; }
    72%  { clip-path: inset(40% 0 28% 0); transform: translate(-50%, -50%) translateX(-30px) skewX(-10deg); opacity: 0.95; }
    80%  { clip-path: inset(84% 0 4% 0); transform: translate(-50%, -50%) translateX(18px) skewX(6deg); opacity: 0.75; }
    88%  { clip-path: inset(22% 0 52% 0); transform: translate(-50%, -50%) translateX(-20px) skewX(-7deg); opacity: 0.9; }
    100% { clip-path: inset(0 0 0 0); transform: translate(-50%, -50%) translateX(0) skewX(0deg); opacity: 0.35; }
}

.climax-energy-layer {
    position: absolute;
    left: 50%;
    top: 50%;
    width: 120vw;
    text-align: left;
    pointer-events: none;
    white-space: nowrap;
    opacity: 0;
    transform: translate(-50%, -50%) translateX(-8vw);
}

.climax-energy-r {
    color: rgba(255, 60, 60, 0.9);
    transform: translate(-42%, -50%) translateX(-5px);
}

.climax-energy-g {
    color: rgba(80, 255, 120, 0.85);
    transform: translate(-42%, -50%);
}

.climax-energy-b {
    color: rgba(60, 80, 255, 0.9);
    transform: translate(-42%, -50%) translateX(5px);
}

.climax-energy-wrap:hover .climax-energy-layer {
    opacity: 1;
}

.climax-energy-text {
    position: relative;
    z-index: 1;
    display: block;
    width: 100%;
    text-align: center;
    background: linear-gradient(
        110deg,
        #fff 0%,
        #e0f0ff 18%,
        #fff 35%,
        #ffeed0 52%,
        #fff 70%,
        #e8fff0 88%,
        #fff 100%
    );
    background-size: 200% 100%;
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
    animation: climax-energy-shimmer 4s ease-in-out infinite;
}

.climax-energy-text.is-pulse {
    animation: climax-energy-shimmer 4s ease-in-out infinite,
               climax-energy-glow 1.8s ease-in-out infinite;
}

@keyframes climax-energy-shimmer {
    0%, 100% { background-position: 0% 50%; }
    50% { background-position: 100% 50%; }
}

@keyframes climax-energy-glow {
    0%, 100% {
        filter: drop-shadow(0 0 12px rgba(255, 255, 255, 0.4))
                drop-shadow(0 0 32px rgba(0, 255, 180, 0.25));
    }
    50% {
        filter: drop-shadow(0 0 24px rgba(255, 255, 255, 0.7))
                drop-shadow(0 0 48px rgba(0, 255, 180, 0.4));
    }
}

/* Scene 5: The Invitation */
.scene-invitation {
    position: relative;
    width: 100%;
    min-height: 65vh;
    background-color: #000;
    overflow: hidden;
    display: flex;
    align-items: center;
    justify-content: center;
}

.invitation-spotlight {
    position: absolute;
    inset: 0;
    background:
        radial-gradient(ellipse 55% 45% at 50% 0%,
            rgba(255,255,255,0.14) 0%,
            rgba(255,255,255,0.06) 28%,
            rgba(0,0,0,0.0) 62%),
        radial-gradient(circle at 50% 35%,
            rgba(255,255,255,0.05) 0%,
            rgba(0,0,0,0) 55%);
    filter: blur(0px);
    opacity: 0;
    transition: opacity 600ms ease-out;
    pointer-events: none;
}

.invitation-inner {
    position: relative;
    z-index: 2;
    text-align: center;
    padding: 0 8vw;
    max-width: 900px;
}

.invitation-copy {
    margin: 0 0 22px;
    font-weight: 300;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    font-size: clamp(18px, 2.4vw, 30px);
    color: #d1d1d1;
    opacity: 0;
    transform: translateY(30px);
}

.invitation-cta {
    display: inline-flex;
    align-items: center;
    gap: 14px;
    padding: 14px 18px;
    border: 1px solid rgba(255,255,255,0.28);
    border-radius: 999px;
    text-decoration: none;
    color: rgba(255,255,255,0.86);
    background: rgba(0,0,0,0.0);
    letter-spacing: 0.16em;
    text-transform: uppercase;
    font-size: 12px;
    opacity: 0;
    transform: translateY(20px);
    transition: background-color 180ms ease-out, color 180ms ease-out, border-color 180ms ease-out;
    will-change: transform;
}

.invitation-cta:hover {
    background: #fff;
    color: #000;
    border-color: rgba(255,255,255,0.75);
}

.invitation-cta-arrow {
    font-size: 14px;
    opacity: 0.9;
    transform: translateY(-1px);
}

main {
    width: 100%;
}

/*-----------------*/

.navbar {
    position: fixed;
    top: 0;
    width: 95%;
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 20px 0px;
    z-index: 1000;
    color: #000;
    background-color: transparent;
    transition: top 0.3s, background-color 0.3s, color 0.3s;
}

.navbar .logo img {
    max-width: 50px;
    vertical-align: middle;
    transition: opacity 0.3s;
}

.navbar .logo {
    margin-left: 2vw;
}

.navbar nav ul {
    list-style: none;
    display: flex;
    gap: 28px;
    margin-right: calc(40px + 5vw);
    font-size: calc(18px + 0.45vw);
}

/*.navbar nav ul.active-hover-text {
    margin-right: 20vw;
}*/

.navbar nav ul li a {
    color: #111;
    text-decoration: none;
    font-weight: 400;
    position: relative;
    overflow: hidden;
    transition: color 0.3s;
}

.navbar nav ul li a:hover {
    color: #eee;
}

.navbar nav ul li a span {
    display: block;
    transition: transform 0.3s, opacity 0.3s;
}

.navbar nav ul li a span.original {
    transform: translateY(0);
    opacity: 1;
}

.navbar nav ul li a span.new {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    transform: translateY(100%);
    opacity: 0;
}

.navbar nav ul li a:hover span.original {
    transform: translateY(-100%);
    opacity: 0;
}

.navbar nav ul li a:hover span.new {
    transform: translateY(0);
    opacity: 1;
}

.navbar.hide {
    top: -100px; /* Adjust this value based on the height of your navbar */
}

.navbar.show-on-scroll-up {
    background-color: #000;
    color: #eee;
    left: 0px;
    /*padding: 0px 0px 0px 2vw;*/
    width: 100%;
}

.navbar.show-on-scroll-up nav ul li a {
    color: #eee;
    font-size: 1.4vw;
}

.hero {
    position: relative;
    width: 100%;
    height: 96vh;
    overflow: hidden;
}

.new-stage {
    position: relative;
    width: 100%;
    min-height: 64vh;
    padding: 18vh 2vw;
    box-sizing: border-box;
    display: flex;
    align-items: center;
    justify-content: center;
    perspective: 1200px;
    background: radial-gradient(circle at top, #111 0, #000 52%, #020202 100%);
    overflow: hidden;
}

.new-stage-inner {
    position: relative;
    width: min(1200px, 92vw);
    display: grid;
    grid-template-columns: minmax(0, 1.2fr);
    justify-content: center;
    align-items: center;
    text-align: center;
    gap: 32px;
    z-index: 1;
}

.new-stage-atmosphere {
    position: absolute;
    inset: -12vh -8vw;
    pointer-events: none;
    z-index: 0;
    opacity: 0.78;
}

#stage-void-canvas {
    width: 100%;
    height: 100%;
    display: block;
}

.new-stage-typography {
    position: relative;
    z-index: 2;
    transform-origin: center bottom;
    transform: scaleY(var(--stage-scale-y, 1)) translateY(var(--stage-translate-y, 0));
    filter: blur(var(--stage-blur, 0px));
    transition:
        transform 680ms cubic-bezier(0.22, 1, 0.36, 1),
        filter 680ms cubic-bezier(0.65, 0, 0.35, 1);
}

.new-stage-headline {
    margin: 0 0 1.4rem;
    font-weight: 300;
    text-transform: uppercase;
    letter-spacing: 0.09em;
    font-size: clamp(64px, 11vw, 160px);
    line-height: 0.88;
    transform-origin: center bottom;
}

.new-stage-headline-line {
    display: block;
}

.new-stage-text {
    margin: 0 auto 2.4rem;
    max-width: 720px;
    font-size: 20px;
    line-height: 1.6;
    font-weight: 300;
    letter-spacing: var(--stage-letter-spacing, 0.02em);
}

.new-stage-energy-line {
    width: 100%;
    max-width: 720px;
    height: 1px;
    margin: 0 auto;
    background: linear-gradient(90deg, transparent 0, rgba(255,255,255,0.55) 30%, rgba(0,255,200,0.85) 50%, rgba(255,40,120,0.8) 70%, transparent 100%);
    opacity: 0.6;
    transform-origin: left center;
    transform: scaleX(0.92);
    filter: drop-shadow(0 0 18px rgba(0,255,200,0.3));
}

.keyword-energy,
.keyword-stage,
.keyword-sound {
    position: relative;
    display: inline-block;
    cursor: pointer;
}

.keyword-energy {
    text-shadow: 0 0 0 rgba(255,255,255,0.0);
}

.keyword-stage {
    will-change: transform;
}

.keyword-sound {
    --sound-wave-amplitude: 0;
}

.keyword-energy.is-glow {
    text-shadow:
        0 0 4px rgba(255,255,255,0.65),
        0 0 12px rgba(0,255,200,0.9),
        0 0 24px rgba(0,140,255,0.9);
    transition: text-shadow 540ms ease-out;
}

.keyword-stage.is-tilt {
    transform: perspective(900px) rotateX(8deg) translateZ(30px);
    transition: transform 420ms cubic-bezier(0.34, 1.56, 0.64, 1);
}

.keyword-sound::after {
    content: attr(data-keyword);
    position: absolute;
    inset: 0;
    pointer-events: none;
    mix-blend-mode: screen;
    opacity: 0.6;
    transform-origin: center;
    transform: translateY(0);
}

.keyword-sound.is-wave::after {
    animation: sound-wave-distortion 700ms ease-out;
}

@keyframes sound-wave-distortion {
    0% {
        transform: translateY(0);
        filter: blur(0);
    }
    50% {
        transform: translateY(-6px);
        filter: blur(1px);
    }
    100% {
        transform: translateY(0);
        filter: blur(0);
    }
}

.new-stage-typography.is-pulse {
    animation:
        stage-vertical-pulse 680ms cubic-bezier(0.22, 1, 0.36, 1),
        stage-vertical-recover 680ms 680ms cubic-bezier(0.65, 0, 0.35, 1);
}

@keyframes stage-vertical-pulse {
    0%   { transform: scaleY(1); }
    35%  { transform: scaleY(1.18); }
    65%  { transform: scaleY(0.96); }
    100% { transform: scaleY(1); }
}

@keyframes stage-vertical-recover {
    0%   { transform: scaleY(1); }
    100% { transform: scaleY(1); }
}

.background-video {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: top;
    z-index: -1;
}

.new-stage-grain {
    position: absolute;
    inset: -40px;
    pointer-events: none;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160' viewBox='0 0 160 160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.98' numOctaves='3' stitchTiles='noStitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.32'/%3E%3C/svg%3E");
    mix-blend-mode: soft-light;
    opacity: 0;
    transition: opacity 260ms ease-out;
    z-index: 3;
}

.overlay {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: rgba(0, 0, 0, 0.5);
    z-index: 0;
}

.content {
    position: absolute;
    bottom: 10%;
    left: 2vw;
    z-index: 1;
}

.content h1 {
    margin: 0;
    font-size: 7rem;
    line-height: 1;
    font-weight: 300;
}

.content h4 {
    font-size: 2rem;
    line-height: 1;
    margin-bottom: 0;
    font-weight: 300;
}

.scroll-text {
    position: absolute;
    bottom: 6vh;
    right: 5vw;
    z-index: 1;
    animation: bounce 3.4s infinite;
    cursor: pointer;
}

.scene-spark .chapter-scroll-hint {
    appearance: none;
    border: 0;
    background: transparent;
    color: #fff;
    right: 10vw;
    opacity: 0;
    pointer-events: none;
    z-index: 6;
    transition: opacity 260ms ease-out;
}

.scene-spark .chapter-scroll-hint.is-visible {
    opacity: 1;
    pointer-events: auto;
}

.scene-spark .chapter-scroll-hint p {
    color: #fff;
}

.scroll-text p {
    margin: 0;
    font-weight: 400;
    font-size: 1rem;
}

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

.scroll-balls{
    position: relative;
    width: 56px; /* Adjust width as needed */
    height: 40px; /* Adjust height as needed */
    display: flex;
    justify-content: flex-end;
}

.scroll-balls-2{
    position: relative;
    width: 150px; /* Adjust width as needed */
    height: 40px; /* Adjust height as needed */
    display: flex;
    justify-content: flex-end;
}
.scroll-ball {
    width: 6px;
    height: 6px;
    border-radius: 50%;
    position: absolute;
    animation: bounce-ball 3s infinite;
}

.scroll-ball:nth-child(1) {
    animation-delay: 0s;
}

.scroll-ball:nth-child(2) {
    animation-delay: 0.33s;
}

.scroll-ball:nth-child(3) {
    animation-delay: 0.66s;
}

@keyframes bounce-ball {
    0%, 100% {
        transform: translateY(-6px);
        background-color: white;
    }
    50% {
        transform: translateY(-26px);
        background-color: rgb(69, 69, 69);
    }
}

.equipment {
    height: 100vh;
    display: flex;
    justify-content: center;
    align-items: center;
}

#animation {
   position: relative;
    width: 100%;
    height: 100vh;
    background-size: cover;
    background-repeat: no-repeat;
    background-position: center;
}

#animation div{
    width: 99.4vw;
    height: auto;
    object-fit: cover;
}

.container {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 20px;
    padding: 20px 0px 0px 20px;
    max-width: 1920px;
    width: 96%;
}

.item, .text {
    overflow: hidden;
    position: relative;
}

.item img, .text {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.text {
    color: white;
}

.text h2 {
    /*font-size: 2.5rem;*/
    font-size: calc(16px + 2vw);
    line-height: 1.1;
    font-weight: 600;
    margin: 0 0 10px;
}

.text p {
    margin: 10px 0;
    /*font-size: 1.2rem;*/
    font-size: calc(5px + 0.8vw);
    font-weight: 200;
}

.cta {
    color: #fff;
    cursor: pointer;
    font-weight: 600;
    text-decoration: none;
}

/* Specific item sizes */
.item1{
    grid-column: span 2;
    grid-row: span 2;
}

.item2, .item3, .item4, .item5, .item7, .item9 {
    grid-column: span 1;
    grid-row: span 1;
}

.item6, .item10{ 
    grid-column: span 2;
    grid-row: span 1;
    
}

.item11 {
    grid-column: span 4;
    grid-row: span 1;
    
}

.item8 {
    grid-column: span 3;
    grid-row: span 2;
}

.text1, .text2, .text5, .text6 {
    grid-column: span 1;
    grid-row: span 1;
}

.text3, .text4, .text7 {
    grid-column: span 2;
    grid-row: span 1;
}

.text7 h1 {
    font-size: 10vw;
    line-height: 1;
    margin: 0;
    padding-bottom: 2vw;
    font-weight: 300;
}

footer{
    min-width: 95vw;
}

footer h4 {
    margin-top: 0px;
}

.text5 p, .text5 a, .text6 a{
    font-size: .9rem;
    cursor: pointer;
    text-decoration: none;
    color: #fff;
}

.text8{
    text-align: center;
    color: #ddd;
    font-size: x-small;
    margin-bottom: .5vw;
}

#mc_embed_signup input.email {
    border: none;
    border-bottom: 2px solid white;
    background: none;
    color: white;
    padding: 0 0 4px 0;
    outline: none;
    width: 70%;
    box-sizing: border-box;
}

/* Style the placeholder */
#mc_embed_signup input.email::placeholder {
    color: #aaa;
}

.button {
    background-color: black;
    text-decoration: none;
    font-size: calc(16px + 0.8vw);
    border: none;
    margin: 0;
}

/* OUR EVENTS section */
.events {
    position: relative;
    width: 100%;
    padding: 60px 2vw;
    box-sizing: border-box;
    z-index: 0;
}

.events-header h2 {
    margin: 0 0 20px;
    font-size: calc(18px + 1.5vw);
    font-weight: 600;
}

.event-card, .event-card-soon-1, .event-card-soon-2, .event-card-soon-3 {
    position: relative;
    padding: 16px 0;
    border-top: 1px solid #444;
    z-index: 3;
}

.event-tag {
    font-size: calc(16px + 0.5vw);
    font-weight: 600;
    margin-bottom: 8px;
}

.event-meta {
    font-size: calc(16px + 0.5vw);
    font-weight: 300;
}

/* Progressive "soon" dimming (applies in all orientations) */
.event-card-soon-1,
.event-card-soon-1 .event-tag,
.event-card-soon-1 .event-meta {
    color: #c7c7c7;
}
.event-card-soon-1 .event-tag,
.event-card-soon-1 .event-meta {
    font-size: calc(15px + 0.45vw);
}

.event-card-soon-2,
.event-card-soon-2 .event-tag,
.event-card-soon-2 .event-meta {
    color: #808080;
}
.event-card-soon-2 .event-tag,
.event-card-soon-2 .event-meta {
    font-size: calc(14px + 0.38vw);
}

.event-card-soon-3,
.event-card-soon-3 .event-tag,
.event-card-soon-3 .event-meta {
    color: #242424;
}
.event-card-soon-3 .event-tag,
.event-card-soon-3 .event-meta {
    font-size: calc(13px + 0.3vw);
}

.event-cta {
    display: inline-block;
    margin-top: 12px;
    color: #fff;
    text-decoration: none;
}

.event-cta:hover {
    text-decoration: none;
}

/* Hover background image for event meta
   - Only in portrait
   - Only when viewport width >= 720px
   - Uses one of the existing photos as background
*/
@media (orientation: portrait) and (min-width: 720px) {
    .events {
        overflow: hidden;
    }

    .events::before {
        content: "";
        position: absolute;
        inset: 0;
        background-image: url("../media/fotos/IMG_2043.JPG");
        background-size: cover;
        background-position: center;
        opacity: 0;
        transition: opacity 0.4s ease;
        z-index: -1;
    }

    .events:has(.event-meta:hover)::before {
        opacity: 1;
    }

    .event-card, .event-card-soon-1, .event-card-soon-2, .event-card-soon-3,
    .events-header {
        position: relative;
        z-index: 1;
    }

}

footer a img {
    max-height: 18px;
    width: auto;
    margin-right: 40px;
    margin-top: 16px;
}

/* mid-term version */
@media (max-width: 1024px){
    .equipment {
        height: 60vh;
    }
    #animation {
        height: 45vh;
    }
    .text p {
        font-size: 1.2rem;
    }
    .item img, .text {
        width: 100%;
        height: 100%;
        object-fit: cover;
    }
}

/* mid-term version */
@media (min-width: 767px) and (max-width: 1024px){
    
}


/* Mobile version */
@media (max-width: 768px) {
    .navbar {
        padding: 10px 0;
        width: 94%;
        flex-direction: column;
    }
    
    .navbar .logo img {
        max-width: 40px;
    }

    .navbar nav ul {
        flex-direction: column;
        align-items: center;
        gap: 10px;
        margin-right: 0;
        font-size: 16px;
        padding-left: 0px;
    }

    /* Mobile nav: hide CONTACTS item */
    .navbar nav ul li:last-child {
        display: none;
    }

    /* Reveal CONTACTS when navbar appears on scroll-up */
    .navbar.show-on-scroll-up nav ul li:last-child {
        display: block;
    }

    .hero {
        height: 70vh;
    }

    .navbar.show-on-scroll-up nav ul li a {
        font-size: 20px;
    }

    .container {
        width: 95%;
    }

    .content h1 {
        font-size: 4rem;
    }

    .content h4 {
        font-size: 1.5rem;
    }

    .scroll-text {
        display: none;
        bottom: 3.2vh;
        right: 6.2vw;
        font-size: 0.8rem;
    }

    .scroll-balls {
        width: 40px;
        height: 30px;
        right: 1.2vw;
    }

    .item1, .item2, .item3, .item4, .item5, .item6, .item7, .item8, .item9, .item10, .text1, .text2, .text3, .text4, .text5, .text6, .text7 {
        grid-column: span 4;
        grid-row: span 1;
    }

    .item11 {
        grid-column: span 3;
        grid-row: span 1;
    }

    .text7 h1 {
        font-size: 6vw;
    }

    footer {
        min-width: 100vw;
        /*padding: 10px;*/
    }

    footer a img {
        max-height: 32px;
        margin-right: 20px;
    }

    /* About page: stick content toward bottom on mobile */
    body.about-page .about {
        min-height: 58vh;
        display: flex;
        align-items: flex-end;
        padding-bottom: 3vh;
        box-sizing: border-box;
    }

    body.about-page .about > div {
        width: 100%;
    }

    body.about-page .about .text {
        padding-bottom: 2vh;
        box-sizing: border-box;
    }

    /* Mobile: reduce “chapter” spacing and simplify Chapter 4 */
    .scene-spark {
        height: 85vh;
    }

    .spark-text {
        letter-spacing: 0.14em;
        font-size: clamp(22px, 9vw, 44px);
        opacity: 1;
    }

    .scene-disruption {
        min-height: 85vh;
    }

    .disruption-inner {
        padding: 0 6vw;
    }

    .disruption-text {
        font-size: clamp(16px, 5vw, 24px);
    }

    .scene-spark.spark-mobile-unified {
        height: auto;
        min-height: 85vh;
        padding: 14vh 0 10vh;
        display: flex;
        align-items: center;
        justify-content: center;
    }

    .scene-spark.spark-mobile-unified .spark-inner {
        display: flex;
        flex-direction: column;
        align-items: center;
        gap: 14px;
        padding: 0 8vw;
        text-align: center;
    }

    .scene-spark.spark-mobile-unified .spark-text {
        display: block;
        letter-spacing: 0.06em;
        font-size: clamp(16px, 5vw, 24px);
        font-weight: 400;
        line-height: 1.5;
        text-transform: uppercase;
        color: #f5f5f5;
    }

    .scene-spark.spark-mobile-unified .spark-word {
        display: inline;
    }

    .scene-spark.spark-mobile-unified .spark-disruption-mobile-copy {
        margin: 0;
        font-weight: 400;
        font-size: clamp(16px, 5vw, 24px);
        line-height: 1.5;
        letter-spacing: 0.06em;
        text-transform: uppercase;
        color: #f5f5f5;
    }

    .scene-spark.spark-mobile-unified .spark-mobile-flash {
        position: fixed;
        inset: 0;
        pointer-events: none;
        opacity: 0;
        background:
            radial-gradient(ellipse 65% 55% at 50% 55%,
                rgba(255,255,255,1) 0%,
                rgba(255,255,255,0.92) 16%,
                rgba(255,255,255,0.55) 36%,
                rgba(255,255,255,0.0) 70%),
            linear-gradient(0deg, rgba(255,255,255,0.65), rgba(255,255,255,0.65));
        filter: blur(1px);
        transition: opacity 280ms ease-out;
        z-index: 2200;
    }

    .scene-spark.spark-mobile-unified .spark-mobile-flash.is-active {
        opacity: 1;
    }

    .scene-depth {
        min-height: 85vh;
    }

    .depth-inner {
        padding: 0 6vw;
    }

    .depth-text {
        font-size: clamp(14px, 4vw, 20px);
    }

    .scene-climax {
        min-height: 85vh;
    }

    .climax-inner {
        padding: 0 6vw;
    }

    .climax-line1 {
        font-size: clamp(12px, 4.5vw, 18px);
        letter-spacing: 0.16em;
    }

    .scene-climax.climax-mobile-syllables {
        min-height: 100vh;
        align-items: center;
        justify-content: center;
        padding-top: 10vh;
        padding-bottom: 6vh;
        /* Lines extend past letter boxes; clip so strokes don’t widen the page horizontally */
        overflow-x: clip;
        overflow-y: visible;
    }

    .scene-climax.climax-mobile-syllables .climax-inner {
        text-align: center;
        padding: 0 2vw;
        width: 100%;
        max-width: 100%;
    }

    .scene-climax.climax-mobile-syllables .climax-mobile-line1 {
        margin: 0 auto 1.1em;
        max-width: 20em;
        color: rgba(255, 255, 255, 0.9);
        text-align: center;
        opacity: 0;
        transition: opacity 0.85s ease-out;
    }

    .scene-climax.climax-mobile-syllables .climax-inner.climax-mobile-inview .climax-mobile-line1 {
        opacity: 1;
        transition-delay: 0.06s;
    }

    .scene-climax.climax-mobile-syllables .climax-mobile-line1 .climax-word {
        opacity: 1;
        transform: none;
    }

    .scene-climax.climax-mobile-syllables .climax-mobile-energy-wrap {
        position: relative;
        /* Slightly wider than the text column so connector lines can extend before hitting clip */
        width: calc(100% + 40px);
        max-width: 100vw;
        margin-left: -20px;
        margin-right: -20px;
        box-sizing: border-box;
        min-height: 68vh;
        font-size: clamp(92px, 28vw, 168px);
        line-height: 0.9;
        letter-spacing: -0.02em;
        overflow: visible;
    }

    .scene-climax.climax-mobile-syllables .climax-mobile-links {
        position: absolute;
        inset: 0;
        width: 100%;
        height: 100%;
        z-index: 1;
        pointer-events: none;
        overflow: visible;
        shape-rendering: geometricPrecision;
        opacity: 0;
        transition: opacity 0.75s ease-out;
    }

    .scene-climax.climax-mobile-syllables .climax-inner.climax-mobile-inview .climax-mobile-links {
        opacity: 1;
        transition-delay: 0.85s;
    }

    .scene-climax.climax-mobile-syllables .climax-mobile-link-path {
        fill: none;
        stroke: rgba(255, 255, 255, 0.9);
        stroke-width: 2.2;
        stroke-linecap: butt;
        stroke-linejoin: miter;
    }

    .scene-climax.climax-mobile-syllables .climax-mobile-syllables-layer {
        position: relative;
        z-index: 2;
        width: 100%;
        height: 100%;
        margin: 0 auto;
    }

    .scene-climax.climax-mobile-syllables .climax-mobile-syllable {
        position: absolute;
        left: 50%;
        top: var(--syllable-y, 0);
        transform: translateX(-50%);
        display: inline-flex;
        gap: 0;
        font-weight: 800;
        text-transform: uppercase;
        color: #f5f5f5;
        opacity: 0;
        transition: opacity 0.65s ease-out;
    }

    .scene-climax.climax-mobile-syllables .climax-mobile-letter {
        display: inline-block;
        will-change: transform, text-shadow, opacity;
    }

    .scene-climax.climax-mobile-syllables .climax-mobile-letter.is-glitch {
        animation: climax-mobile-letter-glitch 140ms steps(2, end) 1;
        text-shadow:
            -0.03em 0 0 rgba(255, 70, 70, 0.85),
            0.03em 0 0 rgba(70, 170, 255, 0.85);
    }

    @keyframes climax-mobile-letter-glitch {
        0% { transform: translate3d(0, 0, 0); opacity: 1; }
        22% { transform: translate3d(0.03em, -0.01em, 0); opacity: 0.92; }
        44% { transform: translate3d(-0.035em, 0.015em, 0); opacity: 1; }
        66% { transform: translate3d(0.02em, 0.01em, 0); opacity: 0.95; }
        100% { transform: translate3d(0, 0, 0); opacity: 1; }
    }

    .scene-climax.climax-mobile-syllables .climax-inner.climax-mobile-inview .climax-mobile-syllable:nth-child(1) {
        opacity: 1;
        transition-delay: 0.18s;
    }

    .scene-climax.climax-mobile-syllables .climax-inner.climax-mobile-inview .climax-mobile-syllable:nth-child(2) {
        opacity: 1;
        transition-delay: 0.3s;
    }

    .scene-climax.climax-mobile-syllables .climax-inner.climax-mobile-inview .climax-mobile-syllable:nth-child(3) {
        opacity: 1;
        transition-delay: 0.42s;
    }

    .scene-climax.climax-mobile-syllables .climax-inner.climax-mobile-inview .climax-mobile-syllable:nth-child(4) {
        opacity: 1;
        transition-delay: 0.54s;
    }

    .scene-climax.climax-mobile-syllables .climax-inner.climax-mobile-inview .climax-mobile-syllable:nth-child(5) {
        opacity: 1;
        transition-delay: 0.66s;
    }

    @media (prefers-reduced-motion: reduce) {
        .scene-climax.climax-mobile-syllables .climax-mobile-line1,
        .scene-climax.climax-mobile-syllables .climax-mobile-syllable,
        .scene-climax.climax-mobile-syllables .climax-mobile-links {
            opacity: 1;
            transition: none;
        }
        .scene-climax.climax-mobile-syllables .climax-mobile-letter.is-glitch {
            animation: none;
            text-shadow: none;
            transform: none;
        }
    }

    .climax-energy-layer {
        display: none;
    }

    .climax-energy-wrap::before {
        display: none;
    }
}
