/* ============================================================
   CySA+ Simulator — Themes + Layout + RTL
   ============================================================ */
:root{
  --bg:#0f172a; --bg2:#1e293b; --card:#1e293b; --card2:#273449;
  --text:#e2e8f0; --muted:#94a3b8; --border:#334155;
  --primary:#6366f1; --primary2:#818cf8; --accent:#22d3ee;
  --ok:#10b981; --warn:#f59e0b; --bad:#ef4444;
  --shadow:0 10px 30px rgba(0,0,0,.35); --radius:14px;
}
[data-theme="light"]{
  --bg:#f1f5f9; --bg2:#ffffff; --card:#ffffff; --card2:#f8fafc;
  --text:#0f172a; --muted:#64748b; --border:#e2e8f0;
  --primary:#4f46e5; --primary2:#6366f1; --accent:#0891b2;
  --shadow:0 10px 30px rgba(15,23,42,.08);
}
[data-theme="cyber"]{
  --bg:#05060a; --bg2:#0b1020; --card:#0c1326; --card2:#111a33;
  --text:#c7f9ff; --muted:#5f8da3; --border:#153049;
  --primary:#00e5ff; --primary2:#22d3ee; --accent:#39ff14;
  --ok:#39ff14; --warn:#ffd60a; --bad:#ff2d55;
  --shadow:0 0 24px rgba(0,229,255,.18);
}
[data-theme="ocean"]{
  --bg:#06202b; --bg2:#0a2e3d; --card:#0c3345; --card2:#0f3e54;
  --text:#dff6ff; --muted:#8fc2d4; --border:#17506b;
  --primary:#06b6d4; --primary2:#38bdf8; --accent:#2dd4bf;
  --shadow:0 10px 30px rgba(6,32,43,.5);
}
[data-theme="forest"]{
  --bg:#0c1a12; --bg2:#122619; --card:#142b1d; --card2:#193523;
  --text:#dcf5e3; --muted:#8fbf9f; --border:#245136;
  --primary:#22c55e; --primary2:#4ade80; --accent:#a3e635;
  --shadow:0 10px 30px rgba(12,26,18,.5);
}

*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{
  font-family:'Inter','Segoe UI',system-ui,-apple-system,'Noto Sans Arabic',sans-serif;
  background:var(--bg); color:var(--text); line-height:1.5;
  transition:background .3s,color .3s;
}
[dir="rtl"] body{font-family:'Noto Sans Arabic','Segoe UI',system-ui,sans-serif}
a{color:var(--primary2);text-decoration:none}
button{font-family:inherit;cursor:pointer}
.hidden{display:none !important}

/* Buttons */
.btn{display:inline-flex;align-items:center;gap:.5rem;justify-content:center;
  background:var(--primary);color:#fff;border:none;padding:.7rem 1.2rem;border-radius:10px;
  font-weight:600;font-size:.95rem;transition:transform .15s,filter .15s,opacity .15s}
.btn:hover{filter:brightness(1.1)}
.btn:active{transform:translateY(1px)}
.btn.block{width:100%}
.btn.sm{padding:.4rem .7rem;font-size:.85rem;border-radius:8px}
.btn.ghost{background:transparent;color:var(--text);border:1px solid var(--border)}
.btn.ghost:hover{background:var(--card2)}
.btn.success{background:var(--ok)} .btn.danger{background:var(--bad)} .btn.warn{background:var(--warn);color:#1a1200}
.btn:disabled{opacity:.5;cursor:not-allowed}

input,select,textarea{
  width:100%;background:var(--card2);color:var(--text);border:1px solid var(--border);
  padding:.65rem .8rem;border-radius:10px;font-size:.95rem;font-family:inherit}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--primary)}
label{display:block;font-size:.85rem;color:var(--muted);margin-bottom:.35rem;font-weight:600}
.field{margin-bottom:1rem}

/* ---------- Login ---------- */
.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:1.5rem;
  background:radial-gradient(1200px 600px at 10% 0%,rgba(99,102,241,.18),transparent),
             radial-gradient(1000px 600px at 90% 100%,rgba(34,211,238,.14),transparent),var(--bg)}
.login-card{background:var(--card);border:1px solid var(--border);border-radius:20px;
  box-shadow:var(--shadow);width:100%;max-width:420px;padding:2.2rem}
