/* ============================================
   RRIPPL.com -- Styles
   Sepia-nostalgic, flat-design, organic-flow
   ============================================ */

/* --- CSS Custom Properties --- */
:root {
    --bg-primary: #F5ECD7;        /* Aged Parchment */
    --bg-secondary: #EDE0C8;      /* Warm Linen */
    --text-primary: #3B2F20;      /* Burnt Umber Ink */
    --text-secondary: #6B5B4A;    /* Faded Walnut */
    --accent-primary: #B8562E;    /* Terracotta Seal */
    --accent-secondary: #2E4057;  /* Indigo Stamp */
    --decorative: #5E8C6A;        /* Oxidized Copper */
    --glass-tint: rgba(245, 236, 215, 0.45); /* Sepia Frost */
    --glass-border: rgba(107, 91, 74, 0.15);
    --divider: #D4C5A9;           /* Tea Stain */

    --font-display: 'Playfair Display', Georgia, serif;
    --font-body: 'Lora', 'Times New Roman', serif;
    --font-accent: 'Cormorant Garamond', 'Garamond', serif;
}

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

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

body {
    font-family: var(--font-body);
    font-weight: 400;
    font-size: 1.125rem;
    line-height: 1.85;
    color: var(--text-primary);
    background-color: var(--bg-primary);
    overflow-x: hidden;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

/* --- Navigation Sidebar --- */
#nav-sidebar {
    position: fixed;
    left: 0;
    top: 0;
    width: 60px;
    height: 100vh;
    z-index: 100;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    pointer-events: none;
    opacity: 0;
    transition: opacity 0.8s ease;
}

#nav-sidebar.visible {
    opacity: 1;
    pointer-events: auto;
}

#nav-path-svg {
    width: 40px;
    height: 600px;
    max-height: 80vh;
}

#nav-line {
    stroke-dasharray: 1000;
    stroke-dashoffset: 0;
}

#nav-line-progress {
    stroke-dasharray: 1000;
    stroke-dashoffset: 1000;
    transition: stroke-dashoffset 0.3s ease-out;
}

.nav-dot {
    fill: var(--bg-primary);
    stroke: var(--divider);
    stroke-width: 1.5;
    cursor: pointer;
    transition: fill 0.4s ease, stroke 0.4s ease, r 0.3s ease;
}

.nav-dot.active {
    fill: var(--accent-primary);
    stroke: var(--accent-primary);
    r: 6;
}

.nav-dot:hover {
    stroke: var(--accent-primary);
}

.nav-labels {
    position: absolute;
    left: 50px;
    top: 50%;
    transform: translateY(-50%);
    display: flex;
    flex-direction: column;
    height: 80vh;
    max-height: 600px;
    justify-content: space-between;
    padding: 60px 0;
    pointer-events: none;
}

.nav-label {
    font-family: var(--font-accent);
    font-weight: 300;
    font-size: 0.8rem;
    letter-spacing: 0.15em;
    text-transform: uppercase;
    color: var(--text-secondary);
    opacity: 0;
    transform: translateX(-8px);
    transition: opacity 0.4s ease, transform 0.4s ease, color 0.4s ease;
    white-space: nowrap;
}

.nav-label.active {
    opacity: 1;
    transform: translateX(0);
    color: var(--accent-primary);
}

/* --- Cursor Ripple Effect --- */
#cursor-ripple-container {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    pointer-events: none;
    z-index: 50;
}

.cursor-ripple {
    position: absolute;
    width: 120px;
    height: 120px;
    transform: translate(-50%, -50%);
}

.cursor-ripple circle {
    fill: none;
    stroke: var(--divider);
    stroke-width: 1;
    opacity: 0;
    animation: cursorRippleExpand 1.2s ease-out forwards;
}

.cursor-ripple circle:nth-child(2) {
    animation-delay: 0.15s;
}

.cursor-ripple circle:nth-child(3) {
    animation-delay: 0.3s;
}

@keyframes cursorRippleExpand {
    0% {
        r: 5;
        opacity: 0.6;
        stroke-width: 1.5;
    }
    100% {
        r: 55;
        opacity: 0;
        stroke-width: 0.3;
    }
}

/* --- Sections General --- */
.act {
    position: relative;
    width: 100%;
    overflow: hidden;
}

.still-zone {
    background-color: var(--bg-primary);
    display: flex;
    align-items: center;
    justify-content: center;
    flex-direction: column;
}

