button,
input,
select {
  touch-action: manipulation;
}

.form-message.success,
.notice.success,
.state-card.success {
  color: var(--ok);
  border-color: color-mix(in srgb, var(--ok) 55%, transparent);
  background: color-mix(in srgb, var(--ok) 8%, transparent);
}

.form-message.error,
.notice.error,
.state-card.error {
  color: var(--danger);
  border-color: color-mix(in srgb, var(--danger) 55%, transparent);
  background: color-mix(in srgb, var(--danger) 8%, transparent);
}

.form-message.info,
.notice.info,
.state-card.info {
  color: var(--muted);
}

.dialog-close {
  display: grid;
  place-items: center;
  width: 44px;
  height: 44px;
  border-radius: 50%;
  cursor: pointer;
  z-index: 2;
}

.dialog-close:hover,
.dialog-close:focus-visible {
  color: var(--acid);
  background: var(--panel2);
  outline: 2px solid var(--acid);
  outline-offset: 2px;
}

@media (max-width: 800px) {
  body {
    min-height: 100dvh;
    overflow-x: hidden;
  }

  .topbar {
    height: 64px;
    padding-left: max(16px, env(safe-area-inset-left));
    padding-right: max(16px, env(safe-area-inset-right));
  }

  .topbar nav {
    bottom: max(10px, env(safe-area-inset-bottom));
  }

  main {
    padding-left: max(16px, env(safe-area-inset-left));
    padding-right: max(16px, env(safe-area-inset-right));
    padding-bottom: calc(104px + env(safe-area-inset-bottom));
  }

  input,
  select,
  textarea {
    font-size: 16px !important;
  }

  button,
  .primary-btn,
  .secondary-btn,
  .nav-btn,
  .account-btn {
    min-height: 44px;
  }

  .hero-copy h1 {
    font-size: clamp(46px, 14vw, 68px);
  }

  .hero-grid {
    padding-top: 42px;
  }

  .artist-search {
    max-width: none;
  }

  .artist-search .suggestions {
    max-height: min(50dvh, 360px);
  }

  .setup-footer .primary-btn {
    width: 100%;
  }

  .attempts,
  .attempts > span:last-child,
  .button-row,
  .filter-row {
    flex-wrap: wrap;
  }

  .attempts > span:last-child {
    width: 100%;
    justify-content: space-between;
    margin-top: 8px;
  }

  dialog {
    width: calc(100% - 20px);
    max-height: calc(100dvh - 20px);
    overflow: auto;
  }

  .dialog-card {
    padding: 24px 20px calc(24px + env(safe-area-inset-bottom));
  }
}

@media (max-width: 430px) {
  .account-btn {
    padding-inline: 11px;
  }

  .score-pill {
    padding-inline: 10px;
  }

  .round-progress > div:first-child {
    gap: 8px;
  }

  .segmented {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
  }

  .segmented button {
    padding-inline: 8px;
  }

  .leader-row {
    grid-template-columns: 42px minmax(0, 1fr) auto;
    padding-inline: 12px;
  }
}
