/* Native replacement for fullPage.js layout. Loaded AFTER existing site CSS. */
html, body { height:100%; overflow:hidden; }
#fullpage { height:100vh; height:100dvh; overflow-y:auto; overflow-x:hidden; scroll-snap-type:y mandatory; overscroll-behavior-y:contain; scroll-behavior:auto; scrollbar-width:none; }
#fullpage::-webkit-scrollbar, .native-slides::-webkit-scrollbar { display:none; }
#fullpage > .section { position:relative; height:100vh; height:100dvh; width:100%; overflow:hidden; scroll-snap-align:start; scroll-snap-stop:always; }
#fullpage > .section > .row { position:relative; z-index:60; min-height:100%; height:100%; }
#fullpage > .section > .row > .col-12 { height:100%; }
#fullpage > .section > .row > .col-12 > .container { height:100%; }
#fullpage > .section > .row > .col-12 > .container > .row { height:100%; }
#fullpage .fp-bg { position:absolute; top:0; left:0; width:100%; height:100%; object-fit:cover; }
#fullpage .section > .fp-bg { z-index:55; }
#fullpage .native-slides { display:flex; width:100%; height:100%; overflow-x:auto; overflow-y:hidden; scroll-snap-type:x mandatory; scroll-behavior:auto; overscroll-behavior-x:contain; scrollbar-width:none; }
#fullpage .native-slides > .slide { flex:0 0 100%; width:100%; min-width:0; height:100%; position:relative; scroll-snap-align:start; overflow:hidden; }
#fullpage .slide > .row { position:relative; z-index:60; height:100%; }
#fullpage .slide > .row > .col-12 { height:100%; }
#fullpage .slide > .row > .col-12 > .container { height:100%; }
#fullpage .slide > .row > .col-12 > .container > .row { height:100%; }
/* Native equivalents of the original fullPage control arrows */
.native-arrow { position:absolute; z-index:1100; top:50%; transform:translateY(-50%); width:42px; height:62px; border:0; background:transparent; cursor:pointer; padding:0; }
.native-arrow::after { content:""; display:block; width:0; height:0; border-top:28.5px solid transparent; border-bottom:28.5px solid transparent; transition:border-color .2s ease; }
.native-arrow.prev { left:15px; }
.native-arrow.prev::after { border-right:24px solid #6e8193; }
.native-arrow.prev:hover::after { border-right-color:#afc1d4; }
.native-arrow.next { right:15px; }
.native-arrow.next::after { border-left:24px solid #6e8193; margin-left:auto; }
.native-arrow.next:hover::after { border-left-color:#afc1d4; }
.native-arrow:disabled { opacity:0; pointer-events:none; }
.native-arrow:focus-visible { outline:2px solid white; outline-offset:4px; }
@media (prefers-reduced-motion: reduce) { #fullpage, #fullpage .native-slides {scroll-behavior:auto;} }

/* JS drives wheel/keyboard easing. Touch uses native momentum and snap. */
@media (pointer: fine) { #fullpage { scroll-snap-type: y proximity; } }

#fullpage.native-is-animating { scroll-snap-type: none !important; }
#fullpage .native-slides.native-is-animating { scroll-snap-type: none !important; }

/* Phase 5: native parallax reveal. Visual backgrounds only; no foreground movement. */
#fullpage.native-has-parallax .section .fp-bg {
  translate: 0 var(--native-parallax-y, 0px);
  scale: var(--native-parallax-scale, 1.14);
  backface-visibility: hidden;
}
@media (prefers-reduced-motion: reduce) {
  #fullpage.native-has-parallax .section .fp-bg {
    translate: none;
    scale: none;
  }
}

/* Phase 7: touch interaction and responsive viewport resilience. */
#fullpage { -webkit-overflow-scrolling: touch; touch-action: pan-y; }
#fullpage .native-slides { -webkit-overflow-scrolling: touch; touch-action: auto; }
/* Content controls keep normal pointer behavior when nested inside a slide. */
#fullpage input, #fullpage textarea, #fullpage select, #fullpage button, #fullpage a { touch-action: manipulation; }
@supports (height: 100dvh) {
  #fullpage { height: 100dvh; }
  #fullpage > .section { height: 100dvh; }
}
