/* cbdc.bar - Neon Speakeasy for the Post-Cash Era */

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

:root{
    --vault:#0B0B0F;
    --midnight:#13131A;
    --magenta:#FF2E63;
    --cyan:#00F5D4;
    --amber:#FFB800;
    --smoke:#E8E6E1;
    --fog:#6B6B7B;
    --violet:#7B2FBE;
}

html{scroll-behavior:smooth}

body{
    background:var(--vault);
    color:var(--smoke);
    font-family:'Manrope',sans-serif;
    font-weight:400;
    font-size:clamp(1rem,1.8vw,1.25rem);
    line-height:1.65;
    letter-spacing:0.01em;
    overflow-x:hidden;
}

/* Bar rail progress */
.bar-rail{
    position:fixed;
    top:0;left:0;right:0;
    height:2px;
    z-index:50;
    background:var(--vault);
}

.bar-rail::before{
    content:'';
    position:absolute;
    top:0;left:0;
    height:100%;
    width:var(--rail-pct,0%);
    background:var(--magenta);
    transition:width 100ms linear,background-color 300ms ease;
}

.bar-rail.last-call::before{
    background:var(--amber);
}

/* City skyline */
.city-layer{
    position:fixed;
    bottom:0;left:0;right:0;
    height:15vh;
    z-index:0;
    pointer-events:none;
    opacity:var(--city-opacity,0.05);
    transition:opacity 300ms ease;
}

.building{
    position:absolute;
    bottom:0;
    background:var(--midnight);
}

/* Transaction stream */
.tx-stream{
    position:fixed;
    inset:0;
    z-index:1;
    pointer-events:none;
    overflow:hidden;
}

.tx-particle{
    position:absolute;
    height:1px;
    background:var(--cyan);
    animation:txDrift linear infinite;
}

@keyframes txDrift{
    from{transform:translateX(100vw)}
    to{transform:translateX(-20px)}
}

/* Rooms */
.room{
    min-height:100vh;
    position:relative;
    z-index:5;
    display:flex;
    flex-direction:column;
    align-items:center;
    justify-content:center;
    padding:clamp(40px,8vh,80px) clamp(24px,6vw,80px);
}

/* Reveal */
.reveal-el{
    opacity:0;
    transform:translateY(20px);
    transition:opacity 800ms cubic-bezier(0.16,1,0.3,1),transform 800ms cubic-bezier(0.16,1,0.3,1);
}

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

/* Room 1: Entrance */
.room-entrance{
    min-height:150vh;
}

.neon-title{
    font-family:'Chakra Petch',sans-serif;
    font-weight:700;
    font-size:clamp(3rem,8vw,9rem);
    letter-spacing:0.06em;
    text-transform:uppercase;
    line-height:1;
    text-align:center;
}

.neon-char{
    display:inline-block;
    opacity:0;
    color:var(--magenta);
    text-shadow:
        0 0 4px rgba(255,46,99,0.8),
        0 0 12px rgba(255,46,99,0.4),
        0 0 24px rgba(255,46,99,0.2),
        0 0 48px rgba(255,46,99,0.1);
    filter:brightness(1.2);
    animation:neonFade 600ms cubic-bezier(0.16,1,0.3,1) forwards;
    animation-delay:calc(var(--d)*150ms + 500ms);
}

.neon-dot{
    color:var(--cyan);
    text-shadow:
        0 0 4px rgba(0,245,212,0.8),
        0 0 12px rgba(0,245,212,0.4),
        0 0 24px rgba(0,245,212,0.2);
}

@keyframes neonFade{
    to{opacity:1}
}

.entrance-tagline{
    font-family:'Manrope',sans-serif;
    font-weight:400;
    font-size:clamp(0.9rem,1.5vw,1.15rem);
    color:var(--fog);
    text-align:center;
    max-width:50ch;
    margin-top:2rem;
    opacity:0;
    animation:neonFade 800ms ease 2s forwards;
}

/* Room 2: Bar Top */
.statement{
    font-family:'Chakra Petch',sans-serif;
    font-weight:600;
    font-size:clamp(1.5rem,3vw,3rem);
    letter-spacing:0.06em;
    text-transform:uppercase;
    color:var(--smoke);
    text-align:center;
    max-width:20ch;
    margin-bottom:clamp(40px,6vh,80px);
}

/* Split screen */
.split-screen{
    display:grid;
    grid-template-columns:1fr 1px 1fr;
    gap:clamp(16px,3vw,40px);
    max-width:1000px;
    width:100%;
}

.split-left,.split-right{
    padding:clamp(16px,3vw,32px);
}

