@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Sans+Thai:wght@400;500;600;700&family=Manrope:wght@500;600;700;800&display=swap');
.suggestions{position:absolute;z-index:20;top:42px;left:0;right:0;max-height:310px;overflow:auto;background:#fff;border:1px solid #cad2ca;border-radius:10px;box-shadow:0 14px 30px #16271f22;padding:5px}.suggestions button{width:100%;min-height:42px;border:0;background:transparent;border-radius:7px;padding:7px 9px;display:flex;align-items:center;justify-content:space-between;gap:12px;text-align:left;color:var(--ink);font:500 13px 'IBM Plex Sans Thai',sans-serif;cursor:pointer}.suggestions button:hover,.suggestions button.active{background:#e8f5ef;color:#087754}.suggestions button span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.suggestions button small{color:#7b8982;font:600 10px Manrope;white-space:nowrap}.suggestions mark{background:#c9f54a;color:inherit;border-radius:2px;padding:0 1px}
.filters .search-box .suggestions{display:block;background:#fff;color:#12251f}.filters .search-box .suggestions[hidden]{display:none}.filters .search-box .suggestions button{display:flex;width:100%;height:auto;min-height:42px;margin:0;padding:8px 10px;border:0;background:#fff;color:#12251f;text-align:left;justify-content:flex-start;white-space:normal}.filters .search-box .suggestions button:hover,.filters .search-box .suggestions button.active{background:#e2f3eb;color:#075f45}.filters .search-box .suggestions button span{position:static;display:block;left:auto;top:auto;transform:none;width:100%;color:inherit;line-height:1.45;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;pointer-events:auto}.filters .search-box .suggestions mark{background:#c9f54a;color:#12251f}
.chart-actions{display:flex;align-items:center;gap:8px}.chart-actions button{border:1px solid #cad2ca;background:#fff;color:#24473a;border-radius:20px;padding:5px 9px;font:600 11px 'IBM Plex Sans Thai',sans-serif;cursor:pointer}.bar-chart{overflow-x:auto}.bar-chart .bar-item{border:0;background:transparent;padding:0;font:inherit;color:inherit}.bar-chart .bar-item.clickable{cursor:pointer}.bar-chart .bar-item.clickable:hover .bar{filter:brightness(.88);transform:translateY(-3px)}.bar-chart .bar-item:disabled{opacity:1}.bar-chart .bar{display:block;transition:filter .15s,transform .15s}.bar-chart.district-chart .bar-item{flex:0 0 76px}
.trend-empty{margin-top:18px;min-height:180px;border:1px dashed #cbd4cc;border-radius:10px;background:#f7f9f6;color:#718078;display:grid;place-items:center;text-align:center;padding:24px}.trend-empty[hidden]{display:none}
.upload-nav{display:block;margin-top:16px;padding:10px 12px;border:1px solid #355045;border-radius:8px;color:#dff6eb;text-decoration:none;text-align:center;font-size:12px;font-weight:600}.upload-nav:hover{background:#203a30}.upload-page{background:#f4f2eb}.upload-main{margin:0 auto;max-width:1120px;padding:36px 24px}.back-link{color:#087754;text-decoration:none;font-weight:600}.upload-grid{display:grid;grid-template-columns:1.5fr 1fr;gap:14px}.upload-card form{display:grid;gap:18px}.upload-card label{display:grid;gap:6px;color:#4f6058;font-size:12px;font-weight:600}.upload-card input{width:100%;height:44px;border:1px solid #cad2ca;border-radius:8px;background:#fff;padding:8px 10px;font:500 13px 'IBM Plex Sans Thai',sans-serif}.upload-card input[type=file]{height:auto}.upload-warning{background:#fff7dc;border:1px solid #f1d77b;border-radius:8px;padding:11px;color:#725d18;font-size:12px}.upload-submit{height:44px;border:0;border-radius:8px;background:#087754;color:white;font:700 14px 'IBM Plex Sans Thai',sans-serif;cursor:pointer}.upload-submit:hover{background:#056548}.requirements{margin:14px 0 0;padding-left:20px;color:#66756f;font-size:13px;line-height:2}.notice{padding:13px 15px;border-radius:9px;margin-bottom:14px;font-size:13px}.notice.success{background:#def5e9;border:1px solid #a9ddc2;color:#086340}.notice.failure{background:#fde9e6;border:1px solid #f4c6c1;color:#9c3029}@media(max-width:700px){.upload-grid{grid-template-columns:1fr}.upload-main{padding:22px 15px}}
.province-tabs{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:18px}.province-tabs a{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:13px 14px;background:#fff;border:1px solid var(--line);border-radius:10px;color:var(--ink);text-decoration:none}.province-tabs a:hover{border-color:#8bcdb5}.province-tabs a.active{background:var(--nav);border-color:var(--nav);color:#fff}.province-tabs span{font-weight:700}.province-tabs small{color:#7d8d86;font-size:10px}.province-tabs a.active small{color:#adbbb5}.province-heading{display:flex;justify-content:space-between;align-items:end;margin:12px 2px}.province-heading span{font-size:11px;color:var(--muted)}.province-heading h2{font-size:25px}.data-date{padding-bottom:4px}.district-bars{display:grid;gap:10px;margin-top:20px}.district-bar-row{display:grid;grid-template-columns:145px minmax(150px,1fr) 62px;align-items:center;gap:12px;font-size:12px}.district-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}.district-track{position:relative;height:12px;background:#edf0eb;border-radius:20px;overflow:visible}.district-fill{display:block;height:100%;background:var(--green);border-radius:20px;min-width:2px}.district-fill.over{background:var(--red)}.target-line{position:absolute;top:-4px;bottom:-4px;border-left:1px dashed #087754}.district-bar-row>b{text-align:right;font:700 12px Manrope}.province-main td:first-child{text-align:left}.province-main table{min-width:850px}@media(max-width:800px){.province-tabs{grid-template-columns:repeat(2,1fr)}.district-bar-row{grid-template-columns:105px minmax(110px,1fr) 55px}}@media(max-width:480px){.province-tabs{grid-template-columns:1fr}.province-heading{display:block}.data-date{display:block;margin-top:5px}}
.district-selector{display:grid;grid-template-columns:110px minmax(0,1fr);gap:12px;align-items:start;margin:-4px 0 18px;padding:14px;background:#e9ede7;border:1px solid #d9dfd8;border-radius:12px}.selector-label{padding:6px 2px}.selector-label span,.selector-label small{display:block}.selector-label span{font-weight:700;font-size:13px}.selector-label small{color:var(--muted);font-size:10px;margin-top:2px}.district-tabs{display:flex;gap:7px;overflow-x:auto;padding-bottom:3px}.district-tabs a{display:flex;align-items:center;gap:7px;flex:0 0 auto;padding:7px 10px;background:#fff;border:1px solid #cad2ca;border-radius:20px;color:var(--ink);text-decoration:none;font-size:11px;font-weight:600}.district-tabs a:hover{border-color:#7fc9af}.district-tabs a.active{background:var(--nav);border-color:var(--nav);color:#fff}.district-tabs small{color:#819087;font:600 9px Manrope}.district-tabs a.active small{color:#b8c9c1}@media(max-width:600px){.district-selector{grid-template-columns:1fr}.selector-label{display:flex;justify-content:space-between}}
.organization-table{max-height:620px;overflow:auto}.organization-table thead{position:sticky;top:0;z-index:2;background:#fff}.organization-table tbody tr:hover{background:#f4f8f5}
.export-actions{display:flex;justify-content:flex-end;gap:8px;margin:-2px 0 12px}.export-actions a{display:inline-flex;align-items:center;padding:8px 12px;border-radius:8px;background:#087754;color:#fff;text-decoration:none;font-size:12px;font-weight:700}.export-actions a:hover{background:#056548}.province-main tfoot{position:sticky;bottom:0;background:#dff2e8}.province-main tfoot td{font-weight:700;border-top:2px solid #84bca5}.province-main tfoot td:first-child{color:#075f45}@media(max-width:560px){.export-actions{justify-content:stretch}.export-actions a{flex:1;justify-content:center}}
.export-button{display:inline-flex;align-items:center;margin-left:auto;padding:8px 12px;border-radius:8px;background:#087754;color:#fff;text-decoration:none;font-size:12px;font-weight:700;white-space:nowrap}.export-button:hover{background:#056548}
.panel table tfoot{background:#dff2e8}.panel table tfoot td{font-weight:700;border-top:2px solid #84bca5;color:#173f31}.panel table tfoot td:first-child{text-align:left;color:#075f45}
.district-dropdown{align-items:center}.district-dropdown select{width:100%;height:42px;border:1px solid #bdc9c0;border-radius:8px;background:#fff;color:var(--ink);padding:0 12px;font:500 13px 'IBM Plex Sans Thai',sans-serif;cursor:pointer}.district-dropdown select:focus{outline:2px solid #8fd8bd;outline-offset:1px}.district-dropdown noscript button{height:38px;border:0;border-radius:7px;background:var(--green);color:#fff;padding:0 14px}
.filters input{height:36px;border:1px solid #cad2ca;border-radius:8px;background:white;padding:0 10px;font:500 13px inherit;color:var(--ink)}.organization-search{flex:1}.search-box{position:relative}.search-box>span{position:absolute;left:11px;top:50%;transform:translateY(-52%);font:700 18px Manrope;color:#819087;pointer-events:none}.filters .search-box input{width:100%;padding-left:34px}.filters input::-webkit-search-cancel-button{cursor:pointer}
:root{--ink:#12251f;--muted:#66756f;--paper:#f4f2eb;--card:#fff;--green:#00a878;--lime:#c9f54a;--red:#ec5b4f;--yellow:#f2c94c;--line:#dde2dc;--nav:#13271f}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:'IBM Plex Sans Thai',sans-serif}.sidebar{position:fixed;inset:0 auto 0 0;width:244px;background:var(--nav);color:white;padding:32px 24px;display:flex;flex-direction:column;z-index:4}.brand{display:flex;align-items:center;gap:12px}.brand-mark{display:grid;place-items:center;width:42px;height:42px;background:var(--lime);color:var(--nav);border-radius:12px;font:800 24px Manrope}.brand strong{font:800 20px Manrope;display:block}.brand small{font:600 8px Manrope;letter-spacing:1.4px;color:#afc2b9}.sidebar nav{margin-top:68px;display:grid;gap:8px}.sidebar nav a{color:#9db1a8;text-decoration:none;padding:12px;border-radius:9px;font-weight:600;font-size:14px}.sidebar nav a.active,.sidebar nav a:hover{background:#203a30;color:white}.source{margin-top:auto;border-top:1px solid #294238;padding-top:18px;display:flex;gap:10px;align-items:center}.source b,.source small{display:block}.source b{font:700 10px Manrope;letter-spacing:1px}.source small{color:#8ca198;font-size:11px}.pulse{width:8px;height:8px;background:#55df95;border-radius:50%;box-shadow:0 0 0 5px #55df9522}main{margin-left:244px;padding:34px 42px 24px;max-width:1600px}header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:24px}.eyebrow{font:700 10px Manrope;letter-spacing:2px;color:var(--green);margin:0 0 8px}h1{font-size:32px;line-height:1.2;margin:0}h2{font-size:19px;margin:2px 0 0}.subtitle,.panel-head p{color:var(--muted);margin:5px 0 0;font-size:13px}.asof{text-align:right;padding:10px 0}.asof span{display:block;color:var(--muted);font-size:12px}.asof strong{font-size:14px}.filters{display:flex;gap:12px;align-items:end;background:#e9ede7;border:1px solid #d9dfd8;padding:12px 14px;border-radius:12px;margin-bottom:16px}.filters label{font-size:11px;font-weight:600;color:var(--muted);display:grid;gap:4px;min-width:190px}.filters select,.filters button{height:36px;border:1px solid #cad2ca;border-radius:8px;background:white;padding:0 10px;font:500 13px inherit;color:var(--ink)}.filters button{margin-left:auto;cursor:pointer}.kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.kpi{background:var(--card);border:1px solid var(--line);border-top:4px solid var(--green);border-radius:13px;padding:19px 20px}.kpi.dark{background:var(--nav);color:white;border-color:var(--nav)}.kpi.danger{border-top-color:var(--red)}.kpi.accent{border-top-color:var(--lime)}.kpi span,.kpi small{display:block;color:var(--muted);font-size:12px}.kpi.dark span,.kpi.dark small{color:#aac0b6}.kpi strong{display:block;font:800 31px Manrope;margin:7px 0 2px}.grid{display:grid;gap:14px}.hero-grid{grid-template-columns:minmax(0,2fr) minmax(280px,1fr);margin-top:14px}.panel{background:var(--card);border:1px solid var(--line);border-radius:13px;padding:20px}.wide{margin-top:14px}.panel-head{display:flex;justify-content:space-between;align-items:flex-start}.panel-head>div:first-child{display:flex;flex-wrap:wrap;column-gap:10px}.panel-head p{width:100%;padding-left:39px}.section-no{font:800 10px Manrope;color:var(--green);letter-spacing:1px;margin-top:7px}.legend-target{font-size:11px;color:var(--green);background:#e3f7ef;padding:5px 8px;border-radius:20px}.bar-chart{height:300px;display:flex;align-items:flex-end;gap:16px;padding:30px 10px 0;border-bottom:1px solid var(--line);position:relative}.bar-chart:before{content:'4%';position:absolute;left:0;right:0;bottom:40%;border-top:1px dashed var(--green);color:var(--green);font:700 10px Manrope}.bar-item{height:100%;flex:1;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;min-width:70px}.bar-value{font:700 13px Manrope;margin-bottom:5px}.bar{width:min(52px,70%);background:var(--green);border-radius:7px 7px 0 0;min-height:2px;position:relative}.bar.over{background:var(--red)}.bar-label{text-align:center;font-size:12px;height:39px;padding-top:8px}.target-card{text-align:center}.target-card .section-no{display:block;text-align:left}.gauge{--p:0deg;width:174px;aspect-ratio:1;border-radius:50%;margin:4px auto 15px;background:conic-gradient(var(--red) var(--p),#edf0eb 0);position:relative;display:grid;place-items:center}.gauge:after{content:'';position:absolute;inset:18px;background:white;border-radius:50%}.gauge>div{position:relative;z-index:1}.gauge strong,.gauge small{display:block}.gauge strong{font:800 29px Manrope}.gauge small{font-size:11px;color:var(--muted)}.target-card>p{font-size:13px;color:var(--muted);min-height:40px}.mini-row{display:grid;grid-template-columns:1fr 1fr;border-top:1px solid var(--line);padding-top:15px;gap:10px}.mini-row div+div{border-left:1px solid var(--line)}.mini-row span,.mini-row b{display:block}.mini-row span{font-size:10px;color:var(--muted)}.mini-row b{font:700 16px Manrope;margin-top:3px}.line-chart{width:100%;height:auto;margin-top:18px;overflow:visible}.trend-legend{display:flex;gap:16px;font-size:11px}.trend-legend span:before{content:'';display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:5px}.y67:before{background:#90a09a}.y68:before{background:#f2c94c}.y69:before{background:#00a878}.gridline{stroke:#e5e9e3;stroke-width:1}.axis-label{fill:#7d8984;font:11px 'IBM Plex Sans Thai'}.trend-line{fill:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round}.dot{stroke:white;stroke-width:2}.table-wrap{overflow:auto;margin-top:15px}table{width:100%;border-collapse:collapse;font-size:13px}th{text-align:left;color:var(--muted);font-size:11px;font-weight:600;border-bottom:1px solid var(--line);padding:10px}td{border-bottom:1px solid #edf0ec;padding:11px 10px}td:not(:first-child),th:not(:first-child){text-align:right}.badge{display:inline-block;border-radius:20px;padding:4px 8px;font-size:10px;font-weight:700;background:#e4f6ef;color:#087754}.badge.over{background:#fde9e6;color:#bd3f35}.error{background:#fde9e6;color:#9c3029;border:1px solid #f4c6c1;padding:12px;border-radius:9px;margin-bottom:14px}.skeleton{opacity:.55}footer{display:flex;justify-content:space-between;color:#89968f;font-size:10px;padding:25px 2px 0}@media(max-width:1000px){.sidebar{position:relative;width:auto;height:auto;padding:18px 22px}.sidebar nav{display:none}.source{display:none}main{margin:0;padding:25px 20px}.kpis{grid-template-columns:repeat(2,1fr)}.hero-grid{grid-template-columns:1fr}}@media(max-width:600px){header{display:block}.asof{text-align:left}.filters{align-items:stretch;flex-direction:column}.filters label{min-width:0}.filters button{margin:0}.kpis{grid-template-columns:1fr}.bar-chart{overflow-x:auto;justify-content:flex-start}.bar-item{flex:0 0 75px}.panel{padding:15px}h1{font-size:25px}}
