:root{--bg:#f3f5f2;--card:#fff;--text:#17231d;--muted:#5f6f66;--line:#dce4de;--brand:#00854a;--brand-dark:#006b3b;--brand-soft:#e3f3ea;--on-brand:#fff;--head-bg:#0b3d27;--head-text:#eaf6ef;--head-accent:#6be3a2;--err:#b42318;--err-soft:#fdecea;--warn:#8a5a00;--warn-soft:#fff4d6;--code-bg:#f6f8f6;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#0f1512;--card:#18201c;--text:#e3ebe6;--muted:#92a39a;--line:#2a3530;--brand:#3ccf82;--brand-dark:#6fe0a3;--brand-soft:#16362a;--on-brand:#06170e;--head-bg:#0a2a1c;--head-text:#d9f0e3;--err:#ff8f84;--err-soft:#3a1c1a;--warn:#f5c35b;--warn-soft:#362c14;--code-bg:#131a16;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}:root[data-theme=dark]{--bg:#0f1512;--card:#18201c;--text:#e3ebe6;--muted:#92a39a;--line:#2a3530;--brand:#3ccf82;--brand-dark:#6fe0a3;--brand-soft:#16362a;--on-brand:#06170e;--head-bg:#0a2a1c;--head-text:#d9f0e3;--err:#ff8f84;--err-soft:#3a1c1a;--warn:#f5c35b;--warn-soft:#362c14;--code-bg:#131a16;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);margin:0;font:15px/1.6 IBM Plex Sans Thai,Sukhumvit Set,Noto Sans Thai,Leelawadee UI,system-ui,sans-serif}.wrap{max-width:1180px;margin:0 auto;padding:0 16px}.topbar{background:var(--head-bg);color:var(--head-text);margin-bottom:20px;padding:22px 0 18px}.topbar h1{letter-spacing:.2px;text-wrap:balance;margin:0;font-size:22px}.topbar h1 .fmt{color:var(--head-accent);font-family:IBM Plex Mono,ui-monospace,monospace;font-weight:500}.topbar .sub{opacity:.9;margin:4px 0 0;font-size:14px}.card{background:var(--card);border:1px solid var(--line);border-radius:12px;margin-bottom:16px;padding:18px 20px}h2{align-items:center;gap:10px;margin:0 0 14px;font-size:17px;display:flex}h3{margin:22px 0 8px;font-size:15px}.step{background:var(--brand);width:24px;height:24px;color:var(--on-brand);border-radius:50%;place-items:center;font-size:13px;display:inline-grid}.muted,small{color:var(--muted);font-weight:400}.drop{border:2px dashed var(--line);cursor:pointer;text-align:center;border-radius:10px;flex-direction:column;align-items:center;gap:4px;padding:28px 16px;transition:border-color .15s,background .15s;display:flex}.drop:hover,.drop.over{border-color:var(--brand);background:var(--brand-soft)}.drop .hint{color:var(--muted);font-size:13px}.file-name{color:var(--brand-dark);font-weight:600}.grid{grid-template-columns:repeat(auto-fit,minmax(min(250px,100%),1fr));gap:12px 16px;display:grid}label{flex-direction:column;gap:4px;font-size:14px;font-weight:500;display:flex}label.check{flex-direction:row;align-items:center;gap:8px;font-weight:400}input[type=text],input[type=date],select{font:inherit;border:1px solid var(--line);background:var(--card);color:var(--text);border-radius:8px;min-width:0;padding:8px 10px}input:focus,select:focus{outline:2px solid var(--brand);outline-offset:-1px}input.invalid{border-color:var(--err);background:var(--err-soft)}.mapping{border-top:1px solid var(--line);margin-top:16px;padding-top:12px}.mapping summary{cursor:pointer;font-weight:600}.mapping-grid{margin-top:12px}.mapping-grid label{font-weight:400}.alert{border-radius:8px;margin-bottom:10px;padding:10px 12px;font-size:14px}.alert.err{background:var(--err-soft);color:var(--err)}.alert.warn{background:var(--warn-soft);color:var(--warn)}.batches{grid-template-columns:repeat(auto-fit,minmax(min(320px,100%),1fr));gap:12px;display:grid}.batch{border:1px solid var(--line);border-radius:10px;flex-direction:column;gap:8px;min-width:0;padding:14px;display:flex}.batch .title{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:8px;display:flex}.batch .product{font-size:16px;font-weight:700}.batch .total{font-variant-numeric:tabular-nums;font-weight:600}.batch .meta{color:var(--muted);font-size:13px}.batch pre{background:var(--code-bg);border:1px solid var(--line);white-space:pre;border-radius:6px;max-height:220px;margin:0;padding:8px;font-family:IBM Plex Mono,ui-monospace,Menlo,monospace;font-size:12px;line-height:1.4;overflow:auto}.actions{flex-wrap:wrap;gap:8px;display:flex}button{font:inherit;border:1px solid var(--brand);background:var(--brand);color:var(--on-brand);cursor:pointer;border-radius:8px;padding:7px 14px}button:hover{background:var(--brand-dark);border-color:var(--brand-dark)}button.ghost{color:var(--brand-dark);background:0 0}button.ghost:hover{background:var(--brand-soft)}button:disabled{opacity:.5;cursor:not-allowed}.table-wrap{border:1px solid var(--line);border-radius:10px;overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:13.5px}th,td{border-bottom:1px solid var(--line);text-align:left;vertical-align:top;padding:7px 10px}th{background:var(--code-bg);white-space:nowrap;font-weight:600}tr:last-child td{border-bottom:0}td.num,th.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}td.mono{white-space:nowrap;font-family:IBM Plex Mono,ui-monospace,Menlo,monospace;font-size:12.5px}tr.bad td{background:var(--err-soft)}.tag{white-space:nowrap;border-radius:999px;padding:1px 8px;font-size:12px;font-weight:600;display:inline-block}.tag.ok{background:var(--brand-soft);color:var(--brand-dark)}.tag.err{background:var(--err-soft);color:var(--err)}.tag.skip{background:var(--code-bg);color:var(--muted);border:1px solid var(--line)}.msg{margin:0;padding-left:16px}.msg li.err{color:var(--err)}.msg li.warn{color:var(--warn)}.foot{color:var(--muted);padding-bottom:28px;font-size:12.5px}.sample{background:var(--warn-soft);color:var(--warn);border-radius:8px;margin-top:12px;padding:10px 12px;font-size:14px}.sample-link{margin:8px 0 0}button.link{color:var(--brand-dark);background:0 0;border:0;padding:0;font-size:13.5px;text-decoration:underline}button.link:hover{color:var(--text);background:0 0}button:focus-visible,.drop:focus-within{outline:2px solid var(--brand);outline-offset:2px}@media (width<=520px){.card{padding:14px}.topbar h1{font-size:19px}}.topbar-row{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:12px 24px;display:flex}.nav{gap:6px;display:flex}.nav a{color:var(--head-text);border:1px solid #0000;border-radius:999px;padding:6px 12px;font-size:14px;text-decoration:none}.nav a:hover{border-color:color-mix(in srgb, var(--head-text) 35%, transparent)}.nav a[aria-current=page]{background:var(--head-accent);color:var(--head-bg);font-weight:600}
