/* ==================================================================
   ARSENAL BAHIS · KIRMIZI GECE
   Ortak stiller. Palet degisimi icin yalnizca asagidaki :root blogu
   yeterli - renk degerleri baska hicbir yerde tekrar etmiyor.

   Bu blok `tema` temasindan kopyalandi (GECCEBET, turkuaz/okyanus
   kimligi); degisken ADLARI aynen korundu cunku bu dosyada ve
   public/arsenal/css/*.css altinda 705 yerde var(--...) ile
   kullaniliyorlar - isim degistirmek 705 satiri kirar. Sadece
   DEGERLER Arsenal'in kirmizi/altin/koyu-zemin kimligine cevrildi
   (kaynak: .superpowers/sdd/arsenal-sablon-haritasi.md bolum 3,
   response/styles.css :root'u). --kirmizi ve --kirmizi-parlak ise
   --aqua/--aqua-bright'in Arsenal'a ozgu isimli takma adlari -
   yeni yazilacak arsenal-ozel bileşenler dogrudan bu isimleri
   kullanabilsin, eski --aqua-* isimleri de var(...) uyumlulugu
   icin degismeden kalsin diye. */

:root {
  /* ---- marka ---- */
  --aqua:        #e51a2d;   /* Arsenal kirmizisi (eski turkuaz --aqua'nin yerine) */
  --aqua-soft:   #ff8a92;
  --aqua-bright: #ff3347;   /* parlak kirmizi */
  --aqua-deep:   #a30f1e;
  --coral:       #ff735f;
  --win:         #3ddc84;
  --sand:        #ded1b8;

  /* Arsenal'a ozgu isimler - degeri yukaridaki --aqua/--aqua-bright ile
     ayni, coklu kullanim yerine gecmeden yeni Arsenal bilesenlerinde
     dogrudan anlasilir bir ad kullanilabilsin diye eklendi. */
  --kirmizi:         #e51a2d;
  --kirmizi-parlak:  #ff3347;

  /* ---- yazı ---- */
  --tx:   #f5f4ec;
  --tx-2: rgba(245, 244, 236, .62);
  /* tx-3 ve tx-4 önce .42/.28 idi; 10-13px metinlerde kontrast eşiğin
     altında kalıyordu. Hiyerarşi aynı, sadece taban yükseldi. */
  --tx-3: rgba(245, 244, 236, .64);
  --tx-4: rgba(245, 244, 236, .54);
  --ink:  #2a0509;              /* kirmizi zemin üstündeki koyu yazı */

  /* ALTIN. Arsenal armasindaki altin tonu (harita bolum 3: #d9a95f).
     Arayuzde SADECE yan rayda ve yalnizca SUSLEME olarak geciyor:
     hicbir yerde "aktif", "uyari" ya da "basarili" anlamina gelmiyor.
     Durum rengi hala kirmizi; iki renk ayni isi yapmaya baslarsa
     ikisi de anlamini kaybeder. */
  --gold:     #d9a95f;
  --gold-dim: rgba(217, 169, 95, .38);

  /* ---- yüzeyler ----
     Harita bolum 3'teki koyu zemin katmanlarindan (--bg #080a0e,
     --panel #11161d, --panel2 #171e27) turetildi; alfa degerleri
     (panel .62/.45, panel-3 .60) eski katman hiyerarsisiyle aynen
     korundu, yalniz renk tonu turkuazdan noturlemsi koyu griye
     kaydi. --line/--line-soft ise marka renginin (kirmizi) soft
     tonuyla hizali kalsin diye --aqua-soft'un rgb'sini kullaniyor. */
  --panel:     rgba(17, 22, 29, .62);
  --panel-2:   rgba(23, 30, 39, .45);
  --panel-3:   rgba(8, 10, 14, .60);
  --line:      rgba(255, 138, 146, .12);
  --line-soft: rgba(255, 138, 146, .08);
  --line-tx:   rgba(245, 244, 236, .16);

  /* ---- ölçü ---- */
  --r-sm: 10px;
  --r:    18px;
  --r-lg: 24px;
  --hd:   78px;
  --pad:  clamp(18px, 4.4vw, 64px);
  --wrap: 1440px;
  --gap:  clamp(46px, 5vw, 70px);   /* bölümler arası nefes */

  --t: 180ms cubic-bezier(.4, 0, .2, 1);
}

* { box-sizing: border-box; }

/* Görsel olarak gizli, ekran okuyucuya açık. */
.vh {
  position: absolute;
  width: 1px; height: 1px;
  margin: -1px; padding: 0;
  overflow: hidden;
  clip: rect(0 0 0 0);
  clip-path: inset(50%);
  white-space: nowrap;
  border: 0;
}

/* Oturum durumu. Sunucu <body data-auth="guest|member"> basar, auth'a
   bağlı bloklar buna göre açılır kapanır. Blade tarafında bu blokları
   ayrıca @auth ile sarın — CSS ile gizlemek ziyaretçiye üye verisini
   yine de göndermek demek, burada sadece tasarımın iki durumu tek
   dosyada görünsün diye var. */
[data-auth="guest"]  .auth-member { display: none !important; }
[data-auth="member"] .auth-guest  { display: none !important; }

html {
  background: #090603;
  -webkit-text-size-adjust: 100%;
  scroll-behavior: smooth;
  overflow-x: clip;
}

