/* ===== 문제 풀이 화면 전용 (토큰은 base.css, 상단바·사이드바는 shell.css) ===== */

/* ===== 시험 정보 바 ===== */
.qbar {
  display: flex;
  align-items: center;
  gap: 10px;
  min-height: 48px;
  padding: 7px 16px;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: #fff;
  box-shadow: var(--shadow-sm);
}

.qbar__back {
  display: grid;
  place-items: center;
  width: 28px; height: 28px;
  flex: none;
  border-radius: 8px;
  color: var(--text-soft);
}
.qbar__back:hover { background: #f1f3f7; color: var(--text); }
.qbar__back svg { width: 18px; height: 18px; stroke-width: 2.2; }

.qbar__crumb {
  display: flex;
  align-items: center;
  gap: 7px;
  min-width: 0;
  font-size: 13.5px;
  font-weight: 600;
}
.qbar__subject { color: var(--text); white-space: nowrap; }
.qbar__sep { color: #aab2c0; }
.qbar__kind {
  color: var(--text);
  font-weight: 700;
  white-space: nowrap;
}
.qbar__topic {
  color: var(--text-muted);
  font-weight: 600;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.qbar__count {
  margin-left: auto;
  color: var(--text-soft);
  font-size: 10.5px;
  font-weight: 600;
  white-space: nowrap;
}

.qbar__right {
  display: flex;
  align-items: center;
  gap: 10px;
  flex: none;
}

.qtimer {
  display: flex;
  align-items: center;
  gap: 5px;
  padding: 5px 11px;
  border-radius: 999px;
  background: #f1f3f7;
  color: var(--text-soft);
  font-size: 12.5px;
  font-weight: 600;
  font-variant-numeric: tabular-nums;
}
.qtimer svg { width: 14px; height: 14px; stroke-width: 2; }
.qtimer.is-urgent { background: #ffecec; color: var(--red); }

.qbar__quota {
  color: var(--text-soft);
  font-size: 12px;
  font-weight: 700;
  white-space: nowrap;
}

/* ===== 진행 바 ===== */
.qprogress {
  height: 4px;
  border-radius: 999px;
  background: #e2e6ee;
  overflow: hidden;
}
.qprogress__bar {
  display: block;
  height: 100%;
  width: 0;
  border-radius: 999px;
  background: var(--primary);
  transition: width .22s ease;
}

/* ===== 문제 영역 ===== */
.main.main--quiz {
  overflow: hidden !important;
  min-height: 0;
  overscroll-behavior: none;
  scrollbar-gutter: stable;
}

.qlayout {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 252px;
  align-items: stretch;
  gap: 13px;
  flex: 1 1 0%;
  min-height: 0;
  overflow: hidden;
}

/* 문제 카드와 AI 해설 패널을 한 열로 묶는다 */
.qmain {
  display: flex;
  flex-direction: column;
  gap: 13px;
  min-width: 0;
  min-height: 0;
  height: 100%;
  max-height: 100%;
  overflow: hidden;
}

.ai-back {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex: 0 0 auto;
  gap: 12px;
  padding: 11px 14px;
  border: 1px solid #c9daf8;
  border-radius: var(--radius);
  background: var(--primary-soft);
  color: var(--primary-dark);
  font-size: 13px;
  font-weight: 700;
}
.ai-back[hidden] { display: none !important; }
.ai-back__btn {
  flex: none;
  height: 32px;
  padding: 0 12px;
  border-radius: 999px;
  background: var(--primary);
  color: #fff;
  font-size: 12.5px;
  font-weight: 800;
  white-space: nowrap;
}
.ai-back__btn:hover { background: var(--primary-dark); }

/* ===== 문제 카드 ===== */
.qcard {
  display: flex;
  flex-direction: column;
  flex: 1 1 0;
  min-height: 0;
  overflow: hidden;
  padding: 20px 22px 16px;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: #fff;
  box-shadow: var(--shadow-sm);
  container-type: inline-size;
  container-name: qcard;
}

.qcard__body {
  flex: 1 1 0%;
  min-height: 0;
  overflow-y: auto;
  overflow-anchor: none;
  scrollbar-gutter: stable;
}

/* 해설을 열면 문제(지문·문항)와 해설을 좌우로 함께 보여 준다 */
.qmain.is-ai-open {
  display: grid;
  grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr);
  grid-template-rows: auto minmax(0, 1fr) auto;
  align-items: stretch;
  gap: 10px;
}
.qmain.is-ai-open .ai-back { grid-column: 1 / -1; }
.qmain.is-ai-open .qcard {
  grid-column: 1;
  grid-row: 2;
  flex: none;
  min-height: 0;
  padding: 14px 16px 12px;
}
.qmain.is-ai-open .ai {
  grid-column: 2;
  grid-row: 2;
  flex: none;
  min-height: 0;
}
.qmain.is-ai-open .similar-box { grid-column: 1 / -1; }
.qmain.is-ai-open .qactions {
  grid-column: 1 / -1;
  grid-row: 3;
}
.qmain.is-ai-open .qcard__body {
  flex: 1 1 0%;
  max-height: none;
  overflow-y: auto;
  overflow-anchor: none;
}
.qmain.is-ai-open .qactions {
  flex: none;
  margin-top: 10px;
  padding-top: 10px;
}
.qmain.is-ai-open .qactions .btn {
  min-width: 0;
}
.qmain.is-ai-open .qactions__result {
  display: none !important;
}
.qmain.is-ai-open .options {
  gap: 6px;
  margin-top: 10px;
}
.qmain.is-ai-open .option {
  padding: 8px 12px;
}

.qcard__ask {
  display: flex;
  align-items: flex-start;
  gap: 10px;
}

.qcard__icon {
  display: grid;
  place-items: center;
  width: 32px;
  height: 32px;
  flex: none;
  margin-top: 1px;
  border-radius: 10px;
  background: linear-gradient(180deg, #eef4ff 0%, #dbeafe 100%);
  color: var(--primary);
  box-shadow: inset 0 0 0 1px rgba(37, 99, 235, .12);
}
.qcard__icon svg {
  width: 18px;
  height: 18px;
  stroke: currentColor;
  fill: none;
  stroke-width: 1.9;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.qcard__text {
  flex: 1;
  min-width: 0;
  font-size: 17px;
  font-weight: 700;
  line-height: 1.6;
  letter-spacing: -.3px;
  overflow-wrap: anywhere;
}

.qcard__image {
  margin: 0 0 12px;
}
.qcard__image[hidden] { display: none !important; }
.qcard__image img {
  display: block;
  width: 100%;
  max-width: 720px;
  height: auto;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: #fff;
}

body.quiz-history .qcard__image {
  display: flex;
  justify-content: center;
}
body.quiz-history .qcard__image[hidden] {
  display: none !important;
}
body.quiz-history .qcard__image img {
  width: auto;
  max-width: min(600px, 100%);
  max-height: 400px;
  object-fit: contain;
}

.qcard__passage {
  margin-top: 10px;
  width: 100%;
  padding: 8px 12px;
  border: 1.5px solid #8b95a7;
  border-radius: 8px;
  background: #f7f8fb;
  color: var(--text);
  font-size: 13.5px;
  font-weight: 500;
  line-height: 1.6;
  letter-spacing: -.25px;
  white-space: pre-wrap;
  word-break: keep-all;
  overflow-wrap: anywhere;
  box-sizing: border-box;
}

.qcard__passage[hidden] {
  display: none;
}

.qcard__text u,
.qcard__passage u,
.option__text u,
.review__q u,
.review__answers u {
  text-decoration: underline;
  text-underline-offset: 3px;
  text-decoration-thickness: 2px;
  font-style: normal;
  font-weight: inherit;
}

body.quiz-korean .qcard__passage {
  font-size: 15.5px;
}

body.quiz-english .qcard__passage,
body.quiz-adminlaw .qcard__passage,
body.quiz-adminsci .qcard__passage,
body.quiz-peducation .qcard__passage {
  font-size: 15.5px;
}

body.quiz-english .qcard__passage {
  word-break: normal;
  overflow-wrap: break-word;
}

/* ===== 선택지 ===== */
.options {
  display: flex;
  flex-direction: column;
  gap: 8px;
  margin-top: 16px;
}

.option {
  display: flex;
  align-items: center;
  gap: 11px;
  padding: 13px 16px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: #fff;
  cursor: pointer;
  scroll-margin: 0;
  overflow-anchor: none;
  transition: border-color .14s, background .14s;
}
.option:hover { border-color: #b9ccff; background: #fafbff; }

.option input {
  position: absolute;
  opacity: 0;
  pointer-events: none;
}

.option__mark {
  display: grid;
  place-items: center;
  width: 19px; height: 19px;
  flex: none;
  border: 1.5px solid #b3bccb;
  border-radius: 50%;
  transition: border-color .14s, background .14s;
}
.option__mark::after {
  content: "";
  width: 7px; height: 7px;
  border-radius: 50%;
  background: #fff;
  transform: scale(0);
  transition: transform .14s;
}

.option__text {
  min-width: 0;
  font-size: 14px;
  font-weight: 600;
  line-height: 1.55;
  overflow-wrap: anywhere;
}

.option.is-selected {
  border-color: var(--primary);
  background: #f4f8ff;
  box-shadow: inset 0 0 0 1px var(--primary);
}
.option.is-selected .option__mark { border-color: var(--primary); background: var(--primary); }
.option.is-selected .option__mark::after { transform: scale(1); }
.option.is-selected .option__text { font-weight: 600; }

/* 채점 후 정답·오답 표시 */
.option.is-correct {
  border-color: var(--green);
  background: var(--green-soft);
  box-shadow: inset 0 0 0 1px var(--green);
}
.option.is-correct .option__mark { border-color: var(--green); background: var(--green); }
.option.is-correct .option__mark::after { transform: scale(1); }

.option.is-wrong {
  border-color: var(--red);
  background: #fdf1f1;
  box-shadow: inset 0 0 0 1px var(--red);
}
.option.is-wrong .option__mark { border-color: var(--red); background: var(--red); }
.option.is-wrong .option__mark::after { transform: scale(1); }

.options.is-locked .option { cursor: default; }
.options.is-locked .option:hover { border-color: var(--line); background: #fff; }
.options.is-locked .option.is-correct:hover { border-color: var(--green); background: var(--green-soft); }
.options.is-locked .option.is-wrong:hover { border-color: var(--red); background: #fdf1f1; }

/* ===== 즉시 정답 확인 메시지 ===== */
.verdict {
  display: flex;
  align-items: center;
  gap: 7px;
  margin-top: 14px;
  padding: 11px 14px;
  border-radius: var(--radius-sm);
  font-size: 13.5px;
  font-weight: 700;
  box-sizing: border-box;
  min-height: 44px;
}
.verdict[hidden] {
  display: none;
}
.verdict svg { width: 18px; height: 18px; flex: none; stroke-width: 2.2; }
.verdict.is-correct { background: var(--green-soft); color: #0d7a4d; }
.verdict.is-wrong { background: #fdeeee; color: #c9373b; }

/* ===== 하단 액션 ===== */
/* 이전 | 빈칸 | AI 해설 | 정답·오답(AI해설과 다음문제 사이 중앙) | 다음 */
.qactions {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto minmax(0, 1fr) auto;
  align-items: center;
  gap: 9px;
  flex: 0 0 auto;
  margin-top: auto;
  padding-top: 15px;
  border-top: 1px solid var(--line);
  background: #fff;
}
.qactions .btn {
  min-height: 38px;
  height: 38px;
  min-width: 108px;
  overflow: visible;
  line-height: 1;
}
.qactions #prevBtn {
  grid-column: 1;
  justify-self: start;
}
.qactions #explainBtn {
  grid-column: 3;
  justify-self: center;
}
.qactions #actionResult {
  grid-column: 4;
  justify-self: center;
}
.qactions #nextBtn {
  grid-column: 5;
  justify-self: end;
}
.qactions__result {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  margin: 0;
  padding: 0 14px;
  min-height: 38px;
  border-radius: var(--radius-sm);
  font-size: 13.5px;
  font-weight: 700;
  letter-spacing: -0.02em;
  white-space: nowrap;
  box-sizing: border-box;
}
.qactions__result[hidden] {
  display: none;
}
.qactions__result svg {
  width: 18px;
  height: 18px;
  flex: none;
  fill: none;
  stroke: currentColor;
  stroke-width: 2.2;
  stroke-linecap: round;
  stroke-linejoin: round;
}
.qactions__result.is-correct {
  background: var(--green-soft);
  color: #0d7a4d;
}
.qactions__result.is-wrong {
  background: #fdeeee;
  color: #c9373b;
}

@container qcard (max-width: 640px) {
  .qactions__result {
    display: none !important;
  }
}

#explainBtn[aria-pressed="true"] {
  border-color: var(--primary);
  background: var(--primary-soft);
  color: var(--primary);
}

/* ===== AI 해설 패널 ===== */
.ai {
  display: flex;
  flex-direction: column;
  flex: 1 1 0;
  min-height: 0;
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: #fff;
  box-shadow: var(--shadow-sm);
}

.ai__head {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
  flex-shrink: 0;
  gap: 8px;
  padding: 11px 16px;
  border-bottom: 1px solid var(--line);
}

.ai__title {
  display: flex;
  align-items: center;
  justify-self: start;
  gap: 7px;
  font-size: 14px;
  font-weight: 700;
}
.ai__mark {
  display: grid;
  place-items: center;
  width: 23px; height: 23px;
  flex: none;
  border-radius: 7px;
  background: var(--primary-soft);
  color: var(--primary);
}
.ai__mark svg { width: 15px; height: 15px; stroke-width: 1.9; }

.ai__similar {
  justify-self: center;
  height: 28px;
  padding: 0 11px;
  white-space: nowrap;
  border: 1px solid var(--line);
  border-radius: 999px;
  background: #fff;
  color: var(--primary);
  font-size: 12px;
  font-weight: 700;
}
.ai__similar:hover {
  border-color: var(--primary);
  background: var(--primary-soft);
}
.ai__similar.is-active {
  border-color: var(--primary);
  background: var(--primary);
  color: #fff;
}

.ai__close {
  display: inline-flex;
  align-items: center;
  justify-self: end;
  gap: 5px;
  padding: 5px 11px;
  border-radius: 999px;
  color: var(--text-soft);
  font-size: 12px;
  font-weight: 600;
}
.ai__close:hover { background: #f1f3f7; color: var(--text); }
.ai__close svg { width: 14px; height: 14px; stroke-width: 2; }

/* ===== 해설 탭 ===== */
.ai__tabs {
  display: flex;
  flex-shrink: 0;
  gap: 2px;
  padding: 7px 12px 0;
  border-bottom: 1px solid var(--line);
  overflow-x: auto;
}

.ai__tab {
  padding: 6px 12px 9px;
  border-bottom: 2px solid transparent;
  color: var(--text-muted);
  font-size: 12.5px;
  font-weight: 600;
  white-space: nowrap;
}
.ai__tab:hover { color: var(--text); }
.ai__tab.is-active { border-bottom-color: var(--primary); color: var(--primary); }

/* ===== 패널 본문 ===== */
.ai__body {
  flex: 1 1 0;
  min-height: 0;
  overflow-x: hidden;
  overflow-y: auto;
  display: grid;
  align-content: start;
  grid-template-columns: minmax(0, 1fr) 202px;
  gap: 14px;
  padding: 14px 16px 28px;
}
.ai__body.is-wide { grid-template-columns: minmax(0, 1fr); }

.ai__main {
  display: flex;
  flex-direction: column;
  gap: 13px;
  min-width: 0;
  min-height: 0;
}

/* 정답 배너 */
.ai__answer {
  display: flex;
  align-items: flex-start;
  gap: 7px;
  padding: 10px 13px;
  border-radius: var(--radius-sm);
  background: var(--green-soft);
  color: #0d7a4d;
  font-size: 13.5px;
  font-weight: 700;
  line-height: 1.45;
}
.ai__answer svg { width: 17px; height: 17px; flex: none; stroke-width: 2.2; }

/* 해설 섹션 */
.ai__sec-title {
  display: flex;
  align-items: center;
  gap: 7px;
  margin-bottom: 6px;
  font-size: 13px;
  font-weight: 700;
}
.ai__sec-title::before {
  content: "";
  width: 7px; height: 7px;
  flex: none;
  border-radius: 2px;
  background: var(--primary);
}
.ai__sec--concept .ai__sec-title::before { background: var(--orange); }
.ai__sec--wrong .ai__sec-title::before { background: var(--red); }
.ai__sec--tips .ai__sec-title::before { background: var(--green); }

/* 시험장 포인트는 옅은 초록 박스로 강조 */
.ai__sec--tips {
  padding: 11px 13px;
  border-radius: var(--radius-sm);
  background: var(--green-soft);
}
.ai__sec--tips .ai__sec-title { color: #0d7a4d; }

.ai__list {
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.ai__list li {
  position: relative;
  padding-left: 12px;
  color: var(--text-soft);
  font-size: 12.5px;
  font-weight: 600;
  line-height: 1.6;
}
.ai__list li::before {
  content: "";
  position: absolute;
  left: 2px; top: 8px;
  width: 4px; height: 4px;
  border-radius: 50%;
  background: #a9b2c2;
}
.ai__list li.ai__choice {
  padding-left: 0;
}
.ai__list li.ai__choice::before {
  content: none;
}

/* ===== 유사 문제 ===== */
.ai__side {
  align-self: start;
  padding: 12px;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: #f7f9fd;
}
.ai__side-title {
  margin-bottom: 9px;
  color: var(--primary);
  font-size: 12.5px;
  font-weight: 700;
}

.similar {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.similar--grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
}

.similar__item {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 8px;
  padding: 12px 11px 10px;
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
  background: #fff;
}
.similar__no {
  color: var(--text-muted);
  font-size: 11px;
  font-weight: 700;
}
.similar__go {
  color: var(--primary);
  font-size: 12.5px;
  font-weight: 700;
}
.similar__go:hover { text-decoration: underline; }

.similar-box,
.similar-box[hidden] {
  display: none !important;
}
.similar-box__title {
  margin-bottom: 9px;
  color: var(--primary);
  font-size: 12.5px;
  font-weight: 700;
}

/* ===== 문제 번호 패널 ===== */
.qnav {
  align-self: stretch;
  display: flex;
  flex-direction: column;
  width: 100%;
  min-height: 0;
  max-height: 100%;
  padding: 9px 8px 10px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: #fff;
  box-shadow: var(--shadow-sm);
  overflow: hidden;
}

.qnav__head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 8px;
  flex: none;
  margin-bottom: 7px;
}

.qnav__title {
  margin: 0;
  font-size: 12px;
  font-weight: 700;
}

.qnav__period {
  display: flex;
  flex-direction: column;
  gap: 3px;
  flex: none;
  margin: 0 0 6px;
  padding-bottom: 6px;
  border-bottom: 2px solid #8aa6c8;
}
.qnav__period[hidden] { display: none !important; }

.qnav__period-top {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 6px;
}

.qnav__session {
  margin: 0;
  min-width: 0;
  color: var(--text);
  font-size: 8px;
  font-weight: 800;
  line-height: 1.2;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.qnav__bank {
  margin: 0;
  color: var(--primary);
  font-size: 12px;
  font-weight: 800;
  line-height: 1.2;
  white-space: nowrap;
}

.qnav__sets {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 3px;
  max-height: 112px;
  overflow-y: auto;
  overflow-x: hidden;
  padding: 1px;
  scrollbar-gutter: stable;
}

.qnav__set {
  height: 24px;
  border: 1px solid var(--line);
  border-radius: 7px;
  background: #fff;
  color: var(--text-soft);
  font-size: 12px;
  font-weight: 800;
  font-variant-numeric: tabular-nums;
}

.qnav__set:hover {
  border-color: var(--primary);
  color: var(--primary);
}

.qnav__set.is-current {
  border-color: var(--primary);
  background: var(--primary);
  color: #fff;
}

.qnav__step {
  display: flex;
  flex: none;
  gap: 3px;
}

.qnav__move {
  height: 20px;
  padding: 0 7px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: #fff;
  color: var(--text-soft);
  font-size: 10px;
  font-weight: 700;
  white-space: nowrap;
}
.qnav__move:hover:not(:disabled) { border-color: var(--primary); color: var(--primary); }
.qnav__move:disabled { opacity: .45; cursor: default; }
.qnav__move--next {
  flex: 1.45;
  border-color: var(--primary);
  background: var(--primary);
  color: #fff;
}
.qnav__move--next:hover:not(:disabled) { color: #fff; filter: brightness(1.05); }

.qnav__grid {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 4px;
  flex: 1 1 auto;
  min-height: 0;
  overflow-y: auto;
  overflow-x: hidden;
  align-content: start;
  scrollbar-gutter: stable;
}

.qnav__grid.is-similar {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.qlayout:has(.qnav__grid.is-xl-num) {
  grid-template-columns: minmax(0, 1fr) 268px;
}

.qnav__grid.is-wide-num .qdot {
  font-size: 12px;
  letter-spacing: -.3px;
}

.qnav__grid.is-xl-num {
  gap: 4px;
}

.qnav__grid.is-xl-num .qdot {
  font-size: 11px;
  letter-spacing: -.4px;
}

.qdot {
  display: grid;
  place-items: center;
  min-width: 0;
  width: 100%;
  min-height: 32px;
  height: 32px;
  padding: 0 2px;
  aspect-ratio: auto;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fff;
  color: var(--text-soft);
  font-size: 13px;
  font-weight: 800;
  font-variant-numeric: tabular-nums;
  line-height: 1;
  white-space: nowrap;
  overflow: hidden;
  pointer-events: none;
  cursor: default;
  transition: background .12s, border-color .12s, color .12s;
}

.qdot.is-done {
  border-color: #b7e6cd;
  background: var(--green-soft);
  color: #0e8b55;
}
.qdot.is-current {
  border-color: var(--primary);
  background: var(--primary);
  color: #fff;
}

.legend {
  display: flex;
  flex-direction: column;
  gap: 4px;
  flex: none;
  margin-top: 8px;
  padding-top: 8px;
  border-top: 1px solid var(--line);
  color: var(--text-muted);
  font-size: 10.5px;
  font-weight: 600;
}
.legend li { display: flex; align-items: center; gap: 5px; }
.dot {
  width: 7px; height: 7px;
  border-radius: 50%;
  flex: none;
}
.dot--done { background: var(--green); }
.dot--current { background: var(--primary); }
.dot--todo { background: #ccd3e0; }

.qnav__stat {
  flex: none;
  margin-top: 7px;
  color: var(--text-soft);
  font-size: 10.5px;
  font-weight: 600;
}

/* ===== 결과 시트 ===== */
.result {
  position: fixed;
  inset: 0;
  z-index: 70;
  display: grid;
  place-items: center;
  padding: 20px;
  background: rgba(23, 29, 43, .5);
  overflow-y: auto;
}

.result__panel {
  width: 100%;
  max-width: 520px;
  max-height: calc(100vh - 40px);
  overflow-y: auto;
  padding: 24px;
  border-radius: var(--radius-lg);
  background: #fff;
  box-shadow: var(--shadow-lg);
}

.result__eyebrow { color: var(--primary); font-size: 12.5px; font-weight: 700; }
.result__title {
  margin-top: 3px;
  font-size: 19px;
  font-weight: 800;
  letter-spacing: -.4px;
}

.score {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  margin: 16px 0 20px;
  padding: 16px 20px;
  border-radius: var(--radius);
  background: linear-gradient(105deg, #e8f1ff, #f3f7ff);
  color: var(--text);
}
.score__main { display: flex; align-items: baseline; gap: 3px; }
.score__value { font-size: 34px; font-weight: 800; letter-spacing: -1px; }
.score__unit { font-size: 14px; font-weight: 600; opacity: .85; }

.score__meta {
  display: flex;
  flex-direction: column;
  gap: 4px;
  font-size: 12.5px;
}
.score__meta li { display: flex; gap: 8px; justify-content: space-between; }
.score__meta span { color: var(--text-muted); }
.score__meta b { font-variant-numeric: tabular-nums; }

.review__title {
  font-size: 14px;
  font-weight: 700;
}
.review__title span { color: var(--text-muted); font-weight: 600; }

.review {
  display: flex;
  flex-direction: column;
  gap: 10px;
  margin-top: 10px;
}
.review__item {
  padding: 13px 15px;
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
  background: #fbfcfe;
}
.review__q { font-size: 13.5px; font-weight: 600; line-height: 1.45; }
.review__answers {
  display: flex;
  flex-wrap: wrap;
  gap: 5px 14px;
  margin-top: 7px;
  font-size: 12.5px;
}
.review__answers b { font-weight: 700; }
.review__mine b { color: var(--red); }
.review__right b { color: var(--green); }
.review__explain {
  margin-top: 8px;
  color: var(--text-soft);
  font-size: 12.5px;
  font-weight: 600;
  line-height: 1.55;
}
.review__empty {
  padding: 22px;
  border: 1px dashed var(--line);
  border-radius: var(--radius-sm);
  color: var(--text-muted);
  font-size: 13px;
  font-weight: 600;
  text-align: center;
}

.result__foot {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 18px;
}
.result__foot .btn { flex: 1 1 calc(50% - 8px); min-width: 120px; }

/* ===== 반응형 ===== */
@media (max-width: 900px) {
  /* 문제 목록 패널을 문제 카드 아래로 이동 */
  .qlayout,
  .qlayout:has(.qnav__grid.is-xl-num) {
    display: flex;
    flex-direction: column;
    grid-template-columns: minmax(0, 1fr);
  }
  .qnav__grid { grid-template-columns: repeat(10, minmax(0, 1fr)); }
  .legend { flex-direction: row; flex-wrap: wrap; gap: 4px 14px; }

  .ai__body { grid-template-columns: minmax(0, 1fr); }
  .ai__side { display: none; }
  .similar--grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }

  .qmain.is-ai-open {
    display: flex;
    flex-direction: column;
    grid-template-columns: none;
    grid-template-rows: none;
  }
  .qmain.is-ai-open .qcard,
  .qmain.is-ai-open .ai,
  .qmain.is-ai-open .qactions,
  .qmain.is-ai-open .similar-box,
  .qmain.is-ai-open .ai-back {
    grid-column: auto;
    grid-row: auto;
    flex: none;
    min-height: 0;
    width: 100%;
  }
  .qmain.is-ai-open .ai {
    position: relative;
    z-index: 2;
    background: #fff;
  }
  .qlayout.is-ai-open .qnav,
  .qlayout:has(.qmain.is-ai-open) .qnav {
    display: none;
  }
}

@media (max-height: 820px) {
  .ai__body { grid-template-columns: minmax(0, 1fr); }
  .ai__side { display: none; }
}

@media (max-width: 620px) {
  .ai-back { flex-direction: column; align-items: stretch; }
  .ai-back__btn { width: 100%; }

  .qbar { gap: 7px; padding: 0 12px; }
  .qbar__topic { display: none; }
  .qbar__sep--topic { display: none; }
  .qbar__count { font-size: 10.5px; }
  .qtimer { padding: 5px 9px; }
  .qtimer span { font-size: 12px; }

  .qcard { padding: 18px 18px 16px; }
  .qcard__text { font-size: 15.5px; }
  .qcard__passage { font-size: 13px; padding: 8px 10px; line-height: 1.35; }
  body.quiz-korean .qcard__passage { font-size: 15px; }
  body.quiz-english .qcard__passage,
  body.quiz-adminlaw .qcard__passage,
  body.quiz-adminsci .qcard__passage,
  body.quiz-peducation .qcard__passage { font-size: 15px; }
  .qactions { grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr); gap: 8px; }
  .qactions .btn { padding: 0 10px; min-width: 0; }
  .qactions #prevBtn { grid-column: 1; justify-self: stretch; }
  .qactions #explainBtn { grid-column: 2; }
  .qactions #nextBtn { grid-column: 3; justify-self: stretch; }
  .qactions__result { display: none !important; }
  .qnav__grid { grid-template-columns: repeat(5, minmax(0, 1fr)); }

  .ai__body { padding: 12px 12px 14px; }
  .similar--grid { grid-template-columns: minmax(0, 1fr); }

  .result__panel { padding: 20px 18px; }
  .result__foot { flex-wrap: wrap; }
}
.question-image {
  display: block;
  max-width: 100%;
  height: auto;
  margin: 0 auto 20px;
}
body.quiz-history .question-image {
  max-width: min(600px, 100%);
  max-height: 400px;
  object-fit: contain;
  margin-left: auto;
  margin-right: auto;
}