/* ==========================================================================
   Wyzzie Landing Page - Advanced GSAP Experience
   Horizontal scroll, parallax shapes, pinned sections, dramatic reveals
   ========================================================================== */

/* CSS Variables */
:root {
    --primary-color: #ea580c;
    --primary-hover: #c2410c;
    --accent-color: #dc2626;
    --background: #0f172a;
    --background-secondary: #1e293b;
    --foreground: #f8fafc;
    --muted-foreground: #94a3b8;
    --border: rgba(255, 255, 255, 0.2);
    --glass-bg: rgba(255, 255, 255, 0.05);
    --glass-border: rgba(255, 255, 255, 0.1);
    --radius: 16px;
    --shadow: 0 8px 32px rgba(0, 0, 0, 0.3);
}

/* ==========================================================================
   Reset & Base
   ========================================================================== */

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

html {
    scroll-behavior: smooth;
    background-color: var(--background);
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

body {
    font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
    background-color: var(--background);
    color: var(--foreground);
    line-height: 1.6;
    overflow-x: hidden;
}

/* Reduce motion for accessibility */
@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after {
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.01ms !important;
        scroll-behavior: auto !important;
    }
}

/* ==========================================================================
   Persistent Floating Text (Peel-Off Architecture)
   ========================================================================== */

.persistent-floating-text {
    position: fixed;
    opacity: 0;
    font-size: clamp(1.2rem, 2.5vw, 2rem);
    font-weight: 600;
    color: rgba(255, 255, 255, 0.9);
    z-index: 99999;
    pointer-events: none;
    text-shadow: 0 2px 20px rgba(0, 0, 0, 0.5);
    transition: none; /* GSAP handles all transitions */
}

#floating-text-1 {
    /* First phrase position when pinned */
    left: 5vw;
    top: 8vh;
}

#floating-text-2 {
    /* Second phrase position when pinned (below first) */
    left: 5vw;
    top: calc(8vh + 3rem);
}

/* Peel source styling */
.peel-source-1,
.peel-source-2 {
    position: relative;
    display: inline;
}

/* Tradition text in Academia panel */
.pain-tradition {
    font-size: clamp(0.95rem, 1.8vw, 1.1rem);
    color: var(--muted-foreground);
    font-style: italic;
    margin-top: 8px;
}

/* ==========================================================================
   Scroll Progress Bar
   ========================================================================== */

.scroll-progress-bar {
    position: fixed;
    top: 0;
    left: 0;
    width: 0%;
    height: 3px;
    background: linear-gradient(90deg, var(--primary-color), var(--accent-color));
    z-index: 9999;
    transition: width 0.1s ease-out;
}

/* ==========================================================================
   Background Layer - Floating Orbs (Parallax Layer 0)
   ========================================================================== */

.background-layer {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    z-index: 0;
    overflow: hidden;
    pointer-events: none;
}

.bg-orb {
    position: absolute;
    border-radius: 0;
    background-size: contain;
    background-repeat: no-repeat;
    will-change: transform;
}

.bg-orb-1 {
    width: 600px;
    height: 600px;
    background-image: url('../orbs/orb-orange.png');
    top: -10%;
    left: -5%;
    opacity: 0.85;
}

.bg-orb-2 {
    width: 500px;
    height: 500px;
    background-image: url('../orbs/orb-red.png');
    top: 40%;
    right: -10%;
    opacity: 0.8;
}

.bg-orb-3 {
    width: 450px;
    height: 450px;
    background-image: url('../orbs/orb-orange.png');
    top: 70%;
    left: 20%;
    opacity: 0.75;
}

.bg-orb-4 {
    width: 400px;
    height: 400px;
    background-image: url('../orbs/orb-red.png');
    top: 20%;
    left: 60%;
    opacity: 0.8;
}

.bg-orb-5 {
    width: 550px;
    height: 550px;
    background-image: url('../orbs/orb-orange.png');
    top: 50%;
    left: -15%;
    opacity: 0.75;
}

.bg-orb-6 {
    width: 350px;
    height: 350px;
    background-image: url('../orbs/orb-red.png');
    top: 85%;
    right: 10%;
    opacity: 0.85;
}

/* Additional orbs for more coverage */
.bg-orb-7 {
    width: 380px;
    height: 380px;
    background-image: url('../orbs/orb-orange.png');
    top: 5%;
    right: 20%;
    opacity: 0.8;
}

.bg-orb-8 {
    width: 420px;
    height: 420px;
    background-image: url('../orbs/orb-red.png');
    top: 55%;
    right: 25%;
    opacity: 0.75;
}

.bg-orb-9 {
    width: 320px;
    height: 320px;
    background-image: url('../orbs/orb-orange.png');
    top: 30%;
    left: 10%;
    opacity: 0.8;
}

