/* Ý tưởng: thổ cẩm trên sân cỏ - chàm, đỏ, vàng nghệ trên nền giấy dó */
.mgz-root {
  --mgz-ink: #1b1613;
  --mgz-paper: #f3ebdd;
  --mgz-paper2: #e8dbc4;
  --mgz-indigo: #1e2747;
  --mgz-indigo2: #131a31;
  --mgz-red: #b3362b;
  --mgz-gold: #e0a52b;
  --mgz-muted: #66594b;
  --mgz-serif: Georgia, "Times New Roman", serif;
  --mgz-sans: system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif;
  position: relative;
  background: var(--mgz-paper);
  color: var(--mgz-ink);
  font-family: var(--mgz-serif);
  font-size: clamp(1.08rem, 1rem + 0.35vw, 1.25rem);
  line-height: 1.8;
  overflow-x: clip;
}

.mgz-root *,
.mgz-root *::before,
.mgz-root *::after {
  box-sizing: border-box;
}

.mgz-root img {
  display: block;
  max-width: 100%;
  height: auto;
}

.mgz-root picture {
  display: block;
}

.mgz-root p {
  margin: 0 0 1.4em;
}

.mgz-root h2,
.mgz-root h3 {
  font-family: var(--mgz-serif);
  font-weight: 700;
}

.mgz-root :focus-visible {
  outline: 3px solid var(--mgz-gold);
  outline-offset: 3px;
}

/* Dải hoa văn thổ cẩm dựng bằng gradient */
.mgz-weave {
  height: 22px;
  border-top: 3px solid var(--mgz-gold);
  border-bottom: 3px solid var(--mgz-red);
  background:
    linear-gradient(135deg, var(--mgz-red) 25%, transparent 25%) -8px 0 / 16px 16px,
    linear-gradient(225deg, var(--mgz-red) 25%, transparent 25%) -8px 0 / 16px 16px,
    linear-gradient(315deg, var(--mgz-gold) 25%, transparent 25%) 0 0 / 16px 16px,
    linear-gradient(45deg, var(--mgz-gold) 25%, transparent 25%) 0 0 / 16px 16px,
    var(--mgz-indigo);
}

.mgz-weave--short {
  width: 132px;
}

.mgz-weave--edge {
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
}

/* Cảnh mở đầu: ảnh đứng yên, chữ trôi qua như thước phim */
.mgz-opening {
  position: relative;
  background: var(--mgz-indigo2);
  color: #fff7ea;
}

.mgz-opening-media {
  position: sticky;
  top: 0;
  height: 100svh;
  overflow: hidden;
  z-index: 0;
}

.mgz-opening-fig {
  margin: 0;
  position: absolute;
  inset: 0;
}

.mgz-opening-fig picture,
.mgz-opening-fig img {
  width: 100%;
  height: 100%;
}

.mgz-opening-fig img {
  max-width: none;
  object-fit: cover;
  object-position: center 40%;
}

.mgz-opening-veil {
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(19, 26, 49, 0.2) 0%, rgba(19, 26, 49, 0.3) 40%, rgba(13, 17, 33, 0.94) 100%);
}

.mgz-opening-veil::after {
  content: "";
  position: absolute;
  inset: 0;
  background: rgba(19, 26, 49, 0.9);
  opacity: 0;
  transition: opacity 1.4s ease;
}

.mgz-opening[data-mgz-active="1"] .mgz-opening-veil::after {
  opacity: 0.3;
}

.mgz-opening[data-mgz-active="2"] .mgz-opening-veil::after {
  opacity: 0.45;
}

.mgz-opening[data-mgz-active="3"] .mgz-opening-veil::after {
  opacity: 0.6;
}

.mgz-root.mgz-js.mgz-motion .mgz-opening-fig img {
  transform: scale(1.02);
  transition: transform 3.2s cubic-bezier(0.2, 0.6, 0.2, 1);
}

.mgz-root.mgz-motion .mgz-opening[data-mgz-active="1"] .mgz-opening-fig img {
  transform: scale(1.06);
}

.mgz-root.mgz-motion .mgz-opening[data-mgz-active="2"] .mgz-opening-fig img {
  transform: scale(1.1);
}

.mgz-root.mgz-motion .mgz-opening[data-mgz-active="3"] .mgz-opening-fig img {
  transform: scale(1.14);
}

