@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=Chakra+Petch:wght@300;400;600;700&family=Space+Grotesk:wght@500;600;700&display=swap');
/* ===== Spool WMS — MID theme (slate + blue · dark) ===== */
:root{
  --bg:#0f172a; --surface:#1e293b; --surface2:#182236; --sidebar:#0b1120;
  --text:#f1f5f9; --dim:#94a3b8; --mute:#64748b; --border:#334155;
  --accent:#2563eb; --accent-weak:#1e3a8a; --accent-dark:#1d4ed8; --accent2:#3b82f6;
  --good:#22c55e; --good-bg:#14331f; --warn:#f59e0b; --warn-bg:#3a2a12; --bad:#ef4444; --bad-bg:#3a1719;
  --radius:12px; --radius-sm:10px; --shadow-sm:0 1px 2px rgba(0,0,0,.35);
  --shadow:0 4px 6px rgba(0,0,0,.3),0 12px 30px -12px rgba(0,0,0,.65);
  --font:'Inter','Chakra Petch',system-ui,-apple-system,sans-serif;
  --mono:'Space Grotesk',ui-monospace,"Cascadia Mono",Consolas,monospace;
}
*,*::before,*::after{box-sizing:border-box}
html,body{margin:0;height:100%}
body{background:var(--bg);color:var(--text);font-family:var(--font);-webkit-font-smoothing:antialiased}
button{font:inherit;color:inherit;cursor:pointer;border:0;background:none}
a{color:inherit;text-decoration:none}
h1,h2,h3,h4,p{margin:0}ul{margin:0;padding:0;list-style:none}
input{font:inherit}
.tnum{font-variant-numeric:tabular-nums}
.mono{font-family:var(--mono)}

