@font-face{font-family:WeddingBrush;src:url('fonts/wedding-brush.woff2') format('woff2');font-display:swap;font-weight:400}@font-face{font-family:WeddingSong;src:url('fonts/wedding-song.woff2') format('woff2');font-display:swap;font-weight:400 700}
:root{--sand:#E8DCC7;--oat:#D4B895;--moss:#606C38;--ink:#333C26;--clay:#B08B6E;--sage:#8B9D83;--serif:WeddingSong,'Songti SC',serif;--brush:WeddingBrush,'STKaiti','KaiTi',serif}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:24px}body{margin:0;background:var(--sand);color:var(--ink);font-family:var(--serif);font-size:16px;line-height:2;-webkit-font-smoothing:antialiased}body:after{content:'';position:fixed;inset:0;pointer-events:none;z-index:8;opacity:.025;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='.9' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Cpath fill='%23333C26' filter='url(%23n)' opacity='.6' d='M0 0h180v180H0z'/%3E%3C/svg%3E")}a{color:inherit;text-decoration:none}a:focus-visible{outline:2px solid var(--moss);outline-offset:7px;border-radius:16px}p,h1,h2,figure{margin:0}h1,h2{font-weight:400}img{width:100%;height:auto;display:block;border-radius:20px}main{max-width:1440px;margin:auto}.cover{padding:24px 6% 0}.cover-top{display:flex;justify-content:space-between;font-size:14px;letter-spacing:.28em;color:var(--moss);padding-bottom:30px}.cover-layout{display:grid;grid-template-columns:1fr 1.04fr;gap:5%;align-items:center;max-width:1100px;margin:auto}.cover-copy{padding-left:22px}.eyebrow{font-size:14px;letter-spacing:.2em;font-weight:500;color:var(--moss)}h1{font-family:var(--brush);font-size:clamp(66px,7.4vw,104px);line-height:1.32;letter-spacing:.02em;margin:18px 0 22px}.names{font-size:26px;letter-spacing:.17em;font-weight:500}.names span,.signature span,.ending-copy span{font-family:Georgia,serif;font-style:italic;color:var(--moss);padding:0 10px}.cover-note{margin-top:24px;line-height:2.1;letter-spacing:.08em}.open-link{display:inline-flex;align-items:center;gap:24px;margin-top:27px;border:1px solid var(--moss);border-radius:32px;padding:8px 25px;font-size:15px;transition:background .4s,color .4s}.open-link:hover{background:var(--moss);color:var(--sand)}.cover-photo{padding-top:12px;position:relative}.cover-photo img{aspect-ratio:2/3;object-fit:cover;border-radius:48% 48% 22px 22px;max-height:720px}.cover-photo figcaption{font-size:12px;color:var(--moss);text-align:right;margin-top:10px;letter-spacing:.15em}.scroll-hint{display:flex;align-items:center;justify-content:center;gap:17px;padding:26px 0;font-size:12px;letter-spacing:.15em}.scroll-hint span{width:1px;height:30px;background:var(--clay)}.section{max-width:1100px;margin:auto;padding:76px 5%}h2{font-family:var(--brush);font-size:clamp(38px,4.5vw,60px);line-height:1.5;letter-spacing:.025em}.letter{display:grid;grid-template-columns:1fr 1fr;gap:9%;align-items:center;padding-top:90px;padding-bottom:100px}.letter h2{margin-top:19px}.letter-body{font-size:17px;line-height:2.25}.letter-body p+p{margin-top:20px}.signature{margin-top:27px;font-size:21px;font-weight:500}.signature small{font-size:14px;margin-left:12px}.chapter-head{display:flex;gap:28px;align-items:center;margin-bottom:37px}.chapter-number{font-family:Georgia,serif;font-style:italic;font-size:66px;line-height:1;color:var(--clay)}.chapter-head h2{margin-top:8px}.chapter-intro{font-size:16px;color:var(--moss);margin:13px 0 30px;letter-spacing:.08em}.feature figcaption{font-size:14px;color:var(--moss);letter-spacing:.08em;margin-top:15px}.landscape-pair{display:grid;grid-template-columns:1fr 1fr;gap:24px;margin-top:32px;align-items:start}.landscape-pair figure:nth-child(2){margin-top:55px}.portraits{display:grid;grid-template-columns:repeat(4,1fr);gap:20px;align-items:start;margin-top:40px}.portraits figure:nth-child(even){margin-top:40px}.chapter-indoor{max-width:none;background:#D4B89566;border-radius:32px;padding-left:max(5%,calc((100% - 990px)/2));padding-right:max(5%,calc((100% - 990px)/2))}.duet{display:grid;grid-template-columns:1fr 1fr;gap:30px;align-items:center;margin-top:35px}.duet img{border-radius:45% 45% 20px 20px}.duet-copy{padding:25px 14px}.duet-copy h2{font-size:42px}.duet-copy p{margin-top:20px;font-size:16px}.indoor-pair{margin-top:36px;display:grid;grid-template-columns:repeat(3,1fr);gap:24px;align-items:start}.indoor-pair figure:nth-child(2){padding-top:65px}.chapter-joy{padding-top:95px;padding-bottom:85px}.joy-layout{display:grid;grid-template-columns:1fr 1.3fr;gap:30px;align-items:center}.joy-stack figure+figure{margin-top:26px}.joy-stack figure:last-child{width:66%;margin-left:auto}.chapter-sunset{background:var(--moss);color:var(--sand);border-radius:32px;max-width:1200px;margin:0 auto;padding:75px max(5%,calc((100% - 980px)/2))}.chapter-sunset .eyebrow,.chapter-sunset .chapter-number,.chapter-sunset figcaption{color:var(--sand)}.sunset-pair{display:grid;grid-template-columns:1fr 1.3fr;gap:30px;margin:35px 0;align-items:center}.sunset-pair figure:first-child{padding-top:55px}.sunset-pair figure:first-child img{border-radius:44% 44% 20px 20px}.sunset-pair p{font-family:var(--brush);font-size:36px;line-height:1.7;margin:26px 0 0}.last-landscape{width:82%;margin-left:auto}.details{max-width:820px;text-align:center;padding-top:95px;padding-bottom:80px}.details h2{margin-top:15px}.details-intro{margin-top:20px;letter-spacing:.08em}.details dl{max-width:550px;margin:35px auto 0;text-align:left}.details dl div{display:grid;grid-template-columns:1fr 1fr;gap:20px;padding:18px 0;border-top:1px solid #606c3850}.details dt{font-size:15px}.details dd{margin:0;text-align:right;font-size:19px}.pending-note{font-size:14px;color:var(--moss);margin-top:20px}.ending{padding:20px 24px 55px;text-align:center}.ending h2{font-family:var(--brush);font-size:62px;margin:20px 0}.ending-copy>p:last-of-type{font-size:22px;letter-spacing:.14em}.ending-copy a{display:inline-block;font-size:14px;margin-top:30px;text-decoration:underline;text-underline-offset:8px}footer{text-align:center;color:var(--moss);font-size:12px;letter-spacing:.08em;padding:0 24px 30px}
@media(max-width:700px){.cover{padding:18px 22px 0}.cover-top{font-size:12px;padding-bottom:25px;letter-spacing:.19em}.cover-layout{display:flex;flex-direction:column;gap:0}.cover-copy{padding:0;text-align:center;position:relative;width:100%}.cover-copy .eyebrow{font-size:12px;letter-spacing:.35em}.cover h1{font-size:clamp(48px,14vw,68px);line-height:1.25;letter-spacing:.04em;margin:12px 0 17px}.names{font-size:21px;letter-spacing:.15em}.cover-note{font-size:14px;margin-top:13px;letter-spacing:.04em}.open-link{margin-top:18px;padding:6px 22px;font-size:14px}.cover-photo{margin:24px 0 0;width:100%;padding:0}.cover-photo img{aspect-ratio:2/2.75;object-position:50% 65%;border-radius:46% 46% 20px 20px}.cover-photo figcaption{font-size:12px;letter-spacing:.05em}.scroll-hint{padding:21px 0;font-size:12px}.section{padding:52px 23px}h2{font-size:38px;line-height:1.5}.eyebrow{font-size:13px;letter-spacing:.15em}.letter{display:block;padding:50px 31px 58px;text-align:center}.letter h2{font-size:36px;margin:16px 0 25px}.letter-body{font-size:16px;line-height:2.2}.letter-body p+p{margin-top:16px}.signature{font-size:20px;margin-top:26px}.chapter-head{gap:17px;margin-bottom:25px}.chapter-number{font-size:50px}.chapter-head h2{font-size:37px;margin-top:4px}.chapter-intro{font-size:14px;margin-top:10px;line-height:2}.feature figcaption{font-size:13px;letter-spacing:.03em;margin-top:12px}.landscape-pair{grid-template-columns:1fr;gap:21px;margin-top:27px}.landscape-pair figure{width:91%}.landscape-pair figure:nth-child(2){margin-top:0;margin-left:auto}.portraits{grid-template-columns:1fr 1fr;gap:18px 14px;margin-top:28px}.portraits figure:nth-child(even){margin-top:32px}.portraits img{border-radius:18px}.chapter-indoor{padding:45px 23px;border-radius:28px}.duet{gap:20px;grid-template-columns:1.15fr 1fr;margin-top:25px}.duet-copy{padding:0}.duet-copy h2{font-size:29px;line-height:1.6}.duet-copy p{font-size:14px;margin-top:12px}.indoor-pair{grid-template-columns:1fr 1fr;gap:18px 14px;margin-top:25px}.indoor-pair figure:nth-child(2){padding-top:36px}.indoor-pair figure:last-child{width:75%;grid-column:1/-1;justify-self:center;margin-top:5px}.chapter-joy{padding-top:59px;padding-bottom:55px}.joy-layout{gap:16px;grid-template-columns:1fr 1fr}.joy-stack figure+figure{margin-top:18px}.joy-stack figure:last-child{width:84%}.chapter-sunset{padding:42px 23px;border-radius:28px;margin:0 12px}.chapter-sunset .chapter-head{gap:14px}.chapter-sunset h2{font-size:34px}.sunset-pair{grid-template-columns:1fr 1.1fr;gap:17px;margin:27px 0}.sunset-pair figure:first-child{padding-top:20px}.sunset-pair p{font-size:25px;margin-top:18px}.last-landscape{width:94%}.details{padding-top:65px;padding-bottom:45px}.details h2{font-size:35px}.details-intro{font-size:15px;margin-top:17px}.details dl{margin-top:27px}.details dl div{padding:16px 0;gap:12px;grid-template-columns:1.3fr 1fr}.details dt{font-size:14px}.details dd{font-size:17px}.pending-note{font-size:13px}.ending{padding:15px 23px 38px}.ending h2{font-size:49px;line-height:1.5;margin:15px 0}.ending-copy>p:last-of-type{font-size:20px}.ending-copy a{font-size:13px;margin-top:23px}footer{font-size:12px;letter-spacing:0}img{border-radius:18px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}}
@font-face{font-family:WeddingWenKai;src:url('fonts/wedding-wenkai.woff2') format('woff2');font-display:swap;font-weight:400}body{font-family:WeddingWenKai,var(--serif);font-size:19px}.letter-body{font-family:WeddingWenKai,serif;font-size:22px;line-height:2.05;letter-spacing:.06em}.cover-note,.duet-copy p{font-family:WeddingWenKai,serif;font-size:20px}.eyebrow,.cover-top,.names,.details dl,.venue-address,.event-summary{font-family:var(--serif)}.event-summary{margin-top:23px;font-size:17px;line-height:1.8}.event-summary time{letter-spacing:.08em}.event-summary time>span{font-size:13px;margin-left:8px}.event-summary strong{display:block;font-weight:500;font-size:23px;letter-spacing:.09em}.event-summary p{font-size:16px;margin-top:7px}.event-summary a{font-family:WeddingWenKai,serif;font-size:15px;text-decoration:underline;text-underline-offset:5px;color:var(--moss)}.date-art{display:flex;flex-direction:column;align-items:center;margin:33px 0 26px}.date-art>span{font-size:15px;letter-spacing:.3em}.date-art strong{font-family:Georgia,serif;font-size:74px;font-weight:400;line-height:1.3;letter-spacing:.06em}.date-art i{font-weight:400;font-size:40px;color:var(--clay)}.details dd small{font-family:WeddingWenKai,serif;font-size:15px;margin-left:14px}.details dd time{font-size:30px;line-height:1.4}.details .venue-row{grid-template-columns:90px 1fr}.details .venue-row dd{line-height:1.8}.venue-address{max-width:540px;margin:18px auto 0;font-size:16px;line-height:1.9;user-select:text;overflow-wrap:anywhere}.venue-actions{display:flex;justify-content:center;gap:13px;flex-wrap:wrap;margin-top:26px}.venue-actions a,.venue-actions button{font:17px WeddingWenKai,serif;color:var(--ink);background:transparent;border:1px solid var(--moss);border-radius:26px;padding:12px 21px;cursor:pointer;line-height:1.3}.venue-actions a{background:var(--moss);color:var(--sand)}button:focus-visible{outline:2px solid var(--moss);outline-offset:5px}.action-status{font-size:15px;min-height:30px;margin-top:12px}.music-control[hidden]{display:none}.music-control{position:fixed;right:20px;bottom:max(20px,env(safe-area-inset-bottom));z-index:9;max-width:230px;text-align:right}.music-control button{display:flex;gap:9px;align-items:center;margin-left:auto;border:1px solid var(--clay);border-radius:28px;padding:12px 17px;background:var(--sand);color:var(--ink);font:16px WeddingWenKai,serif;cursor:pointer}.music-control button[aria-pressed=true]{background:var(--moss);color:var(--sand)}#music-status{font-size:13px;line-height:1.5;background:var(--sand);border-radius:14px;margin-top:5px}#music-status:empty{display:none}footer{padding-bottom:85px}@media(max-width:700px){.letter-body{font-size:20px;line-height:2.05;letter-spacing:.02em}.cover-note{font-size:17px;line-height:1.9}.duet-copy p{font-size:17px;line-height:1.9}.event-summary{margin-top:18px;font-size:17px}.event-summary strong{font-size:22px}.event-summary p{font-size:15px}.cover-copy .cover-note{display:none}.cover-photo{margin-top:23px}.date-art strong{font-size:65px}.details .venue-row{grid-template-columns:65px 1fr;gap:15px}.details .venue-row dd{font-size:18px}.venue-address{font-size:15px}.details dd time{font-size:28px}.venue-actions{gap:10px}.venue-actions a,.venue-actions button{font-size:16px;padding:12px 16px}.music-control{right:14px;bottom:max(14px,env(safe-area-inset-bottom))}.music-control button{font-size:14px;padding:11px 15px}.feature figcaption,.chapter-intro{font-size:16px}.details-intro{font-size:18px}}