.bg-orb-10 {
    width: 480px;
    height: 480px;
    background-image: url('../orbs/orb-red.png');
    top: 75%;
    right: -5%;
    opacity: 0.75;
}

/* ==========================================================================
   Background Orb Floating Animations
   ========================================================================== */

@keyframes orbFloat1 {
    0%, 100% { transform: translate(0, 0) scale(1); }
    25% { transform: translate(50px, -70px) scale(1.1); }
    50% { transform: translate(-30px, -120px) scale(0.95); }
    75% { transform: translate(-70px, -50px) scale(1.05); }
}

@keyframes orbFloat2 {
    0%, 100% { transform: translate(0, 0) scale(1); }
    25% { transform: translate(-60px, 40px) scale(1.08); }
    50% { transform: translate(40px, -60px) scale(0.92); }
    75% { transform: translate(20px, 80px) scale(1.05); }
}

@keyframes orbFloat3 {
    0%, 100% { transform: translate(0, 0) scale(1); }
    33% { transform: translate(80px, -40px) scale(1.1); }
    66% { transform: translate(-50px, 60px) scale(0.9); }
}

@keyframes orbFloat4 {
    0%, 100% { transform: translate(0, 0) scale(1); }
    20% { transform: translate(-40px, -80px) scale(1.05); }
    40% { transform: translate(60px, -40px) scale(0.95); }
    60% { transform: translate(30px, 50px) scale(1.1); }
    80% { transform: translate(-50px, 30px) scale(0.98); }
}

@keyframes orbFloat5 {
    0%, 100% { transform: translate(0, 0) scale(1); }
    30% { transform: translate(70px, -50px) scale(1.08); }
    60% { transform: translate(-40px, 80px) scale(0.92); }
}

@keyframes orbFloat6 {
    0%, 100% { transform: translate(0, 0) scale(1); }
    25% { transform: translate(-50px, -60px) scale(1.1); }
    50% { transform: translate(40px, -100px) scale(0.95); }
    75% { transform: translate(60px, -30px) scale(1.02); }
}

.bg-orb-1 { animation: orbFloat1 12s ease-in-out infinite; }
.bg-orb-2 { animation: orbFloat2 10s ease-in-out infinite; }
.bg-orb-3 { animation: orbFloat3 14s ease-in-out infinite; }
.bg-orb-4 { animation: orbFloat4 11s ease-in-out infinite; }
.bg-orb-5 { animation: orbFloat5 13s ease-in-out infinite; }
.bg-orb-6 { animation: orbFloat6 9s ease-in-out infinite; }
.bg-orb-7 { animation: orbFloat1 15s ease-in-out infinite reverse; }
.bg-orb-8 { animation: orbFloat3 11s ease-in-out infinite reverse; }
.bg-orb-9 { animation: orbFloat5 13s ease-in-out infinite; }
.bg-orb-10 { animation: orbFloat2 14s ease-in-out infinite reverse; }

/* ==========================================================================
   Scroll Sections - Base
   ========================================================================== */

.scroll-container {
    position: relative;
    z-index: 1;
}

.scroll-section {
    min-height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 80px 24px;
    position: relative;
    background: transparent;
}

/* Highlight text styles */
.text-highlight {
    color: var(--foreground);
    font-weight: 600;
}

.text-highlight-orange {
    background: linear-gradient(135deg, var(--primary-color), var(--accent-color));
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    background-clip: text;
    font-weight: 700;
}

.text-highlight-large {
    font-size: 1.1em;
    font-weight: 500;
}

.text-muted {
    color: var(--muted-foreground);
    font-style: italic;
}

/* ==========================================================================
   Section 1: Hero - 3D Perspective + Staggered Letters
   ========================================================================== */

.hero-section {
    min-height: 100vh;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    text-align: center;
    padding: 60px 24px;
    perspective: 1000px;
}

.hero-content {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 20px;
}

.hero-logo-animated {
    width: clamp(280px, 60vw, 540px);
    opacity: 0;
    filter: drop-shadow(0 0 30px rgba(234, 88, 12, 0.2));
    will-change: opacity;
}

.hero-logo-animated svg {
    width: 100%;
    height: auto;
    overflow: visible;
}

.hero-tagline {
    font-size: clamp(1rem, 2.5vw, 1.5rem);
    color: var(--muted-foreground);
    font-weight: 400;
    max-width: 600px;
    opacity: 0;
}

