/* Sunrise — wspólna warstwa premium FX (Sport City, Ambassador Vacation Club).
   Hybryda: lekkie 3D + cinematic scroll. Zero zależności, czysty CSS/JS. */

/* --- scroll reveal --- */
[data-reveal]{opacity:0;transform:translateY(34px);transition:opacity .9s cubic-bezier(.16,.84,.44,1),transform .9s cubic-bezier(.16,.84,.44,1);will-change:opacity,transform}
[data-reveal].fx-in{opacity:1;transform:none}
[data-reveal="left"]{transform:translateX(-46px)}
[data-reveal="right"]{transform:translateX(46px)}
[data-reveal="zoom"]{transform:scale(.9)}
[data-reveal="left"].fx-in,[data-reveal="right"].fx-in,[data-reveal="zoom"].fx-in{transform:none}
[data-reveal-delay]{transition-delay:var(--rd,0ms)}
@media(prefers-reduced-motion:reduce){[data-reveal]{opacity:1!important;transform:none!important;transition:none}}

/* --- 3D tilt card --- */
.fx-tilt{transform-style:preserve-3d;transition:transform .25s ease,box-shadow .25s ease;will-change:transform}
.fx-tilt>*{transform:translateZ(28px)}
.fx-tilt .fx-flat{transform:none}

/* --- parallax --- */
[data-parallax]{will-change:transform}

/* --- animated counter --- */
.fx-count{font-variant-numeric:tabular-nums}

/* --- glass / floating accents --- */
.fx-glass{background:rgba(255,255,255,.08);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid rgba(255,255,255,.16)}
@keyframes fxFloat{0%,100%{transform:translateY(0) rotate(var(--fr,0deg))}50%{transform:translateY(-16px) rotate(var(--fr,0deg))}}
.fx-float{animation:fxFloat 7s ease-in-out infinite}
@keyframes fxGlow{0%,100%{opacity:.5}50%{opacity:1}}
.fx-glow{animation:fxGlow 4.5s ease-in-out infinite}

/* --- inline video player (blokada — gra na stronie, bez redirectu) --- */
.fx-vwrap{position:relative;border-radius:18px;overflow:hidden;cursor:pointer;background:#000}
.fx-vwrap img{display:block;width:100%;height:100%;object-fit:cover;transition:transform .8s}
.fx-vwrap:hover img{transform:scale(1.05)}
.fx-vwrap .fx-play{position:absolute;inset:0;display:grid;place-items:center;z-index:2}
.fx-vwrap .fx-play span{width:82px;height:82px;border-radius:50%;background:rgba(255,255,255,.16);backdrop-filter:blur(6px);border:1px solid rgba(255,255,255,.55);display:grid;place-items:center;transition:.25s}
.fx-vwrap:hover .fx-play span{transform:scale(1.08);background:rgba(255,255,255,.28)}
.fx-vwrap .fx-play span:after{content:"";border-style:solid;border-width:13px 0 13px 22px;border-color:transparent transparent transparent #fff;margin-left:5px}
.fx-vwrap::after{content:"";position:absolute;inset:0;background:linear-gradient(transparent 45%,rgba(0,0,0,.55));z-index:1}
.fx-modal{position:fixed;inset:0;z-index:9999;background:rgba(4,6,10,.92);display:none;align-items:center;justify-content:center;padding:4vw;opacity:0;transition:opacity .3s}
.fx-modal.open{display:flex;opacity:1}
.fx-modal .fx-box{position:relative;width:min(1100px,94vw);aspect-ratio:16/9;background:#000;border-radius:14px;overflow:hidden;box-shadow:0 40px 120px -30px rgba(0,0,0,.8)}
.fx-modal iframe,.fx-modal video{position:absolute;inset:0;width:100%;height:100%;border:0}
.fx-modal .fx-close{position:absolute;top:-46px;right:0;color:#fff;font-size:30px;line-height:1;cursor:pointer;background:0;border:0;opacity:.85}
.fx-modal .fx-close:hover{opacity:1}

/* --- hero signature: ciepła aurora + promienie + grain (Sport City / AVC) --- */
.hero .fx-aurora,.hero .fx-aurora2,.hero .fx-rays,.hero .fx-grain{position:absolute;pointer-events:none;z-index:1}
.hero .fx-aurora{inset:-30% -10% auto -10%;height:120%;filter:blur(64px);opacity:.6;mix-blend-mode:screen;
  background:conic-gradient(from 200deg at 70% 30%,rgba(216,189,182,0),rgba(216,189,182,.42),rgba(199,154,91,.42),transparent 60%,rgba(216,189,182,.3));animation:fxSpin 28s linear infinite}
.hero .fx-aurora2{inset:auto -20% -40% -20%;height:92%;filter:blur(64px);opacity:.45;mix-blend-mode:screen;
  background:conic-gradient(from 20deg at 30% 70%,rgba(199,154,91,0),rgba(199,154,91,.46),rgba(216,189,182,.32),transparent 65%);animation:fxSpin 37s linear infinite reverse}
.hero .fx-rays{left:50%;top:-18%;width:140vw;height:80vh;transform:translateX(-50%);opacity:.5;
  background:radial-gradient(closest-side,rgba(244,225,210,.55),transparent 70%);animation:fxRay 7s ease-in-out infinite}
.hero .fx-grain{inset:0;opacity:.05;mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}
@keyframes fxSpin{to{transform:rotate(360deg)}}
@keyframes fxRay{0%,100%{opacity:.35;transform:translateX(-50%) scale(1)}50%{opacity:.62;transform:translateX(-50%) scale(1.06)}}
@media(prefers-reduced-motion:reduce){.hero .fx-aurora,.hero .fx-aurora2,.hero .fx-rays{animation:none}}
/* hero: treść zawsze widoczna (wejście czyste w CSS, niezależne od JS/observera) */
.hero [data-reveal]{animation:fxHeroUp .9s cubic-bezier(.16,.84,.44,1) both}
.hero [data-reveal][data-reveal-delay="120"]{animation-delay:.12s}
.hero [data-reveal][data-reveal-delay="260"]{animation-delay:.26s}
.hero [data-reveal][data-reveal-delay="280"]{animation-delay:.28s}
.hero [data-reveal][data-reveal-delay="400"]{animation-delay:.4s}
.hero [data-reveal][data-reveal-delay="420"]{animation-delay:.42s}
.hero [data-reveal][data-reveal-delay="540"]{animation-delay:.54s}
.hero [data-reveal][data-reveal-delay="560"]{animation-delay:.56s}
@keyframes fxHeroUp{from{opacity:0;transform:translateY(30px)}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){.hero [data-reveal]{animation:none;opacity:1;transform:none}}

/* --- smooth scrollbar accent + nicer focus --- */
html{scroll-behavior:smooth}
a:focus-visible,button:focus-visible{outline:2px solid rgba(255,255,255,.6);outline-offset:2px}
