/* Okul Araçları — Nöbet Çizelgesi
   ============================================================
   Paylaşılan bileşenler css/ogretmenatama.css'ten geliyor
   (.adim .row .field .inp .btn .board .roster .checks .result .sheet
    .tone-N .note .empty .acts-bar ve yazdırma kuralları).
   Burada yalnızca nöbete özel olanlar var — kopya yok.
   ============================================================ */

/* ---------- hafta seçici ----------
   Sekme gibi davranıyor: seçili olan dolu, ötekiler sessiz. */
/* Hafta seçimi solda, o haftayla yapılacak iş sağda. */
.sonuc-bar{
  display:flex; align-items:center; justify-content:space-between;
  gap:1rem; flex-wrap:wrap; margin-block:1.25rem 1rem;
}
.weeks{ display:flex; flex-wrap:wrap; gap:.4rem; align-items:center; flex:1 1 auto }
@media (max-width:560px){
  .sonuc-bar > .btn{ width:100%; justify-content:center }
}
.week{
  display:inline-flex; flex-direction:column; gap:.1rem;
  font-size:.85rem; font-weight:500; text-align:left;
  padding:.5em .95em; border-radius:var(--r-sm); cursor:pointer;
  min-height:var(--tap);
  border:1px solid var(--kenar); background:var(--surface); color:var(--muted);
  transition:background-color .16s var(--ease-out), color .16s var(--ease-out),
             border-color .16s var(--ease-out);
}
.week:hover{ border-color:var(--brand); color:var(--brand) }
.week[aria-current="true"]{
  background:var(--brand); border-color:var(--brand); color:var(--on-brand);
  box-shadow:var(--sh-1);
}
.week__date{
  display:block; font-family:var(--mono); font-size:.68rem; opacity:.75; letter-spacing:0;
}

/* ---------- haftalık nöbet çizelgesi ----------
   Satır = nöbet yeri, sütun = gün. Türk okulunda çizelge böyle asılıyor.
   Duvara asılacak belge bu; başlık serif, kurum konuşuyor. */
.nobet{
  width:100%; border-collapse:separate; border-spacing:0;
  font-size:.85rem; table-layout:fixed; font-variant-numeric:tabular-nums;
}
.nobet th, .nobet td{
  border-right:1px solid var(--line); border-bottom:1px solid var(--line);
  padding:.45em .5em; text-align:left;
}
.nobet tr > *:last-child{ border-right:0 }
.nobet tbody tr:last-child > *{ border-bottom:0 }
.nobet thead th{
  background:var(--ink); color:#fff; border-color:var(--ink-2);
  font-family:var(--serif); font-size:.92rem; font-weight:600; letter-spacing:0;
  padding-block:.7em;
}
.nobet thead th:first-child{ border-top-left-radius:var(--r-sm) }
.nobet thead th:last-child{ border-top-right-radius:var(--r-sm) }
.nobet tbody th{
  background:var(--surface-2); color:var(--ink); width:9.5rem;
  font-size:.85rem; font-weight:600; vertical-align:top;
}
.nobet tbody th small{
  display:block; color:var(--muted-2); font-weight:400; font-size:.8em;
  font-family:var(--mono); letter-spacing:0; margin-top:.25em;
}
.nobet td{ vertical-align:top; height:3.4rem; background:var(--tone-bg) }

/* ---------- tek nöbet ---------- */
.duty{
  display:flex; align-items:center; gap:.4rem; width:100%;
  border:0; background:transparent; font:inherit; color:inherit;
  text-align:left; padding:.35rem .4rem; border-radius:var(--r-sm); cursor:pointer;
  transition:background-color .15s var(--ease-out), box-shadow .15s var(--ease-out);
}
.duty + .duty{ margin-top:.2rem }
button.duty:hover{ background:rgba(255,255,255,.75); box-shadow:var(--sh-1) }
.duty:focus-visible{ outline:2px solid var(--brand); outline-offset:-2px }
.duty__name{ flex:1 1 auto; min-width:0; line-height:1.3; font-weight:500 }
.duty__mark{
  flex:none; font-size:.68rem; font-weight:600; color:var(--muted);
  white-space:nowrap; padding:.1em .45em; border-radius:999px;
  background:rgba(255,255,255,.7);
}

/* Boş kalan yuva — görünmeyen boşluk en kötü hata türü, o yüzden bağırıyor */
.duty--empty{
  border:1px dashed var(--danger); background:var(--danger-soft);
}
.duty--empty .duty__name{ color:var(--danger); font-weight:600; font-size:.82rem }
.duty--forced .duty__mark{ color:var(--danger); background:var(--danger-soft) }

/* ---------- adalet paneli ---------- */
.fair__head{
  display:flex; align-items:baseline; justify-content:space-between; gap:.6rem;
  border-bottom:1px solid var(--line-2); padding-bottom:.55rem; margin-top:1.75rem;
}
/* Dağılım listesi de bir kart: sayfanın çıplak zemininde asılı kalmasın. */
.fair{
  display:grid; grid-template-columns:minmax(0,1fr); gap:.15rem; margin-top:1rem;
  background:var(--surface); border:1px solid var(--line);
  border-radius:var(--r); padding:.6rem .9rem;
}
.fair__row{
  display:grid; grid-template-columns:minmax(7rem,1fr) minmax(0,20rem) 3rem;
  gap:1rem; align-items:center; font-size:.88rem;
  padding-block:.32rem;
}
/* Çubuk sabit bir ray içinde: en yüklü öğretmen rayı doldurur, ötekiler
   ona göre okunur. Ray sayfa genişliğiyle büyürse karşılaştırma bozulur. */
