/* DP — Ders Programı. Excel'e yakın, sakin bir iş uygulaması. */
:root{
  --bg:#F2F4F2; --surface:#FFFFFF; --head:#E8ECEE; --ink:#1A2027; --muted:#5B6570; --line:#D3D9DE; --line2:#C2C9CF;
  --accent:#1D5AA6; --accent-soft:#E2EBF7; --calc:#F3F5F6; --warn:#9A5800; --warn-soft:#FAEBD4;
  --ok:#2F6B3E; --ok-soft:#E1F0E4; --bad:#A23A2E; --bad-soft:#F7E2DF; --hol:#ECEEF0; --ops:#6A3FA0; --ops-soft:#EEE6F7;
  --f-display:"Bricolage Grotesque","Segoe UI",system-ui,sans-serif;
  --f-body:"IBM Plex Sans","Segoe UI",system-ui,sans-serif;
  --f-mono:"IBM Plex Mono",ui-monospace,Menlo,Consolas,monospace;
}
@media (prefers-color-scheme: dark){:root{
  --bg:#101418; --surface:#171D23; --head:#212931; --ink:#E3E8EC; --muted:#97A2AD; --line:#2C353E; --line2:#3A454F;
  --accent:#88B5F0; --accent-soft:#1B2C42; --calc:#1C232A; --warn:#E6A757; --warn-soft:#38291A; --ok:#7FC392; --ok-soft:#1A3022;
  --bad:#E58A7E; --bad-soft:#3A201D; --hol:#1E252C; --ops:#C3A4EB; --ops-soft:#2B2140; color-scheme:dark}}
*{box-sizing:border-box}
html,body{height:100%}
body{margin:0;background:var(--bg);color:var(--ink);font:14px/1.45 var(--f-body)}
button,input,select,textarea{font:inherit;color:inherit}
[hidden]{display:none!important}
.muted{color:var(--muted)}
kbd{font:500 11.5px var(--f-mono);border:1px solid var(--line2);border-bottom-width:2px;border-radius:4px;padding:0 5px;background:var(--surface)}

/* giriş */
#giris{min-height:100%;display:grid;place-items:center;padding:24px 16px}
.giris-kart{width:min(380px,100%);background:var(--surface);border:1px solid var(--line2);border-radius:14px;padding:28px;display:flex;flex-direction:column;gap:14px}
.giris-kart h1{font:700 30px/1 var(--f-display);margin:0}
.giris-kart p{margin:0}

/* çerçeve */
#uyg{display:flex;flex-direction:column;height:100%}
.ust{display:flex;flex-wrap:wrap;align-items:center;gap:8px 18px;padding:8px 16px;background:var(--surface);border-bottom:1px solid var(--line)}
.marka{font:700 18px var(--f-display);display:flex;align-items:baseline;gap:8px}
.marka small{font:500 12px var(--f-body);color:var(--muted)}
nav.sekmeler{display:flex;gap:2px;flex-wrap:wrap}
nav.sekmeler a{font:500 13.5px var(--f-body);padding:6px 11px;border-radius:7px;color:var(--muted);text-decoration:none}
nav.sekmeler a[aria-current="page"]{background:var(--accent-soft);color:var(--accent)}
nav.sekmeler a:hover{color:var(--ink)}
.kul{margin-left:auto;display:flex;align-items:center;gap:8px;font-size:13px}
.rol{font:600 10.5px var(--f-mono);letter-spacing:.05em;text-transform:uppercase;padding:2px 7px;border-radius:999px;background:var(--head);color:var(--muted)}
main{flex:1;min-height:0;display:flex;flex-direction:column}
.sayfa{flex:1;min-height:0;display:flex;flex-direction:column;padding:14px 16px;gap:12px;overflow:auto}
.sayfa h2{font:700 20px var(--f-display);margin:0}

/* araç çubuğu */
.arac{display:flex;flex-wrap:wrap;align-items:center;gap:8px 10px}
.btn{font:500 13px var(--f-body);background:var(--surface);border:1px solid var(--line2);border-radius:7px;padding:5px 11px;cursor:pointer;white-space:nowrap;text-decoration:none;display:inline-flex;align-items:center;gap:6px}
.btn:hover{border-color:var(--accent)}
.btn.ana{background:var(--accent);border-color:var(--accent);color:var(--surface)}
.btn.tehlike{color:var(--bad);border-color:var(--bad)}
.btn:disabled{opacity:.45;cursor:not-allowed}
.btn:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
input.ara{background:var(--surface);border:1px solid var(--line2);border-radius:7px;padding:5px 10px;width:240px;max-width:100%}
select.kucuk{background:var(--surface);border:1px solid var(--line2);border-radius:7px;padding:4px 6px}
.lejant{display:flex;flex-wrap:wrap;gap:6px 12px;margin-left:auto;font-size:12px;color:var(--muted)}
.lejant span{display:inline-flex;align-items:center;gap:5px}
.sw{width:13px;height:13px;border:1px solid var(--line2);border-radius:3px;display:inline-block}
.sw.calc{background:var(--calc)} .sw.oz{background:var(--warn-soft);border-color:var(--warn)} .sw.hol{background:var(--hol)} .sw.ops{background:var(--ops-soft);border-color:var(--ops)}

/* ızgara */
.izgara-kap{flex:1;min-height:240px;display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--line2);border-radius:10px;overflow:hidden}
.izgara{flex:1;overflow:auto;outline:none;position:relative}
.izgara table{border-collapse:separate;border-spacing:0;font-size:13px;font-variant-numeric:tabular-nums;width:max-content;table-layout:fixed}
.izgara th,.izgara td{border-right:1px solid var(--line);border-bottom:1px solid var(--line);padding:0 7px;height:28px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;background:var(--surface);position:relative}
.izgara thead th{position:sticky;z-index:3;background:var(--head);font-weight:600;text-align:left}
.izgara thead tr.harf th{top:0;height:18px;font:500 10px var(--f-mono);color:var(--muted);text-align:center}
.izgara thead tr.ad th{top:18px;height:30px;font-size:12px}
.izgara .rn{position:sticky;left:0;z-index:2;width:44px;text-align:center;color:var(--muted);background:var(--head);font:500 11px var(--f-mono);padding:0}
.izgara td.c-tarih,.izgara th.c-tarih{position:sticky;left:44px;z-index:2;box-shadow:1px 0 0 var(--line2)}
.izgara thead th.rn,.izgara thead th.c-tarih{z-index:4}
.izgara td.num{text-align:right}
.izgara td.calc{background:var(--calc);color:var(--muted)}
.izgara td.calc.koyu{color:var(--ink)}
.izgara td.kilit{background:var(--calc);color:var(--muted)}
.izgara td.oz{background:var(--warn-soft);color:var(--ink)}
.izgara td.tik{text-align:center;cursor:pointer}
.izgara td.tik .kutu{display:inline-block;width:14px;height:14px;border:1.5px solid var(--line2);border-radius:3px;vertical-align:-2px}
.izgara td.tik .kutu.on{background:var(--accent);border-color:var(--accent);box-shadow:inset 0 0 0 2px var(--surface)}
.izgara td.tik.c-ops .kutu.on{background:var(--ops);border-color:var(--ops)}
.izgara tr.ops-satir td:not(.rn){background-image:linear-gradient(var(--ops-soft),var(--ops-soft))}
.izgara tr.ops-satir td.calc{opacity:.8}
.fx{font:italic 600 10px var(--f-mono);color:var(--muted);margin-left:3px}
.filt{border:0;background:none;color:var(--muted);font-size:11px;padding:0 0 0 3px;cursor:pointer}
.filt.on{color:var(--accent);font-weight:700}
tr.ay td{background:var(--bg);height:24px;font:600 11px var(--f-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
tr.ay td.rn{background:var(--head)}
tr.etk td{background:var(--hol);color:var(--muted);font-size:12.5px}
tr.etk .sil{border:0;background:none;color:var(--bad);cursor:pointer;padding:0 4px;font-size:14px}
tr.yeni td{color:var(--muted);font-style:italic}
td.sec{box-shadow:inset 0 0 0 2px var(--accent)}
tr.secili td.rn{background:var(--accent-soft);color:var(--accent)}
td .k{font:600 12.5px var(--f-mono);color:var(--accent)} td .nm{color:var(--muted);margin-left:6px}
td.uyari{background:var(--warn-soft)!important}
td.uyari::after{content:"!";font:700 10.5px var(--f-mono);color:var(--surface);background:var(--warn);border-radius:50%;width:14px;height:14px;display:inline-flex;align-items:center;justify-content:center;position:absolute;right:4px;top:7px}
.chip{display:inline-block;font:600 11px/1 var(--f-body);padding:4px 8px;border-radius:999px;background:var(--head);color:var(--ink)}
.chip.Planlandı{background:var(--accent-soft);color:var(--accent)}
.chip.Gerçekleşti{background:var(--ok-soft);color:var(--ok)}
.chip.Değişti{background:var(--warn-soft);color:var(--warn)}
.chip.Opsiyon{background:var(--ops-soft);color:var(--ops)}
.chip.Taslak{background:var(--bg);color:var(--muted)}
.chip.uyar{background:var(--warn-soft);color:var(--warn)}
.chip.iyi{background:var(--ok-soft);color:var(--ok)}
td input.ed{position:absolute;inset:0;width:100%;height:100%;border:0;outline:2px solid var(--accent);outline-offset:-2px;padding:0 6px;background:var(--surface);font-size:13px}
.durum-cubugu{display:flex;flex-wrap:wrap;gap:4px 18px;justify-content:space-between;padding:5px 12px;border-top:1px solid var(--line);background:var(--head);font:12px var(--f-mono);color:var(--muted)}
.durum-cubugu b{color:var(--ink);font-weight:600}

/* açılır paneller */
.pop{position:fixed;z-index:50;background:var(--surface);border:1px solid var(--line2);border-radius:9px;box-shadow:0 10px 30px rgb(0 0 0 / .18);padding:6px}
#ac{list-style:none;margin:0;min-width:280px;max-width:440px;max-height:280px;overflow:auto}
#ac li{display:grid;grid-template-columns:auto 1fr;gap:1px 8px;padding:6px 8px;border-radius:6px;cursor:pointer}
#ac li[aria-selected="true"]{background:var(--accent-soft)}
#ac li .k{font:600 12.5px var(--f-mono);color:var(--accent);min-width:2.6em}
#ac li .m{grid-column:2;font-size:11.5px;color:var(--muted)}
#ac li.bos{display:block;color:var(--muted);font-size:12.5px;cursor:default}
#fp{min-width:230px;max-width:340px;padding:10px;display:flex;flex-direction:column;gap:6px}
#fp .liste{max-height:260px;overflow:auto;display:flex;flex-direction:column;gap:1px}
#fp label{display:flex;gap:7px;align-items:center;padding:2px 4px;border-radius:5px;cursor:pointer;font-size:13px}
.satir-bt{display:flex;gap:6px;justify-content:flex-end;flex-wrap:wrap}
#ozp{width:330px;padding:14px;display:flex;flex-direction:column;gap:10px}
#ozp h3{margin:0;font:600 15px var(--f-body)}
.alan{display:flex;flex-direction:column;gap:4px}
.alan>label,.alan>.lbl{font:500 11px var(--f-mono);letter-spacing:.05em;text-transform:uppercase;color:var(--muted)}
.alan input,.alan select,.alan textarea{background:var(--bg);border:1px solid var(--line2);border-radius:6px;padding:6px 8px;width:100%}
.alan textarea{min-height:64px;resize:vertical}
.alan .ipucu{font-size:12px;color:var(--muted)}
.iki{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.uc{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.hata{color:var(--bad);font-size:12.5px;min-height:1em}
#toast{position:fixed;left:50%;bottom:22px;transform:translateX(-50%);z-index:90;background:var(--ink);color:var(--surface);font-size:13px;padding:9px 14px;border-radius:8px;max-width:min(620px,92vw);box-shadow:0 6px 20px rgb(0 0 0 / .2)}
#toast.hata{background:var(--bad)}

/* modal */
#modal{position:fixed;inset:0;z-index:70;background:rgb(10 14 18 / .38);display:grid;place-items:center;padding:16px}
.modal-kart{background:var(--surface);border-radius:12px;border:1px solid var(--line2);width:min(720px,100%);max-height:92vh;display:flex;flex-direction:column;box-shadow:0 20px 50px rgb(0 0 0 / .25)}
.modal-bas{display:flex;align-items:center;gap:10px;padding:14px 18px;border-bottom:1px solid var(--line)}
.modal-bas h3{margin:0;font:700 17px var(--f-display);flex:1}
.modal-ic{padding:16px 18px;overflow:auto;display:flex;flex-direction:column;gap:14px}
.modal-alt{padding:12px 18px;border-top:1px solid var(--line);display:flex;gap:8px;justify-content:flex-end;align-items:center;flex-wrap:wrap}
.modal-alt .hata{margin-right:auto}
fieldset{border:1px solid var(--line);border-radius:10px;padding:12px;margin:0;display:flex;flex-direction:column;gap:10px}
legend{font:600 12px var(--f-body);padding:0 6px;color:var(--muted)}
.onay-kutu{display:flex;align-items:center;gap:8px;font-size:13.5px}

/* liste tabloları */
.tablo-kap{overflow:auto;background:var(--surface);border:1px solid var(--line2);border-radius:10px}
table.liste{border-collapse:collapse;width:100%;font-size:13.5px;font-variant-numeric:tabular-nums}
table.liste th,table.liste td{padding:7px 10px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}
table.liste th{position:sticky;top:0;background:var(--head);font:500 11px var(--f-mono);letter-spacing:.05em;text-transform:uppercase;color:var(--muted);white-space:nowrap;z-index:1}
table.liste tbody tr{cursor:pointer}
table.liste tbody tr:hover td{background:var(--accent-soft)}
table.liste td.num{text-align:right;white-space:nowrap}
table.liste tr.pasif td{color:var(--muted)}
.kod{font:600 12.5px var(--f-mono);color:var(--accent)}
.kartlar{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}
.kart{background:var(--surface);border:1px solid var(--line2);border-radius:10px;padding:10px 12px}
.kart b{display:block;font:700 22px var(--f-display)}
.kart span{font-size:12.5px;color:var(--muted)}
.rapor-bolum{display:flex;flex-direction:column;gap:6px}
.rapor-bolum h3{margin:8px 0 0;font:600 15px var(--f-body)}
.rapor-bolum ul{margin:0;padding-left:18px;display:flex;flex-direction:column;gap:3px;max-width:110ch}
@media (max-width:640px){.iki,.uc{grid-template-columns:1fr} .lejant{margin-left:0} .sayfa{padding:10px}}

/* ayarlar alt sekmeleri ve tanımlar */
.alt-sekmeler{display:flex;gap:2px;border-bottom:1px solid var(--line);padding-bottom:6px}
.alt-sekmeler a{font:500 13px var(--f-body);padding:5px 11px;border-radius:7px;color:var(--muted);text-decoration:none}
.alt-sekmeler a[aria-current="page"]{background:var(--accent-soft);color:var(--accent)}
.alt-sekmeler a:hover{color:var(--ink)}
.tanim-blok{display:flex;flex-direction:column;gap:10px;max-width:980px}
.tanim-not{margin:0;font-size:13px;max-width:860px}
input.tanim-giris{background:var(--bg);border:1px solid var(--line2);border-radius:6px;padding:4px 6px;width:100%;min-width:140px}
.yd-liste{display:flex;flex-wrap:wrap;gap:6px}
.yd{display:inline-flex;align-items:center;gap:4px;background:var(--surface);border:1px solid var(--line2);border-radius:999px;padding:3px 4px 3px 10px;font-size:13px}
.yd .sil{border:0;background:none;color:var(--muted);cursor:pointer;font-size:15px;line-height:1;padding:0 5px;border-radius:999px}
.yd .sil:hover{color:var(--bad);background:var(--bad-soft)}
