:root{color-scheme:dark;--black:#0a0a0c;--white:#fff;--accent:#e6c8ff;--muted:#b8b0c7;--nav-rail-item-size:84px;--nav-rail-icon-size:62px;--nav-rail-width:calc(var(--nav-rail-item-size) + max(18px, env(safe-area-inset-right)))}*{box-sizing:border-box;padding:0;margin:0}body,html{height:100%}body{font-family:var(--font-ui),"Helvetica Neue",Helvetica,Arial,sans-serif;background:var(--black);color:var(--white)}a{color:inherit;text-decoration:none}button{font-family:inherit}.ui-text{font-family:var(--font-ui),"Helvetica Neue",Helvetica,Arial,sans-serif;letter-spacing:.02em}.editorial-title{font-weight:600;letter-spacing:.01em}.editorial-text,.editorial-title{font-family:var(--font-editorial),"Bodoni MT","Didot","Times New Roman",serif}.editorial-text{font-weight:400;line-height:1.6}.editorial-signoff{font-family:var(--font-editorial),"Bodoni MT","Didot","Times New Roman",serif;font-weight:500;letter-spacing:.02em}.page{min-height:100vh;min-height:100dvh;position:relative;z-index:2;display:flex;flex-direction:column;padding:var(--page-top-offset,calc(env(safe-area-inset-top) + 35px)) 20px 40px;gap:24px}.submit-page{padding-right:calc(var(--nav-rail-width) + 20px)}.site-background{position:fixed;inset:0;background-image:url(/images/landing_page.jpg);background-size:cover;background-position:50%;background-repeat:no-repeat;z-index:0}.site-header{position:fixed;inset:0 0 auto;width:100%;display:flex;justify-content:center;padding:calc(env(safe-area-inset-top) + 24px) 20px 0;z-index:1;pointer-events:none}.site-logo{display:inline-flex;pointer-events:auto}.site-logo-image{width:min(260px,72vw);height:auto}.landing-page{position:relative;min-height:100vh;min-height:100dvh;padding:calc(env(safe-area-inset-top) + 64px) 20px calc(env(safe-area-inset-bottom) + 28px)}.landing-content{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:24px;width:100%;flex:1 1;padding-block:clamp(12px,4vh,36px);padding-right:var(--nav-rail-width);position:relative}.invite-page .landing-content{padding-right:20px}.landing-action,.landing-card{width:min(100%,420px)}.landing-card{position:relative;z-index:3}.invite-card{text-align:center}.invite-gate{display:flex;flex-direction:column;align-items:center;gap:16px}.invite-title{font-size:clamp(1.7rem,5vw,2.2rem)}.invite-copy{font-size:1rem}.invite-form{width:100%}.invite-label{font-size:.8rem;text-transform:uppercase;letter-spacing:.18em;color:#5a5566}.invite-input{text-align:center;font-size:1.1rem;letter-spacing:.2em}.invite-error{color:#b04545}.invite-badge{align-self:center;background:hsla(0,0%,100%,.82);color:#3a3144;border:1px solid rgba(58,49,68,.18);box-shadow:0 4px 10px rgba(26,18,44,.08);font-weight:600}.invite-effects-layer{position:fixed;inset:0;pointer-events:none;overflow:hidden;z-index:4;isolation:isolate;animation:invite-effects-fade var(--invite-effects-duration,3.8s) ease-out forwards}.invite-effects-debug{outline:1px dashed rgba(245,233,255,.6);outline-offset:-2px}.invite-bubbles,.invite-confetti,.invite-fireworks-canvas{position:absolute;inset:0}.invite-fireworks-canvas{z-index:5}.invite-fireworks-canvas__surface{position:fixed;inset:0;width:100%;height:100%;pointer-events:none;z-index:5}.invite-bubbles{--bubble-travel:120vh;--bubble-top-stop:2vh;--bubble-bottom-start:-6vh}@supports (height:1dvh){.invite-bubbles{--bubble-travel:120dvh;--bubble-top-stop:15dvh;--bubble-bottom-start:-6dvh}}.invite-confetti-piece{position:absolute;top:0;left:var(--confetti-left);width:var(--confetti-size);height:calc(var(--confetti-size) * var(--confetti-height-mult, .4));background:linear-gradient(135deg,var(--confetti-color-1),var(--confetti-color-2));border-radius:4px;opacity:1;filter:drop-shadow(0 2px 6px rgba(255,209,112,.45));animation:invite-confetti-fall var(--confetti-duration,3.2s) ease-in both;animation-delay:var(--confetti-delay,0s)}.invite-bubble{position:absolute;bottom:var(--bubble-bottom-start);left:var(--bubble-left);width:var(--bubble-size);height:var(--bubble-size);border-radius:999px;border:1px solid rgba(255,236,194,.75);background:radial-gradient(circle at 30% 30%,hsla(0,0%,100%,.85),rgba(255,231,171,.2) 55%,rgba(255,231,171,0) 70%);box-shadow:0 0 8px rgba(255,232,189,.4),inset 0 0 6px hsla(0,0%,100%,.6);--bubble-rise-end:calc(-1 * var(--bubble-travel) + var(--bubble-top-stop));opacity:0;animation-name:invite-bubble-rise,invite-bubble-holdfade;animation-duration:var(--bubble-rise-duration,3.2s),calc(var(--bubble-hold-duration, 1.2s) + var(--bubble-fade-duration, .6s));animation-timing-function:ease-out,ease-out;animation-delay:var(--bubble-delay,0s),calc(var(--bubble-delay, 0s) + var(--bubble-rise-duration, 3.2s));animation-fill-mode:both,forwards}@keyframes invite-effects-fade{0%,70%{opacity:1}to{opacity:0}}@keyframes invite-confetti-fall{0%{transform:translate3d(0,-12vh,0) rotate(0deg);opacity:1}10%{opacity:1}to{transform:translate3d(var(--confetti-drift,20px),125vh,0) rotate(var(--confetti-spin,540deg));opacity:0}}@keyframes invite-bubble-rise{0%{transform:translateZ(0) scale(.7);opacity:0}12%{opacity:1}to{transform:translate3d(var(--bubble-drift,6px),var(--bubble-rise-end),0) scale(1.05);opacity:1}}@keyframes invite-bubble-holdfade{0%,70%{transform:translate3d(var(--bubble-drift,6px),var(--bubble-rise-end),0) scale(1.05);opacity:1}to{transform:translate3d(var(--bubble-drift,6px),var(--bubble-rise-end),0) scale(1.05);opacity:0}}.invite-bubble--micro{border-width:.5px;border-color:rgba(255,236,194,.45);background:radial-gradient(circle at 40% 40%,hsla(0,0%,100%,.65),rgba(255,231,171,0) 70%);box-shadow:none}@media (max-width:480px){.invite-bubble{box-shadow:0 0 4px rgba(255,232,189,.35),inset 0 0 3px hsla(0,0%,100%,.5)}.invite-bubble--micro{border-color:rgba(255,236,194,.35)}}.landing-action{display:flex;justify-content:center}.card{background:var(--white);color:#1a1a1a;border-radius:20px;padding:20px;box-shadow:0 20px 50px rgba(0,0,0,.25)}.card .small-muted{color:#5a5566}.card.dark{color:var(--white)}.card.dark .small-muted{color:#cfc7dd}.button{background:#f5e9ff;color:#2f1c3a;border:none;border-radius:999px;padding:12px 20px;font-weight:600;font-size:.95rem;letter-spacing:.04em;cursor:pointer}.button.secondary{background:hsla(0,0%,100%,.1);color:var(--white);border:1px solid hsla(0,0%,100%,.2)}.card .button.secondary{background:#efe7fb;color:#2f1c3a;border:1px solid #d8cfe8}.input,.textarea{width:100%;border-radius:14px;border:1px solid hsla(0,0%,100%,.2);background:hsla(0,0%,100%,.08);color:var(--white);padding:12px 14px;font-size:.95rem}.input::placeholder,.textarea::placeholder{color:hsla(0,0%,100%,.6)}.card .input,.card .textarea{border-color:#d8d2e2;background:#f5f2f9;color:#1a1a1a}.card .input::placeholder,.card .textarea::placeholder{color:#7a748a}.textarea{min-height:140px;resize:vertical}.form{display:flex;flex-direction:column;gap:16px}.badge{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:999px;font-size:.7rem;text-transform:uppercase;letter-spacing:.08em}.badge.pending{background:rgba(255,205,79,.28);color:#c28a00}.badge.approved{background:rgba(145,255,203,.2);color:#8dffcb}.badge.denied,.badge.rejected{background:hsla(0,100%,71%,.2);color:#ff6b6b}.submission-preview{color:#1a1a1a}.small-muted{color:var(--muted);font-size:.85rem;letter-spacing:.02em}.pics-header{display:flex;align-items:center;justify-content:space-between;gap:16px}.pics-upload-button{width:48px;height:48px;border-radius:50%;border:1px solid hsla(0,0%,100%,.3);background:hsla(0,0%,100%,.12);color:var(--white);font-size:1.8rem;line-height:1;display:grid;place-items:center;cursor:pointer}.pics-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:12px;gap:12px}.pics-card{position:relative;display:flex;flex-direction:column;gap:8px}.pics-pin{position:absolute;top:10px;left:10px;z-index:2}.pics-tile{width:100%;padding:0;text-align:left;border-radius:16px;overflow:hidden;background:hsla(0,0%,100%,.08);border:1px solid hsla(0,0%,100%,.12);cursor:pointer;display:block}.pics-tile:disabled{cursor:not-allowed;opacity:.7}.pics-image{width:100%;aspect-ratio:1/1;object-fit:cover;display:block}.pics-placeholder{width:100%;aspect-ratio:1/1;display:grid;place-items:center;color:hsla(0,0%,100%,.6);font-size:.85rem}.pics-name{padding:8px 10px 10px;font-size:.85rem;color:hsla(0,0%,100%,.8)}.pics-actions{display:flex;flex-wrap:wrap;gap:8px;padding:0 4px 4px}.pics-action-button{border-radius:999px;padding:6px 12px;font-size:.75rem;border:1px solid hsla(0,0%,100%,.25);background:rgba(20,20,28,.6);color:var(--white);cursor:pointer}.pics-action-button--danger{border-color:hsla(0,100%,74%,.6);color:#ff9f9f}.pics-action-button--primary{border-color:rgba(198,139,255,.6);color:#f6c3ff}.pics-featured{margin-top:16px;margin-bottom:24px;padding:16px;border-radius:20px;border:1px solid hsla(0,0%,100%,.12);background:hsla(0,0%,100%,.05);display:flex;flex-direction:column;gap:12px}.pics-featured-header{display:flex;justify-content:flex-start}.pics-featured-media img{width:100%;border-radius:18px;object-fit:cover;max-height:420px}.pics-modal-overlay{position:fixed;inset:0;background:rgba(8,8,16,.7);display:grid;place-items:center;z-index:50;padding:24px}.pics-modal{width:min(92vw,420px);background:#120f19;border-radius:18px;padding:20px;border:1px solid hsla(0,0%,100%,.12);box-shadow:0 20px 60px rgba(0,0,0,.45)}.pics-modal-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.pics-modal-close{background:transparent;border:none;color:var(--white);font-size:1.1rem;cursor:pointer}.pics-viewer-overlay{position:fixed;inset:0;z-index:60;background:rgba(8,8,16,.82);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);display:grid;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left)}.pics-viewer-close{position:absolute;top:calc(env(safe-area-inset-top) + 16px);right:calc(env(safe-area-inset-right) + 16px);width:40px;height:40px;border-radius:999px;border:1px solid hsla(0,0%,100%,.35);background:rgba(20,20,28,.7);color:var(--white);font-size:1.2rem;display:grid;place-items:center;cursor:pointer;z-index:2}.pics-viewer-scroll{position:relative;height:100%;width:100%;overflow-y:auto;scroll-snap-type:y mandatory;scroll-behavior:smooth}.pics-viewer-scroll::-webkit-scrollbar{display:none}.pics-viewer-slide{height:100%;width:100%;scroll-snap-align:start;display:flex;flex-direction:column;justify-content:center;align-items:center;padding:32px 20px 40px;gap:16px}.pics-viewer-image{max-width:min(92vw,520px);max-height:70vh;width:auto;height:auto;object-fit:contain;border-radius:20px;box-shadow:0 20px 50px rgba(0,0,0,.45)}.pics-viewer-placeholder{color:hsla(0,0%,100%,.6);font-size:.95rem}.pics-viewer-download{display:inline-flex;align-items:center;justify-content:center;padding:10px 18px;border-radius:999px;border:1px solid hsla(0,0%,100%,.35);background:rgba(20,20,28,.7);color:var(--white);font-size:.95rem;text-decoration:none;cursor:pointer}.pics-viewer-name{font-size:1rem;color:hsla(0,0%,100%,.85);text-align:center}.nav-shell{position:relative;min-height:100vh}.nav-shell--rail .page:not(.landing-page){padding-right:calc(var(--nav-rail-width) + 20px)}.submit-page .form,.submit-page>.button,.submit-page>header{width:min(100%,520px)}.rsvp-page .input,.rsvp-page .textarea,.submit-page .input,.submit-page .textarea{background:rgba(8,8,16,.55);border-color:hsla(0,0%,100%,.28);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.icon-rail{position:fixed;top:clamp(150px,22vh,230px);right:calc(var(--nav-rail-width) - var(--nav-rail-item-size));gap:16px;z-index:30}.icon-rail,.icon-rail-link{display:flex;flex-direction:column}.icon-rail-link{position:relative;align-items:center;justify-content:flex-start;gap:6px;width:var(--nav-rail-item-size);height:var(--nav-rail-item-size);padding:6px 6px 8px;text-align:center;border-radius:50%;background:#dcc7a3;border:1px solid #ead8b8;box-shadow:0 0 10px hsla(40,46%,75%,.45),0 8px 16px rgba(0,0,0,.35)}.icon-rail-icon{width:var(--nav-rail-icon-size);height:var(--nav-rail-icon-size);border-radius:50%;overflow:hidden;display:grid;place-items:center;padding:0;background:transparent;border:none;box-shadow:none}.icon-rail-link.active{border-color:#b59d73;box-shadow:0 0 6px hsla(38,35%,67%,.5),inset 0 0 6px rgba(0,0,0,.25)}.icon-rail-link:active{border-color:#ad966a;box-shadow:0 0 4px hsla(36,29%,59%,.45),inset 0 0 10px rgba(0,0,0,.35)}.icon-rail-image{display:block;width:100%;height:100%;aspect-ratio:1/1;object-fit:cover;border-radius:50%;filter:saturate(.9) contrast(.95)}.icon-rail-label{font-size:.68rem;text-transform:lowercase;color:#2b2417;font-weight:400;letter-spacing:.04em;line-height:1.1}.drawer-handle{position:fixed;left:max(6px,env(safe-area-inset-left));top:50%;transform:translateY(-50%);width:30px;height:72px;border-radius:999px;border:1px solid hsla(0,0%,100%,.15);background:rgba(10,10,20,.45);display:grid;place-items:center;z-index:40}.drawer-handle span{width:4px;height:38px;border-radius:999px;background:hsla(0,0%,100%,.5)}.drawer-overlay{position:fixed;inset:0;background:rgba(5,5,12,.65);opacity:0;pointer-events:none;transition:opacity .2s ease;z-index:35}.drawer-overlay.open{opacity:1;pointer-events:auto}.drawer-panel{position:fixed;inset:0 auto 0 0;width:min(82vw,320px);background:rgba(8,8,16,.88);border-right:1px solid hsla(0,0%,100%,.08);padding:28px 22px;display:flex;flex-direction:column;gap:18px;transform:translateX(-100%);transition:transform .22s ease;z-index:40}.drawer-panel.open{transform:translateX(0)}.drawer-header{display:flex;align-items:center;justify-content:space-between}.drawer-title{font-size:.65rem;text-transform:lowercase;letter-spacing:.12em;color:hsla(0,0%,100%,.45);font-weight:300}.drawer-close{background:transparent;border:none;color:hsla(0,0%,100%,.7);font-size:1.15rem;line-height:1;cursor:pointer}.drawer-links{display:flex;flex-direction:column;gap:12px}.drawer-admin{margin-top:auto;padding-top:16px}.drawer-admin-link{display:flex;align-items:center;justify-content:center;min-height:44px;padding:10px 18px;border-radius:999px;background:hsla(0,0%,100%,.08);border:1px solid hsla(0,0%,100%,.12);color:hsla(0,0%,100%,.72);font-size:.95rem;font-weight:400;letter-spacing:.02em;text-decoration:none;box-shadow:0 0 14px hsla(0,0%,100%,.08);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.drawer-link{padding:6px 0 10px;border-radius:0;background:transparent;border-bottom:1px solid hsla(0,0%,100%,.06);display:flex;flex-direction:column;gap:4px}.drawer-link.active{border-bottom-color:hsla(0,0%,100%,.35)}.drawer-link-label{font-size:1.05rem;font-weight:400;text-transform:lowercase;letter-spacing:.03em}.drawer-link-subtext{font-size:.72rem;color:hsla(0,0%,100%,.45);line-height:1.2}.drawer-link.active .drawer-link-label{text-shadow:0 0 8px hsla(0,0%,100%,.35)}.tone-blue .drawer-link-label{color:#8fb4ff}.tone-pink .drawer-link-label{color:#f4a6ff}.tone-orange .drawer-link-label{color:#ffb37c}.tone-green .drawer-link-label{color:#9cf5c0}.tone-purple .drawer-link-label{color:#d0b2ff}.notifications-modal-overlay{position:fixed;inset:0;background:rgba(8,6,15,.75);display:flex;align-items:center;justify-content:center;padding:24px;z-index:50}.notifications-modal{width:min(420px,100%);background:rgba(20,16,34,.95);border-radius:18px;padding:20px;box-shadow:0 12px 40px rgba(0,0,0,.5);display:flex;flex-direction:column;gap:16px}.notifications-modal-header{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.notifications-modal-title{font-size:1.1rem;margin:0}.notifications-modal-close{border:none;background:transparent;color:inherit;font-size:1.1rem;cursor:pointer}.notifications-modal-actions{display:flex;gap:12px;flex-wrap:wrap}.notifications-modal-form{display:flex;flex-direction:column;gap:12px}.notifications-error{color:#ff9f9f;margin:0}.notifications-success{color:#9cf5c0;margin:0}.notification-toast{position:fixed;bottom:24px;right:24px;background:rgba(20,16,34,.92);border-radius:12px;padding:12px 16px;color:#fff;box-shadow:0 10px 30px rgba(0,0,0,.4);z-index:60}@media (max-width:380px){:root{--nav-rail-item-size:72px;--nav-rail-icon-size:54px;--nav-rail-width:calc(var(--nav-rail-item-size) + max(12px, env(safe-area-inset-right)))}}@media (max-height:720px){.landing-page{padding-top:calc(env(safe-area-inset-top) + 48px);padding-bottom:calc(env(safe-area-inset-bottom) + 20px)}.landing-content{gap:16px;padding-block:clamp(8px,3vh,24px)}}