:root {
  --bg-deep:     #030b14;
  --bg-card:     #071828;
  --bg-elevated: #0d2035;
  --accent:      #00c8ff;
  --accent-dim:  rgba(0,200,255,.12);
  --text-1:      #e8f4fc;
  --text-2:      #7a9bb5;
  --low:         #22c55e;
  --medium:      #f59e0b;
  --high:        #f97316;
  --critical:    #ef4444;
  --r:           14px;
  --r-sm:        9px;
}

*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}

html,body{
  background:var(--bg-deep);
  color:var(--text-1);
  font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;
  font-size:15px;
  min-height:100vh;
  overflow-x:hidden;
}

/* ── Views ─────────────────────────────────────────────────────────────────── */
.view{display:none;flex-direction:column;min-height:100vh;animation:fadeIn .18s ease}
.view.active{display:flex}

@keyframes fadeIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}

/* ── Header ─────────────────────────────────────────────────────────────────  */
.hdr{
  padding:14px 16px 12px;
  background:var(--bg-card);
  border-bottom:1px solid rgba(0,200,255,.1);
  position:sticky;top:0;z-index:10;
}
.hdr-title{font-size:16px;font-weight:700}
.hdr-sub{font-size:12px;color:var(--text-2);margin-top:2px}

/* ── Home hero ──────────────────────────────────────────────────────────────  */
.home-hero{
  background:linear-gradient(135deg,#071828 0%,#0d2035 100%);
  padding:22px 16px 18px;
  border-bottom:1px solid rgba(0,200,255,.1);
}
.hero-icon{font-size:34px;margin-bottom:8px}
.hero-title{font-size:19px;font-weight:800;line-height:1.2}
.hero-sub{font-size:12px;color:var(--text-2);margin-top:5px;line-height:1.5}

/* ── Content ────────────────────────────────────────────────────────────────  */
.content{
  flex:1;
  padding:14px 14px calc(20px + env(safe-area-inset-bottom));
  overflow-y:auto;
}

/* ── Module grid ────────────────────────────────────────────────────────────  */
.module-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}

.mod-card{
  background:var(--bg-card);
  border-radius:var(--r);
  padding:18px 12px;
  border:1px solid rgba(0,200,255,.09);
  cursor:pointer;
  transition:background .15s,transform .12s;
  text-align:center;
  user-select:none;
}
.mod-card:active{transform:scale(.96);background:var(--bg-elevated)}
.mod-icon{font-size:30px;margin-bottom:9px}
.mod-name{font-size:12px;font-weight:600;color:var(--text-1);line-height:1.3}

/* ── Card ───────────────────────────────────────────────────────────────────  */
.card{
  background:var(--bg-card);
  border-radius:var(--r);
  padding:16px;
  margin-bottom:10px;
  border:1px solid rgba(0,200,255,.08);
}
.card-title{font-size:13px;font-weight:700;color:var(--accent);text-transform:uppercase;letter-spacing:.4px;margin-bottom:10px}

