:root{
  --bg:#F8FAFC; --surface:#FFFFFF; --primary:#1E40AF; --primary-2:#3B82F6;
  --accent:#D97706; --ok:#047857; --no:#B91C1C; --ink:#1E3A8A;
  --muted:#E9EEF6; --border:#DBEAFE; --text:#0F172A; --text-2:#475569;
  --radius:16px; --shadow:0 1px 2px rgba(15,23,42,.04),0 8px 24px -12px rgba(15,23,42,.18);
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{
  background:var(--bg); color:var(--text); font-family:'Noto Sans Arabic',system-ui,-apple-system,'Segoe UI',sans-serif;
  font-size:15px; line-height:1.6; -webkit-font-smoothing:antialiased;
  background-image:radial-gradient(900px 400px at 100% -10%,#E0EAFF 0%,transparent 60%);
  min-height:100vh;
}
h1,h2{margin:0;font-weight:700;letter-spacing:-.2px}
button,input{font-family:inherit;font-size:inherit}
svg{width:18px;height:18px;flex:none}

/* ---------- top bar ---------- */
.topbar{
  position:sticky; top:0; z-index:30; display:flex; align-items:center; gap:18px;
  padding:14px 22px; background:rgba(255,255,255,.82); backdrop-filter:blur(14px);
  border-bottom:1px solid var(--border);
}
.brand{display:flex;align-items:center;gap:12px;min-width:0}
.logo{
  width:42px;height:42px;border-radius:12px;display:grid;place-items:center;color:#fff;
  background:linear-gradient(140deg,var(--primary),var(--primary-2));box-shadow:0 6px 16px -6px rgba(30,64,175,.6);
}
.brand h1{font-size:16px;line-height:1.3}
.brand p{margin:0;font-size:12.5px;color:var(--text-2)}
.progress-wrap{display:flex;align-items:center;gap:10px;flex:1;max-width:420px;margin-inline-start:auto}
.progress{flex:1;height:8px;background:var(--muted);border-radius:99px;overflow:hidden}
.progress-bar{height:100%;width:0;border-radius:99px;transition:width .35s cubic-bezier(.4,0,.2,1);
  background:linear-gradient(90deg,var(--primary),var(--primary-2))}
.progress-wrap span{font-size:12.5px;color:var(--text-2);font-variant-numeric:tabular-nums;white-space:nowrap}
.top-actions{display:flex;gap:8px;align-items:center}
#menuBtn{font-size:20px;line-height:1;padding:0 12px;letter-spacing:1px}

/* ---------- buttons ---------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;cursor:pointer;
  border:1px solid transparent;border-radius:11px;padding:10px 16px;font-weight:500;
  transition:transform .16s ease,box-shadow .16s ease,background .16s ease,color .16s ease;
  background:var(--muted);color:var(--ink);text-decoration:none;
}
.btn:hover{transform:translateY(-1px);box-shadow:var(--shadow)}
.btn:active{transform:translateY(0)}
.btn:focus-visible{outline:2px solid var(--primary);outline-offset:2px}
.btn.primary{background:linear-gradient(140deg,var(--primary),var(--primary-2));color:#fff;
  box-shadow:0 8px 20px -10px rgba(30,64,175,.8)}
.btn.ok{background:#ECFDF5;color:var(--ok);border-color:#A7F3D0}
.btn.ok:hover{background:#D1FAE5}
.btn.no{background:#FEF2F2;color:var(--no);border-color:#FECACA}
.btn.no:hover{background:#FEE2E2}
.btn.ghost{background:var(--surface);border-color:var(--border);color:var(--ink)}
.btn.ghost:hover{background:#F5F8FF}
.btn.big{padding:14px 26px;font-size:16px;border-radius:13px}
.btn.full{width:100%;margin-top:8px}

/* ---------- layout ---------- */
.layout{
  display:grid; grid-template-columns:minmax(0,1.55fr) minmax(320px,.95fr);
  gap:18px; padding:18px 22px 40px; max-width:1400px; margin:0 auto; align-items:start;
}
.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);
  box-shadow:var(--shadow);padding:22px}
.work{display:flex;flex-direction:column;gap:16px}

