/* Okul Araçları — paylaşılan araç bileşenleri
   ============================================================
   İki araç da (ders programı, nöbet çizelgesi) buradan besleniyor.

   Kurumsal yön burada somutlaşıyor:
   · Her adım bir KART. Saç teli ayraç yerine gerçek yüzey — altı blok
     arasında nerede olduğunu görmek için metni okumak gerekmiyor.
   · Düğme düğmeye benziyor: 40 px yükseklik, belirgin köşe, dolu zemin.
     Eski hâli 0.66 rem mono haptı; idareci onu etiket sanıyordu.
   · Etiketler normal yazılışta. Büyük harf + geniş harf aralığı hem
     yavaş okunuyor hem Türkçe'de İ/I sorunları çıkarıyordu.
   · Mono yalnızca sayıda ve saatte.
   ============================================================ */

/* minmax(0,1fr) şart: ızgara öğesinin varsayılan alt sınırı min-content'tir,
   yani kart içindeki en geniş öğe kadar genişler ve dar ekranda sayfayı
   yatay kaydırır. Bunu ölçtük: 375 px'te scrollWidth 406 çıkıyordu. */
.tool{
  display:grid; grid-template-columns:minmax(0,1fr);
  gap:clamp(.75rem,.5rem + .8vw,1.1rem);
  padding-block: clamp(1.25rem,1rem + 1.5vw,2rem);
}
.adim{ min-width:0 }

/* ---------- adım kartı ---------- */
.adim{
  background:var(--surface);
  border:1px solid var(--line);
  border-radius:var(--r-lg);
  box-shadow:var(--sh-1);
  padding:clamp(1.1rem,.85rem + 1.1vw,1.6rem);
  transition:box-shadow .25s var(--ease-out), border-color .25s var(--ease-out);
}
.adim:focus-within{ box-shadow:var(--sh-2); border-color:var(--line-2) }

.adim__head{
  display:grid; align-items:baseline; gap:.15rem .75rem;
  grid-template-columns:auto 1fr;
  margin-bottom:1.1rem;
}
/* Numara rozeti: içinde veri olan adım dolu görünüyor. Altı benzer blok
   arasında ilerlemeyi tek bakışta veren şey bu. */
.adim__no{
  grid-row:span 2; align-self:start;
  display:inline-flex; align-items:center; justify-content:center;
  width:2rem; height:2rem; border-radius:999px; flex:none;
  font-family:var(--mono); font-size:.72rem; letter-spacing:0;
  border:1.5px solid var(--kenar); color:var(--muted); background:var(--surface);
  transition:background-color .25s var(--ease-out), border-color .25s var(--ease-out),
             color .25s var(--ease-out);
}
.adim[data-dolu="true"] .adim__no{
  background:var(--brand); border-color:var(--brand); color:var(--on-brand);
}
.adim__title{
  font-family:var(--serif); font-size:1.3rem; font-weight:600;
  letter-spacing:-.012em; line-height:1.25; align-self:center;
}
.adim__hint{
  color:var(--muted); font-size:.9rem; line-height:1.6;
  max-width:58ch; grid-column:2;
}

/* ---------- satır düzeni ---------- */
.row{ display:flex; flex-wrap:wrap; gap:.75rem; align-items:flex-end }

.field{ display:flex; flex-direction:column; gap:.35rem; min-width:0 }
.field > span{
  font-size:.8rem; font-weight:600; letter-spacing:.01em; color:var(--muted);
}

.inp{
  font-family:var(--sans); font-size:.95rem; color:var(--ink);
  background:var(--surface); border:1px solid var(--kenar);
  border-radius:var(--r-sm); padding:.5em .7em; min-width:0;
  min-height:var(--tap);
  transition:border-color .18s var(--ease-out), box-shadow .18s var(--ease-out);
}
.inp::placeholder{ color:var(--muted-2) }
.inp:hover{ border-color:var(--muted-2) }
.inp:focus{
  outline:none; border-color:var(--brand);
  box-shadow:0 0 0 3px var(--brand-soft);
}
.inp--sm{ width:5.5rem }
.inp--md{ width:12rem }
.inp--lg{ width:17rem }
select.inp{ cursor:pointer }
input[type="number"].inp{ font-variant-numeric:tabular-nums }