/* ── Buttons ─────────────────────────────────────────────────────────────────  */
.btn{
  width:100%;padding:14px;border-radius:var(--r-sm);border:none;
  font-size:15px;font-weight:600;cursor:pointer;transition:opacity .15s;
  font-family:inherit;
}
.btn-primary{background:var(--accent);color:#030b14}
.btn-primary:active{opacity:.82}
.btn-secondary{background:var(--bg-elevated);color:var(--text-1);border:1px solid rgba(0,200,255,.2)}
.btn-secondary:active{opacity:.75}
.btn-danger{background:rgba(239,68,68,.15);color:var(--critical);border:1px solid rgba(239,68,68,.3)}

/* ── Form ────────────────────────────────────────────────────────────────────  */
textarea,input[type=text]{
  width:100%;background:var(--bg-elevated);
  border:1px solid rgba(0,200,255,.15);border-radius:var(--r-sm);
  color:var(--text-1);font-size:14px;padding:12px;
  font-family:inherit;outline:none;transition:border-color .2s;
}
textarea{resize:none;line-height:1.5}
textarea:focus,input[type=text]:focus{border-color:var(--accent)}
::placeholder{color:var(--text-2)}

/* ── Badges ──────────────────────────────────────────────────────────────────  */
.badge{display:inline-flex;align-items:center;padding:4px 10px;border-radius:20px;font-size:12px;font-weight:700}
.badge-LOW     {background:rgba(34,197,94,.15); color:var(--low)}
.badge-MEDIUM  {background:rgba(245,158,11,.15);color:var(--medium)}
.badge-HIGH    {background:rgba(249,115,22,.15);color:var(--high)}
.badge-CRITICAL{background:rgba(239,68,68,.15); color:var(--critical)}

/* ── Risk bar ────────────────────────────────────────────────────────────────  */
.risk-wrap{background:rgba(255,255,255,.07);border-radius:4px;height:8px;margin:10px 0}
.risk-fill{height:8px;border-radius:4px;transition:width .5s}
.risk-fill.LOW     {background:var(--low)}
.risk-fill.MEDIUM  {background:var(--medium)}
.risk-fill.HIGH    {background:var(--high)}
.risk-fill.CRITICAL{background:var(--critical)}

/* ── Big result ──────────────────────────────────────────────────────────────  */
.result-box{display:none}
.result-box.show{display:block;animation:fadeIn .2s ease}

/* ── Indicators / flags ──────────────────────────────────────────────────────  */
.ind-item{
  display:flex;align-items:flex-start;gap:8px;
  padding:7px 0;border-bottom:1px solid rgba(255,255,255,.04);
  font-size:13px;color:var(--text-2);
}
.ind-item:last-child{border:none}
.ind-dot{width:6px;height:6px;border-radius:50%;background:var(--critical);flex-shrink:0;margin-top:5px}
.ind-dot.ok{background:var(--low)}

.flag-item{
  padding:8px 12px;margin-bottom:6px;font-size:13px;
  background:rgba(239,68,68,.07);
  border-left:3px solid var(--critical);
  border-radius:0 var(--r-sm) var(--r-sm) 0;
  color:var(--text-2);
}

/* ── Attack cards ────────────────────────────────────────────────────────────  */
.atk-card{
  background:var(--bg-card);border-radius:var(--r);
  border:1px solid rgba(0,200,255,.08);margin-bottom:10px;overflow:hidden;
}
.atk-hdr{
  padding:14px 16px;cursor:pointer;
  display:flex;align-items:center;gap:12px;
  user-select:none;
}
.atk-emoji{font-size:24px;flex-shrink:0}
.atk-name{font-size:14px;font-weight:600;flex:1}
.atk-chev{color:var(--text-2);font-size:18px;transition:transform .2s;flex-shrink:0}
.atk-card.open .atk-chev{transform:rotate(180deg)}
.atk-body{
  display:none;padding:0 16px 16px;
  border-top:1px solid rgba(0,200,255,.06);
}
.atk-card.open .atk-body{display:block;animation:fadeIn .15s ease}

/* ── Label ───────────────────────────────────────────────────────────────────  */
.lbl{
  font-size:11px;font-weight:700;color:var(--accent);
  text-transform:uppercase;letter-spacing:.5px;
  margin:14px 0 6px;
}

/* ── List ────────────────────────────────────────────────────────────────────  */
.dot-list{list-style:none}
.dot-list li{
  display:flex;gap:8px;padding:4px 0;
  font-size:13px;color:var(--text-2);line-height:1.4;
}
.dot-list li::before{content:"•";color:var(--accent);flex-shrink:0}

/* ── Scenario meta grid ──────────────────────────────────────────────────────  */
.meta-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:12px}
.meta-cell{background:var(--bg-elevated);border-radius:var(--r-sm);padding:10px}
.meta-lbl{font-size:10px;color:var(--text-2);text-transform:uppercase;letter-spacing:.4px;margin-bottom:3px}
.meta-val{font-size:13px;font-weight:600}

.mitre-box{
  background:rgba(0,200,255,.06);border:1px solid rgba(0,200,255,.15);
  border-radius:var(--r-sm);padding:12px;margin-top:12px;
}
.mitre-box .lbl{margin-top:0}

