/* =====================================================================
   smmcheap tema — style.css
   bootstrap.css (resmi BS 4.6.2 dist) YUKLENDIKTEN SONRA yuklenir.
   Katmanlar (ROADMAP §1.3):
     1  Tokenlar + koyu tema            -> asagida "TOKENLAR"
     2  Temel (Barlow / IBM Plex Mono)  -> "TEMEL"
     3  BS4 ustune yazma                -> hemen asagida
     4  9 tanimsiz BS3 sinifi           -> "9 SINIF" blogu
     5  #fields jenerik + 5 varyant + Select2 tasma  -> "#fields"
     6  Bilesenler (btn card pill chip tag stat sx rows tabs code tmsg)
     7  Kabuk (side top main drawer)
   Katman 8 (pazarlama), 9 (sayfaya ozgu), 10 (RTL) -> Faz 3+ paketleri.
   Degerler mockup/panel.html + mockup/landing.html'den alindi.
   ===================================================================== */

/* =====================================================================
   KATMAN 3 — BOOTSTRAP 4.6.2 USTUNE YAZMA
   Panel JS'i bu BS4 siniflarini uretiyor/bekliyor: gorsel katman burada.
   ===================================================================== */
.form-group { margin-bottom: 17px; }

.form-control {
  min-height: 48px; height: auto; padding: 0 14px;
  font-size: 16px; line-height: 1.5;
  color: var(--fg); background-color: var(--paper);
  border: 1px solid var(--line); border-radius: 11px;
  transition: border-color .14s, background-color .14s;
}
.form-control:focus {
  color: var(--fg); background-color: var(--surface);
  border-color: var(--accent); box-shadow: none; outline: none;
}
textarea.form-control { min-height: 96px; padding: 12px 14px; }
select.form-control {
  appearance: none;
  /* Select2 yuklenmeden once de secili uzun ad tasmasin (Select2 widget'i
     icin tam duzeltme 5. katmanda). */
  text-overflow: ellipsis; white-space: nowrap; overflow: hidden;
}

.alert {
  border: 1px solid var(--line); border-radius: 12px;
  padding: 13px 15px; font-size: 13.5px; line-height: 1.45;
}
.alert-success { background: var(--ok-soft);   border-color: var(--ok);   color: var(--ok); }
.alert-danger  { background: var(--crit-soft); border-color: var(--crit); color: var(--crit); }
.alert-warning { background: var(--warn-soft); border-color: var(--warn); color: var(--warn); }
.alert-info    { background: var(--info-soft); border-color: var(--info); color: var(--info); }

.dropdown-menu {
  background: var(--surface); border: 1px solid var(--line);
  border-radius: 12px; box-shadow: var(--shadow-lift);
  padding: 6px; font-size: 14px; color: var(--fg);
}
.dropdown-menu .dropdown-item,
.dropdown-menu > li > a {
  display: block; border-radius: 8px; padding: 8px 12px;
  color: var(--fg-2); text-decoration: none;
}
.dropdown-menu .dropdown-item:hover,
.dropdown-menu .dropdown-item:focus,
.dropdown-menu > li > a:hover,
.dropdown-menu > li.active > a {
  background: var(--surface-2); color: var(--fg);
}
.dropdown-max-height { max-height: 320px; overflow-y: auto; }

.modal-content {
  background: var(--surface); border: 1px solid var(--line);
  border-radius: 16px; box-shadow: var(--shadow-lift); color: var(--fg);
}
.modal-header, .modal-footer { border-color: var(--line-soft); }
.modal-backdrop.show { opacity: .5; }

.navbar { padding: 0; }

.pagination { display: flex; flex-wrap: wrap; gap: 5px; padding-left: 0; list-style: none; }
.page-link {
  min-width: 38px; min-height: 38px;
  display: inline-flex; align-items: center; justify-content: center;
  border: 1px solid var(--line); border-radius: 9px;
  background: var(--surface); color: var(--fg-2);
  font-size: 13.5px; font-weight: 600;
}
.page-link:hover { border-color: var(--accent); color: var(--accent); }
.page-item.active .page-link { background: var(--accent); border-color: var(--accent); color: var(--accent-fg); }
.page-item.disabled .page-link { color: var(--fg-3); background: var(--surface-2); pointer-events: none; }

/* BS4'un .btn-primary'si (mavi) -> tema aksani. .btn-xs BS3'te vardi,
   BS4'te yok — orders.twig refill/cancel butonlari kullaniyor. */
.btn-primary { background-color: var(--accent); border-color: var(--accent); color: var(--accent-fg); }
.btn-primary:hover, .btn-primary:focus { background-color: var(--accent); border-color: var(--accent); filter: brightness(1.08); }
.btn-xs { min-height: 30px; padding: 0 10px; font-size: 12px; border-radius: 8px; }
.btn.disabled, .btn:disabled { opacity: .55; pointer-events: none; }

/* =====================================================================
   KATMAN 3 EKI — BOOTSTRAP 3-JS UYUM KATMANI  (P11, olculdu 11 Eylul 2026)
   Panel global JS = jQuery 1.12.4 + Bootstrap 3.3.7 (Popper YOK). Tema CSS'i
   BS4.6.2 kaliyor; BS3-JS'in ekledigi durum siniflari (.open / .in) BS4
   CSS'inde karsiliksiz -> dropdown/collapse/modal/tooltip SESSIZCE acilmaz.
   Asagidaki kurallar o bosugu kapatir. data-toggle BS3 ve BS4'te ayni.
   ===================================================================== */
.open > .dropdown-menu,
.dropdown.open > .dropdown-menu,
.btn-group.open > .dropdown-menu { display: block; }

.collapse.in { display: block; }
tr.collapse.in { display: table-row; }
tbody.collapse.in { display: table-row-group; }
.navbar-collapse.in { display: block; overflow: visible; }

.fade.in { opacity: 1; }
.modal.fade .modal-dialog { transition: transform .3s ease-out; transform: translate(0, -25%); }
.modal.in .modal-dialog { transform: translate(0, 0); }
.modal-backdrop.in { opacity: .5; }

.tooltip.in { opacity: .95; }
.tooltip.top, .tooltip.bottom { padding: 5px 0; }
.tooltip.left, .tooltip.right { padding: 0 5px; }
.popover.in { display: block; }
.alert.in { opacity: 1; }

/* Erisilebilirlik — atlama baglantisi. CSS yoktu -> her sayfanin tepesinde
   gorunuyordu (P11 madde 3). Gorsel gizli, klavye odaginda belirir. */
.skip-link {
  position: absolute; left: -9999px; top: 0; z-index: 100;
  padding: 10px 16px; border-radius: 0 0 10px 0;
  background: var(--accent); color: var(--accent-fg);
  font-size: 13.5px; font-weight: 700;
}
.skip-link:focus { left: 0; }

/* Referans sablonlarin bastigi yardimci sinif — tanimsizdi. */
.nowrap { white-space: nowrap; }
/* BS3 responsive gizleme yardimcilari (services aciklama sutunu bunlari
   kullaniyor) — BS4'te yok. Kart kirilma noktamizla ayni. */
@media (max-width: 820px) { .hidden-xs, .hidden-sm { display: none !important; } }

