:root{
    --bg:#f9f9f9;
    --ink:#111;
    --muted:#6f6f6f;
    --line:#cfcfcf;
    --line-color:#111;
    --ease:cubic-bezier(0.22,0.61,0.36,1);
    --dot-size:10px;
}
html,body{height:100%;overflow: hidden;}
body{
    margin:0;
    font-family:Poppins,system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;
    color:var(--ink);
    background:var(--bg);
    overflow-x:hidden;
}

.progress{
    position:fixed;top:4.5rem;left:50%;transform:translateX(-50%);
    width:min(60rem,80vw);height:2px;background:var(--line);z-index:60;
}
.progress .fill{position:absolute;top:0;left:0;height:100%;width:0;background:var(--line-color);transition:width 500ms var(--ease);}
.progress .cursor{position:absolute;top:50%;transform:translate(-50%,-50%) scale(1);width:10px;height:10px;border-radius:50%;background:var(--line-color);left:0;transition:left 500ms var(--ease),transform 140ms ease;}

.rail{position:relative;z-index:10}
.rail .sticky{position:sticky;top:0;height:100vh;overflow:hidden}

.panels{display:grid;grid-auto-flow:column;grid-auto-columns:100vw;grid-auto-rows:100vh;width:max-content;height:100vh;will-change:transform;transform:translateX(0);}
.panel{position:relative;padding:9vh 15vw 8vh 5vw;background:var(--bg);min-width:100vw;box-sizing:border-box;}
.eyebrow{font-size:0.85rem;letter-spacing:0.12em;text-transform:uppercase;color:var(--muted)}

.title{font-family:"Playfair Display",serif;font-size:clamp(2.4rem,5vw,4.2rem);line-height:1.08;margin:0.6rem 0 1.2rem;display:inline-block;clip-path:polygon(0 0,100% 0,100% 0,0 0);transition:clip-path 600ms ease-out;}
.title.visible{clip-path:polygon(0 0,100% 0,100% 100%,0 100%)}

.copy{max-width:48ch;font-size:clamp(1rem,1.7vw,1.15rem);color:var(--ink);opacity:0;transform:translateY(14px);letter-spacing:-0.01em;transition:opacity 600ms cubic-bezier(0.33,1,0.68,1),transform 600ms cubic-bezier(0.33,1,0.68,1);}
.copy.visible{opacity:1;transform:translateY(0)}

.cta{margin-top:2rem;display:inline-block;padding:0.7rem 1.2rem;border:1px solid rgba(17,17,17,0.15);border-radius:999px;color:var(--ink);text-decoration:none;background:transparent;transition:border-color 140ms var(--ease),transform 140ms var(--ease)}
.cta:hover{border-color:rgba(17,17,17,0.35);transform:translateY(-2px)}

.dots{position:fixed;right:2rem;top:50%;transform:translateY(-50%);display:flex;flex-direction:column;gap:12px;z-index:70;}
.dot{width:var(--dot-size);height:var(--dot-size);border-radius:50%;background:rgba(0,0,0,0.14);border:1px solid rgba(17,17,17,0.06);cursor:pointer;transition:background 420ms var(--ease),transform 420ms var(--ease),box-shadow 420ms var(--ease);display:inline-block;}
.dot.active{background:var(--line-color);transform:scale(1.18);box-shadow:0 6px 18px rgba(0,0,0,0.08)}
.dot:focus{outline:none;box-shadow:0 0 0 4px rgba(17,17,17,0.06)}

.spacer{height:120vh}
@media (max-width:640px){.dots{right:1rem;gap:8px}}