:root {
    --color-charcoal: #2a2520;
    --color-deep-charcoal: #1a1814;
    --color-void: #0d0d0d;
    --color-parchment: #e8d5a3;
    --color-gold: #c9a84c;
    --color-stone: #d4cfc6;
    --color-ash: #8a7d6b;
    --color-gold-alt: #dab44e;
}

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

html {
    scroll-behavior: smooth;
}

body {
    background-color: var(--color-void);
    background-image:
        radial-gradient(ellipse 800px 600px at 20% 30%, #1a1814 0%, transparent 70%),
        radial-gradient(ellipse 600px 900px at 80% 60%, #2a2520 0%, transparent 60%),
        conic-gradient(from 45deg at 50% 50%, transparent 0deg, #1a1814 90deg, transparent 180deg, #2a2520 270deg, transparent 360deg);
    background-blend-mode: overlay;
    color: var(--color-stone);
    font-family: 'Cormorant Garamond', Georgia, serif;
    font-weight: 400;
    font-size: clamp(1rem, 1.2vw, 1.15rem);
    line-height: 1.85;
    letter-spacing: 0.01em;
    overflow-x: hidden;
}

/* ===== CHAMBERS ===== */
.chamber {
    min-height: 100vh;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    position: relative;
    padding: 80px 24px;
}

.chamber-title {
    font-family: 'Playfair Display', Georgia, serif;
    font-weight: 700;
    font-size: clamp(2.2rem, 4vw, 3.8rem);
    letter-spacing: 0.04em;
    color: var(--color-gold);
    margin-bottom: 48px;
    opacity: 0;
    transition: opacity 1s ease;
}

.chamber-body {
    max-width: 680px;
    margin: 0 auto 28px;
    padding: 0 24px;
    opacity: 0;
    transition: opacity 1s ease 0.3s;
}

.chamber--active .chamber-title {
    opacity: 1;
}

.chamber--active .chamber-body {
    opacity: 1;
}

/* ===== CORNER MARKS ===== */
.corner-marks {
    position: absolute;
    inset: 40px;
    pointer-events: none;
}

.corner {
    position: absolute;
    width: 20px;
    height: 20px;
}

.corner::before,
.corner::after {
    content: '';
    position: absolute;
    background: var(--color-gold);
    opacity: 0.4;
}

.corner::before {
    width: 20px;
    height: 1px;
}

.corner::after {
    width: 1px;
    height: 20px;
}

.corner--tl { top: 0; left: 0; }
.corner--tl::before { top: 0; left: 0; }
.corner--tl::after { top: 0; left: 0; }

.corner--tr { top: 0; right: 0; }
.corner--tr::before { top: 0; right: 0; }
.corner--tr::after { top: 0; right: 0; }

.corner--bl { bottom: 0; left: 0; }
.corner--bl::before { bottom: 0; left: 0; }
.corner--bl::after { bottom: 0; left: 0; }

.corner--br { bottom: 0; right: 0; }
.corner--br::before { bottom: 0; right: 0; }
.corner--br::after { bottom: 0; right: 0; }

/* ===== VOID SPACES ===== */
.void {
    height: clamp(200px, 40vh, 400px);
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
}

.descending-line {
    width: 2px;
    height: 100%;
    position: absolute;
    left: 50%;
    transform: translateX(-50%);
}

.hex-lattice {
    position: absolute;
    inset: 0;
    opacity: 0.04;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='60' height='52' viewBox='0 0 60 52'%3E%3Cpolygon points='30,2 56,15 56,37 30,50 4,37 4,15' fill='none' stroke='%23c9a84c' stroke-width='0.5'/%3E%3C/svg%3E");
    background-size: 60px 52px;
}

/* ===== CHAMBER: GATE (HERO) ===== */
.chamber--gate {
    background: transparent;
}

.enso-watermark {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    opacity: 0.02;
    pointer-events: none;
}

.hero-line {
    margin-bottom: 32px;
    opacity: 0;
}

.hero-line line {
    stroke-dasharray: 300;
    stroke-dashoffset: 300;
}

.hero-line.animate {
    opacity: 1;
}

.hero-line.animate line {
    stroke-dashoffset: 0;
    transition: stroke-dashoffset 3s ease;
}

.gate-title {
    font-family: 'Playfair Display', Georgia, serif;
    font-weight: 700;
    font-size: clamp(2.5rem, 5vw, 4.5rem);
    letter-spacing: 0.04em;
    color: var(--color-gold);
    opacity: 0;
    transition: opacity 1s ease;
}

.gate-title.visible {
    opacity: 1;
}

.gate-subtitle {
    font-family: 'IBM Plex Mono', monospace;
    font-weight: 300;
    font-size: clamp(0.75rem, 1vw, 0.9rem);
    letter-spacing: 0.08em;
    color: var(--color-ash);
    margin-top: 20px;
    min-height: 1.5em;
}

.gate-subtitle span {
    opacity: 0;
    transition: opacity 0.15s ease;
}

.gate-subtitle span.revealed {
    opacity: 1;
}

/* ===== CHAMBER: MEND (KINTSUGI) ===== */
.kintsugi-container {
    margin-bottom: 48px;
}

.kintsugi-hex {
    display: block;
}

.crack {
    stroke-dasharray: 200;
    stroke-dashoffset: 200;
    transition: stroke-dashoffset 1.2s ease-in-out;
}

.chamber--mend.chamber--active .crack {
    stroke-dashoffset: 0;
}

.chamber--mend.chamber--active .crack:nth-child(2) { transition-delay: 0s; }
.chamber--mend.chamber--active .crack:nth-child(3) { transition-delay: 0.3s; }
.chamber--mend.chamber--active .crack:nth-child(4) { transition-delay: 0.6s; }
.chamber--mend.chamber--active .crack:nth-child(5) { transition-delay: 0.9s; }
.chamber--mend.chamber--active .crack:nth-child(6) { transition-delay: 1.2s; }
.chamber--mend.chamber--active .crack:nth-child(7) { transition-delay: 1.5s; }
.chamber--mend.chamber--active .crack:nth-child(8) { transition-delay: 1.8s; }

.mend-text {
    max-width: 680px;
    text-align: center;
}

/* ===== CHAMBER: LEDGER ===== */
.ledger-list {
    list-style: none;
    max-width: 680px;
    padding: 0 24px;
}

.ledger-item {
    display: flex;
    align-items: baseline;
    gap: 16px;
    margin-bottom: 24px;
    opacity: 0;
    transition: opacity 0.4s ease;
}

.chamber--ledger.chamber--active .ledger-item {
    opacity: 1;
}

.hex-bullet {
    flex-shrink: 0;
    position: relative;
    top: 2px;
}

.ledger-text {
    font-family: 'Cormorant Garamond', Georgia, serif;
    font-size: clamp(1rem, 1.3vw, 1.2rem);
    line-height: 1.85;
    color: var(--color-stone);
}

.ledger-text.shimmer {
    color: transparent;
    background: linear-gradient(90deg, #2a2520 25%, #c9a84c40 50%, #2a2520 75%);
    background-size: 200% 100%;
    background-clip: text;
    -webkit-background-clip: text;
    animation: shimmerAnim 1.5s infinite;
}

.ledger-text.revealed {
    color: var(--color-stone);
    background: none;
    -webkit-background-clip: unset;
    background-clip: unset;
    animation: none;
}

@keyframes shimmerAnim {
    0% { background-position: 200% 0; }
    100% { background-position: -200% 0; }
}

/* ===== CHAMBER: RETURN (ENSO) ===== */
.chamber--return {
    text-align: center;
}

.enso-final {
    margin-bottom: 48px;
}

.enso-path {
    stroke-dasharray: 600;
    stroke-dashoffset: 600;
    transition: stroke-dashoffset 4s cubic-bezier(0.25, 0.1, 0.25, 1);
}

.chamber--return.chamber--active .enso-path {
    stroke-dashoffset: 0;
}

.return-text {
    font-family: 'Cormorant Garamond', Georgia, serif;
    font-size: clamp(1.1rem, 1.5vw, 1.3rem);
    color: var(--color-stone);
    opacity: 0;
    transition: opacity 1.5s ease 2s;
}

.chamber--return.chamber--active .return-text {
    opacity: 1;
}

.return-sub {
    font-family: 'IBM Plex Mono', monospace;
    font-weight: 300;
    font-size: clamp(0.7rem, 0.9vw, 0.85rem);
    letter-spacing: 0.12em;
    color: var(--color-ash);
    display: inline-block;
    margin-top: 12px;
}

/* ===== ENTERING STATE ===== */
.chamber--entering .corner::before,
.chamber--entering .corner::after {
    opacity: 0.25;
    transition: opacity 0.8s ease;
}

.chamber--active .corner::before,
.chamber--active .corner::after {
    opacity: 0.4;
}
