:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--paper:#f8f2e8;--paper-deep:#eee4d5;--surface:#fffdf8;--ink:#302d28;--muted:#7a7067;--wine:#74372f;--wine-dark:#56261f;--moss:#52604b;--sage:#a5ad98;--line:#4a3b2f26;--shadow:0 24px 80px #3e2b1f1f;--serif:"Iowan Old Style", "Baskerville", "Noto Serif SC", "Songti SC", "STSong", serif;--sans:"Avenir Next", "PingFang SC", "Microsoft YaHei", system-ui, sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth}body{min-width:320px;color:var(--ink);font-family:var(--serif);text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;background:#e9e3da;margin:0}button,input,select{font:inherit}button,a{-webkit-tap-highlight-color:transparent}a{color:inherit}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--wine);outline-offset:3px}.shell{background:radial-gradient(circle at 18% 12%, #74372f14, transparent 30%), radial-gradient(circle at 88% 82%, #52604b1a, transparent 34%), var(--paper);place-items:center;min-height:100svh;padding:24px;display:grid}.card{border:1px solid var(--line);width:min(100%,460px);box-shadow:var(--shadow);background:#fffdf8eb;padding:44px;position:relative;overflow:hidden}.card:before{content:"";pointer-events:none;border:1px solid #74372f24;position:absolute;inset:12px}.card>*{position:relative}.eyebrow,.section-kicker,.invitation-kicker{color:var(--wine);font-family:var(--sans);letter-spacing:.24em;text-transform:uppercase;margin:0;font-size:10px;font-weight:600}.card h1{letter-spacing:.05em;margin:10px 0 24px;font-size:clamp(28px,7vw,38px);font-weight:500}p{color:var(--muted);line-height:1.8}.field{color:#504a44;font-family:var(--sans);gap:8px;font-size:13px;font-weight:550;display:grid}.field select,.field input{border:1px solid var(--line);width:100%;min-height:48px;color:var(--ink);background:#ffffffc2;border-radius:4px;padding:11px 14px;transition:border-color .16s,box-shadow .16s}.field select:focus,.field input:focus{border-color:#74372f8c;outline:0;box-shadow:0 0 0 3px #74372f14}.button{border:1px solid var(--wine);background:var(--wine);color:#fff;min-height:48px;font-family:var(--sans);letter-spacing:.08em;cursor:pointer;border-radius:2px;justify-content:center;align-items:center;gap:10px;padding:13px 22px;font-size:13px;font-weight:650;text-decoration:none;transition:background .16s,border-color .16s,transform .16s;display:inline-flex}.button:hover{border-color:var(--wine-dark);background:var(--wine-dark);transform:translateY(-1px)}.button:disabled{cursor:wait;opacity:.6;transform:none}.status{min-height:24px;font-family:var(--sans);margin:0;font-size:13px}.invitation-page{background:var(--paper);width:min(100%,760px);min-height:100svh;margin:0 auto;overflow:hidden;box-shadow:0 0 80px #31251c29}.invitation-hero{isolation:isolate;place-items:end center;min-height:max(720px,100svh);padding:110px 28px 112px;display:grid;position:relative;overflow:hidden}.hero-art{z-index:-2;background:url(/wedding-photos/courtyard-hero-taupe-refined.webp) top/cover no-repeat;position:absolute;inset:0}.invitation-hero:after{z-index:-1;content:"";background:linear-gradient(#19130f08 0%,#0000 42%,#1a120d38 62%,#18110dc7 100%);position:absolute;inset:0}.hero-topline{color:#fff;text-shadow:0 1px 18px #00000038;justify-content:space-between;align-items:center;display:flex;position:absolute;top:28px;left:28px;right:28px}.hero-topline .invitation-kicker{color:#fff}.photo-monogram{border:1px solid #ffffff8c;border-radius:50%;justify-content:center;align-items:center;gap:2px;width:48px;height:48px;font-size:14px;display:flex}.photo-monogram span{opacity:.75;font-size:9px;font-style:italic}.hero-content{text-align:center;justify-items:center;width:min(100%,540px);animation:.9s ease-out .12s both invitation-reveal;display:grid}.invitation-kicker{color:var(--moss);letter-spacing:.3em}.hero-caption{color:#ffffffb8;font-family:var(--sans);letter-spacing:.34em;text-transform:uppercase;margin:0 0 8px;font-size:9px}.couple-names{color:#fff;letter-spacing:.1em;text-shadow:0 2px 30px #00000057;align-items:center;gap:16px;margin:0;font-size:clamp(34px,9vw,58px);font-weight:400;line-height:1.2;display:flex}.couple-names span{color:#e8d2c0;letter-spacing:0;font-size:.54em;font-style:italic}.fine-rule{background:#74372f59;width:138px;height:1px;margin:28px 0 16px;position:relative}.fine-rule:after{background:var(--wine);content:"";width:7px;height:7px;position:absolute;top:-3px;left:calc(50% - 3px);transform:rotate(45deg)}.hero-date{color:#ffffffd1;letter-spacing:.28em;text-shadow:0 2px 18px #00000052;text-transform:uppercase;margin:16px 0 0;font-size:12px}.scroll-cue{color:#ffffffc7;font-family:var(--sans);letter-spacing:.18em;justify-items:center;gap:10px;font-size:9px;text-decoration:none;display:grid;position:absolute;bottom:30px;left:50%;transform:translate(-50%)}.scroll-cue i{transform-origin:top;background:#ffffffb8;width:1px;height:30px;animation:1.8s ease-in-out infinite scroll-pulse;display:block}.invitation-intro,.event-section,.venue-section,.rsvp-section{padding:88px 52px}.invitation-intro{text-align:center;position:relative}.guest-note{border-bottom:1px solid var(--line);justify-items:center;width:min(100%,380px);margin:0 auto 68px;padding:0 0 34px;display:grid}.guest-honor{justify-content:center;align-items:baseline;gap:14px;width:100%;padding:6px 0 18px;display:flex;position:relative}.guest-honor:after{content:"";background:linear-gradient(90deg,#0000,#aa8a5c,#0000);height:1px;position:absolute;bottom:6px;left:20%;right:20%}.guest-honor span{color:#9b805b;letter-spacing:.2em;font-size:10px}.guest-honor strong{color:var(--wine);letter-spacing:.1em;text-shadow:0 4px 18px #74372f1f;font-family:STKaiti,Kaiti SC,KaiTi,"FangSong",cursive;font-size:clamp(34px,8vw,48px);font-style:italic;font-weight:400;line-height:1.25}.guest-note>p{letter-spacing:.05em;margin:0;font-size:13px}.invitation-intro:before,.invitation-intro:after{content:"";opacity:.14;pointer-events:none;background:url(/wedding-botanical.webp) 0 100%/360px no-repeat;width:110px;height:180px;position:absolute}.invitation-intro:before{top:18px;left:-20px}.invitation-intro:after{bottom:12px;right:-16px;transform:rotate(180deg)}.invitation-intro h2,.section-heading h2,.venue-panel h2{color:#3e3731;letter-spacing:.08em;margin:10px 0 22px;font-size:clamp(28px,6vw,38px);font-weight:450}.intro-copy{letter-spacing:.05em;width:min(100%,490px);margin:0 auto;font-size:15px;line-height:2.15}.date-lockup{justify-content:center;align-items:center;gap:24px;width:min(100%,320px);margin:48px auto 12px;display:flex}.date-lockup span{border-block:1px solid var(--line);width:84px;color:var(--moss);font-family:var(--sans);letter-spacing:.14em;text-transform:uppercase;padding-block:9px;font-size:10px}.date-lockup strong{color:var(--wine);font-size:66px;font-weight:400;line-height:1}.chinese-date{letter-spacing:.16em;margin:0;font-size:13px}.story-still{background:#191815;margin:0;position:relative;overflow:hidden}.story-still img{width:100%;height:auto;display:block}.story-still:after{content:"";pointer-events:none;background:linear-gradient(#0000,#120f0cc7);position:absolute;inset:45% 0 0}.story-still figcaption{z-index:1;color:#fff;position:absolute;bottom:30px;left:34px;right:34px}.story-still figcaption span{font-family:var(--sans);letter-spacing:.24em;text-transform:uppercase;font-size:9px}.story-still figcaption p{color:#ffffffe0;letter-spacing:.05em;width:min(100%,460px);margin:8px 0 0;font-size:14px;line-height:1.8}.story-still-portrait img{object-fit:cover;object-position:center top;max-height:1050px}.event-section{background:#ede5d8}.section-heading{text-align:center;margin-bottom:42px}.section-heading>p:last-child{margin:-10px 0 0}.timeline{grid-template-columns:1fr 46px 1fr;align-items:stretch;gap:16px;display:grid}.event-card{text-align:center;background:#fffdf894;border:1px solid #52604b33;align-content:center;justify-items:center;min-height:290px;padding:32px 20px;display:grid}.event-icon,.venue-icon{width:46px;height:46px;color:var(--wine);border:1px solid #74372f33;border-radius:50%;place-items:center;margin-bottom:16px;display:grid}.event-icon svg,.venue-icon svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.25px;width:21px}.event-card p{color:var(--moss);font-family:var(--sans);letter-spacing:.18em;text-transform:uppercase;margin:0 0 5px;font-size:9px}.event-card h3{margin:0;font-size:22px;font-weight:450}.event-card>strong{color:var(--wine);letter-spacing:.08em;margin:20px 0 8px;font-size:34px;font-weight:400}.event-card>span{color:var(--muted);font-size:12px}.timeline-flower{place-items:center;display:grid;position:relative}.timeline-flower:before{content:"";background:#74372f33;width:1px;height:100%;position:absolute}.timeline-flower i{background:var(--wine);border:3px solid #ede5d8;width:13px;height:13px;position:relative;transform:rotate(45deg);box-shadow:0 0 0 1px #74372f4d}.venue-section{background:linear-gradient(#2c2f27a6,#2c2f27a6),url(/wedding-botanical.webp) 50% 74%/cover no-repeat;padding-block:108px;position:relative}.venue-panel{text-align:center;background:#f8f2e8eb;border:1px solid #ffffff59;justify-items:center;width:min(100%,500px);margin:0 auto;padding:48px 28px;display:grid;box-shadow:0 18px 50px #1b1c1833}.venue-panel h2{margin-bottom:8px}.venue-panel>p:not(.section-kicker){margin:0 0 26px}.button-outline{border-color:var(--wine);color:var(--wine);background:0 0}.button-outline:hover{color:#fff}.rsvp-section{background:var(--surface)}.rsvp-form{gap:24px;width:min(100%,520px);margin:0 auto;display:grid}.card .rsvp-form{margin-top:24px}.rsvp-fieldset{border:0;min-width:0;margin:0;padding:0}.rsvp-fieldset legend{color:#4d4740;width:100%;font-family:var(--sans);letter-spacing:.12em;margin-bottom:12px;font-size:12px;font-weight:650}.attendance-options{grid-template-columns:1fr 1fr;gap:12px;display:grid}.attendance-options button{border:1px solid var(--line);background:var(--paper);min-height:118px;color:var(--ink);cursor:pointer;border-radius:0;align-content:center;place-items:center;gap:4px;padding:18px 10px;transition:all .16s;display:grid;position:relative}.attendance-options button>span{width:22px;height:22px;color:var(--moss);font-family:var(--sans);border:1px solid #52604b59;border-radius:50%;place-items:center;margin-bottom:4px;font-size:11px;display:grid}.attendance-options button strong{font-size:16px;font-weight:500}.attendance-options button small{color:var(--muted);font-family:var(--sans);font-size:10px}.attendance-options button.is-selected{border-color:var(--wine);box-shadow:inset 0 0 0 1px var(--wine);background:#74372f0d}.attendance-options button.is-selected>span{border-color:var(--wine);background:var(--wine);color:#fff}.count-fieldset{border-block:1px solid var(--line);justify-items:center;padding:20px;display:grid}.count-fieldset legend{text-align:left;margin-bottom:0}.count-fieldset>p{font-family:var(--sans);margin:0 0 14px;font-size:11px}.count-control{align-items:center;gap:8px;display:flex}.count-control button{border:1px solid var(--line);width:42px;height:42px;color:var(--wine);font-family:var(--sans);cursor:pointer;background:0 0;border-radius:50%;place-items:center;font-size:20px;display:grid}.count-control button:disabled{cursor:not-allowed;opacity:.35}.count-control input{width:72px;color:var(--ink);text-align:center;appearance:textfield;background:0 0;border:0;font-size:30px}.count-control input::-webkit-inner-spin-button{appearance:none;margin:0}.count-control input::-webkit-outer-spin-button{appearance:none;margin:0}.rsvp-submit{width:100%}.rsvp-form .status{text-align:center;min-height:0}.rsvp-form .status.has-message{min-height:44px;color:var(--moss);background:#52604b14;padding:10px 14px}.privacy-note{font-family:var(--sans);text-align:center;margin:-12px 0 0;font-size:10px}.invitation-footer{color:#f7f0e5;text-align:center;background:#3e493a;justify-items:center;padding:66px 28px 56px;display:grid}.footer-mark{border:1px solid #ffffff59;border-radius:50%;justify-content:center;align-items:center;gap:3px;width:64px;height:64px;margin-bottom:16px;font-size:18px;display:flex}.footer-mark span{color:#d5b4a5;font-size:11px;font-style:italic}.invitation-footer p{color:#ffffffa6;margin:0;font-size:12px}.invitation-footer a{color:#fff;letter-spacing:.08em;margin-top:4px;font-size:14px;text-decoration:none}.invitation-footer small{color:#ffffff6b;font-family:var(--sans);letter-spacing:.22em;margin-top:34px;font-size:8px}.admin-shell{width:min(1180px,100%);min-height:100svh;margin:0 auto;padding:48px 24px 80px}.admin-header,.guest-form,.guest-row{justify-content:space-between;align-items:center;gap:16px;display:flex}.admin-header{border-bottom:1px solid var(--line);padding-bottom:24px}.admin-header h1{letter-spacing:.06em;margin:8px 0 0;font-size:34px;font-weight:450}.admin-card{border:1px solid var(--line);background:var(--surface);margin-top:24px;padding:30px;box-shadow:0 12px 40px #3e2b1f0d}.admin-card h2{letter-spacing:.05em;margin:0 0 22px;font-size:21px;font-weight:550}.summary-grid{grid-template-columns:repeat(5,1fr);gap:12px;margin-top:24px;display:grid}.summary-grid article{border:1px solid var(--line);background:var(--surface);align-content:center;gap:7px;min-height:112px;padding:18px 20px;display:grid}.summary-grid article:first-child{background:var(--wine);color:#fff}.summary-grid article:first-child span{color:#ffffffb3}.summary-grid strong{font-size:34px;font-weight:450}.summary-grid span,.guest-row span{color:var(--muted);font-family:var(--sans);font-size:12px}.admin-form{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;display:grid}.field-wide{grid-column:1/-1}.button-secondary{border-color:var(--line);color:var(--ink);background:0 0}.button-secondary:hover{border-color:var(--ink);background:var(--ink);color:#fff}.guest-form{background:var(--paper);justify-content:flex-start;padding:16px}.guest-form .field{flex:1}.guest-list{gap:0;margin-top:20px;display:grid}.guest-row{border-top:1px solid var(--line);padding:17px 4px}.guest-row div{gap:5px;display:grid}.guest-row a{color:var(--wine);font-family:var(--sans);text-underline-offset:4px;font-size:12px;font-weight:650}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;padding:0;position:absolute;overflow:hidden}@keyframes invitation-reveal{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}@keyframes scroll-pulse{0%,to{opacity:.35;transform:scaleY(.55)}50%{opacity:1;transform:scaleY(1)}}@media (max-width:720px){.invitation-hero{min-height:max(680px,100svh)}.couple-names{gap:10px}.invitation-intro,.event-section,.venue-section,.rsvp-section{padding:76px 24px}.timeline{grid-template-columns:1fr}.timeline-flower{height:42px}.timeline-flower:before{width:100%;height:1px}.event-card{min-height:250px}.admin-shell{padding:30px 16px 64px}.summary-grid{grid-template-columns:repeat(2,1fr)}.summary-grid article:first-child{grid-column:1/-1}.admin-form{grid-template-columns:1fr}.field-wide{grid-column:auto}.admin-header,.guest-row{flex-direction:column;align-items:flex-start}}@media (max-width:430px){.card{padding:40px 28px}.attendance-options{gap:8px}.attendance-options button{min-height:112px}.date-lockup{gap:12px}.date-lockup span{width:76px}.guest-form{flex-direction:column;align-items:stretch}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
