:root{
  --nen:#f7f5f2; --the:#fff; --chu:#1c2024; --chu-mo:#6b7280; --vien:#e3ded6;
  --nhan:#b45309; --nhan-nhat:#fef6ec;
  --xanh:#0f766e; --xanh-nhat:#ecfdf5;
  --do:#b91c1c; --do-nhat:#fef2f2; --do-vien:#fecaca;
  --vang-nen:#fffbeb; --vang-vien:#fcd34d; --vang-chu:#92400e;
}
*{box-sizing:border-box}
body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Arial,sans-serif;
  background:var(--nen);color:var(--chu);font-size:14px;line-height:1.5}
a{color:var(--nhan);text-decoration:none}
a:hover{text-decoration:underline}
.so{font-variant-numeric:tabular-nums}

/* topbar */
header.topbar{position:sticky;top:0;z-index:30;background:rgba(255,255,255,.97);
  backdrop-filter:blur(6px);border-bottom:1px solid var(--vien);padding:10px 20px}
.topbar-inner{max-width:1200px;margin:0 auto;display:flex;align-items:center;gap:12px}
.logo-mark{width:34px;height:34px;border-radius:6px;background:var(--nhan);color:#fff;
  display:flex;align-items:center;justify-content:center;font-weight:700;font-size:13px;flex:none}
.topbar-title{font-size:15px;font-weight:650}
.topbar-sub{font-size:12px;color:var(--chu-mo)}
.topbar-nav{margin-left:auto;display:flex;align-items:center;gap:16px;font-size:13px}
.topbar-user{color:var(--chu-mo)}

/* layout */
main.page{max-width:1200px;margin:0 auto;padding:20px}
.card{background:var(--the);border:1px solid var(--vien);border-radius:10px;padding:20px;margin-bottom:16px}
h1{font-size:19px;margin:0 0 10px}
h2{font-size:16px;margin:0 0 10px}
.muted{color:var(--chu-mo)}

/* login */
.login-wrap{display:flex;justify-content:center;padding-top:60px}
.login-card{width:360px}
.login-card label{display:block;margin:12px 0 4px;font-size:13px;font-weight:600}
.login-card input{width:100%}

/* forms */
input,select,textarea{font:inherit;color:inherit;background:#fff;border:1px solid var(--vien);
  border-radius:5px;padding:7px 10px;outline:none;width:100%}
input:focus,select:focus,textarea:focus{border-color:var(--nhan);box-shadow:0 0 0 3px var(--nhan-nhat)}
input[type=number]{text-align:right}
label{font-size:13px}
.form-row{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:10px}
.form-row > *{flex:1;min-width:160px}
.form-error{background:var(--do-nhat);border:1px solid var(--do-vien);color:var(--do);
  padding:8px 12px;border-radius:6px;font-size:13px;margin:10px 0}
.form-warning{background:var(--vang-nen);border:1px solid var(--vang-vien);color:var(--vang-chu);
  padding:8px 12px;border-radius:6px;font-size:13px;margin:10px 0}
.form-success{background:var(--xanh-nhat);border:1px solid #99e6d6;color:var(--xanh);
  padding:8px 12px;border-radius:6px;font-size:13px;margin:10px 0}

/* buttons */
button{font:inherit;cursor:pointer}
.btn{display:inline-flex;align-items:center;gap:6px;font-weight:600;border:none;
  border-radius:6px;padding:8px 14px;cursor:pointer}
.btn-primary{background:var(--nhan);color:#fff}
.btn-primary:hover{filter:brightness(1.08)}
.btn-secondary{background:#fff;color:var(--chu);border:1px solid var(--vien)}
.btn-danger{background:var(--do);color:#fff}
.btn-sm{padding:4px 9px;font-size:12px}
.btn:disabled{opacity:.4;cursor:not-allowed}

/* tables */
table{width:100%;border-collapse:collapse;font-size:13px}
th,td{padding:7px 9px;border-bottom:1px solid var(--vien);text-align:left}
th{background:#faf9f7;font-weight:650;color:var(--chu-mo);white-space:nowrap}
td.num,th.num{text-align:right}
tr.row-group{background:#f0fdf4}
tr.row-group td{font-weight:700}
tr:hover td{background:#fafaf9}
.table-wrap{overflow-x:auto}

/* badges */
.badge{display:inline-block;padding:2px 8px;border-radius:99px;font-size:11px;font-weight:650}
.badge-green{background:var(--xanh-nhat);color:var(--xanh)}
.badge-red{background:var(--do-nhat);color:var(--do)}
.badge-amber{background:var(--vang-nen);color:var(--vang-chu)}
.badge-gray{background:#f1f1ef;color:var(--chu-mo)}

/* dashboard tiles */
.dashboard-links{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px;margin-top:16px}
.tile{display:block;background:var(--nhan-nhat);border:1px solid var(--vien);border-radius:8px;
  padding:16px;font-weight:650;color:var(--chu)}
.tile:hover{border-color:var(--nhan);text-decoration:none}

/* misc */
.toolbar{display:flex;gap:10px;align-items:center;margin-bottom:14px;flex-wrap:wrap}
.toolbar > *:last-child{margin-left:auto}
.pill-tabs{display:flex;gap:6px;margin-bottom:14px}
.pill-tabs a{padding:6px 12px;border-radius:99px;border:1px solid var(--vien);color:var(--chu);font-size:13px}
.pill-tabs a.active{background:var(--nhan);color:#fff;border-color:var(--nhan)}

/* product picker (autocomplete) */
.pp-wrap{position:relative;width:100%}
.pp-input{width:100%}
.pp-dropdown{position:absolute;top:100%;left:0;right:0;z-index:40;background:#fff;
  border:1px solid var(--vien);border-radius:0 0 6px 6px;box-shadow:0 6px 16px rgba(0,0,0,.08);
  max-height:260px;overflow-y:auto;margin-top:-1px}
.pp-item{display:flex;gap:8px;align-items:baseline;padding:6px 10px;cursor:pointer;font-size:12.5px}
.pp-item:hover,.pp-item-active{background:var(--nhan-nhat)}
.pp-code{font-weight:650;flex:none}
.pp-name{color:var(--chu-mo);flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pp-brand{flex:none;color:var(--nhan);font-size:11px}
.pp-empty{padding:8px 10px;color:var(--chu-mo);font-size:12.5px}

/* product database - nhom theo hang muc */
.cat-group{margin-bottom:12px}
.cat-group > summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:10px;
  padding:12px 16px;font-weight:650;font-size:14px;border-radius:8px 8px 0 0}
.cat-group > summary::-webkit-details-marker{display:none}
.cat-group > summary::before{content:'▸';display:inline-block;transition:transform .15s;color:var(--chu-mo);font-size:11px}
.cat-group[open] > summary::before{transform:rotate(90deg)}
.cat-group > summary .cat-count{margin-left:auto;font-weight:500;color:var(--chu-mo);font-size:12px}
.cat-group .cat-body{border:1px solid var(--vien);border-top:none;border-radius:0 0 8px 8px;padding:0 0 4px}
.cat-group.cat-main > summary{background:var(--nhan-nhat);border:1px solid var(--nhan);color:var(--vang-chu)}
.cat-group.cat-other > summary{background:#faf9f7;border:1px solid var(--vien)}
