@font-face{font-family:InvitationSerif;src:url('assets/invitation-serif.woff') format('woff');font-display:swap;font-weight:400}
@font-face{font-family:InvitationSans;src:url('assets/invitation-sans.woff') format('woff');font-display:swap;font-weight:400}
@font-face{font-family:InvitationHand;src:url('assets/invitation-hand.woff') format('woff');font-display:swap;font-weight:400}
:root{color-scheme:light;--ink:#35343d;--muted:#868190;--paper:#fdfdff;--desk:#e3e3eb}
*{box-sizing:border-box}html,body{margin:0;width:100%}body{background:var(--desk);color:var(--ink);font-family:InvitationSans,'Noto Sans CJK KR',sans-serif;-webkit-font-smoothing:antialiased}
.desk{display:flex;justify-content:center;padding:34px 40px;background:#e3e3eb}
.invitation{position:relative;width:100%;max-width:950px;background:var(--paper);padding:38px 52px 40px;box-shadow:0 22px 30px -25px #62595480,0 3px 8px #46403b0b;isolation:isolate}
.invitation::before{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;opacity:.35;background:repeating-linear-gradient(0deg,#c2b8a908 0,#c2b8a908 1px,transparent 1px,transparent 4px)}
.letterhead{height:47px;margin-bottom:22px;display:flex;align-items:flex-start}.brand{width:103px;height:47px;position:relative;overflow:hidden}.brand img{position:absolute;left:0;top:-30px;width:105px;height:105px;display:block}
.invitation-body{display:grid;grid-template-columns:minmax(0,1fr) 326px;grid-template-areas:"intro photo" "closing photo";column-gap:40px;align-items:start}.intro{grid-area:intro;padding-top:5px}h1{margin:0;font-weight:400;line-height:1.45;letter-spacing:-.03em}.recipient{display:block;font-family:InvitationHand,cursive;font-size:68px;line-height:1.02;transform:rotate(-2deg);transform-origin:0 100%;white-space:nowrap}.honorific{font-size:40px;margin-left:2px}.invitation-words{display:block;margin-top:12px;font-family:InvitationSerif,'Noto Serif CJK KR',serif;font-size:38px;letter-spacing:-.055em}.closing{grid-area:closing;margin-top:25px}.purpose,.note{margin:0;word-break:keep-all;font-size:15px;line-height:1.8;letter-spacing:-.025em}.purpose{color:#4d4858}.note{color:#81788e;margin-top:8px;font-size:14px}.details{margin:0;padding:0;display:flex;gap:65px}.detail dt{font-size:11px;letter-spacing:.02em;color:var(--muted);margin-bottom:5px}.detail dd{margin:0;font-family:InvitationHand,cursive;font-size:32px;letter-spacing:.01em;line-height:1.15;transform:rotate(-2deg);white-space:nowrap}.detail:last-child dd{transform:rotate(1deg)}
.polaroid{grid-area:photo;position:relative;margin:-52px 0 0;background:#fff;padding:12px 12px 0;transform:rotate(3deg);box-shadow:0 12px 20px -11px #433a3259,0 1px 3px #4b40352b;align-self:start}.portrait-well{height:378px;overflow:hidden;position:relative;background:#e6e4ed}.portrait-well::after{content:"";position:absolute;inset:0;box-shadow:inset 0 0 0 1px #00000004;pointer-events:none}.portrait{position:absolute;bottom:-1px;left:50%;transform:translateX(-50%);width:auto;height:100%;display:block}.photo-margin{height:40px}.paperclip{position:absolute;width:22px;height:80px;top:-34px;right:24px;border:2px solid #aaa9a6;border-radius:18px;transform:rotate(-19deg);z-index:3;box-shadow:inset 1px 0 0 #fff,1px 1px 1px #5553}.paperclip::before{content:"";position:absolute;top:15px;left:4px;width:10px;height:57px;border:2px solid #b6b5b2;border-top:0;border-radius:0 0 10px 10px;box-shadow:1px 0 0 #fff}
@media(max-width:700px){.desk{padding:20px 16px 25px}.invitation{padding:25px 27px 27px}.letterhead{height:37px;margin-bottom:18px}.brand{width:103px;height:48px}.brand img{width:81px;height:81px;top:-23px}.invitation-body{display:grid;grid-template-columns:1fr;grid-template-areas:"intro" "photo" "closing";gap:0}.intro{padding:0}.recipient{font-size:54px}.honorific{font-size:31px}.invitation-words{font-size:30px;margin-top:7px;line-height:1.5}.polaroid{width:218px;justify-self:center;margin:23px 0 0;padding:9px 9px 0;transform:rotate(3deg)}.portrait-well{height:250px}.photo-margin{height:29px}.paperclip{height:61px;width:18px;right:19px;top:-25px}.paperclip::before{height:42px;width:8px;left:3px;top:12px}.closing{margin-top:22px}.purpose{font-size:13px;letter-spacing:-.04em}.note{font-size:12px;line-height:1.85;margin-top:6px}.desktop-break{display:none}.details{margin:0;padding:0;gap:55px}.detail dt{font-size:10px;margin-bottom:4px}.detail dd{font-size:28px}}
@media(max-width:360px){.desk{padding:16px 12px 20px}.invitation{padding-left:22px;padding-right:22px}.details{gap:35px}.purpose{font-size:11px}.note{font-size:10.5px}}
@media print{body,.desk{background:#fff}.desk{padding:0}.invitation{box-shadow:none;break-inside:avoid}*{-webkit-print-color-adjust:exact;print-color-adjust:exact}}

/* A thin second paper edge and restrained lavender shapes echo the supplied reference. */
.invitation::after{content:"";position:absolute;left:5px;right:-4px;top:auto;bottom:-5px;height:6px;background:#f6f5fb;box-shadow:0 1px 2px #5550640d;z-index:-2;transform:rotate(.35deg);pointer-events:none}
.instagram-handle{margin:15px 0 0;font-size:15px;line-height:1.3;letter-spacing:.01em;color:#8d819d}.invitation-rule{height:1px;background:#dfdbe8;position:relative;margin:16px 0 18px}.invitation-rule::after{content:"";position:absolute;right:0;top:-3px;width:7px;height:7px;background:#d8d0e4;transform:rotate(45deg)}
@media(max-width:700px){.instagram-handle{font-size:13px;margin-top:13px}.invitation-rule{margin:14px 0 16px}.invitation::after{left:4px;right:-2px;bottom:-4px;transform:rotate(.3deg)}}

/* One entrance per iframe document load; switching viewport width does not reload. */
.motion-play .recipient{animation:name-reveal 850ms cubic-bezier(.2,.7,.2,1) both}.motion-play .polaroid{animation:portrait-reveal 800ms ease 150ms both}
@keyframes name-reveal{from{opacity:0;filter:blur(8px)}to{opacity:1;filter:blur(0)}}
@keyframes portrait-reveal{from{opacity:0}to{opacity:1}}
@media(prefers-reduced-motion:reduce){.recipient,.polaroid,.motion-play .recipient,.motion-play .polaroid,.motion-preparing .recipient,.motion-preparing .polaroid{animation:none;filter:none;opacity:1}}

.motion-preparing .recipient{filter:blur(8px);opacity:.05}.motion-preparing .polaroid{opacity:0}
@media(prefers-reduced-motion:reduce){.motion-preparing .recipient,.motion-preparing .polaroid{filter:none;opacity:1}}
