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

body {
    background: linear-gradient(to bottom, #060d0b 0%, #0b1a15 50%, #0a0f1a 100%);
    min-height: 100vh;
    font-family: 'IBM Plex Sans', sans-serif;
    color: #b8cfc8;
    overflow-x: hidden;
}

.scroll-progress {
    position: fixed;
    left: 0;
    top: 0;
    width: 2px;
    height: 100vh;
    background: #00f0ff;
    transform-origin: top;
    transform: scaleY(0);
    z-index: 1000;
}

.act {
    min-height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 80px 0;
}

.act-content {
    max-width: 680px;
    width: 100%;
    margin: 0 auto;
    padding: 0 clamp(1.5rem, 8vw, 6rem);
    position: relative;
}

.section-number {
    font-family: 'Bebas Neue', sans-serif;
    font-size: clamp(6rem, 15vw, 10rem);
    font-weight: 400;
    line-height: 0.85;
    letter-spacing: -0.02em;
    color: rgba(0, 240, 255, 0.12);
    display: block;
    margin-bottom: 24px;
}

.section-title {
    font-family: 'Barlow Condensed', sans-serif;
    font-size: clamp(1.8rem, 4vw, 2.8rem);
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.12em;
    line-height: 1.15;
    color: #e0f7f0;
    margin-bottom: 32px;
}

.illustration {
    width: 100%;
    height: 300px;
    margin-bottom: 40px;
}

.botanical-svg {
    width: 100%;
    height: 100%;
}

.body-text {
    margin-bottom: 48px;
}

.body-text p {
    font-size: clamp(1rem, 1.8vw, 1.15rem);
    font-weight: 400;
    line-height: 1.72;
    letter-spacing: 0.005em;
    color: #b8cfc8;
    max-width: 62ch;
    margin-bottom: 1.5em;
}

.body-text p:last-child {
    margin-bottom: 0;
}

/* Wave dividers */
.wave-divider {
    height: 120px;
    display: flex;
    align-items: center;
    justify-content: center;
    max-width: 680px;
    margin: 0 auto;
    padding: 0 clamp(1.5rem, 8vw, 6rem);
}

.wave-divider svg {
    width: 100%;
    height: 40px;
}

/* Data artifacts */
.data-artifact {
    margin-top: 32px;
}

.chart-label {
    font-family: 'Barlow Condensed', sans-serif;
    font-weight: 500;
    font-size: 0.75rem;
    text-transform: uppercase;
    letter-spacing: 0.18em;
    color: rgba(0, 240, 255, 0.6);
    margin-bottom: 16px;
}

.bar-chart {
    display: flex;
    align-items: flex-end;
    gap: 12px;
    height: 120px;
}

.bar {
    flex: 1;
    height: var(--height);
    background: linear-gradient(to top, rgba(0, 240, 255, 0.3), rgba(0, 240, 255, 0.1));
    border-top: 2px solid #00f0ff;
    position: relative;
}

.bar-top {
    position: absolute;
    top: -8px;
    left: 50%;
    width: 2px;
    height: 8px;
    background: #39ff85;
    transform: translateX(-50%);
}

.bar-top::before,
.bar-top::after {
    content: '';
    position: absolute;
    top: -4px;
    width: 8px;
    height: 1px;
    background: #39ff85;
    opacity: 0.6;
}

.bar-top::before {
    left: -3px;
    transform: rotate(-30deg);
}

.bar-top::after {
    right: -3px;
    transform: rotate(30deg);
}

.line-chart svg,
.scatter-chart svg {
    width: 100%;
    height: 120px;
}

.oscilloscope svg {
    width: 100%;
    height: 80px;
}

.ring-chart {
    width: 150px;
    height: 150px;
    border-radius: 50%;
    background: conic-gradient(
        rgba(0, 240, 255, 0.3) 0deg,
        rgba(57, 255, 133, 0.2) 90deg,
        rgba(0, 240, 255, 0.15) 180deg,
        rgba(177, 78, 255, 0.2) 270deg,
        rgba(0, 240, 255, 0.3) 360deg
    );
    box-shadow:
        inset 0 0 0 15px #0b1a15,
        inset 0 0 0 17px rgba(0, 240, 255, 0.3),
        inset 0 0 0 30px #0b1a15,
        inset 0 0 0 32px rgba(0, 240, 255, 0.2),
        inset 0 0 0 45px #0b1a15,
        inset 0 0 0 47px rgba(0, 240, 255, 0.15);
}

/* Tree rings breathing animation */
.tree-rings {
    animation: breathe 6s ease-in-out infinite;
}

@keyframes breathe {
    0%, 100% { opacity: 0.7; }
    50% { opacity: 1; }
}

/* Ocean waves animation */
.ocean-wave {
    will-change: transform;
}

.wave-1 { animation: drift1 6s linear infinite; }
.wave-2 { animation: drift2 8s linear infinite; }
.wave-3 { animation: drift3 11s linear infinite; }
.wave-4 { animation: drift4 15s linear infinite; }
.wave-5 { animation: drift5 20s linear infinite; }

@keyframes drift1 { from { transform: translateX(0); } to { transform: translateX(-50px); } }
@keyframes drift2 { from { transform: translateX(0); } to { transform: translateX(50px); } }
@keyframes drift3 { from { transform: translateX(0); } to { transform: translateX(-30px); } }
@keyframes drift4 { from { transform: translateX(0); } to { transform: translateX(40px); } }
@keyframes drift5 { from { transform: translateX(0); } to { transform: translateX(-20px); } }

/* Seed pod - uses #b14eff for violet accent */
.seed-pod > circle {
    stroke: #b14eff;
}

.petal {
    transform-origin: center;
    transform: rotate(var(--petal-angle));
    transition: transform 800ms cubic-bezier(0.25, 0.46, 0.45, 0.94);
}

.petal.open {
    transform: rotate(calc(var(--petal-angle) + 15deg));
}

.seed-dot {
    opacity: 1;
    transition: opacity 1s ease 0.5s, transform 1s ease 0.5s;
}

.petal.open .seed-dot {
    opacity: 0;
    transform: translateY(-20px);
}

/* Mycelium drawing animation */
.mycelium-branch {
    stroke-dasharray: 500;
    stroke-dashoffset: 500;
    transition: stroke-dashoffset 4s cubic-bezier(0.25, 0.46, 0.45, 0.94);
}

.mycelium-branch.drawn {
    stroke-dashoffset: 0;
}

/* Fern drawing animation */
.fern-stem {
    stroke-dasharray: 300;
    stroke-dashoffset: 300;
    transition: stroke-dashoffset 3s cubic-bezier(0.25, 0.46, 0.45, 0.94);
}

.fern-stem.drawn {
    stroke-dashoffset: 0;
}

.fern-pinnae {
    stroke-dasharray: 200;
    stroke-dashoffset: 200;
    opacity: 0;
    transition: stroke-dashoffset 2s cubic-bezier(0.25, 0.46, 0.45, 0.94), opacity 0.5s ease;
}

.fern-pinnae.drawn {
    stroke-dashoffset: 0;
    opacity: 1;
}

/* Reveal animations */
.reveal-left {
    opacity: 0;
    transform: translateX(-30px);
    transition: opacity 600ms cubic-bezier(0.25, 0.46, 0.45, 0.94), transform 600ms cubic-bezier(0.25, 0.46, 0.45, 0.94);
}

.reveal-left.visible {
    opacity: 1;
    transform: translateX(0);
}

.reveal-up {
    opacity: 0;
    transform: translateY(20px);
    transition: opacity 600ms cubic-bezier(0.25, 0.46, 0.45, 0.94), transform 600ms cubic-bezier(0.25, 0.46, 0.45, 0.94);
}

.reveal-up.visible {
    opacity: 1;
    transform: translateY(0);
}

/* End space */
.end-space {
    height: 50vh;
}

/* Reduced motion */
@media (prefers-reduced-motion: reduce) {
    .reveal-left,
    .reveal-up {
        opacity: 1;
        transform: none;
        transition: none;
    }

    .mycelium-branch,
    .fern-stem,
    .fern-pinnae {
        stroke-dashoffset: 0;
        opacity: 1;
        transition: none;
    }

    .tree-rings {
        animation: none;
        opacity: 1;
    }

    .ocean-wave {
        animation: none;
    }

    .petal {
        transition: none;
    }
}
