:root{--ink:#17342b;--deep:#0d241d;--green:#26483d;--cream:#f4f0e5;--paper:#fbf8f0;--gold:#c9a86a;--white:#fff;--muted:#67736e;--serif:'Italiana',Georgia,serif;--sans:'DM Sans',Arial,sans-serif}
*{box-sizing:border-box}[hidden]{display:none!important}html{scroll-behavior:smooth}body{margin:0;background:var(--deep);color:var(--ink);font-family:var(--sans);font-weight:300;line-height:1.7}body.locked{overflow:hidden}button,input,select,textarea{font:inherit}button,a{touch-action:manipulation}a{color:inherit}.desktop-pane{display:none}.invitation{width:100%;background:var(--paper);overflow:hidden}.opening{position:fixed;inset:0;z-index:50;display:grid;place-items:end center;min-height:100svh;color:white;background:var(--deep);transition:opacity .8s ease,visibility .8s}.opening.closed{opacity:0;visibility:hidden;pointer-events:none}.opening>img,.hero>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.opening-shade,.hero-shade,.desktop-shade{position:absolute;inset:0;background:linear-gradient(180deg,rgba(3,14,10,.12),rgba(3,14,10,.2) 35%,rgba(3,14,10,.88))}.opening-copy{position:relative;width:100%;padding:48px 24px max(56px,env(safe-area-inset-bottom));text-align:center}.eyebrow{margin:0 0 6px;text-transform:uppercase;letter-spacing:.32em;font-size:.68rem;font-weight:500}.opening h1,.hero h2,.desktop-copy h1,.footer h2{margin:0;font-family:var(--serif);font-weight:400;line-height:1.1;font-size:clamp(3rem,14vw,5.5rem)}.guest-block{margin:28px auto 24px;display:flex;flex-direction:column}.guest-block small{opacity:.75}.guest-block strong{font-weight:500}.button{border:0;border-radius:99px;padding:12px 22px;cursor:pointer;font-weight:500;letter-spacing:.02em;transition:transform .2s,background .2s}.button:hover{transform:translateY(-2px)}.button-light{background:white;color:var(--ink)}.button-gold{background:var(--gold);color:#102820;width:100%}.hero{position:relative;min-height:82svh;display:grid;place-items:end center;color:white}.hero-copy{position:relative;text-align:center;padding:48px 20px}.hero-date{text-transform:uppercase;letter-spacing:.18em;font-size:.75rem}.section-dark{background:var(--deep);color:white}.section-green{background:var(--green);color:white}.countdown-section{text-align:center;padding:38px 20px 70px}.countdown{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;max-width:520px;margin:auto}.countdown div{border-right:1px solid rgba(255,255,255,.18)}.countdown div:last-child{border:0}.countdown strong{display:block;font-family:var(--serif);font-size:2rem;font-weight:400}.countdown span{font-size:.62rem;text-transform:uppercase;letter-spacing:.12em;opacity:.7}.text-link{display:inline-block;margin-top:28px;text-decoration:none;border-bottom:1px solid var(--gold);padding-bottom:2px;color:var(--gold);font-size:.84rem}.paper-section{position:relative;padding:88px 24px;background-color:var(--paper);background-image:radial-gradient(rgba(23,52,43,.045) .8px,transparent .8px);background-size:7px 7px}.intro{text-align:center}.ornament{color:var(--gold);font-size:2rem}.quote{max-width:580px;margin:20px auto 8px;font-family:var(--serif);font-size:1.55rem;line-height:1.55}.quote-source{color:var(--gold);font-size:.78rem;text-transform:uppercase;letter-spacing:.16em}.intro-copy{max-width:560px;margin:46px auto 0;color:var(--muted)}.couple{padding-top:0;text-align:center}.person{max-width:440px;margin:0 auto}.portrait{width:min(72vw,310px);aspect-ratio:4/5;margin:0 auto 26px;border-radius:50% 50% 4px 4px;overflow:hidden;padding:7px;border:1px solid var(--gold)}.portrait img{width:100%;height:100%;object-fit:cover;border-radius:inherit}.eyebrow.dark{color:var(--gold)}.person h3{font-family:var(--serif);font-size:2.2rem;line-height:1.2;font-weight:400;margin:5px 0 14px}.person p{margin:0 auto 12px;max-width:340px;color:var(--muted)}.person a{font-size:.82rem;color:var(--green)}.ampersand{font-family:var(--serif);font-size:3.5rem;color:var(--gold);margin:34px}.gallery-section,.wishes,.rsvp{padding:88px 18px}.section-heading{text-align:center;max-width:600px;margin:0 auto 38px}.section-heading span{color:var(--gold);font-size:.7rem;text-transform:uppercase;letter-spacing:.26em}.section-heading h2{font-family:var(--serif);font-size:2.8rem;line-height:1.1;font-weight:400;margin:5px 0 14px}.section-heading p{color:var(--muted);margin:0}.section-heading.light p{color:rgba(255,255,255,.7)}.gallery{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;max-width:760px;margin:auto}.gallery button{border:0;padding:0;background:transparent;overflow:hidden;cursor:zoom-in}.gallery button:nth-child(3n+1){grid-row:span 2}.gallery img{width:100%;height:100%;min-height:180px;object-fit:cover;display:block;transition:transform .5s}.gallery button:hover img{transform:scale(1.04)}.events{padding-bottom:96px}.event-card{max-width:560px;margin:18px auto;padding:30px 24px;border:1px solid rgba(23,52,43,.15);text-align:center;background:rgba(255,255,255,.55)}.event-card h3{margin:0;font-family:var(--serif);font-size:2rem;font-weight:400}.event-card .time{color:var(--gold);font-weight:600}.event-card .venue{font-weight:600;margin-bottom:0}.event-card .address{color:var(--muted);font-size:.9rem}.event-card a{display:inline-block;text-decoration:none;border-bottom:1px solid var(--ink);font-size:.8rem;text-transform:uppercase;letter-spacing:.12em}.form-card{max-width:520px;margin:0 auto;padding:24px;border-radius:4px;background:var(--paper);color:var(--ink);box-shadow:0 16px 48px rgba(0,0,0,.12)}.form-card label{display:block;font-size:.75rem;text-transform:uppercase;letter-spacing:.09em;font-weight:500;margin-bottom:14px}.form-card input,.form-card select,.form-card textarea{display:block;width:100%;margin-top:6px;border:1px solid #d9d6cb;border-radius:2px;background:white;padding:11px 12px;color:var(--ink);text-transform:none;letter-spacing:normal;outline:none}.form-card input:focus,.form-card select:focus,.form-card textarea:focus{border-color:var(--gold);box-shadow:0 0 0 3px rgba(201,168,106,.15)}.form-status{min-height:1.7em;margin:10px 0 0;text-align:center;font-size:.84rem}.gift{padding-bottom:96px}.bank-list{max-width:560px;margin:auto}.bank-card{display:grid;grid-template-columns:1fr auto;gap:12px;padding:22px 0;border-bottom:1px solid rgba(23,52,43,.16)}.bank-card small{display:block;color:var(--gold);letter-spacing:.12em}.bank-card strong{font-size:1.15rem}.bank-card p{margin:2px 0 0;color:var(--muted);font-size:.86rem}.copy-button{align-self:center;border:1px solid var(--ink);background:transparent;border-radius:99px;padding:7px 14px;cursor:pointer}.wish-list{max-width:520px;margin:28px auto}.wish-card{padding:18px 0;border-bottom:1px solid rgba(255,255,255,.14)}.wish-card strong{color:var(--gold);font-weight:500}.wish-card p{margin:4px 0;color:rgba(255,255,255,.78)}.wish-card time{font-size:.7rem;opacity:.45}.text-button{display:block;margin:22px auto 0;border:0;border-bottom:1px solid var(--gold);background:none;color:var(--gold);cursor:pointer}.footer{text-align:center;padding:90px 24px max(80px,env(safe-area-inset-bottom))}.footer>p{max-width:570px;margin:0 auto 56px;color:rgba(255,255,255,.76)}.footer>span,.footer>small{display:block;letter-spacing:.16em;text-transform:uppercase;font-size:.65rem}.footer h2{font-size:3.6rem;margin:12px}.music-button{position:fixed;z-index:30;right:18px;bottom:max(18px,env(safe-area-inset-bottom));width:44px;height:44px;border:0;border-radius:50%;background:var(--gold);color:var(--deep);box-shadow:0 5px 20px rgba(0,0,0,.25);cursor:pointer}.music-button.playing{animation:spin 5s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}dialog{padding:0;border:0;background:transparent;max-width:92vw;max-height:92vh}dialog::backdrop{background:rgba(0,0,0,.9)}dialog img{display:block;max-width:92vw;max-height:88vh}dialog button{position:fixed;right:18px;top:12px;border:0;background:none;color:white;font-size:2.5rem;cursor:pointer}.toast{position:fixed;z-index:70;left:50%;bottom:24px;transform:translate(-50%,30px);opacity:0;pointer-events:none;background:#101a17;color:white;border-radius:4px;padding:10px 16px;font-size:.82rem;transition:.3s}.toast.show{opacity:1;transform:translate(-50%,0)}.reveal{opacity:0;transform:translateY(24px);transition:opacity .7s ease,transform .7s ease}.reveal.visible{opacity:1;transform:none}
@media(min-width:961px){body{overflow:auto;background:#081712}.desktop-pane{display:block;position:fixed;inset:0 44% 0 0;color:white}.desktop-pane>img{position:absolute;width:100%;height:100%;object-fit:cover}.desktop-copy{position:absolute;inset:auto 8% 8%;z-index:2}.desktop-copy p{letter-spacing:.2em;text-transform:uppercase;font-size:.7rem}.desktop-copy h1{font-size:4.5rem}.desktop-copy span{display:block;margin-top:18px}.invitation{width:44%;min-width:460px;margin-left:auto;box-shadow:-15px 0 60px rgba(0,0,0,.35)}.opening{left:auto;width:44%;min-width:460px}.hero{min-height:100svh}.paper-section{padding-left:48px;padding-right:48px}.gallery-section,.wishes,.rsvp{padding-left:40px;padding-right:40px}.music-button{right:calc(44% + 18px)}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.reveal{opacity:1;transform:none;transition:none}.music-button.playing{animation:none}}
