:root{--page-bg:#f4f2e8;--card-bg:#ffffff;--card-fg:#1c1b1f;--card-fg-muted:#5f5b66;--card-border:rgba(0,0,0,0.08);--field-bg:#ffffff;--field-border:rgba(0,0,0,0.16);--field-border-focus:var(--inv-accent,#AE8B3F);--shadow:0 10px 40px rgba(20,12,45,0.18);--radius:22px;--radius-sm:12px;--accent:var(--inv-accent,#AE8B3F);--accent-fg:#ffffff;--danger:#c5303a;--success:#1f8a4c}@media (prefers-color-scheme:dark){:root{--page-bg:#14121a;--card-bg:#1d1b24;--card-fg:#ece6f2;--card-fg-muted:#a7a1b3;--card-border:rgba(255,255,255,0.1);--field-bg:#26232f;--field-border:rgba(255,255,255,0.18);--shadow:0 10px 40px rgba(0,0,0,0.55)}}*{box-sizing:border-box}body,html{margin:0;padding:0}body{background:var(--page-bg);color:var(--card-fg);font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;line-height:1.5;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}a{color:var(--accent)}.page{min-height:100dvh;display:flex;flex-direction:column;align-items:center;padding:clamp(16px,5vw,48px) 16px}.page-bg{position:fixed;inset:0;z-index:-1}.stack{width:100%;max-width:560px}.invite-col,.invite-layout,.rsvp-col,.stack{display:flex;flex-direction:column;gap:18px}.invite-col,.rsvp-col{min-width:0}@media (min-width:920px){.stack:has(.invite-layout){max-width:1000px}.invite-layout{display:grid;grid-template-columns:minmax(0,460px) minmax(320px,1fr);align-items:start;grid-gap:28px;gap:28px}.rsvp-col{position:-webkit-sticky;position:sticky;top:clamp(16px,5vw,48px)}}.invite-card{background:var(--inv-surface,var(--card-bg));color:var(--inv-text,var(--card-fg));border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden;border:1px solid var(--card-border)}.invite-hero{position:relative;padding:clamp(28px,7vw,52px) clamp(22px,6vw,44px);text-align:center}.invite-hero--photo{color:#fff;background-size:cover;background-position:50%}.invite-hero--photo:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,.2),rgba(0,0,0,.55))}.invite-hero>*{position:relative;z-index:1}.invite-eyebrow{text-transform:uppercase;letter-spacing:.14em;font-size:.72rem;font-weight:600;opacity:.75;margin:0 0 14px}.invite-headline{font-family:var(--inv-font-heading,"Playfair Display",Georgia,serif);font-size:clamp(1.9rem,7vw,2.9rem);line-height:1.1;font-weight:700;margin:0}.invite-host{margin-top:10px;font-size:.95rem;opacity:.85}.invite-body{font-family:var(--inv-font-body,inherit);padding:clamp(20px,5vw,36px) clamp(22px,6vw,44px);color:var(--inv-text,var(--card-fg))}.invite-message{white-space:pre-wrap;margin:0 0 8px;font-size:1.02rem}.details{flex-direction:column;margin-top:8px}.detail,.details{display:flex;gap:14px}.detail{align-items:flex-start}.detail-icon{flex:0 0 auto;width:38px;height:38px;border-radius:50%;display:grid;place-items:center;background:color-mix(in srgb,var(--inv-accent,#AE8B3F) 14%,transparent);color:var(--inv-accent,#AE8B3F)}.detail-label{font-size:.72rem;text-transform:uppercase;letter-spacing:.08em;color:var(--inv-text-muted,var(--card-fg-muted));margin:0 0 2px}.detail-value{margin:0;font-weight:600}.detail-sub{margin:2px 0 0;color:var(--inv-text-muted,var(--card-fg-muted));font-weight:400;font-size:.92rem}.detail-link{display:inline-block;margin-top:4px;font-size:.9rem;font-weight:600}.calendar{margin-top:22px;padding-top:18px;border-top:1px solid var(--card-border)}.calendar-title{font-size:.78rem;text-transform:uppercase;letter-spacing:.08em;color:var(--card-fg-muted);margin:0 0 10px}.calendar-links{display:flex;flex-wrap:wrap;gap:8px}.chip{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;border-radius:999px;border:1px solid var(--field-border);background:var(--field-bg);color:inherit;text-decoration:none;font-size:.88rem;font-weight:600;transition:border-color .15s ease,transform .05s ease}.chip:hover{border-color:var(--accent)}.chip:active{transform:translateY(1px)}.card{background:var(--card-bg);color:var(--card-fg);border-radius:var(--radius);box-shadow:var(--shadow);border:1px solid var(--card-border);padding:clamp(22px,6vw,34px)}.card-title{margin:0 0 18px;font-size:1.35rem;font-weight:700}.field{margin-bottom:18px}.field>label{display:block;font-weight:600;font-size:.92rem;margin-bottom:7px}.req{color:var(--danger);-webkit-margin-start:3px;margin-inline-start:3px}.input,.select,.textarea{width:100%;font:inherit;color:inherit;background:var(--field-bg);border:1px solid var(--field-border);border-radius:var(--radius-sm);padding:12px 14px;transition:border-color .15s ease,box-shadow .15s ease}.input:focus,.select:focus,.textarea:focus{outline:none;border-color:var(--field-border-focus);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 30%,transparent)}.textarea{resize:vertical;min-height:84px}.attendance{display:grid;grid-template-columns:repeat(auto-fit,minmax(0,1fr));grid-gap:8px;gap:8px}.attendance-option{position:relative}.attendance-option input{position:absolute;opacity:0;pointer-events:none}.attendance-option label{display:flex;align-items:center;justify-content:center;gap:6px;padding:13px 8px;border-radius:var(--radius-sm);border:1.5px solid var(--field-border);background:var(--field-bg);font-weight:600;cursor:pointer;transition:border-color .15s ease,background .15s ease;text-align:center}.attendance-option input:checked+label{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 14%,transparent)}.attendance-option input:focus-visible+label{box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 30%,transparent)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;width:100%;font:inherit;font-weight:700;padding:14px 18px;border-radius:var(--radius-sm);border:none;cursor:pointer;background:var(--accent);color:var(--accent-fg);transition:filter .15s ease,transform .05s ease}.btn:hover{filter:brightness(1.05)}.btn:active{transform:translateY(1px)}.btn[disabled]{opacity:.6;cursor:not-allowed}.btn-secondary{background:transparent;color:var(--accent);border:1.5px solid var(--field-border)}.form-error{color:var(--danger);font-size:.9rem;margin:0 0 14px}.field-error{color:var(--danger);font-size:.84rem;margin:6px 0 0}.banner{border-radius:var(--radius-sm);padding:14px 16px;margin-bottom:16px;font-size:.95rem;background:color-mix(in srgb,var(--accent) 10%,var(--card-bg));border:1px solid var(--card-border)}.confirm{text-align:center;padding-block:8px}.confirm-badge{width:64px;height:64px;border-radius:50%;margin:0 auto 14px;display:grid;place-items:center;background:color-mix(in srgb,var(--success) 16%,transparent);color:var(--success)}.confirm h2{margin:0 0 6px;font-size:1.5rem}.confirm p{margin:0 0 18px;color:var(--card-fg-muted)}.state{min-height:100dvh;display:grid;place-items:center;padding:24px;text-align:center}.state-inner{max-width:420px}.state h1{font-size:1.6rem;margin:0 0 10px}.state p{margin:0}.state p,.watermark{color:var(--card-fg-muted)}.watermark{text-align:center;font-size:.85rem;padding:6px 0 2px}.watermark a{font-weight:600}.env-reveal{position:fixed;inset:0;z-index:1000;display:grid;place-items:center;cursor:pointer;background:radial-gradient(120% 120% at 50% 0,color-mix(in srgb,var(--env-wax,#ae8b3f) 16%,transparent) 0,transparent 60%),linear-gradient(180deg,#fbf8ef 0,#efe9d8 100%);animation:env-vanish .7s ease 2.7s forwards}@media (prefers-color-scheme:dark){.env-reveal{background:radial-gradient(120% 120% at 50% 0,color-mix(in srgb,var(--env-wax,#ae8b3f) 22%,transparent) 0,transparent 60%),linear-gradient(180deg,#1b1822 0,#14121a 100%)}}.env-scene{perspective:1200px}.env-envelope{position:relative;width:min(430px,82vw);aspect-ratio:8/5;animation:env-pop .8s cubic-bezier(.22,1.2,.36,1) both,env-zoom .7s ease 2.7s forwards}.env-back{position:absolute;inset:0;border-radius:10px;background:linear-gradient(180deg,#f8f2e4,#efe6d1);box-shadow:0 30px 70px rgba(30,20,5,.28)}.env-letter{position:absolute;inset:6% 6% 8%;z-index:1;border-radius:6px;background:#fffdf6;box-shadow:0 6px 24px rgba(30,20,5,.18);display:flex;align-items:flex-start;justify-content:center;padding-top:9%;animation:env-rise .8s cubic-bezier(.22,1,.36,1) 1.95s forwards}.env-letter-text{font-family:Georgia,Times New Roman,serif;font-style:italic;font-size:clamp(.95rem,3.4vw,1.25rem);letter-spacing:.06em;color:#6d6148}.env-pocket{position:absolute;inset:0;z-index:2;border-radius:10px;background:linear-gradient(180deg,#f3ecda,#e9dfc6);-webkit-clip-path:polygon(0 0,50% 46%,100% 0,100% 100%,0 100%);clip-path:polygon(0 0,50% 46%,100% 0,100% 100%,0 100%);box-shadow:inset 0 -2px 6px rgba(30,20,5,.08)}.env-flap{position:absolute;top:0;left:0;right:0;height:52%;z-index:3;background:linear-gradient(180deg,#efe7d2,#e2d6b8);-webkit-clip-path:polygon(0 0,100% 0,50% 100%);clip-path:polygon(0 0,100% 0,50% 100%);border-radius:10px 10px 0 0;transform-origin:top center;animation:env-flap-open .65s ease-in-out 1.45s forwards}.env-seal{position:absolute;left:50%;top:46%;width:27%;z-index:4;transform:translate(-50%,-50%);filter:drop-shadow(0 4px 8px rgba(30,15,5,.35));animation:env-seal-break .6s ease-in .95s forwards}.env-seal-wax{fill:var(--env-wax,#ae8b3f)}.env-seal-rim{fill:none;stroke:rgba(40,20,5,.28);stroke-width:2.5}.env-seal-monogram{fill:rgba(50,26,8,.55);font-family:Georgia,Times New Roman,serif;font-size:46px;font-weight:600;text-anchor:middle}@keyframes env-vanish{to{opacity:0;visibility:hidden}}@keyframes env-pop{0%{opacity:0;transform:translateY(28px) scale(.9)}}@keyframes env-zoom{to{transform:scale(1.08)}}@keyframes env-seal-break{0%{transform:translate(-50%,-50%);opacity:1}30%{transform:translate(-50%,-50%) scale(1.1) rotate(5deg);opacity:1}to{transform:translate(-50%,55%) scale(.9) rotate(-18deg);opacity:0}}@keyframes env-flap-open{0%{transform:rotateX(0deg);z-index:3}to{transform:rotateX(-178deg);z-index:0}}@keyframes env-rise{to{transform:translateY(-58%)}}@media (prefers-reduced-motion:reduce){.env-reveal{display:none}}