@import url('https://fonts.googleapis.com/css2?family=Caveat:wght@400;500;600;700&family=DM+Sans:wght@400;500;600;700&family=Playfair+Display:ital,wght@0,400;0,500;0,600;1,400;1,500&display=swap');
:root{--paper:#f4efdf;--ink:#343d31;--red:#a34533;--green:#4e5b43;--muted:#7b7c6d}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:26px}body{margin:0;background-color:var(--paper);color:var(--ink);font-family:'DM Sans',sans-serif;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='.8' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Cpath fill='%236c5b3c' opacity='.045' filter='url(%23n)' d='M0 0h180v180H0z'/%3E%3C/svg%3E")}button,input,select{font:inherit}a{color:inherit;text-decoration:none}button,a,input,select{ -webkit-tap-highlight-color:transparent}button{cursor:pointer;color:inherit}button:focus-visible,a:focus-visible,select:focus-visible,input:focus-visible{outline:3px solid var(--red);outline-offset:5px}header,footer{max-width:1320px;margin:auto;padding:25px 55px;display:flex;align-items:center;justify-content:space-between}header{border-bottom:1px solid #d4cdb9}.brand{font-family:'Caveat',cursive;font-size:42px;font-weight:700;line-height:1}.brand span{color:var(--red);font-size:29px;margin-left:3px}.edition,.header-link{font-size:10px;letter-spacing:1.8px}.header-link{letter-spacing:.5px;border-bottom:1px solid #8c927b;padding-bottom:5px}.hero{position:relative;text-align:center;padding:68px 20px 12px;max-width:1200px;margin:auto}.eyebrow{font-size:10px;letter-spacing:2.1px;font-weight:600}h1{font:500 clamp(66px,8vw,110px)/1.04 'Playfair Display',Georgia,serif;letter-spacing:-5px;margin:23px 0}h1 em{color:var(--red)}.heart{display:inline-block;font-family:'Caveat';font-size:88px;position:absolute;transform:rotate(16deg);margin-left:19px;margin-top:7px;color:var(--red)}.hero p{font-size:13px;line-height:1.9;color:#747568;margin:24px 0}.primary{display:inline-flex;gap:27px;align-items:center;background:var(--green);color:#fff9e9;padding:16px 23px;font-size:11px;transform:rotate(-2deg);box-shadow:3px 4px 0 #d5cbb5}.primary:hover{background:#3d4935}.primary span{font-size:18px}.margin-note{position:absolute;left:6%;top:215px;font:26px/1.1 'Caveat',cursive;transform:rotate(-13deg);color:#8c846c}.postage{position:absolute;right:8%;top:175px;font-size:8px;letter-spacing:2px;transform:rotate(12deg);padding:13px;border:3px double #ad6651;color:#ad6651;outline:1px dashed #ad6651;outline-offset:5px}.postage b{font:42px 'Playfair Display';letter-spacing:0}.keepsakes{max-width:1140px;position:relative;margin:16px auto 0;padding:140px 85px 0}.clothesline{position:absolute;top:0;left:0;width:100%;height:auto;z-index:3;pointer-events:none}.keepsake-row{display:grid;grid-template-columns:repeat(3,1fr);gap:65px;position:relative;z-index:2}.polaroid{background:#fffdf5;padding:11px 11px 20px;box-shadow:2px 8px 15px #5546291c;border:0;transform:rotate(-6deg);transition:transform .2s}.polaroid:nth-child(2){transform:translateY(19px) rotate(3deg)}.polaroid:nth-child(3){transform:rotate(7deg)}.polaroid:hover{transform:translateY(-5px) rotate(0deg)}.illustration{height:190px;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#ead4bf;gap:13px;background-image:radial-gradient(#ffffff44 1px,transparent 1px);background-size:9px 9px}.illustration>span{font-size:70px;filter:saturate(.65)}.illustration small{font:19px 'Caveat';color:#78644e}.sage{background-color:#dce0c9}.lavender{background-color:#e2d9df}.caption{font:24px 'Caveat';padding-top:13px;line-height:1.1}.caption span{color:var(--red);padding-left:8px}.photo-note{text-align:right;font:21px 'Caveat';color:#8a816a;transform:rotate(-4deg);padding:17px 10px 0}.scrapbook{max-width:1190px;margin:85px auto 0;padding:0 38px}.section-top{display:flex;justify-content:space-between;align-items:center}h2{font:400 39px/1.3 'Playfair Display';letter-spacing:-1.2px;margin:14px 0 26px}h2 em{color:var(--red)}.stamp{border:2px solid #9c5d49;border-radius:50%;color:#9c5d49;font-size:10px;line-height:1.9;letter-spacing:1px;padding:17px 9px;transform:rotate(12deg);text-align:center}.progress-line{display:flex;justify-content:space-between;font-size:11px;color:#7b7a68;padding:17px 0;border-top:1px solid #d7ceba;border-bottom:1px solid #d7ceba}.progress-line span:last-child{font-size:9px;letter-spacing:1.1px}.toolbar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:28px 0 20px}.view-switch{display:flex;border:1px solid #d7cebb;padding:4px;flex-shrink:0}.view-switch button{font-size:11px;padding:10px 14px;border:0;background:transparent}.view-switch [aria-pressed=true]{background:var(--green);color:#fff9e9}.filters{display:flex;gap:10px;align-items:center}select,.search{border:1px solid #d7cebb;background:transparent;border-radius:0;padding:12px 10px;font-size:11px;color:#626754}select{max-width:165px}.search{display:flex;gap:6px}.search input{border:0;outline:0;background:transparent;width:155px;font-size:11px}.alphabet{display:flex;justify-content:space-between;gap:3px;margin:0 0 35px;padding-bottom:18px;border-bottom:1px dashed #c9bea6}.alphabet button{background:transparent;border:0;font:17px 'Caveat';width:29px;height:31px;border-radius:50%}.alphabet [aria-pressed=true]{background:var(--red);color:white}.gallery{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:40px 32px}.date-card{position:relative;text-align:left;background:#fffcf2;border:0;padding:13px 13px 17px;box-shadow:2px 4px 9px #61523716;transition:transform .2s;min-width:0;transform:rotate(-1.3deg)}.date-card:nth-child(3n+2){transform:rotate(1.5deg)}.date-card:nth-child(3n){transform:rotate(-.7deg)}.date-card:hover{transform:translateY(-6px) rotate(0deg);box-shadow:3px 8px 20px #61523725}.tape{position:absolute;top:-11px;left:37%;width:76px;height:27px;background:#cdc7a585;transform:rotate(-4deg);z-index:1;clip-path:polygon(3% 0,97% 4%,100% 100%,0 92%)}.card-image{height:210px;background:#e3e5d3;position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;overflow:hidden}.date-card:nth-child(4n+2) .card-image{background:#ecd9c6}.date-card:nth-child(4n+3) .card-image{background:#e6dce3}.date-card:nth-child(4n) .card-image{background:#dce3df}.card-image img{width:100%;height:100%;object-fit:cover}.big-letter{position:absolute;left:13px;top:6px;font:italic 52px 'Playfair Display';color:#6d775e66}.activity-icon{font-size:62px;filter:saturate(.65);margin-top:20px}.awaiting{font:19px 'Caveat';color:#83846d;margin-top:15px}.card-meta{display:flex;justify-content:space-between;gap:7px;font-size:9px;letter-spacing:.6px;color:#8e8d7a;margin:16px 2px 8px}.card-title{font:25px/1.1 'Caveat';margin:0 2px 10px;font-weight:600}.card-footer{display:flex;justify-content:space-between;font-size:10px;color:#83816f;padding:10px 2px 0;border-top:1px dashed #ddd4be}.card-footer span:last-child{color:var(--red)}.empty{text-align:center;padding:60px}.empty>span{font-size:50px;color:var(--red)}.empty h3{font:30px 'Caveat'}.empty p{font-size:13px}.empty button{padding:12px;background:var(--green);border:0;color:white}.closing{text-align:center;margin:100px 20px 65px}.closing>span{font-size:35px;color:var(--red)}.closing p{font:43px/1.25 'Playfair Display';margin:18px}.closing em{color:var(--red)}.closing small{font-size:9px;letter-spacing:2px}footer{border-top:1px solid #d7cebb;font-size:9px;letter-spacing:1px;padding-top:24px;padding-bottom:24px}dialog{width:min(720px,94vw);border:0;background:#fffaf0;color:var(--ink);padding:42px;box-shadow:0 10px 80px #0004}dialog::backdrop{background:#30392dd0;backdrop-filter:blur(3px)}.close{position:absolute;right:12px;top:8px;background:transparent;border:0;font-size:28px}.detail-eyebrow{font-size:11px;letter-spacing:1px;color:var(--red)}dialog h2{font-size:36px;margin:13px 0}dialog .sub{font-size:12px;color:var(--muted)}.detail-photos{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:22px 0}.detail-photos img{width:100%;height:220px;object-fit:cover;cursor:zoom-in}.detail-photos a:only-child{grid-column:1/-1}.detail-photos a:only-child img{height:330px}.photo-placeholder{text-align:center;padding:35px;background:#e5e5d4;margin:25px 0;font:24px 'Caveat'}.photo-placeholder span{display:block;font-size:60px;margin-bottom:12px}.note-paper{position:relative;background:#f1e6b8;padding:25px 23px;transform:rotate(-1deg);background-image:repeating-linear-gradient(transparent 0,transparent 29px,#c6b98c45 30px);box-shadow:2px 3px 7px #0001}.note-paper h3{font:28px 'Caveat';margin:0 0 10px}.note-paper p{font:23px/30px 'Caveat';white-space:pre-wrap;overflow-wrap:anywhere;margin:0}.pin{position:absolute;width:45px;height:45px;object-fit:contain;right:20px;top:-20px}.note-hint{font:11px/1.6 'DM Sans'!important;color:#7a7867}.gallery.timeline{display:flex;flex-direction:column;position:relative;padding-left:35px;gap:30px}.gallery.timeline:before{content:'';position:absolute;left:9px;top:0;bottom:0;border-left:2px dashed #b4ad91}.timeline .date-card{display:grid;grid-template-columns:210px 1fr;gap:20px;transform:none;width:100%}.timeline .date-card:before{content:'';width:13px;height:13px;position:absolute;left:-32px;top:24px;background:var(--red);border:3px solid var(--paper);border-radius:50%}.timeline .card-image{height:170px}.timeline .card-copy{padding:8px 12px 5px 0}.timeline .card-title{font-size:30px}.timeline .tape{left:75px}.timeline-note{font:22px 'Caveat';color:#88836e}#timeline-help{font-size:12px;color:#817e6a;margin:-13px 0 30px}.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}[hidden]{display:none!important}@media(min-width:1500px){.hero{padding-top:82px}}@media(max-width:900px){header,footer{padding:22px 25px}.keepsakes{padding:12vw 50px 0}.keepsake-row{gap:28px}.illustration{height:160px}.caption{font-size:21px}.toolbar{align-items:flex-start;flex-direction:column}.filters{width:100%}.search{flex:1}.search input{width:100%}.margin-note{left:3%;font-size:22px}.postage{right:4%}.gallery{gap:30px 20px}.card-image{height:180px}.alphabet{flex-wrap:wrap;justify-content:flex-start}.date-card{padding:10px}.card-title{font-size:23px}.card-meta{font-size:8px}}@media(max-width:620px){header{padding:19px 20px}.edition{font-size:8px;letter-spacing:1px}.header-link{display:none}.hero{padding-top:45px}.eyebrow{font-size:8px;letter-spacing:1.4px}h1{letter-spacing:-3px;font-size:74px}.heart{font-size:60px;margin-left:8px}.hero p{font-size:11px}.margin-note,.postage{display:none}.keepsakes{padding:14vw 20px 0;margin-top:40px}.keepsake-row{gap:15px}.illustration{height:110px}.illustration>span{font-size:38px}.illustration small{display:none}.polaroid{padding:6px 6px 12px}.caption{font-size:16px}.photo-note{font-size:18px;padding-top:26px}.scrapbook{padding:0 20px;margin-top:55px}h2{font-size:30px}.stamp{font-size:7px;padding:12px 7px}.progress-line{font-size:9px}.progress-line span:last-child{display:none}.filters{flex-wrap:wrap}.filters>label:not(.search){flex:1}.filters select{width:100%;max-width:none}.search{flex-basis:100%}.alphabet{gap:4px}.alphabet button{width:27px}.gallery{grid-template-columns:repeat(2,minmax(0,1fr));gap:27px 14px}.card-image{height:145px}.big-letter{font-size:37px}.activity-icon{font-size:41px}.awaiting{font-size:15px}.card-meta{flex-direction:column;gap:4px;font-size:8px;line-height:1.4}.card-title{font-size:22px;min-height:46px}.card-footer{font-size:8px}.closing{margin:70px 10px 45px}.closing p{font-size:33px}footer>span{display:none}footer{font-size:8px}.timeline .date-card{grid-template-columns:110px 1fr;gap:12px}.timeline .card-image{height:140px}.timeline .card-title{font-size:24px}.timeline .card-copy{padding-right:0}.timeline-note{font-size:18px}.timeline .tape{left:30px}.gallery.timeline{padding-left:24px}.gallery.timeline:before{left:3px}.timeline .date-card:before{left:-27px}.timeline .card-footer{flex-direction:column;gap:5px}dialog{padding:35px 20px 25px}.detail-photos img{height:150px}.detail-photos a:only-child img{height:240px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}}
.preview-photo{width:100%;height:100%;object-fit:cover}
