/* Public event RSVP window (en/alumni/partials/event_rsvp_modal.php). */
.rsvp[hidden]{display:none}
.rsvp{position:fixed;inset:0;z-index:10050;display:flex;align-items:center;justify-content:center;padding:1rem;font-family:inherit}
.rsvp__scrim{position:absolute;inset:0;background:color-mix(in srgb,var(--brand-ink,#1d1112) 62%,transparent);backdrop-filter:blur(4px);opacity:0;transition:opacity .2s ease}
.rsvp__box{position:relative;width:min(560px,100%);max-height:min(92vh,760px);display:flex;flex-direction:column;overflow:hidden;border-radius:24px;background:var(--surface);box-shadow:0 40px 90px -30px color-mix(in srgb,var(--brand-ink,#1d1112) 80%,transparent);opacity:0;transform:translateY(18px) scale(.98);transition:opacity .22s ease,transform .22s ease;outline:none}
.rsvp.is-open .rsvp__scrim{opacity:1}
.rsvp.is-open .rsvp__box{opacity:1;transform:none}
html.rsvp-lock,html.rsvp-lock body{overflow:hidden}
html.rsvp-lock .gate-help-hub{display:none}

/* Event header */
.rsvp__head{position:relative;display:flex;gap:1rem;align-items:flex-start;padding:1.4rem 3.6rem 1.4rem 1.5rem;color:var(--surface);background:linear-gradient(125deg,var(--brand-oxide) 0%,var(--brand-red) 70%,var(--brand-amber) 140%)}
.rsvp__head::after{content:"";position:absolute;right:-60px;top:-80px;width:220px;height:220px;border-radius:50%;border:2px solid color-mix(in srgb,var(--surface) 14%,transparent);pointer-events:none}
.rsvp__date{flex:none;display:grid;justify-items:center;align-content:center;width:3.6rem;height:3.9rem;border-radius:14px;background:var(--surface);color:var(--brand-oxide);box-shadow:0 10px 24px -14px color-mix(in srgb,var(--brand-ink,#1d1112) 90%,transparent)}
.rsvp__date[hidden]{display:none}
.rsvp__date span{font-size:.68rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--brand-amber-text)}
.rsvp__date strong{font-size:1.55rem;line-height:1}
.rsvp__event{min-width:0}
.rsvp__eyebrow{margin:0 0 .2rem;font-size:.72rem;font-weight:800;letter-spacing:.16em;text-transform:uppercase;color:color-mix(in srgb,var(--brand-yellow) 70%,var(--surface))}
.rsvp__head h2{margin:0;font-size:clamp(1.15rem,2.6vw,1.45rem);line-height:1.2;color:var(--surface)}
.rsvp__meta{display:flex;flex-wrap:wrap;gap:.2rem .9rem;margin:.45rem 0 0;font-size:.88rem;color:color-mix(in srgb,var(--surface) 86%,transparent)}
.rsvp__meta span:empty,.rsvp__meta [hidden]{display:none}
.rsvp__meta span+span::before{content:"";display:inline-block;width:4px;height:4px;margin:0 .6rem 0 -.5rem;border-radius:50%;vertical-align:middle;background:currentColor;opacity:.6}
.rsvp__close{position:absolute;top:1rem;right:1rem;z-index:1;display:inline-flex;width:2.3rem;height:2.3rem;align-items:center;justify-content:center;border:0;border-radius:50%;cursor:pointer;color:var(--surface);background:color-mix(in srgb,var(--surface) 16%,transparent);transition:background .15s ease}
.rsvp__close:hover{background:color-mix(in srgb,var(--surface) 28%,transparent)}
.rsvp__close:focus-visible{outline:3px solid var(--brand-yellow);outline-offset:2px}
.rsvp__close svg{width:1.1rem;height:1.1rem;fill:none;stroke:currentColor;stroke-width:2.4;stroke-linecap:round}

/* Body and steps */
.rsvp__body{flex:1;overflow-y:auto;padding:1.5rem}
.rsvp__step[hidden]{display:none}
.rsvp__step{animation:rsvp-in .25s ease}
@keyframes rsvp-in{from{opacity:0;transform:translateX(10px)}to{opacity:1;transform:none}}
.rsvp__q{margin:0 0 1rem;font-size:1.1rem;color:var(--text)}
.rsvp__alert{margin:0 0 1rem;padding:.75rem 1rem;border-radius:12px;font-size:.9rem;line-height:1.45;color:var(--brand-red);background:color-mix(in srgb,var(--brand-red) 8%,var(--surface));border:1px solid color-mix(in srgb,var(--brand-red) 25%,transparent)}
.rsvp__alert[hidden]{display:none}
.rsvp__fine{margin:1rem 0 0;font-size:.85rem;line-height:1.5;color:var(--muted)}
.rsvp__fine a{font-weight:700;color:var(--brand-oxide)}
.rsvp__fine[hidden]{display:none}

.rsvp__loading{display:grid;justify-items:center;gap:.8rem;padding:2rem 0;color:var(--muted)}
.rsvp__loading p{margin:0}
.rsvp__spinner{width:2.2rem;height:2.2rem;border-radius:50%;border:3px solid var(--line);border-top-color:var(--brand-oxide);animation:rsvp-spin .8s linear infinite}
@keyframes rsvp-spin{to{transform:rotate(360deg)}}
.rsvp__closed h3{margin:0 0 .5rem;font-size:1.15rem;color:var(--text)}
.rsvp__closed p{margin:0;color:var(--text-2);line-height:1.55}

/* Signed-in member */
.rsvp__member{display:flex;align-items:center;gap:.9rem;margin-bottom:1.4rem;padding:1rem;border-radius:16px;background:var(--brand-amber-soft);border:1px solid var(--brand-amber-line)}
.rsvp__member[hidden]{display:none}
.rsvp__member>div{flex:1;display:grid;gap:.1rem;min-width:0}
.rsvp__member strong{color:var(--text)}
.rsvp__member>div span{font-size:.86rem;color:var(--text-2)}
.rsvp__avatar{flex:none;display:inline-flex;width:2.6rem;height:2.6rem;align-items:center;justify-content:center;border-radius:50%;font-weight:800;color:var(--surface);background:linear-gradient(135deg,var(--brand-oxide),var(--brand-amber))}

/* Who's coming */
.rsvp__options{display:grid;gap:.75rem}
.rsvp__option{display:flex;align-items:center;gap:1rem;width:100%;padding:1rem 1.1rem;border-radius:16px;border:1.5px solid var(--line);background:var(--surface);color:var(--text);text-align:left;font:inherit;cursor:pointer;transition:border-color .15s ease,box-shadow .15s ease,transform .15s ease}
.rsvp__option:hover,.rsvp__option:focus-visible{border-color:var(--brand-oxide);box-shadow:0 14px 30px -22px color-mix(in srgb,var(--brand-oxide) 90%,transparent);transform:translateY(-1px);outline:none}
.rsvp__icon{flex:none;display:inline-flex;width:2.8rem;height:2.8rem;align-items:center;justify-content:center;border-radius:14px;color:var(--brand-oxide);background:var(--brand-oxide-soft,color-mix(in srgb,var(--brand-oxide) 9%,var(--surface)))}
.rsvp__icon svg{width:1.45rem;height:1.45rem;fill:currentColor}
.rsvp__option-text{flex:1;display:grid;gap:.15rem;min-width:0}
.rsvp__option-text strong{font-size:1rem}
.rsvp__option-text span{font-size:.86rem;color:var(--muted)}
.rsvp__chev{font-weight:800;color:var(--brand-oxide);transition:transform .15s ease}
.rsvp__option:hover .rsvp__chev{transform:translateX(3px)}

/* Forms */
.rsvp__seg{display:inline-flex;gap:.25rem;margin:0 0 1rem;padding:.25rem;border:0;border-radius:999px;background:var(--brand-ikota-soft,color-mix(in srgb,var(--line) 40%,var(--surface)))}
.rsvp__seg legend{float:left;margin:0 .5rem 0 .6rem;padding:0;align-self:center;line-height:2.1rem}
.rsvp__seg label{position:relative;cursor:pointer}
.rsvp__seg input{position:absolute;opacity:0;pointer-events:none}
.rsvp__seg span{display:inline-block;padding:.45rem .95rem;border-radius:999px;font-size:.86rem;font-weight:700;color:var(--text-2);transition:background .15s ease,color .15s ease}
.rsvp__seg input:checked+span{color:var(--surface);background:var(--brand-oxide)}
.rsvp__seg input:focus-visible+span{outline:3px solid var(--brand-amber);outline-offset:1px}
.rsvp__label{font-size:.78rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.rsvp__grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.9rem 1rem}
.rsvp__field{display:grid;gap:.35rem;min-width:0;align-content:start}
.rsvp__field--wide{grid-column:1/-1}
.rsvp__field label{font-size:.86rem;font-weight:700;color:var(--text)}
.rsvp__field em{font-style:normal;font-weight:500;color:var(--muted)}
.rsvp__field small{font-size:.78rem;color:var(--muted)}
.rsvp__field input{width:100%;padding:.75rem .9rem;border-radius:12px;border:1.5px solid var(--line);background:var(--surface);font:inherit;color:var(--text);transition:border-color .15s ease,box-shadow .15s ease}
.rsvp__field input:focus{outline:none;border-color:var(--brand-oxide);box-shadow:0 0 0 4px color-mix(in srgb,var(--brand-oxide) 14%,transparent)}
.rsvp__field input.is-invalid{border-color:var(--brand-red);box-shadow:0 0 0 4px color-mix(in srgb,var(--brand-red) 12%,transparent)}
.rsvp__privacy{display:flex;gap:.55rem;align-items:flex-start}
.rsvp__privacy svg{flex:none;width:1.05rem;height:1.05rem;margin-top:.1rem;fill:var(--brand-green)}
.rsvp__hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}

/* Buttons */
.rsvp__actions{display:flex;justify-content:space-between;gap:.75rem;margin-top:1.4rem}
.rsvp__actions--center{justify-content:center;flex-wrap:wrap}
.rsvp__btn{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:.45rem;padding:.78rem 1.4rem;border-radius:999px;border:1.5px solid transparent;font:inherit;font-weight:700;font-size:.95rem;text-decoration:none;cursor:pointer;transition:background .15s ease,color .15s ease,transform .15s ease}
.rsvp__btn svg{width:1.05rem;height:1.05rem;fill:currentColor}
.rsvp__btn--primary{color:var(--surface);background:var(--brand-oxide)}
.rsvp__btn--primary:hover{background:var(--brand-red);color:var(--surface)}
.rsvp__btn--ghost{color:var(--brand-oxide);background:var(--surface);border-color:var(--line)}
.rsvp__btn--ghost:hover{border-color:var(--brand-oxide);color:var(--brand-oxide)}
.rsvp__btn:focus-visible{outline:3px solid var(--brand-amber);outline-offset:2px}
.rsvp__btn:disabled{cursor:progress;opacity:.75}
.rsvp__btn[hidden]{display:none}
.rsvp__btn.is-loading{color:transparent}
.rsvp__btn.is-loading::after{content:"";position:absolute;width:1.1rem;height:1.1rem;border-radius:50%;border:2.5px solid color-mix(in srgb,var(--surface) 40%,transparent);border-top-color:var(--surface);animation:rsvp-spin .8s linear infinite}
.rsvp__member .rsvp__btn{flex:none;padding:.65rem 1.1rem}

/* Done */
.rsvp__done{text-align:center;padding:.5rem 0}
.rsvp__done h3{margin:.9rem 0 .4rem;font-size:1.35rem;color:var(--text)}
.rsvp__done>p{margin:0 auto;max-width:28rem;color:var(--text-2);line-height:1.55}
.rsvp__tick{display:inline-flex;width:4.2rem;height:4.2rem}
.rsvp__tick svg{width:100%;height:100%}
.rsvp__tick circle{fill:var(--brand-green);opacity:.14}
.rsvp__tick path{fill:none;stroke:var(--brand-green);stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:40;stroke-dashoffset:0}
.rsvp.is-celebrating .rsvp__tick path{animation:rsvp-tick .5s .1s ease both}
.rsvp.is-celebrating .rsvp__tick{animation:rsvp-pop .4s ease both}
@keyframes rsvp-tick{from{stroke-dashoffset:40}to{stroke-dashoffset:0}}
@keyframes rsvp-pop{0%{transform:scale(.6)}70%{transform:scale(1.08)}100%{transform:scale(1)}}
.rsvp__activate{display:grid;gap:.25rem;margin:1.2rem auto 0;max-width:26rem;padding:1rem 1.1rem;border-radius:16px;text-align:left;background:var(--brand-yellow-soft);border:1px solid var(--brand-yellow-line,color-mix(in srgb,var(--brand-yellow) 40%,transparent))}
.rsvp__activate[hidden]{display:none}
.rsvp__activate strong{color:var(--text)}
.rsvp__activate span{font-size:.88rem;color:var(--text-2);line-height:1.5}
.rsvp__activate a{justify-self:start;margin-top:.3rem;font-weight:800;color:var(--brand-oxide);text-decoration:none}
.rsvp__activate a:hover{text-decoration:underline}

@media (max-width:600px){
  .rsvp{align-items:flex-end;padding:0}
  .rsvp__box{width:100%;max-height:94vh;border-radius:22px 22px 0 0;transform:translateY(40px)}
  .rsvp__head{padding:1.2rem 3.4rem 1.2rem 1.1rem}
  .rsvp__body{padding:1.2rem 1.1rem 1.5rem}
  .rsvp__grid{grid-template-columns:minmax(0,1fr)}
  .rsvp__member{flex-wrap:wrap}
  .rsvp__member .rsvp__btn{width:100%}
  .rsvp__seg{display:flex;flex-wrap:wrap}
  .rsvp__actions{flex-direction:column-reverse}
  .rsvp__actions .rsvp__btn{width:100%}
}
@media (prefers-reduced-motion:reduce){
  .rsvp__scrim,.rsvp__box,.rsvp__step,.rsvp__option,.rsvp__btn{transition:none;animation:none}
  .rsvp.is-celebrating .rsvp__tick,.rsvp.is-celebrating .rsvp__tick path{animation:none}
}