.ripple-zone {
    background-color: var(--bg-primary);
    display: flex;
    flex-direction: column;
    align-items: center;
    padding: 8vh 5vw;
}

/* --- ACT 1: The Drop --- */
#act-drop {
    min-height: 100vh;
    position: relative;
}

.drop-content {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    height: 100vh;
}

#hero-title {
    font-family: var(--font-display);
    font-weight: 700;
    font-size: 12vw;
    color: var(--text-primary);
    letter-spacing: -0.02em;
    z-index: 2;
    position: relative;
    text-align: center;
    transition: letter-spacing 0.1s ease-out;
}

.hero-letter {
    display: inline-block;
    opacity: 0;
    transform: translateY(20px);
    animation: letterReveal 0.6s ease-out forwards;
}

.hero-letter:nth-child(1) { animation-delay: 0.3s; }
.hero-letter:nth-child(2) { animation-delay: 0.45s; }
.hero-letter:nth-child(3) { animation-delay: 0.6s; }
.hero-letter:nth-child(4) { animation-delay: 0.75s; }
.hero-letter:nth-child(5) { animation-delay: 0.9s; }
.hero-letter:nth-child(6) { animation-delay: 1.05s; }

@keyframes letterReveal {
    0% {
        opacity: 0;
        transform: translateY(20px);
    }
    100% {
        opacity: 1;
        transform: translateY(0);
    }
}

#hero-ripples {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: 80vw;
    height: 80vw;
    max-width: 800px;
    max-height: 800px;
    z-index: 1;
    pointer-events: none;
}

.ripple-ring {
    stroke-dasharray: 2000;
    stroke-dashoffset: 2000;
    opacity: 0;
    transition: opacity 0.6s ease;
}

.ripple-ring.drawn {
    animation: drawRing 2s cubic-bezier(0.25, 0.46, 0.45, 0.94) forwards;
}

.ripple-ring:nth-child(1).drawn { animation-delay: 0s; }
.ripple-ring:nth-child(2).drawn { animation-delay: 0.2s; }
.ripple-ring:nth-child(3).drawn { animation-delay: 0.4s; }
.ripple-ring:nth-child(4).drawn { animation-delay: 0.6s; }
.ripple-ring:nth-child(5).drawn { animation-delay: 0.8s; }
.ripple-ring:nth-child(6).drawn { animation-delay: 1.0s; }

@keyframes drawRing {
    0% {
        stroke-dashoffset: 2000;
        opacity: 0;
    }
    10% {
        opacity: 1;
    }
    100% {
        stroke-dashoffset: 0;
        opacity: 0.4;
    }
}

/* Enso Background Decoration */
.enso-bg {
    position: absolute;
    width: 200px;
    height: 200px;
    pointer-events: none;
    z-index: 0;
}

/* --- Ripple Dividers --- */
.ripple-divider {
    width: 100%;
    padding: 4vh 0;
    display: flex;
    justify-content: center;
    background-color: var(--bg-primary);
    overflow: hidden;
}

.ripple-divider svg {
    width: 100%;
    max-width: 1200px;
    height: 200px;
}

.divider-ring {
    stroke-dasharray: 1200;
    stroke-dashoffset: 1200;
    opacity: 0;
}

.divider-ring.drawn {
    animation: drawDividerRing 1.8s cubic-bezier(0.25, 0.46, 0.45, 0.94) forwards;
}

.divider-ring:nth-child(1).drawn { animation-delay: 0s; }
.divider-ring:nth-child(2).drawn { animation-delay: 0.2s; }
.divider-ring:nth-child(3).drawn { animation-delay: 0.4s; }
.divider-ring:nth-child(4).drawn { animation-delay: 0.6s; }
.divider-ring:nth-child(5).drawn { animation-delay: 0.8s; }
.divider-ring:nth-child(6).drawn { animation-delay: 1.0s; }

@keyframes drawDividerRing {
    0% {
        stroke-dashoffset: 1200;
        opacity: 0;
    }
    10% {
        opacity: 0.8;
    }
    100% {
        stroke-dashoffset: 0;
        opacity: 0.5;
    }
}

/* --- Section Headings --- */
.section-heading-wrap {
    text-align: center;
    margin-bottom: 6vh;
    position: relative;
}

.section-heading {
    font-family: var(--font-display);
    font-weight: 700;
    font-size: 3.5rem;
    color: var(--text-secondary);
    transition: color 0.6s ease;
    margin-bottom: 0.5rem;
}

.section-heading.revealed {
    color: var(--text-primary);
}

