/* ============================================================
   KC-RSVP ⭐ CSS — XV Wonderland Signature · XV_AWR_12A
   Khal Calloway Studio
   ============================================================ */

/* ── SECCIÓN RSVP ── */
#rsvp.section {
  isolation: isolate;
  overflow: hidden;
  max-width: 620px;
  padding-top: clamp(70px, 15vw, 112px);
  padding-bottom: clamp(78px, 15vw, 118px);
  background:
    radial-gradient(ellipse 74% 46% at 50% 40%, rgba(100, 79, 44, .18), transparent 70%),
    linear-gradient(180deg, rgba(5, 7, 8, .28), rgba(8, 9, 12, .7));
}
#rsvp .kc-rsvp-forest-haze {
  position: absolute;
  z-index: -1;
  inset: -16% -18%;
  pointer-events: none;
  background:
    radial-gradient(ellipse 38% 28% at 10% 34%, rgba(100, 132, 118, .10), transparent 72%),
    radial-gradient(ellipse 36% 26% at 90% 70%, rgba(207, 166, 86, .11), transparent 74%),
    radial-gradient(ellipse 52% 28% at 50% 105%, rgba(53, 79, 73, .16), transparent 72%);
  filter: blur(20px);
}

/* ── BOSQUE DE HONGOS: decoración viva, aislada y sin hit area ── */
#rsvp .kc-rsvp-mushroom-grove {
  position: absolute;
  z-index: 50; /* Al frente del formulario (que tiene z-index: 1) */
  inset: 0;
  overflow: hidden;
  pointer-events: none;
}
#rsvp .kc-rsvp-mushroom {
  position: absolute;
  display: block;
  color: rgba(189, 174, 131, .68);
  filter: drop-shadow(0 7px 9px rgba(0, 0, 0, .3));
  transform-origin: 50% 100%;
  animation: kcRsvpMushroomSway var(--mushroom-speed) ease-in-out infinite;
}
#rsvp .kc-rsvp-mushroom svg { display: block; width: 100%; height: 100%; overflow: visible; }
#rsvp .mushroom-stem { fill: rgba(204, 195, 166, .72); }
#rsvp .mushroom-cap { fill: #6c4a43; stroke: rgba(228, 208, 165, .48); stroke-width: 1.15; }
#rsvp .mushroom-spot { fill: rgba(238, 226, 188, .76); }
#rsvp .mushroom-ground { fill: none; stroke: rgba(128, 147, 93, .62); stroke-width: 1.1; stroke-linecap: round; }
#rsvp .kc-rsvp-mushroom-1 { --mushroom-speed: 7.3s; width: 54px; left: 1%; bottom: 8%; }
#rsvp .kc-rsvp-mushroom-2 { --mushroom-speed: 6.1s; width: 37px; left: 10%; top: 19%; animation-delay: -2.4s; opacity: .78; }
#rsvp .kc-rsvp-mushroom-3 { --mushroom-speed: 8.1s; width: 49px; right: 2%; bottom: 14%; animation-delay: -3.2s; }
#rsvp .kc-rsvp-mushroom-4 { --mushroom-speed: 5.7s; width: 34px; right: 10%; top: 23%; animation-delay: -1.5s; opacity: .82; }
#rsvp > :not(.kc-rsvp-forest-haze):not(.kc-rsvp-mushroom-grove) { position: relative; z-index: 1; }
#rsvp[data-state='submitting'] .kc-rsvp-mushroom { animation-duration: calc(var(--mushroom-speed) * .68); }
#rsvp[data-state='confirmed'] .kc-rsvp-mushroom { animation: kcRsvpMushroomBloom .48s ease-out both; }
#rsvp[data-state='submitting'] .kc-rsvp-forest-haze { animation: kcRsvpHazeWake 1.8s ease-in-out infinite alternate; }
#rsvp .kc-rsvp-form[data-state='submitting']::before,
#rsvp .kc-rsvp-form[data-state='submitting']::after { animation: kcRsvpBorderSignal 1.25s ease-in-out infinite alternate; }

