/* ============================================================================
   Bookchair — Liquid Glass admin theme
   Minimal Apple aesthetic. Light + dark (auto via prefers-color-scheme, or
   forced with <html data-theme="light|dark">). Per-tenant accent flows in
   from brandThemeStyles() (--bc-primary / --bc-accent); falls back to iOS blue.
   ============================================================================ */

/* ── Tokens: light (default) ───────────────────────────────────────────────*/
:root {
    --accent:       var(--bc-primary, #2D5A40);
    --accent-rgb:   var(--bc-primary-rgb, 45,90,64);
    --accent-ink:   color-mix(in srgb, var(--accent), #000 14%);
    --accent-strong:color-mix(in srgb, var(--accent), #000 6%);
    --accent-tint:  rgba(var(--accent-rgb), .12);
    --accent-tint-2:rgba(var(--accent-rgb), .07);

    --page-1: #EFEBE2;
    --page-2: #F4F1EA;

    --glass:        rgba(255,255,255,.92);
    --glass-strong: rgba(255,255,255,.98);
    --glass-quiet:  rgba(255,255,255,.65);
    --hairline:     rgba(38,36,31,.10);
    --hairline-2:   rgba(38,36,31,.06);
    --glass-border: rgba(38,36,31,.13);
    --shadow:       0 2px 12px rgba(38,36,31,.08), 0 0 0 .5px rgba(38,36,31,.06);
    --shadow-lg:    0 14px 44px rgba(38,36,31,.10);

    --text-1: #2C2A24;
    --text-2: #5C584F;
    --text-3: #9A958B;

    --field-bg:     rgba(255,255,255,.66);
    --field-border: rgba(38,36,31,.14);

    --ok:    #2D5A40;  --ok-bg:    rgba(45,90,64,.13);
    --warn:  #A8743A;  --warn-bg:  rgba(168,116,58,.15);
    --danger:#B0432F;  --danger-bg:rgba(176,67,47,.13);

    --radius:    10px;
    --radius-lg: 14px;
    --radius-sm: 8px;
    --blur: saturate(140%) blur(18px);

    --sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, Roboto, Helvetica, Arial, sans-serif;
    --display: "Fraunces", Georgia, "Times New Roman", serif;
}

/* ── Tokens: dark (auto + forced) ──────────────────────────────────────────*/
@media (prefers-color-scheme: dark) {
    :root:not([data-theme="light"]) {
        --accent-ink:   color-mix(in srgb, var(--accent), #fff 22%);
        --accent-strong:color-mix(in srgb, var(--accent), #fff 4%);
        --accent-tint:  rgba(var(--accent-rgb), .22);
        --accent-tint-2:rgba(var(--accent-rgb), .12);
        --page-1: #0A0A0A; --page-2: #121212;
        --glass:        rgba(30,30,32,.55);
        --glass-strong: rgba(40,40,42,.74);
        --glass-quiet:  rgba(30,30,32,.40);
        --hairline:     rgba(255,255,255,.10);
        --hairline-2:   rgba(255,255,255,.06);
        --glass-border: rgba(255,255,255,.10);
        --shadow:       0 8px 30px rgba(0,0,0,.40);
        --shadow-lg:    0 18px 50px rgba(0,0,0,.55);
        --text-1: #F4F1EA; --text-2: #C2BCB0; --text-3: #8C877C;
        --field-bg:     rgba(255,255,255,.06);
        --field-border: rgba(255,255,255,.14);
        --ok-bg:   rgba(40,200,100,.18);
        --warn-bg: rgba(255,170,30,.18);
        --danger-bg:rgba(235,90,75,.20);
    }
}
:root[data-theme="dark"] {
    --accent-ink:   color-mix(in srgb, var(--accent), #fff 22%);
    --accent-strong:color-mix(in srgb, var(--accent), #fff 4%);
    --accent-tint:  rgba(var(--accent-rgb), .22);
    --accent-tint-2:rgba(var(--accent-rgb), .12);
    --page-1: #0A0A0A; --page-2: #121212;
    --glass:        rgba(30,30,32,.55);
    --glass-strong: rgba(40,40,42,.74);
    --glass-quiet:  rgba(30,30,32,.40);
    --hairline:     rgba(255,255,255,.10);
    --hairline-2:   rgba(255,255,255,.06);
    --glass-border: rgba(255,255,255,.10);
    --shadow:       0 8px 30px rgba(0,0,0,.40);
    --shadow-lg:    0 18px 50px rgba(0,0,0,.55);
    --text-1: #F4F1EA; --text-2: #C2BCB0; --text-3: #8C877C;
    --field-bg:     rgba(255,255,255,.06);
    --field-border: rgba(255,255,255,.14);
    --ok-bg:   rgba(40,200,100,.18);
    --warn-bg: rgba(255,170,30,.18);
    --danger-bg:rgba(235,90,75,.20);
}

/* ── Base ──────────────────────────────────────────────────────────────────*/
* { -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; }
html { scroll-behavior: smooth; }
body {
    font-family: var(--sans);
    color: var(--text-1);
    background: var(--page-2);
    min-height: 100vh;
    position: relative;
}
/* Soft ambient wash so the glass has something to refract — kept subtle. */
body::before {
    content: "";
    position: fixed; inset: 0; z-index: -1; pointer-events: none;
    background:
        radial-gradient(60rem 60rem at 8% -10%, var(--accent-tint-2), transparent 60%),
        radial-gradient(50rem 50rem at 100% 0%, rgba(var(--accent-rgb),.05), transparent 55%),
        linear-gradient(160deg, var(--page-1), var(--page-2));
}
a { color: var(--accent-ink); text-decoration: none; }
a:hover { text-decoration: underline; }
::selection { background: var(--accent-tint); }

/* Quiet, modern scrollbars */
* { scrollbar-width: thin; scrollbar-color: var(--hairline) transparent; }
*::-webkit-scrollbar { width: 9px; height: 9px; }
*::-webkit-scrollbar-thumb { background: var(--hairline); border-radius: 99px; border: 2px solid transparent; background-clip: content-box; }
*::-webkit-scrollbar-thumb:hover { background: var(--text-3); background-clip: content-box; }

/* ── App shell ─────────────────────────────────────────────────────────────*/
.fd-app-content { background: transparent; min-width: 0; }
.fd-main, main {
    background: transparent !important;
    min-height: calc(100vh - 64px);
}
main::before { content: none !important; } /* kill old neon watermark */

/* ── Sidebar (floating glass) ──────────────────────────────────────────────*/
.fd-sidebar {
    background: var(--bc-topbar-bg, var(--glass)) !important;
    -webkit-backdrop-filter: var(--blur); backdrop-filter: var(--blur);
    border-right: .5px solid rgba(255,255,255,0.06) !important;
    border: none !important;
    border-radius: 0;
    box-shadow: 1px 0 0 rgba(0,0,0,.15);
    margin: 0;
    padding: 14px !important;
    width: 230px;
    height: calc(100vh - 60px);
    position: sticky; top: 60px;
    overflow-y: auto;
}
/* ── Dark-brand sidebar & topbar overrides (.bc-brand-dark on body) ─────── */
.bc-brand-dark .fd-topbar { background: var(--bc-topbar-bg, #0a0a0a) !important; }
.bc-brand-dark .fd-topbar * { color: #fff !important; }
.bc-brand-dark .fd-topbar .text-muted { color: rgba(255,255,255,.6) !important; }
.bc-brand-dark .fd-topbar .btn-outline-secondary { border-color: rgba(255,255,255,.3) !important; color: #fff !important; }
.bc-brand-dark .fd-topbar .btn-outline-secondary:hover { background: rgba(255,255,255,.1) !important; }

.bc-brand-dark .fd-sidebar { background: var(--bc-topbar-bg, #0a0a0a) !important; border-right: 1px solid rgba(255,255,255,.07) !important; }
.bc-brand-dark .fd-sidebar,
.bc-brand-dark .fd-sidebar * { color: rgba(255,255,255,.75) !important; }
.bc-brand-dark .fd-sidebar .nav-link { color: rgba(255,255,255,.65) !important; background: transparent !important; border-radius: 8px; }
.bc-brand-dark .fd-sidebar .nav-link:hover { color: #fff !important; background: rgba(255,255,255,.08) !important; }
.bc-brand-dark .fd-sidebar .nav-link.active { color: #fff !important; background: var(--bc-primary) !important; }
.bc-brand-dark .fd-sidebar .fd-nav-toggle { color: rgba(255,255,255,.35) !important; font-size:.65rem; letter-spacing:.1em; }
.bc-brand-dark .fd-sidebar .fd-nav-toggle:hover { color: rgba(255,255,255,.7) !important; background: transparent !important; }
.bc-brand-dark .fd-sidebar .fd-dot { background: var(--bc-primary) !important; opacity:.8; }
.bc-brand-dark .fd-sidebar [style*="#D4A030"] { color: #D4A030 !important; }
.bc-brand-dark .fd-sidebar [style*="#3CBCCA"] { color: #3CBCCA !important; }
.fd-brand-mark { margin-bottom: 1rem; padding: 4px 6px; display: flex; align-items: center; gap: .6rem; }
.fd-brand-logo {
    width: 38px; height: 38px; border-radius: 50%;
    background: linear-gradient(135deg, var(--accent), color-mix(in srgb, var(--accent), #fff 35%));
    box-shadow: 0 2px 10px rgba(var(--accent-rgb), .35);
}
.fd-brand-name { color: var(--text-1); font-size: 1.05rem; font-weight: 600; letter-spacing: -.02em; line-height: 1; }
.fd-brand-tag  { color: var(--accent-ink); font-size: .62rem; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; }

/* ── Collapsible category nav ──────────────────────────────────────────────*/
.fd-nav-section { margin-bottom: .12rem; }
.fd-nav-toggle {
    display: flex; align-items: center; gap: .5rem; width: 100%;
    background: transparent; border: 0; color: var(--text-3);
    font-size: .66rem; font-weight: 600; letter-spacing: .1em; text-transform: uppercase;
    padding: .6rem .75rem; border-radius: var(--radius-sm); cursor: pointer;
    transition: color .15s, background .15s;
}
.fd-nav-toggle > span:first-child { margin-right: auto; }
.fd-nav-toggle:hover { color: var(--accent-ink); background: var(--accent-tint-2); }
.fd-nav-section.is-open > .fd-nav-toggle { color: var(--text-2); }
.fd-chevron { width: 12px; height: 12px; opacity: .5; transition: transform .22s ease; flex: none; }
.fd-nav-section.is-open > .fd-nav-toggle .fd-chevron { transform: rotate(90deg); opacity: .85; }
.fd-dot { width: 6px; height: 6px; border-radius: 999px; background: var(--accent); display: none; flex: none; }
.fd-nav-section.has-active:not(.is-open) > .fd-nav-toggle .fd-dot { display: block; }
.fd-nav-group { display: grid; grid-template-rows: 0fr; transition: grid-template-rows .24s ease; }
.fd-nav-section.is-open > .fd-nav-group { grid-template-rows: 1fr; }
.fd-nav-group-inner { overflow: hidden; min-height: 0; }

.fd-sidebar .nav-link, .fd-mobile-menu .nav-link {
    color: var(--text-2) !important;
    border-radius: var(--radius-sm);
    font-weight: 500; font-size: .9rem;
    padding: .55rem .75rem; margin-bottom: .1rem;
    display: flex; align-items: center; justify-content: space-between;
    transition: background .15s, color .15s;
}
.fd-sidebar .nav-link:hover, .fd-mobile-menu .nav-link:hover {
    color: var(--text-1) !important; background: var(--hairline-2);
    box-shadow: none;
}
.fd-sidebar .nav-link.active, .fd-mobile-menu .nav-link.active {
    color: var(--accent-ink) !important; background: var(--accent-tint);
    font-weight: 600; box-shadow: none;
}

/* ── Topbar (glass) ────────────────────────────────────────────────────────*/
.navbar.fd-topbar, .fd-topbar {
    background: var(--bc-topbar-bg, var(--glass-strong)) !important;
    -webkit-backdrop-filter: var(--blur); backdrop-filter: var(--blur);
    border: 0 !important;
    border-bottom: .5px solid rgba(255,255,255,0.08) !important;
    box-shadow: 0 1px 0 rgba(0,0,0,0.2);
    min-height: 60px;
    position: sticky; top: 0; z-index: 30;
}
.fd-topbar, .fd-topbar * { color: var(--bc-topbar-text, var(--text-1)) !important; }
.fd-topbar-title .fw-black { font-weight: 700 !important; letter-spacing: -.02em !important; color: var(--bc-topbar-text, var(--text-1)) !important; }
.fd-topbar-title .small { color: var(--bc-topbar-text, var(--text-3)) !important; opacity: .6; font-weight: 500 !important; }
.fd-topbar .text-muted { color: var(--bc-topbar-text, var(--text-3)) !important; opacity:.7; }
.fd-topbar .btn-outline-secondary { border-color: rgba(255,255,255,.25) !important; color: var(--bc-topbar-text, var(--text-1)) !important; }
.fd-topbar .btn-outline-secondary:hover { background: rgba(255,255,255,.1) !important; }

/* ── Theme toggle ──────────────────────────────────────────────────────────*/
.bc-theme-toggle {
    display: inline-flex; align-items: center; justify-content: center;
    width: 34px; height: 34px; border-radius: 50%;
    background: var(--glass); border: .5px solid var(--hairline);
    color: var(--text-2) !important; cursor: pointer; font-size: 16px;
    transition: background .15s, color .15s;
}
.bc-theme-toggle:hover { background: var(--accent-tint); color: var(--accent-ink) !important; }

/* ── Cards / panels ────────────────────────────────────────────────────────*/
.card, .fd-card {
    background: var(--glass) !important;
    -webkit-backdrop-filter: var(--blur); backdrop-filter: var(--blur);
    border: 1px solid var(--glass-border) !important;
    border-radius: var(--radius-lg) !important;
    box-shadow: var(--shadow);
    color: var(--text-1);
}
.card-header {
    background: transparent !important;
    border-bottom: .5px solid var(--hairline) !important;
    font-weight: 600; color: var(--text-1);
}
.shadow-sm, .shadow { box-shadow: var(--shadow) !important; }
.border, .border-0 { border-color: var(--hairline) !important; }
.bg-white, .bg-light { background: var(--glass) !important; color: var(--text-1); }
.text-muted { color: var(--text-3) !important; }
.text-dark { color: var(--text-1) !important; }

/* ── Page headings (tone the old giant neon titles right down) ─────────────*/
h1, .fd-page-title {
    font-family: var(--display) !important;
    color: var(--text-1) !important;
    font-size: clamp(1.55rem, 2.4vw, 2.05rem) !important;
    font-weight: 400 !important;
    letter-spacing: -.01em !important;
    line-height: 1.12 !important;
    margin-bottom: .35rem !important;
}
h1::after, .fd-page-title::after { content: none !important; }
h2, h3, .fd-card-title { font-family: var(--display); font-weight: 500; letter-spacing: -.005em; color: var(--text-1); }
.fd-page-subtitle { color: var(--text-3) !important; font-weight: 500; }

/* Hero panel → quiet glass header */
.fd-hero-panel {
    background: var(--glass) !important;
    -webkit-backdrop-filter: var(--blur); backdrop-filter: var(--blur);
    border: .5px solid var(--glass-border) !important;
    border-radius: var(--radius-lg) !important;
    box-shadow: var(--shadow);
}
.fd-hero-panel::before { content: none !important; }
.fd-hero-panel .fd-page-title, .fd-hero-panel h1, .fd-hero-panel p { color: var(--text-1) !important; }

/* ── Buttons ───────────────────────────────────────────────────────────────*/
.btn {
    border-radius: var(--radius-sm); font-weight: 500;
    transition: transform .08s ease, background .15s, box-shadow .15s, border-color .15s;
    box-shadow: none;
}
.btn:active { transform: scale(.98); }
.btn-primary, .fd-smart-create-btn.is-ready {
    background: var(--accent-strong) !important; border: 0 !important; color: #fff !important;
    box-shadow: 0 4px 14px rgba(var(--accent-rgb), .30) !important;
}
.btn-primary:hover, .fd-smart-create-btn.is-ready:hover {
    background: color-mix(in srgb, var(--accent-strong), #000 8%) !important;
    color: #fff !important;
}
.btn-outline-secondary, .btn-light, .btn-outline-dark {
    background: var(--glass) !important;
    border: .5px solid var(--hairline) !important;
    color: var(--text-2) !important;
}
.btn-outline-secondary:hover, .btn-light:hover, .btn-outline-dark:hover {
    background: var(--hairline) !important; color: var(--text-1) !important;
}
.btn-dark { background: var(--text-1) !important; color: var(--page-2) !important; border: 0 !important; }
.btn-dark:hover { background: color-mix(in srgb, var(--text-1), #888 25%) !important; }
.btn-outline-danger { background: transparent !important; border: .5px solid var(--danger) !important; color: var(--danger) !important; }
.btn-outline-danger:hover { background: var(--danger-bg) !important; color: var(--danger) !important; }
.btn-success { background: var(--ok) !important; border: 0 !important; color: #fff !important; }
.btn-danger { background: var(--danger) !important; border: 0 !important; color: #fff !important; }
.fd-smart-create-btn:disabled { opacity: .5; }

/* Dashboard quick-action pills */
.fd-action-grid { gap: 12px; }
.fd-action-pill {
    background: var(--glass) !important;
    -webkit-backdrop-filter: var(--blur); backdrop-filter: var(--blur);
    border: .5px solid var(--glass-border) !important;
    border-radius: var(--radius) !important;
    color: var(--text-1) !important;
    box-shadow: var(--shadow);
    transition: transform .12s ease, background .15s;
}
.fd-action-pill:hover { transform: translateY(-2px); background: var(--glass-strong) !important; }

/* ── Forms ─────────────────────────────────────────────────────────────────*/

/* Native <select> dropdown popup inherits color-scheme from the element */
@media (prefers-color-scheme: dark) {
    :root:not([data-theme=light]) .form-select,
    :root:not([data-theme=light]) select { color-scheme: dark; }
}
:root[data-theme=dark] .form-select,
:root[data-theme=dark] select { color-scheme: dark; }

.form-control, .form-select, textarea, .fd-field input, .fd-rota-time input, .fd-time-block {
    background: var(--field-bg) !important;
    border: .5px solid var(--field-border) !important;
    border-radius: var(--radius-sm) !important;
    color: var(--text-1) !important;
    transition: border-color .15s, box-shadow .15s;
}
.form-control::placeholder, textarea::placeholder { color: var(--text-3) !important; }
.form-control:focus, .form-select:focus, textarea:focus {
    border-color: var(--accent) !important;
    box-shadow: 0 0 0 3.5px var(--accent-tint) !important;
    background: var(--field-bg) !important; color: var(--text-1) !important;
}
.form-label, .fd-field label, label { color: var(--text-2); font-weight: 500; }
.form-check-input { border-color: var(--field-border); }
.form-check-input:checked { background-color: var(--accent); border-color: var(--accent); }
.form-check-input:focus { box-shadow: 0 0 0 3.5px var(--accent-tint); border-color: var(--accent); }

/* ── Tables ────────────────────────────────────────────────────────────────*/
.table { color: var(--text-1); --bs-table-bg: transparent; border-color: var(--hairline); }
.table > :not(caption) > * > * { background: transparent; border-bottom-color: var(--hairline-2); padding: .8rem .9rem; }
.table thead th, .table-light, .table-light th {
    background: transparent !important; color: var(--text-3) !important;
    font-weight: 600; font-size: .72rem; letter-spacing: .04em; text-transform: uppercase;
    border-bottom: .5px solid var(--hairline) !important;
}
.table-hover > tbody > tr:hover > * { background: var(--accent-tint-2) !important; }
.table-responsive { border-radius: var(--radius); }

/* Booking rows */
.booking-row { border-bottom: .5px solid var(--hairline-2); transition: background .15s; }
.booking-row:hover { background: var(--accent-tint-2); }
.booking-status { background: var(--field-bg); border: .5px solid var(--field-border); border-radius: 999px; color: var(--text-1); }

/* ── Badges / pills ────────────────────────────────────────────────────────*/
.badge { font-weight: 600; border-radius: 999px; padding: .35em .7em; letter-spacing: .01em; }
.bg-success-subtle { background: var(--ok-bg) !important; }
.text-success { color: var(--ok) !important; }
.bg-warning-subtle { background: var(--warn-bg) !important; }
.text-warning { color: var(--warn) !important; }
.bg-danger, .bg-danger-subtle { color: #fff; }
.bg-danger-subtle { background: var(--danger-bg) !important; }
.text-danger { color: var(--danger) !important; }
.bg-secondary-subtle { background: var(--hairline) !important; }
.text-secondary { color: var(--text-2) !important; }
.bg-light.text-dark.border, .badge.bg-light { background: var(--field-bg) !important; color: var(--text-2) !important; border-color: var(--hairline) !important; }

/* ── Alerts ────────────────────────────────────────────────────────────────*/
.alert { border-radius: var(--radius); border: .5px solid var(--hairline); backdrop-filter: var(--blur); }
.alert-success { background: var(--ok-bg) !important; color: var(--ok) !important; border-color: transparent !important; }
.alert-danger  { background: var(--danger-bg) !important; color: var(--danger) !important; border-color: transparent !important; }
.alert-warning { background: var(--warn-bg) !important; color: var(--warn) !important; border-color: transparent !important; }

/* ── Modals (Bootstrap + custom fd modals + booking edit) ─────────────────*/
/* Structural: .fd-modal is the full-screen container, NOT the card */
.fd-modal { position: fixed; inset: 0; z-index: 1000; display: flex; align-items: center; justify-content: center; padding: 1.25rem; }
.fd-modal.hidden, .hidden { display: none !important; }
.fd-modal-backdrop { position: absolute; inset: 0; }
.fd-modal-panel { position: relative; width: min(900px, 100%); max-height: calc(100vh - 2.5rem); overflow: hidden; display: flex; flex-direction: column; }
#bookingEditModal { -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px); }
/* Card look on the actual panels */
.modal-content, .fd-modal-panel, #bookingEditModal > div {
    background: var(--glass-strong) !important;
    -webkit-backdrop-filter: var(--blur); backdrop-filter: var(--blur);
    border: .5px solid var(--glass-border) !important;
    border-radius: var(--radius-lg) !important;
    box-shadow: var(--shadow-lg);
    color: var(--text-1);
}
.fd-modal-header { border-bottom: .5px solid var(--hairline) !important; flex-shrink: 0; padding: 1.25rem 1.5rem !important; }
.fd-modal-body { flex: 1 1 auto; overflow-y: auto; padding: 1.25rem 1.5rem; }
.fd-modal-footer { flex-shrink: 0; padding: 1rem 1.5rem !important; }
.modal-header { border-bottom: .5px solid var(--hairline) !important; }
.modal-footer { border-top: .5px solid var(--hairline) !important; }
.fd-modal-title { color: var(--text-1) !important; }
.fd-modal-title::after { content: none !important; }
.fd-modal-subtitle, .fd-modal-kicker { color: var(--text-3) !important; }
.fd-modal-backdrop, .fd-modal-overlay, .modal-backdrop { background: rgba(10,12,16,.50) !important; -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px); }
.fd-modal-close, .btn-close { color: var(--text-2) !important; opacity: .8; }

/* ── Service / time pickers (new booking) ─────────────────────────────────*/
.fd-service-option, .service-option, .service-item, .service-checkbox, .fd-choice, .fd-checkbox {
    background: var(--glass) !important;
    border: .5px solid var(--glass-border) !important;
    border-radius: var(--radius) !important;
    color: var(--text-1) !important;
}
.fd-service-option:hover, .service-option:hover, .service-item:hover, .service-checkbox:hover { background: var(--glass-strong) !important; }
.fd-service-option.is-selected, .service-option.is-selected, .service-item.is-selected, .service-checkbox.is-selected {
    background: var(--accent-tint) !important; border-color: var(--accent) !important; color: var(--accent-ink) !important;
}
.fd-time-block.is-active { background: var(--accent-tint) !important; border-color: var(--accent) !important; color: var(--accent-ink) !important; }

/* Booking summary side panel */
.fd-booking-summary, .fd-booking-summary-inner {
    background: var(--glass) !important; -webkit-backdrop-filter: var(--blur); backdrop-filter: var(--blur);
    border: .5px solid var(--glass-border) !important; border-radius: var(--radius-lg) !important;
    color: var(--text-1);
}
.fd-booking-summary-label, .fd-booking-summary-muted { color: var(--text-3) !important; }
.fd-booking-summary-value { color: var(--text-1) !important; }

/* Staff rota */
.fd-rota-grid, .fd-rota-row, .fd-rota-day {
    background: var(--glass) !important; border-color: var(--hairline) !important; color: var(--text-1);
    border-radius: var(--radius);
}

/* ── Mobile off-canvas menu (structural + glass) ──────────────────────────*/
.fd-mobile-overlay {
    position: fixed; inset: 0; z-index: 998;
    background: rgba(10,12,16,.45);
    -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px);
    opacity: 0; pointer-events: none; transition: opacity .2s ease;
}
.fd-mobile-overlay.is-open { opacity: 1; pointer-events: auto; }
.fd-mobile-menu {
    position: fixed; inset: 0 auto 0 0; z-index: 999;
    width: min(86vw, 340px); padding: 1rem; overflow-y: auto;
    transform: translateX(-105%); transition: transform .24s ease;
    background: var(--glass-strong) !important;
    -webkit-backdrop-filter: var(--blur); backdrop-filter: var(--blur);
    border-right: .5px solid var(--glass-border) !important;
}
.fd-mobile-menu.is-open { transform: translateX(0); }
body.fd-menu-active { overflow: hidden; }
.fd-menu-button {
    width: 40px; height: 40px; border-radius: 10px !important;
    background: var(--glass) !important; border: .5px solid var(--hairline) !important;
    color: var(--text-1) !important; font-size: 1.2rem; line-height: 1; margin-right: .6rem;
}
.fd-menu-close {
    width: 38px; height: 38px; border-radius: 10px !important;
    background: var(--hairline) !important; border: .5px solid var(--hairline) !important;
    color: var(--text-1) !important; font-size: 1.5rem; line-height: 1;
}

/* ── Responsive ───────────────────────────────────────────────────────────*/
@media (max-width: 991px) {
    html, body { overflow-x: hidden; }
    .fd-main { padding: 1rem !important; }
    h1, .fd-page-title { font-size: clamp(1.4rem, 7vw, 1.9rem) !important; }
}

/* ── FullCalendar ─────────────────────────────────────────────────────────*/
.fc { --fc-border-color: var(--hairline); --fc-today-bg-color: var(--accent-tint-2); --fc-page-bg-color: transparent; color: var(--text-1); }
.fc .fc-toolbar-title { color: var(--text-1); font-weight: 600; letter-spacing: -.015em; }
.fc .fc-col-header-cell-cushion, .fc .fc-daygrid-day-number, .fc .fc-timegrid-axis-cushion, .fc .fc-timegrid-slot-label-cushion { color: var(--text-2); text-decoration: none; }
.fc .fc-button-primary {
    background: var(--glass) !important; border: .5px solid var(--hairline) !important;
    color: var(--text-2) !important; border-radius: var(--radius-sm) !important; box-shadow: none !important;
    font-weight: 500; text-transform: capitalize;
}
.fc .fc-button-primary:hover { background: var(--hairline) !important; color: var(--text-1) !important; }
.fc .fc-button-primary.fc-button-active { background: var(--accent-tint) !important; color: var(--accent-ink) !important; border-color: var(--accent) !important; }
.fc-event, .fc .fc-event {
    background: var(--accent-tint) !important; border: .5px solid var(--accent) !important;
    color: var(--accent-ink) !important; border-radius: 7px !important; padding: 1px 4px;
}
.fc-theme-standard td, .fc-theme-standard th, .fc-scrollgrid { border-color: var(--hairline) !important; }

/* ── Utilities / misc ─────────────────────────────────────────────────────*/
hr { border-color: var(--hairline); opacity: 1; }
code, .font-monospace { font-family: ui-monospace, "SF Mono", Menlo, monospace; }
.dropdown-menu { background: var(--glass-strong); -webkit-backdrop-filter: var(--blur); backdrop-filter: var(--blur); border: .5px solid var(--glass-border); border-radius: var(--radius); box-shadow: var(--shadow-lg); }
.dropdown-item { color: var(--text-1); }
.dropdown-item:hover { background: var(--accent-tint); color: var(--accent-ink); }
.list-group-item { background: transparent; border-color: var(--hairline-2); color: var(--text-1); }

.fd-body-row { min-height: calc(100vh - 56px); }

.bc-brand-dark body, body.bc-brand-dark { background: #f0f0f2 !important; }

/* ── Icon rail (desktop) — Stage B ─────────────────────────────────────────*/
.bc-rail {
    width: 60px; flex: 0 0 60px;
    background: var(--glass-strong);
    -webkit-backdrop-filter: var(--blur); backdrop-filter: var(--blur);
    border-right: .5px solid var(--hairline);
    height: calc(100vh - 60px); position: sticky; top: 60px;
    flex-direction: column; align-items: center;
    padding: 14px 0; gap: 6px; z-index: 20;
}
.bc-rail-logo { display: flex; align-items: center; justify-content: center; margin-bottom: 12px; }
.bc-rail-logo img { width: 34px; height: 34px; object-fit: contain; border-radius: 8px; }
.bc-rail-items { display: flex; flex-direction: column; align-items: center; gap: 6px; width: 100%; flex: 1; }
.bc-rail-item { position: relative; width: 100%; display: flex; justify-content: center; }
.bc-rail-item-foot { margin-top: auto; }
.bc-rail-btn {
    width: 40px; height: 40px; border: 0; background: transparent;
    border-radius: var(--radius-sm); color: var(--text-3);
    display: flex; align-items: center; justify-content: center; font-size: 19px;
    cursor: pointer; transition: background .15s, color .15s;
}
.bc-rail-btn:hover { background: var(--accent-tint-2); color: var(--accent-ink); }
.bc-rail-item.has-active .bc-rail-btn { background: var(--accent-tint); color: var(--accent-ink); }
.bc-rail-flyout {
    position: absolute; left: 52px; top: -6px;
    min-width: 186px; background: var(--glass-strong);
    -webkit-backdrop-filter: var(--blur); backdrop-filter: var(--blur);
    border: .5px solid var(--hairline); border-radius: var(--radius);
    box-shadow: var(--shadow-lg); padding: 8px;
    opacity: 0; visibility: hidden; transform: translateX(-4px);
    transition: opacity .14s, transform .14s, visibility .14s; z-index: 60;
}
.bc-rail-item:hover .bc-rail-flyout { opacity: 1; visibility: visible; transform: translateX(0); }
.bc-flyout-title { font-size: .62rem; font-weight: 600; letter-spacing: .12em; text-transform: uppercase; color: var(--text-3); padding: 4px 10px 8px; }
.bc-rail-flyout .nav-link {
    color: var(--text-2) !important; border-radius: var(--radius-sm);
    font-weight: 500; font-size: .9rem; padding: .5rem .7rem; margin-bottom: .08rem;
    display: flex; align-items: center; justify-content: space-between;
}
.bc-rail-flyout .nav-link:hover { background: var(--hairline-2); color: var(--text-1) !important; }
.bc-rail-flyout .nav-link.active { background: var(--accent-tint); color: var(--accent-ink) !important; }

/* Left-aligned topbar brand (replaces the centred logo) */
.bc-topbar-brand { font-family: var(--display); font-weight: 500; font-size: 1.15rem; letter-spacing: -.01em; color: var(--bc-topbar-text, var(--text-1)) !important; line-height: 1; }

/* Dark-brand tenants: keep the rail chrome dark + coherent with the topbar */
.bc-brand-dark .bc-rail { background: var(--bc-topbar-bg, #1C1B19) !important; border-right: 1px solid rgba(255,255,255,.07) !important; }
.bc-brand-dark .bc-rail-btn { color: rgba(255,255,255,.58); }
.bc-brand-dark .bc-rail-btn:hover { background: rgba(255,255,255,.08); color: #fff; }
.bc-brand-dark .bc-rail-item.has-active .bc-rail-btn { background: var(--bc-primary, var(--accent)); color: #fff; }

/* Rail logo must stay a tidy square mark (never a stretched wordmark) */
.bc-rail-logo { overflow: hidden; }
.bc-rail-logo img { width: 34px !important; height: 34px !important; object-fit: contain; border-radius: 8px; }

/* Bottom-pinned rail item (Settings): open its flyout upward, not off-screen */
.bc-rail-item-foot .bc-rail-flyout { top: auto; bottom: -6px; }

/* ── Dashboard stat row (hairline-divided, calm) ───────────────────────────*/
.bc-stat-row {
    display: grid; grid-template-columns: repeat(6, 1fr);
    border-top: .5px solid var(--hairline); border-bottom: .5px solid var(--hairline);
}
.bc-stat {
    padding: 16px 20px; border-right: .5px solid var(--hairline-2);
    text-decoration: none; display: block; transition: background .15s;
}
.bc-stat:last-child { border-right: 0; }
a.bc-stat:hover { background: var(--hairline-2); }
.bc-stat-label { font-size: .7rem; letter-spacing: .06em; text-transform: uppercase; color: var(--text-3); }
.bc-stat-value { font-family: var(--display); font-size: 1.5rem; font-weight: 400; color: var(--text-1); margin-top: 7px; line-height: 1.1; }
.bc-stat-sub { font-size: .76rem; color: var(--text-3); margin-top: 4px; }
@media (max-width: 991px) { .bc-stat-row { grid-template-columns: repeat(3, 1fr); } .bc-stat:nth-child(3n){border-right:0;} }
@media (max-width: 575px) { .bc-stat-row { grid-template-columns: repeat(2, 1fr); } .bc-stat:nth-child(3n){border-right:.5px solid var(--hairline-2);} .bc-stat:nth-child(2n){border-right:0;} }

/* Flatter, premium primary button (drop the coloured glow) */
.btn-primary, .fd-smart-create-btn.is-ready { box-shadow: none !important; border-radius: var(--radius-sm) !important; font-weight: 500 !important; }
.btn-primary:hover, .fd-smart-create-btn.is-ready:hover { box-shadow: 0 2px 8px rgba(var(--accent-rgb), .16) !important; }
/* Topbar actions: tidy, intentional */
.fd-topbar .btn { border-radius: var(--radius-sm) !important; font-weight: 500; }
.bc-theme-toggle { border: .5px solid var(--hairline) !important; }

/* ── Targeted polish: theme toggle, topbar buttons, support bubble ─────────*/
/* Theme toggle → quiet ghost icon (was reading as a broken avatar disc) */
.bc-theme-toggle { background: transparent !important; border: 1px solid var(--hairline) !important; width: 34px; height: 34px; }
.bc-theme-toggle:hover { background: var(--accent-tint) !important; }
.bc-brand-dark .bc-theme-toggle { border-color: rgba(255,255,255,0.16) !important; color: rgba(255,255,255,0.72) !important; }
.bc-brand-dark .bc-theme-toggle:hover { background: rgba(255,255,255,0.08) !important; }

/* Topbar buttons → one consistent, intentional set */
.fd-topbar .btn { border-radius: var(--radius-sm) !important; font-weight: 500 !important; font-size: .85rem !important; padding: .42rem .95rem !important; }
.bc-brand-dark .fd-topbar .btn-outline-secondary { background: transparent !important; border-color: rgba(255,255,255,0.18) !important; color: rgba(255,255,255,0.72) !important; }
.bc-brand-dark .fd-topbar .btn-outline-secondary:hover { background: rgba(255,255,255,0.08) !important; color: #fff !important; }

/* Support bubble → smaller, softer, sits quietly */
#bc-support-btn { width: 46px !important; height: 46px !important; box-shadow: 0 6px 20px rgba(28,27,25,0.26) !important; }
#bc-support-btn svg { width: 22px !important; height: 22px !important; }

/* Designed create button (icon + label, subtle lift) + icon-only logout */
.bc-btn-create { display: inline-flex; align-items: center; gap: 7px; letter-spacing: .005em; }
.bc-btn-create i { font-size: .95rem; line-height: 0; }
.bc-btn-create:hover { transform: translateY(-1px); }
.bc-btn-icon { display: inline-flex !important; align-items: center; justify-content: center; width: 34px; height: 34px; padding: 0 !important; }
.bc-btn-icon i { font-size: 1rem; line-height: 0; }

/* ── Hybrid create control (underline + split dropdown) ────────────────────*/
.bc-create { display: inline-flex; align-items: center; gap: 9px; padding: 6px 4px 8px; border-bottom: 2px solid var(--accent); }
.bc-create:hover { border-bottom-color: color-mix(in srgb, var(--accent), #fff 18%); }
.bc-create-main { display: inline-flex; align-items: center; gap: 9px; text-decoration: none; color: inherit !important; }
.bc-create-main:hover { text-decoration: none; }
.bc-create-tile { width: 24px; height: 24px; border-radius: 7px; background: var(--accent); display: inline-flex; align-items: center; justify-content: center; color: #fff !important; transition: background .15s; }
.bc-create:hover .bc-create-tile { background: color-mix(in srgb, var(--accent), #fff 16%); }
.bc-create-tile i { font-size: .8rem; line-height: 0; }
.bc-create-label { font-size: .9rem; font-weight: 500; }
.bc-create-div { width: 1px; height: 16px; background: var(--hairline); }
.bc-brand-dark .bc-create-div { background: rgba(255,255,255,.2); }
.bc-create-toggle { background: transparent; border: 0; color: inherit; cursor: pointer; padding: 2px; display: inline-flex; align-items: center; opacity: .65; transition: opacity .15s; }
.bc-create-toggle:hover { opacity: 1; }
.bc-create-toggle i { font-size: .82rem; line-height: 0; }
/* Dark dropdown, matched to the control */
.bc-create-menu { background: #1C1C1E; border: 1px solid rgba(255,255,255,.1); border-radius: 11px; box-shadow: 0 16px 44px rgba(0,0,0,.45); padding: 6px; min-width: 196px; margin-top: 8px; }
.bc-create-menu .dropdown-item { color: rgba(244,241,234,.85); border-radius: 7px; padding: 9px 11px; font-size: .85rem; display: flex; align-items: center; gap: 10px; }
.bc-create-menu .dropdown-item i { font-size: 1rem; color: var(--accent); }
.bc-create-menu .dropdown-item:hover, .bc-create-menu .dropdown-item:focus { background: rgba(139,168,144,.14); color: #fff; }

/* ── Topbar right cluster: even spacing, equal sizes, centred ──────────────*/
.fd-topbar .ms-auto.d-flex { gap: 12px !important; align-items: center !important; }
.fd-topbar .ms-auto .small { margin: 0 2px; }                 /* user name breathing room */
.bc-theme-toggle, .fd-topbar .bc-btn-icon { width: 34px !important; height: 34px !important; flex: 0 0 34px; }
.bc-create { align-self: center; line-height: 1; }            /* sit centred despite underline */
.bc-create-label { line-height: 1; }
/* thin separators so the groups read as: [toggle · name] | [create] | [logout] */
.fd-topbar .ms-auto .bc-create { margin-left: 2px; }

/* ── Form pages: constrained width, sections, designed service rows ────────*/
.bc-form-wrap { max-width: 820px; margin: 0 auto; }
.bc-form-section { margin-bottom: 1.6rem; }
.bc-form-section + .bc-form-section { border-top: .5px solid var(--hairline); padding-top: 1.5rem; }
.bc-section-label { font-size: .7rem; letter-spacing: .1em; text-transform: uppercase; color: var(--text-3); font-weight: 600; margin-bottom: .9rem; }
.bc-service-list { border: .5px solid var(--hairline); border-radius: var(--radius); overflow: hidden; max-height: 360px; overflow-y: auto; background: var(--field-bg); }
.bc-service { display: flex; align-items: center; gap: 12px; padding: 11px 14px; margin: 0; cursor: pointer; border-top: .5px solid var(--hairline-2); transition: background .12s; }
.bc-service:first-child { border-top: 0; }
.bc-service:hover { background: var(--hairline-2); }
.bc-service:has(input:checked) { background: var(--accent-tint); }
.bc-service .service-checkbox { margin: 0; flex: 0 0 auto; }
.bc-service-name { flex: 1; font-weight: 500; color: var(--text-1); }
.bc-service-meta { font-size: .8rem; color: var(--text-3); white-space: nowrap; }
.bc-service-price { font-family: var(--display); font-size: 1rem; color: var(--text-1); min-width: 64px; text-align: right; }

/* ── Theme-aware alerts (stop Bootstrap pastels breaking dark mode) ────────*/
.alert { border: .5px solid var(--hairline) !important; border-radius: var(--radius) !important; }
.alert-info    { background: var(--accent-tint-2) !important; color: var(--text-1) !important; }
.alert-success { background: var(--ok-bg) !important;    color: var(--text-1) !important; border-color: color-mix(in srgb, var(--ok), transparent 70%) !important; }
.alert-warning { background: var(--warn-bg) !important;  color: var(--text-1) !important; border-color: color-mix(in srgb, var(--warn), transparent 70%) !important; }
.alert-danger  { background: var(--danger-bg) !important; color: var(--text-1) !important; border-color: color-mix(in srgb, var(--danger), transparent 65%) !important; }
.alert .text-danger { color: var(--danger) !important; }
/* Bootstrap badges used in lists adapt too */
.badge.bg-warning { background: var(--warn) !important; color: #fff !important; }
.badge.bg-danger  { background: var(--danger) !important; }
.badge.bg-dark    { background: var(--hairline) !important; color: var(--text-1) !important; border: .5px solid var(--hairline); font-weight: 500; }
.badge.bg-secondary { background: var(--hairline) !important; color: var(--text-2) !important; }
/* Legacy hardcoded amber/gold eyebrows → brand green, lighter weight */
[style*="#ffd43b"], [style*="#D4A030"], [style*="#ffc107"] { color: var(--accent-ink) !important; font-weight: 600 !important; }
/* form-check inputs: accent colour + visible in dark */
.form-check-input:checked { background-color: var(--accent) !important; border-color: var(--accent) !important; }

/* ── Legacy hardcoded-white surfaces → dark panel + light text ─────────────*/
/* (img/canvas/svg excluded so signature pad & product images stay on white) */
[style*="background:#fff"]:not(img):not(canvas):not(svg),
[style*="background: #fff"]:not(img):not(canvas):not(svg),
[style*="background:#ffffff"]:not(img):not(canvas):not(svg),
[style*="background:#FFFFFF"]:not(img):not(canvas):not(svg),
[style*="background:white"]:not(img):not(canvas):not(svg),
[style*="background: white"]:not(img):not(canvas):not(svg),
[style*="background:#fff5fb"]:not(img):not(canvas):not(svg) {
    background: var(--glass) !important; color: var(--text-1) !important; border-color: var(--hairline) !important;
}
.bg-white, .bg-light, .card-header.bg-white { background: var(--glass) !important; color: var(--text-1) !important; }
/* legacy Tailwind greys → theme tokens */
.border-gray-200, .border-gray-300 { border-color: var(--hairline) !important; }
.text-gray-500, .text-gray-600, .text-gray-700 { color: var(--text-2) !important; }
.text-gray-800, .text-gray-900, .text-black { color: var(--text-1) !important; }
/* slightly stronger muted text so secondary labels aren't too faint on light cards */
.bc-service-meta { color: var(--text-2); }

/* ── Native control popups (select options, date/time pickers) follow theme ─*/
/* Without this, forcing dark mode on a light OS leaves <select> popups white. */
:root[data-theme="dark"] { color-scheme: dark; }
:root[data-theme="light"] { color-scheme: light; }
@media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) { color-scheme: dark; } }
@media (prefers-color-scheme: light) { :root:not([data-theme="dark"]) { color-scheme: light; } }
:root[data-theme="dark"] select, :root[data-theme="dark"] option,
:root[data-theme="dark"] input { color-scheme: dark; }

/* ── Bootstrap tables: adapt to theme (Bootstrap hardcodes near-black text) ─*/
.table {
    --bs-table-color: var(--text-1);
    --bs-table-bg: transparent;
    --bs-table-striped-color: var(--text-1);
    --bs-table-striped-bg: var(--hairline-2);
    --bs-table-hover-color: var(--text-1);
    --bs-table-hover-bg: var(--hairline-2);
    --bs-table-active-color: var(--text-1);
    --bs-table-active-bg: var(--accent-tint);
    --bs-table-border-color: var(--hairline);
    color: var(--text-1);
    border-color: var(--hairline);
}
.table > :not(caption) > * > * {
    color: var(--text-1);
    border-color: var(--hairline);
    background-color: transparent;
}
.table thead th, .table > thead > tr > th {
    color: var(--text-3);
    font-weight: 600;
    font-size: .72rem;
    letter-spacing: .04em;
    text-transform: uppercase;
    border-color: var(--hairline) !important;
}
.table .text-muted { color: var(--text-3) !important; }
