/* Nyali Luxury - coded hero block. Ported verbatim from the source main.css,
   scoped under .nyali-coded-hero so nothing here can leak into the rest of
   the Elementor-built page. :root custom properties and @keyframes are left
   global (CSS requires it for keyframes; the custom properties are inert
   anywhere else since the Elementor sections use hard-coded hex values, not
   these variables). */

:root{
  --color-abyss:#102F35;--color-slate:#15242E;--color-mist:#B9C4CA;--color-foam:#EDF2F4;
  --color-gold:#D9BF95;--color-gold-hover:#E7D6BB;--pearl:#F1ECE2;--scrim-ink:#081719;
  --hero-scrim:linear-gradient( to top, rgba(8, 23, 25, 0.72) 0%, rgba(8, 23, 25, 0.5) 32%, rgba(8, 23, 25, 0.42) 55%, rgba(8, 23, 25, 0.3) 100% );
  --hero-scrim-top:linear-gradient(to bottom, rgba(8, 23, 25, 0.55) 0%, rgba(8, 23, 25, 0) 30%);
  --hero-scrim-warm:linear-gradient( to top, rgba(32, 18, 10, 0.55) 0%, rgba(38, 22, 12, 0.22) 45%, rgba(46, 28, 16, 0.1) 100% );
  --hero-panel-foot:linear-gradient( to top, var(--scrim-ink) 0%, rgba(8, 23, 25, 0.88) 12%, rgba(8, 23, 25, 0.6) 26%, rgba(8, 23, 25, 0.25) 40%, rgba(8, 23, 25, 0) 52% );
  --rule-accent:rgba(217, 191, 149, 0.55);
  --font-display:'Fraunces','Iowan Old Style','Palatino Linotype',serif;
  --font-wordmark:'Bebas Neue','Haettenschweiler','Arial Narrow',sans-serif;
  --font-body:'Instrument Sans',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;
  --space-1:.5rem;--space-2:1rem;--space-3:1.5rem;--space-4:2rem;--space-5:3rem;--space-6:4rem;--space-8:6rem;
  --container-max:1440px;--container-padding:clamp(1.5rem, 5vw, 6rem);
  --ease-out-soft:cubic-bezier(0.16, 1, 0.3, 1);--duration-fast:240ms;--radius:8px;
  --shadow-cta:0 12px 32px -8px rgba(217, 191, 149, 0.45);--shadow-text:0 2px 24px rgba(8, 23, 25, 0.8);
  --fs-small:0.875rem;--reveal:0;
}

.nyali-coded-hero .container{width:100%;max-width:var(--container-max);margin-inline:auto;padding-inline:var(--container-padding)}
.nyali-coded-hero .btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-1);padding:.875rem 1.75rem;font-family:var(--font-body);font-size:var(--fs-small);font-weight:600;letter-spacing:.08em;text-transform:uppercase;border:1px solid rgba(0,0,0,0);border-radius:var(--radius);cursor:pointer;transition:transform var(--duration-fast) var(--ease-out-soft),background-color var(--duration-fast) var(--ease-out-soft),border-color var(--duration-fast) var(--ease-out-soft),color var(--duration-fast) var(--ease-out-soft),box-shadow var(--duration-fast) var(--ease-out-soft)}
.nyali-coded-hero .btn--primary{background-color:var(--color-gold);color:var(--color-abyss)}
.nyali-coded-hero .btn--primary:hover,.nyali-coded-hero .btn--primary:focus-visible{background-color:var(--color-gold-hover);box-shadow:var(--shadow-cta)}
.nyali-coded-hero .btn--primary:focus-visible{transform:translateY(-2px) scale(1.02)}

