:root{color-scheme:light;--surface-1:#fcfcfb;--surface-2:#ffffff;--page:#f9f9f7;--text-primary:#0b0b0b;--text-secondary:#52514e;--text-muted:#898781;--grid:#e1e0d9;--baseline:#c3c2b7;--border:rgba(11,11,11,0.10);--border-strong:rgba(11,11,11,0.18);--series-1:#2a78d6;--series-2:#eb6834;--series-3:#1baf7a;--series-4:#eda100;--series-5:#e87ba4;--series-6:#008300;--ord-1:#86b6ef;--ord-2:#2a78d6;--ord-3:#104281;--seq-100:#cde2fb;--seq-200:#9ec5f4;--seq-300:#6da7ec;--seq-400:#3987e5;--seq-500:#256abf;--seq-600:#184f95;--seq-700:#0d366b;--good:#0ca30c;--warning:#fab219;--serious:#ec835a;--critical:#d03b3b;--success-text:#006300;--cho-1:#cde2fb;--cho-2:#9ec5f4;--cho-3:#6da7ec;--cho-4:#3987e5;--cho-5:#184f95;--badge-ready:#104281;--badge-dev:#2a78d6;--radius:10px;--radius-sm:6px;--shadow:0 1px 2px rgba(11,11,11,.04),0 4px 16px rgba(11,11,11,.04);--font:system-ui,-apple-system,"Segoe UI","Noto Sans Khmer","Khmer OS",sans-serif}@media (prefers-color-scheme:dark){:root:where(:not([data-theme=light])){color-scheme:dark;--surface-1:#1a1a19;--surface-2:#212120;--page:#0d0d0d;--text-primary:#ffffff;--text-secondary:#c3c2b7;--text-muted:#898781;--grid:#2c2c2a;--baseline:#383835;--border:rgba(255,255,255,0.10);--border-strong:rgba(255,255,255,0.18);--series-1:#3987e5;--series-2:#d95926;--series-3:#199e70;--series-4:#c98500;--series-5:#d55181;--series-6:#008300;--ord-1:#9ec5f4;--ord-2:#3987e5;--ord-3:#184f95;--success-text:#0ca30c;--cho-1:#0d366b;--cho-2:#184f95;--cho-3:#256abf;--cho-4:#3987e5;--cho-5:#86b6ef;--badge-ready:#9ec5f4;--badge-dev:#6da7ec;--shadow:0 1px 2px rgba(0,0,0,.3),0 4px 16px rgba(0,0,0,.25)}}:root[data-theme=dark]{color-scheme:dark;--surface-1:#1a1a19;--surface-2:#212120;--page:#0d0d0d;--text-primary:#ffffff;--text-secondary:#c3c2b7;--text-muted:#898781;--grid:#2c2c2a;--baseline:#383835;--border:rgba(255,255,255,0.10);--border-strong:rgba(255,255,255,0.18);--series-1:#3987e5;--series-2:#d95926;--series-3:#199e70;--series-4:#c98500;--series-5:#d55181;--series-6:#008300;--ord-1:#9ec5f4;--ord-2:#3987e5;--ord-3:#184f95;--success-text:#0ca30c;--cho-1:#0d366b;--cho-2:#184f95;--cho-3:#256abf;--cho-4:#3987e5;--cho-5:#86b6ef;--badge-ready:#9ec5f4;--badge-dev:#6da7ec;--shadow:0 1px 2px rgba(0,0,0,.3),0 4px 16px rgba(0,0,0,.25)}*{box-sizing:border-box}body,html{padding:0;margin:0}body{background:var(--page);color:var(--text-primary);font-family:var(--font);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}.shell{display:grid;grid-template-columns:232px 1fr;min-height:100vh}.sidebar{border-right:1px solid var(--border);background:var(--surface-1);padding:20px 14px;position:-webkit-sticky;position:sticky;top:0;height:100vh;display:flex;flex-direction:column;gap:4px;overflow-y:auto}.brand{padding:0 8px 18px}.brand-mark{font-size:15px;font-weight:650;letter-spacing:-.01em}.brand-sub{font-size:11px;margin-top:3px;line-height:1.35}.brand-sub,.nav-group{color:var(--text-muted)}.nav-group{font-size:10px;text-transform:uppercase;letter-spacing:.07em;padding:14px 8px 6px;font-weight:600}.nav-item{display:flex;align-items:center;gap:9px;padding:8px 9px;border-radius:var(--radius-sm);color:var(--text-secondary);font-size:13px;font-weight:500}.nav-item:hover{background:color-mix(in srgb,var(--text-primary) 5%,transparent)}.nav-item.active{background:color-mix(in srgb,var(--series-1) 12%,transparent);color:var(--series-1);font-weight:600}.nav-item svg{flex:none}.main{padding:26px 30px 60px;max-width:1500px;min-width:0}.page-head{margin-bottom:22px}.page-title{font-size:22px;font-weight:650;letter-spacing:-.02em;margin:0}.page-sub{color:var(--text-secondary);font-size:13px;margin-top:6px;max-width:74ch}.card{background:var(--surface-1);border:1px solid var(--border);border-radius:var(--radius);padding:18px 20px;box-shadow:var(--shadow);min-width:0}.card-head{display:flex;justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:14px;flex-wrap:wrap}.card-title{font-size:13px;font-weight:640;letter-spacing:-.005em}.card-note{font-size:11px;color:var(--text-muted)}.grid{display:grid;grid-gap:14px;gap:14px}.g2{grid-template-columns:repeat(2,minmax(0,1fr))}.g3{grid-template-columns:repeat(3,minmax(0,1fr))}.g4{grid-template-columns:repeat(4,minmax(0,1fr))}@media (max-width:1180px){.g4{grid-template-columns:repeat(2,minmax(0,1fr))}.g2,.g3{grid-template-columns:1fr}}@media (max-width:860px){.shell{grid-template-columns:1fr}.sidebar{position:static;height:auto;flex-direction:row;flex-wrap:wrap}.g4{grid-template-columns:1fr}.main{padding:18px}}.stat-label{font-size:11px;color:var(--text-secondary);font-weight:550;text-transform:uppercase;letter-spacing:.05em}.stat-value{font-size:30px;font-weight:660;letter-spacing:-.025em;margin-top:7px;line-height:1.05}.stat-value.sm{font-size:23px}.stat-foot{font-size:11.5px;color:var(--text-muted);margin-top:7px;line-height:1.4}.stat-delta{font-size:12px;font-weight:600}.stat-delta.good{color:var(--success-text)}.stat-delta.bad{color:var(--critical)}.badge{display:inline-flex;align-items:center;gap:5px;padding:2px 8px;border-radius:100px;font-size:11px;font-weight:600;white-space:nowrap;border:1px solid transparent}.badge .dot{width:7px;height:7px;border-radius:50%;flex:none}.badge.ready{background:color-mix(in srgb,var(--badge-ready) 18%,transparent);color:var(--badge-ready)}.badge.developing{background:color-mix(in srgb,var(--badge-dev) 18%,transparent);color:var(--badge-dev)}.badge.early{background:color-mix(in srgb,var(--text-muted) 14%,transparent);color:var(--text-secondary)}.badge.good{background:color-mix(in srgb,var(--good) 14%,transparent);color:var(--success-text)}.badge.warn{background:color-mix(in srgb,var(--warning) 20%,transparent);color:var(--text-primary)}.badge.crit{background:color-mix(in srgb,var(--critical) 14%,transparent);color:var(--critical)}.badge.neutral{background:color-mix(in srgb,var(--text-primary) 7%,transparent);color:var(--text-secondary)}.tbl-wrap{overflow-x:auto;border-radius:var(--radius-sm)}table.tbl{width:100%;border-collapse:collapse;font-size:12.5px}table.tbl th{text-align:left;font-weight:600;color:var(--text-secondary);font-size:11px;text-transform:uppercase;letter-spacing:.04em;padding:8px 10px;border-bottom:1px solid var(--baseline);white-space:nowrap}table.tbl td{padding:9px 10px;border-bottom:1px solid var(--grid);vertical-align:top}table.tbl tbody tr:hover{background:color-mix(in srgb,var(--text-primary) 3%,transparent)}table.tbl td.num,table.tbl th.num{text-align:right;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}table.tbl .kh{font-size:13px}.muted{color:var(--text-muted)}.sec{color:var(--text-secondary)}.controls{display:flex;flex-wrap:wrap;gap:10px;align-items:flex-end;padding:14px 16px;background:var(--surface-1);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:16px}.field{display:flex;flex-direction:column;gap:5px;min-width:0}.field>label{font-size:10.5px;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em}input[type=number],input[type=text],select{font-family:var(--font);font-size:13px;padding:7px 10px;border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface-2);color:var(--text-primary);min-height:34px}input:focus,select:focus{outline:2px solid var(--series-1);outline-offset:1px}input[type=range]{accent-color:var(--series-1)}.btn{font-family:var(--font);font-size:13px;font-weight:600;padding:8px 14px;border-radius:var(--radius-sm);border:1px solid var(--border-strong);background:var(--surface-2);color:var(--text-primary);cursor:pointer;min-height:34px}.btn:hover{background:color-mix(in srgb,var(--text-primary) 5%,transparent)}.btn.primary{background:var(--series-1);border-color:var(--series-1);color:#fff}.btn.primary:hover{filter:brightness(1.07)}.btn:disabled{opacity:.45;cursor:not-allowed}.seg{display:inline-flex;border:1px solid var(--border-strong);border-radius:var(--radius-sm);overflow:hidden}.seg button{font-family:var(--font);font-size:12.5px;font-weight:550;padding:7px 12px;background:var(--surface-2);color:var(--text-secondary);border:none;cursor:pointer;min-height:34px}.seg button+button{border-left:1px solid var(--border-strong)}.seg button[aria-pressed=true]{background:var(--series-1);color:#fff}.legend{display:flex;flex-wrap:wrap;gap:12px;align-items:center;font-size:11.5px;color:var(--text-secondary)}.legend .key{display:inline-flex;align-items:center;gap:6px}.legend .swatch{width:10px;height:10px;border-radius:3px;flex:none}.axis-label{font-size:10.5px;fill:var(--text-muted)}.tip{position:fixed;pointer-events:none;z-index:90;background:var(--surface-2);border:1px solid var(--border-strong);border-radius:var(--radius-sm);padding:9px 11px;font-size:12px;box-shadow:0 4px 20px rgba(0,0,0,.16);max-width:280px}.tip .t-title{font-weight:640;margin-bottom:4px}.tip .t-row{display:flex;justify-content:space-between;gap:16px;color:var(--text-secondary)}.tip .t-row b{color:var(--text-primary);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.callout{border:1px solid var(--border);border-left:3px solid var(--warning);background:color-mix(in srgb,var(--warning) 7%,var(--surface-1));border-radius:var(--radius-sm);padding:12px 14px;font-size:12.5px;color:var(--text-secondary)}.callout b{color:var(--text-primary)}.callout.info{border-left-color:var(--series-1);background:color-mix(in srgb,var(--series-1) 6%,var(--surface-1))}.hr{height:1px;background:var(--grid);border:0;margin:16px 0}.kh{font-family:var(--font)}.mono-n{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.scroll-y{overflow-y:auto}.chip{display:inline-block;padding:2px 7px;border-radius:4px;font-size:11px;background:color-mix(in srgb,var(--text-primary) 6%,transparent);color:var(--text-secondary)}.link{color:var(--series-1);font-weight:550}.link:hover{text-decoration:underline}.empty{padding:34px;text-align:center;color:var(--text-muted);font-size:13px}