:root {
    /* Interaction System System: System:: System:** Every meaningful user interaction produces hexagonal ripples. Clicking anywhere on the marble background spawns 3 concentric hexagonal ripple rings in candle gold. Hovering over a hexagonal cell causes it to glow from within (background lightens by 8% Interactive ripple effects radiate outward from user interactions (clicks IntersectionObserver` for scroll detection and CSS custom properties for ripple origin coordinates. IntersectionObserver` with staggered thresholds (0.1 */
    --deep-ground: #1a1a22;
    --surface: #f0ebe3;
    --primary-accent: #d4a24e;
    --secondary-accent: #3d4f7c;
    --complementary-pop: #c45c3e;
    --muted-support: #8e8ba7;
    --highlight: #f5deb3;
    --text-primary: #2c2a2e;
    --scroll-y: 0px;
    --hex: polygon(50% 0%, 100% 25%, 100% 75%, 50% 100%, 0% 75%, 0% 25%);
}

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

html,
body {
    width: 100%;
    min-height: 100%;
    overflow-x: hidden;
}

html {
    scroll-behavior: smooth;
}

body {
    min-height: 100vh;
    background: var(--deep-ground);
    color: var(--surface);
    font-family: "DM Sans", Inter, system-ui, sans-serif;
    font-size: clamp(1rem, 1.8vw, 1.25rem);
    font-weight: 400;
    letter-spacing: 0.015em;
    line-height: 1.65;
}

.marble-bg {
    position: fixed;
    inset: 0;
    pointer-events: none;
    z-index: 0;
    background:
        linear-gradient(135deg, rgba(240, 235, 227, 0.03) 0%, transparent 40%),
        linear-gradient(225deg, rgba(142, 139, 167, 0.04) 10%, transparent 50%),
        radial-gradient(ellipse at 20% 80%, rgba(212, 162, 78, 0.02) 0%, transparent 30%),
        radial-gradient(ellipse at 65% 18%, rgba(61, 79, 124, 0.15) 0%, transparent 45%),
        radial-gradient(ellipse at 45% 52%, rgba(240, 235, 227, 0.06) 0%, transparent 55%),
        linear-gradient(45deg, rgba(240, 235, 227, 0.02) 25%, transparent 25%, transparent 50%, rgba(240, 235, 227, 0.02) 50%, rgba(240, 235, 227, 0.02) 75%, transparent 75%),
        #1a1a22;
    background-size: 100% 100%, 100% 100%, 100% 100%, 130% 130%, 140% 140%, 40px 40px, 100% 100%;
    background-position: 0 var(--scroll-y), 0 var(--scroll-y), 0 0, 0 0, 0 0, 0 0, 0 0;
    animation: marble-shift 30s ease-in-out infinite alternate;
}

.marble-bg::before,
.marble-bg::after {
    content: "";
    position: absolute;
    inset: -12%;
    background:
        linear-gradient(108deg, transparent 0 32%, rgba(240, 235, 227, 0.035) 33%, transparent 35% 58%, rgba(142, 139, 167, 0.035) 60%, transparent 62%),
        linear-gradient(24deg, transparent 0 42%, rgba(212, 162, 78, 0.025) 43%, transparent 46% 72%, rgba(240, 235, 227, 0.025) 74%, transparent 76%);
    transform: translateY(calc(var(--scroll-y) * -0.25));
    opacity: 0.9;
}

.marble-bg::after {
    filter: blur(14px);
    opacity: 0.45;
    transform: translateY(calc(var(--scroll-y) * 0.18)) rotate(1deg);
}

@keyframes marble-shift {
    0% { background-position: 0 var(--scroll-y), 0 var(--scroll-y), 0 0, 0 0, 0 0, 0 0, 0 0; }
    50% { background-position: -2% var(--scroll-y), 2% var(--scroll-y), 1% 1%, 3% -2%, -2% 2%, 0 0, 0 0; }
    100% { background-position: 3% var(--scroll-y), -1% var(--scroll-y), -1% 1%, -3% 2%, 2% -1%, 0 0, 0 0; }
}