/* ---------- work card ---------- */
.row-meta{display:flex;align-items:center;gap:8px}
.pill{font-size:12.5px;font-weight:600;padding:4px 11px;border-radius:99px;background:#EEF2FF;color:var(--primary)}
.pill.muted{background:var(--muted);color:var(--text-2);font-weight:500}
.pill.ok{background:#ECFDF5;color:var(--ok)}
.pill.no{background:#FEF2F2;color:var(--no)}
.spacer{flex:1}
.dup-badge{font-size:11.5px;font-weight:600;background:#FEF3C7;color:#92400E;padding:4px 10px;border-radius:99px}

.serial-box{
  border:1px solid var(--border);border-radius:14px;padding:22px 20px;text-align:center;
  background:linear-gradient(180deg,#F5F8FF,#FFFFFF);
}
.serial-label{font-size:12.5px;color:var(--text-2);margin-bottom:6px}
.serial{
  font-family:'IBM Plex Mono',ui-monospace,monospace;font-size:clamp(24px,4.2vw,40px);font-weight:600;
  color:var(--ink);letter-spacing:1px;direction:ltr;word-break:break-all;
}
.serial-digits{margin-top:14px;display:flex;align-items:center;justify-content:center;gap:8px;flex-wrap:wrap}
.digits-label{font-size:12.5px;color:var(--text-2)}
.serial-digits code{
  font-family:'IBM Plex Mono',monospace;font-size:clamp(15px,2.4vw,20px);font-weight:600;
  color:var(--primary);background:#EEF2FF;padding:3px 12px;border-radius:9px;direction:ltr;
}
.copy-row{display:flex;align-items:center;gap:14px;justify-content:center;flex-wrap:wrap}
.switch{display:inline-flex;align-items:center;gap:8px;font-size:13.5px;color:var(--text-2);cursor:pointer}
.switch input{width:16px;height:16px;accent-color:var(--primary);cursor:pointer}

.answer label{display:block;font-size:12.5px;color:var(--text-2);margin-bottom:6px}
.answer input{
  width:100%;padding:12px 14px;border:1px solid var(--border);border-radius:11px;background:#FCFDFF;
  transition:border-color .16s ease,box-shadow .16s ease;direction:ltr;text-align:left;
  font-family:'IBM Plex Mono',monospace;
}
.answer input:focus{outline:none;border-color:var(--primary-2);box-shadow:0 0 0 4px rgba(59,130,246,.16)}
.actions{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
.actions .btn{padding:13px 8px}
.nav-row{display:flex;gap:10px;align-items:center;flex-wrap:wrap;border-top:1px dashed var(--border);padding-top:14px}
.jump{display:flex;gap:8px;margin-inline-start:auto}
.jump input{width:170px;padding:9px 12px;border:1px solid var(--border);border-radius:10px;background:#FCFDFF}
.jump input:focus{outline:none;border-color:var(--primary-2)}
.hint{font-size:12.5px;color:var(--text-2);margin:0;text-align:center}
kbd{font-family:'IBM Plex Mono',monospace;font-size:11px;background:var(--muted);border:1px solid var(--border);
  border-radius:5px;padding:1px 6px;color:var(--ink)}

/* ---------- side panel ---------- */
.side{display:flex;flex-direction:column;gap:14px;position:sticky;top:88px}
.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.stat{border-radius:13px;padding:12px 10px;text-align:center;border:1px solid var(--border);background:#FCFDFF}
.stat b{display:block;font-size:22px;line-height:1.2;font-variant-numeric:tabular-nums}
.stat span{font-size:12px;color:var(--text-2)}
.stat.ok b{color:var(--ok)} .stat.no b{color:var(--no)} .stat.rest b{color:var(--primary)}
.filters{display:flex;gap:6px;flex-wrap:wrap}
.chip{cursor:pointer;border:1px solid var(--border);background:var(--surface);color:var(--text-2);
  border-radius:99px;padding:6px 13px;font-size:12.5px;transition:all .16s ease}
.chip:hover{background:#F5F8FF;color:var(--ink)}
.chip.active{background:var(--primary);border-color:var(--primary);color:#fff;font-weight:600}
.list-head{display:flex;align-items:center;gap:10px}
.list-head input{flex:1;padding:9px 12px;border:1px solid var(--border);border-radius:10px;background:#FCFDFF}
.list-head input:focus{outline:none;border-color:var(--primary-2)}
#listCount{font-size:12px;color:var(--text-2);white-space:nowrap}
.list{max-height:min(52vh,520px);overflow-y:auto;border:1px solid var(--border);border-radius:12px;background:#FCFDFF}
.list::-webkit-scrollbar{width:8px}
.list::-webkit-scrollbar-thumb{background:#CBD5E1;border-radius:99px}
.item{display:flex;align-items:center;gap:9px;padding:9px 12px;border-bottom:1px solid #EFF3FA;cursor:pointer;
  transition:background .14s ease}
.item:last-child{border-bottom:none}
.item:hover{background:#F1F6FF}
.item.current{background:#E8EFFF;box-shadow:inset 3px 0 0 var(--primary)}
.item .idx{font-size:11px;color:var(--text-2);min-width:34px;font-variant-numeric:tabular-nums}
.item .sn{font-family:'IBM Plex Mono',monospace;font-size:12.5px;color:var(--ink);direction:ltr;flex:1;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.item .dot{width:8px;height:8px;border-radius:99px;background:#CBD5E1;flex:none}
.item .dot.found{background:var(--ok)} .item .dot.none{background:#CBD5E1}

/* ---------- toast + modal ---------- */
.toast{
  position:fixed;bottom:26px;left:50%;transform:translate(-50%,20px);opacity:0;pointer-events:none;
  background:#0F172A;color:#fff;padding:11px 20px;border-radius:11px;font-size:13.5px;z-index:60;
  transition:opacity .22s ease,transform .22s ease;box-shadow:0 12px 30px -10px rgba(15,23,42,.6);
}
.toast.show{opacity:1;transform:translate(-50%,0)}
.modal{position:fixed;inset:0;background:rgba(15,23,42,.45);backdrop-filter:blur(3px);z-index:70;
  display:grid;place-items:center;padding:20px}
.modal-box{background:var(--surface);border-radius:18px;padding:24px;width:min(420px,100%);
  box-shadow:0 24px 60px -20px rgba(15,23,42,.5);animation:pop .22s ease}
.modal-box h2{font-size:16px;margin-bottom:10px;color:var(--ink)}
.file{position:relative;overflow:hidden}

@keyframes pop{from{opacity:0;transform:translateY(10px) scale(.98)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

@media (max-width:960px){
  .layout{grid-template-columns:1fr}
  .side{position:static}
  .progress-wrap{display:none}
  .actions{grid-template-columns:repeat(2,1fr)}
  .topbar{flex-wrap:wrap;gap:10px}
  .jump{margin-inline-start:0;width:100%}
  .jump input{flex:1;width:auto}
}
@media (max-width:520px){
  .topbar{padding:12px 14px}
  .layout{padding:14px}
  .card{padding:16px}
  .brand h1{font-size:14.5px}
  .top-actions .btn span{display:none}
}
