/**
 * brightlife-v2.css
 * Design system layer for Brightlife Matrimony redesign.
 *
 * ARCHITECTURE RULES:
 * - All new classes are prefixed with `bl-` to avoid Bootstrap collision.
 * - Bootstrap overrides are scoped to existing class selectors (e.g. `.navbar.bg-pink`)
 *   so they only apply inside the existing Bootstrap component structure.
 * - Global element selectors (body, footer) are used only for properties Bootstrap
 *   does not control or where intentional override is required.
 * - The Bootstrap grid, modal system, and utility classes are NOT modified.
 * - This file loads AFTER Bootstrap CSS so cascade order is preserved.
 */


/* ==========================================================================
   1. CSS Custom Properties (Design Tokens)
   ========================================================================== */

:root {
    --bl-primary:      #e91e63;
    --bl-primary-dark: #c2185b;
    --bl-secondary:    #2c3e50;
    --bl-accent:       #3498db;
    --bl-white:        #ffffff;
    --bl-text:         #333333;
    --bl-text-muted:   #7f8c8d;
    --bl-light-bg:     #f8f9fa;
    --bl-shadow:       0 4px 15px rgba(0, 0, 0, 0.08);
    --bl-shadow-hover: 0 12px 30px rgba(0, 0, 0, 0.13);
    --bl-transition:   all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    --bl-radius:       12px;
    --bl-radius-pill:  50px;
    --bl-footer-text:  #bdc3c7;
    --bl-dark-card:    linear-gradient(160deg, #2c3e50 0%, #1a252f 100%);
}


/* ==========================================================================
   2. Base Typography
   Bootstrap sets body font-family. We extend it with Poppins here.
   Josefin Sans and Audiowide (used by style.css headings) are preserved.
   ========================================================================== */

body {
    font-family: 'Poppins', 'Josefin Sans', Arial, sans-serif;
    color: var(--bl-text);
    line-height: 1.6;
}


/* ==========================================================================
   3. Top Bar (.head-top)
   Scoped to `.head-top` — Bootstrap grid row inside it is untouched.
   ========================================================================== */

.head-top {
    background-color: var(--bl-secondary) !important;
    padding: 8px 0;
    font-size: 13px;
}

/*
 * Phone link — replaces the old .btn.btn-info anchor in the top bar.
 * Uses inline-flex so the FA icon and text align on the same baseline.
 */
.bl-topbar-phone {
    color: rgba(0, 0, 0, 0.85) !important;
    text-decoration: none !important;
    display: inline-flex;
    align-items: center;
    gap: 7px;
    font-size: 13px;
    font-weight: 500;
    transition: var(--bl-transition);
}

.bl-topbar-phone i {
    color: var(--bl-primary);
    font-size: 12px;
}

.bl-topbar-phone:hover {
    color: var(--bl-white) !important;
}

/* Auth/action buttons rendered by PHP as .btn-danger / .btn-secondary in .head-top */
.head-top a.btn {
    font-size: 12px;
    border-radius: var(--bl-radius-pill);
    padding: 5px 16px;
    font-weight: 600;
    transition: var(--bl-transition);
}

.head-top a.btn:hover {
    transform: translateY(-1px);
}

/*
 * Notifications button rendered by PHP as .btn-secondary when logged in.
 * On the dark top bar, default Bootstrap .btn-secondary (grey fill) looks
 * mismatched — this renders it as a transparent ghost button instead.
 */
.head-top .btn-secondary {
    background-color: transparent !important;
    border: 1px solid rgba(255, 255, 255, 0.4) !important;
    color: var(--bl-white) !important;
}

.head-top .btn-secondary:hover {
    background-color: rgba(255, 255, 255, 0.12) !important;
    border-color: rgba(255, 255, 255, 0.65) !important;
}

@media (max-width: 768px) {
    /*
     * Keep top bar visible on mobile — auth buttons (Login/Register/Logout/
     * Notifications) must remain accessible. Bootstrap's col-md-6 already
     * stacks the two columns below 768px; we only reduce vertical padding here.
     */
    .head-top {
        padding: 6px 0;
    }
}


/* ==========================================================================
   4. Navbar (.navbar.bg-pink)
   Scoped strictly to `.navbar.bg-pink` — Bootstrap's other `.navbar`
   variants (e.g. `.navbar-dark`, `.bg-dark-grad` on admin) are unaffected.
   Bootstrap collapse mechanism and toggler are untouched.
   ========================================================================== */

.navbar.bg-pink {
    background: rgba(255, 255, 255, 0.97) !important;
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    box-shadow: var(--bl-shadow);
    position: sticky;
    top: 0;
    z-index: 1030; /* Bootstrap's navbar z-index value — kept consistent */
    transition: var(--bl-transition);
}

/* Nav link color and weight */
.navbar.bg-pink .navbar-nav .nav-link {
    color: var(--bl-secondary) !important;
    font-weight: 600;
    font-size: 15px;
    letter-spacing: normal; /* cancels .navbar-light a { letter-spacing: 1px } in style.css */
    position: relative;
    padding-bottom: 6px !important;
    transition: var(--bl-transition);
}

.navbar.bg-pink .navbar-nav .nav-link:hover,
.navbar.bg-pink .navbar-nav .nav-item.active > .nav-link {
    color: var(--bl-primary) !important;
    /*
     * style.css (loaded after this file via {CSSHelpers}) has:
     *   .navbar-light li>a:hover { background-color: #dc3545; }
     * That rule has lower specificity but sets background-color — a property
     * we never previously declared here. Without this reset it bleeds through
     * as the red/pink block on hover. Explicit transparent overrides it.
     */
    background-color: transparent !important;
}

/*
 * Underline hover effect — desktop only.
 *
 * IMPORTANT: :not(.dropdown-toggle) is mandatory here.
 * Bootstrap 4 renders the dropdown caret on .dropdown-toggle elements using
 * ::after with border-top/border-right/border-left CSS triangle tricks.
 * Our rule previously matched ALL .nav-link::after, including dropdowns.
 * On hover, expanding `width` to calc(100% - 1rem) turned Bootstrap's tiny
 * CSS triangle into a large filled trapezoid (the pink rectangular block).
 *
 * Fix: scope to :not(.dropdown-toggle) so Bootstrap's caret is never touched.
 * The dropdown toggle keeps its Bootstrap ::after (the caret arrow) untouched.
 */
.navbar.bg-pink .navbar-nav .nav-link:not(.dropdown-toggle)::after {
    content: '';
    position: absolute;          /* Required: taken out of flow so it sits under the text */
    bottom: 0;
    left: 0.5rem;
    width: 0;
    height: 2px;
    background: var(--bl-primary); /* Required: gives the underline its color */
    transition: var(--bl-transition);
}

.navbar.bg-pink .navbar-nav .nav-link:not(.dropdown-toggle):hover::after {
    width: calc(100% - 1rem);
}

/*
 * Explicitly restore Bootstrap's dropdown caret for safety.
 * Bootstrap sets these on .dropdown-toggle::after. We list them here so
 * that even if cascade order shifts in the future, the caret is never broken.
 */
.navbar.bg-pink .navbar-nav .dropdown-toggle::after {
    display: inline-block;
    margin-left: 0.255em;
    vertical-align: 0.255em;
    content: "";
    border-top: 0.3em solid;
    border-right: 0.3em solid transparent;
    border-bottom: 0;
    border-left: 0.3em solid transparent;
    /* Reset properties that the underline rule would have set */
    position: static;
    width: auto;
    height: auto;
    background: none;
    transition: none;
}

/* Dropdown menu styling */
.navbar.bg-pink .dropdown-menu {
    border: none;
    border-radius: var(--bl-radius);
    box-shadow: var(--bl-shadow);
    margin-top: 8px;
}

.navbar.bg-pink .dropdown-item {
    font-weight: 500;
    letter-spacing: normal; /* cancels .navbar-light a { letter-spacing: 1px } in style.css */
    transition: var(--bl-transition);
    color: var(--bl-secondary);
}

.navbar.bg-pink .dropdown-item:hover {
    background-color: rgba(233, 30, 99, 0.07);
    color: var(--bl-primary);
}

/* Bootstrap navbar toggler icon color update */
.navbar.bg-pink .navbar-toggler {
    border-color: rgba(44, 62, 80, 0.3);
}

.navbar.bg-pink .navbar-toggler-icon {
    background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba(44, 62, 80, 0.8)' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");
}

/* Remove underline animation on mobile — not useful in collapsed mode */
@media (max-width: 991px) {
    /* Must match the narrowed selector to correctly override the desktop rule */
    .navbar.bg-pink .navbar-nav .nav-link:not(.dropdown-toggle)::after {
        display: none;
    }

    .navbar.bg-pink .navbar-collapse {
        background: var(--bl-white);
        border-top: 1px solid #f0f0f0;
        padding: 10px 0;
        border-radius: 0 0 var(--bl-radius) var(--bl-radius);
    }
}


/* ==========================================================================
   5. Logo
   Keeps the existing .img-logo Bootstrap class — adds subtle animation.
   ========================================================================== */

.navbar-brand .img-logo {
    transition: var(--bl-transition);
}

.navbar-brand:hover .img-logo {
    transform: scale(1.04);
}


/* ==========================================================================
   6. Buttons
   New `.btn-bl-*` classes that do NOT override Bootstrap's `.btn-*` system.
   Use these for new design pill-style buttons in page content.
   ========================================================================== */

.btn-bl-primary {
    display: inline-block;
    padding: 11px 26px;
    background-color: var(--bl-primary);
    color: var(--bl-white) !important;
    border: none;
    border-radius: var(--bl-radius-pill);
    font-weight: 600;
    font-family: 'Poppins', sans-serif;
    line-height: 1.5;
    cursor: pointer;
    transition: var(--bl-transition);
    box-shadow: 0 4px 12px rgba(233, 30, 99, 0.25);
    text-decoration: none !important;
}

.btn-bl-primary:hover {
    background-color: var(--bl-primary-dark);
    transform: translateY(-2px);
    box-shadow: 0 7px 18px rgba(233, 30, 99, 0.35);
}

.btn-bl-outline {
    display: inline-block;
    padding: 9px 24px;
    background-color: transparent;
    color: var(--bl-primary) !important;
    border: 2px solid var(--bl-primary);
    border-radius: var(--bl-radius-pill);
    font-weight: 600;
    line-height: 1.5;
    cursor: pointer;
    transition: var(--bl-transition);
    text-decoration: none !important;
}

.btn-bl-outline:hover {
    background-color: var(--bl-primary);
    color: var(--bl-white) !important;
    transform: translateY(-2px);
}


/* ==========================================================================
   7. Section Titles (reusable utility class)
   `.bl-section-title` — new class name, no Bootstrap conflict.
   ========================================================================== */

.bl-section-title {
    text-align: center;
    margin-bottom: 40px;
    color: var(--bl-secondary);
}

.bl-section-title h2 {
    font-size: 32px;
    font-weight: 700;
    margin-bottom: 12px;
}

.bl-section-title p {
    color: var(--bl-text-muted);
    max-width: 680px;
    margin: 0 auto;
    font-size: 16px;
}

@media (max-width: 576px) {
    .bl-section-title h2 {
        font-size: 26px;
    }
}


/* ==========================================================================
   8. Feature Cards
   All new `.bl-` prefixed classes — no Bootstrap conflict.
   ========================================================================== */

.bl-feature-card {
    background-color: var(--bl-white);
    padding: 30px 25px;
    border-radius: var(--bl-radius);
    box-shadow: var(--bl-shadow);
    text-align: center;
    transition: var(--bl-transition);
    height: 100%;
}

.bl-feature-card:hover {
    transform: translateY(-8px);
    box-shadow: var(--bl-shadow-hover);
}

.bl-feature-icon {
    font-size: 42px;
    color: var(--bl-accent);
    margin-bottom: 18px;
    display: block;
}

.bl-feature-card h3 {
    font-size: 18px;
    font-weight: 600;
    color: var(--bl-secondary);
    margin-bottom: 12px;
}

.bl-feature-card p {
    color: var(--bl-text-muted);
    font-size: 14px;
    margin-bottom: 0;
}


/* ==========================================================================
   9. Story / Profile Cards
   ========================================================================== */

.bl-story-card {
    border-radius: var(--bl-radius);
    overflow: hidden;
    box-shadow: var(--bl-shadow);
    transition: var(--bl-transition);
    background: var(--bl-white);
}

.bl-story-card:hover {
    transform: translateY(-6px);
    box-shadow: var(--bl-shadow-hover);
}

.bl-story-img {
    height: 220px;
    overflow: hidden;
}

.bl-story-img img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform 0.5s ease;
}