.journey,
.zone {
    position: relative;
    z-index: 1;
}

.zone {
    min-height: 100vh;
    display: grid;
    place-items: center;
    padding: clamp(3rem, 7vw, 8rem) clamp(1rem, 4vw, 4rem);
}

.hex-cell {
    position: relative;
    clip-path: var(--hex);
    background: rgba(61, 79, 124, 0.32);
    padding: 2px;
    filter: drop-shadow(0 18px 42px rgba(0, 0, 0, 0.34));
    opacity: 0;
    transform: scale(0);
    transition: filter 0.45s ease, transform 0.45s ease;
}

.hex-cell.in-view {
    animation: hex-scale-in 0.72s cubic-bezier(0.34, 1.56, 0.64, 1) forwards;
    animation-delay: calc(var(--order, 0) * 120ms);
}

.hex-cell:hover {
    filter: drop-shadow(0 0 26px rgba(212, 162, 78, 0.38)) drop-shadow(0 18px 42px rgba(0, 0, 0, 0.34));
}

.hex-inner {
    width: 100%;
    height: 100%;
    clip-path: var(--hex);
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 0.65rem;
    text-align: center;
    padding: clamp(1.2rem, 3.2vw, 3.5rem);
    background:
        radial-gradient(ellipse at 30% 40%, rgba(240, 235, 227, 0.08) 0%, transparent 60%),
        radial-gradient(ellipse at 70% 60%, rgba(142, 139, 167, 0.05) 0%, transparent 50%),
        radial-gradient(ellipse at center, rgba(212, 162, 78, 0.15) 0%, rgba(61, 79, 124, 0.05) 50%, transparent 80%),
        rgba(26, 26, 34, 0.82);
    transition: background-color 0.45s ease, box-shadow 0.45s ease;
}

.hex-cell:hover .hex-inner {
    background-color: rgba(212, 162, 78, 0.08);
    box-shadow: inset 0 0 38px rgba(212, 162, 78, 0.2);
}

@keyframes hex-scale-in {
    0% { opacity: 0; transform: scale(0); }
    72% { opacity: 1; transform: scale(1.045); }
    100% { opacity: 1; transform: scale(1); }
}

h1,
h2,
.glyph {
    font-family: "Josefin Sans", "DM Sans", sans-serif;
    font-feature-settings: "ss01";
    font-weight: 300;
    letter-spacing: 0.08em;
    line-height: 1;
    text-transform: uppercase;
}

h1 {
    font-size: clamp(3rem, 8vw, 7rem);
    color: #f0ebe3;
    text-shadow: 0 0 34px rgba(212, 162, 78, 0.24);
}

h2 {
    max-width: 14ch;
    color: #f5deb3;
    font-size: clamp(2.15rem, 6vw, 5.25rem);
}

p {
    max-width: 28ch;
}

.mono-note {
    font-family: "Inconsolata", ui-monospace, monospace;
    color: #d4a24e;
    font-size: clamp(0.75rem, 1.2vw, 0.9rem);
    letter-spacing: 0.04em;
    text-transform: uppercase;
}

.soft-line {
    color: #8e8ba7;
    font-size: clamp(0.92rem, 1.35vw, 1.1rem);
}

.glyph {
    color: #d4a24e;
    font-size: clamp(1.8rem, 3vw, 3.2rem);
}

.zone-1 {
    min-height: 120vh;
}

.hero-hex {
    width: clamp(260px, 60vw, 820px);
    aspect-ratio: 1;
    background: rgba(61, 79, 124, 0.46);
}

.hero-hex .hex-inner {
    background:
        radial-gradient(ellipse at 50% 54%, rgba(212, 162, 78, 0.2), transparent 48%),
        radial-gradient(ellipse at 20% 30%, rgba(240, 235, 227, 0.12), transparent 55%),
        rgba(26, 26, 34, 0.78);
}

