:root{--ink: #2e3c5e;--gold: #b08c50;--paper: #f5f0e7;--surround: #e8e4dc}html{-webkit-text-size-adjust:100%;text-size-adjust:100%}body{margin:0;background:var(--surround);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}picture{display:contents}.stage{height:100vh;height:100svh;display:flex;align-items:center;justify-content:center;overflow:hidden}.card-frame{position:relative;flex:none;overflow:hidden}.card{position:relative;width:735px;height:1106px;transform-origin:top left}.card__inner{position:absolute;inset:0;transform-origin:top center;background:var(--paper);font-family:Cormorant Garamond,serif;color:var(--ink);overflow:hidden;animation:inv-card 1.2s ease-out both}.card__bg{position:absolute;left:0;top:0;width:735px;height:1114px;display:block}.orn{position:absolute;display:block}.orn--top{left:250px;top:258px;width:220px;animation:inv-slide-l 1s .9s ease-out both}.orn--mid{left:215px;top:602px;width:405px;animation:inv-slide-r 1s 1.9s ease-out both}.orn--bottom{left:240px;top:955px;width:260px;animation:inv-slide-l 1s 2.7s ease-out both}.greeting{position:absolute;left:200px;right:200px;top:148px;margin:0;text-align:center;font-size:15px;font-weight:600;letter-spacing:2px;line-height:1.7;animation:inv-rise .9s .5s ease-out both}.couple{position:absolute;left:0;right:0;top:310px;height:278px;margin:0;font-weight:400}.name{position:absolute;left:0;right:0;text-align:center;font-family:Great Vibes,cursive;font-size:94px;font-weight:400;line-height:1.15}.name--groom{top:0}.name--bride{top:170px}.name__initial{font-family:Alex Brush,cursive}.couple__amp{position:absolute;left:0;right:0;top:118px;display:flex;align-items:center;justify-content:center;gap:18px;animation:inv-rise .9s 1.4s ease-out both}.couple__rule{width:48px;height:2px;background:var(--gold);opacity:.75}.couple__amp-glyph{font-family:Great Vibes,cursive;font-size:56px;color:var(--gold);line-height:1}.detail{position:absolute}.detail__label{font-size:20px;font-weight:700;letter-spacing:3px}.detail__value{font-variant:small-caps;letter-spacing:1px}.detail--date{left:297px;top:681px;width:280px;animation:inv-rise .9s 2.2s ease-out both}.detail--date .detail__value{font-size:20px;margin-top:2px}.detail--venue{left:297px;top:786px;width:300px;animation:inv-rise .9s 2.5s ease-out both}.detail--venue .detail__value{font-size:19px;line-height:1.25;margin-top:3px}.map{position:absolute;left:0;right:0;top:912px;display:flex;align-items:center;justify-content:center;gap:14px;animation:inv-rise .9s 3s ease-out both}.map__rule{width:40px;height:1px}.map__rule--left{background:linear-gradient(to left,var(--gold),transparent)}.map__rule--right{background:linear-gradient(to right,var(--gold),transparent)}.map__button{position:relative;display:inline-block;padding:10px 44px;border:1.5px solid var(--ink);border-radius:30px;color:var(--ink);font-family:Cormorant Garamond,serif;font-size:16px;font-weight:600;letter-spacing:3px;text-decoration:none;white-space:nowrap;background:transparent;box-shadow:inset 0 0 0 3px #2e3c5e14;transition:background-color .35s ease,color .35s ease,box-shadow .35s ease}.map__button:hover,.map__button:focus-visible{background:var(--ink);color:#fff;box-shadow:none}.map__button:focus-visible{outline:2px solid var(--gold);outline-offset:3px}@keyframes inv-card{0%{opacity:0;transform:scale(1.02)}to{opacity:1;transform:scale(1)}}@keyframes inv-rise{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}@keyframes inv-slide-l{0%{opacity:0;transform:translate(-90px)}to{opacity:1;transform:translate(0)}}@keyframes inv-slide-r{0%{opacity:0;transform:translate(90px)}to{opacity:1;transform:translate(0)}}@media(prefers-reduced-motion:reduce){.card__inner,.orn,.greeting,.couple__amp,.detail,.map{animation:none}.map__button{transition:none}}
