/* =========================================================================
   PERFECT MARRY v2.3 — Master Stylesheet (refined palette)
   Palette:  Red #D61F26  ·  Gold #C68A3A  ·  Navy #2F4A7D
   Fonts:    Fraunces (display) · Poppins (body) · Kalam (script)
   Notes:    Mobile-first. Light theme only. Sticky header on all breakpoints.
             Curved bottom-nav on mobile. Dashboard sidebar visible on desktop,
             overlay drawer on mobile. 
   -------------------------------------------------------------------------
   TABLE OF CONTENTS
   Part 1 · Foundation
      1. Design tokens (CSS variables)
      2. Reset & base
      3. Utility classes
      4. Buttons
   Part 2 · Global chrome
      5. Top strip (dark bar above header)
      6. Header (sticky on all breakpoints)
      7. Side drawer (mobile menu)
      8. Hero carousel (home banner)
      9. News ticker
   Part 3 · Home page sections
     10. Why choose us (image + icon rows)
     11. Metrics
     12. Mandala + toran dividers
     13. Sections + category tabs / cards
     14. Metrics section (gradient strip)
   Part 4 · Profile cards & lists
     15. Profile card + compat score + premium ribbon
     16. Profile swiper (horizontal scroll-snap)
     17. Diet badges (veg / nonveg / vegan)
     18. Mobile compact featured
   Part 5 · CMS content
     19. Story cards
     20. Blog cards
     21. Events / pricing / FAQ / timeline
     22. Forms · wizard · OTP
     23. CTA banner
     24. Get-the-app
   Part 6 · Footer & nav chrome
     25. Site footer
     26. Bottom nav (mobile only, curved)
     27. Floating action button
     28. Toast notifications
   Part 7 · App pages
     29. Search results (filter sidebar + grid)
     30. Profile page (detail view)
     31. Dashboard (desktop sidebar + mobile drawer)
     32. Chat / messages
     33. Page hero (CMS pages)
     34. Scroll-reveal animation
     35. Responsive breakpoints
     36. Scrollbar
     37. Legacy compatibility (older class names)
   Part 8 · Page-specific (38.1 – 38.17)
     38.1  Auth pages (login / register / forgot)
     38.2  Register wizard
     38.3  Dashboard (main page — old structure)
     38.4  Profile page (profile.html)
     38.5  Search results
     38.6  Messages / chat (messages.html)
     38.7  Diet labels (standalone .veg / .non-veg)
     38.8  FAQ & blog categories
     38.9  Events page
     38.10 About page timeline
     38.11 Pricing / feature lists
     38.12 Coming soon (notify form)
     38.13 Careers job list
     38.14 Legal pages (privacy / terms / refund)
     38.15 Hero variants (.hero / .has-hero)
     38.16 Misc utility / fixes
     38.17 Final coverage (remaining classes)
   Part 9 · Layout patches (39.x, 40.x, 41.x)
     39.1  Register wizard step visibility
     39.2  Login social buttons
     39.3  Search-results row/col layout
     39.4  Profile-hero card-styling removal
     39.5  Hero section wrapper
     39.7  Messages dash-main flex
     39.8  Link underline cleanup
     40.x  Hero two-column · auth buttons · gallery · contact gate · lightbox · completion-ring · chat compose · sidebar auto-scroll · hero responsive
     41.x  Bottom-nav middle circle · hero mobile · metrics · scan-to-download · page-hero heading · interests/shortlist grids · safety-tips · dashboard · form-section headings · messages gap · NRI grid · payment coupon · search-results accordion · manage photos · video-profile · contact · report-misuse · cat-panel · legacy alias
   Part 10 · Brand mark & polish (42.x – 50.x)
     42.x  Image logo · hero carousel red backdrop · sticky mobile header · bottom-nav · page-hero contrast · footer profiles-by · view-all rows · directory pages · profile meta · blog-post banner · astrology · search-results grid · mobile filter modal · logout modal · payment · report-misuse · mobile hero gap · typography tweaks
     43.x  Grid-view mobile 2-per-row
     44.x  Mobile filter modal slide-in · desktop filter sidebar · desktop list-view innovative cards · body scroll-lock
     45.x  Filter modal drawer · sidebar buttons · view-toggle · 4-corner card badges · list-view overrides
     46.x  Mobile filter drawer · badge 4-corner layout · list-view overrides
     47.x  Premium ribbon clipping · filter sidebar scroll
     48.x  Stat tile grid · tile · icon · color rotation · label · value · tap feedback · neutralize old rules
     49.x  Mobile filter drawer · header gradient · body+foot layout · desktop sidebar buttons · grid/list pill toggle · mobile toolbar · 4-corner badge · reduced-motion · scroll-lock
     50.x  Sticky header · bottom nav curved notch · content padding · reduced-motion
   Part 11 · List-card system & profile variants (53.x – 57.x)
     53.x  List card container · header bar · body · photo · data grid · badges · action bar · responsive
     54.x  Tier ribbon · tier card · tier badge · field-label icons · header icons · grid-view ribbons
     55.x  Grid member-id · list header · chat-now blink · last-login · mobile list view
     56.x  Profile variants (shared, A Story, B Timeline, C Orbits, D Magazine, mobile, "My Profile" cards)
     57.x  Partner profile view (profile-view.html) — demo bar, hero, photo states, thumbs, match bar, name col, stat cards, details divider, section cards, horoscope yantra, similar profiles, lightbox, mobile

   Patches at file end (appended over time):
   · Press media tabs · advertise.html · upload-id.html ·
     Login button styling · Desktop nav centering ·
     Filter sidebar tinted sections · Toggle-hide rules
   ========================================================================= */


/* ---------- 1. DESIGN TOKENS ---------- */
:root {
  /* ===== Brand colors (Perfect Marry refined palette) ===== */
  /* Legacy variable names (kept for backwards compatibility — values match new brand) */
  --green:         #D61F26;   /* maps to Royal Red */
  --green-dark:    #B71C22;
  --green-light:   #fde9ea;
  --orange:        #C68A3A;   /* maps to Warm Gold */
  --orange-dark:   #A8742A;
  --orange-light:  #f5e8d4;
  --gold:          #C68A3A;
  --gold-dark:     #A8742A;
  --gold-light:    #f5e8d4;
  --rose:          #D61F26;
  --navy:          #2F4A7D;
  --navy-dark:     #1f3257;

  /* ===== Brand-name aliases (prefer these going forward) ===== */
  --brand-red:        #D61F26;   /* Royal Red — primary CTAs, logo */
  --brand-red-hover:  #B71C22;   /* Darker Red — hover state */
  --brand-gold:       #C68A3A;   /* Warm Gold — premium feel, icons */
  --brand-gold-dark:  #A8742A;   /* Dark Gold Accent — dividers, hover */
  --brand-blue:       #2F4A7D;   /* Deep Blue — taglines, links */

  /* ===== Gradients (premium look — hero, buttons, app headers) ===== */
  --grad-red:     linear-gradient(135deg, #D61F26 0%, #F04A50 100%);
  --grad-gold:    linear-gradient(135deg, #C68A3A 0%, #E5B76E 100%);
  --grad-luxury:  linear-gradient(135deg, #D61F26 0%, #C68A3A 100%);

  /* ===== Neutrals (per UI spec) ===== */
  --ink:           #333333;   /* Headings */
  --slate:         #666666;   /* Subtext */
  --muted:         #8a94a6;
  --line:          #DDDDDD;   /* Light Grey borders */
  --line-soft:     #f0f1f4;

  /* ===== Surfaces ===== */
  --bg-page:       #FFFFFF;   /* Pure White */
  --bg-card:       #FFFFFF;
  --bg-soft:       #F2F2F2;   /* Soft White (sections) */

  /* ===== Semantic ===== */
  --danger:        #d32f2f;
  --warning:       #f9a825;
  --info:          #1976d2;
  --success:       #2e7d32;

  /* ===== Typography ===== */
  --font-display:  'Fraunces', Georgia, serif;
  --font-body:     'Poppins', system-ui, -apple-system, sans-serif;
  --font-script:   'Kalam', cursive;

  /* ===== Radius ===== */
  --r-sm:          8px;
  --r-md:          14px;
  --r-lg:          20px;
  --r-xl:          28px;

  /* ===== Shadows ===== */
  --sh-sm:         0 2px 6px rgba(0, 0, 0, 0.06);
  --sh-md:         0 6px 18px rgba(0, 0, 0, 0.08);
  --sh-lg:         0 12px 32px rgba(0, 0, 0, 0.12);
  --sh-green:      0 6px 20px rgba(214, 31, 38, 0.28);   /* red shadow */
  --sh-orange:     0 6px 20px rgba(198, 138, 58, 0.28);  /* gold shadow */
  --sh-red:        0 6px 20px rgba(214, 31, 38, 0.28);
  --sh-gold:       0 6px 20px rgba(198, 138, 58, 0.28);
  --sh-blue:       0 6px 20px rgba(47, 74, 125, 0.28);

  /* ===== Motion ===== */
  --t-fast:        0.2s ease;
  --t-med:         0.35s ease;
  --ease:          cubic-bezier(0.4, 0, 0.2, 1);
}


/* ---------- 2. RESET & BASE ---------- */
*,
*::before,
*::after {
  box-sizing: border-box;
}

html {
  scroll-behavior: smooth;
  /* `overflow-x: clip` prevents horizontal scroll WITHOUT killing position:sticky on descendants.
     Previous value `hidden` was silently downgrading .site-header from sticky to static. */
  overflow-x: clip;
  -webkit-text-size-adjust: 100%;
}

body {
  margin: 0;
  font-family: var(--font-body);
  font-size: 15px;
  color: var(--ink);
  background: var(--bg-page);
  line-height: 1.6;
  /* Same as html — use clip, not hidden, so descendant sticky elements work */
  overflow-x: clip;
  -webkit-font-smoothing: antialiased;
}

h1, h2, h3, h4, h5, h6 {
  font-family: var(--font-display);
  font-weight: 600;
  letter-spacing: -0.01em;
  line-height: 1.22;
  color: var(--ink);
  margin: 0 0 10px;
}

a {
  /* Per brand spec: links use Deep Blue for trust/balance */
  color: var(--brand-blue);
  text-decoration: none;
  transition: color var(--t-fast);
}
a:hover {
  color: var(--brand-red);
}

img {
  max-width: 100%;
  display: block;
}

button {
  font-family: inherit;
  cursor: pointer;
}


/* ---------- 3. UTILITY CLASSES ---------- */
.text-green   { color: var(--green-dark) !important; }
.text-orange  { color: var(--orange-dark) !important; }
.text-gold    { color: var(--gold-dark) !important; }
.bg-soft      { background: var(--bg-soft) !important; }

.script-text {
  font-family: var(--font-script);
  font-weight: 700;
  color: var(--orange);
}

.section-title {
  text-align: center;
  margin-bottom: 34px;
  position: relative;
  z-index: 2;
  padding: 0 16px;
}
.section-title .hl-green  { color: var(--green-dark); font-style: italic; }
.section-title .hl-orange { color: var(--orange);     font-style: italic; }

.section {
  padding: 56px 0;
  position: relative;
}

.mandala-bg {
  position: relative;
  overflow: hidden;
}
.mandala-bg::before {
  content: '';
  position: absolute;
  inset: 0;
  background-image:
    radial-gradient(circle at 10% 20%, rgba(198, 138, 58, 0.08) 0, transparent 35%),
    radial-gradient(circle at 90% 80%, rgba(214, 31, 38, 0.08) 0, transparent 40%);
  pointer-events: none;
  z-index: 0;
}
.mandala-bg > * {
  position: relative;
  z-index: 1;
}

.toran-divider {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  margin: 12px 0 28px;
  color: var(--gold);
}
.toran-divider::before,
.toran-divider::after {
  content: '';
  flex: 0 0 50px;
  height: 1px;
  background: linear-gradient(90deg, transparent, var(--gold), transparent);
}
.toran-divider i {
  font-size: 18px;
  color: var(--orange);
}


/* ---------- 4. BUTTONS ---------- */
.btn {
  font-family: var(--font-body);
  font-weight: 500;
  font-size: 14px;
  border-radius: var(--r-sm);
  border: none;
  padding: 11px 22px;
  transition: all var(--t-fast);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  cursor: pointer;
}

.btn-green {
  background: var(--green);
  color: #fff;
  box-shadow: var(--sh-green);
}
.btn-green:hover {
  background: var(--green-dark);
  color: #fff;
  transform: translateY(-2px);
}

.btn-orange {
  background: var(--orange);
  color: #fff;
  box-shadow: var(--sh-orange);
}
.btn-orange:hover {
  background: var(--orange-dark);
  color: #fff;
  transform: translateY(-2px);
}

.btn-gold {
  background: linear-gradient(135deg, var(--gold) 0%, var(--gold-dark) 100%);
  color: #fff;
  box-shadow: 0 6px 16px rgba(198, 138, 58, 0.35);
}
.btn-gold:hover {
  color: #fff;
  filter: brightness(1.06);
  transform: translateY(-2px);
}

/* Perfect Marry brand-name aliases — prefer these in new markup.
   Old .btn-green / .btn-orange continue to work (they map to the same colors). */
.btn-red,
.btn-primary-brand {
  background: var(--brand-red);
  color: #fff;
  box-shadow: var(--sh-red);
}
.btn-red:hover,
.btn-primary-brand:hover {
  background: var(--brand-red-hover);
  color: #fff;
  transform: translateY(-2px);
}
.btn-navy,
.btn-blue {
  background: var(--brand-blue);
  color: #fff;
  box-shadow: var(--sh-blue);
}
.btn-navy:hover,
.btn-blue:hover {
  background: var(--navy-dark);
  color: #fff;
  transform: translateY(-2px);
}

/* ===== Gradient buttons (premium feel — hero, CTAs) ===== */
.btn-grad-red {
  background: var(--grad-red);
  color: #fff;
  box-shadow: var(--sh-red);
  border: none;
}
.btn-grad-red:hover {
  filter: brightness(1.06);
  color: #fff;
  transform: translateY(-2px);
}
.btn-grad-gold {
  background: var(--grad-gold);
  color: #fff;
  box-shadow: var(--sh-gold);
  border: none;
}
.btn-grad-gold:hover {
  filter: brightness(1.06);
  color: #fff;
  transform: translateY(-2px);
}
.btn-grad-luxury {
  background: var(--grad-luxury);
  color: #fff;
  box-shadow: 0 6px 20px rgba(214, 31, 38, 0.20);
  border: none;
}
.btn-grad-luxury:hover {
  filter: brightness(1.06);
  color: #fff;
  transform: translateY(-2px);
}

/* ===== Background utilities (per UI Usage Guide) ===== */
.bg-soft-white  { background: var(--bg-soft) !important; }
.bg-pure-white  { background: #FFFFFF !important; }
.bg-grad-red    { background: var(--grad-red) !important; }
.bg-grad-gold   { background: var(--grad-gold) !important; }
.bg-grad-luxury { background: var(--grad-luxury) !important; }

/* ===== Text utilities ===== */
.text-brand-red  { color: var(--brand-red) !important; }
.text-brand-gold { color: var(--brand-gold) !important; }
.text-brand-blue { color: var(--brand-blue) !important; }
.text-heading    { color: var(--ink) !important; }    /* #333333 */
.text-subtext    { color: var(--slate) !important; }  /* #666666 */

.btn-outline-green {
  background: transparent;
  color: var(--green-dark);
  border: 1.5px solid var(--green);
}
.btn-outline-green:hover {
  background: var(--green);
  color: #fff;
}

.btn-outline-orange {
  background: transparent;
  color: var(--orange-dark);
  border: 1.5px solid var(--orange);
}
.btn-outline-orange:hover {
  background: var(--orange);
  color: #fff;
}

.btn-ghost {
  background: transparent;
  color: var(--ink);
}
.btn-ghost:hover {
  background: var(--bg-soft);
  color: var(--green-dark);
}

/* ---------- 5. TOP STRIP (dark bar above header) ---------- */
.top-strip {
  background: var(--ink);
  color: #dfe2e8;
  font-size: 12px;
  padding: 7px 0;
  letter-spacing: 0.03em;
}
/* Apply flex to the container-fluid the HTML actually uses */
.top-strip .container-fluid,
.top-strip .strip-inner {
  display: flex;
  justify-content: space-between;
  align-items: center;
  flex-wrap: wrap;
  gap: 10px;
}
.top-strip i { color: var(--gold); margin-right: 4px; }
.top-strip a {
  color: #dfe2e8;
  margin-left: 14px;
  font-size: 12px;
  transition: color var(--t-fast);
}
.top-strip a:first-of-type { margin-left: 0; }
.top-strip a:hover { color: var(--gold); }


/* ---------- 6. HEADER (sticky on ALL breakpoints) ---------- */
.site-header {
  position: sticky;
  top: 0;
  z-index: 1000;
  background: #ffffff;
  border-bottom: 1px solid var(--line);
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.04);
  transition: box-shadow var(--t-fast);
}
.site-header.scrolled {
  box-shadow: var(--sh-md);
}

.site-header .navbar {
  min-height: 70px;
  padding: 10px 0;
}

.brand-logo {
  font-family: var(--font-display);
  font-size: 22px;
  font-weight: 700;
  color: var(--green-dark) !important;
  display: flex;
  align-items: center;
  gap: 10px;
  text-decoration: none;
}
.brand-logo .logo-mark {
  width: 40px;
  height: 40px;
  background: linear-gradient(135deg, var(--orange) 0%, var(--green) 100%);
  border-radius: 50%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: #fff;
  font-family: var(--font-display);
  font-size: 22px;
  font-weight: 700;
  box-shadow: var(--sh-orange);
  flex-shrink: 0;
}
.brand-logo small {
  font-family: var(--font-body);
  font-size: 10px;
  letter-spacing: 0.22em;
  color: var(--gold-dark);
  display: block;
  line-height: 1;
  margin-top: 3px;
  font-weight: 500;
  text-transform: uppercase;
}

.navbar .nav-link {
  color: var(--ink) !important;
  font-weight: 500;
  font-size: 14px;
  padding: 8px 14px !important;
  position: relative;
  transition: color var(--t-fast);
}
.navbar .nav-link:hover {
  color: var(--green-dark) !important;
}
.navbar .nav-link.active::after {
  content: '';
  position: absolute;
  bottom: 2px;
  left: 14px;
  right: 14px;
  height: 2px;
  background: var(--orange);
  border-radius: 2px;
}

.icon-btn {
  background: transparent;
  border: 1px solid var(--line);
  width: 38px;
  height: 38px;
  border-radius: 50%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: var(--ink);
  transition: all var(--t-fast);
  position: relative;
  flex-shrink: 0;
}
.icon-btn:hover {
  background: var(--green-light);
  border-color: var(--green);
  color: var(--green-dark);
}
.icon-btn .dot {
  position: absolute;
  top: 7px;
  right: 9px;
  width: 8px;
  height: 8px;
  background: var(--orange);
  border-radius: 50%;
  border: 2px solid #fff;
}

.hamburger-btn {
  background: transparent;
  border: none;
  width: 42px;
  height: 42px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: var(--ink);
  font-size: 24px;
}


/* ---------- 7. SIDE DRAWER (mobile menu) ---------- */
.drawer-backdrop {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.5);
  opacity: 0;
  visibility: hidden;
  transition: all var(--t-med);
  z-index: 1998;
}
.drawer-backdrop.open {
  opacity: 1;
  visibility: visible;
}

.side-drawer {
  position: fixed;
  top: 0;
  left: 0;
  height: 100vh;
  width: min(320px, 85vw);
  background: #fff;
  z-index: 1999;
  transform: translateX(-100%);
  transition: transform var(--t-med);
  display: flex;
  flex-direction: column;
  box-shadow: var(--sh-lg);
}
.side-drawer.open {
  transform: translateX(0);
}

.drawer-head {
  background: linear-gradient(135deg, var(--green) 0%, var(--green-dark) 100%);
  color: #fff;
  padding: 26px 22px;
  position: relative;
}
.drawer-head h5 {
  color: #fff;
  font-size: 17px;
  margin-bottom: 4px;
}
.drawer-head p {
  color: rgba(255, 255, 255, 0.85);
  font-size: 13px;
  margin: 0;
}
.drawer-close {
  position: absolute;
  top: 12px;
  right: 12px;
  background: rgba(255, 255, 255, 0.2);
  border: none;
  color: #fff;
  width: 34px;
  height: 34px;
  border-radius: 50%;
}

.drawer-body {
  flex: 1;
  overflow-y: auto;
  padding: 10px 0;
}
.drawer-section-label {
  padding: 14px 22px 6px;
  font-size: 11px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--muted);
  font-weight: 600;
}
.drawer-item {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 12px 22px;
  color: var(--ink);
  font-size: 14px;
  font-weight: 500;
  transition: all var(--t-fast);
  border-left: 3px solid transparent;
}
.drawer-item:hover {
  background: var(--green-light);
  border-left-color: var(--green);
  color: var(--green-dark);
  padding-left: 26px;
}
.drawer-item i {
  width: 20px;
  color: var(--orange);
  font-size: 18px;
}


/* ---------- 8. HERO CAROUSEL (home banner) ---------- */
.hero-carousel {
  position: relative;
  overflow: hidden;
  /* Solid dark navy — matches the .hero-slide dark overlay so during slide
     transitions any momentarily-revealed area blends seamlessly with the
     slide images and overlay (no red flash, no white gap). */
  background: #141826;
}

.hero-slide {
  position: relative;
  min-height: 520px;
  color: #fff;
  display: flex;
  align-items: center;
  padding: 40px 6%;
  background-size: cover;
  background-position: center;
}
.hero-slide::before {
  content: '';
  position: absolute;
  inset: 0;
  /* Dark overlay (left dark for text readability → right transparent for image visibility).
     Neutral dark works with any photo — no color tint conflict with slide images. */
  background: linear-gradient(100deg,
    rgba(20, 24, 38, 0.78) 0%,
    rgba(20, 24, 38, 0.55) 45%,
    rgba(20, 24, 38, 0.15) 100%);
}
.hero-slide .container,
.hero-slide .hero-content {
  position: relative;
  z-index: 2;
  max-width: 1100px;
  width: 100%;
  margin: 0 auto;
}
/* Hero search form inside the hero — wrap gracefully on smaller viewports */
.hero-slide .hero-form {
  margin-top: 18px;
  max-width: 900px;
}
@media (max-width: 991px) {
  .hero-slide { padding: 36px 24px; }
  .hero-slide .hero-form {
    grid-template-columns: 1fr 1fr;
  }
  .hero-slide .hero-form > button { grid-column: span 2; }
}
@media (max-width: 575px) {
  .hero-slide { padding: 28px 18px; }
  .hero-slide .hero-form { grid-template-columns: 1fr; }
  .hero-slide .hero-form > button { grid-column: 1; }
}

.hero-tagline {
  font-family: var(--font-script);
  color: var(--gold);
  font-size: 26px;
  margin-bottom: 4px;
}
.hero-title {
  font-size: clamp(32px, 5.5vw, 54px);
  font-weight: 700;
  color: #fff;
  line-height: 1.1;
  margin-bottom: 16px;
  max-width: 640px;
}
.hero-title em {
  font-style: italic;
  color: var(--gold);
}
.hero-sub {
  color: rgba(255, 255, 255, 0.92);
  font-size: 16px;
  max-width: 520px;
  margin-bottom: 22px;
}

.hero-stats {
  display: flex;
  gap: 28px;
  margin-top: 24px;
  flex-wrap: wrap;
}
.hero-stats .stat strong {
  display: block;
  font-family: var(--font-display);
  font-size: 26px;
  color: var(--gold);
  font-weight: 700;
}
.hero-stats .stat span {
  font-size: 11px;
  color: rgba(255, 255, 255, 0.82);
  letter-spacing: 0.12em;
  text-transform: uppercase;
}

.hero-register-card {
  background: #fff;
  border-radius: var(--r-lg);
  padding: 22px;
  box-shadow: var(--sh-lg);
  position: relative;
  overflow: hidden;
  color: var(--ink);
}
.hero-register-card::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 4px;
  background: linear-gradient(90deg, var(--green), var(--orange), var(--gold));
}
.hero-register-card h3 {
  font-size: 19px;
  margin-bottom: 4px;
  color: var(--ink);
}
.hero-register-card .tag-line {
  color: var(--slate);
  font-size: 13px;
  margin-bottom: 16px;
}
.hero-register-card .form-label {
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--slate);
  margin-bottom: 5px;
}
.hero-register-card .form-select,
.hero-register-card .form-control {
  background: var(--bg-soft);
  border: 1px solid var(--line);
  font-size: 14px;
  padding: 10px 14px;
  color: var(--ink);
  border-radius: var(--r-sm);
}
.hero-register-card .form-select:focus,
.hero-register-card .form-control:focus {
  border-color: var(--green);
  box-shadow: 0 0 0 3px rgba(214, 31, 38, 0.15);
  outline: none;
}

.hero-carousel .carousel-control-prev,
.hero-carousel .carousel-control-next {
  width: 48px;
  height: 48px;
  top: 50%;
  transform: translateY(-50%);
  background: rgba(255, 255, 255, 0.95);
  border-radius: 50%;
  margin: 0 16px;
  opacity: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  border: none;
  transition: all var(--t-fast);
}
.hero-carousel .carousel-control-prev:hover,
.hero-carousel .carousel-control-next:hover {
  background: #fff;
  transform: translateY(-50%) scale(1.08);
}
.hero-carousel .carousel-control-prev { left: 0; }
.hero-carousel .carousel-control-next { right: 0; }

.hero-carousel .carousel-control-prev-icon,
.hero-carousel .carousel-control-next-icon {
  width: 20px;
  height: 20px;
  background: none;
  position: relative;
}
.hero-carousel .carousel-control-prev-icon::before,
.hero-carousel .carousel-control-next-icon::before {
  content: '\F284';
  font-family: 'bootstrap-icons';
  color: var(--green-dark);
  font-size: 22px;
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  font-weight: 700;
}
.hero-carousel .carousel-control-next-icon::before {
  content: '\F285';
}

.hero-carousel .carousel-indicators {
  bottom: 16px;
  margin: 0 auto;
}
.hero-carousel .carousel-indicators button {
  width: 10px !important;
  height: 10px !important;
  border-radius: 50%;
  margin: 0 4px;
  border: 2px solid #fff;
  background: rgba(255, 255, 255, 0.4);
  opacity: 1;
}
.hero-carousel .carousel-indicators .active {
  background: #fff;
  width: 28px !important;
  border-radius: 5px;
}


/* ---------- 9. NEWS TICKER ---------- */
.news-ticker {
  background: var(--ink);
  color: #fff;
  padding: 10px 0;
  overflow: hidden;
}
.news-ticker .ticker-inner {
  display: flex;
  align-items: center;
}
.news-ticker .ticker-label {
  background: var(--orange);
  color: #fff;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.15em;
  padding: 5px 12px;
  border-radius: var(--r-sm);
  margin-right: 16px;
  text-transform: uppercase;
  flex-shrink: 0;
}
.ticker-wrap {
  flex: 1;
  overflow: hidden;
}
.ticker-track {
  display: flex;
  gap: 50px;
  white-space: nowrap;
  animation: ticker 40s linear infinite;
  font-size: 14px;
}
.ticker-track span::before {
  content: '◆';
  color: var(--gold);
  margin-right: 10px;
}
.news-ticker:hover .ticker-track {
  animation-play-state: paused;
}
@keyframes ticker {
  0%   { transform: translateX(0); }
  100% { transform: translateX(-50%); }
}


/* ---------- 10. WHY CHOOSE US (image + icon rows) ---------- */
.why-img {
  position: relative;
  isolation: isolate;
  padding: 18px;
}
.why-img::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  width: 90px;
  height: 90px;
  border: 2px solid var(--gold);
  border-radius: var(--r-md);
  z-index: 0;
}
.why-img::after {
  content: '';
  position: absolute;
  bottom: 0;
  right: 0;
  width: 120px;
  height: 120px;
  border: 2px solid var(--orange);
  border-radius: var(--r-md);
  z-index: 0;
}
.why-img img {
  width: 100%;
  aspect-ratio: 4 / 5;
  object-fit: cover;
  border-radius: var(--r-lg);
  box-shadow: var(--sh-lg);
  position: relative;
  z-index: 1;
}
.why-img .why-badge {
  position: absolute;
  bottom: 36px;
  left: 36px;
  background: #fff;
  padding: 10px 16px;
  border-radius: var(--r-md);
  box-shadow: var(--sh-md);
  display: flex;
  align-items: center;
  gap: 10px;
  z-index: 2;
}
.why-img .why-badge i {
  font-size: 22px;
  color: var(--green);
}
.why-img .why-badge strong {
  display: block;
  font-size: 14px;
  color: var(--ink);
}
.why-img .why-badge span {
  font-size: 12px;
  color: var(--slate);
}

.why-point {
  display: flex;
  gap: 16px;
  margin-bottom: 22px;
  align-items: flex-start;
}
.why-point .wp-icon {
  flex-shrink: 0;
  width: 52px;
  height: 52px;
  border-radius: var(--r-md);
  background: var(--green-light);
  color: var(--green-dark);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 22px;
  transition: all var(--t-fast);
}
.why-point:nth-child(even) .wp-icon {
  background: var(--orange-light);
  color: var(--orange-dark);
}
.why-point:hover .wp-icon {
  transform: rotate(-6deg) scale(1.06);
}
.why-point h5 {
  font-size: 17px;
  margin-bottom: 4px;
  color: var(--ink);
}
.why-point p {
  font-size: 14px;
  color: var(--slate);
  margin: 0;
}

.why-card {
  background: #fff;
  border: 1px solid var(--line);
  border-radius: var(--r-md);
  padding: 26px 22px;
  text-align: center;
  height: 100%;
  transition: all var(--t-fast);
}
.why-card:hover {
  transform: translateY(-4px);
  box-shadow: var(--sh-md);
  border-color: var(--green);
}
.why-card .why-icon {
  width: 62px;
  height: 62px;
  border-radius: 50%;
  background: var(--green-light);
  color: var(--green-dark);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 26px;
  margin-bottom: 14px;
}
.why-card h5 {
  font-size: 17px;
  margin-bottom: 8px;
}


/* ---------- 11. METRICS ---------- */
.metric-card {
  text-align: center;
  padding: 24px 12px;
}
.metric-card .metric-num {
  font-family: var(--font-display);
  font-size: clamp(28px, 4vw, 42px);
  font-weight: 700;
  color: var(--green-dark);
  line-height: 1;
  margin-bottom: 4px;
}
.metric-card .metric-label {
  font-size: 12px;
  color: var(--slate);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  font-weight: 500;
}


/* ---------- 12. MANDALA + TORAN DIVIDERS ---------- */
.mandala-bg {
  position: relative;
  overflow: hidden;
}
.mandala-bg::before {
  content: '';
  position: absolute;
  inset: 0;
  background-image:
    radial-gradient(circle at 10% 20%, rgba(198, 138, 58, 0.08) 0, transparent 35%),
    radial-gradient(circle at 90% 80%, rgba(214, 31, 38, 0.08) 0, transparent 40%),
    url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='180' height='180' viewBox='0 0 180 180'><g fill='none' stroke='%23C68A3A' stroke-width='0.6' opacity='0.18'><circle cx='90' cy='90' r='60'/><circle cx='90' cy='90' r='40'/><circle cx='90' cy='90' r='20'/><path d='M90 30 L90 150 M30 90 L150 90 M48 48 L132 132 M132 48 L48 132'/><circle cx='90' cy='30' r='4'/><circle cx='90' cy='150' r='4'/><circle cx='30' cy='90' r='4'/><circle cx='150' cy='90' r='4'/></g></svg>");
  background-size: auto, auto, 180px 180px;
  background-repeat: no-repeat, no-repeat, repeat;
  pointer-events: none;
  z-index: 0;
}
.mandala-bg > * { position: relative; z-index: 1; }

.toran-divider {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 12px;
  margin: 10px 0 26px;
}
.toran-divider::before,
.toran-divider::after {
  content: '';
  flex: 0 0 60px;
  height: 1px;
  background: linear-gradient(90deg, transparent, var(--gold), transparent);
}
.toran-divider i { font-size: 20px; color: var(--orange); }

/* Decorative divider (gradient bar under section titles) */
.divider {
  display: block;
  width: 80px;
  height: 3px;
  margin: 10px auto 14px;
  background: linear-gradient(90deg, var(--green), var(--orange), var(--gold));
  border-radius: 3px;
}

/* Section title highlight spans */
.hl-green  { color: var(--green-dark); }
.hl-orange { color: var(--orange); }
.hl-gold   { color: var(--gold-dark); }


/* ---------- 13. SECTIONS + CATEGORY TABS/CARDS ---------- */
.cat-tabs {
  display: flex;
  gap: 8px;
  justify-content: center;
  flex-wrap: wrap;
  margin-bottom: 28px;
}
.cat-tab {
  background: #fff;
  border: 1px solid var(--line);
  padding: 9px 18px;
  border-radius: 50px;
  font-size: 13px;
  font-weight: 500;
  color: var(--ink);
  cursor: pointer;
  transition: all var(--t-fast);
}
.cat-tab:hover { border-color: var(--green); color: var(--green-dark); }
.cat-tab.active {
  background: var(--green);
  color: #fff;
  border-color: var(--green);
  box-shadow: var(--sh-green);
}

.cat-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 14px;
}
@media (min-width: 576px) { .cat-grid { grid-template-columns: repeat(4, 1fr); } }
@media (min-width: 992px) { .cat-grid { grid-template-columns: repeat(8, 1fr); } }

.cat-item {
  background: #fff;
  border: 1px solid var(--line);
  border-radius: var(--r-md);
  padding: 20px 10px;
  text-align: center;
  text-decoration: none;
  color: var(--ink);
  transition: all var(--t-fast);
  position: relative;
  display: block;
}
.cat-item:hover {
  transform: translateY(-4px);
  border-color: var(--green);
  box-shadow: var(--sh-md);
  color: var(--ink);
}
.cat-item i {
  font-size: 28px;
  color: var(--orange);
  display: block;
  margin-bottom: 8px;
}
.cat-item .cat-name  { font-weight: 600; font-size: 14px; margin-bottom: 2px; }
.cat-item .cat-count { font-size: 12px; color: var(--muted); }


/* ---------- 14. METRICS SECTION (gradient strip) ---------- */
/* =========================================================
   METRICS SECTION — Variant A "Hero Numbers"
   Big serif numbers · floating glass icon orb above ·
   uppercase tracked label · accent bar
   ========================================================= */
.metrics-section {
  background:
    radial-gradient(800px 400px at 80% 0%, rgba(255, 255, 255, 0.08), transparent 60%),
    radial-gradient(600px 300px at 10% 100%, rgba(255, 255, 255, 0.06), transparent 60%),
    linear-gradient(135deg, var(--brand-red) 0%, var(--brand-gold-dark) 60%, var(--brand-gold) 100%);
  color: #fff;
  padding: 80px 0 90px;
  position: relative;
  overflow: hidden;
}
.metrics-section::before {
  content: '';
  position: absolute;
  top: -120px; right: -120px;
  width: 420px; height: 420px;
  background: radial-gradient(circle, rgba(255, 255, 255, 0.08), transparent 70%);
  border-radius: 50%;
  pointer-events: none;
}
.metrics-section::after {
  content: '';
  position: absolute;
  bottom: -160px; left: -120px;
  width: 420px; height: 420px;
  background: radial-gradient(circle, rgba(255, 255, 255, 0.06), transparent 70%);
  border-radius: 50%;
  pointer-events: none;
}

/* Card layout */
.metrics-section .metric-card {
  text-align: center;
  color: #fff;
  position: relative;
  padding: 14px 8px;
}

/* Floating glass-morphism icon orb */
.metrics-section .m-icon {
  width: 60px;
  height: 60px;
  margin: 0 auto 16px;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.15);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  border: 1.5px solid rgba(255, 255, 255, 0.4);
  display: flex;
  align-items: center;
  justify-content: center;
  color: #fff;
  transition: transform 0.4s var(--ease), background 0.4s ease;
}
.metrics-section .m-icon svg {
  width: 30px;
  height: 30px;
  stroke: currentColor;
  fill: none;
  stroke-width: 1.6;
  stroke-linecap: round;
  stroke-linejoin: round;
}
.metrics-section .metric-card:hover .m-icon {
  transform: translateY(-4px) scale(1.05);
  background: rgba(255, 255, 255, 0.22);
}

/* Hero serif numbers */
.metrics-section .m-num {
  font-family: var(--font-display);
  font-size: clamp(40px, 5vw, 64px);
  font-weight: 700;
  line-height: 1;
  letter-spacing: -0.04em;
  color: #fff;
  text-shadow: 0 4px 24px rgba(0, 0, 0, 0.18);
}

/* Uppercase label */
.metrics-section .m-label {
  font-size: 14px;
  margin-top: 10px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  font-weight: 500;
  color: rgba(255, 255, 255, 0.92);
  font-family: var(--font-body);
}

/* White accent bar below label */
.metrics-section .m-bar {
  width: 32px;
  height: 3px;
  background: rgba(255, 255, 255, 0.65);
  border-radius: 3px;
  margin: 14px auto 0;
  transition: width 0.4s var(--ease), background 0.4s ease;
}
.metrics-section .metric-card:hover .m-bar {
  width: 56px;
  background: #fff;
}

/* Heading block */
.metrics-section .metrics-heading {
  text-align: center;
  color: #fff;
  margin-bottom: 50px;
}
.metrics-section .metrics-heading .script-text {
  color: var(--gold-light);
  display: block;
  font-size: 18px;
  margin-bottom: 8px;
  font-style: italic;
  letter-spacing: 0.04em;
}
.metrics-section .metrics-heading h2 {
  color: #fff;
  font-family: var(--font-display);
  font-weight: 700;
  font-size: clamp(24px, 4vw, 36px);
  margin-bottom: 8px;
  letter-spacing: -0.02em;
}
.metrics-section .metrics-heading p {
  color: rgba(255, 255, 255, 0.88);
  font-size: 15px;
  margin: 0;
}

/* Mobile tweaks */
@media (max-width: 767.98px) {
  .metrics-section { padding: 60px 0 70px; }
  .metrics-section .metrics-heading { margin-bottom: 36px; }
  .metrics-section .m-icon { width: 52px; height: 52px; margin-bottom: 12px; }
  .metrics-section .m-icon svg { width: 26px; height: 26px; }
  .metrics-section .m-num { font-size: 38px; }
  .metrics-section .m-label { font-size: 12px; letter-spacing: 0.1em; }
  .metrics-section .m-bar { width: 26px; margin-top: 10px; }
}


/* ---------- 15. PROFILE CARD + COMPAT SCORE + PREMIUM RIBBON ---------- */
.profile-card {
  background: #fff;
  border-radius: var(--r-md);
  overflow: hidden;
  box-shadow: var(--sh-sm);
  border: 1px solid var(--line);
  transition: all var(--t-med);
  height: 100%;
  display: flex;
  flex-direction: column;
  position: relative;
  text-decoration: none;
  color: inherit;
}
.profile-card:hover {
  transform: translateY(-5px);
  box-shadow: var(--sh-lg);
  color: inherit;
  text-decoration: none;
}
.profile-card.premium {
  border: 1.5px solid var(--gold);
  box-shadow: 0 4px 16px rgba(198, 138, 58, 0.18);
}

.profile-card .pc-img {
  position: relative;
  aspect-ratio: 1 / 1.08;
  overflow: hidden;
  background: var(--bg-soft);
}
.profile-card .pc-img img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform var(--t-med);
}
.profile-card:hover .pc-img img { transform: scale(1.06); }

.verified-badge {
  position: absolute;
  top: 10px;
  right: 10px;
  background: var(--info);
  color: #fff;
  font-size: 10px;
  font-weight: 600;
  padding: 3px 8px;
  border-radius: 20px;
  display: inline-flex;
  align-items: center;
  gap: 3px;
  z-index: 2;
}
.online-dot {
  position: absolute;
  top: 12px;
  left: 12px;
  width: 10px;
  height: 10px;
  background: var(--green);
  border-radius: 50%;
  border: 2px solid #fff;
  box-shadow: 0 0 0 3px rgba(214, 31, 38, 0.25);
  z-index: 2;
}
.compat-score {
  position: absolute;
  bottom: 10px;
  right: 10px;
  background: rgba(255, 255, 255, 0.95);
  backdrop-filter: blur(6px);
  color: var(--green-dark);
  font-size: 11px;
  font-weight: 700;
  padding: 4px 9px;
  border-radius: 20px;
  z-index: 2;
  display: inline-flex;
  align-items: center;
  gap: 3px;
}
.compat-score i { color: var(--orange); }

.premium-ribbon {
  position: absolute;
  top: 12px;
  left: -30px;
  background: linear-gradient(135deg, var(--gold), var(--gold-dark));
  color: #fff;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.15em;
  padding: 4px 32px;
  transform: rotate(-45deg);
  z-index: 3;
  box-shadow: var(--sh-sm);
}

.profile-card .pc-body {
  padding: 14px;
  flex: 1;
  display: flex;
  flex-direction: column;
}
.profile-card .pc-name {
  font-family: var(--font-display);
  font-size: 17px;
  font-weight: 600;
  color: var(--ink);
  margin-bottom: 2px;
}
.profile-card .pc-meta {
  font-size: 12.5px;
  color: var(--slate);
  margin-bottom: 8px;
}
.profile-card .pc-detail {
  font-size: 12.5px;
  color: var(--muted);
  display: flex;
  align-items: center;
  gap: 6px;
  margin-bottom: 3px;
}
.profile-card .pc-detail i {
  color: var(--orange);
  width: 12px;
  font-size: 11px;
}

.profile-card .pc-actions {
  display: flex;
  gap: 6px;
  padding: 0 14px 14px;
  margin-top: auto;
}
.pc-action {
  flex: 1;
  background: var(--bg-soft);
  border: 1px solid var(--line);
  border-radius: var(--r-sm);
  padding: 9px 6px;
  color: var(--slate);
  transition: all var(--t-fast);
  font-size: 13px;
  font-weight: 500;
  cursor: pointer;
}
.pc-action:hover {
  background: var(--green);
  border-color: var(--green);
  color: #fff;
}
.pc-action.shortlist        { color: var(--orange); border-color: var(--orange-light); }
.pc-action.shortlist:hover,
.pc-action.shortlist.active { background: var(--orange); border-color: var(--orange); color: #fff; }
.pc-action.primary          { background: var(--green); border-color: var(--green); color: #fff; }
.pc-action.primary:hover    { background: var(--green-dark); }

a.profile-card,
a.profile-card:hover { text-decoration: none; color: inherit; }


/* ---------- 16. PROFILE SWIPER (horizontal scroll-snap) ---------- */
.profile-swiper { overflow: hidden; position: relative; }
.profile-swiper .swiper-track {
  display: flex;
  gap: 14px;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  padding: 4px 0 18px;
  scrollbar-width: none;
}
.profile-swiper .swiper-track::-webkit-scrollbar { display: none; }
.profile-swiper .swiper-slide {
  flex: 0 0 78%;
  scroll-snap-align: start;
}
@media (min-width: 576px) { .profile-swiper .swiper-slide { flex: 0 0 48%; } }
@media (min-width: 768px) { .profile-swiper .swiper-slide { flex: 0 0 32%; } }
@media (min-width: 992px) { .profile-swiper .swiper-slide { flex: 0 0 24%; } }


/* ---------- 17. DIET BADGES (veg / nonveg / vegan) ---------- */
.diet-badge {
  position: absolute;
  top: 10px;
  left: 10px;
  z-index: 2;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 18px;
  height: 18px;
  background: #fff;
  border-radius: 3px;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15);
  padding: 2px;
}
/* If online-dot is present (also top-left), shift diet-badge down */
.pc-img .online-dot ~ .diet-badge { top: 40px; }

.diet-dot {
  display: block;
  width: 100%;
  height: 100%;
  position: relative;
  border: 1.5px solid var(--green);
  border-radius: 2px;
}
.diet-dot::after {
  content: '';
  position: absolute;
  inset: 2px;
  background: var(--green);
  border-radius: 50%;
}
.diet-dot.nonveg { border-color: var(--danger); }
.diet-dot.nonveg::after {
  background: var(--danger);
  border-radius: 0;
  clip-path: polygon(50% 0%, 100% 100%, 0% 100%);
  inset: 1px;
}
.diet-dot.vegan { border-color: var(--green-dark); }
.diet-dot.vegan::after {
  background: var(--green-dark);
  border-radius: 0;
  clip-path: polygon(50% 0%, 100% 50%, 85% 100%, 15% 100%, 0 50%);
  inset: 1px;
}


/* ---------- 18. MOBILE COMPACT FEATURED ---------- */
@media (max-width: 767px) {
  .featured-compact-mobile {
    overflow-x: auto;
    scrollbar-width: none;
  }
  .featured-compact-mobile::-webkit-scrollbar { display: none; }
  .featured-compact-mobile .row {
    flex-wrap: nowrap;
    padding: 4px;
  }
  .featured-compact-mobile .row > [class*="col-"] {
    flex: 0 0 72%;
    max-width: 72%;
  }
}


/* ---------- 19. STORY CARDS ---------- */
.story-card {
  background: #fff;
  border-radius: var(--r-lg);
  overflow: hidden;
  box-shadow: var(--sh-md);
  transition: all var(--t-med);
  height: 100%;
  border: 1px solid var(--line);
}
.story-card:hover {
  transform: translateY(-5px);
  box-shadow: var(--sh-lg);
}
.story-card .story-img {
  position: relative;
  aspect-ratio: 16 / 10;
  overflow: hidden;
}
.story-card .story-img img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform var(--t-med);
}
.story-card:hover .story-img img { transform: scale(1.05); }
.story-card .story-body { padding: 22px; }
.story-card .couple-names {
  font-family: var(--font-display);
  font-weight: 700;
  font-size: 20px;
  color: var(--ink);
  margin-bottom: 4px;
}
.story-card .couple-names .and {
  color: var(--orange);
  font-style: italic;
  padding: 0 4px;
}
.story-card .wed-date {
  font-size: 12.5px;
  color: var(--orange-dark);
  font-weight: 600;
  margin-bottom: 10px;
}
.story-card .story-text {
  color: var(--slate);
  font-size: 14px;
  font-style: italic;
  line-height: 1.7;
  position: relative;
  padding-left: 14px;
  border-left: 3px solid var(--gold-light);
}


/* ---------- 20. BLOG CARDS ---------- */
.blog-card {
  background: #fff;
  border-radius: var(--r-md);
  overflow: hidden;
  box-shadow: var(--sh-sm);
  border: 1px solid var(--line);
  height: 100%;
  transition: all var(--t-med);
  display: flex;
  flex-direction: column;
}
.blog-card:hover { transform: translateY(-5px); box-shadow: var(--sh-md); }
.blog-card .blog-img { aspect-ratio: 16 / 10; overflow: hidden; }
.blog-card .blog-img img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform var(--t-med);
}
.blog-card:hover .blog-img img { transform: scale(1.06); }
.blog-card .blog-body {
  padding: 18px;
  flex: 1;
  display: flex;
  flex-direction: column;
}
.blog-card .blog-tag,
.tag-chip {
  display: inline-block;
  background: var(--green-light);
  color: var(--green-dark);
  font-size: 11px;
  font-weight: 600;
  padding: 3px 10px;
  border-radius: 20px;
  margin-bottom: 10px;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  align-self: flex-start;
}
.tag-chip { text-transform: none; letter-spacing: 0; font-weight: 500; }
.tag-chip.orange { background: var(--orange-light); color: var(--orange-dark); }
.tag-chip.gold   { background: var(--gold-light); color: var(--gold-dark); }
.blog-card h5 { font-size: 17px; line-height: 1.35; margin-bottom: 8px; }
.blog-card .blog-meta { font-size: 12px; color: var(--muted); margin-bottom: 12px; }
.blog-card .blog-readmore {
  font-size: 13px;
  font-weight: 600;
  color: var(--orange);
  margin-top: auto;
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
.blog-card .blog-readmore:hover { gap: 10px; }


/* ---------- 21. EVENTS / PRICING / FAQ / TIMELINE ---------- */
.event-card {
  display: flex;
  gap: 16px;
  background: #fff;
  border: 1px solid var(--line);
  border-radius: var(--r-md);
  padding: 16px;
}
.event-card .event-date {
  flex-shrink: 0;
  background: var(--green-light);
  color: var(--green-dark);
  padding: 10px 14px;
  border-radius: var(--r-sm);
  text-align: center;
  font-weight: 600;
  min-width: 70px;
}
.event-card .event-date small { display: block; font-size: 11px; letter-spacing: 0.05em; }
.event-card .event-date strong { font-size: 22px; font-family: var(--font-display); display: block; }

.pricing-card {
  background: #fff;
  border: 1px solid var(--line);
  border-radius: var(--r-md);
  padding: 24px;
  position: relative;
  height: 100%;
}
.pricing-card.featured { border: 2px solid var(--gold); box-shadow: var(--sh-md); }

.faq-item {
  background: #fff;
  border: 1px solid var(--line);
  border-radius: var(--r-md);
  margin-bottom: 10px;
  overflow: hidden;
}
.faq-item .faq-q {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 14px 18px;
  font-weight: 500;
  cursor: pointer;
}
/* Legacy class-based FAQ (used on faq.html). Scoped to <div> so it doesn't
   conflict with the homepage <details>-based version. */
div.faq-item .faq-a { display: none; padding: 0 18px 14px; color: var(--slate); font-size: 14px; }
div.faq-item.open .faq-a { display: block; }
div.faq-item.open .faq-q i { transform: rotate(180deg); }


/* ---------- 22. FORMS · WIZARD · OTP ---------- */
.form-control, .form-select {
  display: block;
  width: 100%;
  border-radius: var(--r-sm);
  border: 1px solid var(--line);
  padding: 10px 14px;
  font-size: 14.5px;
  color: var(--ink);
  background-color: #fff;
  font-family: var(--font-body);
}
.form-control:focus, .form-select:focus {
  outline: none;
  border-color: var(--green);
  box-shadow: 0 0 0 3px rgba(214, 31, 38, 0.12);
}
.form-label {
  font-size: 13px;
  font-weight: 500;
  color: var(--slate);
  margin-bottom: 6px;
}

.auth-card {
  background: #fff;
  border: 1px solid var(--line);
  border-radius: var(--r-lg);
  padding: 30px;
  box-shadow: var(--sh-md);
  max-width: 460px;
  margin: 0 auto;
}
.auth-card h2 { font-size: 24px; text-align: center; margin-bottom: 6px; }

.wizard-steps {
  display: flex;
  justify-content: space-between;
  margin-bottom: 24px;
  position: relative;
}
.wizard-steps::before {
  content: '';
  position: absolute;
  top: 18px;
  left: 10%;
  right: 10%;
  height: 2px;
  background: var(--line);
  z-index: 0;
}
.wizard-step {
  flex: 1;
  text-align: center;
  position: relative;
  z-index: 1;
}
.wizard-step .num {
  width: 36px;
  height: 36px;
  border-radius: 50%;
  background: #fff;
  border: 2px solid var(--line);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-weight: 600;
  color: var(--slate);
  margin-bottom: 4px;
}
.wizard-step.active .num   { background: var(--green); color: #fff; border-color: var(--green); }
.wizard-step.done .num     { background: var(--green-dark); color: #fff; border-color: var(--green-dark); }
.wizard-step .label { font-size: 11px; color: var(--muted); }
.wizard-step.active .label { color: var(--green-dark); font-weight: 600; }
.wizard-panel { display: none; }
.wizard-panel.active { display: block; animation: fadeInUp 0.35s var(--ease); }

@keyframes fadeInUp {
  from { opacity: 0; transform: translateY(10px); }
  to   { opacity: 1; transform: translateY(0); }
}

.otp-row {
  display: flex;
  gap: 10px;
  justify-content: center;
  margin: 14px 0 20px;
}
.otp-input {
  width: 48px;
  height: 56px;
  border-radius: var(--r-sm);
  border: 1.5px solid var(--line);
  background: #fff;
  text-align: center;
  font-size: 22px;
  font-weight: 700;
  color: var(--ink);
}
.otp-input:focus {
  outline: none;
  border-color: var(--green);
  box-shadow: 0 0 0 3px rgba(214, 31, 38, 0.12);
}

.photo-upload {
  border: 2px dashed var(--line);
  border-radius: var(--r-md);
  padding: 30px;
  text-align: center;
  background: var(--bg-soft);
  cursor: pointer;
}
.photo-upload:hover { border-color: var(--green); background: var(--green-light); }
.photo-upload i { font-size: 36px; color: var(--orange); }

.plan-option {
  border: 2px solid var(--line);
  border-radius: var(--r-md);
  padding: 16px;
  cursor: pointer;
  transition: all var(--t-fast);
}
.plan-option.selected { border-color: var(--green); background: var(--green-light); }


/* ---------- 23. CTA BANNER ---------- */
.cta-banner {
  background: linear-gradient(135deg, var(--green) 0%, var(--green-dark) 100%);
  color: #fff;
  padding: 60px 0;
  text-align: center;
  position: relative;
  overflow: hidden;
}
.cta-banner::before,
.cta-banner::after {
  content: '';
  position: absolute;
  border-radius: 50%;
}
.cta-banner::before {
  top: -100px; left: -100px;
  width: 350px; height: 350px;
  background: radial-gradient(circle, rgba(198, 138, 58, 0.3) 0%, transparent 70%);
}
.cta-banner::after {
  bottom: -100px; right: -100px;
  width: 400px; height: 400px;
  background: radial-gradient(circle, rgba(198, 138, 58, 0.25) 0%, transparent 70%);
}
.cta-banner > .container { position: relative; z-index: 2; }
.cta-banner h2 {
  color: #fff;
  font-size: clamp(28px, 5vw, 44px);
  margin-bottom: 12px;
}
.cta-banner h2 em { color: var(--gold-light); font-style: italic; }


/* ---------- 24. GET-THE-APP ---------- */
.get-the-app {
  background: linear-gradient(135deg, var(--green-dark), var(--orange-dark));
  color: #fff;
  padding: 50px 0;
  position: relative;
  overflow: hidden;
}
.get-the-app::before {
  content: '';
  position: absolute;
  inset: 0;
  background-image: radial-gradient(circle at 20% 30%, rgba(198, 138, 58, 0.15) 0, transparent 40%),
                    radial-gradient(circle at 80% 70%, rgba(214, 31, 38, 0.10) 0, transparent 40%);
  pointer-events: none;
}
.get-the-app > .container { position: relative; z-index: 1; }
.get-the-app h2 {
  color: #fff;
  font-size: clamp(26px, 4vw, 38px);
  margin-bottom: 10px;
}
.get-the-app h2 em { color: var(--gold-light); font-style: italic; }
.get-the-app p { color: rgba(255, 255, 255, 0.92); margin-bottom: 18px; }

.app-stats {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
  margin: 20px 0 24px;
  /* On mobile: 2 cards in row 1, 3rd card in row 2 column 1 (left-aligned) */
}
@media (min-width: 768px) {
  .app-stats {
    display: flex;
    gap: 16px;
    flex-wrap: wrap;
    justify-content: center;
  }
}
@media (min-width: 992px) { .app-stats { justify-content: flex-start; } }
.app-stat {
  background: rgba(255, 255, 255, 0.12);
  backdrop-filter: blur(6px);
  padding: 14px 16px;
  border-radius: var(--r-sm);
  text-align: center;
  min-width: 0;
}
@media (min-width: 768px) {
  .app-stat { padding: 10px 18px; min-width: 110px; }
}
.app-stat .stars { font-size: 12px; color: var(--gold-light); letter-spacing: 2px; }
.app-stat .n     { font-family: var(--font-display); font-weight: 700; font-size: 22px; color: #fff; }
.app-stat .l     { font-size: 11px; color: rgba(255, 255, 255, 0.8); }

.store-badges {
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
  justify-content: center;
}
@media (min-width: 992px) { .store-badges { justify-content: flex-start; } }

.store-badge {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  background: #000;
  color: #fff;
  padding: 10px 18px;
  border-radius: var(--r-sm);
  text-decoration: none;
}
.store-badge:hover { color: #fff; background: #222; transform: translateY(-2px); }
.store-badge i { font-size: 24px; }
.store-badge .sb-small { display: block; font-size: 10px; opacity: 0.75; line-height: 1.1; }
.store-badge .sb-big   { display: block; font-size: 14px; font-weight: 600; line-height: 1.1; }

.phone-mockup {
  width: 200px;
  height: 400px;
  background: linear-gradient(135deg, #222, #000);
  border-radius: 34px;
  padding: 8px;
  margin: 0 auto;
  box-shadow: var(--sh-lg);
  animation: float 4s ease-in-out infinite;
  position: relative;
}
@keyframes float {
  0%, 100% { transform: translateY(0); }
  50%      { transform: translateY(-10px); }
}
.phone-screen {
  width: 100%;
  height: 100%;
  background: linear-gradient(180deg, var(--green-light) 0%, #fff 100%);
  border-radius: 28px;
  overflow: hidden;
  position: relative;
  padding: 18px 10px 10px;
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.phone-screen .ph-logo {
  font-family: 'Kalam', cursive;
  color: var(--green-dark);
  text-align: center;
  font-weight: 700;
  font-size: 16px;
  margin-bottom: 6px;
}
.phone-screen .ph-card {
  display: flex;
  gap: 8px;
  align-items: center;
  background: #fff;
  padding: 6px 10px;
  border-radius: 12px;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
  font-size: 11px;
}
.phone-screen .ph-card img {
  width: 32px;
  height: 32px;
  border-radius: 50%;
  object-fit: cover;
  flex-shrink: 0;
}
.phone-screen .ph-card b     { display: block; color: var(--ink); font-size: 12px; }
.phone-screen .ph-card small { color: var(--orange); font-size: 10px; }

.qr-code svg {
  width: 140px;
  height: 140px;
  background: #fff;
  padding: 8px;
  border-radius: var(--r-sm);
  box-shadow: var(--sh-md);
}


/* ---------- 25. SITE FOOTER ---------- */
.site-footer {
  background: var(--ink);
  color: #b9c0cc;
  padding: 60px 0 30px;
  margin-top: 0;
}
.site-footer h6 {
  color: #fff;
  font-family: var(--font-body);
  font-size: 13px;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  margin-bottom: 16px;
  position: relative;
  padding-bottom: 10px;
}
.site-footer h6::after {
  content: '';
  position: absolute;
  bottom: 0;
  left: 0;
  width: 30px;
  height: 2px;
  background: var(--orange);
}
.site-footer a {
  color: #b9c0cc;
  display: block;
  padding: 4px 0;
  font-size: 13.5px;
  transition: color var(--t-fast);
}
.site-footer a:hover { color: var(--gold); }
.site-footer .brand-logo { color: #fff; margin-bottom: 12px; }
.site-footer .brand-logo small { color: var(--gold-light); }
.site-footer .foot-desc {
  color: #8a94a6;
  line-height: 1.7;
  margin-bottom: 18px;
  font-size: 14px;
}

.social-icons { display: flex; gap: 10px; }
.social-icons a {
  width: 38px;
  height: 38px;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.08);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: #fff;
  padding: 0;
}
.social-icons a:hover {
  background: var(--orange);
  transform: translateY(-3px);
}

.foot-bottom {
  border-top: 1px solid rgba(255, 255, 255, 0.08);
  padding-top: 18px;
  margin-top: 30px;
  text-align: center;
  font-size: 12.5px;
  color: #7a8596;
}


/* ---------- 26. BOTTOM NAV (mobile only, curved) ---------- */
.bottom-nav {
  display: none;
  position: fixed;
  bottom: 0;
  left: 0;
  right: 0;
  z-index: 999;
  padding: 6px 0 max(6px, env(safe-area-inset-bottom));
  background:
    url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 400 72' preserveAspectRatio='none'><path fill='%23ffffff' d='M0,14 L150,14 C158,14 160,0 172,0 L228,0 C240,0 242,14 250,14 L400,14 L400,72 L0,72 Z'/></svg>") center bottom / 100% 100% no-repeat;
  filter: drop-shadow(0 -4px 14px rgba(0, 0, 0, 0.08));
}
.bottom-nav .items {
  display: flex;
  justify-content: space-around;
  align-items: flex-end;
  max-width: 500px;
  margin: 0 auto;
  padding-top: 18px;
}
.bottom-nav a {
  color: var(--muted);
  text-align: center;
  font-size: 10px;
  font-weight: 600;
  padding: 4px 8px;
  flex: 1;
  letter-spacing: 0.02em;
  position: relative;
  text-decoration: none;
}
.bottom-nav a i {
  font-size: 20px;
  display: block;
  margin-bottom: 2px;
}
.bottom-nav a.active   { color: var(--green-dark); }
.bottom-nav a.active i { color: var(--green); }

.bottom-nav a.center-btn,
.bottom-nav a.center-highlight {
  margin-top: -28px;
  color: var(--orange-dark);
}
.bottom-nav a.center-btn i,
.bottom-nav a.center-highlight i {
  width: 52px;
  height: 52px;
  border-radius: 50%;
  background: linear-gradient(135deg, var(--orange), var(--orange-dark));
  color: #fff;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 24px;
  margin: 0 auto 4px;
  box-shadow: 0 6px 16px rgba(198, 138, 58, 0.45);
}

.bottom-nav .count-badge,
.bottom-nav .shortlist-count {
  position: relative;
}
.bottom-nav .count-badge::after,
.bottom-nav .shortlist-count::after {
  content: attr(data-count);
  position: absolute;
  top: 0;
  right: 22%;
  background: var(--orange);
  color: #fff;
  font-size: 9px;
  font-weight: 700;
  min-width: 16px;
  height: 16px;
  padding: 0 4px;
  border-radius: 8px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}


/* ---------- 27. FLOATING ACTION BUTTON ---------- */
.fab {
  display: none;
  position: fixed;
  bottom: 82px;
  right: 18px;
  background: var(--orange);
  color: #fff;
  height: 52px;
  padding: 0 20px 0 18px;
  border-radius: 26px;
  box-shadow: 0 8px 24px rgba(198, 138, 58, 0.5);
  z-index: 998;
  font-size: 14px;
  font-weight: 600;
  align-items: center;
  gap: 8px;
  animation: fabPulse 2.4s ease-in-out infinite;
  text-decoration: none;
  transition: transform var(--t-fast), opacity var(--t-fast);
}
.fab:hover { color: #fff; background: var(--orange-dark); }
.fab i { font-size: 18px; }
@keyframes fabPulse {
  0%, 100% { box-shadow: 0 8px 24px rgba(198, 138, 58, 0.5); }
  50%      { box-shadow: 0 8px 24px rgba(198, 138, 58, 0.5), 0 0 0 12px rgba(198, 138, 58, 0); }
}


/* ---------- 28. TOAST NOTIFICATIONS ---------- */
.toast-container-custom {
  position: fixed;
  top: 80px;
  right: 16px;
  left: 16px;
  z-index: 9999;
  display: flex;
  flex-direction: column;
  gap: 10px;
  pointer-events: none;
}
@media (min-width: 576px) {
  .toast-container-custom { left: auto; max-width: 340px; }
}
.c-toast {
  background: #fff;
  border-left: 4px solid var(--green);
  padding: 13px 18px;
  border-radius: var(--r-sm);
  box-shadow: var(--sh-lg);
  min-width: 260px;
  font-size: 14px;
  animation: slideIn 0.3s var(--ease);
  pointer-events: auto;
  display: flex;
  align-items: center;
  gap: 10px;
}
.c-toast.error { border-left-color: var(--danger); }
.c-toast.info  { border-left-color: var(--info); }
.c-toast i     { font-size: 18px; color: var(--green); flex-shrink: 0; }
.c-toast.error i { color: var(--danger); }
.c-toast.info  i { color: var(--info); }
@keyframes slideIn {
  from { transform: translateX(110%); opacity: 0; }
  to   { transform: translateX(0); opacity: 1; }
}


/* ---------- 29. SEARCH RESULTS (filter sidebar + grid) ---------- */
.search-layout {
  display: grid;
  grid-template-columns: 1fr;
  gap: 20px;
}
@media (min-width: 992px) {
  .search-layout { grid-template-columns: 280px 1fr; }
}
.filter-sidebar {
  background: #fff;
  border: 1px solid var(--line);
  border-radius: var(--r-md);
  padding: 18px;
}
@media (min-width: 992px) {
  .filter-sidebar {
    position: sticky;
    top: 100px;
    max-height: calc(100vh - 120px);
    overflow-y: auto;
  }
}
.filter-group {
  border-bottom: 1px solid var(--line-soft);
  padding: 12px 0;
}
.filter-group:last-child { border-bottom: none; }
.filter-group .filter-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  cursor: pointer;
  font-weight: 600;
  font-size: 14px;
}
.filter-group .filter-body { display: none; padding-top: 12px; }
.filter-group.open .filter-body { display: block; }
.filter-group.open .filter-head i { transform: rotate(180deg); }

.results-toolbar {
  display: flex;
  justify-content: space-between;
  align-items: center;
  flex-wrap: wrap;
  gap: 10px;
  margin-bottom: 18px;
  padding: 12px 16px;
  background: #fff;
  border: 1px solid var(--line);
  border-radius: var(--r-sm);
}
.view-toggle button {
  background: transparent;
  border: 1px solid var(--line);
  color: var(--slate);
  padding: 6px 10px;
  border-radius: var(--r-sm);
}
.view-toggle button.active {
  background: var(--green);
  color: #fff;
  border-color: var(--green);
}

.pagination-custom {
  display: flex;
  gap: 6px;
  justify-content: center;
  margin-top: 24px;
}
.pagination-custom a {
  width: 38px;
  height: 38px;
  border-radius: var(--r-sm);
  border: 1px solid var(--line);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: var(--ink);
  font-weight: 500;
  background: #fff;
}
.pagination-custom a.active,
.pagination-custom a:hover {
  background: var(--green);
  color: #fff;
  border-color: var(--green);
}


/* ---------- 30. PROFILE PAGE (detail view) ---------- */
.profile-hero {
  position: relative;
  border-radius: var(--r-lg);
  overflow: hidden;
  background: #fff;
  border: 1px solid var(--line);
  box-shadow: var(--sh-sm);
}
.profile-gallery {
  position: relative;
  aspect-ratio: 4 / 3;
  background: var(--bg-soft);
}
.profile-gallery img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.gallery-thumbs {
  display: flex;
  gap: 8px;
  padding: 10px;
  overflow-x: auto;
  scrollbar-width: none;
}
.gallery-thumbs::-webkit-scrollbar { display: none; }
.gallery-thumbs img {
  width: 60px;
  height: 60px;
  border-radius: var(--r-sm);
  object-fit: cover;
  cursor: pointer;
  opacity: 0.7;
  transition: all var(--t-fast);
  border: 2px solid transparent;
  flex-shrink: 0;
}
.gallery-thumbs img.active,
.gallery-thumbs img:hover {
  opacity: 1;
  border-color: var(--green);
}

/* Meta-grid: responsive grid of profile stat cards (icon + label + value).
   Individual .meta-item styling is in Section 42.9 below (centered column). */
.meta-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 10px;
  padding: 8px 0 16px;
}
@media (min-width: 576px) {
  .meta-grid { grid-template-columns: repeat(3, 1fr); gap: 12px; }
}
@media (min-width: 768px) {
  .meta-grid { grid-template-columns: repeat(4, 1fr); }
}
@media (min-width: 1200px) {
  .meta-grid { grid-template-columns: repeat(5, 1fr); }
}

.detail-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 14px;
}
@media (min-width: 768px) {
  .detail-grid { grid-template-columns: repeat(2, 1fr); }
}
.detail-grid .d-row {
  display: flex;
  gap: 10px;
  align-items: flex-start;
  padding: 10px 0;
  border-bottom: 1px solid var(--line-soft);
}
.detail-grid .d-row i {
  color: var(--orange);
  width: 20px;
  font-size: 16px;
  flex-shrink: 0;
  margin-top: 3px;
}
.detail-grid .d-row .d-lbl {
  font-size: 12px;
  color: var(--muted);
  display: block;
  margin-bottom: 2px;
}
.detail-grid .d-row .d-val {
  font-size: 14.5px;
  color: var(--ink);
  font-weight: 500;
}

.profile-tabs {
  display: flex;
  gap: 4px;
  border-bottom: 1px solid var(--line);
  margin-bottom: 22px;
  overflow-x: auto;
  scrollbar-width: none;
}
.profile-tabs::-webkit-scrollbar { display: none; }
.profile-tabs a {
  padding: 12px 18px;
  font-size: 14px;
  font-weight: 500;
  color: var(--slate);
  border-bottom: 2px solid transparent;
  white-space: nowrap;
}
.profile-tabs a.active {
  color: var(--green-dark);
  border-bottom-color: var(--orange);
}

.sticky-mobile-bar {
  display: none;
  position: fixed;
  bottom: 74px;
  left: 12px;
  right: 12px;
  background: #fff;
  border: 1px solid var(--line);
  border-radius: 50px;
  padding: 8px 12px;
  box-shadow: var(--sh-lg);
  z-index: 997;
  gap: 6px;
  align-items: center;
}


/* ---------- 31. DASHBOARD (desktop sidebar + mobile drawer) ---------- */
.dash-wrap {
  display: grid;
  grid-template-columns: 1fr;
  gap: 20px;
  padding-top: 18px;
}
@media (min-width: 992px) {
  .dash-wrap {
    grid-template-columns: 280px 1fr;
    gap: 28px;
    padding-top: 24px;
  }
}

.dash-menu-trigger {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 8px 14px;
  background: #fff;
  border: 1px solid var(--line);
  border-radius: var(--r-sm);
  font-weight: 500;
  font-size: 14px;
  margin-bottom: 12px;
  cursor: pointer;
}
@media (min-width: 992px) {
  .dash-menu-trigger { display: none; }
}

/* Sidebar: overlay drawer on mobile, inline sticky panel on desktop */
.dash-sidebar {
  position: fixed;
  top: 0;
  left: 0;
  height: 100dvh;
  width: min(300px, 85vw);
  background: #fff;
  z-index: 2000;
  padding: 20px 16px;
  transform: translateX(-100%);
  transition: transform var(--t-med);
  overflow-y: auto;
  box-shadow: 0 0 40px rgba(0, 0, 0, 0.2);
}
.dash-sidebar.open { transform: translateX(0); }

@media (min-width: 992px) {
  .dash-sidebar {
    position: sticky;
    top: 90px;
    left: auto;
    width: auto;
    height: fit-content;
    max-height: calc(100vh - 110px);
    transform: none;
    background: #fff;
    box-shadow: var(--sh-sm);
    border: 1px solid var(--line);
    border-radius: var(--r-md);
    z-index: 1;
    overflow-y: auto;
  }
  .dash-backdrop,
  .dash-sidebar .dash-close,
  .dash-sidebar .close-btn { display: none !important; }
}

.dash-backdrop {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.5);
  z-index: 1999;
  opacity: 0;
  visibility: hidden;
  transition: all var(--t-med);
}
.dash-backdrop.open { opacity: 1; visibility: visible; }

.dash-sidebar .dash-close {
  position: absolute;
  top: 10px;
  right: 10px;
  background: #fff;
  border: 1px solid var(--line);
  width: 36px;
  height: 36px;
  border-radius: 50%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 18px;
  color: var(--brand-red);
  cursor: pointer;
  z-index: 2;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}
.dash-sidebar .dash-close:hover { background: var(--brand-red); color: #fff; border-color: var(--brand-red); }

.dash-sidebar .user-card {
  text-align: center;
  padding: 16px 8px 18px;
  border-bottom: 1px solid var(--line);
  margin-bottom: 12px;
}
.dash-sidebar .user-card img {
  width: 72px;
  height: 72px;
  border-radius: 50%;
  object-fit: cover;
  margin: 0 auto 10px;
  border: 3px solid var(--gold);
}
.dash-sidebar .user-card h5 { font-size: 16px; margin-bottom: 2px; }
.dash-sidebar .user-card small { color: var(--muted); font-size: 12px; }

.dash-nav-label {
  font-size: 11px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--muted);
  padding: 12px 14px 6px;
  font-weight: 600;
}
.dash-nav a {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 10px 14px;
  color: var(--ink);
  border-radius: var(--r-sm);
  font-size: 14px;
  font-weight: 500;
  margin-bottom: 2px;
  text-decoration: none;
}
.dash-nav a:hover,
.dash-nav a.active {
  background: var(--green-light);
  color: var(--green-dark);
}
.dash-nav a.active { font-weight: 600; }
.dash-nav a i {
  color: var(--orange);
  font-size: 17px;
  width: 20px;
}
.dash-nav a .count {
  margin-left: auto;
  background: var(--orange);
  color: #fff;
  font-size: 11px;
  font-weight: 700;
  padding: 2px 8px;
  border-radius: 20px;
}

.dash-stat-card {
  background: #fff;
  border: 1px solid var(--line);
  border-radius: var(--r-md);
  padding: 18px;
  display: flex;
  gap: 14px;
  align-items: center;
}
.dash-stat-card .ds-icon {
  width: 48px;
  height: 48px;
  border-radius: var(--r-sm);
  background: var(--green-light);
  color: var(--green-dark);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 22px;
}
.dash-stat-card.orange .ds-icon { background: var(--orange-light); color: var(--orange-dark); }
.dash-stat-card.gold   .ds-icon { background: var(--gold-light);   color: var(--gold-dark); }
.dash-stat-card.info   .ds-icon { background: #e3eefa;              color: var(--info); }
.dash-stat-card .val {
  font-family: var(--font-display);
  font-size: 22px;
  font-weight: 700;
  line-height: 1;
}
.dash-stat-card .lbl { font-size: 12.5px; color: var(--muted); }

.completion-ring {
  width: 120px;
  height: 120px;
  position: relative;
  margin: 0 auto;
}
.completion-ring svg { transform: rotate(-90deg); }
.completion-ring svg circle {
  fill: none;
  stroke-width: 8;
  stroke-linecap: round;
}
.completion-ring svg circle.bg { stroke: var(--line); }
.completion-ring svg circle.fg {
  stroke: var(--green);
  stroke-dasharray: 326;
  stroke-dashoffset: 326;
  transition: stroke-dashoffset 1s ease;
}
.completion-ring .pct {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: var(--font-display);
  font-size: 24px;
  font-weight: 700;
  color: var(--green-dark);
}

.plan-card {
  background: linear-gradient(135deg, var(--gold), var(--gold-dark));
  color: #fff;
  padding: 18px;
  border-radius: var(--r-md);
}
.plan-card h5 { color: #fff; font-size: 16px; margin-bottom: 4px; }
.plan-card small { opacity: 0.9; display: block; margin-bottom: 10px; }

.nudge {
  background: var(--orange-light);
  border: 1px solid var(--orange);
  color: var(--orange-dark);
  padding: 12px 14px;
  border-radius: var(--r-sm);
  display: flex;
  gap: 10px;
  align-items: center;
  font-size: 13px;
}
.nudge.green {
  background: var(--green-light);
  border-color: var(--green);
  color: var(--green-dark);
}


/* ---------- 32. CHAT / MESSAGES ---------- */
.chat-container {
  display: grid;
  grid-template-columns: 1fr;
  border: 1px solid var(--line);
  border-radius: var(--r-md);
  overflow: hidden;
  background: #fff;
  min-height: 520px;
}
@media (min-width: 768px) {
  .chat-container { grid-template-columns: 300px 1fr; }
}
.chat-list { border-right: 1px solid var(--line); overflow-y: auto; }
.chat-list-item {
  display: flex;
  gap: 10px;
  padding: 12px 14px;
  border-bottom: 1px solid var(--line-soft);
  cursor: pointer;
}
.chat-list-item:hover,
.chat-list-item.active { background: var(--green-light); }
.chat-list-item img {
  width: 44px;
  height: 44px;
  border-radius: 50%;
  object-fit: cover;
}
.chat-messages { padding: 18px; overflow-y: auto; }
.chat-msg {
  max-width: 70%;
  padding: 8px 12px;
  border-radius: var(--r-md);
  margin-bottom: 6px;
  font-size: 14px;
  line-height: 1.4;
}
.chat-msg.me   { background: var(--green); color: #fff; margin-left: auto; }
.chat-msg.them { background: var(--bg-soft); color: var(--ink); }


/* ---------- 33. PAGE HERO (CMS pages) ---------- */
.page-hero {
  background: linear-gradient(135deg, var(--green), var(--green-dark));
  color: #fff;
  padding: 60px 0 50px;
  text-align: center;
}
.page-hero h1 {
  color: #fff;
  font-size: clamp(30px, 5vw, 46px);
  margin-bottom: 10px;
}
.page-hero p {
  color: rgba(255, 255, 255, 0.92);
  max-width: 640px;
  margin: 0 auto;
  font-size: 16px;
}
.cms-content {
  font-size: 15px;
  line-height: 1.8;
  color: var(--slate);
}
.cms-content h2 { margin-top: 28px; margin-bottom: 12px; color: var(--ink); font-size: 22px; }
.cms-content h3 { margin-top: 22px; margin-bottom: 10px; color: var(--ink); font-size: 18px; }
.cms-content ul { padding-left: 20px; }
.cms-content li { margin-bottom: 8px; }


/* ---------- 34. SCROLL-REVEAL ANIMATION ----------
   Progressive enhancement: elements are fully visible by
   default. Only if JS sets `.js-ready` on <html> do we hide
   .reveal until the IntersectionObserver adds .is-visible.
   This guarantees content is never permanently hidden if JS
   fails, ad-blockers break, etc.
   --------------------------------------------------- */
.reveal {
  transition: opacity 0.6s var(--ease), transform 0.6s var(--ease);
}
html.js-ready .reveal {
  opacity: 0;
  transform: translateY(20px);
}
html.js-ready .reveal.is-visible {
  opacity: 1;
  transform: translateY(0);
}


/* ---------- 35. RESPONSIVE BREAKPOINTS ---------- */
@media (max-width: 991px) {
  .section { padding: 40px 0; }
  .hero-slide { padding: 28px 0; }
}

@media (max-width: 767px) {
  /* Hide top-strip on mobile */
  .top-strip { display: none !important; }

  /* Reserve space for fixed bottom nav so footer isn't hidden */
  body {
    padding-bottom: 74px;
    overflow-x: clip;
  }

  .bottom-nav { display: block; }
  .fab        { display: inline-flex; }

  .hero-slide { padding: 24px 0; }
  .hero-stats { gap: 14px; }
  .hero-stats .stat strong { font-size: 20px; }
  .hero-stats .stat span   { font-size: 10px; }

  .section { padding: 36px 0; }

  /* Footer: extra bottom spacing so copyright sits above the curved nav */
  .site-footer  { padding-bottom: 20px; }
  .foot-bottom  { margin-top: 24px; padding-top: 14px; padding-bottom: 4px; }
}

@media (max-width: 575px) {
  .hero-register-card { padding: 18px; }
  .hero-title         { font-size: 28px; }
  .hero-tagline       { font-size: 20px; }
  .hero-stats .stat strong { font-size: 18px; }
}


/* ---------- 36. SCROLLBAR ---------- */
::-webkit-scrollbar             { width: 10px; height: 10px; }
::-webkit-scrollbar-track       { background: var(--bg-soft); }
::-webkit-scrollbar-thumb       { background: var(--green); border-radius: 5px; }
::-webkit-scrollbar-thumb:hover { background: var(--green-dark); }


/* ---------- 37. LEGACY COMPATIBILITY (older class names) ---------- */
.bg-green-light   { background: var(--green-light) !important; }
.bg-orange-light  { background: var(--orange-light) !important; }
.bg-gold-light    { background: var(--gold-light) !important; }
.text-green       { color: var(--green-dark) !important; }
.text-orange      { color: var(--orange) !important; }
.text-gold        { color: var(--gold-dark) !important; }

/* Some pages use hero-form inline */
.hero-form {
  background: #fff;
  padding: 18px;
  border-radius: var(--r-md);
  box-shadow: var(--sh-md);
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)) auto;
  gap: 10px;
  align-items: end;
  max-width: 780px;
}
.hero-form label {
  font-size: 11px;
  color: var(--slate);
  letter-spacing: 0.05em;
  text-transform: uppercase;
  font-weight: 600;
  margin-bottom: 4px;
  display: block;
}
.hero-form select,
.hero-form input {
  width: 100%;
  padding: 9px 10px;
  border: 1px solid var(--line);
  border-radius: var(--r-sm);
  background: #fff;
  color: var(--ink);
  font-size: 13.5px;
}
.hero-form select:focus,
.hero-form input:focus {
  outline: none;
  border-color: var(--green);
  box-shadow: 0 0 0 3px rgba(214, 31, 38, 0.12);
}

.script-text {
  font-family: var(--font-script);
  color: var(--orange);
  font-weight: 700;
}

.section-title .script-text {
  display: block;
  font-size: 22px;
  margin-bottom: 2px;
}
.section-title h2 {
  font-size: clamp(26px, 4vw, 38px);
  margin-bottom: 6px;
}
.section-title p {
  color: var(--slate);
  max-width: 600px;
  margin: 0 auto;
}

.slide-bg {
  position: absolute;
  inset: 0;
  object-fit: cover;
  width: 100%;
  height: 100%;
  z-index: 0;
}

/* Tag chip variants used on blog/content pages */
.tag-chip.green   { background: var(--green-light);  color: var(--green-dark); }
.tag-chip.info    { background: #e3eefa;              color: var(--info); }


/* =========================================================
   38. PAGE-SPECIFIC LAYOUTS (completing coverage)
   Every class used in the 46 built HTML pages that wasn't
   already styled. Added as an appendix so no HTML change is
   needed — every page now renders correctly.
   ========================================================= */


/* ---------- 38.1  AUTH PAGES (login / register / forgot) ---------- */
.auth-wrap {
  min-height: calc(100vh - 200px);
  padding: 30px 0;
  background: linear-gradient(180deg, var(--green-light) 0%, var(--bg-soft) 100%);
}
.auth-wrap .auth-card {
  max-width: 980px;
  padding: 0;
  overflow: hidden;
  background: #fff;
}

.auth-side {
  background:
    radial-gradient(circle at 80% 20%, rgba(255,255,255,0.12), transparent 50%),
    radial-gradient(circle at 20% 80%, rgba(255,255,255,0.08), transparent 50%),
    linear-gradient(135deg, var(--brand-red) 0%, var(--brand-red-hover) 50%, var(--brand-gold-dark) 100%);
  color: #fff;
  padding: 44px 36px;
  height: 100%;
  display: flex;
  flex-direction: column;
  justify-content: center;
  position: relative;
  overflow: hidden;
}
.auth-side::before {
  content: '';
  position: absolute;
  top: -60px;
  right: -60px;
  width: 220px;
  height: 220px;
  background: radial-gradient(circle, rgba(198, 138, 58, 0.25) 0%, transparent 70%);
  border-radius: 50%;
}
.auth-side h2 {
  color: #fff;
  font-size: 28px;
  margin: 8px 0 12px;
  line-height: 1.2;
  position: relative;
  z-index: 1;
}
.auth-side h2 em {
  color: var(--gold-light);
  font-style: italic;
}
.auth-side p {
  color: rgba(255, 255, 255, 0.92);
  font-size: 14px;
  margin-bottom: 22px;
  position: relative;
  z-index: 1;
}
.auth-feature {
  display: flex;
  align-items: center;
  gap: 12px;
  font-size: 14px;
  padding: 10px 0;
  color: rgba(255, 255, 255, 0.95);
  position: relative;
  z-index: 1;
}
.auth-feature i {
  width: 34px;
  height: 34px;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.18);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 16px;
  color: var(--gold-light);
  flex-shrink: 0;
}

.auth-body {
  padding: 36px 32px;
}
.auth-title {
  font-size: 28px;
  font-weight: 700;
  margin-bottom: 4px;
  color: var(--ink);
}
.auth-title em {
  font-style: italic;
  color: var(--orange);
}
.auth-subtitle {
  color: var(--slate);
  font-size: 14px;
  margin-bottom: 24px;
}
.auth-form .form-group {
  margin-bottom: 16px;
}

/* Input-icon wrap: icon on the left, optional toggle on the right */
.input-icon {
  position: relative;
}
.input-icon .icon-prefix {
  position: absolute;
  left: 14px;
  top: 50%;
  transform: translateY(-50%);
  color: var(--muted);
  pointer-events: none;
  font-size: 15px;
}
.input-icon .form-control,
.input-icon .form-select {
  padding-left: 42px;
}
.input-icon .toggle-pw {
  position: absolute;
  right: 10px;
  top: 50%;
  transform: translateY(-50%);
  background: transparent;
  border: none;
  color: var(--muted);
  cursor: pointer;
  width: 32px;
  height: 32px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.input-icon .toggle-pw:hover { color: var(--green-dark); }

.required { color: var(--danger); font-weight: 600; }

.divider-or {
  display: flex;
  align-items: center;
  gap: 12px;
  margin: 18px 0;
  color: var(--muted);
  font-size: 12px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}
.divider-or::before,
.divider-or::after {
  content: '';
  flex: 1;
  height: 1px;
  background: var(--line);
}


/* ---------- 38.2  REGISTER WIZARD ---------- */
.register-wizard .form-progress {
  display: flex;
  justify-content: space-between;
  margin-bottom: 26px;
  gap: 6px;
  overflow-x: auto;
  scrollbar-width: none;
}
.register-wizard .form-progress::-webkit-scrollbar { display: none; }
.register-wizard .form-progress-step {
  flex: 1 0 auto;
  display: flex;
  flex-direction: column;
  align-items: center;
  font-size: 11px;
  color: var(--muted);
  gap: 4px;
  min-width: 64px;
  position: relative;
}
.register-wizard .form-progress-step.active { color: var(--green-dark); font-weight: 600; }
.register-wizard .form-progress-step.done   { color: var(--green-dark); }

.step-dot {
  width: 32px;
  height: 32px;
  border-radius: 50%;
  background: #fff;
  border: 2px solid var(--line);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-weight: 700;
  color: var(--muted);
  font-size: 13px;
  transition: all var(--t-fast);
}
.form-progress-step.active .step-dot {
  background: var(--green);
  color: #fff;
  border-color: var(--green);
  box-shadow: 0 0 0 4px rgba(214, 31, 38, 0.15);
}
.form-progress-step.done .step-dot {
  background: var(--green-dark);
  color: #fff;
  border-color: var(--green-dark);
}
.step-subtitle {
  font-size: 13px;
  color: var(--slate);
  margin-bottom: 16px;
}

/* OTP group (when not using .otp-row) */
.otp-group {
  display: flex;
  gap: 10px;
  justify-content: center;
  margin: 14px 0 8px;
}
.otp-group input {
  width: 46px;
  height: 54px;
  border-radius: var(--r-sm);
  border: 1.5px solid var(--line);
  background: #fff;
  text-align: center;
  font-size: 20px;
  font-weight: 700;
}
.otp-group input:focus {
  border-color: var(--green);
  box-shadow: 0 0 0 3px rgba(214, 31, 38, 0.15);
  outline: none;
}

/* Photo preview tiles in register step */
.photo-preview-wrap {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(100px, 1fr));
  gap: 10px;
  margin-top: 12px;
}
.photo-preview-wrap .photo-tile,
.photo-preview-wrap img {
  aspect-ratio: 1 / 1;
  border-radius: var(--r-sm);
  object-fit: cover;
  border: 1px solid var(--line);
  position: relative;
}
.remove-photo {
  position: absolute;
  top: 4px;
  right: 4px;
  width: 22px;
  height: 22px;
  border-radius: 50%;
  background: rgba(0, 0, 0, 0.6);
  color: #fff;
  border: none;
  font-size: 11px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
}

/* Plan choice tiles in wizard step */
.plan-choice {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
  gap: 10px;
  margin: 14px 0 10px;
}
.plan-choice .plan-option {
  text-align: center;
  padding: 18px 10px;
}
.plan-choice .plan-option.selected .plan-price { color: var(--green-dark); }
.plan-name  { font-weight: 700; font-size: 14px; color: var(--ink); }
.plan-price { font-family: var(--font-display); font-size: 20px; font-weight: 700; color: var(--orange); margin: 4px 0; }
.plan-desc  { font-size: 12px; color: var(--muted); }


/* ---------- 38.3  DASHBOARD (main page — old structure) ----------
   dashboard.html places <aside class="dash-sidebar"> as a sibling
   of <section class="dash-wrap">. Style for this legacy layout
   without touching the HTML.
   ---------------------------------------------------------- */

/* Old sidebar inner classes → alias to new equivalents */
.dash-user-card {
  text-align: center;
  padding: 18px 12px 18px;
  margin-bottom: 12px;
  background:
    radial-gradient(circle at 50% 0%, rgba(214, 31, 38, 0.08), transparent 60%),
    radial-gradient(circle at 50% 100%, rgba(198, 138, 58, 0.08), transparent 60%),
    linear-gradient(180deg, #FFFBF5 0%, #FFF7EE 100%);
  border-radius: 14px;
  border: 1px solid #F3E0CB;
  position: relative;
  overflow: hidden;
}
.dash-user-card::before {
  content: '';
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 3px;
  background: linear-gradient(90deg, var(--brand-red), var(--brand-gold), var(--brand-red));
  background-size: 200% 100%;
  animation: filterShimmer 4s linear infinite;
}
.dash-user-card img {
  width: 76px;
  height: 76px;
  border-radius: 50%;
  object-fit: cover;
  margin: 0 auto 10px;
  border: 3px solid #fff;
  box-shadow: 0 0 0 2px var(--gold), 0 4px 12px rgba(198, 138, 58, 0.25);
  display: block;
  position: relative;
  z-index: 1;
}
.dash-user-card h6 {
  font-family: var(--font-display);
  font-size: 16px;
  margin-bottom: 2px;
  font-weight: 700;
  position: relative;
  z-index: 1;
}
.dash-user-card .text-muted {
  position: relative;
  z-index: 1;
}
.badge-premium {
  display: inline-block;
  margin-top: 8px;
  background: linear-gradient(135deg, var(--gold), var(--gold-dark));
  color: #fff;
  font-size: 11px;
  font-weight: 700;
  padding: 3px 12px;
  border-radius: 20px;
  letter-spacing: 0.05em;
}

.dash-nav-list {
  display: flex;
  flex-direction: column;
}
.dash-nav-section-label {
  font-size: 11px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--muted);
  padding: 12px 14px 6px;
  font-weight: 600;
}
.dash-nav-item {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 10px 14px;
  color: var(--ink);
  border-radius: var(--r-sm);
  font-size: 14px;
  font-weight: 500;
  margin-bottom: 2px;
  text-decoration: none;
  position: relative;
}
.dash-nav-item:hover,
.dash-nav-item.active {
  background: var(--green-light);
  color: var(--green-dark);
}
.dash-nav-item.active { font-weight: 600; }
.dash-nav-item i {
  color: var(--orange);
  font-size: 17px;
  width: 20px;
  flex-shrink: 0;
}
.dash-nav-item .count-badge {
  margin-left: auto;
  background: var(--orange);
  color: #fff;
  font-size: 11px;
  font-weight: 700;
  padding: 2px 8px;
  border-radius: 20px;
  min-width: 22px;
  text-align: center;
}

/* .close-btn inside .dash-sidebar (mobile only) */
.dash-sidebar .close-btn {
  position: absolute;
  top: 10px;
  right: 10px;
  background: var(--bg-soft);
  border: none;
  width: 32px;
  height: 32px;
  border-radius: 50%;
  font-size: 18px;
  color: var(--slate);
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
@media (min-width: 992px) {
  .dash-sidebar .close-btn { display: none; }
}

/* Dashboard stat cards — HTML uses .stat-icon/.stat-body/.stat-num/.stat-label */
.dash-stat-card .stat-icon {
  width: 48px;
  height: 48px;
  border-radius: var(--r-sm);
  background: var(--green-light);
  color: var(--green-dark);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 22px;
  flex-shrink: 0;
}
.dash-stat-card.orange .stat-icon { background: var(--orange-light); color: var(--orange-dark); }
.dash-stat-card.gold   .stat-icon { background: var(--gold-light);   color: var(--gold-dark); }
.dash-stat-card.info   .stat-icon { background: #e3eefa;              color: var(--info); }
.dash-stat-card .stat-body {
  display: flex;
  flex-direction: column;
  line-height: 1.2;
}
.stat-num {
  font-family: var(--font-display);
  font-size: 24px;
  font-weight: 700;
  color: var(--ink);
}
.stat-label {
  font-size: 12.5px;
  color: var(--muted);
}

/* Completion-card (profile completion widget) */
.completion-card {
  background: #fff;
  border: 1px solid var(--line);
  border-radius: var(--r-md);
  padding: 22px;
  display: flex;
  gap: 22px;
  align-items: center;
  flex-wrap: wrap;
}
.completion-card .completion-ring + div { flex: 1; min-width: 200px; }
.ring-text {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: var(--font-display);
  font-size: 22px;
  font-weight: 700;
  color: var(--green-dark);
}

/* Nudge: HTML splits into .nudge-icon + .nudge-body */
.nudge {
  align-items: flex-start;
}
.nudge-icon {
  width: 40px;
  height: 40px;
  border-radius: var(--r-sm);
  background: rgba(198, 138, 58, 0.15);
  color: var(--orange-dark);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 20px;
  flex-shrink: 0;
}
.nudge.info .nudge-icon,
.nudge.green .nudge-icon {
  background: rgba(214, 31, 38, 0.15);
  color: var(--green-dark);
}
.nudge-body h6 {
  margin: 0 0 2px;
  font-size: 14px;
  color: var(--ink);
  font-weight: 600;
}
.nudge-body p {
  margin: 0;
  font-size: 12.5px;
  line-height: 1.5;
}


/* ---------- 38.4  PROFILE PAGE (profile.html) ---------- */
body.profile-page {
  background: var(--bg-soft);
}

.profile-page .container,
body.profile-page > section > .container {
  padding-top: 18px;
}

.main-img {
  width: 100%;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  border-radius: var(--r-lg);
  box-shadow: var(--sh-md);
  background: var(--bg-soft);
  display: block;
}

/* Quick-facts row under profile name */
.profile-quickfacts {
  display: flex;
  flex-wrap: wrap;
  gap: 10px 20px;
  margin: 12px 0 18px;
}
.qf {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 13px;
  color: var(--slate);
}
.qf i { color: var(--orange); font-size: 14px; }

/* Tagline under profile name (e.g. "Seeking my partner …") */
.profile-page .tagline {
  font-family: var(--font-script);
  color: var(--orange);
  font-size: 18px;
  font-weight: 500;
  margin-bottom: 8px;
}

.verified-tick {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  background: var(--info);
  color: #fff;
  font-size: 11px;
  font-weight: 600;
  padding: 2px 10px;
  border-radius: 20px;
  vertical-align: middle;
  margin-left: 8px;
}

/* Profile meta grid (alternate name to .meta-grid) */
.profile-meta-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 10px;
  margin: 16px 0 22px;
}
@media (min-width: 768px) { .profile-meta-grid { grid-template-columns: repeat(4, 1fr); } }
.profile-meta-grid > div {
  background: #fff;
  border: 1px solid var(--line);
  border-radius: var(--r-md);
  padding: 10px 14px;
}
.profile-meta-grid .dl {
  font-size: 10.5px;
  color: var(--muted);
  letter-spacing: 0.05em;
  text-transform: uppercase;
  display: block;
  margin-bottom: 2px;
}
.profile-meta-grid .dv {
  font-size: 14px;
  font-weight: 600;
  color: var(--ink);
}

/* Profile actions row */
.profile-actions {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  margin-bottom: 18px;
}
.profile-actions .btn { flex: 1; min-width: 120px; }

.profile-info {
  background: #fff;
  border: 1px solid var(--line);
  border-radius: var(--r-md);
  padding: 20px;
  margin-bottom: 16px;
}

/* Profile tab buttons (HTML uses .profile-tab not `a`) */
.profile-tabs .profile-tab {
  background: transparent;
  border: none;
  padding: 12px 18px;
  font-size: 14px;
  font-weight: 500;
  color: var(--slate);
  border-bottom: 2px solid transparent;
  white-space: nowrap;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
.profile-tabs .profile-tab.active {
  color: var(--green-dark);
  border-bottom-color: var(--orange);
}
.profile-tabs .profile-tab i { font-size: 14px; }

/* Profile section panels (about / family / horoscope etc.) */
.profile-section {
  display: none;
  background: #fff;
  border: 1px solid var(--line);
  border-radius: var(--r-md);
  padding: 22px;
  margin-bottom: 14px;
  animation: fadeInUp 0.3s var(--ease);
}
.profile-section.active { display: block; }
.profile-section h5 {
  color: var(--ink);
  margin-bottom: 12px;
  padding-bottom: 8px;
  border-bottom: 1px solid var(--line-soft);
  font-size: 17px;
}

/* Generic block used inside profile + safety-tips */
.about-block {
  background: var(--bg-soft);
  border-left: 3px solid var(--gold);
  padding: 14px 16px;
  border-radius: var(--r-sm);
  color: var(--slate);
  font-size: 14.5px;
  line-height: 1.7;
  margin-bottom: 14px;
}

/* Sticky bar at bottom of profile page on mobile */
.profile-sticky-bar {
  display: none;
  position: fixed;
  bottom: 74px;
  left: 10px;
  right: 10px;
  background: #fff;
  border: 1px solid var(--line);
  border-radius: 50px;
  padding: 8px 10px;
  box-shadow: var(--sh-lg);
  z-index: 997;
  gap: 6px;
  align-items: center;
  justify-content: space-around;
}
.profile-sticky-bar .btn { flex: 1; }
@media (max-width: 767px) {
  .profile-sticky-bar { display: flex; }
}


/* ---------- 38.5  SEARCH RESULTS ---------- */
.search-toolbar {
  display: flex;
  justify-content: space-between;
  align-items: center;
  flex-wrap: wrap;
  gap: 10px;
  margin-bottom: 18px;
  padding: 12px 16px;
  background: #fff;
  border: 1px solid var(--line);
  border-radius: var(--r-sm);
}
.result-count {
  font-size: 14px;
  color: var(--slate);
}
.result-count strong { color: var(--ink); font-weight: 600; }

.toolbar-actions {
  display: flex;
  gap: 8px;
  align-items: center;
}

.results-grid { /* wrap for the results */ }

.filter-btn-mobile {
  background: var(--green);
  color: #fff;
  border: none;
  padding: 8px 14px;
  border-radius: var(--r-sm);
  font-size: 13px;
  font-weight: 500;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  cursor: pointer;
}
.filter-btn-mobile:hover { background: var(--green-dark); }
@media (min-width: 992px) { .filter-btn-mobile { display: none; } }

/* Filter sidebar inner: fg-head (toggle) + fg-body (content) */
/* Desktop filter sidebar heading — icon + gradient background */
.filter-sidebar-head {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 12px 16px;
  margin-bottom: 14px;
  border-radius: 10px;
  background: linear-gradient(135deg, var(--brand-red, #D61F26), var(--brand-gold, #C68A3A));
  color: #fff;
  box-shadow: 0 4px 14px rgba(214, 31, 38, 0.18);
}
.filter-sidebar-head i {
  width: 32px;
  height: 32px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.22);
  color: #fff;
  font-size: 16px;
  flex-shrink: 0;
}
.filter-sidebar-head h5 {
  margin: 0;
  font-family: var(--font-display, Fraunces, serif);
  font-size: 18px;
  font-weight: 700;
  color: #fff;
  letter-spacing: 0.02em;
}

/* Filter section heading layout (icon + title + chevron) */
.fg-head {
  display: flex;
  align-items: center;
  gap: 10px;
  cursor: pointer;
  font-weight: 700;
  font-size: 13px;
  letter-spacing: 0.04em;
  padding: 10px 12px 10px 4px;
  background: transparent;
  transition: background var(--t-fast);
}
.fg-head .head-icon {
  font-size: 16px;
  width: 20px;
  text-align: center;
  flex-shrink: 0;
}
.fg-head .fg-title { flex: 1; }
.fg-head > i:last-child { margin-left: auto; transition: transform var(--t-fast); font-size: 12px; opacity: 0.7; }
.filter-group.open .fg-head > i:last-child { transform: rotate(180deg); }

/* Tinted section wrapper — background spans the whole group (head + body)
   with a colored left border. Each variant overrides the palette below.
   Specificity bumped via .filter-group + .filter-group-XXX so per-section
   colours win over the base rule. */
.filter-group.filter-group-age,
.filter-group.filter-group-religion,
.filter-group.filter-group-community,
.filter-group.filter-group-tongue,
.filter-group.filter-group-city,
.filter-group.filter-group-education,
.filter-group.filter-group-diet,
.filter-group.filter-group-status {
  border-bottom: none !important;
  border-radius: 10px;
  padding: 8px 12px 10px 14px !important;
  margin-bottom: 12px;
  border-left: 3px solid transparent;
}

/* Extra breathing room on the left in desktop so the icon doesn't kiss the border */
@media (min-width: 992px) {
  .filter-group.filter-group-age,
  .filter-group.filter-group-religion,
  .filter-group.filter-group-community,
  .filter-group.filter-group-tongue,
  .filter-group.filter-group-city,
  .filter-group.filter-group-education,
  .filter-group.filter-group-diet,
  .filter-group.filter-group-status { padding-left: 22px !important; }
}

/* Per-section colour tints — background on whole wrapper, accent on text/icon */
.filter-group.filter-group-age           { background:#FFF7F0; border-left-color:var(--brand-red,#D61F26); }
.filter-group.filter-group-age           .fg-head,
.filter-group.filter-group-age           .fg-head .head-icon,
.filter-group.filter-group-age           .fg-head .fg-title { color:var(--brand-red,#D61F26); }

.filter-group.filter-group-religion      { background:#FFF7EC; border-left-color:var(--brand-gold,#C68A3A); }
.filter-group.filter-group-religion      .fg-head,
.filter-group.filter-group-religion      .fg-head .head-icon,
.filter-group.filter-group-religion      .fg-head .fg-title { color:var(--brand-gold-dark,#8a5e1f); }

.filter-group.filter-group-community     { background:#FFF0F3; border-left-color:#E91E63; }
.filter-group.filter-group-community     .fg-head,
.filter-group.filter-group-community     .fg-head .head-icon,
.filter-group.filter-group-community     .fg-head .fg-title { color:#C2185B; }

.filter-group.filter-group-tongue        { background:#E6F8F8; border-left-color:#0E9594; }
.filter-group.filter-group-tongue        .fg-head,
.filter-group.filter-group-tongue        .fg-head .head-icon,
.filter-group.filter-group-tongue        .fg-head .fg-title { color:#086B6A; }

.filter-group.filter-group-city          { background:#F0F6FF; border-left-color:var(--brand-blue,#2F4A7D); }
.filter-group.filter-group-city          .fg-head,
.filter-group.filter-group-city          .fg-head .head-icon,
.filter-group.filter-group-city          .fg-head .fg-title { color:var(--brand-blue,#2F4A7D); }

.filter-group.filter-group-education     { background:#F5EBFF; border-left-color:#6A2F9F; }
.filter-group.filter-group-education     .fg-head,
.filter-group.filter-group-education     .fg-head .head-icon,
.filter-group.filter-group-education     .fg-head .fg-title { color:#6A2F9F; }

.filter-group.filter-group-diet          { background:#E8F7EE; border-left-color:#1E8E3E; }
.filter-group.filter-group-diet          .fg-head,
.filter-group.filter-group-diet          .fg-head .head-icon,
.filter-group.filter-group-diet          .fg-head .fg-title { color:#1E8E3E; }

.filter-group.filter-group-status        { background:#FFF7E6; border-left-color:#B45309; }
.filter-group.filter-group-status        .fg-head,
.filter-group.filter-group-status        .fg-head .head-icon,
.filter-group.filter-group-status        .fg-head .fg-title { color:#8B4513; }
.fg-body {
  display: none;
  padding-top: 12px;
}
.filter-group.open .fg-body { display: block; }
.fg-body label {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 6px 0;
  font-size: 13px;
  color: var(--slate);
  cursor: pointer;
}
.fg-body label input { margin: 0; }

.clear-all {
  background: transparent;
  border: none;
  color: var(--orange);
  font-size: 13px;
  font-weight: 600;
  cursor: pointer;
  padding: 4px 0;
  margin-bottom: 10px;
}
.clear-all:hover { text-decoration: underline; }

/* Range slider for age / income */
.range-slider {
  padding: 6px 0;
}
.range-values {
  display: flex;
  justify-content: space-between;
  font-size: 13px;
  color: var(--ink);
  font-weight: 600;
  margin-bottom: 6px;
}
.range-slider input[type="range"] {
  width: 100%;
  margin: 2px 0;
  accent-color: var(--green);
}

/* Mobile filter modal (bottom-sheet style) */
/* [neutralized — see Section 45] .filter-modal { */
/*   position: fixed; */
/*   inset: 0; */
/*   background: #fff; */
/*   z-index: 2100; */
/*   display: none; */
/*   flex-direction: column; */
/* } */
/* [neutralized — see Section 45] .filter-modal.open { display: flex; } */
/* [neutralized — see Section 45] .filter-modal-head { */
/*   display: flex; */
/*   justify-content: space-between; */
/*   align-items: center; */
/*   padding: 16px 18px; */
/*   border-bottom: 1px solid var(--line); */
/* } */
/* [neutralized — see Section 45] .filter-modal-head h5 { margin: 0; font-size: 18px; } */
/* [neutralized — see Section 45] .filter-modal-body { */
/*   flex: 1; */
/*   overflow-y: auto; */
/*   padding: 16px 18px; */
/* } */
/* [neutralized — see Section 45] .filter-modal-foot { */
/*   padding: 14px 18px; */
/*   border-top: 1px solid var(--line); */
/*   display: flex; */
/*   gap: 10px; */
/*   background: #fff; */
/*   box-shadow: 0 -6px 18px rgba(0, 0, 0, 0.06); */
/* } */
/* [neutralized — see Section 45] .filter-modal-foot .btn { flex: 1; } */

/* Breadcrumb trail (search-results, blog-post) */
.breadcrumb-custom {
  display: flex;
  gap: 6px;
  align-items: center;
  padding: 12px 0;
  font-size: 13px;
  color: var(--muted);
  flex-wrap: wrap;
}
.breadcrumb-custom a { color: var(--green-dark); }
.breadcrumb-custom a:hover { text-decoration: underline; }
.breadcrumb-custom .sep { color: var(--muted); }
.careers-apply-page .page-hero .breadcrumb-current {
  color: var(--gold-light);
  font-weight: 700;
}


/* ---------- 38.6  MESSAGES / CHAT (messages.html) ---------- */
.chat-list-head {
  padding: 14px 14px 10px;
  border-bottom: 1px solid var(--line-soft);
  position: sticky;
  top: 0;
  background: #fff;
  z-index: 2;
}

/* Chat-list-item inner classes used in messages.html */
.chat-list-item { align-items: center; }
.chat-list-item > div:last-child {
  text-align: right;
  flex-shrink: 0;
  margin-left: auto;
}
.cl-body { flex: 1; min-width: 0; }
.cl-name {
  font-size: 14px;
  font-weight: 600;
  color: var(--ink);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.cl-preview {
  font-size: 12.5px;
  color: var(--muted);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 180px;
}
.cl-time {
  font-size: 11px;
  color: var(--muted);
  margin-bottom: 2px;
}
.cl-badge {
  background: var(--orange);
  color: #fff;
  font-size: 10px;
  font-weight: 700;
  min-width: 18px;
  height: 18px;
  padding: 0 5px;
  border-radius: 9px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  margin-left: auto;
}

.chat-main {
  display: flex;
  flex-direction: column;
  min-height: 520px;
}
.chat-main-head {
  padding: 12px 14px;
  border-bottom: 1px solid var(--line);
  display: flex;
  align-items: center;
  gap: 10px;
  background: var(--bg-soft);
}
.chat-main-head img {
  width: 40px;
  height: 40px;
  border-radius: 50%;
  object-fit: cover;
}
.chat-main-head h6 {
  margin: 0;
  font-size: 15px;
  font-family: var(--font-display);
}
.chat-main-head small {
  color: var(--green);
  font-size: 11px;
}
.chat-back-btn { margin-right: 4px; }

.chat-compose {
  display: flex;
  gap: 8px;
  align-items: center;
  padding: 12px 14px;
  border-top: 1px solid var(--line);
  background: #fff;
}
.chat-compose .form-control { flex: 1; }

/* Mobile: hide chat list when chat-main is open (simplified — both visible by default) */
@media (max-width: 767px) {
  .chat-container { grid-template-columns: 1fr; }
}


/* ---------- 38.7  DIET LABELS (standalone .veg / .non-veg / .diet-veg) ---------- */
/* Some pages use just `<span class="veg">Vegetarian</span>` as a text label */
.veg {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: 12.5px;
  color: var(--green-dark);
  font-weight: 500;
}
.veg::before {
  content: '';
  display: inline-block;
  width: 12px;
  height: 12px;
  border: 1.5px solid var(--green);
  background: #fff;
  border-radius: 2px;
  position: relative;
}
.non-veg {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: 12.5px;
  color: var(--danger);
  font-weight: 500;
}
.non-veg::before {
  content: '';
  display: inline-block;
  width: 12px;
  height: 12px;
  border: 1.5px solid var(--danger);
  background: #fff;
  border-radius: 2px;
}
.diet-veg {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 13px;
  color: var(--green-dark);
  font-weight: 500;
}


/* ---------- 38.8  FAQ & BLOG CATEGORIES ---------- */
.faq-cat-tabs {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  justify-content: center;
  margin: 0 auto 28px;
  overflow-x: auto;
  padding-bottom: 4px;
  scrollbar-width: none;
}
.faq-cat-tabs::-webkit-scrollbar { display: none; }
.faq-cat {
  background: #fff;
  border: 1px solid var(--line);
  padding: 8px 16px;
  border-radius: 50px;
  font-size: 13px;
  font-weight: 500;
  color: var(--ink);
  cursor: pointer;
  white-space: nowrap;
  transition: all var(--t-fast);
}
.faq-cat:hover { border-color: var(--green); color: var(--green-dark); }
.faq-cat.active {
  background: var(--green);
  color: #fff;
  border-color: var(--green);
}

.faq-search {
  margin-bottom: 22px;
}

.blog-cat {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  margin-bottom: 20px;
  overflow-x: auto;
  scrollbar-width: none;
}
.blog-cat::-webkit-scrollbar { display: none; }
.blog-cat a,
.blog-cat button {
  background: #fff;
  border: 1px solid var(--line);
  padding: 8px 16px;
  border-radius: 50px;
  font-size: 13px;
  color: var(--ink);
  text-decoration: none;
  white-space: nowrap;
  transition: all var(--t-fast);
}
.blog-cat a.active,
.blog-cat button.active,
.blog-cat a:hover {
  background: var(--green);
  color: #fff;
  border-color: var(--green);
}


/* ---------- 38.9  EVENTS PAGE ---------- */
.event-card .event-date .day,
.event-card .event-date strong {
  font-family: var(--font-display);
  font-size: 22px;
  display: block;
  font-weight: 700;
}
.event-card .event-date .month,
.event-card .event-date small {
  font-size: 11px;
  letter-spacing: 0.1em;
  display: block;
}
.event-body { flex: 1; }
.event-body h6 {
  margin: 0 0 4px;
  font-size: 15px;
  color: var(--ink);
  font-weight: 600;
}
.event-meta {
  display: flex;
  gap: 14px;
  flex-wrap: wrap;
  font-size: 12px;
  color: var(--muted);
  margin-top: 4px;
}
.event-meta i { color: var(--orange); margin-right: 4px; }


/* ---------- 38.10  ABOUT PAGE TIMELINE ---------- */
.timeline {
  position: relative;
  padding-left: 24px;
  margin-top: 16px;
}
.timeline::before {
  content: '';
  position: absolute;
  top: 0;
  bottom: 0;
  left: 6px;
  width: 2px;
  background: linear-gradient(180deg, var(--green), var(--orange), var(--gold));
}
.timeline-item {
  position: relative;
  padding-bottom: 22px;
}
.timeline-item::before {
  content: '';
  position: absolute;
  left: -24px;
  top: 6px;
  width: 14px;
  height: 14px;
  border-radius: 50%;
  background: #fff;
  border: 3px solid var(--orange);
  box-shadow: 0 0 0 3px rgba(198, 138, 58, 0.15);
}
.timeline-item:last-child { padding-bottom: 0; }
.ti-year {
  font-family: var(--font-display);
  font-size: 13px;
  font-weight: 700;
  color: var(--orange);
  letter-spacing: 0.08em;
  margin-bottom: 4px;
}
.timeline-item h5 {
  font-size: 16px;
  color: var(--ink);
  margin-bottom: 6px;
}


/* ---------- 38.11  PRICING / FEATURE LISTS ---------- */
.feature-list {
  list-style: none;
  padding: 0;
  margin: 16px 0;
}
.feature-list li {
  padding: 8px 0;
  font-size: 13.5px;
  color: var(--slate);
  display: flex;
  align-items: flex-start;
  gap: 8px;
  border-bottom: 1px dashed var(--line-soft);
}
.feature-list li:last-child { border-bottom: none; }
.feature-list li i {
  color: var(--green);
  font-size: 16px;
  flex-shrink: 0;
  margin-top: 2px;
}
.feature-list li i.bi-x-circle,
.feature-list li i.bi-x { color: var(--muted); }


/* ---------- 38.12  COMING SOON (notify form) ---------- */
.notify-form {
  display: block;
}
.notify-done {
  text-align: center;
  background: var(--green-light);
  color: var(--green-dark);
  border: 1px solid var(--green);
  padding: 16px;
  border-radius: var(--r-md);
}


/* ---------- 38.13  CAREERS JOB LIST ---------- */
.job-list {
  display: grid;
  grid-template-columns: 1fr;
  gap: 12px;
  margin-top: 18px;
}
.job-list > div,
.job-list .job-card {
  background: #fff;
  border: 1px solid var(--line);
  border-radius: var(--r-md);
  padding: 18px;
  transition: all var(--t-fast);
}
.job-list > div:hover {
  border-color: var(--green);
  box-shadow: var(--sh-sm);
  transform: translateY(-2px);
}


/* ---------- 38.14  LEGAL PAGES (privacy / terms / refund) ---------- */
.last-updated {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  background: var(--bg-soft);
  padding: 6px 14px;
  border-radius: 20px;
  font-size: 12.5px;
  color: var(--slate);
  margin-bottom: 18px;
}
.last-updated i { color: var(--orange); }

.toc {
  background: var(--bg-soft);
  border: 1px solid var(--line);
  border-radius: var(--r-md);
  padding: 18px 22px;
  margin-bottom: 26px;
}
.toc strong {
  display: block;
  margin-bottom: 10px;
  font-family: var(--font-display);
  font-size: 15px;
  color: var(--ink);
}
.toc ul {
  list-style: none;
  padding: 0;
  margin: 0;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 4px 20px;
}
.toc li { padding: 4px 0; }
.toc a {
  color: var(--green-dark);
  font-size: 13.5px;
  text-decoration: none;
  display: block;
  padding: 2px 0;
}
.toc a:hover { color: var(--orange); text-decoration: underline; }


/* ---------- 38.15  HERO VARIANTS (.hero on index, .has-hero elsewhere) ---------- */
.hero-content {
  max-width: 640px;
  position: relative;
  z-index: 1;
}
.hero-content .script-text,
.hero-content .tagline {
  font-family: var(--font-script);
  color: var(--gold-light);
  font-size: 22px;
  display: block;
  margin-bottom: 6px;
}
.hero-content h1 {
  color: #fff;
  font-size: clamp(28px, 5vw, 48px);
  line-height: 1.15;
  margin-bottom: 10px;
}
.hero-content h1 em { color: var(--gold-light); font-style: italic; }
.hero-content .sub {
  color: rgba(255, 255, 255, 0.95);
  font-size: clamp(15px, 2vw, 17px);
  margin-bottom: 22px;
}

/* .has-hero just signals body class — ensure no top padding under sticky header */
body.has-hero { /* no-op; .page-hero already handles layout */ }


/* ---------- 38.16  MISC UTILITY / FIXES ---------- */

/* Generic `.sub` paragraph under titles */
.sub {
  color: rgba(255, 255, 255, 0.92);
  font-size: 15px;
}
/* In CMS / non-hero context, keep .sub readable */
.cms-content .sub,
.section .sub,
.auth-body .sub {
  color: var(--slate);
}

/* Profile page needs some breathing room below sticky header */
body.profile-page .page-hero + .container,
body.profile-page .container:first-of-type { padding-top: 24px; }

/* Make sure icons inside icon-wrap (legacy alias) render in circles */
.icon-wrap {
  width: 62px;
  height: 62px;
  border-radius: 50%;
  background: var(--green-light);
  color: var(--green-dark);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 26px;
  margin-bottom: 14px;
}
.why-card.orange .icon-wrap { background: var(--orange-light); color: var(--orange-dark); }
.why-card.gold   .icon-wrap { background: var(--gold-light);   color: var(--gold-dark); }
.why-card.info   .icon-wrap { background: #e3eefa;              color: var(--info); }

/* Contact form section card */
.search-form-card {
  background: #fff;
  border: 1px solid var(--line);
  border-radius: var(--r-md);
  padding: 22px;
  box-shadow: var(--sh-sm);
}
.search-form-section {
  padding-bottom: 16px;
  margin-bottom: 16px;
  border-bottom: 1px solid var(--line-soft);
}
.search-form-section:last-child {
  padding-bottom: 0;
  margin-bottom: 0;
  border-bottom: none;
}
.search-form-section-title {
  font-family: var(--font-display);
  font-size: 16px;
  font-weight: 600;
  color: var(--ink);
  margin-bottom: 12px;
  display: flex;
  align-items: center;
  gap: 8px;
}
.search-form-section-title i { color: var(--orange); font-size: 18px; }


/* ---------- 38.17  FINAL COVERAGE (remaining classes) ---------- */

/* <main class="dash-main"> — sub-page content column in dashboard */
.dash-main {
  display: block;
  min-width: 0; /* prevent grid overflow */
}

/* Pricing card price / period */
.pricing-card .price {
  font-family: var(--font-display);
  font-size: 36px;
  font-weight: 700;
  color: var(--green-dark);
  line-height: 1;
  margin: 10px 0 4px;
}
.pricing-card .price small {
  font-size: 14px;
  color: var(--slate);
  font-weight: 500;
  font-family: var(--font-body);
}
.pricing-card.featured .price { color: var(--gold-dark); }
.pricing-card .period {
  font-size: 12.5px;
  color: var(--muted);
  margin-bottom: 12px;
}

/* Feature-list 'off' (unavailable) items */
.feature-list li.off {
  color: var(--muted);
  text-decoration: line-through;
  text-decoration-color: var(--line);
}
.feature-list li.off i { color: var(--muted); }


/* =========================================================
   39. COMPLETING PAGE COVERAGE (final fixes)
   Targeted fixes for register wizard, login social buttons,
   search-results layout conflict, profile-hero card conflict,
   dashboard structure, hero wrapper.
   ========================================================= */

/* ---------- 39.1 REGISTER WIZARD (critical: hide inactive steps) ---------- */
.form-progress-wrap {
  margin-bottom: 26px;
}
.form-progress-steps {
  display: flex;
  justify-content: space-between;
  gap: 6px;
  margin-bottom: 12px;
  overflow-x: auto;
  scrollbar-width: none;
}
.form-progress-steps::-webkit-scrollbar { display: none; }

/* override for form-progress-step which is direct child of .form-progress-steps */
.form-progress-steps .form-progress-step {
  flex: 1 0 auto;
  display: flex;
  flex-direction: column;
  align-items: center;
  font-size: 11px;
  color: var(--muted);
  gap: 4px;
  min-width: 68px;
  text-align: center;
  position: relative;
}
.form-progress-steps .form-progress-step.active { color: var(--green-dark); font-weight: 600; }
.form-progress-steps .form-progress-step.done   { color: var(--green-dark); }

/* Step-dot needs centered number inside */
.step-dot {
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.step-dot span {
  line-height: 1;
}

/* Progress bar underneath the steps */
.form-progress-bar-wrap {
  background: var(--line);
  height: 4px;
  border-radius: 4px;
  overflow: hidden;
  position: relative;
}
.form-progress-bar {
  background: linear-gradient(90deg, var(--green), var(--orange));
  height: 100%;
  width: 14%;          /* step 1 of 7 */
  border-radius: 4px;
  transition: width 0.4s var(--ease);
}

/* CRITICAL: form-step visibility — only the active one shows */
.form-step {
  display: none;
}
.form-step.active {
  display: block;
  animation: fadeInUp 0.35s var(--ease);
}

.form-step > h4 {
  font-size: 20px;
  color: var(--ink);
  margin-bottom: 4px;
}

/* Back / Next footer row */
.form-nav-buttons {
  display: flex;
  gap: 10px;
  align-items: center;
  margin-top: 22px;
  padding-top: 18px;
  border-top: 1px solid var(--line-soft);
}
.form-nav-buttons .btn-prev { margin-right: auto; }
/* When only .btn-next is present, push it to the right via .ms-auto Bootstrap class */


/* ---------- 39.2 LOGIN SOCIAL BUTTONS ---------- */
.btn-social {
  flex: 1;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 10px 14px;
  border-radius: var(--r-sm);
  font-size: 14px;
  font-weight: 500;
  border: 1px solid var(--line);
  background: #fff;
  color: var(--ink);
  text-decoration: none;
  transition: all var(--t-fast);
}
.btn-social:hover {
  transform: translateY(-1px);
  box-shadow: var(--sh-sm);
}
.btn-social.google {
  color: #db4437;
  border-color: #db4437;
}
.btn-social.google:hover {
  background: #db4437;
  color: #fff;
}
.btn-social.facebook {
  color: #1877f2;
  border-color: #1877f2;
}
.btn-social.facebook:hover {
  background: #1877f2;
  color: #fff;
}
.btn-social i {
  font-size: 18px;
}


/* ---------- 39.3 SEARCH-RESULTS (fix Bootstrap row/col layout) ---------- */
.search-layout {
  display: block;              /* was grid, breaking .row inside */
  padding: 24px 0;
}

/* Scope .diet-dot to card context ONLY. Inside filter labels,
   use a neutral inline chip instead. */
.filter-sidebar .fg-body label .diet-dot,
.filter-group label .diet-dot {
  display: inline-block;
  width: 12px;
  height: 12px;
  border: 1.5px solid var(--green);
  border-radius: 2px;
  position: relative;
  background: #fff;
  flex-shrink: 0;
  vertical-align: middle;
}
.filter-sidebar .fg-body label .diet-dot::after,
.filter-group label .diet-dot::after {
  content: '';
  position: absolute;
  inset: 2px;
  background: var(--green);
  border-radius: 50%;
}
.filter-sidebar .fg-body label .diet-dot.nonveg,
.filter-group label .diet-dot.nonveg { border-color: var(--danger); }
.filter-sidebar .fg-body label .diet-dot.nonveg::after,
.filter-group label .diet-dot.nonveg::after {
  background: var(--danger);
  border-radius: 0;
  clip-path: polygon(50% 0%, 100% 100%, 0% 100%);
  inset: 1px;
}
.filter-sidebar .fg-body label .diet-dot.vegan,
.filter-group label .diet-dot.vegan { border-color: var(--green-dark); }
.filter-sidebar .fg-body label .diet-dot.vegan::after,
.filter-group label .diet-dot.vegan::after {
  background: var(--green-dark);
  border-radius: 0;
  clip-path: polygon(50% 0%, 100% 50%, 85% 100%, 15% 100%, 0 50%);
  inset: 1px;
}

.close-filter {
  background: var(--bg-soft);
  border: none;
  width: 36px;
  height: 36px;
  border-radius: 50%;
  color: var(--slate);
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 18px;
}


/* ---------- 39.4 PROFILE-HERO (remove card styling from section) ---------- */
/* The <section class="profile-hero"> is just a wrapper, not a card.
   Override the earlier rule that gave it border/background. */
section.profile-hero {
  background: transparent;
  border: none;
  border-radius: 0;
  box-shadow: none;
  overflow: visible;
  padding: 24px 0;
}
/* If .profile-info exists, it becomes the card */
.profile-info {
  background: #fff;
  border: 1px solid var(--line);
  border-radius: var(--r-md);
  padding: 22px;
  box-shadow: var(--sh-sm);
  margin-bottom: 16px;
}


/* ---------- 39.5 HERO section wrapper ---------- */
.hero {
  position: relative;
  background: transparent;
}


/* ---------- 39.7 MESSAGES (.dash-main flex for chat fill) ---------- */
.dash-main {
  min-width: 0;       /* prevent grid blowout */
  flex: 1;
  max-width: 100%;
}


/* ---------- 39.8 LINK UNDERLINE CLEANUP ---------- */
/* Social buttons, chat links, filter anchors — make sure they don't underline */
.btn-social,
.chat-list-item,
.filter-group,
.dash-nav-item {
  text-decoration: none;
}


/* =========================================================
   40. NEW COMPONENTS (hero rebuild, profile innovation,
       lightbox, contact gate, auth rows, chat compose)
   ========================================================= */

/* ---------- 40.1 HERO — two-column (copy + register card) ---------- */
.hero-two-col {
  display: grid;
  grid-template-columns: 1fr;
  gap: 28px;
  align-items: center;
  max-width: 1200px;
  width: 100%;
  margin: 0 auto;
}
@media (min-width: 992px) {
  .hero-two-col { grid-template-columns: 1.05fr 0.95fr; gap: 40px; }
}
.hero-copy h1 {
  color: #fff;
  font-size: clamp(28px, 4.8vw, 48px);
  line-height: 1.1;
  margin-bottom: 14px;
  font-weight: 700;
}
.hero-copy h1 em { color: var(--gold-light); font-style: italic; }
.hero-copy .sub {
  color: rgba(255, 255, 255, 0.95);
  font-size: 15.5px;
  margin-bottom: 16px;
  max-width: 520px;
}
.hero-trust {
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
  margin-top: 10px;
}
.hero-trust span {
  color: #fff;
  font-size: 12.5px;
  font-weight: 500;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  background: rgba(255, 255, 255, 0.16);
  backdrop-filter: blur(6px);
  padding: 6px 12px;
  border-radius: 20px;
  border: 1px solid rgba(255, 255, 255, 0.2);
}
.hero-trust i { color: var(--gold-light); }

/* Hero register form card */
.hero-register-card {
  max-width: 440px;
  margin: 0 auto;
  width: 100%;
  padding: 22px;
}
.hero-register-card h3 {
  font-size: 19px;
  margin-bottom: 4px;
  color: var(--ink);
}
.hero-register-card .tag-line {
  color: var(--slate);
  font-size: 13px;
  margin-bottom: 16px;
}
.hero-form-v { display: flex; flex-direction: column; gap: 10px; }
.hf-row { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.hf-field label {
  font-size: 10.5px;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--slate);
  margin-bottom: 4px;
  display: block;
}
.hf-field select {
  width: 100%;
  background: var(--bg-soft);
  border: 1px solid var(--line);
  font-size: 13.5px;
  padding: 9px 10px;
  color: var(--ink);
  border-radius: var(--r-sm);
}
.hf-field select:focus {
  border-color: var(--green);
  box-shadow: 0 0 0 3px rgba(214, 31, 38, 0.15);
  outline: none;
}
.hf-submit {
  width: 100%;
  margin-top: 8px;
  font-size: 15px;
  padding: 12px;
  justify-content: center;
}
.hf-foot {
  text-align: center;
  font-size: 13px;
  color: var(--slate);
  margin-top: 8px;
}
.hf-foot a { font-weight: 600; color: var(--orange); }

@media (max-width: 991px) {
  .hero-register-card { margin-top: 8px; padding: 18px; }
  .hero-copy h1 { font-size: 28px; }
  .hero-trust span { font-size: 11.5px; padding: 5px 10px; }
}


/* ---------- 40.2 AUTH BUTTON LAYOUTS ---------- */
.auth-btn-row {
  display: flex;
  gap: 10px;
  margin-top: 18px;
  flex-wrap: wrap;
}
.auth-btn-row > .btn {
  flex: 1 1 180px;
  justify-content: center;
}
.auth-btn-stack {
  display: flex;
  flex-direction: column;
  gap: 10px;
  align-items: center;
  margin-top: 18px;
}
.auth-btn-stack > .btn {
  min-width: 260px;
  justify-content: center;
}
.auth-btn-center {
  display: flex;
  justify-content: center;
  margin-top: 18px;
}
.auth-btn-center > .btn {
  min-width: 260px;
  justify-content: center;
}


/* ---------- 40.3 PROFILE PAGE — innovative gallery ---------- */
.main-img-wrap {
  position: relative;
  border-radius: var(--r-lg);
  overflow: hidden;
  box-shadow: var(--sh-md);
  cursor: zoom-in;
  aspect-ratio: 4 / 5;
  background: var(--bg-soft);
}
.main-img-wrap .main-img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 0.5s var(--ease);
  display: block;
}
.main-img-wrap:hover .main-img { transform: scale(1.04); }
.main-img-wrap .img-overlay {
  position: absolute;
  bottom: 14px;
  left: 14px;
  background: rgba(0, 0, 0, 0.7);
  backdrop-filter: blur(6px);
  color: #fff;
  font-size: 12px;
  font-weight: 500;
  padding: 6px 14px;
  border-radius: 20px;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  opacity: 0;
  transform: translateY(6px);
  transition: all var(--t-fast);
}
.main-img-wrap:hover .img-overlay { opacity: 1; transform: translateY(0); }

.img-badge {
  position: absolute;
  font-size: 11px;
  font-weight: 700;
  padding: 5px 11px;
  border-radius: 20px;
  display: inline-flex;
  align-items: center;
  gap: 5px;
  letter-spacing: 0.03em;
  box-shadow: var(--sh-sm);
}
.img-badge.premium {
  top: 14px;
  left: 14px;
  background: linear-gradient(135deg, var(--gold), var(--gold-dark));
  color: #fff;
}
.img-badge.online {
  top: 14px;
  right: 14px;
  background: rgba(255, 255, 255, 0.95);
  color: var(--green-dark);
}
.img-badge.online i { color: var(--green); font-size: 8px; animation: pulse 1.5s infinite; }
@keyframes pulse {
  0%, 100% { opacity: 1; }
  50%      { opacity: 0.4; }
}

.profile-compat {
  margin-top: 14px;
  background: linear-gradient(135deg, var(--green), var(--green-dark));
  color: #fff;
  padding: 16px 18px;
  border-radius: var(--r-md);
  display: flex;
  align-items: center;
  gap: 16px;
  box-shadow: var(--sh-md);
}
.compat-big {
  font-family: var(--font-display);
  font-size: 36px;
  font-weight: 700;
  color: var(--gold-light);
  line-height: 1;
  flex-shrink: 0;
}
.compat-label {
  font-size: 14px;
  font-weight: 600;
  color: #fff;
  margin-bottom: 2px;
}
.compat-sub {
  font-size: 12px;
  color: rgba(255, 255, 255, 0.85);
}


/* ---------- 40.4 CONTACT DETAILS — blurred + premium gate ---------- */
.contact-locked {
  position: relative;
  min-height: 280px;
  border-radius: var(--r-md);
  overflow: hidden;
}
.contact-blur {
  filter: blur(6px);
  pointer-events: none;
  user-select: none;
  opacity: 0.6;
}
.unlock-overlay {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  background: linear-gradient(180deg, rgba(255, 255, 255, 0.8) 0%, rgba(255, 255, 255, 0.95) 60%);
  backdrop-filter: blur(2px);
}
.unlock-box {
  text-align: center;
  max-width: 400px;
  padding: 24px;
}
.unlock-box > i {
  font-size: 44px;
  color: var(--gold-dark);
  display: block;
  margin-bottom: 12px;
}
.unlock-box h5 {
  font-size: 20px;
  color: var(--ink);
  margin-bottom: 8px;
}
.unlock-box p {
  color: var(--slate);
  font-size: 14px;
  margin-bottom: 18px;
}
.unlock-benefits {
  display: flex;
  flex-direction: column;
  gap: 6px;
  margin-top: 16px;
  text-align: left;
  padding: 14px 18px;
  background: var(--gold-light);
  border-radius: var(--r-sm);
  border: 1px solid var(--gold);
}
.unlock-benefits span {
  font-size: 13px;
  color: var(--gold-dark);
  font-weight: 500;
  display: inline-flex;
  align-items: center;
  gap: 8px;
}
.unlock-benefits i { color: var(--green); }

.lock-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 18px;
  height: 18px;
  background: var(--gold);
  color: #fff;
  border-radius: 50%;
  font-size: 9px;
  margin-left: 4px;
}


/* ---------- 40.5 LIGHTBOX ---------- */
.lightbox {
  display: none;
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.92);
  z-index: 3000;
  align-items: center;
  justify-content: center;
  padding: 40px 20px;
  animation: lbFade 0.2s var(--ease);
}
.lightbox.open { display: flex; }
@keyframes lbFade {
  from { opacity: 0; }
  to   { opacity: 1; }
}
.lightbox-img {
  max-width: 92vw;
  max-height: 85vh;
  border-radius: var(--r-md);
  box-shadow: 0 20px 60px rgba(0, 0, 0, 0.5);
  user-select: none;
  transition: transform var(--t-med);
}
.lightbox-close,
.lightbox-nav {
  position: absolute;
  background: rgba(255, 255, 255, 0.15);
  backdrop-filter: blur(6px);
  border: 1px solid rgba(255, 255, 255, 0.2);
  color: #fff;
  width: 48px;
  height: 48px;
  border-radius: 50%;
  font-size: 20px;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  transition: background var(--t-fast);
}
.lightbox-close:hover,
.lightbox-nav:hover { background: rgba(255, 255, 255, 0.3); }
.lightbox-close { top: 20px; right: 20px; }
.lightbox-nav.prev { left: 20px; top: 50%; transform: translateY(-50%); }
.lightbox-nav.next { right: 20px; top: 50%; transform: translateY(-50%); }
.lightbox-counter {
  position: absolute;
  bottom: 20px;
  left: 50%;
  transform: translateX(-50%);
  color: #fff;
  background: rgba(0, 0, 0, 0.6);
  padding: 6px 14px;
  border-radius: 20px;
  font-size: 13px;
  letter-spacing: 0.05em;
}


/* ---------- 40.6 COMPLETION RING — FIX CENTER ALIGNMENT ----------
   SVG is 90×90 viewBox. Container must match for text to center.
   Override the earlier 120×120 rule from Section 31.
   ---------------------------------------------------------- */
.completion-ring {
  width: 90px;
  height: 90px;
  position: relative;
  margin: 0 auto;
  flex-shrink: 0;
}
.completion-ring svg {
  width: 90px;
  height: 90px;
  display: block;
  transform: rotate(-90deg);
}
.completion-ring .ring-text,
.completion-ring .pct {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: var(--font-display);
  font-size: 20px;
  font-weight: 700;
  color: var(--green-dark);
  line-height: 1;
  text-align: center;
}

/* Ring inside coloured completion-cards (verify-profile uses gold gradient bg) */
.completion-card[style*="gold"] .ring-text,
.completion-card[style*="linear-gradient"] .ring-text {
  color: #fff;
}


/* ---------- 40.7 CHAT COMPOSE — beautified ---------- */
.chat-compose {
  gap: 8px;
  align-items: center;
  padding: 14px 16px;
  background: var(--bg-soft);
}
.chat-compose .icon-btn {
  width: 38px;
  height: 38px;
  border: none;
  background: transparent;
  color: var(--slate);
}
.chat-compose .icon-btn:hover {
  background: rgba(214, 31, 38, 0.1);
  color: var(--green-dark);
  border: none;
}
.chat-compose input[type="text"],
.chat-compose .form-control {
  flex: 1;
  background: #fff;
  border: 1px solid var(--line);
  border-radius: 24px;
  padding: 10px 18px;
  font-size: 14px;
  transition: all var(--t-fast);
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.04);
}
.chat-compose input[type="text"]:focus,
.chat-compose .form-control:focus {
  outline: none;
  border-color: var(--green);
  box-shadow: 0 0 0 3px rgba(214, 31, 38, 0.12);
}
.chat-compose button[type="submit"] {
  width: 42px;
  height: 42px;
  border-radius: 50%;
  border: none;
  background: linear-gradient(135deg, var(--green), var(--green-dark));
  color: #fff;
  font-size: 18px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  box-shadow: var(--sh-green);
  transition: transform var(--t-fast);
  flex-shrink: 0;
}
.chat-compose button[type="submit"]:hover {
  transform: scale(1.08);
}
.chat-compose button[type="submit"] i { margin: 0; }


/* ---------- 40.8 DASHBOARD SIDEBAR AUTO-SCROLL INDICATOR ---------- */
.dash-sidebar {
  scroll-behavior: smooth;
}


/* ---------- 40.9 HERO RESPONSIVE REFINE ---------- */
@media (max-width: 575px) {
  .hero-slide { padding: 24px 16px; }
  .hero-register-card { padding: 16px; }
  .hf-row { grid-template-columns: 1fr 1fr; gap: 8px; }
  .hero-trust { gap: 6px; }
}



/* =========================================================
   41. ROUND 5 FIXES — comprehensive visual + layout polish
   ========================================================= */

/* ---------- 41.1 BOTTOM-NAV middle circle — positioning + keyframes
   (the actual circle styling lives in Section 42.4 to avoid conflicts) ---------- */
.bottom-nav a.center-btn,
.bottom-nav a.center-highlight {
  position: relative;
  margin-top: -30px;
}
@keyframes centerPulse {
  0%, 100% {
    box-shadow: 0 6px 18px rgba(198, 138, 58, 0.45),
                0 0 0 0 rgba(198, 138, 58, 0.55);
  }
  50% {
    box-shadow: 0 6px 18px rgba(198, 138, 58, 0.45),
                0 0 0 14px rgba(198, 138, 58, 0);
  }
}


/* ---------- 41.2 HERO MOBILE — eliminate overlap / make all clickable ---------- */
@media (max-width: 767px) {
  .hero { padding: 0; }
  .hero-slide {
    min-height: auto;
    padding: 26px 18px 32px;
  }
  .hero-two-col {
    grid-template-columns: 1fr;
    gap: 18px;
  }
  .hero-copy { max-width: 100%; }
  .hero-copy h1 {
    font-size: 24px;
    line-height: 1.15;
    margin-bottom: 10px;
  }
  .hero-copy .sub { font-size: 13.5px; margin-bottom: 12px; }
  .hero-trust { display: none; }   /* save space on mobile */
  .hero-register-card {
    padding: 16px;
    max-width: 100%;
    position: relative;
    z-index: 2;               /* above slide overlay */
  }
  /* Stack register card firmly BELOW copy, no overlap */
  .hero-slide .hero-content {
    position: relative;
    z-index: 3;
  }
  /* Carousel arrows get out of the way on mobile */
  .hero-carousel .carousel-control-prev,
  .hero-carousel .carousel-control-next {
    width: 36px;
    height: 36px;
    margin: 0 4px;
    opacity: 0.7;
  }
  .hero-carousel .carousel-indicators { bottom: 6px; }
}


/* ---------- 41.3 METRICS SECTION — proper heading ---------- */
/* ---------- 41.4 SCAN-TO-DOWNLOAD — mobile left gap ---------- */
@media (max-width: 767px) {
  .get-the-app {
    padding: 36px 0;
  }
  .get-the-app > .container {
    padding-left: 18px;
    padding-right: 18px;
  }
  .get-the-app .app-stats,
  .get-the-app .store-badges {
    justify-content: flex-start;
  }
  .get-the-app .store-badges { flex-wrap: nowrap; gap: 8px; }
  .get-the-app .store-badge { flex: 1 1 0; min-width: 0; justify-content: center; padding: 8px 10px; gap: 6px; }
  .get-the-app .store-badge .sb-big { font-size: 13px; }
  .get-the-app .store-badge .sb-small { font-size: 8.5px; }
  .get-the-app .qr-code,
  .get-the-app .qr-block {
    margin-top: 20px;
    padding-left: 4px;
  }
}


/* ---------- 41.5 PAGE-HERO "Perfect Marry" orange heading ---------- */
.page-hero h1 .brand-accent,
.page-hero h1 span.brand,
.page-hero h1 em {
  color: var(--gold-light);
  font-style: italic;
}
/* When the heading literally contains "Perfect Marry", colour via JS adding .brand-accent */


/* ---------- 41.6 INTERESTS / SHORTLISTED / VISITORS GRIDS 4→3 ---------- */
/* Override Bootstrap col classes for these specific pages only */
body.dash-page-list .row .col-lg-3 {
  flex: 0 0 auto;
  width: 33.333%;
}
@media (max-width: 991px) {
  body.dash-page-list .row .col-lg-3 {
    width: 50%;
  }
}
@media (max-width: 575px) {
  body.dash-page-list .row .col-lg-3 {
    width: 100%;
  }
}


/* ---------- 41.7 SAFETY-TIPS / PREMIUM-PLANS feature cards center ---------- */
.feature-center-card,
.safety-card,
.plan-feature-card {
  text-align: center;
  padding: 24px 18px;
  background: #fff;
  border: 1px solid var(--line);
  border-radius: var(--r-md);
  height: 100%;
  transition: all var(--t-fast);
}
.feature-center-card:hover,
.safety-card:hover,
.plan-feature-card:hover {
  transform: translateY(-4px);
  box-shadow: var(--sh-md);
  border-color: var(--green);
}
.feature-center-card .fc-icon,
.safety-card .fc-icon,
.plan-feature-card .fc-icon {
  width: 64px;
  height: 64px;
  border-radius: 50%;
  background: var(--green-light);
  color: var(--green-dark);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 28px;
  margin: 0 auto 14px;
}
.feature-center-card.orange .fc-icon,
.safety-card.orange .fc-icon,
.plan-feature-card.orange .fc-icon { background: var(--orange-light); color: var(--orange-dark); }
.feature-center-card.gold .fc-icon,
.safety-card.gold .fc-icon,
.plan-feature-card.gold .fc-icon { background: var(--gold-light); color: var(--gold-dark); }
.feature-center-card h5,
.safety-card h5,
.plan-feature-card h5 {
  font-size: 17px;
  margin-bottom: 8px;
}
.feature-center-card p,
.safety-card p,
.plan-feature-card p {
  color: var(--slate);
  font-size: 14px;
  margin: 0;
}


/* ---------- 41.8 DASHBOARD — 4th stat card fix + gaps + matches 3-col ---------- */
@media (max-width: 767px) {
  .dash-stat-card {
    padding: 14px;
    gap: 10px;
  }
  .dash-stat-card .stat-num,
  .dash-stat-card .val { font-size: 18px; }
  .dash-stat-card .stat-label,
  .dash-stat-card .lbl { font-size: 11px; }
  .dash-stat-card .ds-icon,
  .dash-stat-card .stat-icon { width: 40px; height: 40px; font-size: 18px; }
}
/* Nudge cards: visible gap */
.nudge + .nudge {
  margin-top: 14px;
}
/* See all matches button: bottom margin */
.matches-cta-row {
  margin: 28px 0 20px;
  text-align: center;
}


/* ---------- 41.9 FORM SECTION BACKGROUND HEADINGS (edit-profile, search, partner-preferences) ---------- */
.form-section,
.pref-section {
  background: #fff;
  border: 1px solid var(--line);
  border-radius: var(--r-md);
  padding: 22px;
  margin-bottom: 20px;
  box-shadow: var(--sh-sm);
}
.form-section-heading,
.pref-section-heading {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 16px;
  margin: -22px -22px 16px -22px;
  background: linear-gradient(135deg, var(--green-light), var(--gold-light));
  border-bottom: 1px solid var(--line);
  border-radius: var(--r-md) var(--r-md) 0 0;
  font-family: var(--font-display);
  font-size: 16px;
  font-weight: 600;
  color: var(--ink);
}
.form-section-heading i,
.pref-section-heading i {
  color: var(--orange);
  font-size: 20px;
}


/* ---------- 41.10 MESSAGES mobile right-side gap ---------- */
@media (max-width: 767px) {
  .chat-main-head {
    padding: 10px 14px;
    border-radius: var(--r-md) var(--r-md) 0 0;
  }
  .chat-messages { padding: 14px 12px 12px; }
  .chat-compose {
    padding: 12px;
    border-radius: 0 0 var(--r-md) var(--r-md);
  }
  .dash-main > .chat-container {
    margin-right: 0;
    margin-left: 0;
  }
}


/* ---------- 41.11 NRI Featured Profiles grid tweaks ---------- */
.nri-featured-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 16px;
  margin-top: 20px;
}
@media (min-width: 576px) { .nri-featured-grid { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 992px) { .nri-featured-grid { grid-template-columns: repeat(4, 1fr); } }


/* ---------- 41.12 PAYMENT coupon layout ---------- */
.coupon-wrap { margin-bottom: 20px; }
.coupon-input-row {
  display: flex;
  gap: 8px;
  margin-bottom: 14px;
}
.coupon-input-row input {
  flex: 1;
  padding: 11px 14px;
  border: 1px dashed var(--green);
  border-radius: var(--r-sm);
  background: var(--green-light);
  color: var(--ink);
  font-size: 14px;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  font-weight: 600;
}
.coupon-input-row input::placeholder {
  color: var(--slate);
  font-weight: 400;
  letter-spacing: 0;
  text-transform: none;
}
.coupon-list {
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.coupon-card {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 14px 16px;
  background: #fff;
  border: 1px dashed var(--line);
  border-radius: var(--r-md);
  transition: all var(--t-fast);
  cursor: pointer;
}
.coupon-card:hover {
  border-color: var(--green);
  background: var(--green-light);
}
.coupon-card .coupon-code {
  background: var(--green-light);
  color: var(--green-dark);
  padding: 6px 12px;
  border-radius: var(--r-sm);
  font-weight: 700;
  font-size: 13px;
  letter-spacing: 0.08em;
  border: 1px dashed var(--green);
  flex-shrink: 0;
}
.coupon-card .coupon-body { flex: 1; min-width: 0; }
.coupon-card .coupon-title {
  font-size: 14px;
  font-weight: 600;
  color: var(--ink);
  margin-bottom: 2px;
}
.coupon-card .coupon-desc {
  font-size: 12.5px;
  color: var(--slate);
}
.coupon-card .btn { flex-shrink: 0; }

/* ---------- Contact form reCAPTCHA wrapper ---------- */
.recaptcha-wrap { display: flex; flex-direction: column; align-items: flex-start; margin-top: 4px; }
.recaptcha-wrap .g-recaptcha { transform-origin: 0 0; }
@media (max-width: 360px) {
  /* Slightly scale down the widget on very narrow viewports so it doesn't overflow */
  .recaptcha-wrap .g-recaptcha { transform: scale(0.88); }
}

/* ---------- Inbox filter: Conversation-type chips ---------- */
.conv-type-filter {
  background: linear-gradient(135deg, rgba(255,255,255,0.7), rgba(255,255,255,0.55));
  border: 1px solid rgba(243,224,203,0.6);
  border-radius: 14px;
  padding: 16px 14px 14px;
  margin: 16px 16px 0;
}
.conv-type-filter > .form-label {
  font-weight: 600;
  color: var(--ink);
  margin: 0 0 10px;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: 14px;
}
.conv-type-filter > .form-label i { color: var(--orange-dark); }
.conv-type-chips { display: flex; flex-wrap: wrap; gap: 8px; }
.conv-chip {
  background: #fff;
  border: 1.5px solid var(--line);
  color: var(--ink);
  font-weight: 500;
  font-size: 13px;
  padding: 7px 14px;
  border-radius: 50px;
  cursor: pointer;
  transition: all 0.18s;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-family: inherit;
  line-height: 1.2;
}
.conv-chip:hover {
  border-color: var(--orange);
  color: var(--orange-dark);
}
.conv-chip.active {
  background: linear-gradient(135deg, var(--green) 0%, var(--orange) 100%);
  color: #fff;
  border-color: transparent;
  box-shadow: 0 3px 10px rgba(214,31,38,0.2);
}
.conv-chip .chip-check { display: none; font-size: 12px; }
.conv-chip.active .chip-check { display: inline; }

/* Mobile: stack coupon controls vertically so nothing overflows the card */
@media (max-width: 575.98px) {
  .coupon-input-row { flex-direction: column; gap: 10px; }
  .coupon-input-row input { width: 100%; }
  .coupon-input-row .btn { width: 100%; }

  .coupon-card {
    flex-direction: column;
    align-items: stretch;
    gap: 10px;
    padding: 12px 14px;
  }
  .coupon-card .coupon-code { align-self: flex-start; }
  .coupon-card .btn { width: 100%; }
  .coupon-card .coupon-title,
  .coupon-card .coupon-desc { word-break: normal; overflow-wrap: anywhere; }
}


/* ---------- 41.13 SEARCH-RESULTS — filter accordion + list view ---------- */
/* Ensure filter-sidebar uses proper cursor + click area on desktop + mobile */
.filter-sidebar .filter-group {
  padding: 14px 4px;
  border-bottom: 1px solid var(--line-soft);
}
.filter-sidebar .filter-group:last-child { border-bottom: none; }
.filter-sidebar .fg-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  cursor: pointer;
  font-weight: 600;
  font-size: 14px;
  color: var(--ink);
  padding: 2px 0;
  user-select: none;
}
.filter-sidebar .fg-head::after {
  content: '\F282';          /* bootstrap chevron-down */
  font-family: 'bootstrap-icons';
  color: var(--slate);
  transition: transform var(--t-fast);
  font-size: 12px;
}
.filter-sidebar .filter-group.open .fg-head::after { transform: rotate(180deg); }
.filter-sidebar .fg-body {
  display: none;
  padding-top: 12px;
}
.filter-sidebar .filter-group.open .fg-body { display: block; }

/* Results grid: grid view default, list view override */
.results-grid[data-view="list"] {
  display: flex !important;
  flex-direction: column;
  gap: 14px;
}
.results-grid[data-view="list"] > [class*="col-"] {
  flex: none !important;
  width: 100% !important;
  max-width: 100% !important;
}
.results-grid[data-view="list"] .profile-card {
  flex-direction: row;
  align-items: stretch;
  max-height: 200px;
}
.results-grid[data-view="list"] .profile-card .pc-img {
  flex: 0 0 30%;
  aspect-ratio: auto;
  min-width: 160px;
}
.results-grid[data-view="list"] .profile-card .pc-body {
  flex: 1;
  padding: 16px;
}
.results-grid[data-view="list"] .profile-card .pc-actions {
  flex-direction: column;
  padding: 16px 12px;
  border-left: 1px solid var(--line-soft);
  gap: 8px;
  flex: 0 0 120px;
}
@media (max-width: 767px) {
  .results-grid[data-view="list"] .profile-card .pc-actions {
    flex: 0 0 auto;
    flex-direction: row;
    border-left: none;
    border-top: 1px solid var(--line-soft);
  }
  .results-grid[data-view="list"] .profile-card {
    flex-direction: column;
    max-height: none;
  }
  .results-grid[data-view="list"] .profile-card .pc-img {
    flex: none;
    width: 100%;
    min-width: 0;
    aspect-ratio: 16 / 10;
  }
}

/* Mobile: 2 per row for search results */
@media (max-width: 575px) {
  .results-grid:not([data-view="list"]) > .col-6,
  .results-grid:not([data-view="list"]) > [class*="col-"] {
    flex: 0 0 50%;
    max-width: 50%;
    padding: 0 6px;
  }
  .results-grid { margin-left: -6px; margin-right: -6px; }
}

/* View toggle: icons properly aligned */
.view-toggle {
  display: inline-flex;
  gap: 0;
  border: 1px solid var(--line);
  border-radius: var(--r-sm);
  overflow: hidden;
}
.view-toggle button {
  border: none;
  border-radius: 0;
  padding: 8px 12px;
  background: #fff;
  color: var(--slate);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 15px;
  cursor: pointer;
  transition: all var(--t-fast);
}
.view-toggle button + button { border-left: 1px solid var(--line); }
.view-toggle button:hover { color: var(--green-dark); }
.view-toggle button.active {
  background: var(--green);
  color: #fff;
}

/* Mobile filter modal full-screen */
/* [neutralized — see Section 45] .filter-modal { */
/*   display: none; */
/*   position: fixed; */
/*   inset: 0; */
/*   background: #fff; */
/*   z-index: 2100; */
/*   flex-direction: column; */
/* } */
/* [neutralized — see Section 45] .filter-modal.open { display: flex; } */
body.filter-open { overflow: hidden; }


/* ---------- 41.14 MANAGE PHOTOS — uploader more attractive ---------- */
.photo-upload-zone {
  border: 2px dashed var(--green);
  background: linear-gradient(135deg, var(--green-light), #fff);
  border-radius: var(--r-md);
  padding: 32px 20px;
  text-align: center;
  transition: all var(--t-fast);
  cursor: pointer;
  position: relative;
}
.photo-upload-zone:hover {
  border-color: var(--green-dark);
  background: var(--green-light);
  transform: translateY(-2px);
  box-shadow: var(--sh-md);
}
.photo-upload-zone .pz-icon {
  width: 64px;
  height: 64px;
  margin: 0 auto 12px;
  border-radius: 50%;
  background: #fff;
  color: var(--green);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 30px;
  box-shadow: var(--sh-sm);
}
.photo-upload-zone h5 {
  font-size: 18px;
  color: var(--ink);
  margin-bottom: 4px;
}
.photo-upload-zone p {
  color: var(--slate);
  font-size: 13px;
  margin-bottom: 14px;
}
.photo-upload-zone .browse-btn {
  background: linear-gradient(135deg, var(--green), var(--green-dark));
  color: #fff;
  border: none;
  padding: 11px 28px;
  font-weight: 600;
  font-size: 14px;
  border-radius: 26px;
  box-shadow: var(--sh-green);
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  transition: transform var(--t-fast);
}
.photo-upload-zone .browse-btn:hover { transform: scale(1.04); }

@media (max-width: 767px) {
  .boost-visibility-card { margin-bottom: 22px; }
}


/* ---------- 41.15 VIDEO-PROFILE youtube embed ---------- */
.video-player-wrap {
  position: relative;
  aspect-ratio: 16 / 9;
  background: #000;
  border-radius: var(--r-md);
  overflow: hidden;
  cursor: pointer;
}
.video-player-wrap img,
.video-player-wrap iframe {
  width: 100%;
  height: 100%;
  object-fit: cover;
  border: none;
}
.video-player-wrap .play-overlay {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(0, 0, 0, 0.3);
  transition: background var(--t-fast);
}
.video-player-wrap:hover .play-overlay { background: rgba(0, 0, 0, 0.15); }
.video-player-wrap .play-overlay i {
  width: 72px;
  height: 72px;
  border-radius: 50%;
  background: rgba(198, 138, 58, 0.95);
  color: #fff;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 32px;
  box-shadow: 0 10px 30px rgba(0, 0, 0, 0.4);
  padding-left: 4px;
}


/* ---------- 41.16 CONTACT page — center align + button ---------- */
.contact-info-card {
  text-align: center;
  padding: 26px 18px;
  background: #fff;
  border: 1px solid var(--line);
  border-radius: var(--r-md);
  height: 100%;
  transition: all var(--t-fast);
}
.contact-info-card:hover {
  transform: translateY(-4px);
  box-shadow: var(--sh-md);
  border-color: var(--green);
}
.contact-info-card .ci-icon {
  width: 56px;
  height: 56px;
  border-radius: 50%;
  background: var(--green-light);
  color: var(--green-dark);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 24px;
  margin: 0 auto 12px;
}
.contact-info-card.orange .ci-icon { background: var(--orange-light); color: var(--orange-dark); }
.contact-info-card.gold .ci-icon { background: var(--gold-light); color: var(--gold-dark); }
.contact-info-card h6 {
  font-size: 16px;
  margin-bottom: 6px;
  color: var(--ink);
  font-family: var(--font-display);
}
.contact-info-card p,
.contact-info-card a {
  font-size: 13.5px;
  color: var(--slate);
  margin: 0;
  display: block;
}
.contact-info-card a { color: var(--green-dark); font-weight: 500; margin-top: 2px; }

.contact-send-row {
  display: flex;
  justify-content: center;
  margin-top: 24px;
}


/* ---------- 41.17 REPORT-MISUSE + SETTINGS gap/align ---------- */
.settings-group,
.report-group {
  background: #fff;
  border: 1px solid var(--line);
  border-radius: var(--r-md);
  padding: 22px;
  margin-bottom: 18px;
  box-shadow: var(--sh-sm);
}
.settings-group h5,
.report-group h5 {
  font-size: 16px;
  color: var(--ink);
  margin-bottom: 14px;
  padding-bottom: 10px;
  border-bottom: 1px solid var(--line-soft);
  display: flex;
  align-items: center;
  gap: 8px;
}
.settings-group h5 i,
.report-group h5 i { color: var(--orange); font-size: 18px; }

.action-row {
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
  justify-content: flex-end;
  margin-top: 18px;
  padding-top: 18px;
  border-top: 1px solid var(--line-soft);
}
@media (max-width: 575px) {
  .action-row {
    justify-content: center;
  }
  .action-row > .btn { flex: 1 1 140px; }
}


/* ---------- 41.18 CAT-PANEL visibility (only active shows) ---------- */
.cat-panel {
  display: none;
}
.cat-panel.active {
  display: block;
  animation: fadeInUp 0.3s var(--ease);
}

/* ---------- 41.19 LEGACY CLASS ALIAS — search-form-section → form-section look ---------- */
.search-form-section {
  background: #fff;
  border: 1px solid var(--line);
  border-radius: var(--r-md);
  padding: 22px;
  margin-bottom: 20px;
  box-shadow: var(--sh-sm);
  position: relative;
}
.search-form-section-title {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 16px;
  margin: -22px -22px 16px -22px;
  background: linear-gradient(135deg, var(--green-light), var(--gold-light));
  border-bottom: 1px solid var(--line);
  border-radius: var(--r-md) var(--r-md) 0 0;
  font-family: var(--font-display);
  font-size: 16px;
  font-weight: 600;
  color: var(--ink);
}
.search-form-section-title i {
  color: var(--orange);
  font-size: 20px;
}

/* When search-form-section is nested inside a search-form-card, remove the card border */
.search-form-card > .search-form-section:first-child {
  margin-top: 0;
}


/* =========================================================
   42. ROUND 6 FIXES — image logo, mobile fixes, new pages,
       profile meta polish, page-hero contrast, logout modal
   ========================================================= */

/* ---------- 42.1 IMAGE LOGO (Perfect Marry brand mark) ---------- */
.brand-logo {
  display: inline-flex;
  align-items: center;
  text-decoration: none;
  color: inherit;
}
.brand-logo-img {
  /* New logo aspect ~ 1.5:1 (RM monogram + Perfect Marry.com text) */
  height: 50px;
  width: auto;
  display: block;
  object-fit: contain;
}
@media (min-width: 992px) {
  .brand-logo-img { height: 60px; }
}
@media (max-width: 575px) {
  .brand-logo-img { height: 44px; }
}

/* Footer variant — uses full logo with tagline */
.foot-brand-logo {
  display: inline-block;
  margin-bottom: 12px;
}
.foot-brand-logo img,
.foot-brand-logo svg {
  height: 88px;
  width: auto;
  display: block;
  /* Slight white background pill so logo reads on dark footer */
  background: #fff;
  padding: 8px 14px;
  border-radius: 12px;
}

/* Keep legacy .logo-mark rule working if any page still uses it */
.logo-mark {
  width: 40px; height: 40px;
  background: linear-gradient(135deg, var(--green), var(--orange));
  color: #fff;
  border-radius: 10px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-family: var(--font-script);
  font-size: 22px;
  flex-shrink: 0;
}


/* ---------- 42.2 HERO CAROUSEL — solid red backdrop matches hero-slide ---------- */
.hero {
  position: relative;
  background: transparent;
  padding: 0;
}
.hero-carousel {
  background: #141826;
  border-radius: 0;
}
.hero-carousel .carousel-inner {
  /* No background here — let it be transparent so only the outer .hero-carousel
     gradient shows through if any layer is empty. Adding a background here
     would cause it to be visible as a band during slide transitions. */
  background: transparent;
}
.hero-slide {
  background-color: #141826;
}
.hero-slide .slide-bg {
  width: 100%;
  height: 100%;
  position: absolute;
  inset: 0;
  object-fit: cover;
  z-index: 0;
}

/* Ensure controls sit ABOVE the slide-bg + overlay, are always tappable */
.hero-carousel .carousel-control-prev,
.hero-carousel .carousel-control-next {
  z-index: 15;
  pointer-events: auto;
}

/* Mobile: carousel controls inside the slide area (not floating off-screen) */
@media (max-width: 767px) {
  .hero-carousel .carousel-control-prev {
    left: 6px;
    margin: 0;
    width: 36px;
    height: 36px;
  }
  .hero-carousel .carousel-control-next {
    right: 6px;
    margin: 0;
    width: 36px;
    height: 36px;
  }
  .hero-carousel .carousel-control-prev-icon::before,
  .hero-carousel .carousel-control-next-icon::before {
    font-size: 18px;
  }
}


/* ---------- 42.3 MAIN HEADER sticky on mobile too
   (already set in Section 6 — re-enforce with higher specificity) ---------- */
header.site-header,
.site-header {
  position: sticky !important;
  top: 0;
  z-index: 1000;
}


/* ---------- 42.4 BOTTOM-NAV middle circle: solid background ---------- */
/* Already handled in 41.1 — enforce clean background so SVG mask notch shows properly */
.bottom-nav a.center-btn,
.bottom-nav a.center-highlight {
  color: var(--orange-dark);
}
.bottom-nav a.center-btn i,
.bottom-nav a.center-highlight i {
  width: 56px;
  height: 56px;
  border-radius: 50%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 24px;
  margin: 0 auto 2px;
  color: #fff;
  background: linear-gradient(135deg, var(--orange), var(--orange-dark)) !important;
  border: 3px solid #fff;
  box-sizing: content-box;
  box-shadow: 0 6px 18px rgba(198, 138, 58, 0.45),
              0 0 0 0 rgba(198, 138, 58, 0.55);
  animation: centerPulse 2.2s ease-in-out infinite;
  position: relative;
  z-index: 1;
}


/* ---------- 42.5 PAGE-HERO text contrast fix ----------
   .page-hero uses green gradient bg. Any h1/p/em in it must be light. ---------- */
.page-hero h1,
.page-hero h1 * {
  color: #fff;
}
.page-hero h1 em,
.page-hero h1 span[style*="color:var(--green-dark)"],
.page-hero h1 span[style*="color:var(--orange)"] {
  color: var(--gold-light) !important;
}
.page-hero .hero-sub,
.page-hero p.hero-sub,
.page-hero p {
  color: rgba(255, 255, 255, 0.95) !important;
}
.page-hero span[style*="color:var(--orange)"] {
  color: var(--gold-light) !important;
}
.page-hero a {
  color: var(--gold-light);
  text-decoration: underline;
}
.page-hero a:hover { color: #fff; }


/* ---------- 42.6 FOOTER Profiles-by section ---------- */
.profiles-by-wrap {
  padding-bottom: 34px;
  margin-bottom: 34px;
  border-bottom: 1px solid rgba(255, 255, 255, 0.08);
}
.profiles-by-heading {
  color: var(--gold-light) !important;
  font-family: var(--font-display);
  font-size: 18px;
  font-weight: 600;
  margin-bottom: 22px;
  padding-bottom: 0;
  letter-spacing: 0.02em;
  text-transform: none;
}
.profiles-by-heading::after { display: none; }

.profiles-by-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 20px 28px;
}
@media (min-width: 768px) {
  .profiles-by-grid { grid-template-columns: repeat(3, 1fr); }
}
@media (min-width: 992px) {
  .profiles-by-grid { grid-template-columns: repeat(5, 1fr); }
}

.profiles-by-col h6 {
  color: #fff;
  font-size: 13px;
  font-family: var(--font-body);
  font-weight: 600;
  letter-spacing: 0.04em;
  margin-bottom: 10px;
  padding-bottom: 6px;
  display: flex;
  align-items: center;
  gap: 8px;
  border-bottom: 1px solid rgba(255, 255, 255, 0.1);
}
.profiles-by-col h6::after { display: none; }
.profiles-by-col a {
  color: #b9c0cc;
  display: block;
  padding: 3px 0;
  font-size: 13px;
  transition: color var(--t-fast);
}
.profiles-by-col a:hover { color: var(--gold); }
.profiles-by-col .view-all-link {
  color: var(--orange);
  font-weight: 600;
  margin-top: 6px;
}
.profiles-by-col .view-all-link:hover { color: var(--gold-light); }


/* ---------- 42.7 BROWSE BY "View All" row under each panel ---------- */
.cat-view-all-row {
  text-align: center;
  margin-top: 22px;
}
.cat-view-all-row .btn {
  gap: 8px;
}


/* ---------- 42.8 CATEGORY DIRECTORY PAGES (religions/cities/etc) ---------- */
.cat-dir-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 12px;
}
@media (min-width: 576px) { .cat-dir-grid { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 768px) { .cat-dir-grid { grid-template-columns: repeat(3, 1fr); } }
@media (min-width: 1200px) { .cat-dir-grid { grid-template-columns: repeat(4, 1fr); } }

.cat-dir-card {
  display: flex;
  align-items: center;
  gap: 14px;
  background: #fff;
  border: 1px solid var(--line);
  border-radius: var(--r-md);
  padding: 16px 18px;
  text-decoration: none;
  color: var(--ink);
  transition: all var(--t-fast);
  position: relative;
  overflow: hidden;
}
.cat-dir-card::before {
  content: '';
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 3px;
  background: linear-gradient(90deg, var(--green), var(--orange));
  transform: scaleX(0);
  transform-origin: left;
  transition: transform var(--t-med);
}
.cat-dir-card:hover {
  transform: translateY(-3px);
  box-shadow: var(--sh-md);
  border-color: var(--green);
  color: var(--ink);
}
.cat-dir-card:hover::before { transform: scaleX(1); }

.cat-dir-icon {
  width: 48px;
  height: 48px;
  border-radius: 12px;
  background: var(--green-light);
  color: var(--green-dark);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 22px;
  flex-shrink: 0;
  transition: all var(--t-fast);
}
.cat-dir-card:hover .cat-dir-icon {
  background: linear-gradient(135deg, var(--green), var(--orange));
  color: #fff;
  transform: rotate(-6deg);
}
.cat-dir-name {
  font-family: var(--font-display);
  font-weight: 600;
  font-size: 15px;
  color: var(--ink);
  line-height: 1.2;
  margin-bottom: 2px;
}
.cat-dir-count {
  font-size: 12px;
  color: var(--orange);
  font-weight: 500;
}
.cat-dir-arrow {
  margin-left: auto;
  color: var(--muted);
  font-size: 16px;
  transition: all var(--t-fast);
  flex-shrink: 0;
}
.cat-dir-card:hover .cat-dir-arrow {
  color: var(--green-dark);
  transform: translateX(4px);
}


/* ---------- 42.9 PROFILE meta-item — colored centered icons ---------- */
.meta-grid .meta-item {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  padding: 14px 10px;
  background: #fff;
  border: 1px solid var(--line);
  border-radius: var(--r-md);
  transition: all var(--t-fast);
}
.meta-grid .meta-item:hover {
  border-color: var(--orange);
  box-shadow: var(--sh-sm);
  transform: translateY(-2px);
}
.meta-grid .meta-item > i {
  font-size: 22px;
  color: var(--orange);
  margin-bottom: 6px;
  line-height: 1;
}
.meta-grid .meta-item .lbl {
  font-size: 10.5px;
  color: var(--muted);
  letter-spacing: 0.06em;
  text-transform: uppercase;
  font-weight: 500;
  margin-bottom: 2px;
}
.meta-grid .meta-item .val {
  font-size: 14px;
  font-weight: 600;
  color: var(--ink);
  font-family: var(--font-display);
}

/* Alternating icon colors for visual rhythm */
.meta-grid .meta-item:nth-child(3n+1) > i { color: var(--green-dark); }
.meta-grid .meta-item:nth-child(3n+2) > i { color: var(--orange); }
.meta-grid .meta-item:nth-child(3n+3) > i { color: var(--gold-dark); }


/* ---------- 42.10 BLOG-POST — reduce banner, full-width carousel ---------- */
body.blog-post-page .page-hero,
.blog-post-page .page-hero {
  padding: 24px 0 20px !important;
}
.blog-post-page .page-hero h1 {
  font-size: clamp(22px, 3.5vw, 32px) !important;
  margin-bottom: 6px;
}
.blog-post-page .page-hero .breadcrumb-custom { margin-bottom: 8px; }

/* Full-width carousel override on blog post */
#blogPostCarousel {
  max-width: none !important;
  margin-left: calc(50% - 50vw) !important;
  margin-right: calc(50% - 50vw) !important;
  border-radius: 0 !important;
}
#blogPostCarousel .carousel-inner { border-radius: 0 !important; }
#blogPostCarousel .carousel-item img {
  max-height: 360px;
  width: 100%;
  object-fit: cover;
}
@media (max-width: 767px) {
  #blogPostCarousel .carousel-item img { max-height: 220px; }
}


/* ---------- 42.11 ASTROLOGY — center tool cards ---------- */
.astro-tool-card {
  text-align: center;
  padding: 26px 18px;
  background: #fff;
  border: 1px solid var(--line);
  border-radius: var(--r-md);
  height: 100%;
  transition: all var(--t-fast);
}
.astro-tool-card:hover {
  transform: translateY(-4px);
  box-shadow: var(--sh-md);
  border-color: var(--gold);
}
.astro-tool-card .at-icon {
  width: 64px;
  height: 64px;
  border-radius: 50%;
  background: var(--gold-light);
  color: var(--gold-dark);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 28px;
  margin: 0 auto 14px;
}
.astro-tool-card h5 { font-size: 17px; margin-bottom: 8px; }
.astro-tool-card p { font-size: 13.5px; color: var(--slate); margin: 0 0 14px; }


/* ---------- 42.12 SEARCH-RESULTS — grid view polish + filter accordion ---------- */
/* Default grid view — ensure cards are properly sized */
.results-grid:not([data-view="list"]) {
  display: flex;
  flex-wrap: wrap;
  margin-left: -6px;
  margin-right: -6px;
}
.results-grid:not([data-view="list"]) > [class*="col-"] {
  padding: 6px;
}
@media (min-width: 576px) {
  .results-grid:not([data-view="list"]) { margin-left: -8px; margin-right: -8px; }
  .results-grid:not([data-view="list"]) > [class*="col-"] { padding: 8px; }
}

/* Filter group accordion arrow: reliable click target */
.filter-sidebar .fg-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  cursor: pointer;
  user-select: none;
  font-weight: 600;
  padding: 10px 0;
  margin: 0;
}
.filter-sidebar .fg-head i.bi-chevron-down {
  transition: transform var(--t-fast);
  color: var(--slate);
  font-size: 12px;
}
.filter-sidebar .filter-group.open .fg-head i.bi-chevron-down {
  transform: rotate(180deg);
}
.filter-sidebar .fg-body {
  display: none;
  padding-top: 8px;
}
.filter-sidebar .filter-group.open .fg-body { display: block; }
/* Remove the duplicate pseudo-arrow from Section 41.13 that was also being added */
.filter-sidebar .fg-head::after { content: none; }


/* ---------- 42.13 MOBILE FILTER MODAL — polish buttons ---------- */
/* [neutralized — see Section 45] .filter-modal-foot { */
/*   display: flex; */
/*   gap: 10px; */
/*   padding: 16px; */
/*   border-top: 1px solid var(--line); */
/*   background: #fff; */
/*   box-shadow: 0 -6px 18px rgba(0, 0, 0, 0.06); */
/* } */
/* [neutralized — see Section 45] .filter-modal-foot .btn { */
/*   flex: 1; */
/*   justify-content: center; */
/*   padding: 12px; */
/*   font-weight: 600; */
/*   font-size: 14px; */
/* } */
/* [neutralized — see Section 45] .filter-modal-foot .btn-cancel { */
/*   background: #fff; */
/*   color: var(--slate); */
/*   border: 1px solid var(--line); */
/* } */
/* [neutralized — see Section 45] .filter-modal-foot .btn-cancel:hover { */
/*   background: var(--bg-soft); */
/* } */
/* [neutralized — see Section 45] .filter-modal-foot .btn-apply { */
/*   background: linear-gradient(135deg, var(--green), var(--green-dark)); */
/*   color: #fff; */
/*   border: none; */
/*   box-shadow: var(--sh-green); */
/* } */
/* [neutralized — see Section 45] .filter-modal-foot .btn-apply:hover { transform: translateY(-1px); } */


/* ---------- 42.14 LOGOUT MODAL ---------- */
.logout-modal {
  display: none;
  position: fixed;
  inset: 0;
  z-index: 4000;
  align-items: center;
  justify-content: center;
  padding: 20px;
}
.logout-modal.open { display: flex; }
.logout-backdrop {
  position: absolute;
  inset: 0;
  background: rgba(0, 0, 0, 0.55);
  backdrop-filter: blur(4px);
}
.logout-dialog {
  position: relative;
  z-index: 1;
  max-width: 420px;
  width: 100%;
  background: #fff;
  border-radius: var(--r-lg);
  padding: 28px 24px;
  text-align: center;
  box-shadow: var(--sh-lg);
  animation: lbFade 0.22s var(--ease);
}
.logout-icon {
  width: 64px;
  height: 64px;
  border-radius: 50%;
  background: var(--orange-light);
  color: var(--orange-dark);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 28px;
  margin: 0 auto 14px;
}
.logout-dialog h4 {
  font-size: 22px;
  margin-bottom: 8px;
  color: var(--ink);
}
.logout-dialog p {
  color: var(--slate);
  font-size: 14px;
  margin-bottom: 22px;
}
.logout-actions {
  display: flex;
  gap: 10px;
  justify-content: center;
}
.logout-actions .btn {
  flex: 1;
  justify-content: center;
}


/* ---------- 42.15 PAYMENT — remove Payment Method card section ---------- */
/* Handled by removing HTML */


/* ---------- 42.16 REPORT-MISUSE "Also see:" buttons ---------- */
.also-see-box {
  margin-top: 18px;
  background: var(--bg-soft);
  border: 1px solid var(--line);
  border-radius: var(--r-md);
  padding: 20px;
}
.also-see-box h5 {
  font-size: 15px;
  margin-bottom: 14px;
  color: var(--ink);
}
.also-see-btns {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.also-see-btns .btn {
  width: 100%;
  justify-content: center;
  padding: 10px 14px;
  font-size: 14px;
}


/* ---------- 42.17 MOBILE HERO no side black gap ---------- */
@media (max-width: 767px) {
  .hero,
  .hero-carousel,
  .hero-carousel .carousel-inner {
    margin: 0;
    padding: 0;
    border-radius: 0;
  }
  .hero-slide {
    padding-left: 18px;
    padding-right: 18px;
  }
}


/* ---------- 42.18 TYPOGRAPHY TWEAKS (align mentions) ---------- */
.contact-info-card p,
.contact-info-card a {
  text-align: center;
}
.dash-sidebar .user-card,
.dash-sidebar .dash-user-card {
  text-align: center;
}

/* Ensure desktop sign-in row in drawer head (mobile) stays center */
.drawer-head .d-flex.gap-2 > .btn {
  justify-content: center;
}


/* =========================================================
   43. SEARCH-RESULTS filter + list-view FIX
   - HTML uses <div class="col"> (not col-X-N) inside .results-grid
   - .profile-card is an <a> element, needs to flex in list view
   ========================================================= */

/* Grid view: Bootstrap's row-cols-* utility handles the columns.
   Nothing to do here — default grid works. */

/* LIST VIEW: card becomes a horizontal row */
.results-grid[data-view="list"] {
  display: block !important;
  margin: 0;
}
.results-grid[data-view="list"] > .col {
  width: 100% !important;
  max-width: 100% !important;
  flex: 0 0 100% !important;
  margin-bottom: 14px;
  padding: 0;
}
.results-grid[data-view="list"] .profile-card {
  display: flex !important;
  flex-direction: row;
  align-items: stretch;
  min-height: 180px;
  max-height: 220px;
}
.results-grid[data-view="list"] .profile-card .pc-img {
  flex: 0 0 220px;
  aspect-ratio: auto;
  height: auto;
  min-height: 180px;
}
.results-grid[data-view="list"] .profile-card .pc-img img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.results-grid[data-view="list"] .profile-card .pc-body {
  flex: 1;
  padding: 18px 20px;
  display: flex;
  flex-direction: column;
  justify-content: center;
}
.results-grid[data-view="list"] .profile-card .pc-name {
  font-size: 18px;
  margin-bottom: 4px;
}
.results-grid[data-view="list"] .profile-card .pc-meta {
  font-size: 14px;
  margin-bottom: 8px;
}
.results-grid[data-view="list"] .profile-card .pc-detail {
  font-size: 13px;
  margin-bottom: 4px;
}
.results-grid[data-view="list"] .profile-card .pc-actions {
  flex-direction: column;
  justify-content: center;
  padding: 16px;
  gap: 10px;
  border-left: 1px solid var(--line-soft);
  flex: 0 0 140px;
  background: var(--bg-soft);
}
.results-grid[data-view="list"] .profile-card .pc-actions .pc-action {
  width: 100%;
  justify-content: center;
}
.results-grid[data-view="list"] .profile-card .premium-ribbon {
  top: 8px;
  left: 8px;
  font-size: 10px;
  padding: 3px 10px;
}

/* List view — MOBILE: stack vertically (like grid single-col) */
@media (max-width: 767px) {
  .results-grid[data-view="list"] .profile-card {
    flex-direction: column;
    max-height: none;
  }
  .results-grid[data-view="list"] .profile-card .pc-img {
    flex: none;
    width: 100%;
    aspect-ratio: 16 / 10;
    min-height: 0;
  }
  .results-grid[data-view="list"] .profile-card .pc-actions {
    flex: none;
    flex-direction: row;
    border-left: none;
    border-top: 1px solid var(--line-soft);
    background: #fff;
  }
}


/* ---------- 43.2 Grid-view mobile: 2 per row ---------- */
@media (max-width: 575px) {
  .results-grid:not([data-view="list"]) > .col {
    flex: 0 0 50% !important;
    max-width: 50% !important;
  }
}


/* =========================================================
   44. FILTER MODAL slide-in animation + desktop actions +
       innovative list-view card design
   ========================================================= */

/* ---------- 44.1 MOBILE FILTER MODAL — right slide-in panel ---------- */
/* [neutralized — see Section 45] .filter-modal { */
/*   display: none; */
/*   position: fixed; */
/*   inset: 0; */
/*   z-index: 2100; */
/*   background: rgba(0, 0, 0, 0.5); */
/*   flex-direction: column; */
/*   opacity: 0; */
/*   transition: opacity 0.22s ease; */
/* } */
/* [neutralized — see Section 45] .filter-modal.open { */
/*   display: flex; */
/*   opacity: 0;  /* starts transparent, .entering fades in */ */
/* } */
/* [neutralized — see Section 45] .filter-modal.open.entering { */
/*   opacity: 1; */
/* } */
/* Inner panel slides in from the right */
.filter-modal > .filter-modal-head,
.filter-modal > .filter-modal-body,
/* [neutralized — see Section 45] .filter-modal > .filter-modal-foot { */
/*   background: #fff; */
/*   transform: translateX(40px); */
/*   opacity: 0; */
/*   transition: transform 0.28s cubic-bezier(0.2, 0.8, 0.2, 1), opacity 0.28s ease; */
/* } */
.filter-modal.open.entering > .filter-modal-head,
.filter-modal.open.entering > .filter-modal-body,
/* [neutralized — see Section 45] .filter-modal.open.entering > .filter-modal-foot { */
/*   transform: translateX(0); */
/*   opacity: 1; */
/* } */
/* [neutralized — see Section 45] .filter-modal > .filter-modal-head { transition-delay: 0s; } */
/* [neutralized — see Section 45] .filter-modal > .filter-modal-body { transition-delay: 0.05s; } */
/* [neutralized — see Section 45] .filter-modal > .filter-modal-foot { transition-delay: 0.1s; } */

/* [neutralized — see Section 45] .filter-modal-head { */
/*   padding: 16px 18px; */
/*   border-bottom: 1px solid var(--line); */
/*   display: flex; */
/*   justify-content: space-between; */
/*   align-items: center; */
/* } */
/* [neutralized — see Section 45] .filter-modal-head h5 { */
/*   margin: 0; */
/*   font-size: 18px; */
/*   font-family: var(--font-display); */
/* } */
/* [neutralized — see Section 45] .filter-modal-body { */
/*   flex: 1; */
/*   overflow-y: auto; */
/*   padding: 16px 18px; */
/* } */
/* Foot buttons (Cancel + Apply) — clean pill design */
/* [neutralized — see Section 45] .filter-modal-foot { */
/*   display: flex; */
/*   gap: 10px; */
/*   padding: 14px 16px; */
/*   border-top: 1px solid var(--line); */
/*   background: #fff; */
/*   box-shadow: 0 -6px 18px rgba(0, 0, 0, 0.08); */
/* } */
/* [neutralized — see Section 45] .filter-modal-foot .btn { */
/*   flex: 1; */
/*   justify-content: center; */
/*   padding: 12px 16px; */
/*   font-weight: 600; */
/*   font-size: 14px; */
/*   border-radius: 26px; */
/* } */
/* [neutralized — see Section 45] .filter-modal-foot .btn.btn-ghost { */
/*   background: #fff; */
/*   color: var(--slate); */
/*   border: 1.5px solid var(--line); */
/* } */
/* [neutralized — see Section 45] .filter-modal-foot .btn.btn-ghost:hover { */
/*   background: var(--bg-soft); */
/*   border-color: var(--slate); */
/* } */
/* [neutralized — see Section 45] .filter-modal-foot .btn.btn-green { */
/*   background: linear-gradient(135deg, var(--green), var(--green-dark)); */
/*   color: #fff; */
/*   border: none; */
/*   box-shadow: var(--sh-green); */
/* } */


/* ---------- 44.2 DESKTOP FILTER SIDEBAR — action row at bottom ---------- */
.filter-sidebar-foot {
  display: flex;
  gap: 10px;
  margin-top: 16px;
  padding-top: 16px;
  border-top: 1px solid var(--line);
  position: sticky;
  bottom: 0;
  background: #fff;
}
.filter-sidebar-foot .btn {
  flex: 1;
  justify-content: center;
  padding: 10px 14px;
  font-weight: 600;
  font-size: 13px;
  border-radius: 24px;
}
.filter-sidebar-foot .btn.btn-ghost {
  background: #fff;
  color: var(--slate);
  border: 1.5px solid var(--line);
}
.filter-sidebar-foot .btn.btn-ghost:hover {
  background: var(--bg-soft);
  border-color: var(--slate);
}
.filter-sidebar-foot .btn.btn-green {
  background: linear-gradient(135deg, var(--green), var(--green-dark));
  color: #fff;
  border: none;
  box-shadow: var(--sh-green);
}
.filter-sidebar-foot .btn.btn-green:hover {
  transform: translateY(-1px);
  box-shadow: 0 10px 24px rgba(214, 31, 38, 0.3);
}


/* ---------- 44.3 DESKTOP LIST-VIEW — INNOVATIVE CARD DESIGN ----------
   Larger photo on left with overlay, gradient accents,
   rich mid-section with multiple data chips, vertical
   action rail on right with circular avatars/actions.
   ----------------------------------------------------------- */
@media (min-width: 768px) {
  .results-grid[data-view="list"] > .col {
    margin-bottom: 18px;
  }

  .results-grid[data-view="list"] .profile-card {
    display: flex !important;
    flex-direction: row;
    align-items: stretch;
    min-height: 230px;
    max-height: 260px;
    background: #fff;
    border: 1px solid var(--line);
    border-radius: 16px;
    overflow: hidden;
    box-shadow: 0 2px 12px rgba(0, 0, 0, 0.04);
    transition: all 0.25s ease;
    position: relative;
  }
  .results-grid[data-view="list"] .profile-card::before {
    content: '';
    position: absolute;
    top: 0; left: 0;
    width: 4px;
    height: 100%;
    background: linear-gradient(180deg, var(--green), var(--orange));
    opacity: 0;
    transition: opacity 0.2s ease;
    z-index: 2;
  }
  .results-grid[data-view="list"] .profile-card:hover {
    transform: translateY(-3px);
    box-shadow: 0 14px 34px rgba(0, 0, 0, 0.1);
    border-color: var(--green);
  }
  .results-grid[data-view="list"] .profile-card:hover::before {
    opacity: 1;
  }

  /* LEFT — Photo column with rich overlay */
  .results-grid[data-view="list"] .profile-card .pc-img {
    flex: 0 0 240px;
    aspect-ratio: auto;
    height: auto;
    min-height: 230px;
    position: relative;
    overflow: hidden;
  }
  .results-grid[data-view="list"] .profile-card .pc-img img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform 0.5s ease;
  }
  .results-grid[data-view="list"] .profile-card:hover .pc-img img {
    transform: scale(1.05);
  }
  /* Dark gradient overlay at bottom of photo for readability */
  .results-grid[data-view="list"] .profile-card .pc-img::after {
    content: '';
    position: absolute;
    bottom: 0; left: 0; right: 0;
    height: 45%;
    background: linear-gradient(180deg, transparent 0%, rgba(0, 0, 0, 0.7) 100%);
    pointer-events: none;
  }
  /* Compat score floats as big badge bottom-left of photo */
  .results-grid[data-view="list"] .profile-card .compat-score {
    bottom: 14px;
    left: 14px;
    top: auto;
    right: auto;
    font-size: 13px;
    padding: 6px 12px;
    background: linear-gradient(135deg, var(--green), var(--green-dark));
    color: #fff;
    border-radius: 20px;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
    z-index: 2;
  }
  .results-grid[data-view="list"] .profile-card .verified-badge {
    top: 14px;
    left: 14px;
    right: auto;
    background: rgba(255, 255, 255, 0.95);
    color: var(--green-dark);
    font-weight: 700;
  }
  .results-grid[data-view="list"] .profile-card .online-dot {
    top: 14px;
    right: 14px;
    bottom: auto;
    left: auto;
    width: 12px;
    height: 12px;
    border: 2px solid #fff;
    box-shadow: 0 0 0 3px var(--green);
  }
  .results-grid[data-view="list"] .profile-card .diet-badge {
    bottom: 14px;
    right: 14px;
    top: auto;
    z-index: 2;
  }
  .results-grid[data-view="list"] .profile-card .premium-ribbon {
    position: absolute;
    top: 12px;
    right: 12px;
    left: auto;
    transform: none;
    font-size: 10px;
    padding: 4px 12px;
    background: linear-gradient(135deg, var(--gold), var(--gold-dark));
    color: #fff;
    border-radius: 20px;
    font-weight: 700;
    letter-spacing: 0.05em;
    box-shadow: 0 4px 10px rgba(198, 138, 58, 0.4);
    z-index: 3;
  }

  /* MIDDLE — rich content column with chips */
  .results-grid[data-view="list"] .profile-card .pc-body {
    flex: 1;
    padding: 22px 26px;
    display: flex;
    flex-direction: column;
    justify-content: center;
    gap: 4px;
    min-width: 0;
    background:
      radial-gradient(ellipse at top left, rgba(214, 31, 38, 0.04) 0%, transparent 50%),
      radial-gradient(ellipse at bottom right, rgba(198, 138, 58, 0.04) 0%, transparent 50%),
      #fff;
  }
  .results-grid[data-view="list"] .profile-card .pc-name {
    font-family: var(--font-display);
    font-size: 22px;
    font-weight: 700;
    color: var(--ink);
    margin-bottom: 4px;
    line-height: 1.2;
    display: flex;
    align-items: center;
    gap: 8px;
  }
  .results-grid[data-view="list"] .profile-card .pc-name::after {
    content: '';
    flex: 1;
    height: 1px;
    background: linear-gradient(90deg, var(--line) 0%, transparent 100%);
    margin-left: 8px;
  }
  .results-grid[data-view="list"] .profile-card .pc-meta {
    font-size: 13px;
    color: var(--orange);
    font-weight: 600;
    margin-bottom: 10px;
    letter-spacing: 0.02em;
  }
  .results-grid[data-view="list"] .profile-card .pc-detail {
    font-size: 13.5px;
    color: var(--slate);
    margin-bottom: 6px;
    display: flex;
    align-items: center;
    gap: 8px;
    line-height: 1.4;
  }
  .results-grid[data-view="list"] .profile-card .pc-detail i {
    width: 26px;
    height: 26px;
    background: var(--green-light);
    color: var(--green-dark);
    border-radius: 50%;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 12px;
    flex-shrink: 0;
  }
  .results-grid[data-view="list"] .profile-card .pc-detail:nth-of-type(2) i {
    background: var(--orange-light);
    color: var(--orange-dark);
  }

  /* RIGHT — vertical action rail */
  .results-grid[data-view="list"] .profile-card .pc-actions {
    flex: 0 0 160px;
    flex-direction: column;
    padding: 22px 18px;
    gap: 10px;
    background: linear-gradient(180deg, var(--bg-soft) 0%, #fff 100%);
    border-left: 1px solid var(--line);
    justify-content: center;
    align-items: stretch;
  }
  .results-grid[data-view="list"] .profile-card .pc-actions .pc-action {
    width: 100%;
    justify-content: center;
    font-size: 13px;
    padding: 10px 12px;
    border-radius: 22px;
    font-weight: 600;
    transition: all var(--t-fast);
  }
  .results-grid[data-view="list"] .profile-card .pc-actions .pc-action.shortlist {
    background: #fff;
    border: 1.5px solid var(--line);
    color: var(--slate);
    padding: 10px;
    aspect-ratio: 1;
    width: 44px;
    height: 44px;
    border-radius: 50%;
    margin: 0 auto 6px;
    font-size: 17px;
  }
  .results-grid[data-view="list"] .profile-card .pc-actions .pc-action.shortlist:hover,
  .results-grid[data-view="list"] .profile-card .pc-actions .pc-action.shortlist.active {
    background: var(--orange-light);
    color: var(--orange-dark);
    border-color: var(--orange);
    transform: scale(1.08);
  }
  .results-grid[data-view="list"] .profile-card .pc-actions .pc-action.primary {
    background: linear-gradient(135deg, var(--green), var(--green-dark));
    color: #fff;
    border: none;
    box-shadow: var(--sh-green);
  }
  .results-grid[data-view="list"] .profile-card .pc-actions .pc-action.primary:hover {
    transform: translateY(-2px);
    box-shadow: 0 10px 24px rgba(214, 31, 38, 0.4);
  }
  /* Extra "View Profile" ghost button */
  .results-grid[data-view="list"] .profile-card .pc-actions::after {
    content: 'View Profile →';
    text-align: center;
    font-size: 11px;
    color: var(--slate);
    text-decoration: none;
    font-weight: 500;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    margin-top: 4px;
    opacity: 0.7;
    transition: opacity var(--t-fast);
  }
  .results-grid[data-view="list"] .profile-card:hover .pc-actions::after {
    opacity: 1;
    color: var(--green-dark);
  }
}


/* ---------- 44.4 BODY scroll-lock when filter modal open ---------- */
body.filter-open {
  overflow: hidden;
}


/* =========================================================
   45. FINAL POLISH — filter modal drawer animation,
       button color pairing, view-toggle mobile, badge layout
   ========================================================= */

/* ---------- 45.1 FILTER MODAL — smooth drawer slide from right
   Matches Dashboard Menu drawer pattern: fixed panel that
   translates in from off-screen with easing. ---------- */

/* Cancel the previous Section 44.1 inner-cascade animation */
.filter-modal > .filter-modal-head,
.filter-modal > .filter-modal-body,
.filter-modal > .filter-modal-foot {
  transform: none;
  opacity: 1;
  transition: none;
  transition-delay: 0s;
}

/* Backdrop (the outer .filter-modal element) */
.filter-modal {
  display: none;
  position: fixed;
  inset: 0;
  z-index: 2100;
  background: rgba(0, 0, 0, 0);
  flex-direction: row;
  justify-content: flex-end;
  opacity: 1;
  transition: background 0.3s ease;
  padding: 0;
}
.filter-modal.open { display: flex; }
.filter-modal.open.entering {
  background: rgba(0, 0, 0, 0.5);
}

/* The modal body becomes a drawer panel (right-side slide-in) */
.filter-modal::before {
  content: '';
  position: absolute;
  inset: 0;
  cursor: pointer;
}
/* Wrap all three sections as one drawer panel */
.filter-modal > .filter-modal-head,
.filter-modal > .filter-modal-body,
.filter-modal > .filter-modal-foot {
  position: relative;
  z-index: 1;
  width: min(420px, 92vw);
  margin-left: auto;
  background: #fff;
  transform: translateX(100%);
  transition: transform 0.32s cubic-bezier(0.22, 0.61, 0.36, 1);
}
.filter-modal.open.entering > .filter-modal-head,
.filter-modal.open.entering > .filter-modal-body,
.filter-modal.open.entering > .filter-modal-foot {
  transform: translateX(0);
}

/* Filter modal head: orange gradient with white icon + "Filters" label */
.filter-modal-head {
  padding: 16px 20px;
  border-bottom: none;
  background: linear-gradient(135deg, var(--orange), var(--orange-dark));
  color: #fff;
  align-items: center;
}
.filter-modal-head h5 {
  color: #fff;
  font-size: 18px;
  font-family: var(--font-display);
  margin: 0;
  display: flex;
  align-items: center;
  gap: 10px;
}
.filter-modal-head h5::before {
  content: '\F3FE';    /* bootstrap-icons funnel-fill */
  font-family: 'bootstrap-icons';
  font-size: 20px;
  width: 34px;
  height: 34px;
  background: rgba(255, 255, 255, 0.2);
  border-radius: 50%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  backdrop-filter: blur(4px);
}
.filter-modal-head .icon-btn,
.filter-modal-head .close-filter {
  background: rgba(255, 255, 255, 0.18);
  border: none;
  color: #fff;
  width: 34px;
  height: 34px;
  border-radius: 50%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 16px;
  transition: background var(--t-fast);
}
.filter-modal-head .icon-btn:hover,
.filter-modal-head .close-filter:hover {
  background: rgba(255, 255, 255, 0.3);
}

/* Body (unchanged layout) */
.filter-modal-body {
  flex: 1;
  overflow-y: auto;
  padding: 16px 18px;
  border-bottom: 1px solid var(--line);
}

/* FOOT: Cancel = RED outline, Apply = GREEN, both with icons */
.filter-modal-foot {
  display: flex;
  gap: 10px;
  padding: 14px 16px;
  border-top: 1px solid var(--line);
  background: #fff;
  box-shadow: 0 -6px 18px rgba(0, 0, 0, 0.08);
}
.filter-modal-foot .btn {
  flex: 1;
  justify-content: center;
  padding: 12px 16px;
  font-weight: 600;
  font-size: 14px;
  border-radius: 26px;
  display: inline-flex;
  align-items: center;
  gap: 8px;
}
.filter-modal-foot .btn.btn-ghost,
.filter-modal-foot .btn-filter-cancel {
  background: #fff;
  color: var(--danger);
  border: 1.5px solid var(--danger);
}
.filter-modal-foot .btn.btn-ghost:hover,
.filter-modal-foot .btn-filter-cancel:hover {
  background: var(--danger);
  color: #fff;
}
.filter-modal-foot .btn.btn-green,
.filter-modal-foot .btn-filter-apply {
  background: linear-gradient(135deg, var(--green), var(--green-dark));
  color: #fff;
  border: none;
  box-shadow: var(--sh-green);
}


/* ---------- 45.2 DESKTOP FILTER SIDEBAR — same button color pairing ---------- */
.filter-sidebar-foot .btn.btn-ghost,
.filter-sidebar-foot .btn-filter-cancel {
  background: #fff;
  color: var(--danger);
  border: 1.5px solid var(--danger);
}
.filter-sidebar-foot .btn.btn-ghost:hover,
.filter-sidebar-foot .btn-filter-cancel:hover {
  background: var(--danger);
  color: #fff;
}


/* ---------- 45.3 VIEW-TOGGLE — mobile polish ---------- */
.view-toggle {
  display: inline-flex;
  border: 1px solid var(--line);
  border-radius: 22px;
  overflow: hidden;
  background: #fff;
  flex-shrink: 0;
}
.view-toggle button {
  border: none;
  border-radius: 0;
  padding: 8px 12px;
  background: transparent;
  color: var(--slate);
  font-size: 15px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: all var(--t-fast);
  min-width: 40px;
  min-height: 36px;
}
.view-toggle button + button {
  border-left: 1px solid var(--line);
}
.view-toggle button.active {
  background: linear-gradient(135deg, var(--green), var(--green-dark));
  color: #fff;
  border-color: transparent;
}
.view-toggle button:hover:not(.active) {
  background: var(--bg-soft);
  color: var(--green-dark);
}

/* Mobile toolbar row: make view-toggle fit nicely */
@media (max-width: 767px) {
  .search-toolbar {
    flex-wrap: wrap;
    gap: 10px;
  }
  .search-toolbar .toolbar-actions {
    gap: 8px;
    flex-wrap: wrap;
    width: 100%;
    justify-content: space-between;
  }
  .search-toolbar .filter-btn-mobile {
    flex: 0 0 auto;
    padding: 8px 16px;
  }
  .search-toolbar select.form-select-sm {
    flex: 1;
    min-width: 120px;
    max-width: 170px;
  }
  .view-toggle {
    flex: 0 0 auto;
  }
  .view-toggle button {
    padding: 8px 14px;
    min-width: 44px;
  }
}


/* ---------- 45.4 CARD BADGE LAYOUT — no overlap, clear 4-corners ----------
   4 corners for 4 badges:
     TOP-LEFT    → premium ribbon (diagonal)  OR  diet-badge (no premium)
     TOP-RIGHT   → verified badge
     BOTTOM-LEFT → online dot
     BOTTOM-RIGHT → compat-score
   When BOTH premium + diet exist, move diet to bottom-left corner shifted above online-dot.
   ---------------------------------------------------------- */

/* Base — force unique corners, higher z-index stacking */
.profile-card .pc-img {
  position: relative;
  overflow: hidden;
}

/* Diet badge: relocate to BOTTOM-LEFT by default */
.profile-card .pc-img .diet-badge {
  top: auto;
  left: 10px;
  bottom: 10px;
  right: auto;
  z-index: 3;
  background: rgba(255, 255, 255, 0.95);
  backdrop-filter: blur(4px);
  padding: 4px 8px;
  border-radius: 12px;
  display: inline-flex;
  align-items: center;
  gap: 4px;
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.15);
  font-size: 11px;
  font-weight: 600;
}

/* Premium ribbon: clearly diagonal corner — top-left only */
.profile-card .pc-img .premium-ribbon,
.profile-card > .premium-ribbon {
  z-index: 5;
}

/* When card has .premium class, push diet badge to the RIGHT side, mid-bottom */
.profile-card.premium .pc-img .diet-badge {
  left: auto;
  right: 10px;
  bottom: 46px;   /* clears compat-score below */
}

/* Online dot: bottom-left; if diet is also bottom-left (non-premium), nudge online dot up */
.profile-card .pc-img .online-dot {
  bottom: 10px;
  left: 10px;
  z-index: 4;
}
.profile-card:not(.premium) .pc-img .online-dot {
  /* When diet-badge sits bottom-left, move online-dot to top-left corner instead */
  bottom: auto;
  top: 10px;
  left: 10px;
}

/* Verified badge: always top-right */
.profile-card .pc-img .verified-badge {
  top: 10px;
  right: 10px;
  left: auto;
  bottom: auto;
  z-index: 3;
  background: rgba(255, 255, 255, 0.95);
  backdrop-filter: blur(4px);
  color: var(--green-dark);
  font-size: 10.5px;
  padding: 3px 8px;
  border-radius: 12px;
  font-weight: 600;
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.15);
  display: inline-flex;
  align-items: center;
  gap: 3px;
}

/* Compat score: always bottom-right */
.profile-card .pc-img .compat-score {
  bottom: 10px;
  right: 10px;
  top: auto;
  left: auto;
  z-index: 4;
  background: linear-gradient(135deg, var(--green), var(--green-dark));
  color: #fff;
  padding: 4px 10px;
  border-radius: 14px;
  font-size: 11px;
  font-weight: 700;
  box-shadow: 0 4px 10px rgba(0, 0, 0, 0.25);
  display: inline-flex;
  align-items: center;
  gap: 4px;
}
.profile-card .pc-img .compat-score i {
  color: #fff !important;
  font-size: 10px;
}


/* ---------- 45.5 LIST-VIEW specific overrides for same badge layout ---------- */
@media (min-width: 768px) {
  /* In list view, photo is taller — keep same 4-corners but bigger badges */
  .results-grid[data-view="list"] .profile-card .pc-img .premium-ribbon {
    top: 12px;
    right: 12px;
    left: auto;
    position: absolute;
    transform: none;
    background: linear-gradient(135deg, var(--gold), var(--gold-dark));
    color: #fff;
    padding: 4px 12px;
    border-radius: 20px;
    font-size: 10px;
    font-weight: 700;
    letter-spacing: 0.06em;
    box-shadow: 0 4px 10px rgba(198, 138, 58, 0.5);
    z-index: 5;
  }
  .results-grid[data-view="list"] .profile-card .pc-img .verified-badge {
    top: 12px;
    left: 12px;
    right: auto;
  }
  .results-grid[data-view="list"] .profile-card .pc-img .online-dot {
    top: 12px;
    left: 12px;
    bottom: auto;
    right: auto;
    /* nudge below verified badge if both present */
  }
  .results-grid[data-view="list"] .profile-card .pc-img .verified-badge ~ .online-dot {
    top: 44px;
  }
  .results-grid[data-view="list"] .profile-card .pc-img .compat-score {
    bottom: 14px;
    left: 14px;
    right: auto;
    font-size: 13px;
    padding: 6px 12px;
    border-radius: 20px;
    z-index: 4;
  }
  .results-grid[data-view="list"] .profile-card.premium .pc-img .compat-score {
    /* premium + compat: compat stays bottom-left, diet needs elsewhere */
  }
  .results-grid[data-view="list"] .profile-card .pc-img .diet-badge {
    bottom: 14px;
    right: 14px;
    left: auto;
    top: auto;
    z-index: 4;
  }
}


/* =========================================================
   46. DEFINITIVE filter-modal + badge layout rewrite
   (all prior .filter-modal rules neutralized — this is the
    only version in effect)
   ========================================================= */

/* ---------- 46.1 MOBILE FILTER MODAL — drawer slide from right ---------- */

/* Outer backdrop container */
.filter-modal {
  display: none;
  position: fixed;
  inset: 0;
  z-index: 2100;
  background: rgba(0, 0, 0, 0);
  transition: background 0.3s ease;
}
.filter-modal.open {
  display: block;   /* use block, not flex, to avoid children being stretched */
}
.filter-modal.open.entering {
  background: rgba(0, 0, 0, 0.5);
}

/* The drawer panel: fixed-width, full-height, slides from right */
.filter-modal > .filter-modal-head,
.filter-modal > .filter-modal-body,
.filter-modal > .filter-modal-foot {
  position: fixed;
  right: 0;
  width: min(380px, 88vw);
  background: #fff;
  transform: translateX(100%);
  transition: transform 0.32s cubic-bezier(0.22, 0.61, 0.36, 1);
  margin: 0;
  z-index: 1;
}
.filter-modal.open.entering > .filter-modal-head,
.filter-modal.open.entering > .filter-modal-body,
.filter-modal.open.entering > .filter-modal-foot {
  transform: translateX(0);
}

/* Head sits at top of drawer */
.filter-modal-head {
  top: 0;
  height: 60px;
  padding: 0 18px;
  background: linear-gradient(135deg, var(--orange), var(--orange-dark));
  color: #fff;
  display: flex;
  align-items: center;
  justify-content: space-between;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}
.filter-modal-head h5 {
  color: #fff;
  font-size: 17px;
  font-family: var(--font-display);
  margin: 0;
  display: flex;
  align-items: center;
  gap: 10px;
  font-weight: 700;
}
.filter-modal-head h5::before {
  content: '\F3FE';         /* bootstrap-icons funnel-fill */
  font-family: 'bootstrap-icons';
  font-size: 16px;
  width: 32px;
  height: 32px;
  background: rgba(255, 255, 255, 0.22);
  border-radius: 50%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.filter-modal-head .icon-btn,
.filter-modal-head .close-filter {
  background: rgba(255, 255, 255, 0.2);
  border: none;
  color: #fff;
  width: 34px;
  height: 34px;
  border-radius: 50%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 16px;
  padding: 0;
  cursor: pointer;
}
.filter-modal-head .icon-btn:hover,
.filter-modal-head .close-filter:hover {
  background: rgba(255, 255, 255, 0.35);
}

/* Body fills middle space, scrolls internally */
.filter-modal-body {
  top: 60px;
  bottom: 72px;
  overflow-y: auto;
  padding: 16px 18px;
  display: block;
}

/* Foot stays pinned at bottom of drawer */
.filter-modal-foot {
  bottom: 0;
  height: 72px;
  padding: 14px 16px;
  border-top: 1px solid var(--line);
  display: flex;
  gap: 10px;
  align-items: center;
  box-shadow: 0 -6px 18px rgba(0, 0, 0, 0.08);
}
.filter-modal-foot .btn {
  flex: 1;
  justify-content: center;
  padding: 11px 16px;
  font-weight: 600;
  font-size: 14px;
  border-radius: 24px;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  min-height: 44px;
}
/* Cancel: ORANGE outline pill */
.filter-modal-foot .btn.btn-ghost,
.filter-modal-foot .btn-filter-cancel {
  background: #fff;
  color: var(--orange);
  border: 1.5px solid var(--orange);
}
.filter-modal-foot .btn.btn-ghost:hover,
.filter-modal-foot .btn-filter-cancel:hover {
  background: var(--orange-light);
  color: var(--orange-dark);
  border-color: var(--orange-dark);
}
/* Apply: GREEN gradient */
.filter-modal-foot .btn.btn-green,
.filter-modal-foot .btn-filter-apply {
  background: linear-gradient(135deg, var(--green), var(--green-dark));
  color: #fff;
  border: none;
  box-shadow: var(--sh-green);
}

/* Desktop sidebar: same orange-cancel styling */
.filter-sidebar-foot .btn.btn-ghost,
.filter-sidebar-foot .btn-filter-cancel {
  background: #fff;
  color: var(--orange);
  border: 1.5px solid var(--orange);
}
.filter-sidebar-foot .btn.btn-ghost:hover,
.filter-sidebar-foot .btn-filter-cancel:hover {
  background: var(--orange-light);
  color: var(--orange-dark);
}


/* ---------- 46.2 BADGE LAYOUT — 4-corner clean positioning ---------- */
/* Nuclear override: force positions with high specificity.
   Grid view photo is ~280px tall, list view photo is ~230px tall.

   4 CORNER MAP:
   - TOP-LEFT     → Premium ribbon (when present) OR Verified badge
   - TOP-RIGHT    → Verified badge (when no premium) OR Online dot
   - BOTTOM-LEFT  → Compat score
   - BOTTOM-RIGHT → Diet badge

   Online dot only shows when user is actively online (small 10px dot
   separate from other badges — we park it to TOP-RIGHT area above
   other badges, OR hide when premium+verified already occupies corners).
   ---------------------------------------------------------- */

/* Reset + force positions for ALL profile cards everywhere */
.profile-card .pc-img {
  position: relative;
  overflow: hidden;
}

/* PREMIUM RIBBON — diagonal top-left corner */
.profile-card .premium-ribbon,
.profile-card > .premium-ribbon {
  position: absolute;
  top: 14px;
  left: -32px;
  transform: rotate(-45deg);
  background: linear-gradient(135deg, var(--gold), var(--gold-dark));
  color: #fff;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.08em;
  padding: 4px 34px;
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.2);
  z-index: 5;
}

/* VERIFIED BADGE — top-right always */
.profile-card .pc-img .verified-badge {
  position: absolute;
  top: 10px;
  right: 10px;
  left: auto;
  bottom: auto;
  background: rgba(255, 255, 255, 0.95);
  backdrop-filter: blur(4px);
  color: var(--green-dark);
  font-size: 10.5px;
  padding: 4px 9px;
  border-radius: 12px;
  font-weight: 700;
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.18);
  display: inline-flex;
  align-items: center;
  gap: 4px;
  z-index: 4;
}
.profile-card .pc-img .verified-badge i {
  color: var(--green);
}

/* ONLINE DOT — just a small pulsing green dot, placed top-left
   Hidden on premium cards (premium ribbon takes top-left) */
.profile-card .pc-img .online-dot {
  position: absolute;
  top: 12px;
  left: 12px;
  right: auto;
  bottom: auto;
  width: 12px;
  height: 12px;
  background: var(--green);
  border: 2px solid #fff;
  border-radius: 50%;
  box-shadow: 0 0 0 2px rgba(214, 31, 38, 0.4),
              0 2px 4px rgba(0, 0, 0, 0.2);
  z-index: 4;
  animation: onlinePulse 2s ease-in-out infinite;
}
@keyframes onlinePulse {
  0%, 100% { box-shadow: 0 0 0 2px rgba(214, 31, 38, 0.4), 0 2px 4px rgba(0, 0, 0, 0.2); }
  50%      { box-shadow: 0 0 0 6px rgba(214, 31, 38, 0), 0 2px 4px rgba(0, 0, 0, 0.2); }
}
/* On premium cards, the ribbon owns top-left: tuck online-dot just inside verified badge row */
.profile-card.premium .pc-img .online-dot {
  top: 14px;
  left: auto;
  right: 80px;   /* clears verified-badge ~ 70px wide */
}
/* If no verified badge present on premium card, fall back nicely */
.profile-card.premium .pc-img .online-dot {
  right: 80px;
}

/* COMPAT SCORE — bottom-left always */
.profile-card .pc-img .compat-score {
  position: absolute;
  bottom: 10px;
  left: 10px;
  top: auto;
  right: auto;
  background: linear-gradient(135deg, var(--green), var(--green-dark));
  color: #fff;
  padding: 4px 10px;
  border-radius: 14px;
  font-size: 11px;
  font-weight: 700;
  box-shadow: 0 4px 10px rgba(0, 0, 0, 0.25);
  display: inline-flex;
  align-items: center;
  gap: 5px;
  z-index: 4;
}
.profile-card .pc-img .compat-score i {
  color: #fff !important;
  font-size: 10px;
}

/* DIET BADGE — bottom-right always */
.profile-card .pc-img .diet-badge {
  position: absolute;
  bottom: 10px;
  right: 10px;
  top: auto;
  left: auto;
  background: rgba(255, 255, 255, 0.95);
  backdrop-filter: blur(4px);
  padding: 4px 6px;
  border-radius: 12px;
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.18);
  z-index: 4;
  display: inline-flex;
  align-items: center;
  gap: 4px;
}
.profile-card .pc-img .diet-badge .diet-dot {
  width: 12px;
  height: 12px;
  border-radius: 2px;
  border: 1.5px solid var(--green);
  position: relative;
  display: inline-block;
}
.profile-card .pc-img .diet-badge .diet-dot::after {
  content: '';
  position: absolute;
  inset: 2px;
  background: var(--green);
  border-radius: 50%;
}
.profile-card .pc-img .diet-badge .diet-dot.nonveg {
  border-color: var(--danger);
}
.profile-card .pc-img .diet-badge .diet-dot.nonveg::after {
  background: var(--danger);
  border-radius: 0;
  clip-path: polygon(50% 0%, 100% 100%, 0% 100%);
  inset: 1px;
}
.profile-card .pc-img .diet-badge .diet-dot.vegan {
  border-color: var(--green-dark);
}
.profile-card .pc-img .diet-badge .diet-dot.vegan::after {
  background: var(--green-dark);
  border-radius: 0;
  clip-path: polygon(50% 0%, 100% 50%, 85% 100%, 15% 100%, 0 50%);
  inset: 1px;
}


/* ---------- 46.3 LIST-VIEW — desktop badge positions override ---------- */
@media (min-width: 768px) {
  /* In list view, photo is ~240px wide × 230px tall — same 4-corner layout applies cleanly */
  .results-grid[data-view="list"] .profile-card .premium-ribbon {
    top: 16px;
    left: -34px;
    padding: 4px 36px;
    font-size: 10px;
  }
  .results-grid[data-view="list"] .profile-card .pc-img .verified-badge {
    top: 14px;
    right: 14px;
    font-size: 11px;
    padding: 5px 10px;
  }
  .results-grid[data-view="list"] .profile-card .pc-img .online-dot {
    top: 16px;
    left: 16px;
    width: 14px;
    height: 14px;
  }
  .results-grid[data-view="list"] .profile-card.premium .pc-img .online-dot {
    top: 16px;
    left: auto;
    right: 90px;
  }
  .results-grid[data-view="list"] .profile-card .pc-img .compat-score {
    bottom: 14px;
    left: 14px;
    font-size: 13px;
    padding: 6px 12px;
    border-radius: 20px;
  }
  .results-grid[data-view="list"] .profile-card .pc-img .diet-badge {
    bottom: 14px;
    right: 14px;
    padding: 5px 8px;
  }
}


/* =========================================================
   47. CRITICAL FIXES — premium ribbon clip + filter sidebar
       action buttons always visible
   ========================================================= */

/* ---------- 47.1 PREMIUM RIBBON — clip inside .pc-img only ----------
   HTML places <span.premium-ribbon> as DIRECT CHILD of .profile-card,
   which in list view stretches across the full card width. Fix: move
   it visually into the photo corner via absolute positioning
   constrained to a fixed width, with z-index high enough.
   The rotation pivot must be at the origin of the ribbon itself.
   ---------------------------------------------------------- */

/* Reset all previous premium-ribbon rules */
.profile-card .premium-ribbon,
.profile-card > .premium-ribbon,
.profile-card .pc-img .premium-ribbon {
  position: absolute !important;
  top: 14px !important;
  left: -34px !important;
  right: auto !important;
  bottom: auto !important;
  width: 120px !important;
  max-width: 120px !important;
  text-align: center;
  transform: rotate(-45deg) !important;
  transform-origin: center !important;
  background: linear-gradient(135deg, var(--gold), var(--gold-dark)) !important;
  color: #fff !important;
  font-size: 10px !important;
  font-weight: 700 !important;
  letter-spacing: 0.08em !important;
  padding: 4px 0 !important;
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.25);
  z-index: 10;
  pointer-events: none;
}

/* List view: tuck ribbon into the photo column specifically so overflow:hidden on pc-img clips it */
@media (min-width: 768px) {
  .results-grid[data-view="list"] .profile-card .premium-ribbon {
    top: 16px !important;
    left: -36px !important;
    width: 130px !important;
    max-width: 130px !important;
  }
  /* The ribbon is child of .profile-card, but .pc-img is 240px wide.
     Constrain the ribbon to appear only in the leftmost 130px zone
     (which overlaps the photo area). Overflow:hidden on .profile-card
     already clips the diagonal corners beyond the card bounds. */
}

/* Mobile (non-list): ribbon smaller still */
@media (max-width: 767px) {
  .profile-card .premium-ribbon,
  .profile-card .pc-img .premium-ribbon {
    top: 10px !important;
    left: -30px !important;
    width: 110px !important;
    max-width: 110px !important;
    font-size: 9px !important;
    padding: 3px 0 !important;
  }
}


/* ---------- 47.2 FILTER SIDEBAR — scroll inside, buttons always visible ---------- */
@media (min-width: 992px) {
  .filter-sidebar {
    position: sticky;
    top: 90px;
    max-height: calc(100vh - 110px);
    display: flex;
    flex-direction: column;
    overflow: hidden;
    padding: 18px 16px 0;
    background: #fff;
    border-radius: var(--r-md);
    border: 1px solid var(--line);
    box-shadow: var(--sh-sm);
  }
  /* The filter groups area scrolls internally; foot stays fixed at bottom */
  .filter-sidebar > h5,
  .filter-sidebar > .d-flex:first-of-type,
  .filter-sidebar > .clear-all {
    flex: 0 0 auto;
  }
  /* Make all filter-groups area scroll between the header and the footer */
  .filter-sidebar {
    /* Target the wrapper holding the filter groups */
  }
  .filter-sidebar-foot {
    position: sticky;
    bottom: 0;
    background: #fff;
    margin: 0 -16px -18px;   /* bleed to the sidebar edges */
    padding: 14px 16px;
    border-top: 1px solid var(--line);
    box-shadow: 0 -8px 18px rgba(0, 0, 0, 0.06);
    flex: 0 0 auto;
    z-index: 2;
  }
}

/* Mid-section (filter-groups) scrolls independently */
@media (min-width: 992px) {
  .filter-sidebar {
    /* Use implicit flex column: heading row + scrollable groups + sticky foot */
  }
  /* Wrap everything between heading and foot as a scrolling region.
     Since HTML structure is flat, scope via adjacency: everything between
     the first .d-flex (heading) and .filter-sidebar-foot scrolls. */
  .filter-sidebar > .filter-group,
  .filter-sidebar > .clear-all {
    flex-shrink: 0;
  }
  /* Allow the content area (filter groups + clear-all) to scroll as one.
     Simplest way: let everything scroll with the sidebar, but keep the
     sidebar itself max-height bounded + overflow-y auto. */
  .filter-sidebar {
    overflow-y: auto;
  }
  /* The .filter-sidebar-foot position:sticky with overflow-y:auto on parent
     keeps the buttons pinned at the bottom of the visible sidebar viewport. */
}


/* =========================================================
   48. PROFILE META-GRID — FINAL DEFINITIVE REWRITE
   --------------------------------------------------------
   Purpose: The 12-tile quick-stats block at the top of
   profile.html showing Age/Height/Religion/Caste/Language/
   Education/Profession/Income/City/Marital/Diet/Gothra.

   Design logic:
   - Each tile has centered icon-in-circle + centered
     uppercase label + centered display-font value
   - Icons use cycling green/orange/gold pattern for visual
     rhythm (nth-child 3n+1/2/3)
   - Pale background + colored glyph (soft, not loud)
   - Responsive grid: 2 col mobile → 3 col tablet → 4 col desktop
   - Subtle hover lift for interactivity
   - Keyboard focus outline for accessibility

   HTML structure (actual, verified from _p3_core.py):
   <div class="profile-meta-grid">
     <div class="meta-item">
       <i class="bi bi-calendar-heart"></i>
       <div class="lbl">Age</div>
       <div class="val">26 yrs</div>
     </div>
     ... (12 items)
   </div>

   Future modifications:
   - Change palette: edit the 3 nth-child color blocks below
   - Add more tiles: HTML only, CSS cycles colors automatically
   - Adjust breakpoints: edit the 4 media queries
   - Change icon size: edit one number in `.meta-item > i`
   ========================================================= */

/* ---------- 48.1 GRID CONTAINER — responsive column counts ---------- */
.profile-meta-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));    /* mobile default: 2-col */
  gap: 10px;
  margin: 18px 0 22px;
}
@media (min-width: 576px) {
  .profile-meta-grid { gap: 12px; }
}
@media (min-width: 768px) {
  .profile-meta-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr)); /* tablet: 3-col */
    gap: 12px;
  }
}
@media (min-width: 992px) {
  .profile-meta-grid {
    grid-template-columns: repeat(4, minmax(0, 1fr)); /* desktop: 4-col */
    gap: 14px;
  }
}

/* ---------- 48.2 TILE — single stat card ----------
   Elevated white card, centered content, subtle hover.
   Uses !important to override conflicting Section 30 rule
   at line 3244 which had left-aligned plain styling.
   ---------------------------------------------------------- */
.profile-meta-grid .meta-item {
  background: #fff !important;
  border: 1px solid var(--line) !important;
  border-radius: 14px !important;
  padding: 16px 12px !important;

  /* Center the 3 children (icon / label / value) as a vertical stack */
  display: flex !important;
  flex-direction: column !important;
  align-items: center !important;
  justify-content: center !important;
  text-align: center !important;
  gap: 6px;

  /* Remove any min-width / horizontal flex from earlier sections */
  min-width: 0 !important;
  flex: unset !important;

  /* Smooth state transitions */
  transition: transform 0.2s ease, box-shadow 0.2s ease, border-color 0.2s ease;
  cursor: default;
  position: relative;
  overflow: hidden;
}

@media (min-width: 768px) {
  .profile-meta-grid .meta-item {
    padding: 18px 14px !important;
    border-radius: 16px !important;
  }
}

/* Accent underline reveal on hover — very subtle brand touch */
.profile-meta-grid .meta-item::after {
  content: '';
  position: absolute;
  left: 50%;
  bottom: 0;
  width: 0;
  height: 2px;
  background: linear-gradient(90deg, var(--green), var(--orange));
  transition: width 0.25s ease, left 0.25s ease;
}
.profile-meta-grid .meta-item:hover {
  transform: translateY(-2px);
  box-shadow: 0 6px 16px rgba(0, 0, 0, 0.06);
  border-color: rgba(214, 31, 38, 0.35);
}
.profile-meta-grid .meta-item:hover::after {
  width: 40%;
  left: 30%;
}

/* Keyboard focus for accessibility */
.profile-meta-grid .meta-item:focus-visible {
  outline: 2px solid var(--green);
  outline-offset: 2px;
}


/* ---------- 48.3 ICON — centered circle with colored glyph ----------
   The <i> tag gets turned into a 40×40 pale-bg circle with a colored
   icon centered inside. Margin-bottom gives breathing room before the
   label. On hover the circle scales slightly for subtle feedback.
   ---------------------------------------------------------- */
.profile-meta-grid .meta-item > i {
  width: 40px;
  height: 40px;
  border-radius: 50%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 18px;
  line-height: 1;
  margin: 0 0 4px 0 !important;
  transition: transform 0.2s ease, background 0.2s ease;
  flex-shrink: 0;
}
@media (max-width: 575px) {
  .profile-meta-grid .meta-item > i {
    width: 36px;
    height: 36px;
    font-size: 16px;
  }
}
.profile-meta-grid .meta-item:hover > i {
  transform: scale(1.08);
}


/* ---------- 48.4 COLOR ROTATION — green / orange / gold cycle ----------
   Uses nth-child so adding more tiles keeps rhythm automatically.
   Green = trust (tiles 1, 4, 7, 10)
   Orange = warmth (tiles 2, 5, 8, 11)
   Gold = premium/tradition (tiles 3, 6, 9, 12)
   ---------------------------------------------------------- */

/* Green set */
.profile-meta-grid .meta-item:nth-child(3n+1) > i {
  background: var(--green-light);
  color: var(--green-dark);
}
.profile-meta-grid .meta-item:nth-child(3n+1):hover > i {
  background: var(--green);
  color: #fff;
}

/* Orange set */
.profile-meta-grid .meta-item:nth-child(3n+2) > i {
  background: var(--orange-light);
  color: var(--orange-dark);
}
.profile-meta-grid .meta-item:nth-child(3n+2):hover > i {
  background: var(--orange);
  color: #fff;
}

/* Gold set */
.profile-meta-grid .meta-item:nth-child(3n+3) > i {
  background: var(--gold-light);
  color: var(--gold-dark);
}
.profile-meta-grid .meta-item:nth-child(3n+3):hover > i {
  background: var(--gold);
  color: #fff;
}


/* ---------- 48.5 LABEL (uppercase small caps) ---------- */
.profile-meta-grid .meta-item .lbl {
  font-family: var(--font-body);
  font-size: 10.5px !important;
  font-weight: 600 !important;
  letter-spacing: 0.08em !important;
  text-transform: uppercase !important;
  color: var(--muted) !important;
  line-height: 1.2;
  margin: 0 !important;
  display: block;
}


/* ---------- 48.6 VALUE (display font, bold) ---------- */
.profile-meta-grid .meta-item .val {
  font-family: var(--font-display) !important;
  font-size: 15px !important;
  font-weight: 700 !important;
  color: var(--ink) !important;
  line-height: 1.25;
  margin: 0 !important;
  display: block;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 100%;
}
@media (min-width: 992px) {
  .profile-meta-grid .meta-item .val {
    font-size: 16px !important;
  }
}


/* ---------- 48.7 TAP FEEDBACK on mobile (no hover there) ---------- */
@media (hover: none) {
  .profile-meta-grid .meta-item:active {
    transform: scale(0.98);
  }
}


/* ---------- 48.8 NEUTRALIZE OLD .profile-meta-grid RULES from Section 30
   The earlier rule at ~line 3244 targets `.dl` / `.dv` (wrong class names)
   and gives plain left-aligned padding. We override with !important above;
   these child selectors won't match our HTML anyway since HTML uses .lbl / .val.
   No further action needed — kept here for documentation.
   ---------------------------------------------------------- */


/* =========================================================
   49. SEARCH-RESULTS — DEFINITIVE FINAL DESIGN (Round 10)
   --------------------------------------------------------
   Consolidates all prior filter-modal / toggle / badge work.
   Uses `!important` and high-specificity selectors where
   cascade battles with older sections would otherwise win.
   Written in order:
     49.1  Mobile filter drawer (smooth slide-in-from-right)
     49.2  Orange gradient header with funnel icon
     49.3  Cancel (orange) + Apply (green) buttons, both icons
     49.4  Desktop filter sidebar — matching button styling
     49.5  Grid/List view toggle — pill design + mobile polish
     49.6  Mobile toolbar reflow
     49.7  Card badge 4-corner enforcement (no overlaps)
     49.8  Reduced-motion accessibility
   ========================================================= */


/* ---------- 49.1 MOBILE FILTER DRAWER — single sliding unit ----------
   Architecture:
     .filter-modal = full-screen FIXED backdrop layer (fades 0 → 0.5 alpha)
     .filter-drawer = fixed-position panel, translateX(100%) → 0
   Both animations run simultaneously with matching easing.
   Closing reverses: drawer slides out, backdrop fades, then display:none.
   ---------------------------------------------------------- */

.filter-modal {
  display: none !important;
  position: fixed !important;
  inset: 0 !important;
  z-index: 2100 !important;
  background: rgba(0, 0, 0, 0) !important;
  transition: background 0.32s cubic-bezier(0.22, 0.61, 0.36, 1) !important;
  padding: 0 !important;
  margin: 0 !important;
}
.filter-modal.open { display: block !important; }
.filter-modal.open.entering { background: rgba(0, 0, 0, 0.55) !important; }

/* The sliding panel */
.filter-drawer {
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  width: min(380px, 88vw);
  background: #fff;
  display: flex;
  flex-direction: column;
  transform: translateX(100%);
  transition: transform 0.32s cubic-bezier(0.22, 0.61, 0.36, 1);
  box-shadow: -8px 0 32px rgba(0, 0, 0, 0.22);
  will-change: transform;
  overflow: hidden;        /* clip head shadow spillover */
}
.filter-modal.open.entering .filter-drawer {
  transform: translateX(0);
}

/* When the modal starts closing (losing .entering), panel slides out again */
.filter-modal:not(.entering) .filter-drawer {
  transform: translateX(100%);
}


/* ---------- 49.2 HEADER — orange gradient with funnel icon ---------- */
.filter-drawer > .filter-modal-head {
  flex: 0 0 60px !important;
  height: 60px !important;
  padding: 0 18px !important;
  background: linear-gradient(135deg, var(--orange), var(--orange-dark)) !important;
  color: #fff !important;
  display: flex !important;
  align-items: center !important;
  justify-content: space-between !important;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.12) !important;
  border-bottom: none !important;
  transform: none !important;
  opacity: 1 !important;
  position: static !important;
  z-index: 2;
}
.filter-drawer > .filter-modal-head h5 {
  color: #fff !important;
  font-family: var(--font-display) !important;
  font-size: 17px !important;
  font-weight: 700 !important;
  margin: 0 !important;
  display: flex !important;
  align-items: center !important;
  gap: 10px !important;
  line-height: 1 !important;
}
/* Funnel icon circle - rendered via ::before on the h5 */
.filter-drawer > .filter-modal-head h5::before {
  content: '\F3FE' !important;           /* bootstrap-icons funnel-fill */
  font-family: 'bootstrap-icons' !important;
  font-size: 16px !important;
  width: 34px !important;
  height: 34px !important;
  background: rgba(255, 255, 255, 0.22) !important;
  border-radius: 50% !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  flex-shrink: 0;
}
/* Close × button in header */
.filter-drawer > .filter-modal-head .close-filter,
.filter-drawer > .filter-modal-head .icon-btn {
  background: rgba(255, 255, 255, 0.2) !important;
  border: none !important;
  color: #fff !important;
  width: 34px !important;
  height: 34px !important;
  border-radius: 50% !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  font-size: 16px !important;
  padding: 0 !important;
  cursor: pointer;
  transition: background 0.2s ease !important;
}
.filter-drawer > .filter-modal-head .close-filter:hover {
  background: rgba(255, 255, 255, 0.35) !important;
}


/* ---------- 49.3 BODY + FOOT layout inside drawer ---------- */
.filter-drawer > .filter-modal-body {
  flex: 1 1 auto !important;
  overflow-y: auto !important;
  padding: 16px 18px !important;
  transform: none !important;
  opacity: 1 !important;
  position: static !important;
  top: auto !important;
  bottom: auto !important;
  width: auto !important;
  background: #fff !important;
  border: none !important;
}

.filter-drawer > .filter-modal-foot {
  flex: 0 0 72px !important;
  height: 72px !important;
  padding: 14px 16px !important;
  border-top: 1px solid var(--line) !important;
  background: #fff !important;
  display: flex !important;
  gap: 10px !important;
  align-items: center !important;
  box-shadow: 0 -6px 18px rgba(0, 0, 0, 0.08) !important;
  transform: none !important;
  opacity: 1 !important;
  position: static !important;
  bottom: auto !important;
  width: auto !important;
}

/* Cancel + Apply buttons in drawer foot */
.filter-drawer > .filter-modal-foot .btn {
  flex: 1 !important;
  justify-content: center !important;
  padding: 11px 16px !important;
  font-weight: 600 !important;
  font-size: 14px !important;
  border-radius: 24px !important;
  display: inline-flex !important;
  align-items: center !important;
  gap: 8px !important;
  min-height: 44px !important;
}
.filter-drawer > .filter-modal-foot .btn.btn-ghost,
.filter-drawer > .filter-modal-foot .btn-filter-cancel {
  background: #fff !important;
  color: var(--orange) !important;
  border: 1.5px solid var(--orange) !important;
}
.filter-drawer > .filter-modal-foot .btn.btn-ghost:hover,
.filter-drawer > .filter-modal-foot .btn-filter-cancel:hover {
  background: var(--orange-light) !important;
  color: var(--orange-dark) !important;
  border-color: var(--orange-dark) !important;
}
.filter-drawer > .filter-modal-foot .btn.btn-green,
.filter-drawer > .filter-modal-foot .btn-filter-apply {
  background: linear-gradient(135deg, var(--green), var(--green-dark)) !important;
  color: #fff !important;
  border: none !important;
  box-shadow: var(--sh-green) !important;
}
.filter-drawer > .filter-modal-foot .btn.btn-green:hover,
.filter-drawer > .filter-modal-foot .btn-filter-apply:hover {
  transform: translateY(-1px) !important;
  box-shadow: 0 10px 22px rgba(214, 31, 38, 0.35) !important;
}


/* ---------- 49.4 DESKTOP FILTER SIDEBAR — matching Cancel/Apply buttons ---------- */
.filter-sidebar-foot {
  display: flex !important;
  gap: 10px !important;
  margin-top: 16px !important;
  padding: 14px 0 0 !important;
  border-top: 1px solid var(--line) !important;
  position: sticky !important;
  bottom: 0 !important;
  background: #fff !important;
}
.filter-sidebar-foot .btn {
  flex: 1 !important;
  justify-content: center !important;
  padding: 10px 14px !important;
  font-size: 13.5px !important;
  font-weight: 600 !important;
  border-radius: 22px !important;
  display: inline-flex !important;
  align-items: center !important;
  gap: 6px !important;
  min-height: 40px !important;
}
.filter-sidebar-foot .btn.btn-ghost,
.filter-sidebar-foot .btn-filter-cancel {
  background: #fff !important;
  color: var(--orange) !important;
  border: 1.5px solid var(--orange) !important;
}
.filter-sidebar-foot .btn.btn-ghost:hover,
.filter-sidebar-foot .btn-filter-cancel:hover {
  background: var(--orange-light) !important;
  color: var(--orange-dark) !important;
  border-color: var(--orange-dark) !important;
}
.filter-sidebar-foot .btn.btn-green,
.filter-sidebar-foot .btn-filter-apply {
  background: linear-gradient(135deg, var(--green), var(--green-dark)) !important;
  color: #fff !important;
  border: none !important;
  box-shadow: var(--sh-green) !important;
}


/* ---------- 49.5 GRID/LIST VIEW TOGGLE — pill design ---------- */
.view-toggle {
  display: inline-flex !important;
  border: 1px solid var(--line) !important;
  border-radius: 22px !important;
  overflow: hidden !important;
  background: #fff !important;
  flex-shrink: 0;
}
.view-toggle button {
  border: none !important;
  border-radius: 0 !important;
  padding: 8px 14px !important;
  background: transparent !important;
  color: var(--slate) !important;
  font-size: 15px !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  cursor: pointer !important;
  transition: all 0.2s ease !important;
  min-width: 44px !important;
  min-height: 36px !important;
}
.view-toggle button + button {
  border-left: 1px solid var(--line) !important;
}
.view-toggle button.active {
  background: linear-gradient(135deg, var(--green), var(--green-dark)) !important;
  color: #fff !important;
  border-left-color: transparent !important;
}
.view-toggle button:hover:not(.active) {
  background: var(--bg-soft) !important;
  color: var(--green-dark) !important;
}


/* ---------- 49.6 MOBILE TOOLBAR reflow ---------- */
@media (max-width: 767px) {
  .view-toggle button {
    min-height: 40px !important;
    min-width: 46px !important;
    padding: 8px 15px !important;
  }
  .search-toolbar {
    flex-wrap: wrap !important;
    gap: 10px !important;
    padding: 12px !important;
  }
  .search-toolbar .result-count {
    flex: 1 0 100% !important;
    order: 1;
  }
  .search-toolbar .toolbar-actions {
    order: 2;
    gap: 8px !important;
    flex-wrap: wrap !important;
    width: 100% !important;
    justify-content: space-between !important;
    align-items: center;
  }
  .search-toolbar .filter-btn-mobile {
    flex: 0 0 auto !important;
    padding: 9px 16px !important;
    font-size: 13.5px !important;
  }
  .search-toolbar select.form-select-sm {
    flex: 1 !important;
    min-width: 110px !important;
    max-width: 170px !important;
  }
}


/* ---------- 49.7 CARD BADGE 4-CORNER ENFORCEMENT ---------- */
/*
   Guaranteed corners:
     TOP-LEFT diagonal:  .premium-ribbon (only when card has .premium)
     TOP-RIGHT pill:     .verified-badge
     TOP-RIGHT small dot: .online-dot (only when not colliding with above)
     BOTTOM-LEFT pill:   .compat-score
     BOTTOM-RIGHT pill:  .diet-badge

   Key fix: premium ribbon has FIXED WIDTH via !important to prevent
   the full-card stretch that happened in list view.
*/

/* Premium ribbon — lock width, diagonal corner clip */
.profile-card .premium-ribbon,
.profile-card > .premium-ribbon {
  position: absolute !important;
  top: 14px !important;
  left: -34px !important;
  right: auto !important;
  bottom: auto !important;
  width: 120px !important;
  max-width: 120px !important;
  text-align: center !important;
  transform: rotate(-45deg) !important;
  transform-origin: center !important;
  background: linear-gradient(135deg, var(--gold), var(--gold-dark)) !important;
  color: #fff !important;
  font-size: 10px !important;
  font-weight: 700 !important;
  letter-spacing: 0.08em !important;
  padding: 4px 0 !important;
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.25) !important;
  z-index: 10 !important;
  pointer-events: none;
}

/* Verified badge — top-right pill */
.profile-card .pc-img .verified-badge {
  position: absolute !important;
  top: 10px !important;
  right: 10px !important;
  left: auto !important;
  bottom: auto !important;
  background: rgba(255, 255, 255, 0.95) !important;
  backdrop-filter: blur(4px) !important;
  color: var(--green-dark) !important;
  font-size: 10.5px !important;
  padding: 4px 9px !important;
  border-radius: 12px !important;
  font-weight: 700 !important;
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.18) !important;
  display: inline-flex !important;
  align-items: center !important;
  gap: 4px !important;
  z-index: 4 !important;
}
.profile-card .pc-img .verified-badge i {
  color: var(--green) !important;
}

/* Online dot — small green pulsing dot */
.profile-card .pc-img .online-dot {
  position: absolute !important;
  top: 12px !important;
  left: 12px !important;
  right: auto !important;
  bottom: auto !important;
  width: 12px !important;
  height: 12px !important;
  background: var(--green) !important;
  border: 2px solid #fff !important;
  border-radius: 50% !important;
  z-index: 4 !important;
  box-shadow: 0 0 0 2px rgba(214, 31, 38, 0.3), 0 2px 4px rgba(0, 0, 0, 0.15);
  animation: onlinePulseSR 2s ease-in-out infinite;
}
@keyframes onlinePulseSR {
  0%, 100% { box-shadow: 0 0 0 2px rgba(214, 31, 38, 0.3), 0 2px 4px rgba(0, 0, 0, 0.15); }
  50%      { box-shadow: 0 0 0 6px rgba(214, 31, 38, 0), 0 2px 4px rgba(0, 0, 0, 0.15); }
}
/* On premium cards, ribbon owns top-left — move online dot aside (right-of-verified) */
.profile-card.premium .pc-img .online-dot {
  top: 14px !important;
  left: auto !important;
  right: 82px !important;    /* clears verified-badge (~70px wide + 10px gap) */
}

/* Compat score — always bottom-left */
.profile-card .pc-img .compat-score {
  position: absolute !important;
  bottom: 10px !important;
  left: 10px !important;
  top: auto !important;
  right: auto !important;
  background: linear-gradient(135deg, var(--green), var(--green-dark)) !important;
  color: #fff !important;
  padding: 4px 10px !important;
  border-radius: 14px !important;
  font-size: 11px !important;
  font-weight: 700 !important;
  display: inline-flex !important;
  align-items: center !important;
  gap: 5px !important;
  box-shadow: 0 4px 10px rgba(0, 0, 0, 0.25) !important;
  z-index: 4 !important;
}
.profile-card .pc-img .compat-score i {
  color: #fff !important;
  font-size: 10px !important;
}

/* Diet badge — always bottom-right pill */
.profile-card .pc-img .diet-badge {
  position: absolute !important;
  bottom: 10px !important;
  right: 10px !important;
  top: auto !important;
  left: auto !important;
  background: rgba(255, 255, 255, 0.95) !important;
  backdrop-filter: blur(4px) !important;
  padding: 5px 7px !important;
  border-radius: 12px !important;
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.18) !important;
  z-index: 4 !important;
  display: inline-flex !important;
  align-items: center !important;
  gap: 4px !important;
}

/* List-view: slightly larger badges (bigger photo area) */
@media (min-width: 768px) {
  .results-grid[data-view="list"] .profile-card .premium-ribbon {
    top: 16px !important;
    left: -36px !important;
    width: 130px !important;
    max-width: 130px !important;
    padding: 4px 0 !important;
    font-size: 10px !important;
  }
  .results-grid[data-view="list"] .profile-card .pc-img .verified-badge {
    top: 14px !important;
    right: 14px !important;
    font-size: 11px !important;
    padding: 5px 10px !important;
  }
  .results-grid[data-view="list"] .profile-card .pc-img .online-dot {
    top: 16px !important;
    left: 16px !important;
    width: 14px !important;
    height: 14px !important;
  }
  .results-grid[data-view="list"] .profile-card.premium .pc-img .online-dot {
    top: 16px !important;
    left: auto !important;
    right: 90px !important;
  }
  .results-grid[data-view="list"] .profile-card .pc-img .compat-score {
    bottom: 14px !important;
    left: 14px !important;
    font-size: 13px !important;
    padding: 6px 12px !important;
    border-radius: 20px !important;
  }
  .results-grid[data-view="list"] .profile-card .pc-img .diet-badge {
    bottom: 14px !important;
    right: 14px !important;
    padding: 6px 8px !important;
  }
}


/* ---------- 49.8 REDUCED-MOTION accessibility ---------- */
@media (prefers-reduced-motion: reduce) {
  .filter-modal,
  .filter-drawer,
  .view-toggle button,
  .profile-card .pc-img .online-dot {
    transition: none !important;
    animation: none !important;
  }
}


/* ---------- 49.9 BODY scroll-lock when drawer open ---------- */
body.filter-open {
  overflow: hidden !important;
}


/* =========================================================
   50. STICKY HEADER (desktop + mobile) + CURVED BOTTOM NAV NOTCH
   --------------------------------------------------------
   Two independent chrome tweaks applied site-wide:
     50.1  Sticky header — root cause already fixed in
           html/body (overflow-x: hidden → clip). This block
           only adds polish (shadow, safe z-index).
     50.2  Bottom-nav curved notch — decorative SVG layer
           behind the nav items creates a concave scoop
           around the middle FAB button.
   ========================================================= */


/* ---------- 50.1 STICKY HEADER polish ---------- */
/*
   `position: sticky` is declared earlier in Sections 6 / 42.
   This block only reinforces the bottom shadow + z-index so
   the sticky state reads clearly when scrolling content passes
   underneath.
*/
.site-header {
  position: sticky;
  top: 0;
  z-index: 1000;
  background: #fff;
  box-shadow:
    0 1px 0 var(--line),                   /* hairline separator */
    0 4px 12px rgba(0, 0, 0, 0.04);        /* soft elevation when scrolled */
  transition: box-shadow 0.2s ease;
}

/* When user has scrolled, deepen the shadow slightly */
.site-header.scrolled,
html:not([data-scroll="0"]) .site-header {
  box-shadow:
    0 1px 0 var(--line),
    0 6px 18px rgba(0, 0, 0, 0.06);
}

/* Anchor-link offset so sticky header doesn't cover jumped-to sections */
:target,
section[id],
[id][data-anchor] {
  scroll-margin-top: 80px;
}


/* ---------- 50.2 BOTTOM NAV — curved notch via SVG ---------- */
/*
   HTML structure (from _build.py bottom_nav()):
     <nav class="bottom-nav">
       <svg class="bn-shape"> <path d="..."/> </svg>    ← decorative
       <div class="items">
         <a>Home</a> ... <a class="center-highlight">Matches</a> ... <a>Profile</a>
       </div>
     </nav>
*/

.bottom-nav {
  /* Transparent so the SVG shape becomes the visible "bar" */
  background: transparent !important;
  border-top: none !important;
  box-shadow: none !important;
  padding: 0 !important;
  position: fixed;
  bottom: 0;
  left: 0;
  right: 0;
  z-index: 900;
  height: 72px;
}

/* SVG shape fills the entire nav area; path provides the notched outline.
   z-index: -1 puts it BEHIND the nav items but still inside the nav box. */
.bottom-nav .bn-shape {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  z-index: 0;
  /* drop-shadow follows the non-rectangular path shape, unlike box-shadow */
  filter: drop-shadow(0 -2px 10px rgba(0, 0, 0, 0.08));
  pointer-events: none;
}

/* The shape path itself is white by default; theming-ready via custom property */
.bottom-nav .bn-shape path {
  fill: #fff;
}

/* Nav items sit ABOVE the SVG layer */
.bottom-nav .items {
  position: relative;
  z-index: 2;
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  height: 100%;
  padding: 0 6px 6px;
  gap: 0;
}

.bottom-nav .items > a {
  flex: 1;
  display: inline-flex;
  flex-direction: column;
  align-items: center;
  justify-content: flex-end;
  gap: 2px;
  padding: 8px 4px 6px;
  font-size: 11px;
  font-weight: 500;
  color: var(--slate);
  text-decoration: none;
  line-height: 1;
  min-height: 58px;
  transition: color 0.2s ease;
}

.bottom-nav .items > a > i {
  font-size: 20px;
  line-height: 1;
}

.bottom-nav .items > a.active,
.bottom-nav .items > a:active {
  color: var(--green-dark);
}

/*
   Center FAB — "Matches" button.
   Sits UP and INTO the scoop thanks to negative margin.
   The 62px (56 icon + 3×2 border) button fits cleanly in the
   94-100px wide scoop with ~16px breathing room on each side.
*/
.bottom-nav .items > a.center-highlight {
  flex: 0 0 64px;
  min-width: 64px;
  margin-top: -30px;
  position: relative;
  z-index: 3;
  color: var(--orange-dark);
  font-weight: 600;
}


/* ---------- 50.3 Make sure content doesn't hide behind sticky bottom nav ---------- */
@media (max-width: 991px) {
  body {
    padding-bottom: 74px;  /* same as nav height + 2px safety */
  }
}

/* Desktop: bottom nav hidden, no padding needed */
@media (min-width: 992px) {
  .bottom-nav { display: none !important; }
  body { padding-bottom: 0 !important; }
}


/* ---------- 50.4 Reduced-motion ---------- */
@media (prefers-reduced-motion: reduce) {
  .site-header { transition: none; }
}


/* =========================================================
   51. HERO BANNER — full-bleed edge-to-edge
   Remove all side padding/margin from hero carousel wrapper.
   Inner .hero-content keeps its own padding for content spacing.
   ========================================================= */
.hero,
.hero > .hero-carousel,
.hero-carousel,
.hero-carousel > .carousel-inner,
.hero-carousel .carousel-item {
  width: 100% !important;
  max-width: 100% !important;
  padding-left: 0 !important;
  padding-right: 0 !important;
  margin-left: 0 !important;
  margin-right: 0 !important;
  border-radius: 0 !important;
}

/* Slide background + overlay fill full width */
.hero-slide {
  width: 100% !important;
  padding-left: 32px !important;
  padding-right: 32px !important;
}
@media (max-width: 767px) {
  .hero-slide {
    padding-left: 18px !important;
    padding-right: 18px !important;
  }
}

/* Inner content container: keep some max-width for readability
   but NO outer container forces gap on the slide itself */
.hero-slide .hero-content,
.hero-slide .hero-two-col {
  max-width: 1200px;
  margin-left: auto;
  margin-right: auto;
}


/* =========================================================
   52. HERO CAROUSEL — equal slide height across all slides
   Uses fixed height (not min-height) to guarantee zero page jump
   regardless of slide content. Slide 1 has form (tall);
   slides 2/3 have only text + button — but ALL render at same height.
   ========================================================= */
.hero-carousel .carousel-inner,
.hero-carousel .carousel-item,
.hero-carousel .carousel-item > .hero-slide {
  height: 560px;
}

/* Tablet & mobile — height must accommodate slide-1 form (~700px content). */
@media (max-width: 991px) {
  .hero-carousel .carousel-inner,
  .hero-carousel .carousel-item,
  .hero-carousel .carousel-item > .hero-slide {
    height: 720px;
  }
}
@media (max-width: 575px) {
  .hero-carousel .carousel-inner,
  .hero-carousel .carousel-item,
  .hero-carousel .carousel-item > .hero-slide {
    height: 740px;
  }
}

/* Allow slide content to scroll internally if it ever overflows
   (preserves layout integrity instead of growing the slide). */
.hero-carousel .hero-slide {
  overflow: hidden;
}

/* On slides 2 & 3 (no form), center content vertically so the extra
   min-height doesn't leave them top-aligned with awkward whitespace. */
@media (max-width: 991px) {
  .hero-carousel .carousel-item .hero-slide {
    align-items: center;
  }
}

/* Hero carousel base — solid dark navy matches the .hero-slide overlay,
   so any area revealed during Bootstrap's slide transition blends
   seamlessly with the slide content. */
.hero-carousel {
  background: #141826;
}
/* NOTE: Do NOT add background to .carousel-item or .carousel-inner.
   Bootstrap moves both old + new items horizontally during a slide transition.
   If those layers had a gradient, you'd see it covering the slide images
   mid-slide. The gradient only needs to be on .hero-carousel (the outermost)
   so it shows behind any genuine empty space, not in front of slide content. */


/* =========================================================
   53. LIST VIEW — data-dense profile cards (search-results)
   --------------------------------------------------------
   Each card: horizontal strip with 5 zones:
     1. Header bar  (name / ID / status / icons)
     2. Photo col   (160px, last login below)
     3. Data grid   (8 fields label:value + bio)
     4. Badges col  (premium / match / verified)
     5. Action bar  (view / shortlist / interest)

   Visibility logic:
   - .list-view-only shown ONLY when results-grid[data-view="list"]
   - Grid cards (.col > .profile-card) shown in default grid view
   ========================================================= */

/* Default: hide list cards, show grid cards */
.list-view-only { display: none !important; }

/* When list view active: show list cards, hide grid cards */
.results-grid[data-view="list"] > .list-view-only {
  display: block !important;
  grid-column: 1 / -1 !important;
  flex: 0 0 100% !important;
  max-width: 100% !important;
  width: 100% !important;
  padding: 0 !important;
  margin-bottom: 14px;
}
.results-grid[data-view="list"] > .col:not(.list-view-only) {
  display: none !important;
}


/* ---------- 53.1 LIST CARD container ---------- */
.list-card {
  display: block;
  background: #fff;
  border: 1px solid var(--line);
  border-radius: 14px;
  overflow: hidden;
  text-decoration: none;
  color: var(--ink);
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.04);
  transition: all 0.22s ease;
  position: relative;
}
.list-card:hover {
  border-color: rgba(214, 31, 38, 0.4);
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.08);
  transform: translateY(-2px);
}
.list-card.selected {
  background: #eef6ff;
  border-color: var(--info, #3b82f6);
}
/* Slide-out animation when × close is clicked */
.list-card.closing {
  opacity: 0;
  transform: translateX(30px);
  pointer-events: none;
}


/* ---------- 53.2 ZONE 1 — Header bar ---------- */
.list-card .lc-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 10px 16px;
  background: linear-gradient(90deg, #f9faf7 0%, #fff 100%);
  border-bottom: 1px solid var(--line);
  gap: 12px;
  flex-wrap: wrap;
}
.list-card .lc-identity {
  display: inline-flex;
  align-items: baseline;
  gap: 6px;
  min-width: 0;
}
.list-card .lc-name {
  font-family: var(--font-display);
  font-size: 15px;
  font-weight: 700;
  color: var(--green-dark);
  line-height: 1.2;
}
.list-card .lc-id {
  font-size: 11.5px;
  color: var(--muted);
  font-weight: 500;
  letter-spacing: 0.02em;
}
.list-card .lc-meta-actions {
  display: inline-flex;
  align-items: center;
  gap: 14px;
  flex-wrap: wrap;
}
.list-card .lc-status {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  font-size: 12px;
  font-weight: 600;
  color: var(--ink);
}
.list-card .lc-status .dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  display: inline-block;
}
.list-card .lc-status.online .dot {
  background: var(--green);
  box-shadow: 0 0 0 2px rgba(214, 31, 38, 0.25);
  animation: lcDotPulse 1.8s ease-in-out infinite;
}
.list-card .lc-status.offline .dot {
  background: #9ca3af;
}
.list-card .lc-status.online { color: var(--green-dark); }
.list-card .lc-status.offline { color: var(--muted); }
@keyframes lcDotPulse {
  0%, 100% { box-shadow: 0 0 0 2px rgba(214, 31, 38, 0.3); }
  50%      { box-shadow: 0 0 0 6px rgba(214, 31, 38, 0); }
}
.list-card .lc-chat {
  font-size: 12.5px;
  color: var(--slate);
  text-decoration: none;
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-weight: 500;
  transition: color 0.2s ease;
}
.list-card .lc-chat:hover { color: var(--green-dark); }
.list-card .lc-chat i { font-size: 13px; }

.list-card .lc-icons {
  display: inline-flex;
  gap: 6px;
}
.list-card .lc-icon {
  width: 28px;
  height: 28px;
  border-radius: 50%;
  background: #fff;
  border: 1px solid var(--line);
  color: var(--slate);
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 12px;
  transition: all 0.2s ease;
}
.list-card .lc-icon:hover {
  background: var(--bg-soft);
  color: var(--ink);
  transform: scale(1.08);
}
.list-card .lc-icon.gold {
  color: var(--gold-dark);
  border-color: var(--gold);
}
.list-card .lc-icon.gold:hover {
  background: var(--gold-light);
}
.list-card .lc-icon.danger {
  color: #dc2626;
  border-color: #fecaca;
}
.list-card .lc-icon.danger:hover {
  background: #dc2626;
  color: #fff;
  border-color: #dc2626;
}


/* ---------- 53.3 BODY — photo + mid + badges ---------- */
.list-card .lc-body {
  display: grid;
  grid-template-columns: 170px 1fr 180px;
  gap: 18px;
  padding: 16px;
  align-items: stretch;
}


/* ---------- 53.4 ZONE 2 — Photo column ---------- */
.list-card .lc-photo {
  position: relative;
  border-radius: 10px;
  overflow: hidden;
  background: var(--bg-soft);
  aspect-ratio: 4 / 5;
  height: fit-content;
}
.list-card .lc-photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.list-card .lc-photo.no-photo {
  display: flex;
  align-items: center;
  justify-content: center;
  background: linear-gradient(135deg, var(--green-light), var(--bg-soft));
  min-height: 212px;
}
.list-card .lc-photo.no-photo .lc-ph-avatar {
  font-size: 64px;
  color: var(--muted);
  opacity: 0.5;
}
.list-card .lc-photo.blurred img {
  filter: blur(14px);
  transform: scale(1.1);
}
.list-card .lc-photo .lc-ph-overlay {
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  background: rgba(0, 0, 0, 0.72);
  color: #fff;
  font-size: 11.5px;
  font-weight: 600;
  padding: 8px 12px;
  border-radius: 20px;
  text-align: center;
  white-space: nowrap;
  backdrop-filter: blur(4px);
  cursor: pointer;
}


/* ---------- 53.5 ZONE 3 — Data grid (middle) ---------- */
.list-card .lc-mid {
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.list-card .lc-data {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 6px 14px;
}
.list-card .lc-row {
  display: contents;
}
.list-card .lc-lbl {
  font-size: 11.5px;
  font-weight: 600;
  color: var(--muted);
  letter-spacing: 0.05em;
  text-transform: uppercase;
  align-self: center;
  position: relative;
  padding-right: 10px;
}
.list-card .lc-lbl::after {
  content: ':';
  position: absolute;
  right: 0;
  color: var(--muted);
  opacity: 0.7;
}
.list-card .lc-val {
  font-size: 13.5px;
  font-weight: 600;
  color: var(--ink);
  line-height: 1.3;
}

.list-card .lc-bio {
  display: flex;
  gap: 8px;
  align-items: flex-start;
  padding: 10px 12px;
  background: var(--bg-soft);
  border-left: 3px solid var(--orange);
  border-radius: 0 8px 8px 0;
  font-size: 12.5px;
  font-style: italic;
  color: var(--slate);
  line-height: 1.4;
  margin-top: 6px;
}
.list-card .lc-bio i {
  color: var(--orange);
  font-size: 14px;
  flex-shrink: 0;
  margin-top: 1px;
}

.list-card .lc-last-login {
  font-size: 11.5px;
  color: var(--muted);
  display: inline-flex;
  align-items: center;
  gap: 4px;
  margin-top: auto;
}


/* ---------- 53.6 ZONE 4 — Badges column ---------- */
.list-card .lc-badges {
  display: flex;
  flex-direction: column;
  gap: 8px;
  align-items: stretch;
  justify-content: flex-start;
}
.list-card .lc-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  padding: 7px 12px;
  border-radius: 20px;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  white-space: nowrap;
}
.list-card .lc-badge.premium {
  background: linear-gradient(135deg, var(--gold), var(--gold-dark));
  color: #fff;
  box-shadow: 0 3px 10px rgba(198, 138, 58, 0.35);
}
.list-card .lc-badge.match {
  background: linear-gradient(135deg, var(--green), var(--green-dark));
  color: #fff;
  box-shadow: 0 3px 10px rgba(214, 31, 38, 0.25);
}
.list-card .lc-badge.verified {
  background: var(--green-light);
  color: var(--green-dark);
  border: 1px solid var(--green);
}
.list-card .lc-badge i {
  font-size: 11px;
}


/* ---------- 53.7 ZONE 5 — Action bar ---------- */
.list-card .lc-actions {
  display: flex;
  gap: 10px;
  padding: 12px 16px;
  background: #fafafa;
  border-top: 1px solid var(--line);
  flex-wrap: wrap;
}
.list-card .lc-btn {
  flex: 1;
  min-width: 160px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  padding: 10px 16px;
  border-radius: 24px;
  font-size: 13px;
  font-weight: 600;
  text-decoration: none;
  cursor: pointer;
  transition: all 0.2s ease;
  border: 1.5px solid transparent;
  background: #fff;
  font-family: inherit;
}
.list-card .lc-btn i { font-size: 14px; }

/* View Profile — green filled */
.list-card .lc-btn.lc-view {
  background: linear-gradient(135deg, var(--green), var(--green-dark));
  color: #fff;
  border: none;
  box-shadow: 0 4px 12px rgba(214, 31, 38, 0.25);
}
.list-card .lc-btn.lc-view:hover {
  filter: brightness(1.08);
  transform: translateY(-1px);
  box-shadow: 0 6px 16px rgba(214, 31, 38, 0.35);
}

/* Short List — gold outline, toggles to gold filled */
.list-card .lc-btn.lc-shortlist {
  background: #fff;
  color: var(--gold-dark);
  border-color: var(--gold);
}
.list-card .lc-btn.lc-shortlist:hover {
  background: var(--gold-light);
}
.list-card .lc-btn.lc-shortlist.active {
  background: linear-gradient(135deg, var(--gold), var(--gold-dark));
  color: #fff;
  border-color: transparent;
  box-shadow: 0 4px 12px rgba(198, 138, 58, 0.3);
}
.list-card .lc-btn.lc-shortlist.active i::before {
  content: '\F64D';     /* bi-bookmark-heart-fill */
}

/* Send Interest — orange outline, toggles to orange filled, then grey when sent */
.list-card .lc-btn.lc-interest {
  background: #fff;
  color: var(--orange-dark);
  border-color: var(--orange);
}
.list-card .lc-btn.lc-interest:hover {
  background: var(--orange-light);
}
.list-card .lc-btn.lc-interest.active {
  background: linear-gradient(135deg, var(--orange), var(--orange-dark));
  color: #fff;
  border-color: transparent;
  box-shadow: 0 4px 12px rgba(198, 138, 58, 0.3);
}
.list-card .lc-btn.lc-interest.sent {
  background: #f3f4f6;
  color: var(--muted);
  border-color: var(--line);
  cursor: default;
  box-shadow: none;
  pointer-events: none;
}
.list-card .lc-btn.lc-interest.sent i::before {
  content: '\F26E';     /* bi-check2 */
}


/* ---------- 53.8 RESPONSIVE — tablet + mobile ---------- */
@media (max-width: 991px) {
  .list-card .lc-body {
    grid-template-columns: 140px 1fr;
    gap: 14px;
    padding: 14px;
  }
  .list-card .lc-badges {
    grid-column: 1 / -1;
    flex-direction: row;
    flex-wrap: wrap;
    padding-top: 4px;
    border-top: 1px dashed var(--line);
  }
  .list-card .lc-badges .lc-badge {
    flex: 0 1 auto;
  }
}

@media (max-width: 575px) {
  .list-card .lc-header {
    padding: 10px 12px;
    gap: 8px;
  }
  .list-card .lc-meta-actions {
    gap: 8px;
    width: 100%;
    justify-content: space-between;
  }
  .list-card .lc-body {
    grid-template-columns: 1fr;
    padding: 12px;
  }
  .list-card .lc-photo {
    aspect-ratio: 16 / 9;
    width: 100%;
    min-height: 200px;
  }
  .list-card .lc-data {
    grid-template-columns: 100px 1fr;
    gap: 5px 10px;
  }
  .list-card .lc-lbl { font-size: 10.5px; }
  .list-card .lc-val { font-size: 13px; }
  .list-card .lc-actions {
    padding: 10px 12px;
    gap: 6px;
  }
  .list-card .lc-btn {
    min-width: 0;
    padding: 9px 8px;
    font-size: 12px;
  }
  .list-card .lc-btn span {
    display: inline-block;
    max-width: 100px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }
}


/* =========================================================
   54. TWO PREMIUM TIERS (Gold + Elite) + field icons +
       header icon states (viewed / block / ignore)
   ========================================================= */

/* ---------- 54.1 TIER RIBBON (top-right of list card) ---------- */
.list-card .lc-tier-ribbon {
  position: absolute;
  top: 12px;
  right: -38px;
  transform: rotate(45deg);
  padding: 3px 40px;
  font-size: 10px;
  font-weight: 800;
  letter-spacing: 0.1em;
  color: #fff;
  z-index: 10;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.25);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 4px;
  pointer-events: none;
}
.list-card .lc-tier-ribbon i { font-size: 10px; }
.list-card .lc-tier-ribbon.gold {
  background: linear-gradient(135deg, var(--gold), var(--gold-dark));
}
.list-card .lc-tier-ribbon.elite {
  background: linear-gradient(135deg, #8b5cf6, #5b21b6);  /* purple — diamond elite */
}

/* ---------- 54.2 TIER CARD STYLING — distinct visual emphasis ---------- */
/* Gold Premium: subtle gold border + soft gold-tinted hover */
.list-card.premium-gold {
  border-color: var(--gold);
  box-shadow: 0 0 0 1px rgba(198, 138, 58, 0.15), 0 2px 10px rgba(0, 0, 0, 0.05);
}
.list-card.premium-gold .lc-header {
  background: linear-gradient(90deg, #fdf6e3 0%, #fff 100%);
  border-bottom-color: rgba(198, 138, 58, 0.3);
}
.list-card.premium-gold:hover {
  box-shadow: 0 0 0 1px var(--gold), 0 10px 26px rgba(198, 138, 58, 0.18);
}

/* Elite: purple glow + thicker border */
.list-card.premium-elite {
  border: 1.5px solid #8b5cf6;
  box-shadow: 0 0 0 2px rgba(139, 92, 246, 0.15), 0 4px 14px rgba(0, 0, 0, 0.07);
}
.list-card.premium-elite .lc-header {
  background: linear-gradient(90deg, #f3e8ff 0%, #fff 100%);
  border-bottom-color: rgba(139, 92, 246, 0.3);
}
.list-card.premium-elite .lc-name {
  color: #5b21b6;
}
.list-card.premium-elite:hover {
  box-shadow: 0 0 0 2px #8b5cf6, 0 14px 34px rgba(139, 92, 246, 0.22);
}

/* ---------- 54.3 TIER BADGE in right column ---------- */
.list-card .lc-badge.premium.gold {
  background: linear-gradient(135deg, var(--gold), var(--gold-dark));
  color: #fff;
  box-shadow: 0 3px 10px rgba(198, 138, 58, 0.35);
}
.list-card .lc-badge.premium.elite {
  background: linear-gradient(135deg, #8b5cf6, #5b21b6);
  color: #fff;
  box-shadow: 0 3px 10px rgba(139, 92, 246, 0.4);
}

/* ---------- 54.4 FIELD-LABEL ICONS — color-coded by field ---------- */
.list-card .lc-lbl i {
  width: 14px;
  display: inline-block;
  margin-right: 5px;
  font-size: 12px;
  vertical-align: -1px;
}
/* Color rotation by field position (using nth-of-type on .lc-row).
   Even though .lc-row uses display:contents, nth-of-type still works on it. */
.list-card .lc-data .lc-row:nth-of-type(3n+1) .lc-lbl i { color: var(--green-dark); }
.list-card .lc-data .lc-row:nth-of-type(3n+2) .lc-lbl i { color: var(--orange); }
.list-card .lc-data .lc-row:nth-of-type(3n+3) .lc-lbl i { color: var(--gold-dark); }

/* Remove the ":" after label — icon presence makes it redundant */
.list-card .lc-lbl::after {
  display: none;
}

/* ---------- 54.5 HEADER ICON STATES (eye / block / ignore) ---------- */

/* Eye — viewed (open eye = already viewed = green tint) */
.list-card .lc-icon.eye.viewed {
  color: var(--green-dark);
  border-color: var(--green);
  background: var(--green-light);
}
.list-card .lc-icon.eye.viewed:hover {
  background: var(--green);
  color: #fff;
}

/* Block — unblocked state shows green check */
.list-card .lc-icon.block {
  color: var(--orange-dark);
  border-color: var(--orange);
}
.list-card .lc-icon.block:hover {
  background: var(--orange);
  color: #fff;
}
.list-card .lc-icon.block.unblocked {
  color: var(--green-dark);
  border-color: var(--green);
  background: var(--green-light);
}
.list-card .lc-icon.block.unblocked:hover {
  background: var(--green);
  color: #fff;
}

/* Ignore (×) — already styled as .danger in Section 53 */


/* ---------- 54.6 GRID VIEW — two-tier ribbons + field icons ---------- */
.profile-card .premium-ribbon.gold {
  background: linear-gradient(135deg, var(--gold), var(--gold-dark));
}
.profile-card .premium-ribbon.elite {
  background: linear-gradient(135deg, #8b5cf6, #5b21b6);
}
.profile-card .premium-ribbon i {
  font-size: 9px;
  margin-right: 2px;
}

/* Grid card tier accent */
.profile-card.premium-gold {
  border-color: var(--gold);
}
.profile-card.premium-gold:hover {
  box-shadow: 0 0 0 1px var(--gold), 0 8px 22px rgba(198, 138, 58, 0.2);
}
.profile-card.premium-elite {
  border: 1.5px solid #8b5cf6;
}
.profile-card.premium-elite:hover {
  box-shadow: 0 0 0 1px #8b5cf6, 0 10px 26px rgba(139, 92, 246, 0.25);
}
.profile-card.premium-elite .pc-name {
  color: #5b21b6;
}

/* Grid pc-detail + pc-meta — color the new -fill icons */
.profile-card .pc-meta i { color: var(--orange); font-size: 11px; margin-right: 4px; }
.profile-card .pc-detail i:first-child { color: var(--green-dark); }
.profile-card .pc-detail:nth-of-type(2) i:first-child { color: var(--gold-dark); }


/* =========================================================
   55. ROUND 12 FIXES — default list · grid member id ·
       header tier-ribbon clearance · online chat blink ·
       last-login under photo · mobile compact list view
   ========================================================= */

/* ---------- 55.1 GRID — Member ID below name ---------- */
.profile-card .pc-id {
  font-size: 11px;
  color: var(--muted);
  font-weight: 500;
  letter-spacing: 0.04em;
  margin-top: 2px;
  margin-bottom: 4px;
  display: block;
}
.profile-card.premium-elite .pc-id { color: #7c3aed; font-weight: 600; }
.profile-card.premium-gold .pc-id  { color: var(--gold-dark); font-weight: 600; }


/* ---------- 55.2 LIST HEADER — clear tier ribbon overlap ---------- */
/* When a tier ribbon exists, shift header-right actions leftward
   so the Ignore (×) icon isn't hidden under the diagonal ribbon. */
.list-card.premium-gold .lc-header,
.list-card.premium-elite .lc-header {
  padding-right: 90px;    /* reserve space for the corner ribbon */
}
/* Ribbon floats above header, won't push layout anymore */
.list-card .lc-tier-ribbon {
  pointer-events: none;
}


/* ---------- 55.3 CHAT NOW blink for online members ---------- */
/* Only blink when the status element carries .online class */
.list-card .lc-status.online ~ .lc-chat {
  animation: chatBlink 1.4s ease-in-out infinite;
  color: var(--green-dark);
  font-weight: 600;
}
.list-card .lc-status.online ~ .lc-chat i {
  color: var(--green-dark);
}
@keyframes chatBlink {
  0%, 100% { opacity: 1; transform: scale(1); }
  50%      { opacity: 0.55; transform: scale(0.97); }
}


/* ---------- 55.4 LAST-LOGIN repositioned under photo ---------- */
.list-card .lc-photo-col {
  display: flex;
  flex-direction: column;
  gap: 8px;
  align-items: stretch;
}
.list-card .lc-photo-col .lc-last-login {
  font-size: 11px;
  color: var(--muted);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 4px;
  background: var(--bg-soft);
  padding: 5px 8px;
  border-radius: 6px;
  text-align: center;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  margin: 0;
}
.list-card .lc-photo-col .lc-last-login i {
  font-size: 11px;
  color: var(--orange);
}
/* Restructure grid so the new .lc-photo-col slots into column 1 */
.list-card .lc-body {
  grid-template-columns: 170px 1fr 180px;
}


/* ---------- 55.5 MOBILE LIST VIEW — compact ---------- */
@media (max-width: 767px) {
  .list-card .lc-header {
    padding: 8px 12px;
    gap: 6px;
  }
  .list-card .lc-name {
    font-size: 14px;
  }
  .list-card .lc-id {
    font-size: 10.5px;
  }
  .list-card .lc-meta-actions {
    gap: 6px;
  }
  .list-card .lc-status {
    font-size: 11px;
  }
  .list-card .lc-chat {
    font-size: 11.5px;
  }
  .list-card .lc-icon {
    width: 26px;
    height: 26px;
    font-size: 11px;
  }
  .list-card.premium-gold .lc-header,
  .list-card.premium-elite .lc-header {
    padding-right: 70px;  /* tighter on mobile */
  }

  /* Body stacks vertically on mobile */
  .list-card .lc-body {
    grid-template-columns: 1fr !important;
    padding: 10px;
    gap: 10px;
  }
  /* Mobile list: photo full-width stacked, last-login pill below */
  .list-card .lc-photo-col {
    flex-direction: column;
    gap: 8px;
    align-items: stretch;
  }
  .list-card .lc-photo {
    flex: none;
    width: 100%;
    min-height: 0;
    aspect-ratio: 16 / 10;
    max-height: 260px;
  }
  .list-card .lc-photo img {
    object-position: center 25%;
  }
  .list-card .lc-photo-col .lc-last-login {
    width: 100%;
    padding: 7px 12px;
    font-size: 11.5px;
  }

  .list-card .lc-data {
    grid-template-columns: 90px 1fr;
    gap: 4px 8px;
  }
  .list-card .lc-lbl {
    font-size: 10px;
    padding-right: 0;
  }
  .list-card .lc-lbl i {
    margin-right: 3px;
    font-size: 11px;
  }
  .list-card .lc-val {
    font-size: 12px;
  }
  .list-card .lc-bio {
    padding: 8px 10px;
    font-size: 11.5px;
  }

  .list-card .lc-badges {
    flex-direction: row;
    flex-wrap: wrap;
    gap: 6px;
    padding-top: 4px;
    border-top: 1px dashed var(--line);
  }
  .list-card .lc-badge {
    font-size: 10px;
    padding: 5px 9px;
  }

  /* Compact action bar */
  .list-card .lc-actions {
    padding: 8px 10px;
    gap: 6px;
  }
  .list-card .lc-btn {
    min-width: 0;
    padding: 7px 8px;
    font-size: 11.5px;
    min-height: 34px;
    border-radius: 18px;
    gap: 4px;
  }
  .list-card .lc-btn i {
    font-size: 12px;
  }
  .list-card .lc-btn span {
    max-width: 80px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }
}


/* =========================================================
   56. PROFILE VARIANTS — profile1/2/3/4.html
   --------------------------------------------------------
   Four innovative profile page designs as preview pages.
   ALL classes prefixed with .p1- .p2- .p3- .p4- or .vp-
   so they cannot affect any existing page.
   --------------------------------------------------------
   Section structure:
     56.1  Shared (.vp-*) — hero card, form inputs, buttons
     56.2  Variant A (.p1-*) — Story Mode
     56.3  Variant B (.p2-*) — Timeline
     56.4  Variant C (.p3-*) — Orbits
     56.5  Variant D (.p4-*) — Magazine Chapters
     56.6  Mobile responsive
   ========================================================= */

/* ---------- 56.1 Shared (vp- prefix) ---------- */
.vp-page-wrap {
  padding: 24px 0 60px;
  background: #f5f7fa;
}
body.profile-page.p1-page,
body.profile-page.p2-page,
body.profile-page.p3-page,
body.profile-page.p4-page { background: #f5f7fa; }

/* Hero card (shared by all 4) */
.vp-hero {
  background: #fff;
  border-radius: 18px;
  border: 1px solid #e5e7eb;
  box-shadow: 0 2px 18px rgba(0,0,0,0.04);
  margin-bottom: 22px;
  overflow: hidden;
}
.vp-hero-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 16px 22px;
  border-bottom: 1px solid #e5e7eb;
  background: linear-gradient(90deg, #fafbfd, #fff);
  flex-wrap: wrap;
  gap: 12px;
}
.vp-hero-h {
  margin: 0;
  font-family: var(--font-display, 'Fraunces', serif);
  font-size: 22px;
  font-weight: 700;
  display: inline-flex;
  align-items: center;
  gap: 10px;
}
.vp-hero-h i { color: var(--green-dark, #B71C22); }
.vp-hero-premium {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 6px 14px;
  background: linear-gradient(135deg, #C68A3A, #A8742A);
  color: #fff;
  border-radius: 20px;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.04em;
}
.vp-hero-body {
  display: grid;
  grid-template-columns: 240px 1fr;
  gap: 24px;
  padding: 22px;
  align-items: start;
}
.vp-hero-photo-col { display: flex; flex-direction: column; gap: 10px; }
.vp-hero-main {
  width: 100%;
  aspect-ratio: 4/5;
  border-radius: 14px;
  overflow: hidden;
  background: #f1f5f9;
}
.vp-hero-main img { width: 100%; height: 100%; object-fit: cover; display: block; }
.vp-hero-thumbs {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 6px;
}
.vp-thumb {
  width: 100%;
  aspect-ratio: 1;
  border-radius: 8px;
  object-fit: cover;
  cursor: pointer;
  border: 2px solid transparent;
  transition: all 0.2s ease;
}
.vp-thumb.active { border-color: #D61F26; }
.vp-thumb:hover { transform: translateY(-2px); }
.vp-hero-info { min-width: 0; }
.vp-hero-name-row {
  display: flex;
  align-items: baseline;
  gap: 10px;
  flex-wrap: wrap;
  margin-bottom: 4px;
}
.vp-hero-name {
  margin: 0;
  font-family: var(--font-display, 'Fraunces', serif);
  font-size: 28px;
  font-weight: 700;
}
.vp-hero-mid {
  font-size: 13px;
  font-weight: 700;
  color: #A8742A;
  background: #f5e8d4;
  padding: 3px 10px;
  border-radius: 12px;
}
.vp-hero-sub { color: #475569; font-size: 13.5px; margin: 0 0 16px; }
.vp-hero-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 12px 24px;
}
.vp-hero-stat { display: flex; flex-direction: column; gap: 2px; }
.vp-hero-lbl {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: #94a3b8;
}
.vp-hero-lbl i { font-size: 12px; color: #D61F26; }
.vp-hero-val { font-size: 14px; font-weight: 500; color: #333333; }

/* Shared form/input styles (used by all 4 variants on edit) */
.vp-form { display: grid; gap: 14px; padding: 4px 0; }
.vp-form.vp-grid-2 { grid-template-columns: 1fr 1fr; }
.vp-form.vp-grid-1 { grid-template-columns: 1fr; }
.vp-row { display: flex; flex-direction: column; gap: 5px; min-width: 0; }
.vp-row-full { grid-column: 1 / -1; }
.vp-label {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  color: #475569;
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
.vp-label i { font-size: 13px; color: #B71C22; }
.vp-input {
  width: 100%;
  padding: 10px 12px;
  font-size: 14px;
  font-family: inherit;
  color: #333333;
  background: #fff;
  border: 1.5px solid #e5e7eb;
  border-radius: 10px;
  outline: none;
  transition: all 0.18s ease;
  min-height: 42px;
}
.vp-input:focus {
  border-color: #D61F26;
  box-shadow: 0 0 0 3px rgba(22,167,81,0.14);
}
.vp-select {
  appearance: none;
  -webkit-appearance: none;
  background: #fff url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'><path fill='%23475569' d='M6 8L0 0h12z'/></svg>") no-repeat right 14px center / 10px;
  padding-right: 36px;
  cursor: pointer;
}
.vp-textarea { min-height: 80px; resize: vertical; line-height: 1.5; }
.vp-radio-group { display: flex; flex-wrap: wrap; gap: 6px; }
.vp-radio {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 8px 12px;
  border: 1.5px solid #e5e7eb;
  border-radius: 8px;
  background: #fff;
  cursor: pointer;
  font-size: 12.5px;
  transition: all 0.18s ease;
  min-height: 38px;
}
.vp-radio input { accent-color: #D61F26; }
.vp-radio:hover { border-color: #D61F26; background: #fde9ea; }
.vp-radio:has(input:checked) {
  background: #fde9ea;
  color: #B71C22;
  border-color: #D61F26;
  font-weight: 600;
}
.vp-file-wrap { display: flex; flex-direction: column; gap: 4px; }
.vp-file {
  background: #f1f5f9;
  border-style: dashed;
  font-size: 13px;
  cursor: pointer;
  padding: 8px 10px;
}
.vp-file-hint { font-size: 11px; color: #94a3b8; }
.vp-actions {
  display: flex;
  justify-content: flex-end;
  gap: 10px;
  padding: 14px 0 4px;
  margin-top: 8px;
  border-top: 1px solid #e5e7eb;
}
.vp-btn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 10px 22px;
  border-radius: 22px;
  font-family: inherit;
  font-size: 13.5px;
  font-weight: 600;
  cursor: pointer;
  border: 1.5px solid;
  transition: all 0.2s ease;
  min-height: 42px;
}
.vp-cancel { background: #fff; color: #475569; border-color: #e5e7eb; }
.vp-cancel:hover { background: #f1f5f9; color: #333333; }
.vp-save {
  background: linear-gradient(135deg, #D61F26, #B71C22);
  color: #fff;
  border-color: transparent;
  box-shadow: 0 4px 12px rgba(22,167,81,0.28);
}
.vp-save:hover { transform: translateY(-1px); box-shadow: 0 6px 16px rgba(22,167,81,0.4); }


/* ---------- 56.2 VARIANT A — Story Mode (.p1-*) ---------- */
.p1-wrap { padding-top: 18px; }
.p1-progress-bars {
  display: flex;
  gap: 4px;
  padding: 0 4px;
  margin-bottom: 14px;
}
.p1-bar {
  flex: 1;
  height: 4px;
  background: #e5e7eb;
  border-radius: 2px;
  transition: background 0.3s ease;
}
.p1-bar.active { background: linear-gradient(90deg, #D61F26, #C68A3A); }
.p1-bar.done { background: #D61F26; }
.p1-deck {
  position: relative;
  min-height: 580px;
}
.p1-card {
  display: none;
  background: #fff;
  border-radius: 22px;
  overflow: hidden;
  box-shadow: 0 8px 32px rgba(0,0,0,0.10);
  position: relative;
  perspective: 1500px;
}
.p1-card.active { display: block; animation: p1FadeIn 0.4s ease; }
@keyframes p1FadeIn {
  from { opacity: 0; transform: translateX(20px); }
  to { opacity: 1; transform: translateX(0); }
}
.p1-front {
  padding: 28px;
  color: #fff;
  min-height: 540px;
  display: flex;
  flex-direction: column;
  position: relative;
  transition: opacity 0.5s ease;
}
.p1-card.editing .p1-front { display: none; }
.p1-front-top {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  margin-bottom: 22px;
}
.p1-chap {
  font-size: 12px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  opacity: 0.85;
  font-weight: 600;
}
.p1-progress-ring {
  position: relative;
  width: 50px;
  height: 50px;
}
.p1-progress-ring svg { width: 50px; height: 50px; }
.p1-progress-ring span {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 11px;
  font-weight: 700;
}
.p1-front-mid { margin-bottom: 20px; }
.p1-icon-big {
  width: 72px;
  height: 72px;
  border-radius: 18px;
  background: rgba(255,255,255,0.25);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 32px;
  margin-bottom: 16px;
  backdrop-filter: blur(10px);
}
.p1-title {
  font-family: var(--font-display, 'Fraunces', serif);
  font-size: 32px;
  font-weight: 700;
  margin: 0 0 8px;
  line-height: 1.15;
}
.p1-summary { font-size: 15px; opacity: 0.92; margin: 0; line-height: 1.5; }
.p1-preview {
  flex: 1;
  background: rgba(255,255,255,0.12);
  border-radius: 14px;
  padding: 14px 18px;
  margin-bottom: 18px;
  backdrop-filter: blur(8px);
}
.p1-field-row {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  padding: 7px 0;
  border-bottom: 1px solid rgba(255,255,255,0.18);
  gap: 12px;
}
.p1-field-row:last-child { border-bottom: none; }
.p1-field-lbl {
  font-size: 11.5px;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  opacity: 0.85;
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
.p1-field-lbl i { font-size: 12px; }
.p1-field-val { font-size: 14px; font-weight: 600; text-align: right; }
.p1-front-bottom { margin-top: auto; }
.p1-edit-btn {
  width: 100%;
  background: #fff;
  color: #333333;
  border: none;
  padding: 13px 24px;
  border-radius: 28px;
  font-size: 14px;
  font-weight: 700;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  transition: all 0.2s ease;
  font-family: inherit;
}
.p1-edit-btn:hover { transform: translateY(-1px); box-shadow: 0 6px 18px rgba(0,0,0,0.18); }
.p1-back {
  display: none;
  padding: 24px 28px;
  min-height: 540px;
}
.p1-card.editing .p1-back { display: block; animation: p1FlipIn 0.4s ease; }
@keyframes p1FlipIn {
  from { opacity: 0; transform: rotateY(15deg); }
  to { opacity: 1; transform: rotateY(0); }
}
.p1-back-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding-bottom: 14px;
  border-bottom: 1px solid #e5e7eb;
  margin-bottom: 16px;
}
.p1-back-head h3 {
  font-family: var(--font-display, 'Fraunces', serif);
  font-size: 20px;
  font-weight: 700;
  margin: 0;
  display: inline-flex;
  align-items: center;
  gap: 10px;
}
.p1-back-head h3 i { color: #B71C22; }
.p1-back-close {
  width: 36px;
  height: 36px;
  border-radius: 50%;
  background: #f1f5f9;
  border: 1.5px solid #e5e7eb;
  cursor: pointer;
  font-size: 14px;
  color: #475569;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  transition: all 0.2s ease;
}
.p1-back-close:hover { background: #C68A3A; color: #fff; border-color: #C68A3A; transform: rotate(90deg); }
.p1-nav {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-top: 18px;
  padding: 0 4px;
}
.p1-nav-btn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 10px 20px;
  background: #fff;
  border: 1.5px solid #e5e7eb;
  border-radius: 24px;
  font-size: 13.5px;
  font-weight: 600;
  color: #333333;
  cursor: pointer;
  transition: all 0.2s ease;
  font-family: inherit;
}
.p1-nav-btn:hover:not(:disabled) {
  background: #D61F26;
  color: #fff;
  border-color: #D61F26;
  transform: translateY(-1px);
}
.p1-nav-btn:disabled { opacity: 0.4; cursor: not-allowed; }
.p1-nav-counter {
  font-size: 13px;
  color: #475569;
  font-weight: 600;
}
.p1-nav-counter span { color: #D61F26; font-weight: 700; }


/* ---------- 56.3 VARIANT B — Timeline (.p2-*) ---------- */
.p2-overall {
  background: #fff;
  border-radius: 16px;
  padding: 22px;
  margin-bottom: 22px;
  border: 1px solid #e5e7eb;
  box-shadow: 0 2px 14px rgba(0,0,0,0.04);
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 20px;
  flex-wrap: wrap;
}
.p2-overall-text h2 {
  font-family: var(--font-display, 'Fraunces', serif);
  font-size: 22px;
  margin: 0 0 4px;
}
.p2-overall-text p { color: #475569; font-size: 13.5px; margin: 0; }
.p2-overall-stats { display: flex; gap: 14px; }
.p2-stat {
  text-align: center;
  padding: 10px 18px;
  background: #f1f5f9;
  border-radius: 12px;
  min-width: 80px;
}
.p2-stat strong {
  display: block;
  font-size: 24px;
  font-family: var(--font-display, 'Fraunces', serif);
  font-weight: 700;
  color: #B71C22;
  line-height: 1;
}
.p2-stat span {
  font-size: 11px;
  color: #475569;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  font-weight: 600;
}
.p2-timeline {
  position: relative;
  padding-left: 36px;
}
.p2-timeline::before {
  content: '';
  position: absolute;
  left: 17px;
  top: 8px;
  bottom: 8px;
  width: 2px;
  background: linear-gradient(180deg, #D61F26, #C68A3A, #C68A3A);
  border-radius: 2px;
}
.p2-item { position: relative; margin-bottom: 18px; }
.p2-dot {
  position: absolute;
  left: -36px;
  top: 16px;
  width: 36px;
  height: 36px;
  border-radius: 50%;
  background: #fff;
  border: 3px solid #e5e7eb;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 14px;
  z-index: 2;
  transition: all 0.3s ease;
}
.p2-item.p2-done .p2-dot { background: #D61F26; border-color: #B71C22; color: #fff; }
.p2-item.p2-progress .p2-dot { background: #f5e8d4; border-color: #C68A3A; color: #A8742A; }
.p2-item.p2-empty .p2-dot { border-style: dashed; color: #94a3b8; }
.p2-card {
  background: #fff;
  border-radius: 14px;
  border: 1px solid #e5e7eb;
  box-shadow: 0 2px 10px rgba(0,0,0,0.04);
  overflow: hidden;
  transition: all 0.3s ease;
}
.p2-item.p2-done .p2-card { border-left: 4px solid #D61F26; }
.p2-item.p2-progress .p2-card { border-left: 4px solid #C68A3A; }
.p2-card-head {
  padding: 16px 20px;
  display: flex;
  justify-content: space-between;
  align-items: center;
  cursor: pointer;
  transition: background 0.2s ease;
}
.p2-card-head:hover { background: #fafbfd; }
.p2-head-text { min-width: 0; flex: 1; }
.p2-card-title {
  font-family: var(--font-display, 'Fraunces', serif);
  font-size: 17px;
  font-weight: 700;
  margin: 0 0 2px;
  color: #333333;
}
.p2-card-sub { font-size: 13px; color: #475569; margin: 0; }
.p2-head-right {
  display: flex;
  align-items: center;
  gap: 12px;
  flex-shrink: 0;
}
.p2-pct {
  font-size: 13px;
  font-weight: 700;
  font-family: var(--font-display, 'Fraunces', serif);
  color: #B71C22;
  background: #fde9ea;
  padding: 4px 10px;
  border-radius: 10px;
}
.p2-item.p2-progress .p2-pct { color: #A8742A; background: #f5e8d4; }
.p2-item.p2-empty .p2-pct { color: #94a3b8; background: #f1f5f9; }
.p2-toggle-btn {
  width: 30px;
  height: 30px;
  border-radius: 50%;
  border: 1.5px solid #e5e7eb;
  background: #fff;
  cursor: pointer;
  font-size: 12px;
  color: #475569;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  transition: all 0.3s ease;
}
.p2-item.expanded .p2-toggle-btn { transform: rotate(180deg); background: #D61F26; color: #fff; border-color: #D61F26; }
.p2-card-body {
  display: none;
  padding: 0 20px 20px;
  border-top: 1px solid #f1f5f9;
}
.p2-item.expanded .p2-card-body { display: block; animation: p2SlideDown 0.3s ease; }
@keyframes p2SlideDown {
  from { opacity: 0; transform: translateY(-10px); }
  to { opacity: 1; transform: translateY(0); }
}
.p2-view, .p2-edit-mode { padding: 14px 0; }
.p2-edit-mode { display: none; }
.p2-item.editing .p2-view { display: none; }
.p2-item.editing .p2-edit-mode { display: block; }
/* Stat-card grid: like hero, 2-col on desktop, 1-col mobile */
.p2-view {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 14px 28px;
}
.p2-view .p2-edit-btn { grid-column: 1 / -1; justify-self: start; }
.p2-field-row {
  display: flex;
  flex-direction: column;
  gap: 4px;
  padding: 6px 0;
  min-width: 0;
}
.p2-field-row:last-of-type { border-bottom: none; }
.p2-field-lbl {
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: #94a3b8;
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
.p2-field-lbl i { font-size: 12px; color: #D61F26; }
.p2-field-val {
  font-size: 14px;
  color: #333333;
  font-weight: 500;
  text-align: left;
  word-break: break-word;
}
.p2-edit-btn {
  margin-top: 14px;
  background: linear-gradient(135deg, #D61F26, #B71C22);
  color: #fff;
  border: none;
  padding: 10px 22px;
  border-radius: 22px;
  font-size: 13.5px;
  font-weight: 600;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-family: inherit;
  transition: all 0.2s ease;
}
.p2-edit-btn:hover { transform: translateY(-1px); box-shadow: 0 6px 16px rgba(22,167,81,0.35); }


/* ---------- 56.4 VARIANT C — Orbits (.p3-*) ---------- */
.p3-galaxy {
  background: #fff;
  border-radius: 18px;
  border: 1px solid #e5e7eb;
  padding: 30px 20px;
  margin-bottom: 24px;
  text-align: center;
  position: relative;
  overflow: hidden;
}
.p3-stage {
  position: relative;
  width: 100%;
  max-width: 540px;
  aspect-ratio: 1;
  margin: 0 auto;
}
.p3-orbit-outer, .p3-orbit-inner {
  position: absolute;
  top: 50%;
  left: 50%;
  border: 1.5px dashed #cbd5e1;
  border-radius: 50%;
  transform: translate(-50%, -50%);
}
.p3-orbit-inner { width: 50%; height: 50%; border-color: #94a3b8; }
.p3-orbit-outer { width: 90%; height: 90%; }
.p3-center {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 110px;
  height: 110px;
  border-radius: 50%;
  overflow: hidden;
  border: 4px solid #fff;
  box-shadow: 0 0 0 3px #D61F26, 0 8px 24px rgba(0,0,0,0.15);
  z-index: 5;
}
.p3-center img { width: 100%; height: 100%; object-fit: cover; }
.p3-center-name {
  position: absolute;
  bottom: 8px;
  left: 0;
  right: 0;
  text-align: center;
  color: #fff;
  font-size: 11px;
  font-weight: 700;
  background: linear-gradient(180deg, transparent, rgba(0,0,0,0.5));
  padding: 14px 0 4px;
}
.p3-node {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%) rotate(var(--angle)) translateY(calc(-1 * var(--orbit-r))) rotate(calc(-1 * var(--angle)));
  border: none;
  background: #fff;
  border-radius: 50%;
  cursor: pointer;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  font-family: inherit;
  transition: all 0.3s ease;
  box-shadow: 0 4px 14px rgba(0,0,0,0.10);
  padding: 0;
}
.p3-node:hover { transform: translate(-50%, -50%) rotate(var(--angle)) translateY(calc(-1 * var(--orbit-r))) rotate(calc(-1 * var(--angle))) scale(1.12); box-shadow: 0 8px 24px rgba(0,0,0,0.20); }
.p3-inner {
  --orbit-r: 25%;
  width: 90px;
  height: 90px;
  border: 3px solid #D61F26;
  background: #fde9ea;
  color: #B71C22;
}
.p3-outer {
  --orbit-r: 45%;
  width: 64px;
  height: 64px;
  border: 2px solid #e5e7eb;
  background: #fff;
  color: #475569;
}
.p3-node i { font-size: 18px; }
.p3-inner i { font-size: 22px; }
.p3-node-lbl {
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.02em;
  margin-top: 2px;
  white-space: nowrap;
  max-width: 80px;
  overflow: hidden;
  text-overflow: ellipsis;
}
.p3-outer .p3-node-lbl { display: none; }
.p3-outer:hover .p3-node-lbl {
  display: block;
  position: absolute;
  bottom: -22px;
  background: #333333;
  color: #fff;
  padding: 3px 8px;
  border-radius: 6px;
  font-size: 10px;
}
.p3-node-pct {
  font-size: 9px;
  color: #D61F26;
  font-weight: 700;
  background: #fff;
  padding: 1px 5px;
  border-radius: 6px;
  position: absolute;
  bottom: -8px;
}
.p3-hint {
  margin-top: 24px;
  font-size: 12.5px;
  color: #475569;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  background: #f1f5f9;
  padding: 8px 16px;
  border-radius: 20px;
}
.p3-hint i { color: #C68A3A; }
.p3-overlay {
  position: fixed;
  inset: 0;
  background: rgba(15, 23, 42, 0.55);
  z-index: 998;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.3s ease;
  backdrop-filter: blur(3px);
}
.p3-overlay.active { opacity: 1; pointer-events: all; }
.p3-drawer {
  position: fixed;
  top: 0;
  right: -100%;
  width: 100%;
  max-width: 480px;
  height: 100vh;
  background: #fff;
  z-index: 999;
  transition: right 0.4s cubic-bezier(0.4, 0, 0.2, 1);
  display: flex;
  flex-direction: column;
  box-shadow: -8px 0 24px rgba(0,0,0,0.15);
}
.p3-drawer.active { right: 0; }
.p3-drawer-head {
  padding: 20px 24px;
  border-bottom: 1px solid #e5e7eb;
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-shrink: 0;
}
.p3-drawer-title {
  display: flex;
  align-items: center;
  gap: 12px;
  min-width: 0;
}
.p3-drawer-icon {
  width: 44px;
  height: 44px;
  border-radius: 12px;
  background: linear-gradient(135deg, #fde9ea, #f5e8d4);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 20px;
  color: #B71C22;
  flex-shrink: 0;
}
.p3-drawer-title h3 {
  margin: 0;
  font-family: var(--font-display, 'Fraunces', serif);
  font-size: 19px;
  font-weight: 700;
}
.p3-drawer-title p { margin: 2px 0 0; font-size: 12.5px; color: #475569; }
.p3-drawer-close {
  width: 36px;
  height: 36px;
  border-radius: 50%;
  background: #f1f5f9;
  border: 1.5px solid #e5e7eb;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 14px;
  color: #475569;
  transition: all 0.2s ease;
  flex-shrink: 0;
}
.p3-drawer-close:hover { background: #C68A3A; color: #fff; border-color: #C68A3A; transform: rotate(90deg); }
.p3-drawer-body {
  flex: 1;
  overflow-y: auto;
  padding: 20px 24px;
}
.p3-edit-mode { display: none; }
.p3-drawer.editing .p3-view-mode { display: none; }
.p3-drawer.editing .p3-edit-mode { display: block; }
.p3-field-row {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  padding: 9px 0;
  border-bottom: 1px dashed #f1f5f9;
  gap: 12px;
}
.p3-field-lbl {
  font-size: 12px;
  font-weight: 600;
  color: #475569;
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
.p3-field-lbl i { font-size: 12px; color: #B71C22; }
.p3-field-val { font-size: 13.5px; font-weight: 600; color: #333333; text-align: right; }
.p3-edit-btn {
  width: 100%;
  margin-top: 18px;
  background: linear-gradient(135deg, #D61F26, #B71C22);
  color: #fff;
  border: none;
  padding: 12px;
  border-radius: 22px;
  font-size: 14px;
  font-weight: 700;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  font-family: inherit;
}


/* ---------- 56.5 VARIANT D — Magazine Chapters (.p4-*) ---------- */
.p4-wrap {
  font-family: var(--font-display, 'Fraunces', serif), serif;
}
.p4-masthead {
  display: flex;
  align-items: center;
  gap: 12px;
  margin: 30px 0 22px;
}
.p4-mast-line {
  flex: 1;
  height: 1px;
  background: #333333;
}
.p4-mast-text {
  font-style: italic;
  font-size: 13px;
  color: #475569;
  letter-spacing: 0.05em;
}
.p4-chapter {
  background: #fff;
  border-radius: 6px;
  padding: 36px 32px;
  margin-bottom: 28px;
  border: 1px solid #e5e7eb;
  position: relative;
  transition: all 0.3s ease;
}
.p4-chapter:hover {
  border-color: #333333;
  box-shadow: 0 4px 18px rgba(0,0,0,0.06);
}
.p4-chap-head {
  margin-bottom: 24px;
  text-align: center;
}
.p4-chap-num {
  font-family: var(--font-display, 'Fraunces', serif), serif;
  font-style: italic;
  font-size: 13px;
  color: #A8742A;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  margin-bottom: 6px;
}
.p4-chap-title {
  font-family: var(--font-display, 'Fraunces', serif), serif;
  font-size: 36px;
  font-weight: 700;
  margin: 0 0 12px;
  line-height: 1.1;
  color: #333333;
  letter-spacing: -0.01em;
}
.p4-chap-rule {
  width: 60px;
  height: 2px;
  background: #C68A3A;
  margin: 12px auto 14px;
}
.p4-chap-lede {
  font-family: var(--font-display, 'Fraunces', serif), serif;
  font-style: italic;
  font-size: 16px;
  color: #475569;
  margin: 0;
  max-width: 480px;
  margin: 0 auto;
  line-height: 1.6;
}
.p4-stats {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 18px 32px;
  padding: 24px 0;
  border-top: 1px solid #e5e7eb;
  border-bottom: 1px solid #e5e7eb;
  margin: 24px 0;
}
.p4-stat-lbl {
  font-family: 'Poppins', sans-serif;
  font-size: 10.5px;
  font-weight: 600;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: #94a3b8;
  margin-bottom: 4px;
}
.p4-stat-val {
  font-family: var(--font-display, 'Fraunces', serif), serif;
  font-size: 18px;
  font-weight: 600;
  color: #333333;
  line-height: 1.3;
}
.p4-edit-btn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 10px 24px;
  background: transparent;
  border: 1.5px solid #333333;
  color: #333333;
  border-radius: 0;
  font-family: 'Poppins', sans-serif;
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  cursor: pointer;
  transition: all 0.2s ease;
}
.p4-edit-btn:hover { background: #333333; color: #fff; }
.p4-edit-mode {
  display: none;
  border-top: 1px solid #e5e7eb;
  padding-top: 24px;
  margin-top: 24px;
}
.p4-chapter.editing .p4-view { display: none; }
.p4-chapter.editing .p4-edit-mode { display: block; }
.p4-footer {
  text-align: center;
  margin: 40px 0 20px;
  font-family: var(--font-display, 'Fraunces', serif), serif;
  font-style: italic;
  color: #475569;
}
.p4-footer-rule {
  width: 100px;
  height: 1px;
  background: #333333;
  margin: 0 auto 14px;
}
.p4-footer p { margin: 0; font-size: 13px; }


/* ---------- 56.6 Mobile responsive (all 4 variants) ---------- */
@media (max-width: 991px) {
  .vp-hero-body { grid-template-columns: 200px 1fr; gap: 18px; padding: 18px; }
  .p3-stage { max-width: 100%; }
}
@media (max-width: 767px) {
  .vp-hero-head { padding: 14px 16px; }
  .vp-hero-h { font-size: 18px; }
  .vp-hero-body { grid-template-columns: 1fr; gap: 16px; padding: 14px; }
  .vp-hero-photo-col { max-width: 280px; margin: 0 auto; }
  .vp-hero-name { font-size: 22px; }
  .vp-hero-grid { grid-template-columns: 1fr; gap: 10px; }
  .vp-form.vp-grid-2 { grid-template-columns: 1fr; }
  .vp-actions { flex-direction: row-reverse; }
  .vp-btn { flex: 1; justify-content: center; padding: 10px 14px; }

  /* p1 */
  .p1-front { padding: 20px; min-height: 480px; }
  .p1-title { font-size: 24px; }
  .p1-icon-big { width: 56px; height: 56px; font-size: 24px; }
  .p1-back { padding: 20px; }

  /* p2 */
  .p2-overall { flex-direction: column; align-items: stretch; }
  .p2-overall-stats { justify-content: space-around; }
  .p2-timeline { padding-left: 30px; }
  .p2-dot { left: -30px; width: 28px; height: 28px; font-size: 11px; }
  .p2-card-head { padding: 14px; }
  .p2-view { grid-template-columns: 1fr; gap: 12px; }
  .p2-card-title { font-size: 15px; }
  .p2-head-right { gap: 8px; }

  /* p3 */
  .p3-galaxy { padding: 20px 12px; }
  .p3-center { width: 80px; height: 80px; }
  .p3-inner { width: 64px; height: 64px; }
  .p3-inner i { font-size: 16px; }
  .p3-inner .p3-node-lbl { font-size: 9px; max-width: 56px; }
  .p3-outer { width: 44px; height: 44px; }
  .p3-outer i { font-size: 14px; }
  .p3-drawer { max-width: 100%; }

  /* p4 */
  .p4-chapter { padding: 24px 18px; }
  .p4-chap-title { font-size: 26px; }
  .p4-chap-lede { font-size: 14px; }
  .p4-stats { grid-template-columns: 1fr; gap: 14px; }
}


/* =========================================================
   56.7 PROFILE2.HTML "MY PROFILE" HERO (Option B)
   --------------------------------------------------------
   Premium hero for profile2.html only. All classes prefixed
   .p2my- so cannot affect anything else. Includes Profile
   Strength bar with red→yellow→green gradient that animates
   from 0% to target value on page load.
   ========================================================= */

/* ---- 56.7.1 Card shell ---- */
.p2my-hero {
  background: #fff;
  border-radius: 18px;
  border: 1px solid #e5e7eb;
  box-shadow: 0 2px 18px rgba(0, 0, 0, 0.05);
  margin-bottom: 24px;
  padding: 22px;
  overflow: hidden;
}
.p2my-grid {
  display: grid;
  grid-template-columns: minmax(260px, 1fr) 1.5fr;
  gap: 26px;
  align-items: start;
}

/* ---- 56.7.2 Left column: photo + thumbs + strength bar ---- */
.p2my-photo-wrap {
  position: relative;
  width: 100%;
  aspect-ratio: 4/5;
  border-radius: 14px;
  overflow: hidden;
  background: linear-gradient(135deg, #5DCAA5, #1D9E75);
  cursor: zoom-in;
}
.p2my-photo {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 0.4s ease;
}
/* Subtle hover lift on the image to hint it's clickable */
.p2my-photo-wrap:hover .p2my-photo { transform: scale(1.04); }

/* Overlay shown on hover — "Click to zoom" hint */
.p2my-photo-overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, transparent 60%, rgba(0,0,0,0.55));
  display: flex;
  align-items: flex-end;
  justify-content: center;
  padding-bottom: 18px;
  color: #fff;
  font-size: 13px;
  font-weight: 600;
  letter-spacing: 0.04em;
  opacity: 0;
  transition: opacity 0.25s ease;
  pointer-events: none;
  z-index: 1;
}
.p2my-photo-overlay i {
  margin-right: 6px;
  font-size: 16px;
}
.p2my-photo-wrap:hover .p2my-photo-overlay { opacity: 1; }
.p2my-badge-prem {
  position: absolute;
  top: 12px;
  left: 12px;
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 5px 12px;
  background: linear-gradient(135deg, #C68A3A, #A8742A);
  color: #fff;
  border-radius: 16px;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.04em;
  box-shadow: 0 3px 10px rgba(198, 138, 58, 0.4);
  pointer-events: none;     /* hover passes through to image for zoom */
  z-index: 2;
}
.p2my-photo-update {
  position: absolute;
  top: 12px;
  right: 12px;
  background: rgba(255, 255, 255, 0.95);
  border: none;
  padding: 6px 12px;
  border-radius: 14px;
  font-size: 11px;
  font-weight: 600;
  color: #333333;
  text-decoration: none;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  gap: 5px;
  font-family: inherit;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
  transition: all 0.2s ease;
  z-index: 3;
}
.p2my-photo-update:hover {
  background: #fff;
  color: #333333;
  text-decoration: none;
  transform: translateY(-1px);
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);
}
.p2my-photo-update i { color: #D61F26; }

/* Thumbs slider — left/right arrows + scrollable thumb track */
.p2my-thumbs-wrap {
  position: relative;
  margin-top: 10px;
}
.p2my-thumbs {
  display: flex;
  gap: 6px;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  -webkit-overflow-scrolling: touch;
  scroll-behavior: smooth;
  padding: 4px 36px;     /* room for arrow buttons + focus ring */
}
.p2my-thumbs::-webkit-scrollbar { display: none; }
.p2my-thumbs { scrollbar-width: none; }
.p2my-thumb {
  flex: 0 0 64px;
  width: 64px;
  height: 64px;
  border-radius: 8px;
  object-fit: cover;
  cursor: pointer;
  border: 2px solid transparent;
  transition: all 0.2s ease;
  scroll-snap-align: start;
}
.p2my-thumb:hover { transform: translateY(-2px); border-color: #C68A3A; }
.p2my-thumb.active { border-color: #D61F26; }

.p2my-thumb-arrow {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  width: 30px;
  height: 30px;
  border-radius: 50%;
  background: #fff;
  border: 1px solid #e5e7eb;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 13px;
  color: #333333;
  box-shadow: 0 4px 10px rgba(0, 0, 0, 0.12);
  transition: all 0.2s ease;
  z-index: 3;
  font-family: inherit;
}
.p2my-thumb-arrow:hover {
  background: #D61F26;
  color: #fff;
  border-color: #D61F26;
  transform: translateY(-50%) scale(1.1);
}
.p2my-thumb-arrow:disabled {
  opacity: 0.35;
  cursor: not-allowed;
  pointer-events: none;
}
.p2my-thumb-prev { left: 2px; }
.p2my-thumb-next { right: 2px; }

/* ---- 56.7.3 Profile Strength bar (white fill on colored background) ---- */
/* Container background changes by % band: red (0-39), yellow (40-74), green (75-100).
   Fill bar itself is always solid white. JS sets the band class. */
.p2my-strength {
  margin-top: 14px;
  padding: 14px 16px;
  border-radius: 12px;
  color: #fff;
  transition: background 0.6s ease;
  background: linear-gradient(135deg, #475569, #1e293b);  /* default neutral until JS applies band */
}
.p2my-strength.p2my-band-low {
  background: linear-gradient(135deg, #dc2626, #991b1b);
}
.p2my-strength.p2my-band-mid {
  background: linear-gradient(135deg, #f59e0b, #b45309);
}
.p2my-strength.p2my-band-high {
  background: linear-gradient(135deg, #D61F26, #B71C22);
}
.p2my-strength-head {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-bottom: 10px;
}
.p2my-strength-pct {
  font-family: var(--font-display, 'Fraunces', serif);
  font-size: 28px;
  font-weight: 700;
  line-height: 1;
  flex-shrink: 0;
  min-width: 56px;
  color: #fff;
}
.p2my-strength-text { min-width: 0; }
.p2my-strength-title {
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 0.02em;
}
.p2my-strength-sub {
  font-size: 11px;
  opacity: 0.9;
  margin-top: 2px;
  line-height: 1.4;
}
.p2my-strength-bar {
  width: 100%;
  height: 10px;
  background: rgba(255, 255, 255, 0.2);
  border-radius: 5px;
  overflow: hidden;
  position: relative;
}
/* Fill is solid WHITE — animates from 0 to target % */
.p2my-strength-fill {
  height: 100%;
  width: 0;
  background: #fff;
  border-radius: 5px;
  transition: width 1.4s cubic-bezier(0.4, 0, 0.2, 1);
  box-shadow: 0 0 8px rgba(255, 255, 255, 0.5);
}
.p2my-strength-fill .p2my-strength-grad { display: none; }


/* ---- 56.7.4 Right column: name, tagline, quickfacts, actions, stats ---- */
.p2my-right { min-width: 0; }
.p2my-name-row {
  display: flex;
  align-items: baseline;
  gap: 10px;
  flex-wrap: wrap;
  margin-bottom: 4px;
}
.p2my-name {
  margin: 0;
  font-family: var(--font-display, 'Fraunces', serif);
  font-size: 28px;
  font-weight: 700;
  line-height: 1.15;
  color: #333333;
}
.p2my-mid {
  font-size: 13px;
  font-weight: 700;
  color: #A8742A;
  background: #f5e8d4;
  padding: 3px 10px;
  border-radius: 12px;
  letter-spacing: 0.02em;
}
.p2my-tagline {
  font-family: var(--font-display, 'Fraunces', serif);
  font-style: italic;
  font-size: 15px;
  color: #A8742A;
  margin-bottom: 12px;
}

.p2my-quickfacts {
  display: flex;
  flex-wrap: wrap;
  gap: 6px 18px;
  margin-bottom: 16px;
}
.p2my-qf {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  font-size: 12px;
  color: #475569;
  font-weight: 500;
}
.p2my-qf i { font-size: 13px; color: #D61F26; }

.p2my-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 18px;
}
.p2my-btn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 9px 18px;
  border-radius: 22px;
  font-family: inherit;
  font-size: 13px;
  font-weight: 600;
  cursor: pointer;
  transition: all 0.2s ease;
  border: 1.5px solid;
  min-height: 40px;
}
.p2my-btn-edit {
  background: linear-gradient(135deg, #D61F26, #B71C22);
  color: #fff;
  border-color: transparent;
  box-shadow: 0 4px 12px rgba(214, 31, 38, 0.28);
}
.p2my-btn-edit:hover {
  transform: translateY(-1px);
  box-shadow: 0 6px 16px rgba(214, 31, 38, 0.4);
}
.p2my-btn-preview {
  background: #fff;
  color: #185FA5;
  border-color: #185FA5;
}
.p2my-btn-preview:hover {
  background: #185FA5;
  color: #fff;
}
.p2my-btn-share {
  background: transparent;
  color: #475569;
  border-color: #cbd5e1;
}
.p2my-btn-share:hover {
  background: #f1f5f9;
  color: #333333;
  border-color: #94a3b8;
}

/* ---- 56.7.5 12 colored stat cards grid ---- */
.p2my-stats-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 10px;
}
.p2my-stat {
  padding: 12px 8px;
  border-radius: 12px;
  text-align: center;
  transition: all 0.2s ease;
  cursor: default;
  border: 1px solid transparent;
}
.p2my-stat:hover {
  transform: translateY(-2px);
  box-shadow: 0 6px 14px rgba(0, 0, 0, 0.08);
}
.p2my-stat-ic {
  width: 32px;
  height: 32px;
  border-radius: 50%;
  background: #fff;
  margin: 0 auto 6px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 14px;
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.06);
}
.p2my-stat-lbl {
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  margin-bottom: 2px;
  opacity: 0.8;
}
.p2my-stat-val {
  font-size: 13px;
  font-weight: 700;
  color: #333333;
  word-break: break-word;
}

/* Color variants — pastel bg + dark icon color matching the ramp */
.p2my-stat-green  { background: #EAF3DE; }
.p2my-stat-green  .p2my-stat-ic { color: #3B6D11; }
.p2my-stat-green  .p2my-stat-lbl { color: #3B6D11; }

.p2my-stat-amber  { background: #FAEEDA; }
.p2my-stat-amber  .p2my-stat-ic { color: #854F0B; }
.p2my-stat-amber  .p2my-stat-lbl { color: #854F0B; }

.p2my-stat-teal   { background: #E1F5EE; }
.p2my-stat-teal   .p2my-stat-ic { color: #0F6E56; }
.p2my-stat-teal   .p2my-stat-lbl { color: #0F6E56; }

.p2my-stat-coral  { background: #FAECE7; }
.p2my-stat-coral  .p2my-stat-ic { color: #993C1D; }
.p2my-stat-coral  .p2my-stat-lbl { color: #993C1D; }

.p2my-stat-pink   { background: #FBEAF0; }
.p2my-stat-pink   .p2my-stat-ic { color: #993556; }
.p2my-stat-pink   .p2my-stat-lbl { color: #993556; }

.p2my-stat-purple { background: #EEEDFE; }
.p2my-stat-purple .p2my-stat-ic { color: #3C3489; }
.p2my-stat-purple .p2my-stat-lbl { color: #3C3489; }

.p2my-stat-blue   { background: #E6F1FB; }
.p2my-stat-blue   .p2my-stat-ic { color: #0C447C; }
.p2my-stat-blue   .p2my-stat-lbl { color: #0C447C; }

.p2my-stat-red    { background: #FCEBEB; }
.p2my-stat-red    .p2my-stat-ic { color: #791F1F; }
.p2my-stat-red    .p2my-stat-lbl { color: #791F1F; }


/* ---- 56.7.6 Mobile responsive ---- */
@media (max-width: 991px) {
  .p2my-grid {
    grid-template-columns: 240px 1fr;
    gap: 18px;
  }
  .p2my-name { font-size: 24px; }
  .p2my-stats-grid { grid-template-columns: repeat(3, 1fr); }
}
@media (max-width: 767px) {
  .p2my-hero { padding: 16px; }
  .p2my-grid {
    grid-template-columns: 1fr;
    gap: 16px;
  }
  .p2my-photo-wrap { max-width: 320px; margin: 0 auto; }
  .p2my-thumbs { max-width: 320px; margin: 10px auto 0; }
  .p2my-name { font-size: 22px; }
  .p2my-tagline { font-size: 14px; }
  .p2my-actions { gap: 6px; }
  .p2my-btn { flex: 1; justify-content: center; padding: 9px 10px; font-size: 12px; }
  .p2my-stats-grid { grid-template-columns: repeat(3, 1fr); gap: 8px; }
  .p2my-strength-pct { font-size: 24px; min-width: 48px; }
}
@media (max-width: 480px) {
  .p2my-stats-grid { grid-template-columns: repeat(2, 1fr); }
  .p2my-btn { font-size: 11.5px; padding: 8px; }
  .p2my-btn span { display: none; }
}


/* =========================================================
   56.8 PROFILE2.HTML — view-mode dividers + chip multiselect
   --------------------------------------------------------
   - Light divider line between each .p2-field-row in view mode
   - Multi-select chip group styling (used in Lifestyle section)
   ========================================================= */

/* Light divider line between view-mode rows in profile2 sections */
.p2-view .p2-field-row + .p2-field-row {
  border-top: 1px solid rgba(0, 0, 0, 0.06);
  padding-top: 10px;
  margin-top: 4px;
}

/* Multi-select chip group (used by Lifestyle fields) */
.vp-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  padding: 4px 0;
}
.vp-chip {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 7px 14px;
  border: 1.5px solid #e5e7eb;
  border-radius: 18px;
  background: #fff;
  color: #475569;
  font-family: inherit;
  font-size: 12.5px;
  font-weight: 500;
  cursor: pointer;
  transition: all 0.18s ease;
  user-select: none;
  position: relative;
}
.vp-chip:hover {
  border-color: #D61F26;
  background: #fde9ea;
  color: #B71C22;
  transform: translateY(-1px);
}
.vp-chip.selected {
  background: linear-gradient(135deg, #D61F26, #B71C22);
  color: #fff;
  border-color: transparent;
  font-weight: 600;
  padding-left: 28px;
  box-shadow: 0 3px 10px rgba(214, 31, 38, 0.28);
}
.vp-chip.selected::before {
  content: '';
  position: absolute;
  left: 10px;
  top: 50%;
  width: 12px;
  height: 12px;
  margin-top: -6px;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 16 16' fill='white'><path d='M13.854 3.646a.5.5 0 0 1 0 .708l-7 7a.5.5 0 0 1-.708 0l-3.5-3.5a.5.5 0 1 1 .708-.708L6.5 10.293l6.646-6.647a.5.5 0 0 1 .708 0z'/></svg>");
  background-repeat: no-repeat;
}


/* =========================================================
   56.9 PROFILE2 LIGHTBOX — fullscreen image viewer
   --------------------------------------------------------
   Opens when user clicks the main photo. Shows all 8 photos
   with prev/next navigation and a counter.
   ========================================================= */
.p2my-lightbox {
  position: fixed;
  inset: 0;
  background: rgba(10, 10, 12, 0.94);
  z-index: 9999;
  display: none;
  align-items: center;
  justify-content: center;
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  animation: p2myLbFade 0.25s ease;
}
.p2my-lightbox.open { display: flex; }
@keyframes p2myLbFade {
  from { opacity: 0; }
  to   { opacity: 1; }
}

.p2my-lightbox-img {
  max-width: 90vw;
  max-height: 88vh;
  object-fit: contain;
  border-radius: 10px;
  box-shadow: 0 20px 60px rgba(0, 0, 0, 0.5);
  user-select: none;
  -webkit-user-drag: none;
}

.p2my-lightbox-close,
.p2my-lightbox-nav {
  position: absolute;
  width: 44px;
  height: 44px;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.12);
  border: 1.5px solid rgba(255, 255, 255, 0.25);
  color: #fff;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 18px;
  transition: all 0.2s ease;
  font-family: inherit;
  backdrop-filter: blur(4px);
}
.p2my-lightbox-close { top: 24px; right: 24px; }
.p2my-lightbox-nav.prev { left: 24px; top: 50%; transform: translateY(-50%); }
.p2my-lightbox-nav.next { right: 24px; top: 50%; transform: translateY(-50%); }

.p2my-lightbox-close:hover,
.p2my-lightbox-nav:hover {
  background: #fff;
  color: #333333;
  transform: scale(1.08);
}
.p2my-lightbox-nav.prev:hover { transform: translateY(-50%) scale(1.08); }
.p2my-lightbox-nav.next:hover { transform: translateY(-50%) scale(1.08); }

.p2my-lightbox-counter {
  position: absolute;
  bottom: 24px;
  left: 50%;
  transform: translateX(-50%);
  background: rgba(255, 255, 255, 0.14);
  color: #fff;
  padding: 7px 16px;
  border-radius: 14px;
  font-size: 12.5px;
  font-weight: 600;
  letter-spacing: 0.04em;
  backdrop-filter: blur(4px);
}

@media (max-width: 575px) {
  .p2my-lightbox-close,
  .p2my-lightbox-nav { width: 38px; height: 38px; font-size: 14px; }
  .p2my-lightbox-close { top: 14px; right: 14px; }
  .p2my-lightbox-nav.prev { left: 10px; }
  .p2my-lightbox-nav.next { right: 10px; }
}


/* =========================================================
   57. PARTNER PROFILE VIEW — profile-view.html
   --------------------------------------------------------
   View-only partner profile page. Same hero shape as
   profile2.html but with: photo privacy states, action buttons
   (Send Interest/Shortlist/Ignore), Profile Match % bar,
   per-field match icons, horoscope section, similar profiles.
   All classes prefixed .pv- so cannot collide.
   ========================================================= */

body.pv-page-body { background: #f5f7fa; }

.pv-page { padding: 18px 0 60px; }

/* ---- 57.1 Demo toggle bar (lets you preview all 3 photo states) ---- */
.pv-demo-bar {
  position: absolute;
  top: 14px;
  right: 14px;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  background: rgba(15, 23, 42, 0.85);
  color: #fff;
  padding: 6px 10px;
  border-radius: 14px;
  font-size: 11px;
  z-index: 5;
  backdrop-filter: blur(6px);
}
.pv-demo-lbl {
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  opacity: 0.8;
}
.pv-demo-group {
  display: inline-flex;
  background: rgba(255, 255, 255, 0.08);
  border-radius: 10px;
  padding: 2px;
}
.pv-demo-btn {
  background: transparent;
  color: #fff;
  border: none;
  padding: 4px 10px;
  border-radius: 8px;
  font-size: 11px;
  font-family: inherit;
  cursor: pointer;
  transition: all 0.18s ease;
}
.pv-demo-btn.active {
  background: #D61F26;
  font-weight: 600;
}

/* ---- 57.2 Hero card shell ---- */
.pv-hero {
  position: relative;
  background: #fff;
  border-radius: 18px;
  border: 1px solid #e5e7eb;
  box-shadow: 0 2px 18px rgba(0, 0, 0, 0.05);
  margin-bottom: 24px;
  padding: 22px;
}
.pv-grid {
  display: grid;
  grid-template-columns: minmax(260px, 1fr) 1.5fr;
  gap: 26px;
  align-items: start;
}

/* ---- 57.3 Photo wrapper + 3 states ---- */
.pv-photo-wrap {
  position: relative;
  width: 100%;
  aspect-ratio: 4/5;
  border-radius: 14px;
  overflow: hidden;
  background: #f1f5f9;
  cursor: zoom-in;
}
.pv-photo-state { display: none; }
.pv-photo-wrap[data-photo-state="visible"] .pv-photo-visible { display: block; }
.pv-photo-wrap[data-photo-state="blurred"] .pv-photo-blurred { display: block; cursor: default; }
.pv-photo-wrap[data-photo-state="none"]    .pv-photo-none    { display: block; cursor: default; }
.pv-photo-wrap[data-photo-state="blurred"] { cursor: default; }
.pv-photo-wrap[data-photo-state="none"]    { cursor: default; }

/* State A: visible */
.pv-photo {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 0.4s ease;
}
.pv-photo-wrap[data-photo-state="visible"]:hover .pv-photo { transform: scale(1.04); }
.pv-photo-overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, transparent 60%, rgba(0,0,0,0.55));
  display: flex;
  align-items: flex-end;
  justify-content: center;
  padding-bottom: 18px;
  color: #fff;
  font-size: 13px;
  font-weight: 600;
  opacity: 0;
  transition: opacity 0.25s ease;
  pointer-events: none;
  z-index: 1;
}
.pv-photo-overlay i { margin-right: 6px; font-size: 16px; }
.pv-photo-wrap[data-photo-state="visible"]:hover .pv-photo-overlay { opacity: 1; }

.pv-badge-online {
  position: absolute;
  top: 12px;
  left: 12px;
  background: rgba(255, 255, 255, 0.95);
  color: #B71C22;
  padding: 4px 10px;
  border-radius: 14px;
  font-size: 11px;
  font-weight: 700;
  display: inline-flex;
  align-items: center;
  gap: 5px;
  box-shadow: 0 2px 8px rgba(0,0,0,0.15);
  pointer-events: none;
  z-index: 2;
}
.pv-online-dot {
  width: 8px;
  height: 8px;
  background: #D61F26;
  border-radius: 50%;
  animation: pvPulse 1.5s ease infinite;
}
@keyframes pvPulse {
  0%, 100% { opacity: 1; transform: scale(1); }
  50% { opacity: 0.5; transform: scale(0.85); }
}

/* State B: blurred (locked photos) */
.pv-blur-img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  filter: blur(28px) brightness(0.7);
  transform: scale(1.1);
}
.pv-photo-locked {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  color: #fff;
  text-align: center;
  padding: 24px 18px;
  background: rgba(15, 23, 42, 0.55);
  backdrop-filter: blur(2px);
  z-index: 2;
}
.pv-photo-locked > i,
.pv-no-photo > i {
  font-size: 38px;
  margin-bottom: 12px;
  opacity: 0.95;
}
.pv-locked-title {
  font-family: var(--font-display, 'Fraunces', serif);
  font-size: 18px;
  font-weight: 700;
  margin-bottom: 6px;
}
.pv-locked-sub {
  font-size: 12.5px;
  opacity: 0.85;
  margin-bottom: 18px;
  max-width: 220px;
  line-height: 1.45;
}
.pv-locked-btn {
  background: linear-gradient(135deg, #C68A3A, #A8742A);
  color: #fff;
  border: none;
  padding: 10px 18px;
  border-radius: 22px;
  font-size: 13px;
  font-weight: 700;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-family: inherit;
  box-shadow: 0 4px 14px rgba(198, 138, 58, 0.4);
  transition: all 0.2s ease;
}
.pv-locked-btn:hover {
  transform: translateY(-1px);
  box-shadow: 0 6px 18px rgba(198, 138, 58, 0.5);
}

/* State C: no photos */
.pv-no-photo {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  color: #fff;
  text-align: center;
  padding: 24px 18px;
  background: linear-gradient(135deg, #475569, #1e293b);
  z-index: 2;
}

/* Hide thumbs when blurred / no photos */
.pv-photo-wrap[data-photo-state="blurred"] ~ .pv-thumbs-wrap,
.pv-photo-wrap[data-photo-state="none"]    ~ .pv-thumbs-wrap { display: none; }

/* ---- 57.4 Thumbs (same as profile2) ---- */
.pv-thumbs-wrap {
  position: relative;
  margin-top: 10px;
}
.pv-thumbs {
  display: flex;
  gap: 6px;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  -webkit-overflow-scrolling: touch;
  scroll-behavior: smooth;
  padding: 4px 36px;
}
.pv-thumbs::-webkit-scrollbar { display: none; }
.pv-thumbs { scrollbar-width: none; }
.pv-thumb {
  flex: 0 0 64px;
  width: 64px;
  height: 64px;
  border-radius: 8px;
  object-fit: cover;
  cursor: pointer;
  border: 2px solid transparent;
  transition: all 0.2s ease;
  scroll-snap-align: start;
}
.pv-thumb:hover { transform: translateY(-2px); border-color: #C68A3A; }
.pv-thumb.active { border-color: #D61F26; }
.pv-thumb-arrow {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  width: 30px;
  height: 30px;
  border-radius: 50%;
  background: #fff;
  border: 1px solid #e5e7eb;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: #333333;
  box-shadow: 0 4px 10px rgba(0,0,0,0.12);
  transition: all 0.2s ease;
  z-index: 3;
  font-family: inherit;
}
.pv-thumb-arrow:hover {
  background: #D61F26;
  color: #fff;
  border-color: #D61F26;
  transform: translateY(-50%) scale(1.1);
}
.pv-thumb-arrow:disabled {
  opacity: 0.35;
  cursor: not-allowed;
  pointer-events: none;
}
.pv-thumb-prev { left: 2px; }
.pv-thumb-next { right: 2px; }

/* ---- 57.5 Profile Match bar (red/yellow/green band) ---- */
.pv-match {
  margin-top: 14px;
  padding: 14px 16px;
  border-radius: 12px;
  color: #fff;
  background: linear-gradient(135deg, #475569, #1e293b);
  transition: background 0.6s ease;
}
.pv-match[data-match-band="low"]  { background: linear-gradient(135deg, #dc2626, #991b1b); }
.pv-match[data-match-band="mid"]  { background: linear-gradient(135deg, #f59e0b, #b45309); }
.pv-match[data-match-band="high"] { background: linear-gradient(135deg, #D61F26, #B71C22); }
.pv-match-head {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-bottom: 10px;
}
.pv-match-pct {
  font-family: var(--font-display, 'Fraunces', serif);
  font-size: 28px;
  font-weight: 700;
  line-height: 1;
  flex-shrink: 0;
  min-width: 56px;
}
.pv-match-title { font-size: 13px; font-weight: 700; }
.pv-match-sub { font-size: 11px; opacity: 0.9; margin-top: 2px; }
.pv-match-bar {
  width: 100%;
  height: 10px;
  background: rgba(255, 255, 255, 0.2);
  border-radius: 5px;
  overflow: hidden;
}
.pv-match-fill {
  height: 100%;
  width: 0;
  background: #fff;
  border-radius: 5px;
  transition: width 1.4s cubic-bezier(0.4, 0, 0.2, 1);
  box-shadow: 0 0 8px rgba(255, 255, 255, 0.5);
}

/* ---- 57.6 Right column: name, tagline, quickfacts, action buttons ---- */
.pv-right { min-width: 0; }
.pv-name-row {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  margin-bottom: 4px;
}
.pv-name {
  margin: 0;
  font-family: var(--font-display, 'Fraunces', serif);
  font-size: 28px;
  font-weight: 700;
  color: #333333;
}
.pv-mid {
  font-size: 13px;
  font-weight: 700;
  color: #A8742A;
  background: #f5e8d4;
  padding: 3px 10px;
  border-radius: 12px;
}
.pv-verified {
  display: inline-flex;
  width: 22px;
  height: 22px;
  border-radius: 50%;
  background: #185FA5;
  color: #fff;
  align-items: center;
  justify-content: center;
  font-size: 11px;
}
.pv-tagline {
  font-family: var(--font-display, 'Fraunces', serif);
  font-style: italic;
  font-size: 15px;
  color: #A8742A;
  margin-bottom: 12px;
}
.pv-quickfacts {
  display: flex;
  flex-wrap: wrap;
  gap: 6px 18px;
  margin-bottom: 16px;
}
.pv-qf {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  font-size: 12px;
  color: #475569;
  font-weight: 500;
}
.pv-qf i { font-size: 13px; color: #D61F26; }

.pv-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 18px;
}
.pv-btn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 9px 18px;
  border-radius: 22px;
  font-family: inherit;
  font-size: 13px;
  font-weight: 600;
  cursor: pointer;
  transition: all 0.2s ease;
  border: 1.5px solid;
  min-height: 40px;
}
.pv-btn-interest {
  background: linear-gradient(135deg, #D61F26, #B71C22);
  color: #fff;
  border-color: transparent;
  box-shadow: 0 4px 12px rgba(214, 31, 38, 0.28);
}
.pv-btn-interest:hover { transform: translateY(-1px); box-shadow: 0 6px 16px rgba(214, 31, 38, 0.4); }
.pv-btn-shortlist {
  background: #fff;
  color: #C68A3A;
  border-color: #C68A3A;
}
.pv-btn-shortlist:hover { background: #C68A3A; color: #fff; }
.pv-btn-message {
  background: #fff;
  color: #185FA5;
  border-color: #185FA5;
}
.pv-btn-message:hover { background: #185FA5; color: #fff; }
.pv-btn-ignore {
  background: transparent;
  color: #dc2626;
  border-color: #fca5a5;
}
.pv-btn-ignore:hover { background: #fee2e2; color: #991b1b; border-color: #dc2626; }
.pv-btn-block {
  background: transparent;
  color: #4b5563;
  border-color: #d1d5db;
}
.pv-btn-block:hover { background: #1f2937; color: #fff; border-color: #1f2937; }

/* ---- 57.7 12 stat cards (same colors as p2my) ---- */
.pv-stats-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 10px;
}
.pv-stat {
  padding: 12px 8px;
  border-radius: 12px;
  text-align: center;
  transition: all 0.2s ease;
  cursor: default;
}
.pv-stat:hover { transform: translateY(-2px); box-shadow: 0 6px 14px rgba(0,0,0,0.08); }
.pv-stat-ic {
  width: 32px;
  height: 32px;
  border-radius: 50%;
  background: #fff;
  margin: 0 auto 6px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 14px;
  box-shadow: 0 2px 6px rgba(0,0,0,0.06);
}
.pv-stat-lbl {
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  margin-bottom: 2px;
  opacity: 0.8;
}
.pv-stat-val { font-size: 13px; font-weight: 700; color: #333333; word-break: break-word; }
.pv-stat-green  { background: #EAF3DE; }
.pv-stat-green  .pv-stat-ic { color: #3B6D11; }
.pv-stat-green  .pv-stat-lbl { color: #3B6D11; }
.pv-stat-amber  { background: #FAEEDA; }
.pv-stat-amber  .pv-stat-ic { color: #854F0B; }
.pv-stat-amber  .pv-stat-lbl { color: #854F0B; }
.pv-stat-teal   { background: #E1F5EE; }
.pv-stat-teal   .pv-stat-ic { color: #0F6E56; }
.pv-stat-teal   .pv-stat-lbl { color: #0F6E56; }
.pv-stat-coral  { background: #FAECE7; }
.pv-stat-coral  .pv-stat-ic { color: #993C1D; }
.pv-stat-coral  .pv-stat-lbl { color: #993C1D; }
.pv-stat-pink   { background: #FBEAF0; }
.pv-stat-pink   .pv-stat-ic { color: #993556; }
.pv-stat-pink   .pv-stat-lbl { color: #993556; }
.pv-stat-purple { background: #EEEDFE; }
.pv-stat-purple .pv-stat-ic { color: #3C3489; }
.pv-stat-purple .pv-stat-lbl { color: #3C3489; }
.pv-stat-blue   { background: #E6F1FB; }
.pv-stat-blue   .pv-stat-ic { color: #0C447C; }
.pv-stat-blue   .pv-stat-lbl { color: #0C447C; }
.pv-stat-red    { background: #FCEBEB; }
.pv-stat-red    .pv-stat-ic { color: #791F1F; }
.pv-stat-red    .pv-stat-lbl { color: #791F1F; }

/* ---- 57.8 Profile Details divider (green band REMOVED) ---- */
.pv-divider {
  text-align: center;
  font-family: var(--font-display, 'Fraunces', serif);
  font-size: 26px;
  font-weight: 700;
  margin: 30px 0 18px;
  color: #333333;
}
.pv-divider .pv-divider-accent { color: #C68A3A; }


/* ---- 57.9 Section cards — gradient heading + new field row layout ---- */
.pv-section {
  background: #fff;
  border-radius: 14px;
  border: 0.5px solid #e5e7eb;
  margin-bottom: 16px;
  overflow: hidden;
  transition: box-shadow 0.2s ease;
}
.pv-section:hover { box-shadow: 0 6px 22px rgba(0,0,0,0.05); }

.pv-sec-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 14px 18px;
  border-bottom: 0.5px solid rgba(0,0,0,0.06);
}

/* Section gradient themes — soft pastels, distinct per section */
.pv-theme-purple .pv-sec-head { background: linear-gradient(135deg, #EEEDFE, #CECBF6); }
.pv-theme-purple .pv-sec-title { color: #26215C; }
.pv-theme-purple .pv-sec-icon  { background: rgba(255,255,255,0.7); color: #3C3489; }

.pv-theme-teal .pv-sec-head { background: linear-gradient(135deg, #E1F5EE, #9FE1CB); }
.pv-theme-teal .pv-sec-title { color: #04342C; }
.pv-theme-teal .pv-sec-icon  { background: rgba(255,255,255,0.7); color: #0F6E56; }

.pv-theme-pink .pv-sec-head { background: linear-gradient(135deg, #FBEAF0, #F4C0D1); }
.pv-theme-pink .pv-sec-title { color: #4B1528; }
.pv-theme-pink .pv-sec-icon  { background: rgba(255,255,255,0.7); color: #993556; }

.pv-theme-blue .pv-sec-head { background: linear-gradient(135deg, #E6F1FB, #B5D4F4); }
.pv-theme-blue .pv-sec-title { color: #042C53; }
.pv-theme-blue .pv-sec-icon  { background: rgba(255,255,255,0.7); color: #0C447C; }

.pv-theme-amber .pv-sec-head { background: linear-gradient(135deg, #FAEEDA, #FAC775); }
.pv-theme-amber .pv-sec-title { color: #412402; }
.pv-theme-amber .pv-sec-icon  { background: rgba(255,255,255,0.7); color: #854F0B; }

.pv-theme-green .pv-sec-head { background: linear-gradient(135deg, #EAF3DE, #C0DD97); }
.pv-theme-green .pv-sec-title { color: #173404; }
.pv-theme-green .pv-sec-icon  { background: rgba(255,255,255,0.7); color: #3B6D11; }

.pv-theme-coral .pv-sec-head { background: linear-gradient(135deg, #FAECE7, #F5C4B3); }
.pv-theme-coral .pv-sec-title { color: #4A1B0C; }
.pv-theme-coral .pv-sec-icon  { background: rgba(255,255,255,0.7); color: #993C1D; }

.pv-theme-grey .pv-sec-head { background: linear-gradient(135deg, #F1EFE8, #D3D1C7); }
.pv-theme-grey .pv-sec-title { color: #2C2C2A; }
.pv-theme-grey .pv-sec-icon  { background: rgba(255,255,255,0.7); color: #444441; }

.pv-sec-title-wrap {
  display: flex;
  align-items: center;
  gap: 10px;
  min-width: 0;
}
.pv-sec-icon {
  width: 28px;
  height: 28px;
  border-radius: 8px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 13px;
}
.pv-sec-title {
  margin: 0;
  font-family: var(--font-display, 'Fraunces', serif);
  font-size: 17px;
  font-weight: 700;
}
.pv-sec-pct {
  display: inline-flex;
  align-items: baseline;
  gap: 4px;
  padding: 4px 12px;
  border-radius: 14px;
  background: rgba(255,255,255,0.85);
  font-weight: 700;
  font-size: 13px;
  flex-shrink: 0;
}
.pv-sec-pct-num { font-family: var(--font-display, 'Fraunces', serif); font-size: 14px; }
.pv-sec-pct-lbl { font-size: 10px; letter-spacing: 0.06em; text-transform: uppercase; opacity: 0.8; }

/* % match band colors (used inside white pill) */
.pv-band-high { color: #B71C22; }
.pv-band-mid  { color: #A8742A; }
.pv-band-low  { color: #991b1b; }
/* Theme-tinted pct text — overrides band when theme is set */
.pv-theme-purple .pv-sec-pct { color: #3C3489; }
.pv-theme-teal   .pv-sec-pct { color: #0F6E56; }
.pv-theme-pink   .pv-sec-pct { color: #993556; }
.pv-theme-blue   .pv-sec-pct { color: #0C447C; }
.pv-theme-amber  .pv-sec-pct { color: #854F0B; }
.pv-theme-green  .pv-sec-pct { color: #3B6D11; }
.pv-theme-coral  .pv-sec-pct { color: #993C1D; }
.pv-theme-grey   .pv-sec-pct { color: #444441; }

.pv-sec-body {
  padding: 14px 18px;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 4px 24px;
}

/* NEW row layout: 44px icon | label+value | match-icon */
.pv-row {
  display: grid;
  grid-template-columns: 44px 1fr auto;
  column-gap: 12px;
  align-items: center;
  padding: 10px 0;
  border-bottom: 0.5px solid rgba(0,0,0,0.06);
}
.pv-sec-body .pv-row:last-child,
.pv-sec-body .pv-row:nth-last-child(2):nth-child(odd) { border-bottom: none; }

/* Big colored icon — spans both rows on the left */
.pv-row-ic {
  grid-row: 1 / 3;
  width: 44px;
  height: 44px;
  border-radius: 10px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 20px;
}
.pv-ic-green  { background: #EAF3DE; color: #3B6D11; }
.pv-ic-amber  { background: #FAEEDA; color: #854F0B; }
.pv-ic-teal   { background: #E1F5EE; color: #0F6E56; }
.pv-ic-coral  { background: #FAECE7; color: #993C1D; }
.pv-ic-pink   { background: #FBEAF0; color: #993556; }
.pv-ic-purple { background: #EEEDFE; color: #3C3489; }
.pv-ic-blue   { background: #E6F1FB; color: #0C447C; }
.pv-ic-grey   { background: #F1EFE8; color: #444441; }

/* Label on top — uppercase small grey */
.pv-row-lbl {
  grid-column: 2;
  grid-row: 1;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: #94a3b8;
  line-height: 1.2;
  align-self: end;
}
/* Value below — bigger ink */
.pv-row-val {
  grid-column: 2;
  grid-row: 2;
  font-size: 14px;
  font-weight: 500;
  color: #333333;
  line-height: 1.3;
  margin-top: 2px;
  align-self: start;
  word-break: break-word;
}
/* Match icon on right — spans both rows */
.pv-row-match {
  grid-column: 3;
  grid-row: 1 / 3;
  align-self: center;
  width: 28px;
  height: 28px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 18px;
  border-radius: 50%;
}
.pv-match-green { color: #D61F26; background: #EAF3DE; }
.pv-match-red   { color: #dc2626; background: #FCEBEB; }
.pv-match-grey  { color: #94a3b8; background: #F1EFE8; }

/* About Me — bio block (no match icon, no field layout) */
.pv-bio {
  font-family: var(--font-display, 'Fraunces', serif);
  font-style: italic;
  font-size: 15px;
  line-height: 1.7;
  color: #475569;
  padding: 8px 0;
  grid-column: 1 / -1;
}
.pv-row-no-icon { grid-template-columns: 44px 1fr; }
.pv-row-no-icon .pv-row-lbl,
.pv-row-no-icon .pv-row-val { grid-column: 2; }


/* ---- 57.10 HOROSCOPE — Sacred Geometry Yantra design ---- */
.pv-horoscope {
  position: relative;
  background: radial-gradient(ellipse at top, #2d1b69 0%, #1e1b4b 45%, #0f0a26 100%);
  color: #fff;
  border-radius: 24px;
  padding: 38px 28px;
  margin: 30px 0 20px;
  overflow: hidden;
  box-shadow: 0 20px 60px rgba(46, 27, 105, 0.4);
}

/* Floating particles */
.pv-horo-particles {
  position: absolute;
  inset: 0;
  pointer-events: none;
  overflow: hidden;
  z-index: 1;
}
.pv-particle {
  position: absolute;
  background: #fbbf24;
  border-radius: 50%;
  box-shadow: 0 0 8px rgba(251, 191, 36, 0.8), 0 0 16px rgba(251, 191, 36, 0.4);
  animation: pvParticleDrift 5s ease-in-out infinite;
}
@keyframes pvParticleDrift {
  0%, 100% { transform: translate(0, 0) scale(1); opacity: 0.6; }
  50%      { transform: translate(20px, -15px) scale(1.4); opacity: 1; }
}

/* Header */
.pv-horo-head {
  text-align: center;
  margin-bottom: 28px;
  position: relative;
  z-index: 3;
}
.pv-horo-title-wrap {
  display: inline-flex;
  align-items: center;
  gap: 14px;
}
.pv-horo-icon {
  width: 50px;
  height: 50px;
  border-radius: 50%;
  background: linear-gradient(135deg, #fbbf24, #f59e0b);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 22px;
  color: #fff;
  box-shadow: 0 4px 18px rgba(251, 191, 36, 0.5);
  animation: pvHoroIconPulse 3s ease infinite;
}
@keyframes pvHoroIconPulse {
  0%, 100% { box-shadow: 0 4px 18px rgba(251, 191, 36, 0.5); transform: scale(1); }
  50%      { box-shadow: 0 4px 28px rgba(251, 191, 36, 0.8); transform: scale(1.06); }
}
.pv-horo-title-text { text-align: left; }
.pv-horo-title {
  font-family: var(--font-display, 'Fraunces', serif);
  font-size: 26px;
  font-weight: 700;
  margin: 0;
}
.pv-horo-desc {
  font-size: 12.5px;
  margin: 2px 0 0;
  opacity: 0.85;
  font-style: italic;
  font-family: var(--font-display, 'Fraunces', serif);
}

/* Yantra stage */
.pv-yantra-stage {
  position: relative;
  width: 100%;
  height: 480px;
  z-index: 2;
  margin: 0 auto 30px;
}

/* Outer dashed orbit */
.pv-yantra-orbit {
  position: absolute;
  top: 50%;
  left: 50%;
  width: 380px;
  height: 380px;
  border-radius: 50%;
  border: 1px dashed rgba(251,191,36,0.35);
  transform: translate(-50%, -50%);
  z-index: 2;
  animation: pvOrbitGlow 4s ease infinite;
}
@keyframes pvOrbitGlow {
  0%, 100% { box-shadow: 0 0 24px rgba(251,191,36,0.05); }
  50%      { box-shadow: 0 0 40px rgba(251,191,36,0.18); }
}

/* Bride/Groom orbiting orbs */
.pv-yantra-orb {
  position: absolute;
  top: 50%;
  left: 50%;
  width: 110px;
  height: 110px;
  margin: -55px 0 0 -55px;
  z-index: 4;
  transform-origin: center;
}
.pv-yantra-bride {
  animation: pvOrbitBride 30s linear infinite;
}
.pv-yantra-groom {
  animation: pvOrbitGroom 30s linear infinite;
}
@keyframes pvOrbitBride {
  from { transform: rotate(0deg)   translateX(190px) rotate(0deg); }
  to   { transform: rotate(360deg) translateX(190px) rotate(-360deg); }
}
@keyframes pvOrbitGroom {
  from { transform: rotate(180deg) translateX(190px) rotate(-180deg); }
  to   { transform: rotate(540deg) translateX(190px) rotate(-540deg); }
}

.pv-yantra-orb-inner {
  width: 100%;
  height: 100%;
  border-radius: 50%;
  background: radial-gradient(circle at 35% 35%, rgba(255,255,255,0.2), rgba(15,11,40,0.95));
  border: 2px solid rgba(251,191,36,0.5);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  box-shadow: 0 0 24px rgba(251,191,36,0.5);
  padding: 6px 4px;
  gap: 2px;
}
.pv-yantra-groom .pv-yantra-orb-inner { border-color: rgba(167,139,250,0.5); box-shadow: 0 0 24px rgba(167,139,250,0.5); }
.pv-yantra-orb-name {
  font-family: var(--font-display, 'Fraunces', serif);
  font-size: 14px;
  font-weight: 700;
  color: #fff;
  letter-spacing: 0.02em;
  line-height: 1;
}
.pv-yantra-bride .pv-yantra-orb-name { color: #fbbf24; text-shadow: 0 0 10px rgba(251,191,36,0.6); }
.pv-yantra-groom .pv-yantra-orb-name { color: #c4b5fd; text-shadow: 0 0 10px rgba(167,139,250,0.6); }
.pv-yantra-orb-label {
  font-size: 9.5px;
  font-weight: 700;
  letter-spacing: 0.16em;
  color: rgba(255,255,255,0.7);
  text-transform: uppercase;
  line-height: 1;
}

/* Central rotating mandala */
.pv-yantra-mandala {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  z-index: 5;
}
.pv-mandala-rotate     { transform-origin: 100px 100px; animation: pvRotate    60s linear infinite; }
.pv-mandala-rotate-rev { transform-origin: 100px 100px; animation: pvRotateRev 90s linear infinite; }
@keyframes pvRotate    { from { transform: rotate(0deg);   } to { transform: rotate(360deg);  } }
@keyframes pvRotateRev { from { transform: rotate(0deg);   } to { transform: rotate(-360deg); } }

.pv-yantra-score {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  pointer-events: none;
  gap: 2px;
}
.pv-yantra-score-tag {
  position: absolute;
  top: 25%;
  left: 0; right: 0;
  text-align: center;
  font-size: 10px;
  letter-spacing: 0.2em;
  font-weight: 700;
  color: rgba(255,255,255,0.75);
  margin: 0;
}
.pv-yantra-score-num {
  font-family: var(--font-display, 'Fraunces', serif);
  font-size: 64px;
  font-weight: 700;
  line-height: 1;
  color: #fbbf24;
  text-shadow: 0 0 24px rgba(251,191,36,0.7);
}
.pv-yantra-score-max {
  position: absolute;
  top: 60%;
  left: 0; right: 0;
  text-align: center;
  font-size: 16px;
  margin: 0;
  opacity: 0.8;
  font-family: var(--font-display, 'Fraunces', serif);
}
.pv-yantra-score-lbl {
  position: absolute;
  bottom: 24%;
  left: 0; right: 0;
  text-align: center;
  font-size: 11px;
  letter-spacing: 0.2em;
  margin-top: 0;
  opacity: 0.9;
  font-weight: 700;
  color: #fbbf24;
}

/* 8 Ashtakoot spokes radiating outward */
.pv-yantra-spokes {
  position: absolute;
  inset: 0;
  z-index: 3;
  pointer-events: none;
}
.pv-yantra-spoke {
  position: absolute;
  top: 50%;
  left: 50%;
  width: 130px;
  height: 0;
  transform-origin: left center;
  transform: rotate(var(--angle)) translateX(140px);
  pointer-events: none;
}
.pv-yantra-spoke-bar {
  position: absolute;
  top: 50%;
  left: 0;
  width: 100%;
  height: 4px;
  margin-top: -2px;
  background: rgba(255,255,255,0.1);
  border-radius: 2px;
  overflow: hidden;
  pointer-events: auto;
}
.pv-yantra-spoke-fill {
  height: 100%;
  width: 0;
  border-radius: 2px;
  transition: width 1.4s cubic-bezier(0.4,0,0.2,1) var(--delay);
  box-shadow: 0 0 10px currentColor;
}
.pv-yantra-spoke.pv-band-high .pv-yantra-spoke-fill { background: #D61F26; color: #D61F26; }
.pv-yantra-spoke.pv-band-mid  .pv-yantra-spoke-fill { background: #fbbf24; color: #fbbf24; }
.pv-yantra-spoke.pv-band-low  .pv-yantra-spoke-fill { background: #ef4444; color: #ef4444; }

.pv-yantra-spoke-info {
  position: absolute;
  left: calc(100% + 10px);
  top: 50%;
  transform: translateY(-50%);
  white-space: nowrap;
  pointer-events: auto;
  text-align: left;
  background: rgba(15,11,40,0.7);
  padding: 6px 10px;
  border-radius: 8px;
  border: 1px solid rgba(255,255,255,0.1);
  backdrop-filter: blur(4px);
}
/* Spokes on the left half — flip text to be readable + on the other side */
.pv-yantra-spoke[style*="--angle: 135deg"] .pv-yantra-spoke-info,
.pv-yantra-spoke[style*="--angle: 180deg"] .pv-yantra-spoke-info,
.pv-yantra-spoke[style*="--angle: 225deg"] .pv-yantra-spoke-info {
  transform: translateY(-50%) rotate(180deg);
  left: auto;
  right: calc(100% + 10px);
  text-align: right;
}
.pv-yantra-spoke-name {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.04em;
  color: #fff;
}
.pv-yantra-spoke-score {
  font-family: var(--font-display, 'Fraunces', serif);
  font-size: 11.5px;
  font-weight: 700;
  margin-top: 1px;
}
.pv-yantra-spoke.pv-band-high .pv-yantra-spoke-score { color: #5DCAA5; }
.pv-yantra-spoke.pv-band-mid  .pv-yantra-spoke-score { color: #fbbf24; }
.pv-yantra-spoke.pv-band-low  .pv-yantra-spoke-score { color: #f87171; }
.pv-yantra-spoke-desc {
  font-size: 9.5px;
  letter-spacing: 0.02em;
  opacity: 0.65;
  margin-top: 1px;
}

/* Bride / Groom info cards */
.pv-horo-cards {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  gap: 18px;
  align-items: center;
  margin-top: 6px;
  margin-bottom: 22px;
  position: relative;
  z-index: 3;
}
.pv-horo-card {
  background: rgba(255,255,255,0.06);
  border: 1px solid rgba(255,255,255,0.12);
  border-radius: 16px;
  padding: 18px 20px;
  text-align: center;
  backdrop-filter: blur(8px);
}
.pv-horo-card-label {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.18em;
  opacity: 0.7;
  margin-bottom: 8px;
}
.pv-horo-card-name {
  font-family: var(--font-display, 'Fraunces', serif);
  font-size: 28px;
  font-weight: 700;
  letter-spacing: 0.02em;
  margin-bottom: 4px;
}
.pv-horo-card-bride .pv-horo-card-name { color: #fbbf24; text-shadow: 0 0 18px rgba(251,191,36,0.4); }
.pv-horo-card-groom .pv-horo-card-name { color: #c4b5fd; text-shadow: 0 0 18px rgba(167,139,250,0.4); }
.pv-horo-card-pada {
  font-family: var(--font-display, 'Fraunces', serif);
  font-style: italic;
  font-size: 14px;
  opacity: 0.85;
  margin-bottom: 12px;
}
.pv-horo-card-meta {
  display: flex;
  justify-content: center;
  gap: 14px;
  font-size: 11px;
  opacity: 0.7;
  flex-wrap: wrap;
}
.pv-horo-card-meta span { display: inline-flex; align-items: center; gap: 4px; }
.pv-horo-card-meta i { font-size: 12px; }

.pv-horo-card-divider {
  text-align: center;
}
.pv-horo-card-verdict {
  font-family: var(--font-display, 'Fraunces', serif);
  font-size: 32px;
  font-weight: 700;
  padding: 10px 24px;
  border-radius: 50%;
  border: 2px solid;
  width: 80px;
  height: 80px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.pv-horo-card-verdict.pv-band-high { color: #5DCAA5; border-color: #5DCAA5; box-shadow: 0 0 20px rgba(93,202,165,0.4); }
.pv-horo-card-verdict.pv-band-mid  { color: #fbbf24; border-color: #fbbf24; box-shadow: 0 0 20px rgba(251,191,36,0.4); }
.pv-horo-card-verdict.pv-band-low  { color: #f87171; border-color: #f87171; box-shadow: 0 0 20px rgba(248,113,113,0.4); }
.pv-horo-card-verdict-lbl {
  font-size: 10px;
  letter-spacing: 0.18em;
  opacity: 0.75;
  margin-top: 8px;
  font-weight: 700;
}

/* Note */
.pv-horo-note {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  background: rgba(251, 191, 36, 0.1);
  border: 1px solid rgba(251, 191, 36, 0.4);
  border-radius: 12px;
  padding: 14px 18px;
  font-size: 12.5px;
  line-height: 1.6;
  position: relative;
  z-index: 3;
  box-shadow: 0 0 24px rgba(251,191,36,0.08);
}
.pv-horo-note i {
  color: #fbbf24;
  font-size: 18px;
  flex-shrink: 0;
  margin-top: 1px;
}
.pv-horo-note strong { color: #fbbf24; }

/* ---- 57.11 Similar profiles ---- */
.pv-similar {
  margin: 30px 0 0;
}
.pv-similar-head { text-align: center; margin-bottom: 22px; }
.pv-similar-title {
  font-family: var(--font-display, 'Fraunces', serif);
  font-size: 24px;
  font-weight: 700;
  margin: 0 0 4px;
  color: #333333;
}
.pv-similar-desc { font-size: 13px; color: #475569; margin: 0; }
.pv-similar-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 16px;
}
.pv-sim-card {
  background: #fff;
  border-radius: 14px;
  border: 1px solid #e5e7eb;
  text-decoration: none;
  color: inherit;
  overflow: hidden;
  transition: all 0.25s ease;
  display: block;
}
.pv-sim-card:hover {
  transform: translateY(-4px);
  box-shadow: 0 12px 28px rgba(0,0,0,0.10);
  border-color: #D61F26;
}
.pv-sim-photo {
  position: relative;
  aspect-ratio: 4/5;
  overflow: hidden;
}
.pv-sim-photo img { width: 100%; height: 100%; object-fit: cover; }
.pv-sim-match {
  position: absolute;
  top: 8px;
  right: 8px;
  padding: 3px 8px;
  border-radius: 10px;
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: 0.04em;
}
.pv-sim-body { padding: 12px 14px; }
.pv-sim-name {
  font-family: var(--font-display, 'Fraunces', serif);
  font-size: 16px;
  font-weight: 700;
  margin-bottom: 6px;
}
.pv-sim-detail {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 12px;
  color: #475569;
  padding: 3px 0;
}
.pv-sim-detail i { color: #D61F26; font-size: 12px; width: 14px; }

/* ---- 57.12 Lightbox (same as profile2) ---- */
.pv-lightbox {
  position: fixed;
  inset: 0;
  background: rgba(10, 10, 12, 0.94);
  z-index: 9999;
  display: none;
  align-items: center;
  justify-content: center;
  backdrop-filter: blur(6px);
}
.pv-lightbox.open { display: flex; }
.pv-lightbox-img { max-width: 90vw; max-height: 88vh; object-fit: contain; border-radius: 10px; }
.pv-lightbox-close, .pv-lightbox-nav {
  position: absolute;
  width: 44px;
  height: 44px;
  border-radius: 50%;
  background: rgba(255,255,255,0.12);
  border: 1.5px solid rgba(255,255,255,0.25);
  color: #fff;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 18px;
  transition: all 0.2s ease;
  font-family: inherit;
}
.pv-lightbox-close { top: 24px; right: 24px; }
.pv-lightbox-nav.prev { left: 24px; top: 50%; transform: translateY(-50%); }
.pv-lightbox-nav.next { right: 24px; top: 50%; transform: translateY(-50%); }
.pv-lightbox-close:hover, .pv-lightbox-nav:hover { background: #fff; color: #333333; transform: scale(1.08); }
.pv-lightbox-nav.prev:hover { transform: translateY(-50%) scale(1.08); }
.pv-lightbox-nav.next:hover { transform: translateY(-50%) scale(1.08); }
.pv-lightbox-counter {
  position: absolute;
  bottom: 24px;
  left: 50%;
  transform: translateX(-50%);
  background: rgba(255,255,255,0.14);
  color: #fff;
  padding: 7px 16px;
  border-radius: 14px;
  font-size: 12.5px;
  font-weight: 600;
}

/* ---- 57.13 Mobile responsive ---- */
@media (max-width: 991px) {
  .pv-grid { grid-template-columns: 240px 1fr; gap: 18px; }
  .pv-name { font-size: 24px; }
  .pv-stats-grid { grid-template-columns: repeat(3, 1fr); }
  .pv-sec-body { grid-template-columns: 1fr; }
  .pv-similar-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 767px) {
  .pv-hero { padding: 16px; }
  .pv-grid { grid-template-columns: 1fr; gap: 16px; }
  .pv-demo-bar { position: static; margin-bottom: 12px; }
  .pv-photo-wrap { max-width: 320px; margin: 0 auto; }
  .pv-thumbs-wrap { max-width: 320px; margin: 10px auto 0; }
  .pv-name { font-size: 22px; }
  .pv-actions { gap: 6px; }
  .pv-btn { flex: 1; justify-content: center; padding: 9px 10px; font-size: 12px; min-width: calc(50% - 3px); }
  .pv-stats-grid { grid-template-columns: repeat(3, 1fr); gap: 8px; }
  .pv-horoscope { padding: 18px 10px; }
  .pv-yantra-stage { height: 360px; }
  .pv-yantra-orbit { width: 250px; height: 250px; }
  .pv-yantra-mandala svg { width: 220px; height: 220px; }
  .pv-yantra-orb { width: 84px; height: 84px; margin: -42px 0 0 -42px; }
  @keyframes pvOrbitBride {
    from { transform: rotate(0deg)   translateX(125px) rotate(0deg);    }
    to   { transform: rotate(360deg) translateX(125px) rotate(-360deg); }
  }
  @keyframes pvOrbitGroom {
    from { transform: rotate(180deg) translateX(125px) rotate(-180deg); }
    to   { transform: rotate(540deg) translateX(125px) rotate(-540deg); }
  }
  .pv-yantra-spoke { width: 100px; transform: rotate(var(--angle)) translateX(120px); }
  .pv-yantra-spoke-info { padding: 4px 6px; font-size: 10px; }
  .pv-yantra-spoke-name { font-size: 9.5px; }
  .pv-yantra-spoke-score { font-size: 10px; }
  .pv-yantra-spoke-desc { display: none; }
  .pv-horo-cards { grid-template-columns: 1fr; gap: 14px; }
  .pv-horo-title { font-size: 20px; }
  .pv-horo-card-name { font-size: 22px; }
  .pv-yantra-score-num { font-size: 44px; }
}
@media (max-width: 480px) {
  .pv-stats-grid { grid-template-columns: repeat(2, 1fr); }
  .pv-similar-grid { grid-template-columns: 1fr; }
  .pv-sec-body { padding: 12px; }
  .pv-row-ic { width: 40px; height: 40px; font-size: 18px; }
  .pv-row { grid-template-columns: 40px 1fr auto; column-gap: 10px; }
}


/* =========================================================
   57.14 HOROSCOPE POLISH — bigger fonts, help button + modal
   ========================================================= */

/* Header layout: better responsive */
.pv-horo-title-wrap {
  flex-wrap: wrap;
  justify-content: center;
  text-align: center;
  max-width: 100%;
}
.pv-horo-title-text {
  text-align: left;
  min-width: 0;
}

/* Help (?) button beside Horoscope title */
.pv-horo-help-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  margin-left: 10px;
  border-radius: 50%;
  background: rgba(251, 191, 36, 0.2);
  border: 1.5px solid rgba(251, 191, 36, 0.5);
  color: #fbbf24;
  font-size: 14px;
  cursor: pointer;
  font-family: inherit;
  transition: all 0.2s ease;
  vertical-align: middle;
}
.pv-horo-help-btn:hover {
  background: #fbbf24;
  color: #1e1b4b;
  transform: scale(1.1);
}

/* Bigger spoke fonts */
.pv-yantra-spoke-name { font-size: 12px !important; }
.pv-yantra-spoke-score { font-size: 13px !important; }
.pv-yantra-spoke-desc { font-size: 10.5px; }

/* Bigger Bride/Groom info card names */
.pv-horo-card-name { font-size: 32px; }
.pv-horo-card-pada { font-size: 15px; }
.pv-horo-card-verdict { font-size: 36px; width: 88px; height: 88px; }


/* Help modal — opens on (?) click */
.pv-horo-modal {
  position: fixed;
  inset: 0;
  background: rgba(15, 11, 40, 0.85);
  z-index: 10000;
  display: none;
  align-items: center;
  justify-content: center;
  padding: 20px;
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  animation: pvHoroModalFade 0.25s ease;
}
.pv-horo-modal.open { display: flex; }
@keyframes pvHoroModalFade {
  from { opacity: 0; }
  to   { opacity: 1; }
}

.pv-horo-modal-card {
  background: #fff;
  color: #333333;
  border-radius: 18px;
  max-width: 640px;
  width: 100%;
  max-height: 90vh;
  display: flex;
  flex-direction: column;
  box-shadow: 0 30px 80px rgba(0, 0, 0, 0.5), 0 0 0 1px rgba(251, 191, 36, 0.3);
  animation: pvHoroModalSlide 0.35s cubic-bezier(0.4, 0, 0.2, 1);
}
@keyframes pvHoroModalSlide {
  from { opacity: 0; transform: translateY(20px) scale(0.96); }
  to   { opacity: 1; transform: translateY(0)    scale(1);    }
}

.pv-horo-modal-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 20px 24px;
  border-bottom: 1px solid #f1f5f9;
  background: linear-gradient(135deg, #fef3c7, #fed7aa);
  border-radius: 18px 18px 0 0;
  flex-shrink: 0;
}
.pv-horo-modal-title-wrap {
  display: flex;
  align-items: center;
  gap: 12px;
  min-width: 0;
}
.pv-horo-modal-icon {
  width: 40px;
  height: 40px;
  border-radius: 50%;
  background: linear-gradient(135deg, #fbbf24, #f59e0b);
  color: #fff;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 18px;
  flex-shrink: 0;
}
.pv-horo-modal-title {
  font-family: var(--font-display, 'Fraunces', serif);
  font-size: 18px;
  font-weight: 700;
  margin: 0;
  color: #78350f;
}
.pv-horo-modal-close {
  width: 36px;
  height: 36px;
  border-radius: 50%;
  background: #fff;
  border: 1.5px solid #e5e7eb;
  color: #475569;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 14px;
  transition: all 0.2s ease;
  flex-shrink: 0;
  font-family: inherit;
}
.pv-horo-modal-close:hover {
  background: #dc2626;
  color: #fff;
  border-color: #dc2626;
  transform: rotate(90deg);
}

.pv-horo-modal-body {
  padding: 24px;
  overflow-y: auto;
  flex: 1;
}

.pv-horo-modal-section {
  margin-bottom: 22px;
}
.pv-horo-modal-section:last-child { margin-bottom: 0; }
.pv-horo-modal-section h4 {
  font-family: var(--font-display, 'Fraunces', serif);
  font-size: 16px;
  font-weight: 700;
  margin: 0 0 8px;
  color: #333333;
  display: inline-flex;
  align-items: center;
  gap: 8px;
}
.pv-horo-modal-section p {
  font-size: 13.5px;
  line-height: 1.65;
  color: #475569;
  margin: 0;
}

.pv-horo-modal-list {
  list-style: none;
  padding: 0;
  margin: 0;
}
.pv-horo-modal-list li {
  padding: 8px 0;
  font-size: 13px;
  line-height: 1.5;
  color: #475569;
  border-bottom: 0.5px solid #f1f5f9;
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 8px;
}
.pv-horo-modal-list li:last-child { border-bottom: none; }
.pv-horo-modal-list strong { color: #333333; min-width: 110px; font-weight: 700; }
.pv-horo-modal-pts {
  background: #fef3c7;
  color: #78350f;
  padding: 1px 8px;
  border-radius: 8px;
  font-size: 11px;
  font-weight: 700;
}

.pv-horo-modal-bands {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
  gap: 8px;
}
.pv-horo-modal-band {
  padding: 10px 12px;
  border-radius: 10px;
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.pv-horo-modal-band.pv-band-low  { background: #fee2e2; color: #991b1b; }
.pv-horo-modal-band.pv-band-mid  { background: #fef3c7; color: #92400e; }
.pv-horo-modal-band.pv-band-high { background: #dcfce7; color: #14532d; }
.pv-horo-modal-band-num {
  font-family: var(--font-display, 'Fraunces', serif);
  font-size: 18px;
  font-weight: 700;
  line-height: 1;
}
.pv-horo-modal-band span:not(.pv-horo-modal-band-num) {
  font-size: 11.5px;
  font-weight: 600;
}

.pv-horo-modal-warning {
  background: #fef3c7;
  border: 1px solid #fcd34d;
  border-radius: 10px;
  padding: 14px 16px;
}
.pv-horo-modal-warning h4 {
  color: #78350f;
  margin-bottom: 6px;
}
.pv-horo-modal-warning h4 i {
  color: #d97706;
  font-size: 14px;
}
.pv-horo-modal-warning p { color: #78350f; }


/* Mobile responsive for horoscope header + modal */
@media (max-width: 767px) {
  .pv-horo-head { margin-bottom: 22px; }
  .pv-horo-title-wrap { gap: 10px; }
  .pv-horo-icon { width: 42px; height: 42px; font-size: 18px; }
  .pv-horo-title { font-size: 18px; line-height: 1.3; }
  .pv-horo-desc { font-size: 11.5px; }
  .pv-horo-help-btn { width: 24px; height: 24px; font-size: 11px; margin-left: 6px; }

  .pv-horo-modal-card { max-height: 95vh; border-radius: 14px 14px 0 0; align-self: flex-end; }
  .pv-horo-modal { padding: 0; align-items: flex-end; }
  .pv-horo-modal-head { padding: 16px 18px; border-radius: 14px 14px 0 0; }
  .pv-horo-modal-title { font-size: 15px; }
  .pv-horo-modal-body { padding: 18px; }
  .pv-horo-modal-list strong { min-width: 90px; }

  /* Bigger orb on mobile too */
  .pv-yantra-orb { width: 96px; height: 96px; margin: -48px 0 0 -48px; }
  .pv-yantra-orb-name { font-size: 12px; }
  .pv-yantra-orb-label { font-size: 8.5px; }

  /* Bigger center score on mobile */
  .pv-yantra-score-tag { font-size: 9px; letter-spacing: 0.16em; }
  .pv-yantra-score-num { font-size: 48px !important; }
  .pv-yantra-score-max { font-size: 13px; }
  .pv-yantra-score-lbl { font-size: 10px; }
}
@media (max-width: 480px) {
  .pv-horo-title-wrap { flex-direction: column; }
  .pv-horo-title-text { text-align: center; }
  .pv-horo-title { font-size: 17px; }
  .pv-horo-card-name { font-size: 24px; }
}
/* =========================================================================
   PERFECTMARRY v2.4 — NEW SECTIONS
   - Our Process (numbered medallion timeline)
   - Our Services (premium service grid)
   - Watch our TVC (video promotional card)
   - Service details page (banner + content + enquiry modal)
   ========================================================================= */


/* =========================================================
   1) OUR PROCESS v2 — Innovative floating-cards design
   ========================================================= */
.process-v2-section {
  position: relative;
  background:
    radial-gradient(1200px 400px at 10% 0%, rgba(214, 31, 38, 0.06) 0%, transparent 60%),
    radial-gradient(800px 300px at 90% 100%, rgba(198, 138, 58, 0.06) 0%, transparent 60%),
    var(--bg-page);
  overflow: hidden;
  padding-top: 70px;
  padding-bottom: 90px;
}
.process-v2-section::before {
  content: '';
  position: absolute;
  top: 30px; left: -60px;
  width: 200px; height: 200px;
  background: radial-gradient(circle, rgba(214, 31, 38, 0.08), transparent 70%);
  border-radius: 50%;
  pointer-events: none;
}
.process-v2-section::after {
  content: '';
  position: absolute;
  bottom: 60px; right: -80px;
  width: 240px; height: 240px;
  background: radial-gradient(circle, rgba(47, 74, 125, 0.08), transparent 70%);
  border-radius: 50%;
  pointer-events: none;
}

/* Connector path - SVG dashed gradient between cards */
.pv2-path {
  position: absolute;
  top: 320px;
  left: 0;
  width: 100%;
  height: 120px;
  pointer-events: none;
  z-index: 0;
  opacity: 0.55;
  display: none;
}
@media (min-width: 992px) {
  .pv2-path { display: block; }
}

/* Grid layout */
.pv2-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  /* Vertical gap must be > orb-height (orbs float -38px above each card,
     so spacing of ~70px is needed for clean separation on mobile) */
  gap: 72px 14px;
  position: relative;
  z-index: 1;
  /* Generous top margin to clear the floating orbs (orbs sit -38px above cards) */
  margin-top: 80px;
}
@media (min-width: 576px) {
  .pv2-grid { grid-template-columns: repeat(2, 1fr); gap: 72px 28px; margin-top: 90px; }
}
@media (min-width: 992px) {
  .pv2-grid { grid-template-columns: repeat(4, 1fr); gap: 22px; margin-top: 100px; }
}

/* Floating card */
.pv2-card {
  position: relative;
  background: #fff;
  border-radius: 22px;
  padding: 70px 26px 32px;
  text-align: center;
  box-shadow:
    0 4px 12px rgba(0, 0, 0, 0.04),
    0 16px 40px rgba(0, 0, 0, 0.06);
  border: 1px solid rgba(0, 0, 0, 0.04);
  transition: transform 0.45s var(--ease), box-shadow 0.45s var(--ease);
  overflow: visible;
  isolation: isolate;
}
@media (min-width: 992px) {
  /* Staggered vertical offset for innovative wave layout */
  .pv2-card[data-pv2-step="2"] { transform: translateY(28px); }
  .pv2-card[data-pv2-step="4"] { transform: translateY(28px); }
}

.pv2-card:hover {
  transform: translateY(-8px);
  box-shadow:
    0 8px 18px rgba(0, 0, 0, 0.05),
    0 24px 60px rgba(0, 0, 0, 0.1);
}
@media (min-width: 992px) {
  .pv2-card[data-pv2-step="2"]:hover,
  .pv2-card[data-pv2-step="4"]:hover {
    transform: translateY(20px);
  }
}

/* Per-step accent themes via CSS vars */
.pv2-card--red    { --pv-c1: #D61F26; --pv-c2: #F04A50; }
.pv2-card--luxury { --pv-c1: #D61F26; --pv-c2: #C68A3A; }
.pv2-card--gold   { --pv-c1: #C68A3A; --pv-c2: #E5B76E; }
.pv2-card--blue   { --pv-c1: #2F4A7D; --pv-c2: #4A6BA0; }

/* Big number watermark inside card */
.pv2-num {
  position: absolute;
  top: 12px;
  right: 18px;
  font-family: var(--font-display);
  font-size: 64px;
  font-weight: 800;
  line-height: 1;
  background: linear-gradient(135deg, var(--pv-c1), var(--pv-c2));
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  opacity: 0.18;
  letter-spacing: -0.04em;
  pointer-events: none;
  user-select: none;
}

/* Floating gradient orb with icon — sits half-above the card top */
.pv2-orb {
  position: absolute;
  top: -38px;
  left: 50%;
  transform: translateX(-50%);
  width: 86px;
  height: 86px;
  border-radius: 50%;
  background: linear-gradient(135deg, var(--pv-c1), var(--pv-c2));
  display: grid;
  place-items: center;
  color: #fff;
  font-size: 34px;
  box-shadow:
    0 8px 24px rgba(0, 0, 0, 0.15),
    inset 0 -3px 10px rgba(0, 0, 0, 0.18),
    inset 0 3px 10px rgba(255, 255, 255, 0.25);
  z-index: 2;
  transition: transform 0.5s var(--ease), box-shadow 0.5s var(--ease);
}
.pv2-card:hover .pv2-orb {
  transform: translateX(-50%) translateY(-6px) rotate(-6deg) scale(1.05);
  box-shadow:
    0 14px 34px rgba(0, 0, 0, 0.2),
    inset 0 -3px 10px rgba(0, 0, 0, 0.18),
    inset 0 3px 10px rgba(255, 255, 255, 0.3);
}
/* PNG icon inside the gradient orb */
.pv2-orb-img {
  width: 50px;
  height: 50px;
  object-fit: contain;
  filter: drop-shadow(0 2px 4px rgba(0,0,0,0.2));
  position: relative;
  z-index: 1;
}

/* Pulsing concentric ring around the orb */
.pv2-orb-ring {
  position: absolute;
  inset: -10px;
  border-radius: 50%;
  border: 2px dashed var(--pv-c1);
  opacity: 0.4;
  animation: pv2RingSpin 14s linear infinite;
}
@keyframes pv2RingSpin {
  to { transform: rotate(360deg); }
}

/* Heading + tagline */
.pv2-heading {
  font-family: var(--font-display);
  font-size: 19px;
  font-weight: 700;
  margin: 4px 0 6px;
  color: var(--ink);
  letter-spacing: -0.01em;
}
.pv2-tag {
  font-size: 13px;
  color: var(--slate);
  margin: 0 0 18px;
  letter-spacing: 0.02em;
}

/* Bottom accent bar - gradient that grows on hover */
.pv2-accent {
  position: absolute;
  bottom: 0;
  left: 50%;
  transform: translateX(-50%);
  height: 4px;
  width: 50px;
  background: linear-gradient(90deg, var(--pv-c1), var(--pv-c2));
  border-radius: 4px 4px 0 0;
  transition: width 0.5s var(--ease);
}
.pv2-card:hover .pv2-accent {
  width: 80%;
}

/* Reveal animation entry */
.pv2-card.reveal {
  opacity: 0;
  transform: translateY(40px);
}
.pv2-card.reveal.in-view,
.pv2-card.reveal.is-visible {
  opacity: 1;
  transform: translateY(0);
}
@media (min-width: 992px) {
  .pv2-card[data-pv2-step="2"].reveal.in-view,
  .pv2-card[data-pv2-step="2"].reveal.is-visible,
  .pv2-card[data-pv2-step="4"].reveal.in-view,
  .pv2-card[data-pv2-step="4"].reveal.is-visible {
    transform: translateY(28px);
  }
}
.pv2-card[data-pv2-step="1"] { transition-delay: 0s; }
.pv2-card[data-pv2-step="2"] { transition-delay: 0.12s; }
.pv2-card[data-pv2-step="3"] { transition-delay: 0.24s; }
.pv2-card[data-pv2-step="4"] { transition-delay: 0.36s; }

/* Mobile vertical timeline accent: thin vertical line behind cards */
@media (max-width: 575px) {
  .pv2-grid::before {
    content: none;
    position: absolute;
    left: 50%;
    top: 0;
    bottom: 0;
    width: 2px;
    background: linear-gradient(180deg, #D61F26, #C68A3A 50%, #2F4A7D);
    opacity: 0.18;
    transform: translateX(-50%);
    z-index: 0;
  }
}


/* Highlight color helper for h2 (red brand version) */
.hl-red {
  color: var(--brand-red);
  position: relative;
  display: inline-block;
}
.hl-red::after {
  content: '';
  position: absolute;
  left: 4%;
  right: 4%;
  bottom: -2px;
  height: 4px;
  background: var(--grad-gold);
  border-radius: 2px;
  opacity: 0.35;
}


/* =========================================================
   2) OUR SERVICES — INNOVATIVE v2 DESIGN
   Tilted glass cards · curved image clip · glass-morphism orbs
   3D perspective hover · per-card brand-color variants
   ========================================================= */
.services-section {
  background:
    radial-gradient(900px 400px at 50% 0%, rgba(214, 31, 38, 0.04) 0%, transparent 60%),
    radial-gradient(600px 300px at 100% 100%, rgba(198, 138, 58, 0.05) 0%, transparent 60%),
    #fff;
  position: relative;
  padding: 90px 0 100px;
  overflow: hidden;
}
.services-section::before {
  content: '';
  position: absolute;
  top: 80px; right: -100px;
  width: 280px; height: 280px;
  background: radial-gradient(circle, rgba(47, 74, 125, 0.06), transparent 70%);
  border-radius: 50%;
  pointer-events: none;
}

.services-grid { 
  margin-top: 50px;
  perspective: 1400px;
}

/* ===== Card: tilted glass-morphism container ===== */
.service-card {
  display: block;
  background: #fff;
  border-radius: 24px;
  overflow: hidden;
  text-decoration: none;
  border: 1px solid rgba(0, 0, 0, 0.06);
  box-shadow:
    0 4px 12px rgba(0, 0, 0, 0.04),
    0 16px 36px rgba(0, 0, 0, 0.06);
  transition: transform 0.55s var(--ease), box-shadow 0.55s var(--ease), border-color 0.4s ease;
  position: relative;
  height: 100%;
  isolation: isolate;
  /* Per-card accent (overridden via nth-child below) */
  --svc-c1: #D61F26;
  --svc-c2: #F04A50;
}

/* 3D tilt on hover — premium feel */
.service-card:hover {
  transform: translateY(-10px) rotateX(2deg) rotateY(-1deg);
  box-shadow:
    0 8px 18px rgba(0, 0, 0, 0.06),
    0 30px 60px rgba(214, 31, 38, 0.18);
  border-color: rgba(214, 31, 38, 0.25);
  color: inherit;
}

/* Per-card accent variants — fixed per service (matches JPG background)
   Each service has its own permanent color identity via href targeting. */
.service-card                               { --svc-c1: #D61F26; --svc-c2: #F04A50; }   /* default Red */
.service-card[href*="matchmaker"]           { --svc-c1: #D61F26; --svc-c2: #F04A50; }   /* Red - love */
.service-card[href*="astrology"]            { --svc-c1: #D61F26; --svc-c2: #C68A3A; }   /* Luxury - mystical */
.service-card[href*="verification"]         { --svc-c1: #2F4A7D; --svc-c2: #4A6BA0; }   /* Blue - trust */
.service-card[href*="photoshoot"]           { --svc-c1: #C68A3A; --svc-c2: #E5B76E; }   /* Gold - glamour */
.service-card[href*="counseling"]           { --svc-c1: #D61F26; --svc-c2: #F04A50; }   /* Red - relationship */
.service-card[href*="cards"]                { --svc-c1: #C68A3A; --svc-c2: #E5B76E; }   /* Gold - elegant */
.service-card[href*="honeymoon"]            { --svc-c1: #2F4A7D; --svc-c2: #4A6BA0; }   /* Blue - travel/sky */
.service-card[href*="background-check"]     { --svc-c1: #D61F26; --svc-c2: #C68A3A; }   /* Luxury - premium */

/* ===== Image with curved-bottom clip + parallax ===== */
.service-img {
  position: relative;
  aspect-ratio: 4 / 3;
  overflow: hidden;
  /* JPG illustrations carry their own brand-color gradient background */
  background: var(--bg-soft);
  /* Curved bottom edge that flows into the body */
  clip-path: polygon(0 0, 100% 0, 100% calc(100% - 28px), 50% 100%, 0 calc(100% - 28px));
}
.service-img img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 0.7s var(--ease);
}
.service-card:hover .service-img img {
  transform: scale(1.12);
}

/* Color-tinted gradient overlay for brand consistency */
.service-img::after {
  /* Subtle dark fade at bottom for badge/icon legibility */
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, transparent 60%, rgba(0, 0, 0, 0.18) 100%);
  pointer-events: none;
  transition: opacity 0.4s ease;
}
.service-card:hover .service-img::after {
  opacity: 0.7;
}

/* Decorative shine sweep on hover */
.service-img::before {
  content: '';
  position: absolute;
  top: 0; left: -100%;
  width: 60%; height: 100%;
  background: linear-gradient(105deg, transparent 30%, rgba(255, 255, 255, 0.18) 50%, transparent 70%);
  pointer-events: none;
  z-index: 1;
  transition: left 0.8s ease;
}
.service-card:hover .service-img::before { left: 130%; }

/* ===== Floating badge - top-left, gradient pill ===== */
.service-badge {
  position: absolute;
  top: 14px;
  left: 14px;
  background: linear-gradient(135deg, var(--svc-c1), var(--svc-c2));
  color: #fff;
  font-size: 11px;
  font-weight: 700;
  padding: 6px 13px;
  border-radius: 999px;
  display: inline-flex;
  align-items: center;
  gap: 5px;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  z-index: 3;
  box-shadow: 0 6px 14px rgba(0, 0, 0, 0.25);
  backdrop-filter: blur(4px);
  border: 1px solid rgba(255, 255, 255, 0.3);
}
.service-badge i { font-size: 11px; }

/* ===== Body with floating glass-morphism icon orb ===== */
.service-body {
  padding: 38px 20px 22px;
  position: relative;
}

/* Glass-morphism icon orb — sits at curved boundary */
.service-icon-wrap {
  position: absolute;
  top: -32px;
  left: 50%;
  transform: translateX(-50%);
  width: 64px;
  height: 64px;
  border-radius: 50%;
  background: linear-gradient(135deg, var(--svc-c1), var(--svc-c2));
  color: #fff;
  display: grid;
  place-items: center;
  font-size: 26px;
  box-shadow:
    0 10px 24px rgba(0, 0, 0, 0.22),
    inset 0 -3px 8px rgba(0, 0, 0, 0.18),
    inset 0 3px 8px rgba(255, 255, 255, 0.3);
  border: 4px solid #fff;
  z-index: 4;
  transition: transform 0.5s var(--ease);
}

/* Rotating dashed ring around the orb */
.service-icon-wrap::before {
  content: '';
  position: absolute;
  inset: -10px;
  border-radius: 50%;
  border: 2px dashed var(--svc-c1);
  opacity: 0.4;
  animation: svcRingSpin 18s linear infinite;
  pointer-events: none;
}
@keyframes svcRingSpin {
  to { transform: rotate(360deg); }
}

.service-card:hover .service-icon-wrap {
  transform: translateX(-50%) translateY(-4px) rotate(-8deg) scale(1.08);
}

/* PNG icon inside service-icon-wrap */
.service-icon-img {
  width: 38px;
  height: 38px;
  object-fit: contain;
  filter: drop-shadow(0 2px 4px rgba(0,0,0,0.18));
  position: relative;
  z-index: 1;
}
@media (max-width: 575.98px) {
  .service-icon-img { width: 28px; height: 28px; }
}

/* ===== Title and CTA ===== */
.service-body h5 {
  font-family: var(--font-display);
  font-weight: 700;
  color: var(--ink);
  margin: 0 0 10px;
  font-size: 18px;
  line-height: 1.3;
  text-align: center;
  letter-spacing: -0.01em;
  position: relative;
}
/* Underline accent below title */
.service-body h5::after {
  content: '';
  display: block;
  width: 36px;
  height: 3px;
  background: linear-gradient(90deg, var(--svc-c1), var(--svc-c2));
  border-radius: 3px;
  margin: 8px auto 0;
  transition: width 0.5s var(--ease);
}
.service-card:hover .service-body h5::after { width: 60px; }

/* Pill-style CTA */
.service-cta {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  width: 100%;
  margin-top: 12px;
  padding: 8px 14px;
  font-size: 13px;
  font-weight: 600;
  color: var(--svc-c1);
  background: color-mix(in srgb, var(--svc-c1) 8%, transparent);
  border: 1px solid color-mix(in srgb, var(--svc-c1) 25%, transparent);
  border-radius: 999px;
  transition: all 0.4s var(--ease);
  letter-spacing: 0.02em;
}
.service-cta i {
  transition: transform 0.4s var(--ease);
}
.service-card:hover .service-cta {
  background: linear-gradient(135deg, var(--svc-c1), var(--svc-c2));
  color: #fff;
  border-color: transparent;
  box-shadow: 0 6px 14px color-mix(in srgb, var(--svc-c1) 35%, transparent);
}
.service-card:hover .service-cta i {
  transform: translateX(4px);
}

/* ===== Reveal animation for cards ===== */
.services-grid > [class*="col-"] { 
  transition-delay: calc(var(--svc-delay, 0) * 0.08s);
}
.services-grid > [class*="col-"]:nth-child(1) { --svc-delay: 0; }
.services-grid > [class*="col-"]:nth-child(2) { --svc-delay: 1; }
.services-grid > [class*="col-"]:nth-child(3) { --svc-delay: 2; }
.services-grid > [class*="col-"]:nth-child(4) { --svc-delay: 3; }
.services-grid > [class*="col-"]:nth-child(5) { --svc-delay: 4; }
.services-grid > [class*="col-"]:nth-child(6) { --svc-delay: 5; }
.services-grid > [class*="col-"]:nth-child(7) { --svc-delay: 6; }
.services-grid > [class*="col-"]:nth-child(8) { --svc-delay: 7; }

/* ===== Mobile tweaks ===== */
@media (max-width: 575.98px) {
  .services-section { padding: 60px 0 70px; }
  .services-grid { margin-top: 30px; }
  .service-body { padding: 32px 14px 18px; }
  .service-body h5 { font-size: 15px; }
  .service-icon-wrap { width: 52px; height: 52px; font-size: 22px; top: -26px; border-width: 3px; }
  .service-cta { font-size: 12px; padding: 7px 12px; }
}


/* =========================================================
   3) WATCH OUR LATEST TVC — video promotional card
   ========================================================= */
.tvc-section {
  background: linear-gradient(180deg, #fffbf2 0%, #fff5e0 100%);
  position: relative;
  overflow: hidden;
}
.tvc-heading { text-align: center; margin-bottom: 32px; }
.tvc-heading h2 {
  font-family: var(--font-display);
  font-weight: 700;
  font-size: 36px;
  color: var(--ink);
  margin: 0;
}

.tvc-frame-wrap {
  position: relative;
  max-width: 980px;
  margin: 0 auto;
  padding: 0 32px;
}

/* Decorative dotted side patterns (like Bharat Matrimony) */
.tvc-dots {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  width: 86px;
  height: 240px;
  background-image: radial-gradient(circle, rgba(198, 138, 58, 0.45) 1.5px, transparent 1.8px);
  background-size: 14px 14px;
  pointer-events: none;
  opacity: 0.7;
}
.tvc-dots-left { left: -10px; }
.tvc-dots-right { right: -10px; transform: translateY(-50%) scaleX(-1); }

.tvc-frame {
  position: relative;
  z-index: 2;
  border-radius: 22px;
  background: linear-gradient(135deg, var(--brand-red), var(--brand-gold));
  padding: 4px;
  box-shadow: 0 30px 60px rgba(214, 31, 38, 0.18);
}
.tvc-card {
  position: relative;
  border-radius: 18px;
  overflow: hidden;
  aspect-ratio: 16 / 9;
  cursor: pointer;
  background: #1a1a1a;
}

/* Background photo with strong overlay */
.tvc-bg-photo {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  filter: saturate(0.85);
  transition: transform 0.8s var(--ease);
}
.tvc-card:hover .tvc-bg-photo { transform: scale(1.05); }

/* Tri-color gradient overlay: red on left, dark in middle, gold on right
   evoking the Bharat Matrimony reference but in our brand colors */
.tvc-gradient-overlay {
  position: absolute;
  inset: 0;
  background:
    linear-gradient(90deg,
      rgba(214, 31, 38, 0.85) 0%,
      rgba(214, 31, 38, 0.55) 25%,
      rgba(20, 20, 25, 0.55) 50%,
      rgba(198, 138, 58, 0.55) 75%,
      rgba(198, 138, 58, 0.85) 100%);
}

/* Top-right corner action buttons */
.tvc-corners {
  position: absolute;
  top: 18px;
  right: 18px;
  display: flex;
  gap: 14px;
  z-index: 4;
}
.tvc-corner-btn {
  background: transparent;
  border: none;
  color: #fff;
  font-size: 11px;
  font-weight: 500;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 4px;
  opacity: 0.92;
  transition: all 0.2s ease;
  padding: 4px 8px;
  text-shadow: 0 1px 3px rgba(0,0,0,0.5);
}
.tvc-corner-btn i { font-size: 18px; }
.tvc-corner-btn:hover { opacity: 1; transform: translateY(-2px); }

/* Content layout (left-aligned tagline + brand pill) */
.tvc-content {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  padding: 30px 38px;
  z-index: 3;
  pointer-events: none;
}

.tvc-tagline-box {
  margin-top: 30px;
  max-width: 50%;
}
.tvc-tagline-line {
  font-family: var(--font-display);
  font-weight: 700;
  color: #fff;
  font-size: 38px;
  line-height: 1.05;
  letter-spacing: -0.01em;
  text-shadow: 0 3px 12px rgba(0,0,0,0.45);
  display: block;
}
.tvc-tagline-line:nth-child(1) { padding-left: 0; }
.tvc-tagline-line:nth-child(2) { padding-left: 12px; }
.tvc-tagline-line:nth-child(3) { padding-left: 24px; }

.tvc-brand-pill {
  display: inline-flex;
  align-items: center;
  gap: 12px;
  background: rgba(255,255,255,0.95);
  border-radius: 12px;
  padding: 8px 16px 8px 10px;
  align-self: flex-start;
  box-shadow: 0 8px 22px rgba(0,0,0,0.25);
  pointer-events: auto;
}
.tvc-brand-pill img {
  height: 36px;
  width: auto;
  display: block;
}
.tvc-brand-tag {
  font-size: 11px;
  color: var(--ink);
  font-weight: 500;
  border-left: 1.5px solid var(--brand-gold);
  padding-left: 12px;
  line-height: 1.2;
}

/* Big play button (YouTube-style red) */
.tvc-play-btn {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 88px;
  height: 60px;
  border-radius: 16px;
  border: none;
  background: var(--brand-red);
  color: #fff;
  font-size: 36px;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 5;
  box-shadow: 0 12px 32px rgba(214, 31, 38, 0.5),
              0 0 0 0 rgba(214, 31, 38, 0.4);
  transition: all 0.3s var(--ease);
  animation: tvc-pulse 2.4s var(--ease) infinite;
}
.tvc-play-btn:hover {
  transform: translate(-50%, -50%) scale(1.08);
  background: var(--brand-red-hover);
  animation-play-state: paused;
}
@keyframes tvc-pulse {
  0%, 100% { box-shadow: 0 12px 32px rgba(214, 31, 38, 0.5), 0 0 0 0 rgba(214, 31, 38, 0.5); }
  50%      { box-shadow: 0 12px 32px rgba(214, 31, 38, 0.5), 0 0 0 18px rgba(214, 31, 38, 0); }
}

/* Mobile adjustments */
@media (max-width: 767.98px) {
  .tvc-heading h2 { font-size: 26px; }
  .tvc-frame-wrap { padding: 0 12px; }
  .tvc-dots { width: 50px; height: 140px; background-size: 10px 10px; }
  .tvc-content { padding: 18px 22px; }
  .tvc-tagline-box { margin-top: 14px; max-width: 60%; }
  .tvc-tagline-line { font-size: 22px; }
  .tvc-corners { top: 12px; right: 12px; gap: 10px; }
  .tvc-corner-btn { font-size: 10px; }
  .tvc-corner-btn i { font-size: 15px; }
  .tvc-brand-pill { padding: 5px 11px 5px 7px; gap: 8px; }
  .tvc-brand-pill img { height: 26px; }
  .tvc-brand-tag { font-size: 9px; padding-left: 8px; }
  .tvc-play-btn { width: 64px; height: 44px; font-size: 26px; border-radius: 12px; }
}

/* TVC video lightbox */
.tvc-lightbox {
  position: fixed;
  inset: 0;
  z-index: 1080;
  display: none;
  align-items: center;
  justify-content: center;
  padding: 16px;
}
.tvc-lightbox.show { display: flex; }
.tvc-lb-backdrop {
  position: absolute;
  inset: 0;
  background: rgba(0,0,0,0.85);
  backdrop-filter: blur(6px);
}
.tvc-lb-dialog {
  position: relative;
  width: 100%;
  max-width: 960px;
  z-index: 2;
}
.tvc-lb-iframe-wrap {
  position: relative;
  aspect-ratio: 16/9;
  background: #000;
  border-radius: 12px;
  overflow: hidden;
  box-shadow: 0 30px 60px rgba(0,0,0,0.5);
}
.tvc-lb-iframe-wrap iframe {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  border: 0;
}
.tvc-lb-close {
  position: absolute;
  top: -44px;
  right: 0;
  width: 36px;
  height: 36px;
  border-radius: 50%;
  border: none;
  background: rgba(255,255,255,0.95);
  color: var(--ink);
  cursor: pointer;
  font-size: 16px;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: transform 0.2s ease;
}
.tvc-lb-close:hover { transform: scale(1.08); }


/* =========================================================
   4) SERVICE DETAILS PAGE — banner, content, enquiry modal
   ========================================================= */

/* Banner carousel for service detail */
.svc-banner {
  position: relative;
  height: 360px;
  border-radius: 0 0 var(--r-xl) var(--r-xl);
  overflow: hidden;
  margin-bottom: 32px;
}
.svc-banner .carousel,
.svc-banner .carousel-inner,
.svc-banner .carousel-item { height: 100%; }
.svc-banner .carousel-item img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.svc-banner-overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,0.15) 0%, rgba(214, 31, 38, 0.75) 100%);
  display: flex;
  align-items: flex-end;
  padding: 36px 28px;
  z-index: 2;
}
.svc-banner-title {
  color: #fff;
  font-family: var(--font-display);
  margin: 0;
}
.svc-banner-title small {
  display: block;
  font-family: var(--font-script);
  font-size: 18px;
  font-weight: 400;
  color: var(--gold-light);
  margin-bottom: 6px;
}
.svc-banner-title span.h1 {
  display: block;
  font-size: 38px;
  font-weight: 700;
  letter-spacing: -0.01em;
}

/* Content area */
.svc-content {
  display: grid;
  grid-template-columns: 1fr 320px;
  gap: 36px;
  align-items: start;
}
.svc-prose h3 {
  font-family: var(--font-display);
  color: var(--ink);
  margin: 24px 0 12px;
  font-size: 22px;
}
.svc-prose h3:first-child { margin-top: 0; }
.svc-prose p {
  color: var(--slate);
  line-height: 1.75;
  margin-bottom: 14px;
}
.svc-prose ul {
  list-style: none;
  padding-left: 0;
}
.svc-prose ul li {
  padding-left: 32px;
  position: relative;
  margin-bottom: 10px;
  color: var(--slate);
  line-height: 1.6;
}
.svc-prose ul li::before {
  content: '';
  position: absolute;
  left: 0;
  top: 8px;
  width: 18px;
  height: 18px;
  border-radius: 50%;
  background: var(--grad-luxury);
}
.svc-prose ul li::after {
  content: '\f633';   /* bi-check2 (filled) */
  font-family: 'bootstrap-icons';
  position: absolute;
  left: 4px;
  top: 8px;
  color: #fff;
  font-size: 11px;
  line-height: 18px;
}

.svc-aside {
  background: var(--bg-soft);
  padding: 24px 22px;
  border-radius: var(--r-lg);
  border: 1px solid var(--line);
  position: sticky;
  top: 92px;
}
.svc-aside h4 {
  font-family: var(--font-display);
  font-weight: 600;
  color: var(--ink);
  margin: 0 0 8px;
  font-size: 20px;
}
.svc-aside p {
  font-size: 13px;
  color: var(--slate);
  margin-bottom: 16px;
  line-height: 1.55;
}
.svc-aside .btn-grad-luxury {
  width: 100%;
  padding: 12px;
  font-weight: 600;
  border-radius: 10px;
}
.svc-aside-perks {
  list-style: none;
  padding: 14px 0 0;
  margin: 14px 0 0;
  border-top: 1px dashed var(--line);
}
.svc-aside-perks li {
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: 13px;
  color: var(--slate);
  margin-bottom: 8px;
}
.svc-aside-perks li i {
  color: var(--brand-gold);
  font-size: 16px;
}

@media (max-width: 991.98px) {
  .svc-content { grid-template-columns: 1fr; }
  .svc-aside { position: static; }
  .svc-banner { height: 260px; border-radius: 0 0 var(--r-lg) var(--r-lg); }
  .svc-banner-title span.h1 { font-size: 26px; }
}

/* Other services strip on details page */
.svc-other {
  margin-top: 56px;
  padding-top: 36px;
  border-top: 1px solid var(--line);
}

/* Enquiry modal */
.enquiry-modal .modal-content {
  border: none;
  border-radius: var(--r-lg);
  overflow: hidden;
  box-shadow: 0 30px 60px rgba(0,0,0,0.25);
}
.enquiry-modal .modal-header {
  background: var(--grad-luxury);
  color: #fff;
  padding: 18px 22px;
  border: 0;
  position: relative;
}
.enquiry-modal .modal-title {
  font-family: var(--font-display);
  font-weight: 600;
  color: #fff;
  font-size: 20px;
  margin: 0;
  display: flex;
  align-items: center;
  gap: 10px;
}
.enquiry-modal .modal-title i {
  background: rgba(255,255,255,0.2);
  width: 36px; height: 36px;
  border-radius: 50%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.enquiry-modal .btn-close {
  filter: invert(1) brightness(2);
  opacity: 0.9;
}
.enquiry-modal .modal-body { padding: 24px 22px 8px; }
.enquiry-modal .modal-footer {
  padding: 16px 22px;
  border-top: 1px solid var(--line);
}

.enq-field { margin-bottom: 14px; }
.enq-field label {
  display: block;
  font-size: 12px;
  font-weight: 600;
  color: var(--ink);
  text-transform: uppercase;
  letter-spacing: 0.06em;
  margin-bottom: 6px;
}
.enq-field label .req { color: var(--brand-red); }
.enq-field input,
.enq-field select,
.enq-field textarea {
  width: 100%;
  padding: 11px 14px;
  border: 1.5px solid var(--line);
  border-radius: 10px;
  font-size: 14px;
  font-family: var(--font-body);
  color: var(--ink);
  background: #fff;
  transition: border-color 0.2s ease, box-shadow 0.2s ease;
}
.enq-field textarea {
  resize: vertical;
  min-height: 96px;
}
.enq-field input:focus,
.enq-field select:focus,
.enq-field textarea:focus {
  outline: none;
  border-color: var(--brand-red);
  box-shadow: 0 0 0 3px rgba(214, 31, 38, 0.12);
}
.enq-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
}
@media (max-width: 575.98px) {
  .enq-row { grid-template-columns: 1fr; }
}

.enq-success {
  display: none;
  text-align: center;
  padding: 24px 12px 8px;
}
.enq-success.show { display: block; }
.enq-success-icon {
  width: 72px;
  height: 72px;
  margin: 0 auto 14px;
  border-radius: 50%;
  background: var(--grad-gold);
  color: #fff;
  font-size: 32px;
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 10px 24px rgba(198, 138, 58, 0.3);
}
.enq-success h4 {
  font-family: var(--font-display);
  color: var(--ink);
  font-size: 22px;
  margin: 0 0 8px;
}
.enq-success p {
  color: var(--slate);
  font-size: 14px;
  margin: 0 0 20px;
}


/* =========================================================
   FAQ SECTION — Accordion with brand-color accent
   ========================================================= */
.faq-section {
  background:
    radial-gradient(800px 400px at 10% 0%, rgba(214, 31, 38, 0.04), transparent 60%),
    radial-gradient(600px 300px at 90% 100%, rgba(198, 138, 58, 0.05), transparent 60%),
    var(--bg-page);
  padding: 80px 0 90px;
  position: relative;
  overflow: hidden;
}
.faq-section::before {
  content: '';
  position: absolute;
  top: -100px; left: -100px;
  width: 280px; height: 280px;
  background: radial-gradient(circle, rgba(47, 74, 125, 0.05), transparent 70%);
  border-radius: 50%;
  pointer-events: none;
}
.faq-section::after {
  content: '';
  position: absolute;
  bottom: -120px; right: -100px;
  width: 280px; height: 280px;
  background: radial-gradient(circle, rgba(214, 31, 38, 0.06), transparent 70%);
  border-radius: 50%;
  pointer-events: none;
}

.faq-grid {
  max-width: 860px;
  margin: 50px auto 0;
  display: grid;
  gap: 14px;
  position: relative;
  z-index: 1;
}

/* Each FAQ item is a <details> element */
.faq-item {
  background: #fff;
  border: 1px solid var(--line);
  border-radius: 16px;
  overflow: hidden;
  transition: border-color 0.4s ease, box-shadow 0.4s ease, transform 0.4s ease;
}
.faq-item:hover {
  border-color: rgba(214, 31, 38, 0.3);
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.05);
}
.faq-item[open] {
  border-color: var(--brand-red);
  box-shadow: 0 10px 30px rgba(214, 31, 38, 0.12);
}

/* Summary (the question header — always visible) */
.faq-item summary {
  list-style: none;
  cursor: pointer;
  padding: 18px 22px;
  display: flex;
  align-items: center;
  gap: 16px;
  user-select: none;
  position: relative;
  outline: none;
}
.faq-item summary::-webkit-details-marker { display: none; }

/* Question icon orb */
.faq-q-icon {
  flex-shrink: 0;
  width: 36px;
  height: 36px;
  border-radius: 50%;
  background: var(--brand-red);
  color: #fff;
  display: grid;
  place-items: center;
  font-size: 18px;
  transition: background 0.4s ease, transform 0.4s var(--ease);
}
.faq-item[open] .faq-q-icon {
  background: var(--grad-luxury);
  transform: rotate(-12deg) scale(1.05);
}

/* Question text */
.faq-q-text {
  flex: 1;
  font-family: var(--font-display);
  font-weight: 600;
  font-size: 16px;
  color: var(--ink);
  line-height: 1.4;
  letter-spacing: -0.005em;
}

/* + / − toggle indicator */
.faq-toggle {
  flex-shrink: 0;
  width: 32px;
  height: 32px;
  border-radius: 50%;
  background: var(--bg-soft);
  color: var(--brand-red);
  display: grid;
  place-items: center;
  font-size: 14px;
  transition: transform 0.4s var(--ease), background 0.4s ease, color 0.4s ease;
}
.faq-item[open] .faq-toggle {
  transform: rotate(45deg);
  background: var(--brand-red);
  color: #fff;
}

/* Answer body */
.faq-a {
  display: block;
  padding: 0 22px 22px 74px;  /* indent matches icon + gap so text aligns */
  color: var(--slate);
  font-size: 14.5px;
  line-height: 1.7;
  /* Slide-down animation */
  animation: faqSlideDown 0.4s var(--ease);
}
/* Hide answer when collapsed (some browsers leave summary's siblings visible) */
.faq-item:not([open]) .faq-a {
  display: none;
}
@keyframes faqSlideDown {
  from { opacity: 0; transform: translateY(-8px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* CTA at the bottom */
.faq-cta {
  text-align: center;
  margin-top: 42px;
  position: relative;
  z-index: 1;
}
.faq-cta p {
  color: var(--slate);
  font-size: 15px;
  margin-bottom: 16px;
}

/* Mobile tweaks */
@media (max-width: 575.98px) {
  .faq-section { padding: 60px 0 70px; }
  .faq-grid { margin-top: 32px; gap: 12px; }
  .faq-item summary { padding: 14px 16px; gap: 12px; }
  .faq-q-icon { width: 32px; height: 32px; font-size: 16px; }
  .faq-q-text { font-size: 14.5px; }
  .faq-toggle { width: 28px; height: 28px; font-size: 12px; }
  .faq-a { padding: 0 16px 18px 60px; font-size: 13.5px; }
}


/* =========================================================
   LOGIN v2 — 4-tab login + agent/vendor registration wizards
   ========================================================= */

/* ---------- Pill-style tab bar ---------- */
.pm-login .login-tabs {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
  justify-content: center;
  max-width: 720px;
  margin: 0 auto 28px;
  padding: 5px;
  background: #f2f2f2;
  border-radius: 999px;
}
.pm-login .login-tab {
  flex: 1;
  min-width: 110px;
  padding: 11px 16px;
  background: transparent;
  border: none;
  border-radius: 999px;
  font-weight: 600;
  font-size: 13px;
  color: var(--slate);
  cursor: pointer;
  transition: all 0.3s var(--ease);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  font-family: var(--font-body);
}
.pm-login .login-tab i { font-size: 15px; }
.pm-login .login-tab.active {
  background: linear-gradient(135deg, var(--brand-red), var(--brand-gold));
  color: #fff;
  box-shadow: 0 4px 12px rgba(214, 31, 38, 0.3);
}

/* ============================================================
   Registration page tab strip — mirrors login-tabs but uses
   anchor links (each tab is a separate registration page).
   ============================================================ */
.auth-type-tabs {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
  justify-content: center;
  max-width: 720px;
  margin: 0 auto 24px;
  padding: 5px;
  background: #f2f2f2;
  border-radius: 999px;
}
.auth-type-tabs .auth-type-tab {
  flex: 1;
  min-width: 110px;
  padding: 11px 16px;
  background: transparent;
  border: 0;
  border-radius: 999px;
  font-weight: 600;
  font-size: 13px;
  color: var(--slate);
  cursor: pointer;
  text-decoration: none;
  transition: all 0.25s ease;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  font-family: var(--font-body);
}
.auth-type-tabs .auth-type-tab i { font-size: 15px; }
.auth-type-tabs .auth-type-tab:hover {
  color: var(--brand-red);
  background: rgba(214, 31, 38, 0.05);
}
.auth-type-tabs .auth-type-tab.active {
  background: linear-gradient(135deg, var(--brand-red), var(--brand-gold));
  color: #fff;
  box-shadow: 0 4px 12px rgba(214, 31, 38, 0.3);
  cursor: default;
}
.auth-type-tabs .auth-type-tab.active:hover {
  color: #fff;
  background: linear-gradient(135deg, var(--brand-red), var(--brand-gold));
}
@media (max-width: 575.98px) {
  .auth-type-tabs { gap: 3px; padding: 4px; }
  .auth-type-tabs .auth-type-tab {
    flex-direction: column;
    min-width: 0;
    padding: 8px 6px;
    font-size: 11px;
    gap: 3px;
  }
  .auth-type-tabs .auth-type-tab i { font-size: 18px; }
}
.pm-login .login-tab:not(.active):hover { color: var(--brand-red); }

.pm-login .login-pane[hidden] { display: none; }

/* ---------- Method toggle (Password / OTP) ---------- */
.auth-method-toggle {
  display: flex;
  background: #f2f2f2;
  border-radius: 14px;
  padding: 5px;
  gap: 4px;
  margin-bottom: 20px;
}
.auth-method-toggle button {
  flex: 1;
  padding: 11px 8px;
  background: transparent;
  border: none;
  border-radius: 10px;
  font-size: 12.5px;
  font-weight: 600;
  color: var(--slate);
  cursor: pointer;
  font-family: var(--font-body);
  transition: all 0.25s ease;
  /* Stack icon above text */
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 4px;
  line-height: 1.15;
}
.auth-method-toggle button i {
  font-size: 18px;
  transition: color 0.25s ease;
}
.auth-method-toggle button.active {
  background: #fff;
  color: var(--brand-red);
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.08);
}
.auth-method-toggle button:not(.active):hover {
  color: var(--brand-red);
}

/* ---------- Forgot link ---------- */
.pm-login .forgot-link,
.pm-wizard .forgot-link {
  text-align: right;
  margin: -4px 0 16px;
}
.pm-login .forgot-link a,
.pm-wizard .forgot-link a {
  color: var(--brand-blue);
  font-size: 13px;
  font-weight: 500;
  text-decoration: none;
}
.pm-login .forgot-link a:hover,
.pm-wizard .forgot-link a:hover { color: var(--brand-red); }

/* ---------- Auth prompt (bottom link) ---------- */
.pm-login .auth-prompt,
.pm-wizard .auth-prompt {
  text-align: center;
  margin-top: 18px;
  font-size: 14px;
  color: var(--slate);
}
.pm-login .auth-prompt a,
.pm-wizard .auth-prompt a {
  color: var(--brand-red);
  font-weight: 600;
  text-decoration: none;
}

/* ---------- "Coming soon" / no-registration note ---------- */
.no-reg-note {
  text-align: center;
  margin-top: 18px;
  padding: 12px 14px;
  background: #fff8f0;
  border: 1px dashed var(--brand-gold);
  border-radius: 10px;
  font-size: 12.5px;
  color: #7a5424;
  line-height: 1.5;
}
.no-reg-note i {
  color: var(--brand-gold);
  margin-right: 4px;
}

/* ---------- Auth side panel — script + heading + features ---------- */
.auth-side .script {
  font-family: var(--font-script);
  font-size: 22px;
  color: var(--gold-light);
  display: block;
  margin-bottom: 6px;
}
.auth-side h2 em {
  font-style: italic;
  color: var(--gold-light);
}

/* ---------- Wizard stepper ---------- */
.wiz-stepper {
  display: flex;
  align-items: center;
  justify-content: center;
  margin: 8px auto 26px;
  max-width: 100%;
}
/* Modifier for stepper with many steps (5+) — used in register.html */
.wiz-stepper-compact .wiz-line {
  flex: 1 1 auto;
  min-width: 12px;
}
.wiz-stepper-compact .wiz-circle {
  width: 32px;
  height: 32px;
  font-size: 12px;
}
.wiz-stepper-compact .wiz-label {
  font-size: 9.5px;
  letter-spacing: 0.02em;
  margin-top: 5px;
}
.wiz-step {
  display: flex;
  flex-direction: column;
  align-items: center;
  flex-shrink: 0;
}
.wiz-circle {
  width: 38px;
  height: 38px;
  border-radius: 50%;
  background: #f2f2f2;
  color: var(--slate);
  font-weight: 700;
  font-size: 14px;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: all 0.35s var(--ease);
  font-family: var(--font-body);
}
.wiz-step.active .wiz-circle {
  background: linear-gradient(135deg, var(--brand-red), #F04A50);
  color: #fff;
  box-shadow: 0 4px 12px rgba(214, 31, 38, 0.35);
  transform: scale(1.05);
}
.wiz-step.done .wiz-circle {
  background: linear-gradient(135deg, #16A34A 0%, #22C55E 100%);
  color: #fff;
  box-shadow: 0 2px 8px rgba(22, 163, 74, 0.3);
}
/* Number stays visible (no tick mark replacing it) */
.wiz-label {
  margin-top: 7px;
  font-size: 11px;
  color: var(--slate);
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  white-space: nowrap;
}
.wiz-step.active .wiz-label { color: var(--brand-red); }
.wiz-step.done .wiz-label { color: #16A34A; }

.wiz-line {
  flex: 0 1 60px;
  height: 2px;
  background: #f2f2f2;
  margin: 0 6px 22px;
  border-radius: 2px;
  transition: background 0.35s ease;
  min-width: 16px;
}
.wiz-line.active { background: linear-gradient(90deg, #16A34A, #22C55E); }

/* ---------- Wizard panes (one shown at a time) ---------- */
.wiz-pane[hidden] { display: none; }

/* ---------- Wizard action row (Back / Next) ---------- */
.wiz-actions {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  margin-top: 24px;
  align-items: center;
}
.btn-back {
  padding: 11px 22px;
  background: #fff;
  color: var(--slate);
  border: 1.5px solid var(--line);
  border-radius: 10px;
  font-weight: 600;
  font-size: 14px;
  text-decoration: none;
  display: inline-flex;
  align-items: center;
  cursor: pointer;
  transition: all 0.25s ease;
}
.btn-back:hover {
  color: var(--brand-red);
  border-color: var(--brand-red);
}
.btn-next {
  flex: 1;
  padding: 12px 22px;
  font-weight: 600;
  font-size: 14px;
  border: none;
  cursor: pointer;
}

/* ---------- OTP input boxes ---------- */
.otp-info {
  text-align: center;
  color: var(--slate);
  font-size: 14px;
  margin: 8px 0 4px;
}
.otp-info b { color: var(--ink); }

/* OTP action row (Back + Verify) — used in login OTP flow */
.otp-actions {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  margin-top: 18px;
  align-items: center;
}
.otp-actions .btn-back {
  flex: 0 0 auto;
}
.otp-actions .btn-next {
  flex: 1;
}
@media (max-width: 575px) {
  .otp-actions { flex-direction: column-reverse; }
  .otp-actions .btn-back, .otp-actions .btn-next { width: 100%; justify-content: center; }
}
.otp-input-row {
  display: flex;
  gap: 10px;
  justify-content: center;
  margin: 18px 0 12px;
}
.otp-input-row input {
  width: 48px;
  height: 56px;
  text-align: center;
  border: 2px solid var(--line);
  border-radius: 10px;
  font-size: 22px;
  font-weight: 700;
  color: var(--ink);
  font-family: var(--font-display);
  background: #fff;
  transition: all 0.2s ease;
}
.otp-input-row input:focus {
  outline: none;
  border-color: var(--brand-red);
  background: #fff8f0;
  transform: translateY(-1px);
}
.otp-resend {
  text-align: center;
  font-size: 13px;
  color: var(--slate);
  margin-top: 6px;
}
.otp-resend a {
  color: var(--brand-blue);
  font-weight: 600;
  text-decoration: none;
}
.otp-resend a.active:hover { color: var(--brand-red); }

/* ---------- File upload area ---------- */
.file-upload {
  display: block;
  border: 2px dashed var(--line);
  border-radius: 12px;
  padding: 18px;
  text-align: center;
  background: #fafafa;
  cursor: pointer;
  transition: all 0.2s ease;
}
.file-upload:hover {
  border-color: var(--brand-red);
  background: #fff8f0;
}
.file-upload i {
  font-size: 28px;
  color: var(--brand-gold);
  display: block;
  margin-bottom: 4px;
}
.file-upload p {
  margin: 0;
  font-size: 13px;
  color: var(--slate);
}
.file-upload .file-name {
  display: block;
  margin-top: 6px;
  font-size: 12px;
  color: var(--brand-red);
  font-weight: 600;
}

/* ---------- Wizard side panel (animated step swap) ---------- */
.wiz-side-step[hidden] { display: none; }
.wiz-side-step {
  animation: wizSideFade 0.4s ease;
}
@keyframes wizSideFade {
  from { opacity: 0; transform: translateY(8px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* ---------- Mobile tweaks ---------- */
@media (max-width: 991px) {
  .pm-login .login-tab span { display: inline; }
}
@media (max-width: 575px) {
  .pm-login .login-tabs { gap: 3px; padding: 4px; }
  .pm-login .login-tab {
    min-width: 0;
    padding: 8px 4px;
    font-size: 11px;
    gap: 3px;
    /* Stack icon above label on mobile */
    flex-direction: column;
    line-height: 1.1;
  }
  .pm-login .login-tab span { display: block; font-size: 11px; font-weight: 600; }
  .pm-login .login-tab i { font-size: 18px; }
  .wiz-stepper { margin-bottom: 22px; }
  .wiz-line { flex-basis: 28px; margin: 0 4px 22px; }
  .wiz-circle { width: 34px; height: 34px; font-size: 13px; }
  .wiz-label { font-size: 10px; }
  /* Labels under each circle don't fit on phones (e.g. "VERIFY OTP", "EDUCATION"
     push the row wider than the viewport, clipping the first and last labels).
     Hide labels for inactive steps; the active step name is already shown
     above the stepper as the subtitle ("Step 1: Tell us about yourself"). */
  .wiz-stepper-compact .wiz-step:not(.active) .wiz-label { display: none; }
  .wiz-stepper-compact .wiz-line { margin-bottom: 0; }
  .otp-input-row { gap: 6px; }
  .otp-input-row input { width: 42px; height: 52px; font-size: 20px; }
  .wiz-actions { flex-direction: column-reverse; }
  .btn-back, .btn-next { width: 100%; justify-content: center; }
}


/* =========================================================
   WIZARD SIDE PANEL — 3-zone layout (top steps / middle stats / bottom quote)
   When panel is taller than content (long forms), use space-between to
   distribute zones evenly: step content stays at top, stats float middle,
   testimonial anchors bottom. Result: no empty gaps, balanced visual.
   ========================================================= */
.auth-side.has-3zone {
  justify-content: space-between;
  gap: 24px;
  padding-top: 36px;
  padding-bottom: 32px;
}

/* Middle zone — stats grid */
.wiz-side-stats {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 10px;
  padding: 16px 12px;
  background: rgba(255, 255, 255, 0.1);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  border: 1px solid rgba(255, 255, 255, 0.15);
  border-radius: 14px;
  position: relative;
  z-index: 1;
}
.wiz-stat {
  text-align: center;
}
.wiz-stat-num {
  font-family: var(--font-display);
  font-weight: 700;
  font-size: 22px;
  color: #fff;
  line-height: 1.1;
  letter-spacing: -0.01em;
}
.wiz-stat-lbl {
  font-size: 10.5px;
  color: rgba(255, 255, 255, 0.82);
  text-transform: uppercase;
  letter-spacing: 0.04em;
  margin-top: 4px;
  line-height: 1.2;
}

/* Bottom zone — testimonial quote card */
.wiz-side-quote {
  background: rgba(255, 255, 255, 0.12);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  border: 1px solid rgba(255, 255, 255, 0.18);
  border-radius: 14px;
  padding: 16px 16px;
  position: relative;
  z-index: 1;
}
.wiz-quote-stars {
  display: flex;
  gap: 2px;
  margin-bottom: 8px;
}
.wiz-quote-stars i {
  color: var(--gold-light);
  font-size: 13px;
}
.wiz-quote-text {
  font-size: 13px;
  line-height: 1.55;
  color: rgba(255, 255, 255, 0.95);
  font-style: italic;
  margin-bottom: 12px;
}
.wiz-quote-author {
  display: flex;
  align-items: center;
  gap: 10px;
}
.wiz-quote-avatar {
  width: 36px;
  height: 36px;
  border-radius: 50%;
  background: linear-gradient(135deg, var(--gold-light), var(--brand-gold));
  display: grid;
  place-items: center;
  font-family: var(--font-display);
  font-weight: 700;
  font-size: 16px;
  color: #fff;
  flex-shrink: 0;
}
.wiz-quote-name {
  font-size: 13px;
  font-weight: 600;
  color: #fff;
}
.wiz-quote-meta {
  font-size: 11px;
  color: rgba(255, 255, 255, 0.7);
  margin-top: 1px;
}


/* =========================================================
   RADIO PILLS — used in edit-profile for radio/checkbox groups
   ========================================================= */
.radio-row {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
.radio-pill {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 7px 14px;
  background: #fff;
  border: 1.5px solid var(--line);
  border-radius: 999px;
  font-size: 13px;
  font-weight: 500;
  color: var(--ink);
  cursor: pointer;
  transition: all 0.2s ease;
  user-select: none;
}
.radio-pill:hover {
  border-color: var(--brand-red);
  color: var(--brand-red);
}
.radio-pill input[type="radio"],
.radio-pill input[type="checkbox"] {
  width: 14px;
  height: 14px;
  accent-color: var(--brand-red);
  cursor: pointer;
  margin: 0;
}
/* When checked — fill with brand color */
.radio-pill:has(input:checked) {
  background: linear-gradient(135deg, var(--brand-red), var(--brand-gold));
  border-color: var(--brand-red);
  color: #fff;
}
.radio-pill:has(input:checked) input {
  accent-color: #fff;
}


/* =========================================================
   EDIT PROFILE — Horizontal section nav (Variant B: Floating card)
   2px brand red border · red-tinted shadow
   ----
   `top` value set dynamically by JS to match the sticky site-header height.
   Falls back to safe defaults (84/70/64) in case JS hasn't run yet.
   ========================================================= */
/* Clean underline-tabs style — white bar with thin gray base line and a 3px
   red bottom indicator under the active pill. Same look on mobile + desktop. */
.ep-section-nav {
  background: #fff;
  border: none;
  border-bottom: 1px solid #eee;
  border-radius: 0;
  padding: 8px 16px 0;
  margin-bottom: 18px;
  overflow-x: auto;
  overflow-y: hidden;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: none;
  -ms-overflow-style: none;
  white-space: nowrap;
  position: sticky;
  /* Initial fallback — JS overrides with `--header-h + 8px` once page loads. */
  top: 92px;
  z-index: 90;
  box-shadow: none;
  transition: box-shadow 0.25s ease;
}
.ep-section-nav::-webkit-scrollbar { display: none; height: 0; width: 0; }

.ep-section-nav.is-stuck {
  box-shadow: 0 4px 14px rgba(0, 0, 0, 0.06);
}

.ep-section-nav-inner {
  display: flex;
  gap: 4px;
  padding: 0;
}

.ep-section-pill {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 14px 18px;
  background: transparent;
  border: none;
  border-radius: 10px 10px 0 0;
  border-bottom: 3px solid transparent;
  font-size: 13.5px;
  font-weight: 600;
  color: var(--slate);
  cursor: pointer;
  transition: all 0.25s ease;
  flex-shrink: 0;
  text-decoration: none;
  white-space: nowrap;
  font-family: var(--font-body);
  scroll-snap-align: center;
}
.ep-section-pill i {
  width: 28px;
  height: 28px;
  border-radius: 8px;
  background: rgba(214, 31, 38, 0.08);
  color: var(--brand-red);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 14px;
  transition: all 0.25s;
}
.ep-section-pill:hover {
  color: var(--brand-red);
  background: rgba(214, 31, 38, 0.04);
}
.ep-section-pill.active {
  color: var(--brand-red);
  border-bottom-color: var(--brand-red);
  background: transparent;
  box-shadow: none;
}
.ep-section-pill.active i {
  background: linear-gradient(135deg, var(--brand-red), var(--brand-gold));
  color: #fff;
  transform: scale(1.05);
}

/* Mobile: full-bleed (break out of parent's 24px padding) and tighter sizing. */
@media (max-width: 768px) {
  .ep-section-nav {
    padding: 6px 12px 0;
    margin: 0 -24px 14px;
  }
  .ep-section-pill {
    padding: 12px 14px;
    font-size: 12.5px;
    gap: 7px;
  }
  .ep-section-pill i {
    width: 24px;
    height: 24px;
    font-size: 12px;
    border-radius: 6px;
  }
}

/* Section heading lands BELOW sticky header + nav when scrolled to via pill click.
   --ep-section-offset is set by JS dynamically to (header height + nav height + 16). */
.search-form-section {
  scroll-margin-top: var(--ep-section-offset, 170px);
}


/* =========================================================
   CHIP-SELECT — Multi-select with removable tag chips
   Used in partner-preferences.html (Caste, Mother Tongue, Birth Star,
   Education, Occupation, Location, etc.)
   ========================================================= */
.chip-select {
  position: relative;
}
.chip-input-area {
  min-height: 44px;
  border: 1px solid var(--line);
  border-radius: var(--r-sm);
  padding: 6px 8px;
  background: #fff;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px;
  cursor: text;
  transition: border-color 0.2s ease, box-shadow 0.2s ease;
}
.chip-input-area:focus-within {
  border-color: var(--brand-red);
  box-shadow: 0 0 0 3px rgba(214, 31, 38, 0.1);
}
.chips-list {
  display: contents;
}
.chip {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  background: #f0f0f0;
  border: 1px solid #ddd;
  border-radius: 4px;
  padding: 2px 4px 2px 8px;
  font-size: 13px;
  color: var(--ink);
  line-height: 1.4;
}
.chip-label {
  white-space: nowrap;
}
.chip-remove {
  background: transparent;
  border: none;
  color: #999;
  cursor: pointer;
  font-size: 18px;
  line-height: 1;
  padding: 0 4px;
  margin-left: 2px;
  border-radius: 50%;
  transition: color 0.15s ease, background 0.15s ease;
}
.chip-remove:hover {
  color: var(--brand-red);
  background: rgba(214, 31, 38, 0.08);
}
.chip-search {
  flex: 1;
  min-width: 80px;
  border: none;
  outline: none;
  padding: 4px 6px;
  font-size: 13px;
  color: var(--ink);
  background: transparent;
  font-family: var(--font-body);
}

.chip-options-panel {
  position: absolute;
  top: calc(100% + 4px);
  left: 0;
  right: 0;
  background: #fff;
  border: 1px solid var(--line);
  border-radius: var(--r-sm);
  box-shadow: 0 8px 22px rgba(0, 0, 0, 0.1);
  max-height: 260px;
  overflow-y: auto;
  z-index: 1000;
  padding: 6px;
}
.chip-options-panel[hidden] { display: none; }

.chip-option {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 7px 10px;
  border-radius: 6px;
  cursor: pointer;
  font-size: 13.5px;
  color: var(--ink);
  user-select: none;
  transition: background 0.15s ease;
}
.chip-option:hover {
  background: #fff5f6;
}
.chip-option input[type="checkbox"] {
  accent-color: var(--brand-red);
  width: 16px;
  height: 16px;
  cursor: pointer;
  margin: 0;
}
.chip-option.is-selected {
  background: rgba(214, 31, 38, 0.06);
  color: var(--brand-red);
  font-weight: 500;
}
.chip-option.is-hidden {
  display: none;
}


/* =========================================================
   DASHBOARD SIDEBAR — ACCORDION GROUPS (Variant B)
   Tinted BG + colored left-border accent per section
   ========================================================= */

/* Top-level items (Dashboard, Sign Out) — outside accordion */
.dash-nav-top {
  margin-bottom: 8px;
}
.dash-nav-signout {
  margin-top: 10px;
  padding-top: 12px !important;
  border-top: 1px solid var(--line);
  color: #B71C22 !important;
}
.dash-nav-signout i { color: #B71C22 !important; }
.dash-nav-signout:hover {
  background: rgba(183, 28, 34, 0.08) !important;
  color: #B71C22 !important;
}

/* Accordion group container */
.dash-nav-group {
  border-radius: 10px;
  margin-bottom: 8px;
  overflow: hidden;
  transition: background 0.25s ease;
}

/* Accordion head (clickable button) */
.dash-nav-head {
  display: flex;
  align-items: center;
  gap: 10px;
  width: 100%;
  padding: 11px 14px;
  background: transparent;
  border: none;
  cursor: pointer;
  font-family: var(--font-body);
  font-weight: 700;
  font-size: 12px;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  text-align: left;
  user-select: none;
  transition: background 0.2s ease;
}
.dash-nav-head .head-icon {
  font-size: 16px;
  width: 18px;
}
.dash-nav-head .chevron {
  margin-left: auto;
  font-size: 13px;
  transition: transform 0.3s ease;
}
.dash-nav-group.is-open .chevron {
  transform: rotate(180deg);
}

/* Body (collapsed by default) */
.dash-nav-body {
  display: none;
  padding: 4px 6px 8px;
}
.dash-nav-group.is-open .dash-nav-body {
  display: block;
  animation: groupSlideDown 0.25s ease;
}
@keyframes groupSlideDown {
  from { opacity: 0; transform: translateY(-4px); }
  to   { opacity: 1; transform: translateY(0); }
}
.dash-nav-body .dash-nav-item {
  padding: 8px 12px;
  font-size: 12.5px;
}

/* ============ Per-section tints (Variant B) ============ */

/* Activities — brand red (with sub-groups) */
.dash-nav-group.group-activities {
  background: #FFF7F0;
  border-left: 3px solid var(--brand-red);
}
.dash-nav-group.group-activities .dash-nav-head,
.dash-nav-group.group-activities .head-icon {
  color: var(--brand-red);
}
.dash-nav-group.group-activities .dash-nav-head:hover {
  background: rgba(214, 31, 38, 0.06);
}

/* Sub-group inside Activities (By Me / By Others) */
.dash-nav-subgroup {
  margin: 4px 0;
  padding-left: 8px;
  border-left: 2px solid rgba(214, 31, 38, 0.2);
}
.dash-nav-subgroup-label {
  font-size: 10.5px;
  font-weight: 700;
  color: var(--brand-red);
  padding: 8px 8px 4px;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  opacity: 0.85;
}

/* Matches — warm gold (NEW) */
.dash-nav-group.group-matches {
  background: #FFF7EC;
  border-left: 3px solid var(--brand-gold);
}
.dash-nav-group.group-matches .dash-nav-head,
.dash-nav-group.group-matches .head-icon {
  color: var(--brand-gold-dark);
}
.dash-nav-group.group-matches .dash-nav-head:hover {
  background: rgba(198, 138, 58, 0.08);
}

/* Inbox — soft pink (separate from Activities) */
.dash-nav-group.group-inbox {
  background: #FFF0F3;
  border-left: 3px solid #E91E63;
}
.dash-nav-group.group-inbox .dash-nav-head,
.dash-nav-group.group-inbox .head-icon {
  color: #C2185B;
}
.dash-nav-group.group-inbox .dash-nav-head:hover {
  background: rgba(233, 30, 99, 0.06);
}

/* Support — teal/cyan (its own section like Inbox) */
.dash-nav-group.group-support {
  background: #E6F8F8;
  border-left: 3px solid #0E9594;
}
.dash-nav-group.group-support .dash-nav-head,
.dash-nav-group.group-support .head-icon {
  color: #086B6A;
}
.dash-nav-group.group-support .dash-nav-head:hover {
  background: rgba(14, 149, 148, 0.08);
}
.dash-nav-group.group-support .dash-nav-item:hover {
  background: rgba(14, 149, 148, 0.08);
  color: #086B6A;
}
.dash-nav-group.group-support .dash-nav-item.active {
  background: linear-gradient(135deg, #0E9594, #14B8B7);
  color: #fff;
}
.dash-nav-group.group-support .dash-nav-item.active i,
.dash-nav-group.group-support .dash-nav-item.active .count-badge {
  color: #fff;
}
.dash-nav-group.group-support .dash-nav-item.active .count-badge {
  background: rgba(255, 255, 255, 0.25);
}

/* Parent Login — warm amber/brown (between Profile blue and Settings purple) */
.dash-nav-group.group-parent {
  background: #FFF7E6;
  border-left: 3px solid #B45309;
}
.dash-nav-group.group-parent .dash-nav-head,
.dash-nav-group.group-parent .head-icon {
  color: #8B4513;
}
.dash-nav-group.group-parent .dash-nav-head:hover {
  background: rgba(180, 83, 9, 0.08);
}
.dash-nav-group.group-parent .dash-nav-item:hover {
  background: rgba(180, 83, 9, 0.08);
  color: #8B4513;
}
.dash-nav-group.group-parent .dash-nav-item.active {
  background: linear-gradient(135deg, #B45309, #D97706);
  color: #fff;
}
.dash-nav-group.group-parent .dash-nav-item.active i {
  color: #fff;
}

/* Profile — deep blue */
.dash-nav-group.group-profile {
  background: #F0F6FF;
  border-left: 3px solid var(--brand-blue);
}
.dash-nav-group.group-profile .dash-nav-head,
.dash-nav-group.group-profile .head-icon {
  color: var(--brand-blue);
}
.dash-nav-group.group-profile .dash-nav-head:hover {
  background: rgba(47, 74, 125, 0.06);
}

/* Account — purple */
.dash-nav-group.group-account {
  background: #F5EBFF;
  border-left: 3px solid #6A2F9F;
}
.dash-nav-group.group-account .dash-nav-head,
.dash-nav-group.group-account .head-icon {
  color: #6A2F9F;
}
.dash-nav-group.group-account .dash-nav-head:hover {
  background: rgba(106, 47, 159, 0.06);
}

/* Legacy alias — keep old group-activity class working if referenced anywhere */
.dash-nav-group.group-activity {
  background: #FFF7F0;
  border-left: 3px solid var(--brand-red);
}
.dash-nav-group.group-activity .dash-nav-head,
.dash-nav-group.group-activity .head-icon {
  color: var(--brand-red);
}


/* =========================================================
   DASHBOARD INNER PAGES — Toolbar with collapsible filter panel
   Used in activities + matches pages
   ========================================================= */

/* =========================================================
   PAGE HERO — Option B: Soft gradient hero card
   Used by all logged-in dashboard inside pages.
   Applies to both .page-head and .page-header-row wrappers.
   ========================================================= */
body.is-logged-in .page-head,
body.is-logged-in .page-header-row {
  background: linear-gradient(135deg, #FFF7F0, #FFFBF5);
  border: 1px solid #F3E0CB;
  border-radius: 14px;
  padding: 18px 22px;
  margin-bottom: 18px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  position: relative;
  overflow: hidden;
  flex-wrap: wrap;
}
body.is-logged-in .page-head::before,
body.is-logged-in .page-header-row::before {
  content: '';
  position: absolute;
  right: -40px;
  top: -40px;
  width: 140px;
  height: 140px;
  border-radius: 50%;
  background: rgba(214, 31, 38, 0.06);
  pointer-events: none;
}
body.is-logged-in .page-head > div:first-child,
body.is-logged-in .page-header-row > div:first-child {
  flex: 1;
  min-width: 0;
  z-index: 1;
}
body.is-logged-in .page-head h1,
body.is-logged-in .page-head h2,
body.is-logged-in .page-header-row h2 {
  font-family: var(--font-display) !important;
  font-size: 24px !important;
  font-weight: 700;
  color: var(--ink) !important;
  margin: 0 !important;
  line-height: 1.2;
  display: flex;
  align-items: center;
  gap: 14px;
  min-width: 0;
}
/* The first <i> inside the title becomes the big gradient icon block. */
body.is-logged-in .page-head h1 > i:first-child,
body.is-logged-in .page-head h2 > i:first-child,
body.is-logged-in .page-header-row h2 > i:first-child {
  width: 54px;
  height: 54px;
  border-radius: 14px;
  background: linear-gradient(135deg, var(--brand-red), var(--brand-gold)) !important;
  color: #fff !important;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 24px;
  box-shadow: 0 6px 16px rgba(214, 31, 38, 0.3);
  flex-shrink: 0;
  margin: 0 !important;
}
body.is-logged-in .page-head p,
body.is-logged-in .page-header-row p {
  font-size: 13px !important;
  color: var(--slate) !important;
  margin: 3px 0 0 !important;
  line-height: 1.4;
}
/* Right-side action area gets bumped above the decorative circle. */
body.is-logged-in .page-head > *:not(:first-child),
body.is-logged-in .page-header-row > *:not(:first-child) {
  z-index: 1;
}

/* Mobile: stack the action below; shrink icon and title. */
@media (max-width: 600px) {
  body.is-logged-in .page-head,
  body.is-logged-in .page-header-row {
    padding: 14px 16px;
    gap: 10px;
  }
  body.is-logged-in .page-head > div:first-child,
  body.is-logged-in .page-header-row > div:first-child {
    gap: 12px;
    width: 100%;
  }
  body.is-logged-in .page-head h1,
  body.is-logged-in .page-head h2,
  body.is-logged-in .page-header-row h2 {
    font-size: 19px !important;
    gap: 12px;
  }
  body.is-logged-in .page-head h1 > i:first-child,
  body.is-logged-in .page-head h2 > i:first-child,
  body.is-logged-in .page-header-row h2 > i:first-child {
    width: 44px;
    height: 44px;
    font-size: 20px;
    border-radius: 12px;
  }
  body.is-logged-in .page-head p,
  body.is-logged-in .page-header-row p {
    font-size: 12px !important;
  }
  body.is-logged-in .page-head > *:not(:first-child),
  body.is-logged-in .page-header-row > *:not(:first-child) {
    width: 100%;
  }
  body.is-logged-in .page-head > *:not(:first-child) .btn-new-ticket,
  body.is-logged-in .page-head > *:not(:first-child) > .btn,
  body.is-logged-in .page-head > a.btn-new-ticket {
    width: 100%;
    max-width: none !important;
    justify-content: center;
  }
}

/* Fallback rule kept for any non-logged-in usage of .page-header-row */
.page-header-row {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  margin-bottom: 18px;
  gap: 12px;
  flex-wrap: wrap;
}
.page-header-row h2 i { color: var(--brand-red); margin-right: 4px; }

/* Toolbar */
.dash-toolbar {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 14px;
  background: #fafafa;
  border: 1px solid var(--line);
  border-radius: 10px;
  margin-bottom: 14px;
  flex-wrap: wrap;
}
.dash-toolbar-left {
  display: flex;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
}
.dash-toolbar-right {
  margin-left: auto;
  display: flex;
  align-items: center;
  gap: 6px;
}

/* Toggle Filter button */
.btn-toggle-filter {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  padding: 8px 14px;
  background: linear-gradient(135deg, var(--brand-red), var(--brand-gold));
  color: #fff;
  border: none;
  border-radius: 8px;
  font-size: 13px;
  font-weight: 600;
  cursor: pointer;
  font-family: var(--font-body);
  transition: all 0.2s;
}
.btn-toggle-filter:hover {
  box-shadow: 0 3px 10px rgba(214, 31, 38, 0.3);
  transform: translateY(-1px);
}
.btn-toggle-filter .filter-count {
  background: rgba(255, 255, 255, 0.25);
  padding: 1px 7px;
  border-radius: 999px;
  font-size: 11px;
  font-weight: 700;
}
.btn-toggle-filter[aria-expanded="true"] {
  background: linear-gradient(135deg, var(--brand-gold), var(--brand-red));
  box-shadow: 0 4px 14px rgba(198, 138, 58, 0.35);
}
.btn-toggle-filter[aria-expanded="true"]::after {
  content: '';
}

.dash-result-count {
  font-size: 13px;
  color: var(--slate);
}

/* View toggle (grid/list) */
.btn-view {
  background: #fff;
  border: 1px solid var(--line);
  border-radius: 7px;
  padding: 7px 10px;
  font-size: 14px;
  color: var(--slate);
  cursor: pointer;
  transition: all 0.2s;
}
.btn-view.active {
  background: var(--brand-red);
  color: #fff;
  border-color: var(--brand-red);
}
.btn-view:hover:not(.active) {
  color: var(--brand-red);
  border-color: var(--brand-red);
}

/* =========================================================
   FILTER PANEL — innovative premium design
   - Soft gradient + radial pattern background
   - Decorative header strip with funnel icon
   - Field rows on translucent cream cards
   - Icon badges next to every label
   ========================================================= */
.dash-filter-panel {
  background:
    radial-gradient(circle at 100% 0%, rgba(214, 31, 38, 0.06), transparent 50%),
    radial-gradient(circle at 0% 100%, rgba(198, 138, 58, 0.06), transparent 50%),
    linear-gradient(135deg, #FFFBF5 0%, #FFF7F0 100%);
  border: 1px solid #F3E0CB;
  border-radius: 16px;
  padding: 0;
  margin-bottom: 18px;
  box-shadow: 0 6px 22px rgba(214, 31, 38, 0.08);
  animation: filterSlideDown 0.3s ease;
  overflow: hidden;
  position: relative;
}
/* Decorative top accent strip */
.dash-filter-panel::before {
  content: '';
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 4px;
  background: linear-gradient(90deg, var(--brand-red), var(--brand-gold), var(--brand-red));
  background-size: 200% 100%;
  animation: filterShimmer 4s linear infinite;
}
@keyframes filterShimmer {
  0% { background-position: 0% 50%; }
  100% { background-position: 200% 50%; }
}
.dash-filter-panel[hidden] { display: none; }
@keyframes filterSlideDown {
  from { opacity: 0; transform: translateY(-8px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* Decorative header inside the panel — auto-injected by JS */
.dash-filter-panel .filter-panel-head {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 16px 20px 14px;
  background: rgba(255, 255, 255, 0.55);
  border-bottom: 1px dashed rgba(214, 31, 38, 0.2);
  backdrop-filter: blur(4px);
}
.dash-filter-panel .filter-panel-head .fph-icon {
  width: 42px; height: 42px;
  border-radius: 12px;
  background: linear-gradient(135deg, var(--brand-red), var(--brand-gold));
  color: #fff;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 19px;
  box-shadow: 0 4px 12px rgba(214, 31, 38, 0.3);
  flex-shrink: 0;
}
.dash-filter-panel .filter-panel-head .fph-text { flex: 1; min-width: 0; }
.dash-filter-panel .filter-panel-head .fph-title {
  font-family: var(--font-display);
  font-size: 17px;
  font-weight: 700;
  color: var(--ink);
}
.dash-filter-panel .filter-panel-head .fph-sub {
  font-size: 12px;
  color: var(--slate);
  margin-top: 2px;
}
.dash-filter-panel .filter-panel-head .fph-badge {
  background: linear-gradient(135deg, var(--brand-red), var(--brand-gold));
  color: #fff;
  padding: 4px 12px;
  border-radius: 999px;
  font-size: 11.5px;
  font-weight: 700;
  display: inline-flex;
  align-items: center;
  gap: 5px;
}

/* Row.g-3 inside panel — translucent card containing the fields */
.dash-filter-panel .row.g-3 {
  background:
    linear-gradient(135deg, rgba(255, 255, 255, 0.7), rgba(255, 255, 255, 0.55));
  border: 1px solid rgba(243, 224, 203, 0.6);
  border-radius: 14px;
  padding: 16px 14px 4px;
  margin: 16px 16px 0;
  position: relative;
  backdrop-filter: blur(2px);
}
.dash-filter-panel .row.g-3::before {
  content: '';
  position: absolute;
  left: 0; top: 14px; bottom: 14px;
  width: 3px;
  background: linear-gradient(180deg, var(--brand-red), var(--brand-gold));
  border-radius: 0 3px 3px 0;
}

/* Form labels — icon badge prefix */
.dash-filter-panel .form-label {
  color: var(--ink);
  font-weight: 600;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 12.5px;
  margin-bottom: 5px;
}
.dash-filter-panel .form-label > i:first-child,
.dash-filter-panel .form-label > .field-icon {
  background: linear-gradient(135deg, rgba(214, 31, 38, 0.12), rgba(198, 138, 58, 0.12));
  color: var(--brand-red);
  width: 24px; height: 24px;
  border-radius: 7px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 12px;
  flex-shrink: 0;
  transition: all 0.2s;
}
.dash-filter-panel .col-md-3:hover .form-label > i:first-child,
.dash-filter-panel .col-md-6:hover .form-label > i:first-child,
.dash-filter-panel .col-md-4:hover .form-label > i:first-child,
.dash-filter-panel .col-md-3:hover .form-label > .field-icon,
.dash-filter-panel .col-md-6:hover .form-label > .field-icon,
.dash-filter-panel .col-md-4:hover .form-label > .field-icon {
  background: linear-gradient(135deg, var(--brand-red), var(--brand-gold));
  color: #fff;
  transform: scale(1.05);
}

/* Form controls inside filter panel — softer styling */
.dash-filter-panel .form-select,
.dash-filter-panel .form-control {
  background: #fff;
  border: 1px solid #EFE2D0;
  font-size: 13px;
}
.dash-filter-panel .form-select:focus,
.dash-filter-panel .form-control:focus {
  border-color: var(--brand-red);
  box-shadow: 0 0 0 3px rgba(214, 31, 38, 0.08);
}

.dash-filter-actions {
  display: flex;
  gap: 8px;
  justify-content: flex-end;
  margin: 16px 16px 0;
  padding: 14px 0 16px;
  border-top: 1px dashed rgba(214, 31, 38, 0.2);
}
@media (max-width: 576px) {
  .dash-filter-panel .row.g-3 { padding: 14px 12px 4px; margin: 12px 12px 0; }
  .dash-filter-actions { margin: 12px 12px 0; }
  .dash-filter-panel .filter-panel-head { padding: 14px 16px 12px; }
  .dash-filter-panel .filter-panel-head .fph-title { font-size: 15px; }
}

.dash-filter-actions {
  display: flex;
  gap: 8px;
  justify-content: flex-end;
  margin-top: 14px;
  padding-top: 12px;
  border-top: 1px solid var(--line);
}

/* Mobile-friendly tweaks */
@media (max-width: 768px) {
  .dash-toolbar {
    padding: 8px 10px;
    gap: 8px;
  }
  .dash-toolbar-left {
    flex: 1 1 100%;
  }
  .dash-toolbar-right {
    flex: 1 1 100%;
    margin-left: 0;
    justify-content: space-between;
  }
  .dash-result-count { font-size: 12px; }
  .btn-toggle-filter { padding: 7px 12px; font-size: 12.5px; }
}

/* Pagination */
.pagination .page-link {
  color: var(--brand-red);
  border: 1px solid var(--line);
  font-size: 13px;
  padding: 7px 12px;
}
.pagination .page-item.active .page-link {
  background: linear-gradient(135deg, var(--brand-red), var(--brand-gold));
  border-color: transparent;
  color: #fff;
}
.pagination .page-item.disabled .page-link {
  color: #ccc;
}


/* =========================================================
   INBOX / MAILBOX PAGES — tabs, cards, message boxes, actions
   ========================================================= */

/* Sidebar sub-items (Pending / Accepted / Declined under Inbox) — slight indent */
.dash-nav-sub {
  padding-left: 22px !important;
  font-size: 12.5px !important;
  font-weight: 500 !important;
}
.dash-nav-sub i {
  font-size: 12.5px !important;
}

/* Top tab strip: Pending / Accepted / Declined */
.ib-tabs {
  display: flex;
  gap: 6px;
  padding: 6px;
  background: #fafafa;
  border: 1px solid var(--line);
  border-radius: 999px;
  margin-bottom: 16px;
  flex-wrap: wrap;
  width: fit-content;
}
.ib-tab {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 8px 16px;
  border-radius: 999px;
  font-size: 13px;
  font-weight: 600;
  color: var(--slate);
  text-decoration: none;
  transition: all 0.2s ease;
  white-space: nowrap;
}
.ib-tab:hover {
  color: var(--brand-red);
  background: #fff;
}
.ib-tab.active {
  background: linear-gradient(135deg, var(--brand-red), var(--brand-gold));
  color: #fff;
  box-shadow: 0 3px 10px rgba(214, 31, 38, 0.25);
}
.ib-tab-count {
  background: rgba(0, 0, 0, 0.08);
  padding: 1px 8px;
  border-radius: 999px;
  font-size: 11px;
  font-weight: 700;
}
.ib-tab.active .ib-tab-count {
  background: rgba(255, 255, 255, 0.25);
}

/* Action toolbar (Select All / Delete All / Filter) */
.ib-action-toolbar {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 10px 14px;
  background: #fafafa;
  border: 1px solid var(--line);
  border-radius: 10px;
  margin-bottom: 14px;
  flex-wrap: wrap;
}
.ib-select-all {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: 13px;
  font-weight: 500;
  color: var(--ink);
  cursor: pointer;
  user-select: none;
}
.ib-select-all input {
  accent-color: var(--brand-red);
  width: 16px;
  height: 16px;
  cursor: pointer;
}
.ib-bulk-btn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 7px 14px;
  border: none;
  border-radius: 8px;
  font-size: 12.5px;
  font-weight: 600;
  cursor: pointer;
  transition: all 0.2s;
  font-family: var(--font-body);
}
.ib-bulk-btn.delete {
  background: var(--brand-red);
  color: #fff;
}
.ib-bulk-btn.delete:hover {
  background: var(--brand-red-hover);
}
.ib-bulk-btn.filter {
  background: var(--brand-gold);
  color: #fff;
}
.ib-bulk-btn.filter:hover {
  background: var(--brand-gold-dark);
}

/* Inbox card container */
.ib-cards {
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.ib-card {
  background: #fff;
  border: 1px solid var(--line);
  border-radius: 12px;
  padding: 14px;
  transition: box-shadow 0.2s ease;
}
.ib-card:hover {
  box-shadow: 0 4px 14px rgba(0, 0, 0, 0.06);
}

/* Top section of card: checkbox + photo + info + action icons */
.ib-card-top {
  display: flex;
  gap: 12px;
  align-items: flex-start;
}
.ib-check {
  width: 17px;
  height: 17px;
  accent-color: var(--brand-red);
  cursor: pointer;
  margin-top: 4px;
  flex-shrink: 0;
}
.ib-photo {
  width: 90px;
  height: 90px;
  flex-shrink: 0;
  border-radius: 10px;
  overflow: hidden;
  background: #f0f0f0;
}
.ib-photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.ib-info {
  flex: 1;
  min-width: 0;
}

.ib-name-row {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  margin-bottom: 4px;
}
.ib-name {
  font-family: var(--font-display);
  font-size: 17px;
  font-weight: 700;
  color: var(--brand-red);
  text-decoration: none;
}
.ib-name:hover { text-decoration: underline; }
.ib-id {
  font-size: 12.5px;
  color: var(--slate);
}
.ib-premium-badge {
  display: inline-flex;
  align-items: center;
  gap: 3px;
  background: linear-gradient(135deg, var(--brand-gold), #E2A857);
  color: #fff;
  font-size: 10.5px;
  padding: 2px 8px;
  border-radius: 999px;
  font-weight: 600;
}

.ib-meta-row {
  display: flex;
  align-items: center;
  gap: 12px;
  font-size: 12.5px;
  color: var(--slate);
  margin-bottom: 4px;
  flex-wrap: wrap;
}
.ib-role {
  color: var(--ink);
  font-weight: 500;
}
.lc-status, .ib-meta-row .lc-status {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: 12px;
}
.lc-status .dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  display: inline-block;
}
.lc-status.online { color: #16A34A; }
.lc-status.online .dot { background: #16A34A; }
.lc-status.offline { color: #C62828; }
.lc-status.offline .dot { background: #C62828; }
.ib-chat-link {
  color: var(--brand-blue);
  text-decoration: none;
  font-size: 12.5px;
  display: inline-flex;
  align-items: center;
  gap: 4px;
}
.ib-chat-link:hover { color: var(--brand-red); }

.ib-details {
  font-size: 12.5px;
  color: var(--slate);
  line-height: 1.5;
}

/* Top action icons (eye toggle / delete) on the right */
.ib-card-actions-top {
  display: flex;
  gap: 6px;
  flex-shrink: 0;
}
.ib-icon-btn {
  width: 30px;
  height: 30px;
  border: 1px solid var(--line);
  background: #fff;
  border-radius: 6px;
  color: var(--slate);
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  transition: all 0.2s;
  font-size: 14px;
}
.ib-icon-btn:hover {
  color: var(--brand-red);
  border-color: var(--brand-red);
}
.ib-icon-btn.delete:hover {
  color: var(--brand-red);
  background: rgba(214, 31, 38, 0.08);
}

/* Message box below */
.ib-message-box {
  margin-top: 12px;
  padding: 12px;
  background: #fafafa;
  border: 1px solid #eee;
  border-radius: 10px;
}
.ib-msg-tag {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  font-size: 11.5px;
  font-weight: 600;
  padding: 3px 10px;
  border-radius: 999px;
  margin-bottom: 8px;
}
.ib-msg-tag.interest {
  background: rgba(214, 31, 38, 0.1);
  color: var(--brand-red);
}
.ib-msg-tag.msg {
  background: rgba(47, 74, 125, 0.1);
  color: var(--brand-blue);
}
.ib-msg-text {
  margin: 6px 0 10px;
  font-size: 13px;
  color: var(--ink);
  line-height: 1.5;
}

/* Card action buttons */
.ib-card-actions {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  align-items: center;
}
.ib-btn {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 7px 16px;
  border: none;
  border-radius: 7px;
  font-size: 12.5px;
  font-weight: 600;
  cursor: pointer;
  transition: all 0.2s;
  text-decoration: none;
  font-family: var(--font-body);
}
.ib-btn-yes {
  background: #16A34A;
  color: #fff;
}
.ib-btn-yes:hover {
  background: #15803D;
  transform: translateY(-1px);
}
.ib-btn-no {
  background: var(--brand-red);
  color: #fff;
}
.ib-btn-no:hover {
  background: var(--brand-red-hover);
  transform: translateY(-1px);
}
.ib-btn-chat {
  background: var(--brand-blue);
  color: #fff;
}
.ib-btn-chat:hover {
  background: var(--brand-blue-dark, #1f3257);
  color: #fff;
}
.ib-btn-undo {
  background: #fff;
  color: var(--ink);
  border: 1px solid var(--line);
}
.ib-btn-undo:hover {
  background: #f5f5f5;
  border-color: var(--brand-red);
  color: var(--brand-red);
}
.ib-btn-delete-perm {
  background: #C62828;
  color: #fff;
}
.ib-btn-delete-perm:hover { background: #8E1B1B; }

/* Status pill (for accepted/declined items) */
.ib-status-pill {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 6px 14px;
  border-radius: 999px;
  font-size: 12px;
  font-weight: 600;
}
.ib-status-pill.accepted {
  background: rgba(22, 163, 74, 0.12);
  color: #16A34A;
}
.ib-status-pill.declined {
  background: rgba(214, 31, 38, 0.12);
  color: var(--brand-red);
}
.ib-status-pill.sent {
  background: rgba(198, 138, 58, 0.15);
  color: var(--brand-gold-dark);
}

/* Bottom Delete All */
.ib-bottom-actions {
  margin-top: 18px;
  display: flex;
  justify-content: flex-start;
}

/* Mobile tweaks */
@media (max-width: 768px) {
  .ib-card-top {
    flex-wrap: wrap;
  }
  .ib-photo {
    width: 70px;
    height: 70px;
  }
  .ib-name { font-size: 15px; }
  .ib-card-actions-top {
    margin-left: auto;
  }
  .ib-tabs {
    width: 100%;
    justify-content: center;
  }
  .ib-tab { font-size: 12px; padding: 7px 12px; }
  .ib-action-toolbar {
    padding: 8px 10px;
    gap: 8px;
  }
}


/* =========================================================
   SIDEBAR — Standalone Upgrade button (outside Settings group)
   ========================================================= */
.dash-nav-upgrade {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-top: 10px;
  background: linear-gradient(135deg, var(--brand-gold), #E2A857);
  color: #fff !important;
  font-weight: 600;
  border-radius: 10px;
  padding: 11px 14px !important;
  box-shadow: 0 4px 12px rgba(198, 138, 58, 0.25);
  transition: all 0.25s ease;
  position: relative;
  overflow: hidden;
}
.dash-nav-upgrade::before {
  content: '';
  position: absolute;
  top: 0; left: -100%;
  width: 100%; height: 100%;
  background: linear-gradient(90deg, transparent, rgba(255,255,255,0.25), transparent);
  transition: left 0.6s ease;
}
.dash-nav-upgrade:hover::before { left: 100%; }
.dash-nav-upgrade i { font-size: 17px; color: #fff !important; }
.dash-nav-upgrade:hover {
  background: linear-gradient(135deg, var(--brand-gold-dark), var(--brand-gold));
  transform: translateY(-1px);
  box-shadow: 0 6px 16px rgba(198, 138, 58, 0.35);
  color: #fff !important;
}
.dash-nav-upgrade .upgrade-pill {
  margin-left: auto;
  background: rgba(255, 255, 255, 0.25);
  color: #fff;
  font-size: 10.5px;
  font-weight: 700;
  padding: 2px 9px;
  border-radius: 999px;
  letter-spacing: 0.04em;
}


/* =========================================================
   SETTINGS PAGES — MODERN DESIGN SYSTEM (v2)
   - Gradient card heads with floating icons
   - Icons on every field
   - Animated fade-in + hover effects
   ========================================================= */

/* Sidebar sub-items (Pending / Accepted / Declined under Inbox) */
.dash-nav-sub {
  padding-left: 22px !important;
  font-size: 12.5px !important;
  font-weight: 500 !important;
}
.dash-nav-sub i { font-size: 12.5px !important; }

/* Card shell */
.s-card {
  background: #fff;
  border-radius: 16px;
  overflow: hidden;
  box-shadow: 0 4px 14px rgba(0, 0, 0, 0.04);
  border: 1px solid #eee;
  transition: box-shadow 0.3s ease;
  margin-bottom: 40px; /* breathing room between card and footer */
}
.s-card:hover { box-shadow: 0 8px 24px rgba(0, 0, 0, 0.08); }

/* Mobile: less margin since footer naturally has padding too */
@media (max-width: 768px) {
  .s-card { margin-bottom: 28px; }
}

/* Fade-in animation on page load */
.s-fade-in {
  animation: sFadeIn 0.5s cubic-bezier(0.16, 1, 0.3, 1);
}
@keyframes sFadeIn {
  from { opacity: 0; transform: translateY(12px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* Gradient card head */
.s-card-head {
  padding: 24px 28px;
  background: linear-gradient(135deg, var(--brand-red), var(--brand-gold));
  color: #fff;
  position: relative;
  overflow: hidden;
}
.s-card-head::after {
  content: '';
  position: absolute;
  right: -30px; top: -30px;
  width: 160px; height: 160px;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.08);
  animation: sFloat 8s ease-in-out infinite;
}
.s-card-head::before {
  content: '';
  position: absolute;
  right: 30px; bottom: -50px;
  width: 100px; height: 100px;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.08);
  animation: sFloat 10s ease-in-out infinite reverse;
}
@keyframes sFloat {
  0%, 100% { transform: translate(0, 0); }
  50% { transform: translate(-8px, 8px); }
}
.s-card-head.blue { background: linear-gradient(135deg, var(--brand-blue), #4A6BB3); }
.s-card-head.gold { background: linear-gradient(135deg, var(--brand-gold), #E2A857); }
.s-card-head.warn { background: linear-gradient(135deg, var(--brand-gold), var(--brand-red)); }
.s-card-head.danger { background: linear-gradient(135deg, #B71C22, #C62828); }
.s-card-head-row {
  display: flex;
  align-items: center;
  gap: 16px;
  position: relative;
  z-index: 2;
}
.s-card-icon {
  width: 54px; height: 54px;
  background: rgba(255, 255, 255, 0.18);
  border: 1.5px solid rgba(255, 255, 255, 0.35);
  border-radius: 14px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 24px;
  backdrop-filter: blur(8px);
  flex-shrink: 0;
  transition: transform 0.3s ease;
}
.s-card:hover .s-card-icon { transform: rotate(-6deg) scale(1.05); }
.s-card-title {
  font-family: var(--font-display);
  font-size: 24px;
  font-weight: 700;
  line-height: 1.2;
}
.s-card-subtitle {
  font-size: 13px;
  opacity: 0.9;
  margin-top: 2px;
}
.s-card-body { padding: 28px; }
@media (max-width: 576px) {
  .s-card-head { padding: 20px; }
  .s-card-body { padding: 20px; }
  .s-card-icon { width: 46px; height: 46px; font-size: 20px; }
  .s-card-title { font-size: 20px; }
}

/* Info banner */
.s-info-banner {
  background: linear-gradient(135deg, #FFF7F0, #FFF1E5);
  border-left: 4px solid var(--brand-gold);
  padding: 12px 16px;
  border-radius: 0 10px 10px 0;
  font-size: 13.5px;
  color: #6E4F2A;
  margin-bottom: 22px;
  display: flex;
  gap: 10px;
  align-items: flex-start;
  line-height: 1.5;
}
.s-info-banner.warn {
  background: linear-gradient(135deg, #FFE4D6, #FCD2B5);
  border-left-color: var(--brand-red);
  color: #7A1D20;
}
.s-info-banner i {
  color: var(--brand-gold-dark);
  font-size: 18px;
  margin-top: 1px;
  flex-shrink: 0;
}
.s-info-banner.warn i { color: var(--brand-red); }

/* Modern field (icon on label, no oval prefix bubble) */
.field-modern { margin-bottom: 18px; }
.field-modern .field-label {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 13px;
  font-weight: 600;
  color: var(--ink);
  margin-bottom: 6px;
}
.field-modern .field-label i {
  color: var(--brand-red);
  font-size: 14px;
}

.field-modern .field-input-wrap {
  position: relative;
  display: flex;
  align-items: center;
  background: #fff;
  border: 1.5px solid var(--line);
  border-radius: 12px;
  transition: border-color 0.25s ease, box-shadow 0.25s ease;
  padding: 0 16px;
}
.field-modern .field-input-wrap:hover { border-color: #C0C0C0; }
.field-modern .field-input-wrap:focus-within {
  border-color: var(--brand-red);
  box-shadow: 0 0 0 3px rgba(214, 31, 38, 0.1);
}
.field-modern .field-input-wrap.locked {
  background: #fafafa;
  border-style: dashed;
}
.field-modern .field-input-wrap input,
.field-modern .field-input-wrap select {
  flex: 1;
  border: none;
  outline: none;
  padding: 13px 0;
  font-size: 14px;
  background: transparent;
  color: var(--ink);
  font-family: var(--font-body);
  min-width: 0;
}
.field-modern .field-input-wrap input[readonly] { color: var(--slate); cursor: not-allowed; }
.field-modern .field-prefix-icon {
  color: var(--slate);
  font-size: 16px;
  margin-right: 10px;
  transition: color 0.25s;
  flex-shrink: 0;
}
.field-modern .field-input-wrap:focus-within .field-prefix-icon { color: var(--brand-red); }
.field-modern .field-suffix-action {
  background: none;
  border: none;
  color: var(--slate);
  cursor: pointer;
  padding: 4px 6px;
  border-radius: 6px;
  transition: all 0.2s;
}
.field-modern .field-suffix-action:hover {
  color: var(--brand-red);
  background: rgba(214, 31, 38, 0.06);
}
.field-modern .field-hint {
  font-size: 12px;
  color: var(--slate);
  margin-top: 6px;
  display: flex;
  align-items: center;
  gap: 4px;
}
.field-modern .field-hint i { color: var(--brand-gold-dark); }

/* Verified pill (Edit Email) */
.verified-pill {
  font-size: 11px;
  color: #16A34A;
  font-weight: 700;
  background: rgba(22, 163, 74, 0.1);
  padding: 3px 9px;
  border-radius: 999px;
  display: inline-flex;
  align-items: center;
  gap: 4px;
  flex-shrink: 0;
}

/* Modern buttons */
.btn-modern {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  border: none;
  border-radius: 12px;
  padding: 11px 22px;
  font-size: 13.5px;
  font-weight: 600;
  cursor: pointer;
  transition: all 0.25s ease;
  font-family: var(--font-body);
  position: relative;
  overflow: hidden;
}
.btn-modern::before {
  content: '';
  position: absolute;
  top: 0; left: -100%;
  width: 100%; height: 100%;
  background: linear-gradient(90deg, transparent, rgba(255,255,255,0.3), transparent);
  transition: left 0.6s ease;
}
.btn-modern:hover::before { left: 100%; }
.btn-modern.primary {
  background: linear-gradient(135deg, var(--brand-red), var(--brand-gold));
  color: #fff;
  box-shadow: 0 4px 12px rgba(214, 31, 38, 0.25);
}
.btn-modern.primary:hover {
  transform: translateY(-2px);
  box-shadow: 0 8px 20px rgba(214, 31, 38, 0.35);
}
.btn-modern.ghost {
  background: #fff;
  color: var(--slate);
  border: 1.5px solid var(--line);
}
.btn-modern.ghost:hover {
  border-color: var(--brand-red);
  color: var(--brand-red);
  transform: translateY(-1px);
}
.btn-modern.danger {
  background: linear-gradient(135deg, #C62828, var(--brand-red));
  color: #fff;
  box-shadow: 0 4px 12px rgba(198, 40, 40, 0.25);
}
.btn-modern.danger:hover {
  transform: translateY(-2px);
  box-shadow: 0 8px 20px rgba(198, 40, 40, 0.4);
}
.btn-modern.warn {
  background: linear-gradient(135deg, var(--brand-gold), #E2A857);
  color: #fff;
  box-shadow: 0 4px 12px rgba(198, 138, 58, 0.25);
}
.btn-modern.warn:hover {
  transform: translateY(-2px);
  box-shadow: 0 8px 20px rgba(198, 138, 58, 0.4);
}

/* Action row */
.action-row {
  display: flex;
  gap: 10px;
  margin-top: 22px;
  flex-wrap: wrap;
}
.action-row.center { justify-content: center; }

/* Password strength */
.pwd-strength {
  margin-top: 8px;
  height: 4px;
  background: #eee;
  border-radius: 999px;
  overflow: hidden;
}
.pwd-strength .bar {
  height: 100%;
  width: 0%;
  background: linear-gradient(90deg, #C62828, var(--brand-red), var(--brand-gold), #16A34A);
  border-radius: 999px;
  transition: width 0.3s ease;
}
.pwd-tips {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  margin-top: 8px;
  font-size: 11.5px;
  color: var(--slate);
}
.pwd-tip {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  transition: color 0.25s;
}
.pwd-tip.met { color: #16A34A; font-weight: 600; }
.pwd-tip i { font-size: 12px; }

/* Toggle group + rows */
.toggle-group {
  background: #fff;
  border: 1px solid var(--line);
  border-radius: 14px;
  overflow: hidden;
  transition: box-shadow 0.25s;
}
.toggle-group:hover { box-shadow: 0 4px 12px rgba(0, 0, 0, 0.04); }
.toggle-group + .toggle-group { margin-top: 16px; }
.toggle-group-head {
  padding: 14px 20px;
  background: linear-gradient(135deg, #fafafa, #fff);
  border-bottom: 1px solid #eee;
  display: flex;
  align-items: center;
  gap: 10px;
}
.toggle-group-icon {
  width: 36px; height: 36px;
  border-radius: 10px;
  background: rgba(214, 31, 38, 0.1);
  color: var(--brand-red);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 16px;
  flex-shrink: 0;
}
.toggle-group-icon.blue {
  background: rgba(47, 74, 125, 0.1);
  color: var(--brand-blue);
}
.toggle-group-icon.gold {
  background: rgba(198, 138, 58, 0.12);
  color: var(--brand-gold-dark);
}
.toggle-group-title {
  font-weight: 700;
  font-size: 14px;
  color: var(--ink);
}
.toggle-group-desc {
  font-size: 12px;
  color: var(--slate);
  margin-top: 2px;
}

.toggle-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 14px 20px;
  border-bottom: 1px solid #f5f5f5;
  gap: 14px;
  transition: background 0.2s;
}
.toggle-row:last-child { border-bottom: none; }
.toggle-row:hover { background: #fafafa; }
.toggle-row .tr-text { flex: 1; min-width: 0; }
.toggle-row .tr-title {
  font-size: 13.5px;
  font-weight: 600;
  color: var(--ink);
  display: flex;
  align-items: center;
  gap: 6px;
}
.toggle-row .tr-title i { color: var(--brand-gold-dark); font-size: 14px; }
.toggle-row .tr-sub {
  font-size: 12px;
  color: var(--slate);
  margin-top: 1px;
}

/* Toggle switch (smooth animation) */
.toggle-switch {
  position: relative;
  display: inline-block;
  width: 44px;
  height: 24px;
  flex-shrink: 0;
}
.toggle-switch input { opacity: 0; width: 0; height: 0; }
.toggle-switch .slider {
  position: absolute;
  cursor: pointer;
  top: 0; left: 0; right: 0; bottom: 0;
  background: #ccc;
  border-radius: 999px;
  transition: 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}
.toggle-switch .slider::before {
  position: absolute;
  content: "";
  height: 18px;
  width: 18px;
  left: 3px;
  bottom: 3px;
  background: #fff;
  border-radius: 50%;
  transition: 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.15);
}
.toggle-switch input:checked + .slider { background: #16A34A; }
.toggle-switch input:checked + .slider::before {
  transform: translateX(20px);
  background: #fff;
}

/* Choice cards (radio replaced) */
.choice-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 12px;
  margin-bottom: 12px;
}
.choice-card {
  background: #fff;
  border: 2px solid var(--line);
  border-radius: 14px;
  padding: 18px 20px;
  cursor: pointer;
  transition: all 0.25s ease;
  display: flex;
  gap: 14px;
  align-items: flex-start;
  position: relative;
  overflow: hidden;
}
.choice-card::before {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(135deg, rgba(214,31,38,0), rgba(198,138,58,0));
  transition: background 0.25s;
  pointer-events: none;
}
.choice-card:hover {
  border-color: var(--brand-red);
  transform: translateY(-2px);
  box-shadow: 0 6px 16px rgba(214, 31, 38, 0.08);
}
.choice-card.selected {
  border-color: var(--brand-red);
  background: linear-gradient(135deg, #FFF7F0, #FFFBF5);
  box-shadow: 0 4px 12px rgba(214, 31, 38, 0.08);
}
.choice-card .cc-radio {
  width: 22px; height: 22px;
  border: 2px solid #ccc;
  border-radius: 50%;
  flex-shrink: 0;
  margin-top: 2px;
  position: relative;
  transition: all 0.25s ease;
}
.choice-card.selected .cc-radio {
  border-color: var(--brand-red);
}
.choice-card.selected .cc-radio::after {
  content: '';
  position: absolute;
  inset: 3px;
  border-radius: 50%;
  background: var(--brand-red);
  animation: sPop 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);
}
@keyframes sPop {
  0% { transform: scale(0); }
  100% { transform: scale(1); }
}
.choice-card .cc-icon {
  width: 40px; height: 40px;
  border-radius: 10px;
  background: rgba(214, 31, 38, 0.08);
  color: var(--brand-red);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 18px;
  flex-shrink: 0;
  transition: all 0.25s ease;
}
.choice-card.selected .cc-icon {
  background: linear-gradient(135deg, var(--brand-red), var(--brand-gold));
  color: #fff;
  transform: scale(1.08);
}
.choice-card .cc-body { flex: 1; min-width: 0; }
.choice-card .cc-title {
  font-size: 14px;
  font-weight: 600;
  color: var(--ink);
  margin-bottom: 4px;
}
.choice-card .cc-desc {
  font-size: 12.5px;
  color: var(--slate);
  line-height: 1.5;
}
.choice-card .cc-recommended {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  background: linear-gradient(135deg, #16A34A, #22C55E);
  color: #fff;
  font-size: 10px;
  font-weight: 700;
  padding: 3px 9px;
  border-radius: 999px;
  margin-top: 8px;
  letter-spacing: 0.04em;
  box-shadow: 0 2px 6px rgba(22, 163, 74, 0.2);
}

/* Modern tabs (privacy page) */
.modern-tabs {
  display: flex;
  background: #f5f3ef;
  padding: 5px;
  border-radius: 14px;
  gap: 4px;
  margin-bottom: 22px;
}
.modern-tab {
  flex: 1;
  text-align: center;
  padding: 10px 16px;
  border-radius: 10px;
  font-size: 13px;
  font-weight: 600;
  color: var(--slate);
  cursor: pointer;
  transition: all 0.25s ease;
  text-decoration: none;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
}
.modern-tab:hover { color: var(--brand-red); }
.modern-tab.active {
  background: #fff;
  color: var(--brand-red);
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
  transform: scale(1.02);
}

/* Privacy section accordion */
.priv-section {
  background: #fff;
  border: 1px solid var(--line);
  border-radius: 14px;
  margin-bottom: 12px;
  overflow: hidden;
  transition: box-shadow 0.25s;
}
.priv-section:hover { box-shadow: 0 4px 12px rgba(0, 0, 0, 0.04); }
.priv-section-head {
  padding: 16px 20px;
  cursor: pointer;
  display: flex;
  align-items: center;
  gap: 12px;
  user-select: none;
}
.priv-section-icon {
  width: 38px; height: 38px;
  border-radius: 10px;
  background: rgba(214, 31, 38, 0.08);
  color: var(--brand-red);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 16px;
  flex-shrink: 0;
}
.priv-section-head .ps-text { flex: 1; }
.priv-section-head .ps-title {
  font-weight: 700;
  font-size: 14px;
  display: flex;
  align-items: center;
  gap: 6px;
}
.priv-section-head .ps-title i { color: var(--brand-red); font-size: 13px; }
.priv-section-head .ps-desc {
  font-size: 12px;
  color: var(--slate);
  margin-top: 1px;
}
.priv-section-head .ps-chev {
  transition: transform 0.3s ease;
  color: var(--slate);
}
.priv-section.is-open .ps-chev { transform: rotate(180deg); }
.priv-section-body {
  padding: 16px 20px 20px;
  border-top: 1px solid #f0f0f0;
  background: #fafafa;
  display: none;
  animation: sFadeIn 0.3s ease;
}
.priv-section.is-open .priv-section-body { display: block; }

/* Contact info card (inside Mobile Privacy) */
.contact-info-card {
  background: #fff;
  border: 1px solid var(--line);
  border-radius: 12px;
  padding: 8px 18px;
  margin-bottom: 14px;
}
.contact-info-card .ci-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 10px 0;
  border-bottom: 1px solid #f5f5f5;
  font-size: 13px;
  gap: 10px;
  flex-wrap: wrap;
}
.contact-info-card .ci-row:last-child { border-bottom: none; }
.contact-info-card .ci-label {
  color: var(--slate);
  display: inline-flex;
  align-items: center;
  gap: 5px;
}
.contact-info-card .ci-label i { color: var(--brand-blue); }
.contact-info-card .ci-value {
  font-weight: 600;
  color: var(--ink);
  margin-left: 6px;
}
.btn-mini-edit {
  background: rgba(198, 138, 58, 0.12);
  border: 1px solid rgba(198, 138, 58, 0.3);
  color: var(--brand-gold-dark);
  border-radius: 8px;
  padding: 5px 12px;
  font-size: 12px;
  font-weight: 600;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  gap: 4px;
  transition: all 0.2s;
}
.btn-mini-edit:hover {
  background: var(--brand-gold);
  color: #fff;
  transform: translateY(-1px);
}

/* Status card */
.status-card {
  background: linear-gradient(135deg, #FFF7F0, #FFFBF5);
  border: 1px solid #F3E0CB;
  border-radius: 14px;
  padding: 16px 20px;
  margin-bottom: 22px;
  display: flex;
  gap: 14px;
  align-items: center;
}
.status-card.success-status {
  background: linear-gradient(135deg, #F0FAF3, #ECFAEE);
  border-color: #C8E9CC;
}
.status-card .sc-icon {
  width: 48px; height: 48px;
  border-radius: 50%;
  background: linear-gradient(135deg, #16A34A, #22C55E);
  color: #fff;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 20px;
  flex-shrink: 0;
  box-shadow: 0 4px 12px rgba(22, 163, 74, 0.25);
}
.status-card .sc-title {
  font-weight: 700;
  color: var(--ink);
  font-size: 14px;
}
.status-card .sc-desc {
  font-size: 12.5px;
  color: var(--slate);
  margin-top: 2px;
}
.status-card .sc-desc i { color: var(--brand-gold-dark); }

/* Reason cards (delete) */
.reason-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 12px;
  margin-bottom: 22px;
}
@media (max-width: 768px) { .reason-grid { grid-template-columns: 1fr; } }
.reason-card {
  background: #fff;
  border: 2px solid var(--line);
  border-radius: 14px;
  padding: 22px 16px;
  text-align: center;
  cursor: pointer;
  transition: all 0.25s ease;
  display: block;
}
.reason-card:hover {
  border-color: var(--brand-red);
  transform: translateY(-3px);
  box-shadow: 0 8px 18px rgba(214, 31, 38, 0.1);
}
.reason-card.selected {
  border-color: var(--brand-red);
  background: linear-gradient(135deg, #FFF7F0, #FFF1E5);
  box-shadow: 0 6px 16px rgba(214, 31, 38, 0.12);
}
.reason-card .rc-emoji {
  font-size: 36px;
  margin-bottom: 8px;
  display: block;
  transition: transform 0.3s;
}
.reason-card:hover .rc-emoji { transform: scale(1.15) rotate(-4deg); }
.reason-card .rc-title {
  font-weight: 600;
  color: var(--ink);
  font-size: 13.5px;
}
.reason-card .rc-sub {
  font-size: 11.5px;
  color: var(--slate);
  margin-top: 2px;
}

/* Source pills (delete page) */
.src-pill {
  background: #fff;
  border: 1.5px solid var(--line);
  color: var(--slate);
  padding: 8px 14px;
  border-radius: 999px;
  cursor: pointer;
  font-size: 12.5px;
  font-weight: 600;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  transition: all 0.2s;
}
.src-pill:hover {
  border-color: var(--brand-red);
  color: var(--brand-red);
}
.src-pill.selected {
  background: #fff;
  border-color: var(--brand-red);
  color: var(--brand-red);
}
.src-pill i { font-size: 13px; }

/* 2-column grid for form fields */
.form-grid-2 {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
}
@media (max-width: 768px) { .form-grid-2 { grid-template-columns: 1fr; } }

/* =========================================================
   CONFIRM MODAL — used by settings pages for OK/Cancel dialogs
   ========================================================= */
.cm-backdrop {
  position: fixed;
  inset: 0;
  background: rgba(20, 24, 38, 0.6);
  z-index: 9998;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 18px;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.2s ease;
}
.cm-backdrop.is-open {
  opacity: 1;
  pointer-events: auto;
}
.cm-dialog {
  background: #fff;
  border-radius: 16px;
  max-width: 460px;
  width: 100%;
  box-shadow: 0 20px 50px rgba(0, 0, 0, 0.25);
  overflow: hidden;
  transform: scale(0.92);
  transition: transform 0.2s ease;
}
.cm-backdrop.is-open .cm-dialog {
  transform: scale(1);
}
.cm-icon {
  display: flex;
  justify-content: center;
  padding: 22px 20px 0;
}
.cm-icon-circle {
  width: 72px;
  height: 72px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 34px;
  color: #fff;
  background: linear-gradient(135deg, var(--brand-red), var(--brand-gold));
  box-shadow: 0 8px 20px rgba(214, 31, 38, 0.25);
}
.cm-icon-circle.info { background: linear-gradient(135deg, var(--brand-blue), #4A6BB3); box-shadow: 0 8px 20px rgba(47, 74, 125, 0.25); }
.cm-icon-circle.danger { background: linear-gradient(135deg, #C62828, var(--brand-red)); box-shadow: 0 8px 20px rgba(198, 40, 40, 0.25); }
.cm-icon-circle.success { background: linear-gradient(135deg, #16A34A, #22C55E); box-shadow: 0 8px 20px rgba(22, 163, 74, 0.25); }
.cm-icon-circle.warn { background: linear-gradient(135deg, #F2B521, #FFCD3F); box-shadow: 0 8px 20px rgba(242, 181, 33, 0.3); }

.cm-body {
  padding: 18px 28px 20px;
  text-align: center;
}
.cm-title {
  font-family: var(--font-display);
  font-size: 22px;
  font-weight: 700;
  color: var(--ink);
  margin-bottom: 8px;
}
.cm-message {
  font-size: 14px;
  color: var(--slate);
  line-height: 1.5;
}
.cm-actions {
  display: flex;
  gap: 10px;
  padding: 16px 24px 22px;
  justify-content: center;
  flex-wrap: wrap;
}
.cm-btn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  border: none;
  border-radius: 999px;
  padding: 10px 24px;
  font-size: 14px;
  font-weight: 600;
  font-family: var(--font-body);
  cursor: pointer;
  min-width: 110px;
  justify-content: center;
  transition: all 0.2s;
}
.cm-btn.cm-cancel {
  background: #fff;
  border: 1.5px solid var(--line);
  color: var(--slate);
}
.cm-btn.cm-cancel:hover {
  border-color: var(--slate);
  color: var(--ink);
}
.cm-btn.cm-ok {
  background: linear-gradient(135deg, var(--brand-red), var(--brand-gold));
  color: #fff;
}
.cm-btn.cm-ok:hover {
  box-shadow: 0 6px 16px rgba(214, 31, 38, 0.3);
  transform: translateY(-1px);
}
.cm-btn.cm-ok.danger {
  background: linear-gradient(135deg, #C62828, var(--brand-red));
}
.cm-btn.cm-ok.success {
  background: linear-gradient(135deg, #16A34A, #22C55E);
}
.cm-btn.cm-ok.warn {
  background: linear-gradient(135deg, #F2B521, #FFCD3F);
  color: var(--ink);
}


/* =========================================================
   SEARCH PAGES (4 TABS) — innovative redesign
   Used by: search-regular.html, search-advanced.html,
            search-keyword.html, search-by-id.html
   ========================================================= */

/* ============ Layout grid (main + sidebar) ============ */
.sx-layout {
  display: grid;
  grid-template-columns: 1fr 320px;
  gap: 20px;
  padding: 18px 0 60px;
}
@media (max-width: 992px) {
  .sx-layout { grid-template-columns: 1fr; }
}
/* Grid items default to min-width:auto, letting wide children (e.g. .sx-tabs row)
   push the column wider than the track. Force them to honor the 1fr track. */
.sx-panel, .sx-sidebar-stack { min-width: 0; }

/* ============ Main search panel ============ */
.sx-panel {
  background: #fff;
  border-radius: 16px;
  box-shadow: 0 4px 14px rgba(0, 0, 0, 0.04);
  border: 1px solid #eee;
  /* DO NOT use overflow:hidden here — it clips dropdown panels like chip-options-panel.
     Instead, round corners on the top/bottom children directly. */
}
/* Round the top corners on the hero (first child) */
.sx-panel > .sx-hero {
  border-radius: 16px 16px 0 0;
}
/* Round the bottom corners on the action bar (last child) */
.sx-panel > .sx-action-bar {
  border-radius: 0 0 16px 16px;
}

/* ============ Gradient hero header ============ */
.sx-hero {
  padding: 26px 30px;
  background: linear-gradient(135deg, var(--brand-red), var(--brand-gold));
  color: #fff;
  position: relative;
  overflow: hidden;
}
.sx-hero::after {
  content: '';
  position: absolute;
  right: -50px; top: -50px;
  width: 200px; height: 200px;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.08);
  animation: sxFloat 9s ease-in-out infinite;
}
.sx-hero::before {
  content: '';
  position: absolute;
  right: 50px; bottom: -80px;
  width: 140px; height: 140px;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.06);
  animation: sxFloat 11s ease-in-out infinite reverse;
}
@keyframes sxFloat {
  0%, 100% { transform: translate(0, 0); }
  50% { transform: translate(-10px, 10px); }
}
.sx-hero.gold { background: linear-gradient(135deg, var(--brand-gold), var(--brand-red)); }
.sx-hero.blue { background: linear-gradient(135deg, var(--brand-blue), #4A6BB3); }
.sx-hero.duo { background: linear-gradient(135deg, var(--brand-red), var(--brand-blue)); }
.sx-hero-content { position: relative; z-index: 2; }
.sx-hero-title {
  font-family: var(--font-display);
  font-size: 28px;
  font-weight: 700;
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 4px;
  line-height: 1.2;
}
.sx-hero-subtitle { font-size: 13.5px; opacity: 0.95; }
@media (max-width: 576px) {
  .sx-hero { padding: 20px; }
  .sx-hero-title { font-size: 22px; }
  .sx-hero-subtitle { font-size: 12.5px; }
}

/* ============ Tab bar ============ */
.sx-tabs {
  display: flex;
  gap: 0;
  background: linear-gradient(180deg, #fafafa, #fff);
  border-bottom: 1px solid #eee;
  padding: 6px 6px 0;
  overflow-x: auto;
  scrollbar-width: none;
  min-width: 0;
}
@media (max-width: 768px) {
  .sx-tab { flex: 0 0 auto; padding: 12px 14px; font-size: 12.5px; }
  .sx-tab-icon { width: 22px; height: 22px; font-size: 12px; }
}
.sx-tabs::-webkit-scrollbar { display: none; }
.sx-tab {
  flex: 1;
  text-align: center;
  padding: 14px 18px;
  font-size: 13.5px;
  font-weight: 600;
  color: var(--slate);
  cursor: pointer;
  text-decoration: none;
  border-radius: 10px 10px 0 0;
  position: relative;
  transition: all 0.25s ease;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  white-space: nowrap;
  border-bottom: 3px solid transparent;
  min-width: max-content;
}
.sx-tab:hover { color: var(--brand-red); background: rgba(214, 31, 38, 0.04); }
.sx-tab.active {
  color: var(--brand-red);
  background: #fff;
  border-bottom-color: var(--brand-red);
}
.sx-tab-icon {
  width: 28px; height: 28px;
  border-radius: 8px;
  background: rgba(214, 31, 38, 0.08);
  color: var(--brand-red);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 14px;
  transition: all 0.25s;
}
.sx-tab.active .sx-tab-icon {
  background: linear-gradient(135deg, var(--brand-red), var(--brand-gold));
  color: #fff;
  transform: scale(1.05);
}

/* ============ Search content area ============ */
.sx-content { padding: 22px 26px 26px; }
@media (max-width: 576px) { .sx-content { padding: 16px; } }

/* ============ Collapsible field section ============ */
.sx-section {
  background: #fff;
  border: 1px solid var(--line);
  border-radius: 14px;
  margin-bottom: 14px;
  /* No overflow:hidden — the chip-options-panel inside fields needs to escape this container */
  transition: box-shadow 0.25s, border-color 0.25s;
}
.sx-section:hover { box-shadow: 0 4px 12px rgba(0, 0, 0, 0.04); }
.sx-section.is-open { border-color: rgba(214, 31, 38, 0.2); }
.sx-section-head {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 14px 18px;
  cursor: pointer;
  user-select: none;
  background: linear-gradient(135deg, #fafafa, #fff);
  border-bottom: 1px solid transparent;
  transition: border-color 0.25s;
  border-radius: 14px 14px 0 0;
}
.sx-section:not(.is-open) .sx-section-head {
  border-radius: 14px;
}
.sx-section.is-open .sx-section-head { border-bottom-color: #eee; }
.sx-section-icon {
  width: 38px; height: 38px;
  border-radius: 10px;
  background: rgba(214, 31, 38, 0.08);
  color: var(--brand-red);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 16px;
  flex-shrink: 0;
  transition: all 0.25s;
}
.sx-section.is-open .sx-section-icon {
  background: linear-gradient(135deg, var(--brand-red), var(--brand-gold));
  color: #fff;
  transform: scale(1.05);
}
.sx-section-icon.blue { background: rgba(47, 74, 125, 0.1); color: var(--brand-blue); }
.sx-section-icon.gold { background: rgba(198, 138, 58, 0.12); color: var(--brand-gold-dark); }
.sx-section.is-open .sx-section-icon.blue,
.sx-section.is-open .sx-section-icon.gold {
  background: linear-gradient(135deg, var(--brand-red), var(--brand-gold));
  color: #fff;
}
.sx-section-text { flex: 1; min-width: 0; }
.sx-section-title {
  font-family: var(--font-display);
  font-size: 16px;
  font-weight: 700;
  color: var(--ink);
}
.sx-section-title .t-red { color: var(--brand-red); margin-left: 4px; }
.sx-section-sub { font-size: 12px; color: var(--slate); margin-top: 1px; }
.sx-section-count {
  background: rgba(22, 163, 74, 0.12);
  color: #16A34A;
  font-size: 11px;
  font-weight: 700;
  padding: 2px 9px;
  border-radius: 999px;
  margin-right: 8px;
  flex-shrink: 0;
}
.sx-section-chev {
  color: var(--slate);
  transition: transform 0.3s ease;
  font-size: 13px;
  flex-shrink: 0;
}
.sx-section.is-open .sx-section-chev { transform: rotate(180deg); }
.sx-section-body {
  padding: 18px;
  display: none;
  background: #fafbfc;
  border-radius: 0 0 14px 14px;
  /* No transform/animation here — would create a stacking context and clip chip-options-panel.
     We open/close instantly via display toggle; the head rotation gives enough motion. */
}
.sx-section.is-open .sx-section-body {
  display: block;
}

/* On mobile, make age/height/income range rows lay out as From | To | From-To inline
   so the centered "To" label doesn't get its own full-width row. */
@media (max-width: 767px) {
  .sx-section-body .row.g-2 {
    display: flex;
    flex-wrap: nowrap;
    align-items: center;
    gap: 8px;
    --bs-gutter-x: 0;
  }
  .sx-section-body .row.g-2 > [class*="col-md-5"] { flex: 1 1 0; max-width: none; width: auto; padding: 0; }
  .sx-section-body .row.g-2 > [class*="col-md-2"] {
    flex: 0 0 auto;
    width: auto;
    padding: 0 4px !important;
    padding-top: 0 !important;
    font-size: 12px;
  }
}

/* ============ Fields & labels ============ */
.sx-row-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.sx-row-3 { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 14px; }
@media (max-width: 768px) {
  .sx-row-2, .sx-row-3 { grid-template-columns: 1fr; }
}

.sx-field { margin-bottom: 12px; }
.sx-field-label {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 12.5px;
  font-weight: 600;
  color: var(--ink);
  margin-bottom: 5px;
}
.sx-field-label i { color: var(--brand-red); font-size: 13px; }
.sx-field-label .req { color: var(--brand-red); font-weight: 700; margin-left: 1px; }

.sx-input-wrap {
  position: relative;
  display: flex;
  align-items: center;
  background: #fff;
  border: 1.5px solid var(--line);
  border-radius: 10px;
  transition: border-color 0.25s, box-shadow 0.25s;
  padding: 0 14px;
}
.sx-input-wrap:focus-within {
  border-color: var(--brand-red);
  box-shadow: 0 0 0 3px rgba(214, 31, 38, 0.08);
}
.sx-input-wrap input,
.sx-input-wrap select,
.sx-input-wrap textarea {
  flex: 1;
  border: none;
  outline: none;
  padding: 10px 0;
  font-size: 13.5px;
  background: transparent;
  color: var(--ink);
  font-family: var(--font-body);
  min-width: 0;
}
.sx-prefix-icon {
  color: var(--slate);
  font-size: 14px;
  margin-right: 8px;
  flex-shrink: 0;
  transition: color 0.25s;
}
.sx-input-wrap:focus-within .sx-prefix-icon { color: var(--brand-red); }

/* Range row */
.sx-range-row {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  gap: 10px;
  align-items: center;
}
.sx-range-to {
  font-size: 11.5px;
  font-weight: 600;
  color: var(--slate);
  background: #f5f3ef;
  padding: 5px 12px;
  border-radius: 999px;
  display: inline-flex;
  align-items: center;
  gap: 4px;
}

/* Radio pills (Marital, Have Children, etc) */
.sx-pill-list {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
.sx-pill {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  background: #fff;
  border: 1.5px solid var(--line);
  color: var(--slate);
  border-radius: 999px;
  padding: 7px 14px;
  font-size: 12.5px;
  font-weight: 500;
  cursor: pointer;
  transition: all 0.2s;
  user-select: none;
}
.sx-pill:hover {
  border-color: var(--brand-red);
  color: var(--brand-red);
}
.sx-pill.selected {
  background: #fff;
  border-color: var(--brand-red);
  color: var(--brand-red);
  font-weight: 600;
}
.sx-pill.selected::before {
  content: '\F26B';
  font-family: 'bootstrap-icons';
  font-size: 13px;
  color: var(--brand-red);
}
.sx-pill i { font-size: 13px; }
.sx-pill input[type="radio"],
.sx-pill input[type="checkbox"] { display: none; }

/* Preference pills (Show / Don't show) — solid filled when active */
.sx-pref {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  background: #fff;
  border: 1.5px solid var(--line);
  color: var(--ink);
  padding: 7px 14px;
  border-radius: 999px;
  cursor: pointer;
  font-size: 12.5px;
  font-weight: 500;
  transition: all 0.2s;
  user-select: none;
}
.sx-pref:hover { border-color: var(--brand-red); color: var(--brand-red); }
.sx-pref.selected {
  background: linear-gradient(135deg, var(--brand-red), var(--brand-gold));
  border-color: transparent;
  color: #fff;
}
.sx-pref.selected i { color: #fff !important; }
.sx-pref i { font-size: 13px; }
.sx-pref input[type="checkbox"] { display: none; }

/* Checkbox grid (Education, Interests, etc) */
.sx-check-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 8px;
}
@media (max-width: 768px) { .sx-check-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 480px) { .sx-check-grid { grid-template-columns: 1fr; } }
.sx-check {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 7px 10px;
  border-radius: 8px;
  background: #fff;
  border: 1.5px solid var(--line);
  cursor: pointer;
  font-size: 12.5px;
  color: var(--ink);
  transition: all 0.2s;
  user-select: none;
}
.sx-check:hover {
  border-color: var(--brand-red);
  background: #FFF7F0;
}
.sx-check.checked {
  background: #FFF7F0;
  border-color: var(--brand-red);
  color: var(--brand-red);
  font-weight: 600;
}
.sx-check-box {
  width: 16px; height: 16px;
  border: 1.5px solid #ccc;
  border-radius: 4px;
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: all 0.2s;
}
.sx-check.checked .sx-check-box {
  background: var(--brand-red);
  border-color: var(--brand-red);
  color: #fff;
}
.sx-check.checked .sx-check-box::after {
  content: '\F26B';
  font-family: 'bootstrap-icons';
  font-size: 12px;
}
.sx-check input[type="checkbox"] { display: none; }

/* Chip multi-select (Caste, Mother Tongue) */
.sx-chip-multi {
  background: #fff;
  border: 1.5px solid var(--line);
  border-radius: 10px;
  padding: 6px 8px;
  min-height: 44px;
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  align-items: center;
}
.sx-chip-multi:focus-within {
  border-color: var(--brand-red);
  box-shadow: 0 0 0 3px rgba(214, 31, 38, 0.08);
}
.sx-chip-multi input {
  flex: 1;
  min-width: 80px;
  border: none;
  outline: none;
  padding: 5px 8px;
  font-size: 12.5px;
  font-family: var(--font-body);
  background: transparent;
}
.sx-chip-tag {
  background: linear-gradient(135deg, #FFF7F0, #FFF1E5);
  border: 1px solid #F3D9C2;
  color: var(--brand-red);
  padding: 3px 10px;
  border-radius: 999px;
  font-size: 12px;
  font-weight: 600;
  display: inline-flex;
  align-items: center;
  gap: 4px;
}
.sx-chip-tag .sx-chip-x {
  background: rgba(214, 31, 38, 0.15);
  color: var(--brand-red);
  width: 16px; height: 16px;
  border-radius: 50%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 11px;
  cursor: pointer;
  border: none;
  flex-shrink: 0;
}

/* Save search card */
.sx-save-card {
  background: linear-gradient(135deg, #FFF7F0, #FFFBF5);
  border: 1px solid #F3E0CB;
  border-radius: 14px;
  padding: 18px;
  margin-top: 14px;
}
.sx-save-row {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  gap: 12px;
  align-items: end;
}
@media (max-width: 768px) {
  .sx-save-row { grid-template-columns: 1fr; }
}
.sx-save-row .sx-or {
  font-weight: 600;
  color: var(--slate);
  background: #fff;
  padding: 6px 14px;
  border-radius: 999px;
  align-self: center;
  font-size: 12px;
  text-align: center;
}

/* Action footer */
.sx-action-bar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 18px 28px;
  background: linear-gradient(135deg, #fafafa, #fff);
  border-top: 1px solid #eee;
  gap: 14px;
  flex-wrap: wrap;
}
@media (max-width: 576px) {
  .sx-action-bar { padding: 14px 16px; flex-direction: column; align-items: stretch; }
  .sx-action-bar > * { width: 100%; justify-content: center; }
  .sx-action-bar .sx-action-buttons { display: flex; gap: 8px; }
  .sx-action-bar .sx-action-buttons > * {
    flex: 1 1 0;
    min-width: 0;
    padding: 11px 8px;
    font-size: 12.5px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
  }
  /* Give the primary action a little more room than the ghost reset. */
  .sx-action-bar .sx-action-buttons > .sx-btn.primary { flex: 1.4 1 0; }
}
.sx-filter-summary {
  font-size: 12.5px;
  color: var(--slate);
  background: #f5f3ef;
  padding: 6px 14px;
  border-radius: 999px;
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
.sx-action-buttons { display: flex; gap: 10px; }

/* ============ Sidebar ============ */
.sx-sidebar-stack { display: flex; flex-direction: column; gap: 16px; }

.sx-side-card {
  background: #fff;
  border: 1px solid #eee;
  border-radius: 16px;
  overflow: hidden;
  box-shadow: 0 4px 14px rgba(0, 0, 0, 0.04);
}
.sx-side-head {
  padding: 18px 20px;
  background: linear-gradient(135deg, var(--brand-red), var(--brand-gold));
  color: #fff;
  position: relative;
  overflow: hidden;
}
.sx-side-head.blue { background: linear-gradient(135deg, var(--brand-blue), #4A6BB3); }
.sx-side-head::after {
  content: '';
  position: absolute;
  right: -20px; top: -20px;
  width: 90px; height: 90px;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.1);
}
.sx-side-head-row {
  display: flex;
  align-items: center;
  gap: 12px;
  position: relative;
  z-index: 2;
}
.sx-side-icon {
  width: 40px; height: 40px;
  background: rgba(255, 255, 255, 0.18);
  border: 1.5px solid rgba(255, 255, 255, 0.35);
  border-radius: 10px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 18px;
  backdrop-filter: blur(8px);
  flex-shrink: 0;
}
.sx-side-title {
  font-family: var(--font-display);
  font-size: 17px;
  font-weight: 700;
}
.sx-side-sub { font-size: 11.5px; opacity: 0.9; }
.sx-side-body { padding: 18px 20px; }

/* Saved search list */
.sx-saved-item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 10px 12px;
  border-radius: 10px;
  border: 1px solid #eee;
  margin-bottom: 8px;
  background: #fff;
  transition: all 0.2s;
}
.sx-saved-item:hover {
  border-color: var(--brand-red);
  background: #FFF7F0;
}
.sx-saved-name { font-size: 13px; font-weight: 600; color: var(--ink); }
.sx-saved-meta { font-size: 11px; color: var(--slate); }
.sx-saved-actions { display: flex; gap: 4px; }
.sx-icon-btn {
  width: 26px; height: 26px;
  border: 1px solid #eee;
  background: #fff;
  border-radius: 6px;
  color: var(--slate);
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 12px;
  transition: all 0.2s;
}
.sx-icon-btn:hover {
  color: var(--brand-red);
  border-color: var(--brand-red);
}

/* Tip card */
.sx-tip-card {
  background: linear-gradient(135deg, #F0F6FF, #E8F0FF);
  border: 1px solid #DCE7FA;
  border-radius: 14px;
  padding: 16px;
  display: flex;
  gap: 10px;
  align-items: flex-start;
}
.sx-tip-card i {
  color: var(--brand-blue);
  font-size: 18px;
  margin-top: 1px;
  flex-shrink: 0;
}
.sx-tip-text {
  font-size: 12.5px;
  color: var(--ink);
  line-height: 1.5;
}

/* Recently viewed IDs */
.sx-recent-row {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-top: 6px;
}
.sx-recent-chip {
  background: #fff;
  border: 1px solid #eee;
  border-radius: 8px;
  padding: 6px 12px;
  font-size: 11.5px;
  color: var(--ink);
  cursor: pointer;
  transition: all 0.2s;
  display: inline-flex;
  align-items: center;
  gap: 5px;
}
.sx-recent-chip:hover {
  border-color: var(--brand-red);
  color: var(--brand-red);
}
.sx-recent-chip i { color: var(--slate); font-size: 12px; }
.sx-recent-chip:hover i { color: var(--brand-red); }

/* ============ KEYWORD SEARCH big input ============ */
.sx-keyword-hero {
  background: linear-gradient(135deg, #FFF7F0, #FFFBF5);
  border: 1.5px dashed #F3D9C2;
  border-radius: 14px;
  padding: 28px;
  text-align: center;
  margin-bottom: 18px;
}
.sx-keyword-icon {
  width: 64px; height: 64px;
  border-radius: 50%;
  background: linear-gradient(135deg, var(--brand-red), var(--brand-gold));
  color: #fff;
  margin: 0 auto 14px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 28px;
  box-shadow: 0 8px 22px rgba(214, 31, 38, 0.2);
}
.sx-keyword-hero h3 {
  font-family: var(--font-display);
  font-size: 24px;
  color: var(--ink);
  margin-bottom: 6px;
}
.sx-keyword-hero p {
  font-size: 13px;
  color: var(--slate);
  margin-bottom: 18px;
}
.sx-keyword-bar {
  display: flex;
  align-items: center;
  gap: 10px;
  background: #fff;
  border: 2px solid var(--line);
  border-radius: 999px;
  padding: 6px 6px 6px 22px;
  box-shadow: 0 4px 14px rgba(0, 0, 0, 0.05);
  max-width: 600px;
  margin: 0 auto;
  transition: all 0.25s;
}
.sx-keyword-bar:focus-within {
  border-color: var(--brand-red);
  box-shadow: 0 8px 24px rgba(214, 31, 38, 0.15);
}
.sx-keyword-bar > i { color: var(--slate); font-size: 18px; }
.sx-keyword-bar input {
  flex: 1;
  border: none;
  outline: none;
  padding: 12px 8px;
  font-size: 14px;
  font-family: var(--font-body);
  background: transparent;
  min-width: 0;
}
.sx-keyword-bar button {
  background: linear-gradient(135deg, var(--brand-red), var(--brand-gold));
  color: #fff;
  border: none;
  border-radius: 999px;
  padding: 11px 22px;
  font-size: 13.5px;
  font-weight: 600;
  cursor: pointer;
  white-space: nowrap;
  transition: all 0.25s;
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
.sx-keyword-bar button:hover {
  transform: translateY(-1px);
  box-shadow: 0 4px 12px rgba(214, 31, 38, 0.3);
}
.sx-keyword-photo-check {
  background: transparent;
  border: none;
  justify-content: center;
  margin-top: 12px;
  color: var(--slate);
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: 13px;
  cursor: pointer;
}
.sx-keyword-photo-check .sx-check-box {
  background: var(--brand-red);
  border-color: var(--brand-red);
  color: #fff;
}
.sx-keyword-photo-check .sx-check-box::after {
  content: '\F26B';
  font-family: 'bootstrap-icons';
  font-size: 12px;
}
.sx-keyword-examples {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  justify-content: center;
  margin-top: 14px;
}
.sx-keyword-example {
  background: #fff;
  border: 1px solid #eee;
  border-radius: 999px;
  padding: 5px 12px;
  font-size: 11.5px;
  color: var(--slate);
  cursor: pointer;
  transition: all 0.2s;
}
.sx-keyword-example:hover {
  border-color: var(--brand-red);
  color: var(--brand-red);
}
.sx-keyword-example .label {
  color: var(--brand-gold-dark);
  font-weight: 600;
}

/* ============ PROFILE ID big tile ============ */
.sx-pid-hero {
  text-align: center;
  padding: 50px 20px 40px;
}
.sx-pid-circle {
  width: 90px; height: 90px;
  margin: 0 auto 20px;
  border-radius: 50%;
  background: linear-gradient(135deg, var(--brand-red), var(--brand-gold));
  color: #fff;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 40px;
  box-shadow: 0 10px 28px rgba(214, 31, 38, 0.25);
  position: relative;
}
.sx-pid-circle::after {
  content: '';
  position: absolute;
  inset: -10px;
  border: 2px dashed rgba(214, 31, 38, 0.3);
  border-radius: 50%;
  animation: sxSpin 12s linear infinite;
}
@keyframes sxSpin { to { transform: rotate(360deg); } }
.sx-pid-hero h2 {
  font-family: var(--font-display);
  font-size: 28px;
  color: var(--ink);
  margin-bottom: 6px;
}
.sx-pid-hero p {
  font-size: 13.5px;
  color: var(--slate);
  margin-bottom: 24px;
}
.sx-pid-row {
  display: flex;
  gap: 10px;
  max-width: 480px;
  margin: 0 auto;
}
.sx-pid-row .sx-input-wrap {
  flex: 1;
  padding: 0 18px;
}
@media (max-width: 480px) {
  .sx-pid-row { flex-direction: column; }
}

/* btn-modern shorthand reused from settings if missing — re-declare here for safety */
.sx-btn {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  border: none;
  border-radius: 12px;
  padding: 11px 22px;
  font-size: 13.5px;
  font-weight: 600;
  cursor: pointer;
  transition: all 0.25s;
  font-family: var(--font-body);
  text-decoration: none;
  white-space: nowrap;
}
.sx-btn.primary {
  background: linear-gradient(135deg, var(--brand-red), var(--brand-gold));
  color: #fff;
  box-shadow: 0 4px 12px rgba(214, 31, 38, 0.25);
}
.sx-btn.primary:hover {
  transform: translateY(-2px);
  box-shadow: 0 8px 20px rgba(214, 31, 38, 0.35);
  color: #fff;
}
.sx-btn.ghost {
  background: #fff;
  color: var(--slate);
  border: 1.5px solid var(--line);
}
.sx-btn.ghost:hover { border-color: var(--brand-red); color: var(--brand-red); }
.sx-btn.lg { padding: 14px 32px; font-size: 14.5px; }
.sx-btn.full { width: 100%; justify-content: center; }


/* =========================================================
   HEADER — Search dropdown menu
   ========================================================= */
.navbar .dropdown-menu {
  border: 1px solid #eee;
  border-radius: 12px;
  padding: 6px;
  box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1);
  margin-top: 8px;
}
.navbar .dropdown-item {
  border-radius: 8px;
  padding: 9px 14px;
  font-size: 13.5px;
  font-weight: 500;
  color: var(--ink);
  display: flex;
  align-items: center;
  gap: 8px;
  transition: all 0.2s;
}
.navbar .dropdown-item i {
  color: var(--brand-red);
  font-size: 15px;
}
.navbar .dropdown-item:hover {
  background: #FFF7F0;
  color: var(--brand-red);
}

/* =========================================================
   DRAWER (mobile menu) — collapsible Search Profiles section
   ========================================================= */
.drawer-collapsible { display: block; }
.drawer-collapse-head {
  background: none;
  border: none;
  width: 100%;
  text-align: left;
  font-family: var(--font-body);
  cursor: pointer;
  display: flex;
  align-items: center;
}
.drawer-collapse-head .drawer-chev {
  transition: transform 0.25s;
  font-size: 12px;
}
.drawer-collapsible.is-open .drawer-chev { transform: rotate(180deg); }
.drawer-collapse-body {
  display: none;
  padding-left: 14px;
  border-left: 2px solid rgba(214, 31, 38, 0.15);
  margin-left: 12px;
  margin-top: 2px;
}
.drawer-collapsible.is-open .drawer-collapse-body { display: block; }
.drawer-sub {
  font-size: 13px !important;
  font-weight: 500 !important;
  padding: 8px 10px !important;
}
.drawer-sub i { font-size: 13px !important; }


/* =========================================================
   HEADER — Logged-in state (Notifications, Tickets, User menu, Sign Out)
   ========================================================= */

/* Icon button (notifications, tickets) */
.icon-action-btn {
  width: 38px; height: 38px;
  border: 1px solid #eee;
  background: #fff;
  border-radius: 10px;
  color: var(--slate);
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 17px;
  position: relative;
  transition: all 0.2s;
}
.icon-action-btn:hover {
  color: var(--brand-red);
  border-color: var(--brand-red);
  background: #FFF7F0;
}
.icon-action-btn .icon-count {
  position: absolute;
  top: -4px; right: -4px;
  background: var(--brand-red);
  color: #fff;
  font-size: 10px;
  font-weight: 700;
  padding: 2px 6px;
  border-radius: 999px;
  border: 2px solid #fff;
  min-width: 18px;
  line-height: 1;
  text-align: center;
}

/* User avatar menu (logged-in) */
.user-menu-btn {
  display: flex;
  align-items: center;
  gap: 8px;
  background: #fff;
  border: 1px solid #eee;
  border-radius: 999px;
  padding: 4px 12px 4px 4px;
  cursor: pointer;
  transition: all 0.2s;
  color: var(--ink);
  text-decoration: none;
}
.user-menu-btn:hover {
  border-color: var(--brand-red);
  background: #FFF7F0;
  color: var(--ink);
}
.user-menu-btn .user-avatar {
  width: 32px; height: 32px;
  border-radius: 50%;
  background: linear-gradient(135deg, var(--brand-red), var(--brand-gold));
  color: #fff;
  display: flex; align-items: center; justify-content: center;
  font-size: 13px;
  font-weight: 700;
}
.user-menu-btn .user-name {
  font-size: 13px;
  font-weight: 600;
}
.user-menu-btn i { font-size: 12px; color: var(--slate); }

/* Sign Out button */
.btn-signout-header {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 8px 16px;
  background: #fff;
  border: 1.5px solid var(--brand-red);
  color: var(--brand-red);
  border-radius: 10px;
  font-size: 13px;
  font-weight: 600;
  cursor: pointer;
  transition: all 0.2s;
  text-decoration: none;
}
.btn-signout-header:hover {
  background: var(--brand-red);
  color: #fff;
}

/* Wrap for dropdown panel positioning */
.header-action-wrap {
  position: relative;
  display: inline-block;
}

/* =========================================================
   DROPDOWN PANELS (notifications + tickets)
   ========================================================= */
.dropdown-panel {
  position: absolute;
  top: calc(100% + 12px);
  right: 0;
  width: 380px;
  background: #fff;
  border-radius: 16px;
  box-shadow: 0 12px 36px rgba(0, 0, 0, 0.15);
  border: 1px solid #eee;
  overflow: hidden;
  z-index: 1100;
  display: none;
  animation: ddOpen 0.2s ease;
}
@keyframes ddOpen {
  from { opacity: 0; transform: translateY(-6px); }
  to { opacity: 1; transform: translateY(0); }
}
.dropdown-panel.is-open { display: block; }
@media (max-width: 480px) {
  .dropdown-panel {
    width: calc(100vw - 32px);
    right: auto;
    left: 50%;
    transform: translateX(-50%);
  }
  .dropdown-panel.is-open { transform: translateX(-50%); }
}

.dp-head {
  padding: 16px 18px;
  background: linear-gradient(135deg, var(--brand-red), var(--brand-gold));
  color: #fff;
  position: relative;
  overflow: hidden;
}
.dp-head::after {
  content: '';
  position: absolute;
  right: -20px; top: -20px;
  width: 90px; height: 90px;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.08);
}
.dp-head.blue { background: linear-gradient(135deg, var(--brand-blue), #4A6BB3); }
.dp-head-row {
  display: flex;
  align-items: center;
  gap: 10px;
  position: relative;
  z-index: 2;
}
.dp-icon {
  width: 36px; height: 36px;
  background: rgba(255, 255, 255, 0.18);
  border: 1.5px solid rgba(255, 255, 255, 0.35);
  border-radius: 10px;
  display: flex; align-items: center; justify-content: center;
  font-size: 16px;
  backdrop-filter: blur(8px);
}
.dp-title {
  flex: 1;
  font-family: var(--font-display);
  font-size: 16px;
  font-weight: 700;
}
.dp-title small {
  font-family: var(--font-body);
  font-size: 11px;
  opacity: 0.9;
  font-weight: 500;
  margin-left: 4px;
}
.dp-action-btn {
  background: rgba(255, 255, 255, 0.2);
  border: none;
  color: #fff;
  padding: 4px 10px;
  border-radius: 999px;
  font-size: 11px;
  font-weight: 600;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  gap: 3px;
}
.dp-action-btn:hover { background: rgba(255, 255, 255, 0.3); }

.dp-list {
  max-height: 420px;
  overflow-y: auto;
}
.dp-item {
  display: flex;
  gap: 10px;
  padding: 14px 18px;
  border-bottom: 1px solid #f0f0f0;
  cursor: pointer;
  transition: background 0.15s;
  align-items: flex-start;
  text-decoration: none;
  color: inherit;
}
.dp-item:hover { background: #FFF7F0; color: inherit; }
.dp-item:last-child { border-bottom: none; }
.dp-item.unread { background: #FFF7F0; }
.dp-item-dot {
  width: 8px; height: 8px;
  border-radius: 50%;
  flex-shrink: 0;
  margin-top: 5px;
}
.dp-item.unread .dp-item-dot {
  background: var(--brand-red);
}
.dp-item-icon {
  width: 38px; height: 38px;
  border-radius: 10px;
  background: rgba(214, 31, 38, 0.1);
  color: var(--brand-red);
  display: flex; align-items: center; justify-content: center;
  font-size: 16px;
  flex-shrink: 0;
}
.dp-item-icon.gold { background: rgba(198, 138, 58, 0.12); color: var(--brand-gold-dark); }
.dp-item-icon.blue { background: rgba(47, 74, 125, 0.1); color: var(--brand-blue); }
.dp-item-icon.green { background: rgba(22, 163, 74, 0.1); color: #16A34A; }
.dp-item-icon.pink { background: rgba(233, 30, 99, 0.1); color: #E91E63; }
.dp-item-body { flex: 1; min-width: 0; }
.dp-item-title {
  font-size: 13px;
  font-weight: 600;
  color: var(--ink);
  margin-bottom: 2px;
}
.dp-item-text {
  font-size: 12px;
  color: var(--slate);
  line-height: 1.4;
  overflow: hidden;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
}
.dp-item-time {
  font-size: 11px;
  color: #999;
  margin-top: 4px;
  display: flex;
  align-items: center;
  gap: 4px;
}
.dp-item-time i { font-size: 10px; }

.dp-empty {
  padding: 36px 18px;
  text-align: center;
  color: var(--slate);
}
.dp-empty i { font-size: 36px; color: #ddd; }
.dp-empty p { margin-top: 10px; font-size: 13px; }

.dp-footer {
  padding: 14px 18px 22px;
  background: #fafafa;
  border-top: 1px solid #eee;
  display: flex;
  gap: 8px;
}
/* Mobile: keep the same generous bottom gap so the button doesn't hug the edge */
@media (max-width: 575.98px) {
  .dp-footer { padding: 12px 14px 20px; }
}
.dp-footer a, .dp-footer button {
  flex: 1;
  text-align: center;
  padding: 8px 14px;
  border-radius: 8px;
  font-size: 12.5px;
  font-weight: 600;
  text-decoration: none;
  transition: all 0.2s;
  border: none;
  cursor: pointer;
}
.dp-footer .primary {
  background: linear-gradient(135deg, var(--brand-red), var(--brand-gold));
  color: #fff;
}
.dp-footer .primary:hover {
  box-shadow: 0 4px 12px rgba(214, 31, 38, 0.3);
  transform: translateY(-1px);
  color: #fff;
}
.dp-footer .ghost {
  background: #fff;
  border: 1px solid #eee;
  color: var(--slate);
}
.dp-footer .ghost:hover {
  border-color: var(--brand-red);
  color: var(--brand-red);
}

/* Ticket status badges (used in dropdown + page) */
.ticket-status {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: 10.5px;
  font-weight: 700;
  padding: 2px 8px;
  border-radius: 999px;
  margin-top: 4px;
  letter-spacing: 0.02em;
}
/* Ticket status badges — NEW status set */
.ticket-status.open       { background: rgba(214, 31, 38, 0.12); color: var(--brand-red); }
.ticket-status.in-progress{ background: rgba(47, 74, 125, 0.12); color: var(--brand-blue); }
.ticket-status.escalation { background: rgba(255, 152, 0, 0.15); color: #C76A00; }
.ticket-status.resolution { background: rgba(22, 163, 74, 0.12); color: #16A34A; }
.ticket-status.closed     { background: rgba(102, 102, 102, 0.12); color: var(--slate); }
/* Legacy aliases (kept for compatibility — pending → open, replied → in-progress, resolved → resolution) */
.ticket-status.pending    { background: rgba(214, 31, 38, 0.12); color: var(--brand-red); }
.ticket-status.replied    { background: rgba(47, 74, 125, 0.12); color: var(--brand-blue); }
.ticket-status.resolved   { background: rgba(22, 163, 74, 0.12); color: #16A34A; }

/* Card left border colors — match status */
.ticket-card.open       { border-left-color: var(--brand-red); }
.ticket-card.in-progress{ border-left-color: var(--brand-blue); }
.ticket-card.escalation { border-left-color: #FF9800; }
.ticket-card.resolution { border-left-color: #16A34A; }
.ticket-card.closed     { border-left-color: var(--slate); }
/* Legacy alias card borders */
.ticket-card.pending  { border-left-color: var(--brand-red); }
.ticket-card.replied  { border-left-color: var(--brand-blue); }
.ticket-card.resolved { border-left-color: #16A34A; }

/* =========================================================
   TICKETS PAGE
   ========================================================= */
.tickets-layout {
  display: grid;
  grid-template-columns: 240px 1fr;
  gap: 18px;
  background: #fff;
  border-radius: 16px;
  border: 1px solid #eee;
  box-shadow: 0 4px 14px rgba(0, 0, 0, 0.04);
  margin-bottom: 40px;
}
@media (max-width: 768px) {
  .tickets-layout { grid-template-columns: 1fr; }
}
/* Grid items default to min-width:auto, letting the horizontal status-filter
   nav (.ep-section-nav with 6+ pills) push the main column past viewport. */
.tickets-layout > * { min-width: 0; }

.tickets-filter-aside {
  background: linear-gradient(180deg, #fafafa, #fff);
  border-right: 1px solid #eee;
  padding: 18px;
  border-radius: 16px 0 0 16px;
}
@media (max-width: 768px) {
  .tickets-filter-aside { border-radius: 16px 16px 0 0; border-right: none; border-bottom: 1px solid #eee; }
}
.tickets-filter-aside h6 {
  font-size: 11px;
  font-weight: 700;
  color: var(--slate);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  margin-bottom: 10px;
  margin-top: 14px;
}
.tickets-filter-aside h6:first-child { margin-top: 0; }
.tf-link {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 9px 12px;
  border-radius: 8px;
  color: var(--ink);
  text-decoration: none;
  font-size: 13px;
  font-weight: 500;
  transition: all 0.2s;
  margin-bottom: 3px;
}
.tf-link:hover { background: #FFF7F0; color: var(--brand-red); }
.tf-link.active {
  background: linear-gradient(135deg, var(--brand-red), var(--brand-gold));
  color: #fff;
}
.tf-link .tf-count {
  margin-left: auto;
  background: rgba(0, 0, 0, 0.05);
  padding: 1px 8px;
  border-radius: 999px;
  font-size: 11px;
  font-weight: 700;
}
.tf-link.active .tf-count { background: rgba(255, 255, 255, 0.25); }
.tf-link i { font-size: 14px; color: var(--brand-red); }
.tf-link.active i { color: #fff; }

.btn-new-ticket {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  padding: 10px;
  background: linear-gradient(135deg, var(--brand-red), var(--brand-gold));
  color: #fff;
  border: none;
  border-radius: 10px;
  font-size: 13px;
  font-weight: 600;
  cursor: pointer;
  width: 100%;
  margin-top: 12px;
  box-shadow: 0 4px 12px rgba(214, 31, 38, 0.25);
  transition: all 0.2s;
  text-decoration: none;
}
.btn-new-ticket:hover {
  transform: translateY(-1px);
  box-shadow: 0 6px 16px rgba(214, 31, 38, 0.35);
  color: #fff;
}

.tickets-main { padding: 24px; }
.tickets-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 18px;
  flex-wrap: wrap;
  gap: 12px;
}
.tickets-header h3 {
  font-family: var(--font-display);
  font-size: 22px;
  color: var(--ink);
  margin: 0;
}
.tickets-header h3 small {
  font-family: var(--font-body);
  font-size: 13px;
  color: var(--slate);
  font-weight: normal;
  margin-left: 6px;
}

/* Ticket card */
.ticket-card {
  background: #fff;
  border: 1px solid #eee;
  border-radius: 12px;
  padding: 16px;
  margin-bottom: 12px;
  cursor: pointer;
  transition: all 0.2s;
  border-left: 4px solid #eee;
  text-decoration: none;
  color: inherit;
  display: block;
}
.ticket-card:hover {
  box-shadow: 0 6px 16px rgba(0, 0, 0, 0.06);
  transform: translateY(-1px);
  color: inherit;
}
.ticket-card.pending { border-left-color: var(--brand-gold); }
.ticket-card.replied { border-left-color: var(--brand-blue); }
.ticket-card.resolved { border-left-color: #16A34A; }
.ticket-card.closed { border-left-color: var(--slate); }
.ticket-card-top {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  align-items: flex-start;
  flex-wrap: wrap;
}
.ticket-meta { flex: 1; min-width: 0; }
.ticket-id {
  font-size: 11px;
  color: var(--slate);
  font-weight: 600;
  letter-spacing: 0.04em;
  display: inline-flex;
  align-items: center;
  gap: 4px;
}
.ticket-subject {
  font-family: var(--font-display);
  font-size: 15px;
  font-weight: 700;
  color: var(--ink);
  margin: 4px 0;
}
.ticket-preview {
  font-size: 12.5px;
  color: var(--slate);
  line-height: 1.5;
  margin-bottom: 8px;
  overflow: hidden;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
}
.ticket-card-bottom {
  display: flex;
  gap: 12px;
  align-items: center;
  flex-wrap: wrap;
  font-size: 11.5px;
  color: var(--slate);
}
.ticket-card-bottom span {
  display: inline-flex;
  align-items: center;
  gap: 4px;
}
.ticket-card-bottom i { color: var(--brand-gold-dark); }

/* Ticket Detail */
.ticket-detail-shell {
  background: #fff;
  border: 1px solid #eee;
  border-radius: 16px;
  overflow: hidden;
  margin-bottom: 40px;
}
.td-head {
  padding: 22px 24px;
  background: linear-gradient(135deg, #fafafa, #fff);
  border-bottom: 1px solid #eee;
  display: flex;
  justify-content: space-between;
  gap: 14px;
  flex-wrap: wrap;
}
.td-subject {
  font-family: var(--font-display);
  font-size: 22px;
  color: var(--ink);
  margin-bottom: 6px;
}
.td-meta {
  display: flex;
  gap: 12px;
  font-size: 12px;
  color: var(--slate);
  flex-wrap: wrap;
}
.td-meta span { display: inline-flex; align-items: center; gap: 4px; }
.td-thread {
  padding: 22px 24px;
}
.td-msg {
  display: flex;
  gap: 12px;
  margin-bottom: 18px;
  align-items: flex-start;
}
.td-msg.from-admin { flex-direction: row-reverse; }
.td-avatar {
  width: 40px; height: 40px;
  border-radius: 50%;
  background: linear-gradient(135deg, var(--brand-red), var(--brand-gold));
  color: #fff;
  display: flex; align-items: center; justify-content: center;
  font-size: 14px;
  font-weight: 700;
  flex-shrink: 0;
}
.td-msg.from-admin .td-avatar {
  background: linear-gradient(135deg, var(--brand-blue), #4A6BB3);
}
.td-bubble {
  background: #FFF7F0;
  border: 1px solid #F3E0CB;
  border-radius: 14px 14px 14px 4px;
  padding: 12px 16px;
  max-width: 75%;
}
.td-msg.from-admin .td-bubble {
  background: #F0F6FF;
  border-color: #DCE7FA;
  border-radius: 14px 14px 4px 14px;
}
.td-bubble-from {
  font-size: 11px;
  font-weight: 700;
  color: var(--brand-red);
  margin-bottom: 4px;
  display: flex;
  align-items: center;
  gap: 4px;
}
.td-msg.from-admin .td-bubble-from { color: var(--brand-blue); }
.td-bubble-from .admin-badge {
  background: var(--brand-blue);
  color: #fff;
  font-size: 9px;
  padding: 1px 6px;
  border-radius: 999px;
  margin-left: 4px;
}
.td-bubble-text {
  font-size: 13.5px;
  color: var(--ink);
  line-height: 1.5;
  white-space: pre-wrap;
}
.td-bubble-time {
  font-size: 10.5px;
  color: var(--slate);
  margin-top: 4px;
}

.td-composer {
  padding: 18px 24px;
  border-top: 1px solid #eee;
  background: #fafafa;
}
.td-composer textarea {
  width: 100%;
  border: 1.5px solid var(--line);
  border-radius: 12px;
  padding: 12px 16px;
  font-size: 13.5px;
  font-family: var(--font-body);
  resize: vertical;
  min-height: 70px;
  background: #fff;
}
.td-composer textarea:focus {
  outline: none;
  border-color: var(--brand-red);
  box-shadow: 0 0 0 3px rgba(214, 31, 38, 0.08);
}
.td-composer-actions {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-top: 10px;
  flex-wrap: wrap;
  gap: 10px;
}
.td-attach-btn {
  background: #fff;
  border: 1px solid #eee;
  color: var(--slate);
  padding: 8px 14px;
  border-radius: 8px;
  font-size: 12.5px;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-family: var(--font-body);
}
.td-attach-btn:hover { color: var(--brand-red); border-color: var(--brand-red); }
.td-send-btn {
  background: linear-gradient(135deg, var(--brand-red), var(--brand-gold));
  color: #fff;
  border: none;
  padding: 10px 20px;
  border-radius: 10px;
  font-size: 13.5px;
  font-weight: 600;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  transition: all 0.2s;
  font-family: var(--font-body);
}
.td-send-btn:hover {
  box-shadow: 0 4px 12px rgba(214, 31, 38, 0.3);
  transform: translateY(-1px);
}

/* New Ticket form */
.new-ticket-form {
  background: #fff;
  border: 1px solid #eee;
  border-radius: 16px;
  overflow: hidden;
  max-width: 720px;
  margin: 0 auto 40px;
}
.ntf-head {
  padding: 24px 28px;
  background: linear-gradient(135deg, var(--brand-red), var(--brand-gold));
  color: #fff;
  position: relative;
  overflow: hidden;
}
.ntf-head::after {
  content: '';
  position: absolute;
  right: -30px; top: -30px;
  width: 140px; height: 140px;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.08);
}
.ntf-head-row {
  display: flex;
  align-items: center;
  gap: 14px;
  position: relative;
  z-index: 2;
}
.ntf-icon {
  width: 52px; height: 52px;
  background: rgba(255, 255, 255, 0.18);
  border: 1.5px solid rgba(255, 255, 255, 0.35);
  border-radius: 14px;
  display: flex; align-items: center; justify-content: center;
  font-size: 22px;
  backdrop-filter: blur(8px);
}
.ntf-title {
  font-family: var(--font-display);
  font-size: 22px;
  font-weight: 700;
}
.ntf-sub {
  font-size: 13px;
  opacity: 0.95;
  margin-top: 2px;
}
.ntf-body { padding: 26px 28px; }
.ntf-field { margin-bottom: 16px; }
.ntf-label {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 13px;
  font-weight: 600;
  color: var(--ink);
  margin-bottom: 6px;
}
.ntf-label i { color: var(--brand-red); }
.ntf-input, .ntf-textarea, .ntf-select {
  width: 100%;
  border: 1.5px solid var(--line);
  border-radius: 10px;
  padding: 11px 14px;
  font-size: 13.5px;
  font-family: var(--font-body);
  background: #fff;
}
.ntf-input:focus, .ntf-textarea:focus, .ntf-select:focus {
  outline: none;
  border-color: var(--brand-red);
  box-shadow: 0 0 0 3px rgba(214, 31, 38, 0.08);
}
.ntf-textarea { resize: vertical; min-height: 120px; }
.ntf-upload {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 14px;
  border: 1.5px dashed var(--line);
  border-radius: 10px;
  background: #fafafa;
  color: var(--slate);
  font-size: 13px;
  cursor: pointer;
  transition: all 0.2s;
}
.ntf-upload:hover { border-color: var(--brand-red); color: var(--brand-red); background: #FFF7F0; }

/* =========================================================
   DASHBOARD UPGRADE CTA — innovative dark gradient
   ========================================================= */
.upgrade-cta-block {
  background: linear-gradient(135deg, #1a1f2b 0%, #2a2f3f 100%);
  border-radius: 20px;
  padding: 28px;
  color: #fff;
  position: relative;
  overflow: hidden;
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 24px;
  align-items: center;
  margin-bottom: 24px;
}
@media (max-width: 768px) {
  .upgrade-cta-block { grid-template-columns: 1fr; padding: 22px; }
}
.upgrade-cta-block::before {
  content: '';
  position: absolute;
  top: -100px; right: -100px;
  width: 300px; height: 300px;
  background: linear-gradient(135deg, rgba(214, 31, 38, 0.4), rgba(198, 138, 58, 0.4));
  border-radius: 50%;
  filter: blur(80px);
}
.upgrade-cta-block::after {
  content: '';
  position: absolute;
  bottom: -80px; left: -80px;
  width: 240px; height: 240px;
  background: linear-gradient(135deg, rgba(198, 138, 58, 0.4), rgba(214, 31, 38, 0.4));
  border-radius: 50%;
  filter: blur(80px);
}
.upgrade-cta-content { position: relative; z-index: 2; }
.upgrade-cta-tag {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  background: linear-gradient(135deg, var(--brand-gold), #E2A857);
  color: #1a1f2b;
  font-size: 10.5px;
  font-weight: 700;
  padding: 4px 10px;
  border-radius: 999px;
  letter-spacing: 0.05em;
  margin-bottom: 12px;
}
.upgrade-cta-block h2 {
  font-family: var(--font-display);
  font-size: 28px;
  font-weight: 700;
  margin-bottom: 8px;
  line-height: 1.2;
  color: #fff;
}
.upgrade-cta-block h2 .grad {
  background: linear-gradient(135deg, var(--brand-gold), #FFD789);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
}
.upgrade-cta-block p {
  font-size: 14px;
  color: rgba(255, 255, 255, 0.75);
  line-height: 1.6;
  margin-bottom: 18px;
  max-width: 460px;
}
.upgrade-benefits {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-bottom: 20px;
}
.upgrade-benefit {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  background: rgba(255, 255, 255, 0.06);
  border: 1px solid rgba(255, 255, 255, 0.12);
  padding: 6px 12px;
  border-radius: 999px;
  font-size: 12px;
  font-weight: 500;
  color: rgba(255, 255, 255, 0.9);
}
.upgrade-benefit i { color: var(--brand-gold); font-size: 13px; }

.upgrade-cta-actions {
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
}
.btn-upgrade-primary {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  background: linear-gradient(135deg, var(--brand-red), var(--brand-gold));
  color: #fff !important;
  padding: 13px 26px;
  border-radius: 12px;
  font-size: 14.5px;
  font-weight: 700;
  text-decoration: none;
  box-shadow: 0 8px 22px rgba(214, 31, 38, 0.35);
  transition: all 0.25s;
  border: none;
  cursor: pointer;
  position: relative;
  overflow: hidden;
  font-family: var(--font-body);
}
.btn-upgrade-primary::before {
  content: '';
  position: absolute;
  top: 0; left: -100%;
  width: 100%; height: 100%;
  background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.3), transparent);
  transition: left 0.6s ease;
}
.btn-upgrade-primary:hover::before { left: 100%; }
.btn-upgrade-primary:hover {
  transform: translateY(-2px);
  box-shadow: 0 12px 28px rgba(214, 31, 38, 0.45);
}
.btn-upgrade-ghost-dark {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  background: rgba(255, 255, 255, 0.08);
  border: 1px solid rgba(255, 255, 255, 0.2);
  color: rgba(255, 255, 255, 0.9);
  padding: 13px 22px;
  border-radius: 12px;
  font-size: 13.5px;
  font-weight: 600;
  text-decoration: none;
  transition: all 0.2s;
  font-family: var(--font-body);
  cursor: pointer;
}
.btn-upgrade-ghost-dark:hover {
  background: rgba(255, 255, 255, 0.12);
  color: #fff;
}

.upgrade-cta-right {
  position: relative;
  z-index: 2;
  text-align: center;
}
.pricing-tile {
  background: rgba(255, 255, 255, 0.05);
  border: 1.5px solid rgba(255, 255, 255, 0.15);
  border-radius: 18px;
  padding: 22px 28px;
  backdrop-filter: blur(12px);
  text-align: center;
}
.pricing-tile .pt-name {
  font-size: 12px;
  color: var(--brand-gold);
  font-weight: 700;
  letter-spacing: 0.05em;
  margin-bottom: 6px;
}
.pricing-tile .pt-price {
  font-family: var(--font-display);
  font-size: 38px;
  font-weight: 800;
  line-height: 1;
}
.pricing-tile .pt-price .currency {
  font-size: 22px;
  vertical-align: super;
  opacity: 0.8;
}
.pricing-tile .pt-period {
  font-size: 12px;
  color: rgba(255, 255, 255, 0.6);
  margin-top: 4px;
}
.pricing-tile .pt-strike {
  font-size: 13px;
  color: rgba(255, 255, 255, 0.5);
  text-decoration: line-through;
  margin-top: 6px;
}
.pricing-tile .pt-save {
  display: inline-block;
  background: linear-gradient(135deg, #16A34A, #22C55E);
  color: #fff;
  font-size: 11px;
  font-weight: 700;
  padding: 3px 10px;
  border-radius: 999px;
  margin-top: 8px;
}

/* =========================================================
   UPGRADE MODAL (popup version)
   ========================================================= */
.upgrade-modal-backdrop {
  position: fixed;
  inset: 0;
  background: rgba(20, 24, 38, 0.7);
  backdrop-filter: blur(4px);
  z-index: 9999;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 18px;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.25s ease;
}
.upgrade-modal-backdrop.is-open {
  opacity: 1;
  pointer-events: auto;
}
.upgrade-modal-dialog {
  background:
    radial-gradient(circle at 85% 15%, rgba(214, 31, 38, 0.25), transparent 50%),
    radial-gradient(circle at 15% 85%, rgba(198, 138, 58, 0.25), transparent 50%),
    linear-gradient(135deg, #1a1f2b 0%, #2a2f3f 100%);
  border-radius: 24px;
  max-width: 880px;
  width: 100%;
  max-height: 90vh;
  overflow-y: auto;
  overflow-x: hidden;
  position: relative;
  transform: scale(0.94);
  transition: transform 0.25s ease;
  box-shadow: 0 24px 60px rgba(0, 0, 0, 0.4);
}
.upgrade-modal-backdrop.is-open .upgrade-modal-dialog { transform: scale(1); }
/* Orbs replaced with inline radial gradients above — no pseudo-elements that cause overflow */
.upgrade-modal-close {
  position: absolute;
  top: 18px; right: 18px;
  width: 38px; height: 38px;
  background: rgba(255, 255, 255, 0.1);
  border: 1px solid rgba(255, 255, 255, 0.2);
  border-radius: 50%;
  color: #fff;
  font-size: 18px;
  display: flex; align-items: center; justify-content: center;
  cursor: pointer;
  z-index: 10;
  transition: all 0.2s;
}
.upgrade-modal-close:hover {
  background: rgba(255, 255, 255, 0.2);
  transform: rotate(90deg);
}
.upgrade-modal-content {
  padding: 38px 36px 32px;
  position: relative;
  z-index: 2;
  color: #fff;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 32px;
  align-items: center;
}
@media (max-width: 768px) {
  .upgrade-modal-content { grid-template-columns: 1fr; padding: 28px 24px; }
}
.upgrade-modal-tag {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  background: linear-gradient(135deg, var(--brand-gold), #E2A857);
  color: #1a1f2b;
  font-size: 10.5px;
  font-weight: 700;
  padding: 4px 12px;
  border-radius: 999px;
  letter-spacing: 0.05em;
  margin-bottom: 14px;
}
.upgrade-modal-content h2 {
  font-family: var(--font-display);
  font-size: 32px;
  font-weight: 800;
  margin-bottom: 10px;
  line-height: 1.15;
  color: #fff;
}
.upgrade-modal-content h2 .grad {
  background: linear-gradient(135deg, var(--brand-gold), #FFD789);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
}
.upgrade-modal-content p.sub {
  font-size: 14px;
  color: rgba(255, 255, 255, 0.75);
  line-height: 1.6;
  margin-bottom: 18px;
}
.upgrade-modal-tile {
  background: rgba(255, 255, 255, 0.08);
  border: 1.5px solid rgba(255, 255, 255, 0.2);
  border-radius: 20px;
  padding: 28px;
  backdrop-filter: blur(14px);
  text-align: center;
}
.upgrade-modal-tile .pt-price {
  font-family: var(--font-display);
  font-size: 48px;
  font-weight: 800;
  line-height: 1;
  background: linear-gradient(135deg, var(--brand-gold), #FFD789);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
}
.upgrade-modal-tile .pt-name {
  font-size: 12px;
  color: var(--brand-gold);
  font-weight: 700;
  letter-spacing: 0.05em;
  margin-bottom: 6px;
}
.upgrade-modal-tile .pt-period {
  font-size: 12.5px;
  color: rgba(255, 255, 255, 0.6);
  margin-top: 4px;
}
.upgrade-modal-tile .pt-strike {
  font-size: 14px;
  color: rgba(255, 255, 255, 0.45);
  text-decoration: line-through;
  margin-top: 10px;
}
.upgrade-modal-tile .pt-save {
  display: inline-block;
  background: linear-gradient(135deg, #16A34A, #22C55E);
  color: #fff;
  font-size: 11.5px;
  font-weight: 700;
  padding: 4px 12px;
  border-radius: 999px;
  margin-top: 10px;
  box-shadow: 0 4px 12px rgba(22, 163, 74, 0.3);
}
.upgrade-modal-cta {
  margin-top: 18px;
  display: flex;
  flex-direction: column;
  gap: 8px;
}

/* =========================================================
   MOBILE DRAWER — Logged-in state
   ========================================================= */
.drawer-user-head {
  padding: 18px;
  background: linear-gradient(135deg, var(--brand-red), var(--brand-gold));
  color: #fff;
  display: flex;
  align-items: center;
  gap: 12px;
}
.drawer-user-head .duh-avatar {
  width: 44px; height: 44px;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.2);
  border: 1.5px solid rgba(255, 255, 255, 0.4);
  display: flex; align-items: center; justify-content: center;
  font-weight: 700;
  font-size: 16px;
}
.drawer-user-head .duh-name { font-weight: 700; font-size: 14px; }
.drawer-user-head .duh-id { font-size: 11px; opacity: 0.85; }
.drawer-section-header {
  font-size: 10.5px;
  color: var(--slate);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  font-weight: 700;
  padding: 12px 14px 6px;
}
.drawer-item.badge-style .badge-count {
  margin-left: auto;
  background: var(--brand-red);
  color: #fff;
  font-size: 10px;
  padding: 1px 7px;
  border-radius: 999px;
  font-weight: 700;
}

/* Hide certain things based on login state */
body.is-public .logged-in-only { display: none !important; }
body.is-logged-in .logged-out-only { display: none !important; }


/* =========================================================
   DASHBOARD UPGRADE TEASER CARD (opens upgrade modal)
   ========================================================= */
.upgrade-teaser-card {
  display: flex;
  align-items: center;
  gap: 16px;
  padding: 16px 20px;
  background: linear-gradient(135deg, #1a1f2b 0%, #2a2f3f 100%);
  border-radius: 16px;
  color: #fff;
  cursor: pointer;
  margin-bottom: 24px;
  position: relative;
  overflow: hidden;
  transition: all 0.25s ease;
}
.upgrade-teaser-card::before {
  content: '';
  position: absolute;
  top: -60px; right: -60px;
  width: 200px; height: 200px;
  background: linear-gradient(135deg, rgba(214,31,38,0.4), rgba(198,138,58,0.4));
  border-radius: 50%;
  filter: blur(60px);
  pointer-events: none;
}
.upgrade-teaser-card:hover {
  transform: translateY(-2px);
  box-shadow: 0 12px 32px rgba(214,31,38,0.25);
}
.upgrade-teaser-card .ut-icon {
  width: 48px; height: 48px;
  border-radius: 12px;
  background: linear-gradient(135deg, var(--brand-red), var(--brand-gold));
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 22px;
  color: #fff;
  flex-shrink: 0;
  position: relative;
  z-index: 2;
  box-shadow: 0 6px 16px rgba(214,31,38,0.4);
}
.upgrade-teaser-card .ut-text {
  flex: 1;
  min-width: 0;
  position: relative;
  z-index: 2;
}
.upgrade-teaser-card .ut-title {
  font-family: var(--font-display);
  font-size: 17px;
  font-weight: 700;
  line-height: 1.3;
  margin-bottom: 2px;
}
.upgrade-teaser-card .ut-grad {
  background: linear-gradient(135deg, var(--brand-gold), #FFD789);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
}
.upgrade-teaser-card .ut-sub {
  font-size: 12px;
  color: rgba(255,255,255,0.75);
}
.upgrade-teaser-card .ut-btn {
  background: linear-gradient(135deg, var(--brand-red), var(--brand-gold));
  color: #fff;
  border: none;
  padding: 10px 18px;
  border-radius: 10px;
  font-size: 13px;
  font-weight: 600;
  cursor: pointer;
  white-space: nowrap;
  position: relative;
  z-index: 2;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-family: var(--font-body);
  transition: all 0.2s;
}
.upgrade-teaser-card .ut-btn:hover {
  transform: translateY(-1px);
  box-shadow: 0 6px 16px rgba(214,31,38,0.4);
}
@media (max-width: 576px) {
  .upgrade-teaser-card {
    flex-wrap: wrap;
    text-align: center;
    justify-content: center;
  }
  .upgrade-teaser-card .ut-icon { display: none; }
  .upgrade-teaser-card .ut-btn { width: 100%; justify-content: center; }
}


/* =========================================================
   TICKETS — Top status tabs (replaces left filter aside)
   ========================================================= */
.tickets-layout {
  /* Override grid-cols when there's no filter aside */
  grid-template-columns: 1fr !important;
}
.tickets-status-tabs {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 18px;
  padding-bottom: 14px;
  border-bottom: 1px solid #f0f0f0;
}
.ts-tab {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 8px 14px;
  background: #fff;
  border: 1.5px solid var(--line);
  border-radius: 999px;
  font-size: 12.5px;
  font-weight: 600;
  color: var(--ink);
  text-decoration: none;
  transition: all 0.2s;
  white-space: nowrap;
}
.ts-tab:hover {
  border-color: var(--brand-red);
  color: var(--brand-red);
}
.ts-tab.active {
  background: linear-gradient(135deg, var(--brand-red), var(--brand-gold));
  border-color: transparent;
  color: #fff;
}
.ts-tab i { font-size: 13px; }
.ts-tab .ts-count {
  background: rgba(0, 0, 0, 0.06);
  padding: 1px 8px;
  border-radius: 999px;
  font-size: 11px;
  font-weight: 700;
  margin-left: 2px;
}
.ts-tab.active .ts-count {
  background: rgba(255, 255, 255, 0.25);
}


/* =========================================================
   "Other" option support for selects
   Pattern: select with class .has-other; when value === "Other",
   the sibling .other-input-wrap is shown.
   ========================================================= */
.other-input-wrap {
  display: none;
  margin-top: 8px;
  animation: otherFade 0.25s ease;
}
.other-input-wrap.is-shown { display: block; }
@keyframes otherFade {
  from { opacity: 0; transform: translateY(-4px); }
  to { opacity: 1; transform: translateY(0); }
}
.other-input-wrap .other-input-label {
  font-size: 11.5px;
  color: var(--brand-red);
  font-weight: 600;
  margin-bottom: 4px;
  display: flex;
  align-items: center;
  gap: 4px;
}
.other-input-wrap .other-input-label i { font-size: 12px; }


/* =========================================================
   PARENT LOGIN PAGE — innovative card design
   ========================================================= */
.parent-accounts-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(380px, 1fr));
  gap: 18px;
  margin-bottom: 24px;
}
@media (max-width: 576px) {
  .parent-accounts-grid { grid-template-columns: 1fr; }
}

.parent-account-card {
  background: #fff;
  border: 1px solid #eee;
  border-radius: 16px;
  overflow: hidden;
  transition: all 0.25s;
  border-left: 4px solid #ddd;
}
.parent-account-card.active {
  border-left-color: #16A34A;
}
.parent-account-card.inactive {
  border-left-color: var(--slate);
  opacity: 0.7;
}
.parent-account-card:hover {
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.08);
  transform: translateY(-2px);
}

.pa-card-head {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 18px 18px 12px;
  background: linear-gradient(135deg, #FFF7E6, #FFFBF0);
  border-bottom: 1px solid #FCE9C7;
}
.pa-avatar {
  width: 50px; height: 50px;
  border-radius: 50%;
  background: linear-gradient(135deg, #B45309, #D97706);
  color: #fff;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 22px;
  flex-shrink: 0;
  box-shadow: 0 4px 12px rgba(180, 83, 9, 0.25);
}
.pa-avatar.mother {
  background: linear-gradient(135deg, #DB2777, #F472B6);
  box-shadow: 0 4px 12px rgba(219, 39, 119, 0.25);
}
.pa-avatar.guardian {
  background: linear-gradient(135deg, var(--brand-blue), #4A6BB3);
}
.pa-meta { flex: 1; min-width: 0; }
.pa-name {
  font-family: var(--font-display);
  font-size: 17px;
  font-weight: 700;
  color: var(--ink);
}
.pa-rel {
  font-size: 12.5px;
  color: var(--slate);
  display: flex;
  align-items: center;
  gap: 4px;
  margin-top: 1px;
}
.pa-rel i { font-size: 12px; color: #B45309; }

.pa-status {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: 10.5px;
  font-weight: 700;
  padding: 3px 9px;
  border-radius: 999px;
  letter-spacing: 0.04em;
}
.pa-status.active {
  background: rgba(22, 163, 74, 0.12);
  color: #16A34A;
}
.pa-status.inactive {
  background: rgba(102, 102, 102, 0.12);
  color: var(--slate);
}

.pa-card-body {
  padding: 14px 18px;
}
.pa-info-row {
  font-size: 12.5px;
  color: var(--slate);
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 5px 0;
}
.pa-info-row i {
  color: #B45309;
  font-size: 13px;
  width: 16px;
  flex-shrink: 0;
}

.pa-stats {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 8px;
  margin-top: 12px;
  padding: 12px;
  background: #fafafa;
  border-radius: 10px;
}
.pa-stat {
  text-align: center;
  font-size: 11px;
  color: var(--slate);
  font-weight: 500;
  line-height: 1.3;
}
.pa-stat span {
  display: block;
  font-family: var(--font-display);
  font-size: 18px;
  font-weight: 700;
  color: #B45309;
  margin-bottom: 2px;
}

.pa-card-actions {
  padding: 12px 18px 16px;
  display: flex;
  gap: 8px;
  border-top: 1px solid #f5f5f5;
  flex-wrap: wrap;
}
.pa-card-actions .btn-modern {
  flex: 1;
  font-size: 12px;
  padding: 8px 12px;
  justify-content: center;
}

/* Create Parent Form */
.create-parent-form {
  background: #fff;
  border: 1px solid #eee;
  border-radius: 16px;
  overflow: hidden;
  margin-bottom: 40px;
  animation: fadeInUp 0.3s ease;
}
@keyframes fadeInUp {
  from { opacity: 0; transform: translateY(10px); }
  to { opacity: 1; transform: translateY(0); }
}

/* Permissions card */
.permissions-card {
  background: linear-gradient(135deg, #F0F6FF, #E8F0FF);
  border: 1px solid #DCE7FA;
  border-radius: 12px;
  padding: 16px;
  margin-top: 16px;
}
.pc-head {
  font-family: var(--font-display);
  font-weight: 700;
  font-size: 14px;
  color: var(--brand-blue);
  margin-bottom: 10px;
  display: flex;
  align-items: center;
  gap: 6px;
}
.pc-head i { font-size: 16px; }
.pc-list {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 8px 14px;
}
@media (max-width: 576px) {
  .pc-list { grid-template-columns: 1fr; }
}
.pc-item {
  font-size: 12.5px;
  display: flex;
  align-items: center;
  gap: 6px;
}
.pc-item.allowed { color: #15803D; }
.pc-item.denied { color: #B91C1C; }
.pc-item i { font-size: 14px; flex-shrink: 0; }


/* =========================================================
   FILTER PANEL — legacy row tints (replaced by innovative design above)
   ========================================================= */
/* Reserved for future overrides */


/* =========================================================
   REPLACE BLACK with brand wine/burgundy gradient
   - upgrade-teaser-card
   - upgrade-modal-dialog
   ========================================================= */
.upgrade-teaser-card {
  background: linear-gradient(135deg, #5B1620 0%, #7A1F26 100%) !important;
}
.upgrade-teaser-card::before {
  background: linear-gradient(135deg, rgba(214, 31, 38, 0.5), rgba(198, 138, 58, 0.5)) !important;
}

.upgrade-modal-dialog {
  background:
    radial-gradient(circle at 85% 15%, rgba(214, 31, 38, 0.3), transparent 50%),
    radial-gradient(circle at 15% 85%, rgba(198, 138, 58, 0.3), transparent 50%),
    linear-gradient(135deg, #5B1620 0%, #7A1F26 100%) !important;
}
.upgrade-modal-tag {
  background: linear-gradient(135deg, #FFD789, #FFE9B3) !important;
  color: #5B1620 !important;
}


/* =========================================================
   CHANGE PASSWORD MODAL (parent-login)
   ========================================================= */
.cp-modal-backdrop {
  position: fixed;
  inset: 0;
  background: rgba(20, 24, 38, 0.6);
  backdrop-filter: blur(4px);
  z-index: 9999;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 18px;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.25s ease;
}
.cp-modal-backdrop.is-open {
  opacity: 1;
  pointer-events: auto;
}
.cp-modal-dialog {
  background: #fff;
  border-radius: 18px;
  max-width: 480px;
  width: 100%;
  position: relative;
  overflow: hidden;
  transform: scale(0.94);
  transition: transform 0.25s ease;
  box-shadow: 0 20px 50px rgba(0, 0, 0, 0.25);
}
.cp-modal-backdrop.is-open .cp-modal-dialog { transform: scale(1); }
.cp-modal-close {
  position: absolute;
  top: 14px;
  right: 14px;
  width: 32px;
  height: 32px;
  background: rgba(255, 255, 255, 0.2);
  border: 1px solid rgba(255, 255, 255, 0.4);
  border-radius: 50%;
  color: #fff;
  font-size: 16px;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  z-index: 5;
  transition: all 0.2s;
}
.cp-modal-close:hover {
  background: rgba(255, 255, 255, 0.35);
  transform: rotate(90deg);
}
.cp-modal-head {
  padding: 22px 26px;
  background: linear-gradient(135deg, #B45309, #D97706);
  color: #fff;
  display: flex;
  align-items: center;
  gap: 14px;
}
.cp-modal-icon {
  width: 48px;
  height: 48px;
  background: rgba(255, 255, 255, 0.2);
  border: 1.5px solid rgba(255, 255, 255, 0.35);
  border-radius: 12px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 22px;
  flex-shrink: 0;
}
.cp-modal-title {
  font-family: var(--font-display);
  font-size: 19px;
  font-weight: 700;
  line-height: 1.2;
}
.cp-modal-sub {
  font-size: 12.5px;
  opacity: 0.95;
  margin-top: 2px;
}
.cp-modal-body {
  padding: 22px 26px 26px;
}


/* HTML hidden attribute MUST always override display rules */
[hidden] { display: none !important; }


/* =========================================================
   btn-modern color variants for parent card actions
   ========================================================= */
.btn-modern.blue {
  background: linear-gradient(135deg, var(--brand-blue), #4A6BB3);
  color: #fff;
  box-shadow: 0 4px 12px rgba(47, 74, 125, 0.25);
}
.btn-modern.blue:hover {
  transform: translateY(-2px);
  box-shadow: 0 8px 20px rgba(47, 74, 125, 0.35);
}
.btn-modern.amber {
  background: linear-gradient(135deg, #B45309, #D97706);
  color: #fff;
  box-shadow: 0 4px 12px rgba(180, 83, 9, 0.25);
}
.btn-modern.amber:hover {
  transform: translateY(-2px);
  box-shadow: 0 8px 20px rgba(180, 83, 9, 0.35);
}


/* =========================================================
   HEADER ACTION ICONS — bold colored circle buttons
   Used on both desktop and mobile (logged-in header)
   ========================================================= */
.icon-action-btn {
  width: 38px; height: 38px;
  border-radius: 50%;
  background: #fff;
  border: 1.5px solid;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 17px;
  position: relative;
  cursor: pointer;
  transition: all 0.2s;
  flex-shrink: 0;
  padding: 0;
}
.icon-action-btn:hover {
  transform: translateY(-1px);
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
}
/* color variants */
.icon-action-btn.notif       { border-color: var(--brand-red); color: var(--brand-red); }
.icon-action-btn.ticket-btn  { border-color: #B45309; color: #B45309; }
.icon-action-btn.menu-btn    { border-color: var(--brand-blue); color: var(--brand-blue); }
.icon-action-btn .icon-count {
  position: absolute;
  top: -4px; right: -4px;
  background: var(--brand-red);
  color: #fff;
  font-size: 9.5px;
  font-weight: 700;
  min-width: 16px; height: 16px;
  border-radius: 999px;
  padding: 0 4px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1.5px solid #fff;
  line-height: 1;
}
.icon-action-btn i { line-height: 1; }

@media (max-width: 991px) {
  .icon-action-btn { width: 34px; height: 34px; font-size: 15px; }
  .icon-action-btn .icon-count { font-size: 9px; min-width: 14px; height: 14px; }
}

/* Right-side icon group spacing */
.header-icon-actions {
  display: inline-flex;
  align-items: center;
  gap: 7px;
}

/* Sidebar collapsed state — toggled by .menu-btn on desktop */
@media (min-width: 992px) {
  body.sidebar-collapsed .dash-sidebar { display: none; }
  body.sidebar-collapsed .dash-wrap { grid-template-columns: 1fr; }
}

/* Hide old hamburger trigger when new menu-btn is present (logged-in pages) */
body.is-logged-in .dash-menu-trigger { display: none !important; }

/* Remove dropdown caret on Search nav for public pages (already handled via removing dropdown-toggle class)  */

/* Mobile drawer backdrop */
.dash-sidebar-backdrop {
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,0.5);
  z-index: 1099;
  backdrop-filter: blur(2px);
  animation: bdFade 0.2s ease;
}
@keyframes bdFade { from { opacity: 0; } to { opacity: 1; } }
@media (min-width: 992px) {
  .dash-sidebar-backdrop { display: none; }
}
body.dash-sidebar-open { overflow: hidden; }

/* On logged-in pages, hide the old hamburger button — replaced by the new menu-btn */
body.is-logged-in .hamburger-btn { display: none !important; }


/* =========================================================
   COMPREHENSIVE MOBILE RESPONSIVENESS
   Applies to all pages — especially search/tickets/parent-login
   ========================================================= */
@media (max-width: 991px) {
  /* Dashboard wrap: stack sidebar above main on tablet+mobile */
  .dash-wrap {
    grid-template-columns: 1fr !important;
    gap: 0 !important;
  }
  .dash-sidebar {
    position: fixed;
    top: 0; left: -320px;
    width: 300px;
    height: 100vh;
    z-index: 1100;
    transition: left 0.3s ease;
    overflow-y: auto;
    background: #fff;
    box-shadow: 4px 0 20px rgba(0,0,0,0.15);
  }
  .dash-sidebar.open {
    left: 0;
  }
  .dash-backdrop {
    position: fixed;
    inset: 0;
    background: rgba(0,0,0,0.5);
    z-index: 1099;
    display: none;
  }
  .dash-backdrop.open { display: block; }
  .dash-main { padding: 0 12px; }

  /* Container padding */
  .container, .container-fluid {
    padding-left: 14px !important;
    padding-right: 14px !important;
  }

  /* Tickets layout: stack */
  .tickets-layout {
    grid-template-columns: 1fr !important;
  }
  .tickets-filter-aside {
    width: 100%;
    margin-bottom: 12px;
  }
  .tickets-header h3 {
    font-size: 18px;
  }
  .ticket-card {
    padding: 12px;
  }
  .ticket-card-top {
    flex-direction: column;
    gap: 8px;
  }
  .ticket-card-bottom {
    flex-wrap: wrap;
    gap: 8px;
    font-size: 11.5px;
  }

  /* Search pages */
  .search-tabs-bar {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    flex-wrap: nowrap !important;
  }
  .search-tab {
    flex-shrink: 0;
  }
  .search-results-grid {
    grid-template-columns: 1fr !important;
  }

  /* ep-section-nav (tickets, edit-profile) — horizontal scroll on mobile */
  .ep-section-nav-inner {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    flex-wrap: nowrap !important;
  }
  .ep-section-pill {
    flex-shrink: 0;
    white-space: nowrap;
  }

  /* Forms */
  .form-grid-2 {
    grid-template-columns: 1fr !important;
  }
  .new-ticket-form, .create-parent-form {
    margin-bottom: 24px;
  }
  .ntf-head, .cp-modal-head {
    padding: 16px 18px !important;
  }
  .ntf-body, .cp-modal-body {
    padding: 18px 14px !important;
  }
  .ntf-title { font-size: 17px; }
  .ntf-sub { font-size: 12px; }

  /* Parent account cards: full-width single column */
  .parent-accounts-grid {
    grid-template-columns: 1fr !important;
  }
  .pa-card-actions {
    flex-direction: column;
  }
  .pa-card-actions .btn-modern {
    width: 100%;
    flex: none;
  }

  /* Permissions card: stack list to single column */
  .pc-list {
    grid-template-columns: 1fr !important;
  }

  /* Confirm modal */
  .cm-dialog {
    max-width: calc(100vw - 24px);
  }

  /* Upgrade modal: stack content */
  .upgrade-modal-content {
    grid-template-columns: 1fr !important;
  }
  .upgrade-modal-tile {
    max-width: 100%;
  }

  /* Footer-above gap fix */
  main, .dash-main {
    padding-bottom: 24px;
  }
  body > section:last-of-type {
    padding-bottom: 24px !important;
  }
}

@media (max-width: 576px) {
  /* Even tighter for phones */
  .dash-main { padding: 0 10px; }

  .page-head h1, .page-head h2 {
    font-size: 20px !important;
  }
  .page-head p {
    font-size: 12px !important;
  }

  /* Profile card grids — single column */
  .profile-grid {
    grid-template-columns: 1fr !important;
  }

  /* Filter button row on activities */
  .dash-filter-toolbar {
    flex-wrap: wrap;
    gap: 8px;
  }
  .dash-filter-toolbar > * {
    flex: 1 1 auto;
  }

  /* Settings pages */
  .settings-card {
    padding: 16px 14px !important;
  }

  /* Tickets header on small screens */
  .tickets-header {
    flex-direction: column;
    gap: 10px;
    align-items: flex-start;
  }
  .tickets-header h3 { font-size: 17px; }

  /* Dropdown panels — full width on tiny screens */
  .dropdown-panel {
    width: calc(100vw - 16px) !important;
    max-height: 80vh;
    overflow-y: auto;
  }
}

/* Reduce footer top spacing */
.site-footer {
  margin-top: 32px !important;
}
@media (max-width: 768px) {
  .site-footer {
    margin-top: 20px !important;
  }
}


/* =========================================================
   MOBILE DROPDOWNS — full responsive sizing
   ========================================================= */
@media (max-width: 767px) {
  .dropdown-panel {
    position: fixed !important;
    top: auto !important;
    bottom: 0;
    left: 0 !important;
    right: 0 !important;
    width: 100% !important;
    max-width: 100% !important;
    transform: none !important;
    border-radius: 18px 18px 0 0;
    max-height: 75vh;
    overflow-y: auto;
    box-shadow: 0 -10px 30px rgba(0,0,0,0.2);
    animation: ddSlideUp 0.25s ease;
  }
  @keyframes ddSlideUp {
    from { transform: translateY(100%); }
    to { transform: translateY(0); }
  }
  .dp-head { padding: 14px 16px; }
  .dp-title { font-size: 15px; }
  .dp-item {
    padding: 12px 14px;
  }
  .dp-item-title {
    font-size: 13px;
  }
  .dp-item-text {
    font-size: 12px;
  }
  .dp-footer {
    padding: 12px 14px;
    padding-bottom: calc(28px + env(safe-area-inset-bottom));
    flex-wrap: wrap;
    gap: 8px;
  }
  .dp-footer > * {
    flex: 1 1 auto;
    text-align: center;
    justify-content: center;
  }
}

/* Body lock when mobile dropdown is open */
body.has-mobile-dropdown { overflow: hidden; }


/* =========================================================
   VIEW MODE TOGGLE (grid/list)
   ========================================================= */
.view-mode-toggle {
  display: inline-flex;
  background: #fff;
  border: 1.5px solid var(--line);
  border-radius: 8px;
  overflow: hidden;
  padding: 2px;
}
.view-mode-toggle .vm-btn {
  background: transparent;
  border: none;
  padding: 6px 10px;
  font-size: 14px;
  color: var(--slate);
  border-radius: 5px;
  cursor: pointer;
  transition: all 0.2s;
}
.view-mode-toggle .vm-btn:hover {
  color: var(--brand-red);
}
.view-mode-toggle .vm-btn.active {
  background: linear-gradient(135deg, var(--brand-red), var(--brand-gold));
  color: #fff;
}

/* When grid is in list-view mode, force single column */
[data-profile-grid][data-view="list"] {
  --bs-gutter-x: 0.75rem;
}
[data-profile-grid][data-view="list"] > .col {
  flex: 0 0 100% !important;
  max-width: 100% !important;
}
[data-profile-grid][data-view="list"] .profile-card {
  display: grid;
  grid-template-columns: 160px 1fr;
  gap: 0;
}
[data-profile-grid][data-view="list"] .pc-img {
  aspect-ratio: 1 !important;
}
@media (max-width: 576px) {
  [data-profile-grid][data-view="list"] .profile-card {
    grid-template-columns: 110px 1fr;
  }
}

/* Center the desktop nav links between the logo and right-side actions.
   Uses absolute positioning so flex spacing of logo + action buttons is
   preserved, while the nav itself is visually centered in the viewport. */
@media (min-width: 992px) {
  .site-header .navbar { position: relative; }
  .site-header .navbar-nav.d-lg-flex {
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
    margin-left: 0 !important;
  }
}

/* Public header Login button — styled like .btn-green (solid Royal Red) */
.site-header a.btn-ghost[href="login.html"] {
  background: var(--green);
  color: #fff;
  border: none;
  box-shadow: var(--sh-green);
  font-weight: 600;
}
.site-header a.btn-ghost[href="login.html"]:hover {
  background: var(--green-dark);
  color: #fff;
}

/* Slim page-hero on CMS pages — small label + h1 only, no sub-paragraph */
.page-hero {
  padding: 28px 0 32px !important;
}
.page-hero h1 {
  margin-bottom: 0 !important;
  font-size: clamp(26px, 4vw, 36px) !important;
}
@media (max-width: 576px) {
  .page-hero { padding: 22px 0 26px !important; }
}

/* Toggle-hide rules — kept here so the markup stays untouched and these can
   be flipped back on by removing the block. */
.results-grid[data-view="grid"] .compat-score,
[data-profile-grid][data-view="grid"] .compat-score { display: none !important; }
.list-card .lc-badge.match { display: none !important; }

/* ============================================================
   Section-nav horizontal scroll arrows (ep-section-nav)
   Clickable left/right arrows that scroll the pill strip.
   ============================================================ */
.ep-section-nav { display:flex; align-items:stretch; gap:4px; overflow:hidden; white-space:normal; }
.ep-section-nav-inner { flex:1 1 auto; min-width:0; overflow-x:auto; overflow-y:hidden; -webkit-overflow-scrolling:touch; scrollbar-width:none; -ms-overflow-style:none; scroll-behavior:smooth; }
.ep-section-nav-inner::-webkit-scrollbar { display:none; height:0; width:0; }
.ep-nav-arrow { flex:0 0 auto; align-self:stretch; width:32px; border:0; background:#fff; color:var(--brand-red); cursor:pointer; display:none; align-items:center; justify-content:center; font-size:17px; padding:0; z-index:2; }
.ep-nav-arrow.show { display:inline-flex; }
.ep-nav-arrow:hover:not(:disabled) { background:rgba(214,31,38,0.06); }
.ep-nav-arrow:disabled { opacity:0.28; cursor:default; }
.ep-nav-arrow-left { box-shadow:6px 0 9px -5px rgba(0,0,0,0.18); }
.ep-nav-arrow-right { box-shadow:-6px 0 9px -5px rgba(0,0,0,0.18); }
@media (max-width:768px){ .ep-nav-arrow{ width:28px; font-size:15px; } }
/* ===== TVC video slider (multi-video carousel with arrows) ===== */
.tvc-viewport { border-radius:18px; overflow:hidden; }
.tvc-track { display:flex; transition:transform 0.45s cubic-bezier(0.4,0,0.2,1); will-change:transform; }
.tvc-card { flex:0 0 100%; width:100%; border-radius:0; }
.tvc-arrow { position:absolute; top:50%; transform:translateY(-50%); z-index:6; width:46px; height:46px; border-radius:50%; border:0; background:rgba(255,255,255,0.92); color:var(--brand-red); display:flex; align-items:center; justify-content:center; font-size:22px; cursor:pointer; box-shadow:0 6px 18px rgba(0,0,0,0.22); transition:background .2s, transform .2s; }
.tvc-arrow:hover { background:#fff; transform:translateY(-50%) scale(1.08); }
.tvc-arrow-prev { left:10px; }
.tvc-arrow-next { right:10px; }
.tvc-slider-dots { display:flex; gap:8px; justify-content:center; margin-top:18px; }
.tvc-dot { width:9px; height:9px; border-radius:50%; border:0; padding:0; background:rgba(214,31,38,0.25); cursor:pointer; transition:all .25s ease; }
.tvc-dot.active { background:var(--brand-red); width:26px; border-radius:5px; }
@media (max-width:767px){ .tvc-arrow{ width:38px; height:38px; font-size:18px; } .tvc-arrow-prev{ left:6px; } .tvc-arrow-next{ right:6px; } }
/* ===== TVC lightbox prev/next video arrows ===== */
.tvc-lb-nav { position:absolute; top:50%; transform:translateY(-50%); z-index:4; width:48px; height:48px; border-radius:50%; border:0; background:rgba(255,255,255,0.9); color:var(--brand-red); display:flex; align-items:center; justify-content:center; font-size:24px; cursor:pointer; box-shadow:0 4px 14px rgba(0,0,0,0.35); transition:background .2s, transform .2s; }
.tvc-lb-nav:hover { background:#fff; transform:translateY(-50%) scale(1.08); }
.tvc-lb-prev { left:10px; }
.tvc-lb-next { right:10px; }
@media (max-width:767px){ .tvc-lb-nav{ width:38px; height:38px; font-size:18px; } }

/* ---------- Mobile: tighter inner padding for Why Perfect Marry + How It Works cards (2-per-row) ---------- */
@media (max-width: 575px){
  .why-card{ padding:16px 10px; }
  .why-card .icon-wrap{ width:50px; height:50px; font-size:21px; margin-bottom:9px; }
  .why-card h5{ font-size:15px; margin-bottom:5px; }
  .why-card p{ font-size:12.5px; line-height:1.45; }
  .pv2-card{ padding:54px 10px 20px; border-radius:18px; }
  .pv2-orb{ width:66px; height:66px; top:-30px; font-size:25px; }
  .pv2-orb-img{ width:38px; height:38px; }
  .pv2-heading{ font-size:16px; margin:2px 0 5px; }
  .pv2-tag{ font-size:12.5px; line-height:1.4; }
  .pv2-grid{ gap:58px 12px; }
}

/* ---------- Registration wizard: tighter spacing between form fields ---------- */
.wiz-form .form-group{ margin-bottom: 6px; }
.wiz-form .row.g-3{ --bs-gutter-y: 0.5rem; }
.wiz-form .form-label{ margin-bottom: 4px; }

/* ---------- Mobile: keep auth/registration title on one line ---------- */
@media (max-width: 575px){
  .auth-title{ font-size: 22px; white-space: nowrap; }
  .auth-title em{ white-space: nowrap; }
}

/* ---------- Horoscope score: 78% as one centered unit (same font) + visible title ---------- */
.pv-horoscope .pv-horo-title{ color:#fff !important; }
.pv-horoscope .pv-horo-desc{ color:rgba(255,255,255,0.85) !important; }
.pv-horoscope .pv-yantra-score{ position:absolute; inset:0; }
.pv-horoscope .pv-yantra-score-tag{ position:absolute; top:30%; left:0; right:0; text-align:center; margin:0; }
.pv-horoscope .pv-yantra-score-val{ position:absolute; top:50%; left:50%; transform:translate(-50%,-50%); display:flex; align-items:baseline; justify-content:center; gap:2px; line-height:1; }
.pv-horoscope .pv-yantra-score-num{ position:static !important; font-size:34px !important; font-weight:700; color:#fbbf24; text-shadow:0 0 20px rgba(251,191,36,0.6); line-height:1; margin:0; top:auto; }
.pv-horoscope .pv-yantra-score-max{ position:static !important; font-size:34px !important; font-weight:700; color:#fbbf24; opacity:.9; line-height:1; margin:0; top:auto; }
.pv-horoscope .pv-yantra-score-lbl{ position:absolute; bottom:30%; left:0; right:0; text-align:center; margin:0; }
@media (max-width:575px){
  .pv-horoscope .pv-yantra-score-num,
  .pv-horoscope .pv-yantra-score-max{ font-size:30px !important; }
}

/* ---------- Horoscope: trim wasted spacing/margins ---------- */
.pv-horoscope{ padding:16px 14px !important; margin:18px 0 16px !important; }
.pv-horoscope .pv-horo-head{ margin-bottom:4px !important; }
.pv-horoscope .pv-yantra-stage{ margin:0 auto 6px !important; }
.pv-horoscope .pv-horo-cards{ margin-top:0 !important; margin-bottom:14px !important; }
@media (max-width:575px){
  .pv-horoscope{ padding:14px 10px !important; }
  .pv-horoscope .pv-yantra-stage{ height:330px !important; }
}

/* ---------- Horoscope yantra: fit within section on small phones (no side overflow) ---------- */
@media (max-width:575px){
  .pv-yantra-stage{ height:300px !important; }
  .pv-yantra-orbit{ width:210px !important; height:210px !important; }
  .pv-yantra-mandala svg{ width:168px !important; height:168px !important; }
  .pv-yantra-orb{ width:74px !important; height:74px !important; margin:-37px 0 0 -37px !important; }
  .pv-yantra-orb-name{ font-size:11px; }
  .pv-yantra-orb-label{ font-size:8px; letter-spacing:.1em; }
  @keyframes pvOrbitBride{ from{ transform:rotate(0deg) translateX(102px) rotate(0deg); } to{ transform:rotate(360deg) translateX(102px) rotate(-360deg); } }
  @keyframes pvOrbitGroom{ from{ transform:rotate(180deg) translateX(102px) rotate(-180deg); } to{ transform:rotate(540deg) translateX(102px) rotate(-540deg); } }
}
@media (max-width:399px){
  .pv-yantra-stage{ height:264px !important; }
  .pv-yantra-orbit{ width:184px !important; height:184px !important; }
  .pv-yantra-mandala svg{ width:148px !important; height:148px !important; }
  .pv-yantra-orb{ width:66px !important; height:66px !important; margin:-33px 0 0 -33px !important; }
  .pv-yantra-score-num, .pv-horoscope .pv-yantra-score-num,
  .pv-yantra-score-max, .pv-horoscope .pv-yantra-score-max{ font-size:26px !important; }
  @keyframes pvOrbitBride{ from{ transform:rotate(0deg) translateX(89px) rotate(0deg); } to{ transform:rotate(360deg) translateX(89px) rotate(-360deg); } }
  @keyframes pvOrbitGroom{ from{ transform:rotate(180deg) translateX(89px) rotate(-180deg); } to{ transform:rotate(540deg) translateX(89px) rotate(-540deg); } }
}

/* ---------- Horoscope bride/groom cards: smaller on mobile ---------- */
@media (max-width:575px){
  .pv-horoscope .pv-horo-cards{ gap:10px; margin-bottom:12px; }
  .pv-horoscope .pv-horo-card{ padding:12px 12px; }
  .pv-horoscope .pv-horo-card-label{ font-size:10px; letter-spacing:.12em; margin-bottom:4px; }
  .pv-horoscope .pv-horo-card-name{ font-size:18px !important; margin-bottom:2px; }
  .pv-horoscope .pv-horo-card-pada{ font-size:12px; margin-bottom:6px; }
  .pv-horoscope .pv-horo-card-meta{ font-size:10px; gap:8px; }
  .pv-horoscope .pv-horo-card-meta i{ font-size:11px; }
  .pv-horoscope .pv-horo-card-verdict{ width:62px; height:62px; font-size:21px; padding:0; }
  .pv-horoscope .pv-horo-card-verdict-lbl{ font-size:9px; margin-top:5px; }
}

/* ---------- Horoscope: Bride | 78% | Groom in ONE row on mobile ---------- */
.pv-horoscope .pv-horo-cards{ grid-template-columns:1fr auto 1fr !important; }
@media (max-width:575px){
  .pv-horoscope .pv-horo-cards{ gap:6px !important; align-items:center; }
  .pv-horoscope .pv-horo-card{ padding:10px 5px; }
  .pv-horoscope .pv-horo-card-label{ font-size:8px; letter-spacing:.04em; margin-bottom:3px; }
  .pv-horoscope .pv-horo-card-name{ font-size:13px !important; margin-bottom:2px; line-height:1.1; }
  .pv-horoscope .pv-horo-card-pada{ font-size:10px; margin-bottom:0; }
  .pv-horoscope .pv-horo-card-verdict{ width:52px; height:52px; font-size:16px; }
  .pv-horoscope .pv-horo-card-verdict-lbl{ font-size:7px; letter-spacing:.05em; margin-top:3px; }
}

/* ---------- Horoscope note: smaller on mobile ---------- */
@media (max-width:575px){
  .pv-horoscope .pv-horo-note{ padding:10px 12px; font-size:11px; line-height:1.45; gap:8px; border-radius:10px; }
  .pv-horoscope .pv-horo-note i{ font-size:15px; }
}