/* ============ TOKENLAR — landing.html ile ayni sistem ============ */
  :root {
    --paper:        #F5F5F9;
    --surface:      #FFFFFF;
    --surface-2:    #ECECF3;
    --line:         #E3E3E7;
    --line-soft:    #EEEEEE;
    --fg:           #242B45;
    --fg-2:         #555D7A;
    --fg-3:         #838AA3;
    --accent:       #7867CD;
    --accent-fg:    #FFFFFF;
    --accent-soft:  #EEEBF9;
    --ok:           #2E9E62;
    --ok-soft:      #E6F6ED;
    --warn:         #A8681B;
    --warn-soft:    #F8EEDD;
    --crit:         #B4342B;
    --crit-soft:    #F8E6E4;
    --info:         #2A5BD7;
    --info-soft:    #E6ECFC;
    --ig:           #C9257F;
    --tt:           #0B7C86;
    --yt:           #C4302B;
    --tg:           #1F7FBF;
    --tw:           #1A1A1A;
    /* P13-D: servis etiket motoru — her etiket turu ayri ton (Instant/Non-drop
       carpisan yesili ayirmak icin). Var olan ok/warn/info/crit/mute zaten
       non-drop/no-refill/refill/mute'a atanmis; buradakiler yeni turler icin. */
    --tag-teal:      #0E7C74;
    --tag-teal-soft: #E1F5F3;
    --tag-rose:      #A6316F;
    --tag-rose-soft: #FDECF3;
    --tag-violet:    #6E3FB0;
    --tag-violet-soft:#F1E9FB;
    --tag-lime:      #5B7A0F;
    --tag-lime-soft: #F1F8DE;
    --tag-slate:     #47526B;
    --tag-slate-soft:#E9ECF3;
    /* P36-A: landing etiket sozlugu (#services + .shot) icin kontrast-duzeltmeli
       metin renkleri — panel genelindeki --tag-teal/--ok/--warn'a DOKUNMADAN (o
       tonlar hala baska panel sayfalarinda kullaniliyor), yalniz .landing icinde
       WCAG >=4.5:1 icin biraz koyultulmus versiyon. */
    --tag-instant-fg:  #0d7770;
    --tag-nondrop-fg:  #247a4c;
    --tag-norefill-fg: #965d18;
    /* P13.1-E1: platform filtresi nokta renkleri (services). --ig/--tt/--yt/
       --tg/--tw zaten var (Instagram/TikTok/YouTube/Telegram/Twitter-X). */
    --fb:  #1877F2;
    --sp:  #1DB954;
    --dc:  #5865F2;
    --li:  #0A66C2;
    --th:  #262626;
    --kk:  #53C41A;
    --tv:  #9146FF;
    --shadow:       0 1px 2px rgba(36,43,69,.05), 0 8px 24px -12px rgba(36,43,69,.16);
    --shadow-lift:  0 2px 4px rgba(36,43,69,.06), 0 18px 40px -16px rgba(36,43,69,.24);
    --sidebar:      #FFFFFF;
    --nav-a:        #242B45;
    --nav-b:        #7867CD;
    --nav-c:        #353E5E;
    --accent-2:     #9A8BE4;
    --lift:         0 2px 4px rgba(36,43,69,.06), 0 20px 44px -18px rgba(36,43,69,.26);
    --mesh-1:       rgba(120,103,205,.16);
    --mesh-2:       rgba(42,91,215,.10);
    --mesh-3:       rgba(154,139,228,.14);
    /* Kabuk ust bar yuksekligi + tablo thead yuksekligi. Sticky ofsetleri
       bu token'lardan hesaplanir; ust bar degisirse tablolar kaymaz.
       Olculdu (1440px, mockup/panel.html).
       P21 — Goktug: masaustunde .top, icerigi (.top__in, ~66.5px) etrafinda
       fazla bosluk birakiyordu (86px), ozellikle altta. 76px'e indirildi
       (~10px), sticky ofsetler bu tek token'dan otomatik ayarlanir.
       P22: hala "uzun" bildirildi — kok neden aslinda .top'un display:block
       olup icerigi ortalamamasiydi (asagida .top{display:flex;align-items:
       center} eklendi); bu vesileyle --top-h de icerige (.top__in ~66.5px)
       daha yakin 70px'e cekildi. */
    --top-h:        70px;
    --thead-h:      34px;
  }

  @media (prefers-color-scheme: dark) {
    :root:not([data-theme="light"]) {
      --paper:        #0E1122;
      --surface:      #171C31;
      --surface-2:    #202741;
      --line:         #333C5C;
      --line-soft:    #262E4A;
      --fg:           #EDEFF6;
      --fg-2:         #A6ADC4;
      --fg-3:         #7B8299;
      --accent:       #9B8CE8;
      --accent-fg:    #14152B;
      --accent-soft:  #262246;
      --ok:           #5BCC86;
      --ok-soft:      #14301F;
      --warn:         #E0A94F;
      --warn-soft:    #2A2110;
      --crit:         #FF7A6E;
      --crit-soft:    #2B1310;
      --info:         #6C93FF;
      --info-soft:    #16203A;
      --ig:           #F26BB0;
      --tt:           #3ED0DA;
      --yt:           #FF6B63;
      --tg:           #63B8F0;
      --tw:           #E8E8E8;
      --tag-teal:      #4FD9CB; --tag-teal-soft: #123430;
      --tag-rose:      #F6A8CB; --tag-rose-soft: #3A1B2C;
      --tag-violet:    #C7ABF2; --tag-violet-soft:#2A2049;
      --tag-lime:      #C4E06B; --tag-lime-soft: #23301A;
      --tag-slate:     #AEB8D0; --tag-slate-soft:#242C46;
      --tag-instant-fg: #4FD9CB; --tag-nondrop-fg: #5BCC86; --tag-norefill-fg: #E0A94F;
      --fb: #4E9AFF; --sp: #34D671; --dc: #8B93FF; --li: #4DA3FF; --th: #EAEAEA; --kk: #6FE83B; --tv: #B18CFF;
      --shadow:       0 1px 2px rgba(0,0,0,.5), 0 10px 28px -14px rgba(0,0,0,.7);
      --shadow-lift:  0 2px 6px rgba(0,0,0,.55), 0 22px 48px -18px rgba(0,0,0,.8);
      --sidebar:      #131829;
      --nav-a:        #12162A;
      --nav-b:        #4B3E93;
      --nav-c:        #1B2138;
      --accent-2:     #7867CD;
      --lift:         0 2px 6px rgba(0,0,0,.55), 0 24px 52px -20px rgba(0,0,0,.8);
      --mesh-1:       rgba(155,140,232,.16);
      --mesh-2:       rgba(108,147,255,.10);
      --mesh-3:       rgba(75,62,147,.24);
    }
  }

  :root[data-theme="dark"] {
    --paper:        #0E1122;
    --surface:      #171C31;
    --surface-2:    #202741;
    --line:         #333C5C;
    --line-soft:    #262E4A;
    --fg:           #EDEFF6;
    --fg-2:         #A6ADC4;
    --fg-3:         #7B8299;
    --accent:       #9B8CE8;
    --accent-fg:    #14152B;
    --accent-soft:  #262246;
    --ok:           #5BCC86;
    --ok-soft:      #14301F;
    --warn:         #E0A94F;
    --warn-soft:    #2A2110;
    --crit:         #FF7A6E;
    --crit-soft:    #2B1310;
    --info:         #6C93FF;
    --info-soft:    #16203A;
    --ig:           #F26BB0;
    --tt:           #3ED0DA;
    --yt:           #FF6B63;
    --tg:           #63B8F0;
    --tw:           #E8E8E8;
    --tag-teal:      #4FD9CB; --tag-teal-soft: #123430;
    --tag-rose:      #F6A8CB; --tag-rose-soft: #3A1B2C;
    --tag-violet:    #C7ABF2; --tag-violet-soft:#2A2049;
    --tag-lime:      #C4E06B; --tag-lime-soft: #23301A;
    --tag-slate:     #AEB8D0; --tag-slate-soft:#242C46;
    --shadow:       0 1px 2px rgba(0,0,0,.5), 0 10px 28px -14px rgba(0,0,0,.7);
    --shadow-lift:  0 2px 6px rgba(0,0,0,.55), 0 22px 48px -18px rgba(0,0,0,.8);
    --sidebar:      #131829;
    --nav-a:        #12162A;
    --nav-b:        #4B3E93;
    --nav-c:        #1B2138;
    --accent-2:     #7867CD;
    --lift:         0 2px 6px rgba(0,0,0,.55), 0 24px 52px -20px rgba(0,0,0,.8);
    --mesh-1:       rgba(155,140,232,.16);
    --mesh-2:       rgba(108,147,255,.10);
    --mesh-3:       rgba(75,62,147,.24);
  }

  /* ============ TEMEL ============ */
  * { box-sizing: border-box; }
  html { -webkit-text-size-adjust: 100%; }
  body {
    margin: 0;
    background: var(--paper);
    color: var(--fg);
    font-family: Barlow, ui-sans-serif, system-ui, sans-serif;
    font-size: 15px;
    line-height: 1.5;
  }
  h1, h2, h3, h4 { margin: 0; letter-spacing: -.01em; text-wrap: balance; }
  a { color: inherit; text-decoration: none; }
  .mono { font-family: "IBM Plex Mono", ui-monospace, monospace; }
  .num  { font-variant-numeric: tabular-nums; }
  .lbl {
    font-family: "IBM Plex Mono", ui-monospace, monospace;
    font-size: 10.5px; font-weight: 500;
    text-transform: uppercase; letter-spacing: .11em;
    color: var(--fg-3);
  }
  :where(a, button, input, select, textarea, summary, [tabindex]):focus-visible {
    outline: 2px solid var(--accent); outline-offset: 2px; border-radius: 8px;
  }

  /* ============ KABUK ============ */
  .app { display: flex; min-height: 100vh; }

  .side {
    width: 244px; flex: 0 0 244px;
    background: var(--sidebar);
    border-right: 1px solid var(--line);
    display: flex; flex-direction: column;
    position: sticky; top: 0; height: 100vh;
  }
  .side__brand {
    display: flex; align-items: center; gap: 10px;
    padding: 18px 18px 14px;
  }
  /* P14-G: .side__mark { display:grid } BLOK seviyesindeydi (inline-grid degil) —
     .side__brandlink (<a>) icinde kendi satirina geciyor, .side__name altta
     kaliyordu. .side__brandlink'i flex yapmak cocuklarin kendi display'inden
     bagimsiz olarak tek satirda hizalanmasini garantiler. */
  .side__brandlink { display: flex; align-items: center; gap: 10px; min-width: 0; }
  .side__brandlink img { max-height: 30px; width: auto; }
  .side__name { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .side__mark {
    width: 30px; height: 30px; border-radius: 9px;
    display: grid; place-items: center;
    background: linear-gradient(135deg, var(--nav-a), var(--nav-b));
    color: #fff; font-weight: 700; font-size: 14px;
    font-family: "IBM Plex Mono", monospace;
  }
  .side__name { font-size: 17px; font-weight: 800; }

  .side__nav { flex: 1 1 auto; overflow-y: auto; padding: 4px 10px 10px; }
  /* P13-G: yatay bosluk .side__item ile (10px) hizali — 8px'te 2px kaymasi vardi. */
  /* P14-G: .lbl <p>'nin tarayici varsayilan margin'i (1em ust+alt) burada
     SIFIRLANIR — bosluk tumuyle padding'den geliyor, ongorulebilir. */
  .side__group { margin: 0; padding: 14px 10px 6px; }
  .side__item {
    display: flex; align-items: center; gap: 11px;
    min-height: 44px; padding: 10px 10px;
    border-radius: 10px;
    font-size: 14.5px; font-weight: 600; color: var(--fg-2);
    transition: background .14s, color .14s;
  }
  .side__item:hover { background: var(--surface-2); color: var(--fg); }
  .side__item.is-active { background: var(--accent-soft); color: var(--accent); }
  .side__item svg { width: 17px; height: 17px; flex: 0 0 17px; }
  .side__count {
    margin-left: auto; min-width: 20px; padding: 1px 6px;
    border-radius: 999px; background: var(--crit); color: #fff;
    font-size: 11px; font-weight: 700; text-align: center;
  }
  .side__soon {
    margin-left: auto; font-size: 9.5px; font-weight: 600;
    letter-spacing: .06em; text-transform: uppercase;
    color: var(--fg-3); border: 1px solid var(--line);
    border-radius: 5px; padding: 1px 5px;
  }

  .side__balance { padding: 12px; border-top: 1px solid var(--line); }
  .bal {
    border-radius: 12px; padding: 14px;
    background: linear-gradient(140deg, var(--nav-a), var(--nav-b));
    color: #fff;
  }
  .bal__lbl { font-size: 10.5px; letter-spacing: .11em; text-transform: uppercase; opacity: .75; font-family: "IBM Plex Mono", monospace; }
  .bal__val { font-size: 26px; font-weight: 800; margin-top: 2px; font-variant-numeric: tabular-nums; }
  .bal__btn {
    display: flex; align-items: center; justify-content: center; gap: 6px;
    margin-top: 12px; min-height: 40px; border-radius: 9px;
    background: rgba(255,255,255,.16); border: 1px solid rgba(255,255,255,.24);
    font-size: 13.5px; font-weight: 700; color: #fff;
    transition: background .14s;
  }
  .bal__btn:hover { background: rgba(255,255,255,.26); }

  .main { flex: 1; min-width: 0; display: flex; flex-direction: column; }

  .top {
    position: sticky; top: 0; z-index: 30;
    min-height: var(--top-h); /* sticky tablo ofsetleri bu degere dayaniyor */
    display: flex; align-items: center; /* P22: .top__in (~66.5px) .top'un (76px)
      TEPESINE yasliydi (display:block, ortalanmiyordu), butun bosluk ALTA
      birikip "cok uzun" gorunuyordu. flex+center ile boşluk esit dagiliyor. */
    background: color-mix(in srgb, var(--paper) 86%, transparent);
    backdrop-filter: blur(10px);
    border-bottom: 1px solid var(--line);
  }
  .top__in {
    display: flex; align-items: center; gap: 14px; width: 100%;
    /* P23: .top{display:flex} eklenince (P22) TEK cocuk olan .top__in artik
       flex item — flex-grow:0 varsayilaniyla icerigine gore SIKISTI (548px),
       .top__act{margin-left:auto} kendini bu KUCULMUS kutunun sonuna itti,
       tum sag kume (dil/hesap/logout) ekranin ortasina/soluna dustu, sag
       tarafta bos alan kaldi. width:100% ile .top__in tekrar tam genislik. */
    padding: 12px 22px;
  }
  .top__burger {
    display: none; width: 40px; height: 40px; border-radius: 9px;
    border: 1px solid var(--line); background: var(--surface);
    align-items: center; justify-content: center; cursor: pointer;
  }
  .top__ttl { font-size: 19px; font-weight: 700; }
  .top__sub { font-size: 12.5px; color: var(--fg-3); margin-top: 1px; margin-bottom: 0; } /* P20: <p> varsayılan margin-bottom (panel global CSS) .top__titles'ı 16px şişiriyordu -> burger'a göre 3-5px yüksekte görünüyordu */
  .top__act { margin-left: auto; display: flex; align-items: center; gap: 8px; }
  .ibtn {
    min-width: 40px; min-height: 40px; padding: 0 11px;
    border-radius: 10px; border: 1px solid var(--line);
    background: var(--surface); color: var(--fg-2);
    display: inline-flex; align-items: center; justify-content: center; gap: 7px;
    font-size: 13px; font-weight: 600; font-family: inherit; cursor: pointer;
    transition: border-color .14s, color .14s;
  }
  .ibtn:hover { border-color: var(--accent); color: var(--accent); }
  .ibtn svg { width: 16px; height: 16px; }
  .top__bal {
    border-radius: 10px; padding: 5px 12px;
    background: var(--accent-soft); color: var(--accent);
    font-weight: 700; font-size: 15.5px; font-variant-numeric: tabular-nums; /* P13-H: buyutuldu */
    min-height: 40px; display: inline-flex; align-items: center;
  }
  /* P13-H: BS4 .badge varsayilani font-size:75% -> para birimi dropdown
     dugmesindeki bakiye cok kucuk kaliyordu (ust bardaki .ibtn 13px'in
     %75'i ~10px). Sag ust bakiye buyusun. */
  .top__cur .badge {
    font-size: 15.5px; font-weight: 700; color: inherit;
    font-variant-numeric: tabular-nums; display: inline;
  }

  .page { padding: 22px; max-width: 1320px; width: 100%; }
  .page[hidden] { display: none !important; }
  /* P13-A: tablo sayfalari (services/orders/refill/refunds/affiliates/
     tickets/drip-feed/subscriptions/updates) icerik alaninin tam genisligini
     kullanir — 1320px tavani forma ozgu sayfalar icin (neworder/addfunds). */
  .page--wide { max-width: none; }

  /* ============ BILESENLER ============ */
  .card {
    background: var(--surface); border: 1px solid var(--line);
    border-radius: 14px; box-shadow: var(--shadow);
  }
  .card__head {
    display: flex; align-items: center; gap: 10px;
    padding: 15px 20px; border-bottom: 1px solid var(--line-soft);
  }
  .card__ttl { font-size: 15.5px; font-weight: 700; }
  .card__body { padding: 20px; }

  .grid2 { display: grid; gap: 18px; grid-template-columns: minmax(0,1.45fr) minmax(0,1fr); align-items: start; }
  .grid-stat { display: grid; gap: 14px; grid-template-columns: repeat(4, minmax(0,1fr)); }

  .field { display: flex; flex-direction: column; gap: 7px; }
  .field + .field { margin-top: 17px; }
  .field__lbl { font-size: 12.5px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; color: var(--fg-2); }
  .inp, .sel {
    width: 100%; min-height: 48px; padding: 0 14px;
    font: inherit; font-size: 16px;
    color: var(--fg); background: var(--paper);
    border: 1px solid var(--line); border-radius: 11px;
    transition: border-color .14s, background .14s;
  }
  textarea.inp { padding: 12px 14px; min-height: 96px; resize: vertical; line-height: 1.5; }
  .inp:focus, .sel:focus { border-color: var(--accent); background: var(--surface); outline: none; }
  .inp[readonly] { background: var(--surface-2); color: var(--fg-2); }

  /* SELECT TASMASI COZUMU
     Canlida 375px viewport'ta span.select2-selection__text 560px'e cikiyor ve
     secili servis adi okunmuyordu. Hem native select hem Select2 icin: */
  .sel { text-overflow: ellipsis; white-space: nowrap; overflow: hidden; }
  .field, .field > * { min-width: 0; }
  /* SADECE kapali/satir-ici secim kabi kesilir. ACIK dropdown kabi
     (body'ye eklenen .select2-container--open) HARIC — yoksa dropdown
     kirpilir (P12-A). */
  .select2-container:not(.select2-container--open),
  .select2-selection,
  .select2-selection__rendered,
  .select2-selection__text {
    max-width: 100% !important;
    min-width: 0 !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
    white-space: nowrap !important;
  }
  /* P28 — Goktug: servis listesinde ID'den sonra ad hep yeni "satira" atlayip
     kesiliyordu (aslinda tek uzun nowrap kutusu gorunmez tasiyordu). Kok neden:
     yukaridaki kural yorumunda "SADECE kapali kutu" yazsa da selector'un 3'u
     (.select2-selection / __rendered / __text) ACIK dropdown'un icindeki
     ayni class'lari da kapsiyordu — yorum ile kod hep tutarsizdi. Servis
     rozeti (P26, float:left) ile birlikte bu, adin rozetin yanina degil
     GORUNMEZ tek satira gitmesine yol aciyordu. Once TUM sonuc listesi
     icin normal akisa geri donduruluyor; kategori (P24/P25) kendi
     nowrap+ellipsis'ini asagida yeniden talep ediyor. */
  .select2-results__option .select2-selection__text {
    white-space: normal !important; overflow: visible !important; text-overflow: clip !important; max-width: none !important;
  }
  /* Tam ad, kesilen basligin altinda ikinci satirda gosteriliyor */
  .sel-full { display:block; margin-top:6px; font-family:"IBM Plex Mono",monospace;
    font-size:11.5px; line-height:1.45; color:var(--fg-3); word-break:break-word; }
  .hint { font-size: 12.5px; color: var(--fg-3); }

  .btn {
    display: inline-flex; align-items: center; justify-content: center; gap: 8px;
    min-height: 48px; padding: 0 20px; border: 0; border-radius: 11px;
    background: var(--accent); color: var(--accent-fg);
    font: inherit; font-size: 15px; font-weight: 700; cursor: pointer;
    transition: filter .14s;
  }
  .btn:hover { filter: brightness(1.08); }
  .btn--block { width: 100%; }
  .btn--ghost { background: var(--surface); color: var(--fg); border: 1px solid var(--line); }
  .btn--sm { min-height: 38px; padding: 0 13px; font-size: 13.5px; border-radius: 9px; }

  .pill {
    display: inline-flex; align-items: center; gap: 5px;
    padding: 3px 9px; border-radius: 999px;
    font-size: 11.5px; font-weight: 700; letter-spacing: .02em;
    white-space: nowrap;
  }
  .pill--ok   { background: var(--ok-soft);   color: var(--ok); }
  .pill--warn { background: var(--warn-soft); color: var(--warn); }
  .pill--crit { background: var(--crit-soft); color: var(--crit); }
  .pill--info { background: var(--info-soft); color: var(--info); }
  .pill--mute { background: var(--surface-2); color: var(--fg-2); }
  .pill--own  { background: var(--accent); color: var(--accent-fg); }
  .pill__dot { width: 6px; height: 6px; border-radius: 999px; background: currentColor; }

  /* P13-D: servis etiket motoru — genisletilmis palet. Instant (teal) artik
     Non-Drop (yesil/--ok) ile karismiyor; her etiket turunun kendi tonu var. */
  .pill--tag-instant  { background: var(--tag-teal-soft);   color: var(--tag-teal); }
  .pill--tag-cancel   { background: var(--tag-rose-soft);   color: var(--tag-rose); }   /* CANCEL ANYTIME — acik pembe, kirmiziya kacmiyor */
  .pill--tag-lifetime { background: var(--tag-violet-soft); color: var(--tag-violet); }
  .pill--tag-fast     { background: var(--tag-lime-soft);   color: var(--tag-lime); }
  .pill--tag-slow     { background: var(--tag-slate-soft);  color: var(--tag-slate); }

  .idchip {
    font-family: "IBM Plex Mono", monospace; font-size: 11px; font-weight: 600;
    padding: 2px 7px; border-radius: 6px;
    background: var(--surface-2); color: var(--fg-2);
  }

  /* Sekmeler */
  .tabs {
    display: flex; gap: 4px; overflow-x: auto; padding-bottom: 2px;
    scrollbar-width: none;
  }
  .tabs::-webkit-scrollbar { display: none; }
  .tab {
    min-height: 38px; padding: 0 13px; border-radius: 9px;
    border: 1px solid transparent; background: transparent;
    font: inherit; font-size: 13.5px; font-weight: 600; color: var(--fg-2);
    white-space: nowrap; cursor: pointer;
    display: inline-flex; align-items: center; gap: 7px;
  }
  .tab:hover { background: var(--surface-2); color: var(--fg); }
  .tab.is-on { background: var(--surface); border-color: var(--line); color: var(--fg); box-shadow: var(--shadow); }
  .tab__n { font-size: 11px; font-weight: 700; color: var(--fg-3); }

  /* Tablo */
  .tw { overflow-x: auto; border-radius: 0 0 14px 14px; }
  table.t { width: 100%; border-collapse: collapse; font-size: 13.5px; }
  table.t thead th {
    position: sticky; top: 0; z-index: 10;
    background: var(--surface-2); color: var(--fg-2);
    text-align: left; font-size: 11px; font-weight: 700;
    letter-spacing: .07em; text-transform: uppercase;
    padding: 10px 14px; white-space: nowrap;
    border-bottom: 1px solid var(--line);
  }
  table.t tbody td { padding: 13px 14px; border-bottom: 1px solid var(--line-soft); vertical-align: middle; }
  table.t tbody tr:last-child td { border-bottom: 0; }
  table.t tbody tr:hover { background: var(--paper); }
  .t__cat td {
    background: var(--accent-soft); color: var(--accent);
    font-weight: 700; font-size: 14.5px; /* P14-B: 12.5px'ten büyütüldü (yalnızca services kullanıyor) */
    position: sticky; top: 0; z-index: 9;
  }
  .cut { max-width: 300px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

  /* Masaustunde .tw yatay kaydirma kabi degil -> sticky baslik sayfa
     kaydirmasina gore calissin. Ofsetler --top-h / --thead-h token'larindan
     hesaplanir (sabit sayi degil): ust bar degisirse tablolar kaymaz.
     Tablonun karta dondugu <=820px'de bu gecersiz (thead gizli, .t__cat static). */
  @media (min-width: 821px) {
    .tw { overflow: visible; }
    table.t thead th { top: var(--top-h); }
    .t__cat td { top: calc(var(--top-h) + var(--thead-h)); }
  }

  /* Kategori cipleri. P21 — Goktug: mobilde "kaydirilamiyor" bildirdi.
     -webkit-overflow-scrolling:touch EKSIKTI -> iOS Safari'de overflow-x:auto
     momentum'suz calisir, kaydirma sert/tepkisiz hissettirir (bircok kullanici
     bunu "kaymiyor" olarak yorumlar). 60 kategoriyi barindiran satirda (scrollWidth
     ~16000px) bu etki cok belirgin. */
  .chips { display: flex; gap: 7px; overflow-x: auto; -webkit-overflow-scrolling: touch; padding: 2px 0 4px; scrollbar-width: none; }
  .chips::-webkit-scrollbar { display: none; }
  /* P29 — Goktug: kategoriler mobilde ekrana sığmıyor, kaydırılabildiği belli
     değildi. .chips-scroll (services.twig'te yeni sarmalayıcı, .chips'in
     kancalarına dokunmuyor) sağ kenarda solma efekti + küçük ok göstergesi
     veriyor — masaüstünde (chip'ler zaten sığıyor) gösterge gizli. */
  .chips-scroll { position: relative; }
  /* P30 kok neden: ::after (solma) DOM'da hint span'inden SONRA gelmis sayilir
     (uretilmis "son cocuk"), ikisi de z-index:auto -> ::after hint'in USTUNE
     boyaniyordu; ok gorunmuyor, yalnizca solma ("blurlu alan") goze
     carpiyordu. z-index ile hint one alindi. */
  .chips-scroll__hint {
    position: absolute; right: -2px; top: 50%;
    z-index: 1;
    width: 24px; height: 24px; border-radius: 999px; border: 0; padding: 0;
    display: grid; place-items: center;
    background: var(--accent); color: #fff; box-shadow: var(--shadow);
    pointer-events: none; /* P31: script.js tiklanabilir yapinca 'auto'ya ceviriyor */
    animation: chipsHintNudge 1.4s ease-in-out infinite; /* P31: hafif sag-kayma ipucu */
  }
  .chips-scroll__hint svg { width: 14px; height: 14px; }
  /* P31: ust satirdaki translateY(-50%) ile ayni transform'u tasiyor ki
     animasyon dikey ortalamayi bozmasin — yalnizca X eksenine 3px kayma. */
  @keyframes chipsHintNudge {
    0%, 100% { transform: translate(0, -50%); }
    50% { transform: translate(3px, -50%); }
  }
  .chips-scroll::after {
    content: ""; position: absolute; right: 0; top: 0; bottom: 4px; width: 40px;
    background: linear-gradient(90deg, transparent, var(--paper) 75%);
    pointer-events: none;
  }
  .chip {
    min-height: 36px; padding: 0 12px; border-radius: 9px;
    border: 1px solid var(--line); background: var(--surface);
    font: inherit; font-size: 13px; font-weight: 600; color: var(--fg-2);
    white-space: nowrap; cursor: pointer; display: inline-flex; align-items: center; gap: 7px;
  }
  .chip:hover { border-color: var(--accent); color: var(--accent); }
  .chip.is-on { background: var(--accent); border-color: var(--accent); color: var(--accent-fg); }
  .chip__dot { width: 7px; height: 7px; border-radius: 999px; }

  /* Arama */
  .search { position: relative; flex: 1; min-width: 200px; }
  .search svg { position: absolute; left: 14px; top: 50%; transform: translateY(-50%); width: 17px; height: 17px; color: var(--fg-3); }
  .search .inp { padding-left: 42px; }

  /* Odeme yontemi kartlari */
  .pm {
    display: grid; gap: 11px;
    grid-template-columns: repeat(auto-fill, minmax(210px, 1fr));
  }
  .pm__i {
    position: relative; text-align: left;
    border: 1.5px solid var(--line); border-radius: 12px;
    background: var(--surface); padding: 14px;
    font: inherit; cursor: pointer; color: var(--fg);
    display: flex; flex-direction: column; gap: 4px;
    transition: border-color .14s, background .14s;
  }
  .pm__i:hover { border-color: var(--accent); }
  .pm__i.is-on { border-color: var(--accent); background: var(--accent-soft); }
  .pm__i.is-on .pm__check { opacity: 1; transform: scale(1); }
  .pm__check {
    position: absolute; top: 11px; right: 11px;
    width: 20px; height: 20px; border-radius: 999px;
    background: var(--accent); color: var(--accent-fg);
    display: grid; place-items: center;
    opacity: 0; transform: scale(.6); transition: opacity .14s, transform .14s;
  }
  .pm__check svg { width: 12px; height: 12px; }
  .pm__n { font-size: 14.5px; font-weight: 700; padding-right: 26px; }
  .pm__m { font-size: 12px; color: var(--fg-3); }

  .amts { display: flex; flex-wrap: wrap; gap: 8px; }
  .amt {
    min-height: 42px; padding: 0 16px; border-radius: 10px;
    border: 1px solid var(--line); background: var(--surface);
    font: inherit; font-size: 14.5px; font-weight: 700; color: var(--fg);
    cursor: pointer; font-variant-numeric: tabular-nums;
  }
  .amt:hover { border-color: var(--accent); color: var(--accent); }
  .amt.is-on { background: var(--accent); border-color: var(--accent); color: var(--accent-fg); }

  .sum { display: flex; flex-direction: column; gap: 10px; }
  .sum__r { display: flex; align-items: baseline; justify-content: space-between; gap: 14px; font-size: 14px; }
  .sum__r dt { color: var(--fg-2); }
  .sum__r dd { margin: 0; font-weight: 700; font-variant-numeric: tabular-nums; }
  .sum__tot { border-top: 1px solid var(--line); padding-top: 11px; font-size: 17px; }

  .rules { margin: 0; padding: 0; list-style: none; display: flex; flex-direction: column; gap: 10px; }
  .rules li { display: flex; gap: 9px; font-size: 13.5px; color: var(--fg-2); line-height: 1.45; }
  .rules svg { width: 15px; height: 15px; flex: 0 0 15px; margin-top: 3px; color: var(--ok); }

  .trust { display: flex; align-items: center; justify-content: center; gap: 7px; margin-top: 14px; font-size: 12px; color: var(--fg-3); }
  .trust svg { width: 14px; height: 14px; }

  .stat { background: var(--surface); border: 1px solid var(--line); border-radius: 13px; padding: 15px 16px; }
  .stat__v { font-size: 25px; font-weight: 800; font-variant-numeric: tabular-nums; margin-top: 3px; }
  .stat__d { font-size: 12px; margin-top: 3px; }

  .pager { display: flex; align-items: center; gap: 10px; padding: 14px 20px; border-top: 1px solid var(--line-soft); flex-wrap: wrap; }
  .pager__n { display: flex; gap: 5px; margin-left: auto; }
  .pnum {
    min-width: 38px; min-height: 38px; border-radius: 9px;
    border: 1px solid var(--line); background: var(--surface);
    font: inherit; font-size: 13.5px; font-weight: 600; color: var(--fg-2); cursor: pointer;
    font-variant-numeric: tabular-nums;
  }
  .pnum.is-on { background: var(--accent); border-color: var(--accent); color: var(--accent-fg); }

  .note {
    display: flex; gap: 10px; padding: 13px 15px; border-radius: 11px;
    background: var(--warn-soft); color: var(--warn);
    font-size: 13.5px; line-height: 1.45; font-weight: 500;
  }
  .note svg { width: 16px; height: 16px; flex: 0 0 16px; margin-top: 2px; }

  /* P13-E2: iki satirli gorunum (bold kisaltilmis ad + mono raw ikinci satir)
     kaldirildi — .svc__raw artik basilmiyor, tek satir gercek ad kaldi. */
  .svc__n { font-weight: 700; white-space: normal; word-break: break-word; }
  .svc-tags { display:flex; flex-wrap:wrap; gap:4px; }

  /* Kod bloklari (API sayfasi) */
  .code {
    display:block; margin:0; padding:14px 16px; border-radius:11px;
    background:var(--surface-2); border:1px solid var(--line);
    font-family:"IBM Plex Mono",monospace; font-size:12.5px; line-height:1.7;
    color:var(--fg); overflow-x:auto; white-space:pre;
  }
  .code--inline {
    display:inline; padding:2px 7px; font-size:12px; white-space:nowrap;
    border-radius:6px; overflow:visible;
  }
  .c-k { color:var(--accent); font-weight:600; }
  .c-s { color:var(--ok); }
  .c-n { color:var(--info); }

  /* Bilet mesajlari */
  .tmsg { position:relative; max-width:90%; padding:12px 14px; border-radius:14px;
    font-size:13.5px; line-height:1.55; }
  .tmsg p { margin:0; }
  .tmsg__t { display:block; margin-top:6px; font-size:10px; opacity:.6; }
  .tmsg--me { align-self:flex-end; background:var(--accent); color:var(--accent-fg);
    border-bottom-right-radius:5px; }
  .tmsg--ai { align-self:flex-start; background:var(--surface); border:1px solid var(--line);
    border-bottom-left-radius:5px; }
  .tmsg__who { display:block; font-size:9.5px; letter-spacing:.13em; color:var(--accent);
    font-weight:600; margin-bottom:5px; }
  .tmsg--sys { align-self:center; max-width:100%; display:flex; align-items:center; gap:8px;
    padding:8px 13px; border-radius:999px; background:var(--warn-soft); color:var(--warn);
    font-family:"IBM Plex Mono",monospace; font-size:10.5px; font-weight:600; }
  .tmsg--sys svg { width:13px; height:13px; flex:0 0 13px; }

  /* ===== FAVORI SERVIS =====
     Canlida [data-favorite-service-id] 358 satirda var. */
  .sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
  .th-fav{width:38px}
  .td-fav{width:38px}
  .fav{display:grid;place-items:center;width:32px;height:32px;padding:0;border:0;border-radius:8px;
    background:transparent;color:var(--fg-3);cursor:pointer;transition:color .15s,background .15s}
  .fav svg{width:17px;height:17px;fill:none}
  .fav:hover{background:var(--surface-2);color:var(--warn)}
  .fav.is-on{color:var(--warn)}
  .fav.is-on svg{fill:currentColor}

  /* =====================================================================
     #fields — PANELIN URETTIGI ALANLAR
     =====================================================================
     Panel JS'i #fields icine 30 farkli alan tipi basiyor (canlida olculdu:
     30 .form-group, 6 gorunur). Markup'i biz yazmiyoruz, degistiremiyoruz.

     Otuzunun da iskeleti AYNI:
       div#order_<ad>.form-group.fields
         > label.control-label
         > input|textarea|select.form-control
         > small.help-block

     Bu yuzden 30 tasarim yapmiyoruz — YAPIYI biçimlendiriyoruz. Otuz birinci
     alan tipi eklendiginde kendiliginden dogru gorunur.

     ⚠ BU DORT SINIF BOOTSTRAP 4'TE YOK. Panel BS3 adlandirmasiyla uretiyor,
     tema tanimlamak ZORUNDA:
       .hidden        -> tanimlanmazsa 24 gizli alanin HEPSI ekranda belirir
       .form-group    -> alan araligi kaybolur
       .control-label -> etiketler stilsiz kalir
       .help-block    -> min/max ipuclari stilsiz kalir
     ===================================================================== */

  /* .hidden ve .hide GLOBAL PANEL CSS inde tanimli — panel sagliyor.
     Savunma amacli burada da duruyor (global CSS degisirse sigorta). */
  .hidden { display: none !important; }
  .hide   { display: none !important; }

  /* --------------------------------------------------------------
     PANELIN URETTIGI, HICBIR YERDE TANIMLI OLMAYAN 9 SINIF
     Kaynak taramasiyla bulundu (1.5 MB panel JS + 521 KB CSS).
     Panel bunlari uretiyor ama ne global CSS ne tema tanimliyor.
     -------------------------------------------------------------- */
  .control-label {
    display: block; margin-bottom: 7px;
    font-size: 12.5px; font-weight: 700; letter-spacing: .04em;
    text-transform: uppercase; color: var(--fg-2);
  }
  .help-block {
    display: block; margin-top: 7px;
    font-size: 12.5px; line-height: 1.45; color: var(--fg-3);
  }
  .btn-default {
    background: var(--surface); color: var(--fg);
    border: 1px solid var(--line); border-radius: 11px;
    min-height: 48px; padding: 0 20px;
    font: inherit; font-size: 15px; font-weight: 700; cursor: pointer;
  }
  .btn-default:hover { border-color: var(--accent); color: var(--accent); }
  .center-block { display: block; margin-left: auto; margin-right: auto; }
  .pull-right   { float: right; }
  .pull-left    { float: left; }
  .panel {
    background: var(--surface); border: 1px solid var(--line);
    border-radius: 14px; box-shadow: var(--shadow); overflow: hidden;
  }
  .panel-heading {
    padding: 15px 20px; border-bottom: 1px solid var(--line-soft);
    background: var(--paper);
  }
  .panel-title { font-size: 15.5px; font-weight: 700; margin: 0; }
  .panel-body  { padding: 20px; }
  .input-group-addon {
    display: inline-flex; align-items: center; padding: 0 14px;
    background: var(--surface-2); border: 1px solid var(--line);
    border-radius: 11px 0 0 11px; font-size: 14px; color: var(--fg-2);
  }

  #fields .form-group { display: block; }
  #fields .form-group + .form-group { margin-top: 17px; }

  #fields .control-label {
    display: block; margin-bottom: 7px;
    font-size: 12.5px; font-weight: 700; letter-spacing: .04em;
    text-transform: uppercase; color: var(--fg-2);
  }

  #fields .form-control {
    width: 100%; min-height: 48px; padding: 0 14px;
    font: inherit; font-size: 16px; color: var(--fg);
    background: var(--paper);
    border: 1px solid var(--line); border-radius: 11px;
    transition: border-color .14s, background .14s;
  }
  #fields .form-control:focus {
    outline: none; border-color: var(--accent); background: var(--surface);
  }

  #fields .help-block {
    display: block; margin-top: 7px;
    font-size: 12.5px; line-height: 1.45; color: var(--fg-3);
  }
  #fields .help-block.min-max { font-family: "IBM Plex Mono", monospace; }

  /* --- Yapisal varyant 1: cok satirli --- */
  #fields textarea.form-control {
    min-height: 96px; padding: 12px 14px; line-height: 1.5; resize: vertical;
  }

  /* --- Yapisal varyant 2: acilir liste --- */
  #fields select.form-control {
    appearance: none; padding-right: 40px; cursor: pointer;
    background-image: linear-gradient(45deg, transparent 50%, var(--fg-3) 50%),
                      linear-gradient(135deg, var(--fg-3) 50%, transparent 50%);
    background-position: calc(100% - 20px) 21px, calc(100% - 15px) 21px;
    background-size: 5px 5px, 5px 5px;
    background-repeat: no-repeat;
    text-overflow: ellipsis;
  }

  /* --- Yapisal varyant 3: onay kutusu --- */
  #fields .checkbox,
  #fields input[type="checkbox"] + .control-label { display: inline-flex; }
  #fields input[type="checkbox"] {
    width: 18px; height: 18px; min-height: 0; padding: 0;
    accent-color: var(--accent); vertical-align: middle; margin-right: 9px;
  }
  #fields .checkbox .control-label {
    display: inline; margin: 0; text-transform: none; letter-spacing: 0;
    font-size: 14px; font-weight: 500; color: var(--fg);
  }

  /* --- Yapisal varyant 4: sayisal --- */
  #fields #order_quantity .form-control,
  #fields #order_min .form-control,
  #fields #order_delay .form-control,
  #fields #order_posts .form-control,
  #fields #order_old_posts .form-control,
  #fields #order_answer_number .form-control {
    font-variant-numeric: tabular-nums;
  }

  /* --- Yapisal varyant 5: panelin kendi eklentileri --- */
  #fields .form-group > .flex,
  #fields [id$="-count"] { font-family: "IBM Plex Mono", monospace; }

  /* Dokunmatikte alan yuksekligi */
  @media (pointer: coarse) {
    #fields .form-control { min-height: 48px; }
  }

  .drawer-bd { display: none; }

  /* ============ MOBIL ============ */
  @media (max-width: 1000px) {
    .grid2 { grid-template-columns: minmax(0,1fr); }
    .grid-stat { grid-template-columns: repeat(2, minmax(0,1fr)); }
  }

  @media (max-width: 820px) {
    .side {
      position: fixed; z-index: 60; left: 0; top: 0;
      transform: translateX(-100%); transition: transform .22s ease;
      box-shadow: var(--shadow-lift);
    }
    body.nav-open .side { transform: translateX(0); }
    body.nav-open .drawer-bd {
      display: block; position: fixed; inset: 0; z-index: 55;
      background: rgba(10,12,24,.5);
    }
    .top__burger { display: inline-flex; }
    .top__in { padding: 10px 14px; }
    .page { padding: 14px; }
    .top__hide { display: none; }

    /* Tablolari karta cevir — yatay kaydirma yok */
    .tw { overflow: visible; }
    table.t, table.t tbody, table.t tr, table.t td { display: block; width: 100%; }
    table.t thead { display: none; }
    table.t tbody tr {
      background: var(--surface); border: 1px solid var(--line);
      border-radius: 12px; padding: 13px; margin-bottom: 11px;
      display: grid; grid-template-columns: minmax(0,1fr) auto; gap: 7px 12px;
    }
    table.t tbody tr:hover { background: var(--surface); }
    table.t tbody td { border: 0; padding: 0; font-size: 14px; }
    table.t tbody td::before {
      content: attr(data-l);
      display: block;
      font-family: "IBM Plex Mono", monospace;
      font-size: 10px; font-weight: 500; letter-spacing: .1em;
      text-transform: uppercase; color: var(--fg-3); margin-bottom: 2px;
    }
    table.t tbody td[data-l=""]::before { display: none; }
    .cut { max-width: none; white-space: normal; overflow: visible; }
    .t__cat td { position: static; }
    table.t tbody tr.t__cat {
      display: block; background: var(--accent-soft); border-color: transparent;
      margin-bottom: 9px; padding: 9px 13px;
    }
    .t__span { grid-column: 1 / -1; }

    /* P19 — orders (ve .td-pick kullanan her tablo) kok neden: satirin ILK
       iki td'si genel [minmax(0,1fr) auto] sablonuna otomatik giriyordu ->
       secim kutusu genis/sol sutuna (ortalanmis, bosluk icinde yuzuyor),
       ID dar/sag sutuna (asiri saga kaymis gorunuyor) dusuyordu. Sutunlari
       ters cevirip checkbox'i dar+sola, ID'yi genis+sag'a alinca ikisi de
       duzeliyor. Yalnizca secim kutusu olan satirlari etkiler. */
    .td-pick { display: flex; align-items: flex-start; justify-content: flex-start; text-align: left; padding-top: 2px; }

    /* P20 — Goktug: orders karti checkbox/ID/DATE + charge/start/quantity +
       status/remains/(varsa buton) ucer ucer aralansin istedi. DOM sirasi zaten
       bu gruplari veriyor (pick,id,date | LINK t__span | charge,start,qty |
       SERVICE t__span | status,remains,(action)); 2 sutunu 3 esit sutuna
       cikarmak DIGER degisiklik olmadan ucerli gruplamayi kendiliginden
       veriyor (t__span 1/-1 3 sutunda da tam genislik kapliyor). */
    table.t tbody tr:has(> .td-pick) { grid-template-columns: minmax(0,1fr) minmax(0,1fr) minmax(0,1fr); }
  }

  /* Dokunmatik cihazlarda tum ikincil kontroller 44px.
     Masaustunde (pointer:fine) yogunluk korunuyor — her yeri 44px yapmak
     bilgi yogunlugunu gereksiz dusururdu. */
  @media (pointer: coarse) {
    .ibtn, .top__bal, .bal__btn { min-height: 44px; }
    .btn--sm { min-height: 44px; padding: 0 16px; }
    .tab     { min-height: 44px; padding: 0 15px; }
    .chip    { min-height: 44px; padding: 0 14px; }
    .amt     { min-height: 44px; }
    .pnum    { min-width: 44px; min-height: 44px; }
    .side__item { min-height: 48px; }
  }

  @media (prefers-reduced-motion: reduce) {
    * { transition: none !important; }
  }
