/* TENDERSHIP — blush ground, her pink and her gold, two spheres and the living threads between them. */
.td{overflow-x:clip;background:var(--ground);color:var(--ink)}
.td-eyebrow{font-family:var(--body);font-size:.72rem;letter-spacing:.24em;text-transform:uppercase;color:var(--signal-deep);margin:0 0 1rem}
[data-rise]{opacity:0;transform:translateY(18px);transition:opacity 1.1s cubic-bezier(.2,.7,.2,1),transform 1.1s cubic-bezier(.2,.7,.2,1)}[data-rise].is-in{opacity:1;transform:none}

/* MOMENT ONE · the reach */
.td-reach{position:relative;height:320vh}
.td-reach__stage{position:sticky;top:0;height:100vh;height:100svh;display:grid;grid-template-rows:auto 1fr auto;padding:clamp(4.5rem,9vh,7rem) 6vw clamp(1.5rem,4vh,3rem);box-sizing:border-box;overflow:hidden}
.td-reach__head{text-align:center;max-width:52rem;margin:0 auto}
.td-name{font-family:var(--name);font-weight:500;font-size:clamp(2.6rem,7.5vw,5.8rem);letter-spacing:.14em;line-height:1;margin:0 0 .6rem;color:var(--ink);animation:td-in 1.4s cubic-bezier(.2,.7,.2,1) both}
.td-line{font-family:var(--head);font-style:italic;font-size:clamp(1.2rem,2.4vw,1.75rem);margin:0;color:var(--signal-deep);animation:td-in 1.4s .3s cubic-bezier(.2,.7,.2,1) both}
.td-reach__head .td-eyebrow{animation:td-in 1.2s .1s both}
@keyframes td-in{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
.td-field{position:relative;min-height:0;display:grid;place-items:center}
.td-svg{width:min(92vw,880px);height:100%;max-height:100%;display:block;overflow:visible}
.td-sphere{transition:transform 1.6s cubic-bezier(.4,0,.2,1);transform-box:fill-box;transform-origin:center}
.td-sheen{transition:transform 1.6s cubic-bezier(.4,0,.2,1)}
.td-threads path{fill:none;stroke-width:.55;stroke-linecap:round;stroke-dasharray:80;stroke-dashoffset:80;transition:stroke-dashoffset 1.4s cubic-bezier(.4,0,.2,1)}
.td-threads--pink path{stroke:var(--signal);opacity:.85}.td-threads--gold path{stroke:#D9A441;opacity:.85}
.td-threads path:nth-child(2){transition-delay:.12s}.td-threads path:nth-child(3){transition-delay:.24s}.td-threads path:nth-child(4){transition-delay:.36s}.td-threads path:nth-child(5){transition-delay:.48s}.td-threads path:nth-child(6){transition-delay:.6s}
.td-meet{fill:#fff;stroke:var(--signal-deep);stroke-width:.3;opacity:0;transition:opacity .8s ease;transition-delay:calc(.4s + var(--n) * .16s)}
.td-map__w{position:absolute;transform:translate(-50%,-50%) translateY(-1.6rem);font-family:var(--head);font-style:italic;font-size:clamp(.95rem,1.7vw,1.25rem);color:var(--ink);white-space:nowrap;opacity:0;transition:opacity .8s ease,transform .8s ease;transition-delay:calc(.5s + var(--n) * .16s);pointer-events:none;background:rgba(255,245,248,.8);padding:.1rem .5rem;border-radius:2px}
.is-reaching .td-threads path{stroke-dashoffset:0}
.is-met .td-meet{opacity:1}.is-met .td-map__w{opacity:1;transform:translate(-50%,-50%) translateY(-1.2rem)}
.is-docked .td-sphere--pink{transform:translateX(22px)}.is-docked .td-sphere--gold{transform:translateX(-22px)}
.is-docked .td-threads path{opacity:.35}.is-docked .td-map__w{opacity:0}
.td-reach__foot{text-align:center;margin:0;font-family:var(--head);font-style:italic;font-size:clamp(1.1rem,2.2vw,1.6rem);color:var(--ink);min-height:1.6em}
.td-reach__foot span{position:absolute;left:0;right:0;opacity:0;transition:opacity .8s ease}
.td-reach__foot span.is-in{opacity:1}
.td-down{position:absolute;left:6vw;bottom:clamp(1.2rem,3vh,2.4rem);width:1px;height:3.6rem}
.td-down span{position:absolute;inset:0;background:linear-gradient(180deg,var(--signal),transparent);transform-origin:top;animation:td-fall 2.6s ease-in-out infinite}
@keyframes td-fall{0%{transform:scaleY(0)}50%{transform:scaleY(1)}100%{transform:scaleY(0);transform-origin:bottom}}

/* MOMENT TWO · her verse */
.td-verse{padding:clamp(4rem,12vh,9rem) 6vw;text-align:center;background:#fff}
.td-verse__v{max-width:40rem;margin:0 auto 2rem}
.td-verse__v p{margin:0 0 .3em;font-family:var(--head);font-size:clamp(1.35rem,2.8vw,2.1rem);line-height:1.3;color:var(--ink);opacity:0;transform:translateY(10px);transition:opacity .9s ease,transform .9s ease;transition-delay:calc(var(--n) * .22s)}
.is-in .td-verse__v p{opacity:1;transform:none}
.td-verse__gap{display:block;height:1.1em}
.td-verse__law{font-family:var(--body);font-size:.8rem;letter-spacing:.18em;text-transform:uppercase;color:var(--signal-deep);margin:0}

/* MOMENT THREE · her picture */
.td-picture{padding:clamp(2rem,6vh,4rem) 6vw}
.td-picture figure{margin:0 auto;width:min(100%,52rem)}.td-picture img{width:100%;display:block;aspect-ratio:1;object-fit:cover;outline:1px solid var(--signal);outline-offset:12px}

/* MOMENT FOUR · the four parts */
.td-parts{padding:clamp(4rem,12vh,9rem) 6vw;text-align:center}
.td-parts h2{font-family:var(--head);font-weight:500;font-size:clamp(1.7rem,3.6vw,2.8rem);line-height:1.15;margin:0 auto 3rem;max-width:34rem;color:var(--ink)}
.td-parts__list{list-style:none;margin:0 auto;padding:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:clamp(1rem,2.5vw,2.4rem);max-width:78rem;counter-reset:none}
.td-part{padding:0 .4rem;opacity:0;transform:translateY(14px);transition:opacity 1s ease,transform 1s ease;transition-delay:calc(.2s + var(--n) * .2s)}
.is-in .td-part{opacity:1;transform:none}
.td-part__d{width:100%;max-width:220px;height:auto;margin:0 auto .8rem;display:block}
.td-part__t{fill:none;stroke:var(--signal);stroke-width:1.1;stroke-linecap:round;opacity:.8}
.td-part__n{display:block;font-family:var(--body);font-size:.66rem;letter-spacing:.24em;text-transform:uppercase;color:var(--signal-deep);margin:0 0 .3rem}
.td-part h3{font-family:var(--head);font-weight:500;font-size:1.5rem;margin:0 0 .2rem;color:var(--ink)}
.td-part__say{font-family:var(--head);font-style:italic;font-size:1.1rem;margin:0 0 .6rem;color:var(--signal-deep)}
.td-part__line{font-family:var(--body);font-size:.92rem;line-height:1.55;margin:0;color:var(--ink)}

/* MOMENT FIVE · the partner guide, a book about one heart */
.td-guide{padding:clamp(4rem,12vh,9rem) 6vw;text-align:center;background:var(--ink);color:#fff}
.td-guide .td-eyebrow{color:var(--signal)}
.td-guide h2{font-family:var(--head);font-weight:500;font-size:clamp(1.8rem,3.8vw,3rem);line-height:1.1;margin:0 0 2.4rem;color:#fff}
.td-book{max-width:34rem;margin:0 auto 2rem;text-align:left}
.td-book__ch{display:flex;align-items:baseline;gap:1.2rem;padding:1rem 0;border-bottom:1px solid rgba(var(--glow),.4);opacity:0;transform:translateX(-10px);transition:opacity .8s ease,transform .8s ease;transition-delay:calc(.2s + var(--n) * .2s)}
.is-in .td-book__ch{opacity:1;transform:none}
.td-book__i{font-family:var(--body);font-size:.7rem;letter-spacing:.2em;color:var(--signal)}
.td-book__t{font-family:var(--head);font-size:clamp(1.3rem,2.6vw,1.9rem);color:#fff}
.td-guide__k{font-family:var(--head);font-style:italic;font-size:clamp(1.05rem,2vw,1.35rem);max-width:34rem;margin:0 auto;color:rgba(255,255,255,.85)}

/* MOMENT SIX · on its own */
.td-close{padding:clamp(6rem,14vh,10rem) 6vw clamp(5rem,12vh,9rem);text-align:center;background:#fff}
.td-close__head{font-family:var(--head);font-weight:500;font-size:clamp(2rem,5.6vw,4.2rem);line-height:1.05;margin:0 0 1.4rem;color:var(--ink)}
.td-close__p{font-family:var(--body);font-size:1.05rem;line-height:1.7;max-width:36rem;margin:0 auto 2rem;color:var(--ink)}
.td-close__last{font-family:var(--head);font-style:italic;font-size:clamp(1.5rem,3.4vw,2.4rem);margin:0 0 1.2rem;color:var(--signal-deep)}
.td-close__line{font-family:var(--body);font-size:.72rem;letter-spacing:.24em;text-transform:uppercase;color:var(--ink);margin:0}

@media(max-width:900px){.td-parts__list{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:820px){.td-reach{height:280vh}.td-svg{width:96vw}.td-map__w{font-size:.82rem}}
@media(prefers-reduced-motion:reduce){.td *{animation:none!important;transition:none!important}.td-part,.td-verse__v p,.td-book__ch,[data-rise]{opacity:1!important;transform:none!important}.td-reach{height:auto}.td-reach__stage{position:static;height:auto}.td-threads path{stroke-dashoffset:0}.td-meet,.td-map__w{opacity:1}}