#hero-title span {
    display: inline-block;
    opacity: 0;
    transform: translateY(20px);
    animation: char-reveal 0.5s cubic-bezier(0.22, 0.61, 0.36, 1) forwards;
    animation-delay: calc(var(--char, 0) * 40ms + 320ms);
}

@keyframes char-reveal {
    to { opacity: 1; transform: translateY(0); }
}

.lantern-field {
    position: absolute;
    inset: 0;
    pointer-events: none;
    overflow: hidden;
}

.paper-lantern {
    position: absolute;
    width: clamp(72px, 11vw, 150px);
    aspect-ratio: 1;
    clip-path: var(--hex);
    background:
        radial-gradient(ellipse at center, rgba(212, 162, 78, 0.26), rgba(61, 79, 124, 0.08) 62%, transparent 78%);
    border: 1px solid rgba(245, 222, 179, 0.1);
    opacity: 0.46;
    animation: lantern-float 7s ease-in-out infinite;
}

.lantern-a { left: 11%; top: 17%; animation-delay: -1.2s; }
.lantern-b { right: 12%; top: 22%; width: clamp(56px, 8vw, 116px); animation-delay: -3s; }
.lantern-c { left: 18%; bottom: 17%; width: clamp(46px, 7vw, 92px); animation-delay: -4.2s; }
.lantern-d { right: 7%; bottom: 13%; animation-delay: -0.4s; }
.lantern-e { left: 48%; top: 8%; width: clamp(38px, 6vw, 84px); animation-delay: -5s; }

@keyframes lantern-float {
    0%, 100% { transform: translate3d(0, 0, 0) scaleY(1); }
    50% { transform: translate3d(0, -30px, 0) scaleY(0.95); }
}

.garden-grid {
    width: min(1120px, 96vw);
    display: grid;
    grid-template-columns: repeat(4, minmax(130px, 1fr));
    gap: 0;
    align-items: center;
}

.garden-cell {
    width: 100%;
    aspect-ratio: 1;
    margin-top: -11%;
}

.garden-cell:nth-child(even) {
    margin-top: 39%;
}

.garden-cell .hex-inner p {
    color: #f5deb3;
    font-family: "Josefin Sans", sans-serif;
    font-weight: 600;
    font-size: clamp(0.95rem, 1.8vw, 1.38rem);
    letter-spacing: 0.08em;
    line-height: 1.18;
    text-transform: uppercase;
    opacity: 0;
    transition: opacity 0.5s ease 0.5s;
}

.garden-cell.in-view .hex-inner p {
    opacity: 1;
}

.zone-3 {
    min-height: 115vh;
    overflow: hidden;
}

.giant-hex {
    position: absolute;
    width: min(75vw, 780px);
    aspect-ratio: 1;
    clip-path: var(--hex);
    background: rgba(61, 79, 124, 0.13);
    border: 2px solid rgba(142, 139, 167, 0.12);
    pointer-events: none;
}

.ghost-left { left: -31vw; top: 11vh; }
.ghost-right { right: -32vw; bottom: 7vh; }

.pool-band {
    width: min(920px, 92vw);
    aspect-ratio: 1.5;
    background: rgba(61, 79, 124, 0.38);
}

.pool-band p:last-child {
    color: #f0ebe3;
}

.zone-4 {
    min-height: 125vh;
}

.shelf-stack {
    width: min(760px, 92vw);
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: clamp(1rem, 2.4vw, 2rem);
}

.shelf-hex {
    width: min(620px, 90vw);
    aspect-ratio: 1.5;
}

.shelf-hex:nth-child(1) { rotate: -3deg; }
.shelf-hex:nth-child(2) { rotate: 2deg; align-self: flex-start; }
.shelf-hex:nth-child(3) { rotate: -1deg; align-self: flex-end; }
.shelf-hex:nth-child(4) { rotate: 3deg; }

