/* ==========================================================
   Norvaris — site chrome (header, navigation, footer)

   Extracted from home-alt.css so every template shares one
   header and footer instead of the homepage owning its own.

   Two rules keep this file safe to load site-wide:

   1. Generic helper classes are namespaced. Ten other
      stylesheets define .container and eight define .button,
      so the chrome uses .nv-bar / .nv-btn* instead and cannot
      be affected by whichever page stylesheet loads last.

   2. Design tokens are scoped to the chrome subtrees rather
      than :root, for the same reason — nine stylesheets define
      --line. Descendants inherit them; nothing outside does.

   Everything else (.site-header, .desktop-nav, .mobile-menu,
   .footer-*) is already uniquely named, so on the existing
   pages this file matches nothing they contain.
   ========================================================== */

.site-header,
.mobile-menu,
.site-footer,
.skip-link {
  --line: rgba(242, 241, 239, .105);
  --line-strong: rgba(242, 241, 239, .19);
  --accent: #b8afd5;
  --accent-hi: #c9bde4;
  --max: 1440px;
  --pad: clamp(22px, 4vw, 70px);
  --ease: cubic-bezier(.22,.72,.2,1);
}

/* The chrome ships its own box model and link reset so it renders
   identically with or without the Tailwind build underneath it. */
.site-header *, .site-header *::before, .site-header *::after,
.mobile-menu *, .mobile-menu *::before, .mobile-menu *::after,
.site-footer *, .site-footer *::before, .site-footer *::after { box-sizing: border-box; }

:where(.site-header, .mobile-menu, .site-footer) :where(a) { text-decoration: none; }
:where(.site-header, .mobile-menu, .site-footer) :where(button) {
  font: inherit; color: inherit; background: none; border: 0;
}