.bl-story-card:hover .bl-story-img img {
    transform: scale(1.08);
}

.bl-story-info {
    padding: 18px 20px;
    text-align: center;
}

.bl-story-info h3 {
    color: var(--bl-secondary);
    font-size: 16px;
    font-weight: 600;
    margin-bottom: 4px;
}

.bl-story-info p {
    color: var(--bl-text-muted);
    font-size: 13px;
    margin-bottom: 0;
}


/* ==========================================================================
   10. Generic Card Hover Utility
   Works alongside Bootstrap `.card` — adds hover lift.
   ========================================================================== */

.bl-card-hover {
    transition: var(--bl-transition);
}

.bl-card-hover:hover {
    transform: translateY(-5px);
    box-shadow: var(--bl-shadow-hover) !important;
}


/* ==========================================================================
   11. Footer
   Scoped to the `footer` element. The Bootstrap grid (.row, .col-md-*)
   inside the footer is preserved — only colors and spacing are changed.
   `.footer-links` class is already in template.html — this extends its style.
   `.footer-copy` class is already in the existing template — this reskins it.
   ========================================================================== */

footer {
    background-color: var(--bl-secondary) !important;
    color: var(--bl-white);
    padding-top: 55px;
    padding-bottom: 0;
}

footer h5 {
    font-size: 17px;
    font-weight: 600;
    color: var(--bl-white) !important;
    margin-bottom: 18px;
    position: relative;
    padding-bottom: 12px;
}

