/* =====================================================================
   Banquet Hall Admin - Premium CRM-style UI
   ===================================================================== */

:root {
    --bn-bg: #f5f4ef;
    --bn-surface: #ffffff;
    --bn-surface-2: #faf9f6;
    --bn-border: #e8e3d8;
    --bn-text: #1a1815;
    --bn-text-muted: #6b6358;
    --bn-primary: #8b6f3a;
    --bn-primary-dark: #6a5325;
    --bn-accent: #c89b3c;
    --bn-success: #4a7d4a;
    --bn-warning: #c98a26;
    --bn-danger:  #b94545;
    --bn-info:    #4a6b8a;
    --bn-radius: 10px;
    --bn-shadow: 0 1px 2px rgba(20,16,8,.04), 0 6px 24px rgba(20,16,8,.06);
    --bn-shadow-lg: 0 20px 60px rgba(20,16,8,.10);
    --bn-sidebar-w: 244px;
    --bn-topbar-h: 60px;
    --bn-ff-display: 'Cormorant Garamond', 'Playfair Display', Georgia, serif;
    --bn-ff-body: 'Manrope', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
}

[data-bs-theme="dark"] {
    --bn-bg: #14110d;
    --bn-surface: #1c1813;
    --bn-surface-2: #221d17;
    --bn-border: #2e271e;
    --bn-text: #ece6d8;
    --bn-text-muted: #968d7c;
    --bn-primary: #c89b3c;
    --bn-primary-dark: #b58a2d;
    --bn-accent: #e3b85a;
    --bn-shadow: 0 1px 2px rgba(0,0,0,.3), 0 6px 24px rgba(0,0,0,.4);
}

html, body { background: var(--bn-bg); color: var(--bn-text); font-family: var(--bn-ff-body); -webkit-font-smoothing: antialiased; }
* { letter-spacing: -0.005em; }

/* ============= Topbar ============= */
.bn-topbar {
    position: fixed; top: 0; left: 0; right: 0; height: var(--bn-topbar-h);
    background: var(--bn-surface); border-bottom: 1px solid var(--bn-border);
    display: flex; align-items: center; gap: 14px; padding: 0 18px; z-index: 1040;
}
.bn-burger { color: var(--bn-text); font-size: 18px; padding: 6px 10px; }
.bn-brand { display:flex; align-items:center; gap:10px; text-decoration:none; color:var(--bn-text); font-weight:600; }
.bn-brand-mark {
    width:36px; height:36px; border-radius:8px;
    background: linear-gradient(135deg, var(--bn-primary), var(--bn-accent));
    color:#fff; display:flex; align-items:center; justify-content:center;
}
.bn-brand-text { font-family: var(--bn-ff-display); font-size: 20px; font-weight: 600; letter-spacing: 0.01em; }
.bn-icon-btn { color: var(--bn-text-muted); padding: 6px 10px; }
.bn-icon-btn:hover { color: var(--bn-primary); }
.bn-user-btn { color: var(--bn-text); text-decoration:none; padding: 6px 10px; }
.bn-avatar {
    display:inline-flex; align-items:center; justify-content:center;
    width:30px; height:30px; border-radius:50%;
    background: var(--bn-primary); color:#fff; font-weight:600; font-size:13px;
}

/* ============= Sidebar ============= */
.bn-sidebar {
    position: fixed; top: var(--bn-topbar-h); bottom: 0; left: 0; width: var(--bn-sidebar-w);
    background: var(--bn-surface); border-right: 1px solid var(--bn-border);
    overflow-y: auto; z-index: 1030; padding: 14px 0;
    transition: transform .25s ease;
}
.bn-sidebar::-webkit-scrollbar { width: 6px; }
.bn-sidebar::-webkit-scrollbar-thumb { background: var(--bn-border); border-radius: 3px; }

.bn-nav-section {
    padding: 14px 22px 6px; font-size: 11px; font-weight: 600;
    letter-spacing: 0.12em; text-transform: uppercase; color: var(--bn-text-muted);
}
.bn-nav-link {
    display:flex; align-items:center; gap:12px; padding: 10px 22px;
    color: var(--bn-text); text-decoration:none; font-size: 14px; font-weight: 500;
    border-left: 3px solid transparent;
}
.bn-nav-link i { width: 18px; text-align:center; color: var(--bn-text-muted); font-size: 14px; }
.bn-nav-link:hover { background: var(--bn-surface-2); color: var(--bn-primary); }
.bn-nav-link:hover i { color: var(--bn-primary); }
.bn-nav-link.active {
    background: var(--bn-surface-2); color: var(--bn-primary);
    border-left-color: var(--bn-primary); font-weight: 600;
}
.bn-nav-link.active i { color: var(--bn-primary); }

body.bn-sidebar-collapsed .bn-sidebar { transform: translateX(-100%); }
body.bn-sidebar-collapsed .bn-main { margin-left: 0; }

/* ============= Main ============= */
.bn-main {
    margin-left: var(--bn-sidebar-w); margin-top: var(--bn-topbar-h);
    padding: 26px 28px; min-height: calc(100vh - var(--bn-topbar-h));
}
@media (max-width: 991px) {
    .bn-sidebar { transform: translateX(-100%); }
    .bn-main { margin-left: 0; padding: 18px; }
    body.bn-sidebar-open .bn-sidebar { transform: translateX(0); }
}

/* ============= Page header ============= */
.bn-page-head {
    display:flex; align-items:center; flex-wrap:wrap; gap:14px;
    margin-bottom: 22px;
}
.bn-page-title { font-family: var(--bn-ff-display); font-size: 32px; font-weight: 600; margin:0; line-height: 1.1; }
.bn-page-sub { color: var(--bn-text-muted); font-size: 14px; margin: 4px 0 0; }

/* ============= Cards & Stat ============= */
.bn-card {
    background: var(--bn-surface); border: 1px solid var(--bn-border);
    border-radius: var(--bn-radius); box-shadow: var(--bn-shadow);
    padding: 20px;
}
.bn-card-head {
    display:flex; align-items:center; justify-content:space-between;
    margin-bottom: 16px;
}
.bn-card-title { font-size: 16px; font-weight: 600; margin: 0; }

.bn-stat {
    background: var(--bn-surface); border: 1px solid var(--bn-border);
    border-radius: var(--bn-radius); padding: 18px 20px; height: 100%;
    position: relative; overflow: hidden;
}
.bn-stat::before {
    content:""; position:absolute; top:0; left:0; right:0; height: 3px;
    background: var(--bn-primary);
}
.bn-stat.s-success::before { background: var(--bn-success); }
.bn-stat.s-warning::before { background: var(--bn-warning); }
.bn-stat.s-danger::before  { background: var(--bn-danger); }
.bn-stat.s-info::before    { background: var(--bn-info); }
.bn-stat-label { font-size: 12px; font-weight: 600; text-transform: uppercase;
    letter-spacing: 0.08em; color: var(--bn-text-muted); margin-bottom: 6px; }