/* ── ENCABEZADO RSVP ── */
#rsvp .kc-rsvp-ritual-mark {
  width: 82px;
  margin: 0 auto 13px;
  color: rgba(231, 199, 126, .7);
}
#rsvp .kc-rsvp-ritual-mark svg {
  display: block;
  width: 100%;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.15;
  stroke-linecap: round;
  stroke-linejoin: round;
}
#rsvp .kc-rsvp-eyebrow { color: #d8b56f; font-size: .57rem; letter-spacing: .27em; }
#rsvp .kc-rsvp-title   { margin: 0; font-size: clamp(2.35rem, 10vw, 3.65rem); letter-spacing: -.02em; }
#rsvp .kc-rsvp-title em { color: #efce8b; }
#rsvp .kc-rsvp-intro {
  max-width: 21rem;
  margin: 15px auto 0;
  color: rgba(232, 222, 202, .72);
  font-family: var(--f-display);
  font-size: 1.08rem;
  font-style: italic;
  line-height: 1.48;
}

/* ── FORM CONTAINER ── */
#rsvp .kc-rsvp-form {
  position: relative;
  overflow: hidden;
  max-width: 430px;
  margin: 28px auto 0;
  padding: clamp(24px, 6vw, 34px);
  border: 1px solid rgba(218, 181, 103, .42);
  border-radius: 22px 7px 22px 7px;
  background:
    linear-gradient(125deg, rgba(241, 224, 183, .075), transparent 34%),
    linear-gradient(148deg, rgba(26, 31, 29, .94), rgba(8, 10, 12, .97));
  box-shadow:
    inset 0 1px 0 rgba(255, 235, 187, .12),
    inset 0 0 0 7px rgba(236, 204, 136, .025),
    0 23px 48px rgba(0, 0, 0, .4);
  text-align: left;
}
#rsvp .kc-rsvp-form::before,
#rsvp .kc-rsvp-form::after {
  position: absolute;
  width: 48px;
  height: 48px;
  border-color: rgba(224, 188, 112, .62);
  content: '';
  pointer-events: none;
}
#rsvp .kc-rsvp-form::before { top: 9px; left: 9px; border-top: 1px solid; border-left: 1px solid; }
#rsvp .kc-rsvp-form::after  { right: 9px; bottom: 9px; border-right: 1px solid; border-bottom: 1px solid; }

/* ── CAMPOS ── */
#rsvp .kc-rsvp-field-group { position: relative; z-index: 1; margin-top: 21px; }
#rsvp .kc-rsvp-field-group:first-child { margin-top: 0; }
#rsvp .kc-rsvp-field-group label {
  display: block;
  margin-bottom: 9px;
  color: rgba(237, 205, 137, .9);
  font-family: var(--f-eyebrow);
  font-size: .55rem;
  font-weight: 600;
  letter-spacing: .21em;
  text-transform: uppercase;
}
#rsvp .kc-rsvp-field-group input,
#rsvp .kc-rsvp-field-group textarea,
#rsvp .kc-rsvp-field-group select {
  width: 100%;
  min-height: 52px;
  padding: 13px 15px;
  border: 1px solid rgba(223, 192, 126, .32);
  border-radius: 4px;
  background: rgba(3, 6, 7, .52);
  box-shadow: inset 0 1px 0 rgba(255, 239, 206, .045);
  color: #f1e6cf;
  font-family: var(--f-body);
  font-size: 16px;
  line-height: 1.3;
  transition: border-color .25s ease, box-shadow .25s ease, background .25s ease;
}
#rsvp .kc-rsvp-field-group select option { background: #131019; color: var(--ivory); }
#rsvp .kc-rsvp-field-group input::placeholder { color: rgba(201, 192, 174, .65); }
#rsvp .kc-rsvp-field-group input:hover,
#rsvp .kc-rsvp-field-group select:hover { border-color: rgba(232, 199, 126, .55); }
#rsvp .kc-rsvp-field-group input:focus-visible,
#rsvp .kc-rsvp-field-group select:focus-visible {
  border-color: #f0cf8e;
  outline: none;
  background: rgba(9, 15, 15, .72);
  box-shadow: 0 0 0 3px rgba(222, 181, 96, .13), inset 0 1px 0 rgba(255, 239, 206, .08);
}