footer h5::after {
    content: '';
    position: absolute;
    left: 0;
    bottom: 0;
    width: 38px;
    height: 2px;
    background-color: var(--bl-primary);
}

footer p,
footer .text-light {
    color: var(--bl-footer-text) !important;
    font-size: 14px;
}

footer .footer-links li {
    margin-bottom: 9px;
}

footer .footer-links a {
    color: var(--bl-footer-text) !important;
    font-size: 14px;
    transition: var(--bl-transition);
}

footer .footer-links a:hover {
    color: var(--bl-primary) !important;
    padding-left: 4px;
}

/* Footer bottom bar */
footer .footer-copy {
    background-color: rgba(0, 0, 0, 0.2) !important;
    border-top: 1px solid rgba(255, 255, 255, 0.1);
    margin-top: 40px;
    padding: 14px 0;
}

footer .footer-copy p {
    font-size: 13px;
    margin-bottom: 0;
}

footer .footer-copy a {
    color: var(--bl-primary) !important;
}

/* Footer contact info layout (for Phase 3 footer content) */
.bl-contact-info {
    display: flex;
    align-items: flex-start;
    margin-bottom: 14px;
    color: var(--bl-footer-text);
    font-size: 14px;
}

.bl-contact-icon {
    color: var(--bl-accent);
    margin-right: 12px;
    margin-top: 2px;
    flex-shrink: 0;
}

