/* ==========================================================================
   PAMUKKALE ELİT PERFORMANS SPOR KULÜBÜ — TEK ANA STİL DOSYASI
   pol.css  ·  v0.1 (Tasarım Kartelası)
   --------------------------------------------------------------------------
   KURAL: Projede başka hiçbir .css dosyası oluşturulmaz. Tüm stiller,
   tüm roller (Veli / Antrenör / Yönetim) ve tüm sayfalar bu dosyadadır.
   Yapı:  1) Tokenlar  2) Reset  3) Tipografi  4) Layout  5) Bileşenler
          6) Ekranlar  7) Yardımcılar  8) Responsive
   ========================================================================== */

@font-face{font-family:'Barlow';font-style:normal;font-weight:400;font-display:swap;src:url('../fonts/barlow-400.ttf') format('truetype')}
@font-face{font-family:'Barlow';font-style:normal;font-weight:500;font-display:swap;src:url('../fonts/barlow-500.ttf') format('truetype')}
@font-face{font-family:'Barlow';font-style:normal;font-weight:600;font-display:swap;src:url('../fonts/barlow-600.ttf') format('truetype')}
@font-face{font-family:'Barlow';font-style:normal;font-weight:700;font-display:swap;src:url('../fonts/barlow-700.ttf') format('truetype')}
@font-face{font-family:'Barlow Condensed';font-style:normal;font-weight:600;font-display:swap;src:url('../fonts/barlow-condensed-600.ttf') format('truetype')}
@font-face{font-family:'Barlow Condensed';font-style:normal;font-weight:700;font-display:swap;src:url('../fonts/barlow-condensed-700.ttf') format('truetype')}

/* ==========================================================================
   1) TASARIM TOKENLARI
   ========================================================================== */
:root{
  /* --- Marka renkleri (logodan türetildi) --- */
  --pol-blue-50:#EEF0FE;  --pol-blue-100:#DDE0FD;  --pol-blue-200:#BCC1FB;
  --pol-blue-300:#8F97F6;  --pol-blue-400:#5C66EE;  --pol-blue-500:#2B2FD6;
  --pol-blue-600:#2124B8;  --pol-blue-700:#1A1C93;  --pol-blue-800:#14166F;
  --pol-blue-900:#0E1050;

  --pol-orange-50:#FEF3E9; --pol-orange-100:#FDE3CC; --pol-orange-200:#FAC79A;
  --pol-orange-300:#F7A55F; --pol-orange-400:#F58C36; --pol-orange-500:#F47B20;
  --pol-orange-600:#DC6612; --pol-orange-700:#B24F0D;

  --pol-red-50:#FDECEC;   --pol-red-500:#E8232A;   --pol-red-600:#C71A20;
  --pol-sand:#F7D6AF;     --pol-sand-soft:#FDF2E4;

  /* --- Nötrler --- */
  --pol-ink:#0E1130;
  --pol-n-0:#FFFFFF;  --pol-n-25:#FBFCFE; --pol-n-50:#F5F7FB; --pol-n-100:#EDF0F6;
  --pol-n-200:#DFE4EE; --pol-n-300:#C6CDDB; --pol-n-400:#98A2B7; --pol-n-500:#6B7590;
  --pol-n-600:#4D566E; --pol-n-700:#363E52; --pol-n-800:#232939; --pol-n-900:#141828;

  /* --- Projenin tüm nötr ayırıcı ve çerçeve çizgileri --- */
  --pol-line-width:1px;
  --pol-line-color:var(--pol-n-200);
  --pol-line-border:var(--pol-line-width) solid var(--pol-line-color);

  /* --- Semantik --- */
  --pol-success:#12A150; --pol-success-bg:#E7F7EE; --pol-success-tx:#0A6B34;
  --pol-warning:#E8A200; --pol-warning-bg:#FEF6E0; --pol-warning-tx:#8A6100;
  --pol-danger:#E8232A;  --pol-danger-bg:#FDECEC;  --pol-danger-tx:#9E1116;
  --pol-info:#2B2FD6;    --pol-info-bg:#EEF0FE;    --pol-info-tx:#1A1C93;

  /* --- Rol renkleri: rozet/vurgu için. Giriş ekranında rol SEÇİLMEZ,
         telefon numarasından otomatik belirlenir. --- */
  --pol-role-veli:var(--pol-blue-500);
  --pol-role-antrenor:var(--pol-orange-500);
  --pol-role-yonetim:var(--pol-ink);

  /* --- Uygulama (modül) akzan renkleri: dashboard kartı + sol menü --- */
  --pol-app-1:#2B2FD6;  /* Devamlılık   */
  --pol-app-2:#F47B20;  /* Performans   */
  --pol-app-3:#12A150;  /* Aidat        */
  --pol-app-4:#7A3FF2;  /* Yarış Takvimi*/
  --pol-app-5:#0E9EA8;  /* Sonuçlar     */
  --pol-app-6:#E8232A;  /* Barajlar     */

  /* --- Tipografi --- */
  --pol-font:'Barlow',-apple-system,'Segoe UI',Roboto,sans-serif;
  --pol-font-cond:'Barlow Condensed','Barlow',-apple-system,'Segoe UI',sans-serif;
  --pol-fs-11:.6875rem; --pol-fs-12:.75rem;  --pol-fs-13:.8125rem;
  --pol-fs-14:.875rem;  --pol-fs-15:.9375rem;--pol-fs-16:1rem;
  --pol-fs-18:1.125rem; --pol-fs-20:1.25rem; --pol-fs-24:1.5rem;
  --pol-fs-28:1.75rem;  --pol-fs-34:2.125rem;--pol-fs-44:2.75rem;

  /* --- Uzay / radius / gölge --- */
  --pol-sp-1:4px; --pol-sp-2:8px;  --pol-sp-3:12px; --pol-sp-4:16px;
  --pol-sp-5:20px;--pol-sp-6:24px; --pol-sp-7:32px; --pol-sp-8:40px; --pol-sp-9:56px;

  --pol-r-sm:8px; --pol-r-md:12px; --pol-r-lg:16px; --pol-r-xl:22px; --pol-r-full:999px;

  --pol-sh-xs:0 1px 2px rgba(14,17,48,.06);
  --pol-sh-sm:0 2px 6px rgba(14,17,48,.07);
  --pol-sh-md:0 8px 20px -6px rgba(14,17,48,.12);
  --pol-sh-lg:0 18px 40px -12px rgba(14,17,48,.20);
  --pol-sh-brand:0 14px 32px -12px rgba(43,47,214,.45);

  --pol-ring:0 0 0 4px rgba(43,47,214,.18);

  /* --- Ölçüler --- */
  --pol-sidebar-w:288px;
  --pol-sidebar-w-mini:76px;
  --pol-topbar-h:76px;
  --pol-container:1320px;

  --pol-t-fast:.15s cubic-bezier(.4,0,.2,1);
  --pol-t:.25s cubic-bezier(.4,0,.2,1);
  --pol-t-slow:.4s cubic-bezier(.16,1,.3,1);
}

/* ==========================================================================
   2) RESET
   ========================================================================== */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{
  margin:0; font-family:var(--pol-font); font-size:var(--pol-fs-15);
  line-height:1.55; color:var(--pol-n-800); background:var(--pol-n-50);
  -webkit-font-smoothing:antialiased; text-rendering:optimizeLegibility;
}
img,svg{display:block;max-width:100%}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer;background:none;border:0;padding:0}
a{color:var(--pol-blue-500);text-decoration:none}
a:hover{text-decoration:underline}
table{border-collapse:collapse;width:100%}
h1,h2,h3,h4,h5,p,figure{margin:0}
ul,ol{margin:0;padding:0;list-style:none}
:focus-visible{outline:none;box-shadow:var(--pol-ring);border-radius:var(--pol-r-sm)}
::selection{background:var(--pol-blue-200);color:var(--pol-blue-900)}

/* ==========================================================================
   3) TİPOGRAFİ
   ========================================================================== */
.pol-display{font-family:var(--pol-font-cond);font-weight:700;font-size:var(--pol-fs-44);
  line-height:1.05;letter-spacing:-.01em;color:var(--pol-ink)}
.pol-h1{font-size:var(--pol-fs-28);font-weight:700;line-height:1.2;color:var(--pol-ink);letter-spacing:-.01em}
.pol-h2{font-size:var(--pol-fs-20);font-weight:700;line-height:1.3;color:var(--pol-ink)}
.pol-h3{font-size:var(--pol-fs-16);font-weight:600;line-height:1.4;color:var(--pol-n-800)}
.pol-body{font-size:var(--pol-fs-15);color:var(--pol-n-700)}
.pol-small{font-size:var(--pol-fs-13);color:var(--pol-n-500)}
.pol-label{font-size:var(--pol-fs-12);font-weight:600;letter-spacing:.06em;
  text-transform:uppercase;color:var(--pol-n-500)}
.pol-num{font-family:var(--pol-font-cond);font-weight:700;font-variant-numeric:tabular-nums;
  letter-spacing:0;color:var(--pol-ink)}
.pol-muted{color:var(--pol-n-500)}

/* ==========================================================================
   4) LAYOUT  —  Tek çatı: her rol (Veli/Antrenör/Yönetim) aynı iskeleti kullanır
   --------------------------------------------------------------------------
   .pol-app            → uygulama gövdesi
   .pol-app--dash      → DASHBOARD MODU: sol menü YOK, geniş ortalanmış içerik
   .pol-app--inner     → İÇ SAYFA MODU: solda menü + sağda içerik
   ========================================================================== */
.pol-shell{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column}
.pol-app{min-height:0;display:flex;flex:1;flex-direction:column}
.pol-shell>.pol-picker{width:100%;flex:1}
.pol-container{width:100%;max-width:var(--pol-container);margin-inline:auto;
  padding-inline:var(--pol-sp-6)}

/* ---------- Üst bar (her modda ortak) ---------- */
.pol-topbar{
  --pol-topbar-accent:var(--pol-orange-400);
  position:sticky;top:0;z-index:60;height:var(--pol-topbar-h);flex:none;
  display:flex;align-items:center;gap:var(--pol-sp-4);
  padding-inline:var(--pol-sp-6);
  background:linear-gradient(112deg,var(--pol-ink) 0%,var(--pol-blue-900) 58%,var(--pol-blue-700) 100%);
  border-bottom:0;box-shadow:0 10px 28px -18px rgba(14,17,48,.75);
}
.pol-topbar::after{content:'';position:absolute;left:0;right:0;bottom:0;height:3px;
  background:linear-gradient(90deg,var(--pol-orange-500),var(--pol-red-500) 38%,var(--pol-blue-300) 72%,var(--pol-blue-500))}
.pol-topbar--veli{--pol-topbar-accent:var(--pol-blue-200)}
.pol-topbar--antrenor{--pol-topbar-accent:var(--pol-orange-300)}
.pol-topbar--yonetim{--pol-topbar-accent:var(--pol-sand)}
.pol-topbar__brand{display:flex;align-items:center;gap:var(--pol-sp-3);text-decoration:none}
.pol-topbar__brand:hover{text-decoration:none}
.pol-topbar__logo{width:68px;height:54px;flex:none;object-fit:contain}
.pol-topbar__name{display:flex;flex-direction:column;line-height:1.15}
.pol-topbar__name b{font-size:var(--pol-fs-16);font-weight:700;color:var(--pol-n-0);letter-spacing:-.01em}
.pol-topbar__name span{font-size:var(--pol-fs-11);font-weight:600;letter-spacing:.08em;
  text-transform:uppercase;color:var(--pol-topbar-accent)}
.pol-topbar__spacer{flex:1}
.pol-topbar__actions{display:flex;align-items:center;gap:var(--pol-sp-2)}

.pol-iconbtn{
  width:44px;height:44px;border-radius:var(--pol-r-md);display:grid;place-items:center;
  color:var(--pol-n-600);background:transparent;position:relative;transition:var(--pol-t-fast);
}
.pol-iconbtn:hover{background:var(--pol-n-100);color:var(--pol-blue-500)}
.pol-topbar .pol-iconbtn{color:var(--pol-blue-700);background:var(--pol-n-0);border:var(--pol-line-border)}
.pol-topbar .pol-iconbtn:hover{background:var(--pol-n-100);border-color:var(--pol-n-300);color:var(--pol-blue-700)}
.pol-iconbtn__dot{position:absolute;top:8px;right:9px;width:8px;height:8px;border-radius:50%;
  background:var(--pol-red-500);border:2px solid var(--pol-n-0)}
/* Mobil hamburger topbar'da; masaüstü daraltma düğmesi menü marka satırındadır. */
.pol-topbar [data-side-toggle]{display:none}

/* ---------- Duyuru çanı (dropdown'ın solunda) ---------- */
.pol-bell{position:relative}
.pol-bell__dot{
  position:absolute;top:2px;right:2px;min-width:17px;height:17px;padding:0 4px;
  display:grid;place-items:center;border-radius:var(--pol-r-full);
  background:var(--pol-danger);color:#fff;border:2px solid var(--pol-n-0);
  font-family:var(--pol-font-cond);font-size:10px;font-weight:700;line-height:1;
}

/* ---------- Sporcu seçici (sağ üst dropdown) ---------- */
.pol-athlete{position:relative}
/* Genis kartta ikon GIZLIDIR (ad + rol yazisi zaten var), bu yuzden izgara IKI
   sutundur: metin + chevron. Uc sutun birakilirsa ikon display:none oldugunda
   metin 32px'lik ilk sutuna dusup satir satir sarar. Ikon yalniz mini menude ve
   mobil kompakt gorunumde cikar; o durumlarin kendi kurallari var. */
