:root{
  --bg:#0b1020; --bg2:#121a33; --panel:rgba(18,26,51,.85); --line:rgba(255,255,255,.08);
  --text:#e8ecff; --muted:#8a94b8; --accent:#22d3ee; --good:#34d399; --bad:#f87171; --warn:#fbbf24;
  --flash:#f97316;
}
*{box-sizing:border-box}
html,body{margin:0;height:100%;overflow:hidden}
body{
  font-family:'Cairo',system-ui,'Segoe UI',Tahoma,sans-serif;color:var(--text);
  background:radial-gradient(1200px 600px at 80% -10%,#1e2a5a 0%,transparent 60%),
             radial-gradient(900px 500px at 0% 110%,#0f3b4a 0%,transparent 60%),var(--bg);
  display:flex;flex-direction:column;
}
/* ---------- Dashboard ---------- */
#dashboard{
  position:relative;z-index:5;display:grid;gap:10px 16px;padding:10px 16px;
  grid-template-columns:auto 1fr;align-items:center;
  background:var(--panel);backdrop-filter:blur(10px);border-bottom:1px solid var(--line);
}
.brand{display:flex;gap:10px;align-items:center}
.brand .logo{font-size:28px;filter:drop-shadow(0 0 10px #f59e0b)}
.brand h1{margin:0;font-size:18px;font-weight:800;line-height:1.2}
.brand small{color:var(--muted);font-size:11px}
.kpis{display:flex;gap:8px;justify-content:flex-end;flex-wrap:wrap}
.kpi{
  min-width:110px;padding:6px 12px;border-radius:12px;background:rgba(255,255,255,.04);
  border:1px solid var(--line);display:flex;flex-direction:column;line-height:1.25;
}
.kpi label{font-size:11px;color:var(--muted)}
.kpi b{font-size:20px;font-variant-numeric:tabular-nums;direction:ltr;text-align:right;transition:color .3s}
.kpi .sub{font-size:11px;color:var(--muted);direction:rtl}
.kpi.accent{border-color:rgba(34,211,238,.4);box-shadow:0 0 18px rgba(34,211,238,.12) inset}
.kpi.accent b{color:var(--accent)}
.kpi.pulse{animation:pulse .6s}
@keyframes pulse{0%{transform:scale(1)}40%{transform:scale(1.08)}100%{transform:scale(1)}}
.row2{grid-column:1/-1;display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.actions{display:flex;gap:6px;flex-wrap:wrap}
.btn{
  font:inherit;font-size:13px;font-weight:600;color:var(--text);cursor:pointer;
  padding:7px 12px;border-radius:10px;border:1px solid var(--line);background:rgba(255,255,255,.06);
  transition:.2s;white-space:nowrap;
}
.btn:hover{background:rgba(255,255,255,.12)}
.btn.primary{background:linear-gradient(135deg,#0891b2,#2563eb);border-color:transparent}
.btn.flash{background:linear-gradient(135deg,#ea580c,#db2777);border-color:transparent}
.btn.flash.active{animation:glow 1s infinite alternate}
@keyframes glow{from{box-shadow:0 0 0 rgba(249,115,22,.0)}to{box-shadow:0 0 22px rgba(249,115,22,.9)}}
.btn.icon{padding:7px 10px}
.bundle-bar{display:flex;gap:6px;flex-wrap:wrap}
.bundle-bar:empty{display:none}
.chip{
  font-size:12px;padding:3px 10px;border-radius:999px;background:rgba(52,211,153,.12);
  border:1px solid rgba(52,211,153,.4);color:var(--good);animation:pop .4s;
}
.chip.flash{background:rgba(249,115,22,.12);border-color:rgba(249,115,22,.45);color:#fdba74}
@keyframes pop{from{transform:scale(.6);opacity:0}to{transform:scale(1);opacity:1}}
/* ---------- Stage ---------- */
#stage{position:relative;flex:1;min-height:0}
#world{position:absolute;inset:0;width:100%;height:100%;touch-action:none;cursor:grab}
#world.dragging{cursor:grabbing}
#toasts{position:absolute;top:10px;left:50%;transform:translateX(-50%);display:flex;flex-direction:column;gap:6px;align-items:center;pointer-events:none;z-index:4;width:max-content;max-width:calc(100% - 32px)}
.toast{
  padding:8px 16px;border-radius:12px;background:rgba(15,23,42,.92);border:1px solid var(--line);
  font-size:14px;box-shadow:0 10px 30px rgba(0,0,0,.4);animation:toastIn .35s, toastOut .4s 2.6s forwards;text-align:center
}
.toast.good{border-color:rgba(52,211,153,.5)} .toast.bad{border-color:rgba(248,113,113,.6)} .toast.flash{border-color:rgba(249,115,22,.6)}
@keyframes toastIn{from{transform:translateY(-12px);opacity:0}}
@keyframes toastOut{to{transform:translateY(-12px);opacity:0}}
/* ---------- Drawer ---------- */
.drawer{
  position:fixed;top:0;bottom:0;left:0;width:min(640px,100%);z-index:20;background:#0e1530f2;
  backdrop-filter:blur(12px);border-right:1px solid var(--line);transform:translateX(-105%);
  transition:transform .35s cubic-bezier(.2,.8,.2,1);display:flex;flex-direction:column;
}
.drawer.open{transform:none}
.drawer-head{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;border-bottom:1px solid var(--line)}
.drawer-head h2{margin:0;font-size:17px}
.table-wrap{overflow:auto;flex:1;padding:0 8px}
table{width:100%;border-collapse:collapse;font-size:13px}
th,td{padding:8px 6px;text-align:right;border-bottom:1px solid var(--line);white-space:nowrap}
th{color:var(--muted);font-weight:600;position:sticky;top:0;background:#0e1530}
td.num{direction:ltr;text-align:right;font-variant-numeric:tabular-nums}
.stockbar{display:inline-block;width:60px;height:6px;border-radius:4px;background:rgba(255,255,255,.08);vertical-align:middle;margin-inline-start:6px;overflow:hidden}
.stockbar i{display:block;height:100%;background:var(--good)}
.tag{font-size:11px;padding:2px 8px;border-radius:999px;border:1px solid var(--line)}
.tag.slow{color:#fdba74;border-color:rgba(249,115,22,.5)}
.tag.out{color:var(--bad);border-color:rgba(248,113,113,.5)}
.tag.ok{color:var(--good);border-color:rgba(52,211,153,.4)}
.legend{padding:10px 16px;font-size:12px;color:var(--muted);border-top:1px solid var(--line)}
/* ---------- Modal ---------- */
.modal{position:fixed;inset:0;z-index:30;display:none;place-items:center;background:rgba(0,0,0,.55);padding:16px}
.modal.open{display:grid}
.modal-card{width:min(620px,100%);max-height:90vh;overflow:auto;background:#0f1733;border:1px solid var(--line);border-radius:16px;padding:16px 18px;animation:pop .3s}
.modal-card h2{margin:0 0 10px;font-size:18px}
tfoot td{font-weight:700;border:none;padding-top:6px}
.modal-actions{display:flex;gap:8px;justify-content:flex-start;margin-top:14px}
.good{color:var(--good)} .bad{color:var(--bad)}
/* ---------- Mobile ---------- */
@media (max-width:900px){
  #dashboard{grid-template-columns:1fr;padding:8px 12px;gap:6px}
  .brand small{display:none}
  .brand h1{font-size:15px}
  .kpis{justify-content:flex-start;gap:4px;flex-wrap:nowrap}
  .kpi{min-width:0;flex:1 1 0;padding:4px 6px}
  .kpi label{font-size:10px}
  .kpi b{font-size:13px}
  .kpi .sub{font-size:9.5px}
  .row2{gap:6px}
  .actions{justify-content:flex-start}
  .btn{font-size:12px;padding:6px 9px}
}
