@import url('https://fonts.googleapis.com/css2?family=DM+Mono:wght@400;500&family=ZCOOL+KuaiLe&display=swap');

:root { --green:#24734b; --green-dark:#123d2a; --green-soft:#e5f0e8; --paper:#fffdf5; --paper-deep:#f3ead8; --yellow:#ffd447; --yellow-dark:#d4a900; --blue:#315bcb; --ink:#202520; --muted:#68736a; --line:#cfd8c9; --red:#ee6e4d; --shadow:0 22px 50px rgba(19,59,40,.13); }
* { box-sizing:border-box; }
html { scroll-behavior:smooth; }
body { margin:0; background:var(--paper); color:var(--ink); font-family:"Microsoft YaHei", "PingFang SC", sans-serif; font-size:16px; line-height:1.6; overflow-x:hidden; }
button, a { font:inherit; }
button { cursor:pointer; }
a { color:inherit; text-decoration:none; }
button:focus-visible, a:focus-visible { outline:3px solid var(--blue); outline-offset:4px; }
.svg-definitions { position:absolute; width:0; height:0; overflow:hidden; }
.page-width { width:min(1120px, calc(100% - 80px)); margin-inline:auto; }
.site-header { min-height:82px; display:flex; align-items:center; justify-content:space-between; gap:24px; border-bottom:1px solid var(--line); }
.brand { display:flex; align-items:center; gap:11px; font-size:13px; font-weight:700; letter-spacing:.04em; }
.brand svg { width:26px; height:26px; color:var(--green); }
.header-note, .header-link { color:var(--muted); font-size:12px; }
.header-link { border-bottom:1px solid #99ab9e; padding-bottom:2px; }
.header-link span { color:var(--blue); font-size:16px; }
.hero { min-height:700px; display:grid; grid-template-columns:minmax(360px, .85fr) 1.15fr; align-items:center; gap:70px; padding-top:75px; padding-bottom:88px; }
.late-label, .section-kicker, .ritual-tag { color:var(--green); font-family:"DM Mono", monospace; font-size:11px; letter-spacing:.05em; }
.late-label { display:flex; align-items:center; gap:9px; margin-bottom:23px; }
.label-dot { width:8px; height:8px; border-radius:50%; background:var(--red); box-shadow:0 0 0 4px #f9ded5; }
h1, h2, p { margin-top:0; }
h1 { margin-bottom:24px; font-size:clamp(55px, 7.5vw, 93px); line-height:.98; letter-spacing:-.06em; font-weight:900; }
.own-goal { display:inline-block; position:relative; color:var(--green); }
.own-goal svg { position:absolute; width:92%; height:auto; left:1%; bottom:-14px; fill:none; stroke:var(--yellow-dark); stroke-linecap:round; stroke-width:3; }
.date-confession { margin:31px 0 21px; font-size:14px; line-height:1.55; }
.date-confession p { margin-bottom:3px; }
.date-confession strong { font-weight:700; }
.mistaken-date { display:inline-block; background:var(--yellow); padding:0 5px; transform:rotate(-2deg); font-weight:800; }
.oops { color:var(--red); margin-left:8px; font-family:"ZCOOL KuaiLe", cursive; }
.hero-description { color:var(--muted); font-size:15px; line-height:1.75; }
.button { border:0; display:inline-flex; align-items:center; justify-content:center; gap:24px; min-height:51px; padding:0 20px; font-weight:700; font-size:14px; transition:transform .2s, box-shadow .2s, background .2s; }
.button:hover { transform:translateY(-2px); }
.button-green { background:var(--green); color:var(--paper); box-shadow:4px 4px 0 var(--yellow); }
.button-green:hover { background:var(--green-dark); }
.button svg { width:19px; height:19px; }
.hero-footnote { margin-top:21px; color:var(--muted); font-size:11px; }
.hero-footnote span { color:var(--red); font-size:16px; vertical-align:-1px; margin-right:4px; }
.hero-art { position:relative; min-height:535px; display:grid; place-items:center; }
.ticket { position:relative; z-index:1; width:min(525px, 100%); min-height:430px; display:grid; grid-template-columns:1fr 90px; filter:drop-shadow(0 23px 17px rgba(26,64,44,.17)); transform:rotate(2.7deg); }
.ticket-main, .ticket-stub { background:#f7eccf; position:relative; }
.ticket-main { padding:27px 28px 24px; clip-path:polygon(0 0,100% 0,100% 100%,0 100%,0 97%,1.2% 94%,0 91%,1.2% 88%,0 85%,1.2% 82%,0 79%,1.2% 76%,0 73%,1.2% 70%,0 67%,1.2% 64%,0 61%,1.2% 58%,0 55%,1.2% 52%,0 49%,1.2% 46%,0 43%,1.2% 40%,0 37%,1.2% 34%,0 31%,1.2% 28%,0 25%,1.2% 22%,0 19%,1.2% 16%,0 13%,1.2% 10%,0 7%,1.2% 4%,0 0); }
.ticket-main:after { content:""; position:absolute; inset:12px; border:1px solid #ccbfa0; pointer-events:none; }
.ticket-stub { border-left:1px dashed #a89d81; padding:30px 15px; display:flex; flex-direction:column; justify-content:space-between; align-items:center; clip-path:polygon(0 0,100% 0,100% 100%,0 100%,0 97%,3% 94%,0 91%,3% 88%,0 85%,3% 82%,0 79%,3% 76%,0 73%,3% 70%,0 67%,3% 64%,0 61%,3% 58%,0 55%,3% 52%,0 49%,3% 46%,0 43%,3% 40%,0 37%,3% 34%,0 31%,3% 28%,0 25%,3% 22%,0 19%,3% 16%,0 13%,3% 10%,0 7%,3% 4%,0 0); }
.ticket-heading { position:relative; z-index:1; display:flex; justify-content:space-between; color:var(--green); font-family:"DM Mono", monospace; font-size:11px; letter-spacing:.05em; }
.ticket-season { color:#85775c; }
.pitch-art { position:relative; z-index:1; height:210px; margin:20px 0 15px; background:var(--green); overflow:hidden; }
.pitch-lines { position:absolute; inset:14px; border:1px solid rgba(255,255,255,.65); }
.pitch-lines:before { content:""; position:absolute; left:0; right:0; top:50%; border-top:1px solid rgba(255,255,255,.65); }
.pitch-center { width:36px; height:36px; border:1px solid rgba(255,255,255,.65); border-radius:50%; position:absolute; top:calc(50% - 18px); left:calc(50% - 18px); }
.penalty { position:absolute; width:30px; height:55px; border:1px solid rgba(255,255,255,.65); left:calc(50% - 15px); }
.penalty-top { top:-1px; border-top:0; } .penalty-bottom { bottom:-1px; border-bottom:0; }
.ticket-number { position:absolute; left:30px; top:45px; color:var(--yellow); font-family:Impact, Haettenschweiler, sans-serif; font-size:105px; line-height:.8; letter-spacing:-.06em; transform:rotate(-8deg); text-shadow:3px 3px 0 rgba(14,51,34,.32); }
.ticket-number span { display:inline-block; font-family:"ZCOOL KuaiLe", cursive; font-size:31px; letter-spacing:0; transform:rotate(8deg); margin-left:3px; }
.ticket-ball { position:absolute; width:78px; height:78px; color:var(--paper); right:34px; top:44px; transform:rotate(18deg); opacity:.94; }
.ticket-sticker { position:absolute; bottom:23px; right:23px; color:var(--green); background:var(--yellow); padding:4px 7px; font-family:"ZCOOL KuaiLe", cursive; font-size:15px; transform:rotate(-5deg); }
.play-path { position:absolute; inset:auto auto 0 0; width:210px; height:130px; fill:none; stroke:var(--yellow); stroke-width:2; stroke-dasharray:5 7; opacity:.85; }
.pitch-cross { position:absolute; color:var(--yellow); font-family:"ZCOOL KuaiLe", cursive; font-size:29px; }.cross-one { left:24px; top:15px; }.cross-two { right:17px; bottom:6px; }
.ticket-title { position:relative; z-index:1; color:var(--green); font-family:"ZCOOL KuaiLe", cursive; font-size:26px; line-height:1.05; }
.ticket-recipient { position:relative; z-index:1; display:flex; align-items:flex-end; gap:9px; margin-top:21px; color:var(--green); }.ticket-recipient span { font-size:10px; color:#897b61; }.ticket-recipient strong { font-size:21px; }.ticket-recipient svg { width:18px; height:18px; color:var(--red); margin-bottom:3px; }
.ticket-stub div { writing-mode:vertical-rl; display:flex; align-items:center; gap:7px; color:#897b61; font-family:"DM Mono", monospace; font-size:9px; }.ticket-stub strong { color:var(--green); font-family:Impact, sans-serif; font-size:23px; letter-spacing:.03em; }.ticket-stub>svg { width:23px; height:23px; color:var(--green); transform:rotate(90deg); }.ticket-admit { writing-mode:vertical-rl; color:var(--red); font-family:"ZCOOL KuaiLe", cursive; font-size:16px; }
.handwritten { font-family:"ZCOOL KuaiLe", cursive; color:var(--blue); }.art-note { position:absolute; top:20px; right:-10px; z-index:2; font-size:17px; line-height:1.2; transform:rotate(8deg); }.art-note svg { width:90px; display:block; fill:none; stroke:var(--blue); stroke-width:1.5; }.ticket-bottom-note { position:absolute; bottom:23px; left:20px; font-size:16px; transform:rotate(-5deg); }.art-spark { position:absolute; color:var(--yellow-dark); }.spark-one { left:7%; top:31%; font-size:28px; }.spark-two { right:4%; bottom:28%; width:24px; height:24px; color:var(--red); }
.pitch-divider { width:min(100% - 80px, 1040px); margin-inline:auto; display:flex; align-items:center; gap:19px; color:#88958a; font-family:"DM Mono", monospace; font-size:10px; }.pitch-divider:before,.pitch-divider:after { content:""; flex:1; border-top:1px solid var(--line); }.pitch-divider svg { width:20px; height:20px; color:var(--green); }
#gift-content { animation:reveal .8s ease both; }.replays-section { padding-top:112px; padding-bottom:115px; }.section-heading { display:flex; align-items:flex-end; justify-content:space-between; gap:35px; margin-bottom:37px; }.section-kicker { margin-bottom:14px; }.section-heading h2, .ritual-copy h2, .letter h2 { margin:0; font-size:clamp(40px, 6vw, 66px); letter-spacing:-.06em; line-height:1.05; }.blue-star { color:var(--blue); font-family:"ZCOOL KuaiLe", cursive; font-size:.6em; vertical-align:top; margin-left:7px; }.section-intro { max-width:250px; color:var(--muted); font-size:13px; line-height:1.7; margin-bottom:3px; }.draft-note { display:flex; align-items:center; gap:8px; color:#7a887f; font-size:11px; margin-bottom:30px; }.draft-note span { color:var(--blue); font-size:18px; }
.photo-grid { display:grid; grid-template-columns:repeat(12, 1fr); gap:22px; align-items:start; }.photo-card { position:relative; grid-column:span 4; background:#fff; padding:10px 10px 14px; box-shadow:0 12px 27px rgba(30,59,42,.11); transform:rotate(var(--tilt)); transition:transform .25s, box-shadow .25s; }.photo-card:nth-child(2),.photo-card:nth-child(5) { margin-top:54px; }.photo-card:nth-child(3),.photo-card:nth-child(6) { margin-top:14px; }.photo-card:hover { transform:translateY(-5px) rotate(0deg); box-shadow:0 18px 34px rgba(30,59,42,.16); }.photo-card:before { content:""; position:absolute; width:64px; height:17px; background:rgba(255,212,71,.65); top:-8px; left:50%; transform:translateX(-50%) rotate(-4deg); }.photo-frame { aspect-ratio:1 / 1.06; overflow:hidden; background:var(--green-soft); }.photo-frame img { display:block; width:100%; height:100%; object-fit:cover; }.placeholder-art { width:100%; height:100%; display:grid; place-items:center; position:relative; overflow:hidden; }.placeholder-art:before { content:""; position:absolute; width:170px; height:170px; border-radius:50%; background:rgba(255,255,255,.15); right:-55px; top:-50px; }.placeholder-word { color:var(--paper); font-family:"ZCOOL KuaiLe", cursive; text-align:center; font-size:18px; line-height:1.2; transform:rotate(-8deg); }.placeholder-mark { position:absolute; color:var(--yellow); font-size:62px; font-family:Impact, sans-serif; opacity:.8; }.placeholder-pitch { background:linear-gradient(135deg,#2b7c51,#164c36); }.placeholder-star { background:linear-gradient(135deg,#315bcb,#203782); }.placeholder-sun { background:linear-gradient(135deg,#f0a447,#e7694d); }.placeholder-ball { background:linear-gradient(135deg,#ebce63,#e99a2a); }.placeholder-ticket { background:linear-gradient(135deg,#8a5bba,#4f3c83); }.placeholder-goal { background:linear-gradient(135deg,#1f8a7b,#18605d); }.photo-frame .placeholder-mark:nth-child(2) { right:17px; bottom:8px; }.photo-meta { display:flex; justify-content:space-between; align-items:center; gap:10px; padding:11px 3px 0; }.photo-meta h3 { margin:0; font-size:13px; line-height:1.25; }.photo-meta span { flex:0 0 auto; color:var(--red); font-family:"ZCOOL KuaiLe", cursive; font-size:19px; }.photo-open { border:0; padding:0; width:100%; color:inherit; text-align:left; background:none; }.photo-card.empty .photo-meta h3 { color:#6d7b70; font-weight:500; }.photo-card.empty .photo-frame:after { content:"点击查看占位说明"; position:absolute; left:17px; bottom:13px; padding:3px 7px; background:var(--paper); color:var(--green); font-size:10px; }
.album-postscript { text-align:center; margin:39px 0 47px; font-size:20px; transform:rotate(-2deg); }.text-link { border:0; padding:0; border-bottom:1px solid #9baaa0; color:var(--green); background:none; font-size:13px; }.next-section { display:block; width:max-content; margin-inline:auto; }.next-section span { color:var(--red); margin-left:7px; }
.ritual-section { background:var(--green); color:var(--paper); overflow:hidden; }.ritual-inner { min-height:570px; display:grid; grid-template-columns:1fr 1fr; gap:50px; align-items:center; }.ritual-copy { position:relative; }.ritual-tag { display:inline-block; color:var(--yellow); border:1px solid rgba(255,212,71,.6); padding:4px 8px; margin-bottom:28px; }.ritual-copy h2 { font-size:clamp(42px, 6vw, 67px); }.ritual-copy>p:not(.ritual-aside) { color:#cde0d2; font-size:14px; line-height:1.8; margin-top:22px; }.ritual-aside { position:absolute; left:250px; bottom:-100px; color:var(--yellow); transform:rotate(-8deg); font-size:18px; }.cake-stage { display:flex; flex-direction:column; align-items:center; }.cake-art { width:min(390px,100%); height:265px; position:relative; }.cake-shadow { position:absolute; bottom:12px; left:13%; width:74%; height:24px; border-radius:50%; background:rgba(5,33,20,.35); filter:blur(5px); }.cake-plate { position:absolute; bottom:22px; left:12%; width:76%; height:23px; border-radius:50%; background:#e6f0d5; border:3px solid var(--yellow); }.cake-body { position:absolute; bottom:47px; left:19%; width:62%; height:100px; border-radius:10px 10px 22px 22px; background:#f3ab6c; border:3px solid #d77647; overflow:hidden; }.cake-body:before { content:""; position:absolute; left:0; right:0; top:-2px; height:28px; border-radius:50%; background:#fff1d7; border-bottom:3px solid #efad74; }.cake-stripe { position:absolute; width:11px; height:87px; background:rgba(255,255,255,.28); transform:rotate(17deg); top:20px; }.stripe-one { left:24%; }.stripe-two { left:62%; }.cake-top { position:absolute; z-index:2; bottom:135px; left:18%; width:64%; height:50px; border-radius:50%; background:#fff2d9; border:3px solid #d77647; }.icing { position:absolute; z-index:3; width:22px; height:27px; background:#fff2d9; border-radius:0 0 50% 50%; top:15px; }.icing-one { left:15%; }.icing-two { left:39%; }.icing-three { left:62%; }.icing-four { left:80%; }.cherry { position:absolute; z-index:4; width:11px; height:11px; background:var(--red); border-radius:50%; top:7px; }.cherry-one { left:30%; }.cherry-two { left:53%; }.cherry-three { left:73%; }.candle { position:absolute; z-index:5; bottom:163px; left:calc(50% - 10px); width:20px; height:82px; }.candle-body { position:absolute; bottom:0; left:3px; width:14px; height:64px; background:var(--yellow); border:2px solid #d4a900; border-radius:5px 5px 2px 2px; }.wick { position:absolute; z-index:2; bottom:62px; left:8px; width:3px; height:10px; background:#8a5f3d; }.flame { position:absolute; z-index:3; left:4px; bottom:70px; width:12px; height:19px; border-radius:70% 25% 65% 45%; background:var(--yellow); box-shadow:0 0 20px 6px rgba(255,212,71,.4); transform:rotate(8deg) scale(0); transition:transform .35s ease; }.cake-art.lit .flame { transform:rotate(8deg) scale(1); animation:flicker .7s ease-in-out infinite alternate; }.cake-spark { position:absolute; opacity:0; color:var(--yellow); font-size:28px; transition:opacity .5s .2s; }.cake-art.lit .cake-spark { opacity:1; }.cake-spark-one { left:21%; top:45px; }.cake-spark-two { right:19%; top:28px; }
.ritual-status { color:#cde0d2; font-size:12px; margin:5px 0 18px; }.button-yellow { background:var(--yellow); color:var(--green-dark); box-shadow:4px 4px 0 rgba(255,255,255,.2); }.button-yellow:hover { background:#ffe27b; }.ritual-skip { color:#cde0d2; font-size:11px; margin-top:16px; border-bottom:1px solid rgba(205,224,210,.5); }
.final-section { padding-top:120px; padding-bottom:108px; display:grid; grid-template-columns:minmax(270px,.9fr) 1.1fr; gap:72px; position:relative; }.final-photo { margin-top:35px; min-height:405px; background:var(--green-soft); transform:rotate(-3deg); position:relative; box-shadow:var(--shadow); }.final-photo:before { content:""; position:absolute; width:93%; height:93%; left:3.5%; top:3.5%; border:1px solid rgba(36,115,75,.28); }.final-photo .placeholder-art { margin:4%; width:92%; height:92%; }.final-photo .placeholder-word { font-size:25px; }.letter { position:relative; padding-top:4px; }.letter-tape { position:absolute; width:95px; height:20px; top:-21px; left:41%; background:rgba(255,212,71,.63); transform:rotate(4deg); }.letter h2 { margin-top:21px; color:var(--green); }.letter-salutation { margin:38px 0 11px; font-weight:700; }.letter-draft { display:inline-block; color:var(--red); font-family:"ZCOOL KuaiLe", cursive; font-size:13px; transform:rotate(-2deg); margin-bottom:17px; }.letter-body { max-width:490px; font-size:14px; line-height:1.9; }.letter-body p { margin-bottom:16px; }.letter-signature { margin-top:22px; color:var(--muted); font-family:"ZCOOL KuaiLe", cursive; font-size:16px; transform:rotate(-2deg); }.letter-ps { display:flex; align-items:center; gap:10px; margin-top:38px; color:var(--green); font-size:12px; }.letter-ps svg { width:25px; height:25px; color:var(--red); }.closing { grid-column:1 / -1; display:flex; justify-content:space-between; align-items:center; border-top:1px solid var(--line); padding-top:22px; margin-top:10px; color:var(--muted); font-size:12px; }.closing p { margin:0; }.site-footer { border-top:1px solid var(--line); min-height:73px; display:flex; justify-content:space-between; align-items:center; color:#8b968d; font-size:11px; }
.photo-dialog { width:min(880px, calc(100% - 32px)); max-height:calc(100% - 32px); padding:0; border:0; background:var(--paper); color:var(--ink); box-shadow:0 25px 80px rgba(7,35,22,.4); grid-template-columns:1.1fr .9fr; overflow:hidden; }.photo-dialog::backdrop { background:rgba(13,44,28,.75); backdrop-filter:blur(4px); }.photo-dialog[open] { display:grid; animation:dialog-in .35s ease both; }.dialog-close { position:absolute; z-index:2; top:10px; right:12px; width:35px; height:35px; border:0; border-radius:50%; background:var(--paper); color:var(--green); font-size:27px; line-height:1; }.dialog-photo { min-height:440px; background:var(--green-soft); }.dialog-photo .placeholder-art { height:100%; min-height:440px; }.dialog-photo img { width:100%; height:100%; display:block; object-fit:cover; }.dialog-caption { padding:65px 35px 28px; display:flex; flex-direction:column; }.dialog-position { color:var(--red); font-family:"DM Mono", monospace; font-size:11px; }.dialog-caption h2 { color:var(--green); font-size:34px; line-height:1.12; letter-spacing:-.04em; margin:20px 0 17px; }.dialog-caption p { color:var(--muted); font-size:14px; line-height:1.8; }.dialog-nav { display:flex; justify-content:space-between; margin-top:auto; padding-top:24px; }.dialog-nav .text-link { font-size:12px; }.confetti-layer { pointer-events:none; position:fixed; inset:0; z-index:20; overflow:hidden; }.confetti { position:absolute; top:-15px; width:9px; height:14px; animation:confetti-fall 1.7s ease-in forwards; }.noscript-note { margin:30px auto; padding:15px; background:var(--yellow); }
@keyframes reveal { from { opacity:0; transform:translateY(24px); } to { opacity:1; transform:none; } } @keyframes dialog-in { from { opacity:0; transform:scale(.96) translateY(10px); } to { opacity:1; transform:none; } } @keyframes flicker { from { transform:rotate(4deg) scale(1); } to { transform:rotate(-5deg) scale(1.08); } } @keyframes confetti-fall { to { transform:translate3d(var(--drift), 110vh, 0) rotate(700deg); opacity:0; } }
@media (max-width:800px) { .page-width { width:min(100% - 40px, 620px); }.site-header { min-height:65px; }.header-note { display:none; }.hero { min-height:auto; grid-template-columns:1fr; gap:20px; padding-top:62px; padding-bottom:65px; }.hero-copy { max-width:500px; }.hero-art { min-height:430px; }.ticket { width:min(510px, 100%); }.art-note { right:0; }.pitch-divider { width:calc(100% - 40px); }.section-heading { display:block; }.section-intro { margin-top:19px; }.photo-grid { gap:17px; }.photo-card { grid-column:span 6; }.photo-card:nth-child(2),.photo-card:nth-child(5) { margin-top:32px; }.ritual-inner { min-height:650px; grid-template-columns:1fr; gap:0; padding-top:75px; padding-bottom:70px; }.ritual-copy { align-self:start; }.ritual-aside { left:auto; right:4px; bottom:-50px; }.cake-stage { margin-top:20px; }.final-section { grid-template-columns:1fr; gap:55px; padding-top:90px; }.final-photo { min-height:360px; margin:0 12px; }.closing { grid-column:auto; }.site-footer { width:calc(100% - 40px); flex-direction:column; justify-content:center; gap:2px; padding:19px 0; text-align:center; }.photo-dialog { grid-template-columns:1fr; overflow:auto; max-height:calc(100% - 18px); }.dialog-photo, .dialog-photo .placeholder-art { min-height:270px; height:270px; }.dialog-caption { padding:30px 25px 23px; min-height:260px; }.dialog-caption h2 { margin-top:12px; font-size:28px; }.dialog-nav { margin-top:20px; } }
@media (max-width:440px) { h1 { font-size:58px; }.hero-description { font-size:14px; }.hero-art { min-height:374px; }.ticket { min-height:355px; grid-template-columns:1fr 67px; }.ticket-main { padding:21px 21px 18px; }.ticket-main:after { inset:9px; }.pitch-art { height:174px; margin:15px 0 11px; }.ticket-number { font-size:84px; left:22px; top:38px; }.ticket-number span { font-size:25px; }.ticket-ball { width:60px; height:60px; right:24px; top:43px; }.ticket-title { font-size:21px; }.ticket-recipient { margin-top:15px; }.ticket-recipient strong { font-size:17px; }.ticket-stub { padding:22px 10px; }.ticket-stub strong { font-size:18px; }.ticket-admit { font-size:13px; }.art-note { font-size:14px; top:-5px; }.ticket-bottom-note { font-size:13px; bottom:2px; left:3px; }.spark-one { top:27%; left:-3px; }.spark-two { right:-6px; bottom:23%; }.section-heading h2, .ritual-copy h2, .letter h2 { font-size:44px; }.photo-grid { gap:13px; }.photo-card { padding:7px 7px 10px; }.photo-meta { padding-top:8px; }.photo-meta h3 { font-size:11px; }.photo-meta span { font-size:15px; }.photo-card:before { width:48px; height:13px; top:-6px; }.album-postscript { font-size:17px; }.ritual-copy>p:not(.ritual-aside) { font-size:13px; }.cake-art { height:230px; transform:scale(.86); transform-origin:top center; margin-bottom:-33px; }.final-photo { min-height:310px; }.letter-body { font-size:13px; }.closing { display:block; }.closing p { margin-bottom:13px; } }
.final-section .final-photo { align-self:start; min-height:0; padding:12px; background:#fff; }
.final-photo:before { display:none; }
.final-photo .photo-frame { aspect-ratio:auto; }
.final-photo .photo-frame img { height:auto; object-fit:contain; }
@media (prefers-reduced-motion:reduce) { *, *:before, *:after { animation-duration:.01ms !important; animation-iteration-count:1 !important; scroll-behavior:auto !important; transition-duration:.01ms !important; } }