/* ---------- düğme ----------
   Üç kademe: dolu (asıl eylem), çerçeveli (ikincil), sessiz (üçüncül).
   Hepsi aynı yükseklikte ki bir satırda yan yana dururken hizalansınlar. */
.btn{
  display:inline-flex; align-items:center; justify-content:center; gap:.5em;
  font-family:var(--sans); font-size:.875rem; font-weight:500; letter-spacing:0;
  min-height:var(--tap); padding:.45em 1.05em;
  border-radius:var(--r-sm); cursor:pointer;
  border:1px solid var(--kenar); background:var(--surface); color:var(--ink);
  transition:background-color .16s var(--ease-out), border-color .16s var(--ease-out),
             color .16s var(--ease-out), box-shadow .16s var(--ease-out);
}
.btn:hover{ border-color:var(--brand); color:var(--brand); background:var(--brand-soft) }
.btn:active{ transform:translateY(.5px) }

.btn--solid{
  background:var(--brand); border-color:var(--brand); color:var(--on-brand);
  box-shadow:var(--sh-1);
}
.btn--solid:hover{
  background:var(--brand-hover); border-color:var(--brand-hover);
  color:var(--on-brand); box-shadow:var(--sh-2);
}

.btn--quiet{ border-color:transparent; background:transparent; color:var(--muted) }
.btn--quiet:hover{ background:var(--surface-2); border-color:var(--line); color:var(--ink) }

.btn--tehlike{ border-color:var(--danger); color:var(--danger) }
.btn--tehlike:hover{ background:var(--danger); border-color:var(--danger); color:#fff }

.btn[disabled]{ opacity:.45; cursor:not-allowed; box-shadow:none }
.btn[disabled]:hover{
  background:var(--surface); border-color:var(--kenar); color:var(--ink); transform:none;
}
.btn--solid[disabled]:hover{ background:var(--brand); color:var(--on-brand) }

@media (prefers-reduced-motion:reduce){
  .btn:active{ transform:none }
  .adim, .adim__no, .inp, .btn{ transition:none }
}

/* ---------- etiket listesi (ders kodu) ---------- */
.chip__code{
  font-family:var(--mono); font-size:.65rem; color:var(--muted-2);
}

/* ---------- seçilebilir rozetler (gün, ders) ---------- */
.picks{ display:flex; flex-wrap:wrap; gap:.4rem }
.pick{
  font-size:.85rem; font-weight:500; padding:.45em .9em;
  border-radius:999px; cursor:pointer; min-height:2.1rem;
  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);
}
.pick:hover{ border-color:var(--brand); color:var(--brand) }
.pick[aria-pressed="true"]{
  background:var(--brand); border-color:var(--brand); color:var(--on-brand);
}

/* ---------- tablo ---------- */
.tbl{ width:100%; border-collapse:collapse; font-size:.92rem }
.tbl th, .tbl td{
  border-bottom:1px solid var(--line); padding:.7em .75em; text-align:left;
  vertical-align:middle;
}
.tbl th{
  font-size:.78rem; font-weight:600; color:var(--muted);
  border-bottom:1px solid var(--line-2);
  background:var(--surface-2);
}
.tbl th:first-child{ border-top-left-radius:var(--r-sm) }
.tbl th:last-child{ border-top-right-radius:var(--r-sm) }
.tbl td.num, .tbl th.num{ text-align:right; font-variant-numeric:tabular-nums }
.tbl tbody tr:last-child td{ border-bottom:0 }
.tbl tbody tr:hover{ background:var(--surface-2) }
.tbl__scroll{ overflow-x:auto; margin-top:1rem; border-radius:var(--r-sm) }

.empty{
  color:var(--muted); font-size:.9rem; text-align:center;
  padding:1.6rem 1rem; margin-top:1rem;
  border:1px dashed var(--line-2); border-radius:var(--r);
  background:var(--surface-2);
}
td.empty{ border:0; border-bottom:1px solid var(--line); background:transparent }

