:root{font-family:'Noto Sans KR',sans-serif;color:#20332a;background:#f4f6f2;font-synthesis:none;--green:#287452;--muted:#78857c;--line:#e1e7e0;--orange:#d77c50;--shadow:0 8px 26px #1d34220a}*{box-sizing:border-box}body{margin:0}.wrap{max-width:1600px;margin:auto;padding:28px 30px 34px}.page-head{display:flex;align-items:end;justify-content:space-between;margin-bottom:19px}.eyebrow{font:500 10px 'DM Mono';letter-spacing:.15em;color:#71877a}h1{font-size:26px;letter-spacing:-.06em;margin:6px 0 4px}.page-head p,.card-head p{font-size:11px;color:var(--muted);margin:0}.period{padding:10px 13px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--muted);font-size:11px}.period b{color:#314b3b;margin-left:8px}.kpis{display:grid;grid-template-columns:1.25fr .8fr 1fr;gap:13px;margin-bottom:14px}.card{background:#fff;border:1px solid var(--line);border-radius:11px;box-shadow:var(--shadow);min-width:0}.kpi{padding:15px 17px;min-height:135px}.section-title{font-size:14px;font-weight:800;letter-spacing:-.03em}.section-title small{font-size:10px;color:var(--muted);font-weight:400;margin-left:6px}.metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:13px}.metrics>div{border-left:2px solid #e3eee6;padding-left:10px;min-width:0}.metrics span{display:block;color:var(--muted);font-size:10px}.metrics b{display:block;color:var(--green);font:700 19px 'DM Mono';margin-top:4px;white-space:nowrap}.metrics b.muted{color:#a0aaa2;font:600 13px 'Noto Sans KR'}.metrics.stacked{grid-template-columns:1fr 1fr}.metrics.stacked b{font-size:17px}.year-table{display:flex;gap:6px;margin-top:11px;overflow:auto}.year-cell{background:#f7f9f6;border-radius:5px;padding:5px 8px;min-width:62px;font:10px 'DM Mono';color:#54645a}.year-cell b{display:block;color:#2f694b;margin-top:3px}.note{font-size:9px;color:var(--muted);margin:8px 0 0}.zone-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin-top:10px}.zone{background:#f6f8f5;border-radius:6px;padding:6px 8px}.zone span{display:block;color:var(--muted);font-size:9px}.zone b{font:600 12px 'DM Mono';color:var(--green)}.content-grid{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(390px,.78fr);gap:14px;align-items:start}.left-stack,.right-stack{display:grid;gap:14px;min-width:0}.map-card{overflow:hidden}.card-head{padding:14px 16px 11px;display:flex;align-items:center;justify-content:space-between;gap:10px}.card-head h2{font-size:14px;margin:0 0 4px;letter-spacing:-.03em}.map-controls{display:flex;align-items:center;gap:9px}.map-types{display:flex;background:#f0f4ef;padding:3px;border-radius:7px}.map-types button{border:0;background:transparent;color:#65746a;padding:7px 12px;border-radius:5px;font:700 10px 'Noto Sans KR';cursor:pointer}.map-types button.active{background:#fff;color:var(--green);box-shadow:0 1px 4px #15271916}.map-types button:disabled{opacity:.38;cursor:not-allowed}.map-types.small button{padding:5px 9px}.map-controls select,.card-head select,.map-filter select{border:1px solid var(--line);background:#fff;border-radius:6px;padding:7px 9px;color:#405247;font:10px 'Noto Sans KR'}.map-filter{display:flex;align-items:center;gap:9px;border-top:1px solid #f0f2ee;padding:8px 15px;color:var(--muted);font-size:10px}.map-filter label{display:flex;align-items:center;gap:5px}.map-filter select{padding:5px 7px;min-width:105px}#map{height:505px;background:#eef2ec}.leaflet-container{font-family:'Noto Sans KR',sans-serif}.leaflet-popup-content{font-size:12px;line-height:1.7}.legend{position:relative;margin:-66px 14px 10px 52px;z-index:500;pointer-events:none;background:#ffffffed;border:1px solid #e3e8e1;border-radius:7px;width:185px;padding:9px 11px;font-size:9px;color:#536258}.legend-scale{height:7px;border-radius:8px;margin:7px 0 4px;background:linear-gradient(90deg,#d8ebd8,#afd0a8,#ead687,#e7a36c,#c86e58)}.legend-ticks{display:flex;justify-content:space-between}.caption{padding:9px 14px;border-top:1px solid var(--line);font-size:9px;color:var(--muted);line-height:1.6}.bar-card{padding-bottom:10px}.bars{padding:0 16px 12px;display:grid;gap:7px}.bar-row{display:grid;grid-template-columns:26px minmax(68px,110px) 1fr 68px;align-items:center;gap:8px;font-size:10px}.bar-rank{color:#94a097;font:10px 'DM Mono'}.bar-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bar-track{height:9px;background:#eef2ed;border-radius:8px;overflow:hidden}.bar-fill{height:100%;background:linear-gradient(90deg,#92bea0,#347a57);border-radius:8px}.bar-value{text-align:right;color:#34483a;font:10px 'DM Mono'}.select-label{display:flex;align-items:center;gap:5px;font-size:9px;color:var(--muted);white-space:nowrap}.chart-legend{display:flex;gap:10px 14px;flex-wrap:wrap;padding:0 15px;color:#647168;font-size:9px}.chart-legend span{display:flex;align-items:center;gap:5px}.dot{width:8px;height:8px;border-radius:50%}.green{background:var(--green)}.orange{background:var(--orange)}.dash{width:13px;border-top:2px dashed}.trend-chart{height:204px;padding:5px 10px 0}.trend-chart svg{width:100%;height:100%;overflow:visible}.trend-chart .grid{stroke:#e8ede8}.trend-chart text{font:9px 'DM Mono';fill:#859087}.trend-chart .line{fill:none;stroke-width:2.2}.table-scroll{overflow-x:auto;padding:3px 12px 12px}.trend-table{border-collapse:collapse;width:100%;font-size:9px;white-space:nowrap}.trend-table th,.trend-table td{text-align:right;padding:6px 4px;border-bottom:1px solid #eff2ee;color:#5b685f}.trend-table th:first-child,.trend-table td:first-child{text-align:left}.trend-table th{font-weight:500;color:#88938b}.trend-table .series-label{font-weight:700;color:#31483a}.summary-bars{padding:0 15px 13px;display:grid;gap:8px}.summary-row{display:grid;grid-template-columns:68px 1fr 58px;gap:8px;align-items:center;font-size:10px}.summary-row span:first-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.summary-row b{text-align:right;font:10px 'DM Mono';font-weight:500}.summary-track{height:6px;background:#edf1ed;border-radius:8px}.summary-track i{height:100%;display:block;background:#55946b;border-radius:8px}.footnote{display:grid;gap:5px;margin-top:14px;padding:12px 14px;border:1px solid #e7e9df;border-radius:8px;background:#fbfcf9;color:#758078;font-size:9px;line-height:1.6}.footnote b{font-size:10px;color:#536257}.footnote a{color:#45725a}@media(max-width:1050px){.content-grid{grid-template-columns:minmax(0,1fr) minmax(330px,.75fr)}.kpis{grid-template-columns:1fr 1fr}.wide{grid-column:1/-1}}@media(max-width:760px){.wrap{padding:20px 12px}.page-head{align-items:start;gap:10px;flex-direction:column}h1{font-size:23px}.kpis{grid-template-columns:1fr}.wide{grid-column:auto}.kpi{min-height:0}.content-grid{grid-template-columns:1fr}.right-stack{grid-row:auto}.map-controls{gap:5px}.map-types button{padding:6px 8px}.card-head{padding:12px}.map-filter{flex-wrap:wrap}#map{height:420px}.legend{margin-top:-62px}.trend-chart{height:190px}.zone-grid{grid-template-columns:repeat(3,1fr)}}

.legend{width:290px}.legend-bins{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:5px;margin-top:8px}.legend-bin{min-width:0;text-align:center;color:#536258;font:8px 'DM Mono';line-height:1.3}.legend-bin i{display:block;height:9px;border-radius:3px;margin-bottom:4px}

/* Five-year report layout */
.kpis{grid-template-columns:minmax(0,1.02fr) minmax(0,.72fr) minmax(0,1.35fr);gap:12px;align-items:stretch}.kpi{min-height:245px;padding:16px 18px}.section-title{font-size:15px}.section-title small{display:inline-block;font-size:10px}.metrics{margin-top:15px}.metrics span{font-size:12px}.metrics b{font-size:27px}.metrics b.muted{font-size:16px}.annual-table-wrap,.ratio-table{margin-top:15px;overflow-x:auto}.annual-table{border-collapse:collapse;width:100%;font-size:10px;white-space:nowrap}.annual-table th,.annual-table td{padding:7px 5px;text-align:right;border-bottom:1px solid #e9eee8}.annual-table th{font-weight:600;color:#52635a}.annual-table td{color:#287452;font-family:'DM Mono',monospace}.annual-table th:first-child{text-align:left}.ratio-unavailable{font-size:28px;font-weight:800;color:#a0aaa2;margin-top:22px}.ratio-card .note{font-size:11px;margin-top:5px}.ratio-card .ratio-table{margin-top:36px}.living-table-wrap{display:grid;grid-template-columns:minmax(90px,.36fr) minmax(0,1.64fr);gap:10px;align-items:center;margin-top:14px}.living-map-key{display:grid;gap:9px;font-size:9px;color:#6c796f}.living-map-key span{white-space:nowrap}.living-map-key i{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:5px}.living-table{border-collapse:collapse;width:100%;font-size:9px;white-space:nowrap}.living-table th,.living-table td{padding:7px 4px;text-align:right;border-bottom:1px solid #e9eee8}.living-table thead th{font:9px 'DM Mono';color:#76837a}.living-table th:first-child{text-align:left}.living-table tbody th{font-weight:600}.living-table tbody th i{display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:5px}.living-table td{font:9px 'DM Mono';color:#287452}.map-card{overflow:hidden}#map{height:590px;min-height:590px}.legend{width:340px;margin-top:-76px}.legend-bin{font-size:8px}.trend-card .trend-chart{height:260px}.trend-table{font-size:10px}.data-card{margin-top:0}
@media(max-width:1050px){.kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.living-card{grid-column:1/-1}.kpi{min-height:225px}}
@media(max-width:760px){.kpis{grid-template-columns:1fr}.living-card{grid-column:auto}.kpi{min-height:0}.metrics b{font-size:22px}.living-table-wrap{grid-template-columns:1fr}.living-map-key{grid-template-columns:repeat(3,1fr);gap:5px}.living-table{font-size:8px}.living-table th,.living-table td{padding:6px 2px}#map{height:490px;min-height:490px}.legend{width:min(340px,calc(100% - 70px));margin-top:-76px}.trend-card .trend-chart{height:210px}}
.living-table-wrap{grid-template-columns:minmax(125px,.48fr) minmax(0,1.52fr);gap:12px}.living-map-column{min-width:0}#livingMap{display:block;width:100%;height:160px}.living-map-column path{stroke:none}.living-scale{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:5px;margin-top:3px;color:#68766c;font-size:8px}.living-scale i{height:7px;border-radius:5px;background:linear-gradient(90deg,#d8edc5,#9dcb82,#f2d45a,#ee9a45,#d24f3e)}
@media(max-width:1050px){.living-table-wrap{grid-template-columns:minmax(145px,.5fr) minmax(0,1.5fr)}}
@media(max-width:760px){.living-table-wrap{grid-template-columns:minmax(115px,.6fr) minmax(0,1.4fr)}#livingMap{height:130px}.living-table th,.living-table td{font-size:7px}}
.content-grid{grid-template-columns:minmax(0,1.72fr) minmax(390px,.78fr)}h1{font-size:31px;letter-spacing:-.065em}
@media(max-width:1050px){.content-grid{grid-template-columns:minmax(0,1fr) minmax(330px,.75fr)}}
@media(max-width:760px){.content-grid{grid-template-columns:1fr}h1{font-size:24px}}

/* Reference palette, compact KPI row, and neutral surroundings */
.kpis{grid-template-columns:minmax(0,.92fr) minmax(0,1.58fr)}
.cumulative-card .metrics{grid-template-columns:repeat(2,minmax(0,1fr))}
#map .leaflet-tile-pane{filter:grayscale(1) saturate(.12)}
.dong-map-label,.district-map-label{background:transparent;border:0;white-space:nowrap;text-align:center;pointer-events:none}
.dong-map-label span{display:none;color:#263b30;font:600 8px/1.1 'Noto Sans KR',sans-serif;text-shadow:0 1px 2px #fff,1px 0 2px #fff,-1px 0 2px #fff;transform:translate(-50%,-50%)}
#map.show-dong-labels .dong-map-label span{display:block}
#map.zoomed-dong-labels .dong-map-label span{font-size:7px;font-weight:500}
.district-map-label span{display:block;color:#fff;font:800 14px/1.2 'Noto Sans KR',sans-serif;letter-spacing:-.04em;text-shadow:0 1px 2px #26352c,1px 0 3px #26352c,-1px 0 3px #26352c,0 0 5px #26352c;transform:translate(-50%,-50%)}
.trend-chart .axis-jeonse{fill:#287452}
.trend-chart .axis-monthly{fill:#d77c50}
.trend-chart .axis-caption{font-size:9px;font-weight:600}
.living-table td.zone-change{font-weight:700;color:#1f6548}
.bar-card{overflow:hidden;padding-bottom:8px}
.bar-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:15px 18px 8px}
.bar-card-head h2{font-size:15px;margin:0 0 4px;letter-spacing:-.03em}
.bar-card-head p{font-size:10px;color:var(--muted);margin:0}
.bar-head-tools{display:flex;align-items:center;gap:12px;color:var(--green);font-size:10px;font-weight:700;white-space:nowrap}
.bar-head-tools select,.bar-filter select{border:1px solid var(--line);background:#fff;border-radius:6px;padding:7px 10px;color:#405247;font:11px 'Noto Sans KR'}
.bar-filter{display:flex;gap:9px;padding:3px 18px 12px;border-bottom:1px solid #e9eee8}
.bar-filter label{display:flex;align-items:center;gap:6px;color:var(--muted);font-size:10px}
.bar-filter select{min-width:116px}
.bars{display:grid;grid-template-columns:36px minmax(0,1fr);gap:4px;height:330px;padding:14px 17px 12px;overflow:hidden}
.bar-y-axis{display:flex;flex-direction:column;justify-content:space-between;align-items:flex-end;padding:0 4px 58px 0;color:#77847a;font:10px 'DM Mono',monospace}
.bars{position:relative}
.bar-y-axis small{position:absolute;left:1px;top:44%;margin:0;writing-mode:vertical-rl;transform:rotate(180deg);font:9px 'Noto Sans KR';color:#758178}
.bar-columns{display:flex;align-items:stretch;gap:8px;min-width:0;overflow-x:auto;overflow-y:hidden;padding:0 2px 5px;scrollbar-width:thin}
.bar-column{flex:1 0 48px;max-width:88px;min-width:48px;display:flex;flex-direction:column;align-items:center;text-align:center;color:#46594d}
.bar-plot{position:relative;display:flex;align-items:flex-end;justify-content:center;width:100%;height:245px;border-bottom:1px solid #dfe6df;background:repeating-linear-gradient(to top,transparent 0 calc(25% - 1px),#e8ede8 calc(25% - 1px) 25%)}
.bar-plot .bar-fill{width:58%;height:var(--bar-height);min-height:2px;background:#b8d5b9;border-radius:2px 2px 0 0;transition:height .2s,background .2s}
.bar-column:nth-child(-n+5) .bar-fill{background:#d8dfa8}
.bar-plot .bar-value{position:absolute;bottom:calc(var(--bar-height) + 4px);color:#293b30;font:700 11px 'DM Mono',monospace;white-space:nowrap}
.bar-name{width:100%;height:34px;padding-top:5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#20382b;font-size:10px;font-weight:700}
.bar-column>small{color:#87938a;font:9px 'DM Mono',monospace}
.bar-column.selected .bar-fill{background:#a8d0ac;outline:2px solid #285c41;outline-offset:0}
.bar-column.selected .bar-name{color:#176443}
.chart-legend .dot{width:14px;height:0;border-radius:0;background:transparent!important}
.chart-legend span:nth-child(1) .dot{border-top:2px solid #287452}
.chart-legend span:nth-child(2) .dot{border-top:2px dashed #287452}
.chart-legend span:nth-child(3) .dash{border-top:2px solid #d77c50;background:transparent}
.chart-legend span:nth-child(4) .dash{border-top:2px dashed #d77c50;background:transparent}
.trend-chart .axis-jeonse,.trend-chart .axis-monthly{fill:#738078}
.map-controls .legend{position:static;z-index:auto;pointer-events:auto;width:min(300px,30vw);flex:0 1 300px;margin:0;padding:0;border:0;border-radius:0;background:transparent;color:#536258;font-size:9px}
.map-controls .legend-bins{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:4px;margin-top:5px}
@media(max-width:1050px){.map-controls .legend{width:min(280px,27vw);flex-basis:260px}}
@media(max-width:760px){.map-card>.card-head{align-items:flex-start;flex-direction:column}.map-controls{display:grid;width:100%;grid-template-columns:minmax(0,1fr) auto auto;align-items:center}.map-controls .legend{width:auto;flex-basis:auto}.map-controls .legend-title{white-space:normal}}
@media(max-width:760px){.bar-card-head{padding:12px;align-items:flex-start}.bar-head-tools{gap:6px;font-size:9px}.bar-filter{padding:4px 12px 10px;flex-wrap:wrap}.bar-filter select{min-width:100px}.bars{height:300px;padding:12px}.bar-plot{height:218px}.bar-column{flex-basis:54px}}
.content-grid{align-items:stretch}
.right-stack{grid-template-rows:minmax(0,1.2fr) minmax(0,1fr);height:100%;min-height:0}
.right-stack>.card{min-height:0}
.trend-card{display:flex;flex-direction:column;overflow:hidden}
.trend-card .trend-chart{height:auto;min-height:120px;flex:1 1 auto}
.trend-card .table-scroll{flex:0 0 auto;max-height:145px;overflow:auto}
.bar-card{display:flex;flex-direction:column;min-height:0}
.bar-card .bars{height:auto;min-height:170px;flex:1 1 auto}
@media(max-width:760px){.content-grid{align-items:start}.right-stack{height:auto!important;grid-template-rows:auto;min-height:0}.trend-card .trend-chart{height:210px;min-height:210px;flex:none}.bar-card .bars{height:300px;min-height:300px;flex:none}}
.living-table-wrap{grid-template-columns:minmax(150px,.58fr) minmax(0,1.42fr)}
#livingMap{height:180px}
@media(max-width:760px){.living-table-wrap{grid-template-columns:minmax(130px,.62fr) minmax(0,1.38fr)}#livingMap{height:145px}}
.living-scale i{background:linear-gradient(90deg,#b8d8b7,#c8d991,#e8d47e,#e6a171,#c87560)}
@media(max-width:1050px){.kpis{grid-template-columns:minmax(0,.9fr) minmax(0,1.4fr)}}
@media(max-width:760px){.kpis{grid-template-columns:1fr}}