.split-heading{
    font-family:'Chakra Petch',sans-serif;
    font-weight:600;
    font-size:clamp(1.2rem,2vw,1.8rem);
    letter-spacing:0.06em;
    text-transform:uppercase;
    color:var(--amber);
    margin-bottom:1rem;
}

.split-heading-cyan{
    color:var(--cyan);
}

.split-divider{
    width:1px;
    background:var(--magenta);
    animation:dividerPulse 2s ease-in-out infinite;
}

@keyframes dividerPulse{
    0%,100%{opacity:0.4;box-shadow:0 0 4px rgba(255,46,99,0.2)}
    50%{opacity:1;box-shadow:0 0 12px rgba(255,46,99,0.5)}
}

/* Room 3: Recipe cards */
.chevron-mark{
    font-family:'Share Tech Mono',monospace;
    font-size:1.5rem;
    color:var(--amber);
    opacity:0.3;
    transform:rotate(90deg);
    margin-bottom:2rem;
    letter-spacing:0.2em;
}

.recipe-row{
    display:flex;
    gap:clamp(2rem,4vw,6rem);
    flex-wrap:wrap;
    justify-content:center;
    max-width:1200px;
}

.recipe-card{
    flex:1 1 260px;
    max-width:320px;
    background:var(--midnight);
    border:1px solid rgba(123,47,190,0.3);
    padding:clamp(20px,3vw,32px);
    transition:box-shadow 300ms ease,border-color 300ms ease;
}

.recipe-card:hover{
    border-color:rgba(255,46,99,0.5);
    box-shadow:0 0 20px rgba(255,46,99,0.1);
}

.recipe-name{
    font-family:'Chakra Petch',sans-serif;
    font-weight:600;
    font-size:clamp(1rem,1.5vw,1.3rem);
    letter-spacing:0.06em;
    text-transform:uppercase;
    color:var(--smoke);
    margin-bottom:12px;
}

.recipe-rule{
    width:100%;
    height:1px;
    background:var(--magenta);
    margin-bottom:12px;
}

.recipe-specs{
    list-style:none;
    margin-bottom:16px;
}

.recipe-specs li{
    font-family:'Share Tech Mono',monospace;
    font-size:clamp(0.75rem,1.2vw,0.9rem);
    letter-spacing:0.08em;
    color:var(--cyan);
    margin-bottom:4px;
}

.recipe-body{
    font-size:clamp(0.85rem,1vw,1rem);
    color:var(--fog);
    line-height:1.6;
}

/* Room 4: Network visualization */
.network-vis{
    max-width:600px;
    width:100%;
}

.network-svg{
    width:100%;
    height:auto;
}

.net-edge{
    stroke-dasharray:200;
    stroke-dashoffset:200;
    transition:stroke-dashoffset 4s ease;
}

.network-vis.visible .net-edge{
    stroke-dashoffset:0;
}

.net-label{
    font-family:'Share Tech Mono',monospace;
    font-size:10px;
    fill:var(--cyan);
    letter-spacing:0.08em;
    opacity:0;
    transition:opacity 800ms ease 4s;
}

.network-vis.visible .net-label{
    opacity:0.8;
}

/* Room 5: Era split */
.era-year{
    font-family:'Chakra Petch',sans-serif;
    font-weight:700;
    font-size:clamp(4rem,10vw,10rem);
    line-height:1;
    display:block;
    margin-bottom:1rem;
}

.era-year.amber{color:var(--amber)}
.era-year.cyan{color:var(--cyan)}

.era-desc{
    color:var(--fog);
    max-width:35ch;
}

/* Room 6: Last Call */
.last-statement{
    font-family:'Chakra Petch',sans-serif;
    font-weight:700;
    font-size:clamp(2rem,5vw,5rem);
    letter-spacing:0.06em;
    text-transform:uppercase;
    color:var(--magenta);
    text-shadow:
        0 0 4px rgba(255,46,99,0.8),
        0 0 12px rgba(255,46,99,0.4),
        0 0 24px rgba(255,46,99,0.2);
    margin-bottom:2rem;
    text-align:center;
}

.last-body{
    max-width:50ch;
    text-align:center;
    color:var(--fog);
    margin-bottom:2rem;
}

.last-mark{
    font-family:'Chakra Petch',sans-serif;
    font-weight:600;
    font-size:clamp(0.9rem,1.5vw,1.2rem);
    letter-spacing:0.06em;
    color:var(--fog);
    text-transform:uppercase;
}

/* Responsive */
@media(max-width:768px){
    .split-screen{
        grid-template-columns:1fr;
    }

    .split-divider{
        width:100%;
        height:1px;
    }

    .recipe-row{
        flex-direction:column;
        align-items:center;
    }

    .recipe-card{
        max-width:100%;
    }
}