.bn-stat-value { font-family: var(--bn-ff-display); font-size: 30px; font-weight: 600; line-height: 1; }
.bn-stat-foot { font-size: 12px; color: var(--bn-text-muted); margin-top: 8px; }
.bn-stat-icon {
    position:absolute; right: 18px; top: 18px; font-size: 22px;
    color: var(--bn-primary); opacity: .25;
}

/* ============= Buttons (overrides) ============= */
.btn-primary {
    background: var(--bn-primary); border-color: var(--bn-primary);
    --bs-btn-hover-bg: var(--bn-primary-dark); --bs-btn-hover-border-color: var(--bn-primary-dark);
    --bs-btn-active-bg: var(--bn-primary-dark);
}
.btn-outline-primary {
    color: var(--bn-primary); border-color: var(--bn-primary);
    --bs-btn-hover-bg: var(--bn-primary); --bs-btn-hover-color: #fff;
}
.btn { font-weight: 500; border-radius: 8px; padding: 8px 16px; }
.btn-sm { padding: 5px 12px; font-size: 13px; }

/* ============= Forms ============= */
.form-control, .form-select {
    border: 1px solid var(--bn-border); border-radius: 8px; padding: 9px 12px;
    background: var(--bn-surface);
}
.form-control:focus, .form-select:focus {
    border-color: var(--bn-primary); box-shadow: 0 0 0 .2rem rgba(139,111,58,.15);
}
.form-label { font-size: 13px; font-weight: 600; color: var(--bn-text); margin-bottom: 4px; }

/* ============= Tables ============= */
.table { color: var(--bn-text); }
.table thead th {
    background: var(--bn-surface-2); color: var(--bn-text-muted);
    font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.08em;
    border-bottom: 1px solid var(--bn-border); padding: 12px;
}
.table tbody td { padding: 12px; vertical-align: middle; border-color: var(--bn-border); }
.table tbody tr:hover { background: var(--bn-surface-2); }
.dataTables_wrapper .dt-buttons { margin-bottom: 12px; }
.dataTables_filter input { border: 1px solid var(--bn-border); border-radius: 8px; padding: 6px 10px; }

/* ============= Badges ============= */
.badge { font-weight: 500; padding: 5px 10px; border-radius: 6px; font-size: 11px; }

/* ============= Modal ============= */
.modal-content { border: 1px solid var(--bn-border); border-radius: 12px; }
.modal-header { border-bottom: 1px solid var(--bn-border); padding: 16px 20px; }
.modal-title { font-family: var(--bn-ff-display); font-weight: 600; font-size: 22px; }
.modal-body { padding: 20px; }
.modal-footer { border-top: 1px solid var(--bn-border); padding: 14px 20px; }

