/* =========================================================
   WORKSHOP SEPETI — PANEL TASARIM SISTEMI (Blok 30)
   Kaynak: design_handoff "Workshop Sepeti Admin" (README §2–§4).

   KAPSAM: YALNIZ panel sayfalari (/admin, /saglayici, /hesabim).
   Public site (ana sayfa/kesfet/etkinlik) NEO-BRUTALIST kalir ve bu dosyayi
   HIC yuklemez — base.html linki `panel_menu` varsa basar. Geri alma:
   bu dosyayi + base.html'deki tek <link> satirini sil, panel eski haline doner.

   Fontlar site.css'te @font-face ile SELF-HOST edilmistir (Archivo Black /
   Space Grotesk / Space Mono). Google Fonts CDN YOK — siki CSP harici fontu
   bloklar; handoff'taki <link fonts.googleapis> BILINCLI olarak alinmadi.

   ILKE (README §3): once bilesen katmani, sonra ekranlar. Sinif ISIMLERI
   korunur — 60 panel sablonu degismeden bu katmana gecer (Blok 21 yontemi).
   ========================================================= */

/* ---------- 1. TOKENLAR (README §2 — kaynak-dogru) ---------- */
.ws-panel {
  /* Blok 34: okunur en kucuk arayuz puntosu — TEK KAYNAK.
     Tur denetiminde panelde 10-11.5px etiketler bulundu (README esigi 12px). */
  --ws-punto-min: 12px;
  --ws-ink: #17150F;
  --ws-ink-hover: #2E2921;
  --ws-ink-2: #3D382F;
  --ws-muted: #6E685C;
  /* Blok 34: #8A8377 beyaz zeminde 3.75:1 idi (AA 4.5 alti) — panelde
     ikincil metnin TAMAMI (gri-metin, th, card-meta, kokpit-alt, kirinti)
     bu tokendan geliyordu. Koyulastirildi: beyazda 5.04, en acik panel
     zemininde (#F7F4EF) 4.60. */
  --ws-muted-2: #756E62;
  /* KOYU sidebar uzerindeki ikincil metin AYRI tokendir — yukaridaki koyu
     ton orada tersine okunmaz olurdu (#17150F uzerinde 5.55:1). */
  --ws-sidebar-muted: #948D82;
  --ws-disabled: #A9A29A;
  --ws-bg: #F7F4EF;
  --ws-surface: #FFFFFF;
  --ws-surface-2: #FBF9F5;
  --ws-surface-3: #F2EEE7;
  --ws-line: #E4DFD6;
  --ws-line-2: #EFEAE2;
  --ws-line-3: #F4F0E9;
  --ws-input-border: #D9D3C8;
  --ws-pink: #E8336D;
  --ws-pink-hover: #C6134F;
  --ws-pink-deep: #96063A;
  --ws-pink-soft: #FDEBF1;
  --ws-pink-ring: #FBD6E2;
  --ws-sidebar-active: #312A22;
  --ws-sidebar-hover: #241F1A;
  --ws-sidebar-text: #B4AEA5;
  --ws-sidebar-line: #2C2822;
  --ws-sidebar-chip: #3A352D;

  /* Durum cifti (README §2 — YALNIZ bu 6 cift; yedinci cift eklenmez) */
  --ws-olumlu-bg: #E7F3EC;   --ws-olumlu-fg: #166B41;
  --ws-bekleyen-bg: #FBF0DC; --ws-bekleyen-fg: #8A5900;
  --ws-hata-bg: #FBE9E7;     --ws-hata-fg: #A81E1A;
  --ws-bilgi-bg: #E8EEFA;    --ws-bilgi-fg: #274FA0;
  --ws-notr-bg: #F2EEE7;     --ws-notr-fg: #5C564C;
  --ws-dolu-bg: #17150F;     --ws-dolu-fg: #F7F4EF;

  --ws-yikici-kenar: #E7BCB9;
  --ws-yikici-fg: #B4231F;

  --ws-r-kart: 12px;
  --ws-r-btn: 9px;
  --ws-r-kucuk: 8px;

  /* Satir yogunlugu — README §2: YALNIZ iki deger, ucuncu yoktur.
     Ust bardaki dugme <html data-yogunluk> yazar, asagida okunur. */
  --ws-satir-pad: 11px 12px;
  --ws-satir-pad-sol: 11px 12px 11px 16px;
  --ws-satir-pad-sag: 11px 16px 11px 12px;
}
html[data-yogunluk="ferah"] .ws-panel {
  --ws-satir-pad: 16px 12px;
  --ws-satir-pad-sol: 16px 12px 16px 16px;
  --ws-satir-pad-sag: 16px 16px 16px 12px;
}

@keyframes wsIn { from { opacity:0; transform:translateY(6px); } to { opacity:1; transform:none; } }
@keyframes wsToast { from { opacity:0; transform:translateY(10px); } to { opacity:1; transform:none; } }
@keyframes wsIskelet { 0%,100% { opacity:1; } 50% { opacity:.45; } }

/* ---------- 2. KABUK (README §4) ---------- */
body.ws-panel {
  margin:0; background:var(--ws-bg); color:var(--ws-ink);
  font-family:'Space Grotesk', system-ui, sans-serif;
  -webkit-font-smoothing:antialiased;
}
.ws-panel .ws-kabuk { min-height:100vh; display:flex; background:var(--ws-bg); }

/* 2.1 Sidebar — 250px sabit, koyu */
.ws-panel .ws-yan {
  width:250px; flex:0 0 250px; background:var(--ws-ink); color:#EDE9E2;
  display:flex; flex-direction:column; position:sticky; top:0; height:100vh;
}
.ws-panel .ws-yan-ust {
  padding:20px 20px 16px; display:flex; align-items:center; justify-content:space-between;
  border-bottom:1px solid var(--ws-sidebar-line);
}
.ws-panel .ws-yan-marka {
  font-family:'Archivo Black', sans-serif; font-size:19px; letter-spacing:-0.01em;
  color:var(--ws-bg); text-decoration:none;
}
.ws-panel .ws-yan-marka .nokta { color:var(--ws-pink); }
.ws-panel .ws-yan-rol {
  font-size:var(--ws-punto-min); letter-spacing:0.08em; text-transform:uppercase; color:var(--ws-sidebar-muted);
  border:1px solid var(--ws-sidebar-chip); border-radius:5px; padding:3px 6px; white-space:nowrap;
}
.ws-panel .ws-yan-govde { flex:1; overflow:auto; padding:14px 10px 20px; }

/* README §4.1: gruplar DAIMA ACIK listelerdir (tiklama sayisini azaltmak icin) —
   <details> katlamasi yok, ama <details>/<summary> etiketi korunuyor ki JS'siz
   ve eski sablon sozlesmesi bozulmasin. */
.ws-panel .panel-sidebar-grup { margin-bottom:16px; }
.ws-panel .panel-sidebar-grup > summary { list-style:none; }
.ws-panel .panel-sidebar-grup > summary::-webkit-details-marker { display:none; }
.ws-panel .panel-sidebar-grup-baslik {
  display:flex; align-items:center; justify-content:space-between; gap:8px;
  font-size:var(--ws-punto-min); letter-spacing:0.1em; text-transform:uppercase; color:var(--ws-sidebar-muted);
  padding:0 10px 7px; font-weight:600; cursor:default;
}
.ws-panel .panel-sidebar-baslik { display:none; }

