:root {
  --font-sans: "Figtree", "Segoe UI", system-ui, sans-serif;
  --font-display: "Cormorant Garamond", "Times New Roman", serif;

  --color-bg: #090a0b;
  --color-fg: #eceae4;
  --color-muted: #9a9b96;
  --color-subtle: #6a6d68;
  --color-surface: #121416;
  --color-raised: #191c1f;
  --color-line: #2a2d30;
  --color-accent: #d5d2c8;
  --color-accent-fg: #0c0d0e;
  --color-danger: #c45c52;

  --radius-xs: 0.25rem;
  --radius-sm: 0.5rem;
  --radius-md: 0.75rem;
  --radius-lg: 1rem;
  --radius-xl: 1.5rem;
  --radius-2xl: 2rem;

  --text-display: clamp(2.5rem, 1.4rem + 4vw, 5.25rem);
  --text-title: clamp(1.75rem, 1.2rem + 1.8vw, 3rem);
  --text-section: clamp(1.35rem, 1.1rem + 0.8vw, 1.85rem);

  --aspect-portrait: 3 / 4;
  --aspect-photo: 3 / 2;

  --ease-smooth: cubic-bezier(0.22, 1, 0.36, 1);
  --ease-out: cubic-bezier(0.23, 1, 0.32, 1);
  --ease-icon: cubic-bezier(0.2, 0, 0, 1);
  --duration-micro: 80ms;
  --duration-quick: 150ms;
  --duration-fast: 250ms;
  --duration-slow: 400ms;
  --duration-emphasis: 500ms;
  --motion-y-micro: 4px;
  --motion-y-small: 6px;
  --motion-y-base: 8px;
  --motion-y-medium: 12px;
  --motion-scale-press: 0.96;
  --motion-scale-menu: 0.97;
  --motion-blur-sm: 2px;
  --motion-blur-md: 3px;
}

/* base */
  html {
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    background: var(--color-bg);
    color: var(--color-fg);
  }

  body {
    font-family: var(--font-sans);
    background: var(--color-bg);
    color: var(--color-fg);
    line-height: 1.55;
  }

  h1,
  h2,
  h3 {
    text-wrap: balance;
    font-family: var(--font-display);
    letter-spacing: -0.03em;
    line-height: 1.12;
    font-weight: 500;
  }

  p {
    text-wrap: pretty;
  }

  button:not(:disabled),
  [role="button"]:not(:disabled) {
    cursor: pointer;
  }

  a,
  summary,
  select {
    transition-property: color, border-color, background-color, opacity;
    transition-duration: var(--duration-quick);
    transition-timing-function: var(--ease-smooth);
  }

  ::selection {
    background: var(--color-accent);
    color: var(--color-accent-fg);
  }

.pressable {
  position: relative;
  overflow: hidden;
  isolation: isolate;
  transition-property: transform, translate, scale, background-color, color,
    border-color, opacity;
  transition-duration: var(--duration-quick);
  transition-timing-function: var(--ease-smooth);
  &:hover:not(:disabled) {
    translate: 0 -1px;
  }
  &:active:not(:disabled) {
    scale: var(--motion-scale-press);
    translate: 0 0;
  }
}

.btn-shine::after {
  content: "";
  pointer-events: none;
  position: absolute;
  inset: 0;
  background: linear-gradient(
    110deg,
    transparent 32%,
    color-mix(in oklab, white 26%, transparent) 50%,
    transparent 68%
  );
  transform: translateX(-130%);
  transition: transform var(--duration-emphasis) var(--ease-smooth);
  z-index: -1;
}

.btn-shine:hover::after,
.btn-shine:focus-visible::after {
  transform: translateX(130%);
}

.btn-fill::before {
  content: "";
  pointer-events: none;
  position: absolute;
  inset: 0;
  background: var(--color-surface);
  transform: scaleY(0);
  transform-origin: center bottom;
  transition: transform var(--duration-fast) var(--ease-smooth);
  z-index: -1;
}

