@import"https://fonts.googleapis.com/css2?family=Kanit:wght@300;400;500;600;700&display=swap";:root{--bg: #0f172a;--card: #1e293b;--line: #334155;--txt: #e2e8f0;--mut: #94a3b8;--acc: #38bdf8;--c0: #16a34a;--c1: #65a30d;--c2: #ca8a04;--c3: #d97706;--c4: #ea580c;--c5: #dc2626;--cna: #475569}*{scrollbar-width:thin;scrollbar-color:var(--line) var(--bg)}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--bg);border-radius:4px}::-webkit-scrollbar-thumb{background:var(--line);border-radius:4px;border:2px solid var(--bg)}::-webkit-scrollbar-thumb:hover{background:var(--mut)}::-webkit-scrollbar-thumb:active{background:var(--acc)}*{box-sizing:border-box}body,button,input,select,textarea{font-family:Kanit,sans-serif}body{margin:0;background:var(--bg);color:var(--txt);padding:24px}h1{font-size:20px;margin:0 0 4px}.sub{color:var(--mut);font-size:13px;margin-bottom:18px}.tabs{display:flex;gap:6px;border-bottom:1px solid var(--line);margin-bottom:18px;flex-wrap:wrap}.tab{background:none;border:none;padding:10px 16px;cursor:pointer;color:var(--mut);border-bottom:2px solid transparent;font-size:14px;font-weight:600;user-select:none;font-family:inherit}.tab.active{color:var(--acc);border-bottom-color:var(--acc)}.controls{display:flex;gap:12px;flex-wrap:wrap;align-items:center;margin-bottom:16px}input:not([type=checkbox]),select{background:var(--card);border:1px solid var(--line);color:var(--txt);padding:10px 12px;border-radius:8px;font-size:14px;outline:none}input:not([type=checkbox]){min-width:200px}.search-input{min-width:220px;flex:1 1 240px;max-width:340px}.exclude-input{min-width:180px;flex:1 1 200px;max-width:280px;border-color:#ef444459!important}.exclude-input:focus{border-color:#ef4444bf!important;box-shadow:0 0 0 2px #ef444426}#picker{width:320px;min-width:260px;max-width:380px;flex:0 0 320px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}#condsel,#expirysel{width:260px;min-width:220px;max-width:300px;flex:0 0 260px}input:disabled,select:disabled{opacity:.5;cursor:not-allowed;background:#1e293b99;border-color:#33415580;color:var(--mut)}label.ck{font-size:13px;color:var(--mut);display:flex;align-items:center;gap:6px;cursor:pointer;user-select:none;border:none!important;outline:none!important;box-shadow:none!important;background:transparent!important;padding:0}label.ck input[type=checkbox]{min-width:auto;width:16px;height:16px;margin:0;cursor:pointer;accent-color:var(--acc);border:none;outline:none;box-shadow:none}label.ck:has(input:disabled){opacity:.5;cursor:not-allowed}.card{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:20px;margin-bottom:18px}.itemhead{font-size:16px;font-weight:600;margin-bottom:2px}.itemdesc{color:var(--mut);font-size:13px;margin-bottom:14px}table{border-collapse:collapse;width:100%;font-size:13px}th,td{border:1px solid var(--line);padding:9px 10px;text-align:right;white-space:nowrap}.table-responsive{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}th{background:#0b1220;color:var(--mut);font-weight:600;text-align:center;position:sticky;top:0;z-index:10;box-shadow:0 1px 0 var(--line)}td.rowlab,th.rowlab{text-align:left;font-weight:600;background:#0b1220;white-space:nowrap}th.rowlab{z-index:20}.sticky-cb{position:sticky;left:0;z-index:5;background:#0e1726}.sticky-sku{position:sticky;left:40px;z-index:5;background:#0e1726}.sticky-desc{position:sticky;left:140px;z-index:5;background:#0e1726;box-shadow:3px 0 6px -2px #0006}.sticky-total{position:sticky;right:0;z-index:5;background:#0e1726;box-shadow:-3px 0 6px -2px #0006}th.sticky-cb{top:0;left:0;z-index:30;background:#0b1220}th.sticky-sku{top:0;left:40px;z-index:30;background:#0b1220}th.sticky-desc{top:0;left:140px;z-index:30;background:#0b1220;box-shadow:3px 1px 6px -2px #0006}th.sticky-total{top:0;right:0;z-index:30;background:#0b1220;box-shadow:-3px 1px 6px -2px #0006}tr.total td{position:sticky;bottom:0;z-index:15;background:#0b1220;box-shadow:0 -1px 0 var(--line)}tr.total td.sticky-cb{position:sticky;bottom:0;left:0;z-index:28;background:#0b1220}tr.total td.sticky-sku{position:sticky;bottom:0;left:40px;z-index:28;background:#0b1220}tr.total td.sticky-desc{position:sticky;bottom:0;left:140px;z-index:28;background:#0b1220;box-shadow:3px -1px 6px -2px #0006}tr.total td.sticky-total{position:sticky;bottom:0;right:0;z-index:28;background:#0b1220;box-shadow:-3px -1px 6px -2px #0006}td.zero{color:#475569}tr.total td{font-weight:700;background:#0b1220}.colhdr small{display:block;font-weight:400;color:#64748b;font-size:11px}th.sortable{cursor:pointer;user-select:none}th.sortable:hover{color:var(--acc)}th .arr{font-size:10px;color:var(--acc);margin-left:3px}.num{font-variant-numeric:tabular-nums}#count,#count1,#count2{color:var(--mut);font-size:13px}.wrap{max-height:70vh;overflow:auto;border:1px solid var(--line);border-radius:10px;width:100%;-webkit-overflow-scrolling:touch}.desccell{text-align:left;color:var(--mut);width:340px;min-width:340px;max-width:340px;white-space:normal;word-break:break-word;overflow-wrap:break-word;line-height:1.4}.pane{display:none}.pane.active{display:block}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:60px 24px;background:var(--card);border:1px dashed var(--line);border-radius:12px;margin-top:32px}.empty-state__icon{font-size:48px;color:var(--mut);margin-bottom:16px}.empty-state__title{font-size:18px;font-weight:600;margin-bottom:8px}.empty-state__desc{color:var(--mut);font-size:14px;max-width:480px;margin-bottom:24px}.modal-overlay{position:fixed;inset:0;background:#0f172acc;backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:1000;padding:16px}.modal-content{background:var(--card);border:1px solid var(--line);border-radius:12px;max-width:900px;width:100%;max-height:90vh;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 20px 25px -5px #00000080}.modal-header{padding:18px 24px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center}.modal-header h3{margin:0;font-size:16px;font-weight:600}.modal-close{background:transparent;border:none;color:var(--mut);font-size:20px;cursor:pointer}.modal-body{padding:24px;overflow-y:auto}.modal-error{background:#dc26261a;border:1px solid var(--c5);color:#fca5a5;padding:16px;border-radius:8px;margin-bottom:20px;font-size:13px;line-height:1.5}.modal-metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;margin-bottom:20px}.metric-box{background:#0f172a66;border:1px solid var(--line);border-radius:8px;padding:12px;text-align:center}.metric-box__val{font-size:18px;font-weight:700;color:var(--acc)}.metric-box__lbl{font-size:11px;color:var(--mut);margin-top:4px}.modal-table-wrap{border:1px solid var(--line);border-radius:8px;overflow:auto;max-height:300px;margin-bottom:20px}.modal-table-wrap table{width:100%}.modal-table-wrap th,.modal-table-wrap td{font-size:12px;padding:8px 10px}.modal-footer{padding:16px 24px;border-top:1px solid var(--line);display:flex;justify-content:flex-end;gap:12px}.btn{padding:10px 20px;border-radius:8px;font-size:14px;font-weight:600;cursor:pointer;border:1px solid transparent;outline:none}.btn-secondary{background:transparent;border-color:var(--line);color:var(--txt)}.btn-secondary:hover{background:var(--line)}.btn-primary{background:var(--acc);color:#0f172a}.btn-primary:hover{background:#7dd3fc}.btn-primary:disabled{background:var(--line);color:var(--mut);cursor:not-allowed}.import-btn{background:var(--acc);color:#0f172a;border:none;padding:8px 16px;border-radius:8px;font-size:13px;font-weight:600;cursor:pointer}.import-btn:hover{background:#7dd3fc}.header-actions{display:flex;align-items:center;gap:12px;margin-left:auto}.concept-table{width:100%;border-collapse:collapse;font-size:13px;background:var(--card)}.concept-table th,.concept-table td{border:1px solid var(--line);padding:10px 12px}.concept-table th{background:#0b1220;color:var(--mut);font-weight:600;text-align:center}.concept-table td.rowlab{background:#0b1220;color:var(--txt);white-space:nowrap}.fullscreen-loading-overlay{position:fixed;inset:0;background:#0f172abf;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:center;z-index:99999;animation:fadeInLoadingOverlay .2s ease-out forwards}@keyframes fadeInLoadingOverlay{0%{opacity:0}to{opacity:1}}.fullscreen-loading-card{background:#1e293be0;border:1px solid rgba(56,189,248,.3);box-shadow:0 20px 45px #0009,0 0 25px #38bdf826;border-radius:16px;padding:24px 36px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;min-width:220px;animation:popInLoadingCard .25s cubic-bezier(.175,.885,.32,1.275) forwards}@keyframes popInLoadingCard{0%{transform:scale(.9);opacity:0}to{transform:scale(1);opacity:1}}.fullscreen-spinner{position:relative;width:46px;height:46px;display:flex;align-items:center;justify-content:center}.fullscreen-spinner .spinner-ring{width:46px;height:46px;border:3.5px solid rgba(56,189,248,.15);border-top-color:var(--acc, #38bdf8);border-right-color:var(--acc, #38bdf8);border-radius:50%;animation:spinCircle .85s linear infinite}@keyframes spinCircle{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.fullscreen-spinner .spinner-core{position:absolute;width:10px;height:10px;background:var(--acc, #38bdf8);border-radius:50%;box-shadow:0 0 12px var(--acc, #38bdf8);animation:pulseCore 1.2s ease-in-out infinite alternate}@keyframes pulseCore{0%{transform:scale(.6);opacity:.4}to{transform:scale(1.1);opacity:1}}.fullscreen-loading-text{font-size:15px;font-weight:500;color:var(--txt, #e2e8f0);display:flex;align-items:center;letter-spacing:.3px}.animated-dots{display:inline-flex;margin-left:2px}.animated-dots .dot{font-weight:700;color:var(--acc, #38bdf8);font-size:18px;line-height:1;animation:bounceDot 1.4s infinite ease-in-out both}.animated-dots .dot-1{animation-delay:0s}.animated-dots .dot-2{animation-delay:.2s}.animated-dots .dot-3{animation-delay:.4s}@keyframes bounceDot{0%,80%,to{opacity:.2;transform:translateY(0)}40%{opacity:1;transform:translateY(-4px)}}.cell-tooltip-wrap{position:relative;display:inline-block;width:100%}td.num.has-data{position:relative;z-index:1;cursor:pointer;transition:background-color .15s ease}td.num.has-data:hover{background-color:#38bdf81f!important;outline:1px solid rgba(56,189,248,.5);z-index:100!important}.cell-tooltip-wrap:hover{z-index:100!important}.cell-tooltip-content{visibility:hidden;opacity:0;position:absolute;bottom:125%;left:50%;transform:translate(-50%);background:#0f172a;border:1px solid #38bdf8;color:#f8fafc;padding:8px 12px;border-radius:8px;box-shadow:0 10px 25px -5px #000c,0 0 10px #38bdf833;white-space:nowrap;font-size:12px;line-height:1.5;z-index:1000;pointer-events:none;transition:opacity .15s ease,transform .15s ease;min-width:150px;max-width:320px;text-align:left}.cell-tooltip-content:after{content:"";position:absolute;top:100%;left:50%;margin-left:-5px;border-width:5px;border-style:solid;border-color:#38bdf8 transparent transparent transparent}tbody tr:nth-child(-n+2) .cell-tooltip-content{bottom:auto;top:125%}tbody tr:nth-child(-n+2) .cell-tooltip-content:after{top:auto;bottom:100%;border-color:transparent transparent #38bdf8 transparent}.cell-tooltip-wrap:hover .cell-tooltip-content{visibility:visible;opacity:1;transform:translate(-50%) translateY(-4px)}@media(max-width:768px){body{padding:12px}table{min-width:620px}.controls{gap:8px}.controls-text-input{min-width:100%;width:100%}.controls select,.search-input,.exclude-input,#picker,#condsel,#expirysel{width:100%!important;max-width:100%!important;min-width:100%!important;flex:1 1 100%!important}.card{padding:12px}}.table-checkbox{appearance:none;-webkit-appearance:none;width:17px;height:17px;border:1.5px solid #475569;border-radius:4px;background-color:#0f172a;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;vertical-align:middle;transition:all .15s ease-in-out;position:relative;margin:0}.table-checkbox:hover:not(:disabled){border-color:#38bdf8;box-shadow:0 0 6px #38bdf84d}.table-checkbox:checked{background-color:#38bdf8;border-color:#38bdf8}.table-checkbox:checked:after{content:"";display:block;width:5px;height:9px;border:solid #0f172a;border-width:0 2px 2px 0;transform:rotate(45deg) translate(-1px,-1px)}.table-checkbox:disabled{opacity:.4;cursor:not-allowed}.location-setting-modal{max-width:960px;width:92vw;max-height:90vh;display:flex;flex-direction:column;background:var(--card, #1e293b);border:1px solid var(--bd, #334155);border-radius:16px;box-shadow:0 25px 50px -12px #00000080;overflow:hidden;color:var(--txt, #f8fafc)}.modal-subtitle{font-size:13px;color:#94a3b8;margin-top:4px}.setting-tabs{display:flex;gap:8px;padding:12px 20px 0;border-bottom:1px solid var(--bd, #334155);background:#0f172a;position:relative;z-index:30}.tab-btn{padding:10px 18px;font-size:14px;font-weight:600;border:none;border-bottom:2px solid transparent;background:transparent;color:#94a3b8;cursor:pointer;transition:all .2s ease}.tab-btn:hover{color:#f1f5f9}.tab-btn.active{color:#38bdf8;border-bottom-color:#38bdf8;background:#38bdf814;border-radius:6px 6px 0 0}.modal-body-scroll{padding:20px;overflow-y:auto;flex:1;position:relative}.location-banner-info{background:#38bdf81f;border:1px solid rgba(56,189,248,.3);color:#7dd3fc;padding:10px 14px;border-radius:8px;font-size:13px;margin-bottom:16px}.location-toolbar,.grade-toolbar{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px;flex-wrap:wrap}.search-input,.form-input{padding:8px 14px;border-radius:8px;border:1px solid var(--bd, #334155);background:#0f172a99;color:#f8fafc;font-size:14px;outline:none;min-width:260px}.search-input:focus,.form-input:focus{border-color:#38bdf8;box-shadow:0 0 0 2px #38bdf833}.stats-pills{display:flex;gap:8px;font-size:12px;font-weight:600}.pill-total{padding:4px 10px;border-radius:20px;background:#94a3b826;color:#cbd5e1}.pill-assigned{padding:4px 10px;border-radius:20px;background:#22c55e26;color:#4ade80}.pill-unassigned{padding:4px 10px;border-radius:20px;background:#f59e0b26;color:#fbbf24}.setting-table{width:100%;border-collapse:separate;border-spacing:0;font-size:13px}.setting-table th{position:sticky;top:-20px;z-index:20;background:#0f172a;color:#94a3b8;font-weight:600;text-align:left;padding:10px 12px;border-bottom:2px solid var(--bd, #334155);box-shadow:0 2px 4px #0006}.setting-table th.sortable-th{cursor:pointer;user-select:none;transition:color .15s ease,background-color .15s ease}.setting-table th.sortable-th:hover{color:#f8fafc;background:#1e293b}.setting-table td{padding:10px 12px;border-bottom:1px solid rgba(51,65,85,.5);vertical-align:middle}.setting-table tr:hover{background:#33415533}.loc-code-cell code{background:#0f172a99;padding:3px 8px;border-radius:4px;color:#38bdf8;font-family:monospace;font-size:13px}.grade-select{padding:6px 10px;border-radius:6px;border:1px solid var(--bd, #334155);background:#0f172a;color:#f8fafc;font-size:13px;cursor:pointer;outline:none}.grade-select.active-grade{border-color:#22c55e;color:#4ade80}.grade-select.na-grade{border-color:#f59e0b;color:#fbbf24}.saving-indicator{font-size:11px;color:#38bdf8;margin-left:8px}.time-cell,.updater-cell{font-size:12px;color:#94a3b8}.add-grade-btn{padding:8px 16px;background:#0284c7;color:#fff;border:none;border-radius:8px;font-weight:600;font-size:13px;cursor:pointer;transition:background .2s}.add-grade-btn:hover{background:#0369a1}.action-buttons{display:flex;gap:6px;justify-content:center}.edit-btn,.delete-btn{padding:4px 10px;border-radius:4px;border:none;font-size:12px;font-weight:600;cursor:pointer}.edit-btn{background:#38bdf826;color:#38bdf8}.edit-btn:hover{background:#38bdf84d}.delete-btn{background:#ef444426;color:#f87171}.delete-btn:hover{background:#ef44444d}.sub-modal-overlay{position:fixed;inset:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:1000}.sub-modal-card{background:#1e293b;border:1px solid #334155;border-radius:12px;padding:24px;width:440px;max-width:90vw;color:#f8fafc}.form-group{margin-bottom:16px;display:flex;flex-direction:column;gap:6px}.form-group label{font-size:13px;font-weight:600;color:#cbd5e1}.form-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:20px}.cancel-btn{padding:8px 16px;background:transparent;border:1px solid #475569;color:#cbd5e1;border-radius:6px;cursor:pointer}.submit-btn{padding:8px 16px;background:#2563eb;color:#fff;border:none;border-radius:6px;font-weight:600;cursor:pointer}
