:root{--font-sans:"Noto Sans SC","Microsoft YaHei","PingFang SC",system-ui,sans-serif;--font-display:"Noto Serif SC","Songti SC","STSong",Georgia,"Times New Roman",serif;--radius-soft:10px}
html{scroll-behavior:smooth;scroll-snap-type:y proximity}
body{font-family:var(--font-sans);line-height:1.65;letter-spacing:0}
button,input,textarea,select{font-family:var(--font-sans);letter-spacing:0}
h1,h2,h3{font-family:var(--font-display);letter-spacing:0;line-height:1.12;text-wrap:balance}
h1,h2{font-weight:400;text-shadow:0 1px 18px rgba(15,16,14,.08)}
p{line-height:1.8;letter-spacing:0}
.eyebrow,.hero__date,.hero__names,.photo-break__copy p,.venue span,.rsvp-card span,.gallery-card figcaption,.hero__hint,.loading-screen span{letter-spacing:0}
section[data-section]{scroll-snap-align:start;opacity:.72;filter:saturate(.94);transition:opacity .85s ease,filter .85s ease}
section[data-section].is-section-active{opacity:1;filter:none}
.reveal{filter:blur(5px);transition:opacity .8s ease,transform .8s cubic-bezier(.2,.7,.2,1),filter .8s ease}
.reveal.is-visible{filter:none}
.sound-toggle{width:76px;height:48px;right:22px;top:20px;border:1px solid rgba(255,255,255,.9);border-radius:999px;background:rgba(31,33,30,.8);color:#fff;display:flex;align-items:center;justify-content:center;gap:7px;padding:0 12px;box-shadow:0 8px 24px rgba(0,0,0,.18);backdrop-filter:blur(8px);transition:transform .25s ease,background .25s ease,box-shadow .25s ease}
.sound-toggle:hover,.sound-toggle:focus-visible{background:rgba(31,33,30,.96);transform:translateY(-2px);box-shadow:0 12px 28px rgba(0,0,0,.25)}
.sound-toggle span,.sound-toggle span:before,.sound-toggle span:after{width:auto;height:auto;background:none;content:none;transform:none;animation:none!important}
.sound-toggle__icon{display:block!important;color:#f2d0a6;font:26px/1 var(--font-display);content:""!important}
.sound-toggle__label{display:block!important;color:#fff;font-size:11px;line-height:1}
.sound-toggle[aria-pressed=true] .sound-toggle__icon{animation:musicNotePulse 1s ease-in-out infinite alternate!important}
@keyframes musicNotePulse{to{transform:translateY(-2px) rotate(-7deg);color:#fff}}
.cta,.text-button{border-radius:999px;min-height:50px;display:inline-flex;align-items:center;justify-content:center;white-space:nowrap;transition:background .25s ease,color .25s ease,border-color .25s ease,transform .25s ease,box-shadow .25s ease}
.cta:hover,.text-button:hover{transform:translateY(-2px);box-shadow:0 8px 18px rgba(31,33,30,.12)}
.text-button{border:1px solid var(--ink);padding:0 18px;text-decoration:none}
.rsvp-actions,.blessing-actions{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);align-items:stretch;gap:12px}
.rsvp-actions>* ,.blessing-actions>*{width:100%;margin:0}
.rsvp-actions .cta,.blessing-actions .cta{min-width:0}
.venue-actions{gap:12px}
.venue-actions .cta,.venue-actions .text-button{border-radius:999px}
.rsvp-card{border-radius:var(--radius-soft);padding:22px 20px;background:rgba(255,255,255,.18)}
.map-dialog,.blessing-dialog{border-radius:16px}
.map-option{border-radius:var(--radius-soft)}
.blessing-form input,.blessing-form textarea{border-radius:var(--radius-soft)}
.map-dialog__close,.lightbox__close{border-radius:50%}
button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:2px solid var(--red);outline-offset:3px}
@media(max-width:560px){.sound-toggle{width:70px;height:44px;right:14px;top:14px}.sound-toggle__icon{font-size:24px}.sound-toggle__label{font-size:10px}.rsvp-actions,.blessing-actions{grid-template-columns:1fr;gap:10px}.rsvp-actions>* ,.blessing-actions>*{min-height:48px}.rsvp-card{padding:18px 16px}}
@media(prefers-reduced-motion:reduce){html{scroll-snap-type:none}section[data-section],.reveal,.sound-toggle,.cta,.text-button{transition:none!important}.sound-toggle[aria-pressed=true] .sound-toggle__icon{animation:none!important}}
