:root{--forest:#163e2e;--deep:#0e291f;--green:#315c3e;--gold:#c5a264;--cream:#faf7ef;--ink:#284633;--line:#c5a26470}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:65px}body{margin:0;background:var(--cream);color:var(--ink);font-family:Georgia,'Times New Roman',serif;text-align:center}body.locked{overflow:hidden}a,button{-webkit-tap-highlight-color:transparent}a{color:inherit}button,input,select,textarea{font:inherit}button,a.button{cursor:pointer}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid var(--gold);outline-offset:4px}[hidden]{display:none!important}.svg-defs{position:absolute;width:0;height:0}.eyebrow{font:10px/1.8 Arial,sans-serif;text-transform:uppercase;letter-spacing:3.5px;color:#e1c891}.green{color:var(--green)}.button{display:inline-flex;gap:24px;align-items:center;justify-content:center;border:1px solid var(--gold);padding:16px 26px;background:var(--gold);color:var(--deep);text-decoration:none;font:11px Arial,sans-serif;letter-spacing:1.3px;border-radius:2px;transition:background .2s,transform .2s}.button:hover{background:#dec48e;transform:translateY(-2px)}.button.outline{background:transparent;color:var(--green)}.button.outline:hover{background:#ebe7d9}.cover{position:fixed;inset:0;z-index:40;background:linear-gradient(#0e291f58,#0e291f90),url('assets/forest.webp') center 48%/cover;color:var(--cream);display:grid;place-items:center;padding:25px;transition:opacity 1s,visibility 1s}.cover:after{content:'';position:absolute;inset:18px;border:1px solid #c5a26480;pointer-events:none}.cover-frame{position:relative;z-index:2;width:min(100%,650px);padding:30px 15px}.cover h1{font-weight:normal;font-style:italic;font-size:clamp(72px,11vw,116px);line-height:1;margin:22px 0 14px;text-shadow:0 2px 30px #092016}.surname{font:12px Arial,sans-serif;letter-spacing:5px;text-transform:uppercase;margin:0}.ornament{font-size:24px;color:var(--gold);margin:28px auto}.cover-age{display:flex;align-items:center;gap:20px;justify-content:center;margin:32px 0}.cover-age span{width:65px;height:1px;background:var(--line)}.cover-age i{font-size:39px}.cover .button{margin-top:20px}.cover-foot{font-size:13px;font-style:italic;letter-spacing:.5px;margin-top:25px;color:#e4e3d5}.cover.open{opacity:0;visibility:hidden;pointer-events:none}.hero{position:relative;min-height:100svh;padding:110px 20px 40px;display:grid;place-items:center;background:linear-gradient(#0e291f25,#0e291f55 65%,#0e291fd9),url('assets/forest.webp') center 50%/cover;color:var(--cream);overflow:hidden}.hero:after{content:'';position:absolute;inset:22px;border:1px solid var(--line);pointer-events:none}.hero-content{z-index:2;position:relative;max-width:800px;width:100%}.hero h1{font-size:clamp(86px,14vw,156px);font-weight:normal;font-style:italic;margin:0 0 15px;line-height:1.1;text-shadow:0 3px 30px #0e291f80}.hero-age{font-size:26px;font-style:italic;margin:14px 0}.tiny-crown{font-size:40px;color:var(--gold);margin:30px 0 15px}.hero-quote{font-size:21px;font-style:italic;line-height:1.7}.date-line{font:11px Arial,sans-serif;letter-spacing:2px;margin-top:38px;line-height:1.8}.date-line span{padding:0 10px;color:var(--gold)}.scroll{display:flex;flex-direction:column;gap:12px;text-decoration:none;font:10px Arial,sans-serif;text-transform:uppercase;letter-spacing:2px;margin-top:50px;color:#e8ddbf}.scroll span{font-size:25px}.fireflies{position:absolute;inset:0;pointer-events:none;overflow:hidden}.spark{position:absolute;width:3px;height:3px;border-radius:50%;background:#f3d896;box-shadow:0 0 12px 4px #d0b77f70;animation:float var(--duration) ease-in-out infinite alternate;opacity:.8}@keyframes float{0%{transform:translate(0,0);opacity:.15}50%{opacity:.85}100%{transform:translate(20px,-60px);opacity:.3}}.nav{display:flex;align-items:center;justify-content:center;gap:35px;padding:22px 15px;background:var(--deep);color:#ede6d4;font:10px Arial;letter-spacing:2px;text-transform:uppercase}.nav a{text-decoration:none}.nav span{color:var(--gold)}section{padding:95px 25px;position:relative;overflow:hidden}section .narrow{max-width:630px;margin:auto;position:relative;z-index:1}.wide{max-width:1050px;margin:auto}h2{font-size:clamp(32px,5vw,46px);font-weight:normal;line-height:1.25;margin:18px 0 30px}h2 em{font-weight:normal}h3{font-size:13px;letter-spacing:2px;font-weight:normal}p{font-size:16px;line-height:1.95}.paper{background:var(--cream)}.intro h2{margin-bottom:16px}.quote{font-size:22px;font-style:italic}.signature{font-size:32px;font-style:italic}.leaf{position:absolute;width:210px;height:310px;color:#54714838}.leaf-left{left:-60px;top:30px;transform:rotate(20deg)}.leaf-right{right:-60px;bottom:20px;transform:rotate(200deg)}.countdown-section{background:var(--forest);color:var(--cream)}.countdown{display:flex;align-items:start;justify-content:center;gap:26px;margin:40px 0 30px}.countdown strong{display:block;font-size:clamp(34px,6vw,62px);font-weight:normal;min-width:65px;font-variant-numeric:tabular-nums;line-height:1.1}.countdown div span{display:block;font:10px Arial;text-transform:uppercase;letter-spacing:2px;margin-top:12px;color:#d7c5a2}.countdown i{font-style:normal;font-size:28px;color:var(--gold);margin-top:9px}.countdown-caption{font-size:14px;color:#d2dfd2}.calendar{max-width:360px;margin:35px auto;padding:25px 24px 20px;border:1px solid var(--line);background:#fffdf8}.calendar-head{display:flex;justify-content:space-between;font-size:20px;padding-bottom:23px;color:var(--green)}.calendar-head span:last-child{font:12px Arial;letter-spacing:2px;padding-top:6px}.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:8px}.calendar-grid span{display:grid;place-items:center;height:32px;font-size:14px;position:relative}.calendar-grid.week{margin-bottom:10px;color:#78816e}.calendar-grid.week span{font:10px Arial}.calendar-grid .chosen{color:var(--cream);background:var(--green);border-radius:50%;box-shadow:0 0 0 3px #c5a26460}.calendar-time{font:10px Arial;letter-spacing:1.3px;margin:22px 0 2px}.calendar-time span{padding:0 10px;color:#a7824b}.venue-section{padding:90px 25px;background:linear-gradient(#0e291f66,#0e291f90),url('assets/garden.webp') center 50%/cover;color:var(--cream)}.venue-card{max-width:630px;margin:auto;padding:48px 25px;border:1px solid #c5a26490;background:#102e24d9}.venue-icon{width:60px;height:60px;color:var(--gold);margin-top:20px}.venue-card h2{font-style:italic;margin-top:18px}.venue-time{font-size:14px;color:#dccba8}.venue-card .button{margin-top:15px}.timeline{list-style:none;padding:0;max-width:420px;margin:40px auto;text-align:left;position:relative}.timeline:before{content:'';position:absolute;top:20px;bottom:35px;left:24px;width:1px;background:var(--line)}.timeline li{display:flex;align-items:center;gap:28px;position:relative;margin:28px 0}.timeline-icon{width:50px;height:50px;border:1px solid var(--line);background:var(--cream);display:grid;place-items:center;flex-shrink:0;color:#9c814e;font-size:22px;border-radius:50%}.timeline h3{font-size:19px;letter-spacing:0;margin:0 0 5px}.timeline p{font-size:13px;margin:0;line-height:1.65}.fineprint{font:11px/1.8 Arial;color:#6b7768;margin-top:28px}.dress{background:#e9eee2}.dress h3{font:11px Arial;letter-spacing:3px}.dress-options{display:flex;justify-content:center;gap:60px;margin-top:30px}.dress-options h4{font-style:italic;font-size:22px;font-weight:normal;margin:0}.dress-options p{font:12px Arial;color:#54664e;margin-top:10px}.gallery{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;margin-top:50px}.gallery figure{margin:0;padding:8px 8px 20px;background:#fffdf7;box-shadow:0 5px 24px #1735220c;border:1px solid #dcd9cb}.gallery figure:nth-child(2){transform:translateY(20px)}.gallery img{display:block;width:100%;height:auto;aspect-ratio:3/4;object-fit:cover}.gallery figcaption{font-size:17px;font-style:italic;margin-top:18px;color:#577045}.gallery-section .fineprint{margin-top:55px}.forest-quote{min-height:420px;display:grid;place-items:center;background:linear-gradient(#0e291f99,#0e291f99),url('assets/forest.webp') center 70%/cover;color:var(--cream)}.forest-quote p{font-size:clamp(22px,4vw,34px);line-height:1.6;margin:0}.extras h3{margin-top:30px}.text-link{font:12px/1.8 Arial;letter-spacing:.5px;text-underline-offset:7px}.rsvp-section{background:var(--forest);color:var(--cream)}.rsvp-section form{max-width:480px;margin:35px auto 0;text-align:left}.rsvp-section label{display:block;font:11px Arial;letter-spacing:.4px;margin:22px 0 9px;color:#ece9d9}.rsvp-section input,.rsvp-section select,.rsvp-section textarea{border:1px solid #bdcbb850;border-radius:2px;background:#f7f6ec;color:var(--deep);width:100%;padding:14px;font-size:14px}.rsvp-section textarea{min-height:95px;resize:vertical}.form-row{display:grid;grid-template-columns:1.2fr 1fr;gap:14px}.rsvp-section form .button{width:100%;margin-top:24px}.form-note{font:11px/1.8 Arial;color:#ccd9c7;margin-top:16px;text-align:center}.result{border-top:1px solid var(--line);margin-top:20px;text-align:center;padding:10px 0}.result p{font-size:14px}footer{background:var(--deep);color:var(--cream);padding:60px 20px 90px}footer .signature{font-size:58px;line-height:1;margin:0 0 20px}footer .eyebrow{letter-spacing:2.5px}footer>p:not(.signature):not(.eyebrow){font-size:13px}footer .footer-message{font-style:italic;color:#bdc7b2}.music-button{position:fixed;right:20px;bottom:20px;z-index:30;width:48px;height:48px;border:1px solid var(--gold);border-radius:50%;background:var(--deep);color:var(--gold);cursor:pointer;box-shadow:0 5px 20px #0e291f40;font-size:23px}.music-panel{position:fixed;right:20px;bottom:80px;z-index:50;width:min(360px,calc(100vw - 40px));background:var(--cream);color:var(--ink);border:1px solid var(--gold);padding:18px;box-shadow:0 10px 40px #0e291f60;text-align:left}.music-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:15px}.music-heading strong{display:block;font-size:18px;font-weight:normal}.music-heading span{display:block;font:11px Arial;margin-top:4px}.music-heading button{background:none;border:0;font-size:28px;color:var(--ink);cursor:pointer;padding:0 8px}.music-panel iframe{border:0;display:block}.music-panel p,.music-panel a{font:11px/1.8 Arial}.music-panel a{text-underline-offset:4px}@media(min-width:1000px){.cover{background-size:cover;background-position:center 55%}.cover-frame{background:radial-gradient(ellipse,#0e291f88,transparent 75%);padding:35px}.hero{background-size:cover;background-position:center 56%}.leaf{width:280px;height:420px}}@media(max-width:600px){.cover:after{inset:12px}.cover{padding:35px 15px}.cover .eyebrow{font-size:9px;letter-spacing:2.2px}.cover h1{font-size:84px}.cover-frame{padding:20px 12px}.cover-foot{font-size:12px}.hero{min-height:94svh;padding:95px 20px 35px}.hero:after{inset:12px}.hero h1{font-size:96px}.hero .eyebrow{font-size:8px;letter-spacing:2.2px}.hero .surname{font-size:10px;letter-spacing:4px}.hero-age{font-size:23px}.tiny-crown{margin:25px 0 10px;font-size:30px}.hero-quote{font-size:18px}.date-line{font-size:9px;letter-spacing:1.2px}.scroll{margin-top:35px}.nav{gap:18px;font-size:9px;letter-spacing:1px}section{padding:70px 22px}.intro p:not(.eyebrow):not(.signature){font-size:15px}.leaf{width:130px;height:230px}.leaf-left{left:-45px}.leaf-right{right:-45px}.countdown{gap:10px}.countdown strong{font-size:38px;min-width:46px}.countdown i{font-size:20px;margin-top:5px}.countdown div span{font-size:8px;letter-spacing:1px}.countdown-caption{font-size:12px}.venue-section{padding:55px 20px}.venue-card{padding:35px 18px}.venue-time{font-size:12px}.timeline li{gap:20px}.timeline p{font-size:12px}.dress-options{gap:40px}.gallery{gap:9px;margin-top:35px}.gallery figure{padding:4px 4px 12px}.gallery figcaption{font-size:12px;line-height:1.3;margin-top:12px}.gallery-section .fineprint{font-size:10px}.forest-quote{min-height:330px}.form-row{grid-template-columns:1fr 1fr;gap:12px}.rsvp-section select{font-size:12px;padding:14px 8px}.rsvp-section label{font-size:10px}.music-button{right:16px;bottom:16px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.cover,.button{transition:none}.spark{animation:none}}
/* Enchanted forest details throughout the invitation. */
.paper{background-color:#faf9ed;background-image:radial-gradient(ellipse at 0% 0%,#c9dfad42,transparent 55%),radial-gradient(ellipse at 100% 100%,#e7d39230,transparent 50%)}
section:after{content:'';position:absolute;z-index:0;left:12%;right:12%;bottom:0;height:1px;background:linear-gradient(90deg,transparent,#c5a264aa,transparent);pointer-events:none}
.countdown-section{background:radial-gradient(ellipse at 20% 0%,#54744365,transparent 65%),radial-gradient(ellipse at 90% 100%,#c5a26422,transparent 60%),#204d37}
.rsvp-section{background:radial-gradient(ellipse at 0% 25%,#6d874b45,transparent 60%),radial-gradient(ellipse at 100% 80%,#bdab5925,transparent 65%),#204d37}
.dress{background:radial-gradient(ellipse at 100% 0%,#ede1b06b,transparent 60%),linear-gradient(140deg,#f0f4df,#e2efd5)}
.section-botanical{position:absolute;z-index:0;color:#65834245;width:130px;height:205px;bottom:10px;right:-35px;transform:rotate(-25deg);pointer-events:none;animation:leaf-sway 8s ease-in-out infinite alternate}
.countdown-section .section-botanical,.rsvp-section .section-botanical{color:#a6b97765}
section .fireflies{z-index:0}
.paper .spark,.dress .spark{background:#aa893e;width:4px;height:4px;box-shadow:0 0 9px 3px #c5a2644d}
.ornament{filter:drop-shadow(0 0 7px #c5a26450)}
.calendar .chosen{box-shadow:0 0 0 3px #c5a26460,0 0 18px #ba9b6470}
.venue-card{background:linear-gradient(130deg,#254d38e6,#153a2ee6);box-shadow:0 0 35px #c5a2641c}
.timeline-icon{box-shadow:0 0 15px #c5a26422}
.reveal{opacity:0;transform:translateY(24px);transition:opacity .85s ease,transform .85s ease}
.reveal.visible{opacity:1;transform:translateY(0)}
.gallery figure{transition:transform .35s ease,box-shadow .35s ease}.gallery figure:hover{transform:translateY(-5px);box-shadow:0 8px 25px #28463320}.gallery figure:nth-child(2):hover{transform:translateY(12px)}
.music-button.playing{box-shadow:0 0 0 5px #c5a26433,0 0 22px #c5a26470}
@keyframes leaf-sway{from{transform:rotate(-27deg)}to{transform:rotate(-19deg)}}
@media(max-width:600px){.section-botanical{width:85px;height:145px;right:-22px}.paper{background-image:radial-gradient(ellipse at 0% 0%,#c9dfad55,transparent 65%),radial-gradient(ellipse at 100% 100%,#e7d39240,transparent 55%)}}
@media(prefers-reduced-motion:reduce){.section-botanical{animation:none}.reveal{opacity:1;transform:none;transition:none}.gallery figure{transition:none}}