/* ---------- hazırlık denetimi ----------
   Renk burada anlam taşıyor: yeşil hazır, sarı dikkat, kırmızı engel.
   Nokta tek başına ayırt edici değil — başlık rengi de değişiyor ki
   renk körlüğünde metin ağırlığı ve konum ayırsın. */
.checks{ list-style:none; padding:0; display:grid; grid-template-columns:minmax(0,1fr);
  gap:.65rem; margin-top:.75rem }
.check{
  display:flex; gap:.7rem; align-items:flex-start; font-size:.9rem;
  padding:.7rem .85rem; border-radius:var(--r-sm);
  background:var(--surface-2); border:1px solid var(--line);
}
.check__dot{
  flex:none; width:.6rem; height:.6rem; border-radius:999px; margin-top:.42em;
}
.check--ok   { background:var(--ok-soft);     border-color:color-mix(in srgb,var(--ok) 22%,transparent) }
.check--warn { background:var(--warn-soft);   border-color:color-mix(in srgb,var(--warn) 22%,transparent) }
.check--fail { background:var(--danger-soft); border-color:color-mix(in srgb,var(--danger) 26%,transparent) }
.check--ok   .check__dot{ background:var(--ok) }
.check--warn .check__dot{ background:var(--warn) }
.check--fail .check__dot{ background:var(--danger) }
.check__title{ font-weight:600 }
.check--ok   .check__title{ color:var(--ok) }
.check--warn .check__title{ color:var(--warn) }
.check--fail .check__title{ color:var(--danger) }
.check__detail{ color:var(--muted); display:block; margin-top:.15em; line-height:1.55 }

/* ---------- sonuç ----------
   Sayfanın vardığı yer. Kartlardan ayrılsın diye kendi zemininde durur. */
.result{ margin-top:2rem }
.result__stat{
  display:flex; gap:1.5rem; flex-wrap:wrap; align-items:center;
  background:var(--surface); border:1px solid var(--line);
  border-radius:var(--r-lg); box-shadow:var(--sh-1);
  padding:clamp(1.1rem,.9rem + 1vw,1.6rem); margin-bottom:1.25rem;
}
.result__big{
  font-family:var(--serif);
  font-size:clamp(2.6rem,2rem + 2.6vw,3.75rem); font-weight:600;
  letter-spacing:-.03em; line-height:1; font-variant-numeric:tabular-nums;
  color:var(--brand);
}
.result__stat .lead{ max-width:44ch; color:var(--muted); flex:1 1 16rem }

.tabs{
  display:flex; gap:.5rem; flex-wrap:wrap; align-items:center; margin-bottom:1.25rem;
}
.viewbar__count{ font-size:.8rem; color:var(--muted); margin-left:auto }

/* ---------- haftalık ızgara ----------
   Duvara asılacak olan bu. Belge gibi davranıyor: beyaz kart, dolu
   lacivert başlık şeridi, tonlu satır rayı. Başlık serif — kurum
   konuşuyor; hücreler sans — araç çalışıyor. */
.grid{
  width:100%; border-collapse:separate; border-spacing:0;
  font-size:.82rem; table-layout:fixed; font-variant-numeric:tabular-nums;
}
.grid th, .grid td{
  border-right:1px solid var(--line); border-bottom:1px solid var(--line);
  padding:.45em .5em; text-align:left;
}
.grid tr > *:last-child{ border-right:0 }
.grid tbody tr:last-child > *{ border-bottom:0 }
.grid thead th{
  font-size:.76rem; font-weight:600; color:var(--muted);
  background:var(--surface-2); border-bottom-color:var(--line-2);
}
.grid tbody th{
  font-size:.72rem; font-weight:600; color:var(--muted);
  width:5rem; white-space:nowrap; background:var(--surface-2);
}
.grid tbody th small{
  display:block; font-size:.9em; font-weight:400; color:var(--muted-2);
  font-family:var(--mono); letter-spacing:0;
}
.grid td{ height:3.2rem }
.cell__main{ display:block; font-weight:600; line-height:1.3 }
.cell__sub{ display:block; color:var(--muted); font-size:.92em; line-height:1.25; margin-top:.15em }
.cell--empty{
  background-image:repeating-linear-gradient(45deg,
    transparent, transparent 5px,
    rgba(19,42,67,.035) 5px, rgba(19,42,67,.035) 6px);
}

