:root{--paper:#f3eee5;--paper-deep:#ebe2d4;--ink:#28231f;--ink-soft:#746b61;--vermilion:#a84634;--vermilion-dark:#7f2e22;--gold:#b79a6b;--line:rgba(85,68,48,.18);--serif:'Noto Serif SC','Songti SC','STSong',serif;--display:'Cormorant Garamond','Times New Roman',serif}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:#d9d0c2;color:var(--ink);font-family:var(--serif)}button,input,select{font:inherit}button,a{-webkit-tap-highlight-color:transparent}.page-shell{position:relative;max-width:1440px;min-height:100vh;margin:0 auto;overflow:hidden;background:var(--paper)}.page-shell:before{content:'';position:fixed;inset:0;pointer-events:none;opacity:.22;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.75' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.16'/%3E%3C/svg%3E");z-index:2}.music-toggle{position:fixed;z-index:10;top:22px;right:24px;display:inline-flex;align-items:center;gap:7px;border:1px solid var(--line);border-radius:99px;padding:9px 12px;background:rgba(243,238,229,.82);color:var(--ink-soft);cursor:pointer;backdrop-filter:blur(8px);transition:.25s ease}.music-toggle:hover,.music-toggle:focus-visible{border-color:var(--vermilion);color:var(--vermilion);outline:none}.music-icon{font-family:Georgia,serif;font-size:18px;line-height:1}.music-status{font-size:11px;letter-spacing:.12em}.hero{min-height:720px;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:90px 24px 64px;position:relative;text-align:center;background:linear-gradient(180deg,rgba(235,226,212,.6),transparent 60%)}.hero:after{content:'';position:absolute;left:50%;bottom:0;width:1px;height:96px;background:linear-gradient(var(--gold),transparent);opacity:.7}.hero-ornament{display:flex;align-items:center;gap:16px;margin-bottom:24px;color:var(--gold)}.ornament-line{width:72px;height:1px;background:currentColor;opacity:.7}.double-happiness{display:grid;place-items:center;width:40px;height:40px;border:1px solid currentColor;color:var(--vermilion);font-size:23px;line-height:1}.eyebrow,.scroll-hint{margin:0;color:var(--ink-soft);font-family:var(--display);font-size:12px;letter-spacing:.32em}.hero h1{margin:16px 0 28px;color:var(--vermilion-dark);font-size:clamp(44px,8vw,84px);font-weight:600;letter-spacing:.18em;line-height:1.1}.hero-names{display:flex;align-items:center;gap:18px;margin:0;font-size:clamp(28px,5vw,48px);font-weight:500;letter-spacing:.12em}.hero-names i,.footer-names i{color:var(--gold);font-family:var(--display);font-size:.72em;font-style:normal;letter-spacing:0}.hero-date{margin:22px 0 42px;color:var(--ink-soft);font-family:var(--display);font-size:20px;letter-spacing:.18em}.seal-button{display:inline-flex;align-items:center;gap:12px;border:1px solid var(--vermilion);padding:12px 18px 12px 21px;color:var(--vermilion-dark);background:transparent;cursor:pointer;letter-spacing:.28em;transition:.25s ease}.seal-button:hover,.seal-button:focus-visible{background:var(--vermilion);color:var(--paper);outline:none}.seal-arrow{font-size:17px;line-height:1}.scroll-hint{margin-top:14px;font-size:10px;letter-spacing:.22em}.invitation,.countdown-section,.calendar-schedule,.venue-section,.rsvp-section{position:relative;z-index:1;max-width:920px;margin:0 auto;padding:112px 42px}.invitation{display:grid;grid-template-columns:minmax(220px,.9fr) 1.1fr;gap:100px;border-top:1px solid var(--line)}.section-heading{position:relative}.heading-kicker,.section-kicker{display:block;margin-bottom:18px;color:var(--vermilion);font-size:12px;letter-spacing:.24em}.section-heading h2,.countdown-section h2,.calendar-schedule h2,.rsvp-section h2{margin:0;font-size:clamp(28px,4vw,44px);font-weight:500;letter-spacing:.1em;line-height:1.55}em{color:var(--vermilion);font-style:normal}.invitation-copy{padding-top:30px;color:var(--ink-soft);font-size:15px;line-height:2.2;letter-spacing:.08em}.invitation-copy p{margin:0 0 10px}.date-lockup{display:flex;align-items:center;gap:18px;margin:35px 0 20px;color:var(--ink)}.date-lockup strong{display:block;font-family:var(--display);font-size:31px;font-weight:600;letter-spacing:.12em;line-height:1}.date-lockup small{display:block;margin-top:7px;color:var(--ink-soft);font-size:11px;letter-spacing:.15em}.date-line{flex:1;max-width:60px;height:1px;background:var(--gold);opacity:.75}.time-note{color:var(--vermilion-dark);font-size:13px;letter-spacing:.22em}.countdown-section{border-top:1px solid var(--line);border-bottom:1px solid var(--line);text-align:center}.section-label{display:flex;align-items:center;justify-content:center;gap:10px;color:var(--ink-soft);font-family:var(--display);font-size:11px;letter-spacing:.18em}.label-rule{width:34px;height:1px;background:var(--gold)}.countdown-section h2{margin:17px 0 45px;font-size:clamp(24px,4vw,35px)}.countdown{display:flex;justify-content:center;align-items:center;gap:clamp(10px,3vw,26px)}.countdown-item{display:flex;min-width:72px;flex-direction:column;align-items:center;gap:8px}.countdown-item strong{color:var(--vermilion-dark);font-family:var(--display);font-size:clamp(38px,6vw,64px);font-weight:500;line-height:1;letter-spacing:.04em}.countdown-item span{color:var(--ink-soft);font-size:12px;letter-spacing:.2em}.countdown-divider{color:var(--gold);font-family:var(--display);font-size:30px;transform:translateY(-8px)}.calendar-schedule{display:grid;grid-template-columns:minmax(260px,.9fr) minmax(300px,1.1fr);gap:70px;border-top:1px solid var(--line);background:var(--paper-deep)}.calendar-block,.schedule-block{min-width:0}.calendar-schedule h2{margin:14px 0 28px;font-size:30px}.calendar-weekdays,.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:7px}.calendar-weekdays{margin-bottom:7px;color:var(--ink-soft);font-family:var(--display);font-size:11px;text-align:center}.calendar-day{position:relative;display:grid;place-items:center;aspect-ratio:1;border:1px solid rgba(85,68,48,.14);color:var(--ink);font-family:var(--display);font-size:15px;background:rgba(255,255,255,.22)}.calendar-day.empty{border-color:transparent;background:transparent}.calendar-day.is-wedding{border-color:var(--vermilion);color:var(--vermilion-dark);background:rgba(168,70,52,.08)}.day-number{position:relative;z-index:1}.heart-mark{color:var(--vermilion);font-size:18px;line-height:1}.calendar-day .heart-mark{position:absolute;right:4px;bottom:3px;font-size:12px}.calendar-note{display:flex;align-items:center;gap:8px;margin:17px 0 0;color:var(--ink-soft);font-size:12px;letter-spacing:.08em}.schedule-list{border-top:1px solid var(--line)}.schedule-item{display:grid;grid-template-columns:125px 1fr;gap:18px;align-items:center;border-bottom:1px solid var(--line);padding:20px 0;color:var(--ink)}.schedule-item time{color:var(--vermilion-dark);font-family:var(--display);font-size:15px;letter-spacing:.04em}.schedule-item span{font-size:15px;letter-spacing:.08em}.venue-section{padding-bottom:128px}.venue-panel{display:grid;grid-template-columns:110px 1fr auto;align-items:center;gap:42px;padding:42px 38px;border:1px solid var(--gold);background:rgba(235,226,212,.5)}.venue-mark{display:grid;place-items:center;width:92px;height:112px;border:1px solid var(--gold);color:var(--vermilion-dark);font-size:22px;letter-spacing:.22em;writing-mode:vertical-rl}.venue-content h2{margin:0 0 8px;font-size:clamp(24px,4vw,34px);font-weight:500;letter-spacing:.12em}.venue-address{margin:0;color:var(--ink);font-size:16px;letter-spacing:.12em}.venue-sub{margin:14px 0 23px;color:var(--ink-soft);font-size:13px;line-height:1.8}.map-button{display:inline-flex;align-items:center;gap:7px;border-bottom:1px solid var(--vermilion);padding-bottom:5px;color:var(--vermilion-dark);font-size:13px;letter-spacing:.16em;text-decoration:none}.map-button:hover,.map-button:focus-visible{color:var(--vermilion);outline:none}.pin-icon{font-family:Georgia,serif;font-size:18px}.venue-stamp{display:flex;width:74px;height:74px;flex-direction:column;align-items:center;justify-content:center;border:1px solid var(--vermilion);border-radius:50%;color:var(--vermilion);transform:rotate(-8deg)}.venue-stamp span{font-size:25px;line-height:1}.venue-stamp small{margin-top:3px;font-size:9px;letter-spacing:.08em}.map-embed{position:relative;height:300px;margin-top:22px;overflow:hidden;border:1px solid var(--gold);background:var(--paper-deep)}.map-embed img{display:block;width:100%;height:100%;border:0;object-fit:cover;object-position:center top;filter:sepia(.14) saturate(.72)}.map-caption{position:absolute;right:14px;bottom:14px;left:14px;display:flex;align-items:center;justify-content:space-between;gap:12px;border:1px solid rgba(85,68,48,.18);padding:10px 13px;color:var(--ink);background:rgba(243,238,229,.9);font-size:12px;letter-spacing:.1em}.map-caption span:last-child{color:var(--vermilion-dark)}.rsvp-section{border-top:1px solid var(--line)}.centered{text-align:center}.centered>p{margin:14px 0 0;color:var(--ink-soft);font-size:14px;letter-spacing:.08em}.rsvp-form{max-width:560px;margin:48px auto 0}.field-label{display:block;margin:0 0 10px;color:var(--ink);font-size:13px;letter-spacing:.12em}.field-label span{color:var(--vermilion)}.rsvp-form input,.rsvp-form select{width:100%;border:0;border-bottom:1px solid var(--line);border-radius:0;padding:12px 2px;color:var(--ink);background:transparent;outline:0;font-size:15px}.rsvp-form input:focus,.rsvp-form select:focus{border-color:var(--vermilion)}.attendance-fieldset{margin:34px 0 28px;border:0;padding:0}.attendance-options{display:grid;grid-template-columns:1fr 1fr;gap:12px}.option-card{display:flex;align-items:center;gap:10px;border:1px solid var(--line);padding:14px;color:var(--ink-soft);cursor:pointer;font-size:14px}.option-card:has(input:checked){border-color:var(--vermilion);color:var(--vermilion-dark);background:rgba(168,70,52,.05)}.option-card input{position:absolute;opacity:0;width:1px;height:1px}.option-mark{display:grid;place-items:center;width:20px;height:20px;border:1px solid var(--line);color:transparent;font-size:13px}.option-card:has(input:checked) .option-mark{border-color:var(--vermilion);color:var(--vermilion)}.form-row{display:grid;grid-template-columns:120px 1fr;gap:26px;margin-bottom:38px}.submit-button{display:flex;width:100%;align-items:center;justify-content:space-between;border:1px solid var(--vermilion);padding:14px 18px;color:var(--paper);background:var(--vermilion);cursor:pointer;letter-spacing:.2em}.form-feedback{margin:18px 0 0;border-left:2px solid var(--gold);padding:10px 12px;color:var(--vermilion-dark);font-size:13px;line-height:1.7}.message-wall{max-width:620px;margin:88px auto 0;border-top:1px solid var(--line);padding-top:30px}.message-wall-heading{display:flex;align-items:baseline;gap:15px}.message-wall-heading h3{margin:0;color:var(--ink);font-size:19px;font-weight:500;letter-spacing:.15em}.message-wall-heading .heading-kicker{margin:0}.message-count{margin-left:auto!important;color:var(--ink-soft);font-family:var(--display);font-size:10px;letter-spacing:.12em}.message-viewport{position:relative;height:168px;overflow:hidden;margin-top:20px;border-top:1px solid rgba(85,68,48,.1);border-bottom:1px solid rgba(85,68,48,.1)}.message-viewport:before,.message-viewport:after{content:'';position:absolute;z-index:1;left:0;right:0;height:28px;pointer-events:none}.message-viewport:before{top:0;background:linear-gradient(var(--paper),transparent)}.message-viewport:after{bottom:0;background:linear-gradient(transparent,var(--paper))}.message-track{position:absolute;inset:0 0 auto;padding:18px 8px}.message-track.is-scrolling{animation:message-scroll 18s linear infinite}.message-item{display:flex;align-items:baseline;gap:13px;min-height:52px;padding:8px 4px;border-bottom:1px solid rgba(85,68,48,.1)}.message-item strong{flex:0 0 auto;color:var(--vermilion-dark);font-size:13px;font-weight:500;letter-spacing:.1em}.message-item span{color:var(--ink-soft);font-size:13px;line-height:1.7;letter-spacing:.05em}.message-empty{margin:0;padding:60px 0;color:#a89f93;text-align:center;font-size:13px;letter-spacing:.12em}@keyframes message-scroll{from{transform:translateY(0)}to{transform:translateY(-50%)}}.footer{position:relative;padding:74px 24px 88px;border-top:1px solid var(--line);text-align:center}.footer-seal{display:grid;place-items:center;width:42px;height:42px;margin:0 auto 22px;border:1px solid var(--vermilion);color:var(--vermilion);font-size:21px}.footer-names{margin:0;font-size:21px;letter-spacing:.16em}.footer-date{margin:12px 0 20px;color:var(--ink-soft);font-family:var(--display);letter-spacing:.25em}.footer-thanks{margin:0;color:var(--ink-soft);font-size:12px;letter-spacing:.18em}@keyframes reveal{to{opacity:1;transform:translateY(0)}}.section-reveal{opacity:0;transform:translateY(18px);animation:reveal .8s ease forwards}.hero.section-reveal{animation-delay:.1s}.invitation.section-reveal{animation-delay:.2s}.countdown-section.section-reveal{animation-delay:.3s}@media(max-width:680px){.music-toggle{top:14px;right:14px;padding:8px 10px}.music-status{display:none}.hero{min-height:650px;padding-top:74px}.ornament-line{width:44px}.hero h1{margin:15px 0 24px;letter-spacing:.12em}.hero-names{gap:11px;font-size:27px}.hero-date{margin:18px 0 36px;font-size:16px}.invitation,.countdown-section,.calendar-schedule,.venue-section,.rsvp-section{padding:78px 24px}.invitation{display:block}.invitation-copy{padding-top:38px}.date-lockup{gap:10px}.date-lockup strong{font-size:27px}.date-lockup small{font-size:10px}.venue-panel{grid-template-columns:1fr auto;gap:24px 18px;padding:28px 22px}.venue-mark{width:64px;height:90px;font-size:18px}.venue-content{grid-column:1/-1;grid-row:1;padding-left:84px}.venue-stamp{grid-column:2;grid-row:2;width:64px;height:64px}.venue-stamp span{font-size:21px}.venue-stamp small{font-size:8px}.countdown{gap:4px}.countdown-item{min-width:55px}.countdown-item strong{font-size:38px}.countdown-item span{font-size:10px}.countdown-divider{font-size:22px}.calendar-schedule{display:block}.calendar-schedule h2{font-size:26px}.schedule-block{margin-top:68px}.schedule-item{grid-template-columns:115px 1fr;gap:12px;padding:17px 0}.schedule-item span{font-size:13px;line-height:1.7}.rsvp-form{margin-top:38px}.message-wall{margin-top:68px}.message-wall-heading{gap:10px}.message-wall-heading h3{font-size:17px}.message-item{gap:9px}.form-row{grid-template-columns:100px 1fr;gap:15px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
.invitation-calendar{grid-column:1/-1;max-width:none;margin:34px 0 0;padding:56px 0 0;border-top:1px solid var(--line);background:transparent}
@media(max-width:680px){.invitation-calendar{padding:42px 0 0;margin-top:34px}}
.invitation-calendar{background:transparent!important;padding:52px 0 0;border-top:1px solid rgba(85,68,48,.14)}
.invitation-calendar .section-label{justify-content:flex-start}
.invitation-calendar h2{margin:12px 0 24px;font-size:27px;letter-spacing:.14em}
.calendar-grid{gap:0 8px}
.calendar-day{min-height:38px;aspect-ratio:auto;border:0;border-bottom:1px solid rgba(85,68,48,.1);background:transparent;font-size:14px}
.calendar-day.empty{min-height:0;border:0}
.calendar-day.is-wedding{border:0;border-bottom:1px solid rgba(168,70,52,.28);color:var(--vermilion-dark);background:transparent;font-weight:600}
.calendar-day.is-wedding:before{content:'';position:absolute;width:30px;height:30px;border:1px solid var(--vermilion);border-radius:50%;}
.calendar-day .heart-mark{right:auto;bottom:3px;font-size:15px}
.calendar-note{margin-top:14px}
.schedule-list{border-top:1px solid rgba(85,68,48,.14)}
.schedule-item{padding:17px 0;border-bottom:1px solid rgba(85,68,48,.1)}
.schedule-item time{font-size:14px}
.schedule-item span{font-size:14px}
@media(max-width:680px){.invitation-calendar{padding:40px 0 0}.calendar-day{min-height:34px}.calendar-day.is-wedding:before{width:27px;height:27px}.schedule-item{padding:15px 0}}
