:root{color-scheme:light;--paper:#f4eee5;--ink:#38232b;--accent:#632b3d;--line:#c6af88;font-family:'Noto Serif TC','Songti TC',serif}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink)}button,input,select,textarea{font:inherit;color:inherit}button,a{touch-action:manipulation}a{color:inherit;text-underline-offset:5px}button{cursor:pointer;border:1px solid var(--line);background:var(--accent);color:#fff9ee;min-height:48px;padding:12px 22px}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:2px solid var(--accent);outline-offset:5px}.invite-nordic{--ink:#2d4050;--accent:#334b5c;--paper:#f4efdf}.invite-cover{position:relative;min-height:100svh;background:#291b23;color:#fff7e8;display:grid;place-items:center;isolation:isolate;padding:32px;overflow:hidden}.invite-art{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;z-index:-2}.invite-cover:after{content:'';position:absolute;inset:0;background:linear-gradient(0deg,#1e1421e6,transparent 70%,#1e142140);z-index:-1}.invite-cover-frame{border:1px solid #d6ba8070;outline:1px solid #d6ba8030;outline-offset:-9px;width:min(100%,720px);min-height:82svh;padding:40px 32px;display:flex;flex-direction:column;align-items:center;justify-content:space-between;text-align:center}.invite-eyebrow{font:12px/1.8 Georgia,serif;letter-spacing:.16em}.invite-cover-names{font:clamp(32px,5vw,68px)/1.25 'Bodoni Moda','Noto Serif TC',serif;overflow-wrap:anywhere;max-width:100%;margin:30svh 0 12px}.invite-cover-names em{display:block;font-size:.65em;line-height:1.4}.invite-date{font-size:16px;letter-spacing:.08em}.invite-actions{display:flex;justify-content:center;align-items:center;flex-wrap:wrap;gap:20px;margin:26px 0}.invite-cover button:last-child{background:transparent;border-color:#d6ba8088;color:#fff7e8}.invite-letter{max-width:820px;margin:0 auto;padding:90px 44px;text-align:center;overflow-wrap:anywhere}.invite-letter h1{font-size:clamp(30px,4vw,46px);font-weight:400;line-height:1.8;margin:30px 0}.invite-letter h2{font-size:24px;font-weight:400;margin:36px 0 22px}.invite-letter p{font-size:19px;line-height:2}.invite-body{white-space:pre-line}.invite-letter-names{font:clamp(26px,4vw,42px)/1.6 'Bodoni Moda','Noto Serif TC',serif;margin:32px 0}.invite-rule{border-top:1px solid var(--line);margin:40px auto;max-width:160px}.invite-programme{list-style:none;padding:0;margin:30px auto;max-width:480px;text-align:left}.invite-programme li{display:flex;gap:24px;border-bottom:1px solid #c6af8855;padding:20px 0;font-size:18px}.invite-programme time{white-space:nowrap;font-family:Georgia,serif}.invite-programme small{display:block;font-size:15px;margin-top:8px}.invite-ready:not(.letter-open) .invite-letter{display:none}.letter-unfolding .invite-cover{position:fixed;inset:0;z-index:20;min-height:100svh;transform-origin:left center;animation:letter-unfold 1.15s cubic-bezier(.2,.65,.25,1) both}.invite-ready.letter-unfolding .invite-letter{display:block}.invite-read-direct{position:fixed;z-index:40;right:24px;bottom:24px}.invite-read-direct[hidden]{display:none}.invite-cover .invite-actions [data-open-invitation]{background:var(--accent);border-color:#d6ba8088}.letter-open .invite-cover{display:none}@keyframes letter-unfold{0%{transform:perspective(1600px) rotateY(0);opacity:1}35%{transform:perspective(1600px) rotateY(-24deg);opacity:1}100%{transform:perspective(1600px) rotateY(-95deg);opacity:0}}.rsvp-dialog{width:min(720px,calc(100% - 32px));max-height:90svh;overflow:auto;border:1px solid var(--line);padding:45px 36px;background:var(--paper);color:var(--ink)}dialog::backdrop{background:#24141cc9}.dialog-close{position:absolute;top:10px;right:10px;border:0;background:transparent;color:inherit;font-size:24px;padding:8px;min-height:44px}.rsvp-dialog label{display:grid;gap:8px;margin:20px 0;font-size:16px}.rsvp-dialog input:not([type=radio]),.rsvp-dialog select,.rsvp-dialog textarea{width:100%;max-width:100%;padding:12px;border:1px solid var(--line);background:#fffcf5;font-size:16px;min-height:46px}.rsvp-dialog fieldset{border:0;padding:0;display:flex;gap:22px}.rsvp-dialog fieldset label{display:flex;gap:8px}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:20px}.solid-button{background:var(--accent);color:#fff8ee}.text-link{background:transparent;color:var(--accent);border:0}.reply-card{border:1px solid var(--line);padding:24px;margin:24px 0;overflow-wrap:anywhere}.result-actions{display:flex;flex-wrap:wrap;gap:12px}.reply-message{white-space:pre-line;line-height:1.9}.rsvp-date{font-size:14px}.invite-cover .invite-actions a{color:inherit}.invite-cover button:focus-visible{outline-color:#fff8ee}@media(max-width:600px){.invite-cover{padding:18px}.invite-cover-frame{padding:30px 20px;min-height:88svh}.invite-cover-names{margin-top:28svh;font-size:38px}.invite-letter{padding:52px 24px}.invite-letter p{font-size:18px}.rsvp-dialog{padding:42px 22px}.form-row{gap:12px}.rsvp-dialog fieldset{gap:12px}}@media(prefers-reduced-motion:reduce){.letter-unfolding .invite-cover{animation:none}}