/* Belge kabı */
.sheet{
  background:var(--surface); border:1px solid var(--line);
  border-radius:var(--r-lg); box-shadow:var(--sh-1);
  padding:clamp(.7rem,1.4vw,1.25rem); overflow-x:auto;
}

/* Ders programının kendisi */
.grid--sheet{ font-size:.84rem }
.grid--sheet thead th{
  background:var(--ink); color:#fff; border-color:var(--ink-2);
  font-family:var(--serif); font-size:.9rem; font-weight:600; letter-spacing:0;
  padding-block:.7em;
}
.grid--sheet thead th:first-child{ border-top-left-radius:var(--r-sm) }
.grid--sheet thead th:last-child{ border-top-right-radius:var(--r-sm) }
.grid--sheet tbody th{ background:var(--surface-2); color:var(--ink) }
.grid--sheet td{ height:3.6rem }
.grid--sheet .cell__main{ font-size:.88rem }

/* ---------- ders / yer renkleri ----------
   Kabuk tek renk kalıyor; renk yalnızca ayırt etmek için ve yumuşak
   tonda. Zemin açık olduğu için koyu metin her tonda okunur; soldaki
   koyu şerit tek başına da ayırt edici — renk körlüğünde de çalışır.
   Tonlar soğuk kâğıda göre yeniden ayarlandı. */
.cell{
  background:var(--tone-bg);
  box-shadow:inset 3px 0 0 var(--tone-edge);
}

