
/* ========================= GAME READY V2 ADDITIONS ========================= */
.v2-email-optin{border:2px solid rgba(23,169,181,.45)!important;background:#effbfc!important;border-radius:16px!important;padding:18px 20px!important;margin-top:20px!important;display:flex!important;gap:12px!important;align-items:flex-start!important}.v2-email-optin span{font-weight:800;color:var(--navy);line-height:1.5}.v2-email-optin small{display:block;font-weight:500;color:var(--muted);margin-top:3px}
.family-camp-panel,.referral-card,.next-camp-card,.credit-activity-card,.portal-notice-card{background:#fff;border:1px solid var(--line);border-radius:20px;box-shadow:0 10px 30px rgba(4,28,49,.06)}
.family-camp-panel{margin:0 0 26px;padding:25px}.family-camp-panel h3{font-size:34px;color:var(--navy);margin:3px 0 8px}.family-camp-panel p{color:var(--muted);line-height:1.65}.family-camp-actions{display:flex;gap:10px;flex-wrap:wrap}.family-chip{display:inline-flex;gap:7px;align-items:center;background:#eefafb;color:var(--teal2);font-weight:800;padding:8px 11px;border-radius:999px;font-size:12px}
.referral-card{padding:24px;background:linear-gradient(135deg,#071d33,#0d3c50);color:#fff}.referral-card h3{font-size:34px;margin:3px 0 8px}.referral-card p{color:#d2e4eb;line-height:1.65}.referral-card .ref-stats{display:flex;gap:14px;flex-wrap:wrap;margin:16px 0}.ref-stat{background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.12);border-radius:12px;padding:10px 13px}.ref-stat strong{font-size:24px;display:block}.ref-actions{display:flex;gap:9px;flex-wrap:wrap}.ref-actions .btn-outline{color:#fff;border-color:rgba(255,255,255,.45)}
.portal-v2-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:16px}.next-camp-card,.credit-activity-card{padding:22px}.next-camp-card h3,.credit-activity-card h3{font-size:30px;color:var(--navy);margin:4px 0 12px}.rsvp-status-row,.activity-row{display:flex;justify-content:space-between;gap:14px;align-items:center;border-top:1px solid var(--line);padding:13px 0}.rsvp-status-row:first-of-type,.activity-row:first-of-type{border-top:0}.rsvp-status-row small,.activity-row small{color:var(--muted)}.status-pill{font-size:11px;font-weight:900;border-radius:999px;padding:6px 9px;background:#edf8f9;color:var(--teal2);white-space:nowrap}.cancel-rsvp{font-size:12px;color:#a33;background:none;border:0;text-decoration:underline;cursor:pointer;font-weight:800}.credit-positive{color:#087f5b;font-weight:900}.credit-negative{color:#b42318;font-weight:900}.portal-notice-card{padding:14px 17px;margin:10px 0;background:#fffaf0;border-color:#f3d7a2;color:#73510d;font-size:13px;font-weight:700}
.transfer-form{display:flex;gap:8px;flex-wrap:wrap;margin-top:13px}.transfer-form input{min-width:180px;flex:1;padding:11px;border:1px solid var(--line);border-radius:10px}.transfer-form input[type=number]{max-width:95px;min-width:80px}.transfer-result{font-size:12px;margin-top:8px;color:var(--muted)}
.v2-signin-callout{background:#f4fbfb;border:1px solid rgba(23,169,181,.35);border-radius:16px;padding:18px;margin-top:15px}.v2-signin-callout strong{color:var(--navy)}
.lesson-booking-tabs{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin:0 0 22px}.lesson-booking-tabs button{border:1px solid var(--line);background:#fff;border-radius:999px;padding:11px 18px;font:inherit;font-weight:800;color:var(--navy);cursor:pointer}.lesson-booking-tabs button.active{background:var(--teal);color:#fff;border-color:var(--teal)}.lesson-booking-pane{display:none}.lesson-booking-pane.active{display:block}
.faq-search{width:min(760px,100%);display:block;margin:0 auto 26px;padding:15px 18px;border:1px solid var(--line);border-radius:13px;font:inherit}.faq-group{margin:28px 0}.faq-group h2{font-size:38px;color:var(--navy);margin-bottom:12px}.faq-item{background:#fff;border:1px solid var(--line);border-radius:13px;margin:9px 0;overflow:hidden}.faq-q{width:100%;background:none;border:0;text-align:left;padding:17px 19px;font:inherit;font-weight:800;color:var(--navy);cursor:pointer;display:flex;justify-content:space-between;gap:15px}.faq-a{display:none;padding:0 19px 18px;color:var(--muted);line-height:1.7}.faq-item.open .faq-a{display:block}
.tour-overlay{position:fixed;inset:0;background:rgba(2,15,28,.82);z-index:5000;display:none;align-items:center;justify-content:center;padding:18px}.tour-overlay.open{display:flex}.tour-card{width:min(780px,96vw);background:#fff;border-radius:24px;overflow:hidden;box-shadow:0 30px 90px rgba(0,0,0,.35)}.tour-preview{min-height:235px;background:linear-gradient(120deg,#061b31,#0e4157);padding:30px;color:#fff;display:flex;align-items:center;justify-content:center}.tour-mini-page{width:min(540px,100%);background:#fff;border-radius:13px;padding:15px;color:#071d33;box-shadow:0 14px 35px rgba(0,0,0,.25)}.tour-mini-row{height:26px;border-radius:7px;background:#edf3f5;margin:7px 0}.tour-mini-row.teal{width:62%;background:#a9e0e4}.tour-copy{padding:28px 30px}.tour-copy h2{font-size:42px;color:var(--navy);margin:3px 0 10px}.tour-copy p{color:var(--muted);line-height:1.7}.tour-controls{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-top:20px}.tour-dots{font-size:12px;color:var(--muted)}.tour-close{position:absolute;right:24px;top:20px;background:rgba(255,255,255,.12);color:#fff;border:1px solid rgba(255,255,255,.3);border-radius:999px;width:42px;height:42px;font-size:24px;cursor:pointer}
.checkout-shell{max-width:860px;margin:0 auto}.checkout-top{text-align:center;margin-bottom:20px}.checkout-top h1{font-size:50px}.checkout-status{padding:25px;background:#fff;border:1px solid var(--line);border-radius:18px;text-align:center}.checkout-success{padding:36px;background:#f0fbf7;border:1px solid #a5dcc8;border-radius:20px;text-align:center}.checkout-success h2{font-size:42px;color:var(--navy)}
.duplicate-box{padding:18px;border:1px solid #f0c36c;background:#fff8e8;border-radius:15px;margin:14px 0}.duplicate-box h3{font-size:28px;color:var(--navy);margin:0 0 8px}.duplicate-players{font-weight:800;margin:10px 0}.duplicate-actions{display:flex;gap:9px;flex-wrap:wrap}
.footer .tour-link{cursor:pointer}
@media(max-width:800px){.portal-v2-grid{grid-template-columns:1fr}.family-camp-actions,.ref-actions{flex-direction:column}.family-camp-actions .btn,.ref-actions .btn{width:100%}.tour-preview{min-height:185px}.tour-copy{padding:23px 20px}.tour-copy h2{font-size:35px}.tour-close{right:12px;top:10px}.transfer-form{flex-direction:column}.transfer-form input,.transfer-form input[type=number]{max-width:none;width:100%}}

/* ========================= GAME READY V2.1 LAUNCH POLISH ========================= */
.tour-preview{height:300px;min-height:300px;padding:18px;overflow:hidden}
.tour-shot{width:min(560px,100%);height:264px;border-radius:16px;overflow:hidden;background:#061b31;box-shadow:0 16px 42px rgba(0,0,0,.3);border:1px solid rgba(255,255,255,.16)}
.tour-shot img{width:100%;height:100%;display:block;object-fit:cover}
.tour-feature-visual{width:min(540px,100%);min-height:240px;border-radius:18px;background:#fff;color:var(--navy);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:24px;box-shadow:0 16px 42px rgba(0,0,0,.3)}
.tour-feature-visual img{width:82px;height:82px;object-fit:contain;margin-bottom:10px}.tour-feature-visual strong{font-family:'Barlow Condensed',sans-serif;font-size:30px;letter-spacing:.5px}.tour-feature-visual span{font-weight:800;color:var(--teal2);margin-top:5px}.tour-feature-visual small{color:var(--muted);line-height:1.5;margin-top:9px;max-width:390px}.tour-gift{font-size:56px;margin-bottom:8px}.tour-next-wrap{display:flex;gap:9px;align-items:center}.tour-faq{display:none}
.lesson-calendar-shell iframe{transition:opacity .16s ease}.lesson-booking-tabs button{min-width:150px}.lesson-booking-tabs button:active{transform:translateY(1px)}

@media(max-width:600px){
 .hero-copy{padding-top:14px!important}
 .home-camp-package-grid .camp-panel{padding:14px!important;border-radius:18px}.home-camp-package-grid .camp-panel .photo{min-height:210px!important;height:210px}.home-camp-package-grid .camp-panel .camp-info{padding:8px 4px}.home-camp-package-grid .camp-panel .camp-info h2{font-size:34px}.home-camp-package-grid .camp-panel .camp-meta{margin:12px 0;gap:8px}.home-camp-package-grid .camp-panel .meta{padding:9px 10px}.home-camp-package-grid .camp-panel .actions{gap:8px}
 .tour-card{max-height:92vh;overflow:auto}.tour-preview{height:218px;min-height:218px;padding:12px}.tour-shot{height:194px;border-radius:13px}.tour-feature-visual{min-height:194px;padding:17px}.tour-feature-visual img{width:62px;height:62px}.tour-feature-visual strong{font-size:25px}.tour-feature-visual small{font-size:11px}.tour-copy{padding:18px 18px 20px}.tour-copy h2{font-size:32px}.tour-copy p{line-height:1.55;margin-bottom:8px}.tour-controls{align-items:flex-end}.tour-next-wrap{flex-direction:column-reverse;align-items:stretch}.tour-next-wrap .btn{min-width:105px}.tour-close{position:fixed;right:12px;top:12px;z-index:5002}
 .lesson-booking-tabs{display:grid;grid-template-columns:1fr;gap:8px}.lesson-booking-tabs button{width:100%;min-width:0}.lesson-calendar-shell,.lesson-calendar-shell iframe{height:640px;min-height:640px}
}

/* V2.2 portal + launch fixes */
.portal-magic-loading{max-width:620px;margin:0 auto;text-align:center;background:#fff;border:1px solid var(--line);border-radius:20px;padding:46px 24px;box-shadow:0 12px 34px rgba(4,28,49,.07)}
.portal-loader{width:42px;height:42px;border:4px solid #dceff1;border-top-color:var(--teal);border-radius:50%;margin:0 auto 18px;animation:grspin .8s linear infinite}@keyframes grspin{to{transform:rotate(360deg)}}
.player-pill-edit{display:flex!important;justify-content:space-between;align-items:center;gap:10px}.player-pill-edit .edit-player{flex:0 0 auto}
.portal-camp-compact{padding:12px 14px!important;min-height:0!important;display:flex!important;align-items:center;justify-content:space-between;gap:12px;margin:8px 0!important}.portal-camp-compact strong{font-size:16px!important}.portal-camp-compact small{display:block;margin-top:3px}.portal-camp-compact .btn{padding:9px 14px!important;min-width:auto!important}
.lesson-booking-pane{display:none}.lesson-booking-pane.active{display:block}
.tour-shot{height:264px}.tour-shot img{object-fit:contain;background:#071d33}
@media(max-width:600px){.portal-camp-compact{padding:10px 11px!important}.portal-camp-compact .btn{padding:8px 11px!important;font-size:12px}.tour-shot{height:194px}.tour-shot img{object-fit:contain}}

/* V2.3 launch-performance polish */
.tour-shot{height:min(46vh,520px);display:flex;align-items:flex-start;justify-content:center;overflow:hidden;background:#071d33}
.tour-shot img{width:100%;height:100%;object-fit:contain!important;object-position:center!important;background:#071d33}
.portal-magic-loading{min-height:48vh;display:flex;align-items:center;justify-content:center;text-align:center;padding:40px 20px}
.portal-magic-loading .spinner{margin:0 auto 18px}
@media(max-width:700px){.tour-shot{height:38vh;min-height:260px}.tour-card{max-height:92vh;overflow:auto}}


/* V2.5 launch safeguards */
.inline-action-error{min-height:20px;margin:9px 0 10px;color:#b42318;font-size:13px;font-weight:700;line-height:1.35}
.inline-action-error.success{color:#067647}
.portal-credit-summary{margin:12px 0 4px;padding:10px 12px;border-radius:12px;background:#f2f7f8;color:#536170;font-size:13px}
.portal-credit-summary strong{color:#071d33}
.portal-player-rsvp-row{border:1px solid var(--line);border-radius:14px;padding:12px 14px;margin:10px 0;background:#fff}
.portal-player-check{margin:0}
.portal-credit-choice{display:flex;align-items:center;gap:8px;margin:8px 0 0 29px;font-size:13px;color:#536170}
.portal-credit-choice input:disabled+span{opacity:.45}
.tour-portal-grid{width:100%;height:100%;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;align-items:center;justify-items:center;padding:14px;background:rgba(5,37,59,.92)}
.tour-portal-grid img{display:block;width:100%;height:100%;max-height:420px;object-fit:contain;object-position:center;border-radius:12px;background:#fff;box-shadow:0 8px 25px rgba(0,0,0,.18)}
.tour-referral-shot{width:100%;height:100%;display:flex;align-items:center;justify-content:center;padding:14px;background:rgba(5,37,59,.92)}
.tour-referral-shot img{display:block;max-width:100%;max-height:430px;width:auto;height:auto;object-fit:contain;border-radius:14px;box-shadow:0 8px 25px rgba(0,0,0,.18)}
@media(max-width:700px){.tour-portal-grid{gap:5px;padding:7px;grid-template-columns:repeat(3,1fr)}.tour-portal-grid img{max-height:280px;border-radius:7px}.tour-referral-shot{padding:8px}.tour-referral-shot img{max-height:300px}}

/* V2.6.1 launch hotfix: explicit per-player RSVP payment choices */
.portal-payment-options{display:flex;flex-direction:column;gap:8px;margin:8px 0 0 34px}
.portal-payment-options.is-disabled{opacity:.5}
.portal-payment-choice{display:flex;align-items:center;gap:9px;font-size:14px;color:#374151;cursor:pointer}
.portal-payment-choice input{accent-color:#0797a5}
@media(max-width:640px){.portal-payment-options{margin-left:28px}}

/* V2.6.13 account-first + RSVP credit actions */
.rsvp-row-actions{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end;align-items:center;margin-top:7px}
.use-credit-rsvp,.cancel-rsvp{font:inherit;font-size:12px;font-weight:800;border:0;background:none;cursor:pointer;text-decoration:underline;text-underline-offset:3px;padding:2px 0}
.use-credit-rsvp{color:#0f8f96}.cancel-rsvp{color:#b42318}.use-credit-rsvp:disabled,.cancel-rsvp:disabled{opacity:.55;cursor:not-allowed}
@media(max-width:640px){.rsvp-row-actions{justify-content:flex-start}}

/* =========================================================
   V2.6.14 — AUTH + TOUR POLISH
   ========================================================= */
.google-recommended-wrap{position:relative;margin-top:18px;padding-top:11px}
.recommended-badge{position:absolute;top:0;left:50%;transform:translate(-50%,-50%);background:#0f766e;color:#fff;border-radius:999px;padding:6px 11px;font-size:10px;font-weight:800;letter-spacing:.08em;white-space:nowrap;z-index:2;box-shadow:0 6px 16px rgba(15,118,110,.18)}
.google-primary{width:100%;min-height:54px;display:flex;align-items:center;justify-content:center;gap:10px;box-shadow:0 8px 20px rgba(15,118,110,.16)}
.google-g{display:grid;place-items:center;width:25px;height:25px;border-radius:50%;background:#fff;color:#1f2937;font-weight:800;font-family:Arial,sans-serif}
.google-help{display:block;text-align:center;margin-top:8px;color:#6b7280}
.auth-divider{display:flex;align-items:center;gap:10px;margin:20px 0;color:#9ca3af}
.auth-divider span{height:1px;background:#e5e7eb;flex:1}.auth-divider small{font-size:10px;font-weight:700;letter-spacing:.07em}
.auth-modal-card{max-width:560px}
.auth-spam-note{font-size:13px;color:#6b7280;background:#f8fafc;border:1px solid #e5e7eb;border-radius:10px;padding:10px 12px;margin:13px 0}
.verification-wait,.reset-success{text-align:center}.verify-icon{width:54px;height:54px;margin:2px auto 12px;border-radius:50%;display:grid;place-items:center;background:#ecfdf5;font-size:25px}.verification-wait h3,.reset-success h3{font-size:28px;margin:0 0 8px}
.btn.is-loading{opacity:.78;cursor:wait}.btn.is-loading::after{content:'';width:14px;height:14px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;display:inline-block;margin-left:8px;vertical-align:-2px;animation:grspin .75s linear infinite}@keyframes grspin{to{transform:rotate(360deg)}}
.auth-busy-overlay{position:fixed;inset:0;background:rgba(8,20,28,.66);backdrop-filter:blur(5px);z-index:99999;display:none;align-items:center;justify-content:center;padding:20px}.auth-busy-overlay.open{display:flex}.auth-busy-card{width:min(420px,100%);background:#fff;border-radius:20px;padding:30px;text-align:center;box-shadow:0 28px 80px rgba(0,0,0,.24)}.auth-busy-card h2{font-size:32px;margin:12px 0 6px}.auth-busy-card p{margin:0;color:#6b7280}

/* Custom Firebase action page */
.auth-action-page{min-height:100vh;background:linear-gradient(180deg,#eef8f6,#f8fafc)}
.auth-action-shell{min-height:100vh;display:grid;place-items:center;padding:24px}
.auth-action-card{width:min(540px,100%);background:#fff;border:1px solid #e5e7eb;border-radius:22px;padding:30px;box-shadow:0 24px 70px rgba(15,23,42,.12)}
.auth-action-logo{display:inline-block;margin-bottom:18px}.auth-action-logo img{width:105px;height:auto}.auth-action-card h1{font-family:'Barlow Condensed',sans-serif;font-size:43px;line-height:1;margin:7px 0 12px}.auth-action-card>p{color:#5f6b75}.auth-action-spinner{width:36px;height:36px;border:3px solid #d1fae5;border-top-color:#0f766e;border-radius:50%;animation:grspin .8s linear infinite;margin:20px 0}.auth-action-card .actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:18px}

/* Final tour action screen */
.tour-final .tour-card{overflow:visible}.tour-final .tour-preview{display:block}.tour-action-panel{position:relative;display:grid;gap:10px;padding:8px 2px 2px}.tour-action{display:flex;flex-direction:column;gap:2px;text-decoration:none;border:1px solid #dbe4e8;border-radius:14px;padding:13px 15px;background:#fff;color:#17252d;transition:.16s ease}.tour-action:hover{transform:translateY(-1px);border-color:#0f766e}.tour-action.primary{background:#0f766e;color:#fff;border-color:#0f766e}.tour-action strong{font-size:15px}.tour-action small{font-size:12px;opacity:.75}.tour-action-faq{text-align:center;font-size:13px;font-weight:700;color:#0f766e;text-decoration:none;padding:8px}.tour-exit-corner{position:absolute;right:-8px;bottom:-8px;width:34px;height:34px;border-radius:50%;background:#14252d;color:#fff;display:grid;place-items:center;text-decoration:none;font-size:23px;box-shadow:0 8px 20px rgba(0,0,0,.2)}
.rsvp-row-actions{display:flex;gap:7px;justify-content:flex-end;flex-wrap:wrap;margin-top:7px}.use-credit-rsvp{border:0;border-radius:999px;background:#0f766e;color:#fff;padding:7px 10px;font-size:12px;font-weight:800;text-decoration:none;cursor:pointer}.use-credit-rsvp:disabled{opacity:.55;cursor:wait}

@media(max-width:640px){
 .recommended-badge{font-size:9px;padding:5px 8px}.auth-modal-card{padding:22px 18px}.auth-action-card{padding:24px 19px}.auth-action-card h1{font-size:38px}.tour-action{padding:12px 13px}.tour-exit-corner{right:0;bottom:-4px}
}

/* V2.6.14.1 audited safeguards */
.pending-credit-target{outline:2px solid #0f766e;outline-offset:3px;border-radius:12px;background:#f0fdfa}
@media(max-width:640px){.tour-final .tour-card{max-height:92vh;overflow:auto}}

/* V2.6.14.5 — portal action + loading polish */
.gr-inline-loading{display:flex;align-items:center;gap:5px;color:var(--muted);font-size:13px;font-weight:800;padding:8px 0 10px}.gr-inline-loading span{margin-right:2px}.gr-inline-loading i{width:6px;height:6px;border-radius:50%;background:var(--teal);display:block;animation:grdot 1.15s infinite ease-in-out}.gr-inline-loading i:nth-child(2){animation-delay:.14s}.gr-inline-loading i:nth-child(3){animation-delay:.28s}@keyframes grdot{0%,60%,100%{opacity:.25;transform:translateY(0)}30%{opacity:1;transform:translateY(-3px)}}
.gr-skeleton-row{height:54px;border-radius:13px;margin:8px 0;background:linear-gradient(90deg,#f1f5f6 25%,#e7eff0 37%,#f1f5f6 63%);background-size:400% 100%;animation:grshimmer 1.25s infinite}.gr-skeleton-row.short{height:42px;width:82%}@keyframes grshimmer{0%{background-position:100% 0}100%{background-position:0 0}}
.portal-action-modal-card{max-width:520px}.portal-action-modal-card h2{font-size:38px;margin:5px 0 10px}.portal-action-modal-card>p:not(.eyebrow){color:var(--muted);line-height:1.55}.portal-action-buttons{display:flex;gap:10px;margin-top:20px}.portal-action-buttons .btn{flex:1}.btn-danger{background:#a53030;color:#fff;border:1px solid #a53030}.btn-danger:hover{background:#8d2929}.btn-danger.is-loading{opacity:.72;cursor:wait}.btn-danger.is-loading::after{content:'';width:14px;height:14px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;display:inline-block;margin-left:8px;vertical-align:-2px;animation:grspin .75s linear infinite}
.portal-toast{position:fixed;left:50%;bottom:28px;transform:translate(-50%,20px);z-index:10020;background:var(--navy);color:#fff;padding:12px 18px;border-radius:999px;font-size:13px;font-weight:900;box-shadow:0 14px 34px rgba(0,0,0,.2);opacity:0;pointer-events:none;transition:.22s ease}.portal-toast.show{opacity:1;transform:translate(-50%,0)}
.portal-retry-state{padding:14px 0;color:var(--muted);font-size:13px}.portal-retry-state .btn{margin-top:10px}.rsvp-status-row .use-credit-rsvp:disabled,.rsvp-status-row .cancel-rsvp:disabled{opacity:.55;cursor:wait}
@media(max-width:640px){.portal-action-buttons{flex-direction:column-reverse}.portal-action-modal-card h2{font-size:34px}.portal-toast{bottom:18px;max-width:calc(100vw - 32px);white-space:nowrap}}


/* V2.6.14.6 — RSVP opening feedback */
.portal-rsvp.is-loading{opacity:.72;cursor:wait;pointer-events:none}
.gr-moving-dots{display:inline-flex;align-items:center;gap:4px;margin-left:3px;min-width:30px;vertical-align:middle}
.gr-moving-dots i{display:block;width:5px;height:5px;border-radius:50%;background:currentColor;opacity:.28;animation:grDotPulse 1s infinite ease-in-out}
.gr-moving-dots i:nth-child(2){animation-delay:.16s}.gr-moving-dots i:nth-child(3){animation-delay:.32s}
@keyframes grDotPulse{0%,70%,100%{opacity:.25;transform:translateY(0)}35%{opacity:1;transform:translateY(-3px)}}
.portal-rsvp-prep{min-height:180px;border:1px solid var(--line);border-radius:14px;background:#f7fafb;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:24px;color:var(--navy);margin:16px 0}
.portal-rsvp-prep-icon{font-size:27px;margin-bottom:8px}.portal-rsvp-prep strong{font-size:17px}.portal-rsvp-prep small{display:block;color:var(--muted);margin-top:8px}


/* V2.6.14.8.2 — Quick RSVP submitting dots only. */
#formStatus.quick-rsvp-submitting::after{
  content:'...';
  display:inline-block;
  width:1.45em;
  overflow:hidden;
  vertical-align:bottom;
  animation:grQuickRsvpDots 1.05s steps(4,end) infinite;
}
@keyframes grQuickRsvpDots{
  0%{width:0}
  25%{width:.48em}
  50%{width:.96em}
  75%,100%{width:1.45em}
}

/* V2.6.14.8.3 — new-family submit/request-access busy indicator only */
.gr-working-dots::after{
  content:'...';
  display:inline-block;
  width:1.45em;
  overflow:hidden;
  text-align:left;
  vertical-align:bottom;
  animation:grWorkingDots 1.05s steps(4,end) infinite;
}
@keyframes grWorkingDots{
  0%{width:0}
  25%{width:.48em}
  50%{width:.96em}
  75%,100%{width:1.45em}
}
button.gr-working-dots:disabled{opacity:.72;cursor:wait}

/* V2.6.14.8.5 — Stripe return confirmation UX only */
.checkout-confirming,.checkout-confirmed{max-width:720px;margin:0 auto;padding:42px 28px}.purchase-check{width:68px;height:68px;border-radius:50%;display:flex;align-items:center;justify-content:center;margin:0 auto 18px;background:#dff7ee;font-size:34px;font-weight:800}.checkout-success .purchase-sub{font-size:18px;margin:8px auto 24px;max-width:560px}.purchase-sync{display:flex;flex-direction:column;align-items:center;gap:9px;padding:18px;border:1px solid var(--line);border-radius:16px;background:#fff;margin:22px 0}.purchase-sync small,.purchase-note{color:var(--muted)}.purchase-dots{display:inline-flex;gap:6px;height:10px;align-items:center}.purchase-dots i{width:7px;height:7px;border-radius:50%;background:currentColor;animation:purchaseDot 1.05s infinite ease-in-out}.purchase-dots i:nth-child(2){animation-delay:.15s}.purchase-dots i:nth-child(3){animation-delay:.3s}@keyframes purchaseDot{0%,80%,100%{transform:translateY(0);opacity:.35}40%{transform:translateY(-5px);opacity:1}}.purchase-balance{display:block;font-size:17px}.purchase-actions{display:flex;gap:12px;justify-content:center;flex-wrap:wrap;margin-top:22px}.purchase-note{font-size:14px;margin-top:18px}.purchase-retry{margin-top:8px}@media(max-width:600px){.checkout-confirming,.checkout-confirmed{padding:30px 18px}.purchase-actions .btn{width:100%}}
