.visualPage{padding:16px 0 32px}.visualPage>h2{font-family:var(--font-interface);font-weight:400;font-size:clamp(1.5rem,3vw,2.3rem);line-height:1.3}.visualLead{color:var(--text-muted);line-height:1.7;max-width:800px}.visualShortcuts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;margin:25px 0}.visualShortcut{display:flex;flex-direction:column;gap:9px;padding:24px;border:1px solid var(--border);background:var(--surface);border-radius:var(--radius-medium);text-decoration:none;color:var(--text)}.visualShortcut:hover{border-color:var(--action)}.visualShortcut span{color:var(--text-muted);font-size:.9rem}.visualDecision{padding:24px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-medium);display:grid;gap:15px}.visualDecision label,.visualRisk label{display:grid;gap:8px}.visualDecision select,.visualDecision textarea,.visualRisk select,.visualRisk textarea{font:inherit;padding:12px;border:1px solid var(--border-strong);border-radius:var(--radius-small);background:var(--surface);color:var(--text);width:100%}.visualButtons{display:flex;gap:12px;flex-wrap:wrap}.visualMatch{display:flex;align-items:center;gap:30px}.visualRing{background:conic-gradient(var(--score-color) 0 var(--score),var(--surface-subtle) var(--score) 100%);width:136px;height:136px;border-radius:50%;display:grid;place-items:center;flex-shrink:0}.visualRing>div{width:112px;height:112px;background:var(--surface);border-radius:50%;display:flex;flex-direction:column;align-items:center;justify-content:center}.visualRing strong{font-size:2.7rem}.visualRing span{font-size:1.05rem}.visualCriteria{display:grid;grid-template-columns:repeat(3,1fr);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-medium);margin:24px 0}.visualCriteria>div{padding:20px;border-right:1px solid var(--border)}.visualCriteria strong{display:block;font-size:1.8rem}.visualCriteria span{color:var(--text-muted)}.visualRisk{padding:20px 0;border-top:1px solid var(--border)}.visualRisk form{display:grid;gap:14px;margin-bottom:15px}.visualTimelines{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;margin-top:20px}.visualTimelines.isCombined{grid-template-columns:1fr}.visualTimeline{list-style:none;margin:25px 0;padding:0 0 0 23px;border-left:2px solid var(--border)}.visualTimeline li{position:relative;padding:0 0 25px}.visualTimeline li:before{content:'';position:absolute;left:-31px;top:5px;width:13px;height:13px;border:2px solid var(--border-strong);background:var(--surface);border-radius:50%}.visualTimeline li.isToday:before{background:var(--action);border-color:var(--action)}.visualTimeline li.isInternal:before{border-radius:2px;background:var(--warning-bg);border-color:var(--warning)}.visualTimeline time{display:block;color:var(--text-muted);font-size:.85rem;margin-bottom:7px}.visualTimeline summary{cursor:pointer;font-weight:600}.visualTimeline p{font-size:.9rem;color:var(--text-muted)}.visualTimeline small{display:block}.visualCombine{display:flex;gap:12px;align-items:center}.geoMapFrame{position:relative}.geoMapFrame .projectMap{height:560px!important}.geoMapLegend{position:absolute;right:15px;bottom:20px;max-width:260px;max-height:250px;overflow:auto;z-index:450;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-medium);padding:15px;box-shadow:0 8px 25px #232B3114}.leaflet-control-layers{border:1px solid var(--border)!important;border-radius:var(--radius-medium)!important;box-shadow:0 8px 25px #232B3114!important;font-family:var(--font-interface);padding:12px!important;max-width:280px}.leaflet-control-layers label{padding:7px;background:var(--bg);border:1px solid var(--border-soft);border-radius:var(--radius-small);margin:5px 0}.leaflet-popup-content{font-family:var(--font-interface)}@media(max-width:720px){.visualShortcuts,.visualTimelines{grid-template-columns:1fr}.visualMatch{flex-direction:column;align-items:flex-start}.visualCriteria>div{padding:12px}.visualCriteria span{font-size:.8rem}.geoMapFrame .projectMap{height:440px!important}.geoMapLegend{max-width:190px;max-height:150px;font-size:.75rem}.leaflet-control-layers{max-width:210px;max-height:220px;overflow:auto}}

.visualValueMeter{width:100%;height:24px;accent-color:var(--action)}.visualUserNote{white-space:pre-wrap;overflow-wrap:anywhere}.geoMapLegend[hidden]{display:none}

/* Shared source-bound analysis summaries: text labels remain readable without colour. */
.analysisVisualGallery{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,340px),1fr));gap:20px;margin:24px 0}.analysisDataVisual{min-width:0;margin:0;align-self:start}.analysisDataVisual h3{margin-top:0}.analysisBarChart{margin:20px 0}.analysisBarChart figcaption{font-size:.85rem;color:var(--text-muted);margin-bottom:16px}.analysisBarChart ol{list-style:none;padding:0;margin:0;display:grid;gap:15px}.analysisBarLabel{display:flex;justify-content:space-between;align-items:start;gap:16px;font-size:.9rem;margin-bottom:7px}.analysisBarLabel span{overflow-wrap:anywhere}.analysisBarLabel strong{flex-shrink:0;font-variant-numeric:tabular-nums}.analysisBarTrack{height:10px;border:1px solid var(--border-strong);border-radius:3px;background:var(--surface-subtle);overflow:hidden}.analysisBarTrack>svg{display:block;width:100%;height:100%}.analysisBarTrack rect{fill:var(--action)}.analysisVisualNotice{font-size:.85rem;line-height:1.6;color:var(--text-muted);border-left:3px solid var(--action);padding-left:12px}.analysisVisualData summary{min-height:44px;cursor:pointer;font-weight:600;display:list-item;padding:10px 0}.analysisVisualData summary:focus-visible,.analysisVisualTableScroll:focus-visible{outline:3px solid var(--vjt-focus);outline-offset:3px}.analysisVisualTableScroll{max-width:100%;overflow:auto}.analysisVisualTableScroll table{width:100%;min-width:480px}.analysisVisualTableScroll caption{text-align:left;font-size:.8rem;color:var(--text-muted);padding:10px 0}.analysisVisualTableScroll th,.analysisVisualTableScroll td{overflow-wrap:anywhere;vertical-align:top}.analysisVisualTableScroll td:last-child{font-size:.82rem}@media print{.analysisVisualGallery{display:block}.analysisDataVisual{break-inside:avoid;margin-bottom:20px}.analysisBarTrack rect{print-color-adjust:exact}.analysisVisualTableScroll{overflow:visible}.analysisVisualTableScroll table{min-width:0}}
