/* ===== Kali Simülasyon Labı — Arayüz ===== */
:root{
  --arka:#0b0f14; --panel:#111820; --panel2:#0d1117; --cizgi:#1f2937;
  --yazi:#e6edf3; --soluk:#8b949e; --vurgu:#ff6b6b; --vurgu2:#39c5cf;
  --yesil:#3fb950; --sari:#e3b341; --mavi:#58a6ff;
  --mono:"JetBrains Mono","Cascadia Mono",Consolas,"Courier New",monospace;
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{
  background:var(--arka); color:var(--yazi);
  font-family:system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  display:flex; flex-direction:column; overflow:hidden;
}
code{font-family:var(--mono);background:#1c2430;padding:1px 5px;border-radius:4px;font-size:11px;color:var(--vurgu2)}

/* ---- Giriş kapısı ---- */
.kapi{position:fixed;inset:0;background:linear-gradient(160deg,#0b0f14,#141c26);z-index:50;
  display:flex;align-items:center;justify-content:center;padding:20px;overflow-y:auto}
.kapi.gizli{display:none}
.kapiKutu{width:100%;max-width:430px;background:var(--panel);border:1px solid var(--cizgi);
  border-radius:14px;padding:32px}
.kapiLogo{font-family:var(--mono);font-weight:700;font-size:17px;letter-spacing:3px;
  color:var(--vurgu);text-align:center;margin-bottom:22px}
.kapiLogo span{color:var(--vurgu2)}
.adim{animation:kay .25s ease}
@keyframes kay{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.adim h1{font-size:19px;margin-bottom:6px;text-align:center}
.kapiAciklama{color:var(--soluk);font-size:13px;margin-bottom:20px;text-align:center;line-height:1.55}
.kapiKutu label{display:block;font-size:12px;color:var(--soluk);margin-bottom:14px}
.kapiKutu label small{opacity:.6;font-size:11px}
.kapiKutu input{width:100%;margin-top:6px;padding:12px 14px;background:var(--panel2);
  border:1px solid var(--cizgi);border-radius:8px;color:var(--yazi);font-size:15px;font-family:inherit}
.kapiKutu input:focus{outline:none;border-color:var(--vurgu2)}
#gKod{font-family:var(--mono);letter-spacing:2px;text-align:center;font-size:18px;text-transform:uppercase}
.adim button[type=submit]{width:100%;padding:13px;background:var(--vurgu);color:#fff;border:0;
  border-radius:8px;font-size:15px;font-weight:600;cursor:pointer;margin-top:6px;font-family:inherit}
.adim button[type=submit]:hover{filter:brightness(1.1)}
.adim button[type=submit]:disabled{opacity:.6;cursor:wait}
.linkBtn{width:100%;padding:10px;background:transparent;border:0;color:var(--soluk);
  font-size:13px;cursor:pointer;margin-top:8px;font-family:inherit}
.linkBtn:hover{color:var(--yazi)}
.dersKutu{background:var(--panel2);border:1px solid var(--cizgi);border-radius:8px;
  padding:11px 13px;margin-bottom:14px;text-align:center}
.dersKutu b{display:block;font-size:14px;margin-bottom:3px}
.dersKutu span{font-size:12px;color:var(--vurgu2)}
.kapiNot{background:#1a1a0f;border:1px solid #4d4a1a;border-radius:7px;padding:9px 12px;
  font-size:12px;color:var(--sari);margin-bottom:14px;line-height:1.5}
.kapiHata{background:#2a1416;border:1px solid #6b2a2a;border-radius:7px;padding:10px 13px;
  font-size:13px;color:#ff9b9b;margin-top:14px;text-align:center}
.kapiIpucu{font-size:11.5px;color:var(--soluk);text-align:center;margin-top:12px}
.kapiIpucu b{color:var(--vurgu2);font-family:var(--mono)}
.kapiAlt{display:block;margin-top:20px;color:#6e7681;font-size:11px;line-height:1.5;text-align:center}
.gizli{display:none !important}
.logo{font-family:var(--mono);font-weight:700;font-size:16px;letter-spacing:2px;color:var(--vurgu)}
.logo span{color:var(--vurgu2)}

/* ---- Üst bar ---- */
header{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:10px 18px;
  background:var(--panel);border-bottom:1px solid var(--cizgi);flex-wrap:wrap}
header .sol{display:flex;align-items:center;gap:16px;min-width:0}
header h1{font-size:15px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
header p{font-size:12px;color:var(--soluk)}
header .sag{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.etiket{font-size:11px;padding:3px 9px;border:1px solid var(--cizgi);border-radius:20px;color:var(--soluk)}
.etiket.saldiri{color:#ff8a80;border-color:#5c2a28;background:#1e1416}
.etiket.savunma{color:#7ee787;border-color:#1f5c2e;background:#0f2417}
.etiket.kripto{color:#d2a8ff;border-color:#463063;background:#1c1426}
.ogrenciKutu{display:flex;flex-direction:column;line-height:1.15;max-width:170px}
.ogrenciKutu span{font-size:10px;color:var(--soluk);text-transform:uppercase;letter-spacing:1px}
.ogrenciKutu b{font-size:12px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.turLegend{display:flex;gap:14px;margin-top:10px;padding-top:9px;border-top:1px solid var(--cizgi);
  font-size:11px;color:var(--soluk)}
.turLegend i{display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:5px;vertical-align:1px}
.noktaSal{background:#ff6b6b}
.noktaSav{background:#3fb950}
.noktaKri{background:#bc8cff}
.puanKutu{display:flex;align-items:center;gap:10px}
.cubukDis{width:130px;height:7px;background:#1c2430;border-radius:4px;overflow:hidden}
.cubuk{height:100%;width:0;background:linear-gradient(90deg,var(--vurgu),var(--sari));transition:width .4s}
.puanMetin{display:flex;flex-direction:column;line-height:1.15}
.puanMetin span{font-size:10px;color:var(--soluk);text-transform:uppercase;letter-spacing:1px}
.puanMetin b{font-size:14px;font-family:var(--mono)}
.dugmeler button{background:var(--panel2);border:1px solid var(--cizgi);color:var(--soluk);font-family:var(--mono);
  font-size:11px;padding:6px 10px;border-radius:6px;cursor:pointer;margin-left:6px}
.dugmeler button:hover{color:var(--yazi);border-color:var(--vurgu2)}

/* ---- Ana yerleşim ---- */
/* NOT: grid-template-rows ZORUNLU. Satır 'auto' kalırsa terminal içeriği büyüdükçe
   satır da büyür, alt satır ekranın altına taşar ve body{overflow:hidden} yüzünden
   ulaşılamaz olur (belirti: "en alt satır kayboluyor"). minmax(0,1fr) satırı
   main'in yüksekliğine kilitler; taşan içerik kutuların İÇİNDE kayar. */
main{flex:1;display:grid;grid-template-columns:360px 1fr;grid-template-rows:minmax(0,1fr);min-height:0}
aside{overflow-y:auto;min-height:0;min-width:0;border-right:1px solid var(--cizgi);background:var(--panel2);padding:14px}
aside::-webkit-scrollbar{width:8px}
aside::-webkit-scrollbar-thumb{background:#25303d;border-radius:4px}
.panel{background:var(--panel);border:1px solid var(--cizgi);border-radius:10px;padding:13px;margin-bottom:12px}
.panel h2{font-size:11px;text-transform:uppercase;letter-spacing:1.4px;color:var(--soluk);margin-bottom:10px}
.metin p{font-size:12.5px;line-height:1.65;color:#c9d1d9;margin-bottom:8px}
.hedef div{display:flex;justify-content:space-between;font-size:12px;padding:5px 0;border-bottom:1px dashed #1c2430}
.hedef div:last-child{border:0}
.hedef span{color:var(--soluk)}
.hedef b{font-family:var(--mono);color:var(--vurgu2);font-weight:500}

/* ---- Ders listesi ---- */
.dersler{display:flex;flex-direction:column;gap:6px;max-height:260px;overflow-y:auto}
.ders{display:flex;align-items:center;gap:10px;text-align:left;background:var(--panel2);border:1px solid var(--cizgi);
  border-radius:8px;padding:8px 10px;cursor:pointer;color:var(--yazi);font-family:inherit;width:100%}
.ders:hover{border-color:#334155}
.ders.su{border-color:var(--vurgu);background:#1a1216}
.ders .no{font-family:var(--mono);font-size:11px;color:var(--soluk);background:#1c2430;padding:3px 6px;border-radius:5px;min-width:30px;text-align:center}
.ders.su .no{background:var(--vurgu);color:#fff}
.ders.savunma .no{color:#7ee787}
.ders.su.savunma .no{background:#3fb950;color:#04140a}
.ders.bitti .no{background:#12351f;color:var(--yesil)}
.ders.savunma{border-left:2px solid #2a4a32}
.ders.saldiri{border-left:2px solid #4a2a2a}
.ders.kripto .no{color:#d2a8ff}
.ders.su.kripto .no{background:#bc8cff;color:#1c1030}
.ders.kripto{border-left:2px solid #463063}
.ders .bilgi{display:flex;flex-direction:column;min-width:0}
.ders .bilgi b{font-size:12px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ders .bilgi small{font-size:10px;color:var(--soluk)}

/* ---- Görevler ---- */
.gorevler{list-style:none;display:flex;flex-direction:column;gap:7px}
.gorevler li{display:flex;align-items:flex-start;gap:9px;font-size:12px;padding:7px 8px;border-radius:7px;background:var(--panel2);border:1px solid transparent}
.gorevler li.tamam{border-color:#1f5c2e;background:#0f2417}
.gorevler li .im{font-family:var(--mono);font-size:11px;min-width:18px;height:18px;border-radius:50%;background:#1c2430;
  color:var(--soluk);display:flex;align-items:center;justify-content:center;flex:0 0 auto;margin-top:1px}
.gorevler li.tamam .im{background:var(--yesil);color:#04140a}
.gorevler li .metin{flex:1;min-width:0;display:flex;flex-direction:column}
.gorevler li .metin b{font-weight:500}
.gorevler li .metin small{color:var(--soluk);font-size:11px;line-height:1.45;margin-top:2px}
.gorevler li .puan{font-family:var(--mono);font-size:11px;color:var(--sari);flex:0 0 auto}
.kucuk{font-size:11px;color:var(--soluk);margin-top:10px;line-height:1.6}

/* ---- Terminal ---- */
.terminalKutu{display:flex;flex-direction:column;min-height:0;min-width:0;overflow:hidden}
.terminalBaslik{display:flex;align-items:center;gap:7px;padding:9px 13px;background:#161b22;border-bottom:1px solid var(--cizgi);flex:0 0 auto}
.nokta{width:11px;height:11px;border-radius:50%}
.nokta.k{background:#ff5f57}.nokta.s{background:#febc2e}.nokta.y{background:#28c840}
.sekme{font-family:var(--mono);font-size:11px;color:var(--soluk);margin-left:8px}
.rozet{margin-left:auto;font-size:10px;color:#6e7681;border:1px solid var(--cizgi);padding:3px 8px;border-radius:20px}
#terminalSarmal{flex:1;min-height:0;min-width:0;overflow:hidden;background:#0d1117;padding:12px 14px}
#terminal{height:100%;width:100%;overflow:hidden;background:#0d1117}
#terminal .xterm-viewport{background:#0d1117!important}
.yukleniyor{padding:10px 14px;font-size:12px;color:var(--sari);background:#1a1a0f;border-top:1px solid var(--cizgi)}
.yukleniyor.gizli{display:none}

@media (max-width:900px){
  main{grid-template-columns:1fr;grid-template-rows:auto 1fr}
  aside{border-right:0;border-bottom:1px solid var(--cizgi);max-height:44vh}
  header h1{font-size:13px}
  .cubukDis{width:80px}
}
