:root{--iris:#4a3fd0;--iris-bright:#5b50e3;--iris-tint:#edebfb;--iris-bd:#d8d4f8;--iris-deep:#3d33b8;--ink:#15171f;--bg:#f3f4f7;--blue:#2f5fd0;--blue-hover:#254dad;--blue-tint:#eaf0fb;--blue-bd:#c9d8f3;--g50:#f8f9fb;--g100:#f3f4f7;--g200:#e8eaef;--g300:#d8dbe2;--g400:#b4b9c3;--g500:#8b909c;--g600:#626773;--g700:#464b56;--g800:#2b2e36;--g900:#15171f;--surface-card:#ffffff;--surface-hover:#f8f9fb;--surface-selected:#f6f5fe;--surface-sunken:#eef0f4;--hairline:#e8eaef;--hairline-strong:#d8dbe2;--sh-sm:0 1px 2px rgba(17,17,17,.05);--sh-md:0 2px 8px rgba(17,17,17,.06);--sh-lg:0 8px 24px rgba(17,17,17,.10);--sh-xl:0 16px 48px rgba(17,17,17,.18);--grace-bg:#eef1f5;--grace-tx:#475060;--grace-bd:#d7dce4;--call-bg:#fdf3df;--call-tx:#8a5a05;--call-bd:#eedcae;--overdue-bg:#fdeadd;--overdue-tx:#9a4308;--overdue-bd:#f0cdaa;--lockable-bg:#fde8e8;--lockable-tx:#b02a2a;--lockable-bd:#f3c6c6;--locked-bg:#f6dede;--locked-tx:#7c1616;--locked-bd:#e3b3b3;--settled-bg:#e7f4eb;--settled-tx:#1e7a41;--settled-bd:#c3e2ce;--notice1-bg:#f1d6d6;--notice1-tx:#6b1111;--notice1-bd:#ddaeae;--notice2-bg:#ecc9c9;--notice2-tx:#570d0d;--notice2-bd:#d29f9f;--info-bg:#e8f1fd;--info-tx:#1d5cb0;--info-bd:#c4dbf5;--danger:#b02a2a;--success:#1e7a41;--risk-line:#e07a3f;--heat-call:#fdf3df;--heat-call-hover:#fbeecf;--heat-over:#fdeadd;--heat-over-hover:#fbe0c9;--heat-lock:#fde8e8;--heat-lock-hover:#fbdbdb;--heat-notice:#f1d6d6;--heat-notice-hover:#edc9c9;--r-sm:6px;--r-md:8px;--r-lg:12px;--r-xl:16px;--r-pill:999px;--f-brand:"Mitr",sans-serif;--f-data:"Anuphan",sans-serif;--t-fast:120ms cubic-bezier(.2,0,0,1);--t-base:180ms cubic-bezier(.2,0,0,1);--focus-ring:0 0 0 2px #fff,0 0 0 4px var(--iris)}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}*{margin:0;padding:0;box-sizing:border-box}body,html{height:100%}body{background:var(--bg);color:var(--ink);font-family:var(--f-data);font-size:14px;line-height:1.57;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}a{color:inherit;text-decoration:none}button,input,select,textarea{font-family:inherit;color:inherit}input,select,textarea{font-size:inherit}h1,h2,h3,h4{font-family:var(--f-brand);font-weight:500;letter-spacing:-.01em;line-height:1.4}:focus-visible{outline:none;box-shadow:var(--focus-ring)}.tnum{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.app-shell{display:flex;min-height:100vh}.app-content{flex:1 1;min-width:0;padding:28px 32px 48px}.sidebar{width:216px;flex:none;background:#fff;border-right:1px solid var(--hairline);padding:20px 12px;display:flex;flex-direction:column;gap:2px;position:-webkit-sticky;position:sticky;top:0;height:100vh;overflow-y:auto}.brandmark{display:flex;align-items:center;gap:10px;padding:4px 10px 20px}a.brandmark{text-decoration:none;color:inherit;border-radius:8px}a.brandmark:focus-visible{outline:2px solid var(--iris-bright);outline-offset:2px}.brandmark span{font-family:var(--f-brand);font-weight:500;font-size:16px}.navsec{font-size:11px;line-height:16px;padding:16px 10px 6px}.nav,.navsec{color:var(--g600);font-weight:500;font-family:var(--f-brand)}.nav{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:8px;font-size:13.5px;cursor:pointer;position:relative;transition:background var(--t-fast),color var(--t-fast);border:1px solid transparent}.nav:hover{background:var(--surface-hover);color:var(--ink)}.nav.active{background:var(--iris-tint);color:var(--iris-deep)}.nav svg{width:16px;height:16px;flex:none}.nav .badge{margin-left:auto;font-size:11px;background:var(--lockable-bg);color:var(--lockable-tx);border-radius:999px;padding:1px 7px;font-weight:500;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-family:var(--f-data)}.nav .badge-risk{background:var(--overdue-bg);color:var(--overdue-tx)}.side-foot{margin-top:auto;padding:14px 10px 4px;border-top:1px solid var(--hairline);gap:10px}.side-foot,.side-foot .pills{display:flex;flex-direction:column}.side-foot .pills{align-items:flex-start;gap:6px}.side-who{display:flex;align-items:center;justify-content:space-between;gap:8px}.side-who .id{display:flex;flex-direction:column;line-height:1.35;min-width:0}.side-who .nm{font-size:13px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.side-who .rl{font-size:11px;color:var(--g600)}.pagehead{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:20px;flex-wrap:wrap}.pagehead h1{font-size:22px;line-height:34px}.pagehead .meta{font-size:12px;color:var(--g600);margin-top:2px;line-height:1.6}.pagehead .actions{display:flex;gap:10px;flex-wrap:wrap}.card{background:var(--surface-card);border:1px solid var(--hairline);border-radius:12px;box-shadow:var(--sh-sm);padding:20px 24px}.card+.card{margin-top:16px}.card-title{font-size:18px;line-height:28px;margin-bottom:4px}.card-sub{font-size:12px;color:var(--g600);margin-bottom:14px;line-height:1.6}.card-flush{padding:0;overflow:hidden}.section-gap{margin-top:32px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:36px;padding:0 16px;border-radius:8px;font-family:var(--f-brand);font-weight:500;font-size:14px;border:1px solid transparent;cursor:pointer;white-space:nowrap;transition:background var(--t-fast),border-color var(--t-fast)}.btn:disabled{opacity:.4;cursor:not-allowed}.btn-primary{background:var(--ink);color:#fff}.btn-primary:hover:not(:disabled){background:var(--g800)}.btn-ghost{background:transparent;color:var(--g700)}.btn-ghost:hover:not(:disabled){background:var(--surface-sunken)}.btn-secondary{background:#fff;color:var(--ink);border-color:var(--hairline-strong)}.btn-secondary:hover:not(:disabled){background:var(--surface-hover)}.btn-danger{background:#fff;color:var(--danger);border-color:var(--lockable-bd)}.btn-danger:hover:not(:disabled){background:#fdf0f0}.btn-blue{background:var(--blue);color:#fff}.btn-blue:hover:not(:disabled){background:var(--blue-hover)}.btn-sm{height:28px;padding:0 12px;border-radius:6px;font-size:13px}.btn-block{width:100%}.btn-row{padding:0 10px;font-size:12.5px}.btn-row,.iconbtn{height:26px;border-radius:6px}.iconbtn{width:26px;border:1px solid var(--hairline-strong);background:#fff;display:inline-flex;align-items:center;justify-content:center;color:var(--g600);cursor:pointer;flex:none;transition:background var(--t-fast),color var(--t-fast),opacity var(--t-fast)}.iconbtn:hover{background:var(--surface-hover);color:var(--ink)}.acts{display:inline-flex;align-items:center;gap:6px;justify-content:flex-end;width:100%}.hoveronly{opacity:0}.hoveronly:focus-visible,.hoveronly[aria-expanded=true],tr:hover .hoveronly{opacity:1}@media (hover:none){.hoveronly{opacity:1}}.menu{position:fixed;width:210px;background:#fff;border:1px solid var(--hairline);border-radius:8px;box-shadow:var(--sh-lg);padding:5px;z-index:40;max-height:calc(100vh - 24px);overflow-y:auto}.menu,.mi{font-size:13px}.mi{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;padding:7px 10px;border-radius:6px;color:var(--g700);cursor:pointer;background:none;border:0;text-align:left;line-height:1.6}.mi:hover{background:var(--surface-hover);color:var(--ink)}.mi.red,.mi.red:hover{color:var(--danger)}.mi.red:hover{background:#fdf0f0}.field{display:flex;flex-direction:column;gap:6px;min-width:0}.label{font-size:12px;line-height:18px;font-weight:500;color:var(--g700)}.input,.select,.textarea{height:36px;padding:0 12px;background:#fff;border:1px solid var(--hairline-strong);border-radius:8px;color:var(--ink);font-size:14px;width:100%;transition:border-color var(--t-fast)}.textarea{height:auto;min-height:88px;padding:10px 12px;line-height:1.6;resize:vertical}.input::placeholder,.textarea::placeholder{color:var(--g600)}.input:focus,.select:focus,.textarea:focus{outline:none;border-color:var(--iris);box-shadow:var(--focus-ring)}.input.num{text-align:right;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-weight:500}.input.err,.select.err,.textarea.err{border-color:var(--danger)}.input:disabled,.select:disabled,.textarea:disabled{background:var(--surface-sunken);opacity:.6;cursor:not-allowed}.field-err{font-size:12px;color:var(--danger);line-height:1.5}.hint{font-size:12px;color:var(--g600);line-height:1.6}.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));grid-gap:14px;gap:14px}.form-row{display:flex;gap:12px;align-items:flex-end;flex-wrap:wrap}.check{display:inline-flex;align-items:center;gap:8px;font-size:13px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.check input{width:16px;height:16px;accent-color:var(--iris)}.pill{display:inline-flex;align-items:center;gap:6px;height:22px;padding:0 9px;border-radius:999px;font-family:var(--f-data);font-size:12px;line-height:20px;font-weight:500;border:1px solid;white-space:nowrap}.pill .dot{width:6px;height:6px;border-radius:50%;background:currentColor;flex:none;opacity:.45}.pill.solid .dot{opacity:1}.pill .sq{width:6px;height:6px;background:currentColor;flex:none}.pill .sq.hollow{width:5px;height:5px;background:transparent;border:1.5px solid}.p-grace{background:var(--grace-bg);color:var(--grace-tx);border-color:var(--grace-bd)}.p-call{background:var(--call-bg);color:var(--call-tx);border-color:var(--call-bd)}.p-overdue,.pill-risk{background:var(--overdue-bg);color:var(--overdue-tx);border-color:var(--overdue-bd)}.p-lockable,.pill-danger{background:var(--lockable-bg);color:var(--lockable-tx);border-color:var(--lockable-bd)}.p-locked{background:var(--locked-bg);color:var(--locked-tx);border-color:var(--locked-bd)}.p-settled,.pill-success{background:var(--settled-bg);color:var(--settled-tx);border-color:var(--settled-bd)}.pill-info{background:var(--info-bg);color:var(--info-tx);border-color:var(--info-bd)}.pill-warn{background:var(--call-bg);color:var(--call-tx);border-color:var(--call-bd)}.pill-iris{background:var(--iris-tint);color:var(--iris-deep);border-color:var(--iris-bd)}.pill-neutral{background:var(--g100);color:var(--g600);border-color:var(--g300)}.filters{display:flex;align-items:center;gap:10px;margin-bottom:12px;flex-wrap:wrap}.filters .count{font-size:12px;color:var(--g600);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.searchbox{display:flex;align-items:center;gap:8px;height:32px;padding:0 12px;background:#fff;border:1px solid var(--hairline-strong);border-radius:8px;color:var(--g500);font-size:13px;width:260px;transition:border-color var(--t-fast);cursor:text}.searchbox:focus-within{border-color:var(--iris);box-shadow:var(--focus-ring)}.searchbox input{border:0;outline:none;background:transparent;flex:1 1;min-width:0;height:100%;font-size:13px;color:var(--ink);padding:0;box-shadow:none}.searchbox input:focus-visible{box-shadow:none}.searchbox input::placeholder{color:var(--g600)}.dd{position:relative;display:inline-block}.field .dd{display:block;width:100%}.dd-btn{display:inline-flex;align-items:center;gap:8px;height:32px;padding:0 12px;background:#fff;border:1px solid var(--hairline-strong);border-radius:8px;font-size:13px;color:var(--ink);cursor:pointer;white-space:nowrap;font-family:var(--f-data);transition:border-color var(--t-fast),background var(--t-fast)}.dd-btn:hover:not(:disabled){background:var(--surface-hover)}.dd-btn:disabled{opacity:.4;cursor:not-allowed}.dd-btn .k{color:var(--g600)}.dd-btn svg{color:var(--g500);flex:none}.dd-btn .dd-val{overflow:hidden;text-overflow:ellipsis;max-width:260px}.dd-btn .dd-ph{color:var(--g600)}.dd-btn.dd-form{height:36px;width:100%;justify-content:space-between;font-size:14px}.dd-menu{position:fixed;background:#fff;border:1px solid var(--hairline);border-radius:8px;box-shadow:var(--sh-lg);padding:6px;font-size:13px;z-index:40;max-height:320px;overflow-y:auto;max-width:340px}.dd-item{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:7px 10px;border-radius:6px;color:var(--g700);cursor:pointer;white-space:nowrap}.dd-item.act{background:var(--surface-hover);color:var(--ink)}.dd-item.sel{background:var(--surface-selected);color:var(--ink);font-weight:500;box-shadow:inset 2px 0 0 var(--iris)}.dd-item .n{font-feature-settings:"tnum";font-variant-numeric:tabular-nums;color:var(--g600);font-size:12px}.tabs{display:flex;gap:4px;border-bottom:1px solid var(--hairline-strong);flex-wrap:wrap}.tab{font-family:var(--f-brand);font-weight:400;font-size:14px;line-height:22px;padding:10px 14px;color:var(--g600);position:relative;cursor:pointer;border-radius:6px 6px 0 0;background:none;border:0}.tab:hover{background:var(--surface-hover);color:var(--ink)}.tab.active{color:var(--ink);font-weight:500}.tab.active:after{bottom:-1px;height:2px;background:var(--iris);border-radius:1px}.tab.active:after,.tab.active:before{content:"";position:absolute;left:10px;right:10px}.tab.active:before{bottom:-2px;height:1px;background:var(--ink)}.tab .count{font-family:var(--f-data);font-size:11px;background:var(--surface-sunken);color:var(--g600);border-radius:999px;padding:1px 7px;margin-left:6px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.table-card{background:#fff;border:1px solid var(--hairline);border-radius:12px;box-shadow:var(--sh-sm);overflow:hidden}.scroller{overflow-x:auto}table.table{border-collapse:separate;border-spacing:0;width:100%;font-size:13px;line-height:20px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.table th{font-family:var(--f-data);font-size:12px;line-height:16px;font-weight:500;color:var(--g600);text-align:left;height:36px;background:var(--g50);border-bottom:1px solid var(--hairline-strong);position:-webkit-sticky;position:sticky;top:0;z-index:1}.table td,.table th{padding:0 12px;white-space:nowrap}.table td{height:40px;border-bottom:1px solid var(--hairline);vertical-align:middle;background:#fff}.table tr:last-child td{border-bottom:0}.table tbody tr:hover td{background:var(--surface-hover)}.table tr.sel td{background:var(--surface-selected)}.table tr.sel td:first-child{box-shadow:inset 2px 0 0 var(--iris)}.table .num{font-weight:500;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.table .num,.table th.num{text-align:right}.table .mut{color:var(--g600)}.table .fee{color:var(--overdue-tx);font-weight:500}.table .name{max-width:220px;overflow:hidden;text-overflow:ellipsis;display:inline-block;vertical-align:middle}.table .rowactions{display:flex;gap:6px;justify-content:flex-end}tr.warn-row td{background:var(--overdue-bg)!important}a.link{color:var(--blue);border-bottom:1px solid var(--blue-bd);cursor:pointer}a.link:hover{color:var(--blue-hover);border-bottom-color:var(--blue)}.tfoot{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 16px;border-top:1px solid var(--hairline);font-size:12px;color:var(--g600);background:var(--g50);flex-wrap:wrap}.pager{display:flex;gap:4px}.pg{min-width:26px;height:26px;border-radius:6px;border:1px solid transparent;background:transparent;display:inline-flex;align-items:center;justify-content:center;font-size:12px;color:var(--g600);cursor:pointer;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.pg:hover:not(:disabled){background:var(--surface-sunken)}.pg:disabled{opacity:.4;cursor:not-allowed}.pg.cur{background:#fff;border-color:var(--hairline-strong);color:var(--ink);font-weight:500;box-shadow:inset 0 -2px 0 var(--iris)}.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));grid-gap:16px;gap:16px;margin-bottom:20px}.kpi{background:#fff;border:1px solid var(--hairline);border-radius:12px;box-shadow:var(--sh-sm);padding:16px 20px}.kpi .l{font-size:12px;line-height:18px;color:var(--g600)}.kpi .v{font-family:var(--f-brand);font-weight:500;font-size:22px;line-height:34px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;margin-top:2px}.kpi .d{font-size:12px;line-height:18px;color:var(--g600);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;margin-top:2px}.scrim{position:fixed;inset:0;background:rgba(21,23,31,.45);display:flex;align-items:center;justify-content:center;padding:24px;z-index:50}.modal{background:#fff;border-radius:16px;box-shadow:var(--sh-xl);width:100%;max-width:480px;max-height:calc(100vh - 48px);display:flex;flex-direction:column;overflow:hidden}.modal-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:18px 22px 12px}.modal-title{font-size:18px;line-height:28px}.modal-body{padding:4px 22px 18px;overflow-y:auto;display:flex;flex-direction:column;gap:14px}.modal-foot{display:flex;justify-content:flex-end;gap:10px;padding:14px 22px;border-top:1px solid var(--hairline);background:var(--g50)}.icon-btn{width:30px;height:30px;border-radius:8px;border:1px solid transparent;background:transparent;color:var(--g600);cursor:pointer;font-size:15px;display:inline-flex;align-items:center;justify-content:center}.icon-btn:hover{background:var(--surface-sunken);color:var(--ink)}.toast{position:fixed;left:50%;bottom:28px;transform:translateX(-50%);z-index:60;padding:11px 18px;border-radius:10px;box-shadow:var(--sh-lg);font-size:13px;font-weight:500;border:1px solid;max-width:calc(100vw - 48px)}.toast-ok{background:var(--settled-bg);color:var(--settled-tx);border-color:var(--settled-bd)}.toast-err{background:var(--lockable-bg);color:var(--lockable-tx);border-color:var(--lockable-bd)}.note{border-radius:10px;padding:12px 14px;font-size:13px;line-height:1.6;border:1px solid}.note-info{background:var(--info-bg);color:var(--info-tx);border-color:var(--info-bd)}.note-warn{background:var(--call-bg);color:var(--call-tx);border-color:var(--call-bd)}.note-err{background:var(--lockable-bg);color:var(--lockable-tx);border-color:var(--lockable-bd)}.note-parked{background:var(--surface-sunken);color:var(--g700);border-color:var(--hairline-strong)}.checklist{display:flex;flex-direction:column}.ci{display:flex;align-items:center;gap:14px;padding:15px 2px;border-top:1px solid var(--hairline)}.ci:first-child{border-top:none}.ci-main{flex:1 1;min-width:0}.ci-label{font-weight:500;color:var(--ink)}.ci-meta{font-size:12px;color:var(--g600);margin-top:3px;line-height:1.6}.ci-act{flex:none;gap:8px;align-items:center}.ci-act,.kv{display:flex}.kv{flex-wrap:wrap;gap:6px 28px}.kv>div{display:flex;flex-direction:column;gap:2px;min-width:120px}.kv .kv-k{font-size:11.5px;color:var(--g600);letter-spacing:.01em}.kv .kv-v{font-weight:500;color:var(--ink)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.muted{color:var(--g600)}.faint{color:var(--g500)}.stack{flex-direction:column;gap:14px}.row,.stack{display:flex}.row{align-items:center;gap:10px;flex-wrap:wrap}.spacer{flex:1 1}.mono-amt{font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-weight:500}.empty{padding:40px 20px;text-align:center;color:var(--g600);font-size:13px;line-height:1.7}.skeleton{background:linear-gradient(90deg,var(--g100),var(--g200),var(--g100));background-size:200% 100%;animation:sk 1.2s ease-in-out infinite;border-radius:6px;height:14px}.skeleton-row{height:40px;border-bottom:1px solid var(--hairline)}@keyframes sk{0%{background-position:200% 0}to{background-position:-200% 0}}.divider{height:1px;background:var(--hairline);margin:16px 0}.subhead{font-family:var(--f-brand);font-weight:500;font-size:15px;line-height:24px;margin-bottom:10px}.chips{display:flex;gap:6px;flex-wrap:wrap}.kbd{display:inline-block;padding:0 5px;height:18px;line-height:18px;border:solid var(--hairline-strong);border-width:1px 1px 2px;border-radius:5px;font-size:11px;color:var(--g600);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px;background:var(--bg)}.login-card{width:100%;max-width:380px;background:#fff;border:1px solid var(--hairline);border-radius:16px;box-shadow:var(--sh-md);padding:32px 28px}.login-brand{display:flex;align-items:center;gap:12px;margin-bottom:22px}.login-brand .wm{font-family:var(--f-brand);font-weight:500;font-size:20px;line-height:1.2}.login-brand .wm small{display:block;font-family:var(--f-data);font-weight:400;font-size:11px;color:var(--g600)}.login-title{font-size:15px;color:var(--g700);margin-bottom:18px}.doc-rev-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:12px}.doc-rev{border:1px solid var(--hairline,#e3e4e8);border-radius:10px;padding:10px 12px}.doc-rev-top{display:flex;flex-wrap:wrap;align-items:center;gap:6px}.doc-file-list{list-style:none;margin:6px 0 0;padding:0;display:flex;flex-direction:column;gap:3px}.doc-file-list li{word-break:break-all}.doc-note{margin-top:4px;padding:4px 8px;border-left:3px solid var(--iris,#4a3fd0);background:var(--canvas,#f3f4f7);border-radius:4px}.doc-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px;align-items:center}