.hero-cta {
    display: inline-block;
    margin: 0;
    padding: 10px 24px;
    background: var(--primary-color);
    color: #fff;
    font-size: clamp(0.85rem, 1.5vw, 0.95rem);
    font-weight: 600;
    font-family: 'Inter', sans-serif;
    border-radius: 10px;
    text-decoration: none;
    letter-spacing: 0.3px;
    transition: background 0.2s ease, transform 0.15s ease, box-shadow 0.2s ease;
    box-shadow: 0 4px 16px rgba(234, 88, 12, 0.25);
    opacity: 0;
    transform: translateY(10px);
}

.hero-cta:hover {
    background: var(--primary-hover);
    transform: translateY(-2px);
    box-shadow: 0 6px 24px rgba(234, 88, 12, 0.4);
}

.hero-cta:active {
    transform: translateY(0);
}

@media (max-width: 600px) {
    .hero-cta {
        padding: 10px 24px;
        font-size: 0.85rem;
        margin-top: 16px;
    }
}

/* Dual-CTA group wrapper — animated via GSAP, both children fade up together */
.hero-cta-group {
    display: flex;
    flex-direction: row;
    align-items: center;
    justify-content: center;
    gap: 14px;
    flex-wrap: wrap;
    opacity: 0;
    transform: translateY(10px);
    margin-top: 8px;
}

.hero-cta-group .hero-cta {
    /* Children inside the group don't need their own opacity animation */
    opacity: 1;
    transform: none;
}

/* App Store badge — black rounded pill with Apple lockup */
.app-store-badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    text-decoration: none;
    border-radius: 10px;
    overflow: hidden;
    transition: transform 0.15s ease, box-shadow 0.2s ease;
    line-height: 0;
}

.app-store-badge:hover {
    transform: translateY(-2px);
    box-shadow: 0 6px 24px rgba(0, 0, 0, 0.5);
}

.app-store-badge:active {
    transform: translateY(0);
}

.app-store-badge svg {
    display: block;
    width: 160px;
    height: auto;
}

.app-store-badge-large svg {
    width: 200px;
}

/* Section 8 dual-CTA group — bigger spacing than hero */
.waitlist-cta-group {
    display: flex;
    flex-direction: row;
    align-items: center;
    justify-content: center;
    gap: 18px;
    flex-wrap: wrap;
    margin-top: 8px;
    margin-bottom: 32px;
}

/* Secondary Instagram link below the primary CTAs in section 8 */
.waitlist-instagram-link {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    color: rgba(255, 255, 255, 0.5);
    font-size: 0.85rem;
    text-decoration: none;
    transition: color 0.2s ease;
}

.waitlist-instagram-link:hover {
    color: rgba(255, 255, 255, 0.85);
}

@media (max-width: 600px) {
    .hero-cta-group {
        gap: 10px;
        margin-top: 16px;
    }
    .app-store-badge svg {
        width: 140px;
    }
    .app-store-badge-large svg {
        width: 170px;
    }
    .waitlist-cta-group {
        gap: 12px;
        flex-direction: column;
    }
}

.scroll-indicator {
    position: absolute;
    bottom: 60px;
    left: 50%;
    transform: translateX(-50%);
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 12px;
    opacity: 0;
}

.scroll-indicator.visible {
    opacity: 1;
}

.scroll-text {
    font-size: 0.875rem;
    color: var(--muted-foreground);
    letter-spacing: 0.05em;
}

.scroll-arrow {
    color: var(--primary-color);
    animation: bounceDown 2s ease-in-out infinite;
}

@keyframes bounceDown {
    0%, 20%, 50%, 80%, 100% { transform: translateY(0); }
    40% { transform: translateY(10px); }
    60% { transform: translateY(5px); }
}

/* ==========================================================================
   Section 2: Story Pinned Section (Pin + Scrub through text)
   ========================================================================== */

.story-pinned {
    min-height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 80px 24px;
    position: relative;
    background: transparent;
}

.story-pinned-content {
    max-width: 800px;
    width: 100%;
    text-align: center;
    position: relative;
    min-height: 200px;
    display: flex;
    align-items: center;
    justify-content: center;
}

.story-block {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: 100%;
    opacity: 0;
    will-change: opacity, transform;
    padding: 0 20px;
}

.story-block-1 {
    opacity: 1;
    position: relative;
    transform: none;
    left: auto;
    top: auto;
}

.story-text {
    font-size: clamp(1.5rem, 4vw, 2.5rem);
    font-weight: 400;
    line-height: 1.4;
    color: var(--muted-foreground);
    padding: 0 20px;
    max-width: 100%;
}

/* Peel Text Elements - Outside story tree for independent animation */
.peel-text-1,
.peel-text-2 {
    position: fixed;
    left: 50%;
    transform: translateX(-50%);
    font-size: clamp(1.5rem, 4vw, 2.5rem);
    font-weight: 400;
    line-height: 1.4;
    color: var(--muted-foreground);
    text-align: center;
    z-index: 100;
    pointer-events: none;
    opacity: 0;
}