.ws-panel .panel-sidebar-link {
  display:flex; align-items:center; justify-content:space-between; gap:8px;
  padding:8px 10px; border-radius:7px; font-size:13.5px; font-weight:500;
  color:var(--ws-sidebar-text); text-decoration:none;
  border-left:2px solid transparent;   /* pasifte de 2px — aktifte kayma olmasin */
  margin-bottom:2px; transition:background .13s, color .13s;
  /* site.css brutalist mirasini NOTRLE (mono + uppercase + kalin kenar) */
  font-family:inherit; text-transform:none; letter-spacing:0;
  border-top:0; border-right:0; border-bottom:0;
}
.ws-panel .panel-sidebar-grup > .panel-sidebar-link { padding-left:10px; }
/* Grup basligindaki ▸/▾ ucgeni: katlama YOK, ok da olmasin */
.ws-panel .panel-sidebar-grup-baslik > span:first-child::before { content:none; }
.ws-panel .panel-sidebar-grup-baslik:hover { background:transparent; color:var(--ws-sidebar-muted); }
.ws-panel .panel-sidebar-grup { border-top:0; padding-top:0; margin-top:0; gap:0; }
.ws-panel .panel-sidebar-link:hover { background:var(--ws-sidebar-hover); color:var(--ws-bg); }
.ws-panel .panel-sidebar-link.aktif {
  background:var(--ws-sidebar-active); color:#FFFFFF; font-weight:600;
  border-left-color:var(--ws-pink);
}
.ws-panel .panel-sidebar-link .rozet,
.ws-panel .panel-sidebar-grup-baslik .rozet {
  /* Blok 34: beyaz metin --ws-pink uzerinde 4.10:1 idi -> koyu ton (5.82:1) */
  background:var(--ws-pink-hover); color:#fff; border:0; font-size:var(--ws-punto-min); font-weight:700;
  border-radius:999px; padding:1px 7px; min-width:20px; text-align:center;
  text-transform:none; letter-spacing:0; font-family:inherit;
}