/* ── Plan cards ──────────────────────────────────────────────────────────────  */
.plan-card{
  background:var(--bg-card);border-radius:var(--r);
  border:1px solid rgba(0,200,255,.08);margin-bottom:10px;overflow:hidden;
}
.plan-hdr{
  padding:14px 16px;cursor:pointer;
  display:flex;align-items:center;gap:12px;user-select:none;
}
.plan-emoji{font-size:22px;flex-shrink:0}
.plan-info{flex:1}
.plan-name{font-size:14px;font-weight:700}
.plan-desc{font-size:12px;color:var(--text-2);margin-top:2px}
.plan-chev{color:var(--text-2);font-size:18px;transition:transform .2s;flex-shrink:0}
.plan-card.open .plan-chev{transform:rotate(180deg)}
.plan-body{display:none;padding:0 16px 16px;border-top:1px solid rgba(0,200,255,.06)}
.plan-card.open .plan-body{display:block;animation:fadeIn .15s ease}

.step{display:flex;gap:12px;margin-bottom:14px}
.step-n{
  width:28px;height:28px;border-radius:50%;
  background:var(--accent-dim);color:var(--accent);
  font-size:12px;font-weight:700;
  display:flex;align-items:center;justify-content:center;flex-shrink:0;
  margin-top:2px;
}
.step-body h4{font-size:13px;font-weight:700;margin-bottom:5px}

/* ── Quiz ────────────────────────────────────────────────────────────────────  */
.qz-progress{background:rgba(255,255,255,.08);border-radius:4px;height:4px;margin-bottom:16px}
.qz-prog-fill{height:4px;border-radius:4px;background:var(--accent);transition:width .3s}

.qz-counter{font-size:12px;color:var(--text-2);margin-bottom:8px}
.qz-question{font-size:15px;font-weight:600;line-height:1.5;margin-bottom:16px}

.qz-option{
  background:var(--bg-elevated);
  border:1.5px solid rgba(0,200,255,.12);
  border-radius:var(--r-sm);padding:12px 14px;
  margin-bottom:8px;cursor:pointer;
  display:flex;align-items:flex-start;gap:10px;
  font-size:13px;line-height:1.4;
  transition:all .15s;user-select:none;
}
.qz-option:active{opacity:.8}
.qz-option.correct{border-color:var(--low);background:rgba(34,197,94,.1)}
.qz-option.wrong  {border-color:var(--critical);background:rgba(239,68,68,.1)}
.qz-option.dim    {pointer-events:none;opacity:.45}
.qz-option.correct.dim{opacity:1}

.opt-letter{
  width:24px;height:24px;border-radius:50%;
  background:rgba(0,200,255,.15);color:var(--accent);
  font-size:11px;font-weight:700;
  display:flex;align-items:center;justify-content:center;flex-shrink:0;
}
.qz-option.correct .opt-letter{background:var(--low);color:#fff}
.qz-option.wrong   .opt-letter{background:var(--critical);color:#fff}

.explanation{
  background:rgba(0,200,255,.06);border:1px solid rgba(0,200,255,.2);
  border-radius:var(--r-sm);padding:12px;margin-top:10px;
  font-size:13px;color:var(--text-2);line-height:1.55;display:none;
}
.explanation.show{display:block;animation:fadeIn .2s}

/* ── Score ───────────────────────────────────────────────────────────────────  */
.score-block{text-align:center;padding:20px 0 14px}
.score-num{font-size:64px;font-weight:900;color:var(--accent);line-height:1}
.score-of{font-size:16px;color:var(--text-2);margin-top:4px}
.score-grade{font-size:18px;font-weight:700;margin-top:10px}
.score-pct{
  font-size:13px;color:var(--text-2);margin-top:6px;
  background:var(--bg-elevated);display:inline-block;
  padding:4px 12px;border-radius:20px;
}

/* ── Divider ─────────────────────────────────────────────────────────────────  */
.divider{height:1px;background:rgba(0,200,255,.07);margin:14px 0}

/* ── Utility ─────────────────────────────────────────────────────────────────  */
.mt-10{margin-top:10px}
.mt-14{margin-top:14px}
.mb-10{margin-bottom:10px}
.text-2{color:var(--text-2)}
.text-sm{font-size:13px}
.text-xs{font-size:12px}
.fw-6{font-weight:600}
.fw-7{font-weight:700}
.row{display:flex;align-items:center;gap:8px}
.gap-12{gap:12px}
.mono{font-family:monospace;font-size:12px;background:var(--bg-elevated);padding:2px 6px;border-radius:4px}
