/* Local system fonts keep this private portal independent of font services. */
.member-portal { background:#0d1014; color:#e8e9eb; font-family: -apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif; }
.member-portal .shell { max-width:780px; padding:24px 22px 60px; }
.member-portal .panel { background:#14181e; border:1px solid #2b3038; border-radius:12px; box-shadow:none; }
.portal-header { position:relative; display:flex; align-items:center; justify-content:space-between; margin-bottom:6px; padding:6px 0 22px; border-bottom:1px solid #303640; }
.portal-wordmark { font-family:Georgia,"Times New Roman",serif; font-style:italic; font-weight:400; font-size:37px; letter-spacing:-1.4px; text-decoration:none; color:#f1eee8; }
.portal-menu-toggle { display:flex; flex-direction:column; justify-content:center; align-items:center; gap:5px; width:46px; height:46px; background:transparent; border:1px solid #343b46; border-radius:8px; cursor:pointer; }
.portal-menu-toggle span { height:1px; width:21px; background:#e5e7eb; }
.portal-navigation { position:absolute; right:0; top:78px; z-index:20; width:min(300px,100%); padding:12px; border:1px solid #3e4653; border-radius:10px; background:#181d25; box-shadow:0 18px 48px #0008; }
.portal-menu-root > button,.portal-menu-root > a { display:block; width:100%; text-align:left; background:transparent; border:0; border-radius:6px; padding:13px 14px; color:#f0f1f3; font:inherit; text-decoration:none; cursor:pointer; }
.portal-menu-root > button:hover,.portal-menu-root > a:hover { background:#252d39; }
.portal-navigation #portalRulesToggle { display:flex; justify-content:space-between; }
.portal-rules-menu { margin:0 8px 6px 20px; padding-left:8px; border-left:1px solid #56667d; }
.portal-rules-menu a { font-size:16px; color:#c3d4e9; }
.member-portal #memberHome { padding:0; border:0; background:transparent; }
.portal-home-intro { margin-bottom:0; }
.portal-home-intro #memberWelcomeHeading { margin-bottom:4px; }
.member-portal .eyebrow { font-size:13px; letter-spacing:2.5px; color:#a9b6c6; }
.member-portal h2,.member-portal .portal-coming-panel h3 { font-family:Georgia,"Times New Roman",serif; font-weight:400; letter-spacing:-.4px; }
.member-portal h2 { font-size:30px; }
.portal-tabs { display:flex; gap:10px; border-bottom:1px solid #303640; margin:20px 0 28px; padding-top:0; }
.portal-tabs button { display:flex; align-items:flex-start; justify-content:center; flex:1; min-height:44px; margin:0; background:transparent; color:#a7b0bd; border:0; border-bottom:2px solid transparent; padding:0 4px 12px; font-size:17px; font-weight:500; line-height:1.4; cursor:pointer; }
.portal-tabs button[aria-selected=true] { border-bottom-color:#96b7e3; color:#fff; }
.member-portal .portal-qr { margin:0 0 24px; padding:18px 20px; border:1px solid #303844; border-radius:10px; background:#161c24; }
.portal-section-heading { display:flex; justify-content:space-between; align-items:center; gap:10px; }
.portal-section-heading h3 { margin:0; font-size:18px; font-weight:500; }
.portal-private-label { color:#a9b8cc; font-size:12px; text-transform:uppercase; letter-spacing:1.5px; }
.member-portal .member-qr-hint { font-size:14px; line-height:1.6; color:#a3adbb; }
.member-portal #portalQrContext { font-size:16px; }
.portal-event-toolbar { display:flex; justify-content:space-between; align-items:center; gap:12px; margin-bottom:10px; }
.portal-filter { position:relative; flex:1; max-width:320px; }
.portal-filter summary { list-style:none; border:1px solid #394353; background:#171e28; border-radius:8px; padding:12px 14px; font-size:16px; cursor:pointer; }
.portal-filter summary::-webkit-details-marker { display:none; }
.portal-filter summary::after { content:"⌄"; float:right; margin-left:10px; }
.portal-filter fieldset { position:absolute; top:42px; left:0; right:0; z-index:10; background:#1b232f; padding:12px; margin:0; border:1px solid #46536a; border-radius:8px; box-shadow:0 12px 30px #0008; }
.portal-filter legend { font-size:14px; color:#b9c6d8; background:#1b232f; padding:3px; }
.portal-filter label { display:flex; align-items:center; gap:12px; padding:10px 6px; margin:0; font-size:16px; cursor:pointer; }
.portal-filter input { width:18px; height:18px; margin:0; accent-color:#86acd9; }
.member-portal .member-events-section { border:0; margin:0; padding:0; }
.member-portal #memberEventsMessage:empty { display:none; }
.member-portal .member-events-list { gap:16px; margin-top:14px; }
.member-portal .portal-event-card { display:block; background:#181d24; padding:23px; border:1px solid #343c48; border-radius:10px; text-align:left; cursor:default; }
.portal-card-meta { display:flex; justify-content:space-between; align-items:center; gap:12px; color:#adbbcf; font-size:13px; text-transform:uppercase; letter-spacing:1.6px; margin-bottom:15px; }
.portal-event-card h3 { font-family:Georgia,"Times New Roman",serif; font-weight:400; font-size:26px; color:#f0eee9; line-height:1.25; margin:0 0 12px; }
.portal-event-card p { font-size:16px; line-height:1.6; margin:6px 0; }
.portal-event-location { color:#a8b1bd; }
.portal-event-badge { background:#31363e; border:1px solid #515966; border-radius:4px; padding:5px 7px; font-size:12px; letter-spacing:.6px; white-space:nowrap; }
.member-portal .portal-event-card.is-past { background:#11151a; border-color:#282f39; }
.portal-event-card.is-past h3 { color:#b9bec6; }
.portal-event-card.is-past .portal-event-date { color:#a3acb9; }
.portal-rsvp-status { display:inline-block; font-size:14px; color:#b1bac7; margin-top:8px; }
.portal-rsvp-status.is-going { color:#9ecdb0; }
.portal-card-actions { display:flex; flex-wrap:wrap; align-items:center; gap:10px; margin-top:20px; }
.member-portal .secondary-button { background:#202b3a; border:1px solid #4b607c; color:#e5edf7; }
.member-portal .text-button { color:#b5ccec; }
.portal-card-actions button { min-height:44px; font-size:15px; }
.portal-coming-panel { padding:30px 24px; margin-top:22px; border:1px solid #303844; border-radius:10px; background:#151b23; }
.portal-coming-panel p { line-height:1.7; color:#bdc5d0; }
.member-portal #portalReferralsContent .member-referrals { border-top:0; }
.member-portal button:focus-visible,.member-portal a:focus-visible,.member-portal summary:focus-visible { outline:2px solid #a5c6ef; outline-offset:4px; }
@media(max-width:480px) {
 .member-portal .shell { padding:18px 16px 40px; }
 .portal-wordmark { font-size:33px; }
 .portal-card-meta { font-size:12px; letter-spacing:1px; }
 .member-portal .portal-event-card { padding:20px 18px; }
 .portal-event-card h3 { font-size:25.5px; }
 .portal-event-toolbar { gap:8px; }
 .portal-event-toolbar>button { font-size:14px; padding:10px 4px; }
 .portal-private-label { font-size:10.5px; }
}
@media(prefers-reduced-motion:reduce) { .member-portal * { scroll-behavior:auto !important; } }
.member-portal .portal-event-card:hover { border-color:#4b607c; box-shadow:none; }
.member-portal .portal-event-card span { color:inherit; }
.member-portal .portal-event-card .portal-rsvp-status.is-going { color:#9ecdb0; }
.member-portal #memberEventSignOutButton,.member-portal #memberRulesSignOutButton { display:none; }
.portal-referral-filters { display:flex; gap:10px; margin:18px 0; }
.portal-referral-filters button[aria-pressed=true] { background:#354b68; border-color:#9bb6dc; }
.portal-navigation { max-height:70vh; overflow-y:auto; }
.portal-filter fieldset { max-height:50vh; overflow-y:auto; }
/* Soft ambient green, with the refined slate surfaces retained. */
.member-portal { background:radial-gradient(ellipse 65% 650px at 50% 8%,rgba(113,178,137,.14),transparent 80%),#090c0b; background-attachment:fixed; }
.member-portal #email:focus,.member-portal #email:focus-visible,.member-portal #password:focus,.member-portal #password:focus-visible { outline-color:#aac6b4; }
.portal-navigation { --portal-menu-width:min(220px,52vw); position:fixed; top:0; right:0; width:var(--portal-menu-width); max-height:100dvh; height:100dvh; border-radius:0; border-top:0; border-right:0; padding:calc(12px + env(safe-area-inset-top)) 10px 20px; z-index:50; }
.portal-navigation #portalMenuClose { text-align:right; font-size:15px; color:#bcc9da; }
.portal-rules-menu { position:fixed; top:0; right:min(220px,52vw); width:min(220px,48vw); height:100dvh; overflow-y:auto; margin:0; padding:calc(20px + env(safe-area-inset-top)) 12px 20px; background:#1b2430; border:1px solid #3e4653; border-top:0; z-index:50; box-shadow:-12px 0 36px #0005; }
.portal-rules-menu a { display:block; padding:15px 8px; text-decoration:none; color:#e5edf7; font-size:16px; }
.member-portal .portal-event-card { position:relative; cursor:pointer; -webkit-touch-callout:none; -webkit-user-select:none; user-select:none; }
.member-portal .portal-event-card:focus-visible { outline:2px solid #96b7e3; outline-offset:2px; }
/* Quick RSVP popup (tap-and-hold an event card). */
.portal-rsvp-dialog h2 { margin:0 0 4px; font-family:Georgia,"Times New Roman",serif; font-weight:400; font-size:24.5px; }
.portal-rsvp-dialog .portal-rsvp-when { margin:0 0 10px; color:#a7b0bd; font-size:16px; line-height:1.5; }
.portal-rsvp-dialog .portal-rsvp-note { margin:0; min-height:0; color:#c9d1dc; font-size:16px; line-height:1.45; }
.portal-rsvp-dialog .portal-rsvp-note:empty { display:none; }
.portal-rsvp-dialog .portal-rsvp-choice.is-selected { background:#1f3b2c; border-color:#9ecdb0; color:#e8f5ec; }
.portal-rsvp-dialog .portal-rsvp-cancel { display:block; width:100%; margin:12px 0 0; text-align:center; background:transparent; color:#c9d1dc; }
.member-portal .portal-card-meta { text-transform:none; letter-spacing:.8px; }
.member-portal #memberEventQrSection { margin-top:28px; }
.portal-navigation #portalMenuClose { display:flex; width:46px; padding:0; margin:0 6px 18px auto; align-items:center; border:1px solid #343b46; }
.portal-navigation { width:min(165px,40vw); }
.portal-rules-menu { right:min(165px,40vw); width:min(160px,38vw); }
.portal-navigation #portalRulesToggle,.portal-navigation #portalReferralsLink { display:flex; justify-content:flex-start; gap:10px; }
.portal-rules-menu button { width:100%; display:block; border:0; background:transparent; text-align:left; padding:15px 8px; color:#e5edf7; font:inherit; font-size:16px; cursor:pointer; border-radius:6px; }
.portal-rules-menu button:hover { background:#2a3544; }
.member-event-divider { height:0; border:0; border-top:1px solid #365543; margin:24px 0; }
#memberEventGoingCount[aria-pressed=true],#memberEventNotGoingCount[aria-pressed=true] { background:#354b68; border-color:#9bb6dc; color:#fff; }

#memberEventPrivacyNotice:empty { display:none; }

.portal-event-heading { display:flex; align-items:center; gap:16px; margin-bottom:12px; }
.portal-event-thumbnail { width:84px; height:100px; object-fit:cover; border-radius:18px; flex:0 0 auto; }
.portal-event-heading-text { flex:1; min-width:0; }
.portal-event-heading-text h3 { margin-bottom:0; overflow-wrap:anywhere; }
.portal-event-heading-text .portal-card-meta { flex-wrap:wrap; gap:8px; }
.member-event-image { display:block; width:auto; max-width:100%; max-height:640px; height:auto; margin:0 auto; border-radius:24px; object-fit:contain; }
.member-poll-card>.text-button { margin-right:14px; }

.member-poll-card .member-rsvp-privacy { font-size:15px; line-height:1.4; gap:8px; }
.member-poll-card .member-rsvp-privacy input { width:16px; height:16px; flex:0 0 16px; }
.member-poll-card .member-event-divider { margin:10px 0; }

.portal-navigation, .portal-rules-menu, .portal-filter fieldset { overflow-x:hidden; }

.portal-logo-scroll { width:100%; min-width:0; overflow-x:auto; overflow-y:hidden; scrollbar-width:none; -ms-overflow-style:none; margin:0; }
.portal-logo-scroll::-webkit-scrollbar { display:none; }
.portal-logo-row { display:flex; width:max-content; min-width:100%; justify-content:flex-start; align-items:center; gap:14px; padding:0; box-sizing:border-box; }
.portal-organization-logo { display:flex; flex:0 0 104px; flex-direction:column; align-items:center; gap:0; padding:0; border:0; background:none; color:#c9d1ca; cursor:pointer; }
.portal-organization-logo-image { display:block; width:104px; height:104px; border:2px solid transparent; border-radius:22px; background:transparent; overflow:hidden; }
.portal-organization-logo-image img, .member-event-organization-logo img { display:block; width:100%; height:100%; object-fit:contain; }
.portal-organization-logo[aria-pressed=true] .portal-organization-logo-image { border-color:#75dd8b; }
.portal-organization-logo[aria-pressed=true] { color:#a6dfb4; }
.portal-organization-logo:focus-visible { outline:none; filter:brightness(1.2); }
.portal-organization-logo:focus-visible .portal-organization-logo-image { opacity:.8; }
.portal-organization-logo-image:empty { background:#fff; background-clip:padding-box; }
.member-event-organization-logo { width:44px; height:44px; flex:0 0 44px; margin-left:auto; background:#fff; border-radius:12px; overflow:hidden; }

.organization-logo-medium{width:104px;height:104px;border-radius:22px;background:#fff;overflow:hidden;margin:0}
.organization-logo-medium img{width:100%;height:100%;object-fit:contain;display:block}
.member-settings-form{display:grid;gap:18px;max-width:600px}
.member-settings-form label{display:grid;gap:8px}
/* The "Hide last name everywhere" switch (js/name-rules.js) keeps its row and its 44px switch here too, not a full-width bar. */
.member-settings-form .hide-last-name{display:flex}
.member-settings-form .hide-last-name .toggle-switch{width:44px}
.member-settings-form input,.member-settings-form select{width:100%;min-width:0;box-sizing:border-box}
.member-settings-phone{display:grid;grid-template-columns:minmax(110px,0.8fr) minmax(0,1.2fr);gap:10px}
.member-settings-phone-field{display:grid;gap:8px}
.member-settings-form .member-settings-privacy{display:flex;align-items:center;gap:10px;font-size:.94rem}
.member-settings-privacy input[type=checkbox]{width:18px;height:18px;margin:0;flex-shrink:0}
.member-settings-photos{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;max-width:600px;margin-top:28px}
.member-settings-photo{aspect-ratio:1;max-width:240px;background:rgba(255,255,255,.04);border:1px solid #3e463f;border-radius:22px;overflow:hidden;display:flex;align-items:center;justify-content:center;margin-bottom:14px;color:#a7b0ac}
.member-settings-photo img{width:100%;height:100%;object-fit:contain}
.member-settings-photos button{font-size:.88rem;max-width:100%}
.member-settings-photos .member-setup-photo-hint{grid-column:1/-1;margin:0}
.member-settings-photos section>button+button{margin-top:8px}
@media(max-width:400px){.member-settings-photos{grid-template-columns:1fr}.member-settings-phone{grid-template-columns:minmax(105px,0.9fr) minmax(0,1.1fr)}}

.member-settings-form select{padding:13px 10px;border:1px solid #363636;border-radius:10px;background:#0a0a0a;color:#fff}.member-settings-form select:focus{border-color:#737373}

#memberEventView .member-top-actions { align-items:center; }
#memberEventBackButton { margin:0; align-self:center; }
#memberEventOrganizationLogo { align-self:center; }

#portalReferralsContent > h2 { margin-bottom:0; }
.member-portal #portalReferralsContent .member-referrals { margin:0; padding-top:0; }
#memberReferralsHeading { margin:0; }
#memberReferralsDescription { margin-top:0; }

/* Shared profile settings and required migrated-member setup. */
.portal-logo-row{padding:8px 0}
#portalReferralOrganizationLogo{margin:8px 0}
.member-settings-names{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.member-settings-privacy-choices{display:grid;gap:12px}
.member-settings-form .member-settings-privacy{font-size:.82rem;gap:8px;line-height:1.4}
.member-settings-privacy input[type=checkbox]{width:12px;height:12px}
.member-settings-privacy-choices .member-settings-privacy-hint{margin:-6px 0 0 20px;font-size:.76rem;line-height:1.4;color:var(--muted,#9aa59e)}
.member-settings-privacy-choices .member-settings-privacy-warning{color:#ffd166}
.member-settings-anonymous strong{color:var(--text,#f3f5f2);font-weight:600}
.member-settings-form button.member-settings-shuffle{display:inline;width:auto;min-height:0;margin:0;padding:0;border:0;background:none;color:var(--accent,#7fd1a8);font:inherit;text-decoration:underline;cursor:pointer}
.member-settings-form .member-settings-photos{margin:4px 0;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.member-email-actions,.member-email-verification{display:grid;gap:12px}
.member-email-actions button{font-size:.85rem;justify-self:start;margin:0}
.member-settings-form>button[type=submit]{margin:0;min-height:56px;padding:16px 20px}
/* Account setup's Finish button: dark grey until everything it needs is filled in, then blue (member-settings.js syncReady). */
.member-settings-form>button.member-setup-finish{border:1px solid #3a3a3a;border-radius:12px;background:#262626;color:#9a9a9a;font-weight:700;transition:background-color .25s ease,border-color .25s ease,color .25s ease}
.member-settings-form>button.member-setup-finish.is-ready{border-color:#2563eb;background:#2563eb;color:#fff}
.member-settings-form>button.member-setup-finish:disabled{opacity:.65;cursor:default}
.member-settings-form>[role=status]{margin:0}
.member-settings-form>[role=status]:empty{display:none}
.member-settings-form input:disabled{opacity:.75}
.member-setup-terms-links{font-size:.85rem;margin:0}

.member-email-message{margin:0;font-size:.85rem;line-height:1.5;color:#bbc7c0}
.member-email-message:empty{display:none}
.member-rules-organization-logo{width:180px;max-width:100%;aspect-ratio:1;border-radius:28px;overflow:hidden;background:#fff;margin:0 auto 18px}
.member-rules-organization-logo img{width:100%;height:100%;object-fit:contain;display:block}

.member-portal .portal-event-card .portal-event-date{font-size:18px;line-height:1.6}
.portal-event-date a{text-decoration:none}

/* Home intro (logos and greeting) slides away when Chat or Grid is selected. */
.portal-home-intro { overflow:hidden; transition:max-height .38s ease, opacity .3s ease, transform .38s ease; }
.portal-home-intro.portal-intro-collapsed { max-height:0; opacity:0; transform:translateY(-14px); pointer-events:none; }
@media (prefers-reduced-motion: reduce) { .portal-home-intro { transition:none; } }
.chat-rules-page { margin:12px 0 16px; padding-left:20px; line-height:1.7; color:#e5e7eb; } .chat-rules-page li { margin:6px 0; }
/* Provide Feedback popup */
.feedback-dialog form { display:block; }
.feedback-dialog { width:min(440px,calc(100vw - 32px)); padding:20px; border:1px solid #2f3846; border-radius:18px; background:#171d26; color:#e5e7eb; }
.feedback-dialog::backdrop { background:rgba(0,0,0,.65); }
.feedback-dialog h2 { margin:0 0 12px; font-size:22.5px; letter-spacing:0; }
.feedback-dialog label { display:block; margin:0 0 10px; color:#c9d1dc; line-height:1.45; }
.feedback-dialog textarea { box-sizing:border-box; margin:0; width:100%; min-height:140px; padding:12px; border:1px solid #3a4454; border-radius:12px; background:#0f141b; color:#f0f1f3; font:inherit; resize:vertical; }
.feedback-dialog .feedback-anonymous { display:flex; align-items:center; gap:10px; margin:12px 0 0; color:#c9d1dc; font-weight:400; cursor:pointer; }
.feedback-anonymous input { width:20px; height:20px; margin:0; flex:0 0 auto; accent-color:#2563eb; }
.feedback-status { min-height:1.4em; margin:8px 0 0; font-size:16px; }
.feedback-actions { display:flex; gap:10px; margin-top:12px; }
.feedback-actions button { flex:1 1 0; margin-top:0; }
.member-settings-delete { margin-top:32px; padding-top:20px; border-top:1px solid #2f3846; }
.member-portal .danger-button { padding:12px 18px; border:0; border-radius:12px; background:#dc2626; color:#ffffff; font:inherit; font-weight:700; cursor:pointer; }
.member-portal .danger-button:hover:not(:disabled) { background:#b91c1c; }
.member-portal .danger-button:disabled { opacity:.6; cursor:default; }
.delete-account-dialog p { margin:0 0 10px; color:#c9d1dc; line-height:1.5; }
.member-settings-delete .secondary-button { display:block; margin-top:14px; }
/* Signed in with no active membership: download or delete, on the sign-in screen. */
.member-inactive-actions { display:flex; flex-direction:column; align-items:stretch; gap:6px; margin-top:20px; padding-top:16px; border-top:1px solid #2f3846; }
.member-inactive-actions.hidden { display:none; }
.member-inactive-actions p { margin:0 0 6px; color:#c9d1dc; line-height:1.5; }
.member-inactive-actions .member-inactive-delete { color:#f87171; }
/* Terms, Privacy & Waiver (/legal) */
.legal-page { max-width:760px; margin:22px auto 40px; padding:30px 24px; border:1px solid #303844; border-radius:10px; background:#151b23; }
.legal-page h1 { margin:0 0 12px; font-family:Georgia,"Times New Roman",serif; font-weight:400; font-size:clamp(1.9rem,6vw,2.6rem); letter-spacing:-.5px; line-height:1.15; }
.legal-page h2 { margin:30px 0 10px; font-size:1.3rem; }
.legal-page h3 { margin:18px 0 6px; font-size:1rem; color:#e5e7eb; }
.legal-page p,.legal-page li { line-height:1.7; color:#bdc5d0; }
.legal-page a { color:#96b7e3; }
.legal-updated { font-size:16px; }
.legal-promise { padding:12px 14px; border-left:3px solid #2563eb; border-radius:6px; background:#1b2330; color:#e5e7eb !important; }
.legal-contents { margin:22px 0 4px; padding:14px 18px; border:1px solid #2b3340; border-radius:10px; background:#11161d; }
.legal-contents ol { margin:0; padding-left:22px; columns:2 240px; column-gap:28px; }
.legal-contents li { line-height:1.6; font-size:16px; break-inside:avoid; }
.legal-contents a { text-decoration:none; }
.legal-page section { scroll-margin-top:16px; }
/* Today's profile views (js/app-popups.js): a note at the top when the app opens, fading away slowly. */
.views-note { position:fixed; left:50%; top:calc(env(safe-area-inset-top, 0px) + 74px); z-index:60; display:flex; flex-direction:column; align-items:center; text-align:center; gap:2px;
  max-width:calc(100vw - 32px); padding:10px 18px; border-radius:16px; background:rgba(16,20,27,.92); border:1px solid rgba(217,119,87,.45);
  box-shadow:0 12px 32px rgba(0,0,0,.5), 0 0 22px rgba(217,119,87,.18); color:#f2f4f7; text-align:center; cursor:pointer; transform:translateX(-50%);
  -webkit-backdrop-filter:blur(10px); backdrop-filter:blur(10px); animation:views-note-in .5s ease-out both, views-note-out 1.8s ease-in 4.5s forwards; }
.views-note-when { font-size:12px; letter-spacing:.12em; text-transform:uppercase; color:#d9a48f; }
.views-note-text { font-size:16px; font-weight:600; }
@keyframes views-note-in { from { opacity:0; transform:translate(-50%,-10px); } to { opacity:1; transform:translate(-50%,0); } }
@keyframes views-note-out { to { opacity:0; transform:translate(-50%,-6px); } }
@media (prefers-reduced-motion: reduce) { .views-note { animation:views-note-fade-in .25s both, views-note-out-still 1.8s ease-in 4.5s forwards; } }
@keyframes views-note-fade-in { from { opacity:0; } }
@keyframes views-note-out-still { to { opacity:0; } }
/* In-app popups (js/app-popups.js, app_popups rows): after the terms popup. */
.app-popup-dialog { width:min(480px,calc(100vw - 24px)); display:none; flex-direction:column; gap:10px; }
.app-popup-dialog[open] { display:flex; }
.app-popup-dialog h2 { font-family:Georgia,"Times New Roman",serif; font-weight:400; font-size:24.5px; margin-bottom:0; }
.app-popup-body { margin:0; color:#c9d1dc; font-size:16px; line-height:1.5; white-space:pre-line; }
.app-popup-field { display:flex; flex-direction:column; gap:4px; font-size:15px; color:#c9d1dc; }
.app-popup-field input, .app-popup-field textarea { font-size:17px; padding:10px 12px; border-radius:10px; border:1px solid #2f3846; background:#11161d; color:#fff; font-family:inherit; }
.app-popup-field textarea { min-height:96px; resize:vertical; }
.app-popup-check { display:flex; align-items:flex-start; gap:10px; font-size:16px; color:#c9d1dc; line-height:1.4; }
.app-popup-check input { width:20px; height:20px; margin-top:1px; flex:none; }
.app-popup-stars { display:flex; justify-content:center; gap:6px; margin-top:4px; }
.app-popup-star { appearance:none; border:0; background:none; padding:2px 4px; font-size:40px; line-height:1; color:#3a4452; cursor:pointer; transition:color .15s, transform .15s; }
.app-popup-star.is-on { color:#f4c95d; text-shadow:0 0 12px rgba(244,201,93,.45); }
.app-popup-star:active { transform:scale(.88); }
.app-popup-star.is-pop { animation:app-popup-star-pop .3s ease; }
@keyframes app-popup-star-pop { 50% { transform:scale(1.25); } }
/* The second button (Log out, Not now) is a small link under the main one. */
.app-popup-dialog .app-popup-close { align-self:center; padding:4px 8px; font-size:14px; color:#8b95a3; text-decoration:underline; text-underline-offset:3px; }
.app-popup-rating-word { margin:0; min-height:20px; text-align:center; font-size:15px; color:#f4c95d; }
@media (prefers-reduced-motion: reduce) { .app-popup-star, .app-popup-star.is-pop { transition:none; animation:none; } }
/* The invite promo popup (accept action OPEN_INVITES): festive like Bids' new members card, with confetti dots over a
   purple-to-gold glow and a gold border. */
.app-popup-dialog.is-promo { position:relative; overflow:hidden; border:1.5px solid #f6d77a;
  background:radial-gradient(120% 70% at 100% 0%,rgba(185,140,255,.28),transparent 60%),radial-gradient(110% 70% at 0% 100%,rgba(246,215,122,.22),transparent 60%),linear-gradient(140deg,#2b2340 0%,#1c2433 55%,#2a2414 100%);
  box-shadow:0 0 0 4px rgba(246,215,122,.14), 0 0 34px rgba(246,215,122,.3), 0 0 60px rgba(185,140,255,.25); }
.app-popup-dialog.is-promo::before { content:""; position:absolute; inset:0; pointer-events:none; opacity:.7;
  background:radial-gradient(circle at 7% 6%,#f6d77a 0 2.5px,transparent 3.5px),radial-gradient(circle at 21% 3%,#b98cff 0 2px,transparent 3px),
    radial-gradient(circle at 40% 8%,#7ee2a0 0 1.5px,transparent 2.5px),radial-gradient(circle at 62% 4%,#f6d77a 0 2px,transparent 3px),
    radial-gradient(circle at 80% 10%,#ff8fb1 0 2.5px,transparent 3.5px),radial-gradient(circle at 94% 5%,#96b7e3 0 2px,transparent 3px),
    radial-gradient(circle at 97% 45%,#b98cff 0 1.5px,transparent 2.5px),radial-gradient(circle at 3% 52%,#ff8fb1 0 1.5px,transparent 2.5px),
    radial-gradient(circle at 6% 94%,#96b7e3 0 2px,transparent 3px),radial-gradient(circle at 30% 97%,#f6d77a 0 1.5px,transparent 2.5px),
    radial-gradient(circle at 72% 96%,#7ee2a0 0 2px,transparent 3px),radial-gradient(circle at 93% 90%,#f6d77a 0 2.5px,transparent 3.5px); }
.app-popup-dialog.is-promo > * { position:relative; }
.app-popup-dialog.is-promo h2 { color:#f6dc8c; text-shadow:0 0 18px rgba(246,215,122,.35); }
.app-popup-dialog.is-promo .app-popup-body { color:#e3e7ee; }
.app-popup-check.is-switch { align-items:center; justify-content:space-between; gap:12px; color:#e6ebf2; }
.app-popup-check.is-switch input.toggle-switch { width:44px; height:26px; margin:0; }
.app-popup-note { margin:0; color:#8d97a5; font-size:14px; line-height:1.45; }
/* Updated terms popup (js/terms-update.js). The terms scroll; the agreement stays pinned below them. */
.terms-update-dialog { width:min(560px,calc(100vw - 24px)); max-height:calc(100dvh - 32px); display:none; flex-direction:column; }
.terms-update-dialog[open] { display:flex; }
.terms-update-dialog h2 { font-family:Georgia,"Times New Roman",serif; font-weight:400; font-size:24.5px; }
.terms-update-intro { margin:0 0 12px; color:#c9d1dc; font-size:16px; line-height:1.5; }
.terms-update-scroll { flex:1 1 auto; min-height:0; overflow-y:auto; -webkit-overflow-scrolling:touch; padding:4px 14px 16px; border:1px solid #2f3846; border-radius:12px; background:#11161d; }
.terms-update-scroll:focus-visible { outline:2px solid #96b7e3; outline-offset:2px; }
.terms-update-scroll .legal-page { padding:0; border:0; background:none; box-shadow:none; margin:0; max-width:none; }
.terms-update-scroll .legal-page h1 { font-size:24.5px; }
.terms-update-scroll .legal-page h2 { font-size:19.5px; margin-top:22px; }
.terms-update-scroll .legal-page p { font-size:16px; line-height:1.6; }
.terms-update-footer { flex:none; margin-top:12px; padding-top:12px; border-top:1px solid #2f3846; }
.terms-update-footer .terms-update-agree { width:100%; margin-top:8px; }
.terms-update-footer .feedback-status:empty { display:none; }
/* The Social Lobby switch: .feedback-dialog label would make it a block, leaving the knob after the text with no track. */
.terms-update-footer .two-profiles-switch { display:flex; margin:0 0 4px; color:inherit; }
.terms-update-footer .two-profiles-switch-text small { display:block; margin-top:3px; line-height:1.4; }
.terms-update-footer .terms-update-later { display:block; width:100%; margin:10px 0 0; text-align:center; }
.terms-update-note { margin:6px 0 0; color:#8f99a6; font-size:14px; text-align:center; line-height:1.4; }
.terms-update-loading { color:#a7b0bd; font-size:16px; }
/* /legal's text shown inside the member menu (Legal, Terms in Account settings): the menu page is
   its frame, so drop the page's own background glow, card and padding. */
.legal-embedded .member-portal { background:#0d1014; min-height:0; }
.legal-embedded .member-portal .shell { width:auto; max-width:none; margin:0; padding:0 0 24px; }
.legal-embedded .legal-page { margin:0; padding:0; border:0; border-radius:0; background:none; }
.legal-embedded .legal-contents { border:0; background:#141a22; }
/* A short note under a setup field (the Instagram field's "why and who sees it"). */
.member-settings-hint { margin:-4px 0 12px; color:#9aa6b6; font-size:14px; line-height:1.4; }

/* The Instagram the Grid asks an invitee for (instagram-prompt.js): a sheet over the app. */
.instagram-prompt-layer { position:absolute; inset:0; z-index:60; display:flex; align-items:flex-end; background:rgba(0,0,0,.6); }
.instagram-prompt-sheet { width:100%; margin:0; padding:22px 18px calc(18px + env(safe-area-inset-bottom)); border-top:1px solid #303640; border-radius:20px 20px 0 0; background:#151a21; }
.instagram-prompt-sheet h2 { margin:0 0 6px; font-size:23.5px; }
.instagram-prompt-lead { margin:0 0 14px; color:#c9d1dc; }
.instagram-prompt-field { display:block; font-weight:600; }
.instagram-prompt-field input { display:block; width:100%; margin-top:6px; }
.instagram-prompt-sheet .member-settings-hint { margin:8px 0 10px; }
.instagram-prompt-error { margin:0 0 10px; color:#f19a9a; font-size:14px; }
.instagram-prompt-error:empty { display:none; }
.instagram-prompt-sheet .primary-button { width:100%; }
.instagram-prompt-later { display:block; margin:10px auto 0; color:#9aa6b6; }
.member-account-tag.is-verified { border-color:#3fb27f; background:rgba(63,178,127,.16); color:#a8ecc9; }
/* Verify my Account (member-settings.js verifyPage). */
.verify-form { margin:6px 0 0; }
.verify-form .primary-button { width:100%; margin-top:4px; }
.verify-wait { margin:10px 0 0; text-align:center; }
.verify-denied { margin:4px 0 14px; padding:12px 14px; border:1px solid rgba(255,107,107,.55); border-radius:12px; background:rgba(255,80,80,.10); color:#ff8a8a; font-size:16px; line-height:1.45; font-weight:600; }
.verify-done { display:flex; flex-direction:column; align-items:center; text-align:center; padding:18px 0 6px; }
.verify-check { display:flex; align-items:center; justify-content:center; width:76px; height:76px; border-radius:50%; background:#3fb27f; color:#fff; font-size:44px; font-weight:800; box-shadow:0 0 28px rgba(63,178,127,.45); }
.verify-done-title { margin:16px 0 4px; font-size:22px; font-weight:700; color:#a8ecc9; }
.instagram-prompt-none { display:block; margin:14px auto 0; color:#96b7e3; text-align:center; text-decoration:underline; text-underline-offset:3px; }
button.instagram-prompt-none { background:none; border:0; padding:4px 8px; font:inherit; cursor:pointer; }
/* Verify on a quick FaceTime (verify-call.js, migration 216): days in columns that scroll sideways, a slot per 15 minutes. */
.verify-call-row { display:block; width:100%; margin-top:18px; }
.verify-call { display:grid; gap:12px; }
.verify-call-field { display:grid; gap:6px; font-size:14.5px; color:#9aa6b8; }
.verify-call-field input { font:inherit; font-size:17px; color:#eef1f6; background:#0e131c; border:1px solid #263042; border-radius:12px; padding:12px; }
.verify-call-scroll { overflow-x:auto; margin:0 -16px; padding:0 16px 6px; overscroll-behavior-x:contain; }
.verify-call-grid { display:grid; grid-auto-flow:column; grid-auto-columns:84px; gap:6px; }
.verify-call-day { display:grid; gap:6px; align-content:start; }
.verify-call-head { display:grid; text-align:center; font-size:14px; line-height:1.25; padding:2px 0 4px; color:#cfd7e3; }
.verify-call-head b { font-size:15px; color:#eef1f6; }
.verify-call-slot { font:inherit; font-size:14.5px; font-variant-numeric:tabular-nums; padding:9px 0; border-radius:10px; border:1px solid #263042; background:#101622; color:#eef1f6; cursor:pointer; }
.verify-call-slot.is-mine { border-color:#96b7e3; }
.verify-call-slot.is-picked { background:#96b7e3; border-color:#96b7e3; color:#0b1422; font-weight:700; }
.verify-call-slot.is-taken { background:#1b212d; border-color:transparent; color:#566175; text-decoration:line-through; cursor:not-allowed; }
.verify-call-slot:focus-visible { outline:2px solid #96b7e3; outline-offset:2px; }
.verify-call-status { margin:0; min-height:1.2em; color:#ffb4a8; font-size:15px; }
.verify-call-booked { display:grid; gap:4px; padding:14px; border-radius:16px; border:1px solid rgba(150,183,227,.45); background:rgba(150,183,227,.08); line-height:1.45; }
.verify-call-booked strong { font-size:18px; }
.verify-call-email { display:block; margin-top:6px; color:#96b7e3; text-align:center; text-decoration:underline; text-underline-offset:3px; line-height:1.4; }
.verify-call-keep, .verify-call-cancel { justify-self:center; }

/* My photos for a profile's photo slot (library-picker.js): saved photos, then the camera roll, on a layer over the app. */
.library-picker-layer { position:absolute; inset:0; z-index:80; display:flex; align-items:flex-end; background:rgba(0,0,0,.6); }
.library-picker-sheet { width:100%; max-height:85%; overflow-y:auto; margin:0; padding:20px 18px calc(18px + env(safe-area-inset-bottom)); border-top:1px solid #303640; border-radius:20px 20px 0 0; background:#151a21; }
.library-picker-sheet h3 { margin:0 0 10px; font-size:20px; }
.library-picker-status { margin:0 0 10px; color:#9aa6b6; font-size:15px; }
.library-picker-status:empty { display:none; }
.library-picker-sheet .chat-library-grid { margin-bottom:14px; }
.library-picker-sheet .chat-library-grid:empty { display:none; }
.library-picker-roll { width:100%; }
.library-picker-layer.is-grid .library-picker-roll { background:#D97757; border-color:#D97757; color:#fff; }
.library-picker-cancel { display:block; margin:10px auto 0; color:#9aa6b6; }

/* Verify my Account while not ✓ Verified (member-settings.js): a glowing red outline. */
.member-account-row.is-needs-verify { position:relative; z-index:1; border-radius:14px; box-shadow:0 0 0 2px #ff6b6b, 0 0 16px rgba(255,90,90,.55); animation:needs-verify-glow 2.4s ease-in-out infinite; }
@keyframes needs-verify-glow { 0%,100% { box-shadow:0 0 0 2px #ff6b6b, 0 0 10px rgba(255,90,90,.35); } 50% { box-shadow:0 0 0 2px #ff8585, 0 0 22px rgba(255,90,90,.75); } }
@media (prefers-reduced-motion: reduce) { .member-account-row.is-needs-verify { animation:none; } }

/* The report sheets' note under "Sextortion or threats" (account-holds.ts): it locks the member out at once. */
.report-hold-note { margin:10px 0 0; padding:10px 12px; border:1px solid rgba(242,132,138,.55); border-radius:12px; background:rgba(229,72,77,.1); color:#f6c1c3; font-size:15px; line-height:1.4; }
/* Verify with a selfie (selfie-verify.js, migration 253): the page, then the camera screen over the whole app. */
.selfie-verify { display:grid; gap:14px; }
.selfie-verify-offer { display:grid; gap:10px; margin:0 0 18px; padding:14px; border:1px solid rgba(63,178,127,.45); border-radius:14px; background:rgba(63,178,127,.08); }
.selfie-verify-offer .grid-about-text { margin:0; }
.selfie-verify-or { margin:6px 0 0; font-size:14.5px; color:#9aa6b8; text-align:center; }
.selfie-verify-steps { margin:0; padding-left:22px; display:grid; gap:8px; color:#d8e2ef; font-size:16px; line-height:1.45; }
.selfie-verify-privacy { padding:12px 14px; border:1px solid #263042; border-radius:12px; background:#0e131c; font-size:15px; line-height:1.45; color:#c4cedb; }
.selfie-verify-privacy b { display:block; margin-bottom:4px; color:#eef1f6; }
.selfie-verify-privacy p { margin:6px 0 0; }
.selfie-verify-warning { margin:0; font-size:14.5px; line-height:1.45; color:#f3c27a; }
.selfie-verify-status { margin:0; min-height:1.2em; color:#f3c27a; font-size:16px; line-height:1.45; }
.selfie-verify-start { width:100%; }
.selfie-layer { position:fixed; inset:0; z-index:2000; display:flex; flex-direction:column; background:#05070b; padding:env(safe-area-inset-top) 0 env(safe-area-inset-bottom); overflow:auto; }
.selfie-layer-box { flex:1; display:flex; flex-direction:column; justify-content:center; width:100%; max-width:640px; margin:0 auto; }
/* A face photo turned away as it uploaded (member-settings.js rejectedSheet; Jay, October 18, 2026). */
.member-photo-rejected { width:100%; box-sizing:border-box; padding:20px 18px 18px; border-top:1px solid #5a2a2a; border-radius:18px 18px 0 0; background:#141920; }
.member-photo-rejected h4 { margin:0 0 8px; font-size:20.5px; color:#ff8a80; }
.member-photo-rejected p { margin:0 0 16px; color:#e6ebf2; line-height:1.45; }
.member-photo-rejected button { display:block; width:100%; padding:12px 0; border:0; border-radius:12px; background:#96b7e3; color:#0a0d15; font-weight:700; font-size:17px; }
.face-reverify-note { color:#f3c27a; }
/* The Instagram prompt's reminder about the Hush photo (instagram-prompt.js). */
.instagram-prompt-tip { margin:14px 0 0; padding:10px 12px; border:1px solid rgba(217,119,87,.45); border-radius:12px; background:rgba(217,119,87,.08); color:#f0c3b2; font-size:14.5px; line-height:1.4; }
/* "One last step" (instagram-prompt.js; Jay, October 18, 2026): the selfie check first, the Instagram review second. */
.instagram-prompt-lead.is-strong { font-weight:700; color:#eef1f6; }
.instagram-prompt-selfie { display:flex; flex-direction:column; gap:8px; margin-bottom:6px; }
.instagram-prompt-quick { margin:0; color:#c9d1dc; font-size:15px; }
.instagram-prompt-verify { background:#3fa66a; color:#fff; }
