/* ═══ Denov City — Scroll effektlari v2 ═══
   Faqat JS ishlaganda (html.fx) faol bo'ladi. */

/* Sahifa tepasidagi oltin progress chizig'i */
.fx-progress{position:fixed;top:0;left:0;height:3px;width:100%;z-index:10000;
  transform:scaleX(0);transform-origin:0 50%;pointer-events:none;
  background:linear-gradient(90deg,var(--gold),var(--gold2));box-shadow:0 0 12px rgba(201,168,76,.7)}

/* Sichqoncha ortidan yuruvchi yumshoq oltin nur (faqat kompyuterda, qorong'i rejimda) */
.fx-glow{position:fixed;left:0;top:0;width:520px;height:520px;margin:-260px 0 0 -260px;border-radius:50%;
  pointer-events:none;z-index:1;opacity:0;transition:opacity .5s;
  background:radial-gradient(circle,rgba(201,168,76,.13),rgba(201,168,76,0) 65%);
  mix-blend-mode:screen;will-change:transform}
.fx-glow.on{opacity:1}
:root[data-theme="light"] .fx-glow{display:none}

/* ── Bo'limlar: 3D "ochilib" kattalashish ── */
html.fx .fx-sec{
  transform-origin:50% 0;
  transform:perspective(1600px) rotateX(var(--fx-rx,0deg)) scale(var(--fx-s,1));
  opacity:var(--fx-o,1);
  clip-path:inset(0 round var(--fx-r,0px));
  will-change:transform,opacity;
}
html.fx .fx-sec.fx-done{transform:none;opacity:1;clip-path:none;will-change:auto}

/* ── Sarlavhalar: niqob ostidan ochilib chiqadi ── */
html.fx .sec-title.rv{
  opacity:0;transform:translateY(50px) scale(.97);filter:blur(12px);letter-spacing:.06em;
  transition:opacity 1s cubic-bezier(.2,.7,.2,1),transform 1.1s cubic-bezier(.2,.7,.2,1),
             filter 1s,letter-spacing 1.3s cubic-bezier(.2,.7,.2,1);
}
html.fx .sec-title.rv.vis{opacity:1;transform:none;filter:none;letter-spacing:normal}
html.fx .sec-label::before{width:0;transition:width .9s cubic-bezier(.2,.7,.2,1) .25s}
html.fx .sec-label.vis::before{width:28px}

/* ── Kartalar: pastdan "ag'darilib" kattalashadi ── */
html.fx .rv:not(.sec-title){
  opacity:0;transform:perspective(1100px) translateY(70px) rotateX(12deg) scale(.9);
  transform-origin:50% 100%;filter:blur(6px);
  transition:opacity .9s cubic-bezier(.2,.7,.2,1),transform .95s cubic-bezier(.2,.7,.2,1),filter .9s;
  transition-delay:var(--fx-d,0s);
}
html.fx .rv:not(.sec-title).vis{opacity:1;transform:none;filter:none}
html.fx .rvl{opacity:0;transform:translateX(-90px) scale(.94);filter:blur(6px);
  transition:opacity .95s cubic-bezier(.2,.7,.2,1),transform .95s cubic-bezier(.2,.7,.2,1),filter .95s}
html.fx .rvr{opacity:0;transform:translateX(90px) scale(.94);filter:blur(6px);
  transition:opacity .95s cubic-bezier(.2,.7,.2,1) .12s,transform .95s cubic-bezier(.2,.7,.2,1) .12s,filter .95s .12s}
html.fx .rvl.vis,html.fx .rvr.vis{opacity:1;transform:none;filter:none}

/* Qurilish bosqichlari + scroll bilan to'lib boruvchi chiziq */
html.fx .prog-item{transform:translateX(-50px) scale(.95);transition:opacity .8s,transform .8s cubic-bezier(.2,.7,.2,1)}
html.fx .prog-item.vis{transform:none}
html.fx .prog-list::after{content:'';position:absolute;left:23px;top:0;bottom:0;width:2px;
  background:var(--gold2);box-shadow:0 0 14px rgba(232,201,106,.9);
  transform-origin:50% 0;transform:scaleY(var(--fx-line,0));pointer-events:none}

/* Galereya: katta rasm ramkasi kengayib, ichida rasm parallax bo'ladi */
html.fx #gallery .fx-frame{clip-path:inset(0 var(--fx-cx,0%) round var(--fx-cr,0px))}
html.fx #gallery .fx-frame img{
  transform:scale(var(--fx-img,1.18)) translateY(var(--fx-imgy,0px)) !important;
  transition:none !important;will-change:transform}

/* Hero: scroll qilinganda matn kichrayib xiralashadi, sahna yaqinlashadi */
html.fx #hero .hero-content{
  transform:translateY(var(--fx-hy,0px)) scale(var(--fx-hs,1));
  opacity:var(--fx-ho,1);transform-origin:0 50%;will-change:transform,opacity}
