:root{color-scheme:only light;--sky:#a7d8f9;--ink:#153853;--script:"Snell Roundhand","Apple Chancery","URW Chancery L",Georgia,serif}*{box-sizing:border-box}html,body{margin:0;background:var(--sky);color:var(--ink);font-family:Georgia,serif}body{overflow-x:hidden}button,a{font:inherit}button{cursor:pointer}button:focus-visible,a:focus-visible{outline:3px solid #ae391a;outline-offset:3px}
#journey{height:680vh;height:680svh}.stage{position:sticky;top:0;height:100vh;height:100dvh;overflow:clip;background:var(--sky)}.eyebrow{font:600 11px/1.6 system-ui,sans-serif;letter-spacing:.21em;text-transform:uppercase}.frame{position:relative;isolation:isolate;overflow:clip;height:100%;background:radial-gradient(ellipse at 70% 52%,#d6eafa,transparent 56%),var(--sky);container-type:size}.layer,.art,.copy{position:absolute}.layer{inset:0}#night{background:linear-gradient(#223b67,#344a71 48%,#7d786e);opacity:0}.art{inset:0;pointer-events:none;transform-origin:center bottom;opacity:0}.art img{position:absolute;bottom:0;left:50%;transform:translateX(-50%);display:block}.art img:not([src]){visibility:hidden}#fountain{opacity:1}#fountain img{width:100%;height:67%;object-fit:cover;object-position:50% 65%;mask-image:linear-gradient(transparent,#000 12%)}#portrait img{height:81%;width:100%;object-fit:contain;object-position:center bottom;mask-image:linear-gradient(transparent,#000 10%)}#car img{width:100%;height:83%;object-fit:contain;object-position:bottom;mask-image:linear-gradient(transparent,#000 10%)}.copy{left:5%;width:90%;text-align:center;opacity:0;pointer-events:none}.visible{opacity:1}#hero{top:8%}h1,h2,p,blockquote{margin:0}h1{font:italic clamp(48px,10cqh,116px)/.99 var(--script);letter-spacing:-.045em;margin-top:1.1rem}h1 em{font-weight:400}h2{font:italic clamp(31px,5.5cqh,64px)/1.12 var(--script)}.sparkles{position:absolute;inset:8% 11%;color:#ffe7a5;font:28px Georgia;animation:twinkle 3.8s ease-in-out infinite alternate}.sparkles i,.sparkles b{position:absolute;right:0;top:18%;font-size:.75em}.sparkles b{top:45%;left:5%}@keyframes twinkle{to{filter:opacity(.3)}}#verse{top:50%;transform:translateY(-50%);max-width:560px;left:50%;translate:-50% 0}.doves{width:min(53%,240px);mix-blend-mode:darken;mask-image:radial-gradient(ellipse closest-side,#000 74%,transparent 128%);margin-bottom:3.5cqh}blockquote,#note p{font:clamp(18px,3cqh,30px)/1.52 "Palatino Linotype",Palatino,Georgia,serif;text-wrap:pretty}blockquote span{opacity:0}.verse-ref{font-style:italic;font-size:clamp(16px,2.7cqh,25px);margin-top:3cqh}.family{top:6%;padding:2cqh 3%;background:radial-gradient(ellipse,#fff3dcd9 24%,transparent 72%)}.family p{line-height:1.55;margin-top:7px;font-size:clamp(14px,2.2cqh,21px)}#event{top:50%;transform:translateY(-50%);left:50%;translate:-50% 0;max-width:440px}.card{background:#a84460ed;color:#fff6e7;padding:clamp(18px,4cqh,42px) 6%;border-radius:44% 44% 25px 25px / 10% 10% 22px 22px;outline:1px solid #ffe3baaa;outline-offset:-9px;box-shadow:0 8px 40px #3a1b2629}.month,.eventname{margin:2.5cqh auto 1cqh;text-transform:uppercase;letter-spacing:.12em}.week{display:flex;gap:.8em;align-items:center;justify-content:center;line-height:1.5;font:14px/1.5 Georgia}.week strong{background:#fff4de;color:#833847;border-radius:50%;padding:5px 10px}.card p{line-height:1.5}.links{display:flex;flex-wrap:wrap;justify-content:center;gap:7px;margin-top:2cqh}.links>*{color:#72273e;background:#fff1e0;text-decoration:none;border:0;border-radius:22px;padding:10px 13px;font:600 13px/1.4 system-ui,sans-serif}.eventname{font-style:italic;text-transform:none;font-size:24px}.copy.active{pointer-events:auto}#note{top:5%;left:9%;width:82%}#note p{max-width:560px;margin:auto;font-size:clamp(18px,2.9cqh,30px);line-height:1.4}.watermark{position:absolute;left:14px;bottom:max(12px,env(safe-area-inset-bottom));color:white;text-shadow:0 1px 4px #435440;font:italic 13px Georgia;opacity:.8}#begin,#replay{position:absolute;bottom:max(5%,env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);color:#243e35;background:#fff8e9ed;border:1px solid #fff8;border-radius:25px;padding:11px 19px;font:500 14px Georgia}#replay{visibility:hidden}#fireworks{pointer-events:none;position:absolute;inset:5% 10% auto;height:24%;opacity:0}#fireworks i{position:absolute;top:18%;left:16%;width:65px;aspect-ratio:1;border-radius:50%;background:repeating-conic-gradient(#f5cf83 0deg 1.5deg,transparent 2deg 20deg);mask-image:radial-gradient(transparent 12%,#000 45%,transparent 71%);animation:burst 2.8s ease-out infinite;animation-play-state:paused}#fireworks i+i{left:auto;right:8%;top:3%;animation-delay:-1s}@keyframes burst{0%{transform:scale(.05);opacity:0}20%{opacity:1}95%,100%{transform:scale(1.2);opacity:0}}#fireworks.play i{animation-play-state:running}dialog{border:1px solid #dbccae;border-radius:14px;padding:26px;max-width:min(360px,90vw);color:#193e49;background:#fff8ed}dialog::backdrop{background:#14344188}dialog p{margin:15px 0;line-height:1.5}dialog a,dialog button{display:inline-block;padding:10px;border-radius:8px;border:0;color:#fff;background:#325c4b;font:14px system-ui;text-decoration:none}dialog button{background:#e6ddcf;color:#293739}
@media(max-height:530px){.card{padding:12px 5%}.card h2{font-size:26px}.month,.eventname{margin:4px}.week{font-size:12px}.links{margin-top:5px}.links>*{padding:6px 10px}#verse{width:87%}.doves{max-height:58px;width:auto;margin:0}blockquote{font-size:16px;line-height:1.3}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;scroll-behavior:auto!important}}
.week strong{position:relative;isolation:isolate;background:transparent;padding:10px 14px;font-size:13px;line-height:1.24}.week strong:before{content:"";position:absolute;z-index:-1;inset:0;background:#fff4de;clip-path:polygon(50% 100%,8% 58%,1% 38%,3% 20%,12% 8%,26% 3%,39% 6%,50% 17%,61% 6%,74% 3%,88% 8%,97% 20%,99% 38%,92% 58%)}.card{--scallop:10px;mask:linear-gradient(#000 0 0) center/calc(100% - 17px) calc(100% - 17px) no-repeat,radial-gradient(circle,#000 66%,transparent 71%) left top / 20px 20px repeat-x,radial-gradient(circle,#000 66%,transparent 71%) left bottom / 20px 20px repeat-x,radial-gradient(circle,#000 66%,transparent 71%) left top / 20px 20px repeat-y,radial-gradient(circle,#000 66%,transparent 71%) right top / 20px 20px repeat-y}
/* Feather at the painted image edges, including on tall phone screens. */
#car img{height:auto;width:min(100%,79cqh);max-height:none;bottom:5%;mask-image:linear-gradient(transparent,#000 8%,#000 96%,transparent)}#night{background:linear-gradient(#243b63 0%,#334b73 46%,#556079 69%,#847b70 88%,#aaa08e)}#replay{bottom:max(1.5%,env(safe-area-inset-bottom))}

/* One full-viewport camera. Landscape uses its own painted composition. */
@media(min-aspect-ratio:6/5){
  #fountain img,#portrait img,#car img{inset:0;width:100%;height:100%;max-width:none;transform:none;object-fit:cover;object-position:50% 57%;mask:none}
  #hero{top:4%} #hero h1{font-size:clamp(48px,9cqh,100px);margin-top:.25em}
  #hero h1 br{display:none} #hero h1 em{margin-left:.22em}
  .family{top:12%;width:45%;padding:2.2% 3%}
  #bride{left:51%}#groom{left:4%}
  #note{top:4%;left:15%;width:70%}#note p{max-width:750px;text-shadow:0 1px 7px #e7f6ff}
}
@keyframes arrive{from{scale:1.09;translate:0 1.5%}to{scale:1;translate:0 0}}
@keyframes ink{from{opacity:0;filter:blur(4px);translate:0 12px}to{opacity:1;filter:blur(0);translate:0 0}}
@media(prefers-reduced-motion:no-preference){
  .entering #fountain picture{position:absolute;inset:0;display:block;transform-origin:50% 72%;animation:arrive 2.6s cubic-bezier(.18,.6,.3,1) both}
  .entering #hero .eyebrow,.entering h1 span,.entering h1 em{display:inline-block;animation:ink 1.25s both}
  .entering h1 span{animation-delay:.32s}.entering h1 em{animation-delay:.62s}
  .entering #begin span{display:inline-block;animation:nudge 1.8s ease-in-out infinite}
}
@keyframes nudge{50%{translate:0 3px}}
.water{position:absolute;pointer-events:none;inset:auto 0 0;width:100%;height:67%;fill:none;stroke:#fff8e4;stroke-width:1.7}.water.wide{display:none}.water ellipse{transform-origin:0 0;animation:water-ring 2.1s ease-out infinite}.water ellipse+ellipse{animation-delay:-1.05s}@keyframes water-ring{0%{transform:scale(.15);opacity:0}18%{opacity:.92}100%{transform:scale(1.6);opacity:0}}.sparkles{z-index:1;pointer-events:none}.copy,#begin,#replay,.watermark{z-index:2}
@media(min-aspect-ratio:6/5){.water.phone{display:none}.water.wide{display:block;inset:0;height:100%}#fountain img{object-position:50% 50%}#portrait{transform-origin:50% 20%}#portrait img{object-position:50% 18%}#note{left:3.2%;width:29%;top:9%;text-align:left}#note p{padding:1.5cqh 1cqw;background:radial-gradient(ellipse,#e6f3fbd6,transparent 76%);font-size:clamp(17px,2.9cqh,30px)}}

html,body{height:100%;overflow:clip}#reader{height:100vh;height:100dvh;overflow:auto;overscroll-behavior:contain;outline-offset:-2px}#reader:focus:not(:focus-visible){outline:none}
/* Paint and motion share each illustration's coordinates. */
.entering #fountain picture{animation:none}
.entering #fountain{transform-origin:50% 70%;animation:fountain-arrive 2.6s ease-out both}
@keyframes fountain-arrive{from{transform:scale(1.065)}to{transform:scale(1)}}
#fountain img{object-position:center}
.stream{stroke:#e8f8fc;stroke-width:2;stroke-dasharray:7 4 2 9;stroke-linecap:round;animation:flow .76s linear infinite;animation-delay:var(--delay,0s)}
.stream:nth-child(2n){stroke:#d5f5ff;stroke-width:1.25;animation-duration:.98s}
.stream.jet{stroke-width:1.25;stroke-dasharray:4 3 3 12}
@keyframes flow{to{stroke-dashoffset:-44}}
.sparkles{inset:0;animation:none}
.sparkles i{left:9%;right:auto;top:11%;font:normal 19px Georgia;animation:starlight 3.1s ease-in-out infinite}
.sparkles i:nth-child(2){left:79%;top:16%;animation-delay:-1.6s}
.sparkles i:nth-child(3){left:17%;top:67%;font-size:15px;animation-delay:-.7s}
.sparkles i:nth-child(4){left:88%;top:78%;animation-delay:-2.3s}
.sparkles i:nth-child(5){left:72%;top:90%;font-size:12px;animation-delay:-1.1s}
@keyframes starlight{0%,100%{opacity:.24;transform:scale(.75)}50%{opacity:1;color:#fff3c9;text-shadow:0 0 7px #fff5bf,0 0 14px #ffdb7e;transform:scale(1.18)}}
.doves{display:block;margin:0 auto 3cqh;overflow:visible;mix-blend-mode:normal;mask:none}
.wing{transform-origin:60px 66px;animation:wingbeat 1.45s ease-in-out infinite}
@keyframes wingbeat{0%,100%{transform:rotate(1deg) scaleY(1)}50%{transform:rotate(-12deg) scaleY(.52)}}
.garden-plane{position:absolute;bottom:0;left:50%;transform:translateX(-50%);width:min(100%,62.27cqh);aspect-ratio:941/1224;mask-image:linear-gradient(transparent,#000 16%)}
#portrait .garden-plane img,#car .car-plane img{inset:0;width:100%;height:100%;transform:none;object-fit:cover;object-position:center;mask:none}
.blooms,.lights{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.blooms.wide,.lights.wide{display:none}
#butterfly{position:absolute;width:18px;height:14px;pointer-events:none;z-index:1;rotate:-19deg}
#butterfly i,#butterfly b{position:absolute;right:48%;bottom:15%;width:55%;height:84%;background:radial-gradient(ellipse at 65% 70%,#e4aa62 12%,#efbb80 50%,#94684e 86%);border-radius:76% 80% 5% 60%;transform-origin:100% 100%;animation:flutter .25s ease-in-out infinite alternate}
#butterfly b{left:51%;right:auto;scale:-1 1;transform-origin:0 100%}
@keyframes flutter{from{transform:scaleX(.32)}to{transform:scaleX(1)}}
.car-plane{position:absolute;inset:0}.lights ellipse{fill:#ff7954;filter:drop-shadow(0 0 2px #ff5936);animation:signal 2.7s ease-in-out infinite}
@keyframes signal{0%,39%,75%,100%{opacity:0}47%,64%{opacity:.96}}
#lanterns{position:absolute;inset:0;pointer-events:none}
#lanterns i{position:absolute;left:var(--x);top:33%;width:var(--size);height:calc(var(--size)*1.35);border-radius:35% 35% 42% 42%;background:linear-gradient(90deg,#db873b,#ffe099 47%,#f3bc62 60%,#c7813e);box-shadow:0 0 7px #ffd78580;animation:lantern-rise var(--t) linear var(--d) infinite}
#lanterns i::after{content:'';position:absolute;bottom:-1px;left:26%;width:48%;height:16%;border-radius:50%;background:#ffedb7;box-shadow:0 0 3px #fff3a4}
@keyframes lantern-rise{0%{transform:translate(0,0) rotate(-4deg);opacity:0}14%,76%{opacity:.95}52%{transform:translate(9px,-16cqh) rotate(5deg)}100%{transform:translate(4px,-33cqh) rotate(-3deg);opacity:0}}
@media(min-aspect-ratio:6/5){.garden-plane{inset:0;width:100%;height:100%;transform:none;mask:none}.blooms.wide,.lights.wide{display:block}.blooms.phone,.lights.phone{display:none}#lanterns i{top:23%}}
#event{width:min(92%,460px)}.card{position:relative;isolation:isolate;outline:0;box-shadow:none;border-radius:0;mask:none;background:none;padding:clamp(22px,4.8cqh,58px) 7% clamp(22px,4cqh,40px);color:#fff8ee}
.card:before{content:'';position:absolute;inset:0;z-index:-1;background:#a54865e8;mask:var(--paper) center/100% 100% no-repeat}
.card h2{font-weight:400;font-size:clamp(33px,6.1cqh,64px);line-height:.95}.card h2 em{display:block;font-weight:400}
.month{font-size:clamp(16px,2.6cqh,25px);margin:2.5cqh 0 0;letter-spacing:.08em}
.filigree{color:#ffdc91;font-size:17px}.week{display:grid;grid-template-columns:repeat(3,1fr) 1.65fr repeat(3,1fr);gap:0;font-size:clamp(10px,1.7cqh,15px);align-items:center}
.week strong{display:grid;place-content:center;height:clamp(47px,7.5cqh,72px);padding:4px 0 10px;font-size:clamp(12px,1.75cqh,17px);color:#793c49}
.week strong:before{clip-path:none;mask:var(--heart) center/100% 100% no-repeat}
.active .week strong{animation:date-pop .55s ease-out both, date-beat 2.8s .6s ease-in-out infinite}
@keyframes date-pop{0%{scale:.72}65%{scale:1.1}100%{scale:1}}
@keyframes date-beat{0%,48%,100%{scale:1}65%{scale:1.075}}
.eventname,.location-label{display:block;font:normal clamp(12px,2cqh,19px) Georgia;text-transform:uppercase;letter-spacing:.1em;margin:2.3cqh 0 .4cqh}
.time,.venue{font-size:clamp(15px,2.2cqh,20px);font-weight:600}.links{margin-top:2.6cqh}
#fountain:not(.moving) .water *,#verse:not(.moving) .wing,#sparkles:not(.moving) i,#car:not(.moving) ellipse,#lanterns:not(.moving) i,#butterfly:not(.moving) *{animation-play-state:paused}
@media(max-height:540px){.card{padding:14px 8%}.card h2{font-size:28px}.card h2 em{display:inline}.month,.location-label,.eventname,.links{margin:5px 0}.week strong{height:42px}.time,.venue{font-size:14px}}
:root{--paper:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20300%20426%22%20preserveAspectRatio%3D%22none%22%3E%3Cpath%20d%3D%22M9.1%2C91.0%20L8.1%2C89.3%20L7.5%2C87.6%20L7.0%2C85.9%20L6.8%2C84.1%20L6.8%2C82.3%20L7.1%2C80.6%20L7.5%2C78.9%20L8.2%2C77.2%20L9.1%2C75.7%20L10.2%2C74.2%20L11.5%2C72.8%20L13.1%2C71.6%20L15.2%2C70.7%20L14.7%2C68.6%20L14.6%2C66.5%20L14.7%2C64.5%20L15.0%2C62.6%20L15.6%2C60.8%20L16.5%2C59.1%20L17.5%2C57.5%20L18.8%2C56.0%20L20.3%2C54.7%20L22.0%2C53.6%20L23.9%2C52.7%20L26.0%2C52.0%20L28.6%2C51.8%20L28.7%2C49.1%20L29.3%2C46.9%20L30.3%2C44.9%20L31.4%2C43.1%20L32.8%2C41.5%20L34.4%2C40.1%20L36.3%2C38.9%20L38.3%2C38.0%20L40.5%2C37.4%20L43.0%2C37.1%20L45.7%2C37.3%20L47.0%2C35.2%20L48.2%2C32.9%20L49.7%2C30.9%20L51.4%2C29.2%20L53.3%2C27.9%20L55.4%2C26.8%20L57.7%2C26.1%20L60.2%2C25.7%20L62.8%2C25.8%20L65.7%2C26.3%20L67.6%2C24.6%20L69.3%2C22.4%20L71.3%2C20.6%20L73.4%2C19.1%20L75.7%2C18.1%20L78.2%2C17.4%20L80.8%2C17.2%20L83.5%2C17.4%20L86.4%2C18.2%20L89.0%2C17.8%20L91.0%2C15.5%20L93.3%2C13.7%20L95.7%2C12.5%20L98.2%2C11.6%20L100.9%2C11.3%20L103.7%2C11.4%20L106.5%2C12.0%20L109.4%2C13.2%20L112.0%2C12.3%20L114.4%2C10.3%20L117.0%2C8.9%20L119.6%2C8.0%20L122.3%2C7.6%20L125.1%2C7.7%20L127.9%2C8.3%20L130.8%2C9.4%20L133.6%2C11.1%20L136.2%2C8.8%20L138.9%2C7.4%20L141.7%2C6.4%20L144.4%2C6.1%20L147.2%2C6.2%20L150.0%2C6.9%20L152.8%2C8.0%20L155.5%2C9.9%20L158.2%2C9.2%20L161.1%2C7.8%20L163.9%2C7.0%20L166.7%2C6.6%20L169.4%2C6.8%20L172.2%2C7.5%20L174.8%2C8.7%20L177.4%2C10.5%20L179.9%2C12.0%20L182.8%2C10.4%20L185.7%2C9.6%20L188.5%2C9.3%20L191.2%2C9.5%20L193.8%2C10.2%20L196.4%2C11.3%20L198.7%2C13.0%20L201.0%2C15.2%20L203.6%2C15.5%20L206.5%2C14.6%20L209.3%2C14.3%20L212.0%2C14.4%20L214.5%2C14.9%20L216.9%2C15.9%20L219.2%2C17.3%20L221.2%2C19.1%20L223.1%2C21.5%20L225.4%2C22.2%20L228.3%2C21.7%20L231.0%2C21.6%20L233.5%2C21.9%20L235.9%2C22.6%20L238.1%2C23.7%20L240.1%2C25.2%20L241.9%2C26.9%20L243.4%2C29.0%20L244.7%2C31.7%20L247.3%2C31.7%20L249.9%2C31.6%20L252.3%2C32.0%20L254.6%2C32.7%20L256.6%2C33.7%20L258.5%2C34.9%20L260.1%2C36.5%20L261.5%2C38.3%20L262.7%2C40.3%20L263.6%2C42.6%20L264.4%2C44.8%20L267.0%2C44.9%20L269.3%2C45.4%20L271.3%2C46.2%20L273.2%2C47.2%20L274.8%2C48.5%20L276.2%2C49.9%20L277.4%2C51.5%20L278.4%2C53.3%20L279.2%2C55.2%20L279.7%2C57.2%20L279.9%2C59.3%20L279.6%2C61.7%20L282.0%2C62.3%20L283.9%2C63.3%20L285.5%2C64.4%20L286.9%2C65.7%20L288.0%2C67.2%20L289.0%2C68.8%20L289.8%2C70.4%20L290.3%2C72.1%20L290.6%2C73.9%20L290.7%2C75.7%20L290.5%2C77.6%20L290.1%2C79.5%20L289.4%2C81.3%20L289.0%2C83.0%20L290.6%2C84.4%20L291.7%2C86.0%20L292.6%2C87.6%20L293.2%2C89.3%20L293.7%2C91.0%20L294.0%2C92.9%20L294.0%2C94.8%20L293.8%2C96.7%20L293.3%2C98.7%20L292.6%2C100.6%20L291.7%2C102.5%20L290.4%2C104.4%20L290.0%2C106.3%20L291.4%2C108.2%20L292.4%2C110.1%20L293.2%2C112.0%20L293.7%2C114.0%20L294.0%2C115.9%20L294.0%2C117.8%20L293.8%2C119.7%20L293.3%2C121.6%20L292.6%2C123.5%20L291.7%2C125.4%20L290.4%2C127.3%20L290.0%2C129.2%20L291.4%2C131.2%20L292.4%2C133.1%20L293.2%2C135.0%20L293.7%2C136.9%20L294.0%2C138.8%20L294.0%2C140.7%20L293.8%2C142.6%20L293.3%2C144.6%20L292.6%2C146.5%20L291.7%2C148.4%20L290.4%2C150.3%20L290.0%2C152.2%20L291.4%2C154.1%20L292.4%2C156.0%20L293.2%2C157.9%20L293.7%2C159.8%20L294.0%2C161.8%20L294.0%2C163.7%20L293.8%2C165.6%20L293.3%2C167.5%20L292.6%2C169.4%20L291.7%2C171.3%20L290.4%2C173.2%20L290.0%2C175.2%20L291.4%2C177.1%20L292.5%2C179.0%20L293.2%2C180.9%20L293.7%2C182.8%20L294.0%2C184.7%20L294.0%2C186.6%20L293.8%2C188.5%20L293.3%2C190.4%20L292.6%2C192.4%20L291.6%2C194.3%20L290.3%2C196.2%20L290.1%2C198.1%20L291.5%2C200.0%20L292.5%2C201.9%20L293.2%2C203.8%20L293.7%2C205.8%20L294.0%2C207.7%20L294.0%2C209.6%20L293.8%2C211.5%20L293.3%2C213.4%20L292.6%2C215.3%20L291.6%2C217.2%20L290.3%2C219.1%20L290.1%2C221.1%20L291.5%2C223.0%20L292.5%2C224.9%20L293.2%2C226.8%20L293.7%2C228.7%20L294.0%2C230.6%20L294.0%2C232.5%20L293.7%2C234.4%20L293.3%2C236.3%20L292.6%2C238.3%20L291.6%2C240.2%20L290.3%2C242.1%20L290.1%2C244.0%20L291.5%2C245.9%20L292.5%2C247.8%20L293.2%2C249.7%20L293.7%2C251.7%20L294.0%2C253.6%20L294.0%2C255.5%20L293.7%2C257.4%20L293.3%2C259.3%20L292.6%2C261.2%20L291.6%2C263.1%20L290.3%2C265.0%20L290.1%2C266.9%20L291.5%2C268.9%20L292.5%2C270.8%20L293.2%2C272.7%20L293.7%2C274.6%20L294.0%2C276.5%20L294.0%2C278.4%20L293.7%2C280.3%20L293.3%2C282.2%20L292.6%2C284.2%20L291.6%2C286.1%20L290.2%2C288.0%20L290.2%2C289.9%20L291.5%2C291.8%20L292.5%2C293.7%20L293.2%2C295.6%20L293.7%2C297.6%20L294.0%2C299.5%20L294.0%2C301.4%20L293.7%2C303.3%20L293.3%2C305.2%20L292.5%2C307.1%20L291.6%2C309.0%20L290.2%2C310.9%20L290.2%2C312.9%20L291.5%2C314.8%20L292.5%2C316.7%20L293.2%2C318.6%20L293.7%2C320.5%20L294.0%2C322.4%20L294.0%2C324.3%20L293.7%2C326.2%20L293.3%2C328.1%20L292.5%2C330.1%20L291.5%2C332.0%20L290.2%2C333.9%20L290.2%2C335.8%20L291.6%2C337.7%20L292.5%2C339.6%20L293.3%2C341.5%20L293.7%2C343.4%20L294.0%2C345.4%20L294.0%2C347.3%20L293.7%2C349.2%20L293.2%2C351.1%20L292.5%2C353.0%20L291.5%2C354.9%20L290.2%2C356.8%20L290.2%2C358.8%20L291.6%2C360.7%20L292.6%2C362.6%20L293.3%2C364.5%20L293.7%2C366.4%20L294.0%2C368.3%20L294.0%2C370.2%20L293.7%2C372.1%20L293.2%2C374.1%20L292.5%2C376.0%20L291.5%2C377.9%20L290.1%2C379.8%20L290.3%2C381.7%20L291.6%2C383.6%20L292.6%2C385.5%20L293.3%2C387.4%20L293.7%2C389.4%20L294.0%2C391.3%20L294.0%2C393.2%20L293.7%2C395.1%20L293.2%2C397.1%20L292.6%2C398.7%20L291.8%2C400.3%20L290.7%2C401.7%20L289.3%2C402.9%20L288.3%2C404.2%20L288.7%2C406.0%20L288.7%2C407.9%20L288.4%2C409.6%20L287.8%2C411.3%20L286.9%2C412.9%20L285.8%2C414.3%20L284.5%2C415.6%20L283.0%2C416.6%20L281.4%2C417.4%20L279.7%2C418.0%20L277.9%2C418.2%20L276.1%2C418.2%20L274.3%2C418.0%20L272.6%2C417.4%20L271.0%2C416.5%20L269.0%2C416.0%20L267.0%2C417.5%20L264.9%2C418.5%20L262.9%2C419.3%20L260.9%2C419.8%20L258.9%2C420.0%20L256.9%2C419.9%20L254.9%2C419.6%20L252.8%2C419.0%20L250.8%2C418.2%20L248.8%2C417.0%20L246.8%2C415.1%20L244.8%2C417.0%20L242.8%2C418.2%20L240.8%2C419.0%20L238.7%2C419.6%20L236.7%2C419.9%20L234.7%2C420.0%20L232.7%2C419.8%20L230.7%2C419.3%20L228.7%2C418.5%20L226.6%2C417.5%20L224.6%2C416.0%20L222.6%2C416.5%20L220.6%2C417.8%20L218.6%2C418.8%20L216.6%2C419.4%20L214.5%2C419.9%20L212.5%2C420.0%20L210.5%2C419.9%20L208.5%2C419.5%20L206.5%2C418.8%20L204.4%2C417.9%20L202.4%2C416.6%20L200.4%2C415.8%20L198.4%2C417.4%20L196.4%2C418.4%20L194.4%2C419.2%20L192.3%2C419.7%20L190.3%2C420.0%20L188.3%2C420.0%20L186.3%2C419.7%20L184.3%2C419.1%20L182.3%2C418.3%20L180.2%2C417.1%20L178.2%2C415.4%20L176.2%2C416.9%20L174.2%2C418.1%20L172.2%2C419.0%20L170.2%2C419.6%20L168.2%2C419.9%20L166.1%2C420.0%20L164.1%2C419.8%20L162.1%2C419.3%20L160.1%2C418.6%20L158.1%2C417.6%20L156.1%2C416.2%20L154.0%2C416.3%20L152.0%2C417.7%20L150.0%2C418.7%20L148.0%2C419.4%20L146.0%2C419.8%20L143.9%2C420.0%20L141.9%2C419.9%20L139.9%2C419.5%20L137.9%2C418.9%20L135.9%2C418.0%20L133.9%2C416.8%20L131.8%2C415.6%20L129.8%2C417.2%20L127.8%2C418.4%20L125.8%2C419.2%20L123.8%2C419.7%20L121.8%2C420.0%20L119.8%2C420.0%20L117.7%2C419.7%20L115.7%2C419.2%20L113.7%2C418.4%20L111.7%2C417.3%20L109.7%2C415.6%20L107.7%2C416.7%20L105.6%2C418.0%20L103.6%2C418.9%20L101.6%2C419.5%20L99.6%2C419.9%20L97.6%2C420.0%20L95.6%2C419.8%20L93.5%2C419.4%20L91.5%2C418.7%20L89.5%2C417.7%20L87.5%2C416.4%20L85.5%2C416.1%20L83.4%2C417.6%20L81.4%2C418.6%20L79.4%2C419.3%20L77.4%2C419.8%20L75.4%2C420.0%20L73.4%2C419.9%20L71.3%2C419.6%20L69.3%2C419.0%20L67.3%2C418.1%20L65.3%2C416.9%20L63.3%2C415.3%20L61.3%2C417.1%20L59.2%2C418.3%20L57.2%2C419.1%20L55.2%2C419.7%20L53.2%2C419.9%20L51.2%2C420.0%20L49.2%2C419.7%20L47.2%2C419.2%20L45.1%2C418.5%20L43.1%2C417.4%20L41.1%2C415.9%20L39.1%2C416.6%20L37.1%2C417.9%20L35.1%2C418.8%20L33.0%2C419.5%20L31.0%2C419.9%20L28.9%2C420.0%20L27.2%2C419.9%20L25.4%2C419.5%20L23.8%2C418.8%20L22.2%2C417.9%20L20.8%2C416.7%20L19.6%2C415.4%20L18.7%2C413.8%20L18.3%2C411.8%20L16.3%2C411.8%20L14.5%2C411.5%20L12.9%2C410.8%20L11.3%2C409.8%20L10.0%2C408.7%20L8.8%2C407.3%20L7.8%2C405.8%20L7.1%2C404.1%20L6.7%2C402.4%20L6.5%2C400.6%20L6.6%2C398.8%20L7.0%2C397.1%20L7.7%2C395.1%20L8.8%2C393.2%20L10.4%2C391.3%20L9.3%2C389.4%20L8.1%2C387.4%20L7.2%2C385.5%20L6.6%2C383.6%20L6.2%2C381.7%20L6.0%2C379.8%20L6.1%2C377.9%20L6.4%2C376.0%20L7.0%2C374.1%20L7.8%2C372.1%20L8.8%2C370.2%20L10.4%2C368.3%20L9.3%2C366.4%20L8.1%2C364.5%20L7.2%2C362.6%20L6.6%2C360.7%20L6.2%2C358.8%20L6.0%2C356.8%20L6.1%2C354.9%20L6.4%2C353.0%20L7.0%2C351.1%20L7.8%2C349.2%20L8.9%2C347.3%20L10.5%2C345.4%20L9.3%2C343.4%20L8.1%2C341.5%20L7.2%2C339.6%20L6.6%2C337.7%20L6.2%2C335.8%20L6.0%2C333.9%20L6.1%2C332.0%20L6.4%2C330.1%20L7.0%2C328.1%20L7.8%2C326.2%20L8.9%2C324.3%20L10.5%2C322.4%20L9.2%2C320.5%20L8.1%2C318.6%20L7.2%2C316.7%20L6.5%2C314.8%20L6.2%2C312.9%20L6.0%2C310.9%20L6.1%2C309.0%20L6.4%2C307.1%20L7.0%2C305.2%20L7.8%2C303.3%20L8.9%2C301.4%20L10.5%2C299.5%20L9.2%2C297.6%20L8.0%2C295.6%20L7.2%2C293.7%20L6.5%2C291.8%20L6.1%2C289.9%20L6.0%2C288.0%20L6.1%2C286.1%20L6.4%2C284.2%20L7.0%2C282.2%20L7.8%2C280.3%20L8.9%2C278.4%20L10.6%2C276.5%20L9.2%2C274.6%20L8.0%2C272.7%20L7.2%2C270.8%20L6.5%2C268.9%20L6.1%2C266.9%20L6.0%2C265.0%20L6.1%2C263.1%20L6.4%2C261.2%20L7.0%2C259.3%20L7.8%2C257.4%20L8.9%2C255.5%20L10.6%2C253.6%20L9.2%2C251.7%20L8.0%2C249.7%20L7.1%2C247.8%20L6.5%2C245.9%20L6.1%2C244.0%20L6.0%2C242.1%20L6.1%2C240.2%20L6.4%2C238.3%20L7.0%2C236.3%20L7.8%2C234.4%20L8.9%2C232.5%20L10.7%2C230.6%20L9.2%2C228.7%20L8.0%2C226.8%20L7.1%2C224.9%20L6.5%2C223.0%20L6.1%2C221.1%20L6.0%2C219.1%20L6.1%2C217.2%20L6.4%2C215.3%20L7.0%2C213.4%20L7.9%2C211.5%20L9.0%2C209.6%20L10.7%2C207.7%20L9.1%2C205.8%20L8.0%2C203.8%20L7.1%2C201.9%20L6.5%2C200.0%20L6.1%2C198.1%20L6.0%2C196.2%20L6.1%2C194.3%20L6.5%2C192.4%20L7.0%2C190.4%20L7.9%2C188.5%20L9.0%2C186.6%20L10.7%2C184.7%20L9.1%2C182.8%20L8.0%2C180.9%20L7.1%2C179.0%20L6.5%2C177.1%20L6.1%2C175.2%20L6.0%2C173.2%20L6.1%2C171.3%20L6.5%2C169.4%20L7.0%2C167.5%20L7.9%2C165.6%20L9.0%2C163.7%20L10.8%2C161.8%20L9.1%2C159.8%20L8.0%2C157.9%20L7.1%2C156.0%20L6.5%2C154.1%20L6.1%2C152.2%20L6.0%2C150.3%20L6.1%2C148.4%20L6.5%2C146.5%20L7.1%2C144.6%20L7.9%2C142.6%20L9.0%2C140.7%20L10.8%2C138.8%20L9.1%2C136.9%20L7.9%2C135.0%20L7.1%2C133.1%20L6.5%2C131.2%20L6.1%2C129.2%20L6.0%2C127.3%20L6.1%2C125.4%20L6.5%2C123.5%20L7.1%2C121.6%20L7.9%2C119.7%20L9.0%2C117.8%20L10.9%2C115.9%20L9.1%2C113.9%20L7.9%2C112.0%20L7.1%2C110.1%20L6.5%2C108.2%20L6.1%2C106.3%20L6.0%2C104.4%20L6.1%2C102.5%20L6.5%2C100.6%20L7.1%2C98.6%20L7.9%2C96.7%20L9.1%2C94.8%20L11.0%2C92.9Z%22%2F%3E%3C%2Fsvg%3E");--heart:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20100%2090%22%20preserveAspectRatio%3D%22none%22%3E%3Cpath%20d%3D%22M50%2086%20C42%2076%203%2054%203%2028%20C3%203%2032%20-4%2050%2016%20C68%20-4%2097%203%2097%2028%20C97%2053%2061%2078%2050%2086Z%22%2F%3E%3C%2Fsvg%3E")}
#butterfly b{scale:1;border-radius:80% 76% 60% 5%}

/* Embedded calligraphy and fine wedding stationery lettering. */
:root{--script:'Great Vibes',cursive;--body:'Cormorant Garamond',Georgia,serif}
body,button,a,dialog,dialog a,dialog button,.eyebrow,.links>*,.week,.eventname,.location-label,#begin,#replay,.family p{font-family:var(--body)}
#hero{top:4.5%}#hero h1{font:400 clamp(58px,11.2cqh,120px)/.96 var(--script);letter-spacing:0;margin-top:1cqh}
#hero h1 span,#hero h1 em{display:block!important;font-style:normal;font-weight:400}
#hero h1 .amp{font-size:.5em;line-height:1.05;margin:.15em 0 .06em}
#hero h1 em{margin-left:0}.eyebrow{font-size:clamp(12px,1.8cqh,17px);letter-spacing:.22em;font-weight:600}
h2{font-family:var(--script);font-style:normal;font-weight:400;letter-spacing:.01em}
.family h2{font-size:clamp(39px,7.5cqh,75px);line-height:1.05}
.family p{font-size:clamp(19px,2.8cqh,28px);font-weight:500;line-height:1.24}
blockquote,#note p{font-family:var(--body);font-size:clamp(22px,3.5cqh,34px);line-height:1.32}
.verse-ref{font-family:var(--body);font-size:clamp(20px,2.7cqh,28px)}
.card h2{font-family:var(--script);font-size:clamp(43px,7.6cqh,78px);font-style:normal;line-height:.87}
.card h2 em{font-style:normal}.card .month{font-size:clamp(22px,3.3cqh,32px);font-weight:600;letter-spacing:.07em}
.card .time,.card .venue{font-family:var(--body);font-size:clamp(19px,2.9cqh,27px);line-height:1.13}
.card .eventname,.card .location-label{font-size:clamp(16px,2.4cqh,23px)}
.card .links>*{font-size:clamp(15px,2.1cqh,19px);font-weight:600;padding:8px 13px}
.card .week{font-family:var(--body);font-size:clamp(13px,2.1cqh,19px)}
.week strong{font-family:var(--body);font-size:clamp(16px,2.4cqh,22px)}
.active .week strong{animation:date-pop .36s ease-out both,date-beat .86s .36s ease-in-out infinite}
@keyframes date-beat{0%,100%{scale:1}48%{scale:1.16}}
.lights ellipse{animation:signal .76s ease-in-out infinite;fill:#ff6540;filter:drop-shadow(0 0 4px #ff633b)}
@keyframes signal{0%,10%,53%,100%{opacity:0}20%,42%{opacity:1}}
#portrait .garden-plane{mask-image:linear-gradient(transparent,#000 23%)}
#portrait .sprig{transform-box:fill-box;transform-origin:50% 100%;animation:stem-sway 2.4s ease-in-out infinite alternate}
#portrait .blooms>g:nth-child(2n) .sprig{animation-delay:-1s;animation-duration:2.9s}
#portrait .blooms>g:nth-child(3n) .sprig{animation-delay:-1.8s;animation-duration:3.3s}
@keyframes stem-sway{from{transform:rotate(-5deg)}to{transform:rotate(6deg)}}
#portrait .corolla{transform-box:view-box}
#portrait:not(.moving) .sprig{animation-play-state:paused}
.clouds{position:absolute;inset:0;pointer-events:none;z-index:1}
.clouds svg{position:absolute;width:55%;max-width:670px;left:-19%;top:1%;height:auto;opacity:.5;animation:cloud-drift 22s ease-in-out infinite alternate}
.clouds svg:nth-child(2){left:64%;top:12%;width:48%;animation-duration:27s;animation-delay:-11s;opacity:.38}
.clouds svg:nth-child(3){left:19%;top:4%;width:37%;animation-duration:32s;animation-delay:-19s;opacity:.24}
@keyframes cloud-drift{from{transform:translateX(-9%)}to{transform:translateX(21%)}}
#clouds:not(.moving) svg{animation-play-state:paused}
#butterfly{z-index:3;width:25px;height:21px}
#butterfly>span{display:block;position:relative;width:100%;height:100%;animation:butterfly-hover 1.1s ease-in-out infinite alternate}
#butterfly em{position:absolute;left:48%;top:21%;width:2px;height:74%;background:#68513d;border-radius:50%}
@keyframes butterfly-hover{to{transform:translate(3px,-5px) rotate(8deg)}}
#fireworks{inset:0;width:100%;height:100%;z-index:1}
#ending{top:6%;left:6%;width:88%;color:#fff4dc;text-shadow:0 1px 7px #173664}
.ending-line{font:400 clamp(37px,6.4cqh,65px)/1.1 var(--script)}
.countdown{display:flex;align-items:center;justify-content:center;gap:clamp(7px,2cqw,26px);margin-top:1.4cqh;font-family:var(--body)}
.countdown span{min-width:2em;display:grid}.countdown b{font-weight:400;font-size:clamp(32px,5.4cqh,56px);line-height:1}
.countdown small{font-size:clamp(14px,2.3cqh,20px);letter-spacing:.04em}.countdown>i{font-size:24px;opacity:.55;font-style:normal}
.ending-date{font:500 clamp(16px,2.4cqh,22px) var(--body);letter-spacing:.06em;margin-top:1.4cqh}
#lanterns{opacity:.6}#lanterns i{top:42%}
@media(min-aspect-ratio:6/5){
 #hero{top:2.2%}#hero h1{font-size:clamp(55px,10cqh,110px);line-height:.9}
 #hero h1 .amp{font-size:.42em;margin:.12em 0}
 #car .car-plane{top:auto;bottom:0;height:70%;mask-image:linear-gradient(transparent,#000 14%)}
 #car .car-plane img{object-fit:cover;object-position:center 62%}
 #car .lights{height:100%;preserve-aspect-ratio:xMidYMid slice}
 #ending{top:5%}.ending-line{font-size:clamp(35px,7cqh,68px)}
 .countdown{margin-top:1cqh;gap:21px}.countdown b{font-size:clamp(30px,5.2cqh,55px)}
 .family{background:radial-gradient(ellipse,#f8f2dfb3,transparent 75%)}
}
@media(max-height:540px){
 #hero h1{font-size:clamp(47px,11cqh,64px)}#hero .eyebrow{font-size:11px}
 .card{padding:18px 8%}.card h2{font-size:35px}.card .month{font-size:20px}
 .card .time,.card .venue{font-size:18px}.card .eventname,.card .location-label{font-size:15px}
 .card .links>*{font-size:14px;padding:6px 10px}
 #ending{top:3%}.ending-line{font-size:32px}.countdown b{font-size:30px}.countdown small{font-size:13px}
}
@media(min-aspect-ratio:6/5){#car .car-plane img{object-position:center}}
.entering #hero .amp{animation-delay:.48s}
@media(prefers-reduced-motion:reduce){.clouds svg,.sprig,#butterfly>span{animation:none!important}}

@media(min-aspect-ratio:6/5){#portrait .garden-plane{mask-image:linear-gradient(transparent,#000 5%)}}

@media(max-aspect-ratio:6/5){.family h2{font-size:clamp(35px,6cqh,60px)}}
.flower-bank{position:absolute;inset:-.3%;pointer-events:none;mask-image:linear-gradient(to right,#000 0 17%,transparent 28%),linear-gradient(transparent 18%,#000 36%);mask-composite:intersect;transform-origin:10% 95%;animation:flower-bank-sway 3.2s ease-in-out infinite alternate}
.flower-bank.right{mask-image:linear-gradient(to left,#000 0 15%,transparent 26%),linear-gradient(transparent 18%,#000 36%);transform-origin:90% 95%;animation-delay:-1.9s;animation-duration:3.8s}
@keyframes flower-bank-sway{from{transform:rotate(-.75deg)}to{transform:rotate(.9deg)}}
#portrait:not(.moving) .flower-bank{animation-play-state:paused}
@media(prefers-reduced-motion:reduce){.flower-bank{animation:none}}

:root{--body:'Lora',Georgia,serif}
.eyebrow{font-size:clamp(10px,1.5cqh,14px);font-weight:500}
blockquote,#note p{font-size:clamp(18px,2.9cqh,29px);line-height:1.5}
.family p{font-size:clamp(14px,2.2cqh,21px);line-height:1.55;font-weight:400}
.verse-ref{font-size:clamp(15px,2.3cqh,23px)}
.card .month{font-size:clamp(18px,2.8cqh,28px);font-weight:500}
.card .time,.card .venue{font-size:clamp(15px,2.3cqh,22px);line-height:1.45;font-weight:500}
.card .eventname,.card .location-label{font-size:clamp(13px,1.9cqh,19px)}
.card .links>*{font-size:clamp(12px,1.65cqh,16px);font-weight:500}
.card .week{font-size:clamp(10px,1.6cqh,15px)}
.week strong{font-size:clamp(12px,1.9cqh,18px)}
.countdown small{font-size:clamp(11px,1.6cqh,16px)}
.countdown b{font-size:clamp(29px,4.6cqh,48px)}
.ending-date{font-size:clamp(12px,1.8cqh,17px)}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
#purchase,#music-toggle{position:absolute;z-index:5;bottom:max(14px,env(safe-area-inset-bottom));color:#173e47;background:#fff6e8ed;border:1px solid #e9cba68c;box-shadow:0 2px 10px #1d31291a}
#purchase{right:14px;display:flex;align-items:center;gap:5px;min-height:42px;padding:10px 14px;border-radius:24px;text-decoration:none;font:500 12px/1.4 var(--body);white-space:nowrap}
#purchase span{color:#704634}
#music-toggle{left:14px;width:42px;height:42px;display:grid;place-items:center;border-radius:50%;padding:10px}
#music-toggle svg{width:21px;height:21px;fill:currentColor}
#music-toggle[aria-pressed="true"]{background:#f9e3bf}
#music-toggle[aria-pressed="true"]:after{content:'';position:absolute;inset:4px;border:1px solid #be986b;border-radius:50%}
.watermark{top:14px;bottom:auto;left:16px;font-size:12px;opacity:.5}
#begin,#replay{bottom:max(9%,68px)}
@media(min-aspect-ratio:6/5){#purchase{right:22px;bottom:18px;font-size:13px;padding:11px 17px}#music-toggle{left:20px;bottom:18px}#replay{bottom:18px}}
@media(max-height:540px){.card .month{font-size:17px}.card .time,.card .venue{font-size:14px}.card .eventname,.card .location-label{font-size:12px}.card .links>*{font-size:11px;padding:6px 9px}}

/* A softer painted palette, retaining the same artwork and contrast for copy. */
:root{--sky:#b7ddf3}
.frame{background:radial-gradient(ellipse at 70% 52%,#e0edf6,transparent 56%),var(--sky)}
.art{filter:saturate(.8) contrast(.94) brightness(1.05)}
.card:before{background:#b46b83eb}
#night{background:linear-gradient(#425a7b 0%,#526b8b 46%,#788698 69%,#a39b90 88%,#c2b9a9)}
.watermark{position:absolute;inset:55% auto auto 50%;translate:-50% -50%;font:400 clamp(48px,9cqw,94px)/1 'Great Vibes',cursive;opacity:.11;letter-spacing:.02em;white-space:nowrap;color:#fffaf0;text-shadow:none;pointer-events:none;user-select:none;z-index:4}
#journey{height:800vh;height:800svh}
#gallery{inset:0;width:100%;height:100%;transform:none;translate:none;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3cqh;padding:5cqh 6% 10cqh;isolation:isolate}
.gallery-haze{position:absolute;inset:0;z-index:-1;background:radial-gradient(ellipse at center,#f8f2e5e8 0%,#eaf1e5d4 48%,#dcecf595 73%,transparent 100%)}
#gallery h2{font-size:clamp(41px,7cqh,76px);color:#33545a}
.gallery-frames{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:2.6cqh 5cqw;width:min(100%,440px)}
.gallery-frame{margin:0;padding:7px 7px 10px;background:#fffaf0;border:1px solid #d9c5a4;border-radius:48% 48% 5px 5px / 17% 17% 5px 5px;box-shadow:0 4px 12px #4b4e3212;transform:translateY(calc((1 - var(--reveal,0))*35px)) rotate(var(--tilt)) scale(calc(.91 + .09*var(--reveal,0)))}
.photo-open{position:relative;display:block;padding:0;border:1px solid #e3d3ba;border-radius:48% 48% 2px 2px / 19% 19% 2px 2px;width:100%;aspect-ratio:4/5;background:#e9edf0;overflow:hidden}
.photo-open:disabled{cursor:default;opacity:1}
.photo-placeholder{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;background:radial-gradient(ellipse at 20% 20%,#f7e9de,#dfeced);color:#72817b}
.photo-placeholder svg{width:75%;height:75%;margin-top:-8%}
.photo-placeholder>span{font:400 clamp(10px,1.4cqh,14px)/1.4 var(--body);letter-spacing:.01em;margin-top:-12%}
.gallery-frame:nth-child(2n) .photo-placeholder{background:radial-gradient(ellipse at 70% 20%,#e5eff3,#f2e7e0)}
.gallery-photo{display:block;width:100%;height:100%;object-fit:cover;object-position:center}
.gallery-photo[hidden],.photo-placeholder[hidden]{display:none}
.gallery-frame figcaption{text-align:center;margin-top:7px;font:400 clamp(11px,1.6cqh,15px)/1.3 var(--body);color:#6b705c}
#photo-viewer{padding:0;background:#fff8ed;max-width:92vw;max-height:90dvh;overflow:auto}
#photo-viewer::backdrop{background:#1b3347c9}
#full-photo{display:block;width:auto;height:auto;max-width:90vw;max-height:85dvh;object-fit:contain}
#close-photo{position:absolute;right:8px;top:8px;z-index:1;display:grid;place-items:center;width:34px;height:34px;padding:0;border-radius:50%;font:26px/1 Georgia;background:#fff6e8eb;color:#2e444c}
@media(min-aspect-ratio:6/5){
 #gallery{gap:5cqh;padding:7cqh 6% 12cqh}
 .gallery-frames{grid-template-columns:repeat(4,minmax(0,1fr));width:min(90%,1050px);gap:2.5cqw}
 .gallery-frame{padding:10px 10px 15px}
 .photo-open{max-height:49cqh;aspect-ratio:4/5}
 .gallery-frame figcaption{font-size:clamp(12px,2cqh,19px)}
}
@media(max-height:540px) and (max-aspect-ratio:6/5){#gallery{gap:12px;padding:18px 8% 68px}.gallery-frames{width:min(75%,290px);gap:12px 20px}#gallery h2{font-size:32px}.gallery-frame{padding:4px 4px 6px}.gallery-frame figcaption{font-size:10px;margin-top:4px}}
.watermark{color:#3f6669;opacity:.12;mix-blend-mode:multiply}

#music-toggle{width:auto;min-width:42px;height:42px;display:flex;gap:7px;padding:10px 12px;border-radius:24px;font:500 11px/1.3 var(--body)}
#music-toggle svg{width:18px;height:18px;flex-shrink:0}
#music-toggle .music-label{white-space:nowrap}
#music-toggle[aria-pressed="true"]:after{display:none}
#scroll-cue{position:absolute;z-index:5;left:50%;bottom:max(80px,calc(env(safe-area-inset-bottom) + 66px));translate:-50% 0;padding:6px 11px;color:#284c52;background:#fff8e7b3;border-radius:20px;white-space:nowrap;font:400 11px/1.4 var(--body);pointer-events:none;opacity:0}
#scroll-cue b{display:inline-block;margin-left:3px;animation:scroll-cue-drift 1.25s ease-in-out infinite}
@keyframes scroll-cue-drift{50%{transform:translateY(3px)}}
@keyframes car-unveil{from{transform:translateY(6%) scale(1.075);opacity:0}to{transform:translateY(0) scale(1);opacity:1}}
#car.arriving .car-plane{transform-origin:55% 75%;animation:car-unveil 1.8s cubic-bezier(.2,.65,.3,1) both}
@media(min-aspect-ratio:6/5){#scroll-cue{bottom:22px}}
@media(max-width:355px){#music-toggle{padding:9px;gap:5px;font-size:10px}#purchase{padding:10px 10px;font-size:11px;right:10px}#music-toggle{left:10px}}
@media(prefers-reduced-motion:reduce){#car.arriving .car-plane,#scroll-cue b{animation:none}}

/* Preserve the invitation palette and native control appearance under OS dark mode. */
html,body,#reader,.stage,.frame,dialog,button,input,select,textarea{color-scheme:only light}
::selection{background:#e9c9d5;color:#153853}
