﻿:root{--ink:#392741;--paper:#f5eef9;--accent:#795595;--line:#79559538;--font-display:'Marcellus',Georgia,serif;--font-body:'DM Sans',Arial,sans-serif;--control-bg:#f5eef9f2;--control-ink:#4d345e;--control-line:#b598ca70;--menu-bg:#21152f;--menu-ink:#f5eef9;--dialog-bg:#f5eef9;--dialog-ink:#392741;--field-bg:#fff9ff;--amethyst:#795595;--champagne:#c8a776}
html{scrollbar-width:none}html::-webkit-scrollbar{display:none}
body{font-size:16px}main{overflow:clip}h1,h2,h3,p{margin:0}h1,h2,h3{font-family:var(--font-display);font-weight:400;line-height:1.18}a,button{touch-action:manipulation}section{position:relative;scroll-margin-top:0}.noscript-note{position:relative;z-index:200;background:var(--paper);padding:30px}
.amethyst-hero{height:100svh;height:100dvh;min-height:590px;background:#21152f;color:#fff8fc;isolation:isolate;overflow:hidden}
.hero-scene{position:absolute;inset:0;overflow:hidden}
.hero-world,.hero-scene>.scene-film{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center bottom}
.amethyst-hero::after{content:'';position:absolute;z-index:1;inset:0;pointer-events:none;background:linear-gradient(180deg,#21152f94 0%,#21152f32 32%,transparent 53%,transparent 84%,#21152f85 100%)}
.hero-copy{position:relative;z-index:2;padding:clamp(34px,6svh,68px) 25px 0;text-align:center;text-shadow:0 2px 15px #21152f85}
.hero-preface{font-size:12px;line-height:1.65;margin:0 auto 17px;max-width:26em;color:#fff0fb}
#hero-title{font-size:clamp(49px,13.8vw,72px);line-height:1.02;font-weight:400;letter-spacing:-.035em}
#hero-title>span{display:block;white-space:nowrap;max-width:100%;overflow-wrap:anywhere}
#hero-title em{display:block;font-size:25px;font-style:normal;color:#f0d4ac;line-height:1.2;margin:5px 0;letter-spacing:0}
.hero-date{margin-top:22px;font-family:var(--font-display);font-size:18px;color:#fff3e6}
.hero-venue{font-size:13px;line-height:1.65;margin:7px auto 0;max-width:26em;color:#fff2fb}
.hero-next{position:absolute;z-index:3;bottom:max(24px,env(safe-area-inset-bottom));left:0;width:100%;display:flex;flex-direction:column;align-items:center;gap:7px;min-height:44px;font-size:12px;text-decoration:none;color:#fff6ff;text-shadow:0 1px 8px #21152f}
.hero-next>span:last-child{font-size:22px;line-height:1}
.scene-film{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;pointer-events:none;opacity:0;transition:opacity .35s ease}.scene-film.is-ready{opacity:1}
.chapter-heading{text-align:center;padding:76px 27px 44px;max-width:740px;margin:auto}
.chapter-heading>p:first-child,.chapter-note{font-size:12px;line-height:1.7;color:#795595;margin-bottom:17px}
.chapter-heading h2{font-size:clamp(33px,8.7vw,54px);color:#5a356b;text-wrap:balance;letter-spacing:-.025em}
.chapter-heading .heading-note{font-size:15px;line-height:1.75;margin:19px auto 0;max-width:430px;color:#6b5375}
/* The film always keeps the supplied portrait ratio. Text has its own growing surface. */
.heart-chapter{padding-bottom:70px;background:#eee3f1}
.heart-book{--book-width:min(90vw,440px);position:relative;display:grid;width:var(--book-width);max-width:calc(100% - 28px);margin:auto;isolation:isolate;box-shadow:0 18px 38px #4a274026;background:#703d59;overflow:hidden}
.book-media{grid-area:1/1;align-self:start;position:relative;width:100%;aspect-ratio:9/16;overflow:hidden;contain:paint}
.book-poster,#book-film{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;object-position:center}
#book-film{z-index:1;opacity:0;transition:none}#book-film.ready,#book-film.is-ready{opacity:1;transition:opacity .18s ease}
.family-letter{grid-area:1/1;align-self:start;position:relative;z-index:2;display:flex;flex-direction:column;align-items:center;justify-content:center;min-width:0;min-height:calc(var(--book-width)*16/9);padding:clamp(45px,13vw,72px) 9% 48px;text-align:center;color:#fff4e8;opacity:0;visibility:hidden;transition:opacity .65s ease,visibility .65s;text-shadow:0 1px 6px #32152d40}
.heart-book:not(.is-open) .family-letter{height:0;min-height:0;overflow:hidden;transition:none}
.heart-book.is-open .family-letter{opacity:1;visibility:visible}
.heart-book.is-extended .family-letter{justify-content:flex-start;padding-top:50px;background:linear-gradient(180deg,transparent 0px,transparent calc(var(--book-art-height) - 95px),#703d59 calc(var(--book-art-height) - 25px));border-inline:1px solid #c9a9868f;margin-inline:2.5%;width:95%;padding-inline:7%}
.heart-book.is-extended .family-letter::after{content:'';position:absolute;inset:auto 0 12px;border-bottom:1px solid #c9a9868f}
.letter-blessing{font-size:14px;line-height:1.7;max-width:30em;white-space:pre-line}
.family-letter h3{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:center;gap:5px 9px;font-size:clamp(29px,8.6vw,39px);line-height:1.3;margin:23px 0;color:#ffecd6;max-width:100%;overflow-wrap:anywhere}
.family-letter h3>span{max-width:100%}.family-letter h3 em{font-size:22px;font-style:normal;color:#e3bd87}
.families{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:17px;width:100%;margin-bottom:23px}
.families span{font-size:11px;color:#f4dacf}.families p{font-size:13px;line-height:1.65;margin-top:6px;overflow-wrap:anywhere}
.letter-request{font-size:14px;line-height:1.75;margin-bottom:22px}
.letter-date{font-family:var(--font-display);font-size:19px;color:#ffe6c8}.letter-venue{font-size:13px;line-height:1.7;margin-top:8px;max-width:100%}
.family-letter>a{display:inline-flex;align-items:center;justify-content:center;gap:9px;min-height:44px;font-size:12px;margin-top:20px;text-decoration:none;border-bottom:1px solid #ddba9680;max-width:100%}
.quiet-link{display:block;min-height:44px;padding:10px 5px;margin:25px auto 0;background:transparent;border:0;color:inherit;font-size:12px;text-decoration:underline;text-underline-offset:6px}.heart-chapter>.quiet-link{color:#6d467b}
/* Four distinct cutout scenes share a quiet, pale lilac programme surface. */
.celebrations{background:#f5eef9}.celebrations>.chapter-heading{padding-top:65px;padding-bottom:30px}
.ceremony{--event-paper:#f5eef9;position:relative;margin:0;width:100%;color:#49374e;isolation:isolate}
.ceremony-art{position:relative;aspect-ratio:4/3;height:auto;overflow:hidden;background:#b598ca}
.ceremony-art img,.ceremony-art .scene-film{object-position:center;transform:none}
.ceremony-copy{position:relative;z-index:1;isolation:isolate;padding:24px 31px 30px;text-align:center;margin:0;min-width:0}
.ceremony-copy::before{content:'';position:absolute;z-index:-1;inset:0;background-color:var(--event-paper);pointer-events:none}
.ceremony-date{font-size:12px;line-height:1.65;color:#744a78;margin-bottom:17px}
.ceremony-copy h3{font-size:clamp(32px,8.5vw,48px);line-height:1.2;color:#654070;text-wrap:balance;letter-spacing:-.025em}
.ceremony-venue{font-family:var(--font-display);font-size:22px;line-height:1.4;margin-top:14px}
.ceremony-description{font-size:15px;line-height:1.8;max-width:365px;margin:18px auto 0}
.ceremony-attire{font-size:13px;line-height:1.7;margin-top:20px;color:#704d79}
.ceremony-attire .label{display:block;font-size:11px;text-transform:none;letter-spacing:0;margin-bottom:3px}
.ceremony-map{display:inline-flex;align-items:center;min-height:44px;margin-top:15px;font-size:12px;text-decoration:underline;text-underline-offset:6px}
.our-story{padding:72px 26px 76px;background:#e5d4e7;color:#49374e}
.story-photo-wrap{position:relative;max-width:410px;margin:auto;padding:10px 10px 20px;background:#faf4f5;box-shadow:0 18px 45px #48264f25;transform:rotate(-2deg)}
.story-photo-wrap img{width:100%;height:auto;aspect-ratio:3/4;object-fit:cover}.story-photo-wrap figcaption{text-align:right;font-family:var(--font-display);font-size:22px;color:#795595;margin-top:14px;padding-inline:7px}
.story-copy{max-width:540px;margin:57px auto 0;text-align:left}
.story-copy h2{font-size:clamp(34px,8.8vw,53px);color:#613b70;text-wrap:balance;letter-spacing:-.025em;margin-bottom:27px}
.story-copy>p[data-bind]{font-family:var(--font-display);font-size:18px;line-height:1.9}
#story-tags{display:flex;flex-wrap:wrap;gap:9px 18px;margin-top:28px;color:#705278;font-size:12px}
.story-signature{font-family:var(--font-display);font-size:27px;color:#674274;margin-top:30px;overflow-wrap:anywhere}
.memory-chapter{padding-bottom:75px;background:#33213f;color:#f5e7f6}
.memory-chapter .chapter-heading h2{color:#f4e3f7}.memory-chapter .chapter-heading>p:first-child{color:#dbbadc}
#gallery-list{--memory-width:min(76vw,355px);--memory-gap:29px;--memory-inset:28px;padding:22px max(28px,calc((100vw - 1080px)/2)) 38px;scrollbar-width:none}#gallery-list::-webkit-scrollbar{display:none}
.memory{padding:10px 10px 19px;background:#fff8f4;box-shadow:0 11px 25px #130b1e50;transform:rotate(-2deg);transition:transform .5s}.memory:nth-child(even){transform:rotate(2deg)}.memory:focus-visible{transform:rotate(0deg)}
.memory-caption{font-family:var(--font-display);font-size:15px;color:#795980;text-align:center}
.gallery-controls{margin-top:10px;gap:26px}.gallery-controls button{border:0;min-width:48px;font-size:24px;color:#efd3eb}
#gallery-count{font-size:12px;letter-spacing:.05em;color:#ecd0e8}.album-hint{text-align:center;font-size:12px;color:#d0b3d6;margin:12px 26px 0;line-height:1.75}
.guest-chapter{background:#eee3ef;color:#463449;padding-bottom:70px}.guest-chapter .chapter-heading{padding-bottom:40px}
.guest-arrival{max-width:1160px;margin:auto}.arrival-art{position:relative;overflow:hidden;max-width:500px;margin:0 auto}
.arrival-art img{width:100%;height:auto;aspect-ratio:1/1.12;object-fit:cover;object-position:center 76%}
.guest-information{position:relative;padding:0 29px;max-width:650px;margin:auto}
.venue-note{padding:35px 0 32px;text-align:left;border-bottom:1px solid #b795bb66}
.venue-note .chapter-note{margin-bottom:11px}.venue-note h3{font-size:30px;line-height:1.35;color:#644070}
.venue-note>p[data-bind]{font-size:15px;margin-top:15px;line-height:1.75}.venue-note a{font-size:13px;min-height:44px;display:inline-flex;align-items:center;margin-top:11px}
.guest-note{padding:29px 0 3px}.guest-note-number{display:none}.guest-note h3{font-size:25px;color:#684776;margin-bottom:11px}.guest-note p{font-size:15px;line-height:1.85}
.date-chapter{padding:80px 25px;text-align:center;background:#302239;color:#eedcf2}
.date-chapter .chapter-note{color:#e1c39f}.date-chapter h2{font-size:clamp(34px,8.7vw,53px)}
.countdown-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;max-width:490px;margin:36px auto 30px}
.countdown-grid strong{display:block;font-family:var(--font-display);font-size:clamp(34px,9vw,53px);font-weight:400;line-height:1.2;color:#efd4e6}
.countdown-grid span{font-size:12px;line-height:1.7;color:#d8c0de}.date-chapter>p[data-date]{font-size:15px;color:#e0c29f}
.calendar-actions{margin-top:26px;gap:20px;font-size:12px}.calendar-actions a{min-height:44px;display:inline-flex;align-items:center}
.reply-chapter{background:#ecdce9}.reply-art{position:relative;overflow:hidden}
.reply-chapter>.reply-copy:only-child{grid-column:1/-1;margin-top:0}
.reply-art img{width:100%;height:auto;aspect-ratio:1/1.04;object-fit:cover;object-position:center 68%}
.reply-copy{position:relative;z-index:1;isolation:isolate;min-width:0;padding:34px 31px 36px;margin:-24px 0 0;text-align:center;background:transparent}
.reply-copy::before{content:'';position:absolute;z-index:-1;inset:0;background:#faf0f8;mask-image:linear-gradient(180deg,transparent,#000 24px);pointer-events:none}
.reply-copy h2{font-size:clamp(34px,8.6vw,53px);color:#664072;text-wrap:balance;letter-spacing:-.025em}
.reply-copy>p[data-bind]{font-size:15px;line-height:1.85;margin:23px auto 0;max-width:370px}
.reply-copy .button{margin:28px auto 0;border:1px solid #795595;padding:13px 25px;font-size:14px;color:#fff5fa;background:#69477c;min-height:49px}
#rsvp-note{margin-top:22px;color:#76587e;font-size:12px;line-height:1.75}
.closing-chapter{padding:74px 28px 88px;background:#21152f;color:#eeddf2;text-align:center}.closing-chapter>p:first-child{font-size:12px;color:#d4b8df}
.closing-chapter h2{display:flex;justify-content:center;align-items:baseline;flex-wrap:wrap;gap:8px 15px;font-size:clamp(35px,9.5vw,59px);margin:23px 0;overflow-wrap:anywhere}
.closing-chapter h2>span{max-width:100%}.closing-chapter h2 em{font-size:.65em;font-style:normal;color:#d6b58f}
.closing-chapter>p[data-bind]{max-width:420px;margin:auto;font-size:14px;line-height:1.85}.closing-chapter .hashtag{font-size:13px;color:#e0bdd7;margin-top:20px}
.closing-chapter .quiet-link{font-size:12px;color:#d5b9d9}.closing-chapter footer{font-size:11px;color:#bca4c4;margin-top:43px}.closing-chapter footer a{text-decoration:none}
.controls{left:20px;right:20px;justify-content:space-between;gap:20px;bottom:max(9px,env(safe-area-inset-bottom))}.controls button{font-size:11px;padding:9px 14px;box-shadow:none;backdrop-filter:blur(5px)}
.nav-menu{inset:0;width:100%;max-height:none;padding:clamp(50px,9svh,100px) max(35px,calc((100vw - 460px)/2)) 100px;display:flex;flex-direction:column;justify-content:safe center;border:0}
.nav-menu a{font-family:var(--font-display);font-size:clamp(22px,3.4svh,30px);border:0;padding:8px 0}.nav-number{font-family:var(--font-body);font-size:11px;color:#b28fc6}.nav-heading{text-transform:none;letter-spacing:.02em;color:#b997c8;margin-bottom:24px}
.amethyst-butterfly-field{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:4;contain:layout paint;opacity:0}.asset-flight-stage{position:relative}.amethyst-butterfly-field[data-active="true"]{opacity:1}
.amethyst-butterfly{position:absolute;top:0;left:0;width:33px;aspect-ratio:1;perspective:200px;opacity:0}.amethyst-butterfly img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;transform-origin:center;filter:drop-shadow(0 1px 3px #7e4ba944)}
.butterfly-left{clip-path:inset(0 50% 0 0)}.butterfly-right{clip-path:inset(0 0 0 50%)}
@media(min-width:700px){
  .ceremony-copy{padding-inline:max(40px,calc((100vw - 510px)/2))}
  .guest-arrival{padding-inline:35px}.arrival-art{max-width:600px}.guest-information{padding-inline:30px}
  .reply-chapter{max-width:none}.reply-art{max-height:700px}.reply-copy{max-width:none;margin-inline:0}
}
@media(min-width:900px),(min-width:700px) and (orientation:landscape){
  .amethyst-hero{min-height:580px}.hero-scene{left:43%;width:57%}.hero-world,.hero-scene>.scene-film{object-position:center center}
  .amethyst-hero::after{background:none}.hero-copy{position:absolute;inset:0 auto 0 0;width:43%;display:flex;flex-direction:column;justify-content:center;padding:45px 35px 80px;text-shadow:none}
  .hero-preface{font-size:14px;margin-bottom:27px}#hero-title{font-size:clamp(59px,6.4vw,91px)}#hero-title em{font-size:31px;margin:8px 0}.hero-date{font-size:21px;margin-top:30px}.hero-venue{font-size:14px;max-width:320px;margin:12px auto 0}.hero-next{width:43%;bottom:35px;font-size:13px}
  .chapter-heading{padding-block:96px 58px}.heart-chapter{padding-bottom:90px}.heart-book{--book-width:440px}.letter-blessing{font-size:15px}.families p{font-size:14px}.families span{font-size:11px}.letter-request{font-size:15px}.letter-venue{font-size:14px}
  .ceremony{display:grid;grid-template-columns:1.1fr 1fr;align-items:stretch;min-height:590px}.ceremony-art{height:100%;aspect-ratio:auto;min-height:590px}.ceremony-copy{display:flex;flex-direction:column;justify-content:center;align-items:center;padding:50px clamp(35px,4vw,65px);max-width:none;width:100%;margin:0}.ceremony-copy::before{mask-image:none;background-size:100% 100%;background-repeat:no-repeat}.ceremony-copy h3,.ceremony-venue{max-width:100%}.ceremony-date{margin-bottom:17px}.ceremony:nth-child(even) .ceremony-art{order:2}.ceremony-copy h3{font-size:clamp(37px,3.8vw,53px)}.ceremony-description{font-size:16px}.ceremony-venue{font-size:26px}.ceremony-attire{font-size:14px}
  .our-story{display:grid;grid-template-columns:minmax(0,420px) minmax(0,470px);align-items:center;justify-content:center;gap:8vw;padding:110px 6vw}.story-copy{margin:0}.story-photo-wrap{max-width:none;width:100%}.story-copy>p[data-bind]{font-size:19px}
  #gallery-list{--memory-width:310px;--memory-gap:39px;justify-content:safe center;padding-inline:50px}
  .guest-arrival{display:grid;grid-template-columns:1fr 1.05fr;gap:clamp(40px,6vw,85px);padding:0 45px;align-items:start}.arrival-art{position:sticky;top:35px;width:100%;margin-top:9px}.arrival-art img{aspect-ratio:2/3;object-fit:contain}.guest-information{padding:0}.venue-note{padding-top:0}.venue-note h3{font-size:35px}.guest-note{padding-top:26px}.guest-chapter{padding-bottom:95px}
  .date-chapter{padding-block:100px}.reply-chapter{display:grid;grid-template-columns:1fr 1fr;align-items:stretch;padding:0}.reply-art{max-height:none;min-height:720px}.reply-art img{height:100%;aspect-ratio:auto;object-position:center}.reply-copy{align-self:stretch;display:flex;flex-direction:column;align-items:center;justify-content:center;margin:0;padding:65px clamp(35px,5vw,80px);background:transparent;max-width:none}.reply-copy::before{mask-image:none;background-size:100% 100%;background-repeat:no-repeat}.reply-copy>p[data-bind]{font-size:16px}.closing-chapter{padding-block:90px}
  .controls{left:auto;gap:10px}.amethyst-butterfly{width:43px}
}
@media(max-height:650px) and (orientation:portrait){.hero-copy{padding-top:27px}.hero-preface{margin-bottom:11px;font-size:11px}#hero-title{font-size:47px}.hero-date{margin-top:16px;font-size:16px}.hero-venue{font-size:12px}.hero-next{bottom:18px}}
@media(max-width:359px){.chapter-heading{padding-inline:23px}.chapter-heading h2{font-size:32px}.family-letter{padding-inline:8%}.families{gap:11px}.families p{font-size:12px}.family-letter h3{font-size:29px;gap:6px}.ceremony-copy{padding-inline:26px}.ceremony-copy h3{font-size:31px}.ceremony-description{font-size:14px}.our-story{padding-inline:25px}.guest-information{padding-inline:24px}.countdown-grid{gap:6px}.controls{left:12px;right:12px}.controls button{font-size:10px}.reply-copy{padding-inline:26px}}
@media(prefers-reduced-motion:reduce){.amethyst-butterfly-field{display:none}.family-letter,.scene-film{transition:none}.memory,.story-photo-wrap{transform:none!important}}