.peel-text-1 {
    /* "We stand alone" */
    top: calc(45% - 1.2em);
}

.peel-text-2 {
    /* "at the intersection between medicine and dentistry." */
    top: calc(45% + 0.2em);
}

.peel-text-3,
.peel-text-4 {
    position: fixed;
    top: 78%;
    font-size: clamp(0.9rem, 1.5vw, 1.1rem);
    font-style: italic;
    font-weight: 400;
    color: var(--muted-foreground);
    z-index: 100;
    pointer-events: none;
    opacity: 0;
}

.peel-text-3 {
    /* "Tradition says:" - centered, stays then fades */
    left: calc(50% - 8.5em);
}

.peel-text-4 {
    /* "we figure it out alone." - centered, then peels to corner */
    left: calc(50% - 1.5em);
}

/* Hidden "don't have to" text - collapsed by default, animated to expand */
.peel-insert {
    display: inline-block;
    max-width: 0;
    overflow: hidden;
    white-space: nowrap;
    vertical-align: bottom;
    background: linear-gradient(135deg, var(--primary-color), var(--accent-color));
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    background-clip: text;
}

.story-progress {
    position: absolute;
    bottom: -60px;
    left: 50%;
    transform: translateX(-50%);
    display: flex;
    gap: 12px;
}

.story-dot {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.2);
    transition: all 0.3s ease;
}

.story-dot.active {
    background: var(--primary-color);
    transform: scale(1.2);
}

/* ==========================================================================
   Horizontal Scroll Sections
   ========================================================================== */

.horizontal-section {
    overflow: hidden;
    position: relative;
    background: transparent;
    z-index: 5;
}

.horizontal-track {
    display: flex;
    will-change: transform;
}

.horizontal-panel {
    width: 100vw;
    height: 100vh;
    height: 100dvh; /* Use dynamic viewport height where supported */
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 24px;
    box-sizing: border-box;
}

/* Horizontal scroll progress */
.horizontal-progress {
    position: fixed;
    bottom: 40px;
    left: 50%;
    transform: translateX(-50%);
    display: flex;
    gap: 12px;
    z-index: 100;
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.3s ease;
}

.horizontal-progress.visible {
    opacity: 1;
}

.h-dot {
    width: 10px;
    height: 10px;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.2);
    transition: all 0.3s ease;
}

.h-dot.active {
    background: var(--primary-color);
    transform: scale(1.3);
}

/* ==========================================================================
   Section 3: Pain Points - Horizontal Scroll Cards
   ========================================================================== */

#pain-points {
    z-index: 50 !important;
    background: transparent;
}

.pain-track {
    width: 300vw;
}

.pain-panel {
    background: transparent;
}

.pain-card {
    max-width: 550px;
    width: 100%;
    padding: 28px 36px;
    background: var(--glass-bg);
    border: 1px solid var(--glass-border);
    border-radius: var(--radius);
    backdrop-filter: blur(20px);
    text-align: center;
    transform: perspective(1000px) rotateY(0deg);
    transition: transform 0.5s ease;
}

.pain-icon {
    width: 64px;
    height: 64px;
    margin: 0 auto 16px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgba(234, 88, 12, 0.1);
    border-radius: 50%;
    color: var(--primary-color);
}

.pain-icon svg {
    width: 36px;
    height: 36px;
}

.pain-label {
    font-size: 0.75rem;
    color: var(--primary-color);
    text-transform: uppercase;
    letter-spacing: 0.15em;
    font-weight: 600;
    margin-bottom: 12px;
}

.pain-title {
    font-size: clamp(1.75rem, 4vw, 2.5rem);
    font-weight: 700;
    margin-bottom: 20px;
    background: linear-gradient(135deg, var(--foreground), var(--muted-foreground));
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    background-clip: text;
}

.pain-content {
    display: flex;
    flex-direction: column;
    gap: 14px;
}

.pain-statement {
    font-size: clamp(1.1rem, 2.5vw, 1.4rem);
    font-weight: 500;
    color: var(--foreground);
}

.pain-detail {
    font-size: clamp(0.95rem, 1.8vw, 1.1rem);
    color: var(--muted-foreground);
    line-height: 1.5;
}

.pain-platforms {
    font-size: clamp(0.95rem, 1.8vw, 1.1rem);
    color: var(--muted-foreground);
    letter-spacing: 0.05em;
}

.pain-need {
    font-size: clamp(0.95rem, 1.8vw, 1.1rem);
    color: var(--muted-foreground);
    line-height: 1.6;
}

