*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--ink:oklch(42% .25 264);--ink-deep:oklch(32% .21 264);--paper:oklch(95% .008 90);--paper-warm:oklch(91% .012 85);--void:oklch(16% .01 260);--void-deep:oklch(10% .008 260);--bone:oklch(98% .005 90);--font-display:"Archivo", system-ui, sans-serif;--font-serif:"Instrument Serif", Georgia, serif;--font-body:"Archivo", system-ui, sans-serif;--shadow-card:0 30px 70px -30px oklch(20% .06 264/.35);--grain:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='3'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)' opacity='0.35'/%3E%3C/svg%3E")}html{scroll-behavior:smooth}body{font-family:var(--font-body);background:var(--bone);color:var(--void);-webkit-font-smoothing:antialiased}body:before{content:"";background-image:var(--grain);opacity:.05;pointer-events:none;z-index:9999;mix-blend-mode:multiply;position:fixed;inset:0}.locked{height:100%;overflow:hidden}.stage{background:var(--bone);z-index:50;cursor:pointer;touch-action:manipulation;place-items:center;padding:16px;transition:opacity .9s,visibility .9s;display:grid;position:fixed;inset:0}.stage.gone{opacity:0;visibility:hidden;pointer-events:none}.stage-inner{text-align:center;width:min(1100px,100%)}.eyebrow{font-family:var(--font-display);letter-spacing:.42em;text-transform:uppercase;color:var(--ink);margin-bottom:26px;font-size:.72rem;transition:opacity .5s}.stage-title{font-family:var(--font-serif);color:var(--ink);letter-spacing:-.02em;margin:0 auto clamp(20px,4vh,44px);line-height:.95;display:block}.stage-title span{display:block}.st-lead{margin-bottom:.1em;font-size:clamp(1.9rem,7vw,3.6rem)}.st-main{letter-spacing:-.03em;font-size:clamp(4.4rem,17vw,10rem)}.st-by{margin-top:.1em;font-size:clamp(1.9rem,7vw,3.6rem)}.envelope{aspect-ratio:1.5;cursor:pointer;perspective:1400px;touch-action:manipulation;-webkit-tap-highlight-color:transparent;background:0 0;border:none;width:min(620px,88vw);margin:0 auto;padding:0;transition:transform .9s cubic-bezier(.4,0,.2,1),opacity .7s;display:block;position:relative}.envelope:after{content:"";z-index:9;position:absolute;inset:-40px}.env-scene,.env-back,.env-flap,.env-card,.env-front,.env-seal{pointer-events:none}.envelope.opened{opacity:0;pointer-events:none;transition-delay:1.9s;transform:translateY(90px)scale(.9)}.env-scene{transform-style:preserve-3d;animation:9s ease-in-out infinite env-drift;position:absolute;inset:0}.envelope:hover .env-scene{animation-duration:5s}@keyframes env-drift{0%,to{transform:rotateX(10deg)rotateY(-11deg)rotate(-1.5deg)translateY(0)}30%{transform:rotateX(4deg)rotateY(9deg)rotate(1.2deg)translateY(-14px)}62%{transform:rotateX(13deg)rotateY(4deg)rotate(-.6deg)translateY(-6px)}}.env-back{background:linear-gradient(170deg, var(--paper) 0%, var(--paper-warm) 100%);box-shadow:var(--shadow-card);z-index:1;border-radius:3px;position:absolute;inset:0}.env-flap{background:linear-gradient(180deg, var(--paper-warm), var(--paper));clip-path:polygon(0 0,100% 0,50% 100%);transform-origin:top;height:56%;transform-style:preserve-3d;backface-visibility:hidden;z-index:4;filter:drop-shadow(0 6px 12px oklch(20% .03 264/.16));position:absolute;top:0;left:0;right:0;transform:rotateX(0)}.envelope.opened .env-flap{animation:.9s cubic-bezier(.5,0,.15,1) both flap-open}@keyframes flap-open{0%{z-index:4;transform:rotateX(0)}20%{z-index:4;transform:rotateX(-14deg)}to{z-index:0;transform:rotateX(172deg)}}.env-card{aspect-ratio:.72;object-fit:cover;transform-origin:bottom;width:64%;box-shadow:var(--shadow-card);opacity:0;z-index:2;border-radius:2px;position:absolute;bottom:5%;left:50%;transform:translateY(6%)scale(.98)}.envelope.opened .env-card{opacity:1;z-index:6;animation:2s cubic-bezier(.22,1,.28,1) .62s both card-lift}@keyframes card-lift{0%{transform:translateY(6%)scale(.98)rotate(0)}45%{transform:translateY(-78%)scale(1.24)rotate(1.6deg)}70%{transform:translateY(-104%)scale(1.36)rotate(-1.2deg)}to{transform:translateY(-98%)scale(1.34)rotate(0)}}.env-front{background:linear-gradient(190deg, var(--paper-warm) 0%, var(--paper) 100%);clip-path:polygon(0 0,50% 46%,100% 0,100% 100%,0 100%);z-index:3;border-radius:3px;position:absolute;inset:0;box-shadow:inset 0 1px oklch(100% 0 0/.6)}.env-seal{z-index:5;width:62px;height:62px;transition:opacity .4s,transform .5s;position:absolute;top:50%;left:50%;translate:-50% -50%}.envelope.opened .env-seal{opacity:0;transform:translate(-50%,-50%)scale(.5)rotate(-25deg)}.open-hint{font-family:var(--font-display);letter-spacing:.34em;text-transform:uppercase;color:var(--ink-deep);margin-top:30px;font-size:.7rem;animation:2.6s ease-in-out infinite breathe}@keyframes breathe{0%,to{opacity:.4}50%{opacity:1}}.doc{opacity:0;transition:opacity .9s .4s}.doc.revealed{opacity:1}.hero{background:var(--bone);place-items:center;min-height:100svh;padding:0;display:grid}.hero>div{place-items:center;width:100%;height:100svh;display:grid;position:relative}.flyer-wrap{perspective:1200px;width:auto;height:100svh;animation:1.4s cubic-bezier(.16,1,.3,1) both flyer-rise,4.2s ease-in-out 1.3s 2 both flyer-settle;display:flex}.flyer{object-fit:contain;border-radius:0;width:auto;max-width:100vw;height:100svh;display:block}@keyframes flyer-rise{0%{opacity:0;transform:translateY(70px)scale(.94)rotate(-2deg)}to{opacity:1;transform:translateY(0)scale(1)rotate(0)}}@keyframes flyer-settle{0%,to{transform:translateY(0)rotateX(0)rotateY(0)rotate(0)}25%{transform:translateY(-10px)rotateX(2.2deg)rotateY(-2.4deg)rotate(.5deg)}50%{transform:translateY(2px)rotateX(-1.6deg)rotateY(0)rotate(-.5deg)}75%{transform:translateY(-6px)rotateX(1deg)rotateY(2.4deg)rotate(.3deg)}}@media (prefers-reduced-motion:reduce){.envelope,.env-scene,.flyer-wrap,.envelope.opened .env-card,.envelope.opened .env-flap{animation:none!important}}.scroll-cue{text-align:center;letter-spacing:.34em;text-transform:uppercase;color:var(--ink-deep);text-shadow:0 1px 6px var(--bone);pointer-events:none;font-size:.68rem;position:absolute;bottom:22px;left:0;right:0}section.sheet{background:var(--bone);color:var(--void);padding:clamp(56px,9vw,120px) 20px}section.dark{background:var(--paper);color:var(--void);padding:clamp(56px,9vw,120px) 20px}.wrap{width:min(720px,100%);margin:0 auto}h1.title{font-family:var(--font-serif);color:var(--ink);letter-spacing:-.02em;font-size:clamp(2.6rem,9vw,4.6rem);line-height:.95}.kicker{font-family:var(--font-display);letter-spacing:.4em;text-transform:uppercase;color:var(--ink);margin-bottom:18px;font-size:.7rem;font-weight:700}.lede{font-family:var(--font-serif);margin-top:26px;font-size:clamp(1.35rem,3.4vw,1.9rem);line-height:1.35}.acts{border-top:1px solid oklch(42% .25 264/.3);margin-top:52px}.act{border-bottom:1px solid oklch(42% .25 264/.3);grid-template-columns:88px 1fr;gap:20px;padding:26px 0;display:grid}.act-time{font-family:var(--font-display);color:var(--ink);letter-spacing:-.01em;font-size:1rem;font-weight:800}.act-num{letter-spacing:.28em;text-transform:uppercase;opacity:.6;margin-bottom:6px;font-size:.62rem;display:block}.act-body{font-size:1.02rem;line-height:1.55}.act-body strong{color:var(--ink)}.facts{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:20px;margin-top:48px;display:grid}.fact{border:1px solid oklch(42% .25 264/.25);padding:20px}.fact dt{font-family:var(--font-display);letter-spacing:.3em;text-transform:uppercase;opacity:.6;margin-bottom:10px;font-size:.62rem}.fact dd{font-family:var(--font-display);font-size:1.05rem;font-weight:700;line-height:1.35}.fact a{color:var(--ink)}.rsvp-card{background:var(--bone);color:var(--void);max-width:520px;box-shadow:var(--shadow-card);margin:40px auto 0;padding:clamp(28px,5vw,44px)}.field{margin-bottom:18px}.field label{font-family:var(--font-display);letter-spacing:.28em;text-transform:uppercase;color:var(--ink-deep);margin-bottom:8px;font-size:.62rem;display:block}.field input{background:var(--bone);width:100%;font-family:var(--font-body);color:var(--void);border:1.5px solid oklch(42% .25 264/.35);border-radius:2px;padding:14px;font-size:1rem}.field input:focus{border-color:var(--ink);outline:none;box-shadow:0 0 0 3px oklch(42% .25 264/.18)}.btn{background:var(--ink);width:100%;color:var(--bone);font-family:var(--font-display);letter-spacing:.22em;text-transform:uppercase;cursor:pointer;border:none;border-radius:2px;padding:16px;font-size:.8rem;font-weight:800;transition:transform .16s,background .2s}.btn:hover:not(:disabled){background:var(--ink-deep);transform:translateY(-2px)}.btn:disabled{opacity:.6;cursor:not-allowed}.btn.ghost{color:var(--ink);border:1.5px solid var(--ink);background:0 0;width:auto;padding:12px 22px}.msg{color:oklch(50% .2 25);margin-top:14px;font-size:.9rem}.confirmed{text-align:center}.confirmed h3{font-family:var(--font-serif);color:var(--ink);margin-bottom:12px;font-size:2.2rem}footer.foot{background:var(--bone);color:var(--ink-deep);text-align:center;letter-spacing:.28em;text-transform:uppercase;padding:40px 20px 60px;font-size:.7rem}.admin{background:var(--void-deep);min-height:100svh;padding:48px 20px}.admin-wrap{width:min(900px,100%);margin:0 auto}.admin h1{font-family:var(--font-serif);color:var(--bone);margin-bottom:6px;font-size:2.4rem}.admin p.sub{color:oklch(72% .04 264);margin-bottom:28px;font-size:.9rem}table.rsvp-table{border-collapse:collapse;background:var(--paper);width:100%;color:var(--void)}table.rsvp-table th,table.rsvp-table td{text-align:left;border-bottom:1px solid oklch(42% .25 264/.2);padding:12px 14px;font-size:.92rem}table.rsvp-table th{font-family:var(--font-display);letter-spacing:.24em;text-transform:uppercase;background:var(--ink);color:var(--bone);font-size:.62rem}.admin-actions{flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:20px;display:flex}.count-pill{font-family:var(--font-display);color:var(--bone);letter-spacing:.16em;text-transform:uppercase;border:1px solid oklch(95% .008 90/.3);padding:10px 16px;font-size:.75rem;font-weight:800}.btn.light{background:var(--bone);color:var(--ink);width:auto;padding:12px 20px}@media (width<=520px){.act{grid-template-columns:1fr;gap:8px}}.kicker.on-dark{color:var(--ink)}.section-tight{padding-top:0}.rsvp-heading{font-family:var(--font-serif);color:var(--ink);margin-bottom:22px;font-size:2rem;line-height:1.05}.host-line{display:block}