.mgz-opening-flow {
  position: relative;
  z-index: 1;
  margin-top: -100svh;
  padding-bottom: 8svh;
}

.mgz-titlecard {
  min-height: 100svh;
  max-width: 1240px;
  margin: 0 auto;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  padding: 0 clamp(20px, 6vw, 96px) clamp(48px, 10svh, 120px);
}

.mgz-title {
  margin: 22px 0 24px;
  max-width: 15ch;
  font-size: clamp(2.4rem, 1.1rem + 5vw, 5.6rem);
  line-height: 1.08;
  letter-spacing: -0.02em;
  color: #fff7ea;
  text-shadow: 0 2px 32px rgba(0, 0, 0, 0.4);
  text-wrap: balance;
}

.mgz-accent {
  color: var(--mgz-gold);
  font-style: italic;
}

.mgz-dek {
  max-width: 40rem;
  font-family: var(--mgz-sans);
  font-size: clamp(1rem, 0.94rem + 0.35vw, 1.2rem);
  line-height: 1.65;
  color: rgba(255, 247, 234, 0.92);
}

.mgz-root .mgz-dek {
  margin: 0;
}

.mgz-cue {
  display: inline-flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 12px;
  margin-top: 40px;
  font-family: var(--mgz-sans);
  font-size: 0.74rem;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--mgz-gold);
}

.mgz-cue::after {
  content: "";
  display: block;
  width: 1px;
  height: 44px;
  background: currentColor;
  transform-origin: top;
  animation: mgz-cue 2.6s ease-in-out infinite;
}

@keyframes mgz-cue {
  0% { transform: scaleY(0); }
  50% { transform: scaleY(1); }
  100% { transform: scaleY(0); }
}

.mgz-step {
  min-height: 88svh;
  display: flex;
  align-items: center;
  justify-content: flex-start;
  padding: 10svh clamp(16px, 8vw, 140px);
}

.mgz-step--right {
  justify-content: flex-end;
}

.mgz-card {
  max-width: 34rem;
  padding: clamp(24px, 4vw, 46px);
  background: rgba(243, 235, 221, 0.96);
  color: var(--mgz-ink);
  border-top: 4px solid var(--mgz-red);
  box-shadow: 0 34px 70px -34px rgba(0, 0, 0, 0.7);
}

.mgz-root .mgz-card p {
  margin: 0;
}

.mgz-root.mgz-js.mgz-motion .mgz-opening .mgz-card {
  opacity: 0.45;
  transform: translateY(26px);
  transition: opacity 0.9s ease, transform 0.9s cubic-bezier(0.2, 0.65, 0.2, 1);
}

.mgz-root.mgz-js.mgz-motion .mgz-opening .mgz-step--on .mgz-card {
  opacity: 1;
  transform: none;
}

.mgz-num {
  display: block;
  font-family: var(--mgz-serif);
  font-style: italic;
  font-size: 3.2rem;
  line-height: 1;
  color: var(--mgz-red);
}

.mgz-chapter {
  margin: 10px 0 20px;
  font-size: clamp(1.6rem, 1.2rem + 1.6vw, 2.4rem);
  line-height: 1.18;
  letter-spacing: -0.01em;
}

.mgz-lead::first-letter {
  float: left;
  font-size: 3.7em;
  line-height: 0.86;
  padding: 8px 12px 0 0;
  font-weight: 700;
  color: var(--mgz-red);
}

/* Khoảnh khắc nghỉ: ảnh tràn lề thị sai */
.mgz-break,
.mgz-finale {
  position: relative;
  margin: 0;
  overflow: hidden;
  background: var(--mgz-indigo2);
}

.mgz-break {
  height: clamp(320px, 80svh, 860px);
}

.mgz-finale {
  height: clamp(420px, 94svh, 980px);
}

.mgz-break picture,
.mgz-break img,
.mgz-finale picture,
.mgz-finale img {
  width: 100%;
  height: 100%;
}

.mgz-break img,
.mgz-finale img {
  max-width: none;
  object-fit: cover;
}

.mgz-root.mgz-js.mgz-motion .mgz-break img,
.mgz-root.mgz-js.mgz-motion .mgz-finale img {
  transform: scale(1.14);
  will-change: transform;
}