.pain-conclusion {
    font-size: clamp(1rem, 2vw, 1.25rem);
    font-weight: 500;
    color: var(--foreground);
}

/* ==========================================================================
   Section 4: Reveal - PINNED SECTION
   ========================================================================== */

.pinned-section {
    min-height: 100vh;
    height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 40px 24px;
    position: relative;
    background: transparent;
    z-index: 10;
    box-sizing: border-box;
}

#nexus-reveal {
    background: transparent;
    min-height: 100vh;
    min-height: 100dvh;
}

/* When pinned, ensure full coverage */
#nexus-reveal[style*="fixed"] {
    top: 0 !important;
    left: 0 !important;
    right: 0 !important;
    bottom: 0 !important;
    height: 100vh !important;
    width: 100vw !important;
}

#features-gallery {
    background: transparent;
}

.nexus-content {
    max-width: 900px;
    width: 100%;
    text-align: center;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 16px;
}

/* Reveal lines - positioned absolutely for animation control */
.nexus-line {
    position: fixed;
    left: 0;
    right: 0;
    width: 100%;
    font-size: clamp(1.5rem, 4vw, 2.5rem);
    font-weight: 400;
    color: var(--foreground);
    text-align: center;
    z-index: 100;
    opacity: 0;
    margin: 0;
}

.nexus-need-home {
    top: 18%;
}

.nexus-need-nexus {
    top: calc(18% + 2.5em);
}

.nexus-wyzzie-logo {
    position: fixed;
    top: 65%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: clamp(220px, 50vw, 440px);
    z-index: 100;
    opacity: 0;
    filter: drop-shadow(0 0 30px rgba(234, 88, 12, 0.15));
}

/* Celebration particles */
.nexus-particles {
    position: fixed;
    top: 65%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: 0;
    height: 0;
    z-index: 99;
    pointer-events: none;
}

.nexus-particle {
    position: absolute;
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: var(--primary-color);
}


.transform-line {
    font-size: clamp(1.5rem, 4vw, 2.25rem);
    font-weight: 700;
    color: var(--foreground);
    display: flex;
    align-items: baseline;
    justify-content: center;
    gap: 0;
    flex-wrap: wrap;
    margin: 0;
    line-height: 1.4;
}

.word-we {
    display: inline;
}

.word-insert {
    display: inline-block;
    max-width: 0;
    overflow: hidden;
    white-space: nowrap;
    vertical-align: baseline;
    background: linear-gradient(135deg, var(--primary-color), var(--accent-color));
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    background-clip: text;
    font-weight: 700;
    will-change: max-width;
}

.word-rest {
    display: inline;
}

.nexus-after {
    opacity: 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 16px;
    margin-top: 32px;
    will-change: opacity, transform;
}

.nexus-need-line {
    font-size: clamp(1.25rem, 3vw, 1.75rem);
    color: var(--muted-foreground);
    font-weight: 400;
    margin: 0;
}

.nexus-word-container {
    position: relative;
    display: flex;
    justify-content: center;
    align-items: center;
    margin-top: 16px;
}

.nexus-word {
    font-size: clamp(3rem, 10vw, 6rem);
    font-weight: 700;
    letter-spacing: 0.05em;
    background: linear-gradient(135deg, var(--primary-color), var(--accent-color));
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    background-clip: text;
    opacity: 0;
}


/* Particle burst effect */
.nexus-particles {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: 100%;
    height: 100%;
    pointer-events: none;
}

.nexus-particle {
    position: absolute;
    top: 50%;
    left: 50%;
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: var(--primary-color);
    opacity: 0;
    box-shadow: 0 0 10px var(--primary-color);
}

/* ==========================================================================
   Section 5: Features Gallery - Horizontal Scroll
   ========================================================================== */

.features-track {
    width: 300vw;
}

.feature-panel {
    background: transparent;
}

.feature-panel-content {
    max-width: 1100px;
    width: 100%;
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 60px;
    align-items: center;
}

.feature-content-reversed {
    direction: rtl;
}

.feature-content-reversed > * {
    direction: ltr;
}

.feature-text {
    display: flex;
    flex-direction: column;
    gap: 20px;
}

.feature-title {
    font-size: clamp(2rem, 5vw, 3rem);
    font-weight: 700;
    color: var(--foreground);
}

.feature-subtitle {
    font-size: clamp(1.125rem, 2.5vw, 1.5rem);
    color: var(--primary-color);
    font-weight: 500;
}

.feature-list {
    list-style: none;
    display: flex;
    flex-direction: column;
    gap: 14px;
    padding-left: 0;
}

.feature-list li {
    font-size: clamp(1rem, 2vw, 1.125rem);
    color: var(--muted-foreground);
    padding-left: 28px;
    position: relative;
}

