:root{
  --zemin:#f2f5f2;--kart:#fff;--yumusak:#f6f9f7;--yazi:#1b322c;--soluk:#5b6f68;--cizgi:#dbe4df;
  --ana:#1f6f5c;--ana-yazi:#fff;--ana-acik:#e3f1ea;--ana-koyu:#15523f;
  --turuncu:#b5651d;--turuncu-acik:#fdf1e2;--kirmizi:#b3412e;--kirmizi-acik:#fbe9e5;--mavi-acik:#e8f2f8;
  --kod-zemin:#13221e;--kod-yazi:#e3eee8;--mono:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  --r:12px;--golge:0 1px 2px rgba(20,40,30,.06),0 6px 20px rgba(20,40,30,.06)
}
@media (prefers-color-scheme:dark){:root{--zemin:#0e1916;--kart:#15231f;--yumusak:#1a2b26;--yazi:#e2ede8;--soluk:#93a8a1;--cizgi:#2a3f38;--ana:#4fbf9f;--ana-yazi:#08130f;--ana-acik:#1d3a31;--ana-koyu:#8fe3c6;--turuncu:#e0a060;--turuncu-acik:#3a2c18;--kirmizi:#f08a76;--kirmizi-acik:#3d211b;--mavi-acik:#18303c;--kod-zemin:#08110f}}
*{box-sizing:border-box}
body{margin:0;background:var(--zemin);color:var(--yazi);font:15px/1.6 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;-webkit-font-smoothing:antialiased}
button,input,select,textarea{font:inherit;color:inherit}
a{color:var(--ana)}
h1,h2,h3{line-height:1.25;margin:0 0 .4em}
.gizli{display:none!important}
.muted{color:var(--soluk)}
.kucuk-yazi{font-size:13px}
code{font-family:var(--mono);font-size:.92em;background:var(--yumusak);padding:1px 5px;border-radius:5px}

/* üst menü */
.ust{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:18px;flex-wrap:wrap;padding:10px 20px;background:#123f34;color:#fff}
.marka{display:flex;align-items:center;gap:9px;color:#fff;text-decoration:none;font-weight:800;font-size:17px}
.marka svg{width:28px;height:28px}
.surum{font-size:11px;background:#f2c46d;color:#3b2a06;border-radius:6px;padding:2px 6px}
.sekmeler{display:flex;gap:4px;flex:1;flex-wrap:wrap}
.sekmeler a{color:#cfe3da;text-decoration:none;padding:7px 13px;border-radius:9px;font-weight:600}
.sekmeler a b{display:inline-grid;place-items:center;width:20px;height:20px;border-radius:50%;background:rgba(255,255,255,.18);font-size:12px;margin-right:5px}
.sekmeler a.aktif{background:#fff;color:#123f34}
.sekmeler a.aktif b{background:#1f6f5c;color:#fff}
.durum-hap{display:flex;align-items:center;gap:7px;font-size:13px;background:rgba(255,255,255,.1);padding:5px 11px;border-radius:999px}
.durum-hap i{width:9px;height:9px;border-radius:50%;background:#f2c46d}
.durum-hap.iyi i{background:#5fd39b}.durum-hap.kotu i{background:#e07a66}
.serit{background:var(--turuncu-acik);padding:9px 20px;border-bottom:1px solid var(--cizgi);font-size:14px}

/* düğmeler */
.btn{display:inline-flex;align-items:center;gap:6px;border:0;border-radius:10px;padding:9px 16px;font-weight:600;cursor:pointer;background:var(--ana);color:var(--ana-yazi);text-decoration:none;white-space:nowrap}
.btn:hover{filter:brightness(1.07)}
.btn:disabled{opacity:.4;cursor:not-allowed;filter:none}
.btn.ghost{background:transparent;color:var(--ana);border:1px solid var(--cizgi)}
.btn.ikincil{background:var(--ana-acik);color:var(--ana-koyu)}
.btn.vurgu{background:#c47f25;color:#fff}
.btn.uyari-btn{background:var(--turuncu);color:#fff;margin-top:8px}
.btn.kucuk{padding:6px 11px;font-size:13px}
.btn.buyuk{padding:12px 20px;font-size:15.5px}
.baglanti{border:0;background:none;color:var(--ana);cursor:pointer;text-decoration:underline;padding:0}
.satir{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-top:12px}
.satir.alt{justify-content:space-between;border-top:1px solid var(--cizgi);padding-top:14px;margin-top:16px}
.satir.ust0{margin-top:0}
.etiket{font-size:11.5px;font-weight:800;letter-spacing:.07em;text-transform:uppercase;color:var(--soluk);margin:14px 0 6px}
.rozet{display:inline-block;font-size:12px;font-weight:700;padding:2px 9px;border-radius:999px;background:var(--ana-acik);color:var(--ana-koyu)}
.rozet.oner{background:#fdf0d5;color:#8a5a12;margin-left:6px}
.kart{background:var(--kart);border-radius:var(--r);box-shadow:var(--golge);padding:20px 22px;margin-bottom:14px}
.kutu{border-radius:11px;padding:12px 14px;margin:10px 0;line-height:1.6}
.kutu.kotu{background:var(--kirmizi-acik)}.kutu.uyari{background:var(--turuncu-acik)}.kutu.iyi{background:var(--ana-acik)}.kutu.oto{background:var(--mavi-acik)}
.spin{display:inline-block;width:16px;height:16px;border:3px solid var(--ana-acik);border-top-color:var(--ana);border-radius:50%;animation:don .8s linear infinite;vertical-align:-3px;margin-right:8px}
@keyframes don{to{transform:rotate(360deg)}}
.yukleniyor{padding:14px;color:var(--soluk)}

/* ana sayfa */
.ana{max-width:1150px;margin:0 auto;padding:30px 20px}
.karsilama h1{font-size:34px;letter-spacing:-.01em}
.karsilama p{font-size:17px;color:var(--soluk);max-width:820px}
.moduller{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin:24px 0}
.modul{display:block;background:var(--kart);border-radius:18px;box-shadow:var(--golge);padding:26px;text-decoration:none;color:var(--yazi);border:2px solid transparent;transition:border-color .15s,transform .15s}
.modul:hover{border-color:var(--ana);transform:translateY(-2px)}
.modul h2{font-size:26px;margin:10px 0 0}
.modul .alt{font-weight:700;color:var(--ana);margin:2px 0 10px}
.modul.iki .alt,.modul.iki .git{color:#a86a1b}
.modul.iki .rozet{background:#fdf0d5;color:#8a5a12}
.modul .git{font-weight:800;color:var(--ana)}
.nasil-calisir{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.nasil-calisir div{background:var(--kart);border-radius:var(--r);padding:16px;box-shadow:var(--golge)}
.nasil-calisir p{margin:4px 0 0;color:var(--soluk);font-size:14px}

/* modül 1 */
.m1{display:grid;grid-template-columns:290px 1fr;gap:18px;max-width:1500px;margin:0 auto;padding:16px}
.m1-sol{background:var(--kart);border-radius:var(--r);box-shadow:var(--golge);padding:16px;position:sticky;top:70px;max-height:calc(100vh - 90px);overflow:auto;align-self:start}
.gun{border-top:1px solid var(--cizgi);margin-top:6px}
.gun-bas{width:100%;display:flex;justify-content:space-between;border:0;background:none;padding:9px 4px;font-weight:800;cursor:pointer}
.gun-bas .ok{transition:transform .2s}
.gun.acik .gun-bas .ok{transform:rotate(90deg)}
.gun-ic{display:none;padding-bottom:6px}.gun.acik .gun-ic{display:block}
.oturum{font-size:11.5px;font-weight:800;color:var(--soluk);text-transform:uppercase;letter-spacing:.04em;padding:8px 6px 3px}
.konu{display:flex;gap:9px;align-items:center;width:100%;border:0;background:none;text-align:left;padding:7px 8px;border-radius:9px;cursor:pointer;font-size:14px}
.konu:hover{background:var(--yumusak)}
.konu .no{flex:none;width:24px;height:24px;border-radius:7px;background:var(--yumusak);display:grid;place-items:center;font-size:12px;font-weight:800;color:var(--soluk)}
.konu .ad{flex:1}.konu small{color:var(--soluk)}
.konu.aktif{background:var(--ana-acik);font-weight:700}.konu.aktif .no{background:var(--ana);color:#fff}
.konu.bitti .no{background:#cfe8dc;color:var(--ana-koyu)}
.m1-ana{min-width:0}
.ders-bas h1{font-size:27px;margin:8px 0 6px}
.ust-satir{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.amac{font-size:16px;color:var(--soluk);margin:0}
.ilerleme{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:14px}
.ilerleme .cubuk{width:180px;height:8px;background:var(--yumusak);border-radius:9px;overflow:hidden}
.ilerleme .cubuk i{display:block;height:100%;background:var(--ana)}
.ilerleme .arac{margin-left:auto;display:flex;gap:8px;align-items:center}
.neden-kart{border-left:5px solid var(--ana)}
.neden-kart h2{font-size:18px}
.neden-kart p{margin:6px 0}
.dikkat{background:var(--turuncu-acik);border-radius:9px;padding:9px 12px;margin:10px 0}
.kaynak{font-size:12px;color:var(--soluk)}
.adim{background:var(--kart);border-radius:var(--r);box-shadow:var(--golge);margin-bottom:10px;border:1.5px solid transparent;overflow:hidden}
.adim.acik{border-color:var(--ana)}
.adim-bas{width:100%;display:flex;align-items:center;gap:12px;border:0;background:none;padding:14px 18px;cursor:pointer;text-align:left}
.adim-bas .sn{flex:none;width:32px;height:32px;border-radius:50%;display:grid;place-items:center;font-weight:800;background:var(--yumusak);color:var(--soluk)}
.adim.acik .sn{background:var(--ana);color:#fff}.adim.bitti .sn{background:#cfe8dc;color:var(--ana-koyu)}
.adim-bas .st{flex:1;display:flex;flex-direction:column}.adim-bas .st small{color:var(--soluk);font-weight:700;font-size:12px}.adim-bas .st b{font-size:16px}
.adim-bas .ok{color:var(--soluk);font-size:20px;transition:transform .2s}.adim.acik .adim-bas .ok{transform:rotate(90deg)}
.adim-govde{padding:0 20px 20px 62px}
.neden{background:var(--yumusak);border-left:4px solid var(--ana);border-radius:9px;padding:6px 14px 8px}
.neden .etiket{margin-top:6px}.neden p{margin:0 0 4px;font-size:15.5px}
.yorum-kart{background:var(--ana-acik);border-radius:11px;padding:4px 16px 10px;margin-top:12px;border-left:5px solid var(--ana)}
.yorum-kart p{margin:4px 0;font-size:15.5px}
.dene{background:var(--mavi-acik);border-radius:11px;padding:10px 14px;margin-top:10px}
.bitis{border:2px solid var(--ana)}

/* kod düzenleyici ve çıktılar */
.editor{position:relative;background:var(--kod-zemin);border-radius:10px;font:13px/1.6 var(--mono)}
.editor pre,.editor textarea{margin:0;padding:12px 14px;font:inherit;white-space:pre-wrap;word-break:break-word;tab-size:2}
.editor pre{color:var(--kod-yazi);pointer-events:none;min-height:3em}
.editor.uzun pre{min-height:300px}
.editor textarea{position:absolute;inset:0;width:100%;height:100%;background:transparent;color:transparent;caret-color:#fff;border:0;resize:none;outline:none;overflow:hidden}
.editor textarea:focus{box-shadow:0 0 0 3px rgba(242,196,109,.45);border-radius:10px}
.console{background:var(--kod-zemin);color:var(--kod-yazi);font:12.5px/1.5 var(--mono);padding:11px 13px;border-radius:9px;white-space:pre-wrap;word-break:break-word;max-height:380px;overflow:auto;margin:6px 0}
.console .echo{color:#8fe3b7}
.tbl{overflow:auto;border:1px solid var(--cizgi);border-radius:9px;margin:6px 0 12px;max-height:320px}
table{border-collapse:collapse;font-size:12.5px;width:100%}
th{position:sticky;top:0;background:var(--yumusak);text-align:left;padding:6px 9px;white-space:nowrap}
td{padding:5px 9px;border-top:1px solid var(--cizgi);white-space:nowrap}
.ttl{font-size:12px;font-weight:800;letter-spacing:.05em;text-transform:uppercase;color:var(--soluk);margin:12px 0 4px}
.plots{display:grid;grid-template-columns:repeat(auto-fill,minmax(380px,1fr));gap:10px}
.plots img{width:100%;border:1px solid var(--cizgi);border-radius:9px;cursor:zoom-in;background:#fff}
.tok-c{color:#7f9c90;font-style:italic}.tok-h{color:#f6e7b8;font-weight:700}.tok-s{color:#f2c46d}.tok-n{color:#9ad1f5}.tok-k{color:#ff9f86;font-weight:600}.tok-f{color:#8fe3b7}

/* modül 2 */
.m2{padding:12px 14px}
.m2-ust{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin-bottom:12px}
.konu-sec{display:flex;align-items:center;gap:8px;font-weight:700}
.konu-sec select{padding:8px 10px;border:1px solid var(--cizgi);border-radius:9px;background:var(--kart);min-width:320px}
.alt-sekme{display:flex;gap:4px;border-bottom:1px solid var(--cizgi)}
.alt-sekme button{border:0;background:none;padding:8px 12px;cursor:pointer;color:var(--soluk);font-weight:700;border-bottom:3px solid transparent}
.alt-sekme button[aria-selected=true]{color:var(--ana);border-bottom-color:var(--ana)}
.m2-izgara{display:grid;grid-template-columns:minmax(380px,1.15fr) minmax(320px,.95fr) minmax(340px,1fr);gap:14px;height:calc(100vh - 140px)}
.panel{background:var(--kart);border-radius:var(--r);box-shadow:var(--golge);overflow:auto;display:flex;flex-direction:column;min-height:0}
.sol-panel{padding:18px}
.panel-bas{display:flex;justify-content:space-between;align-items:baseline;gap:8px;padding:14px 16px 6px}
.panel-bas h2{font-size:15px;margin:0}
.panel-arac{display:flex;gap:6px;flex-wrap:wrap;padding:0 16px 6px}
.kod-not{margin:0 16px 6px;font-size:12.5px;color:#a86a1b;min-height:1em}
.kod{flex:1;overflow:auto;background:var(--kod-zemin);color:var(--kod-yazi);font:12.5px/1.6 var(--mono);padding:10px 0;margin:0 12px 12px;border-radius:10px;position:relative}
.ln{display:flex;white-space:pre-wrap;word-break:break-word;padding-right:12px}
.ln .no{flex:none;width:40px;text-align:right;padding-right:10px;color:#4f6d63;user-select:none}
.ln.yeni{animation:parla 1.8s ease-out}
.ln.bekleyen{background:rgba(242,196,109,.12);outline:1px dashed rgba(242,196,109,.55);outline-offset:-1px}
@keyframes parla{0%{background:rgba(242,196,109,.35)}100%{background:transparent}}
#cikti{padding:4px 16px 16px}
.bos{padding:24px 4px}
.hedef{background:var(--yumusak);border-left:4px solid var(--ana);border-radius:8px;padding:9px 13px;margin-bottom:12px;font-size:14px}
.iz-kutu summary{cursor:pointer;color:var(--soluk);font-weight:700;font-size:13px;margin-bottom:6px}
.iz{list-style:none;margin:0 0 12px;padding:0;border-left:2px solid var(--cizgi)}
.iz li{position:relative;padding:3px 0 6px 14px;font-size:13px;color:var(--soluk)}
.iz li::before{content:"";position:absolute;left:-6px;top:9px;width:10px;height:10px;border-radius:50%;background:var(--ana)}
.iz li.auto::before{background:#2c7bb6}.iz li.yanlis::before{background:var(--turuncu)}
.iz li b{color:var(--yazi);font-weight:600}
.iz li button{border:0;background:none;color:var(--ana);cursor:pointer;font-size:12px;padding:0 0 0 6px;text-decoration:underline}
.adim-no{display:inline-block;font-size:12px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:#fff;background:var(--ana);border-radius:999px;padding:3px 11px;margin:6px 0}
.soru{font:700 21px/1.35 Georgia,"Times New Roman",serif;margin:6px 0 8px}
.aciklama{color:var(--soluk);margin:0 0 10px}
.durum{background:var(--mavi-acik);border-radius:10px;padding:2px 14px 8px;margin:8px 0}
.durum p{margin:0}
.nasil{background:#fdf6e6;border:1px solid #f0d9a8;border-radius:10px;padding:10px 14px;margin:8px 0 12px;font-size:14.5px}
@media (prefers-color-scheme:dark){.nasil{background:#2f2614;border-color:#5a4520}}
.secenekler{display:flex;flex-direction:column;gap:9px}
.secenek{position:relative;display:block;border:1.5px solid var(--cizgi);border-radius:12px;padding:12px 14px 12px 42px;cursor:pointer;background:var(--kart);transition:border-color .12s,background .12s}
.secenek:hover{border-color:#9fc3b5}
.secenek input{position:absolute;left:14px;top:15px;width:17px;height:17px;accent-color:var(--ana)}
.secenek .ic{display:flex;flex-direction:column;gap:3px}
.secenek .bas{display:flex;align-items:center;flex-wrap:wrap}
.secenek .bas b{font-size:15.5px}
.secenek small{color:var(--soluk);font-size:13.5px;line-height:1.5}
.secenek.onerilen{border-color:#e6c27a}
.secenek.secili{border-color:var(--ana);background:var(--ana-acik)}
.secenek.kapali{opacity:.55;cursor:not-allowed;padding-left:14px}
.ayrinti{display:grid;grid-template-columns:115px 1fr;gap:3px 10px;margin:8px 0 0;font-size:13.5px}
.ayrinti dt{color:var(--soluk);font-weight:700}.ayrinti dd{margin:0}
.yanlis-kart{background:var(--turuncu-acik);border:1.5px solid var(--turuncu)}
.yanlis-kart .etiket{margin-top:0;color:var(--turuncu)}
.yanlis-kart p{margin:6px 0 0}
.yine-de{margin-top:14px}.yine-de summary{cursor:pointer;color:var(--soluk);font-size:13.5px}
.yorum-alan{width:100%;min-height:80px;border:1px solid var(--cizgi);border-radius:9px;padding:9px;background:var(--kart);margin-top:8px}
.sonuc-cumle{font-size:15.5px;margin:4px 0}
.degerler{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0}
.degerler span{font:12.5px var(--mono);background:var(--kart);border:1px solid var(--cizgi);border-radius:7px;padding:2px 7px}
.kutu.oto .etiket{margin-top:0}
.puan{font:800 26px Georgia,serif}
.kontrol{list-style:none;padding:0;margin:8px 0}
.kontrol li{padding:7px 0;border-top:1px solid var(--cizgi);display:grid;grid-template-columns:24px 1fr;gap:6px}
.kontrol li .i{font-weight:800}.kontrol li.tamam .i{color:var(--ana)}.kontrol li.eksik .i{color:var(--turuncu)}
.kontrol small{display:block;color:var(--soluk)}

dialog{border:0;border-radius:14px;padding:12px;max-width:min(1100px,95vw);background:var(--kart)}
dialog img{width:100%;display:block}dialog::backdrop{background:rgba(0,0,0,.55)}
.toast{position:fixed;left:50%;bottom:20px;transform:translateX(-50%) translateY(20px);opacity:0;transition:.25s;background:#123f34;color:#fff;padding:10px 16px;border-radius:10px;font-weight:600;pointer-events:none;z-index:9}
.toast.show{opacity:1;transform:translateX(-50%)}

@media (max-width:1180px){.m2-izgara{grid-template-columns:1fr 1fr;height:auto}.sol-panel{grid-column:1/-1}.kod{max-height:520px}}
@media (max-width:900px){.m1{grid-template-columns:1fr}.m1-sol{position:relative;top:0;max-height:none}.moduller,.nasil-calisir{grid-template-columns:1fr}.adim-govde{padding:0 14px 16px}}
@media (max-width:700px){.m2-izgara{grid-template-columns:1fr}.konu-sec select{min-width:0;width:100%}.karsilama h1{font-size:26px}.ayrinti{grid-template-columns:1fr}.plots{grid-template-columns:1fr}}

/* Kendin yaz terminali */
.kendin-rozet{font-size:12px;font-weight:700;color:var(--ana-koyu);background:var(--ana-acik);border-radius:999px;padding:2px 9px;white-space:nowrap}
.terminal-kutu{margin-top:18px;border-top:1px dashed var(--cizgi);padding-top:6px}
.terminal-bas{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;flex-wrap:wrap}
.terminal-bas p{margin:0 0 6px;max-width:640px}
.terminal{background:var(--kod-zemin);color:var(--kod-yazi);border-radius:10px;padding:10px 12px;margin-top:10px;max-height:460px;overflow:auto;cursor:text;font:12.5px/1.5 var(--mono);border:1.5px solid transparent}
.terminal:focus-within{border-color:var(--ana)}
.terminal .console{background:none;padding:0;margin:0 0 6px;max-height:none;overflow:visible;border-radius:0}
.terminal .console.hatali{color:#ffb4a4}
.terminal .tbl{background:var(--kart);color:var(--yazi)}
.terminal .ttl{color:var(--kod-yazi)}
.terminal .plots img{background:#fff}
.terminal-ipucu{color:#8fa79f;margin-bottom:6px}
.terminal-bekle{white-space:pre-wrap;margin-bottom:6px;color:#8fa79f}
.terminal-bekle .echo,.terminal .echo{color:#8fd8bd}
.terminal-satir{display:flex;gap:8px;align-items:flex-start}
.terminal-satir .istem{color:#8fd8bd;font-weight:700;line-height:1.5}
.terminal-giris{flex:1;background:transparent;border:0;outline:0;resize:none;color:var(--kod-yazi);font:inherit;padding:0;margin:0;overflow:hidden;min-height:1.5em}
.terminal-giris::placeholder{color:#6f877f}
.karsi-kart{background:var(--yumusak);border-radius:11px;padding:12px 16px;margin-top:12px;border:1px solid var(--cizgi)}
.karsi-kart h3{margin:2px 0 4px;font-size:16px}
.karsi-izgara{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:8px 0}
.karsi-sutun{min-width:0}
.karsi-sutun .etiket{margin-top:4px}
.karsi-sutun .plots{grid-template-columns:1fr}
@media (max-width:760px){.karsi-izgara{grid-template-columns:1fr}}

/* R motoru: üst çubuk hapı ve seçim penceresi */
button.durum-hap{border:0;color:inherit;font:inherit;font-size:13px;cursor:pointer}
button.durum-hap:hover{background:rgba(255,255,255,.2)}
.durum-hap.bekliyor i{animation:nabiz 1s ease-in-out infinite alternate}
@keyframes nabiz{from{opacity:.35}to{opacity:1}}
.serit .baglanti{font-weight:700}
.motor-pencere{padding:22px 24px;width:min(980px,95vw)}
.motor-pencere h2{margin:0 0 4px}
.motor-izgara{display:grid;grid-template-columns:1fr 1.25fr;gap:14px;margin:14px 0}
.motor-kart{border:1px solid var(--cizgi);border-radius:12px;padding:14px 16px;background:var(--yumusak)}
.motor-kart h3{margin:0 0 6px;font-size:17px}
.motor-kart p{margin:6px 0 10px;font-size:14px}
.motor-kart ol{margin:10px 0 6px;padding-left:20px;font-size:14px}
.motor-kart details{margin-top:10px;font-size:14px}
.komut{display:flex;gap:8px;align-items:center;background:var(--kod-zemin);border-radius:9px;padding:8px 8px 8px 12px}
.komut code{flex:1;background:none;color:var(--kod-yazi);font-size:12.5px;word-break:break-all;padding:0}
@media (max-width:760px){.motor-izgara{grid-template-columns:1fr}}