.heading-underline {
    width: 300px;
    height: 20px;
    display: block;
    margin: 0 auto;
}

.underline-path {
    stroke-dasharray: 500;
    stroke-dashoffset: 500;
}

.underline-path.drawn {
    animation: drawUnderline 1.2s cubic-bezier(0.25, 0.46, 0.45, 0.94) forwards;
}

@keyframes drawUnderline {
    to {
        stroke-dashoffset: 0;
    }
}

/* --- Adinkra Symbols --- */
.adinkra-symbol {
    width: 60px;
    height: 60px;
    margin: 3vh auto;
    opacity: 0;
    transition: opacity 0.8s ease;
}

.adinkra-symbol.visible {
    opacity: 0.6;
}

/* --- Glassmorphic Cards --- */
.glass-card {
    background: var(--glass-tint);
    backdrop-filter: blur(16px) saturate(1.2);
    -webkit-backdrop-filter: blur(16px) saturate(1.2);
    border: 1px solid var(--glass-border);
    border-radius: 16px;
    padding: 2.5rem;
    box-shadow: 0 8px 32px rgba(59, 47, 32, 0.08);
    position: relative;
    max-width: 380px;
    width: 100%;
    transition: transform 0.5s ease, border-color 0.4s ease;
}

.glass-card:hover {
    transform: translateY(-4px);
    border-color: rgba(107, 91, 74, 0.3);
}

/* Card Corner Ornaments */
.card-corner-ornament {
    position: absolute;
    width: 40px;
    height: 40px;
}

.card-corner-ornament.top-left {
    top: 8px;
    left: 8px;
}

.card-corner-ornament.top-right {
    top: 8px;
    right: 8px;
}

.card-corner-ornament.bottom-right {
    bottom: 8px;
    right: 8px;
}

.card-corner-ornament svg {
    width: 100%;
    height: 100%;
}

.card-meta {
    font-family: var(--font-accent);
    font-weight: 300;
    font-size: 0.8rem;
    letter-spacing: 0.15em;
    text-transform: uppercase;
    color: var(--text-secondary);
    display: block;
    margin-bottom: 0.75rem;
}

.card-title {
    font-family: var(--font-display);
    font-weight: 700;
    font-size: 1.35rem;
    line-height: 1.4;
    color: var(--text-primary);
    margin-bottom: 1rem;
}

.card-body {
    font-family: var(--font-body);
    font-weight: 400;
    font-size: 1rem;
    line-height: 1.75;
    color: var(--text-secondary);
    max-width: 52ch;
}

/* --- Card Fan Layouts --- */
.card-fan {
    display: flex;
    justify-content: center;
    align-items: flex-start;
    gap: 0;
    position: relative;
    padding: 4vh 0;
    perspective: 1200px;
}

#fan-1 {
    gap: -20px;
}

.fan-card {
    opacity: 0;
    transform: scale(0.95) rotateZ(0deg) translateX(0);
    transform-origin: center bottom;
    transition: opacity 0.8s ease, transform 0.8s cubic-bezier(0.34, 1.56, 0.64, 1);
}

.fan-card.dealt {
    opacity: 1;
}

.fan-card.dealt[data-rotation="-18"] {
    transform: rotateZ(-18deg) translateX(-60px);
}

.fan-card.dealt[data-rotation="-12"] {
    transform: rotateZ(-12deg) translateX(-40px);
}

.fan-card.dealt[data-rotation="-8"] {
    transform: rotateZ(-8deg) translateX(-30px);
}

.fan-card.dealt[data-rotation="-4"] {
    transform: rotateZ(-4deg) translateX(-10px);
}

.fan-card.dealt[data-rotation="0"] {
    transform: rotateZ(0deg) translateX(0);
}

.fan-card.dealt[data-rotation="4"] {
    transform: rotateZ(4deg) translateX(10px);
}

.fan-card.dealt[data-rotation="8"] {
    transform: rotateZ(8deg) translateX(30px);
}

.fan-card.dealt[data-rotation="12"] {
    transform: rotateZ(12deg) translateX(40px);
}

.fan-card.dealt[data-rotation="18"] {
    transform: rotateZ(18deg) translateX(60px);
}

.fan-card:hover {
    z-index: 10;
}

/* Wide fan for Act 3 */
.wide-fan {
    flex-wrap: wrap;
    gap: 0;
    max-width: 1400px;
}

.wide-fan .fan-card {
    margin: -10px;
}