html.fx #hero .hero-scene{transform:translateY(var(--fx-sy,0px)) scale(var(--fx-ss,1.05));will-change:transform}
html.fx #hero .scroll-ind{opacity:var(--fx-ho,1)}

/* Statistika */
html.fx .stats-bar.rv .stat{opacity:0;transform:translateY(24px) scale(.85);
  transition:opacity .7s,transform .7s cubic-bezier(.2,.7,.2,1)}
html.fx .stats-bar.rv.vis .stat{opacity:1;transform:none}
html.fx .stats-bar.rv.vis .stat:nth-child(2){transition-delay:.12s}
html.fx .stats-bar.rv.vis .stat:nth-child(3){transition-delay:.24s}
html.fx .stats-bar.rv.vis .stat:nth-child(4){transition-delay:.36s}

/* Magnit tugmalar (alohida `translate` xossasi — boshqa animatsiyalar bilan to'qnashmaydi) */
.fx-mag{transition:translate .25s ease-out,background .3s,box-shadow .3s,border-color .3s,color .3s}

@media(max-width:700px){
  html.fx .rvl,html.fx .rvr{transform:translateY(50px) scale(.94)}
  html.fx .rv:not(.sec-title){transform:translateY(44px) scale(.94)}
  .fx-glow{display:none}
}
@media(prefers-reduced-motion:reduce){
  html.fx .fx-sec{transform:none !important;opacity:1 !important;clip-path:none !important}
  html.fx .rv,html.fx .rvl,html.fx .rvr,html.fx .prog-item,html.fx .stats-bar .stat,html.fx .sec-title.rv{
    opacity:1 !important;transform:none !important;filter:none !important;letter-spacing:normal !important;transition:none !important}
  html.fx #hero .hero-content,html.fx #hero .hero-scene{transform:none !important;opacity:1 !important}
  .fx-progress,.fx-glow{display:none}
}


/* ═══ v3 qo'shimchalar ═══ */

/* Hero sarlavha: qatorma-qator niqobdan ochiladi (loader yopilgach) */
html.fx:not(.fx-go) .hero-title>span{opacity:0}
html.fx.fx-go .hero-title>span{
  display:block;animation:fxLine 1.25s cubic-bezier(.2,.7,.2,1) both}
html.fx.fx-go .hero-title>span:nth-child(1){animation-delay:.05s}
html.fx.fx-go .hero-title>span:nth-child(2){animation-delay:.22s}
html.fx.fx-go .hero-title>span:nth-child(3){animation-delay:.4s}
@keyframes fxLine{
  from{opacity:0;transform:translateY(70px) skewY(5deg);filter:blur(10px);clip-path:inset(0 0 100% 0)}
  60%{clip-path:inset(-15% -5% -15% -5%)}
  to{opacity:1;transform:none;filter:none;clip-path:inset(-15% -5% -15% -5%)}
}

/* Hero sahna: sichqoncha bilan chuqurlik (alohida translate xossasi) */
html.fx #hero .hero-scene,html.fx #hero .hero-content{transition:translate .12s linear}

/* Katta harakatlanuvchi yozuv lentasi (scroll tezligiga qarab suriladi) */
.fx-band{overflow:hidden;padding:26px 0;border-top:1px solid rgba(201,168,76,.12);
  border-bottom:1px solid rgba(201,168,76,.12);background:var(--dark);user-select:none}
.fx-row{display:flex;white-space:nowrap;width:max-content;will-change:transform;
  font-family:'Playfair Display',serif;font-weight:900;line-height:1.05;
  font-size:clamp(54px,10vw,150px);letter-spacing:.02em}
.fx-row span{padding:0 .35em;display:inline-flex;align-items:center;gap:.7em}
.fx-row span::after{content:'\25C6';font-size:.28em;color:var(--gold)}
.fx-row.o span{-webkit-text-stroke:2px var(--gold);color:transparent}
.fx-row.s span{color:rgba(201,168,76,.16)}
.fx-row+.fx-row{margin-top:-.08em}

/* Xonadon rasmlari: karta chiqqanda ichida yaqinlashib tinadi (alohida `scale`) */
html.fx .apt-img img{scale:1.28;transition:scale 1.6s cubic-bezier(.2,.7,.2,1),transform .4s}
html.fx .apt-card.vis .apt-img img{scale:1}

/* Kartalarda kursor ostida yoritish */
html.fx .feat-card,html.fx .apt-card{
  background-image:radial-gradient(420px circle at var(--mx,-999px) var(--my,-999px),rgba(201,168,76,.14),transparent 60%)}

/* Bo'limlar orasida yumshoq oltin chiziq (chegaralar tiniq ko'rinishi uchun) */
html.fx .fx-sec{box-shadow:0 -1px 0 rgba(201,168,76,.06)}

