@layer components {
  :root[data-theme="theme"] .question-card {
    display: grid;
    gap: var(--space-4);
    min-width: 0;
    border: 0;
  }
  :root[data-theme="theme"] .question-card legend {
    max-width: 54rem;
    padding: 0;
    color: var(--text);
    font-size: clamp(1.65rem, 3vw, 2.35rem);
    font-weight: 780;
    line-height: 1.18;
    text-wrap: balance;
  }
  :root[data-theme="theme"] .question-instruction { font-size: var(--fs-lg); }
  :root[data-theme="theme"] .answer-list,
  :root[data-theme="theme"] .review-answer-list {
    display: grid;
    gap: var(--space-3);
    margin-top: var(--space-2);
  }
  :root[data-theme="theme"] .answer {
    position: relative;
    display: grid;
    grid-template-columns: 3.25rem minmax(0, 1fr) auto;
    align-items: center;
    gap: var(--space-4);
    min-height: 4.5rem;
    padding: var(--space-2) var(--space-4) var(--space-2) var(--space-3);
    border: 1px solid var(--line);
    border-radius: var(--radius-small);
    background: var(--surface);
    cursor: pointer;
  }
  :root[data-theme="theme"] label.answer:hover { border-color: var(--accent); }
  :root[data-theme="theme"] .answer:has(.answer__control:focus-visible) {
    outline: 3px solid color-mix(in srgb, var(--accent) 70%, white);
    outline-offset: 3px;
  }
  :root[data-theme="theme"] .answer__control {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    opacity: 0;
    pointer-events: none;
  }
  :root[data-theme="theme"] .answer__key {
    display: grid;
    place-items: center;
    width: 3.25rem;
    height: 3.25rem;
    border: 1px solid var(--accent);
    border-radius: var(--radius-small);
    color: var(--accent-strong);
    font-size: var(--fs-lg);
    font-weight: 800;
  }
  :root[data-theme="theme"] .answer__text { min-width: 0; font-size: var(--fs-lg); font-weight: 650; }
  :root[data-theme="theme"] .answer__status {
    display: inline-flex;
    align-items: center;
    gap: var(--space-2);
    font-size: var(--fs-sm);
    font-weight: 800;
    white-space: nowrap;
  }
  :root[data-theme="theme"] .answer__status::before {
    display: grid;
    place-items: center;
    width: 1.5rem;
    height: 1.5rem;
    border: 2px solid currentColor;
    border-radius: 50%;
    line-height: 1;
  }
  :root[data-theme="theme"] .answer.is-selected { border-color: var(--accent); background: var(--accent-soft); }
  :root[data-theme="theme"] .answer.is-selected .answer__key { background: var(--accent); color: white; }
  :root[data-theme="theme"] .answer.is-correct,
  :root[data-theme="theme"] .answer.is-missed { border-color: var(--success); background: var(--success-soft); }
  :root[data-theme="theme"] .answer.is-correct .answer__key,
  :root[data-theme="theme"] .answer.is-missed .answer__key { border-color: var(--success); color: var(--success); }
  :root[data-theme="theme"] .answer.is-incorrect { border-color: var(--danger); background: var(--danger-soft); }
  :root[data-theme="theme"] .answer.is-incorrect .answer__key { border-color: var(--danger); color: var(--danger); }
  :root[data-theme="theme"] .answer.is-reviewed { color: var(--text-soft); cursor: default; }
  :root[data-theme="theme"] .answer__status.is-correct,
  :root[data-theme="theme"] .answer__status.is-missed { color: var(--success); }
  :root[data-theme="theme"] .answer__status.is-correct::before,
  :root[data-theme="theme"] .answer__status.is-missed::before { content: "✓"; }
  :root[data-theme="theme"] .answer__status.is-incorrect { color: var(--danger); }
  :root[data-theme="theme"] .answer__status.is-incorrect::before { content: "×"; }
  :root[data-theme="theme"] .review-control { display: none; }

  :root[data-theme="theme"] .feedback {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    gap: var(--space-2) var(--space-4);
    align-items: center;
    margin-top: var(--space-2);
    padding: var(--space-4);
    border: 1px solid var(--line-strong);
    border-radius: var(--radius-small);
    background: var(--surface-soft);
  }
  :root[data-theme="theme"] .feedback::before {
    display: grid;
    grid-row: 1 / span 2;
    place-items: center;
    width: 2.75rem;
    height: 2.75rem;
    border-radius: 50%;
    color: var(--status-icon);
    font-size: var(--fs-xl);
    font-weight: 800;
  }
  :root[data-theme="theme"] .feedback strong { font-size: var(--fs-lg); }
  :root[data-theme="theme"] .feedback.is-correct { border-color: var(--success); background: var(--success-soft); }
  :root[data-theme="theme"] .feedback.is-correct::before { background: var(--success); content: "✓"; }
  :root[data-theme="theme"] .feedback.is-correct strong { color: var(--success); }
  :root[data-theme="theme"] .feedback.is-incorrect { border-color: var(--danger); background: var(--danger-soft); }
  :root[data-theme="theme"] .feedback.is-incorrect::before { background: var(--danger); content: "×"; }
  :root[data-theme="theme"] .feedback.is-incorrect strong { color: var(--danger); }

  :root[data-theme="theme"] .question-map {
    display: grid;
    grid-template-columns: repeat(6, minmax(2.75rem, 1fr));
    gap: var(--space-2);
  }
  :root[data-theme="theme"] .question-map__item {
    position: relative;
    aspect-ratio: 1;
    min-width: 0;
    min-height: 2.75rem;
    padding: 0;
    border: 1px solid var(--line-strong);
    border-radius: var(--radius-small);
    background: var(--surface);
    color: var(--text);
    font-weight: 750;
    cursor: pointer;
  }
  :root[data-theme="theme"] .question-map__item:hover { border-color: var(--accent); }
  :root[data-theme="theme"] .question-map__item.is-current { border-color: #35d4cf; background: var(--accent); color: #fff; }
  :root[data-theme="theme"] .question-map__item.is-answered,
  :root[data-theme="theme"] .question-map__item.is-reviewed { border-color: var(--accent); background: var(--accent-soft); color: var(--accent-strong); }
  :root[data-theme="theme"] .question-map__item.is-answered::after,
  :root[data-theme="theme"] .question-map__item.is-reviewed::after {
    position: absolute;
    right: 0.2rem;
    bottom: 0.2rem;
    width: 0.4rem;
    height: 0.4rem;
    border-radius: 50%;
    background: currentColor;
    content: "";
  }
  :root[data-theme="theme"] .question-map--rail .question-map__item {
    border-color: var(--rail-line);
    background: transparent;
    color: var(--rail-text);
  }
  :root[data-theme="theme"] .question-map--rail { grid-template-columns: repeat(5, minmax(0, 1fr)); }
  :root[data-theme="theme"] .question-map--rail .question-map__item:hover { border-color: #60ded8; }
  :root[data-theme="theme"] .question-map--rail .question-map__item.is-current { border-color: #60ded8; background: var(--accent); }
  :root[data-theme="theme"] .question-map--rail .question-map__item.is-answered,
  :root[data-theme="theme"] .question-map--rail .question-map__item.is-reviewed { border-color: #5e7890; background: var(--rail-soft); color: #bcebe8; }

  :root[data-theme="theme"] .result-page { width: min(900px, 100%); }
  :root[data-theme="theme"] .result-summary {
    display: grid;
    gap: var(--space-4);
    padding: var(--space-6);
    border: 1px solid var(--line);
    border-radius: var(--radius);
    background: var(--surface);
  }
  :root[data-theme="theme"] .result-outcome { color: var(--accent-strong); font-weight: 800; }
  :root[data-theme="theme"] .result-outcome.is-success { color: var(--success); }
  :root[data-theme="theme"] .result-outcome.is-danger { color: var(--danger); }
  :root[data-theme="theme"] .result-score { display: flex; align-items: baseline; gap: var(--space-3); }
  :root[data-theme="theme"] .result-score strong { color: var(--text); font-size: var(--fs-2xl); }
  :root[data-theme="theme"] .result-facts { grid-template-columns: repeat(2, minmax(0, 12rem)); }
  :root[data-theme="theme"] .result-actions { display: flex; flex-wrap: wrap; gap: var(--space-2); }
  :root[data-theme="theme"] .result-review { display: grid; gap: var(--space-3); padding-top: var(--space-7); }
  :root[data-theme="theme"] .review-list { display: grid; margin-top: var(--space-3); border-top: 1px solid var(--line); }
  :root[data-theme="theme"] .review-row { border-bottom: 1px solid var(--line); }
  :root[data-theme="theme"] .review-row summary {
    display: grid;
    grid-template-columns: 7rem minmax(0, 1fr) auto;
    gap: var(--space-3);
    align-items: center;
    min-height: 4.5rem;
    padding: var(--space-4) 0;
    cursor: pointer;
    list-style: none;
  }
  :root[data-theme="theme"] .review-row summary::-webkit-details-marker { display: none; }
  :root[data-theme="theme"] .review-row summary > span:first-child { color: var(--text-soft); font-size: var(--fs-sm); }
  :root[data-theme="theme"] .review-row__state { color: var(--text-soft); font-size: var(--fs-sm); font-weight: 750; }
  :root[data-theme="theme"] .review-row__state.is-correct { color: var(--success); }
  :root[data-theme="theme"] .review-row__state.is-incorrect { color: var(--danger); }
  :root[data-theme="theme"] .review-row__body { display: grid; gap: var(--space-4); padding: 0 0 var(--space-5) 7rem; }
  :root[data-theme="theme"] .review-explanation { padding: var(--space-4); border-left: 3px solid var(--accent); background: var(--surface-soft); }

  @media (max-width: 759px) {
    :root[data-theme="theme"] .question-card legend { font-size: clamp(1.45rem, 7vw, 2rem); }
    :root[data-theme="theme"] .question-instruction { font-size: var(--fs-md); }
    :root[data-theme="theme"] .answer {
      grid-template-columns: 2.75rem minmax(0, 1fr);
      gap: var(--space-3);
      min-height: 4rem;
      padding: var(--space-2) var(--space-3);
    }
    :root[data-theme="theme"] .answer__key { width: 2.75rem; height: 2.75rem; }
    :root[data-theme="theme"] .answer__text { font-size: var(--fs-md); }
    :root[data-theme="theme"] .answer__status { grid-column: 2; white-space: normal; }
    :root[data-theme="theme"] .feedback { grid-template-columns: 2.25rem minmax(0, 1fr); gap: var(--space-2) var(--space-3); }
    :root[data-theme="theme"] .feedback::before { width: 2.25rem; height: 2.25rem; font-size: var(--fs-lg); }
    :root[data-theme="theme"] .question-map { grid-template-columns: repeat(6, minmax(2.5rem, 1fr)); }
    :root[data-theme="theme"] .result-summary { padding: var(--space-5); }
    :root[data-theme="theme"] .review-row summary { grid-template-columns: 1fr auto; }
    :root[data-theme="theme"] .review-row summary > span:first-child { grid-column: 1 / -1; }
    :root[data-theme="theme"] .review-row__body { padding-left: 0; }
  }

  @media (max-width: 420px) {
    :root[data-theme="theme"] .question-map { grid-template-columns: repeat(4, minmax(2.5rem, 1fr)); }
    :root[data-theme="theme"] .result-score { align-items: start; flex-direction: column; gap: 0; }
  }
}