.tone-0  { --tone-bg:#E4EEF9; --tone-edge:#3E72A8 }
.tone-1  { --tone-bg:#F0E9F6; --tone-edge:#7A5C9B }
.tone-2  { --tone-bg:#E4F1E7; --tone-edge:#3F7F55 }
.tone-3  { --tone-bg:#FAEFDD; --tone-edge:#A9782F }
.tone-4  { --tone-bg:#FAE7E6; --tone-edge:#AC5A55 }
.tone-5  { --tone-bg:#E0F0F1; --tone-edge:#347F82 }
.tone-6  { --tone-bg:#EFEFE0; --tone-edge:#7C7C46 }
.tone-7  { --tone-bg:#F4E8DC; --tone-edge:#9C6E4C }
.tone-8  { --tone-bg:#E6E8F5; --tone-edge:#5A5F9E }
.tone-9  { --tone-bg:#F6E8EF; --tone-edge:#A05B7B }
.tone-10 { --tone-bg:#E4EFE9; --tone-edge:#4F8471 }
.tone-11 { --tone-bg:#F0EDE1; --tone-edge:#89815F }

/* ---------- pano (ders / sınıf seçimi) ---------- */
.board{
  display:grid; gap:.85rem; margin-top:1.1rem;
  grid-template-columns:repeat(auto-fill,minmax(15rem,1fr));
}
.board__group{
  border:1px solid var(--line); border-radius:var(--r); background:var(--surface-2);
  padding:.8rem .9rem;
}
.board__head{
  display:flex; align-items:baseline; justify-content:space-between; gap:.5rem;
  border-bottom:1px solid var(--line); padding-bottom:.5rem;
}
.board__title{ font-size:.85rem; font-weight:600; color:var(--ink) }
.board__count{ font-size:.75rem; color:var(--muted-2); font-variant-numeric:tabular-nums }

.board__list{ display:grid; grid-template-columns:minmax(0,1fr); margin-top:.4rem }
.board__item{
  display:flex; align-items:center; gap:.55rem; min-height:2.1rem;
  font-size:.88rem; line-height:1.3; border-radius:var(--r-sm); padding-inline:.3rem;
  margin-inline:-.3rem;
}
label.board__item{ cursor:pointer }
label.board__item:hover{ background:var(--surface) }
.board__item input[type="checkbox"]{
  flex:none; width:1.05rem; height:1.05rem; accent-color:var(--brand); cursor:pointer; margin:0;
}
.board__dot{
  flex:none; width:.55rem; height:.55rem; border-radius:999px; background:var(--tone-edge);
}
.board__name{ flex:1 1 auto; min-width:0 }
.board__x{
  flex:none; border:0; background:transparent; cursor:pointer; color:var(--muted-2);
  font-size:1.15rem; line-height:1; padding:0 .25em; border-radius:var(--r-sm);
}
.board__x:hover{ color:var(--danger) }
.board__foot{ font-size:.82rem; color:var(--muted); margin-top:.85rem }

/* ---------- öğretmen listesi ----------
   Her öğretmen tek satır; düzenleme satırın altında yerinde açılıyor.
   Sütunlar grid ile hizalı olduğu için göz aşağı doğru tarayabiliyor. */
.roster__tools{
  display:flex; flex-wrap:wrap; gap:1rem; align-items:flex-end; margin-top:1.25rem;
}
.roster__only{
  display:flex; align-items:center; gap:.5rem; font-size:.88rem;
  cursor:pointer; padding-bottom:.55em; color:var(--muted);
}
.roster__only:hover{ color:var(--ink) }
.roster__only input{
  width:1.05rem; height:1.05rem; accent-color:var(--brand); margin:0; cursor:pointer;
}

.roster{
  margin-top:1.1rem; border:1px solid var(--line); border-radius:var(--r);
  overflow:hidden; background:var(--surface);
}

.roster__head{
  display:grid; align-items:baseline; gap:.35rem 1rem;
  grid-template-columns:1rem minmax(8rem,1.3fr) minmax(0,2fr) 5.5rem 5.5rem 1.75rem;
  padding:.65rem .85rem;
  background:var(--surface-2); border-bottom:1px solid var(--line-2);
  font-size:.76rem; font-weight:600; color:var(--muted);
}
.roster__head > span:nth-child(4),
.roster__head > span:nth-child(5){ text-align:right }
.roster__item + .roster__item{ border-top:1px solid var(--line) }

.roster__row{
  display:grid; align-items:center; gap:.35rem 1rem; width:100%;
  grid-template-columns:1rem minmax(8rem,1.3fr) minmax(0,2fr) 5.5rem 5.5rem 1.75rem;
  padding:.7rem .85rem; cursor:pointer; min-height:var(--tap);
  background:transparent; border:0; text-align:left; font:inherit; color:inherit;
  transition:background-color .15s var(--ease-out);
}
.roster__row:hover{ background:var(--surface-2) }
.roster__row:focus-visible{ outline:2px solid var(--brand); outline-offset:-2px }

.roster__caret{
  font-size:.7rem; color:var(--muted-2); display:inline-block;
  transition:transform .25s var(--ease-out);
}
.roster__item[data-acik="true"] .roster__caret{ transform:rotate(90deg); color:var(--brand) }
.roster__item[data-acik="true"] .roster__row{ background:var(--brand-soft) }

.roster__name{ font-size:.95rem; font-weight:500; line-height:1.3 }
.roster__brans{ display:flex; flex-wrap:wrap; gap:.25rem .8rem; font-size:.82rem; color:var(--muted) }
.roster__tag{ display:inline-flex; align-items:center; gap:.4em; white-space:nowrap }
.roster__tag i{ width:.5rem; height:.5rem; border-radius:999px; background:var(--tone-edge) }
.roster__eksik{ font-size:.8rem; color:var(--danger); font-weight:500 }
.roster__saatler{ display:contents }
.roster__saat{
  font-family:var(--mono); font-size:.72rem; color:var(--muted);
  text-align:right; font-variant-numeric:tabular-nums; white-space:nowrap;
}
.roster__x{
  border:0; background:transparent; cursor:pointer; color:var(--muted-2);
  font-size:1.15rem; line-height:1; padding:0 .25em; justify-self:end;
  border-radius:var(--r-sm);
}
.roster__x:hover{ color:var(--danger) }

/* Açılır panel: yükseklik hesabı yerine 0fr→1fr geçişi */
.roster__panel{
  display:grid; grid-template-rows:0fr;
  transition:grid-template-rows .28s var(--ease-out);
  background:var(--surface-2);
}
.roster__item[data-acik="true"] .roster__panel{ grid-template-rows:1fr }
.roster__panel > div{ overflow:hidden; min-height:0 }
.roster__body{ display:grid; grid-template-columns:minmax(0,1fr);
  gap:1.25rem; padding:1rem .85rem 1.35rem }
.roster__blok > h4{
  font-size:.8rem; font-weight:600; letter-spacing:.01em;
  color:var(--muted); margin-bottom:.6rem;
}
.roster__dersler{
  display:grid; gap:.15rem .9rem;
  grid-template-columns:repeat(auto-fill,minmax(12rem,1fr));
}
.roster__bos{ font-size:.85rem; color:var(--muted) }

@media (prefers-reduced-motion: reduce){
  .roster__panel, .roster__caret, .roster__row{ transition:none }
}

@media (max-width:720px){
  .roster__head{ display:none }
  .roster__row{
    grid-template-columns:1rem 1fr auto;
    grid-template-areas:
      "caret name  sil"
      ".     brans brans"
      ".     saat  saat";
  }
  .roster__caret{ grid-area:caret }
  .roster__name{ grid-area:name }
  .roster__brans{ grid-area:brans }
  .roster__x{ grid-area:sil }
  .roster__saatler{ grid-area:saat; display:flex; gap:1rem }
  .roster__saat{ text-align:left }
}

/* ---------- ikincil eylem çubuğu ---------- */
.acts-bar--sub{ margin-top:1rem }
.acts-bar__not{ font-size:.82rem; color:var(--muted) }

/* ---------- teneffüs kutuları ---------- */
.breaks{ display:flex; flex-wrap:wrap; gap:.65rem; margin-top:1rem }
.brk{ display:flex; flex-direction:column; gap:.3rem }
.brk > span{ font-size:.76rem; font-weight:600; color:var(--muted) }
.brk input{ width:4rem }

/* ---------- zil çizelgesi ---------- */
.bells{ display:flex; flex-wrap:wrap; gap:.4rem; margin-top:1rem }
.bell{
  display:inline-flex; align-items:baseline; gap:.45em;
  border:1px solid var(--line); border-radius:var(--r-sm); background:var(--surface-2);
  padding:.4em .7em; font-variant-numeric:tabular-nums;
}
.bell__no{ font-family:var(--mono); font-size:.68rem; color:var(--muted-2) }
.bell__time{ font-family:var(--mono); font-size:.82rem; color:var(--ink) }
.bells__foot{ font-size:.82rem; color:var(--muted); margin-top:.7rem }

/* ---------- bilgi / uyarı kutusu ---------- */
.note{
  border:1px solid var(--line); border-left:3px solid var(--brand);
  border-radius:var(--r-sm); background:var(--brand-soft);
  padding:.9rem 1.05rem; font-size:.9rem; line-height:1.6; margin-top:1rem;
}
.note strong{ font-weight:600 }
.note--warn{
  border-left-color:var(--danger); background:var(--danger-soft);
  border-color:color-mix(in srgb,var(--danger) 22%,transparent);
}
.note ul{ margin:.5rem 0 0; padding-left:1.2rem }
.note li{ margin-top:.25rem }

/* ---------- bilgi şeridi ----------
   Kurulum çağrısı, güncelleme haberi ve çizelge düzenleme ipucu aynı
   şeridi kullanıyor: sayfanın "şu an ne oluyor" satırı. */
.serit{
  display:flex; align-items:center; justify-content:space-between;
  gap:1rem; flex-wrap:wrap; margin-top:1rem;
  border:1px solid var(--line); border-left:3px solid var(--brand);
  border-radius:var(--r-sm); background:var(--brand-soft); padding:.9rem 1.05rem;
}
.serit__metin{ font-size:.9rem; line-height:1.6; max-width:54ch }
.serit__acts{ display:flex; gap:.6rem; flex-wrap:wrap }

/* ---------- eylem çubuğu ---------- */
.acts-bar{
  display:flex; gap:.6rem; flex-wrap:wrap; align-items:center; margin-top:1.25rem;
}

/* ---------- gizlilik notu ---------- */
.privacy{
  font-size:.85rem; color:var(--muted); line-height:1.7;
  border-top:1px solid var(--line); margin-top:2.5rem; padding-top:1.15rem;
  max-width:70ch;
}

/* ---------- yazdırma ----------
   Ekranda kart ve gölge var; kâğıtta ikisi de anlamsız. Basımda belge
   diline dönüyoruz: çerçevesiz, gölgesiz, ince kural. */
@media print{
  header, footer, .adim, .acts-bar, .privacy, .skip-link, .tabs, .result__stat, .note,
  .no-print, #izgara{
    display:none !important;
  }
  .result{ border:0; margin:0; padding:0 }
  .print-only{ display:block !important }
  .sheet{ border:0; padding:0; overflow:visible; box-shadow:none; background:#fff }
  .grid--sheet thead th{
    background:transparent !important; color:var(--ink) !important;
    border-color:var(--ink) !important; border-bottom-width:1.5px;
  }
  .grid--sheet tbody th{ background:transparent !important }
  .grid th, .grid td{ border-color:#B9C4D2 }
  .cell--empty{ background-image:none }
  /* Renkler kâğıtta da ayırt edici; tarayıcı zemin basmayı kesmesin. */
  .cell{ -webkit-print-color-adjust:exact; print-color-adjust:exact }
  .grid{ font-size:9pt; page-break-inside:avoid }
  .grid td{ height:auto; padding:.3em }
  .print-sheet{ page-break-after:always }
  .print-sheet:last-child{ page-break-after:auto }
  .print-sheet h2{ font-family:var(--serif); font-size:13pt; margin-bottom:.4rem }
  body{ background:#fff }
  @page{ size:A4 landscape; margin:12mm }
}
.print-only{ display:none }

/* ---------- dar ekran ---------- */
@media (max-width:640px){
  .serit__acts{ width:100% }
  .serit__acts .btn{ flex:1 1 auto; justify-content:center }
  .inp--lg, .inp--md{ width:100% }
  .field{ flex:1 1 100% }
  .row{ gap:.85rem }
  .row > .btn{ width:100% }
  .grid{ font-size:.74rem }
  .grid tbody th{ width:3.6rem }
  .adim__head{ grid-template-columns:auto 1fr }
  .adim__hint{ grid-column:1 / -1 }
  .result__stat{ gap:.85rem }
}

/* Alan kümesi başlığı (gün seçimi gibi). Girdi etiketiyle aynı sesle
   konuşuyor — biri diğerinden daha önemli değil. */
.alan-basligi{
  padding:0; font-size:.8rem; font-weight:600; color:var(--muted);
}

/* Bildirim içindeki eylem (geri al). Bildirimin kendisi koyu zeminli,
   düğme de o zemine göre. */
#toast{ display:flex; align-items:center; justify-content:center; gap:.9rem }
.toast__eylem{
  flex:none; font:inherit; font-weight:600; font-size:.85rem;
  color:#fff; background:transparent; cursor:pointer;
  border:1px solid rgba(255,255,255,.45); border-radius:var(--r-sm);
  padding:.3em .75em; min-height:2rem;
  transition:background-color .16s var(--ease-out), border-color .16s var(--ease-out);
}
.toast__eylem:hover{ background:rgba(255,255,255,.16); border-color:#fff }
.toast__eylem:focus-visible{ outline:2px solid #fff; outline-offset:2px }

/* ---------- çizelgede elle düzenleme ----------
   Sürükle-bırak yok: dokunmatikte ve 40 şubeli bir çizelgede sürükleme
   hataya çok açık. Tek tıkla seç, ikinci tıkla taşı ya da takas et. */
.cell--tik{ cursor:pointer; transition:box-shadow .15s var(--ease-out) }
.cell--tik:hover{ box-shadow:inset 0 0 0 2px var(--brand) }
.cell--tik:focus-visible{ outline:2px solid var(--brand); outline-offset:-2px }

/* Seçili olan: kalın çerçeve. Hedefler: hafif zemin, "buraya olur" der. */
.cell--secili{
  box-shadow:inset 0 0 0 3px var(--brand) !important;
}
.cell--hedef{ outline:1px dashed color-mix(in srgb,var(--brand) 45%,transparent); outline-offset:-3px }
.cell--empty.cell--hedef{ background:var(--brand-soft) }

@media (prefers-reduced-motion:reduce){ .cell--tik{ transition:none } }
@media print{
  .cell--tik, .cell--secili, .cell--hedef{ box-shadow:none !important; outline:none }
}