.btn-fill:hover::before,
.btn-fill:focus-visible::before {
  transform: scaleY(1);
}

.btn-busy.btn-shine::after {
  animation: shine-loop 1.05s linear infinite;
}

@keyframes shine-loop {
  from {
    transform: translateX(-130%);
  }
  to {
    transform: translateX(130%);
  }
}

.pressable svg {
  transition-property: transform, translate;
  transition-duration: var(--duration-fast);
  transition-timing-function: var(--ease-smooth);
}

.pressable:hover svg {
  translate: 3px 0;
}

.page-enter {
  animation: page-enter var(--duration-slow) var(--ease-smooth) both;
}

@keyframes page-enter {
  from {
    opacity: 0;
    transform: translateY(var(--motion-y-medium));
    filter: blur(var(--motion-blur-md));
  }
  to {
    opacity: 1;
    transform: none;
    filter: none;
  }
}

.route-flash {
  pointer-events: none;
  position: fixed;
  top: 0;
  left: 0;
  z-index: 60;
  height: 1px;
  width: 100%;
  background: var(--color-accent);
  transform-origin: left center;
  animation: route-flash var(--duration-emphasis) var(--ease-smooth) both;
}

@keyframes route-flash {
  0% {
    transform: scaleX(0);
    opacity: 1;
  }
  60% {
    transform: scaleX(1);
    opacity: 1;
  }
  100% {
    transform: scaleX(1);
    opacity: 0;
  }
}

@keyframes mount-in {
  from {
    opacity: 0;
    transform: translateY(var(--motion-y-medium));
    filter: blur(var(--motion-blur-md));
  }
  to {
    opacity: 1;
    transform: none;
    filter: none;
  }
}

.hero-line {
  opacity: 0;
  animation: mount-in 640ms var(--ease-smooth) both;
}

.d-a {
  animation-delay: 50ms;
}
.d-b {
  animation-delay: 120ms;
}
.d-c {
  animation-delay: 220ms;
}
.d-d {
  animation-delay: 320ms;
}
.d-e {
  animation-delay: 420ms;
}
.d-f {
  animation-delay: 520ms;
}

.split-word {
  display: inline-block;
  margin-right: 0.28em;
  opacity: 0;
  transform: translateY(var(--motion-y-medium));
  filter: blur(var(--motion-blur-md));
  animation: mount-in 620ms var(--ease-smooth) both;
}

.reveal {
  opacity: 0;
  transform: translateY(16px);
  filter: blur(var(--motion-blur-sm));
  transition:
    opacity var(--duration-slow) var(--ease-smooth),
    transform var(--duration-slow) var(--ease-smooth),
    filter var(--duration-slow) var(--ease-smooth);
}

.reveal.is-in {
  opacity: 1;
  transform: none;
  filter: none;
}

.reveal-d1 {
  transition-delay: 70ms;
}
.reveal-d2 {
  transition-delay: 140ms;
}
.reveal-d3 {
  transition-delay: 210ms;
}
.reveal-d4 {
  transition-delay: 280ms;
}

.reveal .media-zoom img,
.reveal .media-zoom video,
.reveal > img {
  clip-path: inset(10% 7%);
  scale: 1.07;
  filter: saturate(0.82);
  transition-property: clip-path, scale, filter, transform;
  transition-duration: 720ms;
  transition-timing-function: var(--ease-smooth);
}

.reveal.is-in .media-zoom img,
.reveal.is-in .media-zoom video,
.reveal.is-in > img {
  clip-path: inset(0);
  scale: 1;
  filter: none;
}

.reveal.is-in .media-zoom:hover img,
.reveal.is-in .media-zoom:hover video {
  scale: 1.05;
  clip-path: inset(0);
  filter: none;
}

.grain {
  pointer-events: none;
  position: absolute;
  inset: 0;
  opacity: 0.09;
  mix-blend-mode: overlay;
  background-image: url("../../media/grain.svg");
  background-size: 180px 180px;
}

.marquee-wrap:hover .marquee-track {
  animation-play-state: paused;
}

