/* Coherent dashboard layout. Data calculations and persistent chart layers stay unchanged. */
body{background:#f4f6f3;color:#21352e}
body .topbar{height:64px;padding:0 32px;gap:48px;background:#fbfcfa}
body .brand{font-size:19px;letter-spacing:-.6px}
body .topbar nav{height:100%;gap:28px}
body .nav{font-size:12px}
body .quiet{font-size:11px;padding:8px 0;margin-left:auto}
body main{max-width:1560px;padding:24px 32px 0;margin:auto}
body .intro{display:flex;justify-content:space-between;gap:20px;align-items:center;margin:0 0 20px}
body .intro h1{font-size:25px;line-height:1.15;font-weight:500;letter-spacing:-.8px;margin:0 0 6px}
body .intro p{font-size:12px;line-height:1.4;margin:0;color:#728278}
body .data-stamp{font-size:10px;line-height:1.5;max-width:50%;text-align:right}
body .data-stamp #coverage{font-size:9px;margin-top:4px;color:#7c8a80}
body .workspace{border:1px solid #dce4dc;border-radius:10px;background:#fff;box-shadow:0 3px 18px #233c2c04;overflow:hidden}
body .toolbar{display:block;padding:17px 20px;background:#fcfdfa;border-bottom:1px solid #e3e9e2}
.context-controls{display:grid;grid-template-columns:minmax(220px,1.25fr) 105px minmax(160px,.9fr) minmax(210px,1.25fr);gap:16px;align-items:end}
.map-controls{display:grid;grid-template-columns:1.2fr 1fr 1.2fr .8fr;gap:16px;margin-top:14px;align-items:end}
body .control{display:flex;flex-direction:column;align-items:stretch;gap:5px;min-width:0;margin:0;font-size:11px;color:#718176;order:initial}
body .control>span{font-size:10px;font-weight:500;letter-spacing:.15px;line-height:1.2}
body .control select{display:block;width:100%;max-width:none;min-width:0;height:34px;padding:6px 27px 6px 10px;font-size:12px;border:1px solid #dce5dc;border-radius:5px;background-color:#fff;color:#314b3b}
body .control select:disabled{color:#7e8d81;background:#f4f7f2;cursor:default;opacity:1}
body .search{order:initial;align-self:end;display:flex;align-items:center;gap:9px;min-width:0;width:auto;height:34px;margin:0;padding:0 10px;border:1px solid #dce5dc;border-radius:5px;background:#fff}
body .search input{border:0;outline:none;background:transparent;flex:1;min-width:0;width:100%;font-size:12px;height:100%;padding:0}
body .search input::placeholder{color:#8b978d}
body .search button{padding:0 2px;border:0;background:none;font-size:17px}
body .search-results{z-index:15}
body .timeline{padding:15px 20px 13px;background:#fff;border-bottom:1px solid #e3e9e2}
body .time-heading{display:flex;align-items:center;justify-content:space-between;gap:16px}
body .time-heading .snapshot-controls{display:flex;flex-direction:row;align-items:center;gap:17px;flex-wrap:wrap}
body .timeline-actions{display:flex;align-items:center;gap:4px}
body .timeline-actions button{padding:0;width:30px;height:32px;font-size:18px;border-color:#e0e6dd;background:#fff}
body .timeline-actions #play{width:72px;min-width:72px;padding:0 9px;font-size:11px;background:#2e634e;border-color:#2e634e;color:#fff}
body .timeline-actions #play span{margin-left:5px}
.snapshot-picker{display:flex;align-items:center;gap:9px}
.snapshot-picker>span,body .baseline>span{font-size:10px;color:#7b8b7f}
body #month-picker{font:500 17px var(--mono);letter-spacing:-.5px;border:0;background-color:transparent;padding:3px 25px 3px 0;max-width:190px;color:#233e2e}
body .baseline{display:flex;flex-direction:row;align-items:center;gap:9px;font-size:11px;margin:0}
body .baseline select{font-size:11px;padding:6px 24px 6px 8px;max-width:180px;border-color:#e2e8df}
body .timeline #snapshot-context{display:inline;font-size:10px;color:#819184;letter-spacing:0;max-width:270px}
body .timeline #snapshot-context:empty{display:none}
body .slider-wrap{margin-top:10px}
body input[type=range]{margin:6px 0 0;height:3px}
body .year-ticks{padding-top:8px;gap:5px}
body .year-ticks button{font-size:9px;color:#89978b}
.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
body .coverage-strip{display:block;background:#f8faf6;border:0;border-bottom:1px solid #e2e8df;padding:0;color:#687d69;font-family:inherit}
#data-status summary{display:flex;align-items:center;gap:12px;padding:11px 20px 5px;cursor:pointer;list-style:none;font-size:11px;line-height:1.5;user-select:none}
#data-status summary::-webkit-details-marker{display:none}
.coverage-label{font-size:10px;font-weight:600;color:#456b4e;display:flex;align-items:center;gap:7px;white-space:nowrap}
.coverage-label::before{content:'';display:block;height:5px;width:5px;background:#739278;border-radius:50%}
#coverage-summary{font:10px var(--mono);color:#70816e}
.source-toggle{margin-left:auto;white-space:nowrap;font-size:10px;color:#55765a}
.source-toggle>span{display:inline-block;margin-left:5px;transition:transform .15s}
#data-status[open] .source-toggle>span{transform:rotate(180deg)}
#data-status summary:focus-visible{outline:2px solid #84b3a0;outline-offset:-3px}
.source-details{margin:5px 20px 10px;padding:9px 12px;border:1px solid #dfe8da;border-radius:5px;background:#fff;font-size:11px;line-height:1.65;color:#6f806d}
.source-details p{margin:5px 0}
body .source-details #dollar-note{padding:0;border:0;background:none;font:inherit;color:inherit}
body .coverage-strip .source-details button{font-size:11px;padding:6px 0;border:0;background:none;color:#356848}
body .availability-box{padding:0 20px 10px;border:0;background:transparent!important;color:#6f806b;font:10px/1.6 var(--mono)}
body .availability-box p{margin:3px 0;font-weight:400}
body #availability-range{color:#84917c;font-size:9px}
body #availability-current{font:11px/1.5 'DM Sans',sans-serif;color:#7b7355}
body .availability-box[data-incomplete=true] #availability-current{color:#9a6c2e;font-weight:500}
body #dollar-warning{font:11px/1.5 'DM Sans',sans-serif;color:#98652d;padding:4px 0}
body #view-notice{margin:0 20px 10px;padding:7px 0 0;border-top:1px solid #e0e7da;font:10px/1.5 'DM Sans',sans-serif;color:#6b806a}
body .explorer-grid{grid-template-columns:minmax(0,1fr) 310px;border-top:0}
body .map-panel{padding:15px 15px 0}
body .map-meta{margin:0 2px 11px;font-size:11px;line-height:1.5}
body #treemap{height:530px;min-height:430px}
body .map-meta #map-count{font-size:10px}
body .scale-note{padding:9px 2px 0;font-size:9px;line-height:1.6}
body .map-footer{padding:12px 2px 15px;gap:10px}
body .map-footer .map-hint{font-size:9px}
body .detail{padding:20px;background:#fcfdf9}
body .detail-title{margin-top:8px}
body .detail-title h2{font-size:21px;line-height:1.25}
body .primary-metric{margin:22px 0 18px}
body .primary-metric strong{font-size:34px}
body .detail-pair span{font-size:10px;line-height:1.4}
body .detail-pair strong{font-size:14px}
body .detail-date{font-size:10px;line-height:1.6}
body .chart-heading{font:10px 'DM Sans',sans-serif;letter-spacing:0;padding-top:15px;margin-top:18px}
body .chart-heading select{font-size:10px;height:27px;max-width:115px}
body .history-chart{height:115px}
body .history-availability{font:10px/1.5 'DM Sans',sans-serif;margin:6px 0;color:#83907b}
body .line-range{font-size:9px}
body .detail-note{font-size:10px;line-height:1.6;margin-top:16px;padding:10px}
body .detail>a{font-size:11px}
.detail-empty{display:none}
body .detail[data-empty=true]>:not(.detail-empty){display:none!important}
body .detail[data-empty=true]>.detail-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:300px;height:100%;text-align:center;padding:24px 10px}
.detail-empty .empty-cross{display:grid;place-items:center;width:42px;height:42px;border:1px solid #dce7d8;border-radius:50%;color:#8ba581;margin-bottom:17px;font-size:21px}
.detail-empty h2{font-size:16px;line-height:1.4;font-weight:500;margin:0 0 8px;letter-spacing:-.25px;color:#68815f}
.detail-empty p{font-size:12px;line-height:1.7;margin:0;color:#93a089;max-width:210px}
body .section-heading{margin-bottom:18px}
body .section-heading h2{font-size:20px;letter-spacing:-.4px;margin:0 0 7px}
body .section-heading p{font-size:12px;line-height:1.6;margin:0;color:#84917b}
body .section-heading select{font-size:11px}
body footer{padding:17px 0 22px;font-size:9px;color:#899780}
body footer button{font-size:11px}
body .dialog-content p{font-size:12px;line-height:1.75}
@media(min-width:1440px){body #treemap{height:580px}.explorer-grid{grid-template-columns:minmax(0,1fr) 325px}}
@media(max-width:1100px){body .topbar{padding:0 24px;gap:30px}body main{padding:20px 24px 0}.context-controls{grid-template-columns:minmax(190px,1.2fr) 95px minmax(135px,.85fr) minmax(165px,1fr);gap:10px}.map-controls{gap:10px}body .control select{font-size:11px}body .search input{font-size:11px}body .explorer-grid{grid-template-columns:minmax(0,1fr) 265px}body .detail{padding:18px 16px}body .timeline #snapshot-context{display:none}body .map-hint{display:none}}
@media(max-width:850px){.context-controls{grid-template-columns:1.3fr .7fr}.map-controls{grid-template-columns:1fr 1fr;gap:12px}.map-controls{margin-top:14px;padding-top:13px;border-top:1px solid #e6ece2}body .intro h1{font-size:23px}body .data-stamp{max-width:46%}body .time-heading .snapshot-controls{gap:12px}body .baseline{gap:6px}}
@media(max-width:760px){body .topbar{padding:0 16px;gap:24px;height:60px}body .topbar nav{gap:18px}body .brand{font-size:18px}body .nav{font-size:11px}body .quiet{font-size:0}body .quiet span{font-size:15px}body main{padding:17px 13px 0}body .intro{margin:0 0 15px}body .intro h1{font-size:23px;margin-bottom:5px}body .intro p{font-size:11px;max-width:none}body .data-stamp{display:none}body .toolbar{padding:14px}.context-controls{grid-template-columns:1fr 1fr;gap:12px}.map-controls{gap:12px}body .control>span{font-size:10px}body .control select{height:34px;padding-left:8px;font-size:11px}body .search{height:34px;min-width:0;order:initial}body .search input{font-size:11px}body .timeline{padding:13px 14px 12px}body .time-heading{gap:10px;flex-wrap:wrap}body .time-heading .snapshot-controls{flex-direction:row;gap:12px;flex-wrap:nowrap}body .snapshot-picker>span{display:none}body #month-picker{font-size:16px;max-width:160px}body .timeline-actions #play{width:55px;min-width:55px}body .timeline-actions #play span{display:inline;margin-left:3px;font-size:10px}body .timeline-actions button{width:27px;height:31px}body .baseline{flex-direction:row;gap:6px;margin-left:auto}body .baseline>span{font-size:9px}body .baseline select{font-size:10px;max-width:127px}body .year-ticks button{font-size:7px}#data-status summary{padding:10px 14px 4px;gap:8px;align-items:flex-start}.coverage-label{font-size:9px;gap:5px}#coverage-summary{font-size:8px;line-height:1.7}.source-toggle{font-size:9px}.source-toggle>span{margin-left:1px}body .availability-box{padding:0 14px 9px}body #availability-range{font-size:8px}body #availability-current,body #dollar-warning{font-size:10px}.source-details{margin:5px 14px 10px;font-size:10px}body #view-notice{margin:0 14px 10px;font-size:10px}body .explorer-grid{grid-template-columns:1fr}body .map-panel{padding:12px 10px 0}body #treemap{height:495px;min-height:380px}body .map-meta>div{flex-wrap:wrap}body .map-meta #map-count{width:auto;padding-left:0;font-size:9px}body .map-footer{padding:11px 2px 13px}body .scale-note{font-size:8px}body .detail{display:block;padding:20px}body .detail[data-empty=true]{display:none}body .detail-eyebrow{display:flex}body .detail-title{margin-top:10px}body .primary-metric{margin:18px 0}body .detail-pair{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin:12px 0}body .detail-pair.lower{margin:12px 0}body .history-chart{height:145px}body .detail-note{margin:16px 0}body .detail>a{margin-top:15px}body .section-heading h2{font-size:19px}body .section-heading p{font-size:11px}body footer{font-size:8px;gap:12px;padding:16px 0 20px}}
@media(max-width:420px){body .topbar{gap:15px}.topbar nav{gap:12px}body .brand{font-size:16px}body .nav{font-size:10px}body .baseline{width:100%;justify-content:flex-end;margin-top:3px}.source-toggle{font-size:0}.source-toggle>span{font-size:13px}body .timeline-actions #play{width:59px;min-width:59px}}

/* Keep the page heading compact; source metadata has one home in Coverage. */
body .intro{margin-bottom:14px;min-height:28px}body .intro h1{margin:0;font-size:22px}.workspace[aria-busy=true]::before{content:"Loading market history…";display:block;padding:12px 20px;background:#f0f5ed;color:#6c8267;font-size:12px;border-bottom:1px solid #dfe7da}@media(max-width:480px){body .brandmark{display:none}body .topbar{gap:18px}body .intro h1{font-size:21px}}

/* Narrow panels keep every active display setting visible in one disclosure row. */
#display-toggle{display:none}
@media(max-width:850px){#display-toggle{display:flex;align-items:center;gap:10px;width:100%;border:0;border-top:1px solid #e4ebe0;background:transparent;padding:12px 0 0;margin-top:13px;text-align:left;font-size:11px;color:#526f53;border-radius:0}#display-toggle>span:first-child{font-weight:500;white-space:nowrap}#display-summary{font-size:10px;color:#87937e;flex:1;line-height:1.5}.display-chevron{margin-left:auto;font-size:13px;transition:transform .15s}.display-settings:not(.display-collapsed) .display-chevron{transform:rotate(180deg)}.display-settings.display-collapsed .map-controls{display:none!important}.display-settings .map-controls{border-top:0;padding-top:0;margin-top:12px}}
@media(max-width:420px){#display-toggle{gap:8px;font-size:10px}#display-summary{font-size:9px}}

.monthly-shortcut{border:0;background:none;color:#3b7350;padding:5px 0;font:11px "DM Sans",sans-serif;text-align:left}.industry-members{display:block;width:100%;padding:10px;margin-top:14px;border:1px solid #d7e3cf;border-radius:5px;background:#eff5e9;color:#4b7242;font-size:11px;text-align:left}.industry-members:hover{background:#e5eedc}.ratio-coverage{display:block;font:9px var(--mono);color:#819478;margin-top:5px;line-height:1.5}

/* Put the visualization first, then its timeline and controls. */
body main{padding-top:16px}
body .workspace{display:grid;grid-template-columns:minmax(0,1fr) 310px;grid-template-areas:"map detail" "timeline detail" "controls controls" "heading heading" "coverage coverage"}
#map-view{grid-area:map;min-width:0}
body .map-panel{height:100%}
body .timeline{grid-area:timeline;border-top:1px solid #e3e9e2}
body .toolbar{grid-area:controls}
body .intro{grid-area:heading;margin:0;padding:13px 20px 0;min-height:0}
body .intro h1{font-size:17px;letter-spacing:-.35px}
body .topbar{height:64px;padding:0 32px;gap:48px;border-bottom:1px solid #dce4dc;background:#fbfcfa}
body .coverage-strip{grid-area:coverage;border-top:1px solid #e3e9e2}
body .detail{grid-area:detail;border-left:1px solid #e3e9e2}
.workspace[aria-busy=true]::before{grid-column:1/-1;grid-row:1;z-index:2;align-self:start}
@media(min-width:1440px){body .workspace{grid-template-columns:minmax(0,1fr) 325px}}
@media(max-width:1100px){body .workspace{grid-template-columns:minmax(0,1fr) 265px}}
@media(max-width:760px){body main{padding-top:12px}body .workspace{grid-template-columns:minmax(0,1fr);grid-template-areas:"map" "timeline" "controls" "heading" "coverage" "detail"}body .detail{border-left:0;border-top:1px solid #e3e9e2}body .intro{padding:12px 14px 0}body .intro h1{font-size:16px}body .topbar{padding:0 16px;height:60px;gap:24px}}

@media(min-width:761px) and (max-width:1100px){body .topbar{padding:0 24px;gap:30px}}
@media(max-width:480px){body .topbar{gap:18px}}

/* Five display controls, including optional company-name labels. */
body .map-controls{grid-template-columns:1.2fr 1fr 1.2fr .9fr 1fr}
.tile.company-names .tile-name{font-family:"DM Sans",sans-serif;font-weight:600}
@media(max-width:850px){body .map-controls{grid-template-columns:1fr 1fr}}

/* Portfolio project status. */
.project-status{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:9px 32px;background:#f8f6ef;border-bottom:1px solid #e5e1d3;color:#72603a;font:11px "DM Sans",sans-serif}
.project-status a{color:#5b6d60;text-decoration:none}.project-status a:hover{text-decoration:underline}
.project-status>span{padding:3px 8px;border:1px solid #ddd0aa;border-radius:999px;background:#f4eddb;font-weight:600;white-space:nowrap}
@media(max-width:760px){.project-status{padding:8px 16px;font-size:10px}}

/* Explicit notice for the one missing US CPI month. */
body .snapshot-warning{display:inline-block;padding:4px 7px;border:1px solid #e5d5ab;border-radius:4px;background:#fbf4e2;color:#89652c;font:10px/1.4 "DM Sans",sans-serif;max-width:215px}
@media(max-width:760px){body .time-heading .snapshot-controls{flex-wrap:wrap}body .snapshot-warning{font-size:9px}}

/* Focus on the map and timeline; keep the current dataset and display settings. */
.map-actions{display:flex;align-items:center;gap:14px;flex-shrink:0}
#map-area-label{font:8px var(--mono);letter-spacing:1px;color:#8ea496}
#fullscreen-toggle{display:flex;align-items:center;gap:6px;padding:6px 8px;border:1px solid #496056;background:transparent;color:#d8e5dc;font:10px "DM Sans",sans-serif;white-space:nowrap}
#fullscreen-toggle:hover{background:#2b4036}
body.fullscreen-active{overflow:hidden}
body.fullscreen-active>.topbar,body.fullscreen-active>.project-status,body.fullscreen-active footer{display:none}
body .workspace.is-fullscreen{position:fixed;inset:0;z-index:100;width:100%;height:100vh;height:100dvh;margin:0;border:0;border-radius:0;display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr) auto;grid-template-areas:"map" "timeline";background:#152420}
body .workspace.is-fullscreen>:not(#map-view):not(.timeline):not(#tooltip):not(#other-dialog){display:none!important}
body .workspace.is-fullscreen #map-view,body .workspace.is-fullscreen .map-panel{min-height:0;overflow:hidden}
body .workspace.is-fullscreen #treemap{height:100%;min-height:0;flex:1}
body .workspace.is-fullscreen .timeline{padding-bottom:max(13px,env(safe-area-inset-bottom));border-bottom:0}
body .workspace.is-fullscreen .baseline,body .workspace.is-fullscreen .map-hint{display:none}
body .workspace.is-fullscreen .map-meta{flex-shrink:0}
body .workspace.is-fullscreen #tooltip{z-index:110}
@media(max-width:760px){.map-actions{gap:6px}#map-area-label{display:none}#fullscreen-toggle{padding:6px}body .workspace.is-fullscreen .map-meta{margin-bottom:5px}body .workspace.is-fullscreen .map-footer{padding:7px 2px}body .workspace.is-fullscreen .scale-note{padding-top:5px}body .workspace.is-fullscreen .timeline #snapshot-context{display:none}}

/* Sector disks are the primary cap areas; company slices remain interactive. */
body .map-controls{grid-template-columns:1fr 1.15fr 1fr 1.15fr .85fr 1.2fr}
.sector-rim{fill:none;stroke:#8da491;stroke-width:1;pointer-events:none}
.sector-label-primary{fill:#cfdfd1;font-family:"DM Sans",sans-serif;font-weight:600;letter-spacing:.55px;cursor:pointer}
.sector-cap-label{fill:#8ca68f;font:9px "IBM Plex Mono",monospace;pointer-events:none}
.company-slice>path{stroke:#152420;stroke-width:.8px;cursor:pointer}
.company-slice text{pointer-events:none}
.company-slice:hover>path,.company-slice:focus>path{stroke:#f4f5dc;stroke-width:1.8px}
.company-slice.is-selected>path{stroke:#f4f5dc;stroke-width:2px}
@media(max-width:1100px){body .map-controls{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:850px){body .map-controls{grid-template-columns:1fr 1fr}}

#legend .other-stop{margin-left:6px;width:37px;background:repeating-linear-gradient(135deg,#46564d,#46564d 4px,#6b7d70 4px,#6b7d70 5px);color:#f3f7ef}
.other-slice .tile-name{font-family:"DM Sans",sans-serif;font-weight:600}
#other-members td:nth-child(2){font:10px var(--mono);color:#6b7a60;text-align:center}
#other-members td:first-child{width:58%}
#other-members th:first-child{width:58%}

#show-nominal{margin-top:18px;background:#dce9db;color:#234833;border-color:#b2c9b1;font-size:12px;padding:10px 15px}#show-nominal:hover{background:#c9ddc9}

/* Separate country baskets use one cap-to-area scale, including on narrow screens. */
#treemap.comparing{overflow-x:auto;overflow-y:hidden;scrollbar-color:#77917f #20392e;scrollbar-width:thin}
.comparison-country text{text-anchor:middle;pointer-events:none;fill:#edf1e7;font-family:"DM Sans",sans-serif}
.comparison-country .country-name{font-size:11px;font-weight:700;letter-spacing:.7px;fill:#ccdbcb}
.comparison-country .country-cap{font-size:20px;font-weight:600}
.comparison-country .country-index,.comparison-country .country-ratio{font:10px "IBM Plex Mono",monospace;fill:#9fb39e}
.comparison-country .country-coverage{font:9px "IBM Plex Mono",monospace;fill:#b5c4ae}
.comparison-country .country-empty{font-size:10px;fill:#b8c7b5}
.country-outline{fill:none;stroke:#a0b29b;stroke-opacity:.45;stroke-width:1;stroke-dasharray:3 4;pointer-events:none}
.compare-tile rect,.compare-slice path{stroke:#172c21;stroke-width:.7px;cursor:pointer}
.compare-tile text,.compare-slice text{font-weight:600}
.compare-tile:hover rect,.compare-slice:hover path,.compare-tile:focus rect,.compare-slice:focus path,.compare-tile.is-selected rect,.compare-slice.is-selected path{stroke:#fcffdd;stroke-width:2px}
.compare-tile.is-dimmed,.compare-slice.is-dimmed{opacity:.18}
.comparison-country .country-name[role=button]{cursor:pointer;pointer-events:auto}
.comparison-country .country-name[role=button]:hover,.comparison-country .country-name[role=button]:focus{text-decoration:underline;fill:#fff}
.comparison-country .compare-value{font:10px "IBM Plex Mono",monospace;fill:#e0e8d8}
.comparison-nominal{cursor:pointer}.comparison-nominal rect{fill:#d9e6d5;stroke:#aec6a4}.comparison-nominal text{fill:#244735;text-anchor:middle;font:12px "DM Sans",sans-serif;pointer-events:none}