/* 2.2 Sidebar alt kullanici blogu */
.ws-panel .ws-yan-alt {
  padding:14px; border-top:1px solid var(--ws-sidebar-line);
  display:flex; align-items:center; gap:10px;
}
.ws-panel .ws-yan-avatar {
  width:32px; height:32px; border-radius:var(--ws-r-kucuk); background:var(--ws-sidebar-chip);
  color:var(--ws-bg); display:grid; place-items:center; font-size:12px; font-weight:700; flex:0 0 32px;
}
.ws-panel .ws-yan-kim { flex:1; min-width:0; display:flex; flex-direction:column; }
.ws-panel .ws-yan-ad { display:block; font-size:13px; font-weight:600; color:#EDE9E2; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.ws-panel .ws-yan-rol-alt { display:block; font-size:var(--ws-punto-min); color:var(--ws-sidebar-muted); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.ws-panel .ws-yan-alt form { margin:0; }
/* Sidebar kaydirma cubugu koyu zeminde goze batmasin */
.ws-panel .ws-yan-govde { scrollbar-width:thin; scrollbar-color:#3A352D transparent; }
.ws-panel .ws-yan-govde::-webkit-scrollbar { width:8px; }
.ws-panel .ws-yan-govde::-webkit-scrollbar-track { background:transparent; }
.ws-panel .ws-yan-govde::-webkit-scrollbar-thumb { background:#3A352D; border-radius:999px; }
.ws-panel .ws-yan-cikis {
  background:transparent; border:1px solid var(--ws-sidebar-chip); border-radius:7px;
  color:var(--ws-disabled); width:28px; height:28px; cursor:pointer; font-size:13px;
  display:grid; place-items:center; padding:0;
}
.ws-panel .ws-yan-cikis:hover { color:var(--ws-bg); border-color:#5A544A; }

/* 2.3 Ust bar — 60px */
.ws-panel .ws-govde { flex:1; min-width:0; display:flex; flex-direction:column; }
.ws-panel .ws-ustbar {
  position:sticky; top:0; z-index:20; height:60px; padding:0 28px;
  background:rgba(247,244,239,.92); backdrop-filter:blur(8px);
  border-bottom:1px solid var(--ws-line);
  display:flex; align-items:center; gap:16px;
}
.ws-panel .ws-kirinti {
  font-size:13px; color:var(--ws-muted-2); display:flex; align-items:center; gap:8px; white-space:nowrap;
}
.ws-panel .ws-kirinti-ayirac { color:#CFC8BC; }
.ws-panel .ws-kirinti-son { color:var(--ws-ink); font-weight:600; }
.ws-panel .ws-ustbar-bosluk { flex:1; }
/* Blok 36 bölüm 3: rol bağlamı sekmeleri (panel üst çubuğu).
   Segmented-control görünümü — kullanıcı "hangi kimlikteyim" sorusunu tek
   bakışta cevaplayabilmeli; aktif olan dolgulu, diğerleri sade. */
.ws-panel .ws-baglam-sekmeler {
  display:flex; align-items:center; gap:2px; flex:0 0 auto;
  background:var(--ws-surface); border:1px solid var(--ws-line);
  border-radius:var(--ws-r-btn); padding:2px;
}
.ws-panel .ws-baglam-sekmeler .baglam-sekme { display:flex; margin:0; }
.ws-panel .ws-baglam-sekmeler button {
  background:none; border:0; cursor:pointer; white-space:nowrap;
  padding:5px 12px; border-radius:calc(var(--ws-r-btn) - 2px);
  font-size:13px; font-weight:600; color:var(--ws-muted-2);
}
.ws-panel .ws-baglam-sekmeler button:hover { color:var(--ws-ink); }
.ws-panel .ws-baglam-sekmeler button[aria-current="page"] {
  background:var(--ws-ink); color:var(--ws-surface);
}
.ws-panel .ws-arama {
  display:flex; align-items:center; gap:6px; background:var(--ws-surface);
  border:1px solid var(--ws-line); border-radius:var(--ws-r-btn);
  padding:0 10px; height:34px; width:230px;
  /* flex ogesi olarak kucululebilsin — aksi halde dar ekranda komsusunu ezer.
     NOT: `overflow:hidden` BILEREK YOK — belirtiyi maskeler, dogrulama araci
     gercek tasmayi goremez hale gelirdi (Blok 32'de bir kez oldu). */
  min-width:0; box-sizing:border-box;
}
.ws-panel .ws-arama span { color:var(--ws-disabled); font-size:13px; flex:0 0 auto; }
/* OZGULLUK NOTU (Blok 32): `.ws-panel .ws-arama input` (0,2,1) ile §3.5'teki
   genel `.ws-panel input[type="search"]` (0,2,1) ESIT ozgullukte; §3.5 dosyada
   SONRA geldigi icin kazaniyordu ve input 40px yukseklik + 1px kenar + 9px
   radius aliyordu (34px kutunun icinde cift-kenar/tasma). Attribute secici
   eklenerek (0,3,1) yapildi. */
.ws-panel .ws-arama input,
.ws-panel .ws-arama input[type="search"],
.ws-panel .ws-arama input[type="text"] {
  border:0; outline:none; background:transparent; font-size:13px;
  flex:1 1 auto; width:auto; min-width:0;
  color:var(--ws-ink); height:100%; padding:0; box-shadow:none; border-radius:0;
  -webkit-appearance:none; appearance:none;
}
/* Blok 34 (bolum 4.1): bu kural odak halkasini SIFIRLIYORDU — ust bardaki arama
   kutusu klavye ile gezildiginde HICBIR gorsel isaret vermiyordu (tur: 110 panel
   sayfasinin hepsinde). Input'un kendi kenari yok (kutu kapsayicinin), o yuzden
   halka KAPSAYICIYA verilir: alan gorunumu bozulmadan odak gorunur olur. */
.ws-panel .ws-arama input[type="search"]:focus,
.ws-panel .ws-arama input[type="text"]:focus { border:0; box-shadow:none; }
.ws-panel .ws-arama:focus-within {
  border-color:var(--ws-pink); box-shadow:0 0 0 3px var(--ws-pink-ring);
}
.ws-panel .ws-arama input::-webkit-search-decoration,
.ws-panel .ws-arama input::-webkit-search-cancel-button { -webkit-appearance:none; }

/* Mobil menu dugmesi — masaustunde YOK, <=1024px'te gorunur (bkz. §8) */
.ws-panel .ws-yan-dugme {
  display:none; align-items:center; justify-content:center;
  width:38px; height:34px; flex:0 0 auto; padding:0; cursor:pointer;
  background:var(--ws-surface); border:1px solid var(--ws-line);
  border-radius:var(--ws-r-btn); color:var(--ws-ink); font-size:16px; line-height:1;
}
.ws-panel .ws-yan-dugme:hover { background:var(--ws-surface-3); }
.ws-panel .ws-yan-dugme:focus-visible { outline:2px solid var(--ws-pink); outline-offset:2px; }
/* Ortu masaustunde HIC yok (cekmece yalniz dar ekranda) */
.ws-panel .ws-yan-ortu { display:none; }
@media (max-width:1024px) { .ws-panel .ws-yan-ortu { display:block; } }
.ws-panel .ws-yogunluk {
  height:34px; padding:0 12px; background:var(--ws-surface); border:1px solid var(--ws-line);
  border-radius:var(--ws-r-btn); font-size:12.5px; font-weight:600; color:var(--ws-ink-2); cursor:pointer;
}
.ws-panel .ws-yogunluk:hover { background:var(--ws-surface-3); }
.ws-panel .ws-icerik { flex:1; padding:26px 28px 60px; max-width:1520px; width:100%; }
.ws-panel #panel-icerik { animation:wsIn .22s ease both; }

/* ---------- 3. BILESEN STANDARDI (README §3) ---------- */

/* 3.1 Butonlar — 6 varyant, fazlasi yok */
.ws-panel .btn {
  display:inline-flex; align-items:center; justify-content:center; gap:7px;
  height:38px; padding:0 16px; border-radius:var(--ws-r-btn);
  font-family:inherit; font-size:13.5px; font-weight:600; line-height:1;
  text-decoration:none; cursor:pointer; white-space:nowrap;
  border:1px solid transparent; background:transparent; color:var(--ws-ink-2);
  transition:background .15s, border-color .15s, color .15s;
  text-transform:none; letter-spacing:0; box-shadow:none;
}
.ws-panel .btn:active { transform:translateY(1px); }
.ws-panel .btn:focus-visible { outline:2px solid var(--ws-pink); outline-offset:2px; }

.ws-panel .btn-ana { background:var(--ws-ink); border-color:var(--ws-ink); color:#fff; }
.ws-panel .btn-ana:hover { background:var(--ws-ink-hover); border-color:var(--ws-ink-hover); }

/* Blok 34: beyaz metin --ws-pink uzerinde 4.10:1 idi (AA 4.5 alti) — bir ton
   koyulastirildi (5.82:1), hover daha da koyu. */
.ws-panel .btn-onay { background:var(--ws-pink-hover); border-color:var(--ws-pink-hover); color:#fff; }
.ws-panel .btn-onay:hover { background:var(--ws-pink-deep); border-color:var(--ws-pink-deep); }

.ws-panel .btn-ikincil { background:var(--ws-surface); border-color:var(--ws-input-border); color:var(--ws-ink-2); }
.ws-panel .btn-ikincil:hover { background:var(--ws-surface-3); }

.ws-panel .btn-sessiz { background:transparent; border-color:transparent; color:var(--ws-ink-2); }
.ws-panel .btn-sessiz:hover { background:var(--ws-line-2); }
.ws-panel .btn-sessiz:active { transform:none; }

.ws-panel .btn-yikici { background:var(--ws-surface); border-color:var(--ws-yikici-kenar); color:var(--ws-yikici-fg); }

/* Blok 34: SINIFSIZ <button> panelde site.css'in brutalist (sari-siyah, mono,
   uppercase, 3px kenar) gorunumunu miras aliyordu — ayni ekranda panel butonu
   ile brutalist buton yan yana duruyordu (tur ekran goruntusu: /admin/saglayicilar
   "EKLE"/"FİLTRELE"). Sinifsiz butonlar ikincil panel butonu gibi gorunur.
   Kendi tasarimi olan kabuk dugmeleri HARIC. */
.ws-panel button:not([class]),
.ws-panel button[class=""] {
  display:inline-flex; align-items:center; justify-content:center; gap:7px;
  height:38px; padding:0 16px; border-radius:var(--ws-r-btn);
  font-family:inherit; font-size:13.5px; font-weight:600; line-height:1;
  text-transform:none; letter-spacing:0; box-shadow:none; cursor:pointer;
  background:var(--ws-surface); border:1px solid var(--ws-input-border);
  color:var(--ws-ink-2); transition:background .15s, border-color .15s;
}
.ws-panel button:not([class]):hover { background:var(--ws-surface-3); }
.ws-panel button:not([class]):focus-visible { outline:2px solid var(--ws-pink); outline-offset:2px; }
.ws-panel button:not([class]):disabled { color:var(--ws-disabled); background:var(--ws-surface-3); cursor:not-allowed; }

/* Blok 34: arayuz metinleri arac cubugu — `.metin-ara` formunun hicbir duzen
   kurali yoktu; TR/EN sekmesi, arama kutusu, onay kutusu ve dugme ust uste
   biniyordu (tur ekran goruntusu). Tek satirda hizalanir, dar ekranda sarar. */
.ws-panel .metin-arac-cubugu { gap:12px; align-items:center; }
.ws-panel .metin-arac-cubugu .dil-sekme { display:inline-flex; gap:8px; align-items:center; flex:0 0 auto; }
.ws-panel .metin-ara {
  display:flex; gap:8px; align-items:center; flex-wrap:wrap; flex:1 1 320px; margin:0;
}
.ws-panel .metin-ara input[name="q"] { flex:1 1 220px; min-width:0; }
.ws-panel .metin-ara label { display:inline-flex; align-items:center; gap:6px; white-space:nowrap; margin:0; }
.ws-panel .metin-linkler { display:inline-flex; gap:10px; align-items:center; flex:0 0 auto; }
.ws-panel .metin-ithal { display:flex; gap:10px; align-items:center; flex-wrap:wrap; margin:0 0 12px; }
.ws-panel .btn-yikici:hover { background:var(--ws-hata-bg); }
.ws-panel .btn-yikici:active { transform:none; }

.ws-panel .btn[disabled], .ws-panel .btn:disabled {
  background:var(--ws-surface-3); border-color:var(--ws-line); color:var(--ws-disabled);
  cursor:not-allowed; transform:none;
}
.ws-panel .btn-kucuk { height:34px; padding:0 13px; font-size:12.5px; }
.ws-panel .btn-mini  { height:30px; padding:0 11px; font-size:12.5px; border-radius:7px; }
.ws-panel .btn-blok  { display:flex; width:100%; }

/* 3.2 Durum etiketi */
.ws-panel .rozet {
  display:inline-flex; align-items:center; gap:5px;
  font-size:var(--ws-punto-min); font-weight:600; border-radius:999px; padding:3px 9px;
  white-space:nowrap; border:0; text-transform:none; letter-spacing:0;
  font-family:inherit; background:var(--ws-notr-bg); color:var(--ws-notr-fg);
}
.ws-panel .rozet-olumlu   { background:var(--ws-olumlu-bg);   color:var(--ws-olumlu-fg); }
.ws-panel .rozet-bekleyen { background:var(--ws-bekleyen-bg); color:var(--ws-bekleyen-fg); }
.ws-panel .rozet-hata     { background:var(--ws-hata-bg);     color:var(--ws-hata-fg); }
.ws-panel .rozet-bilgi    { background:var(--ws-bilgi-bg);    color:var(--ws-bilgi-fg); }
.ws-panel .rozet-notr     { background:var(--ws-notr-bg);     color:var(--ws-notr-fg); }
.ws-panel .rozet-dolu     { background:var(--ws-dolu-bg);     color:var(--ws-dolu-fg); }
/* Mevcut sablon sinif adlari yeni cifte eslenir (yeni renk uretilmez) */
.ws-panel .rozet-kesinlesti { background:var(--ws-olumlu-bg);   color:var(--ws-olumlu-fg); }
.ws-panel .rozet-yakinda    { background:var(--ws-bekleyen-bg); color:var(--ws-bekleyen-fg); }
.ws-panel .rozet-sonyer     { background:var(--ws-hata-bg);     color:var(--ws-hata-fg); }
.ws-panel .badge { display:inline-flex; align-items:center; font-size:var(--ws-punto-min); font-weight:600;
  border-radius:999px; padding:3px 9px; background:var(--ws-notr-bg); color:var(--ws-notr-fg); }
.ws-panel .badge-green { background:var(--ws-olumlu-bg); color:var(--ws-olumlu-fg); }
.ws-panel .badge-amber { background:var(--ws-bekleyen-bg); color:var(--ws-bekleyen-fg); }

/* 3.3 Tablo anatomisi */
.ws-panel .karsilastirma-sarmal,
.ws-panel .ws-tablo-sarmal {
  background:var(--ws-surface); border:1px solid var(--ws-line);
  border-radius:var(--ws-r-kart); overflow:hidden; margin:0 0 16px;
}
.ws-panel .karsilastirma-sarmal > table,
.ws-panel .ws-tablo-sarmal > table { margin:0; }
.ws-panel .karsilastirma-sarmal { overflow-x:auto; }

.ws-panel table {
  width:100%; border-collapse:collapse; font-size:13.5px;
  background:var(--ws-surface); color:var(--ws-ink);
  border:0; box-shadow:none;   /* site.css brutalist kalin cerceve NOTRLENDI */
}
.ws-panel thead tr { background:var(--ws-surface-2); }
.ws-panel th {
  text-align:left; font-size:var(--ws-punto-min); font-weight:600; text-transform:uppercase;
  letter-spacing:.06em; color:var(--ws-muted-2);
  padding:10px 12px; border-bottom:1px solid var(--ws-line); white-space:nowrap;
  /* site.css'te th siyah zemin + sari metin + mono idi */
  background:var(--ws-surface-2); font-family:inherit;
}
.ws-panel td {
  padding:var(--ws-satir-pad); border-bottom:1px solid var(--ws-line-3);
  vertical-align:middle; transition:background .12s;
  font-family:inherit; font-size:13.5px; color:var(--ws-ink);
}
.ws-panel tr > th:first-child, .ws-panel tr > td:first-child { padding-left:16px; }
.ws-panel tr > th:last-child,  .ws-panel tr > td:last-child  { padding-right:16px; }
.ws-panel tbody tr:hover { background:var(--ws-surface-2); }
.ws-panel tbody tr.secili { background:var(--ws-pink-soft); }
.ws-panel tbody tr:last-child td { border-bottom:0; }
/* Sayi/para/tarih/kod hucrelerinde tabular-nums ZORUNLU (README §2) */
.ws-panel td, .ws-panel th, .ws-panel .ws-sayi, .ws-panel .kokpit-sayi { font-variant-numeric:tabular-nums; }
.ws-panel .ws-sag, .ws-panel th.ws-sag, .ws-panel td.ws-sag { text-align:right; }
.ws-panel td.ws-para { text-align:right; font-weight:600; }
.ws-panel td.ws-iade { text-align:right; color:var(--ws-yikici-fg); }
.ws-panel td.ws-komisyon { text-align:right; color:var(--ws-muted); }
.ws-panel .ws-hucre-alt { font-size:12px; color:var(--ws-muted-2); margin-top:1px; }
.ws-panel .ws-kirp { max-width:280px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.ws-panel .ws-gorsel-kutu {
  width:34px; height:34px; flex:0 0 34px; border-radius:var(--ws-r-kucuk);
  background:var(--ws-line-2); border:1px solid var(--ws-line);
  display:grid; place-items:center; font-size:var(--ws-punto-min); color:var(--ws-disabled);
  font-family:'Space Mono', ui-monospace, monospace; overflow:hidden;
}
.ws-panel .ws-gorsel-kutu img { width:100%; height:100%; object-fit:cover; }
.ws-panel .islem-hucre { display:flex; align-items:center; gap:6px; flex-wrap:wrap; justify-content:flex-end; }
.ws-panel .ws-sayfalama {
  padding:12px 16px; display:flex; align-items:center; justify-content:space-between;
  gap:12px; border-top:1px solid var(--ws-line-2); font-size:12.5px; color:var(--ws-muted-2);
}

/* Iskelet yukleniyor (README §6 — spinner YOK) */
.ws-panel .ws-iskelet td > span {
  display:block; height:12px; border-radius:4px; background:var(--ws-surface-3);
  animation:wsIskelet 1.2s ease-in-out infinite;
}

/* 3.4 Filtre chip'i */
.ws-panel .filtre-cip-satir, .ws-panel .ws-cip-satir {
  display:flex; align-items:center; gap:8px; flex-wrap:wrap;
  padding:12px 16px; border-bottom:1px solid var(--ws-line-2); margin:0;
}
.ws-panel .filtre-cip, .ws-panel .alt-sekme {
  display:inline-flex; align-items:center; gap:6px; height:32px; padding:0 12px;
  border:1px solid var(--ws-input-border); border-radius:999px;
  font-family:inherit; font-size:12.5px; font-weight:600;
  background:var(--ws-surface); color:var(--ws-ink-2);
  cursor:pointer; text-decoration:none; transition:background .15s, border-color .15s, color .15s;
  text-transform:none; letter-spacing:0; box-shadow:none; transform:none;
}
.ws-panel .filtre-cip:hover, .ws-panel .alt-sekme:hover { background:var(--ws-surface-3); transform:none; box-shadow:none; }
.ws-panel .filtre-cip.secili, .ws-panel .alt-sekme.aktif {
  background:var(--ws-ink); border-color:var(--ws-ink); color:#fff;
}
.ws-panel .filtre-cip .rozet, .ws-panel .alt-sekme .rozet,
.ws-panel .filtre-cip .ws-sayac, .ws-panel .alt-sekme .ws-sayac {
  background:transparent; color:inherit; opacity:.55; padding:0; margin-left:2px;
  font-size:inherit; font-weight:inherit; border-radius:0;
}
.ws-panel .alt-sekmeler { display:flex; align-items:center; gap:8px; flex-wrap:wrap; margin:0 0 16px; border:0; }
.ws-panel .filtre-cip-kapat { background:none; border:0; color:inherit; cursor:pointer; padding:0; font-size:13px; }

/* 3.5 Form alani */
.ws-panel .form-alan, .ws-panel .filtre-alan {
  display:flex; flex-direction:column; gap:6px; min-width:0;
}
.ws-panel .form-alan label, .ws-panel .filtre-etiket, .ws-panel label.ws-etiket {
  font-size:12.5px; font-weight:600; color:var(--ws-ink-2);
  font-family:inherit; text-transform:none; letter-spacing:0;   /* site.css mono/uppercase */
}
.ws-panel input[type="text"], .ws-panel input[type="email"], .ws-panel input[type="tel"],
.ws-panel input[type="number"], .ws-panel input[type="date"], .ws-panel input[type="time"],
.ws-panel input[type="datetime-local"], .ws-panel input[type="password"], .ws-panel input[type="search"],
.ws-panel input[type="url"], .ws-panel input:not([type]), .ws-panel select, .ws-panel textarea {
  height:40px; padding:0 12px; border:1px solid var(--ws-input-border);
  border-radius:var(--ws-r-btn); font-family:inherit; font-size:14px;
  background:var(--ws-surface); color:var(--ws-ink); outline:none; width:100%;
  transition:border-color .15s, box-shadow .15s; box-shadow:none;
}
.ws-panel textarea { height:auto; min-height:96px; padding:10px 12px; line-height:1.5; resize:vertical; }
.ws-panel input:focus, .ws-panel select:focus, .ws-panel textarea:focus {
  border-color:var(--ws-pink); box-shadow:0 0 0 3px var(--ws-pink-ring);
}
.ws-panel input[type="checkbox"], .ws-panel input[type="radio"] {
  accent-color:var(--ws-pink); width:15px; height:15px; height:auto; padding:0;
}
.ws-panel input[type="file"] {
  height:auto; padding:9px 12px; width:100%;
  border:1px solid var(--ws-input-border); border-radius:var(--ws-r-btn);
  background:var(--ws-surface); font-size:13px; box-shadow:none;
}
.ws-panel input[type="file"]::file-selector-button {
  height:30px; padding:0 11px; margin-right:10px; cursor:pointer;
  border:1px solid var(--ws-input-border); border-radius:7px;
  background:var(--ws-surface); color:var(--ws-ink-2);
  font-family:inherit; font-size:12.5px; font-weight:600;
}
.ws-panel .filtre-bar, .ws-panel .panel-form-satir, .ws-panel .duzen-satir {
  background:var(--ws-surface); border:1px solid var(--ws-line); box-shadow:none;
  border-radius:var(--ws-r-kart); padding:14px 16px;
  display:flex; gap:14px; flex-wrap:wrap; align-items:flex-end; margin:0 0 16px;
}
.ws-panel .filtre-bar select, .ws-panel .filtre-bar input { height:40px; }
.ws-panel .filtre-bar .btn { align-self:flex-end; }

/* Toggle (README §3.5) */
.ws-panel .ws-anahtar {
  width:38px; height:22px; min-width:38px; max-width:38px; border-radius:999px;
  background:#DDD7CC; position:relative; cursor:pointer; flex:0 0 38px;
  border:0; padding:0; margin:0; box-shadow:none; transform:none;
  display:inline-block; font-size:0; transition:background .15s;
}
.ws-panel .ws-anahtar[aria-pressed="true"], .ws-panel .ws-anahtar.acik { background:var(--ws-pink); }
.ws-panel .ws-anahtar::after { content:''; position:absolute; top:2px; left:2px; width:18px; height:18px;
  border-radius:999px; background:#fff; transition:left .15s; }
.ws-panel .ws-anahtar[aria-pressed="true"]::after, .ws-panel .ws-anahtar.acik::after { left:18px; }

/* 3.6 Baslik blogu */
.ws-panel .panel-baslik {
  display:flex; align-items:flex-end; justify-content:space-between; gap:20px;
  margin:0 0 22px; padding:0; border:0; background:transparent;
}
/* Blok 34: bu kural YALNIZ `.panel-baslik` sarmalindaki h1'e uyguluyordu;
   sarmali kullanmayan panel sayfalari (rapor, ayarlar…) site.css'in brutalist
   BUYUK HARF h1'ini miras aliyordu — ayni panelde "Bugün" ile "RAPOR" yan yana
   duruyordu. Kural tum panel h1'lerine genisletildi. */
.ws-panel h1,
.ws-panel .panel-baslik h1 {
  font-family:'Archivo Black', sans-serif; font-size:28px; letter-spacing:-0.02em;
  margin:0 0 14px; line-height:1.1; text-transform:none;
}
.ws-panel .panel-baslik h1 { margin:0; }
.ws-panel .panel-baslik-alt {
  color:var(--ws-muted); font-size:14px; margin:6px 0 0;
  font-family:inherit; text-transform:none; letter-spacing:0;   /* site.css mono/uppercase */
}
.ws-panel .panel-aksiyon { display:flex; gap:8px; flex-wrap:wrap; align-items:center; }
.ws-panel .ws-geri {
  display:inline-block; background:transparent; border:0; padding:0; margin:0 0 10px;
  font-size:13px; font-weight:600; color:var(--ws-muted-2); cursor:pointer; text-decoration:none;
}
.ws-panel .ws-geri:hover { color:var(--ws-ink); }

/* 3.7 Kart */
.ws-panel .card, .ws-panel .ws-kart, .ws-panel .panel-grup {
  background:var(--ws-surface); border:1px solid var(--ws-line);
  border-radius:var(--ws-r-kart); padding:20px; box-shadow:none; margin:0 0 16px;
}
.ws-panel .card h2, .ws-panel .ws-kart h2, .ws-panel .panel-grup-baslik {
  font-family:'Space Grotesk', sans-serif; font-size:14.5px; font-weight:700;
  margin:0 0 12px; letter-spacing:0; text-transform:none; color:var(--ws-ink);
}
/* Kartlar ic ice gecmez — ayrim cizgiyle (README §3.7) */
.ws-panel .card .card, .ws-panel .ws-kart .ws-kart {
  border:0; border-top:1px solid var(--ws-line-3); border-radius:0;
  padding:14px 0 0; margin:14px 0 0;
}
.ws-panel h2 { font-size:16px; font-weight:700; margin:24px 0 12px; letter-spacing:0; text-transform:none; }
.ws-panel h2:first-child { margin-top:0; }
.ws-panel h3 { font-size:14.5px; font-weight:700; margin:18px 0 10px; letter-spacing:0; text-transform:none; }
.ws-panel .gri-metin, .ws-panel .soluk, .ws-panel .card-meta {
  color:var(--ws-muted-2); font-size:12.5px; font-family:inherit;
}
.ws-panel a { color:var(--ws-pink-hover); text-decoration:none; }
.ws-panel a:hover { color:var(--ws-pink-deep); }
/* Blok 34: "İçeriğe atla" baglantisi bir <a> oldugu icin yukaridaki pembe
   kurali onu da boyuyordu — KOYU zemin uzerinde pembe metin 3.4:1 (AA alti,
   klavye kullanicisi icin ilk durak okunmuyordu). site.css'teki sari geri alinir. */
.ws-panel a.atla-baglantisi { color:var(--sari); }
/* Blok 34: <small> tarayici varsayilani 0.83em — 12.5px govdede 10.4px
   ediyordu. Panelde en kucuk punto tek kaynaktan gelir. */
.ws-panel small { font-size:var(--ws-punto-min); }
.ws-panel code, .ws-panel .etiket-cip {
  font-family:'Space Mono', ui-monospace, monospace; font-size:13px; font-weight:600;
  background:var(--ws-surface-3); border:1px solid var(--ws-line);
  border-radius:6px; padding:3px 7px; color:var(--ws-ink-2);
}

/* 3.8 Toast — flash mesajlari (alert kullanilmaz) */
.ws-panel .flash-alan {
  position:fixed; bottom:24px; left:50%; transform:translateX(-50%);
  z-index:60; display:flex; flex-direction:column; gap:8px; align-items:center;
  pointer-events:none; margin:0; padding:0;
}
.ws-panel .flash {
  background:var(--ws-ink); color:var(--ws-bg); border:0; border-radius:10px;
  padding:12px 18px; font-size:13.5px; font-weight:600; box-shadow:0 8px 24px rgba(0,0,0,.18);
  animation:wsToast .2s ease both; margin:0; max-width:min(90vw, 60ch);
}
.ws-panel .flash-hata, .ws-panel .flash-error, .ws-panel .flash-uyari {
  background:var(--ws-hata-bg); color:var(--ws-hata-fg); border:1px solid var(--ws-yikici-kenar);
}

/* Blok 34: bos TABLO satiri — bos govde yerine anlamli mesaj (tur denetimi:
   4 yonetim listesi bos oldugunda ekranda hicbir sey yazmiyordu). */
.ws-panel tbody tr.ws-bos-satir > td { text-align:center; padding:28px 16px; }
.ws-panel tbody tr.ws-bos-satir:hover > td { background:transparent; }

/* Bos durum (README §6) */
.ws-panel .bos-durum {
  background:var(--ws-surface); border:1px solid var(--ws-line); border-radius:var(--ws-r-kart);
  padding:60px 24px; text-align:center; margin:0 0 16px; box-shadow:none;
}
.ws-panel .bos-durum h3 {
  font-family:'Archivo Black', sans-serif; font-size:22px; letter-spacing:-0.01em;
  margin:0; text-transform:none;
}
.ws-panel .bos-durum p { color:var(--ws-muted); font-size:14px; margin:10px auto 20px; max-width:44ch; }

/* ---------- 4. KOKPIT (README §5.1) ---------- */
.ws-panel .kokpit-izgara {
  display:grid; grid-template-columns:repeat(4, minmax(0,1fr)); gap:14px; margin:0 0 18px;
}
.ws-panel .kokpit-kart {
  display:flex; flex-direction:column; gap:4px; text-align:left; text-decoration:none;
  background:var(--ws-surface); border:1px solid var(--ws-line); border-radius:var(--ws-r-kart);
  padding:16px 16px 14px; color:var(--ws-ink); cursor:pointer;
  transition:border-color .15s, box-shadow .15s; box-shadow:none; transform:none;
}
.ws-panel .kokpit-kart:hover {
  border-color:var(--ws-ink); box-shadow:0 2px 0 var(--ws-ink);
  background:var(--ws-surface); transform:none;
}
.ws-panel .kokpit-sayi {
  font-family:'Archivo Black', sans-serif; font-size:30px; line-height:1;
  letter-spacing:-0.02em; color:var(--ws-ink);
}
.ws-panel .kokpit-kart.acil { background:var(--ws-surface); }
.ws-panel .kokpit-kart.acil .kokpit-sayi { color:var(--ws-pink-hover); }
.ws-panel .kokpit-baslik {
  font-family:inherit; font-size:13.5px; font-weight:600; margin-top:6px;
  text-transform:none; letter-spacing:0; color:var(--ws-ink);
}
.ws-panel .kokpit-alt { font-family:inherit; font-size:12px; color:var(--ws-muted-2); }

/* Dashboard tile'lari (mevcut /admin kutulari) */
.ws-panel .panel-menu { display:grid; grid-template-columns:repeat(auto-fill, minmax(210px,1fr)); gap:10px; }
.ws-panel .panel-menu-tile {
  display:flex; flex-direction:column; gap:3px; padding:13px 14px; text-decoration:none;
  background:var(--ws-surface-2); border:1px solid var(--ws-line-2); border-radius:10px;
  color:var(--ws-ink); transition:border-color .15s, background .15s;
}
.ws-panel .panel-menu-tile:hover { border-color:var(--ws-ink); background:var(--ws-surface); color:var(--ws-ink); }
.ws-panel .tile-ad { font-size:13.5px; font-weight:600; display:flex; align-items:center; gap:7px; }
.ws-panel .tile-alt { font-size:12px; color:var(--ws-muted-2); }

/* KPI kartlari (README §5.7) */
.ws-panel .ws-kpi-izgara { display:grid; grid-template-columns:repeat(4, minmax(0,1fr)); gap:14px; margin:0 0 16px; }
.ws-panel .ws-kpi { background:var(--ws-surface); border:1px solid var(--ws-line); border-radius:var(--ws-r-kart); padding:16px; }
.ws-panel .ws-kpi-ad { font-size:12px; letter-spacing:.06em; text-transform:uppercase; color:var(--ws-muted-2); font-weight:600; }
.ws-panel .ws-kpi-deger { font-family:'Archivo Black', sans-serif; font-size:26px; letter-spacing:-0.02em; margin-top:8px; }
.ws-panel .ws-kpi-alt { font-size:12.5px; color:var(--ws-muted); margin-top:4px; }

/* ---------- 5. TOPLU ISLEM BARI (README §6) ---------- */
.ws-panel .toplu-cubuk {
  padding:10px 16px; background:var(--ws-pink-soft); border:0;
  border-top:1px solid #F6D3E0; border-bottom:1px solid #F6D3E0;
  display:flex; align-items:center; gap:12px; flex-wrap:wrap;
  box-shadow:none; border-radius:0; margin:0;
}
.ws-panel .toplu-cubuk .toplu-sayac, .ws-panel .toplu-cubuk strong {
  font-size:13px; font-weight:600; color:var(--ws-pink-deep);
}
.ws-panel .toplu-cubuk .btn {
  height:30px; padding:0 11px; border-radius:7px; font-size:12.5px;
  background:var(--ws-surface); border-color:#E9B9CC; color:var(--ws-pink-deep);
}
.ws-panel .toplu-cubuk .btn:hover { background:#FCE3EC; }
.ws-panel .toplu-cubuk select { height:30px; font-size:12.5px; width:auto; }
.ws-panel .toplu-sutun { width:38px; }

/* ---------- 6. GIRIS EKRANI (README §5.12) ---------- */
body.ws-giris { margin:0; background:var(--ws-ink); }
.ws-giris .ws-giris-kabuk { min-height:100vh; display:grid; grid-template-columns:1.05fr 1fr; }
.ws-giris .ws-giris-sol {
  padding:56px 64px; display:flex; flex-direction:column; justify-content:space-between;
  background:var(--ws-ink); color:var(--ws-bg);
}
.ws-giris .ws-giris-marka { font-family:'Archivo Black', sans-serif; font-size:26px; letter-spacing:-0.01em; color:var(--ws-bg); text-decoration:none; }
.ws-giris .ws-giris-marka .nokta { color:var(--ws-pink); }
.ws-giris .ws-giris-slogan { font-family:'Archivo Black', sans-serif; font-size:52px; line-height:.98; letter-spacing:-0.02em; }
.ws-giris .ws-giris-alt-metin { color:var(--ws-disabled); font-size:15px; line-height:1.55; margin:20px 0 0; max-width:19ch; }
.ws-giris .ws-giris-surum { display:flex; gap:24px; font-size:13px; color:var(--ws-muted); }
.ws-giris .ws-giris-sag { background:var(--ws-bg); display:flex; align-items:center; justify-content:center; padding:40px; }
.ws-giris .ws-giris-kart {
  width:100%; max-width:380px; background:var(--ws-surface); border:1px solid var(--ws-line);
  border-radius:14px; padding:32px;
}
.ws-giris .ws-giris-kart h1 {
  font-family:'Archivo Black', sans-serif; font-size:22px; letter-spacing:-0.01em;
  margin:0 0 18px; text-transform:none;   /* site.css h1 uppercase */
}
.ws-giris .ws-giris-kart .form-alan { margin-bottom:14px; }
.ws-giris .ws-giris-kart label { line-height:1.4; }
.ws-giris .ws-giris-kart input[type="radio"],
.ws-giris .ws-giris-kart input[type="checkbox"] { flex:0 0 auto; }
.ws-giris .ws-giris-kart .ws-giris-aciklama { color:var(--ws-muted); font-size:14px; margin:8px 0 26px; }
.ws-giris .ws-giris-kart input { height:44px; }
.ws-giris .ws-giris-kart .btn { height:46px; width:100%; font-size:15px; }
.ws-giris .ws-giris-dipnot {
  margin-top:22px; padding-top:18px; border-top:1px solid var(--ws-line-2);
  font-size:12.5px; color:var(--ws-muted-2); line-height:1.6;
}
/* Blok 36: grid ogelerinin varsayilan min-width:auto degeri, icerideki uzun
   sozcuk/satiri kucultmeye izin vermez ve TRACK'i viewport'tan genis yapar —
   375px'te sayfa 16px yatay kayiyordu (canli olcum). min-width:0 + kelime
   kirilimi bunu keser. */
.ws-giris .ws-giris-kabuk > * { min-width:0; }
.ws-giris .ws-giris-slogan { overflow-wrap:anywhere; }

@media (max-width:900px) {
  .ws-giris .ws-giris-kabuk { grid-template-columns:1fr; }
  .ws-giris .ws-giris-sol { padding:36px 28px; gap:28px; }
  .ws-giris .ws-giris-slogan { font-size:36px; }
}
@media (max-width:420px) {
  /* Dar telefonda yan bosluklar kartin nefes alanini yiyordu */
  .ws-giris .ws-giris-sol { padding:28px 18px; }
  .ws-giris .ws-giris-sag { padding:24px 18px; }
  .ws-giris .ws-giris-kart { padding:22px 18px; }
  .ws-giris .ws-giris-slogan { font-size:30px; }
  .ws-giris .ws-giris-surum { gap:12px; flex-wrap:wrap; }
}

/* ---------- 7. BLOK 29 EKRANLARI (yeni katmana uyarlama) ---------- */
.ws-panel .kohort-hucre.isi-0 { background:var(--ws-surface); color:var(--ws-muted-2); }
.ws-panel .kohort-hucre.isi-1 { background:#FDEBF1; color:var(--ws-ink); }
.ws-panel .kohort-hucre.isi-2 { background:#FAD3E0; color:var(--ws-ink); }
.ws-panel .kohort-hucre.isi-3 { background:#F5A8C2; color:var(--ws-ink); }
/* Blok 34: beyaz metin bu iki tonda AA altiydi (3.05 / 4.10). isi-4 koyu
   murekkeple, isi-5 bir ton koyu pembeyle okunur hale getirildi. */
.ws-panel .kohort-hucre.isi-4 { background:#EE6494; color:var(--ws-ink); }
.ws-panel .kohort-hucre.isi-5 { background:var(--ws-pink-hover); color:#fff; }
.ws-panel .kohort-hucre.kohort-bos { background:transparent; color:var(--ws-disabled); }

/* ---------- 8. DUYARLILIK ----------
   Blok 32: bu bolum YENIDEN YAZILDI. Onceki hali README §6'dan yazilmis ve
   HIC DAR VIEWPORT'TA KOSULMAMISTI (Blok 30 harness'i yalniz 1440/1280 px
   kullaniyordu). Gercek iPhone'da iki hata verdi:
     (a) <=1024px'te sidebar 64px'e inip etiketleri display:none yapiyordu —
         bu bir IKON SERIDI tasarimi ama IKON YOK: link tamamen bosaliyor,
         geriye yalniz rozet kaliyordu ("yari gorunur" hal).
     (b) .ws-arama sabit genislikli flex kutuydu ve icindeki input width:100% +
         min-width:0 olmadigi icin KENDI KUTUSUNDAN TASIP butonun uzerine
         biniyordu; .ws-ustbar'da flex-wrap yoktu.
   karar: mobilde sidebar OFF-CANVAS CEKMECE (hamburger). Ikon seridi 26 menu
   ogesi icin ikon uydurmayi gerektirirdi (yeni tasarim yuzeyi) ve dokunmatikte
   tooltip calismaz. Cekmece TUM etiketleri okunur tutar ve kapaliyken TAMAMEN
   gizlidir — "yari gorunur" hal imkansiz. Geri alma: bu blok + panel_ustbar.js
   icindeki cekmece bolumu. */

@media (max-width:1280px) {
  .ws-panel .kokpit-izgara, .ws-panel .ws-kpi-izgara { grid-template-columns:repeat(2, minmax(0,1fr)); }
}

/* Ust serit: dar ekranda SARAR, ogeler kucululebilir (min-width:0) */
@media (max-width:1024px) {
  .ws-panel .ws-ustbar {
    height:auto; min-height:60px; padding:8px 14px; gap:8px 10px; flex-wrap:wrap;
  }
  .ws-panel .ws-kirinti { min-width:0; overflow:hidden; flex:1 1 auto; }
  .ws-panel .ws-kirinti-son { overflow:hidden; text-overflow:ellipsis; }
  .ws-panel .ws-ustbar-bosluk { display:none; }   /* sarma varken itici gereksiz */
  .ws-panel .ws-arama { flex:1 1 150px; width:auto; min-width:0; }
  .ws-panel .ws-yogunluk { flex:0 0 auto; white-space:nowrap; }
  /* Sarmali serit: rol sekmeleri arama kutusundan ONCE tam satiri alabilsin */
  .ws-panel .ws-baglam-sekmeler { order:-1; flex:0 0 auto; }
  .ws-panel .ws-icerik { padding:20px 14px 48px; }
}

/* Sidebar cekmecesi */
@media (max-width:1024px) {
  .ws-panel .ws-yan-dugme { display:inline-flex; }
  .ws-panel .ws-yan {
    position:fixed; top:0; left:0; height:100dvh; z-index:80;
    width:min(86vw, 300px); flex-basis:auto;
    transform:translateX(-100%); transition:transform .22s ease;
    box-shadow:none; visibility:hidden;
  }
  .ws-panel .ws-yan.acik { transform:none; visibility:visible; box-shadow:0 0 40px rgba(0,0,0,.45); }
  .ws-panel .ws-yan-ortu {
    position:fixed; inset:0; z-index:70; background:rgba(23,21,15,.5);
    opacity:0; pointer-events:none; transition:opacity .22s ease; border:0; padding:0;
  }
  .ws-panel .ws-yan-ortu.acik { opacity:1; pointer-events:auto; }
  /* Cekmece acikken govde kaymasin */
  .ws-panel.yan-acik { overflow:hidden; }
}

@media (max-width:720px) {
  .ws-panel .kokpit-izgara, .ws-panel .ws-kpi-izgara { grid-template-columns:1fr; }
  .ws-panel .ws-kirinti .ws-kirinti-grup, .ws-panel .ws-kirinti-ayirac { display:none; }
  .ws-panel .panel-baslik { flex-direction:column; align-items:flex-start; gap:12px; }
  .ws-panel .panel-aksiyon { width:100%; }
  /* Satir ici formlar dar ekranda kutudan tasmasin (sabit style genislikleri) */
  .ws-panel .islem-hucre { justify-content:flex-start; }
  .ws-panel .islem-hucre input, .ws-panel .islem-hucre select { max-width:100%; }
  .ws-panel .card, .ws-panel .ws-kart, .ws-panel .panel-grup,
  .ws-panel .filtre-bar, .ws-panel .panel-form-satir, .ws-panel .duzen-satir { padding:14px; }
}

/* Cok dar (<=560px): arama kendi satirina insin, kirinti tek satir kalsin */
@media (max-width:560px) {
  .ws-panel .ws-arama { flex:1 1 100%; order:3; }
  .ws-panel .ws-yogunluk { order:2; }
  .ws-panel .ws-icerik { padding:16px 12px 44px; }
  .ws-panel .panel-baslik h1 { font-size:24px; }
  .ws-panel .bos-durum { padding:36px 16px; }
}

/* Tum genisliklerde: hicbir sey govdeyi yatay kaydirmasin */
.ws-panel .ws-govde, .ws-panel .ws-icerik, .ws-panel #panel-icerik { min-width:0; max-width:100%; }
.ws-panel img, .ws-panel video { max-width:100%; height:auto; }

/* ---------- Blok 34: DAR EKRAN ERGONOMISI ----------
   Uc-viewport turunda (375/768/1440) olculen iki kusur:

   1) SARMALSIZ TABLO GOVDEYI KAYDIRIYORDU. `.ws-tablo-sarmal` ile sarilmayan
      tablolar (odemeler/rapor/ayarlar/indirim kurali) 46-158px yatay kayma
      uretiyordu. Sablon sablon sarmal eklemek gelecekteki tabloyu KORUMAZ —
      kural buraya yazildi: dar ekranda panel tablosu KENDI icinde kayar.
   2) DOKUNMA HEDEFI 32-34px idi (parmak icin 44px onerilir). Yukseklik
      yalnizca dar ekranda buyutulur; masaustu yogunlugu (38px) korunur. */
@media (max-width:1024px) {
  .ws-panel #panel-icerik table {
    display:block; width:100%; max-width:100%; overflow-x:auto;
    -webkit-overflow-scrolling:touch;
  }
  .ws-panel #panel-icerik table > thead,
  .ws-panel #panel-icerik table > tbody,
  .ws-panel #panel-icerik table > tfoot { display:table; width:100%; }

  .ws-panel .btn, .ws-panel .ws-yan-dugme, .ws-panel .ws-yogunluk,
  .ws-panel .alt-sekme, .ws-panel button, .ws-panel .ws-accordion-dugme {
    min-height:44px;
  }
  .ws-panel .btn-kucuk { min-width:44px; }
  .ws-panel details > summary { min-height:44px; display:flex; align-items:center; }
  /* onay kutusu/radyo haric — onlarin buyumesi duzeni bozar.
     Ust bardaki ARAMA da haric: o input 34px'lik kendi kutusunu doldurur
     (height:100%); min-height vermek onu kutusundan TASIRIRDI — Blok 32'de
     tam olarak bu olmustu. Bunun yerine KUTUNUN kendisi 44px'e cikar. */
  .ws-panel input:not([type="checkbox"]):not([type="radio"]),
  .ws-panel select, .ws-panel textarea { min-height:44px; }
  .ws-panel .ws-arama { height:44px; }
  .ws-panel .ws-arama input { min-height:0; }
}

/* ---------- 9. ACCORDION (Blok 33 bölüm 4) ---------- */
.ws-panel .ws-accordion-dugme {
  background:transparent; border:0; padding:0; margin:0; cursor:pointer;
  font:inherit; color:var(--ws-ink); text-align:left; display:inline-flex;
  align-items:center; gap:7px;
}
.ws-panel .ws-accordion-dugme::before {
  content:"▸"; color:var(--ws-muted-2); font-size:var(--ws-punto-min); transition:transform .15s ease;
}
.ws-panel .ws-accordion-dugme.acik::before { transform:rotate(90deg); }
.ws-panel .ws-accordion-dugme:hover { color:var(--ws-pink-hover); }
.ws-panel .ws-accordion-dugme:focus-visible { outline:2px solid var(--ws-pink); outline-offset:2px; }
.ws-panel tr.ws-accordion-satir > td { background:var(--ws-surface-2); padding:14px 16px; }
.ws-panel tr.ws-accordion-satir:hover > td { background:var(--ws-surface-2); }
.ws-panel .seans-panel > .panel-baslik { align-items:flex-start; }
.ws-panel .seans-panel table { background:var(--ws-surface); }
