:root{--page:#edf1fa;--ink:#34405b;--paper:#fdfdff;--accent:#2146c7;--accent-dark:#2442a1;--accent-bright:#3057cd;--muted:#6a7591;--button:#2146c7;--button-hover:#173698;--button-outline:#2146a9;--button-tint:#e8edff;--wash:#f0f4ff;--env-light:#426ce3;--env-main:#2146c7;--env-ink:#ffffff;--env-left:#2851c7;--env-right:#335bd0;--env-flap:#6f90ee;--seal-border:#e4d7b6;--seal-ring:#bba678;--location-bg:#eef2ff;--section-line:#dce3f5;--heading:#23345c;--letter-line:#d6dff5;--env-shadow:#18398d26;--date-glow:#2146c714;--seal-shadow:#122a7a40;--letter-shadow:#29427a17}html[data-theme="rose"]{--page:#f1e9e6;--ink:#64564f;--paper:#fffcfa;--accent:#a9687d;--accent-dark:#9c5c70;--accent-bright:#b87387;--muted:#8a786e;--button:#a45f74;--button-hover:#86485c;--button-outline:#8c5265;--button-tint:#f0dfdf;--wash:#faf2f0;--env-light:#e9c6d0;--env-main:#c68ba0;--env-ink:#704155;--env-left:#d6a2b3;--env-right:#dcaabb;--env-flap:#f0d5dd;--seal-border:#f3d9dd;--seal-ring:#c3899a;--location-bg:#f8eeed;--section-line:#e9d9d1;--heading:#735a52;--letter-line:#e7d4c6;--env-shadow:#92586d22;--date-glow:#b8738714;--seal-shadow:#71405240;--letter-shadow:#9e7e6517}
@font-face{font-family:GreatVibes;src:url('assets/great-vibes.ttf') format('truetype');font-display:swap}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--page);color:var(--ink);font:16px/1.7 Georgia,'Times New Roman',serif}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit}button,a{touch-action:manipulation}button{cursor:pointer}a{color:inherit}button:focus-visible,a:focus-visible{outline:3px solid #795335;outline-offset:6px}main,header,footer{max-width:640px;margin:auto}main{background:var(--paper)}h1,h2,p{margin:0}h1,h2,.script{font-family:GreatVibes,'Segoe Script',cursive;font-weight:400}h2{font-size:clamp(43px,9vw,58px);line-height:1.25;color:var(--accent)}p+p{margin-top:15px}.section{padding:55px 30px;text-align:center}.eyebrow{font:10px/1.7 Arial,sans-serif;letter-spacing:2.5px;color:var(--accent-dark)}.tiny{font:10px/1.6 Arial,sans-serif;letter-spacing:3px}.small{font-size:14px;color:var(--muted)}.ornament{font-size:35px;line-height:1;color:#b89b73;margin:18px auto}.hero{height:min(940px,100svh);min-height:640px;position:relative;color:white;text-align:center;isolation:isolate}.hero-photo{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:50% 49%;z-index:-2}.hero:after{content:'';position:absolute;inset:0;background:linear-gradient(180deg,#17221880,transparent 39%,#101b14aa 92%);z-index:-1}.hero-top{padding:45px 15px}.hero h1{font-size:clamp(82px,19vw,112px);line-height:1.3;text-shadow:0 2px 18px #0005}.hero-bottom{position:absolute;bottom:22px;width:100%;padding:0 35px}.hero-rule{display:flex;align-items:center;gap:18px}.hero-rule:before,.hero-rule:after{content:'';height:1px;background:#ffffff9c;flex:1}.hero-rule span{font-size:24px;white-space:nowrap;font-weight:400}.hero-date{font:12px/2 Arial,sans-serif;letter-spacing:3px;margin-top:12px}.scroll-link{display:inline-flex;flex-direction:column;align-items:center;text-decoration:none;font:8px Arial,sans-serif;letter-spacing:2px;margin-top:30px;min-height:44px}.chevron{font:28px Georgia;animation:float 2s ease-in-out infinite}.family{padding-top:35px}.parents{font-size:44px;line-height:1.3;margin:25px 0}.amp{display:block;font:italic 23px Georgia;color:#b89b73;margin:5px 0}.family .small{margin-bottom:24px}.date-section{padding-top:25px;background:linear-gradient(var(--paper),var(--wash))}.date-section h2{margin:8px 0 15px}.date-banner{display:flex;align-items:center;justify-content:center;gap:30px;max-width:300px;margin:0 auto 25px;border-top:1px solid #d7c4b1;border-bottom:1px solid #d7c4b1;padding:4px 0}.date-banner span{font:10px Arial,sans-serif;letter-spacing:2px}.date-banner strong{font-size:49px;color:var(--accent);font-weight:400;line-height:1.5}.calendar{max-width:310px;margin:0 auto 28px;font-size:14px}.week,.days{display:grid;grid-template-columns:repeat(7,1fr);gap:5px}.week{padding-bottom:12px;color:var(--accent);font:10px Arial,sans-serif}.days span{display:grid;place-items:center;aspect-ratio:1}.days .chosen{background:var(--accent-bright);color:white;border-radius:50%;box-shadow:0 0 0 4px var(--date-glow)}.button{border:1px solid var(--button);border-radius:30px;background:var(--button);color:#fff;text-decoration:none;padding:12px 24px;font:12px/1.6 Arial,sans-serif;letter-spacing:.5px;display:inline-flex;align-items:center;gap:18px;justify-content:center;min-height:46px;transition:background .2s,transform .2s}.button:hover{background:var(--button-hover);transform:translateY(-2px)}.button.outline{background:transparent;color:var(--button-outline)}.button.outline:hover{background:var(--button-tint)}.message-section{padding-top:45px;padding-bottom:5px}.envelope{display:block;position:relative;isolation:isolate;width:min(100%,340px);height:215px;margin:auto;background:linear-gradient(145deg,var(--env-light),var(--env-main));border:0;box-shadow:0 12px 30px var(--env-shadow);color:var(--env-ink);overflow:hidden;border-radius:3px}.envelope:after,.envelope:before{content:'';position:absolute;inset:0;z-index:-1}.envelope:before{background:var(--env-left);clip-path:polygon(0 0,50% 55%,0 100%)}.envelope:after{background:var(--env-right);clip-path:polygon(100% 0,50% 55%,100% 100%)}.envelope-flap{position:absolute;inset:0;background:var(--env-flap);clip-path:polygon(0 0,100% 0,50% 53%)}.seal{position:relative;display:grid;place-items:center;width:65px;height:65px;border:4px double var(--seal-border);outline:1px solid var(--seal-ring);border-radius:50%;margin:42px auto 22px;background:var(--env-main);color:#fff1e9;font:42px GreatVibes,cursive;box-shadow:0 3px 5px var(--seal-shadow)}.open-label{position:relative;font:12px Arial;letter-spacing:1px}.letter{margin:25px auto 0;padding:32px 22px;background:#fffefa;box-shadow:0 4px 30px var(--letter-shadow);border:1px solid var(--letter-line);max-width:390px}.letter h2{font-size:37px;margin-bottom:15px}.letter p{font-size:15px}.signature{display:block;font-size:37px;color:var(--accent);margin-top:20px}.count-section{padding-top:60px;padding-bottom:15px}.count-section h2{margin:12px 0 20px}.countdown{display:flex;justify-content:center;gap:9px;align-items:flex-start;font-variant-numeric:tabular-nums;color:#a38c67}.countdown strong{font-size:clamp(31px,7vw,45px);line-height:1.3;font-weight:400;display:block}.countdown span{font:8px/2.5 Arial;letter-spacing:1px;display:block}.countdown i{font-size:25px;font-style:normal;line-height:1.7;opacity:.6}.countdown>div{min-width:48px}.count-caption{font-size:31px;margin-top:16px;color:#a38c67}.memories{padding:45px 28px 50px}.polaroids{display:flex;gap:3px;align-items:center;margin:12px auto 32px;max-width:510px}.polaroid{display:block;flex:1;min-width:0;padding:8px 8px 14px;background:#fff;border:1px solid #ede7df;box-shadow:0 8px 18px #61504720;transition:transform .2s;color:#85735f}.polaroid img{width:100%;height:auto;aspect-ratio:1.14;object-fit:cover;display:block}.polaroid span{display:block;font:17px/1.2 GreatVibes,cursive;margin-top:12px}.first{transform:rotate(-8deg)}.second{transform:rotate(8deg) translateY(16px)}.polaroid:hover{transform:rotate(0);z-index:1}.memories>.small{font:10px Arial;letter-spacing:1px}.locations{background:var(--location-bg);border-top:1px solid var(--section-line)}.locations h2{margin-top:10px}.intro{font-size:14px;max-width:340px;margin:20px auto 34px}.line-icon{width:64px;height:64px;color:var(--accent-bright);display:block;margin:0 auto 18px}.event .eyebrow{margin-bottom:12px}.event h3{font:23px/1.4 Georgia;margin:0 auto 8px;max-width:340px;color:var(--heading)}.event p{font-size:14px}.event .time{font-size:22px;color:var(--accent);margin:0 0 12px}.event .button{margin-top:20px}.divider{color:#b89b73;margin:40px 0;font-size:25px}.dress h2{font-size:46px;margin:12px 0 16px}.formal{font:22px Georgia;text-transform:uppercase;letter-spacing:4px}.dress-caption{font-size:30px;margin-top:14px}.reserved{display:flex;align-items:center;justify-content:center;gap:8px;margin:28px auto 0}.reserved p{font-size:13px;line-height:1.6;text-align:left;margin:0 0 0 8px}.swatch{height:24px;width:24px;border-radius:50%;border:3px solid var(--paper);box-shadow:0 0 0 1px #ddd}.blue{background:#334f86}.red{background:#a23143}.gifts{padding-top:10px}.gifts h2{margin-bottom:18px}.gifts p{max-width:350px;margin:auto;font-size:15px}.gifts strong{font-weight:400;color:var(--accent-dark)}.gifts .ornament{margin-top:40px}.closing{position:relative;min-height:720px;isolation:isolate;text-align:center;color:white;display:flex;align-items:end}.closing>img{position:absolute;width:100%;height:100%;object-fit:cover;object-position:center;z-index:-2;inset:0}.closing:after{content:'';position:absolute;inset:0;background:linear-gradient(#17251e15 20%,#16251d70 45%,#142019eb);z-index:-1}.closing-content{padding:45px 20px;width:100%}.closing .eyebrow{color:#f5e4db;font-size:9px}.closing h2{font-size:49px;color:white;margin:14px 0}.closing p{font-size:15px}.closing .script{display:block;font-size:52px;margin-top:25px}.closing-name{display:block;font:9px Arial;letter-spacing:3px;margin-top:15px}footer{text-align:center;background:var(--paper);padding:30px 15px;font-size:14px}footer small{display:block;font:10px/2.5 Arial;letter-spacing:.5px}footer span{color:var(--accent)}dialog{max-width:95vw;max-height:95svh;padding:8px;border:0;background:#fffaf5;overflow:visible}dialog::backdrop{background:#151210dd}dialog img{display:block;max-width:88vw;max-height:85svh;object-fit:contain;width:auto;height:auto}#close-photo{position:absolute;right:0;top:-46px;background:#fffaf5;border:0;border-radius:50%;width:40px;height:40px;font:30px Arial;color:var(--env-ink)}.skip{position:fixed;top:-80px;left:12px;background:white;padding:10px;z-index:20}.skip:focus{top:12px}@keyframes float{50%{transform:translateY(6px)}}@media(min-width:700px){body{padding:25px 0}header{border-radius:10px 10px 0 0;overflow:hidden}.hero{height:900px}.section{padding-left:65px;padding-right:65px}footer{border-radius:0 0 10px 10px}.memories{padding-left:40px;padding-right:40px}.closing{min-height:850px}}@media(max-width:360px){.section{padding-left:20px;padding-right:20px}.countdown{gap:5px}.countdown span{letter-spacing:0}.hero-bottom{padding:0 22px}.dress h2{font-size:41px}.closing h2{font-size:43px}.polaroid span{font-size:15px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}}
/* Music and invitation to open the letter */
#close-photo{color:var(--accent-dark)}
.letter-intro{margin:0 auto 26px;letter-spacing:2px}.envelope{height:250px;border:1px solid #ffffff70;transition:transform .3s,box-shadow .3s}.envelope[aria-expanded="false"]{animation:envelope-lift 3.2s ease-in-out infinite}.envelope:hover{box-shadow:0 14px 32px var(--env-shadow)}.envelope .seal{margin:44px auto 24px;width:68px;height:68px}.envelope[aria-expanded="false"] .seal{animation:seal-glow 3.2s ease-in-out infinite}.envelope-flap{transition:filter .35s}.envelope[aria-expanded="true"] .envelope-flap{filter:brightness(1.09)}.envelope .open-label{font:13px/1.6 Arial;letter-spacing:.25px;font-weight:600;display:block}.tap-cue{display:flex;align-items:center;justify-content:center;gap:7px;margin-top:9px;font:10px/1.5 Arial;opacity:.92;position:relative}.tap-cue svg{width:25px;height:25px;flex-shrink:0}.envelope[aria-expanded="false"] .tap-cue svg{animation:tap-nudge 1.6s ease-in-out infinite}.envelope[aria-expanded="true"] .tap-cue svg{display:none}.letter:not([hidden]){animation:letter-reveal .5s ease-out}.letter[hidden]{display:none}@keyframes envelope-lift{0%,100%{transform:translateY(0)}45%,60%{transform:translateY(-5px)}}@keyframes seal-glow{0%,100%{box-shadow:0 0 0 0 #eee1c250,0 3px 5px var(--seal-shadow)}55%{box-shadow:0 0 0 12px #eee1c200,0 3px 5px var(--seal-shadow)}}@keyframes tap-nudge{0%,100%{transform:translateY(2px)}50%{transform:translateY(-3px)}}@keyframes letter-reveal{from{opacity:0;transform:translateY(15px)}to{opacity:1;transform:translateY(0)}}html[data-theme="royal"] .formal{color:var(--accent)}html[data-theme="royal"] .date-banner strong{color:var(--accent)}html[data-theme="royal"] .hero:after{background:linear-gradient(180deg,#0b164d80,transparent 40%,#071b47bb 96%)}html[data-theme="royal"] .closing:after{background:linear-gradient(#101e4710 20%,#10224d80 45%,#081735f2)}html[data-theme="royal"] .closing .eyebrow{color:#f5e4db}@media(max-width:360px){.hero-music{font-size:11px;padding:11px 14px}.music-section h2{font-size:37px}.envelope .open-label{font-size:12px}.letter-intro{font-size:9px;letter-spacing:1.7px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}
/* Compact local audio player */
.audio-section{padding:28px 30px 8px;text-align:center;background:var(--paper)}.audio-ornament{display:flex;gap:15px;align-items:center;justify-content:center;color:var(--accent);font:24px Georgia;max-width:250px;margin:0 auto 20px}.audio-ornament span{height:1px;width:65px;background:linear-gradient(90deg,transparent,#cbb693)}.audio-ornament span:last-child{transform:rotate(180deg)}.audio-player{display:flex;align-items:center;gap:13px;max-width:380px;margin:auto;padding:15px 19px;background:linear-gradient(135deg,#fffdfb,#f7e9ec);border:1px solid #ead4da;border-radius:60px;box-shadow:0 6px 22px #a9687d0d}.audio-player button{flex-shrink:0;border:0;display:grid;place-items:center;transition:background .2s,transform .2s}.audio-player button:hover{transform:translateY(-1px)}.audio-player svg{width:20px;height:20px}.audio-small{background:transparent;color:#a15f75;width:30px;height:44px;padding:4px}.audio-play{height:48px;width:48px;border-radius:50%;background:#a45f74;color:#fff;box-shadow:0 3px 10px #a45f7430}.audio-play:hover{background:#86485c}.audio-play svg{width:23px;height:23px}.audio-play .play-symbol{margin-left:3px}.pause-symbol,.sound-off{display:none}.playing .play-symbol{display:none}.playing .pause-symbol{display:block}#audio-mute[aria-pressed="true"] .sound-waves{display:none}#audio-mute[aria-pressed="true"] .sound-off{display:block}.audio-track{flex:1;min-width:0;padding-top:12px}.audio-track input{--played:0%;display:block;width:100%;margin:0;appearance:none;-webkit-appearance:none;height:4px;border-radius:5px;cursor:pointer;background:linear-gradient(to right,#a9687d var(--played),#e4cbd3 var(--played));touch-action:pan-y}.audio-track input::-webkit-slider-thumb{appearance:none;-webkit-appearance:none;width:12px;height:12px;background:#a45f74;border:2px solid #fff8f5;border-radius:50%;box-shadow:0 0 0 1px #a45f7433}.audio-track input::-moz-range-thumb{width:10px;height:10px;background:#a45f74;border:2px solid #fff8f5;border-radius:50%}.audio-track input:focus-visible{outline:2px solid #a45f74;outline-offset:8px}.audio-times{display:flex;justify-content:space-between;font:9px/1.6 Arial;color:#9a7c80;margin-top:8px;font-variant-numeric:tabular-nums}.audio-status{font:12px/1.6 Arial;color:#9c5c70;margin:12px auto 0;max-width:320px}.audio-status:empty{display:none}.audio-section audio{display:none}@media(max-width:360px){.audio-section{padding-left:20px;padding-right:20px}.audio-player{padding:12px 13px;gap:8px}.audio-play{width:44px;height:44px}.audio-small{width:27px}}
/* Rose stationery welcome cover */
body.entry-pending{overflow:hidden}body.entry-pending #invitation-content{visibility:hidden}.welcome{position:fixed;inset:0;z-index:100;overflow:auto;display:flex;align-items:center;justify-content:center;padding:24px 20px;background:radial-gradient(ellipse at 0 0,#dcb6c650,transparent 57%),radial-gradient(ellipse at 100% 100%,#e2c5ce80,transparent 60%),#fbf3f2;color:#705b56;transition:opacity .45s ease,transform .45s ease}.welcome[hidden]{display:none}.welcome.opening{opacity:0;transform:translateY(-12px);pointer-events:none}.welcome-card{position:relative;width:100%;max-width:420px;padding:30px 25px 26px;text-align:center;border:1px solid #cdb492;outline:1px solid #cdb49255;outline-offset:8px;background:#fffcfa88;box-shadow:0 20px 70px #99667a10}.welcome-ornament{font:34px/1 Georgia;color:#b89b73;margin:0 0 20px}.welcome-eyebrow{font:10px/1.6 Arial;letter-spacing:4px;color:#9c5c70}.welcome-seal{width:58px;height:58px;display:grid;place-items:center;margin:22px auto 12px;border:4px double #cbb38f;border-radius:50%;font:37px/1 GreatVibes,cursive;color:#a9687d;box-shadow:0 0 0 6px #e9d7d044}.welcome h2{font-size:clamp(67px,17vw,88px);color:#a9687d;line-height:1.25;margin:9px -8px 0}.welcome-date{font:10px/1.8 Arial;letter-spacing:2.3px;color:#8e7064;margin:12px 0 0}.welcome-rule{display:flex;align-items:center;justify-content:center;gap:13px;color:#b89b73;margin:22px 0 18px;font-size:18px;line-height:1}.welcome-rule span{height:1px;width:47px;background:#d5c2a5}.welcome-message{font:italic 15px/1.9 Georgia;margin:0;color:#8a7470}.welcome-button{display:flex;align-items:center;justify-content:center;gap:13px;width:100%;max-width:266px;margin:27px auto 0;padding:15px 20px;min-height:53px;border:1px solid #b17b8b;border-radius:30px;background:#a45f74;color:white;font:13px/1.6 Arial;letter-spacing:.6px;box-shadow:0 6px 20px #a45f7420;transition:background .2s,transform .2s}.welcome-button:hover{background:#86485c;transform:translateY(-2px)}.welcome-button svg{width:21px;height:21px}.welcome-button>span:last-child{font-size:21px;line-height:1}.welcome-button:focus-visible{outline:2px solid #b89b73;outline-offset:6px}.welcome-signature{font:28px/1.5 GreatVibes,cursive;margin:23px 0 0;color:#ab8a69}#invitation-title:focus{outline:none}@media(max-height:650px){.welcome{align-items:flex-start;padding:18px 20px}.welcome-card{padding:16px 20px}.welcome-ornament{margin-bottom:12px}.welcome-seal{margin-top:14px}.welcome-rule{margin:14px 0}.welcome-button{margin-top:20px}.welcome-signature{margin-top:14px}}@media(prefers-reduced-motion:reduce){.welcome,.welcome-button{transition:none}}
