:root {
  --paper: #FBF8F5;      /* tło logo */
  --ink: #48362C;        /* brąz napisu */
  --sage: #C9D1BC;
  --sage-light: #DDE2D3;
  --sage-deep: #B4BFA6;
  --sand: #E4D7C5;
  --sand-light: #EFE7DB;

  --bw: clamp(40px, 13vw, 68px);             /* szerokość cegły */
  --bh: calc(var(--bw) * 0.42);              /* wysokość cegły */
  --gap: calc(var(--bw) * 0.07);             /* fuga */
  --half: calc((var(--bw) - var(--gap)) / 2);
}

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

html {
  background: var(--paper);
}

@media (prefers-reduced-motion: no-preference) {
  html {
    scroll-behavior: smooth;
  }
}

body {
  margin: 0;
  background: var(--paper);
  color: var(--ink);
  font-family: "Montserrat", "Segoe UI", "Helvetica Neue", Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
}

.visually-hidden {
  position: absolute;
  width: 1px;
  height: 1px;
  margin: -1px;
  padding: 0;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
  border: 0;
}

/* ---------- Hero: logo na całym viewporcie ---------- */

.hero {
  position: relative;
  height: 100vh;
  height: 100svh;
  overflow: hidden;
}

.hero__img {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  /* 2000x1091 = 1.833 : wypełnia ekran poziomy, a na pionowym
     przycina puste boki, żeby logo było duże i czytelne */
  width: min(185vw, 183.3vh);
  width: min(185vw, 183.3svh);
  max-width: none;
  height: auto;
  display: block;
  /* miękkie krawędzie — zdjęcie zlewa się z tłem strony */
  -webkit-mask-image:
    linear-gradient(to right, transparent, #000 6%, #000 94%, transparent),
    linear-gradient(to bottom, transparent, #000 6%, #000 94%, transparent);
  -webkit-mask-composite: source-in;
  mask-image:
    linear-gradient(to right, transparent, #000 6%, #000 94%, transparent),
    linear-gradient(to bottom, transparent, #000 6%, #000 94%, transparent);
  mask-composite: intersect;
}

.scroll-hint {
  position: absolute;
  left: 50%;
  bottom: max(16px, 3vh);
  width: 44px;
  height: 44px;
  margin-left: -22px;
  display: grid;
  place-items: center;
  color: var(--ink);
  opacity: 0.5;
  border-radius: 50%;
  transition: opacity 0.2s ease;
  animation: nudge 2.4s ease-in-out infinite;
}

.scroll-hint:hover,
.scroll-hint:focus-visible {
  opacity: 1;
}

.scroll-hint:focus-visible {
  outline: 1.5px solid var(--ink);
  outline-offset: 2px;
}

@keyframes nudge {
  0%, 100% { transform: translateY(0); }
  50%      { transform: translateY(6px); }
}

/* ---------- Work in progress ---------- */

.wip {
  min-height: 100vh;
  min-height: 100svh;
  padding: clamp(48px, 10vh, 120px) 16px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: clamp(28px, 5vh, 44px);
}

.site {
  display: flex;
  flex-direction: column;
  align-items: center;
}

.wall {
  display: flex;
  flex-direction: column-reverse;   /* pierwszy rząd w DOM = dolny */
  gap: var(--gap);
  transition: opacity 0.7s ease;
}

.wall.is-clearing {
  opacity: 0;
}

.wall__row {
  display: flex;
  gap: var(--gap);
}

.brick {
  flex: 0 0 var(--bw);
  height: var(--bh);
  border: 1.5px solid rgb(72 54 44 / 0.55);
  border-radius: calc(var(--bh) * 0.16);
  background: var(--sage);
  box-shadow: inset 0 -3px 0 rgb(72 54 44 / 0.07);
  transform-origin: 50% 100%;
  animation: brick-drop 560ms var(--d, 0ms) both;
}

.wall.is-waiting .brick {
  animation-play-state: paused;
}

.brick--half       { flex-basis: var(--half); }
.brick--sage-light { background: var(--sage-light); }
.brick--sage-deep  { background: var(--sage-deep); }
.brick--sand       { background: var(--sand); }
.brick--sand-light { background: var(--sand-light); }

@keyframes brick-drop {
  0% {
    opacity: 0;
    transform: translateY(calc(var(--bh) * -5));
    animation-timing-function: cubic-bezier(0.55, 0, 1, 0.45);
  }
  20% {
    opacity: 1;
  }
  62% {
    transform: translateY(0) scale(1.05, 0.84);
    animation-timing-function: ease-out;
  }
  80% {
    transform: translateY(calc(var(--bh) * -0.12)) scale(0.98, 1.04);
    animation-timing-function: ease-in-out;
  }
  100% {
    opacity: 1;
    transform: none;
  }
}

.ground {
  width: calc(var(--bw) * 6.4);
  height: 1.5px;
  margin-top: var(--gap);
  border-radius: 1px;
  background: linear-gradient(to right, transparent, var(--ink) 12%, var(--ink) 88%, transparent);
  opacity: 0.7;
}

.wip__title {
  margin: 0;
  font-size: clamp(1rem, 3.4vw, 1.6rem);
  font-weight: 400;
  letter-spacing: 0.32em;
  text-transform: uppercase;
  text-align: center;
  /* kompensacja letter-spacing za ostatnią literą */
  padding-left: 0.32em;
}

.dots span {
  animation: dot 1.5s infinite;
}

.dots span:nth-child(2) { animation-delay: 0.25s; }
.dots span:nth-child(3) { animation-delay: 0.5s; }

@keyframes dot {
  0%, 20%   { opacity: 0.15; }
  40%, 100% { opacity: 1; }
}

@media (prefers-reduced-motion: reduce) {
  .brick,
  .scroll-hint,
  .dots span {
    animation: none;
  }
}
