:root{--ink:#2b2418;--gold:#c9a66b;--cream:#f4ead8;--paper:#fffdf8;--sans:"Noto Sans JP", "Hiragino Sans", "Hiragino Kaku Gothic ProN", sans-serif;--hand:"Mochiy Pop One", "Noto Sans JP", sans-serif;--hand-ja:"Yomogi", "Noto Sans JP", sans-serif;--safe-top:env(safe-area-inset-top,0px);--safe-bottom:env(safe-area-inset-bottom,0px)}*{box-sizing:border-box}html,body{color:#2b2418;-webkit-tap-highlight-color:transparent;background:#fffdf8;margin:0}html{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;height:100%}body{min-height:100dvh;font-family:var(--sans);overflow-x:hidden}body:not(.is-ready){height:100dvh;overflow:hidden}button,a,input,textarea,label{touch-action:manipulation}img{max-width:100%;display:block}button,input,textarea,select{font:inherit}#opening{z-index:2;background:radial-gradient(at 30% 18%,#fff 0%,#fffdf8 55%,#f4ead8 100%);position:fixed;inset:0}#write-stage{z-index:3;flex-direction:column;justify-content:center;align-items:center;padding:10vh 20px 18vh;transition:opacity .5s,transform .5s;display:flex;position:absolute;inset:0}body.is-scrolled #write-stage{opacity:0;pointer-events:none;transform:translateY(-12px)}.sig{font-family:var(--hand);letter-spacing:.04em;color:#16130f;margin:0;font-size:clamp(52px,15vw,88px);font-weight:400;line-height:1.05}.sig span{clip-path:inset(0 100% 0 0);display:inline-block}.sig span.is-drawn{animation:.28s forwards ink-letter}@keyframes ink-letter{to{clip-path:inset(0)}}.sig-amp{width:52px;height:40px;margin:2px 0 4px}.sig-amp path{fill:none;stroke:#c45b4a;stroke-width:3.4px;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:180;stroke-dashoffset:180px;transition:stroke-dashoffset .28s}.sig-amp path.is-drawn{stroke-dashoffset:0}.write-ja{max-width:86vw;font-family:var(--hand-ja);letter-spacing:.18em;text-align:center;color:#2a2418;clip-path:inset(0 100% 0 0);margin:8px 0 0;font-size:clamp(18px,5.4vw,28px)}body.is-written .write-ja{animation:.7s both write-line}@keyframes write-line{to{clip-path:inset(0)}}#scraps{z-index:1;pointer-events:none;position:absolute;inset:0;overflow:hidden}.scrap{left:var(--x);top:var(--y);z-index:var(--z,1);width:min(22vw, var(--s,72px));opacity:0;transform:translateY(28px) rotate(calc(var(--rot) - 16deg)) scale(1.18);background:#fffdf8;margin:0;padding:4px;transition:opacity .35s,transform .55s cubic-bezier(.16,1.2,.3,1);position:absolute;box-shadow:0 10px 20px #1c1a1629,0 0 0 1px #1c1a160d}.scrap.is-in{opacity:1;transform:translate3d(var(--parax,0px), var(--paray,0px), 0) rotate(calc(var(--rot) + var(--pararot,0deg))) scale(1);animation:scrap-float 7.5s var(--delay,0s) ease-in-out infinite}.scrap.is-hero{z-index:10;width:min(28vw,96px)}@keyframes scrap-float{0%,to{transform:translate3d(var(--parax,0px), var(--paray,0px), 0) rotate(calc(var(--rot) + var(--pararot,0deg))) scale(1)}50%{transform:translate3d(var(--parax,0px), calc(var(--paray,0px) - 7px), 0) rotate(calc(var(--rot) + var(--pararot,0deg))) scale(1)}}.scrap img{aspect-ratio:3/4;object-fit:cover;width:100%}#scroll-hint{z-index:6;font-family:var(--sans);letter-spacing:.22em;text-transform:uppercase;color:#5c574e;opacity:0;pointer-events:none;flex-direction:column;align-items:center;gap:6px;margin:0;font-size:11px;font-weight:500;display:flex;position:absolute;bottom:calc(16dvh + 12px);left:50%;transform:translate(-50%)translateY(12px)}#scroll-hint span{background:#5c574e;width:1px;height:18px;animation:1.4s ease-in-out infinite hint-line}body.is-ready #scroll-hint{opacity:1;pointer-events:auto;transition:opacity .5s .15s,transform .5s .15s;transform:translate(-50%)}body.is-scrolled #scroll-hint{opacity:0;pointer-events:none}@keyframes hint-line{0%,to{opacity:.35;transform:scaleY(.55)}50%{opacity:1;transform:scaleY(1)}}#finale{z-index:5;padding:0 10px calc(36px + var(--safe-bottom));opacity:0;pointer-events:none;background:0 0;justify-content:center;align-items:flex-start;margin-top:84dvh;display:flex;position:relative;transform:translateY(28vh)}#finale.is-visible{opacity:1;pointer-events:auto;transition:transform .85s cubic-bezier(.22,1,.32,1),opacity .5s;transform:translateY(0)}.invite-card{color:#222;width:min(100%,440px);font-family:var(--sans);background:#fff;border:0;border-radius:22px 22px 0 0;padding:8px 18px 28px;box-shadow:0 -12px 48px #14120e1f}.sheet-handle{cursor:grab;touch-action:none;background:0 0;border:0;justify-content:center;align-items:center;width:calc(100% + 36px);height:36px;margin:0 -18px 8px;padding:0;display:flex}.sheet-handle:after{content:"";background:#d8d8d8;border-radius:999px;width:36px;height:4px}body.is-dragging .sheet-handle{cursor:grabbing}body.is-dragging{-webkit-user-select:none;user-select:none}.invite-guest{font-family:var(--sans);letter-spacing:.06em;text-align:center;color:#111;margin:0 0 4px;font-size:14px;font-weight:700}.invite-card h2{font-family:var(--sans);letter-spacing:.04em;text-align:center;color:#111;margin:8px 0 10px;font-size:clamp(22px,6.4vw,28px);font-weight:700}.invite-kicker,.rsvp-title{font-family:var(--sans);letter-spacing:.18em;text-transform:uppercase;color:#6b6b6b;text-align:center;margin:0;font-size:12px;font-weight:500}.invite-lead{font-family:var(--sans);text-align:center;letter-spacing:.02em;color:#333;margin:0 0 22px;font-size:15px;font-weight:400;line-height:1.75}.invite-meta{gap:14px;margin:0;display:grid}.invite-meta div{grid-template-columns:64px 1fr;align-items:start;gap:10px;display:grid}.invite-meta dt{font-family:var(--sans);letter-spacing:.14em;text-transform:uppercase;color:#6b6b6b;padding-top:3px;font-size:11px;font-weight:500}.invite-meta dd{font-family:var(--sans);color:#222;margin:0;font-size:15px;line-height:1.7}.invite-meta strong{font-weight:600;display:block}.invite-meta span{display:block}.maps-link{text-align:center;color:#3a3a3a;letter-spacing:.04em;margin:16px 0 22px;font-size:14px;font-weight:500;display:block}#rsvp-form{border-top:1px solid #ececec;gap:14px;padding-top:8px;display:grid}.rsvp-edit,.rsvp-confirm{gap:14px;display:grid}.rsvp-edit[hidden],.rsvp-confirm[hidden]{display:none!important}.attend-btn,.file-field{position:relative}.rsvp-lead{text-align:center;font-family:var(--sans);letter-spacing:.02em;color:#333;margin:0 0 4px;font-size:14px;line-height:1.8}.afterparty-card{background:0 0;border-top:1px solid #ececec;border-bottom:1px solid #ececec;gap:12px;margin:6px 0 2px;padding:18px 2px 16px;display:grid}.afterparty-kicker{letter-spacing:.06em;text-align:center;color:#111;margin:-4px 0 0;font-size:15px;font-weight:700}.afterparty-lead{letter-spacing:.02em;color:#333;text-align:left;margin:0;font-size:14px;font-weight:400;line-height:1.75}.afterparty-meta{gap:10px}.afterparty-meta dt{padding-top:2px}.rsvp-label,#rsvp-form label,#rsvp-form fieldset,#rsvp-form legend{letter-spacing:.04em;color:#333;border:0;margin:0;padding:0;font-size:13px;font-weight:500}#rsvp-form label,#rsvp-form fieldset{gap:6px;display:grid}.rsvp-label{margin-top:4px}#rsvp-form input[type=text],#rsvp-form input[type=tel],#rsvp-form select,#rsvp-form textarea{color:#111;width:100%;font-size:16px;font-family:var(--sans);background:#f6f6f6;border:1px solid #e4e4e4;border-radius:10px;padding:12px 14px}#rsvp-form textarea{resize:vertical;min-height:4.5em}#rsvp-form small{letter-spacing:.02em;color:#6b6b6b;font-size:12px}.attend-set{grid-template-columns:1fr 1fr}.attend-set legend{grid-column:1/-1;margin-bottom:2px}.attend-btn{cursor:pointer;background:#f6f6f6;border:1px solid #e4e4e4;border-radius:10px;place-items:center;min-height:48px;padding:0;display:grid!important}.attend-btn input{opacity:0;pointer-events:none;position:absolute}.attend-btn span{letter-spacing:.04em;color:#222;font-size:15px;font-weight:500}.attend-btn:has(input:checked){background:#222;border-color:#222}.attend-btn:has(input:checked) span{color:#fff}.name-row,.rsvp-actions{grid-template-columns:1fr 1fr;gap:10px;display:grid}.zip-row{grid-template-columns:1fr auto;align-items:end;gap:10px;display:grid}.zip-search,.rsvp-next,.rsvp-back,#rsvp-form button[type=submit]{letter-spacing:.06em;min-height:48px;font-family:var(--sans);cursor:pointer;border:0;border-radius:10px;padding:12px 16px;font-size:14px;font-weight:500}.zip-search,.rsvp-back{color:#222;background:#f6f6f6;border:1px solid #e4e4e4!important}.rsvp-next,#rsvp-form button[type=submit]{color:#fff;background:#222}.rsvp-next{width:100%;margin-top:6px}.allergy-detail.is-disabled textarea{opacity:.45}.file-field input[type=file]{opacity:0;width:1px;height:1px;position:absolute}.file-box{letter-spacing:.02em;color:#555;background:#f6f6f6;border:1px dashed #d0d0d0;border-radius:10px;place-items:center;min-height:52px;font-size:14px;display:grid}.file-preview{object-fit:cover;border-radius:2px;width:100%;max-height:160px}.rsvp-summary{gap:12px;margin:0;display:grid}.rsvp-summary div{border-bottom:1px solid #ececec;grid-template-columns:88px 1fr;gap:8px;padding-bottom:10px;display:grid}.rsvp-summary dt{letter-spacing:.04em;color:#6b6b6b;font-size:12px;font-weight:500}.rsvp-summary dd{font-family:var(--sans);color:#222;overflow-wrap:anywhere;margin:0;font-size:15px;line-height:1.7}.rsvp-status{text-align:center;min-height:0;margin:0;font-size:13px;line-height:1.6}.rsvp-status:empty{display:none}#rsvp-form.is-sent .rsvp-status{font-family:var(--sans);padding:12px 4px 4px}#rsvp-form.is-sent{display:none}#thanks{justify-items:center;gap:18px;padding:12px 0 8px;display:grid}#thanks[hidden]{display:none!important}.thanks-polaroid{background:#fffdf8;width:min(72vw,260px);margin:8px 0 0;padding:10px 10px 28px;position:relative;transform:rotate(-3deg);box-shadow:0 16px 36px #1c1a162e,0 0 0 1px #1c1a160d}.thanks-polaroid img{aspect-ratio:4/5;object-fit:cover;width:100%}.thanks-stamp{color:#c45b4a;font-family:var(--hand-ja);letter-spacing:.16em;opacity:0;background:#fffdf8d1;border:3px solid #c45b4a;padding:6px 8px 5px;font-size:22px;position:absolute;bottom:4px;right:4px;transform:rotate(-18deg)scale(1.7);box-shadow:inset 0 0 0 1px #c45b4a}body.is-thanks .thanks-stamp{animation:.42s cubic-bezier(.16,1.35,.3,1) .28s forwards stamp-hit}@keyframes stamp-hit{0%{opacity:0;transform:rotate(-18deg)scale(1.7)}70%{opacity:1;transform:rotate(-11deg)scale(.94)}to{opacity:1;transform:rotate(-12deg)scale(1)}}.thanks-copy{text-align:center;color:#333;max-width:20em;margin:0;font-size:15px;font-weight:500;line-height:1.75}#rsvp-form button:disabled{opacity:.55}@media (width<=420px){.invite-card{border-radius:20px 20px 0 0;width:100%;padding:8px 16px 28px}.sheet-handle{width:calc(100% + 32px);margin:0 -16px 8px}}
