:root{--navy:#14264c;--ink:#101f3f;--ivory:#f7f4ec;--gold:#c6a46b;--muted:#c4c8d0;--serif:'Cormorant Garamond',Georgia,serif;--sans:'DM Sans',Arial,sans-serif;color:var(--ivory);background:var(--navy);font-family:var(--sans);font-synthesis:none}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:calc(88px + env(safe-area-inset-top))}body{margin:0;overflow-x:hidden}button,input,a{-webkit-tap-highlight-color:transparent}a{color:inherit;text-decoration:none}button,input{font:inherit}button{cursor:pointer}button,a{touch-action:manipulation}button:focus-visible,a:focus-visible,input:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--gold);outline-offset:5px}button:disabled{cursor:default;opacity:.3}[hidden]{display:none!important}img{max-width:100%;display:block}h1,h2,h3,p,figure{margin:0}h1,h2,h3{font-family:var(--serif);font-weight:400}h2{font-size:43px;line-height:1.08;letter-spacing:-.025em}h3{font-size:35px;line-height:1.08}em{font-weight:400}p{font-size:14px;line-height:1.8}.eyebrow{font:500 11px/1.8 var(--sans);letter-spacing:1.8px;text-transform:uppercase}.skip{position:fixed;top:8px;left:8px;transform:translateY(-180%);z-index:200;background:var(--ivory);color:var(--navy);padding:15px}.skip:focus{transform:none}.masthead{position:fixed;z-index:100;top:0;left:0;right:0;display:flex;align-items:center;justify-content:space-between;padding:calc(7px + env(safe-area-inset-top)) 6% 7px;background:linear-gradient(#14264cf5,#14264cce 75%,#14264c00);transition:background .45s,color .45s}.masthead.on-light{background:#f7f4ecf5;color:var(--navy)}.mark-link{width:54px;height:54px;display:grid;place-items:center}.mark-link img{width:52px;height:52px;object-fit:contain}.header-actions{display:flex;align-items:center;gap:21px}.header-actions>a,.header-actions>button{min-height:44px;display:flex;align-items:center;justify-content:center;font-size:11px;white-space:nowrap}.header-actions>a span{margin-left:7px;color:var(--gold)}.header-actions button{border:0;padding:0 3px;background:transparent;color:inherit}.opening{position:relative;padding:calc(88px + env(safe-area-inset-top)) 20px 22px;min-height:100vh;min-height:100svh;overflow:hidden;background:radial-gradient(ellipse at 30% 45%,#31415b 0,transparent 58%),var(--navy)}.cover-layout{position:relative;z-index:2;display:flex;align-items:center;flex-direction:column}.cover-shot{position:relative;height:calc(100vh - 282px);height:calc(100svh - 282px);min-height:350px;max-height:660px;aspect-ratio:9/16;max-width:100%;background:#172238;overflow:hidden;box-shadow:0 18px 65px #08112550}.video-poster{width:100%;height:100%;object-fit:contain}.living-film{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;opacity:0;transition:opacity 1.1s;pointer-events:none}.living-film.is-playing{opacity:1}.cover-vignette{position:absolute;inset:70% 0 0;background:linear-gradient(transparent,#14264c70);pointer-events:none}.cover-copy{text-align:center;margin-top:23px;width:100%}.cover-copy .eyebrow{font-size:10px;letter-spacing:2px;color:#e0d5bf}.cover-copy h1{font-size:clamp(39px,10.8vw,53px);line-height:1.12;letter-spacing:-1.7px;margin:6px -8px 9px}.cover-copy h1 span{font-style:italic;color:var(--gold);font-size:.69em;margin:0 2px}.cover-dates{font-size:12px;letter-spacing:.25px;color:#e0dfdc}.cover-dates span{color:var(--gold);padding:0 6px}.entry-link{display:inline-flex;gap:18px;align-items:center;min-height:48px;font-size:13px;margin-top:15px}.entry-arrow{display:grid;place-items:center;border:1px solid #c6a46b80;width:36px;height:36px;border-radius:50%;font-size:16px;transition:transform .5s}.entry-link:hover .entry-arrow{transform:translateY(4px)}.cover-hashtag{text-align:center;font-size:11px;letter-spacing:1.4px;margin-top:20px;color:#c2c8d5}.cover-light{position:absolute;top:-25%;left:40%;width:35%;height:150%;transform:rotate(22deg);background:linear-gradient(90deg,transparent,#ddbe8224 50%,transparent);filter:blur(30px);pointer-events:none}.album-section{position:relative;isolation:isolate;padding:62px 0 0;overflow:hidden;background:radial-gradient(ellipse at 0 20%,#38506945,transparent 50%),linear-gradient(var(--navy),#1d3052 72%,#273953)}.album-section:before{content:'';position:absolute;z-index:-1;top:-160px;right:-210px;width:440px;height:1050px;border:1px solid #c6a46b25;border-radius:50%;transform:rotate(-20deg);pointer-events:none}.album-intro{padding:0 8%;text-align:center;max-width:650px;margin:auto}.album-intro .eyebrow{color:#d6bb89}.album-intro h2{margin:18px 0;font-size:42px;line-height:1.07}.album-intro h2 em{color:#e0caa6}.album-intro>p:last-child{color:#d2d6de;font-size:14px;line-height:1.85}.album-shell{margin-top:37px}.album-rail{display:flex;gap:22px;overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x mandatory;scroll-padding:8vw;padding:10px 8vw 5px;scrollbar-width:none;-webkit-overflow-scrolling:touch}.album-rail::-webkit-scrollbar{display:none}.album-page{flex:0 0 82vw;width:82vw;max-width:470px;scroll-snap-align:center;position:relative;align-self:end}.photo-mount{height:clamp(360px,63vh,580px);height:clamp(360px,63svh,580px);display:flex;align-items:center;justify-content:center;position:relative;transform-origin:50% 85%}.photo-mount>img{width:100%;height:100%;object-fit:contain}.page-garden .photo-mount{padding:14px;background:#ece7dc;box-shadow:0 14px 25px #060e2425}.page-garden .photo-mount>img{object-fit:contain}.page-handkiss .photo-mount{padding:0 3px}.page-arch .photo-mount{padding:0 15px}.film-frame{height:100%;max-width:100%;aspect-ratio:9/16;position:relative;overflow:hidden;background:#18243a}.page-arch .film-frame{border-radius:48% 48% 0 0 / 25% 25% 0 0}.page-closekiss .photo-mount{padding:16px 12px;border:1px solid #c6a46b5c}.page-shoulder .photo-mount{padding:15px;background:#283b56}.page-embrace .photo-mount{padding:0 3px}.page-staircase .photo-mount{background:#e9e3d7;padding:18px 15px;box-shadow:0 14px 25px #060e2425}.album-page figcaption{padding:20px 1px 4px;font-family:var(--serif);font-size:28px;line-height:1.2}.album-page figcaption span{font:11px/1.8 var(--sans);display:block;letter-spacing:1.3px;color:#d9c49f;margin-bottom:7px}.album-navigation{display:flex;align-items:center;justify-content:space-between;padding:20px 8% 0;gap:10px;max-width:800px;margin:auto}.album-position{display:flex;align-items:center;gap:10px;font-size:11px;font-variant-numeric:tabular-nums}.position-line{height:1px;width:32px;background:#c6a46b85}.album-position>span:last-child{opacity:.5}.swipe-hint{font-size:11px;color:#c7ccd6}.album-arrows{display:flex;gap:8px}.album-arrows button{width:44px;height:44px;background:none;border:1px solid #c6a46b60;border-radius:50%;color:var(--ivory);font-size:19px}.album-ending{padding:60px 8% 70px;text-align:center;position:relative}.gold-rule{display:block;width:1px;height:45px;background:linear-gradient(transparent,var(--gold));margin:0 auto 25px}.album-ending>p{font-family:var(--serif);font-size:30px;line-height:1.22}.fine-link{display:inline-flex;align-items:center;gap:20px;min-height:44px;font-size:12px;border-bottom:1px solid #c6a46b70;margin-top:23px}.invitation{background:var(--ivory);color:var(--navy);position:relative;padding:35px 8% 65px}.invitation:before{content:'';display:block;position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,var(--gold),transparent)}.personalise{max-width:470px;margin:0 auto 20px;border-bottom:1px solid #14264c20}.personalise>button{display:flex;justify-content:space-between;align-items:center;gap:20px;min-height:48px;border:0;background:none;padding:6px 0;width:100%;color:#516079;font-size:12px;text-align:left}.personalise>button span{font-size:21px;color:#9b7d49}.personalise form{padding:13px 0 20px}.personalise label{display:block;font-size:14px;margin-bottom:8px}.name-line{display:flex;border-bottom:1px solid #14264c50;gap:8px}.name-line input{background:transparent;border:0;color:var(--navy);width:100%;min-width:0;font-size:16px;padding:10px 0;min-height:46px;border-radius:0}.name-line button{flex-shrink:0;color:var(--navy);background:transparent;border:0;font-size:12px;min-height:44px;min-width:60px;padding:5px}.name-options{display:flex;align-items:center;gap:10px;justify-content:space-between;margin-top:6px}.name-options p{font-size:11px;line-height:1.65;color:#626b7b}.name-options button{min-height:44px;min-width:44px;border:0;background:none;color:var(--navy);font-size:12px}.letter{position:relative;max-width:500px;margin:0 auto;padding:34px 0 25px}.letter-heading{text-align:center;margin-bottom:33px}.letter-heading img{margin:0 auto 18px;object-fit:contain}.letter-heading .eyebrow{font-size:11px;color:#796849}.letter h2{font-size:36px;line-height:1.2;margin-bottom:22px;overflow-wrap:anywhere}.letter-body{font-family:var(--serif);font-size:25px;line-height:1.55;letter-spacing:-.15px}.signature{font-family:var(--serif);font-size:33px;font-style:italic;margin-top:28px}.signature span{color:#a38752;font-size:.8em}.letter-postscript{font-size:11px;letter-spacing:1.4px;margin-top:3px;color:#667086}.formal-invitation{max-width:620px;margin:37px auto 0;padding-top:35px;border-top:1px solid #14264c26;text-align:center}.formal-invitation .eyebrow{font-size:11px;letter-spacing:1.4px;color:#637086}.full-names{font-family:var(--serif);font-size:26px;line-height:1.2;margin:23px 0 0;overflow-wrap:anywhere}.full-names em{font-size:24px;display:inline-block;margin:9px 0;color:#987d4c}.celebrations{background:#eeebe3;color:var(--navy);padding:65px 8% 60px}.events-heading{max-width:650px}.events-heading .eyebrow{color:#74674e}.events-heading h2{margin:19px 0 24px;font-size:43px}.body-copy{font-size:14px;line-height:1.85}.event-list{margin-top:40px}.event{border-top:1px solid #14264c30;padding:30px 0 38px;display:grid;grid-template-columns:1fr 1.8fr;gap:20px}.event-number{grid-column:1/-1;font-size:11px;letter-spacing:1.2px}.event-date>span{font-family:var(--serif);font-size:80px;line-height:1}.event-date>div{font-size:14px;line-height:1.65;margin-top:10px;max-width:125px}.event-information{min-width:0}.event-information h3{font-size:32px}.event-information p{font-size:14px;line-height:1.8;margin-top:20px}.event-information .time{color:#796440;font-weight:500}.directions-link{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:44px;max-width:100%;padding:10px 12px;margin-top:18px;border:1px solid #b5a17c;border-radius:2px;color:var(--navy);font:500 14px/1.4 var(--sans)}.directions-link svg{flex-shrink:0}.directions-link:hover,.directions-link:focus-visible{background:#c6a46b1a;border-color:#8d754f}.rsvp{border-top:1px solid #14264c30;padding-top:42px}.rsvp h3{font-size:40px;margin:20px 0}.rsvp>p:not(.eyebrow){font-size:14px}.contacts{margin:22px 0}.contacts a{padding:17px 0;display:block;border-bottom:1px solid #14264c23;min-height:60px;font-size:14px;line-height:1.8}.contacts a span{display:block}.contacts a span:last-child{color:#657083}.rsvp .prototype-note{font-size:11px!important;color:#687287;line-height:1.8}footer{background:var(--navy);display:flex;align-items:center;flex-direction:column;padding:50px 8% calc(40px + env(safe-area-inset-bottom));text-align:center;gap:9px}.footer-mark{object-fit:contain;margin-bottom:12px}footer>p{font:36px/1.2 var(--serif)}footer>span{font-size:11px;letter-spacing:1.3px}footer>a{font-size:12px;min-height:44px;display:flex;align-items:center;margin-top:18px}.entry-wash{position:fixed;z-index:80;inset:0;pointer-events:none;background:linear-gradient(115deg,transparent 25%,#e3c99470 49%,#e3c99410 58%,transparent 78%);opacity:0;transform:translateX(-100%)}.motion-paused{scroll-behavior:auto}.motion-paused *, .motion-paused *:before,.motion-paused *:after{animation:none!important;transition:none!important}.motion-paused .photo-mount{opacity:1!important;transform:none!important}
@media(min-width:600px){.cover-copy h1{font-size:58px}.cover-copy .eyebrow{font-size:11px}.cover-dates{font-size:14px}.album-intro h2{font-size:50px}.album-page{flex-basis:63vw;width:63vw}.album-rail{padding-left:calc((100vw - min(63vw,470px))/2);padding-right:calc((100vw - min(63vw,470px))/2);scroll-padding:0;gap:40px}.photo-mount{height:650px;max-height:72svh}.album-page figcaption{font-size:32px}.letter-body{font-size:29px}.invitation{padding-top:55px}.event{grid-template-columns:1fr 1.3fr 2fr;gap:30px;padding:40px 0}.event-number{grid-column:auto;padding-top:10px}.event-date>span{font-size:95px}.contacts{display:grid;grid-template-columns:1fr 1fr;gap:0 35px}}
@media(min-width:1000px){.masthead{padding-left:5%;padding-right:5%}.mark-link{width:64px;height:64px}.mark-link img{width:60px;height:60px}.header-actions{gap:30px}.header-actions>a,.header-actions>button{font-size:12px}.opening{padding:115px 8% 35px;min-height:820px;min-height:100svh;display:flex;flex-direction:column;justify-content:center}.cover-layout{display:grid;grid-template-columns:1fr 1fr;max-width:1080px;width:100%;margin:auto;gap:9%}.cover-shot{height:min(75svh,760px);min-height:480px;max-height:none;justify-self:end;max-width:100%}.cover-copy{text-align:left;margin:0}.cover-copy h1{font-size:72px;line-height:1.08;margin:16px 0 22px;max-width:400px}.cover-copy h1 span{display:inline;font-size:.7em}.cover-copy .eyebrow{font-size:11px;letter-spacing:1.4px}.cover-dates{font-size:14px;line-height:1.8;max-width:250px}.entry-link{margin-top:35px;font-size:14px}.entry-arrow{width:44px;height:44px}.cover-hashtag{position:absolute;bottom:25px;right:5%;font-size:11px}.cover-light{left:43%;width:30%}.album-section{padding-top:90px}.album-intro h2{font-size:55px}.album-intro p:last-child{font-size:15px}.album-shell{margin-top:50px}.album-rail{gap:65px}.album-page{flex-basis:420px;width:420px;max-width:420px}.album-rail{padding-left:calc((100vw - 420px)/2);padding-right:calc((100vw - 420px)/2)}.photo-mount{height:625px;max-height:76svh}.album-navigation{max-width:680px;padding-top:24px}.album-ending{padding:75px 8% 90px}.album-ending>p{font-size:38px}.invitation{padding:55px 8% 85px}.letter{max-width:610px;padding-top:35px}.letter h2{font-size:42px}.letter-body{font-size:31px;line-height:1.55}.signature{font-size:39px}.formal-invitation{margin-top:45px}.full-names{font-size:32px}.celebrations{padding:85px max(8%,calc((100vw - 1100px)/2)) 80px}.events-heading h2{font-size:55px}.event-information h3{font-size:40px}.event-information p{font-size:15px}.rsvp h3{font-size:48px}.contacts a{display:flex;justify-content:space-between;gap:15px;flex-wrap:wrap}}
@media(max-width:359px){.masthead{padding-left:5%;padding-right:5%}.header-actions{gap:12px}.mark-link{width:48px;height:48px}.mark-link img{width:46px;height:46px}.opening{padding-left:16px;padding-right:16px}.cover-copy h1{font-size:38px}.cover-copy .eyebrow{font-size:11px;letter-spacing:1px}.cover-dates{font-size:11px}.cover-shot{min-height:330px}.album-intro h2{font-size:38px}.album-page{flex-basis:83vw;width:83vw}.photo-mount{min-height:350px}.album-navigation{padding-left:7%;padding-right:7%;gap:8px}.swipe-hint{font-size:11px}.album-arrows{gap:5px}.album-position{gap:7px}.position-line{width:20px}.letter h2{font-size:32px}.letter-body{font-size:24px}.event{grid-template-columns:1fr;gap:20px}.event-number{grid-column:auto}.event-date{display:flex;gap:22px;align-items:center}.event-date>div{margin:0;max-width:none}.event-information h3{font-size:36px}.full-names{font-size:25px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}.photo-mount{opacity:1!important;transform:none!important}}

.welcome-dialog{border:0;color:var(--navy);background:var(--ivory);width:calc(100% - 28px);max-width:460px;padding:20px 25px 25px;box-shadow:0 24px 100px #06112670;overflow:auto;max-height:85svh}.welcome-dialog:not([open]){display:none}.welcome-dialog::backdrop{background:#081630a8;backdrop-filter:blur(5px)}.welcome-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:22px}.welcome-top img{object-fit:contain}.welcome-top>button{border:0;background:none;font-size:27px;min-height:44px;min-width:44px;color:var(--navy)}.welcome-dialog h2{font-size:34px;margin-bottom:22px}.welcome-dialog label{font-size:14px;display:block;margin-bottom:10px}.welcome-dialog .name-options{align-items:center;margin-top:14px}.welcome-dialog .name-options p{max-width:240px}.welcome-dialog .name-line button{min-width:86px}.welcome-dialog .name-line input{font-size:16px}.cover-copy .eyebrow{font-size:11px}.cover-dates{font-size:14px}@media(max-width:359px){.welcome-dialog{padding:15px 20px 22px}.welcome-dialog h2{font-size:30px}.cover-dates{font-size:14px}.cover-copy h1{font-size:38px}.welcome-dialog .name-line button{min-width:78px;font-size:11px}}
/* Keep the invitation to enter within a normal portrait phone viewport. */
@media(max-width:999px){.cover-shot{height:calc(100vh - 350px - env(safe-area-inset-top));height:calc(100svh - 350px - env(safe-area-inset-top));min-height:310px}.opening{padding-bottom:18px}.cover-hashtag{margin-top:14px}.cover-copy{margin-top:20px}}
footer .design-credit{font:400 11px/1.8 var(--sans);letter-spacing:.04em;color:#b0b7c5;margin-top:16px}footer .design-credit span{font-weight:500}
.cover-invitation{font-size:14px;line-height:1.7;color:#e0dfdc;margin:0 0 10px}.family-names{font:400 clamp(24px,3.5vw,30px)/1.3 var(--serif);letter-spacing:-.01em;margin:22px 0 0}.family-names span{display:block;text-wrap:balance}.family-names em{display:block;font-size:20px;color:#796849;margin:12px 0}.formal-request{font-size:14px;line-height:1.9;margin:26px auto 0;max-width:360px}

/* The arrival keeps name entry and sound choice in a single, optional step. */
.welcome-open{overflow:hidden}
.welcome-dialog .name-note{font-size:11px;line-height:1.7;color:#626b7b;margin-top:10px}
.welcome-actions{margin-top:22px;display:flex;flex-direction:column;align-items:stretch;gap:4px}
.welcome-primary{display:flex;align-items:center;justify-content:space-between;gap:14px;min-height:50px;padding:13px 17px;border:1px solid var(--navy);background:var(--navy);color:var(--ivory);font-size:14px;line-height:1.5}
.welcome-primary>span{color:#d8bc8c;font-size:20px;line-height:1;transition:transform .3s}
.welcome-primary:hover>span{transform:translate(2px,-2px)}
.welcome-quiet{min-height:46px;padding:10px 14px;border:0;background:none;color:var(--navy);font-size:14px;text-decoration:underline;text-decoration-color:#14264c40;text-underline-offset:5px}
.header-actions{gap:14px}
.header-actions .music-toggle{gap:6px;padding:0 2px}
.sound-bars{display:flex;align-items:center;gap:2px;width:12px;height:16px;color:var(--gold)}
.sound-bars i{display:block;width:2px;height:12px;background:currentColor;transform:scaleY(.25);transform-origin:50% 50%}
.music-toggle[data-state="playing"] .sound-bars i{animation:sound-pulse 1.1s ease-in-out infinite alternate}
.music-toggle[data-state="playing"] .sound-bars i:nth-child(2){animation-delay:-.35s;animation-duration:.85s}
.music-toggle[data-state="playing"] .sound-bars i:nth-child(3){animation-delay:-.7s;animation-duration:1.3s}
.sound-notice{position:fixed;z-index:110;left:50%;bottom:calc(20px + env(safe-area-inset-bottom));transform:translateX(-50%);width:max-content;max-width:calc(100% - 32px);padding:12px 16px;background:var(--navy);color:var(--ivory);border:1px solid #c6a46b70;box-shadow:0 6px 25px #08163025;font-size:13px;line-height:1.6;pointer-events:none}
.sound-notice:empty{display:none}
.has-entered:not(.motion-paused) .cover-light{animation:light-drift 16s ease-in-out infinite alternate}
@keyframes sound-pulse{from{transform:scaleY(.25)}to{transform:scaleY(1)}}
@keyframes light-drift{from{transform:translateX(-8%) rotate(22deg);opacity:.55}to{transform:translateX(12%) rotate(25deg);opacity:1}}
@media(max-width:599px){.header-actions{gap:10px}}
@media(max-width:359px){.header-actions{gap:8px}.header-actions .music-toggle{gap:4px}.welcome-dialog .welcome-actions{margin-top:18px}}

/* Phone review: consistent icons, readable controls and visible album guidance. */
.enhanced .photo-mount{transform:translateY(0) scale(1);transition:transform 1s cubic-bezier(.2,.7,.2,1)}
.enhanced .album-page:not(.is-active) .photo-mount{transform:translateY(12px) scale(.96)}
.arrow-icon{display:inline-block;width:18px;height:18px;flex-shrink:0;vertical-align:middle}
.header-actions>a .arrow-icon{width:15px;height:15px}
.header-actions>a,.header-actions>button{font-size:12px}
.header-actions{gap:14px}
.header-actions .music-toggle{gap:7px}
.masthead.on-light{background:var(--ivory)}
.entry-arrow,.album-arrows button{display:inline-grid;place-items:center}
.contacts .arrow-icon{width:16px;height:16px;margin-left:4px}
footer>a{gap:7px}
h1[tabindex="-1"]:focus,h2[tabindex="-1"]:focus{outline:none}
.album-navigation{padding:0 8% 14px}
.album-shell{margin-top:28px}
.album-ending{padding-bottom:140px}
.album-ending:after{content:'';position:absolute;left:0;right:0;bottom:-1px;height:86px;background:linear-gradient(180deg,#27395300,var(--ivory));pointer-events:none}
.invitation:before{display:none}
@media(max-width:599px){
  .masthead{padding-left:5%;padding-right:5%}
  .mark-link{width:50px;height:50px}
  .mark-link img{width:48px;height:48px}
  .header-actions{gap:11px}
  .opening{padding-top:calc(82px + env(safe-area-inset-top));padding-bottom:28px}
  .cover-copy{display:contents}
  .cover-copy>.eyebrow{order:-3;text-align:center}
  .cover-copy>h1{order:-2;text-align:center;margin:7px -8px 22px}
  .cover-shot{order:-1;width:min(76vw,360px);height:auto;min-height:0;max-height:none;margin-bottom:24px}
  .cover-copy>.cover-invitation,.cover-copy>.cover-dates{text-align:center}
  .cover-copy>.entry-link{margin-top:14px}
  .album-intro h2{font-size:40px}
  .album-shell{margin-top:28px}
  .album-navigation{padding-top:0;padding-bottom:12px}
  .swipe-hint,.album-position{font-size:12px}
}
@media(max-width:359px){
  .header-actions{gap:8px}
  .header-actions>a,.header-actions>button{font-size:11px}
  .cover-shot{width:78vw}
  .album-position,.swipe-hint{font-size:11px}
}

/* Engraved gold detail for the opening portrait only. */
.cover-frame{position:absolute;z-index:3;inset:9px;border:1px solid #c6a46be6;box-shadow:0 0 0 .5px #14264c35,inset 0 0 0 .5px #14264c25;pointer-events:none}
.cover-frame:before{content:'';position:absolute;inset:3px;border:1px solid #e6d5b240}
.frame-corner{position:absolute;width:clamp(28px,8vw,44px);height:clamp(28px,8vw,44px);color:#d4b576;filter:drop-shadow(0 1px 1px #101f3f55)}
.frame-corner--tl{top:1px;left:1px}
.frame-corner--tr{top:1px;right:1px;transform:rotate(90deg)}
.frame-corner--br{bottom:1px;right:1px;transform:rotate(180deg)}
.frame-corner--bl{bottom:1px;left:1px;transform:rotate(270deg)}

/* Optional folded notes keep the practical invitation within easy reach. */
.love-notes{--letter-hand:'Caveat','Segoe Print','Bradley Hand',cursive;max-width:960px;margin:0 auto;padding:40px 8% 8px}
.love-notes-heading{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:6px 20px;margin-bottom:18px}
.love-notes-heading h2{font:400 10px/1.5 var(--sans);letter-spacing:.18em;text-transform:uppercase;color:#d6bb89}
.love-notes-heading p{margin-top:6px;font:400 11px/1.6 var(--sans);color:#d2d6de}
.love-notes-heading a{display:inline-flex;align-items:center;gap:8px;min-height:44px;font:400 11px/1.5 var(--sans);color:#e0caa6;text-decoration:underline;text-decoration-color:#c6a46b70;text-underline-offset:5px}
.love-notes-heading .arrow-icon{width:14px;height:14px}
.love-notes-grid{display:grid;align-items:start;gap:14px}
.love-note{position:relative;min-width:0;margin:0;border:1px solid #d5c5a7;background:linear-gradient(110deg,#f8f4ec,#eee7d9);color:var(--navy);box-shadow:0 5px 18px #08163020}
.love-note:after{content:'';position:absolute;top:0;right:0;width:17px;height:17px;background:linear-gradient(45deg,#d5c5a7 49%,#f8f4ec 51%);box-shadow:-1px 1px 1px #14264c10;pointer-events:none}
.love-note>summary{display:flex;align-items:center;justify-content:space-between;gap:14px;min-height:108px;padding:17px 22px;list-style:none;cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent}
.love-note>summary::-webkit-details-marker{display:none}
.love-note>summary::marker{content:''}
.love-note>summary:focus-visible{outline:2px solid var(--navy);outline-offset:-5px}
.note-cover{display:flex;flex-direction:column;min-width:0}
.note-from{font:400 9px/1.5 var(--sans);letter-spacing:.1em;text-transform:uppercase;color:#5d6572}
.note-to{margin-top:4px;font:400 26px/1.15 var(--letter-hand);color:var(--navy);overflow-wrap:break-word}
.note-action{margin-top:8px;font:400 11px/1.5 var(--sans);color:#6c583b;text-decoration:underline;text-decoration-color:#9e825550;text-underline-offset:3px}
.note-close{display:none}
.note-toggle{flex-shrink:0;color:#786342}
.love-note[open] .note-read,.love-note[open] .note-toggle-vertical{display:none}
.love-note[open] .note-close{display:inline}
.note-paper{margin:0 22px;padding:17px 0 21px;border-top:1px solid #14264c20}
.love-note[open] .note-paper{animation:note-unfold .28s ease-out}
.love-note blockquote{margin:0}
.love-note blockquote p{font:400 20px/1.45 var(--letter-hand);letter-spacing:0;color:var(--navy)}
.love-note blockquote p+p{margin-top:10px}
.love-salutation{display:block;margin-bottom:7px;font:400 23px/1.2 var(--letter-hand);color:#786342}
.love-note figcaption{display:flex;align-items:baseline;justify-content:flex-end;gap:8px;margin-top:10px}
.love-note-sender{font:400 23px/1.2 var(--letter-hand);color:#786342}
.love-note-recipient{font:400 9px/1.5 var(--sans);letter-spacing:.04em;color:#5d6572}
@keyframes note-unfold{from{opacity:.65;transform:translateY(-4px)}to{opacity:1;transform:none}}
@media(min-width:840px){
  .love-notes{padding-top:56px;padding-bottom:12px}
  .love-notes-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:20px}
  .love-note blockquote p{font-size:21px}
}

/* Small practical details keep the celebrations easy to plan for. */
.celebration-clock{max-width:380px;margin-top:28px;padding-top:18px;border-top:1px solid #14264c25}
.celebration-clock h3{font:400 13px/1.5 var(--sans);color:#526078}
.countdown-values{display:flex;gap:0;margin:12px 0 10px;width:fit-content}
.countdown-values>div{min-width:68px;padding:0 18px;text-align:center;border-left:1px solid #14264c20}
.countdown-values>div:first-child{border:0;padding-left:0}
.countdown-values>div:last-child{padding-right:0}
.countdown-values span{display:block;font:400 32px/1 var(--serif);font-variant-numeric:tabular-nums}
.countdown-values small{display:block;margin-top:5px;font:400 9px/1.5 var(--sans);letter-spacing:.08em;color:#526078}
.countdown-date{margin-top:9px;font:400 11px/1.6 var(--sans);color:#657083}
.day-palette{padding:8px 0 32px}
.day-palette h3{margin-bottom:17px;font-size:25px;line-height:1.2}
.day-colours{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;max-width:330px;margin:0;padding:0;list-style:none}
.day-colours li{display:flex;flex-direction:column;align-items:center;gap:8px;text-align:center;font:400 12px/1.5 var(--sans);color:#526078}
.colour-swatch{display:block;flex:none;width:28px;height:34px;border-radius:50% 50% 4px 4px;border:1px solid #14264c15;box-shadow:inset 1px 1px 0 #ffffff35}
.colour-swatch--sage{background:linear-gradient(120deg,#aebda8,#99ad93)}
.colour-swatch--pink{background:linear-gradient(120deg,#e4bfca,#d8a7b6)}
.colour-swatch--blue{background:linear-gradient(120deg,#a2b7cb,#839fb9)}
@media(min-width:640px){
  .day-palette{display:flex;flex-wrap:wrap;align-items:center;gap:22px 40px;padding-top:4px;padding-bottom:38px}
  .day-palette h3{margin:0}
  .day-colours{display:flex;gap:28px;max-width:none}
  .day-colours li{flex-direction:row;gap:10px}
}

/* Stable mounts and exact edge centring preserve the album's quiet rhythm. */
.album-page{align-self:stretch}
@media(max-width:599px){
  .album-rail{--album-page-width:min(82vw,470px);padding-left:calc((100% - var(--album-page-width))/2);padding-right:calc((100% - var(--album-page-width))/2);scroll-padding-left:0;scroll-padding-right:0}
  .album-page{flex-basis:var(--album-page-width);width:var(--album-page-width)}
  .photo-mount{min-height:0;height:clamp(280px,63vh,580px);height:clamp(280px,63svh,580px);max-height:calc(100vh - 240px - env(safe-area-inset-top));max-height:calc(100svh - 240px - env(safe-area-inset-top))}
}
@media(max-width:359px){
  .album-rail{--album-page-width:min(83vw,470px)}
}

/* Direct dates access and clear keyboard focus on light surfaces. */
.cover-dates a{display:inline-flex;align-items:center;justify-content:center;flex-wrap:wrap;min-height:44px;text-decoration:underline;text-decoration-color:#c6a46b70;text-underline-offset:5px}
.masthead.on-light :focus-visible,.invitation :focus-visible,.celebrations :focus-visible,.welcome-dialog :focus-visible{outline-color:var(--navy)}
@media(min-width:1000px){.cover-dates a{justify-content:flex-start}}
