/* =====================================================================
   CHAPTERS 7 AND 8: the future and the closing letter.
   You do not need to edit this file.
   ===================================================================== */
[hidden] { display: none !important; }

/* ---------- Chapter 7: vision board ---------- */
.ch7 { background-color: #e4eef7; background-image: linear-gradient(rgba(76, 106, 140, .13) 1px, transparent 1px), linear-gradient(90deg, rgba(76, 106, 140, .13) 1px, transparent 1px); background-size: 26px 26px; }
.board-label { margin: 34px 0 10px; font-size: 12px; letter-spacing: .1em; text-transform: uppercase; color: var(--denim); }
.board-title { font-family: var(--font-display); font-weight: 400; font-size: 22px; line-height: 1.15; margin: 8px 0 8px; color: var(--brown); }
.board-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
.board-list li { padding-left: 22px; position: relative; font-size: 18px; }
.board-list li::before { content: "★"; position: absolute; left: 0; color: var(--brick); font-size: 14px; top: 3px; }

.poster { position: relative; margin-top: 26px; padding: 26px 18px 24px; background: #18243a; color: var(--cream); text-align: center; border: 4px solid var(--butter); box-shadow: var(--shadow-md); transform: rotate(-.8deg); }
.poster-top { margin: 0 0 6px; font-size: 13px; letter-spacing: .3em; text-transform: uppercase; color: var(--butter); }
.poster-title { font-family: var(--font-display); font-size: clamp(36px, 11.6vw, 68px); line-height: .98; margin: 0 0 8px; color: var(--cream); overflow-wrap: anywhere; }
.poster-sub { margin: 0; font-size: 26px; color: var(--butter); line-height: 1.1; }

.bcards { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
.bcard { position: relative; display: grid; align-content: space-between; gap: 18px; min-height: 108px; padding: 14px 12px 12px; box-shadow: var(--shadow-md); background: var(--paper); border: 1px solid rgba(74, 51, 36, .25); }
.bcards li:nth-child(1) .bcard { transform: rotate(-2deg); }
.bcards li:nth-child(2) .bcard { transform: rotate(1.6deg); background: #18243a; color: var(--cream); }
.bcards li:nth-child(3) .bcard { transform: rotate(1.2deg); background: var(--butter); }
.bcards li:nth-child(4) .bcard { transform: rotate(-1.4deg); background: var(--denim-soft); }
.bc-name { font-family: var(--font-type); font-size: 12px; letter-spacing: .14em; text-transform: uppercase; opacity: .75; }
.bc-title { font-family: var(--font-display); font-size: 17px; line-height: 1.1; overflow-wrap: anywhere; }
.bc-line { display: block; height: 3px; width: 36px; background: var(--brick); }
.bcards li:nth-child(2) .bc-line { background: var(--butter); }

.faith-card { margin-top: 38px; padding: 20px 18px; background: var(--paper); border: 3px solid var(--denim); box-shadow: 5px 5px 0 var(--denim); }
.book-doodle { display: block; margin-bottom: 4px; }
.faith-card ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
.faith-card li { font-size: 19px; font-style: italic; }

.home-spread { display: grid; gap: 28px; margin-top: 44px; align-items: center; }
.house-doodle { display: block; margin-bottom: 2px; }
.illustrative { margin: 12px 0 0; font-size: 12px; letter-spacing: .04em; color: var(--muted); border-left: 3px solid var(--brick); padding-left: 10px; }
.home-photo { width: 78%; justify-self: center; }

.fun-row { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; margin-top: 44px; align-items: stretch; }
.fun-card { position: relative; padding: 14px 12px 14px; background: #fff7e0; box-shadow: var(--shadow-sm); text-align: center; display: grid; justify-items: center; align-content: start; gap: 6px; }
.fun-card.hoop { transform: rotate(-1.4deg); }
.fun-card.cam { transform: rotate(1.4deg); background: var(--denim-soft); }
.fun-card p { margin: 0; font-family: var(--font-hand); font-size: 24px; line-height: 1.05; }
.rec { position: absolute; top: 8px; right: 8px; font-size: 11px; color: var(--brick); letter-spacing: .08em; }

.sticker-cloud { display: flex; flex-wrap: wrap; gap: 14px; margin-top: 42px; align-items: center; }
.sticker-cloud .sticker { font-size: clamp(16px, 4.8vw, 22px); padding: 8px 16px; }
.sticker-cloud .sc1 { transform: rotate(4deg); }
.sticker-cloud .sc2 { transform: rotate(-2deg); }
.future-us { width: 76%; margin: 44px auto 0; }

.predictions { margin-top: 46px; padding: 18px 16px 14px; background: #fff4b8; box-shadow: var(--shadow-sm); transform: rotate(-.8deg); }
.pred-label { margin: 0 0 6px; font-size: 12px; letter-spacing: .14em; text-transform: uppercase; color: var(--brick); }
.predictions ul { list-style: none; margin: 0; padding: 0; }
.predictions li { font-size: 27px; line-height: 1.15; padding: 4px 0 4px 4px; color: var(--ink); font-weight: 500; }
.predictions li::before { content: "→ "; color: var(--brick); }
.disclaimer { margin: 22px 0 0; font-size: 12px; letter-spacing: .04em; color: var(--muted); }

.big-quote { position: relative; margin: 54px 0 0; padding: 36px 6px 6px; }
.big-quote::before { content: "“"; position: absolute; top: -12px; left: -4px; font-family: var(--font-display); font-size: 110px; line-height: 1; color: var(--brick); opacity: .8; }
.bq-main { margin: 0; font-family: var(--font-display); font-size: clamp(27px, 7.8vw, 44px); line-height: 1.12; color: var(--brown); text-wrap: balance; }
.bq-small { margin: 14px 0 0; font-size: 26px; color: var(--denim); }
.fin-music { margin-top: 36px; }
.ch7 .page-no { display: none; }

/* ---------- Chapter 8: closing letter ---------- */
.ch8 { background-color: #f6ecd6; background-image: radial-gradient(rgba(120, 90, 50, .08) 1px, transparent 1px); background-size: 14px 14px; padding-bottom: 96px; }
.letter {
  position: relative; margin-top: 18px; padding: 26px 18px 26px 46px; background-color: #fffef8; box-shadow: var(--shadow-md); transform: rotate(-.3deg);
  background-image: repeating-linear-gradient(transparent 0 33px, rgba(76, 106, 140, .22) 33px 34px);
}
.letter::before { content: ""; position: absolute; top: 0; bottom: 0; left: 32px; width: 2px; background: rgba(178, 57, 44, .4); }
.letter-greeting { margin: 0 0 14px; font-size: clamp(34px, 9.4vw, 50px); line-height: 1.05; color: var(--brick); }
.letter-p p { margin: 0 0 20px; font-size: 19px; line-height: 34px; }
.cheers-wrap { margin-top: 40px; text-align: center; }
.cheers { display: inline-block; margin: 0; font-family: var(--font-display); font-size: clamp(32px, 9.6vw, 56px); line-height: 1.05; color: var(--brown); padding: 4px 14px; background: linear-gradient(transparent 58%, rgba(243, 211, 107, .9) 58%); transform: rotate(-2deg); text-wrap: balance; }
.sign { margin-top: 30px; text-align: right; }
.signoff { margin: 0; font-size: 42px; color: var(--brick); transform: rotate(-3deg); display: inline-block; padding-right: 6px; }
.final-photos { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 16px; margin-top: 40px; align-items: start; }
.final-photos > :last-child { margin-top: 26px; }
.final-photos > :only-child { grid-column: 1 / -1; width: 66%; justify-self: center; margin-top: 0; }

.cake-wrap { margin: 60px auto 0; max-width: 360px; text-align: center; display: grid; justify-items: center; gap: 10px; }
.cake-btn { all: unset; cursor: pointer; line-height: 0; padding: 10px 14px; border-radius: 18px; }
.cake-btn:focus-visible { outline: 3px solid var(--denim); outline-offset: 4px; }
.cake-btn .flame { transform-origin: 70px 34px; animation: flicker 1.2s ease-in-out infinite alternate; }
.cake-btn.is-out .flame { display: none; }
@keyframes flicker { from { transform: scale(1, 1) rotate(-2deg); } to { transform: scale(.92, 1.08) rotate(2deg); } }
.cake-hint { margin: 0; font-size: 28px; color: var(--denim); }
.cake-after { margin: 0; font-size: 30px; color: var(--brick); min-height: 1em; max-width: 18ch; line-height: 1.1; }
.again-btn, .replay-btn { font-family: var(--font-type); font-size: 14px; min-height: 44px; padding: 8px 20px; background: var(--butter); color: var(--brown); border: 2px solid var(--brown); border-radius: 999px; box-shadow: 2px 2px 0 var(--brown); }
.again-btn:active, .replay-btn:active { transform: translate(2px, 2px); box-shadow: none; }

.the-end { margin-top: 70px; padding: 22px 18px 24px; text-align: center; background: #1d1612; color: var(--cream); border: 3px solid var(--butter); border-radius: 6px; display: grid; gap: 10px; justify-items: center; }
.end-line { margin: 0; font-size: 13px; letter-spacing: .24em; text-transform: uppercase; color: var(--butter); }
.end-load { width: 100%; max-width: 280px; height: 22px; border: 3px solid var(--cream); padding: 2px; }
.end-fill { height: 100%; width: 100%; background: repeating-linear-gradient(90deg, var(--butter) 0 10px, #d4b64d 10px 14px); }
.reveal.is-in .end-fill { animation: endfill 2.4s steps(14) both; }
@keyframes endfill { from { width: 0; } to { width: 12%; } }
.next-line { margin: 0 0 8px; font-size: 28px; color: var(--cream); }
.ch8 .page-no { display: none; }

/* ---------- tablet and up ---------- */
@media (min-width: 700px) {
  .bcards { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .home-spread { grid-template-columns: 1.1fr 1fr; gap: 40px; }
  .home-photo { width: 100%; }
  .fun-row { max-width: 560px; }
  .final-photos > :only-child { width: 40%; }
  .future-us { width: 44%; margin-left: 0; }
}

@media (prefers-reduced-motion: reduce) {
  .cake-btn .flame { animation: none; }
  .reveal.is-in .end-fill { animation: none; width: 12%; }
}
