@page {
  size: A4 portrait;
  margin: 8mm 10mm;
}

@page problem-sheet {
  size: A4 portrait;
  margin: 15mm;
}

html,
body {
  background: #fff !important;
}

body {
  color: #000;
  font-family: "Yu Gothic", "YuGothic", Meiryo, sans-serif;
  font-size: 10pt;
  line-height: 1.35;
}

body.print-questions {
  page: problem-sheet;
}


.no-print,
.status-message {
  display: none !important;
}

.print-only {
  display: block !important;
}

.page-shell {
  width: 100%;
  padding: 0;
  zoom: var(--print-scale, 1);
  transform-origin: top left;
}

body.print-questions .page-shell {
  width: 100%;
  max-width: 100%;
  min-width: 0;
  margin: 0 auto;
  height: calc(265mm * var(--print-scale-inverse, 1));
  box-sizing: border-box;
}

body.print-questions .quiz-section {
  display: flex;
  flex-direction: column;
  height: 100%;
  min-height: 0;
}

.quiz-section {
  padding: 0;
  border: 0;
  border-radius: 0;
  box-shadow: none;
}

.print-heading {
  margin-bottom: 4mm;
  padding-bottom: 0;
  border-bottom: 0;
}

.print-heading h1 {
  margin: 0;
  font-size: 15pt;
  line-height: 1.2;
}

.print-problem-title,
.print-answer-title {
  display: none !important;
}

body.print-questions .print-problem-title {
  display: block !important;
  font-size: 17pt;
}

body.print-answers .print-answer-title {
  display: block !important;
}

.print-heading p {
  display: none !important;
  margin: 0;
}

.print-user-fields {
  display: none !important;
  align-items: flex-end;
  justify-content: space-between;
  gap: 12mm;
  width: 100%;
  margin-top: 3mm;
  font-size: 12pt;
}

body.print-questions .print-user-fields {
  display: flex !important;
}

body.print-answers .print-user-fields {
  display: none !important;
}

.print-date-field,
.print-name-field {
  display: inline-flex;
  flex: 1 1 0;
  align-items: flex-end;
  min-width: 0;
  white-space: nowrap;
}

.print-date-line,
.print-name-line {
  display: inline-block;
  flex: 1 1 auto;
  height: 7mm;
  min-width: 45mm;
  margin-left: 2mm;
  border-bottom: 1.2px solid #000;
}

.quiz-container {
  display: block;
}

/* 問題印刷は通常余白を保ち、ページ末尾に少し安全域を残して1枚へ収める */

body.print-questions .quiz-section,
body.print-questions .quiz-container,
body.print-questions .question-card,
body.print-questions .choice-list,
body.print-questions .choice-item {
  min-width: 0;
  max-width: 100%;
  box-sizing: border-box;
}

body.print-questions .choice-item {
  align-items: start;
}

body.print-questions .choice-text {
  min-width: 0;
  overflow-wrap: anywhere;
  word-break: break-word;
}

body.print-questions .quiz-container {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  grid-auto-rows: minmax(0, 1fr);
  flex: 1 1 auto;
  min-height: 0;
  gap: 0.9mm;
}

body.print-questions .quiz-group {
  display: contents;
}


.quiz-group-title {
  margin: 0 0 2.5mm;
  font-size: 12pt;
  font-weight: 700;
  line-height: 1.3;
}

.quiz-group + .quiz-group {
  margin-top: 0;
}

body.print-questions .quiz-group-title,
body.print-answers .quiz-group-title {
  display: none !important;
}



.question-card {
  break-inside: avoid;
  page-break-inside: avoid;
  margin: 0 0 3mm;
  padding: 2.8mm 3mm;
  border: 1px solid #777;
  border-radius: 0;
}

.question-heading {
  gap: 3mm;
}

.question-number {
  font-size: 11pt;
}

.difficulty {
  min-height: auto;
  padding: 0 2mm;
  border: 1px solid #777;
  background: transparent !important;
  font-size: 9pt;
}

.question-text {
  margin: 1.5mm 0;
  font-size: 11.2pt;
  line-height: 1.4;
}

.choice-list {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 1.2mm;
}

.choice-item {
  grid-template-columns: 5.5mm minmax(0, 1fr);
  gap: 0.8mm;
  min-width: 0;
  padding: 0.5mm 0.6mm;
  background: transparent;
  font-size: 8.8pt;
}