.feature-list li::before {
    content: '';
    position: absolute;
    left: 0;
    top: 50%;
    transform: translateY(-50%);
    width: 8px;
    height: 8px;
    background: var(--primary-color);
    border-radius: 50%;
}

.feature-detail {
    font-size: clamp(1rem, 2vw, 1.125rem);
    color: var(--muted-foreground);
    line-height: 1.8;
}

.feature-tagline {
    font-size: clamp(1.125rem, 2.5vw, 1.5rem);
    font-weight: 600;
}

/* Device Mockup */
.feature-device {
    display: flex;
    justify-content: center;
    align-items: center;
}

.device-mockup {
    width: 280px;
    height: 560px;
    background: var(--glass-bg);
    border: 2px solid var(--glass-border);
    border-radius: 40px;
    padding: 12px;
    position: relative;
    will-change: transform;
}

.device-mockup::before {
    content: '';
    position: absolute;
    top: 20px;
    left: 50%;
    transform: translateX(-50%);
    width: 80px;
    height: 24px;
    background: var(--background);
    border-radius: 12px;
}

.device-screen {
    width: 100%;
    height: 100%;
    background: linear-gradient(180deg, rgba(234, 88, 12, 0.05) 0%, rgba(220, 38, 38, 0.02) 100%);
    border-radius: 28px;
}

/* Different screen colors per feature */
.device-screen-logging,
.device-screen-callroom,
.device-screen-academia {
    position: relative;
    overflow: hidden;
}

.device-screen-logging img,
.device-screen-callroom img,
.device-screen-academia img {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    border-radius: 28px;
}

/* ==========================================================================
   Section 6: Ecosystem - SVG Path Drawing
   ========================================================================== */

.ecosystem-section {
    min-height: 100vh;
    background: transparent;
}

.ecosystem-container {
    max-width: 800px;
    width: 100%;
    padding: 0 24px;
    text-align: center;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 60px;
}

.ecosystem-diagram {
    position: relative;
    width: 400px;
    height: 350px;
}

.ecosystem-svg {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
}

.ecosystem-path {
    stroke-dasharray: 300;
    stroke-dashoffset: 300;
    will-change: stroke-dashoffset;
}

.ecosystem-node {
    position: absolute;
    padding: 16px 28px;
    background: var(--glass-bg);
    border: 2px solid var(--glass-border);
    border-radius: var(--radius);
    font-weight: 500;
    font-size: 0.95rem;
    color: var(--foreground);
    white-space: nowrap;
    opacity: 0;
    will-change: opacity, transform;
    transition: background 0.3s ease, border-color 0.3s ease;
}

.ecosystem-node:hover {
    background: rgba(255, 255, 255, 0.1);
    border-color: var(--primary-color);
}

/* Triangle positions matching spin animation:
   Center (200,175), radius 130
   Students -90deg: (200, 45)
   Residents 150deg: (87, 240)
   Attendings 30deg: (313, 240) */
.node-students {
    top: 45px;
    left: 200px;
    transform: translate(-50%, -50%);
    border-color: rgba(234, 88, 12, 0.5);
}

.node-residents {
    top: 240px;
    left: 87px;
    transform: translate(-50%, -50%);
    border-color: rgba(234, 88, 12, 0.5);
}

.node-attendings {
    top: 240px;
    left: 313px;
    transform: translate(-50%, -50%);
    border-color: rgba(220, 38, 38, 0.5);
}

/* Ferris wheel rotation is controlled by GSAP in main.js */
/* The diagram rotates and nodes counter-rotate to keep text readable */

.ecosystem-text {
    display: flex;
    flex-direction: column;
    gap: 16px;
    opacity: 0;
}

.ecosystem-tagline {
    font-size: clamp(1.5rem, 4vw, 2.25rem);
    font-weight: 600;
    color: var(--foreground);
}

.ecosystem-subtitle {
    font-size: clamp(1.125rem, 2.5vw, 1.5rem);
    color: var(--muted-foreground);
}

/* ==========================================================================
   Section 7: Philosophy - Scale + Perspective
   ========================================================================== */

.philosophy-section {
    min-height: 100vh;
    perspective: 1000px;
    background: transparent;
}

.philosophy-container {
    max-width: 900px;
    width: 100%;
    padding: 0 24px;
    text-align: center;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 48px;
}

.philosophy-scale-wrapper {
    transform-style: preserve-3d;
    will-change: transform;
}

.philosophy-title {
    display: flex;
    flex-direction: column;
    gap: 16px;
}

.philosophy-word {
    font-size: clamp(2.5rem, 8vw, 5rem);
    font-weight: 800;
    line-height: 1.1;
    opacity: 0;
    will-change: transform, opacity;
}