.skip-link { position: fixed; left: 16px; top: -80px; z-index: 9999; padding: 10px 14px; border-radius: 8px; background: #fff; color: #050505; }
.skip-link:focus { top: 16px; }
.nv-bar { width: min(var(--max), calc(100% - (var(--pad) * 2))); margin-inline: auto; }
.site-header { position: fixed; inset: 0 0 auto; z-index: 1000; height: 90px; border-bottom: 1px solid transparent; transition: height .32s var(--ease), background .32s var(--ease), border-color .32s var(--ease), backdrop-filter .32s var(--ease); }
.site-header.is-scrolled { height: 70px; background: rgba(7,7,8,.82); border-color: var(--line); backdrop-filter: blur(18px); }
.nav-wrap { height: 100%; display: flex; align-items: center; gap: 28px; }
.brand { display: inline-flex; align-items: center; gap: 10px; flex: 0 0 auto; font-size: 12px; font-weight: 760; letter-spacing: .14em; }
.brand-mark { width: 27px; color: var(--accent); }
.desktop-nav { display: flex; align-items: center; gap: 28px; margin-left: auto; }
.desktop-nav a { position: relative; color: #bbb9b5; font-size: 12px; }
.desktop-nav a::after { content: ""; position: absolute; left: 0; bottom: -8px; width: 100%; height: 1px; background: #e5e3de; transform: scaleX(0); transform-origin: right; transition: transform .28s var(--ease); }
.desktop-nav a:hover, .desktop-nav a[aria-current="true"] { color: #fff; }
.desktop-nav a:hover::after, .desktop-nav a[aria-current="true"]::after { transform: scaleX(1); transform-origin: left; }
.nav-actions { display: flex; align-items: center; gap: 18px; }
.lang-switch { display: flex; gap: 7px; color: #5e5d59; font-size: 9px; letter-spacing: .13em; }
.lang-switch .is-active { color: #bdbbb6; }
.menu-button { display: none; width: 42px; height: 42px; border: 1px solid var(--line); border-radius: 50%; background: transparent; color: #fff; position: relative; }
.menu-button span { position: absolute; left: 13px; width: 15px; height: 1px; background: currentColor; transition: top .3s var(--ease), transform .3s var(--ease); }
.menu-button span:first-child { top: 17px; }
.menu-button span:last-child { top: 23px; }
.menu-button[aria-expanded="true"] span:first-child { top: 20px; transform: rotate(45deg); }
.menu-button[aria-expanded="true"] span:last-child { top: 20px; transform: rotate(-45deg); }
.mobile-menu { display: none; }
.nv-btn { min-height: 52px; padding: 0 20px; border: 1px solid transparent; border-radius: 999px; display: inline-flex; align-items: center; justify-content: center; gap: 18px; font-size: 12px; font-weight: 680; transition: transform .22s var(--ease), background .22s ease, color .22s ease, border-color .22s ease; }
.nv-btn span { transition: transform .25s var(--ease); }
.nv-btn:hover span { transform: translateX(3px); }
.nv-btn-sm { min-height: 40px; padding: 0 15px; font-size: 11px; }
.nv-btn-primary { background: #eceae5; color: #0a0a0b; box-shadow: 0 10px 34px rgba(0,0,0,.25); }
.nv-btn-primary:hover { background: #fff; transform: translateY(-1px); }
.nv-btn-outline { border-color: var(--line-strong); background: rgba(255,255,255,.01); color: #e5e3de; }
.nv-btn-outline:hover { border-color: rgba(255,255,255,.35); background: rgba(255,255,255,.035); }
.cta-action .nv-btn { width: 100%; }
.footer-grid { display: grid; grid-template-columns: .8fr 1.2fr; gap: 68px; }
.footer-brand p { margin-top: 22px; color: #73716d; font-size: 11px; line-height: 1.65; }
.footer-links { display: grid; grid-template-columns: repeat(3,1fr); gap: 28px; }
.footer-links > div { display: flex; flex-direction: column; gap: 8px; }
.footer-links span { margin-bottom: 7px; color: #565450; font-size: 8px; text-transform: uppercase; letter-spacing: .14em; }
.footer-links a { color: #aaa8a3; font-size: 11px; }
.footer-links a:hover { color: #fff; }
.footer-bottom { grid-column: 1 / -1; margin-top: 28px; padding-top: 25px; display: grid; grid-template-columns: 1fr auto 1fr; gap: 20px; align-items: center; border-top: 1px solid var(--line); color: #565450; font-size: 8px; text-transform: uppercase; letter-spacing: .11em; }
.footer-bottom > div { justify-self: end; display: flex; gap: 17px; }
@media (max-width: 900px) {
  :root { --pad: 24px; }
  .desktop-nav, .lang-switch, .nav-actions .nv-btn { display: none; }
  .menu-button { display: inline-block; }
  .site-header { height: 76px; }
  .mobile-menu { display: block; position: fixed; inset: 0; padding-top: 94px; background: rgba(7,7,8,.985); opacity: 0; visibility: hidden; transform: translateY(-8px); transition: .3s var(--ease); }
  .mobile-menu.is-open { opacity: 1; visibility: visible; transform: translateY(0); }
  .mobile-menu-inner { height: calc(100svh - 112px); display: flex; flex-direction: column; }
  .mobile-menu nav { display: flex; flex-direction: column; }
  .mobile-menu nav > a { padding: 16px 0; display: flex; align-items: center; justify-content: space-between; border-bottom: 1px solid var(--line); font-family: "Space Grotesk", sans-serif; font-size: clamp(29px,8vw,46px); letter-spacing: -.04em; }
  .mobile-menu nav > a span { color: #66645f; font: 9px/1 Inter,sans-serif; letter-spacing: .13em; }
  .mobile-menu-foot { margin-top: auto; display: flex; justify-content: space-between; gap: 22px; color: #6f6d68; font-size: 10px; }
  .footer-grid { grid-template-columns: 1fr; }
}
@media (max-width: 620px) {
  :root { --pad: 18px; }
  .hero-actions .nv-btn { width: 100%; }
  .footer-links { grid-template-columns: 1fr 1fr; gap: 32px; }
  .footer-bottom { grid-template-columns: 1fr; gap: 10px; }
  .footer-bottom > div { justify-self: start; }
}
.nv-btn {
  position: relative;
  isolation: isolate;
  overflow: hidden;
  min-height: 54px;
  padding: 0 18px 0 22px;
  gap: 16px;
  border-radius: 999px;
  transition:
    transform .45s var(--ease),
    color .45s var(--ease),
    border-color .45s var(--ease),
    box-shadow .45s var(--ease),
    background-color .45s var(--ease); }
.nv-btn::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -2;
  opacity: 0;
  transform: scale(.92);
  border-radius: inherit;
  transition: opacity .48s ease, transform .55s var(--ease); }
.nv-btn::after {
  content: "";
  position: absolute;
  z-index: -1;
  top: -70%;
  bottom: -70%;
  left: -30%;
  width: 18%;
  background: linear-gradient(90deg, transparent, rgba(255,255,255,.35), transparent);
  transform: translateX(-260%) rotate(14deg);
  transition: transform .72s var(--ease);
  pointer-events: none; }
.nv-btn > span {
  width: 28px;
  height: 28px;
  display: grid;
  place-items: center;
  flex: 0 0 28px;
  border: 1px solid currentColor;
  border-radius: 50%;
  opacity: .72;
  transition: transform .5s var(--ease), opacity .35s ease, background .35s ease; }
.nv-btn:hover { transform: translateY(-2px); }
.nv-btn:hover::before { opacity: 1; transform: scale(1); }
.nv-btn:hover::after { transform: translateX(770%) rotate(14deg); }
.nv-btn:hover > span { transform: translateX(2px) rotate(8deg); opacity: 1; }
.nv-btn:active { transform: translateY(0) scale(.985); transition-duration: .12s; }
.nv-btn-primary {
  background: #efede7;
  color: #0a0a0c;
  box-shadow: 0 14px 36px rgba(0,0,0,.30), inset 0 1px 0 rgba(255,255,255,.78); }
.nv-btn-primary::before { background: linear-gradient(110deg, #f6f3ee 0%, #ddd7e8 52%, #f1e9df 100%); }
.nv-btn-primary:hover { background: #efede7; box-shadow: 0 18px 52px rgba(0,0,0,.38), 0 0 0 1px rgba(216,207,235,.16); }
.nv-btn-outline {
  border-color: rgba(255,255,255,.18);
  background: rgba(255,255,255,.025);
  color: #ebe8e2;
  backdrop-filter: blur(12px); }
.nv-btn-outline::before { background: rgba(255,255,255,.07); }
.nv-btn-outline:hover { border-color: rgba(255,255,255,.32); background: rgba(255,255,255,.025); }
.nv-btn-sm { min-height: 42px; padding: 0 12px 0 16px; }
.nv-btn-sm > span { width: 23px; height: 23px; flex-basis: 23px; font-size: 10px; }
.nv-btn-dark {
  background: #0d0c10;
  color: #f4f0ea;
  border-color: rgba(12,10,15,.2);
  box-shadow: 0 15px 36px rgba(44,37,53,.24); }
.nv-btn-dark::before { background: linear-gradient(115deg, #17131e 0%, #30273d 52%, #161319 100%); }
.nv-btn-dark:hover { box-shadow: 0 20px 45px rgba(48,38,60,.32); }
.cta-action .nv-btn { width: 100%; min-height: 58px; }
@media (max-width: 620px) {
  .nv-btn { width: 100%; justify-content: space-between; }
}
@media (prefers-reduced-motion: reduce) {
  .nv-btn, .nv-btn::before, .nv-btn::after, .nv-btn > span {
    transition: none !important; }
}
.nav-dropdown { position: relative; display: flex; align-items: center; height: 70px; }
.nav-dropdown-trigger {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 0;
  border: 0;
  background: transparent;
  color: #bbb9b5;
  font-size: 12px;
  cursor: pointer;
  transition: color .35s ease; }
.nav-dropdown-trigger > span {
  color: #6f6c73;
  font-size: 11px;
  transform: translateY(-1px);
  transition: transform .42s var(--ease), color .35s ease; }
.nav-dropdown:hover .nav-dropdown-trigger, .nav-dropdown:focus-within .nav-dropdown-trigger, .nav-dropdown.is-open .nav-dropdown-trigger { color: #fff; }
.nav-dropdown:hover .nav-dropdown-trigger > span, .nav-dropdown:focus-within .nav-dropdown-trigger > span, .nav-dropdown.is-open .nav-dropdown-trigger > span { transform: translateY(0) rotate(180deg); color: var(--accent); }
.services-dropdown {
  position: absolute;
  top: calc(100% - 4px);
  left: 50%;
  width: min(690px, 62vw);
  display: grid;
  grid-template-columns: 215px minmax(0, 1fr);
  gap: 0;
  padding: 9px;
  opacity: 0;
  visibility: hidden;
  transform: translate(-50%, -8px) scale(.99);
  transform-origin: 50% 0;
  border: 1px solid rgba(10,10,10,.10);
  border-radius: 15px;
  background: #f0eee9;
  color: #11110f;
  box-shadow: 0 34px 90px rgba(0,0,0,.30), 0 5px 18px rgba(0,0,0,.12);
  transition: opacity .24s ease, transform .42s var(--ease), visibility .24s ease;
  pointer-events: none;
  overflow: hidden; }
.nav-dropdown:hover .services-dropdown, .nav-dropdown:focus-within .services-dropdown, .nav-dropdown.is-open .services-dropdown {
  opacity: 1;
  visibility: visible;
  transform: translate(-50%, 0) scale(1);
  pointer-events: auto; }
.services-dropdown-intro {
  display: flex;
  flex-direction: column;
  min-height: 100%;
  padding: 24px 22px 20px;
  border-right: 1px solid rgba(17,17,15,.10);
  background:
    radial-gradient(110% 90% at 0% 0%, rgba(181,172,201,.28), transparent 58%),
    #e8e5df; }
.services-dropdown-intro > span {
  color: #706d68;
  font-size: 9px;
  font-weight: 700;
  letter-spacing: .15em;
  text-transform: uppercase; }
.services-dropdown-intro > strong {
  display: block;
  margin-top: 38px;
  max-width: 170px;
  color: #11110f;
  font-family: "Space Grotesk", sans-serif;
  font-size: 24px;
  font-weight: 620;
  line-height: 1.03;
  letter-spacing: -.045em; }
.services-dropdown-intro > p {
  margin: 16px 0 28px;
  color: #66625d;
  font-size: 12px;
  line-height: 1.55; }
.desktop-nav .services-overview-link {
  display: inline-flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-top: auto;
  padding: 12px 0 3px;
  border-top: 1px solid rgba(17,17,15,.12);
  color: #161513;
  font-size: 11px;
  font-weight: 650; }
.desktop-nav .services-overview-link::after { display: none; }
.services-overview-link i {
  font-style: normal;
  transition: transform .36s var(--ease); }
.services-overview-link:hover i { transform: translate(3px,-3px); }
.services-dropdown-links {
  display: flex;
  flex-direction: column;
  padding: 4px;
  background: #f4f2ee; }
.desktop-nav .services-dropdown-links > a {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 22px;
  min-height: 70px;
  padding: 13px 15px 13px 17px;
  border-bottom: 1px solid rgba(17,17,15,.085);
  border-radius: 8px;
  color: #171614;
  overflow: hidden;
  transition: background .34s var(--ease), color .34s ease, transform .4s var(--ease); }
.desktop-nav .services-dropdown-links > a:last-child { border-bottom-color: transparent; }
.desktop-nav .services-dropdown-links > a::after { display: none; }
.desktop-nav .services-dropdown-links > a:hover {
  color: #f5f2ec;
  background: #161514;
  transform: translateX(2px); }
.services-dropdown-links a > span {
  display: flex;
  flex-direction: column;
  min-width: 0; }
.services-dropdown-links a strong {
  color: inherit;
  font-size: 13px;
  font-weight: 650;
  letter-spacing: -.012em; }
.services-dropdown-links a em {
  margin-top: 4px;
  color: #716d67;
  font-size: 10.5px;
  line-height: 1.4;
  font-style: normal;
  transition: color .34s ease; }
.services-dropdown-links a:hover em { color: #aaa59d; }
.services-dropdown-links a > i {
  flex: 0 0 auto;
  width: 30px;
  height: 30px;
  display: grid;
  place-items: center;
  border: 1px solid rgba(17,17,15,.14);
  border-radius: 50%;
  color: #5e5a55;
  font-size: 11px;
  font-style: normal;
  transition: transform .38s var(--ease), border-color .34s ease, color .34s ease, background .34s ease; }
.services-dropdown-links a:hover > i {
  transform: translate(2px,-2px) rotate(2deg);
  border-color: rgba(255,255,255,.24);
  background: rgba(255,255,255,.06);
  color: #fff; }
@media (max-width: 1120px) {
  .services-dropdown { width: min(640px, 76vw); grid-template-columns: 195px minmax(0,1fr); }
}
@media (max-width: 900px) {
  .nav-dropdown { display: none; }
}
.footer-brand p { color: #8f8b86; font-size: 12.5px; }
.footer-links a { color: #b8b4ae; font-size: 12px; }
.footer-links span { color: #77736e; }
.footer-bottom { color: #77736e; }
.brand-logo { display: inline-flex; align-items: center; }
.brand-logo img { display: block; width: clamp(132px, 9.5vw, 170px); height: auto; object-fit: contain; }
.site-header { background: transparent; border-bottom-color: rgba(255,255,255,.045); }
.site-header.is-scrolled { background: rgba(4,6,7,.76); border-bottom-color: rgba(255,255,255,.08); backdrop-filter: blur(22px) saturate(120%); }
@media (max-width: 900px) {
  .brand-logo img { width:145px; }
}
@media (max-width: 620px) {
  .brand-logo img { width:132px; }
  .hero-cinematic .hero-actions .nv-btn { width:100%; }
}
.desktop-nav { gap: 30px; }
.desktop-nav > a, .nav-dropdown-trigger { font-size: 12.5px; font-weight: 540; letter-spacing: -.01em; }
.nav-dropdown-trigger { gap: 8px; }
.nav-dropdown-trigger .chevron {
  width: 7px; height: 7px; display: inline-block;
  border-right: 1.6px solid currentColor;
  border-bottom: 1.6px solid currentColor;
  transform: translateY(-1px) rotate(45deg);
  transform-origin: 55% 55%;
  opacity: .75;
  transition: transform .38s var(--ease), opacity .32s ease, color .32s ease; }
.nav-dropdown:hover .nav-dropdown-trigger .chevron, .nav-dropdown:focus-within .nav-dropdown-trigger .chevron, .nav-dropdown.is-open .nav-dropdown-trigger .chevron {
  transform: translateY(2px) rotate(-135deg);
  opacity: 1; }
.services-dropdown {
  top: calc(100% + 10px);
  width: min(700px, 64vw);
  padding: 8px;
  border: 1px solid rgba(255,255,255,.09);
  border-radius: 18px;
  background: linear-gradient(180deg, rgba(12,13,16,.98), rgba(10,10,12,.985));
  color: #ece8e1;
  box-shadow: 0 30px 80px rgba(0,0,0,.42), 0 0 0 1px rgba(255,255,255,.025) inset; }
.services-dropdown::before {
  content: ""; position: absolute; inset: 0; border-radius: inherit; pointer-events: none;
  background: radial-gradient(110% 90% at 0% 0%, rgba(111,212,196,.055), transparent 42%),
              radial-gradient(90% 90% at 100% 0%, rgba(145,114,235,.07), transparent 38%); }
.services-dropdown-intro, .services-dropdown-links { position: relative; z-index: 1; }
.services-dropdown-intro {
  padding: 22px 22px 18px;
  border-right: 1px solid rgba(255,255,255,.07);
  background: linear-gradient(180deg, rgba(255,255,255,.02), rgba(255,255,255,.008)); }
.services-dropdown-intro > span { color: #8f938d; }
.services-dropdown-intro > strong {
  max-width: 180px; margin-top: 28px; color: #f3efe9;
  font-size: 22px; line-height: 1.02; }
.services-dropdown-intro > p { color: #989c96; font-size: 12.5px; line-height: 1.6; }
.desktop-nav .services-overview-link {
  color: #efebe4; font-size: 11.5px; padding-top: 14px; border-top-color: rgba(255,255,255,.09); }
.services-dropdown-links { padding: 4px; background: transparent; }
.desktop-nav .services-dropdown-links > a {
  min-height: 72px; padding: 14px 16px 14px 18px;
  border-bottom-color: rgba(255,255,255,.07); color: #ebe6df; }
.desktop-nav .services-dropdown-links > a:hover {
  color: #fff; background: linear-gradient(90deg, rgba(255,255,255,.06), rgba(255,255,255,.02)); transform: translateX(2px); }
.services-dropdown-links a strong { font-size: 13.5px; }
.services-dropdown-links a em { color: #8d918a; font-size: 11px; line-height: 1.45; }
.services-dropdown-links a:hover em { color: #b3b5af; }
.services-dropdown-links a > i {
  border-color: rgba(255,255,255,.13); color: #cfcbc2; background: rgba(255,255,255,.02); }
.services-dropdown-links a:hover > i { border-color: rgba(255,255,255,.22); background: rgba(255,255,255,.08); }
.site-header.is-scrolled .desktop-nav > a, .site-header.is-scrolled .nav-dropdown-trigger { color: #cbc8c2; }
.footer-brand p, .footer-links a { color: #b1afa9; }
.footer-brand p { font-size: 13.5px; line-height: 1.7; }
.footer-links a { font-size: 12px; }
@media (max-width: 1180px) {
  .services-dropdown { width: min(650px, 70vw); }
}
.nav-dropdown { padding-bottom: 18px; margin-bottom: -18px; }
.nav-dropdown::after {
  content: "";
  position: absolute;
  left: 0; right: 0; top: 100%; height: 20px; }
.services-dropdown { top: calc(100% + 4px); }
.site-header {
  transition: height .48s var(--ease), background .48s ease, border-color .48s ease, backdrop-filter .48s ease; }
.site-header.is-scrolled {
  background: rgba(4,6,7,.84);
  backdrop-filter: blur(24px) saturate(118%); }
.desktop-nav > a, .nav-dropdown-trigger {
  transition: color .38s ease, opacity .38s ease; }
.desktop-nav:hover > a:not(:hover), .desktop-nav:hover .nav-dropdown:not(:hover) .nav-dropdown-trigger {
  opacity: .68; }
.services-dropdown {
  transform: translate(-50%, -7px) scale(.992);
  transition: opacity .28s ease, transform .46s var(--ease), visibility .28s ease; }
.nav-dropdown:hover .services-dropdown, .nav-dropdown:focus-within .services-dropdown, .nav-dropdown.is-open .services-dropdown {
  transform: translate(-50%, 0) scale(1); }
.desktop-nav .services-dropdown-links > a {
  opacity: 0;
  transform: translateY(-4px);
  transition: opacity .34s ease, transform .42s var(--ease), background .34s var(--ease), color .34s ease; }
.nav-dropdown:hover .services-dropdown-links > a, .nav-dropdown:focus-within .services-dropdown-links > a, .nav-dropdown.is-open .services-dropdown-links > a {
  opacity: 1;
  transform: translateY(0); }
.nav-dropdown:hover .services-dropdown-links > a:nth-child(1), .nav-dropdown:focus-within .services-dropdown-links > a:nth-child(1), .nav-dropdown.is-open .services-dropdown-links > a:nth-child(1) { transition-delay: .025s; }
.nav-dropdown:hover .services-dropdown-links > a:nth-child(2), .nav-dropdown:focus-within .services-dropdown-links > a:nth-child(2), .nav-dropdown.is-open .services-dropdown-links > a:nth-child(2) { transition-delay: .05s; }
.nav-dropdown:hover .services-dropdown-links > a:nth-child(3), .nav-dropdown:focus-within .services-dropdown-links > a:nth-child(3), .nav-dropdown.is-open .services-dropdown-links > a:nth-child(3) { transition-delay: .075s; }
.nav-dropdown:hover .services-dropdown-links > a:nth-child(4), .nav-dropdown:focus-within .services-dropdown-links > a:nth-child(4), .nav-dropdown.is-open .services-dropdown-links > a:nth-child(4) { transition-delay: .10s; }
.nav-dropdown:hover .services-dropdown-links > a:nth-child(5), .nav-dropdown:focus-within .services-dropdown-links > a:nth-child(5), .nav-dropdown.is-open .services-dropdown-links > a:nth-child(5) { transition-delay: .125s; }
.desktop-nav .services-dropdown-links > a:hover {
  transform: translateX(3px); }
.nv-btn {
  transition: transform .46s var(--ease), box-shadow .46s var(--ease), background .4s ease, color .4s ease, border-color .4s ease; }
.nv-btn::before {
  transition: opacity .45s ease, transform .5s var(--ease); }
.nv-btn::after {
  transition: transform .8s var(--ease), opacity .45s ease; }
.nv-btn > span {
  transition: transform .48s var(--ease), background .4s ease, color .4s ease, border-color .4s ease; }
.nv-btn:hover { transform: translateY(-2px); }
.nv-btn:hover > span { transform: translateX(3px); }
.nv-btn:active { transform: translateY(0) scale(.99); }
.cta .nv-btn-dark {
  background: #121214;
  border-color: rgba(20,18,22,.18);
  color: #f4f1eb;
  box-shadow: 0 16px 38px rgba(39,33,44,.20); }
.cta .nv-btn-dark::before {
  background: linear-gradient(110deg, #151518 0%, #232127 50%, #151518 100%); }
.cta .nv-btn-dark:hover {
  box-shadow: 0 22px 48px rgba(39,33,44,.28); }
.cta .nv-btn-dark > span {
  background: rgba(255,255,255,.06);
  border-color: rgba(255,255,255,.10); }
@media (prefers-reduced-motion: reduce) {
  .desktop-nav .services-dropdown-links > a { opacity: 1; transform: none; }
}
.desktop-nav > a, .nav-dropdown-trigger {
  color: #eceae5 !important;
  font-weight: 570; }
.desktop-nav > a:hover, .desktop-nav > a[aria-current="true"], .nav-dropdown:hover .nav-dropdown-trigger, .nav-dropdown:focus-within .nav-dropdown-trigger, .nav-dropdown.is-open .nav-dropdown-trigger { color: #fff !important; }
.site-header.is-scrolled .desktop-nav > a, .site-header.is-scrolled .nav-dropdown-trigger { color: #e6e3dd !important; }
.nav-dropdown-trigger .chevron { color: #b9b7b1; }
.lang-switch {
  gap: 8px;
  color: rgba(236,234,229,.48);
  font-size: 11.5px;
  font-weight: 560;
  letter-spacing: .02em; }
.lang-switch .is-active { color: #eceae5; }
.lang-switch > span:nth-child(2) { color: rgba(236,234,229,.28); }
.lang-switch a { color: rgba(236,234,229,.52); transition: color .3s ease; }
.lang-switch a:hover { color: #fff; }
.footer-grid { grid-template-columns: minmax(290px,.82fr) minmax(0,1.18fr); gap: clamp(70px,8vw,135px); }
.footer-brand .brand-logo img { width: clamp(145px, 10vw, 178px); }
.footer-brand p {
  max-width: 360px;
  margin: 24px 0 0;
  color: #a9a7a1;
  font-size: 14px;
  line-height: 1.68; }
.footer-socials { display: flex; align-items: center; gap: 10px; margin-top: 24px; }
.footer-socials a {
  width: 36px;
  height: 36px;
  display: grid;
  place-items: center;
  border: 1px solid rgba(255,255,255,.10);
  border-radius: 50%;
  color: #aaa8a3;
  background: rgba(255,255,255,.012);
  transition: color .32s ease, border-color .32s ease, background .32s ease, transform .38s var(--ease); }
.footer-socials svg { width: 15px; height: 15px; fill: currentColor; }
.footer-socials a:hover {
  color: #f2f0eb;
  border-color: rgba(255,255,255,.22);
  background: rgba(255,255,255,.045);
  transform: translateY(-2px); }
.footer-links { gap: clamp(30px,4vw,58px); }
.footer-links span {
  margin-bottom: 10px;
  color: #777570;
  font-size: 9.5px;
  font-weight: 650;
  letter-spacing: .14em; }
.footer-links a { color: #b8b6b0; font-size: 13px; line-height: 1.45; }
.footer-links > div { gap: 10px; }
.footer-bottom {
  margin-top: 42px;
  padding-top: 25px;
  color: #777570;
  font-size: 9.5px;
  letter-spacing: .10em; }
.footer-bottom > div { gap: 20px; }
.footer-bottom a { transition: color .3s ease; }
.footer-bottom a:hover { color: #eceae5; }
@media (max-width: 900px) {
  .footer-grid { grid-template-columns: 1fr; gap: 56px; }
  .footer-brand p { font-size: 13.5px; }
}
@media (max-width: 620px) {
  .footer-socials a { width: 34px; height: 34px; }
  .footer-links a { font-size: 12.5px; }
}
@media (max-width: 900px) {
  .nav-wrap { justify-content: space-between; }
  .nav-actions { margin-left: auto; gap: 16px; }
  .lang-switch {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: 10px;
    letter-spacing: .14em; }
  .menu-button { flex: 0 0 auto; width: 38px; height: 38px; }
  .menu-button span { left: 11px; width: 16px; }
  .menu-button span:first-child { top: 15px; }
  .menu-button span:last-child { top: 21px; }
  .menu-button[aria-expanded="true"] span:first-child, .menu-button[aria-expanded="true"] span:last-child { top: 18px; }
  .mobile-menu {
    padding-top: 88px;
    background: rgba(7, 7, 8, .965);
    backdrop-filter: blur(24px);
    -webkit-backdrop-filter: blur(24px); }
  .mobile-menu-inner { height: calc(100svh - 104px); }
  .mobile-menu nav > a {
    padding: 17px 0;
    font-size: clamp(22px, 5.4vw, 30px);
    font-weight: 500;
    letter-spacing: -.03em;
    color: rgba(236, 234, 229, .88);
    border-bottom: 1px solid rgba(255, 255, 255, .06);
    transition: color .25s var(--ease), padding-left .25s var(--ease); }
  .mobile-menu nav > a:hover, .mobile-menu nav > a:focus-visible { color: #fff; padding-left: 6px; }
  .mobile-menu-foot {
    align-items: center;
    padding-top: 20px;
    border-top: 1px solid rgba(255, 255, 255, .06);
    font-size: 10.5px;
    letter-spacing: .05em;
    color: rgba(236, 234, 229, .4); }
  .mobile-menu-foot a { color: rgba(236, 234, 229, .62); transition: color .25s var(--ease); }
  .mobile-menu-foot a:hover { color: #fff; }
  .mobile-menu nav > a, .mobile-menu nav > .mobile-sub, .mobile-menu-foot {
    opacity: 0;
    transform: translateY(7px);
    transition: opacity .38s var(--ease), transform .38s var(--ease),
                color .25s var(--ease), padding-left .25s var(--ease); }
  .mobile-menu.is-open nav > a, .mobile-menu.is-open nav > .mobile-sub, .mobile-menu.is-open .mobile-menu-foot { opacity: 1; transform: none; }
  .mobile-menu.is-open nav > *:nth-child(1) { transition-delay: .06s; }
  .mobile-menu.is-open nav > *:nth-child(2) { transition-delay: .10s; }
  .mobile-menu.is-open nav > *:nth-child(3) { transition-delay: .14s; }
  .mobile-menu.is-open nav > *:nth-child(4) { transition-delay: .18s; }
  .mobile-menu.is-open nav > *:nth-child(5) { transition-delay: .22s; }
  .mobile-menu.is-open nav > *:nth-child(6) { transition-delay: .26s; }
  .mobile-menu.is-open .mobile-menu-foot { transition-delay: .30s; }
}
@media (max-width: 620px) {
  .mobile-menu nav > a { padding: 14px 0; font-size: clamp(20px, 6vw, 26px); }
  .nav-actions { gap: 13px; }
}
@media (prefers-reduced-motion: reduce) {
  .mobile-menu nav > a, .mobile-menu nav > .mobile-sub, .mobile-menu-foot { opacity: 1; transform: none; transition: none; }
}
@media (max-width: 900px) {
  .mobile-menu { z-index: 999; }
  .site-header .nav-wrap { position: relative; z-index: 2; }
  .lang-switch .is-active, .lang-switch a {
    padding: 4px 7px;
    border-radius: 5px;
    line-height: 1; }
  .lang-switch .is-active { background: rgba(255, 255, 255, .1); color: #fff; }
  .lang-switch > span:nth-child(2) { display: none; }
  .mobile-sub { border-bottom: 1px solid rgba(255, 255, 255, .06); }
  .mobile-sub-trigger {
    display: flex;
    align-items: center;
    justify-content: space-between;
    width: 100%;
    padding: 17px 0;
    border: 0;
    background: none;
    color: rgba(236, 234, 229, .88);
    font-family: "Space Grotesk", sans-serif;
    font-size: clamp(22px, 5.4vw, 30px);
    font-weight: 500;
    letter-spacing: -.03em;
    text-align: left;
    cursor: pointer;
    transition: color .25s var(--ease), padding-left .25s var(--ease); }
  .mobile-sub-trigger:hover { color: #fff; padding-left: 6px; }
  .mobile-sub-mark {
    display: inline-flex;
    align-items: center;
    color: rgba(236, 234, 229, .34); }
  .mobile-sub-mark i {
    width: 8px;
    height: 8px;
    border-right: 1.5px solid currentColor;
    border-bottom: 1.5px solid currentColor;
    transform: rotate(45deg) translate(-1px, -1px);
    transition: transform .3s var(--ease); }
  .mobile-sub.is-open .mobile-sub-trigger { color: #fff; }
  .mobile-sub.is-open .mobile-sub-mark i { transform: rotate(225deg) translate(-2px, -2px); }
  .mobile-sub-panel {
    display: grid;
    grid-template-rows: 0fr;
    transition: grid-template-rows .34s var(--ease); }
  .mobile-sub.is-open .mobile-sub-panel { grid-template-rows: 1fr; }
  .mobile-sub-panel > div { min-height: 0; overflow: hidden; }
  .mobile-sub-panel a {
    display: block;
    padding: 10px 0 10px 14px;
    border-left: 1px solid rgba(255, 255, 255, .1);
    margin-left: 2px;
    color: rgba(236, 234, 229, .55);
    font-size: 14px;
    letter-spacing: -.01em;
    transition: color .22s var(--ease), border-color .22s var(--ease); }
  .mobile-sub-panel a:first-child { padding-top: 2px; }
  .mobile-sub-panel a:last-child { padding-bottom: 18px; }
  .mobile-sub-panel a:hover { color: #fff; border-color: rgba(255, 255, 255, .34); }
  .mobile-menu-foot { gap: 18px; }
  .mobile-menu-cta {
    flex: 0 0 auto;
    padding: 11px 20px;
    border-radius: 999px;
    background: #f2f1ee;
    color: #0b0b0d !important;
    font-size: 11.5px;
    font-weight: 600;
    letter-spacing: .01em;
    white-space: nowrap;
    transition: transform .25s var(--ease), background .25s var(--ease); }
  .mobile-menu-cta:hover { background: #fff; transform: translateY(-1px); }
}
@media (max-width: 900px) {
  .mobile-sub-mark {
    margin-right: -2px;
    color: rgba(236, 234, 229, .55);
    transition: color .25s var(--ease); }
  .mobile-sub-mark i {
    width: 11px;
    height: 11px;
    border-right-width: 2px;
    border-bottom-width: 2px;
    border-radius: 0 0 2px 0; }
  .mobile-sub-trigger:hover .mobile-sub-mark, .mobile-sub.is-open .mobile-sub-mark { color: var(--accent-hi); }
}
.footer-bottom { grid-template-columns: 1fr auto; }
@media (max-width: 760px) {
  .footer-bottom { grid-template-columns: 1fr; }
}
.site-footer .footer-grid { position: relative; }
.site-footer .footer-top {
  position: absolute;
  top: 0;
  right: 0;
  width: 44px;
  height: 44px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0;
  color: rgba(236, 234, 229, .4);
  background: none;
  border: 1px solid var(--line);
  border-radius: 999px;
  cursor: pointer;
  transition: color .3s var(--ease), background .3s var(--ease), border-color .3s var(--ease); }
.footer-top svg { transform: rotate(-45deg); transition: transform .5s var(--ease); }
.footer-top:hover { color: #eceae5; background: rgba(255,255,255,.05); border-color: rgba(255,255,255,.18); }
.footer-top:hover svg { transform: rotate(0deg); }
.footer-links { gap: clamp(22px, 2.6vw, 40px); padding-right: 60px; }
@media (max-width: 900px) {
  .site-footer .footer-top { width: 40px; height: 40px; }
  .footer-links { padding-right: 52px; }
}
@media (max-width: 760px) {
  .site-footer .footer-top { position: static; margin-bottom: 24px; }
  .footer-links { padding-right: 0; }
}

/* ---------------------------------------------------------------
   Mobile panel transition

   The design used the shorthand `transition: .3s var(--ease)`, which
   applies to *all* properties. Interpolating `visibility` that way
   leaves it stuck at its from-value, so the panel kept computing to
   hidden even with .is-open applied and the cascade otherwise correct.

   Naming the properties fixes it, and switching visibility discretely
   — no delay opening, delayed to the end when closing — is the
   standard pattern: the panel is visible for the whole fade in both
   directions and can never be caught mid-interpolation. It also stops
   backdrop-filter animating along with the panel.
   --------------------------------------------------------------- */
@media (max-width: 900px) {
  .mobile-menu {
    transition:
      opacity .3s var(--ease),
      transform .3s var(--ease),
      visibility 0s linear .3s;
  }
  .mobile-menu.is-open {
    transition:
      opacity .3s var(--ease),
      transform .3s var(--ease),
      visibility 0s linear 0s;
  }
}

/* ---------------------------------------------------------------
   Footer frame

   The homepage markup used <footer class="footer">, so when the
   shared footer moved to .site-footer every padding rule was left
   behind in home-alt.css and the bar ended up flush against the
   section above it and against the bottom of the page.

   Top padding gives the footer air on templates whose last section
   ends hard (the Projects page CTA did); the border-top carries the
   separation, so no outer margin is needed. The bottom padding keeps
   the copyright line off the viewport edge.
   --------------------------------------------------------------- */
.site-footer {
  padding: clamp(78px, 8vw, 112px) 0 36px;
  border-top: 1px solid var(--line);
}

/* Breathing room inside: brand block to link columns, and above the
   legal bar so it reads as a separate row rather than a caption. */
.site-footer .footer-bottom {
  margin-top: clamp(48px, 5.5vw, 78px);
  padding-top: clamp(26px, 2.4vw, 34px);
}

@media (max-width: 760px) {
  .site-footer {
    padding: clamp(56px, 12vw, 76px) 0 36px;
  }
}

/* ---------------------------------------------------------------
   Back-to-top

   Resting state is now a plain vertical arrow in a visible ring —
   the diagonal-at-rest read as a stray glyph. The rotation flourish
   is kept, just reversed: it tilts to the diagonal on hover.
   --------------------------------------------------------------- */
.site-footer .footer-top {
  width: 46px;
  height: 46px;
  color: rgba(236, 234, 229, .55);
  border-color: var(--line-strong);
  background: rgba(255, 255, 255, .014);
}
.site-footer .footer-top svg {
  width: 16px;
  height: 16px;
  transform: rotate(0deg);
}
.site-footer .footer-top:hover {
  color: #0a0a0b;
  background: #eceae5;
  border-color: #eceae5;
}
.site-footer .footer-top:hover svg { transform: rotate(45deg); }
.site-footer .footer-top:focus-visible {
  outline: 2px solid var(--accent-hi);
  outline-offset: 3px;
}

/* ---------------------------------------------------------------
   Mobile sub-menu trigger

   "Services" is a <button> while its siblings are <a>, so it never
   picked up the nav link styling. Two things were wrong: the chrome
   reset's `font: inherit` outranked it (fixed at source by dropping
   that reset to zero specificity with :where), and the ≤620px
   step-down is declared earlier in this file than the trigger's own
   rules, so at equal specificity the larger size kept winning.

   Declared last so the trigger matches its siblings exactly.
   --------------------------------------------------------------- */
@media (max-width: 620px) {
  .mobile-sub-trigger {
    padding: 14px 0;
    font-size: clamp(20px, 6vw, 26px);
  }
}