.mgz-finale figcaption {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  padding: 140px clamp(20px, 7vw, 110px) clamp(32px, 6vw, 72px);
  background: linear-gradient(180deg, rgba(13, 17, 33, 0) 0%, rgba(13, 17, 33, 0.92) 100%);
  color: #fff7ea;
  font-family: var(--mgz-serif);
  font-style: italic;
  font-size: clamp(1.4rem, 1rem + 1.8vw, 2.6rem);
  line-height: 1.25;
}

.mgz-finale figcaption::before {
  content: "";
  display: block;
  width: 72px;
  height: 3px;
  margin-bottom: 18px;
  background: var(--mgz-gold);
}

/* Ảnh rộng và ảnh có chú thích bên */
.mgz-wide {
  max-width: 1120px;
  margin: clamp(48px, 8vw, 100px) auto clamp(24px, 4vw, 40px);
  padding: 0 22px;
}

.mgz-wide figcaption,
.mgz-side figcaption,
.mgz-dip figcaption {
  margin-top: 14px;
  max-width: 40rem;
  padding-left: 14px;
  border-left: 3px solid var(--mgz-gold);
  font-family: var(--mgz-sans);
  font-size: 0.9rem;
  line-height: 1.55;
  color: var(--mgz-muted);
}

.mgz-side {
  max-width: 1200px;
  margin: clamp(56px, 9vw, 110px) auto;
  padding: 0 22px;
  display: grid;
  grid-template-columns: minmax(0, 2.3fr) minmax(0, 1fr);
  gap: clamp(18px, 3vw, 40px);
  align-items: end;
}

.mgz-side figcaption {
  margin-top: 0;
  font-family: var(--mgz-serif);
  font-style: italic;
  font-size: 1.05rem;
  color: var(--mgz-ink);
  border-left-color: var(--mgz-red);
}

/* Cột chữ hẹp, thoáng */
.mgz-column {
  max-width: 36rem;
  margin: 0 auto;
  padding: 0 22px;
}

.mgz-standout {
  max-width: 48rem;
  margin: clamp(60px, 10vw, 120px) auto;
  padding: 0 22px;
  font-family: var(--mgz-serif);
  font-style: italic;
  font-size: clamp(1.4rem, 1.05rem + 1.5vw, 2.15rem);
  line-height: 1.42;
  text-align: center;
  color: var(--mgz-indigo);
}

.mgz-root .mgz-standout {
  margin: clamp(60px, 10vw, 120px) auto;
}

.mgz-standout::before {
  content: "\2756";
  display: block;
  margin-bottom: 20px;
  font-style: normal;
  font-size: 0.8em;
  color: var(--mgz-red);
}

/* Chương 2: đổi cảnh sang nền chàm */
.mgz-chapterhead {
  position: relative;
  margin-top: clamp(48px, 8vw, 96px);
  padding: clamp(84px, 13vw, 170px) 22px clamp(72px, 11vw, 150px);
  background: var(--mgz-indigo);
  color: #f6eedd;
  text-align: center;
}

.mgz-chapterhead .mgz-num {
  color: var(--mgz-gold);
  font-size: clamp(3rem, 2rem + 4vw, 6rem);
}

.mgz-chapterhead .mgz-chapter {
  max-width: 16ch;
  margin: 14px auto 0;
  font-size: clamp(2rem, 1.2rem + 3vw, 3.8rem);
  line-height: 1.12;
}

.mgz-sec {
  padding: clamp(56px, 9vw, 110px) 0;
}

.mgz-sec--end {
  padding-bottom: clamp(64px, 10vw, 130px);
}

.mgz-diptych {
  max-width: 1200px;
  margin: clamp(48px, 8vw, 100px) auto;
  padding: 0 22px;
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1.3fr);
  gap: clamp(16px, 3vw, 40px);
  align-items: start;
}

.mgz-dip {
  margin: 0;
}

.mgz-dip--a {
  margin-top: 72px;
}

.mgz-closing {
  font-size: 1.16em;
  line-height: 1.7;
  color: var(--mgz-indigo);
}

.mgz-closing::after {
  content: "\2756";
  display: block;
  margin-top: 28px;
  text-align: center;
  color: var(--mgz-red);
}

/* Hộp thông tin giải đấu */
.mgz-facts {
  position: relative;
  padding: clamp(72px, 10vw, 120px) 22px clamp(56px, 8vw, 96px);
  background: var(--mgz-indigo2);
  color: #ece3d1;
}

