:root{--paper:#fffaf3;--pink:#f3e3df;--rose:#985960;--ink:#503b3c;--muted:#7a6261;--line:#d9bab5;--serif:"Songti SC","STSong","SimSun",serif;--sans:system-ui,-apple-system,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:24px}body{color:var(--ink);font:16px/1.7 var(--sans);background:#e8dcd6;margin:0}button,input{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{opacity:.55;cursor:default}a{color:inherit}:is(button:focus-visible,a:focus-visible,input:focus-visible){outline-offset:5px;outline:3px solid #9d575f}h1,h2,p,figure{margin:0}h1,h2{font-family:var(--serif);font-weight:500}h2{font-size:28px;line-height:1.6}i{font-family:Georgia,serif;font-weight:400}.invitation{background:var(--paper);max-width:540px;margin:auto;padding-bottom:80px;position:relative;box-shadow:0 0 80px #66443c12}.section{text-align:center;padding:76px 28px}.eyebrow{letter-spacing:3px;color:var(--rose);margin-bottom:18px;font:12px/1.6 Georgia,serif}.primary,.secondary{border:1px solid var(--rose);letter-spacing:2px;border-radius:3px;min-height:50px;padding:12px 28px;text-decoration:none;display:inline-block}.primary{background:var(--rose);color:#fffaf3}.secondary{color:var(--rose);background:0 0}.envelope{z-index:50;background:var(--paper);text-align:center;isolation:isolate;place-items:center;display:grid;position:fixed;inset:0;overflow:auto}.envelope:before{content:"";border:1px solid var(--line);pointer-events:none;position:absolute;inset:18px}.envelope-lines{z-index:-1;background:radial-gradient(at 50% 100%,#edcfc770,#0000 70%);position:absolute;inset:0;overflow:hidden}.envelope-lines:before,.envelope-lines:after{content:"";border:1px solid #d7b1aa;width:70vw;max-width:700px;height:70vw;max-height:700px;position:absolute;bottom:-45vw;transform:rotate(45deg)}.envelope-lines:before{left:-20vw}.envelope-lines:after{right:-20vw}.cover-inner{padding:65px 24px}.seal{font:46px var(--serif);border:1px solid var(--rose);width:92px;height:92px;color:var(--rose);outline:1px solid var(--line);outline-offset:7px;background:#f4dfd8;border-radius:50%;place-items:center;margin:38px auto;display:grid}.cover-small{color:var(--muted);letter-spacing:2px;font-size:14px}.cover-inner h1{letter-spacing:6px;margin:16px 0 24px;font-size:38px}.cover-names{font-family:var(--serif);letter-spacing:2px;font-size:22px}.cover-names i{color:var(--rose);margin:0 12px}.cover-date{letter-spacing:4px;margin:24px 0 38px;font:17px Georgia,serif}.open-button{min-width:210px}.music-hint{color:var(--muted);margin-top:16px;font-size:12px}.cover-bottom{color:var(--rose);font-size:12px;position:absolute;bottom:30px}.hero{background:#dac8bd;height:min(960px,100svh);min-height:760px;position:relative;overflow:hidden}.hero-photo{object-fit:cover;object-position:50% 38%;width:100%;height:100%;position:absolute;inset:0}.hero:after{content:"";background:linear-gradient(#f3e5dba6 0%,#0000 27% 56%,#2e211cba 100%);position:absolute;inset:0}.hero-heading{z-index:1;text-align:center;position:absolute;top:43px;left:20px;right:20px}.hero-heading .eyebrow{color:#6b4544;letter-spacing:3px;margin-bottom:8px;font-size:11px}.hero-heading h1{letter-spacing:6px;color:#70494a;font-size:30px}.hero-caption{z-index:1;text-align:center;color:#fffaf3;width:100%;padding:0 20px;position:absolute;bottom:35px}.hero-english{margin-bottom:16px;font:italic 30px Georgia,serif}.hero-caption h2{letter-spacing:3px;font-size:30px}.hero-caption h2 i{margin:0 10px;font-size:23px}.hero-date{letter-spacing:3px;margin-top:18px;font:20px Georgia,serif}.hero-date span{font:14px var(--sans);letter-spacing:1px;margin-left:14px}.scroll-cue{letter-spacing:2px;margin:32px auto 0;font-size:12px;text-decoration:none;display:block}.scroll-cue span{font-size:20px;display:block}.music-control{z-index:12;color:var(--rose);background:#fffaf3ed;border:1px solid #cfa8a1;border-radius:30px;align-items:center;gap:5px;min-width:48px;min-height:48px;padding:6px 10px;display:flex;position:fixed;top:16px;right:max(14px,50vw - 256px)}.music-control span:first-child{font-size:22px}.music-control span:last-child{font-size:12px}.is-playing span:first-child{animation:3s ease-in-out infinite sway}.music-error{background:var(--paper);border:1px solid var(--line);z-index:13;max-width:290px;padding:12px;font-size:14px;position:fixed;top:76px;right:16px}.letter{background:linear-gradient(#fffaf3,#faf0e8)}.letter h2{line-height:1.8}.little-flower{color:var(--rose);margin:25px auto;font-size:28px;display:block}.letter>p:not(.eyebrow){margin-bottom:22px;line-height:2.1}.signature{font:24px var(--serif);letter-spacing:4px;margin-top:36px}.signature i{color:var(--rose);padding:0 10px}.portraits{padding-left:20px;padding-right:20px}.portrait-grid{grid-template-columns:1fr 1fr;align-items:start;gap:16px;margin-top:38px;display:grid}.portrait-grid figure:nth-child(2){margin-top:50px}.portrait-grid img{border-radius:140px 140px 0 0;width:100%;height:auto;display:block}.portrait-grid figcaption{font:22px/1.8 var(--serif);padding-top:15px}.portrait-grid figcaption span{font:11px/1.8 var(--sans);letter-spacing:1px;color:var(--rose);margin-bottom:4px;display:block}.schedule{background:#f4e6df}.date-display{margin:32px auto 42px}.date-display>span{letter-spacing:3px;font-size:14px;display:block}.date-display strong{color:var(--rose);margin:10px 0;font:72px/1.25 Georgia,serif;display:block}.date-display i{color:#b98984;font-size:43px}.timeline{text-align:left;max-width:350px;margin:auto}.timeline>div{grid-template-columns:92px 1fr;gap:24px;padding:0 0 30px;display:grid;position:relative}.timeline>div:before{content:"";background:#caa19b;width:1px;position:absolute;top:13px;bottom:-12px;left:100px}.timeline>div:last-child:before{display:none}.timeline>div:after{content:"";background:var(--rose);border-radius:50%;outline:4px solid #f4e6df;width:9px;height:9px;position:absolute;top:11px;left:96px}.timeline time{font:27px/1.3 Georgia,serif}.timeline span{font-size:18px}.timeline small{color:var(--muted);margin-top:3px;font-size:14px;display:block}.main-event{color:var(--rose)}.schedule-note{color:var(--muted);margin-top:8px;font-size:14px;line-height:1.9}.venue h2{letter-spacing:6px;font-size:38px}.venue-sub{font-family:var(--serif);letter-spacing:3px;margin-top:6px;font-size:21px}.venue-art{color:#a77974;width:220px;margin:32px auto 26px}.arch{outline-offset:9px;border:1px solid #c4a19a;border-radius:100px 100px 0 0;outline:1px solid #d7bfb7;place-items:center;width:140px;height:140px;margin:auto;display:grid}.arch span{font:58px var(--serif);color:#af7777}.venue-art p{letter-spacing:3px;margin-top:22px;font:11px Georgia,serif}.address{margin:24px 0;font-size:16px}.venue-note{color:var(--muted);margin-top:14px;font-size:14px}.rsvp{background:#f3e3df}.rsvp-intro{margin:16px 0 30px;font-size:16px}form{text-align:left;max-width:360px;margin:auto}label{margin:20px 0 10px;font-size:16px;display:block}label span{color:var(--muted);font-size:12px}input{width:100%;color:var(--ink);background:#fffaf3;border:1px solid #b78d87;border-radius:3px;min-height:50px;padding:12px 14px}input::placeholder{color:#8a7270}.count-control{background:var(--paper);border:1px solid #b78d87;border-radius:3px;align-items:center;display:flex}.count-control button{width:52px;min-height:50px;color:var(--rose);background:0 0;border:0;font-size:22px}.count-control input{text-align:center;-moz-appearance:textfield;background:0 0;border:0;flex:1;width:70px}.count-control input::-webkit-inner-spin-button{-webkit-appearance:none;appearance:none}.count-control>span{margin-right:20px;font-size:14px}.privacy-note{color:var(--muted);margin:18px 0;font-size:12px}form .primary{width:100%}.form-message{color:#76424a;min-height:24px;margin-top:16px;font-size:14px;line-height:1.7}.text-button{color:var(--rose);background:0 0;border:0;padding:10px 0;text-decoration:underline}footer{text-align:center;padding:55px 24px 30px}.footer-double{font:42px var(--serif);color:var(--rose);margin-bottom:16px}footer p{font:24px/1.8 var(--serif)}footer span{margin-top:20px;font-size:14px;display:block}footer small{letter-spacing:2px;margin-top:10px;font:12px Georgia,serif;display:block}.bottom-nav{z-index:10;width:100%;max-width:540px;padding:8px 12px calc(8px + env(safe-area-inset-bottom));background:#fffaf3f5;border-top:1px solid #dac0b7;display:flex;position:fixed;bottom:0;left:50%;transform:translate(-50%)}.bottom-nav a{text-align:center;flex:1;padding:11px 0;font-size:14px;text-decoration:none}.bottom-nav a:last-child{background:var(--rose);color:#fff;border-radius:3px}.admin{background:var(--paper);max-width:900px;min-height:70vh;margin:40px auto;padding:36px 24px}.admin h1{margin:12px 0;font-size:30px}.admin-summary{gap:32px;margin:28px 0;display:flex}.admin-summary strong{color:var(--rose);font:40px Georgia,serif;display:block}.admin table{border-collapse:collapse;text-align:left;width:100%;margin:24px 0;font-size:16px}.admin td,.admin th{border-bottom:1px solid var(--line);overflow-wrap:anywhere;padding:14px 8px}.admin th{font-weight:500}.admin .notice{padding:20px 0}.admin-actions{flex-wrap:wrap;gap:12px;display:flex}.admin-actions button{min-height:48px}.admin time,.admin a{font-size:14px}.admin-status{margin:18px 0;font-size:14px}.admin-login{padding:32px 0}.admin-login p{margin-bottom:24px}@keyframes sway{50%{transform:rotate(16deg)}}@media (max-width:359px){.section{padding:60px 22px}h2{font-size:24px}.hero-caption h2{font-size:25px}.hero-heading h1{font-size:26px}.cover-inner h1{font-size:32px}.timeline>div{grid-template-columns:86px 1fr;gap:20px}.timeline>div:before{left:90px}.timeline>div:after{left:86px}.timeline time{font-size:24px}.admin{padding:24px 16px}.admin td,.admin th{padding:12px 4px}.hero{min-height:690px}}@media (min-width:760px){.envelope:before{inset:28px}.cover-inner h1{font-size:44px}.envelope-lines:before,.envelope-lines:after{bottom:-470px}.hero{height:900px}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition:none!important;animation:none!important}}.hero-heading{top:78px}.hero-caption{bottom:85px}@media (max-height:700px){.cover-inner{padding:55px 22px}.seal{margin:20px auto}.cover-bottom{padding-bottom:24px;position:static}.cover-date{margin:18px 0 24px}}.letter,.letter h2,.letter p,.letter .signature{text-align:center;width:100%}.letter-ornament{background:linear-gradient(90deg,transparent,var(--line) 22%,var(--line) 46%,transparent 46%,transparent 54%,var(--line) 54%,var(--line) 78%,transparent);width:112px;height:12px;margin:34px auto 0;position:relative}.letter-ornament:after{content:"";background:var(--rose);outline:3px solid var(--paper);width:7px;height:7px;position:absolute;top:2px;left:50%;transform:translate(-50%)rotate(45deg)}
