/* haskell.quest - Evolved-Minimal Gold-on-Black Timeline Quest */

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

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

body {
    background: #0B0B0F;
    color: #A0A0A4;
    font-family: 'Lora', serif;
    font-weight: 400;
    font-size: 16px;
    line-height: 1.85;
    overflow-x: hidden;
}

/* Milestone Counter */
.milestone-counter {
    position: fixed;
    top: 24px;
    right: 32px;
    font-family: 'JetBrains Mono', monospace;
    font-size: 11px;
    color: #8B8B8F;
    z-index: 50;
    letter-spacing: 0.04em;
}

/* Timeline SVG */
.timeline-svg {
    position: fixed;
    top: 0;
    left: 50%;
    transform: translateX(-50%);
    width: 2px;
    height: 100vh;
    z-index: 1;
    pointer-events: none;
}

.timeline-line {
    stroke: #D4A84B;
    stroke-width: 1;
    stroke-dasharray: 6000;
    stroke-dashoffset: 6000;
    transition: stroke-dashoffset 0.1s linear;
}

/* The Gate Section */
.gate-section {
    position: relative;
    min-height: 100vh;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    z-index: 2;
}

.gate-line {
    width: 1px;
    height: 0;
    background: #D4A84B;
    position: absolute;
    top: 0;
    left: 50%;
    transform: translateX(-50%);
    box-shadow: 0 0 20px rgba(212, 168, 75, 0.12);
    animation: drawGateLine 2s ease-in-out 0.4s forwards;
}

@keyframes drawGateLine {
    0% { height: 0; }
    100% { height: 70vh; }
}

.gate-diamond {
    position: absolute;
    top: 70vh;
    left: 50%;
    transform: translate(-50%, -50%) scale(0);
    animation: snapDiamond 200ms cubic-bezier(0.34, 1.56, 0.64, 1) 1.5s forwards;
}

@keyframes snapDiamond {
    0% { transform: translate(-50%, -50%) scale(0); }
    100% { transform: translate(-50%, -50%) scale(1); }
}

.diamond-shape {
    width: 12px;
    height: 12px;
    border: 1px solid #D4A84B;
    transform: rotate(45deg);
    background: transparent;
}

.diamond-shape.diamond-large {
    width: 48px;
    height: 48px;
    border-width: 2px;
}

.diamond-shape.filled {
    background: #D4A84B;
}

.gate-title {
    font-family: 'Nunito', sans-serif;
    font-weight: 700;
    font-size: 42px;
    color: #D4A84B;
    letter-spacing: -0.01em;
    line-height: 1.2;
    margin-top: calc(70vh - 50% + 40px);
    opacity: 0;
    transform: translateY(10px);
    animation: fadeInUp 600ms ease-out 2s forwards;
}

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

.gate-subtitle {
    font-family: 'Lora', serif;
    font-size: 16px;
    color: #8B8B8F;
    margin-top: 8px;
    opacity: 0;
    transform: translateY(10px);
    animation: fadeInUp 600ms ease-out 2.3s forwards;
}

/* Milestones Container */
.milestones-container {
    position: relative;
    z-index: 2;
    max-width: 720px;
    margin: 0 auto;
    padding: 0 120px;
}

/* Timeline spine (CSS fallback) */
.milestones-container::before {
    content: '';
    position: absolute;
    top: 0;
    left: 50%;
    transform: translateX(-50%);
    width: 1px;
    height: 100%;
    background: #D4A84B;
    opacity: 0.3;
}

/* Milestone */
.milestone {
    position: relative;
    min-height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 80px 0;
}

/* Milestone Node */
.milestone-node {
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
    z-index: 5;
    cursor: default;
    transition: transform 0.15s ease-out;
}

.node-circle {
    width: 16px;
    height: 16px;
    border: 1px solid #D4A84B;
    border-radius: 50%;
    background: transparent;
    transition: background 300ms ease, border-color 300ms ease, box-shadow 300ms ease;
}

.node-circle.filled {
    background: #D4A84B;
    box-shadow: 0 0 12px rgba(212, 168, 75, 0.4);
}

.node-circle.bright {
    border-color: #E8C44A;
}

/* Milestone Content */
.milestone-content {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 48px;
    width: 100%;
    align-items: center;
}

.milestone-left .milestone-text { grid-column: 1; }
.milestone-left .milestone-icon { grid-column: 2; justify-self: center; }

.milestone-right .milestone-icon { grid-column: 1; justify-self: center; }
.milestone-right .milestone-text { grid-column: 2; }

/* Milestone Typography */
.milestone-number {
    font-family: 'Nunito', sans-serif;
    font-weight: 800;
    font-size: 72px;
    line-height: 0.9;
    color: #D4A84B;
    opacity: 0;
    display: block;
    margin-bottom: 8px;
    transition: opacity 200ms ease;
}

.milestone-number.visible {
    opacity: 0.1;
}

