/* 공통 무대: 한 장 = 1920×1080, 화면 폭에 맞춰 통째로 확대·축소 */
@font-face { font-family: "Pretendard"; src: url("fonts/PretendardVariable.woff2") format("woff2-variations"); font-weight: 45 920; font-display: block; }
@font-face { font-family: "SUIT"; src: url("fonts/SUIT-Variable.woff2") format("woff2-variations"); font-weight: 100 900; font-display: block; }
@font-face { font-family: "Hahmlet"; src: url("fonts/Hahmlet.ttf") format("truetype-variations"); font-weight: 100 900; font-display: block; }

*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; }
body { background: var(--stage, #888); overflow-x: hidden; -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; }
img { display: block; max-width: 100%; }
h1, h2, h3, h4, p, ul, ol, dl, dd, figure, table { margin: 0; padding: 0; }
ul, ol { list-style: none; }
table { border-collapse: collapse; }

.deck { width: 1920px; zoom: var(--z, 1); }
.slide { position: relative; width: 1920px; height: 1080px; overflow: hidden; word-break: keep-all; font-variant-numeric: tabular-nums; }

/* 장 진입 연출: 스크립트가 있을 때만 숨겼다가 보인다 */
html.js .rv { opacity: 0; transform: translateY(28px); transition: opacity .7s cubic-bezier(.2,.7,.2,1), transform .7s cubic-bezier(.2,.7,.2,1); transition-delay: calc(var(--i, 0) * 80ms); }
html.js .slide.is-in .rv { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) { html.js .rv { opacity: 1; transform: none; transition: none; } }

:focus-visible { outline: 3px solid var(--focus, #e1251b); outline-offset: 3px; }

@media print {
  @page { size: 1920px 1080px; margin: 0; }
  body { background: none; }
  .deck { zoom: 1 !important; }
  .slide { break-after: page; }
  html.js .rv { opacity: 1; transform: none; }
}