/* ── NOTA DE PASES ── */
#rsvp .kc-rsvp-allocation-note {
  position: relative;
  z-index: 1;
  margin: 16px 0 0;
  padding: 9px 11px;
  border-left: 1px solid rgba(217, 180, 104, .48);
  color: rgba(231, 217, 187, .7);
  font-family: var(--f-body);
  font-size: .73rem;
  font-style: italic;
  line-height: 1.5;
}
#rsvp .kc-rsvp-allocation-note.is-warning { border-left-color: #dd9d79; color: #f1c1a0; background: rgba(105, 50, 38, .18); }

/* ── BOTÓN SUBMIT: sendero de bosque, sin amarillo ni hojas ── */
#rsvp .kc-rsvp-submit {
  position: relative;
  isolation: isolate;
  z-index: 1;
  width: 100%;
  min-height: 56px;
  margin-top: 24px;
  padding: 13px 18px;
  overflow: hidden;
  border: 1px solid rgba(167, 182, 125, .54);
  border-radius: 7px 15px 7px 14px;
  background:
    radial-gradient(ellipse 78% 140% at 50% 0%, rgba(94, 123, 80, .24), transparent 64%),
    linear-gradient(145deg, rgba(29, 17, 22, .98), rgba(11, 9, 11, .98));
  box-shadow: inset 0 1px 0 rgba(225, 232, 190, .11), inset 0 -1px 0 rgba(0, 0, 0, .42), 0 11px 22px rgba(0, 0, 0, .3);
  color: #f1ead5;
  font-family: var(--f-eyebrow);
  font-size: .61rem;
  font-weight: 600;
  letter-spacing: .21em;
  text-transform: uppercase;
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
  transition: transform .22s ease, border-color .3s ease, box-shadow .3s ease, background .3s ease;
}
#rsvp .kc-rsvp-submit::after {
  position: absolute;
  z-index: -1;
  inset: auto 11% 7px;
  height: 1px;
  background: linear-gradient(90deg, transparent, rgba(215, 222, 169, .58), transparent);
  content: '';
  opacity: .7;
}
#rsvp .kc-rsvp-submit-label { position: relative; z-index: 1; }
#rsvp .kc-rsvp-submit:hover:not(:disabled) {
  transform: translateY(-2px);
  border-color: rgba(205, 214, 160, .76);
  background:
    radial-gradient(ellipse 78% 140% at 50% 0%, rgba(116, 145, 90, .34), transparent 64%),
    linear-gradient(145deg, rgba(31, 54, 39, .98), rgba(10, 23, 15, .98));
  box-shadow: inset 0 1px 0 rgba(235, 240, 203, .16), 0 15px 26px rgba(0, 0, 0, .38), 0 0 18px rgba(103, 139, 87, .12);
}
#rsvp .kc-rsvp-submit:focus-visible { outline: 2px solid #f4ecd3; outline-offset: 4px; }
#rsvp .kc-rsvp-submit:active:not(:disabled) { transform: translateY(0) scale(.978); }
#rsvp .kc-rsvp-submit:disabled { cursor: wait; }
#rsvp .kc-rsvp-form[data-state='submitting'] .kc-rsvp-submit {
  border-color: rgba(205, 214, 160, .72);
  animation: none;
  position: relative;
  overflow: hidden;
  color: transparent !important;
}
/* Spinner ring dentro del botón mientras carga */
#rsvp .kc-rsvp-form[data-state='submitting'] .kc-rsvp-submit::after {
  content: '';
  position: absolute;
  inset: 0;
  margin: auto;
  width: 20px;
  height: 20px;
  border: 2px solid rgba(232, 199, 126, .25);
  border-top-color: rgba(232, 199, 126, .90);
  border-radius: 50%;
  animation: kcSpinnerRing .8s linear infinite;
}
/* Shimmer sweep sobre el botón mientras carga */
#rsvp .kc-rsvp-form[data-state='submitting'] .kc-rsvp-submit::before {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(100deg, transparent 20%, rgba(255,239,193,.06) 50%, transparent 80%);
  animation: kcSubmitShimmer 1.4s ease-in-out infinite;
}
#rsvp .kc-rsvp-form[data-state='confirmed'] .kc-rsvp-submit { animation: none; }

