.toolbar{justify-content:flex-end}.opening-art{clip-path:none;mask-image:linear-gradient(transparent 18%,#000 48%,#000 83%,transparent);object-fit:cover}.date-section::before{clip-path:none;mask-image:linear-gradient(transparent,#000 9%,#000 90%,transparent)}.date-section::after{display:none}.date-section{filter:none;padding-top:55px;padding-bottom:60px}
.calendar-animate .month-day.chosen{animation:date-celebrate 2.8s ease-in-out infinite!important;background:linear-gradient(130deg,#ae8a4d,#d6b874,#9b7138);color:#fffaf0}.month-day.chosen::after{animation:date-ring 2.8s ease-out infinite;border-color:#bd995d}
@keyframes date-celebrate{0%,100%{transform:scale(1);box-shadow:0 0 0 3px #c7a76b20}50%{transform:scale(1.13);box-shadow:0 0 18px #c7a76b70}}
@keyframes date-ring{0%{transform:scale(.95);opacity:.7}100%{transform:scale(1.55);opacity:0}}
.scratch-card{border-radius:22px;outline:none;border:1px solid #bba17b88;overflow:hidden;box-shadow:0 12px 28px #795c3412,inset 0 0 0 7px #fff8ee;height:300px}.scratch-card #scratch-canvas{border-radius:21px}.scratch-cover-label{position:absolute;inset:0;z-index:3;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:16px;pointer-events:none;transition:opacity .5s;color:#65503d}.scratch-cover-label>span{font-size:38px;color:#a08050}.scratch-cover-label em{font:32px 'Great Vibes',cursive}.scratch-cover-label small{font:9px Manrope;letter-spacing:.14em;text-transform:uppercase}.scratch-card.scratching .scratch-cover-label,.scratch-card.revealed .scratch-cover-label{opacity:0}.scratch-date{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;gap:8px;padding:22px}.scratch-date strong{font-size:85px;line-height:1}.scratch-date small{font:10px Manrope;margin-top:10px}
.faith,.couple h2,.closing-tag{--shine-ink:#8d6935;background:linear-gradient(110deg,var(--shine-ink) 25%,#e4c588 43%,#fff7d9 49%,var(--shine-ink) 62%);background-size:250% 100%;background-clip:text;-webkit-background-clip:text;color:transparent;animation:silk-shimmer 7s linear infinite}.couple.rose h2{--shine-ink:#a35469}.couple.blue h2{--shine-ink:#365f79}.couple h2 > span:not(.glow-word){color:var(--shine-ink)}
@keyframes silk-shimmer{0%,20%{background-position:130% 0}80%,100%{background-position:-120% 0}}
.glow-word{white-space:nowrap;display:inline-block}.glow-letter{display:inline-block}.text-arrived .glow-letter{animation:letter-arrive 1s cubic-bezier(.16,1,.3,1) both;animation-delay:var(--char-delay)}
@keyframes letter-arrive{0%{opacity:0;filter:blur(7px);transform:translateY(7px) scale(.8)}55%{opacity:1;text-shadow:0 0 9px #d3ac64aa,0 0 18px #f3d59699}100%{opacity:1;filter:none;transform:none;text-shadow:none}}
.focus-arrived{animation:focus-arrival 1.5s cubic-bezier(.16,1,.3,1) both}@keyframes focus-arrival{from{opacity:0;filter:blur(10px);transform:scale(.94) translateY(10px)}to{opacity:1;filter:none;transform:none}}
.particle-title{position:relative;height:180px;width:120%;margin:0 -10%;isolation:isolate}.particle-title canvas{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.closing .closing-tag{position:absolute;inset:0;display:grid;place-items:center;margin:0;font:500 clamp(32px,7vw,47px) 'Cormorant Garamond';letter-spacing:.025em;transition:opacity .3s}.particle-title.particles-active .closing-tag{opacity:0}.site-credit{position:relative;z-index:4;text-align:center;font:9px Manrope;letter-spacing:.035em;color:#947c61;padding:20px 12px 28px;margin:0}.site-credit a{color:inherit;text-decoration:none}
#music-toggle{position:fixed;left:max(15px,calc((100vw - 660px)/2 + 15px));bottom:16px;z-index:45;border:1px solid #c8b89b88;border-radius:30px;background:#faf4e8ec;color:#65503d;padding:12px;font:10px Manrope}#music-panel{position:fixed;bottom:64px;left:max(15px,calc((100vw - 660px)/2 + 15px));width:220px;background:#f7f0e5;z-index:46;box-shadow:0 5px 22px #54381922;border-radius:8px;overflow:hidden}#music-player{width:220px;height:200px}#music-status{font:10px/1.5 Manrope;padding:0 12px}#music-status:empty{display:none}
@media(prefers-reduced-motion:reduce){.faith,.couple h2,.closing-tag,.calendar-animate .month-day.chosen,.month-day.chosen::after,.text-arrived .glow-letter,.focus-arrived{animation:none!important}.glow-letter{opacity:1}.particle-title canvas{display:none}}
.couple h2 .glow-letter{background:inherit;color:inherit}.couple h2 .glow-word{font:inherit;letter-spacing:inherit;margin:0}.couple h2{color:var(--shine-ink)}.couple h2 .glow-letter{background:linear-gradient(110deg,var(--shine-ink) 25%,#fff1c5 49%,var(--shine-ink) 65%);background-size:250% 100%;background-clip:text;-webkit-background-clip:text;color:transparent}.couple h2.text-arrived .glow-letter{animation:letter-arrive 1s cubic-bezier(.16,1,.3,1) both,silk-shimmer 7s linear infinite;animation-delay:var(--char-delay),2s}
.opening{aspect-ratio:1/1.9}.opening-copy{top:10%}.opening-art{height:auto;top:auto;bottom:0;object-fit:contain;mask-image:linear-gradient(transparent 15%,#000 42%,#000 83%,transparent)}
#music-panel{position:relative;inset:auto;margin:0 auto 24px;box-shadow:none;background:#f7f0e5}#music-toggle{opacity:.9}
.couple h2{background:none;animation:none;color:var(--shine-ink)}.couple h2 .glow-letter{background-image:linear-gradient(110deg,var(--shine-ink) 42%,#b79759 48%,var(--shine-ink) 54%)}
/* v7: credit remains on the embroidered artwork; title settles once. */
.woven-infinity{position:relative}.woven-infinity .site-credit{position:absolute;bottom:22px;left:16%;width:68%;padding:8px 0;transform:scaleX(-1);font-size:9px;background:none;color:#866e58}
.closing .closing-tag{background:linear-gradient(90deg,#668ea7 0%,#668ea7 48%,#b77388 52%,#b77388 100%);background-clip:text;-webkit-background-clip:text;color:transparent;animation:none!important;letter-spacing:0}.particle-title.particles-settled canvas{opacity:0}
.family .host-name{--name-ink:#69431f}.couple.rose h2{--name-ink:#a35469}.couple.blue h2{--name-ink:#365f79}
.family .host-name .glow-letter,.couple h2 .glow-letter{background:linear-gradient(110deg,var(--name-ink) 30%,var(--name-ink) 42%,#dfc7a4 49%,var(--name-ink) 56%,var(--name-ink) 70%);background-size:280% 100%;background-clip:text;-webkit-background-clip:text;color:transparent}
.family .host-name.text-arrived .glow-letter,.couple h2.text-arrived .glow-letter{animation:letter-arrive 1s cubic-bezier(.16,1,.3,1) both,name-shimmer 5.5s ease-in-out infinite;animation-delay:var(--char-delay),calc(1.4s + var(--char-delay))}
@keyframes name-shimmer{0%,12%{background-position:130% 0}65%,100%{background-position:-120% 0}}
@media(prefers-reduced-motion:reduce){.family .host-name.text-arrived .glow-letter,.couple h2.text-arrived .glow-letter{animation:none!important}}
