@font-face{font-family:Barlow;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/barlow-vietnamese-400-normal-Dpl4UHAZ.woff2) format("woff2"),url(/assets/barlow-vietnamese-400-normal-BFeobeCK.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Barlow;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/barlow-latin-ext-400-normal-HxX4XjxC.woff2) format("woff2"),url(/assets/barlow-latin-ext-400-normal-CvBsJvxq.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Barlow;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/barlow-latin-400-normal-qiz4-Cze.woff2) format("woff2"),url(/assets/barlow-latin-400-normal-fsAxiSwU.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Barlow;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/barlow-vietnamese-600-normal-DcjprdFV.woff2) format("woff2"),url(/assets/barlow-vietnamese-600-normal-CA_GiK2e.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Barlow;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/barlow-latin-ext-600-normal-B8NK_A3D.woff2) format("woff2"),url(/assets/barlow-latin-ext-600-normal-DMVRjfRT.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Barlow;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/barlow-latin-600-normal-DILqtrty.woff2) format("woff2"),url(/assets/barlow-latin-600-normal-CNwfPWQD.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Barlow Semi Condensed;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/barlow-semi-condensed-vietnamese-600-normal-b1FQiZcx.woff2) format("woff2"),url(/assets/barlow-semi-condensed-vietnamese-600-normal-DzVrjA0Q.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Barlow Semi Condensed;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/barlow-semi-condensed-latin-ext-600-normal-BkQ9hN72.woff2) format("woff2"),url(/assets/barlow-semi-condensed-latin-ext-600-normal-BuP8AaxH.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Barlow Semi Condensed;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/barlow-semi-condensed-latin-600-normal-BkLiAYu4.woff2) format("woff2"),url(/assets/barlow-semi-condensed-latin-600-normal-DyOfdMBA.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--bg: #f6f5f2;--surface: #ffffff;--surface-2: #faf9f6;--line: #e7e4dd;--line-2: #d9d5cc;--ink: #1d1f22;--ink-2: #4a4d52;--ink-3: #7c7f85;--graphite: #222427;--graphite-2: #2e3135;--gold: #b8975a;--gold-soft: #f3ecdf;--gold-ink: #7d6232;--green: #2f7a4f;--green-soft: #e6f2ea;--red: #b23b32;--red-soft: #fbe9e7;--amber: #a86a12;--amber-soft: #fbf0dc;--blue: #2d5f8a;--blue-soft: #e5eef6;--radius: 10px;--shadow: 0 1px 2px rgba(20,20,20,.04), 0 4px 16px rgba(20,20,20,.04);--font: "Barlow", system-ui, -apple-system, "Segoe UI", sans-serif;--font-head: "Barlow Semi Condensed", "Barlow", system-ui, sans-serif}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.45 var(--font);-webkit-font-smoothing:antialiased}a{color:inherit}button,input,select,textarea{font:inherit;color:inherit}.num,td.num,th.num{font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap}.app{display:grid;grid-template-columns:248px 1fr;min-height:100%}.side{background:var(--graphite);color:#e9e7e2;padding:20px 14px;display:flex;flex-direction:column;gap:18px;position:sticky;top:0;height:100vh}.brand{display:flex;align-items:center;gap:10px;padding:4px 8px}.brand-mark{width:30px;height:30px;border-radius:7px;background:var(--gold);color:#fff;display:grid;place-items:center;font:700 15px var(--font-head)}.brand-name{font:600 17px var(--font-head);letter-spacing:.02em}.brand-sub{font-size:12px;color:#a9a7a2}.subject-switch select{width:100%;background:var(--graphite-2);border:1px solid #3c4045;color:#fff;border-radius:8px;padding:9px 10px}.subject-switch label{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:#8f8d88;display:block;margin:0 2px 6px}.nav{display:flex;flex-direction:column;gap:2px}.nav a{text-decoration:none;padding:9px 12px;border-radius:8px;color:#cfcdc8;display:flex;align-items:center;gap:10px}.nav a:hover{background:var(--graphite-2);color:#fff}.nav a.active{background:#34373c;color:#fff;box-shadow:inset 3px 0 0 var(--gold)}.side-foot{margin-top:auto;font-size:13px;color:#a9a7a2;padding:0 8px}.side-foot button{background:none;border:0;color:#d9d6cf;padding:0;cursor:pointer;text-decoration:underline}.main{padding:28px 36px 60px;max-width:1320px;width:100%}.topbar{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:22px;flex-wrap:wrap}h1{font:600 28px/1.15 var(--font-head);margin:0;letter-spacing:.005em}h2{font:600 19px var(--font-head);margin:0 0 12px}h3{font:600 15px var(--font-head);margin:0 0 8px;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-3)}.sub{color:var(--ink-3);font-size:14px;margin-top:4px}.test-banner{background:repeating-linear-gradient(135deg,#fff4d6,#fff4d6 12px,#ffefc4 12px,#ffefc4 24px);color:#6d5212;border:1px solid #ecd9a6;border-radius:8px;padding:8px 12px;font-size:13px;margin-bottom:18px}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px 20px}.grid{display:grid;gap:16px}.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:14px}.kpi{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:16px 18px;text-align:left;cursor:pointer;transition:border-color .15s,transform .15s;position:relative}.kpi:hover{border-color:var(--line-2);transform:translateY(-1px)}.kpi .label{font-size:12.5px;text-transform:uppercase;letter-spacing:.07em;color:var(--ink-3)}.kpi .value{font:600 26px/1.2 var(--font-head);margin-top:6px;font-variant-numeric:tabular-nums}.kpi .meta{font-size:13px;color:var(--ink-3);margin-top:4px}.kpi.accent{border-top:3px solid var(--gold)}.kpi.good .value{color:var(--green)}.kpi.warn .value{color:var(--amber)}.kpi.bad .value{color:var(--red)}.table-wrap{overflow-x:auto;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius)}table{border-collapse:collapse;width:100%}th{text-align:left;font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-3);padding:11px 12px;border-bottom:1px solid var(--line);background:var(--surface-2);white-space:nowrap}td{padding:11px 12px;border-bottom:1px solid var(--line);vertical-align:top}tr:last-child td{border-bottom:0}tbody tr.click{cursor:pointer}tbody tr.click:hover{background:#fbfaf7}td .muted,.muted{color:var(--ink-3);font-size:13px}tfoot td{font-weight:600;background:var(--surface-2)}.badge{display:inline-flex;align-items:center;gap:6px;padding:3px 9px;border-radius:99px;font-size:12.5px;font-weight:600;white-space:nowrap}.badge:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}.b-paid{background:var(--green-soft);color:var(--green)}.b-unpaid{background:var(--blue-soft);color:var(--blue)}.b-partial{background:var(--amber-soft);color:var(--amber)}.b-overdue{background:var(--red-soft);color:var(--red)}.b-draft{background:#eeece8;color:var(--ink-2)}.b-over{background:#efe6f7;color:#6b3d8f}.b-neutral{background:var(--gold-soft);color:var(--gold-ink)}.btn{border:1px solid var(--line-2);background:var(--surface);padding:9px 14px;border-radius:8px;cursor:pointer;font-weight:600;display:inline-flex;align-items:center;gap:8px;text-decoration:none;white-space:nowrap}.btn:hover{border-color:#bfb9ad}.btn.primary{background:var(--graphite);border-color:var(--graphite);color:#fff}.btn.primary:hover{background:#000}.btn.gold{background:var(--gold);border-color:var(--gold);color:#fff}.btn.danger{color:var(--red)}.btn.small{padding:6px 10px;font-size:13.5px}.btn:disabled{opacity:.5;cursor:not-allowed}.btns{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.field{display:flex;flex-direction:column;gap:5px;min-width:0}.field>span{font-size:12.5px;color:var(--ink-3);font-weight:600}.input,input.input,select.input,textarea.input{border:1px solid var(--line-2);background:#fff;border-radius:8px;padding:9px 10px;width:100%}.input:focus{outline:2px solid var(--gold-soft);border-color:var(--gold)}textarea.input{min-height:70px;resize:vertical}.row{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(170px,1fr))}.filters{display:flex;gap:10px;flex-wrap:wrap;align-items:end;margin-bottom:14px}.filters .input{width:auto;min-width:150px}.tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin-bottom:14px;flex-wrap:wrap}.tabs button{background:none;border:0;padding:10px 14px;cursor:pointer;color:var(--ink-3);font-weight:600;border-bottom:2px solid transparent;margin-bottom:-1px}.tabs button.on{color:var(--ink);border-color:var(--gold)}.tabs .count{font-weight:500;color:var(--ink-3);margin-left:4px}.items td{padding:6px}.items .input{padding:7px 8px}.items td.name{min-width:240px}.totals{margin-left:auto;width:min(380px,100%)}.totals div{display:flex;justify-content:space-between;padding:5px 0;font-variant-numeric:tabular-nums}.totals .grand{border-top:1px solid var(--line-2);margin-top:6px;padding-top:10px;font:600 22px var(--font-head)}.detail-head{display:grid;grid-template-columns:1fr auto;gap:16px;align-items:start}.big-amount{font:600 34px/1.1 var(--font-head);font-variant-numeric:tabular-nums}.kv{display:grid;grid-template-columns:150px 1fr;gap:6px 14px;font-size:14px}.kv dt{color:var(--ink-3)}.kv dd{margin:0}.two{display:grid;grid-template-columns:1fr 1fr;gap:16px}.timeline{list-style:none;margin:0;padding:0;font-size:14px}.timeline li{padding:8px 0 8px 18px;border-left:2px solid var(--line);position:relative}.timeline li:before{content:"";position:absolute;left:-5px;top:13px;width:8px;height:8px;border-radius:50%;background:var(--gold)}.alert{border-radius:8px;padding:10px 14px;font-size:14px;margin-bottom:14px}.alert.err{background:var(--red-soft);color:#7d241d;border:1px solid #f0c9c4}.alert.warn{background:var(--amber-soft);color:#6e4609;border:1px solid #efd7a6}.alert.ok{background:var(--green-soft);color:#1f5536;border:1px solid #c4e0cd}.empty{text-align:center;padding:40px 20px;color:var(--ink-3)}.attention li{display:flex;justify-content:space-between;gap:10px;padding:9px 0;border-bottom:1px solid var(--line)}.attention{list-style:none;margin:0;padding:0}.attention li:last-child{border:0}.modal-bg{position:fixed;top:0;right:0;bottom:0;left:0;background:#14141673;display:grid;place-items:center;z-index:50;padding:16px}.modal{background:#fff;border-radius:12px;width:min(560px,100%);padding:22px;box-shadow:0 20px 60px #00000040;max-height:92vh;overflow:auto}.toast{position:fixed;bottom:20px;right:20px;background:var(--graphite);color:#fff;padding:12px 16px;border-radius:10px;z-index:60;box-shadow:var(--shadow);max-width:420px}.toast.err{background:var(--red)}.login{min-height:100%;display:grid;place-items:center;padding:20px}.login .card{width:min(420px,100%);text-align:center;padding:34px}.loading{padding:40px;color:var(--ink-3)}.mobile-nav{display:none}@media (max-width: 900px){.app{grid-template-columns:1fr}.side{position:static;height:auto;flex-direction:row;flex-wrap:wrap;padding:12px;gap:10px;align-items:center}.side .nav,.side-foot,.brand-sub{display:none}.subject-switch{flex:1}.subject-switch label{display:none}.mobile-nav{display:flex;position:fixed;bottom:0;left:0;right:0;background:var(--graphite);z-index:40;justify-content:space-around;padding:6px 4px calc(6px + env(safe-area-inset-bottom))}.mobile-nav a{color:#cfcdc8;text-decoration:none;font-size:12px;padding:6px 8px;border-radius:6px}.mobile-nav a.active{color:#fff;background:#34373c}.main{padding:18px 14px 90px}.two,.detail-head{grid-template-columns:1fr}.kv{grid-template-columns:120px 1fr}.hide-m{display:none}h1{font-size:23px}}@media print{.side,.mobile-nav,.btns{display:none!important}.app{display:block}}.attention a{text-decoration:none}.attention a:hover{text-decoration:underline}
