:root{--paper:#f3f1eb;--ink:#1d2321;--text-2:#3c4643;--muted:#626b68;--faint:#6b675b;--line:#d9d5cb;--line-strong:#8b8578;--danger:#a8432c;--ease:cubic-bezier(.22, 1, .36, 1);--halo:0 0 2px var(--paper), 0 0 3px var(--paper), 0 0 5px var(--paper), 0 0 9px var(--paper);color:var(--ink);background:var(--paper);-webkit-font-smoothing:antialiased;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}*{box-sizing:border-box}body{overscroll-behavior:none;background:var(--paper);text-wrap:pretty;margin:0;overflow:hidden}h1,h2,h3{text-wrap:balance}canvas{touch-action:none;width:100vw;height:100dvh;display:block}button{font:inherit;color:inherit;cursor:pointer}button,a,.ball{-webkit-tap-highlight-color:transparent;touch-action:manipulation}button{-webkit-user-select:none;user-select:none}:is(button,a):active{opacity:.6}:focus-visible{outline:2px solid var(--ink);outline-offset:2px}:focus:not(:focus-visible){outline:none}.panel :is(.home,.link,.nav button,.nav a),.about-button,.bare,.lift-city{position:relative}.panel :is(.home,.link,.nav button,.nav a):after,.about-button:after,.bare:after,.lift-city:after,.labels .toward:after{content:"";position:absolute;inset:-12px -4px}.labels{pointer-events:none;position:fixed;inset:0}.labels>*{white-space:nowrap;will-change:transform;position:absolute;top:0;left:0}.labels .street{letter-spacing:.04em;color:var(--faint);transform-origin:0 0;font-size:12px}.labels .level{color:var(--faint);font-size:12px}.labels .level.toward{pointer-events:auto;cursor:pointer;color:var(--ink);text-shadow:var(--halo);border-bottom:1px solid;font-size:12px;font-weight:700}.labels .landmark{color:var(--ink);text-shadow:var(--halo);font-size:12px;font-weight:600}.labels .landmark.lying{color:var(--muted);background:0 0;padding:0;font-size:12px;font-weight:500}.labels .num{background:var(--paper);border:1.5px solid var(--ink);border-radius:50%;place-items:center;width:18px;height:18px;margin:-9px 0 0 -9px;font-size:10px;font-weight:700;display:grid}.labels .num.here{background:var(--ink);color:var(--paper);width:24px;height:24px;margin:-12px 0 0 -12px;font-size:12px}.labels .num.done{background:#d9d5cb}.above{pointer-events:none;white-space:nowrap;color:var(--ink);text-shadow:var(--halo);will-change:transform;padding:2px 0;font-size:12px;font-weight:700;position:fixed;top:0;left:0}.above small{letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin-right:8px;font-size:12px;font-weight:600}.above[hidden]{display:none}.about-corner{left:32px;bottom:max(24px, env(safe-area-inset-bottom));max-width:min(560px,100vw - 112px);color:var(--muted);text-shadow:var(--halo);z-index:3;align-items:flex-end;gap:12px;font-size:12px;line-height:1.5;display:flex;position:fixed}.about-corner a{color:inherit}.about-button{flex:none;font-size:14px;font-weight:700;text-decoration:none;color:var(--ink)!important}.about-corner .owed{transition:opacity .2s}.about-corner .owed a{text-underline-offset:2px;-webkit-text-decoration:underline #c9c4b8;text-decoration:underline #c9c4b8}.about-corner.folded .owed{opacity:0;pointer-events:none}.about-corner.folded:hover .owed,.about-corner.folded:focus-within .owed{opacity:1;pointer-events:auto}.compass{right:16px;bottom:max(24px, env(safe-area-inset-bottom));color:var(--ink);background:0 0;border:0;padding:0;display:flex;position:fixed}.compass svg{width:44px;height:44px;filter:drop-shadow(0 0 2px var(--paper)) drop-shadow(0 0 4px var(--paper));flex:none;padding:2px;overflow:visible}.depth{font-variant-numeric:tabular-nums;background:linear-gradient(to left, var(--paper) 72%, #f3f1eb00);pointer-events:none;margin:0;padding:24px 24px 32px 64px;transition:opacity .2s;position:fixed;top:48px;right:0;-webkit-mask-image:linear-gradient(#0000,#000 24px calc(100% - 30px),#0000);mask-image:linear-gradient(#0000,#000 24px calc(100% - 30px),#0000)}.depth svg{display:block;overflow:visible}.depth p{color:var(--muted);margin:8px 0 0;font-size:12px}.depth line.rule{stroke:var(--line);stroke-width:1px}.depth line.street{stroke:var(--line-strong);stroke-width:1px;stroke-dasharray:3 3}.depth line.on{stroke:var(--ink)}.depth svg.scrub{pointer-events:auto;cursor:ew-resize;touch-action:none;-webkit-user-select:none;user-select:none}.depth{-webkit-user-select:none;user-select:none}.depth circle.stop{fill:var(--paper);stroke:var(--line-strong);stroke-width:1.2px}.depth text{fill:var(--muted);text-anchor:end;font-size:12px}.depth text.name{text-anchor:start;fill:var(--text-2);font-size:12px}.depth text.on{fill:var(--ink);font-weight:700}.depth .walk{fill:none;stroke:var(--ink);stroke-width:1.6px;stroke-linejoin:round}.switches{top:calc(24px + env(safe-area-inset-top));gap:24px;display:flex;position:fixed;right:24px}.bare,.lift-city{text-shadow:var(--halo);background:0 0;border:0;border-bottom:2px solid #0000;align-items:center;gap:8px;padding:0 0 4px;font-size:14px;font-weight:700;display:flex}.bare svg,.lift-city svg{filter:drop-shadow(0 0 2px var(--paper))}.bare[aria-pressed=true]{border-bottom-color:var(--ink)}.lift-city[hidden]{display:none}.bare.nudge{animation:2.6s ease-in-out nudge}@keyframes nudge{0%,50%,to{border-bottom-color:#0000}25%,75%{border-bottom-color:var(--ink)}}.you{pointer-events:none;opacity:0;will-change:transform;background:#1d2321;border-radius:50%;place-items:center;width:24px;height:24px;display:grid;position:fixed;top:0;left:0}.you i{color:#1d2321;background:#fff;border-radius:50%;place-items:center;width:58%;height:58%;font:700 9px/1 Helvetica Neue,Helvetica,Arial,sans-serif;display:grid}.depth circle#ddot{fill:#fff;stroke-width:3px}.tip{z-index:5;max-width:260px;text-shadow:var(--halo);pointer-events:none;padding:2px 0;font-size:12px;line-height:1.35;position:fixed;top:0;left:0}.tip b{font-weight:600;display:block}.tip span{color:var(--muted);display:block}.tip .tip-balls{vertical-align:-4px;gap:4px;display:inline-flex}.tip .ball-group{--size:18px}.panel{overscroll-behavior:contain;background:linear-gradient(to right, var(--paper) 72%, #f3f1eb00);width:416px;max-height:100dvh;padding:32px 64px 64px 32px;font-size:16px;line-height:1.5;position:fixed;top:0;left:0;overflow:auto;-webkit-mask-image:linear-gradient(#000 calc(100% - 60px),#0000);mask-image:linear-gradient(#000 calc(100% - 60px),#0000)}.panel:empty{display:none}.panel .loading{color:var(--muted);margin:0}.panel header{gap:4px;margin-bottom:24px;display:grid}.panel .home{color:var(--muted);font-size:12px;text-decoration:none}.panel .home:before{content:"← "}.panel h1{letter-spacing:-.01em;margin:8px 0 0;font-size:24px;font-weight:700;line-height:1.25}.panel .rack{gap:8px 12px;margin:8px 0 0}.panel .ball-group{--size:24px}.panel .body{gap:16px;display:grid}.panel .kicker{letter-spacing:.06em;text-transform:uppercase;color:var(--muted);font-variant-numeric:tabular-nums;margin:0;font-size:12px;font-weight:600}.panel h2{letter-spacing:-.01em;margin:-8px 0 0;font-size:20px;line-height:1.25}.panel .text{color:var(--text-2);margin:0}.panel .hint,.panel .trouble{color:var(--muted);margin:0;font-size:12px}.panel .sum{color:var(--ink);font-variant-numeric:tabular-nums;margin:0}.panel .links{flex-wrap:wrap;gap:8px 24px;display:flex}.panel .links .link{white-space:nowrap}.panel .trouble{color:var(--danger)}.panel .trip{grid-template-columns:auto 1fr;align-items:center;gap:8px;font-size:14px;display:grid}.panel .trip .word{color:var(--muted);font-size:14px}.panel .slot{align-items:center;min-width:0;display:flex}.panel .slot .what{color:var(--ink);overflow-wrap:anywhere;min-width:0;margin-left:4px;font-weight:700;line-height:1.25}.panel .kind{cursor:pointer;background:0 0;border:0;flex:none;justify-content:center;align-items:center;width:40px;height:40px;margin-block:-4px;padding:0;transition:opacity .15s;display:inline-flex;position:relative}.panel .kind:not(.is){opacity:.55}.panel .kind.on{opacity:1}.panel .kind.on:after{content:"";background:var(--ink);height:2px;position:absolute;bottom:2px;left:8px;right:8px}.panel .slot .what.hinted{color:var(--muted);align-items:center;font-weight:600;display:flex}.panel .kind .ball-group{--size:24px}.panel .kind .ball-group:is(.open,:focus-within,:hover) .ball{transform:none}.panel .kind .ball-group:is(.open,:focus-within,:hover) .ball+.ball{margin-left:calc(var(--size) * -1)}.panel .kind .ball-group:is(.open,:focus-within,:hover) .ball i{color:#0000}.panel:has(.picker) .hint{display:none}body:has(.panel .picker) .about-corner{visibility:hidden}.panel .ghost-ball{width:24px;height:24px;box-shadow:inset 0 0 0 1.5px var(--ink);border-radius:50%}.panel .kind.train.is .ghost-ball{background:var(--ink)}.panel .kind .sq{width:20px;height:20px;box-shadow:inset 0 0 0 1.5px var(--ink)}.panel .kind.street.is .sq{background:var(--ink)}.panel .picker{animation:pick-in .15s var(--ease)}@keyframes pick-in{0%{opacity:0;transform:translateY(-4px)}}.panel .pick-note{min-height:1.5em;color:var(--muted);margin:8px 0 0;font-size:12px}.panel .pick-note.said-here{color:var(--ink);font-weight:700}.panel .rack-pick{flex-wrap:wrap;gap:12px 16px;display:flex}.panel .rack-pick .pick-note{flex-basis:100%;margin-top:0}.panel .pick-row{cursor:pointer;background:0 0;border:0;border-bottom:2px solid #0000;padding:0 0 4px;transition:transform .15s;display:inline-flex;position:relative}.panel .pick-row:after{content:"";position:absolute;inset:-6px -8px -4px}.panel .pick-row .ball-group{--size:24px}.panel .pick-row.on{border-bottom-color:var(--ink)}.panel .pick-row:disabled{opacity:.3;cursor:default}.panel .pick-row .ball{animation:roll-in .3s var(--ease) both;animation-delay:calc(min(var(--i), 5) * 30ms)}@keyframes roll-in{0%{opacity:0;transform:translate(-14px)rotate(-200deg)}}.panel .plan-pick svg{aspect-ratio:1;cursor:crosshair;touch-action:none;width:100%;max-width:256px;height:auto;display:block;overflow:hidden;-webkit-mask-image:radial-gradient(closest-side,#000 82%,#0000);mask-image:radial-gradient(closest-side,#000 82%,#0000)}.panel .plan-pick .roads polyline{fill:none;stroke:#e2ddd1;stroke-linecap:round;stroke-linejoin:round}.panel .plan-pick .parks polygon{fill:#dfe2d3}.panel .plan-pick .plats polygon{fill:color-mix(in srgb, var(--c) 45%, var(--paper))}.panel .plan-pick .royal polygon{fill:#3a403d}.panel .plan-pick .names text{font-size:calc(var(--k) * 12px);fill:var(--faint);text-anchor:middle;letter-spacing:.04em}.panel .plan-pick .ways rect{fill:var(--line-strong);transform-box:fill-box;transform-origin:50%;transition:transform .15s var(--ease), fill .15s ease;pointer-events:none}.panel .plan-pick .ways rect.other{fill:var(--paper);stroke:var(--line-strong);stroke-width:calc(var(--k) * 1.5px)}.panel .plan-pick .ways rect.taken{opacity:.3}.panel .plan-pick .ways rect:is(.on,.hot){fill:var(--ink);transform:scale(1.5)}.panel .plan-pick .said{text-anchor:middle;font-size:calc(var(--k) * 12px);fill:var(--ink);paint-order:stroke;stroke:var(--paper);stroke-width:calc(var(--k) * 4px);stroke-linejoin:round;pointer-events:none;font-weight:700}.panel .ends{margin:0 0 16px}.panel .end-row,.panel .sheet-row{text-align:left;width:100%;min-height:40px;color:var(--ink);cursor:pointer;background:0 0;border:0;align-items:center;gap:8px;padding:4px 0;font-size:14px;line-height:1.5;display:flex}.panel .end-row{font-weight:700}.panel .end-row+.end-row{border-top:1px solid var(--line)}.panel .end-row .word{width:40px;color:var(--text-2);flex:none;font-weight:400}.panel .end-row.on .what{text-underline-offset:4px;text-decoration:underline}.panel .mark{flex:none;align-items:center;display:inline-flex}.panel .mark .ball-group{--size:24px}.panel .what{min-width:0}.panel .sheet{overscroll-behavior:contain;max-height:42vh;margin:0 0 16px;padding-bottom:16px;overflow-y:auto;-webkit-mask-image:linear-gradient(#000 calc(100% - 24px),#0000);mask-image:linear-gradient(#000 calc(100% - 24px),#0000)}.panel,.panel .sheet{scrollbar-width:none}.panel::-webkit-scrollbar{display:none}.panel .sheet::-webkit-scrollbar{display:none}.panel .sheet-title{display:none}.panel .sheet-group{letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin:8px 0 0;font-size:12px;font-weight:600}.panel .sheet-row.on{font-weight:700}.panel .sheet-row.on:after{content:"";background:var(--ink);border-radius:50%;flex:none;width:8px;height:8px;margin-left:auto}.panel .nav{flex-wrap:wrap;align-items:baseline;gap:8px 24px;margin-top:8px;display:flex}.panel .nav button{background:0 0;border:0;padding:0}.panel .nav .go{white-space:nowrap;border-bottom:2px solid var(--ink);gap:8px;padding-bottom:4px;font-size:16px;font-weight:700;display:inline-flex}.panel .nav .go span{transition:transform .15s}.panel .nav a.go{color:var(--ink);text-decoration:none}.panel .nav .back{color:var(--muted);order:-1;font-size:14px}.panel .nav .back:before{content:"← "}.panel .nav button:disabled{opacity:.55;cursor:default}.panel .nav .back:disabled{visibility:hidden;width:0;margin-right:-24px}.panel .link{color:var(--muted);text-underline-offset:3px;background:0 0;border:0;justify-self:start;padding:0;font-size:12px;text-decoration:underline}body.phone{overscroll-behavior:none;overflow:hidden}body.phone #scene{touch-action:none}body.phone:before{content:"";z-index:1;height:calc(56px + env(safe-area-inset-top));background:linear-gradient(to bottom, var(--paper) 60%, #f3f1eb00);pointer-events:none;position:fixed;inset:0 0 auto}body.phone :is(.switches,.compass,.depth,.tip,.above){display:none}body.phone .panel{z-index:2;width:100vw;max-height:none;padding:32px 16px calc(max(12px, env(safe-area-inset-bottom)) + 15px);background:linear-gradient(to bottom, #f3f1eb00, var(--paper) 28px);pointer-events:none;top:auto;bottom:0;left:0;overflow:visible;-webkit-mask-image:none;mask-image:none}body.phone .panel header{left:16px;right:104px;top:calc(12px + env(safe-area-inset-top));margin:0;display:block;position:fixed}body.phone .panel .home{pointer-events:auto;font-size:0;display:inline;position:relative}body.phone .panel .home:before{content:"←";margin-right:8px;font-size:16px}body.phone .panel .home:after{content:"";position:absolute;inset:-16px}body.phone .panel h1{color:var(--text-2);text-shadow:var(--halo);margin:0;font-size:14px;line-height:1.5;display:inline}body.phone .cap{min-height:76px}body.phone .now{letter-spacing:-.01em;color:var(--ink);text-wrap:balance;margin:0;font-size:20px;font-weight:700;line-height:1.25}body.phone .under{color:var(--text-2);min-height:21px;margin:4px 0 0;font-size:14px;line-height:1.5}body.phone .cap .go{pointer-events:auto;margin-top:8px;font-size:14px;display:inline-flex}body.phone .rail{background:var(--line);height:2px;margin:24px 136px 0 0;position:relative}body.phone .rail b{background:var(--ink);transform-origin:0;position:absolute;inset:0;transform:scaleX(0)}body.phone .rail i{background:var(--paper);width:2px;height:6px;margin-left:-1px;position:absolute;top:-2px}body.phone .ends{align-items:center;gap:8px;margin-bottom:4px;display:flex}body.phone .end-rows{flex:1;min-width:0}body.phone :is(.end-row,.sheet-row,.flip){color:var(--ink);background:0 0;border:0}body.phone .end-row,body.phone .sheet-row{text-align:left;width:100%;min-height:44px;color:var(--ink);pointer-events:auto;align-items:center;gap:8px;padding:4px 0;font-size:16px;font-weight:600;line-height:1.25;display:flex}body.phone .end-row+.end-row{border-top:1px solid var(--line)}body.phone .end-row .word{width:40px;color:var(--text-2);flex:none;font-size:14px;font-weight:400}body.phone .mark{flex:none;align-items:center;display:inline-flex}body.phone .mark .ball-group{--size:24px}body.phone .mark .sq{background:var(--ink);width:16px;height:16px;margin:0 4px;display:block}body.phone .what{min-width:0}body.phone .flip{pointer-events:auto;flex:none;place-items:center;width:44px;height:44px;display:grid}body.phone .flip svg{fill:none;width:20px;height:20px;stroke:var(--ink);stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round}body.phone .sheet-back{z-index:3;pointer-events:auto;background:#f3f1eb99;position:fixed;inset:0}body.phone .sheet{z-index:4;overscroll-behavior:contain;touch-action:pan-y;max-height:70dvh;padding:16px 16px max(16px, env(safe-area-inset-bottom));background:var(--paper);border-top:1px solid var(--line);pointer-events:auto;margin:0;position:fixed;bottom:0;left:0;right:0;overflow-y:auto;-webkit-mask-image:none;mask-image:none}body.phone .sheet-title{margin:0;font-size:20px;font-weight:700;line-height:1.25;display:block}body.phone .sheet-group{letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin:16px 0 4px;font-size:12px;font-weight:600}body.phone .sheet-row{font-weight:400}body.phone .sheet-row.on{font-weight:700}body.phone .sheet-row.on:after{content:"";background:var(--ink);border-radius:50%;flex:none;width:8px;height:8px;margin-left:auto}@media (height<=500px){body.phone .end-rows{grid-template-columns:1fr 1fr;gap:16px;display:grid}body.phone .end-row+.end-row{border-top:0}}body.phone .about-corner{left:auto;right:16px;top:calc(44px + env(safe-area-inset-top));text-align:right;flex-direction:column;align-items:flex-end;gap:4px;max-width:calc(100vw - 32px);bottom:auto}body.phone .about-corner .about-button{display:none}body.phone .card{background:linear-gradient(to bottom, #f3f1eb00, var(--paper) 20px);touch-action:pan-y;width:auto;padding:24px 16px 8px;left:0;right:0}.steps,.reset-view{display:none}body.phone .steps{z-index:2;right:16px;bottom:max(12px, env(safe-area-inset-bottom));gap:8px;display:flex;position:fixed}body.phone .steps button{border-radius:16px;width:56px;height:32px;font-size:14px;font-weight:600;position:relative}body.phone .steps button:after{content:"";position:absolute;inset:-4px}body.phone .step-back{color:var(--ink);border:1px solid var(--line-strong);background:var(--paper)}body.phone .step-next{color:var(--paper);border:1px solid var(--ink);background:var(--ink)}body.phone .steps button:disabled{opacity:.35}body.phone .reset-view{z-index:2;right:16px;top:calc(14px + env(safe-area-inset-top));color:var(--ink);text-shadow:var(--halo);background:0 0;border:0;padding:0;font-size:14px;font-weight:600;line-height:1.5;display:block;position:fixed}body.phone .reset-view[hidden]{display:none}body.phone .reset-view:after{content:"";position:absolute;inset:-10px -16px}body.phone .about-corner.folded .owed{display:none}.endmark{pointer-events:none;will-change:transform;transition:opacity .2s;position:fixed;top:0;left:0}.endmark i{border:2.5px solid var(--ink);background:#fbfaf799;border-radius:50%;width:18px;height:18px;position:absolute;top:-9px;left:-9px}.endmark.to i{background:var(--ink);box-shadow:inset 0 0 0 3px var(--paper)}.endmark span{letter-spacing:.06em;text-transform:uppercase;color:var(--ink);text-shadow:var(--halo);white-space:nowrap;font-size:12px;font-weight:700;position:absolute;top:-8px;left:16px}.card{overscroll-behavior:contain;background:linear-gradient(to right, var(--paper) 78%, #f3f1eb00);z-index:4;width:416px;min-height:0;max-height:calc(100dvh - 420px);padding:4px 64px 24px 32px;font-size:14px;line-height:1.5;position:fixed;left:0;overflow:auto}.card .kicker{letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin:0 0 4px;font-size:12px;font-weight:600}.card h3{letter-spacing:-.01em;margin:0 0 8px;font-size:20px;line-height:1.25}.card p{color:var(--text-2);margin:0 0 8px;font-size:14px;line-height:1.5}.card p:last-child{margin:0}.card .src{color:var(--muted);font-size:12px}.card .src a{color:inherit;text-underline-offset:2px;text-decoration-thickness:1px}@media (width<=760px){.card{background:linear-gradient(to bottom, #f3f1eb00, var(--paper) 20px);width:auto;max-height:30dvh;padding:24px 16px 12px;left:0;right:0}}.endmark.left span{left:auto;right:14px}@media (hover:hover) and (pointer:fine){.panel .sheet-row:hover .what,.panel .end-row:hover .what{text-underline-offset:4px;text-decoration:underline}.labels .level.toward:hover{border-bottom-width:2px}.about-button:hover{text-underline-offset:4px;text-decoration:underline}.bare:hover,.lift-city:hover{border-bottom-color:var(--ink)}.panel .kind:hover{opacity:1}.panel .pick-row:hover:not(:disabled){transform:translateY(-2px)rotate(-6deg)}.panel .nav .go:hover:not(:disabled) span{transform:translate(4px)}.panel .nav .back:hover:not(:disabled),.panel .home:hover,.panel .link:hover,.card .src a:hover{color:var(--ink)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:1ms!important;transition-delay:0s!important;animation-duration:1ms!important;animation-delay:0s!important}}body[data-still] :is(#about-corner,#panel,#depth,.switches,#compass,#tip,#card,#above){display:none!important}.no-webgl{z-index:20;text-align:center;color:var(--ink);background:var(--paper);place-content:center;margin:0;padding:24px;font-size:16px;line-height:1.5;display:grid;position:fixed;inset:0}@media (height<=500px){body.phone .about-corner{top:calc(40px + env(safe-area-inset-top))}}