/* XV_AWR_12F — obsidian/mycelium RSVP: no generic green. */
#rsvp.section { background: radial-gradient(ellipse 72% 44% at 50% 40%, rgba(96, 49, 62, .16), transparent 70%), linear-gradient(180deg, rgba(8, 7, 9, .28), rgba(10, 8, 10, .82)); }
#rsvp .kc-rsvp-form { border-color:rgba(211, 183, 137, .42); background:linear-gradient(125deg,rgba(214,183,145,.07),transparent 34%),linear-gradient(148deg,rgba(18,13,16,.96),rgba(7,7,9,.98)); }
#rsvp .kc-rsvp-submit { border-color:rgba(198,163,131,.66); background:radial-gradient(ellipse 84% 150% at 50% 0%,rgba(104,53,66,.28),transparent 66%),linear-gradient(145deg,rgba(29,17,22,.98),rgba(11,9,11,.98)); color:#f4e5cb; }
#rsvp .kc-rsvp-submit:hover:not(:disabled) { border-color:rgba(231,197,157,.84); background:radial-gradient(ellipse 84% 150% at 50% 0%,rgba(136,67,84,.36),transparent 66%),linear-gradient(145deg,rgba(43,22,31,.98),rgba(13,9,12,.98)); }
#rsvp .mushroom-cap { fill:#6f464d; stroke:rgba(245,213,181,.62); }
#rsvp .mushroom-stem { fill:rgba(229,213,187,.82); }
#rsvp .mushroom-ground { stroke:rgba(183,125,119,.68); }

/* ── STATUS / ERROR ── */
#rsvp .kc-rsvp-status {
  position: relative; z-index: 1;
  min-height: 1.5em;
  margin: 13px 0 0;
  color: rgba(237, 204, 134, .85);
  font-family: var(--f-display);
  font-size: .92rem;
  font-style: italic;
  text-align: center;
}
#rsvp .kc-rsvp-error {
  position: relative; z-index: 1;
  margin: 13px 0 0;
  padding: 10px 12px;
  border: 1px solid rgba(222, 145, 108, .38);
  border-left-width: 2px;
  border-radius: 3px;
  background: rgba(99, 44, 35, .27);
  color: #f0c1a3;
  font-family: var(--f-body);
  font-size: .78rem;
  line-height: 1.5;
}

/* ── TICKET HOST ── */
#rsvp .kc-rsvp-ticket-host { margin-top: 6px; }

/* ============================================================
   PASE DIGITAL / BOLETO VIP — DISEÑO WONDERLAND
   ============================================================ */
