.wrap{max-width:1120px}

.bg{position:fixed;inset:0;z-index:-1;pointer-events:none;overflow:hidden;-webkit-mask-image:radial-gradient(ellipse 90% 65% at 50% 0%,#000 25%,transparent 80%);mask-image:radial-gradient(ellipse 90% 65% at 50% 0%,#000 25%,transparent 80%)}
.bg::before{content:"";position:absolute;inset:-176px 0;background-image:linear-gradient(rgba(34,229,127,.09) 1px,transparent 1px),linear-gradient(90deg,rgba(34,229,127,.09) 1px,transparent 1px),linear-gradient(rgba(29,79,240,.2) 1px,transparent 1px),linear-gradient(90deg,rgba(29,79,240,.2) 1px,transparent 1px);background-size:44px 44px,44px 44px,176px 176px,176px 176px;animation:drift 9s linear infinite;will-change:transform}
@keyframes drift{to{transform:translate3d(0,176px,0)}}

.top{display:flex;align-items:center;justify-content:space-between}
.top nav a{color:var(--muted);font-weight:600;font-size:.95rem;text-decoration:none;padding:8px 0}
.top nav a:hover{color:var(--white)}

.stage{display:grid;gap:30px;padding:34px 0 8px;grid-template-areas:"copy" "tool" "visual"}
.copy{grid-area:copy}
.tool{grid-area:tool;min-width:0}
.visual{grid-area:visual}

h1{margin:0 0 16px;font-size:clamp(2.4rem,11vw,4.8rem);line-height:1;letter-spacing:-.03em}
.ln{display:block;animation:up .85s cubic-bezier(.2,.8,.2,1) both;animation-delay:calc(var(--i) * .14s + .1s)}
.lead{margin:0;max-width:44ch;color:var(--muted);font-size:1.05rem;animation:up .85s cubic-bezier(.2,.8,.2,1) .5s both}
.panel{animation:up .85s cubic-bezier(.2,.8,.2,1) .65s both}
@keyframes up{from{opacity:0;transform:translateY(28px)}to{opacity:1;transform:none}}

.visual{position:relative;padding:22px;background:var(--coal);border:1px solid var(--line);border-radius:18px;overflow:hidden;animation:up .85s cubic-bezier(.2,.8,.2,1) .8s both}
.hops{position:relative;display:grid;gap:12px;padding-left:28px}
.hops::before{content:"";position:absolute;left:8px;top:8px;bottom:8px;width:2px;background:var(--line)}
.hops::after{content:"";position:absolute;left:4px;top:0;width:10px;height:10px;border-radius:50%;background:var(--blue-soft);box-shadow:0 0 14px var(--blue);animation:travel 3s ease-in-out infinite}
@keyframes travel{0%{top:0;opacity:0}15%,85%{opacity:1}100%{top:calc(100% - 10px);opacity:0}}
.hop{position:relative;padding:13px 14px;border:1px solid rgba(122,162,255,.4);border-radius:10px;background:rgba(29,79,240,.14);font-weight:600;font-size:.95rem;animation:hop 9s ease-in-out infinite both;animation-delay:calc(var(--i) * .4s)}
.hop::before{content:"";position:absolute;left:-26px;top:50%;width:10px;height:10px;margin-top:-5px;border-radius:50%;background:var(--blue)}
.hop::after{content:"";position:absolute;left:12px;right:12px;top:50%;height:2px;background:var(--green);transform-origin:left;animation:strike 9s ease-in-out infinite both;animation-delay:calc(var(--i) * .4s)}
@keyframes hop{0%{opacity:0;transform:translateX(-16px)}7%,48%{opacity:1;transform:none}60%,92%{opacity:.3;transform:scale(.97)}100%{opacity:0;transform:scale(.97)}}
@keyframes strike{0%,46%{transform:scaleX(0)}56%,100%{transform:scaleX(1)}}
.hop.final{margin-top:6px;background:var(--green);border-color:var(--green);color:var(--black);font-weight:700;animation:land 9s ease-in-out infinite both;animation-delay:0s}
.hop.final::before{background:var(--green)}
.hop.final::after{display:none}
@keyframes land{0%,64%{opacity:0;transform:translateY(12px) scale(.96);box-shadow:0 0 0 0 rgba(34,229,127,.4)}72%{opacity:1;transform:none;box-shadow:0 0 0 10px rgba(34,229,127,.2)}80%,92%{opacity:1;transform:none;box-shadow:0 0 0 0 rgba(34,229,127,0)}100%{opacity:0}}
.cap{margin:16px 0 0;color:var(--muted);font-size:.9rem}

.marq{overflow:hidden;margin:34px 0 6px;padding:16px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);-webkit-mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent)}
.marq-track{display:flex;width:max-content;animation:slide 30s linear infinite}
.grp{display:flex;flex:none}
.grp span{display:flex;align-items:center;gap:40px;padding-right:40px;font-family:var(--display);font-weight:700;font-size:1.15rem;white-space:nowrap}
.grp span::after{content:"";width:9px;height:9px;background:var(--green);transform:rotate(45deg)}
@keyframes slide{to{transform:translateX(-50%)}}

