
        /* ── Custom Booking Modal ── */
        #cbm-app { font-family: var(--default-font); color: var(--text-color); }
        .cbm-header { text-align:center; padding:28px 20px 0; }
        .cbm-header h2 { font-family:var(--accent-font); font-size:28px; font-weight:600; color:var(--primary-color); margin:0; }

        /* Week nav */
        .cbm-week-nav { display:flex; align-items:center; justify-content:center; gap:16px; padding:16px 20px 12px; }
        .cbm-week-nav button { background:var(--primary-color); color:#fff; border:none; width:38px; height:38px; border-radius:50%; cursor:pointer; font-size:16px; transition:.3s; }
        .cbm-week-nav button:hover { background:var(--accent-color); }
        .cbm-week-label { font-family:var(--accent-font); font-size:17px; font-weight:500; min-width:220px; text-align:center; }

        /* View toggle */
        .cbm-view-toggle { display:flex; align-items:center; justify-content:center; gap:4px; padding:0 20px 10px; }
        .cbm-view-btn { background:#fff; border:1px solid var(--divider-color); color:var(--text-color); width:34px; height:34px; border-radius:6px; cursor:pointer; font-size:14px; transition:.3s; display:flex; align-items:center; justify-content:center; }
        .cbm-view-btn.active { background:var(--primary-color); color:#fff; border-color:var(--primary-color); }
        .cbm-view-btn:hover:not(.active) { border-color:var(--accent-color); color:var(--accent-color); }

        /* Filters */
        .cbm-filters { display:flex; flex-wrap:wrap; gap:6px; justify-content:center; padding:0 20px 16px; }
        .cbm-filter { padding:6px 14px; border-radius:20px; border:1px solid var(--divider-color); background:#fff; font-size:12px; cursor:pointer; transition:.3s; color:var(--text-color); font-family:var(--default-font); }
        .cbm-filter.active, .cbm-filter:hover { background:var(--primary-color); color:#fff; border-color:var(--primary-color); }

        /* Calendar grid (vertical) */
        .cbm-grid { display:grid; grid-template-columns:repeat(7,1fr); gap:2px; padding:0 16px 16px; max-height:60vh; overflow-y:auto; }
        .cbm-day { background:#fff; border-radius:10px; min-height:160px; overflow:hidden; }
        .cbm-day-head { background:var(--primary-color); color:#fff; padding:10px 6px; text-align:center; font-family:var(--accent-font); font-size:13px; }
        .cbm-day-head.today { background:var(--accent-color); }
        .cbm-day-head .dn { display:block; font-size:11px; opacity:.7; text-transform:uppercase; }
        .cbm-day-head .dd { display:block; font-size:18px; margin-top:2px; }
        .cbm-day-body { padding:4px; }

        /* Timetable (horizontal) */
        .cbm-tt-wrap { overflow-x:auto; padding:0 16px 16px; max-height:60vh; }
        .cbm-tt { width:100%; border-collapse:separate; border-spacing:2px; table-layout:fixed; }
        .cbm-tt th { background:var(--primary-color); color:#fff; padding:8px 4px; text-align:center; font-family:var(--accent-font); font-size:12px; font-weight:500; border-radius:6px 6px 0 0; vertical-align:middle; min-width:100px; }
        .cbm-tt th.tt-corner { background:transparent; min-width:70px; width:70px; }
        .cbm-tt td { vertical-align:top; padding:2px; background:#fff; border-radius:4px; }
        .cbm-tt td.tt-day { background:var(--primary-color); color:#fff; text-align:center; font-family:var(--accent-font); font-size:12px; font-weight:500; padding:8px 6px; border-radius:6px 0 0 6px; vertical-align:middle; white-space:nowrap; }
        .cbm-tt td.tt-day.today { background:var(--accent-color); }
        .cbm-tt td.tt-day small { display:block; font-size:10px; opacity:.7; }

        /* Class card */
        .cbm-card { padding:8px; margin-bottom:4px; border-radius:6px; cursor:pointer; transition:.25s; border:1px solid var(--divider-color); background:var(--secondary-color); }
        .cbm-card:hover { border-color:var(--accent-color); transform:translateY(-1px); box-shadow:0 3px 10px rgba(0,0,0,.07); }
        .cbm-card.full { opacity:.45; cursor:default; }
        .cbm-card .ct { font-size:11px; font-weight:600; color:var(--primary-color); }
        .cbm-card .cn { font-size:12px; font-weight:500; margin:3px 0 1px; line-height:1.3; }
        .cbm-card .ci { font-size:10px; color:#888; }
        .cbm-card .cs { font-size:10px; margin-top:3px; }
        .cbm-card .cs.few { color:var(--error-color); }
        .cbm-card .cs.ok { color:var(--accent-color); }
        .cbm-tt .cbm-card .ct { display:none; }

        /* Color coding */
        .cbm-card[data-t="pilates"] { border-left:3px solid var(--accent-color); }
        .cbm-card[data-t="reformer"] { border-left:3px solid var(--color-beige); }
        .cbm-card[data-t="barre"] { border-left:3px solid var(--color-blue-gray); }
        .cbm-card[data-t="yoga"] { border-left:3px solid #C4A882; }
        .cbm-card[data-t="body"] { border-left:3px solid var(--color-olive-gray); }

        /* Booking view */
        .cbm-booking { padding:28px 32px; max-width:480px; margin:0 auto; }
        .cbm-booking h3 { font-family:var(--accent-font); font-size:22px; color:var(--primary-color); margin:0 0 4px; }
        .cbm-back { background:none; border:none; font-size:14px; cursor:pointer; color:var(--accent-color); padding:0; margin-bottom:16px; display:inline-flex; align-items:center; gap:6px; }
        .cbm-back:hover { color:var(--primary-color); }
        .cbm-detail { padding:14px; background:var(--secondary-color); border-radius:10px; margin:14px 0 20px; }
        .cbm-detail p { margin:3px 0; font-size:13px; line-height:1.5; }
        .cbm-detail .lb { font-weight:600; color:var(--primary-color); }
        .cbm-fg { margin-bottom:14px; }
        .cbm-fg label { display:block; font-size:12px; font-weight:500; margin-bottom:5px; color:var(--primary-color); }
        .cbm-fg input { width:100%; padding:10px 14px; border:1px solid var(--divider-color); border-radius:8px; font-family:var(--default-font); font-size:13px; transition:.3s; box-sizing:border-box; }
        .cbm-fg input:focus { outline:none; border-color:var(--accent-color); }
        .cbm-submit { width:100%; padding:13px; background:var(--primary-color); color:#fff; border:none; border-radius:8px; font-family:var(--accent-font); font-size:15px; font-weight:500; cursor:pointer; transition:.3s; }
        .cbm-submit:hover { background:var(--accent-color); }
        .cbm-submit:disabled { opacity:.5; cursor:not-allowed; }
        .cbm-err { color:var(--error-color); font-size:12px; margin-top:6px; }
        .cbm-ok { text-align:center; padding:24px 0; }
        .cbm-ok i { font-size:48px; color:var(--accent-color); margin-bottom:12px; }
        .cbm-ok h4 { font-family:var(--accent-font); font-size:20px; margin-bottom:6px; }
        .cbm-spinner { text-align:center; padding:50px 0; color:var(--primary-color); }
        .cbm-spinner i { font-size:28px; animation:cbm-spin 1s linear infinite; }
        @keyframes cbm-spin { to { transform:rotate(360deg); } }
        .cbm-empty { text-align:center; font-size:11px; color:#bbb; padding:16px 0; }

        /* Responsive */
        @media(max-width:991px) {
            .cbm-grid { grid-template-columns:repeat(3,1fr); max-height:55vh; }
            .cbm-header h2 { font-size:22px; }
        }
        @media(max-width:575px) {
            .cbm-grid { grid-template-columns:1fr 1fr; max-height:50vh; }
            .cbm-booking { padding:20px 16px; }
            .cbm-week-label { font-size:14px; min-width:180px; }
        }
    