/* Reuse the original portal type, control, colour and spacing tokens. */
body[data-analysis]{overflow-y:auto!important;overflow-x:clip!important;height:auto;min-height:100dvh}
body[data-analysis] #inspectionBar,body[data-analysis] #exploreWorkspace,body[data-analysis] .touchPaneBar,body[data-analysis] #floatingAnalysis,body[data-analysis] #searchResults{display:none!important}
#analysisWorkspace{margin:0 0 0 var(--rail-width,64px);padding:var(--space-4,16px) clamp(16px,2vw,32px) 48px;min-height:calc(100dvh - var(--portal-top-height,72px));font:var(--text-body,14px)/1.65 var(--ui-font);color:var(--text)}
#analysisWorkspace h2,#analysisWorkspace h3{margin:0 0 var(--space-3,12px)}#analysisWorkspace p{margin:0 0 var(--space-3,12px)}#analysisWorkspace small{display:block}
.analysisPageHeading{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--space-4);margin-bottom:var(--space-4)}.analysisPageHeading p{color:var(--muted)}.analysisSimulation{display:inline-block;white-space:nowrap;color:var(--muted);font-size:var(--text-secondary);margin:0 0 0 var(--space-3)}
.analysisControls{display:flex;flex-wrap:wrap;gap:var(--space-3);align-items:flex-end;margin:0 0 var(--space-4)}.analysisControls label{flex:1;min-width:160px;max-width:460px;font-size:var(--text-secondary)}.analysisControls select,.analysisControls input{margin-top:5px;width:100%;background:var(--surface)}.analysisControls>button{flex:none}.journeyControls label{max-width:none}
.analysisCard{min-width:0;background:var(--surface);border:1px solid var(--divider,var(--border));padding:var(--space-4)}.analysisSectionHeading{display:flex;gap:var(--space-3);align-items:flex-start;justify-content:space-between;margin-bottom:var(--space-3)}.analysisSectionHeading button{flex:none}.analysisSectionHeading h2,.analysisSectionHeading h3{margin:0!important}
.analysisNote{font-size:var(--text-secondary);color:var(--muted);line-height:1.65}.analysisCard .metricGrid{grid-template-columns:repeat(2,minmax(0,1fr));margin:16px 0;gap:var(--space-3)}.analysisCard .metricCard{min-width:0}.analysisCard .metricCard b{overflow-wrap:anywhere}.analysisCard .metricCard p{margin-top:8px;margin-bottom:0}
.journeyLayout{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(360px,.8fr);gap:var(--space-4);align-items:start}.schematicPanel{padding:var(--space-3);position:sticky;top:calc(var(--portal-top-height,72px) + 12px)}.schematicToolbar{display:flex;gap:var(--space-2);align-items:center;flex-wrap:wrap;margin-bottom:var(--space-3)}.schematicToolbar>span{flex:1}.schematicToolbar button.active{background:var(--selection);color:var(--text);border-color:var(--section-accent)}
#schematicHost{width:100%;height:clamp(480px,70vh,790px);overflow:hidden;position:relative;border:1px solid var(--divider);background:var(--surface)}.transitSchematic{display:block;width:100%;height:100%;touch-action:none;user-select:none;cursor:grab}.transitSchematic:active{cursor:grabbing}.schematicStation{cursor:pointer;outline:none}.schematicStation .stationDot{fill:var(--surface);stroke:var(--text);stroke-width:1.5}.schematicStation[data-endpoint=from] .stationDot{fill:var(--selection);stroke:var(--section-accent);stroke-width:3}.schematicStation[data-endpoint=to] .stationDot{fill:var(--text);stroke:var(--surface);stroke-width:3}.schematicStation:focus-visible .stationDot{stroke:var(--section-accent)}.schematicLabel{font-family:var(--ui-font);font-size:var(--text-secondary,13px);fill:var(--text);font-weight:500}.schematicLabelGroup{cursor:pointer}.schematicLabelGroup rect{fill:var(--surface);opacity:.94}.schematicLegend{display:flex;gap:var(--space-2);flex-wrap:wrap}.schematicPanel .analysisNote{margin:var(--space-2) 0}.schematicPanel .analysisNote>span{margin-left:8px}
.journeyOptions{border:1px solid var(--divider);margin:16px 0}.journeyOptions>div+div{border-top:1px solid var(--divider)}.journeyOptions .issueRowButton{color:var(--text)}.journeyTimeParts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-3);margin:var(--space-3) 0}.journeyTimeParts>div{border-top:1px solid var(--divider);padding-top:var(--space-2)}.journeyTimeParts span{display:block;color:var(--muted);font-size:var(--text-secondary)}.journeyTimeParts b{font-variant-numeric:tabular-nums}.journeyLegs{padding-left:24px}.journeyLegs li{margin:0 0 var(--space-3);padding-bottom:var(--space-3);border-bottom:1px solid var(--divider)}.journeyLegs b{display:block;margin:6px 0}.analysisCard details{border-top:1px solid var(--divider);margin-top:var(--space-3)}#analysisWorkspace summary{cursor:pointer;padding:var(--space-3) 0;font-weight:500;color:var(--text);font-size:var(--text-body)}
.analysisTableScroll{overflow-x:auto;max-width:100%;border:1px solid var(--divider);touch-action:auto;overscroll-behavior-x:contain;margin:var(--space-3) 0}.analysisTableScroll table{border-collapse:collapse;width:100%;font-size:var(--text-body);background:var(--surface)}.analysisTableScroll th,.analysisTableScroll td{padding:var(--space-3);border-bottom:1px solid var(--divider);text-align:left;vertical-align:middle}.analysisTableScroll thead th{font-size:var(--text-secondary);color:var(--muted);font-weight:500;background:var(--raised)}.analysisTableScroll td{white-space:nowrap;font-variant-numeric:tabular-nums}.analysisTableScroll th small{font-size:var(--text-secondary);color:var(--muted)}
.analysisConclusion{border-left:3px solid var(--section-accent);background:var(--selection);padding:var(--space-3) var(--space-4);margin:var(--space-4) 0}.analysisConclusion p:last-child{margin-bottom:0}.supplyComparison,.stationNeeds{margin:var(--space-4) 0}.supplyComparison>div,.stationNeeds>div{display:grid;grid-template-columns:80px minmax(20px,1fr) 140px;gap:var(--space-3);align-items:center;padding:var(--space-2) 0;border-bottom:1px solid var(--divider)}.supplyComparison i,.stationNeeds i{height:10px;background:var(--section-accent);display:block;max-width:100%}.supplyComparison b,.stationNeeds b{text-align:right;font-variant-numeric:tabular-nums}.supplyComparison>div+div i{background:var(--muted)}
.stationLayout{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(360px,.8fr);gap:var(--space-4);align-items:start}.platformTargets article{padding:var(--space-3) 0;border-bottom:1px solid var(--divider)}.platformTargets article:first-child{padding-top:0}.platformTargets .metricGrid{grid-template-columns:1fr}.platformTargets>article>button{max-width:100%}.analysisMethods{border-top:1px solid var(--divider);margin-top:var(--space-4)}.analysisMethodBody{max-width:1100px}.analysisDownloads{display:flex;gap:var(--space-4);flex-wrap:wrap}.analysisDownloads a{display:inline-flex;align-items:center;min-height:var(--control-height)}
@media(min-width:1101px){body.unifiedLayout[data-workspace=design] .navigator{width:38%;flex:0 0 38%;min-width:320px;max-width:560px}body.unifiedLayout[data-workspace=design] .workspace{width:62%;flex:1;min-width:0}}
@media(max-width:1100px){#analysisWorkspace{margin-left:0}.journeyLayout,.stationLayout{grid-template-columns:1fr}.schematicPanel{position:static}#schematicHost{height:620px}#portalHeader .workspaceTabs{overflow-x:auto;flex-wrap:nowrap}}
body.touchLayout #analysisWorkspace{margin-left:0}body.touchLayout #portalHeader .workspaceTabs{overflow-x:auto;flex-wrap:nowrap}
@media(max-width:650px){#analysisWorkspace{padding:var(--space-3);padding-bottom:36px}.analysisControls label{min-width:130px;max-width:none}.journeyControls label{flex-basis:calc(100% - 80px)}.journeyLayout{gap:var(--space-3)}.analysisCard{padding:var(--space-3)}.analysisPageHeading{gap:var(--space-2)}.analysisPageHeading .analysisSimulation{margin:0}.schematicToolbar{gap:4px}.schematicToolbar>span{display:none}#schematicHost{height:470px}.analysisTableScroll table{min-width:580px}.supplyComparison>div,.stationNeeds>div{grid-template-columns:65px minmax(20px,1fr) 110px;gap:var(--space-2)}.analysisSectionHeading{flex-wrap:wrap}}
@media print{#analysisWorkspace{margin:0}.schematicToolbar,.analysisControls{display:none}.journeyLayout,.stationLayout{display:block}.schematicPanel{position:static}.analysisCard{break-inside:avoid}}

.schematicStation .stationHit{fill:transparent;stroke:none}.journeySummary{display:none}.remainingPlatforms{margin-top:var(--space-3)}
@media(max-width:1100px){.journeySummary:has(b){display:grid;grid-template-columns:1fr auto;gap:4px var(--space-3);border-left:3px solid var(--section-accent);background:var(--selection);padding:var(--space-3);margin-bottom:var(--space-3)}.journeySummary b{font-size:var(--text-body)}.journeySummary span{grid-column:1;font-size:var(--text-secondary);color:var(--muted)}.journeySummary button{grid-column:2;grid-row:1/3}#journeyResults{scroll-margin-top:100px}}

body[data-theme=dark] .schematicLines [data-line=M]{stroke:var(--text)}

@media(min-width:1101px){body.touchLayout #portalHeader{height:auto;min-height:0;margin-left:0}body.touchLayout #portalHeader .portalHeading{min-width:0}}

/* Endpoint emphasis stays in collision-managed labels, separate from 36px hit areas. */
.schematicLabelGroup[data-endpoint=from] rect,.schematicLabelGroup[data-endpoint=to] rect{fill:var(--selection);stroke:var(--section-accent);stroke-width:1}

/* Station summary gets the narrow side; targets get the wider side. */
.stationLayout{grid-template-columns:minmax(360px,.8fr) minmax(0,1.2fr)}
.stationSummary>.metricGrid{grid-template-columns:1fr}
.stationNeeds>div{grid-template-columns:90px minmax(20px,1fr) 150px;gap:var(--space-2)}
.stationNeeds .spaceReference{border-bottom:1px dashed var(--divider);margin-bottom:var(--space-2)}
.estimateTrack{height:16px;position:relative;background:var(--raised);border:1px dashed var(--muted)}
.stationNeeds .estimateRange{height:100%;position:absolute;display:block;background:var(--evidence,var(--raised));border:1px dashed var(--muted)}
.stationNeeds .estimateUnknown{width:100%;height:100%;background:var(--raised)}
.spaceReference b{color:var(--muted);font-size:var(--text-secondary)}
@media(max-width:1100px){.stationLayout{grid-template-columns:1fr}}
@media(max-width:650px){.stationNeeds>div{grid-template-columns:80px minmax(12px,1fr) 125px}.stationNeeds b{font-size:var(--text-secondary)}}

/* Original artwork remains white and keeps its source colors in either app theme. */
.userDesignedMap{background:#fff}.userMapLabel{cursor:pointer;outline:none}.userMapLabel:focus-visible rect{stroke:#00799e;stroke-width:.4}.originalMapInfo{position:absolute;left:12px;right:12px;bottom:12px;background:var(--surface);border:1px solid var(--divider);padding:var(--space-3);box-shadow:0 4px 18px #0002;z-index:2;display:flex;gap:var(--space-2);flex-wrap:wrap;max-height:60%;overflow:auto}.originalMapInfo p{width:100%;margin:0}.originalMapInfo button{max-width:100%;white-space:normal}.originalMapNotice{border-left:3px solid var(--section-accent);padding-left:var(--space-3)}

#schematicHost.userMapViewport{height:auto;aspect-ratio:534/356;min-height:330px;max-height:740px}