/* =====================================================================
   KATMAN 6 — B6: CAKISAN SINIFLARDA panel olcusu TABAN, pazarlama --lg
   Karar (bas muhendis, 10 Eylul): D6'daki 6 cakisan sinif (.btn .chips .h1
   .sec__t .stat .sx__v) icin ortak taban + degistirici. .btn tabani
   (48px / r11 / 15px) yukarida "BILESENLER" blogunda. Pazarlama buyuk
   olcusu asagidaki degistiriciyle gelir; diger 5 sinif Faz 3'te ayni
   yontemle eklenecek (marketing katmani).
   ===================================================================== */
.btn--lg { min-height: 50px; padding: 0 24px; border-radius: 12px; font-size: 15.5px; }

/* =====================================================================
   KATMAN 9 — SAYFAYA OZGU: neworder.twig
   Select2 tasma duzeltmesi ve #fields varyantlari 5. katmanda.
   ===================================================================== */
/* P13-C: 680px'te servis basliklari + select2 sonuc listesi kesiliyordu. */
.neworder-single { max-width: 820px; }
/* P14-A: neworder formu %10 daha genis (yalnizca neworder — diger tek-sutun
   sayfalar .neworder-single'in 820px'inde kaldi, kapsam disi). */
.neworder-form { max-width: 900px; }
/* P15-B3: TEK ortak kap — başlık + podyum + deposit + geçmiş hepsi bunun
   içinde, kabın kendisi ortalanıyor (önceki "yarım ortalı" görünüm:
   başlık tam genişlikteydi, yalnızca form 900px'te ayrı ortalanıyordu).
   P16-D KÖK NEDEN: .page{max-width:1320px} kendisi margin:auto TAŞIMIYOR —
   .main içinde SOLA yaslı duruyor (sidebar 244px + .page 1320px < geniş
   ekranlarda .main genişliği, kalan boşluk SAĞDA kalıyor). af-wrap(960px)
   bu sola-yaslı 1320px kutunun İÇİNDE ortalanıyordu — yani gerçek viewport'a
   göre değil, zaten kaymış bir kutuya göre ortalanıyordu (görünür sonuç:
   sayfa sola kaymış gibi duruyor). Diğer .page kullanan sayfaları (neworder/
   tickets/account/api) ETKİLEMEMEK için GENEL .page kuralı DEĞİŞTİRİLMEDİ —
   yalnızca addfunds'a özel .af-page ile .page'in KENDİSİ ortalanıyor,
   af-wrap'ın içinde ortalandığı kutu artık gerçekten viewport'a göre ortada. */
.af-page { margin: 0 auto; }
.af-wrap { max-width: 960px; margin: 0 auto; }
/* .af-wrap zaten genişliği veriyor — form kendi max-width'ini TAŞIMAZ,
   yoksa af-wrap içinde ikinci kez daralır (başlık/geçmişle kenarları
   kaymış olur). */
.addfunds-single { width: 100%; }

/* P14-A: 1440x800 ilk ekranda submit gorunsun diye form sikistirildi —
   yukseklik/bosluk azaltmalari YALNIZCA #order-form kapsaminda (site geneli
   .form-control 48px degismedi). Olcum: 48px->40px + form-group 17px->11px +
   label bosluk 7px->4px, ~7 alanlik tipik formda ~90px dusey kazanc. */
#order-form .form-control,
#order-form .inp, #order-form .sel {
  min-height: 40px; padding: 0 12px; font-size: 15px;
}
#order-form textarea.form-control { min-height: 68px; padding: 9px 12px; }
#order-form .control-label { margin-bottom: 4px; font-size: 12px; }
#order-form .form-group { margin-bottom: 11px; }
#order-form #fields .form-group + .form-group { margin-top: 11px; }
#order-form .help-block { margin-top: 4px; font-size: 11.5px; }
/* Select2 (kategori/servis) — panelin ~28px kutusu once 48px'e, simdi 40px'e
   hizalaniyor (bkz. "P13-C" bloğu, ayni katman). */
#order-form .select2-container .select2-selection--single { height: 40px !important; }
#order-form .select2-selection--single .select2-selection__rendered { padding-left: 8px !important; padding-right: 30px !important; } /* P21/P22: Goktug'a gore arama kutusuna kiyasla fazla icerden basliyordu — 12->10->8px */
#order-form .select2-selection--single .select2-selection__arrow { height: 38px !important; }

/* Sozlesme: #charge readonly input DOGRUDAN .form-group cocugu.
   Ozet karti kaldirildi -> toplami tek basina #charge tasiyor, bu yuzden
   buyuk ve vurgulu (P14-A: 56px -> 48px, genel sikistirmayla oranli). */
#order-form #charge {
  min-height: 48px;
  font-size: 20px; font-weight: 800; letter-spacing: -.01em;
  font-variant-numeric: tabular-nums;
  color: var(--accent); background: var(--accent-soft);
  border-color: transparent;
}
#order-form #charge:focus { background: var(--accent-soft); border-color: var(--accent); }

/* #service_description icindeki referans div'i (.panel-body) — panel JS'i
   aciklamayi buraya yaziyor. */
#service_description .panel-body {
  padding: 14px 16px; border-radius: 11px;
  background: var(--surface-2); border: 1px solid var(--line);
  font-size: 13.5px; color: var(--fg-2); line-height: 1.55;
}

.neworder-text .card__body { font-size: 13.5px; color: var(--fg-2); line-height: 1.6; }

@media (max-width: 1000px) {
  .neworder-single { max-width: none; }
}

/* =====================================================================
   KATMAN 8 (KISMI) — misafir kabuk: yalnizca .nav ve .foot
   landing.html'den uyarlandi. Hero ve section'lar Faz 3.
   layout.twig misafir dali BS4 navbar markup'i kullaniyor
   (navbar-expand-lg / navbar-toggler / nav-item / nav-link).
   ===================================================================== */
.wrap { max-width: 1140px; margin: 0 auto; padding: 0 20px; }

.nav {
  position: sticky; top: 0; z-index: 60; color: #fff;
  background-image: linear-gradient(115deg, var(--nav-a) 0%, var(--nav-b) 42%, var(--nav-c) 78%, var(--nav-b) 100%);
  box-shadow: 0 1px 0 rgba(255,255,255,.10);
}
.nav .navbar { min-height: 60px; }
/* P16.1 — Göktuğ'un canlı ölçümü (1440px): .nav__in (=.wrap) w=679 x=0
   mw=1140 -> kap ne 1140'a genişliyor ne ortalanıyor; .nav__menu zaten
   flex:1 + justify-content:space-between DOĞRU çalışıyor ama EBEVEYNİ dar
   olduğu için sağ küme (.nav__r) linklerin hemen yanına düşüyor. Kök neden
   adayı: `.navbar` BS4'te display:flex (flex-wrap:wrap + justify-content:
   space-between, bootstrap.css satır ~4360) — TEK çocuğu olan .nav__in
   yalnızca `width:100%` ile flex-basis türetiyordu, açık `flex-grow`
   YOKTU. flex-basis:auto + width:100% BS4'ün kendi padding/box-sizing
   etkileşimiyle güvenilir büyümüyor — Göktuğ'un ölçtüğü 679px bunun kanıtı.
   Düzeltme: .nav__in'e açık flex:1 1 auto (garantili büyüme) + max-width/
   margin:auto'yu BURADA da tekrarlıyoruz (yalnızca .wrap'a güvenmek
   yetmedi). Gap'e DOKUNULMADI. */