/* Social links in footer */
.bl-social-links a {
    display: inline-block;
    width: 34px;
    height: 34px;
    line-height: 34px;
    text-align: center;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.1);
    color: var(--bl-white) !important;
    margin-right: 8px;
    transition: var(--bl-transition);
    font-size: 14px;
}

.bl-social-links a:hover {
    background: var(--bl-primary);
    transform: translateY(-3px);
}


/* ==========================================================================
   12. Hero Section — home.html (Phase 3)
   ========================================================================== */

.bl-hero {
    position: relative;
    min-height: 88vh;
    background-position: center;
    background-repeat: no-repeat;
    background-size: cover;
    color: var(--bl-white);
    display: flex;
    align-items: center;
    overflow: hidden;
}

.bl-hero::before {
    content: '';
    position: absolute;
    inset: 0;
    background: linear-gradient(
        to right,
        rgba(0, 0, 0, 0.85) 0%,
        rgba(0, 0, 0, 0.28) 100%
    );
    z-index: 1;
}

.bl-hero-content {
    position: relative;
    z-index: 2;
    display: flex;
    justify-content: space-between;
    align-items: center;
    width: 100%;
    gap: 40px;
    padding: 60px 0;
}

.bl-hero-text {
    flex: 1;
    max-width: 620px;
}

.bl-hero-text h1 {
    font-size: 56px;
    font-weight: 700;
    line-height: 1.2;
    margin-bottom: 20px;
}

.bl-hero-text p {
    font-size: 20px;
    font-weight: 300;
    opacity: 0.9;
    margin-bottom: 35px;
}

/* Hero quick-search form card */
.bl-search-form {
    background-color: rgba(255, 255, 255, 0.98);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    padding: 28px;
    border-radius: 20px;
    box-shadow: 0 25px 50px rgba(0, 0, 0, 0.45);
    width: 100%;
    max-width: 400px;
    flex-shrink: 0;
}