.choice-label {
  width: 5.5mm;
  height: 5.5mm;
  border: 1px solid #777;
  font-size: 8.5pt;
}

body.print-questions .choice-label-correct {
  background: #fff !important;
}

body.print-answers .choice-label-correct {
  background: #d9d9d9 !important;
  -webkit-print-color-adjust: exact;
  print-color-adjust: exact;
  box-shadow: inset 0 0 0 1000px #d9d9d9;
}

.answer-block {
  margin-top: 1.8mm;
  padding: 1.8mm 2.2mm;
  border: 1px solid #777;
  border-left-width: 1px;
  border-radius: 0;
  background: transparent;
  font-size: 9pt;
  line-height: 1.35;
}

body.print-questions .answer-block {
  display: none !important;
}

body.print-answers .answer-block {
  display: block !important;
}

body.print-questions .difficulty {
  display: none !important;
}

body.print-answers .difficulty {
  display: inline-flex !important;
}


body.print-questions .print-heading {
  flex: 0 0 auto;
  margin-bottom: 2.2mm;
  padding-bottom: 0;
  border-bottom: 0;
}

body.print-questions .print-heading p {
  display: none !important;
}

body.print-answers .answer-text {
  display: none !important;
}

body.print-answers .print-heading {
  margin-bottom: 3.5mm;
}


/* A4縦1枚に収めるため、答え付き印刷はさらにコンパクトにする */
body.print-answers .question-card {
  margin: 0 0 2mm;
  padding: 2mm 2.5mm;
}

body.print-answers .question-heading {
  gap: 1.8mm;
}

body.print-answers .question-number {
  font-size: 9.5pt;
}

body.print-answers .difficulty {
  padding: 0 1.5mm;
  font-size: 8pt;
}

body.print-answers .question-text {
  margin: 1mm 0;
  font-size: 10.2pt;
  line-height: 1.32;
}

body.print-answers .choice-list {
  gap: 0.8mm;
}

body.print-answers .choice-item {
  grid-template-columns: 5mm minmax(0, 1fr);
  gap: 0.6mm;
  padding: 0.35mm 0.45mm;
  font-size: 8pt;
}

body.print-answers .choice-label {
  width: 5mm;
  height: 5mm;
  font-size: 8pt;
}

body.print-answers .answer-block {
  margin-top: 1.2mm;
  padding: 1.5mm 2mm;
  font-size: 8.5pt;
  line-height: 1.3;
}


/* 問題のみ印刷は高齢者向けに、A4 1枚の範囲で大きくゆったり表示する */
body.print-questions .print-user-fields {
  font-size: 12pt;
  margin-top: 3mm;
}

body.print-questions .question-card {
  min-height: 0;
  margin: 0;
  padding: 1.8mm 2.8mm;
}

body.print-questions .question-heading {
  gap: 2.5mm;
}

body.print-questions .question-number {
  font-size: 11pt;
}

body.print-questions .question-text {
  margin: 1.2mm 0 1.5mm;
  font-size: 12.5pt;
  line-height: 1.4;
}

body.print-questions .choice-list {
  width: 100%;
  min-width: 0;
  max-width: 100%;
  gap: 1mm;
}

body.print-questions .choice-item {
  grid-template-columns: 6mm minmax(0, 1fr);
  gap: 0.9mm;
  padding: 0.7mm 0.8mm;
  font-size: 10pt;
  line-height: 1.3;
}

body.print-questions .choice-label {
  width: 6mm;
  height: 6mm;
  font-size: 9.5pt;
}

/* 連想問題：選択肢と同じ大きさでヒントを表示し、問題用紙には回答欄を付ける */
.association-point {
  margin: 0;
  font-size: 8.8pt;
  line-height: 1.35;
}

.association-response-space {
  height: 6mm;
  margin-top: 0.7mm;
  border-bottom: 1px solid #777;
}

body.print-questions .association-response-space {
  display: block !important;
}

body.print-questions .question-card[data-quiz-type="association"] {
  display: flex;
  flex-direction: column;
}

body.print-questions .question-card[data-quiz-type="association"] .association-response-space {
  flex: 1 1 auto;
  min-height: 6mm;
}

.association-answer-block .explanation {
  margin-top: 0;
}

body.print-questions .association-point {
  font-size: 10pt;
  line-height: 1.3;
}

body.print-answers .association-point {
  font-size: 8pt;
  line-height: 1.35;
}

body.print-answers .association-response-space {
  display: none !important;
}
