.font-coord{font-family:Space Mono,ui-monospace,SF Mono,Cascadia Code,monospace}.contour-grid{background-image:linear-gradient(hsl(var(--border)) 1px, transparent 1px), linear-gradient(90deg, hsl(var(--border)) 1px, transparent 1px);background-position:-1px -1px;background-size:48px 48px;-webkit-mask-image:radial-gradient(120% 90% at 50% -10%,#000 38%,#0000 76%);mask-image:radial-gradient(120% 90% at 50% -10%,#000 38%,#0000 76%)}.route-rail{position:relative}.route-rail:before{content:"";background:hsl(var(--border));width:2px;position:absolute;top:8px;bottom:0;left:23px}.route-fill{background:hsl(var(--accent));width:2px;height:0;box-shadow:0 0 12px hsl(var(--accent) / .5);transition:height .1s linear;position:absolute;top:8px;left:23px}.route-stop{position:relative}.route-stop-mark{background:hsl(var(--background));border:2px solid hsl(var(--border));border-radius:50%;place-items:center;width:18px;height:18px;transition:border-color .3s,box-shadow .3s;display:grid;position:absolute;top:4px;left:16px}.route-stop-mark:after{content:"";background:hsl(var(--border));border-radius:50%;width:6px;height:6px;transition:background .3s}.route-stop.is-lit .route-stop-mark{border-color:hsl(var(--accent));box-shadow:0 0 0 4px hsl(var(--accent) / .12)}.route-stop.is-lit .route-stop-mark:after{background:hsl(var(--accent))}@media (width<=900px){.route-rail:before,.route-fill{left:8px}.route-stop-mark{left:1px}}.plot-grid{background-image:linear-gradient(hsl(var(--border)) 1px, transparent 1px), linear-gradient(90deg, hsl(var(--border)) 1px, transparent 1px);background-size:32px 32px}.route-draw{stroke-dasharray:780;stroke-dashoffset:780px}.route-draw.is-drawn{animation:2.4s .2s forwards loci-draw}@keyframes loci-draw{to{stroke-dashoffset:0}}.plot-point{opacity:0}.plot-point.is-drawn{animation:.4s forwards loci-pop}.plot-point.d1{animation-delay:.5s}.plot-point.d2{animation-delay:.9s}.plot-point.d3{animation-delay:1.3s}.plot-point.d4{animation-delay:1.7s}.plot-point.d5{animation-delay:2.1s}@keyframes loci-pop{0%{opacity:0;transform:scale(.4)}to{opacity:1;transform:scale(1)}}.reveal{opacity:0;transition:opacity .6s,transform .6s cubic-bezier(.22,1,.36,1);transform:translateY(16px)}.reveal.is-in{opacity:1;transform:none}@media (prefers-reduced-motion:reduce){.route-fill{transition:none}.route-draw,.route-draw.is-drawn{stroke-dashoffset:0;animation:none}.plot-point,.plot-point.is-drawn{opacity:1;animation:none}.reveal{opacity:1;transition:none;transform:none}}