/* ---- app shell ---- */
.app{display:grid;grid-template-columns:236px 1fr;min-height:100vh}
.side{background:var(--sidebar);border-right:1px solid var(--border);padding:20px 14px;display:flex;flex-direction:column;gap:6px}
.brand{display:flex;align-items:center;gap:11px;padding:4px 8px 18px}
.brand .logo{width:34px;height:34px;border-radius:9px;background:linear-gradient(135deg,var(--accent),var(--accent-dark));display:grid;place-items:center;color:#fff;font-weight:800;font-size:17px;box-shadow:0 4px 14px -4px var(--accent)}
.brand .bt{font-weight:800;font-size:18px;letter-spacing:-.01em}
.brand .bs{font-size:10.5px;color:var(--mute);letter-spacing:.04em;margin-top:1px}
.nav-label{font-size:10.5px;letter-spacing:.13em;text-transform:uppercase;color:var(--mute);font-weight:700;padding:12px 10px 5px}
.nav a{display:flex;align-items:center;gap:11px;padding:9px 11px;border-radius:9px;color:var(--sidebar-text);font-size:13.5px;font-weight:500;transition:background .12s,color .12s}
.nav a .ic{width:17px;height:17px;opacity:.82}
.nav a:hover{background:rgba(255,255,255,.06);color:#fff}
.nav a.active{background:var(--accent);color:#fff;font-weight:700}
.nav a.active .ic{opacity:1}
.side-foot{margin-top:auto;display:flex;align-items:center;gap:10px;padding:11px;border-radius:10px;background:var(--surface2)}
.avatar{width:32px;height:32px;border-radius:50%;background:var(--accent);color:#fff;display:grid;place-items:center;font-weight:700;font-size:13px}
.side-foot .nm{font-size:12.5px;font-weight:600}.side-foot .rl{font-size:10.5px;color:var(--mute)}
.side-foot .lo{margin-left:auto;color:var(--mute);font-size:16px}

.main{display:flex;flex-direction:column;min-width:0}
.topbar{display:flex;align-items:center;gap:16px;padding:14px 22px;background:var(--surface);border-bottom:1px solid var(--border)}
.search{flex:1;max-width:380px;display:flex;align-items:center;gap:9px;padding:9px 13px;border-radius:10px;background:var(--surface2);border:1px solid var(--border)}
.search input{border:0;background:none;outline:none;width:100%;font-size:13px;color:var(--text)}
.search .ic{width:15px;height:15px;opacity:.55;color:var(--dim)}
.topbar .spacer{flex:1}
.topsearch{width:300px;max-width:42vw;padding:9px 13px;border-radius:10px;background:var(--surface2);border:1px solid var(--border);outline:none;font-size:13px;color:var(--text);font-family:inherit}
.topsearch:focus{border-color:var(--accent)}
.topsearch::placeholder{color:var(--dim)}
#topActions{display:flex;align-items:center;gap:10px}
.whead{display:grid;grid-template-columns:repeat(5,1fr);gap:18px 22px;align-items:start}
.whead .wc{text-align:center}
.whead .wc-full{grid-column:1/-1;text-align:left}
.whead .wv{font-weight:700;margin-top:6px}
.whead .wc-full .wv{font-weight:500}
@media(max-width:760px){.whead{grid-template-columns:repeat(2,1fr)}}
.stock-badge{display:inline-block;padding:4px 11px;border-radius:20px;font-size:11.5px;font-weight:700;letter-spacing:.03em}
.stock-badge.deducted{background:var(--good-bg,rgba(34,197,94,.14));color:var(--good)}
.stock-badge.return{background:var(--warn-bg,rgba(245,158,11,.16));color:var(--warn)}
/* cut popup (ML ต้น–ปลาย) */
.cut-add{background:var(--surface2);border:1px solid var(--border);border-radius:12px;padding:15px;margin:6px 0 4px}
.cut-drumbar{display:flex;align-items:center;gap:8px;margin-top:8px;font-size:12px;color:var(--dim)}
.cut-chip{display:inline-flex;padding:4px 10px;border-radius:20px;font-size:12px;font-weight:700;background:var(--good-bg);color:var(--good)}
.cut-chip.low{background:var(--warn-bg);color:var(--warn)}
.cut-grid3{display:grid;grid-template-columns:1fr 1fr 1.1fr;gap:12px;align-items:end;margin-top:4px}
.cut-calc{font-size:13px;color:var(--dim);line-height:1.5}
.cut-calc b{color:var(--good);font-size:17px;font-variant-numeric:tabular-nums}
.cut-calc.over b{color:var(--bad)}
.cut-warn{display:none;margin-top:10px;background:var(--bad-bg);color:#fca5a5;border:1px solid #7f1d1d;padding:8px 12px;border-radius:8px;font-size:12.5px}
.cut-warn.show{display:block}
.btn.add{width:100%;margin-top:12px;background:var(--accent-weak);border-color:var(--accent);color:#bfdbfe}
.btn:disabled{opacity:.45;cursor:not-allowed}
.cut-pill{display:inline-block;padding:3px 10px;border-radius:20px;font-size:11px;font-weight:700;background:var(--warn-bg);color:var(--warn);margin-left:8px}
.cut-tot{display:flex;justify-content:flex-end;gap:10px;align-items:baseline;padding:10px 4px 0;font-size:13px;color:var(--dim)}
.cut-tot b{color:var(--text);font-size:17px;font-variant-numeric:tabular-nums}
input.inbad{border-color:var(--bad)!important}
.pwwrap{position:relative}
.pwwrap input{width:100%;padding-right:42px}
.pweye{position:absolute;right:4px;top:50%;transform:translateY(-50%);background:none;border:0;cursor:pointer;font-size:16px;opacity:.7;padding:5px;line-height:1}
.pweye:hover{opacity:1}
.zonechecks{display:flex;flex-wrap:wrap;gap:8px;margin-top:4px}
.zchk{display:inline-flex;align-items:center;gap:5px;padding:6px 11px;background:var(--surface2);border:1px solid var(--border);border-radius:8px;font-size:12.5px;cursor:pointer;font-family:var(--mono)}
.zchk:has(input:checked){border-color:var(--accent);background:var(--accent-weak);color:var(--accent)}
.zchk input{cursor:pointer;margin:0}
.ret-warn{background:var(--warn-bg);color:var(--warn);border:1px solid #7c5310;padding:11px 14px;border-radius:9px;font-size:13px;margin-bottom:14px}
.ret-warn b{color:#fbbf24}
.tbtn{display:flex;align-items:center;gap:7px;padding:8px 12px;border-radius:9px;border:1px solid var(--border);background:var(--surface);color:var(--dim);font-size:12.5px;font-weight:600}
.tbtn.primary{background:var(--accent);color:#fff;border-color:transparent;box-shadow:0 6px 16px -8px var(--accent)}
.tbtn .ic{width:15px;height:15px}

.content{padding:22px;display:flex;flex-direction:column;gap:18px}
.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap}
.page-head h2{font-size:22px;font-weight:800;letter-spacing:-.01em}
.page-head .sub{color:var(--dim);font-size:13px;margin-top:4px}

/* ---- KPIs ---- */
.kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:18px}
.kpi{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:18px;box-shadow:var(--shadow-sm);position:relative}
.kpi .klabel{font-size:11.5px;color:var(--dim);font-weight:600}
.kpi .kval{font-size:30px;font-weight:700;margin-top:9px;letter-spacing:-.02em;font-variant-numeric:tabular-nums;line-height:1}
.kpi .kunit{font-size:14px;color:var(--mute);font-weight:600;margin-left:4px}
.kpi .kfoot{margin-top:11px;font-size:11.5px;color:var(--dim)}
.kpi .kicon{position:absolute;top:16px;right:16px;width:34px;height:34px;border-radius:9px;display:grid;place-items:center;background:var(--accent-weak);color:var(--accent)}
.kpi .kicon svg{width:18px;height:18px}
.kpi[style*="cursor:pointer"]{transition:border-color .15s,box-shadow .15s,transform .1s}
.kpi[style*="cursor:pointer"]:hover{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent) inset}
.kpi.kpi-active{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent) inset,var(--shadow-sm)}
.kpi.alert .kicon{background:var(--bad-bg);color:var(--bad)}
.kpi.alert .kval{color:var(--bad)}
.trend{font-weight:700}.trend.up{color:var(--good)}.trend.down{color:var(--bad)}

/* ---- panels ---- */
.grid2{display:grid;grid-template-columns:1.55fr 1fr;gap:18px}
.panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm)}
.panel-head{display:flex;align-items:center;justify-content:space-between;padding:16px 18px;border-bottom:1px solid var(--border)}
.panel-head h3{font-size:14.5px;font-weight:700}
.panel-head .link{font-size:12px;color:var(--accent);font-weight:600}
.panel-body{padding:16px 18px}

.bars{display:flex;flex-direction:column;gap:13px}
.bar-row{display:grid;grid-template-columns:96px 1fr 64px;align-items:center;gap:12px}
.bar-row .bl{font-size:12px;font-weight:600;color:var(--dim);font-family:var(--mono)}
.bar-track{height:9px;border-radius:6px;background:var(--surface2);overflow:hidden}
.bar-fill{height:100%;border-radius:6px;background:linear-gradient(90deg,var(--accent),var(--accent2))}
.bar-row .bv{font-size:12px;font-weight:700;text-align:right;font-variant-numeric:tabular-nums}

.donut-wrap{display:flex;align-items:center;gap:20px}
.donut{width:132px;height:132px;border-radius:50%;flex:none;display:grid;place-items:center;position:relative}
.donut::after{content:"";position:absolute;inset:16px;border-radius:50%;background:var(--surface)}
.donut .dc{position:relative;text-align:center}
.donut .dc .n{font-size:26px;font-weight:800;line-height:1;font-variant-numeric:tabular-nums}
.donut .dc .l{font-size:10px;color:var(--dim);margin-top:3px}
.legend{display:flex;flex-direction:column;gap:11px;flex:1}
.legend li{display:flex;align-items:center;gap:9px;font-size:12.5px;color:var(--dim)}
.legend .dot{width:10px;height:10px;border-radius:3px}
.legend .lv{margin-left:auto;font-weight:700;color:var(--text);font-variant-numeric:tabular-nums}

/* ---- table ---- */
.tbl-wrap{overflow-x:auto}
table{width:100%;border-collapse:collapse;font-size:13px}
thead th{text-align:center;padding:12px 18px;font-size:12.5px;letter-spacing:.04em;text-transform:uppercase;color:var(--dim);font-weight:700;border-bottom:1px solid var(--border);background:var(--surface2);white-space:nowrap}
thead th.num,tbody td.num{text-align:right;font-variant-numeric:tabular-nums}
tbody td{padding:13px 18px;border-bottom:1px solid var(--border);text-align:center}
tbody tr:last-child td{border-bottom:0}
tbody tr:hover{background:var(--surface2)}
.did{font-family:var(--mono);font-weight:700;font-size:12.5px;background:var(--surface2);padding:3px 8px;border-radius:6px;border:1px solid var(--border)}
.vcode{display:inline-block;margin-left:5px;font-family:var(--mono);font-weight:700;font-size:11px;color:var(--accent);background:var(--accent-weak);padding:2px 6px;border-radius:5px;vertical-align:middle}
.ctype{font-weight:600}.cwh{font-family:var(--mono);font-size:12px;color:var(--dim)}
.rem{font-weight:700;font-variant-numeric:tabular-nums}
.chip{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:999px;font-size:11px;font-weight:700}
.chip .cd{width:6px;height:6px;border-radius:50%}
.chip.AVAILABLE{background:var(--good-bg);color:var(--good)}.chip.AVAILABLE .cd{background:var(--good)}
.chip.LOW{background:var(--warn-bg);color:var(--warn)}.chip.LOW .cd{background:var(--warn)}
.chip.DEPLETED{background:var(--bad-bg);color:var(--bad)}.chip.DEPLETED .cd{background:var(--bad)}

.muted{color:var(--mute)}
.skeleton{color:transparent;background:linear-gradient(90deg,#1e293b,#334155,#1e293b);border-radius:6px;animation:sk 1.2s infinite}
@keyframes sk{0%{background-position:-200px 0}100%{background-position:200px 0}}
.sk-bar{display:inline-block;width:92px;height:26px;border-radius:7px;background:linear-gradient(90deg,#1e293b,#334155,#1e293b);background-size:220px 100%;animation:sk 1.2s infinite;vertical-align:middle}
.sk-bar.sm{width:64px;height:12px}
@media (prefers-reduced-motion:reduce){.sk-bar,.skeleton{animation:none}}

/* ---- login ---- */
.login-wrap{min-height:100vh;display:grid;place-items:center;padding:20px;position:relative;overflow:hidden;
  background:
    radial-gradient(820px 520px at 12% 6%,#1d4ed84d,transparent 55%),
    radial-gradient(720px 520px at 88% 14%,#0ea5a330,transparent 55%),
    radial-gradient(900px 640px at 50% 118%,#7c3aed2e,transparent 58%),
    var(--bg)}
.login-wrap::before{content:"";position:absolute;inset:0;pointer-events:none;z-index:0;
  background-image:linear-gradient(rgba(148,163,184,.045) 1px,transparent 1px),linear-gradient(90deg,rgba(148,163,184,.045) 1px,transparent 1px);
  background-size:46px 46px;-webkit-mask-image:radial-gradient(circle at 50% 42%,#000,transparent 76%);mask-image:radial-gradient(circle at 50% 42%,#000,transparent 76%)}
.login-wrap::after{content:"";position:absolute;width:540px;height:540px;border-radius:50%;left:-140px;top:-160px;pointer-events:none;z-index:0;
  background:radial-gradient(circle,#2563eb40,transparent 66%);filter:blur(6px);animation:orbFloat 16s ease-in-out infinite}
@keyframes orbFloat{0%,100%{transform:translate(0,0) scale(1)}50%{transform:translate(70px,60px) scale(1.12)}}
.login{width:100%;max-width:400px;position:relative;z-index:1;border-radius:22px;padding:36px 34px;
  background:linear-gradient(180deg,#1e293b,#151f30);border:1px solid #2b3a52;
  box-shadow:0 30px 70px -24px rgba(0,0,0,.7),0 0 0 1px rgba(37,99,235,.08),inset 0 1px 0 rgba(255,255,255,.04)}
.login.premium::before{content:"";position:absolute;inset:0;border-radius:22px;padding:1px;pointer-events:none;
  background:linear-gradient(140deg,rgba(59,130,246,.55),transparent 40%,transparent 70%,rgba(14,165,163,.35));
  -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude}
.login .lbrand{display:flex;align-items:center;gap:13px;margin-bottom:4px}
.login .lbrand .logo{width:52px;height:52px;border-radius:14px;background:linear-gradient(135deg,#3b82f6,#1d4ed8);display:grid;place-items:center;color:#fff;flex:none;
  box-shadow:0 10px 26px -6px rgba(37,99,235,.7),inset 0 1px 0 rgba(255,255,255,.35)}
.login .lbrand .logo svg{width:27px;height:27px}
.login .lbtitle{font-size:28px;font-weight:800;letter-spacing:.02em;line-height:1;background:linear-gradient(90deg,#fff,#bfdbfe);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
.login .lbsub{font-size:9.5px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--mute);margin-top:5px}
.login .sub{color:var(--dim);font-size:13px;margin:14px 0 22px;padding-top:14px;border-top:1px solid var(--border)}
.field{margin-bottom:14px}
.field label{display:block;font-size:12px;font-weight:600;color:var(--dim);margin-bottom:6px}
.field input{width:100%;padding:11px 13px;border-radius:10px;border:1px solid var(--border);background:var(--surface2);outline:none;transition:border-color .15s,box-shadow .15s}
.field input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-weak)}
.btn-primary{width:100%;padding:12px;border-radius:10px;background:var(--accent);color:#fff;font-weight:700;font-size:14px;box-shadow:0 8px 18px -8px var(--accent);transition:filter .15s}
.btn-primary:hover{filter:brightness(1.05)}
.btn-primary:disabled{opacity:.6;cursor:default}
.login .err{background:var(--bad-bg);color:var(--bad);font-size:12.5px;padding:9px 12px;border-radius:9px;margin-bottom:14px;display:none}
.login .err.show{display:block}
.login-credit{position:relative;z-index:1;margin-top:20px;text-align:center;font-size:12px;color:var(--mute);letter-spacing:.04em;display:flex;align-items:center;justify-content:center;gap:7px}
.login-credit b{color:var(--dim);font-weight:800;letter-spacing:.03em}
.login-credit .dbadge{display:inline-grid;place-items:center;width:20px;height:20px;border-radius:6px;background:linear-gradient(135deg,#3b82f6,#1d4ed8);color:#fff;font-size:9px;font-weight:800;box-shadow:0 3px 8px -2px rgba(37,99,235,.6)}
@media (prefers-reduced-motion:reduce){.login-wrap::after{animation:none}}

/* ---- page header + buttons ---- */
.btn{display:inline-flex;align-items:center;gap:7px;padding:9px 15px;border-radius:10px;font-size:13px;font-weight:700;border:1px solid var(--border);background:var(--surface);color:var(--text);transition:.15s}
.btn:hover{border-color:var(--accent)}
.btn.primary{background:var(--accent);color:#fff;border-color:transparent;box-shadow:0 8px 18px -8px var(--accent)}
.btn.primary:hover{filter:brightness(1.06)}
.btn.danger{color:var(--bad);border-color:transparent;background:var(--bad-bg)}
.btn.sm{padding:6px 10px;font-size:12px;border-radius:8px}
.btn:disabled{opacity:.55;cursor:default}
.btn .ic{width:15px;height:15px}
.icon-btn{width:32px;height:32px;border-radius:8px;display:grid;place-items:center;color:var(--dim);border:1px solid transparent}
.icon-btn:hover{background:var(--surface2);color:var(--accent)}
.icon-btn.del:hover{color:var(--bad);background:var(--bad-bg)}
.row-actions{display:flex;gap:4px;justify-content:flex-end}

/* ---- badges ---- */
.badge{display:inline-flex;align-items:center;gap:5px;padding:3px 9px;border-radius:7px;font-size:11px;font-weight:700}
.badge.role-SUPER_ADMIN{background:#2e1065;color:#c4b5fd}
.badge.role-ADMIN{background:var(--accent-weak);color:#93c5fd}
.badge.role-MANAGER{background:var(--good-bg);color:var(--good)}
.badge.role-MAKER{background:#172554;color:#93c5fd}
.badge.party{background:var(--surface2);color:var(--dim);border:1px solid var(--border)}
.badge.off{background:var(--surface2);color:var(--mute)}
.dot-on{width:7px;height:7px;border-radius:50%;background:var(--good);display:inline-block}
.dot-off{width:7px;height:7px;border-radius:50%;background:var(--mute);display:inline-block}

/* ---- zone chips ---- */
.zbar{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:4px}
.zchip{display:inline-flex;align-items:center;gap:7px;padding:7px 13px;border-radius:10px;background:var(--surface);border:1px solid var(--border);font-size:12.5px;font-weight:700;color:var(--dim);font-family:var(--mono)}
.zchip b{color:var(--accent);background:var(--accent-weak);padding:1px 7px;border-radius:6px;font-size:12px}
.wfsel{padding:8px 12px;border-radius:9px;border:1px solid var(--border);background:var(--surface);color:var(--text);font-size:12.5px;font-weight:600}
.wfsel:focus{outline:none;border-color:var(--accent)}

/* ---- empty / placeholder ---- */
.empty{text-align:center;padding:52px 20px;color:var(--mute)}
.empty .ei{font-size:34px;margin-bottom:10px}
.empty h3{font-size:15px;color:var(--dim);font-weight:700}
.empty p{font-size:13px;margin-top:5px}

/* ---- modal ---- */
.modal-back{position:fixed;inset:0;background:rgba(12,20,34,.55);backdrop-filter:blur(3px);display:none;align-items:flex-start;justify-content:center;padding:60px 20px;z-index:50;overflow:auto}
.modal-back.show{display:flex}
.modal{width:100%;max-width:460px;background:var(--surface);border:1px solid var(--border);border-radius:16px;box-shadow:0 30px 70px -20px rgba(0,0,0,.4);overflow:hidden}
.modal-head{display:flex;align-items:center;justify-content:space-between;padding:18px 22px;border-bottom:1px solid var(--border)}
.modal-head h3{font-size:16px;font-weight:800}
.modal-head .x{width:30px;height:30px;border-radius:8px;color:var(--mute);font-size:18px}
.modal-head .x:hover{background:var(--surface2);color:var(--text)}
.modal-body{padding:20px 22px}
.modal-foot{display:flex;gap:10px;justify-content:flex-end;padding:16px 22px;border-top:1px solid var(--border);background:var(--surface2)}
.field{margin-bottom:14px}
.field label{display:block;font-size:12px;font-weight:600;color:var(--dim);margin-bottom:6px}
.field label .req{color:var(--bad)}
.field input,.field select{width:100%;padding:10px 12px;border-radius:10px;border:1px solid var(--border);background:var(--surface2);outline:none;color:var(--text);font-size:14px;transition:.15s}
.field input:focus,.field select:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-weak)}
.field .hint{font-size:11px;color:var(--mute);margin-top:5px}
.field-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.modal .err{background:var(--bad-bg);color:var(--bad);font-size:12.5px;padding:9px 12px;border-radius:9px;margin-bottom:14px;display:none}
.modal .err.show{display:block}

/* ---- detail modal ---- */
.modal.wide{max-width:680px}
.dsec{margin-bottom:16px}
.dsec:last-child{margin-bottom:0}
.dsec .dh{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--mute);font-weight:800;margin-bottom:9px;display:flex;align-items:center;gap:7px}
.dgrid{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--border);border:1px solid var(--border);border-radius:11px;overflow:hidden}
.dcell{background:var(--surface);padding:10px 13px}
.dcell.full{grid-column:1/-1}
.dcell .dl{font-size:10.5px;color:var(--mute);font-weight:600;letter-spacing:.02em}
.dcell .dv{font-size:13.5px;font-weight:600;margin-top:3px;word-break:break-word}
.dcell .dv.mono{font-family:var(--mono);font-size:12.5px}
.dcell .dv.blank{color:var(--mute);font-weight:400}
.dtop{display:flex;align-items:center;gap:12px;margin-bottom:16px}
.dtop .dref{font-family:var(--mono);font-size:22px;font-weight:800}
.dtop .wostat{margin-left:auto;text-align:right;border:1px solid var(--border);border-radius:9px;padding:6px 13px;background:var(--surface2)}
.dtop .wostat .wl{font-size:9.5px;color:var(--mute);font-weight:700;text-transform:uppercase;letter-spacing:.06em;display:block}
.dtop .wostat b{font-size:14px;font-weight:800}
.wrow{cursor:pointer}
.wrow:hover{background:var(--surface2)}
/* horizontal rows */
.dsec2{margin-bottom:14px}
.dsec2 .dh2{font-size:11px;letter-spacing:.07em;text-transform:uppercase;color:var(--mute);font-weight:800;margin-bottom:8px;display:flex;align-items:center;gap:7px}
.dcard{border:1px solid var(--border);border-radius:12px;overflow:hidden;background:var(--surface)}
.drow{display:flex;gap:14px;padding:10px 15px;border-bottom:1px solid var(--border);align-items:baseline}
.drow:nth-child(even){background:var(--surface2)}
.drow:last-child{border-bottom:0}
.drow .dl2{flex:0 0 130px;color:var(--dim);font-size:12px;font-weight:600}
.drow .dv2{flex:1;min-width:0;font-size:13.5px;font-weight:600;word-break:break-word;line-height:1.5}
.drow .dv2.mono{font-family:var(--mono);font-size:12.5px}
.drow .dv2.blank{color:var(--mute);font-weight:400}
@media (max-width:520px){.drow{flex-direction:column;gap:2px}.drow .dl2{flex:none}}
/* horizontal field bands (many fields per row) — unified type scale */
.hsec{font-size:11px;letter-spacing:.09em;text-transform:uppercase;color:var(--mute);font-weight:800;margin:14px 0 7px}
.hsec:first-of-type{margin-top:0}
.hband{display:flex;flex-wrap:wrap;border:1px solid var(--border);border-radius:10px;overflow:hidden;margin-bottom:7px;background:var(--surface)}
.hband .hc{flex:1 1 0;min-width:130px;padding:8px 14px;border-right:1px solid var(--border)}
.hband .hc:last-child{border-right:0}
.hband .hc.narrow{flex:0 0 150px}
.hband .hl{font-size:10.5px;color:var(--mute);font-weight:600;letter-spacing:.03em}
.hband .hv{font-size:13.5px;font-weight:600;margin-top:3px;word-break:break-word;line-height:1.4;color:var(--text)}
.hband .hv.mono{font-family:var(--mono);font-size:13.5px;letter-spacing:-.02em}
.hband .hv.blank{color:var(--mute);font-weight:400}
@media (max-width:520px){.hband{flex-direction:column}.hband .hc{border-right:0;border-bottom:1px solid var(--border)}.hband .hc:last-child{border-bottom:0}}

/* ---- toast ---- */
.toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%) translateY(20px);background:var(--text);color:var(--surface);padding:11px 20px;border-radius:11px;font-size:13.5px;font-weight:600;box-shadow:0 12px 30px -10px rgba(0,0,0,.5);opacity:0;transition:.25s;z-index:80;pointer-events:none}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
.toast.bad{background:var(--bad)}.toast.good{background:var(--good);color:#fff}

@media (max-width:920px){
  .app{grid-template-columns:1fr}.side{display:none}
  .kpis{grid-template-columns:repeat(2,1fr)}.grid2{grid-template-columns:1fr}
  .field-row{grid-template-columns:1fr}
}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
