:root{
  --brand:#0aa2b0; --brand-d:#087f8a; --brand-l:#e6f6f8;
  --accent:#f5a623;
  --ink:#243139; --ink-soft:#54656f; --muted:#8a99a3;
  --line:#e3e8ec; --line-soft:#eef2f4;
  --bg:#eef1f4; --card:#fff;
  --danger:#d64545; --danger-l:#fdecec;
  --radius:7px; --sb-w:232px; --tb-h:54px;
  --shadow:0 1px 2px rgba(16,32,40,.06),0 1px 3px rgba(16,32,40,.07);
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
}
*{box-sizing:border-box}
html,body{margin:0}
body{background:var(--bg);color:var(--ink);font-size:14px;line-height:1.45;-webkit-font-smoothing:antialiased}
a{color:var(--brand-d);text-decoration:none}
a:hover{text-decoration:underline}
h1,h2{margin:0}

/* ---- Top bar ---- */
.topbar{position:fixed;top:0;left:0;right:0;height:var(--tb-h);background:var(--brand);color:#fff;display:flex;align-items:center;gap:16px;padding:0 16px;z-index:50}
.brand{display:flex;align-items:center;gap:9px;color:#fff;font-size:16px;font-weight:600;white-space:nowrap}
.brand:hover{text-decoration:none}
.brand .logo{width:22px;height:22px}
.brand b{font-weight:800}
.topsearch{flex:1;max-width:440px}
.topsearch input{width:100%;height:34px;border:none;border-radius:var(--radius);padding:0 12px;background:rgba(255,255,255,.16);color:#fff;font-size:13px}
.topsearch input::placeholder{color:rgba(255,255,255,.8)}
.topsearch input:focus{outline:none;background:#fff;color:var(--ink)}
.topright{display:flex;align-items:center;gap:14px;margin-left:auto}
.topright .co{opacity:.9;font-size:13px}
.user{display:flex;align-items:center;gap:8px}
.avatar{width:28px;height:28px;border-radius:50%;background:rgba(255,255,255,.22);display:grid;place-items:center;font-weight:700;font-size:13px}
.uname{font-size:13px}
.logout{color:#fff;opacity:.85;font-size:17px;line-height:1}
.logout:hover{opacity:1;text-decoration:none}
.menu-btn{display:none;background:none;border:none;color:#fff;font-size:20px;cursor:pointer;padding:0}

/* ---- Sidebar ---- */
.sidebar{position:fixed;top:var(--tb-h);bottom:0;left:0;width:var(--sb-w);background:#fff;border-right:1px solid var(--line);overflow-y:auto;padding:8px 0 24px;z-index:40}
.nav-group{margin:2px 0 8px}
.nav-group-label{font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);padding:9px 18px 4px;font-weight:700}
.nav-item{display:flex;align-items:center;gap:10px;padding:8px 18px;color:var(--ink-soft);font-size:13.5px;border-left:3px solid transparent}
.nav-item:hover{background:var(--line-soft);text-decoration:none;color:var(--ink)}
.nav-item.active{background:var(--brand-l);color:var(--brand-d);border-left-color:var(--brand);font-weight:600}
.nav-item .ico{width:18px;height:18px;display:inline-flex;flex:0 0 18px}
.nav-item .ico svg{width:18px;height:18px}

/* ---- Content ---- */
.content{margin-left:var(--sb-w);margin-top:var(--tb-h);padding:22px 24px;min-height:calc(100vh - var(--tb-h))}
.page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin:2px 0 18px}
.page-head h1{font-size:21px;font-weight:650}
.page-head .sub{margin:3px 0 0;color:var(--ink-soft);font-size:13px}
.page-actions{display:flex;gap:8px;flex:0 0 auto}
.muted{color:var(--muted)}

/* ---- Cards + grids ---- */
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);margin-bottom:18px;overflow:hidden}
.card-head{padding:13px 16px;border-bottom:1px solid var(--line)}
.card-head h2{font-size:14.5px;font-weight:650}
.card-head .muted{font-weight:400}
.grid{width:100%;border-collapse:collapse;font-size:13.5px}
.grid thead th{background:#f6f8f9;text-align:left;padding:10px 14px;font-weight:700;color:var(--ink-soft);border-bottom:1px solid var(--line);white-space:nowrap;font-size:11.5px;text-transform:uppercase;letter-spacing:.02em}
.grid tbody td{padding:11px 14px;border-bottom:1px solid var(--line-soft);vertical-align:middle}
.grid tbody tr:last-child td{border-bottom:none}
.grid tbody tr:hover{background:#fafcfc}
.grid .r{text-align:right}
.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12.5px}
.grid .empty{color:var(--muted);text-align:center;padding:26px}
.uom{color:var(--muted);font-size:11.5px}
.rowact a{font-size:12.5px}
td.danger,.danger{color:var(--danger);font-weight:600}

/* ---- Tags ---- */
.tag{display:inline-block;padding:2px 8px;border-radius:20px;background:var(--line-soft);color:var(--ink-soft);font-size:11.5px;font-weight:600;text-transform:capitalize}
.tag.t-product{background:#e7f3ff;color:#1b6fb3}
.tag.t-material{background:#fdf0e3;color:#b5721a}
.tag.t-service{background:#eef0f2;color:#5a6b75}

/* ---- Toolbar + buttons ---- */
.toolbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;gap:10px}
.toolbar .search{display:flex;gap:8px}
.toolbar .search input{height:34px;border:1px solid var(--line);border-radius:var(--radius);padding:0 12px;min-width:240px;font-size:13px}
.btn{display:inline-flex;align-items:center;gap:6px;height:34px;padding:0 14px;border-radius:var(--radius);border:1px solid var(--line);background:#fff;color:var(--ink);font-size:13px;font-weight:600;cursor:pointer;white-space:nowrap;text-decoration:none}
.btn:hover{background:#f6f8f9;text-decoration:none}
.btn-primary{background:var(--brand);border-color:var(--brand);color:#fff}
.btn-primary:hover{background:var(--brand-d)}
.btn-ghost{background:transparent;border-color:transparent;color:var(--ink-soft)}
.btn-block{width:100%;justify-content:center}
.btn-danger-ghost{border-color:transparent;color:var(--danger);background:transparent}
.btn-danger-ghost:hover{background:var(--danger-l)}

/* ---- KPIs ---- */
.kpi-row{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:18px}
.kpi{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:16px 18px;box-shadow:var(--shadow)}
.kpi-num{font-size:26px;font-weight:700;line-height:1.1}
.kpi-label{color:var(--ink-soft);font-size:12.5px;margin-top:4px}
.kpi.warn .kpi-num{color:var(--accent)}
.cols{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.cols .card{margin-bottom:0}

/* ---- Forms ---- */
.form .form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px 18px;padding:18px}
.form label{display:flex;flex-direction:column;gap:5px;font-size:12.5px;font-weight:600;color:var(--ink-soft)}
.form label.full{padding:0 18px 6px}
.form input,.form select,.form textarea{height:36px;border:1px solid var(--line);border-radius:var(--radius);padding:0 11px;font-size:13.5px;color:var(--ink);font-family:inherit;background:#fff}
.form textarea{height:auto;padding:9px 11px}
.form input:focus,.form select:focus,.form textarea:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-l)}
.checks{display:flex;gap:22px;padding:2px 18px 8px}
.chk{flex-direction:row;align-items:center;gap:8px;font-weight:600;color:var(--ink)}
.chk input{height:auto}
.form-foot{display:flex;align-items:center;gap:10px;padding:14px 18px;border-top:1px solid var(--line);background:#fbfcfd}
.inline-del{margin-left:auto}

/* ---- Flash + stub ---- */
.flash{padding:11px 15px;border-radius:var(--radius);margin-bottom:14px;font-size:13.5px;font-weight:500}
.flash.success{background:#e8f7ee;color:#1f7a41;border:1px solid #bfe6cd}
.flash.error{background:var(--danger-l);color:#a82c2c;border:1px solid #f2c4c4}
.stub{padding:38px;text-align:center}
.stub-ico{width:46px;height:46px;margin:0 auto 10px;color:var(--brand)}
.stub-ico svg{width:46px;height:46px}
.stub h2{margin-bottom:8px}
.stub p{max-width:540px;margin:6px auto;color:var(--ink-soft)}

/* ---- Login ---- */
.login-page{display:grid;place-items:center;min-height:100vh;background:linear-gradient(135deg,#0aa2b0,#075e67)}
.login-card{background:#fff;width:360px;max-width:92vw;border-radius:12px;padding:30px 28px;box-shadow:0 12px 40px rgba(0,0,0,.22)}
.login-brand{display:flex;align-items:center;gap:9px;justify-content:center;font-size:20px;font-weight:700;color:var(--brand-d)}
.login-brand .logo{width:26px;height:26px}
.login-sub{text-align:center;color:var(--muted);margin:4px 0 18px;font-size:13px}
.login-card form{display:flex;flex-direction:column;gap:13px}
.login-card label{display:flex;flex-direction:column;gap:5px;font-size:12.5px;font-weight:600;color:var(--ink-soft)}
.login-card input{height:38px;border:1px solid var(--line);border-radius:var(--radius);padding:0 12px;font-size:14px}
.login-card input:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-l)}
.login-foot{text-align:center;color:var(--muted);font-size:11.5px;margin-top:16px}

@media(max-width:1000px){.kpi-row{grid-template-columns:repeat(2,1fr)}.cols{grid-template-columns:1fr}.form .form-grid{grid-template-columns:1fr}}
@media(max-width:820px){
  .sidebar{transform:translateX(-100%);transition:transform .2s;box-shadow:2px 0 12px rgba(0,0,0,.12)}
  body.nav-open .sidebar{transform:none}
  .content{margin-left:0}
  .menu-btn{display:block}
  .topsearch,.uname,.topright .co{display:none}
}