.marquee-track {
  display: flex;
  gap: 2.5rem;
  width: max-content;
  animation: marquee 42s linear infinite;
}

@keyframes marquee {
  from {
    transform: translateX(0);
  }
  to {
    transform: translateX(-50%);
  }
}

.nav-link {
  position: relative;
  transition-property: color;
  transition-duration: var(--duration-quick);
  transition-timing-function: var(--ease-smooth);
}
.nav-link::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: -0.2rem;
  height: 1px;
  background: var(--color-accent);
  transform: scaleX(0);
  transform-origin: left;
  transition: transform var(--duration-fast) var(--ease-smooth);
}
.nav-link:hover::after,
.nav-link[data-active="true"]::after {
  transform: scaleX(1);
}

.hero-video {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  will-change: transform;
  animation: kenburns 28s var(--ease-smooth) alternate infinite;
}

@keyframes kenburns {
  from {
    transform: scale(1);
  }
  to {
    transform: scale(1.05);
  }
}

.lift-card {
  transition-property: transform, translate, border-color, background-color,
    box-shadow, opacity, filter;
  transition-duration: var(--duration-fast);
  transition-timing-function: var(--ease-smooth);
}

.lift-card:hover {
  translate: 0 -6px;
  border-color: color-mix(in oklab, var(--color-accent) 45%, var(--color-line));
  box-shadow: 0 22px 44px color-mix(in oklab, black 38%, transparent);
}

.reveal.lift-card {
  transition-duration: var(--duration-slow);
}

.tariff-featured {
  box-shadow: inset 0 1px 0 color-mix(in oklab, white 10%, transparent);
}

.tariff-featured:hover {
  box-shadow:
    inset 0 1px 0 color-mix(in oklab, white 12%, transparent),
    0 22px 44px color-mix(in oklab, black 38%, transparent);
}

.media-zoom {
  overflow: hidden;
}

.media-zoom img,
.media-zoom video {
  transition-property: transform, scale, clip-path, filter;
  transition-duration: var(--duration-emphasis);
  transition-timing-function: var(--ease-smooth);
}

.media-zoom:hover img,
.media-zoom:hover video {
  scale: 1.05;
}

.menu-pop {
  transform-origin: top right;
  opacity: 0;
  transform: scale(var(--motion-scale-menu)) translateY(-6px);
  filter: blur(var(--motion-blur-sm));
  pointer-events: none;
  visibility: hidden;
  transition-property: opacity, transform, filter, visibility;
  transition-duration: var(--duration-quick);
  transition-timing-function: var(--ease-smooth);
}

.menu-pop.is-open {
  opacity: 1;
  transform: none;
  filter: none;
  pointer-events: auto;
  visibility: visible;
  transition-duration: var(--duration-fast);
}

.menu-pop li {
  opacity: 0;
  transform: translateY(-6px);
  transition-property: opacity, transform;
  transition-duration: var(--duration-quick);
  transition-timing-function: var(--ease-smooth);
}

.menu-pop.is-open li {
  opacity: 1;
  transform: none;
  transition-duration: var(--duration-fast);
}

.menu-pop.is-open li:nth-child(1) {
  transition-delay: 20ms;
}
.menu-pop.is-open li:nth-child(2) {
  transition-delay: 40ms;
}
.menu-pop.is-open li:nth-child(3) {
  transition-delay: 60ms;
}
.menu-pop.is-open li:nth-child(4) {
  transition-delay: 80ms;
}
.menu-pop.is-open li:nth-child(5) {
  transition-delay: 100ms;
}

.mobile-drawer {
  max-height: 0;
  opacity: 0;
  overflow: hidden;
  pointer-events: none;
  border-color: transparent;
  background: var(--color-bg);
  transition-property: max-height, opacity, border-color;
  transition-duration: var(--duration-slow);
  transition-timing-function: var(--ease-smooth);
}

.mobile-drawer > .mobile-drawer-inner {
  overflow: hidden;
}

