@import url('https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,400;0,500;0,600;1,400;1,500&family=DM+Sans:wght@400;500;600&family=DM+Mono&display=swap');
@import url('opening.css');
:root{--ink:#323c30;--paper:#f8f3e9;--accent:#8b6540;--line:#c9bca4;--display:'Cormorant Garamond',Georgia,serif}
*{box-sizing:border-box}html{scroll-behavior:smooth;background:#d8d1c4}body{margin:0 auto;max-width:680px;color:var(--ink);background:var(--paper);font:14px/1.75 'DM Sans',sans-serif;box-shadow:0 0 90px #382f2725}button,input,select{font:inherit}button,a{-webkit-tap-highlight-color:transparent}a{color:inherit}button{cursor:pointer}button:active{transform:scale(.98)}:focus-visible{outline:3px solid var(--accent);outline-offset:5px}svg{width:25px;height:25px;fill:none;stroke:currentColor;stroke-width:1.3;stroke-linecap:round;stroke-linejoin:round}img{width:100%;display:block}h1,h2,h3,p,figure{margin:0}h1,h2,h3{text-wrap:balance}p{text-wrap:pretty}em{font-weight:400}section{position:relative}small{font-size:11px}.page{overflow:hidden}.reveal{opacity:1;transform:none}
.cover{position:fixed;inset:0;z-index:20;max-width:680px;margin:auto;background:var(--paper);display:grid;place-content:center;text-align:center;padding:40px 30px;transition:opacity .65s,visibility .65s;overflow:hidden}.cover.opened{opacity:0;visibility:hidden;pointer-events:none}.cover>img{position:absolute;width:155px;height:195px;object-fit:cover;left:50%;top:12%;transform:translateX(-50%);border-radius:90px 90px 5px 5px;opacity:.95}.cover-copy{position:relative;margin-top:200px}.float-brand{position:absolute;top:28px;left:0;right:0;font-size:11px;letter-spacing:.4em}.cover h1{font:500 53px/.92 var(--display);letter-spacing:-2px;margin:15px 0}.cover h1 em{display:block}.cover-date{font-size:10px;letter-spacing:.28em;margin:20px}.overline,.section-label{font-size:10px;text-transform:uppercase;letter-spacing:.22em;color:var(--accent);font-weight:500}.open-button,.primary-button{background:var(--ink);color:var(--paper);border:0;padding:17px 24px;min-height:50px;border-radius:6px;display:inline-flex;justify-content:center;align-items:center;gap:14px;font-size:11px;letter-spacing:.08em}.open-button{min-width:240px}.open-button svg{width:18px}
.masthead{display:flex;justify-content:space-between;align-items:center;padding:25px 28px 15px;font-size:9px;letter-spacing:.16em;text-transform:uppercase}.masthead a{text-decoration:none}.masthead b{font-weight:500}.hero{padding:20px 30px 38px;text-align:center}.hero h1{font:400 clamp(55px,14vw,88px)/.85 var(--display);letter-spacing:-2.5px;margin:20px 0 24px}.hero h1 em{display:block}.hero p{max-width:350px;margin:auto}.hero-portrait{margin:28px auto 0;position:relative;width:78%}.hero-portrait img{aspect-ratio:4/5;object-fit:cover;border-radius:180px 180px 4px 4px}.hero-portrait:before{content:'';position:absolute;inset:-8px;border:1px solid var(--line);border-radius:190px 190px 7px 7px;pointer-events:none}.hero-portrait figcaption{font:italic 20px var(--display);margin-top:20px}.date-ribbon{display:grid;grid-template-columns:1fr 85px 1fr;align-items:center;max-width:360px;margin:30px auto 0;border-block:1px solid var(--line);padding:12px 0}.date-ribbon strong{font:500 51px/.9 var(--display)}.date-ribbon span{font-size:10px;letter-spacing:.12em}.date-ribbon small{display:block;font-size:9px}.scroll-cue{display:none}
.paper-section,.section{padding:38px 28px}.center{text-align:center}.display{font:400 clamp(34px,8vw,48px)/1.05 var(--display);letter-spacing:-.7px}.section-label{margin-bottom:14px}.lead,.story-copy>p:not(.section-label):not(.signature){font-size:13px;line-height:1.85;max-width:420px;margin:18px auto 0;color:var(--ink);opacity:.82}.ornament{display:flex;align-items:center;justify-content:center;gap:15px;margin:20px 0;color:var(--accent)}.ornament:before,.ornament:after{content:'';width:40px;height:1px;background:var(--line)}
.feature-strip{margin-top:26px;border-block:1px solid var(--line);display:grid;grid-template-columns:1fr 1fr}.feature{padding:23px 12px}.feature:last-child{grid-column:1/-1;border-top:1px solid var(--line);padding:18px}.feature svg{width:24px;margin-bottom:8px;color:var(--accent)}.feature strong{font:500 24px/1.1 var(--display);display:block;margin-bottom:8px}.feature p{font-size:11px;line-height:1.65}.feature:first-child{border-right:1px solid var(--line)}
.story-grid{display:grid;grid-template-columns:42% 1fr;gap:24px;align-items:center}.story-photo{position:relative}.story-photo img{aspect-ratio:3/4;object-fit:cover;border-radius:80px 80px 4px 4px}.seal{display:none}.story-copy .display{font-size:33px}.story-copy>p:not(.section-label):not(.signature){font-size:11px}.signature{font:italic 22px var(--display);color:var(--accent);margin-top:17px}.photo-band{margin:18px 0}.photo-band>img{aspect-ratio:4/4.6;object-fit:cover}.photo-band-copy{position:absolute;bottom:0;left:0;right:0;padding:60px 24px 25px;color:white;background:linear-gradient(transparent,#14201aba);text-align:center}.photo-band-copy h2{font:italic 36px/1 var(--display)}.photo-band-copy .overline{color:white;font-size:8px;margin-bottom:12px}
.calendar{padding:22px 18px;margin:24px auto 0;border:1px solid var(--line);border-radius:8px;max-width:400px}.calendar-head{display:flex;align-items:center;justify-content:space-between}.calendar-head strong{font:italic 30px var(--display)}.calendar-head span{font-size:11px}.week,.dates{display:grid;grid-template-columns:repeat(7,1fr);text-align:center;gap:5px}.week{font-size:8px;text-transform:uppercase;letter-spacing:.05em;margin:17px 0 8px}.dates span{font-size:11px;min-height:28px;padding:4px}.dates .marked{background:var(--ink);color:var(--paper);border-radius:50%;width:28px;margin:auto}.countdown{display:grid;grid-template-columns:repeat(4,1fr);max-width:400px;margin:23px auto 0;border-block:1px solid var(--line);padding:14px 0}.countdown div+div{border-left:1px solid var(--line)}.countdown strong{font:500 32px/1.1 var(--display);font-variant-numeric:tabular-nums;display:block}.countdown span{font-size:8px;text-transform:uppercase;letter-spacing:.12em}
.split{padding:35px 28px}.split-photo{display:none}.timeline{position:relative;margin-top:25px;padding-left:22px;border-left:1px solid var(--line)}.timeline-row{position:relative;display:grid;grid-template-columns:60px 1fr;gap:17px;padding:15px 0}.timeline-row:before{content:'';position:absolute;left:-26px;top:22px;width:7px;height:7px;border-radius:50%;background:var(--accent);outline:5px solid var(--paper)}.timeline-row time{font:500 20px var(--display)}.timeline-row strong{font-size:12px;font-weight:600}.timeline-row p{font-size:11px;line-height:1.6;margin-top:3px;opacity:.75}
.dress-code{margin-top:20px}.dress-card{border-top:1px solid var(--line);padding:22px 0}.dress-card h3{font:italic 27px var(--display)}.dress-card p{font-size:12px;margin:12px auto;max-width:360px}.palette{display:flex;justify-content:center;gap:13px;margin:18px 0 0}.swatch{width:33px;height:33px;border-radius:50%;outline:1px solid var(--line);outline-offset:4px}.silhouettes{display:none}.gift-note{padding:28px 22px;border:1px solid var(--line);border-radius:100px 100px 7px 7px;text-align:center}.gift-note>svg{margin:0 auto 10px}.gift-note h3{font:italic 30px var(--display);margin-bottom:12px}.gift-note p{font-size:12px;line-height:1.8}
.rsvp{padding:40px 28px;background:color-mix(in srgb,var(--accent) 9%,var(--paper));border-top:1px solid var(--line)}.rsvp-card{margin:24px auto 0;text-align:left}.rsvp-card label{display:block;font-size:11px;margin:0 0 15px}.rsvp-card input,.rsvp-card select{display:block;width:100%;height:49px;margin-top:6px;border:1px solid var(--line);background:var(--paper);border-radius:6px;padding:10px;color:var(--ink);font-size:14px}.primary-button{width:100%}.confirmation{display:none;padding:25px;text-align:center}.confirmation.show{display:block}.demo-note{font-size:10px;opacity:.65;text-align:center;margin-top:12px}.footer{text-align:center;padding:25px 20px;font-size:9px;border-top:1px solid var(--line)}.footer .brand{letter-spacing:.3em;font-size:12px;margin-bottom:5px}.footer small{font-size:9px}
.vote-box{padding:22px 18px;background:#fff9f0;border-radius:14px;margin-top:22px;color:#33463a;border:1px solid #d8cfbc}.vote-title{font-size:12px;margin-bottom:14px}.vote-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.vote{min-height:75px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;border:1px solid #b6c6c8;background:#d9e5e6;border-radius:12px;color:#263e40;font-size:12px}.vote:last-child{background:#efd4c9;border-color:#dbb7a5;color:#693d36}.vote.selected{outline:2px solid currentColor;outline-offset:3px}.result{display:none;font-size:12px;margin-top:18px}.result.show{display:block}.poll{display:none}.details{display:grid;gap:0;border-block:1px solid var(--line);margin-top:25px}.detail{display:grid;grid-template-columns:80px 1fr;text-align:left;padding:16px 0;gap:16px}.detail+.detail{border-top:1px solid var(--line)}.detail small{color:var(--accent);text-transform:uppercase;letter-spacing:.1em;font-size:9px}.detail strong{font-size:12px;font-weight:500}
.ticket-wrap{padding:25px}.boarding-pass{background:#f3eddf;color:#102737;position:relative;border-radius:8px}.boarding-main,.boarding-side{padding:24px}.boarding-side{border-top:1px dashed #9e9c91;display:grid;grid-template-columns:1fr 1fr;gap:15px;background:#e9e1d1;border-radius:0 0 8px 8px}.boarding-top{display:flex;justify-content:space-between;font:8px 'DM Mono',monospace;letter-spacing:.08em;border-bottom:1px dashed #aaa591;padding-bottom:14px}.route{display:grid;grid-template-columns:1fr 26px 1fr;align-items:center;gap:12px;margin:24px 0}.route strong{font:500 32px/1 var(--display);display:block}.route small{font-size:8px;display:block;margin-bottom:8px}.flight-data{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.flight-data small,.boarding-side small{display:block;font:8px 'DM Mono',monospace}.flight-data strong,.boarding-side strong{font-size:10px;font-weight:500}.barcode{height:32px;margin-top:20px;background:repeating-linear-gradient(90deg,#102737 0 1px,transparent 1px 4px,#102737 4px 6px,transparent 6px 8px)}
/* Rose garden stationery */
.theme-xv{--ink:#344937;--accent:#976756;--line:#cfbea2;--paper:#fcf8f0}.theme-xv .hero{padding-top:55px}.theme-xv .hero:before,.theme-xv .cover:before{content:'';position:absolute;left:-45px;top:-35px;width:240px;height:240px;background:url('assets/botanical-lines.svg') center/contain no-repeat;pointer-events:none;z-index:1}.theme-xv .hero:after{content:'';position:absolute;right:-35px;top:300px;width:190px;height:230px;background:url('assets/botanical-lines.svg') center/contain no-repeat;transform:rotate(165deg);pointer-events:none}.theme-xv .hero h1 em{font-size:.6em;margin-top:14px;color:#927044}.theme-xv .hero-portrait{width:76%}.theme-xv .paper-section:nth-child(2){border-top:1px solid var(--line)}.theme-xv .story-grid{grid-template-columns:1fr}.theme-xv .story-photo{width:78%;margin:0 auto}.theme-xv .story-photo img{border-radius:4px;box-shadow:12px 12px 0 #eee3d3}.theme-xv .story-copy{text-align:center;padding:10px 10px 0}.theme-xv .split{background:#ecefdf}.theme-xv .timeline-row:before{outline-color:#ecefdf}
/* Wedding travel dossier */
.theme-wedding{--ink:#efe8d9;--paper:#102b3a;--accent:#d3bb8c;--line:#637277}.theme-wedding .cover{background:#102b3a}.theme-wedding .cover>img{filter:grayscale(1)}.theme-wedding .hero{margin:16px 25px 0;padding:28px 22px;background:#f3eddf;color:#102b3a;border-radius:8px;outline:1px dashed #aba58d;outline-offset:-9px}.theme-wedding .hero .overline{color:#5f675f}.theme-wedding .hero h1{font-size:62px;text-transform:uppercase;letter-spacing:-1px}.theme-wedding .hero h1 em{font-size:25px;text-transform:none;margin:13px;font-style:italic}.theme-wedding .hero-portrait{width:100%;margin-top:22px}.theme-wedding .hero-portrait img{aspect-ratio:1.45;filter:grayscale(1);border-radius:5px}.theme-wedding .hero-portrait:before{display:none}.theme-wedding .hero-portrait figcaption{font:8px 'DM Mono';letter-spacing:.25em;text-transform:uppercase}.theme-wedding .date-ribbon{grid-template-columns:1fr 62px 1fr;border-color:#b9b09a}.theme-wedding .story-photo img{filter:grayscale(1);border-radius:5px}.theme-wedding .story-grid{grid-template-columns:1fr}.theme-wedding .story-photo{padding:10px;background:#f3eddf;transform:rotate(-2deg);width:90%;margin:auto}.theme-wedding .story-photo img{aspect-ratio:1.2}.theme-wedding .story-copy{padding-top:15px;text-align:center}.theme-wedding .feature svg{color:#d3bb8c}.theme-wedding .calendar{background:#f3eddf;color:#102b3a}.theme-wedding .dates .marked{background:#a4453a;color:white}.theme-wedding .photo-band{margin:20px 25px;border-radius:6px;overflow:hidden}.theme-wedding .photo-band>img{filter:grayscale(1);aspect-ratio:1.1}.theme-wedding .photo-band-copy h2{font-size:29px}.theme-wedding .rsvp{background:#e9e1d1;color:#102b3a}.theme-wedding .rsvp input,.theme-wedding .rsvp select{background:#f3eddf;color:#102b3a}.theme-wedding .primary-button{background:#102b3a;color:#fff}
/* Baby journal */
.theme-baby{--paper:#fbf4e8;--ink:#374d47;--accent:#a6654d;--line:#d4c8b3}.theme-baby .hero h1{font-size:75px}.theme-baby .hero h1 em{color:#a6654d;font-size:.72em;line-height:1.1}.theme-baby .hero-portrait{width:75%;transform:rotate(-4deg);padding:9px;background:white;box-shadow:9px 12px 0 #e5dece}.theme-baby .hero-portrait img{border-radius:4px;aspect-ratio:1}.theme-baby .hero-portrait:before{display:none}.theme-baby .hero-portrait figcaption{margin:9px 0 4px;font-size:18px}.theme-baby .feature-strip{display:block;border:0;counter-reset:steps}.theme-baby .feature{border:0!important;display:grid;grid-template-columns:40px 1fr;text-align:left;padding:13px 0!important;column-gap:13px}.theme-baby .feature svg{grid-row:1/3;align-self:center}.theme-baby .feature strong{font-size:23px}.theme-baby .split{background:#e8eddf;border-radius:28px;margin:12px;padding:28px 20px}.theme-baby .story-photo{transform:rotate(3deg)}.theme-baby .photo-band{margin:20px;border-radius:150px 150px 9px 9px;overflow:hidden}.theme-baby .photo-band>img{aspect-ratio:1.05}.theme-baby .photo-band-copy h2{font-size:29px}
/* Anniversary heirloom */
.theme-gold{--paper:#f6f0e3;--ink:#334b3b;--accent:#947337;--line:#c8b88d}.theme-gold .cover>img{border-radius:4px}.theme-gold .hero{padding-top:5px}.fifty{font:400 150px/.9 var(--display);color:#9b804a;letter-spacing:-10px;position:relative;display:block;margin:6px auto -24px;z-index:1;text-shadow:1px 1px #fff}.theme-gold .hero-portrait{width:90%;margin-top:0}.theme-gold .hero-portrait img{border-radius:140px 140px 4px 4px}.theme-gold .hero h1{font-size:53px;line-height:.85;margin-top:25px}.theme-gold .hero h1 em{display:inline;font-size:.6em}.theme-gold .hero-portrait:before{inset:8px;border-color:#f6f0e3a0;z-index:1}.theme-gold .quote{font:italic 33px/1.15 var(--display);padding:35px 35px;text-align:center;border-block:1px solid var(--line)}.era{display:flex;justify-content:space-between;font-size:10px;letter-spacing:.18em;margin-bottom:18px}.theme-gold .split{background:#334b3b;color:#f6f0e3}.theme-gold .split .section-label{color:#dbc48d}.theme-gold .timeline-row:before{outline-color:#334b3b}.theme-gold .story-grid{grid-template-columns:1fr}.theme-gold .story-photo img{aspect-ratio:1.25;border-radius:5px}.theme-gold .story-copy{text-align:center}
@media(min-width:700px){body{margin:32px auto;border-radius:12px;overflow-x:clip}.cover{border-radius:12px}.hero{padding-inline:60px}.section,.paper-section,.split{padding:42px 55px}.hero-portrait{max-width:360px}.cover>img{top:10%}.cover-copy{margin-top:240px}.cover h1{font-size:64px}}
@media(max-width:360px){.hero{padding-inline:22px}.hero h1{font-size:53px!important}.section,.paper-section,.split{padding:30px 22px}.story-grid{gap:16px}.story-copy .display{font-size:28px}.cover h1{font-size:45px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}}
