:host,
site-footer-section {
  display: block;
  color: var(--color-black, #030303);
  font-family: var(--font-body, Inter, sans-serif);
}

site-footer-section *,
site-footer-section *::before,
site-footer-section *::after { box-sizing: border-box; }
.site-footer a { color: inherit; text-decoration: none; }

.site-footer {
  --footer-shell-space: clamp(.85rem, 2.5svh, 1.5rem);
  --footer-top-rise: clamp(2.25rem, 4.8svh, 2.9rem);
  --footer-bottom-rise: var(--footer-top-rise);
  --footer-top-opening: clamp(2.25rem, 4.8svh, 2.75rem);
  --footer-bottom-opening: clamp(3.4rem, 7svh, 4.25rem);
  position: relative;
  height: 100svh;
  min-height: 100svh;
  padding: var(--footer-shell-space);
  overflow: hidden;
  background: linear-gradient(180deg, #fff 0%, #fff 9%, #0b99ff 48%, #0b99ff 100%);
}

.site-footer__top-detail {
  position: absolute;
  z-index: 6;
  top: 0;
  left: 50%;
  display: grid;
  align-items: stretch;
  justify-items: stretch;
  width: max-content;
  max-width: calc(100% - (var(--footer-top-rise) * 2));
  height: var(--footer-top-rise);
  padding: 0;
  border-radius: 0;
  background: transparent;
  transform: translateX(-50%);
  pointer-events: none;
}

.site-footer__top-detail::before,
.site-footer__top-detail::after,
.site-footer__legal::before,
.site-footer__legal::after {
  content: "";
  position: absolute;
  pointer-events: none;
}

.site-footer__top-detail::before {
  top: 0;
  left: calc(var(--footer-top-rise) * -1 + 1px);
  width: var(--footer-top-rise);
  height: var(--footer-top-rise);
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100' preserveAspectRatio='none'%3E%3Cpath fill='%23fff' d='M0 0C55 0 45 100 100 100V0Z'/%3E%3C/svg%3E") center / 100% 100% no-repeat;
}

.site-footer__top-detail::after {
  top: 0;
  right: calc(var(--footer-top-rise) * -1 + 1px);
  width: var(--footer-top-rise);
  height: var(--footer-top-rise);
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100' preserveAspectRatio='none'%3E%3Cpath fill='%23fff' d='M0 0C55 0 45 100 100 100V0Z'/%3E%3C/svg%3E") center / 100% 100% no-repeat;
  transform: scaleX(-1);
}

.site-footer__top-detail p {
  margin: 0;
  display: grid;
  place-items: stretch;
  height: 100%;
  padding: .45rem clamp(1.15rem, 1.8vw, 1.8rem);
  background: #fff;
  color: var(--color-black, #030303);
  font-family: var(--font-title);
  font-size: clamp(.78rem, .85vw, .95rem);
  font-weight: 700;
  line-height: 1;
  letter-spacing: -.02em;
  white-space: nowrap;
}

.site-footer__panel {
  position: relative;
  display: grid;
  grid-template-rows: auto 1fr auto;
  height: 100%;
  min-height: 0;
  padding: clamp(1.5rem, 3vw, 3rem);
  overflow: hidden;
  border-radius: clamp(1.25rem, 2.25vw, 2.25rem);
  background: var(--color-black, #030303);
  color: #fff;
  isolation: isolate;
}

.site-footer__pattern {
  position: absolute;
  inset: 0;
  z-index: -1;
  width: 100%;
  height: 100%;
  object-fit: cover;
  border-radius: inherit;
  opacity: .2;
}

.site-footer__pattern > img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  border-radius: inherit;
}

.site-footer__top {
  position: relative;
  z-index: 4;
  display: flex;
  justify-content: space-between;
  gap: 2rem;
}

.site-footer__column { display: grid; align-content: start; gap: .75rem; }
.site-footer__label { margin: 0 0 .35rem; color: #aeb4bb; font-size: .72rem; letter-spacing: .12em; text-transform: uppercase; }
.site-footer__link { width: fit-content; font-family: var(--font-title); font-size: clamp(1.1rem, 2vw, 2rem); line-height: 1; }
.site-footer__link:hover, .site-footer__link:focus-visible { color: #0b99ff; }

.site-footer__statement {
  position: absolute;
  inset: 0;
  z-index: 2;
  display: grid;
  align-content: center;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: .02em clamp(19rem, 30vw, 32rem);
  width: 100%;
  margin: 0;
  padding: 0 clamp(1rem, 3vw, 3rem);
  font-family: var(--font-title);
  font-size: clamp(3rem, 7vw, 7.5rem);
  line-height: .86;
  letter-spacing: -.05em;
}

.site-footer__word { display: block; white-space: nowrap; }
.site-footer__word--left { justify-self: end; text-align: right; }
.site-footer__word--right { justify-self: start; text-align: left; }

.site-footer__scene {
  position: absolute;
  z-index: 2;
  inset: var(--footer-top-opening) 0 var(--footer-bottom-opening);
  min-height: 0;
  pointer-events: none;
}

.site-footer__composition { display: contents; }

.site-footer__visual {
  position: absolute;
  z-index: 3;
  inset: 0;
  min-width: 0;
  min-height: 0;
  pointer-events: none;
}

.site-footer__visual img {
  position: absolute;
  top: 50%;
  left: 50%;
  display: block;
  width: auto;
  height: 100%;
  max-width: 100%;
  max-height: 100%;
  object-fit: contain;
  transform: translate(-50%, -50%);
}

.site-footer__proposal.global-button.global-button {
  --button-background: #fff;
  --button-foreground: var(--color-black, #030303);
  --button-border: #fff;
  --button-sheen-color: #d9d9d9;
  position: absolute;
  z-index: 5;
  top: calc(50% + min(25vw, 19svh));
  left: 50%;
  width: max-content;
  max-width: calc(100% - 2rem);
  justify-self: start;
  transform: translate(-50%, -50%);
  white-space: nowrap;
  pointer-events: auto;
}

.site-footer__proposal-rocket {
  position: relative;
  width: 18px;
  height: 20px;
  flex: 0 0 18px;
  overflow: visible;
}

.site-footer__proposal-rocket::before {
  content: "";
  position: absolute;
  top: 50%;
  left: 50%;
  width: clamp(20px, calc(var(--button-height) - 26px), 24px);
  height: clamp(19px, calc(var(--button-height) - 27px), 23px);
  background: url("../site-navigation/rocket-animated-dark.svg?v=1") center / contain no-repeat;
  transform: translate(-50%, -50%);
}

.site-footer__services {
  position: absolute;
  z-index: 4;
  right: 0;
  bottom: 0;
  left: 0;
  display: flex;
  align-items: center;
  height: var(--footer-bottom-opening);
  overflow: hidden;
  color: #0b99ff;
  font-family: var(--font-title);
  font-size: clamp(.85rem, 1.4vw, 1.35rem);
  text-transform: uppercase;
  white-space: nowrap;
}

.site-footer__services-track {
  display: flex;
  width: max-content;
  animation: footer-services-marquee 28s linear infinite;
  will-change: transform;
}

.site-footer__services-group {
  display: flex;
  flex: none;
  align-items: center;
  gap: clamp(1.5rem, 3.5vw, 3.75rem);
  padding-right: clamp(1.5rem, 3.5vw, 3.75rem);
}

@keyframes footer-services-marquee {
  to { transform: translateX(-50%); }
}

.site-footer__legal {
  position: absolute;
  z-index: 7;
  bottom: -1px;
  left: 50%;
  display: grid;
  place-items: center;
  width: max-content;
  max-width: calc(100% - (var(--footer-bottom-rise) * 2));
  height: calc(var(--footer-bottom-rise) + 1px);
  min-height: var(--footer-bottom-rise);
  padding: 0 var(--footer-bottom-rise);
  border-radius: 0;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 300 100' preserveAspectRatio='none'%3E%3Cpath fill='%230b99ff' d='M0 100C48 100 38 0 88 0H212C262 0 252 100 300 100V100H0Z'/%3E%3C/svg%3E") center / 100% 100% no-repeat;
  color: #fff;
  text-align: center;
  transform: translateX(-50%);
  pointer-events: none;
}

.site-footer__legal::before {
  display: none;
}

.site-footer__legal::after {
  display: none;
}

.site-footer__legal strong {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: .25em;
  height: 100%;
  padding: .45rem clamp(1.35rem, 2.6vw, 2.75rem);
  background: transparent;
  color: #fff;
  font-family: var(--font-title);
  font-size: clamp(.78rem, 1vw, 1rem);
  font-weight: 800;
  line-height: 1;
  letter-spacing: -.015em;
  white-space: nowrap;
}

@media (min-width: 1025px) {
  .site-footer__word:nth-child(-n + 2) {
    transform: translateY(-.55em);
  }

  .site-footer__legal {
    max-width: calc(100% - (var(--footer-bottom-rise) * 2));
    padding: 0;
    background: #0b99ff;
  }

  .site-footer__legal::before,
  .site-footer__legal::after {
    bottom: 0;
    display: block;
    width: var(--footer-bottom-rise);
    height: var(--footer-bottom-rise);
    background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100' preserveAspectRatio='none'%3E%3Cpath fill='%230b99ff' d='M0 0C55 0 45 100 100 100V0Z'/%3E%3C/svg%3E") center / 100% 100% no-repeat;
  }

  .site-footer__legal::before {
    left: calc(var(--footer-bottom-rise) * -1 + 1px);
    transform: scaleY(-1);
  }

  .site-footer__legal::after {
    right: calc(var(--footer-bottom-rise) * -1 + 1px);
    transform: scale(-1, -1);
  }

  .site-footer__legal strong {
    padding: .45rem clamp(1.15rem, 1.8vw, 1.8rem);
  }
}

@media (max-width: 1024px) {
  .site-footer {
    --footer-shell-space: max(.85rem, env(safe-area-inset-bottom, 0px));
    --footer-top-rise: clamp(1.95rem, 4.5svh, 2.15rem);
    --footer-bottom-rise: clamp(2.3rem, 5.2svh, 2.55rem);
    --footer-top-opening: 1.4rem;
    --footer-bottom-opening: 3rem;
    padding: var(--footer-shell-space);
  }
  .site-footer__top-detail { width: max-content; max-width: calc(100% - (var(--footer-top-rise) * 2)); height: var(--footer-top-rise); padding: 0; }
  .site-footer__top-detail p { padding: .2rem .55rem; font-size: clamp(.7rem, 3vw, .8rem); }
  .site-footer__panel {
    grid-template-rows: auto minmax(0, 1fr) auto;
    height: 100%;
    min-height: 0;
    padding: 1.25rem;
    border-radius: 1.25rem;
  }
  .site-footer__top {
    gap: 1rem;
    padding-top: var(--footer-top-rise);
  }
  .site-footer__column { gap: .35rem; }
  .site-footer__link { font-size: .9rem; }
  .site-footer__scene {
    position: relative;
    inset: auto;
    min-height: 0;
    padding-top: clamp(1.15rem, 2.4svh, 1.45rem);
  }
  .site-footer__composition {
    position: relative;
    display: grid;
    grid-template-rows: auto minmax(0, 1fr);
    width: 100%;
    height: 100%;
    min-height: 0;
  }
  .site-footer__statement {
    position: relative;
    inset: auto;
    grid-template-columns: max-content max-content;
    justify-content: center;
    align-content: start;
    height: auto;
    margin: 0 0 clamp(.4rem, .9svh, .7rem);
    column-gap: .18em;
    row-gap: 0;
    padding: 0;
    font-size: clamp(1.7rem, 7.4vw, 2.5rem);
  }
  .site-footer__statement { z-index: 4; }
  .site-footer__visual {
    position: relative;
    inset: auto;
    grid-row: 2;
    width: 100%;
    height: 100%;
    min-height: 0;
  }
  .site-footer__visual img {
    top: auto;
    bottom: 0;
    width: auto;
    height: auto;
    max-width: 112%;
    max-height: 100%;
    object-position: center bottom;
    transform: translateX(-50%);
  }
  .site-footer__proposal.global-button.global-button {
    top: auto;
    bottom: clamp(1.25rem, 4svh, 2rem);
    transform: translateX(-50%);
  }
  .site-footer__services {
    position: relative;
    top: auto;
    right: auto;
    bottom: auto;
    left: auto;
    align-items: center;
    height: auto;
    margin-top: clamp(.55rem, 1.5svh, .8rem);
    margin-bottom: calc(var(--footer-bottom-rise) + .6rem);
    padding: 0;
    font-size: clamp(.72rem, 3.4vw, .9rem);
  }
  .site-footer__services-group { gap: 1.5rem; padding-right: 1.5rem; }
  .site-footer__legal { width: max-content; max-width: calc(100% - (var(--footer-bottom-rise) * 2)); min-height: calc(var(--footer-bottom-rise) + 1px); padding: 0 var(--footer-bottom-rise); }
  .site-footer__legal strong {
    display: grid;
    grid-template-rows: auto auto;
    gap: .08rem;
    padding: .2rem clamp(.8rem, 3.5vw, 1.1rem);
    font-size: clamp(.68rem, 2.8vw, .8rem);
    line-height: .95;
  }

  .site-footer__column:first-child .site-footer__link {
    white-space: nowrap;
  }
}

@media (prefers-reduced-motion: reduce) {
  .site-footer *, .site-footer *::before, .site-footer *::after { transition: none !important; }
  .site-footer__services-track { animation: none; }
}