.mobile-drawer.is-open {
  max-height: 28rem;
  opacity: 1;
  pointer-events: auto;
  border-color: var(--color-line);
}

.mobile-drawer .stagger-child {
  opacity: 0;
  translate: 0 8px;
  transition-property: opacity, translate;
  transition-duration: var(--duration-quick);
  transition-timing-function: var(--ease-smooth);
}

.mobile-drawer.is-open .stagger-child {
  opacity: 1;
  translate: 0;
  transition-duration: var(--duration-fast);
}

.mobile-drawer.is-open nav .stagger-child:nth-child(1) {
  transition-delay: 40ms;
}
.mobile-drawer.is-open nav .stagger-child:nth-child(2) {
  transition-delay: 80ms;
}
.mobile-drawer.is-open nav .stagger-child:nth-child(3) {
  transition-delay: 120ms;
}
.mobile-drawer.is-open nav .stagger-child:nth-child(4) {
  transition-delay: 160ms;
}
.mobile-drawer.is-open nav .stagger-child:nth-child(5) {
  transition-delay: 200ms;
}
.mobile-drawer.is-open nav .stagger-child:nth-child(6) {
  transition-delay: 240ms;
}
.mobile-drawer.is-open .stagger-langs {
  transition-delay: 220ms;
}
.mobile-drawer.is-open .stagger-cta {
  transition-delay: 280ms;
}

.icon-swap {
  position: relative;
  display: grid;
  place-items: center;
}

.icon-swap > * {
  grid-area: 1 / 1;
  transition-property: opacity, transform, filter;
  transition-duration: 300ms;
  transition-timing-function: var(--ease-icon);
}

.icon-swap .icon-on {
  opacity: 0;
  transform: scale(0.25);
  filter: blur(4px);
}

.icon-swap.is-on .icon-on {
  opacity: 1;
  transform: scale(1);
  filter: blur(0);
}

.icon-swap.is-on .icon-off {
  opacity: 0;
  transform: scale(0.25);
  filter: blur(4px);
}

.faq {
  border-bottom: 1px solid var(--color-line);
}

.faq > summary {
  display: flex;
  width: 100%;
  min-height: 2.75rem;
  cursor: pointer;
  list-style: none;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  padding-block: 1.15rem;
  text-align: left;
  font-family: var(--font-display);
  font-size: 1.25rem;
  line-height: 1.25;
  color: var(--color-fg);
  transition-property: color;
  transition-duration: var(--duration-quick);
  transition-timing-function: var(--ease-smooth);
}

.faq > summary::-webkit-details-marker {
  display: none;
}

.faq > summary:hover {
  color: var(--color-accent);
}

.faq-mark {
  display: inline-flex;
  width: 1.25rem;
  flex-shrink: 0;
  justify-content: center;
  color: var(--color-muted);
  transition-property: transform, color;
  transition-duration: var(--duration-fast);
  transition-timing-function: var(--ease-smooth);
}

.faq[open] > summary .faq-mark {
  transform: rotate(45deg);
  color: var(--color-fg);
}

.faq-body {
  display: grid;
  grid-template-rows: 0fr;
  opacity: 0;
  transition-property: grid-template-rows, opacity;
  transition-duration: var(--duration-fast);
  transition-timing-function: var(--ease-smooth);
}

.faq[open] > .faq-body {
  grid-template-rows: 1fr;
  opacity: 1;
}

.faq:not([open]) > .faq-body {
  display: grid;
}

.faq-content-inner {
  min-height: 0;
  overflow: hidden;
  padding-bottom: 1.15rem;
}

.field {
  min-height: 2.75rem;
  width: 100%;
  border-radius: var(--radius-sm);
  border: 1px solid var(--color-line);
  background: var(--color-surface);
  padding-inline: 0.75rem;
  font-size: 0.875rem;
  color: var(--color-fg);
  caret-color: var(--color-accent);
  outline: none;
  transition-property: border-color, background-color, box-shadow;
  transition-duration: var(--duration-quick);
  transition-timing-function: var(--ease-smooth);
}

