:root{
  --ink:#0f172a; --ink-2:#172033; --ink-line:#243049;
  --bg:#f4f6fb; --surface:#ffffff; --surface-2:#fbfcfe;
  --line:#e6e9f2; --line-2:#eef1f7;
  --text:#1e293b; --muted:#64748b; --muted-2:#94a3b8;
  --primary:#4f46e5; --primary-600:#4338ca; --primary-tint:#eef2ff;
  --r:14px; --r-sm:10px;
  --shadow:0 1px 2px rgba(15,23,42,.04), 0 8px 24px rgba(15,23,42,.06);
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
/* v442: menu sheet / cekmece acilirken body position:fixed oluyor, kaydirma cubugu
   kayboluyor ve sayfa 15px genisleyip YERINDEN OYNUYORDU. Gutter her zaman ayrili. */
html{scrollbar-gutter:stable}
body{font-family:'Inter',system-ui,sans-serif;background:var(--bg);color:var(--text);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}
h1,h2,h3,h4{font-family:'Plus Jakarta Sans','Inter',sans-serif;letter-spacing:-.01em}
.code,.kpi-val,.due,.v,.pk-ad,.param-val{font-family:'JetBrains Mono',monospace}
a{text-decoration:none;color:inherit}
button{font-family:inherit;cursor:pointer;border:none;background:none}
:focus-visible{outline:2px solid var(--primary);outline-offset:2px;border-radius:6px}

/* ---- düzen ---- */
.app{display:grid;grid-template-columns:248px 1fr;min-height:100vh;min-height:100dvh}
.sidebar{background:var(--ink);color:#cbd5e1;padding:20px 14px;position:sticky;top:0;height:100vh;height:100dvh;display:flex;flex-direction:column;gap:4px}
.brand{display:flex;align-items:center;gap:11px;padding:6px 8px 18px;border-bottom:1px solid var(--ink-line);margin-bottom:14px}
.brand .logo{width:36px;height:36px;border-radius:9px;background:linear-gradient(135deg,#6366f1,#4338ca);display:grid;place-items:center;color:#fff;font-family:'Plus Jakarta Sans';font-weight:800;font-size:16.5px;letter-spacing:.5px;flex-shrink:0}
.brand .logo.amblem{background:none;border-radius:0;width:38px;height:38px}
.brand .logo.amblem svg{width:38px;height:38px;filter:drop-shadow(0 0 8px rgba(99,102,241,.45))}
/* Bekleme / yükleme amblemi (giriş ikonu) */
.amblem-sp{transform-origin:center;animation:amblemNabiz 1.5s ease-in-out infinite}
@keyframes amblemNabiz{0%,100%{transform:scale(.85);opacity:.7;filter:drop-shadow(0 0 4px rgba(99,102,241,.45))}50%{transform:scale(1.1);opacity:1;filter:drop-shadow(0 0 15px rgba(99,102,241,.9))}}
.amblem-yuk{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;color:var(--muted);font-size:13px}
.amblem-yuk .amblem-sp{width:46px;height:46px}
.app-yuk{position:fixed;inset:0;z-index:9999;display:none;align-items:center;justify-content:center;background:rgba(13,14,30,.55);backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px)}
.app-yuk.acik{display:flex}
.app-yuk .amblem-sp{width:64px;height:64px}
.brand .name{font-family:'Plus Jakarta Sans';font-weight:700;color:#fff;font-size:15px;line-height:1.1}
.brand .sub{font-size:10.5px;color:#64748b;letter-spacing:.04em;text-transform:uppercase;margin-top:2px}
.nav-label{font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:#475569;padding:14px 10px 6px;font-weight:600}
.nav-item{display:flex;align-items:center;gap:11px;padding:9px 11px;border-radius:9px;color:#cbd5e1;font-weight:500;font-size:13.5px;transition:.15s}
.nav-item svg{width:18px;height:18px;flex-shrink:0;opacity:.85}
.nav-item:hover{background:var(--ink-2);color:#fff}
.nav-item.active{background:linear-gradient(90deg,rgba(99,102,241,.22),rgba(99,102,241,.06));color:#fff}
.nav-item.active svg{opacity:1;color:#a5b4fc}
.sidebar-foot{margin-top:auto;border-top:1px solid var(--ink-line);padding-top:12px}
.user-chip{display:flex;align-items:center;gap:10px;padding:7px 8px;border-radius:10px}
.avatar{width:32px;height:32px;border-radius:50%;background:#312e81;color:#c7d2fe;display:grid;place-items:center;font-weight:700;font-size:12.5px;flex-shrink:0;font-family:'Plus Jakarta Sans'}
.user-chip .nm{color:#e2e8f0;font-size:13px;font-weight:600}
.user-chip .rl{color:#64748b;font-size:11px}
.logout-btn{width:100%;text-align:center;color:#94a3b8;font-size:12.5px;padding:8px 10px;border-radius:8px}
.logout-btn:hover{background:var(--ink-2);color:#fff}

.main{display:flex;flex-direction:column;min-width:0}
.topbar{position:sticky;top:0;z-index:30;background:rgba(244,246,251,.85);backdrop-filter:blur(8px);border-bottom:1px solid var(--line);padding:14px 26px;display:flex;align-items:center;gap:16px}
.topbar-title{font-family:'Plus Jakarta Sans';font-weight:700;font-size:15px}
.hamburger{display:none;width:38px;height:38px;border-radius:10px;place-items:center;color:var(--muted);background:var(--surface);border:1px solid var(--line)}
.icon-btn{display:grid}
.content{padding:26px 34px 60px;width:100%}

.page-head{margin-bottom:20px}
.page-head h1{font-size:23px;margin:0 0 3px;font-weight:800}
.page-head .desc{color:var(--muted);font-size:13.5px}

/* ---- kartlar ---- */
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow)}
.grid{display:grid;gap:16px}
.cols-2{grid-template-columns:minmax(0,1.3fr) minmax(0,1fr)}
.panel-head{padding:16px 18px;border-bottom:1px solid var(--line-2)}
.panel-head h3{font-size:15px;margin:0;font-weight:700}
.empty{padding:30px;text-align:center;color:var(--muted)}

/* ---- KPI ---- */
.kpis{grid-template-columns:repeat(5,minmax(0,1fr));margin-bottom:18px}
.kpi{padding:17px 18px;border-radius:var(--r);background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow)}
.kpi-val{font-size:30px;font-weight:600;line-height:1}
.kpi-cap{color:var(--muted);font-size:12.5px;margin-top:6px}

/* ---- liste / satır ---- */
.thead{display:flex;align-items:center;gap:13px;padding:11px 12px;border-left:3px solid transparent;border-bottom:1px solid var(--line-2);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--muted-2)}
.tlist{padding:6px}
.trow{display:flex;align-items:center;gap:13px;padding:11px 12px;border-radius:10px;border-left:3px solid var(--pr,#cbd5e1)}
.trow:hover{background:var(--surface-2)}
.code{font-size:11.5px;color:var(--muted-2);width:108px;flex-shrink:0}
.ttl{font-weight:500;font-size:13.5px;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.col-sube{width:150px;flex-shrink:0;font-size:12.5px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.col-atanan{width:130px;flex-shrink:0;font-size:12.5px;color:var(--muted)}
/* v442: 120px cok genisti - isimlere yer birakmiyordu. Durum yalnizca renkli nokta
   ya da kisa rozet; 46px yeterli. Kazanilan alan .ttl'e (ad) gidiyor. */
.col-durum{width:46px;flex-shrink:0;text-align:center}
.pill{font-size:11px;font-weight:600;padding:3px 9px;border-radius:20px;white-space:nowrap;display:inline-block}
.due{font-size:12px;color:var(--muted);width:120px;text-align:right;flex-shrink:0}
.due.over{color:#dc2626;font-weight:600}
.link-tag{font-size:10.5px;font-weight:600;color:var(--primary-600);background:var(--primary-tint);padding:2px 7px;border-radius:6px;margin-left:6px}

/* ---- dağılım ---- */
.dist{padding:18px}
.dist-row{display:flex;align-items:center;gap:12px;margin-bottom:13px}
.dist-row .nm{width:120px;font-size:12.5px;color:var(--muted);display:flex;align-items:center;gap:7px}
.dist-row .nm i{width:8px;height:8px;border-radius:2px}
.bar{flex:1;height:8px;border-radius:6px;background:var(--line-2);overflow:hidden}
.bar span{display:block;height:100%;border-radius:6px}
.dist-row .v{font-size:12.5px;width:28px;text-align:right}

/* ---- projeler ---- */
.pgrid{grid-template-columns:repeat(3,1fr)}
.proj{padding:18px}
.proj .pcode{font-size:11px;color:var(--muted-2)}
.proj h3{font-size:15.5px;margin:7px 0 5px}
.proj .pd{color:var(--muted);font-size:12.5px;min-height:34px}
.proj .pmeta{display:flex;align-items:center;gap:10px;margin:13px 0 11px;flex-wrap:wrap}
.sube-chip{font-size:11.5px;color:var(--muted);font-weight:500}
.prog-wrap .pl{display:flex;justify-content:space-between;font-size:11.5px;color:var(--muted);margin-bottom:5px}
.prog-wrap .pl b{font-family:'JetBrains Mono';color:var(--text)}
.prog{height:7px;border-radius:5px;background:var(--line-2);overflow:hidden}
.prog span{display:block;height:100%;border-radius:5px;background:linear-gradient(90deg,#6366f1,#4338ca)}
.pvade{font-size:11.5px;color:var(--muted-2);margin-top:11px}

/* ---- parametreler ---- */
.param-list{padding:6px 0}
.param-row{display:flex;align-items:center;gap:16px;padding:12px 18px;border-bottom:1px solid var(--line-2)}
.param-row:last-child{border-bottom:none}
.param-key{flex:1}
.pk-ad{font-size:13px;font-weight:600}
.pk-ac{font-size:11.5px;color:var(--muted-2);font-family:'Inter'}
.param-val{font-size:13px;color:var(--text);background:var(--surface-2);border:1px solid var(--line);padding:6px 12px;border-radius:8px;max-width:320px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* ---- butonlar ---- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:10px 16px;border-radius:10px;font-weight:600;font-size:13.5px;transition:.15s}
.btn-primary{background:var(--primary);color:#fff}
.btn-primary:hover{background:var(--primary-600)}

/* ---- giriş ekranı ---- */
.login-body{display:grid;place-items:center;min-height:100vh;min-height:100dvh;background:linear-gradient(135deg,#0f172a,#1e1b4b)}
.login-card{background:var(--surface);border-radius:18px;padding:32px;width:380px;max-width:92vw;box-shadow:0 20px 60px rgba(0,0,0,.3)}
.login-brand{display:flex;align-items:center;gap:11px;margin-bottom:22px}
.login-brand .logo{width:38px;height:38px;border-radius:10px;background:linear-gradient(135deg,#6366f1,#4338ca);display:grid;place-items:center;color:#fff;font-family:'Plus Jakarta Sans';font-weight:800}
.login-brand .name{font-family:'Plus Jakarta Sans';font-weight:700;font-size:16px}
.login-brand .sub{font-size:10.5px;color:var(--muted);letter-spacing:.04em;text-transform:uppercase}
.login-card h1{font-size:20px;margin:0 0 4px}
.login-desc{color:var(--muted);font-size:13px;margin:0 0 20px}
.login-field{margin-bottom:14px}
.login-field label{display:block;font-size:12.5px;font-weight:600;margin-bottom:6px}
/* Tüm proje geneli standart metin kutusu (sınıflı özel kutular kendi stilini korur) */
input[type=text],input[type=email],input[type=password],input[type=number],input[type=search],input[type=url],input[type=tel],input[type=date],input[type=datetime-local],input[type=time],input:not([type]),textarea,select{
  padding:10px 12px;border:1px solid var(--line);border-radius:9px;font-size:13.5px;font-family:inherit;color:var(--text);background:var(--surface);box-sizing:border-box
}
textarea{resize:vertical}
input[type=text]:focus,input[type=email]:focus,input[type=password]:focus,input[type=number]:focus,input[type=search]:focus,input[type=url]:focus,input[type=tel]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=time]:focus,input:not([type]):focus,textarea:focus,select:focus{
  outline:none;border-color:var(--primary);box-shadow:0 0 0 3px rgba(79,70,229,.12)
}
/* Tüm proje geneli standart dosya seçme kutusu */
input[type=file]{
  font-family:inherit;font-size:13px;color:var(--muted);cursor:pointer;
  border:1px solid var(--line);border-radius:9px;background:var(--surface);
  padding:5px 10px 5px 5px;box-sizing:border-box;max-width:100%
}
input[type=file]::file-selector-button{
  font-family:inherit;font-size:12.5px;font-weight:600;cursor:pointer;
  border:none;border-radius:7px;padding:8px 14px;margin-right:12px;
  background:var(--primary);color:#fff;transition:filter .15s
}
input[type=file]::file-selector-button:hover{filter:brightness(.92)}
input[type=file]::-webkit-file-upload-button{
  font-family:inherit;font-size:12.5px;font-weight:600;cursor:pointer;
  border:none;border-radius:7px;padding:8px 14px;margin-right:12px;background:var(--primary);color:#fff
}
.login-field input{width:100%;padding:11px 13px;border:1px solid var(--line);border-radius:10px;font-size:14px;font-family:inherit}
.login-submit{width:100%;margin-top:6px;padding:12px}
.login-error{background:#fef2f2;color:#b91c1c;border:1px solid #fecaca;padding:10px 13px;border-radius:10px;font-size:13px;margin-bottom:16px}

/* ---- responsive ---- */
@media (max-width:1080px){.kpis{grid-template-columns:repeat(2,1fr)}.cols-2{grid-template-columns:1fr}.pgrid{grid-template-columns:repeat(2,1fr)}}
@media (max-width:900px){
  .app{grid-template-columns:1fr}
  .sidebar{position:fixed;left:0;top:0;z-index:75;width:248px;transform:translateX(-100%);transition:transform .25s}
  .sidebar.open{transform:none;box-shadow:0 20px 60px rgba(0,0,0,.3)}
  .hamburger{display:grid}
  .content{padding:18px 16px 40px}
  .topbar{padding:12px 16px}
  .scrim.show{display:block;position:fixed;inset:0;background:rgba(15,23,42,.35);z-index:74}
}
.scrim{display:none}
@media (max-width:700px){.col-sube,.col-atanan{display:none}.thead .col-sube,.thead .col-atanan{display:none}}
@media (max-width:560px){.pgrid{grid-template-columns:1fr}.kpis{grid-template-columns:repeat(2,1fr)}.code{display:none}}

/* ---- formlar (ekleme/düzenleme) ---- */
.head-row{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap}
.btn-ghost{background:var(--surface);border:1px solid var(--line);color:var(--text)}
.btn-ghost:hover{border-color:#cbd5e1}
.btn-danger{background:#fff;border:1px solid #fecaca;color:#dc2626}
.btn-danger:hover{background:#fef2f2}
.form-card{padding:24px;position:relative}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px 20px}
.form-field{display:flex;flex-direction:column;gap:6px}
.form-field.full{grid-column:1 / -1}
.form-field label{font-size:12.5px;font-weight:600;color:var(--text)}
.form-field input,.form-field select,.form-field textarea{
  padding:10px 12px;border:1px solid var(--line);border-radius:9px;font-size:13.5px;
  font-family:inherit;color:var(--text);background:var(--surface);width:100%
}
.form-field textarea{resize:vertical}
.form-field input:focus,.form-field select:focus,.form-field textarea:focus{
  outline:none;border-color:var(--primary);box-shadow:0 0 0 3px rgba(79,70,229,.12)
}
.form-actions{display:flex;align-items:center;gap:10px;margin-top:22px;padding-top:18px;border-top:1px solid var(--line-2)}
.sil-form{position:absolute;right:24px;bottom:24px}
.form-error{color:#b91c1c;font-size:13px;margin-bottom:14px}
.form-error ul{margin:0;padding-left:18px}
.form-error:empty{display:none}
.trow{cursor:pointer;text-decoration:none}
a.proj{display:block;text-decoration:none;transition:box-shadow .15s,transform .1s}
a.proj:hover{box-shadow:0 10px 30px rgba(15,23,42,.10);transform:translateY(-1px)}
@media (max-width:700px){.form-grid{grid-template-columns:1fr}.sil-form{position:static;margin-top:12px}}

.validation-summary-valid{display:none}

/* ---- roller / kullanıcı yönetimi / ek form öğeleri ---- */
.btn-success{background:#16a34a;color:#fff}
.btn-success:hover{background:#15803d}
.form-side-actions{display:flex;gap:10px;margin-top:16px;padding-top:16px;border-top:1px solid var(--line-2)}
.form-hint{font-size:11.5px;color:var(--muted-2)}
.check-line{display:flex;align-items:center;gap:8px;font-weight:500;font-size:13.5px;padding-top:6px}
.check-line input{width:16px;height:16px}
.form-field select[multiple]{height:auto;min-height:130px;padding:6px}
.col-eposta{width:200px;flex-shrink:0;font-size:12.5px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.col-rol{width:140px;flex-shrink:0}
@media (max-width:700px){.col-eposta,.col-rol{display:none}.thead .col-eposta,.thead .col-rol{display:none}}
.col-kod{width:96px;flex-shrink:0}
.col-kod code{font-family:'JetBrains Mono';font-size:11.5px;color:var(--muted-2)}
.col-tur{width:118px;flex-shrink:0}
.col-sehir{width:120px;flex-shrink:0;font-size:12.5px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.col-bolge{width:130px;flex-shrink:0;font-size:12.5px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.col-sorumlu{width:180px;flex-shrink:0;font-size:12.5px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.col-aciklama{flex:1;min-width:0;font-size:12.5px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding-right:12px}
.col-kullanici{width:120px;flex-shrink:0;font-size:12.5px;color:var(--muted)}
.col-departman{width:200px;flex-shrink:0;font-size:12.5px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@media (max-width:900px){.col-departman,.thead .col-departman{display:none}}
.col-op{width:150px;flex-shrink:0;font-size:12.5px;color:var(--muted)}
select.multi{height:auto;min-height:128px;padding:6px;line-height:1.7}
.gorev-ekle-form{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-top:12px;padding-top:12px;border-top:1px dashed var(--line)}
.gorev-ekle-form input[type=text]{flex:1;min-width:170px}
.gorev-ekle-form input[type=text],.gorev-ekle-form select,.gorev-ekle-form input[type=datetime-local]{padding:8px 10px;border:1px solid var(--line);border-radius:9px;font:inherit;font-size:13px;background:#fff}
.gorev-ekle-form .btn{flex:0 0 auto}
@media (max-width:700px){.col-kod,.col-tur,.col-sehir,.col-bolge,.col-sorumlu,.col-op{display:none}.thead .col-kod,.thead .col-tur,.thead .col-sehir,.thead .col-bolge,.thead .col-sorumlu,.thead .col-op{display:none}}

/* ---- gösterge paneli: iş akışı şeridi ---- */
.pipeline{display:flex;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);overflow:hidden;margin-bottom:18px;box-shadow:var(--shadow)}
.pipe-step{flex:1;padding:14px 16px;border-right:1px solid var(--line-2);position:relative}
.pipe-step:last-child{border-right:none}
.pipe-step::before{content:"";position:absolute;left:0;top:0;height:3px;width:100%;background:var(--c)}
.pipe-lbl{font-size:11.5px;color:var(--muted);font-weight:500;display:flex;align-items:center;gap:6px}
.pipe-lbl i{width:7px;height:7px;border-radius:2px;background:var(--c);display:inline-block}
.pipe-num{font-family:'JetBrains Mono';font-size:23px;font-weight:600;margin-top:5px}
@media(max-width:700px){.pipeline{flex-wrap:wrap}.pipe-step{flex:1 1 33%;border-bottom:1px solid var(--line-2)}}

/* ---- talep ekleri ---- */
.ek-list{display:flex;flex-direction:column;gap:8px;margin-bottom:14px}
.ek-row{display:flex;align-items:center;gap:11px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:var(--surface-2)}
.ek-ico{width:18px;height:18px;color:var(--muted);flex-shrink:0}
.ek-ad{flex:1;font-size:13.5px;font-weight:500;color:var(--primary-600);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ek-ad:hover{text-decoration:underline}
.ek-boyut{font-size:11.5px;color:var(--muted-2);font-family:'JetBrains Mono'}
.ek-sil button{width:26px;height:26px;border-radius:7px;color:var(--muted-2);font-size:13px}
.ek-sil button:hover{background:#fef2f2;color:#dc2626}
.ek-bos{color:var(--muted);font-size:13px;padding:8px 0 14px}
.ek-yukle{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding-top:14px;border-top:1px solid var(--line-2)}
.ek-yukle input[type=file]{font-size:13px}

/* ---- raporlar ---- */
.rapor-kart{display:block;text-decoration:none;color:inherit;transition:border-color .15s,box-shadow .15s}
.rapor-kart:hover{border-color:var(--primary);box-shadow:0 4px 14px rgba(0,0,0,.06)}
.rapor-kart h3{margin:0 0 6px;font-family:'Plus Jakarta Sans';font-size:15px}
.rapor-kart p{margin:0;color:var(--muted);font-size:13px;line-height:1.5}
.rapor-head{margin-bottom:14px}
.rapor-head h1{font-family:'Plus Jakarta Sans';font-size:22px;margin:0 0 4px}
.rapor-meta{color:var(--muted);font-size:12.5px}
.rapor-vurgu{display:flex;align-items:center;gap:10px;padding:9px 16px;border:1px solid var(--line);border-radius:12px;background:var(--surface);box-shadow:var(--shadow)}
.rapor-vurgu .rv-cap{font-size:11.5px;color:var(--muted)}
.rapor-vurgu .rv-val{font-family:'JetBrains Mono';font-size:24px;font-weight:600;color:var(--primary);line-height:1}
.filter-bar{display:flex;align-items:flex-end;gap:12px;flex-wrap:wrap;margin-bottom:16px}
.filter-bar .form-field{margin:0}
.filter-bar .form-field label{display:block;font-size:11.5px;color:var(--muted);margin-bottom:4px}
/* Filtre/arama satırı: TÜM kontroller 42px → etiketler üstte, kontroller altta hizalı (kayma giderildi) */
.filter-bar .form-field>input,.filter-bar .form-field>select,.filter-bar>.select,.filter-bar>.btn,.filter-bar>a.btn,.filter-bar .flt-temizle{height:42px;box-sizing:border-box}
.rapor-tablo{width:100%;border-collapse:collapse;font-size:13.5px}
.rapor-tablo th,.rapor-tablo td{text-align:left;padding:10px 12px;border-bottom:1px solid var(--line-2)}
.rapor-tablo th{font-size:11.5px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);font-weight:600;background:var(--surface-2)}
.rapor-tablo td.num,.rapor-tablo th.num{text-align:right;font-family:'JetBrains Mono'}
.rapor-tablo tr.toplam td{border-top:2px solid var(--line);font-weight:700;background:var(--surface-2)}
.rapor-tablo td.bos{text-align:center;color:var(--muted);padding:24px}
.ilerleme-bar{display:inline-block;width:90px;height:7px;border-radius:4px;background:var(--line);overflow:hidden;vertical-align:middle}
.ilerleme-bar span{display:block;height:100%;background:var(--primary);border-radius:4px}
.ilerleme-yuzde{font-family:'JetBrains Mono';font-size:12px;margin-left:8px;vertical-align:middle}

/* ---- yazdırma / PDF ---- */
@media print{
  .sidebar,.topbar,.scrim,.no-print{display:none !important}
  .app{display:block}
  .main{margin:0}
  .content{padding:0}
  body{background:#fff}
  .card{box-shadow:none;border:1px solid #ccc;break-inside:avoid}
  .rapor-tablo th{background:#f1f1f1 !important;-webkit-print-color-adjust:exact;print-color-adjust:exact}
  .pill{-webkit-print-color-adjust:exact;print-color-adjust:exact}
  a[href]:after{content:""}
}

/* ---- sayfalama ---- */
.pager{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:16px;flex-wrap:wrap}
.pager-info{font-size:12.5px;color:var(--muted)}
.pager-btns{display:flex;gap:8px;flex-wrap:wrap}
.pager-btns .btn{padding:6px 12px;font-size:13px}

/* ---- raporlar: yeni tasarım ---- */
.kpis-4{display:grid;gap:14px;grid-template-columns:repeat(4,1fr);margin-bottom:18px}
@media(max-width:900px){.kpis-4{grid-template-columns:repeat(2,1fr)}}

.rapor-grid{display:grid;gap:16px;grid-template-columns:repeat(2,1fr)}
@media(max-width:820px){.rapor-grid{grid-template-columns:1fr}}
.rapor-kart{display:flex;align-items:flex-start;gap:16px;padding:20px;text-decoration:none;color:inherit;position:relative;overflow:hidden;transition:border-color .15s,box-shadow .15s,transform .15s}
.rapor-kart::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--rc,var(--primary))}
.rapor-kart:hover{border-color:var(--rc,var(--primary));box-shadow:0 8px 22px rgba(15,23,42,.08);transform:translateY(-1px)}
.rk-ico{flex-shrink:0;width:46px;height:46px;border-radius:12px;display:grid;place-items:center;color:var(--rc,var(--primary));background:#f1f5f9}
.rk-ico svg{width:23px;height:23px}
.rk-body{flex:1;min-width:0}
.rk-body h3{margin:0 0 5px;font-family:'Plus Jakarta Sans';font-size:15.5px}
.rk-body p{margin:0;color:var(--muted);font-size:13px;line-height:1.5}
.rk-go{align-self:center;flex-shrink:0;color:var(--rc,var(--primary));font-size:12.5px;font-weight:600;white-space:nowrap}
@media(max-width:820px){.rk-go{display:none}}

/* mini çubuk (rapor tabloları) */
.rapor-tablo th.grafik,.rapor-tablo td.grafik{width:180px}
.mini-bar{display:flex;height:10px;width:160px;background:var(--line-2);border-radius:6px;overflow:hidden}
.mini-bar span{display:block;height:100%}
.mini-acik{background:var(--primary)}
.mini-kapali{background:#94a3b8}
.rapor-aciklama{margin-top:10px;font-size:12px;color:var(--muted);display:flex;align-items:center;gap:6px}
.lej{display:inline-block;width:11px;height:11px;border-radius:3px;vertical-align:middle}
.lej.acik{background:var(--primary)}
.lej.kapali{background:#94a3b8}

@media print{
  .mini-bar span,.ilerleme-bar span{-webkit-print-color-adjust:exact;print-color-adjust:exact}
}

/* ---- rapor: yatay kaydırma + geciken rozeti ---- */
.tablo-kaydir{overflow-x:auto}
.geciken-rozet{display:inline-block;min-width:22px;padding:1px 7px;border-radius:20px;background:#fef2f2;color:#dc2626;font-weight:600;font-size:12px}

/* ---- anlık filtre çubuğu: Temizle + Yazdır sağa ---- */
.filter-bar .flt-temizle{margin-left:auto}

/* ---- üst çubuk: arama + aksiyonlar (prototip) ---- */
.search{flex:1;max-width:440px;position:relative}
.search input{width:100%;padding:9px 12px 9px 36px;border:1px solid var(--line);border-radius:10px;background:var(--surface);font-size:13.5px;color:var(--text);font-family:inherit}
.search input::placeholder{color:var(--muted-2)}
.search svg{position:absolute;left:11px;top:50%;transform:translateY(-50%);width:16px;height:16px;color:var(--muted-2)}
.top-actions{margin-left:auto;display:flex;align-items:center;gap:8px}

/* ---- araç çubuğu + segment geçişi ---- */
.toolbar{display:flex;align-items:center;gap:10px;margin-bottom:16px;flex-wrap:wrap}
.seg{display:inline-flex;background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:3px}
.seg-btn{display:inline-flex;align-items:center;gap:6px;padding:7px 13px;border-radius:7px;font-size:13px;font-weight:600;color:var(--muted);text-decoration:none}
.seg-btn.on{background:var(--primary-tint);color:var(--primary-600)}
.seg-btn svg{width:15px;height:15px}
.select{padding:8px 12px;border:1px solid var(--line);border-radius:10px;background:var(--surface);font-size:13px;color:var(--text);font-family:inherit}

/* ---- Kanban panosu (prototip) ---- */
.kanban{display:grid;grid-template-columns:repeat(5,minmax(248px,1fr));gap:14px;overflow-x:auto;overscroll-behavior-x:contain;padding-bottom:8px}
.kcol{background:#eef1f7;border-radius:var(--r);min-height:300px;display:flex;flex-direction:column}
.kcol-head{padding:12px 14px;border-top:3px solid var(--c);border-radius:var(--r) var(--r) 0 0;display:flex;align-items:center;justify-content:space-between;background:var(--surface);box-shadow:0 1px 0 var(--line)}
.kcol-head .t{font-weight:700;font-size:13px;display:flex;align-items:center;gap:8px}
.kcol-head .t i{width:8px;height:8px;border-radius:2px;background:var(--c)}
.kcol-head .cnt{font-family:'JetBrains Mono';font-size:12px;color:var(--muted);background:var(--line-2);padding:1px 8px;border-radius:20px}
.kcards{padding:10px;display:flex;flex-direction:column;gap:9px;flex:1;min-height:40px}
.kcol.dragover{outline:2px dashed var(--primary);outline-offset:-4px;border-radius:var(--r)}
.kcard{background:var(--surface);border:1px solid var(--line);border-left:3px solid var(--pr);border-radius:var(--r-sm);padding:12px;cursor:grab;box-shadow:0 1px 2px rgba(15,23,42,.05);transition:box-shadow .15s,transform .1s}
.kcard:hover{box-shadow:var(--shadow)}
.kcard.dragging{opacity:.5}
.kcard .kc-code{font-family:'JetBrains Mono';font-size:10.5px;color:var(--muted-2)}
.kcard .kc-ttl{display:block;font-weight:600;font-size:13px;margin:5px 0 9px;line-height:1.35;color:var(--text);text-decoration:none}
.kcard .kc-ttl:hover{color:var(--primary-600)}
.kcard .kc-foot{display:flex;align-items:center;justify-content:space-between;gap:8px}
.kcard .kc-yuzde{font-family:'JetBrains Mono';font-size:11px;color:var(--muted)}
.tag{font-size:10.5px;font-weight:600;padding:2px 8px;border-radius:6px;background:var(--line-2);color:var(--muted)}
.kc-prog{height:5px;border-radius:4px;background:var(--line-2);margin:9px 0 0;overflow:hidden}
.kc-prog span{display:block;height:100%;background:var(--primary)}
@media(max-width:700px){.kanban{grid-template-columns:repeat(5,82vw)}}

/* ---- Şablonlar (prototip .tpl) ---- */
.tpl-grid{grid-template-columns:repeat(3,1fr)}
@media(max-width:980px){.tpl-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:640px){.tpl-grid{grid-template-columns:1fr}}
.tpl{padding:18px;border-top:3px solid var(--c);display:flex;flex-direction:column;text-decoration:none;color:var(--text);transition:box-shadow .15s,transform .1s}
.tpl:hover{box-shadow:var(--shadow);transform:translateY(-2px)}
.tphd{display:flex;align-items:flex-start;gap:11px;margin-bottom:11px}
.tp-ico{width:38px;height:38px;border-radius:10px;display:grid;place-items:center;background:var(--line-2);flex-shrink:0}
.tp-ico svg{width:20px;height:20px}
.tphd h3{margin:0;font-size:15px}
.tp-kat{font-size:12px;color:var(--muted);margin-top:2px}
.tp-rozet{margin-left:auto;font-size:10.5px;font-weight:700;padding:3px 9px;border-radius:20px;background:var(--primary-tint);color:var(--primary-600)}
.tp-desc{color:var(--muted);font-size:13px;line-height:1.5;flex:1;margin:0 0 14px}
.tp-foot{display:flex;align-items:center;justify-content:space-between;margin-top:auto}
.tp-go{font-size:13px;font-weight:600;color:var(--primary-600)}

/* şablon detay içeriği */
.sb-gorev{border:1px solid var(--line);border-radius:var(--r-sm);padding:13px 15px;margin:0 0 10px}
.sb-gorev-head{display:flex;align-items:center;gap:10px}
.sb-ttl{font-weight:600;font-size:14px}
.sb-desc{color:var(--muted);font-size:12.5px;margin-top:5px}
.sb-adimlar{margin:9px 0 0;padding-left:18px;color:var(--text);font-size:13px}
.sb-adimlar li{margin:3px 0}

/* ---- Görev adımları / checklist (prototip .sheet checklist) ---- */
.checklist{display:flex;flex-direction:column;gap:2px;margin-bottom:14px}
.check-row{display:flex;align-items:center;gap:11px;padding:9px 10px;border-radius:8px;transition:background .12s}
.check-row:hover{background:var(--surface-2)}
.check-row .chk-form{display:flex;align-items:center;margin:0}
.check-row input[type=checkbox]{width:17px;height:17px;cursor:pointer;accent-color:var(--primary)}
.chk-ttl{flex:1;font-size:13.5px}
.check-row.done .chk-ttl{text-decoration:line-through;color:var(--muted-2)}
.chk-sil{margin:0}
.chk-sil button{width:24px;height:24px;border-radius:6px;color:var(--muted-2);background:transparent;font-size:13px;opacity:0;transition:.12s}
.check-row:hover .chk-sil button{opacity:1}
.chk-sil button:hover{background:#fef2f2;color:#dc2626}

/* ================= DETAY ÇEKMECESİ (sheet) ================= */
.drawer{position:fixed;inset:0;z-index:80;visibility:hidden;pointer-events:none}
.drawer.open{visibility:visible;pointer-events:auto}
.drawer-scrim{position:absolute;inset:0;background:rgba(15,23,42,.35);opacity:0;transition:opacity .25s}
.drawer.open .drawer-scrim{opacity:1}
.drawer-panel{position:absolute;top:0;right:0;height:100%;width:520px;max-width:94vw;background:var(--bg);box-shadow:var(--shadow-lg);transform:translateX(100%);transition:transform .26s cubic-bezier(.4,0,.2,1);display:flex;flex-direction:column}
.drawer.open .drawer-panel{transform:none}
.drawer-close{position:absolute;top:14px;right:16px;width:34px;height:34px;border-radius:9px;background:var(--surface);border:1px solid var(--line);color:var(--muted);font-size:15px;z-index:2}
.drawer-close:hover{color:var(--text);border-color:#cbd5e1}
.drawer-body{flex:1;overflow-y:auto;padding:22px 26px 40px}
.drawer-loading{padding:40px 0;text-align:center;color:var(--muted)}

.sheet-status{margin-bottom:10px}
.sheet-durum-cap{width:75%;height:8px;margin:0 auto 16px;border-radius:999px}
.sheet-code{font-family:'JetBrains Mono';font-size:12px;color:var(--muted-2)}
.sheet-title{font-size:20px;font-weight:800;margin:4px 0 18px;line-height:1.3}
.det-meta{display:grid;grid-template-columns:1fr 1fr;gap:15px 18px;margin-bottom:18px}
.det-meta .dm-full{grid-column:1/-1}
.dm-lbl{font-size:10.5px;font-weight:700;letter-spacing:.04em;color:var(--muted-2);margin-bottom:5px}
.dm-val{font-size:14px;color:var(--text);display:flex;align-items:center;gap:7px}
.mini-ava{width:24px;height:24px;border-radius:50%;background:var(--primary);color:#fff;display:inline-grid;place-items:center;font-size:11px;font-weight:700;flex-shrink:0;background-size:cover;background-position:center;overflow:hidden}
.prof-wrap{display:grid;grid-template-columns:280px 1fr;gap:18px;align-items:start}
.prof-card{padding:20px;text-align:center}
.prof-ava-box{display:flex;flex-direction:column;align-items:center;gap:4px}
.prof-ava{width:96px;height:96px;border-radius:50%;background-size:cover;background-position:center;background-color:var(--primary);display:inline-grid;place-items:center;color:#fff;font-weight:700;font-size:34px;font-family:'Plus Jakarta Sans'}
.prof-ad{font-weight:700;font-size:16px;margin-top:8px}
.prof-unvan{font-size:12.5px;color:var(--muted);opacity:.78}
.prof-rol{margin-top:4px}
.prof-foto-form{display:flex;gap:8px;justify-content:center;margin-top:12px}
.prof-form{padding:20px}
.panel-h{margin:0 0 14px;font-size:15px}
.user-chip{cursor:pointer;text-decoration:none;color:inherit;border-radius:10px;transition:background .15s;display:flex;align-items:center;gap:10px}
.user-chip:hover{background:rgba(255,255,255,.06)}
.eksik-rozet{margin-left:auto;background:#ef4444;color:#fff;min-width:20px;height:20px;padding:0 5px;border-radius:11px;display:inline-grid;place-items:center;font-size:11px;font-weight:700;flex-shrink:0;animation:eksikPulse 1.4s ease-in-out infinite}
@keyframes eksikPulse{0%,100%{box-shadow:0 0 0 0 rgba(239,68,68,.55);opacity:1}50%{box-shadow:0 0 0 7px rgba(239,68,68,0);opacity:.8}}
@media (max-width:760px){.prof-wrap{grid-template-columns:1fr}}

.sheet-sec{border-top:1px solid var(--line);padding-top:16px;margin-top:16px}
.sec-baslik{font-size:11px;font-weight:700;letter-spacing:.04em;color:var(--muted);margin-bottom:11px}
.sheet-desc{font-size:13.5px;line-height:1.6;color:var(--text)}
.sheet-desc.kutu{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-sm);padding:13px 15px}
.sheet-btn{width:100%;justify-content:center;margin-bottom:4px}

.durum-pills{display:flex;flex-wrap:wrap;gap:8px}
.pill-form{margin:0}
.durum-pill{padding:7px 14px;border-radius:9px;font-size:12.5px;font-weight:600;border:1.5px solid var(--dc);color:var(--dc);background:var(--surface);transition:.12s}
.durum-pill:hover{background:color-mix(in srgb,var(--dc) 10%,transparent)}
.durum-pill.on{background:var(--dc);color:#fff}

.yorum{display:flex;gap:10px;margin-bottom:12px}
.yorum-govde{flex:1}
.yorum-ust{font-size:13px}
.yorum-ust b{font-weight:600}
.yorum-zaman{color:var(--muted-2);font-size:12px}
.yorum-metin{background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:9px 12px;font-size:13.5px;margin-top:4px;line-height:1.5}
.yorum-ekle{display:flex;gap:8px;margin-top:10px}
.yorum-ekle input{flex:1;padding:9px 12px;border:1px solid var(--line);border-radius:10px;font-family:inherit;font-size:13.5px}
.ek-satir{display:flex;gap:8px;margin-top:10px}
.ek-satir input{flex:1;padding:9px 12px;border:1px solid var(--line);border-radius:10px;font-family:inherit;font-size:13.5px}

.gecmis{display:flex;flex-direction:column;gap:13px}
.gecmis-satir{display:flex;gap:11px}
.gecmis-nokta{width:9px;height:9px;border-radius:50%;margin-top:5px;flex-shrink:0}
.gecmis-metin{font-size:13.5px}
.gecmis-alt{font-size:12px;color:var(--muted-2);margin-top:2px}

@media(max-width:560px){.det-meta{grid-template-columns:1fr 1fr}.drawer-panel{width:100%}}

/* ================= SOL MENÜ ROZETLERİ ================= */
.nav-badge{margin-left:auto;background:#4f46e5;color:#fff;font-size:11px;font-weight:700;min-width:22px;height:20px;border-radius:10px;display:inline-grid;place-items:center;padding:0 7px}
.nav-item.active .nav-badge{background:#fff;color:#1e1b4b}

/* ================= TOPBAR ZİL / BİLDİRİM ================= */
.top-actions{margin-left:auto;display:flex;align-items:center;gap:10px}
.bell-wrap{position:relative}
.bell-btn{position:relative}
.bell-dot{position:absolute;top:-4px;right:-4px;background:#ef4444;color:#fff;font-size:10px;font-weight:700;min-width:17px;height:17px;border-radius:9px;display:grid;place-items:center;padding:0 4px;border:2px solid var(--bg)}
.bell-menu{position:absolute;top:46px;right:0;width:340px;max-width:90vw;background:var(--bg);border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow-lg);opacity:0;visibility:hidden;transform:translateY(-6px);transition:.16s;z-index:70}
.bell-menu.open{opacity:1;visibility:visible;transform:none}
.bell-head{display:flex;align-items:center;justify-content:space-between;padding:13px 16px;border-bottom:1px solid var(--line)}
.bell-head b{font-size:14px}
.bell-mini{background:none;border:none;color:var(--primary);font-size:12px;font-weight:600;cursor:pointer}
.bell-list{max-height:360px;overflow-y:auto}
.kc-toplu{display:flex;gap:8px;padding:4px 10px 8px;border-bottom:1px solid var(--line);margin-bottom:4px}
.bs-mini{background:var(--surface-2);border:1px solid var(--line);border-radius:7px;padding:5px 10px;font-size:12px;cursor:pointer;color:var(--text)}
.bs-mini:hover{background:var(--line)}
.bs-bos-liste{padding:20px 14px;text-align:center;color:var(--muted);font-size:13px}
.oncelik-htr{display:inline-flex;align-items:center;gap:4px;font-size:12px;white-space:nowrap;color:var(--muted);cursor:pointer}
.bell-grup{border-left:3px solid var(--gr,#cbd5e1);margin:6px 6px 0;border-radius:0 8px 8px 0;overflow:hidden}
.bell-grup-bas{font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--gr,#64748b);padding:7px 12px 3px}
.bell-grup .bell-item{padding-left:12px}
.bell-grup .bell-item:last-child{border-bottom:none}
.bell-item{display:flex;align-items:flex-start;gap:11px;padding:11px 16px;border-bottom:1px solid var(--line);text-decoration:none;color:inherit;transition:background .12s}
.bell-item:hover{background:var(--surface-2)}
.bell-item.yeni{background:#fafaff}
.bi-ico{width:32px;height:32px;border-radius:9px;display:grid;place-items:center;flex-shrink:0}
.bi-ico svg{width:16px;height:16px}
.bi-body{display:flex;flex-direction:column;min-width:0;flex:1}
.bi-ttl{font-size:13px;font-weight:600;color:var(--text)}
.bi-sub{font-size:12px;color:var(--muted-2);margin-top:2px}
.bi-tm{font-size:11px;color:var(--muted-2);margin-top:3px}
.bi-dot{width:8px;height:8px;border-radius:50%;background:var(--primary);flex-shrink:0;margin-top:6px}
.bell-bos{padding:26px 16px;text-align:center;color:var(--muted-2);font-size:13px}
.bell-foot{display:block;padding:11px 16px;text-align:center;color:var(--primary);font-weight:600;font-size:13px}

/* ================= PARAMETRELER SEKMELERİ ================= */
.ptabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin-bottom:20px;flex-wrap:wrap}
.ptab{background:none;border:none;padding:11px 16px;font-size:14px;font-weight:600;color:var(--muted);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px}
.ptab:hover{color:var(--text)}
.ptab.on{color:var(--primary);border-bottom-color:var(--primary)}
.ppane{display:none}
.ppane.on{display:block}

.uyari{padding:11px 16px;border-radius:10px;margin-bottom:16px;font-size:13.5px;font-weight:500}
.uyari.ok{background:#dcfce7;color:#166534;border:1px solid #bbf7d0}
.uyari.hata{background:#fee2e2;color:#991b1b;border:1px solid #fecaca}

.switch-row{display:flex;align-items:center;gap:10px;cursor:pointer;font-size:14px}
.switch-row input[type=checkbox]{appearance:none;-webkit-appearance:none;width:40px;height:23px;border-radius:20px;background:var(--line);position:relative;cursor:pointer;transition:.2s;flex-shrink:0;margin:0}
.switch-row input[type=checkbox]::after{content:"";position:absolute;top:2px;left:2px;width:19px;height:19px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.2);transition:.2s}
.switch-row input[type=checkbox]:checked{background:var(--primary)}
.switch-row input[type=checkbox]:checked::after{transform:translateX(17px)}
.switch-row.big{padding:14px 0;border-bottom:1px solid var(--line)}
.switch-row.big small{color:var(--muted-2)}

/* ----- liste yönetimi & şubeler (esnek satırlar) ----- */
.liste-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.liste-rows{display:flex;flex-direction:column;gap:9px}
.liste-row{display:flex;align-items:center;gap:10px;padding:9px 12px;border:1px solid var(--line);border-radius:10px;background:var(--surface);transition:border-color .12s}
.liste-row:hover{border-color:#cbd5e1}
.liste-row.ekle{margin-top:4px;border-style:dashed;background:var(--surface-2)}
.satir-form{display:flex;align-items:center;gap:7px;flex:1;flex-wrap:wrap;margin:0}
.satir-form input[type=text],.satir-form input:not([type]){padding:7px 10px;border:1px solid var(--line);border-radius:8px;font-family:inherit;font-size:13.5px;font-weight:500;color:var(--text);background:#fff;transition:.12s}
.satir-form input[type=text]:hover,.satir-form input:not([type]):hover{border-color:#cbd5e1}
.satir-form input[type=text]:focus,.satir-form input:not([type]):focus{background:#fff;border-color:var(--primary);outline:none}
.satir-form input[type=number]{padding:6px 6px;border:1px solid var(--line);border-radius:7px;font-family:'JetBrains Mono',monospace;font-size:12.5px;color:var(--muted)}
.satir-form input[type=color]{width:24px;height:24px;padding:0;border:1px solid var(--line);border-radius:5px;background:none;cursor:pointer;flex-shrink:0}
.f-isim{flex:1;min-width:150px}
.w-60{width:60px}.w-90{width:90px}.w-120{width:120px}
.w-htr{width:74px;text-align:center}
.htr-rows{gap:0}
.htr-rows .liste-row{border:0;border-radius:0;border-bottom:1px solid var(--line-2);background:transparent;padding:10px 2px;transition:background .12s}
.htr-rows .liste-row:last-child{border-bottom:0}
.htr-rows .liste-row:hover{border-color:transparent;background:var(--surface-2)}
.htr-rows .htr-ad{min-width:118px;display:inline-flex;align-items:center;gap:7px;font-weight:500}
.kapali-chk{display:flex;align-items:center;gap:7px;font-size:12px;color:var(--muted);white-space:nowrap}
.kapali-chk input[type=checkbox]{appearance:none;-webkit-appearance:none;width:34px;height:19px;border-radius:20px;background:var(--line);position:relative;cursor:pointer;transition:.2s;flex-shrink:0;margin:0}
.kapali-chk input[type=checkbox]::after{content:"";position:absolute;top:2px;left:2px;width:15px;height:15px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.2);transition:.2s}
.kapali-chk input[type=checkbox]:checked{background:var(--primary)}
.kapali-chk input[type=checkbox]:checked::after{transform:translateX(15px)}
.btn-sm{padding:6px 11px;font-size:12.5px}

/* ================= BİLDİRİMLER SAYFASI ================= */
.bldr-liste{display:flex;flex-direction:column}
.bldr-satir{display:flex;gap:12px;align-items:flex-start;padding:14px 4px;border-bottom:1px solid var(--line)}
.bldr-satir.yeni{background:#f5f7ff}
.bldr-nokta{width:9px;height:9px;border-radius:50%;background:#cbd5e1;margin-top:6px;flex-shrink:0}
.bldr-satir.yeni .bldr-nokta{background:var(--primary)}
.bldr-govde{flex:1}
.bldr-ust{font-size:14px}
.bldr-zaman{color:var(--muted-2);font-size:12px;font-weight:400}
.bldr-mesaj{font-size:13px;color:var(--muted);margin-top:3px}
.bldr-aksiyon{display:flex;gap:6px}

/* ================= ŞABLON EDİTÖRÜ ================= */
.tpl-gorev{border:1px solid var(--line);border-radius:12px;padding:14px 16px;margin-bottom:12px}
.tpl-gorev-bas{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}
.tpl-rozet{display:inline-block;background:#eef2ff;color:#4f46e5;font-size:11px;font-weight:600;padding:2px 8px;border-radius:6px;margin-left:6px}
.tpl-acik{font-size:13px;color:var(--muted-2);margin-top:4px}
.tpl-adimlar{margin-top:11px;padding-top:11px;border-top:1px dashed var(--line);display:flex;flex-direction:column;gap:6px}
.tpl-adim{display:flex;align-items:center;justify-content:space-between;font-size:13px;color:var(--text)}
.tpl-adim form{margin:0}
.lnk-sil{background:none;border:none;color:#cbd5e1;cursor:pointer;font-size:13px}
.lnk-sil:hover{color:#ef4444}
.tpl-adim-ekle{display:flex;gap:7px;margin-top:4px}
.tpl-adim-ekle input{flex:1;padding:7px 10px;border:1px solid var(--line);border-radius:8px;font-family:inherit;font-size:13px}
.tpl-yeni-gorev{margin-top:14px;padding-top:16px;border-top:1px solid var(--line)}
.tpl-yeni-bas{font-size:11.5px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--muted-2);margin-bottom:10px}
.tpl-gorev-form{display:flex;gap:12px;flex-wrap:wrap;align-items:flex-end}
.tpl-gorev-form .form-field{margin:0}
.tpl-gorev-form .ff-baslik{flex:2 1 240px}
.tpl-gorev-form .ff-acik{flex:2 1 200px}
.tpl-gorev-form .ff-sel{flex:1 1 160px}
.tpl-gorev-form .ff-btn{flex:0 0 auto}
.tpl-gorev-form .ff-btn .btn{white-space:nowrap}
.tpl-gorev-form .ff-num{flex:0 1 120px}
.tpl-body{padding:14px 18px}
.tpl-vade{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:11px;padding-top:11px;border-top:1px dashed var(--line)}
.tpl-vade label{font-size:12px;color:var(--muted-2);font-weight:600}
.tpl-vade input[type=number]{width:66px;padding:6px 8px;border:1px solid var(--line);border-radius:8px;font-family:inherit;font-size:13px}
.tpl-vade-info{font-size:12.5px;color:var(--primary-600);font-weight:600;margin-left:4px}
.ozet-grup{margin-bottom:13px}
.ozet-kisi{font-weight:700;font-size:13.5px;color:var(--ink)}
.ozet-say{font-weight:500;color:var(--muted)}
.ozet-list{margin:5px 0 0 20px;color:var(--text);font-size:13px;line-height:1.7}
.tp-aksiyon{display:flex;align-items:center;gap:10px}

@media(max-width:760px){.liste-grid{grid-template-columns:1fr}}

/* ================= GÖSTERGE PANELİ (prototiple birebir) ================= */
.mono{font-family:'JetBrains Mono',monospace}
/* iş akışı şeridi */
.pipeline{display:flex;gap:0;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);overflow:hidden;margin-bottom:18px}
.pipe-step{flex:1;padding:15px 16px;border-right:1px solid var(--line-2);position:relative;transition:.15s}
.pipe-step:last-child{border-right:none}
.pipe-step:hover{background:var(--surface-2)}
.pipe-step::before{content:"";position:absolute;left:0;top:0;height:3px;width:100%;background:var(--c)}
.pipe-step .lbl{font-size:11.5px;color:var(--muted);font-weight:500;display:flex;align-items:center;gap:6px}
.pipe-step .lbl i{width:7px;height:7px;border-radius:2px;background:var(--c);display:inline-block}
.pipe-step .num{font-family:'JetBrains Mono';font-size:24px;font-weight:600;margin-top:5px;color:var(--text)}
/* KPI kartları */
.kpis{grid-template-columns:repeat(5,minmax(0,1fr));margin-bottom:18px}
.kpi{padding:17px 18px;border-radius:var(--r);background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow);position:relative;overflow:hidden}
.kpi .ico{width:36px;height:36px;border-radius:10px;display:grid;place-items:center;margin-bottom:12px}
.kpi .ico svg{width:19px;height:19px}
.kpi .val{font-family:'JetBrains Mono';font-size:30px;font-weight:600;line-height:1}
.kpi .cap{color:var(--muted);font-size:12.5px;margin-top:5px}
.kpi .trend{font-size:11.5px;font-weight:600;margin-top:8px;display:inline-flex;align-items:center;gap:4px}
.trend.up{color:#16a34a}.trend.down{color:#dc2626}
/* iki kolon (sol görevler 1.4 / sağ 1) */
.dash-cols{grid-template-columns:1.4fr 1fr;align-items:start}
.link{color:var(--primary);font-weight:600;font-size:12.5px}
.link:hover{text-decoration:underline}
/* görev satırı */
.tlist{padding:6px}
.trow .code{font-family:'JetBrains Mono';font-size:11.5px;color:var(--pr,var(--muted-2));font-weight:600;width:108px;flex-shrink:0}
.trow .ttl{font-weight:500;font-size:13.5px;flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.trow .ttl-ust{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:flex;align-items:center;gap:7px}
.trow-alt{font-size:12px;font-weight:400;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pill-st{color:#fff}
/* Durum göstergesi = TÜM listelerde satır başında renkli nokta (masaüstü + mobil, gösterge paneli gibi) */
.trow .pill-st{width:10px;height:10px;min-width:10px;padding:0;border-radius:50%;font-size:0;line-height:0;flex:none;order:-1}
.av-sm{width:26px;height:26px;border-radius:50%;display:grid;place-items:center;font-size:11px;font-weight:700;color:#fff;font-family:'Plus Jakarta Sans';flex-shrink:0}
/* dağılım çubuğu */
.dist{padding:18px}
.dist-row{display:flex;align-items:center;gap:12px;margin-bottom:13px}
.dist-row:last-child{margin-bottom:0}
.dist-row .nm{width:96px;font-size:12.5px;color:var(--muted);display:flex;align-items:center;gap:7px}
.dist-row .nm i{width:8px;height:8px;border-radius:2px}
.bar{flex:1;height:8px;border-radius:6px;background:var(--line-2);overflow:hidden}
.bar span{display:block;height:100%;border-radius:6px}
.dist-row .v{font-family:'JetBrains Mono';font-size:12.5px;color:var(--text);width:28px;text-align:right}
/* aktivite akışı */
.feed{padding:8px 18px 16px}
.feed-item{display:flex;gap:12px;padding:11px 0;border-bottom:1px solid var(--line-2)}
.feed-item:last-child{border-bottom:none}
.feed-dot{width:9px;height:9px;border-radius:50%;margin-top:5px;flex-shrink:0}
.feed-item .tx{font-size:13px}.feed-item .tx b{font-weight:600}
.feed-item .tm{font-size:11.5px;color:var(--muted-2);margin-top:2px}
/* duyarlı */
@media(max-width:1080px){.dash-cols{grid-template-columns:1fr}.pipeline{flex-wrap:wrap}.pipe-step{flex:1 1 33.33%}}
@media(max-width:560px){.pipe-step{flex:1 1 50%}}
/* tıklanabilir KPI kartları */
a.kpi{text-decoration:none;color:inherit;cursor:pointer;display:block;transition:border-color .15s,box-shadow .15s,transform .15s}
a.kpi:hover{border-color:#c7d2fe;box-shadow:0 4px 16px rgba(79,70,229,.10);transform:translateY(-2px)}

/* ================= BİLDİRİMLER SAYFASI (prototip .notif) ================= */
.notif-list{display:flex;flex-direction:column;gap:9px}
.notif-grup{border-left:3px solid var(--gr,#cbd5e1);border-radius:0 12px 12px 0;padding:2px 0 4px 10px;margin-bottom:6px;display:flex;flex-direction:column;gap:9px}
.notif-grup-bas{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--gr,#64748b);padding:2px 2px 0}
.notif{display:flex;gap:12px;padding:13px 14px;border-radius:11px;background:var(--surface);border:1px solid var(--line);cursor:pointer;transition:.12s;text-decoration:none;color:inherit;align-items:flex-start}
.notif:hover{border-color:#cbd5e1}
.notif.unread{background:#fafaff;border-color:#e0e2f5}
.notif .ni{width:34px;height:34px;border-radius:9px;display:grid;place-items:center;flex-shrink:0}
.notif .ni svg{width:17px;height:17px}
.notif-body{display:flex;flex-direction:column;flex:1;min-width:0}
.notif .ntx{font-size:13px}.notif .ntx b{font-weight:600}
.notif .ntm{font-size:11.5px;color:var(--muted-2);margin-top:3px}
.notif .udot{width:8px;height:8px;border-radius:50%;background:var(--primary);flex-shrink:0;margin-top:6px}

/* ============================================================
   MOBİL BÜTÜNLÜK DÜZELTMELERİ  (dosyanın en sonu — hepsini ezer)
   ============================================================ */
/* buton ikonları her yerde sabit boyut + metin sarmasın */
.btn{white-space:nowrap}
.btn svg{width:16px;height:16px;flex-shrink:0}

@media (max-width:1080px){
  .kpis{grid-template-columns:repeat(2,1fr)}
  .dash-cols{grid-template-columns:1fr}
  .cols-2{grid-template-columns:1fr}
}
@media (max-width:760px){
  /* başlık + aksiyon dikey dizilsin, buton doğal boyutta kalsın */
  .head-row{flex-direction:column;align-items:flex-start;gap:12px}
  .pipeline{flex-wrap:wrap}
  .pipe-step{flex:1 1 33%;border-bottom:1px solid var(--line-2)}
  .pipe-step .num{font-size:20px}
}
@media (max-width:560px){
  .kpis{grid-template-columns:repeat(2,1fr)}
  .pipe-step{flex:1 1 50%}
  .page-head h1{font-size:20px}
  /* görev satırı taşmasın */
  .trow{gap:9px}
  .trow .code{display:none}
  .trow .ttl{font-size:13px}
  .trow .due{width:auto;font-size:11px;white-space:nowrap}
  .kpi .val{font-size:26px}
  .kpi .cap{font-size:12px}
}
@media (max-width:400px){
  .kpis{grid-template-columns:1fr 1fr}
  .pipe-step .lbl{font-size:11px}
}

/* kenar çubuğu hesap bağlantısı */
.hesap-link{display:block;margin-top:10px;font-size:12.5px;color:#94a3b8;text-decoration:none;text-align:center}
.hesap-link:hover{color:#fff;text-decoration:underline}

/* giriş ekranı yardımcı kutular */
.login-ok{background:#ecfdf5;border:1px solid #a7f3d0;color:#047857;padding:10px 12px;border-radius:8px;font-size:13px;margin-bottom:14px}
.login-link{display:inline-block;margin-top:14px;font-size:13px;color:var(--primary);text-decoration:none}
.login-link:hover{text-decoration:underline}

/* Google ile giriş düğmesi + ayraç */
.login-or{display:flex;align-items:center;gap:12px;margin:16px 0;color:var(--muted-2);font-size:12px}
.login-or::before,.login-or::after{content:"";flex:1;height:1px;background:var(--line)}
.google-btn{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;padding:11px 14px;border:1px solid var(--line);border-radius:10px;background:#fff;color:#1f2937;font-size:14px;font-weight:600;text-decoration:none;cursor:pointer;transition:.12s}
.google-btn:hover{background:#f8fafc;border-color:#cbd5e1}

/* iletişim ikonları (yalnızca çekmecede görünür) */
.ico-btn{display:inline-flex;align-items:center;gap:5px;vertical-align:middle;margin-left:6px;padding:3px 8px;border-radius:7px;border:1px solid var(--line);text-decoration:none;font-size:12px;font-weight:600;transition:.12s}
.ico-btn svg{width:15px;height:15px}
.ico-btn.wa{color:#16a34a}.ico-btn.wa:hover{background:#f0fdf4;border-color:#86efac}
.ico-btn.ara{color:#2563eb}.ico-btn.ara:hover{background:#eff6ff;border-color:#bfdbfe}
.iletisim-row{display:flex;gap:8px;margin:10px 0 4px;align-items:center;flex-wrap:wrap}
.iletisim-row .tel-num{margin-left:0}
.dm-kisi .iletisim-row{margin:0}
.dm-kisi{flex-direction:column;align-items:flex-start;gap:9px}
.kisi{display:flex;align-items:center;gap:9px}
.kisi-ad{line-height:1.2}
.kisi-isim{font-weight:600}
.kisi-unvan{font-size:11.5px;color:var(--muted);opacity:.7;margin-top:1px}
.iletisim-row .ico-btn{margin-left:0;padding:6px 12px;font-size:13px}
.kisi-ilet{margin-top:11px;display:flex;flex-direction:column;gap:9px;align-items:flex-start}
.kisi-tel{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:#334155;font-family:'JetBrains Mono',monospace;font-weight:600}
.kisi-tel svg{width:14px;height:14px;color:var(--muted);flex-shrink:0}
.kisi-actions{display:flex;gap:8px;flex-wrap:wrap}
.ilet-btn{display:inline-flex;align-items:center;gap:6px;padding:7px 14px;border-radius:9px;border:1px solid var(--line);text-decoration:none;font-size:13px;font-weight:600;transition:.12s;background:#fff}
.ilet-btn svg{width:16px;height:16px}
.ilet-btn.wa{color:#16a34a;border-color:#bbf7d0;background:#f0fdf4}.ilet-btn.wa:hover{background:#dcfce7}
.ilet-btn.ara{color:#2563eb;border-color:#bfdbfe;background:#eff6ff}.ilet-btn.ara:hover{background:#dbeafe}
/* avatarda profil fotoğrafı */
.avatar img{width:100%;height:100%;object-fit:cover;border-radius:50%;display:block}

/* 3 sütun (devam eden işler) */
.cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}
.isler-grid{margin-bottom:16px}
.isler-grid .card{min-width:0;overflow:hidden}
/* Panel satırlarında durum göstergesi = satır başında renkli nokta (masaüstü panelde;
   mobilde global .trow .pill-st nokta kuralı zaten geçerli) */
.isler-grid .trow .pill-st{width:10px;height:10px;min-width:10px;padding:0;border-radius:50%;font-size:0;line-height:0;flex:none;order:-1}
@media (max-width:1200px){.cols-3{grid-template-columns:1fr}}
/* liste sayfası durum şeridi (gösterge panelindeki gibi) */
.list-pipe{margin-bottom:16px}
.ayar-grup{background:var(--surface);border:1px solid var(--line);border-top:3px solid var(--gc);border-radius:12px;padding:0 18px 16px;margin-bottom:16px;box-shadow:var(--shadow)}
.ayar-grup .grup-baslik{font-weight:700;color:var(--ink);font-size:13.5px;margin:0 0 14px;padding:13px 0 11px;border-bottom:1px solid var(--line-2);display:flex;align-items:center;gap:9px}
.ayar-grup .grup-nokta{width:9px;height:9px;border-radius:3px;background:var(--gc);display:inline-block;flex-shrink:0}
.ayar-grup .grup-baslik small{font-weight:500;color:var(--muted);font-size:11.5px}
.smtp-form .form-actions{margin-top:4px}
.olay-baslik{font-weight:700;color:var(--ink);margin:20px 0 2px;padding-top:16px;border-top:1px solid var(--line)}
.olay-hint{font-size:12px;color:var(--muted);margin-bottom:10px;line-height:1.5}
.olay-satir{display:flex;align-items:center;gap:14px;padding:9px 0;border-bottom:1px solid var(--line-2)}
.olay-satir .switch-row{flex:0 0 210px;margin:0}
.olay-satir>input{flex:1;min-width:0}
@media(max-width:560px){.olay-satir{flex-direction:column;align-items:stretch;gap:7px}.olay-satir .switch-row{flex:none}}
a.pipe-step{text-decoration:none;color:inherit;cursor:pointer;display:block}
a.pipe-step:hover{background:var(--surface-2)}
.pipe-step.on{background:var(--surface-2);box-shadow:inset 0 0 0 2px var(--c)}
.pipe-step.on .num{color:var(--c)}
.pipe-tools{display:flex;justify-content:flex-end;margin:-6px 0 16px}
.kapali-sw{display:inline-flex;align-items:center;gap:9px;text-decoration:none;color:var(--muted);font-size:12.5px;font-weight:600;cursor:pointer;user-select:none}
.kapali-sw .sw-track{width:38px;height:22px;border-radius:999px;background:#cbd5e1;position:relative;transition:.15s;flex-shrink:0}
.kapali-sw .sw-knob{position:absolute;top:2px;left:2px;width:18px;height:18px;border-radius:50%;background:#fff;transition:.15s;box-shadow:0 1px 2px rgba(0,0,0,.25)}
.kapali-sw.on{color:var(--text)}
.kapali-sw.on .sw-track{background:#4338ca}
.kapali-sw.on .sw-knob{left:18px}
/* çekmecede telefon numarası */
.tel-num{display:inline-block;margin-left:8px;font-size:12.5px;color:var(--muted);font-family:'JetBrains Mono',monospace;vertical-align:middle}

/* sıralanabilir tablo başlıkları */
.thead.sortable a{color:inherit;text-decoration:none;cursor:pointer;transition:.12s}
.thead.sortable a:hover{color:var(--primary)}

/* sıralama oku */
.sok{font-size:11px;color:var(--primary)}
/* proje üye yönetimi (iki liste) */
.uye-yonetim{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:8px}
.uye-kol{border:1px solid var(--line);border-radius:10px;overflow:hidden}
.uye-kol-bas{background:var(--surface-2);font-size:12px;font-weight:600;color:var(--muted);padding:8px 12px;border-bottom:1px solid var(--line)}
.uye-liste{max-height:260px;overflow-y:auto}
.uye-row{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 12px;border-bottom:1px solid var(--line)}
.uye-row:last-child{border-bottom:none}
.uye-row.member{background:#f8fafc}
.uye-ad{font-size:13px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.uye-row form{margin:0}
.uye-btn{border:none;border-radius:7px;font-size:12px;font-weight:600;padding:5px 10px;cursor:pointer;white-space:nowrap}
.uye-btn.add{background:#ecfdf5;color:#047857}.uye-btn.add:hover{background:#d1fae5}
.uye-btn.rem{background:#fef2f2;color:#b91c1c}.uye-btn.rem:hover{background:#fee2e2}
@media (max-width:560px){.uye-yonetim{grid-template-columns:1fr}}

/* üye arama kutusu (çekmece içi) */
.uye-ara{display:block;width:100%;border:none;border-bottom:1px solid var(--line);padding:8px 12px;font-size:13px;background:#fff;outline:none;box-sizing:border-box}
.uye-ara:focus{background:#f8fafc}

/* görev çekmecesi atama formu */
.ata-form{display:flex;gap:8px;align-items:center}
.ata-select{flex:1;min-width:0;border:1px solid var(--line);border-radius:9px;padding:9px 12px;font-size:13.5px;background:#fff;outline:none}
.ata-select:focus{border-color:var(--primary)}

/* rapor KPI kartları: ikon + tıklanır */
.kpis-4 .kpi{display:flex;align-items:center;gap:14px}
.kpis-4 .kpi-ic{width:42px;height:42px;flex:0 0 42px;border-radius:11px;background:#eef2ff;display:flex;align-items:center;justify-content:center;color:var(--primary)}
.kpis-4 .kpi-ic svg{width:22px;height:22px}
.kpi-link{text-decoration:none;color:inherit;transition:box-shadow .15s ease,transform .15s ease}
.kpi-link:hover{box-shadow:0 8px 20px rgba(2,6,23,.10);transform:translateY(-1px)}
.kpi-link:hover .kpi-ic{background:var(--primary);color:#fff}
/* rapor tablosu sıralanabilir başlık */
.rapor-tablo.sortable thead th{cursor:pointer;user-select:none;white-space:nowrap}
.rapor-tablo.sortable thead th:hover{color:var(--primary)}
.rapor-tablo thead th.sorted-asc::after{content:" ↑";color:var(--primary);font-size:11px}
.rapor-tablo thead th.sorted-desc::after{content:" ↓";color:var(--primary);font-size:11px}

/* görev dosya ekleri */
.ek-liste{display:flex;flex-direction:column;gap:6px;margin-bottom:10px}
.ek-row{display:flex;align-items:center;gap:10px;padding:7px 10px;border:1px solid var(--line);border-radius:9px}
.ek-ad{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px}
.ek-boyut{font-size:11.5px;color:var(--muted);white-space:nowrap}
.ek-islem{display:flex;align-items:center;gap:8px}
.ek-islem a{font-size:12px;color:var(--primary);text-decoration:none;white-space:nowrap}
.ek-islem a:hover{text-decoration:underline}
.ek-islem form{margin:0}
.ek-sil{border:none;background:none;color:#b91c1c;cursor:pointer;font-size:13px;padding:2px 4px}
.ek-yukle{display:flex;gap:8px;align-items:center}
.ek-yukle input[type=file]{flex:1;min-width:0;font-size:12.5px}
/* önizleme modalı */
.ek-modal{position:fixed;inset:0;background:rgba(2,6,23,.6);display:none;align-items:center;justify-content:center;z-index:9999;padding:24px}
.ek-modal.acik{display:flex}
.ek-modal-card{background:#fff;border-radius:14px;max-width:920px;width:100%;max-height:90vh;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 20px 60px rgba(2,6,23,.4)}
.ek-modal-bar{display:flex;align-items:center;gap:12px;padding:12px 16px;border-bottom:1px solid var(--line)}
.ek-modal-ad{flex:1;font-weight:600;font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ek-modal-x{border:none;background:none;font-size:24px;line-height:1;cursor:pointer;color:var(--muted)}
.ek-modal-icerik{flex:1;overflow:auto;background:#f1f5f9;display:flex;align-items:center;justify-content:center;min-height:300px}
.ek-modal-icerik img{max-width:100%;max-height:84vh;display:block}
.ek-modal-icerik iframe{width:100%;height:84vh;border:none;background:#fff}
.ek-yok{padding:40px;color:var(--muted);text-align:center}

/* dosya adı tıklanır (önizleme) + başlık satırı + tümünü indir */
.ek-ad{cursor:pointer;color:inherit;text-decoration:none}
.ek-ad:hover{color:var(--primary);text-decoration:underline}
.sec-baslik.ek-baslik{display:flex;align-items:center;justify-content:space-between;gap:10px}
.ek-tumu{font-size:12px;color:var(--primary);text-decoration:none;font-weight:600;white-space:nowrap}
.ek-tumu:hover{text-decoration:underline}
/* önizleme modalı: hafif bulanık arka plan */
.ek-modal{background:rgba(15,23,42,.30);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}

/* Şubeler: içe aktarma + tablo başlığı */
.ice-head{display:flex;align-items:center;justify-content:space-between;gap:12px}
.ice-body{padding:16px 18px}
.ice-aktar{display:flex;align-items:center;gap:10px;margin:0 0 14px}
.ice-aktar input[type=file]{flex:1;min-width:0}
.ice-sablon{font-size:12.5px;color:var(--primary);text-decoration:none;font-weight:600;white-space:nowrap;display:inline-flex;align-items:center;gap:5px}
.ice-sablon:hover{text-decoration:underline}
.ice-meta{display:flex;flex-direction:column;gap:9px}
.ice-cols{display:flex;align-items:center;flex-wrap:wrap;gap:7px}
.ice-cols-lbl{font-size:12px;font-weight:600;color:var(--muted)}
.ice-tag{font-size:11.5px;font-weight:600;color:var(--primary-600);background:var(--primary-tint);border:1px solid #e0e3f5;border-radius:6px;padding:3px 9px;font-family:'JetBrains Mono',monospace}
.ice-note{margin:0;max-width:820px;font-size:12px;line-height:1.65;color:var(--muted-2)}
.ice-note b{color:var(--muted);font-weight:600}
@media (max-width:620px){.ice-aktar{flex-wrap:wrap}.ice-aktar input[type=file]{flex:1 1 100%}}
.sube-head{display:flex;gap:7px;padding:2px 12px 6px;font-size:11px;font-weight:700;color:var(--muted);letter-spacing:.04em}
.ekle-eti{font-size:11px;font-weight:700;color:var(--muted);letter-spacing:.04em;white-space:nowrap;align-self:center}

/* Şube türleri yöneticisi + satır içi tür seçimi */
.satir-form select{padding:6px 8px;border:1px solid var(--line);border-radius:7px;font-family:inherit;font-size:13px;font-weight:600;background:#fff;color:var(--ink);cursor:pointer}
.satir-form select:focus{border-color:var(--primary);outline:none}
.tur-liste{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}
.tur-chip{display:inline-flex;align-items:center;gap:6px;background:var(--surface-2);border:1px solid var(--line);border-radius:999px;padding:5px 6px 5px 13px;font-size:13px;font-weight:500;color:var(--ink)}
.tur-chip form{margin:0;display:inline-flex}
.tur-chip button{border:none;background:#e2e8f0;color:#475569;width:19px;height:19px;border-radius:50%;font-size:14px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;transition:.12s}
.tur-chip button:hover{background:#fecaca;color:#b91c1c}
.tur-ekle{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:0}
.tur-ekle input{flex:1;min-width:200px;padding:8px 11px;border:1px solid var(--line);border-radius:9px;font-family:inherit;font-size:13.5px}
.tur-ekle input:focus{border-color:var(--primary);outline:none}

/* Şubeler: net kurumsal hizalı tablo */
.sb-grid{display:flex;flex-direction:column}
.sb-head,.sb-row{display:grid;grid-template-columns:120px minmax(150px,1fr) 150px 140px max-content max-content;gap:12px;align-items:center}
.sb-head{padding:0 2px 11px;font-size:11.5px;font-weight:600;letter-spacing:.03em;color:var(--muted);border-bottom:1px solid var(--line)}
.sb-row{padding:9px 2px;border-bottom:1px solid var(--line-2)}
.sb-row:last-child{border-bottom:none}
.sb-row:hover{background:var(--surface-2)}
.sb-row form{display:contents}
.sb-row input,.sb-row select{width:100%;padding:8px 11px;border:1px solid var(--line);border-radius:8px;font-family:inherit;font-size:13.5px;font-weight:400;color:var(--text);background:#fff;transition:border-color .12s,box-shadow .12s}
.sb-row input::placeholder{color:var(--muted-2)}
.sb-row input:focus,.sb-row select:focus{border-color:var(--primary);outline:none;box-shadow:0 0 0 3px rgba(79,70,229,.12)}
.sb-row select{cursor:pointer}
.sb-row input[name=kod]{font-family:'JetBrains Mono',monospace;font-size:12.5px;color:var(--muted)}
.sb-yeni{margin-top:18px;padding-top:16px;border-top:1px dashed var(--line)}
.sb-yeni-baslik{font-size:11.5px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin-bottom:11px}
.sb-ekle{display:grid;grid-template-columns:120px minmax(150px,1fr) 150px 140px max-content;gap:12px;align-items:center;margin:0}
.sb-ekle input,.sb-ekle select{width:100%;padding:9px 11px;border:1px solid var(--line);border-radius:8px;font-family:inherit;font-size:13.5px;font-weight:400;background:#fff}
.sb-ekle input::placeholder{color:var(--muted-2)}
.sb-ekle input:focus,.sb-ekle select:focus{border-color:var(--primary);outline:none;box-shadow:0 0 0 3px rgba(79,70,229,.12)}
@media(max-width:760px){.sb-grid,.sb-yeni{overflow-x:auto}.sb-head,.sb-row,.sb-ekle{min-width:640px}}

/* ---- Yetki Matrisi ---- */
.ym-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 0 16px;flex-wrap:wrap}
.ym-hint{font-size:12.5px;color:var(--muted)}
.ym-mod{margin-bottom:18px}
.ym-mod-h{font-family:'Plus Jakarta Sans','Inter',sans-serif;font-weight:800;font-size:14px;margin:0 0 6px;color:var(--ink);letter-spacing:-.01em}
.ym-table{border-collapse:separate;border-spacing:0;width:100%;background:var(--surface);border:1px solid var(--line);border-radius:12px;overflow:hidden}
.ym-table th,.ym-table td{padding:9px 8px;text-align:center;border-bottom:1px solid var(--line);font-size:13px}
.ym-table thead th{background:var(--surface-2);font-weight:700;color:var(--muted);font-size:12px;letter-spacing:.02em;text-transform:uppercase}
.ym-table .ym-cap{text-align:left;font-weight:500;background:var(--surface);min-width:170px;color:var(--text)}
.ym-table thead .ym-cap{background:var(--surface-2);font-weight:700;text-transform:none;font-size:13px;color:var(--ink)}
.ym-table tr:last-child th,.ym-table tr:last-child td{border-bottom:none}
.kilit-et{font-size:11px;opacity:.6;margin-left:2px}
.form-field input:disabled,.form-field select:disabled{background:#f8fafc;color:#94a3b8;cursor:not-allowed}

/* ---- Roller & Kapsam ---- */
.rol-ekle{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.rol-ekle input[type=text]{flex:1;min-width:160px}
.rol-ekle select{min-width:240px}
.kapsam-panel{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:18px}
.kapsam-rol{border:1px solid var(--line);border-radius:10px;padding:10px;background:#fff;min-width:210px;flex:1}
.kapsam-ad{font-weight:700;font-size:13px;margin-bottom:6px}
.kapsam-sel{width:100%}

/* ---- Çoklu kişi seçici (mpick) ---- */
.mpick{border:1px solid var(--line);border-radius:10px;overflow:hidden;background:#fff}
.mpick-search{display:block;width:100%;border:none;border-bottom:1px solid var(--line);padding:9px 12px;font-size:13px;outline:none;box-sizing:border-box;background:#fff}
.mpick-search:focus{background:#f8fafc}
.mpick-list{max-height:260px;overflow:auto}
.mpick-opt{display:flex;align-items:center;gap:10px;padding:8px 12px;cursor:pointer;border-bottom:1px solid var(--line)}
.mpick-opt:last-child{border-bottom:none}
.mpick-opt:hover{background:#f5f7fb}
.mpick-opt.sel{background:#eef2ff}
.mpick-opt .kisi-ad{flex:1;min-width:0}
.mpick-tick{width:20px;height:20px;flex-shrink:0;color:var(--primary);opacity:0}
.mpick-opt.sel .mpick-tick{opacity:1}
.mpick-tick svg{width:20px;height:20px;display:block}

/* ---- Klavye ile gezinme vurgusu ---- */
.mpick-opt.kbd-hl,.uye-row.kbd-hl{background:#e0e7ff;box-shadow:inset 0 0 0 2px var(--primary)}

/* ---- Aranabilir tek-seçim (spick) ---- */
.spick{position:relative}
.spick-input{width:100%;box-sizing:border-box;cursor:pointer;background:#fff;padding:9px 30px 9px 12px;border:1px solid var(--line);border-radius:9px;color:var(--text);font-family:inherit;font-size:13.5px}
.spick.open .spick-input{border-color:var(--primary);box-shadow:0 0 0 3px rgba(99,102,241,.14)}
.spick-pop{display:none;position:absolute;z-index:40;left:0;right:auto;width:max-content;min-width:max(100%,240px);max-width:min(480px,94vw);top:calc(100% + 4px);background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:0 10px 28px rgba(15,23,42,.14);overflow:hidden}
.spick.open .spick-pop{display:block}
.spick-search{display:block;width:100%;border:none;border-bottom:1px solid var(--line);padding:8px 12px;font-size:13px;outline:none;box-sizing:border-box}
.spick-search:focus{background:#f8fafc}
.spick-list{max-height:220px;overflow:auto}
.spick-opt{padding:8px 12px;font-size:14px;cursor:pointer;border-bottom:1px solid var(--line)}
.spick-opt:last-child{border-bottom:none}
.spick-opt:hover,.spick-opt.kbd-hl{background:#eef2ff}
.spick-opt.sel{background:#e0e7ff;font-weight:600}

/* ---- Güçlü yetki uyarısı ---- */
.uyari-guclu{display:flex;gap:12px;align-items:flex-start;background:#fff7ed;border:1px solid #f59e0b;border-left:4px solid #d97706;border-radius:10px;padding:12px 14px;margin-bottom:18px;color:#7c2d12;font-size:13.5px;line-height:1.6}
.uyari-guclu code{background:#fffbeb;border:1px solid #fed7aa;border-radius:4px;padding:1px 5px;font-size:12.5px}
.uyari-ikon{font-size:20px;line-height:1.2;flex-shrink:0}
.ym-uyari{color:#d97706;margin-left:5px;cursor:help;font-size:13px}

/* ---- Yetki Matrisi: tek hizalı tablo ---- */
.ym-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:12px;background:#fff}
.ymx{border-collapse:separate;border-spacing:0;width:100%;min-width:700px;table-layout:fixed}
.ymx th,.ymx td{padding:10px 8px;text-align:center;border-bottom:1px solid var(--line);font-size:13px;vertical-align:middle}
.ymx thead th{background:#f1f5f9;font-weight:700;position:sticky;top:0;z-index:2}
.ymx-rol{width:120px;color:var(--ink)}
.ymx-cap{text-align:left;font-weight:500;position:sticky;left:0;background:#fff;z-index:1;width:210px;box-shadow:1px 0 0 var(--line)}
.ymx th.ymx-cap,.ymx td.ymx-cap{text-align:left;padding-left:14px}
.ymx thead .ymx-cap{background:#f1f5f9;z-index:4;font-weight:700}
.ymx-cap-alt{display:block;font-size:11px;color:var(--muted);font-weight:400;margin-top:1px}
.ymx-kapsam td,.ymx-kapsam .ymx-cap{background:#f7f9ff}
.ymx-mod td{text-align:left;font-weight:800;font-size:12px;letter-spacing:.03em;text-transform:uppercase;color:#3730a3;background:#eef2ff;padding:7px 12px;position:sticky;left:0}
.ymx-mod{cursor:pointer}
.ymx-mod td{user-select:none}
.ymx-mod:hover td{background:#e6ebff}
.ym-mod-chev{width:13px;height:13px;vertical-align:-1px;margin-right:7px;transition:transform .18s}
.ymx-mod.kapali .ym-mod-chev{transform:rotate(-90deg)}
.ymx tbody tr:not(.ymx-mod):hover td,.ymx tbody tr:not(.ymx-mod):hover .ymx-cap{background:#fafcff}
.ymx tbody tr:last-child th,.ymx tbody tr:last-child td{border-bottom:none}
.ymx .kapsam-sel{width:100%;font-size:12.5px;padding:7px 26px 7px 10px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--text);font-family:inherit;cursor:pointer;appearance:none;-webkit-appearance:none;-moz-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath d='M2 4.5l4 4 4-4' stroke='%2364748b' stroke-width='1.6' fill='none' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 9px center}
.ymx .kapsam-sel:hover{border-color:var(--muted-2)}
.ymx .kapsam-sel:focus{border-color:var(--primary);outline:none;box-shadow:0 0 0 3px rgba(99,102,241,.14)}

/* ---- Aranabilir seçici: caret + kişi (avatar+ünvan) + ipucu ---- */
.spick::after{content:none}
.spick .bs-chev{transition:.15s}
.spick.open .bs-chev{transform:rotate(180deg)}
.spick-av{width:30px;height:30px;border-radius:50%;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;color:#fff}
.spick-av-img{background-size:cover;background-position:center;color:transparent}
.spick-opt.kisi{display:flex;align-items:center;gap:10px}
.spick-opt.kisi .kisi-ad{flex:1;min-width:0}
.spick-hint{padding:7px 12px;font-size:11px;color:var(--muted);border-top:1px solid var(--line);background:#f8fafc}

/* ---- Matris hücresi: yeşil dolgu + ✓ (tıkla-seç) ---- */
.ymx td.ym-cell{padding:0}
.ym-check{display:block;cursor:pointer;margin:0;height:100%}
.ym-check input{position:absolute;opacity:0;width:0;height:0}
.ym-fill{display:flex;align-items:center;justify-content:center;width:100%;height:100%;min-height:46px;box-sizing:border-box;transition:background .1s}
.ym-tik{color:#16a34a;font-size:17px;font-weight:800;line-height:1;opacity:0}
.ym-check input:checked + .ym-fill{background:#dcfce7}
.ym-check input:checked + .ym-fill .ym-tik{opacity:1}
.ym-check:hover .ym-fill{background:#f0fdf4}

/* ---- Genel native <select> standardı (tüm proje) ---- */
select:not([multiple]):not(.multi){
  appearance:none;-webkit-appearance:none;-moz-appearance:none;
  padding:9px 30px 9px 12px;
  border:1px solid var(--line);border-radius:9px;
  background-color:#fff;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath d='M2 4.5l4 4 4-4' stroke='%2364748b' stroke-width='1.6' fill='none' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 11px center;
  color:var(--text);font-family:inherit;font-size:13.5px;cursor:pointer;
}
select:not([multiple]):not(.multi):hover{border-color:var(--muted-2)}
select:not([multiple]):not(.multi):focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px rgba(99,102,241,.14)}

/* ---- Aranabilir seçici: üstte sabit "Seçili" bölümü ---- */
.spick-secili{border-bottom:1px solid var(--line);background:#f8fafc;padding:6px 6px 8px}
.spick-secili-bas{font-size:10.5px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--muted-2);padding:2px 8px 4px}
.spick-secili-item{display:flex;align-items:center;gap:10px;padding:7px 12px;border-radius:8px;background:#eef2ff;font-size:14px;font-weight:600}
.spick-secili-item .kisi-ad{flex:1;min-width:0}
.spick-secili-item .kisi-unvan{font-weight:400}

/* Bölge -> Şube kademeli filtre dropdown */
.bs-filtre{position:relative;min-width:210px}
.bs-trigger{width:100%;height:42px;box-sizing:border-box;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:0 12px;border:1px solid var(--line);border-radius:9px;background:var(--surface);font-family:inherit;font-size:13.5px;color:var(--text);cursor:pointer;text-align:left}
.bs-trigger:hover{border-color:var(--primary)}
.bs-etiket{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bs-chev{width:16px;height:16px;color:var(--muted);flex-shrink:0;transition:transform .18s}
.bs-filtre.open .bs-chev{transform:rotate(180deg)}
.bs-panel{position:absolute;top:calc(100% + 6px);left:0;right:auto;width:max-content;min-width:max(100%,240px);max-width:min(480px,94vw);background:#fff;border:1px solid var(--line);border-radius:11px;box-shadow:0 12px 30px rgba(15,23,42,.16);z-index:60;padding:6px;display:none;max-height:360px;overflow:auto}
.bs-filtre.open .bs-panel{display:block}
.sfc-hidden,.kc-hidden,.hc-hidden{display:none}
.bs-panel::after{content:"Ara, tıkla (✓); ↑/↓ gez, Enter/Space ile seç.";position:sticky;bottom:-6px;display:block;margin:6px -6px -6px;padding:7px 12px;border-top:1px solid var(--line);background:#fff;font-size:11px;color:var(--muted-2);text-align:center;z-index:2}
.bs-acc{border-radius:8px}
.bs-acc+.bs-acc{margin-top:8px}
.bs-acc-head{width:100%;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:10px 8px 7px;border:none;background:none;border-bottom:1px solid var(--line-2);font-family:inherit;font-size:10.5px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--muted);cursor:pointer}
.bs-acc-chev{width:15px;height:15px;color:var(--muted);transition:transform .18s;transform:rotate(-90deg)}
.bs-acc.acik .bs-acc-chev{transform:rotate(0)}
.bs-acc-body{display:none;padding:4px 2px 6px}
.bs-acc.acik .bs-acc-body{display:block}
.bs-item{display:block;padding:8px 11px;border-radius:7px;font-size:13px;color:var(--text);cursor:pointer;text-decoration:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bs-item:hover{background:var(--surface-2)}
.bs-item:focus-visible{outline:2px solid var(--primary);outline-offset:-2px;background:var(--surface-2)}
.bs-item.sel{background:var(--primary-tint);color:var(--primary);font-weight:600}
.bs-item.sel::after{content:"✓";float:right;color:var(--primary);font-weight:700}
.bs-bos{padding:8px 11px;font-size:12px;color:var(--muted-2)}

/* Proje kartı kişileri (oluşturan / sorumlu) */
.pj-kisiler{display:grid;grid-template-columns:1fr 1fr;gap:8px 12px;margin-top:12px;padding-top:12px;border-top:1px solid var(--line-2)}
.pj-kisi{display:flex;flex-direction:column;gap:1px;min-width:0}
.pj-rol{font-size:9.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted-2)}
.pj-ad{font-size:12.5px;font-weight:600;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pj-unvan{font-size:11px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

.onc-legend{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin:14px 2px 4px;font-size:12px;color:var(--muted)}
.onc-legend-lbl{font-weight:600;color:var(--muted-2)}
.onc-leg{display:inline-flex;align-items:center;gap:6px}
.onc-dot{width:9px;height:9px;border-radius:3px;display:inline-block;flex-shrink:0}
/* Talepten dönüşen görev rozeti */
.talep-rozet{display:inline-block;margin-left:6px;padding:1px 7px;border-radius:999px;font-size:10.5px;font-weight:700;letter-spacing:.02em;background:#eef2ff;color:#4338ca;border:1px solid #c7d2fe;vertical-align:middle}

/* ===== Talep→Görev Analiz raporu: stabil düzen + kart filtre + çipler ===== */
.rapor-alan{max-width:1120px;margin:0 auto}
.kpis-4.bes{grid-template-columns:repeat(5,1fr)}
@media(max-width:900px){.kpis-4.bes{grid-template-columns:repeat(2,1fr)}}
.card-head{padding:15px 16px 14px;border-bottom:1px solid var(--line-2)}
.card-head h3{margin:0;font-size:15px;font-weight:700;color:#1e293b}
.rapor-tablo.stabil{table-layout:fixed;width:100%}
.rapor-tablo.stabil th,.rapor-tablo.stabil td{padding:12px 16px}
.rapor-tablo.stabil th.num,.rapor-tablo.stabil td.num{text-align:center;width:120px;font-family:'JetBrains Mono'}
.rapor-tablo.stabil th.grafik,.rapor-tablo.stabil td.grafik{width:220px}
.rapor-tablo.stabil td.grafik{white-space:nowrap}
.rapor-tablo.stabil .ilerleme-bar{display:inline-block;width:120px;vertical-align:middle}
.rapor-tablo.stabil .ilerleme-yuzde{margin-left:8px;vertical-align:middle}
.rapor-tablo.stabil th:first-child,.rapor-tablo.stabil td:first-child{text-align:left}
a.kpi.on{box-shadow:inset 0 0 0 2px var(--primary)}
a.kpi.on .kpi-cap{color:var(--primary);font-weight:600}
a.kpi.kpi-flt{position:relative}
a.kpi.kpi-flt.on::after{content:"Filtre";position:absolute;top:9px;right:11px;font-size:9px;font-weight:700;letter-spacing:.04em;color:var(--primary);text-transform:uppercase}
.aktif-filtreler{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 16px}
.fil-chip{display:inline-flex;align-items:center;gap:8px;background:#eef2ff;border:1px solid #c7d2fe;color:#3730a3;border-radius:999px;padding:5px 6px 5px 12px;font-size:12.5px;font-weight:600}
.fil-chip .fil-x{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:50%;background:#c7d2fe;color:#312e81;font-size:13px;line-height:1;text-decoration:none;transition:background .15s}
.fil-chip .fil-x:hover{background:#a5b4fc}

/* Birden fazla tablo olan sayfa/raporlarda şablonlardaki gibi renkli üst çerçeve */
.card.renkli{border-top:3px solid var(--c)}

/* ===== Hiyerarşik seçici (avatar ağacı) — tekli ve çoklu ortak ===== */
.bs-grup{border-radius:9px;overflow:hidden}
.bs-item.cok{display:flex;align-items:center;gap:10px}
.bs-item.cok.sel::after{content:none}
.bs-ava{width:30px;height:30px;border-radius:50%;flex:0 0 auto;display:grid;place-items:center;color:#fff;font-size:11px;font-weight:700;font-family:'Plus Jakarta Sans';position:relative;cursor:pointer}
.bs-ava .tik{display:none;font-size:15px}
.bs-ava.on{background:var(--primary)!important}
.bs-ava.on .ini{display:none}
.bs-ava.on .tik{display:block}
.bs-ava.kismi::after{content:"";position:absolute;right:-1px;bottom:-1px;width:11px;height:11px;border-radius:50%;background:var(--primary);border:2px solid var(--surface)}
.bs-bhead{cursor:pointer}
.bs-bhead.kismi{background:var(--surface-2)}
.bs-bhead .bs-cev{margin-left:auto;transition:transform .18s;color:var(--muted);flex:0 0 auto}
.bs-grup.acik .bs-bhead .bs-cev{transform:rotate(90deg)}
.bs-sayi{font-size:11px;font-weight:700;color:var(--primary);background:var(--primary-tint);border-radius:20px;padding:2px 9px;margin-left:auto}
.bs-sayi.tam{background:#dcfce7!important;color:#15803d!important}
.bs-bhead.sel .bs-sayi{color:#fff;background:var(--primary)}
.bs-bhead .bs-cev{margin-left:8px}
/* Açılır liste satırında SAYI/DEĞER sağ kenara hizalı; chevron onu takip eder (v283) */
.bs-sayi ~ .bs-cev-btn,.bs-sayi ~ .bs-cev{margin-left:8px}
.bs-subeler{display:none;margin:2px 0 6px 20px;border-left:2px solid var(--line-2);padding-left:6px}
.bs-grup.acik .bs-subeler{display:block}
/* Çoklu kişi seçici (Bölge→Şube→Kişi iç içe): her seviye BAĞIMSIZ aç/kapa (direct-child, descendant değil) */
.kc-secim .bs-grup:not(.acik) > .bs-subeler{display:none}
.kc-secim .bs-grup.acik > .bs-subeler{display:block}
.bs-secili-cipler{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.bs-item.sel .bs-ava{background:var(--primary)!important}
.bs-item.sel .bs-ava .ini{display:none}
.bs-item.sel .bs-ava .tik{display:block}
.bs-cev-btn{margin-left:auto;background:none;border:none;color:var(--muted);padding:4px;border-radius:6px;cursor:pointer;display:flex;flex:0 0 auto}
.bs-cev-btn:hover{background:var(--surface-2)}
.bs-cev-btn .bs-cev{transition:transform .18s}
.bs-grup.acik .bs-cev-btn .bs-cev{transform:rotate(90deg)}

/* ── Çoklu şube filtre (sfc): panel içi Uygula satırı ── */
.bs-filtre.sfc-secim .bs-uygula-satir{position:sticky;bottom:0;padding:8px 10px;border-top:1px solid var(--cizgi,#e2e8f0);background:var(--panel,#fff);display:flex;justify-content:flex-end}
.bs-filtre.sfc-secim .bs-uygula{padding:6px 16px;font-size:13px}
.bs-filtre.sfc-secim .bs-uygula:focus-visible{outline:2px solid #4f46e5;outline-offset:2px}

/* ── Hiyerarşik seçici: panel içi arama satırı + arama-açık grup ── */
.bs-filtre .bs-ara{position:sticky;top:-6px;z-index:3;margin:-6px -6px 8px;padding:12px 8px 8px;background:var(--panel,#fff);border-bottom:1px solid var(--line-2,#e2e8f0);border-radius:11px 11px 0 0}
.bs-filtre .bs-ara-input{width:100%;padding:7px 10px;font-size:13px;border:1px solid var(--line-2,#e2e8f0);border-radius:8px;box-sizing:border-box}
.bs-filtre .bs-ara-input:focus-visible{outline:2px solid #4f46e5;outline-offset:1px}
.bs-grup.ara-acik .bs-subeler{display:block}
.bs-grup.ara-acik .bs-bhead .bs-cev,.bs-grup.ara-acik .bs-cev-btn .bs-cev{transform:rotate(90deg)}

/* ── Tekli açılır liste (al): renk noktası ── */
.al-nokta{width:10px;height:10px;border-radius:50%;display:inline-block;flex:none;vertical-align:middle}
.al-item .al-nokta{width:12px;height:12px;border-radius:50%;flex:none;display:inline-block;margin-right:2px}

/* ── Kişi seçici (kl): Şube→Departman→Kişi + ünvan alt satırı ── */
.kl-dgrup{margin-left:6px}
.kl-dgrup .kl-kisiler{display:none;margin:2px 0 6px 20px;border-left:2px solid var(--line-2,#e2e8f0);padding-left:6px}
.kl-dgrup.acik .kl-kisiler,.kl-dgrup.ara-acik .kl-kisiler{display:block}
.kl-dgrup.acik .kl-dhead .bs-cev,.kl-dgrup.ara-acik .kl-dhead .bs-cev{transform:rotate(90deg)}
.kl-dava{width:22px;height:22px;font-size:9px;border-radius:6px}
.kl-metin{display:flex;flex-direction:column;line-height:1.25;min-width:0}
.kl-ad{overflow:hidden;text-overflow:ellipsis}
.kl-unvan{font-size:11px;color:var(--muted,#64748b);font-weight:400;overflow:hidden;text-overflow:ellipsis}
.bs-item.sel .kl-unvan{color:inherit;opacity:.75}

/* ── Panel kenar taşması: sağdan taşarsa sola yaslan ── */
.bs-panel.kenar-sag{left:auto;right:0}
/* Asagida yer kalmadiginda panel YUKARI acilir (bsKenar sinifi ekler) */
.bs-panel.kenar-ust{top:auto;bottom:calc(100% + 6px)}
/* Mobilde açılır panel viewport'u AŞMASIN (min-width:100% zorlaması kapsayıcı genişse taşmaya yol açar) */
@media(max-width:700px){.bs-filtre .bs-panel,.spick-pop{min-width:0;max-width:calc(100vw - 20px)}}
/* ── Kişi seçici: Bölge dış seviyesi ── */
.kl-bgrup{border-radius:9px;overflow:hidden}
.kl-bgrup .kl-bsubeler{display:none;margin:2px 0 6px 16px;border-left:2px solid var(--line-2,#e2e8f0);padding-left:6px}
.kl-bgrup.acik .kl-bsubeler,.kl-bgrup.ara-acik .kl-bsubeler{display:block}
.kl-bgrup.acik .kl-bhead .bs-cev,.kl-bgrup.ara-acik .kl-bhead .bs-cev{transform:rotate(90deg)}

/* ── Tetikleyicide seçim kimliği: avatar/nokta + ad + ünvan (yükseklik 42px SABİT) ── */
.bs-trigger .bs-etiket{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bs-trigger .bs-etiket.kisi{display:flex;align-items:center;gap:8px;min-width:0;text-align:left}
.bs-trigger .bs-etiket.kisi .bs-ava{width:24px;height:24px;font-size:9px;flex:none}
.bs-trigger .bs-etiket.kisi .bs-ava .tik{display:none}
.bs-trigger .bs-etiket.kisi .bs-ava.kismi::after{width:8px;height:8px;right:-1px;bottom:-1px;border-width:1.5px}
.bs-trigger .bs-etiket.kisi .kl-metin{line-height:1.12;min-width:0}
.bs-trigger .bs-etiket.kisi .kl-ad{font-size:12.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bs-trigger .bs-etiket.kisi .kl-unvan{font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* ── spick v2: bs-standart tetikleyici uyumu ── */
.spick .bs-trigger .bs-etiket.kisi .spick-av{width:24px;height:24px;font-size:9px;flex:none;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;color:#fff;font-weight:700;background-size:cover;background-position:center}

/* ── Mobil kompakt KPI + durum şeridi (yalnız ≤560px) ── */
@media(max-width:560px){
  .pipe-step{flex:1 1 33%;padding:8px 10px}
  .pipe-lbl{font-size:10px;gap:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .pipe-lbl i{width:6px;height:6px;flex:none}
  .pipe-num{font-size:15px;margin-top:2px}
  /* KPI: tek satır yatay kaydırma şeridi */
  /* KPI: mobilde YALNIZ İKON — renkli yumuşak arka plan KALIR, kart çerçevesi YOK */
  .kpis, .grid.kpis{display:flex;gap:8px;justify-content:space-around;overflow:visible}
  .kpis .kpi, a.kpi{flex:0 1 auto;min-width:0;padding:2px;height:auto;display:grid;place-items:center;background:none;border:none;box-shadow:none;border-radius:12px}
  a.kpi:hover{box-shadow:none;transform:none;border:none}
  .kpi .ico{width:36px;height:36px;border-radius:10px;margin-bottom:0}
  .kpi .ico svg{width:18px;height:18px}
  .kpi .val,.kpi .cap,.kpi .trend{display:none}
}

/* ── Mobilde sayfa içi başlık ve durum şeridi gizli ── */
@media(max-width:560px){
  .page-head h1,.page-head .desc{display:none}
  .page-head{margin-bottom:6px;min-height:0}
  .pipeline{display:none}
  /* Liste kartları kompakt: dar satır + durum rozeti yerine renkli NOKTA */
  .panel-head{padding:10px 14px;display:flex;align-items:center;justify-content:space-between;gap:10px}
  .panel-head h3{font-size:13.5px}
  .panel-head .link{font-size:12px;white-space:nowrap}
  .tlist{padding:4px}
  .trow{padding:7px 10px;gap:8px;border-radius:8px}
  .trow .ttl{font-size:12.5px}
  .trow .pill-st{width:10px;height:10px;min-width:10px;padding:0;border-radius:50%;font-size:0;line-height:0;flex:none;order:-1}
  .trow .due{width:auto;font-size:11px}
}

/* ── Liste satırında alt bilgi (talep eden kişi / proje · sorumlu) ── */
.tkolon{flex:1;min-width:0;display:flex;flex-direction:column;line-height:1.3}
.tkolon .ttl{flex:none}
.talt{font-size:11px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:400}
@media(max-width:560px){.talt{font-size:10px}}

/* ── Liste içi kaynak bölümü başlığı ── */
.tsec{font-size:10.5px;font-weight:700;letter-spacing:.5px;text-transform:uppercase;color:var(--muted);padding:9px 12px 3px;display:flex;align-items:center;gap:6px}
.tsec::after{content:"";flex:1;height:1px;background:var(--line-2,#e2e8f0)}
.tlist .tsec:first-child{padding-top:4px}
@media(max-width:560px){.tsec{font-size:9.5px;padding:7px 10px 2px}}

/* ── Liste kartı başlık ikonu ── */
.panel-head h3{display:flex;align-items:center;gap:8px}
.ph-ico{width:18px;height:18px;display:grid;place-items:center;flex:none}
.ph-ico svg{width:16px;height:16px}
@media(max-width:560px){.ph-ico{width:16px;height:16px}.ph-ico svg{width:14px;height:14px}}

/* ============================================================
   v207 — MOBİL WEB-APP KATMANI (MOBIL_NOTLAR 1-13)
   Bölümler: (1) sabit üst bar + kapsam şeridi  (2) alt ikon menü
   (3) tam menü sheet'i  (4) bildirim paneli (mobil)  (5) detay
   sheet v2 + sade görünüm v3  (6) WhatsApp chat  (7) hızlı yanıt
   (8) dokunma hedefleri  (9) daha fazla yükle  (10) 5/7 sınırı
   ============================================================ */

/* ---- (5a) Sade görünüm v3 — masaüstü + mobil ortak yapı ---- */
.sh-durum{text-align:center;font-size:11.5px;font-weight:800;letter-spacing:.4px;margin:8px 0 0;color:var(--muted)}
.sh-bas{display:flex;align-items:baseline;gap:9px;padding:7px 0 10px;border-bottom:1px solid var(--line)}
.sh-bas .sheet-code{flex:none;margin:0}
.sh-bas .sheet-title{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:15.5px;margin:0;line-height:1.3}
.sh-hatama{display:flex;align-items:center;gap:8px;margin-top:8px}
.sh-hatama:empty{display:none}
.sh-hatama .avatar,.sh-hatama .kisi-avatar{width:24px;height:24px;font-size:10px}
.sh-hatama .m{font-size:11.5px;color:var(--muted);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sh-hatama .m b{color:var(--ink);font-size:12px}
.sh-hatama .sh-ilet{margin-left:auto;display:flex;gap:6px}
.sh-hatama .sh-ilet a{width:34px;height:34px;border-radius:10px;display:flex;align-items:center;justify-content:center;border:1px solid var(--line);color:var(--text);background:var(--surface);text-decoration:none}
.sh-hatama .sh-ilet a svg{width:15px;height:15px}
.sh-hatama .sh-ilet a.wa{color:#16a34a;border-color:#bbf7d0;background:#f0fdf4}
.sh-ozet{display:flex;flex-wrap:nowrap;gap:8px;align-items:center;padding:10px 0 2px}
.sh-ozet .cips{display:flex;gap:6px;flex:1;min-width:0;overflow-x:auto;scrollbar-width:none;flex-wrap:nowrap}
.sh-ozet .cips::-webkit-scrollbar{display:none}
.sh-cip{flex:none;white-space:nowrap;display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:600;color:#475569;background:var(--surface-2);border:1px solid var(--line);border-radius:9px;padding:5px 9px}
.sh-cip .nok{width:8px;height:8px;border-radius:50%}
.sh-cip.over{color:#e11d48;border-color:#fecdd3;background:#fff1f2}
.sh-cip.pill{color:#fff;border:none}
.sh-detaybtn{margin-left:auto;flex:none;display:inline-flex;align-items:center;gap:4px;border:1px solid var(--line);background:var(--surface);border-radius:9px;padding:6px 11px;font-size:11px;font-weight:700;color:#475569;cursor:pointer;box-shadow:0 1px 2px rgba(15,23,42,.04)}
.sh-detaybtn i{font-style:normal;line-height:0;transition:transform .15s}
.sh-detaybtn.acik i{transform:rotate(180deg)}
.sh-detay{display:none}
.sh-detay.acik{display:block}
.sh-minirow{display:flex;align-items:center;gap:9px;min-height:40px;font-size:13px;color:var(--text);border-bottom:1px dashed var(--line-2)}
.sh-minirow:last-child{border-bottom:none}
.sh-minirow .mk{font-size:11px;font-weight:700;letter-spacing:.03em;color:var(--muted-2);min-width:86px}
.sh-minirow .nk{width:10px;height:10px;border-radius:50%;flex:none}
.sh-kilit{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--muted);margin-top:6px}
/* Durum düğmeleri — yumuşak köşeli çerçeve dili (TO-24) */
.durum-pill{min-height:38px;padding:0 13px;border-radius:12px;border:1px solid var(--line);background:var(--surface);color:var(--text);font-size:12px;font-weight:700;box-shadow:0 1px 2px rgba(15,23,42,.04)}
.durum-pill:hover{border-color:var(--dc);color:var(--dc);background:var(--surface)}
.durum-pill.on{background:var(--dc);border-color:transparent;color:#fff}

/* ---- (6) WhatsApp dilinde chat (Not 9) ---- */
.chat-wrap{position:relative}
.chat{display:flex;flex-direction:column;padding:12px 9px 8px;background:#efeae2;border-radius:12px;max-height:44vh;min-height:120px;overflow:auto;overscroll-behavior:contain}
.cgun{align-self:center;background:#fff;color:#54656f;font-size:10.5px;font-weight:700;padding:4px 11px;border-radius:8px;box-shadow:0 1px 1px rgba(0,0,0,.08);margin-bottom:9px}
.chat-eski{align-self:center;border:none;background:#fff;color:#0891b2;font-size:11px;font-weight:700;border-radius:99px;padding:8px 14px;margin-bottom:9px;cursor:pointer;box-shadow:0 1px 1px rgba(0,0,0,.08)}
.cmsg{display:flex;gap:7px;max-width:88%;margin-bottom:7px}
.cmsg .cava{width:26px;height:26px;border-radius:50%;background:#fff;color:var(--primary);font-weight:800;font-size:10.5px;display:flex;align-items:center;justify-content:center;flex:none;margin-top:2px}
.cmsg .cblk{position:relative;background:#fff;border-radius:10px;padding:5px 9px 7px;box-shadow:0 1px 1px rgba(0,0,0,.10);min-width:86px}
.cmsg .cblk:before{content:"";position:absolute;top:0;left:-7px;border:7px solid transparent;border-top-color:#fff;border-right-color:#fff}
.cmsg .ckim{font-size:11px;font-weight:800;margin-bottom:1px}
.cmsg .ckim .ckim-unv{color:#8696a0;font-weight:600;font-size:10px}
.cmsg .cmtx{font-size:13.3px;color:#111b21;line-height:1.42;padding-right:44px;overflow-wrap:anywhere;
  /* v469 — çok satırlı mesajlarda satır sonları korunur. Metin veritabanına
     "satir bir
satir iki" olarak doğru yazılıyordu ama white-space:normal
     satır sonunu yutuyor, mesaj tek satır görünüyordu. */
  white-space:pre-wrap}
.cmsg .czmn{position:absolute;right:8px;bottom:4px;font-size:9.5px;color:#667781;white-space:nowrap}
.cmsg .ctik{color:#8696a0;font-size:10.5px;margin-left:3px;letter-spacing:-2px}
.cmsg.ben{margin-left:auto}
.cmsg.ben .cava{display:none}
.cmsg.ben .ckim{display:none}
.cmsg.ben .cblk{background:#d9fdd3}
.cmsg.ben .cblk:before{left:auto;right:-7px;border-top-color:#d9fdd3;border-left-color:#d9fdd3;border-right-color:transparent}
.cmsg.ben .cmtx{padding-right:56px}
.cmsg.gizli{display:none}
.chat-asagi{position:absolute;right:10px;bottom:10px;width:40px;height:40px;border-radius:50%;border:none;background:#fff;box-shadow:0 4px 12px rgba(15,23,42,.28);color:#54656f;font-size:16px;cursor:pointer;display:none;z-index:3}
.chat-asagi.gor{display:block}
.chat-asagi i{position:absolute;top:-4px;right:-4px;background:#00a884;color:#fff;font-style:normal;font-size:9.5px;font-weight:800;border-radius:99px;min-width:16px;height:16px;line-height:16px;padding:0 3px}
.chat-asagi i:empty{display:none}
.chat-form{display:flex;gap:8px;margin-top:10px}
.chat-form input{flex:1;min-height:44px;border:1.5px solid var(--line);border-radius:99px;padding:0 16px;font-size:13.5px;outline-color:#00a884;background:var(--surface);font-family:inherit}
.chat-form .gonder{background:#00a884;color:#fff;min-width:44px;width:44px;height:44px;border-radius:50%;padding:0;display:flex;align-items:center;justify-content:center}
.chat-form .gonder svg{width:18px;height:18px}
.chat-bos{align-self:center;color:#8696a0;font-size:12px;padding:14px 0}

/* ---- (7) Akıllı hızlı yanıt popup'ı (Not 10) ---- */
.hpop{position:fixed;inset:0;z-index:96;display:none;align-items:center;justify-content:center;background:rgba(15,23,42,.35)}
.hpop.acik{display:flex}
.hpop .kart{background:var(--surface);border-radius:16px;padding:15px 16px;width:min(320px,86%);box-shadow:0 18px 44px rgba(15,23,42,.3)}
.hpop .kbas{display:flex;align-items:center;gap:8px;font-size:11.5px;font-weight:700;color:var(--muted);margin-bottom:8px}
.hpop .ksoru{font-size:13.5px;color:var(--ink);line-height:1.5;margin-bottom:4px}
.hpop .kadim{font-size:12.5px;font-weight:700;color:var(--primary);background:var(--primary-tint);border-radius:9px;padding:6px 10px;display:inline-block;margin-bottom:12px}
.hpop .kbtn{display:flex;gap:8px}
.hpop .kbtn button{flex:1;min-height:44px;border:none;border-radius:12px;font-weight:700;font-size:13px;cursor:pointer}
.hpop .kbtn .evet{background:#16a34a;color:#fff}
.hpop .kbtn .hayir{background:#f1f5f9;color:#334155}

/* ---- (9) Sayfalama → daha fazla yükle (Not 5) ---- */
.pager-daha{display:none}

/* ---- (2) Alt ikon menü + (3) tam menü sheet'i — yalnız mobil ---- */
.altnav{display:none}
.mnsheet{display:none}
.kapsam-serit{display:none}

@media (max-width:560px){
  /* (1) Sabit üst bar: 48px, hamburger yok (Not 2) */
  .topbar{position:fixed;top:0;left:0;right:0;z-index:60;min-height:48px;padding:6px 14px;background:#fff;border-bottom:1px solid var(--line);backdrop-filter:none;-webkit-backdrop-filter:none}
  .topbar .hamburger{display:none}
  .topbar-title{font-size:14.5px}
  .main{padding-top:48px}
  .content{padding:14px 14px calc(72px + env(safe-area-inset-bottom))} /* altnav payı (safe-area dahil) */

  /* (1b) Kapsam şeridi — şube görünümü (Not 12a) */
  .kapsam-serit{display:flex;align-items:center;gap:7px;position:fixed;top:48px;left:0;right:0;z-index:59;background:var(--primary-tint);color:var(--primary-600);font-size:11px;font-weight:700;padding:6px 14px;border-bottom:1px solid #e0e7ff}
  .kapsam-serit svg{width:13px;height:13px;flex:none}
  body.kapsamli .main{padding-top:76px}

  /* (2) Alt ikon menü (Not 1) */
  html,body{overscroll-behavior:none}
  .mn-prof{display:flex;align-items:center;gap:10px;padding:4px 14px 10px;border-bottom:1px solid var(--line);flex:none}
  .mn-prof-git{display:flex;align-items:center;gap:10px;flex:1;min-width:0;min-height:44px;text-decoration:none;color:var(--text)}
  .mn-prof-av{width:38px;height:38px;border-radius:50%;background:var(--primary-tint);color:var(--primary);font-weight:800;font-size:13px;display:grid;place-items:center;overflow:hidden;flex:none}
  .mn-prof-av img{width:100%;height:100%;object-fit:cover}
  .mn-prof-metin{display:flex;flex-direction:column;min-width:0}
  .mn-prof-metin b{font-size:13.5px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .mn-prof-metin i{font-style:normal;font-size:11px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .mn-prof-form{margin:0;flex:none}
  .mn-prof-cikis{width:40px;height:40px;display:grid;place-items:center;background:#fef2f2;border:1px solid #fecaca;color:#dc2626;border-radius:10px;padding:0;cursor:pointer}
  .altnav{position:fixed;left:0;right:0;bottom:0;display:flex;background:#fff;border-top:1px solid var(--line);z-index:80;padding:6px 4px calc(6px + env(safe-area-inset-bottom))}

  /* v593 — TELEFONDA SOL MENU YOK (kullanici karari).
     Alt gezinme (.altnav) + "Menü" sayfasi (#mnSheet) zaten tam menuyu veriyor;
     hamburger ve soldan acilan kenar cubugu ikinci bir yol olarak duruyordu.
     Ust bardaki sayfa ikonu da kaldirildi: baslik ve sube satiri yeterli. */
  .hamburger{display:none!important}
  .sidebar,.scrim{display:none!important}
  /* Sayfa ikonu GERI (kullanici: "pano ikonu gelmemis"). Izgara duzeni
     korunur: ikon solda iki satir boyunca, sagda ad + sube. */
  .topbar-title > .tb-ikon{display:inline-flex}
  .topbar-title > .tb-ikon svg{width:15px;height:15px}
  /* Çekmece alttaki sabit menünün ÜSTÜNDE bitsin — içerik (chat vb.) altnav altında kalmasın (v284) */
  .drawer{bottom:calc(60px + env(safe-area-inset-bottom))}
  .altnav a{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;text-decoration:none;color:var(--muted);font-size:9.5px;font-weight:600;padding:4px 0;border-radius:10px;min-height:44px}
  .altnav a svg{width:21px;height:21px}
  .altnav a.aktif{color:var(--primary)}
  .altnav a.aktif svg{stroke-width:2.4}

  /* (3) Tam menü sheet'i — dizilim yan menüyle birebir (Not 1) */
  .mnsheet{display:block;position:fixed;inset:0;z-index:90;visibility:hidden;pointer-events:none}
  .mnsheet.acik{visibility:visible;pointer-events:auto}
  .mn-ort{position:absolute;inset:0;background:rgba(15,23,42,.45);opacity:0;transition:opacity .2s}
  .mnsheet.acik .mn-ort{opacity:1}
  .mn-panel{position:absolute;left:0;right:0;bottom:0;max-height:calc(100vh*5/7);max-height:calc(100dvh*5/7);background:#fff;border-radius:18px 18px 0 0;display:flex;flex-direction:column;transform:translateY(100%);transition:transform .22s ease}
  .mnsheet.acik .mn-panel{transform:none}
  .mn-grab{display:flex;justify-content:center;padding:8px 0 2px;flex:none}
  .mn-grab span{width:44px;height:5px;border-radius:99px;background:#cbd5e1}
  .mn-govde{overflow:auto;padding:2px 14px calc(14px + env(safe-area-inset-bottom));-webkit-overflow-scrolling:touch}
  .mn-etiket{font-size:10px;font-weight:800;letter-spacing:.6px;text-transform:uppercase;color:var(--muted-2);padding:12px 6px 4px}
  .mn-item{display:flex;align-items:center;gap:11px;min-height:44px;padding:0 10px;border-radius:11px;color:var(--text);font-size:13.5px;font-weight:600;text-decoration:none}
  .mn-item svg{width:19px;height:19px;color:var(--muted);flex:none}
  .mn-item.aktif{background:var(--primary-tint);color:var(--primary)}
  .mn-item.aktif svg{color:var(--primary)}
  .mn-badge{margin-left:auto;background:#4f46e5;color:#fff;font-size:11px;font-weight:700;min-width:20px;height:20px;border-radius:10px;display:inline-grid;place-items:center;padding:0 7px;flex:none}

  /* (4) Bildirim paneli: sağdan kayar, 5/7 sınırı (Not 2 + 8) */
  .bell-menu{position:fixed;top:0;right:0;bottom:calc(56px + env(safe-area-inset-bottom));left:auto;width:min(340px,calc(100vw*5/7));max-width:none;border-radius:0 0 0 14px;border:none;border-left:1px solid var(--line);border-bottom:1px solid var(--line);transform:translateX(100%);transition:transform .22s ease;display:flex;flex-direction:column}
  .bell-menu.open{transform:none}
  .bell-list{flex:1;max-height:none}

  /* (5) Detay çekmecesi → alttan kayan sheet (Not 4 + 8) */
  .drawer-panel{top:calc(100dvh*2/7);right:0;left:0;height:auto;bottom:0;width:100%;max-width:none;border-radius:18px 18px 0 0;background:#fff;transform:translateY(100%)}
  .drawer.open .drawer-panel{transform:none}
  .drawer-close{display:none} /* kapanış: tutamaç / boşluk / Esc */
  .drawer-grab{display:flex}
  .drawer-body{padding:0 16px calc(16px + env(safe-area-inset-bottom))}
  .sh-detay .durum-pills{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;padding-bottom:3px}
  .sh-detay .durum-pills::-webkit-scrollbar{display:none}
  .sh-detay .durum-pill{flex:none;white-space:nowrap}

  /* (8) Dokunma hedefleri (Not 3) */
  .trow{min-height:44px}
  .check-row{min-height:44px}
  .cip .cip-x,.fcip a{min-width:30px;min-height:30px;display:inline-flex;align-items:center;justify-content:center}
  a,button{-webkit-tap-highlight-color:rgba(79,70,229,.12)}

  /* (9) Sayfalama: düğmeler gizli, tek "Daha fazla yükle" (Not 5) */
  .pager-btns{display:none}
  .pager-daha{display:flex;align-items:center;justify-content:center;gap:6px;min-height:44px;margin-top:8px;width:100%;border:1px solid var(--line);border-radius:12px;background:var(--surface);color:var(--primary);font-weight:700;font-size:13px;text-decoration:none}
}
@media (min-width:561px){
  .drawer-grab{display:none}
}
/* Tutamaç (her iki modda tanımlı; görünürlük yukarıda) */
.drawer-grab{justify-content:center;padding:8px 0 2px;cursor:grab;touch-action:none}
.drawer-grab span{width:44px;height:5px;border-radius:99px;background:#cbd5e1}
#filtreSonuc.filtre-yukleniyor{opacity:.55;transition:opacity .12s;pointer-events:none}
.spick-opt.nok{display:flex;align-items:center;gap:9px}
.spick .bs-etiket>.al-nokta{margin-right:8px;flex:none}
.spick .bs-etiket{display:inline-flex;align-items:center}
.filtre-ac-btn{display:none}
@media (max-width:700px){
  .filtre-ac-btn{display:inline-flex;align-items:center;gap:7px;flex:1 1 100%;justify-content:center;order:0}
  form.filter-bar{display:flex}
  form.filter-bar>.form-field:not(.bs-filtre){flex:1 1 100%}
  /* v468 — '.btn' seçicisi 'Filtrele' düğmesinin KENDİSİNİ de gizliyordu (sınıfı
     'filtre-ac-btn btn btn-ghost'). Özgüllüğü yukarıdaki .filtre-ac-btn kuralından
     yüksek olduğu için onu eziyor, mobilde gelişmiş filtrelere ulaşmanın TEK yolu
     kapanıyordu (Bölge/Şube, Talep eden, Öncelik, Kategori erişilemezdi). Muaf tutuldu. */
  form.filter-bar:not(.acik)>.bs-filtre,form.filter-bar:not(.acik)>.btn:not(.filtre-ac-btn),form.filter-bar:not(.acik)>a.btn,form.filter-bar:not(.acik)>.flt-temizle{display:none}
  form.filter-bar.acik>.bs-filtre{flex:1 1 100%}

  /* KURAL: mobilde ACILIR LISTELER ekranin ORTASINDA pop-up olarak acilir.
     (Filtre cubugu eskisi gibi yerinde acilir; yalniz secenek panelleri pop-up.) */
  .liste-ortu{position:fixed;inset:0;background:rgba(15,23,42,.42);z-index:1190;display:none}
  .liste-ortu.acik{display:block}
  body.liste-modal{overflow:hidden}
  .bs-panel.orta-pop,.spick-pop.orta-pop{
    position:fixed!important;left:50%!important;top:50%!important;
    transform:translate(-50%,-50%);width:min(300px,calc(100vw - 24px))!important;
    max-width:none!important;min-width:0!important;max-height:70vh;overflow:auto;
    border-radius:14px;box-shadow:0 18px 46px rgba(15,23,42,.28);z-index:1200!important}
}

/* ---- Kullanıcılar: avatar (liste) + kart görünümü (v278) ---- */
.usr-av{width:30px;height:30px;border-radius:50%;flex:none;display:inline-grid;place-items:center;color:#fff;font-size:11px;font-weight:700;overflow:hidden}
.usr-av img{width:100%;height:100%;object-fit:cover}
.usr-av.lg{width:52px;height:52px;font-size:17px}
.k-tablo .trow .ttl{flex-direction:row;align-items:center;gap:10px}
.k-tablo .trow .ttl .usr-ad{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.klist-seg{margin-bottom:14px}
.klist-seg .seg-btn{border:0;background:transparent;cursor:pointer;font-family:inherit}
.k-kartlar{display:none;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:14px}
body.klist-kart .k-tablo{display:none}
body.klist-kart .k-kartlar{display:grid}
.k-kart{position:relative;display:flex;flex-direction:column;align-items:center;text-align:center;gap:4px;background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:40px 16px 18px;text-decoration:none;color:var(--text);transition:box-shadow .15s,transform .1s}
.k-kart:hover{box-shadow:var(--shadow);transform:translateY(-1px)}
.k-kart-rol{position:absolute;top:12px;left:12px;font-size:11px;font-weight:600;color:#4338ca;background:#eef2ff;padding:3px 9px;border-radius:20px;max-width:62%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.k-kart-durum{position:absolute;top:16px;right:14px;width:11px;height:11px}
.usr-av.xl{width:72px;height:72px;font-size:24px;margin-bottom:4px}
.k-kart-ad{font-weight:700;font-size:16px;line-height:1.2}
.k-kart-unvan{font-size:12.5px;color:var(--muted)}
.k-kart-alanlar{display:flex;flex-direction:column;gap:6px;margin-top:10px;width:100%}
.k-kart-satir{display:flex;align-items:center;justify-content:center;gap:7px;font-size:13px;min-width:0}
.k-kart-satir svg{width:14px;height:14px;flex:none;color:var(--muted-2)}
.k-kart-satir span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* ---- Sol menü: çıkıntılı ok toggle + daraltılabilir ray (yalnız masaüstü) ----
   v449 DÜZELTME: eşik 701px idi, ama yan menü 900px'in ALTINDA ekran dışına çekiliyor
   (max-width:900px kuralı). Aradaki 701–900px bandında — telefonun YATAY hâli tam burada —
   menü görünmezken düğme ekranın ortasında boşlukta kalıyordu. Eşik 901px'e alındı:
   düğme yalnızca menünün gerçekten sabit durduğu genişliklerde çıkar.
   Ayrıca kısa ekranlarda (yatay telefon) dikey ortalama anlamsız olduğu için gizlenir. */
.sb-cev{display:none}
@media(min-width:901px){
  /* Çıkıntılı çerçeveli ok — sidebar kenarında; overflow'a takılmasın diye .app içinde, fixed */
  .sb-cev{position:fixed;top:50%;transform:translateY(-50%);left:236px;width:24px;height:24px;display:grid;place-items:center;
    background:var(--ink-2,#1e293b);color:#94a3b8;border:1px solid var(--ink-line);border-radius:50%;
    cursor:pointer;z-index:95;transition:left .18s ease,background .15s,color .15s;box-shadow:0 2px 8px rgba(2,6,23,.4)}
  .sb-cev:hover{background:#334155;color:#e2e8f0}
  .sb-cev svg{width:15px;height:15px;transition:transform .18s ease}
  html.sb-mini .sb-cev{left:66px}
  html.sb-mini .sb-cev svg{transform:rotate(180deg)}           /* daralınca ok sağa döner (genişlet) */
  html.sb-mini .sidebar.sb-acik ~ .sb-cev{left:238px}            /* hover'da açılınca ok da kenara gider */

  html.sb-mini .app{grid-template-columns:78px 1fr}
  html.sb-mini .sidebar{width:78px;overflow:hidden;transition:width .18s ease;z-index:80}
  html.sb-mini .sidebar.sb-acik{width:250px;overflow:visible;box-shadow:8px 0 34px rgba(2,6,23,.5)}

  html.sb-mini .sidebar:not(.sb-acik) .brand-txt,
  html.sb-mini .sidebar:not(.sb-acik) .user-chip .nm,
  html.sb-mini .sidebar:not(.sb-acik) .user-chip .rl,
  html.sb-mini .sidebar:not(.sb-acik) .user-chip .eksik-rozet,
  html.sb-mini .sidebar:not(.sb-acik) .hesap-link,
  html.sb-mini .sidebar:not(.sb-acik) .logout-btn,
  html.sb-mini .sidebar:not(.sb-acik) .app-surum{display:none}
  html.sb-mini .sidebar:not(.sb-acik) .brand{justify-content:center;padding-left:0;padding-right:0}
  /* İkonlar ZIPLAMASIN: kapanınca da aynı sol boşluk (9px 11px), ortalama YOK */
  html.sb-mini .sidebar:not(.sb-acik) .nav-item{padding:9px 11px;font-size:0;position:relative;overflow:hidden}
  /* Grup etiketi → yazı gizli, yerine ince ayraç çizgisi (menü ismi boşluğu kadar) */
  html.sb-mini .sidebar:not(.sb-acik) .nav-label{font-size:0;height:0;padding:0;margin:11px 8px 6px;border-top:1px solid var(--ink-line)}
  html.sb-mini .sidebar:not(.sb-acik) .nav-badge{position:absolute;top:4px;right:12px;min-width:0;width:9px;height:9px;padding:0;font-size:0;border-radius:50%;margin:0}
  html.sb-mini .sidebar:not(.sb-acik) .user-chip{justify-content:center;padding-left:0;padding-right:0}
  html.sb-mini .sidebar:not(.sb-acik) .sidebar-foot form{text-align:center}
}

/* ---- Alıcı seçici (kc-secim): mobilde açılır liste EKRAN ORTASINDA (modal) + backdrop (v282) ---- */
.kc-backdrop{display:none}
@media(max-width:700px){
  .kc-secim.open .kc-backdrop{display:block;position:fixed;inset:0;background:rgba(15,23,42,.5);z-index:90;animation:kcFade .15s ease}
  .kc-secim.open .bs-panel{position:fixed;top:50%;left:50%;right:auto;transform:translate(-50%,-50%);width:92vw;max-width:92vw;min-width:0;max-height:82vh;z-index:91;box-shadow:0 24px 60px rgba(2,6,23,.55)}
  @keyframes kcFade{from{opacity:0}to{opacity:1}}
}

/* ==== Yeni işareti: yeşil katlanmış köşe (kıvrım) — v306 ==== */
.yk{position:relative;overflow:hidden}
.yk-yeni::after{content:"";position:absolute;top:0;right:0;width:0;height:0;
  border-style:solid;border-width:0 28px 28px 0;
  border-color:transparent #16a34a transparent transparent;
  box-shadow:-2px 2px 3px rgba(15,23,42,.20);z-index:4;
  animation:ykNabiz 1.7s ease-in-out infinite}
/* Açıldı (son 24s içinde ama kullanıcı gördü) — soluk gri, animasyonsuz */
.yk-goruldu::after{content:"";position:absolute;top:0;right:0;width:0;height:0;
  border-style:solid;border-width:0 28px 28px 0;
  border-color:transparent #94a3b8 transparent transparent;
  box-shadow:-2px 2px 3px rgba(15,23,42,.14);z-index:4}
@keyframes ykNabiz{0%,100%{opacity:1}50%{opacity:.72}}
@media (prefers-reduced-motion:reduce){.yk-yeni::after{animation:none}}
/* .trow zaten border-left (öncelik) taşıyor; kıvrım için taşıyıcıyı hazırla */
.trow.yk{overflow:hidden}

/* ==== Liste satırında kategori (sağ alt) — v309 ==== */
.trow-sag{display:flex;flex-direction:column;align-items:flex-end;gap:3px;flex:none}
.trow-kat{font-size:11px;color:var(--muted);background:#eef2f7;padding:1px 8px;border-radius:6px;max-width:140px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* ==== Anlık bildirim toast'ı (SignalR) — v316 ==== */
.bt-toast-wrap{position:fixed;right:16px;bottom:16px;z-index:9999;display:flex;flex-direction:column;gap:10px;max-width:340px;pointer-events:none}
.bt-toast{pointer-events:auto;background:#fff;border:1px solid #e2e8f0;border-left:4px solid #2563eb;border-radius:10px;
  box-shadow:0 8px 24px rgba(15,23,42,.16);padding:11px 14px;cursor:pointer;
  animation:btToastIn .28s cubic-bezier(.2,.8,.2,1)}
.bt-toast .bt-toast-b{font-weight:600;font-size:13.5px;color:#0f172a;margin-bottom:2px}
.bt-toast .bt-toast-m{font-size:12.5px;color:#475569;line-height:1.35}
.bt-toast.kapan{animation:btToastOut .25s ease forwards}
@keyframes btToastIn{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
@keyframes btToastOut{to{opacity:0;transform:translateX(24px)}}
@media (prefers-reduced-motion:reduce){.bt-toast,.bt-toast.kapan{animation:none}}

/* ==== Gemini AI arayüz parçaları — v317 ==== */
.ai-oneri{border:1px solid #dbeafe;background:#eff6ff;border-radius:10px;padding:10px 12px;font-size:13px;margin-top:6px}
.ai-oneri-bas{font-weight:600;color:#1d4ed8;margin-bottom:5px;font-size:12.5px}
.ai-oneri-icerik{color:#334155;white-space:pre-wrap;line-height:1.42}
.ai-ozet{margin:8px 0;border:1px solid #dbeafe;background:#eff6ff;border-radius:8px;padding:8px 11px;font-size:12.5px;color:#334155;white-space:pre-wrap;line-height:1.4}
.ai-btn{font-size:12.5px}
.ai-btn i{font-style:normal;margin-right:4px}

/* ==== AI butonlarında dönen renkli parıltılı çerçeve — v322 ==== */
@property --aiang { syntax: "<angle>"; initial-value: 0deg; inherits: false; }
.btn.ai-btn{
  color:#3730a3;
  font-weight:600;
  border:2px solid transparent;
  border-radius:9px;
  background:
    linear-gradient(#fff,#fff) padding-box,
    conic-gradient(from var(--aiang), #6366f1,#8b5cf6,#ec4899,#f59e0b,#10b981,#22d3ee,#6366f1) border-box;
  animation: aiDon 1.1s linear infinite, aiPar 2.2s ease-in-out infinite;
}
.btn.ai-btn:hover{ filter:brightness(1.02) }
@keyframes aiDon { to { --aiang: 360deg } }
@keyframes aiPar {
  0%,100% { box-shadow:0 0 0 rgba(139,92,246,0) }
  50%     { box-shadow:0 0 15px rgba(139,92,246,.45) }
}
@media (prefers-reduced-motion:reduce){ .btn.ai-btn{ animation:none } }

/* AI Analiz kartı — diğer raporlardan renkli çerçeveyle ayrışır (v327) */
.rapor-kart.rapor-kart-ai{
  border:2px solid transparent !important;
  background:
    linear-gradient(#fff,#fff) padding-box,
    conic-gradient(from var(--aiang), #6366f1,#8b5cf6,#ec4899,#f59e0b,#10b981,#22d3ee,#6366f1) border-box;
  animation: aiDon 3s linear infinite;
  box-shadow:0 4px 18px rgba(139,92,246,.14);
}
.rapor-kart.rapor-kart-ai::before{ display:none }
@media (prefers-reduced-motion:reduce){ .rapor-kart.rapor-kart-ai{ animation:none } }

/* ==== Açık çekmecede canlı güncelleme şeridi — v325 ==== */
.kayit-guncel-serit{position:sticky;top:0;z-index:20;background:#2563eb;color:#fff;font-size:12.5px;
  font-weight:500;text-align:center;padding:8px 12px;cursor:pointer;border-radius:0 0 8px 8px;
  box-shadow:0 2px 8px rgba(37,99,235,.28)}
.kayit-guncel-serit:hover{background:#1d4ed8}

/* ==== Raporlar AI Analiz — v326 ==== */
.ai-ornekler{display:flex;flex-wrap:wrap;gap:7px;margin:2px 0 12px}
.ai-ornek{font-size:12px;color:#3730a3;background:#eef2ff;border:1px solid #e0e7ff;border-radius:999px;padding:5px 11px;cursor:pointer}
.ai-ornek:hover{background:#e0e7ff}
.ai-analiz-sonuc{margin-top:14px;border:1px solid #dbeafe;background:#f8fafc;border-radius:10px;padding:13px 15px;font-size:13.5px;color:#1e293b;white-space:pre-wrap;line-height:1.5}
.ai-not{font-size:11.5px;color:#94a3b8;margin-top:10px}

/* ==== Worklog / harcanan süre — v335 ==== */
.zk-liste{display:flex;flex-direction:column;gap:5px;margin-bottom:9px}
.zk-satir{display:flex;gap:8px;align-items:baseline;font-size:12.5px;color:#334155;flex-wrap:wrap}
.zk-satir .zk-dk{font-weight:600;color:#0f172a}
.zk-satir .zk-tar{color:#94a3b8;font-size:11.5px}
.zk-satir .zk-acik{color:#64748b}
.zk-ekle{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.zk-ekle .zk-dkin{width:80px}
.zk-ekle .zk-acikin{flex:1;min-width:130px}

/* ==== Menü altı sürüm/marka — flex ile kesin ortalı (v342) ==== */
.app-surum{display:flex;align-items:baseline;justify-content:center;gap:5px;width:100%;
  font-size:10.5px;color:var(--muted-2);padding:10px 0 2px}
.app-surum b{color:var(--muted);font-weight:700}

/* ==== Hover-aç toggle (sidebar footer) — v344 ==== */
.sb-hover-toggle{display:flex;align-items:center;gap:8px;width:100%;margin-top:6px;padding:7px 10px;
  background:transparent;border:0;border-radius:8px;color:#94a3b8;font-size:12px;cursor:pointer;text-align:left}
.sb-hover-toggle:hover{background:var(--ink-2);color:#e2e8f0}
.sb-hover-toggle svg{width:15px;height:15px;flex:none;opacity:.8}
.sb-hover-toggle .shv-ad{flex:1}
.sb-hover-toggle .shv-durum{font-size:11px;font-weight:600;color:#64748b}
.sb-hover-toggle.shv-acik .shv-durum{color:#34d399}
@media(min-width:701px){ html.sb-mini .sidebar:not(.sb-acik) .sb-hover-toggle{display:none} }

/* ==== Toast bildirimi (alt-orta) — v345 ==== */
.toast-kap{position:fixed;left:50%;bottom:10vh;transform:translateX(-50%);z-index:9999;
  display:flex;flex-direction:column;gap:8px;align-items:center;pointer-events:none;max-width:92vw}
.toast{min-width:200px;max-width:min(92vw,420px);padding:12px 20px;border-radius:12px;color:#fff;
  font-size:13.5px;font-weight:600;text-align:center;box-shadow:0 12px 32px rgba(2,6,23,.3);
  opacity:0;transform:translateY(16px);transition:opacity .25s ease,transform .25s ease}
.toast.gir{opacity:1;transform:translateY(0)}
.toast.cik{opacity:0;transform:translateY(16px)}
.toast-ok{background:linear-gradient(180deg,#10b981,#059669)}
.toast-err{background:linear-gradient(180deg,#ef4444,#dc2626)}
@media (prefers-reduced-motion:reduce){.toast{transition:opacity .2s}.toast.gir,.toast.cik{transform:none}}

/* ==== Mesajlaşma modülü — v349 ==== */
.sohbet-wrap{display:grid;grid-template-columns:280px 1fr;gap:14px;height:calc(100vh - 170px);height:calc(100dvh - 170px);min-height:420px}
.sohbet-liste{border:1px solid var(--line);border-radius:14px;background:var(--surface);overflow-y:auto;padding:8px}
.sohbet-liste .oda{display:block;text-decoration:none;color:inherit;padding:10px 12px;border-radius:10px;margin-bottom:4px}
.sohbet-liste .oda:hover{background:var(--surface-2)}
.sohbet-liste .oda.aktif{background:#eef2ff}
.sohbet-liste .oda .ad{font-weight:600;font-size:13.5px;display:flex;align-items:center;justify-content:space-between;gap:8px}
.sohbet-liste .oda .son{color:var(--muted);font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:2px}
.oda-rozet{background:#4f46e5;color:#fff;font-size:11px;font-weight:700;min-width:18px;height:18px;border-radius:9px;display:inline-flex;align-items:center;justify-content:center;padding:0 5px}
.sohbet-ana{border:1px solid var(--line);border-radius:14px;background:var(--surface);display:flex;flex-direction:column;overflow:hidden}
.sohbet-baslik{padding:13px 16px;border-bottom:1px solid var(--line);font-weight:700}
.mesaj-akis{flex:1;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:8px;background:#f6f5f3}
.mesaj{max-width:72%;padding:8px 12px;border-radius:12px;font-size:13.5px;line-height:1.4;background:#fff;border:1px solid var(--line);align-self:flex-start}
.mesaj.ben{align-self:flex-end;background:#dcf5e3;border-color:#bbe8c9}
.mesaj .mk{font-size:11px;color:#7c3aed;font-weight:600;margin-bottom:2px}
.mesaj .ms{font-size:10.5px;color:var(--muted-2);text-align:right;margin-top:2px}
.mesaj-yaz{display:flex;gap:8px;padding:12px;border-top:1px solid var(--line)}
.mesaj-yaz input{flex:1}
.sohbet-bos{flex:1;display:grid;place-items:center;color:var(--muted)}
.sohbet-arac{display:flex;gap:6px;margin-bottom:8px}
@media(max-width:700px){ .sohbet-wrap{grid-template-columns:1fr;height:auto} .sohbet-liste{max-height:40vh} .mesaj-akis{min-height:300px} }

/* ==== Sohbet ekleri — v352 ==== */
.mesaj-img{max-width:220px;max-height:220px;border-radius:8px;display:block;margin:2px 0;cursor:pointer}
.mesaj-ek{display:inline-flex;align-items:center;gap:4px;padding:6px 10px;background:rgba(0,0,0,.05);border-radius:8px;color:inherit;text-decoration:none;font-size:12.5px;margin:2px 0}
.mesaj-ek:hover{background:rgba(0,0,0,.1)}
.mesaj-akis.surukle{outline:2px dashed #4f46e5;outline-offset:-6px;background:#eef2ff}

/* ek-modal: video/ses önizleme (v353) */
.ek-modal-icerik video{max-width:100%;max-height:84vh;background:#000}
.ek-modal-icerik audio{width:80%}

/* Sohbet: avatar + ünvan başlık + okundu tik (v354) */
.mesaj .mk{display:flex;align-items:center;gap:6px}
.mesaj-av{width:20px;height:20px;border-radius:50%;background:#6366f1;color:#fff;font-size:9px;font-weight:700;display:inline-flex;align-items:center;justify-content:center;object-fit:cover;flex:none}
.mesaj .mk .mu{color:var(--muted);font-weight:500}
.mesaj .tik{margin-left:4px;color:#94a3b8;font-weight:700}
.mesaj .tik.okundu{color:#2563eb}

/* Sohbet oda/DM oluşturma — ekran ortası popup modal (v355) */
.sohbet-modal{position:fixed;inset:0;background:rgba(15,23,42,.45);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);display:none;align-items:center;justify-content:center;z-index:9998;padding:20px}
.sohbet-modal.acik{display:flex}
.sohbet-modal-card{background:var(--surface,#fff);border-radius:16px;width:100%;max-width:520px;max-height:88vh;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 24px 70px rgba(2,6,23,.4)}
.sohbet-modal-bar{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--line)}
.sohbet-modal-bar h3{margin:0;font-size:17px}
.sohbet-modal-govde{padding:18px 20px;overflow-y:auto}
.sohbet-modal-alt{display:flex;justify-content:flex-end;gap:8px;padding:14px 20px;border-top:1px solid var(--line)}

/* Sohbet oda listesi — tür ikonu/avatarı (v356) */
.sohbet-liste .oda{display:flex;align-items:center;gap:10px}
.oda-av{width:36px;height:36px;border-radius:50%;flex:none;display:inline-flex;align-items:center;justify-content:center;font-size:15px;font-weight:700;color:#fff;background:#6366f1}
.oda-av-dm{background:#0ea5e9}
.oda-av-sube{background:#f59e0b}
.oda-av-bolge{background:#10b981}
.oda-av-departman{background:#8b5cf6}
.oda-govde{min-width:0;flex:1}
.sohbet-liste .oda .ad{display:flex}

/* Sohbet başlık — sessize al butonu (v359) */
.sohbet-baslik{display:flex;align-items:center;justify-content:space-between;gap:10px}
.sohbet-sessiz-btn{border:none;background:transparent;cursor:pointer;font-size:17px;line-height:1;padding:4px;border-radius:8px}
.sohbet-sessiz-btn:hover{background:var(--surface-2)}

/* ==== Chat-head: sürüklenebilir sabit mesaj balonu (v360) ==== */
.chat-head{position:fixed;right:28px;bottom:20px;width:52px;height:52px;border-radius:50%;
  background:linear-gradient(145deg,#6366f1,#4f46e5);color:#fff;display:flex;align-items:center;justify-content:center;
  box-shadow:0 10px 28px rgba(79,70,229,.45);cursor:grab;z-index:9990;touch-action:none;user-select:none;-webkit-user-select:none}
.chat-head:active{cursor:grabbing}
.chat-head svg{width:26px;height:26px;pointer-events:none}
.chat-head-rozet{position:absolute;top:-4px;right:-4px;min-width:20px;height:20px;padding:0 5px;border-radius:10px;
  background:#ef4444;color:#fff;font-size:11px;font-weight:700;display:flex;align-items:center;justify-content:center;border:2px solid var(--surface,#fff)}
@media print{.chat-head{display:none}}

/* ==== Chat-head mini panel + panel modu (v361) ==== */
.chat-panel{position:fixed;right:20px;bottom:88px;width:380px;max-width:calc(100vw - 24px);height:560px;max-height:calc(100vh - 120px);max-height:calc(100dvh - 120px);
  background:var(--surface,#fff);border-radius:16px;box-shadow:0 24px 70px rgba(2,6,23,.45);display:none;flex-direction:column;overflow:hidden;z-index:9991}
.chat-panel.acik{display:flex}
.chat-panel-bar{display:flex;align-items:center;gap:10px;padding:10px 14px;background:#4f46e5;color:#fff;font-weight:600}
.chat-panel-bar span{flex:1}
.chat-panel-bar .chat-panel-tam{color:#fff;text-decoration:none;font-size:16px;opacity:.9}
.chat-panel-bar .chat-panel-tam:hover{opacity:1}
.chat-panel-bar .ek-modal-x{color:#fff}
.chat-panel iframe{flex:1;border:none;width:100%;background:#fff}
@media(max-width:480px){.chat-panel{right:8px;left:8px;width:auto;bottom:80px;height:70vh}}
/* panel modu: iframe içinde yalnız sohbet (kabuk gizli) */
body.panel-mod .sidebar,body.panel-mod .topbar,body.panel-mod .chat-head,body.panel-mod .chat-panel,body.panel-mod .sb-cev,body.panel-mod .page-head,body.panel-mod .altnav,body.panel-mod .mnsheet,body.panel-mod .scrim{display:none !important}
body.panel-mod .app{display:block}
body.panel-mod .main{margin:0;padding:0;padding-bottom:0 !important}
body.panel-mod .sohbet-wrap{height:100vh;height:100dvh;padding:0;gap:0;grid-template-columns:1fr;grid-template-rows:auto 1fr}
body.panel-mod .sohbet-liste{border:none;border-radius:0;border-bottom:1px solid var(--line);max-height:42vh;padding:6px}
body.panel-mod .sohbet-ana{border:none;border-radius:0}
body.panel-mod .mesaj-akis{min-height:0}
body.panel-mod .sohbet-fab{margin-bottom:6px}
body.panel-mod .sohbet-bos{padding:20px;font-size:13px}

/* ==== Standart kişi rozeti (avatar + isim + ünvan) — v363 ==== */
.kisi-rozet{display:inline-flex;align-items:center;gap:8px;vertical-align:middle;min-width:0}
.kisi-rozet-txt{display:flex;flex-direction:column;min-width:0;line-height:1.2}
.kisi-rozet-ad{font-weight:600;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.kisi-rozet-unvan{font-size:11px;color:var(--muted)}
.kisi-rozet.kucuk .kisi-rozet-ad{font-size:12px}
.kisi-rozet.kucuk .mini-ava{width:24px;height:24px;font-size:10px}

/* Sohbet: aktif/pasif (online) noktası — v364 */
.av-wrap{position:relative;display:inline-flex;flex:none}
.pnokta{position:absolute;right:-1px;bottom:-1px;width:11px;height:11px;border-radius:50%;border:2px solid var(--surface,#fff);background:#94a3b8}
.pnokta.aktif{background:#22c55e}
.pnokta.pasif{background:#94a3b8}

/* ==== Sohbet: + speed-dial FAB (yukarı kayan) — v365 ==== */
.sohbet-fab{position:relative;display:inline-block;margin-bottom:8px}
.sohbet-fab-ana{width:40px;height:40px;border-radius:50%;border:none;background:#4f46e5;color:#fff;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 6px 16px rgba(79,70,229,.4);transition:transform .2s}
.sohbet-fab-ana svg{width:20px;height:20px}
.sohbet-fab.acik .sohbet-fab-ana{transform:rotate(135deg)}
.sohbet-fab-menu{position:absolute;left:0;bottom:48px;display:flex;flex-direction:column;gap:8px;z-index:6}
.sohbet-fab-oge{display:inline-flex;align-items:center;gap:8px;white-space:nowrap;padding:8px 14px;border:1px solid var(--line);border-radius:22px;background:var(--surface,#fff);cursor:pointer;font-size:13px;font-weight:600;
  box-shadow:0 4px 14px rgba(2,6,23,.14);opacity:0;transform:translateY(12px);pointer-events:none;transition:opacity .18s ease,transform .18s ease}
.sohbet-fab.acik .sohbet-fab-oge{opacity:1;transform:translateY(0);pointer-events:auto}
.sohbet-fab.acik .sohbet-fab-oge:nth-child(2){transition-delay:.05s}
.sohbet-fab-oge .fab-ik{font-size:14px}

/* ==== Sohbet oda satırı: sabitleme + sıra araçları (v365b) ==== */
.oda-satir{position:relative}
.oda-satir.sabit{background:#faf9ff;border-radius:10px}
.oda-satir.sabit::before{content:"📌";position:absolute;left:2px;top:2px;font-size:9px;opacity:.6}
.oda-araclar{position:absolute;right:8px;top:50%;transform:translateY(-50%);display:none;gap:2px;align-items:center;background:var(--surface,#fff);border-radius:8px;padding:2px 4px;box-shadow:0 2px 8px rgba(2,6,23,.14)}
.oda-satir:hover .oda-araclar,.oda-satir.sabit .oda-araclar{display:inline-flex}
.oda-araclar button{border:none;background:transparent;cursor:pointer;font-size:12px;line-height:1;padding:3px;border-radius:6px;color:var(--muted)}
.oda-araclar button:hover{background:var(--surface-2)}
.oda-araclar button.pin.aktif{opacity:1}
.oda-araclar button.pin{opacity:.5}

/* ==== Sohbet giriş — çekmece tasarımı (pill input + yuvarlak yeşil gönder) v366b ==== */
.mesaj-yaz{gap:8px;align-items:center}
.mesaj-yaz #mesajInp{flex:1;min-height:44px;border:1.5px solid var(--line);border-radius:99px;padding:0 16px;font-size:13.5px;outline-color:#00a884;background:var(--surface);font-family:inherit}
.mesaj-yaz .gonder{background:#00a884;color:#fff;width:44px;height:44px;min-width:44px;border:none;border-radius:50%;padding:0;display:flex;align-items:center;justify-content:center;cursor:pointer;flex:none}
.mesaj-yaz .gonder svg{width:18px;height:18px}
.mesaj-yaz .ek-btn{width:40px;height:40px;border:1px solid var(--line);border-radius:50%;background:var(--surface);cursor:pointer;font-size:16px;flex:none;display:flex;align-items:center;justify-content:center}
.mesaj-yaz .ek-btn:hover{background:var(--surface-2)}

/* ==== v368: FAB menü aşağı açılır (üstte görünür) + oda context menu + cava nokta ==== */
.sohbet-fab-menu{bottom:auto;top:46px}
.cmsg .cava{position:relative}
.cmsg .cava .pnokta{right:-1px;bottom:-1px}
.oda-menu{position:fixed;z-index:9995;background:var(--surface,#fff);border:1px solid var(--line);border-radius:10px;box-shadow:0 12px 30px rgba(2,6,23,.25);padding:4px;display:none;min-width:160px}
.oda-menu.acik{display:block}
.oda-menu button{display:block;width:100%;text-align:left;border:none;background:transparent;padding:10px 12px;border-radius:7px;cursor:pointer;font-size:13px;color:inherit}
.oda-menu button:hover{background:var(--surface-2)}
.oda-satir{position:relative;cursor:context-menu}
.oda-satir.sabit{background:#faf9ff;border-radius:10px}

/* ==== v369: isim koyu değil + @bahsetme autocomplete ==== */
.cmsg .ckim{font-weight:600}
.sohbet-ana{position:relative}
.mention-kutu{position:absolute;left:12px;right:12px;bottom:70px;background:var(--surface,#fff);border:1px solid var(--line);border-radius:12px;box-shadow:0 -6px 24px rgba(2,6,23,.16);max-height:220px;overflow:auto;display:none;z-index:8}
.mention-kutu.acik{display:block}
.mention-oge{display:flex;align-items:center;gap:8px;padding:8px 12px;cursor:pointer;font-size:13px}
.mention-oge:hover{background:var(--surface-2)}
.mention-oge small{color:var(--muted)}
.m-av{width:26px;height:26px;border-radius:50%;background:#6366f1;color:#fff;font-size:10px;font-weight:700;display:inline-flex;align-items:center;justify-content:center;flex:none;background-size:cover}

/* ==== v370: @mention vurgu rengi + sürükle görseli ==== */
.cmsg .mention{color:#4f46e5;font-weight:600}
.cmsg.ben .mention{color:#047857}
.oda-satir.sabit{cursor:grab}
.oda-satir.suruk{opacity:.45}

/* ==== v375: MESAJLAŞMA YENİDEN TASARIM — bileşen stilleri (mockup onaylı) ==== */
/* liste ekranı */
.m-liste{position:absolute;inset:0;display:flex;flex-direction:column}
.m-top{background:#4f46e5;color:#fff;padding:26px 16px 8px;font-weight:700;font-size:16px}
.m-ara{display:flex;align-items:center;gap:8px;margin-top:8px;background:rgba(255,255,255,.16);border-radius:10px;padding:5px 11px}
.m-ara .ara-ik{color:rgba(255,255,255,.85);display:inline-flex;flex:none}
.m-ara .ara-ik svg{width:16px;height:16px}
.m-ara input{flex:1;min-width:0;border:none;background:transparent;outline:none;color:#fff;font-size:16px;font-family:inherit}
.m-ara input::placeholder{color:rgba(255,255,255,.7)}
.m-filtre{display:flex;gap:7px;padding:11px 12px 9px;background:#4f46e5;overflow-x:auto;overflow-y:visible;scrollbar-width:none}
.m-filtre::-webkit-scrollbar{display:none}
.fbtn{display:inline-flex;align-items:center;gap:6px;white-space:nowrap;flex:none;border:none;background:rgba(255,255,255,.16);color:#fff;border-radius:99px;padding:7px 13px;font-size:12.5px;font-weight:600;cursor:pointer;font-family:inherit}
.fbtn svg{width:15px;height:15px}
.fbtn.akt{background:#fff;color:#4f46e5}
.fbtn{position:relative;overflow:visible}
.fbz{position:absolute;top:-9px;right:-5px;background:linear-gradient(135deg,#2dd4bf,#0d9488);color:#fff;font-size:10px;font-weight:600;min-width:18px;height:18px;border-radius:9px;display:inline-flex;align-items:center;justify-content:center;padding:0 5px;white-space:nowrap;box-sizing:border-box;border:2px solid #4f46e5;animation:fbparilti 1.6s ease-out infinite}
@keyframes fbparilti{0%,100%{box-shadow:0 0 0 0 rgba(45,212,191,.55)}50%{box-shadow:0 0 0 7px rgba(45,212,191,0)}}
.m-odalar{flex:1;overflow-y:auto;padding:8px 8px 70px}
.m-oda{display:flex;align-items:center;gap:11px;padding:10px;border-radius:12px;cursor:pointer}
.m-oda:active{background:#e2e8f0}
.m-oda .av{width:46px;height:46px;border-radius:50%;background-size:cover;flex:none;position:relative}
.m-oda .av .pn{position:absolute;right:0;bottom:1px;width:11px;height:11px;border-radius:50%;background:#14b8a6;border:2px solid #eef2f7}
.m-oda .gv{flex:1;min-width:0;line-height:1.25}
.m-oda .gv b{font-size:14px;font-weight:500;color:#334155;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.m-oda .gv .unv{font-size:11px;color:#94a3b8;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.m-oda .gv small{font-size:12px;color:#64748b;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.m-oda .rz{background:#14b8a6;color:#fff;font-size:11px;font-weight:700;min-width:19px;height:19px;border-radius:10px;display:flex;align-items:center;justify-content:center;padding:0 5px}
.ara-ayrac{display:flex;align-items:center;gap:10px;color:#94a3b8;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;padding:10px 10px 6px}
.ara-ayrac:before,.ara-ayrac:after{content:"";flex:1;height:1px;background:#e2e8f0}
.msnip b{color:#0d9488;font-weight:700}
.m-oda.sabit{background:linear-gradient(90deg,rgba(79,70,229,.06),transparent)}
.m-oda.sabit .sabit-ik{position:absolute;left:6px;top:6px;color:#4f46e5;opacity:.7}
.m-oda{position:relative;transition:transform .12s,box-shadow .12s}
.m-oda.surukle{opacity:.95;transform:scale(1.03);box-shadow:0 10px 28px rgba(2,6,23,.22);background:#fff;z-index:6;border-radius:12px}
.oda-yaziyor{color:#0d9488 !important;font-style:italic;display:flex;align-items:center;gap:5px}
.yz-mini{display:inline-flex;gap:3px;align-items:center}
.yz-mini span{width:5px;height:5px;border-radius:50%;background:#0d9488;display:inline-block;animation:yzp 1.3s infinite ease-in-out}
.yz-mini span:nth-child(2){animation-delay:.18s}
.yz-mini span:nth-child(3){animation-delay:.36s}
.m-fab{position:absolute;right:18px;bottom:78px;width:56px;height:56px;border-radius:50%;background:#4f46e5;color:#fff;border:none;font-size:30px;box-shadow:0 12px 30px rgba(79,70,229,.5);cursor:pointer;z-index:20}
.m-altnav{position:absolute;left:0;right:0;bottom:0;height:62px;background:#fff;border-top:1px solid #eef2f7;display:flex;z-index:15}
.anav{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;font-size:10.5px;color:#94a3b8;text-decoration:none;cursor:pointer}
.anav span{display:inline-flex}
.anav svg{width:21px;height:21px}
.anav.akt{color:#4f46e5;font-weight:600}
.m-galeri{position:absolute;inset:0;background:#fff;display:none;flex-direction:column;z-index:80}
.m-galeri.acik{display:flex}
.gal-bar{display:flex;align-items:center;gap:10px;padding:44px 14px 12px;background:#4f46e5;color:#fff}
.gal-bar .gal-geri{display:inline-flex;cursor:pointer}
.gal-bar svg{width:23px;height:23px}
.gal-basl{display:flex;flex-direction:column;line-height:1.2}
.gal-basl b{font-size:15px}
.gal-basl small{font-size:11px;opacity:.82;font-weight:400}
.gal-tab{display:flex;gap:8px;padding:10px 12px;border-bottom:1px solid #eef2f7}
.gt{flex:1;padding:8px;border:none;background:#f1f5f9;border-radius:9px;font-weight:600;font-size:12.5px;color:#64748b;cursor:pointer}
.gt.akt{background:#eef2ff;color:#4338ca}
.gal-grid{flex:1;overflow-y:auto;padding:10px;display:grid;grid-template-columns:repeat(3,1fr);gap:8px;align-content:start}
.gal-oge{aspect-ratio:1;border-radius:10px;cursor:pointer;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:12px;color:#fff;overflow:hidden}
.gal-oge.dosya{flex-direction:column;gap:4px;font-size:11px}
.gal-grid.liste{display:block;padding:6px 10px}
.gd-oge{display:flex;align-items:center;gap:12px;padding:10px 6px;border-bottom:1px solid #f1f5f9;cursor:pointer}
.gd-oge:active{background:#f8fafc}
.gd-ik{width:42px;height:42px;border-radius:11px;flex:none;display:flex;align-items:center;justify-content:center;color:#fff;font-weight:800;font-size:11px}
.gd-bilgi{flex:1;min-width:0}
.gd-bilgi b{font-size:13.5px;font-weight:600;color:#334155;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gd-bilgi small{font-size:11.5px;color:#94a3b8}
.gd-indir{color:#94a3b8;flex:none;display:inline-flex}
.gd-indir svg{width:19px;height:19px}
.m-lightbox{position:absolute;inset:0;background:rgba(10,14,22,.96);display:none;flex-direction:column;z-index:85}
.m-lightbox.acik{display:flex}
.lb-bar{display:flex;align-items:center;gap:12px;padding:46px 9% 12px;color:#fff}
.lb-bar b{flex:1;font-size:13.5px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lb-bar .lb-kapat,.lb-bar .lb-indir{display:inline-flex;cursor:pointer;color:#fff}
.lb-bar svg{width:22px;height:22px}
.lb-sahne{flex:1;display:flex;align-items:center;justify-content:center;padding:12px;overflow:hidden}
.lb-gorsel{max-width:100%;max-height:100%;width:88%;aspect-ratio:3/4;box-shadow:0 20px 50px rgba(0,0,0,.4);border-radius:14px;display:flex;align-items:center;justify-content:center;color:#fff;font-weight:700}
.lb-dosya{text-align:center;color:#cbd5e1}
.lb-dosya .ik{width:88px;height:88px;border-radius:18px;display:flex;align-items:center;justify-content:center;font-size:22px;font-weight:800;color:#fff;margin:0 auto 14px}
.lb-ok{position:absolute;top:50%;transform:translateY(-50%);width:40px;height:40px;border-radius:50%;background:rgba(255,255,255,.14);border:none;color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer}
.lb-ok.sol{left:10px}
.lb-ok.sag{right:10px}
.lb-ok svg{width:22px;height:22px}
.lb-sayac{text-align:center;color:#94a3b8;font-size:12px;padding:8px 0 18px}
.m-sheet-scrim{position:absolute;inset:0;background:rgba(15,23,42,.4);display:none;z-index:70}
.m-sheet-scrim.acik{display:block}
.m-sheet{position:absolute;left:0;right:0;bottom:0;background:#fff;border-radius:20px 20px 0 0;padding:8px 12px 18px;transform:translateY(110%);transition:transform .22s ease;z-index:71;pointer-events:none}
.m-sheet.acik{transform:translateY(0);pointer-events:auto}
.ms-tut{width:40px;height:4px;background:#cbd5e1;border-radius:99px;margin:6px auto 10px}
.ms-bas{display:flex;align-items:center;gap:11px;font-weight:600;font-size:14.5px;padding:4px 8px 12px;color:#334155;border-bottom:1px solid #f1f5f9;margin-bottom:6px}
.ms-av{width:42px;height:42px;border-radius:50%;flex:none;overflow:hidden}
.ms-kim{display:flex;flex-direction:column;line-height:1.25;min-width:0}
.ms-kim b{font-weight:600;font-size:14.5px}
.ms-kim small{font-size:11.5px;color:#94a3b8}
.ms-op{display:flex;align-items:center;gap:13px;width:100%;border:none;background:transparent;padding:13px 8px;font-size:14px;color:#334155;cursor:pointer;border-radius:10px;font-family:inherit}
.ms-op:active{background:#f1f5f9}
.ms-op span{display:inline-flex;color:#64748b}
.ms-op svg{width:20px;height:20px}
.ms-op.sil{color:#dc2626}
.ms-op.sil span{color:#dc2626}
/* sohbet — ortada modal */
.m-chatscrim{position:absolute;inset:0;background:rgba(15,23,42,.5);display:none;z-index:30}
.m-chatscrim.acik{display:block}
.m-chat{position:absolute;inset:0;background:#efeae2;border-radius:0;display:none;flex-direction:column;overflow:hidden;z-index:40}
.m-chat.acik{display:flex}
.m-cbar{display:flex;align-items:center;gap:10px;padding:32px 14px 12px;background:#4f46e5;color:#fff}
.m-cbar .geri{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:50%;cursor:pointer;margin-left:-4px}
.m-cbar .geri:active{background:rgba(255,255,255,.15)}
.m-cbar .geri svg{width:23px;height:23px}
.m-cbar .av{width:34px;height:34px;border-radius:50%;background-size:cover;flex:none;position:relative;cursor:pointer;border:2px solid rgba(255,255,255,.5)}
.m-cbar .av .pn{position:absolute;right:-1px;bottom:-1px;width:9px;height:9px;border-radius:50%;background:#14b8a6;border:2px solid #4f46e5}
.m-cbar .who{flex:1;min-width:0;cursor:pointer}
.m-cbar .who b{font-size:14px;display:block;line-height:1.1}
.m-cbar .who small{font-size:11px;opacity:.85}
.m-chat .mesaj-akis{flex:1;min-height:0;background:transparent}
/* kişi kartı — ortada */
.m-kk{position:absolute;left:16px;right:16px;top:50%;transform:translateY(-50%);max-height:calc(100% - 32px);background:#fff;border-radius:18px;box-shadow:0 24px 60px rgba(2,6,23,.45);padding:16px;display:none;z-index:50;overflow-y:auto}
.m-kk.acik{display:block}
.kk-head{display:flex;flex-direction:column;align-items:center;text-align:center;gap:6px;margin-bottom:14px}
.kk-av{width:66px;height:66px;border-radius:50%;background-size:cover}
.kk-head b{font-size:17px}
.kk-un{font-size:12.5px;color:#64748b}
.kk-ico{display:flex;gap:16px;justify-content:center;margin-bottom:14px}
.kk-btn{width:48px;height:48px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff;text-decoration:none}
.kk-btn svg{width:21px;height:21px}
.kk-btn.wa{background:#25d366}
.kk-btn.mail{background:#6366f1}
.kk-btn.tel{background:#3b82f6}
.kk-bilgi{border-top:1px solid #f1f5f9;padding-top:12px;display:flex;flex-direction:column;gap:10px}
.kk-bilgi div{display:flex;align-items:center;gap:11px;font-size:13px}
.kk-bilgi .bico{color:#94a3b8;flex:none;display:inline-flex}
.kk-bilgi .bico svg{width:17px;height:17px}
.kk-bilgi b{color:#334155;font-weight:500}
.kk-medya{border-top:1px solid #f1f5f9;margin-top:12px;padding-top:12px}
.km-bas{display:flex;justify-content:space-between;font-size:12px;color:#64748b;margin-bottom:9px}
.km-bas a{color:#4f46e5;font-weight:600;text-decoration:none}
.km-strip{display:flex;gap:8px;overflow-x:auto;scrollbar-width:none;-ms-overflow-style:none}
.km-strip::-webkit-scrollbar{display:none}
.km-oge{width:52px;height:52px;border-radius:10px;flex:none;background:#f1f5f9;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;color:#64748b;background-size:cover;cursor:pointer}
.km-oge.pdf{background:#fef2f2;color:#dc2626}
.km-oge.xls{background:#f0fdf4;color:#16a34a}
.km-oge.more{background:#eef2ff;color:#4338ca}
.kk-kapat{margin-top:14px;width:100%;padding:11px;border:none;background:#f1f5f9;border-radius:12px;cursor:pointer;font-weight:600;color:#475569}
/* WhatsApp giriş */
.m-yaz{display:flex;flex-direction:column;gap:6px;padding:8px 8px calc(8px + env(safe-area-inset-bottom,0px))}
.m-yaz.yaziyor .oneri-bar{display:none}
.oneri-bar{display:flex;gap:7px;overflow-x:auto;scrollbar-width:none;padding:0 2px}
.oneri-bar::-webkit-scrollbar{display:none}
.oneri-cip{white-space:nowrap;flex:none;border:none;background:#fff;border-radius:99px;padding:6px 13px;font-size:12px;color:#54656f;cursor:pointer;box-shadow:0 1px 4px rgba(2,6,23,.12);font-family:inherit}
.oneri-ai{flex:none;width:32px;height:32px;border:none;background:linear-gradient(135deg,#eef2ff,#faf5ff);color:#7c3aed;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 1px 4px rgba(124,58,237,.2)}
.oneri-ai svg{width:17px;height:17px}
.yz-balon{display:inline-flex !important;align-items:center;gap:4px;padding:12px 14px !important}
.yz-balon span{width:7px;height:7px;border-radius:50%;background:#94a3b8;display:inline-block;animation:yzp 1.3s infinite ease-in-out}
.yz-balon span:nth-child(2){animation-delay:.18s}
.yz-balon span:nth-child(3){animation-delay:.36s}
@keyframes yzp{0%,60%,100%{opacity:.3;transform:translateY(0)}30%{opacity:1;transform:translateY(-4px)}}
.yz-yazi{color:#a5f3ea;font-style:italic}
.wa-row{display:flex;align-items:flex-end;gap:6px}
.wa-pill{flex:1;min-width:0;display:flex;align-items:flex-end;background:#fff;border-radius:22px;padding:2px 4px}
.wa-pill textarea{flex:1;min-width:0;border:none;outline:none;background:transparent;resize:none;padding:9px 6px;margin:0;font-size:16px;font-family:inherit;line-height:1.35;max-height:100px;overflow-y:auto;box-sizing:border-box}
.wa-ic{flex:none;background:transparent;border:none;color:#8696a0;font-size:18px;padding:7px;cursor:pointer;border-radius:50%}
.wa-send{flex:none;width:46px;height:46px;border-radius:50%;background:#0d9488;color:#fff;border:none;display:flex;align-items:center;justify-content:center;cursor:pointer}
.wa-send svg{width:21px;height:21px}
/* yeni menü */
.m-yeni{position:absolute;left:16px;right:16px;bottom:140px;background:#fff;border-radius:16px;box-shadow:0 24px 60px rgba(2,6,23,.35);display:none;z-index:45;overflow:hidden}
.m-yeni.acik{display:block}
.m-yeni .yb{background:#4f46e5;color:#fff;padding:11px 15px;font-weight:600;font-size:13.5px}
.m-yeni .yk{display:flex;align-items:center;gap:11px;padding:12px 15px;cursor:pointer}
.m-yeni .yk:active{background:#f1f5f9}
.m-yeni .yk .ic{width:38px;height:38px;border-radius:50%;background:#f1f5f9;color:#64748b;display:flex;align-items:center;justify-content:center}
.m-yeni .yk .ic svg{width:19px;height:19px}
.cmsg.ben .ctik{color:#0d9488}
.cmsg.ben .cblk:before{border-top-color:#ccfbf1 !important;border-left-color:#ccfbf1 !important}
/* ==== v377: MESAJLAŞMA mobil katman kapısı (Aşama 2) ==== */
/* v386: Mesajlaşma birleşik katman — mobil + masaüstü (iki-panel) aynı bileşenler */
.sohbet-mobil{display:block}
.sohbet-wrap,.oda-menu{display:none!important}
@media (max-width:700px){
  /* Mesajlasma mobil ekrani da PROJE STANDARTLARINA uyar:
     - sayfanin ORTAK alt menusu (.altnav) kullanilir; sohbete ozel kopya
       (.m-altnav) gizlenir, ekran onun ustunde biter (bottom:59px).
     - yuzen sohbet balonu (.chat-head) BU EKRANDA GIZLENIR: zaten
       mesajlasmadasin, balon icerigi ortuyordu (KURAL 13'un istisnasi).
     - "+" dugmesi standart olcu ve uzaklikta: 40x40, sagdan 12, alttan 12. */
  /* Ekran TAM EKRANDIR (inset:0); ortak alt menu icin yer, kabin alt dolgusuyla
     acilir. Onceki 'bottom:59px' denemesi ata kabin yuksekligine takildi ve
     ekranla menu arasinda 9 px'lik kayma birakti. */
  .sohbet-mobil{position:fixed;inset:0;z-index:900;background:#fff}
  /* Ortak alt menu sohbet katmaninin USTUNDE kalir (z 900 -> 901); ekran tam
     ekran oldugu icin menu aksi halde ortuluyordu. Icerik menunun altina
     girmesin diye .m-odalar alt dolgusu 71 px (59 menu + 12 standart bosluk). */
  .altnav{z-index:901}
  .sohbet-mobil .m-altnav{display:none!important}
  body.sohbet-sayfa .chat-head,body.sohbet-sayfa #chatHead{display:none!important}
  .sohbet-mobil .m-odalar{padding-bottom:71px}
  /* "+" artik GERCEK SVG (Views/Sohbet/Index.cshtml). Dugme grid ile ortalar;
     metin glifi ya da maske olceklemesi kaynakli kayma kalmaz. */
  .m-fab{width:40px;height:40px;right:12px;bottom:71px;padding:0;position:absolute;
         display:grid;place-items:center;line-height:0;font-size:0;
         box-shadow:0 8px 20px rgba(79,70,229,.4)}
  .m-fab svg{width:18px;height:18px;display:block}

  /* Alttan acilan katmanlarda SATIR ARALIGI STANDARDI 9 px.
     Hem "+" popover'i (.m-yeni) hem de alt sayfa (.m-sheet) satirlari
     bitisikti (aralik 0); ikisi de 9 px'e alindi, kap dolgusu da 9 px. */
  .m-yeni{padding:9px}
  .m-yeni > * + *{margin-top:9px}
  .m-yeni .yk{border-radius:10px}
  .m-sheet{padding:9px 9px 12px!important}
  .m-sheet > * + *{margin-top:9px}
  .m-sheet .ms-bas{margin-bottom:0}
  .m-sheet .ms-tut{margin:0 auto 9px}

  /* 0,75 OLCEK — mesajlasma ekraninin kendi olculeri de standarda cekilir. */
  .m-top{padding:12px 12px 6px}
  .m-ara{height:40px;min-height:40px;padding:0 9px}
  .m-filtre{padding:6px 9px 6px;justify-content:center}
  .m-filtre .fbtn{height:40px;min-height:40px;padding:0 10px}
  .m-oda{padding:6px 7px}
  .m-oda .av{width:34px;height:34px;font-size:12px}
}
@media (min-width:701px){
  .sohbet-mobil{position:relative;height:calc(100vh - 150px);height:calc(100dvh - 150px);min-height:460px;border:1px solid var(--line);border-radius:14px;overflow:hidden;background:#fff;container-type:inline-size;container-name:sohbetk}
  .sohbet-mobil .m-chatscrim{display:none!important}
  .sohbet-mobil .m-altnav{display:none!important}
  .sohbet-mobil .m-odalar{padding-bottom:10px}
  .sohbet-mobil .m-fab{bottom:16px;right:16px}
  .sohbet-mobil .m-top{padding:16px 16px 10px}
  .sohbet-mobil .m-cbar{padding:14px 16px}
  .sohbet-mobil .m-yeni{left:16px;right:auto;width:300px;bottom:80px}
  .sohbet-mobil .m-kk{left:50%;right:auto;top:24px;transform:translateX(-50%);width:390px;max-width:calc(100% - 32px);max-height:calc(100% - 48px)}
}
/* İki-panel yalnız GERÇEKTEN sığdığında (liste 340 + sohbet ~340). Sığmazsa tek-panel (mobil overlay) içerikte kalır → bozulmaz. */
@container sohbetk (min-width:680px){
  .sohbet-mobil .m-liste{width:340px;right:auto;border-right:1px solid var(--line)}
  .sohbet-mobil .m-chat{left:340px}
  .sohbet-mobil .m-cbar .geri{display:none!important}
}

/* ==== v380: MESAJLAŞMA masaüstü çoklu-pencere (Aşama 4a — CSS temeli, mockup birebir) ==== */
.chat-dock{position:fixed;right:28px;bottom:0;display:flex;align-items:flex-end;gap:14px;z-index:9000}
.chat-min{display:flex;flex-direction:column;gap:10px;align-items:center;margin-bottom:82px}
.min-bubble{width:52px;height:52px;border-radius:50%;background-size:cover;box-shadow:0 14px 36px rgba(2,6,23,.45);cursor:pointer;position:relative;border:2px solid #fff}
.min-bubble .pn{position:absolute;right:0;bottom:2px;width:12px;height:12px;border-radius:50%;background:#22c55e;border:2px solid #fff}
.min-bubble .rz{position:absolute;top:-4px;right:-4px;background:#ef4444;color:#fff;font-size:10px;font-weight:700;min-width:18px;height:18px;border-radius:9px;display:flex;align-items:center;justify-content:center;border:2px solid #fff}
@keyframes parilti{0%,100%{box-shadow:0 14px 36px rgba(2,6,23,.45),0 0 0 0 rgba(var(--glow,14,165,233),.6)}50%{box-shadow:0 14px 36px rgba(2,6,23,.45),0 0 0 11px rgba(var(--glow,14,165,233),0)}}
.min-bubble.okunmamis{animation:parilti 1.5s ease-out infinite}
.ikon-cev{display:inline-flex;align-items:center;justify-content:center;border-radius:50%;background:#f1f5f9;color:#64748b}
.ikon-cev svg{width:18px;height:18px}
.min-plus{width:52px;height:52px;border-radius:50%;border:none;background:#4f46e5;color:#fff;font-size:28px;cursor:pointer;box-shadow:0 14px 36px rgba(79,70,229,.6);display:flex;align-items:center;justify-content:center}
.cwin{position:relative;width:320px;height:420px;background:#fff;border-radius:14px 14px 0 0;box-shadow:0 26px 74px rgba(2,6,23,.45);display:flex;flex-direction:column;overflow:hidden;border:1px solid #e2e8f0;border-bottom:none}
.cwin.mini{height:0;width:0;opacity:0;pointer-events:none;position:absolute}
.cwin-bar{display:flex;align-items:center;gap:9px;padding:9px 12px;background:#4f46e5;color:#fff}
.cwin-bar .av{width:30px;height:30px;border-radius:50%;flex:none;background-size:cover;position:relative;border:2px solid rgba(255,255,255,.5);cursor:pointer}
.cwin-bar .pn{position:absolute;right:-1px;bottom:-1px;width:9px;height:9px;border-radius:50%;background:#22c55e;border:2px solid #4f46e5}
.cwin-bar .who{flex:1;min-width:0;cursor:pointer}.cwin-bar .who b{font-size:13.5px;display:block;line-height:1.1}.cwin-bar .who small{font-size:11px;opacity:.85}
.cwin-bar .ic{cursor:pointer;opacity:.9;font-size:15px;padding:2px 5px;line-height:1}
.cwin .mesaj-akis{flex:1;min-height:0}
.cwin .mesaj-yaz{padding:8px 10px;gap:6px;align-items:flex-end}
.cwin .mesaj-yaz textarea{flex:1;min-width:0;resize:none;border:1.5px solid var(--line);border-radius:18px;padding:9px 13px;font-size:13px;font-family:inherit;outline-color:#00a884;line-height:1.35;max-height:110px;overflow-y:auto}
.cwin .mesaj-yaz .yz-btnlar{display:flex;flex-direction:column;gap:6px;flex:none}
.cwin .mesaj-yaz .ek-btn{width:36px;height:36px;flex:none}
.cwin .mesaj-yaz .gonder{width:36px;height:36px;flex:none;border-radius:50%;padding:0}

@media (max-width:700px){.chat-dock{display:none!important}}
.sohbet-yeni-menu{position:fixed;right:20px;bottom:84px;z-index:9500;background:#fff;border:1px solid #e2e8f0;border-radius:14px;box-shadow:0 24px 60px rgba(2,6,23,.3);width:250px;max-height:60vh;overflow:hidden;display:flex;flex-direction:column}
.sohbet-yeni-menu .sym-bas{background:#4f46e5;color:#fff;padding:10px 14px;font-weight:600;font-size:13px}
.sohbet-yeni-menu .sym-liste{overflow-y:auto;padding:6px}
.sohbet-yeni-menu .sym-oge{display:flex;gap:9px;align-items:center;padding:8px 9px;border-radius:9px;cursor:pointer}
.sohbet-yeni-menu .sym-oge:hover{background:#f1f5f9}
.sohbet-yeni-menu .sym-oge .av{width:32px;height:32px;border-radius:50%;flex:none;background-size:cover;display:flex;align-items:center;justify-content:center;color:#fff;font-weight:700;font-size:12px;background-color:#4f46e5}
.sohbet-yeni-menu .sym-oge .gv{min-width:0;flex:1}
.sohbet-yeni-menu .sym-oge .gv b{font-size:13px;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sohbet-yeni-menu .sym-oge .gv small{font-size:11px;color:#64748b}
.sohbet-yeni-menu .sym-oge .rz{background:#14b8a6;color:#fff;font-size:10px;font-weight:700;min-width:18px;height:18px;border-radius:9px;display:flex;align-items:center;justify-content:center;padding:0 4px}
.sohbet-yeni-menu .sym-bos{padding:18px;text-align:center;color:#94a3b8;font-size:12.5px}

/* v386: ek gönderim önizleme + onay */
.m-onizle{position:absolute;inset:0;background:rgba(15,23,42,.6);display:none;align-items:center;justify-content:center;z-index:75;padding:20px}
.m-onizle.acik{display:flex}
.m-onizle-card{background:#fff;border-radius:16px;max-width:420px;width:100%;max-height:90%;overflow:hidden;display:flex;flex-direction:column;box-shadow:0 24px 60px rgba(2,6,23,.5)}
.m-onizle-gorsel{background:#0f172a;min-height:160px;max-height:52vh;display:flex;align-items:center;justify-content:center;overflow:hidden}
.m-onizle-gorsel img{max-width:100%;max-height:52vh;object-fit:contain;display:block}
.m-onizle-dosya{padding:34px 20px;text-align:center;color:#334155;font-weight:600;font-size:14px;word-break:break-all}
.m-onizle-alt{padding:12px;display:flex;gap:8px;align-items:center;border-top:1px solid #eef2f7}
.m-onizle-alt input{flex:1;min-width:0;border:1px solid var(--line);border-radius:20px;padding:10px 14px;font-size:16px;outline-color:#0d9488}
.m-onizle-alt .ipt{background:#e2e8f0;color:#475569;border:none;border-radius:50%;width:42px;height:42px;flex:none;cursor:pointer;font-size:17px}
.m-onizle-alt .gon{background:#0d9488;color:#fff;border:none;border-radius:50%;width:44px;height:44px;flex:none;cursor:pointer;display:flex;align-items:center;justify-content:center}
.m-onizle-alt .gon svg{width:20px;height:20px}

/* v388: sağ-tık kompakt popover (masaüstü) + isteğe bağlı maximize */
.m-sheet-scrim.seffaf{background:transparent}
.m-sheet.pop{left:auto;right:auto;bottom:auto;width:248px;max-width:248px;border-radius:14px;padding:8px;box-shadow:0 18px 44px rgba(2,6,23,.28);transform:translateY(-6px);opacity:0;transition:opacity .12s ease,transform .12s ease}
.m-sheet.pop.acik{transform:translateY(0);opacity:1;pointer-events:auto}
.m-max{display:none}
@media(min-width:701px){
  .sohbet-mobil .m-top{position:relative}
  .sohbet-mobil .m-max{display:inline-flex;position:absolute;top:14px;right:14px;width:30px;height:30px;border-radius:8px;background:rgba(255,255,255,.18);border:none;color:#fff;cursor:pointer;align-items:center;justify-content:center}
  .sohbet-mobil .m-max svg{width:16px;height:16px}
  .sohbet-mobil.tamekran{position:fixed;inset:0;height:auto;z-index:900;border-radius:0;border:none}
}

/* v395: arama sonucu "yeni sohbet" kişisi — avatar sol-üst + rozeti */
.ara-kisi .av{position:relative;overflow:visible}
.yeni-badge{position:absolute;top:-4px;left:-4px;width:17px;height:17px;border-radius:50%;background:#0d9488;color:#fff;font-size:13px;font-weight:700;line-height:1;display:flex;align-items:center;justify-content:center;border:2px solid #fff;box-shadow:0 1px 3px rgba(2,6,23,.3)}

/* v397: dock sohbet gizle/göster toggle + ikon çeyrek dönüşü (+ ↔ ×) */
#sohbetDock.gizli .cwin,#sohbetDock.gizli .min-bubble{display:none!important}
.min-plus svg{width:20px;height:20px;transition:transform .28s cubic-bezier(.34,1.3,.5,1)}
.min-plus.kapat svg{transform:rotate(45deg)}

/* v404: sohbete dosya sürükle-bırak ipucu */
.m-chat.surukle-ustunde{outline:3px dashed #4f46e5;outline-offset:-10px}
.m-chat.surukle-ustunde::after{content:"Dosyayı bırak — önizle ve gönder";position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:rgba(79,70,229,.10);color:#4f46e5;font-weight:700;font-size:15px;pointer-events:none;z-index:60}

/* v431 — Kullanıcı listesinde Aktif/Pasif gruplama başlıkları */
.kgrup-bas{display:flex;align-items:center;gap:7px;padding:12px 14px 6px;font-size:12px;font-weight:700;
  letter-spacing:.03em;text-transform:uppercase;color:var(--mut,#64748b)}
.kgrup-bas b{font-weight:700;color:var(--text,#0f172a)}
.kgrup-kart{grid-column:1/-1;padding:14px 2px 4px}
.trow.pasif-satir .usr-ad,.k-kart.pasif-kart .k-kart-ad{color:var(--mut,#64748b)}
.trow.pasif-satir .usr-av,.k-kart.pasif-kart .usr-av{filter:grayscale(1);opacity:.75}

/* ══════════════════════════════════════════════════════════════════
   v432 — MOBİL / EL TERMİNALİ DÜZELTMELERİ (≤560px)
   Sahadaki asıl kullanım mobil ve el terminali (360×720 CSS px).
   ══════════════════════════════════════════════════════════════════ */
@media (max-width:560px){
  /* 1) Yatay taşma kapatılır.
     v447 DÜZELTME: eskiden body'ye de overflow-x:hidden veriliyordu. Android Chrome'da
     bu, gövdeyi KENDİ kaydırma kabına çeviriyor; sayfa yalnız en üstten/en alttan
     kaydırılabiliyor, ortadaki dokunuşlar yutuluyordu. overflow-x:clip kaydırma kabı
     OLUŞTURMAZ; taşmayı yine keser. */
  html{max-width:100%;overflow-x:clip}
  body{max-width:100%}

  /* 2) Sürüklenebilir sohbet balonu mobilde GİZLENİR: içeriğin üstüne biniyordu ve
        JS konumu inline style ile yazdığı için CSS ile güvenli şekilde konumlanamıyor.
        Mobilde mesajlaşmaya alt menüden ve tam menü sheet'inden erişiliyor. */
  #chatHead{display:none !important}

  /* 3) Geniş tablolar: kesilmek yerine kendi içinde yatay kayar */
  .mob-kaydir{display:block;width:100%;max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}
  .mob-kaydir>table{min-width:max-content}

  /* 4) Form eylem düğmeleri: 44px dokunma hedefi + tam genişlik */
  .form-actions{display:flex;flex-wrap:wrap;gap:8px}
  .form-actions .btn,.form-actions button{flex:1 1 140px;min-height:44px}

  /* 5) Kullanıcı listesi gruplama başlığı mobilde de okunur kalsın */
  .kgrup-bas{padding:10px 12px 4px}

  /* 6) Kart içindeki son eylem satırı alt menünün altında kalmasın */
  .card .form-actions:last-child{padding-bottom:6px}
  form.card,.card > form{padding-bottom:4px}
}


/* v433 — Devir ekranı: hem çekmecede hem tam sayfada doğru hizalanır.
   Önceki hâlinde kart 760px'e sabitlenip sola yaslanıyor, sağda geniş boşluk kalıyordu. */
.devir-form{display:block}
.devir-sayfa{max-width:820px;margin:0 auto}          /* tam sayfa: ortala */
.devir-sayfa .devir-form{background:var(--surface);border:1px solid var(--line);
  border-radius:var(--r);box-shadow:var(--shadow);padding:18px}
.drawer-body .devir-form{padding:0}                   /* çekmecede kart çerçevesi tekrarlanmasın */
.devir-liste .switch-row{padding:7px 0}
.devir-form .form-actions{position:sticky;bottom:0;background:var(--surface);
  padding-top:10px;margin-top:6px;border-top:1px solid var(--line-2)}


/* v436 — MOBİLDE ALAN KAZANIMI (≤560px)
   Üst çubuk sayfa adını zaten gösteriyor; içerikteki aynı başlık ikinci kez yer kaplıyordu.
   Küçük ekranda çalışma alanı (liste/kuyruk) esas; başlık ve uzun açıklamalar ikincil. */
@media (max-width:560px){
  .page-head > h1, .sayfa-bas > h1{display:none}
  .page-head, .sayfa-bas{margin-bottom:8px}
  .page-head .desc, .sayfa-bas .alt{font-size:12.5px;margin:0}

  /* Kart iç boşlukları küçük ekranda daha sıkı */
  .card{padding:12px}
  .content{padding-left:12px;padding-right:12px}
}

/* ══════════════════════════════════════════════════════════════════════════
   v442 — MOBİLDE LİSTE SATIRLARI: metin kırpma yerine ALT SATIRA SARMA
   Görev/talep listelerinde başlıklar "…" ile kesiliyordu; dar ekranda hangi
   kaydın ne olduğu anlaşılmıyordu. Artık satır yükseliyor, metin tamamlanıyor.
   ══════════════════════════════════════════════════════════════════════════ */
@media (max-width:560px){
  .trow{align-items:flex-start}
  .trow .ttl,
  .trow .ttl-ust,
  .trow .trow-alt,
  .tkolon .ttl,
  .tkolon .talt,
  .trow .talt,
  .trow .col-sube,
  .trow .col-departman{
    white-space:normal;          /* nowrap kaldırıldı */
    overflow:visible;
    text-overflow:clip;
    overflow-wrap:anywhere;      /* uzun kod/e-posta da taşmasın */
    line-height:1.35;
  }
  .trow .ttl,
  .trow .ttl-ust{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
  .trow .trow-alt,
  .trow .talt{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
  .tkolon .talt{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
  .trow .due{align-self:flex-start;padding-top:1px}
  .trow .col-durum{align-self:flex-start;padding-top:3px}
  /* Kullanıcı listesinde ad + e-posta da sarsın */
  .trow .usr-ad{white-space:normal;overflow-wrap:anywhere;line-height:1.3}
  .trow .col-eposta{white-space:normal;overflow-wrap:anywhere;font-size:11.5px}
}

/* ══════════════════════════════════════════════════════════════════════════
   v443 — MOBİLDE GÖREV/TALEP SATIRI: tarih-saat üst satıra alınır
   Sorun: tarih + kategori rozeti sağda dikey bir sütun tutuyordu (48px+), başlığa
   yalnız ~190px kalıyordu ve isimler sıkışıyordu. Artık satır iki katmanlı:
     üst katman  → tarih · kategori (küçük, gri)
     alt katman  → başlık ve alt bilgi, TAM GENİŞLİK
   ══════════════════════════════════════════════════════════════════════════ */
@media (max-width:560px){
  .tlist .trow{
    display:grid;
    grid-template-columns:auto minmax(0,1fr);
    column-gap:9px;
    row-gap:3px;
    align-items:start;
    padding:9px 10px;
  }
  /* durum noktası: solda, iki satırı da kapsar */
  .tlist .trow .pill-st{grid-column:1;grid-row:1 / span 2;align-self:center;margin:0}
  /* üst katman: tarih + kategori yan yana */
  .tlist .trow .trow-sag{
    grid-column:2;grid-row:1;
    flex-direction:row;align-items:center;gap:8px;
    width:auto;min-width:0;text-align:left;
  }
  .tlist .trow .trow-sag .due{width:auto;text-align:left;font-size:11px;white-space:nowrap}
  .tlist .trow .trow-sag .trow-kat{font-size:10.5px}
  /* alt katman: başlık tam genişlik */
  .tlist .trow .ttl{grid-column:2;grid-row:2;width:auto}
  .tlist .trow .code{display:none}
  /* başlık artık geniş: 3 yerine 4 satıra kadar açılabilir */
  .tlist .trow .ttl-ust{-webkit-line-clamp:4}
}


/* ══════════════════════════════════════════════════════════════════════════
   v446 — KULLANICI LİSTESİ: durum belirteci AVATARIN SAĞ ÜST KÖŞESİNDE
   v443'teki iki katmanlı satır düzeni durum noktasını üst katmana taşımıştı;
   tek başına bir satır kaplayıp listeyi gereksiz uzatıyordu. Kullanıcı satırında
   nokta artık avatarın üstünde bir rozet — hiç dikey yer kaplamıyor.
   ══════════════════════════════════════════════════════════════════════════ */
.k-tablo .trow{position:relative}        /* rozetin dayanağı SATIR (col-durum .ttl'nin içinde değil) */
.k-tablo .trow .col-durum{
  position:absolute;
  left:32px;                              /* satır dolgusu 12 + avatar 30 - 10 → avatarın sağ üstü */
  top:9px;
  width:auto;padding:0;margin:0;z-index:2;line-height:0;
}
.k-tablo .trow .col-durum .al-nokta{
  width:11px;height:11px;border-radius:50%;
  border:2px solid var(--surface);        /* avatardan ayrılsın */
  box-shadow:0 0 0 1px rgba(15,23,42,.06);
}
@media (max-width:560px){
  /* iki katmanlı grid'de durum sütunu kendi hücresini işgal etmesin */
  .k-tablo .trow .col-durum{grid-column:auto;grid-row:auto;align-self:auto;padding-top:0;
                            left:28px;top:7px}   /* mobilde satır dolgusu 10, avatar 28 */
  .k-tablo .trow{grid-template-columns:minmax(0,1fr)}
  .k-tablo .trow .ttl{grid-column:1;grid-row:1}
  .k-tablo .trow .col-eposta{grid-column:1;grid-row:2}
}

/* ══════════════════════════════════════════════════════════════════════════
   v446 — KULLANICI LİSTESİ SÜTUN ORANLARI
   Sorun: e-posta/rol/şube/departman sabit genişlikteydi (200+140+150+200=690px)
   ve hiç küçülmüyordu; 833px'lik satırda AD SOYAD sütununa 64px kalıyor, isimler
   "E…" diye kırpılıyordu. Ad artık en geniş sütun, diğerleri gerektiğinde daralıyor.
   ══════════════════════════════════════════════════════════════════════════ */
.k-tablo .trow .ttl,
.k-tablo .thead .ttl      {flex:2 1 210px;min-width:150px}
.k-tablo .trow .col-eposta,
.k-tablo .thead .col-eposta   {flex:1 1 150px;width:auto;min-width:0}
.k-tablo .trow .col-departman,
.k-tablo .thead .col-departman{flex:1 1 140px;width:auto;min-width:0}
.k-tablo .trow .col-sube,
.k-tablo .thead .col-sube     {flex:0 1 130px;width:auto;min-width:0}
.k-tablo .trow .col-rol,
.k-tablo .thead .col-rol      {flex:0 0 108px;width:auto}


/* v449 — yatay telefon/tablet: genişlik yeterli ama yükseklik değilse masaüstü
   yan menü rayı kullanılmaz; daralt/genişlet düğmesi de gizlenir. */
@media (max-height:500px) and (orientation:landscape){
  .sb-cev{display:none !important}
}


/* ══════════════════════════════════════════════════════════════════════════
   v449 — SOL MENÜ AKORDEON
   Menü uzayınca kaydırılamıyordu. Artık gruplar (Genel / Bildirim / Etiket / Sistem)
   açılır-kapanır; aynı anda yalnız biri açık. Ayrıca menü gövdesi taşarsa kaydırılır.
   ══════════════════════════════════════════════════════════════════════════ */
.sidebar nav{overflow-y:auto;overscroll-behavior:contain;min-height:0;flex:1;
             scrollbar-width:thin;scrollbar-color:#334155 transparent}
.sidebar nav::-webkit-scrollbar{width:6px}
.sidebar nav::-webkit-scrollbar-thumb{background:#334155;border-radius:3px}

.nav-label.nav-basli{display:flex;align-items:center;justify-content:space-between;
  cursor:pointer;user-select:none;border-radius:8px;padding:8px 10px;margin:2px 0;
  transition:background .15s,color .15s;min-height:36px}
.nav-label.nav-basli:hover{background:rgba(148,163,184,.10);color:#e2e8f0}
.nav-label.nav-basli:focus-visible{outline:2px solid var(--primary);outline-offset:2px}
.nav-label.nav-basli::after{content:'';width:7px;height:7px;flex:none;margin-left:8px;
  border-right:1.8px solid currentColor;border-bottom:1.8px solid currentColor;
  transform:rotate(45deg) translateY(-2px);transition:transform .18s ease;opacity:.7}
.nav-label.nav-basli.acik::after{transform:rotate(225deg) translateY(-2px)}
.nav-label.nav-basli.acik{color:#e2e8f0}

.nav-grup-govde{display:grid;grid-template-rows:0fr;transition:grid-template-rows .2s ease}
.nav-grup-govde > *{overflow:hidden;min-height:0}
.nav-grup-govde.acik{grid-template-rows:1fr}
.nav-grup-govde:not(.acik) > *{visibility:hidden;height:0;padding-top:0;padding-bottom:0;margin:0}

/* Daraltılmış (mini) menü: YALNIZ daralmış hâlde akordeon devre dışı, ikonlar görünür.
   v450: üzerine gelince menü açıldığında (.sb-acik) akordeon YİNE ÇALIŞIR — başlıklar
   görünür, gruplar kapalı gelir, tıklayınca açılır. Önceden hover'da tüm bağlantılar
   düz liste hâlinde dökülüyordu. */
html.sb-mini .sidebar:not(.sb-acik) .nav-label.nav-basli{display:none}
html.sb-mini .sidebar:not(.sb-acik) .nav-grup-govde{grid-template-rows:1fr}
/* NOT: bu secici .nav-item kuralindan daha ozgul; height:auto verilirse mini ikon
   kutusunun yuksekligini EZIYOR (36px yerine 21px kaliyordu). Olcuyu burada veriyoruz. */
html.sb-mini .sidebar:not(.sb-acik) .nav-grup-govde:not(.acik) > *{visibility:visible;height:42px}

/* ══════════════════════════════════════════════════════════════════════════
   v449 — KURAL 8: LİSTE SATIRLARINDA METİN KIRPILMAZ, ALT SATIRA SARAR
   Görev / talep / proje ve benzeri kayıt listelerinde başlık ve alt bilgi "…" ile
   kesilmez; satır büyüyerek metni tamamlar. Önce yalnız mobilde uygulanmıştı;
   masaüstünde de aynı sorun vardı (uzun görev adları yarıda kalıyordu).
   Sınır: başlık en fazla 3 satır, alt bilgi 2 satır — liste okunaklılığı korunsun.
   ══════════════════════════════════════════════════════════════════════════ */
.trow .ttl,
.trow .ttl-ust,
.trow .trow-alt,
.trow .talt,
.tkolon .ttl,
.tkolon .talt{
  white-space:normal;
  text-overflow:clip;
  overflow-wrap:anywhere;
  line-height:1.35;
}
.trow .ttl,
.trow .ttl-ust{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.trow .trow-alt,
.trow .talt,
.tkolon .talt{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.trow{align-items:flex-start}
.trow .due,
.trow .col-durum,
.trow .pill-st{align-self:center}
/* Yan sütunlar da kırpılmak yerine sarsın (şube/departman uzun olabiliyor) */
.trow .col-sube,
.trow .col-departman{white-space:normal;overflow-wrap:anywhere;text-overflow:clip;
                     display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}

/* ══════════════════════════════════════════════════════════════════════════
   v449 — DARALTILMIŞ (mini) SOL MENÜ DÜZENİ
   Akordeon başlıkları mini modda gizlendiği için ikonlar gruplanmadan tek sütun
   hâlinde diziliyor, hangi ikonun hangi bölüme ait olduğu anlaşılmıyordu.
   Yeni düzen: 44px ortalanmış ikon düğmeleri, gruplar arasında ayraç çizgisi,
   rozetler nokta, üzerine gelince ad ipucu (title JS ile eklenir).
   ══════════════════════════════════════════════════════════════════════════ */
@media(min-width:901px){
  html.sb-mini .sidebar:not(.sb-acik){padding:14px 5px}
  html.sb-mini .sidebar:not(.sb-acik) nav{gap:0}

  /* Gruplar arasında ince ayraç — başlık yokken bölümleri ayırır */
  html.sb-mini .sidebar:not(.sb-acik) .nav-grup{
    position:relative;padding-left:14px;
    border-top:1px solid var(--ink-line);margin-top:6px;padding-top:5px}
  html.sb-mini .sidebar:not(.sb-acik) nav > .nav-grup:first-of-type{
    border-top:0;margin-top:0;padding-top:2px}

  /* İkon düğmeleri: eşit kare, ortalı, rahat dokunma/tıklama alanı */
  /* ORTALI: onceki 'margin-left:auto' ikonlari saga yasliyordu; golgeli kare rayin
     ortasinda durmuyor, dizilim dagimik gorunuyordu. */
  html.sb-mini .sidebar:not(.sb-acik) .nav-item{
    width:42px;height:42px;margin:2px auto;padding:0;
    display:grid;place-items:center;border-radius:11px;gap:0;overflow:hidden}
  html.sb-mini .sidebar:not(.sb-acik) .nav-item svg{width:20px;height:20px;flex:none;min-width:20px}
  /* v454 — seçili ikon: DOLGU DEĞİL, hafif yükseltilmiş DAR KARE + gölge.
     Zemin menüden bir ton açık; asıl işaret gölgenin verdiği kabartma. */
  html.sb-mini .sidebar:not(.sb-acik) .nav-item.active{
    background:#1b2439;color:#c7d2fe;
    border-radius:11px;
    box-shadow:0 5px 12px -3px rgba(2,6,23,.9),
               0 1px 2px rgba(2,6,23,.6),
               inset 0 1px 0 rgba(255,255,255,.07)}
  html.sb-mini .sidebar:not(.sb-acik) .nav-item.active svg{stroke-width:2.2}
  html.sb-mini .sidebar:not(.sb-acik) .nav-item:hover{background:rgba(148,163,184,.14)}

  /* Rozet (31 gibi) mini modda küçük noktaya döner — sayı sığmıyordu */
  html.sb-mini .sidebar:not(.sb-acik) .nav-badge{
    position:absolute;top:6px;right:6px;min-width:8px;width:8px;height:8px;padding:0;
    font-size:0;line-height:0;border-radius:50%;background:#ef4444;border:2px solid var(--ink)}
  html.sb-mini .sidebar:not(.sb-acik) .nav-item{position:relative}

  /* Marka ve kullanıcı alanı ortalansın */
  html.sb-mini .sidebar:not(.sb-acik) .brand{justify-content:center;margin-bottom:10px}
  html.sb-mini .sidebar:not(.sb-acik) .sidebar-foot{display:grid;place-items:center;padding-top:10px}
  html.sb-mini .sidebar:not(.sb-acik) .user-chip{justify-content:center;padding:0}
}


/* v451 — akordeon KAPALI tercihinde: başlıklar sade etiket gibi durur, ok işareti yok */
html.nav-akordeon-kapali .nav-label.nav-basli{cursor:default;pointer-events:none}
html.nav-akordeon-kapali .nav-label.nav-basli::after{display:none}
html.nav-akordeon-kapali .nav-label.nav-basli:hover{background:transparent}


/* v451 — daraltılmış menüde logonun altında kısa marka (ör. "OD").
   Geniş menüde gizli; orada tam ad zaten .brand-txt içinde yazıyor. */
.brand-mini{display:none}
@media(min-width:901px){
  html.sb-mini .sidebar:not(.sb-acik) .brand{
    flex-direction:column;gap:4px;padding:4px 0 12px}
  html.sb-mini .sidebar:not(.sb-acik) .brand-mini{
    display:block;font-family:'Plus Jakarta Sans','Inter',sans-serif;font-weight:800;
    font-size:12px;letter-spacing:.06em;color:#c7d2fe;line-height:1;text-align:center}
}


/* ══════════════════════════════════════════════════════════════════════════
   v452 — DARALTILMIŞ MENÜDE DİKEY GRUP ADLARI
   İkon sütununun solunda, aşağıdan yukarı okunan ince şerit: GENEL · BİLDİRİM ·
   ETİKET · SİSTEM. Başlıklar gizlenince hangi ikonun hangi bölüme ait olduğu
   belirsizdi; ayraç çizgisi tek başına yetmiyordu.
   ══════════════════════════════════════════════════════════════════════════ */
@media(min-width:901px){
  html.sb-mini .sidebar:not(.sb-acik) .nav-grup > .nav-label.nav-basli{display:none !important;}
  html.sb-mini .sidebar:not(.sb-acik) .nav-grup > .nav-label.ESKI-DIKEY{
    display:flex !important;
    /* NOT: writing-mode:vertical-rl iken top+bottom ikilisi yuksekligi cozmuyor
       (height 0.67px kaliyor). Acik yukseklik veriliyor.
       v457: serit hem dikeyde hem yatayda TAM ORTALI - grup kutusunun soluna oturur. */
    position:absolute;left:0;top:0;height:100%;width:12px;
    margin:0;padding:0;min-height:0;
    writing-mode:vertical-rl;transform:rotate(180deg);   /* aşağıdan yukarı okunur */
    align-items:center;justify-content:center;
    font-size:9.5px;font-weight:800;letter-spacing:.16em;text-transform:uppercase;
    color:#7c89a8;background:transparent;border-radius:0;
    pointer-events:none;user-select:none;white-space:nowrap;overflow:hidden}
  html.sb-mini .sidebar:not(.sb-acik) .nav-grup > .nav-label.nav-basli::after{display:none}
  html.sb-mini .sidebar:not(.sb-acik) .nav-grup:hover > .nav-label.nav-basli{color:#94a3b8}
}


/* ══════════════════════════════════════════════════════════════════════════
   v455 — DAR MENÜ AÇILINCA İÇERİK KAYMASIN
   Sorun: mini menü üzerine gelince 72px → 250px genişliyordu ve grid sütunu da
   büyüdüğü için SAYFA İÇERİĞİ sağa kayıyordu (her seferinde tüm ekran oynuyordu).
   Çözüm: açılan menü artık içeriğin ÜZERİNE BİNER (fixed katman); grid sütunu 72px
   sabit kalır, içerik hiç kıpırdamaz. Genişlik/sıralama dar hâldekiyle aynı kurgudadır,
   yalnız etiketler görünür olur.
   ══════════════════════════════════════════════════════════════════════════ */
@media(min-width:901px){
  /* İçerik KAYMAZ: ızgara sütunu 72px sabit kalır, menü kutusu o sütunu TAŞARAK
     içeriğin üzerine biner (grid öğesi sütunundan geniş olabilir).
     Denenen ve vazgeçilen iki yol: position:fixed -> ızgaradan çıkınca içerik sütunu
     72px'e çöküyordu; ::before ile sahte panel -> nav'daki overflow-y:auto yatayda da
     kırptığı için etiketler görünmüyordu. */
  html.sb-mini .sidebar.sb-acik{
    width:250px;overflow:visible;z-index:96;
    box-shadow:10px 0 34px rgba(2,6,23,.55)}
  html.sb-mini .sidebar.sb-acik nav{overflow-y:auto;overflow-x:hidden}
  /* açılınca ikon kutuları büyümesin — dar hâldeki ölçü korunur, yanına etiket gelir */
  /* DİKKAT: bu biçim yalnız AÇIK gruplara uygulanır. Tüm .nav-item'lara verilince
     min-height:36px, akordeonun kapalı gruba verdiği height:0'ı eziyor ve kapalı gruplar
     da yer kaplıyordu (başlıklar alt alta gelmiyordu). */
  html.sb-mini .sidebar.sb-acik .nav-grup-govde.acik .nav-item{
    width:224px;height:auto;min-height:36px;
    display:flex;align-items:center;gap:11px;padding:7px 10px;margin:1px 0;border-radius:9px}
  html.sb-mini .sidebar.sb-acik .nav-grup-govde.acik .nav-item svg{width:19px;height:19px;flex:none}
  /* kapalı grup: hiç yer kaplamasın */
  html.sb-mini .sidebar.sb-acik .nav-grup-govde:not(.acik) > *{height:0;min-height:0;margin:0;padding:0}
  html.sb-mini .sidebar.sb-acik .nav-grup{margin:0;padding:0;border:0}
  html.sb-mini .sidebar.sb-acik .nav-label.nav-basli{margin:1px 0}
  html.sb-mini .sidebar.sb-acik .nav-grup{padding-left:0}
  html.sb-mini .sidebar.sb-acik .brand{flex-direction:row;gap:11px;padding:6px 8px 14px}
  html.sb-mini .sidebar.sb-acik .brand-mini{display:none}
}


/* ══════════════════════════════════════════════════════════════════════════
   v458 — DAR MENÜ: SADELEŞTİRME (v452-457'nin süslemeleri geri alındı)
   Tespit (ölçümle): 20 ikonun 4'ü ekran altında kalıyordu, ray kaydırma çubuğuyla
   kesik görünüyordu; aktif kare (#1b2439) menü zemininde (#0f172a) neredeyse
   görünmüyordu; dikey grup yazıları 78px'lik rayda hem 14px yer yiyor hem gürültü
   yaratıyordu. Çözüm ekleme değil ÇIKARMA: dikey yazılar kalktı, ray daraldı,
   ikonlar tam ortaya oturdu, kaydırma çubuğu gizlendi (alt kenarda yumuşama ile
   kesildiği belli olur), aktif kare gerçekten okunur hale geldi.
   ══════════════════════════════════════════════════════════════════════════ */
@media(min-width:901px){
  html.sb-mini .app{grid-template-columns:60px 1fr}
  html.sb-mini .sidebar:not(.sb-acik){width:60px;padding:14px 4px}
  html.sb-mini .sb-cev{left:48px}

  /* grup: dikey yazı yok → ikonlar rayın tam ortasında */
  html.sb-mini .sidebar:not(.sb-acik) .nav-grup{padding-left:0;margin-top:5px;padding-top:5px}
  html.sb-mini .sidebar:not(.sb-acik) nav > .nav-grup:first-of-type{margin-top:0;padding-top:0}

  html.sb-mini .sidebar:not(.sb-acik) .nav-item{
    width:38px;height:38px;margin:1px auto;border-radius:10px}
  html.sb-mini .sidebar:not(.sb-acik) .nav-item svg{width:19px;height:19px;min-width:19px}
  html.sb-mini .sidebar:not(.sb-acik) .nav-grup-govde:not(.acik) > *{height:38px}

  /* aktif: yükseltilmiş kare — üstte ışık, altta gölge (dolgu değil, hacim) */
  html.sb-mini .sidebar:not(.sb-acik) .nav-item.active{
    background:#233046;color:#a5b4fc;border-radius:10px;
    box-shadow:0 2px 5px rgba(0,0,0,.45), inset 0 1px 0 rgba(255,255,255,.09)}

  /* kaydırma çubuğu gizli; alt kenarda yumuşama taşmayı belli eder */
  html.sb-mini .sidebar:not(.sb-acik) nav{
    scrollbar-width:none;
    -webkit-mask-image:linear-gradient(#000 calc(100% - 22px), transparent);
    mask-image:linear-gradient(#000 calc(100% - 22px), transparent)}
  html.sb-mini .sidebar:not(.sb-acik) nav::-webkit-scrollbar{width:0;height:0}
}


/* ══════════════════════════════════════════════════════════════════════════
   v459 — DAR MENÜ: HİÇBİR MODÜL EKRAN DIŞINDA KALMASIN
   v458 sonrası ölçüm: 20 ikondan 1'i (Yetki Matrisi) hâlâ altta kalıyor, 105px
   taşma vardı. Adım aralığı 40 → 34px'e çekildi (kutu 34, aralık 0, grup ayracı
   4px): 20 ikon + 3 ayraç ≈ 704px, kullanılabilir 727px → kaydırma bitti.
   İnce çizgili ikonlar (Parametreler'in sürgü ikonu) bu boyutta dağıldığı için
   çizgi kalınlığı 1.9'a çıkarıldı.
   ══════════════════════════════════════════════════════════════════════════ */
@media(min-width:901px){
  html.sb-mini .sidebar:not(.sb-acik) .nav-item{
    width:34px;height:34px;margin:0 auto;border-radius:9px}
  html.sb-mini .sidebar:not(.sb-acik) .nav-item svg{
    width:18px;height:18px;min-width:18px;stroke-width:1.9}
  html.sb-mini .sidebar:not(.sb-acik) .nav-item.active svg{stroke-width:2.2}
  html.sb-mini .sidebar:not(.sb-acik) .nav-grup-govde:not(.acik) > *{height:34px}
  html.sb-mini .sidebar:not(.sb-acik) .nav-grup{margin-top:4px;padding-top:4px}
  html.sb-mini .sidebar:not(.sb-acik) .nav-item.active{border-radius:9px}
}


/* ══════════════════════════════════════════════════════════════════════════
   v460 — DAR MENÜDE GRUP ETİKETLERİ GERİ GELDİ (bu kez yer çalmadan)
   v458'de etiketleri kaldırmıştım çünkü 78px'lik rayda ikonları sağa itiyor,
   4 modülü ekran dışına atıyorlardı. Sorun etiketin KENDİSİ değil, ikonlarla
   AYNI SÜTUNU paylaşmasıydı. Çözüm: etiket şeridi artık akışın dışında (absolute),
   sol boşlukta duruyor; ikonlar rayın tam ortasında kalmaya devam ediyor.
   Ray 60 → 72px: ikon kutusu 34px (merkez 36), sol boşluk 0-19px arası boş →
   12px'lik şerit oraya çakışmadan oturuyor. Dikey adım 34px değişmedi,
   yani 20 modül hâlâ kaydırmasız sığıyor.
   ══════════════════════════════════════════════════════════════════════════ */
@media(min-width:901px){
  html.sb-mini .app{grid-template-columns:72px 1fr}
  html.sb-mini .sidebar:not(.sb-acik){width:72px}
  html.sb-mini .sb-cev{left:60px}

  /* grup kutusu: etiketin dayanağı; ikonlar için padding YOK (ortadan kaymasın) */
  html.sb-mini .sidebar:not(.sb-acik) .nav-grup{position:relative}

  html.sb-mini .sidebar:not(.sb-acik) .nav-grup > .nav-label.nav-basli{
    display:flex !important;
    position:absolute;left:2px;top:0;height:100%;width:13px;
    margin:0;padding:0;min-height:0;border:0;
    writing-mode:vertical-rl;transform:rotate(180deg);   /* aşağıdan yukarı okunur */
    align-items:center;justify-content:center;
    font-size:9px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;
    color:#5b6b85;background:transparent;border-radius:0;
    pointer-events:none;user-select:none;white-space:nowrap;overflow:hidden}
  html.sb-mini .sidebar:not(.sb-acik) .nav-grup > .nav-label.nav-basli::after{display:none}
  html.sb-mini .sidebar:not(.sb-acik) .nav-grup:hover > .nav-label.nav-basli{color:#94a3b8}
}


/* ══════════════════════════════════════════════════════════════════════════
   v461 — İKON, GÖLGELİ KAREYE TAM MERKEZLENDİ
   Belirti: ikonlar karenin üst kısmında duruyordu (ölçüm: svg merkezi kutu
   merkezinden 4px yukarıda).
   Sebep: .nav-item display:grid idi ve bağlantının sonundaki metin düğümü
   ("Gösterge Paneli" vb.) font-size:0 olmasına rağmen ızgarada İKİNCİ BİR SATIR
   açıyordu; ikon üst satıra oturunca yukarı kayıyordu. place-items:center bunu
   düzeltemez, çünkü iki satırın toplamını ortalar, ikonu değil.
   Çözüm: flex — her öge kendi ekseninde ortalanır, sıfır genişlikli metin ögesi
   hiçbir yeri kaydırmaz.
   ══════════════════════════════════════════════════════════════════════════ */
@media(min-width:901px){
  html.sb-mini .sidebar:not(.sb-acik) .nav-item{
    display:flex;align-items:center;justify-content:center;line-height:0}
}


/* ══════════════════════════════════════════════════════════════════════════
   v462 — GRUP ETİKETLERİ UZATILDI
   Harf aralığı .14em → .30em, punto 9 → 10px: yazı şerit boyunca daha uzun ve
   okunur akıyor. Şerit 13 → 15px (sağ kenarı 17px'te kalır, ikonların sol kenarı
   19px → çakışma yok). Grup yüksekliği taşarsa yazı kırpılmasın diye en kısa
   grupta ölçüldü; yine de güvenlik için overflow görünür bırakılmadı, punto
   grup yüksekliğine sığacak şekilde seçildi.
   ══════════════════════════════════════════════════════════════════════════ */
@media(min-width:901px){
  html.sb-mini .sidebar:not(.sb-acik) .nav-grup > .nav-label.nav-basli{
    width:15px;font-size:10px;letter-spacing:.30em;
    text-indent:.30em;   /* harf aralığı sona da eklendiği için görsel merkez kayar */
    color:#64748b}
}

/* v462 düzeltme — şerit 13→15px büyüyünce sağ kenarı 21px'e çıkmış, ikonların
   sol kenarına (19px) 2px giriyordu. left:2 → 0 ile bitişik ama çakışmasız. */
@media(min-width:901px){
  html.sb-mini .sidebar:not(.sb-acik) .nav-grup > .nav-label.nav-basli{left:0}
}


/* ══════════════════════════════════════════════════════════════════════════
   v465 — MOBİL DOKUNMA HEDEFLERİ
   A'dan Z'ye tarama bulgusu (360x720, 7 ekran): yatay taşma ve kırpılan metin
   YOK, ama sık kullanılan denetimlerin çoğu parmakla zor vurulacak kadar alçaktı:
     bildirim zili 32x22 · menü satırı 210x38 · hesap bağlantısı 220x19
     çıkış 220x31 · tercih anahtarları 220x29 · "Sil" düğmeleri 19x19
   "Sil" gibi geri alınamaz bir işlemin 19px olması yanlış dokunma riski de taşıyor.
   Hepsi 44px'lik dokunma hedefine çıkarıldı (yükseklik büyür, yazı boyutu değişmez).
   NOT: 42px'lik .bs-trigger proje kuralı gereği SABİTTİR, bu kural onu kapsamaz.
   ══════════════════════════════════════════════════════════════════════════ */
@media(max-width:900px){
  /* üst çubuk: zil ve mini ses düğmesi */
  .bell-btn, .bell-mini{min-width:40px;min-height:40px;display:inline-flex;
    align-items:center;justify-content:center}

  /* çekmecedeki gezinme ve alt bölüm */
  .sidebar .nav-item{min-height:44px}
  .sidebar .hesap-link, .sidebar .logout-btn, .sidebar .sb-hover-toggle{
    min-height:44px;display:flex;align-items:center}

  /* satır içi ✕/Sil düğmeleri — sınıfsız oldukları için form içinden yakalanır */
  form button[title="Sil"], .ek-sil, .lnk-sil{
    min-width:44px;min-height:44px;display:inline-flex;
    align-items:center;justify-content:center}

  /* küçük eylem düğmeleri ve bağlantılar */
  .seg-btn, .fbtn, .ice-sablon{min-height:44px;display:inline-flex;align-items:center}
  .btn:not(.bs-trigger){min-height:44px}
  .kapali-sw{min-height:44px;display:flex;align-items:center}
}


/* ══════════════════════════════════════════════════════════════════════════
   v467 — MOBİLDE KPI SAYILARI GERİ GELDİ
   Mobil A-Z turu bulgusu: gösterge panelinin KPI kartları 560px altında
   ikon-only'ye indiriliyordu (.kpi .val/.cap/.trend { display:none }) ve kartlar
   40x40'a sıkışıyordu. Yer kazanma amacı doğruydu ama sonuç, panelin EN ÖNEMLİ
   bilgisinin (0 açık talep · 31 açık görev · 27 geciken) tamamen kaybolmasıydı:
   geriye anlamsız 5 ikon kalıyordu.
   Denge: ikon + SAYI yan yana, tek satırlık kaydırılabilir rozet şeridi.
   Yükseklik 40 → 44px (aynı zamanda dokunma hedefi; bu kartlar filtre bağlantısıdır).
   Uzun açıklama (.cap/.trend) mobilde gizli kalmaya devam eder.
   ══════════════════════════════════════════════════════════════════════════ */
@media(max-width:560px){
  /* nowrap şerit KENDİ içinde kaysın; sayfa yatay kaymasın (min-width:0 olmadan
     flex/grid çocuğu içeriği kadar büyür ve gövdeyi taşırır). */
  .kpis{display:flex;flex-wrap:nowrap;overflow-x:auto;gap:6px;
        min-width:0;max-width:100%;
        scrollbar-width:none;-webkit-overflow-scrolling:touch;padding-bottom:2px}
  .kpis-sar,.kpis-wrap{min-width:0;overflow:hidden}
  .kpis::-webkit-scrollbar{height:0}
  .kpis .kpi, a.kpi{
    flex:0 0 auto;display:inline-flex;align-items:center;gap:7px;
    min-height:44px;padding:6px 11px 6px 7px;border-radius:12px;
    background:var(--surface);border:1px solid var(--line);box-shadow:none}
  .kpi .ico{width:28px;height:28px;border-radius:8px;margin-bottom:0;flex:none}
  .kpi .ico svg{width:16px;height:16px}
  .kpi .val{display:block;font-size:17px;line-height:1;font-weight:700}
  .kpi .cap{display:none}
  .kpi .trend{display:none}
}


/* ══════════════════════════════════════════════════════════════════════════
   v468 — MOBİLDE "TOPLU İÇE AKTAR" KARTI KATLANIR
   Mobil A-Z turu bulgusu: Kullanıcılar ekranında toplu CSV içe aktarma kartı
   (dosya seçici + içe aktar + sütun sırası çipleri + uzun açıklama metni)
   ekranın tepesini kaplıyor, ASIL liste ve filtreler ekranın çok altına düşüyordu.
   Toplu içe aktarma masaüstü işidir; telefonda birincil içerik kullanıcı listesidir.
   Kart mobilde başlığa indirgenir; başlığa dokununca açılır (.ice-acik).
   Masaüstünde davranış değişmez.
   ══════════════════════════════════════════════════════════════════════════ */
/* v496 - katlama artik MASAUSTUNDE de gecerli. Kullanicilar/Subeler ekranlarinda
   "Toplu ice aktar" karti acik haliyle 220px yer kapliyor ve ASIL LISTEYI 425px asagi
   itiyordu. Toplu ice aktarma ara sira yapilan bir istir; birincil icerik listedir.
   (Once yalnizca mobilde katlanmisti - masaustunde ayni sorun duruyordu.) */
.ice-card{margin-bottom:12px}
.ice-card .ice-head{cursor:pointer;user-select:none}
.ice-card .ice-head h3::after{content:'▾';margin-left:8px;font-size:11px;opacity:.6}
.ice-card.ice-acik .ice-head h3::after{content:'▴'}
.ice-card:not(.ice-acik) > *:not(.ice-head){display:none}
.ice-card:not(.ice-acik) .ice-head .ice-sablon{display:none}
@media(max-width:700px){
  .ice-card{margin-bottom:10px !important}
  .ice-card .ice-head{min-height:44px}
}


/* ══════════════════════════════════════════════════════════════════════════
   v470 — ANDROID/TABLET: 100vh YERİNE 100dvh
   Android Chrome'da adres çubuğu kaydırınca gizlenip geri gelir; 'vh' bu değişimi
   YANSITMAZ (her zaman çubuk gizliymiş gibi ölçer). Tam ekran alanlar bu yüzden
   görünür alandan uzun kalıyor, sayfa "yalnızca en üstten/alttan kaydırılıyor"
   hissi veriyordu. 'dvh' dinamik ölçüdür ve çubuk açıkken de doğrudur.
   Yukarıdaki 8 kural çift yazıldı: önce vh (eski tarayıcı yedeği), sonra dvh.
   Ayrıca kaydırma zinciri: iç kaplarda taşma dışarı sıçramasın.
   ══════════════════════════════════════════════════════════════════════════ */
.sohbet-mobil, .mn-govde, .drawer-body, .chat-panel{overscroll-behavior:contain}
/* Dokunmatikte ivmeli kaydırma (eski WebKit/Android WebView) */
.sohbet-mobil, .mn-govde, .drawer-body{-webkit-overflow-scrolling:touch}


/* ══════════════════════════════════════════════════════════════════════════
   v471 — DOKUNMATİK HEDEFLER: GENİŞLİĞE DEĞİL, İŞARETÇİ TÜRÜNE GÖRE
   v465'te dokunma hedeflerini "max-width:900px" ile büyütmüştüm. Tablet testi bunun
   yanlış ölçüt olduğunu gösterdi: 1024px'lik bir tablet YATAY konumda 900px'in üstünde
   kalıyor ve masaüstü sayılıyordu; oysa hâlâ parmakla kullanılıyor.
   Ölçüm (768x1024 + 1024x768, 7 ekran): dar ray ikonları 34x34, hamburger 38x38,
   çekmece kapat 34x34, kullanıcı çipi 42x32, liste satırı 40px.
   Doğru ölçüt (pointer:coarse) = parmak/kalem. Farede (pointer:fine) hiçbir şey
   değişmez; kullanıcının beğendiği 34px'lik dar ray masaüstünde aynen kalır.
   ══════════════════════════════════════════════════════════════════════════ */
@media (pointer:coarse){
  /* daraltılmış sol ray: parmakla 44px */
  html.sb-mini .app{grid-template-columns:80px 1fr}
  html.sb-mini .sidebar:not(.sb-acik){width:80px}
  html.sb-mini .sb-cev{left:68px}
  html.sb-mini .sidebar:not(.sb-acik) .nav-item{width:44px;height:44px;border-radius:11px}
  html.sb-mini .sidebar:not(.sb-acik) .nav-item svg{width:20px;height:20px;min-width:20px}
  html.sb-mini .sidebar:not(.sb-acik) .nav-grup-govde:not(.acik) > *{height:44px}

  /* üst çubuk ve çekmece denetimleri */
  .icon-btn, .hamburger, .drawer-close, .bell-btn, .bell-mini{
    min-width:44px;min-height:44px;display:inline-flex;align-items:center;justify-content:center}
  .user-chip{min-height:44px}

  /* düğmeler ve liste satırları */
  .btn:not(.bs-trigger){min-height:44px}
  .seg-btn,.fbtn,.et-btn,.ice-sablon,.bell-foot{min-height:44px;display:inline-flex;align-items:center}
  .trow{min-height:44px}
  form button[title="Sil"], .ek-sil, .lnk-sil{min-width:44px;min-height:44px}
}


/* ══════════════════════════════════════════════════════════════════════════
   v473 — AÇIK SOHBETLER: BALONUN ALTINDA AVATAR YIĞINI
   Açık sohbetler mesajlaşma balonunun altında kullanıcı avatarı olarak dizilir.
   Yığın balonla birlikte taşınır ve balon yığının ÜZERİNE sürüklenemez: sürükleme
   sınırı, yığının ekranda kalacağı şekilde daraltılır (bkz. odak.js chatYiginYuk).
   ══════════════════════════════════════════════════════════════════════════ */
.chat-yigin{position:fixed;z-index:9989;display:flex;flex-direction:column;gap:8px;
  align-items:center;pointer-events:none}
.chat-yigin:empty{display:none}
.chat-yigin .cy-oge{position:relative;width:44px;height:44px;border-radius:50%;
  pointer-events:auto;cursor:pointer;border:2px solid var(--surface,#fff);
  box-shadow:0 6px 18px rgba(2,6,23,.28);background:#4f46e5;color:#fff;
  display:flex;align-items:center;justify-content:center;font-weight:700;font-size:15px;
  transition:transform .15s ease,box-shadow .15s ease;padding:0}
.chat-yigin .cy-oge:hover{transform:scale(1.07);box-shadow:0 10px 24px rgba(2,6,23,.36)}
.chat-yigin .cy-oge:focus-visible{outline:2px solid var(--primary);outline-offset:2px}
.chat-yigin .cy-oge img{width:100%;height:100%;object-fit:cover;display:block;border-radius:50%}
.chat-yigin .cy-rozet{position:absolute;top:-3px;right:-3px;min-width:18px;height:18px;
  padding:0 4px;border-radius:9px;background:#ef4444;color:#fff;font-size:10.5px;font-weight:700;
  display:flex;align-items:center;justify-content:center;border:2px solid var(--surface,#fff)}
.chat-yigin .cy-kapat{position:absolute;top:-4px;left:-4px;width:18px;height:18px;border-radius:50%;
  background:#475569;color:#fff;font-size:11px;line-height:1;display:none;
  align-items:center;justify-content:center;border:2px solid var(--surface,#fff);padding:0}
/* v475 — 'x' YALNIZCA uzerine gelince cikar. Onceki surumde dokunmatikte hover
   olmadigi gerekcesiyle surekli gorunur birakilmisti; bu, yigini gereksiz kalabalik
   gosteriyordu. Klavye erisimi icin focus-within korunur (Kural 1: 'x' Tab ile
   ulasilabilir olmali, aksi halde klavyeyle yigindan cikarma yapilamaz). */
.chat-yigin .cy-oge:hover .cy-kapat,
.chat-yigin .cy-oge:focus-within .cy-kapat{display:flex}
@media print{.chat-yigin{display:none}}


/* v474 — 'x' ve okunmamis rozeti avatarin ICINDE KAYBOLUYORDU.
   Sebep: .cy-oge'ye fotografi daireye kirpmak icin overflow:hidden konmustu; oysa
   hem 'x' (top/left:-4px) hem rozet (top/right:-3px) kutunun DISINDA duruyor, ikisi
   de kirpiliyordu. Olcum: x dugmesi avatarin 2px disinda kaliyordu.
   Kirpma artik dugmede degil, dogrudan <img>'de (border-radius:50%) - fotograf yine
   daire, tasan katmanlar ise gorunur. Katmanlar ayrica en uste alindi. */
.chat-yigin .cy-oge{overflow:visible}
.chat-yigin .cy-kapat, .chat-yigin .cy-rozet{z-index:2}


/* v476 - AVATAR CERCEVESI: KULLANICI SISTEMDE/SOHBETTE AKTIFSE YESIL
   Cerceve varsayilan olarak yuzey rengidir (beyaz); karsi taraf cevrimici oldugunda
   yesile doner. Kaynak oda listesindekiyle ayni: SohbetPresence.Aktif. */
.chat-yigin .cy-oge.cy-aktif{border-color:#22c55e;
  box-shadow:0 6px 18px rgba(2,6,23,.28), 0 0 0 1px rgba(34,197,94,.35);
  animation:cyParilti 2.2s ease-in-out infinite}

/* v477 - cevrimici yesili paril­dar: halka nefes alir gibi genisleyip soner.
   Sadece golge/parlaklik degisir; kutu olcusu SABIT kalir, boylece yigin ve
   balonun surukleme siniri hesabi (chatYiginYuk) etkilenmez. */
@keyframes cyParilti{
  0%,100%{ box-shadow:0 6px 18px rgba(2,6,23,.28), 0 0 0 1px rgba(34,197,94,.35), 0 0 0 0 rgba(34,197,94,.55);
           border-color:#22c55e }
  50%    { box-shadow:0 6px 18px rgba(2,6,23,.28), 0 0 0 1px rgba(34,197,94,.55), 0 0 10px 3px rgba(34,197,94,0);
           border-color:#4ade80 }
}
/* Hareket azaltma tercihi acikken parildama durur, yesil cerceve kalir. */
@media (prefers-reduced-motion:reduce){
  .chat-yigin .cy-oge.cy-aktif{animation:none}
}


/* v478 - "yaziyor" gostergesi: balonun/avatarin SAG ALTINDA uc nokta.
   Sohbet penceresi kapaliyken de birinin yazdigi anlasilsin diye eklendi.
   Konumu mutlak; kutu olcusunu buyutmez, dolayisiyla yigin yuksekligi ve
   balonun surukleme siniri hesabi (chatYiginYuk) etkilenmez. */
/* .chat-head'e position:relative VERILMEZ - .chat-head zaten position:fixed'dir ve
   fixed de konumlandirilmis bir baglamdir; relative yazmak fixed'i EZER, balon akisa
   dusup ekran disina cikar (v478'in ilk halinde bu oldu: balon x=-28, alt=805 > 756).
   .cy-oge zaten yukarida relative tanimli. */
/* v480 - ZEMIN YOK. Once koyu bir baloncuk vardi; avatarin uzerinde yama gibi
   duruyordu. Artik kap tamamen kaldirildi: noktalar dogrudan AVATARIN ICINE,
   alt kenarina oturur. Zemin her zaman avatarin kendi rengi oldugu icin beyaz
   noktalar her durumda okunur - ayri bir kutuya ihtiyac kalmaz.
   Tasima yok, olcu buyumez; yigin yuksekligi ve surukleme siniri etkilenmez. */
.yz-nokta{position:absolute;left:0;right:0;bottom:5px;display:flex;justify-content:center;
  align-items:center;gap:3px;z-index:3;pointer-events:none}
.yz-nokta i{width:3.5px;height:3.5px;border-radius:50%;background:#fff;display:block;
  box-shadow:0 1px 2px rgba(2,6,23,.35);animation:yzp 1.3s infinite ease-in-out}
.yz-nokta i:nth-child(2){animation-delay:.18s}
.yz-nokta i:nth-child(3){animation-delay:.36s}
@media (prefers-reduced-motion:reduce){ .yz-nokta i{animation:none;opacity:.85} }


/* ══════════════════════════════════════════════════════════════════════════
   v481 — EKRANI MAKSİMUM KULLAN: TEKRAR EDEN BAŞLIK VE FAZLA BOŞLUK
   Ölçüm (1600x900 /Talepler): liste 393px aşağıda başlıyordu; 900px'lik ekranın
   üçte biri içerik görünmeden gidiyordu. Dökümde:
     üst çubuk 67 · sayfa başlığı 58 (+20 boşluk) · durum şeridi 90 (+16)
     · araçlar 22 (+16) · filtre 69 (+16) · içerik dolgusu 26/60
   8 ekranın 7'sinde sayfa başlığı ÜST ÇUBUKTAKİYLE AYNI (ölçüldü) — yani 58px
   yalnızca tekrar için harcanıyordu. /Etiket bunu zaten bırakmıştı; aynı desen
   masaüstüne de taşındı (mobilde 560px altında zaten gizliydi).
   Eylem düğmeleri ("+ Yeni Talep") KALIR, sağa yaslanır.
   ══════════════════════════════════════════════════════════════════════════ */
@media(min-width:701px){
  /* başlık ve açıklama üst çubukta zaten var → tekrar etme */
  .page-head h1, .page-head .desc{display:none}
  .page-head{margin-bottom:0;min-height:0}
  /* eylem düğmesi olan sayfalarda satır sağa yaslanır ve kendi boşluğunu alır */
  .page-head.head-row{justify-content:flex-end}
  .page-head.head-row > *{margin-bottom:12px}

  /* çevre boşlukları: 26/34/60 → 16/26/28 */
  .content{padding:16px 26px 28px}
  /* bloklar arası nefes payı biraz daraltıldı */
  .pipeline{margin-bottom:12px}
  .filter-bar{margin-bottom:12px}
}


/* v481 - ust cubuktaki sayfa eylem dugmesi */
.ust-eylem{display:flex;align-items:center;gap:8px}
.ust-eylem:empty{display:none}
.ust-eylem .btn{margin:0;white-space:nowrap}
@media(min-width:701px){
  /* dugme yukari tasindigi icin baslik satiri tamamen kapanir */
  .page-head, .page-head.head-row{margin-bottom:0;min-height:0;gap:0}
  .page-head.head-row > *{margin-bottom:0}
}


/* ══════════════════════════════════════════════════════════════════════════
   v482 — MOBILDE DIKEY ALAN
   Olcum (375x844, /Gorevler): 25 satirdan YALNIZCA 4'U ekrandaydi; ilk satir 448px
   asagida basliyordu. Dokum: ust cubuk 53 · eylem dugmesi seridi 56 · araclar 44 ·
   gorunum secici 51 · filtre 125 · icerik dolgusu 14/72.
   Iki en buyuk kalem duzeltildi:
   (a) Eylem dugmesi ("+ Yeni Gorev") kendi seridini yiyordu -> ust cubuga tasindi.
   (b) Filtre alani iki satirdi: "Ara" tam genislik, altinda "Filtrele" tam genislik.
       Ikisi TEK SATIRA alindi (arama esner, dugme sabit) - dokunma hedefi 44px kalir.
   ══════════════════════════════════════════════════════════════════════════ */
@media(max-width:700px){
  /* (a) ust cubuktaki eylem dugmesi: dar ekranda kompakt */
  .ust-eylem .btn{padding:9px 11px;font-size:12.5px;min-height:40px;border-radius:10px}
  .topbar-title{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  /* dugme yukari tasindi -> baslik seridi tamamen kapanir */
  .page-head, .page-head.head-row{margin-bottom:0;min-height:0;gap:0}

  /* (b) arama + Filtrele tek satir */
  form.filter-bar{align-items:flex-end;gap:8px}
  form.filter-bar>.form-field:not(.bs-filtre){flex:1 1 auto;min-width:0}
  .filtre-ac-btn{flex:0 0 auto;width:auto;padding:0 14px;min-height:44px;order:0}
  .filtre-ac-btn span{display:none}
}


/* v482 - filtre panelinin icine tasinan ikincil anahtarlar: yalnizca panel acikken gorunur */
@media(max-width:700px){
  form.filter-bar .pipe-tools.arac-filtrede{flex:1 1 100%;margin:2px 0 0;justify-content:flex-start;
    flex-wrap:wrap;gap:10px}
  form.filter-bar:not(.acik) .pipe-tools.arac-filtrede{display:none}
  /* gorunum secici (Liste/Pano) arama satirina alinir */
  .seg{margin-bottom:10px}
}


/* v483 - ust cubuk baslik ikonu */
.topbar-title.tb-ikonlu{display:flex;align-items:center;gap:9px}
.tb-ikon{display:inline-flex;align-items:center;justify-content:center;flex:none;
  width:30px;height:30px;border-radius:9px;background:#eef2ff;color:var(--primary)}
.tb-ikon svg{width:17px;height:17px;display:block}
@media(max-width:700px){
  .tb-ikon{width:26px;height:26px;border-radius:8px}
  .tb-ikon svg{width:15px;height:15px}
}


/* ══════════════════════════════════════════════════════════════════════════
   v484 — MOBIL: SOHBET BALONU, "Ara" ETIKETI, GORUNUM SECICI, EYLEM DUGMESI
   ══════════════════════════════════════════════════════════════════════════ */

/* 1) SOHBET BALONU MOBILDE DE GORUNUR
   560px altinda "#chatHead{display:none !important}" ile tamamen kapatiliyordu.
   Artik gorunur; alt sekme cubugunun (59px) USTUNE oturur ki onu kapatmasin. */
@media(max-width:560px){
  #chatHead{display:flex !important;right:14px;bottom:calc(59px + 14px);width:48px;height:48px}
  #chatHead svg{width:24px;height:24px}
}

@media(max-width:700px){
  /* 2) "Ara" ETIKETI KALDIRILDI - alanin kendi placeholder'i ("Baslik veya kod...")
        zaten ne oldugunu soyluyordu; etiket yalnizca 17px dikey yer yiyordu.
        Erisilebilirlik icin aria-label JS'te ayrica veriliyor (asagidaki blok). */
  form.filter-bar > .form-field:not(.bs-filtre) > label{display:none}

  /* 3) GORUNUM SECICI (Liste / Pano) DARALTILDI VE SATIRA YAYILDI
        Onceden sola yaslanmis, ic dolgusu genis bir kutucuktu; simdi satirin tamamini
        kaplar ve dugmeler esit paylasir. Yukseklik 51 -> 40px. */
  .seg{display:flex;width:100%;padding:2px;border-radius:10px}
  .seg-btn{flex:1 1 0;justify-content:center;padding:8px 6px;font-size:12.5px;min-height:36px}

  /* 4) EYLEM DUGMESI: dar ekranda yalnizca "+" (metin aria-label'da kalir) */
  .ust-eylem .btn.eylem-kisa{width:40px;min-width:40px;padding:0;font-size:0;
    display:inline-flex;align-items:center;justify-content:center;border-radius:11px}
  .ust-eylem .btn.eylem-kisa::before{content:'+';font-size:22px;font-weight:600;line-height:1}
}


/* ══════════════════════════════════════════════════════════════════════════
   v485 — MASAUSTU: TEK, HIZALI ARAC CUBUGU
   Olcum (1111x876, /Gorevler): liste 438px asagida; ustunde 4 ayri serit vardi
   (durum 90 · anahtarlar 22 · secici 41 · filtre 151, aralarinda 12-16px).
   Filtre 151px cikiyordu cunku 6 alanin her biri SABIT 210px min-genislikteydi ve
   987px'lik cubuga sigmayip iki satira kiriliyordu.
   Duzen: tek cubuk — [Liste|Pano] [Ara] [filtreler...] [anahtarlar] [Temizle],
   hepsi alt kenardan hizali. Alanlar esnek (140px taban) -> tek satirda toplanir.
   ══════════════════════════════════════════════════════════════════════════ */
@media(min-width:701px){
  form.filter-bar{align-items:flex-end;gap:10px;flex-wrap:wrap}
  /* alanlar sabit degil ESNEK: bosluga gore paylasirlar */
  form.filter-bar > .form-field.bs-filtre{flex:1 1 140px;min-width:140px;max-width:220px}
  form.filter-bar > .form-field:not(.bs-filtre){flex:2 1 190px;min-width:170px}
  .filter-bar .form-field label{font-size:11px;margin-bottom:3px}

  /* gorunum secici cubugun basinda, alt kenardan hizali */
  form.filter-bar > .seg.seg-cubukta{flex:0 0 auto;order:-1;margin:0;align-self:flex-end}
  /* ikincil anahtarlar cubugun sonunda, saga yaslanir */
  form.filter-bar > .pipe-tools{flex:0 0 auto;order:99;margin:0 0 0 auto;align-self:center;
    justify-content:flex-end;gap:14px}
  /* "Temizle" en sona */
  form.filter-bar > .btn-ghost{order:100;align-self:flex-end}

  /* durum seridi biraz sikilastirildi (90 -> ~74) */
  .pipe-step{padding:11px 14px}
}


/* ══════════════════════════════════════════════════════════════════════════
   v486 — ARAC CUBUGU: DUZENSIZ SARMA YERINE BILINCLI IKI SATIR
   v485 sonrasi cubuk hala 145px'ti ve ogeler BES ayri dikey hizadaydi (179/189/256/
   279/282): "Bolge/Sube" tek basina alt satira dusuyor, anahtarlar ve "Temizle" onun
   yaninda farkli hizalarda duruyordu - dagimik bir goruntu.
   Tasarim: iki satir BILEREK ayrilir.
     1. satir: [Liste|Pano] [Ara] [Oncelik] [Kategori] [Proje] [Atanan] [Bolge/Sube]
     2. satir: [ikincil anahtarlar ................................. Temizle]
   Alanlar 130px tabanla esner, hepsi ayni yukseklikte ve alt kenardan hizali.
   Etiketler kucuk/harf araligi acik: form gorunumunden ARAC CUBUGU gorunumune gecer.
   ══════════════════════════════════════════════════════════════════════════ */
@media(min-width:701px){
  form.filter-bar{row-gap:8px}
  /* Olcum: cubuk ic genisligi 987px. secici 163 + arama 130 + 5 alan x 105 + bosluklar
     ~60 = 878 -> HEPSI TEK SATIRA siGAR. Alanlar 105px tabanla esner, en fazla 165. */
  form.filter-bar > .form-field.bs-filtre{flex:1 1 105px;min-width:105px;max-width:165px}
  form.filter-bar > .form-field:not(.bs-filtre){flex:2 1 130px;min-width:130px}
  form.filter-bar > .seg.seg-cubukta{flex:0 0 auto}
  /* uzun etiket ("Bolge / Sube") dar alanda tasmasin */
  .filter-bar .form-field label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

  /* etiketler: arac cubugu dili */
  .filter-bar .form-field label{font-size:10.5px;letter-spacing:.04em;text-transform:uppercase;
    color:var(--muted);margin-bottom:3px;font-weight:700}

  /* denetim yuksekligi 42 -> 38 (fare icin yeterli; dokunmatikte pointer:coarse 44'e cikarir) */
  .filter-bar .bs-trigger{min-height:38px;height:38px}
  .filter-bar input[type=text],.filter-bar input:not([type]),.filter-bar select{height:38px}

  /* DUZELTME (v486 ilk deneme): pipe-tools'a flex:1 1 100% verince Temizle UCUNCU
     satira dustu ve cubuk 145 -> 214px'e cikti - ters etki. Dogru yol satiri zorlamak
     degil, ALANLARI tek satira sigacak kadar esnetmek. Anahtarlar + Temizle en sonda
     olduklari icin dogal olarak birlikte 2. satira gecer. */
  form.filter-bar > .pipe-tools{flex:0 1 auto;order:90;margin:0;align-self:center;
    justify-content:flex-start;gap:18px}
  form.filter-bar > .btn-ghost{order:91;margin-left:auto;align-self:center;min-height:34px}
}


/* v486 - son hiza rotusu: olcumde gorunum secici alanlardan 5px, 2. satirdaki
   "Temizle" ile anahtarlar birbirinden 10px kayikti. Tasarimda bu kaymalar
   "dagimik" hissini yaratan seydir; her iki satirda da ogeler ayni eksene oturtuldu. */
@media(min-width:701px){
  form.filter-bar > .seg.seg-cubukta{align-self:flex-end;margin-bottom:0;height:38px;padding:2px}
  form.filter-bar > .seg.seg-cubukta .seg-btn{min-height:34px;padding:6px 12px}
  form.filter-bar > .pipe-tools{align-self:center;min-height:34px;align-items:center}
  form.filter-bar > .btn-ghost{align-self:center;height:34px;min-height:34px;padding:0 14px}
}


/* ══════════════════════════════════════════════════════════════════════════
   v487 — GORUNUM SECICI (Liste / Pano) UST CUBUKTA ORTADA
   Filtre satirindan cikarilip basligin hizasina, ekranin ortasina alindi: sayfanin
   en ustunde sabit bir "sekme" hissi verir ve filtre cubugunu bir oge daha bosaltir.
   Mutlak ortalama kullanildi ki baslik veya eylem dugmesi uzadikca secici KAYMASIN.
   1000px altinda ortalama birakilir (baslik/dugme ile catismasin) - secici yine ust
   cubukta ama akista durur. 700px altinda kendi yerinde tam genislikte kalir.
   ══════════════════════════════════════════════════════════════════════════ */
/* v487 DUZELTME: burada ".topbar{position:relative}" vardi. .topbar zaten masaustunde
   position:STICKY, 560px altinda position:FIXED tanimli; medya sorgusuz yazilan bu kural
   IKISINI DE EZDI. Sonuc: ust cubuk sabitligini kaybetti ve mobilde ".main" icin
   ayrilmis 48px'lik yer BOS kaldi (icerik 101px'ten basliyordu, ilk satir 239 -> 292).
   sticky de fixed de zaten konumlandirilmis baglamdir; .ust-secici'nin mutlak
   ortalanmasi icin ek bir kural GEREKMEZ. Kural kaldirildi. */
.ust-secici:empty{display:none}
@media(min-width:1000px){
  .ust-secici{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:1}
}
@media(min-width:701px) and (max-width:999px){
  .ust-secici{margin-left:auto;margin-right:12px}
}
@media(min-width:701px){
  .seg.seg-ustte{height:36px;padding:2px;border-radius:9px;background:#f1f5f9;border-color:transparent}
  .seg.seg-ustte .seg-btn{min-height:32px;padding:5px 14px;font-size:12.5px}
  .seg.seg-ustte .seg-btn.on{background:#fff;box-shadow:0 1px 3px rgba(2,6,23,.12)}
}


/* v487 - secicinin kalan alt bosluğu ust cubukta 8px dikey kaymaya yol aciyordu
   (secici merkezi 26, cubuk merkezi 34). Ust cubuktayken tum bosluklar sifirlanir. */
.seg.seg-ustte{margin:0 !important}


/* v488 - MOBILDE LISTE BASLIK SATIRI GIZLI
   "KOD / GOREV / VADE" gibi kolon basliklari mobilde anlamsizdi: kart duzeninde
   kolon yok, hangi ekranda oldugu da ust cubuktaki baslikta zaten yaziyor.
   Yalnizca yer yiyordu. Masaustunde (kolonlu tablo goruntusu) aynen kalir. */
@media(max-width:700px){
  .thead{display:none}
}


/* ══════════════════════════════════════════════════════════════════════════
   v489 — GOSTERGE PANELI DUZENI
   Olcum (1111x876): sayfa 1807px, ekranin 931px'i alt tarafta kaliyordu.
   Uc kalem:
   1) KART BASLIKLARI DIKEY YIGILIYORDU: .panel-head display:block oldugu icin
      baslik (23px) ve "Tumunu gor" baglantisi (15px) ALT ALTA duruyor, basliklar
      76px yer kapliyordu. Bes kartta 5x76 = 380px. Tek satira alindi: baslik solda,
      baglanti sagda - ~44px.
   2) BOS DURUM: "Acik talep yok." tek satirlik metin 30px dolguyla 81px'lik kutu
      yaratiyordu. Bos durum bilgi verir ama yer kaplamamali -> 18px dolgu.
   3) KPI KARTLARI 166px: dolgu 17/18, ikon 36 + 12px alt bosluk, sayi 30px.
      Olculer bir tik sikilastirildi (bilgi ayni, hacim daha az).
   ══════════════════════════════════════════════════════════════════════════ */
.panel-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.panel-head h3{margin:0}
.panel-head .link{flex:none}

.card .empty{padding:18px 20px}

@media(min-width:701px){
  .kpi{padding:14px 16px}
  .kpi .ico{width:32px;height:32px;margin-bottom:9px}
  .kpi .ico svg{width:17px;height:17px}
  .kpi .val{font-size:26px}
  .kpi .cap{margin-top:4px}
  .kpi .trend{margin-top:6px}
}


/* v489 - mobil pano: kart basligi ve bos durum sikilastirildi.
   Olcum (371x840): "Acik talepler" karti tek satirlik "Acik talep yok." icin 131px
   yer kapliyordu (baslik 55 + bos 57 + dolgu). Telefonda bu, ekranin %16'si demek. */
@media(max-width:700px){
  .panel-head{padding:11px 13px}
  .panel-head h3{font-size:13.5px}
  .panel-head .link{font-size:12px}
  .card .empty{padding:14px 16px;font-size:13px}
}


/* v490 - MOBIL PANODA LISTE BASLIKLARININ USTUNDEKI BOSLUK
   Yakin bakista sorun tek bir bosluk degil, USTUSTE IKI BASLIK katmani:
   kart basligi ("Devam eden gorevler") + hemen altinda grup basligi ("PROJE"),
   ikisi de kendi dolgusuyla. Ust uste ~63px yer kapliyor ve arasi bos duruyor.
   Kart basligi inceltildi, grup basligi kucultulup uste yaklastirildi; ayrica
   kart basligindan sonraki 4px'lik bosluk kaldirildi. Bilgi kaybi yok. */
@media(max-width:700px){
  .panel-head{padding:8px 12px}
  .panel-head h3{font-size:13px}
  .tlist{padding-top:0}
  /* not: ".tlist .tsec:first-child{padding-top:4px}" daha ozgul oldugu icin duz
     ".tsec" kurali onu ezemiyordu; ayni ozgullukle yaziliyor. Ilk denememde ayrica
     margin-top:2px eklemistim - blogu 1px BUYUTTU, kaldirildi. */
  .tsec{padding:2px 10px 1px;font-size:10px;letter-spacing:.06em}
  .tlist .tsec:first-child{padding-top:2px}
}


/* ══════════════════════════════════════════════════════════════════════════
   v491 — "FAZLA BOSLUK"UN GERCEK KAYNAGI: CIFT DOLGU
   Baslik kutusunun kendisi zaten sikiydi (36px = 8 + 20 + 8). Sorun, mobilde
   ".card{padding:12px}" kuralinin KENDI dolgusu olan basligin ustune binmesiydi:
     kart dolgusu 12 + baslik dolgusu 8 = yaziya kadar 20px ust bosluk,
     yanlarda 12 + 12 = 24px ic bosluk.
   Masaustunde .card dolgusu 0'dir; yani bu, yalnizca mobilde olusan CIFT dolgu.
   Kendi basligi/listesi olan kartlarda kart dolgusu sifirlanir - baslik ve liste
   zaten kendi dolgusunu tasir. Ic dolgusu olmayan sade kartlar 12px'i korur.
   ══════════════════════════════════════════════════════════════════════════ */
@media(max-width:700px){
  .card:has(> .panel-head){padding:0}
  .card:has(> .panel-head) > .tlist{padding-left:0;padding-right:0}
}
/* :has() desteklemeyen tarayicilar icin yedek: basligi kartin dolgusundan disari tasi */
@supports not selector(:has(*)){
  @media(max-width:700px){
    .card > .panel-head:first-child{margin:-12px -12px 0}
  }
}


/* ══════════════════════════════════════════════════════════════════════════
   v492 — LISTE SATIRLARI: IC BOSLUK
   Olcum (mobil, pano): satir 82px = dolgu 9+9 · baslik 34 (2 satir x 16.9) ·
   alt bilgi 27 (2 satir x 13.5) · aralik 3. Satirlar arasi bosluk zaten 0 -
   sisiklik satirin ICINDE.
   Metin KISALTILMADI (Kural 8: liste satirlari kirpilmaz, alt satira sarar);
   yalnizca dolgu ve satir araligi sikilastirildi. Satir yine 44px dokunma
   hedefinin uzerinde kalir.
   ══════════════════════════════════════════════════════════════════════════ */
.trow{padding:7px 10px;row-gap:2px}
.trow .ttl{line-height:1.28}
.trow .sub,.trow .tmeta,.trow small{line-height:1.3}

@media(max-width:700px){
  /* ".tlist .trow" (0,2,0) duz ".trow" (0,1,0) kuralini eziyordu; ayni ozgullukle
     yazilir, aksi halde mobilde dolgu 9px'te kaliyor (ilk denememde oyle oldu). */
  .trow, .tlist .trow{padding:6px 10px}
}


/* ══════════════════════════════════════════════════════════════════════════
   v493 — TUM SAYFALARA UYGULANAN DENETIMIN BULGULARI
   14 ekran mobilde tarandi. Yatay tasma 0, cift dolgu 0 (v491 her yerde tuttu).
   Kalan uc gercek bulgu:
   ══════════════════════════════════════════════════════════════════════════ */

/* 1) "Tumunu gor" baglantilari 70x18 - parmakla zor. Dokunma alani buyutulur ama
      DUZEN YUKSEKLIGI ARTMAZ: dolgu kadar negatif margin verilir (baslik yeniden
      sismesin diye; basliklari yeni sikilastirmistik). */
.panel-head .link{padding:12px 6px;margin:-12px -6px;display:inline-flex;align-items:center}

/* 2) KULLANICILAR: mobilde filtre cubugu 171px'ti. Rol/Departman/Durum alanlari
      ".bs-filtre" olmadigi icin "Filtrele" katlamasinin DISINDA kaliyor, hep acik
      duruyordu. Artik arama disindaki TUM alanlar panelin icinde. */
@media(max-width:700px){
  form.filter-bar:not(.acik) > .form-field:not(.bs-filtre):not(:first-of-type){display:none}
}

/* 3) YETKI MATRISI: mobilde 220px'lik uyari blogu icerigi 300px asagi itiyordu.
      Uyari onemli, kaldirilmadi - yalnizca sikilastirildi. */
@media(max-width:700px){
  .uyari-guclu{padding:10px 12px;font-size:12.5px;line-height:1.4}
  .uyari-guclu h3,.uyari-guclu h4{font-size:13px;margin:0 0 4px}
  .uyari-guclu ul{margin:4px 0 0;padding-left:16px}
  .uyari-guclu li{margin:2px 0}
}


/* ══════════════════════════════════════════════════════════════════════════
   v494 — 28 ROTALIK TARAMANIN BULGULARI (Kural 9 denetimi)
   ══════════════════════════════════════════════════════════════════════════ */

/* 1) RAPOR TABLOLARI MOBILDE SAYFAYI YATAY KAYDIRIYORDU
      /Raporlar/IsYuku: .rapor-tablo 559px, gorunum 371px -> 30 oge tasiyor, SAYFA
      yana kayiyordu. Genis tablo sayfayi degil KENDI KABINI kaydirmali (Kural 8'in
      tablo karsiligi). Tablo kendi icinde kayar, sayfa sabit kalir. */
@media(max-width:700px){
  /* DUZELTME: ilk denememde ".rapor-alan"a yazmistim ama bu sayfada oyle bir kap YOK;
     tablo dogrudan ".card" icinde duruyor (olcum: card clientW 345, scrollW 571).
     Kaydirma tablonun GERCEK kabina veriliyor. */
  .card:has(> .rapor-tablo), .card:has(> table){
    overflow-x:auto;-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain}
  /* Kart duzenine gecen tablolar bu 520 px tabanindan MUAF: yoksa kart
     ekrandan tasip yatay kaydirma gerektiriyordu (v591 bulgusu). */
  .rapor-tablo:not(.mobil-kart){min-width:520px}
  .rapor-tablo.mobil-kart{min-width:0}

  /* rapor KPI blogu 213px yer kapliyordu (4 kart, 2x2, her biri 109px).
     Tek satirlik kaydirilabilir serit: pano ile ayni dil (v467). */
  .kpis-4{display:flex;flex-wrap:nowrap;overflow-x:auto;gap:8px;min-width:0;max-width:100%;
    scrollbar-width:none}
  .kpis-4::-webkit-scrollbar{height:0}
  .kpis-4 > *{flex:0 0 auto;min-width:150px}
}

/* 2) ETIKET PARAMETRELERI: 42 dugme 38-39px idi ve dokunmatik kuralinin
      secici listesinde ".ep-btn" yoktu - eklendi. */
@media (pointer:coarse){
  .ep-btn,.ep-sil,.par-btn{min-height:44px;min-width:44px}
}


/* v494 - ETIKET TASARIMCI ARAC CUBUGU TASIYORDU
   Olcum (1130x880): ".top" flex-wrap:nowrap, 19 oge, icerik 1236px / gorunum 1126px
   -> iki dugme ekran disina tasiyor ve SAYFA yana kayiyordu.
   Cubuk artik sarar; dar ekranda kendi icinde kayar. Ogeler kucultulmez, yalnizca
   alt satira gecerler. */
.top{flex-wrap:wrap;row-gap:6px}
@media(max-width:700px){
  .top{flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;
       overscroll-behavior-x:contain;scrollbar-width:none}
  .top::-webkit-scrollbar{height:0}
  .top > *{flex:0 0 auto}
}


/* v495 - gorsel gizleme: ogeyi DOM'da birakir, ekran okuyucudan saklamaz,
   yalnizca gozle gorulmez ve yer kaplamaz. */
.baslik-tekrar{position:absolute!important;width:1px;height:1px;margin:-1px;padding:0;
  overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}

/* v495 - kuyruk bosken onizleme bolumu gizli */
.et-onz.bos{display:none}

/* v496 - genel katlanir kart (bkz. odak.js ayni surum notu) */
.card.katlanir > .panel-head{cursor:pointer;user-select:none}
.card.katlanir > .panel-head h3::after{content:'▾';margin-left:8px;font-size:11px;opacity:.6}
.card.katlanir.katli-acik > .panel-head h3::after{content:'▴'}
.card.katlanir:not(.katli-acik) > *:not(.panel-head){display:none}

/* v497 - Hesabim'da baslik ikonu kullanicinin avatari; kutuya tam otursun */
.tb-ikon.tb-ikon-avatar{background:transparent;padding:0;overflow:hidden}
.tb-ikon.tb-ikon-avatar .avatar{width:100%;height:100%;border-radius:9px;font-size:11px}
.tb-ikon.tb-ikon-avatar img{width:100%;height:100%;object-fit:cover;border-radius:9px;display:block}

/* v498 - Pano arac cubugunda yalnizca "Atanan" alaninin etiketi vardi, digerleri
   ("Tum oncelikler", "Tum projeler", arama) etiketsizdi - satir icinde tek basina
   duran etiket hizayi da bozuyordu. Kompakt arac cubugunda etiket gosterilmez;
   erisilebilirlik icin aria-label JS tarafinda zaten veriliyor. */
.toolbar .form-field > label{display:none}
.toolbar{align-items:center}

/* v499 - ust cubukta "geri" baglantisi (ic ice sayfalar) */
.ust-geri:empty{display:none}
.ust-geri{display:flex;align-items:center;margin-right:2px}
.ust-geri-btn{display:inline-flex;align-items:center;gap:5px;padding:7px 10px 7px 7px;
  border-radius:9px;background:transparent;border:0;color:var(--muted);
  font-size:12.5px;font-weight:600;text-decoration:none;cursor:pointer;white-space:nowrap}
.ust-geri-btn:hover{background:rgba(148,163,184,.14);color:var(--text)}
.ust-geri-btn:focus-visible{outline:2px solid var(--primary);outline-offset:2px}
.ust-geri-btn svg{width:16px;height:16px;flex:none}
@media(max-width:700px){
  .ust-geri-btn{padding:9px 6px;min-height:40px}
  .ust-geri-btn .ug-ad{display:none}   /* dar ekranda yalnizca ok */
}

/* ══════════════════════════════════════════════════════════════════════════
   v500 — CEKMECEDEKI GOREV LISTESINDE SUTUN DENGESI
   Olcum (proje detayi, 520px cekmece): satir 441px icinde kod 108 + BASLIK 141 +
   yuzde 120. Kod ve yuzde birlikte basliktan FAZLA yer kapliyor, baslik 3 satira
   sikisip gorsel olarak kirpiliyordu ("...Perakende Direkto...").
   Baslik artik kalan alani alir; kod ve yuzde icerikleri kadar yer kaplar.
   Ana listelerdeki (genis ekran) duzen etkilenmez - kural yalnizca cekmece icin.
   ══════════════════════════════════════════════════════════════════════════ */
.drawer .sh-detay .trow{gap:2px 10px}
.drawer .sh-detay .trow > .code{flex:0 0 auto;min-width:0}
.drawer .sh-detay .trow > .ttl{flex:1 1 auto;min-width:0}
.drawer .sh-detay .trow > .due{flex:0 0 auto;min-width:0;text-align:right;white-space:nowrap}

/* v500 duzeltme: .code ve .due SABIT genislikli (108/120px) tanimlanmis; cekmecede
   441px'lik satirin yarisini yiyorlardi. Cekmece icinde genislikler serbest birakilir
   (icerik kadar), boylece baslik kalan alani alir. Ana listeler etkilenmez. */
.drawer .sh-detay .trow > .code{width:auto}
.drawer .sh-detay .trow > .due{width:auto;min-width:44px}

/* v501 - ust cubuga tasinan eylem grubu (Duzenle + Sil gibi) yan yana dursun */
.ust-eylem > div{display:flex;align-items:center;gap:8px}
.ust-eylem form{margin:0}

/* ══════════════════════════════════════════════════════════════════════════
   v503 — PROJE OZETI (yazdirilabilir tek sayfa)
   Cekmece calisma yuzeyidir (durum degistir, gorev ac, uye ekle); bu sayfa ise
   PAYLASILABILIR ciktidir. Ekranda da duzgun durur, yazdirmada da: yazdirirken
   menu/ust cubuk/sohbet balonu gizlenir, kartlar cerceveye oturur.
   ══════════════════════════════════════════════════════════════════════════ */
.ozet-ust{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;padding:14px}
.ozet-kutu{border:1px solid var(--line);border-radius:10px;padding:10px 12px;background:var(--surface)}
.ozet-etiket{font-size:10.5px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--muted)}
.ozet-deger{font-size:20px;font-weight:700;margin-top:3px;line-height:1.2}
.ozet-deger.ozet-kucuk{font-size:13px;font-weight:600}
.ozet-alt{font-size:11.5px;color:var(--muted);margin-top:2px}
.ozet-aciklama{padding:0 14px 14px;color:var(--muted);font-size:13px;line-height:1.5}
.ozet-dagilim{padding:12px 14px;display:grid;gap:8px}
.ozet-dg{display:grid;grid-template-columns:150px 1fr 42px;align-items:center;gap:10px;font-size:12.5px}
.ozet-dg-ad{color:var(--text);font-weight:600;overflow-wrap:anywhere}
.ozet-dg-bar{height:8px;border-radius:4px;background:var(--line-2);overflow:hidden}
.ozet-dg-bar > span{display:block;height:100%;background:var(--primary);border-radius:4px}
.ozet-dg-sayi{text-align:right;font-weight:700}
@media(max-width:700px){
  .ozet-dg{grid-template-columns:110px 1fr 34px}
  .ozet-deger{font-size:17px}
}
@media print{
  .sidebar,.topbar,.chat-head,.chat-yigin,.altnav,.sb-cev,.drawer{display:none!important}
  .content{padding:0!important}
  .ozet-sayfa .card{break-inside:avoid;box-shadow:none;border:1px solid #ddd}
  .ozet-sayfa .rapor-tablo{min-width:0}
}

/* v504 - proje ozetinde kisi bazli dagilim */
.ozet-kisi{display:grid;grid-template-columns:190px 1fr 62px;grid-template-areas:"ad bar sayi" "durum durum durum";
  align-items:center;gap:6px 10px;padding:8px 0;border-bottom:1px solid var(--line-2)}
.ozet-kisi:last-child{border-bottom:0}
.ozet-kisi-ad{grid-area:ad;font-size:12.5px;font-weight:600;overflow-wrap:anywhere}
.ozet-kisi-bar{grid-area:bar;height:8px;border-radius:4px;background:var(--line-2);overflow:hidden}
.ozet-kisi-bar .ok-tamam{display:block;height:100%;background:#16a34a;border-radius:4px}
.ozet-kisi-sayi{grid-area:sayi;text-align:right;font-size:12px;font-weight:700;white-space:nowrap}
.ozet-kisi-durum{grid-area:durum;display:flex;flex-wrap:wrap;gap:5px}
.ozet-rozet{font-size:10.5px;color:var(--muted);background:var(--line-2);border-radius:20px;padding:2px 8px}
.ozet-rozet b{color:var(--text)}
@media(max-width:700px){ .ozet-kisi{grid-template-columns:1fr 52px;grid-template-areas:"ad sayi" "bar bar" "durum durum"} }

/* ══════════════════════════════════════════════════════════════════════════
   v505 — PROJE OZETI: KISI BAZLI DAGILIM KPI KARTLARI
   Satir listesi yerine kart izgarasi: avatar + ad/unvan + tamamlanan/toplam +
   oransal cubuk + durum rozetleri + "Bilgiler" / "Soru sor".
   ══════════════════════════════════════════════════════════════════════════ */
.kisi-kpi-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(255px,1fr));gap:12px;padding:14px}
.kisi-kpi{border:1px solid var(--line);border-radius:12px;padding:12px;background:var(--surface);
  display:flex;flex-direction:column;gap:9px;transition:box-shadow .15s,border-color .15s}
.kisi-kpi:hover{border-color:#c7d2fe;box-shadow:0 6px 18px rgba(2,6,23,.08)}
.kisi-kpi.atanmamis{background:var(--bg);border-style:dashed}
.kisi-kpi-ust{display:flex;align-items:center;gap:10px;min-width:0}
.kisi-kpi-av{width:38px;height:38px;flex:none;border-radius:50%;font-size:13px}
.kisi-kpi-bos{display:flex;align-items:center;justify-content:center;background:var(--line-2);color:var(--muted);font-weight:700}
.kisi-kpi-kim{min-width:0}
.kisi-kpi-ad{font-size:13px;font-weight:700;overflow-wrap:anywhere;line-height:1.25}
.kisi-kpi-unvan{font-size:11.5px;color:var(--muted);overflow-wrap:anywhere;line-height:1.3}
.kisi-kpi-sayi{display:flex;align-items:baseline;gap:6px}
.kisi-kpi-sayi b{font-size:24px;font-weight:700;line-height:1}
.kisi-kpi-sayi span{font-size:12px;color:var(--muted)}
.kisi-kpi-bar{height:8px;border-radius:4px;background:var(--line-2);overflow:hidden}
.kisi-kpi-bar > span{display:block;height:100%;background:#16a34a;border-radius:4px}
.kisi-kpi-rozetler{display:flex;flex-wrap:wrap;gap:5px}
.kisi-kpi-eylem{display:flex;gap:6px;margin-top:2px}
.kisi-kpi-eylem .btn{flex:1;justify-content:center;padding:6px 8px;font-size:12px;min-height:34px}
@media (pointer:coarse){ .kisi-kpi-eylem .btn{min-height:44px} }
@media print{ .kisi-kpi-eylem{display:none} .kisi-kpi{break-inside:avoid} }

/* v506 - kisi KPI kartinda iletisim ikonlari (WhatsApp / Sohbet)
   "Bilgiler" dugmesi kaldirildi: kart zaten kimin oldugunu ve yukunu soyluyordu.
   Ikonlar 40px (dokunmatikte 44); ikisi de proje ve durum ozetini hazir metin olarak tasir. */
.kpi-ico{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;
  border-radius:10px;border:1px solid var(--line);background:var(--surface);color:var(--muted);
  cursor:pointer;text-decoration:none;transition:background .15s,color .15s,border-color .15s}
.kpi-ico svg{width:19px;height:19px}
.kpi-ico:hover{border-color:#c7d2fe;color:var(--text);background:#f8fafc}
.kpi-ico:focus-visible{outline:2px solid var(--primary);outline-offset:2px}
.kpi-ico.wa:hover{background:#25d366;border-color:#25d366;color:#fff}
.kpi-ico.sh:hover{background:var(--primary);border-color:var(--primary);color:#fff}
@media (pointer:coarse){ .kpi-ico{width:44px;height:44px} }

/* v508 - ozet ust seridinde DURUM degeri: minik rozet yerine "nokta + metin",
   diger kutulardaki buyuk degerlerle ayni agirlikta. */
.ozet-deger.ozet-durum{display:flex;align-items:center;gap:8px;font-size:19px;line-height:1.25;
  overflow-wrap:anywhere}
.ozet-nokta{width:11px;height:11px;border-radius:50%;flex:none;box-shadow:0 0 0 3px rgba(2,6,23,.06)}

/* ══════════════════════════════════════════════════════════════════════════
   v509 — OZET UST SERIDI: ORTALI HIZA + DAHA INCE YAZI
   Kutular sola dayaliydi ve degerler 700 agirliktaydi; ozellikle "Durum" kutusu
   kalin ve dengesiz duruyordu. Tum serit ortalandi (etiket + deger + alt satir)
   ve deger agirligi 700 -> 600, punto 20 -> 18px'e indirildi.
   Ortalama TEK kutuya degil BESINE birden uygulanir; aksi halde ortali kutu
   digerlerinden ayrik gorunurdu.
   ══════════════════════════════════════════════════════════════════════════ */
/* v510 - ORTALAMA GERI ALINDI, YERINE AYNI IC YAPI
   v509'da kutulari ortalamistim; daginik gorunmesinin sebebi hiza degil, kutularin
   IC YAPISININ farkli olmasiydi: kimi cubuklu, kimi alt satirli, punto 18 ile 12.5
   karisik. Ortalama bu farklari daha da gorunur kildi.
   Cozum: her kutu AYNI uc satirdan olusur - etiket / deger / alt bilgi.
   Deger punto ve agirligi TUM kutularda ayni; ikincil bilgi hep ayni kucuk puntoda;
   ilerleme cubugu alt satir yuvasina oturur. Hiza sola alindi (karisik uzunluktaki
   metinler solda daha derli toplu okunur). */
/* Olcum: degerler BES ayri yukseklikte basliyordu (185-196px) - "duzensiz" gorunumun
   asil sebebi buydu. Deger satiri SABIT yukseklikte ve uste hizali; boylece butun
   kutularda deger ayni cizgide baslar, alt bilgi/cubuk da ayni cizgide biter. */
.ozet-kutu{text-align:left;display:grid;grid-template-rows:14px 38px auto;gap:5px;min-height:86px}
.ozet-etiket{letter-spacing:.06em}
.ozet-deger{font-size:18px;font-weight:600;margin:0;line-height:1.25;align-self:start;
  display:flex;align-items:center;min-height:0}
.ozet-deger.ozet-kucuk{font-size:13px;font-weight:600;line-height:1.3;align-items:center}
.ozet-deger.ozet-durum{font-size:18px;font-weight:600;justify-content:flex-start}
.ozet-kutu .kc-prog{width:100%;margin:0;align-self:end}
.ozet-alt{font-weight:500;font-size:11.5px;line-height:1.3;align-self:end}

/* ══════════════════════════════════════════════════════════════════════════
   v513 — PROJE OZETI GOREV TABLOSU: DAR KOLONLAR + KUCUK PUNTO
   Olcum: punto 13.5px, hucre dolgusu 10/12, satir yuksekligi 62px, 30 satir ->
   tablo 1853px, sayfa 2684px (~3 A4). Satirlarin yuksek olmasinin sebebi hem dolgu
   hem de "Atanan" metninin 191px'e sigmayip iki satira kirilmasiydi.
   Durum ve Ilerleme kolonlari icerikleri kadar daraltildi (tek satir), puntolar
   kucultuldu. Yazdirmada ayrica daha da sikilasir, baslik satiri her sayfada
   tekrarlanir ve satirlar sayfa arasinda BOLUNMEZ.
   ══════════════════════════════════════════════════════════════════════════ */
.ozet-sayfa .rapor-tablo{font-size:12px}
.ozet-sayfa .rapor-tablo th,
.ozet-sayfa .rapor-tablo td{padding:6px 8px;vertical-align:top}
.ozet-sayfa .rapor-tablo td:nth-child(1){white-space:nowrap;font-size:11px}
.ozet-sayfa .rapor-tablo th:nth-child(3),
.ozet-sayfa .rapor-tablo td:nth-child(3){width:180px;font-size:11.5px;line-height:1.3}
.ozet-sayfa .rapor-tablo th:nth-child(4),
.ozet-sayfa .rapor-tablo td:nth-child(4){width:88px;white-space:nowrap}
.ozet-sayfa .rapor-tablo th:nth-child(5),
.ozet-sayfa .rapor-tablo td:nth-child(5){width:58px;white-space:nowrap;text-align:right}

@media print{
  .ozet-sayfa .rapor-tablo{font-size:10px}
  .ozet-sayfa .rapor-tablo th,
  .ozet-sayfa .rapor-tablo td{padding:3px 6px}
  .ozet-sayfa .rapor-tablo td:nth-child(1){font-size:9px}
  .ozet-sayfa .rapor-tablo th:nth-child(3),
  .ozet-sayfa .rapor-tablo td:nth-child(3){width:150px;font-size:9.5px}
  .ozet-sayfa .rapor-tablo th:nth-child(4),
  .ozet-sayfa .rapor-tablo td:nth-child(4){width:74px}
  .ozet-sayfa .rapor-tablo th:nth-child(5),
  .ozet-sayfa .rapor-tablo td:nth-child(5){width:46px}
  /* baslik her sayfada tekrarlansin, satirlar sayfa arasinda bolunmesin */
  .ozet-sayfa .rapor-tablo thead{display:table-header-group}
  .ozet-sayfa .rapor-tablo tr{break-inside:avoid;page-break-inside:avoid}
  .ozet-ust{gap:8px;padding:10px}
  .ozet-kutu{min-height:0;padding:8px 10px}
  .kisi-kpi-grid{gap:8px;padding:10px}
}

/* v514 - dar ekranda "+ Yeni ..." disindaki birincil eylemler (Yazdir/PDF, Duzenle,
   Sil...) metniyle kalir; yalnizca kompaktlasir. Metni "+" ile degistirmek yanlis
   anlam yaratiyordu. */
@media(max-width:700px){
  .ust-eylem .btn.eylem-dar{padding:8px 10px;font-size:11.5px;min-height:40px;
    max-width:132px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .ust-eylem > div{gap:6px}
}

/* ══════════════════════════════════════════════════════════════════════════
   v545 — CIHAZLARDA YAKINLASTIRMA KAPALI
   Sahada barkod okuturken elin ekrana degmesi gorunumu kaydiriyor, kullanici
   nereye bastigini sasiriyordu. viewport meta'si tek basina yetmiyor:
   iOS Safari user-scalable=no'yu yok sayar; cift dokunus yakinlastirmasini da
   ancak touch-action kapatir.
   NOT: yakinlastirmayi kapatmak erisilebilirlik acisindan tartismalidir; burada
   bilerek tercih edildi cunku ekran zaten 16px+ ve buyuk dokunma hedefleriyle
   tasarlandi.
   ══════════════════════════════════════════════════════════════════════════ */
html { -webkit-text-size-adjust: 100%; text-size-adjust: 100% }
body { touch-action: manipulation }


.degisim-kpi{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;margin-bottom:16px}

/* Panodaki "Etiket degisimi bekliyor" serit karti (masaustu olculeri) */
.degisim-serit{display:flex;align-items:center;gap:12px;padding:13px 15px;margin-bottom:14px;
  text-decoration:none;color:inherit;border-left:3px solid var(--primary)}
/* Ikon, kart basliklarindaki .ph-ico ile AYNI dilde: renkli kutu YOK,
   yalniz simge (kullanici: "acik talepler ikonu ile ayni olmali"). */
.degisim-serit .ds-ikon{flex:none;width:18px;height:18px;display:grid;place-items:center;color:var(--primary)}
.degisim-serit .ds-ikon svg{width:16px;height:16px}
.degisim-serit .ds-govde{flex:1;min-width:0;display:block}
.degisim-serit .ds-alt{display:block;color:var(--muted);font-size:12.5px}
.degisim-serit .ds-ac{flex:none}
/* KPI kutulari: olculer SINIFTA — inline style 0,75 olcek katmanini eziyordu. */
.degisim-kpi .kpi-kutu{padding:12px 14px}
.degisim-kpi .kpi-ad{font-size:12px;color:var(--muted)}
.degisim-kpi .kpi-deger{font-size:22px;font-weight:700}
.degisim-kpi .kpi-alt{font-size:14px;color:var(--muted);font-weight:400}



/* ==== v592 URETILEN 0,75 OLCEK KATMANI — BASLANGIC ==== */
/* Uretici: scratchpad/olcek_uret.py — ELLE DUZENLEME YAPMA, yeniden uretilir.
   Masaustu kurallarinin font-size/padding/margin/gap/line-height degerleri
   x0,75. height/width'e dokunulmaz (38 px dokunma hedefleri korunur). */
@media (max-width:430px){
  .brand{gap:8.2px;padding:4.5px 6px 13.5px;margin-bottom:10.5px}
  .brand .logo{font-size:12.4px}
  .amblem-yuk{gap:9px;font-size:9.8px}
  .brand .name{font-size:11.2px}
  .brand .sub{font-size:9.5px;margin-top:1.5px}
  .nav-label{font-size:9.5px;padding:10.5px 7.5px 4.5px}
  .nav-item{gap:8.2px;padding:6.8px 8.2px;font-size:10.1px}
  .user-chip{gap:7.5px;padding:5.2px 6px}
  .avatar{font-size:9.5px}
  .user-chip .nm{font-size:9.8px}
  .user-chip .rl{font-size:9.5px}
  .logout-btn{font-size:9.5px;padding:6px 7.5px}
  .content{padding:19.5px 25.5px 45px}
  .page-head{margin-bottom:15px}
  .page-head h1{font-size:17.2px;margin:0 0 2.2px}
  .page-head .desc{font-size:10.1px}
  .grid{gap:12px}
  .panel-head{padding:12px 13.5px}
  .panel-head h3{font-size:11.2px}
  .empty{padding:22.5px}
  .kpis{margin-bottom:13.5px}
  .kpi{padding:12.8px 13.5px}
  .kpi-val{font-size:22.5px}
  .kpi-cap{font-size:9.5px;margin-top:4.5px}
  .thead{gap:9.8px;padding:8.2px 9px;font-size:9.5px}
  .tlist{padding:4.5px}
  .trow{gap:9.8px;padding:8.2px 9px}
  .code{font-size:9.5px}
  .ttl{font-size:10.1px}
  .col-sube{font-size:9.5px}
  .col-atanan{font-size:9.5px}
  .pill{font-size:9.5px;padding:2.2px 6.8px}
  .due{font-size:9.5px}
  .link-tag{font-size:9.5px;padding:1.5px 5.2px;margin-left:4.5px}
  .dist{padding:13.5px}
  .dist-row{gap:9px;margin-bottom:9.8px}
  .dist-row .nm{font-size:9.5px;gap:5.2px}
  .dist-row .v{font-size:9.5px}
  .proj{padding:13.5px}
  .proj .pcode{font-size:9.5px}
  .proj h3{font-size:11.6px;margin:5.2px 0 3.8px}
  .proj .pd{font-size:9.5px}
  .proj .pmeta{gap:7.5px;margin:9.8px 0 8.2px}
  .sube-chip{font-size:9.5px}
  .prog-wrap .pl{font-size:9.5px;margin-bottom:3.8px}
  .pvade{font-size:9.5px;margin-top:8.2px}
  .param-list{padding:4.5px 0}
  .param-row{gap:12px;padding:9px 13.5px}
  .pk-ad{font-size:9.8px}
  .pk-ac{font-size:9.5px}
  .param-val{font-size:9.8px;padding:4.5px 9px}
  .login-card{padding:24px}
  .login-brand{gap:8.2px;margin-bottom:16.5px}
  .login-brand .name{font-size:12px}
  .login-brand .sub{font-size:9.5px}
  .login-card h1{font-size:15px;margin:0 0 3px}
  .login-desc{font-size:9.8px;margin:0 0 15px}
  .login-field{margin-bottom:10.5px}
  .login-field label{font-size:9.5px;margin-bottom:4.5px}
  .login-field input{padding:8.2px 9.8px;font-size:10.5px}
  .login-submit{margin-top:4.5px;padding:9px}
  .login-error{padding:7.5px 9.8px;font-size:9.8px;margin-bottom:12px}
  .head-row{gap:12px}
  .form-card{padding:18px}
  .form-grid{gap:12px 15px}
  .form-field{gap:4.5px}
  .form-field label{font-size:9.5px}
  .form-field input,.form-field select,.form-field textarea{padding:7.5px 9px;font-size:10.1px}
  .form-actions{gap:7.5px;margin-top:16.5px;padding-top:13.5px}
  .form-error{font-size:9.8px;margin-bottom:10.5px}
  .form-error ul{padding-left:13.5px}
  .form-side-actions{gap:7.5px;margin-top:12px;padding-top:12px}
  .form-hint{font-size:9.5px}
  .check-line{gap:6px;font-size:10.1px;padding-top:4.5px}
  .form-field select[multiple]{padding:4.5px}
  .col-eposta{font-size:9.5px}
  .col-kod code{font-size:9.5px}
  .col-sehir{font-size:9.5px}
  .col-bolge{font-size:9.5px}
  .col-sorumlu{font-size:9.5px}
  .col-aciklama{font-size:9.5px;padding-right:9px}
  .col-kullanici{font-size:9.5px}
  .col-departman{font-size:9.5px}
  .col-op{font-size:9.5px}
  .gorev-ekle-form{gap:6px;margin-top:9px;padding-top:9px}
  .gorev-ekle-form input[type=text],.gorev-ekle-form select,.gorev-ekle-form input[type=datetime-local]{padding:6px 7.5px;font-size:9.8px}
  .pipeline{margin-bottom:13.5px}
  .pipe-step{padding:10.5px 12px}
  .pipe-lbl{font-size:9.5px;gap:4.5px}
  .pipe-num{font-size:17.2px;margin-top:3.8px}
  .ek-list{gap:6px;margin-bottom:10.5px}
  .ek-row{gap:8.2px;padding:7.5px 9px}
  .ek-ad{font-size:10.1px}
  .ek-boyut{font-size:9.5px}
  .ek-sil button{font-size:9.8px}
  .ek-bos{font-size:9.8px;padding:6px 0 10.5px}
  .ek-yukle{gap:7.5px;padding-top:10.5px}
  .ek-yukle input[type=file]{font-size:9.8px}
  .rapor-kart h3{margin:0 0 4.5px;font-size:11.2px}
  .rapor-kart p{font-size:9.8px}
  .rapor-head{margin-bottom:10.5px}
  .rapor-head h1{font-size:16.5px;margin:0 0 3px}
  .rapor-meta{font-size:9.5px}
  .rapor-vurgu{gap:7.5px;padding:6.8px 12px}
  .rapor-vurgu .rv-cap{font-size:9.5px}
  .rapor-vurgu .rv-val{font-size:18px}
  .filter-bar{gap:9px;margin-bottom:12px}
  .filter-bar .form-field label{font-size:9.5px;margin-bottom:3px}
  .rapor-tablo{font-size:10.1px}
  .rapor-tablo th,.rapor-tablo td{padding:7.5px 9px}
  .rapor-tablo th{font-size:9.5px}
  .rapor-tablo td.bos{padding:18px}
  .ilerleme-yuzde{font-size:9.5px;margin-left:6px}
  .pager{gap:9px;margin-top:12px}
  .pager-info{font-size:9.5px}
  .pager-btns{gap:6px}
  .pager-btns .btn{padding:4.5px 9px;font-size:9.8px}
  .kpis-4{gap:10.5px;margin-bottom:13.5px}
  .rapor-grid{gap:12px}
  .rapor-kart{gap:12px;padding:15px}
  .rk-body h3{margin:0 0 3.8px;font-size:11.6px}
  .rk-body p{font-size:9.8px}
  .rk-go{font-size:9.5px}
  .rapor-aciklama{margin-top:7.5px;font-size:9.5px;gap:4.5px}
  .geciken-rozet{padding:0.8px 5.2px;font-size:9.5px}
  .search input{padding:6.8px 9px 6.8px 27px;font-size:10.1px}
  .toolbar{gap:7.5px;margin-bottom:12px}
  .seg{padding:2.2px}
  .seg-btn{gap:4.5px;padding:5.2px 9.8px;font-size:9.8px}
  .select{padding:6px 9px;font-size:9.8px}
  .kanban{gap:10.5px;padding-bottom:6px}
  .kcol-head{padding:9px 10.5px}
  .kcol-head .t{font-size:9.8px;gap:6px}
  .kcol-head .cnt{font-size:9.5px;padding:0.8px 6px}
  .kcards{padding:7.5px;gap:6.8px}
  .kcard{padding:9px}
  .kcard .kc-code{font-size:9.5px}
  .kcard .kc-ttl{font-size:9.8px;margin:3.8px 0 6.8px}
  .kcard .kc-foot{gap:6px}
  .kcard .kc-yuzde{font-size:9.5px}
  .tag{font-size:9.5px;padding:1.5px 6px}
  .kc-prog{margin:6.8px 0 0}
  .tpl{padding:13.5px}
  .tphd{gap:8.2px;margin-bottom:8.2px}
  .tphd h3{font-size:11.2px}
  .tp-kat{font-size:9.5px;margin-top:1.5px}
  .tp-rozet{font-size:9.5px;padding:2.2px 6.8px}
  .tp-desc{font-size:9.8px;margin:0 0 10.5px}
  .tp-go{font-size:9.8px}
  .sb-gorev{padding:9.8px 11.2px;margin:0 0 7.5px}
  .sb-gorev-head{gap:7.5px}
  .sb-ttl{font-size:10.5px}
  .sb-desc{font-size:9.5px;margin-top:3.8px}
  .sb-adimlar{margin:6.8px 0 0;padding-left:13.5px;font-size:9.8px}
  .sb-adimlar li{margin:2.2px 0}
  .checklist{gap:1.5px;margin-bottom:10.5px}
  .check-row{gap:8.2px;padding:6.8px 7.5px}
  .chk-ttl{font-size:10.1px}
  .chk-sil button{font-size:9.8px}
  .drawer-close{font-size:11.2px}
  .drawer-body{padding:16.5px 19.5px 30px}
  .drawer-loading{padding:30px 0}
  .sheet-status{margin-bottom:7.5px}
  .sheet-durum-cap{margin:0 auto 12px}
  .sheet-code{font-size:9.5px}
  .sheet-title{font-size:15px;margin:3px 0 13.5px}
  .det-meta{gap:11.2px 13.5px;margin-bottom:13.5px}
  .dm-lbl{font-size:9.5px;margin-bottom:3.8px}
  .dm-val{font-size:10.5px;gap:5.2px}
  .mini-ava{font-size:9.5px}
  .prof-wrap{gap:13.5px}
  .prof-card{padding:15px}
  .prof-ava-box{gap:3px}
  .prof-ava{font-size:25.5px}
  .prof-ad{font-size:12px;margin-top:6px}
  .prof-unvan{font-size:9.5px}
  .prof-rol{margin-top:3px}
  .prof-foto-form{gap:6px;margin-top:9px}
  .prof-form{padding:15px}
  .panel-h{margin:0 0 10.5px;font-size:11.2px}
  .user-chip{gap:7.5px}
  .eksik-rozet{padding:0 3.8px;font-size:9.5px}
  .sheet-sec{padding-top:12px;margin-top:12px}
  .sec-baslik{font-size:9.5px;margin-bottom:8.2px}
  .sheet-desc{font-size:10.1px}
  .sheet-desc.kutu{padding:9.8px 11.2px}
  .sheet-btn{margin-bottom:3px}
  .durum-pills{gap:6px}
  .durum-pill{padding:5.2px 10.5px;font-size:9.5px}
  .yorum{gap:7.5px;margin-bottom:9px}
  .yorum-ust{font-size:9.8px}
  .yorum-zaman{font-size:9.5px}
  .yorum-metin{padding:6.8px 9px;font-size:10.1px;margin-top:3px}
  .yorum-ekle{gap:6px;margin-top:7.5px}
  .yorum-ekle input{padding:6.8px 9px;font-size:10.1px}
  .ek-satir{gap:6px;margin-top:7.5px}
  .ek-satir input{padding:6.8px 9px;font-size:10.1px}
  .gecmis{gap:9.8px}
  .gecmis-satir{gap:8.2px}
  .gecmis-nokta{margin-top:3.8px}
  .gecmis-metin{font-size:10.1px}
  .gecmis-alt{font-size:9.5px;margin-top:1.5px}
  .bell-dot{font-size:9.5px;padding:0 3px}
  .bell-head{padding:9.8px 12px}
  .bell-head b{font-size:10.5px}
  .bell-mini{font-size:9.5px}
  .kc-toplu{gap:6px;padding:3px 7.5px 6px;margin-bottom:3px}
  .bs-mini{padding:3.8px 7.5px;font-size:9.5px}
  .bs-bos-liste{padding:15px 10.5px;font-size:9.8px}
  .oncelik-htr{gap:3px;font-size:9.5px}
  .bell-grup{margin:4.5px 4.5px 0}
  .bell-grup-bas{font-size:9.5px;padding:5.2px 9px 2.2px}
  .bell-grup .bell-item{padding-left:9px}
  .bell-item{gap:8.2px;padding:8.2px 12px}
  .bi-ttl{font-size:9.8px}
  .bi-sub{font-size:9.5px;margin-top:1.5px}
  .bi-tm{font-size:9.5px;margin-top:2.2px}
  .bi-dot{margin-top:4.5px}
  .bell-bos{padding:19.5px 12px;font-size:9.8px}
  .bell-foot{padding:8.2px 12px;font-size:9.8px}
  .ptabs{gap:3px;margin-bottom:15px}
  .ptab{padding:8.2px 12px;font-size:10.5px;margin-bottom:-0.8px}
  .uyari{padding:8.2px 12px;margin-bottom:12px;font-size:10.1px}
  .switch-row{gap:7.5px;font-size:10.5px}
  .switch-row.big{padding:10.5px 0}
  .liste-grid{gap:12px}
  .liste-rows{gap:6.8px}
  .liste-row{gap:7.5px;padding:6.8px 9px}
  .liste-row.ekle{margin-top:3px}
  .satir-form{gap:5.2px}
  .satir-form input[type=text],.satir-form input:not([type]){padding:5.2px 7.5px;font-size:10.1px}
  .satir-form input[type=number]{padding:4.5px 4.5px;font-size:9.5px}
  .htr-rows .liste-row{padding:7.5px 1.5px}
  .htr-rows .htr-ad{gap:5.2px}
  .kapali-chk{gap:5.2px;font-size:9.5px}
  .bldr-satir{gap:9px;padding:10.5px 3px}
  .bldr-nokta{margin-top:4.5px}
  .bldr-ust{font-size:10.5px}
  .bldr-zaman{font-size:9.5px}
  .bldr-mesaj{font-size:9.8px;margin-top:2.2px}
  .bldr-aksiyon{gap:4.5px}
  .tpl-gorev{padding:10.5px 12px;margin-bottom:9px}
  .tpl-gorev-bas{gap:9px}
  .tpl-rozet{font-size:9.5px;padding:1.5px 6px;margin-left:4.5px}
  .tpl-acik{font-size:9.8px;margin-top:3px}
  .tpl-adimlar{margin-top:8.2px;padding-top:8.2px;gap:4.5px}
  .tpl-adim{font-size:9.8px}
  .lnk-sil{font-size:9.8px}
  .tpl-adim-ekle{gap:5.2px;margin-top:3px}
  .tpl-adim-ekle input{padding:5.2px 7.5px;font-size:9.8px}
  .tpl-yeni-gorev{margin-top:10.5px;padding-top:12px}
  .tpl-yeni-bas{font-size:9.5px;margin-bottom:7.5px}
  .tpl-gorev-form{gap:9px}
  .tpl-body{padding:10.5px 13.5px}
  .tpl-vade{gap:6px;margin-top:8.2px;padding-top:8.2px}
  .tpl-vade label{font-size:9.5px}
  .tpl-vade input[type=number]{padding:4.5px 6px;font-size:9.8px}
  .tpl-vade-info{font-size:9.5px;margin-left:3px}
  .ozet-grup{margin-bottom:9.8px}
  .ozet-kisi{font-size:10.1px}
  .ozet-list{margin:3.8px 0 0 15px;font-size:9.8px}
  .tp-aksiyon{gap:7.5px}
  .pipeline{margin-bottom:13.5px}
  .pipe-step{padding:11.2px 12px}
  .pipe-step .lbl{font-size:9.5px;gap:4.5px}
  .pipe-step .num{font-size:18px;margin-top:3.8px}
  .kpis{margin-bottom:13.5px}
  .kpi{padding:12.8px 13.5px}
  .kpi .ico{margin-bottom:9px}
  .kpi .val{font-size:22.5px}
  .kpi .cap{font-size:9.5px;margin-top:3.8px}
  .kpi .trend{font-size:9.5px;margin-top:6px;gap:3px}
  .link{font-size:9.5px}
  .tlist{padding:4.5px}
  .trow .code{font-size:9.5px}
  .trow .ttl{font-size:10.1px;gap:1.5px}
  .trow .ttl-ust{gap:5.2px}
  .trow-alt{font-size:9.5px}
  .av-sm{font-size:9.5px}
  .dist{padding:13.5px}
  .dist-row{gap:9px;margin-bottom:9.8px}
  .dist-row .nm{font-size:9.5px;gap:5.2px}
  .dist-row .v{font-size:9.5px}
  .feed{padding:6px 13.5px 12px}
  .feed-item{gap:9px;padding:8.2px 0}
  .feed-dot{margin-top:3.8px}
  .feed-item .tx{font-size:9.8px}
  .feed-item .tm{font-size:9.5px;margin-top:1.5px}
  .notif-list{gap:6.8px}
  .notif-grup{padding:1.5px 0 3px 7.5px;margin-bottom:4.5px;gap:6.8px}
  .notif-grup-bas{font-size:9.5px;padding:1.5px 1.5px 0}
  .notif{gap:9px;padding:9.8px 10.5px}
  .notif .ntx{font-size:9.8px}
  .notif .ntm{font-size:9.5px;margin-top:2.2px}
  .notif .udot{margin-top:4.5px}
  .hesap-link{margin-top:7.5px;font-size:9.5px}
  .login-ok{padding:7.5px 9px;font-size:9.8px;margin-bottom:10.5px}
  .login-link{margin-top:10.5px;font-size:9.8px}
  .login-or{gap:9px;margin:12px 0;font-size:9.5px}
  .google-btn{gap:7.5px;padding:8.2px 10.5px;font-size:10.5px}
  .ico-btn{gap:3.8px;margin-left:4.5px;padding:2.2px 6px;font-size:9.5px}
  .iletisim-row{gap:6px;margin:7.5px 0 3px}
  .dm-kisi{gap:6.8px}
  .kisi{gap:6.8px}
  .kisi-unvan{font-size:9.5px;margin-top:0.8px}
  .iletisim-row .ico-btn{padding:4.5px 9px;font-size:9.8px}
  .kisi-ilet{margin-top:8.2px;gap:6.8px}
  .kisi-tel{gap:4.5px;font-size:9.8px}
  .kisi-actions{gap:6px}
  .ilet-btn{gap:4.5px;padding:5.2px 10.5px;font-size:9.8px}
  .isler-grid{margin-bottom:12px}
  .list-pipe{margin-bottom:12px}
  .ayar-grup{padding:0 13.5px 12px;margin-bottom:12px}
  .ayar-grup .grup-baslik{font-size:10.1px;margin:0 0 10.5px;padding:9.8px 0 8.2px;gap:6.8px}
  .ayar-grup .grup-baslik small{font-size:9.5px}
  .smtp-form .form-actions{margin-top:3px}
  .olay-baslik{margin:15px 0 1.5px;padding-top:12px}
  .olay-hint{font-size:9.5px;margin-bottom:7.5px}
  .olay-satir{gap:10.5px;padding:6.8px 0}
  .pipe-tools{margin:-4.5px 0 12px}
  .kapali-sw{gap:6.8px;font-size:9.5px}
  .tel-num{margin-left:6px;font-size:9.5px}
  .sok{font-size:9.5px}
  .uye-yonetim{gap:10.5px;margin-top:6px}
  .uye-kol-bas{font-size:9.5px;padding:6px 9px}
  .uye-row{gap:6px;padding:6px 9px}
  .uye-ad{font-size:9.8px}
  .uye-btn{font-size:9.5px;padding:3.8px 7.5px}
  .uye-ara{padding:6px 9px;font-size:9.8px}
  .ata-form{gap:6px}
  .ata-select{padding:6.8px 9px;font-size:10.1px}
  .kpis-4 .kpi{gap:10.5px}
  .rapor-tablo thead th.sorted-asc::after{font-size:9.5px}
  .rapor-tablo thead th.sorted-desc::after{font-size:9.5px}
  .ek-liste{gap:4.5px;margin-bottom:7.5px}
  .ek-row{gap:7.5px;padding:5.2px 7.5px}
  .ek-ad{font-size:9.8px}
  .ek-boyut{font-size:9.5px}
  .ek-islem{gap:6px}
  .ek-islem a{font-size:9.5px}
  .ek-sil{font-size:9.8px;padding:1.5px 3px}
  .ek-yukle{gap:6px}
  .ek-yukle input[type=file]{font-size:9.5px}
  .ek-modal{padding:18px}
  .ek-modal-bar{gap:9px;padding:9px 12px}
  .ek-modal-ad{font-size:10.5px}
  .ek-modal-x{font-size:18px}
  .ek-yok{padding:30px}
  .sec-baslik.ek-baslik{gap:7.5px}
  .ek-tumu{font-size:9.5px}
  .ice-head{gap:9px}
  .ice-body{padding:12px 13.5px}
  .ice-aktar{gap:7.5px;margin:0 0 10.5px}
  .ice-sablon{font-size:9.5px;gap:3.8px}
  .ice-meta{gap:6.8px}
  .ice-cols{gap:5.2px}
  .ice-cols-lbl{font-size:9.5px}
  .ice-tag{font-size:9.5px;padding:2.2px 6.8px}
  .ice-note{font-size:9.5px}
  .sube-head{gap:5.2px;padding:1.5px 9px 4.5px;font-size:9.5px}
  .ekle-eti{font-size:9.5px}
  .satir-form select{padding:4.5px 6px;font-size:9.8px}
  .tur-liste{gap:6px;margin-bottom:9px}
  .tur-chip{gap:4.5px;padding:3.8px 4.5px 3.8px 9.8px;font-size:9.8px}
  .tur-chip button{font-size:10.5px}
  .tur-ekle{gap:6px}
  .tur-ekle input{padding:6px 8.2px;font-size:10.1px}
  .sb-head,.sb-row{gap:9px}
  .sb-head{padding:0 1.5px 8.2px;font-size:9.5px}
  .sb-row{padding:6.8px 1.5px}
  .sb-row input,.sb-row select{padding:6px 8.2px;font-size:10.1px}
  .sb-row input[name=kod]{font-size:9.5px}
  .sb-yeni{margin-top:13.5px;padding-top:12px}
  .sb-yeni-baslik{font-size:9.5px;margin-bottom:8.2px}
  .sb-ekle{gap:9px}
  .sb-ekle input,.sb-ekle select{padding:6.8px 8.2px;font-size:10.1px}
  .ym-bar{gap:9px;margin:0 0 12px}
  .ym-hint{font-size:9.5px}
  .ym-mod{margin-bottom:13.5px}
  .ym-mod-h{font-size:10.5px;margin:0 0 4.5px}
  .ym-table th,.ym-table td{padding:6.8px 6px;font-size:9.8px}
  .ym-table thead th{font-size:9.5px}
  .ym-table thead .ym-cap{font-size:9.8px}
  .kilit-et{font-size:9.5px;margin-left:1.5px}
  .rol-ekle{gap:6px}
  .kapsam-panel{gap:7.5px;margin-bottom:13.5px}
  .kapsam-rol{padding:7.5px}
  .kapsam-ad{font-size:9.8px;margin-bottom:4.5px}
  .mpick-search{padding:6.8px 9px;font-size:9.8px}
  .mpick-opt{gap:7.5px;padding:6px 9px}
  .spick-input{padding:6.8px 22.5px 6.8px 9px;font-size:10.1px}
  .spick-search{padding:6px 9px;font-size:9.8px}
  .spick-opt{padding:6px 9px;font-size:10.5px}
  .uyari-guclu{gap:9px;padding:9px 10.5px;margin-bottom:13.5px;font-size:10.1px}
  .uyari-guclu code{padding:0.8px 3.8px;font-size:9.5px}
  .uyari-ikon{font-size:15px}
  .ym-uyari{margin-left:3.8px;font-size:9.8px}
  .ymx th,.ymx td{padding:7.5px 6px;font-size:9.8px}
  .ymx th.ymx-cap,.ymx td.ymx-cap{padding-left:10.5px}
  .ymx-cap-alt{font-size:9.5px;margin-top:0.8px}
  .ymx-mod td{font-size:9.5px;padding:5.2px 9px}
  .ym-mod-chev{margin-right:5.2px}
  .ymx .kapsam-sel{font-size:9.5px;padding:5.2px 19.5px 5.2px 7.5px}
  .spick-av{font-size:9.5px}
  .spick-opt.kisi{gap:7.5px}
  .spick-hint{padding:5.2px 9px;font-size:9.5px}
  .ym-tik{font-size:12.8px}
  .spick-secili{padding:4.5px 4.5px 6px}
  .spick-secili-bas{font-size:9.5px;padding:1.5px 6px 3px}
  .spick-secili-item{gap:7.5px;padding:5.2px 9px;font-size:10.5px}
  .bs-trigger{gap:6px;padding:0 9px;font-size:10.1px}
  .bs-panel{padding:4.5px}
  .bs-panel::after{margin:4.5px -4.5px -4.5px;padding:5.2px 9px;font-size:9.5px}
  .bs-acc+.bs-acc{margin-top:6px}
  .bs-acc-head{gap:6px;padding:7.5px 6px 5.2px;font-size:9.5px}
  .bs-acc-body{padding:3px 1.5px 4.5px}
  .bs-item{padding:6px 8.2px;font-size:9.8px}
  .bs-bos{padding:6px 8.2px;font-size:9.5px}
  .pj-kisiler{gap:6px 9px;margin-top:9px;padding-top:9px}
  .pj-kisi{gap:0.8px}
  .pj-ad{font-size:9.5px}
  .pj-unvan{font-size:9.5px}
  .onc-legend{gap:12px;margin:10.5px 1.5px 3px;font-size:9.5px}
  .onc-leg{gap:4.5px}
  .talep-rozet{margin-left:4.5px;padding:0.8px 5.2px;font-size:9.5px}
  .card-head{padding:11.2px 12px 10.5px}
  .card-head h3{font-size:11.2px}
  .rapor-tablo.stabil th,.rapor-tablo.stabil td{padding:9px 12px}
  .rapor-tablo.stabil .ilerleme-yuzde{margin-left:6px}
  a.kpi.kpi-flt.on::after{font-size:9.5px}
  .aktif-filtreler{gap:6px;margin:0 0 12px}
  .fil-chip{gap:6px;padding:3.8px 4.5px 3.8px 9px;font-size:9.5px}
  .fil-chip .fil-x{font-size:9.8px}
  .bs-item.cok{gap:7.5px}
  .bs-ava{font-size:9.5px}
  .bs-ava .tik{font-size:11.2px}
  .bs-sayi{font-size:9.5px;padding:1.5px 6.8px}
  .bs-bhead .bs-cev{margin-left:6px}
  .bs-sayi ~ .bs-cev-btn,.bs-sayi ~ .bs-cev{margin-left:6px}
  .bs-subeler{margin:1.5px 0 4.5px 15px;padding-left:4.5px}
  .bs-secili-cipler{gap:6px;margin-top:7.5px}
  .bs-cev-btn{padding:3px}
  .bs-filtre.sfc-secim .bs-uygula-satir{padding:6px 7.5px}
  .bs-filtre.sfc-secim .bs-uygula{padding:4.5px 12px;font-size:9.8px}
  .bs-filtre .bs-ara{margin:-4.5px -4.5px 6px;padding:9px 6px 6px}
  .bs-filtre .bs-ara-input{padding:5.2px 7.5px;font-size:9.8px}
  .al-item .al-nokta{margin-right:1.5px}
  .kl-dgrup{margin-left:4.5px}
  .kl-dgrup .kl-kisiler{margin:1.5px 0 4.5px 15px;padding-left:4.5px}
  .kl-dava{font-size:9.5px}
  .kl-unvan{font-size:9.5px}
  .kl-bgrup .kl-bsubeler{margin:1.5px 0 4.5px 12px;padding-left:4.5px}
  .bs-trigger .bs-etiket.kisi{gap:6px}
  .bs-trigger .bs-etiket.kisi .bs-ava{font-size:9.5px}
  .bs-trigger .bs-etiket.kisi .kl-ad{font-size:9.5px}
  .bs-trigger .bs-etiket.kisi .kl-unvan{font-size:9.5px}
  .spick .bs-trigger .bs-etiket.kisi .spick-av{font-size:9.5px}
  .talt{font-size:9.5px}
  .tsec{font-size:9.5px;padding:6.8px 9px 2.2px;gap:4.5px}
  .tlist .tsec:first-child{padding-top:3px}
  .panel-head h3{gap:6px}
  .sh-durum{font-size:9.5px;margin:6px 0 0}
  .sh-bas{gap:6.8px;padding:5.2px 0 7.5px}
  .sh-bas .sheet-title{font-size:11.6px}
  .sh-hatama{gap:6px;margin-top:6px}
  .sh-hatama .avatar,.sh-hatama .kisi-avatar{font-size:9.5px}
  .sh-hatama .m{font-size:9.5px}
  .sh-hatama .m b{font-size:9.5px}
  .sh-hatama .sh-ilet{gap:4.5px}
  .sh-ozet{gap:6px;padding:7.5px 0 1.5px}
  .sh-ozet .cips{gap:4.5px}
  .sh-cip{gap:3.8px;font-size:9.5px;padding:3.8px 6.8px}
  .sh-detaybtn{gap:3px;padding:4.5px 8.2px;font-size:9.5px}
  .sh-minirow{gap:6.8px;font-size:9.8px}
  .sh-minirow .mk{font-size:9.5px}
  .sh-kilit{gap:6px;font-size:9.5px;margin-top:4.5px}
  .durum-pill{padding:0 9.8px;font-size:9.5px}
  .chat{padding:9px 6.8px 6px}
  .cgun{font-size:9.5px;padding:3px 8.2px;margin-bottom:6.8px}
  .chat-eski{font-size:9.5px;padding:6px 10.5px;margin-bottom:6.8px}
  .cmsg{gap:5.2px;margin-bottom:5.2px}
  .cmsg .cava{font-size:9.5px;margin-top:1.5px}
  .cmsg .cblk{padding:3.8px 6.8px 5.2px}
  .cmsg .ckim{font-size:9.5px;margin-bottom:0.8px}
  .cmsg .ckim .ckim-unv{font-size:9.5px}
  .cmsg .cmtx{font-size:10px;padding-right:33px}
  .cmsg .ctik{font-size:9.5px;margin-left:2.2px}
  .cmsg.ben .cmtx{padding-right:42px}
  .chat-asagi{font-size:12px}
  .chat-asagi i{line-height:12px;padding:0 2.2px}
  .chat-form{gap:6px;margin-top:7.5px}
  .chat-form input{padding:0 12px;font-size:10.1px}
  .chat-bos{font-size:9.5px;padding:10.5px 0}
  .hpop .kart{padding:11.2px 12px}
  .hpop .kbas{gap:6px;font-size:9.5px;margin-bottom:6px}
  .hpop .ksoru{font-size:10.1px;margin-bottom:3px}
  .hpop .kadim{font-size:9.5px;padding:4.5px 7.5px;margin-bottom:9px}
  .hpop .kbtn{gap:6px}
  .hpop .kbtn button{font-size:9.8px}
  .drawer-grab{padding:6px 0 1.5px}
  .spick-opt.nok{gap:6.8px}
  .spick .bs-etiket>.al-nokta{margin-right:6px}
  .usr-av{font-size:9.5px}
  .usr-av.lg{font-size:12.8px}
  .k-tablo .trow .ttl{gap:7.5px}
  .klist-seg{margin-bottom:10.5px}
  .k-kartlar{gap:10.5px}
  .k-kart{gap:3px;padding:30px 12px 13.5px}
  .k-kart-rol{font-size:9.5px;padding:2.2px 6.8px}
  .usr-av.xl{font-size:18px;margin-bottom:3px}
  .k-kart-ad{font-size:12px}
  .k-kart-unvan{font-size:9.5px}
  .k-kart-alanlar{gap:4.5px;margin-top:7.5px}
  .k-kart-satir{gap:5.2px;font-size:9.8px}
  .trow-sag{gap:2.2px}
  .trow-kat{font-size:9.5px;padding:0.8px 6px}
  .bt-toast-wrap{gap:7.5px}
  .bt-toast{padding:8.2px 10.5px}
  .bt-toast .bt-toast-b{font-size:10.1px;margin-bottom:1.5px}
  .bt-toast .bt-toast-m{font-size:9.5px}
  .ai-oneri{padding:7.5px 9px;font-size:9.8px;margin-top:4.5px}
  .ai-oneri-bas{margin-bottom:3.8px;font-size:9.5px}
  .ai-ozet{margin:6px 0;padding:6px 8.2px;font-size:9.5px}
  .ai-btn{font-size:9.5px}
  .ai-btn i{margin-right:3px}
  .kayit-guncel-serit{font-size:9.5px;padding:6px 9px}
  .ai-ornekler{gap:5.2px;margin:1.5px 0 9px}
  .ai-ornek{font-size:9.5px;padding:3.8px 8.2px}
  .ai-analiz-sonuc{margin-top:10.5px;padding:9.8px 11.2px;font-size:10.1px}
  .ai-not{font-size:9.5px;margin-top:7.5px}
  .zk-liste{gap:3.8px;margin-bottom:6.8px}
  .zk-satir{gap:6px;font-size:9.5px}
  .zk-satir .zk-tar{font-size:9.5px}
  .zk-ekle{gap:6px}
  .app-surum{gap:3.8px;font-size:9.5px;padding:7.5px 0 1.5px}
  .sb-hover-toggle{gap:6px;margin-top:4.5px;padding:5.2px 7.5px;font-size:9.5px}
  .sb-hover-toggle .shv-durum{font-size:9.5px}
  .toast-kap{gap:6px}
  .toast{padding:9px 15px;font-size:10.1px}
  .sohbet-wrap{gap:10.5px}
  .sohbet-liste{padding:6px}
  .sohbet-liste .oda{padding:7.5px 9px;margin-bottom:3px}
  .sohbet-liste .oda .ad{font-size:10.1px;gap:6px}
  .sohbet-liste .oda .son{font-size:9.5px;margin-top:1.5px}
  .oda-rozet{font-size:9.5px;padding:0 3.8px}
  .sohbet-baslik{padding:9.8px 12px}
  .mesaj-akis{padding:12px;gap:6px}
  .mesaj{padding:6px 9px;font-size:10.1px}
  .mesaj .mk{font-size:9.5px;margin-bottom:1.5px}
  .mesaj .ms{font-size:9.5px;margin-top:1.5px}
  .mesaj-yaz{gap:6px;padding:9px}
  .sohbet-arac{gap:4.5px;margin-bottom:6px}
  .mesaj-img{margin:1.5px 0}
  .mesaj-ek{gap:3px;padding:4.5px 7.5px;font-size:9.5px;margin:1.5px 0}
  .mesaj .mk{gap:4.5px}
  .mesaj-av{font-size:9.5px}
  .mesaj .tik{margin-left:3px}
  .sohbet-modal{padding:15px}
  .sohbet-modal-bar{padding:12px 15px}
  .sohbet-modal-bar h3{font-size:12.8px}
  .sohbet-modal-govde{padding:13.5px 15px}
  .sohbet-modal-alt{gap:6px;padding:10.5px 15px}
  .sohbet-liste .oda{gap:7.5px}
  .oda-av{font-size:11.2px}
  .sohbet-baslik{gap:7.5px}
  .sohbet-sessiz-btn{font-size:12.8px;padding:3px}
  .chat-head-rozet{padding:0 3.8px;font-size:9.5px}
  .chat-panel-bar{gap:7.5px;padding:7.5px 10.5px}
  .chat-panel-bar .chat-panel-tam{font-size:12px}
  .kisi-rozet{gap:6px}
  .kisi-rozet-ad{font-size:9.8px}
  .kisi-rozet-unvan{font-size:9.5px}
  .kisi-rozet.kucuk .kisi-rozet-ad{font-size:9.5px}
  .kisi-rozet.kucuk .mini-ava{font-size:9.5px}
  .sohbet-fab{margin-bottom:6px}
  .sohbet-fab-menu{gap:6px}
  .sohbet-fab-oge{gap:6px;padding:6px 10.5px;font-size:9.8px}
  .sohbet-fab-oge .fab-ik{font-size:10.5px}
  .oda-satir.sabit::before{font-size:9.5px}
  .oda-araclar{gap:1.5px;padding:1.5px 3px}
  .oda-araclar button{font-size:9.5px;padding:2.2px}
  .mesaj-yaz{gap:6px}
  .mesaj-yaz #mesajInp{padding:0 12px;font-size:10.1px}
  .mesaj-yaz .ek-btn{font-size:12px}
  .oda-menu{padding:3px}
  .oda-menu button{padding:7.5px 9px;font-size:9.8px}
  .mention-oge{gap:6px;padding:6px 9px;font-size:9.8px}
  .m-av{font-size:9.5px}
  .m-top{padding:19.5px 12px 6px;font-size:12px}
  .m-ara{gap:6px;margin-top:6px;padding:3.8px 8.2px}
  .m-ara input{font-size:12px}
  .m-filtre{gap:5.2px;padding:8.2px 9px 6.8px}
  .fbtn{gap:4.5px;padding:5.2px 9.8px;font-size:9.5px}
  .fbz{font-size:9.5px;padding:0 3.8px}
  .m-odalar{padding:6px 6px 52.5px}
  .m-oda{gap:8.2px;padding:7.5px}
  .m-oda .gv b{font-size:10.5px}
  .m-oda .gv .unv{font-size:9.5px}
  .m-oda .gv small{font-size:9.5px}
  .m-oda .rz{font-size:9.5px;padding:0 3.8px}
  .ara-ayrac{gap:7.5px;font-size:9.5px;padding:7.5px 7.5px 4.5px}
  .oda-yaziyor{gap:3.8px}
  .yz-mini{gap:2.2px}
  .m-fab{font-size:22.5px}
  .anav{gap:2.2px;font-size:9.5px}
  .gal-bar{gap:7.5px;padding:33px 10.5px 9px}
  .gal-basl b{font-size:11.2px}
  .gal-basl small{font-size:9.5px}
  .gal-tab{gap:6px;padding:7.5px 9px}
  .gt{padding:6px;font-size:9.5px}
  .gal-grid{padding:7.5px;gap:6px}
  .gal-oge{font-size:9.5px}
  .gal-oge.dosya{gap:3px;font-size:9.5px}
  .gal-grid.liste{padding:4.5px 7.5px}
  .gd-oge{gap:9px;padding:7.5px 4.5px}
  .gd-ik{font-size:9.5px}
  .gd-bilgi b{font-size:10.1px}
  .gd-bilgi small{font-size:9.5px}
  .lb-bar{gap:9px;padding:34.5px 9% 9px}
  .lb-bar b{font-size:10.1px}
  .lb-sahne{padding:9px}
  .lb-dosya .ik{font-size:16.5px;margin:0 auto 10.5px}
  .lb-sayac{font-size:9.5px;padding:6px 0 13.5px}
  .m-sheet{padding:6px 9px 13.5px}
  .ms-tut{margin:4.5px auto 7.5px}
  .ms-bas{gap:8.2px;font-size:10.9px;padding:3px 6px 9px;margin-bottom:4.5px}
  .ms-kim b{font-size:10.9px}
  .ms-kim small{font-size:9.5px}
  .ms-op{gap:9.8px;padding:9.8px 6px;font-size:10.5px}
  .m-cbar{gap:7.5px;padding:24px 10.5px 9px}
  .m-cbar .geri{margin-left:-3px}
  .m-cbar .who b{font-size:10.5px}
  .m-cbar .who small{font-size:9.5px}
  .m-kk{padding:12px}
  .kk-head{gap:4.5px;margin-bottom:10.5px}
  .kk-head b{font-size:12.8px}
  .kk-un{font-size:9.5px}
  .kk-ico{gap:12px;margin-bottom:10.5px}
  .kk-bilgi{padding-top:9px;gap:7.5px}
  .kk-bilgi div{gap:8.2px;font-size:9.8px}
  .kk-medya{margin-top:9px;padding-top:9px}
  .km-bas{font-size:9.5px;margin-bottom:6.8px}
  .km-strip{gap:6px}
  .km-oge{font-size:9.5px}
  .kk-kapat{margin-top:10.5px;padding:8.2px}
  .m-yaz{gap:4.5px;padding:6px 6px calc(6px + env(safe-area-inset-bottom,0))}
  .oneri-bar{gap:5.2px;padding:0 1.5px}
  .oneri-cip{padding:4.5px 9.8px;font-size:9.5px}
  .yz-balon{gap:3px;padding:9px 10.5px !important}
  .wa-row{gap:4.5px}
  .wa-pill{padding:1.5px 3px}
  .wa-pill textarea{padding:6.8px 4.5px;font-size:12px}
  .wa-ic{font-size:13.5px;padding:5.2px}
  .m-yeni .yb{padding:8.2px 11.2px;font-size:10.1px}
  .m-yeni .yk{gap:8.2px;padding:9px 11.2px}
  .chat-dock{gap:10.5px}
  .chat-min{gap:7.5px;margin-bottom:61.5px}
  .min-bubble .rz{font-size:9.5px}
  .min-plus{font-size:21px}
  .cwin-bar{gap:6.8px;padding:6.8px 9px}
  .cwin-bar .who b{font-size:10.1px}
  .cwin-bar .who small{font-size:9.5px}
  .cwin-bar .ic{font-size:11.2px;padding:1.5px 3.8px}
  .cwin .mesaj-yaz{padding:6px 7.5px;gap:4.5px}
  .cwin .mesaj-yaz textarea{padding:6.8px 9.8px;font-size:9.8px}
  .cwin .mesaj-yaz .yz-btnlar{gap:4.5px}
  .sohbet-yeni-menu .sym-bas{padding:7.5px 10.5px;font-size:9.8px}
  .sohbet-yeni-menu .sym-liste{padding:4.5px}
  .sohbet-yeni-menu .sym-oge{gap:6.8px;padding:6px 6.8px}
  .sohbet-yeni-menu .sym-oge .av{font-size:9.5px}
  .sohbet-yeni-menu .sym-oge .gv b{font-size:9.8px}
  .sohbet-yeni-menu .sym-oge .gv small{font-size:9.5px}
  .sohbet-yeni-menu .sym-oge .rz{font-size:9.5px;padding:0 3px}
  .sohbet-yeni-menu .sym-bos{padding:13.5px;font-size:9.5px}
  .m-onizle{padding:15px}
  .m-onizle-dosya{padding:25.5px 15px;font-size:10.5px}
  .m-onizle-alt{padding:9px;gap:6px}
  .m-onizle-alt input{padding:7.5px 10.5px;font-size:12px}
  .m-onizle-alt .ipt{font-size:12.8px}
  .m-sheet.pop{padding:6px}
  .yeni-badge{font-size:9.8px}
  .m-chat.surukle-ustunde::after{font-size:11.2px}
  .kgrup-bas{gap:5.2px;padding:9px 10.5px 4.5px;font-size:9.5px}
  .kgrup-kart{padding:10.5px 1.5px 3px}
  .devir-sayfa .devir-form{padding:13.5px}
  .devir-liste .switch-row{padding:5.2px 0}
  .devir-form .form-actions{padding-top:7.5px;margin-top:4.5px}
  .nav-label.nav-basli{padding:6px 7.5px;margin:1.5px 0}
  .nav-label.nav-basli::after{margin-left:6px}
  .ice-card{margin-bottom:9px}
  .ice-card .ice-head h3::after{margin-left:6px;font-size:9.5px}
  .chat-yigin{gap:6px}
  .chat-yigin .cy-oge{font-size:11.2px}
  .chat-yigin .cy-rozet{padding:0 3px;font-size:9.5px}
  .chat-yigin .cy-kapat{font-size:9.5px}
  .yz-nokta{gap:2.2px}
  .ust-eylem{gap:6px}
  .panel-head{gap:9px}
  .card .empty{padding:13.5px 15px}
  .trow{padding:5.2px 7.5px;row-gap:1.5px}
  .panel-head .link{padding:9px 4.5px;margin:-9px -4.5px}
  .top{row-gap:4.5px}
  .baslik-tekrar{margin:-0.8px}
  .card.katlanir > .panel-head h3::after{margin-left:6px;font-size:9.5px}
  .tb-ikon.tb-ikon-avatar .avatar{font-size:9.5px}
  .ust-geri{margin-right:1.5px}
  .ust-geri-btn{gap:3.8px;padding:5.2px 7.5px 5.2px 5.2px;font-size:9.5px}
  .drawer .sh-detay .trow{gap:1.5px 7.5px}
  .ust-eylem > div{gap:6px}
  .ozet-ust{gap:9px;padding:10.5px}
  .ozet-kutu{padding:7.5px 9px}
  .ozet-etiket{font-size:9.5px}
  .ozet-deger{font-size:15px;margin-top:2.2px}
  .ozet-deger.ozet-kucuk{font-size:9.8px}
  .ozet-alt{font-size:9.5px;margin-top:1.5px}
  .ozet-aciklama{padding:0 10.5px 10.5px;font-size:9.8px}
  .ozet-dagilim{padding:9px 10.5px;gap:6px}
  .ozet-dg{gap:7.5px;font-size:9.5px}
  .ozet-kisi{gap:4.5px 7.5px;padding:6px 0}
  .ozet-kisi-ad{font-size:9.5px}
  .ozet-kisi-sayi{font-size:9.5px}
  .ozet-kisi-durum{gap:3.8px}
  .ozet-rozet{font-size:9.5px;padding:1.5px 6px}
  .kisi-kpi-grid{gap:9px;padding:10.5px}
  .kisi-kpi{padding:9px;gap:6.8px}
  .kisi-kpi-ust{gap:7.5px}
  .kisi-kpi-av{font-size:9.8px}
  .kisi-kpi-ad{font-size:9.8px}
  .kisi-kpi-unvan{font-size:9.5px}
  .kisi-kpi-sayi{gap:4.5px}
  .kisi-kpi-sayi b{font-size:18px}
  .kisi-kpi-sayi span{font-size:9.5px}
  .kisi-kpi-rozetler{gap:3.8px}
  .kisi-kpi-eylem{gap:4.5px;margin-top:1.5px}
  .kisi-kpi-eylem .btn{padding:4.5px 6px;font-size:9.5px}
  .ozet-deger.ozet-durum{gap:6px;font-size:14.2px}
  .ozet-kutu{gap:3.8px}
  .ozet-deger{font-size:13.5px}
  .ozet-deger.ozet-kucuk{font-size:9.8px}
  .ozet-deger.ozet-durum{font-size:13.5px}
  .ozet-alt{font-size:9.5px}
  .ozet-sayfa .rapor-tablo{font-size:9.5px}
  .ozet-sayfa .rapor-tablo th,
.ozet-sayfa .rapor-tablo td{padding:4.5px 6px}
  .ozet-sayfa .rapor-tablo td:nth-child(1){font-size:9.5px}
  .ozet-sayfa .rapor-tablo th:nth-child(3),
.ozet-sayfa .rapor-tablo td:nth-child(3){font-size:9.5px}
  .degisim-kpi{gap:9px;margin-bottom:12px}
  .degisim-serit{gap:9px;padding:9.8px 11.2px;margin-bottom:10.5px}
  .degisim-serit .ds-alt{font-size:9.5px}
  .degisim-kpi .kpi-kutu{padding:9px 10.5px}
  .degisim-kpi .kpi-ad{font-size:9.5px}
  .degisim-kpi .kpi-deger{font-size:16.5px}
  .degisim-kpi .kpi-alt{font-size:10.5px}
}
/* ==== v592 URETILEN 0,75 OLCEK KATMANI — BITIS ==== */

/* ==========================================================================
   v589 — MOBIL 0,75 OLCEK KATMANI  (<=430 px)
   Kural: sayfa zoom'u YOK; masaustu olculeri dogrudan 0,75 ile carpilip
   yazilir (bkz. CALISMA_SEMASI "0,75 kurali"). Ekran %100'de duruyor,
   yalniz olculer kucuk. Istisna: DOKUNMA HEDEFLERI 38 px'in altina inmez.
   Harici .css dosyasi -> @media KACISLANMAZ.
   ========================================================================== */
@media (max-width:430px){
  /* --- GOVDE VARSAYILANI ---
     Asil "buyuk duruyor" sebebi buydu: px verilmemis her metin body'nin
     14 px'ini aliyordu (pano kart basliklari, bos durum yazilari...).
     14 x 0,75 = 10,5 px. */
  body{font-size:10.5px}
  /* Acilir menu ogeleri de olcege girer (13,5 -> 10) */
  .mn-item,.mn-grup,.menu a{font-size:10px}

  /* IKON MERKEZLEME — her kare ikon kutusunda tam merkez.
     grid+place-items, flex'e gore satir yuksekligi/baseline etkisinden
     bagimsizdir; Etiket Basim'da sayac ikonlarindaki 3 px kaymanin sebebi
     tam olarak buydu. */
  .icon-btn,.bell-btn,.btn.ikon,.kpi .ico,#ustEylem .btn:has(svg),
  .topbar .top-actions button,.topbar .top-actions a{
    display:grid!important;place-items:center}
  /* Hamburger telefonda GIZLI (v593) — merkezleme listesinde yer alamaz,
     yoksa display:grid gizlemeyi eziyordu. */
  .hamburger{display:none!important}
  .icon-btn svg,.bell-btn svg,.hamburger svg,.btn.ikon svg,.kpi .ico svg,
  #ustEylem .btn:has(svg) svg,.topbar .top-actions svg{display:block;margin:0}
  /* Yazili dugmede ikon ile yazi ayni eksende: baseline degil merkez. */
  .btn{align-items:center;line-height:1}
  .btn svg{flex:none;display:block}

  /* --- sayfa cercevesi --- */
  /* Ust bar ile ilk kart arasi da TEK STANDART: 9 px (blok araliklariyla ayni).
     Olcum: dolgu 8 + bos sayfa basliginin 4 px'i = 11 px cikiyordu. */
  .content{padding:9px 12px 30px}
  .topbar{padding:9px 12px}
  /* Sayfa basligi UST BARA tasindigi icin .page-head cogu ekranda bos kaliyor
     (yukseklik 0) ama 15 px alt bosluk birakiyordu: ust bar ile ilk kart arasi
     28 px aciliyordu (olcum). Bos basligin boslugu kalkti; icinde gorunur bir
     sey varsa (aciklama satiri) bosluk duruyor. */
  /* :has() denemesi tutmadi (bos basligin icinde gizli aciklama dugumu var,
     secici onu "gorunur cocuk" sayiyor). Olculer dogrudan kisildi:
     ust bar ile ilk kart arasi 28 -> 12 px. */
  .page-head{margin-bottom:0!important}
  .page-head h1{font-size:17px;margin:0 0 2px}
  .page-head .desc{font-size:10px}
  .head-row{gap:8px}

  /* --- kartlar / KPI --- */
  :root{--r:11px;--r-sm:8px}
  /* Olcum: kart 71 px yuksekti, 0,75 dili icin buyuk -> dolgu ve ikon
     kucultuldu, kart ~52 px. */
  /* Olcum: kart 72 px (dolgu 12 + ikon 26 + ikon alt bosluk 9 + rakam 17 + gap 7).
     0,75 dilinde hedef ~52 px. Baska kurallar ezdigi icin !important. */
  /* Bekleyen degisim seridi: kart 81 px ve aciklama 12,5 px ile ekranin
     0,75 dilinin disinda kaliyordu -> 56 px, aciklama 9 px. */
  .degisim-serit{gap:8px;padding:8px 10px;margin-bottom:9px;border-left-width:2px}
  .degisim-serit .ds-ikon{width:16px;height:16px}
  .degisim-serit .ds-ikon svg{width:14px;height:14px}
  .degisim-serit .ds-govde b{font-size:9.5px}
  .degisim-serit .ds-alt{font-size:9px;line-height:1.35}
  .degisim-serit .ds-ac{height:32px;min-height:32px;padding:0 11px;font-size:9.5px}

  /* KPI kartlari UC HANEYE gore: 5 kart + 4 aralik 320 px'e sigacak sekilde
     esit bolunur (kart ~55 px). Rakam 15 px monospace -> 3 hane ~27 px,
     yanlarda 5'er px dolgu ile rahat oturuyor. */
  /* --- BLOK ARASI BOSLUK TEK STANDART: 9 px ---
     Olcumde 9 / 12 / 13,5 / 16 px karisikti (uretilen katman her kuralin kendi
     degerini 0,75 ile carpinca farkli sayilar cikti). Telefonda tum blok
     araligi 9 px (12 x 0,75). KPI kartlari arasi 5 px kalir: onlar tek bir
     serit sayilir. */
  /* Sayfa basligi HARIC: baslik ust bara tasindigi icin bos kaliyor; ona da
     9 px verilince icerik dolgusuyla toplanip 17 px oluyordu. */
  .content > *:not(.page-head),.canli-alan > *:not(.page-head){margin-bottom:9px}
  .grid,.grid.cols-2,.grid.cols-3,.kpis,.card,.form-card,.rapor-alan{margin-bottom:9px}
  .grid,.grid.cols-2,.grid.cols-3{gap:9px}
  .grid > .card,.grid > *{margin-bottom:0}
  .kpis{gap:5px;margin-bottom:9px}

  /* --- LISTE SATIRLARI (talep/gorev) ---
     "Yeni kayit" kose ucgeni 28 px'ti: uretilen 0,75 katmani border-width'e
     dokunmuyor, bu yuzden mobilde orantisiz duruyordu -> 21 px (28 x 0,75).
     Ayrica kart 12 px + liste 4,5 px + satir 6 px ile UC KAT ic dolgu
     birikiyordu; kartin kendi dolgusu satira birakildi. */
  .yk-yeni::after,.yk-goruldu::after{border-width:0 21px 21px 0}
  /* Liste karti ARKA PLANSIZ (kullanici karari): satirlar zaten kendi
     cercevesini tasiyor, kartin beyaz zemini + kenarligi fazladan katman
     olusturuyordu. */
  .card:has(> .tlist),.card:has(> .glist){padding:0;background:transparent;
    border:0;box-shadow:none;border-radius:0}
  .tlist,.glist{padding:0}
  .trow{padding:7px 9px;margin-bottom:0}
  .trow + .trow{border-top:1px solid var(--line-2)}
  .kpi{padding:6px 5px!important;gap:3px!important;flex:1 1 0!important;min-width:0!important}
  .kpi .val{white-space:nowrap;overflow:visible}
  .kpi .ico{width:20px!important;height:20px!important;border-radius:6px!important;
            margin-bottom:0!important}
  .kpi .ico svg{width:12px!important;height:12px!important}
  .kpi .val{font-size:15px!important;line-height:1.1!important}
  .kpi .cap{font-size:9.5px}
  .kpi .trend{font-size:9px}
  .kpis{gap:9px}
  .grid{gap:9px}

  /* --- tablolar --- */
  .rapor-tablo{font-size:10px}
  .rapor-tablo th,.rapor-tablo td{padding:7px 9px}
  .rapor-tablo th{font-size:8.5px}
  .rapor-tablo td.bos{padding:18px}
  .alt-bilgi{font-size:9px}

  /* --- yazi olcekleri --- */
  h1{font-size:17px} h2{font-size:14px} h3{font-size:11.5px}
  .card > h3,.card-bas{font-size:11.5px}
  .rozet,.badge{font-size:8.5px;padding:1px 6px}
  .empty,.card .empty{font-size:10px;padding:18px}
  .form-hint{font-size:9px}
  label,.fld > span{font-size:10px}

  /* --- dugmeler ve alanlar ---
     Yazi ve yatay bosluk 0,75 ile kuculur; YUKSEKLIK 38 px'te sabit kalir. */
  .btn{padding:8px 12px;font-size:10px;min-height:38px}
  .btn svg{width:13px;height:13px}
  input,select,textarea{font-size:11.5px}
  input:not([type=checkbox]):not([type=radio]),select{min-height:38px;padding:7px 9px}
  textarea{padding:7px 9px}
  .filter-bar{gap:7px}

  /* --- kenar cubugu (acilir) --- */
  .sidebar{width:196px}
  .sidebar a{font-size:11px;padding:7px 10px;min-height:38px}
  .sidebar a svg{width:14px;height:14px}
  .nav-label{font-size:8.5px}
  .nav-badge{font-size:8.5px;min-width:15px;height:15px}

  /* --- alt menu (mobil sekmeler) --- */
  .mobil-menu a,.bottom-nav a{font-size:8.5px}

  /* --- kaydirma cubugu ---
     Yerlesik cubuk 320 px'lik ekranda ~10 px yiyor. Gizlenir; yerine yalniz
     kaydirirken beliren, icerigin USTUNDE yuzen ince bir gosterge cizilir
     (#kayGosterge, _Layout'ta uretilir). Kendisi yer kaplamaz, dokunmayi
     engellemez. Etiket Basim'da denendi, tum ekranlara alindi. */
  html,body{scrollbar-width:none}
  html::-webkit-scrollbar,body::-webkit-scrollbar{width:0;height:0}
  /* KURAL: mobilde HICBIR kapta yerlesik kaydirma cubugu gorunmez (sayfa, kart,
     panel, acilir liste, modal...). Kaydirma calisir; yalniz sayfa duzeyinde
     #kayGosterge belirir. Etiket Basim referans alindi. */
  *{scrollbar-width:none;-ms-overflow-style:none}
  *::-webkit-scrollbar{width:0;height:0}
  #kayGosterge{position:fixed;right:2px;width:3px;border-radius:3px;
               background:rgba(15,23,42,.38);opacity:0;z-index:75;
               pointer-events:none;transition:opacity .25s ease}
  #kayGosterge.acik{opacity:1}

  /* ── ETIKET BASIM'DAN GELEN GORSEL KURALLAR ─────────────────────────────
     Etiket ekraninda tek tek olculerek varildi, tum mobil ekranlara alindi. */

  /* 1 — DIKEY MERKEZ. Baseline hizasi ikon ile rakami 2-3 px kaydiriyordu. */
  .topbar,.topbar-title,.top-actions,.head-row,.page-head.head-row,
  .filter-bar,.kpi,.card > .bas,.rapor-tablo td,.rapor-tablo th,
  .fld,.btn,.rozet,.badge,.nav-badge{vertical-align:middle}
  .topbar,.top-actions{display:flex;align-items:center}
  /* head-row / filter-bar: merkezleme flex ile yapiliyor ama SARMA acik ve
     dugmeler kucultulemez olmali. Aksi halde "Etiket Basim'da aç" gibi
     dugmeler 36 px'e sikisip yazisi kirpiliyordu (v590 yan etkisi). */
  .head-row,.filter-bar{display:flex;align-items:center;flex-wrap:wrap}
  /* FILTRE PANELI olcu birligi: bloklar arasi 9 px (genel standart),
     alan ve dugme yuksekligi 40 px (olcumde 42 ve 44 karisiyordu, ayni
     satirdaki arama alani ile Filtrele dugmesi 2 px kayik duruyordu). */
  .filter-bar{gap:9px!important}
    .filter-bar .pipe-tools{margin-top:0!important}
  /* KURAL 13 — SOHBET BALONU STANDART UZAKLIKTA (mobil). Konum SABIT DEGIL,
     balon aynen suruklenebilir; standart olan KENAR BOSLUKLARIDIR: sagdan
     12 px (icerik kenariyla ayni), alt menu (.altnav) ustunden 12 px =>
     bottom 71 px. Surukleme sinirlari da bu bosluklara uyar (odak.js).
     Boyut 40x40 (38 px dokunma hedefinin ustunde), simge 20 px. */
  .chat-head{right:12px!important;bottom:71px!important;width:40px!important;height:40px!important}
  .chat-head svg{width:20px!important;height:20px!important}

  /* "Temizle" ile "Kapananlari goster" TEK SATIR. Anahtar SOLA yaslanir:
     saga yaslandiginda yuzen sohbet dugmesinin altinda kaliyordu. */
  form.filter-bar.acik > .pipe-tools.arac-filtrede{flex:1 1 auto!important;width:auto!important;
    justify-content:flex-start!important;align-items:center;min-height:40px;margin:0!important}
  form.filter-bar.acik > .pipe-tools.arac-filtrede .kapali-sw{min-height:40px}
  .filter-bar .bs-trigger,.filter-bar input,.filter-bar select,
    .filter-bar .btn,.filtre-ac-btn.btn{height:40px!important;min-height:40px!important}
  .filter-bar .form-field > label{font-size:9px;margin-bottom:3px}
  .head-row > *,.filter-bar > *{min-width:0}
  .btn{flex:none;white-space:nowrap}
  .rapor-tablo td,.rapor-tablo th{vertical-align:middle}
  .kpi{display:flex;flex-direction:column;justify-content:center}

  /* 2 — IKON KENDI CERCEVESINDE MERKEZLI, cerceve KARE.
     Etiket'te "ikonlari cercevelerine merkezle" maddesi buydu. */
  .topbar .top-actions button,.topbar .top-actions a,
  .bellBtn,.hamburger,.icon-btn,.btn.ikon{
    display:inline-flex;align-items:center;justify-content:center;
    padding:0;flex:none}
  .icon-btn,.btn.ikon{width:38px;height:38px}
  .topbar .top-actions svg,.bellBtn svg,.hamburger svg,.icon-btn svg{
    width:15px;height:15px;display:block}
  .kpi .ico{display:flex;align-items:center;justify-content:center;
            width:26px;height:26px;border-radius:8px}
  .kpi .ico svg{width:14px;height:14px;display:block}

  /* 3 — UST BAR 44 px (0,75 x 59): Etiket Basim'daki olcu.
     Ust bardaki ikon dugmeleri 36 px — 38 px kuralinin TEK istisnasi; bar
     44 px'te kalsin diye (Etiket Basim'da da boyle, kullanici onayli).
     Sayfa govdesindeki dugmeler 38 px'te kaliyor. */
  .topbar{min-height:44px;padding:4px 10px}
  /* Baslik daralabilir olmali: birincil dugme ("Yeni Liste") ust bara tasininca
     baslik ile UST USTE biniyordu. */
  .topbar-title{flex:1 1 auto;min-width:0;overflow:hidden}
  .top-actions{flex:none;margin-left:auto}
  /* Ust bardaki IKON dugmeleri kare 36 px; YAZILI dugmeler (Layout birincil
     eylemi topbar'a tasiyor: "Yeni Liste", "Etiket Basim'da ac") genisleyebilir.
     Sabit 36 px verilince yazilari kirpiliyordu. */
  .topbar .top-actions button,.topbar .top-actions a,
  .bellBtn,.hamburger{min-width:36px;height:36px;width:auto;padding:0 9px}
  .bellBtn,.hamburger{width:36px;padding:0}
  .topbar .top-actions button:not(:has(> :not(svg))),
  .topbar .top-actions a:not(:has(> :not(svg))){width:36px;padding:0}
  /* Ust bara tasinan BIRINCIL eylem ("Yeni Liste", "Yeni Denetim"...) telefonda
     IKON-ONLY: 320 px'de yazisiyla birlikte basligin uzerine biniyordu.
     Etiket Basim'da Yazdir dugmesi icin verilen karar, geneline alindi.
     Yazi title'da duruyor; ikonu olmayan dugme yazisiyla kalir. */
  /* IKON-ONLY dugme: yazi gizlenirken font-size:0 yetmiyor — metin dugumu
     hala SATIR YUKSEKLIGI uretip ikonu 6,3 px yukari itiyordu (olculdu).
     line-height:0 ile satir kutusu da sifirlanir, ikon tam merkeze oturur. */
  /* IKON-ONLY dugme: gizlenen yazi (font-size:0) hala SATIR KUTUSU uretip
     ikonu 6,3 px yukari itiyordu; line-height:0 de yetmedi (sonraki .btn
     kurali eziyordu). Kesin cozum: ikon kutuya gore MUTLAK merkezde. */
  .topbar .top-actions .btn:has(svg),
  #ustEylem .btn:has(svg){position:relative;width:36px;min-width:36px;height:36px;
    min-height:36px;padding:0;font-size:0;gap:0;overflow:hidden}
  .topbar .top-actions .btn:has(svg) svg,
  #ustEylem .btn:has(svg) svg{position:absolute;top:0;right:0;bottom:0;left:0;
    margin:auto;width:15px;height:15px;display:block}
  /* Ust bar ogeleri arasi bosluk esit (olcumde 10 px'lik duzensiz araliklar vardi) */
  .topbar .top-actions{gap:6px}
  #ustEylem .eylem-dar{display:flex;align-items:center;gap:6px}
  .topbar .top-actions .btn:has(svg) svg,
  #ustEylem .btn:has(svg) svg{width:15px;height:15px;font-size:0;flex:none}
  #ustEylem{flex:none;display:flex;align-items:center;gap:6px;max-width:52%}
  /* Ust bardaki TUM birincil dugmeler ayni yukseklikte: ikonlu olan 36x36,
     yazili olan ("+ Yeni Görev" — ikonu yok, metin "+") 36 px yuksek.
     Olcumde yazili olanlar 40, ikonlular 36 px cikip bar icinde kayik
     duruyordu. */
  /* Yukseklik 36'ya cekilince yazili dugmede metin IKI SATIRA dusup kutudan
     tasiyordu ("+ Yeni Görev"): tek satir + dikey merkez zorunlu. */
  #ustEylem .btn{height:36px;min-height:36px;white-space:nowrap;line-height:1;
    display:inline-flex;align-items:center;justify-content:center;gap:4px}
  /* "+ Yeni Görev" gibi dugmeler zaten .eylem-kisa ile 40 px kare + "+" isaretine
     donuyor (odak.js <=700 px'te sinifi veriyor). Telefonda olcu 36 px'e cekilir
     ki ust bardaki diger ikon dugmeleriyle ayni olsun; yoksa 63 px'lik kutuya
     sigmayan yazi tasiyordu. */
  #ustEylem .btn.eylem-kisa,.ust-eylem .btn.eylem-kisa{
    width:36px;min-width:36px;height:36px;padding:0;font-size:0;overflow:hidden;
    display:grid;place-items:center}
  /* "+" bir METIN karakteriydi: yazi tipinin taban cizgisi yuzunden kutunun
     optik merkezinde durmuyordu ve diger ust bar ikonlarinin cizgi dilinde
     degildi. Ayni artiyi SVG olarak, 15 px ve MUTLAK merkezde ciziyoruz
     (ikon dugmeleriyle birebir ayni). */
  #ustEylem .btn.eylem-kisa::before,.ust-eylem .btn.eylem-kisa::before{
    content:'';position:absolute;top:0;right:0;bottom:0;left:0;margin:auto;
    width:15px;height:15px;background:currentColor;
    -webkit-mask:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round'%3E%3Cpath d='M12 5v14M5 12h14'/%3E%3C/svg%3E") center/contain no-repeat;
    mask:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round'%3E%3Cpath d='M12 5v14M5 12h14'/%3E%3C/svg%3E") center/contain no-repeat}
  #ustEylem .btn.eylem-kisa,.ust-eylem .btn.eylem-kisa{position:relative}
  /* RENK STANDARDI: ust bardaki ikon dugmeleri DOLU blok degil — hafif zemin +
     ana renkte simge (Etiket Basim'daki Yazdir dugmesinin dili). Dolu mor,
     yanindaki sade zil ile ayni serit icinde standart disi duruyordu. */
  #ustEylem .btn.btn-primary,.ust-eylem .btn.btn-primary,
  .topbar .top-actions .btn.btn-primary{
    background:#f1efff!important;color:var(--primary)!important;
    border:1px solid #ddd7ff!important;box-shadow:none!important}
  #ustEylem .btn.btn-primary:active,.topbar .top-actions .btn.btn-primary:active{
    background:#e6e0ff!important}
  /* Ust bara tasinan IKINCIL dugme ("Listeye dön", "Vazgeç") telefonda GIZLI:
     birincil dugme + zil ile birlikte 320 px'e sigmiyor, ust uste biniyorlardi.
     Geri donus icin sol ustteki geri oku ve alt menu duruyor. */
  /* !important sart: ust bar dugmelerine verilen "display:grid!important"
     (ikon merkezleme) gizlemeyi eziyordu; "Listeye dön" zilin uzerine
     biniyordu (v595 bulgusu). */
  #ustEylem .btn-ghost,#ustEylem .btn.geri,
  .top-actions .btn-ghost{display:none!important}
  /* Ikonu OLMAYAN birincil dugme yazisiyla kalir ama daralmaz (kirpilmasin). */
  #ustEylem .btn:not(:has(svg)){width:auto;min-width:0;padding:0 9px;font-size:10px;
    max-width:100%;overflow:hidden;text-overflow:ellipsis}
  /* Iki satirli baslik (sayfa adi + sube) 36 px sinirinda kirpiliyordu;
     sinir kalkti, bar zaten 44 px tabanli. */
  .topbar-title{max-height:none}

  /* 4 — KENAR BOSLUGU 8 px, renk cizgisi kenardan iceride ve yumusak.
     Etiket'te "cizgi karta yapisik degil, 8 px iceriden" maddesi. */
  .card{margin-left:0;margin-right:0}
  .content{padding-left:12px;padding-right:12px}
  .card [style*="border-left"],.durum-cizgi{border-radius:2px}

  /* 5 — DOKUNMA HEDEFI 38 px alti YOK (0,75 olcegi bunu kapsamaz). */
  .sidebar a,.mobil-menu a,.bottom-nav a,.ptab,.tab,.chip,.cip,
  .seg-btn,.gorunum-secici a{min-height:38px;
    display:inline-flex;align-items:center;justify-content:center}
  .rapor-tablo a,.rapor-tablo button{min-height:38px;display:inline-flex;
    align-items:center;justify-content:center}

  /* 6 — SATIRDA ILK SIRA KOYU, ikinci sira sessiz.
     Etiket kartinda "ust sira koyu / alt sira sessiz gri" duzeni. */
  .rapor-tablo td b,.rapor-tablo td strong{color:var(--text);font-weight:600}
  .alt-bilgi,.rapor-tablo td small{color:var(--muted);font-weight:400}

  /* 7 — SAYAC/OZET SATIRI: esit sutun, merkezli (Etiket'teki 3 sutunlu satir). */
  .kpis{align-items:stretch}
  .kpi .val,.kpi .cap{text-align:left}

  /* Takip KPI seridi: 320 px'de dort kart alt alta 350 px yiyordu.
     Telefonda 2x2, rakam ve etiket kucultuldu (Etiket Basim sayac dili). */
  .degisim-kpi{grid-template-columns:1fr 1fr;gap:8px;margin-bottom:12px}
  .degisim-kpi .card{padding:8px 10px}
  .degisim-kpi .kpi-ad{font-size:8.5px}
  .degisim-kpi .kpi-deger{font-size:16px}
  .degisim-kpi .kpi-alt{font-size:10px}

  /* 7b — GENIS TABLO -> KART (mobil).
     Etiket Degisim listesi 559 px, Takip 545 px olcusundeydi: 320 px'lik
     ekrana sigmiyor, yatay kaydirma gerektiriyordu. "mobil-kart" sinifli
     tablolar telefonda satir satir karta doner; baslik hucreden data-l ile
     gelir (Etiket Basim kuyruk kartiyla ayni dil). */
  /* width:auto tabloyu icerige gore 520 px'e cikariyordu; %100 + border-box
     ile kart ekrana oturuyor. */
  table.mobil-kart,table.mobil-kart tbody,table.mobil-kart tr,table.mobil-kart td{
    display:block;width:100%;box-sizing:border-box}
  table.mobil-kart thead{display:none}
  table.mobil-kart tr{background:var(--surface);border:1px solid var(--line);
    border-radius:11px;padding:8px 10px;margin-bottom:7px}
  table.mobil-kart td{border:0;padding:2px 0;display:flex;align-items:center;
    justify-content:space-between;gap:10px;font-size:10px}
  table.mobil-kart td::before{content:attr(data-l);color:var(--muted);
    font-size:8.5px;font-weight:600;flex:none}
  table.mobil-kart td:empty{display:none}
  /* Kart icinde nowrap YASAK: islem hucresindeki uc dugme (Bas/Takip/Duzenle)
     tabloyu 520 px'e cikariyordu. Dugmeler sarar, hucre ekrana sigar. */
  table.mobil-kart{width:100%;max-width:100%}
  table.mobil-kart tr,table.mobil-kart td{max-width:100%;white-space:normal!important}
  table.mobil-kart td{flex-wrap:wrap;overflow-wrap:anywhere}
  table.mobil-kart td.bas{display:block;font-size:11.5px;font-weight:600;
    color:var(--text);padding-bottom:5px}
  table.mobil-kart td.bas::before{content:none}
  table.mobil-kart td .alt-bilgi{font-size:8.5px}

  /* 8 — UST BASLIK IKI SATIR: ustte sayfa adi, altinda sube (Etiket'teki gibi).
     Sube satiri 8 px, sessiz gri; degistirilemez bilgi oldugu icin ok/dugme yok. */
  /* Iki satirli baslik IZGARA ile: sayfa ikonu (.tb-ikon) SOLDA iki satir
     boyunca, sagda ustte sayfa adi altta sube. Flex-column verilince ikon
     yaziyi asagi itip basligi kaydiriyordu (Etiket Basim'daki cozumun ayni). */
  /* Ozgulluk .topbar ile artirildi: ".topbar-title.tb-ikonlu{display:flex}"
     ayni ozgullukte ve daha sonra geldigi icin izgarayi eziyordu. */
  .topbar .topbar-title.baslik-iki{display:grid;grid-template-columns:auto 1fr;
    align-items:center;column-gap:7px;row-gap:0;line-height:1.15;min-width:0}
  .topbar .topbar-title.baslik-iki > .tb-ikon{grid-area:1/1/3/2;align-self:center}
  .topbar .topbar-title.baslik-iki > .tb-ad{grid-area:1/2/2/3}
  .topbar .topbar-title.baslik-iki > .ust-sube{grid-area:2/2/3/3}
  /* Ikonu olmayan sayfada tek sutun kalir */
  .topbar .topbar-title.baslik-iki:not(:has(.tb-ikon)){grid-template-columns:1fr}
  .topbar .topbar-title.baslik-iki:not(:has(.tb-ikon)) > .tb-ad{grid-area:auto}
  .topbar .topbar-title.baslik-iki:not(:has(.tb-ikon)) > .ust-sube{grid-area:auto}
  .topbar-title.baslik-iki .tb-ad{font-size:11px;font-weight:600;
    white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
  .topbar-title .ust-sube{font-size:8px;font-weight:500;color:var(--muted);
    white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
}

/* Masaustunde de sube satiri gorunur ama olculer buyuk (mobil 0,75 katmani
   yalniz <=430 px'te gecerli). */
/* Masaustu: iki satirli baslik IZGARA — ikon SOLDA iki satir boyunca.
   flex-direction:column verilince ikon yaziyi asagi itip basligin USTUNE
   ciktiginda masaustu gorunumu bozuluyordu (v594 duzeltmesi). */
.topbar-title.baslik-iki{display:grid;grid-template-columns:auto 1fr;
  align-items:center;column-gap:9px;row-gap:0;line-height:1.2}
.topbar-title.baslik-iki > .tb-ikon{grid-area:1/1/3/2}
.topbar-title.baslik-iki > .tb-ad{grid-area:1/2/2/3;font-weight:700}
.topbar-title.baslik-iki > .ust-sube{grid-area:2/2/3/3}
.topbar-title.baslik-iki:not(:has(.tb-ikon)){grid-template-columns:1fr}
.topbar-title.baslik-iki:not(:has(.tb-ikon)) > .tb-ad,
.topbar-title.baslik-iki:not(:has(.tb-ikon)) > .ust-sube{grid-area:auto}
.topbar-title .ust-sube{font-size:11px;font-weight:500;color:var(--muted)}


/* ==========================================================================
   v623 — SATIR DETAY KATMANI (drawer) STANDARDI  (<=430 px)
   DIKKAT: bu kurallar dosyanin SONUNDA durur. Daha once uretilen 0,75
   katmaninin ICINE yazilmislardi ve `araclar/olcek_uret.py` yeniden
   calisinca SILINDILER (Gorevler katmani eski olculere donmustu).
   Uretici yalniz kendi imzali blogunu degistirir; burasi guvenlidir.
   ========================================================================== */
@media (max-width:430px){
  /* Govde dolgusu icerik alaniyla ayni; bloklar arasi 9 px (olculen sapma:
     dolgu 16,5/19,5/30 · aralik 12-0-6-0-12-12-12-12-17). */
  .drawer-body{padding:9px 12px 30px!important}
  .drawer-body > *{margin-bottom:0!important}
  .drawer-body > * + *{margin-top:9px!important}
  .drawer-body > *:first-child{margin-top:0!important}
  .drawer-body .sheet-sec{padding-top:9px}
  /* Katman acikken sohbet balonu gizlenir (govde kilitlenince icerigin
     uzerine biniyordu); JS de ayni isi yapar. */
  body.katman-acik .chat-head{display:none!important}

  /* Katman ici FORM SATIRLARI (sure ekle, kontrol listesi, mesaj kutusu):
     olculen sapmalar -> girdiler 38, dugmeler 44, girdi-dugme arasi 6 px ve
     "Sure ekle" dugmesi girdilerden 2 px yukarida duruyordu.
     Standart: hepsi 40 px, ayni eksende, aralar 9 px. */
  .drawer-body .drawer-form,.drawer-body .zk-ekle{gap:9px;align-items:center}
  .drawer-body .drawer-form input:not([type=checkbox]):not([type=radio]):not([type=hidden]),
  .drawer-body .drawer-form select,
  .drawer-body .drawer-form .btn,
  .drawer-body .drawer-form button{height:40px!important;min-height:40px!important}
  /* "Detay" acma dugmesi 22 px idi: dokunma hedefi alt siniri 38 px. */
  .drawer-body .sh-detaybtn{min-height:38px;padding:0 10px}

  /* Katman icindeki TUM form ogeleri 40 px (checkbox/radio haric) ve
     satir araliklari 9 px. Olculen sapmalar: mesaj kutusu ve alt aksiyon
     dugmesi 44 px, .chat-form gap 6 px, .check-row dolgusu 6,8/7,5 px. */
  .drawer-body input:not([type=checkbox]):not([type=radio]):not([type=hidden]),
  .drawer-body select,
  .drawer-body .btn,
  .drawer-body button:not(.sh-detaybtn):not(.chk-sil){height:40px!important;min-height:40px!important}
  .drawer-body .chat-form{gap:9px}
  /* .check-row / .checklist icin genel kural asagida (v627). */
  /* "Sure ekle" dugmesi alt satira dusuyordu: aciklama girdisi 130 px'lik
     asgari genislik yuzunden satiri tasiriyordu. */
  .drawer-body .zk-ekle .zk-acikin{min-width:0}
  .drawer-body .zk-ekle .btn{flex:none}
}


/* ==========================================================================
   v626 — DUZENLEME FORMLARI STANDARDI  (<=430 px)
   Olculen sapmalar (Gorevi Duzenle): alan araliklari 11-13-11-12-12-12-11-12,
   girdiler 38 px ama acilir liste tetikleyicileri 42 px, dugmeler 44 px,
   kart dolgusu 19,5 px (icerik ritmi 12 px).
   ========================================================================== */
@media (max-width:430px){
  .form-card{padding:12px}
  .form-grid{gap:9px}
  .form-field{gap:3px;margin:0}
  /* DIKKAT: .form-grid zaten 9 px gap veriyor; grid ICINDEKI alanlara ayrica
     margin verilirse aralik 18 px'e cikiyordu. Yalniz DOGRUDAN cocuklara. */
  .form-card > .form-field + .form-field,
  .form-card > .form-grid + .form-field,
  .form-card > .form-field + .form-grid,
  .form-card > form > .form-field + .form-field{margin-top:9px}
  /* Tum girdi ve tetikleyiciler ayni yukseklikte: 40 px */
  .form-card input:not([type=checkbox]):not([type=radio]):not([type=hidden]),
  .form-card select,
  .form-card .bs-trigger,
  .form-card .spick-input{height:40px!important;min-height:40px!important}
  .form-card textarea{min-height:56px}
  /* Aksiyon satiri: 9 px aralik, 40 px yukseklik, ayni eksen */
  /* Aksiyon dugmeleri YAN YANA ve esit genislikte; tam genislikte olduklari
     icin alt alta sariyorlardi (Kaydet 271, Vazgec 262 px). */
  .form-actions{gap:9px;margin-top:12px;padding-top:12px;flex-wrap:nowrap;align-items:center}
  .form-actions .btn,.form-actions button{height:40px!important;min-height:40px!important;
    flex:1 1 0;min-width:0;width:auto;padding:0 10px}
  .form-actions .sil-form,.form-actions .sil-form .btn{flex:0 0 auto}
  .sil-form{margin-top:0}
}


/* ==========================================================================
   v627 — ADIMLAR (CHECKLIST) LISTESI 9 PX STANDARDI  (<=430 px)
   Olculen: .checklist gap 1,5 px · .check-row dolgu 6,8/7,5 px · satir 58 px.
   Bu liste hem duzenleme formunda hem satir detay katmaninda kullanilir;
   kural ikisini birden kapsar (once yalniz .drawer-body icin yazilmisti).
   ========================================================================== */
@media (max-width:430px){
  .checklist{gap:9px}
  .check-row{padding:9px}
  /* Sil dugmesi (opacity:0, yalniz uzerine gelince gorunur) 44x40 YER KAPLIYOR
     ve satiri 58 px'e sisiriyordu. Mutlak konuma alindi: satir yuksekligi artik
     kendi icerigi kadar (9 + 17 + 9 = 35 -> dokunma hedefi icin 38 px),
     dugme sagda 38x38 dokunma alani olarak durur. */
  .check-row{position:relative;min-height:38px;padding-right:47px}
  .check-row .chk-sil{position:absolute;top:0;right:0;bottom:0;margin:auto 0;height:38px;
    display:flex;align-items:center}
  .check-row .chk-sil .btn,.check-row .chk-sil button{height:38px!important;min-height:38px!important;width:38px;padding:0}
  /* Ust/alt komsulariyla arasi da 9 px: kc-prog'un alt margini ve ekleme
     formunun ust dolgusu araligi 14 / 11 px'e cikariyordu. */
  .kc-prog{margin-bottom:0!important}
  /* Bolum basligi ile liste arasi 14 px, liste ile ekleme formu arasi 11 px idi. */
  .panel-head{padding-bottom:9px!important}
  .checklist{margin-bottom:0!important}
  .kc-prog + .checklist,.checklist + form,.checklist + .drawer-form{margin-top:9px!important}
  .checklist + form,.checklist + .drawer-form{padding-top:0!important;margin-bottom:0}
}


/* ==========================================================================
   v628 — KARE KARE GORSEL DENETIMDEN CIKANLAR  (<=430 px)
   ========================================================================== */
@media (max-width:430px){
  /* 1) Sayfanin SON ogesi alt menunun ALTINDA kaliyordu (son form alt kenari
     470, menu ust kenari 450). Icerik alt dolgusu = menu (59) + 12. */
  /* Alt menu (59) + 12 bosluk + yuzen sohbet balonu (40) + 12 = 123 px.
     Balon sag altta duruyor ve sayfanin SON etkilesimli ogesini ("Ekle"
     dugmesi) ortuyordu; alt dolgu balonun da ustunde bitecek kadar acildi. */
  /* Etiket Basim TAM EKRAN sigan bir ekrandir (kaydirma yok, liste yuksekligi
     JS ile olculur); 123 px'lik alt dolgu orayi 509 -> 579 px'e cikardi.
     Bu yuzden o ekran (barkod okutma alani #etScan) haric tutulur. */
  .content:not(:has(#etScan)){padding-bottom:123px}
  /* 2) "Sil" dugmesi tek basina, 37x44 ve sola yasli duruyordu (Kaydet/Vazgec
     ile ayni eksende degil). Kendi satirinda TAM GENISLIK, 40 px. */
  .form-actions .sil-form,.sil-form{flex:1 1 100%;width:100%;margin-top:9px}
  .form-actions .sil-form .btn,.sil-form .btn{width:100%;height:40px!important;min-height:40px!important}
  /* Adim ekleme satiri (.checklist'in ardindaki form) da 40 px: "Ekle" 44 idi. */
  .checklist + form .btn,.checklist + form button,.checklist + form input{height:40px!important;min-height:40px!important}
}


/* ==========================================================================
   v629 — BOLUMLU FORM GORUNUMU (maket C — kullanici onayi)  (<=430 px)
   Alanlar anlam gruplarina ayrilir; her grup TEK KART, alanlar ince ayracla.
   Cerceveli kutular kalkar, kayit "bir butun" gibi okunur.
   Masaustunde (>=431 px) eski iki sutunlu form aynen kalir.
   ========================================================================== */
@media (max-width:430px){
  /* Kart artik bolumlerin kendisi; dis kabuk seffaf. */
  .form-card{background:transparent;border:0;box-shadow:none;padding:0;border-radius:0}

  .form-bolum{margin-bottom:12px}
  .form-bolum::before{content:attr(data-bas);display:block;font-size:9.5px;font-weight:800;
    letter-spacing:.5px;text-transform:uppercase;color:var(--muted-2);padding:0 3px 6px}
  .form-bolum > .form-grid{display:block;gap:0;background:var(--surface);
    border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow);overflow:hidden}

  /* Alan = satir: etiket ustte kucuk, deger altta; ayrac ile ayrilir. */
  .form-bolum .form-field{padding:8px 12px;margin:0!important;border-top:1px solid var(--line-2);gap:1px}
  .form-bolum .form-grid > .form-field:first-child{border-top:0}
  .form-bolum .form-field > label{font-size:9.5px;font-weight:700;color:var(--muted-2);
    letter-spacing:.2px;margin:0}

  /* Girdiler cercevesiz ve zeminsiz; dokunma alani korunur (min 40 px satir). */
  .form-bolum .form-field input:not([type=checkbox]):not([type=radio]):not([type=hidden]),
  .form-bolum .form-field select,
  .form-bolum .form-field textarea,
  .form-bolum .form-field .bs-trigger,
  .form-bolum .form-field .spick-input{background:transparent!important;border:0!important;
    box-shadow:none!important;border-radius:0!important;padding:0!important;
    height:26px!important;min-height:26px!important;font-size:12px;font-weight:600;color:var(--text)}
  .form-bolum .form-field textarea{height:auto!important;min-height:38px!important;
    font-weight:500;font-size:11px;line-height:1.5;color:#334155}
  .form-bolum .form-field .bs-trigger,.form-bolum .form-field .spick-input{width:100%;
    display:flex;align-items:center;gap:8px}
  .form-bolum .form-field .bs-chev{margin-left:auto;color:var(--muted-2)}
  /* DOKUNMA HEDEFI: tetikleyicinin kendisi 26 px, ama SATIRIN TAMAMI (51 px)
     tiklanabilir olmali. Seffaf bir ortu ile hedef satira yayilir. */
  .form-bolum .form-field{position:relative}
  .form-bolum .form-field .bs-trigger::after,
  .form-bolum .form-field .spick-input::after{content:'';position:absolute;inset:0}

  /* Ilerleme: sayinin altinda ince cubuk */
  .ilerleme-cizgi{height:6px;border-radius:99px;background:var(--line-2);overflow:hidden;margin-top:6px}
  .ilerleme-cizgi i{display:block;height:100%;background:var(--primary)}

  /* Adimlar bolumu ayni dile oturur: baslik ustte, sayac sagda, liste tek kart. */
  .adim-bolum{padding:0!important}
  .adim-bolum::before{content:none}
  .adim-bolum .panel-head{padding:0 3px 6px!important}
  .adim-bolum .panel-head h3{font-size:9.5px;font-weight:800;letter-spacing:.5px;
    text-transform:uppercase;color:var(--muted-2)}
  .adim-bolum .bolum-sayac{font-size:9.5px;font-weight:700;color:var(--muted)}
  .adim-bolum .kc-prog{display:none}
  .adim-bolum .checklist{background:var(--surface);border:1px solid var(--line);
    border-radius:14px;box-shadow:var(--shadow);overflow:hidden;gap:0;margin:0!important}
  .adim-bolum .check-row{border-top:1px solid var(--line-2);border-radius:0;background:transparent}
  .adim-bolum .checklist .check-row:first-child{border-top:0}

  /* "+ Yeni adim ekle" satiri: listenin dogal devami */
  .adim-ekle{display:flex;align-items:center;gap:9px;margin-top:0!important;
    background:var(--surface);border:1px solid var(--line);border-top:0;
    border-radius:0 0 14px 14px;padding:0 12px!important;min-height:41px}
  .checklist + .adim-ekle{border-top:1px solid var(--line-2);margin-top:-1px!important}
  .adim-arti{width:18px;height:18px;border-radius:6px;background:var(--primary-tint);
    color:var(--primary);display:grid;place-items:center;font-size:13px;font-weight:700;flex:none}
  .adim-ekle input[type=text]{background:transparent!important;border:0!important;
    height:41px!important;min-height:41px!important;padding:0!important;font-size:11.6px;
    font-weight:600;color:var(--primary)}
  .adim-ekle input[type=text]::placeholder{color:var(--primary);opacity:.85}
  .adim-ekle .btn{height:30px!important;min-height:30px!important;padding:0 10px;font-size:9.5px;flex:none}
}


/* ==========================================================================
   v631 — PROJE UYELERI MOBILDE POP-UP  (<=430 px)
   Liste yerinde 700 px yer kapliyordu; artik tetikleyiciye dokununca ekranin
   ORTASINDA pop-up olarak acilir (KURAL 12 ile ayni dil).
   ========================================================================== */
.mpick-trigger{display:none}
@media (max-width:430px){
  .mpick-trigger{display:flex;align-items:center;gap:8px;width:100%;
    background:transparent;border:0;padding:0;height:26px;font-size:12px;
    font-weight:600;color:var(--text);text-align:left}
  .mpick-trigger .mpick-ozet{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;
    white-space:nowrap}
  .mpick-trigger:not(.dolu) .mpick-ozet{color:var(--muted-2);font-weight:500}
  .mpick-trigger .bs-chev{margin-left:auto;color:var(--muted-2);width:15px;height:15px;flex:none}

  /* Liste varsayilan olarak kapali; yalniz pop-up olarak acilir. */
  .form-bolum .mpick{display:none}
  .form-bolum .mpick.orta-pop{display:block;position:fixed!important;left:50%!important;
    top:50%!important;transform:translate(-50%,-50%);width:min(300px,calc(100vw - 24px))!important;
    max-height:70vh;overflow:hidden;border-radius:14px;border:1px solid var(--line);
    box-shadow:0 18px 46px rgba(15,23,42,.28);z-index:1200!important;background:var(--surface)}
  .form-bolum .mpick.orta-pop .mpick-list{max-height:calc(70vh - 46px)}
  .form-bolum .mpick.orta-pop .mpick-search{height:40px;font-size:11.6px}
  .form-bolum .mpick.orta-pop .mpick-opt{min-height:44px}
  /* Ipucu metni pop-up'ta gereksiz yer kapliyor */
  .form-bolum .form-field:has(.mpick) > .form-hint{display:none}
}


/* ==========================================================================
   v632 — KART TABLOLARI (mobil-kart) HIZASI VE OLCULERI  (<=430 px)
   Olculen: etiket sutunu her satirda farkli genislikte (20 - 74 px), bu yuzden
   degerler birbirine gore kayikti; etiket ve alt bilgi metinleri 8,5 px
   (KURAL 15 asgarisi 9,5); kart icindeki dugmeler 44 px (standart 40).
   ========================================================================== */
@media (max-width:430px){
  /* Sutun hizasi: etiket SOLA, deger SAGA. Razor'da bazi hucreler
     "text-align:center" satir ici stiliyle geliyor; kartta bu bozuyor. */
  table.mobil-kart td{text-align:left!important}
  /* Etiketsiz hucrelerde (dugme satiri) 96 px'lik etiket sutunu bosluk
     biraktigi icin dugmeler saga toplaniyordu. */
  table.mobil-kart td:not([data-l])::before{content:none}
  table.mobil-kart td::before{width:96px;font-size:9.5px;line-height:1.3;text-align:left}
  table.mobil-kart td{gap:9px;padding:3px 0;font-size:10.5px}
  table.mobil-kart td .alt-bilgi{font-size:9.5px}
  table.mobil-kart td .btn,table.mobil-kart td button{height:40px!important;min-height:40px!important}
  /* Dugme satiri: TEK SATIR, esit genislik (sarinca kart 197 -> 267 px oluyordu) */
  table.mobil-kart td:last-child{gap:9px;padding-top:9px;flex-wrap:nowrap;justify-content:flex-start}
  table.mobil-kart td:last-child .btn{flex:1 1 0;min-width:0;padding:0 6px;font-size:9.5px}
}


/* ==========================================================================
   v633 — FORM IPUCU METINLERI VE KART ICI DUGMELER  (<=430 px)
   Olculen: .form-hint 8,5 px (KURAL 15 asgarisi 9,5) · ust bardaki metin
   dugmesi 36 px, "Listeyi kapat" 44 px (standart 40).
   ========================================================================== */
@media (max-width:430px){
  .form-hint,.form-error{font-size:9.5px;line-height:1.4}
  .form-bolum .form-field .form-hint{margin-top:2px}
  /* Kart icindeki ikincil form dugmeleri (Yayinla / Listeyi kapat vb.) */
  .form-card form .btn,.form-card .btn{height:40px!important;min-height:40px!important}
  .head-row .btn{height:40px!important;min-height:40px!important}
}


/* v634 — "Dosyadan yukle" satiri (urun listesi kutusunun altinda) */
.et-yukle-satir{display:flex;align-items:center;gap:9px;margin-top:6px;flex-wrap:wrap}
.et-yukle-satir .btn{display:inline-flex;align-items:center;gap:6px}
@media (max-width:430px){
  .et-yukle-satir{gap:9px;margin-top:9px}
  .et-yukle-satir .btn{height:40px!important;min-height:40px!important;font-size:9.5px}
  .et-yukle-satir #dosyaBilgi{flex:1 1 100%}
}


/* ==========================================================================
   v635 — URUN SATIRLARI (Etiket Basim mobil satiriyla BIRE BIR)
   Etiket Basim'daki duzen: UST satir "beden · renk · kod" kalin ve koyu,
   ALT satir urun adi KUCUK ve GRI (varyant one cikar, ad sessiz kalir;
   listede ad zaten hep ayni). Sagda Etiket Basim'da stok/fiyat durur —
   burada onun yerine EKLENDIGI REVIZYON rozeti.
   ========================================================================== */
.urun-satirlar{display:flex;flex-direction:column;gap:6px;padding:11px 14px}
.urun-satir{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:2px 10px;
  background:var(--surface);border:1px solid var(--line);border-radius:10px;
  padding:8px 10px;box-shadow:var(--shadow)}
.urun-satir .us-ayrinti{grid-area:1/1/2/2;font-size:12.5px;font-weight:600;color:var(--text);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.urun-satir .us-rev{grid-area:1/2/3/3;align-self:center;white-space:nowrap;
  background:var(--primary-tint);color:var(--primary);border-radius:999px;
  padding:2px 8px;font-size:11px;font-weight:700}
.urun-satir .us-ad{grid-area:2/1/3/2;font-size:11px;font-weight:400;color:#64748b;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}

@media (max-width:430px){
  .urun-satirlar{padding:9px 12px;gap:6px}
  .urun-satir{padding:8px 9px;gap:1px 9px}
  /* Etiket Basim'daki punto/agirlik/renk degerleri birebir */
  .urun-satir .us-ayrinti{font-size:9.5px;font-weight:600;color:var(--text)}
  .urun-satir .us-ad{font-size:8.5px;font-weight:400;color:#64748b}
  .urun-satir .us-rev{font-size:9.5px;padding:2px 7px}
}


/* v636 — Takip ekrani: rozet basim ozeti tasir; hic basilmayan satir kirmizi. */
.urun-satir .us-rev.yok{background:#fef2f2;color:#dc2626}
@media (max-width:430px){
  /* Ust bardaki metin dugmesi 36 px idi (dokunma hedefi 38 alti). */
  .head-row .btn,.topbar .top-actions a.btn{height:40px!important;min-height:40px!important}
}


/* v637 — satir rozeti renk varyantlari + ikincil metin (sube adi) */
.urun-satir .us-rev.ok{background:#ecfdf5;color:#16a34a}
.urun-satir .us-rev.uyari{background:#fff7ed;color:#b45309}
.urun-satir .us-ikincil{font-weight:400;color:var(--muted)}


/* v638 — Sube ekrani: baslikta sube kodu rozeti + "Bitirdim" dugmesi 40 px */
.sube-rozet{display:inline-block;background:var(--primary-tint);color:var(--primary);
  border-radius:8px;padding:1px 8px;font-size:.8em;font-weight:800;vertical-align:middle;
  margin-right:4px;font-family:'JetBrains Mono',ui-monospace,Consolas,monospace}
@media (max-width:430px){
  .sube-rozet{font-size:9.5px;padding:1px 6px}
  .bitirdim-form .btn,.bitirdim-form button{height:40px!important;min-height:40px!important}
  form .btn[type=submit],form button[type=submit]{min-height:40px}
}


/* v640 — "Listeden doldur" dugmesi (degisim seridi) mobilde dokunulabilir olsun */
@media (max-width:430px){
  /* Serit TEK SATIR kalir (sarinca dugme bildirim seridinin uzerine biniyordu):
     liste adi kisalir, dugme metni "Doldur"a iner. */
  .et-degisim{flex-wrap:nowrap}
  .et-degisim .ad{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .et-degisim .say{font-size:9.5px}
  .et-degisim .deg-doldur{height:32px!important;font-size:9.5px!important;padding:0 9px!important;
    margin-left:9px!important;flex:none;background:#f1efff!important;color:#4f46e5!important;
    border:1px solid #ddd7ff!important;box-shadow:none!important}
  .et-degisim .deg-doldur .uzun{display:none}
}


/* ==========================================================================
   v663 — URUN KODU LISTESI BOLUMU 0,75 OLCEGINE ALINDI  (<=430 px)
   Olculen (once): dugmeler 156x44 / 12,5 px yazi · metin kutusu 110 px /
   12,5 px · baslik 13 px · not 11 px. Etiket ekrani uretilen olcek
   katmaninin disinda tutuldugu icin bu alan buyuk kalmisti.
   ========================================================================== */
@media (max-width:430px){
  .et-yardimci .et-h3-liste{font-size:10.5px;margin:0 0 6px}
  .et-yardimci .et-liste{height:82px;min-height:82px;font-size:10.5px;padding:6px}
  .et-yardimci .et-btnlar{gap:9px}
  .et-yardimci .et-btnlar .et-btn{height:40px!important;min-height:40px!important;
    font-size:9.5px;padding:0 9px;display:inline-flex;align-items:center;
    justify-content:center;gap:6px}
  /* v664 — ikon 15 px SVG (emoji degil): kucuk puntoda net cizilir. */
  .et-yardimci .et-btnlar .et-btn svg{width:15px;height:15px;flex:none}
  .et-yardimci .et-not{font-size:9.5px;line-height:1.4;margin-top:6px}
}


/* ==========================================================================
   v665 — STANDART "DOSYADAN YUKLE" IKONU
   Tum dosya yukleme dugmelerinde ayni 15 px SVG (yukari ok + tabla) kullanilir;
   emoji ya da ok karakteri (⤒ ⤓ 📄) kullanilmaz — kucuk puntoda bulaniklasir.
   ========================================================================== */
.ikon-yukle{width:15px;height:15px;flex:none}
.dosya-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px}
@media (max-width:430px){
  .dosya-btn{gap:6px}
  .dosya-btn .ikon-yukle{width:15px;height:15px}
}


/* ==========================================================================
   v666 — ETIKET GRUBU: METIN ASGARISI 9,5 px · IKON HEDEFI EN AZ 26 px
   Kullanici karari: "metinleri 9,5px standart yapalim, hicbir yerde ikonlar
   26'nin altinda kalmasin."
   Etiket ekrani uretilen olcek katmaninin disinda oldugu icin buradaki
   8 / 8,5 px metinler ve 24-25 px dugmeler elle duzeltilir.
   ========================================================================== */
@media (max-width:430px){
  /* --- 1) METIN ASGARISI 9,5 px --- */
  .et-ust-magaza{font-size:9.5px!important;line-height:1.25!important;height:auto!important}
  .et-ozet,.et-ozet .et-f-say,.et-ozet .et-f-say b{font-size:9.5px!important}
  body.et-okut .et-ozet,body.et-okut .et-ozet .et-f-say{font-size:9.5px!important}
  .et-degisim .say,.et-degisim .ad{font-size:9.5px!important}
  /* Iki kalinti: sayac seridi (.et-ozet) ve bos kuyruk aciklamasi. */
  body .et-ozet,body .et-ozet *{font-size:9.5px!important}
  .et-bos-ic span,.et-bos-ic small{font-size:9.5px!important}
  .et-q td[data-l]::before{font-size:9.5px!important}

  /* --- 2) IKON DUGMELERI EN AZ 26 px --- */
  .et-btn.p,#btnYaz{min-height:26px!important}
  .icon-btn,.bell-btn,#bellBtn{min-height:26px!important;min-width:26px!important}
  .ses-toggle,#sesToggle,#sesAyarBtn,.bell-foot button{min-height:30px!important}
  .et-degisim,a.et-degisim-bek{min-height:26px!important}
  .spick-input.bs-trigger,.et-secim-cip{min-height:26px!important}
}


/* ══════════════════════════════════════════════════════════════════════════
   v670 — mobil kart tablosu: baslik satiri en uste + KURAL 15 (9,5 px taban)
   Denetim listesi 521 px tabloydu (Durum/Puan/Foto/"Devam et" ekran disinda).
   Kart standardina alinirken iki eksik goruldu:
   - `td.bas` (magaza adi) DOM'da ikinci sirada; kartta ustte durmali.
   - Etiket grubunda konan 9,5 px taban bu standartta 8,5 px kalmisti.
   ══════════════════════════════════════════════════════════════════════════ */
@media (max-width:700px){
  table.mobil-kart tr{display:flex;flex-direction:column}
  table.mobil-kart td.bas{order:-1}
  table.mobil-kart td::before{font-size:9.5px}
  table.mobil-kart td .alt-bilgi{font-size:9.5px}
  form.filter-bar label,form.filter-bar > label > span,
  form.filter-bar .form-field > span{font-size:9.5px}
  /* Cip "x" dokunma hedefi 18 px idi; ikon hedefi tabani 26 px. */
  .fil-chip .fil-x{width:26px;height:26px;font-size:12px}
}


/* ══════════════════════════════════════════════════════════════════════════
   v671 — ust bar eylem ikonlari kaymisti (olcum, 320 px / Denetim):
   `#ustEylem{max-width:52%}` kutuyu 63 px'e kilitliyordu; icindeki IKI ikon
   dugmesi (Analiz + Yeni) 80 px tutup tasiyor, zilin (257..293) uzerine
   biniyordu — dugme 232..268. Ayrica dugmeler 40 px, zil 36 px yuksekti:
   ayni seritte iki ayri yukseklik.
   Ikonlar sabit olculu; daralmasi gereken BASLIK (zaten "..." ile kirpiliyor).
   ══════════════════════════════════════════════════════════════════════════ */
@media (max-width:700px){
  #ustEylem{max-width:none;flex:0 0 auto}
  .topbar .topbar-title{min-width:0;overflow:hidden}
  #ustEylem .btn,#ustEylem .eylem-dar > .btn{
    height:36px!important;min-height:36px!important;
    width:36px!important;min-width:36px!important;padding:0!important}
  /* Serit dili tek: hafif zemin + ana renk simge (Etiket'teki Yazdir dugmesi). */
  #ustEylem .btn:has(svg){background:#f1efff;color:var(--primary);
    border:1px solid #ddd7ff;border-radius:10px}
}


/* v672 — kart tablosunda IC ICE IKI CERCEVE vardi: disardaki `.card` kabugu
   (12..308, dolgu 13 px) + her satirin kendi karti (25..295). Satir zaten
   kart oldugu icin dis kabuk mobilde saydam. */
@media (max-width:700px){
  .card:has(> table.mobil-kart){background:transparent;border:0;box-shadow:none;padding:0}
}


/* v673 — ust bar ikon araliklari tek olcu: .eylem-dar 8 px, digerleri 6 px idi
   (olcumde 188..224 | 232..268 | 274..310 -> 8 ve 6 karisik). Hepsi 8 px. */
@media (max-width:700px){
  .topbar .top-actions,#ustEylem,#ustEylem .eylem-dar,.topbar .ust-eylem{gap:8px}
}
