@font-face{font-family:BeauRivage;src:url('/weddingcrimsonchateausites/resources/fonts/beau-rivage.woff') format('woff');font-display:swap}
@font-face{font-family:Rufina;src:url('/weddingcrimsonchateausites/resources/fonts/rufina.woff') format('woff');font-display:swap}
@font-face{font-family:GreatVibes;src:url('/weddingcrimsonchateausites/resources/fonts/great-vibes.woff') format('woff');font-display:swap}
@font-face{font-family:ImperialScript;src:url('/weddingcrimsonchateausites/resources/fonts/imperial-script.woff') format('woff');font-display:swap}
@font-face{font-family:Canela;src:url('/weddingcrimsonchateausites/resources/fonts/canela.woff') format('woff');font-display:swap}
@font-face{font-family:CanelaItalic;src:url('/weddingcrimsonchateausites/resources/fonts/canela-italic.woff') format('woff');font-display:swap}
:root{--crimson:#66021f;--crimson-deep:#570119;--paper:#fbf7f2;--ink:#2d2927;--rose:#7d0b2b;--gold:#bf9d65;--shell:720px}
*{box-sizing:border-box}
html{background:#fff;scroll-behavior:smooth}
body{margin:0;background:#fff;color:var(--paper);font-family:Rufina,Georgia,serif;overflow-x:hidden}
button,input,textarea{font:inherit}
button{touch-action:manipulation}
.site-shell{position:relative;width:min(100%,var(--shell));min-height:100vh;background:var(--crimson);overflow:hidden}
.section-burgundy{position:relative;background:var(--crimson);background-image:linear-gradient(rgba(102,2,31,.96),rgba(102,2,31,.96)),url('/weddingcrimsonchateausites/resources/crimson-texture.webp');background-size:cover}
.intro{position:fixed;inset:0 auto 0 0;width:min(100vw,var(--shell));height:100dvh;min-height:640px;z-index:200;background:#f7f5f1;overflow:hidden;transition:opacity .9s ease,visibility .9s ease}
.intro.is-open{opacity:0;visibility:hidden;pointer-events:none}
.intro-video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;background:#f7f5f1;opacity:0;transition:opacity .18s ease}
.intro.is-opening .intro-video{opacity:1}
.envelope-art{position:absolute;inset:0;background:#faf9f7;overflow:hidden}
.envelope-piece{position:absolute;display:block;opacity:.2;filter:grayscale(1);transition:opacity .18s ease}
.envelope-top{left:50%;top:19%;width:142%;transform:translateX(-50%) rotate(180deg)}
.envelope-left{left:-8%;top:17%;width:68%;height:66%;object-fit:fill}
.envelope-right{right:-8%;top:17%;width:68%;height:66%;object-fit:fill}
.envelope-bottom{left:50%;bottom:-2%;width:142%;transform:translateX(-50%)}
.intro.is-opening .envelope-art,.intro.is-opening .open-invitation{opacity:0;pointer-events:none}
.open-invitation{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:25px;border:0;background:transparent;color:var(--rose);cursor:pointer;font-family:Canela,Georgia,serif;font-size:clamp(20px,5.4vw,40px);letter-spacing:-.02em;transition:opacity .18s ease}
.open-invitation::before{content:"";position:absolute;inset:0;background:linear-gradient(to bottom,rgba(255,255,255,.05),rgba(255,255,255,.02));pointer-events:none}
.seal{position:relative;width:clamp(170px,44vw,310px);height:auto;filter:drop-shadow(0 14px 15px rgba(72,49,24,.28));transition:transform .45s ease}
.open-invitation:hover .seal,.open-invitation:focus-visible .seal{transform:scale(1.05)}
.open-invitation:focus-visible{outline:3px solid var(--rose);outline-offset:-8px}
.hero{min-height:763px}
.hero-media{position:relative;width:min(100%,450px);height:763px;overflow:hidden;background:var(--crimson)}
.hero-video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;background:#27415d}
.hero-copy{position:absolute;inset:0;text-align:center;text-shadow:0 2px 16px rgba(29,22,24,.35)}
.script-line{margin:91px 0 0;font-family:BeauRivage,GreatVibes,cursive;font-size:38px;line-height:1}
.hero-date{margin:15px 0 0;font:24px/1 Canela,Georgia,serif;letter-spacing:.02em}
.couple-names{margin:95px auto 0;width:90%;display:flex;flex-direction:column;align-items:center;font:400 clamp(57px,17vw,83px)/.76 BeauRivage,GreatVibes,cursive}
.couple-names #connector{font-size:.7em;line-height:.7}
.letter{min-height:323px;padding:40px 48px 42px;text-align:center;border-top:1px solid rgba(255,255,255,.24)}
.script-heading{margin:0 0 28px;font:400 clamp(34px,8vw,46px)/1 BeauRivage,GreatVibes,cursive;color:#fff}
.script-heading.dark{color:var(--ink)}
.letter p{max-width:335px;margin:0 auto 18px;font:16px/1.45 Canela,Georgia,serif}
.paper-section{position:relative;background:var(--paper);color:var(--ink);text-align:center}
.torn{position:absolute;left:50%;z-index:2;width:calc(100% + 4px);height:72px;object-fit:cover;object-position:center;transform:translateX(-50%);pointer-events:none}
.torn-top{top:-44px;filter:brightness(0) invert(97%) sepia(6%) saturate(109%) hue-rotate(336deg) brightness(104%)}
.torn-bottom{bottom:-44px;transform:translateX(-50%) rotate(180deg);filter:brightness(0) invert(97%) sepia(6%) saturate(109%) hue-rotate(336deg) brightness(104%)}
.countdown-section{min-height:358px;padding:86px 34px 78px;display:flex;flex-direction:column;justify-content:center}
.countdown{display:flex;justify-content:center;align-items:flex-start;gap:11px}
.countdown-unit{min-width:52px}
.countdown-value{display:block;font:30px/1 Canela,Georgia,serif}
.countdown-label{display:block;margin-top:8px;font:11px/1 Rufina,Georgia,serif}
.countdown-separator{font:30px/1 Canela,Georgia,serif}
.schedule{min-height:398px;padding:68px 35px 60px;text-align:center}
.timeline{position:relative;width:310px;max-width:90%;margin:0 auto;text-align:left}
.timeline::before{content:"";position:absolute;left:51%;top:5px;bottom:5px;width:1px;background:rgba(255,255,255,.68)}
.timeline-item{position:relative;display:grid;grid-template-columns:1fr 36px 1.25fr;align-items:center;min-height:65px;opacity:0;transform:translateY(16px);transition:.75s ease}
.timeline-item.is-visible{opacity:1;transform:none}
.timeline-time{text-align:right;padding-right:18px;font:18px/1 Canela,Georgia,serif}
.timeline-dot{position:relative;z-index:1;width:8px;height:8px;margin:auto;background:#fff;transform:rotate(45deg)}
.timeline-item:first-child .timeline-dot{width:31px;height:31px;background:transparent;transform:none}
.timeline-item:first-child .timeline-dot img{width:100%;height:100%;object-fit:contain}
.timeline-name{padding-left:17px;font:14px/1.15 Canela,Georgia,serif}
.location{min-height:512px;padding:74px 24px 50px}
.location h3{margin:6px 0 12px;font:22px/1.2 Canela,Georgia,serif}
.location p{white-space:pre-line;margin:0 auto 28px;max-width:340px;font:14px/1.5 Rufina,Georgia,serif}
.venue-image{display:block;width:min(450px,calc(100% + 48px));max-height:245px;margin:0 -24px;object-fit:cover}
.dress-code{min-height:738px;padding:75px 36px 54px;text-align:center}
.dress-intro{max-width:390px;margin:0 auto 40px;font:15px/1.55 Canela,Georgia,serif}
.dress-copy{display:flex;flex-direction:column;max-width:180px;font:15px/1.45 Canela,Georgia,serif}
.dress-copy strong{font-weight:400;margin-bottom:6px}
.dress-copy-one{margin-left:auto;text-align:left}
.dress-copy-two{margin-top:12px;text-align:right}
.frames{position:relative;height:295px;margin-top:10px}
.frame{position:absolute;width:48%;height:auto;filter:drop-shadow(0 14px 18px rgba(0,0,0,.3));transition:transform 1.1s cubic-bezier(.2,.7,.2,1)}
.frame-one{left:-4%;top:25px;transform:translateX(-30px) rotate(-8deg)}
.frame-two{right:-2%;top:95px;transform:translateX(30px) rotate(7deg)}
.reveal.is-visible .frame-one{transform:translateX(0) rotate(-8deg)}
.reveal.is-visible .frame-two{transform:translateX(0) rotate(7deg)}
.details{min-height:638px;padding:80px 30px 76px;display:flex;flex-direction:column;justify-content:center}
.details p{max-width:430px;margin:14px auto;font:18px/1.45 Canela,Georgia,serif}
.organizer{display:flex;flex-direction:column;gap:6px}
.organizer a{color:inherit;text-decoration:none;font-size:23px}
.rsvp-section{min-height:600px;padding:90px 34px 0;text-align:center}
.rsvp-section>p:first-child{max-width:390px;margin:0 auto 22px;font:18px/1.45 Canela,Georgia,serif}
.rsvp-button,.submit-button{min-width:130px;min-height:43px;border:0;border-radius:999px;background:var(--paper);color:var(--crimson);padding:10px 26px;cursor:pointer;box-shadow:0 10px 24px rgba(0,0,0,.15);transition:transform .25s ease,box-shadow .25s ease}
.rsvp-button:hover,.rsvp-button:focus-visible,.submit-button:hover,.submit-button:focus-visible{transform:translateY(-2px);box-shadow:0 15px 28px rgba(0,0,0,.22);outline:2px solid #fff;outline-offset:3px}
.signoff{margin:54px 0 10px}
.closing-names{margin:0 0 28px;font:19px/1 Canela,Georgia,serif}
.footer-photo{display:block;width:min(450px,calc(100% + 68px));height:auto;min-height:330px;margin:0 auto;object-fit:cover}
.site-footer{display:flex;justify-content:center;align-items:center;gap:6px;min-height:72px;padding:18px;background:#fff;color:#382c2f;font:14px/1.4 Rufina,Georgia,serif}
.site-footer a{color:var(--crimson);font-weight:700}
.footer-logo{width:34px;height:34px;object-fit:contain}
.music-toggle{position:fixed;right:max(20px,calc(100vw - min(100vw,var(--shell)) + 20px));bottom:22px;z-index:120;width:60px;height:60px;border:0;border-radius:50%;background:var(--rose);color:#fff;box-shadow:0 8px 25px rgba(39,0,12,.3);font:bold 24px/1 system-ui;cursor:pointer}
.music-toggle:focus-visible{outline:3px solid #fff;outline-offset:3px}
.modal{position:fixed;inset:0;z-index:300;display:grid;place-items:center;background:rgba(0,0,0,.72);padding:18px}
.modal[hidden]{display:none}
.modal-card{position:relative;width:min(100%,500px);max-height:calc(100dvh - 36px);overflow:auto;background:var(--paper);color:var(--ink);padding:38px 28px 30px;border-radius:2px;box-shadow:0 24px 80px rgba(0,0,0,.45)}
.modal-card h2{margin:0 42px 10px 0;font:34px/1.1 Canela,Georgia,serif;color:var(--crimson)}
.modal-card p{line-height:1.5}
.modal-close{position:absolute;right:15px;top:12px;width:42px;height:42px;border:0;background:transparent;color:var(--ink);font-size:31px;cursor:pointer}
.field{display:block;margin:18px 0 0}
.field span{display:block;margin-bottom:8px;font:16px/1.3 Canela,Georgia,serif}
.field input,.field textarea{display:block;width:100%;min-height:49px;border:1px solid #cfc6c2;border-radius:6px;background:#fff;padding:12px 13px;color:var(--ink);font-size:16px}
.field textarea{min-height:100px;resize:vertical}
.submit-button{width:100%;margin-top:24px;background:linear-gradient(110deg,var(--crimson) 0 78%,#96364f 79% 88%,var(--crimson) 89%);color:#fff}
.form-error{color:#9f173c;min-height:24px;margin:12px 0 0}
.success-view{text-align:center;padding:40px 10px}
.inactive-view{position:fixed;inset:0;z-index:500;display:grid;place-items:center;padding:30px;background:var(--paper);color:var(--crimson);text-align:center;font:28px/1.4 Canela,Georgia,serif}
.inactive-view[hidden]{display:none}
.reveal{opacity:0;transform:translateY(22px);transition:opacity .9s ease,transform .9s ease}
.reveal.is-visible{opacity:1;transform:none}
.petal{position:fixed;top:-60px;z-index:90;width:18px;height:18px;object-fit:contain;pointer-events:none;animation:petal-fall var(--fall,9s) linear forwards}
@keyframes petal-fall{0%{transform:translate3d(0,-40px,0) rotate(0);opacity:0}12%{opacity:.8}100%{transform:translate3d(var(--drift,60px),110vh,0) rotate(520deg);opacity:0}}
@media(min-width:721px){.hero-media{width:450px}.intro{width:720px}.music-toggle{right:calc(100vw - 690px)}.site-shell{box-shadow:22px 0 70px rgba(42,0,12,.12)}}
@media(max-width:520px){.letter{padding-inline:30px}.script-line{font-size:33px}.hero-date{font-size:22px}.dress-code{padding-inline:24px}.details{padding-inline:24px}.modal-card{padding-inline:20px}.music-toggle{right:20px;width:58px;height:58px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.reveal,.timeline-item,.frame,.intro,.seal{transition:none!important}.reveal,.timeline-item{opacity:1!important;transform:none!important}.petal{display:none!important}}
