@font-face{font-family:Arm;src:url('assets/sans.ttf');font-display:swap}@font-face{font-family:Arm;src:url('assets/sans-light.ttf');font-weight:300;font-display:swap}@font-face{font-family:Book;src:url('assets/serif.ttf');font-display:swap}
:root{--ivory:#f2e5cc;--olive:#454331;--gold:#c3b18c;--ink:#484433}*{box-sizing:border-box}body{margin:0;background:var(--olive);color:var(--ivory);font:16px/1.7 Arm,sans-serif;min-width:260px}button,a{touch-action:manipulation}button{font:inherit;cursor:pointer;color:inherit}button:focus-visible,a:focus-visible{outline:2px solid #f3d9a5;outline-offset:5px}button:disabled{cursor:default}p,h1,h2,h3{margin:0}p{font-weight:300}a{color:inherit;text-underline-offset:4px}.ambient{position:fixed;inset:0;z-index:-1;background:radial-gradient(ellipse at 50% 45%,#6d665149,transparent 65%),#454331}.experience{min-height:100svh;display:flex;flex-direction:column;align-items:center;padding:0 24px max(18px,env(safe-area-inset-bottom));}.masthead{height:67px;flex-shrink:0;width:min(100%,1100px);display:flex;justify-content:space-between;align-items:center;gap:20px}.eyebrow{font-size:12px;letter-spacing:.15em;font-weight:400}.music{display:flex;gap:10px;align-items:center;font-size:12px;border:0;background:none;padding:12px 0}.bars{height:18px;display:flex;gap:3px;align-items:center}.bars i{width:2px;background:currentColor;height:6px}.bars i:nth-child(2){height:15px;animation-delay:-.4s!important}.bars i:nth-child(3){height:10px;animation-delay:-.2s!important}.music[aria-pressed=true] .bars i{animation:wave .8s ease-in-out infinite alternate}.stage-wrap{display:flex;align-items:center;justify-content:center;position:relative;width:100%;flex:1;min-height:0}.stage{position:relative;width:min(440px,calc((100svh - 198px)*.56));height:calc(100svh - 198px);min-height:380px;max-height:840px;min-width:220px;isolation:isolate;overflow:hidden;background:#8a7960;box-shadow:0 26px 60px #16190e59}.landscape,.painted-panel{position:absolute;inset:-2%;background:url('assets/landscape.webp') center/cover;will-change:transform}.wash{position:absolute;inset:0;background:linear-gradient(#302b1726,#3a342848 45%,#272b2945)}.painted-panel{inset:0;background-position:center;background-size:cover;box-shadow:0 0 40px #21170d45;will-change:clip-path,transform;opacity:0}.panel-one{filter:brightness(.78);background-size:145% auto;background-position:25% 50%}.panel-two{filter:brightness(.86);background-position:75% 35%;background-size:125% auto}.scene{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;padding:38px 27px;opacity:0;color:#fff2d8;text-shadow:0 2px 16px #1d251c70;will-change:opacity,transform;pointer-events:none}.intro-word{font:clamp(2.5rem,4vw,3.6rem)/1.5 Book;letter-spacing:.045em}.script-word{font:italic 28px/1.4 Book}.names h1{font:clamp(2.7rem,4vw,3.7rem)/1.5 Book;font-weight:400;margin:21px 0 0;overflow-wrap:anywhere;max-width:100%}.names h1>span,.names h1>i{display:block}.names h1 i{font-size:26px;line-height:1.25}.tiny-label{font-size:10px;letter-spacing:.12em;line-height:1.9}.date-line{font:clamp(1.3rem,2.5vw,1.8rem)/1.7 Book;margin:20px 0}.location{font:italic 19px Book}.finale{opacity:1}.final-names{font:clamp(2.3rem,3.5vw,3.2rem)/1.5 Book;margin-top:22px;max-width:100%;overflow-wrap:anywhere}.final-names>span{display:block}.final-names i{display:block;font-size:25px;line-height:1.3}.flourish{width:150px;height:20px;margin:18px 0;overflow:visible}.final-date{font-size:14px}.final-note{font-size:13px;line-height:1.9;max-width:250px;margin-top:18px}.stage-outline{position:absolute;inset:11px;border:1px solid #f3e4c52e;pointer-events:none}.stage-footnote{position:absolute;bottom:26px;left:20px;right:20px;text-align:center;font:italic 12px Book;opacity:.72}.side-note{position:absolute;top:50%;writing-mode:vertical-rl;font-size:10px;letter-spacing:.2em;color:#cabfa499}.side-note.left{left:calc(50% - 285px);transform:rotate(180deg) translateY(50%)}.side-note.right{right:calc(50% - 285px);transform:translateY(-50%)}.chapters{display:flex;width:min(440px,100%);gap:13px;margin-top:17px}.chapters button{flex:1;min-width:0;position:relative;border:0;padding:7px 0 4px;background:none;color:#ded2b6;font-size:10px;letter-spacing:.02em}.track{display:block;height:2px;background:#d8c9a13d;margin-bottom:7px;overflow:hidden}.track i{display:block;height:100%;width:100%;background:#ecd9ad;transform:scaleX(0);transform-origin:left}.chapters button[aria-pressed=true]{color:#fff1d5}.controls{display:flex;align-items:center;gap:20px;margin-top:6px;width:min(440px,100%);justify-content:center}.control-button{border:0;background:none;min-height:44px;padding:10px 4px;font-size:12px;min-width:57px}.details-button{border:1px solid #b3a5829c;background:#4c4938;padding:10px 20px;min-height:44px;font-size:12px;flex:1;max-width:250px;transition:background .2s}.details-button:hover{background:#665e44}.music-status{font-size:12px;text-align:center;max-width:440px}.music-status:empty{display:none}.no-js{text-align:center;font-size:14px}dialog{padding:0;border:1px solid #9b8761;max-width:650px;width:calc(100% - 40px);max-height:calc(100svh - 48px);background:#eee5d3;color:var(--ink);box-shadow:0 25px 90px #1118}dialog::backdrop{background:#24291ccc;backdrop-filter:blur(5px)}.close-button{position:sticky;top:0;margin-left:auto;display:flex;align-items:center;gap:9px;border:0;background:#eee5d3ed;padding:12px 22px;font-size:13px;z-index:2}.close-button span{font-size:24px;line-height:1}.details-content{text-align:center;padding:0 45px 40px}.details-content h2{font:32px/1.6 Book;margin:17px 0}.small-rule{width:50px;height:1px;background:#ad956b;margin:20px auto}.invitation-copy{font-size:16px;line-height:2}.details-date{font:24px Book;margin:30px 0}.venues{display:grid;grid-template-columns:1fr 1fr;gap:25px;border-block:1px solid #b5a682;padding:28px 0;margin:25px 0}.venues article{min-width:0}.venues time{font:26px Book;color:#8b6f43}.venues h3{font:18px/1.6 Book;margin:13px 0}.venues p,.venues a{font-size:14px;line-height:1.8}.venues a{display:inline-block;margin-top:12px}.save-date{background:var(--olive);color:var(--ivory);border:1px solid var(--olive);padding:13px 24px;font-size:14px;min-height:50px}.details-end{font:italic 18px Book;margin-top:24px}[hidden]{display:none!important}@keyframes wave{to{transform:scaleY(.4)}}
.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.word{display:inline-block;white-space:nowrap}.ch{display:inline-block;will-change:opacity,transform,filter}.intro .tiny-label{margin-bottom:14px}.script-word{color:#f6e2b4}.scene-sub{font:italic 17px/1.6 Book;color:#f8e8c6;margin-top:14px;opacity:.92}.names .scene-sub{margin-top:4px}.flourish.small{width:118px;margin:12px 0 4px}.flourish .line{fill:none;stroke:#eee0bd;stroke-width:1;stroke-linecap:round;stroke-dasharray:1;stroke-dashoffset:0}.flourish .heart{fill:#f1dcae;fill-opacity:.85;stroke:#f3e2bb;stroke-width:1;stroke-dasharray:1;stroke-dashoffset:0;transform-box:fill-box;transform-origin:center}.flourish .dot{fill:#eee0bd;transform-box:fill-box;transform-origin:center}.date-sub{font-size:13px;letter-spacing:.14em;margin:-8px 0 14px;color:#f6e7c8}.final-names{text-shadow:0 2px 16px #1d251c70,0 0 0 #f6dca800}.final-names>i,.names h1>i{color:#f6e2b4}.sparkles{position:absolute;inset:0;pointer-events:none;overflow:hidden;opacity:0}.sparkles i{position:absolute;left:var(--x);top:100%;width:var(--s);height:100%;animation:drift var(--d) linear var(--delay) infinite}.sparkles i:before{content:'';position:absolute;top:0;left:0;width:var(--s);height:var(--s);border-radius:50%;background:radial-gradient(circle,#fffaf0 0,#f3dca6 45%,#f3dca600 72%);box-shadow:0 0 9px #f6dca899;animation:twinkle var(--t) ease-in-out var(--delay) infinite alternate}.stage.is-paused .sparkles i,.stage.is-paused .sparkles i:before{animation-play-state:paused}
.masthead,.chapters,.controls{animation:softIn 1.2s cubic-bezier(.2,.7,.2,1) both}.chapters{animation-delay:.25s}.controls{animation-delay:.4s}.side-note{animation:fadeIn 2s .6s both}
dialog[open]{animation:dialogIn .6s cubic-bezier(.2,.8,.2,1)}dialog[open]::backdrop{animation:fadeIn .45s ease-out}dialog[open] .details-content>*{animation:rise .85s cubic-bezier(.2,.8,.2,1) both}dialog[open] .details-content>:nth-child(2){animation-delay:.08s}dialog[open] .details-content>:nth-child(3){animation:drawLine 1s .3s cubic-bezier(.6,0,.2,1) both}dialog[open] .details-content>:nth-child(4){animation-delay:.24s}dialog[open] .details-content>:nth-child(5){animation-delay:.34s}dialog[open] .details-content>:nth-child(6){animation-delay:.44s}dialog[open] .details-content>:nth-child(7){animation-delay:.54s}dialog[open] .details-content>:nth-child(8){animation-delay:.64s}dialog[open] .details-content>:nth-child(9){animation-delay:.74s}.details-content h2{background:linear-gradient(100deg,var(--ink) 42%,#b8925a 50%,var(--ink) 58%) 120% 0/250% 100%;-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}dialog[open] .details-content h2{animation:rise .85s .08s cubic-bezier(.2,.8,.2,1) both,sheen 2.4s .7s ease-in-out both}.invitation-copy.soft{font:italic 18px/1.8 Book;margin-top:14px;color:#6b5a3b}.details-date small{display:block;font:13px/1.6 Arm,sans-serif;letter-spacing:.14em;text-transform:uppercase;color:#8b6f43;margin-top:6px}.save-date{transition:background .25s,color .25s,transform .25s}.save-date:hover{background:#5a5640;transform:translateY(-1px)}
@keyframes drift{from{transform:translate(0,0)}to{transform:translate(var(--sway),-118%)}}@keyframes twinkle{from{opacity:.1;transform:scale(.55)}to{opacity:1;transform:scale(1)}}@keyframes softIn{from{opacity:0;transform:translateY(10px)}}@keyframes fadeIn{from{opacity:0}}@keyframes dialogIn{from{opacity:0;transform:translateY(22px) scale(.985)}}@keyframes rise{from{opacity:0;transform:translateY(14px);filter:blur(4px)}}@keyframes drawLine{from{transform:scaleX(0)}}@keyframes sheen{from{background-position:120% 0}to{background-position:-20% 0}}
@media(max-width:600px){.experience{padding-inline:0;padding-bottom:max(10px,env(safe-area-inset-bottom))}.masthead{height:54px;padding:0 19px;gap:12px}.masthead .eyebrow{font-size:10px;letter-spacing:.08em}.music{font-size:11px}.stage{width:100%;min-width:0;height:calc(100svh - 179px);min-height:400px;max-height:920px;box-shadow:none}.stage-wrap{flex:0 0 auto}.scene{padding:30px 26px}.side-note{display:none}.chapters{width:calc(100% - 38px);margin-top:10px;gap:12px}.controls{width:calc(100% - 38px);gap:12px;margin-top:3px}.details-button{font-size:12px;padding-inline:12px}.stage-outline{inset:10px}.stage-footnote{bottom:22px}.names h1{font-size:clamp(2.5rem,10vw,3.8rem)}.intro-word{font-size:clamp(2.5rem,10vw,3.7rem)}.final-names{font-size:clamp(2.2rem,9vw,3.3rem)}.date-line{font-size:clamp(1.35rem,5.8vw,1.8rem)}.details-content{padding:0 22px 32px}.details-content h2{font-size:28px}.venues{grid-template-columns:1fr;gap:25px}.venues article+article{border-top:1px solid #b5a682;padding-top:23px}.music-status{padding:0 20px}.final-note{font-size:13px}.tiny-label{font-size:10px}}@media(max-height:620px) and (min-width:601px){.experience{padding-top:10px}.masthead{height:42px}.stage{min-height:280px;width:260px;height:360px}.stage .tiny-label{font-size:9px}.stage .names h1{font-size:2.4rem}.stage .final-names{font-size:2rem}.stage .flourish{margin:10px 0}.stage .intro-word{font-size:2.1rem}.stage .scene-sub{margin-top:8px}.stage .final-note{font-size:12px;margin-top:10px}.side-note{display:none}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}.landscape,.painted-panel,.scene,.ch{will-change:auto}.sparkles{display:none}}
@media(max-width:600px){.scene-sub{font-size:16px}.flourish{width:136px}.date-sub{font-size:12px}}
@media(max-height:720px){.final-names{margin-top:12px;line-height:1.35}.finale .flourish{margin:12px 0}.final-note{margin-top:12px}.intro .tiny-label{margin-bottom:8px}}
