/* Approved compact dashboard and administration layouts. */
:root{--status-done:#16a36b;--status-doing:#e99008;--status-wait:#ef6464;--status-miss:#db2777;--status-none:#dcecff}
.summary-kpis.kpi-six-soft .kpi-body{display:grid!important;grid-template-columns:minmax(0,1fr) 58px!important;gap:10px 8px;height:100%!important;box-sizing:border-box}
.summary-kpis.kpi-six-soft .kpi-title{grid-column:1/-1!important;grid-row:1!important;padding:0!important;min-height:58px!important;margin:0!important;width:100%!important}
.summary-kpis.kpi-six-soft .kpi-card .kpi-body .kpi-original-icon{position:static!important;display:block!important;grid-column:2!important;grid-row:2!important;width:54px!important;height:54px!important;object-fit:contain;align-self:center!important;justify-self:end!important;margin:0!important;transform:none!important}
.summary-kpis.kpi-six-soft .kpi-metric{grid-column:1;grid-row:2;align-self:center;margin:0!important;min-height:54px;display:flex;align-items:baseline;flex-wrap:wrap;gap:6px}
.summary-kpis.kpi-six-soft .kpi-bar{grid-column:1/-1;grid-row:3;margin:0!important}.summary-kpis.kpi-six-soft .kpi-status-meta{grid-column:1/-1;grid-row:4}
.province-split{grid-template-columns:minmax(0,62fr) minmax(0,38fr)!important;gap:18px}.province-map-pane{grid-column:1;grid-row:1;padding:10px;justify-content:flex-start}.province-split .province-compact-list{grid-column:2;grid-row:1;height:620px;max-height:620px!important}#mapSvg{max-height:590px;width:100%;aspect-ratio:1;min-height:280px}#realCambodiaMap{flex:1;display:flex;align-items:center;justify-content:center;min-height:280px}.map-loading{position:absolute;inset:45% 10px auto}.map-loading[hidden],.map-retry[hidden]{display:none!important}.map-retry{position:absolute;top:57%;left:50%;transform:translateX(-50%);border:1px solid #bdd2e8;border-radius:9px;padding:9px 14px;background:white;color:#174b80;cursor:pointer}
#mapSvg .geo-province.none{fill:var(--status-none)!important}#mapSvg .geo-province.targeted{fill:var(--status-wait)!important}#mapSvg .geo-province.done{fill:var(--status-done)!important}#mapSvg .geo-province.doing{fill:var(--status-doing)!important}#mapSvg .geo-province.wait{fill:var(--status-wait)!important}#mapSvg .geo-province:focus,#mapSvg .geo-province:hover,#mapSvg .geo-province.map-highlight{stroke:#216cc2!important;stroke-width:2.5!important}.map-miss-marker{fill:var(--status-miss);stroke:white;stroke-width:2;pointer-events:none}.map-legend{margin-top:8px;font-size:11px}.map-legend .done,.chip-dot.done{background:var(--status-done)!important}.map-legend .doing,.chip-dot.doing{background:var(--status-doing)!important}.map-legend .wait,.chip-dot.wait{background:var(--status-wait)!important}.map-legend .miss,.chip-dot.miss{background:var(--status-miss)!important}.map-legend .none{background:var(--status-none)!important}
#provinceStatusGrid .province-compact-row{grid-template-columns:26px minmax(60px,1fr) 50px 46px!important;gap:7px!important;min-height:80px!important}#provinceStatusGrid .province-compact-progress{grid-column:2;grid-row:2}#provinceStatusGrid .province-compact-count{grid-column:3;grid-row:2}#provinceStatusGrid .province-compact-rate{grid-column:4;grid-row:2}#provinceStatusGrid .province-badges{grid-column:2/-1;grid-row:3}#provinceStatusGrid .province-compact-name{grid-column:2/-1}.province-status-badge.done{color:#087448!important;background:#e5f7ee!important}.province-status-badge.doing{color:#925600!important;background:#fff2dc!important}.province-status-badge.wait{color:#ba3838!important;background:#fff0ef!important}.province-status-badge.miss{color:#be185d!important;background:#fff0f7!important}#provinceStatusGrid .doing .province-compact-progress i{background:var(--status-doing)!important}#provinceStatusGrid .done .province-compact-progress i{background:var(--status-done)!important}
#mapTip{inset:auto;width:260px;max-width:calc(100% - 16px);box-sizing:border-box;padding:14px;background:#fff;border:1px solid #dce6f0;border-radius:12px;box-shadow:0 8px 30px #15344b26;color:#173451;gap:8px!important;font-size:12px;pointer-events:none}#mapTip[hidden]{display:none!important}#mapTip .tip-head{display:flex;align-items:center;justify-content:space-between;gap:8px}#mapTip .tip-head b{font-size:16px}.tip-status{font-size:10px;padding:4px 7px;border-radius:12px;white-space:nowrap}.tip-status.done{background:#e5f7ee;color:#087448}.tip-status.doing{background:#fff2dc;color:#925600}.tip-status.wait{background:#fff0ef;color:#ba3838}.tip-status.none{background:#eef4fa;color:#52677e}.tip-row{display:flex;justify-content:space-between;align-items:center;padding:7px 0;border-bottom:1px solid #edf1f6}.tip-row span{display:flex;align-items:center;gap:7px}.tip-row i{width:7px;height:7px;border-radius:50%;background:currentColor}.tip-row strong{font-size:18px}.tip-row.done{color:var(--status-done)}.tip-row.doing{color:#b96c00}.tip-row.wait{color:#d84242}.tip-row.miss{color:var(--status-miss)}.tip-foot{display:flex;justify-content:space-between;font-size:11px;padding-top:3px}.tip-foot b{font-size:13px!important}.tip-track{height:5px;background:#edf2f7;border-radius:4px;overflow:hidden}.tip-track i{display:block;height:100%;background:var(--status-done)}#mapTip>small{font-size:10px;color:#536a81}
.access-chart-head{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:18px}.access-chart-head h2{display:flex;align-items:center;gap:9px;font-size:21px;margin:0}.access-chart-head h2 img{width:30px;height:30px;object-fit:contain}.access-chart-head p,.access-chart-note{font-size:12px;color:#62778b;margin:6px 0}.access-chart-totals{display:flex;gap:10px}.access-chart-totals article{display:flex;align-items:center;gap:9px;border:1px solid #e0e9f2;border-radius:10px;padding:10px 14px;background:#f8fbff}.access-chart-totals img{width:32px;height:32px;object-fit:contain}.access-chart-totals small{display:block;font-size:11px;color:#536c85}.access-chart-totals b{font-size:24px;color:#174b80}.access-chart-body{display:grid;grid-template-columns:minmax(0,3fr) minmax(180px,1fr);border:1px solid #e2eaf3;border-radius:12px;padding:18px;gap:24px}.access-horizontal-bars{display:grid;gap:20px;align-content:center}.access-bar-row{--metric:#0ea568;display:grid;grid-template-columns:minmax(155px,1fr) minmax(80px,2fr) 55px 55px;gap:12px;align-items:center}.access-bar-row.metric-expiring{--metric:#e99008}.access-bar-row.metric-expired{--metric:#d52d45}.access-bar-label{font-size:13px;color:#173451}.access-bar-label small{display:block;font-size:11px;color:#65788b}.metric-track{height:10px;border-radius:6px;background:#e8eef4;overflow:hidden}.metric-track i{display:block;height:100%;background:var(--metric,#db2777);border-radius:inherit}.metric-fraction{font-size:12px;white-space:nowrap;text-align:right}.access-bar-row>strong{color:var(--metric);font-size:16px;text-align:right}.access-missed{border-left:1px solid #e0e8f1;padding-left:22px;--metric:#db2777}.access-missed h3{margin:0;font-size:14px}.access-missed h3 small{display:block;font-size:11px;color:#61758b}.missed-count{display:flex;align-items:center;gap:12px;margin:8px 0}.missed-count img{width:40px;height:40px;object-fit:contain}.missed-count b{font-size:32px;color:#db2777}.access-missed p{font-size:12px;color:#536b84;margin:5px 0 12px}.missed-progress{display:flex;align-items:center;gap:10px;color:#db2777;font-size:13px}.missed-progress .metric-track{flex:1}.access-chart-note{margin-top:12px}
/* Delete and restore share compact, high-contrast geometry. */
dialog.compact-decision{width:420px!important;max-width:calc(100vw - 28px)!important;max-height:calc(100dvh - 28px);padding:22px!important;border:1px solid #e1e7ef!important;border-radius:16px!important;background:#fff!important;color:#20384f!important;text-align:left!important;box-sizing:border-box;overflow:auto}dialog.compact-decision h2{font-size:18px!important;line-height:1.65!important;color:#173451!important;margin:0 22px 10px 46px!important}dialog.compact-decision p{font-size:13px!important;color:#40586d!important;line-height:1.8!important;margin:10px 0!important}dialog.compact-decision .decision-icon{float:left;width:34px;height:34px;background:#d32f2f;mask:url('assets/recycle-source.png') center/contain no-repeat;-webkit-mask:url('assets/recycle-source.png') center/contain no-repeat}dialog.compact-decision.is-restore{border-top:5px solid #ccefdc!important}dialog.compact-decision.is-restore .decision-icon{background:transparent;mask:none;-webkit-mask:none;background-image:url('assets/restore.png');background-size:contain;background-repeat:no-repeat}dialog.compact-decision.is-restore h2{color:#166c43!important}dialog.compact-decision .dialog-x,dialog.sf-dialog .dialog-x{position:absolute;top:10px;right:10px;min-height:28px;width:28px;height:28px;border:0;border-radius:7px;background:transparent!important;color:#536a80!important;font-size:24px!important;padding:0!important;cursor:pointer}dialog.compact-decision .access-dialog-actions,dialog.compact-decision .dm-dialog-actions{display:flex!important;justify-content:flex-end!important;gap:10px;border-top:1px solid #e6edf3;padding-top:14px;margin-top:16px}dialog.compact-decision button{font-size:13px!important;min-height:38px!important;padding:8px 16px!important;line-height:1.5!important;box-shadow:none!important}dialog.compact-decision button[value="cancel"],dialog.compact-decision #confirmCancel,dialog.compact-decision #cancelUserDecision{background:#fff!important;border:1px solid #cbd9e7!important;color:#34536f!important}dialog.compact-decision button[value="confirm"],dialog.compact-decision #confirmAction,dialog.compact-decision.is-danger #confirmUserDecision{background:#d32f2f!important;border:1px solid #d32f2f!important;color:#fff!important;border-radius:9px!important;min-width:65px!important}dialog.compact-decision.is-restore button[value="confirm"],dialog.compact-decision.is-restore #confirmAction{background:#159458!important;border-color:#159458!important}dialog.compact-decision .decision-selection,dialog.compact-decision #formConfirmName,dialog.compact-decision .dm-selection{font-size:13px!important;color:#20384f!important;background:#f3f7fb!important;padding:10px 12px!important;border-radius:9px;overflow-wrap:anywhere;clear:both}dialog.compact-decision [role="alert"]:not(:empty){color:#b42332!important;background:#fff1f1;padding:9px;border-radius:8px}dialog.compact-decision button:disabled{opacity:.55;cursor:wait}dialog.compact-decision.is-permanent .access-dialog-actions{margin-bottom:0!important}
.sf-toolbar label{display:flex;flex-direction:column;gap:6px;font-size:13px;line-height:1.6}.sf-toolbar input#sfSearch,.sf-toolbar select#sfStatus{height:46px!important;min-height:46px!important;margin:0!important;padding:10px 12px!important;font-size:14px!important;line-height:1.5;box-sizing:border-box}.sf-recycle-head h2{display:flex;align-items:center;gap:10px;font-size:22px}.sf-recycle-head img{width:28px;height:28px;object-fit:contain}.sf-recycle-head h2 span{font-size:13px;background:#eef4fa;padding:4px 8px;border-radius:12px}.sf-recycle-head p{font-size:13px;color:#60768b}.restore-link{display:inline-flex;align-items:center;gap:6px;background:#edf9f2;color:#147342;border:1px solid #cdebd9;border-radius:9px;padding:9px 12px;font-size:13px;white-space:nowrap}.restore-link img{width:18px;height:18px;object-fit:contain}.sf-empty{text-align:center!important;color:#61788c}.sf-empty img{width:40px;height:40px;object-fit:contain;opacity:.7}.sf-recycle .sf-table{min-width:560px}
dialog.sf-dialog{width:min(1040px,94vw)!important;padding:20px!important;border-top:4px solid #174b80!important;border-radius:14px!important}dialog.sf-dialog .sf-code-head{display:flex;align-items:center;gap:12px;background:white!important;color:#173451!important;border:0!important;padding:0 32px 0 0!important;margin:0!important;min-height:0!important}dialog.sf-dialog .sf-code-head>img{width:32px;height:32px;object-fit:contain}dialog.sf-dialog .sf-code-head>div{flex:1;min-width:0}dialog.sf-dialog .sf-code-head h2{font-size:20px!important;margin:0!important;color:#173451!important}dialog.sf-dialog .sf-code-head p{margin:3px 0!important;color:#405f7a!important;font-size:13px!important}dialog.sf-dialog .sf-code-count{font-size:12px;border-radius:9px;background:#eff6fd;padding:7px 10px;white-space:nowrap}dialog.sf-dialog .sf-note{font-size:12px!important;line-height:1.6!important;margin:12px 0!important}dialog.sf-dialog .sf-table th,dialog.sf-dialog .sf-table td{padding:10px 9px!important;font-size:13px!important}dialog.sf-dialog .sf-table th{white-space:normal}dialog.sf-dialog .sf-table td:first-child{min-width:0}dialog.sf-dialog .sf-table td:nth-child(n+4){text-align:center}dialog.sf-dialog footer{display:flex;justify-content:flex-end;gap:10px;margin-top:16px!important}dialog.sf-dialog .sf-badge{font-size:11px;white-space:nowrap}.sf-badge.sf-inactive,.sf-badge.sf-expired{color:#b42332;background:#fff0f0}.sf-badge.sf-deleted{color:#64748b;background:#edf1f5}
@media(max-width:900px){.province-split{grid-template-columns:minmax(0,1fr)!important}.province-map-pane{grid-column:1;grid-row:1}.province-split .province-compact-list{grid-column:1;grid-row:2;height:380px;max-height:380px!important}#mapSvg{max-height:520px}.access-chart-head{align-items:flex-start;flex-wrap:wrap}.access-chart-totals{flex-wrap:wrap}.access-chart-body{grid-template-columns:1fr}.access-missed{border-left:0;border-top:1px solid #e0e8f1;padding:14px 0 0;display:grid;grid-template-columns:1fr auto;gap:3px 14px}.access-missed p{margin:0}.access-missed .missed-count{grid-column:2;grid-row:1/3;margin:0}.missed-progress{grid-column:1/-1}.access-horizontal-bars{gap:16px}.access-bar-row{grid-template-columns:minmax(120px,1fr) minmax(70px,2fr) 48px 48px;gap:8px}}
@media(max-width:600px){.summary-kpis.kpi-six-soft .kpi-body{grid-template-columns:minmax(0,1fr) 28px!important;padding:10px 7px!important;gap:7px 3px}.summary-kpis.kpi-six-soft .kpi-title{min-height:96px!important;font-size:10px!important}.summary-kpis.kpi-six-soft .kpi-card .kpi-body .kpi-original-icon{width:28px!important;height:28px!important}.summary-kpis.kpi-six-soft .kpi-metric b{font-size:25px!important}.summary-kpis.kpi-six-soft .kpi-unit{font-size:9px!important}.summary-kpis.kpi-six-soft .kpi-metric{min-height:46px;gap:1px}.summary-kpis.kpi-six-soft .kpi-status-meta{gap:3px}.access-chart-head h2{font-size:18px}.access-chart-totals{display:grid;grid-template-columns:1fr 1fr;width:100%}.access-chart-totals article{padding:8px;gap:6px}.access-chart-totals small{font-size:10px}.access-chart-totals img{width:26px;height:26px}.access-chart-totals b{font-size:22px}.access-chart-body{padding:12px;gap:16px}.access-bar-row{grid-template-columns:1fr 46px 48px}.access-bar-label{grid-column:1/-1;font-size:12px}.metric-track{height:8px}.access-bar-row>strong{font-size:14px}.access-chart-note{font-size:10px}#mapSvg{max-height:410px}#mapTip{width:236px;font-size:11px}.tip-row{padding:5px 0}.sf-toolbar{gap:12px!important}dialog.sf-dialog .sf-code-head{flex-wrap:wrap}dialog.sf-dialog .sf-code-count{margin-left:44px}dialog.sf-dialog{padding:14px!important}dialog.sf-dialog .sf-table{min-width:740px}dialog.sf-dialog footer a{font-size:12px!important}dialog.compact-decision{padding:18px!important}dialog.compact-decision h2{font-size:16px!important}}

dialog.compact-decision .dialog-x{min-height:28px!important;width:28px!important;height:28px!important;padding:0!important}
#userDecision:not(.is-danger) .decision-icon{display:none}#userDecision:not(.is-danger) h2{margin-left:0!important}
.map-miss-marker.map-dimmed{opacity:.12}

.access-chart-head{background:none!important;border:0!important;padding:0!important;color:#173451!important;box-shadow:none!important}.access-chart-head h2{color:#173451!important}
.sf-recycle-head{background:none!important;border:0!important;padding:0 0 12px!important;box-shadow:none!important;color:#173451!important}.sf-recycle-head h2{color:#173451!important}
#provinceStatusGrid .province-compact-row.done:before{background:var(--status-done)!important}#provinceStatusGrid .province-compact-row.doing:before{background:var(--status-doing)!important}#provinceStatusGrid .province-compact-row.wait:before{background:var(--status-wait)!important}.chip-dot.targeted{background:#1b559b!important}
dialog.compact-decision #confirmCancel{min-width:65px!important;width:auto!important}

/* Keep all province boundaries visible while filters mute unrelated fills. */
#mapSvg .geo-province.map-dimmed{opacity:1!important;fill:#f0f5fa!important;stroke:#bccbd8!important;stroke-width:.8!important;vector-effect:non-scaling-stroke;pointer-events:none;filter:none!important}
#mapSvg .map-miss-marker.map-dimmed{opacity:0}
/* Content-sized rows remove the inherited flexible gap above the metric. */
.summary-kpis.kpi-six-soft .kpi-card .kpi-body{grid-template-rows:auto auto 6px auto!important;height:auto!important;min-height:0!important;row-gap:7px!important;padding:14px 18px!important;align-content:start}
.summary-kpis.kpi-six-soft .kpi-card .kpi-title{min-height:44px!important}
.summary-kpis.kpi-six-soft .kpi-card .kpi-metric{min-height:44px!important;align-self:center!important}
.summary-kpis.kpi-six-soft .kpi-card .kpi-body .kpi-original-icon{width:44px!important;height:44px!important}
.summary-kpis.kpi-six-soft .kpi-card .kpi-bar{height:6px!important}
.summary-kpis.kpi-six-soft .kpi-card .kpi-status-meta{min-height:18px!important}
@media(max-width:600px){
.summary-kpis.kpi-six-soft .kpi-card .kpi-body{padding:10px 7px!important;row-gap:6px!important;grid-template-rows:auto auto 5px auto!important}
.summary-kpis.kpi-six-soft .kpi-card .kpi-title{min-height:76px!important}
.summary-kpis.kpi-six-soft .kpi-card .kpi-metric{min-height:42px!important}
.summary-kpis.kpi-six-soft .kpi-card .kpi-body .kpi-original-icon{width:28px!important;height:28px!important}
.summary-kpis.kpi-six-soft .kpi-card .kpi-bar{height:5px!important}
}

/* Keep the survey title and respondent progress compact while scrolling. */
.survey-head.survey-progress-compact{position:sticky;top:0;z-index:20;padding:16px 20px;}
.survey-progress-compact h1{font-size:24px;line-height:1.5;margin:0 0 12px;}
.survey-progress-compact #pct{font-size:14px;margin-top:5px;}
.survey-progress-compact small{display:block;font-size:12px;color:#667085;}
@media(max-width:600px){.survey-head.survey-progress-compact{padding:12px 16px;}.survey-progress-compact h1{font-size:20px;line-height:1.5;margin-bottom:10px;}.survey-progress-compact small{font-size:11px;}}

.survey-zoom{display:none;}
@media(max-width:768px){
.survey-zoom{display:flex;align-items:center;justify-content:flex-end;gap:8px;margin-top:6px;}
.survey-zoom button{min-width:44px;min-height:44px;padding:4px 12px;font-size:22px;line-height:1;border:1px solid #cbd3df;background:#fff;color:#17365d;}
.survey-zoom button:disabled{opacity:.4;cursor:default;}
.survey-zoom output{min-width:44px;text-align:center;font-size:12px;font-variant-numeric:tabular-nums;}
#surveyReadingContent{font-size:calc(16px * var(--survey-reading-scale,1));overflow-wrap:anywhere;}
#surveyReadingContent .q h3{font-size:calc(16px * var(--survey-reading-scale,1));}
#surveyReadingContent .q-note,#surveyReadingContent .q small{font-size:calc(13px * var(--survey-reading-scale,1));}
#surveyReadingContent input,#surveyReadingContent select,#surveyReadingContent textarea{font-size:inherit;max-width:100%;}
}

.survey-heading-row{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px;}
.survey-progress-compact .survey-heading-row h1{min-width:0;margin:0;flex:1;}
@media(max-width:768px){
.survey-heading-row{gap:10px;margin-bottom:10px;}
.survey-heading-row .survey-zoom{flex:none;margin:0;gap:0;border:1px solid #dde5ef;border-radius:12px;background:#f6f8fc;padding:2px;}
.survey-heading-row .survey-zoom button{min-width:40px;min-height:44px;padding:4px 8px;border:0;border-radius:9px;background:transparent;font-size:20px;}
.survey-heading-row .survey-zoom button:not(:disabled):active{background:#e4edf9;}
.survey-heading-row .survey-zoom button:focus-visible{outline:2px solid #2865ad;outline-offset:-2px;}
.survey-heading-row .survey-zoom output{min-width:36px;font-size:11px;color:#526581;}
.survey-progress-compact .survey-heading-row h1{font-size:18px;line-height:1.5;}
}

.survey-introduction p{white-space:pre-line;}

/* Expired incomplete provinces use the existing absence colour. */
#mapSvg .geo-province.miss{fill:var(--status-miss)!important}
#provinceStatusGrid .province-compact-row.miss:before,#provinceStatusGrid .miss .province-compact-progress i{background:var(--status-miss)!important}
.drawer-status.miss,.tip-status.miss{color:#be185d;background:#fff0f7}