#rsvp .kc-ticket,
#kc-fs-ticket .kc-ticket {
  position: relative;
  overflow: hidden;
  max-width: 400px;
  margin-inline: auto;
  padding: clamp(28px, 8vw, 40px) clamp(20px, 6vw, 32px) 24px;
  border: 1px solid rgba(232, 199, 126, .56);
  border-radius: 24px 8px 24px 8px;
  background:
    radial-gradient(circle at 13% 8%,  rgba(248, 226, 177, .19), transparent 25%),
    radial-gradient(circle at 88% 91%, rgba(86, 127, 116, .13),  transparent 28%),
    linear-gradient(138deg, rgba(54, 45, 29, .98), rgba(13, 17, 17, .98) 67%);
  box-shadow:
    inset 0 1px 0 rgba(255, 239, 193, .15),
    inset 0 0 0 7px rgba(242, 210, 145, .035),
    0 25px 52px rgba(0, 0, 0, .44);
  text-align: center;
  animation: kcTicketReveal .75s cubic-bezier(.2, 1, .3, 1) both;
}
/* Borde interior decorativo */
#rsvp .kc-ticket::before,
#kc-fs-ticket .kc-ticket::before {
  position: absolute;
  inset: 9px;
  border: 1px solid rgba(233, 199, 127, .13);
  border-radius: 17px 4px 17px 4px;
  content: '';
  pointer-events: none;
}

/* ── Partículas flotantes del ticket ── */
.kc-ticket-particles { position: absolute; inset: 0; pointer-events: none; overflow: hidden; }
.kc-tp {
  position: absolute;
  color: rgba(235, 198, 118, .22);
  font-size: .65rem;
  animation: kcTpFloat 8s ease-in-out infinite;
}
.kc-tp-1 { top: 12%;  left: 8%;   animation-delay: 0s;   font-size: .5rem; }
.kc-tp-2 { top: 18%;  right: 9%;  animation-delay: 2s;   font-size: .45rem; }
.kc-tp-3 { bottom: 28%; left: 12%; animation-delay: 4s; }
.kc-tp-4 { bottom: 20%; right: 10%; animation-delay: 6s; font-size: .4rem; }

/* ── Header ornamento ── */
.kc-ticket-header { position: relative; z-index: 1; margin-bottom: 10px; }
.kc-ticket-crown-ornament {
  color: rgba(236, 198, 118, .6);
  font-family: var(--f-eyebrow);
  font-size: .52rem;
  letter-spacing: .22em;
}

/* ── Status ── */
.kc-ticket-status {
  position: relative; z-index: 1;
  margin: 0;
  color: #e7c37e;
  font-family: var(--f-eyebrow);
  font-size: .49rem;
  letter-spacing: .25em;
  text-transform: uppercase;
}

/* ── Evento / celebrante ── */
.kc-ticket-event {
  position: relative; z-index: 1;
  margin: 10px 0 0;
  color: #f8ecd2;
  font-family: var(--f-display);
  font-size: clamp(1.5rem, 6vw, 1.9rem);
  font-weight: 500;
  line-height: 1.1;
  text-shadow: 0 2px 12px rgba(0, 0, 0, .25);
}
.kc-ticket-celebrant {
  position: relative; z-index: 1;
  margin: 6px 0 0;
  color: #efce8b;
  font-family: var(--f-display);
  font-size: clamp(1.15rem, 4.5vw, 1.45rem);
  font-style: italic;
  line-height: 1.2;
}

/* ── Línea divisoria ── */
.kc-ticket-rule {
  position: relative; z-index: 1;
  margin: 16px 0;
  color: rgba(226, 187, 113, .5);
  font-size: .6rem;
  letter-spacing: .15em;
}

/* ── Nombre invitado ── */
.kc-ticket-guest-label {
  position: relative; z-index: 1;
  margin: 0;
  color: rgba(233, 217, 184, .55);
  font-family: var(--f-eyebrow);
  font-size: .47rem;
  letter-spacing: .16em;
  text-transform: uppercase;
}
.kc-ticket-guest {
  position: relative; z-index: 1;
  margin: 7px 0 0;
  color: #fff0d0;
  font-family: var(--f-display);
  font-size: clamp(1.4rem, 5.5vw, 1.8rem);
  font-style: italic;
  line-height: 1.15;
}