.milestone-title {
    font-family: 'Nunito', sans-serif;
    font-weight: 700;
    font-size: 24px;
    color: #D4A84B;
    letter-spacing: -0.01em;
    line-height: 1.3;
    opacity: 0;
    transform: translateX(20px);
    transition: opacity 400ms ease-out, transform 400ms ease-out;
}

.milestone-left .milestone-title {
    transform: translateX(-20px);
}

.milestone-title.visible {
    opacity: 1;
    transform: translateX(0);
}

.milestone-desc {
    font-family: 'Lora', serif;
    font-size: 16px;
    line-height: 1.85;
    color: #6B6B70;
    margin-top: 12px;
    opacity: 0;
    transform: translateX(20px);
    transition: opacity 400ms ease-out 200ms, transform 400ms ease-out 200ms;
}

.milestone-left .milestone-desc {
    transform: translateX(-20px);
}

.milestone-desc.visible {
    opacity: 1;
    transform: translateX(0);
}

.milestone-code {
    display: block;
    font-family: 'JetBrains Mono', monospace;
    font-size: 14px;
    line-height: 1.6;
    color: #D4A84B;
    margin-top: 16px;
    opacity: 0;
    transition: opacity 400ms ease-out 400ms;
}

.milestone-code.visible {
    opacity: 1;
}

/* Isometric Icons */
.iso-icon {
    width: 64px;
    height: 64px;
    opacity: 0;
    transition: opacity 500ms ease 300ms;
}

.iso-icon.visible {
    opacity: 1;
}

.iso-face-top {
    fill: none;
    stroke: #D4A84B;
    stroke-width: 1;
    stroke-dasharray: 200;
    stroke-dashoffset: 200;
    transition: stroke-dashoffset 500ms ease;
}

.iso-face-right {
    fill: none;
    stroke: #B8922E;
    stroke-width: 1;
    stroke-dasharray: 200;
    stroke-dashoffset: 200;
    transition: stroke-dashoffset 500ms ease 100ms;
}

.iso-face-left {
    fill: none;
    stroke: #B8922E;
    stroke-width: 1;
    stroke-dasharray: 200;
    stroke-dashoffset: 200;
    transition: stroke-dashoffset 500ms ease 200ms;
}

.iso-icon.visible .iso-face-top,
.iso-icon.visible .iso-face-right,
.iso-icon.visible .iso-face-left {
    stroke-dashoffset: 0;
}

.iso-outer {
    opacity: 0.4;
}

.iso-inner {
    opacity: 1;
}

.iso-detail, .iso-split {
    stroke: #D4A84B;
    stroke-width: 0.5;
    opacity: 0.5;
}

.iso-detail-dot {
    fill: #D4A84B;
    opacity: 0.5;
}

.iso-spiral {
    fill: none;
    stroke: #D4A84B;
    stroke-width: 1.5;
    stroke-linecap: round;
    stroke-dasharray: 300;
    stroke-dashoffset: 300;
    transition: stroke-dashoffset 800ms ease 200ms;
}

.iso-icon.visible .iso-spiral {
    stroke-dashoffset: 0;
}

.iso-gear {
    fill: none;
    stroke: #D4A84B;
    stroke-width: 1;
}

.iso-gear-inner {
    fill: #D4A84B;
    opacity: 0.3;
}

.iso-gear-link {
    stroke: #B8922E;
    stroke-width: 1;
}

/* The Summit */
.summit-section {
    position: relative;
    min-height: 100vh;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    z-index: 2;
    padding: 80px 40px;
}

.summit-diamond {
    margin-bottom: 40px;
}

.summit-text {
    font-family: 'Lora', serif;
    font-size: 20px;
    line-height: 1.8;
    color: #E8E0D0;
    max-width: 480px;
    text-align: center;
}

.summit-line {
    width: 1px;
    height: 200px;
    background: #D4A84B;
    margin-top: 48px;
    opacity: 0.5;
}

/* Night Surface cards */
.milestone-text {
    background: #151518;
    padding: 24px;
    border-radius: 4px;
}

/* Responsive */
@media (max-width: 768px) {
    .milestones-container {
        padding: 0 24px 0 40px;
    }

    .milestones-container::before {
        left: 8px;
        transform: none;
    }

    .milestone-node {
        left: 8px;
        transform: translate(-50%, -50%);
    }

    .milestone-content {
        grid-template-columns: 1fr;
        gap: 16px;
    }

    .milestone-left .milestone-text,
    .milestone-right .milestone-text {
        grid-column: 1;
    }

    .milestone-left .milestone-icon,
    .milestone-right .milestone-icon {
        grid-column: 1;
        justify-self: start;
    }

    .milestone-number {
        font-size: 36px;
        opacity: 0.1;
        display: inline;
        margin-right: 12px;
    }

    .iso-icon {
        width: 48px;
        height: 48px;
    }

    .gate-title {
        font-size: 32px;
    }

    .milestone-counter {
        right: 16px;
    }
}
