/* ============ FX katmanı: sinematik animasyonlar ============ */
html.lenis,html.lenis body{height:auto}
html.lenis{scroll-behavior:auto}
.lenis.lenis-smooth [data-lenis-prevent]{overscroll-behavior:contain}

/* GSAP devredeyken CSS reveal'ı devre dışı bırak (animasyonu GSAP yönetir) */
html.fx .reveal{opacity:1;transform:none;transition:none}

/* ---------- Açılış ekranı ---------- */
.preloader{position:fixed;inset:0;z-index:1000;display:grid;place-items:center;pointer-events:none}
.preloader .pl-panel{position:absolute;inset:0;background:#03050f}
.preloader .pl-panel.p2{background:linear-gradient(120deg,#2f6bff,#8b5cf6,#ec4899)}
.preloader .pl-inner{position:relative;z-index:2;text-align:center}
.preloader .pl-logo{width:84px;margin:0 auto 22px;filter:drop-shadow(0 0 30px rgba(91,140,255,.7))}
.preloader .pl-count{font-size:clamp(64px,12vw,160px);font-weight:800;letter-spacing:-.06em;line-height:1;background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent;font-variant-numeric:tabular-nums}
.preloader .pl-text{margin-top:10px;font-size:13px;letter-spacing:.5em;text-transform:uppercase;color:var(--muted)}
.preloader .pl-bar{width:220px;height:2px;margin:26px auto 0;background:rgba(255,255,255,.08);border-radius:2px;overflow:hidden}
.preloader .pl-bar i{display:block;height:100%;width:100%;background:var(--grad);transform-origin:left;transform:scaleX(0)}
html.loading body{overflow:hidden}

/* ---------- Kaydırma ilerleme çubuğu ---------- */
.progress{position:fixed;top:0;left:0;right:0;height:3px;z-index:200;background:var(--grad);transform-origin:left;transform:scaleX(0);box-shadow:0 0 12px rgba(139,92,246,.8)}

/* ---------- Özel imleç ---------- */
.cursor-dot,.cursor-ring{position:fixed;top:0;left:0;z-index:999;pointer-events:none;border-radius:50%;transform:translate(-50%,-50%)}
.cursor-dot{width:6px;height:6px;background:#fff;mix-blend-mode:difference}
.cursor-ring{width:38px;height:38px;border:1.5px solid rgba(255,255,255,.55);display:grid;place-items:center;transition:width .35s cubic-bezier(.2,.8,.2,1),height .35s cubic-bezier(.2,.8,.2,1),background .35s,border-color .35s;mix-blend-mode:difference}
.cursor-ring span{font-size:12px;font-weight:800;letter-spacing:.08em;color:#06091c;opacity:0;transition:opacity .2s;white-space:nowrap}
.cursor-ring.hover{width:64px;height:64px;background:rgba(255,255,255,.12);border-color:rgba(255,255,255,.9)}
.cursor-ring.label{width:96px;height:96px;background:#fff;border-color:#fff;mix-blend-mode:normal}
.cursor-ring.label span{opacity:1}
html.has-cursor,html.has-cursor a,html.has-cursor button,html.has-cursor [role=button]{cursor:none}
html.has-cursor input,html.has-cursor textarea{cursor:text}

/* ---------- Hero: parçacık ağı + fare spot ışığı ---------- */
.hero-canvas{position:absolute;inset:0;width:100%;height:100%;z-index:0;pointer-events:none;opacity:.9}
.hero .spot{position:absolute;inset:0;z-index:0;pointer-events:none;background:radial-gradient(600px circle at var(--mx,70%) var(--my,30%),rgba(91,140,255,.18),transparent 60%)}
.hero h1 .line{display:block;overflow:hidden;padding-bottom:.06em;margin-bottom:-.06em}
.hero h1 .ch{display:inline-block;will-change:transform}
.hero-visual{perspective:1200px}
.hero-visual img{will-change:transform}
.grid-bg{animation:grid-pan 30s linear infinite}
@keyframes grid-pan{to{background-position:56px 56px,56px 56px}}

/* Kelime maskeleri (başlık açılışları) */
.w{display:inline-block;overflow:hidden;vertical-align:top;padding-bottom:.12em;margin-bottom:-.12em}
.wi{display:inline-block;will-change:transform}
.hl-word{transition:none}

/* ---------- Kinetik yazı bantları ---------- */
.kinetic{position:relative;overflow:hidden;padding:46px 0;background:var(--bg);border-block:1px solid var(--line)}
.kinetic .row{display:flex;white-space:nowrap;gap:0;will-change:transform}
.kinetic .row span{font-size:clamp(48px,9vw,128px);font-weight:800;letter-spacing:-.04em;line-height:1.05;padding-right:.35em}
.kinetic .row .o{color:transparent;-webkit-text-stroke:1.5px rgba(148,170,255,.45)}
.kinetic .row .f{background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.kinetic .row .s{color:#fbbf24;font-size:clamp(28px,5vw,70px);vertical-align:middle;-webkit-text-stroke:0}
.kinetic.light-k{background:var(--light-bg);border-color:var(--light-line)}
.kinetic.light-k .row .o{-webkit-text-stroke:1.5px rgba(13,20,51,.25)}

/* ---------- Buton parlama süpürmesi ---------- */
.btn{position:relative;overflow:hidden;isolation:isolate}
.btn::after{content:"";position:absolute;top:0;left:-120%;width:60%;height:100%;background:linear-gradient(110deg,transparent,rgba(255,255,255,.45),transparent);transform:skewX(-20deg);transition:left .7s ease;z-index:-1}
.btn:hover::after{left:140%}
.btn-primary{background:linear-gradient(120deg,#2f6bff,#6d4cff,#2f6bff);background-size:200% 100%;animation:btn-flow 6s linear infinite}
@keyframes btn-flow{to{background-position:200% 0}}

/* ---------- 3D eğim + parlama ---------- */
.tilt{transform-style:preserve-3d;will-change:transform}
.tilt .glare{position:absolute;inset:0;border-radius:inherit;pointer-events:none;background:radial-gradient(400px circle at var(--gx,50%) var(--gy,50%),rgba(255,255,255,.18),transparent 45%);opacity:0;transition:opacity .3s;z-index:3}
.tilt:hover .glare{opacity:1}
.module,.trainer,.price,.person,.req .card,.stat-card{position:relative}

/* Öne çıkan fiyat kartı: dönen ışık çerçeve */
.price.featured::before{content:"";position:absolute;inset:-1px;border-radius:inherit;padding:1.5px;background:conic-gradient(from var(--pa,0deg),transparent 0 60%,#5b8cff 75%,#ec4899 88%,transparent 100%);-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude;animation:pa-spin 4s linear infinite;pointer-events:none}
@property --pa{syntax:"<angle>";inherits:false;initial-value:0deg}
@keyframes pa-spin{to{--pa:360deg}}

/* Sekme göstergesi */
.tabs{position:relative}
.tab{position:relative;z-index:1}
.tab-ind{position:absolute;top:6px;bottom:6px;left:0;border-radius:999px;background:var(--light-text);z-index:0;transition:transform .5s cubic-bezier(.7,0,.2,1),width .5s cubic-bezier(.7,0,.2,1)}
html.fx .tab[aria-selected=true]{background:transparent}

/* Görsel açılışları */
.clip{overflow:hidden}

/* Alıntı: kaydırdıkça yanan kelimeler */
.quote{font-size:clamp(28px,4.2vw,58px);line-height:1.15;letter-spacing:-.035em;max-width:1050px}
.quote .hl-word{opacity:.15}
.quote .grad-text{opacity:1}

/* ---------- Footer dev marka yazısı ---------- */
.footer-giant{overflow:hidden;margin-top:56px;padding-bottom:.06em;text-align:center;line-height:1.05;font-weight:800;letter-spacing:-.06em;font-size:min(10.5vw,150px);white-space:nowrap;user-select:none}
.footer-giant .gl{display:inline-block;background:linear-gradient(180deg,#5b8cff,#8b5cf6 55%,#ec4899);opacity:.85;-webkit-background-clip:text;background-clip:text;color:transparent}

/* Kicker karıştırma efekti */
.kicker{font-variant-numeric:tabular-nums}

/* Kart kenar ışıltısı (fare takip) */
.card,.module,.trainer{--gx:50%;--gy:50%}
.module::after,.trainer::after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;background:radial-gradient(300px circle at var(--gx) var(--gy),rgba(91,140,255,.18),transparent 60%);opacity:0;transition:opacity .3s}
.module:hover::after,.trainer:hover::after{opacity:1}

@media (max-width:900px){
  .kinetic{padding:28px 0}
}
@media (prefers-reduced-motion:reduce){
  .preloader,.cursor-dot,.cursor-ring,.hero-canvas{display:none!important}
}
