:root{color:#f9f2ec;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;--wine:#39131d;--wine-deep:#1b090f;--rose:#8f3040;--blush:#f7e5dc;--gold:#d7b578;--gold-light:#f6e8bd;--ink:#492a30;background:#210b12;font-family:Montserrat,sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth;min-width:320px}body{min-width:320px;min-height:100vh;margin:0}button{font:inherit}button:focus-visible{outline:2px solid var(--gold-light);outline-offset:5px}.site-shell{isolation:isolate;background:radial-gradient(at 50% 40%,#57212c 0%,#39151f 38%,#1f0b12 76%),#1f0b12;place-items:center;min-height:100vh;padding:64px 20px 36px;display:grid;position:relative;overflow-x:clip}.site-shell:before{z-index:-1;pointer-events:none;content:"";opacity:.18;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='.78' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.18'/%3E%3C/svg%3E");position:fixed;inset:0}.ambient-glow{z-index:-1;filter:blur(100px);opacity:.18;pointer-events:none;border-radius:50%;width:440px;height:440px;position:fixed}.ambient-glow-one{background:#d4ad68;top:-210px;left:-120px}.ambient-glow-two{background:#9e3547;bottom:-240px;right:-180px}.sparkle-field{z-index:-1;pointer-events:none;position:fixed;inset:0;overflow:hidden}.sparkle{bottom:-12px;left:var(--left);width:var(--size);height:var(--size);opacity:0;animation:drift var(--duration) var(--delay) linear infinite;background:#f5dca5;border-radius:50%;position:absolute;box-shadow:0 0 13px 3px #e4bd7b44}.invitation-wrap{opacity:.22;filter:blur(4px);width:min(100%,740px);margin:auto;transition:opacity 1.1s,filter 1.1s,transform 1.1s cubic-bezier(.2,.8,.2,1);transform:translateY(36px)scale(.96)}.is-open .invitation-wrap{opacity:1;filter:none;transform:translateY(0)scale(1)}.invitation-card{color:var(--ink);background:linear-gradient(145deg,#fffaf1 0%,#f7eade 48%,#fbf1e5 100%);padding:17px;position:relative;box-shadow:0 38px 110px #09040988,0 0 0 1px #f6dfac55}.invitation-card:after{color:#8f3040;content:"XV";letter-spacing:-.12em;opacity:.035;pointer-events:none;font:700 clamp(120px,28vw,230px)/1 Cinzel,serif;position:absolute;top:53%;right:-15px;transform:rotate(-8deg)}.invitation-card:before{content:"";pointer-events:none;border:1px solid #c7a565;position:absolute;inset:7px}.card-border{pointer-events:none;border:1px solid #d9c39480;position:absolute;inset:14px}.card-content{z-index:1;text-align:center;padding:49px clamp(22px,7vw,72px) 43px;position:relative}.top-mark{color:#b58639;letter-spacing:1px;background:radial-gradient(circle,#fff9ec 30%,#f3e4c8 100%);border:1px solid #c5a464;border-radius:50%;place-items:center;width:62px;height:62px;margin:0 auto 22px;font:600 19px Cinzel,serif;display:grid;position:relative;box-shadow:0 0 0 5px #d7b57821,0 0 25px #c5a46435}.top-mark:before,.top-mark:after{content:"";background:linear-gradient(90deg,#0000,#c5a464);width:55px;height:1px;position:absolute;top:50%}.top-mark:before{right:calc(100% + 13px)}.top-mark:after{left:calc(100% + 13px);transform:rotate(180deg)}.top-mark i{color:#a86d4e;font:11px Georgia,serif;position:absolute;top:-6px;right:-3px}.eyebrow,.opening-kicker,.section-kicker{color:#a37d40;letter-spacing:.28em;text-transform:uppercase;margin:0;font:600 10px Montserrat,sans-serif}.intro-line{color:#7a5a53;margin:25px 0 15px;font:italic 19px/1.35 Cormorant Garamond,serif}.guest-name{color:#762a3b;text-shadow:0 4px 22px #6b304015;flex-direction:column;gap:0;margin:0;padding:.08em 0 .12em;font:400 clamp(54px,10vw,88px)/.94 Great Vibes,cursive;display:flex}.guest-name span:first-child{transform:translate(-14px)}.guest-name span:last-child{transform:translate(18px)}.family-name{color:#785052;letter-spacing:.18em;text-transform:uppercase;margin:18px 0 0;font:500 13px Cinzel,serif}.ornament{stroke:#b39457;stroke-width:1px;width:min(250px,72%);margin:19px auto 15px;display:block}.milestone{color:#8f3040;letter-spacing:.11em;text-transform:uppercase;margin:0;font:600 clamp(24px,5vw,33px) Cinzel,serif}.xv-highlight{color:#b18438;text-shadow:0 1px #fff7df,0 3px 12px #ad7b2c35;margin:0 .035em;font-size:1.24em;display:inline-block}.message{color:#735e60;max-width:450px;margin:13px auto 35px;font:italic 18px/1.55 Cormorant Garamond,serif}.event-section{border-top:1px solid #d7c59b;border-bottom:1px solid #d7c59b;padding:28px 0 31px}.event-section h2{color:#4d252e;margin:8px 0 22px;font:500 34px Cormorant Garamond,serif}.event-details{grid-template-columns:repeat(3,1fr);gap:10px;display:grid}.detail-item{background:linear-gradient(145deg,#fffaf1,#f8eddf);border:1px solid #d8c492;flex-direction:column;justify-content:center;align-items:center;min-height:156px;padding:17px 10px 15px;transition:transform .3s,box-shadow .3s,border-color .3s;display:flex;position:relative;box-shadow:0 8px 22px #6f34410b}.detail-item:before{content:"";border-top:1px solid #a37d40;border-left:1px solid #a37d40;width:9px;height:9px;position:absolute;top:7px;left:7px}.detail-item:after{content:"";border-bottom:1px solid #a37d40;border-right:1px solid #a37d40;width:9px;height:9px;position:absolute;bottom:7px;right:7px}.detail-item:hover{border-color:#b89757;transform:translateY(-4px);box-shadow:0 14px 26px #6f34411b}.detail-icon{color:#a37d40;height:22px;font:21px Cormorant Garamond,serif}.detail-label{color:#9c7140;letter-spacing:.22em;text-transform:uppercase;margin:6px 0 3px;font-size:9px;font-weight:600}.detail-item strong{color:#51262f;font:600 14px Cinzel,serif}.detail-item .detail-primary{color:#762a3b;font:600 23px/1.15 Cinzel,serif}.detail-item .location-primary{font-size:14px}.detail-item>span:last-child{color:#806b67;margin-top:5px;font:13px Cormorant Garamond,serif}.countdown-section{padding:28px 0 11px}.countdown-grid{grid-template-columns:repeat(4,1fr);gap:10px;max-width:430px;margin:18px auto 0;display:grid}.countdown-unit{background:linear-gradient(145deg,#fffaf1,#f8ecdc);border:1px solid #d3bd8d;align-content:center;min-height:84px;display:grid;position:relative;overflow:hidden;box-shadow:inset 0 0 18px #b9913d0d}.countdown-unit:before{content:"";background:linear-gradient(90deg,#0000,#bb9959,#0000);width:70%;height:1px;position:absolute;top:0;left:15%}.countdown-value{color:#762a3b;font-variant-numeric:tabular-nums;font:600 clamp(24px,6vw,36px) Cinzel,serif;animation:.48s cubic-bezier(.2,.8,.2,1) both number-reveal}.countdown-label{color:#886f60;letter-spacing:.12em;text-transform:uppercase;margin-top:3px;font-size:9px}.arrival-celebration{background:radial-gradient(at 50% 0,#fff7e4,#f9eee1 50%,#f1dfd6 100%);border:1px solid #c4a45e;max-width:470px;margin:18px auto 2px;padding:25px clamp(17px,5vw,34px) 24px;animation:.95s cubic-bezier(.2,.8,.2,1) both arrival-enter;position:relative;overflow:hidden;box-shadow:inset 0 0 0 5px #f7e9d6,0 12px 30px #67263818}.arrival-celebration:before{content:"";pointer-events:none;border:1px solid #c8aa705c;position:absolute;inset:8px}.arrival-confetti{z-index:0;pointer-events:none;position:absolute;inset:0;overflow:hidden}.arrival-confetti span{top:-12px;left:var(--left);width:var(--size);height:calc(var(--size) * 1.45);background:var(--confetti-color);opacity:0;animation:celebration-fall var(--duration) var(--delay) ease-in both;border-radius:2px;position:absolute}.arrival-celebration>:not(.arrival-confetti){z-index:1;position:relative}.celebration-medallion{color:#8f3040;background:linear-gradient(145deg,#fff8e5,#ecd8a8);border:1px solid #b48b45;border-radius:50%;place-items:center;width:72px;height:72px;margin:0 auto 17px;font:600 20px Cinzel,serif;animation:2.8s ease-in-out infinite medallion-glow;display:grid;position:relative;box-shadow:0 0 0 5px #d2b77525,0 0 32px #c8a75d48}.celebration-medallion:before,.celebration-medallion:after{content:"";border:1px solid #b48b4555;border-radius:50%;position:absolute;inset:-8px}.celebration-medallion:after{border-color:#b48b452c;inset:-15px}.arrival-kicker{color:#a37d40;letter-spacing:.24em;text-transform:uppercase;margin:0;font:600 9px Montserrat,sans-serif}.arrival-title{color:#8f3040;letter-spacing:.045em;margin:8px 0 0;font:600 clamp(22px,5vw,30px) Cinzel,serif}.arrival-message{color:#735e60;max-width:350px;margin:8px auto 17px;font:italic 17px/1.4 Cormorant Garamond,serif}.arrival-date{border-top:1px solid #c9ad727d;border-bottom:1px solid #c9ad727d;align-items:center;gap:12px;padding:8px 17px;display:inline-flex}.arrival-day{color:#8f3040;font:600 39px/.95 Cinzel,serif}.arrival-date-copy{color:#74555a;text-align:left;flex-direction:column;align-items:flex-start;gap:3px;display:flex}.arrival-date-copy strong{letter-spacing:.09em;text-transform:uppercase;font:600 10px Montserrat,sans-serif}.arrival-date-copy small{color:#a37d40;font:500 11px Montserrat,sans-serif}.pass-card{text-align:left;background:#fff9efaa;border:1px dashed #ad8c50;align-items:center;gap:13px;max-width:420px;margin:15px auto 0;padding:13px 17px;display:flex}.pass-star{color:#a37d40;font-size:22px}.pass-card p{color:#735a57;margin:2px 0;font-size:12px}.pass-card .pass-title{color:#642c45;letter-spacing:.14em;text-transform:uppercase;font:600 10px Montserrat,sans-serif}.pass-card .pass-folio{font-variant-numeric:tabular-nums}.closing-ornament{opacity:.72;margin:23px auto 2px}.closing{color:#9e7650;margin:6px 0 0;font:italic 27px Great Vibes,cursive}.signature{color:#832c3e;letter-spacing:.06em;margin:2px 0 0;font:400 16px Cormorant Garamond,serif}.outside-caption{color:#e2c994;letter-spacing:.08em;text-align:center;opacity:0;margin:18px 0 0;font:italic 14px Cormorant Garamond,serif;transition:opacity .6s .7s}.is-open .outside-caption{opacity:.8}.opening-screen{z-index:5;background:radial-gradient(at 50% 44%,#602832 0%,#3c1722 42%,#1d0b11 100%);place-items:center;transition:opacity 1s,visibility 1s,transform 1.1s cubic-bezier(.7,0,.2,1);display:grid;position:fixed;inset:0;overflow:hidden}.opening-screen:before{content:"";pointer-events:none;border:1px solid #d5b57855;position:absolute;inset:19px}.opening-screen:after{content:"";pointer-events:none;border:1px solid #d5b57828;position:absolute;inset:27px}.opening-screen-hidden{visibility:hidden;opacity:0;transform:scale(1.06)}.opening-content{z-index:1;text-align:center;flex-direction:column;align-items:center;width:min(100% - 40px,500px);animation:1.1s cubic-bezier(.2,.8,.2,1) both rise-in;display:flex;position:relative}.opening-seal{color:#e7cf97;border:1px solid #d7b578;border-radius:50%;place-items:center;width:84px;height:84px;margin-bottom:30px;font:500 22px Cinzel,serif;display:grid;position:relative}.opening-seal:before,.opening-seal:after{content:"";border:1px solid #d7b57860;border-radius:50%;position:absolute;inset:7px}.opening-seal:after{border-color:#d7b57835;inset:-5px}.opening-seal i{color:#f1dba8;font:17px Georgia,serif;position:absolute;top:-9px;right:-2px}.opening-kicker{color:#ddc48d}.opening-content h2{color:#fff4e8;margin:18px 0 0;font:400 clamp(46px,10vw,68px)/.95 Cormorant Garamond,serif}.opening-name{color:#e4c88d;margin:17px 0 0;font:400 38px Great Vibes,cursive}.open-button{color:#402034;cursor:pointer;background:linear-gradient(120deg,#ead39a,#f7e9bd 48%,#d3b372);border:1px solid #f5dda5;border-radius:999px;align-items:center;gap:11px;min-height:51px;margin-top:32px;padding:0 25px;transition:transform .25s,box-shadow .25s;display:inline-flex;box-shadow:0 6px 32px #09040944}.open-button:hover{transform:translateY(-3px);box-shadow:0 13px 34px #09040966}.envelope-icon{font-size:20px}.opening-hint{color:#e8d5bb9c;letter-spacing:.06em;margin:14px 0 0;font-size:10px}.opening-flourish{color:#d5b57824;font:220px/1 Cormorant Garamond,serif;position:absolute;top:50%;transform:translateY(-50%)}.flourish-left{left:-43px}.flourish-right{right:-43px;transform:translateY(-50%)scaleX(-1)}@keyframes drift{0%{opacity:0;transform:translate(0,0)scale(.6)}15%{opacity:.65}75%{opacity:.35}to{opacity:0;transform:translate(26px,-110vh)scale(1.25)}}@keyframes rise-in{0%{opacity:0;transform:translateY(22px)}to{opacity:1;transform:translateY(0)}}@keyframes number-reveal{0%{opacity:.35;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes arrival-enter{0%{opacity:0;transform:translateY(18px)scale(.97)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes medallion-glow{0%,to{transform:scale(1);box-shadow:0 0 0 5px #d2b77525,0 0 22px #c8a75d30}50%{transform:scale(1.035);box-shadow:0 0 0 8px #d2b77538,0 0 38px #c8a75d66}}@keyframes celebration-fall{0%{opacity:0;transform:translateY(-8px)rotate(0)}12%{opacity:.92}88%{opacity:.85}to{opacity:0;transform:translateY(260px)rotate(500deg)}}@media (width<=560px){.site-shell{padding:22px 12px}.invitation-card{padding:11px}.card-content{padding:36px 18px 30px}.card-border{inset:10px}.top-mark{width:58px;height:58px;margin-bottom:19px}.intro-line{margin:22px 0 14px;font-size:17px}.guest-name{padding:.1em 0 .13em;font-size:clamp(54px,15vw,76px);line-height:.94}.family-name{font-size:11px}.message{margin-bottom:26px;font-size:17px}.event-section{padding:23px 0 24px}.event-section h2{margin-bottom:14px;font-size:30px}.event-details{grid-template-columns:1fr;gap:0}.detail-item{min-height:125px;padding:12px 4px}.detail-icon{height:18px}.detail-label{margin-top:3px}.countdown-grid{gap:5px}.countdown-unit{min-height:73px}.countdown-label{letter-spacing:.05em;font-size:8px}.opening-flourish{font-size:145px}.flourish-left{left:-36px}.flourish-right{right:-36px}}@media (width<=700px) and (height<=560px){.opening-content{width:min(100% - 36px,420px)}.opening-seal{width:62px;height:62px;margin-bottom:18px;font-size:18px}.opening-content h2{margin-top:12px;font-size:clamp(38px,8vw,50px)}.opening-name{margin-top:10px;font-size:31px}.open-button{min-height:44px;margin-top:18px}.opening-hint{margin-top:9px}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
