*,
*::before,
*::after {
  box-sizing: border-box;
}

html {
  font-size: 100%;
  -webkit-text-size-adjust: 100%;
  color-scheme: light dark;
  height: 100%;
  overflow: hidden;
  overscroll-behavior: none;
}

body {
  margin: 0;
  min-height: 100%;
  height: 100%;
  overflow: hidden;
  overscroll-behavior: none;
  font-family: var(--font-body);
  font-weight: 500;
  color: var(--text-neutral-primary);
  background-color: var(--fill-bg-lvl-2);
  line-height: var(--line-height-text-secondary);
}

img,
svg {
  display: block;
  max-width: 100%;
}

a {
  color: inherit;
  text-decoration: none;
}

button {
  font: inherit;
  color: inherit;
  cursor: pointer;
  border: none;
  background: none;
  padding: 0;
}

p {
  margin: 0;
}

/* Smart line wrapping — progressive enhancement */
h1,
h2,
h3,
.hero__headline,
.about__headline,
.contacts__headline,
.case-detail__title,
.case-detail__section-title {
  text-wrap: balance;
}

.about__story,
.hero__column,
.case-detail__text,
.case-detail__caption,
.case-detail__description,
.case-detail__intro {
  text-wrap: pretty;
  hyphens: auto;
  -webkit-hyphens: auto;
}

/* Desktop-only line break (hero headline) */
.br-desktop {
  display: none;
}

@media (min-width: 64rem) {
  .br-desktop {
    display: block;
  }
}

.page {
  display: flex;
  flex-direction: column;
  min-height: 100%;
  height: 100%;
  position: relative;
  overflow: hidden;
  overscroll-behavior: none;
}

@media (min-width: 64rem) {
  .page--home {
    overflow-x: clip;
  }
}

.page__filters {
  position: absolute;
  width: 0;
  height: 0;
  overflow: hidden;
}

.page__background {
  position: fixed;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  background-color: var(--fill-bg-lvl-2);
  isolation: isolate;
  contain: paint;
  transform: translateZ(0);
}

.page__background-noise {
  position: absolute;
  inset: 0;
  background-color: var(--fill-bg-lvl-2);
  opacity: var(--page-noise-opacity);
  mix-blend-mode: multiply;
  filter: url(#page-noise);
  transform: translateZ(0);
}

:root[data-theme="dark"] .page__background-noise {
  mix-blend-mode: soft-light;
}

:root[data-noise-filter="static"] .page__background-noise {
  filter: url(#page-noise-static);
}

:root[data-noise-filter="static"] .page__background-noise,
:root[data-noise-filter="static"][data-theme="dark"] .page__background-noise {
  mix-blend-mode: normal;
}

:root[data-diag~="no-noise"] .page__background-noise {
  display: none;
}

:root[data-diag~="no-blend"] .page__background-noise,
:root[data-diag~="no-blend"][data-theme="dark"] .page__background-noise {
  mix-blend-mode: normal;
}

:root[data-diag~="static-noise"] .page__background-noise {
  filter: url(#page-noise-static);
}

:root[data-diag~="no-will-change"] .map-canvas,
:root[data-diag~="no-will-change"][data-noise-filter="animated"] .map-canvas {
  will-change: auto;
}

:root[data-diag~="no-hover-transition"] {
  --btn-transition-duration: 0ms;
}

.page__background-grid {
  position: absolute;
  inset: 0;
  background-image:
    linear-gradient(var(--page-grid-line) 0.0625rem, transparent 0.0625rem),
    linear-gradient(90deg, var(--page-grid-line) 0.0625rem, transparent 0.0625rem);
  background-size: var(--page-grid-size) var(--page-grid-size);
}

@media (prefers-reduced-motion: reduce) {
  .page__background-noise {
    filter: url(#page-noise-static);
    mix-blend-mode: normal;
  }
}

.page > .map-viewport {
  position: relative;
  z-index: 1;
  flex: 1;
  min-height: 0;
  padding: 0 var(--level-page-padding) var(--level-page-padding);
}

.sr-only {
  position: absolute;
  width: 0.0625rem;
  height: 0.0625rem;
  padding: 0;
  margin: -0.0625rem;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}
