:root{--near-white:#fdfcfb;--ivory:#f0e9e4;--blush:#e1d3cd;--dusty-rose:#d5c3bc;--taupe-rose:#c2b3ac;--olive:#857f65;--deep-olive:#787259;--olive-hover:#66604b;--greige:#a1988c;--ink:#423e30;--ink-soft:#67634e;--rose-accent:#706763;--error:#a8523f}*{box-sizing:border-box}body,html{padding:0;margin:0;background:var(--near-white);color:var(--ink);font-family:Inter,-apple-system,sans-serif}.serif{font-family:Cormorant Garamond,serif}button,input,select,textarea{font-family:inherit}a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--deep-olive);outline-offset:2px}.btn-primary{background:var(--deep-olive);color:var(--near-white);border:none;cursor:pointer}.btn-primary:hover:not(:disabled){background:var(--olive-hover)}.btn-primary:disabled{background:var(--greige);cursor:not-allowed}.btn-outline{background:var(--near-white);color:var(--deep-olive);border:1px solid var(--deep-olive);cursor:pointer}.btn-outline:hover,.pairing-option:hover{background:var(--dusty-rose)}.code-box{transition:border-color .15s ease,box-shadow .15s ease}.code-box:focus{outline:none;border-color:var(--deep-olive);box-shadow:0 0 0 3px rgba(120,114,89,.22)}.gate-overlay{position:fixed;inset:0;z-index:1000;display:flex;flex-direction:column;align-items:center;justify-content:center;background:var(--near-white);padding:24px;transition:opacity .32s ease,transform .32s ease;opacity:1;transform:translateX(0)}.gate-overlay.gate-exit{opacity:0;transform:translateX(-40px)}.gate-step{width:100%;transition:opacity .28s ease,transform .28s ease;opacity:1;transform:translateX(0)}.gate-step.gate-step-exit{opacity:0;transform:translateX(-32px)}.gate-step.gate-step-enter{opacity:0;transform:translateX(32px);transition:none}.reveal-enter{opacity:0;transform:translateX(32px);transition:opacity .32s ease,transform .32s ease}.reveal-enter.reveal-enter-active{opacity:1;transform:translateX(0)}@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}@media (max-width:480px){.guest-table-grid{grid-template-columns:1fr!important;gap:24px!important}}@keyframes pulse{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.15);opacity:.7}}.calendar-pulse{animation:pulse 1s ease-in-out infinite}