@import url("https://fonts.googleapis.com/css2?family=IBM+Plex+Sans+Thai:wght@400;500;600;700&family=IBM+Plex+Mono:wght@400;500&display=swap");:root{color-scheme:light;--bg:#faf9f7;--surface:#ffffff;--surface-2:#f4f2ee;--surface-3:#eceae4;--line:#e3e0d9;--line-2:#cfcbc1;--ink:#12120f;--ink-2:#52514e;--ink-3:#83817a;--primary:#2a78d6;--primary-ink:#fff;--good:#1baf7a;--warn:#eda100;--crit:#e34948;--info:#4a3aa7;--s1:#2a78d6;--s2:#eb6834;--s3:#1baf7a;--shadow:0 8px 24px rgba(0,0,0,.10)}:root[data-theme=dark]{color-scheme:dark;--bg:#141412;--surface:#1c1c1a;--surface-2:#232320;--surface-3:#2b2b27;--line:#33332f;--line-2:#43433d;--ink:#ffffff;--ink-2:#c3c2b7;--ink-3:#96948a;--primary:#3987e5;--good:#199e70;--warn:#c98500;--crit:#e66767;--info:#9085e9;--s1:#3987e5;--s2:#d95926;--s3:#199e70;--shadow:0 8px 24px rgba(0,0,0,.5)}*{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg);color:var(--ink);font-family:IBM Plex Sans Thai,system-ui,-apple-system,sans-serif;font-size:14px;line-height:1.6;-webkit-font-smoothing:antialiased}.mono{font-family:IBM Plex Mono,ui-monospace,monospace}.num{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.app{height:100vh;flex-direction:column}.app,.topbar{background:var(--surface);display:flex}.topbar{gap:14px;height:56px;padding:0 16px;border-bottom:1px solid var(--line)}.logo,.topbar{align-items:center}.logo{font-weight:700;letter-spacing:-.02em;font-size:16px;display:flex;gap:7px}.logo .dot{width:9px;height:9px;border-radius:3px;background:var(--primary)}.omni{flex:1 1;max-width:420px;background:var(--surface-2);border:1px solid var(--line);border-radius:8px;padding:6px 12px;font-size:13px;display:flex;justify-content:space-between}.omni,.omni kbd{color:var(--ink-3)}.omni kbd{font-size:11px;background:var(--surface);border:1px solid var(--line);border-radius:4px;padding:1px 5px}.topmeta{margin-left:auto;display:flex;align-items:center;gap:14px;font-size:12.5px;color:var(--ink-2)}.pulse{width:7px;height:7px;border-radius:50%;background:var(--good);display:inline-block}.iconbtn{background:none;border:none;color:inherit;cursor:pointer;font:inherit;font-size:15px}.body{display:grid;grid-template-columns:216px 1fr;flex:1 1}.body,.side{min-height:0}.side{border-right:1px solid var(--line);background:var(--surface);padding:10px 8px;display:flex;flex-direction:column;gap:1px;overflow:auto}.side .grp{font-size:10.5px;letter-spacing:.09em;text-transform:uppercase;color:var(--ink-3);padding:12px 10px 5px;font-weight:600}.nav{position:relative;display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:8px;color:var(--ink-2);font-size:13.5px;cursor:pointer;border:none;background:none;width:100%;text-align:left;font-family:inherit}.nav:hover{background:var(--surface-2);color:var(--ink)}.nav.on{background:var(--surface-3);color:var(--ink);font-weight:600}.nav .ic{width:18px;text-align:center;font-size:14px}.nav .badge{margin-left:auto;font-size:10.5px;background:var(--crit);color:#fff;border-radius:10px;padding:0 6px;font-weight:600}.main{padding:20px 22px 28px;overflow:auto;min-height:0}.h{display:flex;align-items:baseline;gap:8px 12px;margin-bottom:14px;flex-wrap:wrap}.h h2{font-size:19px;font-weight:650;letter-spacing:-.01em}.h .sub{font-size:12.5px;color:var(--ink-3)}.h .right{margin-left:auto;display:flex;gap:8px}.btn{font:inherit;font-size:13px;padding:7px 14px;border-radius:8px;border:1px solid var(--line);background:var(--surface);color:var(--ink);cursor:pointer;display:inline-flex;align-items:center;gap:7px}.btn:hover:not(:disabled){border-color:var(--line-2);background:var(--surface-2)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn.p{background:var(--primary);border-color:var(--primary);color:#fff;font-weight:600}.btn.sm{padding:4px 10px;font-size:12px}.btn.dz{background:var(--crit);border-color:var(--crit);color:#fff;font-weight:600}.card{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:16px 18px}.chip{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;padding:2px 9px;border-radius:20px;background:var(--surface-2);border:1px solid var(--line);color:var(--ink-2);white-space:nowrap}.chip.g{color:var(--good);border-color:color-mix(in srgb,var(--good) 40%,transparent)}.chip.w{color:var(--warn);border-color:color-mix(in srgb,var(--warn) 40%,transparent)}.chip.r{color:var(--crit);border-color:color-mix(in srgb,var(--crit) 40%,transparent)}.chip.sp{color:var(--s2);border-color:color-mix(in srgb,var(--s2) 45%,transparent)}.chip.lz{color:var(--s1);border-color:color-mix(in srgb,var(--s1) 45%,transparent)}.pill{font-family:IBM Plex Mono,monospace;font-size:10.5px;color:var(--ink-3);background:var(--surface-2);border:1px solid var(--line);border-radius:5px;padding:1px 6px}.g{color:var(--good)}.r{color:var(--crit)}.w{color:var(--warn)}.m{color:var(--ink-3)}.acdot{width:8px;height:8px;border-radius:50%;display:inline-block;flex:none}.kpis{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:12px;gap:12px;margin-bottom:16px}.kpis>*{min-width:0}.kpi .l{font-size:12px;color:var(--ink-3)}.kpi .v{font-size:27px;font-weight:680;letter-spacing:-.02em;line-height:1.2;margin-top:3px}.kpi .d{font-size:11.5px;margin-top:2px}table{width:100%;border-collapse:collapse;font-size:13px}th{font-size:10.5px;letter-spacing:.05em;text-transform:uppercase;color:var(--ink-3);font-weight:600;text-align:left;background:var(--surface-2);white-space:nowrap}td,th{padding:8px 10px;border-bottom:1px solid var(--line)}td{vertical-align:middle}tr:last-child td{border-bottom:none}tbody tr:hover{background:var(--surface-2)}td.n,th.n{text-align:right;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;white-space:nowrap}.tw{border:1px solid var(--line);border-radius:10px;overflow-x:auto;background:var(--surface);-webkit-overflow-scrolling:touch}th.sortable{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}th.sortable .sarrow{margin-left:4px;opacity:.42;font-size:9px}tfoot td{background:var(--surface-2);font-weight:600;border-top:1px solid var(--line-2)}.thumb{width:40px;height:40px;border-radius:7px;background:linear-gradient(135deg,var(--surface-3),var(--surface-2));border:1px solid var(--line);display:inline-block;flex:none}.filters{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:12px}.inp{background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:6px 11px;font-size:12.5px;color:var(--ink-2);font-family:inherit}.inp.search{min-width:min(210px,100%);color:var(--ink-3)}.count{margin-left:auto;font-size:12px;color:var(--ink-3)}.seg{display:inline-flex;border:1px solid var(--line);border-radius:8px;overflow:hidden}.seg button{font:inherit;font-size:12.5px;padding:6px 12px;border:none;background:var(--surface);color:var(--ink-2);cursor:pointer;border-right:1px solid var(--line)}.seg button:last-child{border-right:none}.seg button.on{background:var(--surface-3);color:var(--ink);font-weight:600}.chart{display:flex;align-items:flex-end;gap:6px;height:150px;padding:8px 4px 0}.chart .col{flex:1 1;height:100%;display:flex;flex-direction:column-reverse;gap:2px;align-items:stretch;min-width:0}.chart .col i{display:block;border-radius:3px 3px 0 0}.chart .col i.sp{background:var(--s2)}.chart .col i.lz{background:var(--s1);border-radius:3px}.chart .col:hover i{filter:brightness(1.12)}.xlab{display:flex;gap:6px;margin-top:6px}.xlab span{flex:1 1;text-align:center;font-size:10px;color:var(--ink-3);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.legend{display:flex;gap:14px;font-size:11.5px;color:var(--ink-2);margin-top:10px}.legend i{width:10px;height:10px;border-radius:3px;display:inline-block;vertical-align:-1px;margin-right:5px}.cols{display:grid;grid-template-columns:1fr 1fr;grid-gap:12px;gap:12px;align-items:start}@media (max-width:1000px){.cols{grid-template-columns:1fr}.kpis{grid-template-columns:repeat(2,1fr)}}.acgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));grid-gap:12px;gap:12px}.accard{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:14px 16px;display:flex;flex-direction:column;gap:8px}.accard.bad{border-color:color-mix(in srgb,var(--crit) 45%,transparent)}.accard.off{opacity:.55}.accard .top{display:flex;align-items:center;gap:8px}.accard .top b{font-size:14.5px}.accard .row{font-size:12px;color:var(--ink-2);display:flex;gap:6px;align-items:center;flex-wrap:wrap}.accard .money{font-size:13px}.accard .btns{display:flex;gap:6px;margin-top:4px;flex-wrap:wrap}.accard.add{border-style:dashed;align-items:center;justify-content:center;color:var(--ink-3);cursor:pointer;min-height:170px;gap:6px}.accard.add:hover{border-color:var(--primary);color:var(--primary)}.accard.add .plus{font-size:28px;line-height:1}.overlay{position:fixed;inset:0;background:rgba(0,0,0,.45);display:none;align-items:center;justify-content:center;z-index:100;padding:16px}.overlay.on{display:flex}.modal{background:var(--surface);border:1px solid var(--line-2);border-radius:14px;box-shadow:var(--shadow);width:min(520px,100%);max-height:90vh;overflow:auto;padding:20px 22px}.modal h3{font-size:16px;margin-bottom:4px}.modal .sub{font-size:12px;color:var(--ink-3);margin-bottom:14px}.field{margin-bottom:12px}.field label{display:block;font-size:12px;color:var(--ink-2);margin-bottom:4px;font-weight:600}.field .inp{width:100%;color:var(--ink)}.field .hint{font-size:11px;color:var(--ink-3);margin-top:3px}.platpick{display:grid;grid-template-columns:1fr 1fr;grid-gap:8px;gap:8px;margin-bottom:14px}.platpick button{font:inherit;padding:12px;border-radius:10px;border:1.5px solid var(--line);background:var(--surface);cursor:pointer;font-weight:600;color:var(--ink-2)}.platpick button.on.sp{border-color:var(--s2);color:var(--s2);background:color-mix(in srgb,var(--s2) 7%,var(--surface))}.platpick button.on.lz{border-color:var(--s1);color:var(--s1);background:color-mix(in srgb,var(--s1) 7%,var(--surface))}.testok{border:1px solid color-mix(in srgb,var(--good) 45%,transparent);color:var(--good);background:color-mix(in srgb,var(--good) 7%,var(--surface));border-radius:9px;padding:8px 12px;font-size:12.5px;margin-bottom:12px}.modal .btns{display:flex;gap:8px;justify-content:flex-end;margin-top:6px}.note{border:1px solid var(--line);border-radius:10px;background:var(--surface-2);padding:10px 14px;font-size:12.5px;color:var(--ink-2)}.note.crit{border-color:color-mix(in srgb,var(--crit) 45%,transparent);color:var(--crit);background:color-mix(in srgb,var(--crit) 6%,var(--surface))}.prog{height:6px;border-radius:3px;background:var(--surface-3);overflow:hidden;flex:1 1;max-width:220px}.prog i{display:block;height:100%;background:var(--primary)}.syncrow{display:flex;align-items:center;gap:10px;font-size:12.5px;padding:7px 0;border-bottom:1px solid var(--line)}.syncrow:last-child{border-bottom:none}.setrow{display:flex;align-items:center;gap:12px;padding:11px 0;border-bottom:1px solid var(--line)}.setrow:last-child{border-bottom:none}.setrow .tx{flex:1 1}.setrow .tx b{font-size:13.5px;font-weight:600;display:block}.setrow .tx .hint{font-size:11.5px;color:var(--ink-3)}.toggle{width:38px;height:22px;border-radius:11px;background:var(--surface-3);border:1px solid var(--line-2);position:relative;cursor:pointer;flex:none}.toggle.on{background:var(--good);border-color:var(--good)}.toggle i{position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:#fff;transition:left .15s}.toggle.on i{left:18px}.empty{display:flex;flex-direction:column;align-items:center;gap:10px;padding:48px 16px;color:var(--ink-3);text-align:center}@media (max-width:760px){.body{grid-template-columns:56px 1fr}.side .grp{visibility:hidden;height:10px;padding:6px 0 0}.nav .badge,.nav .lbl,.omni{display:none}}.toast{position:fixed;left:50%;transform:translateX(-50%);bottom:18px;z-index:150;background:var(--ink);color:var(--bg);border-radius:10px;padding:11px 16px;display:flex;align-items:center;gap:14px;font-size:13px;box-shadow:var(--shadow);max-width:min(560px,92vw);cursor:pointer}:root[data-theme=dark] .toast{background:#35352f;color:var(--ink);border:1px solid var(--line-2);box-shadow:inset 0 2px 0 color-mix(in srgb,var(--primary) 60%,transparent),0 10px 30px rgba(0,0,0,.6)}.toast .sp{margin-left:auto;font-size:11px;opacity:.65;white-space:nowrap}.acctmenu{position:absolute;top:calc(100% + 6px);left:0;z-index:200;width:min(300px,86vw);max-height:min(60vh,420px);overflow-y:auto;background:var(--surface);border:1px solid var(--line-2);border-radius:11px;box-shadow:var(--shadow);padding:6px}.acctmenu .row{display:flex;align-items:flex-start;gap:8px;width:100%;text-align:left;background:none;border:none;font:inherit;color:var(--ink);cursor:pointer;padding:7px 9px;border-radius:8px}.acctmenu .row.on,.acctmenu .row:hover{background:var(--surface-2)}.acctmenu .row .mk{width:12px;flex:none;color:var(--good);font-size:11px;line-height:1.6}.acctmenu .row .tx{display:flex;flex-direction:column;min-width:0;flex:1 1}.acctmenu .row b{font-size:13px;font-weight:600;white-space:nowrap;display:flex;align-items:center}.acctmenu .row b,.acctmenu .sub{overflow:hidden;text-overflow:ellipsis}.acctmenu .sub{font-size:10.5px;color:var(--ink-3)}body.sidebar-collapsed .side{display:none}body.sidebar-collapsed .body{grid-template-columns:1fr}a.nav{text-decoration:none}.setrow .tx .hint{overflow-wrap:anywhere}