:root {
  --bg-top: #f4fff7;
  --bg-bottom: #d8eef7;
  --ink: #0f2b34;
  --sub: #375661;
  --accent: #0e8f76;
  --accent-dark: #07675a;
  --line: #b8d4dd;
  --card: #ffffff;
  --warm: #eb6b2d;
}

* {
  box-sizing: border-box;
}

body {
  margin: 0;
  min-height: 100vh;
  font-family: "Hiragino Kaku Gothic ProN", "Yu Gothic UI", "Yu Gothic",
    sans-serif;
  color: var(--ink);
  background:
    radial-gradient(circle at 90% 8%, rgba(235, 107, 45, 0.2), transparent 35%),
    radial-gradient(circle at 12% 88%, rgba(14, 143, 118, 0.18), transparent 30%),
    linear-gradient(150deg, var(--bg-top), var(--bg-bottom));
  display: grid;
  place-items: center;
  padding: 20px;
}

.container {
  width: min(860px, 100%);
  background: color-mix(in srgb, white 88%, #d8eef7 12%);
  border: 1px solid color-mix(in srgb, var(--line) 60%, white 40%);
  border-radius: 24px;
  box-shadow:
    0 12px 30px rgba(15, 43, 52, 0.1),
    0 1px 0 rgba(255, 255, 255, 0.85) inset;
  padding: 24px;
}

.hero h1 {
  margin: 6px 0 6px;
  font-size: clamp(1.45rem, 2.8vw, 2rem);
  line-height: 1.3;
}

.eyebrow {
  margin: 0;
  font-weight: 700;
  color: var(--accent-dark);
  letter-spacing: 0.04em;
  font-size: 0.82rem;
}

.help {
  margin: 0;
  color: var(--sub);
  font-size: 0.95rem;
}

.status {
  margin-top: 14px;
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.chip {
  border: 1px solid var(--line);
  border-radius: 999px;
  padding: 6px 12px;
  background: #fff;
  font-size: 0.88rem;
  color: var(--sub);
}

.chip.good {
  border-color: #7ec8ad;
  color: #12694e;
}

.chip.warn {
  border-color: #f3c197;
  color: #8a4617;
}

.card {
  margin-top: 16px;
  padding: 20px;
  border-radius: 18px;
  background: var(--card);
  border: 1px solid color-mix(in srgb, var(--line) 70%, white 30%);
  animation: fadeSlide 240ms ease;
}

.q-number {
  margin: 0 0 8px;
  font-weight: 700;
  color: var(--accent-dark);
}

.question {
  margin: 0;
  line-height: 1.7;
  font-size: clamp(1.05rem, 2.35vw, 1.25rem);
}

.divider {
  margin: 16px 0 10px;
  height: 1px;
  background: linear-gradient(90deg, transparent, var(--line), transparent);
}

.answer-label {
  margin: 0;
  font-size: 0.85rem;
  color: var(--sub);
}

.answer {
  margin: 8px 0 0;
  font-size: clamp(1rem, 2.2vw, 1.2rem);
  font-weight: 700;
  color: var(--warm);
}

.answer.hidden {
  opacity: 0;
  max-height: 0;
  overflow: hidden;
  margin-top: 0;
}

.controls {
  margin-top: 14px;
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
}

.controls.secondary {
  margin-top: 10px;
}

.btn {
  border: 1px solid transparent;
  padding: 10px 15px;
  border-radius: 12px;
  font-size: 0.95rem;
  font-weight: 700;
  cursor: pointer;
  transition: transform 140ms ease, background-color 140ms ease;
}

.btn:active {
  transform: translateY(1px);
}

.btn:disabled {
  opacity: 0.5;
  cursor: not-allowed;
  transform: none;
}

.btn.primary {
  background: var(--accent);
  color: #fff;
}

.btn.primary:hover {
  background: var(--accent-dark);
}

.btn.ghost {
  background: #fff;
  color: var(--accent-dark);
  border-color: var(--line);
}

.btn.ghost:hover {
  background: #f6fbfd;
}

.btn.soft {
  background: #fdf6f1;
  color: #7a3d1c;
  border-color: #f5c8ad;
}

.btn.soft:hover {
  background: #fdeee5;
}

.btn.good {
  background: #eaf8f2;
  color: #12694e;
  border-color: #8fd3bb;
}

.btn.good:hover {
  background: #ddf2e8;
}

.btn.warn {
  background: #fff2e8;
  color: #8a4617;
  border-color: #f5c8ad;
}

.btn.warn:hover {
  background: #ffe8d8;
}

.btn.active {
  outline: 2px solid color-mix(in srgb, var(--accent) 55%, white 45%);
  outline-offset: 0;
}

.shortcut {
  margin-top: 14px;
  color: var(--sub);
  font-size: 0.85rem;
}

kbd {
  border: 1px solid var(--line);
  border-radius: 6px;
  padding: 1px 5px;
  background: #fff;
}

@media (max-width: 700px) {
  .container {
    padding: 16px;
    border-radius: 18px;
  }

  .btn {
    flex: 1 1 120px;
  }
}

@keyframes fadeSlide {
  from {
    opacity: 0;
    transform: translateY(6px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}