/* --- Pull Quotes --- */
.pull-quote {
    font-family: var(--font-display);
    font-weight: 400;
    font-style: italic;
    font-size: 2rem;
    line-height: 1.6;
    color: var(--text-primary);
    text-align: center;
    max-width: 52ch;
    margin: 6vh auto;
    padding: 2vh 4vw;
    opacity: 0;
    transform: translateY(20px);
    transition: opacity 0.8s ease, transform 0.8s ease;
}

.pull-quote.visible {
    opacity: 1;
    transform: translateY(0);
}

/* --- Meander Divider --- */
.meander-divider {
    width: 100%;
    max-width: 600px;
    margin: 4vh auto;
    padding: 2vh 0;
}

.meander-divider svg {
    width: 100%;
    height: 30px;
}

/* --- ACT 3: The Widening --- */
.widening {
    background-color: var(--bg-secondary);
}

/* --- ACT 4: The Shore --- */
#act-shore {
    min-height: 150vh;
    background-color: var(--bg-primary);
    display: flex;
    align-items: center;
    justify-content: center;
}

#mandala-bg {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: 100vw;
    height: 100vw;
    max-width: 1000px;
    max-height: 1000px;
    pointer-events: none;
    z-index: 0;
}

.shore-content {
    position: relative;
    z-index: 1;
    max-width: 52ch;
    text-align: center;
    padding: 10vh 2rem;
}

.shore-text p {
    font-family: var(--font-body);
    font-weight: 400;
    font-size: 1.125rem;
    line-height: 1.85;
    color: var(--text-primary);
    margin-bottom: 2rem;
    text-align: left;
}

/* --- Sankofa Symbol --- */
.sankofa-wrap {
    margin: 8vh auto 4vh;
    text-align: center;
}

#sankofa-symbol {
    width: 120px;
    height: 120px;
    margin: 0 auto 1.5rem;
}

.sankofa-path {
    stroke-dasharray: 500;
    stroke-dashoffset: 500;
}

.sankofa-path.drawn {
    animation: drawSankofa 2.5s cubic-bezier(0.25, 0.46, 0.45, 0.94) forwards;
}

@keyframes drawSankofa {
    to {
        stroke-dashoffset: 0;
    }
}

.sankofa-caption {
    font-family: var(--font-accent);
    font-weight: 300;
    font-size: 0.8rem;
    letter-spacing: 0.15em;
    text-transform: uppercase;
    color: var(--text-secondary);
}

.closing-line {
    font-family: var(--font-display);
    font-weight: 400;
    font-style: italic;
    font-size: 1.5rem;
    color: var(--text-primary);
    margin-top: 6vh;
    opacity: 0;
    transform: translateY(12px);
    transition: opacity 1s ease, transform 1s ease;
}

.closing-line.visible {
    opacity: 1;
    transform: translateY(0);
}

/* --- Mobile / Responsive --- */
@media (max-width: 900px) {
    #nav-sidebar {
        display: none;
    }

    #hero-title {
        font-size: 16vw;
    }

    .section-heading {
        font-size: 2.5rem;
    }

    .card-fan,
    .wide-fan {
        flex-direction: column;
        align-items: center;
        gap: 2rem;
    }

    .fan-card,
    .fan-card.dealt,
    .fan-card.dealt[data-rotation="-18"],
    .fan-card.dealt[data-rotation="-12"],
    .fan-card.dealt[data-rotation="-8"],
    .fan-card.dealt[data-rotation="-4"],
    .fan-card.dealt[data-rotation="0"],
    .fan-card.dealt[data-rotation="4"],
    .fan-card.dealt[data-rotation="8"],
    .fan-card.dealt[data-rotation="12"],
    .fan-card.dealt[data-rotation="18"] {
        transform: none;
        margin: 0;
        max-width: 90vw;
    }

    .fan-card.dealt {
        opacity: 1;
        transform: none;
    }

    .pull-quote {
        font-size: 1.4rem;
        padding: 2vh 6vw;
    }

    .glass-card {
        padding: 1.8rem;
    }

    .shore-content {
        padding: 6vh 1.5rem;
    }

    #hero-ripples {
        width: 100vw;
        height: 100vw;
    }
}

@media (max-width: 600px) {
    #hero-title {
        font-size: 20vw;
    }

    .section-heading {
        font-size: 2rem;
    }

    .card-title {
        font-size: 1.15rem;
    }

    .pull-quote {
        font-size: 1.2rem;
    }

    body {
        font-size: 1rem;
    }
}
