:root{--cream:#efe9dd;--paper:#f6f2e9;--beige:#ddd4c2;--sage:#9ca68c;--olive:#5c6b4c;--olive-dk:#46523a;--charcoal:#2b2b27;--ink:#353530}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{color:var(--ink);background:var(--paper);font-family:EB Garamond,Georgia,serif;font-size:18px;line-height:1.7}h1,h2,h3{font-family:Cormorant Garamond,serif;font-weight:400}.script{font-family:Cormorant,serif;font-style:italic;font-weight:400}.eyebrow{letter-spacing:.42em;text-transform:uppercase;color:var(--olive);font-family:EB Garamond,serif;font-size:.72rem}a{color:inherit}nav{z-index:50;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#f6f2e9d1;border-bottom:1px solid #5c6b4c26;justify-content:center;gap:clamp(1rem,4vw,3rem);padding:1.1rem 1rem;display:flex;position:fixed;top:0;left:0;right:0}nav a{letter-spacing:.28em;text-transform:uppercase;color:var(--ink);font-size:.68rem;text-decoration:none;transition:color .25s}nav a:hover{color:var(--olive)}.hero{text-align:center;min-height:100vh;color:var(--cream);background:linear-gradient(#2b2b2757,#2b2b2780),url(/assets/hero-castle-miGliFRK.jpg) 50%/cover no-repeat;flex-direction:column;justify-content:center;align-items:center;padding:6rem 1.5rem 4rem;display:flex}.hero .eyebrow{color:var(--beige)}.hero-leaf{opacity:.9;margin-bottom:1.4rem;font-size:1.6rem}.hero h1{letter-spacing:.04em;text-transform:uppercase;font-size:clamp(3rem,11vw,7.5rem);line-height:.98}.hero .amp{color:var(--beige);margin:.3rem 0;font-size:clamp(2rem,6vw,3.5rem);display:block}.hero .meta{letter-spacing:.22em;text-transform:uppercase;margin-top:2rem;font-size:.95rem}.hero .meta span{margin:.35rem 0;display:block}.hero .venue{color:var(--beige)}.divider{opacity:.5;background:currentColor;width:60px;height:1px;margin:1.6rem auto}section{padding:clamp(4rem,9vw,7.5rem) 1.5rem}.wrap{max-width:900px;margin:0 auto}.center{text-align:center}.section-title{color:var(--charcoal);margin:.8rem 0 1.5rem;font-size:clamp(2.2rem,6vw,3.6rem)}.lede{max-width:640px;color:var(--ink);margin:0 auto;font-size:1.2rem}.story{background:var(--cream)}.story .script{color:var(--olive);margin-bottom:1.5rem;font-size:clamp(2.4rem,7vw,4rem);line-height:1.1}.story-wrap{max-width:1040px}.story-script{margin-bottom:3rem}.story-body{text-align:left;grid-template-columns:1.4fr 1fr;align-items:start;gap:clamp(2rem,5vw,4rem);display:grid}.story-text>p{color:var(--ink);margin-bottom:1.15rem;font-size:1.08rem;line-height:1.8}.story-text>p:last-child{margin-bottom:0}.story-media{flex-direction:column;gap:1rem;display:flex;position:sticky;top:6rem}.story-photo-frame{aspect-ratio:1;border:1px solid var(--beige);width:100%;box-shadow:0 16px 44px #2b2b271f}.story-photo{object-fit:cover;filter:saturate(.92);width:100%;height:100%}@media (width<=760px){.story-body{grid-template-columns:1fr;gap:2.2rem}.story-media{order:-1;max-width:420px;margin:0 auto;position:static}.story-text{text-align:left}}.program{background:var(--olive);color:var(--cream)}.program .section-title{color:var(--cream)}.program .eyebrow{color:var(--beige)}.timeline{flex-direction:column;gap:0;max-width:560px;margin:3rem auto 0;display:flex}.tl-item{border-bottom:1px solid #efe9dd2e;grid-template-columns:90px 1fr;align-items:baseline;gap:1.5rem;padding:1.4rem 0;display:grid}.tl-item:last-child{border-bottom:none}.tl-time{color:var(--beige);text-align:right;font-family:Cormorant Garamond,serif;font-size:1.5rem}.tl-event h3{font-size:1.5rem}.tl-event p{opacity:.85;letter-spacing:.04em;font-size:.95rem}.venue-sec{background:var(--paper)}.venue-grid{grid-template-columns:1fr 1fr;align-items:center;gap:3rem;margin-top:3rem;display:grid}.venue-photo-frame{width:100%;height:100%;min-height:340px}.venue-photo{object-fit:cover;filter:saturate(.9);width:100%;height:100%;min-height:340px}.venue-info{text-align:left}.venue-info h3{color:var(--charcoal);margin-bottom:.4rem;font-size:2rem}.venue-info .addr{color:var(--olive);letter-spacing:.04em;margin-bottom:1.6rem}.venue-info p{margin-bottom:1rem;font-size:1rem}.venue-info .label{letter-spacing:.26em;text-transform:uppercase;color:var(--sage);margin-bottom:.15rem;font-size:.66rem;display:block}.venue-info .map-link{border:1px solid var(--olive);color:var(--olive);letter-spacing:.26em;text-transform:uppercase;margin-top:.8rem;padding:.75rem 2rem;font-size:.68rem;text-decoration:none;transition:background .3s,color .3s;display:inline-block}.venue-info .map-link:hover{background:var(--olive);color:var(--cream)}.gallery{background:var(--cream)}.gallery-grid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:.7rem;margin-top:3rem;display:grid}.gallery-grid img{object-fit:cover;filter:saturate(.85);width:100%;height:100%;min-height:220px;transition:transform .5s,filter .5s}.gallery-grid figure{margin:0;overflow:hidden}.gallery-grid img:hover{filter:saturate();transform:scale(1.05)}.tall{grid-row:span 2}.rsvp{background:var(--charcoal);color:var(--cream);text-align:center}.rsvp .section-title{color:var(--cream)}.rsvp .eyebrow{color:var(--sage)}.rsvp p{opacity:.9;max-width:520px;margin:0 auto 2.4rem}.btn{border:1px solid var(--sage);color:var(--cream);letter-spacing:.28em;text-transform:uppercase;padding:.9rem 2.6rem;font-size:.72rem;text-decoration:none;transition:background .3s,color .3s;display:inline-block}.btn:hover{background:var(--sage);color:var(--charcoal)}.rsvp .date-line{letter-spacing:.3em;text-transform:uppercase;color:var(--sage);margin-top:2.5rem;font-size:.72rem}footer{background:var(--charcoal);color:var(--beige);text-align:center;border-top:1px solid #9ca68c33;padding:2.5rem 1.5rem}footer .script{color:var(--cream);font-size:2rem}footer .tagline{letter-spacing:.34em;text-transform:uppercase;opacity:.7;margin-top:.6rem;font-size:.62rem}@media (width<=700px){.venue-grid{grid-template-columns:1fr;gap:1.8rem}.venue-info{text-align:center}}@media (width<=600px){nav{gap:1.1rem}.tl-item{grid-template-columns:70px 1fr;gap:1rem}}.wrap.narrow{max-width:560px}.rsvp-card{background:#fffdf9;border:1px solid #ddd4c2cc;padding:clamp(2rem,6vw,3rem) clamp(1.4rem,5vw,2.6rem);box-shadow:0 14px 44px #2b2b2714}.btn-light{border-color:var(--olive);color:var(--olive)}.btn-light:hover:not(:disabled){background:var(--olive);color:var(--cream)}.rsvp-card>.btn{margin-top:2.2rem}.rsvp-page{align-items:center;min-height:100vh;padding:clamp(4rem,9vw,7.5rem) 1.5rem;display:flex}.rsvp-page .wrap{width:100%;margin:0 auto}.rsvp-back{letter-spacing:.2em;text-transform:uppercase;color:var(--olive);margin-bottom:2rem;font-size:.68rem;text-decoration:none;display:inline-block}.rsvp-back:hover{color:var(--olive-dk)}.code-form{flex-direction:column;align-items:center;gap:1.4rem;margin-top:2.5rem;display:flex}.code-form input{text-align:center;letter-spacing:.35em;border:1px solid var(--beige);background:var(--paper);width:100%;max-width:260px;color:var(--ink);padding:.6rem 1rem;font-family:Cormorant Garamond,serif;font-size:2rem}.code-form input:focus{border-color:var(--olive);outline:none}.code-label{width:100%;max-width:260px}.code-label input{max-width:none}.form-error{color:#a8433a;font-size:.9rem}.btn{cursor:pointer;background:0 0;font-family:inherit}.btn:disabled{opacity:.55;cursor:not-allowed}.guest-form{text-align:left;flex-direction:column;gap:2rem;margin-top:2.5rem;display:flex}.add-guest{letter-spacing:.18em;border-style:dashed}.guest-card{border:1px solid var(--beige);background:#fffdf9;padding:1.6rem;box-shadow:0 8px 28px #2b2b270d}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.guest-form .label,.code-form .label{letter-spacing:.26em;text-transform:uppercase;color:var(--olive);margin-bottom:.35rem;font-size:.66rem;display:block}fieldset.guest-card{min-width:0;margin:0}.guest-card legend{float:left;width:100%;margin-bottom:.9rem;padding:0}.guest-card legend+*{clear:both}.guest-name-fields{gap:.8rem;margin-bottom:.8rem;display:flex}.text-field{flex:1;display:block}.guest-name-fields input,.guest-card select,.guest-card textarea,.message-field textarea{border:1px solid var(--beige);background:var(--paper);width:100%;min-height:44px;color:var(--ink);padding:.6rem .8rem;font-family:EB Garamond,serif;font-size:1rem}.guest-name-fields input:focus-visible,.guest-card select:focus-visible,.guest-card textarea:focus-visible,.message-field textarea:focus-visible,.code-form input:focus-visible{outline:2px solid var(--olive);outline-offset:1px;border-color:var(--olive)}.guest-name-fields input[aria-invalid=true],.guest-card select[aria-invalid=true]{border-color:#a8433a}.guest-name-fields input:disabled,.guest-card select:disabled,.guest-card textarea:disabled,.message-field textarea:disabled,.code-form input:disabled{opacity:.6;cursor:not-allowed}.field-block{margin-top:1rem;display:block}.segmented{border:1px solid var(--beige);display:flex}.segmented label{cursor:pointer;flex:1;display:block;position:relative}.segmented label+label{border-left:1px solid var(--beige)}.segmented span{letter-spacing:.18em;text-transform:uppercase;min-height:44px;color:var(--ink);justify-content:center;align-items:center;padding:0 .5rem;font-family:EB Garamond,serif;font-size:.7rem;transition:background .25s,color .25s;display:flex}.segmented input:checked+span{background:var(--olive);color:var(--cream)}.segmented input:focus-visible+span{box-shadow:inset 0 0 0 2px var(--charcoal)}.segmented input:disabled+span{cursor:not-allowed;opacity:.7}.age-picker{gap:.6rem;display:flex}.age-option{cursor:pointer;flex:1;display:flex;position:relative}.age-option-inner{border:1px solid var(--beige);color:var(--olive);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:.25rem;padding:.7rem .4rem .55rem;transition:border-color .25s,color .25s,background .25s;display:flex}.age-option-inner>span{letter-spacing:.2em;text-transform:uppercase;font-family:EB Garamond,serif;font-size:.62rem}.age-option-inner .age-hint{letter-spacing:.08em;text-transform:none;color:var(--sage);text-align:center;margin-top:.15rem;font-size:.56rem}.age-option input:checked+.age-option-inner{border-color:var(--olive);color:var(--olive-dk);background:#5c6b4c17}.age-option input:focus-visible+.age-option-inner{box-shadow:0 0 0 2px var(--paper), 0 0 0 4px var(--olive)}.age-option input:disabled+.age-option-inner{cursor:not-allowed;opacity:.7}.char-count{text-align:right;color:var(--olive);margin-top:.2rem;font-size:.7rem;display:block}.message-field{flex-direction:column;gap:.4rem;margin-top:1rem;display:flex}.message-field textarea{resize:vertical;min-height:100px}.btn:focus-visible,.rsvp-back:focus-visible,nav a:focus-visible{outline-offset:3px;outline:2px solid}@media (width<=500px){.guest-name-fields{flex-direction:column}}.skeleton{vertical-align:middle;background:linear-gradient(90deg,#5c6b4c1a 25%,#5c6b4c33 50%,#5c6b4c1a 75%) 0 0/200% 100%;border-radius:2px;max-width:100%;height:1em;animation:1.4s ease-in-out infinite shimmer;display:inline-block}.skeleton-dark{background:linear-gradient(90deg,#efe9dd1a 25%,#efe9dd38 50%,#efe9dd1a 75%) 0 0/200% 100%}.skeleton-text{flex-direction:column;align-items:center;gap:.55em;display:flex}.venue-info .skeleton-text{align-items:flex-start}.img-frame{position:relative;overflow:hidden}.img-frame img{opacity:0;transition:opacity .5s;display:block}.img-frame img.is-loaded{opacity:1}.skeleton-fill{border-radius:0;width:100%;height:100%;position:absolute;inset:0}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.splash{z-index:100;background:var(--paper);opacity:1;justify-content:center;align-items:center;transition:opacity .6s;display:flex;position:fixed;inset:0}.splash-out{opacity:0;pointer-events:none}.splash-inner{text-align:center;color:var(--olive)}.splash-leaf{opacity:.85;margin-bottom:1.2rem;font-size:1.6rem}.splash-monogram{color:var(--olive-dk);letter-spacing:.06em;font-size:clamp(2.6rem,8vw,4rem)}.splash-bar{background:#5c6b4c2e;width:120px;height:1px;margin:1.6rem auto 0;overflow:hidden}.splash-bar span{background:var(--olive);width:40%;height:100%;animation:1.2s ease-in-out infinite splash-sweep;display:block}@keyframes splash-sweep{0%{transform:translate(-100%)}to{transform:translate(350%)}}@media (prefers-reduced-motion:reduce){.skeleton,.splash-bar span{animation:none}.splash{transition:none}}