.pol-athlete__btn{
  width:300px;min-height:50px;display:grid;grid-template-columns:minmax(0,1fr) 18px;
  align-items:center;gap:var(--pol-sp-3);padding:7px 12px;
  border:var(--pol-line-border);border-radius:var(--pol-r-full);
  background:var(--pol-n-0);box-shadow:0 8px 18px -12px rgba(0,0,0,.65);transition:var(--pol-t-fast);
}
.pol-athlete__btn:hover{background:var(--pol-n-100);border-color:var(--pol-n-300);box-shadow:0 10px 24px -14px rgba(0,0,0,.8)}
.pol-athlete__chevron{color:var(--pol-n-400);transition:var(--pol-t-fast)}
.pol-athlete.is-open .pol-athlete__chevron{transform:rotate(180deg)}
.pol-athlete__meta{display:flex;min-width:0;width:100%;flex-direction:column;align-items:flex-start;text-align:left;line-height:1.15}
.pol-athlete__meta b{font-size:var(--pol-fs-14);font-weight:600;color:var(--pol-ink)}
.pol-athlete__meta span{font-size:var(--pol-fs-11);color:var(--pol-n-500)}
.pol-athlete__meta .pol-athlete__meta-status{max-width:145px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  color:var(--pol-danger-tx);font-weight:600}
.pol-athlete__menu{
  position:absolute;right:0;top:calc(100% + 10px);min-width:300px;z-index:70;
  background:var(--pol-n-0);border:var(--pol-line-border);border-radius:var(--pol-r-lg);
  box-shadow:var(--pol-sh-lg);padding:var(--pol-sp-2);
  opacity:0;visibility:hidden;transform:translateY(-6px);transition:var(--pol-t);
}
.pol-athlete.is-open .pol-athlete__menu{opacity:1;visibility:visible;transform:translateY(0)}
.pol-logout-form{margin:0;width:100%}
.pol-logout-button{width:100%;font:inherit;text-align:left;background:transparent;color:var(--pol-danger);cursor:pointer}
.pol-athlete__item{
  display:flex;align-items:center;gap:var(--pol-sp-3);width:100%;text-align:left;
  padding:10px;border-radius:var(--pol-r-md);transition:var(--pol-t-fast);
  /* Saydam çerçeve: aktif satır çerçeve alınca kutu boyu kaymasın diye. */
  border:1px solid transparent;margin-bottom:3px;
}
.pol-athlete__item:last-child{margin-bottom:0}
.pol-athlete__item:hover{background:var(--pol-blue-50);text-decoration:none}
/* Aktif satır: sol akzan çubuğu yerine tablo çerçevesiyle aynı ince çizgi. */
.pol-athlete__item.is-active{background:var(--pol-blue-100);border-color:var(--pol-n-200)}
.pol-athlete__item.is-restricted{background:var(--pol-danger-bg);border-color:#F8CFD0}
.pol-athlete__item.is-restricted:hover{background:#FADCDD}
.pol-athlete__status{display:flex;align-items:center;gap:5px;margin-top:4px;color:var(--pol-danger-tx);
  font-size:var(--pol-fs-11);font-weight:600;line-height:1.25}
.pol-athlete__status .pol-i{width:13px;height:13px;flex:none}
.pol-athlete__entry{margin-bottom:3px}
.pol-athlete__entry>.pol-athlete__item{margin-bottom:0}
.pol-athlete__entry.has-return{overflow:hidden;border:1px solid #F8CFD0;border-radius:var(--pol-r-md)}
.pol-athlete__entry.has-return>.pol-athlete__item{border:0;border-radius:0}
.pol-athlete__return{display:flex;align-items:center;gap:7px;width:100%;margin:0;padding:9px 12px;
  border:0;border-top:1px solid #94CDAA;border-radius:0;background:#C7E8D4;
  color:#0F5B33;font-size:var(--pol-fs-12);font-weight:700;line-height:1.2;transition:var(--pol-t-fast)}
.pol-athlete__return:hover{background:#B9DFC8;color:#0B4D2B;text-decoration:none}
.pol-athlete__return .pol-i{flex:none}

.pol-duyuru-result{display:flex;flex-direction:column;align-items:center;gap:7px;margin-bottom:18px;padding:18px;
  border:var(--pol-line-border);border-radius:var(--pol-r-md);text-align:center}
.pol-duyuru-result__emoji{font-size:38px;line-height:1}
.pol-duyuru-result strong{font-size:var(--pol-fs-18);line-height:1.25}
.pol-duyuru-result--welcome{background:#E0F4E8;border-color:#A9D8BC;color:#0F5B33}
.pol-duyuru-result--farewell{background:#FFF0F0;border-color:#F3C2C4;color:#A8242D}

/* ---------- Gövde: dashboard modu ---------- */
.pol-app--dash .pol-main{width:100%;flex:1;padding-block:var(--pol-sp-7) var(--pol-sp-9)}

/* ---------- Gövde: iç sayfa modu (sol menü + içerik) ---------- */
.pol-app--inner .pol-body{display:flex;align-items:stretch;flex:1;min-height:0}
.pol-app--inner .pol-main{flex:1;min-width:0;padding:var(--pol-sp-6) var(--pol-sp-7) var(--pol-sp-9)}

/* ---------- Alt bilgi (her modda ortak, tam genişlik) ---------- */
.pol-footer{position:relative;width:100%;flex:none;overflow:hidden;color:var(--pol-n-0);
  background:linear-gradient(112deg,var(--pol-ink) 0%,var(--pol-blue-900) 62%,var(--pol-blue-800) 100%)}
.pol-footer::before{content:'';position:absolute;top:0;left:0;right:0;height:3px;
  background:linear-gradient(90deg,var(--pol-blue-500),var(--pol-blue-300) 30%,var(--pol-red-500) 65%,var(--pol-orange-500))}
.pol-footer__inner{width:100%;min-height:82px;padding:var(--pol-sp-5) var(--pol-sp-6);
  display:grid;grid-template-columns:minmax(48px,1fr) auto minmax(48px,1fr);align-items:center;gap:var(--pol-sp-5)}
.pol-footer__line{height:1px;background:linear-gradient(90deg,transparent,rgba(255,255,255,.3))}
.pol-footer__line:last-child{background:linear-gradient(90deg,rgba(255,255,255,.3),transparent)}
.pol-footer__copy{display:flex;align-items:center;justify-content:center;gap:var(--pol-sp-3);
  color:var(--pol-n-200);font-size:var(--pol-fs-13);font-weight:500;text-align:center}
.pol-footer--veli .pol-footer__inner{min-height:108px;grid-template-columns:minmax(260px,1fr) auto}
.pol-footer--veli .pol-footer__copy{justify-content:flex-start;text-align:left}
.pol-footer__actions{display:flex;align-items:center;justify-content:flex-end;gap:var(--pol-sp-3)}
.pol-footer__action{white-space:nowrap}
.pol-footer__action:hover{text-decoration:none}
.pol-footer__action--feedback{background:var(--pol-warning-bg);border-color:#F7E2AE;color:var(--pol-warning-tx)}
.pol-footer__action--feedback:hover{background:#FFF0C4;border-color:var(--pol-warning);color:var(--pol-warning-tx)}
.pol-footer__action--leave{background:var(--pol-danger-bg);border-color:#F8CFD0;color:var(--pol-danger-tx)}
.pol-footer__action--leave:hover{background:#FADCDD;border-color:var(--pol-danger);color:var(--pol-danger-tx)}
.pol-footer__action--disabled{cursor:not-allowed;opacity:.72;filter:saturate(.7)}
.pol-footer__action--disabled:hover{transform:none;background:var(--pol-danger-bg);border-color:#F8CFD0}

/* ---------- SOL MENÜ ---------- */
.pol-side{
  width:var(--pol-sidebar-w);flex:none;align-self:stretch;
  background:var(--pol-n-0);border-right:var(--pol-line-border);
  position:relative;min-height:100%;transition:var(--pol-t);
}
.pol-side__scroll{padding:var(--pol-sp-4);overflow:visible}
.pol-side__title{margin:0 4px var(--pol-sp-2)}
.pol-side__head{display:flex;align-items:center;min-height:20px;margin:0 4px var(--pol-sp-2)}
.pol-side__head .pol-side__title{flex:1;margin:0}
.pol-side__toggle{
  display:none;width:24px;height:20px;flex:none;place-items:center;
  color:var(--pol-n-500);border:0;border-radius:4px;background:transparent;
  transition:color var(--pol-t-fast),background var(--pol-t-fast);
}
.pol-side__toggle:hover{color:var(--pol-n-700);background:var(--pol-n-100)}
.pol-side__toggle .pol-i{width:18px;height:18px;stroke-width:2}
.pol-side__group+.pol-side__group{margin-top:var(--pol-sp-3)}
.pol-side__list{display:flex;flex-direction:column;gap:4px}

/* Menü öğesi — PASİF: nötr zemin */
.pol-navitem{
  display:flex;align-items:center;gap:10px;
  padding:8px 10px;border-radius:var(--pol-r-md);
  background:var(--pol-n-50);color:var(--pol-n-600);
  font-size:var(--pol-fs-14);font-weight:600;
  border:1px solid transparent;transition:var(--pol-t-fast);text-decoration:none;
}
.pol-navitem:hover{background:var(--pol-n-100);color:var(--pol-ink);text-decoration:none;transform:translateX(2px)}
.pol-navitem__ico{width:32px;height:32px;flex:none;border-radius:10px;display:grid;place-items:center;
  background:var(--pol-n-0);color:var(--pol-n-500);box-shadow:var(--pol-sh-xs);transition:var(--pol-t-fast)}
.pol-navitem__txt{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pol-navitem__badge{font-size:var(--pol-fs-11);font-weight:700;padding:2px 8px;border-radius:var(--pol-r-full);
  background:var(--pol-red-500);color:#fff}
.pol-navitem__badge--pulse{min-width:24px;text-align:center;animation:polMenuBadge 1.25s ease-in-out infinite;
  box-shadow:0 0 0 0 rgba(232,35,42,.35)}
@keyframes polMenuBadge{
  0%,100%{transform:rotate(0) scale(1);box-shadow:0 0 0 0 rgba(232,35,42,.32)}
  20%{transform:rotate(-7deg) scale(1.08)}
  40%{transform:rotate(7deg) scale(1.08);box-shadow:0 0 0 6px rgba(232,35,42,0)}
  60%{transform:rotate(-4deg) scale(1.03)}
  80%{transform:rotate(4deg) scale(1.03)}
}

/* Menü öğesi — AKTİF: modülün kendi rengiyle dolu zemin */
.pol-navitem.is-active{
  background:var(--pol-accent,var(--pol-blue-500));
  color:#fff;box-shadow:0 10px 22px -10px var(--pol-accent,var(--pol-blue-500));
}
.pol-navitem.is-active:hover{transform:none;color:#fff}
.pol-navitem.is-active .pol-navitem__ico{background:rgba(255,255,255,.22);color:#fff;box-shadow:none}

/* Çıkış Yap: kırmızıya yakın vurgulu menü öğesi */
.pol-navitem--cikis{color:var(--pol-danger)}
.pol-navitem--cikis .pol-navitem__ico{color:var(--pol-danger)}
.pol-navitem--cikis:hover{background:var(--pol-danger-bg);color:var(--pol-danger-tx)}
.pol-navitem--cikis:hover .pol-navitem__ico{color:var(--pol-danger-tx)}

/* Modül akzanları — hem menüde hem dashboard kartında aynı sınıf kullanılır */
.pol-acc-1{--pol-accent:var(--pol-app-1)} .pol-acc-2{--pol-accent:var(--pol-app-2)}
.pol-acc-3{--pol-accent:var(--pol-app-3)} .pol-acc-4{--pol-accent:var(--pol-app-4)}
.pol-acc-5{--pol-accent:var(--pol-app-5)} .pol-acc-6{--pol-accent:var(--pol-app-6)}

/* Masaustunde sol menuyu daraltma — ilk menu basliginin sagindaki dugmeyle.
   Tercih pol_side cerezinde tutulur ve .pol-app sinifi SUNUCUDA basilir;
   boylece sayfa gecislerinde menu acilip kapanma titremesi olmaz.
   Sadece 1181px ustunde anlamli: 821-1180 arasi menu zaten otomatik mini,
   820 altinda off-canvas cekmece. */
@media(min-width:1181px){
  .pol-side__toggle{display:grid}
  .pol-app.is-side-mini .pol-side{width:var(--pol-sidebar-w-mini)}
  .pol-app.is-side-mini .pol-side__scroll{padding-inline:10px}
  .pol-app.is-side-mini .pol-navitem__txt,
  .pol-app.is-side-mini .pol-navitem__badge,
  .pol-app.is-side-mini .pol-side__title{display:none}
  .pol-app.is-side-mini .pol-side__head{justify-content:center;margin-inline:0}
  .pol-app.is-side-mini .pol-navitem{justify-content:center;padding:9px}
}

/* Mobil off-canvas */
.pol-side__backdrop{position:fixed;inset:0;background:rgba(14,17,48,.45);z-index:79;
  opacity:0;visibility:hidden;transition:var(--pol-t)}
.pol-side__backdrop.is-open{opacity:1;visibility:visible}

/* ---------- Sayfa başlığı ---------- */
.pol-pagehead{display:flex;align-items:flex-end;gap:var(--pol-sp-4);flex-wrap:wrap;
  margin-bottom:var(--pol-sp-6)}
.pol-pagehead__t{flex:1;min-width:220px}
.pol-crumb{display:flex;align-items:center;gap:6px;font-size:var(--pol-fs-12);
  color:var(--pol-n-500);margin-bottom:4px}
.pol-crumb a{color:var(--pol-n-500)} .pol-crumb b{color:var(--pol-n-700);font-weight:600}

/* ==========================================================================
   5) BİLEŞENLER
   ========================================================================== */

/* ---------- 5.1 Butonlar ----------
   Dokunsal buton: hap sekli + masif alt dudak + basilma fizigi.
   Mekanik hallmark "hum" buton sisteminden (MIT) alindi; RENKLER KOPYALANMADI,
   dudak (--pol-btn-edge) ve cast (--pol-btn-cast) tonlari POL tokenlarindan gelir.
   Her renk varyanti kendi dudagini tanimlar; yeni varyant eklerken ikisini de yaz.
   DIKKAT: alt dudagi box-shadow ciziyor. Odak halkasi bu yuzden global
   :focus-visible (box-shadow tabanli) ile VERILEMEZ — outline kullanilir,
   aksi halde odaklaninca dudak kaybolur. Tek istisna --link (dudagi yok).       */
/* KART EYLEM BAGLANTISI DA BUTONDUR. .pol-card__go taban kurala DAHIL EDILMISTIR;
   ayri bir 'butona benzeyen' tanim yazilmaz, yoksa zamanla ayrisir ve kart icinde
   biri hap biri duz metin iki eylem yan yana durur. Yalnizca RENK/OLCU asagida
   ezilir (bkz. 5.6 Kartlar). */
.pol-btn,.pol-card__go,.pol-merkezdurum{
  --pol-btn-edge:var(--pol-blue-700); --pol-btn-cast:rgba(43,47,214,.42);
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  height:44px;padding:0 18px;border-radius:var(--pol-r-full);
  font-size:var(--pol-fs-14);font-weight:600;letter-spacing:.01em;
  border:1px solid transparent;white-space:nowrap;text-decoration:none;
  box-shadow:0 4px 0 0 var(--pol-btn-edge),0 6px 12px -3px var(--pol-btn-cast);
  transform:translateY(0);
  transition:transform .14s cubic-bezier(.2,.7,.3,1),
             box-shadow .14s cubic-bezier(.2,.7,.3,1),
             background-color .16s ease,color .16s ease,border-color .16s ease;
}
.pol-btn:hover,.pol-card__go:hover,.pol-merkezdurum:hover,.pol-card--app:hover .pol-card__go{text-decoration:none;transform:translateY(-2px);
  box-shadow:0 6px 0 0 var(--pol-btn-edge),0 12px 22px -4px var(--pol-btn-cast)}
.pol-btn:active,.pol-merkezdurum:active,.pol-card--app:active .pol-card__go{transform:translateY(3px);
  box-shadow:0 1px 0 0 var(--pol-btn-edge),0 2px 6px -2px var(--pol-btn-cast);
  transition-duration:.07s}
.pol-btn:focus-visible{outline:3px solid var(--pol-btn-edge);outline-offset:3px;
  box-shadow:0 4px 0 0 var(--pol-btn-edge),0 6px 12px -3px var(--pol-btn-cast)}
.pol-btn[disabled],.pol-btn.is-disabled{opacity:.5;pointer-events:none;
  transform:none;box-shadow:0 4px 0 0 var(--pol-btn-edge)}

/* Renk varyantlari — zemin + kendi dudak/cast tonu */
.pol-btn--primary{background:var(--pol-blue-500);color:#fff;
  --pol-btn-edge:var(--pol-blue-700);--pol-btn-cast:rgba(43,47,214,.42)}
.pol-btn--primary:hover{background:var(--pol-blue-600);color:#fff}
.pol-btn--accent{background:var(--pol-orange-500);color:#fff;
  --pol-btn-edge:var(--pol-orange-700);--pol-btn-cast:rgba(244,123,32,.42)}
.pol-btn--accent:hover{background:var(--pol-orange-600);color:#fff}
.pol-btn--dark{background:var(--pol-ink);color:#fff;
  --pol-btn-edge:#000000;--pol-btn-cast:rgba(14,17,48,.42)}
.pol-btn--dark:hover{background:var(--pol-n-800);color:#fff}
.pol-btn--ghost{background:var(--pol-n-0);color:var(--pol-n-700);border-color:var(--pol-n-200);
  --pol-btn-edge:var(--pol-n-300);--pol-btn-cast:rgba(14,17,48,.14)}
.pol-btn--ghost:hover{border-color:var(--pol-blue-300);color:var(--pol-blue-600)}
.pol-btn--soft{background:var(--pol-blue-50);color:var(--pol-blue-600);
  --pol-btn-edge:var(--pol-blue-200);--pol-btn-cast:rgba(43,47,214,.20)}
.pol-btn--soft:hover{background:var(--pol-blue-100);color:var(--pol-blue-700)}
.pol-btn--danger{background:var(--pol-danger);color:#fff;
  --pol-btn-edge:var(--pol-danger-tx);--pol-btn-cast:rgba(232,35,42,.42)}
.pol-btn--danger:hover{background:var(--pol-red-600);color:#fff}
.pol-btn--success{background:var(--pol-success);color:#fff;
  --pol-btn-edge:var(--pol-success-tx);--pol-btn-cast:rgba(18,161,80,.42)}
.pol-btn--success:hover{background:var(--pol-success-tx);color:#fff}
.pol-btn--warning-soft{background:var(--pol-warning-bg);color:var(--pol-warning-tx);border-color:#F7E2AE;
  --pol-btn-edge:var(--pol-warning);--pol-btn-cast:rgba(230,162,13,.28)}
.pol-btn--warning-soft:hover{background:#FFF0C4;border-color:var(--pol-warning);color:var(--pol-warning-tx)}
.pol-btn--danger-soft{background:var(--pol-danger-bg);color:var(--pol-danger-tx);border-color:#F8CFD0;
  --pol-btn-edge:var(--pol-danger);--pol-btn-cast:rgba(232,35,42,.25)}
.pol-btn--danger-soft:hover{background:#FADCDD;border-color:var(--pol-danger);color:var(--pol-danger-tx)}

/* --link zemini olmayan metin baglantisi: dudak YOK, standart odak halkasi geri gelir */
.pol-btn--link{height:auto;padding:0;color:var(--pol-blue-500);background:none;
  box-shadow:none;border-color:transparent}
.pol-btn--link:hover,.pol-btn--link:active{transform:none;box-shadow:none;text-decoration:underline}
.pol-btn--link:focus-visible{outline:none;box-shadow:var(--pol-ring)}

/* Olculer — hap kosesi her boyutta korunur */
.pol-btn--sm{height:36px;padding:0 14px;font-size:var(--pol-fs-13)}
.pol-btn--lg{height:52px;padding:0 26px;font-size:var(--pol-fs-16)}
.pol-btn--block{display:flex;width:100%}
.pol-btn--icon{width:44px;padding:0}
.pol-btn--sm.pol-btn--icon{width:36px}

/* Hover'da ok ikonu ileri kayar — isteğe bagli, ikona bu sinif verilirse calisir */
.pol-btn__ok{transition:transform .2s cubic-bezier(.2,.7,.3,1)}
.pol-btn:hover .pol-btn__ok{transform:translateX(3px)}

/* ---------- 5.2 Rozet / etiket / chip ---------- */
.pol-badge{
  display:inline-flex;align-items:center;gap:6px;height:26px;padding:0 10px;
  border-radius:var(--pol-r-full);font-size:var(--pol-fs-12);font-weight:600;
  background:var(--pol-n-100);color:var(--pol-n-600);white-space:nowrap;
}
.pol-badge--success{background:var(--pol-success-bg);color:var(--pol-success-tx)}
.pol-badge--warning{background:var(--pol-warning-bg);color:var(--pol-warning-tx)}
.pol-badge--danger{background:var(--pol-danger-bg);color:var(--pol-danger-tx)}
.pol-badge--info{background:var(--pol-info-bg);color:var(--pol-info-tx)}
.pol-badge--accent{background:var(--pol-orange-50);color:var(--pol-orange-700)}
.pol-badge--solid{background:var(--pol-blue-500);color:#fff}
.pol-badge--lg{height:32px;padding:0 14px;font-size:var(--pol-fs-13)}
.pol-badge__dot{width:7px;height:7px;border-radius:50%;background:currentColor;flex:none}

.pol-chip{display:inline-flex;align-items:center;gap:6px;height:34px;padding:0 14px;
  border-radius:var(--pol-r-full);border:var(--pol-line-border);background:var(--pol-n-0);
  font-size:var(--pol-fs-13);font-weight:600;color:var(--pol-n-600);transition:var(--pol-t-fast)}
.pol-chip:hover{border-color:var(--pol-blue-300);color:var(--pol-blue-600)}
.pol-chip.is-active{background:var(--pol-blue-500);border-color:var(--pol-blue-500);color:#fff}

/* ---------- 5.3 Avatar ---------- */
.pol-avatar{width:40px;height:40px;border-radius:var(--pol-r-md);flex:none;display:grid;place-items:center;
  background:var(--pol-blue-500);color:#fff;font-weight:700;font-size:var(--pol-fs-14);
  overflow:hidden;letter-spacing:.02em}
.pol-avatar--sm{width:32px;height:32px;font-size:var(--pol-fs-12);border-radius:9px}
.pol-avatar--lg{width:56px;height:56px;font-size:var(--pol-fs-18);border-radius:var(--pol-r-lg)}
.pol-avatar--xl{width:76px;height:76px;font-size:var(--pol-fs-24);border-radius:var(--pol-r-xl)}
.pol-avatar--orange{background:var(--pol-orange-500)}
.pol-avatar--ink{background:var(--pol-ink)}
.pol-avatar--teal{background:var(--pol-app-5)}
.pol-avatar--purple{background:var(--pol-app-4)}
.pol-avatar img{width:100%;height:100%;object-fit:cover}

/* ---------- 5.4 Form elemanları ---------- */
.pol-field{display:flex;flex-direction:column;gap:6px;margin-bottom:var(--pol-sp-4)}
.pol-field__label{font-size:var(--pol-fs-13);font-weight:600;color:var(--pol-n-700)}
.pol-field__label .req{color:var(--pol-danger)}
.pol-field__hint{font-size:var(--pol-fs-12);color:var(--pol-n-500)}
.pol-field__err{font-size:var(--pol-fs-12);color:var(--pol-danger-tx);font-weight:600}

.pol-input,.pol-select,.pol-textarea{
  width:100%;max-width:100%;min-width:0;height:46px;padding:0 14px;border-radius:var(--pol-r-md);
  border:var(--pol-line-border);background:var(--pol-n-0);color:var(--pol-n-800);
  font-size:var(--pol-fs-14);transition:var(--pol-t-fast);
}
/* iOS'ta date/month input'ları içeriğe göre genişleyip taşabiliyor — kutuya sabitle */
.pol-input[type="date"],.pol-input[type="month"],.pol-input[type="time"]{
  -webkit-appearance:none;appearance:none}
.pol-textarea{height:auto;min-height:110px;padding:12px 14px;resize:vertical;line-height:1.5}
.pol-input::placeholder,.pol-textarea::placeholder{color:var(--pol-n-400)}
.pol-input:hover,.pol-select:hover,.pol-textarea:hover{border-color:var(--pol-n-300)}
.pol-input:focus,.pol-select:focus,.pol-textarea:focus{
  outline:none;border-color:var(--pol-blue-400);box-shadow:var(--pol-ring)}
.pol-input.is-error,.pol-select.is-error{border-color:var(--pol-danger);box-shadow:0 0 0 4px rgba(232,35,42,.14)}
.pol-input[disabled],.pol-select[disabled]{background:var(--pol-n-50);color:var(--pol-n-400);cursor:not-allowed}
.pol-input--uppercase{text-transform:uppercase}
.pol-select{appearance:none;padding-right:40px;cursor:pointer;
  background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='none' stroke='%236B7590' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 12px center}

.pol-inputgrp{position:relative;display:flex;align-items:center}
.pol-inputgrp .pol-input{padding-left:44px}
.pol-inputgrp__ico{position:absolute;left:14px;color:var(--pol-n-400);pointer-events:none}

.pol-multiselect{position:relative;width:100%}
.pol-multiselect__btn{
  width:100%;height:46px;padding:0 14px;display:flex;align-items:center;gap:var(--pol-sp-2);
  border:var(--pol-line-border);border-radius:var(--pol-r-md);background:var(--pol-n-0);
  color:var(--pol-n-700);font-size:var(--pol-fs-14);cursor:pointer;transition:var(--pol-t-fast)
}
.pol-multiselect__btn::-webkit-details-marker{display:none}
.pol-multiselect__btn::marker{content:''}
.pol-multiselect__btn:hover{border-color:var(--pol-n-300)}
.pol-multiselect__btn span{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pol-multiselect__btn .pol-i{flex:none;color:var(--pol-n-400);transition:var(--pol-t-fast)}
.pol-multiselect[open] .pol-multiselect__btn{border-color:var(--pol-blue-400);box-shadow:var(--pol-ring)}
.pol-multiselect[open] .pol-multiselect__btn .pol-i{transform:rotate(180deg)}
.pol-multiselect__menu{
  position:absolute;z-index:120;top:calc(100% + 6px);left:0;right:0;display:none;
  max-height:220px;overflow-y:auto;padding:6px;
  border:var(--pol-line-border);border-radius:var(--pol-r-md);
  background:var(--pol-n-0);box-shadow:var(--pol-sh-md)
}
.pol-multiselect[open] .pol-multiselect__menu{display:block}
.pol-multiselect.is-up .pol-multiselect__menu{top:auto;bottom:calc(100% + 6px)}
.pol-modal__box:has(.pol-multiselect[open]),
.pol-modal__body:has(.pol-multiselect[open]){overflow:visible}
.pol-multiselect__item{padding:8px;border-radius:var(--pol-r-sm)}
.pol-multiselect__item:hover{background:var(--pol-n-50)}

.pol-check{display:flex;align-items:flex-start;gap:10px;cursor:pointer;font-size:var(--pol-fs-14);color:var(--pol-n-700)}
.pol-check input{appearance:none;width:20px;height:20px;flex:none;margin-top:1px;border-radius:6px;
  border:var(--pol-line-border);background:var(--pol-n-0);transition:var(--pol-t-fast);cursor:pointer}
.pol-check input[type=radio]{border-radius:50%}
.pol-check input:checked{background:var(--pol-blue-500);border-color:var(--pol-blue-500);
  background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:center}
.pol-check input[type=radio]:checked{background-image:none;box-shadow:inset 0 0 0 4px var(--pol-n-0)}

.pol-switch{display:inline-flex;align-items:center;gap:10px;cursor:pointer;font-size:var(--pol-fs-14)}
.pol-switch input{appearance:none;width:46px;height:26px;border-radius:var(--pol-r-full);
  background:var(--pol-n-300);position:relative;transition:var(--pol-t);cursor:pointer}
.pol-switch input::after{content:'';position:absolute;top:3px;left:3px;width:20px;height:20px;
  border-radius:50%;background:#fff;box-shadow:var(--pol-sh-sm);transition:var(--pol-t)}
.pol-switch input:checked{background:var(--pol-success)}
.pol-switch input:checked::after{left:23px}

/* Ödeme yöntemi / seçenek kartı (radio-card) */
.pol-payopt{display:flex;align-items:center;gap:var(--pol-sp-3);padding:14px;cursor:pointer;
  border:var(--pol-line-border);border-radius:var(--pol-r-lg);background:var(--pol-n-0);
  transition:var(--pol-t-fast)}
.pol-payopt:hover{border-color:var(--pol-blue-300);background:var(--pol-blue-50)}
.pol-payopt.is-active{border-color:var(--pol-blue-500);background:var(--pol-blue-50);
  box-shadow:0 0 0 3px rgba(43,47,214,.10)}
.pol-payopt__ico{width:44px;height:44px;border-radius:12px;flex:none;display:grid;place-items:center;
  background:var(--pol-blue-50);color:var(--pol-blue-500)}
.pol-payopt.is-active .pol-payopt__ico{background:var(--pol-blue-500);color:#fff}
.pol-payopt__tx{flex:1;min-width:0}
.pol-payopt__tx b{display:block;font-size:var(--pol-fs-14);font-weight:600;color:var(--pol-ink)}
.pol-payopt__tx span{font-size:var(--pol-fs-12);color:var(--pol-n-500)}

/* ---------- 5.5 OTP giriş kutuları ---------- */
.pol-otp{display:flex;gap:10px;justify-content:center}
.pol-otp__cell{
  width:52px;height:62px;text-align:center;border-radius:var(--pol-r-md);
  border:var(--pol-line-border);background:var(--pol-n-0);
  font-family:var(--pol-font-cond);font-size:var(--pol-fs-28);font-weight:700;color:var(--pol-ink);
  transition:var(--pol-t-fast);
}
.pol-otp__cell:focus{outline:none;border-color:var(--pol-blue-500);box-shadow:var(--pol-ring)}
.pol-otp__cell.is-filled{border-color:var(--pol-blue-400);background:var(--pol-blue-50)}
.pol-otp.is-error .pol-otp__cell{border-color:var(--pol-danger);background:var(--pol-danger-bg)}
/* "Tekrar gonder" ORTAK BUTON DILINI kullanir (hap + masif alt dudak); metin
   baglantisi degildir. Dudagin altta yeri olsun diye satir dikeyde biraz acilir. */
.pol-otp__timer{display:flex;align-items:center;justify-content:center;
  flex-wrap:wrap;gap:8px 10px;
  font-size:var(--pol-fs-13);color:var(--pol-n-500);margin-top:var(--pol-sp-5)}
.pol-otp__timer b{font-family:var(--pol-font-cond);font-size:var(--pol-fs-18);color:var(--pol-blue-600)}
.pol-otp__timer .pol-btn{margin-left:2px}

/* ---------- 5.6 Kartlar ---------- */
.pol-card{
  background:var(--pol-n-0);border:var(--pol-line-border);border-radius:var(--pol-r-lg);
  box-shadow:var(--pol-sh-xs);transition:var(--pol-t);position:relative;
}
.pol-card--hover:hover{transform:translateY(-4px);box-shadow:var(--pol-sh-md);border-color:var(--pol-n-100)}
.pol-card__head{display:flex;align-items:center;gap:var(--pol-sp-3);
  padding:var(--pol-sp-5) var(--pol-sp-5) 0}
.pol-card__head--bordered{padding-bottom:var(--pol-sp-4);border-bottom:var(--pol-line-border);
  margin-bottom:var(--pol-sp-4)}
.pol-card__t{flex:1;min-width:0}
.pol-card__t b{display:block;font-size:var(--pol-fs-16);font-weight:700;color:var(--pol-ink);line-height:1.3}
.pol-card__t span{font-size:var(--pol-fs-12);color:var(--pol-n-500)}
.pol-card__body{padding:var(--pol-sp-5)}
.pol-card__foot{padding:var(--pol-sp-4) var(--pol-sp-5);border-top:var(--pol-line-border);
  display:flex;flex-wrap:wrap;align-items:center;gap:var(--pol-sp-3);background:var(--pol-n-25);
  border-radius:0 0 var(--pol-r-lg) var(--pol-r-lg)}
/* Sığmayan düğmeler alt satıra sarar (02.10.2026: Gruplarım'a üçüncü düğme eklenince kartın
   dışına taşıyordu). Satır arası dudak payı kadar açık — üst satırın dudağı alttakine yapışmasın. */
.pol-card__ico{width:44px;height:44px;flex:none;border-radius:13px;display:grid;place-items:center;
  background:color-mix(in srgb,var(--pol-accent,var(--pol-blue-500)) 12%,#fff);
  color:var(--pol-accent,var(--pol-blue-500));transition:var(--pol-t)}
.pol-card--hover:hover .pol-card__ico{background:var(--pol-accent,var(--pol-blue-500));color:#fff;
  transform:scale(1.06) rotate(-4deg)}

/* Tek satırlık işlem çubuğu — tablo çerçevesiyle aynı dil, tek satır metin.
   Veli ana sayfasının altında yan yana iki tane kullanılır. */
.pol-linkrow{
  display:flex;align-items:center;gap:var(--pol-sp-3);width:100%;
  padding:14px var(--pol-sp-5);text-align:left;cursor:pointer;text-decoration:none;
  background:var(--pol-n-0);border:var(--pol-line-border);border-radius:var(--pol-r-lg);
  box-shadow:var(--pol-sh-xs);transition:var(--pol-t-fast);
  font-size:var(--pol-fs-14);font-weight:600;color:var(--pol-ink);
}
.pol-linkrow:hover{border-color:var(--pol-n-300);box-shadow:var(--pol-sh-sm);text-decoration:none}
.pol-linkrow__ico{width:32px;height:32px;flex:none;border-radius:10px;display:grid;place-items:center;
  background:color-mix(in srgb,var(--pol-accent,var(--pol-blue-500)) 12%,#fff);
  color:var(--pol-accent,var(--pol-blue-500))}
.pol-linkrow__tx{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pol-linkrow__go{flex:none;color:var(--pol-n-400)}
.pol-linkrow--feedback{
  --pol-accent:var(--pol-warning);min-height:72px;background:var(--pol-warning-bg);
  border-color:#F7E2AE;color:var(--pol-warning-tx)
}
.pol-linkrow--leave{
  --pol-accent:var(--pol-danger);min-height:72px;background:var(--pol-danger-bg);
  border-color:#F8CFD0;color:var(--pol-danger-tx)
}
.pol-linkrow--feedback:hover{border-color:var(--pol-warning)}
.pol-linkrow--leave:hover{border-color:var(--pol-danger)}

/* Dashboard kartı: hover'da yalnızca yükselir ve gölgelenir.
   Üstteki akzan şeridi bilerek kaldırıldı — hover'da renk çıkmıyor. */
.pol-card--app{cursor:pointer;overflow:hidden;display:flex;flex-direction:column}
.pol-card--app:hover{transform:translateY(-5px);box-shadow:var(--pol-sh-lg);
  border-color:var(--pol-n-100)}
.pol-card--app .pol-card__body{flex:1}
/* Sekil .pol-btn tabanindan gelir (hap + masif dudak). Burada yalnizca olcu ve
   renk: kartin kendi akzan rengini tasir, zemini beyaz kalir. */
.pol-card__go{height:36px;padding:0 14px;font-size:var(--pol-fs-13);
  background:var(--pol-n-0);color:var(--pol-accent,var(--pol-blue-500));
  border-color:var(--pol-n-200);
  --pol-btn-edge:var(--pol-n-300);--pol-btn-cast:rgba(14,17,48,.14)}
.pol-card--app:hover .pol-card__go{gap:11px;border-color:var(--pol-accent,var(--pol-blue-300))}

/* ---------- 5.7 İstatistik / metrik ---------- */
.pol-split{display:grid;grid-template-columns:1fr var(--pol-line-width) 1fr;align-items:stretch;gap:var(--pol-sp-4)}
.pol-split__rule{background:var(--pol-line-color)}
.pol-metric{text-align:center}
.pol-metric__lbl{font-size:var(--pol-fs-11);font-weight:700;letter-spacing:.07em;text-transform:uppercase;
  color:var(--pol-n-500);margin-bottom:2px}
.pol-metric__val{font-family:var(--pol-font-cond);font-weight:700;font-size:var(--pol-fs-34);
  line-height:1;color:var(--pol-ink);font-variant-numeric:tabular-nums}
.pol-metric__val small{font-size:var(--pol-fs-18);color:var(--pol-n-400);margin-left:1px}
.pol-metric__sub{font-size:var(--pol-fs-12);color:var(--pol-n-500);margin-top:4px}
.pol-metric--good .pol-metric__val{color:var(--pol-success)}
.pol-metric--warn .pol-metric__val{color:var(--pol-warning)}
.pol-metric--bad  .pol-metric__val{color:var(--pol-danger)}

.pol-trend{display:inline-flex;align-items:center;gap:3px;font-size:var(--pol-fs-12);font-weight:700}
.pol-trend--up{color:var(--pol-success)} .pol-trend--down{color:var(--pol-danger)}

/* Çizgisel ilerleme */
.pol-bar{height:8px;border-radius:var(--pol-r-full);background:var(--pol-n-100);overflow:hidden}
.pol-bar__fill{height:100%;border-radius:var(--pol-r-full);
  background:var(--pol-accent,var(--pol-blue-500));transition:width var(--pol-t-slow)}
.pol-bar--lg{height:12px}

/* ---------- 5.9 Onay belgesi ----------
   Belge metni DUZ METINDIR: satir sonlari `pre-wrap` ile korunur, icerik
   Razor tarafindan kodlanir — HTML olarak asla calismaz. */
.pol-belge{max-width:78ch;margin:0 auto}
.pol-belge__head{display:flex;align-items:center;gap:14px;padding-bottom:var(--pol-sp-5);
  margin-bottom:var(--pol-sp-5);border-bottom:var(--pol-line-border)}
.pol-belge__logo{width:52px;height:52px;object-fit:contain;flex:none}
.pol-belge__head b{display:block;font-family:var(--pol-font-cond);font-weight:700;
  font-size:var(--pol-fs-20);color:var(--pol-ink)}
.pol-belge__head span{display:block;font-size:var(--pol-fs-13);color:var(--pol-n-500)}
.pol-belge__metin{white-space:pre-wrap;overflow-wrap:break-word;
  font-size:var(--pol-fs-14);line-height:1.65;color:var(--pol-n-700)}
.pol-belge__imza{margin-top:var(--pol-sp-6);padding-top:var(--pol-sp-5);
  border-top:var(--pol-line-border);display:grid;gap:0}
.pol-belge__imzasatir{display:flex;justify-content:space-between;gap:var(--pol-sp-4);
  padding:9px 0;border-bottom:var(--pol-line-inner-border)}
.pol-belge__imzasatir:last-child{border-bottom:0}
.pol-belge__imzasatir span{font-size:var(--pol-fs-13);color:var(--pol-n-500)}
.pol-belge__imzasatir b{font-size:var(--pol-fs-14);color:var(--pol-ink);text-align:right}
.pol-belge__not{margin-top:var(--pol-sp-5);font-size:var(--pol-fs-12);color:var(--pol-n-400)}
.pol-belge__duzen{font-family:var(--pol-font);font-size:var(--pol-fs-13);line-height:1.6;
  min-height:260px;resize:vertical}

/* Zorunlu onay modali — kapatma dugmesi YOKTUR.
   Modal iki satirdan ibarettir; belge metni varsayilanda KAPALIDIR ve
   "Metni oku" ile acilir. */
.pol-modal--zorunlu .pol-modal__body{max-height:66vh;overflow-y:auto}
.pol-onaysatir{display:flex;align-items:flex-start;gap:var(--pol-sp-4);
  padding:var(--pol-sp-4) 0}
.pol-onaysatir + .pol-onaysatir{border-top:var(--pol-line-inner-border)}
.pol-onaysatir .pol-check{flex:1;min-width:0}
.pol-onaysatir__ac{flex:none;white-space:nowrap;margin-top:2px}
.pol-onaybelge__metin{max-height:300px;overflow-y:auto;padding:var(--pol-sp-4);
  margin-bottom:var(--pol-sp-4);
  border:var(--pol-line-border);border-radius:var(--pol-r-md);background:var(--pol-n-25)}

/* ---------- Spor merkezi ödemesi — elle onay (29.09.2026) ----------
   Yönetimde Durum hücresi TIKLANABİLİR bir düğmedir: hap + masif dudak dili
   .pol-btn taban kuralından gelir (Değişmez Kural 8), burada yalnız renk. */
.pol-merkezdurum{height:34px;padding:0 14px;font-size:var(--pol-fs-12);cursor:pointer;font-family:inherit}
.pol-merkezdurum--success{color:var(--pol-success-tx);background:var(--pol-success-bg);border-color:#BFE8CF;
  --pol-btn-edge:#8FD3AA;--pol-btn-cast:rgba(18,161,80,.18)}
.pol-merkezdurum--warning,.pol-merkezdurum--kismi{color:var(--pol-warning-tx);background:var(--pol-warning-bg);border-color:#F7E2AE;
  --pol-btn-edge:#EFCB72;--pol-btn-cast:rgba(232,162,0,.18)}
.pol-merkezdurum--danger{color:var(--pol-danger-tx);background:var(--pol-danger-bg);border-color:#F8CFD0;
  --pol-btn-edge:#F0A5A8;--pol-btn-cast:rgba(232,35,42,.18)}
.pol-merkezdurum--accent{color:var(--pol-blue-700);background:var(--pol-blue-50);border-color:var(--pol-blue-100,#dfe3ff);
  --pol-btn-edge:var(--pol-blue-300);--pol-btn-cast:rgba(43,47,214,.16)}
.pol-merkezdurum--info{color:var(--pol-n-700);background:var(--pol-n-25);border-color:var(--pol-n-200);
  --pol-btn-edge:var(--pol-n-300);--pol-btn-cast:rgba(14,17,48,.12)}
/* Veli kartı: ödendi (yeşil onay) ve antrenöre teslim uyarısı */
.pol-payment-card__odendi{display:inline-flex;align-items:center;gap:6px;
  color:var(--pol-success);font-weight:700;font-size:var(--pol-fs-14)}
.pol-payment-card__uyari{display:flex;align-items:flex-start;gap:6px;margin-top:6px;
  font-size:var(--pol-fs-12);line-height:1.45;color:var(--pol-n-600)}
.pol-payment-card__uyari .pol-i{flex:none;margin-top:1px;color:var(--pol-blue-600)}

/* ---------- Yönetim > Veliler: portal durumu (29.09.2026) ----------
   Durum metni sabit genişlikte durur ki düğmeler alt alta aynı hizada kalsın. */
.pol-veliportal{white-space:nowrap}
.pol-veliportal__durum{display:inline-block;min-width:40px;margin-right:8px;
  font-size:var(--pol-fs-12);font-weight:600;color:var(--pol-n-600)}
/* Aynı sporcunun velileri tek satırda (08.10.2026): portal düğmesi veli başına bir satır, önünde ilk adı. */
.pol-veliportal__liste{display:inline-flex;flex-direction:column;align-items:flex-end;gap:6px}
.pol-veliportal__satir{display:flex;align-items:center}
.pol-veliportal__isim{margin-right:8px;color:var(--pol-n-600)}
/* Veli ve telefon hücresinde her veli kendi satırında; masaüstünde satır düğme boyunda (36px) ki ad · telefon ·
   portal düğmesi yan yana aynı hizada dursun — o yüzden düğmenin önündeki ad etiketi yalnız telefonda görünür. */
/* Uzun sütun başlığı iki satıra sarabilir (Veliler'de 7 sütun 1400px'te kaba sığsın diye). */
.pol-table th.pol-th-sar{white-space:normal !important}
.pol-table th.pol-th-sar .pol-th-sort{white-space:normal}
.pol-velisatirlar{display:flex;flex-direction:column;gap:6px}
.pol-velisatir{white-space:nowrap}
@media(min-width:821px){
  .pol-velisatir{min-height:36px;display:flex;align-items:center}
  .pol-veliportal__isim{display:none}
}
@media(max-width:820px){ .pol-veliportal__liste{align-items:flex-start} .pol-velisatirlar{gap:2px}
  .pol-veliportal__isim{display:inline-block;min-width:84px} }

/* ---------- Veli ana sayfa: en iyi yarış dereceleri (29.09.2026) ----------
   Mesafe · derece · tarih. Liste kartın içinde kayar (max-height) — mesafe sayısı
   20'ye çıkabiliyor ve kart uzarsa ızgaradaki komşu kartlar da uzuyordu. */
/* Kulvar kartı (29.09.2026): mesafe+stil başına mini kart, ortadan ikiye bölünür —
   solda 25 m kısa kulvar, sağda 50 m uzun kulvar. Mini kartlar YAN YANA İKİLİ durur
   (kullanıcı isteği); liste kartın içinde dikey kayar. */
.pol-kulvarlar{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;max-height:300px;overflow-y:auto;
  margin:0 -4px;padding:2px 4px 4px;align-content:start}
.pol-kulvar{min-width:0;border:var(--pol-line-border);border-radius:var(--pol-r-md);background:var(--pol-n-0);
  padding:7px 7px;transition:var(--pol-t-fast)}
.pol-kulvar:hover{border-color:color-mix(in srgb,var(--pol-accent,var(--pol-blue-500)) 45%,var(--pol-line-color));
  box-shadow:var(--pol-sh-xs)}
.pol-kulvar__t{font-weight:700;color:var(--pol-ink);font-size:var(--pol-fs-13);line-height:1.2;margin-bottom:6px}
.pol-kulvar__iki{display:grid;grid-template-columns:1fr 1fr}
.pol-kulvar__yari{display:flex;flex-direction:column;gap:2px;min-width:0}
.pol-kulvar__yari + .pol-kulvar__yari{border-left:var(--pol-line-inner-border);padding-left:5px}
.pol-kulvar__yari:first-child{padding-right:5px}
.pol-kulvar__havuz{display:flex;flex-direction:column;line-height:1.1}
.pol-kulvar__havuz b{font-size:var(--pol-fs-13);color:var(--pol-n-700)}
.pol-kulvar__havuz small{font-size:10px;color:var(--pol-n-500);white-space:nowrap}
/* Mini kart ana sayfanın 3 sütunlu ızgarasında ~130px'e iner; derece 14px'te iki yarıya sığar
   (1400px ve 390px'te ölçüldü). */
.pol-kulvar__derece{font-size:14px;line-height:1.2;color:var(--pol-ink);margin-top:3px;white-space:nowrap;
  letter-spacing:-.01em;font-variant-numeric:tabular-nums}
.pol-kulvar__tarih{font-size:10px;color:var(--pol-n-500);font-variant-numeric:tabular-nums;white-space:nowrap}
.pol-kulvar__yari.is-bos .pol-kulvar__derece{color:var(--pol-n-400)}

/* ---------- Açık rıza kalemleri (23.09.2026) ----------
   Rıza ONAY DEĞİLDİR: kalem kalem verilir, kalem kalem geri alınır. Aynı
   partial (_RizaKalem) veli modalinde, "Onayladığım Belgeler"de ve yönetimin
   veli dökümünde (salt okunur) kullanılır — üç yerde tek görünüm. */
.pol-modal#m-riza .pol-modal__body{max-height:66vh;overflow-y:auto}
.pol-rizagrup{padding:var(--pol-sp-4) 0}
.pol-rizagrup + .pol-rizagrup{border-top:var(--pol-line-inner-border)}
.pol-rizagrup__bas{display:flex;align-items:center;justify-content:space-between;
  gap:var(--pol-sp-3);margin-bottom:var(--pol-sp-3);color:var(--pol-ink)}
.pol-rizagrup__bas b{min-width:0}
.pol-riza{padding:var(--pol-sp-3) var(--pol-sp-4);border:var(--pol-line-border);
  border-radius:var(--pol-r-md);background:var(--pol-n-0)}
.pol-riza + .pol-riza{margin-top:var(--pol-sp-2)}
.pol-riza__ana>span{display:flex;flex-direction:column;gap:3px;min-width:0}
.pol-riza__ana b{color:var(--pol-ink);font-weight:600}
.pol-riza__ack{font-size:var(--pol-fs-12);color:var(--pol-n-600);line-height:1.5}
.pol-riza__tarih{font-size:var(--pol-fs-11);color:var(--pol-n-500)}
/* Özel nitelikli (sağlık) veri işareti — rozet DURUM söyler: bu kalem m.6 verisidir. */
.pol-riza__ozel{align-self:flex-start}
/* Mecra seçimleri üst kalemin içinde, girintili; üst kapalıyken gizlidir. */
.pol-riza__alt{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px 14px;
  margin:var(--pol-sp-3) 0 0 28px;padding-top:var(--pol-sp-3);border-top:var(--pol-line-inner-border)}
.pol-riza__altbas{grid-column:1 / -1;font-size:var(--pol-fs-12);font-weight:600;color:var(--pol-n-600)}
.pol-riza__alt .pol-check{font-size:var(--pol-fs-13)}
@media(max-width:620px){
  .pol-riza__alt{grid-template-columns:1fr;margin-left:0}
}

/* Halka (donut) — conic-gradient, JS'siz de çalışır */
.pol-ring{width:104px;height:104px;border-radius:50%;display:grid;place-items:center;position:relative;
  background:conic-gradient(var(--pol-accent,var(--pol-blue-500)) calc(var(--val,0)*1%),
             var(--pol-n-100) 0);transition:var(--pol-t-slow)}
.pol-ring::after{content:'';position:absolute;inset:11px;border-radius:50%;background:var(--pol-n-0)}
.pol-ring__tx{position:relative;z-index:1;text-align:center;line-height:1}
.pol-ring__tx b{font-family:var(--pol-font-cond);font-size:var(--pol-fs-24);font-weight:700;color:var(--pol-ink)}
.pol-ring__tx span{display:block;font-size:var(--pol-fs-11);color:var(--pol-n-500);font-weight:600}
.pol-ring--sm{width:78px;height:78px} .pol-ring--sm::after{inset:9px}
/* Devamlılık halka satırı (02.10.2026, _VeliIcerikDevamlilik): Sporcu 2–3, Grup Ortalaması 3–4 halka.
   Halka sayısı değişse de satır eşit bölünür; dar kartta halka küçülür, 4'ü tek satıra sığar. */
.pol-devamhalka{display:grid;grid-template-columns:repeat(auto-fit,minmax(96px,1fr));gap:12px 8px;align-items:start}
.pol-devamhalka .pol-ring{margin:0 auto 8px}
.pol-devamhalka .pol-small{white-space:nowrap}
@media(max-width:1180px){
  .pol-devamhalka{grid-template-columns:repeat(auto-fit,minmax(78px,1fr))}
  .pol-devamhalka .pol-ring{width:78px;height:78px}
  .pol-devamhalka .pol-ring::after{inset:9px}
  .pol-devamhalka .pol-ring__tx b{font-size:var(--pol-fs-18)}
  .pol-devamhalka .pol-ring__tx span{font-size:10px}
}
@media(max-width:620px){
  .pol-devamhalka{grid-template-columns:repeat(auto-fit,minmax(62px,1fr));gap:12px 4px}
  .pol-devamhalka .pol-ring{width:64px;height:64px}
  .pol-devamhalka .pol-ring::after{inset:7px}
  .pol-devamhalka .pol-ring__tx b{font-size:var(--pol-fs-14)}
  .pol-devamhalka .pol-ring__tx span{font-size:9px}
  .pol-devamhalka .pol-small{white-space:normal;font-size:11px;line-height:1.25}
}
.pol-ring--sm .pol-ring__tx b{font-size:var(--pol-fs-18)}

/* Mini sütun grafik (performans) */
.pol-spark{display:flex;align-items:flex-end;gap:5px;height:74px}
.pol-spark__col{flex:1;border-radius:5px 5px 2px 2px;background:var(--pol-n-100);
  position:relative;transition:var(--pol-t)}
.pol-spark__col i{position:absolute;bottom:0;left:0;right:0;border-radius:5px 5px 2px 2px;
  background:var(--pol-accent,var(--pol-blue-500));height:var(--h,0%);transition:height var(--pol-t-slow)}
.pol-spark__col:hover i{filter:brightness(1.12)}
.pol-spark__lbls{display:flex;gap:5px;margin-top:6px}
.pol-spark__lbls span{flex:1;text-align:center;font-size:var(--pol-fs-11);color:var(--pol-n-400)}

/* ---------- 5.8 Tablolar ---------- */
.pol-tablewrap{border:var(--pol-line-border);border-radius:var(--pol-r-lg);
  background:var(--pol-n-0);overflow:hidden;box-shadow:var(--pol-sh-xs)}
.pol-tabletools{display:flex;align-items:center;gap:var(--pol-sp-3);flex-wrap:wrap;
  padding:var(--pol-sp-4) var(--pol-sp-5);border-bottom:var(--pol-line-border);background:var(--pol-n-25)}
.pol-tabletools__grow{flex:1;min-width:180px}
.pol-tablescroll{overflow-x:auto}

.pol-table{width:100%;font-size:var(--pol-fs-14)}
.pol-table thead th{
  position:sticky;top:0;z-index:2;text-align:left;white-space:nowrap;
  padding:12px var(--pol-sp-5);background:var(--pol-n-50);
  font-size:var(--pol-fs-11);font-weight:700;letter-spacing:.07em;text-transform:uppercase;
  color:var(--pol-n-500);border-bottom:var(--pol-line-border);
}
.pol-table thead th.is-sortable{cursor:pointer;user-select:none}
.pol-table thead th.is-sortable:hover{color:var(--pol-blue-500)}
.pol-table tbody td{padding:13px var(--pol-sp-5);border-bottom:var(--pol-line-border);
  font-family:var(--pol-font);font-size:var(--pol-fs-13);font-weight:500;
  line-height:1.4;color:var(--pol-n-700);vertical-align:middle}
.pol-table tbody tr{transition:var(--pol-t-fast)}
.pol-table tbody tr:hover{background:var(--pol-blue-50)}
.pol-table tbody tr:last-child td{border-bottom:0}
.pol-table .pol-td-num{font-family:var(--pol-font);font-size:var(--pol-fs-13);font-weight:500;
  font-variant-numeric:tabular-nums;color:var(--pol-n-700)}
.pol-table .pol-td-right{text-align:right}
.pol-table .pol-td-center{text-align:center}
.pol-table .pol-td-actions{white-space:nowrap;text-align:right}
.pol-table__user{display:flex;align-items:center;gap:10px}
.pol-table__user b{display:block;font-weight:600;color:var(--pol-ink);line-height:1.25}
.pol-table__user span{font-size:var(--pol-fs-12);color:var(--pol-n-500)}
.pol-table--striped tbody tr:nth-child(even){background:var(--pol-n-25)}
.pol-table--striped tbody tr:hover{background:var(--pol-blue-50)}

/* Tum roller ve sayfalar icin tek tablo veri dili. Hucre icindeki eski b/span,
   sayisal font ve rozet varyantlari bu ortak tipografiyi degistiremez.
   Avatarlar ile islem dugmeleri kendi gorsel kimligini korur.

   MUAF TUTULAN CIPLER burada tek tek yazilir (.pol-rekor gibi). Kural !important
   tasidigi icin cipin kendi tanimindan kacamaz; muafiyet BURADAN verilir. Yeni bir
   hucre ici cip eklerken bu iki secicinin sonuna :not(.sinif) eklemeyi unutmayin. */
.pol-table tbody td:not(.pol-td-actions) b,
.pol-table tbody td:not(.pol-td-actions) span:not(.pol-avatar):not(.pol-rekor):not(.pol-kalan):not(.pol-badge--kismi){
  font-family:var(--pol-font)!important;font-size:var(--pol-fs-13)!important;
  font-weight:500!important;line-height:1.4!important;color:var(--pol-n-700)!important;
}
.pol-table tbody td:not(.pol-td-actions) .pol-badge:not(.pol-badge--kismi){
  display:inline;height:auto;min-width:0;padding:0;border:0;border-radius:0;
  background:transparent!important;box-shadow:none;white-space:normal;
}
.pol-table .pol-table__user>span:not(.pol-avatar){display:block}

.pol-tablefoot{display:flex;align-items:center;justify-content:space-between;gap:var(--pol-sp-3);
  padding:var(--pol-sp-4) var(--pol-sp-5);border-top:var(--pol-line-border);
  background:var(--pol-n-25);flex-wrap:wrap;font-size:var(--pol-fs-13);color:var(--pol-n-500)}
.pol-pager{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;
  column-gap:6px;row-gap:10px}
.pol-pager button,.pol-pager a{
  --pol-btn-edge:var(--pol-n-300);--pol-btn-cast:rgba(14,17,48,.14);
  min-width:36px;height:36px;padding:0 10px;border-radius:var(--pol-r-full);
  font-size:var(--pol-fs-13);font-weight:600;
  display:inline-flex;align-items:center;justify-content:center;text-decoration:none;
  border:1px solid var(--pol-n-200);background:var(--pol-n-0);color:var(--pol-n-600);
  box-shadow:0 4px 0 0 var(--pol-btn-edge),0 6px 12px -3px var(--pol-btn-cast);
  transform:translateY(0);
  transition:transform .14s cubic-bezier(.2,.7,.3,1),box-shadow .14s cubic-bezier(.2,.7,.3,1),
             background-color .16s ease,color .16s ease,border-color .16s ease}
.pol-pager button:hover,.pol-pager a:hover{text-decoration:none;color:var(--pol-blue-600);
  transform:translateY(-2px);
  box-shadow:0 6px 0 0 var(--pol-btn-edge),0 12px 22px -4px var(--pol-btn-cast)}
.pol-pager button:active,.pol-pager a:active{transform:translateY(3px);
  box-shadow:0 1px 0 0 var(--pol-btn-edge),0 2px 6px -2px var(--pol-btn-cast);transition-duration:.07s}
.pol-pager button:focus-visible,.pol-pager a:focus-visible{outline:3px solid var(--pol-btn-edge);outline-offset:3px}
.pol-pager button.is-active,.pol-pager a.is-active{background:var(--pol-blue-500);
  border-color:var(--pol-blue-500);color:#fff;
  --pol-btn-edge:var(--pol-blue-700);--pol-btn-cast:rgba(43,47,214,.42)}
.pol-pager button.is-active:hover,.pol-pager a.is-active:hover{color:#fff}
.pol-pager button:disabled{opacity:.38;cursor:not-allowed;pointer-events:none;
  transform:none;box-shadow:0 4px 0 0 var(--pol-btn-edge)}
/* Atlanan sayfa aralığı (İşlem Kayıtları arşivi): düğme değil, düz işaret. */
.pol-pager__bosluk{min-width:20px;text-align:center;color:var(--pol-n-500)}
.pol-tablefoot--pager-only{justify-content:flex-end}

/* Mobilde tablo -> kart. <td data-lbl="Baslik"> ile baslik tasinir. */
@media(max-width:820px){
  /* table ve tbody de block olmali. Aksi halde tablo duzeni algoritmasi calismaya
     devam edip genisligi icerikten hesaplar; kart modunda bile yatay kayma olur
     (26.08.2026: 371px viewport'ta tablo 460px kaliyordu). */
  .pol-table--responsive{display:block;width:100%}
  .pol-table--responsive tbody{display:block;width:100%}
  .pol-table--responsive thead{display:none}
  .pol-table--responsive tbody tr{display:block;margin:var(--pol-sp-3);padding:var(--pol-sp-2);
    border:var(--pol-line-border);border-radius:var(--pol-r-md);background:var(--pol-n-0)}
  /* Hucre BLOK olmali: etiket ustte, deger altinda normal metin akisinda.
     Flex/grid KULLANILMAZ — hucredeki <b>/<span> ayri oge sayilip tek tek sikisir,
     <br> yok sayilir; iki velili hucrede isimler harf harf kirilir. */
  .pol-table--responsive tbody td{display:block;padding:9px 12px;text-align:left;
    border-bottom:var(--pol-line-border);overflow-wrap:break-word}
  .pol-table--responsive tbody td:last-child{border-bottom:0}
  .pol-table--responsive tbody td::before{content:attr(data-lbl);display:block;margin-bottom:3px;
    font-size:var(--pol-fs-11);font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--pol-n-500)}
  .pol-table--responsive .pol-td-right,
  .pol-table--responsive .pol-td-center{text-align:left}
  /* Islem hucresi: ikonlar saga yasli, yan yana; "Islem" etiketi gizli */
  .pol-table--responsive .pol-td-actions{display:flex;justify-content:flex-end;gap:2px}
  .pol-table--responsive .pol-td-actions::before{content:none}
}

/* ---------- 5.9 Modal ---------- */
.pol-modal{position:fixed;inset:0;z-index:100;display:grid;place-items:center;
  padding:var(--pol-sp-4);opacity:0;visibility:hidden;transition:var(--pol-t)}
.pol-modal.is-open{opacity:1;visibility:visible}
.pol-modal__ovl{position:absolute;inset:0;background:rgba(14,17,48,.55);backdrop-filter:blur(3px)}
.pol-modal__box{position:relative;width:100%;max-width:560px;max-height:calc(100vh - 48px);max-height:calc(100dvh - 48px);
  display:flex;flex-direction:column;background:var(--pol-n-0);border-radius:var(--pol-r-xl);
  box-shadow:var(--pol-sh-lg);transform:translateY(18px) scale(.97);transition:var(--pol-t-slow);overflow:hidden}
.pol-modal.is-open .pol-modal__box{transform:translateY(0) scale(1)}
.pol-modal__box--sm{max-width:420px} .pol-modal__box--lg{max-width:840px}
.pol-modal__head{display:flex;align-items:center;gap:var(--pol-sp-3);
  padding:var(--pol-sp-5) var(--pol-sp-5) var(--pol-sp-4);border-bottom:var(--pol-line-border)}
.pol-modal__head:has(.pol-modal__t > span:not(:empty)){align-items:flex-start}
.pol-modal__head .pol-card__ico{width:42px;height:42px}
.pol-modal__t{flex:1;min-width:0}
.pol-modal__t b{display:block;font-size:var(--pol-fs-18);font-weight:700;color:var(--pol-ink);line-height:1.3}
.pol-modal__t span{font-size:var(--pol-fs-13);color:var(--pol-n-500)}
.pol-modal__x{width:34px;height:34px;flex:none;border-radius:10px;display:grid;place-items:center;
  color:var(--pol-n-400);transition:var(--pol-t-fast)}
.pol-modal__x:hover{background:var(--pol-n-100);color:var(--pol-danger)}
.pol-modal__body{padding:var(--pol-sp-5);overflow-y:auto;overflow-x:hidden;flex:1}
.pol-modal__foot{display:flex;align-items:center;justify-content:flex-end;gap:var(--pol-sp-3);
  padding:var(--pol-sp-4) var(--pol-sp-5);border-top:var(--pol-line-border);background:var(--pol-n-25)}
.pol-modal__foot--split{justify-content:space-between}

/* ---------- 5.10 Uyarı kutusu / boş durum / toast ---------- */
.pol-alert{display:flex;gap:var(--pol-sp-3);padding:14px var(--pol-sp-4);border-radius:var(--pol-r-md);
  font-size:var(--pol-fs-14);border:1px solid transparent}
.pol-alert__ico{flex:none;margin-top:1px}
/* Uyarı içinde <b> cümle içi vurgudur, satırı bölmez.
   Kendi satırını isteyen başlık için .pol-alert__t kullanılır. */
.pol-alert b{font-weight:700}
.pol-alert__t{display:block;font-weight:700;margin-bottom:1px}
.pol-alert--info{background:var(--pol-info-bg);color:var(--pol-info-tx);border-color:var(--pol-blue-100)}
.pol-alert--success{background:var(--pol-success-bg);color:var(--pol-success-tx);border-color:#BFE9D2}
.pol-alert--warning{background:var(--pol-warning-bg);color:var(--pol-warning-tx);border-color:#F7E2AE}
.pol-alert--danger{background:var(--pol-danger-bg);color:var(--pol-danger-tx);border-color:#F8CFD0}
.pol-alert--sm{padding:9px var(--pol-sp-3);font-size:var(--pol-fs-12);gap:var(--pol-sp-2);border-radius:var(--pol-r-sm)}
.pol-alert--sm .pol-alert__ico{width:16px;height:16px}

/* ---------- 5.10b Yoklama durum seçici (segmented) ---------- */
.pol-yok-tools{align-items:flex-end}
.pol-yok-tools__actions{gap:2px;flex:none}
.pol-yok-alert__desktop{display:none}
.pol-yok{display:inline-flex;border:var(--pol-line-border);border-radius:var(--pol-r-md);
  overflow:hidden;background:var(--pol-n-0)}
.pol-yok__b{padding:8px 14px;font-size:var(--pol-fs-13);font-weight:600;color:var(--pol-n-500);
  border-right:var(--pol-line-border);transition:var(--pol-t-fast);white-space:nowrap}
.pol-yok__b:last-child{border-right:0}
.pol-yok__b:hover{background:var(--pol-n-50);color:var(--pol-n-700)}
/* Aktif durum: parent'ın data-durum'una göre ilgili buton dolu renk */
.pol-yok[data-durum="1"] .pol-yok__b--k{background:var(--pol-success);color:#fff}
.pol-yok[data-durum="2"] .pol-yok__b--g{background:var(--pol-danger);color:#fff}
.pol-yok[data-durum="3"] .pol-yok__b--m{background:var(--pol-warning);color:#fff}
@media(min-width:621px){
  .pol-yok-tools{display:grid;grid-template-columns:minmax(0,1fr) 340px;align-items:center}
  .pol-yok-tools .pol-tabletools__grow{display:flex;align-items:center;gap:var(--pol-sp-3);min-width:0}
  .pol-yok-tools .pol-tabletools__grow>.pol-small{flex:none}
  .pol-yok-tools .pol-alert{flex:0 1 auto;margin-top:0;padding:6px 10px;white-space:nowrap}
  .pol-yok-alert__desktop{display:inline}
  .pol-yok-alert__mobile{display:none}
  .pol-yok-tools__actions{display:grid;grid-template-columns:1fr 1fr;gap:6px;width:280px;justify-self:center;transform:translateX(10px)}
  .pol-yok-tools__actions .pol-btn{width:100%}
  .pol-yok-tbl .pol-yok{display:flex;width:280px}
  .pol-yok-tbl .pol-yok__b{flex:1}
  .pol-yok-foot{display:grid;grid-template-columns:minmax(0,1fr) 340px}
  .pol-yok-foot #yok-kaydet{width:280px;justify-self:center;transform:translateX(10px)}
}
@media(max-width:620px){
  .pol-yok-tools{align-items:stretch}
  .pol-yok-tools__actions{width:100%}
  .pol-yok-tools__actions .pol-btn{flex:1}
  .pol-yok__b{padding:8px 6px;font-size:var(--pol-fs-12);flex:1}
  /* Yoklama satırı mobilde dikey: isim tam genişlik üstte, durum seçici altta */
  .pol-yok-tbl thead{display:none}
  .pol-yok-tbl tbody tr{display:block;padding:12px var(--pol-sp-5)}
  .pol-yok-tbl tbody td{display:block;padding:0;border:0}
  .pol-yok-tbl .pol-td-center{text-align:left;width:auto}
  .pol-yok-tbl .pol-yok{display:flex;width:100%;margin-top:10px}
}
.pol-alert--sm{padding:9px 12px;font-size:var(--pol-fs-12);gap:8px;line-height:1.45}
.pol-alert--sm .pol-alert__ico{width:15px;height:15px}

.pol-empty{text-align:center;padding:var(--pol-sp-8) var(--pol-sp-5)}
.pol-empty__ico{width:76px;height:76px;margin:0 auto var(--pol-sp-4);border-radius:var(--pol-r-xl);
  display:grid;place-items:center;background:var(--pol-n-50);color:var(--pol-n-300)}
.pol-empty b{display:block;font-size:var(--pol-fs-16);font-weight:700;color:var(--pol-n-700);margin-bottom:4px}
.pol-empty p{font-size:var(--pol-fs-14);color:var(--pol-n-500);margin-bottom:var(--pol-sp-4)}

.pol-toasts{position:fixed;right:var(--pol-sp-5);bottom:var(--pol-sp-5);z-index:120;
  display:flex;flex-direction:column;gap:10px;max-width:calc(100vw - 40px)}
.pol-toast{display:flex;align-items:center;gap:var(--pol-sp-3);min-width:300px;
  padding:13px var(--pol-sp-4);border-radius:var(--pol-r-md);background:var(--pol-ink);color:#fff;
  box-shadow:var(--pol-sh-lg);font-size:var(--pol-fs-14);animation:polToastIn .3s cubic-bezier(.16,1,.3,1)}
.pol-toast__ico{flex:none;color:var(--pol-success)}
.pol-toast--danger .pol-toast__ico{color:#FF7A80}
.pol-toast--warning .pol-toast__ico{color:#FFC94D}
@keyframes polToastIn{from{opacity:0;transform:translateX(24px)}to{opacity:1;transform:translateX(0)}}

/* ---------- 5.11 Sekmeler ---------- */
.pol-tabs{display:flex;gap:2px;padding:5px;border-radius:var(--pol-r-md);background:var(--pol-n-100);
  overflow-x:auto;scrollbar-width:none}
.pol-tabs::-webkit-scrollbar{display:none}
.pol-tabs__t{flex:1;min-width:max-content;height:38px;padding:0 16px;border-radius:9px;
  font-size:var(--pol-fs-14);font-weight:600;color:var(--pol-n-600);transition:var(--pol-t-fast);
  display:inline-flex;align-items:center;justify-content:center;gap:7px}
.pol-tabs__t:hover{color:var(--pol-ink)}
.pol-tabs__t.is-active{background:var(--pol-n-0);color:var(--pol-blue-600);box-shadow:var(--pol-sh-sm)}
.pol-tabs--line{background:none;padding:0;gap:var(--pol-sp-5);border-bottom:var(--pol-line-border);border-radius:0}
.pol-tabs--line .pol-tabs__t{flex:none;height:46px;padding:0;border-radius:0;
  border-bottom:2.5px solid transparent;margin-bottom:-1px}
.pol-tabs--line .pol-tabs__t.is-active{background:none;box-shadow:none;border-bottom-color:var(--pol-blue-500)}

/* ---------- 5.12 Zaman çizelgesi (yarış takvimi / hareketler) ---------- */
.pol-tl{position:relative;padding-left:var(--pol-sp-6)}
.pol-tl::before{content:'';position:absolute;left:9px;top:6px;bottom:6px;width:var(--pol-line-width);background:var(--pol-line-color)}
.pol-tl__i{position:relative;padding-bottom:var(--pol-sp-5)}
.pol-tl__i:last-child{padding-bottom:0}
.pol-tl__i::before{content:'';position:absolute;left:calc(-1 * var(--pol-sp-6) + 4px);top:5px;
  width:12px;height:12px;border-radius:50%;background:var(--pol-n-0);
  border:2.5px solid var(--pol-accent,var(--pol-blue-500))}
.pol-tl__i--done::before{background:var(--pol-accent,var(--pol-blue-500))}
.pol-tl__d{font-size:var(--pol-fs-11);font-weight:700;letter-spacing:.06em;text-transform:uppercase;
  color:var(--pol-accent,var(--pol-blue-500))}
.pol-tl__t{font-size:var(--pol-fs-14);font-weight:600;color:var(--pol-ink);line-height:1.35}
.pol-tl__s{font-size:var(--pol-fs-12);color:var(--pol-n-500)}

/* ---------- 5.13 Liste satırı (dashboard kartı içi) ---------- */
.pol-row{display:flex;align-items:center;gap:var(--pol-sp-3);padding:10px 0}
.pol-row+.pol-row{border-top:var(--pol-line-border)}
.pol-row__tx{flex:1;min-width:0}
.pol-row__tx b{display:block;font-size:var(--pol-fs-14);font-weight:600;color:var(--pol-ink);
  line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pol-row__tx span{font-size:var(--pol-fs-12);color:var(--pol-n-500)}
.pol-row__ico{width:36px;height:36px;flex:none;border-radius:11px;display:grid;place-items:center;
  background:color-mix(in srgb,var(--pol-accent,var(--pol-blue-500)) 12%,#fff);
  color:var(--pol-accent,var(--pol-blue-500))}

/* ---------- 5.14 İkon ölçüleri ---------- */
.pol-i{width:22px;height:22px;flex:none;stroke-width:1.9}
.pol-i--sm{width:18px;height:18px;stroke-width:2.1}
.pol-i--lg{width:26px;height:26px;stroke-width:1.8}
.pol-i--xl{width:34px;height:34px;stroke-width:1.6}

/* ==========================================================================
   6) EKRANLAR
   ========================================================================== */

/* ---------- 6.1 Giriş (OTP) ---------- */
.pol-auth{min-height:100vh;min-height:100dvh;display:grid;grid-template-columns:1.05fr .95fr}
/* Sol zemin: bilerek NÖTR grafit — marka mavisiyle aynı olmasın, logo (mavi
   üçgen + turuncu) zeminle karışmasın. Turuncu ışıma logoyla uyum için kalır. */
.pol-auth__art{position:relative;display:flex;flex-direction:column;justify-content:space-between;
  padding:var(--pol-sp-9) var(--pol-sp-8);color:#fff;overflow:hidden;
  background:linear-gradient(155deg,#333747 0%,#20232E 55%,#14151C 100%)}
.pol-auth__art::after{content:'';position:absolute;right:-140px;bottom:-160px;width:520px;height:520px;
  border-radius:50%;background:radial-gradient(circle,rgba(244,123,32,.28),transparent 68%)}
.pol-auth__art>*{position:relative;z-index:1}
/* Marka bloğu dikeyde ortalanır, telif altta footer olarak kalır */
.pol-auth__brand{margin-block:auto;text-align:center}
.pol-auth__logo{width:min(340px,64%);height:auto;object-fit:contain;
  margin:0 auto var(--pol-sp-5);filter:drop-shadow(0 12px 28px rgba(0,0,0,.35))}
/* Kulüp adı: tek satır, sistem adının üstünde daha sönük bir künye satırı */
.pol-auth__club{font-family:var(--pol-font);font-weight:600;white-space:nowrap;
  font-size:clamp(.9rem,1.4vw,1.15rem);letter-spacing:.04em;color:rgba(255,255,255,.7)}
/* Sistemin adı: asıl ürün adı — büyük, Condensed, turuncu vurgulu; kulüp adından ayrı */
.pol-auth__sys{position:relative;display:inline-block;margin-top:var(--pol-sp-4);padding-top:var(--pol-sp-4);
  font-family:var(--pol-font-cond);font-weight:700;line-height:1.05;letter-spacing:.01em;
  font-size:clamp(2.1rem,3.5vw,3.3rem);color:#fff}
.pol-auth__sys::before{content:'';position:absolute;top:0;left:50%;transform:translateX(-50%);
  width:52px;height:4px;border-radius:var(--pol-r-full);background:var(--pol-orange-500)}
.pol-auth__foot{font-size:var(--pol-fs-13);color:rgba(255,255,255,.5);text-align:center}
.pol-auth__ver{margin-left:6px;padding:2px 8px;border-radius:var(--pol-r-full);
  background:rgba(255,255,255,.08);font-family:var(--pol-font-cond);font-weight:600;
  letter-spacing:.03em;color:rgba(255,255,255,.72)}
.pol-auth__foot--mobil{display:none;font-size:var(--pol-fs-12);color:var(--pol-n-400);
  text-align:center;margin-top:var(--pol-sp-6)}

.pol-auth__panel{display:grid;place-items:center;padding:var(--pol-sp-7) var(--pol-sp-6);
  background:var(--pol-n-0)}
.pol-auth__form{width:100%;max-width:400px}
.pol-auth__step{display:none} .pol-auth__step.is-active{display:block}
.pol-auth__phone{display:flex;align-items:center;gap:8px;padding:12px var(--pol-sp-4);
  border-radius:var(--pol-r-md);background:var(--pol-blue-50);color:var(--pol-blue-700);
  font-size:var(--pol-fs-14);font-weight:600;margin-bottom:var(--pol-sp-5)}
.pol-auth__phone .pol-btn--link{margin-left:auto;font-size:var(--pol-fs-13)}

/* KOD GECERSIZLESTI (is-kod-gecersiz) — kutucuklar ve "Giris Yap" EKRANDAN KALKAR,
   yerine uyari satiri gelir. Bosaltmak yetmez, kutular hic durmamalidir.

   UYARI SATIRI VARSAYILANDA GIZLIDIR ve gizleme kurali IKI SINIFLI yazilir:
   tek sinifla (.pol-otp__uyari{display:none}) yazilirsa ayni ozgullukteki
   .pol-alert{display:flex} onu ezer ve uyari HER ZAMAN gorunur — kod gecerliyken
   bile "Bu kod artik gecerli degil" yazar. */
.pol-auth__step .pol-otp__uyari{display:none}
.pol-auth__step.is-kod-gecersiz .pol-otp__uyari{display:flex;margin-top:var(--pol-sp-5)}
.pol-auth__step.is-kod-gecersiz .pol-otp,
.pol-auth__step.is-kod-gecersiz .pol-otp__submit{display:none}


/* ---------- 6.2 Sporcu seçim ekranı (velinin 2+ sporcusu varsa) ---------- */
.pol-picker{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;justify-content:center;
  padding:var(--pol-sp-8) var(--pol-sp-5);background:
    radial-gradient(1100px 460px at 50% -12%,var(--pol-blue-50),transparent 62%),var(--pol-n-50)}
.pol-picker__head{text-align:center;margin-bottom:var(--pol-sp-7)}
.pol-picker__grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));
  gap:var(--pol-sp-5);max-width:860px;margin-inline:auto;width:100%}
.pol-pcard{position:relative;padding:var(--pol-sp-6);text-align:center;cursor:pointer;background:var(--pol-n-0);
  border:var(--pol-line-border);border-radius:var(--pol-r-xl);transition:var(--pol-t-slow);
  box-shadow:var(--pol-sh-xs)}
.pol-pcard:hover{transform:translateY(-6px);border-color:var(--pol-blue-400);box-shadow:var(--pol-sh-lg)}
.pol-pcard__avatar-wrap{position:relative;width:104px;margin:0 auto var(--pol-sp-4)}
.pol-pcard__ph{width:104px;height:104px;margin:0;border-radius:50%;
  display:grid;place-items:center;overflow:hidden;background:var(--pol-blue-50);
  border:3px solid var(--pol-n-0);box-shadow:0 0 0 3px var(--pol-n-100);transition:var(--pol-t)}
.pol-pcard:hover .pol-pcard__ph{box-shadow:0 0 0 3px var(--pol-blue-300)}
.pol-pcard__ph img{width:100%;height:100%;object-fit:cover}
.pol-pcard__n{font-size:var(--pol-fs-18);font-weight:700;color:var(--pol-ink);line-height:1.25}
.pol-pcard__g{font-size:var(--pol-fs-13);color:var(--pol-n-500);margin-bottom:var(--pol-sp-4)}
.pol-pcard__meta{display:flex;justify-content:center;gap:6px;flex-wrap:wrap;margin-bottom:var(--pol-sp-4)}
.pol-pcard--restricted{background:linear-gradient(180deg,var(--pol-danger-bg),var(--pol-n-0) 52%);
  border-color:var(--pol-danger);box-shadow:0 12px 30px -18px rgba(232,35,42,.55)}
.pol-pcard--restricted:hover{border-color:var(--pol-red-600);box-shadow:0 18px 38px -18px rgba(232,35,42,.55)}
.pol-pcard--restricted .pol-pcard__ph{box-shadow:0 0 0 3px #F8CFD0}
.pol-pcard__status{position:absolute;z-index:2;left:82px;top:-14px;width:138px;min-height:54px;
  display:flex;align-items:center;justify-content:center;gap:6px;padding:8px 10px;
  border:1px solid #F8CFD0;border-radius:10px;background:var(--pol-danger-bg);color:var(--pol-danger-tx);
  box-shadow:0 8px 20px -12px rgba(232,35,42,.65);font-size:var(--pol-fs-11);font-weight:700;line-height:1.2;text-align:left}
.pol-pcard__status .pol-i{width:15px;height:15px;flex:none}

/* ---------- 6.3 Dashboard ---------- */
.pol-hero{
  border-radius:var(--pol-r-xl);padding:var(--pol-sp-6) var(--pol-sp-7);margin-bottom:var(--pol-sp-6);
  color:#fff;position:relative;overflow:hidden;
  background:linear-gradient(125deg,var(--pol-blue-600),var(--pol-blue-800) 72%,var(--pol-ink));
  box-shadow:var(--pol-sh-md);
}
.pol-hero::after{content:'';position:absolute;right:-90px;top:-120px;width:360px;height:360px;
  border-radius:50%;background:radial-gradient(circle,rgba(244,123,32,.30),transparent 66%)}
.pol-hero__in{position:relative;z-index:1;display:flex;align-items:center;gap:var(--pol-sp-5);flex-wrap:wrap}
.pol-hero__ph{width:82px;height:82px;flex:none;border-radius:var(--pol-r-lg);overflow:hidden;
  background:rgba(255,255,255,.15);display:grid;place-items:center;border:2px solid rgba(255,255,255,.3)}
.pol-hero__ph img{width:100%;height:100%;object-fit:cover}
.pol-hero__tx{flex:1;min-width:230px}
.pol-hero__hi{font-size:var(--pol-fs-13);color:rgba(255,255,255,.72);font-weight:600}
.pol-hero__nm{font-family:var(--pol-font-cond);font-size:var(--pol-fs-34);font-weight:700;line-height:1.08}
.pol-hero__facts{display:flex;flex-wrap:wrap;gap:var(--pol-sp-2);margin-top:10px}
.pol-hero__fact{display:inline-flex;align-items:center;gap:7px;padding:6px 13px;border-radius:var(--pol-r-full);
  background:rgba(255,255,255,.13);font-size:var(--pol-fs-13);font-weight:600;
  border:1px solid rgba(255,255,255,.14)}
.pol-hero__fact span{color:rgba(255,255,255,.6);font-weight:500}
/* Malzeme görselleri (liste ve seçim kutuları) */
.pol-mz-img{width:28px;height:28px;border-radius:8px;object-fit:cover;flex:none;
  border:var(--pol-line-border);background:var(--pol-n-50)}
.pol-mz-img--lg{width:40px;height:40px;border-radius:10px}

.pol-hero__mzico{width:28px;height:28px;flex:none;display:grid;place-items:center;
  border-radius:8px;background:var(--pol-n-50);border:var(--pol-line-border);color:var(--pol-n-500)}

/* Modaldeki büyük önizleme — 28px'lik kutuda mayo/bone deseni seçilemiyordu. */
.pol-mzbuyuk{display:grid;place-items:center;min-height:220px;padding:var(--pol-sp-4);
  border:var(--pol-line-border);border-radius:var(--pol-r-md);background:var(--pol-n-25)}
.pol-mzbuyuk img{max-width:100%;max-height:60vh;border-radius:var(--pol-r-md);
  object-fit:contain;background:var(--pol-n-0)}
.pol-mzbuyuk__bos{display:grid;justify-items:center;gap:8px;color:var(--pol-n-500);
  font-size:var(--pol-fs-13);font-weight:600}
.pol-readonly-alert{align-items:flex-start;padding:var(--pol-sp-4) var(--pol-sp-5);box-shadow:0 10px 24px -18px rgba(232,35,42,.55)}
.pol-readonly-alert__icon{width:42px;height:42px;display:grid;place-items:center;flex:none;border-radius:var(--pol-r-md);
  background:var(--pol-n-0);color:var(--pol-danger);box-shadow:var(--pol-sh-xs)}
.pol-readonly-alert__reason{display:block;margin-top:7px;padding-top:7px;border-top:1px solid #F4C4C6}
.pol-readonly-action{min-height:36px;display:flex;align-items:center;justify-content:center;gap:7px;width:100%;
  padding:7px 11px;border:1px solid #F8CFD0;border-radius:var(--pol-r-sm);background:var(--pol-danger-bg);
  color:var(--pol-danger-tx);font-size:var(--pol-fs-12);font-weight:700}
.pol-readonly-action .pol-i{width:15px;height:15px;flex:none}
.pol-readonly-action--compact{display:inline-flex;width:auto;min-height:30px;padding:5px 8px}

.pol-dashgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--pol-sp-5)}
.pol-dashgrid--4{grid-template-columns:repeat(4,1fr)}

/* ---------- 6.4 Admin: eşleme (transfer) paneli ---------- */
.pol-match{display:grid;grid-template-columns:1fr auto 1fr;gap:var(--pol-sp-4);align-items:stretch}
.pol-match__col{display:flex;flex-direction:column;border:var(--pol-line-border);
  border-radius:var(--pol-r-lg);background:var(--pol-n-25);overflow:hidden}
.pol-match__hd{padding:11px var(--pol-sp-4);border-bottom:var(--pol-line-border);background:var(--pol-n-0);
  display:flex;align-items:center;justify-content:space-between;gap:8px}
.pol-match__list{padding:8px;overflow-y:auto;max-height:290px;display:flex;flex-direction:column;gap:5px}
.pol-match__it{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:10px;
  background:var(--pol-n-0);border:var(--pol-line-border);cursor:pointer;transition:var(--pol-t-fast);
  font-size:var(--pol-fs-14);text-align:left;width:100%}
.pol-match__it:hover{border-color:var(--pol-blue-300);background:var(--pol-blue-50)}
.pol-match__it.is-sel{border-color:var(--pol-blue-500);background:var(--pol-blue-50);
  box-shadow:inset 3px 0 0 var(--pol-blue-500)}
.pol-match__mid{display:flex;flex-direction:column;justify-content:center;gap:8px}

/* ==========================================================================
   7) YARDIMCILAR
   ========================================================================== */
.pol-grid{display:grid;gap:var(--pol-sp-5)}
.pol-g2{grid-template-columns:repeat(2,1fr)} .pol-g3{grid-template-columns:repeat(3,1fr)}
.pol-g4{grid-template-columns:repeat(4,1fr)}
/* BES OZET KUTUCUGU (22.10.2026: Sporcular + Aidat Yonetimi girisi). Masaustu 5; 1180 alti 3; telefonda 2 —
   tek kalan besinci kutu tam satira yayilir. */
.pol-g5{grid-template-columns:repeat(5,minmax(0,1fr))}
/* Bes kutuda kart ~190px (1400) / ~170px (390): 30px'lik tutar (1.096.865,00 TL) tasiyordu. Gorunumlerdeki satir ici
   font-size bu kurali ezmesin diye !important. */
.pol-g5 .pol-num{font-size:24px!important;white-space:nowrap}
@media(max-width:1180px){.pol-g5{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:620px){.pol-g5{grid-template-columns:repeat(2,minmax(0,1fr))}.pol-g5 .pol-num{font-size:19px!important}.pol-g5>:last-child:nth-child(odd){grid-column:1/-1}}
.pol-flex{display:flex;align-items:center;gap:var(--pol-sp-3)}
.pol-flex--wrap{flex-wrap:wrap} .pol-flex--between{justify-content:space-between}
.pol-flex--end{justify-content:flex-end} .pol-flex--col{flex-direction:column;align-items:stretch}
.pol-spacer{flex:1}
.pol-mt-2{margin-top:var(--pol-sp-2)} .pol-mt-3{margin-top:var(--pol-sp-3)}
.pol-mt-4{margin-top:var(--pol-sp-4)} .pol-mt-5{margin-top:var(--pol-sp-5)}
.pol-mt-6{margin-top:var(--pol-sp-6)} .pol-mb-0{margin-bottom:0}
.pol-mb-3{margin-bottom:var(--pol-sp-3)} .pol-mb-4{margin-bottom:var(--pol-sp-4)}
.pol-mb-5{margin-bottom:var(--pol-sp-5)} .pol-mb-6{margin-bottom:var(--pol-sp-6)}
.pol-tc{text-align:center} .pol-tr{text-align:right}
.pol-hide{display:none!important}
.pol-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}
.pol-divider{height:var(--pol-line-width);background:var(--pol-line-color);margin-block:var(--pol-sp-5)}
.pol-nowrap{white-space:nowrap}
.pol-data-freshness{display:block;margin-top:2px;color:var(--pol-n-500);font-size:var(--pol-fs-11)}
.pol-trend--down{color:var(--pol-danger)}
.pol-audit-filter{grid-template-columns:180px 180px minmax(240px,1fr) auto;align-items:end}

/* ==========================================================================
   8) RESPONSIVE  —  proje %100 mobil uyumlu
   ========================================================================== */
@media(max-width:1180px){
  .pol-dashgrid,.pol-g3,.pol-dashgrid--4,.pol-g4{grid-template-columns:repeat(2,1fr)}
  .pol-side{width:var(--pol-sidebar-w-mini)}
  .pol-side__scroll{padding-inline:10px}
  .pol-side__head{display:none}
  .pol-side .pol-navitem__txt,.pol-side .pol-navitem__badge,.pol-side__title{display:none}
  .pol-side .pol-navitem{justify-content:center;padding:9px}
  .pol-app--inner .pol-main{padding-inline:var(--pol-sp-5)}
}
@media(max-width:980px){
  /* Mobilde sol/sağ değil ÜST/ALT: koyu marka banner'ı üstte, beyaz form altta.
     Masaüstüyle aynı zemin ve marka; sadece dikey yığılır. */
  .pol-auth{grid-template-columns:1fr}
  .pol-auth__art{padding:var(--pol-sp-8) var(--pol-sp-5) var(--pol-sp-7)}
  .pol-auth__brand{margin-block:0}          /* marka üstte kalsın, dikey ortalanmasın */
  .pol-auth__logo{width:min(200px,52%);margin-bottom:var(--pol-sp-4)}
  .pol-auth__club{white-space:normal}       /* dar ekranda satır kırabilir */
  .pol-auth__sys{font-size:clamp(1.7rem,7vw,2.4rem)}
  .pol-auth__foot{display:none}             /* telif+versiyon formun altındakinde */
  .pol-auth__foot--mobil{display:block}
  .pol-match{grid-template-columns:1fr}
  .pol-match__mid{flex-direction:row;justify-content:center}
}
@media(max-width:820px){
  :root{--pol-topbar-h:64px}
  /* iOS Safari, font-size < 16px olan input'a odaklanınca otomatik yakınlaşır
     ve sayfa yana kayar. Mobilde tüm form alanları 16px → yakınlaşma/taşma olmaz. */
  .pol-input,.pol-select,.pol-textarea{font-size:16px}
  .pol-container,.pol-topbar{padding-inline:var(--pol-sp-4)}
  .pol-topbar{gap:var(--pol-sp-2)}
  .pol-topbar__logo{width:58px;height:46px}
  .pol-app--inner .pol-main{padding:var(--pol-sp-5) var(--pol-sp-4) var(--pol-sp-8)}
  /* Sol menü → off-canvas çekmece */
  .pol-side{position:fixed;top:0;left:0;height:100vh;height:100dvh;width:var(--pol-sidebar-w);z-index:80;
    min-height:0;overflow:hidden;transform:translateX(-100%);box-shadow:var(--pol-sh-lg)}
  .pol-side__scroll{position:static;max-height:none;height:100%;overflow-y:auto;
    padding:calc(var(--pol-sp-5) + env(safe-area-inset-top)) var(--pol-sp-4) calc(var(--pol-sp-5) + env(safe-area-inset-bottom))}
  .pol-side.is-open{transform:translateX(0)}
  .pol-topbar [data-side-toggle]{display:grid}
  .pol-side__head{display:flex}
  .pol-side .pol-navitem__txt,.pol-side .pol-navitem__badge,.pol-side__title{display:block}
  .pol-side .pol-navitem{justify-content:flex-start;padding:8px 10px}
  .pol-side .pol-navitem__badge{display:inline-block}
  .pol-hero{padding:var(--pol-sp-5)}
  .pol-hero__nm{font-size:var(--pol-fs-28)}
  .pol-hero__ph{width:64px;height:64px}
  .pol-topbar__name{display:none}
  .pol-footer__inner{min-height:76px;padding:var(--pol-sp-4);gap:var(--pol-sp-4)}
  .pol-footer--veli .pol-footer__inner{min-height:104px}
  .pol-modal{padding:env(safe-area-inset-top) 0 0;align-items:flex-end}
  .pol-modal__box{max-width:100%;max-height:92vh;max-height:calc(100dvh - env(safe-area-inset-top));border-radius:var(--pol-r-xl) var(--pol-r-xl) 0 0;
    transform:translateY(100%)}
  .pol-modal.is-open .pol-modal__box{transform:translateY(0)}
  .pol-toasts{left:var(--pol-sp-4);right:var(--pol-sp-4);bottom:calc(var(--pol-sp-4) + env(safe-area-inset-bottom))}
  .pol-toast{min-width:0}
}
@media(max-width:620px){
  .pol-dashgrid,.pol-dashgrid--4,.pol-g2,.pol-g3,.pol-g4{grid-template-columns:1fr}
  .pol-athlete__meta{display:none}
  /* Mobil kompakt: metin gizli, ikon + chevron yan yana. */
  .pol-athlete__btn{width:76px;grid-template-columns:32px 18px;gap:8px;padding:6px 9px}
  .pol-topbar__actions{gap:var(--pol-sp-1)}
  .pol-footer__inner{display:flex;justify-content:center}
  .pol-footer__line{display:none}
  .pol-footer__copy{font-size:var(--pol-fs-12);line-height:1.45}
  .pol-footer--veli .pol-footer__inner{min-height:0;flex-direction:column;align-items:stretch;
    padding:var(--pol-sp-6) var(--pol-sp-4);gap:var(--pol-sp-4)}
  .pol-footer--veli .pol-footer__copy{justify-content:flex-start}
  .pol-footer__actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--pol-sp-2)}
  .pol-footer__action{min-height:50px;padding-inline:12px;white-space:normal;text-align:center;line-height:1.25}
  .pol-otp__cell{width:44px;height:56px;font-size:var(--pol-fs-24)}
  .pol-pagehead{align-items:flex-start}
  .pol-modal__foot{flex-direction:column-reverse}
  .pol-modal__foot .pol-btn{width:100%}
  .pol-auth__panel{padding:var(--pol-sp-6) var(--pol-sp-4)}
  .pol-audit-filter{grid-template-columns:1fr}
}
@media(max-width:480px){
  .pol-topbar{padding-inline:var(--pol-sp-3)}
  .pol-athlete__btn{width:44px;min-height:44px;display:flex;padding:4px;justify-content:center}
  .pol-athlete__chevron{display:none}
  .pol-footer__copy{align-items:flex-start;gap:10px;text-align:left}
  .pol-footer__actions{grid-template-columns:1fr}
}
@media(hover:none){
  .pol-card--hover:hover,.pol-card--app:hover,.pol-pcard:hover{transform:none}
  /* dokunmatikte hover takili kalmasin: dudak dinlenme boyuna doner */
  .pol-btn:hover{transform:none;
    box-shadow:0 4px 0 0 var(--pol-btn-edge),0 6px 12px -3px var(--pol-btn-cast)}
  .pol-btn--link:hover{box-shadow:none}
  .pol-btn:hover .pol-btn__ok{transform:none}
}
@media print{
  .pol-topbar,.pol-footer,.pol-side,.pol-toasts,.pol-btn{display:none!important}
  body{background:#fff}
  .pol-card{box-shadow:none;border-color:var(--pol-n-300);break-inside:avoid}
  /* Onay belgesi tek basina, sayfa cercevesi olmadan basilir. Kart kutusu
     kalkar; uzun metin sayfalara BOLUNEBILMELI, bu yuzden break-inside serbest. */
  .pol-belge{max-width:none}
  .pol-belge .pol-belge__metin{break-inside:auto}
  body.is-yazdiriliyor .pol-shell{padding:0;background:#fff}
  body.is-yazdiriliyor .pol-card{border:0;padding:0;break-inside:auto}
  body.is-yazdiriliyor .pol-card__body{padding:0}
}
@page{margin:16mm}
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important}
}

/* ========================================================================== 
   9) ORTAK CALISMA ALANI — 2026 arayuz yenilemesi
   --------------------------------------------------------------------------
   Referans dashboard'un yerlesim mantigi; mevcut Barlow tipografisi, marka
   renkleri, ikonlar ve tum islevler korunarak tek ortak kabuga uygulanir.
   ========================================================================== */

/* Dis cerceve yalniz sayfa zeminidir. Referanstaki gibi sol menu bu zeminde,
   sag calisma alani ise kendi beyaz panelinde durur. */
.pol-shell{
  padding:14px;background:
    radial-gradient(circle at 4% 5%,rgba(43,47,214,.08),transparent 27%),
    radial-gradient(circle at 96% 0,rgba(244,123,32,.08),transparent 24%),
    var(--pol-n-100);
}
.pol-app{
  min-width:0;background:transparent;border:0;border-radius:0;overflow:visible;box-shadow:none;
}

/* Ic sayfalarda gercek iki kolonlu kabuk: sol menu tum yuksekligi, sagda
   sayfa basligi ve calisma alani. .pol-body display:contents ile mevcut HTML
   degismeden grid ogelerini ortak kabuga tasir. */
.pol-app--inner{
  display:grid;grid-template-columns:var(--pol-sidebar-w) minmax(0,1fr);
  grid-template-rows:var(--pol-topbar-h) minmax(0,1fr);column-gap:14px;align-items:stretch;
}
.pol-app--inner .pol-body{display:contents}
.pol-app--inner .pol-topbar{grid-column:2;grid-row:1}
.pol-app--inner .pol-side{grid-column:1;grid-row:1 / 3}
.pol-app--inner .pol-main{
  grid-column:2;grid-row:2;width:100%;min-width:0;padding:20px 22px 32px;
  background:var(--pol-n-0);border:var(--pol-line-border);border-top:0;
  border-radius:0 0 var(--pol-r-xl) var(--pol-r-xl);
}
.pol-app--inner.is-side-mini{grid-template-columns:var(--pol-sidebar-w-mini) minmax(0,1fr)}

/* Sag calisma alani basligi */
.pol-app--inner .pol-topbar{
  position:relative;top:auto;height:var(--pol-topbar-h);z-index:60;
  padding:0 20px;background:rgba(255,255,255,.96);border:var(--pol-line-border);
  border-radius:var(--pol-r-xl) var(--pol-r-xl) 0 0;
  box-shadow:none;backdrop-filter:blur(12px);
}
.pol-app--inner .pol-topbar::after{display:none}
.pol-app--inner .pol-topbar__brand{display:none}
.pol-topbar__page{display:flex;min-width:0;flex-direction:column;justify-content:center;line-height:1.2}
.pol-topbar__page b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  color:var(--pol-ink);font-size:var(--pol-fs-20);font-weight:700;letter-spacing:-.015em}
.pol-topbar__page span{margin-top:3px;color:var(--pol-n-500);font-size:var(--pol-fs-11);
  font-weight:600;letter-spacing:.06em;text-transform:uppercase}
.pol-app--dash .pol-topbar__page{display:none}
.pol-topbar__pageactions{
  display:flex;align-items:center;justify-content:flex-end;gap:10px;min-width:0;
  flex-wrap:nowrap!important;white-space:nowrap;
}
/* Üst bar seçicisinin etiketi SOLDA, aynı satırda (07.10.2026, kullanıcı isteği: "Dönem Seç" yazısı). Eskiden gizliydi. */
.pol-topbar__pageactions > div:has(> .pol-field__label){display:flex;align-items:center;gap:8px}
.pol-topbar__pageactions .pol-field__label{margin:0;white-space:nowrap;color:var(--pol-n-600);font-size:var(--pol-fs-13);font-weight:600}
.pol-topbar__pageactions .pol-select{height:42px}
.pol-app--inner .pol-topbar .pol-iconbtn{
  color:var(--pol-n-600);background:var(--pol-n-0);border:var(--pol-line-border);
  box-shadow:none;
}
.pol-app--inner .pol-topbar .pol-iconbtn:hover{background:var(--pol-n-50);color:var(--pol-blue-600)}
.pol-app--inner .pol-athlete__btn{
  width:100%;min-height:52px;border-radius:var(--pol-r-md);background:var(--pol-n-0);
  box-shadow:var(--pol-sh-xs);
}
.pol-app--inner .pol-athlete__btn:hover{background:var(--pol-n-50);box-shadow:var(--pol-sh-sm)}

/* Hesap karti masaustunde referanstaki gibi sol menude, marka alaninin hemen
   altinda ve ilk menu basliginin ustunde yer alir. Mobilde topbara geri doner. */
.pol-app--inner .pol-athlete{
  position:absolute;top:calc(100% + 14px);left:calc(-1 * var(--pol-sidebar-w));
  width:calc(var(--pol-sidebar-w) - 28px);z-index:75;
}
.pol-app--inner .pol-athlete__menu{left:0;right:auto;width:100%;min-width:100%}

/* Sol menu: marka sabit, menu kendi alaninda kayar. */
.pol-side{
  width:auto;min-width:0;min-height:0;height:100%;display:flex;flex-direction:column;
  align-self:stretch;position:relative;background:transparent;border:0;
  box-shadow:none;overflow:hidden;
}
.pol-side__brand{
  min-height:var(--pol-topbar-h);display:flex;align-items:center;gap:8px;flex:none;
  padding:10px 14px;border:0;background:transparent;
}
.pol-side__brandlink{display:flex;align-items:center;gap:10px;min-width:0;flex:1;text-decoration:none}
.pol-side__brandlink:hover{text-decoration:none}
.pol-side__brandlink img{width:44px;height:48px;object-fit:contain;flex:none}
.pol-side__brandtext{display:flex;min-width:0;flex-direction:column;line-height:1.15}
.pol-side__brandtext b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  color:var(--pol-ink);font-size:var(--pol-fs-14);font-weight:700}
.pol-side__brandtext span{margin-top:3px;color:var(--pol-orange-600);font-size:10px;
  font-weight:700;letter-spacing:.07em;text-transform:uppercase}
.pol-side__brand .pol-side__toggle{margin-left:auto;color:var(--pol-n-500)}
.pol-side__scroll{
  min-height:0;height:auto;flex:1;padding:82px 14px 14px;overflow-x:hidden;overflow-y:auto;
  scrollbar-width:thin;scrollbar-color:var(--pol-n-300) transparent;
}
.pol-side__title{margin:0 8px 7px;color:var(--pol-n-400);font-size:10px;letter-spacing:.09em}
.pol-side__group+.pol-side__group{margin-top:18px;padding-top:14px;border-top:var(--pol-line-border)}
.pol-side__list{gap:3px}
.pol-navitem{
  position:relative;min-height:42px;gap:10px;padding:6px 9px;border:0;border-radius:10px;
  background:transparent;color:var(--pol-n-600);font-size:var(--pol-fs-14);font-weight:500;
  box-shadow:none;
}
.pol-navitem:hover{background:var(--pol-n-50);color:var(--pol-ink);transform:none}
.pol-navitem__ico{
  width:30px;height:30px;border-radius:8px;background:transparent;color:var(--pol-n-500);box-shadow:none;
}
.pol-navitem.is-active{
  background:color-mix(in srgb,var(--pol-accent,var(--pol-blue-500)) 9%,var(--pol-n-0));
  color:var(--pol-ink);box-shadow:none;font-weight:600;
}
.pol-navitem.is-active::before{content:'';position:absolute;left:0;top:9px;bottom:9px;width:3px;
  border-radius:0 3px 3px 0;background:var(--pol-accent,var(--pol-blue-500))}
.pol-navitem.is-active:hover{color:var(--pol-ink)}
.pol-navitem.is-active .pol-navitem__ico{
  background:color-mix(in srgb,var(--pol-accent,var(--pol-blue-500)) 13%,var(--pol-n-0));
  color:var(--pol-accent,var(--pol-blue-500));
}
.pol-navitem__badge{margin-left:auto}
.pol-navsub{
  display:flex;flex-direction:column;gap:2px;margin:2px 8px 6px 42px;padding:4px 0 4px 10px;
  border-left:var(--pol-line-border);
}
.pol-navsub__item{
  appearance:none;width:100%;min-height:32px;display:flex;align-items:center;gap:8px;
  padding:5px 8px;border:0;border-radius:8px;background:transparent;color:var(--pol-n-600);
  font:inherit;font-size:var(--pol-fs-12);font-weight:600;text-align:left;cursor:pointer;
  text-decoration:none;transition:var(--pol-t-fast);
}
.pol-navsub__item:hover{background:var(--pol-n-0);color:var(--pol-blue-600);text-decoration:none}
.pol-navsub__item .pol-i{flex:none;color:var(--pol-blue-500)}
.pol-navsub__txt{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pol-navsub__item:disabled{opacity:.45;cursor:not-allowed;pointer-events:none}

/* Sayfa basligi yalniz ortak topbar'dadir. Icerikte tekrar eden ust bilgi karti
   kullanilmaz; pol-pagehead sadece gercek alt bolum basliklarinda yalindir. */
.pol-app--inner .pol-pagehead{align-items:center;margin-bottom:16px;padding:0;
  border:0;border-radius:0;background:transparent}
.pol-app--inner .pol-pagehead .pol-h1{display:none}
.pol-app--inner .pol-pagehead__t:has(>.pol-h1:only-child){display:none}
.pol-app--inner .pol-pagehead:has(>.pol-pagehead__t:only-child>.pol-h1:only-child){display:none}
.pol-app--inner .pol-pagehead__t>.pol-small{font-size:var(--pol-fs-13);color:var(--pol-n-500)}
.pol-app--inner .pol-main>[data-choice]{padding:12px 14px;border:var(--pol-line-border);
  border-radius:var(--pol-r-lg);background:var(--pol-n-0)}

/* Kartlar login ekranindaki marka diliyle aynidir: belirgin yuvarlaklik,
   yumusak golge ve hover'da hafif yukselme tum projede ortak calisir. */
.pol-grid,.pol-dashgrid{gap:16px}
.pol-card{
  background:var(--pol-n-0);border:var(--pol-line-border);border-radius:var(--pol-r-lg);
  box-shadow:var(--pol-sh-xs);
}
.pol-card--hover:hover{transform:translateY(-4px);border-color:var(--pol-n-100);box-shadow:var(--pol-sh-md)}
.pol-card--app:hover{transform:translateY(-5px);border-color:var(--pol-n-100);box-shadow:var(--pol-sh-lg)}
.pol-card__head{padding:var(--pol-sp-5) var(--pol-sp-5) 0;gap:var(--pol-sp-3)}
/* KART BAŞLIĞI TABLOYA YAPIŞMAZ (01.10.2026, PROJE GENELİ). Başlığın alt boşluğu 0 olduğu için
   hemen ardından gelen tablonun sütun başlıkları kart başlığına değiyordu (sporcu kartı:
   Antrenman Geçmişi, Kişisel En İyi Dereceler …). Çizgili başlık (--bordered) hariç — orada
   ayırıcı çizgi zaten var. */
.pol-card__head:not(.pol-card__head--bordered) + .pol-tablescroll,
.pol-card__head:not(.pol-card__head--bordered) + .pol-tablewrap,
.pol-card__head:not(.pol-card__head--bordered) + .pol-table{margin-top:var(--pol-sp-4)}
.pol-card__body{padding:var(--pol-sp-5)}
.pol-card__foot{padding:var(--pol-sp-4) var(--pol-sp-5);background:var(--pol-n-25);
  border-radius:0 0 var(--pol-r-lg) var(--pol-r-lg)}
.pol-card__ico{width:44px;height:44px;border-radius:13px}
.pol-card__t b{font-size:var(--pol-fs-16);font-weight:700}
.pol-card--app:hover .pol-card__go{gap:11px}

/* Koyu banner yerine profil/ozet karti. */
.pol-hero{
  padding:18px 20px;margin-bottom:16px;color:var(--pol-n-700);border:var(--pol-line-border);
  border-radius:var(--pol-r-lg);background:var(--pol-n-0);box-shadow:var(--pol-sh-xs);
}
.pol-hero::after{display:none}
.pol-hero__in{gap:16px}
.pol-hero__ph{width:64px;height:64px;border:var(--pol-line-border);border-radius:12px;
  background:var(--pol-blue-50)}
.pol-hero__ph>.pol-avatar:not(.pol-avatar--orange){color:var(--pol-blue-600)}
.pol-hero__hi{color:var(--pol-n-500);font-size:var(--pol-fs-12);font-weight:500}
.pol-hero__nm{color:var(--pol-ink);font-size:var(--pol-fs-28)}
.pol-hero__facts{gap:7px;margin-top:9px}
.pol-hero__fact{padding:5px 10px;border:var(--pol-line-border);border-radius:8px;
  background:var(--pol-n-25);color:var(--pol-n-700);font-size:var(--pol-fs-12);font-weight:600}
.pol-hero__fact span{color:var(--pol-n-500);font-weight:500}

/* Form, filtre, tablo ve modal ayni yuzey dilinde. Butonlar login ekranindaki
   ortak dokunsal buton sistemini aynen kullanir; burada ezilmez. */
.pol-chip{height:36px;border-radius:9px;font-weight:500}
.pol-chip.is-active{box-shadow:inset 0 0 0 1px var(--pol-blue-500)}
.pol-input,.pol-select,.pol-textarea,.pol-multiselect__btn{border-radius:10px;background:var(--pol-n-0)}
.pol-tablewrap{border-radius:14px;box-shadow:none;background:var(--pol-n-0)}
.pol-tabletools{padding:14px 16px;background:var(--pol-n-0)}
.pol-table thead th{padding:11px 16px;background:var(--pol-n-25)}
.pol-table tbody td{padding:12px 16px}
.pol-tablefoot{padding:12px 16px;background:var(--pol-n-0)}
.pol-modal__box{border-radius:16px;box-shadow:0 24px 64px -24px rgba(14,17,48,.42)}
.pol-modal__head{padding:16px 18px}
.pol-modal__body{padding:18px}
.pol-modal__foot{padding:14px 18px;background:var(--pol-n-25)}

/* Footer sag panelin parcasi degildir; sayfa zemini uzerinde bagimsiz kalir. */
.pol-footer{
  width:auto;margin:0;overflow:hidden;color:var(--pol-n-600);background:transparent;
  border:0;border-radius:0;box-shadow:none;
}
.pol-footer::before{display:none}
.pol-footer__inner,.pol-footer--veli .pol-footer__inner{min-height:58px;padding:10px 18px;gap:16px}
.pol-footer__line{background:linear-gradient(90deg,transparent,var(--pol-line-color))}
.pol-footer__line:last-child{background:linear-gradient(90deg,var(--pol-line-color),transparent)}
.pol-footer__copy{color:var(--pol-n-500);font-size:var(--pol-fs-12)}
.pol-footer__actions{gap:8px}
.pol-footer__action{font-size:var(--pol-fs-13)}

/* Masaustu dar menu */
@media(min-width:1181px){
  .pol-app.is-side-mini .pol-side__brand{padding-inline:8px;gap:4px}
  .pol-app.is-side-mini .pol-side__brandtext{display:none}
  .pol-app.is-side-mini .pol-side__brandlink{justify-content:center}
  .pol-app.is-side-mini .pol-side__brandlink img{width:32px;height:40px}
  .pol-app.is-side-mini .pol-side__toggle{margin-left:0}
  .pol-app.is-side-mini .pol-navitem.is-active::before{display:none}
  .pol-app.is-side-mini .pol-athlete{
    left:calc(-1 * var(--pol-sidebar-w-mini) - 6px);width:60px;
  }
  .pol-app.is-side-mini .pol-athlete__btn{display:flex;justify-content:center;padding:7px}
  .pol-app.is-side-mini .pol-athlete__meta,.pol-app.is-side-mini .pol-athlete__chevron{display:none}
  .pol-app.is-side-mini .pol-athlete__menu{width:300px;min-width:300px}
  .pol-app.is-side-mini .pol-navsub{align-items:center;margin:2px 0 6px;padding:0;border:0}
  .pol-app.is-side-mini .pol-navsub__item{width:38px;height:34px;min-height:34px;justify-content:center;padding:0}
  .pol-app.is-side-mini .pol-navsub__txt{display:none}
}

@media(max-width:1180px){
  .pol-shell{padding:10px}
  .pol-app--inner{grid-template-columns:var(--pol-sidebar-w-mini) minmax(0,1fr)}
  .pol-app--inner .pol-topbar{top:auto}
  .pol-app--inner .pol-athlete{left:calc(-1 * var(--pol-sidebar-w-mini) - 6px);width:60px}
  .pol-app--inner .pol-athlete__btn{display:flex;justify-content:center;padding:7px}
  .pol-app--inner .pol-athlete__meta,.pol-app--inner .pol-athlete__chevron{display:none}
  /* Menu bu aralikta OTOMATIK mini olur; ad/rol yazisi gizlendigi icin kart
     bos bir daireye donmesin diye ikon burada da gorunur. */
  .pol-app--inner .pol-athlete__ico{display:block}
  .pol-app--inner .pol-athlete__menu{width:300px;min-width:300px}
  .pol-topbar__pageactions{gap:8px}
  .pol-topbar__pageactions .pol-btn{height:40px;padding-inline:12px;font-size:var(--pol-fs-13)}
  .pol-topbar__pageactions .pol-select{width:180px!important;height:40px}
  .pol-side__brand{justify-content:center;padding-inline:8px}
  .pol-side__brandtext{display:none}
  .pol-side__brandlink{justify-content:center}
  .pol-side__brandlink img{width:34px;height:42px}
  .pol-side__scroll{padding-inline:10px}
  .pol-navsub{align-items:center;margin:2px 0 6px;padding:0;border:0}
  .pol-navsub__item{width:38px;height:34px;min-height:34px;justify-content:center;padding:0}
  .pol-navsub__txt{display:none}
  .pol-footer{margin:0}
}

@media(max-width:820px){
  .pol-shell{padding:0;background:var(--pol-n-50)}
  .pol-app{border:0;border-radius:0;overflow:visible;box-shadow:none}
  .pol-app--inner{display:flex;flex-direction:column}
  .pol-app--inner .pol-body{display:contents}
  .pol-app--inner .pol-topbar{position:relative;top:auto;width:100%;min-height:var(--pol-topbar-h);
    padding-inline:14px;flex:none;border:0;border-bottom:var(--pol-line-border);border-radius:0}
  .pol-app--inner .pol-topbar:has(.pol-topbar__pageactions){
    height:auto;min-height:calc(var(--pol-topbar-h) + 54px);flex-wrap:wrap;
    align-content:center;padding-block:10px;
  }
  /* Filtreli sayfalar (Aidat, Spor Merkezi, Tahsilat …): 1. satır menü · başlık · ana sayfa ·
     hesap YAN YANA (filtresiz sayfalardaki gibi), 2. satır yalnız filtre. Eylem kutusu
     display:contents ile "erir", çocukları üst barın kendi öğesi olur. 01.10.2026'ya kadar
     hesap kartı mutlak konumla sağ üste alınıyor, ana sayfa ikonu ise filtreyle birlikte
     ikinci satırda kalıyordu — iki ikon alt alta görünüyordu. */
  .pol-app--inner .pol-topbar:has(.pol-topbar__pageactions) .pol-topbar__page{flex:1;min-width:0}
  .pol-app--inner .pol-topbar:has(.pol-topbar__pageactions) .pol-topbar__spacer{display:none}
  .pol-app--inner .pol-topbar:has(.pol-topbar__pageactions) .pol-topbar__actions{display:contents}
  .pol-app--inner .pol-topbar:has(.pol-topbar__pageactions) .pol-topbar__pageactions{order:3}
  /* Kart başlığı sığmazsa alt satıra sarar — Grup Sporcuları'nda uzun antrenör adı rozeti
     sayfayı 43px yana taşırıyordu (01.10.2026). */
  .pol-card__head{flex-wrap:wrap}
  .pol-card__head .pol-badge{max-width:100%;white-space:normal;overflow-wrap:anywhere}
  /* İkonlar arası boşluk filtresiz sayfalardakiyle aynı (eylem kutusu gap'i 4px; burada üst
     barın 8px'lik gap'i devreye girer). */
  .pol-app--inner .pol-topbar:has(.pol-topbar__pageactions) .pol-topbar__actions > :not(.pol-topbar__pageactions) + :not(.pol-topbar__pageactions){margin-left:-4px}
  .pol-topbar__pageactions{width:100%;max-width:100%;justify-content:flex-start;
    overflow-x:auto;padding:2px 2px 6px;scrollbar-width:thin}
  .pol-topbar__pageactions .pol-select{width:170px!important}
  .pol-topbar__page b{font-size:var(--pol-fs-18)}
  .pol-topbar__page span{display:none}
  .pol-app--inner .pol-main{width:100%;padding:16px 14px 26px;border:0;border-radius:0}
  .pol-app--inner .pol-athlete{position:relative;top:auto;left:auto;width:auto;z-index:auto}
  .pol-app--inner .pol-athlete__btn{width:76px;min-height:50px;display:grid;
    grid-template-columns:32px 18px;justify-content:normal;padding:6px 9px}
  .pol-app--inner .pol-athlete__chevron{display:block}
  .pol-app--inner .pol-athlete__menu{left:auto;right:0;width:auto;min-width:300px}
  .pol-side{position:fixed;top:0;left:0;width:min(304px,88vw);height:100dvh;z-index:80;
    transform:translateX(-100%);background:var(--pol-n-0);border-right:var(--pol-line-border);
    box-shadow:var(--pol-sh-lg)}
  .pol-side.is-open{transform:translateX(0)}
  .pol-side__brand{min-height:64px;justify-content:flex-start;padding:8px 14px}
  .pol-side__brandtext{display:flex}
  .pol-side__brandlink{justify-content:flex-start}
  .pol-side__brandlink img{width:38px;height:46px}
  .pol-side__scroll{height:auto;padding:12px 14px calc(18px + env(safe-area-inset-bottom))}
  .pol-side .pol-navitem__txt,.pol-side .pol-navitem__badge,.pol-side__title{display:block}
  .pol-side .pol-navitem{justify-content:flex-start;padding:6px 9px}
  .pol-side .pol-navsub{align-items:stretch;margin:2px 8px 6px 42px;padding:4px 0 4px 10px;
    border-left:var(--pol-line-border)}
  .pol-side .pol-navsub__item{width:100%;height:auto;min-height:32px;justify-content:flex-start;padding:5px 8px}
  .pol-side .pol-navsub__txt{display:block}
  .pol-app--inner .pol-pagehead{padding:12px 14px}
  .pol-footer{border:0;border-radius:0;box-shadow:none}
  .pol-footer__inner,.pol-footer--veli .pol-footer__inner{padding:12px 14px}
}

@media(max-width:620px){
  .pol-grid,.pol-dashgrid{gap:12px}
  .pol-hero{padding:15px}
  .pol-hero__tx{min-width:180px}
  .pol-footer--veli .pol-footer__inner{padding:16px 14px}
}

@media(max-width:480px){
  .pol-app--inner .pol-athlete__btn{width:44px;min-height:44px;display:flex;padding:4px;justify-content:center}
  .pol-app--inner .pol-athlete__chevron{display:none}
  .pol-app--inner .pol-topbar:has(.pol-topbar__pageactions){min-height:calc(var(--pol-topbar-h) + 52px)}
  .pol-topbar__pageactions .pol-btn{height:38px;padding-inline:10px;font-size:var(--pol-fs-12)}
  .pol-topbar__pageactions .pol-select{width:150px!important;height:38px;font-size:var(--pol-fs-12)}
}

/* Veli dashboardu ödeme kartı: solda kulüp aidatı, sağda Spor Merkezi ödemesi. */
.pol-payment-card{overflow:hidden}
.pol-payment-card__body{
  display:grid;grid-template-columns:repeat(2,minmax(0,1fr));padding:16px 0 0!important
}
.pol-payment-card__item{
  position:relative;min-width:0;min-height:166px;padding:16px 20px 18px;
  display:flex;flex-direction:column;align-items:flex-start;color:var(--pol-ink)
}
.pol-payment-card__item + .pol-payment-card__item{border-left:var(--pol-line-border)}
.pol-payment-card__label{
  display:inline-flex;align-items:center;gap:7px;margin-bottom:14px;
  color:var(--pol-n-600);font-size:var(--pol-fs-13);font-weight:700
}
.pol-payment-card__label .pol-i{color:var(--pol-accent,var(--pol-blue-500))}
/* Rozet akış içindedir (29.09.2026): mutlak konumdayken dar kartta "Spor Merkezi"
   başlığının üstüne biniyordu. Başlığın altında, tutarın üstünde durur. */
.pol-payment-card__status{position:static;margin:0 0 8px}
/* Ana sayfada iki ödeme türünün Ödendi metni aynı ölçüdedir. */
.pol-payment-card__status.pol-badge--success,.pol-payment-card__odendi{font-size:var(--pol-fs-14);line-height:1.3}
.pol-payment-card__value{
  display:block;max-width:100%;font-family:var(--pol-font-cond);font-size:var(--pol-fs-22);
  line-height:1.15;color:var(--pol-ink)
}
.pol-payment-card__meta{margin-top:5px;font-size:var(--pol-fs-12);color:var(--pol-n-500)}
.pol-payment-card__action{width:100%;margin-top:auto;justify-content:center}
.pol-payment-card__periods{display:grid;gap:12px;padding:16px 20px 18px}
.pol-payment-card__period{min-width:0;border:var(--pol-line-border);border-radius:var(--pol-r-md);overflow:hidden}
.pol-payment-card__period-title{display:block;padding:12px 16px 0;color:var(--pol-n-500);
  font-size:var(--pol-fs-12);font-weight:600}
.pol-payment-card__body--aidat{grid-template-columns:minmax(0,1fr)}
.pol-payment-card__paylink{display:inline-flex;align-items:center;align-self:flex-start;margin-top:16px;
  padding:3px 7px;border:0;border-radius:var(--pol-r-sm);
  background:var(--pol-blue-500);color:#fff;font-size:var(--pol-fs-12);font-weight:700;line-height:1.3;
  text-decoration:none;max-width:100%;white-space:normal}
.pol-payment-card__paylink:hover{background:var(--pol-blue-600);color:#fff;text-decoration:none}
/* Önceki dönemde de mevcut dönemin yarım sütunundaki kullanılabilir genişlik uygulanır. */
@media(max-width:820px){
  .pol-payment-card__body--aidat .pol-payment-card__paylink{max-width:calc(50% - 20px)}
  .pol-payment-card__action[data-odemebelge]{margin-top:12px}
}
.pol-odeme-donemleri{border:0;padding:0;min-width:0;margin-left:0;margin-right:0}
.pol-odeme-donemleri legend{padding:0;margin-bottom:12px}
.pol-odeme-donemleri__grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.pol-odeme-donem{position:relative;display:block;min-width:0;cursor:pointer}
.pol-odeme-donem>input{position:absolute;opacity:0;width:1px;height:1px}
.pol-odeme-donem__govde{display:flex;flex-direction:column;justify-content:flex-start;gap:8px;
  box-sizing:border-box;height:100%;padding:12px;border:1px solid var(--pol-n-200);
  border-radius:12px;background:var(--pol-n-0);transition:var(--pol-t-fast)}
.pol-odeme-donem:hover .pol-odeme-donem__govde{border-color:var(--pol-blue-600)}
.pol-odeme-donem>input:checked+.pol-odeme-donem__govde{border-color:var(--pol-blue-600);background:var(--pol-blue-50)}
.pol-odeme-donem>input:focus+.pol-odeme-donem__govde{outline:2px solid var(--pol-blue-600);outline-offset:2px}
.pol-odeme-donem__check{width:22px;height:22px;border:2px solid var(--pol-n-300);border-radius:50%;position:relative;flex:none}
.pol-odeme-donem>input:checked+.pol-odeme-donem__govde .pol-odeme-donem__check{border-color:var(--pol-blue-600);background:var(--pol-blue-600)}
.pol-odeme-donem>input:checked+.pol-odeme-donem__govde .pol-odeme-donem__check::after{content:'';position:absolute;left:5px;top:2px;width:6px;height:10px;border:solid white;border-width:0 2px 2px 0;transform:rotate(45deg)}
.pol-odeme-donem__ad{font-weight:600;color:var(--pol-ink);line-height:1.35;overflow-wrap:break-word}
.pol-odeme-donem__tutar{font-size:var(--pol-fs-24);color:var(--pol-ink);line-height:1.2}
.pol-odeme-donem__tarih{font-size:var(--pol-fs-12);color:var(--pol-n-500);line-height:1.35}
.pol-odeme-donem>input:disabled+.pol-odeme-donem__govde{background:var(--pol-n-50);border-color:var(--pol-n-200)}
.pol-odeme-donem__kilit{font-size:var(--pol-fs-12);color:var(--pol-n-500);line-height:1.3}
.pol-odemesutun__baslik{align-items:center;flex-wrap:wrap}
.pol-odemesutun__borc{margin-left:auto;text-align:right;max-width:50%}
.pol-odemesutun__borc-tutar{display:inline-block;white-space:nowrap}
.pol-payment-card__total{margin-left:auto;max-width:45%;text-align:right;font-size:var(--pol-fs-16);font-weight:700;line-height:1.3;color:var(--pol-ink)}
.pol-payment-card__total span{display:inline-block;white-space:nowrap}
.pol-payment-card .pol-card__head{flex-wrap:nowrap}
.pol-odeme-donem[tabindex]:focus-visible .pol-odeme-donem__govde{outline:2px solid var(--pol-blue-600);outline-offset:2px}

@media(max-width:620px){
  .pol-payment-card__body--aidat .pol-payment-card__paylink{max-width:calc(50% - 12px)}
  .pol-payment-card__periods{padding:16px 12px 14px}
  .pol-payment-card__period-title{padding:12px 12px 0}
  .pol-odeme-donemleri__grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
  .pol-odeme-donem__govde{padding:10px;gap:7px}
  .pol-odeme-donem__tutar{font-size:var(--pol-fs-20)}
  .pol-payment-card__item{min-height:154px;padding:14px 12px 16px}
  .pol-payment-card__label{margin-bottom:12px;font-size:var(--pol-fs-12)}
  .pol-payment-card__status{position:static;margin:0 0 8px}
  .pol-payment-card__value{font-size:var(--pol-fs-18)}
}

/* ==========================================================================
   10) ONARIM — 31.08.2026
   --------------------------------------------------------------------------
   pol.css icerik kaybetmisti: mobil akordiyon sistemi, rapor/grup kartlari,
   sporcu fotografi, odeme sutunu ve bir dizi yardimci sinif dosyadan dusmustu.
   Bu bolum onlari geri getirir. Kurallar SONDA durdugu icin ayni ozgullukteki
   eski tanimlari ezer — ustteki bloklara dokunmadan duzeltme yapilir.
   ========================================================================== */

/* ---------- 10.1 Eksik tokenlar ----------
   Kenarliklar fazla soluktu; kart/tablo ICINDEKI ayiricilar icin ayri ton. */
:root{
  --pol-line-color:#CFD7E4;
  --pol-line-inner:#DCE2EC;
  --pol-line-inner-border:var(--pol-line-width) solid var(--pol-line-inner);
}

/* ---------- 10.2 Eksik yardimcilar ---------- */
.pol-mb-1{margin-bottom:var(--pol-sp-1)}
.pol-mb-2{margin-bottom:var(--pol-sp-2)}
.pol-mt-1{margin-top:var(--pol-sp-1)}
.pol-badge--neutral{background:var(--pol-n-100);color:var(--pol-n-600)}
.pol-toast--success{background:var(--pol-success)}
.pol-toast--info{background:var(--pol-blue-500)}

/* ---------- 10.3 Tablo araclari / sayfalama ----------
   .pol-tablepager JS tarafindan uretilir; .pol-tablefoot--auto da oyle. */
.pol-tablefoot--auto{border-top:var(--pol-line-border);background:var(--pol-n-25)}
.pol-tablefoot--pager-only{justify-content:flex-end}
.pol-tablepager{margin:0}
/* SUZGEC SATIRLARINDA .pol-field ALT BOSLUGU SIFIRLANIR.
   Izgara/flex hizalamayi ogenin MARGIN kenarina yaptigi icin (.pol-field'in
   16px alt boslugu var) gonder dugmesi input'larin 16px altina kayiyor.

   IKI SUZGEC AILESI DE AYNI KURALDA: 31.08.2026 onariminda kural yalniz
   .pol-tabletools--filtre icin geri yazildi, .pol-audit-filter atlandi ve
   Islem Kayitlari sayfasinda dugme asagida asili kaldi (08.09.2026'da bulundu).
   Ayni satirda tutuluyorlar ki bir daha ayrisamasinlar. */
.pol-tabletools--filtre{align-items:flex-end}
.pol-tabletools--filtre .pol-field,
.pol-audit-filter .pol-field{margin-bottom:0}
.pol-tabletools__filtre{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.pol-tabletools__filtrelabel{white-space:nowrap;margin:0}
.pol-select--sm{height:38px;padding:0 32px 0 12px;font-size:var(--pol-fs-13);
  width:auto;min-width:110px}

/* ---------- 10.4 Sunucu tarafli siralama basligi ----------
   Hucrenin tamami baglantidir ama baslik tipografisi degismez. */
.pol-table thead th .pol-sort-ico{display:inline-block;vertical-align:-3px;margin-left:4px}
.pol-table thead th > .pol-th-sort{display:inline-flex;align-items:center;
  color:inherit;text-decoration:none;font:inherit;letter-spacing:inherit}
.pol-table thead th.is-sorted{color:var(--pol-blue-500)}
.pol-table thead th > .pol-th-sort:focus-visible{outline:2px solid var(--pol-blue-500);
  outline-offset:2px;border-radius:3px}

/* ---------- 10.5 Mobil hamburger ----------
   Masaustunde gizli; 820px altinda topbar'da gorunur ve YALNIZ off-canvas
   menuyu acar (menu daraltma dugmesi ayridir, sol menunun marka satirindadir). */
.pol-side-toggle--mobile{display:none}

/* ---------- 10.6 Grup / rapor kartlari ----------
   Kartlar esit yukseklikte olsun ve alt eylem satiri hep dibe otursun. */
.pol-grupgrid{align-items:stretch;grid-auto-rows:1fr}
/* min-width:0 SART: grid cocugu varsayilan min-width:auto ile icerigin
   parca genisliginin altina inemez ve izgara sutununu asar (390px'te 1px tasma). */
.pol-grupgrid>.pol-card{height:100%;display:flex;flex-direction:column;min-width:0}
.pol-grid>*{min-width:0}
.pol-grupgrid>.pol-card>.pol-card__body{flex:1;display:flex;flex-direction:column}
.pol-grupgrid>.pol-card>.pol-card__body>*:last-child{margin-top:auto}
/* Kart ici tek satirlik bilgi cubugu — tablo cercevesiyle ayni dil */
.pol-kartsatir{padding:10px var(--pol-sp-4);border-radius:var(--pol-r-md);
  background:var(--pol-n-25);border:var(--pol-line-inner-border)}
/* Grup adinin yanindaki ders ozeti: ad kadar bagirmasin */
.pol-ders{font-weight:600;color:var(--pol-n-500)}

.pol-rapor-kart{transition:var(--pol-t-fast)}
.pol-rapor-kart.is-eklendi{border-color:var(--pol-success);
  box-shadow:0 0 0 1px var(--pol-success) inset}
.pol-rapor-kart.is-eklendi .pol-kartsatir{background:var(--pol-n-0)}
.pol-rapor-kart__btn{pointer-events:none}
.pol-rapor-baslik{margin:var(--pol-sp-5) 0 var(--pol-sp-3);font-family:var(--pol-font-cond);
  font-weight:700;font-size:var(--pol-fs-16);color:var(--pol-ink)}
.pol-rapor-baslik:first-child{margin-top:0}
.pol-rapor-tablo{margin-bottom:var(--pol-sp-4)}
.pol-rapor-toplam td{font-weight:700;color:var(--pol-ink);background:var(--pol-n-25);
  border-top:var(--pol-line-border)}
.pol-rapor-genel{margin-top:var(--pol-sp-5);padding:var(--pol-sp-4);border-radius:var(--pol-r-md);
  background:var(--pol-blue-50);color:var(--pol-blue-700);font-weight:700;text-align:center}

/* ---------- 10.7 TEK MODAL GENISLIGI: 840px ----------
   --sm / --lg varyantlari KALDIRILDI, yenisi acilmaz. Tek bilincli istisna
   spor merkezi raporunun 13 sutunlu tablosudur. */
.pol-modal__box{max-width:840px}
.pol-modal__box--sm,.pol-modal__box--lg{max-width:840px}
.pol-modal__box--rapor{max-width:min(1720px,calc(100vw - 32px))}

/* ---------- 10.8 Sporcu fotografi ----------
   Listede kucuk yuvarlak gorsel; modalda secim/onizleme alani. */
.pol-foto{width:34px;height:34px;flex:none;border-radius:50%;object-fit:cover;
  border:var(--pol-line-border);background:var(--pol-n-50)}
.pol-kartfoto{width:104px;height:104px;border-radius:var(--pol-r-lg);object-fit:cover;
  border:var(--pol-line-border);background:var(--pol-n-50)}
/* Sporcu modali: solda bilgi alanlari, sagda fotograf sutunu */
.pol-sporcubilgi{display:grid;grid-template-columns:minmax(0,1fr) 150px;gap:0 var(--pol-sp-5)}
.pol-sporcubilgi__alanlar{min-width:0}
.pol-sporcubilgi__foto{min-width:0}
/* Dikey dizilis: onizleme ustte, dugmeler altta — dar sutuna sigsin diye */
.pol-fotoalan{display:flex;align-items:center;gap:var(--pol-sp-3)}
.pol-fotoalan--dikey{flex-direction:column;align-items:stretch;gap:var(--pol-sp-2)}
.pol-fotoalan__on{width:100%;aspect-ratio:1;border-radius:var(--pol-r-lg);object-fit:cover;
  border:var(--pol-line-border);background:var(--pol-n-50)}
/* [hidden] UA kurali display:grid tarafindan ezilebiliyor — acikca sifirlanir */
.pol-fotoalan__on[hidden],.pol-fotoalan__bos[hidden]{display:none}
.pol-fotoalan__bos{width:100%;aspect-ratio:1;border-radius:var(--pol-r-lg);
  border:1px dashed var(--pol-line-color);background:var(--pol-n-25);
  display:grid;place-items:center;color:var(--pol-n-400);font-size:var(--pol-fs-12);
  text-align:center;padding:var(--pol-sp-3)}
.pol-fotoalan__is{display:flex;gap:6px;flex-wrap:wrap}
.pol-fotoalan__is .pol-btn{flex:1;justify-content:center}

/* ---------- 10.9 Sporcu karti listeleri ---------- */
/* SON ANTRENMANLAR icin ayri bir liste sinifi YOKTUR: antrenman gecmisi artik
   kartin diger bolumleri gibi .pol-table'dir. Eski .pol-yoklist cip dizisi
   07.09.2026'da kaldirildi. */
/* BAGLANTI CIPI — Veliler > "Veliye Bagli Sporcu/lar" ve Antrenorler >
   "Sorumlu Gruplar" hucrelerinde. Cok degerli hucrede isimler yan yana duz
   metin olarak akiyordu; her deger kendi cercevesinde durunca nerede bittigi
   bir bakista okunuyor.

   .pol-badge KULLANILAMAZ: tablo icinde rozetler bilerek duzlestiriliyor
   (zemin/padding/radius siliniyor). Bu yuzden cip kendi sinifiyla tanimlanir
   ve <a> oldugu icin global tablo tipografisinden (b/span) de etkilenmez. */
.pol-sporculink{
  display:inline-flex;align-items:center;margin:3px 6px 3px 0;padding:4px 11px;
  border:var(--pol-line-border);border-radius:var(--pol-r-full);
  background:var(--pol-blue-50);color:var(--pol-blue-700);
  font-size:var(--pol-fs-12);font-weight:600;line-height:1.35;
  text-decoration:none;transition:var(--pol-t-fast);
}
.pol-sporculink:hover{background:var(--pol-blue-100);border-color:var(--pol-blue-300);
  color:var(--pol-blue-700);text-decoration:none}
.pol-sporculink:focus-visible{outline:2px solid var(--pol-blue-500);outline-offset:2px}
/* Pasif sporcu çipi (Veliler, 08.10.2026): gri ve silik — yine tıklanır, üzerine gelince belirginleşir. */
.pol-sporculink--pasif{background:var(--pol-n-100);color:var(--pol-n-500);opacity:.7}
.pol-sporculink--pasif:hover{background:var(--pol-n-200);border-color:var(--pol-n-300);color:var(--pol-n-700);opacity:1}
.pol-table tbody td.pol-pasifsayi{color:var(--pol-n-400) !important}

/* EN IYI DERECE CIPI — .pol-badge KULLANILAMAZ: tablo icinde rozetler bilerek
   duzlestiriliyor (zemin/padding/radius siliniyor, renk n-700'e sabitleniyor), o
   yuzden "Rekor" rozeti duz gri metin olarak cikiyordu. .pol-sporculink ile ayni
   cozum: kendi sinifi, tablo tipografisinden etkilenmeyecek sekilde. */
.pol-rekor{
  display:inline-flex;align-items:center;gap:5px;padding:1px 7px;
  border:1px solid #BFE9D2;border-radius:var(--pol-r-full);
  background:var(--pol-success-bg);color:var(--pol-success-tx);
  font-size:10px;font-weight:700;line-height:1.4;white-space:nowrap;
}
/* AYNI HİZA (01.10.2026): çip metnin hemen arkasından geldiğinde, mesafe adları farklı
   uzunlukta olduğu için her satırda başka yerde duruyordu. Tabloda hücrenin SAĞ kenarına
   yaslanır — bütün satırlarda aynı dikey hizada. Hücreye flex verilmez (mobil kart kuralı);
   float hücre içinde kalır (hücre kendi biçimlendirme bağlamıdır), mobil akordiyonda da çalışır. */
.pol-table td .pol-rekor{float:right;margin:1px 0 0 8px}
/* Kardes secim listesi (sporcu modali) */
.pol-kardeslist{display:flex;flex-direction:column;gap:4px;max-height:210px;overflow-y:auto;
  border:var(--pol-line-border);border-radius:var(--pol-r-md);padding:var(--pol-sp-2)}
/* SONUC KUTUSU BOSKEN CERCEVE CIZMEZ. Kutu cerceveli+radiuslu oldugu icin,
   kardes alani acilir acilmaz ici bos bir kart olarak beliriyordu (11.09.2026).
   Liste JS ile doldurulur ve bosaltilirken textContent='' yapilir; bulunamadi
   mesaji da bir cocuk dugumdur — :empty yalniz gercekten bos halde tutar. */
.pol-kardeslist:empty{display:none}
.pol-kardesitem{display:flex;align-items:center;gap:10px;padding:7px 10px;border-radius:var(--pol-r-sm)}
.pol-kardesitem:hover{background:var(--pol-n-25)}

/* ---------- 10.10 Odeme sutunu ----------
   Veli aidat sayfasi ikiye bolunur ama TEK gorunum vardir (_OdemeSutunu). */
.pol-odemegrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--pol-sp-5)}
.pol-odemesutun{display:flex;flex-direction:column;gap:var(--pol-sp-4);min-width:0}
/* Flex column icindeki dugme gerilir — buton dili korunsun diye sabitlenir. */
.pol-odemesutun .pol-btn{align-self:flex-start}
/* Durum satırı (rozet · kardeş indirimi · son ödeme): rozetler aynı hizada durur, dar kartta BÜTÜN
   olarak alta sarar (30.10.2026 — düz metin akışında ikinci rozet aşağı kayıyordu). */
.pol-odemedurum{display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.pol-odemedurum .pol-badge{margin:0}
.pol-odemedurum__tarih{white-space:nowrap}
/* Telefonda dönem kartı, üstündeki Dönem seçimiyle AYNI genişlikte (tablo satırının yan boşluğu yok). */
@media(max-width:820px){
  .pol-odemesutun__donem .pol-table--responsive tbody tr{margin-left:0;margin-right:0}
}
/* Masaüstünde iki sütun yan yanayken dönem tablosu kabına sığar (30.10.2026 — 1400px'te 20px taşıyor,
   Durum "Bekliyo" diye kesiliyordu): hücre yan boşluğu dar, başlık gerekirse iki satıra iner. */
@media(min-width:821px){
  .pol-odemesutun__donem .pol-table th,.pol-odemesutun__donem .pol-table td{padding-left:8px;padding-right:8px}
  .pol-odemesutun__donem .pol-table th{white-space:normal}
}
/* Iki sutunun donem bolumu ayni hizada baslar (22.10.2026): sutun = ust (ozet + eylem) + donem. Masaustunde
   iki parca .pol-odemegrid'in iki satirina subgrid ile oturur; kisa ustun bos payi kendi satirinda kalir.
   Telefonda (<=820) sutunlar alt alta oldugu icin dokunulmaz. 30.10.2026: 1000px'e kadar da alt alta
   (dar tablette iki sutunda donem tablosu kabina sigmiyordu) — hizalama yalniz yan yana iken. */
@media(min-width:821px) and (max-width:1000px){
  .pol-odemegrid{grid-template-columns:minmax(0,1fr)}
}
@media(min-width:1001px){
  .pol-grid.pol-g2.pol-odemegrid{grid-template-rows:auto auto;row-gap:0}
  .pol-odemegrid>.pol-odemesutun{display:grid;grid-template-columns:minmax(0,1fr);grid-row:span 2;grid-template-rows:subgrid;row-gap:0}
  .pol-odemesutun>.pol-card__body{display:grid;grid-template-columns:minmax(0,1fr);grid-row:span 2;grid-template-rows:subgrid;row-gap:0;min-width:0}
}
.pol-odemeeylem__tx{display:flex;flex-direction:column;gap:2px}
.pol-payment-card__item--center{align-items:center}

/* ---------- 10.11 Serbest metin ----------
   Tabloda HIC gosterilmez; hucrede yalniz "Oku" dugmesi durur, metnin tamami
   modalda okunur. Metin kullanicidan geldigi icin daima textContent ile yazilir. */
.pol-gorus{white-space:pre-wrap;overflow-wrap:break-word;max-height:52vh;overflow-y:auto;
  padding:var(--pol-sp-4);border-radius:var(--pol-r-md);background:var(--pol-n-25);
  border:var(--pol-line-border);font-size:var(--pol-fs-14);line-height:1.6;color:var(--pol-n-700)}
/* Pencerede ic kaydirma YOK: govde zaten kayar. iPhone Safari (PWA dahil), gizliyken
   doldurulup kayarak acilan pencerede ic overflow alanini boyamiyordu — metin bos
   gorunup ancak kapanirken beliriyordu (MUSA OZCAN, 29.10.2026). */
.pol-modal .pol-gorus,.pol-modal .pol-gorus-in{max-height:none;overflow:visible}
.pol-gorus-in{white-space:pre-wrap;overflow-wrap:break-word;display:block;margin-top:6px;
  max-height:220px;overflow-y:auto}

/* ---------- 10.12 Kardes indirimi isareti ----------
   Tablo rozet kuralinin DAR istisnasi: zemin/padding/radius yine yok,
   yalniz RENK korunur — renksiz kalsa duz metne donusup gorunmez olurdu. */
.pol-indirim{font-size:var(--pol-fs-12);font-weight:600;color:var(--pol-success-tx);white-space:nowrap}
.pol-table tbody td:not(.pol-td-actions) span.pol-indirim{
  color:var(--pol-success-tx)!important;font-weight:600!important;
  font-size:var(--pol-fs-12)!important;white-space:nowrap!important}

/* ==========================================================================
   10.14 MOBIL TASARIM SISTEMI — BAGLAYICI
   --------------------------------------------------------------------------
   820px altinda proje AYRI bir duzene gecer. Uc panelde de aynidir ve sonraki
   tum degisikliklerde AYNEN korunur. Dogrulama: 390-430px'te yatay tasma 0,
   akordiyon ozet satiri ~60px, ozet disindaki hucreler kapali.
   ========================================================================== */
@media(max-width:820px){
  /* ---- Tablolar akordiyon karta doner ----
     Satir bir kart olur; ILK <td> ozet satiridir ve daima gorunur. Geri kalan
     hucreler gizlidir, ozete dokununca acilir (tr.is-open). Ayni tabloda tek
     satir acik kalir — pol-table.js.
     BUTUN alanlari alt alta dokmek YASAK: 217 sporcunun her biri 340px'lik bir
     sutun olursa liste kullanilamaz. Once kimlik, sonra istenirse ayrinti. */
  .pol-table--responsive{display:block;width:100%}
  .pol-table--responsive tbody{display:block;width:100%}
  .pol-table--responsive thead{display:none}

  /* Kart ust boslugu 0 OLAMAZ: ilk kart arama cubugunun alt cizgisine yapisir.
     Bitisik kardeslerin marjlari birlestigi icin kartlar arasi yine sp-2 kalir. */
  .pol-table--responsive tbody tr{display:block;overflow:hidden;
    margin:var(--pol-sp-2) var(--pol-sp-3);padding:0;
    border:var(--pol-line-border);border-radius:var(--pol-r-md);background:var(--pol-n-0)}

  /* Ayrinti hucreleri: etiket ustte, deger altta NORMAL METIN AKISINDA.
     Flex/grid KULLANILMAZ — hucredeki <b>/<span> ayri oge sayilip tek tek
     sikisir, <br> yok sayilir; iki velili hucrede isimler harf harf kirilir. */
  .pol-table--responsive tbody td{display:block;padding:9px 14px;text-align:left;
    border-bottom:var(--pol-line-inner-border);overflow-wrap:break-word}
  .pol-table--responsive tbody td:last-child{border-bottom:0}
  .pol-table--responsive tbody td::before{content:attr(data-lbl);display:block;margin-bottom:3px;
    font-size:var(--pol-fs-11);font-weight:700;letter-spacing:.06em;
    text-transform:uppercase;color:var(--pol-n-500)}
  .pol-table--responsive .pol-td-right,
  .pol-table--responsive .pol-td-center{text-align:left}
  /* Eylem dugmeleri kartin SOLUNA yaslanir — ustteki bilgi satirlariyla ayni
     hizada dursunlar. Ardisik iki eylem hucresi (Sporcu Karti + Islem) inline
     oldugu icin TEK SERIT halinde yan yana akar; ayri satirlara bolunmez. */
  .pol-table--responsive tbody td.pol-td-actions{display:inline-flex;
    justify-content:flex-start;align-items:center;gap:6px;width:auto;
    padding:11px 0 11px 14px;border-bottom:0;vertical-align:middle}
  .pol-table--responsive tbody td.pol-td-actions::before{content:none}
  .pol-table--responsive tbody tr td.pol-td-actions:last-child{padding-right:14px}

  /* ---- OZET SATIRI: ilk hucre ----
     Dokunma hedefi, etiketi yok, saginda donen ok. ~60px'te kalir. */
  /* Ozet hucresi BLOK olmali — flex kullanilirsa <br> yok sayilir, <b> ve
     <span> yan yana dizilip satiri sisirir (Duyurular'da 95px'e cikiyordu).
     Ok isareti zaten mutlak konumlu, flex'e gerek yok. */
  /* Ozet hucresi BLOK kalir (flex <br>'i yok sayar, satir ici icerigi alt alta
     indirir — Devamlilik'te "31.08.2026 · Pazartesi" boluneydi). Dikey ortalama
     `align-content` ile yapilir: blok kapsayicida da calisir ve satir ici akisa
     DOKUNMAZ. Desteklemeyen eski tarayicida icerik ustte kalir, bozulmaz. */
  .pol-table--responsive:not(.pol-table--acik) tbody td:first-child{
    display:block;min-height:52px;align-content:center;
    padding:13px 42px 13px 14px;position:relative;cursor:pointer;border-bottom:0;
    font-weight:600;color:var(--pol-ink);-webkit-tap-highlight-color:transparent}
  /* Ozetteki yardimci metin TEK SATIR kalir: serbest metin onizlemesi kart
     yuksekligini oynatmamalidir (satir yuksekligi icerige gore degismez). */
  .pol-table--responsive:not(.pol-table--acik) tbody td:first-child .pol-small{
    display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500}
  .pol-table--responsive:not(.pol-table--acik) tbody td:first-child::before{content:none}
  .pol-table--responsive:not(.pol-table--acik) tbody td:first-child::after{
    content:'';position:absolute;right:16px;top:50%;width:8px;height:8px;
    border-right:2px solid var(--pol-n-400);border-bottom:2px solid var(--pol-n-400);
    transform:translateY(-70%) rotate(45deg);transition:transform .2s ease}
  .pol-table--responsive:not(.pol-table--acik) tbody td:first-child:focus-visible{
    outline:3px solid var(--pol-blue-300);outline-offset:-3px}
  .pol-table--responsive:not(.pol-table--acik) tbody tr.is-open td:first-child{
    border-bottom:var(--pol-line-border);background:var(--pol-n-25)}
  .pol-table--responsive:not(.pol-table--acik) tbody tr.is-open td:first-child::after{
    transform:translateY(-30%) rotate(225deg)}

  /* ---- Kapaliyken ayrinti hucreleri GIZLI ----
     CIKIS KAPISI: kisa ve salt-okunur listelerde .pol-table--acik eklenir;
     tum hucreler etiketiyle acik kalir, akordiyon hic devreye girmez.
     JS ile satir ureten tablolar da bunu kullanir. */
  .pol-table--responsive:not(.pol-table--acik) tbody tr:not(.is-open) td:not(:first-child){display:none}

  /* Mobil hamburger topbar'da gorunur; menu daraltma dugmesi gizlenir. */
  .pol-side-toggle--mobile{display:grid}

  /* Tablo alt bilgisi ve sayfalama dikeye gecer */
  .pol-tablefoot{flex-direction:column;align-items:stretch;gap:10px}
  .pol-tablefoot .pol-pager{justify-content:center}

  /* Sporcu modali tek sutuna iner: fotograf alani altta */
  .pol-sporcubilgi{grid-template-columns:1fr;gap:var(--pol-sp-4)}
  .pol-fotoalan__on,.pol-fotoalan__bos{max-width:220px;margin-inline:auto}

  /* Odeme sutunlari alt alta */
  .pol-odemegrid{grid-template-columns:1fr;gap:var(--pol-sp-4)}

  /* Rapor modali da tam genislik alta yaslanir */
  .pol-modal__box--rapor{max-width:100%}
}

@media(max-width:620px){
  /* .pol-g4 OZET KUTUCUKLARI 2 SUTUN KALIR — tek sutun sayfayi gereksiz
     uzatiyordu. Digerleri tek sutuna iner. */
  .pol-g4{grid-template-columns:repeat(2,minmax(0,1fr))}
  .pol-dashgrid,.pol-dashgrid--4,.pol-g2,.pol-g3{grid-template-columns:1fr}
  /* SUZGEC SATIRI OZET KUTUCUGU DEGILDIR. Islem Kayitlari filtresi .pol-g4
     tasidigi icin ustteki 2 sutun kuralini miras aliyor ve arama kutusu 154px'e
     sikisiyordu. Suzgec alanlari tam genislik ister; kural burada geri alinir. */
  .pol-audit-filter{grid-template-columns:1fr}
  /* Modal icindeki izgara DAIMA tek sutun */
  .pol-modal .pol-grid{grid-template-columns:1fr}

  .pol-tabletools--filtre .pol-tabletools__filtre{width:100%}
  .pol-tabletools--filtre .pol-select--sm{flex:1;min-width:0}
  .pol-rapor-genel{font-size:var(--pol-fs-13)}
  .pol-kardeslist{max-height:180px}
}

/* ---------- 10.15 Kalan kancalar ----------
   Hesap kartindaki kullanici ikonu: genis kartta ad+rol yazisi zaten var,
   ikon YALNIZ menu mini ya da mobil kompakt gorunumde cikar. */
.pol-athlete__ico{display:none}
.pol-app.is-side-mini .pol-athlete__ico{display:block}
/* Rapor kartindaki rozet ve buton metni JS ile guncellenir; konumlari sabit. */
.pol-rapor-kart__rozet{flex:none;white-space:nowrap}
.pol-rapor-kart__btntx{white-space:nowrap}
@media(max-width:820px){
  .pol-athlete__ico{display:block}
}

/* ---------- 10.16 KART KOSELERI — zeminli ilk/son cocuk koseyi EZMEZ ----------
   .pol-card yuvarlaktir ama BILEREK kirpmaz: overflow:hidden verilseydi kart
   icinde acilan dropdown, cok secimli liste ve tooltip kartin disina tasamazdi.
   Bunun bedeli su: karta yasli, ZEMINI OLAN bir cocuk kosede DIKDORTGEN
   boyanir ve yaricap silinmis gorunur. Projede iki bicimde cikiyordu:

     .pol-card > .pol-tablescroll   -> cizgili/hover'li son satir (tr) alt koseleri eziyor
     .pol-card > .pol-tablefoot     -> gri altlik alt koseleri eziyor

   Cozum kartin kendisini degil, ilk ve son cocugunu yaricapa ortak etmektir.
   .pol-tablescroll zaten overflow-x:auto ile kirptigi icin (bir eksen gorunur
   degilse digeri de auto olur) yaricap alinca satir zeminlerini de yuvarlak
   kirpar; .pol-tablefoot gibi kendi zeminini boyayanlarda ise yaricap dogrudan
   o zemine uygulanir.

   YENI BIR KART BOLUMU YAZARKEN: karta yasli ve zeminli bir eleman ekliyorsan
   ya bu kural onu kapsamali (ilk ya da son cocuk olmali) ya da kendi
   border-radius'unu tasimali. Kontrol icin bkz. CLAUDE.md > kose denetimi. */
.pol-card>:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}
.pol-card>:last-child{border-bottom-left-radius:inherit;border-bottom-right-radius:inherit}

/* ---------- 10.17 HAFTALIK ANTRENMAN PROGRAMI (antrenor) ----------
   Yedi gunluk izgara. Masaustunde 7 sutun; dar ekranda once 2, sonra tek sutuna
   iner — gun kartlari tam genislik olur, hucre icindeki saatler alt alta akar.
   Renk YOK: tur ayrimi yazityle yapilir, kart zemini notrdur. */
.pol-hafta{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:var(--pol-sp-3)}
.pol-hafta__gun{display:flex;flex-direction:column;min-width:0;
  border:var(--pol-line-border);border-radius:var(--pol-r-lg);
  background:var(--pol-n-0);box-shadow:var(--pol-sh-xs);overflow:hidden}
.pol-hafta__gun.is-bugun{border-color:var(--pol-blue-300);box-shadow:var(--pol-sh-sm)}
.pol-hafta__bas{display:flex;align-items:baseline;justify-content:space-between;gap:6px;
  padding:10px 12px;border-bottom:var(--pol-line-border);background:var(--pol-n-25)}
.pol-hafta__bas b{font-size:var(--pol-fs-13);font-weight:700;color:var(--pol-ink)}
.pol-hafta__gun.is-bugun .pol-hafta__bas{background:var(--pol-blue-50)}
.pol-hafta__govde{display:flex;flex-direction:column;gap:6px;padding:10px;flex:1}

.pol-hafta__saat{display:flex;align-items:center;gap:6px;padding:7px 8px;
  border:var(--pol-line-border);border-radius:var(--pol-r-md);
  background:var(--pol-n-25);min-width:0}
.pol-hafta__vakit{font-family:var(--pol-font-cond);font-size:var(--pol-fs-16);
  font-weight:700;color:var(--pol-ink);line-height:1}
.pol-hafta__tur{flex:1;min-width:0;font-size:var(--pol-fs-11);font-weight:600;
  color:var(--pol-n-500);text-transform:uppercase;letter-spacing:.04em;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pol-hafta__saat--kara .pol-hafta__tur{color:var(--pol-orange-600)}
.pol-hafta__sil{flex:none;width:22px;height:22px;border-radius:7px;display:grid;place-items:center;
  color:var(--pol-n-400);transition:var(--pol-t-fast)}
.pol-hafta__sil:hover{background:var(--pol-danger-bg);color:var(--pol-danger)}

/* GECICI IPTAL (29.10.2026): saat kutusu o haftanin gunune denk gelir. Iptal edilen saat kirmizi
   zeminde, saat ustu cizili; gerekce kutunun altinda tam genislikte sarar (kirpilmaz). */
.pol-hafta__saat{flex-wrap:wrap}
/* Saat ustte, tur altinda — iki ikon (iptal + kaldir) yer acsin diye (7 sutunda tur adi kesiliyordu). */
.pol-hafta__bilgi{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}
.pol-hafta__bilgi .pol-hafta__tur{flex:none}

/* Ekleme kutusu: gun bossa TEK giris noktasi, doluysa "bir saat daha". */
.pol-hafta__ekle{display:grid;place-items:center;width:100%;min-height:38px;
  border:1px dashed var(--pol-line-color);border-radius:var(--pol-r-md);
  background:transparent;color:var(--pol-n-400);cursor:pointer;transition:var(--pol-t-fast)}
.pol-hafta__ekle:hover{border-color:var(--pol-blue-300);color:var(--pol-blue-600);
  background:var(--pol-blue-50)}

/* GUNLER ARASI KOPYALA / YAPISTIR
   Kopyala gunun ustune gelince cikar. Bir gun kopyalandiktan sonra .pol-hafta
   uzerine is-kopyali gelir; o anda kaynak GUN DISINDAKI gunlerde ayni yerde
   yapistir cikar. Ikisi de ayni koseyi kullanir, yer degistirmez.
   Dokunmatikte hover yok: is-kopyali durumunda yapistir daima gorunur. */
.pol-hafta__kop,.pol-hafta__yap{flex:none;width:24px;height:24px;border-radius:7px;
  display:grid;place-items:center;color:var(--pol-n-400);opacity:0;
  transition:var(--pol-t-fast)}
.pol-hafta__gun:hover .pol-hafta__kop{opacity:1}
.pol-hafta__kop:hover{background:var(--pol-blue-50);color:var(--pol-blue-600);opacity:1}

/* Yapistir yalniz kopyalama yapildiktan sonra ve KAYNAK OLMAYAN gunde. */
.pol-hafta__yap{display:none}
.pol-hafta.is-kopyali .pol-hafta__gun:not(.is-kaynak) .pol-hafta__yap{
  display:grid;opacity:1;color:var(--pol-blue-600);background:var(--pol-blue-50)}
.pol-hafta.is-kopyali .pol-hafta__gun:not(.is-kaynak) .pol-hafta__kop{display:none}
.pol-hafta.is-kopyali .pol-hafta__gun:not(.is-kaynak) .pol-hafta__yap:hover{
  background:var(--pol-blue-100)}
/* Kaynak gun kopyalandigi belli olsun. */
.pol-hafta__gun.is-kaynak{border-color:var(--pol-blue-500)}
.pol-hafta__gun.is-kaynak .pol-hafta__kop{opacity:1;color:var(--pol-blue-600)}

@media(max-width:1180px){ .pol-hafta{grid-template-columns:repeat(4,minmax(0,1fr))} }
@media(max-width:820px){  .pol-hafta{grid-template-columns:repeat(2,minmax(0,1fr))} }
@media(max-width:520px){  .pol-hafta{grid-template-columns:1fr} }
/* Dokunmatikte hover yoktur — kopyala simgesi daima gorunur. */
@media(hover:none){ .pol-hafta__kop{opacity:1} }

/* Yoklama kilidi: kaydet dugmesinin yerinde neden alinamadigini soyler. */
.pol-yok-kilit{display:inline-flex;align-items:center;gap:7px;padding:8px 14px;
  border:var(--pol-line-border);border-radius:var(--pol-r-full);
  background:var(--pol-n-25);color:var(--pol-n-500);
  font-size:var(--pol-fs-13);font-weight:600}

/* ---------- 10.18 CIZGI GRAFIK (olcum gelisimi) ----------
   SVG'yi pol-charts.js kutunun GERCEK pikseline gore cizer; viewBox
   gerdirilmez, o yuzden burada vector-effect gibi numaralara gerek yok.
   Renkler tek yerden: cizgi notr murekkep, izgara ic ayirici tonu.

   RENK KODLAMASI YOKTUR — bazi olcumde artmak iyi (kas), bazisinda azalmak
   (yag orani); yesil/kirmizi yanlis yonlendirir. */
.pol-line{position:relative;width:100%;height:190px;
  border:var(--pol-line-border);border-radius:var(--pol-r-md);
  background:var(--pol-n-0);overflow:hidden;cursor:crosshair}
.pol-line__svg{display:block}

.pol-line__grid{stroke:var(--pol-line-inner);stroke-width:1;shape-rendering:crispEdges}
.pol-line__yet,.pol-line__xet{fill:var(--pol-n-400);font-family:var(--pol-font);
  font-weight:600;font-variant-numeric:tabular-nums}

.pol-line__yol{fill:none;stroke:var(--pol-ink);stroke-width:2;
  stroke-linejoin:round;stroke-linecap:round}
.pol-line__alan{stroke:none}
.pol-line__g0{stop-color:var(--pol-ink);stop-opacity:.13}
.pol-line__g1{stop-color:var(--pol-ink);stop-opacity:0}
.pol-line__nk{fill:var(--pol-n-0);stroke:var(--pol-ink);stroke-width:2}

/* Imlec ve vurgu yalniz uzerine gelince gorunur. */
.pol-line__imlec{stroke:var(--pol-n-300);stroke-width:1;stroke-dasharray:3 3;opacity:0;
  transition:opacity .12s ease}
.pol-line__vurgu{fill:var(--pol-ink);stroke:var(--pol-n-0);stroke-width:2.5;opacity:0;
  transition:opacity .12s ease}
.pol-line.is-uzerinde .pol-line__imlec,
.pol-line.is-uzerinde .pol-line__vurgu{opacity:1}

/* Baloncuk: deger + tarih. Kutu disina tasmaz (konumu JS sinirlar). */
.pol-line__balon{position:absolute;width:108px;pointer-events:none;
  display:none;flex-direction:column;align-items:center;gap:1px;
  padding:6px 8px;border-radius:var(--pol-r-md);
  background:var(--pol-ink);color:var(--pol-n-0);
  box-shadow:var(--pol-sh-md);text-align:center}
.pol-line.is-uzerinde .pol-line__balon{display:flex}
.pol-line__balon b{font-family:var(--pol-font-cond);font-size:var(--pol-fs-16);
  font-weight:700;line-height:1.1}
.pol-line__balon span{font-size:var(--pol-fs-11);opacity:.72}

/* Tek olcumde degisim cizilemez. */
.pol-line--tek{display:grid;place-items:center;text-align:center;height:190px;
  color:var(--pol-n-400);font-size:var(--pol-fs-12);font-weight:600;padding:0 14px;
  border:var(--pol-line-border);border-radius:var(--pol-r-md);background:var(--pol-n-25)}

@media(max-width:620px){ .pol-line,.pol-line--tek{height:170px} }

/* Olcumler tablosunda sporcu adi grafik sayfasina baglantidir. */
.pol-olcumlink{color:var(--pol-ink);text-decoration:none}
.pol-olcumlink:hover{color:var(--pol-blue-600);text-decoration:none}

/* ==========================================================================
   Antrenör değerlendirmesi (29.09.2026)
   Velinin menüsünde Performans'ın yanında mektup: okunmamış değerlendirme var.
   Mini menüde (elle daraltılmış ya da 821–1180 otomatik mini) etiket gizlenir;
   mektup ikonun sağ üst köşesine küçük bir rozet olarak biner — kaybolmaz.
   ========================================================================== */
.pol-navitem__mektup{margin-left:auto;flex:none;display:inline-grid;place-items:center;
  width:24px;height:24px;border-radius:var(--pol-r-full);background:var(--pol-red-500);color:#fff;
  animation:polMenuBadge 1.25s ease-in-out infinite;box-shadow:0 0 0 0 rgba(232,35,42,.35)}
.pol-navitem__mektup .pol-i{width:14px;height:14px}
@media(min-width:1181px){
  .pol-app.is-side-mini .pol-navitem__mektup{position:absolute;top:3px;right:6px;width:18px;height:18px}
  .pol-app.is-side-mini .pol-navitem__mektup .pol-i{width:11px;height:11px}
}
@media(min-width:821px) and (max-width:1180px){
  .pol-side .pol-navitem__mektup{position:absolute;top:3px;right:6px;width:18px;height:18px}
  .pol-side .pol-navitem__mektup .pol-i{width:11px;height:11px}
}
.pol-degerlendirme{display:flex;flex-direction:column;gap:var(--pol-sp-4)}
.pol-degerlendirme__item+.pol-degerlendirme__item{padding-top:var(--pol-sp-4);
  border-top:1px solid var(--pol-line-inner)}
.pol-degerlendirme__ust{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;margin-bottom:6px}
.pol-degerlendirme__metin{margin:0;white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.55;
  color:var(--pol-ink)}

/* ==========================================================================
   Veli > Devamlılık > Antrenman Geçmişi — DEVAM MATRİSİ (29.09.2026)
   Kulübün yoklama çizelgesinin veli sürümü: günler sütun, seanslar alt sütun.
   .pol-table değildir (akordiyon/sayfalama matriste anlamsız).
   YANA KAYMAZ (kullanıcı isteği): table-layout:fixed + %100 — seans sütunları kalan
   genişliği paylaşır; saat iki satıra bölünür (17 / 30); kara antrenmanı zeminle
   ayrılır. Tablo sığmıyorsa sayfa betiği kaba .is-dar koyar → kutu ızgarası.
   Renk açılımı kulübün çizelgesiyle birebir: 85–100 koyu yeşil · 70–84 açık yeşil
   · 50–69 sarı · 30–49 turuncu · 0–29 kırmızı.
   ========================================================================== */
.pol-matris{padding:var(--pol-sp-4) var(--pol-sp-4) 0;min-width:0}
.pol-matris + .pol-matris{padding-top:var(--pol-sp-5)}
.pol-matris__grup{font-weight:700;color:var(--pol-ink);font-size:var(--pol-fs-14);margin-bottom:8px}
.pol-matris__t{width:100%;table-layout:fixed;border-collapse:separate;border-spacing:0;
  border:var(--pol-line-border);border-radius:var(--pol-r-md);overflow:hidden;
  font-size:var(--pol-fs-12);font-weight:500;font-variant-numeric:tabular-nums}
.pol-matris__c-no{width:30px}
.pol-matris__c-isim{width:130px}
.pol-matris__c-yil{width:46px}
.pol-matris__c-top{width:28px}
.pol-matris__c-ant{width:66px}
.pol-matris__c-ort{width:56px}
.pol-matris__t th,.pol-matris__t td{padding:5px 2px;text-align:center;line-height:1.15;
  border-right:var(--pol-line-inner-border);border-bottom:var(--pol-line-inner-border);background:var(--pol-n-0)}
.pol-matris__t th{background:var(--pol-n-50);color:var(--pol-n-700);font-weight:600;font-size:11px;
  white-space:normal;overflow-wrap:anywhere}
.pol-matris__t tr > :last-child{border-right:0}
.pol-matris__t tfoot tr:last-child td{border-bottom:0}
.pol-matris__gun,.pol-matris__saat{white-space:nowrap !important;overflow:hidden}
.pol-matris__gun small,.pol-matris__saat small{display:block;font-size:10px;font-weight:500;color:var(--pol-n-500)}
.pol-matris__isim{text-align:left !important;padding-left:8px !important;overflow-wrap:anywhere}
.pol-matris__isim b{color:var(--pol-ink)}
.pol-matris__alt{text-align:left !important;padding-left:8px !important;font-weight:600;color:var(--pol-n-600)}
.pol-matris__t tfoot td{background:var(--pol-n-25);color:var(--pol-n-600);font-size:11px}
/* Seans zemini antrenman türünü söyler (02.10.2026): yüzme yumuşak mavi, kara yumuşak yeşil — açık ama
   birbirinden uzak iki ton; + / − / M yazısı ikisinde de okunur. Lejant rozetleri aynı tonu taşır. */
.pol-matris__t .is-yuzme{background:#D2E3FA !important}
.pol-matris__t .is-kara{background:#CDEBD6 !important}
.pol-matris__top{font-weight:700;color:var(--pol-ink)}
.pol-matris__h{font-weight:700;font-size:var(--pol-fs-14)}
.pol-matris__h--arti{color:var(--pol-success)}
.pol-matris__h--eksi{color:var(--pol-danger)}
.pol-matris__h--mazeret{color:var(--pol-warning-tx)}
.pol-matris__yuzde{font-size:10px !important}
.pol-matris__ort{font-weight:700}
.pol-matris__bant--a{background:#1E7B3C !important;color:#fff !important}
.pol-matris__bant--b{background:#8CD17D !important;color:#10361A !important}
.pol-matris__bant--c{background:#F5D547 !important;color:#4A3A00 !important}
.pol-matris__bant--d{background:#F39A2E !important;color:#fff !important}
.pol-matris__bant--e{background:#E5484D !important;color:#fff !important}

/* TELEFON GÖRÜNÜMÜ (30.10.2026, kullanıcı "1 + 3"): ≤820px'te tablo GİZLENİR — velide/sporcu kartında
   aylık takvim (_DevamTakvim), grup yoklamasında sporcu kartları (_GrupYoklamaKartlar). Akordiyon ve yana
   kaydırma yok. Eski kutu ızgarası (.pol-matris__kutu) kaldırıldı: telefonda .is-dar hiç tetiklenmiyordu
   (sabit düzenli tablo kendini sıkıştırıp sığdırıyordu), tablo okunmaz hâle geliyordu. Genişte tablo kaba
   sığmazsa JS'in .is-dar'ı yine takvime geçirir. */
.pol-matris__dar{display:none}
.pol-matris.is-dar .pol-matris__t{display:none}
.pol-matris.is-dar .pol-matris__dar{display:block}
@media(max-width:820px){
  .pol-matris:not(.pol-matris--grup) .pol-matris__t{display:none}
  .pol-matris:not(.pol-matris--grup) .pol-matris__dar{display:block}

  .pol-matris__lejant .pol-matris__rozet--yuzme,.pol-matris__lejant .pol-matris__rozet--kara{display:none}
}
.pol-takvim__ozet{display:flex;gap:6px;margin-bottom:10px}
.pol-takvim__ozet>div{flex:1;min-width:0;padding:6px 4px;border-radius:var(--pol-r-md);background:var(--pol-n-25);
  border:var(--pol-line-inner-border);text-align:center}
.pol-takvim__ozet b{display:block;font-family:var(--pol-font-cond);font-size:18px;font-weight:700;color:var(--pol-ink);line-height:1.2}
.pol-takvim__ozet span{display:block;font-size:11px;color:var(--pol-n-500)}
.pol-takvim__ok{color:var(--pol-success) !important}
.pol-takvim__no{color:var(--pol-danger) !important}
.pol-takvim__mz{color:var(--pol-warning-tx) !important}
.pol-takvim__izgara{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:3px}
.pol-takvim__bas{text-align:center;font-size:11px;font-weight:600;color:var(--pol-n-500);padding-bottom:2px}
.pol-takvim__gun{min-height:46px;padding:3px 1px;border:var(--pol-line-inner-border);border-radius:8px;
  background:var(--pol-n-0);display:flex;flex-direction:column;align-items:center;gap:3px;min-width:0}
.pol-takvim__gun b{font-size:11px;font-weight:600;color:var(--pol-n-500);line-height:1}
.pol-takvim__gun.is-bos{background:transparent;border-style:dashed}
.pol-takvim__gun.is-bugun{border-color:var(--pol-blue-500);box-shadow:inset 0 0 0 1px var(--pol-blue-500)}
.pol-takvim__ss{display:flex;flex-wrap:wrap;justify-content:center;gap:2px}
.pol-takvim__s{width:14px;height:14px;border-radius:4px;display:inline-grid;place-items:center;
  font-style:normal;font-size:9px;font-weight:700;line-height:1;color:#fff}
.pol-takvim__s--ok{background:#1E7B3C}
.pol-takvim__s--no{background:#D92D32}
.pol-takvim__s--mz{background:#C99100}
.pol-takvim__s--bos{background:var(--pol-n-200);color:var(--pol-n-600)}
.pol-takvim__s--ip{background:var(--pol-n-0);color:#D92D32;box-shadow:inset 0 0 0 1.5px #D92D32;font-size:13px}
.pol-takvim__lejant{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;margin-top:8px;
  font-size:11px;color:var(--pol-n-600)}
.pol-takvim__lejant span{display:inline-flex;align-items:center;gap:4px}
/* Lejant — küçük (kullanıcı isteği) */
.pol-matris__lejant{display:flex;flex-wrap:wrap;align-items:center;gap:4px 6px;padding:10px var(--pol-sp-4) var(--pol-sp-4)}
.pol-matris__lejant-t{font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;
  color:var(--pol-n-500);margin-right:2px}
.pol-matris__rozet{display:inline-block;padding:1px 7px;border-radius:var(--pol-r-full);
  font-size:10px;font-weight:700;line-height:1.5;font-variant-numeric:tabular-nums}
.pol-matris__rozet--yuzme{background:#D2E3FA;color:#1D4E89;border:1px solid #A9C8F2}
.pol-matris__rozet--kara{background:#CDEBD6;color:#1F6B3A;border:1px solid #9BD3AE}
/* GECICI IPTAL (29.10.2026): iptal seansi kirmizi sutun; toplamlara girmez. Grupta gerekce sutunun
   boyunca her harf kendi satirinda dik durur; tam gerekce ayrica lejantta yer alir. */
.pol-matris__t .is-iptal,.pol-matris__t .pol-matris__iptal{background:#FBDADB !important;color:#B4232A}
.pol-matris__h--iptal{color:#B4232A}
.pol-matris__iptal{vertical-align:middle;padding:6px 0 !important}
.pol-matris__iptal-metin{display:flex;flex-direction:column;align-items:center;margin:0 auto;
  font-size:13px;font-weight:700;letter-spacing:normal;white-space:normal}
.pol-matris__iptal-metin>i{display:block;flex:none;height:16px;line-height:16px;font-style:normal}
.pol-matris__rozet--iptal{display:inline;white-space:normal;border-radius:8px;
  background:#FBDADB;color:#7A1A1F;border:1px solid #F1A7AA;font-weight:500}
.pol-matris__rozet--iptal b{font-weight:700}
@media(max-width:820px){
  .pol-matris{padding-inline:var(--pol-sp-3)}
}

/* GRUP YOKLAMASI (02.10.2026, Views/Shared/_GrupYoklama) — aynı tablo, grubun bütün sporcuları.
   Kutu ızgarasına dönmez; sığmazsa KAP yana kayar, No + Ad Soyad yapışık. Çerçeve/köşe KAPTADIR:
   tabloda overflow:hidden kalırsa tablo kaydırma kabı olur ve yapışık sütun çalışmaz. */
.pol-matris__kap{overflow-x:auto;border:var(--pol-line-border);border-radius:var(--pol-r-md)}
.pol-matris__kap .pol-matris__t{border:0;border-radius:0;overflow:visible}
.pol-matris__kap .pol-matris__no,.pol-matris__kap .pol-matris__isim{position:sticky;z-index:1}
.pol-matris__kap .pol-matris__no{left:0}
.pol-matris__kap .pol-matris__isim{left:30px}
.pol-matris__kap tbody .pol-matris__isim{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pol-matris__kap tbody tr:hover td{background:var(--pol-n-25)}
.pol-matris--grup .pol-matris__c-isim{width:140px}

.pol-grupyok__indir{gap:8px;flex-wrap:wrap}
.pol-matris--grup{padding-bottom:0}

/* ==========================================================================
   Panel Geçişi (29.09.2026 · 30.09.2026'da tek yapıya indi)
   Modalde her antrenör bir kart-düğmedir (kendi POST formu). İki menüde de geçiş
   öğesi EN ÜSTTEKİ "Panel" grubundadır: yönetimde "Antrenör Paneline Geç",
   geçiş yapılmış antrenör oturumunda "Yönetim Paneline Dön". Başka yerde yoktur.
   ========================================================================== */
.pol-gecis{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.pol-gecis form{margin:0;min-width:0}
.pol-gecis__kart{width:100%;display:flex;align-items:center;gap:12px;padding:12px 14px;text-align:left;
  font:inherit;color:var(--pol-ink);background:var(--pol-n-0);border:var(--pol-line-border);
  border-radius:var(--pol-r-lg);box-shadow:var(--pol-sh-xs);cursor:pointer;transition:var(--pol-t-fast)}
.pol-gecis__kart:hover{border-color:color-mix(in srgb,var(--pol-blue-500) 45%,var(--pol-line-color));
  box-shadow:var(--pol-sh-sm);transform:translateY(-1px)}
.pol-gecis__kart:focus-visible{outline:2px solid var(--pol-blue-500);outline-offset:2px}
/* Kart bağlantı (<a>) olarak da kullanılır (Aidat araması) — projede bağlantının altı çizilmez. */
a.pol-gecis__kart,a.pol-gecis__kart:hover,a.pol-gecis__kart *{text-decoration:none}
.pol-gecis__tx{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.pol-gecis__tx b{font-size:var(--pol-fs-14)}
.pol-gecis__tx span{font-size:var(--pol-fs-12);color:var(--pol-n-600);overflow-wrap:anywhere}
.pol-gecis__tx small{font-size:var(--pol-fs-11);color:var(--pol-n-500)}
.pol-gecis__ok{flex:none;color:var(--pol-n-400)}
@media(max-width:620px){ .pol-gecis{grid-template-columns:1fr} }
.pol-side form{margin:0}
.pol-side button.pol-navitem{width:100%;border:0;font:inherit;text-align:left;cursor:pointer}
.pol-navitem--gecis,.pol-navitem--gecis .pol-navitem__ico{color:var(--pol-orange-500)}

/* ==========================================================================
   PWA kurulum sayfası — /pwa (29.09.2026). Telefon öncelikli, tek sütun, en fazla
   520px. Hangi bölümün görüneceğine pol-pwa.js karar verir (android · ios ·
   masaustu · yuklu). Adım listesi bilerek anlatır — Kural 7'nin bilinçli istisnası.
   ========================================================================== */
.pol-pwa{min-height:100vh;background:var(--pol-n-50)}
.pol-pwa__kap{max-width:520px;margin:0 auto;padding:calc(20px + env(safe-area-inset-top)) 16px
  calc(28px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:16px}
.pol-pwa__ust{display:flex;align-items:center;gap:12px}
.pol-pwa__logo{width:56px;height:56px;border-radius:14px;box-shadow:var(--pol-sh-sm);background:#fff}
.pol-pwa__ust b{display:block;font-size:var(--pol-fs-16);color:var(--pol-ink);line-height:1.2}
.pol-pwa__ust span{font-size:var(--pol-fs-13);color:var(--pol-n-500)}
.pol-pwa__t{font-family:var(--pol-font-cond);font-size:26px;line-height:1.15;color:var(--pol-ink);margin:0 0 14px}
.pol-pwa__cihaz{display:inline-flex;align-items:center;gap:6px;margin-bottom:12px;padding:3px 10px;
  border-radius:var(--pol-r-full);background:var(--pol-blue-50);color:var(--pol-blue-600,var(--pol-blue-500));
  font-size:var(--pol-fs-12);font-weight:700}
.pol-pwa__ana{width:100%;justify-content:center;height:52px;font-size:var(--pol-fs-16)}
.pol-pwa__ana[disabled]{opacity:.55}
.pol-pwa__adimlar{list-style:none;margin:14px 0 0;padding:0;display:flex;flex-direction:column;gap:12px}
.pol-pwa__adimlar li{display:flex;gap:12px;align-items:flex-start;font-size:var(--pol-fs-15);
  line-height:1.45;color:var(--pol-n-700)}
.pol-pwa__adimlar b{color:var(--pol-ink)}
.pol-pwa__adimlar small{display:block;font-size:var(--pol-fs-12);color:var(--pol-n-500)}
.pol-pwa__no{flex:none;width:28px;height:28px;border-radius:50%;display:grid;place-items:center;
  background:var(--pol-blue-500);color:#fff;font-weight:700;font-size:var(--pol-fs-13)}
.pol-pwa__adimlar li[data-pwa-safari-degil] .pol-pwa__no{background:var(--pol-warning)}
.pol-pwa__simge{display:inline-grid;place-items:center;width:26px;height:26px;margin-left:4px;vertical-align:middle;
  border:var(--pol-line-border);border-radius:7px;color:var(--pol-blue-500);background:#fff}
.pol-pwa__kopya{margin-top:8px}
.pol-pwa__adres{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:14px;padding:12px;
  border:var(--pol-line-border);border-radius:var(--pol-r-md);background:var(--pol-n-25)}
.pol-pwa__adres b{flex:1;min-width:0;overflow-wrap:anywhere;font-size:var(--pol-fs-14);color:var(--pol-ink)}
.pol-pwa__durum{display:flex;align-items:center;gap:10px;margin-bottom:14px;color:var(--pol-success)}
.pol-pwa__durum b{color:var(--pol-ink);font-size:var(--pol-fs-16)}
.pol-pwa__giris{align-self:center}

/* Mobil başlıkta ana sayfa ikonu (30.09.2026) — yalnız ≤820px; masaüstünde sol menü var. */
.pol-anasayfa-mobil{display:none}
@media(max-width:820px){ .pol-anasayfa-mobil{display:grid} }
.pol-navitem--degerlendir,.pol-navitem--degerlendir .pol-navitem__ico{color:var(--pol-warning-tx)}

/* Kulvar kartları sayfa düzeni (veli > Performans): kaydırma yok, geniş ızgara. */
.pol-kulvarlar--genis{max-height:none;overflow:visible;margin:0;padding:0;
  grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:12px}
.pol-kulvarlar--genis .pol-kulvar{padding:12px 14px}
.pol-kulvarlar--genis .pol-kulvar__derece{font-size:18px}
@media(max-width:620px){ .pol-kulvarlar--genis{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
  .pol-kulvarlar--genis .pol-kulvar{padding:8px 8px} .pol-kulvarlar--genis .pol-kulvar__derece{font-size:14px} }

/* ==========================================================================
   Veli > Yarış Sonuçları — KULÜBÜN EXCEL DÜZENİ (30.09.2026)
   Satır = yarış, sütun = stil altında mesafe. Yarış bilgisi hücreleri kısa kulvarda
   SARI, uzun kulvarda MAVİ (Excel'deki gibi); stil grupları dönüşümlü hafif yeşil.
   HER GENİŞLİKTE AYNI TABLO (01.10.2026): kullanıcı kart görünümünü istemedi ("ayrı ayrı
   yarış kartları olmaz"). Tablo kabına sığmazsa KABIN İÇİNDE yana kayar, "Yarış" sütunu
   solda yapışık kalır; sayfa yana kaymaz. Çerçeve ve köşe KAPTADIR — tabloya overflow
   verilirse tablo kaydırma kabı sayılır ve yapışık sütun çalışmaz.
   ========================================================================== */
.pol-snc{padding:var(--pol-sp-4)}
.pol-snc__suzgec{display:flex;flex-wrap:wrap;align-items:center;gap:10px 16px;margin-bottom:14px}
.pol-snc__grup{display:flex;flex-wrap:wrap;gap:6px}
.pol-snc__yil{width:auto;min-width:130px}
.pol-snc__kap{overflow-x:auto;-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain;
  border:var(--pol-line-border);border-radius:var(--pol-r-md)}
.pol-snc__t{width:100%;table-layout:auto;border-collapse:separate;border-spacing:0;
  font-size:var(--pol-fs-12);font-weight:500;font-variant-numeric:tabular-nums}
/* Yapışık "Yarış" sütunu — yana kayarken hangi yarış olduğu görünür kalır. */
.pol-snc__t .pol-snc__isim{position:sticky;left:0;z-index:2;box-shadow:1px 0 0 var(--pol-line-color)}
.pol-snc__t th.pol-snc__isim{z-index:3}
.pol-snc__t th,.pol-snc__t td{padding:6px 5px;text-align:center;white-space:nowrap;
  border-right:var(--pol-line-inner-border);border-bottom:var(--pol-line-inner-border)}
.pol-snc__t tr > :last-child{border-right:0}
.pol-snc__t tbody tr:last-child td{border-bottom:0}
.pol-snc__t th{background:var(--pol-n-50);color:var(--pol-n-700);font-weight:700;font-size:11px}
.pol-snc__t th.pol-snc__stil{letter-spacing:.04em;text-transform:uppercase}
.pol-snc__t .pol-snc__stil--1{background:#EAF6E3}
.pol-snc__t th.pol-snc__stil--1{background:#CFEBC0}
.pol-snc__isim{text-align:left !important;white-space:normal !important;min-width:150px}
.pol-snc__bilgi{font-weight:700;color:var(--pol-ink)}
.pol-snc__t tr.is-kisa .pol-snc__bilgi{background:#FFF27A}
.pol-snc__t tr.is-uzun .pol-snc__bilgi{background:#7FD3F5}
.pol-snc__tarih{font-weight:600 !important}
.pol-snc__d{color:var(--pol-ink)}
.pol-snc__bos{color:var(--pol-n-400)}
.is-gecersiz{color:var(--pol-n-500) !important;text-decoration:line-through;text-decoration-color:var(--pol-n-400)}
.pol-snc__bosuc{padding:24px;text-align:center;color:var(--pol-n-500)}
@media(max-width:820px){ .pol-snc{padding:var(--pol-sp-3)} .pol-snc__yil{width:100%} }

/* ==========================================================================
   BARAJ TÜRLERİ (30.09.2026) — tanım ekranı (yönetim + antrenör ORTAK) ve veli.
   Mesafe kartları kulvar kartının iskeletini kullanır (.pol-kulvar): solda 25 m kısa,
   sağda 50 m uzun kulvar.
   ========================================================================== */
.pol-baraj-turler{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:12px}
.pol-baraj-tur{display:flex;align-items:center;gap:12px;padding:14px 16px;text-decoration:none;color:inherit}
.pol-baraj-tur:hover{text-decoration:none}
.pol-baraj-tur__tx{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}
.pol-baraj-tur__tx b{font-size:var(--pol-fs-15);color:var(--pol-ink);overflow-wrap:anywhere}
.pol-baraj-tur__tx span{font-size:var(--pol-fs-12);color:var(--pol-n-500)}
.pol-baraj-tur .pol-badge{flex:none}
.pol-baraj-baslik .pol-card__body{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px}
.pol-baraj-baslik__eylem{display:flex;flex-wrap:wrap;align-items:center;gap:8px}

/* Tanım: mesafe başına iki baraj alanı */
.pol-baraj-giris,.pol-baraj-sonuclar{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:12px}
.pol-baraj-giris__kart{padding:12px 14px}
.pol-baraj-giris__input{margin-top:6px;height:38px;padding:0 10px;font-size:var(--pol-fs-14);text-align:center;min-width:0}
.pol-baraj-giris__yok{margin-top:10px;color:var(--pol-n-400);font-weight:700}
.pol-baraj-kaydet{position:sticky;bottom:12px;display:flex;flex-wrap:wrap;justify-content:flex-end;gap:10px;margin-top:16px;pointer-events:none}
.pol-baraj-kaydet .pol-btn{pointer-events:auto}

/* Veli: karşılaştırma kartı */
.pol-baraj-sonuc{padding:12px 14px}
/* Barajı geçilen mesafe (26.10.2026, kullanıcı isteği): kart yeşil zemin — bakınca anlaşılsın.
   Kulvarlardan BİRİNDE geçmek yeter (sayım da mesafe başınadır: VeliBarajCifti.Gecti). */
.pol-kulvar.pol-baraj-sonuc--gecti{background:var(--pol-success-bg);border-color:#BFE8CF}
.pol-kulvar.pol-baraj-sonuc--gecti .pol-kulvar__yari + .pol-kulvar__yari{border-left-color:#BFE8CF}
html[data-tema="koyu"] .pol-kulvar.pol-baraj-sonuc--gecti,
html[data-tema="koyu"] .pol-kulvar.pol-baraj-sonuc--gecti .pol-kulvar__yari + .pol-kulvar__yari{border-color:#1F5A3A}
.pol-baraj-sonuc__satir{display:flex;justify-content:space-between;align-items:baseline;gap:6px;margin-top:4px}
.pol-baraj-sonuc__satir small{font-size:var(--pol-fs-11);color:var(--pol-n-500)}
.pol-baraj-sonuc__satir b{font-size:var(--pol-fs-14);color:var(--pol-ink)}
.pol-baraj-sonuc__durum{display:inline-flex;align-items:center;gap:4px;margin-top:8px;font-size:var(--pol-fs-12);
  font-weight:700;color:var(--pol-n-500)}
.pol-baraj-sonuc__durum.is-gecti{color:var(--pol-success)}
.pol-baraj-sonuc__durum.is-kaldi{color:var(--pol-warning-tx)}

/* Veli ana sayfa kartı: tür satırları */
.pol-baraj-ozet{display:flex;flex-direction:column;gap:6px}
.pol-baraj-ozet__satir{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 10px;
  text-decoration:none;color:inherit;border-bottom:var(--pol-line-inner-border);border-radius:var(--pol-r-md)}
.pol-baraj-ozet__satir:last-child{border-bottom:0}
/* Barajı geçilen tür (26.10.2026, kullanıcı isteği): satır yeşil zemin — Barajlar sayfasındaki yeşil mesafe kartıyla aynı
   ton. Rozet zeminle kaynaşmasın diye beyaz. Çizgi yerine zemin ayırır. */
.pol-baraj-ozet__satir--gecti{background:var(--pol-success-bg);border-bottom-color:transparent}
.pol-baraj-ozet__satir--gecti .pol-badge--success{background:var(--pol-n-0)}
.pol-baraj-ozet__satir:hover{text-decoration:none}
.pol-baraj-ozet__isim{min-width:0;display:flex;flex-direction:column;gap:2px}
.pol-baraj-ozet__isim b{font-size:var(--pol-fs-13);color:var(--pol-ink);overflow-wrap:anywhere}
.pol-baraj-ozet__isim small{font-size:var(--pol-fs-11);color:var(--pol-n-500)}
.pol-baraj-ozet__satir .pol-badge{flex:none}
@media(max-width:620px){
  .pol-baraj-giris,.pol-baraj-sonuclar{grid-template-columns:1fr}
  .pol-baraj-turler{grid-template-columns:1fr}
}

/* SÜTUNLAR İÇERİĞE GÖRE (01.10.2026) — Excel gibi. Önceden table-layout:fixed ile her
   derece sütunu eşit (~39px) bölünüyordu; "8:36.59" en uzun sanılmıştı ama 1500 m'de
   "21:13.97" var ve kırpılıyordu, "TRABZON" da "TRABZO N" diye bölünüyordu. Artık her
   sütun en uzun değeri kadar genişler; toplam kaba sığmazsa KAP yana kayar.
   Derece ve şehir hiç bölünmez; yalnız yarış adı ve tarih aralığı iki satıra sarar. */
.pol-snc__c-isim{width:112px}
.pol-snc__c-havuz{width:34px}
.pol-snc__c-tarih{width:74px}
/* Derece sütunlarında yan boşluk 2px: 1400px ekranda (kap ~969px) 18 sütunlu tablo kaydırmasız
   sığsın diye ölçüldü (3px'te 980px'ti). Sütunlar zaten içeriklerinin en darındadır. */
.pol-snc__t th,.pol-snc__t td{padding:6px 2px}
.pol-snc__t .pol-snc__isim{min-width:112px;max-width:124px;white-space:normal !important;overflow-wrap:normal}
.pol-snc__t .pol-snc__tarih{white-space:normal !important;min-width:74px}
.pol-snc__t .pol-snc__bilgi{padding-inline:5px}
.pol-snc__t td.pol-snc__d{font-size:11px}
.pol-snc__t col.pol-hide{display:none}
/* Antrenör > Yarış Sonuçları: satırın solunda düzelt düğmesi (08.10.2026) — yarış adı hücresinin içinde,
   böylece yapışık sütun bozulmaz. Pencerede 18 derece kutusu stil başına bir şerit. */
.pol-snc__duzsatir{display:flex;align-items:center;gap:6px}
.pol-snc__t .pol-snc__isim:has(.pol-snc__duzsatir){min-width:150px;max-width:164px}
.pol-snc__duzelt.pol-btn{flex:none;width:30px;height:30px}
.pol-sncduz{margin-top:14px}
.pol-sncduz__stil{font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--pol-n-700);margin-bottom:6px}
.pol-sncduz__mesafeler{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px}
.pol-sncduz__hucre{display:flex;flex-direction:column;gap:4px;min-width:0}
.pol-sncduz__hucre > span{font-size:12px;font-weight:600;color:var(--pol-n-600);text-align:center}
.pol-sncduz__hucre .pol-input{text-align:center;padding:0 4px;min-width:0}
.pol-sncduz__hucre .pol-input:disabled{background:var(--pol-n-100)}
@media(max-width:620px){ .pol-sncduz__mesafeler{grid-template-columns:repeat(3,minmax(0,1fr))} }
.pol-sncduz__hucre .pol-input.is-hata{border-color:var(--pol-danger);box-shadow:0 0 0 3px var(--pol-danger-bg)}
.pol-sncduz__soru{color:var(--pol-danger)}
/* Telefonda alt şerit dikey: Kaydet en üstte, Sil en altta; onayda soru üstte, "Evet, Sil" altında. */
@media(max-width:820px){
  .pol-sncduz__alt > .pol-flex{width:100%;margin-left:0 !important;flex-direction:column-reverse}
  .pol-sncduz__alt--onay{flex-direction:column;align-items:stretch;text-align:center}
}

/* Baraj süresi üç kutu (30.09.2026): dakika : saniye . salise */
.pol-sure3{display:flex;align-items:center;gap:2px;margin-top:6px}
.pol-sure3 .pol-input{height:38px;padding:0 2px;text-align:center;font-size:var(--pol-fs-14);min-width:0;flex:1 1 0}
.pol-sure3__ayrac{flex:none;font-weight:700;color:var(--pol-n-500)}
@media(max-width:820px){ .pol-sure3 .pol-input{font-size:16px} }
/* İlk 3 sıra rakamı hücrenin sağ üst köşesinde durur, genişlik istemez (dar sütunda
   derece metnini taşırıyordu). */
.pol-snc__t td.pol-snc__d{position:relative}

/* Baraj tanım kartı + veli baraj sonuç kartı (30.09.2026): başlık ortada, 25 m / 50 m arası belirgin ayırıcı. */
.pol-baraj-giris__kart .pol-kulvar__t,.pol-baraj-sonuc .pol-kulvar__t{text-align:center;margin-bottom:8px}
.pol-baraj-giris__kart .pol-kulvar__yari:first-child,.pol-baraj-sonuc .pol-kulvar__yari:first-child{padding-right:10px}
.pol-baraj-giris__kart .pol-kulvar__yari + .pol-kulvar__yari,
.pol-baraj-sonuc .pol-kulvar__yari + .pol-kulvar__yari{border-left:2px solid var(--pol-n-300);padding-left:10px}

/* Veli > Performans > Derece Gelişimi (30.09.2026): branş başına bölüm, mesafe + kulvar
   başına bir çizgi grafik (pol-line, data-bicim="sure"). Renk yok — ölçüm grafikleriyle aynı dil. */
.pol-dgrafik__ust{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;margin-bottom:12px}
.pol-dgrafik__deger{text-align:right;flex:none}
.pol-dgrafik__deger .pol-num{font-size:22px;line-height:1.1;color:var(--pol-ink)}

/* ---------- AİDAT ÖDEME AKIŞI (01.10.2026, db/107) ----------
   Yönetim > Aidat tahsilat hücresi: dört yöntem düğmesi (Sanal POS · Kredi Kartı · Havale · Nakit)
   2×2 eşit ızgara — serbest sarmada üç sıraya bölünüp satırı 150px'e çıkarıyordu. Ödenmiş
   satırda (--durum) yeşil durum düğmesi (eksik ödeme artık "Kalan" sütununda). Düğmeler .pol-btn / .pol-merkezdurum'dan
   gelir — burada yalnız dizilim. */
/* Aidat tutarı düzelt — ikon düğme (.pol-btn--icon), tutarın yanında. */
.pol-tutarduzelt{margin-left:8px;vertical-align:middle}
@media(min-width:821px){ .pol-tutarhucre{white-space:nowrap} }
/* Aidat Yönetimi girişindeki sporcu araması — sonuçlar "Veli Paneline Geç" kartlarıyla aynı dil. */
.pol-aidatara__sonuc{margin-top:10px}
.pol-aidatara__sonuc:empty{display:none}
.pol-tahsil{display:inline-grid;grid-template-columns:repeat(2,1fr);gap:6px;vertical-align:middle}
.pol-tahsil .pol-btn{justify-content:center}
.pol-tahsil--durum{display:inline-flex;flex-direction:column;align-items:flex-end;gap:10px}
/* Aidat Yönetimi Tahsilat sütunu masaüstünde ORTALI (02.11.2026, kullanıcı isteği). */
@media(min-width:821px){
  .pol-table th.pol-td-actions.pol-tahsil-sutun,
  .pol-table td.pol-td-actions.pol-tahsil-sutun{text-align:center}
  .pol-tahsil-sutun .pol-tahsil--durum{align-items:center}
}
@media(max-width:820px){
  .pol-tahsil--durum{align-items:flex-start}
}
/* Yönetim Aidat: tutarın altında Ödenen · Kalan (05.10.2026) — "x eksik" yazısının yerine.
   Kalan global tablo tipografisinden muaf (:not(.pol-kalan)); renk kuralı .pol-kalanbilgi ile aynı. */
.pol-aidatkalan{margin-top:4px;color:var(--pol-n-600);line-height:1.5}
@media(max-width:820px){ .pol-aidatkalan{text-align:left} }
.pol-table tbody td span.pol-kalan{font-family:var(--pol-font);font-size:var(--pol-fs-13);font-weight:600;line-height:1.4;color:var(--pol-n-700)}
.pol-table tbody td span.pol-kalan--tamam{color:var(--pol-success)}
.pol-table tbody td span.pol-kalan--parcali{color:#B7791F}
.pol-table tbody td span.pol-kalan--gecikti{color:var(--pol-danger)}
/* Ödeme penceresi bilgi alanı: etiket üstte, değer altta; iki sütun (telefonda da). */
.pol-odemebilgi{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 16px;
  padding:14px 16px;margin-bottom:var(--pol-sp-5);border-radius:14px;background:var(--pol-n-50)}
.pol-odemebilgi>div{min-width:0}
.pol-odemebilgi span{display:block;margin-bottom:2px;font-size:var(--pol-fs-11);font-weight:700;
  letter-spacing:.06em;text-transform:uppercase;color:var(--pol-n-500)}
.pol-odemebilgi b{display:block;font-weight:600;color:var(--pol-ink);overflow-wrap:anywhere}
/* SANAL POS SONUÇ PENCERESİ (22.10.2026) — Tosla'dan dönüşte Aidat ve Ödemeler'de açılır (Veli/Aidat.cshtml
   #m-odemesonuc). Simge durum rengindedir; altında dönem/tutar/kart bilgisi .pol-odemebilgi ile. */
.pol-odemesonuc{display:flex;flex-direction:column;align-items:center;text-align:center;gap:8px;padding:6px 0 20px}
.pol-odemesonuc__ikon{width:64px;height:64px;border-radius:50%;display:grid;place-items:center}
.pol-odemesonuc__ikon .pol-i{width:34px;height:34px}
.pol-odemesonuc--success .pol-odemesonuc__ikon{background:var(--pol-success-bg);color:var(--pol-success)}
.pol-odemesonuc--danger .pol-odemesonuc__ikon{background:var(--pol-danger-bg);color:var(--pol-danger)}
.pol-odemesonuc--info .pol-odemesonuc__ikon{background:var(--pol-info-bg);color:var(--pol-info)}
.pol-odemesonuc__baslik{font-size:22px;font-weight:700;color:var(--pol-ink);line-height:1.2}
.pol-odemesonuc__metin{margin:0;max-width:460px;font-size:var(--pol-fs-14);color:var(--pol-n-700);line-height:1.45}
.pol-odemebilgi b.pol-odemebilgi__eksik{color:var(--pol-danger-tx)}
/* Dosya seçimi: düğme + seçilen dosyanın adı */
.pol-dosyasec{display:flex;align-items:center;gap:10px;flex-wrap:wrap;min-width:0}
.pol-dosyasec label{cursor:pointer}
.pol-dosyasec .pol-small{min-width:0;overflow-wrap:anywhere}
/* Belge görüntüleyici (pol-belge.js): PDF iframe'de, görsel img'de. Boşken çerçeve çizmez. */
.pol-belgegor{border:var(--pol-line-border);border-radius:var(--pol-r-md);background:var(--pol-n-25);overflow:hidden}
.pol-belgegor:empty{display:none}
.pol-belgegor__pdf{display:block;width:100%;height:62vh;border:0;background:#fff}
.pol-belgegor__img{display:block;max-width:100%;max-height:62vh;margin:0 auto}
/* Veli > Aidat dönem tablosu: ödendi satırında "Faturayı/Fişi Görüntüle" durum metninin altında. */
.pol-odemebelge{display:flex;width:max-content;margin:6px auto 0}
@media(max-width:820px){ .pol-odemebelge{margin-left:0} }
/* Yönetim > Finans (01.10.2026): kategori kartı bağlantıdır; seçili kart vurgu çerçevesi taşır. */
.pol-finans-kart{display:block;color:inherit;text-decoration:none}
.pol-finans-kart:hover{text-decoration:none}
.pol-finans-kart.is-active{border-color:var(--pol-accent,var(--pol-blue-500));
  box-shadow:0 0 0 2px var(--pol-accent,var(--pol-blue-500))}
.pol-finans-kart__tutar{font-size:24px;line-height:1.15;overflow-wrap:anywhere}
@media(max-width:620px){ .pol-finans-kart__tutar{font-size:18px} }
/* Finans bölümleri: TOPLAM · AİDAT · STORE her biri kendi panelinde (11.11.2026); TOPLAM vurgulu. */
.pol-finans-panel{background:var(--pol-n-100);border:var(--pol-line-border);border-radius:var(--pol-r-xl);
  padding:18px;margin-bottom:22px}
.pol-finans-bolum{display:flex;align-items:center;gap:8px;margin:0 0 14px;font-size:var(--pol-fs-15);font-weight:700;
  letter-spacing:.08em;text-transform:uppercase;color:var(--pol-ink);scroll-margin-top:90px}
.pol-finans-bolum .pol-i{color:var(--pol-blue-500)}
@media(max-width:620px){ .pol-finans-panel{padding:12px;border-radius:var(--pol-r-lg);margin-bottom:16px} }
/* Veli ana sayfa Aidat kartı: "Havale/EFT ödemesi onay bekliyor" yarım kartta tek satıra sığmaz —
   rozet sarar (rozet tabanı nowrap + sabit yükseklik taşır, dar kartta komşu yarıya taşıyordu). */
.pol-payment-card__status{white-space:normal;height:auto;min-height:24px;max-width:100%;line-height:1.3;
  padding-block:3px}
/* Yönetim > Aidat Yönetimi + Spor Merkezi Ödemesi (01.10.2026): satır zemini durumu söyler — gecikti kırmızımsı, ödendi
   yeşilimsi (bekliyor nötr kalır). Çizgili tablo ve mobil kart zemininden sonra gelir, ikisini de ezer. */
.pol-table tbody tr.pol-aidatsatir--gecikti{background:var(--pol-danger-bg)}
.pol-table tbody tr.pol-aidatsatir--odendi{background:var(--pol-success-bg)}
.pol-table tbody tr.pol-aidatsatir--gecikti:hover{background:#FADCDD}
.pol-table tbody tr.pol-aidatsatir--odendi:hover{background:#D6F1E1}
/* KISMİ ÖDEME (06.10.2026): ödendi sayılmış ama alınan para tutardan az — satır sarımsı (AidatVm.KismiMi). */
.pol-table tbody tr.pol-aidatsatir--kismi{background:var(--pol-warning-bg)}
.pol-table tbody tr.pol-aidatsatir--kismi:hover{background:#FCEFC7}
/* Aidatın kapsadığı aylar (05.10.2026, db/111) — üç onay kutusu yan yana, form alanı yüksekliğinde. */
.pol-aylar{display:flex;flex-wrap:wrap;gap:6px 16px;align-items:center;min-height:44px}
/* Aidat Düzenle (05.10.2026): üstte toplu değer şeridi, tabloda satır içi alanlar; değişen satır işaretli. */
.pol-topluduzen{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(0,1.6fr) auto;gap:12px 16px;align-items:end}
@media(max-width:820px){ .pol-topluduzen{grid-template-columns:1fr} }
.pol-input--sm{height:36px;padding:6px 10px;font-size:var(--pol-fs-13)}
#tbl-duzen td .pol-input{max-width:150px}
.pol-aylar--sm{min-height:0;gap:4px 10px;font-size:var(--pol-fs-12)}
.pol-table tbody tr.is-degisti td:first-child{box-shadow:inset 3px 0 0 var(--pol-warning)}
@media(max-width:820px){ .pol-input--sm{height:44px;font-size:16px} #tbl-duzen td .pol-input{max-width:none} }
/* Yönetim > Gruplar (05.10.2026): pencerede gün/saat satırları + kartta üç düğme (sararak). */
.pol-grprogram{display:flex;flex-direction:column;gap:8px;margin-bottom:10px}
.pol-grprogram:empty{display:none}
.pol-grprogram__satir{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr) minmax(0,1fr) auto;gap:8px;align-items:center}
.pol-grprogram__satir .pol-select{min-width:0}
.pol-grupdugmeler{flex-wrap:wrap}
.pol-grupdugmeler > .pol-btn{min-width:120px}
/* Veli aidat kartı: Ödenen · Kalan (05.10.2026). Kalan rengi AidatVm.KalanRenk'ten:
   0 yeşil · parçalı sarı · vadesi geçmiş kırmızı · ödenmemiş ve vadesi gelmemiş normal. */
.pol-kalanbilgi{display:flex;flex-wrap:wrap;gap:4px 14px;margin:4px 0 6px;font-size:var(--pol-fs-13);color:var(--pol-n-600)}
.pol-kalanbilgi b{color:var(--pol-ink);font-weight:700}
.pol-kalanbilgi b.pol-kalan--tamam{color:var(--pol-success)}
.pol-kalanbilgi b.pol-kalan--parcali{color:#B7791F}
.pol-kalanbilgi b.pol-kalan--gecikti{color:var(--pol-danger)}
/* Pasif sporcunun ödenmemiş aidatı (05.10.2026): kırmızı değil, soluk gri — toplamlara girmez. */
.pol-table tbody tr.pol-aidatsatir--pasif{background:var(--pol-n-50)}
.pol-table tbody tr.pol-aidatsatir--pasif td{color:var(--pol-n-500) !important}
/* Baraj tanımları (01.10.2026): cinsiyet rengi — kız açık pembe, erkek açık mavi. Tür kartı,
   tür başlık kartı, mesafe kartları ve tür ekle/düzenle penceresi aynı tonu taşır. */
/* Kontrast 01.10.2026'da artırıldı (kullanıcı: pembe ile mavi ayırt edilmiyordu): daha doygun zemin,
   koyu kenar. Çerçeve kalınlığı DEĞİŞMEZ — sol şerit denendi, kullanıcı istemedi. */
/* PDF'ten Baraj Türü Ekle penceresi (02.10.2026): sütun listesi — her satır bir onay kutusu,
   işaretli satırda tür adı + Düzenle. Satır zemini sütunun cinsiyet rengini taşır (aşağıdaki kurallar). */
.pol-btpdf__grup{margin:var(--pol-sp-4) 0 var(--pol-sp-2)}
.pol-btpdf__eylemler{gap:12px 32px}
.pol-btpdf__eylemler>.pol-small{flex-basis:100%}
.pol-btpdf__eylemler>.pol-small:empty{display:none}
.pol-btpdf__satir{display:flex;align-items:center;gap:10px;padding:8px 12px;margin-bottom:6px;
  border:var(--pol-line-inner-border);border-radius:var(--pol-r-md);background:var(--pol-n-0)}
.pol-btpdf__satir .pol-check{flex:1;min-width:0;align-items:flex-start}
.pol-btpdf__satir small{color:var(--pol-n-500);font-size:var(--pol-fs-12)}
.pol-btpdf__satir.is-secili{box-shadow:inset 3px 0 0 var(--pol-accent,var(--pol-blue-600))}
.pol-btpdf__tur{display:block;font-size:var(--pol-fs-12);font-weight:600;color:var(--pol-ink);margin-top:2px;overflow-wrap:anywhere}
.pol-btpdf__mevcut{display:flex;align-items:center;gap:10px;padding:10px 12px;margin-bottom:var(--pol-sp-4);
  border:var(--pol-line-inner-border);border-radius:var(--pol-r-md);background:var(--pol-n-0)}
.pol-btpdf__mevcut > div{flex:1;min-width:0}
.pol-btpdf__mevcut b{display:block}
.pol-baraj--kiz{background:#FBDDEB;border-color:#E9A3C4}
.pol-baraj--erkek{background:#D9E8FD;border-color:#9DBEF0}
.pol-modal__box.pol-baraj--kiz .pol-modal__body{background:#FBDDEB}
.pol-modal__box.pol-baraj--erkek .pol-modal__body{background:#D9E8FD}
.pol-baraj--kiz .pol-kulvar__yari + .pol-kulvar__yari{border-left-color:#E9A3C4}
.pol-baraj--erkek .pol-kulvar__yari + .pol-kulvar__yari{border-left-color:#9DBEF0}
.pol-baraj--kiz .pol-sure3 .pol-input,.pol-baraj--erkek .pol-sure3 .pol-input{background:#fff}
/* Tür notu: başlık ile düğmeler arasında, ortada kalın. */
.pol-baraj-baslik__not{flex:1 1 220px;min-width:0;text-align:center;font-weight:700;
  font-size:var(--pol-fs-15);color:var(--pol-ink);white-space:pre-line;overflow-wrap:anywhere}
@media(max-width:820px){ .pol-baraj-baslik__not{text-align:left;flex-basis:100%} }
/* Antrenör > Derece Girişi (01.10.2026): üç kutulu derece + sağında Uzun / Kısa Kulvar (yalnız biri). */
.pol-derecesatir{display:flex;flex-wrap:wrap;align-items:center;gap:10px 18px}
.pol-derecesatir .pol-sure3{margin-top:0;flex:0 1 240px}
.pol-derecesatir .pol-sure3 .pol-input{height:44px}
.pol-derecesatir__kulvar{display:flex;flex-wrap:wrap;gap:8px 16px}
.pol-sure3.is-error .pol-input{border-color:var(--pol-danger)}
/* Yönetim sporcu kartı (01.10.2026): künyenin altında velinin altı sayfası bölüm bölüm.
   Bölüm başlığı ince çizgiyle ayrılır; içerik velinin sayfasındaki tabloların aynısıdır. */
.pol-kartbolum{margin-top:36px;padding-top:22px;border-top:var(--pol-line-border);scroll-margin-top:16px}
.pol-kartbolum__t{display:flex;align-items:center;gap:10px;margin:0 0 18px;font-size:var(--pol-fs-20,1.25rem);
  font-weight:700;color:var(--pol-ink)}
.pol-kartbolum__t .pol-i{color:var(--pol-n-500)}

/* ---------- HATA MERKEZİ (05.10.2026, db/112) ----------
   /hatalar: hata grubu kartları (önem rengi çerçevede — sol şerit DEĞİL, baraj kartlarında
   istenmedi) + açılır ayrıntı (yığın izi, kod parçası, gerçekleşmeler). Kod blokları da
   Barlow'dur (Kural 4) — tabular rakamla hizalanır.
   /hata: kullanıcının yakalanmayan istisnada gördüğü tek kartlı sayfa. */
.pol-hata__liste{display:flex;flex-direction:column;gap:var(--pol-sp-4)}
.pol-hata{padding:var(--pol-sp-5);min-width:0;transition:border-color var(--pol-t),box-shadow var(--pol-t)}
.pol-hata:hover{box-shadow:var(--pol-sh-md);border-color:var(--pol-n-200)}
.pol-hata--onem1,.pol-hata--onem1:hover{border-color:var(--pol-danger)}
.pol-hata--onem2,.pol-hata--onem2:hover{border-color:var(--pol-warning)}
.pol-hata.is-kapali{background:var(--pol-n-25);border-color:var(--pol-line-color)}
.pol-hata.is-vurgu{box-shadow:0 0 0 3px var(--pol-blue-200)}
.pol-hata--gidiyor{opacity:.45;transition:opacity var(--pol-t)}
.pol-hata__ust{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px}
.pol-hata__sayi{margin-left:auto;font-size:var(--pol-fs-13);color:var(--pol-n-500)}
.pol-hata__sayi b{color:var(--pol-ink);font-weight:700}
.pol-hata__t{margin:12px 0 0;font-family:var(--pol-font-cond);font-size:var(--pol-fs-20);font-weight:700;line-height:1.2;
  color:var(--pol-ink);overflow-wrap:anywhere}
.pol-hata__govde{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:var(--pol-sp-5);margin-top:var(--pol-sp-4)}
.pol-hata__bolum{min-width:0}
.pol-hata__bolum p{margin:6px 0 0;font-size:var(--pol-fs-14);line-height:1.55;color:var(--pol-n-700);overflow-wrap:anywhere}
.pol-hata__adimlar{margin:6px 0 0;padding-left:20px;list-style:decimal;font-size:var(--pol-fs-14);line-height:1.55;color:var(--pol-n-700)}
.pol-hata__adimlar li{overflow-wrap:anywhere}
.pol-hata__adimlar li+li{margin-top:4px}
.pol-hata__benzer{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.pol-hata__komut{display:flex;align-items:center;gap:10px;margin-top:12px;padding:10px 12px;border-radius:var(--pol-r-md);
  background:var(--pol-n-50);border:var(--pol-line-width) solid var(--pol-line-inner)}
.pol-hata__komut code{flex:1;min-width:0;font-family:var(--pol-font);font-size:var(--pol-fs-13);color:var(--pol-ink);overflow-wrap:anywhere}
.pol-hata__komut .pol-btn{flex:none}
.pol-hata__meta{display:flex;flex-wrap:wrap;align-items:flex-end;gap:4px 14px;margin-top:var(--pol-sp-4);padding-top:var(--pol-sp-3);
  border-top:var(--pol-line-width) solid var(--pol-line-inner);font-size:var(--pol-fs-12);color:var(--pol-n-500)}
.pol-hata__konum{color:var(--pol-n-700);font-weight:600;overflow-wrap:anywhere}
.pol-hata__grafik{display:inline-flex;align-items:flex-end;gap:2px;height:22px;margin-left:auto}
.pol-hata__grafik i{display:block;width:5px;border-radius:2px;background:var(--pol-n-200)}
.pol-hata__grafik i.is-dolu{background:var(--pol-blue-400)}
.pol-hata--onem1 .pol-hata__grafik i.is-dolu{background:var(--pol-danger)}
.pol-hata--onem2 .pol-hata__grafik i.is-dolu{background:var(--pol-warning)}
.pol-hata__not{margin-top:10px;font-size:var(--pol-fs-13);color:var(--pol-n-600)}
.pol-hata__eylem{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-top:var(--pol-sp-4)}
.pol-hata__eylem [data-hata-ayrinti]{margin-left:auto}
.pol-hata__eylem [data-hata-ayrinti] .pol-i{transition:transform var(--pol-t)}
.pol-hata__eylem [data-hata-ayrinti].is-acik .pol-i{transform:rotate(180deg)}
.pol-hata__ayrinti{margin-top:var(--pol-sp-4);padding-top:var(--pol-sp-4);border-top:var(--pol-line-width) solid var(--pol-line-inner);
  min-width:0;font-size:var(--pol-fs-13);color:var(--pol-n-500)}
.pol-hata__teknik{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:10px 16px;margin-bottom:var(--pol-sp-4)}
.pol-hata__teknik>div{min-width:0}
.pol-hata__teknik b{display:block;margin-top:2px;font-size:var(--pol-fs-13);color:var(--pol-ink);overflow-wrap:anywhere}
.pol-hata__yigin,.pol-hata__kod{margin:0;max-height:320px;overflow:auto;padding:12px;border-radius:var(--pol-r-md);
  background:var(--pol-n-50);border:var(--pol-line-width) solid var(--pol-line-inner);font-family:var(--pol-font);
  font-size:var(--pol-fs-12);line-height:1.5;color:var(--pol-n-700);white-space:pre-wrap;overflow-wrap:anywhere;
  font-variant-numeric:tabular-nums}
.pol-hata__kod{white-space:pre;overflow-wrap:normal}
.pol-hata__kod span{display:block;padding:0 4px;border-radius:4px}
.pol-hata__kod span.is-hedef{background:var(--pol-danger-bg);color:var(--pol-danger-tx);font-weight:600}
.pol-hata__kod i{display:inline-block;width:44px;font-style:normal;color:var(--pol-n-400);user-select:none}
.pol-hata__olaylar{max-height:420px;overflow:auto;border-radius:var(--pol-r-md);border:var(--pol-line-width) solid var(--pol-line-inner)}
.pol-hata__yol{overflow-wrap:anywhere}
.pol-hata__katsec{width:190px}
.pol-hata__onaymetni{margin:0;font-size:var(--pol-fs-15);line-height:1.5;color:var(--pol-ink)}
.pol-hata__gorevmetni{min-height:340px;font-size:var(--pol-fs-13);white-space:pre;overflow:auto}
@media(max-width:820px){
  .pol-hata__govde{grid-template-columns:1fr;gap:var(--pol-sp-4)}
  .pol-hata__katsec{width:170px}
  .pol-hata__olaylar{max-height:none}
}
@media(max-width:620px){
  .pol-hata{padding:var(--pol-sp-4)}
  .pol-hata__sayi{margin-left:0;width:100%}
  .pol-hata__eylemadi{display:none}
  .pol-hata__eylem [data-hata-ayrinti],.pol-hata__grafik{margin-left:0}
  .pol-hata__komut{flex-wrap:wrap}
}
.pol-hatasayfa{min-height:100vh;min-height:100dvh;background:var(--pol-n-50)}
.pol-hatasayfa__kap{max-width:520px;margin:0 auto;padding:calc(20px + env(safe-area-inset-top)) 16px 32px;
  display:flex;flex-direction:column;gap:16px}
.pol-hatasayfa__kart{text-align:center}
.pol-hatasayfa__ico{width:64px;height:64px;margin:4px auto 12px;display:grid;place-items:center;border-radius:var(--pol-r-xl);
  background:var(--pol-danger-bg);color:var(--pol-danger)}
.pol-hatasayfa__t{font-family:var(--pol-font-cond);font-size:26px;line-height:1.15;color:var(--pol-ink);margin:0 0 12px}
.pol-hatasayfa__kod{display:inline-block;padding:6px 14px;border-radius:var(--pol-r-full);background:var(--pol-n-100);
  font-size:var(--pol-fs-14);color:var(--pol-n-600)}
.pol-hatasayfa__kod b{color:var(--pol-ink);letter-spacing:.08em}
.pol-hatasayfa__dugmeler{display:flex;flex-wrap:wrap;justify-content:center;gap:10px;margin-top:20px}
/* Yönetim menüsü "Hesap" grubunda tek öğe "Bildirimleri Aç"tır; bildirim açıkken öğe gizlenir —
   boş başlık kalmasın diye grup da gizlenir (05.10.2026). :has desteklemeyen eski tarayıcıda
   yalnız başlık görünür, işlev bozulmaz. */
.pol-side__group:has(> .pol-side__list > [data-push-ac].pol-hide:only-child){display:none}
/* Yönetim > Bildirimler (05.10.2026): satır zemini durumu söyler — Aidat Yönetimi satırlarıyla aynı dil.
   Açık/ulaştı yeşilimsi, açamadı/kapandı/ulaşmadı sarımsı; açmamış nötr. */
.pol-table tbody tr.pol-bildirimsatir--acik>td{background:var(--pol-success-bg)}
.pol-table tbody tr.pol-bildirimsatir--sorun>td{background:var(--pol-warning-bg)}
.pol-bildirim__sec{width:150px;flex:none}
@media(max-width:820px){
  .pol-table--responsive tbody tr.pol-bildirimsatir--acik{background:var(--pol-success-bg)}
  .pol-table--responsive tbody tr.pol-bildirimsatir--sorun{background:var(--pol-warning-bg)}
}
/* KISMİ ÖDEME ROZETİ (06.10.2026, kullanıcı: "sarı zeminli kısmi ödeme, her yerde"). Tek tanım: AidatVm.KismiMi →
   DurumSinif "kismi". Tablo rozet düzleştirmesinden MUAFTIR (yukarıdaki iki seçicide :not(.pol-badge--kismi)) —
   tabloda da sarı zeminini korur; "Ödendi" ile karışmasın diye. */
.pol-badge--kismi{background:var(--pol-warning-bg);color:var(--pol-warning-tx);border:1px solid #F7E2AE}
.pol-table tbody td .pol-badge--kismi{display:inline-flex;align-items:center;height:auto;padding:2px 9px;
  border-radius:var(--pol-r-full);font-family:var(--pol-font);font-size:var(--pol-fs-12);font-weight:700;
  line-height:1.4;white-space:nowrap}
/* Ödenen · Ödenmesi Gereken (06.10.2026, Shared/_OdemeTutar): eski tek büyük tutarın yerine iki değer yan yana,
   Kalan altta (.pol-kalanbilgi). Dar kartta alt alta sarar. */
.pol-odemetutar{display:flex;flex-wrap:wrap;gap:6px 22px;margin:2px 0 2px}
.pol-odemetutar__kalem{display:flex;flex-direction:column;min-width:0}
.pol-odemetutar__lbl{font-size:var(--pol-fs-12);font-weight:600;color:var(--pol-n-500)}
.pol-odemetutar__val{font-family:var(--pol-font-cond);font-size:22px;font-weight:700;line-height:1.15;color:var(--pol-ink)}
@media(max-width:620px){ .pol-odemetutar__val{font-size:19px} }

/* ==========================================================================
   ANTRENÖR > BARAJLAR TABLOSU (06.10.2026) — Views/Antrenor/Barajlar.
   Kulübün Excel düzeni: stil → mesafe → 25 m / 50 m. Hücre veli baraj kartının bir yarısı
   (Derece · Baraj · durum). .pol-table DEĞİL: kap yana kayar, sporcu sütunu yapışık;
   çerçeve/köşe KAPTADIR (Yarış Sonuçları ile aynı neden — tabloda overflow yapışık sütunu bozar).
   ========================================================================== */
.pol-btablo__kap{overflow-x:auto;-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain;
  border:var(--pol-line-border);border-radius:var(--pol-r-md);background:#fff}
.pol-btablo{width:100%;border-collapse:separate;border-spacing:0;font-size:var(--pol-fs-12);font-variant-numeric:tabular-nums}
.pol-btablo th,.pol-btablo td{padding:6px 8px;text-align:center;white-space:nowrap;
  border-right:var(--pol-line-inner-border);border-bottom:var(--pol-line-inner-border)}
.pol-btablo tr > :last-child{border-right:0}
.pol-btablo tbody tr:last-child > *{border-bottom:0}
.pol-btablo thead th{background:var(--pol-n-50);color:var(--pol-n-700);font-weight:700;font-size:11px}
.pol-btablo thead th.pol-btablo__stil{letter-spacing:.04em}
.pol-btablo thead th.pol-btablo__stil.is-alt,.pol-btablo thead th.pol-btablo__mesafe.is-alt,
.pol-btablo thead th.pol-btablo__havuz.is-alt{background:#EAF6E3}
.pol-btablo .is-grupilk{border-left:2px solid var(--pol-n-300)}
/* Yapışık sporcu sütunu — cinsiyet rengi .pol-baraj--kiz / --erkek'ten gelir. */
.pol-btablo .pol-btablo__isim{position:sticky;left:0;z-index:2;min-width:170px;max-width:220px;text-align:left;
  white-space:normal;box-shadow:1px 0 0 var(--pol-line-color);background:var(--pol-n-50)}
.pol-btablo thead .pol-btablo__isim{z-index:3}
.pol-btablo tbody .pol-btablo__isim{font-weight:500}
.pol-btablo tbody .pol-btablo__isim a{display:block;font-size:var(--pol-fs-13);font-weight:700;color:var(--pol-ink);
  text-decoration:none;overflow-wrap:anywhere}
.pol-btablo tbody .pol-btablo__isim a:hover{text-decoration:underline}
.pol-btablo tbody .pol-btablo__isim small{display:block;font-size:11px;color:var(--pol-n-600);margin-top:1px}
.pol-btablo tbody .pol-btablo__isim small.is-gecti{color:var(--pol-success-tx);font-weight:700}
/* Hücre: Derece · Baraj · durum (veli kartıyla aynı sözler). */
.pol-btablo__h{min-width:96px;vertical-align:top}
.pol-btablo__s{display:flex;justify-content:space-between;align-items:baseline;gap:8px}
.pol-btablo__s small{font-size:10px;color:var(--pol-n-500)}
.pol-btablo__s b{font-size:var(--pol-fs-13);color:var(--pol-ink);font-weight:700}
.pol-btablo__durum{display:inline-flex;align-items:center;gap:3px;margin-top:4px;font-size:11px;font-weight:700;color:var(--pol-n-500)}
.pol-btablo__h.is-gecti{background:var(--pol-success-bg)}
.pol-btablo__h.is-gecti .pol-btablo__durum{color:var(--pol-success)}
.pol-btablo__h.is-kaldi .pol-btablo__durum{color:var(--pol-warning-tx)}
.pol-btablo__h.is-yok b{color:var(--pol-n-500)}
/* Yarış penceresi: bağlı baraj türleri (06.10.2026, db/113) — iki sütun, uzun listede kendi içinde kayar. */
.pol-yarisbaraj{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 16px;max-height:260px;overflow-y:auto;
  padding:12px;border:var(--pol-line-border);border-radius:var(--pol-r-md)}
@media(max-width:620px){ .pol-yarisbaraj{grid-template-columns:1fr} }
/* Veli > Katılım Talebi (06.10.2026, db/113): geçilen barajlar listesi + eylem satırı. */
.pol-katilim__barajlar{list-style:none;margin:6px 0 0;padding:0;display:flex;flex-direction:column;gap:6px}
.pol-katilim__barajlar li{display:flex;align-items:flex-start;gap:6px;font-size:var(--pol-fs-13);font-weight:600;color:var(--pol-ink)}
.pol-katilim__barajlar .pol-i{flex:none;margin-top:1px;color:var(--pol-success)}
.pol-katilim__eylem{display:flex;flex-wrap:wrap;align-items:center;gap:10px}
/* Veli > Yarış Takvimi tablosu (26.10.2026, federasyon takvimi düzeni). Masaüstünde Tarih hücresi yalnız tarihtir;
   telefonda akordiyon özeti yarışı tanıtmalı: ad + tarih + kalan gün. Açılınca Müsabaka ve Kalan tekrar edilmez. */
.pol-takvimtablo__mob{display:none}
.pol-takvimtablo__mob .pol-small{display:block;margin-top:2px}
.pol-takvimtablo__katilim{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px}
.pol-takvimtablo__gerekce{flex-basis:100%}
/* "Katılım talebi onaylanmadı" Katılım Talebi sayfasını açar; tablo rozeti düzleştiği için tıklanabilirliği alt çizgi söyler. */
.pol-table tbody td a.pol-takvimtablo__bag{font-weight:600;text-decoration:underline;text-underline-offset:3px}
@media(min-width:821px){
  /* Tarih · 25/50M · Kategori · Kalan tek satır; sığmayan genişliği Müsabaka Adı alır ("12 gün / kaldı" kırılmasın). */
  .pol-takvimtablo td:nth-child(1),.pol-takvimtablo td:nth-child(3),
  .pol-takvimtablo td:nth-child(4),.pol-takvimtablo td:nth-child(6){white-space:nowrap}
}
.pol-table tbody tr.pol-takvimtablo__kayitli{background:var(--pol-success-bg)}
html[data-tema="koyu"] .pol-table tbody tr.pol-takvimtablo__kayitli{background:#133B27}
@media(max-width:820px){
  .pol-takvimtablo__masa{display:none}
  .pol-takvimtablo__mob{display:block}
  .pol-table--responsive.pol-takvimtablo tbody tr.is-open td.pol-takvimtablo__ad,
  .pol-table--responsive.pol-takvimtablo tbody tr.is-open td.pol-takvimtablo__kalan{display:none}
}
/* Ad hücresi cinsiyet rengi — yapışık sütunun nötr zeminini ezer (kız pembe, erkek mavi; baraj tanımıyla aynı ton). */
.pol-btablo tbody .pol-btablo__isim.pol-baraj--kiz{background:#FBDDEB}
.pol-btablo tbody .pol-btablo__isim.pol-baraj--erkek{background:#D9E8FD}
/* Stil başlığı ORTALI (07.10.2026, kullanıcı isteği). Önce dar ekranda görünsün diye sola yaslı + yapışıktı;
   kullanıcı ortalı istedi — geniş colspan'de yazı stil grubunun ortasında durur. */
.pol-btablo thead th.pol-btablo__stil{text-align:center}
@media(max-width:620px){
  .pol-btablo .pol-btablo__isim{min-width:128px;max-width:140px}
}
/* Kalan büyük değer olarak da aynı renk kuralını taşır (AidatVm.KalanRenk). */
.pol-odemetutar__val.pol-kalan--tamam{color:var(--pol-success)}
.pol-odemetutar__val.pol-kalan--parcali{color:#B7791F}
.pol-odemetutar__val.pol-kalan--gecikti{color:var(--pol-danger)}
/* Antrenör Sporcu Kaydet penceresi: veli talebi ret onayı (06.10.2026) — pencere içinde, kırmızımsı çerçeve. */
.pol-talepret{padding:12px 14px;border:1px solid #F0A5A8;border-radius:var(--pol-r-md);background:var(--pol-danger-bg)}

/* ==========================================================================
   UYGULAMA AYARLARI (06.10.2026) — Views/Shared/_UygulamaAyarlari, üç panelde ortak.
   Tema ve yazı boyutu <html data-tema / data-yazi> ile (pol-tema.js, çerez). Aşağıda üç bölüm:
   1) sayfa bileşenleri  2) yazı boyutu  3) koyu tema.
   ========================================================================== */
/* Sayfa projenin kart düzenini kullanır (.pol-card + .pol-payopt radyo kartı); yalnız iki küçük ek:
   yazı boyutu kartının "A" ikonu ve alttaki sürüm satırı. İlk sürümdeki özel .pol-ayarlar/.pol-ayarsecim
   bileşenleri kaldırıldı — kullanıcı "bizim tasarımımızla yap" dedi (06.10.2026). */
button.pol-payopt{width:100%;text-align:left;font:inherit}
.pol-yaziboyu{font-family:var(--pol-font);font-weight:700;line-height:1}
.pol-yaziboyu--kucuk{font-size:15px}
.pol-yaziboyu--orta{font-size:20px}
.pol-yaziboyu--buyuk{font-size:26px}
.pol-ayarlar-surum{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:4px 10px;text-align:center}
.pol-ayarlar-surum [data-cihaz-ad]:empty{display:none}
@media(max-width:620px){ .pol-ayarlar-surum{flex-direction:column} }
/* Seçim kartları ızgarası telefonda da YAN YANA kalır (pol-g2/g3 telefonda tek sütuna düşüyordu ve sayfa
   gereksiz uzuyordu); dar ekranda kart dikeyleşir: ikon üstte, ad altta. */
.pol-secimizgara{display:grid;gap:10px}
.pol-secimizgara--2{grid-template-columns:repeat(2,minmax(0,1fr))}
.pol-secimizgara--3{grid-template-columns:repeat(3,minmax(0,1fr))}
@media(max-width:620px){
  .pol-secimizgara .pol-payopt{flex-direction:column;justify-content:center;gap:8px;padding:12px 6px;text-align:center}
  .pol-secimizgara .pol-payopt__tx{flex:none}
}
/* ── 2) YAZI BOYUTU — kök font; yazılar rem tokenlarından (--pol-fs-*) ölçeklenir. ── */
html[data-yazi="kucuk"]{font-size:93.75%}   /* 15px */
html[data-yazi="buyuk"]{font-size:112.5%}   /* 18px */

/* ── 3) KOYU TEMA — renkler tokenlardan geldiği için çoğu bileşen kendiliğinden döner;
   sabit renkli yüzeyler (üst bar, pastel satır zeminleri, cinsiyet renkleri) ayrıca ezilir. ── */
html[data-tema="koyu"]{
  color-scheme:dark;
  --pol-ink:#F1F3F9;
  --pol-n-0:#171B27;  --pol-n-25:#1B2030; --pol-n-50:#131722; --pol-n-100:#0B0E16;
  --pol-n-200:#2A3142; --pol-n-300:#3A4256; --pol-n-400:#5E687F; --pol-n-500:#8D97AD;
  --pol-n-600:#A7B0C4; --pol-n-700:#C2C9D8; --pol-n-800:#DCE1EC; --pol-n-900:#EEF1F7;
  --pol-line-color:#2A3142; --pol-line-inner:#252B3B;
  --pol-blue-50:#1C2050; --pol-blue-100:#262B66; --pol-blue-200:#363C8A;
  --pol-blue-600:#9AA1FF; --pol-blue-700:#B9BEFF;
  --pol-orange-50:#33220F; --pol-orange-100:#4A3014;
  --pol-sand-soft:#2A2116; --pol-red-50:#3A1416;
  --pol-success-bg:#0F2E1E; --pol-success-tx:#6EE7A0;
  --pol-warning-bg:#33280A; --pol-warning-tx:#F5C451;
  --pol-danger-bg:#3A1416;  --pol-danger-tx:#FF9A9E;
  --pol-info-bg:#1C2050;    --pol-info-tx:#B9BEFF;
  --pol-sh-xs:0 1px 2px rgba(0,0,0,.4);
  --pol-sh-sm:0 2px 6px rgba(0,0,0,.45);
  --pol-sh-md:0 8px 20px -6px rgba(0,0,0,.55);
  --pol-sh-lg:0 18px 40px -12px rgba(0,0,0,.6);
}
html[data-tema="koyu"] body{background:var(--pol-n-100)}
html[data-tema="koyu"] .pol-shell{background:
  radial-gradient(circle at 4% 5%,rgba(92,102,238,.10),transparent 27%),
  radial-gradient(circle at 96% 0,rgba(244,123,32,.07),transparent 24%),var(--pol-n-100)}
html[data-tema="koyu"] .pol-app--inner .pol-topbar{background:rgba(23,27,39,.96)}
/* Düğme dudakları koyu kalsın (danger/success-tx açık renge döndü). */
html[data-tema="koyu"] .pol-btn--primary{--pol-btn-edge:#14166F}
html[data-tema="koyu"] .pol-btn--primary:hover{background:#3A3FE0}
html[data-tema="koyu"] .pol-btn--danger{--pol-btn-edge:#7A0C10}
html[data-tema="koyu"] .pol-btn--success{--pol-btn-edge:#075128}
html[data-tema="koyu"] .pol-btn--success:hover{background:#0E8A43}
html[data-tema="koyu"] .pol-btn--ghost{--pol-btn-edge:#0B0E16;--pol-btn-cast:rgba(0,0,0,.4)}
html[data-tema="koyu"] .pol-btn--warning-soft,html[data-tema="koyu"] .pol-merkezdurum--warning,
html[data-tema="koyu"] .pol-merkezdurum--kismi,html[data-tema="koyu"] .pol-badge--kismi{border-color:#5C4813}
html[data-tema="koyu"] .pol-btn--danger-soft,
html[data-tema="koyu"] .pol-talepret{border-color:#6B2125}
/* Sabit pastel zeminler → koyu karşılıkları (metin tokenları açık renge döndüğü için). */
html[data-tema="koyu"] .pol-table tbody tr.pol-aidatsatir--gecikti:hover{background:#4A1A1D}
html[data-tema="koyu"] .pol-table tbody tr.pol-aidatsatir--odendi:hover{background:#133B27}
html[data-tema="koyu"] .pol-table tbody tr.pol-aidatsatir--kismi:hover{background:#3F320E}
html[data-tema="koyu"] .pol-baraj--kiz,html[data-tema="koyu"] .pol-btablo tbody .pol-btablo__isim.pol-baraj--kiz,
html[data-tema="koyu"] .pol-modal__box.pol-baraj--kiz .pol-modal__body{background:#3A1A2B;border-color:#6E3553}
html[data-tema="koyu"] .pol-baraj--erkek,html[data-tema="koyu"] .pol-btablo tbody .pol-btablo__isim.pol-baraj--erkek,
html[data-tema="koyu"] .pol-modal__box.pol-baraj--erkek .pol-modal__body{background:#1A2846;border-color:#34507F}
html[data-tema="koyu"] .pol-baraj--kiz .pol-sure3 .pol-input,html[data-tema="koyu"] .pol-baraj--erkek .pol-sure3 .pol-input,
html[data-tema="koyu"] .pol-btablo__kap,html[data-tema="koyu"] .pol-pwa__logo{background:var(--pol-n-0)}
html[data-tema="koyu"] .pol-table tbody td span.pol-kalan--parcali,
html[data-tema="koyu"] .pol-kalanbilgi b.pol-kalan--parcali,
html[data-tema="koyu"] .pol-odemetutar__val.pol-kalan--parcali{color:#F5C451}
html[data-tema="koyu"] .pol-btablo thead th.is-alt{background:#16301F}
html[data-tema="koyu"] .pol-snc__t .pol-snc__stil--1{background:#16301F}
html[data-tema="koyu"] .pol-snc__t th.pol-snc__stil--1{background:#1D3F28}
html[data-tema="koyu"] .pol-snc__t tr.is-kisa .pol-snc__bilgi{background:#4A4410;color:#FFF27A}
html[data-tema="koyu"] .pol-snc__t tr.is-uzun .pol-snc__bilgi{background:#103A4A;color:#9EE2FF}

/* ALT MENÜSÜ OLAN MENÜ ÖĞESİ (06.10.2026, kullanıcı isteği): sağda ok — kapalıyken aşağı, öğe açıkken
   (alt menü görünürken) yukarı bakar. Alt menüler yalnız o sayfa açıkken basıldığı için işaret SUNUCUDA konur:
   menü görünümlerinde .pol-navitem--alt. Yeni bir öğeye .pol-navsub eklenirse bu sınıf da eklenir.
   Ok, tablo akordiyonundaki gibi kenarlıkla çizilir (ikon dosyası gerekmez); sayaç rozeti varsa ondan sonra durur.
   Daraltılmış/ikon menüde (yazılar gizliyken) gösterilmez. */
.pol-navitem--alt::after{content:'';flex:none;width:7px;height:7px;margin-left:auto;margin-right:4px;
  border-right:2px solid currentColor;border-bottom:2px solid currentColor;opacity:.55;
  transform:translateY(-2px) rotate(45deg);transition:transform var(--pol-t-fast),opacity var(--pol-t-fast)}
.pol-navitem--alt:has(.pol-navitem__badge)::after{margin-left:8px}
.pol-navitem--alt:hover::after{opacity:.85}
.pol-navitem--alt.is-active::after{transform:translateY(2px) rotate(-135deg);opacity:.8}
.pol-app.is-side-mini .pol-navitem--alt::after{display:none}
@media(min-width:821px) and (max-width:1180px){ .pol-navitem--alt::after{display:none} }

/* ==========================================================================
   KARŞILAMA KARTI (06.10.2026) — Views/Shared/_KarsilamaKarti, veli ve antrenör ana sayfa üst bölümü.
   Üstte marka mavisi bant, altta beyaz alan (tokenlarla — koyu temada kendiliğinden kararır).
   Kullanıcı prototipler arasından seçti: "A3" (beyaz kart + bant) + "M3" (telefonda malzemeler yana
   KAYMAZ, açılır özet satırıdır). Eski .pol-hero künyesi sporcu kartı vb. yerlerde kullanılmaya devam eder.
   ========================================================================== */
.pol-karsilama{position:relative;overflow:hidden;margin-bottom:20px;border:var(--pol-line-border);
  border-radius:var(--pol-r-xl);background:var(--pol-n-0);color:var(--pol-ink);box-shadow:var(--pol-sh-sm)}
.pol-karsilama__bant{position:relative;overflow:hidden;padding:22px 24px;color:#fff;
  background:radial-gradient(70% 140% at 100% 0%,rgba(244,123,32,.22),transparent 60%),
             linear-gradient(120deg,#2124B8 0%,#2B2FD6 50%,#4F57EA 100%)}
.pol-karsilama__bant::after{content:'';position:absolute;right:-50px;top:-70px;width:200px;height:200px;
  border-radius:50%;border:26px solid rgba(255,255,255,.07);pointer-events:none}
.pol-karsilama__ust{position:relative;z-index:1;display:flex;align-items:center;gap:16px}
.pol-karsilama__kim{min-width:0}
.pol-karsilama__ph{width:76px;height:76px;flex:none;display:grid;place-items:center;border-radius:22px;
  background:rgba(255,255,255,.18);border:2px solid rgba(255,255,255,.45);
  font-family:var(--pol-font-cond);font-size:28px;font-weight:700;letter-spacing:.02em}
.pol-karsilama__selam{font-size:var(--pol-fs-13);font-weight:500;color:rgba(255,255,255,.82)}
.pol-karsilama__selam b{font-weight:600;color:#fff}
.pol-karsilama__isim{margin-top:2px;font-family:var(--pol-font-cond);font-size:2.25rem;font-weight:700;
  line-height:1.02;overflow-wrap:anywhere}
.pol-karsilama__etiketler{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.pol-karsilama__etk{padding:3px 10px;border-radius:var(--pol-r-full);background:rgba(255,255,255,.18);
  font-size:var(--pol-fs-12);font-weight:600}

.pol-karsilama__govde{display:grid;gap:24px;align-items:start;padding:18px 24px 22px}
.pol-karsilama__govde--malzemeli{grid-template-columns:minmax(0,1.25fr) minmax(0,1fr)}
.pol-karsilama__govde>*{min-width:0}
.pol-karsilama__satirlar{display:grid;gap:8px}
.pol-karsilama__s{display:flex;align-items:center;gap:12px;min-width:0;padding:9px 12px 9px 9px;
  border:var(--pol-line-border);border-radius:14px;background:var(--pol-n-50);color:var(--pol-ink)}
.pol-karsilama__s--link{text-decoration:none;transition:var(--pol-t-fast)}
.pol-karsilama__s--link:hover{text-decoration:none;border-color:var(--pol-blue-300);background:var(--pol-blue-50)}
/* Uyarı satırı (Renk "kirmizi" — iptal edilen antrenman, 30.10.2026): kırmızı zemin + nabız atan ikon,
   veli ana sayfasında ve sporcu kartında dikkat çeksin. Hareket azaltma tercihinde ikon durur. */
.pol-karsilama__s--kirmizi{background:var(--pol-danger-bg);border-color:color-mix(in srgb,var(--pol-danger) 45%,transparent)}
.pol-karsilama__s--kirmizi .pol-karsilama__stx small{color:var(--pol-danger-tx)}
.pol-karsilama__s--kirmizi .pol-karsilama__stx span{color:var(--pol-danger-tx);font-weight:600}
.pol-karsilama__s--kirmizi .pol-karsilama__i{background:var(--pol-danger);color:#fff;
  animation:pol-uyari-nabiz 1.6s ease-in-out infinite}
.pol-karsilama__s--kirmizi .pol-karsilama__i .pol-i{animation:pol-uyari-salla 1.6s ease-in-out infinite}
@keyframes pol-uyari-nabiz{
  0%,100%{box-shadow:0 0 0 0 color-mix(in srgb,var(--pol-danger) 55%,transparent)}
  60%{box-shadow:0 0 0 9px color-mix(in srgb,var(--pol-danger) 0%,transparent)}}
@keyframes pol-uyari-salla{0%,60%,100%{transform:rotate(0)}10%,30%{transform:rotate(-14deg)}20%,40%{transform:rotate(14deg)}}
@media(prefers-reduced-motion:reduce){
  .pol-karsilama__s--kirmizi .pol-karsilama__i,.pol-karsilama__s--kirmizi .pol-karsilama__i .pol-i{animation:none}
}
.pol-karsilama__stx{min-width:0;overflow-wrap:anywhere;line-height:1.3}
.pol-karsilama__stx small{display:block;margin-bottom:1px;font-size:10.5px;font-weight:700;letter-spacing:.08em;
  text-transform:uppercase;color:var(--pol-n-500)}
.pol-karsilama__stx b{display:block;font-size:var(--pol-fs-14);font-weight:600;color:var(--pol-ink)}
.pol-karsilama__i{flex:none;width:36px;height:36px;display:grid;place-items:center;border-radius:10px}
.pol-karsilama__i .pol-i{width:18px;height:18px}
.pol-karsilama__i--mavi{background:var(--pol-blue-50);color:var(--pol-blue-500)}
.pol-karsilama__i--turuncu{background:var(--pol-orange-50);color:var(--pol-orange-500)}
.pol-karsilama__i--kirmizi{background:var(--pol-danger-bg);color:var(--pol-danger)}

/* Malzemeler — masaüstünde sağ sütunda ikili ızgara; özet satırı gizli. */
.pol-karsilama__mzbas{margin-bottom:10px;font-size:10.5px;font-weight:700;letter-spacing:.08em;
  text-transform:uppercase;color:var(--pol-n-500)}
.pol-karsilama__mzlist{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.pol-karsilama__mzk{display:flex;align-items:center;gap:9px;width:100%;min-width:0;padding:6px 10px 6px 6px;
  border:var(--pol-line-border);border-radius:14px;background:var(--pol-n-0);text-align:left;font:inherit;
  cursor:pointer;transition:var(--pol-t-fast)}
.pol-karsilama__mzk:hover{border-color:var(--pol-blue-300);background:var(--pol-blue-50)}
.pol-karsilama__mzk img,.pol-karsilama__mzico{width:34px;height:34px;flex:none;border-radius:10px;object-fit:cover;background:#fff}
.pol-karsilama__mzico{display:grid;place-items:center;background:var(--pol-n-50);color:var(--pol-n-500)}
.pol-karsilama__mzk b{min-width:0;font-size:12.5px;font-weight:700;line-height:1.2;color:var(--pol-ink);overflow-wrap:anywhere}
.pol-karsilama__ozet{display:none}

@media(max-width:820px){
  .pol-karsilama{border-radius:20px}
  .pol-karsilama__bant{padding:18px}
  .pol-karsilama__ph{width:62px;height:62px;border-radius:18px;font-size:24px}
  .pol-karsilama__isim{font-size:1.75rem}
  /* Telefonda tek sütun; malzeme satırı bilgi satırlarıyla AYNI aralıkta (8px) durur. */
  .pol-karsilama__govde,.pol-karsilama__govde--malzemeli{grid-template-columns:1fr;gap:8px;padding:16px 18px 18px}
  .pol-karsilama__mzbas{display:none}
  .pol-karsilama__ozet{display:flex;align-items:center;gap:12px;width:100%;padding:10px 12px;
    border:var(--pol-line-border);border-radius:14px;background:var(--pol-n-50);font:inherit;text-align:left;cursor:pointer}
  .pol-karsilama__ozet .pol-karsilama__stx{flex:1}
  .pol-karsilama__yigin{display:flex;flex:none}
  .pol-karsilama__yigin:empty{display:none}
  .pol-karsilama__yigin img{width:32px;height:32px;border-radius:50%;object-fit:cover;background:#fff;
    border:2px solid var(--pol-n-0);box-shadow:0 2px 6px -2px rgba(14,17,48,.35)}
  .pol-karsilama__yigin img+img{margin-left:-10px}
  .pol-karsilama__ok{flex:none;width:8px;height:8px;margin-right:4px;border-right:2px solid var(--pol-n-500);
    border-bottom:2px solid var(--pol-n-500);transform:translateY(-2px) rotate(45deg);transition:transform var(--pol-t-fast)}
  .pol-karsilama__mz.is-acik .pol-karsilama__ok{transform:translateY(2px) rotate(-135deg)}
  .pol-karsilama__mz:not(.is-acik) .pol-karsilama__mzlist{display:none}
  .pol-karsilama__mz.is-acik .pol-karsilama__mzlist{margin-top:8px;grid-template-columns:repeat(3,minmax(0,1fr))}
  .pol-karsilama__mz.is-acik .pol-karsilama__mzk{flex-direction:column;justify-content:flex-start;gap:7px;
    padding:10px 6px 9px;text-align:center}
  .pol-karsilama__mz.is-acik .pol-karsilama__mzk img,.pol-karsilama__mz.is-acik .pol-karsilama__mzico{width:42px;height:42px;border-radius:12px}
  .pol-karsilama__mz.is-acik .pol-karsilama__mzk b{font-size:11.5px}
}
/* Koyu tema: bant markanın yüzü olarak kalır, parlaklığı biraz kısılır; beyaz alan tokenlardan zaten koyu. */
html[data-tema="koyu"] .pol-karsilama__bant{background:
  radial-gradient(70% 140% at 100% 0%,rgba(244,123,32,.18),transparent 60%),
  linear-gradient(120deg,#1A1C93 0%,#2124B8 55%,#3B41D8 100%)}
html[data-tema="koyu"] .pol-karsilama__yigin img{box-shadow:0 2px 6px -2px rgba(0,0,0,.6)}
html[data-tema="koyu"] .pol-karsilama__i--mavi{color:var(--pol-blue-300)}

/* KARŞILAMA KARTI = SPORCU KARTI KÜNYESİ (06.10.2026, Shared/_SporcuKarti → SporcuKartiVerisi.Kunye()):
   fotoğraf baş harfin yerine geçer; satırda ikinci satır (okul: sınıf · ilçe · no / veli: telefon);
   sağ sütunda veliler (malzemelerle aynı yer ve başlık dili). */
.pol-karsilama__ph--foto{padding:0;object-fit:cover;background:rgba(255,255,255,.18)}
.pol-karsilama__stx span{display:block;margin-top:1px;font-size:var(--pol-fs-12);font-weight:500;color:var(--pol-n-500)}

/* ==========================================================================
   SEKMELİ SOL MENÜ (06.10.2026) — kullanıcının örneğinden, prototiple seçildi; ÜÇ PANELDE AYNI
   (.pol-navitem tek tanım). Seçili sayfa, çalışma paneliyle aynı zeminde bir sekme olur: sağa uzanıp
   panele kaynaşır, üst ve alt köşeleri İÇE kıvrılır (::before — eski 3px'lik akzan çizgisinin yeri; renk
   ikonda kalır). Kaynaşma için:
   · menü ile panel arasındaki 14px'lik ızgara boşluğu kalktı (column-gap 0) — o nefes artık menünün
     kendi sağ iç boşluğudur; seçili öğe o boşluğa taşar (margin-right eksi, padding-right artı:
     içerik yerinden oynamaz). overflow-x:hidden padding kenarında kırptığı için taşma görünür kalır.
   · panelin 1px çerçevesi kalktı — sekmenin bağlandığı yerde çizgi dururdu; beyaz panel gri zeminde
     zaten ayrışıyor. Üst bar ile içerik arası iç çizgiyle ayrılır.
   · menünün kaydırma çubuğu gizli (tekerlek/dokunmayla kayar) — Windows'ta çubuk yer kaplar ve
     sekmeyi panelden 8px koparırdı.
   Telefonda (≤820px) menü beyaz çekmecedir, yanında panel yoktur: eski görünüm (yumuşak zemin +
   akzan çizgisi) sürer. Hesap kartı ızgara boşluğu kalktığı için 14px sağa alındı.
   ========================================================================== */
@media(min-width:821px){
  .pol-app--inner{column-gap:0}
  .pol-app--inner .pol-topbar{border:0;border-bottom:1px solid var(--pol-line-inner)}
  .pol-app--inner .pol-main{border:0}
  .pol-app--inner .pol-athlete{left:calc(-1 * var(--pol-sidebar-w) + 14px)}
  .pol-side__scroll{scrollbar-width:none}
  .pol-side__scroll::-webkit-scrollbar{display:none}

  .pol-navitem.is-active,.pol-navitem.is-active:hover{
    margin-right:-14px;padding-right:23px;border-radius:12px 0 0 12px;background:var(--pol-n-0)}
  .pol-navitem.is-active::before,
  .pol-app.is-side-mini .pol-navitem.is-active::before{
    display:block;content:'';position:absolute;left:auto;right:0;top:-18px;bottom:-18px;width:18px;
    border-radius:0;pointer-events:none;background:
      radial-gradient(circle at 0 0,transparent 17.5px,var(--pol-n-0) 18px) top/18px 18px no-repeat,
      radial-gradient(circle at 0 100%,transparent 17.5px,var(--pol-n-0) 18px) bottom/18px 18px no-repeat}
}
/* Daraltılmış menü (elle ≥1181 ya da kendiliğinden 821–1180): sağ iç boşluk 10px. */
@media(min-width:1181px){
  .pol-app.is-side-mini .pol-navitem.is-active{margin-right:-10px;padding-right:19px}
  .pol-app.is-side-mini .pol-athlete{left:calc(-1 * var(--pol-sidebar-w-mini) + 8px)}
}
@media(min-width:821px) and (max-width:1180px){
  .pol-side .pol-navitem.is-active{margin-right:-10px;padding-right:19px}
  .pol-app--inner .pol-athlete{left:calc(-1 * var(--pol-sidebar-w-mini) + 8px)}
}

/* ÖDEME DURUM ROZETİ İKONU (06.10.2026, Shared/_OdemeDurum · OdemeBilgisi.DurumIkonu). Tabloda rozet
   düzleşir (zeminsiz gri yazı, satır içi) — ikon satır içine iner ve DURUM RENGİNİ korur; renksiz rozet
   dilinde bile ödendi/gecikti bir bakışta ayrılır. Kısmi rozeti tabloda da zeminli kalır (kendi rengi). */
.pol-durum__ico{width:14px;height:14px;flex:none}
/* Düzleşmiş rozet satır içi akardı: dar sütunda ikon yazının ÜSTÜNE düşüyordu. inline-flex ile ikon solda kalır,
   uzun durum ("Havale/EFT ödemesi onay bekliyor") ikonun yanında kendi içinde sarar. */
.pol-table tbody td:not(.pol-td-actions) .pol-durum:not(.pol-badge--kismi){display:inline-flex;align-items:flex-start;gap:5px;text-align:left}
.pol-table tbody td .pol-durum:not(.pol-badge--kismi) .pol-durum__ico{margin-top:2px}
.pol-table tbody td .pol-badge--success .pol-durum__ico{color:var(--pol-success)}
.pol-table tbody td .pol-badge--danger .pol-durum__ico{color:var(--pol-danger)}
.pol-table tbody td .pol-badge--warning .pol-durum__ico{color:var(--pol-warning)}
.pol-table tbody td .pol-badge--info .pol-durum__ico{color:var(--pol-info)}
.pol-table tbody td .pol-badge--accent .pol-durum__ico{color:var(--pol-orange-600)}
.pol-table tbody td .pol-badge--neutral .pol-durum__ico{color:var(--pol-n-500)}

/* DEVAMLILIK KART BAŞLIĞI (06.10.2026, _VeliIcerikDevamlilik): "Bu Ay" / "Sezon" yanında renkli dağılım —
   eski üç büyük "Katıldı · Mazeretli · Gelmedi" kartının yerine. Dar kartta dağılım başlığın altına sarar. */
.pol-devambas{display:flex;align-items:baseline;flex-wrap:wrap;gap:4px 14px}
.pol-devambas__say{display:flex;flex-wrap:wrap;gap:4px 12px;font-size:var(--pol-fs-13)}
.pol-devambas__say b{font-weight:700;white-space:nowrap}
.pol-devambas__katildi{color:var(--pol-success)}
.pol-devambas__mazeret{color:var(--pol-warning-tx)}
.pol-devambas__gelmedi{color:var(--pol-danger)}
/* Halka başlıkları (Sporcu · Grup Ortalaması) telefonda halkalara ortalı — solda kalınca halkalardan kopuyordu. */
@media(max-width:820px){ .pol-devamhalka__t{text-align:center} }

/* ==========================================================================
   KART ARALIĞI — TEK DEĞER (06.10.2026, kullanıcı: "tüm kartların aşağı-yukarı ve sağ-sol boşlukları
   tüm projede aynı olsun"). Üç panel tarandı: kartlar arası 8 · 12 · 16 · 20 · 24px karışıktı (ızgarada
   16, alt alta 20/24, baraj türleri 12, kulvar kartları 8/12). Artık İKİ YÖNDE DE --pol-kart-ara:
   masaüstü 20px, telefon (≤820) 14px — telefonda sayfanın yan iç boşluğuyla aynı.
   · Kart ızgaraları: içinde kart olan .pol-grid (:has — form alanı ızgaraları etkilenmez) ve kart
     dizen diğer ızgaralar.
   · Alt alta: kart düzeyindeki bloklar pol-mb-4/5/6 taşıyordu (16/20/24) — hepsi tek değere iner;
     kartın üstündeki çip/süzgeç satırı da — YALNIZ sayfa düzeyinde (.pol-main > .pol-flex). İlk sürümde her
     .pol-flex.pol-mb-* yakalanıyordu: kartın İÇİNDEKİ satırların aralığı da değişmişti (grup kartı satırları).
     Pencere (modal) içindekiler kapsam dışı.
   YENİ BİR KART IZGARASI/BLOĞU EKLERKEN boşluğu elle yazmayın; bu listeye girsin.
   Kapsam dışı (kart değil, kart İÇİ satır/seçenek): .pol-riza kalemleri, .pol-payopt seçenekleri,
   .pol-kartbolum bölüm ayırıcısı (başlıklı bölüm, çizgiyle ayrılır).
   ========================================================================== */
:root{--pol-kart-ara:20px}
@media(max-width:820px){ :root{--pol-kart-ara:14px} }
.pol-grid:has(> :is(.pol-card,.pol-payment-card,.pol-tablewrap)),
.pol-dashgrid,.pol-odemegrid,.pol-baraj-turler,.pol-kulvarlar,.pol-kulvarlar--genis{gap:var(--pol-kart-ara)}
:is(.pol-card,.pol-grid,.pol-dashgrid,.pol-tablewrap,.pol-hero,.pol-alert,.pol-aidatara,.pol-payment-card):is(.pol-mb-4,.pol-mb-5,.pol-mb-6):not(.pol-modal *),
.pol-main > .pol-flex:is(.pol-mb-4,.pol-mb-5,.pol-mb-6),
.pol-karsilama{margin-bottom:var(--pol-kart-ara)}
.pol-card:is(.pol-mt-4,.pol-mt-5,.pol-mt-6){margin-top:var(--pol-kart-ara)}

/* ÖDEME GRUP KARTI ÜST SATIRI (06.10.2026, Shared/_OdemeGrupKarti — Aidat Yönetimi + Spor Merkezi Ödemesi):
   SARAR. Önce sarmıyordu: 360–375px telefonda "Oluşturulmadı" kartın 13–28px (büyük yazıda 54px) dışına taşıyordu.
   flex-basis 0 + min-width:auto → satır, adın EN UZUN KELİMESİ + rozet sığmıyorsa kırılır: rozet alt satıra iner,
   ad kelimenin ortasından BÖLÜNMEZ (ilk denemede min-width:0 "PERFORMA NS-B" yazdırdı). Sığıyorsa yan yana kalır. */
.pol-grupkart__ust{flex-wrap:wrap;row-gap:10px}
.pol-grupkart__ust > .pol-flex{flex:1 1 0}
.pol-grupkart__ust > .pol-durum{flex:none}
/* ── FİZİKİ POS (07.10.2026) — veli Aidat ödeme penceresi, "Fiziki Ödeme" sekmesi ──────────────
   Kart sağdan gelir, cihaza dokunur (temassız dalgalar), ekranda bekleme noktaları onay işaretine
   döner; 3,6 sn'lik döngü. Renkler token — koyu temada kendiliğinden kararır. Hareket azaltma
   tercihinde animasyon durur, onaylı son kare görünür. */
.pol-pos{display:flex;justify-content:center;padding:4px 0 8px}
.pol-pos__svg{width:100%;max-width:280px;height:auto;overflow:visible}
.pol-pos__cihaz{animation:pol-pos-yuz 3.6s ease-in-out infinite;transform-box:fill-box;transform-origin:center}
.pol-pos__govde{fill:var(--pol-n-0);stroke:var(--pol-ink);stroke-width:3}
.pol-pos__ekran{fill:var(--pol-blue-50);stroke:var(--pol-blue-200);stroke-width:2;animation:pol-pos-ekran 3.6s ease-in-out infinite}
.pol-pos__tus rect{fill:var(--pol-n-100);stroke:var(--pol-n-200);stroke-width:1.5}
.pol-pos__nokta circle{fill:var(--pol-blue-500);animation:pol-pos-nokta 3.6s ease-in-out infinite}
.pol-pos__nokta circle:nth-child(2){animation-name:pol-pos-nokta2}
.pol-pos__nokta circle:nth-child(3){animation-name:pol-pos-nokta3}
.pol-pos__onay{fill:none;stroke:var(--pol-success);stroke-width:4;stroke-linecap:round;stroke-linejoin:round;
  stroke-dasharray:40;stroke-dashoffset:40;animation:pol-pos-onay 3.6s ease-in-out infinite}
.pol-pos__dalga path{fill:none;stroke:var(--pol-blue-500);stroke-width:3.5;stroke-linecap:round;opacity:0;
  animation:pol-pos-dalga 3.6s ease-out infinite}
.pol-pos__dalga path:nth-child(2){animation-delay:.12s}
.pol-pos__dalga path:nth-child(1){animation-delay:.24s}
.pol-pos__kart{animation:pol-pos-kart 3.6s cubic-bezier(.45,.05,.3,1) infinite;transform-box:fill-box;transform-origin:center}
.pol-pos__kartzemin{fill:var(--pol-blue-500)}
.pol-pos__kartserit{fill:var(--pol-blue-700)}
.pol-pos__kartcip{fill:var(--pol-orange-300)}
.pol-pos__metin{text-align:center;max-width:520px;margin:0 auto var(--pol-sp-4);color:var(--pol-n-700);
  font-size:var(--pol-fs-14);line-height:1.55}
.pol-pos__dugme{display:flex;justify-content:center}
/* Online ödeme: Öde solda, kart markaları sağda (14.10.2026). Logo kutuları markanın beyaz zemininde kalır
   (koyu temada da) — marka renkleri beyaz üstünde okunur. Dar ekranda logolar alta sarar. */
.pol-odesatir{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.pol-kartlogolar{display:flex;align-items:center;gap:8px;margin-left:auto}
.pol-kartlogo{display:inline-flex;align-items:center;justify-content:center;width:58px;height:36px;
  background:#fff;border:var(--pol-line-border);border-radius:7px}
.pol-kartlogo svg{width:52px;height:24px;display:block}
.pol-kartlogo__visa{font-family:var(--pol-font);font-size:18px;font-weight:800;font-style:italic;
  letter-spacing:-.02em;fill:#1A1F71}
.pol-kartlogo__troy{font-family:var(--pol-font);font-size:19px;font-weight:700;letter-spacing:-.03em;fill:#00A9CE}
.pol-kartlogo__troy1{fill:#1F2A44}
@media(max-width:620px){
  .pol-kartlogolar{gap:6px}
  .pol-kartlogo{width:46px;height:32px}
  .pol-kartlogo svg{width:42px;height:20px}
}
@keyframes pol-pos-kart{
  0%{transform:translate(46px,-6px) rotate(14deg);opacity:0}
  14%{transform:translate(26px,-4px) rotate(9deg);opacity:1}
  34%,60%{transform:translate(-14px,4px) rotate(-5deg);opacity:1}
  84%{transform:translate(32px,-4px) rotate(10deg);opacity:1}
  100%{transform:translate(46px,-6px) rotate(14deg);opacity:0}}
@keyframes pol-pos-yuz{0%,100%{transform:translateY(0)}50%{transform:translateY(-3px)}}
@keyframes pol-pos-dalga{0%,33%{opacity:0}40%{opacity:1}56%{opacity:.15}62%,100%{opacity:0}}
@keyframes pol-pos-nokta {0%,8%{opacity:.25}12%{opacity:1}20%{opacity:.25}28%{opacity:1}36%{opacity:.25}42%,100%{opacity:0}}
@keyframes pol-pos-nokta2{0%,12%{opacity:.25}16%{opacity:1}24%{opacity:.25}32%{opacity:1}38%{opacity:.25}42%,100%{opacity:0}}
@keyframes pol-pos-nokta3{0%,16%{opacity:.25}20%{opacity:1}28%{opacity:.25}36%{opacity:1}40%{opacity:.25}42%,100%{opacity:0}}
@keyframes pol-pos-onay{0%,44%{stroke-dashoffset:40;opacity:1}54%,86%{stroke-dashoffset:0;opacity:1}96%,100%{stroke-dashoffset:0;opacity:0}}
@keyframes pol-pos-ekran{0%,44%{fill:var(--pol-blue-50)}52%,86%{fill:var(--pol-success-bg)}96%,100%{fill:var(--pol-blue-50)}}
@media(prefers-reduced-motion:reduce){
  .pol-pos__cihaz,.pol-pos__kart,.pol-pos__ekran,.pol-pos__nokta circle,.pol-pos__dalga path,.pol-pos__onay{animation:none}
  .pol-pos__kart{transform:translate(-14px,4px) rotate(-5deg)}
  .pol-pos__nokta{display:none}
  .pol-pos__onay{stroke-dashoffset:0}
}
/* Ödeme yöntemi üç kart: pencere genişliği ekrandan bağımsız 840px olduğu için 621px üstünde HER ZAMAN üç
   sütun (genel .pol-g3 821–1180px'te ikiye düşer, 2 + 1 dizilirdi); telefonda alt alta. */
.pol-grid.pol-odemeyontem{grid-template-columns:repeat(3,minmax(0,1fr))}
/* Telefonda (15.10.2026, kullanıcı isteği) ödeme yöntemleri YAN YANA üçlü kart: ikon üstte, ad altta,
   alt yazı gizli. Dönem kartları da küçülür; sözleşme kutuları + Öde bunun altında sığar. */
@media(max-width:620px){
  .pol-grid.pol-odemeyontem{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px !important}
  .pol-odemeyontem .pol-payopt{flex-direction:column;justify-content:flex-start;gap:6px;padding:10px 4px;text-align:center}
  .pol-odemeyontem .pol-payopt__ico{width:34px;height:34px;border-radius:10px}
  .pol-odemeyontem .pol-payopt__tx{flex:none}
  .pol-odemeyontem .pol-payopt__tx b{font-size:var(--pol-fs-13);line-height:1.2}
  .pol-odemeyontem .pol-payopt__tx span{display:none}
  .pol-odeme-donem__govde{padding:8px 9px;gap:4px}
  .pol-odeme-donem__check{width:18px;height:18px}
  .pol-odeme-donem>input:checked+.pol-odeme-donem__govde .pol-odeme-donem__check::after{left:4px;top:1px;width:5px;height:9px}
  .pol-odeme-donem__ad{font-size:var(--pol-fs-13);line-height:1.25}
  .pol-odeme-donem__tutar{font-size:var(--pol-fs-18) !important}
  .pol-odeme-donem__tarih,.pol-odeme-donem__kilit{font-size:11px}
}
/* Online ödeme sözleşme onayları (db/124): Öde'nin hemen üstünde, çerçeveli tek blok. */
.pol-odesozlesme{margin:4px 0 14px;padding:0 14px;border:var(--pol-line-border);border-radius:var(--pol-r-md)}
.pol-odesozlesme .pol-onaysatir{padding:12px 0}
.pol-odesozlesme .pol-onaysatir:not(:first-child){border-top:var(--pol-line-inner-border)}
.pol-odesozlesme .pol-onaybelge__metin{margin:0 0 12px;max-height:260px}
/* Son Kullanma + CVV telefonda da yan yana (pencere içi ızgaraların tek sütun kuralına bilinçli istisna). */
.pol-modal .pol-grid.pol-odekart__ikili{grid-template-columns:repeat(2,minmax(0,1fr))}
@media(max-width:620px){
  .pol-odesozlesme{padding:0 10px}
  .pol-odesozlesme .pol-onaysatir{gap:8px;padding:10px 0}
  .pol-odesozlesme .pol-check{font-size:var(--pol-fs-13)}
}
/* Sporcular canlı araması (07.10.2026): sonuç kartları araç çubuğunun (form, flex-wrap) içinde tam satır. */
.pol-tabletools > .pol-sporcuara__sonuc{flex:1 1 100%;margin-top:0}
/* Fiziki ödeme durumu (07.10.2026): pencerede "Bildiriminiz başarıyla gönderildi", ödeme sütununda "Ödemeniz başarılı". */
.pol-pos__gonderildi,.pol-odemebasari{display:flex;align-items:center;justify-content:center;gap:8px;
  color:var(--pol-success);font-weight:700;font-size:var(--pol-fs-14)}
.pol-pos__gonderildi{padding:14px 16px;border-radius:var(--pol-r-lg);background:var(--pol-success-bg);max-width:520px;margin:0 auto}
.pol-odemebasari{justify-content:flex-start}
.pol-pos__gonderildi.pol-hide,.pol-odemebasari.pol-hide{display:none}
/* "Çıkış" satır yüksekliğini koruyan kırmızı etiket; ayrı bir eylem değildir (08.10.2026). */
.pol-cikisyazi{display:inline-flex;align-items:center;height:1.55em;padding:0 7px;margin-inline-start:8px;
  border-radius:var(--pol-r-sm);background:var(--pol-danger);color:#fff;font-weight:700;
  line-height:1;vertical-align:middle;white-space:nowrap;pointer-events:none}
/* ── GRUP KARTI HİZASI (07.10.2026) — Aidat Yönetimi + Spor Merkezi Ödemesi grup kartları ──────────────
   Kartlar eşit boydaydı ama İÇ bölümler kayıyordu: "Gün ve Saat" programın uzunluğuna göre 1–3 satır,
   Tahsilat bazen düğmeye yapışıyordu. Her kart 5 bölümdür (başlık · gün ve saat · sporcu · tahsilat ·
   düğme) ve subgrid ile YAN YANA kartların bölümleri aynı satır yüksekliğini alır — en uzun programa göre,
   kırpmadan. Kartlar arası dikey boşluk ızgara boşluğu yerine kart alt boşluğudur (subgrid 0 boşluk ister).
   Desteklemeyen eski tarayıcıda eski düzen (eşit boy kart, düğme dipte) sürer. Telefonda tek sütun:
   her kart kendi içinde aynı düzen. */
.pol-grupkart__tahsilat{margin-bottom:var(--pol-sp-4)}
.pol-grupkart__tahsilat.is-bos{visibility:hidden}
.pol-grupkart .pol-kartsatir > .pol-small:first-child{white-space:nowrap;flex:none}
.pol-grupkart .pol-kartsatir{align-items:center}
@supports (grid-template-rows:subgrid){
  .pol-grid.pol-grupgrid.pol-grupgrid--hizali{grid-auto-rows:auto;row-gap:0}
  .pol-grupgrid--hizali>.pol-grupkart{display:grid;grid-row:span 5;grid-template-rows:subgrid;row-gap:0;
    height:auto;margin-bottom:var(--pol-kart-ara)}
  .pol-grupgrid--hizali>.pol-grupkart>.pol-card__body{grid-row:1 / -1;display:grid;grid-template-rows:subgrid;row-gap:0}
  .pol-grupgrid--hizali>.pol-grupkart>.pol-card__body>*:last-child{margin-top:var(--pol-sp-4)}
  .pol-grupgrid--hizali .pol-grupkart__tahsilat{margin-bottom:0;align-self:end}
}
/* Yarış Sonuçları — ANTRENMAN satırı (07.10.2026): "nerede alındı: Antrenman" dereceleri tabloda ayrı satır. Havuz
   rengi (kısa sarı · uzun mavi) yarışa ait; antrenman satırının bilgi hücreleri nötr zemindir. Baraja girmez. */
.pol-snc__t tr.is-antrenman .pol-snc__bilgi{background:var(--pol-n-100);color:var(--pol-n-700)}
html[data-tema="koyu"] .pol-snc__t tr.is-antrenman .pol-snc__bilgi{background:var(--pol-n-100);color:var(--pol-n-700)}

/* Veli ana sayfası: geçmiş ve mevcut aidat VE spor merkezi (15.10.2026) aynı dikey tutar düzenini kullanır. */
.pol-payment-card__item .pol-odemetutar{flex-direction:column;gap:6px}
/* Aidat + Spor Merkezi yarıları SATIR SATIR HİZALI (30.10.2026, kullanıcı isteği): başlık · durum rozeti · Kalan ·
   Ödenmesi Gereken · Ödenen · tarih · ek (ödeme bağlantısı / belge / uyarı) ortak satırlara oturur (subgrid) —
   soldaki iki satırlık "Sanal POS ile ödeme tamamlandı" rozeti sağdaki satırları artık kaydırmaz.
   Desteklemeyen eski tarayıcıda eski dikey akış sürer. Tek sütunlu önceki dönem kartına dokunulmaz. */
@supports (grid-template-rows:subgrid){
  .pol-payment-card__body:not(.pol-payment-card__body--aidat){grid-template-rows:repeat(8,auto)}
  .pol-payment-card__body:not(.pol-payment-card__body--aidat)>.pol-payment-card__item{
    display:grid;grid-row:span 8;grid-template-rows:subgrid;row-gap:0;justify-items:start;align-content:start}
  .pol-payment-card__body:not(.pol-payment-card__body--aidat) .pol-payment-card__item .pol-odemetutar{display:contents}
  .pol-payment-card__body:not(.pol-payment-card__body--aidat) .pol-payment-card__item .pol-odemetutar__kalem{margin-bottom:6px}
  .pol-payment-card__body:not(.pol-payment-card__body--aidat)>.pol-payment-card__item>:is(.pol-payment-card__status,.pol-payment-card__odendi){align-self:center}
}
.pol-performance-card>.pol-card__body{display:flex;flex-direction:column;min-height:0}
@media(min-width:821px){
  .pol-performance-card>.pol-card__body{position:relative;min-height:340px}
  .pol-performance-card .pol-kulvarlar{position:absolute;inset:20px;margin:0;min-height:0;max-height:none;
    grid-auto-rows:min-content;align-content:start}
}
/* Veli menüsünün sonunda, mevcut değerlendirme/ayrılma işlemleri için ayrı kart. */
.pol-side--veli .pol-side__scroll{display:flex;flex-direction:column}
.pol-side--veli .pol-side__group{flex:none}
.pol-side__feedback-wrap{margin-top:auto;padding-top:20px;flex:none}
.pol-side__feedback{display:grid;gap:0;padding:8px 10px;border:var(--pol-line-border);
  border-radius:var(--pol-r-md);background:var(--pol-n-200)}
.pol-side__feedback-action{display:flex;align-items:center;width:100%;min-height:44px;justify-content:flex-start;
  gap:8px;padding:8px 10px;font-size:var(--pol-fs-12);font-weight:600;line-height:1.3;
  text-align:left;white-space:normal;text-decoration:none}
.pol-side__feedback-action--review{color:var(--pol-warning-tx)}
.pol-side__feedback-action--leave{color:var(--pol-danger-tx)}
.pol-side__feedback-action:hover{color:var(--pol-ink);text-decoration:none}
.pol-side__feedback-action:focus-visible{outline:2px solid currentColor;outline-offset:2px}
.pol-side__feedback-icon{display:flex;align-items:center;justify-content:center;flex:none;width:24px;height:24px}

/* Genel ana sayfa */
.pol-landing{position:relative;isolation:isolate;min-height:100vh;min-height:100svh;
  display:flex;flex-direction:column;background:#111;color:#fff}
.pol-landing__cover{position:absolute;inset:0;z-index:-2;width:100%;height:100%;object-fit:cover;object-position:center}
.pol-landing::before{content:'';position:absolute;inset:0;z-index:-1;background:rgba(0,0,0,.75);pointer-events:none}
.pol-landing__header{display:flex;justify-content:flex-end;padding:32px clamp(24px,5vw,96px);flex:none}
.pol-landing__login{min-width:144px}
.pol-landing__main{display:flex;align-items:center;flex:1;padding:64px clamp(24px,5vw,96px) 64px}
.pol-landing__hero{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:24px clamp(32px,5vw,96px);width:100%;align-items:start}
.pol-landing__identity{display:grid;grid-template-columns:minmax(0,1fr);align-items:center;gap:24px;
  grid-column:1;grid-row:2;width:max-content;max-width:100%}
.pol-landing__logo{grid-column:1;grid-row:1;width:170px;height:auto;filter:drop-shadow(0 0 2px rgba(255,255,255,.85)) drop-shadow(0 0 14px rgba(255,255,255,.45))}
.pol-landing__title{display:flex;flex-direction:column;margin:0;color:#fff;font-family:var(--pol-font-cond);
  font-size:clamp(64px,5.4vw,96px);font-weight:700;line-height:1;letter-spacing:-.015em;word-spacing:-.035em;
  text-shadow:0 2px 18px rgba(0,0,0,.3)}
.pol-landing__title span+span{margin-top:4px}
.pol-landing__title .pol-landing__subtitle{font-family:var(--pol-font);font-size:.52em;font-weight:500;letter-spacing:.01em}
.pol-landing__join{justify-self:start;margin-top:4px;height:48px;padding:0 22px;font-size:var(--pol-fs-16);max-width:100%}
.pol-landing__slogan{--pol-slogan-shift:32px;position:relative;grid-column:2;grid-row:2;min-width:0;width:calc(100% - var(--pol-slogan-shift));margin-top:52px;margin-left:var(--pol-slogan-shift);padding-left:36px;text-align:left}
.pol-landing__slogan-main{margin:0;width:max-content;max-width:100%;padding-right:.12em;font-family:var(--pol-font-cond);font-size:clamp(18px,1.85vw,32px);font-weight:700;font-style:italic;line-height:1.12;letter-spacing:-.015em;
  color:#ffbc75;background:linear-gradient(125deg,#fff8e9 0%,#ffbc75 42%,#ff7b17 100%);background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent;filter:drop-shadow(0 2px 8px rgba(0,0,0,.3))}
.pol-landing__slogan-line{display:block}
.pol-landing__quote{font-family:Georgia,serif;font-size:64px;font-weight:400;font-style:normal;line-height:1;letter-spacing:normal;color:#ffbc75;-webkit-text-fill-color:currentColor;text-shadow:0 2px 10px rgba(0,0,0,.3)}
.pol-landing__quote--open{position:absolute;top:-12px;left:0}
.pol-landing__quote--close{display:inline-block;margin-left:8px;font-size:clamp(44px,4vw,64px);line-height:0;vertical-align:-.3em}
.pol-landing__footer{display:flex;justify-content:center;flex:none;padding:16px 24px calc(24px + env(safe-area-inset-bottom,0px))}
.pol-landing__instagram{display:inline-flex;align-items:center;gap:10px;max-width:100%;padding:10px 18px;border:1px solid rgba(255,255,255,.2);border-radius:999px;background:rgba(0,0,0,.3);color:#fff;text-decoration:none;font-size:16px;font-weight:500;line-height:1.4;transition:background .2s,border-color .2s}
.pol-landing__instagram-icon{width:26px;height:26px;flex:none;color:#ff85ba;filter:drop-shadow(0 0 6px rgba(255,90,155,.4))}
.pol-landing__instagram:hover{background:rgba(127,36,93,.45);border-color:rgba(255,133,186,.7)}
.pol-landing__instagram:focus-visible{outline:2px solid #ff85ba;outline-offset:4px}
.pol-application{flex:1;display:flex;align-items:center;justify-content:center;padding:24px 24px 64px}
.pol-application__card{width:100%;max-width:680px;color:var(--pol-ink);box-shadow:var(--pol-sh-lg)}
.pol-application__note{height:auto;min-height:96px;resize:vertical}
.pol-application__actions{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.pol-onbasvuru-not{max-width:300px;white-space:pre-wrap;overflow-wrap:anywhere}
@media(min-width:1024px) and (min-height:621px){
  .pol-landing__slogan-main{font-size:clamp(22px,2.2vw,38px)}
  .pol-landing__quote{font-size:76px}
  .pol-landing__quote--close{font-size:clamp(52px,4.6vw,76px)}
}
@media(max-height:620px) and (min-width:621px){
  .pol-landing__header{padding-block:12px}
  .pol-landing__main{padding-top:8px;padding-bottom:12px}
  .pol-landing__identity{gap:12px}
  .pol-landing__hero{row-gap:12px}
  .pol-landing__logo{width:56px}
  .pol-landing__title{font-size:40px}
  .pol-landing__join{height:44px}
  .pol-landing__slogan-main{font-size:18px}
  .pol-landing__slogan{--pol-slogan-shift:12px;margin-top:36px;padding-left:28px}
  .pol-landing__quote{font-size:48px}
  .pol-landing__footer{padding-top:6px;padding-bottom:10px}
  .pol-landing__instagram{padding:6px 14px;font-size:14px}
}
@media(max-width:620px){
  .pol-landing__header{padding:24px 24px}
  .pol-landing__main{padding:48px 24px 40px}
  .pol-landing__hero{grid-template-columns:minmax(0,1fr);gap:22px}
  .pol-landing__identity{gap:22px;width:100%}
  .pol-landing__logo{width:100px}
  .pol-landing__title{font-size:clamp(40px,11vw,52px)}
  .pol-landing__title span+span{margin-top:4px}
  .pol-landing__title .pol-landing__subtitle{font-size:.62em}
  .pol-landing__join{height:44px;padding:0 16px;font-size:var(--pol-fs-14)}
  .pol-landing__slogan{--pol-slogan-shift:12px;grid-column:1;grid-row:3;margin-top:36px;padding-left:28px}
  .pol-landing__slogan-main{font-size:clamp(14px,4.1vw,18px)}
  .pol-landing__quote{font-size:48px}
  .pol-landing__slogan-line:last-child{position:relative;width:max-content;max-width:100%;padding-right:30px}
  .pol-landing__quote--close{position:absolute;right:0;bottom:-22px;margin-left:0;font-size:40px;line-height:1;vertical-align:baseline}
  .pol-landing__instagram{font-size:15px;padding:10px 16px}
}
@media(min-width:821px){
  .pol-app.is-side-mini .pol-side__feedback{padding:6px}
  .pol-app.is-side-mini .pol-side__feedback-action{justify-content:center;padding:8px 0}
  .pol-app.is-side-mini .pol-side__feedback-label{display:none}
}
@media(min-width:821px) and (max-width:1180px){
  .pol-side__feedback{padding:6px}
  .pol-side__feedback-action{justify-content:center;padding:8px 0}
  .pol-side__feedback-label{display:none}
}

/* ---------- Hakkımızda (15.10.2026) ----------
   Telif satırının yanındaki bağlantı (.pol-btn--link istisnası) + ortak pencere (Shared/_HakkimizdaModal).
   Footer AÇIK zeminlidir: bağlantı yazı renginde, üzerine gelince marka mavisi. Yalnız giriş ekranının koyu sol
   panelinde üzerine gelince beyaz. */
.pol-hakkimizda-ac{font-size:inherit;font-weight:600;color:inherit;text-decoration:underline;text-underline-offset:3px;
  vertical-align:baseline}
.pol-footer .pol-hakkimizda-ac:hover{color:var(--pol-blue-600)}
.pol-auth__foot .pol-hakkimizda-ac:hover{color:#fff}   /* giriş ekranının koyu sol paneli */
.pol-auth__foot--mobil .pol-hakkimizda-ac{color:var(--pol-blue-500)}
.pol-hakkimizda{color:var(--pol-n-700);font-size:var(--pol-fs-14);line-height:1.7}
.pol-hakkimizda__logo{display:block;height:64px;width:auto;margin:4px auto 12px}
.pol-hakkimizda__ad{margin:0;text-align:center;font-size:var(--pol-fs-20);font-weight:700;color:var(--pol-ink)}
.pol-hakkimizda p.pol-hakkimizda__slogan{margin:6px auto 20px;max-width:520px;text-align:center;font-style:italic;font-weight:600;
  color:var(--pol-blue-600)}
.pol-hakkimizda p{margin:0 0 12px}
.pol-hakkimizda__son{margin-bottom:0 !important;font-weight:700;color:var(--pol-ink)}
@media(max-width:620px){ .pol-hakkimizda__logo{height:52px} .pol-hakkimizda{font-size:var(--pol-fs-13)} }
/* Telefonda telif iki satıra bölünüp bağlantıyı sıkıştırıyordu: bağlantı telifin altına (mobil footer hizasında). */
@media(max-width:620px){
  .pol-footer__copy{flex-direction:column;gap:6px;text-align:center}
  .pol-footer__copy>span[aria-hidden]{display:none}
}
/* Toplam Borç (15.10.2026): borç varsa kırmızı, yoksa yeşil — veli ana sayfa Aidat kartı + Aidat ve Ödemeler. */
.pol-payment-card__total.pol-borc--var,.pol-odemesutun__borc.pol-borc--var{color:var(--pol-danger)}
.pol-payment-card__total.pol-borc--yok,.pol-odemesutun__borc.pol-borc--yok{color:var(--pol-success)}
/* Aidat Düzenle şeridi (15.10.2026): alan başlığı aynı zamanda "uygula" seçimi — etiket diliyle (.pol-field gap 6px). */
.pol-topluduzen__sec{margin-bottom:0;font-size:var(--pol-fs-13);font-weight:600;color:var(--pol-n-700);gap:8px;align-items:center}
.pol-topluduzen__sec input{margin-top:0}

/* Yönetim > Tanıtım Hesabı (28.10.2026): satırda etiket solda, değer sağda */
.pol-tanitim{display:grid;gap:8px}
.pol-tanitim .pol-kartsatir{display:flex;justify-content:space-between;gap:var(--pol-sp-3);flex-wrap:wrap}

/* Yönetim > Davranış Raporu (29.10.2026): satır etiketi solda, değer sağda (Tanıtım Hesabı dili);
   bulgu = rozet + başlık, ne görüldü, öneri (ok ile). Claude yorumu hafif başlık/madde dizgisi. */
.pol-davranis{display:grid;gap:8px}
.pol-davranis .pol-kartsatir{display:flex;justify-content:space-between;align-items:baseline;gap:var(--pol-sp-3);flex-wrap:wrap}
.pol-davranis .pol-kartsatir>b{text-align:right}
.pol-davranis__once{display:block;font-size:12px;font-weight:500;color:var(--pol-n-500)}
.pol-davranis__sayi{font-size:26px}
.pol-bulgular{display:grid;gap:10px}
.pol-bulgu{display:grid;gap:6px}
.pol-bulgu__ust{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.pol-bulgu__ust .pol-badge{display:inline-flex;align-items:center;gap:4px}
.pol-bulgu__ne{font-size:var(--pol-fs-14);color:var(--pol-n-700);line-height:1.5}
.pol-bulgu__oneri{display:flex;gap:6px;align-items:flex-start;font-size:var(--pol-fs-13);color:var(--pol-n-600);line-height:1.5}
.pol-bulgu__oneri .pol-i{flex:none;margin-top:2px;color:var(--pol-accent,var(--pol-blue-600))}
.pol-yorum{font-size:var(--pol-fs-14);line-height:1.6;color:var(--pol-n-700);overflow-wrap:break-word}
.pol-yorum h4{margin:14px 0 6px;font-size:var(--pol-fs-15,15px);color:var(--pol-ink,var(--pol-n-900))}
.pol-yorum h4:first-child{margin-top:0}
.pol-yorum p{margin:0 0 8px}
.pol-yorum__madde{position:relative;padding-left:16px;margin-bottom:6px}
.pol-yorum__madde::before{content:"";position:absolute;left:4px;top:.65em;width:5px;height:5px;border-radius:50%;background:var(--pol-n-400)}

/* ==========================================================================
   FRAMEWORK7 MOBİL (29.10.2026) — YALNIZ tanıtım kurulumunda (/demo, Tema__Mobil=f7), ÜÇ PANEL, YALNIZ ≤820px.
   <html data-mobil="f7"> olmadan hiçbir kural çalışmaz; canlı site ve masaüstü görünüm değişmez.
   Örnek: Framework7 Material teması (github.com/framework7io/framework7, MIT; kitchen-sink/core/?theme=md).
   Kütüphane kurulmadı; kalıplar projenin fontu (Barlow) ve marka renkleriyle yazıldı. Tonlar marka mavisinden
   color-mix ile türetilir → koyu temada (data-tema="koyu") tokenlarla kendiliğinden kararır.
   Bileşenler: üst uygulama çubuğu · çerçeveli inset liste kartları · tonal simge kutusu · alttan açılan sayfa +
   tutamak · çekmece menüde hap seçim · alt sekme çubuğu (Shared/_MobilSekmeler). Düğmeler projenin kendi dili.
   ========================================================================== */
.pol-mtab{display:none}
@media(max-width:820px){
  html[data-mobil="f7"]{
    --f7-yuzey:color-mix(in srgb,var(--pol-blue-500) 4%,var(--pol-n-0));          /* surface */
    --f7-kap:color-mix(in srgb,var(--pol-blue-500) 9%,var(--pol-n-0));            /* surface container */
    --f7-ikincil:color-mix(in srgb,var(--pol-blue-500) 16%,var(--pol-n-0));       /* secondary container */
    --f7-ikincil-yazi:color-mix(in srgb,var(--pol-blue-500) 75%,var(--pol-ink));  /* on secondary container */
  }
  html[data-mobil="f7"][data-tema="koyu"]{
    --f7-yuzey:var(--pol-n-100);
    --f7-kap:color-mix(in srgb,var(--pol-blue-500) 10%,var(--pol-n-0));
    --f7-ikincil:color-mix(in srgb,var(--pol-blue-500) 30%,var(--pol-n-0));
    --f7-ikincil-yazi:var(--pol-blue-700);
  }
  html[data-mobil="f7"] body,
  html[data-mobil="f7"] .pol-shell,
  html[data-mobil="f7"][data-tema="koyu"] .pol-shell{background:var(--f7-yuzey);padding:0}
  html[data-mobil="f7"] .pol-footer{display:none}

  /* ---- Üst uygulama çubuğu (F7 md navbar: 64px, başlık solda 22px, simgeler çerçevesiz) ---- */
  html[data-mobil="f7"] .pol-app--inner .pol-topbar,
  html[data-mobil="f7"][data-tema="koyu"] .pol-app--inner .pol-topbar{position:sticky;top:0;z-index:70;
    min-height:64px;padding:env(safe-area-inset-top) 8px 0;border:0;border-radius:0;box-shadow:none;
    background:var(--f7-yuzey);backdrop-filter:none}
  html[data-mobil="f7"] .pol-topbar__page b{font-size:22px;font-weight:600;letter-spacing:-.01em}
  html[data-mobil="f7"] .pol-topbar__page span{display:none}
  html[data-mobil="f7"] .pol-app--inner .pol-topbar .pol-iconbtn{width:48px;height:48px;border:0;border-radius:50%;
    background:transparent;color:var(--pol-ink)}
  html[data-mobil="f7"] .pol-app--inner .pol-topbar .pol-iconbtn:active{background:var(--f7-ikincil)}
  html[data-mobil="f7"] .pol-app--inner .pol-athlete__btn{width:48px;min-height:48px;border:0;border-radius:50%;
    background:transparent;box-shadow:none;place-items:center}
  html[data-mobil="f7"] .pol-app--inner .pol-athlete__meta,
  html[data-mobil="f7"] .pol-app--inner .pol-athlete__chevron{display:none}
  html[data-mobil="f7"] .pol-app--inner .pol-athlete__ico{display:block;color:var(--pol-ink)}
  /* Ana sayfa sekme çubuğunda — üst çubukta ikinci kez durmaz. */
  html[data-mobil="f7"] .pol-anasayfa-mobil{display:none}
  html[data-mobil="f7"] .pol-app--inner .pol-main{padding:8px 12px calc(100px + env(safe-area-inset-bottom));
    background:transparent;border:0}

  /* ---- Kartlar = inset liste grupları (F7 md: 16px köşe, düz yüzey). ÇERÇEVE KALIR — kullanıcı: "çerçevesiz
          karışık ve okunması zor" (29.10.2026). ---- */
  html[data-mobil="f7"] .pol-card,html[data-mobil="f7"] .pol-karsilama{border:var(--pol-line-border);box-shadow:none;border-radius:16px}
  html[data-mobil="f7"] .pol-card{background:var(--pol-n-0)}
  html[data-mobil="f7"] .pol-card--hover:hover{transform:none;box-shadow:none}
  html[data-mobil="f7"] .pol-card--hover:hover .pol-card__ico{transform:none}
  html[data-mobil="f7"] .pol-card__foot{background:transparent;border-top:1px solid var(--pol-line-inner)}
  /* Tonal simge kutusu (F7 md list media: yuvarlak, ikincil kap rengi). */
  html[data-mobil="f7"] .pol-card__ico,html[data-mobil="f7"] .pol-card--hover:hover .pol-card__ico{width:40px;height:40px;border-radius:50%;
    background:color-mix(in srgb,var(--pol-accent,var(--pol-blue-500)) 16%,var(--pol-n-0));color:var(--pol-accent,var(--pol-blue-500))}
  html[data-mobil="f7"] .pol-card__title,html[data-mobil="f7"] .pol-card__t b{font-size:17px;font-weight:600}
  html[data-mobil="f7"] .pol-label{letter-spacing:.02em}

  /* Düğmeler ve çipler DEĞİŞMEZ: projenin hap + alt dudak dili (Değişmez Kural 8) — kullanıcı isteği (29.10.2026). */

  /* ---- Form alanları (F7 md outline input: 12px köşe, 48px) ---- */
  html[data-mobil="f7"] .pol-input,html[data-mobil="f7"] .pol-select,html[data-mobil="f7"] .pol-textarea{
    min-height:48px;border-radius:12px;background:var(--pol-n-0)}

  /* ---- Tablolar → inset liste satırları (F7 md list: 16px köşe, iç ayırıcı; çerçeve kalır) ---- */
  html[data-mobil="f7"] .pol-table--responsive tbody tr{border:var(--pol-line-border);border-radius:16px;background:var(--pol-n-0)}
  html[data-mobil="f7"] .pol-table--responsive tbody td{border-bottom:1px solid var(--pol-line-inner)}

  /* ---- Pencere = alttan sayfa (F7 md sheet: 28px üst köşe + 32×4 tutamak) ---- */
  html[data-mobil="f7"] .pol-modal__box{border-radius:28px 28px 0 0;box-shadow:none;background:var(--pol-n-0)}
  html[data-mobil="f7"] .pol-modal__box::before{content:'';display:block;width:32px;height:4px;margin:12px auto 0;
    border-radius:2px;background:var(--pol-n-400)}
  html[data-mobil="f7"] .pol-modal__head{border-bottom:0}
  html[data-mobil="f7"] .pol-modal__foot{border-top:0;background:transparent}

  /* ---- Çekmece menü (F7 md panel: 56px satır, seçili öğe hap tonal dolgu) ---- */
  html[data-mobil="f7"] .pol-side{background:var(--f7-kap);border-radius:0 16px 16px 0}
  html[data-mobil="f7"] .pol-side .pol-navitem{min-height:52px;border-radius:999px;padding:8px 16px}
  html[data-mobil="f7"] .pol-side .pol-navitem.is-active{background:var(--f7-ikincil);color:var(--f7-ikincil-yazi)}
  html[data-mobil="f7"] .pol-side .pol-navitem.is-active::before{display:none}
  html[data-mobil="f7"] .pol-side:not(.is-open){box-shadow:none}

  /* ---- Alt sekme çubuğu (F7 md "Tabbar With Icons" / MD3 navigation bar: 80px, etkin simgenin arkasında
          64×32 hap gösterge, etiket 12px) ---- */
  html[data-mobil="f7"] .pol-mtab{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));position:fixed;z-index:75;
    left:0;right:0;bottom:0;height:calc(80px + env(safe-area-inset-bottom));padding:12px 4px env(safe-area-inset-bottom);
    background:var(--f7-kap);border-top:0}
  html[data-mobil="f7"] .pol-mtab__s{display:flex;flex-direction:column;align-items:center;gap:4px;min-width:0;
    color:var(--pol-n-600);text-decoration:none}
  html[data-mobil="f7"] .pol-mtab__s:hover{text-decoration:none}
  html[data-mobil="f7"] .pol-mtab__i{position:relative;display:grid;place-items:center;width:64px;height:32px;border-radius:16px;
    transition:background-color .2s ease}
  html[data-mobil="f7"] .pol-mtab__i .pol-i{width:24px;height:24px}
  html[data-mobil="f7"] .pol-mtab__s.is-active .pol-mtab__i{background:var(--f7-ikincil);color:var(--f7-ikincil-yazi)}
  html[data-mobil="f7"] .pol-mtab__t{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
    font-size:12px;line-height:16px;font-weight:600}
  html[data-mobil="f7"] .pol-mtab__s.is-active .pol-mtab__t{color:var(--pol-ink)}
  html[data-mobil="f7"] .pol-mtab__rozet{position:absolute;top:2px;right:16px;width:8px;height:8px;border-radius:50%;
    background:var(--pol-red-500)}
}

/* Grup yoklaması: telefonda da aynı matris, sabit ad sütunu ve okunaklı seanslar. */
.pol-grupyok__kaydir{display:none}
.pol-matris--grup{min-width:0;max-width:100%}
.pol-matris--grup .pol-matris__kap{max-width:100%;overscroll-behavior-x:contain}
.pol-matris--grup tbody .pol-matris__no,.pol-matris--grup tbody .pol-matris__isim{background:var(--pol-n-0,#fff)}
@media(max-width:820px){
 .pol-grupyok__kaydir{display:block;font-size:13px;padding:8px 0;color:var(--pol-n-600)}
 .pol-matris--grup .pol-matris__t{display:table;min-width:var(--grup-mobil-genislik)!important;font-size:14px}
 .pol-matris--grup .pol-matris__t th{font-size:13px}
 .pol-matris--grup .pol-matris__t th,.pol-matris--grup .pol-matris__t td{padding-top:10px;padding-bottom:10px}
 .pol-matris--grup .pol-matris__c-isim{width:150px}
 .pol-matris--grup .pol-matris__kap tbody .pol-matris__isim{white-space:normal;overflow-wrap:anywhere;font-size:14px}
 .pol-matris--grup .pol-matris__isim{box-shadow:3px 0 5px #001d4014}
}
