@import"https://fonts.googleapis.com/css2?family=Noto+Sans+Lao:wght@400;500;600;700&family=Noto+Sans+Thai:wght@400;500;600;700&family=Noto+Sans:wght@400;500;600;700&display=swap";:root{--font-ui: "Noto Sans Lao", "Noto Sans Thai", "Noto Sans", "Leelawadee UI", "Thonburi", "Lao Sangam MN", "Saysettha OT", "Phetsarath OT", "DokChampa", "Segoe UI", "Helvetica Neue", Arial, sans-serif;--font-data: "Noto Sans Thai", "Noto Sans Lao", "Noto Sans", "Leelawadee UI", "Thonburi", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI", "PingFang SC", "Hiragino Sans", "Hiragino Kaku Gothic ProN", "Microsoft YaHei", "Malgun Gothic", "Noto Sans CJK", "Arial Unicode MS", sans-serif;--font-family-ui: var(--font-ui);--font-size-base: 15px;--line-height-base: 1.55;--button-padding-x: .85em;--button-padding-y: .45em}html{font-family:var(--font-family-ui);font-size:var(--font-size-base);line-height:var(--line-height-base);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}body,button,input,textarea,select,optgroup{font-family:var(--font-family-ui)}.ag-root-wrapper,.ag-header,.ag-header-cell,.ag-cell,.ag-cell-wrapper,.ag-cell-value,.ag-cell-edit-wrapper,.ag-text-field-input,.ag-input-field-input,.ag-menu,.ag-popup,.ag-overlay,.ag-tooltip,.ag-rich-select,[class*=ag-]{font-family:var(--font-data)!important}.ag-cell,.ag-cell-value,.ag-header-cell-text{word-break:normal;overflow-wrap:anywhere;line-break:loose;unicode-bidi:plaintext}button,.btn,[role=button]{padding-inline:var(--button-padding-x);padding-block:var(--button-padding-y);letter-spacing:0;word-break:keep-all}[role=tooltip],[role=dialog],.tooltip,.dialog,.modal{font-family:var(--font-family-ui);line-height:1.6;word-break:keep-all}:root{color-scheme:light;--bg: #f3f5f7;--surface: #ffffff;--border: #d8dee6;--text: #1a2332;--muted: #5b6b7c;--accent: #0f6b4c;--accent-hover: #0c563d;--danger: #b42318;--warning-bg: #fff7e8;--warning-border: #f0c36d;--shadow: 0 1px 2px rgba(16, 24, 40, .06)}*,*:before,*:after{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:radial-gradient(1200px 500px at 10% -10%,#e7f3ee 0%,transparent 55%),radial-gradient(900px 400px at 100% 0%,#eef2f7 0%,transparent 50%),var(--bg);color:var(--text)}button,input{font:inherit}.app{display:flex;flex-direction:column;height:100%;min-height:100dvh}.toolbar{display:flex;flex-wrap:wrap;gap:.45rem;align-items:center;padding:.65rem .85rem;background:var(--surface);border-bottom:1px solid var(--border);box-shadow:var(--shadow)}.toolbar__brand{font-weight:700;font-size:1.05rem;margin-right:.35rem;color:var(--accent)}.toolbar__group{display:flex;flex-wrap:wrap;gap:.4rem;align-items:center}.toolbar__spacer{flex:1}.btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:8px;cursor:pointer;min-height:2.2rem;white-space:nowrap}.btn:hover:not(:disabled){background:#f7faf9;border-color:#b9c7c0}.btn:disabled{opacity:.45;cursor:not-allowed}.btn--primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn--primary:hover:not(:disabled){background:var(--accent-hover);border-color:var(--accent-hover)}.btn--danger{color:var(--danger);border-color:#f0b4ae}.status{font-size:.9rem;color:var(--muted)}.status--dirty{color:#9a6700;background:var(--warning-bg);border:1px solid var(--warning-border);border-radius:999px;padding:.2rem .65rem}.status--ok{color:var(--accent)}.main{flex:1;min-height:0;display:flex;flex-direction:column;padding:.75rem;gap:.75rem}.grid-shell{flex:1;min-height:0;background:var(--surface);border:1px solid var(--border);border-radius:12px;overflow:hidden;box-shadow:var(--shadow)}.grid-shell .ag-root-wrapper{height:100%}.grid-shell--excel .ag-header-cell,.grid-shell--excel .ag-cell{border-right:1px solid #c5ced8!important;border-bottom:1px solid #c5ced8!important}.grid-shell--excel .ag-row{border-bottom:none}.grid-shell--excel .ag-cell{line-height:1.45;white-space:nowrap}.grid-shell--excel .row-num-cell{background:#f3f5f7!important;color:var(--muted);text-align:center;font-variant-numeric:tabular-nums;font-weight:600}.grid-shell--excel .ag-cell-focus:not(.ag-cell-range-selected){border:2px solid var(--accent)!important;outline:none}.grid-shell--excel .ag-cell-range-selected{background-color:#0f6b4c1f!important}.grid-shell--excel .row-frozen,.grid-shell--excel .row-frozen .ag-cell{background-color:#eef6f2!important}.grid-shell--excel .row-frozen .row-num-cell{background:#d9ebe2!important;color:var(--accent)}.grid-shell--excel .ag-floating-top{border-bottom:2px solid var(--accent);box-shadow:0 2px 6px #0f6b4c1f}.format-group{padding:.2rem .35rem;border:1px solid var(--border);border-radius:10px;background:#f8fafb}.format-label{font-size:.85rem;color:var(--muted);margin-inline:.15rem .1rem}.swatches{display:inline-flex;gap:.2rem;align-items:center}.swatch{width:1.15rem;height:1.15rem;border-radius:3px;border:1px solid #9aa7b5;padding:0;cursor:pointer;min-height:0}.swatch:hover:not(:disabled){transform:scale(1.08)}.swatch--text{box-shadow:inset 0 0 0 1px #ffffff59}.color-picker{display:inline-flex;align-items:center;margin-inline:.15rem}.color-picker input[type=color]{width:1.7rem;height:1.7rem;padding:0;border:1px solid var(--border);border-radius:6px;background:transparent;cursor:pointer}.color-picker input[type=color]:disabled{opacity:.45;cursor:not-allowed}.empty{flex:1;display:grid;place-items:center;background:var(--surface);border:1.5px dashed #b7c4be;border-radius:12px;padding:2rem 1rem;text-align:center}.empty--active{border-color:var(--accent);background:#f3faf7}.empty__title{margin:0 0 .35rem;font-size:1.2rem;font-weight:700}.empty__hint{margin:0 0 1rem;color:var(--muted)}.empty__actions{display:flex;flex-wrap:wrap;gap:.5rem;justify-content:center}.meta{display:flex;gap:.75rem;flex-wrap:wrap;color:var(--muted);font-size:.9rem}.dialog-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#10182866;display:grid;place-items:center;padding:1rem;z-index:50}.dialog{width:min(420px,100%);background:var(--surface);border-radius:12px;border:1px solid var(--border);box-shadow:0 12px 40px #1018282e;padding:1.1rem 1.15rem}.dialog h2{margin:0 0 .5rem;font-size:1.1rem}.dialog p{margin:0;white-space:pre-line;color:var(--muted);line-height:1.6}.dialog__actions{display:flex;justify-content:flex-end;gap:.5rem;margin-top:1rem}.toast{position:fixed;right:1rem;bottom:1rem;z-index:60;background:#102a43;color:#fff;padding:.7rem .95rem;border-radius:10px;box-shadow:0 8px 24px #10182840;max-width:min(360px,calc(100vw - 2rem))}.toast--error{background:#7f1d1d}.toast--success{background:#0f5132}@media(max-width:720px){.toolbar__brand{width:100%;margin-bottom:.15rem}.btn{font-size:.92rem}}
