:root{--bg:#f6f8f6;--card:#ffffff;--card2:#eef2ef;--ink:#1a201c;--ink2:#5c645f;--ink3:#8b938d;--line:#e2e7e3;--accent:#1e6f50;--accent-strong:#15563e;--accent-soft:#e3efe9;--crit:#d03b3b;--urg:#c96a1f;--watch:#b98a00;--good:#0ca30c;--crit-bar:#d03b3b;--urg-bar:#ec835a;--watch-bar:#fab219;--crit-soft:#f9e4e4;--urg-soft:#fbeadf;--watch-soft:#faf0d4;--good-soft:#e2f4e2;--neutral-bar:#c8cfc9;--shadow:0 1px 2px rgba(20,30,24,.05),0 4px 16px rgba(20,30,24,.06);color-scheme:light}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#141715;--card:#1c201d;--card2:#242926;--ink:#edf1ee;--ink2:#a9b1ab;--ink3:#7d857f;--line:#2b302c;--accent:#3dbd8a;--accent-strong:#5ccfa0;--accent-soft:#1e2f27;--crit:#e66767;--urg:#ec835a;--watch:#fab219;--good:#3dbd3d;--crit-soft:#3a2323;--urg-soft:#3a2b21;--watch-soft:#38301b;--good-soft:#1f3320;--neutral-bar:#4a524c;--shadow:0 1px 2px rgba(0,0,0,.3),0 4px 16px rgba(0,0,0,.25);color-scheme:dark}}:root[data-theme=dark]{--bg:#141715;--card:#1c201d;--card2:#242926;--ink:#edf1ee;--ink2:#a9b1ab;--ink3:#7d857f;--line:#2b302c;--accent:#3dbd8a;--accent-strong:#5ccfa0;--accent-soft:#1e2f27;--crit:#e66767;--urg:#ec835a;--watch:#fab219;--good:#3dbd3d;--crit-soft:#3a2323;--urg-soft:#3a2b21;--watch-soft:#38301b;--good-soft:#1f3320;--neutral-bar:#4a524c;--shadow:0 1px 2px rgba(0,0,0,.3),0 4px 16px rgba(0,0,0,.25);color-scheme:dark}*{box-sizing:border-box}body,html{margin:0;padding:0}body{background:var(--bg);color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,Noto Sans Thai,Thonburi,Leelawadee UI,sans-serif;font-size:14.5px;line-height:1.55;-webkit-text-size-adjust:100%;overflow-x:clip}.num{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}a{color:var(--accent)}button{touch-action:manipulation}header.app{position:-webkit-sticky;position:sticky;top:0;z-index:40;background:var(--bg);border-bottom:1px solid var(--line)}.hd-top{gap:12px;padding:12px 20px 8px}.hd-top,.logo{display:flex;align-items:center}.logo{width:38px;height:38px;border-radius:10px;background:var(--accent);color:#fff;justify-content:center;font-weight:800;font-size:19px;flex:none}.hd-title{flex:1 1 auto;min-width:0}.hd-title .eyebrow{font-size:11px;letter-spacing:.05em;color:var(--ink2);font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.hd-title h1{margin:1px 0 0;font-size:17.5px;font-weight:800;letter-spacing:-.01em;line-height:1.3;text-wrap:balance}.hd-actions{flex:none;display:flex;gap:8px;align-items:center}nav.tabs{display:flex;gap:2px;padding:0 14px;overflow-x:auto;scrollbar-width:none}nav.tabs::-webkit-scrollbar{display:none}nav.tabs a{color:var(--ink2);font-weight:600;padding:9px 12px 11px;border-radius:8px 8px 0 0;position:relative;white-space:nowrap;font-size:13.5px;text-decoration:none}nav.tabs a:hover{color:var(--ink)}nav.tabs a.on{color:var(--accent-strong)}nav.tabs a.on:after{content:"";position:absolute;left:10px;right:10px;bottom:0;height:3px;border-radius:2px 2px 0 0;background:var(--accent)}.dswrap{padding:0 20px}.dsbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;max-width:1180px;margin:14px auto 0;padding:10px 14px;font-size:12.5px;color:var(--ink2);background:var(--card);border:1px solid var(--line);border-radius:12px}.dsbar .dot{width:8px;height:8px;border-radius:50%;background:var(--good);flex:none}.dsbar .dot.err{background:var(--crit)}.dsbar b{color:var(--ink)}.dsbar .spacer{flex:1 1 auto}main.app{max-width:1180px;margin:0 auto;padding:16px 20px 60px}.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));grid-gap:10px;gap:10px;margin-bottom:16px}.kpi{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:12px 15px 10px;box-shadow:var(--shadow)}.kpi .lb{font-size:11.5px;color:var(--ink2);font-weight:600}.kpi .v{font-size:25px;font-weight:800;letter-spacing:-.02em;margin-top:2px;line-height:1.2}.kpi .sub{font-size:11px;color:var(--ink3);margin-top:2px}.kpi.crit .v{color:var(--crit)}.kpi.urg .v{color:var(--urg)}.kpi.acc .v{color:var(--accent-strong)}.card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:16px 18px;box-shadow:var(--shadow);margin-bottom:14px}.card h2{margin:0 0 2px;font-size:15.5px;font-weight:700}.card .sub{font-size:12.5px;color:var(--ink2);margin:0 0 12px}.grid2{display:grid;grid-template-columns:1fr 1fr;grid-gap:14px;gap:14px}.alert{display:flex;gap:12px;align-items:flex-start;border-radius:14px;padding:13px 15px;margin-bottom:14px;background:var(--crit-soft);border:1px solid rgba(208,59,59,.3)}.alert .ic{flex:none;width:26px;height:26px;border-radius:50%;background:var(--crit);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:15px}.alert b{color:var(--crit)}.alert p{margin:3px 0 0;font-size:13px}.alert .cta{margin-top:8px}.chips{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}.chip{-webkit-appearance:none;-moz-appearance:none;appearance:none;font:inherit;font-size:13px;font-weight:600;cursor:pointer;border:1px solid var(--line);background:var(--card);color:var(--ink2);border-radius:999px;padding:7px 14px}.chip:hover{color:var(--ink)}.chip.on,.chip:hover{border-color:var(--accent)}.chip.on{background:var(--accent);color:#fff}.pill{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:700;border-radius:999px;padding:2px 9px;white-space:nowrap}.pill:before{content:"";width:7px;height:7px;border-radius:50%}.pill.t0{background:var(--crit-soft);color:var(--crit)}.pill.t0:before{background:var(--crit)}.pill.t1{background:var(--urg-soft);color:var(--urg)}.pill.t1:before{background:var(--urg)}.pill.t2{background:var(--watch-soft);color:var(--watch)}.pill.t2:before{background:var(--watch)}.tag{display:inline-block;font-size:11px;font-weight:700;border-radius:6px;padding:1px 7px;background:var(--accent-soft);color:var(--accent-strong)}.tag.gray{background:var(--card2);color:var(--ink2)}.persist{color:var(--crit);font-weight:800;font-size:11px}.tools{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:12px}.tools .count{margin-left:auto;font-size:12px;color:var(--ink3)}.search{flex:1 1 200px;max-width:340px;font:inherit;font-size:13.5px;color:var(--ink);background:var(--card);border:1px solid var(--line);border-radius:10px;padding:8px 12px}.search:focus{outline:2px solid var(--accent);outline-offset:-1px}.search::placeholder{color:var(--ink3)}.tablewrap{overflow-x:auto;-webkit-overflow-scrolling:touch;border:1px solid var(--line);border-radius:12px}table{border-collapse:collapse;width:100%;font-size:13px;background:var(--card)}th{text-align:left;font-size:11px;letter-spacing:.03em;color:var(--ink2);font-weight:700;background:var(--card2);padding:8px 11px;position:-webkit-sticky;position:sticky;top:0;white-space:nowrap;z-index:1}td{padding:7px 11px;border-top:1px solid var(--line);vertical-align:top}td.r,th.r{text-align:right}tbody tr:hover td{background:rgba(30,111,80,.05)}.code{font-size:11px;color:var(--ink3);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.more{margin:12px auto 0;display:block}.btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;font:inherit;font-size:13px;font-weight:600;cursor:pointer;text-decoration:none;display:inline-block;background:var(--card);color:var(--ink);border:1px solid var(--line);border-radius:10px;padding:8px 15px}.btn:hover{color:var(--accent-strong)}.btn.primary,.btn:hover{border-color:var(--accent)}.btn.primary{background:var(--accent);color:#fff}.btn.primary:hover{background:var(--accent-strong);color:#fff}.btn.small{padding:5px 11px;font-size:12px;border-radius:8px}.btn[disabled]{opacity:.5;cursor:not-allowed}.note{font-size:12.5px;color:var(--ink2);background:var(--card2);border-radius:10px;padding:10px 13px;margin-bottom:12px}.supcard{border:1px solid var(--line);border-radius:14px;background:var(--card);box-shadow:var(--shadow);margin-bottom:14px;overflow:hidden}.suphead{display:flex;gap:12px;align-items:center;padding:13px 16px;cursor:pointer;flex-wrap:wrap}.suphead:hover{background:rgba(30,111,80,.04)}.supbadge{flex:none;background:var(--accent-soft);color:var(--accent-strong);font-weight:800;font-size:12px;border-radius:8px;padding:5px 10px}.supname{flex:1 1 220px;min-width:170px}.supname b{font-size:14px}.supname .full,.supstats{font-size:11.5px;color:var(--ink2)}.supstats{display:flex;gap:16px;flex-wrap:wrap}.supstats b{display:block;font-size:15.5px;color:var(--ink);letter-spacing:-.01em}.supbody{border-top:1px solid var(--line);padding:12px 16px 16px}.caret{flex:none;color:var(--ink3);transition:transform .15s;font-size:11px}.supcard.open .caret{transform:rotate(90deg)}.dropzone{border:2px dashed rgba(30,111,80,.45);border-radius:14px;background:rgba(30,111,80,.04);padding:26px 18px;text-align:center;cursor:pointer}.dropzone.drag,.dropzone:hover{background:var(--accent-soft);border-color:var(--accent)}.dropzone .big{font-size:15px;font-weight:700;color:var(--accent-strong)}.dropzone .hint{font-size:12.5px;color:var(--ink2);margin-top:4px}.flist{margin:12px 0 0;display:flex;flex-direction:column;gap:8px}.frow{gap:10px;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:9px 13px;flex-wrap:wrap}.frow,.frow .fic{display:flex;align-items:center}.frow .fic{flex:none;width:30px;height:30px;border-radius:8px;justify-content:center;font-size:14px;font-weight:800}.frow .fic.branch{background:var(--accent-soft);color:var(--accent-strong)}.frow .fic.supplier{background:var(--watch-soft);color:var(--watch)}.frow .fic.err{background:var(--crit-soft);color:var(--crit)}.frow .fmeta{flex:1 1 200px;min-width:0}.frow .fname{font-size:13px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.frow .fdetail{font-size:11.5px;color:var(--ink2)}.frow .fdetail.error{color:var(--crit)}.theme-switch{-webkit-appearance:none;-moz-appearance:none;appearance:none;position:relative;cursor:pointer;flex:none;width:64px;height:32px;border-radius:999px;padding:0 7px;display:inline-flex;align-items:center;justify-content:space-between;background:var(--card2);border:1px solid var(--line)}.theme-switch:hover{border-color:var(--accent)}.theme-switch:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.theme-switch .ts-icon{font-size:13px;line-height:1;z-index:0}.theme-switch .ts-knob{position:absolute;top:3px;left:3px;width:24px;height:24px;border-radius:50%;background:var(--card);border:1px solid var(--line);box-shadow:var(--shadow);transition:transform .18s ease;z-index:1}.theme-switch.dark .ts-knob{transform:translateX(32px)}.chart-tip{position:fixed;z-index:99;pointer-events:none;background:var(--ink);color:var(--bg);font-size:12.5px;border-radius:8px;padding:7px 11px;box-shadow:0 4px 14px rgba(0,0,0,.25);max-width:280px;line-height:1.45}.legend{display:flex;gap:14px;flex-wrap:wrap;margin-top:10px;font-size:12px;color:var(--ink2)}.legend .it{display:flex;gap:6px;align-items:center}.sw{width:11px;height:11px;border-radius:3px;flex:none}footer.app{max-width:1180px;margin:0 auto;padding:0 20px 40px;font-size:11.5px;color:var(--ink3)}.loading{padding:60px 20px;text-align:center;color:var(--ink2)}.spin{display:inline-block;width:16px;height:16px;border:2px solid var(--accent-soft);border-top-color:var(--accent);border-radius:50%;animation:sp 1s linear infinite;vertical-align:-3px;margin-right:8px}@keyframes sp{to{transform:rotate(1turn)}}@media (max-width:900px){.grid2{grid-template-columns:1fr}.kpis{grid-template-columns:repeat(auto-fit,minmax(130px,1fr))}.hd-title h1{font-size:16px}}@media (max-width:640px){body{font-size:13.5px}.hd-top{padding:10px 14px 6px}.dswrap{padding:0 14px}main.app{padding:12px 14px 48px}.kpis{grid-template-columns:1fr 1fr;gap:8px}.kpi .v{font-size:21px}.card{padding:13px 14px}table{font-size:12px}td,th{padding:6px 8px}.tools .count{flex-basis:100%;margin-left:0;order:9}.search{max-width:none}.hd-actions .btn-label{display:none}}@media print{.alert,.chips,.dswrap,.noprint,.tools,footer.app,header.app{display:none!important}body{background:#fff;font-size:12px}main.app{max-width:none;padding:0}.supcard{page-break-inside:avoid;break-inside:avoid-page;box-shadow:none}.supbody{display:block!important}.card{box-shadow:none}}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}