.shelf-hex .hex-inner {
    align-items: flex-start;
    text-align: left;
    padding-inline: clamp(2.4rem, 8vw, 5.5rem);
}

.shelf-hex p:not(.mono-note) {
    color: #f5deb3;
    font-size: clamp(1.02rem, 2vw, 1.42rem);
}

.zone-5 {
    min-height: 105vh;
}

.final-field {
    position: relative;
    width: min(86vw, 640px);
    aspect-ratio: 1;
    display: grid;
    place-items: center;
}

.flame-altar {
    position: relative;
    display: grid;
    justify-items: center;
    filter: drop-shadow(0 0 40px rgba(212, 162, 78, 0.45));
}

.candle-flame,
.mini-flame,
.vertex-flame {
    display: block;
    width: 14px;
    height: 28px;
    background: radial-gradient(ellipse at 50% 90%, #d4a24e 0%, #c45c3e 60%, transparent 100%);
    border-radius: 50% 50% 50% 50% / 60% 60% 40% 40%;
    filter: blur(1px);
    box-shadow: 0 0 20px rgba(212, 162, 78, 0.4);
    will-change: transform, opacity;
    animation: flicker var(--flame-duration, 2.5s) ease-in-out infinite alternate;
}

.candle-flame {
    width: 25px;
    height: 54px;
}

.wick {
    width: 5px;
    height: 34px;
    border-radius: 99px;
    background: linear-gradient(#8e8ba7, #2c2a2e);
    margin-top: -6px;
}

.mini-flame {
    position: absolute;
    left: 50%;
    top: 50%;
    width: 8px;
    height: 16px;
    transform: translate(-50%, -50%);
}

.vertex-flame {
    position: absolute;
    width: 8px;
    height: 16px;
    top: 8%;
    right: 18%;
    opacity: 0;
    animation-play-state: paused;
}

.flame-one { top: 22%; right: 10%; }
.flame-two { top: auto; right: auto; left: 15%; bottom: 23%; }

.vertex-flame.is-lit {
    opacity: 1;
    animation-play-state: running;
}

@keyframes flicker {
    0% { transform: scaleX(1) rotate(0deg); opacity: 0.9; filter: blur(1px); }
    25% { transform: scaleX(0.85) rotate(-2deg); opacity: 1; filter: blur(0.7px); }
    50% { transform: scaleX(1.1) rotate(1deg); opacity: 0.85; filter: blur(1.3px); }
    75% { transform: scaleX(0.9) rotate(-1deg); opacity: 0.95; filter: blur(0.9px); }
    100% { transform: scaleX(1.05) rotate(2deg); opacity: 0.88; filter: blur(1.1px); }
}

.hex-ripple-bed {
    position: absolute;
    inset: 0;
    overflow: visible;
    pointer-events: none;
}

.hex-ripple {
    position: fixed;
    left: var(--x, 50vw);
    top: var(--y, 50vh);
    width: var(--size, 120px);
    height: var(--size, 120px);
    clip-path: var(--hex);
    border: 1px solid rgba(212, 162, 78, 0.6);
    transform: translate(-50%, -50%) scale(0.3);
    opacity: 0.8;
    pointer-events: none;
    z-index: 4;
    animation: ripple-expand 1.8s cubic-bezier(0.2, 0.8, 0.3, 1) forwards;
}

@keyframes ripple-expand {
    to { transform: translate(-50%, -50%) scale(3); opacity: 0; }
}

@media (max-width: 860px) {
    .garden-grid {
        grid-template-columns: repeat(3, minmax(104px, 1fr));
    }

    .garden-cell:nth-child(even) {
        margin-top: 28%;
    }
}

@media (max-width: 560px) {
    .garden-grid {
        grid-template-columns: repeat(2, minmax(126px, 1fr));
    }

    .garden-cell:nth-child(even) {
        margin-top: 0;
    }

    .pool-band,
    .shelf-hex {
        aspect-ratio: 1;
    }
}
