:root{--wine:#7d1f35;--wine-dark:#311e24;--gold:#c9a227;--rose:#c58f99;--ink:#4a3137;--muted:#866f74;--paper:#fff9f3;--line:#ead7d2;font-family:"Noto Sans SC","PingFang SC",sans-serif;color:var(--ink);background:var(--wine-dark)}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--wine-dark)}button,input,select,textarea{font:inherit}.invitation{width:min(100%,620px);min-height:100dvh;margin:auto;background:var(--paper);overflow:hidden}.cover{position:relative;height:100vh;height:100dvh;background:var(--wine-dark)}.cover-image{display:block;width:100%;height:100%;padding:0;border:0;background:#eee;cursor:zoom-in}.cover-image img{display:block;width:100%;height:100%;object-fit:cover}.cover-overlay{position:absolute;inset:0;display:flex;align-items:flex-end;justify-content:center;padding:clamp(34px,9vh,74px) 28px;pointer-events:none;background:linear-gradient(180deg,transparent 38%,rgb(49 30 36 / .2) 53%,rgb(49 30 36 / .9) 100%);color:#fff;text-align:center}.cover-copy{max-width:540px}.kicker{position:relative;margin:0 0 16px;padding-top:18px;color:#f2ddb0;font-size:13px;letter-spacing:.14em}.kicker::before{content:"";position:absolute;top:0;left:50%;width:40px;height:1px;background:var(--gold);transform:translateX(-50%)}.cover h1{margin:0;color:#fff;font:700 clamp(30px,8vw,44px)/1.35 "Noto Serif SC",serif;letter-spacing:.08em;text-shadow:0 2px 18px rgb(0 0 0 / .25)}.cover-date{margin:18px 0 0;color:#f3dfa7;font:500 clamp(22px,6vw,30px)/1.25 "DM Mono",monospace;letter-spacing:.1em}.cover-arrow{position:absolute;bottom:18px;left:50%;color:var(--gold);font:400 24px/1 Arial,sans-serif;transform:translateX(-50%);animation:arrowHint 1.8s ease-in-out infinite}.section-block{padding:44px 28px}.welcome{text-align:center}.love-line{margin:0 0 16px;color:var(--gold);font-weight:600;letter-spacing:.12em}.intro{max-width:480px;margin:0 auto;white-space:pre-line;color:#735f64;font-size:16px;line-height:1.9}.ceremony-information{margin-top:24px;padding:16px 12px;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.time-venue{margin:0;color:var(--muted);font-size:14px;line-height:1.75}.section-ornament{height:0;color:var(--gold);font:400 21px/1 "Playfair Display",serif;text-align:center;transform:translateY(10px)}.story-section{text-align:center}.story-section header>p,.rsvp-section>p,.venue-card p,.countdown-section>p{margin:0 0 10px;color:var(--gold);font:500 12px "DM Mono",monospace;letter-spacing:.14em}.story-section h2,.rsvp-section h2,.venue-card h2{margin:0 0 10px;color:var(--wine);font:700 clamp(22px,5.5vw,26px)/1.45 "Noto Serif SC",serif;letter-spacing:.08em}.story-section header>span,.rsvp-section>span,.venue-card>span{display:block;color:var(--muted);font-size:14px;line-height:1.8}.story-slider{position:relative;margin-top:24px;border-radius:16px;overflow:hidden;background:#eee;box-shadow:0 12px 32px rgb(49 30 36 / .12);touch-action:pan-y}.story-track{display:flex;transition:transform .38s ease}.story-slide{flex:0 0 100%;border:0;padding:0;background:transparent;cursor:zoom-in}.story-slide img{display:block;width:100%;aspect-ratio:4/3;object-fit:cover}.slider-arrow{position:absolute;top:50%;display:grid;place-items:center;width:40px;height:40px;padding:0;border:1px solid rgb(255 255 255 / .7);border-radius:50%;background:rgb(255 255 255 / .8);color:var(--wine);font-size:26px;opacity:.82;box-shadow:0 4px 14px rgb(53 21 30 / .15);cursor:pointer;transform:translateY(-50%);transition:opacity .2s,transform .2s}.slider-arrow:hover{opacity:1;transform:translateY(-50%) scale(1.04)}.slider-arrow.prev{left:12px}.slider-arrow.next{right:12px}.story-dots{display:flex;align-items:center;justify-content:center;gap:7px;margin-top:16px}.story-dots button{width:6px;height:6px;padding:0;border:0;border-radius:99px;background:var(--line);cursor:pointer;transition:width .2s,background .2s}.story-dots button.active{width:20px;background:var(--gold)}.countdown-section{text-align:center}.countdown-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:20px}.countdown-grid div{display:grid;gap:5px;padding:12px 2px;border-right:1px solid var(--line)}.countdown-grid div:last-child{border:0}.countdown-grid strong{color:var(--wine);font:500 clamp(26px,7vw,34px)/1 "DM Mono",monospace}.countdown-grid span{color:var(--muted);font-size:12px}.countdown-finished{display:block;color:var(--wine);font:600 18px/1.6 "Noto Serif SC",serif}.venue-card{margin:0 28px;padding:28px;border:1px solid var(--line);border-radius:16px;background:#fff;box-shadow:0 12px 32px rgb(49 30 36 / .08)}.venue-title-row{display:flex;gap:14px;align-items:flex-start}.venue-icon{display:grid;flex:0 0 auto;place-items:center;width:38px;height:38px;margin-top:2px;border-radius:50%;background:var(--wine);color:#fff}.venue-icon svg{width:20px;height:20px}.venue-card h2{font-size:22px}.venue-card>span{margin-left:52px}.venue-card a{display:flex;align-items:center;justify-content:center;gap:7px;width:100%;height:48px;margin-top:24px;border-radius:10px;background:var(--wine);color:#fff;font-weight:700;text-decoration:none}.rsvp-section{margin-top:44px;background:#f8eeeb}.rsvp-section>span{margin-bottom:24px}form{display:grid;gap:16px;padding:24px;border-radius:16px;background:#fff;box-shadow:0 12px 32px rgb(49 30 36 / .08)}fieldset{min-width:0;margin:0;padding:0;border:0}legend{margin:0 0 10px;color:var(--gold);font:500 12px "DM Mono",monospace;letter-spacing:.12em}legend span{margin-left:6px;color:var(--muted);font-family:"Noto Sans SC",sans-serif;letter-spacing:0}label{display:grid;gap:7px;color:#624a50;font-size:14px;font-weight:600}input,select,textarea{width:100%;min-height:44px;padding:11px 12px;border:1px solid var(--line);border-radius:10px;background:#fff;color:var(--ink);outline:0;transition:border-color .2s,box-shadow .2s}textarea{resize:vertical}input:focus,select:focus,textarea:focus{border-color:var(--wine);box-shadow:0 0 0 3px rgb(125 31 53 / .12)}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}form>button{height:48px;padding:0;border:0;border-radius:10px;background:var(--wine);color:#fff;font-weight:700;cursor:pointer;transition:transform .16s,background .16s}form>button:hover,.venue-card a:hover{background:#68192d}form>button:active,.venue-card a:active{transform:scale(.98)}form>button:disabled{opacity:.7;cursor:wait}.form-result{min-height:20px;margin:0;text-align:center;color:var(--wine);font-size:13px}.form-result.success{animation:successPop .35s ease-out}.form-result.success::before{content:"♥ ";color:var(--gold);font-size:17px}footer{display:grid;place-content:center;min-height:190px;padding:36px 28px;background:var(--wine-dark);color:#fff;text-align:center}footer p{position:relative;margin:14px 0 12px;padding:14px 0;color:#fff;font:700 32px/1.45 "Noto Serif SC",serif;letter-spacing:.12em}footer p::before,footer p::after{content:"";position:absolute;left:50%;width:40px;height:1px;background:var(--gold);transform:translateX(-50%)}footer p::before{top:0}footer p::after{bottom:0}.footer-family{color:#d9bfc4;font:500 10px "DM Mono",monospace;letter-spacing:.2em}.invitation footer>span:last-child{font:12px "DM Mono",monospace;letter-spacing:.18em;color:#d9bfc4}.music-toggle{position:fixed;z-index:20;top:max(16px,env(safe-area-inset-top));right:max(16px,env(safe-area-inset-right));display:grid;place-items:center;width:44px;height:44px;padding:0;border:1px solid #ffffff77;border-radius:50%;background:#321c22cc;color:#fff;box-shadow:0 6px 18px #2f101a33;cursor:pointer}.music-toggle span{font-size:22px;animation:musicSpin 4s linear infinite}.music-toggle.muted span{animation:none;opacity:.55}.music-toggle.muted::after{content:"";position:absolute;width:25px;height:2px;background:#fff;transform:rotate(-45deg)}.image-viewer{width:100vw;max-width:none;height:100dvh;max-height:none;margin:0;padding:0;border:0;background:#160e11ee;color:#fff}.image-viewer[open]{display:grid;place-items:center}.image-viewer::backdrop{background:#160e11ee}.image-viewer img{max-width:calc(100vw - 36px);max-height:calc(100dvh - 100px);object-fit:contain}.viewer-close,.viewer-arrow{position:fixed;z-index:2;border:0;background:#ffffff1c;color:#fff;cursor:pointer}.viewer-close{top:18px;right:18px;width:44px;height:44px;border-radius:50%;font-size:28px}.viewer-arrow{top:50%;width:44px;height:60px;transform:translateY(-50%);font-size:35px}.viewer-prev{left:8px}.viewer-next{right:8px}.image-viewer p{position:fixed;bottom:18px;left:50%;margin:0;font:13px "DM Mono",monospace;transform:translateX(-50%)}.preview-mode .music-toggle,.preview-mode .rsvp-section form{pointer-events:none}.preview-mode .image-viewer{display:none}.reveal{opacity:0;transform:translateY(16px);transition:opacity .6s ease-out,transform .6s ease-out}.reveal.is-visible{opacity:1;transform:none}@keyframes musicSpin{to{transform:rotate(360deg)}}@keyframes arrowHint{50%{transform:translate(-50%,4px);opacity:.55}}@keyframes successPop{0%{transform:scale(.88);opacity:0}100%{transform:scale(1);opacity:1}}@media(min-width:621px){body{padding:24px}.invitation{border-radius:24px;box-shadow:0 25px 70px #10070a66}.cover{height:min(760px,100dvh)}}@media(max-width:420px){.section-block{padding:36px 20px}.cover-overlay{padding-right:20px;padding-left:20px}.cover h1{font-size:30px}.venue-card{margin:0 20px;padding:24px 20px}.rsvp-section{margin-top:36px}.form-grid{grid-template-columns:1fr}.slider-arrow{width:32px;height:32px;font-size:23px}.countdown-grid{gap:2px}.countdown-grid strong{font-size:26px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important}.reveal{opacity:1;transform:none}}
