  :root { --ease: cubic-bezier(.2, .7, .2, 1); }
  html { scroll-padding-top: 96px; }
  /* Tenor Sans exists in one weight only: never let the browser fake bold or italic */
  .font-display { font-weight: 400 !important; font-style: normal !important; font-synthesis: none; letter-spacing: 0 !important; }
  body { background: #F4F5F7; }

  /* ---------- Typography helpers ---------- */
  .eyebrow {
    display: inline-flex; align-items: center; gap: .7rem;
    font-size: .75rem; font-weight: 700; letter-spacing: .2em; text-transform: uppercase;
    color: #1B3B6F; margin-bottom: 1rem;
  }
  .eyebrow::before { content: ""; width: 28px; height: 1px; background: #7BA7C7; }
  .accent-text {
    background: linear-gradient(100deg, #1B3B6F 0%, #7BA7C7 45%, #1B3B6F 100%);
    background-size: 220% 100%;
    -webkit-background-clip: text; background-clip: text; color: transparent;
    animation: shimmer 7s linear infinite;
  }
  @keyframes shimmer { to { background-position: -220% 0; } }

  /* ---------- Buttons ---------- */
  .shine { position: relative; overflow: hidden; }
  .shine::after {
    content: ""; position: absolute; inset: 0; pointer-events: none;
    background: linear-gradient(110deg, transparent 30%, rgba(255,255,255,.5) 50%, transparent 70%);
    transform: translateX(-130%); transition: transform .9s var(--ease);
  }
  .shine:hover::after { transform: translateX(130%); }
  .btn-accent {
    background: #7BA7C7; color: #fff;
    box-shadow: 0 12px 28px -12px rgba(123,167,199,.9);
    transition: transform .35s var(--ease), box-shadow .35s var(--ease), background .3s;
  }
  .btn-accent:hover { background: #6C9BBE; transform: translateY(-2px); box-shadow: 0 18px 34px -12px rgba(123,167,199,1); }
  .btn-glass {
    background: rgba(255,255,255,.08); border: 1px solid rgba(255,255,255,.18); color: #fff;
    backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px);
    transition: background .3s, transform .35s var(--ease), border-color .3s;
  }
  .btn-glass:hover { background: rgba(255,255,255,.16); border-color: rgba(255,255,255,.35); transform: translateY(-2px); }
  .btn-navy {
    background: #1B3B6F; color: #fff;
    box-shadow: 0 14px 30px -12px rgba(27,59,111,.6);
    transition: transform .35s var(--ease), box-shadow .35s var(--ease);
  }
  .btn-navy:hover { transform: translateY(-2px); box-shadow: 0 20px 36px -12px rgba(27,59,111,.7); }
  .btn-outline {
    background: #fff; border: 1px solid rgba(17,17,17,.12); color: #1B3B6F;
    transition: transform .35s var(--ease), border-color .3s, box-shadow .3s;
  }
  .btn-outline:hover { border-color: #7BA7C7; transform: translateY(-2px); box-shadow: 0 14px 30px -14px rgba(17,17,17,.3); }

  /* ---------- Header ---------- */
  #site-header {
    background: rgba(255,255,255,.92);
    backdrop-filter: blur(18px) saturate(1.4); -webkit-backdrop-filter: blur(18px) saturate(1.4);
    border-bottom: 1px solid rgba(17,17,17,.08);
    transition: background .4s, box-shadow .4s;
  }
  #site-header.scrolled { background: rgba(255,255,255,.97); box-shadow: 0 12px 34px -14px rgba(17,17,17,.2); }
  .brand-logo { height: 72px; transition: transform .5s var(--ease); }
  .group:hover .brand-logo { transform: scale(1.04); }
  .nav-link { padding: .55rem 1.05rem; border-radius: 999px; color: #1B3B6F; letter-spacing: .02em; transition: background .3s, color .3s; white-space: nowrap; }
  .nav-link:hover, .nav-link.is-active { background: rgba(27,59,111,.08); }
  .mm { display: grid; grid-template-rows: 0fr; transition: grid-template-rows .55s var(--ease); }
  .mm.open { grid-template-rows: 1fr; }
  .mm > div { overflow: hidden; }
  .mm a { opacity: 0; transform: translateY(10px); transition: opacity .4s, transform .5s var(--ease), background .3s; }
  .mm.open a { opacity: 1; transform: none; transition-delay: calc(var(--i) * 45ms + 120ms), calc(var(--i) * 45ms + 120ms), 0s; }
  #progress {
    position: fixed; top: 0; left: 0; right: 0; height: 3px; z-index: 70; pointer-events: none;
    transform-origin: 0 50%; transform: scaleX(var(--sp, 0));
    background: #7BA7C7;
  }

  /* ---------- Hero ---------- */
  .hero-grid {
    position: absolute; inset: 0; pointer-events: none;
    background-image: linear-gradient(rgba(17,17,17,.035) 1px, transparent 1px), linear-gradient(90deg, rgba(17,17,17,.035) 1px, transparent 1px);
    background-size: 64px 64px;
    -webkit-mask-image: radial-gradient(ellipse 70% 70% at 30% 30%, #000 10%, transparent 75%);
    mask-image: radial-gradient(ellipse 70% 70% at 30% 30%, #000 10%, transparent 75%);
  }
  .aurora { position: absolute; border-radius: 50%; filter: blur(90px); pointer-events: none; will-change: transform; }
  .a1 { width: 560px; height: 560px; background: #7BA7C7; opacity: .28; top: -180px; right: -120px; animation: drift 16s ease-in-out infinite alternate; }
  .a2 { width: 440px; height: 440px; background: #DCE8F1; opacity: .7; bottom: -180px; left: -100px; animation: drift 21s ease-in-out infinite alternate-reverse; }
  .a3 { width: 360px; height: 360px; background: #A9C7DC; opacity: .25; top: 30%; left: 35%; animation: drift 25s ease-in-out infinite alternate; }
  @keyframes drift { to { transform: translate3d(70px, 50px, 0) scale(1.18); } }
  .hero-in { opacity: 0; animation: fadeUp 1s var(--ease) forwards; animation-delay: var(--d, 0s); }
  @keyframes fadeUp { from { opacity: 0; translate: 0 30px; } to { opacity: 1; translate: 0 0; } }
  .w { display: inline-block; overflow: hidden; vertical-align: top; padding: 0 .06em .14em; margin: 0 -.06em -.14em; }
  .wi { display: inline-block; transform: translateY(108%); animation: wordUp 1.05s var(--ease) forwards; animation-delay: calc(var(--i) * 75ms + 250ms); }
  @keyframes wordUp { to { transform: none; } }
  .depth { translate: calc(var(--mx, 0) * var(--k, 20) * 1px) calc(var(--my, 0) * var(--k, 20) * 1px); transition: translate .7s var(--ease); }
  .float { animation: float 8s ease-in-out infinite; }
  .float-slow { animation: float 10s ease-in-out -3s infinite; }
  @keyframes float { 50% { transform: translateY(-14px); } }
  .glass-chip {
    background: rgba(17,17,17,.5); border: 1px solid rgba(255,255,255,.2);
    backdrop-filter: blur(16px); -webkit-backdrop-filter: blur(16px);
    box-shadow: 0 20px 40px -16px rgba(0,0,0,.6);
  }

  /* ---------- Marquee ---------- */
  .marquee {
    --gap: 3rem; overflow: hidden;
    -webkit-mask-image: linear-gradient(90deg, transparent, #000 7%, #000 93%, transparent);
    mask-image: linear-gradient(90deg, transparent, #000 7%, #000 93%, transparent);
  }
  .marquee-track { display: flex; width: max-content; gap: var(--gap); animation: marq 45s linear infinite; }
  .marquee-slow { --gap: 1.5rem; }
  .marquee-slow .marquee-track { animation-duration: 70s; padding: 1rem 0 1.75rem; }
  .marquee:hover .marquee-track { animation-play-state: paused; }
  @keyframes marq { to { transform: translateX(calc(-50% - var(--gap) / 2)); } }

  /* ---------- Cards ---------- */
  .card-lux {
    position: relative; background: #fff; border: 1px solid rgba(17,17,17,.08);
    box-shadow: 0 1px 2px rgba(17,17,17,.04), 0 14px 34px -14px rgba(17,17,17,.12);
    transition: transform .55s var(--ease), box-shadow .55s var(--ease), border-color .4s;
  }
  .card-lux::before {
    content: ""; position: absolute; inset: 0; border-radius: inherit; pointer-events: none; opacity: 0; transition: opacity .4s;
    background: radial-gradient(420px circle at var(--mx, 50%) var(--my, 50%), rgba(123,167,199,.18), transparent 60%);
  }
  .card-lux:hover::before { opacity: 1; }
  .card-lux:not(.card-flat):hover {
    transform: translateY(-6px); border-color: rgba(123,167,199,.75);
    box-shadow: 0 34px 60px -22px rgba(17,17,17,.25);
  }
  .icon-tile { background: #EEF3F8; color: #1B3B6F; transition: background .4s, color .4s, box-shadow .4s, transform .5s var(--ease); }
  .card-lux:hover .icon-tile { background: #1B3B6F; color: #fff; box-shadow: 0 10px 22px -8px rgba(27,59,111,.5); transform: rotate(-6deg) scale(1.06); }
  .img-zoom { overflow: hidden; }
  .img-zoom img { transition: transform 1.2s var(--ease); }
  .card-lux:hover .img-zoom img, .img-zoom:hover img { transform: scale(1.08); }
  .svc-link .material-symbols-outlined { transition: transform .4s var(--ease); }
  .svc-card:hover .svc-link .material-symbols-outlined { transform: translateX(6px); }
  .svc-card:hover .svc-link { color: #5B8DB0; }
  .chip { padding: .4rem .85rem; border-radius: 999px; background: #EEF3F8; color: #1B3B6F; font-size: .75rem; font-weight: 600; border: 1px solid rgba(17,17,17,.08); }

  /* ---------- Scroll reveal ---------- */
  .reveal { opacity: 0; }
  .reveal.is-in { animation: fadeUp 1s var(--ease) both; animation-delay: var(--d, 0ms); }

  /* ---------- Before / after slider ---------- */
  .ba { --p: 50%; position: relative; touch-action: pan-y; }
  .ba-before { position: absolute; inset: 0; clip-path: inset(0 calc(100% - var(--p)) 0 0); }
  .ba-handle { position: absolute; top: 0; bottom: 0; left: var(--p); width: 2px; margin-left: -1px; background: #fff; box-shadow: 0 0 24px rgba(0,0,0,.45); pointer-events: none; }
  .ba-knob {
    position: absolute; top: 50%; left: 50%; width: 52px; height: 52px; border-radius: 50%;
    display: grid; place-items: center; color: #1B3B6F; background: rgba(255,255,255,.96);
    box-shadow: 0 10px 30px -6px rgba(0,0,0,.5); transform: translate(-50%, -50%); transition: transform .35s var(--ease);
  }
  .ba:hover .ba-knob { transform: translate(-50%, -50%) scale(1.1); }
  .ba input { position: absolute; inset: 0; width: 100%; height: 100%; margin: 0; opacity: 0; cursor: ew-resize; z-index: 20; -webkit-appearance: none; appearance: none; background: transparent; }
  .ba input::-webkit-slider-thumb { -webkit-appearance: none; width: 2px; height: 2px; }
  .ba input::-moz-range-thumb { width: 2px; height: 2px; border: 0; }
  .ba input:focus-visible ~ .ba-handle .ba-knob { outline: 3px solid #7BA7C7; outline-offset: 3px; }
  .ba-hint { transition: opacity .5s; }
  .ba.touched .ba-hint { opacity: 0; }

  /* ---------- FAQ / form / misc ---------- */
  .faq[open] { border-color: rgba(123,167,199,.8); }
  .faq.closing .material-symbols-outlined { transform: none !important; }
  .pop { animation: pop .7s var(--ease) both; }
  @keyframes pop { from { opacity: 0; transform: scale(.94) translateY(10px); } to { opacity: 1; transform: none; } }
  .check path { stroke-dasharray: 40; stroke-dashoffset: 40; animation: draw .8s .25s var(--ease) forwards; }
  @keyframes draw { to { stroke-dashoffset: 0; } }
  .footer-lux { background: #0B1A2E; position: relative; }
  .footer-lux::before { content: ""; position: absolute; top: 0; left: 0; right: 0; height: 1px; background: rgba(255,255,255,.12); }
  .mbar { transition: transform .6s var(--ease), opacity .4s; transform: translateY(150%); opacity: 0; }
  .mbar.is-visible { transform: none; opacity: 1; }
  .totop { opacity: 0; pointer-events: none; translate: 0 14px; transition: opacity .4s, translate .5s var(--ease), background .3s; }
  .totop.show { opacity: 1; pointer-events: auto; translate: 0 0; }

  /* ---------- Video lightbox ---------- */
  .vid-poster img { transition: transform 1.4s var(--ease); }
  .vid-poster:hover img { transform: scale(1.05); }
  .vid-play { transition: transform .5s var(--ease), box-shadow .4s; }
  .vid-poster:hover .vid-play { transform: scale(1.1); box-shadow: 0 0 0 14px rgba(123,167,199,.28), 0 20px 50px -10px rgba(123,167,199,.9); }
  .lb { position: fixed; inset: 0; z-index: 100; display: grid; place-items: center; padding: 1rem; background: rgba(17,17,17,.9); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); opacity: 0; visibility: hidden; transition: opacity .4s, visibility .4s; }
  .lb.open { opacity: 1; visibility: visible; }
  .lb-box { width: min(1100px, 100%); transform: scale(.94) translateY(12px); transition: transform .55s var(--ease); }
  .lb.open .lb-box { transform: none; }

  /* ---------- Reduced motion: show final states, no movement ---------- */
  @media (prefers-reduced-motion: reduce) {
    html { scroll-behavior: auto; }
    *, *::before, *::after { animation-duration: .001ms !important; animation-iteration-count: 1 !important; transition-duration: .001ms !important; }
    .marquee { overflow-x: auto; -webkit-mask-image: none; mask-image: none; }
    .marquee-track { animation: none !important; }
    .marquee [aria-hidden="true"] { display: none; }
  }

/* ---------- v2 effects ---------- */
@keyframes pageIn { from { opacity: 0; } to { opacity: 1; } }
body { animation: pageIn .6s ease both; transition: opacity .26s ease; }
body.page-out { opacity: 0; }
.sw { display: inline-block; overflow: hidden; vertical-align: top; padding-bottom: .14em; margin-bottom: -.14em; }
.sw > span { display: inline-block; transform: translateY(115%); transition: transform .9s var(--ease) calc(var(--i, 0) * 70ms); }
h2.in .sw > span { transform: none; }
.btn-accent, .btn-navy { transition: transform .35s var(--ease), box-shadow .35s var(--ease), background .3s, translate .25s var(--ease); }
.burst { position: absolute; left: 50%; top: 70px; pointer-events: none; }
.burst span { position: absolute; width: 8px; height: 12px; border-radius: 2px; animation: burst 1.2s cubic-bezier(.2,.7,.2,1) forwards; }
@keyframes burst { from { transform: translate(0,0) rotate(0); opacity: 1; } to { transform: translate(var(--x), var(--y)) rotate(var(--r)); opacity: 0; } }
@media (prefers-reduced-motion: reduce) { body { animation: none; } .sw > span { transform: none; } }