/* ── Pases ── */
.kc-ticket-passes {
  position: relative; z-index: 1;
  display: inline-block;
  margin-top: 10px;
  padding: 6px 14px;
  border: 1px solid rgba(230, 191, 113, .38);
  border-radius: 999px;
  background: rgba(14, 17, 16, .36);
  color: #efcd8e;
  font-family: var(--f-eyebrow);
  font-size: .53rem;
  letter-spacing: .19em;
  text-transform: uppercase;
}

/* ── Fecha ── */
.kc-ticket-date {
  position: relative; z-index: 1;
  margin-top: 10px;
  color: rgba(230, 194, 126, .8);
  font-family: var(--f-eyebrow);
  font-size: .58rem;
  letter-spacing: .2em;
  text-transform: uppercase;
}

/* ============================================================
   QR — PROTAGONISTA VISUAL DEL PASE
   ============================================================ */
.kc-ticket-qr-wrap {
  position: relative;
  z-index: 1;
  margin: 22px auto 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 10px;
}

/* Frame ornamental alrededor del QR */
.kc-ticket-qr-frame {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 12px;
  border-radius: 10px;
  background: rgba(239, 227, 196, .06);
  box-shadow:
    0 0 0 1px rgba(230, 190, 110, .3),
    0 0 28px rgba(200, 160, 80, .12),
    inset 0 1px 0 rgba(255, 240, 195, .08);
}

/* Esquinas decorativas doradas */
.kc-qr-corner {
  position: absolute;
  width: 14px; height: 14px;
  border-color: rgba(220, 180, 100, .75);
  border-style: solid;
  border-width: 0;
}
.kc-qr-corner-tl { top: 5px;    left: 5px;    border-top-width: 1.5px; border-left-width: 1.5px;   border-top-left-radius: 3px; }
.kc-qr-corner-tr { top: 5px;    right: 5px;   border-top-width: 1.5px; border-right-width: 1.5px;  border-top-right-radius: 3px; }
.kc-qr-corner-bl { bottom: 5px; left: 5px;    border-bottom-width: 1.5px; border-left-width: 1.5px;  border-bottom-left-radius: 3px; }
.kc-qr-corner-br { bottom: 5px; right: 5px;   border-bottom-width: 1.5px; border-right-width: 1.5px; border-bottom-right-radius: 3px; }

/* Imagen QR */
.kc-ticket-qr-img {
  display: block;
  width: 180px; height: 180px;
  border-radius: 4px;
  image-rendering: pixelated;
}

/* Hint debajo del QR */
.kc-ticket-qr-hint {
  margin: 0;
  color: rgba(220, 200, 158, .55);
  font-family: var(--f-eyebrow);
  font-size: .44rem;
  letter-spacing: .16em;
  text-transform: uppercase;
}

/* ── ID del pase ── */
.kc-ticket-id {
  position: relative; z-index: 1;
  margin-top: 14px;
  color: rgba(231, 212, 169, .45);
  font-family: var(--f-eyebrow);
  font-size: .44rem;
  letter-spacing: .22em;
  text-transform: uppercase;
}

/* ── Branding ── */
.kc-ticket-brand {
  position: relative; z-index: 1;
  margin-top: 10px;
  color: rgba(200, 175, 120, .28);
  font-family: var(--f-eyebrow);
  font-size: .38rem;
  letter-spacing: .18em;
  text-transform: uppercase;
}

/* ── Botón Guardar Pase (fuera del .kc-ticket) ── */
.kc-ticket-share {
  margin-top: 16px;
  display: flex;
  justify-content: center;
}
.kc-ticket-share-btn {
  padding: 10px 22px;
  border: 1px solid rgba(220, 185, 105, .38);
  border-radius: 25px;
  background: rgba(220, 185, 105, .06);
  color: #e6c47a;
  font-family: var(--f-eyebrow);
  font-size: .58rem;
  letter-spacing: .18em;
  text-transform: uppercase;
  cursor: pointer;
  transition: background .3s ease, border-color .3s ease, color .3s ease;
}
.kc-ticket-share-btn:hover:not(:disabled) {
  background: rgba(220, 185, 105, .14);
  border-color: rgba(220, 185, 105, .6);
  color: #f5d98a;
}
.kc-ticket-share-btn:disabled { opacity: .55; cursor: wait; }

