:root {
  color-scheme:dark;
  --paper:#141619;
  --panel:#1b1e22;
  --ink:#f1eee6;
  --muted:#c0c0ba;
  --rule:#42464c;
  --focus:#fff3ad;
  font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;
  background:var(--paper);
  color:var(--ink);
}
* {
  box-sizing:border-box;
}
body {
  margin:0;
}
button,input {
  font:inherit;
  color:inherit;
}
button,a,input {
  -webkit-tap-highlight-color:transparent;
}
button {
  cursor:pointer;
}
button:disabled {
  cursor:default;
  opacity:.45;
}
a {
  color:inherit;
}
button:focus-visible,a:focus-visible,input:focus-visible,[tabindex]:focus-visible {
  outline:3px solid var(--focus);
  outline-offset:4px;
}
button {
  border:1px solid var(--rule);
  background:var(--panel);
  border-radius:5px;
  min-height:44px;
}
button:hover:not(:disabled) {
  background:#30343a;
}
[hidden] {
  display:none!important;
}
.sr-only {
  position:absolute;
  width:1px;
  height:1px;
  padding:0;
  margin:-1px;
  overflow:hidden;
  clip-path:inset(50%);
  white-space:nowrap;
}
.skip {
  position:fixed;
  z-index:20;
  top:8px;
  left:8px;
  transform:translateY(-200%);
  padding:12px;
  background:var(--paper);
}
.skip:focus {
  transform:none;
}
#map-viewport {
  width:100%;
  height:100%;
  overflow:auto;
  overscroll-behavior:contain;
  scrollbar-color:#737872 var(--paper);
  touch-action:none;
  cursor:grab;
  display:flex;
}
#map-viewport.dragging {
  cursor:grabbing;
  user-select:none;
}
#map-size {
  position:relative;
  margin:auto;
  flex:none;
  overflow:clip;
}
#map-world {
  position:absolute;
  left:0;
  top:0;
  transform-origin:0 0;
}
#tracks {
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  overflow:visible;
  pointer-events:none;
}
.track {
  fill:none;
  stroke-linecap:round;
  stroke-linejoin:round;
}
.track-case {
  stroke:var(--paper);
}
[data-stop-line] .track-case { stroke-linecap:butt; }
#stations {
  position:absolute;
  inset:0;
  pointer-events:none;
}
.station {
  position:absolute;
  width:176px;
  height:0;
  transform:translateX(-50%);
  text-align:left;
  pointer-events:auto;
}
.station-link {
  position:absolute;
  bottom:-12px;
  padding-bottom:30px;
  display:flex;
  flex-direction:column;
  justify-content:flex-end;
  align-items:flex-start;
  width:100%;
  min-height:44px;
  color:var(--station-ink,var(--ink));
  text-decoration:none;
}
.station-name {
  font-size:27px;
  line-height:1.15;
  font-weight:400;
  letter-spacing:-.8px;
  background:var(--paper);
  box-shadow:3px 0 var(--paper),-3px 0 var(--paper);
}
.station-subtitle {
  display:block;
  color:var(--muted);
  font-size:14px;
  font-weight:400;
  letter-spacing:0;
  margin-top:4px;
}
.station-link:focus-visible { outline-offset:6px; }
.express-toggle {
  position:absolute;
  top:16px;
  right:-4px;
  width:44px;
  height:44px;
  border:0;
  border-radius:0;
  font-size:25px;
  font-weight:400;
  color:var(--route);
  background:transparent;
  line-height:1;
}
.express-toggle:hover:not(:disabled) { background:transparent; color:var(--ink); }
.station.child { width:136px; }
.child .station-name { font-size:21px; letter-spacing:-.5px; }

.explorer { position:relative; isolation:isolate; display:grid; grid-template-columns:280px minmax(0,1fr); height:100dvh; }
.rail { position:relative; padding:24px; height:100dvh; display:flex; flex-direction:column; overflow:auto; font-family:"Helvetica Neue",Helvetica,Arial,sans-serif; }
#lines { display:grid; grid-auto-rows:clamp(44px,8vh,64px); margin-block:auto; }
.line-control { display:flex; align-items:center; }
.line-toggle { border:0; border-radius:0; background:transparent; padding:8px 0; text-align:left; font-size:27px; font-weight:400; line-height:1.2; letter-spacing:-.8px; min-height:44px; white-space:nowrap; width:100%; }
#category-tracks [clip-path] .track-case { stroke-linecap:butt; }
#category-tracks { position:absolute; inset:0; width:100%; height:100%; overflow:hidden; pointer-events:none; z-index:1; }
.line-toggle.is-emphasized { color:var(--route); }
.line-toggle:hover:not(:disabled) { background:transparent; color:var(--route); }
main { min-width:0; height:100dvh; position:relative; }
#failure { position:absolute; top:50%; left:50%; transform:translate(-50%,-50%); text-align:center; background:var(--paper); padding:20px; }
.is-dimmed .track:not(.track-case) { opacity:.16; }
.station.is-muted .station-name { color:var(--muted); }
.bulk-controls { position:absolute; bottom:12px; left:24px; right:24px; display:flex; gap:8px; align-items:center; color:var(--muted); font-size:12px; }
.bulk-controls button { padding:0; border:0; border-radius:0; background:transparent; font-size:inherit; white-space:nowrap; }
.bulk-controls button:hover:not(:disabled) { background:transparent; color:var(--ink); text-decoration:underline; text-underline-offset:4px; }
@media(max-width:850px) {
  .explorer { grid-template-columns:190px minmax(0,1fr); }
  .rail { padding:16px; }
  .bulk-controls { left:16px; right:16px; }
  .line-toggle { font-size:21px; letter-spacing:-.5px; }
}
@media(max-width:480px) {
  .explorer { grid-template-columns:128px minmax(0,1fr); }
  .rail { padding:10px; }
  .bulk-controls { left:10px; right:10px; gap:5px; font-size:11px; }
  .line-toggle { font-size:16px; letter-spacing:-.45px; }
}
@media(max-height:500px) {
  .rail { padding-bottom:12px; }
  #lines { margin-block:0; }
  .bulk-controls { position:static; flex:none; margin-top:20px; }
}
@media(forced-colors:active) {
  .line-toggle[aria-expanded=true] { text-decoration:underline; text-decoration-color:Highlight; }
  .track { stroke:LinkText; }
  .track-case { stroke:Canvas; }
  .station-link { color:LinkText; }
}