.steps{padding:56px 0 20px}
.steps h2,.cta h2{margin:0 0 32px;font-family:var(--display);font-weight:800;font-size:clamp(1.8rem,7vw,2.8rem);line-height:1.08;letter-spacing:-.02em}
.step-list{list-style:none;margin:0;padding:0;display:grid}
.step{position:relative;display:grid;grid-template-columns:48px 1fr;gap:16px;padding-bottom:30px}
.js .step{opacity:0;transform:translateY(26px);transition:opacity .7s ease,transform .7s ease;transition-delay:calc(var(--i) * .15s)}
.step::before{content:"";position:absolute;left:23px;top:54px;bottom:6px;width:2px;background:var(--blue);transform-origin:top;transform:scaleY(0);transition:transform .9s ease .35s}
.step:last-child::before{display:none}
.js .step.in{opacity:1;transform:none}
.js .step.in::before{transform:none}
.num{width:48px;height:48px;display:grid;place-items:center;border:2px solid var(--blue);border-radius:50%;background:var(--black);font-family:var(--display);font-weight:800;font-size:1.2rem;transition:background .4s ease .3s,color .4s ease .3s,border-color .4s ease .3s}
.step.in .num{background:var(--green);border-color:var(--green);color:var(--black)}
.step h3{margin:8px 0 4px;font-family:var(--display);font-weight:700;font-size:1.3rem}
.step p{margin:0;max-width:40ch;color:var(--muted)}

.cta{margin:28px 8px 12px 0;padding:32px 22px;background:var(--black);border:3px solid var(--blue);border-radius:18px;box-shadow:8px 8px 0 var(--green)}
.cta h2{margin-bottom:22px}
.cta-btn{display:inline-flex;align-items:center;justify-content:center;height:56px;padding:0 28px;background:var(--green);color:var(--black);border:2px solid var(--green);border-radius:10px;font-family:var(--display);font-weight:700;font-size:1.1rem;text-decoration:none;transition:transform .12s ease,box-shadow .12s ease}
.cta-btn:hover{transform:translate(-2px,-2px);box-shadow:4px 4px 0 var(--blue)}

@media(min-width:640px){
  .stage{padding-top:50px}
  .cta{padding:44px 40px;margin-right:10px;box-shadow:10px 10px 0 var(--green)}
}

@media(min-width:900px){
  .stage{grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);grid-template-areas:"copy visual" "tool visual";column-gap:64px;row-gap:30px;padding-top:72px;align-items:start}
  .visual{align-self:center;padding:32px}
  .hops{gap:16px}
  .hop{padding:16px 18px;font-size:1.02rem}
  .step-list{grid-template-columns:repeat(3,1fr);gap:32px}
  .step{grid-template-columns:1fr;gap:18px;padding-bottom:0}
  .step::before{left:60px;right:-32px;top:23px;bottom:auto;width:auto;height:2px;transform-origin:left;transform:scaleX(0)}
}

@media(prefers-reduced-motion:reduce){
  .bg::before,.marq-track,.hops::after,.hop,.hop::after,.hop.final,.ln,.lead,.panel,.visual{animation:none}
  .hop.final{opacity:1}
  .hop::after{transform:scaleX(1)}
  .js .step{transition:none;opacity:1;transform:none}
  .step::before{transition:none;transform:none}
}

.history{min-width:0}
.history-list{grid-template-columns:minmax(0,1fr)}
.h-item{min-width:0}
.h-host{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.h-copy{flex:none}
@media(max-width:420px){
  .h-item{padding:10px 12px;gap:10px}
  .h-copy{min-width:68px;padding:0 10px}
}