.field:hover {
  border-color: color-mix(in oklab, var(--color-fg) 28%, transparent);
}

.field:focus {
  border-color: var(--color-accent);
  background: var(--color-raised);
  box-shadow: 0 0 0 3px color-mix(in oklab, var(--color-accent) 16%, transparent);
}

@keyframes shake {
  0%,
  100% {
    translate: 0;
  }
  20% {
    translate: -5px 0;
  }
  40% {
    translate: 5px 0;
  }
  60% {
    translate: -3px 0;
  }
  80% {
    translate: 3px 0;
  }
}

.shake {
  animation: shake 360ms var(--ease-smooth);
}

.success-mark {
  display: grid;
  place-items: center;
  margin-inline: auto;
  width: 3.5rem;
  height: 3.5rem;
  border-radius: 9999px;
  border: 1px solid var(--color-line);
  background: var(--color-surface);
  animation: mount-in var(--duration-emphasis) var(--ease-smooth) both;
}

.data-table tbody tr {
  transition-property: background-color;
  transition-duration: var(--duration-quick);
  transition-timing-function: var(--ease-smooth);
}

.data-table tbody tr:hover {
  background: color-mix(in oklab, var(--color-raised) 80%, transparent);
}

.scroll-progress {
  pointer-events: none;
  position: absolute;
  left: 0;
  right: 0;
  bottom: -1px;
  height: 1px;
  background: var(--color-accent);
  transform: scaleX(0);
  transform-origin: left center;
}

.site-header {
  transition-property: background-color, border-color, backdrop-filter;
  transition-duration: var(--duration-fast);
  transition-timing-function: var(--ease-smooth);
}

@media (prefers-reduced-motion: reduce) {
  .page-enter,
  .marquee-track,
  .reveal,
  .hero-line,
  .split-word,
  .hero-video,
  .shake,
  .route-flash,
  .success-mark,
  .btn-busy.btn-shine::after {
    animation: none;
    transition: none;
    opacity: 1;
    transform: none;
    filter: none;
  }

  .pressable:hover:not(:disabled),
  .pressable:active:not(:disabled),
  .lift-card:hover,
  .media-zoom:hover img,
  .media-zoom:hover video,
  .pressable:hover svg,
  .reveal .media-zoom img,
  .reveal .media-zoom video,
  .reveal > img,
  .reveal.is-in .media-zoom img,
  .reveal.is-in .media-zoom video,
  .reveal.is-in .media-zoom:hover img,
  .mobile-drawer .stagger-child,
  .menu-pop li,
  .faq-body {
    translate: 0;
    scale: 1;
    transform: none;
    clip-path: none;
    filter: none;
    opacity: 1;
  }

  .btn-shine::after,
  .btn-fill::before,
  .route-flash,
  .scroll-progress {
    display: none;
  }
}