.login-logo{display:flex;align-items:center;gap:.8rem;margin-bottom:1.3rem}
.login-logo .shield{width:52px;height:52px;border-radius:14px;display:grid;place-items:center;
  background:linear-gradient(135deg,var(--primary),var(--accent));color:#fff;font-size:1.6rem;flex-shrink:0}
.login-logo h1{font-size:1.15rem;line-height:1.2}
.login-logo p{font-size:.78rem;color:var(--muted)}
.login-top{display:flex;justify-content:flex-end;gap:.5rem;margin-bottom:.5rem}
.err{background:rgba(239,68,68,.12);color:var(--bad);border:1px solid rgba(239,68,68,.35);
  padding:.6rem .8rem;border-radius:10px;font-size:.88rem;margin-bottom:1rem}
.login-credit{text-align:center;color:var(--muted);font-size:.8rem;margin-top:1.3rem}
.hint{font-size:.78rem;color:var(--muted);margin-top:.9rem;text-align:center}



/* ---------- App shell ---------- */
.app{display:none}
.app.show{display:flex;min-height:100vh}
.sidebar{flex:0 0 260px;width:260px;background:var(--bg2);border-inline-end:1px solid var(--border);
  display:flex;flex-direction:column;position:sticky;top:0;height:100vh;overflow:hidden}
.main{flex:1 1 auto;min-width:0}
.sb-brand{padding:1.3rem 1.2rem;display:flex;align-items:center;gap:.7rem;border-bottom:1px solid var(--border)}
.sb-brand .shield{width:40px;height:40px;border-radius:11px;display:grid;place-items:center;
  background:linear-gradient(135deg,var(--primary),var(--accent));color:#fff;font-size:1.25rem;flex-shrink:0}
.sb-brand h2{font-size:.98rem;line-height:1.15}
.sb-brand span{font-size:.72rem;color:var(--muted)}
.nav{flex:1;padding:.8rem;overflow-y:auto}
.nav button{width:100%;display:flex;align-items:center;gap:.8rem;background:transparent;border:none;
  color:var(--muted);padding:.75rem .85rem;border-radius:10px;font-size:.92rem;font-weight:600;text-align:start;margin-bottom:.2rem}
.nav button i{width:20px;text-align:center}
.nav button:hover{background:var(--card2);color:var(--text)}
.nav button.active{background:var(--primary);color:#fff}
.sb-foot{padding:.9rem;border-top:1px solid var(--border)}
.user-chip{display:flex;align-items:center;gap:.6rem;margin-bottom:.7rem}
.avatar{width:38px;height:38px;border-radius:50%;background:linear-gradient(135deg,var(--primary),var(--accent));
  color:#fff;display:grid;place-items:center;font-weight:700;flex-shrink:0}
.user-chip .meta{overflow:hidden}
.user-chip .meta b{font-size:.86rem;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.user-chip .meta small{font-size:.72rem;color:var(--muted)}

.main{overflow-y:auto;height:100vh;min-width:0}
.topbar{display:flex;align-items:center;justify-content:space-between;gap:1rem;
  padding:1rem 1.5rem;border-bottom:1px solid var(--border);position:sticky;top:0;background:var(--bg);z-index:20}
.topbar h1{font-size:1.2rem}
.topbar .controls{display:flex;align-items:center;gap:.6rem}
.topbar select{width:auto;padding:.45rem .6rem;font-size:.85rem}
.menu-toggle{display:none;background:transparent;border:1px solid var(--border);color:var(--text);
  width:42px;height:42px;border-radius:10px;font-size:1.1rem}
.content{padding:1.5rem}

/* Cards / grid */
.grid{display:grid;gap:1rem}
.g2{grid-template-columns:repeat(2,1fr)} .g3{grid-template-columns:repeat(3,1fr)} .g4{grid-template-columns:repeat(4,1fr)}
.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:1.3rem;box-shadow:var(--shadow)}
.card h3{font-size:1.02rem;margin-bottom:.9rem}
.stat{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:1.2rem;box-shadow:var(--shadow)}
.stat .num{font-size:1.9rem;font-weight:800;line-height:1}
.stat .lbl{color:var(--muted);font-size:.82rem;margin-top:.4rem}
.stat .ic{font-size:1.3rem;opacity:.5}
.stat-head{display:flex;justify-content:space-between;align-items:flex-start}

.section-title{font-size:1.1rem;margin:1.5rem 0 .8rem;display:flex;align-items:center;gap:.5rem}

/* Domain cards */
.domain-card{cursor:pointer;transition:transform .15s,border-color .15s}
.domain-card:hover{transform:translateY(-3px);border-color:var(--primary)}
.domain-badge{display:inline-grid;place-items:center;width:44px;height:44px;border-radius:12px;color:#fff;font-weight:800;margin-bottom:.7rem}
.domain-weight{font-size:.8rem;color:var(--muted)}
.wbar{height:8px;background:var(--card2);border-radius:6px;overflow:hidden;margin-top:.6rem}
.wbar span{display:block;height:100%;border-radius:6px}

/* Objective list */
.obj{background:var(--card2);border:1px solid var(--border);border-radius:12px;padding:1rem;margin-bottom:.8rem}
.obj .obj-code{font-weight:800;color:var(--primary2)}
.obj h4{margin:.3rem 0 .6rem;font-size:.98rem}
.obj p{color:var(--muted);font-size:.9rem;margin-bottom:.7rem}
.chips{display:flex;flex-wrap:wrap;gap:.4rem}
.chip{background:var(--card);border:1px solid var(--border);border-radius:20px;padding:.25rem .7rem;font-size:.78rem;color:var(--muted)}

/* Table */
.tbl-wrap{overflow-x:auto}
table{width:100%;border-collapse:collapse;font-size:.9rem}
th,td{padding:.7rem .8rem;text-align:start;border-bottom:1px solid var(--border);white-space:nowrap}
th{color:var(--muted);font-size:.8rem;text-transform:uppercase;letter-spacing:.03em}
tbody tr:hover{background:var(--card2)}
.tag{display:inline-block;padding:.2rem .6rem;border-radius:20px;font-size:.75rem;font-weight:700}
.tag.ok{background:rgba(16,185,129,.15);color:var(--ok)}
.tag.bad{background:rgba(239,68,68,.15);color:var(--bad)}
.tag.neutral{background:var(--card2);color:var(--muted)}

/* Quiz */
.quiz-top{display:flex;justify-content:space-between;align-items:center;gap:1rem;flex-wrap:wrap;margin-bottom:1rem}
.progress{height:8px;background:var(--card2);border-radius:6px;overflow:hidden;margin-bottom:1.2rem}
.progress span{display:block;height:100%;background:var(--primary);border-radius:6px;transition:width .3s}
.timer{font-weight:800;font-size:1.05rem;padding:.35rem .8rem;border-radius:10px;background:var(--card2);border:1px solid var(--border)}
.timer.low{color:var(--bad);border-color:var(--bad)}
.q-stem{font-size:1.08rem;font-weight:600;margin-bottom:.4rem}
.q-type-note{font-size:.82rem;color:var(--muted);margin-bottom:1rem}
.opt{display:flex;align-items:flex-start;gap:.8rem;background:var(--card2);border:2px solid var(--border);
  border-radius:12px;padding:.9rem 1rem;margin-bottom:.7rem;cursor:pointer;transition:border-color .15s,background .15s}
.opt:hover{border-color:var(--primary2)}
.opt.selected{border-color:var(--primary);background:rgba(99,102,241,.1)}
.opt.correct{border-color:var(--ok);background:rgba(16,185,129,.12)}
.opt.wrong{border-color:var(--bad);background:rgba(239,68,68,.12)}
.opt .mark{flex-shrink:0;width:26px;height:26px;border-radius:7px;border:2px solid var(--border);
  display:grid;place-items:center;font-weight:700;font-size:.85rem}
.opt.selected .mark{border-color:var(--primary);background:var(--primary);color:#fff}
.opt .txt{flex:1}
.quiz-nav{display:flex;justify-content:space-between;gap:.8rem;margin-top:1.3rem;flex-wrap:wrap}
.feedback{margin-top:1rem;padding:1rem;border-radius:12px;border:1px solid var(--border);background:var(--card2)}
.feedback.good{border-color:var(--ok)} .feedback.poor{border-color:var(--bad)}
.feedback b{display:block;margin-bottom:.4rem}
.palette{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:1rem}
.palette button{width:38px;height:38px;border-radius:9px;border:1px solid var(--border);
  background:var(--card2);color:var(--text);font-weight:700;font-size:.82rem}
.palette button.answered{background:var(--primary);color:#fff;border-color:var(--primary)}
.palette button.flagged{outline:2px solid var(--warn)}
.palette button.current{box-shadow:0 0 0 2px var(--accent)}

/* Result */
.result-hero{text-align:center;padding:2rem 1rem}
.result-ring{width:180px;height:180px;margin:0 auto 1rem;border-radius:50%;display:grid;place-items:center;
  font-size:2.6rem;font-weight:800;position:relative}
.result-badge{display:inline-block;padding:.5rem 1.4rem;border-radius:30px;font-weight:800;font-size:1.1rem;margin-top:.5rem}
.result-badge.pass{background:rgba(16,185,129,.15);color:var(--ok)}
.result-badge.fail{background:rgba(239,68,68,.15);color:var(--bad)}

/* Modal */
.modal-bg{position:fixed;inset:0;background:rgba(0,0,0,.6);display:none;align-items:center;justify-content:center;padding:1rem;z-index:100}
.modal-bg.show{display:flex}
.modal{background:var(--card);border:1px solid var(--border);border-radius:16px;box-shadow:var(--shadow);
  width:100%;max-width:480px;padding:1.5rem;max-height:90vh;overflow-y:auto}
.modal h3{margin-bottom:1rem}
.modal-foot{display:flex;justify-content:flex-end;gap:.6rem;margin-top:1rem}

/* Toast */
.toast{position:fixed;bottom:1.5rem;inset-inline-end:1.5rem;background:var(--card);border:1px solid var(--border);
  border-inline-start:4px solid var(--ok);border-radius:10px;padding:.9rem 1.2rem;box-shadow:var(--shadow);
  z-index:200;transform:translateY(20px);opacity:0;transition:all .3s;max-width:320px}
.toast.show{transform:translateY(0);opacity:1}
.toast.bad{border-inline-start-color:var(--bad)}

.setup-opts{display:grid;gap:1rem;grid-template-columns:repeat(2,1fr)}
.pill-choice{display:flex;gap:.5rem;flex-wrap:wrap}
.pill-choice button{flex:1;min-width:70px;padding:.55rem;border-radius:10px;border:1px solid var(--border);
  background:var(--card2);color:var(--text);font-weight:600}
.pill-choice button.active{background:var(--primary);color:#fff;border-color:var(--primary)}

.empty{text-align:center;color:var(--muted);padding:2.5rem 1rem}
.empty i{font-size:2.2rem;opacity:.4;display:block;margin-bottom:.6rem}

/* Responsive */
@media(max-width:1024px){ .g4{grid-template-columns:repeat(2,1fr)} .g3{grid-template-columns:repeat(2,1fr)} }
@media(max-width:860px){
  .app.show{grid-template-columns:1fr}
  .sidebar{position:fixed;inset-inline-start:0;top:0;width:260px;z-index:60;transform:translateX(-100%);transition:transform .25s}
  [dir="rtl"] .sidebar{transform:translateX(100%)}
  .sidebar.open{transform:translateX(0)}
  .menu-toggle{display:grid;place-items:center}
  .sb-overlay{position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:55;display:none}
  .sb-overlay.show{display:block}
}
@media(max-width:620px){
  .g2,.g3,.g4{grid-template-columns:1fr}
  .setup-opts{grid-template-columns:1fr}
  .content{padding:1rem}
  .topbar{padding:.8rem 1rem}
  .topbar h1{font-size:1rem}
}

.obj-done{border-color:var(--ok)}

/* ---------- Certificate ---------- */
.cert-doc{max-width:900px;margin:0 auto;aspect-ratio:1.414/1;background:#fdfcf7;
  padding:14px;border-radius:10px;box-shadow:0 20px 50px rgba(0,0,0,.35);color:#1e293b}
.cert-inner{position:relative;height:100%;border:3px solid #c9a227;border-radius:6px;
  padding:5% 7%;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;
  background:
    radial-gradient(circle at 50% 0%,rgba(201,162,39,.06),transparent 60%),
    linear-gradient(#fdfcf7,#faf7ee)}
.cert-inner::before{content:"";position:absolute;inset:10px;border:1px solid #c9a227;border-radius:4px;pointer-events:none}
.cert-corner{position:absolute;width:34px;height:34px;border:3px solid #c9a227}
.cert-corner.tl{top:14px;inset-inline-start:14px;border-inline-end:none;border-bottom:none}
.cert-corner.tr{top:14px;inset-inline-end:14px;border-inline-start:none;border-bottom:none}
.cert-corner.bl{bottom:14px;inset-inline-start:14px;border-inline-end:none;border-top:none}
.cert-corner.br{bottom:14px;inset-inline-end:14px;border-inline-start:none;border-top:none}
.cert-seal{width:66px;height:66px;border-radius:50%;background:linear-gradient(135deg,#6366f1,#22d3ee);
  color:#fff;display:grid;place-items:center;font-size:1.8rem;margin-bottom:.6rem;
  box-shadow:0 6px 18px rgba(99,102,241,.4);border:3px solid #fff;outline:2px solid #c9a227}
.cert-eyebrow{letter-spacing:.3em;text-transform:uppercase;font-size:.8rem;color:#c9a227;font-weight:700}
.cert-title{font-size:1.9rem;font-weight:800;color:#0f172a;margin:.2rem 0 .1rem;line-height:1.1}
.cert-rule{width:120px;height:3px;background:#c9a227;border-radius:2px;margin:.5rem 0 1rem}
.cert-sub{font-size:.9rem;color:#475569;margin-bottom:.3rem}
.cert-name{font-size:2.2rem;font-weight:800;color:#4f46e5;font-family:'Georgia','Times New Roman',serif;
  margin:.1rem 0 .7rem;padding-bottom:.3rem;border-bottom:2px dashed #c9a227;min-width:50%}
.cert-reason{font-size:.95rem;color:#334155;max-width:80%;line-height:1.5}
.cert-foot{display:flex;justify-content:space-between;align-items:flex-end;width:100%;margin-top:auto;padding-top:1.4rem;gap:1rem}
.cert-sig{text-align:center;min-width:180px}
.cert-sig-name{font-family:'Georgia',serif;font-size:1.15rem;font-weight:700;color:#0f172a}
.cert-sig-line{border-top:1.5px solid #334155;margin:.15rem 0 .3rem}
.cert-sig-role{font-size:.78rem;color:#64748b}
.cert-meta{text-align:end;font-size:.82rem;color:#334155}
.cert-meta span{color:#94a3b8}
.cert-meta div{margin-bottom:.15rem}
.cert-verify{font-size:.68rem;color:#94a3b8;margin-top:.3rem;font-style:italic}
[dir="rtl"] .cert-meta{text-align:start}
.cert-qr{text-align:center;flex-shrink:0}
.cert-qr-box{display:inline-block;background:#fff;padding:4px;border:1px solid #e2e8f0;border-radius:6px;line-height:0}
.cert-qr-box canvas,.cert-qr-box img{width:92px !important;height:92px !important;display:block}
.cert-qr-label{font-size:.62rem;color:#94a3b8;margin-top:.2rem;letter-spacing:.02em}

/* Verification badge */
.verify-result{max-width:560px;margin:1rem auto}
.verify-ok{border:2px solid var(--ok)} .verify-bad{border:2px solid var(--bad)}
.verify-icon{font-size:2.6rem;text-align:center;margin-bottom:.6rem}

@media(max-width:700px){
  .cert-doc{aspect-ratio:auto}
  .cert-title{font-size:1.3rem} .cert-name{font-size:1.5rem} .cert-reason{font-size:.85rem;max-width:100%}
  .cert-foot{flex-direction:column;align-items:center;text-align:center}
  .cert-meta{text-align:center}
}

@media print{
  body{background:#fff}
  .sidebar,.topbar,.sb-overlay,.no-print,#toast,.modal-bg{display:none !important}
  .app.show{display:block}
  .main{height:auto;overflow:visible}
  .content{padding:0}
  .cert-doc{box-shadow:none;max-width:100%;margin:0}
  @page{size:A4 landscape;margin:8mm}
}
