@import url('https://fonts.googleapis.com/css2?family=Be+Vietnam+Pro:wght@300;400;500;600&family=Charm:wght@400;700&family=Cormorant+Garamond:ital,wght@0,400;0,500;0,600;1,400;1,500&display=swap');
:root{--ink:#20392f;--muted:#69736a;--paper:#f8f6ef;--line:#d9ddd0;--accent:#a58254;--serif:'Cormorant Garamond',Georgia,serif;--sans:'Be Vietnam Pro',sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:24px}body{margin:0;background:var(--paper);color:var(--ink);font:14px/1.9 var(--sans);-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}button{font:inherit;cursor:pointer}img{display:block;width:100%;height:auto}figure,p{margin:0}h1,h2,h3,h4{font-family:var(--serif);font-weight:500;line-height:1.08;margin:0}h2{font-size:clamp(40px,5vw,66px);letter-spacing:-1.8px}main{max-width:1240px;margin:auto;padding:0 52px}header{height:94px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);font-size:10px;letter-spacing:2px}header>a:last-child{letter-spacing:0;font-size:12px;padding:12px 0}.monogram{font:italic 38px var(--serif)}.monogram span{color:var(--accent);font-size:16px;margin-left:4px}.hero{position:relative;display:grid;grid-template-columns:1fr 1fr;gap:36px 60px;padding:60px 0 0}.hero-copy{display:flex;flex-direction:column;align-items:flex-start;justify-content:center}.edition{font-size:9px;letter-spacing:2px;width:100%;border-bottom:1px solid var(--line);padding-bottom:18px;margin-bottom:60px}.edition span{float:right}.eyebrow,.tiny{display:block;font-size:10px;letter-spacing:2px;font-weight:500;text-transform:uppercase;line-height:1.8;margin-bottom:20px}h1{font-size:clamp(55px,6.5vw,88px);letter-spacing:-3px}.signature{font-family:'Charm',cursive;font-size:clamp(34px,4vw,52px);line-height:1.6;font-weight:400}.hero .signature{margin:10px 0 24px}.hero-note{color:var(--muted);font-size:14px;margin-bottom:30px}.button{display:inline-flex;align-items:center;justify-content:center;gap:36px;background:var(--ink);color:#fff;padding:15px 24px;min-height:50px;font-size:12px;border:1px solid var(--ink);transition:background .2s,transform .2s}.button:hover{background:#355447;transform:translateY(-2px)}.hero-date{font-size:11px;letter-spacing:2px;margin-top:24px}.hero-date span{color:var(--accent);margin:0 8px}.hero-photo{padding:12px;border:1px solid var(--line);position:relative}.hero-photo img{aspect-ratio:2/3;object-fit:cover}.hero-photo figcaption{text-align:center;font-size:8px;letter-spacing:3px;padding:14px 0 2px}.hero-foot{grid-column:1/-1;display:flex;justify-content:space-between;border-bottom:1px solid var(--line);padding:22px 0;font-size:9px;letter-spacing:2px}.invitation{display:grid;grid-template-columns:1fr 1fr;gap:80px;padding:110px 20px;align-items:center}.intro{max-width:390px;color:var(--muted);margin-top:28px;line-height:2.1}.invite-paper{text-align:center;background:#eeeee5;border:1px solid #d4d8ca;padding:40px 34px;outline:1px solid #d4d8ca;outline-offset:7px}.invite-paper h3{font-size:32px}.date{display:flex;justify-content:center;align-items:center;gap:25px;margin:25px 0}.date>span{font-size:9px;letter-spacing:1.5px;line-height:2.2}.date b{font-size:16px;font-weight:500}.date strong{font:80px/.95 var(--serif);border-left:1px solid #c4cbbd;border-right:1px solid #c4cbbd;padding:0 20px}.rule{color:var(--accent);margin:22px auto;font-size:16px}.invite-paper h4{font-size:30px;line-height:1.15}.invite-paper>p{font-size:10px;margin-top:12px;color:var(--muted)}.invite-paper .venue-address{font-size:12px;line-height:1.9;margin:16px auto 24px;max-width:340px}.invite-paper .button{width:100%}.calendar{display:block;font-size:12px;padding:15px 0;border-bottom:1px solid #cdd3c6}.contact a{font-size:17px;color:var(--ink);letter-spacing:1px;display:inline-block;padding:5px 10px}.memories{border-top:1px solid var(--line);padding:70px 0 90px;display:grid;grid-template-columns:1.08fr 1fr;gap:32px}.memories>h2{grid-column:1/-1;margin-bottom:18px}.memories>.eyebrow{display:none}.torn{align-self:start}.photo-pair{display:grid;grid-template-columns:1fr 1fr;gap:20px;align-content:center}.photo-pair figure:nth-child(2){margin-top:90px}.letter-calendar{border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:90px 0;display:grid;grid-template-columns:1.1fr 1fr;gap:90px;align-items:center}.letter h2{font-size:48px;margin-bottom:28px}.letter>p:not(.signature){font-size:13px;line-height:2.2;color:#586458;margin:0 0 20px}.letter strong{font-weight:500;color:var(--ink)}.letter .signature{font-size:28px;margin-top:30px}.letter .signature em{font:italic 23px var(--serif)}.letter .rule{display:none}.month-calendar{text-align:center;background:#eeeee5;padding:34px 26px}.month-calendar h2{font-size:42px;letter-spacing:-1px}.month-calendar h2 span{font-size:22px;color:var(--muted)}table{border-collapse:collapse;table-layout:fixed;width:100%;margin:25px 0 20px}th{font-size:10px;font-weight:500;color:var(--muted);padding:8px 0;border-bottom:1px solid var(--line)}td{height:48px;font:22px var(--serif)}.chosen-day{display:inline-flex;width:40px;height:40px;border:1.5px solid var(--accent);border-radius:50%;align-items:center;justify-content:center;position:relative}.chosen-day:after{content:'';position:absolute;inset:-3px 0;border:1px solid var(--accent);border-radius:50%;transform:rotate(-15deg)}.month-calendar>p:last-child{font-size:11px}.album{padding:90px 0}.album>h2{text-align:center}.hint{font-size:12px;color:var(--muted);text-align:center;margin:20px auto 35px;max-width:380px}.gallery{columns:3;column-gap:22px}.gallery button{border:0;background:transparent;padding:0;margin:0 0 22px;display:block;width:100%;break-inside:avoid;overflow:hidden;position:relative}.gallery img{height:auto;transition:filter .25s}.gallery button:after{content:'';position:absolute;right:10px;bottom:10px;background:var(--paper);color:var(--ink);width:32px;height:32px;line-height:32px;border-radius:50%;font-size:16px}.gallery button:hover img{filter:brightness(.93)}.closing{display:grid;grid-template-columns:1fr 1fr;background:var(--ink);color:var(--paper);align-items:center;margin-bottom:36px}.closing-photo img{height:auto}.closing-copy{text-align:center;padding:38px}.closing .signature{font-size:46px;margin:12px 0 28px}.closing .eyebrow{font-size:9px;letter-spacing:1.5px}.closing .tiny{color:#d0d6c9;font-size:9px}.countdown{display:flex;justify-content:center;gap:14px;margin:20px 0}.countdown div{display:flex;flex-direction:column;min-width:44px}.countdown b{font:42px var(--serif)}.countdown span{font-size:8px;letter-spacing:1.5px}.countdown i{font:26px var(--serif);opacity:.4;padding-top:6px}.closing-copy>p:not(.signature):not(.eyebrow):not(.tiny){font-size:11px;letter-spacing:1px}.closing .button{border-color:#a8b3a7;margin-top:28px;background:transparent;font-size:11px}footer{display:flex;justify-content:space-between;font-size:9px;letter-spacing:2px;padding:26px 0 40px;color:var(--muted)}footer span{color:var(--accent)}dialog{border:0;background:#101a16;color:#fff;width:100vw;max-width:100vw;height:100dvh;max-height:100dvh;padding:65px 60px;margin:0}dialog::backdrop{background:#101a16}dialog[open]{display:flex;align-items:center;justify-content:center}#full-image{width:100%;height:100%;object-fit:contain}dialog button{position:absolute;color:#fff;background:#ffffff15;border:1px solid #ffffff40;width:44px;height:44px;border-radius:50%;font-size:28px;line-height:1}.close{right:18px;top:18px}.prev{left:12px;top:50%}.next{right:12px;top:50%}#image-count{position:absolute;bottom:20px;left:0;right:0;text-align:center;font-size:12px;letter-spacing:2px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}:focus-visible{outline:3px solid #ae7746;outline-offset:5px}::selection{background:#ded6be;color:var(--ink)}
@media(min-width:800px){.hero-copy{animation:arrive .7s ease-out both}.hero-photo{animation:arrive 1s ease-out both}@keyframes arrive{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}}
@media(max-width:800px){main{padding:0 24px}header{height:76px;font-size:8px;letter-spacing:1.4px}.hero{gap:24px;padding-top:30px}.edition{margin-bottom:32px;font-size:7px;letter-spacing:1px}h1{font-size:58px}.hero .signature{font-size:33px}.hero-note{font-size:12px}.invitation{gap:35px;padding:75px 0}.invite-paper{padding:30px 20px}.letter-calendar{gap:40px}.letter h2{font-size:39px}.closing-copy{padding:20px}.closing .signature{font-size:36px}.countdown{gap:8px}.countdown b{font-size:32px}}
@media(max-width:600px){main{padding:0 22px}header{height:67px}.monogram{font-size:30px}header>a:last-child{font-size:11px}.hero{grid-template-columns:1fr;gap:24px;padding-top:24px}.hero-copy{align-items:center;text-align:center}.edition{margin-bottom:30px;text-align:left;width:100%;padding-bottom:12px}.hero .eyebrow{font-size:8px;margin-bottom:12px;letter-spacing:1.7px}h1{font-size:62px;letter-spacing:-2px}.hero .signature{font-size:39px;margin:5px 0 12px}.hero-note{font-size:12px;line-height:1.8;margin-bottom:20px}.hero-note br{display:none}.hero .button{padding:10px 24px;min-height:44px}.hero-date{font-size:10px;margin-top:16px}.hero-photo{padding:8px}.hero-photo figcaption{font-size:7px;padding:10px 0 2px}.hero-foot{padding:0 0 22px;font-size:8px;letter-spacing:1px}.invitation{display:block;padding:65px 8px}.invitation-copy{text-align:center}.eyebrow,.tiny{font-size:9px;letter-spacing:1.8px;margin-bottom:15px}h2{font-size:44px;letter-spacing:-1px}.intro{font-size:13px;margin:22px auto 40px}.invite-paper{padding:28px 21px}.invite-paper h3{font-size:30px}.date{margin:25px 0}.date strong{font-size:74px}.memories{padding:55px 0;gap:20px;grid-template-columns:1fr}.memories>h2{text-align:center;font-size:44px;margin-bottom:8px}.photo-pair{gap:14px;align-content:start}.photo-pair figure:nth-child(2){margin-top:0}.letter-calendar{display:block;padding:55px 0}.letter{padding:0 5px}.letter h2{font-size:42px;max-width:320px}.letter>p:not(.signature){font-size:13px;line-height:2.1}.letter .signature{margin-top:22px;margin-bottom:40px}.month-calendar{padding:28px 20px}.month-calendar h2{font-size:39px}td{height:43px}.album{padding:58px 0}.album h2{font-size:42px}.hint{font-size:11px;margin:18px auto 28px;max-width:270px}.gallery{columns:2;column-gap:12px}.gallery button{margin-bottom:12px}.gallery button:after{width:25px;height:25px;line-height:25px;font-size:13px;right:7px;bottom:7px}.closing{grid-template-columns:1fr;margin:0 -22px}.closing-photo{padding:24px 24px 0}.closing-copy{padding:35px 22px 45px}.closing .signature{font-size:44px;margin:8px 0 24px}.countdown{gap:16px}.countdown b{font-size:44px}.closing .button{margin-top:24px}footer{font-size:7px;letter-spacing:1px;padding:25px 0}dialog{padding:68px 12px 75px}.prev,.next{top:auto;bottom:14px;z-index:1}.prev{left:24px}.next{right:24px}#image-count{bottom:23px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}}

.ui-icon{display:inline-block;width:18px;height:18px;vertical-align:middle;flex-shrink:0;pointer-events:none}dialog button{display:flex;align-items:center;justify-content:center}dialog button .ui-icon{width:22px;height:22px}.gallery .gallery-arrow{position:absolute;right:17px;bottom:17px;width:18px;height:18px;z-index:1;color:var(--ink)}@media(max-width:600px){.gallery .gallery-arrow{right:12px;bottom:12px;width:15px;height:15px}}

/* Framed photographs and a personal stationery letter. */
:root{--photo-border:#d5c9b3;--stationery:#fffcf5}
.hero-photo,.torn,.photo-pair figure,.gallery button,.closing-photo{background:var(--stationery);border:1px solid var(--photo-border);padding:10px;box-shadow:0 5px 16px #3027190c}
.hero-photo{padding:12px 12px 4px}.hero-photo figcaption{padding:14px 0 10px}
.torn{padding:12px 12px 24px}.photo-pair figure{padding:9px 9px 19px}
.gallery button{padding:9px 9px 20px;border:1px solid var(--photo-border);border-radius:2px;overflow:visible}
.gallery button:after{right:16px;bottom:27px}.gallery .gallery-arrow{right:23px;bottom:34px}
.closing-photo{margin:24px 0 24px 24px;padding:10px 10px 22px;transform:rotate(-2deg)}
.letter-calendar{gap:55px;align-items:center}
.letter{position:relative;isolation:isolate;background:var(--stationery);border:1px solid #c8b796;padding:44px 36px 30px;box-shadow:5px 6px 0 -1px #f3eee2,5px 6px 0 0 #d8cbb5,0 15px 35px #493c2110}
.letter:before{content:'';position:absolute;inset:9px;border:1px solid #e5d9c4;pointer-events:none;z-index:-1}
.letter:after{content:'';display:block;width:72px;height:1px;background:#c1a879;margin:26px auto 0}
.letter-emblem{display:flex;justify-content:center;color:#ac8650;margin:0 0 24px}
.letter>.tiny{text-align:center;color:#947244;letter-spacing:2px}
.letter h2{text-align:center;font-size:42px;margin-bottom:30px}
.letter>p:not(.signature){color:#586050}
.letter .signature{text-align:right;padding-right:8px}
.month-calendar{border:1px solid #c8cfbd;outline:1px solid #dce0d3;outline-offset:-7px;box-shadow:0 6px 16px #30271908}
@media(max-width:800px){.letter-calendar{gap:32px}.letter{padding:34px 25px 28px}.letter h2{font-size:37px}}
@media(max-width:600px){.hero-photo{padding:9px 9px 3px}.torn{padding:9px 9px 20px}.photo-pair{gap:12px}.photo-pair figure{padding:6px 6px 15px}.gallery{column-gap:12px}.gallery button{padding:6px 6px 16px;margin-bottom:16px}.gallery button:after{right:11px;bottom:21px}.gallery .gallery-arrow{right:16px;bottom:26px}.letter-calendar{padding:48px 0}.letter{margin:0 2px 38px 0;padding:32px 24px 26px}.letter h2{font-size:38px;max-width:none}.letter>p:not(.signature){font-size:13px;line-height:2.15}.letter .signature{margin-bottom:0}.letter-emblem{margin-bottom:20px}.closing-photo{margin:26px 28px 0;padding:9px 9px 20px}.month-calendar{padding:30px 22px}}

/* Personal editorial section titles. */
.pregrad-heading{grid-column:1/-1;text-align:center;margin:0 0 22px;padding:8px 0 16px}
.pregrad-label{font:italic 23px/1.5 var(--serif);color:#947244;margin-bottom:10px;letter-spacing:1px}
.pregrad-label span{display:inline-block;margin-left:8px;font-style:normal}
.pregrad-heading h2{font-size:clamp(38px,4.5vw,58px);font-weight:400;line-height:1.2;letter-spacing:-1px}
.pregrad-heading h2 em{display:block;font-family:'Charm',cursive;font-size:.88em;line-height:1.6;font-weight:400;font-style:normal;margin-top:2px}
.pregrad-heading:after{content:'';display:block;width:42px;height:1px;background:#bca478;margin:20px auto 0}
.letter>.letter-kicker{font:italic 22px/1.5 var(--serif);text-transform:none;letter-spacing:.5px;margin-bottom:7px;color:#947244}
.letter h2.letter-title{font:400 26px/1.4 var(--serif);letter-spacing:0;margin-bottom:30px}
.letter-title em{display:block;font:400 39px/1.6 'Charm',cursive;letter-spacing:-.5px;margin-top:1px}
@media(max-width:600px){.pregrad-heading{margin-bottom:4px;padding:0 0 8px}.pregrad-label{font-size:21px;margin-bottom:8px}.pregrad-heading h2{font-size:39px}.pregrad-heading h2 em{font-size:34px}.pregrad-heading:after{margin-top:16px}.letter>.letter-kicker{font-size:22px}.letter h2.letter-title{font-size:24px;margin-bottom:26px}.letter-title em{font-size:36px;line-height:1.6}}
@media(max-width:360px){.pregrad-heading h2{font-size:34px}.pregrad-heading h2 em{font-size:30px}.letter-title em{font-size:30px}}

/* Exactly two lines per heading, including narrow phones. */
.pregrad-heading h2{font-size:clamp(22px,4vw,44px);white-space:nowrap;letter-spacing:-.5px}
.pregrad-heading h2 em{display:inline;font-family:var(--serif);font-style:italic;font-size:1em;line-height:inherit;margin:0}
.letter h2.letter-title{font-family:'Charm',cursive;font-size:clamp(22px,2.8vw,34px);line-height:1.6;white-space:nowrap;letter-spacing:-.5px}
.letter-title em{display:inline;font:inherit;letter-spacing:inherit;margin:0}
@media(max-width:600px){.pregrad-heading h2{font-size:clamp(22px,6.5vw,34px)}.pregrad-heading h2 em{display:inline;font-size:1em}.letter h2.letter-title{font-size:clamp(22px,6.3vw,32px)}.letter-title em{display:inline;font-size:1em}}