/* ---- layout (static HTML site) ---- */
*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; min-height: 100%; }
img, video { max-width: 100%; display: block; }
a { color: inherit; text-decoration: none; }
button, input, select, textarea { font: inherit; color: inherit; }
.sr-only {
  position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0;
}
.shell {
  width: min(72rem, calc(100% - 2.5rem));
  margin-inline: auto;
}
@media (min-width: 640px) {
  .shell { width: min(72rem, calc(100% - 4rem)); }
}
.section { padding-block: 5rem; }
.section.surface { background: var(--color-surface); }
.kicker {
  margin: 0;
  font-size: 0.75rem;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--color-accent);
}
.display {
  font-family: var(--font-display);
  font-size: var(--text-display);
  margin: 0.6rem 0 0;
}
.title {
  font-family: var(--font-display);
  font-size: var(--text-title);
  margin: 0;
}
.lead {
  margin: 1.1rem 0 0;
  max-width: 40rem;
  color: var(--color-muted);
  font-size: 1.05rem;
  line-height: 1.6;
}
.muted { color: var(--color-muted); }
.subtle { color: var(--color-subtle); }
.grid-2 { display: grid; gap: 2.5rem; }
.grid-3 { display: grid; gap: 1.5rem; }
.grid-4 { display: grid; gap: 1.5rem; }
@media (min-width: 768px) {
  .grid-2.cols, .md-2 { grid-template-columns: 1fr 1fr; }
  .md-3 { grid-template-columns: repeat(3, 1fr); }
}
@media (min-width: 1024px) {
  .lg-2 { grid-template-columns: 1fr 1fr; }
  .lg-3 { grid-template-columns: repeat(3, 1fr); }
  .lg-4 { grid-template-columns: repeat(4, 1fr); }
}
.btn {
  display: inline-flex;
  min-height: 2.75rem;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  padding: 0 1.25rem;
  border: 0;
  border-radius: 0.5rem;
  background: var(--color-accent);
  color: var(--color-accent-fg);
  font-size: 0.875rem;
  font-weight: 500;
  cursor: pointer;
}
.btn.outline {
  background: transparent;
  border: 1px solid var(--color-line);
  color: var(--color-fg);
}
.btn.full { width: 100%; }
.dot-list { list-style: none; padding: 0; margin: 1.25rem 0 0; }
.dot-list li { position: relative; padding-left: 1rem; margin: 0.4rem 0; }
.dot-list li::before {
  content: "";
  position: absolute;
  left: 0; top: 0.55em;
  width: 4px; height: 4px; border-radius: 99px;
  background: var(--color-accent);
}
.card {
  border: 1px solid var(--color-line);
  border-radius: 1rem;
  background: var(--color-surface);
  padding: 1.5rem;
}
.round-media { overflow: hidden; border-radius: 1rem; }
.round-media img, .round-media video {
  width: 100%;
  height: auto;
  aspect-ratio: 16 / 9;
  max-height: 28rem;
  object-fit: cover;
}
.aspect-photo { aspect-ratio: 3/2; }
.hero {
  position: relative;
  min-height: 100dvh;
  overflow: hidden;
  display: flex;
  align-items: flex-end;
}
.hero-shade { position: absolute; inset: 0; background: color-mix(in oklab, var(--color-bg) 55%, transparent); }
.hero .shell { position: relative; padding-bottom: 4rem; padding-top: 8rem; width: min(72rem, calc(100% - 2.5rem)); }
.stats {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1rem;
  max-width: 48rem;
  margin-top: 3.5rem;
  border-top: 1px solid var(--color-line);
  padding-top: 1.5rem;
}
.stats dt { font-family: var(--font-display); font-size: 2rem; margin: 0; }
.stats dd { margin: 0.25rem 0 0; font-size: 0.8rem; color: var(--color-muted); }
.row { display: flex; flex-wrap: wrap; gap: 0.75rem; }
.site-header {
  position: sticky; top: 0; z-index: 40;
  border-bottom: 1px solid var(--color-line);
  background: color-mix(in oklab, var(--color-bg) 88%, transparent);
  backdrop-filter: blur(12px);
}
.site-header.is-hero {
  background: transparent;
  border-color: transparent;
}
.header-inner {
  width: min(72rem, calc(100% - 2.5rem));
  margin-inline: auto;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  padding: 0.75rem 0;
}
.brand { display: flex; align-items: center; gap: 0.6rem; color: var(--color-fg); }
.brand svg { width: 1.75rem; height: 1.75rem; }
.brand-name { font-family: var(--font-display); font-size: 1.15rem; }
.nav-desktop { display: none; align-items: center; gap: 1.5rem; }
.header-tools { display: flex; align-items: center; gap: 0.5rem; }
.lang-btn {
  min-height: 2.75rem;
  padding: 0 0.75rem;
  border: 0;
  background: transparent;
  color: var(--color-muted);
  letter-spacing: 0.16em;
  text-transform: uppercase;
  font-size: 0.75rem;
  cursor: pointer;
}
.menu-toggle {
  width: 2.75rem; height: 2.75rem;
  display: inline-flex; align-items: center; justify-content: center;
  border: 1px solid var(--color-line);
  border-radius: 0.5rem;
  background: transparent;
  cursor: pointer;
}
@media (min-width: 1024px) {
  .nav-desktop { display: flex; }
  .menu-toggle { display: none; }
}
@media (max-width: 639px) {
  .header-cta { display: none; }
  .lang-wrap { display: none; }
}
.menu-pop {
  position: absolute; right: 0; top: 100%;
  margin-top: 0.25rem;
  min-width: 9rem;
  border: 1px solid var(--color-line);
  border-radius: 0.6rem;
  background: var(--color-surface);
  padding: 0.25rem 0;
  list-style: none;
}
.menu-pop button {
  width: 100%;
  min-height: 2.5rem;
  padding: 0 0.75rem;
  border: 0;
  background: transparent;
  text-align: left;
  cursor: pointer;
}
.menu-pop button:hover { background: var(--color-raised); }
.site-footer {
  border-top: 1px solid var(--color-line);
  background: var(--color-surface);
}
.footer-grid {
  width: min(72rem, calc(100% - 2.5rem));
  margin-inline: auto;
  display: grid;
  gap: 2.5rem;
  padding: 4rem 0;
}
@media (min-width: 768px) { .footer-grid { grid-template-columns: 2fr 1fr 1fr; } }
.footer-bottom {
  border-top: 1px solid var(--color-line);
}
.footer-bottom-inner {
  width: min(72rem, calc(100% - 2.5rem));
  margin-inline: auto;
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
  padding: 1.5rem 0;
  font-size: 0.75rem;
  color: var(--color-subtle);
}
@media (min-width: 640px) {
  .footer-bottom-inner { flex-direction: row; justify-content: space-between; }
}
.band {
  background: var(--color-raised);
  border-top: 1px solid var(--color-line);
}
.photo { width: 100%; border-radius: 1rem; object-fit: cover; }
.portrait { width: 100%; aspect-ratio: 3/4; object-fit: cover; border-radius: 1rem; }
.tabs { display: flex; flex-wrap: wrap; gap: 0.5rem; margin-top: 2.5rem; }
.tab {
  min-height: 2.75rem;
  padding: 0 1rem;
  border-radius: 0.5rem;
  border: 1px solid var(--color-line);
  background: transparent;
  color: var(--color-muted);
  cursor: pointer;
}
.tab.is-on {
  border-color: var(--color-accent);
  background: var(--color-accent);
  color: var(--color-accent-fg);
}
.data-table { width: 100%; border-collapse: collapse; font-size: 0.875rem; }
.data-table th, .data-table td { padding: 0.75rem 1rem; text-align: left; }
.data-table thead { background: var(--color-raised); color: var(--color-muted); letter-spacing: 0.12em; text-transform: uppercase; font-size: 0.75rem; }
.data-table tbody tr { border-top: 1px solid var(--color-line); }
.form-card {
  border: 1px solid var(--color-line);
  border-radius: 1rem;
  background: var(--color-surface);
  padding: 1.5rem;
  display: grid;
  gap: 1rem;
}
label.block { display: block; font-size: 0.875rem; }
.field { margin-top: 0.4rem; }
textarea.field { min-height: 7rem; padding-block: 0.7rem; resize: vertical; }
.check { display: flex; gap: 0.6rem; align-items: flex-start; font-size: 0.85rem; color: var(--color-muted); }
.err { color: var(--color-danger); font-size: 0.8rem; }
.badge {
  border-radius: 999px;
  background: var(--color-accent);
  color: var(--color-accent-fg);
  font-size: 0.7rem;
  padding: 0.2rem 0.7rem;
}
.price { font-family: var(--font-display); font-size: 3rem; letter-spacing: -0.03em; margin: 1rem 0 0; }
.marquee-wrap { overflow: hidden; border-block: 1px solid var(--color-line); background: var(--color-surface); padding: 1rem 0; }
#app { min-height: 60vh; }
.page-enter { animation: page-enter var(--duration-slow) var(--ease-smooth) both; }