@media(max-width:900px){.fx-band{padding:14px 0}.fx-row.o span{-webkit-text-stroke:1.5px var(--gold)}}
@media(prefers-reduced-motion:reduce){
  html.fx .hero-title>span{opacity:1 !important;animation:none !important}
  html.fx .apt-img img{scale:1 !important}
  .fx-band{display:none}
}


/* ═══ v4 qo'shimchalar ═══ */

/* Testimonial va boshqa kartalarda ham spotlight + yengil 3D uchun tayyorgarlik */
html.fx .testi-card{transition:transform .18s ease-out,border-color .3s,box-shadow .3s,background-image .3s;
  background-image:radial-gradient(420px circle at var(--mx,-999px) var(--my,-999px),rgba(201,168,76,.12),transparent 60%)}

/* Raqamlar sanalayotganda yengil pulsatsiya */
html.fx .stat-num{display:inline-block}
html.fx .stats-bar.rv.vis .stat-num{animation:fxPulse .5s ease-out .55s}
@keyframes fxPulse{0%{transform:scale(1)}50%{transform:scale(1.08);text-shadow:0 0 18px rgba(201,168,76,.6)}100%{transform:scale(1)}}

/* Bo'lim sarlavhalari tagida siljib boruvchi ikkinchi qatlam (chuqurlik hissi) */
html.fx .sec-title.rv{position:relative}
html.fx .sec-title.rv::after{
  content:attr(data-echo);position:absolute;left:0;top:0;z-index:-1;
  color:transparent;-webkit-text-stroke:1px rgba(201,168,76,.15);
  transform:translate(0,0);opacity:0;transition:transform 1.3s cubic-bezier(.2,.7,.2,1),opacity 1s}
html.fx .sec-title.rv.vis::after{transform:translate(10px,10px);opacity:1}

/* Ikonlar: kartalar ko'ringanda sakrab tushadi */
html.fx .feat-card .feat-icon,html.fx .feat-card>div:first-child{transition:transform .5s cubic-bezier(.3,1.6,.5,1) .15s}
html.fx .feat-card:not(.vis) .feat-icon,html.fx .feat-card:not(.vis)>div:first-child{transform:scale(.3) rotate(-25deg)}

/* Tugmalar: bosilganda to'lqin (ripple) chiqarish uchun konteyner */
.fx-ripple-host{position:relative;overflow:hidden}
.fx-ripple{position:absolute;border-radius:50%;background:rgba(255,255,255,.35);
  transform:scale(0);animation:fxRip .6s ease-out forwards;pointer-events:none}
@keyframes fxRip{to{transform:scale(1);opacity:0}}

/* Scroll-yo'nalishga qarab yozuv lentasi ranggi (CSS transition sifatida qulaylashtiramiz) */
.fx-row{transition:filter .3s}

@media(prefers-reduced-motion:reduce){
  html.fx .stats-bar.rv.vis .stat-num{animation:none}
  html.fx .sec-title.rv::after{display:none}
  html.fx .feat-card .feat-icon,html.fx .feat-card>div:first-child{transform:none !important}
}


/* ═══ Telefon uchun yengil rejim (media query) ═══
   Og'ir effektlar (blur, clip-path, 3D, backdrop-filter, zarrachalar) o'chiriladi.
   Videolar esa faqat ko'ringanda ijro etiladi. */
@media(max-width:900px),(hover:none) and (pointer:coarse){
  .fx-glow,.fx-band,.par,#parContainer{display:none !important}
  nav,.nw-panel,.lang-dropdown-menu,.ai-float-panel,#mediaPrev,#mediaNext{
    -webkit-backdrop-filter:none !important;backdrop-filter:none !important}
  nav{background:rgba(var(--dark-rgb),.98) !important}
  .theme-toggle-stars span,.scroll-line::after,.hero-badge::before{animation:none !important}
  .nav-cta,.pd-done,.map-dot,.ai-dot,.ai-msg-bubble a.ai-cta-link{animation:none !important}
  .float-cta,.float-wa,.ai-fab{animation:none !important}
  /* Scroll bilan ochilish effektlari: faqat yengil paydo bo'lish (filter/blur/3D yo'q) */
  html.fx-lite .rv,html.fx-lite .rvl,html.fx-lite .rvr{
    filter:none !important;will-change:auto}
  html.fx-lite .fx-sec{transform:none !important;clip-path:none !important;opacity:1 !important}
  html.fx-lite .sec-title.rv::after{display:none}
  html.fx-lite #hero .hero-content,html.fx-lite #hero .hero-scene{transform:none !important;opacity:1 !important}
  html.fx-lite .hero-title>span{opacity:1 !important;animation:none !important}
  html.fx-lite .apt-img img{scale:1 !important}
  html.fx-lite .feat-card:not(.vis) .feat-icon,html.fx-lite .feat-card:not(.vis)>div:first-child{transform:none !important}
  html.fx-lite .stats-bar .stat{opacity:1 !important;transform:none !important}
}
