Files

255 lines
65 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<title>Station Master — track geometry</title>
<style>
.bs{width:100%;height:auto;background:#0e1116;border-radius:6px;padding:6px;overflow:visible}
.bs-rail{stroke:#cfd6e0;stroke-width:1.6}
.bs-tie{stroke:#8d97a5;stroke-width:1.1}
.bs-open .bs-rail{stroke:#6b7686;stroke-dasharray:6 4}
.bs-open .bs-tie{stroke:#59626f}
.bs-card{fill:#161b21;stroke:#39424e;stroke-width:1}
.bs-card.bs-run{fill:#1d232c}
.bs-office{fill:#1b2534;stroke:#4d6fa8;stroke-width:2}
.bs-lim{fill:#241d1d;stroke:#8a5a5a}
.bs-fac{fill:#201c26;stroke:#7a5f9a}
.bs-mod{fill:#231d2b;stroke:#5c4a70;stroke-dasharray:4 3}
.bs-sec{fill:#161b21;stroke:#39424e}
.bs-sec.bs-dp{fill:#151f19;stroke:#3f7a52;stroke-width:2;stroke-dasharray:5 3}
.bs-sec.bs-office{fill:#1b2534;stroke:#4d6fa8;stroke-width:2}
/* THE DIVISION, drawn as the route rather than as a row of boxes.
Three kinds of cell, and they must be told apart at a glance: a Division Point is where trains
come from and go to, a Mainline card is shared ground between two districts, and a Running Track
card belongs to one player's Office Area. */
.bs-dcell rect{fill:#161b21;stroke:#39424e;stroke-width:1}
.bs-ddp rect{fill:#151f19;stroke:#3f7a52;stroke-width:2;stroke-dasharray:5 3}
.bs-dml rect{fill:#1d222b;stroke:#6b7686;stroke-width:1.6}
.bs-drun rect{fill:#1b2534;stroke:#4d6fa8}
.bs-dcell.bs-full rect{stroke:#e0a060;stroke-width:2}
/* The elbow where the route turns from one player's side of the table to the next. Drawn heavier
than a plain join because that turn is the boundary two districts share. */
.bs-turn{fill:none;stroke:#7f8b9c;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round}
/* Buffer stops at both ends. The Division is a line, not a loop: trains enter at one Division Point
and leave at the other, and a seated layout must not be read as a ring. */
.bs-stop line{stroke:#e0a060;stroke-width:2.6;stroke-linecap:round}
.bs-end{fill:#e0a060;font:10px ui-monospace,monospace;letter-spacing:.03em}
/* The vertical bars a Mainline card is divided into (§2.1). Drawn faint: they are the ruler the
train is measured against, not something to look at instead of the train. */
.bs-region{stroke:#4a5361;stroke-width:1.2;stroke-dasharray:3 3}
.bs-slot{fill:none;stroke:#5f6b7a;stroke-width:1.1;stroke-dasharray:3 2}
.bs-slot.bs-occ{fill:rgba(90,169,230,.20);stroke:#5aa9e6;stroke-dasharray:none}
.bs-train rect{fill:#2f6b3d;stroke:#8fd6a0;stroke-width:1.2}
.bs-crew rect{fill:#8a6d1f;stroke:#e0c060;stroke-width:1.2}
.bs-tlab{fill:#eaf6ec;font:600 11px ui-monospace,monospace}
.bs-carlab{fill:#cfd6e0;font:9px ui-monospace,monospace}
.bs-wb{fill:#20262e;stroke:#4a5361;stroke-width:1}
.bs-wb.bs-green{stroke:#3f7a52}
.bs-wb.bs-green.bs-occ{fill:rgba(63,122,82,.55)}
.bs-wb.bs-maw{stroke:#8a6d1f}
.bs-wb.bs-maw.bs-occ{fill:rgba(190,150,40,.65)}
.bs-wb.bs-red{stroke:#8a5a5a}
.bs-wb.bs-red.bs-occ{fill:rgba(170,70,70,.6)}
.bs-wl{fill:#8d97a5;font:7px ui-monospace,monospace}
.bs-arrow{fill:#5f6b7a;font:10px ui-monospace,monospace}
.bs-cn{fill:#e6e9ee;font:600 11px ui-monospace,monospace}
.bs-coord{fill:#5f6b7a;font:9px ui-monospace,monospace}
.bs-name{fill:#e6e9ee;font:600 11px ui-monospace,monospace}
.bs-cap{fill:#8b94a3;font:10px ui-monospace,monospace}
.bs-cap.bs-full{fill:#e0a060;font-weight:600}
.bs-grade{fill:#e08060;font:10px ui-monospace,monospace}
.bs-mod{font:10px ui-monospace,monospace}
text.bs-mod{fill:#c8a04a}
.bs-enh{fill:#7fb0e6;font:9px ui-monospace,monospace}
.bs-rowlab{fill:#5f6b7a;font:600 9px ui-monospace,monospace;letter-spacing:.1em}
.bs-ghost rect{fill:rgba(90,169,230,.07);stroke:#5aa9e6;stroke-width:2;stroke-dasharray:5 4}
.bs-ghost text{fill:#5aa9e6;font:11px ui-monospace,monospace}
.bs-ghost,g[data-cell].bs-legal{cursor:pointer}
g[data-cell].bs-legal .bs-card{stroke:#5aa9e6;stroke-width:2.5}
g[data-cell].bs-legal:hover .bs-card,.bs-ghost:hover rect{fill:#233246}
g[data-cell].bs-focus .bs-card{stroke:#e0c060;stroke-width:2.5}
g[data-cell].bs-from .bs-card{stroke:#7a6a3a;stroke-width:2;stroke-dasharray:4 3}
:root{
--plate:#0d1117; --plate-grid:#1b2430;
--ground:#eef1f5; --surface:#ffffff; --rule:#cdd5e0;
--ink:#18212c; --dim:#5b6673; --accent:#2f5ea8; --reject:#a04a4a;
--mono:ui-monospace,"Cascadia Mono","SF Mono",Menlo,Consolas,monospace;
--serif:"Iowan Old Style",Charter,"Bitstream Charter","Palatino Linotype",Georgia,serif;
}
@media (prefers-color-scheme:dark){
:root{
--ground:#0d1117; --surface:#141a21; --rule:#2a333f;
--ink:#dde3ea; --dim:#8d97a5; --accent:#6d97d8; --reject:#c88a8a;
}
}
:root[data-theme="dark"]{
--ground:#0d1117; --surface:#141a21; --rule:#2a333f;
--ink:#dde3ea; --dim:#8d97a5; --accent:#6d97d8; --reject:#c88a8a;
}
:root[data-theme="light"]{
--ground:#eef1f5; --surface:#ffffff; --rule:#cdd5e0;
--ink:#18212c; --dim:#5b6673; --accent:#2f5ea8; --reject:#a04a4a;
}
*{box-sizing:border-box}
body{
margin:0; background:var(--ground); color:var(--ink);
font-family:var(--serif); font-size:17px; line-height:1.65;
-webkit-font-smoothing:antialiased;
}
.sheet{max-width:1080px;margin:0 auto;padding:clamp(28px,5vw,72px) clamp(20px,4vw,48px) 96px}
.measure{max-width:66ch}
.eyebrow{
font-family:var(--mono); font-size:.72rem; text-transform:uppercase; letter-spacing:.14em;
color:var(--accent); margin:0 0 14px;
}
h1{
font-family:var(--mono); font-weight:600; font-size:clamp(1.9rem,4.4vw,2.9rem);
line-height:1.12; letter-spacing:-.02em; margin:0 0 20px; text-wrap:balance;
}
.stand{font-size:1.15rem;color:var(--dim);margin:0 0 8px}
h2{
font-family:var(--mono); font-weight:600; font-size:1.1rem; letter-spacing:.02em;
margin:0 0 6px; text-wrap:balance;
}
h2 .n{color:var(--accent);margin-right:.6em;font-weight:400}
p{margin:0 0 1em}
section{margin-top:clamp(48px,7vw,84px);border-top:1px solid var(--rule);padding-top:26px}
.lede{color:var(--dim);margin-bottom:28px}
code{font-family:var(--mono);font-size:.88em;background:color-mix(in srgb,var(--accent) 11%,transparent);padding:.12em .38em;border-radius:3px}
/* Specimen plates: the board is a dark instrument, so the plates stay dark in both themes. */
.plate{
background:var(--plate); border:1px solid var(--plate-grid); border-radius:5px; padding:14px;
background-image:linear-gradient(var(--plate-grid) 1px,transparent 1px),linear-gradient(90deg,var(--plate-grid) 1px,transparent 1px);
background-size:13px 13px; background-position:-1px -1px;
overflow-x:auto;
}
/* A specimen is a card looked at closely, not a poster: cap it so the SVG's own 11px labels stay
subordinate to the page's headings instead of scaling past them. */
.plate .bs{background:transparent;display:block;margin:0 auto;max-width:236px}
.plate--wide .bs{max-width:none;min-width:940px}
.specs{display:grid;grid-template-columns:repeat(auto-fit,minmax(268px,1fr));gap:26px 24px;margin:0}
.spec{margin:0;display:flex;flex-direction:column;gap:10px}
.spec figcaption{display:flex;flex-direction:column;gap:4px}
.meta{display:flex;gap:10px;align-items:baseline;margin:0;font-family:var(--mono);font-size:.74rem;letter-spacing:.06em}
.pairs{color:var(--ink)}
.slope{color:var(--accent);text-transform:uppercase}
.slope.none{color:var(--dim)}
.note{margin:0;font-size:.94rem;color:var(--dim);line-height:1.55}
.pair-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:28px;margin:0}
.judged{margin:0;display:flex;flex-direction:column;gap:12px}
.verdict{
font-family:var(--mono);font-size:.74rem;text-transform:uppercase;letter-spacing:.1em;
display:flex;align-items:center;gap:9px;margin:0;
}
.verdict::before{content:"";width:9px;height:9px;border-radius:50%;flex:none;background:currentColor}
.yes{color:var(--accent)}
.no{color:var(--reject)}
.judged .note{font-size:.95rem}
table{border-collapse:collapse;width:100%;font-family:var(--mono);font-size:.82rem;font-variant-numeric:tabular-nums}
.tablewrap{overflow-x:auto;border:1px solid var(--rule);border-radius:5px;background:var(--surface)}
td{padding:9px 16px;border-bottom:1px solid var(--rule);white-space:nowrap}
tr:last-child td{border-bottom:0}
td:first-child{color:var(--dim);text-transform:uppercase;letter-spacing:.07em;font-size:.72rem;width:1%}
.foot{margin-top:64px;padding-top:22px;border-top:1px solid var(--rule);font-family:var(--mono);font-size:.76rem;color:var(--dim);line-height:1.8}
</style>
<div class="sheet">
<header class="measure">
<p class="eyebrow">Station Master · board geometry</p>
<h1>The track is 45°, and the rail runs down the middle</h1>
<p class="stand">Every card below is drawn by the game's own renderer, from the engine's own connection table. Nothing here is a mock-up — if the picture is wrong, the board is wrong.</p>
</header>
<section>
<h2><span class="n">01</span>Measured off the sheet</h2>
<p class="lede measure">Taken from <code>docs/tracks.png</code> rather than inferred from the art. The east–west rail sits at the card's exact vertical middle on every row of the sheet.</p>
<div class="tablewrap">
<table><tr><td>Sheet</td><td>2136 × 1397 px, 8 × 9 cards</td></tr><tr><td>Card</td><td>259 × 150 px · aspect 1.73</td></tr><tr><td>Grid lines, y</td><td>15 · 164 · 314 · 464 · 614 · 764 · 914 · 1064 · 1213</td></tr><tr><td>Rail centres, y</td><td>89.5 · 236 · — · — · 689.5 · 839 · 989 · 1135.5 · 1288.5</td></tr><tr><td>Deviation from centre</td><td>under 1 px on all nine rows</td></tr><tr><td>Leg crosses edge at</td><td>x = W/2, at 45°</td></tr></table>
</div>
</section>
<section>
<h2><span class="n">02</span>The shapes</h2>
<p class="lede measure">Five, and that is all of them. A card turns 180° but never flips, so each of these also exists upside down — the turnout's leg reaching north instead of south, the curve reaching <code>ne</code> instead of <code>sw</code>. What it cannot do is change diagonal.</p>
<div class="specs">
<figure class="spec">
<div class="plate"><svg class="bs" viewBox="0 0 169 103" preserveAspectRatio="xMinYMin meet"><g data-cell="0,0" data-tip="Straight — " transform="translate(0,0)"><rect class="bs-card bs-trk" x="0" y="0" width="166" height="96" rx="4"/><line class="bs-rail" x1="166" y1="45.5" x2="0" y2="45.5"/><line class="bs-rail" x1="166" y1="50.5" x2="0" y2="50.5"/><line class="bs-tie" x1="166" y1="43.5" x2="166" y2="52.5"/><line class="bs-tie" x1="156.77777777777777" y1="43.5" x2="156.77777777777777" y2="52.5"/><line class="bs-tie" x1="147.55555555555554" y1="43.5" x2="147.55555555555554" y2="52.5"/><line class="bs-tie" x1="138.33333333333334" y1="43.5" x2="138.33333333333334" y2="52.5"/><line class="bs-tie" x1="129.11111111111111" y1="43.5" x2="129.11111111111111" y2="52.5"/><line class="bs-tie" x1="119.88888888888889" y1="43.5" x2="119.88888888888889" y2="52.5"/><line class="bs-tie" x1="110.66666666666666" y1="43.5" x2="110.66666666666666" y2="52.5"/><line class="bs-tie" x1="101.44444444444444" y1="43.5" x2="101.44444444444444" y2="52.5"/><line class="bs-tie" x1="92.22222222222223" y1="43.5" x2="92.22222222222223" y2="52.5"/><line class="bs-tie" x1="83" y1="43.5" x2="83" y2="52.5"/><line class="bs-tie" x1="73.77777777777777" y1="43.5" x2="73.77777777777777" y2="52.5"/><line class="bs-tie" x1="64.55555555555556" y1="43.5" x2="64.55555555555556" y2="52.5"/><line class="bs-tie" x1="55.33333333333333" y1="43.5" x2="55.33333333333333" y2="52.5"/><line class="bs-tie" x1="46.111111111111114" y1="43.5" x2="46.111111111111114" y2="52.5"/><line class="bs-tie" x1="36.888888888888886" y1="43.5" x2="36.888888888888886" y2="52.5"/><line class="bs-tie" x1="27.666666666666657" y1="43.5" x2="27.666666666666657" y2="52.5"/><line class="bs-tie" x1="18.444444444444457" y1="43.5" x2="18.444444444444457" y2="52.5"/><line class="bs-tie" x1="9.222222222222229" y1="43.5" x2="9.222222222222229" y2="52.5"/><line class="bs-tie" x1="0" y1="43.5" x2="0" y2="52.5"/><text class="bs-cn" x="6" y="12">Straight</text></g></svg></div>
<figcaption>
<p class="meta"><span class="pairs">e–w</span><span class="slope none">—</span></p>
<p class="note">The through track, dead centre. One orientation: turning it gives the same card back.</p>
</figcaption>
</figure>
<figure class="spec">
<div class="plate"><svg class="bs" viewBox="0 0 169 103" preserveAspectRatio="xMinYMin meet"><g data-cell="0,0" data-tip="Turnout · right — " transform="translate(0,0)"><rect class="bs-card bs-trk" x="0" y="0" width="166" height="96" rx="4"/><line class="bs-rail" x1="0" y1="50.5" x2="166" y2="50.5"/><line class="bs-rail" x1="0" y1="45.5" x2="166" y2="45.5"/><line class="bs-tie" x1="0" y1="52.5" x2="0" y2="43.5"/><line class="bs-tie" x1="9.222222222222221" y1="52.5" x2="9.222222222222221" y2="43.5"/><line class="bs-tie" x1="18.444444444444443" y1="52.5" x2="18.444444444444443" y2="43.5"/><line class="bs-tie" x1="27.666666666666668" y1="52.5" x2="27.666666666666668" y2="43.5"/><line class="bs-tie" x1="36.888888888888886" y1="52.5" x2="36.888888888888886" y2="43.5"/><line class="bs-tie" x1="46.111111111111114" y1="52.5" x2="46.111111111111114" y2="43.5"/><line class="bs-tie" x1="55.333333333333336" y1="52.5" x2="55.333333333333336" y2="43.5"/><line class="bs-tie" x1="64.55555555555556" y1="52.5" x2="64.55555555555556" y2="43.5"/><line class="bs-tie" x1="73.77777777777777" y1="52.5" x2="73.77777777777777" y2="43.5"/><line class="bs-tie" x1="83" y1="52.5" x2="83" y2="43.5"/><line class="bs-tie" x1="92.22222222222223" y1="52.5" x2="92.22222222222223" y2="43.5"/><line class="bs-tie" x1="101.44444444444444" y1="52.5" x2="101.44444444444444" y2="43.5"/><line class="bs-tie" x1="110.66666666666667" y1="52.5" x2="110.66666666666667" y2="43.5"/><line class="bs-tie" x1="119.88888888888889" y1="52.5" x2="119.88888888888889" y2="43.5"/><line class="bs-tie" x1="129.11111111111111" y1="52.5" x2="129.11111111111111" y2="43.5"/><line class="bs-tie" x1="138.33333333333334" y1="52.5" x2="138.33333333333334" y2="43.5"/><line class="bs-tie" x1="147.55555555555554" y1="52.5" x2="147.55555555555554" y2="43.5"/><line class="bs-tie" x1="156.77777777777777" y1="52.5" x2="156.77777777777777" y2="43.5"/><line class="bs-tie" x1="166" y1="52.5" x2="166" y2="43.5"/><line class="bs-rail" x1="0" y1="50.5" x2="35" y2="50.5"/><line class="bs-rail" x1="0" y1="45.5" x2="35" y2="45.5"/><line class="bs-tie" x1="0" y1="52.5" x2="0" y2="43.5"/><line class="bs-tie" x1="11.666666666666666" y1="52.5" x2="11.666666666666666" y2="43.5"/><line class="bs-tie" x1="23.333333333333332" y1="52.5" x2="23.333333333333332" y2="43.5"/><line class="bs-tie" x1="35" y1="52.5" x2="35" y2="43.5"/><line class="bs-rail" x1="33.23223304703363" y1="49.76776695296637" x2="81.23223304703363" y2="97.76776695296637"/><line class="bs-rail" x1="36.76776695296637" y1="46.23223304703363" x2="84.76776695296637" y2="94.23223304703363"/><line class="bs-tie" x1="31.818019484660535" y1="51.18198051533946" x2="38.18198051533946" y2="44.81801948466054"/><line class="bs-tie" x1="38.67516234180339" y1="58.039123372482315" x2="45.039123372482315" y2="51.67516234180339"/><line class="bs-tie" x1="45.532305198946254" y1="64.89626622962518" x2="51.896266229625176" y2="58.532305198946254"/><line class="bs-tie" x1="52.38944805608911" y1="71.75340908676803" x2="58.75340908676803" y2="65.38944805608911"/><line class="bs-tie" x1="59.24659091323197" y1="78.61055194391089" x2="65.61055194391089" y2="72.24659091323197"/><line class="bs-tie" x1="66.10373377037482" y1="85.46769480105374" x2="72.46769480105374" y2="79.10373377037482"/><line class="bs-tie" x1="72.96087662751768" y1="92.3248376581966" x2="79.3248376581966" y2="85.96087662751768"/><line class="bs-tie" x1="79.81801948466054" y1="99.18198051533946" x2="86.18198051533946" y2="92.81801948466054"/><text class="bs-cn" x="6" y="12">Turnout · right</text></g></svg></div>
<figcaption>
<p class="meta"><span class="pairs">w–e · w–s</span><span class="slope">ne_sw</span></p>
<p class="note">Frog on the west end, leg out through the middle of the south edge. Turn it 180° and the leg goes north instead.</p>
</figcaption>
</figure>
<figure class="spec">
<div class="plate"><svg class="bs" viewBox="0 0 169 103" preserveAspectRatio="xMinYMin meet"><g data-cell="0,0" data-tip="Turnout · left — " transform="translate(0,0)"><rect class="bs-card bs-trk" x="0" y="0" width="166" height="96" rx="4"/><line class="bs-rail" x1="166" y1="45.5" x2="0" y2="45.5"/><line class="bs-rail" x1="166" y1="50.5" x2="0" y2="50.5"/><line class="bs-tie" x1="166" y1="43.5" x2="166" y2="52.5"/><line class="bs-tie" x1="156.77777777777777" y1="43.5" x2="156.77777777777777" y2="52.5"/><line class="bs-tie" x1="147.55555555555554" y1="43.5" x2="147.55555555555554" y2="52.5"/><line class="bs-tie" x1="138.33333333333334" y1="43.5" x2="138.33333333333334" y2="52.5"/><line class="bs-tie" x1="129.11111111111111" y1="43.5" x2="129.11111111111111" y2="52.5"/><line class="bs-tie" x1="119.88888888888889" y1="43.5" x2="119.88888888888889" y2="52.5"/><line class="bs-tie" x1="110.66666666666666" y1="43.5" x2="110.66666666666666" y2="52.5"/><line class="bs-tie" x1="101.44444444444444" y1="43.5" x2="101.44444444444444" y2="52.5"/><line class="bs-tie" x1="92.22222222222223" y1="43.5" x2="92.22222222222223" y2="52.5"/><line class="bs-tie" x1="83" y1="43.5" x2="83" y2="52.5"/><line class="bs-tie" x1="73.77777777777777" y1="43.5" x2="73.77777777777777" y2="52.5"/><line class="bs-tie" x1="64.55555555555556" y1="43.5" x2="64.55555555555556" y2="52.5"/><line class="bs-tie" x1="55.33333333333333" y1="43.5" x2="55.33333333333333" y2="52.5"/><line class="bs-tie" x1="46.111111111111114" y1="43.5" x2="46.111111111111114" y2="52.5"/><line class="bs-tie" x1="36.888888888888886" y1="43.5" x2="36.888888888888886" y2="52.5"/><line class="bs-tie" x1="27.666666666666657" y1="43.5" x2="27.666666666666657" y2="52.5"/><line class="bs-tie" x1="18.444444444444457" y1="43.5" x2="18.444444444444457" y2="52.5"/><line class="bs-tie" x1="9.222222222222229" y1="43.5" x2="9.222222222222229" y2="52.5"/><line class="bs-tie" x1="0" y1="43.5" x2="0" y2="52.5"/><line class="bs-rail" x1="166" y1="45.5" x2="131" y2="45.5"/><line class="bs-rail" x1="166" y1="50.5" x2="131" y2="50.5"/><line class="bs-tie" x1="166" y1="43.5" x2="166" y2="52.5"/><line class="bs-tie" x1="154.33333333333334" y1="43.5" x2="154.33333333333334" y2="52.5"/><line class="bs-tie" x1="142.66666666666666" y1="43.5" x2="142.66666666666666" y2="52.5"/><line class="bs-tie" x1="131" y1="43.5" x2="131" y2="52.5"/><line class="bs-rail" x1="129.23223304703365" y1="46.23223304703363" x2="81.23223304703363" y2="94.23223304703363"/><line class="bs-rail" x1="132.76776695296635" y1="49.76776695296637" x2="84.76776695296637" y2="97.76776695296637"/><line class="bs-tie" x1="127.81801948466054" y1="44.81801948466054" x2="134.18198051533946" y2="51.18198051533946"/><line class="bs-tie" x1="120.96087662751768" y1="51.67516234180339" x2="127.3248376581966" y2="58.039123372482315"/><line class="bs-tie" x1="114.10373377037483" y1="58.532305198946254" x2="120.46769480105375" y2="64.89626622962518"/><line class="bs-tie" x1="107.24659091323197" y1="65.38944805608911" x2="113.61055194391089" y2="71.75340908676803"/><line class="bs-tie" x1="100.38944805608911" y1="72.24659091323197" x2="106.75340908676803" y2="78.61055194391089"/><line class="bs-tie" x1="93.53230519894626" y1="79.10373377037482" x2="99.89626622962518" y2="85.46769480105374"/><line class="bs-tie" x1="86.6751623418034" y1="85.96087662751768" x2="93.03912337248232" y2="92.3248376581966"/><line class="bs-tie" x1="79.81801948466054" y1="92.81801948466054" x2="86.18198051533946" y2="99.18198051533946"/><text class="bs-cn" x="6" y="12">Turnout · left</text></g></svg></div>
<figcaption>
<p class="meta"><span class="pairs">e–w · e–s</span><span class="slope">nw_se</span></p>
<p class="note">The mirror card. Same shape, opposite diagonal — which is the whole reason a siding needs one of each hand.</p>
</figcaption>
</figure>
<figure class="spec">
<div class="plate"><svg class="bs" viewBox="0 0 169 103" preserveAspectRatio="xMinYMin meet"><g data-cell="0,0" data-tip="Curve · right — " transform="translate(0,0)"><rect class="bs-card bs-trk" x="0" y="0" width="166" height="96" rx="4"/><line class="bs-rail" x1="0" y1="50.5" x2="35" y2="50.5"/><line class="bs-rail" x1="0" y1="45.5" x2="35" y2="45.5"/><line class="bs-tie" x1="0" y1="52.5" x2="0" y2="43.5"/><line class="bs-tie" x1="11.666666666666666" y1="52.5" x2="11.666666666666666" y2="43.5"/><line class="bs-tie" x1="23.333333333333332" y1="52.5" x2="23.333333333333332" y2="43.5"/><line class="bs-tie" x1="35" y1="52.5" x2="35" y2="43.5"/><line class="bs-rail" x1="33.23223304703363" y1="49.76776695296637" x2="81.23223304703363" y2="97.76776695296637"/><line class="bs-rail" x1="36.76776695296637" y1="46.23223304703363" x2="84.76776695296637" y2="94.23223304703363"/><line class="bs-tie" x1="31.818019484660535" y1="51.18198051533946" x2="38.18198051533946" y2="44.81801948466054"/><line class="bs-tie" x1="38.67516234180339" y1="58.039123372482315" x2="45.039123372482315" y2="51.67516234180339"/><line class="bs-tie" x1="45.532305198946254" y1="64.89626622962518" x2="51.896266229625176" y2="58.532305198946254"/><line class="bs-tie" x1="52.38944805608911" y1="71.75340908676803" x2="58.75340908676803" y2="65.38944805608911"/><line class="bs-tie" x1="59.24659091323197" y1="78.61055194391089" x2="65.61055194391089" y2="72.24659091323197"/><line class="bs-tie" x1="66.10373377037482" y1="85.46769480105374" x2="72.46769480105374" y2="79.10373377037482"/><line class="bs-tie" x1="72.96087662751768" y1="92.3248376581966" x2="79.3248376581966" y2="85.96087662751768"/><line class="bs-tie" x1="79.81801948466054" y1="99.18198051533946" x2="86.18198051533946" y2="92.81801948466054"/><text class="bs-cn" x="6" y="12">Curve · right</text></g></svg></div>
<figcaption>
<p class="meta"><span class="pairs">s–w</span><span class="slope">ne_sw</span></p>
<p class="note">The leg without the through track: along the centre line to the frog, then out at 45°.</p>
</figcaption>
</figure>
<figure class="spec">
<div class="plate"><svg class="bs" viewBox="0 0 169 103" preserveAspectRatio="xMinYMin meet"><g data-cell="0,0" data-tip="Curve · left — " transform="translate(0,0)"><rect class="bs-card bs-trk" x="0" y="0" width="166" height="96" rx="4"/><line class="bs-rail" x1="166" y1="45.5" x2="131" y2="45.5"/><line class="bs-rail" x1="166" y1="50.5" x2="131" y2="50.5"/><line class="bs-tie" x1="166" y1="43.5" x2="166" y2="52.5"/><line class="bs-tie" x1="154.33333333333334" y1="43.5" x2="154.33333333333334" y2="52.5"/><line class="bs-tie" x1="142.66666666666666" y1="43.5" x2="142.66666666666666" y2="52.5"/><line class="bs-tie" x1="131" y1="43.5" x2="131" y2="52.5"/><line class="bs-rail" x1="129.23223304703365" y1="46.23223304703363" x2="81.23223304703363" y2="94.23223304703363"/><line class="bs-rail" x1="132.76776695296635" y1="49.76776695296637" x2="84.76776695296637" y2="97.76776695296637"/><line class="bs-tie" x1="127.81801948466054" y1="44.81801948466054" x2="134.18198051533946" y2="51.18198051533946"/><line class="bs-tie" x1="120.96087662751768" y1="51.67516234180339" x2="127.3248376581966" y2="58.039123372482315"/><line class="bs-tie" x1="114.10373377037483" y1="58.532305198946254" x2="120.46769480105375" y2="64.89626622962518"/><line class="bs-tie" x1="107.24659091323197" y1="65.38944805608911" x2="113.61055194391089" y2="71.75340908676803"/><line class="bs-tie" x1="100.38944805608911" y1="72.24659091323197" x2="106.75340908676803" y2="78.61055194391089"/><line class="bs-tie" x1="93.53230519894626" y1="79.10373377037482" x2="99.89626622962518" y2="85.46769480105374"/><line class="bs-tie" x1="86.6751623418034" y1="85.96087662751768" x2="93.03912337248232" y2="92.3248376581966"/><line class="bs-tie" x1="79.81801948466054" y1="92.81801948466054" x2="86.18198051533946" y2="99.18198051533946"/><text class="bs-cn" x="6" y="12">Curve · left</text></g></svg></div>
<figcaption>
<p class="meta"><span class="pairs">s–e</span><span class="slope">nw_se</span></p>
<p class="note">Its left-hand twin. Both cards also turn 180°, reaching ne and nw respectively.</p>
</figcaption>
</figure>
<figure class="spec">
<div class="plate"><svg class="bs" viewBox="0 0 169 103" preserveAspectRatio="xMinYMin meet"><g data-cell="0,0" data-tip="Refinery — " transform="translate(0,0)"><rect class="bs-card bs-trk" x="0" y="0" width="166" height="96" rx="4"/><line class="bs-rail" x1="166" y1="45.5" x2="0" y2="45.5"/><line class="bs-rail" x1="166" y1="50.5" x2="0" y2="50.5"/><line class="bs-tie" x1="166" y1="43.5" x2="166" y2="52.5"/><line class="bs-tie" x1="156.77777777777777" y1="43.5" x2="156.77777777777777" y2="52.5"/><line class="bs-tie" x1="147.55555555555554" y1="43.5" x2="147.55555555555554" y2="52.5"/><line class="bs-tie" x1="138.33333333333334" y1="43.5" x2="138.33333333333334" y2="52.5"/><line class="bs-tie" x1="129.11111111111111" y1="43.5" x2="129.11111111111111" y2="52.5"/><line class="bs-tie" x1="119.88888888888889" y1="43.5" x2="119.88888888888889" y2="52.5"/><line class="bs-tie" x1="110.66666666666666" y1="43.5" x2="110.66666666666666" y2="52.5"/><line class="bs-tie" x1="101.44444444444444" y1="43.5" x2="101.44444444444444" y2="52.5"/><line class="bs-tie" x1="92.22222222222223" y1="43.5" x2="92.22222222222223" y2="52.5"/><line class="bs-tie" x1="83" y1="43.5" x2="83" y2="52.5"/><line class="bs-tie" x1="73.77777777777777" y1="43.5" x2="73.77777777777777" y2="52.5"/><line class="bs-tie" x1="64.55555555555556" y1="43.5" x2="64.55555555555556" y2="52.5"/><line class="bs-tie" x1="55.33333333333333" y1="43.5" x2="55.33333333333333" y2="52.5"/><line class="bs-tie" x1="46.111111111111114" y1="43.5" x2="46.111111111111114" y2="52.5"/><line class="bs-tie" x1="36.888888888888886" y1="43.5" x2="36.888888888888886" y2="52.5"/><line class="bs-tie" x1="27.666666666666657" y1="43.5" x2="27.666666666666657" y2="52.5"/><line class="bs-tie" x1="18.444444444444457" y1="43.5" x2="18.444444444444457" y2="52.5"/><line class="bs-tie" x1="9.222222222222229" y1="43.5" x2="9.222222222222229" y2="52.5"/><line class="bs-tie" x1="0" y1="43.5" x2="0" y2="52.5"/><text class="bs-cn" x="6" y="12">Refinery</text></g></svg></div>
<figcaption>
<p class="meta"><span class="pairs">e–w</span><span class="slope none">—</span></p>
<p class="note">Every office and industry card on the printed sheet is a plain straight, with no diverging leg at all.</p>
</figcaption>
</figure>
</div>
</section>
<section>
<h2><span class="n">03</span>The rule</h2>
<p class="lede measure">Two cards stacked. Both pairs have the ports; in both, the two legs meet the shared edge at the same point. Only one of them is a railway.</p>
<div class="pair-grid">
<figure class="judged">
<div class="plate"><svg class="bs" viewBox="0 0 169 202" preserveAspectRatio="xMinYMin meet"><g data-cell="1,0" data-tip="turnout · right — " transform="translate(0,0)"><rect class="bs-card bs-trk" x="0" y="0" width="166" height="96" rx="4"/><line class="bs-rail" x1="0" y1="50.5" x2="166" y2="50.5"/><line class="bs-rail" x1="0" y1="45.5" x2="166" y2="45.5"/><line class="bs-tie" x1="0" y1="52.5" x2="0" y2="43.5"/><line class="bs-tie" x1="9.222222222222221" y1="52.5" x2="9.222222222222221" y2="43.5"/><line class="bs-tie" x1="18.444444444444443" y1="52.5" x2="18.444444444444443" y2="43.5"/><line class="bs-tie" x1="27.666666666666668" y1="52.5" x2="27.666666666666668" y2="43.5"/><line class="bs-tie" x1="36.888888888888886" y1="52.5" x2="36.888888888888886" y2="43.5"/><line class="bs-tie" x1="46.111111111111114" y1="52.5" x2="46.111111111111114" y2="43.5"/><line class="bs-tie" x1="55.333333333333336" y1="52.5" x2="55.333333333333336" y2="43.5"/><line class="bs-tie" x1="64.55555555555556" y1="52.5" x2="64.55555555555556" y2="43.5"/><line class="bs-tie" x1="73.77777777777777" y1="52.5" x2="73.77777777777777" y2="43.5"/><line class="bs-tie" x1="83" y1="52.5" x2="83" y2="43.5"/><line class="bs-tie" x1="92.22222222222223" y1="52.5" x2="92.22222222222223" y2="43.5"/><line class="bs-tie" x1="101.44444444444444" y1="52.5" x2="101.44444444444444" y2="43.5"/><line class="bs-tie" x1="110.66666666666667" y1="52.5" x2="110.66666666666667" y2="43.5"/><line class="bs-tie" x1="119.88888888888889" y1="52.5" x2="119.88888888888889" y2="43.5"/><line class="bs-tie" x1="129.11111111111111" y1="52.5" x2="129.11111111111111" y2="43.5"/><line class="bs-tie" x1="138.33333333333334" y1="52.5" x2="138.33333333333334" y2="43.5"/><line class="bs-tie" x1="147.55555555555554" y1="52.5" x2="147.55555555555554" y2="43.5"/><line class="bs-tie" x1="156.77777777777777" y1="52.5" x2="156.77777777777777" y2="43.5"/><line class="bs-tie" x1="166" y1="52.5" x2="166" y2="43.5"/><line class="bs-rail" x1="0" y1="50.5" x2="35" y2="50.5"/><line class="bs-rail" x1="0" y1="45.5" x2="35" y2="45.5"/><line class="bs-tie" x1="0" y1="52.5" x2="0" y2="43.5"/><line class="bs-tie" x1="11.666666666666666" y1="52.5" x2="11.666666666666666" y2="43.5"/><line class="bs-tie" x1="23.333333333333332" y1="52.5" x2="23.333333333333332" y2="43.5"/><line class="bs-tie" x1="35" y1="52.5" x2="35" y2="43.5"/><line class="bs-rail" x1="33.23223304703363" y1="49.76776695296637" x2="81.23223304703363" y2="97.76776695296637"/><line class="bs-rail" x1="36.76776695296637" y1="46.23223304703363" x2="84.76776695296637" y2="94.23223304703363"/><line class="bs-tie" x1="31.818019484660535" y1="51.18198051533946" x2="38.18198051533946" y2="44.81801948466054"/><line class="bs-tie" x1="38.67516234180339" y1="58.039123372482315" x2="45.039123372482315" y2="51.67516234180339"/><line class="bs-tie" x1="45.532305198946254" y1="64.89626622962518" x2="51.896266229625176" y2="58.532305198946254"/><line class="bs-tie" x1="52.38944805608911" y1="71.75340908676803" x2="58.75340908676803" y2="65.38944805608911"/><line class="bs-tie" x1="59.24659091323197" y1="78.61055194391089" x2="65.61055194391089" y2="72.24659091323197"/><line class="bs-tie" x1="66.10373377037482" y1="85.46769480105374" x2="72.46769480105374" y2="79.10373377037482"/><line class="bs-tie" x1="72.96087662751768" y1="92.3248376581966" x2="79.3248376581966" y2="85.96087662751768"/><line class="bs-tie" x1="79.81801948466054" y1="99.18198051533946" x2="86.18198051533946" y2="92.81801948466054"/><text class="bs-cn" x="6" y="12">turnout · right</text></g><g data-cell="0,0" data-tip="curve · right — " transform="translate(0,99)"><rect class="bs-card bs-trk" x="0" y="0" width="166" height="96" rx="4"/><line class="bs-rail" x1="166" y1="45.5" x2="131" y2="45.5"/><line class="bs-rail" x1="166" y1="50.5" x2="131" y2="50.5"/><line class="bs-tie" x1="166" y1="43.5" x2="166" y2="52.5"/><line class="bs-tie" x1="154.33333333333334" y1="43.5" x2="154.33333333333334" y2="52.5"/><line class="bs-tie" x1="142.66666666666666" y1="43.5" x2="142.66666666666666" y2="52.5"/><line class="bs-tie" x1="131" y1="43.5" x2="131" y2="52.5"/><line class="bs-rail" x1="132.76776695296635" y1="46.23223304703363" x2="84.76776695296637" y2="-1.7677669529663687"/><line class="bs-rail" x1="129.23223304703365" y1="49.76776695296637" x2="81.23223304703363" y2="1.7677669529663687"/><line class="bs-tie" x1="134.18198051533946" y1="44.81801948466054" x2="127.81801948466054" y2="51.18198051533946"/><line class="bs-tie" x1="127.3248376581966" y1="37.960876627517685" x2="120.96087662751768" y2="44.32483765819661"/><line class="bs-tie" x1="120.46769480105375" y1="31.10373377037482" x2="114.10373377037483" y2="37.467694801053746"/><line class="bs-tie" x1="113.61055194391089" y1="24.246590913231962" x2="107.24659091323197" y2="30.61055194391089"/><line class="bs-tie" x1="106.75340908676803" y1="17.38944805608911" x2="100.38944805608911" y2="23.753409086768038"/><line class="bs-tie" x1="99.89626622962518" y1="10.53230519894625" x2="93.53230519894626" y2="16.89626622962518"/><line class="bs-tie" x1="93.03912337248232" y1="3.6751623418033903" x2="86.6751623418034" y2="10.039123372482319"/><line class="bs-tie" x1="86.18198051533946" y1="-3.181980515339464" x2="79.81801948466054" y2="3.181980515339464"/><text class="bs-cn" x="6" y="12">curve · right</text></g></svg></div>
<p class="verdict yes">Joins</p>
<p class="note">Both legs lie on the <code>ne_sw</code> diagonal, so the rail crosses the card edge without bending. This is the right-hand turnout with its own right-hand curve.</p>
</figure>
<figure class="judged">
<div class="plate"><svg class="bs" viewBox="0 0 169 202" preserveAspectRatio="xMinYMin meet"><g data-cell="1,0" data-tip="turnout · right — " transform="translate(0,0)"><rect class="bs-card bs-trk" x="0" y="0" width="166" height="96" rx="4"/><line class="bs-rail" x1="0" y1="50.5" x2="166" y2="50.5"/><line class="bs-rail" x1="0" y1="45.5" x2="166" y2="45.5"/><line class="bs-tie" x1="0" y1="52.5" x2="0" y2="43.5"/><line class="bs-tie" x1="9.222222222222221" y1="52.5" x2="9.222222222222221" y2="43.5"/><line class="bs-tie" x1="18.444444444444443" y1="52.5" x2="18.444444444444443" y2="43.5"/><line class="bs-tie" x1="27.666666666666668" y1="52.5" x2="27.666666666666668" y2="43.5"/><line class="bs-tie" x1="36.888888888888886" y1="52.5" x2="36.888888888888886" y2="43.5"/><line class="bs-tie" x1="46.111111111111114" y1="52.5" x2="46.111111111111114" y2="43.5"/><line class="bs-tie" x1="55.333333333333336" y1="52.5" x2="55.333333333333336" y2="43.5"/><line class="bs-tie" x1="64.55555555555556" y1="52.5" x2="64.55555555555556" y2="43.5"/><line class="bs-tie" x1="73.77777777777777" y1="52.5" x2="73.77777777777777" y2="43.5"/><line class="bs-tie" x1="83" y1="52.5" x2="83" y2="43.5"/><line class="bs-tie" x1="92.22222222222223" y1="52.5" x2="92.22222222222223" y2="43.5"/><line class="bs-tie" x1="101.44444444444444" y1="52.5" x2="101.44444444444444" y2="43.5"/><line class="bs-tie" x1="110.66666666666667" y1="52.5" x2="110.66666666666667" y2="43.5"/><line class="bs-tie" x1="119.88888888888889" y1="52.5" x2="119.88888888888889" y2="43.5"/><line class="bs-tie" x1="129.11111111111111" y1="52.5" x2="129.11111111111111" y2="43.5"/><line class="bs-tie" x1="138.33333333333334" y1="52.5" x2="138.33333333333334" y2="43.5"/><line class="bs-tie" x1="147.55555555555554" y1="52.5" x2="147.55555555555554" y2="43.5"/><line class="bs-tie" x1="156.77777777777777" y1="52.5" x2="156.77777777777777" y2="43.5"/><line class="bs-tie" x1="166" y1="52.5" x2="166" y2="43.5"/><line class="bs-rail" x1="0" y1="50.5" x2="35" y2="50.5"/><line class="bs-rail" x1="0" y1="45.5" x2="35" y2="45.5"/><line class="bs-tie" x1="0" y1="52.5" x2="0" y2="43.5"/><line class="bs-tie" x1="11.666666666666666" y1="52.5" x2="11.666666666666666" y2="43.5"/><line class="bs-tie" x1="23.333333333333332" y1="52.5" x2="23.333333333333332" y2="43.5"/><line class="bs-tie" x1="35" y1="52.5" x2="35" y2="43.5"/><line class="bs-rail" x1="33.23223304703363" y1="49.76776695296637" x2="81.23223304703363" y2="97.76776695296637"/><line class="bs-rail" x1="36.76776695296637" y1="46.23223304703363" x2="84.76776695296637" y2="94.23223304703363"/><line class="bs-tie" x1="31.818019484660535" y1="51.18198051533946" x2="38.18198051533946" y2="44.81801948466054"/><line class="bs-tie" x1="38.67516234180339" y1="58.039123372482315" x2="45.039123372482315" y2="51.67516234180339"/><line class="bs-tie" x1="45.532305198946254" y1="64.89626622962518" x2="51.896266229625176" y2="58.532305198946254"/><line class="bs-tie" x1="52.38944805608911" y1="71.75340908676803" x2="58.75340908676803" y2="65.38944805608911"/><line class="bs-tie" x1="59.24659091323197" y1="78.61055194391089" x2="65.61055194391089" y2="72.24659091323197"/><line class="bs-tie" x1="66.10373377037482" y1="85.46769480105374" x2="72.46769480105374" y2="79.10373377037482"/><line class="bs-tie" x1="72.96087662751768" y1="92.3248376581966" x2="79.3248376581966" y2="85.96087662751768"/><line class="bs-tie" x1="79.81801948466054" y1="99.18198051533946" x2="86.18198051533946" y2="92.81801948466054"/><text class="bs-cn" x="6" y="12">turnout · right</text></g><g data-cell="0,0" data-tip="curve · left — " transform="translate(0,99)"><rect class="bs-card bs-trk" x="0" y="0" width="166" height="96" rx="4"/><line class="bs-rail" x1="0" y1="50.5" x2="35" y2="50.5"/><line class="bs-rail" x1="0" y1="45.5" x2="35" y2="45.5"/><line class="bs-tie" x1="0" y1="52.5" x2="0" y2="43.5"/><line class="bs-tie" x1="11.666666666666666" y1="52.5" x2="11.666666666666666" y2="43.5"/><line class="bs-tie" x1="23.333333333333332" y1="52.5" x2="23.333333333333332" y2="43.5"/><line class="bs-tie" x1="35" y1="52.5" x2="35" y2="43.5"/><line class="bs-rail" x1="36.76776695296637" y1="49.76776695296637" x2="84.76776695296637" y2="1.7677669529663687"/><line class="bs-rail" x1="33.23223304703363" y1="46.23223304703363" x2="81.23223304703363" y2="-1.7677669529663687"/><line class="bs-tie" x1="38.18198051533946" y1="51.18198051533946" x2="31.818019484660535" y2="44.81801948466054"/><line class="bs-tie" x1="45.039123372482315" y1="44.32483765819661" x2="38.67516234180339" y2="37.960876627517685"/><line class="bs-tie" x1="51.896266229625176" y1="37.467694801053746" x2="45.532305198946254" y2="31.10373377037482"/><line class="bs-tie" x1="58.75340908676803" y1="30.61055194391089" x2="52.38944805608911" y2="24.246590913231962"/><line class="bs-tie" x1="65.61055194391089" y1="23.753409086768038" x2="59.24659091323197" y2="17.38944805608911"/><line class="bs-tie" x1="72.46769480105374" y1="16.89626622962518" x2="66.10373377037482" y2="10.53230519894625"/><line class="bs-tie" x1="79.3248376581966" y1="10.039123372482319" x2="72.96087662751768" y2="3.6751623418033903"/><line class="bs-tie" x1="86.18198051533946" y1="3.181980515339464" x2="79.81801948466054" y2="-3.181980515339464"/><text class="bs-cn" x="6" y="12">curve · left</text></g></svg></div>
<p class="verdict no">Does not join</p>
<p class="note">The left-hand curve is on <code>nw_se</code>. The rails touch and turn straight back — a V, not a junction. The engine refuses it, and the picture has to show why.</p>
</figure>
</div>
</section>
<section>
<h2><span class="n">04</span>A district</h2>
<p class="lede measure">The Running Track between the Limits, with a leg going up at the west end and a siding hanging below at the east. Because no card joins north to south, dropping a row always costs two cards — the leg out, then a curve turning the run back east–west. Districts come out wide and shallow.</p>
<div class="plate plate--wide"><svg class="bs" viewBox="0 0 1352 301" preserveAspectRatio="xMinYMin meet"><g data-cell="0,-2" data-tip="Limits — " transform="translate(0,99)"><rect class="bs-card bs-trk bs-run" x="0" y="0" width="166" height="96" rx="4"/><line class="bs-rail" x1="166" y1="45.5" x2="0" y2="45.5"/><line class="bs-rail" x1="166" y1="50.5" x2="0" y2="50.5"/><line class="bs-tie" x1="166" y1="43.5" x2="166" y2="52.5"/><line class="bs-tie" x1="156.77777777777777" y1="43.5" x2="156.77777777777777" y2="52.5"/><line class="bs-tie" x1="147.55555555555554" y1="43.5" x2="147.55555555555554" y2="52.5"/><line class="bs-tie" x1="138.33333333333334" y1="43.5" x2="138.33333333333334" y2="52.5"/><line class="bs-tie" x1="129.11111111111111" y1="43.5" x2="129.11111111111111" y2="52.5"/><line class="bs-tie" x1="119.88888888888889" y1="43.5" x2="119.88888888888889" y2="52.5"/><line class="bs-tie" x1="110.66666666666666" y1="43.5" x2="110.66666666666666" y2="52.5"/><line class="bs-tie" x1="101.44444444444444" y1="43.5" x2="101.44444444444444" y2="52.5"/><line class="bs-tie" x1="92.22222222222223" y1="43.5" x2="92.22222222222223" y2="52.5"/><line class="bs-tie" x1="83" y1="43.5" x2="83" y2="52.5"/><line class="bs-tie" x1="73.77777777777777" y1="43.5" x2="73.77777777777777" y2="52.5"/><line class="bs-tie" x1="64.55555555555556" y1="43.5" x2="64.55555555555556" y2="52.5"/><line class="bs-tie" x1="55.33333333333333" y1="43.5" x2="55.33333333333333" y2="52.5"/><line class="bs-tie" x1="46.111111111111114" y1="43.5" x2="46.111111111111114" y2="52.5"/><line class="bs-tie" x1="36.888888888888886" y1="43.5" x2="36.888888888888886" y2="52.5"/><line class="bs-tie" x1="27.666666666666657" y1="43.5" x2="27.666666666666657" y2="52.5"/><line class="bs-tie" x1="18.444444444444457" y1="43.5" x2="18.444444444444457" y2="52.5"/><line class="bs-tie" x1="9.222222222222229" y1="43.5" x2="9.222222222222229" y2="52.5"/><line class="bs-tie" x1="0" y1="43.5" x2="0" y2="52.5"/><text class="bs-cn" x="6" y="12">Limits</text></g><g data-cell="0,-1" data-tip="Whistle Post — " transform="translate(169,99)"><rect class="bs-card bs-office bs-run" x="0" y="0" width="166" height="96" rx="4"/><line class="bs-rail" x1="166" y1="45.5" x2="0" y2="45.5"/><line class="bs-rail" x1="166" y1="50.5" x2="0" y2="50.5"/><line class="bs-tie" x1="166" y1="43.5" x2="166" y2="52.5"/><line class="bs-tie" x1="156.77777777777777" y1="43.5" x2="156.77777777777777" y2="52.5"/><line class="bs-tie" x1="147.55555555555554" y1="43.5" x2="147.55555555555554" y2="52.5"/><line class="bs-tie" x1="138.33333333333334" y1="43.5" x2="138.33333333333334" y2="52.5"/><line class="bs-tie" x1="129.11111111111111" y1="43.5" x2="129.11111111111111" y2="52.5"/><line class="bs-tie" x1="119.88888888888889" y1="43.5" x2="119.88888888888889" y2="52.5"/><line class="bs-tie" x1="110.66666666666666" y1="43.5" x2="110.66666666666666" y2="52.5"/><line class="bs-tie" x1="101.44444444444444" y1="43.5" x2="101.44444444444444" y2="52.5"/><line class="bs-tie" x1="92.22222222222223" y1="43.5" x2="92.22222222222223" y2="52.5"/><line class="bs-tie" x1="83" y1="43.5" x2="83" y2="52.5"/><line class="bs-tie" x1="73.77777777777777" y1="43.5" x2="73.77777777777777" y2="52.5"/><line class="bs-tie" x1="64.55555555555556" y1="43.5" x2="64.55555555555556" y2="52.5"/><line class="bs-tie" x1="55.33333333333333" y1="43.5" x2="55.33333333333333" y2="52.5"/><line class="bs-tie" x1="46.111111111111114" y1="43.5" x2="46.111111111111114" y2="52.5"/><line class="bs-tie" x1="36.888888888888886" y1="43.5" x2="36.888888888888886" y2="52.5"/><line class="bs-tie" x1="27.666666666666657" y1="43.5" x2="27.666666666666657" y2="52.5"/><line class="bs-tie" x1="18.444444444444457" y1="43.5" x2="18.444444444444457" y2="52.5"/><line class="bs-tie" x1="9.222222222222229" y1="43.5" x2="9.222222222222229" y2="52.5"/><line class="bs-tie" x1="0" y1="43.5" x2="0" y2="52.5"/><text class="bs-cn" x="6" y="12">Whistle Post</text></g><g data-cell="0,0" data-tip="turnout · right 180° — " transform="translate(338,99)"><rect class="bs-card bs-trk bs-run" x="0" y="0" width="166" height="96" rx="4"/><line class="bs-rail" x1="166" y1="45.5" x2="0" y2="45.5"/><line class="bs-rail" x1="166" y1="50.5" x2="0" y2="50.5"/><line class="bs-tie" x1="166" y1="43.5" x2="166" y2="52.5"/><line class="bs-tie" x1="156.77777777777777" y1="43.5" x2="156.77777777777777" y2="52.5"/><line class="bs-tie" x1="147.55555555555554" y1="43.5" x2="147.55555555555554" y2="52.5"/><line class="bs-tie" x1="138.33333333333334" y1="43.5" x2="138.33333333333334" y2="52.5"/><line class="bs-tie" x1="129.11111111111111" y1="43.5" x2="129.11111111111111" y2="52.5"/><line class="bs-tie" x1="119.88888888888889" y1="43.5" x2="119.88888888888889" y2="52.5"/><line class="bs-tie" x1="110.66666666666666" y1="43.5" x2="110.66666666666666" y2="52.5"/><line class="bs-tie" x1="101.44444444444444" y1="43.5" x2="101.44444444444444" y2="52.5"/><line class="bs-tie" x1="92.22222222222223" y1="43.5" x2="92.22222222222223" y2="52.5"/><line class="bs-tie" x1="83" y1="43.5" x2="83" y2="52.5"/><line class="bs-tie" x1="73.77777777777777" y1="43.5" x2="73.77777777777777" y2="52.5"/><line class="bs-tie" x1="64.55555555555556" y1="43.5" x2="64.55555555555556" y2="52.5"/><line class="bs-tie" x1="55.33333333333333" y1="43.5" x2="55.33333333333333" y2="52.5"/><line class="bs-tie" x1="46.111111111111114" y1="43.5" x2="46.111111111111114" y2="52.5"/><line class="bs-tie" x1="36.888888888888886" y1="43.5" x2="36.888888888888886" y2="52.5"/><line class="bs-tie" x1="27.666666666666657" y1="43.5" x2="27.666666666666657" y2="52.5"/><line class="bs-tie" x1="18.444444444444457" y1="43.5" x2="18.444444444444457" y2="52.5"/><line class="bs-tie" x1="9.222222222222229" y1="43.5" x2="9.222222222222229" y2="52.5"/><line class="bs-tie" x1="0" y1="43.5" x2="0" y2="52.5"/><line class="bs-rail" x1="166" y1="45.5" x2="131" y2="45.5"/><line class="bs-rail" x1="166" y1="50.5" x2="131" y2="50.5"/><line class="bs-tie" x1="166" y1="43.5" x2="166" y2="52.5"/><line class="bs-tie" x1="154.33333333333334" y1="43.5" x2="154.33333333333334" y2="52.5"/><line class="bs-tie" x1="142.66666666666666" y1="43.5" x2="142.66666666666666" y2="52.5"/><line class="bs-tie" x1="131" y1="43.5" x2="131" y2="52.5"/><line class="bs-rail" x1="132.76776695296635" y1="46.23223304703363" x2="84.76776695296637" y2="-1.7677669529663687"/><line class="bs-rail" x1="129.23223304703365" y1="49.76776695296637" x2="81.23223304703363" y2="1.7677669529663687"/><line class="bs-tie" x1="134.18198051533946" y1="44.81801948466054" x2="127.81801948466054" y2="51.18198051533946"/><line class="bs-tie" x1="127.3248376581966" y1="37.960876627517685" x2="120.96087662751768" y2="44.32483765819661"/><line class="bs-tie" x1="120.46769480105375" y1="31.10373377037482" x2="114.10373377037483" y2="37.467694801053746"/><line class="bs-tie" x1="113.61055194391089" y1="24.246590913231962" x2="107.24659091323197" y2="30.61055194391089"/><line class="bs-tie" x1="106.75340908676803" y1="17.38944805608911" x2="100.38944805608911" y2="23.753409086768038"/><line class="bs-tie" x1="99.89626622962518" y1="10.53230519894625" x2="93.53230519894626" y2="16.89626622962518"/><line class="bs-tie" x1="93.03912337248232" y1="3.6751623418033903" x2="86.6751623418034" y2="10.039123372482319"/><line class="bs-tie" x1="86.18198051533946" y1="-3.181980515339464" x2="79.81801948466054" y2="3.181980515339464"/><text class="bs-cn" x="6" y="12">turnout · right 180°</text></g><g data-cell="0,1" data-tip="straight — " transform="translate(507,99)"><rect class="bs-card bs-trk bs-run" x="0" y="0" width="166" height="96" rx="4"/><line class="bs-rail" x1="166" y1="45.5" x2="0" y2="45.5"/><line class="bs-rail" x1="166" y1="50.5" x2="0" y2="50.5"/><line class="bs-tie" x1="166" y1="43.5" x2="166" y2="52.5"/><line class="bs-tie" x1="156.77777777777777" y1="43.5" x2="156.77777777777777" y2="52.5"/><line class="bs-tie" x1="147.55555555555554" y1="43.5" x2="147.55555555555554" y2="52.5"/><line class="bs-tie" x1="138.33333333333334" y1="43.5" x2="138.33333333333334" y2="52.5"/><line class="bs-tie" x1="129.11111111111111" y1="43.5" x2="129.11111111111111" y2="52.5"/><line class="bs-tie" x1="119.88888888888889" y1="43.5" x2="119.88888888888889" y2="52.5"/><line class="bs-tie" x1="110.66666666666666" y1="43.5" x2="110.66666666666666" y2="52.5"/><line class="bs-tie" x1="101.44444444444444" y1="43.5" x2="101.44444444444444" y2="52.5"/><line class="bs-tie" x1="92.22222222222223" y1="43.5" x2="92.22222222222223" y2="52.5"/><line class="bs-tie" x1="83" y1="43.5" x2="83" y2="52.5"/><line class="bs-tie" x1="73.77777777777777" y1="43.5" x2="73.77777777777777" y2="52.5"/><line class="bs-tie" x1="64.55555555555556" y1="43.5" x2="64.55555555555556" y2="52.5"/><line class="bs-tie" x1="55.33333333333333" y1="43.5" x2="55.33333333333333" y2="52.5"/><line class="bs-tie" x1="46.111111111111114" y1="43.5" x2="46.111111111111114" y2="52.5"/><line class="bs-tie" x1="36.888888888888886" y1="43.5" x2="36.888888888888886" y2="52.5"/><line class="bs-tie" x1="27.666666666666657" y1="43.5" x2="27.666666666666657" y2="52.5"/><line class="bs-tie" x1="18.444444444444457" y1="43.5" x2="18.444444444444457" y2="52.5"/><line class="bs-tie" x1="9.222222222222229" y1="43.5" x2="9.222222222222229" y2="52.5"/><line class="bs-tie" x1="0" y1="43.5" x2="0" y2="52.5"/><text class="bs-cn" x="6" y="12">straight</text></g><g data-cell="0,2" data-tip="turnout · right — " transform="translate(676,99)"><rect class="bs-card bs-trk bs-run" x="0" y="0" width="166" height="96" rx="4"/><line class="bs-rail" x1="0" y1="50.5" x2="166" y2="50.5"/><line class="bs-rail" x1="0" y1="45.5" x2="166" y2="45.5"/><line class="bs-tie" x1="0" y1="52.5" x2="0" y2="43.5"/><line class="bs-tie" x1="9.222222222222221" y1="52.5" x2="9.222222222222221" y2="43.5"/><line class="bs-tie" x1="18.444444444444443" y1="52.5" x2="18.444444444444443" y2="43.5"/><line class="bs-tie" x1="27.666666666666668" y1="52.5" x2="27.666666666666668" y2="43.5"/><line class="bs-tie" x1="36.888888888888886" y1="52.5" x2="36.888888888888886" y2="43.5"/><line class="bs-tie" x1="46.111111111111114" y1="52.5" x2="46.111111111111114" y2="43.5"/><line class="bs-tie" x1="55.333333333333336" y1="52.5" x2="55.333333333333336" y2="43.5"/><line class="bs-tie" x1="64.55555555555556" y1="52.5" x2="64.55555555555556" y2="43.5"/><line class="bs-tie" x1="73.77777777777777" y1="52.5" x2="73.77777777777777" y2="43.5"/><line class="bs-tie" x1="83" y1="52.5" x2="83" y2="43.5"/><line class="bs-tie" x1="92.22222222222223" y1="52.5" x2="92.22222222222223" y2="43.5"/><line class="bs-tie" x1="101.44444444444444" y1="52.5" x2="101.44444444444444" y2="43.5"/><line class="bs-tie" x1="110.66666666666667" y1="52.5" x2="110.66666666666667" y2="43.5"/><line class="bs-tie" x1="119.88888888888889" y1="52.5" x2="119.88888888888889" y2="43.5"/><line class="bs-tie" x1="129.11111111111111" y1="52.5" x2="129.11111111111111" y2="43.5"/><line class="bs-tie" x1="138.33333333333334" y1="52.5" x2="138.33333333333334" y2="43.5"/><line class="bs-tie" x1="147.55555555555554" y1="52.5" x2="147.55555555555554" y2="43.5"/><line class="bs-tie" x1="156.77777777777777" y1="52.5" x2="156.77777777777777" y2="43.5"/><line class="bs-tie" x1="166" y1="52.5" x2="166" y2="43.5"/><line class="bs-rail" x1="0" y1="50.5" x2="35" y2="50.5"/><line class="bs-rail" x1="0" y1="45.5" x2="35" y2="45.5"/><line class="bs-tie" x1="0" y1="52.5" x2="0" y2="43.5"/><line class="bs-tie" x1="11.666666666666666" y1="52.5" x2="11.666666666666666" y2="43.5"/><line class="bs-tie" x1="23.333333333333332" y1="52.5" x2="23.333333333333332" y2="43.5"/><line class="bs-tie" x1="35" y1="52.5" x2="35" y2="43.5"/><line class="bs-rail" x1="33.23223304703363" y1="49.76776695296637" x2="81.23223304703363" y2="97.76776695296637"/><line class="bs-rail" x1="36.76776695296637" y1="46.23223304703363" x2="84.76776695296637" y2="94.23223304703363"/><line class="bs-tie" x1="31.818019484660535" y1="51.18198051533946" x2="38.18198051533946" y2="44.81801948466054"/><line class="bs-tie" x1="38.67516234180339" y1="58.039123372482315" x2="45.039123372482315" y2="51.67516234180339"/><line class="bs-tie" x1="45.532305198946254" y1="64.89626622962518" x2="51.896266229625176" y2="58.532305198946254"/><line class="bs-tie" x1="52.38944805608911" y1="71.75340908676803" x2="58.75340908676803" y2="65.38944805608911"/><line class="bs-tie" x1="59.24659091323197" y1="78.61055194391089" x2="65.61055194391089" y2="72.24659091323197"/><line class="bs-tie" x1="66.10373377037482" y1="85.46769480105374" x2="72.46769480105374" y2="79.10373377037482"/><line class="bs-tie" x1="72.96087662751768" y1="92.3248376581966" x2="79.3248376581966" y2="85.96087662751768"/><line class="bs-tie" x1="79.81801948466054" y1="99.18198051533946" x2="86.18198051533946" y2="92.81801948466054"/><text class="bs-cn" x="6" y="12">turnout · right</text></g><g data-cell="0,3" data-tip="straight — " transform="translate(845,99)"><rect class="bs-card bs-trk bs-run" x="0" y="0" width="166" height="96" rx="4"/><line class="bs-rail" x1="166" y1="45.5" x2="0" y2="45.5"/><line class="bs-rail" x1="166" y1="50.5" x2="0" y2="50.5"/><line class="bs-tie" x1="166" y1="43.5" x2="166" y2="52.5"/><line class="bs-tie" x1="156.77777777777777" y1="43.5" x2="156.77777777777777" y2="52.5"/><line class="bs-tie" x1="147.55555555555554" y1="43.5" x2="147.55555555555554" y2="52.5"/><line class="bs-tie" x1="138.33333333333334" y1="43.5" x2="138.33333333333334" y2="52.5"/><line class="bs-tie" x1="129.11111111111111" y1="43.5" x2="129.11111111111111" y2="52.5"/><line class="bs-tie" x1="119.88888888888889" y1="43.5" x2="119.88888888888889" y2="52.5"/><line class="bs-tie" x1="110.66666666666666" y1="43.5" x2="110.66666666666666" y2="52.5"/><line class="bs-tie" x1="101.44444444444444" y1="43.5" x2="101.44444444444444" y2="52.5"/><line class="bs-tie" x1="92.22222222222223" y1="43.5" x2="92.22222222222223" y2="52.5"/><line class="bs-tie" x1="83" y1="43.5" x2="83" y2="52.5"/><line class="bs-tie" x1="73.77777777777777" y1="43.5" x2="73.77777777777777" y2="52.5"/><line class="bs-tie" x1="64.55555555555556" y1="43.5" x2="64.55555555555556" y2="52.5"/><line class="bs-tie" x1="55.33333333333333" y1="43.5" x2="55.33333333333333" y2="52.5"/><line class="bs-tie" x1="46.111111111111114" y1="43.5" x2="46.111111111111114" y2="52.5"/><line class="bs-tie" x1="36.888888888888886" y1="43.5" x2="36.888888888888886" y2="52.5"/><line class="bs-tie" x1="27.666666666666657" y1="43.5" x2="27.666666666666657" y2="52.5"/><line class="bs-tie" x1="18.444444444444457" y1="43.5" x2="18.444444444444457" y2="52.5"/><line class="bs-tie" x1="9.222222222222229" y1="43.5" x2="9.222222222222229" y2="52.5"/><line class="bs-tie" x1="0" y1="43.5" x2="0" y2="52.5"/><text class="bs-cn" x="6" y="12">straight</text></g><g data-cell="0,4" data-tip="turnout · left — " transform="translate(1014,99)"><rect class="bs-card bs-trk bs-run" x="0" y="0" width="166" height="96" rx="4"/><line class="bs-rail" x1="166" y1="45.5" x2="0" y2="45.5"/><line class="bs-rail" x1="166" y1="50.5" x2="0" y2="50.5"/><line class="bs-tie" x1="166" y1="43.5" x2="166" y2="52.5"/><line class="bs-tie" x1="156.77777777777777" y1="43.5" x2="156.77777777777777" y2="52.5"/><line class="bs-tie" x1="147.55555555555554" y1="43.5" x2="147.55555555555554" y2="52.5"/><line class="bs-tie" x1="138.33333333333334" y1="43.5" x2="138.33333333333334" y2="52.5"/><line class="bs-tie" x1="129.11111111111111" y1="43.5" x2="129.11111111111111" y2="52.5"/><line class="bs-tie" x1="119.88888888888889" y1="43.5" x2="119.88888888888889" y2="52.5"/><line class="bs-tie" x1="110.66666666666666" y1="43.5" x2="110.66666666666666" y2="52.5"/><line class="bs-tie" x1="101.44444444444444" y1="43.5" x2="101.44444444444444" y2="52.5"/><line class="bs-tie" x1="92.22222222222223" y1="43.5" x2="92.22222222222223" y2="52.5"/><line class="bs-tie" x1="83" y1="43.5" x2="83" y2="52.5"/><line class="bs-tie" x1="73.77777777777777" y1="43.5" x2="73.77777777777777" y2="52.5"/><line class="bs-tie" x1="64.55555555555556" y1="43.5" x2="64.55555555555556" y2="52.5"/><line class="bs-tie" x1="55.33333333333333" y1="43.5" x2="55.33333333333333" y2="52.5"/><line class="bs-tie" x1="46.111111111111114" y1="43.5" x2="46.111111111111114" y2="52.5"/><line class="bs-tie" x1="36.888888888888886" y1="43.5" x2="36.888888888888886" y2="52.5"/><line class="bs-tie" x1="27.666666666666657" y1="43.5" x2="27.666666666666657" y2="52.5"/><line class="bs-tie" x1="18.444444444444457" y1="43.5" x2="18.444444444444457" y2="52.5"/><line class="bs-tie" x1="9.222222222222229" y1="43.5" x2="9.222222222222229" y2="52.5"/><line class="bs-tie" x1="0" y1="43.5" x2="0" y2="52.5"/><line class="bs-rail" x1="166" y1="45.5" x2="131" y2="45.5"/><line class="bs-rail" x1="166" y1="50.5" x2="131" y2="50.5"/><line class="bs-tie" x1="166" y1="43.5" x2="166" y2="52.5"/><line class="bs-tie" x1="154.33333333333334" y1="43.5" x2="154.33333333333334" y2="52.5"/><line class="bs-tie" x1="142.66666666666666" y1="43.5" x2="142.66666666666666" y2="52.5"/><line class="bs-tie" x1="131" y1="43.5" x2="131" y2="52.5"/><line class="bs-rail" x1="129.23223304703365" y1="46.23223304703363" x2="81.23223304703363" y2="94.23223304703363"/><line class="bs-rail" x1="132.76776695296635" y1="49.76776695296637" x2="84.76776695296637" y2="97.76776695296637"/><line class="bs-tie" x1="127.81801948466054" y1="44.81801948466054" x2="134.18198051533946" y2="51.18198051533946"/><line class="bs-tie" x1="120.96087662751768" y1="51.67516234180339" x2="127.3248376581966" y2="58.039123372482315"/><line class="bs-tie" x1="114.10373377037483" y1="58.532305198946254" x2="120.46769480105375" y2="64.89626622962518"/><line class="bs-tie" x1="107.24659091323197" y1="65.38944805608911" x2="113.61055194391089" y2="71.75340908676803"/><line class="bs-tie" x1="100.38944805608911" y1="72.24659091323197" x2="106.75340908676803" y2="78.61055194391089"/><line class="bs-tie" x1="93.53230519894626" y1="79.10373377037482" x2="99.89626622962518" y2="85.46769480105374"/><line class="bs-tie" x1="86.6751623418034" y1="85.96087662751768" x2="93.03912337248232" y2="92.3248376581966"/><line class="bs-tie" x1="79.81801948466054" y1="92.81801948466054" x2="86.18198051533946" y2="99.18198051533946"/><text class="bs-cn" x="6" y="12">turnout · left</text></g><g data-cell="0,5" data-tip="Limits — " transform="translate(1183,99)"><rect class="bs-card bs-trk bs-run" x="0" y="0" width="166" height="96" rx="4"/><line class="bs-rail" x1="166" y1="45.5" x2="0" y2="45.5"/><line class="bs-rail" x1="166" y1="50.5" x2="0" y2="50.5"/><line class="bs-tie" x1="166" y1="43.5" x2="166" y2="52.5"/><line class="bs-tie" x1="156.77777777777777" y1="43.5" x2="156.77777777777777" y2="52.5"/><line class="bs-tie" x1="147.55555555555554" y1="43.5" x2="147.55555555555554" y2="52.5"/><line class="bs-tie" x1="138.33333333333334" y1="43.5" x2="138.33333333333334" y2="52.5"/><line class="bs-tie" x1="129.11111111111111" y1="43.5" x2="129.11111111111111" y2="52.5"/><line class="bs-tie" x1="119.88888888888889" y1="43.5" x2="119.88888888888889" y2="52.5"/><line class="bs-tie" x1="110.66666666666666" y1="43.5" x2="110.66666666666666" y2="52.5"/><line class="bs-tie" x1="101.44444444444444" y1="43.5" x2="101.44444444444444" y2="52.5"/><line class="bs-tie" x1="92.22222222222223" y1="43.5" x2="92.22222222222223" y2="52.5"/><line class="bs-tie" x1="83" y1="43.5" x2="83" y2="52.5"/><line class="bs-tie" x1="73.77777777777777" y1="43.5" x2="73.77777777777777" y2="52.5"/><line class="bs-tie" x1="64.55555555555556" y1="43.5" x2="64.55555555555556" y2="52.5"/><line class="bs-tie" x1="55.33333333333333" y1="43.5" x2="55.33333333333333" y2="52.5"/><line class="bs-tie" x1="46.111111111111114" y1="43.5" x2="46.111111111111114" y2="52.5"/><line class="bs-tie" x1="36.888888888888886" y1="43.5" x2="36.888888888888886" y2="52.5"/><line class="bs-tie" x1="27.666666666666657" y1="43.5" x2="27.666666666666657" y2="52.5"/><line class="bs-tie" x1="18.444444444444457" y1="43.5" x2="18.444444444444457" y2="52.5"/><line class="bs-tie" x1="9.222222222222229" y1="43.5" x2="9.222222222222229" y2="52.5"/><line class="bs-tie" x1="0" y1="43.5" x2="0" y2="52.5"/><text class="bs-cn" x="6" y="12">Limits</text></g><g data-cell="1,0" data-tip="curve · right — " transform="translate(338,0)"><rect class="bs-card bs-trk" x="0" y="0" width="166" height="96" rx="4"/><line class="bs-rail" x1="0" y1="50.5" x2="35" y2="50.5"/><line class="bs-rail" x1="0" y1="45.5" x2="35" y2="45.5"/><line class="bs-tie" x1="0" y1="52.5" x2="0" y2="43.5"/><line class="bs-tie" x1="11.666666666666666" y1="52.5" x2="11.666666666666666" y2="43.5"/><line class="bs-tie" x1="23.333333333333332" y1="52.5" x2="23.333333333333332" y2="43.5"/><line class="bs-tie" x1="35" y1="52.5" x2="35" y2="43.5"/><line class="bs-rail" x1="33.23223304703363" y1="49.76776695296637" x2="81.23223304703363" y2="97.76776695296637"/><line class="bs-rail" x1="36.76776695296637" y1="46.23223304703363" x2="84.76776695296637" y2="94.23223304703363"/><line class="bs-tie" x1="31.818019484660535" y1="51.18198051533946" x2="38.18198051533946" y2="44.81801948466054"/><line class="bs-tie" x1="38.67516234180339" y1="58.039123372482315" x2="45.039123372482315" y2="51.67516234180339"/><line class="bs-tie" x1="45.532305198946254" y1="64.89626622962518" x2="51.896266229625176" y2="58.532305198946254"/><line class="bs-tie" x1="52.38944805608911" y1="71.75340908676803" x2="58.75340908676803" y2="65.38944805608911"/><line class="bs-tie" x1="59.24659091323197" y1="78.61055194391089" x2="65.61055194391089" y2="72.24659091323197"/><line class="bs-tie" x1="66.10373377037482" y1="85.46769480105374" x2="72.46769480105374" y2="79.10373377037482"/><line class="bs-tie" x1="72.96087662751768" y1="92.3248376581966" x2="79.3248376581966" y2="85.96087662751768"/><line class="bs-tie" x1="79.81801948466054" y1="99.18198051533946" x2="86.18198051533946" y2="92.81801948466054"/><text class="bs-cn" x="6" y="12">curve · right</text></g><g data-cell="-1,2" data-tip="curve · right — " transform="translate(676,198)"><rect class="bs-card bs-trk" x="0" y="0" width="166" height="96" rx="4"/><line class="bs-rail" x1="166" y1="45.5" x2="131" y2="45.5"/><line class="bs-rail" x1="166" y1="50.5" x2="131" y2="50.5"/><line class="bs-tie" x1="166" y1="43.5" x2="166" y2="52.5"/><line class="bs-tie" x1="154.33333333333334" y1="43.5" x2="154.33333333333334" y2="52.5"/><line class="bs-tie" x1="142.66666666666666" y1="43.5" x2="142.66666666666666" y2="52.5"/><line class="bs-tie" x1="131" y1="43.5" x2="131" y2="52.5"/><line class="bs-rail" x1="132.76776695296635" y1="46.23223304703363" x2="84.76776695296637" y2="-1.7677669529663687"/><line class="bs-rail" x1="129.23223304703365" y1="49.76776695296637" x2="81.23223304703363" y2="1.7677669529663687"/><line class="bs-tie" x1="134.18198051533946" y1="44.81801948466054" x2="127.81801948466054" y2="51.18198051533946"/><line class="bs-tie" x1="127.3248376581966" y1="37.960876627517685" x2="120.96087662751768" y2="44.32483765819661"/><line class="bs-tie" x1="120.46769480105375" y1="31.10373377037482" x2="114.10373377037483" y2="37.467694801053746"/><line class="bs-tie" x1="113.61055194391089" y1="24.246590913231962" x2="107.24659091323197" y2="30.61055194391089"/><line class="bs-tie" x1="106.75340908676803" y1="17.38944805608911" x2="100.38944805608911" y2="23.753409086768038"/><line class="bs-tie" x1="99.89626622962518" y1="10.53230519894625" x2="93.53230519894626" y2="16.89626622962518"/><line class="bs-tie" x1="93.03912337248232" y1="3.6751623418033903" x2="86.6751623418034" y2="10.039123372482319"/><line class="bs-tie" x1="86.18198051533946" y1="-3.181980515339464" x2="79.81801948466054" y2="3.181980515339464"/><text class="bs-cn" x="6" y="12">curve · right</text></g><g data-cell="-1,3" data-tip="Refinery — " transform="translate(845,198)"><rect class="bs-card bs-trk" x="0" y="0" width="166" height="96" rx="4"/><line class="bs-rail" x1="166" y1="45.5" x2="0" y2="45.5"/><line class="bs-rail" x1="166" y1="50.5" x2="0" y2="50.5"/><line class="bs-tie" x1="166" y1="43.5" x2="166" y2="52.5"/><line class="bs-tie" x1="156.77777777777777" y1="43.5" x2="156.77777777777777" y2="52.5"/><line class="bs-tie" x1="147.55555555555554" y1="43.5" x2="147.55555555555554" y2="52.5"/><line class="bs-tie" x1="138.33333333333334" y1="43.5" x2="138.33333333333334" y2="52.5"/><line class="bs-tie" x1="129.11111111111111" y1="43.5" x2="129.11111111111111" y2="52.5"/><line class="bs-tie" x1="119.88888888888889" y1="43.5" x2="119.88888888888889" y2="52.5"/><line class="bs-tie" x1="110.66666666666666" y1="43.5" x2="110.66666666666666" y2="52.5"/><line class="bs-tie" x1="101.44444444444444" y1="43.5" x2="101.44444444444444" y2="52.5"/><line class="bs-tie" x1="92.22222222222223" y1="43.5" x2="92.22222222222223" y2="52.5"/><line class="bs-tie" x1="83" y1="43.5" x2="83" y2="52.5"/><line class="bs-tie" x1="73.77777777777777" y1="43.5" x2="73.77777777777777" y2="52.5"/><line class="bs-tie" x1="64.55555555555556" y1="43.5" x2="64.55555555555556" y2="52.5"/><line class="bs-tie" x1="55.33333333333333" y1="43.5" x2="55.33333333333333" y2="52.5"/><line class="bs-tie" x1="46.111111111111114" y1="43.5" x2="46.111111111111114" y2="52.5"/><line class="bs-tie" x1="36.888888888888886" y1="43.5" x2="36.888888888888886" y2="52.5"/><line class="bs-tie" x1="27.666666666666657" y1="43.5" x2="27.666666666666657" y2="52.5"/><line class="bs-tie" x1="18.444444444444457" y1="43.5" x2="18.444444444444457" y2="52.5"/><line class="bs-tie" x1="9.222222222222229" y1="43.5" x2="9.222222222222229" y2="52.5"/><line class="bs-tie" x1="0" y1="43.5" x2="0" y2="52.5"/><text class="bs-cn" x="6" y="12">Refinery</text></g><g data-cell="-1,4" data-tip="curve · left — " transform="translate(1014,198)"><rect class="bs-card bs-trk" x="0" y="0" width="166" height="96" rx="4"/><line class="bs-rail" x1="0" y1="50.5" x2="35" y2="50.5"/><line class="bs-rail" x1="0" y1="45.5" x2="35" y2="45.5"/><line class="bs-tie" x1="0" y1="52.5" x2="0" y2="43.5"/><line class="bs-tie" x1="11.666666666666666" y1="52.5" x2="11.666666666666666" y2="43.5"/><line class="bs-tie" x1="23.333333333333332" y1="52.5" x2="23.333333333333332" y2="43.5"/><line class="bs-tie" x1="35" y1="52.5" x2="35" y2="43.5"/><line class="bs-rail" x1="36.76776695296637" y1="49.76776695296637" x2="84.76776695296637" y2="1.7677669529663687"/><line class="bs-rail" x1="33.23223304703363" y1="46.23223304703363" x2="81.23223304703363" y2="-1.7677669529663687"/><line class="bs-tie" x1="38.18198051533946" y1="51.18198051533946" x2="31.818019484660535" y2="44.81801948466054"/><line class="bs-tie" x1="45.039123372482315" y1="44.32483765819661" x2="38.67516234180339" y2="37.960876627517685"/><line class="bs-tie" x1="51.896266229625176" y1="37.467694801053746" x2="45.532305198946254" y2="31.10373377037482"/><line class="bs-tie" x1="58.75340908676803" y1="30.61055194391089" x2="52.38944805608911" y2="24.246590913231962"/><line class="bs-tie" x1="65.61055194391089" y1="23.753409086768038" x2="59.24659091323197" y2="17.38944805608911"/><line class="bs-tie" x1="72.46769480105374" y1="16.89626622962518" x2="66.10373377037482" y2="10.53230519894625"/><line class="bs-tie" x1="79.3248376581966" y1="10.039123372482319" x2="72.96087662751768" y2="3.6751623418033903"/><line class="bs-tie" x1="86.18198051533946" y1="3.181980515339464" x2="79.81801948466054" y2="-3.181980515339464"/><text class="bs-cn" x="6" y="12">curve · left</text></g><text class="bs-rowlab" x="2" y="191">RUNNING TRACK</text></svg></div>
</section>
<footer class="foot measure">
Geometry: <code>connectionsFor</code>, <code>slopeAt</code>, <code>joins</code> — src/engine/track.ts<br>
Drawing: <code>officeSvg</code> — src/sim/board-svg.ts<br>
Source measurements: docs/tracks.png
</footer>
</div>