.nyali-coded-hero.hero{position:relative;text-align:center;color:var(--color-foam);--color-foam:var(--pearl);--color-mist:var(--pearl);--hero-scrim:linear-gradient( to top, rgba(8, 23, 25, 0.72) 0%, rgba(8, 23, 25, 0.5) 32%, rgba(8, 23, 25, 0.42) 55%, rgba(8, 23, 25, 0.3) 100% );--shadow-text:0 2px 24px rgba(8, 23, 25, 0.8)}
.nyali-coded-hero .hero__viewport{position:relative;display:grid;grid-template-rows:1fr auto;align-items:center;height:100svh;overflow:hidden;isolation:isolate;padding-top:5rem}
.js-scroll-expand .nyali-coded-hero.hero{height:250svh}
.js-scroll-expand .nyali-coded-hero .hero__viewport{position:sticky;top:0}
.nyali-coded-hero .hero__media{position:absolute;inset:0;z-index:-2;opacity:calc(1 - var(--reveal)*.9)}
.nyali-coded-hero .hero__media picture{display:block;width:100%;height:100%}
.nyali-coded-hero .hero__media img{width:100%;height:100%;object-fit:cover;object-position:18% center}
.nyali-coded-hero .hero__scrim{position:absolute;inset:0;z-index:-1;opacity:calc(1 - var(--reveal)*.55);background:var(--hero-scrim)}
.nyali-coded-hero .hero__scrim::before{content:"";position:absolute;inset:0;background:var(--hero-scrim-top)}
.nyali-coded-hero .hero__scrim-warm{position:absolute;inset:0;z-index:-1;pointer-events:none;opacity:var(--reveal);background:var(--hero-scrim-warm)}
.nyali-coded-hero .hero__panel{display:none}
.js-scroll-expand .nyali-coded-hero .hero__panel{display:block;position:absolute;top:50%;left:50%;z-index:-1;translate:-50% -50%;overflow:hidden;width:calc(17rem + (100vw - 17rem)*var(--reveal));height:calc(21rem + (100svh - 21rem)*var(--reveal));border-radius:calc(.75rem*(1 - var(--reveal)));box-shadow:0 40px 80px -30px rgba(0, 0, 0, calc(0.7 * (1 - var(--reveal))));opacity:calc(var(--reveal)*6.5)}
.js-scroll-expand .nyali-coded-hero .hero__panel picture,.js-scroll-expand .nyali-coded-hero .hero__panel img{display:block;width:100%;height:100%}
.js-scroll-expand .nyali-coded-hero .hero__panel img{object-fit:cover;object-position:calc(40% + 10%*var(--reveal)) center;filter:brightness(calc(0.7 + 0.3 * var(--reveal)))}
.js-scroll-expand .nyali-coded-hero .hero__panel::after{content:"";position:absolute;inset:0;pointer-events:none;opacity:var(--reveal);background:var(--hero-panel-foot)}
.nyali-coded-hero .hero__center{grid-row:1;align-self:center}
.nyali-coded-hero .hero__wordmark{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:center;gap:0 .62em;margin:0;font-family:var(--font-wordmark);font-size:clamp(1.25rem,10.1vw,9.5rem);font-weight:400;letter-spacing:.24em;line-height:1.05;text-transform:uppercase;color:#fff;animation:hero-wordmark 1.8s var(--ease-out-soft) .2s backwards}
.nyali-coded-hero .hero__word{will-change:transform}
.nyali-coded-hero .hero__word--trail{margin-right:-0.24em;animation:hero-word-track 1.8s var(--ease-out-soft) .2s backwards}
.js-scroll-expand .nyali-coded-hero .hero__word--lead{transform:translateX(calc(var(--reveal) * -65vw))}
.js-scroll-expand .nyali-coded-hero .hero__word--trail{transform:translateX(calc(var(--reveal) * 65vw))}
.nyali-coded-hero .hero__place{max-width:none;margin-top:clamp(var(--space-2),2.5vw,var(--space-4));font-family:var(--font-body);font-size:.6875rem;font-weight:500;letter-spacing:.32em;text-transform:uppercase;color:var(--color-mist);animation:hero-rise 1.1s var(--ease-out-soft) .95s backwards}
.js-scroll-expand .nyali-coded-hero .hero__place{opacity:calc(1 - var(--reveal)*3)}
.nyali-coded-hero .hero__reveal-caption{display:none}
.js-scroll-expand .nyali-coded-hero .hero__reveal-caption{display:flex;position:absolute;bottom:clamp(var(--space-5),12vh,var(--space-8));left:50%;translate:-50% 0;z-index:2;flex-direction:column;align-items:center;gap:var(--space-3);opacity:calc(var(--reveal)*4 - 3);pointer-events:none}
.js-scroll-expand .nyali-coded-hero.hero.is-revealed .hero__reveal-caption{pointer-events:auto}
.nyali-coded-hero .hero__reveal-title{max-width:none;font-family:var(--font-display);font-size:clamp(1.25rem,2.5vw,2rem);font-weight:300;font-style:italic;color:var(--color-foam);text-shadow:var(--shadow-text)}
.nyali-coded-hero .hero__foot{grid-row:2;padding-bottom:clamp(var(--space-4),7vh,var(--space-6));text-align:left}
.js-scroll-expand .nyali-coded-hero .hero__foot{opacity:calc(1 - var(--reveal)*2.5)}
.nyali-coded-hero .hero__standfirst{max-width:30ch;padding-left:var(--space-2);border-left:1px solid var(--rule-accent);font-size:var(--fs-small);line-height:1.7;color:var(--color-mist);animation:hero-rise 1.1s var(--ease-out-soft) 1.2s backwards}
.nyali-coded-hero .hero__sentinel{position:absolute;bottom:0;left:0;width:100%;height:1px;pointer-events:none}
.nyali-coded-hero .scroll-cue{display:none;position:absolute;bottom:var(--space-3);left:50%;transform:translateX(-50%);flex-direction:column;align-items:center;gap:var(--space-1);font-size:.6875rem;letter-spacing:.24em;text-transform:uppercase;color:var(--color-mist);animation:hero-fade 1s linear 1.7s backwards}
@media(min-width:768px){.nyali-coded-hero .scroll-cue{display:flex}}
.nyali-coded-hero .scroll-cue__line{display:block;width:1px;height:48px;background:linear-gradient(to bottom, var(--color-gold), transparent)}
@media(prefers-reduced-motion:no-preference){.nyali-coded-hero .scroll-cue__line{animation:cue-drift 2.4s var(--ease-out-soft) infinite}}

.nyali-coded-hero [data-parallax-speed]{transform:translate3d(0, var(--parallax-y, 0px), 0);will-change:transform}
.nyali-coded-hero .hero__media[data-parallax-speed]{top:-12%;height:124%}
@media(prefers-reduced-motion:no-preference){.nyali-coded-hero .hero__media img{animation:hero-zoom 22s linear infinite alternate}}

@keyframes hero-wordmark{from{opacity:0;letter-spacing:.4em;transform:translateY(0.1em)}}
@keyframes hero-word-track{from{margin-right:-0.4em}}
@keyframes hero-rise{from{opacity:0;transform:translateY(14px)}}
@keyframes hero-fade{from{opacity:0}}
@keyframes hero-zoom{to{transform:scale(1.12)}}
@keyframes cue-drift{0%,100%{opacity:.35;transform:scaleY(0.7);transform-origin:top}50%{opacity:1;transform:scaleY(1);transform-origin:top}}

@media(prefers-reduced-motion:reduce){
  .nyali-coded-hero *,.nyali-coded-hero *::before,.nyali-coded-hero *::after{animation-duration:.01ms !important;animation-iteration-count:1 !important;animation-delay:0s !important;transition-duration:.01ms !important;transition-delay:0s !important}
  .nyali-coded-hero [data-parallax-speed]{transform:none}
  .nyali-coded-hero .hero__media img{animation:none !important;transform:none !important}
}

/* Sits under the fixed Elementor header (see the site-wide custom CSS that
   already sets body{padding-top:...}) - the hero itself starts at the very
   top of the document flow, same as the source. */
.nyali-coded-hero{margin-top:-96px}
@media(max-width:767px){.nyali-coded-hero{margin-top:-76px}}

/* Ported from the source's .site-nav / .site-nav.is-solid - transparent over
   the hero, solid + blurred once scrolled past (toggled by nav.js via the
   hero's sentinel). Targets the Elementor Site Builder header by its class. */
.nyali-site-header{
  background-color:transparent;
  transition:background-color 240ms cubic-bezier(0.16,1,0.3,1),
             border-color 240ms cubic-bezier(0.16,1,0.3,1);
  border-bottom:1px solid rgba(0,0,0,0);
}
.nyali-site-header.is-solid{
  background-color:rgba(16,47,53,0.85);
  border-bottom-color:rgba(92,102,112,0.25);
}