.philosophy-word-1 {
    background: linear-gradient(135deg, var(--foreground), var(--muted-foreground));
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    background-clip: text;
}

.philosophy-word-2 {
    background: linear-gradient(135deg, var(--primary-color), var(--accent-color));
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    background-clip: text;
}

.philosophy-word-3 {
    background: linear-gradient(135deg, var(--foreground), var(--muted-foreground));
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    background-clip: text;
}

.philosophy-content {
    display: flex;
    flex-direction: column;
    gap: 24px;
    opacity: 0;
}

.philosophy-statement {
    font-size: clamp(1.25rem, 3vw, 1.75rem);
    color: var(--muted-foreground);
}

.philosophy-reason {
    font-size: clamp(1.125rem, 2.5vw, 1.5rem);
    color: var(--foreground);
    font-weight: 500;
}

.philosophy-promise {
    font-size: clamp(1.25rem, 3vw, 1.75rem);
    color: var(--primary-color);
    font-weight: 600;
}

/* ==========================================================================
   Section 8: Waitlist
   ========================================================================== */

.waitlist-section {
    min-height: 100vh;
    background: transparent;
}

.waitlist-container {
    max-width: 600px;
    width: 100%;
    padding: 0 24px;
    text-align: center;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 32px;
}

.waitlist-title {
    font-size: clamp(2rem, 5vw, 3rem);
    font-weight: 700;
    color: var(--foreground);
}

.waitlist-subtitle {
    font-size: 1.25rem;
    color: var(--muted-foreground);
}

.waitlist-form {
    width: 100%;
    display: flex;
    flex-direction: column;
    gap: 24px;
}

.form-row {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 16px;
}

.form-group {
    display: flex;
    flex-direction: column;
    gap: 8px;
    text-align: left;
}

.form-group label {
    font-size: 0.875rem;
    font-weight: 500;
    color: var(--foreground);
}

.form-group input,
.form-group select {
    padding: 14px 16px;
    background: var(--glass-bg);
    border: 2px solid var(--glass-border);
    border-radius: 12px;
    color: var(--foreground);
    font-size: 1rem;
    font-family: inherit;
    transition: all 0.3s ease;
}

.form-group input:focus,
.form-group select:focus {
    outline: none;
    border-color: var(--primary-color);
    background: rgba(255, 255, 255, 0.08);
    box-shadow: 0 0 0 3px rgba(234, 88, 12, 0.1);
}

.form-group input::placeholder {
    color: var(--muted-foreground);
}

.form-group select {
    cursor: pointer;
    appearance: none;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2394a3b8' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 12px center;
    padding-right: 40px;
}

.form-group select option {
    background: var(--background);
    color: var(--foreground);
}

.waitlist-button {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    padding: 16px 32px;
    background: linear-gradient(135deg, var(--primary-color), var(--primary-hover));
    border: none;
    border-radius: 12px;
    color: white;
    font-size: 1.125rem;
    font-weight: 600;
    font-family: inherit;
    cursor: pointer;
    transition: all 0.3s ease;
    box-shadow: 0 4px 20px rgba(234, 88, 12, 0.3);
}

.waitlist-button:hover {
    transform: translateY(-2px);
    box-shadow: 0 8px 30px rgba(234, 88, 12, 0.4);
}

.waitlist-button:active {
    transform: translateY(0);
}

.waitlist-button:disabled {
    opacity: 0.7;
    cursor: not-allowed;
    transform: none;
}

.button-arrow {
    display: flex;
    transition: transform 0.3s ease;
}

.waitlist-button:hover .button-arrow {
    transform: translateX(4px);
}

.waitlist-note {
    font-size: 0.875rem;
    color: var(--muted-foreground);
    letter-spacing: 0.1em;
    text-transform: uppercase;
}

/* ==========================================================================
   Section 9: Footer
   ========================================================================== */

.footer-section {
    min-height: auto;
    padding: 60px 24px;
    background: transparent;
}

.footer-container {
    max-width: 1200px;
    width: 100%;
    margin: 0 auto;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 40px;
}

.footer-brand {
    display: flex;
    align-items: center;
    gap: 16px;
}

.footer-logo {
    width: 48px;
    height: 48px;
    object-fit: contain;
}

.footer-brand-text {
    display: flex;
    flex-direction: column;
}

.footer-title {
    font-size: 1.25rem;
    font-weight: 700;
    color: var(--foreground);
}

.footer-subtitle {
    font-size: 0.875rem;
    color: var(--muted-foreground);
}

.footer-links {
    display: flex;
    gap: 24px;
}

