.classic{--cream:#f8f3e9;--cream-deep:#f1e9da;--ink:#3c352c;--ink-soft:#6b6156;--gold:#a3835a;--line:#ddd1ba;background:var(--cream);color:var(--ink);font-family:var(--classic-font-body), serif;line-height:1.8;position:relative}.classic *{box-sizing:border-box}.classic .eyebrow{font-family:var(--classic-font-display), serif;letter-spacing:.35em;color:var(--gold);text-transform:uppercase;text-align:center;font-size:13px;font-style:italic}.classic #schedule-eyebrow{opacity:0;will-change:opacity, transform;transform:translateY(16px)}.classic section{text-align:center;max-width:900px;margin:0 auto;padding:120px 24px}.classic .reveal{opacity:0;transition:opacity 1s,transform 1s;transform:translateY(24px)}.classic .reveal.in{opacity:1;transform:translateY(0)}.classic .envelope-intro{z-index:1000;background:var(--cream);contain:paint;flex-direction:column;justify-content:center;align-items:center;gap:28px;transition:opacity .7s;display:flex;position:fixed;inset:0;overflow:hidden;transform:translateZ(0)}.classic .envelope-intro.is-opening{pointer-events:none}.classic .envelope-intro.is-hidden{opacity:0;pointer-events:none}.classic .envelope-stage{aspect-ratio:4070/2584;flex-shrink:0;width:min(86vw,460px);position:relative}@media (max-width:600px){.classic .envelope-intro{padding-top:12vh}.classic .envelope-stage{transform:scale(1.92)}.classic .envelope-hint{margin-top:calc(25vw + 12px)}.classic .wax-seal img{filter:none}}.classic .envelope-bottom-stack{z-index:1;position:absolute;inset:0}@keyframes classicEnvelopeBaseExit{0%{opacity:1}to{opacity:0}}.classic .envelope-bottom-frame{opacity:0;will-change:transform, opacity;filter:drop-shadow(0 20px 34px #6b432138);width:100%;height:auto;display:block;position:absolute;bottom:0;left:0}.classic .envelope-bottom-frame.is-base{opacity:1;transform:translateY(0)}.classic .envelope-bottom-frame.is-base.is-fading-base{animation:.5s ease-in forwards classicEnvelopeBaseExit}.classic .envelope-top-group{z-index:2;position:absolute;inset:0}.classic .envelope-flap{transform-origin:top;will-change:transform, opacity;filter:drop-shadow(0 10px 18px #6b432147);width:100%;transition:transform .6s ease-out,opacity .45s ease-out .15s;display:block;position:absolute;top:0;left:0}.classic .wax-seal{aspect-ratio:1;cursor:pointer;will-change:transform, opacity;background:0 0;border:none;width:17%;padding:0;transition:opacity .3s ease-out,transform .3s ease-out;position:absolute;top:57%;left:50%;transform:translate(-50%,-50%)}.classic .wax-seal img{filter:drop-shadow(0 10px 18px #6b432152);width:100%;height:100%;transition:transform .25s;display:block}.classic .wax-seal:hover img{transform:scale(1.04)}.classic .envelope-hint{font-family:var(--classic-font-display), serif;letter-spacing:.15em;color:var(--ink-soft);font-size:14px;font-style:italic;transition:opacity .3s}.classic .envelope-intro.is-opening .envelope-flap{opacity:0;transform:scaleY(.15)}.classic .envelope-intro.is-opening .wax-seal{opacity:0;transform:translate(-50%,calc(-50% - 20px))scale(1.05)}.classic .envelope-intro.is-opening .envelope-hint{opacity:0}.classic .bg-illus{z-index:-1;opacity:.4;pointer-events:none;-webkit-user-select:none;user-select:none;position:absolute}.classic .section-divider{opacity:.55;max-width:260px;margin:0 auto}.classic .section-divider img{width:100%;display:block}.classic .hero .bg-illus.is-left{opacity:.6;width:210px;max-width:50vw;top:10px;left:0;transform:scaleX(-1)}.classic .frame .bg-illus{z-index:1;width:100px;max-width:22vw;bottom:-10px;right:-130px}@media (max-width:600px){.classic .frame .bg-illus{width:78px;right:-32px}}.classic .family-photo-wrap{width:100%;max-width:560px;display:inline-block;position:relative}.classic .family-photo-wrap .bg-illus{z-index:1;width:150px;max-width:34vw;top:10%;right:-160px}.classic .family .bg-illus.is-left{width:105px;max-width:28vw;top:230px;left:0}.classic .venue .bg-illus{opacity:.22;width:480px;max-width:90vw;top:-20px;left:50%;transform:translate(-50%)}.classic .schedule .bg-illus{width:200px;max-width:46vw;bottom:4px;right:-10px}.classic .rsvp .bg-illus{width:100px;max-width:28vw;top:0;left:-10px}.classic .footer-photo{margin-top:60px;display:inline-block;position:relative}.classic footer .footer-photo img:not(.bg-illus){margin-bottom:0}.classic .footer-rings-accent{opacity:.5;width:190px;margin:6px auto 0;display:block;position:static}.classic .hero{padding-top:90px;padding-bottom:100px;position:relative}.classic .frame{background:#fff;width:82vw;max-width:440px;padding:14px 14px 34px;display:inline-block;position:relative;box-shadow:0 30px 60px -20px #3c352c40}.classic .frame .photo-slot{aspect-ratio:4/5.2;object-fit:cover;background:var(--cream-deep);width:100%;display:block}.classic .hero .eyebrow{margin-top:56px;margin-bottom:22px}.classic .name-logo{width:80vw;max-width:420px;font-family:var(--classic-font-display), serif;color:var(--ink);letter-spacing:.04em;margin:0 auto;font-size:clamp(30px,8vw,48px);font-style:italic;font-weight:500;display:block}.classic .scratch-section{padding-top:40px;position:relative}.classic .scratch-section .bg-illus.is-right{opacity:.6;width:250px;max-width:52vw;bottom:-10px;right:6%}.classic .scratch-section .bg-illus.is-left{width:150px;max-width:36vw;top:-6px;left:-4%;transform:rotate(30deg)}.classic .scratch-card{aspect-ratio:4/3;border-radius:6px;width:340px;max-width:84vw;margin:40px auto 0;position:relative;overflow:visible;box-shadow:0 24px 50px -22px #3c352c59}.classic .scratch-reveal{text-align:center;background:#fff;border-radius:6px;flex-direction:column;justify-content:center;align-items:center;gap:8px;padding:20px;display:flex;position:absolute;inset:0}.classic .scratch-reveal .cn{letter-spacing:.04em;color:var(--ink);font-size:18px}.classic .scratch-reveal .detail{letter-spacing:.06em;color:var(--ink-soft);font-size:14px}.classic .scratch-reveal .venue{letter-spacing:.04em;color:var(--ink-soft);font-size:13px}.classic .scratch-canvas{cursor:pointer;touch-action:none;border-radius:6px;width:100%;height:100%;transition:opacity .7s;position:absolute;inset:0}.classic .scratch-canvas.is-cleared{opacity:0;pointer-events:none}.classic .scratch-caption{font-family:var(--classic-font-display), serif;letter-spacing:.12em;color:var(--ink-soft);margin-top:18px;font-size:13px;font-style:italic;transition:opacity .4s}.classic .scratch-caption.is-hidden{opacity:0}.classic .countdown{opacity:0;justify-content:center;gap:22px;margin-top:34px;transition:opacity .6s,transform .6s;display:flex;transform:translateY(10px)}.classic .countdown.is-visible{opacity:1;transform:translateY(0)}.classic .countdown-item{flex-direction:column;align-items:center;gap:4px;min-width:48px;display:flex}.classic .countdown-num{font-family:var(--classic-font-display), serif;color:var(--gold);font-variant-numeric:tabular-nums;font-size:28px}.classic .countdown-label{letter-spacing:.15em;text-transform:uppercase;color:var(--ink-soft);font-size:10px}.classic .confetti-layer{pointer-events:none;z-index:999;position:fixed;inset:0;overflow:hidden}.classic .confetti-piece{animation:classicConfettiDriftX var(--dur) linear forwards;position:absolute}@keyframes classicConfettiDriftX{0%{transform:translate(0)}to{transform:translateX(var(--fx))}}.classic .confetti-inner{width:100%;height:100%;animation:classicConfettiArcY var(--dur) forwards;border-radius:1px}@keyframes classicConfettiArcY{0%{opacity:1;animation-timing-function:cubic-bezier(.15,.75,.3,1);transform:translateY(0)rotate(0)}30%{transform:translateY(var(--py)) rotate(var(--rot1));opacity:1;animation-timing-function:cubic-bezier(.45,0,.8,.4)}to{transform:translateY(var(--fy)) rotate(var(--rot2));opacity:0}}.classic .family{padding-top:40px;position:relative}.classic .family-grid{flex-wrap:wrap;justify-content:center;align-items:center;gap:40px;margin:40px 0 56px;display:flex}@media (max-width:720px){.classic .family-grid{flex-flow:column;gap:24px}}.classic .side{min-width:200px}.classic .side .role{font-family:var(--classic-font-display), serif;letter-spacing:.3em;color:var(--gold);margin-bottom:12px;font-size:13px;font-style:italic}.classic .side .name{letter-spacing:.08em;margin-bottom:10px;font-size:30px;font-weight:500}.classic .side .parents{color:var(--ink-soft);letter-spacing:.04em;font-size:14px}.classic .amp{font-family:var(--classic-font-display), serif;color:var(--line);font-size:26px;font-style:italic}.classic .family-photo{aspect-ratio:4/3;object-fit:cover;background:var(--cream-deep);width:100%;max-width:560px;height:auto;box-shadow:0 30px 60px -25px #3c352c4d}.classic .moments-label{text-align:center;padding:32px 24px 0;position:relative}.classic .moments-label .bg-illus{opacity:.4;width:190px;max-width:44vw;top:4px;left:8%}.classic .moments{max-width:none;text-align:initial;margin:0;padding:0;position:relative}.classic .stack-viewport{height:100vh;position:sticky;top:0;overflow:hidden}.classic .polaroid{will-change:transform, opacity;background:#fff;width:440px;max-width:78vw;padding:16px 16px 40px;position:absolute;top:50%;left:50%;box-shadow:0 22px 50px -18px #3c352c66}.classic .polaroid img{aspect-ratio:4/5;object-fit:cover;width:100%;display:block}@media (max-width:720px){.classic .polaroid{width:320px}}.classic section.venue{position:relative}.classic .venue h2{letter-spacing:.08em;margin:26px 0 8px;font-size:clamp(26px,4vw,34px);font-weight:500}.classic .venue .hall{color:var(--ink-soft);margin-bottom:6px;font-size:16px}.classic .venue .addr{color:var(--ink-soft);margin-bottom:22px;font-size:15px}.classic .map-link{font-family:var(--classic-font-display), serif;letter-spacing:.12em;color:var(--gold);border-bottom:1px solid var(--gold);margin-bottom:40px;padding-bottom:3px;font-style:italic;text-decoration:none;display:inline-block}.classic .map-wrap{border:10px solid #fff;position:relative;box-shadow:0 30px 60px -25px #3c352c4d}.classic .venue-map{background:#3a2c22;width:100%;height:360px}.classic .venue-map .leaflet-tile-pane{filter:invert(89%)sepia(28%)hue-rotate(345deg)saturate(320%)brightness(.86)contrast(1.05)}.classic .venue-map .leaflet-control-attribution{font-family:var(--classic-font-display), serif;color:var(--ink-soft);background:#f8f3e9d9;font-size:10px}.classic .venue-map .leaflet-control-zoom a{color:var(--gold);background:#fff;border-color:var(--line)!important}.classic .venue-pin{background:var(--gold);border:2px solid #fff;border-radius:50% 50% 50% 0;width:16px;height:16px;transform:rotate(-45deg);box-shadow:0 2px 8px #3c352c66}.classic .venue-popup{font-family:var(--classic-font-body), serif;text-align:center;color:var(--ink);letter-spacing:.03em;font-size:13px}.classic .leaflet-popup-content-wrapper{background:var(--cream);border-radius:2px}.classic .leaflet-popup-tip{background:var(--cream)}.classic .schedule{position:relative}.classic .flower-wrap{width:70vw;max-width:380px;margin:8px auto 40px}.classic .flower-wrap svg{width:100%;height:auto;display:block;overflow:visible}.classic .flower-wrap path{fill:none;stroke:var(--gold);stroke-width:1.6px;stroke-linecap:round;stroke-linejoin:round}.classic .timeline{text-align:left;margin-top:48px;list-style:none;display:inline-block}.classic .timeline li{border-bottom:1px solid var(--line);opacity:0;will-change:opacity, transform;align-items:baseline;gap:28px;padding:18px 0;display:flex;transform:translateY(16px)}.classic .timeline li:last-child{border-bottom:none}.classic .timeline .time{font-family:var(--classic-font-display), serif;color:var(--gold);min-width:74px;font-size:20px}.classic .timeline .event{letter-spacing:.04em;font-size:17px}.classic .calendar-cta{opacity:0;will-change:opacity, transform;flex-wrap:wrap;justify-content:center;gap:18px;margin-top:56px;display:flex;transform:translateY(16px)}.classic .cal-btn{font-family:var(--classic-font-display), serif;letter-spacing:.08em;color:var(--gold);border:1px solid var(--gold);cursor:pointer;background:0 0;border-radius:2px;padding:10px 22px;font-size:14px;font-style:italic;text-decoration:none;transition:background .25s,color .25s}.classic .cal-btn:hover{background:var(--gold);color:#fff}.classic .rsvp{position:relative}.classic .rsvp-intro{color:var(--ink-soft);letter-spacing:.04em;margin-top:22px;font-size:15px}.classic .rsvp-btn{font-family:var(--classic-font-display), serif;letter-spacing:.1em;color:#fff;background:var(--gold);border:1px solid var(--gold);cursor:pointer;border-radius:2px;margin-top:34px;padding:14px 40px;font-size:16px;font-style:italic;transition:opacity .25s}.classic .rsvp-btn:hover{opacity:.85}.classic dialog.rsvp-dialog{background:var(--cream);width:90vw;max-width:420px;max-height:85vh;color:var(--ink);opacity:0;border:none;border-radius:3px;margin:auto;padding:0;transition:opacity .25s,transform .25s;overflow-y:auto;transform:scale(.96)translateY(12px);box-shadow:0 30px 70px -20px #3c352c80}.classic dialog.rsvp-dialog.is-visible{opacity:1;transform:scale(1)translateY(0)}.classic dialog.rsvp-dialog::backdrop{background:#2d261e00;transition:background .25s}.classic dialog.rsvp-dialog.is-visible::backdrop{background:#2d261e80}.classic .rsvp-form{text-align:left;flex-direction:column;gap:18px;padding:44px 32px 36px;display:flex;position:relative}.classic .rsvp-form h3{font-family:var(--classic-font-display), serif;letter-spacing:.08em;color:var(--gold);text-align:center;margin-bottom:6px;font-size:22px;font-style:italic;font-weight:400}.classic .rsvp-close{color:var(--ink-soft);cursor:pointer;background:0 0;border:none;padding:6px;font-size:22px;line-height:1;position:absolute;top:14px;right:16px}.classic .rsvp-form label{letter-spacing:.05em;color:var(--ink-soft);flex-direction:column;gap:6px;font-size:13px;display:flex}.classic .rsvp-form input[type=text],.classic .rsvp-form textarea{font-family:var(--classic-font-body), serif;color:var(--ink);border:1px solid var(--line);resize:vertical;background:#fff;border-radius:2px;padding:10px 12px;font-size:15px}.classic .rsvp-form input[type=text]:focus,.classic .rsvp-form textarea:focus,.classic .rsvp-form input[type=number]:focus{border-color:var(--gold);outline:none}.classic .rsvp-attend{border:none;gap:20px;padding:0;display:flex}.classic .rsvp-attend legend{letter-spacing:.05em;color:var(--ink-soft);margin-bottom:6px;padding:0;font-size:13px}.classic .rsvp-attend label{color:var(--ink);flex-direction:row;align-items:center;gap:6px;font-size:14px}.classic .rsvp-attend input[type=radio]{accent-color:var(--gold)}.classic .rsvp-counts{gap:16px;display:flex}.classic .rsvp-counts label{flex:1}.classic .rsvp-counts input[type=number]{font-family:var(--classic-font-body), serif;color:var(--ink);border:1px solid var(--line);background:#fff;border-radius:2px;width:100%;padding:10px 12px;font-size:15px}.classic .rsvp-submit{font-family:var(--classic-font-display), serif;letter-spacing:.1em;color:#fff;background:var(--gold);border:1px solid var(--gold);cursor:pointer;border-radius:2px;margin-top:8px;padding:12px;font-size:16px;font-style:italic;transition:opacity .25s}.classic .rsvp-submit:hover{opacity:.85}.classic .rsvp-submit:disabled{opacity:.6;cursor:default}.classic .rsvp-status{text-align:center;color:var(--ink-soft);min-height:16px;font-size:13px}.classic footer{text-align:center;padding:100px 24px 90px;position:relative}.classic footer img:not(.bg-illus),.classic footer .thanks,.classic footer .names,.classic footer .credit{opacity:0;will-change:opacity, transform;transform:translateY(16px)}.classic footer .footer-photo img:not(.bg-illus){aspect-ratio:4/5;object-fit:cover;background:var(--cream-deep);width:82vw;max-width:440px;margin-bottom:40px;box-shadow:0 20px 40px -20px #3c352c59}.classic footer .thanks{color:var(--ink-soft);letter-spacing:.06em;margin-bottom:18px;font-size:15px}.classic footer .names{font-family:var(--classic-font-display), serif;letter-spacing:.1em;color:var(--gold);font-size:20px;font-style:italic}.classic footer .credit{font-family:var(--classic-font-display), serif;letter-spacing:.3em;text-transform:uppercase;color:#a3835ab3;margin-top:70px;font-size:11px;font-style:italic}.classic footer .credit a{color:inherit;border-bottom:1px solid;text-decoration:none;transition:color .25s}.classic footer .credit a:hover{color:#a3835a}
