/* ==========================================================================
   بوابة دخول الطلاب — التنسيقات
   أُنشئ 2026-07-25. تصميم مخصّص لشاشة بوابة (قراءة من مسافة، ألوان قاطعة).
   ========================================================================== */

:root{
  --brand:#0b3d91;  --brand-2:#1565d8;  --brand-3:#3b8ce8;
  --ok:#0f9d58;     --ok-soft:#e6f6ec;  --ok-ring:#7bd6a0;
  --no:#d93025;     --no-soft:#fdecea;  --no-ring:#f2a09a;
  --warn:#f4a300;
  --ink:#0f1b2d;    --ink-2:#42546b;    --ink-3:#7c8ba1;
  --line:#dbe3ee;   --bg:#eef3fa;       --card:#fff;
  --r:16px;  --r-sm:10px;
  --shadow:0 10px 30px rgba(11,61,145,.12);
  --shadow-lg:0 18px 50px rgba(11,61,145,.20);
}

*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{
  font-family:"Segoe UI",Tahoma,"Noto Naskh Arabic",Arial,sans-serif;
  background:var(--bg); color:var(--ink); -webkit-font-smoothing:antialiased;
}
.screen{min-height:100vh;display:flex;flex-direction:column}
[hidden]{display:none !important}

/* ─────────── شاشة الدخول ─────────── */
.login-screen{
  align-items:center;justify-content:center;
  background:
    radial-gradient(1200px 600px at 20% -10%, #2b6fd6 0%, transparent 60%),
    radial-gradient(900px 500px at 110% 110%, #0a2d6b 0%, transparent 55%),
    linear-gradient(150deg,#0b3d91,#123a7a 60%,#08265c);
  padding:24px;
}
.login-card{
  width:min(410px,100%); background:var(--card); border-radius:22px;
  padding:38px 32px 30px; box-shadow:var(--shadow-lg); text-align:center;
  animation:rise .45s cubic-bezier(.2,.8,.2,1);
}
@keyframes rise{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}
.login-logo{
  width:78px;height:78px;margin:0 auto 16px;border-radius:22px;color:#fff;
  display:grid;place-items:center;
  background:linear-gradient(135deg,var(--brand-2),var(--brand));
  box-shadow:0 8px 22px rgba(21,101,216,.35);
}
.login-card h1{font-size:1.5rem;font-weight:800;letter-spacing:-.2px}
.login-sub{color:var(--ink-3);font-size:.92rem;margin:4px 0 26px}
.field{display:block;text-align:right;margin-bottom:15px}
.field span{display:block;font-size:.85rem;color:var(--ink-2);font-weight:600;margin-bottom:6px}
.field input{
  width:100%;padding:13px 15px;border:1.8px solid var(--line);border-radius:var(--r-sm);
  font-size:1rem;font-family:inherit;background:#fbfcfe;transition:border-color .18s,box-shadow .18s;
}
.field input:focus{outline:none;border-color:var(--brand-2);box-shadow:0 0 0 4px rgba(21,101,216,.13);background:#fff}
.btn-primary{
  width:100%;margin-top:8px;padding:14px;border:0;border-radius:var(--r-sm);cursor:pointer;
  background:linear-gradient(135deg,var(--brand-2),var(--brand));color:#fff;
  font-size:1.03rem;font-weight:700;font-family:inherit;
  display:flex;align-items:center;justify-content:center;gap:10px;
  transition:transform .12s, box-shadow .2s, filter .2s;
  box-shadow:0 6px 18px rgba(21,101,216,.3);
}
.btn-primary:hover{filter:brightness(1.07);box-shadow:0 9px 24px rgba(21,101,216,.4)}
.btn-primary:active{transform:translateY(1px)}
.btn-primary:disabled{opacity:.65;cursor:not-allowed}
.spinner{
  width:17px;height:17px;border:2.4px solid rgba(255,255,255,.35);
  border-top-color:#fff;border-radius:50%;animation:spin .7s linear infinite;
}
@keyframes spin{to{transform:rotate(360deg)}}
.alert-error{
  margin-top:16px;padding:11px 14px;border-radius:var(--r-sm);
  background:var(--no-soft);border:1px solid var(--no-ring);color:#9d2019;
  font-size:.88rem;font-weight:600;
}
.login-foot{margin-top:24px;color:rgba(255,255,255,.55);font-size:.8rem}

/* ─────────── الشريط العلوي ─────────── */
.topbar{
  display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;
  padding:12px 22px;background:linear-gradient(135deg,var(--brand),#123a7a);color:#fff;
  box-shadow:0 4px 18px rgba(11,61,145,.25);
}
.topbar-brand{display:flex;align-items:center;gap:11px;font-size:1.12rem;font-weight:800}
.topbar-tools{display:flex;align-items:center;gap:11px;flex-wrap:wrap}

.mode-switch{display:flex;background:rgba(255,255,255,.13);border-radius:999px;padding:3px}
.mode-btn{
  display:flex;align-items:center;gap:7px;border:0;cursor:pointer;font-family:inherit;
  padding:7px 15px;border-radius:999px;background:transparent;color:rgba(255,255,255,.8);
  font-size:.86rem;font-weight:700;transition:background .2s,color .2s;
}
.mode-btn .dot{width:7px;height:7px;border-radius:50%;background:currentColor;opacity:.55}
.mode-btn.is-active{background:#fff;color:var(--brand)}
.mode-btn.is-active .dot{background:var(--ok);opacity:1}

.btn-ghost{
  display:flex;align-items:center;gap:7px;cursor:pointer;font-family:inherit;
  padding:8px 15px;border-radius:999px;font-size:.86rem;font-weight:700;
  background:rgba(255,255,255,.13);border:1px solid rgba(255,255,255,.22);color:#fff;
  transition:background .2s;
}
.btn-ghost:hover{background:rgba(255,255,255,.24)}
.btn-ghost:disabled{opacity:.55;cursor:progress}
.btn-ghost.spinning svg{animation:spin 1s linear infinite}

.user-chip{
  display:flex;align-items:center;gap:9px;padding:6px 8px 6px 14px;
  background:rgba(255,255,255,.13);border-radius:999px;font-size:.86rem;font-weight:600;
}
.btn-logout{
  display:grid;place-items:center;width:29px;height:29px;border:0;border-radius:50%;
  background:rgba(255,255,255,.18);color:#fff;cursor:pointer;transition:background .2s;
}
.btn-logout:hover{background:var(--no)}

.sync-info{
  padding:8px 22px;background:#dff0e2;color:#14663a;
  font-size:.83rem;font-weight:600;border-bottom:1px solid #b9dfc6;
}

/* ─────────── المسرح ─────────── */
.stage{flex:1;display:grid;place-items:center;padding:26px 20px 34px}

.idle{text-align:center;color:var(--ink-3);animation:rise .4s}
.scan-pulse{
  width:132px;height:132px;margin:0 auto 22px;border-radius:34px;display:grid;place-items:center;
  color:var(--brand-2);background:#fff;box-shadow:var(--shadow);
  animation:breathe 2.4s ease-in-out infinite;
}
@keyframes breathe{
  0%,100%{transform:scale(1);box-shadow:0 10px 30px rgba(11,61,145,.12)}
  50%{transform:scale(1.05);box-shadow:0 16px 40px rgba(21,101,216,.26)}
}
.idle h2{font-size:1.5rem;color:var(--ink);font-weight:800;margin-bottom:7px}
.manual-entry{margin-top:24px}
.manual-entry input{
  width:min(430px,88vw);padding:13px 18px;border:2px dashed var(--line);
  border-radius:999px;text-align:center;font-family:inherit;font-size:.95rem;background:#fff;
  transition:border-color .2s;
}
.manual-entry input:focus{outline:none;border-color:var(--brand-3);border-style:solid}

/* ─────────── بطاقة النتيجة ─────────── */
.result{
  width:min(760px,100%);background:var(--card);border-radius:var(--r);
  overflow:hidden;box-shadow:var(--shadow-lg);animation:pop .34s cubic-bezier(.2,.9,.25,1.1);
}
@keyframes pop{from{opacity:0;transform:scale(.96) translateY(14px)}to{opacity:1;transform:none}}

.verdict{display:flex;align-items:center;gap:16px;padding:20px 26px;color:#fff}
.verdict.granted{background:linear-gradient(135deg,#12b866,var(--ok))}
.verdict.denied {background:linear-gradient(135deg,#ef4136,var(--no))}
.verdict-unknown{background:linear-gradient(135deg,#8c98a8,#5d6b7d)}
.verdict-icon{
  width:58px;height:58px;flex:none;border-radius:50%;display:grid;place-items:center;
  background:rgba(255,255,255,.22);font-size:2rem;font-weight:800;line-height:1;
}
.verdict-text strong{display:block;font-size:1.65rem;font-weight:800;letter-spacing:-.3px}
.verdict-text span{font-size:.95rem;opacity:.93}

.student{display:flex;gap:24px;padding:26px}
.photo-wrap{
  width:148px;height:172px;flex:none;border-radius:12px;overflow:hidden;
  background:#eef2f8;border:3px solid #fff;box-shadow:0 5px 16px rgba(15,27,45,.14);
  display:grid;place-items:center;
}
.photo-wrap img{width:100%;height:100%;object-fit:cover;display:block}
.photo-fallback{color:#aab6c6}

.student-body{flex:1;min-width:0}
.student-body h2{font-size:1.55rem;font-weight:800;line-height:1.35;margin-bottom:4px}
.stu-id{
  display:inline-block;font-family:"Courier New",monospace;font-size:1rem;font-weight:700;
  color:var(--brand);background:#eaf1fd;padding:4px 12px;border-radius:7px;letter-spacing:.6px;
}
.facts{display:flex;flex-wrap:wrap;gap:10px;margin:18px 0}
.fact{
  flex:1;min-width:118px;background:#f6f8fc;border:1px solid var(--line);
  border-radius:var(--r-sm);padding:10px 13px;
}
.fact span{display:block;font-size:.75rem;color:var(--ink-3);font-weight:600;margin-bottom:3px}
.fact strong{font-size:.98rem;font-weight:700}

.status-row{display:flex;gap:12px;flex-wrap:wrap}
.status-chip{
  flex:1;min-width:180px;display:flex;align-items:center;gap:12px;
  padding:13px 16px;border-radius:var(--r-sm);border:2px solid;
}
.status-chip small{display:block;font-size:.76rem;opacity:.8;font-weight:600}
.status-chip b{font-size:1.02rem;font-weight:800}
.chip-ico{
  width:34px;height:34px;flex:none;border-radius:50%;display:grid;place-items:center;
  color:#fff;font-size:1.15rem;font-weight:800;line-height:1;
}
.status-chip.ok    {background:var(--ok-soft);border-color:var(--ok-ring);color:#0b6b3d}
.status-chip.ok    .chip-ico{background:var(--ok)}
.status-chip.ok    .chip-ico::after{content:"✓"}
.status-chip.no    {background:var(--no-soft);border-color:var(--no-ring);color:#9d2019}
.status-chip.no    .chip-ico{background:var(--no)}
.status-chip.no    .chip-ico::after{content:"✕"}

.result-foot{
  display:flex;justify-content:space-between;align-items:center;gap:12px;
  padding:11px 26px;background:#f6f8fc;border-top:1px solid var(--line);
  font-size:.8rem;color:var(--ink-3);font-weight:600;
}
.source-tag{padding:3px 11px;border-radius:999px;background:#e7edf7;color:var(--brand)}
.source-tag.local{background:#fff3d6;color:#8a5a00}
.error-card{width:min(560px,100%)}

/* ─────────── إشعار عائم ─────────── */
.toast{
  position:fixed;bottom:26px;left:50%;transform:translateX(-50%);
  padding:12px 24px;border-radius:999px;background:var(--ink);color:#fff;
  font-size:.9rem;font-weight:600;box-shadow:var(--shadow-lg);z-index:99;
  animation:rise .28s;
}
.toast.ok{background:var(--ok)} .toast.no{background:var(--no)} .toast.warn{background:var(--warn)}

/* ─────────── الشاشات الصغيرة ─────────── */
@media (max-width:640px){
  .topbar{padding:10px 14px}
  .topbar-brand span{display:none}
  .student{flex-direction:column;align-items:center;text-align:center;padding:20px}
  .photo-wrap{width:132px;height:154px}
  .facts{justify-content:center}
  .verdict-text strong{font-size:1.35rem}
  .stage{padding:16px 12px 26px}
}
/* شاشات البوابة الكبيرة — تكبير للقراءة عن بُعد */
@media (min-width:1600px){
  .result{width:min(900px,100%)}
  .verdict-text strong{font-size:2rem}
  .student-body h2{font-size:1.85rem}
  .status-chip b{font-size:1.15rem}
}
