:root{color-scheme:dark;--wine:#310c18;--deep:#210a12;--gold:#d5b577;--light:#f4e9d4;--muted:#bba6a5;--border:#cda76b38}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:30px}body{margin:0;background:var(--wine);color:var(--light);font-family:Georgia,'Noto Serif Armenian','Sylfaen',serif;line-height:1.8;background-image:radial-gradient(ellipse at 50% 15%,#69243b66,transparent 60%),repeating-linear-gradient(95deg,#ffffff02 0px,transparent 1px,transparent 4px),repeating-linear-gradient(0deg,#00000009 0,transparent 2px,transparent 5px)}body.intro-active{overflow:hidden}button,input,textarea{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible{outline:2px solid #f8d795;outline-offset:6px}[hidden]{display:none!important}h1,h2,h3,p{margin-top:0}h1,h2,h3{font-weight:400}h2{font-size:clamp(27px,4.4vw,44px);line-height:1.55}h3{font-size:18px;line-height:1.7}p{font-size:14px}em{font-weight:400;color:var(--gold)}.eyebrow{font:10px/1.8 Arial,sans-serif;letter-spacing:3px;color:var(--gold);margin-bottom:22px}.muted{color:var(--muted)}.tiny{font:9px Arial,sans-serif;letter-spacing:2px;color:#ae8c83}.intro{min-height:100svh;display:grid;place-items:center;position:fixed;inset:0;z-index:30;background:radial-gradient(ellipse at 50% 50%,#63213755,transparent 65%),var(--wine);overflow:auto;transition:opacity .7s}.intro::after{content:'';position:absolute;inset:18px;border:1px solid var(--border);pointer-events:none}.intro-inner{text-align:center;width:100%;padding:55px 24px 30px}.intro h1{font-size:clamp(27px,5vw,43px);margin-bottom:10px}.intro-sub{font-size:12px;color:var(--muted)}.envelope{display:block;position:relative;width:min(440px,90%);aspect-ratio:1.55;margin:85px auto 38px;background:none;border:0;padding:0;perspective:1100px;isolation:isolate;filter:drop-shadow(0 24px 28px #09000390)}.envelope-back{position:absolute;inset:0;background:#55192b;border-radius:5px;border:1px solid #ba775740}.envelope-front{position:absolute;inset:0;z-index:3;background:linear-gradient(155deg,#9b455121,transparent 50%),linear-gradient(20deg,#491324,#792b40);clip-path:polygon(0 0,50% 52%,100% 0,100% 100%,0 100%);border-radius:3px}.envelope-front::after{content:'';position:absolute;inset:0;background:linear-gradient(33deg,transparent 49.7%,#d18d7233 50%,transparent 50.4%),linear-gradient(-33deg,transparent 49.7%,#d18d7233 50%,transparent 50.4%)}.flap{position:absolute;inset:0;z-index:4;background:linear-gradient(170deg,#82374b,#51182b);clip-path:polygon(0 0,100% 0,50% 55%);transform-origin:top;transition:transform .85s .2s,z-index 0s .6s;filter:drop-shadow(0 3px 3px #0005)}.envelope-name{position:absolute;bottom:16%;left:10%;right:10%;z-index:5;color:#d5b577ba;letter-spacing:3px;font-size:12px;pointer-events:none}.seal{position:absolute;z-index:6;left:calc(50% - 34px);top:calc(50% - 29px);width:68px;height:68px;border-radius:44% 49% 43% 47%;background:radial-gradient(ellipse at 32% 24%,#ffe6a1,#d4ac5c 37%,#90602e 68%,#e3bc6d 82%,#926332);box-shadow:0 5px 7px #17040c90,inset 0 0 0 2px #f7d58166,inset 0 0 8px #76471c;display:grid;place-items:center;transition:transform .5s,opacity .5s}.seal-ring{position:absolute;inset:9px;border:1px solid #86572588;border-radius:50%;box-shadow:0 1px #ffe1a6aa}.seal-mark{font-size:32px;font-style:italic;color:#815025;text-shadow:0 1px #f4d99a}.opening .seal{transform:translate(12px,32px) rotate(20deg);opacity:0}.opening .flap{transform:rotateX(180deg);z-index:0}.intro.leaving{opacity:0;pointer-events:none}.open-hint{font-size:11px;color:#d4beb0}.intro-line{display:block;background:var(--gold);opacity:.4;width:30px;height:1px;margin:28px auto}.masthead{display:flex;justify-content:space-between;align-items:center;padding:25px 6%;position:absolute;top:0;width:100%;z-index:2}.wordmark{font-size:25px;letter-spacing:1px;color:var(--gold)}.wordmark span{display:block;font:6px Arial,sans-serif;letter-spacing:2px}.edition{font-size:9px;letter-spacing:2px;color:var(--gold)}.hero{position:relative;text-align:center;padding:132px 20px 45px;overflow:hidden;min-height:100svh}.hero>.eyebrow{font-size:9px;margin:0}.hero-glow{position:absolute;inset:50px 0 0;background:radial-gradient(ellipse at 50% 30%,#c18b4320,transparent 50%);pointer-events:none}.tree{width:240px;height:290px;position:relative;margin:16px auto 4px}.tree-lines{position:absolute;inset:10px 0 0;width:100%;height:100%;filter:drop-shadow(0 0 4px #d8b36b88)}.tree-star{position:absolute;top:6px;left:calc(50% - 13px);font-size:32px;color:#ffe4a6;line-height:1;text-shadow:0 0 20px #ffcb69}.particle{position:absolute;width:var(--size);height:var(--size);background:#f7d993;border-radius:50%;box-shadow:0 0 5px #f3bc6c,0 0 10px #e6ad4b88;animation:twinkle var(--duration) ease-in-out infinite alternate;animation-delay:var(--delay)}.tree-base{position:absolute;bottom:0;left:20%;right:20%;height:5px;border-radius:50%;background:#e5bc6e33;box-shadow:0 0 25px 6px #e4b46722}.script-line{font-size:12px;font-style:italic;color:var(--gold);margin:14px 0}.hero-title{font-size:clamp(34px,6vw,65px);line-height:1.4;margin-bottom:18px}.hero-title span{font-size:.73em;color:var(--gold)}.company{letter-spacing:3px;font-size:13px;margin-bottom:20px}.hero-date{display:flex;justify-content:center;align-items:center;gap:17px;font-size:12px;color:#dac8b7;margin-bottom:27px}.date-dot{font-size:10px;color:var(--gold)}.button{border:1px solid #ead098;background:linear-gradient(110deg,#bc944f,#ecd39a 50%,#c49c58);color:#36101a;display:inline-flex;align-items:center;justify-content:center;gap:23px;padding:16px 23px;font-size:12px;font-weight:bold;line-height:1.7;box-shadow:0 6px 25px #0002;transition:filter .2s,transform .2s}.button:hover{filter:brightness(1.09);transform:translateY(-2px)}.button:disabled{opacity:.6;cursor:wait}.sample-note{font:9px/1.7 Arial,sans-serif;color:#b99c94;margin:17px auto 0;max-width:290px}.scroll-cue{display:block;margin:22px auto 0;color:var(--gold);font-size:24px}.bough{position:absolute;top:170px;width:200px;height:340px;opacity:.3;pointer-events:none;background:repeating-conic-gradient(from 18deg at 0% 50%,transparent 0 12deg,#bd9858 13deg 13.3deg,transparent 14deg 25deg);mask-image:linear-gradient(90deg,#000,transparent)}.bough-left{left:-145px;transform:rotate(-20deg)}.bough-right{right:-145px;transform:scaleX(-1) rotate(-20deg)}.section{padding:70px 24px;text-align:center;position:relative}.section::before{content:'';display:block;position:absolute;top:0;left:calc(50% - 55px);width:110px;height:1px;background:linear-gradient(90deg,transparent,var(--gold),transparent)}.welcome{background:radial-gradient(ellipse at center,#6d283833,transparent 70%)}.prose{max-width:600px;margin:0 auto;font-size:14px;line-height:2.5;color:#d4bfba}.ornament{color:var(--gold);display:flex;align-items:center;justify-content:center;gap:20px;margin:25px auto}.ornament::before,.ornament::after{content:'';width:55px;height:1px;background:linear-gradient(90deg,transparent,var(--gold))}.ornament::after{transform:rotate(180deg)}.closing-line{font-style:italic;color:var(--gold);margin-top:23px}.details{background:#1b070d33}.detail-grid{display:grid;gap:30px;max-width:760px;margin:35px auto 0}.detail-grid>div{display:flex;flex-direction:column;align-items:center;justify-content:center}.detail-number{font-size:65px;line-height:1.2;color:var(--gold)}.detail-grid p,.detail-grid>div>span:not(.detail-number):not(.line-icon){font-size:12px;color:var(--muted);margin:8px 0}.detail-divider{width:70px;height:1px;background:var(--border);margin:auto}.line-icon{color:var(--gold);font-size:40px;line-height:1.4}.detail-grid h3{margin:10px 0 0}.text-link{font-size:11px;border-bottom:1px solid var(--gold);color:var(--gold);margin-top:15px}.timeline{list-style:none;text-align:left;max-width:440px;margin:40px auto 0;padding:0}.timeline li{display:grid;grid-template-columns:58px 1fr;gap:28px;position:relative;padding-bottom:35px}.timeline li::before{content:'';position:absolute;left:73px;top:12px;bottom:-12px;width:1px;background:var(--border)}.timeline li:last-child::before{display:none}.timeline li::after{content:'';position:absolute;left:70px;top:10px;width:7px;height:7px;transform:rotate(45deg);background:var(--gold);box-shadow:0 0 9px #d6b57844}.timeline time{font-size:17px;color:var(--gold);line-height:1.7}.timeline h3{margin:0 0 4px;font-size:15px}.timeline p{font-size:11px;color:var(--muted);margin:0}.swatches{display:flex;justify-content:center;gap:22px;margin:35px auto 0}.swatches i{width:44px;height:44px;display:block;background:var(--swatch);border-radius:50%;border:3px solid var(--wine);outline:1px solid #b38f5c66;box-shadow:inset 0 2px 8px #ffffff16}.swatches .gold-swatch{background:linear-gradient(135deg,#8e622e,#edcd89,#a47a3f)}.swatches span{font-size:10px;color:var(--muted);display:block;margin-top:12px}.countdown-section{background:#1b070d33}.countdown{display:flex;align-items:flex-start;justify-content:center;gap:12px;margin:35px auto 0}.countdown strong{display:block;font-size:clamp(31px,6vw,56px);font-weight:400;line-height:1.2;color:var(--gold);font-variant-numeric:tabular-nums;min-width:43px}.countdown span{font-size:10px;color:var(--muted)}.countdown b{font-size:25px;font-weight:400;color:#b28c5e77;line-height:1.7}.rsvp{max-width:1080px;margin:auto}.rsvp form{text-align:left;max-width:470px;margin:30px auto 0}form label,legend{font-size:11px;color:#decdc0;display:block;margin-bottom:9px}form label>span:not(.optional){color:var(--gold)}.optional{color:var(--muted);font-size:9px}input:not([type=radio]),textarea{width:100%;border:1px solid var(--border);border-radius:0;padding:13px 14px;background:#18080e40;color:var(--light);font-size:13px;margin-bottom:23px;min-height:48px}input::placeholder,textarea::placeholder{color:#a58b87;font-size:11px}textarea{resize:vertical}fieldset{padding:0;border:0;margin:0 0 24px;min-width:0}.attendance-options{display:grid;gap:10px}.attendance-options label{display:flex;align-items:center;border:1px solid var(--border);padding:12px;gap:10px;margin:0}.attendance-options label:has(input:checked){border-color:#d5b57788;background:#b28b4420}.attendance-options input{accent-color:var(--gold);margin:0}.attendance-options label>span{color:var(--light);font-size:11px}.demo-notice{font-size:10px;line-height:1.9;color:var(--gold);border-left:2px solid var(--gold);padding:7px 12px;background:#cfad6820;margin-bottom:26px}form .button{width:100%}#form-status{font-size:12px;margin:17px 0 0;color:var(--gold)}#form-status.error{color:#ffc0b8}footer{text-align:center;padding:35px 24px 75px;background:radial-gradient(ellipse at bottom,#691e3344,transparent 65%)}footer>p{font-size:22px;margin-bottom:12px}footer h2{font-size:16px;color:var(--gold);letter-spacing:2px}.footer-brand{display:inline-block;font-size:19px;color:var(--gold);margin-top:45px}.footer-brand span{display:block;font-size:8px;color:var(--muted);letter-spacing:1px}.music-button{position:fixed;right:16px;bottom:18px;z-index:40;display:flex;align-items:center;gap:9px;border:1px solid #d5b57766;background:#280c17eb;color:var(--gold);border-radius:40px;padding:12px;min-height:46px;box-shadow:0 4px 18px #0003}.music-button svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.4}.music-button span{font-size:9px;max-width:110px}.music-button[aria-pressed=true]{box-shadow:0 0 20px #d6b57822}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.noscript{position:fixed;inset:0;background:var(--wine);z-index:100;display:grid;place-items:center;padding:30px}@keyframes twinkle{from{opacity:.3;transform:scale(.7)}to{opacity:1;transform:scale(1.15)}}@media(min-width:768px){.intro-inner{padding:70px 24px}.envelope{margin-top:100px;margin-bottom:45px}.masthead{padding:30px 6%}.hero{padding-top:130px}.tree{width:290px;height:335px}.hero-title{margin-bottom:22px}.hero-date{font-size:14px}.bough{opacity:.4;width:350px;height:500px}.bough-left{left:-210px}.bough-right{right:-210px}.section{padding:90px 40px}.detail-grid{grid-template-columns:1fr 1px 1fr;gap:45px}.detail-divider{height:110px;width:1px}.swatches{gap:35px}.swatches i{height:56px;width:56px}.countdown{gap:25px}.countdown strong{min-width:75px}.rsvp{display:grid;grid-template-columns:1fr 1.1fr;gap:65px;text-align:left;align-items:start}.rsvp form{margin:0;width:100%}.rsvp-heading{padding-top:35px}.attendance-options{grid-template-columns:1fr 1fr}.music-button{right:28px;bottom:25px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation:none!important;transition:none!important}}

/* Separate procedural velvet layer; no reference image is used. */
body::before{content:"";position:fixed;inset:0;z-index:-1;background:url("assets/velvet.svg") repeat;opacity:.26;pointer-events:none}.intro{background-image:url("assets/velvet.svg"),radial-gradient(ellipse at 50% 50%,#63213755,transparent 65%);background-color:var(--wine)}.envelope-back,.envelope-front,.flap{background-blend-mode:soft-light;background-image:url("assets/velvet.svg"),linear-gradient(155deg,#7b3041,#370c18)}.seal-mark{width:43px;height:43px;fill:#91612d;stroke:#f4cf87;stroke-width:.7;filter:drop-shadow(0 1px 0 #f5d491)}.hero-title{max-width:700px;margin-left:auto;margin-right:auto;color:var(--gold);font-size:clamp(32px,5vw,60px)}

/* Reference envelope: full portrait on phones, landscape stationery on desktop. */
.intro{background:#100806;min-height:100svh;padding:0;overflow:hidden}
.intro::after{display:none}
.intro-inner{height:100svh;width:100%;padding:0;display:grid;place-items:center}
.envelope{--tip:67%;--seal:clamp(92px,25vw,120px);width:100%;height:100%;max-height:none;aspect-ratio:auto;margin:0;border:0;border-radius:13px;filter:none;perspective:1600px;isolation:isolate;text-align:center;color:#b2935d;box-shadow:0 0 0 1px #b2915b33,inset 0 0 30px #000}
.envelope-back,.envelope-front,.flap{background-image:url('assets/envelope-velvet.png');background-size:440px 440px;background-blend-mode:normal}
.envelope-back{inset:0;border:1px solid #9b5b332e;border-radius:13px;background-color:#210604;box-shadow:inset 0 0 70px #000}
.envelope-front{inset:0;clip-path:polygon(0 0,50% var(--tip),100% 0,100% 100%,0 100%);border-radius:13px;background-image:linear-gradient(0deg,#10030280,#36070515),url('assets/envelope-velvet.png');box-shadow:inset 0 0 50px #0008}
.envelope-front::after{inset:0;background:none;clip-path:polygon(0 100%,50% 43%,100% 100%);background-image:linear-gradient(0deg,#13030233,#5e1e121c),url('assets/envelope-velvet.png');filter:drop-shadow(0 -1px 1px #bc78434d);border-radius:0 0 13px 13px}
.flap{height:var(--tip);inset:0 0 auto;clip-path:polygon(0 0,100% 0,100% 69%,50% 100%,0 69%);border-radius:13px 13px 0 0;background-image:radial-gradient(ellipse at 48% 10%,#521b1122,#0c020170),url('assets/envelope-velvet.png');transform-origin:top;overflow:visible;filter:drop-shadow(0 4px 3px #000);transition:transform 1.05s .2s,z-index 0s .75s;backface-visibility:visible}
.flap::after{content:'';position:absolute;inset:0;border-top:1px solid #c2854b55;border-radius:13px 13px 0 0;box-shadow:inset 1px 0 #a75a2833,inset -1px 0 #a75a2833;pointer-events:none}
.flap-face{position:absolute;inset:0;display:flex;align-items:center;flex-direction:column;padding:clamp(70px,13svh,110px) 20px 0}
.envelope-heading{font-size:10px;line-height:1.65;letter-spacing:1.4px;color:#b89a6c;opacity:.82;font-weight:400}
.envelope-name{position:static;display:block;margin-top:26px;max-width:100%;font-family:'Baskerville','Palatino Linotype',Georgia,serif;font-style:italic;font-size:clamp(25px,7vw,35px);line-height:1.5;letter-spacing:0;color:#b99a65;font-weight:400;text-shadow:0 1px 1px #0008;overflow-wrap:break-word}
.seal{width:var(--seal);height:var(--seal);left:calc(50% - var(--seal)/2);top:calc(var(--tip) - var(--seal)*.48);background:none;border-radius:0;box-shadow:none;display:block;filter:drop-shadow(1px 6px 4px #0009);transition:transform .6s,opacity .6s;pointer-events:none}
.seal img{display:block;width:100%;height:100%;object-fit:contain}
.open-hint{position:absolute;z-index:5;left:12px;right:12px;bottom:9%;margin:0;font-size:11px;letter-spacing:1px;color:#bea06a;font-weight:400;opacity:.85;transition:opacity .3s}
.opening .flap{transform:rotateX(180deg);z-index:0}
.opening .seal{transform:translateY(45px) rotate(16deg) scale(.9);opacity:0}
.opening .open-hint{opacity:0}
body.intro-active .music-button{width:42px;height:42px;min-height:42px;justify-content:center;right:12px;bottom:12px;background:#1c0805aa;border-color:#a5864d55;padding:10px}
body.intro-active .music-button span{display:none}
@media(min-width:700px){
 .intro{padding:32px;background:radial-gradient(ellipse,#30140f,#100806)}
 .intro-inner{height:100%;min-height:0}
 .envelope{--tip:70%;--seal:100px;width:min(100%,1000px);height:auto;aspect-ratio:1.58;border-radius:9px;box-shadow:0 35px 90px #0009,0 0 0 1px #865b3a55}
 .flap{clip-path:polygon(0 0,100% 0,50% 100%);border-radius:9px 9px 0 0;background-image:linear-gradient(155deg,#8a3a1b18,#0005),url('assets/envelope-velvet.png')}
 .flap-face{padding-top:35px}
 .envelope-heading{font-size:10px;letter-spacing:1px}
 .envelope-name{font-size:34px;margin-top:18px}
 .open-hint{bottom:8%;font-size:12px}
 .envelope-front::after{clip-path:polygon(0 100%,50% 20%,100% 100%)}
}
@media(min-width:700px) and (max-height:650px){.envelope{width:min(90vw,calc((100svh - 70px)*1.58))}.flap-face{padding-top:20px}.envelope-name{margin-top:10px;font-size:27px}}
@media(prefers-reduced-motion:reduce){.opening .flap{transform:rotateX(180deg)}}
.flap-seam{position:absolute;inset:0;width:100%;height:100%;fill:none;pointer-events:none}
.flap-seam path{vector-effect:non-scaling-stroke}
.seam-shadow{stroke:#080100;stroke-width:9;filter:blur(3px)}
.seam-light{stroke:#9e5638;stroke-opacity:.55;stroke-width:1}
.seam-landscape{display:none}
@media(min-width:700px){.seam-portrait{display:none}.seam-landscape{display:block}}
/* Fine photographic velvet remains separate from the folds. */
.envelope-back,.envelope-front,.flap,.envelope-front::after{background-size:cover}
.envelope-front{background-image:linear-gradient(0deg,#08010170,#36070515),url('assets/envelope-velvet.png')}
.flap{background-image:radial-gradient(ellipse at 48% 10%,#521b1115,#0c020145),url('assets/envelope-velvet.png')}
.tree{width:min(330px,88vw);height:420px;margin:0 auto 4px;position:relative;isolation:isolate}
#tree-lights{display:block;width:100%;height:100%;object-fit:contain;filter:drop-shadow(0 0 12px #f1bc4414)}
@media(min-width:768px){.tree{width:350px;height:455px;margin-top:8px}.hero{padding-top:125px}}
.envelope-back{background-image:linear-gradient(#1000005c,#1000005c),url('assets/envelope-velvet.png')}
.envelope-front{background-image:linear-gradient(0deg,#08010199,#16010055),url('assets/envelope-velvet.png')}
.envelope-front::after{background-image:linear-gradient(0deg,#10010166,#21060344),url('assets/envelope-velvet.png')}
.flap{background-image:radial-gradient(ellipse at 48% 10%,#220a0355,#08000088),url('assets/envelope-velvet.png')}
@media(max-width:699px){.music-button{width:44px;height:44px;min-height:44px;padding:11px;justify-content:center}.music-button span{display:none}}

/* The cover unfolds around the page; there is no removable inner card. */
.intro{transition:opacity 1.5s ease,background-color 2s ease 1.2s;background-image:none}
.envelope{transform-style:preserve-3d;transition:transform 3.8s cubic-bezier(.25,.1,.25,1)}
.envelope-back{transition:opacity 2s ease 1.3s}
.envelope-side{position:absolute;inset:0;z-index:2;background-size:cover;background-image:linear-gradient(120deg,#0008,#6f311827 47%,#000b),url('assets/envelope-velvet.png');backface-visibility:hidden;transition:transform 2.5s cubic-bezier(.25,.1,.25,1) .65s,opacity 1.5s ease 1.9s;pointer-events:none}
.envelope-side-left{clip-path:polygon(0 0,56% 67%,0 100%);transform-origin:left center;box-shadow:inset 2px 0 3px #a3653a70}
.envelope-side-right{clip-path:polygon(100% 0,44% 67%,100% 100%);transform-origin:right center;background-image:linear-gradient(240deg,#0008,#6f311827 47%,#000b),url('assets/envelope-velvet.png');box-shadow:inset -2px 0 3px #a3653a70}
.envelope-front{clip-path:polygon(0 100%,50% 43%,100% 100%);transform-origin:center bottom;z-index:3;backface-visibility:hidden;transition:transform 2.5s cubic-bezier(.25,.1,.25,1) 1.55s,opacity 1.5s ease 2.5s}
.envelope-front::after{display:none}
.lower-seams{position:absolute;inset:0;width:100%;height:100%;fill:none;stroke:#b9784d;stroke-opacity:.4;stroke-width:1;filter:drop-shadow(0 -3px 4px #000)}
.lower-seams path{vector-effect:non-scaling-stroke}
.flap{z-index:4;transition:transform 2.8s cubic-bezier(.22,.61,.36,1) .5s,opacity 1.5s ease 2.3s;backface-visibility:hidden;transform-origin:center top}
.seam-shadow{stroke:#050100;stroke-width:16;filter:blur(5px)}
.seam-light{stroke:#cb8a57;stroke-opacity:.6;stroke-width:1.1}
.seal{transition:transform 1.2s ease,opacity 1s ease;filter:drop-shadow(2px 8px 5px #000b)}
.opening .seal{transform:translateY(12px) scale(1.035);opacity:0}
.opening .flap{transform:rotateX(165deg);z-index:4;opacity:0}
.opening .envelope-side-left{transform:rotateY(-105deg);opacity:0}
.opening .envelope-side-right{transform:rotateY(105deg);opacity:0}
.opening .envelope-front{transform:rotateX(-105deg);opacity:0}
.opening .envelope-back{opacity:0}
.intro.opening{background-color:transparent;background-image:none}
.intro.opening .envelope{box-shadow:none}
.intro.leaving{opacity:0;pointer-events:none}
@media(min-width:700px){
 .envelope-side-left{clip-path:polygon(0 0,56% 70%,0 100%)}
 .envelope-side-right{clip-path:polygon(100% 0,44% 70%,100% 100%)}
 .envelope-front{clip-path:polygon(0 100%,50% 43%,100% 100%)}
}
@media(prefers-reduced-motion:reduce){.envelope,.envelope-side,.flap,.envelope-front,.seal,.intro,.envelope-back{transition:none!important}}
.envelope-side-left{background-image:linear-gradient(120deg,#000b,#17060377 47%,#000c),url('assets/envelope-velvet.png')}
.envelope-side-right{background-image:linear-gradient(240deg,#000b,#17060377 47%,#000c),url('assets/envelope-velvet.png')}

/* Warm oxblood velvet and separate cast shadows outside the clipped folds. */
.envelope-back,.envelope-side,.envelope-front,.flap{
 background-color:#310c07;
 background-blend-mode:normal,luminosity;
}
.envelope-back{background-image:linear-gradient(#16040066,#10020188),url('assets/envelope-velvet.png')}
.flap{background-image:radial-gradient(ellipse at 48% 12%,#300704a8,#100100bb),url('assets/envelope-velvet.png')}
.envelope-front{background-image:linear-gradient(0deg,#170302aa,#30090499),url('assets/envelope-velvet.png')}
.envelope-side-left{background-image:linear-gradient(120deg,#090100bb,#300803aa 47%,#050000e8),url('assets/envelope-velvet.png')}
.envelope-side-right{background-image:linear-gradient(240deg,#090100bb,#300803aa 47%,#050000e8),url('assets/envelope-velvet.png')}
.fold-shadow{position:absolute;inset:0;pointer-events:none;backface-visibility:hidden;display:block}
.fold-shadow svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible;fill:#080100;filter:blur(10px)}
.fold-shadow-top{z-index:3;transform-origin:center top;transition:transform 2.8s cubic-bezier(.22,.61,.36,1) .5s,opacity 1.5s ease 2.3s}
.fold-shadow-top svg{transform:translateY(10px);opacity:.95}
.fold-shadow-bottom{z-index:2;transform-origin:center bottom;transition:transform 2.5s cubic-bezier(.25,.1,.25,1) 1.55s,opacity 1.5s ease 2.5s}
.fold-shadow-bottom svg{transform:translateY(-7px);opacity:.85}
.fold-shadow .shadow-landscape{display:none}
.opening .fold-shadow-top{transform:rotateX(165deg);opacity:0}
.opening .fold-shadow-bottom{transform:rotateX(-105deg);opacity:0}
.lower-seams{stroke:#ad7453;stroke-opacity:.42}
.seam-light{stroke:#b77d56;stroke-opacity:.5}
@media(min-width:700px){.fold-shadow .shadow-portrait{display:none}.fold-shadow .shadow-landscape{display:block}}
@media(prefers-reduced-motion:reduce){.fold-shadow{transition:none!important}}

/* Visible light follows the actual pointer, above the hero decoration. */
.pointer-light{position:fixed;top:0;left:0;width:0;height:0;z-index:20;pointer-events:none;opacity:0;transition:opacity .25s ease,transform .12s ease-out;will-change:transform}
.pointer-light.is-visible{opacity:1}
.pointer-light::before{content:'';position:absolute;left:-45px;top:-45px;width:90px;height:90px;border-radius:50%;background:radial-gradient(circle,#fffbe9 0 2%,#ffeab9cc 4%,#ffc45b99 10%,#f0a12d33 30%,#eaa12b0d 52%,transparent 70%);filter:drop-shadow(0 0 7px #ffc968)}
.pointer-light::after{content:'';position:absolute;left:-12px;top:-17px;width:24px;height:34px;background:#fff2c2;clip-path:polygon(50% 0,57% 42%,100% 50%,57% 57%,50% 100%,43% 57%,0 50%,43% 42%);filter:drop-shadow(0 0 4px #ffe8a0)}
@media(prefers-reduced-motion:reduce){.pointer-light{transition:none}}

/* Hide the visual scrollbar without blocking wheel, touch, or keyboard scrolling. */
html,body{scrollbar-width:none;-ms-overflow-style:none}
html::-webkit-scrollbar,body::-webkit-scrollbar{display:none;width:0;height:0}

.hero{padding-top:55px}
.new-year-greeting{max-width:1000px;margin:0 auto 25px;padding:0 8px;font-size:clamp(29px,4.5vw,54px);font-weight:400;line-height:1.6;color:#e5c37d;text-wrap:balance;text-shadow:0 2px 18px #d8a84d20}
@media(min-width:768px){.hero{padding-top:60px}.new-year-greeting{margin-top:0;margin-bottom:30px}}

/* An actual month grid with the event date nested inside a golden fir tree. */
.calendar-section{background:radial-gradient(ellipse at center,#6b2a332b,transparent 75%)}
.event-calendar{max-width:510px;margin:26px auto 0}
.event-calendar table{width:100%;table-layout:fixed;border-collapse:collapse;color:#deccc1;font-variant-numeric:tabular-nums}
.event-calendar caption{color:var(--gold);font-size:22px;letter-spacing:1px;margin-bottom:25px}
.event-calendar th{height:35px;font-weight:400;font-size:11px;color:#bda487}
.event-calendar abbr{text-decoration:none}
.event-calendar td{height:57px;position:relative;text-align:center;font-size:18px;font-weight:400}
.event-calendar time{position:relative;z-index:1;display:inline-grid;place-items:center;min-width:26px;height:30px}
.event-calendar .event-day time{color:#2e0b14;font-weight:bold;top:6px}
.calendar-tree{width:52px;height:60px;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);filter:drop-shadow(0 0 9px #d5a04d33)}
.calendar-note{font-size:11px;color:var(--muted);margin:30px auto 0;line-height:2;max-width:440px}
.calendar-key{display:inline-block;width:5px;height:5px;background:var(--gold);transform:rotate(45deg);margin-right:6px;margin-left:5px;vertical-align:middle}
@media(min-width:768px){.event-calendar td{height:70px;font-size:21px}.event-calendar th{font-size:12px}.calendar-tree{width:60px;height:69px}.event-calendar caption{font-size:26px}}

/* Full-bleed artwork created specifically for the invitation text section. */
.welcome{
 min-height:620px;
 display:flex;
 flex-direction:column;
 align-items:center;
 justify-content:center;
 background-color:transparent;
 background-image:none;
 isolation:isolate;
 background-size:cover;
 background-position:center;
 background-repeat:no-repeat;
 text-shadow:0 2px 12px #100005aa;
}
.welcome>.eyebrow{margin-bottom:22px}
.welcome>h2{margin-bottom:0}
.welcome>.ornament{flex-shrink:0}
.welcome .prose{color:#f0e3d7;max-width:640px}
.welcome .closing-line{margin-bottom:0;color:#e4c47f}
@media(min-width:768px){.welcome{min-height:680px;padding-top:85px;padding-bottom:85px}}
@media(max-width:767px){
 :is(.welcome,.festive-edges)::after{background-image:url('assets/welcome-background-mobile.png')}
}

/* Venue photo and event details, with an antique gold capsule map link. */
.venue-card{max-width:960px;margin:35px auto 0;display:grid;border:1px solid #d5b57744;background:#1c080f66;text-align:center;box-shadow:0 18px 50px #12030844}
.venue-information{padding:32px 20px 38px;display:flex;flex-direction:column;align-items:center;justify-content:center}
.venue-information>.eyebrow{font-size:9px;margin-bottom:12px}
.venue-information h3{font-size:clamp(26px,3vw,36px);color:var(--gold);margin:0 0 10px}
.venue-information>p:not(.eyebrow){font-size:12px;color:var(--muted);margin-bottom:25px}
.venue-date{display:flex;align-items:center;justify-content:center;gap:19px;padding:15px 20px;border:1px solid #d5b57744;border-radius:28px;background:linear-gradient(120deg,#9f53642b,#be718233);width:100%;max-width:360px;margin-bottom:28px}
.venue-date .detail-number{font-size:49px;padding-right:17px;border-right:1px solid #d5b57744}
.venue-date>div{font-size:12px;text-align:left;line-height:1.8}
.venue-date p{margin:7px 0 0;font-size:12px;color:var(--gold)}
.map-button{display:inline-flex;align-items:center;justify-content:center;gap:16px;min-height:47px;width:min(100%,320px);padding:11px 20px;border:1px solid #e6cf8e;border-radius:50px;color:#3b2112;font-size:12px;line-height:1.6;background:linear-gradient(90deg,#97662c,#f0d989 8%,#fff6cf 16%,#d8b55a 38%,#f8e9ae 70%,#fff6d1 88%,#ba8e3d);box-shadow:inset 0 0 0 2px #fff3be77,inset 0 -3px 6px #8f592c66,0 4px 15px #14050b55;transition:filter .2s,transform .2s}
.map-button:hover{filter:brightness(1.1);transform:translateY(-2px)}
.map-button span{font-family:Arial,sans-serif}
@media(min-width:768px){.venue-card{grid-template-columns:1fr}.venue-information{padding:45px 30px}}

/* A luminous serpentine ribbon replaces the straight program rule. */
.flow-timeline{position:relative;width:min(100%,660px);margin:40px auto 0;isolation:isolate}
.timeline-art{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none;z-index:-1}
.timeline-track{fill:none;stroke:#c99c4e;stroke-opacity:.12;stroke-width:1;vector-effect:non-scaling-stroke}
.timeline-draw{fill:none;stroke-linecap:round;vector-effect:non-scaling-stroke}
.timeline-glow{stroke:#ffbe45;stroke-width:5;filter:blur(4px);opacity:.8}
.timeline-core{stroke:#f8daa0;stroke-width:1.5;filter:drop-shadow(0 0 3px #edb749)}
.timeline-spark{fill:#ffe7a8;filter:drop-shadow(0 0 3px #ffd270);animation:ribbon-spark 2.8s ease-in-out infinite alternate}
.timeline-tip-halo{fill:#ffd16a;opacity:.4;filter:blur(6px)}
.flow-timeline .timeline{max-width:none;margin:0;list-style:none;padding:0}
.flow-timeline .timeline li{height:185px;padding:20px 0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;text-align:center;position:relative}
.flow-timeline .timeline li::before,.flow-timeline .timeline li::after{display:none}
.flow-timeline .timeline time{font-size:28px;color:#dcb774;font-style:italic;line-height:1.4}
.flow-timeline .timeline li>div{width:70%;max-width:340px}
.flow-timeline .timeline h3{font-size:16px;line-height:1.8;margin-bottom:8px}
.flow-timeline .timeline p{font-size:11px;line-height:1.8;color:#bba6a5}
.flow-timeline .timeline .is-reached time{color:#ffe1a0;text-shadow:0 0 18px #e9b95b66}
@keyframes ribbon-spark{from{opacity:.35}to{opacity:1}}
@media(min-width:768px){.flow-timeline .timeline li{height:205px}.flow-timeline .timeline time{font-size:34px}.flow-timeline .timeline h3{font-size:19px}.flow-timeline .timeline p{font-size:12px}}
@media(prefers-reduced-motion:reduce){.timeline-spark{animation:none;opacity:.8}}

/* Only the artwork edges are visible; the middle exposes the original page velvet. */
:is(.welcome,.festive-edges)::after{
 content:'';position:absolute;inset:0;z-index:-1;pointer-events:none;
 background-image:url('assets/welcome-background.png');
 background-size:cover;background-position:center;background-repeat:no-repeat;
 -webkit-mask-image:linear-gradient(90deg,#000 0%,#000 15%,transparent 35%,transparent 65%,#000 85%,#000 100%);
 mask-image:linear-gradient(90deg,#000 0%,#000 15%,transparent 35%,transparent 65%,#000 85%,#000 100%);
}
@media(max-width:767px){
 :is(.welcome,.festive-edges)::after{background-image:url('assets/welcome-background-mobile.png');
 -webkit-mask-image:linear-gradient(90deg,#000 0%,#000 5%,transparent 24%,transparent 76%,#000 95%,#000 100%);
 mask-image:linear-gradient(90deg,#000 0%,#000 5%,transparent 24%,transparent 76%,#000 95%,#000 100%)}
}

/* Three tactile fabric swatches inside a restrained gold stationery frame. */
.dress{padding:65px 16px;background:radial-gradient(ellipse at center,#6b263b33,transparent 70%)}
.dress-panel{position:relative;max-width:940px;margin:0 auto;padding:48px 17px 35px;border:1px solid #d5b57740;background:radial-gradient(ellipse at 50% 45%,#722a3e22,transparent 65%),linear-gradient(120deg,#1c071122,#15050b55);box-shadow:inset 0 0 0 6px #310c1822,0 22px 70px #13030a22;isolation:isolate}
.dress-panel::before{content:'';position:absolute;inset:7px;border:1px solid #d5b57713;pointer-events:none;z-index:-1}
.dress-corner{position:absolute;width:24px;height:24px;border-color:#d2ad6b;border-style:solid;pointer-events:none}
.dress-corner-top{left:-1px;top:-1px;border-width:1px 0 0 1px}
.dress-corner-bottom{right:-1px;bottom:-1px;border-width:0 1px 1px 0}
.dress-panel>.eyebrow{font-size:10px;letter-spacing:4px;margin-bottom:16px}
.dress-panel h2{font-size:clamp(27px,4vw,43px);line-height:1.6;margin-bottom:0;text-wrap:balance}
.dress-panel h2 em{display:block;color:#e1bf7e}
.dress-panel>.ornament{margin:22px auto}
.dress-description{font-size:12px;line-height:2.1;color:#cbb6ae;max-width:530px;margin:0 auto}
.dress-palette{list-style:none;padding:0;margin:38px auto 28px;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;max-width:540px;align-items:start}
.dress-palette li{display:flex;flex-direction:column;align-items:center;min-width:0}
.fabric-swatch{position:relative;display:block;width:clamp(62px,17vw,104px);aspect-ratio:1;border-radius:50%;border:4px solid #2e0e1a;outline:1px solid #b78d4b99;box-shadow:0 8px 20px #10020766,inset 0 2px 8px #fff2;transition:transform .4s ease,box-shadow .4s ease}
.fabric-swatch::after{content:'';position:absolute;inset:-8px;border:1px solid #d8b57320;border-radius:50%;pointer-events:none}
.fabric-burgundy{background:radial-gradient(ellipse at 30% 20%,#c0697855,transparent 55%),linear-gradient(125deg,#360614,#8b2946 30%,#59102b 52%,#932f4b 70%,#330a19)}
.fabric-gold{background:linear-gradient(130deg,#78501f,#d8b26a 20%,#fff0b8 36%,#bd8e42 52%,#f0d58d 72%,#946b2e);box-shadow:0 8px 30px #d2a64e22,inset 0 2px 8px #fff6}
.fabric-black{background:radial-gradient(ellipse at 30% 20%,#ffffff12,transparent 60%),linear-gradient(125deg,#050507,#2d292d 30%,#0a090d 52%,#29252b 72%,#050508)}
.fabric-name{font-size:14px;color:#e5c78e;line-height:1.8;margin-top:21px}
.fabric-caption{font-size:9px;line-height:1.7;color:#ad9490;max-width:100px;margin-top:5px;text-wrap:balance}
.dress-footnote{font-size:10px;color:#bda68f;line-height:1.9;margin:0 auto;max-width:400px}
@media(hover:hover){.dress-palette li:hover .fabric-swatch{transform:translateY(-5px);box-shadow:0 12px 26px #d3ad4c22}}
@media(min-width:768px){.dress{padding:85px 35px}.dress-panel{padding:60px 55px 45px}.dress-palette{margin-top:45px;margin-bottom:35px;gap:55px}.fabric-swatch{width:112px}.dress-description{font-size:14px}.fabric-name{font-size:18px;margin-top:25px}.fabric-caption{font-size:10px;max-width:140px}.dress-palette li:nth-child(2){transform:translateY(-8px)}.dress-panel h2 em{display:inline}.dress-footnote{font-size:12px}}

/* The closing gift vignette echoes the gold and velvet invitation palette. */
.gifts{padding-bottom:30px;background:radial-gradient(ellipse at 50% 55%,#ad78451a,transparent 62%)}
.gifts h2{color:#e2c17d;margin-bottom:5px;text-wrap:balance}
.gift-art{width:min(100%,440px);margin:5px auto 0;position:relative;isolation:isolate}
.gift-art::before{content:'';position:absolute;left:15%;right:15%;bottom:10%;height:13%;border-radius:50%;background:#07020855;filter:blur(16px);z-index:-1}
.gift-art img{display:block;width:100%;height:auto;filter:drop-shadow(0 12px 20px #15040b44)}
.gifts>.ornament{margin-top:0;margin-bottom:0}
@media(min-width:768px){.gifts{padding-top:75px}.gift-art{width:470px}}

/* Icon-only audio control at every viewport, with state mirrored by aria-pressed. */
.music-button,body.intro-active .music-button{width:46px;height:46px;min-height:46px;border-radius:50%;padding:12px;justify-content:center;gap:0}
.music-button .music-play{display:block;fill:currentColor;stroke:none}
.music-button .music-pause{display:none;stroke-width:3;stroke-linecap:round}
.music-button[aria-pressed=true] .music-play{display:none}
.music-button[aria-pressed=true] .music-pause{display:block}

/* Venue and dress code share the welcome section's transparent festive edges. */
.festive-edges{isolation:isolate;background:transparent;text-shadow:0 2px 12px #10000566}
.dress.festive-edges .dress-panel{background:transparent;border:0;box-shadow:none}
.dress.festive-edges .dress-panel::before,.dress.festive-edges .dress-corner{display:none}
.details.festive-edges .venue-card{background:transparent;border:0;box-shadow:none;max-width:900px}
@media(min-width:768px){.details.festive-edges{padding-left:12%;padding-right:12%}.dress.festive-edges{padding-top:65px;padding-bottom:65px}}

.details.festive-edges .venue-card{max-width:560px;grid-template-columns:1fr}

.qr-share-section{text-align:center;padding-bottom:75px;border-top:1px solid var(--border)}.qr-preview-frame{display:block;max-width:260px;padding:14px;margin:28px auto;background:#fff8e8;border:2px solid var(--gold);outline:1px solid #d5b57777;outline-offset:6px;border-radius:12px;box-shadow:0 12px 35px #16060c55}.qr-preview-frame img{display:block;width:100%;height:auto}.qr-share-section>.button{display:inline-flex;margin-top:15px}
