@import url("https://fonts.googleapis.com/css2?family=Geist+Mono:wght@100..900&display=swap");:root{--light:#ffff2b;--dark:#fff}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Geist Mono,monospace;background-color:var(--dark)}.site-header{position:fixed;top:0;left:0;z-index:10;width:100%;display:flex;justify-content:flex-end;padding:.45rem clamp(.65rem,2vw,1.25rem);opacity:0;pointer-events:none;transition:opacity .7s ease}.site-header-visible{opacity:1;pointer-events:auto}.site-menu-button{display:inline-flex;flex-direction:column;justify-content:center;gap:.22rem;width:2rem;height:1.65rem;padding:.25rem;background:transparent;border:0;cursor:pointer}.site-menu-button span{display:block;width:100%;height:1px;background:#111;transition:opacity .18s ease,transform .18s ease}.site-header-menu-open .site-menu-button span:first-child{transform:translateY(.32rem) rotate(45deg)}.site-header-menu-open .site-menu-button span:nth-child(2){opacity:0}.site-header-menu-open .site-menu-button span:last-child{transform:translateY(-.32rem) rotate(-45deg)}.site-nav{position:absolute;top:100%;right:clamp(.65rem,2vw,1.25rem);display:flex;flex-direction:column;align-items:flex-end;gap:.65rem;min-width:8rem;padding:.7rem .9rem;background:rgb(255 255 255/82%);opacity:0;pointer-events:none;transform:translateY(-.35rem);transition:opacity .18s ease,transform .18s ease}.site-header-menu-open .site-nav{opacity:1;pointer-events:auto;transform:translateY(0)}.site-nav a{color:#111;font-size:clamp(.58rem,1.35vw,.78rem);font-weight:700;line-height:1;letter-spacing:0;text-decoration:none;text-transform:uppercase;white-space:nowrap}.site-nav a:focus-visible{outline:2px solid var(--light);outline-offset:.3rem}img{width:100%;height:100%;object-fit:cover}.widgets{position:fixed;top:0;left:0;width:100%;height:100svh;overflow:hidden;touch-action:none;background:#fff;transition:background-color .7s ease}.widgets-intro-awaiting{background:#000}.widget-preview-link{position:absolute;z-index:0;display:block;width:100%;height:100%;opacity:1;transition:opacity .7s ease}.widgets-intro-awaiting .widget-preview-link{opacity:0}.wedding-intro-skip{position:absolute;left:50%;bottom:clamp(1rem,4svh,2.25rem);z-index:5;padding:.55rem .85rem;color:#111;background:rgb(255 255 255/86%);border:0;border-radius:.125rem;font:inherit;font-size:clamp(.72rem,1.5vw,.9rem);font-weight:700;line-height:1;text-transform:uppercase;cursor:pointer;transform:translateX(-50%)}.wedding-intro-skip:focus-visible{outline:2px solid var(--light);outline-offset:.25rem}.widget-preview-img{position:absolute;width:100%;height:100%}.widget-preview-img img,.widget-preview-img video{position:absolute;top:0;left:0;z-index:0;width:100%;height:100%;will-change:opacity;object-fit:contain}.audio-toggle{display:inline-flex;align-items:center;justify-content:center;width:2.7rem;height:2.7rem;padding:0;color:#111;background:rgb(255 255 255/86%);border:0;border-radius:.125rem;cursor:pointer}.audio-toggle svg{width:1.45rem;height:1.45rem}.audio-toggle path{fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.audio-toggle path:first-child{fill:currentColor;stroke:none}.audio-toggle:focus-visible{outline:2px solid var(--light);outline-offset:.25rem}.widget-audio-toggle{position:absolute;top:clamp(4rem,8svh,5.25rem);right:clamp(.9rem,4vw,3rem);z-index:4;opacity:1;pointer-events:auto;transition:opacity .22s ease}.widgets-intro-pending .widget-audio-toggle{opacity:0;pointer-events:none}.widget-center-link{position:absolute;top:50%;left:50%;z-index:2;display:flex;align-items:center;justify-content:center;width:25vmin;height:25vmin;color:#000;text-decoration:none;border-radius:50%;transform:translate(-50%,-50%)}.widget-center-link:focus-visible{outline:2px solid var(--light);outline-offset:.5rem}.widgets-intro-pending .widget-center-link{pointer-events:none}.widget-photo-info{position:absolute;bottom:clamp(.9rem,4svh,2.25rem);left:clamp(.9rem,4vw,3rem);z-index:3;width:min(22rem,calc(100vw - 1.8rem));padding:1.05rem 1.15rem;color:#111;background:rgb(255 255 255/82%);border-left:.26rem solid var(--light);text-transform:uppercase;opacity:1;transition:opacity .22s ease}.widgets-intro-pending .widget-photo-info{opacity:0;pointer-events:none}.widget-photo-info span{display:block;font-size:clamp(.72rem,1.9vw,.95rem);font-weight:700;line-height:1}.widget-photo-info h1{margin:.45rem 0 .35rem;font-size:clamp(1.25rem,5.8vw,2.2rem);font-weight:800;line-height:1;letter-spacing:0}.widget-photo-info address{font-size:clamp(.88rem,3.2vw,1.08rem);font-style:normal;font-weight:600;line-height:1.25}.widget-photo-info a{display:inline-block;margin-top:.75rem;color:#111;font-size:clamp(.78rem,2.8vw,.95rem);font-weight:800;line-height:1;text-decoration:underline;text-underline-offset:.18rem}.widget-rsvp-info{position:absolute;top:clamp(4rem,8svh,5.25rem);left:clamp(.9rem,4vw,3rem);z-index:3;width:min(18rem,calc(100vw - 1.8rem));padding:1.05rem 1.15rem;color:#111;background:rgb(255 255 255/82%);border-left:.26rem solid var(--light);text-align:left;text-transform:uppercase;opacity:1;transition:opacity .22s ease}.widgets-intro-pending .widget-rsvp-info{opacity:0;pointer-events:none}.widget-rsvp-info span{display:block;font-size:clamp(.72rem,1.9vw,.95rem);font-weight:700;line-height:1}.widget-rsvp-info h1{margin:.45rem 0 .6rem;font-size:clamp(1rem,4.2vw,1.55rem);font-weight:800;line-height:1;letter-spacing:0}.widget-rsvp-info a{display:inline-block;color:#111;font-size:clamp(.78rem,2.8vw,.95rem);font-weight:800;line-height:1;text-decoration:underline;text-underline-offset:.18rem}.wedding-intro-text{position:absolute;top:clamp(1.25rem,5.5svh,3.5rem);left:50%;z-index:4;width:min(92vw,48rem);color:#111;text-align:center;text-transform:uppercase;font-size:clamp(.85rem,1.7vw,1.35rem);font-weight:600;line-height:1.25;letter-spacing:0;pointer-events:none;transform:translateX(-50%)}.widgets-intro-awaiting .wedding-intro-text{color:#fff}.widgets-intro-skipped .wedding-intro-text{display:none}.wedding-intro-start-prompt{position:absolute;top:0;left:50%;width:100%;opacity:0;transform:translateX(-50%) translateY(0)}.widgets-intro-awaiting .wedding-intro-start-prompt{animation:weddingIntroStartPromptIn .9s ease 1s both}.widgets-intro-activated .wedding-intro-start-prompt{animation:weddingIntroStartPromptFade .7s ease both}.wedding-intro-line{position:absolute;top:0;left:50%;width:100%;opacity:0;transform:translateX(-50%) translateY(-.25rem);animation-fill-mode:both}.widgets-intro-activated .wedding-intro-line-1{animation:weddingIntroFade 3s ease 7s both}.widgets-intro-activated .wedding-intro-line-2{animation:weddingIntroFade 3s ease 9.5s both}.widgets-intro-activated .wedding-intro-line-3{animation:weddingIntroFade 2s ease 12.5s both}.wedding-intro-line-4{top:0}.widgets-intro-activated .wedding-intro-line-4{animation:weddingIntroFinal 21s ease both}.wedding-intro-date{top:clamp(1.45rem,2.8vw,2rem)}.widgets-intro-activated .wedding-intro-date{animation:weddingIntroFinalDate 21s ease both}.wedding-intro-scroll{top:clamp(2.9rem,5.6vw,4rem);font-size:clamp(.7rem,1.2vw,.95rem);font-weight:500}.widgets-intro-activated .wedding-intro-scroll{animation:weddingIntroScrollPrompt 4s ease 17.4s both}@keyframes weddingIntroStartPromptIn{0%{opacity:0;transform:translateX(-50%) translateY(.2rem)}to{opacity:1;transform:translateX(-50%) translateY(0)}}@keyframes weddingIntroStartPromptFade{0%{opacity:1;transform:translateX(-50%) translateY(0)}to{opacity:0;transform:translateX(-50%) translateY(-.2rem)}}@keyframes weddingIntroFade{0%,to{opacity:0;transform:translateX(-50%) translateY(-.25rem)}22%,76%{opacity:1;transform:translateX(-50%) translateY(0)}}@keyframes weddingIntroDate{0%{opacity:0;transform:translateX(-50%) translateY(-.25rem)}to{opacity:1;transform:translateX(-50%) translateY(0)}}@keyframes weddingIntroScrollPrompt{0%{opacity:0;transform:translateX(-50%) translateY(-.25rem)}18%,52%{opacity:1;transform:translateX(-50%) translateY(0)}to{opacity:0;transform:translateX(-50%) translateY(.2rem)}}@keyframes weddingIntroHold{0%{opacity:0;transform:translateX(-50%) translateY(-.25rem)}to{opacity:1;transform:translateX(-50%) translateY(0)}}@keyframes weddingIntroFinal{0%,69.04%{opacity:0;transform:translateX(-50%) translateY(-.25rem)}78%,95.24%{opacity:1;transform:translateX(-50%) translateY(0)}to{opacity:0;transform:translateX(-50%) translateY(0)}}@keyframes weddingIntroFinalDate{0%,78.57%{opacity:0;transform:translateX(-50%) translateY(-.25rem)}82.86%,95.24%{opacity:1;transform:translateX(-50%) translateY(0)}to{opacity:0;transform:translateX(-50%) translateY(0)}}.widget-title{text-transform:uppercase;font-size:.75rem;font-weight:500;padding:.25rem .5rem;background-color:var(--light);border-radius:.125rem;opacity:0;transition:opacity .9s ease}.widgets-intro-complete .widget-title{opacity:1}.widget-title:empty{display:none}#widget-svg{position:absolute;top:0;left:0;z-index:1;width:100%;height:100%;opacity:0;pointer-events:none;transition:opacity .9s ease}.widgets-intro-awaiting #widget-svg,.widgets-intro-complete #widget-svg,.widgets-intro-ring-active #widget-svg,.widgets-intro-scroller-active #widget-svg{opacity:1}#widget-svg [data-segment]{pointer-events:none}.widget-segment-content{opacity:1;transform-box:view-box;transform-origin:center;transform:scale(1);transition:opacity .22s ease,transform .36s cubic-bezier(.22,1,.36,1);will-change:opacity,transform}#widget-platinum-ring{opacity:0;pointer-events:none;transform-box:view-box;transform-origin:center;transition:opacity .22s ease;will-change:opacity,transform}#widget-platinum-ring image{opacity:1}#widget-indicator-group{pointer-events:none}#widget-indicator{opacity:1;transition:opacity .12s ease}#widget-placeholder-ring{opacity:0;stroke-dasharray:1;stroke-dashoffset:1;transform-box:view-box;transform-origin:center;transform:scale(.985);transition:opacity .18s ease .12s,stroke-dashoffset .36s cubic-bezier(.22,1,.36,1) 80ms,transform .32s cubic-bezier(.22,1,.36,1) 80ms}#widget-svg.is-scroller-active #widget-indicator,#widget-svg.is-scroller-active .widget-segment-content{opacity:1}#widget-svg.is-scroller-active #widget-placeholder-ring{opacity:0;stroke-dashoffset:1;transform:scale(.985);transition:opacity .12s ease,stroke-dashoffset .18s ease,transform .18s ease}#widget-svg.is-scroller-idle .widget-segment-content{opacity:0;transform:scale(.68)}#widget-svg.is-scroller-idle #widget-indicator{opacity:0}#widget-svg.is-scroller-idle [data-segment]{pointer-events:none}#widget-svg.is-scroller-idle #widget-placeholder-ring{opacity:1;stroke-dashoffset:0;transform:scale(1)}.widgets-intro-scroller-active #widget-svg .widget-segment-content{opacity:0;transform:scale(1)}.widgets-intro-scroller-active #widget-svg #widget-indicator,.widgets-intro-scroller-active #widget-svg #widget-platinum-ring{opacity:0}.widgets-intro-scroller-active #widget-svg #widget-placeholder-ring{opacity:1;stroke-dashoffset:0;transform:scale(1)}.widgets-intro-awaiting #widget-svg .widget-segment-content{opacity:0;transform:scale(.68)}.widgets-intro-awaiting #widget-svg #widget-indicator,.widgets-intro-awaiting #widget-svg #widget-platinum-ring{opacity:0}.widgets-intro-awaiting #widget-svg #widget-indicator-diamond{opacity:1}.widgets-intro-awaiting #widget-svg #widget-placeholder-ring{opacity:1;stroke-dashoffset:0;transform:scale(1)}.widgets-intro-ring-active #widget-svg .widget-segment-content{opacity:0;transform:scale(.68)}.widgets-intro-ring-active #widget-svg #widget-indicator{opacity:0}.widgets-intro-ring-active #widget-svg #widget-indicator-diamond{opacity:1}.widgets-intro-ring-active #widget-svg #widget-placeholder-ring{opacity:1;stroke:#e5e4e2;stroke-dashoffset:0;stroke-width:1.25;transform:scale(1)}#widget-indicator{stroke:var(--light);stroke-width:1.5;stroke-linecap:round}#widget-indicator-diamond{pointer-events:none}#widget-placeholder-ring{fill:none;stroke:#e5e4e2;stroke-width:1.5;pointer-events:none}.info-page{display:grid;min-height:100svh;place-items:center;padding:4rem 1.5rem;color:#111;background:#fff}.info-page h1{font-size:clamp(1.25rem,6vw,4rem);font-weight:700;letter-spacing:0}.photo-page{min-height:100svh;color:#f6f6f6;background:#fff}.photo-nav{position:fixed;top:0;left:0;z-index:3;display:flex;justify-content:space-between;width:100%;padding:1rem;pointer-events:none}.photo-nav a,.photo-nav span{display:inline-flex;align-items:center;min-height:2rem;padding:.35rem .6rem;color:#000;text-decoration:none;text-transform:uppercase;font-size:.75rem;font-weight:600;background:var(--light);border-radius:.125rem}.photo-nav a{pointer-events:auto}.photo-nav-group{display:flex;gap:.5rem}.photo-detail{position:relative;min-height:100svh;overflow:hidden}.photo-media-shell{position:absolute;inset:0}.photo-detail img,.photo-detail video{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}.photo-audio-toggle{position:absolute;top:clamp(4rem,8svh,5.25rem);right:clamp(1rem,4vw,3rem);z-index:3}.photo-video-overlay{position:absolute;left:50%;bottom:clamp(4.5rem,8svh,6rem);z-index:3;max-width:min(32rem,calc(100vw - 2rem));padding:.65rem .85rem;color:#111;background:rgb(255 255 255/86%);font-size:clamp(.9rem,3.4vw,1.3rem);font-weight:800;line-height:1.05;text-align:center;text-transform:uppercase;transform:translateX(-50%)}.photo-detail:after{position:absolute;inset:0;content:"";background:linear-gradient(0deg,rgba(0,0,0,.82),rgba(0,0,0,.18) 45%,rgba(0,0,0,0))}.photo-detail figcaption{position:absolute;left:clamp(1rem,4vw,3rem);bottom:clamp(1rem,5vw,3rem);z-index:2}.photo-detail span{display:block;margin-bottom:.4rem;color:var(--light);text-transform:uppercase;font-size:.75rem;font-weight:600}.photo-detail h1{font-size:clamp(2.25rem,8vw,7rem);line-height:.92;font-weight:700;text-transform:uppercase}