.fair__bar{
  height:.5rem; background:var(--line); border-radius:999px; overflow:hidden;
}
.fair__fill{ height:100%; background:var(--brand); border-radius:999px }
.fair__num{
  font-family:var(--mono); font-size:.75rem; color:var(--muted); text-align:right;
  font-variant-numeric:tabular-nums;
}

/* ---------- yerine atama paneli ----------
   Rapor çıktığında açılan ekran. Sayfadaki en yüksek kart — karar
   burada veriliyor, dikkat oraya gitmeli. */
.panel{
  border:1px solid var(--line-2); border-radius:var(--r-lg); background:var(--surface);
  box-shadow:var(--sh-3);
  padding:clamp(1rem,2vw,1.5rem); margin-top:1.25rem;
}
.panel__head{
  display:flex; align-items:baseline; justify-content:space-between;
  gap:.75rem; flex-wrap:wrap; margin-bottom:.4rem;
}
.panel__title{
  font-family:var(--serif); font-size:1.2rem; font-weight:600; letter-spacing:-.01em;
}
.panel__hint{ color:var(--muted); font-size:.88rem; line-height:1.6; max-width:58ch }

/* aday listesi */
.cand__head{
  display:grid; gap:.9rem; margin-top:1.1rem;
  grid-template-columns:minmax(7rem,1.2fr) minmax(0,1.6fr) 4.5rem 5rem;
  padding:.55rem .55rem; border-bottom:1px solid var(--line-2);
  background:var(--surface-2); border-radius:var(--r-sm) var(--r-sm) 0 0;
  font-size:.76rem; font-weight:600; color:var(--muted);
}
.cand__head > span:nth-child(3),
.cand__head > span:nth-child(4){ text-align:right }
.cands{ max-height:24rem; overflow-y:auto }
.cand{
  display:grid; align-items:center; gap:.3rem .9rem; width:100%;
  grid-template-columns:minmax(7rem,1.2fr) minmax(0,1.6fr) 4.5rem 5rem;
  padding:.65rem .55rem; border:0; border-bottom:1px solid var(--line);
  background:transparent; font:inherit; color:inherit; text-align:left; cursor:pointer;
  min-height:var(--tap);
  transition:background-color .15s var(--ease-out);
}
.cand:hover{ background:var(--brand-soft) }
.cand:focus-visible{ outline:2px solid var(--brand); outline-offset:-2px }
.cand[disabled]{ cursor:not-allowed; opacity:.6 }
.cand[disabled]:hover{ background:transparent }
.cand__name{ font-size:.92rem; font-weight:500 }
.cand__why{ font-size:.8rem; color:var(--muted); line-height:1.4 }
.cand__why--block{ color:var(--danger); font-weight:500 }
.cand__num{
  font-family:var(--mono); font-size:.75rem; color:var(--muted); text-align:right;
  font-variant-numeric:tabular-nums; white-space:nowrap;
}

/* ---------- değişiklik günlüğü ---------- */
.logs{ list-style:none; padding:0; margin-top:1rem; display:grid;
  grid-template-columns:minmax(0,1fr); gap:.5rem }
.log{
  display:flex; gap:.75rem; align-items:baseline; font-size:.88rem;
  padding-bottom:.5rem; border-bottom:1px solid var(--line);
}
.log__kind{
  flex:none; font-size:.72rem; font-weight:600; color:var(--muted-2);
  width:5.5rem;
}
.log__text{ flex:1 1 auto; line-height:1.5 }

/* ---------- dar ekran ---------- */
@media (max-width:820px){
  .nobet{ font-size:.78rem }
  .nobet tbody th{ width:6.75rem }
  .cand, .cand__head{ grid-template-columns:1fr auto }
  .cand__why{ grid-column:1 / -1 }
  .cand__head > span:nth-child(2),
  .cand__head > span:nth-child(4){ display:none }
  .fair__row{ grid-template-columns:1fr 2.5rem; gap:.6rem }
  .fair__bar{ display:none }
}

/* ---------- yazdırma ----------
   Paylaşılan kurallar ogretmenatama.css'te. Ekrandaki dolu lacivert
   şerit kâğıtta toner yiyor; ince kural aynı hiyerarşiyi veriyor. */
@media print{
  .weeks, .panel, .fair, .fair__head, .logs{ display:none !important }
  .nobet thead th{
    background:transparent !important; color:var(--ink) !important;
    border-color:var(--ink) !important; border-bottom-width:1.5px;
  }
  .nobet tbody th{ background:transparent !important }
  .nobet th, .nobet td{ border-color:#B9C4D2 }
  .nobet td{ -webkit-print-color-adjust:exact; print-color-adjust:exact }
  .duty{ padding:.15rem .2rem }
  .duty__mark{ background:transparent }
  .duty--empty{ border-color:var(--ink) }
  .duty--empty .duty__name{ color:var(--ink) }
}
