/* Kodza — Empty State
   What a list shows when there is nothing in it: a small drawing in CSS, a title, a line in a
   human voice and what to do next. The drawing answers when you come near: the blank cards
   fan out, or the lens sweeps the empty results (--search). No script.
   Everything is tuned with the --kz-empty-* variables. */
.kodza-empty {
  --kz-empty-bg: transparent;
  --kz-empty-fg: #0a0a0a;
  --kz-empty-muted: rgba(10, 10, 10, 0.62);
  --kz-empty-line: rgba(10, 10, 10, 0.18);
  --kz-empty-soft: rgba(10, 10, 10, 0.06);
  --kz-empty-card: #ffffff;
  --kz-empty-ink: #0a0a0a;
  --kz-empty-on-ink: #ffffff;
  --kz-empty-ease: cubic-bezier(0.22, 1, 0.36, 1);

  display: grid;
  box-sizing: border-box;
  justify-items: center;
  padding: 48px 32px 44px;
  border: 1px dashed var(--kz-empty-line);
  border-radius: 16px;
  background: var(--kz-empty-bg);
  color: var(--kz-empty-fg);
  text-align: center;
}

/* The drawing: three blank cards, the front one with a plus */
.kodza-empty__art {
  position: relative;
  display: grid;
  place-items: center;
  width: 140px;
  height: 104px;
  margin-bottom: 22px;
}

.kodza-empty__card {
  position: absolute;
  display: grid;
  place-items: center;
  width: 60px;
  height: 76px;
  border: 1.5px dashed var(--kz-empty-line);
  border-radius: 10px;
  background: var(--kz-empty-card);
  transition: transform 0.6s var(--kz-empty-ease), border-color 0.3s ease;
}

.kodza-empty__card:nth-child(1) {
  transform: translateX(-14px) rotate(-9deg);
}

.kodza-empty__card:nth-child(2) {
  transform: translateX(14px) rotate(9deg);
}

.kodza-empty__card:nth-child(3) {
  border-style: solid;
  border-color: var(--kz-empty-fg);
  box-shadow: 0 10px 24px -14px rgba(10, 10, 10, 0.4);
}

.kodza-empty__card svg {
  width: 18px;
  height: 18px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.6;
  stroke-linecap: round;
  transition: transform 0.6s var(--kz-empty-ease);
}

.kodza-empty:hover .kodza-empty__card:nth-child(1),
.kodza-empty:focus-within .kodza-empty__card:nth-child(1) {
  transform: translateX(-38px) translateY(4px) rotate(-16deg);
}

.kodza-empty:hover .kodza-empty__card:nth-child(2),
.kodza-empty:focus-within .kodza-empty__card:nth-child(2) {
  transform: translateX(38px) translateY(4px) rotate(16deg);
}

.kodza-empty:hover .kodza-empty__card:nth-child(3),
.kodza-empty:focus-within .kodza-empty__card:nth-child(3) {
  transform: translateY(-6px);
}

.kodza-empty:hover .kodza-empty__card svg,
.kodza-empty:focus-within .kodza-empty__card svg {
  transform: rotate(90deg);
}

/* Search: lines of results that are not there, and a lens */
.kodza-empty__lines {
  display: grid;
  gap: 10px;
  width: 116px;
}

.kodza-empty__lines i {
  height: 10px;
  border-radius: 999px;
  background: var(--kz-empty-soft);
}

.kodza-empty__lines i:nth-child(2) {
  width: 78%;
}

.kodza-empty__lines i:nth-child(3) {
  width: 52%;
}

.kodza-empty__lens {
  position: absolute;
  top: 18px;
  left: 66px;
  width: 52px;
  height: 52px;
  fill: var(--kz-empty-card);
  fill-opacity: 0.55;
  stroke: var(--kz-empty-fg);
  stroke-width: 1.8;
  stroke-linecap: round;
  transition: transform 0.6s var(--kz-empty-ease);
}

.kodza-empty--search:hover .kodza-empty__lens,
.kodza-empty--search:focus-within .kodza-empty__lens {
  animation: kodza-empty-scan 1.4s cubic-bezier(0.65, 0, 0.35, 1);
}

@keyframes kodza-empty-scan {
  35% {
    transform: translate(-58px, -6px) rotate(-8deg);
  }
  70% {
    transform: translate(-30px, 18px) rotate(4deg);
  }
}

.kodza-empty__title {
  margin: 0;
  font-size: 20px;
  font-weight: 600;
  line-height: 1.25;
  letter-spacing: -0.025em;
  text-wrap: balance;
}

.kodza-empty__text {
  max-width: 34ch;
  margin: 8px 0 0;
  color: var(--kz-empty-muted);
  font-size: 15px;
  line-height: 1.55;
  text-wrap: pretty;
}

.kodza-empty__actions {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 8px;
  margin-top: 22px;
}

.kodza-empty__button {
  display: inline-flex;
  align-items: center;
  height: 40px;
  padding: 0 18px;
  border: 0;
  border-radius: 999px;
  background: var(--kz-empty-ink);
  color: var(--kz-empty-on-ink);
  font: inherit;
  font-size: 14px;
  font-weight: 500;
  text-decoration: none;
  cursor: pointer;
  transition: transform 0.2s ease, background-color 0.2s ease;
}

.kodza-empty__button--quiet {
  background: var(--kz-empty-soft);
  color: var(--kz-empty-fg);
}

.kodza-empty__button:active,
.kodza-empty__chip:active {
  transform: scale(0.97);
}

.kodza-empty__chip {
  height: 32px;
  padding: 0 12px;
  border: 0;
  border-radius: 999px;
  background: var(--kz-empty-soft);
  color: var(--kz-empty-fg);
  font-family: "Geist Mono", ui-monospace, "SF Mono", Menlo, monospace;
  font-size: 13px;
  cursor: pointer;
  transition: background-color 0.2s ease, color 0.2s ease, transform 0.2s ease;
}

.kodza-empty__chip:hover {
  background: var(--kz-empty-ink);
  color: var(--kz-empty-on-ink);
}

.kodza-empty__button:focus-visible,
.kodza-empty__chip:focus-visible {
  outline: 2px solid var(--kz-empty-fg);
  outline-offset: 2px;
}

@media (prefers-reduced-motion: reduce) {
  .kodza-empty__card,
  .kodza-empty__card svg,
  .kodza-empty__lens,
  .kodza-empty__button,
  .kodza-empty__chip {
    transition-duration: 0.01ms !important;
  }

  .kodza-empty--search:hover .kodza-empty__lens,
  .kodza-empty--search:focus-within .kodza-empty__lens {
    animation: none;
  }
}

/* Theming example — on a dark background:
.dark-section .kodza-empty {
  --kz-empty-fg: #f2f2f0;
  --kz-empty-muted: rgba(242, 242, 240, 0.62);
  --kz-empty-line: rgba(255, 255, 255, 0.2);
  --kz-empty-soft: rgba(255, 255, 255, 0.08);
  --kz-empty-card: #161616;
  --kz-empty-ink: #f2f2f0;
  --kz-empty-on-ink: #0a0a0a;
}
*/