body {
  margin: 0;
  color: var(--tx);
  font: 400 15px/1.55 'DM Sans', system-ui, -apple-system, 'Segoe UI', sans-serif;
  font-feature-settings: 'tnum' 1;      /* para ve oran hizalansın */
  overflow-x: clip;

  /* Su sütunu. Sabit yükseklik yerine oransal duraklar kullanıyoruz ki
     içerik uzayınca geçiş de uzasın, kırılma olmasın. */
  background:
    linear-gradient(180deg,
      #53201c 0%,  #461d17 9%,  #3d1b14 18%, #351812 27%,
      #2d150f 36%, #25120d 46%, #1f100a 56%, #190e08 66%,
      #130b06 76%, #0e0805 86%, #090603 100%);
  background-attachment: scroll;
}

/* Modal/çekmece açıkken arka plan kaymasın. Mobilde kaydırma kabı
   <html>, sadece body'ye vermek yetmiyor. */
body.is-locked { overflow: hidden; }
html:has(body.is-locked) { overflow: hidden; }

img { max-width: 100%; display: block; }
a { color: inherit; text-decoration: none; }
button { font: inherit; color: inherit; background: none; border: 0; cursor: pointer; }
input { font: inherit; }
svg { display: block; }

::selection { background: var(--aqua); color: var(--ink); }

:focus-visible {
  outline: 2px solid var(--aqua-soft);
  outline-offset: 3px;
  border-radius: 6px;
}

.wrap {
  width: 100%;
  max-width: var(--wrap);
  margin-inline: auto;
  padding-inline: var(--pad);
}

/* Yatay raylarda çubuk gizleniyor; masaüstünde oklarla, dokunmatikte
   parmakla geziliyor. */
.noscroll { scrollbar-width: none; -ms-overflow-style: none; }
.noscroll::-webkit-scrollbar { display: none; }

/* Sayfa basliklari anasayfa bolum basliklariyla ("Canli masalar") AYNI
   yazi: Barlow Condensed 700 (kullanici istegi 2026-09-26). Kopyalanan
   temanin DM Serif Display'i Arsenal sayfalarinda yabanci duruyordu. */
.serif {
  font-family: 'Barlow Condensed', 'DM Sans', system-ui, sans-serif;
  font-weight: 700;
  letter-spacing: .2px;
}


/* ==================================================================
   HAREKET
   Dalgalar 2880px genisliginde, periyodu 1440px olan bir yolu -1440px
   kaydirarak akiyor; dikis gorunmuyor. Bu uc degeri birlikte
   degistirin, yoksa ek yeri ortaya cikar.
   ================================================================== */

@keyframes gb-flow    { from { transform: translateX(0) }      to { transform: translateX(-1440px) } }
@keyframes gb-drift   { 0%, 100% { transform: translateX(0) }  50% { transform: translateX(-30px) } }
@keyframes gb-tide    { 0%, 100% { transform: translateY(0) }  50% { transform: translateY(-9px) } }
@keyframes gb-fall    { from { transform: translateY(-120px) } to { transform: translateY(120px) } }

.flow-a { animation: gb-flow 30s linear infinite; }
.flow-b { animation: gb-flow 21s linear infinite reverse; }
.flow-c { animation: gb-flow 44s linear infinite; }

/* Yalniz YANA suzuluyor. Opaklik nabzi (gb-breathe) kaldirildi:
   arka planda yanip sonen hicbir sey kalmayacak. */
.caustic  { animation: gb-drift 26s ease-in-out infinite; }
.tideline { animation: gb-tide 6s ease-in-out infinite; }
/* NABIZ YOK. Canli oldugunu rengi zaten soyluyor; yanip sonen
   bir nokta ekranin her yerinde goz kirpiyordu. Sinif adi
   duruyor - HTML'de on kusur yerde geciyor ve sunucu da
   basiyor; kurali silmek yerine hareketi aldik. */
.livedot  { animation: none; }

.snow-a { animation: gb-fall 34s linear infinite; }
.snow-b { animation: gb-fall 52s linear infinite reverse; }



/* ==================================================================
   ATMOSFER KATMANLARI
   Sayfanın üstüne biner, tıklamayı engellemez.
   ================================================================== */

.atmos {
  position: absolute;
  inset: 0;
  pointer-events: none;
  overflow: hidden;
  z-index: 0;
}

/* Askidaki partikuller. Sayfanin %48'inden sonra basliyor. */
.atmos-snow {
  position: absolute;
  left: 0; right: 0;
  top: 48%; bottom: 6%;
  overflow: hidden;
  -webkit-mask-image: linear-gradient(180deg, transparent, #000 22%, #000 78%, transparent);
          mask-image: linear-gradient(180deg, transparent, #000 22%, #000 78%, transparent);
}
.atmos-snow svg { position: absolute; left: 0; }



/* ==================================================================
   BUTONLAR
   ================================================================== */

.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 9px;
  height: 46px;
  padding: 0 24px;
  border-radius: 999px;
  font-size: 14px;
  font-weight: 700;
  white-space: nowrap;
  transition: transform var(--t), background var(--t), border-color var(--t), filter var(--t);
}
.btn:active { transform: translateY(1px); }
.btn svg { width: 15px; height: 15px; }

/* Birincil: turkuaz gradyan, koyu yazı. Sitedeki tek dolu buton ailesi. */
.btn-primary {
  background: linear-gradient(180deg, var(--aqua-bright), var(--aqua-deep));
  color: var(--ink);
  box-shadow: 0 14px 34px rgba(155, 52, 61, .34);
}
.btn-primary:hover { filter: brightness(1.06); }

.btn-ghost {
  background: rgba(245, 244, 236, .10);
  border: 1px solid rgba(245, 244, 236, .28);
  color: var(--tx);
}
.btn-ghost:hover { border-color: rgba(245, 244, 236, .45); }

.btn-outline {
  border: 1px solid var(--line-tx);
  color: var(--tx);
}
.btn-outline:hover { border-color: rgba(245, 244, 236, .34); }

.btn-lg { height: 56px; padding: 0 38px; font-size: 15.5px; }
.btn-sm { height: 40px; padding: 0 20px; font-size: 13.5px; }
.btn-block { width: 100%; }


/* ==================================================================
   KABARTMA
   Parlama (glow) degil, golge. Kart ailesi bu iki sinifi kullaniyor.
   ================================================================== */

.lift {
  border: 1px solid var(--line);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 16px 34px rgba(0, 0, 0, .42);
}
.lift-sm {
  border: 1px solid var(--line-soft);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .09), 0 8px 20px rgba(0, 0, 0, .30);
}


/* ==================================================================
   HEADER
   ================================================================== */

.hd {
  position: sticky;
  top: 0;
  z-index: 60;
  height: var(--hd);
  background: rgba(34, 16, 11, .82);
  border-bottom: 1px solid rgba(255, 138, 146, .10);
  transition: background var(--t), backdrop-filter var(--t);
}
/* Kaydırınca camlaşır — sayfanın üstündeyken zemin zaten koyu,
   blur'a gerek yok; boşuna GPU yakmasın. */
.hd.is-stuck {
  background: rgba(26, 13, 9, .88);
  backdrop-filter: blur(16px) saturate(140%);
}

.hd-in {
  height: 100%;
  display: flex;
  align-items: center;
  gap: clamp(18px, 3vw, 44px);
}

.brand { display: flex; align-items: center; flex: none; }
/* LOGO TEK GORSEL. Yukseklik veriliyor, genislik oranla geliyor:
   dosya degistiginde (yeni bir en-boy orani) baslik kendiliginden
   uyum sagliyor.
   ALTIN SADECE BURADA. Sitenin geri kalani turkuaz; marka isareti
   kendi rengini tasiyor ve o renk baska hicbir yerde gecmiyor -
   iki vurgu rengi bir arayuzde birbiriyle yarisir. */
.brand-logo {
  display: block;
  height: 30px;
  width: auto;
  flex: none;
}
/* Cekmece basligi ve footer: ayni dosya, kucuk boy. */
.brand-logo.is-sm { height: 24px; }
.hd-short { display: none; }

.nav { display: flex; gap: clamp(16px, 2.2vw, 30px); }
.nav a {
  position: relative;
  padding-bottom: 4px;
  font-size: 14px;
  font-weight: 500;
  color: var(--tx-2);
  white-space: nowrap;
  transition: color var(--t);
}
.nav a:hover { color: var(--tx); }
.nav a.is-on { color: var(--tx); }

/* Aktif sekme göstergesi dhoni teknesinin gövde kavisi. Aynı eğri
   logoda ve Private seviye şeridinin altında da geçiyor. */
.nav-curve {
  position: absolute;
  left: 50%;
  bottom: -6px;
  width: 58px;
  height: 7px;
  transform: translateX(-50%);
}
.nav a:not(.is-on) .nav-curve { display: none; }

.hd-act { margin-inline-start: auto; display: flex; align-items: center; gap: 12px; }

.icon-btn {
  width: 40px;
  height: 40px;
  display: grid;
  place-items: center;
  border-radius: 999px;
  border: 1px solid rgba(245, 244, 236, .14);
  color: var(--tx-2);
  transition: var(--t);
}
.icon-btn:hover { color: var(--tx); border-color: rgba(245, 244, 236, .3); }
.icon-btn svg { width: 17px; height: 17px; }

.hd-login {
  height: 40px;
  display: flex;
  align-items: center;
  padding: 0 18px;
  font-size: 14px;
  font-weight: 600;
  color: rgba(245, 244, 236, .86);
  transition: color var(--t);
}
.hd-login:hover { color: var(--tx); }


/* ==================================================================
   SURFACE — HERO
   ================================================================== */

.hero {
  position: relative;
  height: 700px;
  overflow: hidden;
}

/* Fotoğraf. Alt kenarı maskeyle söndürülüyor: kesik bir görsel bitişi
   yerine sayfanın kendi derinlik gradyanına karışıyor, hemen altındaki
   dalga bandı da böyle aynı sudan devam ediyor gibi duruyor. */
.hero-shot {
  position: absolute;
  inset: 0;
  display: block;
}
.hero-shot img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: 50% 46%;
  display: block;
  -webkit-mask-image: linear-gradient(180deg, #000 0%, #000 74%, rgba(0, 0, 0, .4) 90%, transparent 100%);
          mask-image: linear-gradient(180deg, #000 0%, #000 74%, rgba(0, 0, 0, .4) 90%, transparent 100%);
}

/* Kirmizi veli (eskiden turkuaz). Gün batımının turuncusu paletin dışında
   kalıyordu; soft-light düşük opaklıkta sıcaklığı kırpmadan markanın
   rengine çekiyor. Oyun kartlarındaki muamelenin aynısı. Renkler burada
   :root degiskeni degil dogrudan hex - orijinal dosyada da boyleydi,
   sadece Arsenal kirmizisine (--aqua-deep/--aqua/--aqua-deep) cevrildi. */
.hero-tint {
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, #8a0f1c 0%, #e51a2d 62%, #4a0810 100%);
  mix-blend-mode: soft-light;
  opacity: .34;
  /* Fotoğrafla aynı maske; yoksa veli bölümün alt kenarında düz kesilip
     çizgi bırakıyor. */
  -webkit-mask-image: linear-gradient(180deg, #000 0%, #000 68%, transparent 100%);
          mask-image: linear-gradient(180deg, #000 0%, #000 68%, transparent 100%);
}

/* Metnin oturduğu bant için karartma. Ortadaki turkuaz parlama başlıkla
   çakışıyordu; radyal olan onu bastırıyor, üstteki header'ı, alttaki de
   sayfaya geçişi taşıyor. */
.hero-scrim {
  position: absolute;
  inset: 0;
  background:
    radial-gradient(112% 58% at 50% 40%, rgba(17, 8, 5, .76) 0%, rgba(17, 8, 5, .4) 44%, rgba(17, 8, 5, 0) 74%),
    linear-gradient(180deg, rgba(15, 8, 5, .7) 0%, rgba(15, 8, 5, .2) 26%, rgba(15, 8, 5, 0) 48%);
  -webkit-mask-image: linear-gradient(180deg, #000 0%, #000 70%, transparent 100%);
          mask-image: linear-gradient(180deg, #000 0%, #000 70%, transparent 100%);
}

/* Su altı ışık kırılmaları. Fotoğrafın kendi kıpırtısının üstünde hafif
   bir hareket — blur'lu ve düşük opaklıkta, göz "bir şey var" der ama
   ne olduğunu seçemez. */
.hero-caustic {
  position: absolute;
  left: -40px; right: -40px;
  bottom: 0;
  height: 340px;
  opacity: .09;
  filter: blur(14px);
  background:
    radial-gradient(22% 40% at 12% 70%, #faeff2 0%, rgba(250, 239, 242, 0) 62%),
    radial-gradient(18% 34% at 34% 88%, #faeff2 0%, rgba(250, 239, 242, 0) 62%),
    radial-gradient(26% 44% at 58% 74%, #faeff2 0%, rgba(250, 239, 242, 0) 62%),
    radial-gradient(16% 30% at 80% 90%, #faeff2 0%, rgba(250, 239, 242, 0) 62%),
    radial-gradient(20% 36% at 94% 66%, #faeff2 0%, rgba(250, 239, 242, 0) 62%);
}

/* Metin bloğu ufuk çizgisinin üstünde kalsın diye yukarıda: başlık
   villaların çatı hattına değince okunmuyordu. Altta kalan su boşluk
   değil, bölümün nefesi. */
.hero-in {
  position: relative;
  z-index: 2;
  padding-top: 124px;
  text-align: center;
}

.eyebrow {
  display: inline-flex;
  align-items: center;
  height: 32px;
  padding: 0 17px;
  border-radius: 999px;
  background: rgba(255, 138, 146, .12);
  border: 1px solid rgba(255, 138, 146, .3);
  font-size: 12px;
  font-weight: 600;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--aqua-soft);
}

/* Baslik artik logonun kendisi. Olcu GENISLIGE bagli degil
   yuksekilige: logo yatay bir kelime isareti, dar ekranda genislige
   gore olceklenirse yuksekligi bir seride dusuyor. */
.hero-title { margin: 28px 0 0; line-height: 0; }
.hero-title img {
  display: block;
  height: clamp(52px, 7.6vw, 108px);
  width: auto;
  margin-inline: auto;
  /* Fotografin acik yerlerinde kenar eriyordu; golge gorunmuyor,
     sadece kenari tutuyor. */
  filter: drop-shadow(0 2px 26px rgba(17, 8, 5, .6));
}

.hero-sub {
  margin: 20px auto 0;
  max-width: 660px;
  font-size: clamp(15px, 1.4vw, 19px);
  font-weight: 300;
  line-height: 1.55;
  color: rgba(245, 244, 236, .82);
  text-shadow: 0 1px 16px rgba(17, 8, 5, .6);
}

.hero-cta {
  margin-top: 36px;
  display: flex;
  gap: 13px;
  justify-content: center;
  flex-wrap: wrap;
}


/* ==================================================================
   DALGA BANTLARI
   Bölüm ayırıcı olarak çizgi yok, dalga var. Derine inildikçe katman
   sayısı, kalınlık ve opaklık düşer.

   Kalın ve soluk çiziyoruz: ince ve parlak çizgi "çizilmiş dalga" gibi
   duruyordu. Alttaki iki katman hafif blur'lu, üsttekiler net — su da
   böyle, uzaktaki kabarma yumuşak, yüzeydeki kırışık keskin.
   ================================================================== */

.waves {
  position: relative;
  overflow: hidden;
}
.waves svg {
  position: absolute;
  left: 0;
  width: 2880px;
  stroke-linecap: round;
}
.w-blur { filter: blur(3px); }

/* Yüzey bandı hero'nun altına değil, üstüne biniyor: fotoğrafın söndüğü
   yer tam dalgaların içinde kalsın, kesik görünmesin. */
.waves-surface {
  height: 138px;
  margin-top: -140px;
  z-index: 1;
}
.waves-mid     { height: 118px; margin-top: 30px; }
.waves-deep    { height: 92px;  margin-top: 34px; }


/* ==================================================================
   BÖLÜM BAŞLIĞI
   ================================================================== */

/* ==================================================================
   MENÜ ÇEKMECESİ
   Yalnız 980px altında. Alt bara beş yer sığıyor; Live, Aviator ve
   Promotions buradan gidiliyor.
   ================================================================== */

.hd-menu { display: none; }

.drawer {
  position: fixed;
  inset: 0;
  z-index: 90;
  background: rgba(10, 5, 3, 0);
  transition: background 220ms ease;
}
.drawer.is-open { background: rgba(10, 5, 3, .62); }

.drawer-panel {
  position: absolute;
  /* inset-inline-end, right degil: RTL'de "bitis kenari" soldur.
     right yazip yalniz animasyonu ters cevirmek paneli yine saga
     yapistiriyordu - acilis yonu degisiyor, panel degismiyordu. */
  inset-block: 0;
  inset-inline-end: 0;
  width: min(340px, 86vw);
  padding: 18px var(--pad) calc(24px + env(safe-area-inset-bottom));
  display: flex;
  flex-direction: column;
  overflow-y: auto;
  background: linear-gradient(180deg, #3f1b15, #1b0f09 62%, #0e0805);
  border-inline-start: 1px solid var(--line);
  box-shadow: -28px 0 60px rgba(0, 0, 0, .5);
  /* translate mantiksal karsiligi yok; RTL'de asagida ters cevriliyor. */
  transform: translateX(100%);
  transition: transform 220ms cubic-bezier(.32, .72, 0, 1);
}
.drawer.is-open .drawer-panel { transform: none; }

.drawer-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  height: 44px;
}
.drawer-head .brand-logo { height: 22px; }

.drawer-search {
  display: none;
  width: 100%;
  align-items: center;
  gap: 10px;
  height: 46px;
  margin-top: 22px;
  padding: 0 16px;
  border-radius: 999px;
  border: 1px solid var(--line);
  background: rgba(23, 10, 7, .45);
  font-size: 14px;
  font-weight: 500;
  color: var(--tx-2);
}
.drawer-search svg { width: 17px; height: 17px; }

.drawer-nav {
  display: grid;
  gap: 2px;
  margin-top: 26px;
}
.drawer-nav a {
  padding: 14px 2px;
  font-size: 17px;
  font-weight: 600;
  color: var(--tx-2);
  border-bottom: 1px solid var(--line-soft);
  transition: color var(--t);
}
.drawer-nav a:hover { color: var(--tx); }
.drawer-nav a.is-on { color: var(--aqua-soft); }

.drawer-help {
  display: grid;
  gap: 2px;
  margin-top: auto;
  padding-top: 26px;
}
.drawer-help a {
  display: flex;
  align-items: center;
  gap: 11px;
  padding: 11px 2px;
  font-size: 14px;
  font-weight: 500;
  color: var(--tx-2);
}
.drawer-help a:hover { color: var(--tx); }
.drawer-help svg { width: 17px; height: 17px; flex: none; color: var(--aqua-soft); }

.drawer-foot {
  display: grid;
  gap: 10px;
  padding-top: 20px;
}


/* Destek. Tek düğme, altında kanal listesi. Kanal ikonları markanın
   rengini almıyor, kendi rengini alıyor — WhatsApp yeşili ve Telegram
   mavisi tanınmadığında tıklanmıyor. */
.hd-help { display: none; position: relative; }
.hd-help > .icon-btn { border-color: transparent; }
.hd-help > .icon-btn:hover,
.hd-help > .icon-btn[aria-expanded="true"] { border-color: var(--line-tx); }

.help-pop {
  position: absolute;
  top: calc(100% + 10px);
  inset-inline-end: 0;
  z-index: 60;
  min-width: 188px;
  padding: 7px;
  border-radius: 16px;
  border: 1px solid var(--line);
  background: rgba(34, 16, 11, .96);
  backdrop-filter: blur(18px);
  box-shadow: 0 22px 48px rgba(0, 0, 0, .5);
}
/* display kuralı olmadığı için [hidden] kendi işini görüyor; yine de
   açıkça yazıyoruz, sonradan display eklenirse tuzak olmasın. */
.help-pop[hidden] { display: none; }

.help-pop a {
  display: flex;
  align-items: center;
  gap: 11px;
  padding: 10px 12px;
  border-radius: 11px;
  font-size: 14px;
  font-weight: 500;
  color: var(--tx-2);
  transition: background var(--t), color var(--t);
}
.help-pop a:hover { background: rgba(255, 138, 146, .09); color: var(--tx); }
.help-pop svg { width: 17px; height: 17px; flex: none; color: var(--tx-3); }
.help-pop .is-wa { color: #4ce07f; }
.help-pop .is-tg { color: #5bb8f5; }

/* Bölüm başlığının yanındaki sayı. Kaç oyun olduğunu söylemek
   "binlerce oyun" demekten daha inandırıcı ve daha ucuz. */
.sec-n {
  display: inline-block;
  margin-inline-start: 12px;
  padding: 4px 11px;
  border-radius: 999px;
  border: 1px solid var(--line);
  background: rgba(255, 138, 146, .07);
  font-family: 'DM Sans', system-ui, sans-serif;
  font-size: 12px;
  font-weight: 600;
  letter-spacing: .02em;
  color: var(--aqua-soft);
  vertical-align: middle;
  transform: translateY(-2px);
}

/* Üye başlığındaki bakiye. Rakam serif, etiketi küçük — şeritteki
   sayılarla aynı dil. */
.hd-bal {
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: 0 14px 0 6px;
  line-height: 1.15;
  text-align: end;
}
.hd-bal span {
  font-size: 10.5px;
  font-weight: 600;
  letter-spacing: .16em;
  text-transform: uppercase;
  color: var(--tx-4);
}
.hd-bal b { font-size: 17px; color: var(--tx); }
.hd-bal:hover b { color: var(--aqua-soft); }


.sec { position: relative; z-index: 1; margin-top: var(--gap); }
.sec-tight { margin-top: 26px; }

.sec-head {
  display: flex;
  align-items: flex-end;
  gap: 16px;
  margin-bottom: 24px;
}
.sec-label {
  display: flex;
  align-items: center;
  gap: 9px;
  font-size: 12px;
  font-weight: 600;
  letter-spacing: .2em;
  text-transform: uppercase;
  /* --aqua degil --aqua-bright: anasayfada etiket hero'nun altindaki
     koyu sularda duruyor ve --aqua yetiyordu, ama ic sayfalarda hero
     yok - su sutununun EN ACIK ustu gorunuyor ve orada --aqua
     4.45:1'de kaliyordu. Tek renk, her iki zeminde de gecerli. */
  color: var(--aqua-bright);
}
/* IKI AYRI BASLIK DILI.
   Once her bolum basligi serif ve buyuktu. Bir arada bakildiginda
   her bolum ayni agirlikta bagiriyordu ve hicbiri one cikmiyordu;
   ustelik "her bolume yaratici bir baslik" hissi veriyordu.
   Simdi varsayilan baslik SANS, daha kucuk ve daha siki: gercek bir
   urun basligi. Serif yalniz markanin kendi mekaniklerinde
   (The Tide Board, Deep Run) ve sayfa basliklarinda kaliyor. */
.sec-title {
  margin: 10px 0 0;
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  font-size: clamp(19px, 1.9vw, 23px);
  letter-spacing: -.02em;
  font-weight: 700;
}
.sec-title.serif {
  display: block;
  font-size: clamp(22px, 2.6vw, 34px);
  letter-spacing: .2px;
  font-weight: 700;
}
/* Serif baslik icindeki canli noktasi satirin ustune kaciyordu. */
.sec-title.serif .dot { display: inline-block; margin-inline-end: 10px; vertical-align: middle; }
.sec-note {
  margin: 8px 0 0;
  font-size: 14.5px;
  font-weight: 300;
  /* .64 idi. Ic sayfalarda hero olmadigi icin su sutununun en ACIK
     ust bandi gorunuyor ve orada 4.41:1'e dusuyordu. */
  color: rgba(245, 244, 236, .74);
}
.sec-more { margin-inline-start: auto; flex: none; }

/* ---------------- Ic sayfa basligi ----------------
   Hero yok. Kisi ic sayfaya BAKMAYA degil bir sey ALMAYA ya da
   BULMAYA geliyor; fotografin altinda uc saniye beklemesinin
   karsiligi yok. Promosyonlar ve casino sayfalari ayni basligi
   kullaniyor - iki sayfa ayni seye benziyorsa ayni yerden gelmeli. */
/* Genislik SINIRI BASLIGIN KENDISINDE, kutusunda degil. Kutuda
   oldugunda .wrap'in "margin-inline: auto" kurali 720px'lik kutuyu
   ekranda ORTALIYORDU: 1440px'te baslik icerikten 322px iceride
   basliyor, altindaki izgara ise kenarda duruyordu. Gozle bakinca
   sayfanin ust yarisi kaymis gibi goruniyordu. */
.page-head { margin-top: 44px; }
.page-head > * { max-width: 720px; }
.page-title {
  margin: 8px 0 14px;
  font-size: clamp(30px, 4.6vw, 52px);
  line-height: 1.06;
  color: var(--tx);
}
.page-head .sec-note { max-width: 620px; }

.dot {
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: var(--coral);
  flex: none;
}
.dot-win { background: var(--win); }


/* ==================================================================
   ŞERİT — sayaçlar
   ================================================================== */

/* KUTU DEGIL SATIR.
   Once yuvarlatilmis, gradyanli, 1px cerceveli bir panel'di - yani
   sayfadaki diger her seyle ayni kutu. Sayfada o kadar cok panel
   var ki bir tane daha eklemek hicbir seyi one cikarmiyordu.
   Simdi rakamlar dogrudan sayfanin uzerinde duruyor, aralarinda
   yalniz sac teli cizgiler var. Daha az sey ciziliyor, daha cok
   sey gorunuyor. */
.stats {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  border-block: 1px solid var(--line-soft);
}
.stat { padding: 22px 28px; border-inline-end: 1px solid var(--line-soft); }
/* Panel kalkinca ilk ve son sutun sayfanin kenariyla hizalaniyor;
   yoksa serit iceriden baslamis gibi duruyor. */
.stat:first-child { padding-inline-start: 0; }
.stat:last-child { padding-inline-end: 0; border-inline-end: 0; }
.stat-k {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: .18em;
  text-transform: uppercase;
  /* .6 idi. Serit panel olmaktan cikinca altindaki zemin acildi ve
     11px etiket 4.38:1'e dustu. Panel gitti, kontrast kalsin. */
  color: rgba(245, 244, 236, .74);
}
.stat-v {
  margin-top: 10px;
  font-size: clamp(24px, 2.6vw, 34px);
  line-height: 1;
  letter-spacing: -.01em;
}
.stat-v.is-aqua { color: var(--aqua-soft); }

/* Değer tazelenince kısa bir parlama. Rakamın sessizce değişmesi
   fark edilmiyor, göze çarpan hareket de rahatsız ediyor. */
.stat-v { transition: color 240ms linear, text-shadow 240ms linear; }
.stat-v.is-tick {
  color: var(--aqua-soft);
  text-shadow: 0 0 22px rgba(255, 138, 146, .45);
}




/* ==================================================================
   DURAN TEKLİFLER
   Tide Board gecelik ve saatli; burası kalıcı raf. Asimetrik: soldaki
   tek büyük teklif, sağdaki üç satır. Aynı boyda dört kart olsaydı
   hangisinin önemli olduğu anlaşılmazdı.
   ================================================================== */

.offers {
  display: grid;
  grid-template-columns: 1.08fr 1fr;
  gap: 18px;
  align-items: stretch;
}
/* Tek teklif (sagdaki satir listesi yok): ikinci kolon bos kalmasin.
   Iki sinifli secici, asagidaki medya kurallarindaki .offers'tan guclu -
   her genislikte tek kolon. */
.offers.offers-tek { grid-template-columns: 1fr; }

.offer {
  position: relative;
  border-radius: var(--r-lg);
  background: linear-gradient(158deg, rgba(56, 24, 19, .72), rgba(44, 20, 15, .58) 74%);
  overflow: hidden;
}

.offer-lead { display: flex; }
/* Kartın dibinde su. Tide Board'daki ile aynı katman, oranın küçük
   kardeşi gibi dursun diye. */
.offer-caustic {
  position: absolute;
  left: -30px; right: -30px; bottom: -50px;
  height: 280px;
  /* .3 idi. O deger hicbir zaman ekrana cikmiyordu: opaklik nabzi
     bunu eziyor ve .10-.19 arasinda tutuyordu. Nabiz kalkinca
     kutunun kendi degeri gorunur oldu ve fazla parlak kaldi. */
  opacity: .15;
  filter: blur(22px);
  background:
    radial-gradient(28% 60% at 22% 70%, #dc96a3 0%, rgba(220, 150, 163, 0) 64%),
    radial-gradient(24% 52% at 62% 86%, #dc96a3 0%, rgba(220, 150, 163, 0) 64%),
    radial-gradient(22% 48% at 88% 64%, #dc96a3 0%, rgba(220, 150, 163, 0) 64%);
  pointer-events: none;
}
.offer-in {
  position: relative;
  padding: 34px 36px 32px;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
}

.offer-k {
  font-size: 11.5px;
  font-weight: 600;
  letter-spacing: .2em;
  text-transform: uppercase;
  color: rgba(245, 244, 236, .64);
}

.offer-v {
  margin-top: 12px;
  font-size: clamp(38px, 4.6vw, 62px);
  line-height: .96;
  letter-spacing: -.02em;
  color: var(--aqua-soft);
}
.offer-v span {
  display: block;
  margin-top: 8px;
  font-family: 'DM Sans', system-ui, sans-serif;
  font-size: 16px;
  font-weight: 300;
  letter-spacing: 0;
  color: var(--tx);
}

.offer-x {
  margin: 16px 0 0;
  max-width: 42ch;
  font-size: 14.5px;
  font-weight: 300;
  line-height: 1.6;
  color: rgba(245, 244, 236, .58);
}

/* Şart satırı. Küçük ama gizli değil — bonusun asıl bilgisi bu. */
.offer-terms {
  display: flex;
  flex-wrap: wrap;
  gap: 7px;
  margin: 16px 0 0;
  padding: 0;
  list-style: none;
}
.offer-terms li {
  padding: 5px 11px;
  border: 1px solid var(--line-tx);
  border-radius: 999px;
  font-size: 11.5px;
  font-weight: 500;
  letter-spacing: .04em;
  color: rgba(245, 244, 236, .58);
}
/* Butondan sonra kalan boşluk boş değil: kartın dibinde su duruyor.
   Kart sağdaki üç satır kadar uzuyor, artan yer havuz oluyor. */
.offer-lead .btn { margin-top: 28px; }

.offer-list {
  display: grid;
  grid-template-rows: repeat(3, 1fr);
  gap: 18px;
}

.offer-row {
  display: flex;
  align-items: center;
  gap: 22px;
  padding: 20px 24px;
  transition: border-color var(--t), transform var(--t);
}
.offer-row:hover { transform: translateY(-2px); border-color: rgba(255, 138, 146, .3); }
.offer-row .offer-v {
  margin: 0;
  flex: none;
  min-width: 96px;
  font-size: clamp(28px, 2.8vw, 36px);
}
.offer-c b { display: block; font-size: 15.5px; font-weight: 700; }
.offer-c span {
  display: block;
  margin-top: 4px;
  font-size: 13.5px;
  font-weight: 300;
  line-height: 1.5;
  color: rgba(245, 244, 236, .62);
}
.offer-c .offer-terms { margin-top: 11px; }
.offer-go {
  width: 20px; height: 20px;
  margin-inline-start: auto;
  flex: none;
  color: var(--tx-3);
  transition: color var(--t), transform var(--t);
}
.offer-row:hover .offer-go { color: var(--aqua-soft); transform: translateX(3px); }

.offers-foot {
  margin: 18px 0 0;
  font-size: 13px;
  font-weight: 300;
  color: var(--tx-3);
}
.offers-foot a { color: rgba(255, 138, 146, .8); text-decoration: underline; text-underline-offset: 3px; }

/* ==================================================================
   ÜYE ŞERİDİ
   Giriş yapmış üyede görünür. Kart seti bağlama göre değişir:
   aktif çevrim yoksa Wagering yerine Your Rewards basılır.
   ================================================================== */

.member-head {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 14px;
}
.member-head b {
  font-size: 11px;
  font-weight: 600;
  letter-spacing: .2em;
  text-transform: uppercase;
  color: var(--tx-3);
}
.member-head i { flex: 1; height: 1px; background: rgba(255, 138, 146, .1); }

.member-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 14px;
}
.mcard {
  padding: 18px 20px;
  border-radius: var(--r);
  background: rgba(56, 24, 19, .55);
}
.mcard-k {
  font-size: 11.5px;
  font-weight: 600;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--tx-3);
}
.mcard-v {
  margin-top: 10px;
  display: flex;
  align-items: baseline;
  gap: 7px;
}
.mcard-v strong { font-size: 26px; line-height: 1; font-weight: 400; }
.mcard-v small { font-size: 12px; font-weight: 300; color: rgba(245, 244, 236, .64); }
.mcard-go { margin-top: 14px; }

.mcard-foot { margin-top: 9px; font-size: 12px; font-weight: 300; color: rgba(245, 244, 236, .64); }

.mcard-row { display: flex; align-items: center; gap: 14px; }
.mcard-thumb {
  width: 46px;
  height: 58px;
  flex: none;
  border-radius: 10px;
  background: linear-gradient(158deg, #ff6ec7, #3b1a5c);
}
.mcard-row b { display: block; margin-top: 6px; font-size: 14.5px; font-weight: 700; letter-spacing: -.02em; }

.bar {
  margin-top: 11px;
  height: 5px;
  border-radius: 3px;
  background: rgba(245, 244, 236, .1);
  overflow: hidden;
}
.bar i {
  display: block;
  height: 100%;
  border-radius: 3px;
  background: linear-gradient(90deg, var(--aqua-deep), var(--aqua-soft));
}

.chips { margin-top: 12px; display: flex; gap: 7px; }
.chip {
  flex: 1;
  height: 34px;
  display: grid;
  place-items: center;
  border-radius: 9px;
  background: rgba(255, 138, 146, .08);
  border: 1px solid var(--line-soft);
  font-size: 13px;
  font-weight: 700;
  transition: var(--t);
}
.chip:hover { border-color: rgba(255, 138, 146, .3); }
.chip.is-on {
  background: linear-gradient(180deg, var(--aqua-bright), var(--aqua-deep));
  border-color: transparent;
  color: var(--ink);
}

.mcard-win { background: linear-gradient(150deg, rgba(61, 220, 132, .10), rgba(56, 24, 19, .55) 60%); }
.mcard-win strong { color: var(--win); }


/* ==================================================================
   OYUN KARTLARI
   Sağlayıcı görselleri birbirinden çok farklı renklerde geliyor.
   Beklemede hafif doygunluk kaybı + zayıf turkuaz soft-light katman
   hepsini aynı dünyaya çekiyor; hover'da gerçek renk geri geliyor.
   ================================================================== */

.grid-5 { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 18px; }
.grid-4 { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 18px; }

/* Kart bir <article>. Oyun linki kartı baştan başa kaplayan ayrı bir
   <a>, favori butonu onun kardeşi. Önce buton linkin içindeydi: fareyle
   çalışıyordu ama <a> içinde <button> geçersiz ve klavye tarafı bozuk. */
.gcard {
  position: relative;
  border-radius: 20px;
  overflow: hidden;
  /* Cerceve BORDER degil INSET GOLGE. Border kartin ic olculerini
     degistirip 5'li izgarada yarim piksel kaydiriyordu; inset golge
     yer kaplamiyor, hover'da kalinlasinca da hicbir sey oynamiyor.
     (Onceki surumde .gcard'da hic border yoktu ama hover'da
     border-color yaziyordu: halka hicbir zaman cizilmiyordu.) */
  box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .07),
              0 10px 24px rgba(0, 0, 0, .28);
  /* Ad/saglayici artik gorselin ALTINDA (.gcard-meta) - o seridin zemini. */
  background: var(--panel);
  transition: transform var(--t), box-shadow var(--t);
}
.gcard:hover {
  transform: translateY(-4px);
  box-shadow: inset 0 0 0 1px rgba(255, 138, 146, .42),
              inset 0 1px 0 rgba(255, 255, 255, .22),
              0 26px 56px rgba(0, 0, 0, .5);
}

/* Görsel alanı. Gorsel tema.games._oyun-gorsel ile iki katman girer
   (asagida .gorsel-bg / .gorsel-img) ve KESILMEDEN sigar.
   4:3 (2026-09-20, kullanici: "slot da da ayni sorunlar var"): tasarimin
   320/420 dikey posteri, saglayicinin kirpilmis 'card' donusumunu
   (480x640) basiyordu. Test DB'de aktif slot orijinallerinin %68'i yatay
   (325x234, 500x350, 580x430, 270x208 ~ 1.3-1.43), %21'i kare, %12'si
   dikey: 4:3 cogunu tam doldurur, kare/dikeyin yanlarinda bulanik bant
   kalir. .gcard-wide (anasayfa canli) 16:10 olarak kaliyor. */
.gcard-art {
  position: relative;
  aspect-ratio: 4 / 3;
  overflow: hidden;
  filter: saturate(.74) contrast(1.06) brightness(.96);
  transition: filter var(--t), transform var(--t);
}
.gcard-art img { width: 100%; height: 100%; object-fit: cover; }
.gcard-wide .gcard-art { aspect-ratio: 16 / 10; }

/* Oyun / masa gorseli (tema.games._oyun-gorsel): on katman gorselin TAMAMI,
   arka katman ayni gorselin bulanik kopyasi bos kenarlari doldurur. Oyun
   kartlari (.gcard-art, .gcard-wide dahil) ve canli lobi (.tcard-art,
   canli.css) kullanir. */
.gorsel-bg {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  filter: blur(18px) brightness(.55) saturate(1.1);
  transform: scale(1.2);
}
.gcard-art img.gorsel-img,
.tcard-art img.gorsel-img {
  position: relative;
  display: block;
  width: 100%;
  height: 100%;
  object-fit: contain;
  transition: transform var(--t);
}

.gcard:hover .gcard-art { filter: none; }
/* Buyume: yazi seridi gorselin altinda oldugu icin kutunun kendisi degil
   ICINDEKI gorsel buyur (kutu buyurse alt kenari seridin ustune tasiyor).
   Anasayfa canli karti (.gcard-wide) eskisi gibi kutuyu buyutur. */
.gcard-wide:hover .gcard-art { transform: scale(1.03); }
.gcard:not(.gcard-wide):hover .gcard-art img.gorsel-img { transform: scale(1.04); }

.gcard-veil {
  position: absolute;
  inset: 0;
  background: var(--aqua);
  opacity: .17;
  mix-blend-mode: soft-light;
  transition: opacity var(--t);
}
.gcard:hover .gcard-veil { opacity: 0; }

/* UC KATMAN, TEK ELEMAN.
   Tek bir alt perde yetmiyordu: kart dumduz bir renk ornegi gibi
   duruyordu ve acik renkli gorsellerde (altin sarisi bir kart)
   baslik zeminine karisiyordu. Ustte hafif bir isik, kenarlarda
   vinyet, altta gercek bir perde - ucu birden karta hacim veriyor
   ve baslik HER gorselde koyu bir zemine oturuyor.
   Sira onemli: listedeki ILK katman en ustte boyanir.
   2026-09-20: oyun kartinda baslik artik gorselin ALTINDA (.gcard-meta);
   alttaki koyu perde gorselin kendi basligini kapatiyordu, kalkti -
   isik ve vinyet kaldi (canli .tcard'daki zayif perdeyle ayni fikir).
   Baslik hala gorselin ustunde duran .gcard-wide kendi uc katmanini
   asagida tasiyor. */
.gcard-shade {
  position: absolute;
  inset: 0;
  background:
    radial-gradient(120% 86% at 50% 14%, rgba(255, 255, 255, .11), transparent 58%),
    radial-gradient(132% 112% at 50% 48%, transparent 44%, rgba(17, 8, 5, .44) 100%);
}
.gcard-wide .gcard-shade {
  background:
    radial-gradient(120% 90% at 50% 10%, rgba(255, 255, 255, .10), transparent 60%),
    radial-gradient(132% 118% at 50% 46%, transparent 42%, rgba(17, 8, 5, .54) 100%),
    linear-gradient(180deg, rgba(34, 16, 11, 0) 34%, rgba(25, 12, 9, .60) 68%, rgba(20, 10, 7, .95) 100%);
}

/* Ad + saglayici GORSELIN ALTINDA (canli .tcard-body gibi). 4:3 yatay
   kapakta gorselin ustune binen yazi kapagin kendi oyun adini kapatiyordu.
   Hizalama dir'i izler (RTL'de saga yasli). Anasayfa canli karti
   (.gcard-wide) eskisi gibi gorselin ustunde, perdesinin icinde. */
.gcard-meta {
  position: relative;
  z-index: 2;
  padding: 11px 14px 13px;
  text-align: start;
}
.gcard-wide .gcard-meta {
  position: absolute;
  inset-inline: 16px; bottom: 15px;
  padding: 0;
}
.gcard-meta b {
  display: block;
  font-size: 15px;
  font-weight: 700;
  letter-spacing: -.02em;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.gcard-meta small { font-size: 12px; font-weight: 300; color: rgba(245, 244, 236, .64); }

/* Hover katmanı. Dokunmatikte hover yok, o yüzden kartın kendisi de
   link — bu katman yalnızca masaüstünde bir ipucu. */
.gcard-hover {
  position: absolute;
  inset: 0;
  z-index: 3;
  display: grid;
  place-content: center;
  justify-items: center;
  gap: 14px;
  background: rgba(23, 10, 7, .6);
  opacity: 0;
  transition: opacity var(--t);
}
.gcard:hover .gcard-hover { opacity: 1; }

.gcard-link {
  position: absolute;
  inset: 0;
  z-index: 4;
  border-radius: inherit;
}

.fav {
  width: 34px;
  height: 34px;
  display: grid;
  place-items: center;
  border-radius: 50%;
  color: rgba(245, 244, 236, .8);
  transition: var(--t);
}
.gcard .fav {
  position: absolute;
  top: 10px; inset-inline-end: 10px;
  z-index: 5;                       /* linkin ustunde kalmali */
  opacity: 0;
  background: rgba(23, 10, 7, .55);
  backdrop-filter: blur(6px);
}
/* Favorilenmiş kartta kalp hep görünür; yoksa kullanıcı neyi
   işaretlediğini göremiyor. */
.gcard:hover .fav,
.gcard .fav:focus-visible,
.gcard .fav.is-on { opacity: 1; }
/* Dokunmatikte hover yok. */
@media (hover: none) { .gcard .fav { opacity: 1; } }

.fav:hover { color: var(--aqua-soft); }
/* İstek uçarken. Kalp bir tık küçülüyor ve imleç bekliyor gösteriyor;
   bu sırada gelen dokunuş yutuluyor. */
.fav[aria-busy="true"] { transform: scale(.86); cursor: progress; }
.fav svg { width: 19px; height: 19px; fill: none; }
.fav.is-on svg { fill: var(--coral); stroke: var(--coral); }

/* Canlı masa rozeti */
.badge-live {
  position: absolute;
  top: 12px; inset-inline-start: 12px;
  z-index: 2;
  height: 22px;
  display: flex;
  align-items: center;
  gap: 5px;
  padding: 0 9px;
  border-radius: 6px;
  background: var(--coral);
  /* Mercan zeminde açık yazı 10px'te 2.4:1'de kalıyordu. Koyu yazıyla
     aynı rozet 6:1'in üstüne çıkıyor, üstelik daha sıcak duruyor. */
  color: var(--ink);
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .08em;
}
.badge-live i { width: 4px; height: 4px; border-radius: 50%; background: rgba(35, 15, 11, .8); }

/* Yeni oyun rozeti. Ayni yeri paylasiyor: bir kartta en fazla BIR
   rozet - alti etiketli kart kullaniciya hicbir sey anlatmiyor.
   Mercan degil turkuaz: mercan "canli / simdi oluyor" demek, yeni
   olmak acil bir sey degil. */
.badge-new {
  position: absolute;
  top: 12px; inset-inline-start: 12px;
  z-index: 2;
  height: 22px;
  display: flex;
  align-items: center;
  padding: 0 9px;
  border-radius: 6px;
  background: var(--aqua-bright);
  color: var(--ink);
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
}


/* ==================================================================
   THE TIDE BOARD
   İmza mekaniği. Teklifler gece boyunca saatinde yüzeye çıkar; saati
   gelmemiş olan su altında ve kilitli durur.
   ================================================================== */

.tide-head { display: flex; align-items: flex-end; gap: 16px; margin-bottom: 30px; }
.tide-timer { margin-inline-start: auto; text-align: end; flex: none; }
.tide-timer span {
  font-size: 11px;
  font-weight: 600;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--tx-3);
}
.tide-timer b {
  display: block;
  margin-top: 7px;
  font-size: 30px;
  font-weight: 400;
  letter-spacing: -.01em;
  color: var(--aqua-soft);
}

.tide {
  position: relative;
  border-radius: 26px;
  overflow: hidden;
  background: linear-gradient(180deg, #331711 0%, #431d16 52%, #5f2220 100%);
}
.tide-water {
  position: absolute;
  left: 0; bottom: 74px;
  width: 100%;
  height: 90px;
}
.tide-caustic {
  position: absolute;
  left: 0; right: 0; bottom: 0;
  height: 130px;
  opacity: .12;
  filter: blur(12px);
  background:
    radial-gradient(24% 44% at 20% 74%, #faeff2 0%, rgba(250, 239, 242, 0) 62%),
    radial-gradient(20% 38% at 54% 88%, #faeff2 0%, rgba(250, 239, 242, 0) 62%),
    radial-gradient(26% 46% at 84% 76%, #faeff2 0%, rgba(250, 239, 242, 0) 62%);
}
.tide-grid {
  position: relative;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 20px;
  padding: 26px;
}

.drop {
  display: grid;
  align-content: space-between;
  padding: 22px;
  border-radius: 20px;
  background: linear-gradient(150deg, #501f1a, #2d140f);
  min-height: 198px;
}
.drop-k {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--aqua-soft);
}
.drop-k i { width: 6px; height: 6px; border-radius: 50%; background: var(--aqua-soft); }
.drop-v { margin-top: 12px; font-size: 44px; line-height: 1; }
.drop-d { margin-top: 4px; font-size: 13.5px; font-weight: 300; color: rgba(245, 244, 236, .6); }
.drop .btn { margin-top: 18px; }

/* Suyun altında kalan teklif: bulanık, kilitli, saatini bekliyor. */
.drop-under {
  position: relative;
  overflow: hidden;
  background: linear-gradient(150deg, rgba(54, 24, 18, .55), rgba(30, 14, 10, .55));
  border: 1px solid var(--line-soft);
}
.drop-under::before {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(95, 34, 32, .35), rgba(95, 34, 32, .62));
  backdrop-filter: blur(2px);
}
.drop-under > * { position: relative; }
/* Su altindaki teklifin etiketi. --tx-3 (.64) bu kartin ustundeki
   bulaniklik katmaniyla birlikte 4.15'e dusuyordu; .72 ayni
   hiyerarsiyi koruyup esigi geciyor (4.81). */
.drop-under .drop-k { color: rgba(245, 244, 236, .72); }
.drop-under .drop-v { color: var(--tx-3); }
.drop-under .drop-d { color: rgba(245, 244, 236, .68); }

.drop-lock {
  margin-top: 18px;
  height: 42px;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  border-radius: 999px;
  border: 1px solid rgba(245, 244, 236, .14);
  font-size: 14px;
  font-weight: 600;
  color: rgba(245, 244, 236, .7);
}
.drop-lock svg { width: 14px; height: 14px; }


/* ==================================================================
   KAZANC BANDI  (Tonight's Catch)
   Once tam bir bolumdu. Live -> Jackpots -> Hot Games hattini
   ortasindan kestigi ve anasayfa zaten uzun oldugu icin tek satirlik
   bir seride toplandi: ayni bilgi, bolumun dikey agirligi olmadan.
   ================================================================== */

.wins-sec { position: relative; z-index: 1; margin-top: 30px; }

.wins {
  display: flex;
  align-items: center;
  gap: 18px;
  padding: 12px 16px;
  border-radius: 18px;
  background: linear-gradient(120deg, rgba(51, 24, 17, .82), rgba(33, 16, 11, .82));
  border: 1px solid var(--line-soft);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .05);
}

.wins-k {
  display: flex;
  align-items: center;
  gap: 8px;
  flex: none;
  padding-inline-end: 16px;
  border-inline-end: 1px solid var(--line-soft);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .16em;
  text-transform: uppercase;
  color: var(--coral);
  white-space: nowrap;
}

/* Ray KENDI KENDINE AKMIYOR. Otomatik marquee okumayi zorlastiriyor,
   fareyi uzerine getirince durdurmak da yeni bir sorun; kullanici
   isterse iteliyor. Iki kenardaki solma devamin oldugunu soyluyor. */
.wins-rail {
  display: flex;
  gap: 10px;
  flex: 1;
  min-width: 0;
  overflow-x: auto;
  scrollbar-width: none;
  -webkit-mask-image: linear-gradient(90deg, #000 0%, #000 92%, transparent 100%);
          mask-image: linear-gradient(90deg, #000 0%, #000 92%, transparent 100%);
}
.wins-rail::-webkit-scrollbar { display: none; }

.wins-item {
  display: flex;
  align-items: center;
  gap: 10px;
  flex: none;
  padding: 8px 14px 8px 8px;
  border-radius: 12px;
  background: rgba(255, 255, 255, .03);
  border: 1px solid transparent;
  transition: background var(--t), border-color var(--t);
}
.wins-item:hover { background: rgba(255, 255, 255, .06); border-color: rgba(255, 138, 146, .26); }

.wins-item i {
  flex: none;
  width: 34px; height: 34px;
  border-radius: 9px;
  box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .1);
}
.wins-t { display: flex; flex-direction: column; min-width: 0; }
.wins-t b {
  font-size: 13px;
  font-weight: 700;
  letter-spacing: -.02em;
  white-space: nowrap;
}
.wins-t small {
  font-size: 11px;
  font-weight: 300;
  color: rgba(245, 244, 236, .58);
  white-space: nowrap;
}
.wins-item strong {
  margin-inline-start: 4px;
  font-size: 19px;
  font-weight: 400;
  color: var(--aqua-soft);
  white-space: nowrap;
}
/* Gecenin en buyugu tek basina isiniyor; hepsi vurgulu olursa
   hicbiri vurgulu degil. */
.wins-item.is-top { background: rgba(255, 115, 95, .09); }
.wins-item.is-top strong { color: #ffb59f; }

/* ==================================================================
   ÖDEME + GÜVEN
   ================================================================== */

.duo { display: grid; grid-template-columns: 1fr 1fr; gap: 64px; }

.block-k {
  font-size: 12px;
  font-weight: 600;
  letter-spacing: .2em;
  text-transform: uppercase;
  color: var(--tx-3);
}

.pays { margin-top: 18px; display: flex; flex-wrap: wrap; gap: 9px; }
/* Logo girecek: kutu ölçüsü sabit, içerik ortalanıyor. */
.pay {
  height: 40px;
  display: flex;
  align-items: center;
  padding: 0 18px;
  border-radius: 999px;
  background: var(--panel-2);
  font-size: 13px;
  color: var(--tx-2);
  transition: var(--t);
}
.pay:hover { color: var(--tx); border-color: rgba(255, 138, 146, .24); }

.trust { margin-top: 18px; display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.trust-item {
  display: flex;
  align-items: center;
  gap: 13px;
  padding: 15px 18px;
  border-radius: var(--r);
  background: var(--panel-2);
}
.trust-item svg { width: 19px; height: 19px; flex: none; color: var(--aqua); }
.trust-item b { display: block; font-size: 13.5px; font-weight: 600; }
.trust-item small { font-size: 12px; font-weight: 300; color: rgba(245, 244, 236, .6); }
.trust-care { border-color: rgba(255, 115, 95, .16); }
.trust-care svg { color: var(--coral); }


/* ==================================================================
   FOOTER
   ================================================================== */

.ft {
  position: relative;
  z-index: 1;
  margin-top: 76px;
  padding: 62px 0 40px;
  overflow: hidden;
}
.ft-motif {
  position: absolute;
  left: 0; bottom: -40px;
  width: 1440px;
  height: 300px;
  opacity: .03;
  pointer-events: none;
}
.ft-grid {
  position: relative;
  display: grid;
  grid-template-columns: 1.7fr 1fr 1fr 1fr;
  gap: 48px;
}
.ft-about {
  margin: 16px 0 0;
  max-width: 300px;
  font-size: 13px;
  font-weight: 300;
  line-height: 1.7;
  color: var(--tx-3);
}
.ft-social { margin-top: 20px; display: flex; gap: 9px; }
.ft-social a {
  width: 36px;
  height: 36px;
  display: grid;
  place-items: center;
  border-radius: 12px;
  background: var(--panel-3);
  color: var(--tx-3);
  transition: var(--t);
}
.ft-social a:hover { color: var(--aqua-soft); border-color: rgba(255, 138, 146, .3); }
.ft-social svg { width: 16px; height: 16px; }

/* Footer sutun basliklari h2: sayfanin son bolumu h2 oldugu icin
   h4 kullanmak baslik duzeninde 2'den 4'e atlama yapiyordu ve
   ekran okuyucu "arada bir baslik eksik" diye okuyor. */
.ft-col h2 {
  margin: 0;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--tx-4);
}
.ft-col ul {
  margin: 15px 0 0;
  padding: 0;
  list-style: none;
  display: grid;
  gap: 10px;
}
.ft-col a {
  font-size: 13.5px;
  font-weight: 300;
  color: var(--tx-2);
  transition: color var(--t);
}
.ft-col a:hover { color: var(--aqua-soft); }

.ft-btm {
  position: relative;
  margin-top: 44px;
  padding-top: 24px;
  border-top: 1px solid rgba(245, 244, 236, .07);
  display: flex;
  align-items: center;
  gap: 18px;
  flex-wrap: wrap;
  font-size: 12px;
  font-weight: 300;
  color: rgba(245, 244, 236, .52);
}
.age {
  width: 30px;
  height: 30px;
  flex: none;
  display: grid;
  place-items: center;
  border-radius: 50%;
  border: 1.4px solid rgba(245, 244, 236, .3);
  font-size: 10px;
  font-weight: 700;
}
.ft-copy { margin-inline-start: auto; }


/* ==================================================================
   MOBIL ALT MENU
   Masaustunde yok.
   ================================================================== */

.mbar { display: none; }


/* ==================================================================
   RESPONSIVE
   Beş kırılım: 1180 / 980 / 760 / 560 / 400. Bundan fazlası bakımı
   zorlaştırıyor — her yeni bölümde hepsini gözden geçirmek gerekiyor.
   ================================================================== */

/* Destek düğmesi hamburgerin OLMADIĞI her genişlikte başlıkta;
   hamburger çıktığı anda (980 ve altı) liste çekmeceye geçiyor.
   İki kural birbirinin tam tersi — arada boşluk kalmıyor.
   Önceki sürümde başlık 1281'den açılıyordu ama çekmece 980'de
   kapanıyordu; 981-1280 arasında destek hiçbir yerde görünmüyordu. */
@media (min-width: 981px) {
  .hd-help { display: block; }
}

@media (max-width: 1180px) {
  .grid-5 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  /* n+5, yalnizca 5 degil: favori rayina calisma aninda kart
     eklenebiliyor; tek bir :nth-child(5) kurali altinci karti geri
     gorunur kiliyordu ve satir 4+1 diye bolunuyordu. */
  .grid-5 > :nth-child(n+5) { display: none; }
  .duo { gap: 40px; }
  .offers { grid-template-columns: 1fr 1fr; }
}

@media (max-width: 980px) {
  .nav { display: none; }               /* tam menü çekmeceye taşınıyor */
  .hd-menu { display: grid; }
  /* Etiket kendi satirina cikiyor. Yan yana kalirsa ray ezilip tek
     kazanc gosteriyor; asil icerik ray, etiket baslik. */
  .wins { flex-wrap: wrap; gap: 10px; padding: 12px; }
  .wins-k { width: 100%; padding-inline-end: 0; border-inline-end: 0; }
  .wins-rail { flex: 1 0 100%; }
  .duo { grid-template-columns: 1fr; gap: 44px; }
  .ft-grid { grid-template-columns: 1fr 1fr; gap: 34px; }
  .stats { grid-template-columns: 1fr 1fr; }
  .stat:nth-child(2) { border-inline-end: 0; }
  /* Tek kolona düşünce büyük teklif üstte kalıyor; sıralama zaten
     önem sırası. */
  .offers { grid-template-columns: 1fr; }
  .offer-in { padding: 28px 26px 26px; }
  .stat:nth-child(-n+2) { border-bottom: 1px solid var(--line-soft); }
  .member-grid { grid-template-columns: 1fr 1fr; }

  /* Oyun kartları dar ekranda ray oluyor: dikey grid ekranı yiyor,
     ray hem daha çok oyun gösteriyor hem parmakla doğal. */
  .grid-5, .grid-4 {
    display: flex;
    gap: 14px;
    overflow-x: auto;
    scroll-snap-type: x proximity;
    padding-bottom: 4px;
    margin-inline: calc(var(--pad) * -1);
    padding-inline: var(--pad);
  }
  .grid-5 > *, .grid-4 > * { flex: 0 0 152px; scroll-snap-align: start; }
  .grid-5 > :nth-child(n+5) { display: block; }
  .grid-4 > * { flex-basis: 250px; }

  /* Alt bar burada aciliyor, ust menunun kapandigi yerde. Daha once
     760'ta açılıyordu; 761-980 arasında kullanıcı menüsüz kalıyordu. */
  .ft { margin-bottom: 78px; }          /* alt bar footer'ı kapatmasın */

  .mbar {
    position: fixed;
    left: 0; right: 0; bottom: 0;
    z-index: 70;
    display: grid;
    grid-template-columns: repeat(5, 1fr);
    height: 66px;
    padding-bottom: env(safe-area-inset-bottom);
    background: rgba(23, 11, 7, .94);
    backdrop-filter: blur(16px);
    border-top: 1px solid rgba(255, 138, 146, .1);
  }
  .mbar a {
    display: grid;
    place-items: center;
    align-content: center;
    gap: 4px;
    font-size: 10px;
    font-weight: 600;
    color: var(--tx-3);
  }
  .mbar a svg { width: 20px; height: 20px; }
  .mbar a.is-on { color: var(--aqua); }
  .mbar-deposit {
    justify-self: center;
    align-self: center;
    width: 54px;
    height: 54px;
    margin-top: -22px;
    border-radius: 50%;
    background: linear-gradient(180deg, var(--aqua-bright), var(--aqua-deep));
    color: var(--ink);
    box-shadow: 0 8px 24px rgba(155, 52, 61, .38);
    gap: 0;
  }
  .mbar-deposit svg { width: 22px; height: 22px; }
}

@media (max-width: 760px) {
  :root { --hd: 62px; }

  .hero { height: 560px; }
  .hero-in { padding-top: 112px; }
  /* Dar ekranda kare kadraja yakınsıyor; ortayı alırsak elde boş su
     kalıyor. Sağa kaydırıp adayı ve ufuk çizgisini kadrajda tutuyoruz. */
  .hero-shot img { object-position: 84% 46%; }
  /* Dar ekranda metin bandı görselin ufkuyla çakışıyor; karartma
     geniş ve biraz daha aşağı. */
  .hero-scrim { background:
    radial-gradient(165% 56% at 50% 40%, rgba(17, 8, 5, .8) 0%, rgba(17, 8, 5, .42) 48%, rgba(17, 8, 5, 0) 78%),
    linear-gradient(180deg, rgba(15, 8, 5, .78) 0%, rgba(15, 8, 5, .3) 30%, rgba(15, 8, 5, 0) 54%); }
  .hero-cta .btn { flex: 1; min-width: 150px; }

  .hd-login { display: none; }          /* giriş alt bardaki Hesap sekmesinden */
  .hd-bal { padding-inline-end: 8px; }
  .hd-bal span { display: none; }        /* dar başlıkta yalnız rakam kalıyor */

  .tide-grid { grid-template-columns: 1fr; gap: 14px; padding: 18px; }
  .drop { min-height: 0; }
  .tide-water { bottom: auto; top: 40%; }
  .tide-head { flex-wrap: wrap; }
  .tide-timer { margin-inline-start: 0; text-align: start; }

  .trust { grid-template-columns: 1fr; }
  .sec-more { display: none; }

}

@media (max-width: 560px) {
  .stats { grid-template-columns: 1fr; }
  .stat { border-inline-end: 0; border-bottom: 1px solid var(--line-soft); }
  .stat:last-child { border-bottom: 0; }
  .member-grid { grid-template-columns: 1fr; }
  .ft-grid { grid-template-columns: 1fr; gap: 28px; }
  /* Rakam metnin ustune degil YANINA. Once alt alta koymustuk:
     dordu de dort satir oluyordu ve tek basina teklifler bloku
     mobilde 1150px'e cikiyordu. Rakam kucultulup sabit genisligi
     kalkinca yan yana rahat siginiyor, her kart bir satir kisaliyor. */
  .offer-row { align-items: flex-start; gap: 14px; padding: 16px 18px; }
  .offer-row .offer-v { min-width: 0; font-size: 26px; line-height: 1.15; }
  .offer-c b { font-size: 15px; }
  .offer-c .offer-terms { margin-top: 9px; }
  .offer-go { display: none; }
  .ft-copy { margin-inline-start: 0; width: 100%; }
}

/* Başlıkta marka + arama + menü + Join dört öğe. 430px altında toplam
   genişlik daralıyor ve 320'de taşıyordu; arama çekmeceye taşınıyor,
   orada tam genişlikte bir satır olarak duruyor. */
/* ÜYE BAŞLIĞI dar ekranda. Bu blok yoktu: dar başlık kuralları yalnız
   ziyaretçi için (Login / Join Now) yazılmıştı, üye girince bakiye +
   Deposit + hesap ikonu üçü birden sığmıyordu ve son ikisi kadraj
   dışında kalıyordu. overflow-x: clip yüzünden taşma testlerinde de
   görünmüyordu — 560px'te 16px, 320px'te 148px taşıyordu. */
@media (max-width: 560px) {
  /* Hesap ikonu alt bardaki Account sekmesinde zaten var. */
  .hd-act > .icon-btn.auth-member { display: none; }
}

@media (max-width: 430px) {
  .hd-act { gap: 8px; }
  .hd-act [data-open-search] { display: none; }
  /* Deposit yalnız ikon. Aynı eylem alt bardaki + düğmesinde de var,
     ama başlıktan da erişilebilir kalsın. */
  .hd-dep { display: none; }
  .hd-act .btn-primary.auth-member { padding: 0 13px; }
  .drawer-search { display: flex; }
  .btn-sm { padding: 0 16px; }
}

/* 360px ve altı (iPhone SE, eski Android). Marka bir tık küçülüyor,
   Join kısalıyor: bu genişlikte "Join Now" ile birlikte üçü sığmıyor,
   buton kadraj dışında kalıyordu. */
@media (max-width: 380px) {
  .brand-logo { height: 24px; }
  .hd-long { display: none; }
  .hd-short { display: inline; }
  .btn-sm { padding: 0 14px; }
  /* Üyede Deposit başlıktan da çıkıyor: alt bardaki ortadaki + düğmesi
     aynı eylem ve mobilde hep ekranda. Bakiye kalıyor, çünkü onu başka
     yerden bir bakışta göremiyor. */
  .hd-act .btn-primary.auth-member { display: none; }
  .hd-bal b { font-size: 15px; }
}

@media (max-width: 400px) {
  .grid-5 > * { flex-basis: 136px; }
  .grid-4 > * { flex-basis: 218px; }
  .drop-v { font-size: 36px; }
}


/* Hareket azaltma tercihi açıkken bütün atmosfer durur; sayfa
   okunabilirliğini hiç kaybetmez. */
@media (prefers-reduced-motion: reduce) {
  * { animation: none !important; transition: none !important; }
  html { scroll-behavior: auto; }
}


/* ==================================================================
   KEŞİF ŞERİDİ
   Birkaç bin oyunun içinden beş tanesini gösterip "View all" demek
   yeterli değil. Kullanıcı burada sayfadan çıkmadan gezip filtreliyor.
   ================================================================== */

.disco {
  display: flex;
  align-items: center;
  gap: 18px;
  padding: 10px;
  border-radius: 999px;
  border: 1px solid var(--line);
  background: linear-gradient(150deg, rgba(56, 24, 19, .6), rgba(44, 20, 15, .42) 72%);
}

.disco-chips {
  display: flex;
  gap: 6px;
  flex: 1;
  min-width: 0;
  overflow-x: auto;
}

.chip-nav {
  flex: none;
  padding: 9px 17px;
  border-radius: 999px;
  font-size: 13.5px;
  font-weight: 600;
  white-space: nowrap;
  color: var(--tx-2);
  transition: background var(--t), color var(--t);
}
.chip-nav:hover { background: rgba(255, 138, 146, .09); color: var(--tx); }
.chip-nav.is-on {
  background: linear-gradient(180deg, var(--aqua-bright), var(--aqua-deep));
  color: var(--ink);
}

/* ==================================================================
   DIL GECISI
   Iki dil var. Acilir liste bir tiklama fazla ve iki secenek icin
   fazladan bir katman; yan yana iki link hem daha hizli hem sitenin
   Divehi de konustugunu ILK BAKISTA soyluyor.
   ================================================================== */

.hd-lang {
  display: flex;
  align-items: center;
  flex: none;
  padding: 3px;
  border-radius: 999px;
  border: 1px solid var(--line);
  background: rgba(255, 255, 255, .03);
}
.hd-lang a {
  padding: 4px 11px;
  border-radius: 999px;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: .04em;
  line-height: 1.5;
  color: var(--tx-3);
  white-space: nowrap;
  transition: background var(--t), color var(--t);
}
.hd-lang a:hover { color: var(--tx); }
.hd-lang a.is-on {
  background: rgba(255, 138, 146, .14);
  color: var(--aqua-bright);
}
/* Thaana Latin'e gore kisa govdeli; ayni kutuda kucuk kaliyor.
   Yazi tipini ve puntoyu dilin kendisinden aliyoruz, kapsayicidan
   degil - bu yuzden [lang] uzerinden. */
.hd-lang a[lang="dv"] {
  font-family: var(--thaana);
  font-size: 14px;
  font-weight: 500;
}

/* Cekmecede tam genislikte iki satir: dar ekranda iki kucuk hap
   parmakla isabet ettirilemiyor. */
.drawer-lang {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 6px;
  margin-top: 18px;
  padding: 4px;
  border-radius: 14px;
  border: 1px solid var(--line);
  background: rgba(255, 255, 255, .03);
}
.drawer-lang a {
  padding: 11px 10px;
  border-radius: 10px;
  text-align: center;
  font-size: 13.5px;
  font-weight: 600;
  color: var(--tx-2);
  transition: background var(--t), color var(--t);
}
.drawer-lang a.is-on { background: rgba(255, 138, 146, .14); color: var(--aqua-bright); }
.drawer-lang a[lang="dv"] { font-family: var(--thaana); font-size: 16px; font-weight: 500; }

/* Hesap ekranlarinda baslik yok; gecis marka satirinin altinda. */
.auth-lang { margin-top: 14px; align-self: flex-start; }

/* Dil gecisi menuyle beraber cekmeceye gidiyor. Olculdu: basliktaki
   hap 93px ve 560px'te bakiyeyi, 390px'te Deposit dugmesini disari
   itiyordu; cekmecede zaten tam genislikte iki satir var.
   Kural BURADA, yukaridaki 980 blogunda degil: o blok dosyada
   .hd-lang tanimindan ONCE geliyor ve display: flex onu eziyordu.
   Hesap ekranlarindaki gecis kaliyor - orada baslik yok. */
@media (max-width: 980px) {
  .hd-lang:not(.auth-lang) { display: none; }
}


.disco-tools { display: flex; align-items: center; gap: 8px; flex: none; }

.disco-btn {
  display: flex;
  align-items: center;
  gap: 9px;
  height: 40px;
  padding: 0 16px;
  border-radius: 999px;
  border: 1px solid var(--line-tx);
  font-size: 13.5px;
  font-weight: 600;
  white-space: nowrap;
  color: var(--tx-2);
  transition: border-color var(--t), color var(--t);
}
.disco-btn:hover,
.disco-btn[aria-expanded="true"] { border-color: rgba(255, 138, 146, .34); color: var(--tx); }
.disco-btn svg { width: 15px; height: 15px; flex: none; }
.disco-caret { width: 11px; height: 8px; color: var(--tx-3); }

/* Klavye kısayolu rozeti. "/" tuşu zaten aramaya götürüyordu ama
   hiçbir yerde yazmıyordu. */
.disco-search kbd {
  padding: 2px 7px;
  border-radius: 6px;
  border: 1px solid var(--line-tx);
  font: inherit;
  font-size: 11.5px;
  color: var(--tx-3);
}


/* ==================================================================
   AÇILIR LİSTELER
   Destek kanalları ve sağlayıcı filtresi. Katman değil: arka planı
   kilitlemiyor, odağı hapsetmiyor.
   ================================================================== */

.pop-wrap { position: relative; }

.pop {
  position: absolute;
  top: calc(100% + 10px);
  inset-inline-end: 0;
  z-index: 60;
  min-width: 208px;
  padding: 7px;
  border-radius: 16px;
  border: 1px solid var(--line);
  background: rgba(34, 16, 11, .96);
  backdrop-filter: blur(18px);
  box-shadow: 0 22px 48px rgba(0, 0, 0, .5);
}
/* display kuralı yok, [hidden] kendi işini görüyor; yine de açıkça
   yazıyoruz ki sonradan display eklenirse tuzak olmasın. */
.pop[hidden] { display: none; }

.pop a {
  display: flex;
  align-items: center;
  gap: 11px;
  padding: 10px 12px;
  border-radius: 11px;
  font-size: 14px;
  font-weight: 500;
  color: var(--tx-2);
  transition: background var(--t), color var(--t);
}
.pop a:hover { background: rgba(255, 138, 146, .09); color: var(--tx); }
.pop a.is-on { color: var(--aqua-soft); }
.pop svg { width: 17px; height: 17px; flex: none; color: var(--tx-3); }

.pop-more {
  margin-top: 4px;
  padding-top: 12px !important;
  border-top: 1px solid var(--line-soft);
  border-radius: 0 0 11px 11px;
  font-size: 13px !important;
  color: var(--aqua-soft) !important;
}


/* ==================================================================
   BOŞ DURUM
   Boş bir ray göstermek kullanıcıya bir şeyin bozuk olduğunu
   düşündürüyor; ne yapması gerektiğini söylemek daha iyi.
   ================================================================== */

.empty {
  display: grid;
  justify-items: center;
  gap: 14px;
  padding: 52px 24px;
  border-radius: var(--r-lg);
  border: 1px dashed var(--line);
  background: rgba(56, 24, 19, .28);
  text-align: center;
}
.empty[hidden] { display: none; }
.empty svg { width: 26px; height: 26px; color: var(--tx-4); fill: none; }
.empty p {
  margin: 0;
  max-width: 34ch;
  font-size: 14.5px;
  font-weight: 300;
  color: var(--tx-3);
}


@media (max-width: 980px) {
  /* Araçlar chip'lerin altına iniyor; tek satırda ikisi de sığmıyor. */
  .disco {
    flex-direction: column;
    align-items: stretch;
    gap: 12px;
    border-radius: var(--r-lg);
    padding: 12px;
  }
  .disco-chips { margin-inline: -2px; padding-inline: 2px; }
  .disco-tools > * { flex: 1; justify-content: center; }
  .pop { inset-inline-end: auto; inset-inline-start: 0; }
}

@media (max-width: 560px) {
  .disco-search span { display: none; }   /* ikon ve kısayol yeter */
  .disco-search { flex: 0 0 88px; }
}


/* ==================================================================
   ARAMA PANELİ
   Sayfanın üstünde açılıyor, ekranın ortasında değil biraz yukarıda:
   liste büyüdükçe panel aşağı doğru uzasın, her sonuçta yerinden
   oynamasın.
   ================================================================== */

.sbox {
  position: fixed;
  inset: 0;
  z-index: 96;
  display: grid;
  align-items: start;
  justify-items: center;
  padding: clamp(16px, 9vh, 96px) 18px 24px;
  overflow-y: auto;
  background: rgba(10, 5, 3, 0);
  transition: background 200ms ease;
}
/* .sheet ile aynı tuzak: display:grid tarayıcının [hidden] kuralını
   eziyor, kapalı panel görünmez bir cam gibi tıklamaları yutuyor. */
.sbox[hidden] { display: none; }
.sbox.is-open { background: rgba(10, 5, 3, .74); }

.sbox-panel {
  width: 100%;
  max-width: 620px;
  border-radius: 20px;
  border: 1px solid var(--line);
  background: linear-gradient(180deg, #3e1b15, #23110b 70%, #150c07);
  box-shadow: 0 40px 90px rgba(0, 0, 0, .6);
  overflow: hidden;
  transform: translateY(-10px);
  opacity: 0;
  transition: transform 200ms cubic-bezier(.32, .72, 0, 1), opacity 160ms ease;
}
.sbox.is-open .sbox-panel { transform: none; opacity: 1; }

.sbox-top {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 14px 14px 14px 18px;
  border-bottom: 1px solid var(--line);
}
.sbox-icon { width: 19px; height: 19px; flex: none; color: var(--aqua-soft); }

.sbox-input {
  flex: 1;
  min-width: 0;
  border: 0;
  background: none;
  color: var(--tx);
  font: 500 17px/1.3 'DM Sans', system-ui, sans-serif;
  padding: 6px 0;
}
.sbox-input::placeholder { color: var(--tx-4); }
.sbox-input:focus { outline: none; }
/* Tarayıcının kendi temizleme çarpısı ile bizim kapatma düğmemiz
   yan yana iki çarpı oluyor. */
.sbox-input::-webkit-search-cancel-button { display: none; }

.sbox-x { flex: none; }
.sbox-x svg { width: 16px; height: 16px; }

.sbox-res { max-height: min(52vh, 420px); overflow-y: auto; }
.sbox-res:empty { display: none; }
/* Bir onceki sorgunun sonuclari, yenisi gelene kadar. Yaris kosulu
   degil; ama input'ta baska bir kelime dururken listeyi tam
   parlaklikta gostermek onlari guncelmis gibi okutuyor. */
.sbox-res.is-wait { opacity: .42; pointer-events: none; }

.sbox-h {
  padding: 14px 18px 6px;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--tx-4);
}

.sbox-hit {
  display: flex;
  align-items: baseline;
  gap: 10px;
  padding: 10px 18px;
  color: rgba(245, 244, 236, .88);
  text-decoration: none;
}
.sbox-hit span { font-weight: 500; }
/* Eşleşen parça kalın. Kullanıcı sonucun neden geldiğini görsün. */
.sbox-hit b { color: var(--aqua-soft); font-weight: 700; }
.sbox-hit small {
  margin-inline-start: auto;
  /* --tx-4 (.54) burada 4.25:1 kaliyordu, esik 4.5. Panel zemini
     sayfa zemininden daha koyu; token yerine olculmus deger. */
  color: rgba(245, 244, 236, .70);
  font-size: 12px;
}
/* Klavye seçimi ile fare vurgusu AYNI görünüyor; ok tuşuyla gezerken
   "şu an neredeyim" sorusu tek bir işaretle cevaplanıyor. */
.sbox-hit:hover,
.sbox-hit.is-on { background: rgba(255, 138, 146, .10); color: var(--tx); }

.sbox-none { padding: 22px 18px; color: var(--tx-3); font-size: 14px; }

.sbox-foot {
  display: flex;
  flex-wrap: wrap;
  gap: 14px;
  padding: 11px 18px;
  border-top: 1px solid var(--line);
  color: var(--tx-4);
  font-size: 12px;
}
.sbox-foot kbd {
  display: inline-block;
  min-width: 18px;
  margin-inline-end: 3px;
  padding: 1px 5px;
  border: 1px solid var(--line);
  border-radius: 5px;
  background: rgba(255, 255, 255, .05);
  font: 600 11px/1.5 'DM Sans', system-ui, sans-serif;
  text-align: center;
}
/* Ekran okuyucu için sonuç sayısı; görsel olarak gerekmiyor. */
.sbox-say {
  position: absolute;
  width: 1px; height: 1px;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
}

@media (max-width: 560px) {
  .sbox { padding-top: 0; }
  .sbox-panel { max-width: none; border-radius: 0 0 20px 20px; border-top: 0; }
  .sbox-foot { display: none; }   /* dokunmatikte klavye ipucu gereksiz */
}

/* Favori rayı boşalınca gizleniyor; display:grid yine [hidden]'ı eziyor. */
.grid-5[hidden], .grid-4[hidden] { display: none; }
.sec-more[hidden] { display: none; }
/* .btn inline-flex; [hidden] tek başına yetmiyor. */
.empty [hidden] { display: none; }


/* ==================================================================
   JACKPOTLAR
   Üç kart, bir satır. Ağırlık RAKAMDA: oyun adı ve stüdyo küçük,
   tutar serif ve büyük. Jackpot bir kategori değil, bir sayı.
   ================================================================== */

/* UC ESIT KUTU DEGIL. Once ucu de ayni genislik, ayni punto, ayni
   parlaklikti; MEGA ile MINOR arasindaki tek fark rakamin kendisiydi
   ve goz once en soldakine degil en uzun sayiya gidiyordu. Simdi
   genislik, punto ve isik ayni siraya diziliyor: MEGA baskin, MAJOR
   orta, MINOR sakin. */
.jp {
  display: grid;
  grid-template-columns: 1.34fr 1fr 1fr;
  gap: 16px;
}

/* YALNIZ BIRINCI KART, KART. Ucu de ayni gradyanli-cerceveli kutu
   oldugunda hiyerarsi sadece punto farkina kaliyordu ve sayfa "her
   sey kart" hissi veriyordu. MEGA kart olarak duruyor, MAJOR ve
   MINOR araya sac teli cizgi konmus birer satir: goz once kartin
   uzerine gidiyor, digerleri okunmayi bekliyor. */
.jp-card {
  position: relative;
  display: grid;
  gap: 6px;
  padding: 22px 4px 20px;
  text-decoration: none;
  transition: var(--t);
}
/* Ayirici YALNIZ ucuncunun onunde. Ikincinin de onune konunca
   MEGA kartinin kendi cercevesiyle ust uste geliyor ve MAJOR ile
   MINOR iki acik kutu gibi okunuyordu. */
.jp-card + .jp-card { padding-inline-start: 24px; }
.jp-card + .jp-card + .jp-card { border-inline-start: 1px solid var(--line-soft); }
.jp-card:hover .jp-pot { color: var(--aqua-soft); }

/* Birinci kart: sayfadaki tek jackpot kutusu. */
.jp-card:first-child {
  padding: 26px 28px 24px;
  border-radius: var(--r);
  border: 1px solid rgba(255, 138, 146, .3);
  background:
    radial-gradient(120% 130% at 6% 0%, rgba(255, 138, 146, .2), transparent 62%),
    linear-gradient(150deg, #431e16, #27120d);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .12), 0 18px 44px rgba(0, 0, 0, .34);
}
.jp-card:first-child:hover { border-color: rgba(255, 138, 146, .5); }
.jp-card:first-child .jp-pot { font-size: clamp(34px, 4.1vw, 52px); }
.jp-card:first-child .jp-tier { color: var(--aqua-bright); }

/* Ucuncu kart geri cekiliyor: rakam ayni yazi tipinde ama daha sonuk. */
.jp-card:last-child .jp-pot { font-size: clamp(24px, 2.6vw, 33px); color: rgba(245, 244, 236, .74); }

.jp-tier {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .2em;
  text-transform: uppercase;
  color: var(--aqua-soft);
}

.jp-pot {
  font-size: clamp(28px, 3.2vw, 40px);
  line-height: 1.05;
  color: var(--tx);
  /* Sayı büyüyüp küçüldükçe satır zıplamasın; jackpot rakamı sürekli
     değişiyor ve yanındaki metni ittirmemeli. */
  font-variant-numeric: tabular-nums;
}

.jp-game { font-size: 13px; color: var(--tx-3); }
.jp-game i { font-style: normal; color: var(--tx-4); }
.jp-game i::before { content: '·'; margin: 0 6px; }
/* Saglayici adi kendi icinde bolunmesin: "Pragmatic" / "Play"
   yerine butun etiket alt satira insin. */
.jp-game i { white-space: nowrap; }

.jp-note { margin-top: 16px; }


/* ==================================================================
   STÜDYOLAR
   İnce şerit. Kutu ölçüsü logo için sabit; şimdilik içinde yazı var.
   ================================================================== */

/* Altindaki odeme blogu .wrap, kendi ust boslugu yok. Bolumler
   arasi payi burada veriyoruz. */
.studios-sec { margin-bottom: var(--gap); }

/* Bu da panel degil satir. Studyo adlari zaten kendi haplarinda;
   onlari bir de kutuya koymak kutu icinde kutu demekti. */
.studios {
  display: flex;
  align-items: center;
  gap: 20px;
  padding: 16px 0;
  border-block: 1px solid var(--line-soft);
}

.studios-k {
  flex: none;
  margin: 0;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .2em;
  text-transform: uppercase;
  color: var(--tx-3);
}

.studio-row { display: flex; gap: 9px; overflow-x: auto; }

/* .pay ile aynı kalıp: logo geldiğinde ölçü değişmesin. */
.studio {
  flex: none;
  height: 38px;
  display: flex;
  align-items: center;
  padding: 0 16px;
  border-radius: 999px;
  background: var(--panel);
  font-size: 13px;
  color: var(--tx-2);
  text-decoration: none;
  white-space: nowrap;
  transition: var(--t);
}
.studio:hover { color: var(--tx); background: rgba(255, 138, 146, .10); }

.studios-more {
  flex: none;
  margin-inline-start: auto;
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 13px;
  color: var(--aqua-soft);
  text-decoration: none;
  white-space: nowrap;
}
.studios-more svg { width: 14px; height: 14px; }
.studios-more:hover { color: var(--tx); }

/* Dar ekranda uc kart alt alta duruyor ve sira zaten hiyerarsiyi
   kuruyor; buyuk punto burada yalniz oyun adini eziyordu
   ("Divine Fortune" iki satira duserken rakam tek satirda). */
@media (max-width: 560px) {
  .jp-pot,
  .jp-card:first-child .jp-pot,
  .jp-card:last-child .jp-pot { font-size: 27px; }
  .jp-card:first-child { padding: 22px 24px 20px; }
  .jp-game { font-size: 12.5px; }
}


@media (max-width: 980px) {
  .jp { grid-template-columns: 1fr; gap: 12px; }
  .jp-card { grid-template-columns: 1fr auto; align-items: center; }
  .jp-tier { grid-column: 1; }
  .jp-pot  { grid-column: 2; grid-row: 1 / span 2; text-align: end; }
  .jp-game { grid-column: 1; }

  .studios { flex-wrap: wrap; }
  .studio-row {
    order: 3;
    width: 100%;
    margin-inline: -22px;
    padding-inline: 22px;
  }
  .studios-more { margin-inline-start: auto; }
}


/* ==================================================================
   DIL VE YON
   Kaynak dil Ingilizce. Tasarim tek bir dile gore degil, cevirinin
   ustune oturacak sekilde kuruldu: kutu ozellikleri mantiksal
   (margin-inline-start, inset-inline), fiziksel olanlar yalniz
   dekoratif katmanlarda kaldi (dalgalar, caustic, partikuller) -
   onlar zaten simetrik.

   Bu blok yalnizca dilin KENDI getirdigi farklari tasiyor. Yeni bir
   dil eklerken buraya bakin, bolum stillerine degil.
   ================================================================== */

/* ---- Sagdan sola  (Divehi) ----
   Desteklenen tek RTL dil Divehi. Sunucu <html dir="rtl" lang="dv">
   basiyor; duzen kendiliginden aynalaniyor cunku butun kutu ozellikleri
   mantiksal (margin-inline-start, inset-inline, text-align: start).
   El ile duzeltilmesi gereken yalniz YON TASIYAN ogeler. */

/* Ok ikonlari. Bunlar bir YON gosteriyor; aynalanmazsa "ileri" oku
   geriyi gosteriyor. Asagi bakan caret'ler (.disco-caret) bunun
   disinda: onlar acilma yonu, okuma yonu degil. */
[dir="rtl"] .studios-more svg,
[dir="rtl"] .offer-go { transform: scaleX(-1); }
[dir="rtl"] .offer-row:hover .offer-go { transform: scaleX(-1) translateX(3px); }

/* Cekmece ekranin bittigi kenardan giriyor; RTL'de o kenar soldadir.
   Panelin YERI inset-inline-end ile kendiliginden geciyor; burada
   yalniz kapali haldeki kayma yonu ve golge duzeltiliyor. */
[dir="rtl"] .drawer-panel {
  transform: translateX(-100%);
  box-shadow: 28px 0 60px rgba(0, 0, 0, .5);
}
[dir="rtl"] .drawer.is-open .drawer-panel { transform: none; }

/* Kaydirmali raylar. */
[dir="rtl"] .grid-5,
[dir="rtl"] .grid-4,
[dir="rtl"] .disco-chips,
[dir="rtl"] .studio-row { direction: rtl; }

/* Rakamlar her dilde soldan saga okunur. Bakiye, jackpot, carpan ve
   geri sayim RTL'de de LTR kalmali; yoksa "1.284" ile "04:07:00"
   parcalari ters siraya diziliyor. */
[dir="rtl"] [data-count],
[dir="rtl"] [data-countdown],
[dir="rtl"] [data-ends-at],
[dir="rtl"] .hd-bal b,
[dir="rtl"] .jp-pot,
[dir="rtl"] .money,
[dir="rtl"] [data-money] { direction: ltr; unicode-bidi: isolate; }

/* Sunucunun bastigi tutarlar da ayni yalitimi almali. Script'in
   guncelledigi rakamlarda data-money zaten var; duz metin olarak
   basilan tutarlara .money yeter.

   SINIF YALNIZ TUTARI KAPSAR, cumleyi degil:
       <b class="serif money">MVR 1,240.60</b>          ic icerik yalniz tutar
       <small><bdi class="money">MVR 1,440</bdi> left</small>   cumle icinde
   Butun cumleye verilirse "left", "up to" gibi CEVRILECEK kelimeler de
   zorla soldan saga oluyor ve Divehi cumlenin ortasinda ters donuyor.

   <bdi> bilerek: yalitimi kendisi yapiyor, CSS yuklenmese de dogru
   kaliyor. */

/* Marka adi artik bir gorsel, yalitmaya gerek kalmadi; alttaki
   telif satiri hala metin. */
.ft-copy { unicode-bidi: isolate; }
/* Hero basligi artik bir gorsel; RTL'de yon cevirmesine gerek yok.
   Sirali metin olmadigi icin "BETGECCE" sorunu da kalmadi. */

/* Sayfanin kendi yatay kaydirmasi kapali kalsin. */
[dir="rtl"] body { overflow-x: clip; }

/* ---- Thaana  (Divehi) ----
   DM Serif Display ve Plus Jakarta Sans'ta Thaana karakteri YOK; bu
   yuz baglanmadan Divehi kutu kutu gorunuyordu. Noto Sans Thaana
   head'deki Google Fonts satirina eklendi.

   Baslik serifi de bu dilde degisiyor: Thaana'da serif/sans ayrimi
   Latin'deki gibi calismiyor, DM Serif'in tasidigi agirligi ayni
   yuzun kalin kesimiyle kuruyoruz. Gercek Divehi metin geldiginde
   390px'te hero basligi, form alanlari, dugmeler, geri sayim, jackpot
   rakami ve mobil cekmece yeniden bakilacak. */
:root { --thaana: 'Noto Sans Thaana', 'MV Faseyha', 'A_Faruma', sans-serif; }

[lang="dv"] body,
[lang="dv"] .serif,
[lang="dv"] .auth-title,
[lang="dv"] .page-title,
[lang="dv"] .sec-title { font-family: var(--thaana); }

/* Serif basliklar Thaana'da agirligini kalinliktan aliyor. */
[lang="dv"] .serif,
[lang="dv"] .auth-title,
[lang="dv"] .page-title,
[lang="dv"] .sec-title { font-weight: 600; }

/* Thaana harfleri Latin'e gore daha kisa govdeli; ayni punto kucuk
   duruyor ve satir araligi dar kaliyor. */
[lang="dv"] { font-size: 1.06em; line-height: 1.7; }

/* ---- Metin uzamasi ----
   Ayni cumle Divehi'de baska bir uzunluga oturuyor ve ceviri gelmeden
   ne kadar oldugunu bilemiyoruz. Bu yuzden hicbir dugmeye sabit
   genislik verilmedi; asagidakiler yalniz taşma emniyeti. */
/* Dugmede nowrap, uzun cevirinin kutudan tasmasi demek. Iki satira
   inmesi cirkin ama tasmasi bozuk. Yatay kayan raylardaki chip ve
   studyo plakalari bunun disinda: onlar zaten kayiyor, sarmalari
   satiri bozuyor. */
.btn { white-space: normal; }
.sec-title, .auth-title { overflow-wrap: break-word; }
/* Uzun tek kelimeler (Almanca birlesik adlar) kutuyu patlatmasin. */
.gcard-meta b, .studio, .chip-nav { overflow-wrap: anywhere; }


/* Arama katmanindaki "hepsini gor" satiri. Katman ilk besi
   gosteriyor; gerisine giden bir yol olmazsa kullanici katmanda
   sikisiyor. Sonuc yokken hidden duruyor - js/app.js yaziyor. */
.sbox-all {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 12px 20px;
  border-top: 1px solid var(--line-soft);
  font-size: 13.5px;
  font-weight: 600;
  color: var(--aqua-soft);
  transition: background var(--t);
}
.sbox-all:hover { background: rgba(255, 138, 146, .07); }
.sbox-all svg { width: 15px; height: 15px; margin-inline-start: auto; flex: none; }
[dir="rtl"] .sbox-all svg { transform: scaleX(-1); }
/* display:flex tarayicinin [hidden] kuralini eziyor. */
.sbox-all[hidden] { display: none; }


/* ==================================================================
   YAN RAY  (.side)
   Casino tarafindaki sayfalarda kalici kategori menusu. Baslikdaki
   menu sitenin ANA bolumlerini gosteriyor; burasi KATALOG icinde
   gezinme yeri. Ikisi ayri is.

   NEREDE VAR: anasayfa, casino, canli casino, oyun sayfasi,
   studyolar, arama, promosyonlar, Private.
   NEREDE YOK: hesap alani ve belge sayfalari - orada zaten bir yan
   menu (.hs-nav) ya da icindekiler var. Iki tane yan menu olmaz.

   KAPALI HALDE IKON RAYI, acildiginda etiketli. Acilma HOVER ILE
   DEGIL, DUGMEYLE: fare uzerinden gectiginde genisleyen bir ray
   imlecin altindaki sayfayi kaydiriyor ve kullanici tiklamak
   istedigi seyi kaciriyor. Durum <html data-rail> uzerinde;
   sunucu kullanicinin son tercihini basarsa sayfa acilirken
   ziplama da olmuyor.
   ================================================================== */

:root { --side: 76px; }
:root[data-rail="open"] { --side: 244px; }

/* Icerik rayin altina girmiyor, YANINA kayiyor. Ustune binen bir
   ray sayfanin sol kenarindaki her seyi (kart, baslik, footer)
   oruyor. */
@media (min-width: 981px) {
  body:has(.side) { padding-inline-start: var(--side); }

  /* BASLIGA AYRICA DOLGU VERILMIYOR. Onceden hem govde hem baslik
     var(--side) kadar iceri itiliyordu: marka isareti sayfa
     icerigin den 76px saga kayiyor, baslikla altindaki sutun ayni
     dikey cizgide durmuyordu. Govde dolgusu zaten basligi da
     tasiyor. */

  /* RAYIN USTUNDEKI KOSE. Govde dolgusu basligi da sagdan
     basslattigi icin sol ustte var(--side) x var(--hd) kadar bir
     dikdortgen hicbir zemine degmiyordu - ne baslik ne ray oraya
     ulasiyor, altindaki su sutunu gorunuyordu. Ray ACIKKEN 244px
     genisliginde acik bir blok olarak duruyordu.
     Basligin seridini sol kenara kadar uzatiyoruz; kutu ve
     hizalama oldugu gibi kaliyor.
     background: inherit - .is-stuck ile renk degisince bu parca da
     degisiyor, ayri bir yerde ikinci kez tanimlamak gerekmiyor. */
  body:has(.side) .hd::before {
    content: '';
    position: absolute;
    inset-block: 0 -1px;
    inset-inline-end: 100%;
    width: var(--side);
    box-sizing: border-box;
    border-bottom: 1px solid rgba(255, 138, 146, .10);
    background: inherit;
    transition: inherit;
  }
}

/* DAR MASAUSTU (981-1120px). Ray hala duruyor, ust menu hala acik:
   markanin, bes menu ogesinin, dil/arama/destek ikonlarinin ve iki
   dugmenin hepsi ayni satirda. 981px'te "Join Now" sagdan tasiyordu.
   Bir sey gizlemiyoruz - bosluklari daraltmak yetiyor; gizlenen bir
   menu ogesi bu genislikte hicbir yerde gorunmez olurdu (cekmece
   980px'in ALTINDA aciliyor). */
@media (min-width: 981px) and (max-width: 1120px) {
  body:has(.side) .hd-in { gap: 16px; }
  body:has(.side) .nav { gap: 16px; }
}

/* RAY ACIKKEN. Acik ray baslıktan 244px goturuyor; 1280px'in
   altinda geri kalan yer menuye, ikonlara ve iki dugmeye
   yetmiyordu ve "Join Now" sagdan tasiyordu.
   Uc kademe, en hafiften baslayarak: */
@media (max-width: 1280px) {
  /* 1. Acik ray biraz daraliyor. Etiketler 200px'e siğiyor. */
  :root[data-rail="open"] { --side: 200px; }
}
@media (min-width: 981px) and (max-width: 1280px) {
  /* 2. Bosluklar daraliyor ve dugme kisa adini aliyor. */
  :root[data-rail="open"] .hd-in { gap: 14px; }
  :root[data-rail="open"] .nav { gap: 14px; }
  :root[data-rail="open"] .hd-long { display: none; }
  :root[data-rail="open"] .hd-short { display: inline; }
}
@media (min-width: 981px) and (max-width: 1100px) {
  /* 3. Ust menu gizleniyor. YALNIZCA ray ACIKKEN: o halde ayni bes
     bolum rayda ETIKETLI olarak zaten duruyor, yani hicbir sey
     erisilemez olmuyor. Ray kapaninca menu geri geliyor. */
  :root[data-rail="open"] .nav { display: none; }
}

.side {
  position: fixed;
  inset-block: var(--hd) 0;
  inset-inline-start: 0;
  z-index: 45;                       /* baslik 50, cekmece 90 */
  width: var(--side);
  display: flex;
  flex-direction: column;
  gap: 6px;
  padding: 12px 10px;
  overflow-y: auto;
  overflow-x: hidden;
  scrollbar-width: thin;
  /* Duz tek renk 900px'lik bir sutunda yassi duruyordu. Ustte
     basligin altindan gelen bir tik acik, asagi indikce
     koyulasan bir gecis derinlik veriyor - fark ancak yan yana
     konunca goruluyor, amac da o. */
  background: linear-gradient(180deg,
      rgba(39, 19, 13, .94) 0,
      rgba(22, 11, 7, .93) 180px,
      rgba(17, 9, 5, .95) 100%);
  -webkit-backdrop-filter: blur(14px);
          backdrop-filter: blur(14px);
  border-inline-end: 1px solid var(--line-soft);
  transition: width var(--t);
  scrollbar-color: rgba(245, 244, 236, .16) transparent;
}
/* 980px altinda ray yok: ayni liste zaten cekmecede duruyor ve
   dar ekranda 76px'lik bir sutun icerigin dortte birini yiyor. */
@media (max-width: 980px) { .side { display: none; } }

/* Ac/kapa dugmesi. Dolu gri bir hap, altindaki gezinme
   ogeleriyle ayni agirliktaydi ve listenin bir parcasi gibi
   duruyordu; oysa bu bir KONTROL, gidilecek bir yer degil.
   Zemini birakip ince bir cerceve verdik. */
.side-toggle {
  display: flex;
  align-items: center;
  gap: 12px;
  flex: none;
  width: 100%;
  padding: 11px 14px;
  border: 1px solid rgba(255, 255, 255, .07);
  border-radius: 12px;
  background: none;
  color: var(--tx-3);
  font: inherit;
  font-size: 13px;
  font-weight: 600;
  cursor: pointer;
  transition: background var(--t), border-color var(--t), color var(--t);
}
.side-toggle:hover {
  background: rgba(217, 169, 95, .06);
  border-color: var(--gold-dim);
  color: var(--tx);
}
.side-toggle svg { width: 18px; height: 18px; flex: none; }

.side-grp { display: grid; gap: 2px; }

/* Kontrol ile gezinmenin arasindaki ayrac. Duz bir cizgi yerine
   ic kenardan solan altin bir kil: logonun altinda duran tek
   sicak isaret ve rayi markaya bagliyor. Kalinligi 1px, opakligi
   %38 - bakilinca gorunuyor, dikkat cekmiyor. */
.side > .side-grp:first-of-type {
  position: relative;
  margin-top: 10px;
  padding-top: 12px;
}
.side > .side-grp:first-of-type::before {
  content: '';
  position: absolute;
  inset-block-start: 0;
  inset-inline: 6px 10px;
  height: 1px;
  background: linear-gradient(90deg, var(--gold-dim), transparent 78%);
}
[dir="rtl"] .side > .side-grp:first-of-type::before {
  background: linear-gradient(270deg, var(--gold-dim), transparent 78%);
}
.side-k {
  padding: 14px 14px 6px;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: rgba(245, 244, 236, .58);
  white-space: nowrap;
}

.side a {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 10px 14px;
  border-radius: 12px;
  font-size: 13.5px;
  font-weight: 600;
  color: var(--tx-2);
  white-space: nowrap;
  transition: background var(--t), color var(--t);
}
.side a:hover { background: rgba(255, 255, 255, .06); color: var(--tx); }

/* AKTIF OGE. Renk hala TURKUAZ: "buradasin" isareti sitenin her
   yerinde ayni renk, rayda baska bir renge gecmek dili bozar.
   Degisen, duz tek renk zeminin yerini ic kenardan disa solan bir
   gecise birakmasi ve ic kenara altin bir cubuk gelmesi. Cubuk
   SUSLEME: durumu zaten renk ve aria-current soyluyor, altin
   yalnizca o satiri bir tik yukseltiyor. */
.side a.is-on {
  position: relative;
  background: linear-gradient(90deg, rgba(255, 138, 146, .17), rgba(255, 138, 146, .045));
  color: var(--aqua-bright);
}
[dir="rtl"] .side a.is-on {
  background: linear-gradient(270deg, rgba(255, 138, 146, .17), rgba(255, 138, 146, .045));
}
/* Cubuk hapin IC KENARI, ayri duran bir isaret degil: hapin o
   yandaki kosesi 3px'e iniyor ve cubuk tam oraya oturuyor. Once
   12px'lik yuvarlak kosenin disinda kalmis, satirin solunda
   unutulmus bir cizgi gibi duruyordu. */
.side a.is-on {
  border-start-start-radius: 3px;
  border-end-start-radius: 3px;
}
.side a.is-on::before {
  content: '';
  position: absolute;
  inset-block: 0;
  inset-inline-start: 0;
  width: 3px;
  border-start-start-radius: 3px;
  border-end-start-radius: 3px;
  background: linear-gradient(180deg, #f2d59a, var(--gold) 45%, #a8803c);
}

/* Ikonlar bir tik geride: aktif olan boylece rengi degismeden de
   one cikiyor. */
.side a svg { width: 19px; height: 19px; flex: none; opacity: .82; transition: opacity var(--t); }
.side a:hover svg, .side a.is-on svg { opacity: 1; }

/* Etiketler KAPALI HALDE gizleniyor ama DOM'da duruyor: ekran
   okuyucu ikonun ne oldugunu baska turlu bilemez. */
.side-t { overflow: hidden; }
/* Kapali rayda grup basligi EKRAN DISINA aliniyor, gorunmez
   yapilmiyor. Sadece opacity:0 verildiginde "CATEGORIES" metni
   hala yer kapliyor ve grubun genisligini rayin disina tasiyip
   ikonlari ortadan kaydiriyordu - olculdu, kategori ikonlari sag
   kenara yapisiyordu. Grup arasi bosluk margin ile korunuyor. */
:root:not([data-rail="open"]) .side-k {
  position: absolute;
  width: 1px; height: 1px;
  padding: 0;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
}
:root:not([data-rail="open"]) .side-grp + .side-grp { margin-top: 14px; }
:root:not([data-rail="open"]) .side-t {
  position: absolute;
  width: 1px; height: 1px;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
}
/* Kapali rayda ikon ortada dursun. */
:root:not([data-rail="open"]) .side a,
:root:not([data-rail="open"]) .side-toggle { justify-content: center; padding-inline: 0; }

.side-foot { margin-top: auto; padding-top: 10px; border-top: 1px solid var(--line-soft); }

/* Doldurulacak deger. Bos birakmak "yuklenmedi" gibi duruyor, bir
   sayi uydurmak ise ondan kotu: makul gorunen bir RTP ya da kademe
   esigi dogrulanmadan yayina girebiliyor. Tire, yeri tutuyor ve
   "burada bir deger olacak" diyor. */
.is-tbd { color: var(--tx-4); }


/* ==================================================================
   ICERIGE ATLA
   Klavyeyle gezen kisi her sayfada basliktaki on kusur baglantiyi
   tek tek gecmek zorunda kalmasin. Gorunmuyor; yalniz TAB ile
   odaklaninca ekranin ustune iniyor.
   display:none ya da visibility:hidden KULLANILMIYOR - ikisi de
   ogeyi odaklanamaz yapiyor ve baglanti hicbir ise yaramiyor.
   ================================================================== */

.atla {
  position: fixed;
  inset-block-start: 10px;
  inset-inline-start: 10px;
  z-index: 100;
  padding: 12px 20px;
  border-radius: var(--r-sm);
  background: var(--aqua-bright);
  color: var(--ink);
  font-size: 14px;
  font-weight: 700;
  /* Ekranin disinda bekliyor, odaklaninca yerine geliyor. */
  transform: translateY(-200%);
  transition: transform var(--t);
}
.atla:focus-visible {
  transform: translateY(0);
  outline: 2px solid var(--tx);
  outline-offset: 2px;
}


/* ==================================================================
   BASLIKTA BAKIYE GIZLEME
   Rakam DOM'dan silinmiyor, ustune noktalar basiliyor: silmek
   basligin genisligini oynatiyor ve geri getirirken sunucuya
   sormak gerekiyordu.
   ================================================================== */

.hd-money { display: flex; align-items: center; gap: 2px; }

.hd-eye {
  display: grid;
  place-items: center;
  width: 30px; height: 30px;
  border-radius: 50%;
  border: 0;
  background: none;
  color: var(--tx-3);
  cursor: pointer;
  transition: color var(--t);
}
.hd-eye svg { width: 15px; height: 15px; }
.hd-eye:hover { color: var(--tx); }
.hd-eye:focus-visible { outline: 2px solid var(--aqua-bright); outline-offset: 2px; }
.hd-eye .off { display: none; }
[data-bal-hidden] .hd-eye .on  { display: none; }
[data-bal-hidden] .hd-eye .off { display: block; }

/* Rakamin yerini nokta aliyor. Genislik korunsun diye tutar
   gorunmez kaliyor, ustune kendi genisliginde bir katman basiliyor. */
[data-bal-hidden] .hd-bal b {
  position: relative;
  color: transparent;
}
[data-bal-hidden] .hd-bal b::after {
  content: '••••••';
  position: absolute;
  inset-inline-start: 0;
  inset-block-start: 0;
  color: var(--tx-3);
  letter-spacing: .08em;
}

@media (max-width: 560px) {
  /* Dar baslikta yer yok; gizleme cuzdan sayfasindan yapilir. */
  .hd-eye { display: none; }
}


/* ==================================================================
   ORTAK TABLO
   Hesap alani, odeme yontemleri ve Tide Board ayni tabloyu
   kullaniyor. Once hesap.css'teydi; o dosyayi yuklemeyen belge
   sayfalarinda tablo bicimsiz kaliyordu. Alan dosyasinda degil
   burada duruyor cunku artik tek bir alanin isi degil.
   ================================================================== */

/* ---- tablo ---- */
.tbl { width: 100%; border-collapse: collapse; font-size: 13.5px; }
.tbl th {
  padding: 0 0 10px;
  border-bottom: 1px solid var(--line);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .12em;
  text-transform: uppercase;
  /* --tx-4 (.54) idi. Hesap alaninda geciyordu ama odeme yontemleri
     sayfasinda hero olmadigi icin su sutununun en ACIK ust bandi
     gorunuyor ve orada 4.45:1'e dusuyordu - esik 4.5. Olculmus. */
  color: var(--tx-3);
  text-align: start;
}
.tbl td { padding: 13px 0; border-bottom: 1px solid var(--line-soft); color: var(--tx-2); }
/* SATIR BASLIGI VERI, SUTUN BASLIGI DEGIL. <th scope="row"> ustteki
   kurallari da aliyordu: kisaltma sutunundaki "1X2" 11px, harf
   araligi acik ve soluk cikiyor, yanindaki normal hucreden daha
   kucuk goruyorduk - satirin en onemli hucresi en zayifi oluyordu. */
.tbl th[scope="row"] {
  padding: 13px 20px 13px 0;
  border-bottom: 1px solid var(--line-soft);
  font-size: inherit;
  font-weight: 700;
  letter-spacing: 0;
  text-transform: none;
  color: var(--tx);
  white-space: nowrap;
}
.tbl tr:last-child th[scope="row"] { border-bottom: 0; }

/* SUTUNLAR ARASI BOSLUK. Yatay dolgu sifirdi: hesap tablolarinda
   dort genis sutun oldugu icin sorun cikmiyordu, ama odeme
   yontemleri tablosu alti sutun ve dar bir kolonda duruyor -
   orada degerler birbirine yapisiyordu ("Deposit and withdrawal"
   ile "MVR 300" arasinda hic bosluk kalmiyordu).
   Son sutunda bosluk yok: saga yaslanan hucre kenardan iceri
   kacmasin. */
.tbl th, .tbl td { padding-inline-end: 20px; }
.tbl th:last-child, .tbl td:last-child { padding-inline-end: 0; }
.tbl tr:last-child td { border-bottom: 0; }
.tbl-end { text-align: end; }
.tbl td.money { color: var(--tx); font-variant-numeric: tabular-nums; white-space: nowrap; }
/* Yon tek isaretle: tutar rengi zaten soyluyor, ayrica ok koymuyoruz. */
.tbl td.is-up { color: var(--win); }
/* ---------------- Tablo ----------------
   Dar ekranda YATAY KAYIYOR. Sutunlari alt alta dokup her satiri
   bir karta cevirmek sekiz bahsi sekiz ekran yapiyordu. */
.hs-scroll { overflow-x: auto; }

/* KENAR SOLMASI YALNIZCA KAYACAK ICERIK VARKEN.
   Onceki surumde mask-image kosulsuz duruyordu ve tablo kutuya
   SIGDIGI zaman da son sutunu yiyordu: islem gecmisinde durum
   etiketlerinin sag ucu kirpiliyordu.
   .is-scroll sinifini js/app.js basiyor (scrollWidth > clientWidth).
   Script calismazsa solma hic olmuyor - icerik yine tam gorunur,
   kaydirma cubugu zaten devaminin oldugunu soyluyor. */
.hs-scroll.is-scroll {
  -webkit-mask-image: linear-gradient(90deg, #000 0%, #000 96%, transparent 100%);
          mask-image: linear-gradient(90deg, #000 0%, #000 96%, transparent 100%);
}
[dir="rtl"] .hs-scroll.is-scroll {
  -webkit-mask-image: linear-gradient(270deg, #000 0%, #000 96%, transparent 100%);
          mask-image: linear-gradient(270deg, #000 0%, #000 96%, transparent 100%);
}
/* Cekilen tutar kirmizi degil: bir cekim bir kayip degil, kisinin
   kendi parasi. Kirmizi bu tabloda sadece reddedilen bir harekete
   ait olmali. Isaret (eksi) yonu zaten soyluyor. */
.tbl td.is-down { color: var(--tx); }
/* Basligi da saga yaslamak gerekiyor: hucreler .tbl-end ile sagda
   duruyordu ama ".tbl th" kurali daha ozel oldugu icin baslik solda
   kaliyor, sutun iki ayri yerden basliyormus gibi goruniyordu. */
.tbl th.tbl-end { text-align: end; }

/* ==================================================================
   ORTAK YARDIMCILAR
   Asagidakiler birden fazla alanda geciyor. Alan dosyalarinda
   dururken, o dosyayi yuklemeyen sayfalarda bicimsiz kaliyorlardi:
   "daha fazla" blogu hesap gecmisinde, .facts-note uc sayfada,
   .btn-xs hesap ozetinde.
   ================================================================== */

.more {
  display: grid;
  justify-items: center;
  gap: 10px;
  margin-top: 34px;
}
.more-btn { min-width: 220px; }
.more-note { margin: 0; font-size: 12.5px; font-weight: 300; color: var(--tx-3); }

.facts-note {
  margin: 14px 0 0;
  font-size: 13px;
  font-weight: 300;
  color: var(--tx-3);
}

.btn-xs { height: 30px; padding: 0 13px; font-size: 12.5px; }


/* Koltuk kalmamis masa karti. Anasayfadaki canli masa kartlari
   .gcard ailesinden; canli.css'teki .tcard.is-full kurali onlara
   ULASMIYORDU, yani sinif basiliyor ama hicbir sey olmuyordu.
   Dolu masa GIZLENMIYOR, SONUYOR: listeden dusurmek kullaniciyi
   "masa nerede" diye aratiyor, ayni parlaklikta birakmak da bos
   yere tiklatiyor. */
.gcard.is-full .gcard-art { filter: saturate(.35) brightness(.72); }
.gcard.is-full:hover .gcard-art { filter: saturate(.5) brightness(.82); }
.gcard.is-full .gcard-meta b { color: rgba(245, 244, 236, .78); }


/* Oturum hatirlaticisi (hesap-limitler.html "Session reminder": "A quiet
   notice appears over the game"). Tasarimda kendi cizimi yok - sessiz,
   kose kutusu; oyunun (play-frame) USTUNDE kalir ama arama/cekmece
   katmanlarinin (90+) ALTINDA. Mobilde alt gezinmenin (.mbar) ustunde. */
.rg-note {
  position: fixed;
  inset-inline-end: 16px;
  bottom: 16px;
  z-index: 80;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px;
  max-width: min(420px, calc(100vw - 32px));
  padding: 14px 16px;
  border-radius: 14px;
  border: 1px solid var(--line);
  background: rgba(24, 12, 8, .94);
  box-shadow: 0 10px 30px rgba(0, 0, 0, .35);
  font-size: 13.5px;
  line-height: 1.5;
}
.rg-note[hidden] { display: none; }
.rg-note-t { flex: 1 0 100%; }
.rg-note-t b { display: block; margin-bottom: 2px; }
.rg-note-t span { color: var(--tx-2); }
@media (max-width: 980px) {
  .rg-note { bottom: 84px; }
}
