/* BERA motion: loader, page curtain, scroll reveals, parallax. */
html { scroll-behavior: smooth; }

.page-loader { position: fixed; inset: 0; z-index: 99999; display: flex; align-items: center; justify-content: center; background: #131b26;
  transition: transform 1.5s cubic-bezier(.77,0,.175,1), visibility 1.5s; animation: ldFailsafe 0s linear 7s forwards; }
.page-loader.is-hidden { transform: translateY(-100%); visibility: hidden; pointer-events: none; }
.loader-content { display: flex; flex-direction: column; align-items: center; gap: 30px; transition: transform .7s ease, opacity .6s ease; }
.page-loader.is-hidden .loader-content { transform: translateY(-50px); opacity: 0; }
.loader-logo { width: 120px; max-width: 40vw; height: auto; opacity: 0; }
.page-loader.ready .loader-logo { animation: ldIn 1.2s cubic-bezier(.2,.7,.2,1) both; }
.loader-bar { width: 120px; max-width: 40vw; opacity: 0; height: 2px; background: rgba(255,255,255,.18); overflow: hidden; }
.loader-bar i { display: block; height: 100%; width: 100%; background: #4db3f6; transform: scaleX(0); transform-origin: 0 50%; }
.page-loader.ready .loader-bar { animation: ldShow .6s ease 1.1s forwards; }
.page-loader.ready .loader-bar i { animation: ldFill 1.4s cubic-bezier(.5,0,.2,1) 1.2s forwards; }
.loader-dots { display: flex; gap: 12px; opacity: 0; }
.page-loader.ready .loader-dots { animation: ldShow .6s ease 1.1s forwards; }
.loader-dots span { width: 10px; height: 10px; border-radius: 50%; background: #fff; }
.page-loader.ready .loader-dots span { animation: ldBounce 1.4s ease-in-out 1.1s infinite both; }
.page-loader.ready .loader-dots span:nth-child(2) { animation-delay: 1.33s; }
.page-loader.ready .loader-dots span:nth-child(3) { animation-delay: 1.56s; }
@keyframes ldIn { from { opacity: 0; transform: translateY(14px) scale(.94); } to { opacity: 1; transform: none; } }
@keyframes ldShow { to { opacity: 1; } }
@keyframes ldFill { to { transform: scaleX(1); } }
@keyframes ldBounce { 0%,80%,100% { transform: scale(.5); opacity: .35; } 40% { transform: scale(1); opacity: 1; } }
@keyframes ldFailsafe { to { visibility: hidden; opacity: 0; pointer-events: none; } }
html.is-loading, html.is-loading body { overflow: hidden; }

.page-curtain { position: fixed; inset: 0; z-index: 99998; background: #131b26; transform: translateY(100%); pointer-events: none; transition: transform .85s cubic-bezier(.77,0,.175,1); }
.page-curtain.is-in { transform: translateY(0); pointer-events: all; }

.scroll-progress { position: fixed; top: 0; left: 0; height: 3px; width: 100%; transform-origin: 0 50%; transform: scaleX(0); background: #4db3f6; z-index: 99990; pointer-events: none; }

/* Reveals, each with its own angle */
.rv { opacity: 0; will-change: transform, opacity; transition: opacity 1.6s cubic-bezier(.16,1,.3,1), transform 1.6s cubic-bezier(.16,1,.3,1); }
.rv-up { transform: translateY(54px); }
.rv-down { transform: translateY(-46px); }
.rv-left { transform: translateX(-70px); }
.rv-right { transform: translateX(70px); }
.rv-scale { transform: scale(.9); }
.rv-tilt { transform: translateY(50px) rotate(2.5deg); transform-origin: 0 100%; }
.rv-wipe { opacity: 1; clip-path: inset(0 100% 0 0); transition: clip-path 1.8s cubic-bezier(.77,0,.175,1); }
.rv-line { opacity: 1; transform: scaleX(0); transform-origin: 0 50%; transition: transform 1.6s cubic-bezier(.77,0,.175,1); }
.rv.in { opacity: 1; transform: none; }
.rv-wipe.in { clip-path: inset(0 0 0 0); }
.rv-line.in { transform: scaleX(1); }

/* Constant gentle movement */
.hero-panel, .tour .play { will-change: transform; }
.tour .play { animation: pulse 3.2s ease-in-out infinite; }
@keyframes pulse { 0%,100% { transform: scale(1); } 50% { transform: scale(1.12); } }
.strip > div { transition: transform .9s cubic-bezier(.16,1,.3,1), filter .9s ease; }
.strip > div:hover { transform: scale(1.04); filter: brightness(1.1); z-index: 1; position: relative; }
.card, .person, .policy { transition: transform .6s cubic-bezier(.16,1,.3,1), box-shadow .6s ease; }
.news-grid > .card:hover, .grid > .card:hover { transform: translateY(-6px); }
.btn, .btn-blue, .btn-coral, .contact-box, .outline-btns a { position: relative; overflow: hidden; transition: background .4s ease, color .4s ease, border-color .4s ease, transform .4s ease; }
.btn::after, .btn-blue::after, .btn-coral::after { content: ""; position: absolute; top: 0; left: -120%; width: 55%; height: 100%; background: rgba(255,255,255,.28); transform: skewX(-20deg); transition: left .9s ease; pointer-events: none; }
.btn:hover::after, .btn-blue:hover::after, .btn-coral:hover::after { left: 140%; }
.nav a { transition: color .35s ease; }
.hero { transition: box-shadow .4s; }
.hero-head { transition: transform .5s ease, background-color .5s ease; }
.hero-head.is-scrolled { }

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .rv { opacity: 1 !important; transform: none !important; clip-path: none !important; transition: none !important; }
  .page-loader, .page-curtain { transition: none !important; }
  .loader-dots span, .loader-logo, .loader-bar i, .tour .play { animation: none !important; }
  .loader-logo, .loader-bar, .loader-dots { opacity: 1 !important; }
}
