/* Base styles shared by every page. */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body {
  margin: 0;
  min-height: 100vh;
  background: var(--bg);
  color: var(--text);
  font: 16px/1.5 var(--font-body);
}
a { color: var(--format-sound); }
a:focus-visible, button:focus-visible, input:focus-visible, select:focus-visible {
  outline: 3px solid var(--rainbow-3);
  outline-offset: 2px;
}
h1, h2 { font-family: var(--font-display); line-height: 1.15; margin: 0 0 var(--space-3); }

.rainbow-rule {
  height: 4px;
  background: linear-gradient(90deg, var(--rainbow-1), var(--rainbow-2), var(--rainbow-3), var(--rainbow-4), var(--rainbow-5), var(--rainbow-6));
}

.page { max-width: 640px; margin: 0 auto; padding: var(--space-5) var(--space-3); }
.card {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius-card);
  padding: var(--space-4);
  margin-bottom: var(--space-4);
}
.muted { color: var(--text-muted); }
.secondary { color: var(--text-secondary); }

.btn {
  display: inline-flex; align-items: center; justify-content: center;
  min-height: var(--tap-min);
  padding: 0 var(--space-4);
  border: 0;
  border-radius: var(--radius-pill);
  background: var(--format-gk);
  color: var(--text);
  font: 600 16px var(--font-body);
  cursor: pointer;
}
.btn--quiet { background: var(--surface-raised); }
.btn--danger { background: #B3263A; }
.btn:disabled { opacity: .5; cursor: not-allowed; }

.field { display: block; margin-bottom: var(--space-3); }
.field__label { display: block; font-weight: 600; margin-bottom: var(--space-1); }
.field__hint { display: block; color: var(--text-muted); font-size: 14px; margin-top: var(--space-1); }
.field__error { display: block; color: var(--danger); font-size: 14px; margin-top: var(--space-1); }
.field input, .field select {
  width: 100%;
  min-height: var(--tap-min);
  padding: 0 var(--space-3);
  border: 1px solid var(--border);
  border-radius: 12px;
  background: var(--surface-raised);
  color: var(--text);
  font: 16px var(--font-body);
}

.notice { border-radius: 12px; padding: var(--space-3); margin-bottom: var(--space-4); }
.notice--success { background: rgba(54, 217, 138, .15); border: 1px solid var(--success); }
.notice--error { background: rgba(255, 107, 122, .15); border: 1px solid var(--danger); }
.notice--info { background: rgba(63, 167, 255, .15); border: 1px solid var(--format-sound); }

.key {
  font: 600 22px/1.4 ui-monospace, SFMono-Regular, Menlo, monospace;
  letter-spacing: .05em;
  word-break: break-all;
  background: var(--surface-raised);
  border-radius: 12px;
  padding: var(--space-3);
}

dl.facts { display: grid; grid-template-columns: max-content 1fr; gap: var(--space-2) var(--space-4); margin: 0; }
dl.facts dt { color: var(--text-muted); }
dl.facts dd { margin: 0; }

/* Holding page */
.holding { min-height: 100vh; display: grid; place-items: center; text-align: center; padding: var(--space-4) var(--space-3); }
.holding__logo { width: min(420px, 85vw); height: auto; }
.holding__title { font: 700 clamp(28px, 6vw, 40px)/1.15 var(--font-display); margin: var(--space-4) 0 var(--space-2); }
.holding__strap { font: 600 20px var(--font-display); color: var(--text-secondary); margin: 0 0 var(--space-3); }
.progress-rainbow { display: flex; gap: 6px; justify-content: center; margin: var(--space-4) auto; max-width: 320px; }
.progress-rainbow span { flex: 1; height: 10px; border-radius: var(--radius-pill); background: var(--surface-raised); }
.progress-rainbow span.on:nth-child(6n+1) { background: var(--rainbow-1); }
.progress-rainbow span.on:nth-child(6n+2) { background: var(--rainbow-2); }
.progress-rainbow span.on:nth-child(6n+3) { background: var(--rainbow-3); }
.progress-rainbow span.on:nth-child(6n+4) { background: var(--rainbow-4); }
.progress-rainbow span.on:nth-child(6n+5) { background: var(--rainbow-5); }
.progress-rainbow span.on:nth-child(6n+6) { background: var(--rainbow-6); }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation: none !important; transition: none !important; }
}
