@font-face{font-family:LetterSerif;src:url("assets/letter-serif-entry.woff2") format("woff2");font-style:normal;font-weight:600;font-display:swap}
:root{--red:#a3282e;--cream:#fff1d7;--gold:#f8deb1;--muted:#f6dec1;--song:LetterSerif,"Songti SC",serif;--body:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;--page-height:100svh;--bar-top:calc(58px + env(safe-area-inset-top));--bar-bottom:calc(38px + env(safe-area-inset-bottom));--gutter:28px;--gap:18px;--ease:cubic-bezier(.16,1,.3,1)}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:#651b22}body{color:var(--cream);font-family:var(--body);font-size:18px;line-height:1.6;-webkit-font-smoothing:antialiased}h1,h2,p,figure,blockquote{margin:0}h1,h2{font-family:var(--song);font-weight:600;line-height:1.45;text-wrap:balance}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer}a{color:inherit;text-underline-offset:4px}button:focus-visible,a:focus-visible,.gallery-track:focus-visible{outline:2px solid currentColor;outline-offset:3px}button:active,a:active{filter:brightness(.9)}[hidden]{display:none!important}svg,img{display:block}img{max-width:100%;image-orientation:from-image}::selection{background:var(--gold);color:#641820}
.invitation{max-width:520px;margin:0 auto;position:relative;background:var(--red);isolation:isolate}.story{position:relative;z-index:2}.scene{position:relative;min-height:100svh;background:transparent;isolation:isolate}.scene-inner{min-height:100svh;padding:calc(var(--bar-top) + 20px) var(--gutter) calc(var(--bar-bottom) + 20px);display:flex;flex-direction:column;justify-content:center;gap:var(--gap)}.scene h2{font-size:clamp(27px,7.4vw,36px)}
html.paged-document,html.paged-document body{height:100%;overflow:hidden}.js-paged{height:var(--page-height);overflow:hidden}.js-paged .story{height:100%;overflow-x:hidden;overflow-y:hidden;scroll-behavior:auto;touch-action:pan-x pinch-zoom;overscroll-behavior:none}.js-paged .scene{height:var(--page-height);min-height:0;max-height:var(--page-height);overflow:hidden}.js-paged .scene-inner{height:100%;min-height:0;padding-top:calc(var(--bar-top) + 18px);padding-bottom:calc(var(--bar-bottom) + 18px)}
.masthead{position:absolute;z-index:20;inset:0 0 auto;height:var(--bar-top);padding:env(safe-area-inset-top) 24px 0;background:var(--red);border-bottom:1px solid #f8deb133;display:flex;align-items:center;justify-content:space-between;gap:12px}.masthead-names{font-family:var(--song);font-size:16px;white-space:nowrap}.masthead-names span{margin:0 4px}.info-shortcut{display:flex;align-items:center;gap:7px;font-size:15px;min-height:44px;text-decoration:none}
.story-progress{position:absolute;z-index:20;inset:auto 0 0;height:var(--bar-bottom);padding:6px 24px calc(6px + env(safe-area-inset-bottom));display:flex;align-items:center;justify-content:space-between;gap:10px;background:var(--red);font-size:12px;color:var(--muted);line-height:1.4;pointer-events:none}.progress-line{position:absolute;inset:0 24px auto;height:1px;background:#f8deb144}.progress-line span{display:block;width:5.882%;height:2px;background:var(--gold);transition:width .4s var(--ease)}#page-number{font-variant-numeric:tabular-nums}
/* Cover and the identical pair of paper leaves used during the first flip. */
.cover .scene-inner{text-align:center}.cover-content{position:relative;text-align:center;width:100%;padding:12px 0}.cover-content::before,.cover-content::after{content:"";position:absolute;left:-6px;right:-6px;height:22px;border:1px solid #f8deb199;pointer-events:none}.cover-content::before{top:0;border-bottom:0}.cover-content::after{bottom:0;border-top:0}.cover-seal{font-family:var(--song);font-size:54px;line-height:1.1;color:var(--gold);margin-bottom:21px}.cover h1{font-size:clamp(34px,9.8vw,49px);line-height:1.45;letter-spacing:.04em}.cover-message{font-size:18px;margin-top:16px}.cover-signature{font-family:var(--song);font-size:27px;margin-top:25px}.cover-signature span{font-size:18px;margin:0 9px;color:var(--gold)}.cover-date{font-size:19px;margin-top:22px;font-variant-numeric:tabular-nums}.cover-date p{font-size:16px;color:var(--muted);margin-top:3px}.cover-venue{font-size:15px;color:var(--muted);margin-top:11px}.gesture-hint{display:flex;align-items:center;justify-content:center;gap:8px;color:var(--gold);font-size:15px;margin-top:22px}.gesture-hint svg{width:18px;height:26px;fill:none;stroke:currentColor;stroke-width:1.4}
/* Archive artwork selectors do not match the small action icons. */
.record-fragment{background:white;padding:9px 8px;box-shadow:0 8px 20px #58182022}.record-fragment>svg{width:100%;height:auto}.memories h2{font-size:32px;line-height:1.35}.record-quote{font-family:var(--song);font-size:clamp(19px,5.8vw,25px);line-height:1.5;color:var(--gold);margin-top:4px}.record-quote-line{display:block;white-space:nowrap}.record-quote cite{display:block;font:14px/1.5 var(--body);color:var(--muted);margin-top:6px}.archive-preview{display:flex;align-items:center;justify-content:flex-start;gap:9px;min-height:44px;padding:5px 0;background:none;border:0;color:var(--cream);font-size:15px;flex:0 0 auto;align-self:flex-start}.announcement-heading{flex:0 0 auto}.announcement-heading time{display:block;font-size:18px;line-height:1.5;color:var(--gold);margin-bottom:8px}.original-announcement h2{font-size:28px;line-height:1.4}.original-post{background:#fff;color:#302c29;padding:16px 15px;box-shadow:0 10px 26px #55141d26;flex:0 0 auto}.original-post>figure>svg,.reply-picture>svg{width:100%;height:auto}.original-author{width:64%;margin-bottom:9px}.original-words{margin-bottom:12px}.original-birds{margin:0 4px 13px}.original-reply{background:#f3f3f3;padding:6px 4px 0}.reply-picture{position:relative}.reply-picture::after{content:"";position:absolute;left:13%;top:88%;width:16%;height:2px;background:var(--red);transform:scaleX(0);transform-origin:left center}.original-reply figcaption{font-size:12px;line-height:1.4;color:#68594d;background:#fff;margin:6px -4px 0;padding-top:7px;text-align:right}
.letter-content{width:100%}.letter-source{font-size:22px;line-height:1.5;color:var(--gold);margin-bottom:23px}.letter-scene h2{font-size:clamp(22px,6vw,30px);line-height:1.8}.written-line{display:block}.handwriting{padding:21px 14px 15px;background:#fffaf1;color:#665d53;margin:30px 0 0;transform:rotate(-1deg);box-shadow:0 10px 25px #55141d33}.handwriting>svg{width:100%;height:auto}.handwriting figcaption{font:13px/1.5 var(--body);text-align:right;margin-top:9px}.letter-answer{font:27px/1.6 var(--song);color:var(--gold);margin-top:35px}
/* Photo regions consume the space left by their heading and caption. */
.photo-caption{flex:0 0 auto}.photo-caption p{font-size:16px;line-height:1.5;color:var(--muted);margin-top:9px}.photo-stage{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:0;width:100%;flex:1 1 0}.photo-stage>svg,.photo-stage>img{flex:1 1 0;min-height:0;width:100%;height:0;object-fit:contain}.photo-stage figcaption{font-size:16px;line-height:1.5;color:var(--muted);padding-top:12px;text-align:center;flex:0 0 auto}.scene-note{font-size:17px;line-height:1.5;color:var(--muted);flex:0 0 auto}.photo-gallery{width:calc(100% + var(--gutter)*2);margin-left:calc(var(--gutter)*-1);min-height:0;flex:1 1 0;display:flex;flex-direction:column;gap:8px;text-align:left}.gallery-track{position:relative;min-height:0;flex:1 1 0;display:flex;align-items:stretch;gap:14px;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;scroll-padding-inline:var(--gutter);padding:4px var(--gutter) 0;scrollbar-width:none;overscroll-behavior-x:contain;touch-action:pan-x pinch-zoom}.gallery-track::-webkit-scrollbar{display:none}.gallery-slide{position:relative;flex:0 0 calc(100% - 20px);min-width:0;min-height:0;display:flex;flex-direction:column;gap:10px;scroll-snap-align:start}.gallery-art{position:relative;flex:1 1 0;min-height:0;display:flex;align-items:center;justify-content:center;width:100%;overflow:hidden;border:1px solid #f8deb166}.gallery-art>svg,.gallery-art>img{width:100%;height:100%;object-fit:cover}.gallery-slide figcaption{flex:0 0 auto;font-size:16px;line-height:1.5;color:var(--muted);min-height:24px}.gallery-meta{display:flex;align-items:center;justify-content:space-between;gap:10px;flex:0 0 24px;padding:0 var(--gutter);font-size:14px;color:var(--gold);line-height:1.4}.gallery-hint{display:flex;align-items:center;gap:6px}.gallery-hint>svg{width:22px;height:16px;fill:none;stroke:currentColor;stroke-width:1.3;stroke-linecap:round;stroke-linejoin:round}.gallery-count{font-variant-numeric:tabular-nums;white-space:nowrap}.pinecones-scene .gallery-slide:first-child .gallery-art{border-radius:50%;flex:0 1 auto;aspect-ratio:1}.pinecones-scene .gallery-slide:first-child .gallery-art>svg{border-radius:50%}.polaroid-frame{transform:rotate(-2deg)}.together-frame{transform:rotate(2deg)}.joy-stroke,.play-sparkles,.dinner-steam{display:none}.lake-ripples{width:70%;height:20px;align-self:center;fill:none;stroke:var(--gold);stroke-width:1.3;flex:0 0 20px}
.red-wedding .scene-inner{justify-content:flex-start;position:relative;z-index:2}.red-portrait{position:absolute;bottom:0;left:0;width:100%;height:auto;z-index:0;max-height:calc(var(--page-height) - var(--bar-top));pointer-events:none}.red-wedding-title h2{font-size:clamp(32px,9vw,44px);line-height:1.45}.wedding-seal{font:43px/1.2 var(--song);color:var(--gold);align-self:flex-end;border:1px solid var(--gold);padding:4px 7px;margin-top:8px}
/* One photograph travels between two complete, independently fitted pages. */
.photo-slot{width:100%;height:clamp(125px,27svh,210px);flex:0 0 auto}.family-scene .photo-caption h2{font-size:clamp(23px,6.4vw,31px);line-height:1.5}.family-note{font:25px/1.5 var(--song);color:var(--gold);text-align:center}.final-swipe-hint{font-size:15px;text-align:center;color:var(--muted);line-height:1.5}.family-portrait{position:relative;margin:20px 16px;background:var(--red);border:1px solid var(--gold);padding:4px;z-index:4}.family-portrait>svg{width:100%;height:100%}.js-paged .family-portrait{position:absolute;margin:0;visibility:hidden;opacity:0;pointer-events:none;overflow:hidden}.js-paged[data-active="family"] .family-portrait,.js-paged[data-active="invite"] .family-portrait{visibility:visible}.invite-photo-space{height:clamp(112px,18svh,165px)}.invitation-scene .scene-inner{gap:13px}.invite-content{display:flex;flex-direction:column;gap:9px;text-align:center;flex:0 0 auto}.invite-content .invite-names{font-size:27px;line-height:1.35}.invite-names span{font-size:18px;margin:0 8px;color:var(--gold)}.invite-description{font-size:16px;line-height:1.4;color:var(--muted)}#invite-details{display:flex;flex-direction:column;gap:10px}.date-block{border-block:1px solid #f8deb170;padding:10px 0;font-size:18px;line-height:1.4;font-variant-numeric:tabular-nums}.date-block time{font:33px/1.3 var(--song);white-space:nowrap}.date-block time span{font-size:17px;margin:0 3px}.date-block .lunar-date{font-size:18px;line-height:1.45;color:var(--gold);margin-top:4px}.date-block strong{font-weight:600}.venue-block{font-size:17px;line-height:1.4}.venue-name{font:26px/1.4 var(--song)}.parents-signature{font:20px/1.4 var(--song);color:var(--gold)}.invite-close{font-size:15px;line-height:1.5;color:var(--muted)}.copy-info{align-self:center;display:flex;align-items:center;justify-content:center;gap:8px;border:1px solid #f8deb199;min-height:44px;padding:7px 17px;background:var(--red);color:var(--cream);font-size:16px;line-height:1.4}.copy-status{font-size:13px;line-height:1.5;min-height:20px;color:var(--gold)}#invite-end{display:none}
/* Every page has its own celebration behind the readable foreground. */
#celebration{display:none;position:absolute;inset:0;width:100%;height:100%;z-index:1;pointer-events:none}.js-paged #celebration{display:block}.motion-step{opacity:1;transform:none}.js-motion .is-armed:not(.is-playing):not(.is-complete) .motion-step{opacity:0;transform:translateY(12px)}.js-motion .is-playing .motion-step{animation:reveal .55s var(--ease) var(--step-delay,0ms) both}.js-motion .is-playing .handwriting{animation-name:paper-reveal;animation-duration:.75s}.js-motion .is-playing .reply-picture::after{animation:underline .45s var(--ease) 1.9s both}.js-motion .is-complete .motion-step{animation:none!important;opacity:1!important;transform:none!important;clip-path:none!important}.js-motion .is-complete .reply-picture::after{transform:scaleX(1)}.js-motion .is-playing .polaroid-frame{animation:photo-land .9s var(--ease) .3s both}.js-motion .is-playing .wedding-seal{animation:stamp .7s var(--ease) .5s both}.js-motion .is-playing .lake-ripples{animation:ripple 2.4s ease-in-out 2}
@keyframes reveal{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}@keyframes paper-reveal{from{opacity:0;clip-path:inset(0 100% 0 0);transform:translateY(8px) rotate(-1deg)}to{opacity:1;clip-path:inset(0);transform:rotate(-1deg)}}@keyframes underline{to{transform:scaleX(1)}}@keyframes photo-land{from{opacity:0;transform:translateY(26px) rotate(5deg)}to{opacity:1;transform:rotate(-2deg)}}@keyframes stamp{from{opacity:0;transform:scale(1.18) rotate(-5deg)}to{opacity:1;transform:none}}@keyframes ripple{0%,100%{opacity:.4;transform:translateX(-6px)}50%{opacity:.9;transform:translateX(6px)}}
.image-viewer{padding:0;border:1px solid var(--gold);max-width:min(94vw,560px);max-height:94svh;background:#fffaf2;color:#352d29}.image-viewer::backdrop{background:#290c15dd}.image-viewer form{position:sticky;top:0;margin:0;background:var(--red);z-index:1}.viewer-close{display:flex;justify-content:space-between;align-items:center;gap:15px;width:100%;min-height:48px;padding:9px 17px;border:0;background:none;color:var(--cream);font-size:16px}.image-viewer img{width:100%;height:auto}.image-error{position:absolute;inset:0;z-index:8;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:10px;padding:10px;background:var(--red);color:var(--cream);font-size:15px;line-height:1.5;text-align:center;pointer-events:auto}.image-error button{border:1px solid var(--gold);color:inherit;background:transparent;min-height:44px;padding:6px 15px}.gallery-art,.photo-stage,.record-fragment,.original-post>figure{position:relative}
/* Explicit icon boundary: artwork rules must never size these SVGs. */
button>svg,a>svg{width:18px;height:18px;min-width:18px;max-width:18px;max-height:18px;flex:0 0 18px;fill:none;stroke:currentColor;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round}
@media(min-width:600px){:root{--gutter:34px}.cover h1{font-size:46px}}
@media(max-height:730px){:root{--bar-top:calc(48px + env(safe-area-inset-top));--bar-bottom:calc(30px + env(safe-area-inset-bottom));--gap:11px;--gutter:22px}.js-paged .scene-inner{padding-top:calc(var(--bar-top) + 11px);padding-bottom:calc(var(--bar-bottom) + 11px)}.scene h2{font-size:25px;line-height:1.35}.cover-seal{font-size:38px;margin-bottom:14px}.cover h1{font-size:33px;line-height:1.4}.cover-message{font-size:16px;margin-top:11px}.cover-signature{font-size:24px;margin-top:16px}.cover-date{font-size:18px;margin-top:15px}.cover-date p{font-size:15px}.cover-venue{font-size:14px;margin-top:8px}.gesture-hint{margin-top:15px;font-size:14px}.cover-content{padding:10px 0}.memories h2{font-size:24px;line-height:1.35}.record-fragment{padding:6px 7px}.record-quote{width:min(100%,320px);align-self:center;font-size:clamp(19px,5.8vw,22px);line-height:1.5}.memories .archive-preview{width:min(100%,320px);align-self:center}.record-quote cite{font-size:13px;line-height:1.5;margin-top:6px}.archive-preview{font-size:14px;min-height:44px;padding:4px 0}.announcement-heading time{font-size:17px;line-height:1.4;margin-bottom:6px}.original-announcement h2{font-size:24px;line-height:1.35}.original-post{padding:10px 12px}.original-author{width:57%;margin-bottom:7px}.original-words{margin-bottom:7px}.original-birds{margin:0 3px 8px}.original-reply{padding:5px 3px 0}.original-reply figcaption{font-size:11px;line-height:1.3;margin:5px -3px 0;padding-top:5px}.letter-source{font-size:20px;margin-bottom:19px}.letter-scene h2{font-size:21px;line-height:1.75}.handwriting{margin-top:24px;padding:16px 12px 12px}.letter-answer{font-size:24px;line-height:1.5;margin-top:26px}.photo-caption p{font-size:15px;margin-top:7px}.scene-note{font-size:16px}.gallery-slide{gap:7px}.gallery-slide figcaption{font-size:15px;line-height:1.4}.gallery-meta{font-size:13px;flex-basis:22px}.photo-stage figcaption{font-size:14px;padding-top:8px}.red-wedding-title h2{font-size:32px;line-height:1.4}.wedding-seal{font-size:32px;margin-top:0}.family-scene .photo-caption h2{font-size:23px;line-height:1.5}.family-note{font-size:22px;line-height:1.5}.photo-slot{height:clamp(125px,25svh,170px)}.invite-photo-space{height:clamp(82px,15svh,110px)}.invitation-scene .scene-inner{gap:10px}.invite-content{gap:6px}.invite-content .invite-names{font-size:25px;line-height:1.35}.invite-description,.invite-close{display:none}#invite-details{gap:7px}.date-block{padding:6px 0;font-size:17px;line-height:1.4}.date-block time{font-size:29px;line-height:1.3}.date-block .lunar-date{font-size:17px;margin-top:2px}.venue-block{font-size:16px}.venue-name{font-size:24px}.parents-signature{font-size:17px;line-height:1.4}.copy-info{font-size:15px;padding:5px 14px;min-height:44px}.copy-status{font-size:12px;min-height:18px}}
@media(max-width:350px){:root{--gutter:20px}.masthead{padding-left:18px;padding-right:18px}.masthead-names,.info-shortcut{font-size:14px}.story-progress{padding-left:19px;padding-right:19px;font-size:11px}.original-announcement h2{font-size:23px}.gallery-slide{flex-basis:calc(100% - 16px)}.family-scene .photo-caption h2{font-size:22px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}.motion-step,.js-motion .is-armed .motion-step{opacity:1!important;transform:none!important;clip-path:none!important}#celebration{display:none!important}.reply-picture::after{transform:scaleX(1)}}
@media(max-height:730px){.original-post{width:min(100%,300px);align-self:center}.pinecones-scene .gallery-slide:first-child .gallery-art{width:min(100%,calc(var(--page-height) - 300px));align-self:center;flex:0 0 auto}}
.invitation:not(.js-paged) .photo-stage>svg,.invitation:not(.js-paged) .photo-stage>img{height:auto;flex:none;max-height:none}
.invitation:not(.js-paged) .gallery-track{height:400px;flex:none}
.invitation:not(.js-paged) .photo-slot{display:none}
/* The archive is fitted as a composition; its four artwork rows can shrink,
   while the action remains a separate 44px control. */
.original-post{flex:1 1 0;min-height:0;max-height:470px;display:grid;grid-template-rows:minmax(0,.12fr) minmax(0,.43fr) minmax(0,.14fr) minmax(0,.31fr);gap:8px;width:100%}
.original-post>figure{min-height:0;margin:0;display:flex;flex-direction:column}
.original-post>figure>svg{height:0;min-height:0;flex:1 1 0;width:100%}
.original-post>.original-author{width:64%}
.original-reply>.reply-picture{min-height:0;flex:1 1 0}
.reply-picture>svg{height:100%;min-height:0}
.original-reply>figcaption{flex:0 0 auto}
@media(max-height:730px){.original-post{width:min(100%,300px);gap:7px;max-height:340px}.record-fragment{width:min(100%,320px);align-self:center}}
/* Match the full six-person crop's 1400:600 ratio on the family page.
   The shorter invite banner crops vertically, never across the two end faces. */
:root{--family-natural-height:calc((min(100vw,520px) - var(--gutter)*2 - 10px)*.4285714286 + 10px)}
.family-photo-space{height:var(--family-natural-height)}
.invite-photo-space{height:min(165px,18svh,var(--family-natural-height))}
@media(max-height:730px){.invite-photo-space{height:min(110px,15svh,var(--family-natural-height))}}
/* Focused refinements: the front photographs move inside their frames,
   so the horizontal track and swipe targets retain their original geometry. */
.js-motion #early.is-playing .gallery-art>img,.js-motion #early.is-playing .gallery-art>svg{transform-origin:50% 50%;animation:front-photo-early .95s var(--ease) .32s both}
.js-motion #flowers-her.is-playing .gallery-art>svg{transform-origin:50% 50%;animation:front-photo-her 1s var(--ease) .32s both}
.js-motion #flowers-him.is-playing .gallery-art>svg{transform-origin:50% 50%;animation:front-photo-him .98s var(--ease) .32s both}
@keyframes front-photo-early{from{opacity:.45;transform:translateY(12px) scale(1.06)}to{opacity:1;transform:none}}
@keyframes front-photo-her{from{opacity:.55;transform:translateY(22px) rotate(-1.2deg) scale(.975)}to{opacity:1;transform:none}}
@keyframes front-photo-him{0%{opacity:.55;transform:translateY(25px) rotate(1.2deg) scale(.98)}70%{opacity:1;transform:translateY(-3px) rotate(-.2deg)}100%{opacity:1;transform:none}}
.pinecones-scene .gallery-slide:first-child{justify-content:center;align-items:center;gap:clamp(12px,1.8svh,20px)}
.pinecones-scene .gallery-slide:first-child>figcaption{width:100%;min-height:0;text-align:center;padding-inline:6px}
/* Persistent music control shares the header, outside the page/album gestures. */
.masthead-actions{display:flex;align-items:center;gap:6px;margin-left:auto;flex:0 0 auto;white-space:nowrap}
.music-toggle{display:inline-flex;align-items:center;justify-content:center;gap:4px;min-height:44px;min-width:80px;padding:0 5px;border:1px solid #f8deb180;border-radius:22px;background:transparent;color:var(--cream);font:12px/1.3 var(--body);white-space:nowrap}
.music-toggle .music-slash{stroke:var(--gold);stroke-width:1.8}
.music-toggle[data-state="playing"] .music-slash,.music-toggle[data-state="loading"] .music-slash{opacity:0}
.music-toggle[data-state="playing"] .music-icon{animation:music-note-breathe 1.8s ease-in-out infinite}
.music-status{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
@keyframes music-note-breathe{0%,100%{transform:scale(.95)}50%{transform:scale(1.08)}}
@media(max-width:350px){.masthead{gap:6px}}

/* Names use one screen-space size; story.js compensates for each SVG crop scale. */
:root{--wechat-name-size:20px}
.wechat-name{font-family:var(--body);font-weight:500}

/* A formal envelope precedes the existing seventeen-page story. */
.entry-envelope{position:absolute;inset:0;z-index:30;overflow:hidden;isolation:isolate}
.entry-open{appearance:none;-webkit-appearance:none;border-radius:0;position:relative;display:flex;align-items:center;justify-content:center;width:100%;height:100%;padding:max(28px,env(safe-area-inset-top)) 28px max(28px,env(safe-area-inset-bottom));border:0;background:none;color:var(--cream);text-align:center;perspective:1100px;touch-action:manipulation}
.entry-open:active{filter:none}.entry-open:disabled{opacity:1;cursor:default}
.entry-open:focus-visible{outline:2px solid var(--cream);outline-offset:-12px}
.entry-leaf{position:absolute;top:0;bottom:0;width:50%;background:var(--red);backface-visibility:hidden}
.entry-leaf-left{left:0;transform-origin:left center}
.entry-leaf-right{right:0;transform-origin:right center}
.entry-leaf::before{content:"";position:absolute;top:24px;bottom:24px;border:1px solid #f8deb180}
.entry-leaf-left::before{left:24px;right:0;border-right:0}
.entry-leaf-right::before{left:0;right:24px;border-left:0}
.entry-leaf-left::after{content:"";position:absolute;top:24px;bottom:24px;right:0;width:1px;background:#f8deb14d}
.entry-front{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;width:100%;max-width:380px;padding:24px 8px;background:var(--red)}
.entry-recipient{font:42px/1.6 var(--song);letter-spacing:.08em}
.entry-respect{display:block;margin-bottom:16px;font-size:20px;line-height:1.6;letter-spacing:.24em;color:var(--gold)}
.entry-message{margin-top:22px;font:18px/1.7 var(--body);color:var(--muted)}
.entry-seal{display:flex;align-items:center;justify-content:center;width:80px;height:86px;margin:28px 0 24px;border:1px solid var(--gold);font:50px/1.2 var(--song);color:var(--gold);transition:background-color .16s ease,color .16s ease,transform .16s ease}
.entry-cta{font:25px/1.6 var(--song);letter-spacing:.16em}
.entry-note{margin-top:8px;font:14px/1.6 var(--body);color:var(--muted)}
.entry-signature{margin-top:40px;font:19px/1.6 var(--song);color:var(--gold)}
.js-paged[data-entry="sealed"] .story,.js-paged[data-entry="sealed"] .masthead,.js-paged[data-entry="sealed"] .story-progress{opacity:0;visibility:hidden}
.js-paged[data-entry="opening"] .story,.js-paged[data-entry="opening"] .masthead,.js-paged[data-entry="opening"] .story-progress{animation:entry-content-reveal .65s var(--ease) .25s both}
[data-entry="opening"] .entry-front{animation:entry-front-recede .28s ease .08s both}
[data-entry="opening"] .entry-seal{background:var(--gold);color:var(--red);transform:scale(1.04)}
[data-entry="opening"] .entry-leaf-left{animation:entry-unfold-left .85s var(--ease) .1s both}
[data-entry="opening"] .entry-leaf-right{animation:entry-unfold-right .85s var(--ease) .1s both}
@keyframes entry-front-recede{to{opacity:0;transform:translateY(-6px)}}
@keyframes entry-unfold-left{to{transform:rotateY(-105deg)}}
@keyframes entry-unfold-right{to{transform:rotateY(105deg)}}
@keyframes entry-content-reveal{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
@media(max-height:730px){.entry-open{padding:max(20px,env(safe-area-inset-top)) 20px max(20px,env(safe-area-inset-bottom))}.entry-front{padding:14px 8px}.entry-recipient{font-size:33px;line-height:1.5}.entry-respect{font-size:18px;margin-bottom:12px}.entry-message{font-size:16px;margin-top:16px}.entry-seal{width:68px;height:72px;font-size:43px;margin:20px 0 16px}.entry-cta{font-size:22px;line-height:1.5}.entry-note{font-size:13px}.entry-signature{font-size:17px;margin-top:26px}.entry-leaf::before,.entry-leaf-left::after{top:18px;bottom:18px}.entry-leaf-left::before{left:18px}.entry-leaf-right::before{right:18px}}