.bl-search-form h3 {
    color: var(--bl-secondary);
    text-align: center;
    font-size: 22px;
    font-weight: 700;
    margin-bottom: 18px;
}

.bl-search-form h3 i {
    color: var(--bl-primary);
}

@media (max-width: 992px) {
    .bl-hero-content {
        flex-direction: column;
        text-align: center;
    }

    .bl-hero-text {
        max-width: 100%;
    }

    .bl-search-form {
        max-width: 480px;
        width: 100%;
    }
}

@media (max-width: 768px) {
    .bl-hero {
        min-height: auto;
    }

    .bl-hero-text h1 {
        font-size: 34px;
    }

    .bl-hero-text p {
        font-size: 16px;
    }
}

@media (max-width: 576px) {
    .bl-hero-text h1 {
        font-size: 28px;
    }
}


/* ==========================================================================
   13. Admin Panel (.bg-dark-grad navbar)
   Minimal enhancement — only font and nav link transition are changed.
   DataTables, Bootstrap grid, and all admin functionality are untouched.
   ========================================================================== */

.navbar.bg-dark-grad .nav-link {
    transition: var(--bl-transition);
}

.navbar.bg-dark-grad .nav-link:hover {
    opacity: 0.85;
}


/* ==========================================================================
   14. Flash Message Modal (existing #errModal)
   Slight visual enhancement — scoped to #errModal only.
   Bootstrap modal behavior (JS, backdrop, aria) is completely unchanged.
   ========================================================================== */

#errModal .modal-content {
    border: none;
    border-radius: var(--bl-radius);
    box-shadow: 0 20px 50px rgba(0, 0, 0, 0.2);
}

#errModal .alert {
    border-radius: var(--bl-radius);
    font-size: 14px;
    margin-bottom: 0;
}


/* ==========================================================================
   15. Form Controls — Subtle Enhancement
   Only affects focus ring color. Does NOT override Bootstrap's form layout,
   sizing, or validation state classes (.is-valid, .is-invalid).
   ========================================================================== */

.form-control:focus {
    border-color: var(--bl-primary) !important;
    box-shadow: 0 0 0 0.2rem rgba(233, 30, 99, 0.18) !important;
}


/* ==========================================================================
   16. Keyframe Animations (from example.html)
   Defined here for use in page content. AOS is still used for
   scroll-triggered animations; these are for entry animations.
   ========================================================================== */

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

.bl-anim-fadeInUp {
    animation: bl-fadeInUp 0.7s ease-out both;
}

.bl-anim-delay-1 { animation-delay: 0.15s; }
.bl-anim-delay-2 { animation-delay: 0.30s; }
.bl-anim-delay-3 { animation-delay: 0.45s; }


/* ==========================================================================
   17. Homepage Sections — Phase 3
   New classes introduced by home.html Phase 3 redesign.
   All prefixed bl- to avoid Bootstrap collision.
   ========================================================================== */

/*
 * Step number badge — circular indicator used in "How It Works" section.
 * display: flex so the number is centred both axes without line-height hacks.
 */
.bl-step-number {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 36px;
    height: 36px;
    border-radius: 50%;
    background: var(--bl-primary);
    color: var(--bl-white);
    font-size: 16px;
    font-weight: 700;
    margin: 0 auto 14px;
}

/*
 * Feature icon link wrapper — keeps the FA icon colour when wrapped in <a>.
 * Without this the inherited link colour from style.css would override the
 * bl-feature-icon colour.
 */
.bl-feature-icon-link {
    color: inherit !important;
    text-decoration: none !important;
}

/* Director section — image and heading */
.bl-director-img {
    border-radius: var(--bl-radius);
    box-shadow: var(--bl-shadow-hover);
    max-height: 460px;
    width: 100%;
}

.bl-director-heading {
    font-size: 24px;
    font-weight: 700;
    color: var(--bl-secondary);
    margin-bottom: 18px;
}

/*
 * CTA strip — gradient background section.
 * .btn-bl-outline overrides are needed because that class defaults to primary
 * (pink) text/border which is invisible on the pink gradient background.
 */
.bl-cta {
    background: linear-gradient(135deg, var(--bl-primary) 0%, var(--bl-primary-dark) 100%);
    color: var(--bl-white);
}