.nav > .navbar { display: flex; width: 100%; }
.nav .navbar > .nav__in {
  flex: 1 1 auto;
  width: 100%;
  max-width: 1140px;
  margin-left: auto;
  margin-right: auto;
}
.nav__in { display: flex; align-items: center; gap: 22px; min-height: 60px; width: 100%; }
.nav__brand { display: flex; align-items: center; gap: 10px; flex-shrink: 0; color: #fff; }
.nav__brand img { max-height: 30px; width: auto; }
.nav__mark {
  width: 30px; height: 30px; border-radius: 9px; display: grid; place-items: center;
  background: rgba(255,255,255,.16); border: 1px solid rgba(255,255,255,.26);
  font-family: "IBM Plex Mono", monospace; font-weight: 600; font-size: 14px;
}
.nav__name { font-size: 18px; font-weight: 800; letter-spacing: -.02em; }

/* P15-D: kök neden — .nav__r{margin-left:auto} (P8/P9'dan beri vardı) VE
   P12-I'nin eklediği .nav__links{margin-right:auto} (dosya sonunda, ayrı
   satırda) AYNI ekseni iki farklı auto-margin ile itiyordu. Statik CSS
   analizinde ikisi matematiksel olarak birbirini iptal etmiyor (toplam
   bosluk ayni sekilde .nav__r'nin sol kenarina dagitiliyor) ama IKI AYRI
   KURALIN AYNI SONUCA GUVENMESI kirilgan: biri (auto-margin) BS4'un
   .navbar-collapse{flex-grow:1} gibi bir kuralla EŞİT ÖZGÜLLÜKTE yarışırken
   digerini etkilemiyordu ama TEK bir kaynaktan emin olmak icin margin:auto
   TAMAMEN birakildi. justify-content:space-between DAHA SAGLAM: margin
   sifirlanmasindan/resetlerden etkilenmez, RTL'de OTOMATIK ayna (flex-start/
   flex-end dir'e gore ters doner, ekstra [dir=rtl] kurali GEREKMEZ). */
.nav__menu { display: flex; align-items: center; gap: 22px; flex: 1; justify-content: space-between; }
/* P16-B kök neden — GÜÇLÜ ŞÜPHE (canlı DOM'a erişimim yok, doğrudan
   ölçemedim): .nav__menu aynı zamanda panelin runtime BS3 sınıflarını
   ("collapse navbar-collapse") taşıyor. BS3'ün kendi CSS'i:
   `@media(min-width:768px){.navbar-collapse.collapse{display:block
   !important;height:auto!important}}` — bizim .nav__menu{display:flex}
   kuralımızın ÖZGÜLLÜĞÜ bunu YENEMEZ çünkü rakip !important taşıyor;
   !important'lar arasında da özgüllük/sıra geçerlidir ve BS3'ün panel
   global CSS'i muhtemelen bizim style.css'ten SONRA ya da en azından
   eşdeğer güçte yükleniyor. Sonuç: display:flex hiç uygulanmıyor,
   flex:1/justify-content:space-between'in HİÇBİR ETKİSİ olmuyor —
   seçiciler linklerin yanında kalıyor. Çözüm: aynı iki özelliği (display,
   height) DAHA YÜKSEK ÖZGÜLLÜKTE (4 sınıf) + !important ile geri alıyoruz,
   yalnızca ≥992px'te (mobil collapse/toggle davranışı — .in/.show — BS3'ün
   kendi haline BIRAKILDI, dokunulmadı). RTL: justify-content:space-between
   zaten yön-duyarlı (flex-start/flex-end dir'e göre ters döner), ekstra
   kural gerekmiyor — [dir=rtl] testinde doğrulanıyor. */
@media (min-width: 992px) {
  .nav .nav__menu.navbar-collapse.collapse {
    display: flex !important;
    flex: 1 1 auto;
    justify-content: space-between;
    height: auto !important;
  }
}
.nav__links { display: flex; align-items: center; gap: 2px; margin: 0; padding: 0; list-style: none; }
.nav__links .nav-item { list-style: none; }
.nav__a {
  display: inline-flex; align-items: center; gap: 7px; padding: 8px 12px; border-radius: 9px;
  font-size: 14px; font-weight: 500; color: rgba(255,255,255,.86);
  transition: background .15s, color .15s;
}
.nav__a:hover, .nav__links .nav-item.active .nav__a { background: rgba(255,255,255,.12); color: #fff; }

.nav__r { display: flex; align-items: center; gap: 8px; }
.nav__ico {
  width: 36px; height: 36px; border-radius: 9px; display: grid; place-items: center;
  color: rgba(255,255,255,.9); background: transparent; border: 0; cursor: pointer;
  font-size: 12px; transition: background .15s;
}
.nav__ico:hover { background: rgba(255,255,255,.12); }
.nav__ico svg { width: 17px; height: 17px; }
.nav__langn { opacity: .6; margin-left: 4px; }
/* P36-D: misafir nav dil + doviz secici — sabit ikon kutusu degil, etikete gore
   genisler; ikisi de tema butonuyla (.nav__ico) ayni font-size/line-height/height
   (36px) alir, min-width ile kucuk metinlerde daralmaz, hover zemini kutunun icinde
   kalir (width:auto oncesi dil butonu 36px'e sikisiyor, metin tasiyordu). */
.nav__lang .nav__ico, .nav__cur .nav__ico { width: auto; min-width: 36px; height: 36px; padding: 0 10px; gap: 5px; font-weight: 600; line-height: 1; }
.nav__curl { font-size: 12px; letter-spacing: .01em; }
.nav__cur .dropdown-menu { min-width: 8rem; }
.nav__acc {
  padding: 8px 14px; border-radius: 9px; font-size: 14px; font-weight: 600;
  color: rgba(255,255,255,.92); background: rgba(255,255,255,.12); transition: background .15s;
}
.nav__acc:hover { background: rgba(255,255,255,.2); }

.navbar-toggler.nav__burger {
  display: none; border: 0; background: transparent; color: #fff; padding: 6px;
}
.navbar-toggler.nav__burger .navbar-toggler-icon {
  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba(255,255,255,0.9)' stroke-width='2' stroke-linecap='round' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");
}
@media (max-width: 991px) {
  .navbar-toggler.nav__burger { display: inline-flex; }
  /* P17-A kök neden (canlida JS ile dogrulandi): .nav__in{display:flex} icinde
     brand+burger+menu TEK SATIRDA; flex-wrap yoktu, .nav__menu acilinca
     (.navbar-collapse.in{display:block} kazaniyor) flex-grow calismiyor,
     kalan ~69px'e sikisip marka satirinin ustune/yanina biniyordu. Cozum:
     .nav__in satir kirsin, .nav__menu acildiginda TAM GENISLIK yeni satira
     dussun. */
  .nav__in { flex-wrap: wrap; }
  .nav__menu { flex-direction: column; align-items: stretch; justify-content: flex-start; gap: 8px; padding: 10px 0 14px; flex: 1 1 100%; } /* P15-D: space-between dikey eksende istenmiyor */
  .nav__links { flex-direction: column; align-items: stretch; }
  .nav__r { flex-wrap: wrap; }

  /* P20 — Göktuğ: burger ortada duruyor + açılan menü sıkışık/şık değil.
     1) .nav__menu kapalıyken (display:none) .nav__in'de yalnızca brand+burger
        kalıyor, justify-content olmadan sola paketleniyor, burger sağ kenara
        değil ortaya yakın bir yere düşüyordu -> margin-left:auto ile sağa sabitlendi.
     2) .nav__a canlıda 0 yatay dolguyla ölçüldü (yerelde 12px yazsa da canlı
        farklıydı) -> duz metin gibi goruntuluyordu; burada garanti altina alindi.
     3) dil/para birimi/tema satırı (.nav__r) linklerin hemen altına iliskisiz
        biciminde yapisiyordu -> ince ayirici cizgi + ust bosluk eklendi. */
  .nav__burger { margin-left: auto; }
  .nav__a { padding: 10px 14px !important; border-radius: 10px; } /* P21: bootstrap .navbar-nav .nav-link (2 sinif, mobil expand-oncesi)
    padding-left/right:0 LONGHAND'ini bizim tek-sinifli kuralimizdan daha yuksek ozgullukte veriyordu -> !important sart */
  .nav__r { border-top: 1px solid rgba(255,255,255,.16); margin-top: 8px; padding-top: 12px; row-gap: 8px; }
  /* P21 — Goktug: dil/para birimi dropdown'lari acilinca ekranin soluna tasip
     kayboluyordu. Kok neden: `.dropdown-menu-right` (right:0) menunun SAG
     kenarini butonun SAG kenarina hizaliyor — masaustunde buton en sagda
     oldugu icin sorun yok, ama mobilde .nav__r artik SOLA yasli (P20), dar
     buton + genis (160px) menu kombinasyonu menuyu ekran disina (negatif x)
     itiyor. Mobilde sola hizalamaya (left:0) donduruldu. */
  .nav .dropdown-menu { right: auto; left: 0; }
}

.foot { background: var(--surface); border-top: 1px solid var(--line-soft); }
.foot__in { padding: 22px 0; }
.foot__b {
  display: flex; flex-wrap: wrap; gap: 14px; justify-content: space-between;
  font-family: "IBM Plex Mono", monospace; font-size: 12px; color: var(--fg-3);
}

/* =====================================================================
   KATMAN 9 — SAYFAYA OZGU: services.twig
   Yapiskan thead + <=820px kart gorunumu 'table.t' uzerinden zaten
   uygulaniyor (KABUK/tablo blogu + @media 821px/820px). Burada yalnizca
   services'e ozgu ekler.
   ===================================================================== */
.sp-hide { display: none !important; } /* istemci sayfalama gizlemesi (panelinkinden ayri kanal) */
.pf-hide { display: none !important; } /* P13.1-E1: platform filtresi gizlemesi (panelinkinden + sp-hide'dan ayri uçuncu kanal) */
.platform-filter { margin-bottom: 4px; }
.platform-filter .chip[hidden] { display: none !important; } /* P36-C: servisi olmayan platform cipleri */

.services-bar { margin-bottom: 16px; }
.services-bar__row { display: flex; gap: 10px; flex-wrap: wrap; align-items: center; }
.services-bar__row .search { flex: 1; min-width: 220px; }
.services-bar__active { margin-left: auto; white-space: nowrap; }
.services-bar .chips { margin-top: 12px; }

.services-table-card { padding-bottom: 0; }
.width-service-name { min-width: 240px; }
/* P14-B: etiketler artık ad hücresinin İÇİNDE, adın altında (ayrı Tags
   sütunu kalktı — sütun genişledi, ad tek satırda kalma ihtimali arttı). */
.service-name .svc-tags { margin-top: 4px; }
/* P14-B: fiyat bold. */
.svc-rate { font-weight: 700; }
/* P14-B: servis ID +1pt (11px -> 12px). */
.idchip--svc { font-size: 12px; }

.services-pager {
  display: flex; align-items: center; justify-content: flex-end;
  padding: 14px 20px; border-top: 1px solid var(--line-soft);
}
.services-pager[hidden] { display: none; }

@media (max-width: 820px) {
  .services-bar__active { margin-left: 0; }
  .services-pager { justify-content: center; }
}

/* =====================================================================
   KATMAN 9 — SAYFAYA OZGU: orders.twig + addfunds.twig
   ===================================================================== */

/* --- orders --- */
.orders-bar { margin-bottom: 16px; }
.orders-tabs { display: flex; flex-wrap: wrap; align-items: center; gap: 4px; }
.orders-tabs .tab { text-decoration: none; }
.orders-search { flex: 1; min-width: 200px; margin-left: auto; }
.orders-table-card { padding-bottom: 0; }
.orders-table .cut { max-width: 260px; display: inline-block; vertical-align: bottom; }
.order-actions { display: flex; flex-wrap: wrap; gap: 6px; }
/* P14-C: butonlar hem .btn-xs (30px) hem .btn--sm (38px, dosyada SONRA
   geldigi icin kazaniyordu) tasiyor — tablo diger ogeleriyle orantisiz
   buyuk kaliyordu. Iki-sinifli secici ile aciyorum, dosya sirasindan
   bagimsiz kazanir; pointer:coarse'daki .btn--sm 44px de burada eziliyor. */
.order-actions .btn { min-height: 28px; padding: 0 10px; font-size: 12px; border-radius: 8px; }

/* P13-F: tarih sütunu daraltıldı (varsa tarih/saat arasındaki boşlukta
   ikinci satıra sarar) — td.mono nowrap kuralını burada eziyoruz. */
.orders-table th.orders-date { width: 84px; }
.orders-table tbody td.orders-date,
.orders-table tbody td.mono.orders-date { /* .mono nowrap kuralını eziyor — bkz. aşağıda */
  white-space: normal; max-width: 84px;
  font-size: 12px; line-height: 1.3;
}
/* P13-F: servis adı artık .cut DEĞİL — tam genişlikte, gerekirse sarar. */
.orders-table td.orders-service span { white-space: normal; word-break: break-word; }
.orders-pager {
  display: flex; justify-content: flex-end;
  padding: 14px 20px; border-top: 1px solid var(--line-soft);
}

/* --- addfunds (P13.1-J: godofpanel duzeni) --- */
.af-head { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 16px; margin-bottom: 16px; }
.af-head__t { display: flex; align-items: center; gap: 14px; }
.af-head__ico {
  width: 44px; height: 44px; flex: 0 0 44px; border-radius: 12px;
  display: grid; place-items: center; background: var(--accent-soft); color: var(--accent);
}
.af-head__ico svg { width: 22px; height: 22px; }
.af-head__ttl { font-size: clamp(19px, 3vw, 23px); font-weight: 800; letter-spacing: -.01em; }
.af-head__sub { font-size: 13px; color: var(--fg-3); margin-top: 2px; }

.af-pod {
  display: flex; align-items: center; gap: 16px;
  background: var(--surface); border: 1px solid var(--line); border-radius: 14px;
  padding: 12px 16px; box-shadow: var(--shadow);
}
.af-pod__seg { text-align: left; }
.af-pod__v { font-size: 21px; font-weight: 800; margin-top: 2px; font-variant-numeric: tabular-nums; }
.af-pod__div { width: 1px; align-self: stretch; background: var(--line); }
.af-pod__ico {
  width: 38px; height: 38px; flex: 0 0 38px; border-radius: 10px; margin-left: 4px;
  display: grid; place-items: center; background: var(--accent-soft); color: var(--accent);
}
.af-pod__ico svg { width: 19px; height: 19px; }

.af-extra { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 16px; }

.af-card__head { gap: 10px; }
.af-card__headico {
  width: 30px; height: 30px; flex: 0 0 30px; border-radius: 9px;
  display: grid; place-items: center; background: var(--accent-soft); color: var(--accent);
}
.af-card__headico svg { width: 16px; height: 16px; }
.af-card__sep { height: 1px; background: var(--line-soft); }

.af-pay { display: flex; }
.af-pay svg { width: 17px; height: 17px; }
.af-secure {
  display: flex; align-items: center; justify-content: center; gap: 7px;
  margin: 12px 0 0; font-size: 12px; color: var(--fg-3);
}
.af-secure svg { width: 14px; height: 14px; }

@media (max-width: 560px) {
  .af-head { flex-direction: column; align-items: stretch; }
  .af-pod { justify-content: space-between; }
}

/* Yöntem kartları: 3 sütun grid (mobil 1 sütun). Logo kutusu + bonus/fee
   satırları (veri varsa — .pm__bonus/.pm__fee koşullu basılır).
   P14-E3: logo metnin SOLUNDA, satır içi, dikey ortalı — .pm__i satır (row)
   yönüne çevrildi, .pm__body ad+meta'yı dikeyde topluyor. */
.pm--grid3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
@media (max-width: 700px) { .pm--grid3 { grid-template-columns: minmax(0, 1fr); } }
.pm--grid3 .pm__i { flex-direction: row; align-items: center; gap: 11px; }
.pm__logo {
  width: 30px; height: 30px; border-radius: 8px;
  display: grid; place-items: center; background: var(--surface-2); color: var(--fg-2);
  flex: 0 0 30px; overflow: hidden;
}
.pm__logo svg { width: 17px; height: 17px; }
.pm__logo img { width: 100%; height: 100%; object-fit: contain; border-radius: inherit; }
.pm__logo:empty { display: none; }
.pm__body { display: flex; flex-direction: column; gap: 2px; min-width: 0; flex: 1; }
.pm__n { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; padding-right: 26px; }
.pm__bonus, .pm__fee {
  display: block; font-size: 11px; font-weight: 600; margin-top: 0;
}
/* P14-ek: küçük teşvik edici rozet (accent/yeşil) — düz metin değil. */
.pm__bonus {
  display: inline-flex; width: fit-content; margin-top: 2px;
  padding: 1px 7px; border-radius: 999px;
  background: var(--ok-soft); color: var(--ok);
}
.pm__fee { color: var(--fg-3); }

/* P14-E5/P15-B2: tutar input'unun HEMEN ALTINDA (DOM'da zaten öyle) — yalnızca
   BONUS eşleşen yöntem seçiliyken script.js açıyor (varsayılan hidden).
   P15-B2: ham parlak yeşil (--ok/--ok-soft) KALDIRILDI — nötr kutu + tek
   vurgulu rakam (accent). Üst/alt boşluk ayrı ayrı ≥12px (submit'e
   yapışık görünüm kalktı — bir sonraki .form-group zaten kendi
   margin-top'unu taşıyor, buradaki margin-bottom ekstra garanti). Yazı
   tipi body'den (Barlow) devralınır — mono/num sınıfı YOK. */
.af-bonus-calc {
  display: flex; flex-direction: column; gap: 6px;
  margin: 14px 0; padding: 12px 14px; border-radius: 11px;
  background: var(--surface-2); border: 1px solid var(--line);
  font-family: inherit;
}
.af-bonus-calc__r { display: flex; align-items: baseline; justify-content: space-between; font-size: 13.5px; font-weight: 600; color: var(--fg-2); } /* P16-D: metin bold (600) */
.af-bonus-calc__r b { font-weight: 700; color: var(--fg); font-variant-numeric: tabular-nums; font-family: inherit; }
.af-bonus-calc__bonus b { color: var(--accent); }
.af-bonus-calc__total { border-top: 1px solid var(--line-soft); padding-top: 6px; }
.af-bonus-calc__total b { font-size: 15px; color: var(--accent); }
.af-bonus-calc__hint { margin: 0; font-size: 13px; font-weight: 600; color: var(--fg-2); font-family: inherit; } /* P16-D: metin bold (600) */

/* P15-B4: Payment history — native <details> yerine tickets.twig ile AYNI
   buton+[hidden] deseni (kök neden doğrulanamadı, native davranışa
   bağımlı olmayan yola geçildi). Varsayılan kapalı. */
.addfunds-history__sum {
  width: 100%; border: 0; background: transparent; cursor: pointer;
  font: inherit; text-align: left; justify-content: space-between;
}
.addfunds-history__chev { width: 16px; height: 16px; color: var(--fg-3); transition: transform .15s; }
.addfunds-history.is-open .addfunds-history__chev { transform: rotate(180deg); }

/* Hızlı tutar: 6 sütun grid (mobil 3 sütun). Seçili -> dolgu degrade +
   küçük "x" temizleme rozeti (script.js ekliyor). */
.amts--grid6 { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 8px; }
@media (max-width: 700px) { .amts--grid6 { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.amts--grid6 .amt { position: relative; width: 100%; }
.amts--grid6 .amt.is-on {
  background: linear-gradient(135deg, var(--accent), var(--accent-2)); border-color: transparent; color: var(--accent-fg);
}
.amt__clear {
  position: absolute; top: -6px; right: -6px; width: 18px; height: 18px;
  border-radius: 999px; border: 0; padding: 0; cursor: pointer;
  background: var(--crit); color: #fff; font-size: 12px; line-height: 1;
  display: grid; place-items: center; box-shadow: 0 1px 3px rgba(0,0,0,.25);
}

.af-amount-input { background: var(--surface-2); }
.af-amount-input:focus { background: var(--surface); }

/* Gizli ama DOM'da kalan gercek select — display:none DEGIL (panel jQuery'si
   ve form gonderimi icin erisilebilir kalmali), a11y agacindan cikarildi. */
.addfunds-method-select {
  position: absolute !important; width: 1px; height: 1px;
  padding: 0; margin: -1px; overflow: hidden;
  clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}

/* Radio kartlar: gorunur secim kutusu radio input'un uzerine yaziliyor. */
.pm__i { position: relative; }
.pm__i input[type="radio"] {
  position: absolute; opacity: 0; width: 0; height: 0; margin: 0;
}
.pm__i:focus-within { outline: 2px solid var(--accent); outline-offset: 2px; }
.pm__i:has(input:checked) { border-color: var(--accent); background: var(--accent-soft); }
.pm__i:has(input:checked) .pm__check { opacity: 1; transform: scale(1); }

/* Komisyon alanlari — panel kosullu uretir (su an yok). Gelirlerse duzgun gorunsun. */
.commission-fields { display: grid; gap: 12px; margin-top: 4px; }
.commission-fields .form-group { margin-bottom: 0; }
#field-commission-extra_fee,
#field-commission-total {
  width: 100%; min-height: 44px; padding: 0 12px;
  border: 1px solid var(--line); border-radius: 10px;
  background: var(--surface-2); color: var(--fg-2);
  font-variant-numeric: tabular-nums;
}

.addfunds-history { margin-top: 16px; padding-bottom: 0; }
.addfunds-text .card__body { font-size: 13.5px; color: var(--fg-2); line-height: 1.6; }

@media (max-width: 820px) {
  .orders-search { margin-left: 0; }
  .orders-pager { justify-content: center; }
}

/* orders tablosu: dar masaustunde SAYFA yatay tasiyor (olculdu, fixture:
   244px sidebar + 120 karakter link -> tablo ~1283px; 1024px'te sayfa 541px,
   1280px'te 285px tasiyor). Cozum: orders tablosu masaustunde de KENDI yatay
   kaydirma kabinda; thead kap icinde yapisir (top:0). Genel 'table.t' sayfa-
   sticky kurali burada eziliyor. <=820px kart gorunumu degismedi. */
@media (min-width: 821px) {
  .orders-table-card > .tw { overflow-x: auto; overflow-y: visible; }
  table.orders-table thead th { top: 0; }
}

/* =====================================================================
   KATMAN 6 EKI — AUTH KARTI (ortak, scope'suz)
   signin.twig hero'sundan cikarildi; Paket 8'de signup / resetpassword /
   setnewpassword / 2fa / confirmemail sayfalari .auth-page sarmalayicisi
   icinde ayni karti kullanacak. Panel'de .fld/.auth/.sep/.gbtn/.auth__*
   cakismasi yok (panel .field kullaniyor, .fld degil).
   ===================================================================== */
.auth-page{min-height:calc(100vh - 60px);display:grid;place-items:center;padding:48px 20px}
.auth-page > *{width:100%;max-width:420px}
.auth-page .auth{width:100%}
.auth-page__foot{margin-top:16px;text-align:center;font-family:"IBM Plex Mono",monospace;font-size:11px;color:var(--fg-3)}

.auth{background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:24px;box-shadow:var(--shadow-lift)}
.auth__tabs{display:grid;grid-template-columns:1fr 1fr;gap:4px;padding:4px;border-radius:11px;background:var(--surface-2);margin-top:12px}
.auth__tab{padding:10px;border:0;border-radius:8px;background:transparent;text-align:center;font:inherit;font-size:14px;font-weight:600;color:var(--fg-3);text-decoration:none}
.auth__tab.on{background:var(--surface);color:var(--fg);box-shadow:var(--shadow)}
.fld{display:flex;flex-direction:column;gap:7px;margin-top:16px}
.fld__l{font-family:"IBM Plex Mono",monospace;font-size:10.5px;font-weight:500;text-transform:uppercase;letter-spacing:.12em;color:var(--fg-3)}
.auth .inp,.auth .form-control{width:100%;min-height:48px;padding:0 15px;font:inherit;font-size:16px;color:var(--fg);
  background:var(--paper);border:1px solid var(--line);border-radius:11px;transition:border-color .15s,background .15s}
.auth .inp:focus,.auth .form-control:focus{outline:none;border-color:var(--accent);background:var(--surface);box-shadow:none}
.sep{display:flex;align-items:center;gap:12px;margin:20px 0}
.sep span{height:1px;flex:1;background:var(--line-soft)}
.gbtn{display:flex;width:100%;align-items:center;justify-content:center;gap:10px;min-height:48px;
  border:1px solid var(--line);border-radius:11px;background:var(--paper);color:var(--fg);
  font:inherit;font-size:14.5px;font-weight:600;cursor:pointer}
.gbtn:hover{border-color:var(--accent)}
.g_id_signin{margin-top:12px;display:flex;justify-content:center}

/* Sifre goster/gizle (signup — JS progressive; JS yoksa alan calisir) */
.pw-field{position:relative}
.pw-field .form-control{padding-right:52px}
.pw-toggle{position:absolute;right:6px;top:50%;transform:translateY(-50%);
  width:40px;height:36px;display:grid;place-items:center;border:0;background:transparent;
  color:var(--fg-3);cursor:pointer;border-radius:8px}
.pw-toggle:hover{color:var(--accent)}
.pw-toggle svg{width:18px;height:18px}

/* =====================================================================
   KATMAN 6 EKI — .prose : admin editorunden gelen serbest HTML tipografisi
   (blog / blogpost / faq / terms + newpage P9). Koyu temada da okunur.
   ===================================================================== */
.prose{color:var(--fg-2);font-size:15px;line-height:1.7;word-wrap:break-word}
.prose > :first-child{margin-top:0}
.prose > :last-child{margin-bottom:0}
.prose h1,.prose h2,.prose h3,.prose h4{color:var(--fg);line-height:1.25;margin:1.6em 0 .5em;font-weight:800;letter-spacing:-.01em}
.prose h1{font-size:1.7em}
.prose h2{font-size:1.4em}
.prose h3{font-size:1.18em}
.prose h4{font-size:1.02em}
.prose p{margin:0 0 1em}
.prose a{color:var(--accent);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:2px}
.prose a:hover{text-decoration-thickness:2px}
.prose strong,.prose b{color:var(--fg);font-weight:700}
.prose ul,.prose ol{margin:0 0 1em;padding-left:1.4em}
.prose li{margin:.35em 0}
.prose li > ul,.prose li > ol{margin:.35em 0}
.prose blockquote{margin:1em 0;padding:.6em 1em;border-left:3px solid var(--accent);
  background:var(--surface-2);border-radius:0 10px 10px 0;color:var(--fg-2)}
.prose blockquote > :last-child{margin-bottom:0}
.prose img{max-width:100%;height:auto;border-radius:12px;margin:1em 0}
.prose hr{border:0;border-top:1px solid var(--line);margin:1.8em 0}
.prose figure{margin:1em 0}
.prose figcaption{font-size:.85em;color:var(--fg-3);margin-top:.4em;text-align:center}
/* tablo — kendi kabinda yatay kaydirma */
.prose table{width:100%;border-collapse:collapse;font-size:.92em;margin:0}
.prose > table,.prose .table-wrap{display:block;overflow-x:auto;margin:1em 0;-webkit-overflow-scrolling:touch}
.prose > table{white-space:nowrap}
.prose th,.prose td{padding:9px 12px;border:1px solid var(--line);text-align:left;vertical-align:top}
.prose thead th{background:var(--surface-2);color:var(--fg-2);font-weight:700}
/* kod — .code bileseniyle uyumlu */
.prose pre{display:block;margin:1em 0;padding:14px 16px;border-radius:11px;
  background:var(--surface-2);border:1px solid var(--line);
  font-family:"IBM Plex Mono",ui-monospace,monospace;font-size:12.5px;line-height:1.7;
  color:var(--fg);overflow-x:auto;white-space:pre}
.prose code{font-family:"IBM Plex Mono",ui-monospace,monospace;font-size:.9em;
  background:var(--surface-2);border:1px solid var(--line);border-radius:6px;padding:2px 6px}
.prose pre code{background:none;border:0;padding:0;font-size:1em}

.prose-card .card__body{padding:24px}
.prose-page__title{font-size:clamp(24px,4vw,32px);font-weight:800;letter-spacing:-.02em;margin-bottom:8px}
.prose-page__meta{font-family:"IBM Plex Mono",monospace;font-size:12px;color:var(--fg-3);margin-bottom:18px}

/* =====================================================================
   KATMAN 8 — PAZARLAMA (signin.twig / landing). Tumu ".landing" ile
   scope'lanmis: panel .chips/.h1/.sec__t/.stat/.sx__v/.btn/.inp/.chip
   cakismalarini onler (B6 taban+degistirici yerine scope; auth karti
   6. katmana tasindi — karar kaydi ROADMAP.md). Degerler
   mockup/landing.html'den. .dev ve .sample TASINMADI.
   ===================================================================== */
.landing{font-size:16px}
.landing .eyebrow{font-family:"IBM Plex Mono",monospace;font-size:11px;font-weight:500;text-transform:uppercase;letter-spacing:.14em}
.landing .lede{max-width:56ch;font-size:17px;line-height:1.55;color:var(--fg-2)}
.landing .mono{font-family:"IBM Plex Mono",ui-monospace,monospace}
.landing .num{font-variant-numeric:tabular-nums}

.landing .sec{padding:76px 0}
.landing .sec--tint{background:var(--surface);border-top:1px solid var(--line-soft);border-bottom:1px solid var(--line-soft)}
.landing .sec__h{margin-bottom:38px}
.landing .sec__t{font-size:clamp(26px,5.5vw,38px);font-weight:800;margin-top:12px;letter-spacing:-.025em;line-height:1.1}
@media (max-width:640px){ .landing .sec{padding:52px 0} }

.landing .hero{position:relative;overflow:hidden}
.landing .hero__mesh{position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(52% 48% at 12% 4%,var(--mesh-1) 0%,transparent 62%),
    radial-gradient(44% 42% at 88% 0%,var(--mesh-2) 0%,transparent 60%),
    radial-gradient(60% 50% at 62% 92%,var(--mesh-3) 0%,transparent 66%)}
.landing .hero__in{position:relative;display:grid;gap:44px;padding-top:64px;padding-bottom:68px;grid-template-columns:minmax(0,1fr) 396px;align-items:start}
/* P19: shorthand `padding:64px 0 68px` yatay kenarlari SIFIRLIYORDU ->
   .wrap'in 20px yan bosluğunu eziyordu, hero mobilde ekran kenarina
   yapisik duruyordu. padding-top/bottom'a bolunerek .wrap'in yatay
   padding'i dokunulmadan korunuyor. */
@media (max-width:1000px){ .landing .hero__in{grid-template-columns:minmax(0,1fr);padding-top:44px;padding-bottom:52px} }
/* P19 — /ai-support: canlida hero__in genişliği 0px ölçüldü (grid-template-columns
   "0px 420px"). Kök neden admin sayfa editörüne yapıştırılan içerikte
   (mockup/ai-support.html:647) satır-içi `style="grid-template-columns:minmax(0,1fr) 420px"`
   kaldı; mockup'ın kendi güvenlik ağı (aynı dosyada !important'lı mobil kuralı,
   satır 613) editörde muhtemelen <style> bloğuyla birlikte silindi ama satır-içi
   style hayatta kaldı — inline stil sınıf tabanlı kuralları HER ZAMAN yener.
   Çözüm: !important ile bizim harici style.css'ten kazanıyoruz (yalnızca
   !important harici kural, important olmayan satır-içi stili yenebilir). */
@media (max-width:1000px){ .hero__in{ grid-template-columns:minmax(0,1fr) !important; } }
/* P19 — /ai-support "What happens after you hit send" akış SVG'si (viewBox
   0 0 1080 340, width:100%) mobilde diag-d/diag-m yedeği olmadan pastelendi
   (landing.html'deki .flow/.tline mobil dönüşümünün eşi bu sayfada yok).
   1080 birim 335px'e sığınca ölçek ~0.31x, 14px metin ~4px'e iniyor —
   "karınca yazısı". İçerik admin sayfa editöründe (bizim repo dışında),
   markup'ı degistiremiyoruz. İLK ÇÖZÜM diyagramı tamamen gizlemekti ama
   Göktuğ diyagramın bilgilendirici olduğunu, kaldırılmaması gerektiğini
   belirtti — P27'de yatay kaydırmaya çevrildi: SVG sabit (okunur) genişlikte
   kalıyor, sarmalayıcı kaydırılabiliyor; hiçbir metin küçülmüyor, içerik
   kaybolmuyor. */
@media (max-width:760px){
  #flow .wrap{ overflow-x: auto; -webkit-overflow-scrolling: touch; }
  #flow svg[viewBox="0 0 1080 340"]{ width: 900px !important; max-width: none !important; }
}
.landing .h1{font-size:clamp(34px,8.5vw,60px);font-weight:900;letter-spacing:-.04em;margin-top:16px;line-height:1.1}
.landing .h1 em{font-style:normal;color:var(--accent)}
.landing .chips{display:flex;flex-wrap:wrap;gap:9px;margin-top:26px}
.landing .chip{display:inline-flex;align-items:center;gap:8px;padding:8px 13px;border-radius:999px;
  background:var(--surface);border:1px solid var(--line);font-size:13.5px;font-weight:600;box-shadow:var(--shadow);min-height:0}
.landing .chip svg{width:15px;height:15px;flex:0 0 15px}
.landing .chip--tp{border-color:rgba(0,182,122,.34)}
.landing .cta{display:flex;flex-wrap:wrap;gap:11px;margin-top:28px}
.landing .btn{display:inline-flex;align-items:center;justify-content:center;gap:9px;min-height:50px;padding:0 24px;
  border:0;border-radius:12px;cursor:pointer;font:inherit;font-size:15.5px;font-weight:700;transition:transform .15s,filter .15s}
.landing .btn svg{width:17px;height:17px}
.landing .btn--p{background:var(--accent);color:var(--accent-fg);box-shadow:0 6px 18px -8px var(--accent)}
.landing .btn--p:hover{transform:translateY(-1px);filter:brightness(1.07)}
.landing .btn--g{background:var(--surface);color:var(--fg);border:1px solid var(--line)}
.landing .btn--g:hover{border-color:var(--accent);color:var(--accent)}

/* auth kartinin gorsel bilesenleri 6. katmana (ortak) tasindi — Paket 8'de
   signup/resetpassword/setnewpassword/2fa/confirmemail sayfalari da kullanacak.
   Bkz. "KATMAN 6 EKI — AUTH KARTI (ortak)". Burada yalnizca hero'ya ozgu glow. */
.landing .glow{position:relative}
.landing .glow::after{content:"";position:absolute;inset:-24px -14px 6px;border-radius:28px;z-index:-1;
  background:radial-gradient(closest-side,var(--accent-soft),transparent 76%);filter:blur(6px)}

.landing .strip{border-top:1px solid var(--line-soft);border-bottom:1px solid var(--line-soft);background:var(--surface)}
.landing .plat{display:inline-flex;align-items:center;gap:9px;font-size:14.5px;font-weight:700;color:var(--fg-2)}
.landing .plat svg{width:21px;height:21px}
.landing .mq{overflow:hidden;
  -webkit-mask-image:linear-gradient(90deg,transparent 0,#000 7%,#000 93%,transparent 100%);
          mask-image:linear-gradient(90deg,transparent 0,#000 7%,#000 93%,transparent 100%)}
.landing .mq__t{display:flex;width:max-content;animation:mqscroll 64s linear infinite}
.landing .mq:hover .mq__t,.landing .mq:focus-within .mq__t{animation-play-state:paused}
.landing .mq__set{display:flex;align-items:center;gap:40px;padding:20px}
@keyframes mqscroll{from{transform:translateX(0)}to{transform:translateX(-50%)}}

.landing .statx{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}
@media (max-width:900px){ .landing .statx{grid-template-columns:repeat(2,minmax(0,1fr))} }
.landing .sx{position:relative;overflow:hidden;border-radius:18px;padding:26px 24px 24px;
  background:var(--surface);border:1px solid var(--line);transition:transform .18s,box-shadow .18s}
.landing .sx:hover{transform:translateY(-3px);box-shadow:var(--lift)}
.landing .sx__i{width:38px;height:38px;border-radius:11px;display:grid;place-items:center;background:var(--accent-soft);color:var(--accent)}
.landing .sx__i svg{width:19px;height:19px}
.landing .sx__v{font-size:clamp(30px,7vw,44px);font-weight:900;letter-spacing:-.045em;line-height:1;margin-top:18px;font-variant-numeric:tabular-nums}
.landing .sx__l{font-size:14px;font-weight:600;margin-top:9px}
.landing .sx__s{font-size:12.5px;color:var(--fg-3);margin-top:3px}
.landing .sx--hero{color:#fff;border-color:transparent;background:linear-gradient(140deg,#6C5BC4 0%,#7867CD 46%,#4B3E93 100%)}
.landing .sx--hero .sx__i{background:rgba(255,255,255,.18);color:#fff}
.landing .sx--hero .sx__s{color:rgba(255,255,255,.74)}
.landing .sx__ghost{position:absolute;right:-12px;bottom:-22px;font-size:90px;font-weight:900;letter-spacing:-.06em;line-height:1;
  color:var(--fg);opacity:.035;pointer-events:none;font-family:"IBM Plex Mono",monospace}
.landing .sx--hero .sx__ghost{color:#fff;opacity:.14}

.landing .kf{border:1px solid var(--line);border-radius:18px;background:var(--surface);overflow:hidden}
.landing .kf__h{display:flex;align-items:center;gap:10px;padding:16px 22px;border-bottom:1px solid var(--line-soft);background:var(--paper)}
.landing .kf__h svg{width:18px;height:18px;color:var(--accent)}
.landing .kf__t{font-size:15px;font-weight:800}
.landing .kf__g{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}
@media (max-width:760px){ .landing .kf__g{grid-template-columns:minmax(0,1fr)} }
.landing .kf__r{display:flex;gap:14px;padding:15px 22px;border-bottom:1px solid var(--line-soft)}
.landing .kf__k{flex:0 0 150px;font-family:"IBM Plex Mono",monospace;font-size:11px;letter-spacing:.09em;text-transform:uppercase;color:var(--fg-3);padding-top:2px}
.landing .kf__v{font-size:14.5px;font-weight:600;line-height:1.45}
.landing .kf__v small{display:block;font-size:13px;font-weight:400;color:var(--fg-2);margin-top:2px}
.landing .cmp__w{border:1px solid var(--line);border-radius:18px;overflow:hidden;background:var(--surface);overflow-x:auto}
.landing .cmp{width:100%;border-collapse:collapse;font-size:14.5px;min-width:560px}
.landing .cmp th,.landing .cmp td{padding:14px 18px;text-align:left;border-bottom:1px solid var(--line-soft)}
.landing .cmp thead th{font-family:"IBM Plex Mono",monospace;font-size:11px;letter-spacing:.09em;text-transform:uppercase;color:var(--fg-3);font-weight:500;background:var(--paper)}
.landing .cmp tbody th{font-weight:600;color:var(--fg-2)}
.landing .cmp__us{background:var(--accent-soft)}
.landing .cmp thead .cmp__us{color:var(--accent);font-weight:700}
.landing .cmp tr:last-child th,.landing .cmp tr:last-child td{border-bottom:0}
.landing .cmp__cap{caption-side:top;text-align:left;padding:13px 18px;background:var(--paper);
  font-family:"IBM Plex Mono",monospace;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--fg-3);border-bottom:1px solid var(--line-soft)}
.landing .cmp__note{margin-top:15px;font-size:13.5px;line-height:1.6;color:var(--fg-2);max-width:78ch}

.landing .band-dark{
  --surface:#1B2138; --surface-2:#232A45; --paper:#141A2E;
  --line:#333C5C; --line-soft:#2A3350;
  --fg:#F1F3F9; --fg-2:#A9B2C9; --fg-3:#7C879F;
  --accent:#A695F0; --accent-soft:rgba(166,149,240,.16); --accent-fg:#16182E;
  --ok:#5BCC86; --ok-soft:rgba(91,204,134,.16);
  --crit:#FF8A7E; --crit-soft:rgba(255,138,126,.14);
  position:relative;overflow:hidden;background:#12172A;color:var(--fg);
  border-top:1px solid #262E4A;border-bottom:1px solid #262E4A}
.landing .band-dark::before{content:"";position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(48% 46% at 16% 8%,rgba(120,103,205,.34) 0%,transparent 64%),
    radial-gradient(44% 44% at 84% 6%,rgba(42,91,215,.22) 0%,transparent 62%),
    radial-gradient(66% 56% at 50% 106%,rgba(154,139,228,.24) 0%,transparent 68%)}
.landing .band-dark>*{position:relative}
.landing .band-dark .sec__t{color:var(--fg)}
.landing .band-dark .lede{color:var(--fg-2)}
.landing .shot{position:relative;margin-top:44px;perspective:1800px}
.landing .shot__glow{position:absolute;left:50%;top:52%;width:78%;height:72%;transform:translate(-50%,-50%);
  background:radial-gradient(closest-side,rgba(150,133,235,.55),transparent 72%);filter:blur(46px);pointer-events:none}
.landing .shot__win{position:relative;border-radius:16px;overflow:hidden;border:1px solid rgba(255,255,255,.16);background:#1B2138;
  box-shadow:0 40px 90px -30px rgba(0,0,0,.85),0 0 0 1px rgba(255,255,255,.05) inset;transform:rotateX(7deg) rotateZ(-.5deg);transform-origin:50% 0}
.landing .shot__bar{display:flex;align-items:center;gap:8px;padding:11px 14px;background:#232A45;border-bottom:1px solid rgba(255,255,255,.08)}
.landing .shot__dot{width:10px;height:10px;border-radius:999px}
.landing .shot__url{margin-left:10px;padding:3px 12px;border-radius:7px;background:rgba(255,255,255,.07);font-family:"IBM Plex Mono",monospace;font-size:11px;color:#A9B2C9}
.landing .shot__body{display:grid;grid-template-columns:180px minmax(0,1fr);min-height:330px}
.landing .shot__side{background:#171D33;border-right:1px solid rgba(255,255,255,.07);padding:14px 10px}
.landing .shot__brand{display:flex;align-items:center;gap:8px;padding:4px 8px 14px;font-size:14px;font-weight:800;color:#F1F3F9}
.landing .shot__brand span{width:22px;height:22px;border-radius:7px;display:grid;place-items:center;background:linear-gradient(135deg,#7867CD,#4B3E93);font-family:"IBM Plex Mono",monospace;font-size:11px}
.landing .shot__nav{display:flex;flex-direction:column;gap:2px}
.landing .shot__i{display:flex;align-items:center;gap:9px;padding:8px 9px;border-radius:8px;font-size:12.5px;font-weight:600;color:#96A0BA}
.landing .shot__i i{width:14px;height:14px;border-radius:4px;background:rgba(255,255,255,.14);display:block;flex:0 0 14px}
.landing .shot__i.on{background:rgba(166,149,240,.16);color:#C6BAFA}
.landing .shot__i.on i{background:#A695F0}
.landing .shot__main{padding:16px 18px;display:grid;gap:12px;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);align-content:start}
.landing .shot__card{background:#1F2640;border:1px solid rgba(255,255,255,.08);border-radius:12px;padding:14px}
.landing .shot__lbl{font-family:"IBM Plex Mono",monospace;font-size:8.5px;letter-spacing:.14em;text-transform:uppercase;color:#7C879F}
.landing .shot__in{margin-top:6px;height:32px;border-radius:8px;background:#161C31;border:1px solid rgba(255,255,255,.09);display:flex;align-items:center;padding:0 10px;font-size:11.5px;color:#C3CADB;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.landing .shot__btn{margin-top:12px;height:34px;border-radius:9px;background:linear-gradient(135deg,#8B79E0,#6C5BC4);display:grid;place-items:center;font-size:12px;font-weight:700;color:#fff;transition:transform .12s,filter .12s}
.landing .shot__btn.is-press{transform:scale(.97);filter:brightness(1.18)}
.landing .shot__row{display:flex;align-items:center;justify-content:space-between;padding:7px 0;font-size:11.5px;color:#A9B2C9}
.landing .shot__row[hidden]{display:none!important}
.landing .shot__row+.shot__row{border-top:1px solid rgba(255,255,255,.07)}
.landing .shot__row b{color:#F1F3F9;font-family:"IBM Plex Mono",monospace}
.landing .shot__pill{padding:2px 8px;border-radius:999px;font-size:9.5px;font-weight:700;font-family:"IBM Plex Mono",monospace}
.landing .shot__cap{text-align:center;margin-top:22px;font-family:"IBM Plex Mono",monospace;font-size:12px;color:#8993AC}
/* P33: canli panel demosu — .shot__status pill (Pending/In progress/Completed), satir kayarak giris */
.landing .shot__status{padding:2px 7px;border-radius:999px;font-size:9.5px;font-weight:700;font-family:"IBM Plex Mono",monospace;margin-right:6px}
.landing .shot__status[data-state="warn"]{background:rgba(224,169,79,.2);color:#F0BE7A}
.landing .shot__status[data-state="info"]{background:rgba(108,147,255,.18);color:#9DB8FF}
.landing .shot__status[data-state="ok"]{background:rgba(91,204,134,.18);color:#7BE0A5}
.landing .shot__row--in{animation:shotRowIn .4s ease}
@keyframes shotRowIn{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}
@media (max-width:820px){
  .landing .shot__win{transform:none}
  .landing .shot__body{grid-template-columns:minmax(0,1fr)}
  .landing .shot__side{display:none}
  .landing .shot__main{grid-template-columns:minmax(0,1fr)}
}

.landing .diag-m{display:none}
.landing .flow.diag-m,.landing .tline.diag-m{display:none}
@media (max-width:760px){
  .landing .diag-d{display:none}
  .landing .diag-m{display:block}
  .landing .flow.diag-m,.landing .tline.diag-m{display:flex}
}
.landing .flow{flex-direction:column;gap:0}
.landing .flow__row+.flow__row{margin-top:22px}
.landing .flow__lbl{font-family:"IBM Plex Mono",monospace;font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;margin:0 0 10px}
.landing .flow__chain{display:flex;flex-direction:column;gap:0}
.landing .flow__node{display:flex;align-items:center;gap:10px;padding:11px 14px;border-radius:11px;background:var(--surface-2);font-size:14.5px;font-weight:700;color:var(--fg-2)}
.landing .flow__node--us{background:var(--accent);color:var(--accent-fg)}
.landing .flow__node--src{background:var(--ok-soft);color:var(--ok);border:1px solid var(--ok)}
.landing .flow__node--unknown{background:var(--crit-soft);color:var(--crit);border:1px dashed var(--crit)}
.landing .flow__arrow{width:2px;height:14px;margin:3px 0 3px 22px;background:var(--line)}
.landing .flow__arrow--on{background:var(--accent)}
.landing .flow__note{font-size:13.5px;line-height:1.5;color:var(--fg-2);margin:12px 0 0}

/* P34: zincir paket animasyonu (PAIR — SVG #chain-pkg + mobil .flow), ~6sn dongu.
   Varsayilan: paketler/check gizli (opacity:0), diyagram P32 statik hali. JS
   #chain'e .is-anim ekleyince (reduced-motion degilse) hareket baslar; gorunmez/
   document.hidden'da .is-paused animation-play-state:paused yapar (script.js). */
.landing .chain-pkg,.landing .chain-check{opacity:0}
#chain.is-anim .chain-pkg,#chain.is-anim .chain-check{animation-duration:6s;animation-timing-function:linear;animation-iteration-count:infinite;animation-play-state:running}
#chain.is-anim.is-paused .chain-pkg,#chain.is-anim.is-paused .chain-check{animation-play-state:paused}
#chain.is-anim .chain-pkg--top-main{animation-name:chainTopMain}
#chain.is-anim .chain-pkg--top-refill{animation-name:chainTopRefill}
#chain.is-anim .chain-pkg--bot-main{animation-name:chainBotMain}
#chain.is-anim .chain-pkg--bot-refill{animation-name:chainBotRefill}
#chain.is-anim .chain-check{animation-name:chainCheck}
#chain.is-anim .chain-glow{animation:chainGlow 6s linear infinite;animation-play-state:running}
#chain.is-anim.is-paused .chain-glow{animation-play-state:paused}
@keyframes chainTopMain{
  0%{opacity:0;transform:translateX(0)}
  1.67%{opacity:1;transform:translateX(0)}
  5%{transform:translateX(172px)}
  8.33%{transform:translateX(172px)}
  13.33%{transform:translateX(344px)}
  20%{transform:translateX(344px)}
  25%{transform:translateX(516px)}
  36.67%{transform:translateX(516px)}
  41.67%{transform:translateX(703px);opacity:1}
  46.67%,100%{transform:translateX(703px);opacity:0}
}
@keyframes chainTopRefill{
  0%,49.99%{opacity:0;transform:translateX(0)}
  50%{opacity:1;transform:translateX(0)}
  60%{transform:translateX(-187px)}
  65%,100%{opacity:0;transform:translateX(-187px)}
}
@keyframes chainBotMain{
  0%{opacity:0;transform:translateX(0)}
  1.67%{opacity:1;transform:translateX(0)}
  4.17%{transform:translateX(188px)}
  8.33%{transform:translateX(392px);opacity:1}
  13.33%,100%{transform:translateX(392px);opacity:0}
}
@keyframes chainBotRefill{
  0%,13.32%{opacity:0;transform:translateX(0)}
  13.33%{opacity:1;transform:translateX(0)}
  20%{transform:translateX(-392px)}
  23.33%,100%{opacity:0;transform:translateX(-392px)}
}
@keyframes chainCheck{0%,19.9%,100%{opacity:0}20%{opacity:1}25%{opacity:0}}
@keyframes chainGlow{0%,7.9%,100%{filter:none}8.33%{filter:brightness(1.5)}13.33%{filter:none}}

/* Mobil .flow — ayni P34 dongusu (6sn), varsayilan JS'siz/reduced-motion hali degismez */
#chain.is-anim .flow__row:first-child .flow__arrow{animation:flowArrowPulse 6s linear infinite;animation-play-state:running}
#chain.is-anim.is-paused .flow__row:first-child .flow__arrow{animation-play-state:paused}
#chain.is-anim .flow__row:first-child .flow__arrow:nth-child(2){animation-delay:0s}
#chain.is-anim .flow__row:first-child .flow__arrow:nth-child(4){animation-delay:.8s}
#chain.is-anim .flow__row:first-child .flow__arrow:nth-child(6){animation-delay:1.5s}
#chain.is-anim .flow__row:first-child .flow__arrow:nth-child(8){animation-delay:2.5s}
@keyframes flowArrowPulse{0%,2%{background:var(--accent)}8%,100%{background:var(--line)}}
#chain.is-anim .flow__node--unknown{animation:flowUnknownBlink 1.8s ease-in-out infinite;animation-play-state:running}
#chain.is-anim.is-paused .flow__node--unknown{animation-play-state:paused}
@keyframes flowUnknownBlink{0%,100%{opacity:1}50%{opacity:.55}}
#chain.is-anim .flow__row:last-child .flow__arrow--on{animation:flowArrowFlash 6s linear infinite;animation-play-state:running}
#chain.is-anim.is-paused .flow__row:last-child .flow__arrow--on{animation-play-state:paused}
#chain.is-anim .flow__row:last-child .flow__arrow--on:nth-child(2){animation-delay:0s}
#chain.is-anim .flow__row:last-child .flow__arrow--on:nth-child(4){animation-delay:.25s}
@keyframes flowArrowFlash{0%,3%{filter:brightness(1.6)}10%,100%{filter:none}}
#chain.is-anim .flow__node--src{animation:flowSrcGlow 6s linear infinite;animation-play-state:running}
#chain.is-anim.is-paused .flow__node--src{animation-play-state:paused}
@keyframes flowSrcGlow{0%,7%,100%{filter:none}8%{filter:brightness(1.35)}15%{filter:none}}
.landing .tline{flex-direction:column;gap:0;margin-top:6px}
.landing .tline__i{display:grid;grid-template-columns:58px 1fr;gap:14px;padding:12px 0;border-left:2px solid var(--line);margin-left:8px;padding-left:16px;position:relative}
.landing .tline__i--on{border-left-color:var(--accent)}
.landing .tline__i::before{content:"";position:absolute;left:-7px;top:18px;width:12px;height:12px;border-radius:999px;background:var(--surface);border:3px solid var(--line)}
.landing .tline__i--on::before{background:var(--accent);border-color:var(--accent)}
.landing .tline__y{font-family:"IBM Plex Mono",monospace;font-size:14px;font-weight:600;color:var(--fg-3)}
.landing .tline__i--on .tline__y{color:var(--accent)}
.landing .tline__t{font-size:15px;font-weight:700}
.landing .tline__d{font-size:13.5px;color:var(--fg-2);margin-top:2px}
.landing .tline__i--on .tline__d{color:var(--accent)}

/* P35 §A — etiket sozlugu: buton + role=tooltip (DOM'da her zaman durur, JS'siz de
   metin taranabilir). Masaustu hover/focus CSS ile; mobil dokun-ac .is-open sinifiyla
   (script.js), disari dokunma + Esc kapatir. */
.landing .tagwrap{position:relative;display:inline-flex}
.landing button.tag{border:0;font:inherit;cursor:pointer;margin:0}
.landing .tag:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
/* P36-A: OWN PROVIDE panelle ayni (dolu accent zemin + accent-fg, degismedi).
   INSTANT/NON-DROP/NO REFILL acik temada panel tonlarinda <4.5:1 olcduldu (4.47/
   3.04/3.92) — landing'e ozel koyultulmus metin rengi (--tag-instant-fg vb.),
   panel genelindeki --tag-teal/--ok/--warn'a dokunulmadi. */
.landing .pill--tag-instant{color:var(--tag-instant-fg)}
.landing .pill--ok{color:var(--tag-nondrop-fg)}
.landing .pill--warn{color:var(--tag-norefill-fg)}
.landing .tagtip{position:absolute;top:calc(100% + 7px);left:50%;transform:translateX(-50%);
  width:220px;max-width:60vw;background:var(--fg);color:var(--surface);font-size:12px;font-weight:500;
  line-height:1.45;padding:8px 11px;border-radius:9px;text-align:left;box-shadow:var(--lift);
  opacity:0;visibility:hidden;pointer-events:none;transition:opacity .15s;z-index:30}
.landing .tagwrap:hover .tagtip,.landing .tag:focus + .tagtip,.landing .tagwrap.is-open .tagtip{opacity:1;visibility:visible}

/* P35 §B — hafif reveal: .landing.is-anim JS ekler (reduced-motion'da hic eklenmez),
   JS'siz/reduced-motion'da hicbir hedef opacity:0 degil (asagidaki kural sadece
   .is-anim altinda gecerli). Kardesler arasi 60ms gecikme script.js'te (transition-delay). */
.landing.is-anim .sec__h,.landing.is-anim .feat,.landing.is-anim .kf__r,.landing.is-anim .ch,
.landing.is-anim .sx,.landing.is-anim .ratecard,.landing.is-anim .tline__i,.landing.is-anim .rvcard{
  opacity:0;transform:translateY(12px);transition:opacity .4s ease,transform .4s ease}
.landing.is-anim .sec__h.is-in,.landing.is-anim .feat.is-in,.landing.is-anim .kf__r.is-in,.landing.is-anim .ch.is-in,
.landing.is-anim .sx.is-in,.landing.is-anim .ratecard.is-in,.landing.is-anim .tline__i.is-in,.landing.is-anim .rvcard.is-in{
  opacity:1;transform:translateY(0)}

/* P35 §B — zaman cizelgesi cizimi: SVG accent cizgisi stroke-dashoffset ile 2018->2021
   cizilir (uzunluk 790-40=750), noktalar sirayla dolar. JS'siz/reduced-motion: kural hic
   uygulanmaz -> bugunku statik (tam cizili) hali degismez. */
.landing.is-anim .tline-svg .tline-accent{stroke-dashoffset:750;transition:stroke-dashoffset 1.1s ease}
.landing.is-anim .tline-svg.tl-in .tline-accent{stroke-dashoffset:0}
.landing.is-anim .tline-svg .tline-dot{opacity:0;transform:scale(.4);transform-origin:center;transition:opacity .3s ease,transform .3s ease}
.landing.is-anim .tline-svg .tline-dot:nth-of-type(1){transition-delay:1.15s}
.landing.is-anim .tline-svg .tline-dot:nth-of-type(2){transition-delay:1.3s}
.landing.is-anim .tline-svg .tline-dot:nth-of-type(3){transition-delay:1.45s}
.landing.is-anim .tline-svg.tl-in .tline-dot{opacity:1;transform:scale(1)}

/* P35 §C — RATES kartlari: kendi stili (P32'de gecici .feat odunc alinmisti) */
.landing .rates{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:12px}
@media (max-width:980px){.landing .rates{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:560px){.landing .rates{grid-template-columns:repeat(2,minmax(0,1fr))}}
.landing .ratecard{display:flex;flex-direction:column;gap:3px;padding:16px 14px;border-radius:14px;
  background:var(--surface);border:1px solid var(--line);text-decoration:none;color:inherit;
  transition:transform .16s,border-color .16s,box-shadow .16s}
.landing .ratecard:hover{transform:translateY(-3px);border-color:var(--accent);box-shadow:var(--lift)}
.landing .ratecard__i{width:30px;height:30px;display:grid;place-items:center;background:var(--accent-soft);border-radius:9px;margin-bottom:5px}
.landing .ratecard__i svg{width:16px;height:16px}
.landing .ratecard__p{font-size:14.5px;font-weight:700;color:var(--fg)}
.landing .ratecard__type{font-size:11.5px;color:var(--fg-3)}
.landing .ratecard__price{font-family:"IBM Plex Mono",monospace;font-size:18px;font-weight:700;color:var(--fg);margin-top:6px}
.landing .ratecard__unit{font-size:11px;font-weight:500;color:var(--fg-3);margin-left:2px}
.landing .ratecard__id{font-size:10.5px;color:var(--fg-3);margin-top:3px}

.landing .feats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
@media (max-width:900px){ .landing .feats{grid-template-columns:repeat(2,minmax(0,1fr))} }
@media (max-width:560px){ .landing .feats{grid-template-columns:minmax(0,1fr)} }
.landing .feat{background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:22px;transition:border-color .16s,transform .16s}
.landing .feat:hover{border-color:var(--accent);transform:translateY(-2px)}
.landing .feat__i{width:42px;height:42px;border-radius:12px;display:grid;place-items:center;background:var(--accent-soft);color:var(--accent)}
.landing .feat__i svg{width:20px;height:20px}
.landing .feat__t{font-size:17px;font-weight:700;margin-top:15px}
.landing .feat__d{font-size:14px;color:var(--fg-2);margin-top:6px;line-height:1.5}

.landing .tag{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:7px;font-family:"IBM Plex Mono",monospace;font-size:10.5px;font-weight:600;letter-spacing:.06em}
.landing .tag--own{background:var(--accent-soft);color:var(--accent)}
.landing .tag--ok{background:var(--ok-soft);color:var(--ok)}
.landing .tag--info{background:var(--info-soft);color:var(--info)}
.landing .tag--warn{background:var(--warn-soft);color:var(--warn)}
.landing .tag svg{width:12px;height:12px}

.landing .chan{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
@media (max-width:760px){ .landing .chan{grid-template-columns:minmax(0,1fr)} }
.landing .ch{background:var(--surface);border:1px solid var(--line);border-radius:15px;padding:20px}
.landing .ch svg{width:26px;height:26px}
.landing .ch__t{font-size:16px;font-weight:700;margin-top:13px}
.landing .ch__d{font-size:13.5px;color:var(--fg-2);margin-top:5px;line-height:1.5}
.landing .hl{display:flex;gap:14px;margin-top:14px;padding:22px;border-radius:15px;background:var(--accent-soft)}
.landing .hl svg{width:24px;height:24px;flex:0 0 24px;color:var(--accent);margin-top:2px}
.landing .hl h3{font-size:17px;font-weight:800;color:var(--accent)}
.landing .hl p{font-size:14.5px;color:var(--fg-2);margin-top:6px;line-height:1.5}

.landing .tpinvite{background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:24px;text-align:center}
.landing .tpinvite svg{width:30px;height:30px;margin:0 auto}
.landing .tpinvite__t{font-size:19px;font-weight:800;margin-top:12px}
.landing .tpinvite__d{font-size:14px;line-height:1.55;color:var(--fg-2);margin-top:8px}
.landing .tpinvite__b{width:100%;margin-top:16px}
.landing .tpinvite__n{font-family:"IBM Plex Mono",monospace;font-size:11px;color:var(--fg-3);margin-top:12px}
/* P36-E: Testimonials (#testimonials) — REVIEWS veri gudumlu, uydurma yok. Trustpilot'tan
   AYRI bolum, kartlarda rozet/logo/yildiz yok (puan verisi yok). 4 kart -> masaustu 2x2,
   mobil tek sutun. Reveal efekti diger kartlarla ayni (.rvcard reveal listesinde). */
.landing .rvgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;text-align:left}
@media (max-width:620px){.landing .rvgrid{grid-template-columns:1fr}}
.landing .rvcard{background:var(--surface-2);border:1px solid var(--line);border-radius:14px;padding:18px}
.landing .rvcard__h{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px}
.landing .rvcard__badge{font-family:"IBM Plex Mono",monospace;font-size:10px;font-weight:700;letter-spacing:.04em;padding:3px 8px;border-radius:999px;text-transform:uppercase;background:var(--surface-2);color:var(--fg-3);border:1px solid var(--line)}
.landing .rvcard__date{font-size:11px;color:var(--fg-3)}
.landing .rvcard__text{font-size:14.5px;line-height:1.55;color:var(--fg)}
.landing .rvcard__role{font-weight:500;color:var(--fg-3)}
/* P36.1: yildiz puani — Trustpilot yesili/kare stili KULLANILMAZ, --warn (amber) tonu.
   Yari yildiz: ic svg sabit 15x15, disaridaki .star__fgwrap yuzdeye gore kirpiyor
   (olcek kucultmuyor, sadece gizliyor) — 4.5 gibi kesirli degerler dogru gorunur. */
.landing .rvstars{display:flex;align-items:center;gap:2px;margin-bottom:10px}
.landing .star{position:relative;display:inline-block;width:15px;height:15px;flex:0 0 15px}
.landing .star__bg{position:absolute;top:0;left:0;width:15px;height:15px;fill:var(--line)}
.landing .star__fgwrap{position:absolute;top:0;left:0;height:15px;overflow:hidden}
.landing .star__fg{width:15px;height:15px;fill:var(--warn);display:block}
.landing .rvstars__n{font-family:"IBM Plex Mono",monospace;font-size:11px;color:var(--fg-3);margin-left:4px}
.landing .rvcard__name{font-size:12.5px;font-weight:700;color:var(--fg-2);margin-top:8px}

.landing .seo{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;align-items:start}
@media (max-width:900px){ .landing .seo{grid-template-columns:repeat(2,minmax(0,1fr))} }
@media (max-width:600px){ .landing .seo{grid-template-columns:minmax(0,1fr)} }
.landing .seo details{border:1px solid var(--line);border-radius:13px;background:var(--surface);overflow:hidden}
.landing .seo summary{padding:15px 16px;gap:12px}
.landing .seo summary:hover{background:var(--paper)}
.landing .seo__t{font-size:14.5px;font-weight:700;flex:1}
.landing .seo__b{padding:0 16px 15px;font-size:13.5px;line-height:1.6;color:var(--fg-2)}
.landing .seo__l{display:flex;flex-wrap:wrap;gap:6px;margin-top:11px}
.landing .seo__kw{padding:4px 9px;border-radius:7px;background:var(--surface-2);font-family:"IBM Plex Mono",monospace;font-size:11px;color:var(--fg-2)}
/* P36-C: blok basina tek link (eski her-anahtar-kelime linki kaldirildi, .seo__kw duz metin) */
.landing .seo__see{display:inline-flex;align-items:center;gap:5px;margin-top:12px;font-size:13px;font-weight:700;color:var(--accent);text-decoration:none}
.landing .seo__see:hover{text-decoration:underline}
.landing .seo summary svg.si{width:17px;height:17px;flex:0 0 17px}

.landing .faqgrid{display:grid;grid-template-columns:320px minmax(0,1fr);gap:56px}
@media (max-width:820px){ .landing .faqgrid{grid-template-columns:minmax(0,1fr);gap:26px} }
.landing .rows{border:1px solid var(--line);border-radius:16px;overflow:hidden;background:var(--surface)}
.landing details{border-bottom:1px solid var(--line-soft)}
.landing details:last-child{border-bottom:0}
.landing summary{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:18px 20px;cursor:pointer;list-style:none}
.landing summary::-webkit-details-marker{display:none}
.landing .faq__q{font-size:16px;font-weight:700;flex:1}
.landing .chev{width:10px;height:10px;flex:0 0 10px;border-right:2px solid var(--fg-3);border-top:2px solid var(--fg-3);transform:rotate(135deg);transition:transform .18s}
.landing details[open] .chev{transform:rotate(-45deg)}
.landing .faq__a{padding:0 20px 18px;font-size:14.5px;line-height:1.6;color:var(--fg-2);max-width:64ch}
@media (max-width:560px){
  .landing .faq__q{font-size:15px;line-height:1.4}
  .landing .faq__a{padding:0 16px 16px;font-size:14px}
  .landing summary{padding:15px 16px;gap:12px}
}

.landing .final{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:22px;
  padding:36px;border-radius:20px;background:var(--surface);border:1px solid var(--line);box-shadow:var(--lift)}
.landing .auth-text{font-size:14.5px;line-height:1.65;color:var(--fg-2)}

@media (prefers-reduced-motion: reduce){
  .landing *{animation:none!important;transition:none!important}
  .landing .mq__t{transform:none}
  /* P33: canli panel demosu — JS zaten calismiyor (matchMedia guard), duruma emin olmak icin de statik */
  .landing .shot__row--in{animation:none!important}
  .landing .shot__btn.is-press{transform:none!important;filter:none!important}
  /* P34: zincir paketleri — JS zaten calismiyor (matchMedia guard), .chain-pkg/.chain-check
     zaten opacity:0 varsayilan; burada da aciktan kapatiyoruz */
  .landing .chain-pkg,.landing .chain-check{animation:none!important;opacity:0!important}
  .landing .chain-glow,.landing .flow__arrow,.landing .flow__node--unknown,.landing .flow__node--src{animation:none!important;filter:none!important}
  /* P35: JS zaten .landing.is-anim eklemiyor (matchMedia guard) — reveal/tline-draw kurallari
     hic devreye girmiyor; burada da aciktan statik/gorunur birakiyoruz */
  .landing.is-anim .sec__h,.landing.is-anim .feat,.landing.is-anim .kf__r,.landing.is-anim .ch,
  .landing.is-anim .sx,.landing.is-anim .ratecard,.landing.is-anim .tline__i,.landing.is-anim .rvcard{opacity:1!important;transform:none!important}
  .landing.is-anim .tline-svg .tline-accent{stroke-dashoffset:0!important}
  .landing.is-anim .tline-svg .tline-dot{opacity:1!important;transform:none!important}
}

/* =====================================================================
   KATMAN 9 — SAYFAYA OZGU: Paket 7 (tickets · viewticket · account ·
   refill · refunds · api · affiliates · massorder). Cogu bilesen zaten
   6/9. katmanda (.card .tw table.t .pill .idchip .code .tmsg .grid2
   .orders-* .neworder-single). Burada yalnizca yeni parcalar.
   ===================================================================== */

/* P14-D: yeni bilet formu 1440x800 ilk ekranda submit'e kadar sigsin diye
   sikistirildi — yalnizca #ticketsend kapsaminda (site geneli degismedi). */
#ticketsend .form-control { min-height: 40px; padding: 0 12px; font-size: 15px; }
#ticketsend textarea.form-control { min-height: 0; padding: 9px 12px; } /* rows=4 kendi yuksekligini belirler */
#ticketsend .control-label { margin-bottom: 4px; font-size: 12px; }
#ticketsend .form-group { margin-bottom: 11px; }
#ticketsend .notice-compact { padding: 9px 11px; margin-bottom: 12px; font-size: 12.5px; }
#ticketsend .tickets-uploader { min-height: 38px; }

/* tickets — yönerge kutusu */
.notice-compact{background:var(--crit-soft);border:1px solid var(--crit);border-left:4px solid var(--crit);
  color:var(--crit);font-size:13px;line-height:1.5;padding:11px 13px;border-radius:8px;margin:0 0 16px}
.notice-compact p{margin:0 0 4px}
.notice-compact strong{color:inherit}
.notice-compact .notice-examples{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.notice-compact .notice-examples span{border:1px solid currentColor;background:var(--surface);color:var(--fg-2);
  padding:2px 7px;border-radius:5px;font-family:"IBM Plex Mono",monospace;font-size:11.5px}

/* tickets — panel JS'in doldurdugu yukleyici kabi */
.tickets-uploader{display:block;min-height:44px}
.tickets-uploader:empty::before{content:"";display:block}

.tickets-list-card{padding-bottom:0}
.tickets-text .card__body,.affiliates-text .card__body{font-size:13.5px;color:var(--fg-2);line-height:1.6}

/* viewticket — mesaj akisi */
.tmsg-thread{display:flex;flex-direction:column;gap:12px;background:var(--paper);border-radius:0 0 14px 14px}
.tmsg-thread .tmsg .message{white-space:pre-wrap;word-break:break-word}
.tmsg-thread .tmsg__files a{color:inherit;text-decoration:underline;text-decoration-style:dotted;font-family:"IBM Plex Mono",monospace;font-size:12px}
.viewticket .ticket-title{font-size:16px;font-weight:700}
.viewticket__reply{align-self:stretch;margin-top:4px}
.viewticket__reply .panel-border-top{border-top:1px solid var(--line);padding-top:14px}

/* account — kart yığını + anahtar satırı */
.account-tabs{margin-bottom:16px}
.account-card + .account-card{margin-top:16px}
.account-card .card__body{padding:20px}
.account-key{display:flex;gap:8px;align-items:stretch}
.account-key .form-control{flex:1;min-width:0}
.account-key .btn{flex-shrink:0}

/* api — dokuman tablolari */
.api-doc .center-big-content-block{max-width:none}
.api-table{font-size:13.5px}
.api-table td,.api-table th{padding:10px 14px;border-bottom:1px solid var(--line-soft);vertical-align:top}
.api-table .width-40{width:40%;color:var(--fg-2)}
.api-method{font-size:15px;font-weight:700;margin:22px 0 10px}
.api-type-switch{margin:0 0 12px}
.api-doc .code{white-space:pre-wrap;word-break:break-word}

@media (max-width:820px){
  .account-key{flex-direction:column}
}

/* =====================================================================
   KATMAN 9 — SAYFAYA OZGU: Paket 8 (auth ailesi + icerik ailesi)
   .auth karti + .prose 6. katmanda. Burada yalnizca sayfa parcalari.
   ===================================================================== */
.auth__title{font-size:19px;font-weight:800;margin:0 0 14px}
.landing .auth-page .auth .btn{min-height:50px}

/* blog liste */
.blog-page{max-width:1180px}
.blog-intro{margin-bottom:16px;max-width:760px}
.blog-grid{display:grid;gap:16px;grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}
.blog-card{display:flex;flex-direction:column;overflow:hidden}
.blog-card__img{display:block;aspect-ratio:16/9;overflow:hidden;background:var(--surface-2)}
.blog-card__img img{width:100%;height:100%;object-fit:cover}
.blog-card .card__body{display:flex;flex-direction:column;gap:10px;flex:1}
.blog-card__t{font-size:16px;font-weight:700;line-height:1.3}
.blog-card__t a:hover{color:var(--accent)}
.blog-card__x{font-size:13.5px;color:var(--fg-2);max-height:5.4em;overflow:hidden;
  -webkit-mask-image:linear-gradient(180deg,#000 62%,transparent);mask-image:linear-gradient(180deg,#000 62%,transparent)}
.blog-card .btn{align-self:flex-start;margin-top:auto}
@media (max-width:560px){ .blog-grid{grid-template-columns:minmax(0,1fr)} }

.blogpost__img{width:100%;border-radius:14px;margin-bottom:6px}

/* notifications tablosu */
.notif-table th,.notif-table td{text-align:left}
.notif-table thead th:not(:first-child),.notif-table tbody td:not(:first-child){text-align:center;width:1%}
.notif-cell{display:inline-flex;align-items:center;justify-content:center;margin:0}
.notif-cell input[type="checkbox"]{width:18px;height:18px;accent-color:var(--accent);cursor:pointer}
.notif-cell input:disabled{cursor:not-allowed;opacity:.5}

/* updates */
.updates-bar .dropdown{margin-right:auto}
.pill--wrap{white-space:normal;text-align:left;line-height:1.35}

/* =====================================================================
   KATMAN 8 EKI — newpage (share-earn / ai-support). ".landing" scope'unda.
   Değerler mockup/share-earn.html + mockup/ai-support.html'den.
   ===================================================================== */
.landing .follow{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:20px;
  padding:32px;border-radius:20px;background:var(--surface);border:1px solid var(--line);box-shadow:var(--lift)}
@media (max-width:820px){ .landing .follow{grid-template-columns:minmax(0,1fr);padding:24px} }
.landing .follow__t{font-size:clamp(24px,4.5vw,34px);font-weight:800;margin-top:12px;letter-spacing:-.02em}
.landing .follow__d{font-size:15.5px;line-height:1.6;color:var(--fg-2);margin-top:12px;max-width:46ch}
.landing .follow__b{display:flex;flex-wrap:wrap;gap:10px;margin-top:20px}
.landing .follow__btn{display:inline-flex;align-items:center;gap:11px;padding:12px 16px;border-radius:12px;
  border:1px solid var(--line);background:var(--paper);transition:border-color .15s,transform .15s}
.landing .follow__btn:hover{border-color:var(--accent);transform:translateY(-1px)}
.landing .follow__btn svg{width:22px;height:22px}
.landing .follow__btn b{display:block;font-size:14.5px;font-weight:700}
.landing .follow__btn em{display:block;font-style:normal;font-family:"IBM Plex Mono",monospace;
  font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--fg-3);margin-top:2px}
.landing .follow__r{background:var(--paper);border-radius:16px;padding:22px}
.landing .follow__k{font-family:"IBM Plex Mono",monospace;font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--fg-3);margin:0}
.landing .follow__s{list-style:none;margin:14px 0 0;padding:0;display:flex;flex-direction:column;gap:12px}
.landing .follow__s li{display:grid;grid-template-columns:26px 1fr;gap:11px;align-items:start;font-size:14.5px;line-height:1.45}
.landing .follow__s span{display:grid;place-items:center;width:26px;height:26px;border-radius:8px;
  background:var(--accent);color:var(--accent-fg);font-family:"IBM Plex Mono",monospace;font-size:12px;font-weight:700}
.landing .follow__n{font-size:13px;line-height:1.55;color:var(--fg-3);margin-top:16px;padding-top:14px;border-top:1px solid var(--line)}

.landing .steps{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}
@media (max-width:900px){ .landing .steps{grid-template-columns:repeat(2,minmax(0,1fr))} }
@media (max-width:520px){ .landing .steps{grid-template-columns:minmax(0,1fr)} }
.landing .step{position:relative;background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:24px}
.landing .step__n{display:grid;place-items:center;width:34px;height:34px;border-radius:11px;
  background:var(--accent);color:var(--accent-fg);font-weight:800;font-size:15px;font-family:"IBM Plex Mono",monospace}
.landing .step__t{font-size:17px;font-weight:800;margin-top:16px}
.landing .step__d{font-size:14px;line-height:1.55;color:var(--fg-2);margin-top:7px}

.landing .tasks{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;align-items:start}
@media (max-width:1000px){ .landing .tasks{grid-template-columns:repeat(2,minmax(0,1fr))} }
@media (max-width:640px){ .landing .tasks{grid-template-columns:minmax(0,1fr)} }
.landing .tk{display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--line);
  border-radius:18px;padding:22px;transition:border-color .16s,transform .16s,box-shadow .16s}
.landing .tk:hover{border-color:var(--accent);transform:translateY(-3px);box-shadow:var(--lift)}
.landing .tk[hidden]{display:none!important}
.landing .tk__h{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.landing .tk__p{padding:4px 11px;border-radius:999px;font-family:"IBM Plex Mono",monospace;font-size:10.5px;font-weight:600;letter-spacing:.05em}
.landing .tk__p--rd{background:rgba(255,69,0,.13);color:#D93900}
.landing .tk__p--qr{background:rgba(185,32,32,.13);color:#B92020}
.landing .tk__p--md{background:var(--surface-2);color:var(--fg)}
.landing .tk__p--yt{background:rgba(196,48,43,.13);color:var(--yt)}
.landing .tk__p--bhw{background:rgba(36,43,69,.12);color:var(--fg)}
.landing .tk__p--x{background:rgba(26,26,26,.1);color:var(--tw)}
.landing .tk__p--tg{background:rgba(31,127,191,.13);color:var(--tg)}
.landing .tk__t{font-size:17.5px;font-weight:800;margin-top:15px;line-height:1.25}
.landing .tk__d{font-size:14px;line-height:1.55;color:var(--fg-2);margin-top:9px;flex:1}
.landing .tk__m{display:flex;gap:20px;margin:16px 0 0;padding:14px 0;border-top:1px solid var(--line-soft);border-bottom:1px solid var(--line-soft)}
.landing .tk__m dt{font-family:"IBM Plex Mono",monospace;font-size:9.5px;letter-spacing:.11em;text-transform:uppercase;color:var(--fg-3)}
.landing .tk__m dd{margin:3px 0 0;font-size:14.5px;font-weight:700}
.landing .tk__r{color:var(--ok);font-size:17px!important}
.landing .tk__n{font-size:12.5px;line-height:1.5;color:var(--fg-3);margin-top:13px}
.landing .tk__req{display:flex;align-items:center;gap:7px;margin:12px 0 0;padding-top:11px;border-top:1px dashed var(--line);
  font-family:"IBM Plex Mono",monospace;font-size:11px;font-weight:600;letter-spacing:.05em;color:var(--accent)}
.landing .tk__req svg{width:14px;height:14px;flex:0 0 14px}
.landing .tk__a{display:flex;gap:8px;margin-top:16px}
.landing .tk__a .btn{flex:1}

.landing .ruleband{display:flex;gap:14px;padding:20px 22px;margin-bottom:20px;border-radius:16px;background:var(--accent-soft);border:1px solid var(--accent)}
.landing .ruleband > svg{width:26px;height:26px;flex:0 0 26px;color:var(--accent);margin-top:2px}
.landing .ruleband__t{font-size:17.5px;font-weight:800;color:var(--accent);margin:0}
.landing .ruleband__d{font-size:14.5px;line-height:1.55;color:var(--fg-2);margin:8px 0 0}

.landing .bld{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:18px;align-items:start}
@media (max-width:800px){ .landing .bld{grid-template-columns:minmax(0,1fr)} }
.landing .bld__form,.landing .bld__out{background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:24px}
.landing .bld__url{display:block;min-height:52px;margin-top:9px;padding:15px;border-radius:12px;background:var(--paper);
  border:1px solid var(--line);font-size:12.5px;line-height:1.6;color:var(--fg);word-break:break-all}

.landing .rulegrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
@media (max-width:800px){ .landing .rulegrid{grid-template-columns:minmax(0,1fr)} }
.landing .rulecol{border:1px solid var(--line);border-radius:18px;padding:24px;background:var(--surface)}
.landing .rulecol--ok{border-left:3px solid var(--ok)}
.landing .rulecol--no{border-left:3px solid var(--crit)}
.landing .rulecol__t{display:flex;align-items:center;gap:9px;font-size:17px;font-weight:800}
.landing .rulecol__t svg{width:19px;height:19px}
.landing .rulecol--ok .rulecol__t svg{color:var(--ok)}
.landing .rulecol--no .rulecol__t svg{color:var(--crit)}
.landing .rulelist{display:flex;flex-direction:column;gap:11px;margin-top:16px;padding:0;list-style:none}
.landing .rulelist li{position:relative;padding-left:17px;font-size:14px;line-height:1.55;color:var(--fg-2)}
.landing .rulelist li::before{content:"";position:absolute;left:0;top:9px;width:5px;height:5px;border-radius:999px;background:var(--fg-3)}

/* ai-support kanal kartı ekleri */
.landing .ch__b{margin-top:12px;padding-top:12px;border-top:1px solid var(--line-soft);font-size:11.5px;color:var(--fg-3);line-height:1.5}
.landing .ch__l{display:flex;flex-wrap:wrap;gap:8px;margin:13px 0 0;padding-top:12px;border-top:1px solid var(--line-soft)}
.landing .ch__l a{display:inline-flex;align-items:center;gap:7px;padding:7px 12px;border-radius:9px;border:1px solid var(--line);background:var(--paper);font-size:13px;font-weight:600}
.landing .ch__l a:hover{border-color:var(--accent);color:var(--accent)}
.landing .ch__l svg{width:15px;height:15px}

/* =====================================================================
   KATMAN 10 — RTL. Mekanizma: layout.twig <html dir="rtl"> (site['rtl'])
   + [dir="rtl"] altinda fiziksel deger donusumleri. Sablonlar 12 .rtl-*
   sinifi basiyor (reference-united/css/bootstrap.css 7098-7299) — hepsi
   burada tanimli. Yon bildiren ikonlar (chevron, ok) aynalanir; marka /
   platform ikonlari ve diyagram SVG'leri aynalanmaz. Sayilar / ID / fiyat
   / kod: direction:ltr + unicode-bidi:isolate.
   ===================================================================== */

/* ---- Sablonlarin bastigi 12 .rtl-* sinifi (referans davranisi) ---- */
.rtl-form{direction:rtl}
.rtl-form input,.rtl-form textarea,.rtl-form select{direction:rtl;text-align:right}
.rtl-form .close{float:left}
.rtl-form .forgot-password{right:auto;left:0}
.rtl-content{direction:rtl;text-align:right}
.rtl-content h1,.rtl-content h2,.rtl-content h3,.rtl-content h4,.rtl-content h5,.rtl-content h6{text-align:right}
.rtl-content ul,.rtl-content ol,.rtl-ul{padding-right:1em;padding-left:0;text-align:right;direction:rtl}
.rtl-table{direction:rtl}
.rtl-table th,.rtl-table td{text-align:right}
.rtl-h{direction:rtl;text-align:right}
.rtl-btn{margin-left:auto;margin-right:0}
.rtl-alert{direction:rtl;text-align:right}
.rtl-alert .close{float:left}
.rtl-pagination{direction:rtl}
.rtl-nav{direction:rtl}
.rtl-search{direction:rtl}
.rtl-modal{direction:rtl}
.rtl-modal .close{float:left}
.rtl-modal .modal-footer{text-align:left}

/* ---- [dir="rtl"] genel ---- */
[dir="rtl"] .close{float:left}

/* sayilar / kimlik / fiyat / kod: LTR izole (rakam ve sembol sirasi bozulmasin) */
[dir="rtl"] .num,
[dir="rtl"] .idchip,
[dir="rtl"] .mono,
[dir="rtl"] .code,
[dir="rtl"] pre,
[dir="rtl"] .prose pre,
[dir="rtl"] .prose code,
[dir="rtl"] .bld__url,
[dir="rtl"] #charge,
[dir="rtl"] #api_key,
[dir="rtl"] #price,
[dir="rtl"] .top__bal,
[dir="rtl"] .bal__val{ direction:ltr; unicode-bidi:isolate; }
[dir="rtl"] .code,[dir="rtl"] pre,[dir="rtl"] .bld__url{ text-align:left; }

/* yon bildiren ikonlar aynalanir */
[dir="rtl"] .chev{ transform:rotate(-135deg); }
[dir="rtl"] details[open] .chev{ transform:rotate(45deg); }
[dir="rtl"] .btn > svg,
[dir="rtl"] .cta a > svg,
[dir="rtl"] .final .btn > svg,
[dir="rtl"] .side__item > svg:first-child{ transform:scaleX(-1); }
/* marka / platform / Google / diyagram / arac ikonlari AYNALANMAZ */
[dir="rtl"] .gbtn svg,
[dir="rtl"] .follow__btn svg,
[dir="rtl"] .ch__l svg,
[dir="rtl"] .plat svg,
[dir="rtl"] .chip svg,
[dir="rtl"] .feat__i svg,
[dir="rtl"] .tag svg,
[dir="rtl"] svg.diag-d,
[dir="rtl"] .band-dark svg,
[dir="rtl"] .hero__mesh,
[dir="rtl"] .pill__dot{ transform:none; }

/* ---- KABUK (layout) ---- */
[dir="rtl"] .side{ border-right:0; border-left:1px solid var(--line); }
[dir="rtl"] .side__count,[dir="rtl"] .side__soon{ margin-left:0; margin-right:auto; }
[dir="rtl"] .top__act{ margin-left:0; margin-right:auto; }
/* P15-D: .nav__r artık margin-left:auto TAŞIMIYOR (.nav__menu'de
   justify-content:space-between var) — bu ekseni RTL'de kendiliğinden
   aynalıyor, ayrı bir [dir=rtl] kuralı GEREKMİYOR. */
[dir="rtl"] .nav__langn{ margin-left:0; margin-right:4px; }
@media (max-width:820px){
  [dir="rtl"] .side{ left:auto; right:0; transform:translateX(100%); }
  [dir="rtl"] body.nav-open .side{ transform:translateX(0); }
}

/* ---- Tablolar / listeler ---- */
[dir="rtl"] table.t thead th{ text-align:right; }
[dir="rtl"] table.t tbody td::before{ /* mobil kart etiketi */ }
[dir="rtl"] .notif-table th,[dir="rtl"] .notif-table td{ text-align:right; }
[dir="rtl"] .prose th,[dir="rtl"] .prose td{ text-align:right; }
[dir="rtl"] .pill--wrap{ text-align:right; }

/* ---- Arama kutusu ---- */
[dir="rtl"] .search svg{ left:auto; right:14px; }
[dir="rtl"] .search .inp,[dir="rtl"] .search .form-control{ padding-left:14px; padding-right:42px; }

/* ---- neworder / #fields ---- */
[dir="rtl"] #fields select.form-control{
  padding-right:14px; padding-left:40px;
  background-position: 20px 21px, 15px 21px;
}
[dir="rtl"] #fields input[type="checkbox"]{ margin-right:0; margin-left:9px; }

/* ---- addfunds ödeme kartlari ---- */
[dir="rtl"] .pm__i{ text-align:right; }
[dir="rtl"] .pm__check{ right:auto; left:11px; }
[dir="rtl"] .pm__n{ padding-right:0; padding-left:26px; }

/* ---- Sayfalama / pager ---- */
[dir="rtl"] .pager__n{ margin-left:0; margin-right:auto; }
[dir="rtl"] .orders-pager,[dir="rtl"] .services-pager{ justify-content:flex-start; }
[dir="rtl"] .orders-search,[dir="rtl"] .services-bar__active{ margin-left:0; margin-right:auto; }
[dir="rtl"] .updates-bar .dropdown{ margin-right:0; margin-left:auto; }

/* ---- Şifre göster/gizle ---- */
[dir="rtl"] .pw-field .form-control{ padding-right:15px; padding-left:52px; }
[dir="rtl"] .pw-toggle{ right:auto; left:6px; }

/* ---- .prose ---- */
[dir="rtl"] .prose{ text-align:right; }
[dir="rtl"] .prose ul,[dir="rtl"] .prose ol{ padding-left:0; padding-right:1.4em; }
[dir="rtl"] .prose blockquote{ border-left:0; border-right:3px solid var(--accent); border-radius:10px 0 0 10px; }

/* ---- tickets uyari kutusu ---- */
[dir="rtl"] .notice-compact{ border-left:1px solid var(--crit); border-right:4px solid var(--crit); }

/* ---- account anahtar satiri (LTR icerik, RTL yerlesim) ---- */
[dir="rtl"] .account-key #api_key{ text-align:left; }

/* ---- Select2 (panel data-select-dir="rtl" ile kendi RTL'sini uygular;
   burada yalnizca metin hizasi) ---- */
[dir="rtl"] .select2-selection__rendered{ text-align:right; }

/* ---- Landing (pazarlama) ---- */
[dir="rtl"] .landing{ text-align:right; }
[dir="rtl"] .landing .lede{ text-align:right; }
[dir="rtl"] .landing .cmp th,[dir="rtl"] .landing .cmp td{ text-align:right; }
[dir="rtl"] .landing .rulelist li{ padding-left:0; padding-right:17px; }
[dir="rtl"] .landing .rulelist li::before{ left:auto; right:0; }
[dir="rtl"] .landing .rulecol--ok{ border-left:1px solid var(--line); border-inline-start:3px solid var(--ok); }
[dir="rtl"] .landing .rulecol--no{ border-left:1px solid var(--line); border-inline-start:3px solid var(--crit); }
[dir="rtl"] .landing .sx__ghost{ right:auto; left:-12px; }
[dir="rtl"] .landing .follow__s li{ /* grid 26px 1fr — auto RTL */ }
[dir="rtl"] .landing .cmp__cap,[dir="rtl"] .landing .cmp__note{ text-align:right; }

/* =====================================================================
   KATMAN 11 — P11 CANLI HATA TURU (tema 11 Eylul'de aktif, olculdu)
   Madde 4: sol menu grup ikonu · 5: mobil ust cubuk tasmasi ·
   6: services aciklama + kaydirma kabi · 7: orders tarih hucresi.
   ===================================================================== */

/* --- 4: sidebar grup ikonu (menu['icon'] bos -> yol tabanli inline SVG) --- */
.side__ico {
  width: 17px; height: 17px; flex: 0 0 17px;
  display: inline-flex; align-items: center; justify-content: center;
  font-size: 15px; line-height: 1;
}

/* --- 5: mobil (<=820) ust cubuk — 375'te ~180px yatay tasiyordu, burger
   gorunmuyordu. .top__act ikinci satira sarar; hicbir sey cekmeceye
   tasinmaz (tek #currencies-list kancasi bozulmaz), sadece dizilim. --- */
.side__logout-mobile { display: none; }
@media (max-width: 820px) {
  .top { min-height: 0; }
  .top__in { flex-wrap: nowrap; padding: 10px 14px; }
  .top__burger { order: 0; }
  .top__titles { order: 1; flex: 1 1 auto; min-width: 0; }
  .top__ttl { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  /* P19: Goktug'un istegi — ust cubuk artik ikinci satira sarmiyor. Dil
     secici (.top__lang) ve Account/Logout (.top__acc) mobilde kalkiyor;
     "My account" zaten sol cekmecede var, Logout .side__logout-mobile ile
     cekmeceye tasindi (asagida). Geriye yalnizca para birimi rozeti + tema
     dugmesi kaliyor, burger ile AYNI satirda hizali.
     P20 duzeltmesi: bu kural DAHA ONCE ".side__logout-mobile{display:none}"
     satirinin ONUNDE idi -> ayni ozguullukte SONRAKI kural (none) her zaman
     kazaniyordu, Logout hicbir genislikte gorunmuyordu. Sira degisti. */
  .top__act { order: 2; margin-left: 0; flex: 0 0 auto; flex-wrap: nowrap; justify-content: flex-end; gap: 6px; }
  .top__act .badge { max-width: 90px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .top__cur .dropdown-menu { max-width: calc(100vw - 28px); }
  .top__lang, .top__acc { display: none; }
  .side__logout-mobile { display: flex; }
}

/* --- 6: services — aciklama sutunu tam metni satir ici basiyordu (satir
   716px). 2 satir clamp. Ayrica ">=821px .tw{overflow:visible}" servisleri
   sayfaya tasiriyordu -> orders gibi kendi yatay kaydirma kabi. --- */
/* P11.1'de 2 satir clamp'ti; P12-C ile "Details" butonu + modal oldu.
   (clamp CSS kaldirildi; buton stilleri KATMAN 12'de) */
.service-description { vertical-align: top; white-space: nowrap; }
@media (min-width: 821px) {
  .services-table-card > .tw { overflow-x: auto; overflow-y: visible; }
  table.t#service-table thead th { top: 0; }
  table.t#service-table .t__cat td { top: var(--thead-h); }
}

/* --- 7: orders — tarih hucresi 3 satira kiriliyordu --- */
.orders-table tbody td.mono { white-space: nowrap; }

/* =====================================================================
   KATMAN 12 — P12 canlı düzeltme + Göktuğ istekleri
   BS3-JS runtime (jQuery 1.12.4, Popper yok). Tüm renkler mevcut token.
   ===================================================================== */

/* ---- A: neworder select2 GÖRÜNÜRLÜĞÜ ----
   Panel select2'nin kendi CSS'ini yüklemiyor. Açık dropdown kabı
   (body > .select2-container--open) 0×0 + overflow:hidden ile
   .select2-dropdown'ı kırpıyordu. Ayrıca dropdown ve sonuç <ul>'u
   'dropdown-menu' sınıfı taşıyor -> BS4 .dropdown-menu{display:none}. */
body > .select2-container,
body > .select2-container--open {
  overflow: visible !important;
  min-width: 0;
  z-index: 1060;
}
.select2-dropdown {
  display: block;
  position: absolute;
  left: 0;
  z-index: 1060;
  min-width: 220px;
  box-sizing: border-box;
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: 12px;
  box-shadow: var(--shadow); /* P13-C: --shadow-lift cok agirdi, ince golge */
  overflow: hidden;
}

/* P13-C: panelin select2'si kendi ~28px yuksek kutusunu getiriyor; bizim
   .form-control 48px'e gore hizasiz kaliyordu (metin dikey ortali degildi).
   Secili kutu + kategori/servis alanlarinin ikisi de .select2-selection--single. */
.select2-container .select2-selection--single {
  height: 48px !important;
  display: flex !important; align-items: center;
  border-radius: 11px !important;
  border-color: var(--line) !important;
  background-color: var(--paper) !important;
}
.select2-selection--single .select2-selection__rendered {
  display: flex !important; align-items: center;
  line-height: normal !important; color: var(--fg) !important;
  padding-left: 14px !important; padding-right: 34px !important;
}
.select2-selection--single .select2-selection__arrow {
  height: 46px !important; top: 0 !important; right: 6px !important;
}
.select2-container--open .select2-selection--single { border-color: var(--accent) !important; }
.select2-dropdown--above { border-radius: 12px 12px 0 0; }
.select2-dropdown--below { border-radius: 0 0 12px 12px; margin-top: 2px; }
/* 'dropdown-menu' sınıfını da taşıyan düğümleri açıkça görünür yap. */
.select2-container--open .select2-dropdown,
.select2-container--open .select2-dropdown.dropdown-menu,
.select2-container--open .select2-results__options,
.select2-container--open .select2-results__options.dropdown-menu { display: block; }

.select2-search--dropdown { display: block; padding: 8px; }

/* P20: panelin ".input-wrapper__prepend" büyüteç ikonu (servis/kategori
   üstündeki hızlı arama kutusu) ile input arasında boşluk yoktu — ikon
   (left:12px, 19px genişlik) ile placeholder metni aynı x'te başlayıp
   üst üste biniyordu. Yalnızca ikonun HEMEN yanındaki input/select2 kutusunu
   etkiler — kategori/servis select2'leri (ikon yok) dokunulmaz. */
.input-wrapper__prepend + input,
.input-wrapper__prepend + .select2-selection { padding-left: 40px !important; }
.select2-search--dropdown.select2-search--hide { display: none; }
.select2-search__field {
  width: 100%; min-height: 38px; padding: 0 12px; box-sizing: border-box;
  border: 1px solid var(--line); border-radius: 9px;
  background: var(--paper); color: var(--fg); font: inherit; font-size: 14px;
}
.select2-search__field:focus { outline: none; border-color: var(--accent); }

.select2-results { display: block; }
.select2-results__options {
  list-style: none; margin: 0; padding: 4px;
  max-height: 320px; overflow-y: auto;
}
.select2-results__option {
  padding: 6px 10px !important; border-radius: 8px; cursor: pointer;
  color: var(--fg-2); font-size: 14px; font-weight: 400; line-height: 1.35;
  display: flex !important; align-items: center !important; gap: 9px;
  white-space: normal; word-break: break-word; /* P13-C: sonuc satiri sarmali, kesilmiyor */
}
.select2-results__option > a {
  color: inherit; text-decoration: none; padding: 0 !important; /* P20: panelin kendi <a> dolgusu (8px 12px)
    li'nin dolgusuyla ÇAKIŞIYOR, tek satır ~53px'e çıkıyordu — burada sıfırlanıp yalnızca
    li'nin (yukarıda küçültülmüş) dolgusu kalıyor, kategori/servis listesi sıkışıyor */
  display: flex !important; align-items: center !important; gap: 9px; width: 100%;
  /* P25 kok neden: panelin kendi vendor CSS'i `.select2-results__option{display:block}`
     ve `.select2-results__option a{display:block;padding:3px 20px}` tasiyor — AYNI
     ozgullukte (option: 1 sinif; a: 1 sinif+1 tip = ikisi de esit). Yukleme sirasina
     gore bazen panel kazanip TUM flex/align-items/gap etkisiz kaliyordu (ikon ustte,
     metin ortada/altta gibi goruntuluyordu — "kaymalar" bildirimi). !important ile
     kesinlestirildi. */
}
/* P22 — P21'de align-items:flex-start GENEL varsayilan yapilmisti; bu, sadece
   servis listesinde (uzun adlar sarar) istenen bir davranisti ama kategori
   dahil TÜM select2 ikon+metin listelerini (baska sayfalardaki benzer alanlar
   dahil) etkiledi — Goktug "istisnasiz hepsi asagi kayiyor" olarak bildirdi.
   Duzeltme: varsayilan tekrar "center" (yukarida); servis rozeti icin FLEX
   DEGIL float kullanilir (asagida P26) — flex, servis satirinin ic yapisiyla
   (rozet + " - " metin dugumu + ad span'i + " - $fiyat" metin dugumu, HEPSI
   <a>'nin dogrudan cocugu) uyusmuyordu. */
/* P26 kok neden — Goktug "servis listesini kontrol ettin mi" diye sorunca
   canlida bulundu: servis <a>'sinin icerigi TEK bir "paragraf" (rozet + ' - '
   + ad + ' - $fiyat', son ikisi duz metin dugumu, span DEGIL). display:flex
   (P25) bu ayri metin dugumlerini AYRI flex ogeleri olarak satira diziyor —
   fiyat metni ("- $0.02 per 1000") dar bir sutuna sikisip harf harf sarıyordu.
   Cozum: <a> tekrar display:block (dogal metin akisi, hepsi TEK paragraf
   gibi sarılır); rozet float:left ile sol-uste "iliştirilir", metnin geri
   kalani (ad + fiyat) rozetin etrafinda/altinda normal sekilde akar — rozet
   kac satir surerse sursun HEP ilk satirin basinda sabit kalir (float'in
   dogasi geregi, flex'e gerek kalmadan). */
[id$="-service-results"] .select2-results__option > a { display: block !important; }
[id$="-service-results"] .select2-selection__id { float: left; margin-right: 9px; }
/* Kategori listesinde uzun adlar sarip ikonu asagi itiyordu; kategori
   (servisin aksine) tek satirda kalip tasan metni "…" ile kesmeli. Yalniz
   kategori sonuc listesine (id sonu "-category-results") uygulanir.
   P24 kok neden: panelin kendi vendor CSS'i (bom82...) `.select2-container
   .select2-selection__text{display:inline}` tasiyor — AYNI ozgullukte
   (2 sinif) bizim kuralimizla; hangisinin kazandigi SADECE dosya YUKLEME
   SIRASINA bagliydi, bu yuzden bazen calisiyor bazen calismiyordu ("kaymalar
   var" bildirimi). !important ile kesinlestirildi — sira artik onemsiz. */
[id$="-category-results"] .select2-selection__text {
  white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important;
  display: block !important; min-width: 0 !important;
}
/* P13-C: hover/klavye odagi — norotr, agir degil */
.select2-results__option.active,
.select2-results__option--highlighted { background: var(--surface-2); color: var(--fg); }
/* P13-C: gercekten SECILI olan servis — ince sol cizgi + acik zemin, kalin degil */
.select2-results__option[aria-selected="true"] {
  background: var(--accent-soft); color: var(--accent); font-weight: 400;
  border-left: 2px solid var(--accent); padding-left: 8px;
}
.select2-results__message { padding: 10px; color: var(--fg-3); font-size: 13px; }
.select2-selection__icon { flex: 0 0 auto; display: inline-flex; align-items: center; }
.select2-selection__icon img { max-width: 18px; max-height: 18px; }
[dir="rtl"] .select2-dropdown { left: auto; right: 0; }
[dir="rtl"] .select2-results__option,
[dir="rtl"] .select2-results__option > a { flex-direction: row-reverse; }

/* ---- B/C: neworder — seçili servisin etiket rozetleri.
   P13-C: ayrı kart + ad tekrarı kaldırıldı; #service_description içinde
   .panel-body'nin KARDEŞİ (aciklama biter bitmez rozetler baslar). ---- */
.neworder-tags { display: flex; flex-wrap: wrap; gap: 5px; margin-top: 10px; }
.neworder-tags:empty { display: none; margin-top: 0; }

/* ---- C: services — Details butonu + modal, ayrı Tags sütunu ---- */
.svc-details-btn {
  min-height: 30px; padding: 0 12px; border-radius: 8px;
  border: 1px solid var(--line); background: var(--surface);
  font: inherit; font-size: 12.5px; font-weight: 600; color: var(--fg-2);
  cursor: pointer; white-space: nowrap;
}
.svc-details-btn:hover { border-color: var(--accent); color: var(--accent); }
/* P14-B: ayrı Tags sütunu kalktı — etiketler artık .service-name hücresinde,
   adın altında (bkz. "servis adı altında etiketler" bloğu, katman 9). */

/* Native <dialog> — BS3-JS bağımsız, en sağlam. JS yoksa buton no-op. */
dialog.svc-modal {
  border: 1px solid var(--line); border-radius: 16px; padding: 0;
  max-width: 520px; width: calc(100vw - 40px);
  background: var(--surface); color: var(--fg);
  box-shadow: var(--shadow-lift);
}
dialog.svc-modal::backdrop { background: rgba(10, 12, 24, .5); }
.svc-modal__head {
  display: flex; align-items: center; justify-content: space-between; gap: 12px;
  padding: 15px 18px; border-bottom: 1px solid var(--line-soft);
}
.svc-modal__ttl { font-size: 15.5px; font-weight: 700; }
.svc-modal__x {
  width: 32px; height: 32px; border: 0; border-radius: 8px;
  background: transparent; color: var(--fg-2); font-size: 20px; cursor: pointer;
}
.svc-modal__x:hover { background: var(--surface-2); color: var(--fg); }
.svc-modal__body {
  padding: 16px 18px; font-size: 13.5px; line-height: 1.6; color: var(--fg-2);
  max-height: 60vh; overflow-y: auto;
}

/* ---- D: orders — seçim çubuğu, link <a>, kopyala, çip renkleri ---- */
.orders-select-bar {
  display: flex; align-items: center; gap: 12px; flex-wrap: wrap;
  padding: 12px 20px; border-bottom: 1px solid var(--line-soft);
  background: var(--accent-soft);
}
.orders-select-bar[hidden] { display: none !important; }
.orders-select-bar__n { font-size: 13.5px; font-weight: 700; color: var(--accent); }
.th-pick, .td-pick { width: 34px; text-align: center; }
.orders-pick, .orders-pick-all { width: 16px; height: 16px; accent-color: var(--accent); cursor: pointer; }
.orders-link-cell { display: inline-flex; align-items: center; gap: 6px; max-width: 100%; }
.orders-link-cell a.cut { color: var(--info); text-decoration: none; }
.orders-link-cell a.cut:hover { text-decoration: underline; }
.mini-copy {
  flex: 0 0 auto; width: 26px; height: 26px; padding: 0;
  border: 1px solid var(--line); border-radius: 7px; background: var(--surface);
  color: var(--fg-3); cursor: pointer; display: inline-grid; place-items: center;
}
.mini-copy:hover { border-color: var(--accent); color: var(--accent); }
.mini-copy svg { width: 13px; height: 13px; }
.mini-copy.is-done { border-color: var(--ok); color: var(--ok); }
.orders-table .idchip { background: var(--accent); color: var(--accent-fg); font-size: 12px; } /* P13-F: 11px->12px */
.svc-id-copy {
  border: 0; background: transparent; font: inherit; cursor: pointer; padding: 0;
}

/* ---- E: addfunds özet bandı (Balance / Spent / Discount / Level) — P13.1-J'de
   .af-pod / .af-extra'ya taşındı, bkz. yukarıda "addfunds (P13.1-J)" bloğu. ---- */

/* ---- F: affiliates — kartlar tam genişlik, istatistik dar ekranda kaydırma ----
   P14-F kök neden: .neworder-single (max-width:820px, form sayfaları için)
   .page--wide'ın max-width:none'ini ARKADAN EZİYORDU — sarmalayıcı
   .affiliates-wrap'e değişti (bkz. affiliates.twig). */
.affiliates-wrap { display: flex; flex-direction: column; gap: 16px; width: 100%; }
.affiliates-page .card { width: 100%; }
.affiliates-stats .tw { overflow-x: auto; }
.affiliates-stats table.t { min-width: 640px; }
.affiliates-stats table.t th, .affiliates-stats table.t td { white-space: nowrap; }
@media (max-width: 820px) {
  .affiliates-stats table.t { min-width: 0; }
}

/* ---- G: tickets — New ticket | My tickets toggle ---- */
.tickets-switch { display: flex; gap: 4px; margin-bottom: 16px; }
.tickets-switch .tab { text-decoration: none; }
.tickets-pane[hidden] { display: none !important; }

/* ---- H (P12): sidebar — gruplar arası boşluk sıkı ---- */
/* P14-G: onceki grubun son ogesinden acikca ayrilsin (margin-top buyudu),
   ama kendi grubunun ilk ogesine yakin dursun (margin-bottom kucuk). */
.side__nav .side__group { margin: 0; padding: 20px 10px 3px; }
.side__nav .side__group:first-child { padding-top: 4px; }
.bal__btn { text-decoration: none; }

/* ---- G (P13): balance kartı sol alta yapışık — Göktuğ kararını değiştirdi,
   P12'nin "flex:0 1 auto" (dibe itmeyi durduran) kuralı geri alındı.
   .side zaten flex-direction:column + height:100vh; nav içerik kısaysa
   margin-top:auto balance'ı tabana iter, uzunsa .side__nav'ın kendi
   overflow-y:auto'su devreye girer. Alt boşluk 0 — kart kenara değsin. */
.side__balance { margin-top: auto; padding: 12px 12px 0; }

/* ---- G (P13): Account grubundan sonraki "Earn money" linki — Support/
   Account'tan ayrışsın diye farklı (accent) renkte. */
.side__earn {
  display: flex; align-items: center; gap: 11px;
  min-height: 44px; margin: 2px 8px 4px; padding: 10px 10px;
  border-radius: 10px; font-size: 14.5px; font-weight: 700;
  color: var(--accent); background: var(--accent-soft);
  transition: background .14s, color .14s;
}
.side__earn:hover { background: var(--accent); color: var(--accent-fg); }
.side__earn svg { width: 17px; height: 17px; flex: 0 0 17px; }

/* ---- I (P12): landing üst nav — sağ küme sağa yaslı.
   P15-D: margin-right:auto KALDIRILDI — .nav__menu'deki
   justify-content:space-between (katman 8, yukarıda) tek kaynak. İki ayrı
   auto-margin kuralının aynı sonuca güvenmesi kırılgandı, bkz. o yorum. ---- */

/* =====================================================================
   KATMAN B (P13) — KOYU TEMA KONTRAST GÜVENCESİ
   Ölçüldü: API sayfasında "API URL https://…/api/v2" satırı + orders/
   services genel tablo metinleri koyu temada okunmuyordu. Bizim kuralımız
   `body{color:var(--fg)}` td/th/pre/input üzerinde INHERIT ediyor — ama
   inherit yalnızca o elemanda HİÇBİR color kuralı yokken geçerlidir.
   site['styles'] döngüsündeki panel global CSS'inin sırası bizim elimizde
   değil; sırası bizden sonra gelirse (ya da daha yüksek özgüllükte bir
   kural taşırsa) sabit-hex bir renk üstümüze biner ve koyu zeminde koyu
   metin kalır. Bu yüzden bu yüzeylerde renk token'a !important ile
   sabitlendi — cascade sırasından bağımsız garanti.
   ===================================================================== */
table.t tbody td, table.t thead th,
.api-table td, .api-table th,
.code, pre.code, .code--inline,
.prose pre, .prose code,
.modal-content, .modal-header, .modal-body, .modal-footer,
.form-control, .inp, .sel, textarea.inp, select.form-control,
input[type="text"], input[type="email"], input[type="password"], input[type="number"] {
  color: var(--fg) !important;
}
table.t thead th { color: var(--fg-2) !important; }
.api-table .width-40 { color: var(--fg-2) !important; }
.c-k { color: var(--accent) !important; }
.c-s { color: var(--ok) !important; }
.c-n { color: var(--info) !important; }

/* =====================================================================
   KATMAN I (P15-C) — IŞILTI: gerçek kaynağa çevrildi
   Kök neden: P13'te ".side::before/.top::before" adında UYDURULMUŞ bir
   kenar-ışığı efekti yazılmıştı — mockup/landing.html'de böyle bir şey
   YOK ve canlıda görünmemesi bekleniyordu (referanssız kod). Gerçek "nav
   ışıltısı" mockup'ta `.nav { background-size:260% 100%;
   animation:drift 24s ease-in-out infinite }` — ayni 4-durak degradenin
   (nav-a/nav-b/nav-c) yavaşça kaymasi. Bu YALNIZCA style.css'e HİÇ
   taşınmamıştı (misafir .nav'da da eksikti — mockup/tema sapması, P15
   ile fark edildi). Misafir .nav'a (eksikti) + sidebar .bal kartına
   (nav-a/nav-b 140deg) eklendi. keyframes/renk/hız birebir aynı.

   P15-ek-C — GENİŞLETME: Göktuğ'un istediği "kabuğun kendisi" — yalnızca
   .bal değil, .side (sol menü, dikey) + .top (üst çubuk, yatay) de AYNI
   nav-a/nav-b/nav-c degradesini `drift 24s ease-in-out infinite` ile
   taşıyor. Katkı bir ::before KATMANI olarak eklendi (gerçek arka planın
   ÜSTÜNDE, ama İÇERİĞİN ALTINDA, düşük opaklıkta) — .side/.top'un kendi
   solid/blur arka planı ve metin/ikon kontrastı BOZULMADI. İçerik
   çocukları (.side__brand/.side__nav/.side__balance, .top__in) z-index:1
   ile üstte tutuluyor. .top yatay akışa .side'ın yarım periyodu kadar
   negatif animation-delay verildi (-12s, 24s'nin yarısı) — .side'ın
   dikey akışı bir "uca" ulaştığında .top'un yatay akışı TAM TERS fazda
   başlıyor, tek sürekli akış hissi. reduced-motion'da tamamen kapalı.

   P16-A — AÇIK TEMADA KAPATILDI: 260%'lik büyük arka plan .bal/.side/.top'ta
   DURAĞAN haldeyken bile degradenin yalnızca bir dilimini gösteriyordu,
   açık temada bu dilim pembemsi görünüyordu (renk karışımı bozuluyordu).
   Karar: bu üçü açık temada TAMAMEN kapalı, P14-öncesi düz görünümlerine
   dönüyor — .bal duz 140deg gradyan (background-size YOK, animasyon YOK),
   .side/.top::before opacity:0 + animation:none. Yalnızca KOYU TEMADA
   (projenin mevcut mekanizması: prefers-color-scheme + data-theme, tokenlar
   için kullanılan AYNI iki-bloklu desen) açılıyor. Misafir .nav'ın drift'i
   TEMADAN BAĞIMSIZ kalıyor — Göktuğ orada beğeniyor, dokunulmadı.
   ===================================================================== */
@keyframes drift { 0% { background-position: 0% 50%; } 50% { background-position: 100% 50%; } 100% { background-position: 0% 50%; } }
.nav { background-size: 260% 100%; animation: drift 24s ease-in-out infinite; } /* temadan bağımsız, dokunulmadı */

/* Açık tema (varsayılan) — P14-öncesi düz görünüm. */
.bal { animation: none; }
.side::before {
  content: ""; position: absolute; inset: 0; z-index: 0; pointer-events: none;
  background-image: linear-gradient(180deg, var(--nav-a), var(--nav-b) 50%, var(--nav-c));
  background-size: 100% 260%;
  opacity: 0; animation: none;
}
.side__brand, .side__nav, .side__balance { position: relative; z-index: 1; }

.top::before {
  content: ""; position: absolute; inset: 0; z-index: 0; pointer-events: none;
  background-image: linear-gradient(90deg, var(--nav-a), var(--nav-b) 50%, var(--nav-c));
  background-size: 260% 100%;
  opacity: 0; animation: none;
}
.top__in { position: relative; z-index: 1; }

/* Koyu tema — ışıltı açılır (tokenlarla aynı iki-bloklu tespit deseni). */
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) .bal { background-size: 260% 100%; animation: drift 24s ease-in-out infinite; }
  :root:not([data-theme="light"]) .side::before { opacity: .12; animation: drift 24s ease-in-out infinite; }
  :root:not([data-theme="light"]) .top::before { opacity: .12; animation: drift 24s ease-in-out infinite; animation-delay: -12s; }
}
:root[data-theme="dark"] .bal { background-size: 260% 100%; animation: drift 24s ease-in-out infinite; }
:root[data-theme="dark"] .side::before { opacity: .12; animation: drift 24s ease-in-out infinite; }
:root[data-theme="dark"] .top::before { opacity: .12; animation: drift 24s ease-in-out infinite; animation-delay: -12s; }

@media (prefers-reduced-motion: reduce) {
  .nav, .bal, .side::before, .top::before, .chips-scroll__hint { animation: none; }
}
