:root{
--ink:#292820;--muted:#726f63;--paper:#f3edf0;--paper2:#faf6f2;--gold:#b78b57;
--green:#20231f;--line:#d8d0c5;--serif:"DM Serif Display",Georgia,serif;
--script:"Parisienne",cursive;--sans:Montserrat,Arial,sans-serif
}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:#e7e5de;color:var(--ink);font-family:var(--sans);font-weight:300}
button,a,input,select{font:inherit}.loader{position:fixed;inset:0;background:var(--paper);display:grid;place-items:center;z-index:2000;transition:.7s}.loader span{width:30px;height:30px;border:1px solid var(--gold);border-top-color:transparent;border-radius:50%;animation:spin 1s linear infinite}.loader.done{opacity:0;pointer-events:none}@keyframes spin{to{transform:rotate(360deg)}}

.opening{position:fixed;inset:0;z-index:1500;display:grid;place-items:center;overflow:hidden;background:#171a17;transition:opacity 1.1s,visibility 1.1s}.opening.closed{opacity:0;visibility:hidden;pointer-events:none}.opening-glow{position:absolute;inset:0;background:radial-gradient(circle at 50% 35%,#f5eee5 0,#bca68f 34%,#30352e 75%,#11130f 100%);opacity:.9}
.envelope-wrap{position:relative;width:min(560px,88vw);z-index:2}.envelope{position:relative;width:100%;aspect-ratio:1.52;perspective:1200px;filter:drop-shadow(0 35px 35px #0007);transform-style:preserve-3d}
.envelope-body{position:absolute;inset:0;background:linear-gradient(145deg,#f1e8df,#b9a88f);border-radius:3px}.flap{position:absolute;inset:0;background:linear-gradient(155deg,#e9e0d5,#9c8b72);clip-path:polygon(0 0,100% 0,50% 62%);transform-origin:top;transition:1.35s cubic-bezier(.2,.8,.2,1);z-index:6}.pocket{position:absolute;inset:0;background:linear-gradient(155deg,#eee5da,#aa987e);clip-path:polygon(0 0,50% 56%,100% 0,100% 100%,0 100%);z-index:7}
.letter{position:absolute;z-index:5;left:8%;right:8%;top:6%;height:80%;background:var(--paper2);display:grid;grid-template-columns:34% 66%;align-items:center;padding:22px;box-shadow:0 12px 25px #0002;transition:1.35s cubic-bezier(.2,.8,.2,1)}.letter img{width:100%;height:100%;object-fit:contain;padding:15px}.letter>div{text-align:center}.letter small{letter-spacing:3px;font-size:7px}.letter h2{font:50px var(--script);color:var(--green);margin:8px 0}.letter p{font-size:7px;letter-spacing:2px}.seal{position:absolute;z-index:9;left:50%;top:57%;transform:translate(-50%,-50%);width:64px;height:64px;border:1px solid #fff;border-radius:50%;background:var(--green);color:#fff;font-size:23px;box-shadow:0 8px 18px #0005;cursor:pointer;transition:.5s}.envelope.open .flap{transform:rotateX(-180deg)}.envelope.open .letter{transform:translateY(-68%);z-index:10}.envelope.open .seal{opacity:0;transform:translate(-50%,-50%) scale(1.5)}.open-hint{text-align:center;color:#fff;font-size:8px;letter-spacing:3px;text-transform:uppercase;margin:20px 0 0}

.topbar{position:fixed;z-index:1000;top:20px;left:22px;right:22px;display:flex;justify-content:space-between;opacity:0;transition:1s;pointer-events:none}.topbar.show{opacity:1}.topbar button,.topbar a{pointer-events:auto;color:#fff;text-shadow:0 2px 10px #0009;background:transparent;border:0;text-decoration:none;font-size:9px;letter-spacing:2px;cursor:pointer}

.site-locked{visibility:hidden}.site-locked.live{visibility:visible}.hero{height:100svh;min-height:620px;position:relative;overflow:hidden;color:#fff}.hero-photo{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.hero-shade{position:absolute;inset:0;background:linear-gradient(180deg,#10130e55,#10130e91)}.hero-content{position:absolute;z-index:2;inset:0;display:grid;place-content:center;text-align:center;padding-top:2vh}.kicker{font-size:9px;letter-spacing:5px}.gold-line{height:1px;width:70px;background:var(--gold);margin:18px auto}.hero h1{font:clamp(80px,10vw,140px) var(--script);font-weight:400;margin:0}.graduate{font:500 clamp(17px,2vw,28px) var(--sans);letter-spacing:10px;margin-top:4px}.hero-date{font-size:9px;letter-spacing:4px;margin-top:18px}.discover{margin-top:70px;font-size:8px;letter-spacing:3px}.discover b{display:block;font-size:18px;margin-top:7px}

.section-paper{background:var(--paper)}.intro{text-align:center;min-height:430px;padding:70px 10%;display:grid;place-content:center}.intro-art img{width:78px;height:78px}.intro h2{font:clamp(32px,4vw,52px) var(--serif);font-weight:400;max-width:850px;margin:18px auto}.intro p{font:15px/1.8 var(--serif);max-width:720px;margin:0 auto}.school{font:32px var(--script);margin-top:24px}.generation{font-size:9px;letter-spacing:4px;color:var(--gold);margin-top:10px}

.countdown{height:235px;position:relative;display:grid;place-items:center;overflow:hidden;color:#fff}.countdown>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.countdown-shade{position:absolute;inset:0;background:#11140fc4}.countdown-content{position:relative;text-align:center}.clock{display:flex;gap:22px;margin-top:18px}.clock div{width:100px;height:100px;border:1px solid #d9b77d99;border-radius:50%;display:grid;place-content:center}.clock b{font:38px var(--serif);font-weight:400}.clock small{font-size:7px;letter-spacing:2px}

.details{text-align:center;padding:70px 8%}.detail-grid{max-width:900px;margin:35px auto 25px;display:grid;grid-template-columns:repeat(3,1fr);border-block:1px solid var(--line)}.detail-grid article{padding:28px;border-right:1px solid var(--line)}.detail-grid article:last-child{border:0}.detail-grid small{display:block;color:var(--gold);font-size:8px;letter-spacing:3px;margin-bottom:10px}.detail-grid strong{font:21px/1.3 var(--serif);font-weight:400}.map-btn{display:inline-block;padding:11px 20px;border:1px solid var(--gold);color:var(--ink);text-decoration:none;font-size:8px;letter-spacing:2px}.signoff{font:18px var(--serif);margin-top:40px}.signature{font:50px var(--script);margin-top:8px;color:var(--green)}

.gallery{position:relative;display:grid;grid-template-columns:1fr 2.7fr;min-height:290px;background:var(--green);color:#fff;overflow:hidden}.gallery-intro{display:grid;place-content:center;text-align:center;padding:35px}.gallery-intro h2{font:34px var(--serif);font-weight:400}.gallery-intro button{border:1px solid #d9b77d;background:transparent;color:#fff;padding:10px 17px;font-size:7px;letter-spacing:2px;cursor:pointer}.gallery-track{display:grid;grid-template-columns:repeat(3,1fr);min-width:0;overflow-x:auto;scroll-snap-type:x mandatory}.gallery-track figure{margin:0;position:relative;min-width:0;overflow:hidden;scroll-snap-align:start}.gallery-track img{width:100%;height:100%;min-height:290px;object-fit:cover;transition:transform 1s}.gallery-track figure:hover img{transform:scale(1.06)}.gallery-track figcaption{position:absolute;bottom:10px;left:12px;color:white;font-size:8px}.gallery-arrow{position:absolute;z-index:3;top:50%;transform:translateY(-50%);width:36px;height:36px;border:0;border-radius:50%;background:#f8f2eb;color:var(--green);font-size:27px;cursor:pointer}.gallery-arrow.prev{left:10px}.gallery-arrow.next{right:10px}

.experience{display:grid;grid-template-columns:1fr 1fr 1fr;min-height:250px}.experience>div{padding:55px 35px;text-align:center;display:grid;place-content:center;border-right:1px solid var(--line)}.experience figure{margin:0;min-height:250px}.experience figure img{width:100%;height:100%;object-fit:cover}.dress-chip{display:inline-block;margin:16px auto 8px;border:1px solid var(--gold);padding:10px 15px;font-size:8px;letter-spacing:2px}.experience p{font-size:10px;line-height:1.7}.location-icon{font:30px var(--serif);color:var(--gold)}.location h3{font:25px var(--serif);margin:7px}.location a{display:inline-block;margin-top:8px;padding:9px 16px;border:1px solid var(--gold);color:var(--ink);text-decoration:none;font-size:7px;letter-spacing:2px}

.rsvp{display:grid;grid-template-columns:42% 58%;padding:70px 10%;background:#e8e5dc}.rsvp-copy{padding:20px}.rsvp-copy h2{font:42px var(--serif);font-weight:400;line-height:1.05}.rsvp-copy p{font-size:11px;line-height:1.7}#rsvpForm{display:grid;grid-template-columns:1fr 1fr;gap:10px;align-content:center}.rsvp input,.rsvp select{border:1px solid #bdb5a9;border-radius:2px;background:#f8f4ee;padding:13px 14px;font-size:9px;color:var(--ink)}.rsvp button{grid-column:1/-1;border:0;background:var(--green);color:#fff;padding:14px;font-size:8px;letter-spacing:2px;cursor:pointer}.rsvp output{grid-column:1/-1;text-align:center;font-size:9px}

.ticket{padding:60px 20px;background:#dddcd4}.ticket-card{max-width:700px;margin:auto;background:#f8f4ee;border:1px solid #cfc6b8;box-shadow:0 20px 50px #0002}.ticket-head,.ticket-foot{display:flex;justify-content:space-between;padding:12px 18px;border-bottom:1px dashed #bdb5a9;font-size:8px;letter-spacing:3px}.ticket-foot{border:0;border-top:1px dashed #bdb5a9;letter-spacing:1px}.ticket-main{display:flex;justify-content:space-between;align-items:center;padding:28px}.ticket-main small,.ticket-main span{display:block;font-size:7px;letter-spacing:2px}.ticket-main strong{display:block;font:42px var(--script);font-weight:400;color:var(--green);margin:6px 0}.qr{width:105px;height:105px;background:repeating-conic-gradient(#20231f 0 8%,#f8f4ee 0 16%);border:8px solid #f8f4ee;outline:1px solid #20231f}

footer{text-align:center;background:var(--paper);padding:35px;font-size:8px;letter-spacing:3px}footer img{width:55px;height:55px}footer p{margin-top:16px}

.modal{position:fixed;inset:0;background:#10130fee;z-index:1800;display:none;padding:60px 30px;overflow:auto}.modal.show{display:block}.modal>button{position:fixed;right:20px;top:15px;border:0;background:none;color:#fff;font-size:36px;cursor:pointer}.modal-grid{max-width:1050px;margin:auto;display:grid;grid-template-columns:1fr 1fr;gap:16px}.modal-grid img{width:100%;display:block}

.reveal{opacity:0;transform:translateY(28px);transition:opacity .9s ease,transform .9s ease}.reveal.visible{opacity:1;transform:none}
@media(max-width:850px){
.detail-grid,.experience{grid-template-columns:1fr}.detail-grid article{border-right:0;border-bottom:1px solid var(--line)}.detail-grid article:last-child{border-bottom:0}.experience>div{border-right:0;border-bottom:1px solid var(--line)}.experience figure{height:240px}
.rsvp{grid-template-columns:1fr;padding:60px 7%}.rsvp-copy{text-align:center}.rsvp-copy h2{font-size:38px}#rsvpForm{grid-template-columns:1fr}
.gallery{grid-template-columns:1fr}.gallery-intro{padding:35px}.gallery-track{grid-template-columns:repeat(3,72vw)}
}
@media(max-width:560px){
.envelope-wrap{width:91vw}.letter{grid-template-columns:31% 69%;padding:12px}.letter h2{font-size:39px}.letter small{font-size:6px}.letter p{font-size:6px}
.hero h1{font-size:82px}.graduate{font-size:15px;letter-spacing:6px}.clock{gap:5px}.clock div{width:72px;height:72px}.clock b{font-size:27px}.clock small{font-size:6px}
.intro{padding:60px 8%}.intro h2{font-size:34px}.intro p{font-size:14px}.gallery-track{grid-template-columns:repeat(3,82vw)}.ticket-main{display:block}.qr{margin-top:22px}
.modal-grid{grid-template-columns:1fr}
}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
