/* ============================================================
   luv.st — Vaporwave Diagonal Split-Screen
   Palette: jewel-tones | Typography: retro-display
   ============================================================ */

/* --- Google Fonts loaded in HTML via <link> ---
   Big Shoulders Display 900 — primary display headings
   DM Sans 300/400 — body copy
   Bebas Neue — section sub-headings
*/

/* ============================================================
   CSS Custom Properties
   ============================================================ */
:root {
    /* Colors */
    --void:       #1a0a2e;
    --deep-blue:  #0a1a4a;
    --royal:      #2d0a5e;
    --amethyst:   #7b2d8b;
    --magenta:    #c8006e;
    --teal:       #00c8b4;
    --alabaster:  #e8d5c0;
    --lavender:   #d8c8e0;
    --ghost:      #f0f0f8;

    /* Gradients */
    --grad-dark: linear-gradient(135deg, #1a0a2e 0%, #2d0a5e 50%, #0a1a4a 100%);
    --grad-marble: linear-gradient(160deg, #e8d5c0 0%, #f0f0f8 40%, #d8c8e0 100%);
    --grad-dark-alt: linear-gradient(135deg, #0a1a4a 0%, #1a0a2e 60%, #2d0a5e 100%);

    /* Seam angles */
    --seam-left: 72%;
    --seam-right: 28%;

    /* CRT scanline */
    --scanline: repeating-linear-gradient(
        0deg,
        transparent 0px,
        #00000008 1px,
        transparent 2px
    );

    /* Neon glow */
    --glow-magenta: 0 0 12px #c8006e60, 0 0 32px #c8006e30;
    --glow-teal: 0 0 8px #00c8b4, 0 0 24px #00c8b470;
    --seam-glow: 0 0 8px #00c8b4, 0 0 24px #00c8b470;
}

/* ============================================================
   Vertical Micro-Nav (5 color-coded dots)
   ============================================================ */
.micro-nav {
    position: fixed;
    left: 20px;
    top: 50%;
    transform: translateY(-50%);
    z-index: 100;
    display: flex;
    flex-direction: column;
    gap: 14px;
    pointer-events: all;
}

.micro-dot {
    display: block;
    width: 8px;
    height: 8px;
    border-radius: 50%;
    border: 1px solid currentColor;
    background: transparent;
    transition: all 0.3s ease;
    text-decoration: none;
    position: relative;
}

.micro-dot.active,
.micro-dot:hover {
    transform: scale(1.6);
}

.dot-1 { color: var(--magenta); }
.dot-1.active, .dot-1:hover { background: var(--magenta); box-shadow: 0 0 8px var(--magenta); }

.dot-2 { color: var(--ghost); }
.dot-2.active, .dot-2:hover { background: var(--ghost); box-shadow: 0 0 8px #ffffff80; }

.dot-3 { color: var(--amethyst); }
.dot-3.active, .dot-3:hover { background: var(--amethyst); box-shadow: 0 0 8px var(--amethyst); }

.dot-4 { color: var(--teal); }
.dot-4.active, .dot-4:hover { background: var(--teal); box-shadow: 0 0 8px var(--teal); }

.dot-5 { color: var(--magenta); }
.dot-5.active, .dot-5:hover { background: var(--magenta); box-shadow: 0 0 8px var(--magenta); }

@media (max-width: 768px) {
    .micro-nav { display: none; }
}

/* ============================================================
   Reset & Base
   ============================================================ */
*, *::before, *::after {
    box-sizing: border-box;
    margin: 0;
    padding: 0;
}

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

body {
    background-color: var(--void);
    color: var(--ghost);
    font-family: 'DM Sans', sans-serif;
    font-weight: 300;
    overflow-x: hidden;
    line-height: 1.5;
}

/* ============================================================
   Section Base
   ============================================================ */
.section {
    position: relative;
    width: 100%;
    min-height: 100vh;
    display: flex;
    flex-direction: row;
    overflow: hidden;
}

/* ============================================================
   Panels — Diagonal Split via clip-path
   ============================================================ */
.panel {
    position: absolute;
    top: 0;
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
}

/* Section 1 — seam at 72%/28% */
.section-1 .panel-left {
    width: 78%;
    left: 0;
    clip-path: polygon(0 0, 100% 0, calc(var(--seam-left) + 6%) 100%, 0% 100%);
}

.section-1 .panel-right {
    width: 35%;
    right: 0;
    clip-path: polygon(calc(100% - (100% - var(--seam-right) + 6%)) 0, 100% 0, 100% 100%, 0% 100%);
}

/* Section 2 — seam at 58%/42%, shifted right (manifesto left dominates) */
.section-2 .panel-left {
    width: 65%;
    left: 0;
    clip-path: polygon(0 0, 100% 0, 85% 100%, 0% 100%);
}

.section-2 .panel-right {
    width: 50%;
    right: 0;
    clip-path: polygon(30% 0, 100% 0, 100% 100%, 0% 100%);
}

/* Section 3 — marble at 60%, dark at 40% */
.section-3 .panel-left {
    width: 66%;
    left: 0;
    clip-path: polygon(0 0, 100% 0, 82% 100%, 0% 100%);
}

.section-3 .panel-right {
    width: 45%;
    right: 0;
    clip-path: polygon(28% 0, 100% 0, 100% 100%, 0% 100%);
}

/* Section 4 — seam at 68%/32% */
.section-4 .panel-left {
    width: 74%;
    left: 0;
    clip-path: polygon(0 0, 100% 0, 80% 100%, 0% 100%);
}

.section-4 .panel-right {
    width: 38%;
    right: 0;
    clip-path: polygon(24% 0, 100% 0, 100% 100%, 0% 100%);
}

/* ============================================================
   Panel Colors
   ============================================================ */
.panel-dark {
    background: var(--grad-dark);
}

.panel-dark-alt {
    background: var(--grad-dark-alt);
}

.panel-marble {
    background:
        linear-gradient(160deg, #e8d5c0 0%, #f0f0f8 40%, #d8c8e0 100%),
        repeating-linear-gradient(
            72deg,
            transparent 0px,
            #c8006e18 1px,
            transparent 2px,
            transparent 40px
        ),
        repeating-linear-gradient(
            140deg,
            transparent 0px,
            #7b2d8b12 1px,
            transparent 2px,
            transparent 60px
        );
    background-blend-mode: normal, multiply, multiply;
}

/* CRT scanline on dark panels */
.panel-dark::before,
.panel-dark-alt::before {
    content: '';
    position: absolute;
    inset: 0;
    background: var(--scanline);
    pointer-events: none;
    z-index: 1;
}

/* ============================================================
   Panel Content
   ============================================================ */
.panel-content {
    position: relative;
    z-index: 2;
    padding: 4rem 3rem;
    width: 100%;
    height: 100%;
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.panel-left-content {
    padding-left: 6rem;
    padding-right: 8rem;
    max-width: 580px;
}

.panel-right-content {
    padding-left: 5rem;
    padding-right: 3rem;
    max-width: 560px;
}

/* ============================================================
   Grid Overlay (ultra-faint perspective lines)
   ============================================================ */
.grid-overlay {
    position: absolute;
    inset: 0;
    pointer-events: none;
    z-index: 0;
    overflow: hidden;
}

.grid-overlay::before {
    content: '';
    position: absolute;
    inset: 0;
    background-image:
        linear-gradient(90deg, #7b2d8b08 1px, transparent 1px),
        linear-gradient(0deg, #7b2d8b08 1px, transparent 1px);
    background-size: 80px 80px;
    background-position: -1px -1px;
}

/* ============================================================
   Section 1 — Identity
   ============================================================ */
.identity-block {
    display: flex;
    flex-direction: column;
    gap: 1.2rem;
}

.logotype {
    font-family: 'Big Shoulders Display', sans-serif;
    font-weight: 900;
    font-size: clamp(80px, 12vw, 140px);
    color: var(--magenta);
    text-shadow: var(--glow-magenta);
    line-height: 0.9;
    letter-spacing: -2px;
    /* initial state for animation */
    opacity: 0;
    transform: translateY(24px);
    transition: opacity 0.6s ease 0.3s, transform 0.6s ease 0.3s;
}

.descriptor {
    font-family: 'DM Sans', sans-serif;
    font-weight: 300;
    font-size: 16px;
    color: var(--lavender);
    letter-spacing: 0.08em;
    text-transform: lowercase;
    opacity: 0;
    transform: translateY(24px);
    transition: opacity 0.6s ease 0.6s, transform 0.6s ease 0.6s;
}

/* ============================================================
   Seam SVG
   ============================================================ */
.seam-svg {
    position: absolute;
    top: 0;
    right: -1px;
    width: 4px;
    height: 100%;
    z-index: 10;
    pointer-events: none;
    filter: drop-shadow(0 0 8px #00c8b4) drop-shadow(0 0 24px #00c8b470);
}

.seam-line {
    stroke: #00c8b4;
    stroke-width: 2;
    stroke-dasharray: 800;
    stroke-dashoffset: 800;
    transition: stroke-dashoffset 0.8s cubic-bezier(0.4, 0, 0.2, 1);
}

.seam-line.drawn {
    stroke-dashoffset: 0;
}

/* ============================================================
   Mountain Bands (inter-section transitions)
   ============================================================ */
.mountain-band {
    position: absolute;
    bottom: -1px;
    left: 0;
    width: 100%;
    height: 120px;
    z-index: 20;
    pointer-events: none;
}

.mountain-band svg {
    width: 100%;
    height: 100%;
    display: block;
}

.mountain-path {
    stroke-dasharray: 3000;
    stroke-dashoffset: 3000;
    fill-opacity: 0;
    transition:
        stroke-dashoffset 1.2s cubic-bezier(0.4, 0, 0.2, 1),
        fill-opacity 0.4s ease 1.0s;
}

.mountain-path.drawn {
    stroke-dashoffset: 0;
    fill-opacity: 1;
}

/* ============================================================
   Section 2 — Manifesto
   ============================================================ */
.manifesto-line {
    font-family: 'Big Shoulders Display', sans-serif;
    font-weight: 900;
    font-size: clamp(52px, 7vw, 80px);
    color: var(--ghost);
    line-height: 0.95;
    letter-spacing: -1px;
    text-shadow: var(--glow-magenta);
    opacity: 0;
    transform: translateY(24px);
    transition: opacity 0.6s ease 0.3s, transform 0.6s ease 0.3s;
}

.perspective-grid {
    width: 100%;
    max-width: 560px;
    height: auto;
    opacity: 0.85;
}

/* ============================================================
   Section 3 — Visual Gallery
   ============================================================ */
.swatch-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 1px;
    width: 100%;
    max-width: 420px;
    border: 1px solid rgba(200,0,110,0.2);
    opacity: 0;
    transform: translateY(24px);
    transition: opacity 0.6s ease 0.3s, transform 0.6s ease 0.3s;
}

.swatch {
    aspect-ratio: 1.6 / 1;
    display: flex;
    align-items: flex-end;
    padding: 10px 12px;
    position: relative;
    overflow: hidden;
}

.swatch::after {
    content: '';
    position: absolute;
    inset: 0;
    background: var(--scanline);
    pointer-events: none;
}

.swatch-label {
    font-family: 'Bebas Neue', sans-serif;
    font-size: 13px;
    color: var(--ghost);
    letter-spacing: 0.12em;
    position: relative;
    z-index: 1;
    text-shadow: 0 1px 4px rgba(0,0,0,0.6);
}

.ghost-numeral {
    font-family: 'Big Shoulders Display', sans-serif;
    font-weight: 900;
    font-size: clamp(160px, 22vw, 280px);
    color: var(--ghost);
    opacity: 0.08;
    line-height: 1;
    letter-spacing: -8px;
    user-select: none;
    pointer-events: none;
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
}

/* ============================================================
   Section 4 — Process / Story
   ============================================================ */
.process-heading {
    font-family: 'Bebas Neue', sans-serif;
    font-size: clamp(36px, 5vw, 56px);
    color: var(--teal);
    letter-spacing: 0.06em;
    text-shadow: var(--glow-teal);
    opacity: 0;
    transform: translateY(24px);
    transition: opacity 0.6s ease 0.3s, transform 0.6s ease 0.3s;
    margin-bottom: 1.5rem;
}

.process-tags {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
    margin-bottom: 1.8rem;
    opacity: 0;
    transform: translateY(24px);
    transition: opacity 0.6s ease 0.5s, transform 0.6s ease 0.5s;
}

.chip {
    display: inline-block;
    font-family: 'Bebas Neue', sans-serif;
    font-size: 11px;
    letter-spacing: 0.14em;
    color: var(--teal);
    background: var(--void);
    border: 1px solid var(--teal);
    border-radius: 2px;
    padding: 3px 8px;
    white-space: nowrap;
}

.process-body {
    font-family: 'DM Sans', sans-serif;
    font-weight: 300;
    font-size: 14px;
    color: var(--ghost);
    line-height: 1.7;
    margin-bottom: 1rem;
    opacity: 0;
    transform: translateY(16px);
    transition: opacity 0.6s ease 0.7s, transform 0.6s ease 0.7s;
}

.process-body + .process-body {
    transition-delay: 0.85s;
}

.process-body + .process-body + .process-body {
    transition-delay: 1.0s;
}

/* Mountain stack in panel right */
.mountain-stack {
    position: relative;
    width: 100%;
    height: 100%;
    min-height: 300px;
}

.mountain-layer {
    position: absolute;
    bottom: 0;
    left: 0;
    width: 100%;
    height: auto;
}

/* ============================================================
   Section 5 — Closing
   ============================================================ */
.section-5 {
    background: var(--grad-dark);
    flex-direction: column;
    align-items: center;
    justify-content: center;
}

.section-5::before {
    content: '';
    position: absolute;
    inset: 0;
    background: var(--scanline);
    pointer-events: none;
    z-index: 1;
}

.closing-inner {
    position: relative;
    width: 100%;
    height: 100%;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    z-index: 2;
    min-height: 100vh;
}

.valley-mountain {
    position: absolute;
    top: -1px;
    left: 0;
    width: 100%;
    height: 120px;
    pointer-events: none;
    z-index: 3;
}

.valley-mountain svg {
    width: 100%;
    height: 100%;
    display: block;
}

.valley-path {
    /* valley = inverted mountain, pointing down */
    fill-opacity: 0;
    stroke-dasharray: 3000;
    stroke-dashoffset: 3000;
    transition:
        stroke-dashoffset 1.2s cubic-bezier(0.4, 0, 0.2, 1),
        fill-opacity 0.4s ease 1.0s;
}

.valley-path.drawn {
    stroke-dashoffset: 0;
    fill-opacity: 1;
}

.closing-content {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 1.5rem;
    text-align: center;
    z-index: 4;
    position: relative;
}

.closing-logotype {
    font-family: 'Big Shoulders Display', sans-serif;
    font-weight: 900;
    font-size: clamp(100px, 14vw, 180px);
    color: var(--magenta);
    line-height: 0.9;
    letter-spacing: -4px;
    animation: glow-pulse 3s ease-in-out infinite;
    opacity: 0;
    transform: translateY(24px);
    transition: opacity 0.8s ease 0.4s, transform 0.8s ease 0.4s;
}

.closing-logotype.drawn {
    opacity: 1;
    transform: translateY(0);
}

@keyframes glow-pulse {
    0%, 100% { text-shadow: 0 0 12px #c8006e, 0 0 32px #c8006e60; }
    50%       { text-shadow: 0 0 12px #00c8b4, 0 0 40px #00c8b440, 0 0 80px #00c8b420; }
}

.closing-tagline {
    font-family: 'DM Sans', sans-serif;
    font-weight: 300;
    font-size: 16px;
    color: var(--lavender);
    letter-spacing: 0.12em;
    opacity: 0;
    transform: translateY(16px);
    transition: opacity 0.6s ease 0.9s, transform 0.6s ease 0.9s;
}

.closing-tagline.drawn {
    opacity: 1;
    transform: translateY(0);
}

.closing-contact {
    margin-top: 0.5rem;
    opacity: 0;
    transition: opacity 0.6s ease 1.2s;
}

.closing-contact.drawn {
    opacity: 1;
}

.chip-large {
    font-family: 'DM Sans', sans-serif;
    font-size: 13px;
    font-weight: 400;
    letter-spacing: 0.1em;
    padding: 6px 16px;
    border-radius: 2px;
}

.closing-grid {
    position: absolute;
    inset: 0;
    z-index: 0;
}

/* ============================================================
   Section Heading Groups — animation trigger
   ============================================================ */
.section-heading-group.is-visible .section-heading,
.section-heading-group.is-visible .process-heading,
.section-heading-group.is-visible .swatch-grid,
.section-heading-group.is-visible .process-tags,
.section-heading-group.is-visible .process-body,
.section-heading-group.is-visible .manifesto-line {
    opacity: 1;
    transform: translateY(0);
}

/* Identity block animation */
#section-identity .identity-block.is-visible .logotype,
#section-identity .identity-block.is-visible .descriptor {
    opacity: 1;
    transform: translateY(0);
}

/* ============================================================
   Section 2 right panel
   ============================================================ */
.s2-right {
    background: var(--grad-dark-alt);
}

.s2-mountain {
    stroke-dasharray: 2000;
    stroke-dashoffset: 2000;
    fill-opacity: 0;
    transition:
        stroke-dashoffset 1.2s cubic-bezier(0.4, 0, 0.2, 1),
        fill-opacity 0.4s ease 1.0s;
}

.s2-mountain.drawn {
    stroke-dashoffset: 0;
    fill-opacity: 1;
}

.perspective-grid .grid-lines {
    stroke: #7b2d8b;
    stroke-opacity: 0.12;
}

/* ============================================================
   Responsive
   ============================================================ */
@media (max-width: 768px) {
    .section {
        flex-direction: column;
        min-height: 100vh;
    }

    .panel {
        position: relative;
        width: 100% !important;
        height: 50vh;
        clip-path: none !important;
    }

    .panel-left-content,
    .panel-right-content {
        padding: 2rem 1.5rem;
        max-width: 100%;
    }

    .logotype {
        font-size: 72px;
    }

    .closing-logotype {
        font-size: 80px;
    }

    .ghost-numeral {
        font-size: 120px;
    }

    .mountain-band {
        display: none;
    }

    .swatch-grid {
        max-width: 100%;
    }
}
