:root{--ink:#16202a;--muted:#62707c}body{margin:0;color:var(--ink);font-family:Arial,Helvetica,sans-serif;background:#fff}a:focus-visible,button:focus-visible,select:focus-visible{outline:3px solid #4262c9;outline-offset:4px}a{text-underline-offset:3px}.shell{max-width:900px}.top{background:#090909;color:#fff;position:sticky;top:0;z-index:10}.top-inner{max-width:936px;margin:auto;min-height:78px;display:flex;gap:14px;align-items:center;padding:12px 18px}.top h1{font-size:clamp(18px,4.4vw,27px);font-weight:750;line-height:1.2;margin:0;min-width:0;overflow-wrap:anywhere}.back{width:42px;height:44px;display:grid;place-items:center;font-size:32px;color:#fff;text-decoration:none;flex:none}.back:hover{color:#c4d5ff}.route-badge{border-radius:50%;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;padding:0;line-height:1;font-weight:800;text-decoration:none}.route-badge.large{width:48px;height:48px;font-size:25px}.route-badge.small{width:34px;height:34px;font-size:18px}.home-grid{max-width:340px;margin:18px auto 35px}.home-row{display:flex;justify-content:center;gap:8px;margin-bottom:8px}.line-choice{width:76px;aspect-ratio:1;display:flex;align-items:center;justify-content:center;border:0;border-radius:12px;background:transparent;text-decoration:none;flex:none}.line-choice:hover{background:#eff3f7}.line-choice.not-ready{opacity:.45}.intro{padding:24px 4px 10px}.intro h2{font-size:26px;font-weight:700}.intro p{color:var(--muted)}.direction-list{display:grid;gap:12px;margin:15px 4px 30px}.direction{min-height:78px;border:1px solid #d8dfe5;border-radius:12px;padding:17px 20px;display:flex;gap:15px;align-items:center;justify-content:space-between;color:var(--ink);text-decoration:none;font-size:21px;font-weight:650}.direction:hover{background:#f4f7fa}.chevron{font-size:27px;color:#7b858c;line-height:1}.route-intro{padding:15px 16px 8px}.route-intro p{margin-bottom:5px}.route-scope{color:var(--muted);font-size:13px}.route-jump{display:flex;align-items:center;gap:12px;padding:5px 16px 18px}.route-jump label{font-weight:650;white-space:nowrap}.route-jump select{max-width:420px}.route-stop{border-bottom:1px solid #d4dce2;border-left:8px solid var(--line-color);position:relative;scroll-margin-top:88px;transition:background-color .15s}.route-stop.is-selected{background:#eaf3ff;box-shadow:inset 0 0 0 2px #3a73bc}.selected-label{display:block;color:#24528d;font-size:12px;font-weight:700;margin-top:4px}.stop{display:grid;grid-template-columns:27px minmax(0,1fr) 23px;gap:10px;padding:12px 13px 8px 0;min-height:67px;text-decoration:none;color:var(--ink)}.stop:hover{color:var(--ink);background:#edf3f866}.stop-content{min-width:0}.stop-title{display:block;font-size:clamp(18px,3.8vw,23px);font-weight:750;line-height:1.2}.sub{display:block;font-size:clamp(14px,3.3vw,18px);color:#697681;margin-top:3px;line-height:1.3}.stop .chevron{align-self:center}.stop-marker{position:relative;display:block;width:27px;height:24px}.stop-marker:before{content:'';position:absolute;left:0;top:4px;background:#101418;width:18px;height:14px}.stop-marker:after{content:'';position:absolute;left:18px;top:4px;border-top:7px solid transparent;border-bottom:7px solid transparent;border-left:8px solid #101418}.transfers{display:flex;flex-wrap:wrap;gap:4px;margin:0 10px 9px 35px}.transfer-link{display:flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:50%;text-decoration:none;flex:none}.transfer-link:hover{background:#dbe5f0}.service-times{margin:0 15px 11px 38px;font-size:12px;color:#637280}.service-times summary{cursor:pointer}.service-times p{margin:6px 0 0;max-width:640px}.route-footer{padding:20px;font-size:13px}.maps-link{margin:8px 0 12px}.board{padding:20px 0}.board-intro{display:flex;gap:14px;align-items:flex-start}.board-intro h2{font-size:clamp(23px,5vw,32px);font-weight:700;margin:0}.board-intro p{margin:5px 0;color:var(--muted)}.empty-diagram{border:1px dashed #b7c4d0;border-radius:14px;background:#f7f9fb;padding:25px 20px;margin:20px 0}.empty-diagram h3{font-size:21px}.empty-diagram p{color:var(--muted);margin:8px 0 0}.source-link{font-size:13px;margin:20px 0}.board-cars{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.car-card{border:1px solid #d3dce3;border-radius:12px;background:#f8fafc;padding:14px}.car-near{font-size:13px;color:#315b78;margin:8px 0}.door-unknown{font-size:13px;color:var(--muted);margin:8px 0 0}.notice{background:#fff2d9;color:#614716;border-radius:10px;padding:13px 16px;margin:15px 0}.diagram-screen{padding-bottom:30px}@media(max-width:600px){.top-inner{min-height:74px;gap:10px;padding:10px 12px}.top .route-badge.large{width:43px;height:43px;font-size:23px}.route-jump{display:block}.route-jump select{max-width:none;margin-top:5px}.route-stop{scroll-margin-top:84px}.board-cars{grid-template-columns:1fr}}@media(max-width:370px){.home-row{gap:7px}.line-choice{width:calc((100vw - 49px)/4)}.route-badge.large{width:44px;height:44px;font-size:23px}}
/* JSON-driven platform diagrams: source geometry, independently styled UI. */
.diagram-summary{margin:24px 0 16px;padding:16px;background:#f0f6fa;border-radius:12px;color:#203345}
.diagram-status{font-size:.8rem;font-weight:700;color:#52636e}.diagram-summary p{margin-bottom:8px}.diagram-legend{display:flex;gap:16px;flex-wrap:wrap;font-size:.82rem}.diagram-legend span{display:flex;gap:6px;align-items:center}.legend-door{width:13px;height:16px;border:2px solid #657787;border-radius:3px;background:#fff}.legend-door.red{background:#b92540;border-color:#b92540}.legend-conductor{background:#176589;color:white;border-radius:50%;width:20px;height:20px;text-align:center}.diagram-meta{font-size:.8rem;margin-top:12px}.train-panel{margin:22px 0;border-top:1px solid #dbe3e9;padding-top:20px}.train-heading{display:flex;justify-content:space-between;gap:12px;align-items:baseline}.train-heading h3{font-size:1.15rem}.train-heading span{font-size:.8rem;color:#657787}.platform-layout{position:relative;margin-top:10px;background:linear-gradient(90deg,#f4f7f9 0 124px,transparent 124px);border-radius:12px}.train-strip{position:absolute;left:0;top:0;width:125px;overflow:visible}.train-body{fill:#dfe8ef;stroke:#8599aa;stroke-width:1.5}.car-number{fill:#344c60;font-size:16px;font-weight:700}.front-label{fill:#36566f;font-size:13px;font-weight:700}.train-door{fill:white;stroke:#526b7e;stroke-width:1.5}.exit-door{fill:#bb2443;stroke:#98132e}.door-split{stroke:#8498a8;stroke-width:1}.exit-door+.door-split{stroke:#fff}.door-letter{fill:#a11634;font-size:11px;font-weight:800}.conductor-dot{fill:#176589;stroke:#fff;stroke-width:2}.conductor-letter{fill:#fff;font-size:15px;font-weight:700}.exit-column{position:absolute;left:137px;right:0;height:100%}.exit-card{position:absolute;left:0;right:0;border-left:3px solid #bb2443;background:#fff5f6;padding:10px;border-radius:0 8px 8px 0;overflow-wrap:anywhere}.exit-card h4{font-size:.92rem;line-height:1.35;margin-bottom:8px}.exit-letter{display:inline-flex;background:#bb2443;color:white;font-size:.75rem;width:20px;height:20px;align-items:center;justify-content:center;border-radius:50%;margin-right:5px}.exit-card p{font-size:.73rem;color:#5a6470;margin:0 0 5px}.feature-label{display:block;font-size:.75rem;color:#176589;margin-top:6px}.diagram-details{font-size:.85rem;margin:18px 0}.diagram-details summary{font-weight:650;margin-bottom:10px}.no-exits{font-size:.85rem;margin-top:60px;color:#62707a}.diagram-screen .board{max-width:720px;margin:auto}.diagram-screen{padding-bottom:30px}@media(max-width:360px){.diagram-screen{padding-left:10px;padding-right:10px}.exit-column{left:128px}.exit-card{padding:8px}.exit-card h4{font-size:.83rem}.diagram-legend{gap:10px}}
.car-no-exit{fill:#acb5bc;stroke:#82919d}.source-restrictions{background:#fff4db;border-left:3px solid #d39420;padding:12px;margin:16px 0;font-size:.85rem}.source-restrictions p{margin:6px 0}
.street-transfers{margin:3px 12px 12px calc(var(--marker-width,72px) + 10px);padding:11px 12px;background:#ecf7f5;border-left:3px solid #008c79;border-radius:0 8px 8px 0}.street-transfers strong{display:block;font-size:.83rem;color:#075b51}.street-transfers p{font-size:.79rem;line-height:1.35;margin:5px 0 8px;color:#34534f}.street-targets{display:flex;gap:8px;flex-wrap:wrap}.street-transfer-link{display:inline-flex;align-items:center;gap:7px;min-height:44px;text-decoration:none;font-size:.79rem;font-weight:650}.street-transfer-link .route-badge{width:30px;height:30px;font-size:16px}.street-transfer-link span:last-child{color:#145448}
/* Platform placement follows the depicted door-opening side. */
.train-panel{margin:24px 0;padding-top:0;border-top:0}.platform-layout{display:grid;grid-template-rows:1fr;background:#f8fafb;gap:0}.platform-layout.doors-right{grid-template-columns:112px minmax(0,1fr)}.platform-layout.doors-left{grid-template-columns:minmax(0,1fr) 112px}.platform-layout.dual{grid-template-columns:90px minmax(0,1fr) 90px}.train-track{position:relative;min-width:0;background:#edf3f7;border-radius:11px}.train-heading{position:absolute;top:2px;left:2px;right:2px;z-index:1;display:block;text-align:center}.train-heading h3{font-size:.76rem;line-height:1.15;margin:0;color:#24536e}.train-heading span{font-size:.63rem;display:block}.train-strip{position:absolute;left:0;top:37px;width:100%;overflow:visible}.exit-column{position:relative;left:auto;right:auto;height:100%;min-width:0;padding:0 7px}.exit-card{left:7px;right:7px;min-height:0;background:white;border-left:3px solid #ba2845;box-shadow:0 2px 9px #1d394413;padding:9px}.exit-card h4{display:block;font-size:.85rem;line-height:1.3}.exit-index{display:block;width:max-content;background:#ffe6eb;color:#8d1934;border-radius:4px;font-size:.72rem;font-weight:750;padding:3px 6px;margin:0 0 5px}.door-number{fill:#981934;font-size:11px;font-weight:800}.conductor-dot{fill:#166588;stroke:white}.legend-conductor{display:grid;place-items:center;width:21px;height:21px;border-radius:50%;background:#166588;color:white}.legend-conductor svg{width:15px;height:15px}.no-exits{padding:8px}.platform-layout.dual .exit-card{font-size:.76rem}@media(max-width:420px){.platform-layout.doors-right{grid-template-columns:89px minmax(0,1fr)}.platform-layout.doors-left{grid-template-columns:minmax(0,1fr) 89px}.platform-layout.dual{grid-template-columns:68px minmax(0,1fr) 68px}.platform-layout.dual .exit-column{padding:0 3px}.platform-layout.dual .exit-card{left:3px;right:3px;padding:6px}.platform-layout.dual .exit-card h4{font-size:.76rem}.platform-layout.dual .exit-card p{font-size:.68rem}.train-heading span{font-size:.59rem}.platform-layout.dual .train-heading h3{font-size:.65rem}}
.direction-choice{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:center}.direction-choice .direction{min-width:0}.direction-choice .btn{min-height:50px;display:grid;place-items:center}.edit-station{display:inline-flex;margin:2px 0 18px}.editor-head{padding:16px;background:#eaf3fc;border-radius:12px;margin-bottom:20px}.editor-head h2{font-size:1.35rem}.editor-head code{overflow-wrap:anywhere}.editor-head strong{font-size:.8rem;margin-left:8px}.edit-card{display:block;min-width:0;border:1px solid #d6e1e9;border-radius:10px;padding:16px;margin:15px 0;background:#fff}.edit-card legend{font-size:1rem;font-weight:700;float:none;width:auto;padding:0 7px}.edit-card label{display:block;font-size:.83rem;font-weight:650;margin:10px 0}.edit-card input,.edit-card select{margin-top:5px;font-weight:400}.edit-fields{display:grid;grid-template-columns:repeat(auto-fit,minmax(165px,1fr));gap:0 12px}.feature-picker{display:flex;flex-wrap:wrap;gap:5px 13px;margin:12px 0}.feature-picker label{margin:0;font-weight:400}.feature-picker input{accent-color:#176c95}.editor-actions{display:flex;gap:10px;flex-wrap:wrap;margin:15px 0 30px}.edit-reviewed{display:block;margin-top:20px}.edit-hint{font-size:.79rem;color:#586c7b}.raw-review{max-height:330px;overflow:auto;font-size:.69rem;background:#edf1f4;padding:9px}.door-toggle{display:block!important;margin:8px 0!important}.recommendation{padding:8px 0;border-bottom:1px solid #e5eaf0;display:flex;justify-content:space-between;align-items:center}.editor-head p[role="status"]{min-height:1.3em}.editor-exits:empty:after{content:'No exits yet. Add one below.';display:block;padding:10px;color:#667885}.train-door.optimal-door{fill:#f29824;stroke:#bf660b}.train-door.exit-door{fill:#bb2443;stroke:#98132e}.legend-door.orange{background:#f29824;border-color:#bf660b}@media(max-width:390px){.direction-choice .direction{font-size:17px;padding:12px}.direction-choice .btn{padding:9px}}
/* Traktical editor: readable controls beside a persistent, independently scrolling preview. */
.editor-screen.shell{max-width:1560px}
.editor-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:20px;align-items:start}
#editor-ui,#editor-preview{min-width:0}
#editor-preview{position:sticky;top:12px;max-height:calc(100vh - 24px);overflow:auto;overscroll-behavior:contain;border:1px solid #d8e2eb;background:#fff;border-radius:12px;padding:14px;scrollbar-gutter:stable}
#editor-preview>h3{position:sticky;top:-14px;z-index:5;background:#fff;border-bottom:1px solid #d8e2eb;margin:-14px -14px 14px;padding:13px 14px;font-size:1rem}
#editor-preview .diagram-summary{margin-top:0}
.editor-station-nav{display:flex;gap:12px;justify-content:space-between;margin:24px 0 52px}
.editor-station-nav .btn{max-width:48%;white-space:normal;text-align:center}
.field-help{position:relative;display:inline-grid;place-items:center;width:23px;height:23px;margin-right:5px;border:0;border-radius:50%;background:#e4f1fa;color:#176589;font-weight:700;vertical-align:middle;cursor:help}
.field-help:hover:after,.field-help:focus:after{content:attr(data-help);position:absolute;bottom:calc(100% + 6px);left:0;z-index:20;display:block;width:min(270px,70vw);padding:9px 11px;border-radius:7px;background:#172e3e;color:white;text-align:left;font-size:.78rem;line-height:1.4;font-weight:400;box-shadow:0 4px 16px #001b3038}
.field-help:focus{outline:2px solid #176589;outline-offset:2px}
.legend-conductor{display:inline-flex!important;align-items:center;justify-content:center;line-height:1;flex:none;vertical-align:middle}
.legend-conductor svg{width:15px;height:15px;display:block;flex:none}
.car-only{border-left-color:#d27b10;background:#fffaf0}
.car-only .exit-index{background:#f29824;color:#241100}
.car-exit-number{font-size:13px;font-weight:800;fill:#ad5900}
@media(max-width:840px){.editor-layout{grid-template-columns:1fr}.editor-screen.shell{max-width:720px}#editor-preview{position:relative;top:auto;max-height:none;overflow:visible;scrollbar-gutter:auto}#editor-preview>h3{position:static;margin:-14px -14px 14px}}
.home-caption{text-align:center;font-size:1rem;font-weight:650;margin:18px 0 0}
.exit-transfers{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin:7px 0}
.exit-transfer-link,.exit-transfer-unverified,.exit-transfer-agency{display:inline-flex;align-items:center;justify-content:center;border-radius:50%;text-decoration:none}
.exit-transfer-link:focus-visible{outline:2px solid #173d7d;outline-offset:3px}
.exit-transfer-badge{width:27px;height:27px;border-radius:50%;display:grid;place-items:center;font-size:.79rem;font-weight:800;line-height:1;padding:0 2px}
.exit-transfer-unverified{opacity:.55;cursor:help}
/* Station navigation and review controls. */
.mdi-icon{display:inline-block;width:1.2em;height:1.2em;flex:none;vertical-align:-.2em}.back .mdi-icon{width:28px;height:28px}.chevron .mdi-icon{width:25px;height:25px}.accessible-stop{display:inline-flex;color:#126b8c;vertical-align:middle;margin-left:5px}.accessible-stop .mdi-icon{width:22px;height:22px}.route-stop{border-left:0;background-image:linear-gradient(90deg,var(--line-color) 0 35px,transparent 35px)}.route-stop.is-selected{background-image:linear-gradient(90deg,var(--line-color) 0 35px,#eaf3ff 35px)}.stop{grid-template-columns:35px minmax(0,1fr) 23px}.stop-marker{width:35px}.stop-marker:before{width:26px}.stop-marker:after{left:26px}.transfers{margin-left:43px}.service-times{margin-left:46px}.stop:hover{background:transparent}.diagram-actions{display:flex;flex-wrap:wrap;align-items:stretch;gap:8px;margin:16px 0}.diagram-actions .btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:43px;margin:0}.diagram-actions .mdi-icon{width:19px;height:19px}.train-strip{overflow:visible}.preview-door,.preview-conductor{cursor:pointer}.preview-door:focus-visible,.preview-conductor:focus-visible{outline:3px solid #315c9b}.editor-screen .exit-card,.editor-screen .train-track{cursor:pointer}.editor-screen .exit-card:hover,.editor-screen .train-track:hover{box-shadow:inset 0 0 0 2px #4684c5}.preview-controls{background:#eaf3fc;border:1px solid #aec8e1;border-radius:10px;padding:12px;margin:0 0 12px}.preview-controls:empty{display:none}.preview-controls h4{font-size:1rem}.preview-controls fieldset{display:flex;flex-wrap:wrap;gap:8px 14px;margin-top:12px}.preview-controls legend{font-size:.8rem;font-weight:bold}.preview-controls label{font-size:.85rem}.preview-controls input[type=range]{width:100%;display:block}.preview-controls input[type=number]{max-width:125px}.edit-card.is-editing{box-shadow:0 0 0 3px #76a4d3}.exit-map-link{display:inline-flex;margin-top:5px;font-size:.78rem}.editor-screen.shell{max-width:1200px}
/* Multi-train platforms: each strip occupies its own grid column. */
.platform-layout .aligned-strip{position:absolute;left:0;width:100%}
.platform-layout .aligned-strip .train-strip{position:relative;top:0;left:0}
@media(max-width:420px){.platform-layout:has(.train-track:nth-child(3)) .train-track{min-width:0}.platform-layout .train-heading h3{overflow-wrap:anywhere}}
/* Keep every platform's trains and exit cards in one horizontal row. */
.platform-layout.train-row{display:flex;align-items:stretch;flex-wrap:nowrap;min-width:0}
.platform-layout.train-row .train-track{flex-shrink:0}
.platform-layout.train-row .exit-column{flex:1 1 0;min-width:0}
.train-heading .train-route-icon{display:inline-grid;place-items:center;width:22px;height:22px;border-radius:50%;font-size:13px;line-height:1;font-weight:800;margin:0 1px}
.train-heading h3{display:flex;justify-content:center;gap:2px;align-items:center;min-height:23px}
/* Guided reconciliation workspace */
.recon-home{display:flex;align-items:center;justify-content:space-between;gap:12px;background:#eaf3fc;border:1px solid #bed3e6;border-radius:12px;padding:17px;margin:24px 0;color:#163c60;text-decoration:none;font-weight:700}
.recon-badge{display:inline-block;min-width:28px;text-align:center;border-radius:20px;background:#176589;color:#fff;padding:3px 9px;font-size:.85rem;vertical-align:middle}
.reconciliation-screen{max-width:1440px;padding-top:22px;padding-bottom:40px}.recon-nav{display:flex;flex-wrap:wrap;gap:14px;align-items:center;margin-bottom:25px}.recon-nav a{font-weight:650}.recon-categories{display:grid;grid-template-columns:repeat(auto-fit,minmax(270px,1fr));gap:15px}.recon-category{display:block;border:1px solid #c6d5df;border-radius:12px;padding:20px;text-decoration:none;color:#193c54;background:#f5f9fc}.recon-category strong{display:flex;justify-content:space-between;align-items:start;gap:12px}.recon-category p{font-size:.88rem;margin:15px 0 0;color:#516876}.recon-category:hover{background:#eaf3fc}.recon-search{display:block;margin:22px 0}.recon-item{display:grid;gap:5px;border-bottom:1px solid #d6e1e9;padding:15px;text-decoration:none;color:#193c54}.recon-item:hover{background:#edf5fc}.recon-item[hidden]{display:none}.recon-item small{color:#687c89}.recon-workspace{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:28px}.recon-workspace h2{font-size:1.2rem;margin:20px 0 14px}.recon-source{position:relative;max-width:640px;background:#121719;margin:12px 0}.recon-source img{display:block;width:100%;height:auto}.recon-source svg{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.recon-context{padding:14px;background:#eff5f9;border-radius:10px;font-size:.88rem}.recon-context p{margin-bottom:8px}.recon-workspace pre{max-height:340px;overflow:auto;font-size:12px;white-space:pre-wrap}.recon-workspace form{border:1px solid #c6d5df;border-radius:12px;padding:18px}.recon-workspace label{display:block;font-weight:650;margin:12px 0}.recon-workspace input,.recon-workspace select,.recon-workspace textarea{margin-top:6px}.recon-workspace fieldset legend{font-size:1rem;font-weight:700;margin-top:15px}.recon-door-list{max-height:260px;overflow:auto;border:1px solid #ccd9e3;padding:10px}.recon-door-list label{font-size:.85rem;font-weight:400;margin:5px 0}.recon-actions{display:flex;flex-wrap:wrap;gap:9px;margin-top:18px}.recon-confirm{font-size:.9rem}.recon-workspace .form-control,.recon-workspace .form-select{max-width:100%}#recon-preview{overflow:auto}#recon-preview .platform-layout{min-width:360px}#recon-status{min-height:24px}@media(max-width:850px){.recon-workspace{grid-template-columns:1fr}.recon-source{max-width:480px;margin-left:auto;margin-right:auto}}
/* Exit cards are read only on station pages; controls appear inside editing views. */
.exit-preview-toolbar{display:flex;gap:8px;margin:10px 0}
.exit-fields{font-size:.84rem}
.exit-fields-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px 12px}
.exit-fields label{display:block;font-weight:600;margin:8px 0}
.exit-fields .form-control,.exit-fields .form-select{margin-top:4px}
.position-pair{display:flex;align-items:center;gap:9px;margin-top:5px}
.position-pair input[type=range]{min-width:0;flex:1;accent-color:#176589}
.position-pair input[type=number]{width:72px;flex:none}
.exit-help{display:inline-block;color:#176589;cursor:help;margin-right:4px}
.exit-train-choices{border:0;padding:0;margin:8px 0}
.exit-train-choices legend{font-size:.83rem;font-weight:650}
.exit-train-choices label{display:inline-block;margin:3px 12px 3px 0}
.exit-edit-actions{display:flex;flex-wrap:wrap;align-items:end;gap:10px;margin:10px 0}
.exit-edit-actions label{margin:0}
.door-choice{cursor:pointer}.door-choice circle{fill:white;stroke:#176589;stroke-width:2}.door-choice text{fill:#176589;font-size:14px;font-weight:800;pointer-events:none}
.door-choice[aria-checked=true] circle{fill:#d8ecfa}.door-choice.claimed{opacity:.35;cursor:not-allowed}.door-choice.claimed circle{fill:#89929a}
.door-choice:focus-visible{outline:3px solid #176589}
@media(max-width:500px){.exit-fields-grid{grid-template-columns:1fr}}

.exit-transfer-badge.agency-transfer{background:#287aa5!important;color:#fff!important;font-size:.7rem;width:auto;min-width:44px;padding-inline:6px;border-radius:5px}
.recon-workspace label[hidden]{display:none}

.conductor-dot.estimated{fill:#547f97;stroke:#0b4e6b;stroke-dasharray:3 2}
.stop-marker{display:flex;align-items:center;justify-content:center;width:35px;height:29px!important;color:#fff;font-weight:800;font-size:10px;letter-spacing:-.4px;white-space:nowrap;isolation:isolate}
.stop-marker:before{top:1px!important;height:27px!important;width:31px!important;left:1px!important;border-radius:6px 2px 2px 6px;background:#101418;z-index:-1}
.stop-marker:after{top:1px!important;left:31px!important;border-top-width:13px!important;border-bottom-width:14px!important;border-left-width:7px!important;z-index:-1}
.stop-periods{display:flex;flex-wrap:wrap;gap:5px;margin:0 14px 9px 44px}
.service-period{display:inline-block;position:relative;color:#2c4257;vertical-align:middle;z-index:2}
.service-period[open]{z-index:8}
.service-period summary{display:inline-flex;align-items:center;justify-content:center;min-height:25px;min-width:31px;padding:2px 5px;border:1px solid #97a9bd;border-radius:6px;background:#f6f9fc;font-size:11px;font-weight:800;cursor:pointer;list-style:none;line-height:1.15}
.service-period summary::-webkit-details-marker{display:none}
.service-period summary:focus-visible{outline:3px solid #4262c9;outline-offset:2px}
.service-period[data-period="all"] summary{border-color:#9bb9a2;background:#eaf6ed;color:#235331}
.service-period[data-period="night"] summary,.service-period[data-period="weekend_night"] summary{background:#e8edfc;color:#283b82}
.service-period[data-period*="limited"] summary,.service-period[data-period*="peak"] summary{background:#fff2d7;color:#673d09;border-color:#d7ae69}
.service-period span[role="note"]{position:absolute;bottom:calc(100% + 5px);left:0;box-sizing:border-box;width:max-content;max-width:min(310px,calc(100vw - 28px));white-space:normal;overflow-wrap:anywhere;padding:10px;border:1px solid #8497a9;border-radius:8px;background:white;box-shadow:0 4px 15px #18273835;line-height:1.4;font-size:12px;font-weight:400}
.period-legend{margin:12px 0;padding:9px 12px;border:1px solid #c5d4df;border-radius:8px}
.period-legend summary{cursor:pointer;font-weight:700}
.period-legend p{font-size:13px;line-height:1.45}
.period-legend-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:6px;margin:10px 0;font-size:12px}
.period-legend-grid b{display:inline-block;min-width:55px}
.transfer-with-hours{display:inline-flex;align-items:center;gap:3px;margin:2px}
.transfer-with-hours .service-period span[role="note"]{left:auto;right:0}
.exit-map-link{align-items:center;gap:3px}
.schedule-unavailable{font-size:11px;color:#586872}
/* Route bullets and schedule glyphs share one stop marker. The schedule
   drawings are CSS shapes: both the marker and the legend use the catalog. */
.route-stop .stop{grid-template-columns:var(--marker-width,72px) minmax(0,1fr) 23px}
.route-stop .stop-marker{position:absolute;left:0;top:12px;width:var(--marker-width,72px);height:36px!important;display:flex;align-items:center;justify-content:flex-start;gap:3px;padding:3px 9px 3px 5px;isolation:isolate;z-index:3}
.route-stop .stop-marker::before{top:0!important;left:0!important;width:calc(100% - 8px)!important;height:36px!important;border-radius:4px 0 0 4px!important;background:#101418;z-index:-1}
.route-stop .stop-marker::after{top:0!important;left:calc(100% - 8px)!important;border-top:18px solid transparent!important;border-bottom:18px solid transparent!important;border-left:8px solid #101418!important;z-index:-1}
.stop-variant{display:inline-flex;align-items:center;gap:2px;flex:none}
.variant-route{width:21px;height:21px;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;font-weight:800;font-size:12px;line-height:1;flex:none}
.variant-route.express{border-radius:3px;transform:rotate(45deg);width:19px;height:19px;margin:1px}
.variant-route.express>span{transform:rotate(-45deg)}
.route-stop .transfers{margin-left:calc(var(--marker-width,72px) + 7px)}
.period-symbol{width:15px;height:15px;box-sizing:border-box;display:inline-block;position:relative;flex:none;border:1px solid currentColor;border-radius:50%;vertical-align:middle}
.period-symbol--all,.period-symbol--rush{background:currentColor}
.period-symbol--daily::after,.period-symbol--daily_except_rush_peak::after,.period-symbol--weekday_peak::after,.period-symbol--rush_limited::after,.period-symbol--rush_peak_limited::after{content:"";position:absolute;width:4px;height:4px;left:4.5px;top:4.5px;border-radius:50%;background:currentColor}
.period-symbol--night,.period-symbol--weekend_night,.period-symbol--except_weekday_peak{background:linear-gradient(90deg,transparent 50%,currentColor 50%)}
.period-symbol--except_rush_peak,.period-symbol--daily_except_rush_peak{background:linear-gradient(90deg,currentColor 50%,transparent 50%)}
.period-symbol--weekdays,.period-symbol--rush,.period-symbol--rush_limited,.period-symbol--rush_peak,.period-symbol--rush_peak_limited,.period-symbol--rush_reverse,.period-symbol--weekday_peak{border-radius:2px;transform:rotate(45deg) scale(.85)}
.period-symbol--rush_peak,.period-symbol--rush_peak_limited{background:linear-gradient(90deg,currentColor 50%,transparent 50%)}
.period-symbol--rush_reverse{background:linear-gradient(90deg,transparent 50%,currentColor 50%)}
.period-symbol--rush_limited{background:transparent}
.period-symbol--unclassified{border-style:dashed}
.marker-period summary,.header-period summary,.transfer-period summary{width:19px;min-width:19px;height:23px;min-height:23px;padding:2px;border:0;border-radius:0;background:transparent!important;color:inherit!important}
.marker-period{color:#fff;line-height:0}
.marker-period .period-symbol{border:1px solid #fff}
.marker-period span[role="note"]{left:0;max-width:min(310px,calc(100vw - var(--marker-width,72px) - 18px));min-width:min(190px,calc(100vw - var(--marker-width,72px) - 18px));color:#21313e}
.board-station{min-width:0}
.board-availability{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:2px;margin-left:auto;text-align:right;max-width:38%;font-size:12px;color:#111}
.board-availability small{flex:0 0 100%;font-size:11px;line-height:1.25;color:#62707c}
.board-availability .service-period .period-symbol,.transfer-period .period-symbol{border:1px solid #fff;box-shadow:0 0 0 1px #151b20}
.board-availability>.period-symbol{width:19px;height:19px;border:2px solid #101418;color:#101418;box-shadow:none}
.board-availability>.period-symbol::after{left:calc(50% - 2.5px);top:calc(50% - 2.5px);width:5px;height:5px}
.exit-card.schematic-exit{border-left-color:#81929f;background:#f4f7fa}
.exit-card.schematic-exit .exit-index{background:#697e8d}
.transfer-period summary{height:20px;min-height:20px}
.period-legend-grid .legend-entry{display:flex;align-items:center;gap:9px}
.period-legend-grid .period-symbol{color:#101418}
@media(max-width:390px){.board-intro{gap:8px}.board-availability{max-width:40%}.board-availability small{font-size:10px}}
