/* Modern Yapı ERP — ortak stil katmanı (UI-0).
   Token'lar DESIGN_SYSTEM.md §1 ile birebir; eski adlar (--navy, --blue…) geçiş
   alias'larıdır — mevcut f-string HTML'ler kırılmasın diye korunur, yeni kod yeni
   adları kullanır. Renk/ölçü değeri koda yazılmaz, yalnız token. */
/* IBM Plex Sans — YEREL (static/fonts, CDN yok; CSP font-src 'self'). */
@font-face{font-family:"IBM Plex Sans";src:url("/static/fonts/IBMPlexSans-Regular.woff2") format("woff2");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"IBM Plex Sans";src:url("/static/fonts/IBMPlexSans-Medium.woff2") format("woff2");font-weight:500;font-style:normal;font-display:swap}
@font-face{font-family:"IBM Plex Sans";src:url("/static/fonts/IBMPlexSans-SemiBold.woff2") format("woff2");font-weight:600;font-style:normal;font-display:swap}
:root{
/* renk — nötr */
--n0:#FFFFFF; --n50:#F7F8FA; --n100:#EEF1F5; --n200:#E1E6EE; --n300:#C9D1DD; --n400:#9AA5B8;
--n500:#5A6475; --n600:#4B5563; --n700:#333B4A; --n800:#1F2633; --n900:#0E1726;
/* marka */
--marka:#0E1726; --marka-2:#1B2C49; --vurgu:#2E5BBA; --vurgu-zemin:#E8EEFA;
/* semantik (3 ton: metin / zemin / kenar) */
--ok:#1B7F3B;   --ok-z:#E7F6EC;   --ok-k:#BFE5CB;
--uyari:#9A6700;--uyari-z:#FFF6DF;--uyari-k:#F5D48A;
--hata:#B42318; --hata-z:#FDECEA; --hata-k:#F4B8B1;
--bilgi:#175CD3;--bilgi-z:#E9F1FD;--bilgi-k:#B8D0F5;
/* tipografi */
--font:"IBM Plex Sans",-apple-system,"Segoe UI",Arial,sans-serif; --mono:ui-monospace,Menlo,Consolas,monospace; /* brief §2: IBM Plex Sans yerel (DS taslağındaki Inter yerine — TESLIM notunda) */
--t-xs:12px; --t-sm:13px; --t-md:15px; --t-lg:20px; --t-xl:26px;   /* satır yüksekliği 1.45 */
/* ölçü — 8 px ızgara */
--s1:4px; --s2:8px; --s3:12px; --s4:16px; --s5:24px; --s6:32px; --s7:48px;
--r-sm:8px; --r-md:12px;
--golge-1:0 1px 2px rgba(14,23,38,.06); --golge-2:0 6px 20px rgba(14,23,38,.10);
--odak:0 0 0 3px #F5A20166;   /* tek odak halkası */
--altnav-h:56px;   /* UI-4c B: telefonda alt gezinme çubuğu yüksekliği (güvenli alan payı hariç) */
/* geçiş alias'ları — eski ad → yeni token (birebir eşleşmeyenler eski değerini korur) */
--navy:var(--n900); --navy2:#16223a; --blue:var(--vurgu); --green:#2E7D32; --red:#C62828;
--amber:#F5A201; --bg:#EDF0F6; --line:#E3E8F0; --muted:#5A6475;
}
*{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font);font-variant-numeric:tabular-nums;background:var(--bg);color:#1a1f2e}
/* UX1 — tek üst bar + gruplu daraltılabilir sol menü */
.ustbar{background:linear-gradient(90deg,#0B1220,#1b2c49);color:#fff;padding:0 14px;display:flex;align-items:center;gap:8px;flex-wrap:wrap;position:sticky;top:0;z-index:9;box-shadow:0 2px 12px rgba(0,0,0,.18);min-height:52px}
.burger{display:none;align-items:center;justify-content:center;min-width:40px;min-height:40px;color:#fff;font-size:19px;cursor:pointer;border-radius:8px}
.burger:hover{background:rgba(255,255,255,.08)}
.mtoggle{display:inline-flex;align-items:center;justify-content:center;min-width:40px;min-height:40px;background:none;border:none;color:#aab7d2;font-size:17px;cursor:pointer;border-radius:8px;padding:0}
.mtoggle:hover{color:#fff;background:rgba(255,255,255,.08)}
#menuac{display:none}
.yerlesim{display:flex;align-items:flex-start}
.yanmenu{flex:0 0 218px;width:218px;background:linear-gradient(180deg,#0E1726,#182742);position:sticky;top:52px;max-height:calc(100vh - 52px);overflow-y:auto;padding:12px 9px 18px;align-self:stretch;min-height:calc(100vh - 52px)}
.yanmenu details{margin-bottom:4px}
.yanmenu summary{color:#7f8fb0;font-size:10.5px;font-weight:800;text-transform:uppercase;letter-spacing:.8px;padding:9px 11px 5px;cursor:pointer;list-style:none;user-select:none}
.yanmenu summary::-webkit-details-marker{display:none}
.yanmenu summary::after{content:'▾';float:right;font-size:9px;opacity:.7}
.yanmenu details:not([open])>summary::after{content:'▸'}
.yanmenu a{display:block;color:#aab7d2;text-decoration:none;padding:10px 12px;font-size:13px;font-weight:600;border-radius:8px;border-left:3px solid transparent;transition:.12s;min-height:40px;line-height:20px}
.yanmenu a:hover{color:#fff;background:rgba(255,255,255,.06)}
.yanmenu a.on{color:#fff;background:rgba(255,255,255,.11);border-left-color:var(--amber)}
.icerik{flex:1;min-width:0}
body.mkapali .yanmenu{display:none}
.crumb{font-size:12px;color:var(--muted);margin-bottom:10px}
.crumb span:last-child{color:var(--navy);font-weight:700}
.brand{display:flex;align-items:center;gap:8px;margin-right:12px;min-width:0}
.marka-kirp{display:inline-block;position:relative;overflow:hidden;line-height:0;aspect-ratio:4106/314;flex:0 1 auto;max-width:100%;min-width:0}
.marka-kirp img{display:block;width:104.19%;max-width:none;height:auto;transform:translate(-1.87%,-29.52%)}
.marka-logo-ust{width:176px}
.marka-yazi{font-weight:800;color:#fff;font-size:17px;letter-spacing:2.5px;white-space:nowrap}
.brand .erp{font-size:10px;letter-spacing:1.5px;color:#0B1220;background:var(--amber);padding:2px 7px;border-radius:5px;font-weight:800}
.marka-giris{background:linear-gradient(100deg,#0B1220,#192A48);border-radius:12px;padding:19px 16px;margin-bottom:16px;display:flex;align-items:center;justify-content:center;gap:12px;border-bottom:3px solid var(--amber)}
.marka-logo-giris{width:min(245px,78vw)}
.marka-giris .erp{font-size:10px;letter-spacing:1.8px;color:#0B1220;background:var(--amber);padding:3px 8px;border-radius:5px;font-weight:800;flex:0 0 auto}
.psel{margin-left:8px}.psel select{background:#24314f;color:#fff;border:1px solid #3a4a6b;border-radius:7px;padding:6px 9px;font-size:12.5px}
.who{margin-left:auto;color:#aab7d2;font-size:12.5px}.who b{color:#fff}
.bell{color:#fff;text-decoration:none;margin-right:12px;font-size:15px}
.bbadge{background:var(--red);color:#fff;border-radius:10px;font-size:10px;padding:1px 5px;margin-left:1px;font-weight:800;vertical-align:top}
.wrap{max-width:1320px;margin:22px auto;padding:0 18px}
.hero{background:linear-gradient(100deg,#0E1726,#22365c);color:#fff;border-radius:16px;padding:20px 24px;margin-bottom:18px;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:10px;box-shadow:0 6px 20px rgba(14,23,38,.18)}
.hero h1{color:#fff;font-size:22px;margin:0}.hero .meta{color:#b9c6e0;font-size:13px;margin-top:4px}
.hero .pj{font-size:12px;background:rgba(255,255,255,.14);padding:5px 12px;border-radius:20px;font-weight:600}
h1{font-size:20px;color:var(--navy);margin-bottom:3px}.sub{color:var(--muted);font-size:13px;margin-bottom:16px}
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:13px;margin-bottom:18px}
.kpi{background:#fff;border:1px solid var(--line);border-radius:14px;padding:14px 16px;box-shadow:0 1px 3px rgba(16,23,38,.06);border-left:4px solid #c7d0e0;transition:.15s}
.kpi:hover{box-shadow:0 6px 18px rgba(16,23,38,.10);transform:translateY(-1px)}
.kpi.k-green{border-left-color:var(--green)}.kpi.k-amber{border-left-color:var(--amber)}.kpi.k-red{border-left-color:var(--red)}.kpi.k-blue{border-left-color:var(--blue)}
.kpi .l{font-size:10.5px;color:var(--muted);font-weight:700;text-transform:uppercase;letter-spacing:.3px}.kpi .v{font-size:19px;font-weight:700;color:var(--navy);margin-top:5px}
.kpi .usd{font-size:11.5px;color:var(--muted);font-weight:600;margin-top:2px}
.v.green{color:var(--green)}.v.red{color:var(--red)}.v.amber{color:var(--amber)}
.card{background:#fff;border:1px solid var(--line);border-radius:14px;padding:16px;margin-bottom:18px;box-shadow:0 1px 3px rgba(16,23,38,.05)}
.card h3{font-size:14px;color:var(--navy);margin-bottom:12px;display:flex;justify-content:space-between;align-items:center}
.grid2{display:grid;grid-template-columns:1.3fr 1fr;gap:18px}@media(max-width:900px){.grid2{grid-template-columns:1fr}}
.grid2>*,.grid2.grid-esit>*{min-width:0}
.chart-wrap{position:relative;height:300px;width:100%;overflow:hidden}
.grid2 .ui-kart-bas .note{min-width:0;white-space:normal;overflow-wrap:anywhere}
table{width:100%;border-collapse:collapse;font-size:12.5px}th,td{padding:7px 9px;border-bottom:1px solid var(--line);text-align:right}
th:first-child,td:first-child,th.l,td.l{text-align:left}th{color:var(--muted);font-size:10.5px;text-transform:uppercase}
tr:hover td{background:#FAFBFE}
.bar{height:7px;background:var(--line);border-radius:5px;overflow:hidden;min-width:64px;display:inline-block;vertical-align:middle}.bar>i{display:block;height:100%}
.cfchart{display:grid;gap:7px;margin-top:8px}.cfchart-row{display:grid;grid-template-columns:72px minmax(180px,1fr) 132px;gap:10px;align-items:center;font-size:12px}
.cfbar{display:grid;grid-template-columns:1fr 2px 1fr;align-items:center;height:12px}.cfbar .eksi,.cfbar .arti{height:9px;background:#F1F4F8;display:flex;align-items:stretch;overflow:hidden}.cfbar .eksi{justify-content:flex-end;border-radius:5px 0 0 5px}.cfbar .arti{justify-content:flex-start;border-radius:0 5px 5px 0}.cfbar .eksen{height:14px;background:var(--navy);opacity:.5}.cfbar i{display:block;height:100%}.cfay{font-weight:700;color:var(--muted)}.cftutar{text-align:right;font-weight:800}.cfmeta{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin:7px 0 13px}
.zbar{display:inline-flex;align-items:center;gap:8px;width:100%;max-width:230px}.zbar small{white-space:nowrap}
.kesinti{margin-top:12px;padding:10px 13px;background:#F7F9FD;border:1px solid var(--line);border-radius:9px;font-size:12.5px;line-height:1.9}
.kesinti .net{background:#E8F5E9;color:var(--green);font-weight:800;padding:3px 9px;border-radius:6px;white-space:nowrap}
.dokum{width:auto;min-width:340px}.dokum td{padding:6px 10px}.dokum tr.tot td{border-top:2px solid var(--navy);font-weight:800;font-size:14px}
.tag{padding:2px 8px;border-radius:6px;font-size:11px;font-weight:700}.over{background:#FDECEA;color:var(--red)}.warn{background:#FFF4E0;color:#9A6700}.ok{background:#E8F5E9;color:var(--green)}.pill{background:#EEF2FB;color:var(--blue)}.gray{background:#EEF0F4;color:#555}
.btn{background:var(--navy);color:#fff;border:none;padding:8px 14px;border-radius:8px;font-size:13px;cursor:pointer;text-decoration:none;display:inline-block}
.btn.sm{padding:5px 9px;font-size:12px}.btn.g{background:#6B7280}.btn.amber{background:var(--amber)}
input,select,textarea{padding:8px;border:1px solid var(--line);border-radius:8px;font-size:13px;font-family:inherit;width:100%;background:#fff}
.form{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;align-items:end}
.form label{display:block;font-size:12px;color:var(--muted);font-weight:600;margin-bottom:4px}
.flash{background:#E8F5E9;color:#1B5E20;border:1px solid #A5D6A7;padding:10px 14px;border-radius:8px;margin-bottom:14px;font-size:13px}
.login{max-width:350px;margin:8vh auto;background:#fff;border:1px solid var(--line);border-radius:14px;padding:28px}
.login h1{text-align:center;margin-bottom:6px}.login .sub{text-align:center}.login input{margin-bottom:12px}
.right{display:flex;justify-content:flex-end;gap:8px;margin-bottom:12px;flex-wrap:wrap}small.note{color:var(--muted)}
.proj-badge{font-size:11px;background:#EEF2FB;color:var(--blue);padding:2px 9px;border-radius:20px;font-weight:600}
.dikkat a{display:flex;gap:10px;align-items:baseline;padding:9px 6px;border-bottom:1px solid var(--line);text-decoration:none;color:inherit;font-size:13px;line-height:1.5}
.dikkat a:last-child{border-bottom:none}.dikkat a:hover{background:#FAFBFE}
/* SAHA S3 — ortak taşma kökü (Q1/Q2/Q6): kart/panel İÇİNDEKİ geniş tablo .tablosar
   sarmalayıcısında yatay kayar. <details> elemanı üzerinde overflow güvenilir scroll
   konteyneri DEĞİLDİR (profiller matrisi Q1'in kök nedeni) — sarmalayıcı düz div olmalı.
   Hücreler nowrap: kaydırma net çalışır, segment kontrolleri sıkışıp kırpılmaz.
   fieldset{min-width:0} + img,svg{max-width:100%} önleyici (Q6, klasik taşma sınıfları). */
.tablosar{overflow-x:auto;max-width:100%}
.tablosar td{white-space:nowrap}
.tablosar .seg{flex-wrap:nowrap}
fieldset{min-width:0}
img,svg{max-width:100%}
/* B6 — mobil / şantiye: dar ekranda tablolar kart içinde yatay kayar, ilk kolon sabit */
@media(max-width:900px){
 .card{overflow-x:auto}
 .card table{min-width:640px}
 .card th:first-child,.card td:first-child{position:sticky;left:0;background:#fff;z-index:2}
 .card tr:hover td:first-child{background:#FAFBFE}
 /* SAHA S3: .tablosar içindeki tablo içeriği kadar geniştir ve ilk kolon yapışkan DEĞİLDİR —
    640px zorlaması + sticky kolon, dar tabloda (profiller matrisi) boş genişlik yaratıp
    kaydırılan hücreleri yapışkan kolonun altına gömüyordu (Q1'in ikinci yarısı). */
 .tablosar table{min-width:0}
 .tablosar th:first-child,.tablosar td:first-child{position:static}
 .btn.sm{min-height:40px}
 /* UX1 — dar ekran: yan menü gizli, ☰ hamburger (checkbox hack) ile açılır çekmece */
 .yanmenu{display:none}
 .burger{display:inline-flex}
 .mtoggle{display:none}
 .marka-logo-ust{width:145px}
 #menuac:checked ~ .yerlesim .yanmenu{display:block;position:fixed;top:52px;left:0;bottom:0;z-index:20;box-shadow:6px 0 22px rgba(0,0,0,.35);min-height:0}
 .yanmenu a{min-height:44px;line-height:24px}
}
@media(max-width:600px){.form{grid-template-columns:1fr}}
@media(max-width:600px){.cfchart-row{grid-template-columns:58px minmax(130px,1fr) 96px;gap:6px}.cftutar{font-size:11px}.cfmeta{align-items:flex-start}}
/* UX2 — Profiller: segment kontrolü + profil accordion'u + sticky kaydet çubuğu */
.seg{display:inline-flex;flex-wrap:wrap;border:1px solid var(--line);border-radius:8px;overflow:hidden;vertical-align:middle}
.seg input{position:absolute;opacity:0;width:1px;height:1px}
.seg label{padding:7px 13px;font-size:12px;font-weight:700;cursor:pointer;color:var(--muted);background:#fff;border-right:1px solid var(--line);min-width:44px;text-align:center;transition:.12s}
.seg label:last-of-type{border-right:none}
.seg input:checked+label{background:var(--navy);color:#fff}
.seg input:focus-visible+label{outline:3px solid var(--amber);outline-offset:-3px}
details.paccord{padding:0}
details.paccord>summary{cursor:pointer;padding:14px 16px;font-size:14.5px;font-weight:800;color:var(--navy);display:flex;align-items:center;gap:10px;list-style:revert}
details.paccord>summary:focus-visible{outline:3px solid var(--amber);outline-offset:-3px;border-radius:14px}
details.paccord>.picerik{padding:0 16px 14px}
tr.grpbaslik td{background:#F3F6FC;color:var(--navy);font-weight:800;font-size:11px;text-transform:uppercase;letter-spacing:.4px;padding:8px 9px}
.ozelyetki{display:grid;gap:8px;margin:10px 0}
.ozelyetki label{display:flex;gap:9px;align-items:baseline;font-size:13px;line-height:1.5}
.ozelyetki input[type=checkbox]{width:auto;flex:0 0 auto;position:relative;top:2px}
.kaydetbar{position:sticky;bottom:0;background:#fff;border-top:2px solid var(--line);padding:10px 2px;display:flex;gap:14px;align-items:center;z-index:5;border-radius:0 0 14px 14px}
.kaydetbar .degisim{flex:1;min-width:0;font-size:12.5px;color:var(--muted)}
.kaydetbar .degisim.var{color:#9A6700;font-weight:600}
.pbilgi{display:grid;grid-template-columns:minmax(220px,420px) minmax(220px,1fr);gap:14px;align-items:end;padding:12px 13px;margin:2px 0 14px;background:#F7F9FD;border:1px solid var(--line);border-radius:10px}
.pbilgi label{display:grid;gap:5px;font-size:11.5px;color:var(--muted);font-weight:800}.pbilgi small{color:var(--muted);font-size:11.5px;line-height:1.5}
.psil,.psil-bilgi{margin-top:13px;padding:11px 12px;border:1px solid #F1CBC8;background:#FFF8F7;border-radius:9px;font-size:12px}.psil{display:flex;align-items:center;justify-content:space-between;gap:12px}.psil>div{display:grid;gap:3px}.psil small,.psil-bilgi{color:#82514D}.psil-bilgi{border-color:var(--line);background:#F7F9FD;color:var(--muted)}
@media(max-width:720px){.pbilgi{grid-template-columns:1fr}.psil{align-items:flex-start;flex-direction:column}.psil form,.psil button{width:100%}}
/* Kullanıcılar — taranabilir tek satır + tıklanınca yönetim kartı. */
.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
.ulist{display:grid;gap:9px}.ucard{background:#fff;border:1px solid var(--line);border-radius:13px;box-shadow:0 1px 2px rgba(14,23,38,.04);overflow:hidden}
.ucard>summary{display:grid;grid-template-columns:38px minmax(155px,1.05fr) minmax(220px,1.7fr) auto 18px;gap:11px;align-items:center;min-height:62px;padding:9px 13px;cursor:pointer;list-style:none;transition:background .14s,border-color .14s}
.ucard>summary::-webkit-details-marker{display:none}.ucard>summary:hover{background:#F8FAFD}.ucard>summary:focus-visible{outline:3px solid var(--amber);outline-offset:-3px}.ucard[open]>summary{background:#F3F6FC;border-bottom:1px solid var(--line)}
.uavatar{width:36px;height:36px;border-radius:10px;display:grid;place-items:center;background:var(--navy);color:#fff;font-size:12px;font-weight:900;letter-spacing:.5px;box-shadow:inset 0 -2px 0 rgba(245,162,1,.7)}
.ukimlik{min-width:0}.ukimlik b,.ukimlik small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ukimlik b{font-size:13.5px;color:var(--navy)}.ukimlik small{font-size:11.5px;color:var(--muted);margin-top:2px}
.urozet,.udurum{display:flex;align-items:center;gap:6px;min-width:0;white-space:nowrap;overflow:hidden}.udurum{justify-content:flex-end}.umeta{max-width:205px;overflow:hidden;text-overflow:ellipsis;font-size:11.5px;color:#44506a}.umeta.eksik{color:#7A5200}.uchip{display:inline-flex;align-items:center;padding:4px 8px;border:1px solid #D8E0EE;border-radius:7px;background:#F7F9FC;color:#42506b;font-size:10.8px}.uchip.yon{border-color:#B9C8E6;background:#EDF3FF;color:#244F9E}.uchip.yok{border-color:#F1D5A8;background:#FFF8EC;color:#946000}.uac{font-size:16px;color:#7A879E;transition:transform .15s}.ucard[open] .uac{transform:rotate(180deg)}
.ukart-icerik{padding:18px;background:linear-gradient(180deg,#fff,#FBFCFE)}.ukart-bas{display:flex;justify-content:space-between;gap:15px;align-items:start;padding:0 2px 14px}.ukart-bas h2{font-size:21px;color:var(--navy);margin:2px 0}.ukart-bas p{font-size:12px;color:var(--muted)}.ueyebrow{font-size:10px;font-weight:900;letter-spacing:1px;text-transform:uppercase;color:var(--blue)}.ustatus{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.ukart-grid{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(300px,.75fr);gap:13px}.upan{border:1px solid var(--line);border-radius:11px;padding:14px;background:#fff;min-width:0}.upan>h3,.utehlike h3{font-size:13px;color:var(--navy);margin:0 0 4px}.upan-sub{font-size:11.5px;color:var(--muted);margin-bottom:13px;line-height:1.45}
.uproje-list{display:grid;gap:7px}.uproje{display:grid;grid-template-columns:minmax(135px,1fr) minmax(175px,1.2fr) minmax(90px,.7fr);gap:9px;align-items:center;padding:8px 9px;background:#F8FAFD;border:1px solid #ECF0F6;border-radius:9px}.uproje>div b,.uproje>div span{display:block}.uproje>div b{font-size:11px;color:var(--blue)}.uproje>div span{font-size:12px;font-weight:700;color:var(--navy);margin-top:2px}.uproje select{padding:6px 8px}.uproje small{text-align:right;color:var(--muted);font-size:10.5px}.ukart-alt{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap;margin-top:11px}.ukart-alt small{margin-right:auto;color:var(--muted)}.uyetki-tam{display:grid;gap:4px;padding:13px;border-left:3px solid var(--amber);background:#FFF9ED;border-radius:8px;font-size:12px}.uyetki-tam span{color:#6D5B38;line-height:1.5}
.uform{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:7px;align-items:end;margin-top:12px}.uform label{display:grid;gap:4px;font-size:11.5px;color:var(--muted);font-weight:700}.uform small{grid-column:1/-1;color:var(--muted);font-size:10.5px}.ukimlik-satir{display:flex;justify-content:space-between;gap:15px;padding:7px 0;border-bottom:1px solid #EDF0F5;font-size:12px}.ukimlik-satir span{color:var(--muted)}.ukimlik-satir b{text-align:right;color:var(--navy)}.ubolucu{height:1px;background:var(--line);margin:15px 0}.utehlike{padding:10px;border:1px solid #F1CBC8;background:#FFF8F7;border-radius:9px}.udanger{background:var(--red)!important}.unew{padding:0}.unew>summary{cursor:pointer;padding:13px 16px;font-weight:800;color:var(--navy);list-style:none}.unew>summary::-webkit-details-marker{display:none}.unew>.picerik{padding:0 16px 16px}
@media(max-width:1050px){.ucard>summary{grid-template-columns:38px minmax(140px,1fr) minmax(180px,1.2fr) auto 18px}.umeta{display:none}.ukart-grid{grid-template-columns:1fr}}
@media(max-width:720px){.ucard>summary{grid-template-columns:38px minmax(0,1fr) auto 16px}.urozet{display:none}.udurum .pill{display:none}.ukart-icerik{padding:13px}.ukart-bas{display:block}.ustatus{justify-content:flex-start;margin-top:9px}.uproje{grid-template-columns:1fr}.uproje small{text-align:left}.uform{grid-template-columns:1fr}.ukart-alt{justify-content:stretch}.ukart-alt .btn{flex:1;text-align:center}}
/* Kullanılabilirlik turu — rahat okuma, belirgin odak, kontrollü mobil üst bar. */
body{font-size:14px;line-height:1.45}
a{color:#214F9F}a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible{outline:3px solid var(--amber);outline-offset:2px}
.ustbar{min-height:64px;padding:8px 16px;gap:10px;flex-wrap:nowrap}
.yanmenu{top:64px;max-height:calc(100vh - 64px);min-height:calc(100vh - 64px)}
.yanmenu a{font-size:14px;min-height:44px;padding:11px 12px}.yanmenu summary{font-size:11px}
.nav-tools,.nav-account{display:flex;align-items:center;gap:9px}.nav-tools{min-width:0}.nav-account{margin-left:auto;flex:0 0 auto}
.nav-search{width:190px!important;min-height:40px!important}.psel{margin-left:0}.psel select{min-height:40px;font-size:13px}
.who{margin-left:0;color:#fff;font-size:13px;position:relative}.usernav>summary{display:flex;align-items:center;gap:7px;min-height:42px;padding:6px 10px;border-radius:9px;cursor:pointer;list-style:none;background:rgba(255,255,255,.07)}
.usernav>summary::-webkit-details-marker{display:none}.usernav>summary::after{content:'▾';color:#aab7d2;font-size:10px}.usernav[open]>summary{background:rgba(255,255,255,.13)}
.usernav-menu{position:absolute;right:0;top:calc(100% + 7px);width:205px;padding:7px;background:#fff;border:1px solid var(--line);border-radius:11px;box-shadow:0 14px 35px rgba(14,23,38,.22);display:grid;z-index:30}
.usernav-menu a{color:var(--navy);text-decoration:none;padding:10px 11px;border-radius:7px;font-weight:650}.usernav-menu a:hover{background:#F1F4FA}.usernav-menu a.cikis{color:var(--red);border-top:1px solid var(--line);border-radius:0;margin-top:4px}
.bell{display:grid;place-items:center;min-width:42px;min-height:42px;margin:0;border-radius:9px;background:rgba(255,255,255,.07)}
.wrap{margin:26px auto;padding:0 22px}.crumb{font-size:13px;margin-bottom:12px}
h1{font-size:24px;line-height:1.25;margin-bottom:5px}.sub{font-size:14px;line-height:1.55}.card h3{font-size:16px}
table{font-size:13.5px}th{font-size:11.5px}th,td{padding:9px 10px}
.btn{min-height:40px;padding:9px 15px;font-size:13.5px;font-weight:700;line-height:20px}.btn.sm{min-height:36px;padding:7px 11px;font-size:12.5px}
input,select,textarea{min-height:42px;padding:9px 10px;font-size:14px}.form label{font-size:13px}.tag{font-size:11.5px;padding:3px 8px}
.login{max-width:430px;padding:34px;margin:7vh auto}.login .btn{min-height:46px}.login input{margin-bottom:14px}
/* LOGIN_UX §2: göz ikonlu parola alanı · §3: alan-altı geri bildirim */
.pw-sar{position:relative;display:block}.pw-sar input{width:100%;padding-right:42px;box-sizing:border-box}
.pw-goz{position:absolute;right:3px;top:50%;transform:translateY(-50%);border:0;background:transparent;cursor:pointer;font-size:16px;line-height:1;padding:6px 8px;min-height:0}
.pw-goz:focus-visible{outline:2px solid var(--blue,#2563eb);border-radius:6px}
.alan-hata{display:block;margin:2px 0 10px;padding:5px 9px;border-radius:6px;font-size:12.5px;line-height:1.45;color:#C62828;background:#FDECEA}
.alan-ok{display:block;margin:2px 0 10px;padding:5px 9px;border-radius:6px;font-size:12.5px;line-height:1.45;color:#1B7F3B;background:#E6F4EA}
input.alan-invalid,input[aria-invalid=true]{border-color:#C62828}
.login .pw-sar input{margin-bottom:0}.login .pw-sar{margin-bottom:14px}.login .pw-sar+.alan-hata,.login .pw-sar+.alan-ok{margin-top:-10px}
/* DOGRULAMA_UI: ortak doğrulama kartı (giriş kodu / step-up / TOTP) */
input.kod-girisi{font-size:30px;letter-spacing:.5em;text-indent:.5em;text-align:center;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;min-height:56px;font-weight:700;width:100%;box-sizing:border-box}
.kod-bant{background:#E6F4EA;color:#1B7F3B;border:1px solid #A5D6A7;border-radius:8px;padding:7px 11px;font-size:13px;text-align:center;margin-bottom:14px}
.ydn-form{margin:0}.ydn-duz{background:none;border:0;color:var(--blue);cursor:pointer;padding:0;min-height:0;font-size:13px;text-decoration:underline}
.ydn-satir{margin:12px 0 0;text-align:center;font-size:13px;color:var(--muted)}
.ydn-link{font-weight:700}.ydn-link.pasif,.ydn-link[aria-disabled=true]{color:var(--muted);pointer-events:none;text-decoration:none;font-weight:600}
.ydn-link.vurgu{background:#FFF5E3;padding:2px 8px;border-radius:6px;font-weight:800}
.guven-kutu{display:flex;gap:8px;align-items:flex-start;margin:2px 0 12px;font-weight:normal;font-size:13.5px;line-height:1.45}
.guven-kutu input{width:auto;min-height:0;margin:3px 0 0}
.alan-uyari{color:#825700;background:#FFF5E3}
/* P-2: bütçe formunda poz seçicinin arşiv satırı (yalnız arsiv_gorebilir) */
.poz-arsiv{display:block;margin-top:4px;font-variant-numeric:tabular-nums}.poz-arsiv:empty{display:none}
.alt-not{margin-top:12px;text-align:center;line-height:1.45}.alt-donus{margin-top:12px;text-align:center}
@media(max-width:480px){.login{max-width:100%;margin:12px auto;padding:16px}input.kod-girisi{font-size:24px}}
.flash-stack{display:grid;gap:9px;margin-bottom:16px}.flash{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin:0;padding:12px 14px;font-size:14px;line-height:1.5}
.flash.success{background:#E8F5E9;color:#1B5E20;border-color:#A5D6A7}.flash.danger{background:#FDECEA;color:#8E1B1B;border-color:#F2B8B5}.flash.warning,.flash.warn{background:#FFF5E3;color:#825700;border-color:#F0D39C}.flash.message{background:#EDF3FF;color:#244F9E;border-color:#B9CBEF}
.flash-close{border:0;background:transparent;color:inherit;font-size:20px;line-height:1;cursor:pointer;padding:0;min-width:26px;min-height:26px;opacity:.7}.flash-close:hover{opacity:1}
.disclosure{padding:0;overflow:hidden}.disclosure>summary,.psub>summary,.quickform>summary{cursor:pointer;list-style:none;color:var(--navy);font-weight:800;display:flex;align-items:center;justify-content:space-between;gap:12px}
.disclosure>summary{padding:16px}.disclosure>summary::-webkit-details-marker,.psub>summary::-webkit-details-marker,.quickform>summary::-webkit-details-marker{display:none}
.disclosure>summary::after,.psub>summary::after,.quickform>summary::after{content:'Göster ▾';font-size:12px;color:var(--blue);font-weight:700}.disclosure[open]>summary::after,.psub[open]>summary::after,.quickform[open]>summary::after{content:'Gizle ▴'}
.disclosure>.picerik{padding:0 16px 16px}.disclosure>.picerik>.sub{margin-top:-3px}
.quick-actions{display:flex;gap:9px;flex-wrap:wrap;margin:-5px 0 18px}.quick-actions .btn{background:#fff;color:var(--navy);border:1px solid #CBD5E5;box-shadow:0 1px 2px rgba(14,23,38,.04)}.quick-actions .btn.primary{background:var(--navy);color:#fff;border-color:var(--navy)}a.terim{color:inherit;text-decoration:underline dotted;text-underline-offset:2px}.quick-actions .panel-duzenle{margin-left:auto;align-self:center;color:#64748B;font-size:12.5px;text-decoration:none;white-space:nowrap}.quick-actions .panel-duzenle:hover{text-decoration:underline}
.psub{border-top:1px solid var(--line);margin-top:14px}.psub>summary{padding:14px 2px}.psub>.picerik{padding:0 2px 6px}.psub .note{line-height:1.5}
.quickform{padding:0;scroll-margin-top:82px}.quickform>summary{padding:16px;font-size:16px}.quickform>.picerik{padding:0 16px 16px;border-top:1px solid var(--line)}
.field-help{display:block;color:var(--muted);font-size:12px;margin:5px 0 0;line-height:1.4}.select-search{margin-bottom:7px;background:#FAFBFE}
.empty-help{padding:18px;text-align:center;color:var(--muted)}
.help-disclosure{margin:-7px 0 16px;color:var(--muted)}.help-disclosure>summary{cursor:pointer;color:var(--blue);font-weight:700}.help-disclosure>.picerik{padding:9px 0 0;font-size:13px;line-height:1.55}
@media(max-width:900px){
 .ustbar{display:grid;grid-template-columns:auto minmax(0,1fr) auto;min-height:64px;padding:7px 10px;gap:7px 9px}
 .brand{margin:0}.marka-logo-ust{width:min(145px,38vw)}.nav-account{margin:0;justify-self:end;grid-column:3;grid-row:1}.nav-tools{grid-column:1/-1;grid-row:2;width:100%;display:grid;grid-template-columns:minmax(120px,1fr) minmax(145px,1fr);gap:8px}.nav-tools .psel{width:100%}.nav-search,.nav-tools select{width:100%!important}
 .yanmenu{top:112px}.usernav-role{display:none}.usernav-menu{position:fixed;right:10px;top:58px}.wrap{margin:18px auto;padding:0 13px}
 h1{font-size:22px}.hero{padding:18px}.hero h1{font-size:20px}.kpis{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.kpi{padding:12px}.kpi .v{font-size:18px}
 .btn,.btn.sm{min-height:42px}.card{padding:14px}.disclosure{padding:0}.quickform{padding:0}
}
@media(max-width:430px){.usernav-name{display:none}.ibtn{width:36px;height:36px}.brand .erp{display:none}.kpis{grid-template-columns:1fr 1fr}.hero .meta{font-size:12px}.right{justify-content:stretch}.right .btn{flex:1;text-align:center}}
/* B8 — yazdırma: nav/düğme/form/filtre gizli, kartlar kenarlıksız tam genişlik */
.print-head{display:none}
@media print{
 /* UX1: üst bar + yan menü + hamburger + breadcrumb yazdırmada gizli */
 .ustbar,.yanmenu,.burger,.crumb,.btn,button,form,.right,.psel,.flash,.ui-bant,.ui-toast{display:none!important}
 .yerlesim{display:block}
 /* SAHA S3: kaydırmalı tablo sarmalayıcıları yazdırmada açılır — tablo kesilmesin */
 .tablosar,.butcewrap{overflow:visible!important;max-height:none!important}
 body{background:#fff}
 .wrap{max-width:none;margin:0;padding:0}
 .card{border:none;box-shadow:none;border-radius:0;padding:6px 0;page-break-inside:avoid}
 .kpi{box-shadow:none}
 .hero{background:#fff;color:#000;box-shadow:none;padding:0 0 8px}
 .hero h1,.hero .meta{color:#000}
 .print-head{display:block;font-size:15px;font-weight:800;color:#000;margin:0 0 12px;border-bottom:2px solid #000;padding-bottom:6px}
}

/* ==== UI-0 bileşen sınıfları (DESIGN_SYSTEM §3 — ui_* Python yardımcıları) ====
   Yeni ekran kodu YALNIZ bu bileşenlerle yazılır; inline style yasak.
   Mevcut ekranlar UI-1/2/3 paketlerinde bu sınıflara geçirilecek. */
.ui-ikon{display:inline-block;vertical-align:-2px;flex:0 0 auto}
/* kart */
.ui-kart{background:var(--n0);border:1px solid var(--n200);border-radius:var(--r-md);box-shadow:var(--golge-1);padding:var(--s4);margin-bottom:var(--s4)}
.ui-kart-bas{display:flex;align-items:center;justify-content:space-between;gap:var(--s3);margin-bottom:var(--s3)}
.ui-kart-bas h3{font-size:var(--t-md);font-weight:600;color:var(--n900);margin:0}
.ui-kart-eylem{display:flex;align-items:center;gap:var(--s2);flex-wrap:wrap}
.ui-kart-alt{margin-top:var(--s3);color:var(--n500);font-size:var(--t-sm)}
/* kpi */
.ui-kpi{display:grid;align-content:start;gap:var(--s1);background:var(--n0);border:1px solid var(--n200);border-radius:var(--r-md);padding:var(--s4);box-shadow:var(--golge-1);text-decoration:none;color:inherit;min-width:0}
a.ui-kpi{transition:box-shadow .15s ease-out}
a.ui-kpi:hover{box-shadow:var(--golge-2)}
.ui-kpi-etiket{font-size:var(--t-xs);font-weight:600;text-transform:uppercase;letter-spacing:.3px;color:var(--n500)}
.ui-kpi-deger{font-size:var(--t-xl);font-weight:600;color:var(--n900);line-height:1.2;white-space:nowrap}
.ui-kpi-egilim{font-size:var(--t-xs);color:var(--n600)}
.ui-kpi-alt{font-size:var(--t-xs);color:var(--n500)}
.ui-kpi.k-ok .ui-kpi-deger{color:var(--ok)}
.ui-kpi.k-uyari .ui-kpi-deger{color:var(--uyari)}
.ui-kpi.k-hata .ui-kpi-deger{color:var(--hata)}
.ui-kpi.k-bilgi .ui-kpi-deger{color:var(--bilgi)}
/* rozet — durum→renk sözlüğü app.py'de TEK yerde (UI_ROZET_RENK) */
.ui-rozet{display:inline-flex;align-items:center;gap:var(--s1);padding:2px var(--s2);border-radius:var(--r-sm);font-size:var(--t-xs);font-weight:600;line-height:1.45;white-space:nowrap}
.ui-rozet.r-ok{color:var(--ok);background:var(--ok-z);border:1px solid var(--ok-k)}
.ui-rozet.r-uyari{color:var(--uyari);background:var(--uyari-z);border:1px solid var(--uyari-k)}
.ui-rozet.r-hata{color:var(--hata);background:var(--hata-z);border:1px solid var(--hata-k)}
.ui-rozet.r-bilgi{color:var(--bilgi);background:var(--bilgi-z);border:1px solid var(--bilgi-k)}
.ui-rozet.r-notr{color:var(--n600);background:var(--n100);border:1px solid var(--n200)}
/* tablo — tutar sütunu tabular + sağa dayalı; ≤640px kart görünümü */
.ui-tablo{overflow-x:auto;max-width:100%}
.ui-tablo table{width:100%;border-collapse:collapse;font-size:var(--t-sm)}
.ui-tablo th{color:var(--n500);font-size:var(--t-xs);text-transform:uppercase;font-weight:600;text-align:left;padding:var(--s2) var(--s3);border-bottom:1px solid var(--n200)}
.ui-tablo td{padding:var(--s2) var(--s3);border-bottom:1px solid var(--n100);text-align:left}
.ui-tablo tr:hover td{background:var(--n50)}
.ui-tablo .h-sag{text-align:right}
.ui-tablo .t-tutar{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.ui-tablo .t-tarih{white-space:nowrap}
.ui-tablo .s-ad{min-width:170px}
@media(max-width:640px){.ui-tablo .s-ad{min-width:0}}
@media(max-width:640px){.ui-tablo .t-tutar,.ui-tablo .t-tarih{white-space:normal}}
.ui-tablo.yogun th,.ui-tablo.yogun td{padding:var(--s1) var(--s2)}
@media(max-width:640px){
 .ui-tablo table,.ui-tablo tbody,.ui-tablo tr,.ui-tablo td{display:block}
 .ui-tablo thead{display:none}
 .ui-tablo tr{border:1px solid var(--n200);border-radius:var(--r-sm);margin-bottom:var(--s2);padding:var(--s2) var(--s3);background:var(--n0)}
 .ui-tablo tr:hover td{background:var(--n0)}
 .ui-tablo td{display:flex;justify-content:space-between;gap:var(--s3);border:0;text-align:right;padding:var(--s1) 0}
 .ui-tablo td::before{content:attr(data-etiket);color:var(--n500);font-size:var(--t-xs);text-align:left;flex:0 0 auto}
}
/* form — tek sütun ≤640px, üstünde iki sütun; sabit alt eylem çubuğu */
.ui-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--s3) var(--s4);align-items:start}
@media(max-width:640px){.ui-form{grid-template-columns:1fr}}
.ui-alan{display:grid;gap:var(--s1);min-width:0}
.ui-alan-etiket{font-size:var(--t-sm);font-weight:500;color:var(--n600)}
.ui-alan.g-kisa{max-width:160px}
.ui-alan.g-orta{max-width:280px}
.ui-alan.g-tam{grid-column:1/-1}
.ui-form-bolum{grid-column:1/-1;font-size:var(--t-md);font-weight:600;color:var(--n900);margin:var(--s2) 0 0}
.ui-form-bolum:first-child{margin-top:0}
.ui-alan textarea{min-height:84px}
.ui-tablo tr.ui-satir{cursor:pointer}
.ui-form-eylem{position:sticky;bottom:0;display:flex;justify-content:flex-end;gap:var(--s2);align-items:center;background:var(--n0);border-top:1px solid var(--n200);padding:var(--s3) var(--s1);margin-top:var(--s4);z-index:5}
[hidden]{display:none!important}
.cek-alanlari{grid-column:1/-1}
.prkalem{border:1px solid var(--n200);border-radius:var(--r-md);padding:var(--s4);margin:0 0 var(--s3);background:var(--n0)}
.prkalem-alt{display:flex;justify-content:flex-end;margin-top:var(--s3)}
.prkalem-ekle{margin-bottom:var(--s4)}
.talep-proje{display:grid;gap:var(--s1);min-width:0}
.talep-proje select{width:100%}
.cek-alanlari .ui-form{margin:0}
/* ⋯ satır işlem menüsü — <details>, JS'siz açılır kapanır */
.ui-menu{position:relative;display:inline-block}
.ui-menu>summary{list-style:none;cursor:pointer;width:32px;height:32px;display:grid;place-items:center;border:1px solid var(--n300);border-radius:var(--r-sm);background:var(--n0);color:var(--n600)}
.ui-menu>summary::-webkit-details-marker{display:none}
.ui-menu>summary:hover{background:var(--n50);color:var(--n900)}
.ui-menu-govde{position:absolute;right:0;top:calc(100% + 4px);z-index:30;min-width:196px;display:grid;gap:2px;padding:var(--s1);background:var(--n0);border:1px solid var(--n200);border-radius:var(--r-sm);box-shadow:var(--golge-2)}
.ui-menu-oge{display:flex;align-items:center;gap:var(--s2);width:100%;padding:8px 10px;border:0;border-radius:var(--r-sm);background:transparent;color:var(--n800);font:inherit;font-size:var(--t-sm);text-align:left;text-decoration:none;cursor:pointer;min-height:36px;white-space:nowrap}
.ui-menu-oge:hover{background:var(--n100);text-decoration:none}
.ui-menu-oge.tehlike{color:var(--hata)}
.ui-menu-oge.tehlike:hover{background:var(--hata-z)}
.ui-menu-govde form{margin:0}
/* yıkıcı işlem onayı — <dialog> + gerekçe (DS §4) */
.ui-onay{width:min(440px,calc(100vw - 2*var(--s4)));padding:0;border:1px solid var(--n200);border-radius:var(--r-md);box-shadow:var(--golge-2);background:var(--n0);color:var(--n900);margin:auto}
.ui-onay::backdrop{background:rgba(14,23,38,.42)}
.ui-onay form{display:grid;gap:var(--s3);padding:var(--s5)}
.ui-onay h3{font-size:var(--t-md);font-weight:600;margin:0}
.ui-onay p{margin:0;font-size:var(--t-sm);color:var(--n600);line-height:1.45}
.ui-onay-eylem{display:flex;justify-content:flex-end;gap:var(--s2);flex-wrap:wrap}
/* UI-3a c15: ui_onay() — JS'siz düşüşte <details> açılır panel, JS'te <dialog> modal.
   Tetikleyici <summary> bir düğme gibi görünür (list-style yok, odak halkası var). */
.ui-onay-sar{display:inline-block;position:relative}
.ui-onay-sar>summary{list-style:none;cursor:pointer;display:inline-flex;align-items:center;gap:6px;white-space:nowrap}
.ui-onay-sar>summary::-webkit-details-marker{display:none}
.ui-onay-sar>summary:focus-visible{outline:3px solid var(--amber);outline-offset:2px}
.ui-onay-sar>.ui-onay-ic{position:absolute;right:0;top:calc(100% + var(--s1));z-index:40;
  width:min(420px,calc(100vw - 2*var(--s4)));background:var(--n0);border:1px solid var(--n200);
  border-radius:var(--r-md);box-shadow:var(--golge-2);text-align:left}
.ui-onay-sar>.ui-onay-ic .ui-onay-form{display:grid;gap:var(--s3);padding:var(--s4)}
.ui-onay-sar>.ui-onay-ic h3{font-size:var(--t-md);font-weight:600;margin:0;color:var(--n900)}
.ui-onay-sar>.ui-onay-ic p{margin:0;font-size:var(--t-sm);color:var(--n600);line-height:1.45}
.ui-onay .ui-onay-form{display:grid;gap:var(--s3);padding:var(--s5);margin:0}
@media(max-width:640px){.ui-onay-sar>.ui-onay-ic{position:static;width:auto}}
.btn.tehlike-dolu{background:var(--hata);color:var(--n0)}
.btn.onay-dolu{background:var(--ok);color:var(--n0)}
.btn.notr-dolu{background:var(--n500);color:var(--n0)}
.btn[disabled]{opacity:.55;cursor:not-allowed}
/* UI-2 c12: inline stil yerine ölçü yardımcıları (DS §1 ızgarası) */
.f-inline{display:inline}
.sec-dar{width:auto;display:inline-block}
.ust-s1{margin-top:var(--s1)}
.ust-s2{margin-top:var(--s2)}
.ust-s3{margin-top:var(--s3)}
.ust-s4{margin-top:var(--s4)}
/* boş durum */
.ui-bos{padding:var(--s6) var(--s4);text-align:center;color:var(--n500);display:grid;gap:var(--s2);justify-items:center}
.ui-bos b{color:var(--n700);font-size:var(--t-md)}
.ui-bos p{margin:0;font-size:var(--t-sm);line-height:1.45}
.ui-bos-eylem{margin-top:var(--s2)}
/* toast — sağ alt, 4 sn, Esc/× kapatır (erp.js); JS'siz düşüş ui_bant */
.ui-toast{position:fixed;right:var(--s4);bottom:var(--s4);z-index:60;display:flex;align-items:center;gap:var(--s3);max-width:min(420px,calc(100vw - 2*var(--s4)));background:var(--n800);color:var(--n0);border-radius:var(--r-sm);box-shadow:var(--golge-2);padding:var(--s3) var(--s4);font-size:var(--t-sm);line-height:1.45}
.ui-toast.t-ok{border-left:3px solid var(--ok)}
.ui-toast.t-uyari{border-left:3px solid var(--uyari)}
.ui-toast.t-hata{border-left:3px solid var(--hata)}
.ui-toast.t-bilgi{border-left:3px solid var(--bilgi)}
.ui-toast-geri{color:var(--n0);font-weight:600;text-decoration:underline}
.ui-toast-kapat{border:0;background:transparent;color:inherit;font-size:var(--t-lg);line-height:1;cursor:pointer;padding:0;min-width:26px;min-height:26px;opacity:.75}
.ui-toast-kapat:hover{opacity:1}
@media(prefers-reduced-motion:no-preference){.ui-toast{animation:ui-toast-gir .15s ease-out}}
@keyframes ui-toast-gir{from{transform:translateY(var(--s2));opacity:0}to{transform:none;opacity:1}}
/* bant — sayfa içi kalıcı bilgi/uyarı şeridi (flash'ın kalıcı hali) */
.ui-bant{display:flex;align-items:flex-start;gap:var(--s2);padding:var(--s3) var(--s4);border-radius:var(--r-sm);font-size:var(--t-sm);line-height:1.45;margin-bottom:var(--s3)}
.ui-bant.t-ok{color:var(--ok);background:var(--ok-z);border:1px solid var(--ok-k)}
.ui-bant.t-uyari{color:var(--uyari);background:var(--uyari-z);border:1px solid var(--uyari-k)}
.ui-bant.t-hata{color:var(--hata);background:var(--hata-z);border:1px solid var(--hata-k)}
.ui-bant.t-bilgi{color:var(--bilgi);background:var(--bilgi-z);border:1px solid var(--bilgi-k)}
/* UI-4a c23: veri sorunu bandının eylem ucu — bağlantı bant rengini alır, sağa yaslanır */
.ui-bant-eylem{margin-left:auto;white-space:nowrap;padding-left:var(--s3)}
.ui-bant-eylem a{color:inherit;font-weight:600}

/* ==== UI-1 kabuk (ARAYUZ_UI0_BRIEF §4 — maketlerin ortak üst barı + yan menüsü) ====
   Kurallar: değer yok, token var; eski sınıf adları (ustbar/yanmenu/nav-tools/nav-account)
   korunur — yalnız görünüm maketlere çekilir. */
.ustbar{background:var(--marka);min-height:52px;padding:4px var(--s4);gap:var(--s3)}
.burger,.mtoggle{color:rgba(255,255,255,.75)}
.burger:hover,.mtoggle:hover{color:#fff}
.cmdk{display:flex;align-items:center;gap:var(--s2);background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.14);border-radius:var(--r-sm);padding:0 10px;height:36px;flex:0 1 360px;min-width:0;color:rgba(255,255,255,.7)}
.cmdk .ui-ikon{flex:0 0 auto}
.cmdk .nav-search{flex:1 1 auto;width:100%!important;min-width:0;background:transparent;border:0;color:#fff;min-height:34px!important;padding:0;font-size:var(--t-sm)}
.cmdk .nav-search::placeholder{color:rgba(255,255,255,.6)}
.cmdk .nav-search:focus-visible{outline:none}
.cmdk:focus-within{box-shadow:var(--odak)}
.cmdk-kbd{flex:0 0 auto;font-family:inherit;font-size:11px;border:1px solid rgba(255,255,255,.25);border-radius:5px;padding:1px 6px;color:rgba(255,255,255,.7)}
.psel select{border-radius:var(--r-sm)}
/* UI-4b c27: proje seçici yanında 'Proje sayfası ›' — koyu üst barda nötr-açık; dar ekranda gizli */
.psel-360{align-self:center;margin-left:8px;color:var(--n0);opacity:.85;font-size:var(--t-sm);white-space:nowrap}
.psel-360:hover{opacity:1;color:var(--n0);text-decoration:none}
@media(max-width:1100px){.psel-360{display:none}}
.ibtn{position:relative;width:40px;height:40px;display:grid;place-items:center;border-radius:var(--r-sm);color:rgba(255,255,255,.85);background:rgba(255,255,255,.07)}
.ibtn:hover{background:rgba(255,255,255,.14);color:#fff}
.ibtn-rozet{position:absolute;top:2px;right:2px;min-width:16px;height:16px;border-radius:8px;background:var(--amber);color:var(--marka);font-size:10px;font-weight:700;display:grid;place-items:center;padding:0 4px;line-height:1}
.avatar{width:28px;height:28px;border-radius:var(--r-sm);background:var(--marka-2);border:1px solid rgba(255,255,255,.2);display:grid;place-items:center;font-size:11px;font-weight:700;color:#fff;flex:0 0 auto}
/* yan menü — maket: açık zemin, gruplu, aktif öğe vurgu zemininde, Onaylar sayacı amber */
.yanmenu{background:var(--n0);border-right:1px solid var(--n200);flex:0 0 220px;width:220px;padding:var(--s3) 10px 18px;top:52px;max-height:calc(100vh - 52px);min-height:calc(100vh - 52px)}
.yanmenu summary{color:var(--n400);font-size:11px;font-weight:600;letter-spacing:.8px}
.yanmenu a{display:flex;align-items:center;gap:10px;color:var(--n700);font-weight:500;font-size:var(--t-sm);border-left:0;border-radius:var(--r-sm);padding:9px 10px}
.yanmenu a:hover{color:var(--n900);background:var(--n100)}
.yanmenu a.on{color:var(--vurgu);background:var(--vurgu-zemin);font-weight:600}
.yanmenu a .ui-ikon{flex:0 0 auto}
.nav-ad{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.nav-sayac{margin-left:auto;background:var(--amber);color:var(--marka);font-size:11px;font-weight:700;border-radius:6px;padding:0 6px;line-height:18px}
@media(max-width:900px){
 .yanmenu{border-right:0;box-shadow:6px 0 22px rgba(14,23,38,.25)}
 .ustbar{min-height:56px}
 #menuac:checked ~ .yerlesim .yanmenu{top:104px}
}
/* içerik başlığı deseni: kırıntı + h1 + alt açıklama + SAĞDA birincil eylem alanı */
.icerik-bas{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--s4);margin-bottom:var(--s4);flex-wrap:wrap}
.icerik-bas h1{margin:0;font-size:24px;font-weight:600;color:var(--n900);letter-spacing:-.01em}
.icerik-alt{margin:2px 0 0;color:var(--n500);font-size:var(--t-sm)}
.icerik-alt code{overflow-wrap:anywhere;word-break:break-all}   /* G-7: kapanış hash'i dar ekranda taşmasın */
.icerik-eylem{display:flex;gap:var(--s2);align-items:center;flex-wrap:wrap}
/* düğme varyantları (maket): beyaz ikincil + kırmızı çerçeveli tehlike + yeşil onay */
.btn.beyaz{background:var(--n0);color:var(--n800);border:1px solid var(--n300)}
.btn.beyaz:hover{background:var(--n50)}
.btn.yesil{background:var(--ok);color:var(--n0)}
.btn.tehlike{background:var(--n0);color:var(--hata);border:1px solid var(--hata-k)}
.btn .ui-ikon{vertical-align:-3px}
/* toast alanı — erp.js bant'tan terfi ettirilen bildirimleri buraya yığar */
.ui-toast-alan{position:fixed;right:var(--s4);bottom:var(--s4);z-index:60;display:grid;gap:var(--s2);justify-items:end}
.ui-toast-alan .ui-toast{position:static}
/* UI-2-2 (KONTROL_UI2 şartı): sabit alt eylem çubuğu olan sayfalarda bildirim
   çubuğun ÜSTÜNDE durur — 4 sn boyunca Kaydet/Vazgeç'i örtmez. Gerçek yükseklik
   erp.js'te ResizeObserver ile --eylem-yuk'a yazılır; :has desteklenmeyen
   tarayıcıda erp.js body'ye .eylem-var sınıfını ekler (aynı kural). */
body:has(.ui-form-eylem) .ui-toast-alan,
body:has(.ui-form-eylem) .ui-toast,
body.eylem-var .ui-toast-alan,
body.eylem-var .ui-toast{bottom:calc(var(--eylem-yuk,72px) + var(--s4))}
.ui-bant .ui-toast-kapat{margin-left:auto;color:inherit}

/* ==== UI-2 komut paleti (⌘K / Ctrl+K / '/') — <dialog>, JS'siz düşüş üst bar formudur ==== */
/* global *{margin:0} sıfırlaması dialog'un kendi margin:auto'sunu ezer — açıkça geri veriyoruz */
.palet{width:min(640px,calc(100vw - 2*var(--s4)));max-width:none;padding:0;border:1px solid var(--n200);border-radius:var(--r-md);box-shadow:var(--golge-2);background:var(--n0);color:var(--n900);margin:10vh auto auto}
.palet::backdrop{background:rgba(14,23,38,.42)}
.palet-kapatform{position:absolute;width:0;height:0;overflow:hidden}
.palet-ust{display:flex;align-items:center;gap:var(--s3);padding:var(--s3) var(--s4);border-bottom:1px solid var(--n200);color:var(--n400)}
.palet-girdi{flex:1 1 auto;border:0;min-height:36px;padding:0;font-size:var(--t-md);background:transparent;color:var(--n900)}
.palet-girdi:focus-visible{outline:none}
.palet-ust:focus-within{box-shadow:inset 0 -2px 0 var(--vurgu)}
.palet-kbd{flex:0 0 auto;font-family:inherit;font-size:11px;border:1px solid var(--n300);border-radius:5px;padding:1px 6px;color:var(--n500)}
.palet-liste{max-height:min(52vh,420px);overflow-y:auto;padding:var(--s2)}
.palet-satir{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:2px var(--s3);align-items:baseline;padding:9px 10px;border-radius:var(--r-sm);text-decoration:none;color:inherit}
.palet-satir:hover,.palet-satir.on{background:var(--vurgu-zemin);text-decoration:none}
.palet-ad{font-weight:600;color:var(--n900);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.palet-alt{grid-column:1;font-size:var(--t-xs);color:var(--n500);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.palet-tur{grid-column:2;grid-row:1/span 2;align-self:center;font-size:var(--t-xs);color:var(--n500);background:var(--n100);border-radius:var(--r-sm);padding:2px var(--s2);white-space:nowrap}
.palet-alt-bar{padding:var(--s2) var(--s4);border-top:1px solid var(--n100);display:flex;justify-content:flex-end}
@media(max-width:640px){.palet{margin:var(--s4) auto auto}.palet-tur{display:none}}

/* ==== UI-1 panel (maket Panel: 'Sizi bekleyenler' şeridi + 4 büyük KPI + ikincil satır) ==== */
/* UI-4a c24a: dikkat maddeleri şeride kutu olarak katıldı — kutu sayısı değişken, auto-fit */
/* UI-4b c25 (KONTROL_UI4A Notlar-1): 280→260 — 4 kutu 3 sütuna düşüp 4.'nün tek sarkması önlenir */
.serit{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:var(--s3);margin-bottom:var(--s4)}
.serit-kutu{display:flex;align-items:center;gap:14px;padding:14px var(--s4);background:var(--n0);border:1px solid var(--n200);border-radius:var(--r-md);box-shadow:var(--golge-1);color:inherit;text-decoration:none;min-width:0}
.serit-kutu:hover{box-shadow:var(--golge-2);text-decoration:none}
.serit-kutu.s-vurgu{border-left:3px solid var(--amber)}
.serit-ikon{width:40px;height:40px;border-radius:10px;display:grid;place-items:center;flex:0 0 auto}
.serit-ikon.t-ok{background:var(--ok-z);color:var(--ok)}
.serit-ikon.t-uyari{background:var(--uyari-z);color:var(--uyari)}
.serit-ikon.t-hata{background:var(--hata-z);color:var(--hata)}
.serit-ikon.t-bilgi{background:var(--bilgi-z);color:var(--bilgi)}
.serit-metin{display:grid;gap:1px;min-width:0;flex:1}
.serit-etiket{font-size:var(--t-xs);color:var(--n500)}
.serit-deger{font-size:var(--t-lg);font-weight:600;color:var(--n900);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.serit-deger .serit-not{font-size:var(--t-xs);font-weight:500;color:var(--n500);margin-left:4px}
.serit-deger .serit-kotu{font-size:var(--t-xs);font-weight:600;font-style:normal;color:var(--hata);margin-left:4px}
.serit-kutu>.ui-ikon:last-child{color:var(--n400);flex:0 0 auto}
@media(max-width:900px){.serit{grid-template-columns:1fr}}
.kpi-buyuk{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--s3);margin-bottom:var(--s3)}
.kpi-ikincil{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:var(--s3);margin-bottom:var(--s4)}
/* UI-4a c24a: ikincil göstergeler varsayılan kapalı <details> içinde */
.kpi-tum{margin:0 0 var(--s4)}
.kpi-tum>summary{cursor:pointer;font-size:var(--t-sm);font-weight:600;color:var(--n600);padding:var(--s2) 0;width:fit-content}
.kpi-tum>summary:hover{color:var(--n900)}
.kpi-tum[open]>summary{margin-bottom:var(--s2)}
.kpi-ikincil .ui-kpi-deger{font-size:var(--t-lg)}
@media(max-width:900px){.kpi-buyuk{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:480px){.kpi-buyuk{grid-template-columns:1fr}}
/* mutabakat tablosu satır vurguları (eski inline style'ların sınıf hali) */
tr.satir-ok td{color:var(--ok)}
tr.satir-hata td{color:var(--hata);font-weight:700}
tr.satir-toplam td{font-weight:700}
.dikkat-bos{margin:-6px 0 14px}
.dikkat .ui-ikon{color:var(--n500)}

/* ==== UI-1 onay kutusu (maket OnayKutusu: sol liste + sağ detay) ==== */
.onay-yerlesim{display:grid;grid-template-columns:minmax(320px,480px) minmax(0,1fr);gap:var(--s4);align-items:start}
@media(max-width:1000px){.onay-yerlesim{grid-template-columns:1fr}}
.onay-liste.ui-kart,.onay-detay.ui-kart{padding:0;overflow:hidden}
.sekmeler{display:flex;gap:var(--s1);padding:var(--s3) var(--s3) 0;border-bottom:1px solid var(--n200);overflow-x:auto;max-width:100%}
.sekmeler .sekme{flex:0 0 auto;white-space:nowrap}
.sekme{padding:var(--s2) var(--s3);font-weight:500;color:var(--n500);border-bottom:2px solid transparent;text-decoration:none}
.sekme:hover{color:var(--n800);text-decoration:none}
.sekme.on{font-weight:600;color:var(--n900);border-bottom-color:var(--marka)}
.sekme-sayac{margin-left:4px;background:var(--amber);color:var(--marka);border-radius:6px;padding:0 6px;font-size:11px;font-weight:700}
.cipler{display:flex;gap:var(--s2);padding:var(--s3) var(--s4);border-bottom:1px solid var(--n100);flex-wrap:wrap}
.cip{display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 10px;border-radius:var(--r-sm);border:1px solid var(--n300);background:var(--n0);font-size:var(--t-xs);font-weight:500;color:var(--n700);text-decoration:none}
.cip:hover{background:var(--n50);text-decoration:none}
.cip.on{background:var(--n900);color:var(--n0);border-color:var(--n900)}
.onay-satirlar{display:block}
.onay-satir{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:var(--s3);align-items:center;padding:14px var(--s4);border-bottom:1px solid var(--n100);color:inherit;text-decoration:none}
.onay-satir:hover{background:var(--n50);text-decoration:none}
.onay-satir.sec{background:var(--vurgu-zemin);box-shadow:inset 3px 0 0 var(--vurgu)}
.onay-sol{min-width:0;display:flex;flex-direction:column;gap:3px}
.onay-ust{display:flex;gap:var(--s2);align-items:center}
.onay-ust b{color:var(--n900);white-space:nowrap}
.onay-baslik{color:var(--n800);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.onay-meta{font-size:var(--t-xs);color:var(--n500)}
.onay-sag{text-align:right;display:flex;flex-direction:column;gap:2px}
.onay-tutar{color:var(--n900);white-space:nowrap;font-variant-numeric:tabular-nums}
/* TALEP1 B (axe color-contrast): SLA metni seçili satır zemininde (--vurgu-zemin) 4.36:1 kalıyordu —
   semantik rozetler kendi metin/zemin token çiftiyle (≥ 4.5) küçük çip olur; 11.5px → --t-xs (DS: 12px altı yok). */
.onay-sla{font-size:var(--t-xs);font-weight:600;white-space:nowrap;align-self:flex-end;border-radius:var(--r-sm);padding:0 var(--s1)}
.onay-sla.s-hata{color:var(--hata);background:var(--hata-z)}.onay-sla.s-uyari{color:var(--uyari);background:var(--uyari-z)}
.onay-sla.s-ok{color:var(--ok);background:var(--ok-z)}.onay-sla.s-notr{color:var(--n500);font-weight:500;padding:0}
/* sağ detay */
.od-bas{padding:18px 20px 14px;border-bottom:1px solid var(--n200);display:flex;justify-content:space-between;gap:var(--s3);align-items:flex-start}
.od-bas-ust{display:flex;gap:var(--s2);align-items:center;flex-wrap:wrap}
/* ORTAK2: "Belgeyi aç" tek satır — dar sağ panelde iki satıra kırılmaz, başlık alanı daralır */
.od-bas .od-belge{white-space:nowrap;flex:0 0 auto}
.od-no{font-size:18px;font-weight:600;color:var(--n900)}
.od-alt{color:var(--n600);margin-top:4px}
.od-meta{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;padding:14px 20px;border-bottom:1px solid var(--n100)}
.od-meta span{display:block;font-size:11.5px;color:var(--n500)}
.od-meta b{font-weight:600;color:var(--n900)}
@media(max-width:700px){.od-meta{grid-template-columns:repeat(2,minmax(0,1fr))}}
.od-kalemler{border-bottom:1px solid var(--n100)}
.od-kalemler>summary{cursor:pointer;padding:10px 20px;font-weight:600;color:var(--vurgu);list-style:none}
.od-kalemler>summary::-webkit-details-marker{display:none}
.od-kalemler>summary::after{content:' ▾';font-size:11px}
.od-kalemler .ui-tablo{padding:0 20px 14px}
.od-govde{display:grid;grid-template-columns:minmax(220px,1fr) 280px;min-height:0}
@media(max-width:900px){.od-govde{grid-template-columns:1fr}}
.od-zaman{padding:var(--s4) 20px}
.od-karar-baslik{font-size:var(--t-xs);font-weight:600;color:var(--n500);letter-spacing:.06em;margin-bottom:var(--s3)}
.zn{position:relative;display:grid;grid-template-columns:20px minmax(0,1fr);gap:var(--s3);padding-bottom:14px}
.zn:not(:last-child)::before{content:'';position:absolute;left:5px;top:20px;bottom:0;width:2px;background:var(--n200)}
.zn-nokta{width:12px;height:12px;border-radius:6px;margin-top:4px;background:var(--n300);justify-self:start}
.zn-nokta.d-ok{background:var(--ok)}
.zn-nokta.d-hata{background:var(--hata)}
.zn-nokta.d-uyari{background:var(--uyari)}
.zn-nokta.d-aktif{background:var(--amber);box-shadow:0 0 0 4px var(--uyari-z)}
.zn-ust{display:flex;flex-wrap:wrap;justify-content:space-between;gap:0 var(--s2)}
.zn-ust b{color:var(--n900)}
.zn-tarih{font-size:var(--t-xs);color:var(--n500);white-space:nowrap}
.zn-alt{font-size:12.5px;color:var(--n600)}
.od-karar{border-left:1px solid var(--n100);padding:var(--s4) 18px;background:var(--n50);display:flex;flex-direction:column;gap:10px}
@media(max-width:900px){.od-karar{border-left:0;border-top:1px solid var(--n100)}}
.od-karar-form{display:flex;flex-direction:column;gap:10px}
.od-karar-form .btn{justify-content:center;display:flex}
.od-karar-ikili{display:flex;gap:var(--s2)}
.od-karar-ikili .btn{flex:1}
.od-karar-not{font-size:var(--t-xs);color:var(--n500);margin:0}

/* ==== UI-1 faturalar + fatura formu (maket Faturalar / FaturaFormu) ==== */
.th-lnk{color:inherit;text-decoration:none}
.th-lnk:hover{color:var(--n800)}
.fatura-liste.ui-kart{padding:0;overflow:hidden}
.fatura-liste .ui-tablo td{vertical-align:middle}
.fatura-liste .liste-alt{padding:0 var(--s4)}
.fatura-arac{display:flex;gap:var(--s2);padding:var(--s3) var(--s4);border-bottom:1px solid var(--n200);align-items:center;flex-wrap:wrap}
.fatura-arama{display:inline-flex;gap:var(--s2);align-items:center;border:1px solid var(--n300);border-radius:var(--r-sm);padding:0 var(--s2) 0 10px;background:var(--n0);color:var(--n400)}
.fatura-arama input{border:0;min-height:32px;width:230px;padding:0;background:transparent}
.fatura-arama input:focus-visible{outline:none}
.fatura-arama:focus-within{box-shadow:var(--odak)}
.fatura-arama .btn{min-height:30px;padding:3px 10px;font-size:var(--t-xs);border:0}
.cipler-duz{display:flex;gap:var(--s2);flex-wrap:wrap}
.islem-hucre{white-space:nowrap}
.arac-ozet{margin-left:auto;font-size:var(--t-sm);color:var(--n600)}
.satir-ek{margin-top:3px}
.tutar-asim{color:var(--hata);font-weight:700}
.liste-not{margin-top:calc(-1*var(--s2))}
@media(max-width:640px){.arac-ozet{margin-left:0}.ui-menu-govde{right:auto;left:0}}
/* form: iki sütun alan ızgarası + sağ özet sütunu + sabit alt eylem çubuğu */
.fatura-form-yerlesim{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:var(--s4);align-items:start}
@media(max-width:1000px){.fatura-form-yerlesim{grid-template-columns:1fr}}
.ff-baslik{font-size:var(--t-md);font-weight:600;color:var(--n900);margin:0 0 var(--s3)}
.fatura-ana .ff-baslik{margin-top:var(--s2)}
.fatura-ana .ff-baslik:first-child{margin-top:0}
.ff-izgara{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 16px;margin-bottom:var(--s4)}
@media(max-width:640px){.ff-izgara{grid-template-columns:1fr}}
.ff-izgara label{display:block;font-size:12.5px;color:var(--n600);font-weight:600;margin-bottom:4px}
.ff-izgara label .ui-rozet{margin-left:6px}
.ff-tam{grid-column:1/-1}
.fatura-yan{display:flex;flex-direction:column;gap:var(--s3);position:sticky;top:64px}
.ff-ozet{background:var(--n0);border:1px solid var(--n200);border-radius:var(--r-md);padding:var(--s4)}
.ff-ozet .kesinti{margin-top:0;background:transparent;border:0;padding:0}
.ff-onay-yolu{margin-bottom:0}
.ff-dikkat{margin:0}
.ff-cift{border:1px solid var(--hata-k);background:var(--hata-z);border-radius:var(--r-sm);padding:var(--s3);margin-bottom:var(--s4)}
.ff-cift-baslik{color:var(--hata);font-weight:600;display:block;margin-bottom:6px}
.ff-cift-onay{display:flex;gap:6px;align-items:center;margin-top:6px}
.ff-cift-onay input[type=checkbox]{width:auto;min-height:0}
.fatura-form .ui-form-eylem{margin-top:0;box-shadow:0 -6px 20px rgba(14,23,38,.07);border-radius:0 0 var(--r-md) var(--r-md)}
.fatura-form{padding-bottom:var(--s2)}
.fatura-ana{padding-bottom:var(--s5)}
.fatura-alt{padding:0 var(--s4) var(--s3)}
.fatura-liste td:first-child a{font-weight:600}


/* ==== UI-3a (commit 13): inline stil = 0 — kalan style= öznitelikleri sınıfa taşındı.
   Yalnız ölçü/renk TOKEN'ları kullanılır; dinamik genişlikler <progress> ya da
   data-w/data-ml + erp.js CSSOM ile verilir (style ÖZNİTELİĞİ yok). ==== */
/* genel ölçü/hizalama yardımcıları */
.tam-gen{width:100%}
.oto-gen{width:auto}
.f-sifir{margin:0}
.orta-yazi{text-align:center}
.sol-yazi{text-align:left}
.orta-alt{margin-top:var(--s2);text-align:center}
.blok-not{display:block;margin:4px 0 2px}
.blok-ust{display:block;margin-top:var(--s1)}
.baslik-sm{font-size:var(--t-lg)}
.nowrap{white-space:nowrap}
.kalin{font-weight:600}
.kalin-700{font-weight:700}
.gecersiz{text-decoration:line-through;opacity:.65}
.kaydirilir{overflow:auto}
.alt-hiza{align-self:end}
.tam-satir{grid-column:1/-1}
.min-150{min-width:150px}
.bar-230{min-width:230px}
.ust-s4{margin-top:var(--s4)}
.ust-s5{margin-top:18px}
.ml-s3{margin-left:var(--s3)}
.p-dar{margin:4px 0}
.p-orta{margin:6px 0}
.liste-ikili{margin:var(--s2) 0 var(--s1)}
.btn-aralik{margin:4px var(--s2) 4px 0}
hr.ayrac{border:none;border-top:1px solid var(--n200);margin:var(--s3) 0}
/* alan genişlikleri (eski inline width/max-width) */
.alan-70{width:70px}.alan-90{width:90px}.alan-110{max-width:110px}.alan-120{width:120px;padding:4px}
.alan-140{width:140px;padding:4px}.alan-180{max-width:180px}.alan-200{width:200px}
.alan-210{width:210px}.alan-220{width:220px}.alan-260{max-width:260px}
.flex-sabit{flex:0 0 auto}
.kart-dar{max-width:420px;margin:var(--s4) auto 0}
.kart-orta{max-width:520px}
.kart-440{max-width:440px}
.kart-ic-10{padding:10px}
.kart-ic-1016{padding:10px 16px}
/* form ızgara varyantları (eski inline grid-template-columns) */
.form.form-2sutun{grid-template-columns:280px auto}
.form.form-260{grid-template-columns:260px}
.form.form-3sutun{grid-template-columns:220px 170px auto}
.form.form-4sutun{grid-template-columns:240px 160px 160px auto}
.form.form-filtre{grid-template-columns:minmax(220px,420px) auto;margin-bottom:var(--s3)}
.form.form-satir-ic{grid-template-columns:130px minmax(190px,1fr) auto;margin:0}
@media(max-width:640px){
 .form.form-2sutun,.form.form-260,.form.form-3sutun,.form.form-4sutun,
 .form.form-filtre,.form.form-satir-ic{grid-template-columns:1fr}
}
.form-inline-son{display:inline-flex;gap:var(--s2);align-items:flex-end;flex-wrap:wrap}
.filtre-inline{display:inline-flex;gap:6px;align-items:center;flex-wrap:wrap}
.arac-satir{display:flex;gap:var(--s2);margin-top:var(--s3);align-items:center;flex-wrap:wrap}
.buton-satir{margin-top:var(--s3);display:flex;gap:9px;flex-wrap:wrap}
/* NOT: bu sınıflar <label> üzerinde kullanılır; '.form label' kuralı (0,1,1) ile aynı
   özgüllükte olmaları için element seçicisiyle yazılır (sonra geldikleri için kazanırlar). */
label.onay-kutu-satir{display:flex;gap:7px;align-items:center;color:inherit;font-size:var(--t-sm);margin-bottom:0}
label.onay-kutu-satir input[type=checkbox],label.onay-kutu-satir input[type=radio]{width:auto;min-height:0;flex:0 0 auto}
label.etiket-satir{display:inline-flex;align-items:center;gap:6px;margin:4px var(--s3) 4px 0;
  font-size:12.5px;color:var(--n700);font-weight:500}
label.etiket-satir input[type=checkbox]{width:auto;min-height:0;flex:0 0 auto;margin:0}
label.kolon-kutu{display:inline-flex;gap:5px;align-items:center;margin:0 var(--s3) 0 0;
  font-size:12.5px;color:var(--n700);font-weight:500}
label.kolon-kutu input[type=checkbox]{width:auto;min-height:0;flex:0 0 auto}
label.limit-satir{display:flex;gap:9px;align-items:baseline;font-size:var(--t-sm);color:inherit}
label.acilir-baslik{cursor:pointer;font-weight:700;color:var(--n900)}
summary.tikla{cursor:pointer}
.acilir-kart{padding:14px 18px}
.ara-formu{display:inline-flex;gap:6px;align-items:center;vertical-align:middle}
.ara-formu input{width:230px;padding:6px 9px}
.liste-alt-bar{display:flex;gap:10px;align-items:center;justify-content:center;margin-top:var(--s3)}
/* semantik değer renkleri (eski inline color) */
.deger-ok{color:var(--ok)}
.deger-hata{color:var(--hata)}
.deger-uyari{color:var(--uyari);font-weight:700}
.uyari-etiket{color:var(--hata)}
.gerekce-not{color:var(--uyari)}
tr.satir-kalin td{font-weight:700}
/* BILDIRIM-UX: okunmamış satır zemini kalktı — görünüş aşağıdaki .bildirim-liste bloğunda */
.tag.duz{text-decoration:none}
.tag.mono{font-family:var(--mono)}
.tag.cip-satir{margin:2px 4px 2px 0;display:inline-block;text-decoration:none}
.btn.kilit{background:var(--marka-2);color:var(--n0)}
/* ilerleme çubuğu — <progress> (dinamik genişlik inline stil GEREKTİRMEZ) */
progress.ui-bar{appearance:none;-webkit-appearance:none;width:100%;min-width:64px;height:7px;border:0;
  border-radius:5px;background:var(--n200);color:var(--ok);display:inline-block;vertical-align:middle}
progress.ui-bar.genis{min-width:120px}
progress.ui-bar::-webkit-progress-bar{background:var(--n200);border-radius:5px}
progress.ui-bar::-webkit-progress-value{background:var(--ok);border-radius:5px}
progress.ui-bar::-moz-progress-bar{background:var(--ok);border-radius:5px}
progress.ui-bar.d-hata{color:var(--hata)}
progress.ui-bar.d-hata::-webkit-progress-value{background:var(--hata)}
progress.ui-bar.d-hata::-moz-progress-bar{background:var(--hata)}
progress.ui-bar.d-uyari{color:var(--uyari)}
progress.ui-bar.d-uyari::-webkit-progress-value{background:var(--uyari)}
progress.ui-bar.d-uyari::-moz-progress-bar{background:var(--uyari)}
/* nakit akışı iki yönlü çubuk — genişlik data-w'den erp.js CSSOM ile */
.cfbar i.d-ok{background:var(--ok)}
.cfbar i.d-hata{background:var(--hata)}
/* aşım göstergesi */
.kesinti.kesinti-kucuk{margin:0 0 var(--s3)}
.asim-satir{font-size:var(--t-sm);margin-top:7px;line-height:2}
.grid2.grid-esit{grid-template-columns:1fr 1fr}
@media(max-width:900px){.grid2.grid-esit{grid-template-columns:1fr}}
/* giriş / 2FA / şifre ekranları */
.kod-buyuk{font-size:30px;font-weight:800;letter-spacing:8px;color:var(--marka);padding:10px 0}
.kod-blok{background:var(--n50);border:1px solid var(--n200);border-radius:var(--r-sm);padding:var(--s2) 10px;overflow-x:auto}
.yedek-kod{font-family:var(--mono);font-size:16px;letter-spacing:1px;padding:3px 0}
.mono-kod{font-family:var(--mono);letter-spacing:1px}
.qr-gorsel{border:1px solid var(--n200);border-radius:var(--r-sm);background:var(--n0)}
.kur-buyuk{font-size:24px;font-weight:800;color:var(--n900);margin:4px 0}
/* belgeler */
.belge-yerlesim{display:grid;grid-template-columns:190px 1fr;gap:18px;align-items:start}
@media(max-width:900px){.belge-yerlesim{grid-template-columns:1fr}}
.belge-sekme{display:block;padding:9px 12px;border-radius:var(--r-sm);text-decoration:none;font-size:var(--t-sm);
  font-weight:600;margin-bottom:5px;color:var(--n900);background:var(--n100)}
.belge-sekme.on{background:var(--marka);color:var(--n0)}
/* saha raporu formu */
.foto-kutu{border:1px solid var(--n200);border-radius:10px;padding:var(--s2);text-align:center}
.foto-gorsel{max-width:100%;max-height:160px;border-radius:6px}
.foto-izgara{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:10px;margin-bottom:10px}
.hava-satir{margin:0 0 var(--s2)}
/* nakit akışı bantları (eski inline arka plan/kenar) */
.banner{border-radius:var(--r-sm);padding:var(--s2) var(--s3)}
.banner.t-hata{background:var(--hata-z);border:1px solid var(--hata-k)}
.banner.t-uyari{background:var(--uyari-z);border:1px solid var(--uyari-k)}
.banner.t-bilgi{background:var(--bilgi-z);border:1px solid var(--bilgi-k)}
.banner.t-notr{background:var(--n50);border:1px solid var(--n200)}
.banner.banner-genis{padding:10px 14px;margin:var(--s2) 0}
/* /panel/duzenle (eski sayfa içi <style>) */
.panelduz label{display:flex;align-items:center;gap:var(--s2);margin:0}
.panelduz input[type=checkbox]{width:18px;height:18px;min-height:0;margin:0;flex:none}
.panelduz td{vertical-align:middle}

/* ==== /budget tablo iskeleti (eski sayfa içi <style>) ==== */
.butcewrap{overflow:auto;max-height:72vh}
.butcewrap table{border-collapse:separate;border-spacing:0;min-width:860px}
.butcetbl th{position:sticky;top:0;background:#fff;z-index:3;box-shadow:0 1px 0 var(--line)}
.butcetbl th:nth-child(1),.butcetbl td:nth-child(1){position:sticky;left:0;background:#fff;z-index:2;min-width:86px}
.butcetbl th:nth-child(2),.butcetbl td:nth-child(2){position:sticky;left:86px;background:#fff;z-index:2;min-width:200px;box-shadow:1px 0 0 var(--line)}
.butcetbl th:nth-child(1),.butcetbl th:nth-child(2){z-index:4}
.butcetbl tr:hover td{background:#FAFBFE}
tr.bidpanel td{background:#F7F9FD;text-align:left;font-size:12.5px;line-height:1.8}


/* ==== /saha-raporu/<rid> görünümü (eski sayfa içi <style>) ==== */
.sahaband{background:linear-gradient(100deg,#0E1726,#22365c);color:#fff;border-radius:14px;padding:16px 22px;
  margin-bottom:14px;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:10px}
.marka-logo-rapor{width:220px}
.marka-logo-foto{width:150px}
.sahaband .sbaslik{font-size:13px;letter-spacing:1.2px;color:#b9c6e0;margin-top:9px;font-weight:700}
.sahaband .ssag{text-align:right;font-size:13px;line-height:1.7}
.sahaband .sno{font-size:14px}
.sahaserit{display:flex;gap:22px;flex-wrap:wrap;background:#fff;border:1px solid var(--line);border-radius:12px;padding:11px 16px;margin-bottom:14px}
.sahaserit small{display:block;color:var(--muted);font-size:10.5px;text-transform:uppercase;font-weight:700}
.sahagrid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
/* ORTAK2 0: kaynak ızgarasının sütun sayısını YAPI belirler (ölçü/yazı tipi değil): > 1200 px 3 sütun;
   641–1200 px 2 sütun — Personel | İş Makinaları üstte, Taşeron Puantaj altta tam genişlik (PDF düzeni);
   ≤ 640 px tek sütun. Yalnız ekranda — yazdırma düzeni (3 sütun, aşağıda) değişmez. */
@media screen and (max-width:1200px){.sahagrid3{grid-template-columns:repeat(2,minmax(0,1fr))}.sahagrid3>.kaynak-genis{grid-column:1/-1}}
@media screen and (max-width:640px){.sahagrid3{grid-template-columns:minmax(0,1fr)}}
tr.toplam td{border-top:2px solid var(--navy);font-weight:800}
.fotogrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px}
.fotogrid img{width:100%;height:170px;object-fit:cover;border-radius:8px;border:1px solid var(--line)}
.fotoblok{margin:0;text-align:center}
.fotosayfa{display:none}
.taslakfiligran{position:fixed;top:38%;left:0;right:0;text-align:center;font-size:92px;font-weight:900;
  letter-spacing:10px;color:rgba(198,40,40,.13);transform:rotate(-16deg);pointer-events:none;z-index:40}
@media print{
 .sahaband{background:#0E1726!important;color:#fff!important;border:1px solid #0E1726;border-radius:0;
   -webkit-print-color-adjust:exact;print-color-adjust:exact}
 .sahaband .sbaslik{color:#b9c6e0}.sahaband .ssag{color:#fff}
 .fotogrid{display:none}
 .fotosayfa{display:block;page-break-before:always}
 .fotosayfa .fotobaslik{display:flex;align-items:center;gap:14px;background:#0E1726!important;color:#fff!important;
   font-size:11px;border-bottom:2px solid #F5A201;padding:9px 11px;margin-bottom:10px;
   -webkit-print-color-adjust:exact;print-color-adjust:exact}
 .fotosayfa .fotobaslik small{display:block;color:#d5dbea;margin-top:3px;font-size:9px}
 .fotosayfa .fotoblok{page-break-inside:avoid;margin:0 0 12px;text-align:center}
 .fotosayfa img{max-height:7.2cm;max-width:100%}
 .taslakfiligran{color:rgba(198,40,40,.18)}
 .sahagrid3{display:block}
}


/* ==== UI-3b (commit 17): sözleşme başlık kartı + sayfa içi sekmeler ==== */
.ui-kart.sozlesme-bas,.ui-kart.proje-bas{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:var(--s3) var(--s5);align-items:center}
.sb-alan{display:grid;gap:2px;min-width:0}
.sb-etiket{font-size:var(--t-xs);color:var(--n500);text-transform:uppercase;letter-spacing:.3px;font-weight:600}
.sb-alan b{color:var(--n900);font-size:var(--t-md);font-weight:600;overflow-wrap:anywhere}
.sb-rozetler{display:flex;gap:var(--s2);flex-wrap:wrap;align-items:center}
/* UI-4b-3 (C): başlık kartı tarih değeri bölünmez (dar ekranda satır bütün olarak alta iner) */
.sb-alan b.sb-tarih{white-space:nowrap;overflow-wrap:normal}
/* UI-4b-3 (B): fiziki ilerleme sıfır-durumu — '—' + neden + iki küçük türetilmiş oran satırı */
.fiz-sifir{display:grid;gap:2px}
.fiz-oran,.ui-kpi-ek .fiz-oran{display:block;font-size:var(--t-xs);color:var(--n500);font-variant-numeric:tabular-nums}
.ui-kpi-ek{display:grid;gap:2px}
.sekmeler[data-sekmeler]{margin:var(--s2) 0 var(--s4);padding:0;background:transparent}
/* JS'siz: tüm paneller görünür (sekmeler yalnız sayfa içi bağlantı). JS: erp.js tek paneli
   açık bırakır ve diğerlerine [hidden] verir. */
.sekme-panel{scroll-margin-top:72px}

/* ==== UI-3b (commit 18): bütçe + maliyet + revizyon + nakit akışı ==== */
/* Kart içi (yapışkan OLMAYAN) eylem satırı — aynı sayfada birden çok küçük form için */
.kart-eylem{display:flex;justify-content:flex-end;gap:var(--s2);align-items:center;flex-wrap:wrap;margin-top:var(--s3)}
.satir-eylem{display:flex;gap:var(--s1);flex-wrap:wrap;align-items:center;justify-content:flex-end}
.sb-liste{display:grid;grid-template-columns:max-content 1fr;gap:var(--s1) var(--s3);margin:0}
.sb-liste dt{font-size:var(--t-xs);color:var(--n500);text-transform:uppercase;font-weight:600;align-self:center}
.sb-liste dd{margin:0;color:var(--n900)}
.kart-h2{font-size:var(--t-lg);font-weight:600;color:var(--n900);margin:0 0 var(--s2)}
.dosya-alan{padding:var(--s3);border:1px dashed var(--n300);border-radius:var(--r-sm);background:var(--n50);width:100%}
/* bütçe görünüm seçici */
.butce-gorunum fieldset{border:0;padding:0;margin:0}
.butce-gorunum legend{font-size:var(--t-xs);color:var(--n500);font-weight:600;margin-bottom:var(--s1)}
/* bütçe tablosu = ui_tablo + .butcewrap/.butcetbl (yapışkan başlık + ilk iki sütun, erp.css UI-3a) */
.ui-tablo.butcewrap{border-top:0}
.butcetbl tr.satir-asim td{background:var(--hata-z)}
.butcetbl tr.satir-asim td:nth-child(1),.butcetbl tr.satir-asim td:nth-child(2){background:var(--hata-z)}
.butcetbl tr.bidpanel td{background:var(--n50);text-align:left}
@media(max-width:640px){
 /* kart görünümünde yatay kaydırma ve yapışkan sütun yok */
 .ui-tablo.butcewrap{max-height:none;overflow:visible}
 .ui-tablo.butcewrap table{min-width:0}
 .butcetbl th,.butcetbl td,.butcetbl td:nth-child(1),.butcetbl td:nth-child(2){position:static;min-width:0;box-shadow:none}
 .fatura-arac .cipler-duz{width:100%;overflow-x:auto;flex-wrap:nowrap}
}
.asim-kart .kpi{margin:0}
/* nakit akışı: iki yönlü kümülatif çubuk <meter> ile (JS'siz) */
.cfbar meter{display:block;width:100%;height:9px;-webkit-appearance:none;appearance:none;border:0;background:none}
.cfbar .eksi meter{transform:scaleX(-1)}
.cfbar meter::-webkit-meter-bar{background:transparent;border:0;height:9px}
.cfbar meter.d-ok::-webkit-meter-optimum-value{background:var(--ok)}
.cfbar meter.d-hata::-webkit-meter-optimum-value{background:var(--hata)}
.cfbar meter.d-ok::-moz-meter-bar{background:var(--ok)}
.cfbar meter.d-hata::-moz-meter-bar{background:var(--hata)}
.nakit-proje .ui-tablo{margin-top:var(--s3)}
.fatura-arac .cipler-duz .cip{white-space:nowrap;flex:0 0 auto}

/* ==== UI-3b (commit 19): saha raporu — 390 px öncelikli (şantiye telefondan girer) ==== */
.saha-alt-form{margin-top:var(--s3)}
.saha-alt-form .ui-form{margin-top:var(--s2)}
.saha-duzen .acilir-kart>summary{display:flex;flex-wrap:wrap;gap:var(--s2);align-items:baseline}
.saha-duzen .acilir-kart .ui-tablo{margin-top:var(--s3)}
.hava-duzelt{width:100%}
.hava-duzelt>.ui-form{margin-top:var(--s2)}
.foto-yukle{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--s2);min-height:150px;
  border:2px dashed var(--n300);border-radius:var(--r-md);background:var(--n50);padding:var(--s4);text-align:center;
  cursor:pointer;color:var(--n700)}
.foto-yukle:hover,.foto-yukle:focus-within{border-color:var(--n500);background:var(--n0)}
.foto-yukle input[type=file]{width:100%;max-width:340px;font-size:var(--t-sm)}
.saha-suz{margin:0;width:100%}
.eksik-cipler{display:flex;flex-wrap:wrap;gap:4px}
@media(max-width:640px){
 /* tek sütun + tam genişlik düğmeler + büyük dokunma hedefleri */
 .saha-duzen .kart-eylem .btn,.saha-duzen .kart-eylem button{width:100%;justify-content:center;min-height:44px}
 .saha-duzen .ui-form input,.saha-duzen .ui-form select,.saha-duzen .ui-form textarea{min-height:44px;font-size:16px}
 .foto-yukle{min-height:180px}
 .saha-duzen .foto-izgara{grid-template-columns:repeat(2,minmax(0,1fr))}
 body:has(.saha-duzen) .icerik-eylem{width:100%}
 body:has(.saha-duzen) .icerik-eylem>.btn,body:has(.saha-duzen) .icerik-eylem>form,
 body:has(.saha-duzen) .icerik-eylem>.ui-onay-sar{flex:1 1 auto}
 body:has(.saha-duzen) .icerik-eylem>form .btn,body:has(.saha-duzen) .icerik-eylem>.ui-onay-sar>summary{width:100%;justify-content:center}
}
@media print{
 /* sayfa başı eylemleri ve menüler yazdırmada gizli; saha raporunda başlık bandı zaten var */
 .icerik-eylem,.ui-menu,.ui-onay-sar{display:none!important}
 body:has(.sahaband) .icerik-bas{display:none!important}
}

/* ==== UI-3b (commit 20): ikincil sütunlar + saha form genişlikleri ==== */
/* ui_tablo sütunu 'ikincil': True → dar ekranda (kart görünümü) gizli; masaüstünde görünür */
@media(max-width:640px){
 .ui-tablo .ikincil{display:none}
 /* saha raporu: kısa/orta alanlar telefonda tam genişlik */
 .saha-duzen .ui-form .ui-alan input:not([type=checkbox]):not([type=radio]),
 .saha-duzen .ui-form .ui-alan select,.saha-duzen .ui-form .ui-alan textarea{width:100%;max-width:none}
}
.etiket-grup{border:0;padding:0;margin:0}
.etiket-grup legend{font-size:var(--t-xs);font-weight:600;color:var(--n600);margin-bottom:var(--s1)}
/* UI-3b c20: axe color-contrast (serious) düzeltmeleri — WCAG AA 4.5:1 */
.yanmenu summary{color:var(--n500)}
.tag.warn,.warn{background:var(--uyari-z);color:var(--uyari)}
.quick-actions .panel-duzenle{color:var(--n600)}
.v.amber{color:var(--uyari)}
.kod-bant{background:var(--ok-z);color:var(--ok)}

/* ==== BILDIRIM-UX: durum sözcükle değil görünüşle; tek eylem "Okundu işaretle" ==== */
.bildirim-liste .b-mesaj{color:var(--n600);font-weight:400}
.bildirim-liste .b-mesaj a{color:inherit;text-decoration:none}
.bildirim-liste .b-mesaj a:hover,.bildirim-liste .b-mesaj a:focus-visible{text-decoration:underline}
.bildirim-liste tr.okunmamis .b-mesaj{color:var(--n900);font-weight:600}
.bildirim-liste tr.okunmamis td:first-child{box-shadow:inset 3px 0 0 var(--amber)}
.bildirim-liste .b-eylem{width:1%;white-space:nowrap;text-align:right}
.bildirim-liste .b-isaretle{display:inline-flex;align-items:center;gap:6px}
@media(max-width:899px){.bildirim-liste .b-isaretle .b-etiket{display:none}}
@media(max-width:640px){
 /* kart: mesaj en üstte, tarih/tip altta küçük, düğme tam genişlik; şerit kartın solunda */
 .bildirim-liste .ui-tablo tr{display:flex;flex-direction:column}
 .bildirim-liste .ui-tablo tr.okunmamis{border-left:3px solid var(--amber)}
 .bildirim-liste tr.okunmamis td:first-child{box-shadow:none}
 .bildirim-liste .ui-tablo td.b-mesaj{order:-1;display:block;text-align:left;padding-bottom:var(--s2)}
 .bildirim-liste .ui-tablo td.b-mesaj::before{content:none}
 .bildirim-liste .ui-tablo td.b-tarih,.bildirim-liste .ui-tablo td.b-tip{font-size:var(--t-xs)}
 .bildirim-liste .ui-tablo td.b-eylem{width:auto;display:block;padding-top:var(--s2)}
 .bildirim-liste .ui-tablo td.b-eylem::before{content:none}
 .bildirim-liste .ui-tablo td.b-eylem:empty{display:none}
 .bildirim-liste .ui-tablo td.b-eylem form,.bildirim-liste .b-isaretle{display:flex;width:100%;justify-content:center;min-height:44px}
 .bildirim-liste .b-isaretle .b-etiket{display:inline}
}

/* ==== SAHA-FOTO (29.09): seçim düğmeleri, yükleme sırası, küçük resim ızgarası,
   ⋯ menüsü (mobilde alt sayfa), büyütme (lightbox). Renk/ölçü yalnız token. ==== */
.foto-secim{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--s3)}
.foto-secim .foto-yukle{min-width:0}
.foto-galeri-masa{display:none}
@media(min-width:900px){
 .foto-secim{grid-template-columns:1fr}
 .foto-secim .foto-cek{display:none}
 .foto-galeri-mobil{display:none}
 .foto-galeri-masa{display:inline}
}
.foto-kuyruk{list-style:none;margin:var(--s3) 0 0;padding:0;display:grid;gap:var(--s2)}
.foto-kuyruk[hidden]{display:none}
.foto-kuyruk li{display:grid;grid-template-columns:48px minmax(0,1fr) auto;gap:var(--s2) var(--s3);align-items:center;
  padding:var(--s2);border:1px solid var(--n200);border-radius:var(--r-sm);background:var(--n0)}
.foto-kuyruk li.hata{border-color:var(--hata-k);background:var(--hata-z)}
.fk-onizleme{width:48px;height:48px;border-radius:6px;background:var(--n100);overflow:hidden;display:block}
.fk-onizleme img{width:100%;height:100%;object-fit:cover;display:block}
.fk-bilgi{min-width:0;display:grid;gap:4px}
.fk-ad{font-size:var(--t-sm);color:var(--n800);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fk-durum{font-size:var(--t-xs);color:var(--n600)}
.foto-kuyruk li.hata .fk-durum{color:var(--hata)}
.foto-kuyruk progress{width:100%;height:6px}
.foto-kuyruk progress[hidden]{display:none}
.foto-form.js-oto .foto-yukle-eylem{display:none}
/* ızgara + kutu */
.foto-izgara{grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:var(--s3)}
.foto-kutu{margin:0;display:flex;flex-direction:column;gap:var(--s2);text-align:left;background:var(--n0);position:relative}
.foto-ac{display:block;border-radius:6px;overflow:hidden;cursor:zoom-in}
.foto-ac:focus-visible,.foto-yok:focus-visible{outline:none;box-shadow:var(--odak)}
.foto-kutu .foto-gorsel{display:block;width:100%;height:auto;max-height:none;aspect-ratio:4/3;object-fit:cover;border-radius:6px;background:var(--n100)}
.foto-yok{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;aspect-ratio:4/3;
  border:1px dashed var(--n300);border-radius:6px;background:var(--n50);color:var(--n700);font-size:var(--t-sm);
  text-decoration:none;padding:var(--s2);text-align:center;min-width:0}
.foto-yok small{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fotoblok .foto-yok{height:170px;aspect-ratio:auto}
.foto-alt{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--s2);min-width:0}
.foto-alt>small{min-width:0;overflow-wrap:anywhere;padding-top:6px}
.foto-alt .ui-menu{flex:none}
.foto-kutu .ui-menu{position:static}
/* açılır menü kutunun kendisine hizalı (kutu genişliği) — kenar kutularda da ekran dışına taşmaz */
.foto-kutu .ui-menu-govde{left:0;right:0;top:auto;min-width:0;margin-top:var(--s1)}
.foto-kutu .ui-menu-oge{white-space:normal}
.foto-alt-form>summary{list-style:none}
.foto-alt-form>summary::-webkit-details-marker{display:none}
.foto-alt-form[open]>summary{background:var(--n100)}
.foto-alt-form>form{display:grid;gap:var(--s2);padding:var(--s2) 10px var(--s3)}
.foto-alt-form input{width:100%;min-width:0}
.foto-islem{margin:0}
.ui-menu-govde .ui-onay-sar{display:block}
.ui-menu-govde .ui-onay-sar>summary{display:flex}
.fotoblok .foto-ac{cursor:zoom-in}
@media(max-width:640px){
 /* ⋯ menüsü dar ekranda alt sayfa: kutu dışına taşmaz, yatay kaydırma üretmez */
 .foto-kutu .ui-menu-govde{position:fixed;left:var(--s4);right:var(--s4);bottom:var(--s4);top:auto;min-width:0;
   max-height:70vh;overflow:auto;z-index:50;padding:var(--s2)}
 .foto-kutu .ui-menu-oge{min-height:44px}
}
/* büyütme (lightbox) */
.foto-buyuk{width:min(1100px,calc(100vw - 2*var(--s4)));max-width:none;height:min(92vh,900px);max-height:none;
  padding:0;border:0;border-radius:var(--r-md);background:var(--n900);color:var(--n0);box-shadow:var(--golge-2);margin:auto}
.foto-buyuk[open]{display:flex;flex-direction:column}
.foto-buyuk::backdrop{background:rgba(14,23,38,.82)}
.fb-ust{display:flex;align-items:center;gap:var(--s2);padding:var(--s2) var(--s3)}
.fb-baslik{font-size:var(--t-md);font-weight:600;margin:0;color:var(--n0)}
.fb-sayac{font-size:var(--t-sm);color:var(--n300);margin-right:auto}
.fb-sahne{position:relative;flex:1;min-height:0;display:flex;align-items:center;justify-content:center;padding:0 var(--s2)}
.fb-img{display:block;max-width:100%;max-height:calc(min(92vh,900px) - 128px);object-fit:contain;margin:auto}
.fb-onceki,.fb-sonraki{position:absolute;top:50%;transform:translateY(-50%);width:44px;height:44px;border:0;border-radius:50%;
  background:var(--n800);color:var(--n0);display:grid;place-items:center;cursor:pointer;z-index:1;opacity:.9}
.fb-onceki{left:var(--s2)}
.fb-sonraki{right:var(--s2)}
.fb-onceki:hover,.fb-sonraki:hover{opacity:1;background:var(--n700)}
.fb-onceki[hidden],.fb-sonraki[hidden]{display:none}
.fb-onceki:focus-visible,.fb-sonraki:focus-visible,.fb-kapat:focus-visible,.fb-indir:focus-visible{outline:none;box-shadow:var(--odak)}
.fb-altyazi{margin:0;padding:var(--s2) var(--s3) var(--s3);font-size:var(--t-sm);color:var(--n200);text-align:center;overflow-wrap:anywhere}
@media(max-width:640px){.foto-buyuk{width:100vw;height:100dvh;max-height:100dvh;border-radius:0}
 .fb-img{max-height:calc(100dvh - 128px)}}
@media print{.foto-buyuk{display:none!important}}
/* seçim kutusunun tamamı dokunma hedefi: yerel dosya girdisi görsel olarak gizli ama
   odaklanabilir/erişilebilir (etiket adı = kutu metni); odak halkası kutuda */
.foto-secim .foto-yukle{position:relative}
.foto-secim .foto-yukle input[type=file]{position:absolute;inset:0;width:100%;height:100%;max-width:none;opacity:0;cursor:pointer}
.foto-secim .foto-yukle:focus-within{box-shadow:var(--odak)}
/* ---- TALEP1 B: talep kaleminde "Bütçe durumu" kutusu (erp.js canlı; talep detayında sunucu
   basar — aynı sınıflar). Aşım: amber zemin + kenar, uyarı satırları --uyari metin rengi. */
.pr-butce-yer{margin-top:var(--s3)}
.pr-butce-yer:empty{display:none}
.pr-butce{border:1px solid var(--n200);border-radius:var(--r-sm);background:var(--n50);padding:var(--s3) var(--s4);font-size:var(--t-sm);min-width:0}
.pr-butce.asim{background:var(--uyari-z);border-color:var(--uyari-k)}
.pr-butce-baslik{font-size:var(--t-sm);font-weight:600;margin:0 0 var(--s2);color:var(--n800);overflow-wrap:anywhere}
.pr-butce-liste{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,130px),1fr));gap:var(--s2) var(--s4);margin:0}
.pr-butce-liste>div{display:flex;flex-direction:column;min-width:0}
.pr-butce-liste dt{color:var(--n600);font-size:var(--t-xs)}
.pr-butce-liste dd{margin:0;font-variant-numeric:tabular-nums;color:var(--n900);overflow-wrap:anywhere}
.pr-butce-kalan{margin:var(--s2) 0 0;font-variant-numeric:tabular-nums;color:var(--n800)}
.pr-butce-uyari{margin:var(--s1) 0 0;color:var(--uyari);font-weight:600}
.pr-butce-not{margin:0 0 var(--s3)}
.pr-butce-izgara{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,420px),1fr));gap:var(--s3)}
/* ---- TALEP1 C: toplu seçim (ui_tablo secim=True / saha foto 'Seç' kipi) + yapışkan eylem çubuğu */
.secim-hucre{width:40px;text-align:center}
.secim-kutu,.secim-hucre input[type=checkbox]{width:18px;height:18px;margin:0;accent-color:var(--vurgu);cursor:pointer}
.secim-cubuk{position:sticky;bottom:var(--s2);z-index:6;display:flex;align-items:center;justify-content:space-between;gap:var(--s3);flex-wrap:wrap;
  background:var(--n0);border:1px solid var(--n200);border-radius:var(--r-md);box-shadow:var(--golge-2);padding:var(--s2) var(--s4);margin-top:var(--s3)}
.secim-sayi{font-size:var(--t-sm);font-weight:600;color:var(--n800)}
.secim-ozet{font-size:var(--t-sm);color:var(--n700)}
.secim-ozet p{margin:0}
.secim-ozet ul,.toplu-liste{margin:var(--s1) 0 0;padding-left:var(--s5);max-height:40vh;overflow:auto}
.secim-ozet li,.toplu-liste li{overflow-wrap:anywhere}
.toplu-liste{margin-bottom:var(--s3)}
/* bütçe: seçim sütunu eklenince yapışkan ilk iki sütun bir kayar (Poz + İmalat yine sabit) */
.secimli .butcetbl th:nth-child(1),.secimli .butcetbl td:nth-child(1){min-width:40px;width:40px;box-shadow:none}
.secimli .butcetbl th:nth-child(2),.secimli .butcetbl td:nth-child(2){left:40px;min-width:86px;box-shadow:none}
.secimli .butcetbl th:nth-child(3),.secimli .butcetbl td:nth-child(3){position:sticky;left:126px;background:var(--n0);z-index:2;min-width:200px;box-shadow:1px 0 0 var(--line)}
.secimli .butcetbl th:nth-child(3){z-index:4}
.secimli .butcetbl tr.satir-asim td:nth-child(3){background:var(--hata-z)}
@media(max-width:640px){.secimli .butcetbl th:nth-child(3),.secimli .butcetbl td:nth-child(3){position:static;min-width:0;box-shadow:none}
 .secim-hucre,.secimli .butcetbl td:nth-child(1){width:auto;min-width:0;text-align:right}}
/* saha fotoğrafları: 'Seç' kipi — JS'siz (onay kutusu + etiket, :has); kip kapalıyken kutular ve çubuk gizli */
.foto-secim-arac{display:flex;justify-content:flex-end;margin-bottom:var(--s2)}
.secim-kip-girdi{position:absolute;opacity:0;width:1px;height:1px;pointer-events:none}
.secim-kip-girdi:focus-visible+label{box-shadow:var(--odak)}
.secim-kip-girdi:checked+label{background:var(--vurgu-zemin);border-color:var(--vurgu);color:var(--vurgu)}
.foto-sec{display:none;position:absolute;top:var(--s3);left:var(--s3);z-index:2;background:var(--n0);border-radius:var(--r-sm);padding:var(--s1);box-shadow:var(--golge-1)}
.foto-secim-blok:has(.secim-kip-girdi:checked) .foto-sec{display:flex}
.foto-secim-blok:not(:has(.secim-kip-girdi:checked)) .secim-cubuk{display:none}
/* TALEP1 C: eski .card içine giren ui_tablo (Belgeler, Sözleşme dosyaları) B6'nın ≤900px
   'min-width:640px + yapışkan ilk kolon' kuralını almaz — ui_tablo'nun kendi kart görünümü geçerli */
@media(max-width:900px){.card .ui-tablo table{min-width:0}
 .card .ui-tablo th:first-child,.card .ui-tablo td:first-child{position:static;background:transparent}}
/* TALEP-2: kilitli hedef bütçe — taban seçimi (önizleme), hedef satırı (Panel KPI / Proje 360), kırılım listeleri */
.hedef-taban-grup{border:0;padding:0;margin:0;display:grid;gap:var(--s2)}
label.hedef-taban{display:flex;gap:var(--s2);align-items:flex-start;padding:var(--s3);border:1px solid var(--n200);border-radius:var(--r-sm);cursor:pointer;margin:0;color:inherit;font-weight:400}
label.hedef-taban input[type=radio]{width:auto;min-height:0;flex:0 0 auto;margin-top:3px}
label.hedef-taban>span{display:grid;gap:2px;min-width:0}
label.hedef-taban:has(input:checked){border-color:var(--vurgu);background:var(--vurgu-zemin)}
.hedef-satir{display:block;font-size:var(--t-xs);color:var(--n600);font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.hedef-satir a{color:inherit;font-weight:600}
.hedef-satir.h-fark a,.hedef-satir .h-fark{color:var(--uyari)}
.hedef-satir .ui-onay-sar{margin-top:var(--s1)}
.sb-alan .hedef-alt{display:block;font-size:var(--t-xs);color:var(--n500);font-variant-numeric:tabular-nums}
.sb-alan a.hedef-rozet{text-decoration:none}
.hedef-ozet-satir{margin:0 0 var(--s3);font-size:var(--t-sm);color:var(--n600);font-variant-numeric:tabular-nums}
.hedef-liste{border-top:1px solid var(--n200);padding:var(--s2) 0}
.hedef-liste>summary{cursor:pointer;display:flex;flex-wrap:wrap;gap:var(--s2);align-items:baseline;font-size:var(--t-sm)}
.hedef-liste>summary:focus-visible,.hedef-tumu>summary:focus-visible{outline:3px solid var(--amber);outline-offset:2px}
.hedef-liste .ui-tablo{margin-top:var(--s2)}
.hedef-tumu{margin-top:var(--s2)}
.hedef-tumu>summary{cursor:pointer;font-size:var(--t-sm);color:var(--vurgu);font-weight:600}
.hedef-liste>summary .ui-ikon{align-self:center;transition:transform .15s ease-out}
.hedef-liste[open]>summary .ui-ikon{transform:rotate(90deg)}
@media(prefers-reduced-motion:reduce){.hedef-liste>summary .ui-ikon{transition:none}}

/* ==== SAHA-PDF A (02.10): rapor görünümü — "Yazdır" ⋯ menüsünde, altında PDF ipucu ==== */
.ui-menu-oge .menu-ipucu{display:block;font-size:var(--t-xs);font-weight:400;color:var(--n500);white-space:normal;max-width:15rem;line-height:1.35}

/* ==== SAHA-PDF D (02.10): rapor görünümü — ekran ==== */
/* 1024 px içerik ≈ 725 px: iki tablo yoğun dolgu + kırılabilir başlık + sabit gerçekleşme hücresiyle
   kartın içine sığar (yatay kaydırma yok). Gerçekleşme: çubuk + yüzde, yüzde tabular ve kırılmaz. */
.saha-ilerleme th,.saha-gunluk th{white-space:normal;vertical-align:bottom}
.saha-ilerleme td,.saha-gunluk td{vertical-align:middle}
.saha-ilerleme td:first-child,.saha-gunluk td:first-child{white-space:nowrap}
/* SAHA-PDF-2: gerçekleşme hücresi esner (çubuk daralır, yüzde 4.2rem SABİT kalır) — yapı, ölçü değil */
.saha-ilerleme td.s-gercek,.saha-ilerleme th.s-gercek{width:clamp(6.5rem,12vw,9rem);min-width:clamp(6.5rem,12vw,9rem)}
.gercek{display:inline-flex;align-items:center;gap:var(--s2);width:9rem;max-width:100%;vertical-align:middle}
.saha-ilerleme .gercek{width:100%}
.gercek progress.ui-bar{flex:1 1 auto;min-width:0;width:auto}
.gercek-yuzde{flex:0 0 4.2rem;text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap;font-weight:600}
.gercek.asim .gercek-yuzde,.asim-etiket{color:var(--uyari)}
.gercek.asim progress.ui-bar::-webkit-progress-value{background:var(--uyari)}
.gercek.asim progress.ui-bar::-moz-progress-bar{background:var(--uyari)}
.asim-etiket{display:block;font-size:var(--t-xs)}
.saha-ilerleme td.islem-hucre{white-space:nowrap;text-align:right}
/* İmalat sütunu diğer hücrelerle aynı punto; günlük açıklama satır kırar; sayısal sütunlar sağa nowrap */
.saha-ilerleme td.s-imalat{font-size:inherit;min-width:0;overflow-wrap:anywhere}
/* SAHA-PDF-2: ≤ 1100 px İşlem düğmesi yalnız ikon — metin GÖRSEL gizli, aria-label/title erişilebilir ad */
@media(min-width:641px) and (max-width:1100px){
 .saha-ilerleme td.islem-hucre .tetik-metin{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
}
.saha-gunluk td.s-aciklama{white-space:normal;min-width:18rem}
.saha-ilerleme td.t-sayi,.saha-gunluk td.t-sayi{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}
.saha-ilerleme th.t-sayi,.saha-gunluk th.t-sayi{text-align:right}
/* kaynak tabloları: dar kartta (≈1024 px) hücreler kırılır — Puantaj sütunu kesilmez */
.sahagrid3 .tablosar td{white-space:normal}
.sahagrid3 .tablosar td:last-child,.sahagrid3 .tablosar th:last-child{white-space:nowrap;text-align:right}
@media(max-width:640px){
 .saha-ilerleme td.s-gercek,.saha-gunluk td.s-aciklama{width:auto;min-width:0}
 .saha-ilerleme td.s-imalat{min-width:0}
 .saha-gunluk td.s-aciklama{text-align:left}
 /* İşlem: satır kartının altında, tam genişlik düğme */
 .saha-ilerleme td.islem-hucre{justify-content:stretch;border-top:1px solid var(--n100);margin-top:var(--s1);padding-top:var(--s2)}
 .saha-ilerleme td.islem-hucre::before{content:none}
 .saha-ilerleme td.islem-hucre .ui-onay-sar,.saha-ilerleme td.islem-hucre summary{width:100%;justify-content:center}
}
/* odak halkası yalnız klavye odağında (:focus-visible) — fareyle tıklanan düğmede kalmaz */
.saha-rapor .btn:focus:not(:focus-visible),.icerik-eylem .btn:focus:not(:focus-visible),
.ui-menu-oge:focus:not(:focus-visible){outline:none;box-shadow:none}
/* imza bloğu: B6 ile aynı içerik; ekranda gizli, yalnız yazdırmada */
.imza-blok{display:none}

/* ==== SAHA-PDF C (02.10): tarayıcı yazdırması (ikincil yol) ==== */
@page saha{margin:12mm}
@media print{
 .saha-rapor{page:saha}
 body:has(.saha-rapor) .print-head{display:none!important}
 .saha-rapor,.saha-rapor *{-webkit-print-color-adjust:exact;print-color-adjust:exact}
 .saha-rapor .yazdirma-yok,.saha-rapor .islem-hucre{display:none!important}
 .saha-rapor .sahagrid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--s2)}
 .saha-rapor .tablosar,.saha-rapor .ui-tablo{overflow:visible!important;max-height:none!important}
 .saha-rapor td,.saha-rapor th{white-space:normal!important}
 .saha-rapor .ui-tablo td,.saha-rapor .tablosar td,.saha-rapor .ui-tablo th,.saha-rapor .tablosar th{padding:3px 5px;font-size:10.5px}
 .saha-rapor .saha-gunluk td.s-aciklama{min-width:0}
 .saha-rapor .saha-ilerleme td:first-child,.saha-rapor .saha-gunluk td:first-child{white-space:nowrap!important}
 .saha-rapor .saha-ilerleme td.s-gercek{width:9.5rem;min-width:9.5rem}
 .saha-rapor .gercek{width:9rem}
 .saha-rapor h3{break-after:avoid;page-break-after:avoid}
 .saha-rapor tr{break-inside:avoid;page-break-inside:avoid}
 .saha-rapor .card{break-inside:auto;page-break-inside:auto}
 .saha-rapor .sahaband{padding:10px 14px}
 .imza-blok{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border:1px solid var(--n300);margin-top:var(--s3);break-inside:avoid;page-break-inside:avoid}
 .imza-kol{padding:var(--s2) var(--s3)}
 .imza-kol+.imza-kol{border-left:1px solid var(--n300)}
 .imza-bas{display:block;font-size:var(--t-xs);text-transform:uppercase;letter-spacing:.4px;color:var(--n900);margin-bottom:var(--s1)}
 .imza-alt{display:grid;grid-template-columns:3fr 2fr;gap:var(--s3)}
 .imza-alan small{display:block;font-size:var(--t-xs);color:var(--n500)}
 .imza-alan span{display:block;min-height:18px;border-bottom:1px solid var(--n600);font-weight:600}
 .imza-alt .imza-alan span{min-height:30px}
}

/* ==== SAHA-MAIL A (02.10): Ayarlar › E-posta › Günlük saha raporu alıcıları ==== */
.alici-ozet{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s1) var(--s2);margin:0 0 var(--s3)}
a.alici-ozet-oge{text-decoration:none}
a.alici-ozet-oge:hover{text-decoration:underline}
.alici-ozet-ayrac{color:var(--n400)}
.alici-aciklama{margin:0 0 var(--s3)}
.alici-proje{border-top:1px solid var(--n200);padding-top:var(--s3);margin-top:var(--s3)}
.alici-proje h4{font-size:var(--t-md);font-weight:600;color:var(--n900);margin:0 0 var(--s2);display:flex;gap:var(--s2);align-items:baseline;flex-wrap:wrap}
.alici-ad{display:block;font-weight:600;color:var(--n800)}
.alici-adres{display:block;color:var(--n600);font-size:var(--t-sm);overflow-wrap:anywhere}
.alici-kaynak{display:inline-flex;flex-wrap:wrap;gap:var(--s1)}
a.ui-rozet{text-decoration:none}
a.ui-rozet:hover{text-decoration:underline}
.ui-tablo tr.satir-pasif td{color:var(--n500)}
.alici-ekle{margin-top:var(--s3);padding:var(--s3);background:var(--n50);border:1px solid var(--n200);border-radius:var(--r-sm)}
.alici-kullanici{margin-top:var(--s2)}
.alici-kullanici>summary{cursor:pointer;font-size:var(--t-sm);font-weight:500;color:var(--vurgu);min-height:32px;display:flex;align-items:center}
.alici-kul-liste{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:0 var(--s3);max-height:16rem;overflow:auto;padding:var(--s1) 0}
.alici-kul-liste label.etiket-satir{margin:var(--s1) 0;align-items:flex-start;flex-wrap:wrap;min-width:0}
.alici-kul-liste small{overflow-wrap:anywhere}
label.etiket-satir.pasif{color:var(--n500)}
.alici-ekle-eylem{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:var(--s2) var(--s3);margin-top:var(--s2)}
/* SAHA-MAIL-2: "Hariç tutulanlar" — profil bayrağı gereği alacakken çıkarılanlar + Geri ekle */
.alici-haric{margin-top:var(--s3);padding:var(--s2) var(--s3);border:1px dashed var(--n300);border-radius:var(--r-sm)}
.alici-haric h5{font-size:var(--t-sm);font-weight:600;color:var(--n800);margin:0 0 var(--s1);display:flex;flex-wrap:wrap;gap:var(--s1) var(--s2);align-items:baseline}
.alici-haric-liste{list-style:none;margin:0;padding:0;display:grid;gap:var(--s1)}
.alici-haric-liste li{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s1) var(--s2);min-width:0}
.alici-haric-ad{font-weight:600;color:var(--n800);overflow-wrap:anywhere}
.alici-haric-liste form{margin-left:auto}
/* SAHA-MAIL C/D: deneme maili satırı, gönderim geçmişi, rapor görünümü e-posta satırı */
.alici-deneme{display:flex;flex-wrap:wrap;align-items:flex-end;gap:var(--s2) var(--s3);margin:0 0 var(--s3)}
.alici-deneme .ui-alan{flex:1 1 260px;max-width:520px}
/* SAHA-MAIL-2 C: eylem satırı — Deneme maili (yalnız bana) + yanında Son raporu tüm alıcılara gönder */
.alici-eylemler{display:flex;flex-wrap:wrap;align-items:flex-end;gap:var(--s2) var(--s3);margin:0 0 var(--s1)}
.alici-eylemler .alici-deneme{flex:1 1 420px;margin:0;min-width:0}
.alici-tumu{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s2);min-width:0}
.alici-tumu-oge{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s1) var(--s2);min-width:0}
.alici-tumu-oge[hidden]{display:none}
.alici-eylem-yardim{margin:0 0 var(--s3);display:flex;flex-wrap:wrap;gap:0 var(--s2)}
.gonderim-sonuc{display:inline-flex;flex-direction:column;align-items:flex-start;gap:2px}
.gonderim-neden{font-size:var(--t-xs);color:var(--n600);overflow-wrap:anywhere}
.gonderim-alicilar{list-style:none;margin:0;padding:0;display:grid;gap:2px;font-size:var(--t-sm)}
.gonderim-alicilar li{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s1);min-width:0}
.alici-adres-ic{overflow-wrap:anywhere;color:var(--n600)}
.gonderim-ok{color:var(--ok);display:inline-flex}
.gonderim-hata{color:var(--hata);display:inline-flex}
/* SAHA-MAIL-3 C: arka plan gönderimi — bekleyen alıcı (saat ikonu) + canlı 'Gönderiliyor — 3/8' */
.gonderim-bekliyor{color:var(--n600);display:inline-flex}
.gonderim-canli{font-variant-numeric:tabular-nums}
/* MAIL-KUYRUK C: belirsiz alıcı (amber uyarı ikonu), "Yeniden dene" (ui_onay), işçi nabzı amber bandı */
.gonderim-belirsiz{color:var(--uyari);display:inline-flex}
.gonderim-yeniden{margin-top:var(--s1)}
.saha-eposta-yeniden{margin:calc(-1*var(--s2)) 0 var(--s3)}
.mail-isci-bant .ui-bant{flex-wrap:wrap}
.mail-isci-ipucu{display:block;margin-top:2px}
.mail-isci-ipucu code{overflow-wrap:anywhere;font-size:var(--t-xs)}
.gonderim-fazla>summary{cursor:pointer;font-size:var(--t-sm);color:var(--vurgu);margin-top:2px}
.saha-eposta-satir{display:flex;align-items:center;gap:var(--s1);margin:calc(-1*var(--s2)) 0 var(--s3);color:var(--n600)}
@media print{.saha-eposta-satir{display:none!important}}
/* SAHA-MAIL: hücre içeriği tek blok — ≤640 px kart görünümünde (td flex) ad/adres ve "+N" alt alta kalır */
.alici-hucre,.gonderim-ali{display:block;min-width:0;text-align:left}
/* ONAY-ORTAK D: organizasyon şeması — yönetici rolündekiler tek "Yönetim" kutusunda yan yana */
.org-yonetim{border:1px solid #B9C8E6;border-radius:10px;padding:10px 12px;background:#F5F8FF;margin-bottom:10px}
.org-yonetim-bas{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;margin-bottom:8px}
.org-yonetim-bas b{color:var(--navy)}
.org-yonetim-kisiler{display:flex;flex-wrap:wrap;gap:8px}
.org-kisi{display:grid;gap:2px;min-width:0;padding:7px 11px;border:1px solid #B9C8E6;border-radius:8px;background:#fff}
.org-kisi b{color:#244F9E;overflow-wrap:anywhere}
.org-kisi small{font-size:11px;color:var(--muted)}
.org-dal{margin-left:14px;padding-left:12px;border-left:2px solid var(--n200)}
.org-satir{padding:3px 0;overflow-wrap:anywhere}
.org-diger{margin-top:10px}
.uform label .unot{font-weight:400;font-size:10.5px;line-height:1.4}
/* ONAY-ORTAK D: "Bağlı olduğu yönetici / Onay yetkisi" formu tek sütun (uzun etiket ikinci sütunu şişirip ilkini eziyordu) */
.uform.uform-tek{grid-template-columns:minmax(0,1fr)}.uform.uform-tek>.btn{justify-self:start}

/* ==== ORTAK2 E: Ayarlar › Onay kuralları — kural yok bandı (dar ekranda düğme metnin altına iner) ==== */
.kural-onizleme{font-weight:600}
@media(max-width:640px){
 .kural-yok-bant .ui-bant{flex-wrap:wrap}
 .kural-yok-bant .ui-bant-eylem{margin-left:0;padding-left:0}
}
/* ORTAK2 B2: Kullanıcılar kartı — hesap durumu bloğu (Pasifleştir / Etkinleştir) */
.uaktiflik{padding:10px;border:1px solid var(--line);border-radius:9px}
.uaktiflik h3{font-size:13px;color:var(--navy);margin:0 0 4px}
.uaktiflik .upan-sub{margin-bottom:8px}
/* SAHA-MAIL-2: Kullanıcılar › kişi kartı — sol sütun (Proje Yetkileri + "Günlük saha raporu e-postası") */
.ukart-sol{display:grid;gap:13px;align-content:start;min-width:0}
.usm-liste{display:grid;gap:7px}
.usm-satir{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:6px 12px;padding:8px 9px;background:#F8FAFD;border:1px solid #ECF0F6;border-radius:9px;min-width:0}
.usm-kutu{display:inline-flex;align-items:center;gap:8px;min-width:0;font-size:12px;color:var(--navy);cursor:pointer}
.usm-kutu input[type=checkbox]{width:18px;height:18px;min-height:0;margin:0;flex:0 0 auto}
.usm-proje{min-width:0;overflow-wrap:anywhere;font-weight:600}
.usm-proje b{color:var(--blue);font-size:11px;margin-right:4px}
.usm-satir.pasif .usm-kutu{cursor:default;color:var(--n500)}
.usm-kaynak{display:inline-flex;flex-wrap:wrap;align-items:center;gap:4px 8px;min-width:0}
.usm-kaynak small{font-size:10.5px}
.usm-yonetici{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px;font-size:12px;color:var(--navy);margin:6px 0 0}
.usm-form .ukart-alt{margin-top:9px}

/* ==== UI-4c A: Panel "Bugün" — persona kartları (şeridin altında) ==== */
.bugun{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,320px),1fr));gap:var(--s4);margin-bottom:var(--s4);align-items:start}
.bugun>.ui-kart{margin:0;min-width:0}
.bugun>#bugun-saha{grid-column:1/-1}
.bugun-satir{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"proje eylem" "durum eylem" "dun dun";gap:var(--s1) var(--s4);align-items:center;padding:var(--s3) 0;border-top:1px solid var(--n100)}
.bugun-satir:first-child{border-top:0;padding-top:0}
.bugun-satir:last-child{padding-bottom:0}
.bugun-proje{grid-area:proje;display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--s1) var(--s2);min-width:0}
.bugun-proje b{font-size:var(--t-md);color:var(--n900);overflow-wrap:anywhere}
.bugun-durum{grid-area:durum;display:flex;flex-wrap:wrap;align-items:center;gap:var(--s2);font-size:var(--t-sm);color:var(--n700);min-width:0}
.bugun-meta a{color:var(--vurgu)}
.bugun-not{color:var(--n600)}
.bugun-yayin{display:inline-flex;align-items:center;gap:var(--s1);color:var(--ok);font-weight:600}
.bugun-eylem{grid-area:eylem;display:flex;flex-wrap:wrap;justify-content:flex-end;gap:var(--s2)}
.bugun-eylem .btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--s1);white-space:nowrap}
.btn.bugun-baslat{min-height:48px;padding:12px 20px;font-size:var(--t-md)}
.bugun-dun{grid-area:dun;display:flex;align-items:center;gap:var(--s1);width:fit-content;max-width:100%;margin-top:var(--s1);padding:var(--s1) var(--s3);border-radius:var(--r-sm);background:var(--uyari-z);border:1px solid var(--uyari-k);color:var(--uyari);font-size:var(--t-sm);font-weight:600;text-decoration:none}
.bugun-dun:hover{text-decoration:underline}
.bugun-liste{list-style:none;margin:0;padding:0;display:grid;gap:var(--s1)}
.bugun-oge,.bugun-onay{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:2px var(--s3);padding:var(--s2);border-radius:var(--r-sm);color:inherit;text-decoration:none;min-width:0}
.bugun-oge:hover,.bugun-onay:hover{background:var(--n50)}
.bugun-ikon{grid-row:span 2;width:34px;height:34px;border-radius:var(--r-sm);display:grid;place-items:center}
.bugun-ikon.t-ok{background:var(--ok-z);color:var(--ok)}
.bugun-ikon.t-uyari{background:var(--uyari-z);color:var(--uyari)}
.bugun-ikon.t-bilgi{background:var(--bilgi-z);color:var(--bilgi)}
.bugun-ikon.t-notr{background:var(--n100);color:var(--n600)}
.bugun-etiket{font-size:var(--t-sm);color:var(--n700);min-width:0}
.bugun-deger{font-size:var(--t-md);color:var(--n900);text-align:right;white-space:nowrap}
.bugun-alt{grid-column:2/-1;font-size:var(--t-xs);color:var(--n500);overflow-wrap:anywhere}
.bugun-onay{display:flex;flex-wrap:wrap;align-items:center;column-gap:var(--s3);row-gap:var(--s1)}
.bugun-no{flex:1 1 auto;font-weight:600;color:var(--n900);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.bugun-tutar{font-variant-numeric:tabular-nums;white-space:nowrap;color:var(--n800)}
.bugun-onay .onay-sla{align-self:center}
.bugun-buyuk{margin:0;font-size:var(--t-lg)}
.bugun-buyuk a{color:var(--n900);text-decoration:none}
.bugun-buyuk a:hover{text-decoration:underline}
.bugun-eksik{margin:var(--s2) 0 0;font-size:var(--t-sm);color:var(--n700)}
.bugun-eksik a{color:var(--vurgu)}
/* saha-yalnız kullanıcı: mevcut panel kartları varsayılan kapalı "Proje göstergeleri" içinde */
.proje-gosterge{margin:0 0 var(--s4)}
.proje-gosterge>summary{cursor:pointer;list-style:none;display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--s1) var(--s3);padding:var(--s3) var(--s4);background:var(--n0);border:1px solid var(--n200);border-radius:var(--r-md);box-shadow:var(--golge-1);font-weight:600;color:var(--n900)}
.proje-gosterge>summary::-webkit-details-marker{display:none}
.proje-gosterge>summary::after{content:'Göster ▾';margin-left:auto;font-size:var(--t-xs);color:var(--vurgu)}
.proje-gosterge[open]>summary{margin-bottom:var(--s4)}
.proje-gosterge[open]>summary::after{content:'Gizle ▴'}
.panelduz-bugun{list-style:none;margin:var(--s2) 0 0;padding:0;display:grid;gap:var(--s2)}
@media(max-width:640px){
 .bugun-satir{grid-template-columns:minmax(0,1fr);grid-template-areas:"proje" "durum" "eylem" "dun"}
 .bugun-eylem{justify-content:stretch}
 .bugun-eylem .btn{flex:1 1 100%}
 .bugun-dun{width:100%}
}

/* ==== UI-4c B: telefonda alt gezinme çubuğu (≤ 640 px ekran; yazdırmada ve geniş ekranda YOK) ==== */
.altnav{display:none}
.ara-form{display:flex;flex-wrap:wrap;gap:var(--s2);margin-top:var(--s3)}
.ara-form input{flex:1 1 220px;min-width:0}
@media screen and (max-width:640px){
 body[data-uid]{padding-bottom:calc(var(--altnav-h) + env(safe-area-inset-bottom))}
 .altnav{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));position:fixed;left:0;right:0;bottom:0;z-index:40;
   min-height:calc(var(--altnav-h) + env(safe-area-inset-bottom));padding:0 env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);
   background:var(--n0);border-top:1px solid var(--n200);box-shadow:var(--golge-2)}
 .altnav-oge{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-width:0;
   min-height:var(--altnav-h);padding:var(--s1) 2px;color:var(--n600);font-size:var(--t-xs);font-weight:500;text-decoration:none;cursor:pointer;
   -webkit-tap-highlight-color:transparent}
 .altnav-oge:hover{color:var(--n900);text-decoration:none}
 .altnav-oge.on{color:var(--vurgu);font-weight:600}
 .altnav-oge.on::before{content:'';position:absolute;top:0;left:25%;right:25%;height:3px;border-radius:0 0 3px 3px;background:var(--vurgu)}
 .altnav-oge:focus-visible{outline:none;box-shadow:inset var(--odak)}
 .altnav-ad{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
 .altnav-rozet{position:absolute;top:6px;left:calc(50% + 6px);min-width:18px;height:18px;padding:0 5px;border-radius:9px;
   background:var(--amber);color:var(--marka);font-size:var(--t-xs);font-weight:700;line-height:18px;text-align:center}
 /* klavye açıkken (metin girişi odakta — erp.js) alt menü gizlenir; yapışkan çubuklar en alta iner */
 body.klavye-acik .altnav{display:none}
 /* yapışkan çubuklar alt menünün ÜSTÜNE oturur — çakışma yok */
 body[data-uid] .ui-form-eylem,body[data-uid] .kaydetbar{bottom:calc(var(--altnav-h) + env(safe-area-inset-bottom))}
 body[data-uid] .secim-cubuk{bottom:calc(var(--altnav-h) + env(safe-area-inset-bottom) + var(--s2))}
 body.klavye-acik .ui-form-eylem,body.klavye-acik .kaydetbar{bottom:0}
 body.klavye-acik .secim-cubuk{bottom:var(--s2)}
 body[data-uid] .ui-toast-alan,body[data-uid] .ui-toast{bottom:calc(var(--altnav-h) + env(safe-area-inset-bottom) + var(--s4))}
 body[data-uid]:has(.ui-form-eylem) .ui-toast-alan,body[data-uid]:has(.ui-form-eylem) .ui-toast,
 body[data-uid].eylem-var .ui-toast-alan,body[data-uid].eylem-var .ui-toast{bottom:calc(var(--eylem-yuk,72px) + var(--altnav-h) + env(safe-area-inset-bottom) + var(--s4))}
 /* burger çekmecesi alt menünün üstünde biter */
 #menuac:checked ~ .yerlesim .yanmenu{bottom:calc(var(--altnav-h) + env(safe-area-inset-bottom))}
}
@media print{.altnav{display:none!important}body[data-uid]{padding-bottom:0}}

/* ==== UI-4c D2: 390 px ⋯ alt sayfasının arkasında karartma — summary'nin tam ekran ::before'u.
   Karartmaya dokunmak summary'ye dokunmaktır → <details> kapanır (JS'siz de çalışır); alt menünün
   (z 40) üstünde, alt sayfanın (z 50) altında. */
@media(max-width:640px){
 .foto-kutu .ui-menu[open]>summary::before{content:'';position:fixed;inset:0;z-index:45;background:var(--n900);opacity:.55;cursor:default}
}

/* PROJE-DÜZENLE A: bütçe kuru + bütçe tarihi düzenleme formunda KİLİTLİ salt gösterim */
.pd-kilitli{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:var(--s2) var(--s4);
 background:var(--n50);border:1px dashed var(--n200);border-radius:var(--r-md);padding:var(--s3)}
.pd-kilitli-not{grid-column:1/-1;margin:0;font-size:var(--t-sm);color:var(--n600)}

/* PROJE-LİSTE 1: Projeler tablosunda dar "Ekip" — "N kişi" açılınca adlar alt alta, küçük */
.ekip-liste>summary{cursor:pointer;color:var(--vurgu);font-size:var(--t-sm)}
.ekip-liste ul{margin:var(--s1) 0 0;padding:0;list-style:none;font-size:var(--t-sm);color:var(--n600);line-height:1.45}
/* PROJE-LİSTE 2: arşiv satırları gri (?arsiv=1) + tablo altı bağlantı */
.satir-arsiv td{color:var(--n600);background:var(--n50)}
.arsiv-bag{margin:var(--s2) 0 0;font-size:var(--t-sm)}
/* PROJE-LİSTE 4: Yeni Proje formu — etiket / alan / yardım ayrı ızgara satırlarında (subgrid):
   yardım metni alanın ALTINA iner, aynı satırdaki inputların üst kenarı hizalı kalır. */
@supports (grid-template-rows:subgrid){
 .form.form-hizali{align-items:start;row-gap:0}
 .form.form-hizali>div{display:grid;grid-row:span 3;grid-template-rows:subgrid;padding-bottom:var(--s3)}
 .form.form-hizali>div>label{align-self:end}
 .form.form-hizali>div>button{grid-row:2;justify-self:start}
}
/* PROJE-LİSTE 1: İşlem hücresi — yalnız-ikon düğmeler (metin .sr-only / .tetik-metin gizli, erişilebilir ad korunur) */
.proje-islem{display:inline-flex;align-items:center;gap:var(--s1);position:relative}
.proje-islem>*{flex:0 0 auto}.proje-islem form{margin:0}   /* gizli metin kaydırma kabından kaçmasın */
/* Şirket kolonu ile 1280 px görünümde işlem düğmelerine yer bırak. */
@media(min-width:641px){
 .proje-tablo th,.proje-tablo td{padding-left:var(--s1);padding-right:var(--s1)}
 .proje-tablo td[data-etiket='Şirket']{max-width:120px;white-space:normal;overflow-wrap:anywhere}
}
/* ≤640 px: Projeler tablosu kart görünümü (ui_tablo deseni) — Kod + Ad etiketsiz kart başlığı */
@media(max-width:640px){
 .card table.proje-tablo{min-width:0}
 .proje-tablo,.proje-tablo tbody,.proje-tablo tr{display:block}
 .proje-tablo thead{display:none}
 .proje-tablo tr{border:1px solid var(--n200);border-radius:var(--r-sm);margin-bottom:var(--s2);padding:var(--s2) var(--s3);background:var(--n0)}
 .proje-tablo td{display:flex;justify-content:space-between;align-items:center;gap:var(--s3);border:0;padding:var(--s1) 0;white-space:normal;text-align:right}
 .proje-tablo td::before{content:attr(data-etiket);color:var(--n500);font-size:var(--t-xs);text-align:left;flex:0 0 auto}
 .proje-tablo td:nth-child(-n+2){display:inline-block;padding:0 var(--s2) var(--s1) 0;font-weight:600}
 .proje-tablo td:nth-child(-n+2)::before{content:none}
 .proje-tablo .zbar{max-width:60%}
}
.proje-islem .ikon-dugme .tetik-metin{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.proje-islem .ikon-dugme{padding-left:var(--s2);padding-right:var(--s2);min-width:34px;justify-content:center}
/* PROJE-LİSTE-DÜZELT: ⋯ menü gövdesi düğmenin EKRANDAKİ konumuna göre hizalanır (erp.js toggle'da ölçer; tüm
   details.ui-menu). JS'siz varsayılan değişmedi: ≤640 sola hizalı, üstünde sağa hizalı. */
.ui-menu-govde.menu-sol{left:0;right:auto}
.ui-menu-govde.menu-sag{right:0;left:auto}
/* GÜVENLİK-CİLA D1: komut paleti kapatma düğmesi — ≥44 px dokunma alanı, telefonda da görünür */
.palet-kapat{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;min-width:44px;min-height:44px;margin:calc(-1*var(--s2)) calc(-1*var(--s2)) calc(-1*var(--s2)) 0;border:0;border-radius:var(--r-sm);background:transparent;color:var(--n600);cursor:pointer}
.palet-kapat:hover{background:var(--n100);color:var(--n900)}
.palet-kapat:focus-visible{outline:2px solid var(--vurgu);outline-offset:1px}
/* GÜVENLİK-CİLA D2: bant/toast içindeki bağlantılar zeminin metin rengini alır (koyu toast'ta varsayılan mavi
   bağlantı axe kontrast hatasıydı — ödeme başarı "kaydı görüntüle") */
.ui-toast a{color:var(--n0);font-weight:600;text-decoration:underline}
.ui-bant a{color:inherit;font-weight:600;text-decoration:underline}

/* Cowork G-0 denetimi: 390px'te 8 haneli negatif KPI tutarı (-21.843.748 ₺) kartı 3 px taşırıyordu */
@media(max-width:430px){.ui-kpi-deger{font-size:var(--t-lg)}}

/* CİLA-1: fark hücresinin iki değeri mobil kartta tek değer bloğudur. */
@media(max-width:640px){
 #fark-raporu .ui-tablo td{align-items:flex-start;min-width:0}
 #fark-raporu .ui-tablo td::before{flex:0 1 45%;min-width:0;overflow-wrap:anywhere}
 #fark-raporu .fark-deger{flex:1;min-width:0;overflow-wrap:anywhere}
}

/* P-3: kalem içi fiyat formu kendi hücresinde kalır; ortak sabit form çubuğu olmaz. */
.tk-satir-fiyat{min-width:0;max-width:14rem;flex:1}
.tk-satir-fiyat .ui-form{grid-template-columns:minmax(0,1fr);gap:var(--s1)}
.tk-satir-fiyat .ui-form-eylem{position:static;inset:auto;min-width:0;flex-wrap:wrap;padding:var(--s1) 0}
.tk-satir-fiyat input{min-width:0;width:100%}
@media(max-width:640px){
 #tk-kalemler .ui-tablo td{align-items:flex-start;min-width:0;overflow-wrap:anywhere}
 #tk-kalemler .ui-tablo td::before{flex:0 1 43%;min-width:0;overflow-wrap:anywhere}
}
/* T3 TAŞERON-FATURA: fatura formu "Taşeron faturası — hangi hakediş?" bölümü + hakediş Faturaları kartı */
.taseron-bolum{border:1px solid var(--n200);border-radius:var(--r-md);padding:var(--s3) var(--s4);margin:0;display:flex;flex-direction:column;gap:var(--s2);min-width:0}
.taseron-bolum legend{font-weight:600;padding:0 var(--s1)}
.taseron-secim{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:var(--s3);padding-left:var(--s5)}
.taseron-not{margin:0}
.taseron-ozet{display:flex;flex-wrap:wrap;gap:var(--s3);margin-bottom:var(--s3)}