.footer-social {
    display: flex;
    align-items: center;
    gap: 8px;
    color: var(--muted-foreground);
    text-decoration: none;
    font-weight: 500;
    transition: color 0.3s ease;
}

.footer-social:hover {
    color: var(--primary-color);
}

.footer-bottom {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 16px;
    padding-top: 32px;
    border-top: 1px solid var(--glass-border);
    width: 100%;
    text-align: center;
}

.footer-legal {
    display: flex;
    gap: 16px;
    align-items: center;
}

.footer-legal a {
    color: var(--muted-foreground);
    text-decoration: none;
    font-size: 0.875rem;
    transition: color 0.3s ease;
}

.footer-legal a:hover {
    color: var(--foreground);
}

.footer-divider {
    color: var(--glass-border);
}

.footer-copyright {
    font-size: 0.875rem;
    color: var(--muted-foreground);
}

/* ==========================================================================
   Notification System
   ========================================================================== */

.notification {
    position: fixed;
    top: 20px;
    right: 20px;
    max-width: 400px;
    padding: 16px 24px;
    background: var(--glass-bg);
    backdrop-filter: blur(20px);
    border: 1px solid var(--glass-border);
    border-radius: var(--radius);
    color: var(--foreground);
    z-index: 10000;
    animation: slideInRight 0.3s ease-out;
    box-shadow: var(--shadow);
    will-change: transform, opacity;
}

.notification-success {
    border-color: rgba(34, 197, 94, 0.3);
}

.notification-error {
    border-color: rgba(239, 68, 68, 0.3);
}

.notification-content {
    display: flex;
    align-items: center;
    gap: 12px;
}

.notification-icon {
    font-size: 1.25rem;
}

.notification-success .notification-icon {
    color: #22c55e;
}

.notification-error .notification-icon {
    color: #ef4444;
}

.notification-message {
    font-size: 0.9rem;
    line-height: 1.4;
}

@keyframes slideInRight {
    from {
        transform: translateX(100%);
        opacity: 0;
    }
    to {
        transform: translateX(0);
        opacity: 1;
    }
}

/* ==========================================================================
   Responsive Design
   ========================================================================== */

@media (max-width: 768px) {
    .scroll-section,
    .pinned-section {
        padding: 60px 20px;
    }

    .hero-logo-animated {
        width: clamp(220px, 80vw, 360px);
    }

    /* Peel text — scale down to fit narrow screens */
    .peel-text-1,
    .peel-text-2 {
        font-size: clamp(1rem, 4.5vw, 1.4rem);
        max-width: 95vw;
    }

    /* Disable horizontal scroll on mobile */
    .horizontal-section {
        overflow: visible;
    }

    .horizontal-track {
        flex-direction: column;
        width: 100% !important;
        transform: none !important;
    }

    .horizontal-panel {
        width: 100%;
        height: auto;
        min-height: 100vh;
    }

    .pain-track,
    .features-track {
        width: 100%;
    }

    .horizontal-progress {
        display: none;
    }

    /* Feature panels stack vertically */
    .feature-panel-content {
        grid-template-columns: 1fr;
        gap: 40px;
    }

    .feature-content-reversed {
        direction: ltr;
    }

    .feature-device {
        order: -1;
    }

    .device-mockup {
        width: 220px;
        height: 440px;
    }

    .transform-line {
        font-size: clamp(1.25rem, 5vw, 1.75rem);
    }

    .ecosystem-diagram {
        transform: scale(0.75);
    }

    .form-row {
        grid-template-columns: 1fr;
    }

    .philosophy-title {
        gap: 8px;
    }

    .footer-legal {
        flex-wrap: wrap;
        justify-content: center;
    }

    .notification {
        left: 20px;
        right: 20px;
        max-width: none;
    }

    /* Reduce shapes on mobile */
    .shape-layer .shape:nth-child(n+7) {
        display: none;
    }

}

@media (max-width: 480px) {

    .transform-line {
        font-size: 1.1rem;
    }

    .ecosystem-node {
        padding: 12px 16px;
        font-size: 0.8rem;
    }

    .waitlist-button {
        width: 100%;
    }

    .scroll-indicator {
        bottom: 40px;
    }
}

/* ==========================================================================
   Accessibility
   ========================================================================== */

.skip-link {
    position: absolute;
    top: -40px;
    left: 0;
    background: var(--primary-color);
    color: white;
    padding: 8px 16px;
    z-index: 10001;
    transition: top 0.3s;
    text-decoration: none;
    font-weight: 500;
    border-radius: 0 0 var(--radius) 0;
}

.skip-link:focus {
    top: 0;
    outline: 2px solid var(--foreground);
    outline-offset: 2px;
}

.visually-hidden {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}
