/* 풀이 공통 위계. 각 풀이 CSS 뒤에 로드한다.
   풀이: 명조 / 근거·수치·조작: 고딕. 오행·길흉의 의미 색은 유지한다. */
:is(.simple-body, .premium-body, .ny-body) {
  --sans: 'Pretendard Variable', Pretendard, 'Noto Sans KR', sans-serif;
  --report-body-size: 17.5px;
  --report-body-leading: 1.95;
  --report-radius: 16px;
  --report-padding: 20px;
  --report-accent: #a08a5f;
  --report-accent-strong: #7a6642;
  --report-accent-soft: #f7f3e9;
  --report-line: #ece6da;
  --report-surface: #fffdf8;
  --report-ink: #2f3742;
  --report-muted: #5c6675;
  --accent: var(--report-accent-strong);
  --ink: var(--report-ink);
  --muted: var(--report-muted);
  --line: var(--report-line);
  --soft: var(--report-accent-soft);
}

/* 나중에 추가된 도입도 기존 해석 본문과 같은 판면을 쓴다. */
.premium-body :is(.premium-past-essay, .premium-fate-essay),
.simple-body .fate-essay {
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
}
.simple-body :is(.chapter-body p, .fate-paragraph, .past-page p:not(.past-headline):not(.past-punch), .current-flow-body),
.premium-body :is(.premium-past-paragraph, .premium-fate-paragraph, .premium-past-pattern p, .premium-past-settle),
.ny-body :is(.ny-block p, .ny-prose p, .ny-slot > p, .ny-welcome p, .ny-month p, .ny-card p) {
  font-family: var(--serif);
  font-size: var(--report-body-size);
  line-height: var(--report-body-leading);
  letter-spacing: -.012em;
}
.premium-body :is(.premium-past-headline, .premium-fate-title),
.simple-body .fate-title {
  font: 600 19px/1.75 var(--serif);
  color: var(--report-accent-strong);
  letter-spacing: -.02em;
}
.premium-body .premium-past-pattern h4,
.simple-body .past-pattern h4 {
  font: 700 18px/1.6 var(--serif);
}
.premium-body :is(.premium-past-pattern, .premium-past-chart),
.simple-body :is(.past-pattern, .past-chart, .glance-card, .chapter-page .premium-visual),
.ny-body :is(.ny-card, .ny-month) {
  border-color: var(--report-line);
  border-radius: var(--report-radius);
  background: var(--report-surface);
}
.premium-body .premium-past-claim,
.simple-body .past-claim {
  padding: 0;
  background: none;
  font-weight: 700;
  color: var(--report-accent-strong);
}
.premium-body .premium-past-punch,
.simple-body .past-punch {
  border-left-color: var(--report-accent);
  color: var(--report-accent-strong);
}
/* 그래프 설명은 자료이므로 고딕을 유지하고 긴 나이 표기가 본문을 밀지 않게 한다. */
.premium-body .premium-past-caption,
.simple-body .past-caption {
  grid-template-columns: minmax(72px, 104px) minmax(0, 1fr);
  font: 400 14px/1.75 var(--sans);
}
.premium-body .premium-past-captions,
.simple-body .past-captions { break-inside: auto; page-break-inside: auto; }

@media screen {
  .simple-body .page-heading h2,
  .ny-body .ny-page h2 { font: 700 27px/1.38 var(--serif); letter-spacing: -.035em; }
  .simple-body .simple-page:not(.simple-cover),
  .ny-body .ny-page:not(.ny-cover) {
    padding: 28px 24px;
    margin: 0;
    border: 0;
    border-bottom: 1px solid var(--report-line);
  }
  .ny-body :is(.ny-card, .ny-month) { padding: var(--report-padding); }
  .premium-body .premium-flow-editorial .flow-entry-reading p { font-size: var(--report-body-size); }
}
@media screen and (max-width: 360px) {
  .premium-body .premium-past-caption,
  .simple-body .past-caption { grid-template-columns: minmax(0, 1fr); gap: 2px; }
  .simple-body .simple-page:not(.simple-cover),
  .ny-body .ny-page:not(.ny-cover) { padding-inline: 20px; }
}

/* 새 섹션도 기존 PDF의 본문 19px·보조 17px·라벨 14px에 맞춘다. */
@media print {
  .premium-body :is(.premium-past-essay, .premium-fate-essay),
  .simple-body #glance .fate-essay { padding: 0; }
  .premium-body :is(.premium-past-paragraph, .premium-fate-paragraph, .premium-past-settle, .premium-past-punch),
  .simple-body :is(.past-page p, .fate-paragraph) {
    font-size: 19px !important;
    line-height: 1.7 !important;
  }
  .premium-body :is(.premium-past-pattern p, .premium-past-caption),
  .simple-body :is(.past-pattern p, .past-caption) {
    font-size: 17px !important;
    line-height: 1.65 !important;
  }
  .premium-body :is(.premium-past-label, .premium-past-caption strong, .premium-past-axis-label, .premium-past-legend),
  .simple-body :is(.past-caption strong, .past-axis-label, .past-legend) { font-size: 14px !important; }
  .premium-body .premium-flow-editorial .flow-entry-reading p { font-size: 19px !important; line-height: 1.7; }
  .premium-body .premium-past-why-title,
  .simple-body .past-why-title { break-after: avoid; page-break-after: avoid; }
}

@media screen {
  .simple-body .page-heading { margin-bottom: 20px; }
  .premium-body :is(.premium-identity,.premium-tension,.premium-chapter,.premium-patterns) { padding-top: 24px; margin-top: 32px; }
}

/* Reader controls share the app's action hierarchy; print typography stays separate. */
@media screen {
  :is(.premium-body,.simple-body,.ny-body) :is(.premium-export-action,.ny-btn,.upgrade-cta,.review-submit,.report-receipt-home) {
    display: inline-flex; align-items: center; justify-content: center; gap: 8px;
    min-height: var(--ui-control-height); max-width: 100%; padding: 12px 18px;
    border: 1px solid var(--ui-action); border-radius: var(--ui-control-radius);
    background: var(--ui-action); color: var(--ui-surface); box-shadow: none;
    font: 600 15px/1.5 var(--sans); text-align: center; text-decoration: none;
    white-space: normal; overflow-wrap: anywhere;
  }
  :is(.premium-body,.simple-body,.ny-body) :is(.premium-export-action,.ny-btn,.upgrade-cta,.review-submit,.report-receipt-home):focus-visible {
    outline: 2px solid var(--ui-action); outline-offset: 3px;
  }
}

@media screen {
  :is(.simple-body,.premium-body,.ny-body) {
    --report-ink: var(--ui-ink); --report-muted: var(--ui-muted); --report-meta: var(--ui-muted);
    --report-line: var(--ui-line); --report-surface: var(--ui-surface); --report-accent-soft: var(--ui-soft);
  }
  :is(.simple-body,.premium-body,.ny-body) :is(.premium-export-action,.ny-btn,.upgrade-cta,.review-submit,.report-receipt-home):hover:not(:disabled) { background: var(--ui-action-hover); }
  :is(.simple-body,.premium-body,.ny-body) :is(.premium-export-action,.ny-btn,.upgrade-cta,.review-submit):disabled { opacity: .55; cursor: default; }
  :is(.simple-body,.premium-body,.ny-body) :is(.premium-export-sheet,.premium-export-spec,.premium-export-options) { overflow-wrap: anywhere; }
}