.bl-cta h2 {
    font-size: 30px;
    font-weight: 700;
    margin-bottom: 10px;
}

.bl-cta p {
    font-size: 16px;
    opacity: 0.9;
    margin-bottom: 26px;
}

.bl-cta .btn-bl-outline {
    color: var(--bl-white) !important;
    border-color: rgba(255, 255, 255, 0.75) !important;
}

.bl-cta .btn-bl-outline:hover {
    background-color: var(--bl-white) !important;
    color: var(--bl-primary) !important;
    border-color: var(--bl-white) !important;
}

/* Stack CTA buttons vertically on small screens */
.bl-cta-btn {
    margin: 6px 8px;
}

@media (max-width: 480px) {
    .bl-cta h2 {
        font-size: 24px;
    }

    .bl-cta-btn {
        display: block;
        width: 100%;
        margin: 6px 0;
        text-align: center;
    }
}


/* ==========================================================================
   18. Inner Content Pages — Shared Patterns
   Used by about.html, contact-us.html, faq.html, package.html.
   ========================================================================== */

/* Page-level title banner — smaller counterpart to .bl-hero for inner pages */
.bl-page-banner {
    background: linear-gradient(135deg, var(--bl-secondary) 0%, #1a252f 100%);
    color: var(--bl-white);
    padding: 56px 0 40px;
    text-align: center;
}

.bl-page-banner h1 {
    font-size: 38px;
    font-weight: 700;
    margin-bottom: 8px;
}

.bl-page-banner p {
    font-size: 16px;
    opacity: 0.75;
    margin-bottom: 0;
}

@media (max-width: 768px) {
    .bl-page-banner h1 {
        font-size: 28px;
    }
}

/*
 * Generic content card — background + radius + shadow without the centring or
 * hover-transform of .bl-feature-card. Used for form containers and prose blocks.
 */
.bl-card {
    background: var(--bl-white);
    border-radius: var(--bl-radius);
    box-shadow: var(--bl-shadow);
    padding: 28px;
}

/* Package pricing card */
.bl-package-card {
    background: var(--bl-white);
    border-radius: var(--bl-radius);
    box-shadow: var(--bl-shadow);
    padding: 28px 22px;
    height: 100%;
    transition: var(--bl-transition);
    border-top: 4px solid var(--bl-primary);
}

.bl-package-card:hover {
    box-shadow: var(--bl-shadow-hover);
    transform: translateY(-4px);
}

.bl-package-card h4 {
    font-size: 20px;
    font-weight: 700;
    color: var(--bl-secondary);
    text-align: center;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    margin-bottom: 16px;
}

.bl-pkg-tier {
    font-size: 14px;
    color: var(--bl-text-muted);
    padding: 8px 0;
    border-bottom: 1px solid #f0f0f0;
    line-height: 1.5;
}

.bl-pkg-tier:last-child {
    border-bottom: none;
    padding-bottom: 0;
}

.bl-pkg-tier .fa-rupee-sign {
    color: var(--bl-primary);
}

/* Premium package — gradient highlight */
.bl-package-card.bl-package-featured {
    background: linear-gradient(135deg, var(--bl-primary) 0%, var(--bl-primary-dark) 100%);
    border-top-color: rgba(255, 255, 255, 0.5);
}

.bl-package-card.bl-package-featured h4 {
    color: var(--bl-white);
}

.bl-package-card.bl-package-featured .bl-pkg-tier {
    color: rgba(255, 255, 255, 0.85);
    border-bottom-color: rgba(255, 255, 255, 0.2);
}

.bl-package-card.bl-package-featured .bl-pkg-tier .fa-rupee-sign {
    color: var(--bl-white);
}

.bl-package-card.bl-package-featured p {
    color: rgba(255, 255, 255, 0.9);
}

/*
 * FAQ accordion — scoped to .bl-faq-accordion so Bootstrap's default accordion
 * card styling (white border, no radius) doesn't bleed into other components.
 */
.bl-faq-accordion .card {
    border: none;
    border-radius: var(--bl-radius) !important;
    margin-bottom: 10px;
    box-shadow: var(--bl-shadow);
    overflow: hidden;
}

.bl-faq-accordion .card-header {
    background: var(--bl-white);
    border-bottom: none;
    padding: 0;
}

.bl-faq-accordion .card-header .btn-link {
    width: 100%;
    text-align: left;
    padding: 16px 20px;
    font-weight: 600;
    color: var(--bl-secondary);
    font-size: 16px;
    text-decoration: none;
}

.bl-faq-accordion .card-header .btn-link:hover,
.bl-faq-accordion .card-header .btn-link:focus {
    color: var(--bl-primary);
    text-decoration: none;
    box-shadow: none;
}

.bl-faq-accordion .card-header .btn-link.collapsed {
    color: var(--bl-text);
}

.bl-faq-accordion .card-header .btn-link i {
    color: var(--bl-primary);
}

.bl-faq-accordion .card-body {
    padding: 4px 20px 20px;
    background: var(--bl-white);
}

.bl-faq-accordion .card-body ol {
    padding-left: 20px;
    margin-bottom: 0;
}

.bl-faq-accordion .card-body ol li {
    color: var(--bl-text-muted);
    font-size: 14px;
    margin-bottom: 6px;
    line-height: 1.5;
}


/* ==========================================================================
   19. Authenticated Dashboard — User Profile
   ========================================================================== */

/* Page wrapper — sits over .bg-grad gradient, giving redesigned pages a clean bg */
.bl-dash-section {
    background: var(--bl-light-bg);
    padding: 24px 0 32px;
    min-height: 60vh;
}

/* ---- Sidebar (dark card) ---- */
.bl-profile-sidebar {
    background: var(--bl-dark-card);
    border-radius: var(--bl-radius);
    box-shadow: var(--bl-shadow-hover);
    overflow: hidden;
}

.bl-profile-sidebar .bl-profile-photo {
    width: 100%;
    display: block;
    object-fit: cover;
    max-height: 676px;
    min-height: 180px;
}

.bl-profile-actions {
    padding: 12px 16px 4px;
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.bl-profile-actions:empty {
    display: none;
}

.bl-profile-actions .btn {
    border-radius: var(--bl-radius-pill);
    font-size: 13px;
    font-weight: 600;
    letter-spacing: 0.3px;
    padding: 7px 14px;
    transition: var(--bl-transition);
    white-space: normal;
    overflow-wrap: anywhere;
}

.bl-profile-stat-list {
    padding: 16px;
}

.bl-profile-stat {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    margin-bottom: 14px;
}

.bl-profile-stat:last-child {
    margin-bottom: 0;
}

.bl-profile-stat-label {
    font-size: 11px;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: rgba(255, 255, 255, 0.45);
    font-weight: 600;
    min-width: 52px;
    padding-top: 2px;
    flex-shrink: 0;
}

.bl-profile-stat-value {
    font-size: 14px;
    font-weight: 600;
    color: var(--bl-white);
    line-height: 1.4;
    overflow-wrap: anywhere;
    min-width: 0;
}

/* ---- Detail panel (light card) ---- */
.bl-detail-panel {
    background: var(--bl-white);
    border-radius: var(--bl-radius);
    box-shadow: var(--bl-shadow);
    padding: 24px;
}

.bl-detail-section-title {
    font-size: 12px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 1.5px;
    color: var(--bl-primary);
    border-bottom: 2px solid var(--bl-primary);
    padding-bottom: 8px;
    margin-bottom: 12px;
}

.bl-detail-row {
    display: flex;
    align-items: flex-start;
    padding: 6px 0;
    border-bottom: 1px solid #f3f3f3;
}

.bl-detail-row:last-child {
    border-bottom: none;
}

.bl-detail-label {
    font-size: 11px;
    font-weight: 600;
    color: var(--bl-text-muted);
    text-transform: uppercase;
    letter-spacing: 0.4px;
    min-width: 120px;
    flex-shrink: 0;
    padding-right: 8px;
}

.bl-detail-value {
    font-size: 13px;
    color: var(--bl-text);
    font-weight: 500;
    line-height: 1.4;
    flex: 1;
    min-width: 0;
    overflow-wrap: anywhere;
}

/* ---- Suggestions ticker section ---- */
.bl-dash-suggestions {
    padding: 16px 0 8px;
}

.bl-dash-suggestions-title {
    font-size: 16px;
    font-weight: 700;
    color: var(--bl-secondary);
    text-transform: uppercase;
    letter-spacing: 1px;
    text-align: center;
    margin-bottom: 12px;
}

/* ---- Responsive overrides (< md = 768px) ---- */
@media (max-width: 767.98px) {
    .bl-dash-section {
        padding: 16px 0 24px;
    }

    .bl-detail-panel {
        padding: 16px;
    }

    /* Stats switch to 2-column grid — fills wide mobile sidebar properly */
    .bl-profile-stat-list {
        display: grid;
        grid-template-columns: 1fr 1fr;
        gap: 12px 8px;
    }

    /* margin-bottom redundant when gap is controlling spacing */
    .bl-profile-stat {
        margin-bottom: 0;
    }

    /* Partner Preference section needs breathing room when stacked below Personal Details */
    .bl-detail-panel .col-md-6 + .col-md-6 {
        margin-top: 20px;
    }

    /* Ticker section tighter on mobile */
    .bl-dash-suggestions {
        padding: 12px 0 8px;
    }

    .bl-dash-suggestions-title {
        font-size: 14px;
    }
}

/*
 * Landscape mobile — remove the 60vh min-height so the two-column layout
 * doesn't force excessive scrolling when device height is ~360px.
 */
@media (max-width: 767.98px) and (orientation: landscape) {
    .bl-dash-section {
        min-height: auto;
    }
}

/* ---- Responsive overrides (< sm = 576px) ---- */
@media (max-width: 575.98px) {
    .bl-detail-panel {
        padding: 12px;
    }

    /*
     * Stack label above value — at ~320px the side-by-side flex layout leaves
     * only ~130px for values such as long descriptions or full education strings.
     * Vertical stacking is the clean solution; the row gets a touch more padding
     * so the dividing border doesn't feel cramped.
     * Reusable: apply .bl-detail-row + .bl-detail-label + .bl-detail-value on
     * profile.html, view-profile.html, search-profile.html for the same behaviour.
     */
    .bl-detail-row {
        flex-direction: column;
        gap: 2px;
        padding: 8px 0;
    }

    .bl-detail-label {
        min-width: unset;
        font-size: 10px;
    }

    .bl-profile-actions {
        padding: 10px 12px 4px;
    }
}

/*
 * ---- Narrow phone (< 420px) ----
 * The 2-column stat grid from the < 768px rule becomes too tight at ~320px
 * when values contain long names or castes. Drop to single column.
 * Reusable: any page using .bl-profile-stat-list inherits this automatically.
 */
@media (max-width: 419.98px) {
    .bl-profile-stat-list {
        grid-template-columns: 1fr;
        gap: 10px;
    }
}

/* ==========================================================================
   20. Search Profile Cards — search-profile.html / searchProf()
   ========================================================================== */
.bl-search-results-heading {
    font-size: 16px;
    font-weight: 700;
    color: var(--bl-secondary);
    text-transform: uppercase;
    letter-spacing: 1px;
    margin: 0 0 20px;
    padding-bottom: 10px;
    border-bottom: 2px solid var(--bl-primary);
}

.bl-search-card {
    display: flex;
    background: var(--bl-dark-card);
    border-radius: var(--bl-radius);
    box-shadow: var(--bl-shadow);
    overflow: hidden;
    height: 100%;
    transition: var(--bl-transition);
}

.bl-search-card:hover {
    box-shadow: var(--bl-shadow-hover);
    transform: translateY(-2px);
}

.bl-search-card-photo {
    flex: 0 0 130px;
    min-height: 190px;
    background: #12192b;
}

.bl-search-card-photo img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

.bl-search-card-info {
    flex: 1;
    padding: 16px 14px;
    display: flex;
    flex-direction: column;
    gap: 6px;
    min-width: 0;
}

.bl-search-card-id {
    font-size: 13px;
    font-weight: 700;
    color: var(--bl-primary);
    letter-spacing: 0.5px;
    overflow-wrap: anywhere;
}

.bl-search-card-summary {
    font-size: 12px;
    color: rgba(255, 255, 255, 0.75);
    line-height: 1.5;
    overflow-wrap: anywhere;
}

.bl-search-card-btn {
    margin-top: auto;
    align-self: flex-start;
    font-size: 12px;
    font-weight: 600;
    border-radius: var(--bl-radius-pill);
    padding: 5px 14px;
}

.bl-search-no-results {
    text-align: center;
    color: var(--bl-text-muted);
    font-size: 16px;
    padding: 48px 0;
}

@media (max-width: 575.98px) {
    .bl-search-card {
        flex-direction: column;
    }

    .bl-search-card-photo {
        flex: none;
        width: 100%;
        height: 530px;
        min-height: unset;
    }
}
