/* Night Lines: the diagram is a working transit poster over a printed city atlas. */
.game-shell{display:block;max-width:1480px}
.map-button{background:var(--lime);color:#171b10;border-color:var(--lime);white-space:nowrap}
.map-button:hover{background:#e5fa8a}
.street-toolbar{display:flex;align-items:center;gap:22px;padding:16px 0 20px;border-top:1px solid var(--line)}
.street-vital{min-width:125px;flex:1;max-width:180px}
.street-vital .vital{margin:0 0 9px;gap:15px}
.street-toolbar>p{color:var(--muted);font-size:.875rem;line-height:1.5;max-width:230px;margin-right:auto}
.street-toolbar>.button{white-space:nowrap}
.metro-dialog{width:100vw;max-width:none;height:100dvh;max-height:100dvh;margin:0;padding:30px clamp(16px,3vw,48px) 18px;border:0;border-radius:0;background:#141619;overflow:auto}
.metro-dialog>.dialog-close{position:fixed;z-index:10;top:17px;right:19px;background:#272a2f;color:#e9e9e4;width:44px;height:44px;border:1px solid #4e5257}
.metro-header{display:flex;align-items:center;justify-content:space-between;gap:25px;padding:0 64px 24px 0;max-width:1560px;margin:auto}
.metro-overline{font:.75rem/1.6 var(--mono);letter-spacing:.12em;color:var(--purple)}
.metro-header h2{font:700 clamp(2rem,4vw,3rem)/1 var(--display);margin:9px 0 0}
.metro-ticket{display:flex;align-items:center;gap:14px;color:var(--lime);border-left:1px solid #454b40;padding-left:24px}
.metro-ticket>.icon{width:32px;height:32px}
.metro-ticket>span{display:flex;flex-direction:column;gap:7px;font:.75rem var(--mono);color:#aeb3a6}
.metro-ticket strong{font:600 1rem var(--body);color:#e7e8de}
.metro-poster{background:#ddd9cb;color:#24292a;max-width:1560px;margin:auto;border:8px solid #d6d2c7;box-shadow:0 12px 35px #0005;color-scheme:light}
.metro-topline{display:flex;justify-content:space-between;align-items:center;gap:18px;padding:18px 23px;border:1px solid #9d9e91;border-bottom:3px solid #252e30}
.metro-topline>strong{font:800 clamp(1.5rem,3vw,2rem)/1.1 var(--display);letter-spacing:.025em}
.metro-topline>strong>span{font-weight:600;color:#63675f}
.metro-topline>span{font:.75rem/1.5 var(--mono);letter-spacing:.04em;text-align:right}
.metro-workspace{display:grid;grid-template-columns:minmax(0,1fr) 320px;align-items:start;border-inline:1px solid #9d9e91}
.metro-viewport{overflow:auto;min-width:0;scrollbar-color:#8d9184 #d3d1c5;scrollbar-width:thin}
.metro-map{position:relative;isolation:isolate;aspect-ratio:1000/680;min-width:650px;overflow:hidden}
.metro-atlas{position:absolute;inset:0;width:100%;height:100%;object-fit:fill;opacity:.53;z-index:-1;filter:grayscale(.35)}
.metro-tracks{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none}
.metro-tracks path{fill:none;stroke-linecap:round;stroke-linejoin:round}
.track-halo{stroke:#eeeadd;stroke-width:17}
.track-line{stroke-width:9}
.route-underlay{stroke:#171e25;stroke-width:18;opacity:.5}
.route-highlight{stroke:#fffde7;stroke-width:5;stroke-dasharray:3 10;animation:route-flow 1s linear infinite}
@keyframes route-flow{to{stroke-dashoffset:-26}}
#metro-train{fill:#d5ed5a;stroke:#182225;stroke-width:5;filter:drop-shadow(0 2px 5px #1118)}
#metro-train[hidden]{display:none}
.atlas-note{position:absolute;font:500 .75rem var(--mono);letter-spacing:.25em;pointer-events:none;color:#464f51;opacity:.75}
.atlas-note-water{left:9%;bottom:8%;transform:rotate(-12deg)}
.atlas-note-north{top:5%;right:9%}
.metro-station{position:absolute;left:var(--station-x);top:var(--station-y);width:48px;height:48px;transform:translate(-50%,-50%);padding:6px;z-index:2;display:grid;place-items:center;touch-action:manipulation;color:#202929}
.metro-station:active:not(:disabled){transform:translate(-50%,-50%)}
.station-dot{display:grid;place-items:center;width:30px;height:30px;border:3px solid #333d3a;border-radius:50%;background:#f1eee2;font:600 .75rem var(--mono);box-shadow:0 0 0 3px #e7e2d4;transition:box-shadow .18s,background .18s}
.metro-station-label{position:absolute;top:47px;left:50%;transform:translateX(-50%);display:block;text-align:center;white-space:nowrap;background:#e7e3d6ed;padding:4px 9px 5px;border-radius:2px;font:700 1rem/1.3 var(--body);box-shadow:0 1px 0 #6e77613d}
.metro-station-label small{display:block;font:500 .75rem/1.5 var(--mono);letter-spacing:.035em;margin-top:2px;color:#4c5550}
.metro-station:hover,.metro-station:focus-visible,.metro-station.is-selected{z-index:3}
.metro-station:hover .station-dot,.metro-station:focus-visible .station-dot{box-shadow:0 0 0 7px #303d3440;background:#fffdf4}
.metro-station.is-selected .station-dot{background:#202a2d;color:#fff7db;box-shadow:0 0 0 5px #d5ed5a,0 0 0 7px #303d3480}
.metro-station.is-here .station-dot{border-color:#253019;background:#d5ed5a;color:#192112}
.metro-station.is-here .metro-station-label{background:#d5ed5a;color:#1e2915}
.metro-station:focus-visible{outline:2px solid #242e2a;border-radius:50%}
.metro-hover{position:absolute;z-index:5;transform:translate(-50%,calc(-100% - 28px));display:flex;flex-direction:column;gap:6px;max-width:275px;width:max-content;padding:14px 17px;border:1px solid #5a6257;background:#202725;color:#f2f0df;box-shadow:0 7px 20px #17251a40;pointer-events:none;border-radius:3px;font-size:.875rem;line-height:1.4}
.metro-hover[hidden]{display:none}
.metro-hover strong{font-size:1rem}.metro-hover small{font-size:.75rem;color:#d5ed5a}
.metro-details{position:relative;border-left:1px solid #9da28f;background:#ebe8dc;padding:24px;align-self:stretch}
.metro-detail-kicker{display:flex;align-items:center;gap:6px;font:.75rem var(--mono);letter-spacing:.08em;color:#4f5a52;margin-bottom:15px}
.metro-detail-kicker .line-badge:first-child{margin-left:auto}
.line-badge{display:inline-grid;place-items:center;width:25px;height:25px;border-radius:50%;background:var(--line-color);color:#fff;font:600 .875rem var(--mono);flex-shrink:0}
.metro-details h3{font:700 2.4rem/1 var(--display);letter-spacing:-.015em;margin-bottom:10px}
.station-tagline{font-size:1rem;line-height:1.5;color:#3f4d40;margin-bottom:13px}
.station-description{font-size:.875rem;line-height:1.6;color:#586053}
.metro-facts{margin:20px 0;border-block:1px solid #b5b9a7;padding:16px 0;display:grid;grid-template-columns:1fr 1fr;gap:16px}
.metro-facts>div:first-child{grid-column:1/-1}
.metro-facts dt{font-size:.75rem;line-height:1.5;color:#57604f;margin-bottom:5px}
.metro-facts dd{font-size:.875rem;font-weight:600;line-height:1.5;margin:0;color:#26332d}
.metro-facts .patrol-high{color:#8e322b}.metro-facts .patrol-medium{color:#745017}
.metro-itinerary{margin-bottom:22px}.metro-itinerary .eyebrow{color:#53604e}
.metro-itinerary ol{list-style:none;margin:12px 0 0;padding:0;display:flex;flex-direction:column;gap:11px}
.metro-itinerary li{display:flex;align-items:center;gap:10px;font-size:.875rem;line-height:1.4}
.metro-itinerary li>.icon{width:25px}.metro-itinerary li small{display:block;font-size:.75rem;color:#656f5e}
.metro-current{display:flex;align-items:center;gap:9px;font-size:.875rem;line-height:1.6;color:#4f5b45;margin:22px 0}
.metro-job{border-left:3px solid #7653a5;padding:10px 12px;background:#7653a50d;margin:18px 0;font-size:.875rem;line-height:1.6}
.metro-job>strong{color:#64418b}.metro-job>p{margin:6px 0}.metro-job>span{color:#465140;font-weight:600}
.metro-details .button.primary{background:#283724;color:#ecf4c4;white-space:normal}
.metro-details .button.primary:hover:not(:disabled){background:#3a4e31}
.metro-details .button:focus-visible{outline-color:#263827}
.metro-details .button:disabled{opacity:1;background:#d4d8c7;color:#5f6954;border-color:#bcc3ae}
.metro-arrival{font-size:.75rem;line-height:1.6;color:#5c6454;margin-top:12px}
.metro-legend{border:1px solid #9d9e91;border-top:3px solid #252e30;padding:17px 23px;display:flex;align-items:center;justify-content:space-between;gap:20px}
.metro-legend>div{display:flex;gap:22px;flex-wrap:wrap}.metro-legend>div>span{display:flex;align-items:center;gap:8px;font-size:.875rem;font-weight:600}
.metro-legend>p{font-size:.75rem;line-height:1.6;max-width:275px;color:#4c594b}
.metro-status{padding:16px 0 0;color:#b2b9aa;font:.875rem/1.6 var(--mono);text-align:center}
.is-travelling .metro-status{color:var(--lime)}.is-travelling .metro-station:disabled{opacity:1}
@media(min-width:1001px){.trading-layout{grid-template-columns:minmax(0,1fr) 310px}.market-open{display:block}.change-col{display:table-cell}}
@media(max-width:1100px){.street-toolbar>p{display:none}.street-toolbar{gap:15px}.street-vital{max-width:none}.metro-workspace{grid-template-columns:minmax(0,1fr) 290px}.metro-details{padding:20px}.metro-ticket{display:none}.metro-legend{align-items:flex-start;flex-direction:column;gap:13px}.metro-legend>p{max-width:none}}
@media(max-width:850px){.metro-workspace{grid-template-columns:1fr}.metro-details{border-left:0;border-top:1px solid #9da28f;display:grid;grid-template-columns:1fr 1fr;gap:0 26px}.metro-detail-kicker{grid-column:1/-1;justify-content:flex-start}.metro-detail-kicker .line-badge:first-child{margin-left:10px}.metro-details h3,.station-tagline,.station-description,.metro-facts{grid-column:1}.metro-itinerary{grid-column:2;grid-row:2/6}.metro-details>.button,.metro-arrival,.metro-job,.metro-current{grid-column:1/-1}.metro-map{min-width:600px}.metro-header{padding-bottom:18px}.metro-topline{padding:15px}.metro-topline>span{display:none}}
@media(max-width:720px){.masthead{height:auto;min-height:70px;flex-wrap:wrap;padding-block:12px}.header-actions{gap:6px}.header-actions .map-button{font-size:.875rem;min-height:38px;padding:8px 12px}.street-toolbar{display:grid;grid-template-columns:1fr 1fr;gap:16px 20px}.street-toolbar>.button{min-width:0;font-size:.875rem;padding-inline:8px}.street-vital{min-width:0}.metro-dialog{padding:24px 12px 15px}.metro-overline{font-size:.75rem;letter-spacing:.03em}.metro-header h2{font-size:2rem;line-height:1.05}.metro-header{padding-right:50px}.metro-dialog>.dialog-close{right:12px;top:15px}.metro-poster{border-width:5px}.metro-topline>strong{font-size:1.65rem}.metro-topline>strong>span{font-size:1.15rem}.metro-map{min-width:600px}.metro-viewport:after{content:'↔ Scroll map · tap a station for details';display:block;padding:12px;background:#d4d3c5;font:.75rem/1.5 var(--mono);position:sticky;left:0;width:100%}.metro-hover{display:none}.metro-station-label{font-size:.9375rem}.metro-details{display:block;padding:21px}.metro-details h3{font-size:2.3rem}.metro-itinerary ol{flex-direction:row;flex-wrap:wrap;gap:13px}.metro-itinerary li{padding-right:8px}.metro-detail-kicker .line-badge:first-child{margin-left:auto}.metro-legend{padding:16px;gap:14px}.metro-legend>div{gap:12px 17px}.metro-legend>div>span{font-size:.875rem}.metro-status{font-size:.75rem;text-align:left}}
@media(max-width:410px){.masthead{padding-inline:12px;gap:10px}.header-actions{width:100%;margin-left:0;justify-content:flex-end}.header-actions .map-button{margin-right:auto}.metro-topline>strong>span{display:block;margin-top:5px}}
@media(prefers-reduced-motion:reduce){.route-highlight{animation:none}}