.mgz-facts-inner {
  max-width: 44rem;
  margin: 0 auto;
  font-family: var(--mgz-sans);
  font-size: 1rem;
  line-height: 1.75;
}

.mgz-root .mgz-facts-inner p:last-child {
  margin-bottom: 0;
}

.mgz-facts-first {
  font-family: var(--mgz-serif);
  font-size: clamp(1.15rem, 1rem + 0.6vw, 1.4rem);
  line-height: 1.6;
  color: #fff7ea;
}

.mgz-count {
  display: inline-block;
  font-family: var(--mgz-serif);
  font-weight: 700;
  font-size: 1.5em;
  line-height: 1;
  text-align: right;
  color: var(--mgz-gold);
  font-variant-numeric: tabular-nums;
}

/* Chữ và ảnh hiện dần khi có JS và người đọc cho phép chuyển động */
.mgz-root.mgz-js.mgz-motion [data-mgz-reveal] {
  opacity: 0;
  transform: translateY(28px);
  transition: opacity 1.1s ease, transform 1.1s cubic-bezier(0.2, 0.65, 0.2, 1);
}

.mgz-root.mgz-js.mgz-motion [data-mgz-reveal].mgz-in {
  opacity: 1;
  transform: none;
}

/* Điện thoại */
@media (max-width: 760px) {
  .mgz-titlecard {
    padding: 0 20px 56px;
  }

  .mgz-title {
    max-width: none;
  }

  .mgz-step,
  .mgz-step--right {
    min-height: 82svh;
    justify-content: center;
    padding: 8svh 14px;
  }

  .mgz-card {
    padding: 24px 20px;
    font-size: 1.06rem;
    line-height: 1.75;
  }

  .mgz-num {
    font-size: 2.6rem;
  }

  .mgz-break {
    height: 58svh;
  }

  .mgz-finale {
    height: 82svh;
  }

  .mgz-finale figcaption {
    padding: 110px 20px 28px;
    font-size: 1.3rem;
  }

  .mgz-side,
  .mgz-diptych {
    grid-template-columns: 1fr;
  }

  .mgz-dip--a {
    margin-top: 0;
  }

  .mgz-standout {
    font-size: 1.32rem;
  }

  .mgz-chapterhead {
    padding: 84px 20px 72px;
  }
}

/* Tôn trọng người đọc tắt chuyển động */
@media (prefers-reduced-motion: reduce) {
  .mgz-root.mgz-js [data-mgz-reveal],
  .mgz-root.mgz-js .mgz-opening .mgz-card {
    opacity: 1;
    transform: none;
    transition: none;
  }

  .mgz-root .mgz-opening-fig img,
  .mgz-root .mgz-break img,
  .mgz-root .mgz-finale img {
    transform: none;
    transition: none;
  }

  .mgz-opening-veil::after {
    transition: none;
  }

  .mgz-cue::after {
    animation: none;
    transform: none;
  }
}

/* Bản in: dàn phẳng mọi lớp chồng, giữ toàn bộ chữ */
@media print {
  .mgz-root {
    background: #fff;
    color: #000;
    font-size: 11pt;
  }

  .mgz-opening,
  .mgz-chapterhead,
  .mgz-facts {
    background: none;
    color: #000;
  }

  .mgz-opening-media {
    position: relative;
    height: auto;
  }

  .mgz-opening-fig {
    position: static;
  }

  .mgz-opening-fig picture,
  .mgz-opening-fig img {
    height: auto;
  }

  .mgz-opening-veil,
  .mgz-opening-veil::after {
    background: none;
  }

  .mgz-opening-flow {
    margin-top: 0;
  }

  .mgz-titlecard,
  .mgz-step {
    min-height: 0;
    padding: 12px 0;
  }

  .mgz-title,
  .mgz-dek,
  .mgz-facts-first {
    color: #000;
    text-shadow: none;
  }

  .mgz-card {
    background: none;
    box-shadow: none;
  }

  .mgz-break,
  .mgz-finale {
    height: auto;
  }

  .mgz-break img,
  .mgz-finale img {
    height: auto;
    transform: none;
  }

  .mgz-finale figcaption {
    position: static;
    background: none;
    color: #000;
    padding: 8px 0;
    font-size: 11pt;
  }

  .mgz-root.mgz-js [data-mgz-reveal],
  .mgz-root.mgz-js .mgz-opening .mgz-card {
    opacity: 1;
    transform: none;
  }
}