:root{--bg:#f6f4ef;--panel:#fff;--ink:#1f2a27;--muted:#6b756f;--line:#e6e1d8;--brand:#2f5d50;--brand2:#e4eee9;--warn:#b5651d;--warnbg:#fbf0e3;--bad:#b23b3b;--badbg:#fbebeb;--ok:#2f7a4f;--okbg:#e5f4e4;--blue:#2b5f8a;--bluebg:#e7f1fb;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;color:var(--ink);font-size:15px}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);display:grid;grid-template-columns:240px 1fr;min-height:100vh}
body.plain{display:block}
.narrow{max-width:520px;margin:12vh auto;padding:0 20px}
aside{background:#fbfaf7;border-right:1px solid var(--line);padding:20px 14px;display:flex;flex-direction:column;gap:18px;position:sticky;top:0;height:100vh}
.brand{display:flex;gap:10px;align-items:center;text-decoration:none;color:var(--ink);font-weight:700;font-size:18px}
.brand small{display:block;font-size:10px;letter-spacing:.12em;color:var(--muted);font-weight:600}
.logo{width:38px;height:38px;border-radius:10px;background:var(--brand);color:#fff;display:grid;place-items:center;font-size:20px}
nav{display:flex;flex-direction:column;gap:2px}
nav button{all:unset;cursor:pointer;padding:9px 12px;border-radius:9px;color:#3c4743;display:flex;gap:10px;align-items:center}
nav button:hover{background:#f0ede6}
nav button.active{background:var(--brand2);color:var(--brand);font-weight:600}
nav .badge{margin-left:auto}
.sidefoot{margin-top:auto;font-size:13px;color:var(--muted);display:flex;flex-direction:column;gap:6px}
.sidefoot b{color:var(--ink);display:block}
main{padding:24px 32px 60px;min-width:0}
header{display:flex;gap:16px;align-items:flex-end;justify-content:space-between;flex-wrap:wrap;margin-bottom:18px}
.eyebrow{font-size:11px;letter-spacing:.12em;color:var(--muted);font-weight:600}
h1{margin:4px 0;font-size:26px}
header p{margin:0;color:var(--muted)}
.headcontrols{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.menu{display:none}
button,.primary,a.primary{white-space:nowrap;font:inherit;border:1px solid var(--line);background:#fff;border-radius:9px;padding:8px 14px;cursor:pointer;color:var(--ink);text-decoration:none;display:inline-flex;align-items:center;gap:6px}
button:hover{border-color:#cfc8bb}
.primary,a.primary{background:var(--brand);border-color:var(--brand);color:#fff}
.primary:hover{background:#264d42}
button:disabled{opacity:.5;cursor:not-allowed}
.textbtn{all:unset;cursor:pointer;color:var(--brand);font-weight:600;font-size:13px}
.textbtn.danger{color:var(--bad)}
.small{padding:5px 10px;font-size:13px}
input,select,textarea{font:inherit;border:1px solid var(--line);border-radius:8px;padding:8px 10px;background:#fff;color:var(--ink);width:100%}
input[type=month]{width:auto}
textarea{min-height:64px;resize:vertical}
.panel{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:18px;margin-bottom:16px}
.panel.empty{text-align:center;color:var(--muted);padding:36px}
.panel.empty b{display:block;color:var(--ink);margin-bottom:6px;font-size:17px}
.panelhead{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;margin-bottom:12px;flex-wrap:wrap}
.panelhead h2{margin:0;font-size:17px}
.panelhead p{margin:2px 0 0;color:var(--muted);font-size:13px}
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:12px;margin-bottom:16px}
.stat{background:#fff;border:1px solid var(--line);border-radius:14px;padding:14px 16px}
.stat span{font-size:13px;color:var(--muted)}
.stat strong{display:block;font-size:22px;margin:6px 0 2px}
.stat small{color:var(--muted);font-size:12px}
.stat.emphasis{background:var(--brand);color:#fff;border-color:var(--brand)}
.stat.emphasis span,.stat.emphasis small{color:#d7e6e0}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.tablewrap{overflow-x:auto}
table{width:100%;border-collapse:collapse;font-size:14px}
th{font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);text-align:left;font-weight:600;padding:8px;border-bottom:1px solid var(--line);white-space:nowrap}
td{padding:9px 8px;border-bottom:1px solid #f1ede6;vertical-align:top}
tr.click{cursor:pointer}
tr.click:hover td{background:#faf8f3}
.right{text-align:right}
.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.muted{color:var(--muted)}
.neg{color:var(--blue)}
.badge{display:inline-block;padding:2px 8px;border-radius:999px;font-size:12px;font-weight:600;background:#f0ede6;color:#555;white-space:nowrap}
.badge.green{background:var(--okbg);color:var(--ok)}
.badge.red{background:var(--badbg);color:var(--bad)}
.badge.orange{background:var(--warnbg);color:var(--warn)}
.badge.blue{background:var(--bluebg);color:var(--blue)}
.alerts{display:flex;flex-direction:column;gap:8px}
.alertrow{display:flex;gap:10px;align-items:center;padding:10px 12px;border-radius:10px;background:var(--warnbg);color:#6b3f12;font-size:14px}
.alertrow.red{background:var(--badbg);color:#7a2323}
.alertrow.blue{background:var(--bluebg);color:#1f4766}
.alertrow .textbtn{margin-left:auto}
#alert:not(:empty){background:var(--badbg);color:#7a2323;padding:10px 14px;border-radius:10px;margin-bottom:14px}
.note{font-size:13px;color:var(--muted);margin-top:10px}
dialog{border:none;border-radius:16px;padding:0;width:min(720px,94vw);max-height:92vh;box-shadow:0 20px 60px rgba(0,0,0,.25)}
dialog.wide{width:min(1000px,96vw)}
dialog::backdrop{background:rgba(20,30,26,.35)}
dialog form{padding:22px;display:flex;flex-direction:column;gap:12px;max-height:92vh;overflow:auto}
dialog h2{margin:0}
dialog p{margin:0;color:var(--muted);font-size:14px}
.fields{display:grid;grid-template-columns:1fr 1fr;gap:10px 14px}
.field{display:flex;flex-direction:column;gap:4px;font-size:13px;color:var(--muted);font-weight:600}
.field.full{grid-column:1/-1}
.sizes{display:grid;grid-template-columns:repeat(5,1fr);gap:8px}
.sizes label{font-size:12px;color:var(--muted);font-weight:600;display:flex;flex-direction:column;gap:3px}
.rows{display:flex;flex-direction:column;gap:6px}
.rowline{display:grid;grid-template-columns:2fr 1fr 2fr auto;gap:8px;align-items:center}
.actions{display:flex;justify-content:flex-end;flex-wrap:wrap;gap:8px;position:sticky;bottom:-22px;background:#fff;padding:10px 0 0}
.formerror{color:var(--bad)!important;font-weight:600}
.formerror:empty{display:none}
#toast{position:fixed;bottom:22px;left:50%;transform:translateX(-50%);background:var(--ink);color:#fff;padding:10px 16px;border-radius:10px;opacity:0;transition:.2s;pointer-events:none}
#toast.show{opacity:1}
.sizegrid td,.sizegrid th{text-align:right}
.sizegrid td:first-child,.sizegrid th:first-child{text-align:left}
.timeline{font-size:12px;color:var(--muted);margin-top:4px}
.tabs{display:flex;gap:6px;margin-bottom:12px;flex-wrap:wrap}
.tabs button.active{background:var(--brand2);border-color:var(--brand);color:var(--brand);font-weight:600}
@media (max-width:860px){
 body{grid-template-columns:1fr}
 aside{position:fixed;inset:0 30% 0 0;z-index:10;transform:translateX(-105%);transition:.2s;box-shadow:0 0 40px rgba(0,0,0,.2)}
 body.navopen aside{transform:none}
 .menu{display:inline-flex}
 main{padding:16px}
 .grid2,.fields{grid-template-columns:1fr}
 .sizes{grid-template-columns:repeat(3,1fr)}
}
.printafter{display:flex;gap:8px;align-items:center;font-size:13px;color:var(--muted)}
.printafter input{width:auto}
/* ---- Bản in A5 ---- */
#print{display:none}
@media print{
 @page{size:A5 portrait;margin:9mm 9mm 8mm}
 body{display:block;background:#fff;font-size:10.5pt;color:#000}
 body>*:not(#print){display:none!important}
 #print{display:block}
 .sheet{break-after:page;page-break-after:always;font-family:"Times New Roman",Times,serif}
 .sheet:last-child{break-after:auto;page-break-after:auto}
 .ph{display:flex;justify-content:space-between;align-items:flex-start;border-bottom:1px solid #000;padding-bottom:4px;margin-bottom:6px}
 .ph b{font-size:12pt;display:block}.ph small{display:block;font-size:8.5pt}
 .pno{text-align:right}.pno small{font-style:italic}
 .sheet h1{font-size:14pt;text-align:center;margin:6px 0 0;letter-spacing:.02em}
 .pdate{text-align:center;font-style:italic;margin:2px 0 8px;color:#000}
 .sheet h2{font-size:11pt;margin:8px 0 3px}
 .sheet table{width:100%;border-collapse:collapse;font-size:10pt;margin:4px 0}
 .pgrid th,.pgrid td,.plist th,.plist td{border:1px solid #000;padding:3px 4px;text-transform:none;letter-spacing:0;color:#000;font-weight:normal}
 .pgrid th,.plist th{font-weight:bold;background:#eee;-webkit-print-color-adjust:exact;print-color-adjust:exact}
 .pgrid td{text-align:center;height:20px}.pgrid td:first-child{text-align:left;white-space:nowrap}
 .plist td.r,.plist th.r{text-align:right}
 .pinfo td{border:none;padding:1px 0;color:#000}.pinfo td:first-child{width:38%}
 .pnote{margin:4px 0;font-size:9.5pt;color:#000}
 .psign{display:flex;justify-content:space-around;text-align:center;margin-top:12px;min-height:30mm}
 .psign b{display:block}.psign small{font-style:italic;font-size:8.5pt}
 .pmaker{font-size:8pt;color:#444;margin-top:2px}
}