/* ============================================================
   MODO STANDALONE — CADENERO (?ticket=)
   ============================================================ */
body.kc-standalone-mode {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 100vh;
  background:
    radial-gradient(ellipse 80% 60% at 50% 30%, rgba(60, 48, 22, .9), transparent 72%),
    linear-gradient(170deg, #0a0d0a, #0e0c07);
}
#kc-fs-ticket {
  width: 100%;
  max-width: 440px;
  padding: 32px 20px 48px;
  margin-inline: auto;
  text-align: center;
}
.kc-fs-error {
  color: rgba(240, 193, 163, .8);
  font-family: var(--f-body);
  font-size: .9rem;
  font-style: italic;
}

/* ============================================================
   ANIMACIONES
   ============================================================ */
@keyframes kcRsvpBreath {
  from { box-shadow: inset 0 1px 0 rgba(225, 232, 190, .11), 0 9px 20px rgba(0, 0, 0, .27); }
  to   { box-shadow: inset 0 1px 0 rgba(225, 232, 190, .2), 0 13px 25px rgba(0, 0, 0, .36), 0 0 20px rgba(96, 132, 82, .16); }
}
@keyframes kcRsvpMushroomSway {
  0%, 100% { transform: rotate(-1.3deg) translateY(0); }
  50% { transform: rotate(2.2deg) translateY(-2px); }
}
@keyframes kcRsvpMushroomBloom {
  0% { transform: scale(.84) rotate(-2deg); opacity: .55; }
  65% { transform: scale(1.09) rotate(1.4deg); opacity: 1; }
  100% { transform: scale(1) rotate(0); opacity: 1; }
}
@keyframes kcRsvpHazeWake {
  from { opacity: .72; transform: scale(1); }
  to { opacity: 1; transform: scale(1.025); }
}
@keyframes kcRsvpBorderSignal {
  from { opacity: .42; }
  to { opacity: .92; }
}
@keyframes kcTicketReveal {
  from { opacity: 0; transform: translateY(28px) scale(.95); }
  to   { opacity: 1; transform: translateY(0)    scale(1);   }
}
@keyframes kcTpFloat {
  0%, 100% { transform: translateY(0) rotate(0deg);   opacity: .22; }
  50%       { transform: translateY(-9px) rotate(12deg); opacity: .45; }
}
@keyframes kcSpinnerRing {
  to { transform: rotate(360deg); }
}
@keyframes kcSubmitShimmer {
  0%   { transform: translateX(-100%); }
  100% { transform: translateX(100%); }
}

/* ── RESPONSIVE ── */
@media (min-width: 700px) {
  #rsvp.section  { max-width: 680px; }
  #rsvp .kc-rsvp-form { max-width: 460px; }
  #rsvp .kc-ticket,
  #kc-fs-ticket .kc-ticket { max-width: 420px; }
}

/* ── REDUCED MOTION ── */
@media (prefers-reduced-motion: reduce) {
  #rsvp .kc-rsvp-form[data-state='submitting'] .kc-rsvp-submit,
  #rsvp .kc-rsvp-form[data-state='confirmed'] .kc-rsvp-submit,
  #rsvp[data-state='submitting'] .kc-rsvp-forest-haze,
  #rsvp .kc-rsvp-form[data-state='submitting']::before,
  #rsvp .kc-rsvp-form[data-state='submitting']::after,
  #rsvp .kc-rsvp-mushroom,
  #rsvp .kc-ticket,
  #kc-fs-ticket .kc-ticket,
  .kc-tp { animation: none !important; }
}
