:root{--cream:#f7f4ee;--ivory:#fbfaf6;--paper:#ffffff;--taupe:#8a7e6e;--taupe-soft:#b6ab9a;--sage:#9aa890;--sage-deep:#6f7d68;--blue:#8ba0b6;--blue-deep:#51677e;--ink:#3c3a35;--ink-soft:#6b675f;--font-script:"Tangerine",cursive;--font-serif:"Cormorant Garamond",Georgia,serif;--font-sans:"Jost","Helvetica Neue",Arial,sans-serif;--maxw:1080px;--radius:14px;--shadow:0 18px 50px -22px rgba(60,58,53,0.35);--shadow-soft:0 10px 30px -18px rgba(60,58,53,0.3)}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--cream);color:var(--ink);font-family:var(--font-sans);font-size:17px;line-height:1.7;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}img{max-width:100%;display:block}a{color:var(--blue-deep);text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3{font-family:var(--font-serif);font-weight:500;color:var(--ink);margin:0 0 .4em;letter-spacing:.01em}p{margin:0 0 1em}.container{width:100%;max-width:var(--maxw);margin:0 auto;padding:0 24px}.section{padding:92px 0}.section--tight{padding:60px 0}.section--cream{background:var(--cream)}.section--ivory{background:var(--ivory)}.section--paper{background:var(--paper)}.center{text-align:center}.eyebrow{font-family:var(--font-sans);text-transform:uppercase;letter-spacing:.42em;font-size:12px;font-weight:500;color:var(--blue-deep);margin-bottom:18px}.script{font-family:var(--font-script);line-height:1;color:var(--ink)}.divider{display:flex;align-items:center;justify-content:center;gap:14px;margin:22px auto;color:var(--sage-deep)}.divider:after,.divider:before{content:"";height:1px;width:60px;background:var(--taupe-soft)}.divider svg{width:22px;height:22px;opacity:.8}.section-title{font-size:clamp(30px,5vw,46px);margin-bottom:6px}.btn{display:inline-block;font-family:var(--font-sans);font-size:13px;letter-spacing:.22em;text-transform:uppercase;padding:15px 34px;border-radius:999px;border:1px solid var(--blue-deep);background:var(--blue-deep);color:#fff;cursor:pointer;transition:all .25s ease}.btn:hover{background:#44586c;border-color:#44586c;text-decoration:none}.btn--ghost{background:transparent;color:var(--blue-deep)}.btn--ghost:hover{background:var(--blue-deep);color:#fff}.btn--block{display:block;width:100%;text-align:center}.card{background:var(--paper);border-radius:var(--radius);box-shadow:var(--shadow-soft);padding:34px}.nav{position:-webkit-sticky;position:sticky;top:0;z-index:50;background:rgba(247,244,238,.86);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid rgba(182,171,154,.4)}.nav__inner{display:flex;align-items:center;justify-content:space-between;height:64px}.nav__brand{font-family:var(--font-script);font-size:34px;line-height:1;color:var(--ink)}.nav__brand:hover{text-decoration:none}.nav__links{display:flex;gap:26px;align-items:center}.nav__links a{font-size:13px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-soft)}.nav__links a:hover{color:var(--blue-deep);text-decoration:none}.nav__cta{padding:9px 20px;border-radius:999px;background:var(--blue-deep);color:#fff!important}.nav__cta:hover{background:#44586c}@media (max-width:760px){.nav__links a:not(.nav__cta){display:none}}.hero{position:relative;min-height:92vh;display:flex;align-items:center;justify-content:center;text-align:center;color:#fff;overflow:hidden}.hero__bg{background-size:cover;background-position:center 35%;transform:scale(1.05)}.hero__bg,.hero__scrim{position:absolute;inset:0}.hero__scrim{background:radial-gradient(ellipse 70% 50% at 50% 48%,rgba(30,34,40,.5) 0,rgba(30,34,40,.12) 70%),linear-gradient(180deg,rgba(40,46,54,.45),rgba(40,46,54,.2) 38%,rgba(40,46,54,.62))}.hero__content{position:relative;z-index:2;padding:40px 20px}.hero__eyebrow{text-transform:uppercase;letter-spacing:.5em;font-size:13px;font-weight:400;margin-bottom:12px;text-shadow:0 2px 14px rgba(0,0,0,.4)}.hero__names{font-family:var(--font-script);font-size:clamp(82px,18vw,188px);line-height:.85;margin:6px 0 14px;text-shadow:0 6px 30px rgba(0,0,0,.35)}.hero__date{font-family:var(--font-serif);font-size:clamp(18px,3vw,26px);letter-spacing:.16em;text-transform:uppercase}.hero__date,.hero__sub{text-shadow:0 2px 14px rgba(0,0,0,.45)}.hero__sub{font-size:15px;letter-spacing:.12em;margin-top:6px;opacity:.95}.hero__cta{margin-top:34px;display:flex;gap:14px;justify-content:center;flex-wrap:wrap}.hero__cta .btn{border-color:#fff}.hero__cta .btn--solid{background:#fff;color:var(--ink)}.hero__cta .btn--solid:hover{background:var(--cream)}.hero__cta .btn--ghost{background:rgba(255,255,255,.08);color:#fff}.hero__cta .btn--ghost:hover{background:rgba(255,255,255,.22)}.countdown{display:flex;gap:26px;justify-content:center;flex-wrap:wrap}.countdown__unit{min-width:92px}.countdown__num{font-family:var(--font-serif);font-size:clamp(38px,6vw,58px);line-height:1;color:var(--blue-deep)}.countdown__label{text-transform:uppercase;letter-spacing:.28em;font-size:11px;color:var(--ink-soft);margin-top:8px}.story{max-width:760px;margin:0 auto}.story p{font-size:18px}.story p:first-of-type:first-letter{font-family:var(--font-serif);font-size:4.2em;float:left;line-height:.72;padding:8px 12px 0 0;color:var(--sage-deep)}.story__timeline{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));grid-gap:18px;gap:18px;margin:44px 0}.story__milestone{background:var(--paper);border-radius:var(--radius);padding:22px;box-shadow:var(--shadow-soft);text-align:center}.story__milestone .date{font-size:12px;letter-spacing:.2em;text-transform:uppercase;color:var(--blue-deep);margin-bottom:6px}.story__milestone .what{font-family:var(--font-serif);font-size:19px}.story__photos{display:grid;grid-template-columns:1fr 1fr;grid-gap:18px;gap:18px;margin-top:40px}.story__photos img{width:100%;height:340px;object-fit:cover;border-radius:var(--radius);box-shadow:var(--shadow)}@media (max-width:620px){.story__photos{grid-template-columns:1fr}.story__photos img{height:280px}}.details__grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));grid-gap:22px;gap:22px;margin-top:36px}.detail-card{text-align:center}.detail-card .icon{width:34px;height:34px;margin:0 auto 14px;color:var(--sage-deep)}.detail-card h3{font-size:22px}.detail-card .big{font-family:var(--font-serif);font-size:26px;color:var(--blue-deep)}.schedule{max-width:560px;margin:44px auto 0}.schedule__row{display:flex;gap:22px;padding:20px 0;border-bottom:1px solid rgba(182,171,154,.4);align-items:baseline}.schedule__row:last-child{border-bottom:none}.schedule__time{color:var(--blue-deep);min-width:96px}.schedule__time,.schedule__title{font-family:var(--font-serif);font-size:20px}.schedule__detail{color:var(--ink-soft);font-size:15px}.map-embed{margin-top:36px;border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow-soft);border:1px solid rgba(182,171,154,.5)}.map-embed iframe{width:100%;height:360px;border:0;display:block}.family__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));grid-gap:14px;gap:14px;margin-top:36px}.family__grid img{width:100%;height:220px;object-fit:cover;border-radius:var(--radius);box-shadow:var(--shadow-soft);transition:transform .3s ease}.family__grid img:hover{transform:translateY(-4px) scale(1.01)}.family__names{font-family:var(--font-serif);font-size:clamp(20px,3vw,26px);color:var(--sage-deep);margin-top:22px}.banner{text-align:center;background:linear-gradient(160deg,var(--sage) 0,var(--blue) 100%)}.banner,.banner h2{color:#fff}.banner .btn{border-color:#fff;background:#fff;color:var(--ink)}.banner .btn:hover{background:var(--cream)}.footer{text-align:center;padding:56px 0;background:var(--ink);color:#cfcabf}.footer .script{color:#fff;font-size:56px}.footer a{color:#fff}.form{max-width:560px;margin:0 auto}.field{margin-bottom:22px}.field label{display:block;font-size:13px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:8px}.field input,.field select,.field textarea{width:100%;padding:14px 16px;border:1px solid var(--taupe-soft);border-radius:10px;background:var(--paper);font-family:var(--font-sans);font-size:16px;color:var(--ink)}.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--blue-deep);box-shadow:0 0 0 3px rgba(81,103,126,.12)}.field textarea{min-height:100px;resize:vertical}.radio-row{display:flex;gap:12px;flex-wrap:wrap}.radio-pill{flex:1 1;min-width:130px;position:relative}.radio-pill input{position:absolute;opacity:0}.radio-pill span{display:block;text-align:center;padding:14px;border:1px solid var(--taupe-soft);border-radius:10px;cursor:pointer;transition:all .2s ease}.radio-pill input:checked+span{background:var(--blue-deep);color:#fff;border-color:var(--blue-deep)}.form__note{font-size:14px;color:var(--ink-soft);text-align:center}.alert{padding:16px 20px;border-radius:10px;margin-bottom:22px;font-size:15px}.alert--success{background:#e8efe4;color:var(--sage-deep);border:1px solid var(--sage)}.alert--error{background:#f6e9e6;color:#9a5b4d;border:1px solid #d8a99c}.upload-zone{border:2px dashed var(--taupe-soft);border-radius:var(--radius);padding:48px 24px;text-align:center;background:var(--paper);transition:all .25s ease;cursor:pointer}.upload-zone.drag,.upload-zone:hover{border-color:var(--blue-deep);background:var(--ivory)}.upload-zone .icon{width:52px;height:52px;margin:0 auto 16px;color:var(--sage-deep)}.gallery{columns:220px 4;column-gap:14px;margin-top:36px}.gallery figure{margin:0 0 14px;page-break-inside:avoid;break-inside:avoid;position:relative;border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow-soft)}.gallery img{width:100%;height:auto;display:block}.gallery__empty{text-align:center;color:var(--ink-soft);padding:60px 20px}.gallery__delete{position:absolute;top:8px;right:8px;background:rgba(0,0,0,.55);color:#fff;border:none;border-radius:999px;width:30px;height:30px;cursor:pointer;font-size:16px;line-height:1}.uploading-bar{height:6px;background:var(--taupe-soft);border-radius:999px;overflow:hidden;margin-top:16px}.uploading-bar>div{height:100%;background:var(--blue-deep);transition:width .2s ease}.page-head{text-align:center;padding:70px 0 40px;background:var(--ivory);border-bottom:1px solid rgba(182,171,154,.4)}.page-head .script{font-size:64px;color:var(--sage-deep)}.page-head h1{font-size:clamp(30px,5vw,44px)}