:root{--cream:#F0E9D3;--mahogany:#321402;--line:rgb(50 20 2 / .23);--ink-line:rgb(50 20 2 / .22);--serif:Georgia,'Times New Roman',serif;--hand:'Segoe Print','Bradley Hand',cursive}
*{box-sizing:border-box}html{background:var(--cream);color:var(--mahogany);scroll-behavior:smooth}body{margin:0;font-family:Arial,Helvetica,sans-serif;font-size:15px;line-height:1.6}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer}button,a{touch-action:manipulation}button{color:inherit}button:focus-visible,a:focus-visible{outline:2px solid currentColor;outline-offset:6px}h1:focus,h2:focus{outline:none}button:disabled{cursor:default}[hidden]{display:none!important}p,h1,h2,figure,dl,dd{margin:0}button{border:0}img{display:block;max-width:100%;height:auto;object-fit:cover}button svg{pointer-events:none}.gift{width:min(100%,1440px);min-height:100vh;min-height:100svh;margin:auto;padding:0 clamp(20px,5vw,76px);display:flex;flex-direction:column;position:relative;isolation:isolate}.gift:before{content:'';position:absolute;inset:0;z-index:-1;pointer-events:none;opacity:.13;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.76' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Cpath fill='%23321402' opacity='.38' filter='url(%23n)' d='M0 0h180v180H0z'/%3E%3C/svg%3E")}.masthead{min-height:115px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:20px}.wordmark{font-family:var(--serif);font-size:36px;line-height:1;text-decoration:none;color:var(--mahogany);letter-spacing:-1.5px}.wordmark-line{font-family:Arial,sans-serif;display:block;font-size:10px;letter-spacing:2px;margin-top:8px}.dedication{font-size:12px;letter-spacing:.5px}.dedication span{font-family:var(--serif);font-style:italic;font-size:23px;margin-left:8px}.music-control{border:1px solid var(--line);border-radius:30px;background:transparent;display:flex;align-items:center;gap:10px;min-height:44px;padding:8px 17px;font-size:11px}.sound-bars{display:flex;height:14px;align-items:center;gap:3px}.sound-bars i{width:2px;height:5px;background:var(--mahogany);border-radius:2px}.sound-bars i:nth-child(2){height:13px}.sound-bars i:nth-child(3){height:9px}.music-control[aria-pressed=true] i{animation:equalize .9s ease-in-out infinite alternate}.sound-bars i:nth-child(2){animation-delay:-.4s}.sound-bars i:nth-child(3){animation-delay:-.6s}.sound-bars i:nth-child(4){animation-delay:-.2s}@keyframes equalize{to{transform:scaleY(.35)}}main{flex:1;min-width:0;width:100%}.scene{padding:52px 0 40px;min-height:620px;animation:scene-in .55s ease both}@keyframes scene-in{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.eyebrow{font-size:10px;letter-spacing:2px;text-transform:none;margin-bottom:21px}h1,h2{font-family:var(--serif);font-weight:400;letter-spacing:-3.5px;line-height:.99}h1{font-size:clamp(62px,6.7vw,99px);max-width:690px}h1 em,h2 em{font-weight:400}h2{font-size:clamp(49px,5vw,72px)}.handwritten{font-family:var(--hand);font-style:italic;font-weight:400}.scene-opening{display:grid;grid-template-columns:1.15fr 1fr;align-items:center;gap:60px}.opening-copy{padding:2px 0 16px}.intro{font-size:14px;line-height:1.9;margin:25px 0 27px;opacity:.8}.button{min-height:51px;padding:13px 25px;display:inline-flex;justify-content:center;align-items:center;gap:30px;font-size:12px}.button-primary{background:var(--mahogany);color:var(--cream)}.button:hover{transform:translateY(-2px)}.arrow{display:inline-block;width:24px;height:1px;background:currentColor;position:relative;flex-shrink:0}.arrow:after{content:'';position:absolute;right:0;top:-3px;width:6px;height:6px;border-top:1px solid;border-right:1px solid;transform:rotate(45deg)}.arrow-back{transform:rotate(180deg)}.opening-signature{font-size:18px;opacity:.8;margin-top:25px}.opening-photo{position:relative;max-width:440px;width:90%;justify-self:center;padding:24px 15px}.hero-polaroid{position:relative;background:var(--cream);color:var(--mahogany);padding:14px 14px 20px;transform:rotate(5deg);box-shadow:12px 20px 40px rgb(50 20 2 / .25)}.hero-polaroid img{width:100%;aspect-ratio:4/5;filter:sepia(.15)}.hero-polaroid figcaption{font-family:var(--hand);font-size:16px;text-align:center;padding-top:18px;font-style:italic}.tape{position:absolute;z-index:2;top:-13px;left:35%;width:90px;height:29px;transform:rotate(-8deg);background:rgb(240 233 211 / .6);border-inline:1px solid rgb(50 20 2 / .08);box-shadow:0 1px 4px rgb(50 20 2 / .08)}.photo-note{position:absolute;right:-20px;top:-4px;z-index:3;font-size:19px;transform:rotate(8deg)}.flower-sketch{position:absolute;width:92px;height:150px;bottom:-14px;left:-48px;stroke:var(--mahogany);stroke-width:1.3;transform:rotate(-18deg)}.navigation{min-height:92px;border-top:1px solid var(--line);display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:20px;padding:15px 0}.back-control,.next-control{background:transparent;display:flex;align-items:center;gap:15px;min-height:44px;font-size:12px;padding:8px 0}.back-control{justify-self:start;grid-column:1;grid-row:1}.next-control{justify-self:end;grid-column:3;grid-row:1}.page-progress{grid-column:2;grid-row:1;display:flex;align-items:center;gap:22px}.page-count{font-family:var(--serif);font-size:19px;white-space:nowrap}.page-count span{opacity:.5;font-size:13px;padding-left:5px}.page-dots{display:flex;gap:7px}.page-dots button{min-width:24px;height:44px;background:transparent;padding:0;position:relative}.page-dots button:before{content:'';position:absolute;left:0;right:0;top:21px;height:2px;background:var(--line);transition:background .2s}.page-dots button[aria-current=step]:before{background:var(--mahogany)}.scene-heading{text-align:center}.scene-heading>p:last-child{margin-top:20px;font-size:13px;opacity:.8}.note-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-auto-flow:dense;gap:18px;margin:44px auto 0;max-width:1150px}.adore-note{position:relative;min-height:240px;background:var(--cream);color:var(--mahogany);padding:23px;text-align:left;box-shadow:3px 7px 14px rgb(50 20 2 / .15);transition:transform .25s}.adore-note:nth-child(1){transform:rotate(-3deg)}.adore-note:nth-child(2){transform:rotate(2deg)}.adore-note:nth-child(3){transform:rotate(-1.5deg)}.adore-note:nth-child(4){transform:rotate(3deg)}.adore-note:hover,.adore-note[aria-expanded=true]{transform:translateY(-7px) rotate(0)}.note-top{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--ink-line);padding-bottom:14px;margin-bottom:21px;gap:8px}.note-number{font-family:var(--serif);font-style:italic;font-size:17px}.note-action{font-size:9px;letter-spacing:.4px}.note-title{display:block;font-family:var(--serif);font-size:27px;line-height:1.15;letter-spacing:-.6px}.note-drawing{display:block;margin:16px auto 0;width:76px;height:64px;stroke:var(--mahogany);stroke-width:1.3;fill:none}.note-message{display:block;font-size:13px;line-height:1.7;margin-top:19px;animation:scene-in .3s ease}.adore-note[aria-expanded=true] .note-drawing{display:none}.scene-aside{font-size:19px;text-align:center;margin-top:38px;opacity:.8}.scene-ratings{display:grid;grid-template-columns:.8fr 1.2fr;align-items:center;gap:70px}.rating-intro>p:not(.eyebrow){font-size:14px;opacity:.8;margin-top:25px}.rating-signature{font-size:20px;transform:rotate(-5deg);margin-top:40px}.rating-paper{background:var(--cream);color:var(--mahogany);padding:32px 37px;transform:rotate(1.5deg);box-shadow:10px 15px 35px rgb(50 20 2 / .2);position:relative}.rating-paper:before{content:'';position:absolute;left:0;top:0;bottom:0;width:6px;background:repeating-linear-gradient(to bottom,var(--mahogany) 0 2px,transparent 2px 14px);opacity:.3}.paper-heading{display:flex;justify-content:space-between;gap:20px;border-bottom:1px solid var(--ink-line);padding-bottom:20px}.paper-heading span:first-child{font-family:var(--serif);font-size:20px}.paper-heading span:last-child{font-size:9px;max-width:100px;text-align:right;align-self:center}.ratings>div{display:grid;grid-template-columns:1fr 1.2fr;gap:25px;border-bottom:1px solid var(--ink-line);padding:22px 0;align-items:center}.ratings dt{font-size:11px}.ratings dd{font-family:var(--hand);font-size:18px;font-style:italic;line-height:1.4}.paper-verdict{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-top:25px}.paper-verdict>span:first-child{font-size:10px}.paper-verdict .handwritten{font-size:23px;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:6px}.scene-gallery{padding-top:38px}.scene-gallery h2{font-size:clamp(48px,4.6vw,66px)}.gallery{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:17px;max-width:1110px;margin:40px auto 0;padding:12px 8px}.gallery-photo{min-width:0;position:relative;padding:11px 11px 14px;background:var(--cream);color:var(--mahogany);box-shadow:5px 8px 20px rgb(50 20 2 / .2);transition:transform .25s;align-self:start}.gallery-photo:nth-child(1){transform:rotate(-5deg);margin-top:10px}.gallery-photo:nth-child(2){transform:rotate(3deg);margin-top:30px}.gallery-photo:nth-child(3){transform:rotate(-3deg)}.gallery-photo:nth-child(4){transform:rotate(5deg);margin-top:20px}.gallery-photo:hover,.gallery-photo:focus-visible{transform:translateY(-8px) rotate(0);z-index:3}.gallery-photo img{width:100%;aspect-ratio:5/6}.photo-caption{display:block;font-family:var(--hand);font-style:italic;font-size:14px;line-height:1.6;text-align:center;padding-top:12px;min-height:56px}.photo-index{display:block;font-size:8px;letter-spacing:2px;opacity:.6;margin-top:8px}.photo-dialog{background:var(--cream);color:var(--mahogany);border:0;padding:18px;width:min(480px,calc(100% - 32px));max-height:calc(100vh - 32px);max-height:calc(100dvh - 32px);box-shadow:0 20px 80px rgb(50 20 2 / .4);overflow:auto}.photo-dialog::backdrop{background:rgb(50 20 2 / .88);backdrop-filter:blur(5px)}.dialog-close{display:flex;justify-content:space-between;align-items:center;gap:24px;min-height:44px;background:none;width:100%;padding:0 0 10px;font-size:12px}.dialog-close span{font-size:27px}.photo-dialog img{width:100%;height:auto;max-height:60dvh;object-fit:contain;background:rgb(50 20 2 / .06)}.photo-dialog p{font-family:var(--hand);font-style:italic;font-size:19px;line-height:1.5;text-align:center;padding:16px 6px 4px}.scene-letter{min-height:620px;padding-top:38px}.letter-wrap{max-width:660px;margin:40px auto 0;position:relative}.envelope{position:relative;display:block;background:var(--cream);color:var(--mahogany);width:min(100%,490px);aspect-ratio:1.65;margin:55px auto 0;border:1px solid var(--ink-line);box-shadow:0 15px 40px rgb(50 20 2 / .22);transform:rotate(-3deg);transition:transform .35s}.envelope:hover{transform:translateY(-5px) rotate(-1deg)}.envelope-flap{position:absolute;inset:0;clip-path:polygon(0 0,100% 0,50% 60%);background:var(--cream);filter:brightness(.92);transform-origin:top;transition:transform .4s}.envelope-front{position:absolute;inset:0;background:var(--cream);clip-path:polygon(0 0,50% 60%,100% 0,100% 100%,0 100%);filter:brightness(.97)}.envelope-address{position:absolute;left:0;right:0;bottom:22px;font-family:var(--serif);font-size:27px;line-height:1.4}.envelope-address .handwritten{display:block;font-size:15px}.envelope-seal{position:absolute;left:calc(50% - 23px);top:calc(50% - 18px);background:var(--mahogany);color:var(--cream);border:3px double var(--cream);border-radius:50%;width:46px;height:46px;line-height:38px;font-family:var(--serif);font-style:italic;font-size:26px}.letter-wrap.is-opening .envelope-flap{transform:rotateX(180deg)}.letter-wrap.is-opening .envelope-seal{opacity:0}.love-letter{background:var(--cream);color:var(--mahogany);padding:28px 38px 32px;position:relative;box-shadow:0 12px 40px rgb(50 20 2 / .2);animation:letter-in .5s ease both;background-image:repeating-linear-gradient(transparent 0,transparent 31px,rgb(50 20 2 / .025) 31px,rgb(50 20 2 / .025) 32px)}@keyframes letter-in{from{opacity:0;transform:translateY(25px) rotate(-2deg)}to{opacity:1;transform:translateY(0) rotate(0)}}.letter-top{display:flex;justify-content:space-between;gap:16px;align-items:center;margin-bottom:19px}.letter-top>.handwritten{font-size:26px}.close-letter{display:flex;align-items:center;gap:12px;min-height:44px;font-size:10px;background:none;padding:4px 0}.close-letter span{font-size:24px}.love-letter>p:not(.letter-signature){font-size:14px;line-height:1.95;margin-top:18px}.letter-signature{font-size:25px;margin-top:22px}.ending-note{margin-top:30px}.noscript-note{position:fixed;bottom:0;left:0;right:0;background:var(--cream);color:var(--mahogany);padding:16px;text-align:center}
@media(min-width:1500px){.scene{min-height:calc(100svh - 210px)}}
@media(max-width:1050px){.scene-opening{gap:35px}.opening-photo{width:94%}.photo-note{right:0}.flower-sketch{left:-25px;width:65px}.note-grid{grid-template-columns:repeat(2,minmax(0,1fr));max-width:700px;gap:22px}.adore-note{min-height:210px}.scene-ratings{gap:40px}.rating-paper{padding:26px}.gallery{gap:13px}.photo-caption{font-size:12px}.gallery-photo{padding:8px}.page-progress{gap:12px}}
@media(max-width:767px){.gift{padding:0 25px}.masthead{min-height:88px;gap:12px}.wordmark{font-size:29px}.wordmark-line{font-size:8px;letter-spacing:1.5px;margin-top:6px}.dedication{display:none}.music-control{padding:7px 13px;min-height:44px}.scene{min-height:0;padding:38px 0 34px}.scene-opening{grid-template-columns:minmax(0,1fr);gap:25px;align-items:start}.opening-copy{padding:0}h1{font-size:clamp(53px,11.3vw,82px);letter-spacing:-2.5px;line-height:1.02}.eyebrow{margin-bottom:15px;font-size:9px;letter-spacing:1.8px}.intro{margin:20px 0 22px;font-size:12px}.intro br{display:none}.opening-signature{font-size:16px;margin-top:16px}.opening-photo{width:75%;max-width:310px;padding:12px 8px;margin:5px auto 8px}.hero-polaroid{padding:10px 10px 15px;transform:rotate(4deg)}.hero-polaroid img{aspect-ratio:1/1}.hero-polaroid figcaption{font-size:13px;padding-top:14px}.photo-note{font-size:15px;right:-28px;top:-4px}.flower-sketch{width:65px;height:105px;left:-32px;bottom:-2px}.navigation{min-height:85px;gap:10px}.page-progress{gap:4px;flex-direction:column;line-height:1.2}.page-count{font-size:17px}.page-dots{gap:3px}.page-dots button{width:19px;min-width:19px;height:30px}.page-dots button:before{top:14px}.back-control,.next-control{font-size:11px;gap:8px}.arrow{width:17px}.scene-heading{text-align:left}.scene-heading h2{font-size:clamp(44px,9vw,65px);letter-spacing:-2px}.scene-heading>p:last-child{font-size:12px;margin-top:18px}.note-grid{gap:15px;margin-top:32px}.adore-note{padding:17px;min-height:205px}.note-title{font-size:24px}.note-top{padding-bottom:10px;margin-bottom:16px}.note-action{font-size:8px}.note-number{font-size:15px}.note-drawing{width:60px;height:53px;margin-top:19px}.note-message{font-size:12px;margin-top:14px;line-height:1.7}.scene-aside{font-size:16px;margin-top:30px}.scene-ratings{grid-template-columns:minmax(0,1fr);gap:30px}.rating-intro h2{font-size:clamp(48px,10vw,68px);letter-spacing:-2px}.rating-intro h2 br{display:none}.rating-intro>p:not(.eyebrow){font-size:12px;margin-top:19px}.rating-signature{margin-top:20px;font-size:17px}.rating-paper{padding:23px;transform:rotate(1deg)}.paper-heading span:first-child{font-size:20px}.paper-heading span:last-child{font-size:8px}.ratings>div{gap:15px;padding:18px 0;grid-template-columns:.8fr 1.2fr}.ratings dt{font-size:10px}.ratings dd{font-size:17px}.paper-verdict .handwritten{font-size:20px}.gallery{grid-template-columns:repeat(2,minmax(0,1fr));gap:25px 16px;padding:5px 6px;margin-top:30px}.gallery-photo{padding:8px}.gallery-photo:nth-child(2){margin-top:18px}.gallery-photo:nth-child(3){margin-top:0}.gallery-photo:nth-child(4){margin-top:20px}.photo-caption{font-size:12px;min-height:52px}.gallery .tape{width:60px;height:21px;top:-9px;left:30%}.letter-wrap{margin-top:28px}.envelope{margin-top:38px}.envelope-address{bottom:16px;font-size:24px}.envelope-address .handwritten{font-size:12px}.envelope-seal{width:40px;height:40px;line-height:32px;font-size:23px;left:calc(50% - 20px);top:calc(50% - 20px)}.love-letter{padding:20px 23px 25px}.love-letter>p:not(.letter-signature){font-size:12px;line-height:1.95}.letter-top>.handwritten{font-size:22px}.close-letter{font-size:9px;gap:8px}.letter-signature{font-size:23px}.scene-letter{min-height:calc(100svh - 173px)}}
@media(max-width:359px){.gift{padding:0 19px}.scene{padding-top:30px}.note-grid{gap:13px}.adore-note{padding:14px;min-height:220px}.note-title{font-size:22px}.note-action{font-size:7px}.note-message{font-size:11px}.gallery{gap:22px 13px}.photo-caption{font-size:11px}.rating-paper{padding:20px}.ratings dd{font-size:16px}.paper-verdict .handwritten{font-size:18px}.page-dots button{min-width:15px;width:15px}.next-control{gap:6px}.envelope-address{font-size:22px;bottom:10px}.envelope-address .handwritten{font-size:11px}.letter-top{gap:8px}.letter-top>.handwritten{font-size:20px}.love-letter{padding:18px}.letter-top{margin-bottom:12px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}}

@media(max-width:767px){.navigation{position:relative;padding-bottom:58px;min-height:125px}.page-progress{display:block}.page-dots{position:absolute;left:50%;bottom:6px;transform:translateX(-50%);gap:0}.page-dots button{min-width:44px;width:44px;height:44px}.page-dots button:before{left:9px;right:9px;top:21px}}

.hero-polaroid,.rating-paper,.gallery-photo,.love-letter{border:1px solid var(--ink-line)}
.adore-note{background:var(--mahogany);color:var(--cream)}.adore-note .note-top{border-color:rgb(240 233 211 / .25)}.adore-note .note-drawing{stroke:var(--cream)}

/* Ribbon details are illustrations, never characters in the written copy. */
.ribbon-bow{pointer-events:none;object-fit:contain;height:auto;aspect-ratio:16/11;position:absolute;z-index:4}
.hero-polaroid>.hero-bow{width:115px;left:50%;top:-40px;transform:translateX(-50%) rotate(-4deg);aspect-ratio:16/11;filter:none}
.photo-bow{width:80px;right:5px;top:-31px;transform:rotate(6deg)}
.gallery-photo .photo-bow{aspect-ratio:16/11;width:80px}
.letter-bow{width:92px;right:calc(50% - 175px);top:-33px;transform:rotate(10deg)}
.letter-wrap.is-opening .letter-bow{display:none}
.adore-note{border-radius:2px 2px 14px 2px}
.adore-note:before{content:'';position:absolute;inset:8px;border:1px dashed rgb(240 233 211 / .2);border-radius:1px 1px 8px 1px;pointer-events:none}
.love-letter{outline:1px solid var(--ink-line);outline-offset:-10px}
.letter-signature{padding-top:8px;border-top:1px dashed var(--ink-line);width:fit-content}
.rating-paper{border-radius:2px 2px 10px 2px}
.paper-heading span:first-child{max-width:65%;line-height:1.4}
.paper-verdict .handwritten{font-size:clamp(17px,2vw,23px)}
.dialog-close{justify-content:center;border-bottom:1px solid var(--ink-line);margin-bottom:12px;padding-bottom:8px}
.close-letter{border-bottom:1px solid var(--ink-line);font-size:11px}
@media(max-width:767px){
  .hero-polaroid>.hero-bow{width:82px;top:-29px}
  .opening-photo{margin-top:15px}
  .flower-sketch{left:-45px;width:58px}
  .photo-note{font-size:14px;top:-15px;right:-14px}
  .gallery-photo .photo-bow{width:63px;top:-23px;right:0}
  .letter-bow{width:72px;right:8%;top:-20px}
  .paper-verdict{gap:12px}
  .paper-heading span:first-child{font-size:18px}
  .close-letter{font-size:10px}
}

/* Keep the couple's photo visible within the portrait frame on every screen. */
.hero-polaroid .hero-photo{aspect-ratio:4/5;object-position:center 78%;filter:none}
