:root{--paper:#f5f0e7;--ink:#403e33;--gold:#9e8553;--line:#cbbd9e}*{box-sizing:border-box}html{scroll-behavior:smooth}body{background:var(--paper);color:var(--ink);margin:0;font-family:Jost,sans-serif;font-weight:300}button,input,textarea{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer}a{color:inherit}button:focus-visible,a:focus-visible{outline:2px solid var(--gold);outline-offset:7px}h1,h2,h3,p{margin-top:0}h1,h2,h3,.signature{font-family:Cormorant Garamond,Georgia,serif;font-weight:400}h2{font-size:clamp(40px,5vw,66px);line-height:1.1}i,em{font-weight:400}.eyebrow{letter-spacing:3px;text-transform:uppercase;color:var(--gold);font-size:10px}.music-button{z-index:20;border:1px solid var(--line);color:var(--ink);background:#fcf9f0ed;border-radius:40px;align-items:center;gap:10px;padding:12px 18px;display:flex;position:fixed;bottom:25px;right:25px;box-shadow:0 3px 20px #403e3310}.music-button span{font-size:19px}.music-button small{letter-spacing:1.5px;font-size:8px}.playing span{animation:2s infinite pulse}.hero{border-bottom:1px solid var(--line);text-align:center;background:radial-gradient(at 50% 20%,#fffdf5,#efe7d8);min-height:100svh;padding:30px;position:relative;overflow:hidden}.hero:before,.hero:after{content:"";pointer-events:none;border:1px solid #b5a17b55;border-radius:50%;width:130px;position:absolute;top:80px;bottom:55px}.hero:before{left:-75px}.hero:after{right:-75px}.topline{letter-spacing:2px;text-transform:uppercase;justify-content:space-between;font-size:9px;display:flex}.topline a{text-decoration:none}.chandelier{color:#a88c51;transform-origin:50% 0;width:250px;height:235px;margin:-30px auto 0;animation:6s ease-in-out infinite swing}.chandelier svg{filter:drop-shadow(0 2px 5px #b9a56e44);width:100%;height:100%}.hero-copy{padding:25px 0 75px;animation:1.2s both arrive}.hero h1{margin:26px 0;font-size:clamp(65px,8.5vw,112px);line-height:.95}.hero h1 em{color:var(--gold);margin:9px;font-size:.48em;display:block}.wedding-label{letter-spacing:5px;margin:30px 0;font-size:9px}.fine-rule{background:var(--line);width:60px;height:1px;margin:0 auto 25px}.scroll-link{letter-spacing:3px;margin-top:35px;font-size:8px;text-decoration:none;display:inline-block}.scroll-link span{margin-top:14px;font-size:22px;animation:2s infinite bob;display:block}.hero-corner{letter-spacing:2px;font-size:8px;position:absolute;bottom:25px;left:30px}.story{text-align:center;max-width:100%}.story h2{margin:25px auto}.story p{max-width:530px;margin:25px auto;font-size:15px;line-height:2}.flower{color:var(--gold);font-size:35px}.signature{color:var(--gold);font-size:30px;font-style:italic}.countdown-section{text-align:center;background:#eae3d5;border-block:1px solid #d8ccb5}.countdown-section h2{margin:25px 0 45px;font-size:44px}.countdown{flex-wrap:wrap;justify-content:center;gap:clamp(20px,6vw,80px);display:flex}.countdown strong{font-family:Cormorant Garamond,serif;font-size:clamp(40px,6vw,72px);font-weight:400;display:block}.countdown span{text-transform:uppercase;letter-spacing:2px;font-size:9px}.celebrate{width:100%}.details{grid-template-columns:1fr 1fr;align-items:center;gap:80px;display:grid}.details h2{margin-top:25px;font-size:52px}.details p{line-height:1.9}.venue-card{text-align:center;outline:1px solid var(--line);outline-offset:10px;border:1px solid var(--line);padding:40px 25px}.small-star{color:var(--gold);font-size:38px}.venue-card .eyebrow{margin-top:15px}.venue-card h3{margin-bottom:10px;font-size:36px}.venue-card>p{font-size:13px}.venue-date{border-block:1px solid var(--line);justify-content:center;gap:20px;margin:25px 0;padding:18px 0;font-size:12px;display:flex}.dress{font-style:italic}.outline-button{letter-spacing:2px;border-bottom:1px solid var(--gold);align-items:center;gap:35px;padding:12px;font-size:9px;text-decoration:none;display:inline-flex}.gallery{text-align:center;background:#ede6da;overflow:hidden}.gallery h2{margin:20px 0 65px}.photo-stack{max-width:350px;height:440px;margin:0 auto;position:relative}.photo-stack figure{background:#fcfaf4;margin:0;padding:13px 13px 48px;transition:transform .6s,opacity .6s;position:absolute;inset:0;box-shadow:0 10px 25px #3d33252b}.photo-stack img{object-fit:cover;width:100%;height:100%}.photo-stack figcaption{color:var(--gold);margin-top:14px;font-family:Georgia,serif;font-size:12px;font-style:italic}.gallery-controls{justify-content:center;align-items:center;gap:35px;margin-top:50px;display:flex}.gallery-controls button{border:1px solid var(--line);width:40px;height:40px;color:var(--ink);background:0 0;border-radius:50%;font-size:20px}.gallery-controls span{letter-spacing:3px;font-size:10px}footer{text-align:center;padding:85px 24px 100px}footer p{margin:25px 0 10px;font-family:Cormorant Garamond,serif;font-size:52px}footer i{color:var(--gold)}footer>span:not(.eyebrow){font-size:13px}footer>a{color:var(--gold);margin-top:40px;font-size:10px;display:block}.admin{max-width:760px;margin:0 auto;padding:50px 25px 100px}.admin>a{font-size:12px}.admin>.eyebrow{margin-top:50px}.admin label{margin:22px 0;font-size:12px;display:block}.admin input,.admin textarea{border:1px solid var(--line);width:100%;color:var(--ink);background:#fffdf8;border-radius:3px;margin-top:8px;padding:13px;display:block}.admin textarea{resize:vertical;min-height:110px}.admin button{background:var(--ink);color:var(--paper);border:0;padding:13px 25px}.admin button:disabled{opacity:.5}.admin-toolbar{align-items:center;gap:30px;display:flex}.admin-toolbar p{font-size:13px;line-height:1.8}.admin [role=status]{font-size:13px;line-height:1.7}@keyframes swing{0%,to{transform:rotate(-5deg)}50%{transform:rotate(5deg)}}@keyframes bob{50%{transform:translateY(6px)}}@keyframes pulse{50%{opacity:.4}}@keyframes arrive{0%{opacity:0;transform:translateY(25px)}to{opacity:1;transform:translateY(0)}}@media (max-width:700px){.topline{letter-spacing:1px;font-size:7px}.hero{padding:24px 18px}.chandelier{width:220px;height:205px}.hero-copy{padding-top:30px}.hero-copy>.eyebrow{letter-spacing:2px;font-size:8px}.hero h1{font-size:78px}.section{padding:85px 30px}.details{grid-template-columns:1fr;gap:40px}.details h2{font-size:46px}.venue-card{margin:10px}.countdown-section h2{font-size:35px}.photo-stack{max-width:285px;height:380px}.music-button{padding:11px 14px;bottom:15px;right:15px}.music-button small{font-size:7px}.hero-corner{font-size:6px}.story p{font-size:14px}.admin h1{font-size:42px}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.01ms!important;animation:none!important}}.hero{background:radial-gradient(at 50% 10%,#fffcf5,#f3ede4);border:0}.hero:before,.hero:after{display:none}.hero h1{font-family:Great Vibes,Cormorant Garamond,cursive;font-size:clamp(66px,8vw,100px);line-height:1.2}.hero h1 em{margin:0 18px;font-family:Cormorant Garamond,serif;font-size:.65em;display:inline}.chandelier{width:280px;height:310px;margin:-30px auto 0;animation:7s ease-in-out infinite swing}.hero-copy>.eyebrow{text-transform:none;letter-spacing:0;font-family:Cormorant Garamond,serif;font-size:24px;font-style:italic}.wedding-label{text-transform:none;letter-spacing:0;color:var(--gold);font-family:Great Vibes,cursive;font-size:33px}.hero-copy{padding-top:15px}.hero-date{font-family:Cormorant Garamond,serif;font-size:23px}.music-button{border-radius:50%;justify-content:center;width:47px;height:47px;padding:0}.music-button small{display:none}.details h2 i,.gallery h2 i,.signature{font-family:Great Vibes,cursive}.outline-button{border:1px solid var(--line);border-radius:40px;padding:14px 24px}.hero-corner{display:none}@media (max-width:700px){.chandelier{width:265px;height:295px}.hero h1{font-size:53px}.hero h1 em{margin:0 8px}.hero-copy>.eyebrow{letter-spacing:0;font-size:24px}.hero-copy{padding-top:20px}.hero .topline{font-size:6px}.hero-date{font-size:21px}}.chandelier{transform-origin:50% 0;will-change:transform;width:310px;height:365px;animation:7s ease-in-out infinite swing}.chandelier img{object-fit:contain;object-position:top;filter:drop-shadow(0 7px 8px #80602518);width:100%;height:100%;display:block}.hanging-decoration{pointer-events:none;width:min(100%,1100px);margin:0 auto -20px;overflow:hidden}.hanging-decoration img{object-fit:fill;width:100%;height:auto;max-height:260px;display:block}.hero-copy{animation:none}.music-button svg{stroke:currentColor;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;width:23px;height:23px}.music-button .mute-slash{opacity:0;stroke-width:2px;transition:opacity .2s}.music-button.muted .mute-slash{opacity:1}@media (max-width:700px){.chandelier{width:285px;height:335px}.hanging-decoration{margin-bottom:-15px}.hanging-decoration img{min-height:125px;max-height:190px}.details{padding-top:65px}}@media (prefers-reduced-motion:reduce){.chandelier{will-change:auto;animation:none}}.hero-copy{max-width:900px;margin:0 auto;padding-bottom:55px}.opening-message{color:#9f8b76;margin:32px 0 25px;font-family:Great Vibes,Cormorant Garamond,cursive;font-size:clamp(25px,3.5vw,36px)}.wedding-hashtag{color:#947039;letter-spacing:2px;background:linear-gradient(90deg,#0000,#dfcc9a30,#0000);border-block:1px solid #c6a8667a;justify-content:center;align-items:center;gap:18px;padding:13px 24px;font-size:clamp(16px,2.5vw,24px);font-weight:500;display:inline-flex}.wedding-hashtag>span:first-child,.wedding-hashtag>span:last-child{color:#b79755;font-size:22px;font-weight:300}.details{max-width:760px;margin:0 auto;padding:50px 45px 100px;display:block}.details-heading{text-align:center;margin-bottom:50px}.details-heading>.eyebrow{letter-spacing:2px;margin-bottom:18px;font-size:9px}.details-heading h2{color:#8c7f72;margin:0 0 28px;font-family:Great Vibes,Cormorant Garamond,cursive;font-size:51px;line-height:1.4}.details-heading .fine-rule{background:#cbbd9e66;width:90px}.details-list{max-width:590px;margin:0 auto}.detail-row{text-align:left;border-top:1px solid #d8ccbb77;padding:29px 0}.details .detail-row .eyebrow{letter-spacing:4px;margin-bottom:13px;font-size:9px;line-height:1.5}.details .detail-value{color:#807468;margin:0;font-family:Cormorant Garamond,Georgia,serif;font-size:clamp(24px,3vw,32px);font-weight:400;line-height:1.45}.details .detail-address{color:#9a8a7b;margin:4px 0 0;font-size:12px;line-height:1.8}.time-zone{letter-spacing:1px;color:#a59580;margin-left:6px;font-family:Jost,sans-serif;font-size:10px}.location-link{color:#9a886e;letter-spacing:3px;border-color:#cabcaa;justify-content:center;gap:20px;width:fit-content;min-width:220px;margin:26px auto 0;font-size:9px;display:flex}@media (max-width:700px){.hero h1{font-size:clamp(45px,10vw,60px)}.opening-message{font-size:27px}.wedding-hashtag{letter-spacing:1.5px;gap:12px;padding:12px 15px;font-size:18px}.details{padding:45px 30px 80px}.details-heading{margin-bottom:40px}.details-heading h2{font-size:43px}.detail-row{padding:26px 0}}footer .wedding-hashtag{width:fit-content;max-width:100%;margin:32px auto 0;display:flex}.admin-fields{border:0;min-width:0;margin:0;padding:0}.admin-media{border-top:1px solid var(--line);margin:38px 0;padding-top:25px}.admin-media h2{margin-bottom:20px;font-size:30px}.upload-zone{text-align:center;border:1px dashed var(--gold);background:#fcfaf4;border-radius:8px;padding:28px 20px;transition:background .2s,border-color .2s}.upload-zone.dragging{border:2px solid var(--gold);background:#eae0ca}.upload-zone p{margin-bottom:15px;font-size:15px}.upload-zone small{color:#817361;margin-top:15px;font-size:11px;display:block}.file-picker{display:none!important}.upload-message,.upload-error,.media-help{font-size:12px;line-height:1.7}.upload-error{color:#9f3328}.media-help{color:#817361}.admin-photo-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin:20px 0;display:grid}.admin-photo-grid figure{min-width:0;margin:0}.admin-photo-grid img{object-fit:cover;border-radius:4px;width:100%;height:155px;display:block}.admin-photo-grid figcaption{justify-content:space-between;align-items:center;gap:5px;margin-top:8px;font-size:11px;display:flex}.admin-photo-grid button{padding:6px 9px;font-size:10px}.music-preview{align-items:center;gap:15px;margin:20px 0;display:flex}.music-preview audio{width:100%;min-width:0}.music-preview button{flex-shrink:0;padding:10px;font-size:11px}.admin-media details{margin-top:20px;font-size:12px}.admin-media summary{cursor:pointer;color:var(--gold)}.save-bar{border-top:1px solid var(--line);background:#f5f0e7f5;margin-top:25px;padding:18px 0 10px;position:sticky;bottom:0}.save-bar p{margin:10px 0 0;font-size:12px;line-height:1.7}@media (max-width:550px){.admin-photo-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.admin-photo-grid img{height:140px}.music-preview{flex-wrap:wrap}}.save-the-date{text-align:center;margin:35px auto 0}.save-the-date .outline-button{background:0 0}.reveal{opacity:0;transform-origin:bottom;filter:blur(5px);transition:opacity 1.6s cubic-bezier(.16,1,.3,1),transform 2.1s cubic-bezier(.16,1,.3,1),filter 1.8s cubic-bezier(.16,1,.3,1);transition-delay:var(--reveal-delay,0s);transform:perspective(1000px)translate3d(0,38px,-65px)rotateX(5deg)scale(.97)}.reveal.visible{opacity:1;filter:blur();transform:perspective(1000px)translate(0,0)rotateX(0)scale(1)}@media (prefers-reduced-motion:reduce){.reveal,.reveal.visible{opacity:1;filter:none;transition:none;transform:none}}.share-preview{border:1px solid var(--line);background:#fffcf6;border-radius:8px;max-width:520px;margin:22px 0;overflow:hidden}.share-preview>img{aspect-ratio:1200/630;object-fit:cover;width:100%;display:block}.share-preview>div{border-top:1px solid var(--line);padding:16px 20px}.share-preview strong{font-size:16px;font-weight:400}.share-preview p{color:#8d7b61;margin:8px 0 0;font-size:12px}.hero h1 .wed-word{margin:0 16px;font-size:.34em}footer .footer-wed{color:var(--gold);font-size:.5em}@media (max-width:700px){.hero h1 .wed-word{margin:3px 0;font-size:.36em;line-height:1.15;display:block}}.film-section{text-align:center;background:var(--paper)}.film-section h2{margin:20px 0 32px}.film-frame{cursor:pointer;border-radius:48% 48% 8px 8px/24% 24% 8px 8px;width:min(100%,420px,42.75svh);margin:0 auto;overflow:hidden;-webkit-mask-image:linear-gradient(#0000,#000 5% 88%,#0000);mask-image:linear-gradient(#0000,#000 5% 88%,#0000)}.film-frame:focus-visible{outline:2px solid var(--gold);outline-offset:6px}.film-frame video{aspect-ratio:9/16;object-fit:cover;width:100%;height:auto;display:block}.film-preview video{background:#211a14;width:100%;max-height:420px;margin:20px 0;display:block}html{-webkit-text-size-adjust:100%}.invitation{width:100%;overflow:clip}img,video,audio{max-width:100%}.hero{padding-inline:clamp(18px,5vw,48px)}.hero-copy{width:100%}.hero h1{overflow-wrap:anywhere;font-size:clamp(60px,7.6vw,100px)}.chandelier{width:min(310px,78vw);height:clamp(240px,37svh,365px)}.section{padding:clamp(65px,8vw,110px) max(20px,50% - 540px)}.eyebrow{overflow-wrap:anywhere;line-height:1.8}.countdown-section h2{font-size:clamp(32px,5vw,48px)}.countdown{grid-template-columns:repeat(4,minmax(0,1fr));gap:clamp(8px,3vw,50px);max-width:600px;margin-inline:auto;display:grid}.countdown strong{font-variant-numeric:tabular-nums;font-size:clamp(34px,6.5vw,72px)}.countdown span{letter-spacing:clamp(1px,.25vw,2px);font-size:clamp(8px,1.2vw,10px)}.countdown .celebrate{grid-column:1/-1}.details{padding:clamp(40px,6vw,60px) clamp(20px,5vw,45px) clamp(65px,8vw,100px)}.detail-value,.detail-address{overflow-wrap:anywhere}.wedding-hashtag{letter-spacing:clamp(.5px,.2vw,2px);gap:clamp(8px,2vw,18px);max-width:100%;padding-inline:clamp(10px,3vw,24px);font-size:clamp(15px,2.5vw,24px)}.wedding-hashtag>span:nth-child(2){overflow-wrap:anywhere;min-width:0}.photo-stack{aspect-ratio:350/440;width:min(350px,76vw);max-width:none;height:auto}.photo-stack figure{padding:clamp(9px,2vw,13px) clamp(9px,2vw,13px) 45px}.gallery-controls button{min-width:44px;min-height:44px}footer{padding:clamp(65px, 8vw, 85px) 20px calc(80px + env(safe-area-inset-bottom))}footer p{overflow-wrap:anywhere;font-size:clamp(36px,5.5vw,58px)}.outline-button{text-align:center;justify-content:center;max-width:100%;min-height:44px}.location-link{min-width:min(220px,100%)}.music-button{width:48px;height:48px;right:max(16px, env(safe-area-inset-right));bottom:max(16px, env(safe-area-inset-bottom))}.admin{width:100%;padding-inline:clamp(18px,4vw,30px)}.admin h1{font-size:clamp(38px,6vw,54px)}.admin input,.admin textarea{min-width:0;font-size:16px}.admin button{max-width:100%;min-height:44px}.admin-toolbar{flex-wrap:wrap;gap:12px}.admin-toolbar p{flex:240px;margin:0}.upload-message,.upload-error,.save-bar p{overflow-wrap:anywhere}.admin-photo-grid figcaption{flex-wrap:wrap}.save-bar{padding-bottom:max(12px, env(safe-area-inset-bottom))}@media (max-width:700px){.hero h1{font-size:clamp(52px,13vw,72px)}.hero h1 .wed-word{margin:4px 0;display:block}.hero-copy{padding-bottom:36px}.hero-date{font-size:clamp(19px,4.8vw,23px)}.opening-message{font-size:clamp(25px,6vw,32px)}.hanging-decoration img{object-fit:contain;height:auto;min-height:0}}@media (max-width:360px){.hero-copy>.eyebrow{font-size:21px}.wedding-hashtag{gap:8px;padding-inline:10px}.wedding-hashtag>span:first-child,.wedding-hashtag>span:last-child{font-size:17px}.gallery h2{margin-bottom:45px}}@media (max-height:560px) and (min-width:701px){.chandelier{width:180px;height:205px}.hero h1{font-size:clamp(52px,7vw,76px)}.hero-copy{padding-bottom:30px}}.photo-stack{cursor:pointer;touch-action:pan-y;-webkit-user-select:none;user-select:none}.photo-stack:focus-visible{outline:2px solid var(--gold);outline-offset:20px}.photo-stack img{-webkit-user-drag:none}