/* ============= Login ============= */
.bn-login {
    min-height: 100vh; display:flex; align-items:center; justify-content:center;
    background: linear-gradient(135deg, #2a1f10 0%, #4a3820 50%, #1a1815 100%);
    padding: 20px;
}
.bn-login-card {
    background: var(--bn-surface); border-radius: 16px; box-shadow: var(--bn-shadow-lg);
    padding: 40px 36px; width: 100%; max-width: 420px;
    border: 1px solid var(--bn-border);
}
.bn-login-brand {
    display:flex; flex-direction:column; align-items:center; margin-bottom: 24px;
}
.bn-login-brand .mark {
    width:56px; height:56px; border-radius: 14px;
    background: linear-gradient(135deg, var(--bn-primary), var(--bn-accent));
    color:#fff; display:flex; align-items:center; justify-content:center; font-size: 24px;
    margin-bottom: 14px;
}
.bn-login-brand h1 {
    font-family: var(--bn-ff-display); font-size: 28px; font-weight: 600; margin: 0;
}
.bn-login-brand p { font-size: 14px; color: var(--bn-text-muted); margin: 2px 0 0; }

/* ============= Calendar ============= */
.fc { font-family: var(--bn-ff-body); }
.fc .fc-toolbar-title { font-family: var(--bn-ff-display); font-weight: 600; }
.fc-event { border: none; padding: 2px 4px; font-size: 12px; }

/* --- Premium FullCalendar override --- */
.bn-cal-card { padding: 22px 22px 18px; }
.bn-cal-card .fc { --fc-border-color: var(--bn-border); --fc-today-bg-color: rgba(212,176,112,.10); }
.bn-cal-card .fc-toolbar.fc-header-toolbar { margin-bottom: 22px; gap: 10px; }
.bn-cal-card .fc-toolbar-title {
    font-family: var(--bn-ff-display);
    font-weight: 600;
    font-size: 26px;
    letter-spacing: -.01em;
}
.bn-cal-card .fc-button {
    background: transparent;
    border: 1px solid var(--bn-border);
    color: var(--bn-text);
    border-radius: 10px;
    padding: 7px 14px;
    font-size: 13px;
    text-transform: none;
    box-shadow: none;
    transition: all .2s ease;
}
.bn-cal-card .fc-button:hover {
    background: var(--bn-surface-2);
    border-color: var(--bn-primary);
    color: var(--bn-primary);
}
.bn-cal-card .fc-button-primary:not(:disabled).fc-button-active,
.bn-cal-card .fc-button-primary:not(:disabled):active {
    background: var(--bn-primary);
    border-color: var(--bn-primary);
    color: #fff;
}
.bn-cal-card .fc-button-group { gap: 6px; }
.bn-cal-card .fc-button-group .fc-button { border-radius: 10px !important; }

/* Today highlight — subtle gold wash + ring */
.bn-cal-card .fc-day-today {
    background: rgba(212,176,112,.10) !important;
    position: relative;
}
.bn-cal-card .fc-daygrid-day-number { font-weight: 500; padding: 6px 10px; color: var(--bn-text); }
.bn-cal-card .fc-day-today .fc-daygrid-day-number {
    background: linear-gradient(135deg, var(--bn-primary), var(--bn-accent, #c9a268));
    color: #fff !important; border-radius: 999px; padding: 2px 9px;
    margin: 4px 6px 0 auto;
    font-variant-numeric: tabular-nums;
}
.bn-cal-card .fc-col-header-cell { background: var(--bn-surface-2); }
.bn-cal-card .fc-col-header-cell-cushion {
    font-size: 11px; font-weight: 600; letter-spacing: .14em;
    text-transform: uppercase; color: var(--bn-text-muted); padding: 10px 4px;
}

/* Booking events — luxurious pill (let per-event colors from FullCalendar show through) */
.bn-cal-card .fc-event {
    border-radius: 8px;
    padding: 4px 8px;
    font-size: 12px;
    font-weight: 500;
    border: none;
    box-shadow: 0 1px 3px rgba(58,46,32,.05);
    transition: transform .15s ease, box-shadow .15s ease;
    color: #fff;
}
.bn-cal-card .fc-event:hover { transform: translateY(-1px); box-shadow: 0 4px 10px rgba(58,46,32,.22); filter: brightness(1.05); }
.bn-cal-card .fc-event-title { font-weight: 500; }
.bn-cal-card .fc-h-event .fc-event-main { color: #fff; }
.bn-cal-card .fc-daygrid-event-dot { display: none; }

/* List view — used on mobile */
.bn-cal-card .fc-list { border: none; }
.bn-cal-card .fc-list-day-cushion {
    background: linear-gradient(90deg, rgba(212,176,112,.18), rgba(212,176,112,.04)) !important;
    border-bottom: 1px solid var(--bn-border);
    padding: 10px 14px !important;
}
.bn-cal-card .fc-list-day-text,
.bn-cal-card .fc-list-day-side-text {
    font-family: var(--bn-ff-display);
    font-weight: 600;
    color: var(--bn-text);
    font-size: 15px;
    text-decoration: none;
}
.bn-cal-card .fc-list-event {
    border-radius: 12px;
    background: var(--bn-surface);
    transition: all .15s ease;
    cursor: pointer;
}
.bn-cal-card .fc-list-event:hover td {
    background: rgba(212,176,112,.06) !important;
}
.bn-cal-card .fc-list-event-dot {
    border-color: var(--bn-primary) !important;
    border-width: 6px;
}
.bn-cal-card .fc-list-event-time {
    font-size: 12px; letter-spacing: .04em; color: var(--bn-text-muted);
    padding: 14px 12px !important;
}
.bn-cal-card .fc-list-event-title {
    font-weight: 500; padding: 14px 12px !important;
}
.bn-cal-card .fc-list-empty {
    padding: 60px 20px !important;
    color: var(--bn-text-muted);
    font-family: var(--bn-ff-display);
    font-style: italic;
    font-size: 16px;
}

[data-bs-theme="dark"] .bn-cal-card .fc-event {
    background: linear-gradient(135deg, rgba(212,176,112,.25), rgba(212,176,112,.40));
    color: #f5ecd2;
}

/* Mobile tweaks */
@media (max-width: 768px) {
    .bn-cal-card { padding: 14px 12px 12px; }
    .bn-cal-card .fc-toolbar.fc-header-toolbar { margin-bottom: 14px; gap: 6px; }
    .bn-cal-card .fc-toolbar-title { font-size: 20px; }
    .bn-cal-card .fc-toolbar-chunk { display: flex; align-items: center; }
    .bn-cal-card .fc-button { padding: 7px 12px; font-size: 13px; }
    .bn-cal-card .fc-list-day-cushion { padding: 8px 12px !important; }
    .bn-cal-card .fc-list-event-time,
    .bn-cal-card .fc-list-event-title { padding: 12px 10px !important; font-size: 13px; }
    .bn-cal-card .fc-list-day-text,
    .bn-cal-card .fc-list-day-side-text { font-size: 14px; }
}

/* ============= Print ============= */
/* =====================================================================
 * PRINT — Luxury one-page booking confirmation PDF
 * Hides the entire admin chrome and re-skins the booking-view as a
 * proper letterhead document on A4 portrait. The .bn-print-only blocks
 * (letterhead + footer) are revealed here; the on-screen UI is suppressed.
 * ===================================================================== */
.bn-print-only { display: none; }

@media print {
    @page {
        size: A4 portrait;
        margin: 14mm 16mm;
    }
    * { -webkit-print-color-adjust: exact !important; print-color-adjust: exact !important; }

    /* Print-safe table layout — prevents Booking/Customer columns colliding on Reports */
    .bn-card table {
        table-layout: fixed !important;
        width: 100% !important;
        font-size: 8.5pt !important;
        border-collapse: collapse !important;
        page-break-inside: auto !important;
    }
    .bn-card table th,
    .bn-card table td {
        padding: 4pt 6pt !important;
        word-break: normal !important;
        overflow-wrap: anywhere !important;
        white-space: normal !important;
        vertical-align: top !important;
        line-height: 1.35 !important;
    }
    /* Numeric / currency cells must never break — keep them on one line */
    .bn-card table th.text-end,
    .bn-card table td.text-end,
    .bn-card table tfoot td {
        white-space: nowrap !important;
        overflow-wrap: normal !important;
        word-break: keep-all !important;
    }
    .bn-card table th {
        font-size: 7pt !important;
        text-transform: uppercase;
        letter-spacing: .12em;
        color: #5b4a25 !important;
        border-bottom: 1pt solid rgba(212,176,112,.55) !important;
        background: rgba(212,176,112,.08) !important;
    }
    .bn-card table tbody tr { page-break-inside: avoid; }
    .bn-card table tbody td { border-bottom: 1px dotted rgba(212,176,112,.35) !important; }
    .bn-card table tfoot td {
        border-top: 1pt solid rgba(212,176,112,.55) !important;
        font-weight: 600 !important;
        background: rgba(212,176,112,.08) !important;
    }
    .bn-card .text-end, .bn-card table .text-end { text-align: right !important; }
    .bn-card a { color: #1a1308 !important; text-decoration: none !important; }
    .bn-card .badge { font-size: 7pt !important; padding: 2pt 5pt !important; border-radius: 4px !important; }

    /* Pending Payments print: explicit column widths (7 visible cols sum to 100%) */
    .bn-pending-table { table-layout: fixed !important; }
    .bn-pending-table th:nth-child(1), .bn-pending-table td:nth-child(1) { width: 14% !important; }   /* Booking */
    .bn-pending-table th:nth-child(2), .bn-pending-table td:nth-child(2) { width: 14% !important; }   /* Customer */
    .bn-pending-table th:nth-child(3), .bn-pending-table td:nth-child(3) { width: 16% !important; }   /* Phone */
    .bn-pending-table th:nth-child(4), .bn-pending-table td:nth-child(4) { width: 16% !important; }   /* Event Date */
    .bn-pending-table th:nth-child(5), .bn-pending-table td:nth-child(5) { width: 12% !important; }   /* Total */
    .bn-pending-table th:nth-child(6), .bn-pending-table td:nth-child(6) { width: 12% !important; }   /* Paid */
    .bn-pending-table th:nth-child(7), .bn-pending-table td:nth-child(7) { width: 16% !important; }   /* Balance */

    /* GST report print: 9 columns sum to 100% */
    .bn-gst-table { table-layout: fixed !important; }
    .bn-gst-table th:nth-child(1), .bn-gst-table td:nth-child(1) { width: 11% !important; } /* Booking */
    .bn-gst-table th:nth-child(2), .bn-gst-table td:nth-child(2) { width: 13% !important; } /* Customer */
    .bn-gst-table th:nth-child(3), .bn-gst-table td:nth-child(3) { width: 11% !important; } /* Event Date */
    .bn-gst-table th:nth-child(4), .bn-gst-table td:nth-child(4) { width: 11% !important; } /* Subtotal */
    .bn-gst-table th:nth-child(5), .bn-gst-table td:nth-child(5) { width:  9% !important; } /* Discount */
    .bn-gst-table th:nth-child(6), .bn-gst-table td:nth-child(6) { width: 11% !important; } /* Taxable */
    .bn-gst-table th:nth-child(7), .bn-gst-table td:nth-child(7) { width: 14% !important; } /* GST */
    .bn-gst-table th:nth-child(8), .bn-gst-table td:nth-child(8) { width: 11% !important; } /* Total */
    .bn-gst-table th:nth-child(9), .bn-gst-table td:nth-child(9) { width:  9% !important; } /* Status */

    /* Force LIGHT theme on print regardless of admin's dark-mode preference */
    :root, [data-bs-theme="dark"], [data-bs-theme] {
        color-scheme: light !important;
        --bs-body-bg: #ffffff !important;
        --bs-body-color: #1a1308 !important;
        --bs-emphasis-color: #1a1308 !important;
        --bs-secondary-color: #6b5e44 !important;
        --bs-secondary-bg: #faf6ec !important;
        --bs-tertiary-bg: #ffffff !important;
        --bs-border-color: rgba(212,176,112,.45) !important;
        --bs-table-bg: transparent !important;
        --bs-table-color: #1a1308 !important;
        --bs-table-border-color: rgba(212,176,112,.45) !important;
        --bs-table-striped-bg: transparent !important;
        --bs-table-hover-bg: transparent !important;
        --bs-table-active-bg: rgba(212,176,112,.18) !important;
        --bs-table-active-color: #1a1308 !important;
        --bn-bg: #ffffff !important;
        --bn-surface: #ffffff !important;
        --bn-surface-2: #faf6ec !important;
        --bn-border: rgba(212,176,112,.45) !important;
        --bn-text: #1a1308 !important;
        --bn-text-muted: #6b5e44 !important;
    }
    html[data-bs-theme="dark"], html[data-bs-theme] { background: #ffffff !important; }

    /* Hide everything except the booking content */
    .bn-topbar, .bn-sidebar, .bn-page-head, .no-print { display: none !important; }
    html, body { background: #fff !important; color: #1a1308 !important; }
    body { font-family: 'Poppins', Helvetica, Arial, sans-serif; font-size: 10pt; line-height: 1.4; }
    .bn-shell, .bn-main, main { background: #fff !important; box-shadow: none !important; }
    .bn-main { margin: 0 !important; padding: 0 !important; }
    .container, .row, .col-lg-8, .col-12 { width: 100% !important; max-width: 100% !important; flex: 0 0 100% !important; padding: 0 !important; margin: 0 !important; background: transparent !important; }

    /* Show print-only blocks */
    .bn-print-only { display: block !important; }

    /* Hide on-screen card chrome, render content flat */
    .bn-card {
        background: transparent !important; border: 0 !important; box-shadow: none !important;
        padding: 0 !important; margin: 0 0 8mm 0 !important;
    }
    .bn-card-title { font-family: 'Playfair Display', Georgia, serif !important; font-size: 11pt !important;
        font-weight: 600; color: #1a1308 !important; letter-spacing: .2px;
        border-bottom: 1px solid #d4b070; padding-bottom: 3pt; margin-bottom: 5pt !important;
    }
    h6 { font-size: 11pt; }

    /* ===== Letterhead ===== */
    .bn-print-letterhead { margin-bottom: 6mm; }
    .bn-pl-top {
        display: flex; justify-content: space-between; align-items: flex-end; gap: 12mm;
        padding-bottom: 4mm;
    }
    .bn-pl-brand { display: flex; align-items: center; gap: 10pt; }
    .bn-pl-mark {
        width: 38pt; height: 38pt; border-radius: 50%;
        background: linear-gradient(135deg, #d4b070, #b08b3e);
        color: #fff; display: flex; align-items: center; justify-content: center;
        font-size: 16pt;
    }
    .bn-pl-name {
        font-family: 'Playfair Display', Georgia, serif;
        font-size: 22pt; font-weight: 700; color: #1a1308;
        line-height: 1.05; letter-spacing: -.2px;
    }
    .bn-pl-tag {
        font-size: 8pt; letter-spacing: .14em; text-transform: uppercase;
        color: #8b6f3a; font-weight: 500; margin-top: 2pt;
    }
    .bn-pl-meta { text-align: right; }
    .bn-pl-doc-label {
        font-size: 7.5pt; letter-spacing: .22em; text-transform: uppercase;
        color: #8b6f3a; font-weight: 600;
    }
    .bn-pl-doc-no {
        font-family: 'Playfair Display', Georgia, serif;
        font-size: 16pt; color: #1a1308; font-weight: 600;
        margin: 2pt 0; letter-spacing: .5px;
    }
    .bn-pl-doc-date { font-size: 8.5pt; color: #6b5e44; }

    .bn-pl-divider {
        display: flex; align-items: center; justify-content: center;
        gap: 12pt; margin: 0; padding: 1mm 0 3mm;
        font-family: 'Playfair Display', Georgia, serif; font-style: italic;
        font-size: 8pt; color: #b08b3e; letter-spacing: .5em; text-transform: uppercase;
    }
    .bn-pl-divider span {
        flex: 1; height: 1px;
        background: linear-gradient(90deg, transparent, #d4b070 40%, #d4b070 60%, transparent);
    }

    /* ===== Customer & Event ===== */
    .text-muted { color: #8b7a5e !important; }
    .text-muted.small { font-size: 7.5pt; letter-spacing: .12em; text-transform: uppercase; font-weight: 600; }
    .fw-semibold { font-family: 'Playfair Display', Georgia, serif; font-size: 12pt; color: #1a1308; }
    .small { font-size: 9pt; }
    hr.my-3 { border-color: rgba(212,176,112,.4); margin: 3mm 0; }

    /* ===== Amenity pills ===== */
    .badge {
        font-size: 8pt !important; font-weight: 500 !important;
        padding: 3pt 8pt !important; letter-spacing: 0 !important;
    }

    /* ===== Items table — properly aligned columns ===== */
    .table {
        width: 100% !important; border-collapse: collapse !important;
        margin: 0 0 4mm 0 !important; font-size: 9.5pt;
        table-layout: fixed !important;
    }
    .table thead { display: table-header-group !important; }
    .table thead th {
        background: #1a1308 !important; color: #f5ecd2 !important;
        font-family: 'Playfair Display', Georgia, serif !important;
        font-size: 8pt !important; font-weight: 600 !important; letter-spacing: .18em !important;
        text-transform: uppercase !important;
        padding: 7pt 8pt !important; border: 0 !important;
        text-align: left !important;
    }
    .table thead th:nth-child(1) { width: 6%; }
    .table thead th:nth-child(2) { width: 44%; }
    .table thead th:nth-child(3) { width: 10%; text-align: center !important; }
    .table thead th:nth-child(4) { width: 16%; text-align: right !important; }
    .table thead th:nth-child(5) { width: 8%;  text-align: center !important; }
    .table thead th:nth-child(6) { width: 16%; text-align: right !important; }

    .table tbody td {
        padding: 7pt 8pt !important; border: 0 !important;
        border-bottom: 1px solid rgba(58,46,32,.10) !important;
        background: transparent !important; color: #1a1308 !important;
        vertical-align: middle !important;
        font-size: 9.5pt !important;
    }
    .table tbody tr:nth-child(even) td { background: rgba(212,176,112,.06) !important; }
    .table tbody td:nth-child(1) { color: #8b6f3a; font-weight: 600; }
    .table tbody td:nth-child(3) { text-align: center !important; }
    .table tbody td:nth-child(4) { text-align: right !important; font-variant-numeric: tabular-nums; }
    .table tbody td:nth-child(5) { text-align: center !important; color: #6b5e44; }
    .table tbody td:nth-child(6) { text-align: right !important; font-variant-numeric: tabular-nums; font-weight: 600; }

    /* ===== Horizontal totals strip (replaces the right-aligned mini-table) ===== */
    .bn-print-totals { margin: 4mm 0 0 0; }
    .bn-pt-row {
        display: flex !important; align-items: stretch;
        border: 1px solid rgba(212,176,112,.5);
        border-radius: 4pt;
        overflow: hidden;
        page-break-inside: avoid;
    }
    .bn-pt-row + .bn-pt-row { margin-top: 3mm; }
    .bn-pt-cell {
        flex: 1; display: flex !important; flex-direction: column;
        padding: 7pt 10pt;
        border-right: 1px solid rgba(212,176,112,.3);
        background: #fff;
    }
    .bn-pt-cell:last-child { border-right: 0; }
    .bn-pt-label {
        font-size: 7pt; letter-spacing: .22em; text-transform: uppercase;
        color: #8b6f3a; font-weight: 600; margin-bottom: 2pt;
    }
    .bn-pt-value {
        font-family: 'Playfair Display', Georgia, serif;
        font-size: 11pt; color: #1a1308; font-weight: 600;
        font-variant-numeric: tabular-nums;
    }
    .bn-pt-cell--total {
        background: linear-gradient(135deg, #1a1308, #3a2e1c) !important;
    }
    .bn-pt-cell--total .bn-pt-label { color: #d4b070; }
    .bn-pt-cell--total .bn-pt-value { color: #f5ecd2; font-size: 13pt; }

    .bn-pt-cell--paid {
        background: rgba(74,125,74,.08) !important;
    }
    .bn-pt-cell--paid .bn-pt-value { color: #2c6b3d; }
    .bn-pt-cell--balance {
        background: rgba(212,176,112,.16) !important;
    }
    .bn-pt-cell--balance .bn-pt-label { color: #6b3a1c; }
    .bn-pt-cell--balance .bn-pt-value { font-size: 13pt; color: #6b3a1c; }

    /* ===== Recent Payments table (print-only) ===== */
    .bn-print-payments {
        margin-top: 4mm;
        page-break-inside: avoid;
    }
    .bn-pp-head {
        display: flex !important; align-items: baseline; justify-content: space-between;
        margin-bottom: 2mm;
        padding-bottom: 1.5mm;
        border-bottom: 1px solid rgba(212,176,112,.5);
    }
    .bn-pp-eyebrow {
        font-family: 'Playfair Display', Georgia, serif;
        font-size: 10pt; font-weight: 600;
        color: #1a1308;
        letter-spacing: .01em;
    }
    .bn-pp-count {
        font-size: 7pt; letter-spacing: .22em; text-transform: uppercase;
        color: #8b6f3a; font-weight: 600;
    }
    .bn-pp-table {
        width: 100% !important;
        border-collapse: collapse !important;
        font-size: 8.5pt;
    }
    .bn-pp-table thead th {
        background: rgba(212,176,112,.12) !important;
        color: #6b5e44 !important;
        text-transform: uppercase;
        font-size: 6.5pt; letter-spacing: .18em;
        padding: 4pt 6pt;
        border-bottom: 1px solid rgba(212,176,112,.4);
        font-weight: 600;
        text-align: left;
    }
    .bn-pp-table thead .bn-pp-th-no { width: 8mm; text-align: center; }
    .bn-pp-table thead .bn-pp-th-date { width: 22mm; }
    .bn-pp-table thead .bn-pp-th-method { width: 22mm; }
    .bn-pp-table thead .bn-pp-th-amt { width: 24mm; text-align: right; }
    .bn-pp-table tbody td {
        padding: 4pt 6pt;
        border-bottom: 1px dotted rgba(212,176,112,.4);
        color: #1a1308;
        font-variant-numeric: tabular-nums;
    }
    .bn-pp-table tbody tr:last-child td { border-bottom: 0; }
    .bn-pp-td-no { text-align: center !important; color: #8b6f3a !important; }
    .bn-pp-td-amt {
        text-align: right !important; font-weight: 600;
        font-family: 'Playfair Display', Georgia, serif;
        font-size: 9.5pt;
    }
    .bn-pp-td-ref { color: #6b5e44; font-size: 8pt; }
    .bn-pp-more {
        margin-top: 1.5mm; font-size: 7pt; letter-spacing: .14em; text-transform: uppercase;
        color: #8b6f3a; text-align: right; font-style: italic;
    }

    /* ===== Print Footer (signatures only) ===== */
    .bn-print-foot { margin-top: 10mm; page-break-inside: avoid; }
    .bn-pf-cols {
        display: flex; gap: 16mm; justify-content: space-between;
    }
    .bn-pf-sign { flex: 1; }
    .bn-pf-sig-line { border-top: 1px solid #1a1308; margin-bottom: 3pt; height: 14mm; }
    .bn-pf-sig-label {
        font-size: 7.5pt; letter-spacing: .2em; text-transform: uppercase;
        color: #6b5e44; font-weight: 600; margin-bottom: 1pt;
    }
    .bn-pf-sig-name {
        font-family: 'Playfair Display', Georgia, serif;
        font-size: 11pt; color: #1a1308; font-weight: 600;
    }

    /* Force one-page fit: prevent rows splitting */
    tr, .bn-print-letterhead, .bn-print-foot, .bn-print-totals, .bn-print-payments { page-break-inside: avoid; }

    /* Notes section in items block, kept compact */
    .mt-3 strong { font-family: 'Playfair Display', Georgia, serif; font-size: 10pt; }
}

/* Misc */
.cursor-pointer { cursor: pointer; }
.text-primary { color: var(--bn-primary) !important; }
hr { border-color: var(--bn-border); }


/* ============================================================================
 * MOBILE / RESPONSIVE — admin tables transform into stacked cards on small screens
 * Premium look: each row becomes a glass-bordered card with label / value pairs.
 * Restricted to `screen` so the transformation doesn't bleed into print output.
 * ============================================================================ */
@media screen and (max-width: 768px) {
    :root { --bn-radius: 14px; }
    .bn-main { padding: 14px; }

    /* Page head — title above, button row below, full-width buttons */
    .bn-page-head { gap: 10px; margin-bottom: 18px; }
    .bn-page-head > div:first-child { width: 100%; }
    .bn-page-head .ms-auto { margin-left: 0 !important; width: 100%; }
    .bn-page-head .ms-auto .btn { flex: 1; justify-content: center; display: inline-flex; align-items: center; }
    /* Inline forms (e.g. Reports date range) — wrap controls into a 2x2 grid */
    .bn-page-head form.ms-auto {
        flex-wrap: wrap;
        display: grid !important;
        grid-template-columns: 1fr 1fr;
        gap: 8px;
    }
    .bn-page-head form.ms-auto .btn { grid-column: 1 / -1; }
    .bn-page-title { font-size: 24px; }
    .bn-page-sub { font-size: 13px; }

    /* Stat tiles */
    .bn-stat { padding: 14px 16px; }
    .bn-stat-value { font-size: 24px; }
    .bn-stat-icon { font-size: 18px; right: 12px; top: 12px; }

    /* Cards — tighter padding */
    .bn-card { padding: 14px 12px; border-radius: 14px; }

    /* DataTables controls — stack search + length on top of each other */
    .dataTables_wrapper .row > [class^="col"] { width: 100%; max-width: 100%; flex: 0 0 100%; }
    .dataTables_length, .dataTables_filter { text-align: left !important; }
    .dataTables_filter { margin-top: 8px; }
    .dataTables_filter input { width: 100%; }
    .dataTables_info, .dataTables_paginate { text-align: center !important; margin-top: 10px; }

    /* === TABLE → CARD LIST transformation ===
       Works for any table inside .bn-card that has a <thead>. Each row collapses
       into a vertical stack where the cell value is paired with its header label
       (injected via the JS helper below).
       Skip tables marked .bn-table-flat (invoice/booking/quotation items) — those
       must keep their column layout so the document still reads like an invoice
       on mobile. They get a horizontal scroll instead. */
    .bn-card .table:not(.bn-table-flat) { border-collapse: separate; border-spacing: 0; }
    .bn-card .table:not(.bn-table-flat) thead { display: none; }
    .bn-card .table:not(.bn-table-flat),
    .bn-card .table:not(.bn-table-flat) tbody,
    .bn-card .table:not(.bn-table-flat) tr,
    .bn-card .table:not(.bn-table-flat) td {
        display: block; width: 100%;
    }
    .bn-card .table:not(.bn-table-flat) tbody tr {
        background: var(--bn-surface);
        border: 1px solid var(--bn-border);
        border-radius: 14px;
        padding: 14px 14px 8px;
        margin-bottom: 12px;
        box-shadow: 0 2px 8px rgba(58,46,32,.04);
        position: relative;
    }
    [data-bs-theme="dark"] .bn-card .table:not(.bn-table-flat) tbody tr {
        background: #1c1d22;
        border-color: #33343a;
    }
    .bn-card .table:not(.bn-table-flat) tbody tr:hover { background: var(--bn-surface); }
    .bn-card .table:not(.bn-table-flat) tbody td {
        padding: 8px 0;
        border: 0;
        display: flex;
        justify-content: space-between;
        align-items: center;
        gap: 12px;
        text-align: right;
        font-size: 14px;
        min-height: 36px;
    }
    .bn-card .table:not(.bn-table-flat) tbody td + td { border-top: 1px dashed var(--bn-border); }
    .bn-card .table:not(.bn-table-flat) tbody td::before {
        content: attr(data-label);
        font-size: 11px;
        font-weight: 600;
        letter-spacing: .08em;
        text-transform: uppercase;
        color: var(--bn-text-muted);
        flex: 0 0 38%;
        text-align: left;
        line-height: 1.4;
    }
    /* Empty data-label (e.g. action column) — render value full-width centered */
    .bn-card .table:not(.bn-table-flat) tbody td[data-label=""]::before,
    .bn-card .table:not(.bn-table-flat) tbody td:not([data-label])::before { display: none; }
    .bn-card .table:not(.bn-table-flat) tbody td[data-label=""],
    .bn-card .table:not(.bn-table-flat) tbody td:not([data-label]) {
        justify-content: flex-end;
        padding-top: 12px;
    }
    /* Buttons inside action column — keep them compact and right-aligned */
    .bn-card .table:not(.bn-table-flat) tbody td .btn-sm { padding: 6px 10px; }

    /* DataTables empty row in mobile view */
    .bn-card .table:not(.bn-table-flat) tbody td.dataTables_empty,
    .bn-card .table:not(.bn-table-flat) tbody td.dt-empty {
        text-align: center; padding: 30px 0; font-size: 14px;
        color: var(--bn-text-muted);
    }
    .bn-card .table:not(.bn-table-flat) tbody td.dataTables_empty::before,
    .bn-card .table:not(.bn-table-flat) tbody td.dt-empty::before { display: none; }

    /* Invoice-style tables (.bn-table-flat) — keep their normal row/column layout
       but wrap in a horizontal scroller so they remain readable on phones. */
    .bn-card .table.bn-table-flat {
        font-size: 13px;
        display: block;
        overflow-x: auto;
        white-space: nowrap;
    }
    .bn-card .table.bn-table-flat thead th,
    .bn-card .table.bn-table-flat tbody td {
        padding: 9px 10px;
    }

    /* Modals — full-width, gentler padding */
    .modal-dialog { margin: 8px; }
    .modal-content { border-radius: 14px; }
    .modal-header, .modal-footer { padding: 14px 16px; }
    .modal-body { padding: 16px; }
    .modal-title { font-size: 18px; }
    .modal-footer .btn { flex: 1; }

    /* Forms — comfortable touch targets */
    .form-control, .form-select { padding: 11px 12px; font-size: 15px; }

    /* Topbar — hide brand text, keep mark + user dropdown */
    .bn-topbar .bn-brand-text { display: none; }

    /* Sidebar overlay backdrop while open */
    body.bn-sidebar-open::after {
        content: "";
        position: fixed; inset: var(--bn-topbar-h) 0 0 0;
        background: rgba(20,15,8,.45);
        z-index: 998;
        backdrop-filter: blur(2px);
    }
    .bn-sidebar { z-index: 999; box-shadow: 6px 0 22px rgba(58,46,32,.18); }
}

@media screen and (max-width: 480px) {
    .bn-page-title { font-size: 20px; }
    .bn-card .table tbody td::before { flex: 0 0 42%; }
    .bn-stat-value { font-size: 22px; }
}

/* ====================================================================
 * PREMIUM MOBILE CALENDAR (.bn-mcal) — shown on small screens in place
 * of the desktop FullCalendar grid. Same aesthetic family as the public
 * customer-portal calendar but tuned for the admin's lighter palette.
 * ==================================================================== */
.bn-mcal { padding: 18px 16px 16px; position: relative; overflow: hidden; }
.bn-mcal::before {
    content:""; position:absolute; inset:0;
    background: radial-gradient(120% 60% at 50% -10%, rgba(212,176,112,.08), transparent 60%);
    pointer-events:none;
}
.bn-mcal-head {
    display:flex; align-items:center; justify-content:space-between;
    margin-bottom: 16px; position: relative;
}
.bn-mcal-nav {
    width: 38px; height: 38px; border-radius: 50%;
    background: var(--bn-surface-2);
    border: 1px solid var(--bn-border);
    color: var(--bn-text);
    display: flex; align-items: center; justify-content: center;
    cursor: pointer; transition: all .22s ease;
    font-size: 13px;
}
.bn-mcal-nav:hover {
    background: linear-gradient(135deg, var(--bn-primary), var(--bn-accent, #c9a268));
    color: #fff; border-color: transparent; transform: scale(1.04);
}
.bn-mcal-title { text-align: center; line-height: 1.1; }
.bn-mcal-month {
    display: block; font-family: var(--bn-ff-display);
    font-style: italic; font-size: 22px; color: var(--bn-text);
    letter-spacing: .2px;
}
.bn-mcal-year {
    display: block; font-size: 10px; letter-spacing: .32em;
    text-transform: uppercase; color: var(--bn-primary); margin-top: 4px; font-weight: 600;
}

.bn-mcal-dow {
    display: grid; grid-template-columns: repeat(7, 1fr); gap: 4px;
    margin-bottom: 8px;
}
.bn-mcal-dow span {
    text-align: center; font-size: 10px; letter-spacing: .22em;
    text-transform: uppercase; color: var(--bn-text-muted); padding: 6px 0; font-weight: 600;
}

.bn-mcal-grid {
    display: grid; grid-template-columns: repeat(7, 1fr); gap: 5px; position: relative;
}
.bn-mcal-loading {
    grid-column: 1 / -1; text-align: center; padding: 40px 0;
    color: var(--bn-text-muted); font-size: 11px; letter-spacing: .24em; text-transform: uppercase;
}
.bn-mcal-cell {
    /* Fixed touch-friendly height — was aspect-ratio:1/1 which caused the bottom
       row to clip on phones with shorter viewports. */
    min-height: 46px;
    display: flex; flex-direction: column; align-items: center; justify-content: center;
    font-size: 14px; font-weight: 500; color: var(--bn-text);
    background: var(--bn-surface-2);
    border: 1px solid var(--bn-border);
    border-radius: 10px;
    cursor: pointer;
    position: relative;
    transition: all .2s cubic-bezier(.2,.7,.3,1);
    user-select: none;
    font-variant-numeric: tabular-nums;
}
.bn-mcal-cell:not(.is-blank):not(.is-booked):not(.is-past):hover {
    background: rgba(212,176,112,.14);
    border-color: rgba(212,176,112,.55);
    color: var(--bn-primary);
    transform: translateY(-1px);
}
.bn-mcal-num { line-height: 1; }
.bn-mcal-cell.is-blank { background: transparent; border-color: transparent; cursor: default; }
.bn-mcal-cell.is-past {
    color: var(--bn-text-muted); opacity: .55;
    background: transparent;
}
.bn-mcal-cell.is-today {
    border-color: var(--bn-primary);
    box-shadow: inset 0 0 0 1px rgba(212,176,112,.35), 0 0 14px rgba(212,176,112,.15);
}
.bn-mcal-cell.is-today .bn-mcal-num { color: var(--bn-primary); font-weight: 700; }

/* Booked — gold gradient pill, click-through to the booking */
.bn-mcal-cell.is-booked {
    background: linear-gradient(135deg, var(--bn-primary), var(--bn-accent, #c9a268));
    border-color: transparent;
    color: #fff;
    font-weight: 600;
    box-shadow: 0 4px 12px rgba(139,111,58,.25);
}
.bn-mcal-cell.is-booked.is-tentative {
    background: linear-gradient(135deg, #d59a3d, #b07825);
}
.bn-mcal-cell.is-booked.is-completed {
    background: linear-gradient(135deg, #5d8db3, #3f6a8a);
}
.bn-mcal-cell.is-booked.is-cancelled {
    background: linear-gradient(135deg, #b96363, #8a4444);
    opacity: .8;
}
.bn-mcal-cell.is-booked .bn-mcal-num { color: #fff; }
.bn-mcal-cell.is-booked:hover { transform: translateY(-2px); box-shadow: 0 6px 16px rgba(139,111,58,.35); }
.bn-mcal-dot {
    position: absolute; top: 4px; right: 6px;
    min-width: 16px; height: 16px; padding: 0 4px; border-radius: 999px;
    background: rgba(0,0,0,.35); color: #fff;
    font-size: 9px; font-weight: 700;
    display: flex; align-items: center; justify-content: center;
    line-height: 1;
}
.bn-mcal-cell.is-selected {
    outline: 2px solid var(--bn-primary);
    outline-offset: 2px;
}

.bn-mcal-legend {
    display: flex; flex-wrap: wrap; gap: 14px; justify-content: center;
    margin-top: 16px; padding-top: 14px;
    border-top: 1px solid var(--bn-border);
    font-size: 10px; letter-spacing: .14em; text-transform: uppercase;
    color: var(--bn-text-muted); font-weight: 600;
}
.bn-mcal-leg { display: inline-flex; align-items: center; gap: 6px; }
.bn-mcal-chip { width: 10px; height: 10px; border-radius: 3px; display: inline-block; }
.bn-mcal-chip--free   { background: var(--bn-surface-2); border: 1px solid var(--bn-border); }
.bn-mcal-chip--booked { background: linear-gradient(135deg, var(--bn-primary), var(--bn-accent, #c9a268)); }
.bn-mcal-chip--today  { background: transparent; border: 1px solid var(--bn-primary); }

/* Summary card shown below the grid when tapping a date with multiple bookings */
.bn-mcal-foot { margin-top: 12px; }
.bn-mcal-summary {
    background: var(--bn-surface-2);
    border: 1px solid var(--bn-border);
    border-radius: 14px;
    padding: 14px 14px 8px;
    animation: bnFadeIn .25s ease;
}
.bn-mcal-summary--free {
    display: flex; align-items: center; gap: 12px; padding: 16px;
    color: var(--bn-text-muted);
}
.bn-mcal-summary--free i { color: var(--bn-primary); font-size: 22px; }
.bn-mcal-sum-head {
    font-family: var(--bn-ff-display);
    font-size: 15px; margin-bottom: 10px;
    color: var(--bn-text);
}
.bn-mcal-evt {
    display: flex; align-items: center; gap: 10px;
    padding: 10px 6px; margin-bottom: 6px;
    border-radius: 10px;
    text-decoration: none; color: var(--bn-text);
    transition: background .15s;
}
.bn-mcal-evt:hover { background: var(--bn-surface); color: var(--bn-text); }
.bn-mcal-evt-dot {
    width: 10px; height: 10px; border-radius: 50%; flex-shrink: 0;
}
.bn-mcal-evt-body { flex: 1; display: flex; flex-direction: column; gap: 2px; }
.bn-mcal-evt-title { font-size: 13px; font-weight: 500; }
.bn-mcal-evt-meta { font-size: 11px; color: var(--bn-text-muted); letter-spacing: .03em; }
.bn-mcal-evt i { color: var(--bn-text-muted); font-size: 11px; }

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

/* On very small screens, tighten the grid */
@media (max-width: 380px) {
    .bn-mcal { padding: 14px 10px 12px; }
    .bn-mcal-cell { font-size: 12px; border-radius: 8px; }
    .bn-mcal-month { font-size: 18px; }
}


/* =====================================================
   Follow-up Due Today — dashboard alert (not popup)
   Premium glass strip with champagne accent.
===================================================== */
.bn-followup-alert {
    display: flex;
    align-items: center;
    gap: 18px;
    padding: 16px 22px;
    margin-bottom: 22px;
    border-radius: 16px;
    background:
        linear-gradient(135deg, rgba(212,176,112,.14), rgba(212,176,112,.06)),
        rgba(255,255,255,.62);
    border: 1px solid rgba(212,176,112,.35);
    box-shadow: 0 8px 28px -16px rgba(36,28,12,.18);
    text-decoration: none;
    color: inherit;
    transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease;
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    position: relative;
    overflow: hidden;
}
.bn-followup-alert::before {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(90deg, rgba(212,176,112,.18), transparent 35%);
    pointer-events: none;
}
.bn-followup-alert:hover {
    transform: translateY(-1px);
    border-color: rgba(212,176,112,.65);
    box-shadow: 0 14px 36px -18px rgba(36,28,12,.28);
    color: inherit;
}
.bn-followup-alert-icon {
    flex-shrink: 0;
    width: 44px;
    height: 44px;
    border-radius: 12px;
    background: linear-gradient(135deg, #c89c4d, #d4b070);
    color: #fff;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 18px;
    box-shadow: 0 6px 18px -6px rgba(200,156,77,.55);
    animation: bn-bell-shake 2.6s ease-in-out infinite;
}
@keyframes bn-bell-shake {
    0%, 84%, 100% { transform: rotate(0); }
    87% { transform: rotate(-12deg); }
    90% { transform: rotate(10deg); }
    93% { transform: rotate(-6deg); }
    96% { transform: rotate(4deg); }
}
.bn-followup-alert-body { flex: 1; min-width: 0; }
.bn-followup-alert-title {
    font-family: var(--font-display, "Playfair Display", serif);
    font-size: 20px;
    font-weight: 600;
    line-height: 1.2;
    color: #2c2418;
    letter-spacing: -.01em;
}
.bn-followup-alert-sub {
    margin-top: 3px;
    font-size: 13px;
    color: var(--bn-text-muted, #6b6253);
    letter-spacing: .005em;
}
.bn-followup-alert-cta {
    flex-shrink: 0;
    font-size: 13px;
    font-weight: 600;
    letter-spacing: .04em;
    text-transform: uppercase;
    color: #8a6918;
    padding: 8px 14px;
    border-radius: 999px;
    background: rgba(255,255,255,.6);
    border: 1px solid rgba(212,176,112,.4);
    transition: background .18s ease, color .18s ease;
}
.bn-followup-alert:hover .bn-followup-alert-cta {
    background: linear-gradient(135deg, #c89c4d, #d4b070);
    color: #fff;
    border-color: transparent;
}
/* Dark mode */
[data-bs-theme="dark"] .bn-followup-alert {
    background:
        linear-gradient(135deg, rgba(212,176,112,.18), rgba(212,176,112,.05)),
        rgba(30,26,20,.55);
    border-color: rgba(212,176,112,.4);
    color: #f5efe2;
}
[data-bs-theme="dark"] .bn-followup-alert-title { color: #f5efe2; }
[data-bs-theme="dark"] .bn-followup-alert-sub  { color: rgba(245,239,226,.7); }
[data-bs-theme="dark"] .bn-followup-alert-cta {
    background: rgba(255,255,255,.06);
    color: #e6c98b;
}
/* Mobile */
@media (max-width: 575px) {
    .bn-followup-alert { padding: 14px 16px; gap: 14px; flex-wrap: wrap; }
    .bn-followup-alert-title { font-size: 17px; }
    .bn-followup-alert-cta { font-size: 11px; padding: 6px 10px; width: 100%; text-align: center; }
}
/* Print: never include this alert on printed pages */
@media print {
    .bn-followup-alert { display: none !important; }
}
