.specimen-magnet{position:relative;min-width:0;pointer-events:none;opacity:0;transition:opacity .9s cubic-bezier(.16,1,.3,1)}.specimen-magnet[data-motif=play],.specimen-magnet[data-motif=rest]{opacity:1}.specimen-magnet__field{position:absolute;inset:0;width:100%;height:100%}.specimen-magnet__magnet{position:absolute;top:0;left:0;overflow:visible;transform-origin:50% 50%;will-change:transform}@media (prefers-reduced-motion:reduce){.specimen-magnet{transition:none}}.step-rail__wire{position:absolute;top:6px;bottom:6px;left:6px;width:1px;background-color:var(--line-strong)}.step-rail__fill{position:absolute;inset:0;background-color:var(--color-pole);transform-origin:50% 0;transform:scaleY(var(--step-rail-to))}.step-rail__lane{position:absolute;top:0;bottom:0;left:0;width:13px;overflow:hidden}.step-rail__head-track{position:absolute;top:6px;bottom:6px;left:6px;width:1px;transform:translateY(calc(var(--step-rail-to) * 100%))}.step-rail__head{position:absolute;top:0;left:50%;width:6px;height:6px;translate:-50% -50%;background-color:var(--color-pole);opacity:0}.step-rail[data-running] .step-rail__head{opacity:1}.step-rail[data-running] .step-rail__fill{animation:step-rail-fill-y var(--step-rail-duration) linear both}.step-rail[data-running] .step-rail__head-track{animation:step-rail-head-y var(--step-rail-duration) linear both}.step-rail__steps{display:grid;gap:22px;margin:0;padding:0;list-style:none}.step-rail__step{position:relative;display:grid;grid-template-columns:auto minmax(0,1fr);align-items:baseline;gap:6px 10px}.step-rail__node{position:absolute;top:0;left:-30px;width:13px;height:13px;border:1px solid var(--line-strong);background-color:var(--background);transition:background-color .3s ease-out,border-color .3s ease-out,box-shadow .3s ease-out}.step-rail__number{font-family:var(--font-mono);font-size:13px;font-weight:500;font-variant-numeric:tabular-nums;line-height:1;letter-spacing:.06em;color:var(--muted-foreground);transition:color .3s ease-out}.step-rail__title{font-size:19px;font-weight:600;line-height:1.3;letter-spacing:-.01em;color:var(--fg-2);transition:color .3s ease-out}.step-rail__description{grid-column:1/-1;font-size:16.5px;line-height:1.45;color:var(--muted-foreground);transition:color .3s ease-out}.step-rail__step[data-state=done] .step-rail__node,.step-rail__step[data-state=on] .step-rail__node{border-color:var(--color-pole);background-color:var(--color-pole)}.step-rail__step[data-state=on] .step-rail__node{box-shadow:0 0 0 3px color-mix(in oklab,var(--color-pole) 16%,transparent)}.step-rail__step[data-state=done] .step-rail__title,.step-rail__step[data-state=on] .step-rail__title{color:var(--foreground)}.step-rail__step[data-state=on] .step-rail__description{color:var(--fg-2)}.step-rail__step[data-state=on] .step-rail__number{color:var(--lit)}.dark .step-rail__step[data-state=on] .step-rail__number{color:var(--color-pole)}@media (min-width:900px){.step-rail__wire{top:6px;right:0;bottom:auto;left:0;width:auto;height:1px}.step-rail__fill{transform-origin:0 50%;transform:scaleX(var(--step-rail-to))}.step-rail__lane{top:0;right:-6px;bottom:auto;left:-6px;width:auto;height:13px}.step-rail__head-track{top:6px;right:6px;bottom:auto;left:6px;width:auto;height:1px;transform:translateX(calc(var(--step-rail-to) * 100%))}.step-rail__head{top:50%;left:0}.step-rail[data-running] .step-rail__fill{animation-name:step-rail-fill-x}.step-rail[data-running] .step-rail__head-track{animation-name:step-rail-head-x}.step-rail__steps{grid-template-columns:repeat(var(--step-rail-count),minmax(0,1fr));gap:0}.step-rail__step{padding:30px 24px 0 0}.step-rail__node{left:0}}@keyframes step-rail-fill-y{0%{transform:scaleY(var(--step-rail-from))}to{transform:scaleY(var(--step-rail-to))}}@keyframes step-rail-head-y{0%{transform:translateY(calc(var(--step-rail-from) * 100%))}to{transform:translateY(calc(var(--step-rail-to) * 100%))}}@keyframes step-rail-fill-x{0%{transform:scaleX(var(--step-rail-from))}to{transform:scaleX(var(--step-rail-to))}}@keyframes step-rail-head-x{0%{transform:translateX(calc(var(--step-rail-from) * 100%))}to{transform:translateX(calc(var(--step-rail-to) * 100%))}}@media (prefers-reduced-motion:reduce){.step-rail__description,.step-rail__node,.step-rail__number,.step-rail__title{transition:none}}