*{box-sizing:border-box;margin:0;padding:0}
:root{
  --bg:#f4f7f9; --panel:#fff; --border:#d1d9e0;
  --txt:#0d1117; --muted:#6e7781; --blue:#0969da; --green:#1a7f37;
  --red:#cf222e; --amber:#9a6700;
}
html,body{height:100%}
body{font-family:'Inter',system-ui,-apple-system,sans-serif;background:var(--bg);color:var(--txt);overflow-x:hidden}
b{color:#000}

/* LANDING */
body.landing{display:flex;align-items:center;justify-content:center;position:relative;min-height:100vh}
#bg{position:fixed;inset:0;z-index:0}
.landing-wrap{position:relative;z-index:2;text-align:center;padding:24px;max-width:520px}
.logo-badge{display:inline-flex;align-items:center;justify-content:center;width:96px;height:96px;border-radius:26px;background:#fff;border:1px solid var(--border);color:var(--blue);margin-bottom:22px;box-shadow:0 12px 40px rgba(9,105,218,.18);animation:float 3s ease-in-out infinite}
@keyframes float{0%,100%{transform:translateY(0)}50%{transform:translateY(-10px)}}
.glow{font-size:56px;font-weight:800;letter-spacing:-2px;color:var(--txt);margin-bottom:6px}
.glow span{color:var(--blue)}
.tagline{color:var(--muted);margin:6px 0 32px;font-size:15px}
.glass{background:rgba(255,255,255,.85);backdrop-filter:blur(20px);border:1px solid var(--border);border-radius:18px;padding:20px;display:flex;flex-direction:column;gap:12px;box-shadow:0 20px 60px rgba(0,0,0,.08)}
.role-buttons{display:flex;flex-direction:column;gap:12px}
.role-btn{display:flex;align-items:center;gap:14px;padding:18px 20px;border-radius:12px;text-decoration:none;color:#fff;transition:.25s;border:0;cursor:pointer}
.role-teacher{background:linear-gradient(135deg,#0d1117,#24292f)}
.role-student{background:linear-gradient(135deg,#0969da,#0860c4)}
.role-btn:hover{transform:translateY(-2px);box-shadow:0 12px 30px rgba(9,105,218,.35)}
.role-icon{font-size:26px}
.role-text{flex:1;text-align:left}
.role-text b{display:block;font-size:16px;font-weight:700;color:#fff}
.role-text small{display:block;font-size:12px;opacity:.75;margin-top:2px}
.role-arrow{font-size:20px;opacity:.7}
.feature-row{display:flex;flex-wrap:wrap;gap:16px;justify-content:center;margin-top:26px;color:var(--muted);font-size:12px;letter-spacing:.5px}

/* CARDS */
.card{background:#fff;padding:32px;border-radius:14px;max-width:420px;box-shadow:0 8px 32px rgba(0,0,0,.08);border:1px solid var(--border)}
.center-card{margin:0 auto}
.card h1{font-size:22px;margin-bottom:8px}
.card p{color:var(--muted);margin-bottom:18px;font-size:14px}
.card input{width:100%;padding:13px;margin:6px 0;border-radius:8px;border:1px solid var(--border);background:#fafbfc;color:var(--txt);font-size:15px;outline:none;transition:.2s}
.card input:focus{border-color:var(--blue);box-shadow:0 0 0 3px rgba(9,105,218,.15)}
.card button{width:100%;padding:13px;margin-top:8px;border:0;border-radius:8px;background:var(--blue);color:#fff;font-weight:600;font-size:15px;cursor:pointer;transition:.2s}
.card button:hover{background:#0860c4;transform:translateY(-1px)}

/* DASHBOARD */
body.dash{padding:20px;max-width:1400px;margin:0 auto}
.dash-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px;gap:16px;flex-wrap:wrap}
.brand{display:flex;align-items:center;gap:10px;font-size:20px;font-weight:700}
.brand b{color:var(--blue)}
.exam-label{color:var(--muted);font-size:14px;background:#fff;padding:8px 16px;border-radius:20px;border:1px solid var(--border)}
.exam-label b{color:var(--blue)}
.btn-ghost{color:var(--muted);text-decoration:none;font-size:14px;padding:8px 14px;border-radius:8px;border:1px solid var(--border);background:#fff;transition:.2s}
.btn-ghost:hover{color:var(--txt);border-color:var(--blue)}
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px;margin-bottom:20px}
.stat{background:#fff;border:1px solid var(--border);border-radius:12px;padding:18px;position:relative;overflow:hidden;box-shadow:0 2px 8px rgba(0,0,0,.03)}
.stat::before{content:'';position:absolute;top:0;left:0;width:3px;height:100%;background:var(--blue)}
.stat.danger::before{background:var(--red)}
.stat.live::before{background:var(--green)}
.stat-num{font-size:28px;font-weight:700;display:flex;align-items:center;gap:8px}
.stat-lbl{color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:1px;margin-top:4px}
.stat.danger .stat-num{color:var(--red)}
.pulse{width:10px;height:10px;border-radius:50%;background:var(--green);display:inline-block;box-shadow:0 0 0 0 rgba(26,127,55,.7);animation:pulse 1.8s infinite}
@keyframes pulse{70%{box-shadow:0 0 0 12px rgba(26,127,55,0)}100%{box-shadow:0 0 0 0 rgba(26,127,55,0)}}
.broadcast{display:flex;gap:10px;background:#fff;padding:14px;border-radius:12px;border:1px solid var(--border);margin-bottom:20px;box-shadow:0 2px 8px rgba(0,0,0,.03)}
.broadcast input{flex:1;background:#fafbfc;border:1px solid var(--border);border-radius:8px;padding:12px 14px;color:var(--txt);outline:none;font-size:14px}
.broadcast input:focus{border-color:var(--blue)}
.broadcast button{background:#0d1117;border:0;border-radius:8px;padding:0 22px;color:#fff;font-weight:600;cursor:pointer;transition:.2s}
.broadcast button:hover{transform:translateY(-1px);box-shadow:0 8px 20px rgba(0,0,0,.2)}
.table-wrap{background:#fff;border:1px solid var(--border);border-radius:12px;overflow:hidden;box-shadow:0 2px 8px rgba(0,0,0,.03)}
table{width:100%;border-collapse:collapse}
th{background:#fafbfc;color:var(--muted);font-size:11px;letter-spacing:1px;text-transform:uppercase;padding:14px;text-align:left;border-bottom:1px solid var(--border)}
td{padding:14px;border-bottom:1px solid var(--border);font-size:13px}
tr:last-child td{border-bottom:none}
tr:hover td{background:#f0f6fc}
img.screenshot{max-width:110px;border-radius:6px;border:1px solid var(--border);cursor:pointer;transition:.2s}
img.screenshot:hover{transform:scale(1.05)}

/* STUDENT */
body.student-view{display:flex;flex-direction:column;min-height:100vh;background:var(--bg)}
.stu-header{display:flex;justify-content:space-between;align-items:center;padding:16px 24px;border-bottom:1px solid var(--border);background:#fff}
.brand-sm{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:700}
.stu-status{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--muted)}
.stu-setup{flex:1;display:flex;align-items:center;justify-content:center;padding:40px 20px}
.stu-main{flex:1;display:flex;align-items:center;justify-content:center;gap:40px;padding:40px;flex-wrap:wrap}
.cam-frame{position:relative;width:520px;max-width:92vw;aspect-ratio:4/3;border-radius:18px;overflow:hidden;background:#000;box-shadow:0 0 0 1px var(--border),0 20px 60px rgba(9,105,218,.15)}
.cam-frame video{width:100%;height:100%;object-fit:cover;transform:scaleX(-1)}
.cam-overlay{position:absolute;inset:0;pointer-events:none;background:linear-gradient(180deg,transparent 55%,rgba(0,0,0,.65))}
.scanline{position:absolute;top:0;left:0;right:0;height:2px;background:linear-gradient(90deg,transparent,#0969da,transparent);animation:scan 3s linear infinite;z-index:3;pointer-events:none}
@keyframes scan{0%{top:0}100%{top:100%}}
.cam-corner{position:absolute;width:28px;height:28px;border:3px solid var(--blue);pointer-events:none;z-index:2}
.cam-corner.tl{top:14px;left:14px;border-right:0;border-bottom:0}
.cam-corner.tr{top:14px;right:14px;border-left:0;border-bottom:0}
.cam-corner.bl{bottom:14px;left:14px;border-right:0;border-top:0}
.cam-corner.br{bottom:14px;right:14px;border-left:0;border-top:0}
.cam-label{position:absolute;bottom:16px;left:18px;color:#fff;font-size:11px;letter-spacing:2px;font-weight:700;z-index:3}
.cam-rec{position:absolute;top:16px;right:18px;color:#fff;background:#cf222e;font-size:11px;font-weight:800;letter-spacing:2px;padding:5px 10px;border-radius:5px;z-index:3;animation:blink 1.4s infinite}
@keyframes blink{50%{opacity:.35}}
.stu-info{background:#fff;border:1px solid var(--border);border-radius:14px;padding:22px;min-width:300px;box-shadow:0 2px 12px rgba(0,0,0,.04)}
.info-row{display:flex;justify-content:space-between;padding:13px 0;border-bottom:1px solid var(--border);font-size:13px}
.info-row:last-child{border-bottom:none}
.info-row span{color:var(--muted)}
.ok{color:var(--green)}.bad{color:var(--red)}
.warning{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%) scale(.9);background:rgba(207,34,46,.97);border:2px solid var(--red);color:#fff;padding:24px 40px;border-radius:14px;font-size:18px;font-weight:700;backdrop-filter:blur(20px);opacity:0;pointer-events:none;transition:.3s;z-index:100;text-align:center;box-shadow:0 20px 60px rgba(207,34,46,.5)}
.warning.show{opacity:1;transform:translate(-50%,-50%) scale(1)}

/* LIVE GRID (Teacher Dashboard) */
.live-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
  gap: 16px;
  margin-bottom: 20px;
}
.live-card {
  background: #fff;
  border: 1px solid var(--border);
  border-radius: 12px;
  overflow: hidden;
  box-shadow: 0 2px 8px rgba(0,0,0,.04);
  transition: .2s;
}
.live-card.suspicious {
  border-color: var(--red);
  box-shadow: 0 4px 16px rgba(207,34,46,.15);
}
.live-card-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 12px 14px;
  background: #fafbfc;
  border-bottom: 1px solid var(--border);
  font-size: 13px;
}
.live-card-header b { color: var(--txt); }
.live-shot {
  width: 100%;
  height: 160px;
  object-fit: cover;
  display: block;
  background: #000;
}
.live-shot-empty {
  width: 100%;
  height: 160px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: #0d1117;
  color: #6e7781;
  font-size: 13px;
}
.live-card-footer {
  display: flex;
  justify-content: space-between;
  padding: 10px 14px;
  font-size: 12px;
  color: var(--muted);
  border-top: 1px solid var(--border);
}

/* SECURE RADAR PLACEHOLDER (Student View) */
.secure-placeholder {
  position: relative;
  width: 400px;
  max-width: 90vw;
  aspect-ratio: 1/1;
  background: #0d1117;
  border-radius: 50%;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  box-shadow: 0 0 60px rgba(9,105,218,.2), inset 0 0 40px rgba(9,105,218,.1);
  border: 1px solid #1f2937;
  overflow: hidden;
}
.radar {
  position: absolute;
  inset: 0;
  border-radius: 50%;
  background: conic-gradient(from 0deg, transparent 0deg, rgba(9,105,218,0.4) 60deg, transparent 120deg);
  animation: spin 3s linear infinite;
}
.radar::before, .radar::after {
  content: '';
  position: absolute;
  top: 50%; left: 50%;
  transform: translate(-50%, -50%);
  border-radius: 50%;
  border: 1px solid rgba(9,105,218,0.3);
}
.radar::before { width: 60%; height: 60%; }
.radar::after { width: 30%; height: 30%; }
@keyframes spin { to { transform: rotate(360deg); } }
.radar-text {
  position: relative;
  z-index: 2;
  color: #fff;
  font-size: 14px;
  font-weight: 700;
  letter-spacing: 2px;
  margin-bottom: 6px;
  text-shadow: 0 0 12px rgba(9,105,218,0.8);
}
.radar-sub {
  position: relative;
  z-index: 2;
  color: #6e7781;
  font-size: 12px;
}

@media(max-width:600px){
  .glow{font-size:38px}
  .stats{grid-template-columns:repeat(2,1fr)}
  .broadcast{flex-direction:column}
  .broadcast button{padding:12px}
  .stu-main{gap:20px;padding:20px}
  th:nth-child(3),td:nth-child(3){display:none}
  .live-grid{grid-template-columns:1fr}
}
