:root{--navy:#0d1c2c;--navy2:#18344d;--cream:#f5f1e8;--gold:#c6a76a;--ink:#24313b;--white:#fff}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--cream);color:var(--ink);font-family:Georgia,'Times New Roman',serif;overflow-x:hidden}.hidden{display:none}.eyebrow{font:600 11px/1.4 Arial,sans-serif;letter-spacing:.34em;margin:0 0 18px;color:rgba(255,255,255,.78)}.eyebrow.dark{color:#7a6d55}.lock-screen{position:fixed;inset:0;z-index:1000;display:grid;place-items:center;padding:24px;background:linear-gradient(rgba(5,13,22,.55),rgba(5,13,22,.82)),url('assets/photo2.jpeg') center/cover no-repeat}.lock-card{width:min(92vw,390px);padding:42px 28px 34px;text-align:center;color:#fff;background:rgba(10,24,38,.66);border:1px solid rgba(255,255,255,.22);border-radius:26px;backdrop-filter:blur(16px);box-shadow:0 24px 80px rgba(0,0,0,.35)}.mini-heart{font-size:26px;color:#d9c08e;margin-bottom:10px}.lock-card h1{font-size:38px;font-weight:400;margin:0}.lock-card h1 span{color:var(--gold);font-style:italic}.date{letter-spacing:.3em;margin:12px 0 30px;color:#eadfca}.lock-card label{display:block;font:12px Arial,sans-serif;letter-spacing:.12em;text-transform:uppercase;margin-bottom:12px}.lock-card input{width:100%;height:54px;text-align:center;font:600 24px Arial,sans-serif;letter-spacing:.5em;color:#fff;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.3);border-radius:14px;outline:none}.lock-card input:focus{border-color:#d8bd87;box-shadow:0 0 0 3px rgba(198,167,106,.16)}button{font:600 12px Arial,sans-serif;letter-spacing:.12em;text-transform:uppercase;cursor:pointer}.lock-card button,#replay{width:100%;margin-top:16px;padding:16px 18px;border:0;border-radius:999px;background:#f1e6d1;color:#162638}.error{height:18px;margin:12px 0 0;font:13px Arial,sans-serif;color:#ffd1d1}.hero{position:relative;min-height:100svh;display:grid;place-items:center;overflow:hidden;color:#fff}.hero-video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.hero-shade{position:absolute;inset:0;background:linear-gradient(180deg,rgba(5,12,20,.25),rgba(5,12,20,.42) 55%,rgba(5,12,20,.75))}.hero-content{position:relative;text-align:center;padding:30px}.hero-content h2{font-size:clamp(48px,14vw,98px);line-height:.95;font-weight:400;font-style:italic;margin:0;text-shadow:0 5px 30px rgba(0,0,0,.28)}.names{font-size:clamp(22px,6vw,38px);letter-spacing:.08em;margin:26px 0 6px}.hero-date{font:13px Arial,sans-serif;letter-spacing:.35em;text-transform:uppercase}.scroll-cue{display:inline-grid;place-items:center;width:48px;height:48px;margin-top:34px;border:1px solid rgba(255,255,255,.55);border-radius:50%;color:#fff;text-decoration:none;font-size:28px;animation:bob 2s infinite}.music-toggle{position:fixed;right:18px;bottom:18px;z-index:50;width:48px;height:48px;border:1px solid rgba(255,255,255,.28);border-radius:50%;background:rgba(13,28,44,.78);color:#fff;backdrop-filter:blur(10px);box-shadow:0 8px 25px rgba(0,0,0,.2)}.music-toggle.paused{opacity:.55}.section{padding:92px 20px}.intro-section{text-align:center;max-width:920px;margin:auto}.intro-section h3,.gallery-head h3,.letter h3,.finale-content h3{font-size:clamp(34px,7vw,62px);line-height:1.08;font-weight:400;margin:0}.intro-section em{color:#987a43}.lead{max-width:650px;margin:28px auto 0;font-size:18px;line-height:1.8;color:#5c676e}.gallery{background:#fff}.gallery-head{max-width:1050px;margin:0 auto 38px}.gallery-head h3{font-size:clamp(34px,6vw,56px)}.grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;max-width:1100px;margin:auto}.tile{border:0;padding:0;background:#ddd;overflow:hidden;min-height:240px}.tile.wide{grid-column:span 2}.tile.tall{min-height:410px}.tile img{display:block;width:100%;height:100%;object-fit:cover;transition:transform .7s ease}.tile:hover img{transform:scale(1.035)}.letter-section{background:linear-gradient(135deg,#e7dfd0,#f7f3eb)}.letter{max-width:760px;margin:auto;background:rgba(255,255,255,.82);padding:clamp(36px,8vw,84px);box-shadow:0 24px 70px rgba(55,44,28,.12);border:1px solid rgba(130,104,63,.18)}.letter h3{font-size:clamp(34px,6vw,52px);margin-bottom:28px}.letter p{font-size:18px;line-height:1.85;color:#536069}.signature{margin-top:32px;font-style:italic}.signature strong{font-size:24px;color:#7e6337}.finale{position:relative;min-height:85svh;display:grid;place-items:center;color:#fff;text-align:center;overflow:hidden}.finale-bg{position:absolute;inset:0;background:linear-gradient(rgba(8,18,29,.42),rgba(8,18,29,.72)),url('assets/photo5.jpeg') center/cover no-repeat}.finale-content{position:relative;max-width:800px;padding:30px}.finale-content h3{font-size:clamp(42px,9vw,74px)}.finale-content>p:not(.eyebrow){font-size:24px;letter-spacing:.08em}.finale #replay{width:auto;min-width:220px;background:#f3eadb;margin-top:22px}dialog{width:100vw;height:100vh;max-width:none;max-height:none;border:0;padding:0;background:rgba(3,8,14,.94)}dialog::backdrop{background:rgba(3,8,14,.94)}dialog img{width:100%;height:100%;object-fit:contain}#closeLightbox{position:fixed;top:max(18px,env(safe-area-inset-top));right:20px;z-index:2;width:46px;height:46px;border:1px solid rgba(255,255,255,.4);border-radius:50%;background:rgba(0,0,0,.25);color:#fff;font-size:30px;line-height:1}.reveal{opacity:0;transform:translateY(24px);transition:opacity .9s ease,transform .9s ease}.reveal.visible{opacity:1;transform:none}.heart{position:fixed;z-index:999;pointer-events:none;color:#e8d3aa;animation:floatHeart 2.7s ease-out forwards}@keyframes floatHeart{to{transform:translateY(-120px) scale(1.7);opacity:0}}@keyframes bob{50%{transform:translateY(7px)}}@media(min-width:760px){.grid{grid-template-columns:repeat(4,1fr);gap:14px}.tile.wide{grid-column:span 2}.tile.tall{grid-row:span 2;min-height:560px}.tile{min-height:270px}.section{padding:120px 32px}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;animation:none!important;transition:none!important}.reveal{opacity:1;transform:none}}
