/* ── Variables ────────────────────────────────────────────────────── */
:root {
    --qb-blue:#1a56db; --qb-blue-dark:#1e40af; --qb-blue-light:#eff6ff;
    --qb-blue-ring:rgba(26,86,219,.35);
    --qb-red:#dc2626; --qb-red-dark:#b91c1c; --qb-red-light:#fef2f2;
    --qb-red-ring:rgba(220,38,38,.35);
    --qb-ghost-bg:#f1f5f9; --qb-ghost-bdr:#e2e8f0; --qb-ghost-hover:#e2e8f0;
    --qb-text:#1e293b; --qb-muted:#64748b; --qb-border:#e2e8f0;
    --qb-surface:#f8fafc; --qb-radius:10px;
    /* Button vars — overridable from admin */
    --qb-btn-p-bg:#1a56db; --qb-btn-p-color:#fff; --qb-btn-p-border:#1a56db;
    --qb-btn-p-hover-bg:#1e40af; --qb-btn-p-hover-bdr:#1e40af;
    --qb-btn-g-bg:#f1f5f9; --qb-btn-g-color:#475569; --qb-btn-g-border:#e2e8f0;
    --qb-btn-g-hover-bg:#e2e8f0; --qb-btn-g-hover-color:#1e293b;
    /* Status pill vars */
    --qb-st-scheduled-bg:#eff6ff; --qb-st-scheduled-color:#1d4ed8; --qb-st-scheduled-bdr:#bfdbfe;
    --qb-st-completed-bg:#f0fdf4; --qb-st-completed-color:#15803d; --qb-st-completed-bdr:#bbf7d0;
    --qb-st-cancelled-bg:#fef2f2; --qb-st-cancelled-color:#b91c1c; --qb-st-cancelled-bdr:#fecaca;
    --qb-st-pending-bg:#fffbeb;   --qb-st-pending-color:#b45309;   --qb-st-pending-bdr:#fde68a;
    --qb-st-reserved-bg:#fefce8;  --qb-st-reserved-color:#854d0e;  --qb-st-reserved-bdr:#fde68a;
    --qb-st-grace-bg:#fef3c7;     --qb-st-grace-color:#92400e;     --qb-st-grace-bdr:#f59e0b;
    /* Type pill vars */
    --qb-ty-regular-bg:#f8fafc;    --qb-ty-regular-color:#475569;    --qb-ty-regular-bdr:#cbd5e1;
    --qb-ty-makeup-bg:#fdf4ff;     --qb-ty-makeup-color:#7e22ce;     --qb-ty-makeup-bdr:#e9d5ff;
    --qb-ty-rescheduled-bg:#f0f9ff;--qb-ty-rescheduled-color:#0369a1;--qb-ty-rescheduled-bdr:#bae6fd;
    --qb-ty-trial-bg:#ecfdf5;      --qb-ty-trial-color:#065f46;      --qb-ty-trial-bdr:#6ee7b7;
}

/* ── Base ─────────────────────────────────────────────────────────── */
.qb-form, .qb-dashboard {
    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
    color: var(--qb-text);
}

/* ── Buttons ──────────────────────────────────────────────────────── */
.qb-btn {
    display: inline-flex; align-items: center; justify-content: center;
    padding: .6rem 1.35rem;
    border-radius: 8px; border: none;
    font-size: .9rem; font-weight: 600; cursor: pointer;
    transition: background .14s, box-shadow .14s, opacity .14s;
    white-space: nowrap; text-decoration: none;
    outline: none;
}
.qb-btn:disabled { opacity: .55; cursor: not-allowed; pointer-events: none; }
.qb-btn:focus-visible { box-shadow: 0 0 0 3px var(--qb-blue-ring); }

/* Primary */
.qb-btn--primary               { background:var(--qb-btn-p-bg); color:var(--qb-btn-p-color); border:1.5px solid var(--qb-btn-p-border); }
.qb-btn--primary:hover         { background:var(--qb-btn-p-hover-bg); border-color:var(--qb-btn-p-hover-bdr); }
.qb-btn--primary:active        { opacity:.88; }
.qb-btn--primary:focus-visible { box-shadow:0 0 0 3px var(--qb-blue-ring); }

/* Join Classroom — green, prominent */
.qb-btn--join               { display:inline-flex;align-items:center;gap:6px;padding:8px 16px;border-radius:8px;font-size:13px;font-weight:700;cursor:pointer;text-decoration:none;background:#059669;color:#fff;border:1.5px solid #047857;transition:background .15s; }
.qb-btn--join:hover         { background:#047857; color:#fff; }
.qb-btn--join:active        { opacity:.88; }
.qb-btn--join:focus-visible { box-shadow:0 0 0 3px rgba(5,150,105,.35); }

/* Ghost */
.qb-btn--ghost               { background:var(--qb-btn-g-bg); color:var(--qb-btn-g-color); border:1.5px solid var(--qb-btn-g-border); }
.qb-btn--ghost:hover         { background:var(--qb-btn-g-hover-bg); color:var(--qb-btn-g-hover-color); }
.qb-btn--ghost:active        { opacity:.88; }
.qb-btn--ghost:focus-visible { box-shadow:0 0 0 3px var(--qb-blue-ring); }

/* Danger */
.qb-btn--danger             { background: var(--qb-red); color: #fff; }
.qb-btn--danger:hover       { background: var(--qb-red-dark); }
.qb-btn--danger:active      { background: #991b1b; }
.qb-btn--danger:focus-visible { box-shadow: 0 0 0 3px var(--qb-red-ring); }

/* ── Modal overlay ────────────────────────────────────────────────── */
.qb-modal-overlay {
    position: fixed; inset: 0;
    background: rgba(15,23,42,.6);
    z-index: 99998;
    display: flex; align-items: center; justify-content: center;
    padding: 16px;
}
body.qb-modal-open { overflow: hidden; }

.qb-modal-box {
    background: #fff; border-radius: 16px;
    width: 100%; max-width: 700px; max-height: 90vh; overflow-y: auto;
    padding: 2rem 2rem 2.5rem; position: relative;
    box-shadow: 0 32px 80px rgba(0,0,0,.22);
    animation: qb-slide-up .2s ease;
}
.qb-modal-box--sm { max-width: 500px; }

@keyframes qb-slide-up {
    from { opacity:0; transform:translateY(18px); }
    to   { opacity:1; transform:translateY(0); }
}

.qb-modal-close {
    position: absolute; top: 14px; right: 16px;
    background: none; border: none; border-radius: 6px;
    font-size: 1.5rem; line-height: 1; color: #94a3b8;
    cursor: pointer; padding: 4px 8px; z-index: 2;
    transition: background .12s, color .12s;
}
.qb-modal-close:hover        { background: var(--qb-surface); color: #475569; }
.qb-modal-close:focus-visible { outline: none; box-shadow: 0 0 0 3px var(--qb-blue-ring); }

/* ── Modal content ────────────────────────────────────────────────── */
.qb-modal-title    { font-size: 1.2rem; font-weight: 700; color: #0f172a; margin: 0 0 .3rem; padding-right: 2rem; }
.qb-modal-subtitle { font-size: .9rem; color: var(--qb-muted); margin: 0 0 1.25rem; }
.qb-modal-note     { font-size: .82rem; color: #3b82f6; background: #eff6ff; border-radius: 6px; padding: .4rem .7rem; margin: 0 0 1rem; }
.qb-modal-icon     { font-size: 2.4rem; margin-bottom: .5rem; line-height: 1; }
.qb-modal-icon--warn { color: #f59e0b; }
.qb-modal-actions  { display: flex; gap: .6rem; justify-content: flex-end; margin-top: 1.5rem; flex-wrap: wrap; }
.qb-cancel-detail  { background: var(--qb-surface); border: 1px solid var(--qb-border); border-radius: var(--qb-radius); padding: .75rem 1rem; margin-bottom: 1rem; font-size: .875rem; }
.qb-cancel-detail p { margin: .2rem 0; }
.qb-cancel-note    { font-size: .82rem; color: #94a3b8; }

/* ── Form fields ──────────────────────────────────────────────────── */
.qb-field  { margin-bottom: 1.1rem; }
.qb-label  { display: block; font-size: .78rem; font-weight: 700; color: #475569; text-transform: uppercase; letter-spacing: .05em; margin-bottom: .45rem; }
.qb-optional { font-weight: 400; text-transform: none; color: #94a3b8; }

.qb-input, .qb-textarea, .qb-select {
    width: 100%; padding: .6rem .85rem;
    border: 1.5px solid var(--qb-border); border-radius: 8px;
    font-size: .9rem; color: var(--qb-text); background: var(--qb-surface);
    box-sizing: border-box; transition: border-color .12s, box-shadow .12s;
    outline: none;
}
.qb-input:hover, .qb-textarea:hover, .qb-select:hover { border-color: #93c5fd; }
.qb-input:focus, .qb-textarea:focus, .qb-select:focus  { border-color: var(--qb-blue); background: #fff; box-shadow: 0 0 0 3px var(--qb-blue-ring); }
.qb-textarea { resize: vertical; min-height: 80px; }

/* Flatpickr */
.flatpickr-calendar { font-family: inherit; border-radius: 12px !important; box-shadow: 0 8px 32px rgba(0,0,0,.14) !important; }
.flatpickr-day.selected, .flatpickr-day.selected:hover { background: var(--qb-blue) !important; border-color: var(--qb-blue) !important; }
.flatpickr-day:hover { background: var(--qb-blue-light) !important; }

/* ── Attendance options ───────────────────────────────────────────── */
.qb-att-info { background: var(--qb-surface); border: 1px solid var(--qb-border); border-radius: var(--qb-radius); padding: .75rem 1rem; margin-bottom: 1.1rem; font-size: .875rem; }
.qb-att-info p { margin: .2rem 0; }
.qb-att-options { display: flex; flex-direction: column; gap: .4rem; }
.qb-att-option  { display: flex; align-items: flex-start; gap: .75rem; padding: .65rem .9rem; border: 2px solid var(--qb-border); border-radius: var(--qb-radius); background: var(--qb-surface); cursor: pointer; transition: border-color .12s, background .12s; }
.qb-att-option:hover { border-color: #93c5fd; background: #f0f7ff; }
.qb-att-option.qb-att-selected { border-color: var(--qb-blue); background: var(--qb-blue-light); }
.qb-att-option input[type="radio"] { margin-top: 2px; accent-color: var(--qb-blue); flex-shrink: 0; }
.qb-att-label { font-weight: 600; font-size: .9rem; display: block; }
.qb-att-desc  { font-size: .78rem; color: var(--qb-muted); display: block; margin-top: 1px; }

/* ── Booking form ─────────────────────────────────────────────────── */
.qb-form__title { font-size: 1.3rem; font-weight: 700; color: var(--qb-blue); margin: 0 0 1.5rem; padding-right: 2rem; }
.qb-step   { margin-bottom: 1.75rem; }
.qb-step h4 { font-size: .78rem; font-weight: 700; color: #94a3b8; text-transform: uppercase; letter-spacing: .07em; margin: 0 0 .75rem; }

/* Duration buttons */
.qb-dur-group { display: flex; gap: .7rem; flex-wrap: wrap; }
.qb-dur-btn {
    display: flex; flex-direction: column; align-items: center;
    padding: .7rem 1.3rem; min-width: 126px;
    border: 2px solid var(--qb-border); border-radius: var(--qb-radius);
    background: var(--qb-surface); color: var(--qb-text);
    cursor: pointer; transition: border-color .12s, background .12s, box-shadow .12s;
    outline: none;
}
.qb-dur-btn:hover        { border-color: #93c5fd; background: #f0f7ff; }
.qb-dur-btn:focus-visible { box-shadow: 0 0 0 3px var(--qb-blue-ring); }
.qb-dur-btn.qb-active    { border-color: var(--qb-blue); background: var(--qb-blue-light); color: var(--qb-blue); }
.qb-dur-btn strong { font-size: .95rem; display: block; }
.qb-dur-btn span   { font-size: .76rem; color: var(--qb-muted); margin-top: 2px; }
.qb-dur-btn.qb-active span { color: #3b82f6; }

/* ── Week date grid (reschedule / makeup modals) ─────────────────── */
.qb-week-grid-wrap { display: flex; flex-direction: column; gap: .5rem; }

/* Navigation bar: ← date range → */
.qb-week-nav {
    display: flex; align-items: center; justify-content: space-between;
    gap: .5rem; padding: .3rem 0;
}
.qb-week-range {
    font-size: .82rem; font-weight: 600; color: var(--qb-text);
    text-align: center; flex: 1;
}
.qb-week-nav-btn {
    display: flex; align-items: center; justify-content: center;
    width: 32px; height: 32px; flex-shrink: 0;
    background: var(--qb-surface); border: 1.5px solid var(--qb-border); border-radius: 7px;
    color: var(--qb-text); cursor: pointer; transition: background .12s, border-color .12s;
    outline: none; font-size: .95rem;
}
.qb-week-nav-btn:hover        { background: var(--qb-ghost-hover); border-color: #93c5fd; color: var(--qb-blue); }
.qb-week-nav-btn:focus-visible { box-shadow: 0 0 0 3px var(--qb-blue-ring); }
.qb-week-nav-btn:disabled      { opacity: .35; cursor: not-allowed; pointer-events: none; }

/* ── Availability grid — ALWAYS 7 columns, never wraps ────────────── */
.qb-grid-wrap {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    gap: .4rem;
    overflow-x: auto;
    min-width: 0;
}
.qb-grid-col  { display: flex; flex-direction: column; gap: .3rem; min-width: 52px; }
.qb-grid-col--disabled { opacity: .38; pointer-events: none; }

/* Column header — day name + numeric date stacked */
.qb-grid-day {
    display: flex; flex-direction: column; align-items: center;
    padding: .25rem .1rem; margin-bottom: .2rem;
    border-bottom: 2px solid var(--qb-border);
    text-align: center;
}
.qb-grid-day-name {
    font-size: .68rem; font-weight: 700; text-transform: uppercase;
    letter-spacing: .04em; color: var(--qb-muted); line-height: 1.2;
}
.qb-grid-day-date {
    font-size: .82rem; font-weight: 700; color: var(--qb-text); line-height: 1.3;
}
/* Today highlight */
.qb-grid-day--today { border-bottom-color: var(--qb-blue); }
.qb-grid-day--today .qb-grid-day-name { color: var(--qb-blue); }
.qb-grid-day--today .qb-grid-day-date {
    background: var(--qb-blue); color: #fff;
    width: 24px; height: 24px; border-radius: 50%;
    display: flex; align-items: center; justify-content: center;
    font-size: .78rem; margin-top: 2px;
}
.qb-grid-empty { min-height: 32px; }

/* Slot buttons */
.qb-slot {
    padding: .35rem 0; border: 2px solid var(--qb-border); border-radius: 8px;
    background: var(--qb-surface); font-size: .78rem; font-weight: 600;
    cursor: pointer; text-align: center; width: 100%; color: var(--qb-text);
    transition: border-color .1s, background .1s, color .1s, box-shadow .1s;
    outline: none;
}
.qb-slot:hover         { border-color: #93c5fd; background: #f0f7ff; color: var(--qb-blue); }
.qb-slot:focus-visible  { box-shadow: 0 0 0 3px var(--qb-blue-ring); }
.qb-slot.qb-active     { border-color: var(--qb-blue); background: var(--qb-blue); color: #fff; }
.qb-slot.qb-active:hover { background: var(--qb-blue-dark); border-color: var(--qb-blue-dark); }

/* Plan */
.qb-plan-summary { background: #f0f9ff; border: 1px solid #bae6fd; border-radius: var(--qb-radius); padding: .85rem 1rem; margin-bottom: .85rem; font-size: .88rem; }
.qb-plan-summary p { margin: .15rem 0; }
.qb-plan-tiers { display: flex; flex-wrap: wrap; gap: .5rem; }

.qb-tier {
    display: flex; flex-direction: column;
    padding: .6rem .95rem; min-width: 116px;
    border: 2px solid var(--qb-border); border-radius: var(--qb-radius);
    background: var(--qb-surface); cursor: pointer;
    transition: border-color .12s, background .12s, box-shadow .12s;
    outline: none;
}
.qb-tier:hover        { border-color: #93c5fd; background: #f0f7ff; }
.qb-tier:focus-visible { box-shadow: 0 0 0 3px var(--qb-blue-ring); }
.qb-tier.qb-active    { border-color: var(--qb-blue); background: var(--qb-blue-light); }
.qb-tier strong { font-size: .86rem; color: var(--qb-text); }
.qb-tier span   { font-size: .74rem; color: var(--qb-muted); margin-top: 2px; }
.qb-tier.qb-active strong { color: var(--qb-blue); }

/* Chosen slot indicator (makeup modal) */
.qb-chosen-slot {
    background: #f0fdf4; border: 1.5px solid #86efac; border-radius: 8px;
    padding: .5rem .85rem; font-size: .875rem; font-weight: 600; color: #166534;
    margin-top: .5rem;
}

/* ── States ───────────────────────────────────────────────────────── */
.qb-loading { color: #94a3b8; padding: .75rem 0; margin: 0; }
.qb-error   { color: var(--qb-red); font-size: .85rem; margin: .3rem 0; }

/* ── Dashboard ────────────────────────────────────────────────────── */
.qb-dash-section { margin-bottom: 2rem; }
.qb-dash-section h3 { font-size: 1.05rem; font-weight: 700; border-bottom: 2px solid var(--qb-border); padding-bottom: .5rem; margin-bottom: 1rem; }

/* Teacher stats strip */
.qb-teacher-stats {
    display: flex; gap: .75rem; flex-wrap: wrap; margin-bottom: 1.5rem;
}
.qb-tstat {
    flex: 1; min-width: 80px; background: #f8fafc; border: 1px solid #e2e8f0;
    border-radius: 10px; padding: .75rem 1rem; text-align: center;
}
.qb-tstat--warn { background: #fff7ed; border-color: #fed7aa; }
.qb-tstat--info { background: #eff6ff; border-color: #bfdbfe; }
.qb-tstat-num { display: block; font-size: 1.6rem; font-weight: 700; line-height: 1.1; color: #0f172a; }
.qb-tstat--warn .qb-tstat-num { color: #9a3412; }
.qb-tstat--info .qb-tstat-num { color: #1e40af; }
.qb-tstat-lbl { display: block; font-size: .75rem; color: #64748b; margin-top: .2rem; text-transform: uppercase; letter-spacing: .03em; }
.qb-credits-card { background: var(--qb-surface); border: 1px solid var(--qb-border); border-radius: var(--qb-radius); padding: .9rem 1.1rem; max-width: 400px; margin-bottom: .7rem; }
.qb-bar-wrap { background: var(--qb-border); border-radius: 6px; height: 8px; margin-bottom: .5rem; overflow: hidden; }
.qb-bar  { background: var(--qb-blue); height: 100%; border-radius: 6px; transition: width .4s ease; }
.qb-cycle { font-size: .78rem; color: #94a3b8; margin-top: .3rem !important; }

/* ── Lessons table ────────────────────────────────────────────────── */
.qb-lessons-table { width: 100%; border-collapse: collapse; font-size: .875rem; }
.qb-lessons-table th,
.qb-lessons-table td { text-align: left; padding: .65rem .75rem; border-bottom: 1px solid #f1f5f9; vertical-align: middle; }
.qb-lessons-table th { font-weight: 600; color: var(--qb-muted); background: var(--qb-surface); font-size: .76rem; text-transform: uppercase; letter-spacing: .04em; }
.qb-lessons-table tr:hover td { background: #fafbfc; }
.qb-action-cell { width: 40px; text-align: center; padding: .4rem !important; }

/* ── Badges ───────────────────────────────────────────────────────── */
.qb-badge { display: inline-block; padding: .2rem .55rem; border-radius: 20px; font-size: .73rem; font-weight: 600; }
.qb-badge-type-regular     { background: #f0fdf4; color: #15803d; }
.qb-badge-type-rescheduled { background: #fefce8; color: #854d0e; }
.qb-badge-type-makeup      { background: #faf5ff; color: #7e22ce; }
.qb-badge-scheduled        { background: #eff6ff; color: #1d4ed8; }
.qb-badge-completed        { background: #f0fdf4; color: #15803d; }
.qb-badge-cancelled        { background: #fef2f2; color: #991b1b; }
.qb-badge-pending_makeup   { background: #fff7ed; color: #9a3412; }
.qb-badge-rescheduled      { background: #fefce8; color: #854d0e; }
.qb-att-present            { background: #dcfce7; color: #166534; }
.qb-att-late               { background: #fef9c3; color: #854d0e; }
.qb-att-no_show            { background: #fee2e2; color: #991b1b; }
.qb-att-cancelled          { background: #f1f5f9; color: #64748b; }

/* ── Three-dots button ────────────────────────────────────────────── */
.qb-dropdown-wrap { position: relative; display: inline-block; }

.qb-dots-btn {
    display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 3px;
    width: 32px; height: 32px;
    background: none; border: 1.5px solid transparent; border-radius: 7px;
    cursor: pointer; padding: 0;
    transition: background .12s, border-color .12s;
    outline: none;
}
.qb-dots-btn:hover        { background: var(--qb-ghost-bg); border-color: var(--qb-border); }
.qb-dots-btn:focus-visible { box-shadow: 0 0 0 3px var(--qb-blue-ring); }
.qb-dots-btn span { display: block; width: 4px; height: 4px; background: #94a3b8; border-radius: 50%; transition: background .12s; }
.qb-dots-btn:hover span { background: var(--qb-text); }
/* When using bb-icon inside dots btn */
.qb-dots-btn i { font-size: 1rem; color: #94a3b8; transition: color .12s; pointer-events: none; }
.qb-dots-btn:hover i { color: var(--qb-text); }

/* Series schedule summary */
.qb-series-summary {
    background: #eff6ff; border: 1.5px solid #bfdbfe; border-radius: 8px;
    padding: .5rem .85rem; font-size: .875rem; color: #1e40af; margin-top: .3rem;
}

/* ── Dropdown menu ────────────────────────────────────────────────── */
.qb-dropdown-menu {
    display: none; position: absolute; right: 0; top: 100%;
    min-width: 210px; background: #fff;
    border: 1px solid var(--qb-border); border-radius: var(--qb-radius);
    box-shadow: 0 8px 28px rgba(0,0,0,.11);
    z-index: 9999; padding: 5px;
    animation: qb-fade-in .13s ease;
}
.qb-dropdown-menu.qb-dropdown-open { display: block; }

@keyframes qb-fade-in { from { opacity:0; transform:translateY(-4px); } to { opacity:1; transform:translateY(0); } }

.qb-dropdown-item {
    display: flex; align-items: center; gap: 8px;
    width: 100%; padding: .5rem .7rem;
    background: none; border: none; border-radius: 7px;
    font-size: .86rem; color: var(--qb-text); text-align: left;
    cursor: pointer; white-space: nowrap;
    transition: background .1s, color .1s;
    outline: none;
}
.qb-dropdown-item:hover        { background: var(--qb-ghost-bg); }
.qb-dropdown-item:focus-visible { background: var(--qb-ghost-bg); box-shadow: inset 0 0 0 2px var(--qb-blue-ring); }
.qb-dropdown-item.qb-dropdown-danger       { color: var(--qb-red); }
.qb-dropdown-item.qb-dropdown-danger:hover { background: var(--qb-red-light); }
.qb-dropdown-divider { border: none; border-top: 1px solid #f1f5f9; margin: 4px 0; }

/* ── Toast ────────────────────────────────────────────────────────── */
.qb-toast {
    position: fixed; bottom: 28px; left: 50%;
    transform: translateX(-50%) translateY(10px);
    background: #1e293b; color: #fff;
    padding: .55rem 1.25rem; border-radius: 8px;
    font-size: .875rem; font-family: inherit;
    box-shadow: 0 4px 20px rgba(0,0,0,.18);
    opacity: 0; transition: opacity .22s, transform .22s;
    z-index: 999999; pointer-events: none;
    max-width: calc(100vw - 48px); text-align: center;
}
.qb-toast.qb-toast-show  { opacity: 1; transform: translateX(-50%) translateY(0); }
.qb-toast.qb-toast-error { background: var(--qb-red); }

/* ── Responsive ───────────────────────────────────────────────────── */
@media (max-width: 640px) {
    .qb-modal-box { padding: 1.5rem 1.1rem 2rem; }
    .qb-modal-actions { flex-direction: column-reverse; }
    .qb-modal-actions .qb-btn { width: 100%; }
    .qb-plan-tiers { flex-direction: column; }
    .qb-lessons-table { display: block; overflow-x: auto; }
    .qb-att-options   { gap: .3rem; }
}

/* ── Timezone selector (inline + avail-manager bar) ─────────────── */
.qb-tz-selector {
    display: flex; align-items: center; gap: .5rem; flex-wrap: wrap;
    padding: .4rem .6rem; background: #f8fafc; border: 1px solid var(--qb-border);
    border-radius: 8px; margin-bottom: .75rem; font-size: .82rem;
}
.qb-tz-label { color: var(--qb-muted); display: flex; align-items: center; gap: .3rem; white-space: nowrap; }
.qb-tz-select--inline {
    border: 1.5px solid var(--qb-border); border-radius: 6px;
    padding: .2rem .5rem; font-size: .8rem; background: #fff; color: var(--qb-text);
    cursor: pointer; outline: none; max-width: 220px;
}
.qb-tz-select--inline:focus { border-color: var(--qb-blue); box-shadow: 0 0 0 2px var(--qb-blue-ring); }
.qb-tz-selector .qb-timefmt-toggle,
button.qb-timefmt-toggle {
    display: inline-flex !important; align-items: center; justify-content: center;
    margin-left: .5rem; padding: .2rem .6rem;
    border: 1px solid #cbd5e1 !important; border-radius: 6px;
    background: #fff !important; color: #475569 !important;
    font-size: .75rem !important; font-weight: 700; letter-spacing: .02em;
    cursor: pointer; transition: background .15s, border-color .15s, color .15s;
    white-space: nowrap; flex-shrink: 0; line-height: 1.4;
    box-shadow: none; outline: none;
    font-family: inherit;
}
.qb-tz-selector .qb-timefmt-toggle:hover,
button.qb-timefmt-toggle:hover {
    background: #eff6ff !important; border-color: #93c5fd !important; color: #1a56db !important;
}

/* TZ badge shown next to selected datetime */
.qb-tz-badge {
    display: inline-block; font-size: .72rem; font-weight: 600;
    background: #eff6ff; color: #1d4ed8; border: 1px solid #bfdbfe;
    border-radius: 4px; padding: .05rem .35rem; margin-left: .3rem; vertical-align: middle;
}

/* Blocked (already booked) slot */
.qb-slot.qb-blocked {
    background: #f1f5f9 !important; border-color: #e2e8f0 !important;
    color: #94a3b8 !important; cursor: not-allowed !important;
    text-decoration: line-through; opacity: .7;
}

/* Avail-manager TZ bar */
.qb-tz-bar {
    display: flex; align-items: center; gap: .75rem; flex-wrap: wrap;
    padding: .6rem .85rem; background: #f0f9ff; border: 1px solid #bae6fd;
    border-radius: 8px; margin-bottom: 1rem;
}
.qb-tz-row { display: flex; align-items: center; gap: .5rem; }
.qb-btn--sm { padding: .3rem .75rem; font-size: .8rem; }
.qb-tz-note { font-size: .8rem; color: var(--qb-muted); }

/* Availability slot TZ tag (in manager grid) */
.qb-avail-tz-tag {
    font-size: .68rem; color: var(--qb-muted); background: #f1f5f9;
    border-radius: 4px; padding: .1rem .35rem; margin-left: .3rem;
}


/* ═══════════════════════════════════════════════════════════════════
 * LESSON CARDS  (Preply-inspired)
 * ═══════════════════════════════════════════════════════════════════ */

.qb-dash-title {
    font-size: 1rem; font-weight: 700; color: var(--qb-text);
    margin: 0 0 1rem; display: flex; align-items: center; gap: .45rem;
}

.qb-dash-empty {
    color: var(--qb-muted); font-size: .9rem; padding: .5rem 0;
}

.qb-dash-section--credits { margin-bottom: 1.5rem; }

/* List wrapper */
.qb-lesson-list {
    display: flex; flex-direction: column; gap: 0;
    border: 1px solid var(--qb-border); border-radius: 10px;
}

/* Individual card */
.qb-lesson-card {
    background: #fff; border-bottom: 1px solid var(--qb-border);
    transition: background .15s;
}
.qb-lesson-card:last-child { border-bottom: none; }
.qb-lesson-card--cancelled { background: #fafafa; }
.qb-lesson-card--cancelled .qb-lc-datetime { color: var(--qb-muted); }

/* Main row inside each card */
.qb-lc-main {
    display: flex; align-items: center; gap: .85rem;
    padding: .9rem 1rem;
}

/* Avatar */
.qb-lc-avatar {
    flex-shrink: 0; width: 44px; height: 44px;
    border-radius: 50%; overflow: hidden;
    background: #e8f0fe; display: flex; align-items: center; justify-content: center;
}
.qb-lc-avatar img { width: 100%; height: 100%; object-fit: cover; }
.qb-lc-initials { font-size: 1.1rem; font-weight: 700; color: var(--qb-blue); }

/* Text block */
.qb-lc-info { flex: 1; min-width: 0; }
.qb-lc-datetime {
    font-size: .9rem; font-weight: 600; color: var(--qb-text);
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
    display: flex; align-items: center; gap: .3rem;
}
.qb-lc-type-icon { color: var(--qb-blue); font-size: .8rem; }
.qb-lc-name { font-size: .82rem; color: var(--qb-muted); margin-top: .1rem; }

/* Teacher status + type + attendance pills */
.qb-lc-pills { display: flex; flex-wrap: wrap; gap: .3rem; margin-top: .45rem; }
.qb-lc-pill {
    display: inline-block; font-size: .72rem; font-weight: 600; letter-spacing: .02em;
    padding: .15rem .5rem; border-radius: 999px; border: 1px solid transparent;
}
/* Status */
.qb-lc-pill--scheduled      { background:var(--qb-st-scheduled-bg);  color:var(--qb-st-scheduled-color);  border-color:var(--qb-st-scheduled-bdr); }
.qb-lc-pill--reserved       { background:var(--qb-st-reserved-bg);   color:var(--qb-st-reserved-color);   border-color:var(--qb-st-reserved-bdr); }
.qb-lc-pill--completed      { background:var(--qb-st-completed-bg);  color:var(--qb-st-completed-color);  border-color:var(--qb-st-completed-bdr); }
.qb-lc-pill--cancelled      { background:var(--qb-st-cancelled-bg);  color:var(--qb-st-cancelled-color);  border-color:var(--qb-st-cancelled-bdr); }
.qb-lc-pill--pending_makeup { background:var(--qb-st-pending-bg);    color:var(--qb-st-pending-color);    border-color:var(--qb-st-pending-bdr); }
.qb-lc-pill--grace          { background:var(--qb-st-grace-bg);      color:var(--qb-st-grace-color);      border-color:var(--qb-st-grace-bdr); }
/* Type */
.qb-lc-pill--type-regular     { background:var(--qb-ty-regular-bg);     color:var(--qb-ty-regular-color);     border-color:var(--qb-ty-regular-bdr); }
.qb-lc-pill--type-makeup      { background:var(--qb-ty-makeup-bg);      color:var(--qb-ty-makeup-color);      border-color:var(--qb-ty-makeup-bdr); }
.qb-lc-pill--type-rescheduled { background:var(--qb-ty-rescheduled-bg); color:var(--qb-ty-rescheduled-color); border-color:var(--qb-ty-rescheduled-bdr); }
.qb-lc-pill--type-trial       { background:var(--qb-ty-trial-bg);       color:var(--qb-ty-trial-color);       border-color:var(--qb-ty-trial-bdr); }
.qb-lc-pill--type-reserved    { background:var(--qb-st-reserved-bg);    color:var(--qb-st-reserved-color);    border-color:var(--qb-st-reserved-bdr); }
/* Attendance */
.qb-lc-pill--att-present  { background:var(--qb-st-completed-bg); color:var(--qb-st-completed-color); border-color:var(--qb-st-completed-bdr); }
.qb-lc-pill--att-late     { background:var(--qb-st-pending-bg);   color:var(--qb-st-pending-color);   border-color:var(--qb-st-pending-bdr); }
.qb-lc-pill--att-no_show  { background:var(--qb-st-cancelled-bg); color:var(--qb-st-cancelled-color); border-color:var(--qb-st-cancelled-bdr); }

/* Actions column */
.qb-lc-actions { flex-shrink: 0; }

/* Status banners (inside card, below main row) */
.qb-lc-banner {
    margin: 0 1rem .75rem;
    padding: .55rem .75rem; border-radius: 7px;
    font-size: .82rem; display: flex; align-items: flex-start; gap: .4rem;
    line-height: 1.4;
}
.qb-lc-banner--warn {
    background: #fff7ed; color: #9a3412; border: 1px solid #fed7aa;
}
.qb-lc-banner--notes {
    background: #f8fafc; color: #334155; border: 1px solid #e2e8f0;
    font-size: .82rem;
}

/* Teacher feedback toggle (student past lessons) */
.qb-lc-feedback { margin: 0 1rem .75rem; }
.qb-lc-feedback-btn {
    background: none; border: none; cursor: pointer; padding: .3rem 0;
    font-size: .82rem; color: #1a56db; display: flex; align-items: center; gap: .35rem;
}
.qb-lc-feedback-btn:hover { text-decoration: underline; }
.qb-lc-feedback-body {
    margin-top: .35rem; padding: .6rem .8rem;
    background: #f8fafc; border: 1px solid #e2e8f0; border-radius: 7px;
    font-size: .84rem; color: #334155; white-space: pre-wrap; line-height: 1.5;
}
.qb-lc-banner--info {
    background: #eff6ff; color: #1e40af; border: 1px solid #bfdbfe;
}
.qb-lc-banner--success {
    background: #f0fdf4; color: #166534; border: 1px solid #bbf7d0;
}
/* "Time changed" banner — amber/orange, for rescheduled-type upcoming lessons */
.qb-lc-banner--reschedule {
    background: #fff7ed; color: #92400e; border: 1px solid #fed7aa;
}
/* Pending reschedule-request banner — purple tint */
.qb-lc-banner--rr {
    background: #f5f3ff; color: #5b21b6; border: 1px solid #ddd6fe;
    display: flex; align-items: center; gap: .5rem; flex-wrap: wrap;
}
.qb-lc-banner-btn {
    background: none; border: 1px solid currentColor; border-radius: 6px;
    padding: .2rem .6rem; font-size: .8rem; font-weight: 600; cursor: pointer;
    color: inherit; line-height: 1.4;
}
.qb-lc-banner-btn:hover { background: rgba(91,33,182,.1); }
/* End time — muted, inline after start time */
.qb-lc-endtime { color: #94a3b8; font-size: .88em; }
/* RR inbox highlight pulse */
@keyframes qb-rr-pulse { 0%,100% { box-shadow: 0 0 0 0 rgba(99,102,241,.4); } 50% { box-shadow: 0 0 0 8px rgba(99,102,241,0); } }
.qb-rr-inbox--highlight { animation: qb-rr-pulse .6s ease 2; border-radius: 12px; }
/* Disabled dropdown item — greyed out, not clickable-looking */
.qb-dropdown-disabled {
    color: #94a3b8 !important; cursor: default !important; pointer-events: none;
    opacity: .65;
}

/* ═══════════════════════════════════════════════════════════
 * FAMILY SECTION
 * ═══════════════════════════════════════════════════════════ */

/* View-as banner */
.qb-view-as-banner {
    background: #eff6ff; border: 1px solid #bfdbfe; border-radius: 8px;
    padding: .65rem 1rem; margin-bottom: 1.25rem;
    font-size: .88rem; color: #1e40af;
    display: flex; align-items: center; gap: .5rem; flex-wrap: wrap;
}
.qb-view-as-back {
    margin-left: auto; color: #1d4ed8; text-decoration: none; font-weight: 600;
    display: flex; align-items: center; gap: .3rem;
}
.qb-view-as-back:hover { text-decoration: underline; }

/* Family grid — BuddyBoss-style member cards */
/* ── Family overview cards (compact horizontal) ───────────────────── */
.qb-fam-header {
    display: flex; align-items: center; justify-content: space-between;
    margin-bottom: .75rem;
}
.qb-fam-toggle {
    font-size: .8rem; font-weight: 600; color: #1a56db;
    text-decoration: none; padding: .2rem .5rem;
    border-radius: 6px; transition: background .15s;
}
.qb-fam-toggle:hover { background: #eff6ff; text-decoration: none; }

.qb-family-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
    gap: 1rem; margin-top: .75rem;
}

/* Base card */
.qb-family-card {
    background: #fff;
    border: 1px solid #e2e8f0;
    border-radius: 12px;
    overflow: hidden;
    display: flex;
    flex-direction: column;
    transition: box-shadow .18s, transform .18s;
    box-shadow: 0 1px 3px rgba(0,0,0,.06);
}
.qb-family-card:hover {
    box-shadow: 0 4px 16px rgba(0,0,0,.10);
    transform: translateY(-2px);
}
.qb-family-card--self { border-left: 3px solid #1a56db; }

/* Header row: avatar left, info right */
.qb-fc-header {
    display: flex; align-items: center; gap: .85rem;
    padding: .85rem 1rem .65rem;
}
.qb-fc-avatar {
    flex-shrink: 0;
}
.qb-fc-img {
    width: 44px; height: 44px; border-radius: 50%;
    border: 2px solid #e2e8f0; object-fit: cover;
}
.qb-fc-initials {
    width: 44px; height: 44px; border-radius: 50%;
    background: #1a56db; color: #fff;
    display: flex; align-items: center; justify-content: center;
    font-size: .95rem; font-weight: 700;
    border: 2px solid #e2e8f0;
}
.qb-fc-info { flex: 1; min-width: 0; }
.qb-fc-name {
    font-size: .92rem; font-weight: 700; color: #1e293b;
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
    margin: 0 0 .3rem;
}
.qb-fc-role {
    display: inline-block;
    font-size: .68rem; font-weight: 700; letter-spacing: .04em;
    text-transform: uppercase; padding: .15rem .55rem;
    border-radius: 999px;
}
.qb-fc-role--parent  { background: #eff6ff; color: #1a56db; border: 1px solid #bfdbfe; }
.qb-fc-role--student { background: #f0fdf4; color: #16a34a; border: 1px solid #bbf7d0; }

/* Stats row */
.qb-fc-stats {
    display: flex; flex-wrap: wrap; align-items: center;
    gap: .25rem; padding: 0 1rem .7rem;
    font-size: .76rem; color: #64748b;
    border-bottom: 1px solid #f1f5f9;
}
.qb-fc-stats strong { color: #1e293b; }
.qb-fc-stat-sep { color: #cbd5e1; margin: 0 .1rem; }

/* Action buttons */
.qb-fc-actions {
    padding: .6rem .85rem;
    display: flex; flex-direction: column; gap: .45rem;
    margin-top: auto;
}
.qb-fc-btn {
    display: flex; align-items: center; justify-content: center; gap: .4rem;
    width: 100%; padding: .5rem .75rem;
    border-radius: 8px; font-size: .82rem; font-weight: 600;
    text-decoration: none; border: none; cursor: pointer;
    transition: background .15s, border-color .15s;
}
.qb-fc-btn--primary {
    background: #1a56db; color: #fff;
}
.qb-fc-btn--primary:hover { background: #1746c0; color: #fff; text-decoration: none; }
.qb-fc-btn--ghost {
    background: #f8fafc; color: #1a56db;
    border: 1px solid #e2e8f0;
}
.qb-fc-btn--ghost:hover { background: #eff6ff; border-color: #bfdbfe; text-decoration: none; }

/* Add child card */
.qb-family-card--add {
    border: 2px dashed #cbd5e1; background: #f8fafc;
    min-height: 130px; box-shadow: none; cursor: pointer;
    justify-content: stretch;
}
.qb-family-card--add:hover { border-color: #1a56db; background: #f0f6ff; transform: translateY(-2px); }
.qb-family-add-btn {
    background: none; border: none; cursor: pointer;
    display: flex; flex-direction: column; align-items: center; justify-content: center;
    gap: .6rem; color: #94a3b8; padding: 1.5rem;
    width: 100%; height: 100%; flex: 1;
    transition: color .15s;
}
.qb-family-card--add:hover .qb-family-add-btn { color: #1a56db; }
.qb-fc-add-icon {
    width: 40px; height: 40px; border-radius: 50%;
    background: #e2e8f0; display: flex; align-items: center; justify-content: center;
    transition: background .15s;
}
.qb-fc-add-icon svg { width: 1.4rem; height: 1.4rem; }
.qb-family-card--add:hover .qb-fc-add-icon { background: #bfdbfe; }
.qb-fc-add-label { font-size: .85rem; font-weight: 600; }

/* Add-child form inside modal */
.qb-fc-form { margin: .5rem 0 .75rem; }
.qb-fc-form-row {
    display: grid; grid-template-columns: 1fr 1fr; gap: .75rem; margin-bottom: .75rem;
}
@media (max-width: 480px) { .qb-fc-form-row { grid-template-columns: 1fr; } }
.qb-fc-gender-row { margin-top: .5rem; }
.qb-fc-gender-opt {
    display: flex; align-items: center; gap: .35rem;
    font-size: .88rem; cursor: pointer;
}
.qb-required { color: #e53e3e; }
.qb-form-row {
    display: flex; gap: .75rem; margin-top: .75rem; flex-wrap: wrap;
}

/* Past lessons load-more */
.qb-load-more {
    display: flex; align-items: center; gap: .4rem;
    margin: .75rem 0 0; padding: .5rem 1rem;
    background: none; border: 1.5px solid var(--qb-border); border-radius: 7px;
    font-size: .85rem; font-weight: 600; color: var(--qb-blue); cursor: pointer;
    transition: border-color .15s, background .15s;
}
.qb-load-more:hover:not(:disabled) { border-color: var(--qb-blue); background: #eff6ff; }
.qb-load-more:disabled { color: var(--qb-muted); cursor: not-allowed; }
.qb-past-end { font-size: .8rem; color: var(--qb-muted); margin: .5rem 0 0; }

/* Past section heading separator */
#qb-past-section { margin-top: 2rem; }

/* Credits card polish */
.qb-credits-card {
    background: #f8fafc; border: 1px solid var(--qb-border);
    border-radius: 10px; padding: 1rem 1.1rem; margin-bottom: .75rem;
}
.qb-credits-stat { font-size: .9rem; margin: .4rem 0 .2rem; }
.qb-credits-makeup { font-size: .85rem; color: var(--qb-blue); margin: .2rem 0; }

/* Attendance badge colours on cards */
.qb-att-present  { background: #dcfce7; color: #166534; }
.qb-att-late     { background: #fef9c3; color: #854d0e; }
.qb-att-no_show  { background: #fee2e2; color: #991b1b; }
.qb-att-cancelled{ background: #f1f5f9; color: #475569; }


/* ── Availability manager — slot row with inline edit ────────────── */
.qb-avail-slot {
    background: #fff; border: 1.5px solid var(--qb-border);
    border-radius: 8px; margin-bottom: .4rem;
}
.qb-avail-slot-view {
    display: flex; align-items: center; gap: .4rem; padding: .4rem .5rem;
}
.qb-avail-time { flex: 1; font-size: .85rem; font-weight: 600; color: var(--qb-text); }
.qb-avail-icon-btn {
    background: none; border: none; cursor: pointer; padding: .2rem .3rem;
    border-radius: 5px; color: var(--qb-muted); transition: background .12s, color .12s;
}
.qb-avail-icon-btn:hover { background: #f1f5f9; color: var(--qb-text); }
.qb-avail-icon-btn--del:hover { background: #fee2e2; color: #b91c1c; }

/* Inline edit form */
.qb-avail-slot-edit { padding: .5rem .6rem; background: #f8fafc; border-top: 1px solid var(--qb-border); }
.qb-avail-edit-row { display: flex; align-items: center; gap: .4rem; }
.qb-avail-edit-sep { color: var(--qb-muted); font-weight: 600; }
.qb-avail-edit-actions { display: flex; gap: .4rem; margin-top: .4rem; }
.qb-avail-edit-err { font-size: .8rem; color: var(--qb-red,#dc2626); margin: .3rem 0 0; }
.qb-btn--xs { padding: .25rem .6rem !important; font-size: .8rem !important; }

/* Repeat weekly panel */
.qb-add-repeat-wrap { margin-top: .75rem; }
.qb-label--inline { display: flex; align-items: center; gap: .4rem; cursor: pointer; }
.qb-add-repeat-days { margin-top: .6rem; padding: .6rem .75rem; background: #f0f9ff; border: 1px solid #bae6fd; border-radius: 8px; }
.qb-day-checks { display: flex; gap: .4rem; flex-wrap: wrap; margin-top: .4rem; }
.qb-day-check-label {
    display: flex; align-items: center; gap: .3rem; cursor: pointer;
    padding: .3rem .6rem; border: 1.5px solid var(--qb-border); border-radius: 6px;
    font-size: .82rem; font-weight: 600; background: #fff; transition: border-color .12s, background .12s;
    user-select: none;
}
.qb-day-check-label:has(input:checked) {
    border-color: var(--qb-blue); background: #eff6ff; color: var(--qb-blue);
}
.qb-day-check-label input { display: none; }

/* Teacher dash past lessons subtitle */
.qb-dash-subtitle { font-size: .78rem; font-weight: 400; color: var(--qb-muted); margin-left: .3rem; }


/* ═══════════════════════════════════════════════════════════════════
 * SUBSCRIPTION UPSELL BANNER
 * ═══════════════════════════════════════════════════════════════════ */
.qb-upsell-banner {
    background: linear-gradient(135deg, #fffbeb 0%, #fef9c3 100%);
    border: 1.5px solid #fde68a;
    border-left: 4px solid #f59e0b;
    border-radius: 12px;
    padding: 1.25rem 1.5rem;
    margin-bottom: 1.5rem;
    transition: opacity .3s, transform .3s;
}
.qb-upsell-banner--loading {
    opacity: .6;
}
.qb-upsell-banner--dismissed {
    opacity: 0;
    transform: translateY(-6px);
    pointer-events: none;
}
.qb-upsell-inner {
    display: flex;
    align-items: flex-start;
    gap: 1rem;
}
.qb-upsell-icon {
    flex-shrink: 0;
    font-size: 1.4rem;
    color: #d97706;
    line-height: 1;
    margin-top: .1rem;
}
.qb-upsell-body {
    flex: 1;
    min-width: 0;
}
.qb-upsell-heading {
    display: block;
    font-size: 1rem;
    font-weight: 700;
    color: #78350f;
    margin-bottom: .5rem;
}
.qb-upsell-rows {
    display: flex;
    flex-direction: column;
    gap: .5rem;
    margin-bottom: .75rem;
}
.qb-upsell-row {
    background: rgba(255,255,255,.65);
    border: 1px solid #fde68a;
    border-radius: 8px;
    padding: .5rem .75rem;
}
.qb-upsell-row-who {
    font-size: .9rem;
    font-weight: 600;
    color: #1e293b;
    display: flex;
    align-items: center;
    gap: .35rem;
    flex-wrap: wrap;
}
.qb-upsell-sep {
    color: #94a3b8;
    font-weight: 400;
}
.qb-upsell-row-detail {
    font-size: .82rem;
    color: #475569;
    margin-top: .2rem;
    display: flex;
    align-items: center;
    gap: .35rem;
    flex-wrap: wrap;
}
.qb-upsell-total {
    font-size: .9rem;
    color: #78350f;
    margin: 0 0 .25rem;
}
.qb-upsell-actions {
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: .5rem;
    flex-shrink: 0;
    min-width: 160px;
}
.qb-upsell-dismiss {
    font-size: .8rem;
    color: #92400e;
    border-color: transparent;
    padding: .3rem .5rem;
}
.qb-upsell-dismiss:hover {
    text-decoration: underline;
    background: transparent;
}

@media (max-width: 600px) {
    .qb-upsell-inner    { flex-direction: column; }
    .qb-upsell-actions  { flex-direction: row; min-width: 0; }
}



/* ── Grace period banner ──────────────────────────────────────── */
.qb-grace-banner {
    background: linear-gradient(135deg, #fef3c7 0%, #fde68a 100%);
    border: 1.5px solid #f59e0b;
    border-radius: 12px; padding: 1rem 1.25rem;
    margin-bottom: 1.25rem;
}
.qb-grace-inner { display: flex; align-items: center; gap: 1rem; flex-wrap: wrap; }
.qb-grace-icon  { font-size: 1.5rem; color: #d97706; flex-shrink: 0; }
.qb-grace-body  { flex: 1; min-width: 200px; }
.qb-grace-heading { display: block; font-size: 1rem; font-weight: 700; color: #92400e; margin-bottom: .25rem; }
.qb-grace-msg   { margin: 0; font-size: .88rem; color: #78350f; }
.qb-grace-actions { flex-shrink: 0; }
.qb-grace-btn   { white-space: nowrap; }

/* ── Reschedule request inbox ─────────────────────────────────── */
.qb-rr-inbox {
    background: #fff; border: 1.5px solid #e2e8f0;
    border-radius: 12px; padding: 1.1rem 1.25rem;
    margin-bottom: 1.25rem;
}
.qb-rr-inbox-title { margin-bottom: .85rem !important; }
.qb-rr-badge {
    display: inline-flex; align-items: center; justify-content: center;
    background: #ef4444; color: #fff;
    border-radius: 999px; font-size: .72rem; font-weight: 700;
    width: 20px; height: 20px; vertical-align: middle; margin-left: .3rem;
}
.qb-rr-card {
    background: #f8fafc; border: 1.5px solid #e2e8f0; border-radius: 10px;
    padding: .9rem 1rem; margin-bottom: .75rem;
}
.qb-rr-card:last-child { margin-bottom: 0; }
.qb-rr-card-head {
    display: flex; align-items: center; gap: .65rem; margin-bottom: .65rem;
}
.qb-rr-avatar {
    width: 36px; height: 36px; border-radius: 50%; object-fit: cover; flex-shrink: 0;
}
.qb-rr-initial {
    width: 36px; height: 36px; border-radius: 50%;
    background: #dbeafe; color: #1e40af;
    font-size: .85rem; font-weight: 700;
    display: flex; align-items: center; justify-content: center; flex-shrink: 0;
}
.qb-rr-card-info { font-size: .88rem; line-height: 1.45; }
.qb-rr-expires  { font-size: .75rem; color: #ef4444; font-weight: 600; margin-left: .4rem; }
.qb-rr-times    { display: flex; flex-direction: column; gap: .3rem; margin-bottom: .65rem; }
.qb-rr-time-row { font-size: .875rem; display: flex; align-items: center; gap: .35rem; }
.qb-rr-time-proposed strong { color: #1a56db; }
.qb-rr-note     { font-size: .83rem; color: #64748b; margin: 0 0 .65rem; display: flex; align-items: flex-start; gap: .35rem; }
.qb-rr-actions  { display: flex; gap: .5rem; flex-wrap: wrap; }

/* Grace pill on lesson card */
.qb-pill--grace {
    background:var(--qb-st-grace-bg); color:var(--qb-st-grace-color);
    border:1px solid var(--qb-st-grace-bdr);
}
/* Muted dropdown items */
.qb-dropdown-muted { opacity: .55; pointer-events: none; cursor: default !important; }

/* ── Book-lesson form TZ selector ───────────────────────────────── */
.qb-bl-tz-row { display:flex; align-items:center; gap:.5rem; margin:.75rem 0 .35rem; flex-wrap:wrap; }
.qb-bl-tz-label { font-size:.82rem; color:var(--qb-muted); white-space:nowrap; }
.qb-tz-select--bl {
    font-size:.82rem; padding:.3rem .65rem;
    border:1px solid var(--qb-border); border-radius:6px;
    background:var(--qb-surface); color:var(--qb-text);
    cursor:pointer; max-width:320px;
}

/* ── Reschedule request modal TZ info line ───────────────────────── */
.qb-tz-info-line {
    font-size: .82rem;
    color: var(--qb-muted);
    margin: .1rem 0 .75rem;
    display: flex; align-items: center; gap: .35rem;
}
.qb-tz-info-line strong { color: var(--qb-text); }

/* ── Series reschedule modal controls ────────────────────────────── */
.qb-series-controls {
    display: flex; flex-direction: column; gap: .5rem;
    background: #f8fafc; border: 1px solid #e2e8f0;
    border-radius: .5rem; padding: .75rem 1rem; margin-bottom: .75rem;
}
.qb-series-dur-row {
    display: flex; align-items: center; gap: .75rem; flex-wrap: wrap;
}
.qb-series-dur-row .qb-label { margin: 0; white-space: nowrap; }
.qb-dur-btns { display: flex; gap: .4rem; }
.qb-dur-btn--on {
    border-color: var(--qb-blue) !important;
    background: var(--qb-blue-light) !important;
    color: var(--qb-blue) !important;
    font-weight: 600;
}
.qb-series-tz-note {
    font-size: .8rem; color: var(--qb-muted);
    display: flex; align-items: center; gap: .3rem;
}

/* ── Slot over-limit flash ──────────────────────────────────────── */
@keyframes qb-overlimit-flash {
    0%,100% { background: transparent; }
    25%,75%  { background: #fef2f2; border-color: #f87171; }
}
.qb-slot--overlimit {
    animation: qb-overlimit-flash .55s ease;
}

/* ── Read-only TZ badge (My Availability page) ───────────────────── */
.qb-tz-readonly-badge {
    display: inline-flex; align-items: center;
    background: #f1f5f9; border: 1px solid #cbd5e1;
    border-radius: .375rem; padding: .3rem .75rem;
    font-size: .875rem; color: var(--qb-text);
    font-weight: 500; letter-spacing: .01em;
}

/* ── Disabled duration button (odd weekly credit allocation) ─────── */
.qb-dur-btn--disabled,
.qb-dur-btn[disabled] {
    opacity: .45;
    cursor: not-allowed;
    border-color: #e2e8f0 !important;
    background: #f8fafc !important;
    color: var(--qb-muted) !important;
}
.qb-dur-btn small { font-size: .72rem; color: inherit; margin-left: .25rem; opacity: .7; }

/* ═══════════════════════════════════════════════════════════════════
 * TEACHER TABLE VIEW
 * ═══════════════════════════════════════════════════════════════════ */
.qb-table-wrap { position: relative; }
.qb-lesson-table {
    width: 100%; border-collapse: collapse; font-size: .875rem;
    border: 1px solid var(--qb-border); border-radius: .5rem;
}
.qb-lesson-table thead tr {
    background: #f8fafc; border-bottom: 2px solid var(--qb-border);
}
.qb-lesson-table th {
    padding: .625rem 1rem; text-align: left; font-weight: 600;
    font-size: .75rem; text-transform: uppercase; letter-spacing: .04em; color: var(--qb-muted);
}
.qb-lesson-table td {
    padding: .625rem 1rem; border-bottom: 1px solid #f1f5f9;
    vertical-align: middle;
}
.qb-lesson-table tbody tr:last-child td { border-bottom: none; }
.qb-lesson-table tbody tr:hover { background: #f8fafc; }
.qb-td-dt { min-width: 220px; white-space: nowrap; }
.qb-td-student { display: flex; align-items: center; gap: .5rem; min-width: 150px; }
.qb-td-actions { text-align: right; white-space: nowrap; display: flex; gap: .35rem; justify-content: flex-end; }
.qb-t-avatar { width: 28px; height: 28px; border-radius: 50%; object-fit: cover; flex-shrink: 0; }
.qb-t-att { font-size: .75rem; padding: 2px 8px; border-radius: 9999px; font-weight: 500; }
.qb-att--present { background: #dcfce7; color: #166534; }
.qb-att--late    { background: #fef9c3; color: #854d0e; }
.qb-att--noshow  { background: #fee2e2; color: #991b1b; }
.qb-att--none    { background: #f1f5f9; color: var(--qb-muted); }

/* Dashboard section header with "see more" link */
.qb-dash-section-header {
    display: flex; justify-content: space-between; align-items: baseline;
    margin-bottom: .75rem; flex-wrap: wrap; gap: .5rem;
}
.qb-dash-see-more {
    font-size: .8rem; color: var(--qb-blue); text-decoration: none; font-weight: 500;
}
.qb-dash-see-more:hover { text-decoration: underline; }
.qb-dash-count { font-size: .85rem; color: var(--qb-muted); font-weight: 400; }
.qb-dash-more-row { margin-top: .75rem; display: flex; align-items: center; gap: .75rem; }
.qb-dash-muted { font-size: .82rem; color: var(--qb-muted); }

/* Lesson notes modal */
.qb-notes-student-row {
    display: flex; align-items: center; gap: .5rem;
    margin-bottom: .75rem; font-size: .9rem;
}
.qb-notes-body {
    background: #f8fafc; border: 1px solid var(--qb-border);
    border-radius: .5rem; padding: 1rem; min-height: 80px;
    font-size: .9rem; line-height: 1.6; white-space: pre-wrap;
    color: var(--qb-text);
}

/* ═══════════════════════════════════════════════════════════════════
 * LESSONS PAGE — TABBED LAYOUT
 * ═══════════════════════════════════════════════════════════════════ */
.qb-lessons-page { width: 100%; }
/* ── Lessons page tabs — driven by admin color palette ─────────────
 * Uses the same CSS vars as primary buttons so branding stays in sync.
 *
 * Normal  : text = --qb-muted on transparent bg
 * Hover   : text = --qb-btn-p-bg (primary brand), bg = --qb-blue-light (tint)
 * Active  : text = --qb-btn-p-color (contrast-safe white), bg = --qb-btn-p-bg
 *           underline indicator also uses --qb-btn-p-bg
 * Focus   : 3-px ring in --qb-blue-ring (meets WCAG 2.4.11)
 * ─────────────────────────────────────────────────────────────────── */
.qb-lp-tabs {
    display: flex; gap: 0; border-bottom: 2px solid var(--qb-border);
    margin-bottom: 1.5rem; overflow-x: auto; -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
}
.qb-lp-tabs::-webkit-scrollbar { display: none; }
.qb-lp-tab {
    display: inline-flex; align-items: center; gap: .4rem;
    padding: .65rem 1.25rem; font-size: .875rem; font-weight: 500;
    background: transparent;
    color: var(--qb-muted);
    border: none;
    border-bottom: 2.5px solid transparent;
    margin-bottom: -2px;
    cursor: pointer;
    white-space: nowrap;
    border-radius: 6px 6px 0 0;
    transition: color .15s ease, background .15s ease, border-color .15s ease;
    position: relative;
    outline: none;
}
/* Hover — tinted background + brand text colour */
.qb-lp-tab:hover {
    color: var(--qb-btn-p-bg);
    background: var(--qb-blue-light);
}
/* Focus-visible — 3px ring for keyboard nav (WCAG 2.4.11) */
.qb-lp-tab:focus-visible {
    outline: none;
    box-shadow: 0 0 0 3px var(--qb-blue-ring);
    color: var(--qb-btn-p-bg);
    background: var(--qb-blue-light);
}
/* Active — filled with primary brand colour, white text */
.qb-lp-tab--active {
    color: var(--qb-btn-p-color);           /* white by default */
    background: var(--qb-btn-p-bg);         /* brand primary */
    border-bottom-color: var(--qb-btn-p-bg);
    font-weight: 600;
}
.qb-lp-tab--active:hover {
    background: var(--qb-btn-p-hover-bg);
    border-bottom-color: var(--qb-btn-p-hover-bg);
    color: var(--qb-btn-p-color);
}
/* Badge */
.qb-lp-tab-badge {
    display: inline-flex; align-items: center; justify-content: center;
    min-width: 18px; height: 18px; padding: 0 5px;
    border-radius: 9999px;
    background: var(--qb-btn-p-color);      /* white on active tab */
    color: var(--qb-btn-p-bg);              /* brand on white — contrasts */
    font-size: .7rem; font-weight: 700; line-height: 1;
}
.qb-lp-tab:not(.qb-lp-tab--active) .qb-lp-tab-badge {
    background: var(--qb-btn-p-bg);         /* brand bg on inactive tab */
    color: var(--qb-btn-p-color);           /* white text */
}

.qb-lp-content { min-height: 200px; }

.qb-lp-footer {
    display: flex; align-items: center; justify-content: space-between;
    margin-top: 1.25rem; padding-top: .75rem;
    border-top: 1px solid var(--qb-border);
}
.qb-lp-count { font-size: .8rem; color: var(--qb-muted); }

/* Makeup tab info bar */
.qb-makeup-info-bar {
    display: flex; align-items: center; gap: .5rem;
    background: #fff7ed; border: 1px solid #fed7aa;
    border-radius: .5rem; padding: .75rem 1rem;
    font-size: .875rem; margin-bottom: 1rem; color: #7c2d12;
}
.qb-makeup-info-bar strong { color: #9a3412; }

/* Attendance Due highlight in table */
.qb-tr-scheduled td { border-left: 3px solid transparent; }

/* ── Teacher RR list (Schedule Requests tab) ────────────────────── */
.qb-rr-teacher-list { display: flex; flex-direction: column; gap: 1rem; }
.qb-rr-teacher-card {
    background: var(--qb-surface); border: 1px solid var(--qb-border);
    border-radius: 10px; padding: 1rem 1.25rem;
}
.qb-rr-tc-header {
    display: flex; align-items: center; justify-content: space-between;
    margin-bottom: .5rem;
}
.qb-rr-student-name { font-weight: 600; display: flex; align-items: center; gap: .4rem; }
.qb-rr-tc-times { font-size: .875rem; color: var(--qb-muted); display: flex; flex-direction: column; gap: .2rem; }
.qb-rr-tc-row { display: flex; gap: .5rem; }
.qb-rr-tc-lbl { font-weight: 500; color: var(--qb-text); min-width: 5rem; }
/* Status badges for teacher RR */
.qb-rr-st-badge {
    font-size: .72rem; font-weight: 600; padding: 2px 9px; border-radius: 9999px;
}
.qb-rr-st--pending  { background: #fef9c3; color: #854d0e; border: 1px solid #fde68a; }
.qb-rr-st--approved { background: #dcfce7; color: #166534; border: 1px solid #bbf7d0; }
.qb-rr-st--declined { background: #fee2e2; color: #991b1b; border: 1px solid #fecaca; }
.qb-rr-st--expired  { background: #f3f4f6; color: #6b7280; border: 1px solid #e5e7eb; }
.qb-rr-st--cancelled{ background: #f3f4f6; color: #6b7280; border: 1px solid #e5e7eb; }

/* ── "Book a free lesson" trial banner (empty-state dashboard) ───── */
.qb-trial-banner {
    background: linear-gradient(135deg, var(--qb-blue-light) 0%, #fff 100%);
    border: 1.5px solid var(--qb-btn-p-bg);
    border-radius: 14px;
    margin-bottom: 1.5rem;
    overflow: hidden;
}
.qb-trial-banner-inner {
    display: flex; align-items: center; gap: 1.25rem;
    padding: 1.5rem 1.75rem;
}
.qb-trial-banner-icon {
    flex-shrink: 0;
    width: 52px; height: 52px;
    border-radius: 50%;
    background: var(--qb-btn-p-bg);
    color: var(--qb-btn-p-color);
    display: flex; align-items: center; justify-content: center;
    font-size: 1.4rem;
}
.qb-trial-banner-body { flex: 1; min-width: 0; }
.qb-trial-banner-heading {
    display: block; font-size: 1.05rem; font-weight: 700;
    color: var(--qb-text); margin-bottom: .25rem;
}
.qb-trial-banner-sub {
    margin: 0; font-size: .875rem; color: var(--qb-muted); line-height: 1.5;
}
.qb-trial-banner-action { flex-shrink: 0; }
.qb-btn--lg { padding: .7rem 1.5rem; font-size: .95rem; }

/* Empty upcoming state with inline book button */
.qb-upcoming-empty { display: flex; align-items: center; gap: 1rem; flex-wrap: wrap; padding: .25rem 0; }
.qb-upcoming-empty .qb-dash-empty { margin: 0; }
.qb-upcoming-book-btn { white-space: nowrap; }

/* Responsive — stack on mobile */
@media (max-width: 560px) {
    .qb-trial-banner-inner { flex-direction: column; text-align: center; }
    .qb-trial-banner-action { width: 100%; }
    .qb-trial-banner-action .qb-btn { width: 100%; justify-content: center; }
    .qb-upcoming-empty { flex-direction: column; align-items: flex-start; }
}

/* ═══════════════════════════════════════════════════════════════════
 * Plan-change UI — credits card additions
 * ═══════════════════════════════════════════════════════════════════ */
.qb-plan-row {
    display: flex; align-items: center; gap: .6rem; margin-top: .5rem; flex-wrap: wrap;
}
.qb-plan-badge {
    display: inline-flex; align-items: center; gap: .3rem;
    font-size: .78rem; font-weight: 600; padding: .2rem .6rem;
    background: #eff6ff; color: #1e40af; border: 1px solid #bfdbfe; border-radius: 999px;
}
.qb-plan-change-btn {
    font-size: .78rem; padding: .2rem .65rem;
}

/* Plan-change modal options */
.qb-plan-options {
    display: flex; flex-direction: column; gap: .45rem; margin: .5rem 0;
}
.qb-plan-option {
    display: flex; align-items: center; gap: .75rem;
    padding: .65rem .9rem; border: 1.5px solid var(--qb-border);
    border-radius: 9px; cursor: pointer; background: #fff;
    transition: border-color .13s, background .13s;
}
.qb-plan-option:has(.qb-plan-radio:checked),
.qb-plan-option--current { border-color: var(--qb-blue); background: #eff6ff; }
.qb-plan-radio { accent-color: var(--qb-blue); width: 16px; height: 16px; flex-shrink: 0; }
.qb-plan-option-inner {
    display: flex; flex: 1; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: .4rem;
}
.qb-plan-option-cpc { font-size: .8rem; color: var(--qb-muted); }
.qb-plan-option-badge {
    font-size: .72rem; font-weight: 700; padding: .1rem .5rem;
    background: #dbeafe; color: #1e40af; border-radius: 999px;
}

/* ═══════════════════════════════════════════════════════════════════
 * Mobile — comprehensive responsive overrides  (C2-C5)
 * ═══════════════════════════════════════════════════════════════════ */
@media (max-width: 640px) {

    /* Lesson cards: let datetime wrap, shrink avatar */
    .qb-lc-main { padding: .75rem .8rem; gap: .65rem; }
    .qb-lc-avatar { width: 36px; height: 36px; }
    .qb-lc-datetime {
        white-space: normal; font-size: .83rem;
    }
    .qb-lc-name { font-size: .78rem; }
    .qb-lc-banner { margin: 0 .8rem .65rem; font-size: .8rem; }

    /* Lessons page tabs: smaller, icon-only on very small */
    .qb-lp-tab { padding: .5rem .75rem; font-size: .8rem; gap: .25rem; }

    /* Teacher stats strip: 2-column grid instead of flex-wrap */
    .qb-teacher-stats {
        display: grid; grid-template-columns: 1fr 1fr; gap: .5rem;
    }
    .qb-tstat { min-width: 0; padding: .6rem .75rem; }
    .qb-tstat-num { font-size: 1.3rem; }

    /* Dropdown menu: full-width */
    .qb-dropdown-menu {
        right: auto; left: 0; min-width: 200px; max-width: calc(100vw - 2rem);
    }

    /* Credits card plan row */
    .qb-plan-row { flex-direction: column; align-items: flex-start; }

    /* Lessons table: horizontal scroll + sticky first column */
    .qb-lessons-table { font-size: .8rem; }
    .qb-lessons-table th,
    .qb-lessons-table td { padding: .5rem .6rem; }

    /* Modal: full screen on mobile */
    .qb-modal-box {
        width: 100% !important; max-width: 100% !important;
        min-height: 50vh; border-radius: 16px 16px 0 0;
        margin: auto 0 0;
    }
    .qb-modal-overlay { align-items: flex-end !important; }

    /* LP footer: stack */
    .qb-lp-footer { flex-direction: column; align-items: flex-start; gap: .5rem; }
}

@media (max-width: 400px) {
    /* Very small: icon-less tabs */
    .qb-lp-tab i { display: none; }
    .qb-lp-tab { padding: .45rem .55rem; font-size: .78rem; }
}

/* ═══════════════════════════════════════════════════════════════════
 * TZ display label on lesson cards  (C5)
 * ═══════════════════════════════════════════════════════════════════ */
.qb-lc-tz {
    display: inline-block; font-size: .7rem; color: var(--qb-muted);
    background: #f1f5f9; border-radius: 4px;
    padding: .05rem .3rem; margin-left: .3rem; vertical-align: middle;
    white-space: nowrap; max-width: 100px; overflow: hidden; text-overflow: ellipsis;
}

/* ═══════════════════════════════════════════════════════════════════
 * S1 / T1 — Next-lesson countdown banner
 * ═══════════════════════════════════════════════════════════════════ */
.qb-next-lesson-banner {
    background: linear-gradient(135deg, #eff6ff 0%, #dbeafe 100%);
    border: 1.5px solid #bfdbfe; border-radius: 12px;
    padding: .85rem 1.1rem; margin-bottom: 1.25rem;
}
.qb-next-lesson-banner--imminent {
    background: linear-gradient(135deg, #fef3c7 0%, #fde68a 100%);
    border-color: #f59e0b;
    animation: qb-pulse-border 2s ease-in-out infinite;
}
.qb-next-lesson-banner--teacher { margin-top: .25rem; }
@keyframes qb-pulse-border {
    0%,100% { box-shadow: 0 0 0 0 rgba(245,158,11,.3); }
    50%      { box-shadow: 0 0 0 6px rgba(245,158,11,0); }
}
.qb-nlb-inner {
    display: flex; align-items: center; gap: .85rem; flex-wrap: wrap;
}
.qb-nlb-icon { font-size: 1.3rem; flex-shrink: 0; color: #1e40af; }
.qb-next-lesson-banner--imminent .qb-nlb-icon { color: #92400e; }
.qb-nlb-body { flex: 1; min-width: 0; }
.qb-nlb-heading { display: block; font-size: .95rem; font-weight: 700; color: #1e40af; }
.qb-next-lesson-banner--imminent .qb-nlb-heading { color: #92400e; }
.qb-nlb-detail { display: block; font-size: .82rem; color: #475569; margin-top: .15rem; }
.qb-nlb-action { flex-shrink: 0; }

/* ═══════════════════════════════════════════════════════════════════
 * S2 — Sticky Zoom join bar
 * ═══════════════════════════════════════════════════════════════════ */
.qb-sticky-zoom-bar {
    position: fixed; bottom: 1.25rem; left: 50%; transform: translateX(-50%);
    z-index: 99999;
    display: flex; align-items: center; gap: .75rem;
    background: #1e293b; color: #f8fafc; border-radius: 999px;
    padding: .65rem 1.1rem; box-shadow: 0 4px 24px rgba(0,0,0,.25);
    font-size: .88rem; font-weight: 500;
    max-width: calc(100vw - 2rem); flex-wrap: wrap;
    animation: qb-slide-up .35s ease;
}
@keyframes qb-slide-up {
    from { opacity:0; transform: translateX(-50%) translateY(20px); }
    to   { opacity:1; transform: translateX(-50%) translateY(0); }
}
.qb-szb-pulse {
    width: 10px; height: 10px; border-radius: 50%;
    background: #4ade80; flex-shrink: 0;
    animation: qb-blink 1.2s ease-in-out infinite;
}
@keyframes qb-blink { 0%,100%{opacity:1} 50%{opacity:.3} }
.qb-szb-text { color: #e2e8f0; }
.qb-szb-name { color: #94a3b8; font-size: .82rem; }
.qb-szb-dismiss {
    background: none; border: none; color: #64748b; cursor: pointer;
    font-size: 1.1rem; padding: 0 .2rem; line-height: 1; flex-shrink: 0;
}
.qb-szb-dismiss:hover { color: #f8fafc; }

/* ═══════════════════════════════════════════════════════════════════
 * S4 — Teacher profile mini-card (student dashboard)
 * ═══════════════════════════════════════════════════════════════════ */
.qb-teacher-profile-card {
    background: #f8fafc; border: 1px solid var(--qb-border);
    border-radius: 12px; padding: 1rem 1.1rem; margin-bottom: 1.25rem;
}
.qb-tpc-inner { display: flex; align-items: flex-start; gap: .9rem; }
.qb-tpc-avatar {
    width: 56px; height: 56px; border-radius: 50%; object-fit: cover; flex-shrink: 0;
    border: 2px solid var(--qb-blue, #1a56db);
}
.qb-tpc-info { flex: 1; min-width: 0; }
.qb-tpc-name { display: block; font-size: 1rem; font-weight: 700; color: var(--qb-text); margin-bottom: .3rem; }
.qb-tpc-courses { display: flex; flex-wrap: wrap; gap: .3rem; margin-bottom: .4rem; }
.qb-tpc-course {
    font-size: .72rem; font-weight: 600; padding: .1rem .45rem;
    background: #eff6ff; color: #1e40af; border: 1px solid #bfdbfe; border-radius: 999px;
    text-transform: capitalize;
}
.qb-tpc-bio { font-size: .84rem; color: #475569; line-height: 1.5; margin: 0; }
.qb-tpc-loading { color: var(--qb-muted); font-size: .85rem; }

/* ═══════════════════════════════════════════════════════════════════
 * T2 — Student quick-view modal
 * ═══════════════════════════════════════════════════════════════════ */
.qb-btn-student-name {
    background: none; border: none; cursor: pointer; padding: 0;
    color: var(--qb-blue, #1a56db); font-weight: 600; font-size: inherit;
    text-decoration: none; transition: color .13s;
}
.qb-btn-student-name:hover { text-decoration: underline; }
.qb-sqv-header { display: flex; align-items: center; gap: .75rem; margin-bottom: .75rem; }
.qb-sqv-avatar { width: 48px; height: 48px; border-radius: 50%; object-fit: cover; }
.qb-sqv-name { font-size: 1rem; font-weight: 700; }
.qb-sqv-section-label { font-size: .75rem; text-transform: uppercase; letter-spacing: .04em; color: var(--qb-muted); margin-bottom: .4rem; }
.qb-sqv-history { margin: 0; padding: 0; list-style: none; }
.qb-sqv-history li { display: flex; align-items: center; gap: .5rem; padding: .35rem 0; border-bottom: 1px solid #f1f5f9; font-size: .83rem; }
.qb-sqv-dt { color: #334155; flex: 1; }
.qb-sqv-att { font-weight: 600; font-size: .78rem; }
.qb-sqv-notes { color: var(--qb-muted); }

/* ═══════════════════════════════════════════════════════════════════
 * T4 — Weekly calendar view
 * ═══════════════════════════════════════════════════════════════════ */
.qb-week-cal {
    background: #fff; border: 1px solid var(--qb-border);
    border-radius: 12px; margin-bottom: 1.25rem; overflow: hidden;
}
.qb-week-cal-header {
    display: flex; align-items: center; justify-content: space-between;
    padding: .75rem 1rem; border-bottom: 1px solid var(--qb-border);
    background: #f8fafc;
}
.qb-week-cal-header .qb-dash-title { margin: 0; }
.qb-week-cal-body { padding: .75rem; }
.qb-week-grid {
    display: grid; grid-template-columns: repeat(7, 1fr); gap: .4rem;
}
.qb-wc-day {
    min-height: 80px; border-radius: 8px; padding: .4rem .35rem;
    background: #f8fafc; border: 1px solid #f1f5f9;
    font-size: .78rem;
}
.qb-wc-day--today { background: #eff6ff; border-color: #bfdbfe; }
.qb-wc-day-label { font-weight: 700; color: var(--qb-muted); text-align: center; margin-bottom: .3rem; }
.qb-wc-date { font-size: .9rem; color: var(--qb-text); font-weight: 600; }
.qb-wc-day--today .qb-wc-date { color: var(--qb-blue, #1a56db); }
.qb-wc-slots { display: flex; flex-direction: column; gap: .2rem; }
.qb-wc-lesson {
    background: var(--qb-blue, #1a56db); color: #fff;
    border-radius: 5px; padding: .2rem .35rem;
    display: flex; flex-direction: column; gap: .05rem;
    font-size: .7rem;
}
.qb-wc-time { font-weight: 700; opacity: .9; }
.qb-wc-name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.qb-wc-badge { font-size: .65rem; background: rgba(255,255,255,.25); border-radius: 3px; padding: 0 .25rem; width: fit-content; }
.qb-wc-empty { color: #cbd5e1; text-align: center; font-size: .78rem; padding: .4rem 0; }
/* ── Upsell banner grace countdown ──────────────────────────────── */
.qb-upsell-deadline {
    margin: .6rem 0 0;
    font-size: .84rem; color: #1a56db;
    background: #eff6ff; border: 1px solid #bfdbfe;
    border-radius: 6px; padding: .45rem .75rem;
    display: inline-block;
}
.qb-upsell-deadline--urgent {
    color: #c2410c; background: #fff7ed; border-color: #fed7aa;
    animation: qb-pulse 1.5s ease-in-out infinite;
}
@keyframes qb-pulse { 0%,100%{opacity:1} 50%{opacity:.7} }

/* ── Vacation dedicated pages ────────────────────────────────────── */
.qb-vac-page-heading { margin-bottom: 1.5rem; }
.qb-vac-page-title { font-size: 1.35rem; font-weight: 700; color: #1e293b; margin: 0 0 .4rem; display: flex; align-items: center; gap: .5rem; }
.qb-vac-page-sub { font-size: .9rem; color: #64748b; margin: 0; line-height: 1.6; }

.qb-vac-page-section { background: #fff; border: 1px solid #e2e8f0; border-radius: 12px; padding: 1.4rem 1.5rem; margin-bottom: 1.25rem; }
.qb-vac-page-sh { font-size: .8rem; font-weight: 700; text-transform: uppercase; letter-spacing: .06em; color: #94a3b8; margin: 0 0 1rem; }

.qb-vac-page-policy { background: #f8fafc; border: 1px solid #e2e8f0; border-radius: 8px; padding: .85rem 1rem; margin-bottom: 1rem; font-size: .83rem; color: #475569; }
.qb-vac-policy-list { margin: 0; padding-left: 1.2rem; line-height: 1.9; }

.qb-vac-form { margin-top: .5rem; }
.qb-vac-form-row { display: grid; grid-template-columns: 1fr 1fr; gap: .75rem; margin-bottom: .75rem; }
@media (max-width: 520px) { .qb-vac-form-row { grid-template-columns: 1fr; } }

.qb-vac-page-info { font-size: .85rem; color: #64748b; display: flex; align-items: center; gap: .4rem; padding: .7rem .9rem; background: #f0f9ff; border: 1px solid #bae6fd; border-radius: 8px; }
.qb-vac-admin-note { font-size: .82rem; color: #475569; background: #fefce8; border: 1px solid #fde68a; border-radius: 8px; padding: .6rem .85rem; margin-top: .6rem; display: flex; align-items: center; gap: .4rem; }

.qb-vac-usage-bar { font-size: .85rem; color: #475569; padding: .65rem 1rem; background: #f0f9ff; border: 1px solid #bae6fd; border-radius: 8px; margin-bottom: 1.1rem; }
.qb-vac-usage-bar--warn { background: #fff7ed; border-color: #fed7aa; color: #92400e; }

.qb-tvac-policy-table { width: 100%; border-collapse: collapse; font-size: .82rem; margin-bottom: .5rem; }
.qb-tvac-policy-table th { text-align: left; font-size: .72rem; font-weight: 700; text-transform: uppercase; letter-spacing: .05em; color: #94a3b8; padding: 5px 8px; border-bottom: 1px solid #e2e8f0; }
.qb-tvac-policy-table td { padding: 7px 8px; border-bottom: 1px solid #f1f5f9; color: #334155; }
.qb-tvac-policy-table tr:last-child td { border-bottom: none; }

/* ── Vacation / Pause section (dashboard) ─────────────────────────── */
.qb-vac-section .qb-dash-section-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: .75rem; }
.qb-vac-blurb { font-size: .85rem; color: #64748b; margin: 0 0 .85rem; line-height: 1.6; }
.qb-vac-request-btn { margin-top: .25rem; }

/* Active vacation status card */
.qb-vac-status-card {
    display: flex; align-items: flex-start; gap: 1rem;
    padding: .9rem 1.1rem; border-radius: 10px;
    border: 1.5px solid; margin-bottom: .75rem;
}
.qb-vac-status--pending  { background: #fffbeb; border-color: #fde68a; }
.qb-vac-status--approved { background: #f0fdf4; border-color: #86efac; }
.qb-vac-status--rejected { background: #fff5f5; border-color: #fca5a5; }
.qb-vac-status-icon { font-size: 1.4rem; flex-shrink: 0; }
.qb-vac-status-body { flex: 1; }
.qb-vac-status-label { font-size: .9rem; font-weight: 700; color: #1e293b; display: block; margin-bottom: .2rem; }
.qb-vac-status-dates { font-size: .85rem; font-weight: 600; color: #334155; margin: 0 0 .3rem; }
.qb-vac-status-note  { font-size: .82rem; color: #64748b; margin: 0; line-height: 1.5; }

/* Preview banner inside modal */
.qb-vac-preview {
    padding: .65rem .85rem; border-radius: 8px;
    background: #eff6ff; border: 1px solid #bfdbfe;
    font-size: .83rem; color: #1e40af; margin-top: .5rem;
    display: flex; align-items: center; gap: .5rem;
}

/* Policy note at bottom of modal */
.qb-vac-policy {
    margin: .85rem 0 .25rem;
    padding: .65rem .85rem; border-radius: 8px;
    background: #f8fafc; border: 1px solid #e2e8f0;
    font-size: .78rem; color: #64748b; line-height: 1.6;
}


/* ── Lesson History Page ─────────────────────────────────────────── */
.qb-lhp-filters { background:#fff; border:1px solid #e2e8f0; border-radius:12px; padding:1.1rem 1.25rem; margin-bottom:1.25rem; }
.qb-lhp-filter-row { display:flex; flex-wrap:wrap; gap:.65rem; align-items:flex-end; }
.qb-lhp-filter-group { display:flex; flex-direction:column; gap:.3rem; min-width:110px; }
.qb-lhp-filter-lbl { font-size:.72rem; font-weight:700; text-transform:uppercase; letter-spacing:.05em; color:#94a3b8; }
.qb-lhp-results { margin-top:.25rem; }
.qb-lhp-table { display:flex; flex-direction:column; gap:.6rem; }
.qb-lhp-row {
    background:#fff; border:1px solid #e2e8f0; border-radius:10px;
    padding:.85rem 1.1rem; display:grid;
    grid-template-columns: 1fr auto auto;
    grid-template-rows: auto auto;
    gap:.3rem .85rem; align-items:start;
}
.qb-lhp-date { grid-column:1; font-size:.88rem; color:#1e293b; }
.qb-lhp-meta { grid-column:2; display:flex; gap:.35rem; flex-wrap:wrap; justify-content:flex-end; }
.qb-lhp-partner { grid-column:3; font-size:.82rem; color:#64748b; white-space:nowrap; }
.qb-lhp-notes { grid-column:1/-1; font-size:.8rem; color:#64748b; font-style:italic; padding-top:.3rem; border-top:1px solid #f1f5f9; margin-top:.3rem; }
.qb-lhp-att-pill { display:inline-flex; align-items:center; padding:.15rem .6rem; border-radius:99px; font-size:.72rem; font-weight:700; }
.qb-lhp-empty { font-size:.88rem; color:#94a3b8; text-align:center; padding:2rem; }
.qb-lhp-pager { display:flex; align-items:center; gap:.5rem; margin-top:.85rem; flex-wrap:wrap; }
.qb-lhp-page-info { font-size:.8rem; color:#94a3b8; margin-right:auto; }
@media (max-width:600px) {
    .qb-lhp-row { grid-template-columns:1fr; }
    .qb-lhp-meta, .qb-lhp-partner { grid-column:1; }
}

/* ── Teacher Email Tool ──────────────────────────────────────────── */
.qb-te-recipient-bar { display:flex; gap:.5rem; margin-bottom:.5rem; }
.qb-te-recipients { display:flex; flex-wrap:wrap; gap:.45rem; padding:.65rem .75rem; background:#f8fafc; border:1px solid #e2e8f0; border-radius:8px; max-height:200px; overflow-y:auto; }
.qb-te-recip { display:flex; align-items:center; gap:.4rem; padding:.3rem .6rem; background:#fff; border:1.5px solid #e2e8f0; border-radius:8px; cursor:pointer; font-size:.82rem; font-weight:500; transition:border-color .15s, background .15s; }
.qb-te-recip:has(input:checked) { border-color:#1a56db; background:#eff6ff; }
.qb-te-recip input { width:0; height:0; opacity:0; position:absolute; }
.qb-te-av { width:28px; height:28px; border-radius:50%; object-fit:cover; flex-shrink:0; }
.qb-te-av-ph { width:28px; height:28px; border-radius:50%; background:#1a56db; color:#fff; display:flex; align-items:center; justify-content:center; font-size:.75rem; font-weight:700; flex-shrink:0; }
.qb-te-rname { color:#334155; }


/* ── Homework section (dashboard widget + pages) ─────────────────── */
.qb-hw-section { margin-top: .5rem; }
.qb-hw-card {
    background: #fff; border: 1px solid #e2e8f0; border-radius: 10px;
    padding: .9rem 1.1rem; margin-bottom: .75rem;
}
.qb-hw-card--overdue { border-color: #fca5a5; background: #fff5f5; }
.qb-hw-card-header {
    display: flex; align-items: flex-start; justify-content: space-between;
    gap: .75rem; margin-bottom: .4rem;
}
.qb-hw-title { font-size: .92rem; font-weight: 700; color: #1e293b; flex: 1; }
.qb-hw-status-pill {
    display: inline-block; padding: .15rem .6rem; border-radius: 99px;
    font-size: .72rem; font-weight: 700; white-space: nowrap; flex-shrink: 0;
}
.qb-hw-due { font-size: .8rem; color: #64748b; margin: .25rem 0; }
.qb-hw-overdue-badge { font-size: .8rem; color: #dc2626; font-weight: 600; margin: .25rem 0; display: flex; align-items: center; gap: .3rem; }
.qb-hw-desc { font-size: .85rem; color: #334155; margin: .45rem 0 .6rem; line-height: 1.6; border-top: 1px solid #f1f5f9; padding-top: .5rem; }
.qb-hw-link { margin-top: .5rem; display: inline-flex; }
.qb-hw-teacher { font-size: .75rem; color: #94a3b8; margin: .5rem 0 0; }

/* Teacher homework card extras */
.qb-hw-card--teacher { }
.qb-thw-list { display: flex; flex-direction: column; gap: .65rem; margin-top: .5rem; }

/* Homework page controls */
.qb-hw-page-ctrl { display: flex; gap: .65rem; flex-wrap: wrap; margin-bottom: 1rem; }


/* ── Per-child credit allocation bars (family card) ─────────────── */
.qb-fc-child-cr-wrap {
    margin-top: .5rem; padding-top: .5rem;
    border-top: 1px solid #f1f5f9;
    display: flex; flex-direction: column; gap: .3rem;
}
.qb-fc-child-cr {
    display: flex; align-items: center; gap: .5rem;
    font-size: .75rem;
}
.qb-fc-child-cr-teacher {
    flex: 0 0 90px; color: #64748b;
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.qb-fc-child-cr-bar {
    flex: 1; height: 6px; background: #e2e8f0; border-radius: 99px; overflow: hidden;
}
.qb-fc-child-cr-bar span {
    display: block; height: 100%; border-radius: 99px;
    transition: width .3s ease;
}
.qb-fc-child-cr-nums {
    flex: 0 0 36px; text-align: right; font-weight: 700;
}


/* ── Preply-style Hero Panel ────────────────────────────────────── */
.qb-hero-panel {
    background: linear-gradient(135deg, #f0f6ff 0%, #e8f0fe 100%);
    border-radius: 16px;
    padding: 1.5rem 1.75rem;
    margin-bottom: 1.5rem;
    border: 1px solid #bfdbfe;
    position: relative;
    overflow: hidden;
}
.qb-hero-panel::before {
    content: '';
    position: absolute; top: 0; right: 0;
    width: 200px; height: 200px;
    background: radial-gradient(circle at top right, rgba(59,130,246,.08), transparent 70%);
    pointer-events: none;
}
.qb-hero-panel--soon {
    background: linear-gradient(135deg, #fef3c7 0%, #fde68a 100%);
    border-color: #f59e0b;
}
.qb-hero-panel--now {
    background: linear-gradient(135deg, #d1fae5 0%, #a7f3d0 100%);
    border-color: #10b981;
    animation: qb-hero-glow 2s ease-in-out infinite;
}
@keyframes qb-hero-glow { 0%,100%{ box-shadow:0 0 0 0 rgba(16,185,129,0) } 50%{ box-shadow:0 0 0 6px rgba(16,185,129,.15) } }

.qb-hero-inner { position: relative; }
.qb-hero-inner--empty { opacity: .6; }
.qb-hero-greet { font-size: .85rem; color: #64748b; margin: 0 0 .3rem; font-weight: 500; }
.qb-hero-headline {
    font-size: 1.55rem; font-weight: 800; color: #1e293b;
    margin: 0 0 1rem; line-height: 1.25;
}
.qb-hero-headline strong { color: #1a56db; }
.qb-hero-panel--soon .qb-hero-headline strong { color: #b45309; }
.qb-hero-panel--now  .qb-hero-headline strong { color: #059669; }

.qb-hero-lesson-card {
    background: rgba(255,255,255,.75);
    backdrop-filter: blur(4px);
    border-radius: 12px;
    padding: 1rem 1.1rem;
    display: flex;
    align-items: center;
    gap: 1rem;
    border: 1px solid rgba(255,255,255,.9);
}
.qb-hero-avatar {
    width: 56px; height: 56px; border-radius: 50%;
    object-fit: cover; border: 2px solid #fff;
    box-shadow: 0 2px 8px rgba(0,0,0,.1);
    flex-shrink: 0;
}
.qb-hero-lesson-info { flex: 1; min-width: 0; }
.qb-hero-lesson-date {
    font-size: .95rem; font-weight: 700; color: #1e293b; margin: 0 0 .2rem;
}
.qb-hero-lesson-detail {
    font-size: .82rem; color: #64748b; margin: 0 0 .2rem;
}
.qb-hero-lesson-partner {
    font-size: .82rem; color: #475569; margin: 0;
    display: flex; align-items: center; gap: .3rem;
}
.qb-hero-action { flex-shrink: 0; }
.qb-hero-join {
    font-size: .9rem; padding: .55rem 1.1rem;
    box-shadow: 0 2px 8px rgba(26,86,219,.25);
}

/* Teacher profile public page */
.qb-teacher-profile-page { max-width: 760px; }
.qb-tpp-header {
    display: flex; align-items: flex-start; gap: 1.5rem;
    padding: 1.5rem 0 1.5rem; margin-bottom: 1.5rem;
    border-bottom: 1px solid #e2e8f0;
}
.qb-tpp-avatar {
    width: 120px; height: 120px; border-radius: 50%;
    object-fit: cover; border: 3px solid #e2e8f0;
    flex-shrink: 0;
    box-shadow: 0 4px 16px rgba(0,0,0,.1);
}
.qb-tpp-info { flex: 1; }
.qb-tpp-name { font-size: 1.6rem; font-weight: 800; color: #1e293b; margin: 0 0 .6rem; }
.qb-tpp-courses { display: flex; flex-wrap: wrap; gap: .4rem; margin-bottom: .6rem; }
.qb-tpp-course {
    background: #eff6ff; color: #1a56db; border: 1px solid #bfdbfe;
    border-radius: 99px; padding: .25rem .8rem;
    font-size: .8rem; font-weight: 700; text-transform: capitalize;
}
.qb-tpp-tz { font-size: .85rem; color: #64748b; margin: 0 0 .9rem; }
.qb-tpp-book-btn { display: inline-flex; }
.qb-tpp-bio { margin-top: 1rem; }
.qb-tpp-bio-heading { font-size: 1.1rem; font-weight: 700; color: #1e293b; margin: 0 0 .75rem; }
.qb-tpp-bio-content { font-size: .92rem; color: #334155; line-height: 1.75; }

@media (max-width: 560px) {
    .qb-hero-panel { padding: 1.1rem 1.1rem; }
    .qb-hero-headline { font-size: 1.2rem; }
    .qb-hero-lesson-card { flex-wrap: wrap; }
    .qb-tpp-header { flex-direction: column; align-items: center; text-align: center; }
    .qb-tpp-courses { justify-content: center; }
}


/* ── "Up Next" timeline strip ─────────────────────────────────────── */
.qb-up-next-strip {
    margin: 0 0 1.25rem;
}
.qb-up-next-heading {
    font-size: 1.1rem; font-weight: 700; color: #1e293b;
    margin: 0 0 .75rem;
    display: flex; align-items: center; gap: .4rem;
}
.qb-un-timeline {
    display: flex; flex-direction: column; gap: .6rem;
    padding-left: 1rem;
    border-left: 2px solid #e2e8f0;
}
.qb-un-item {
    display: flex; align-items: flex-start; gap: .75rem;
    position: relative;
}
.qb-un-dot {
    width: 28px; height: 28px; border-radius: 50%;
    background: #fff; border: 2px solid #cbd5e1;
    display: flex; align-items: center; justify-content: center;
    flex-shrink: 0; color: #64748b;
    margin-left: -1.9rem;
    box-shadow: 0 1px 3px rgba(0,0,0,.06);
}
.qb-un-dot svg { width: 13px; height: 13px; }
.qb-un-item--warn .qb-un-dot {
    border-color: #f59e0b; color: #b45309; background: #fffbeb;
}
.qb-un-body {
    font-size: .875rem; color: #334155; line-height: 1.6;
    padding: .25rem 0;
}
.qb-un-body strong { color: #1e293b; }


/* ── Lesson resource link ────────────────────────────────────────── */
.qb-resource-link {
    display: inline-flex; align-items: center; gap: .3rem;
    font-size: .8rem; color: #1a56db; text-decoration: none; font-weight: 600;
    padding: .2rem .5rem; border: 1px solid #bfdbfe; border-radius: 5px;
    background: #eff6ff; transition: background .15s;
}
.qb-resource-link:hover { background: #dbeafe; }

@media (max-width: 600px) {
    .qb-week-grid { grid-template-columns: repeat(7, minmax(36px, 1fr)); gap: .25rem; overflow-x: auto; }
    .qb-wc-name { display: none; }
}

/* ═══════════════════════════════════════════════════════════════════
 * Stats strip: active filter state (T3)
 * ═══════════════════════════════════════════════════════════════════ */
.qb-tstat--active { outline: 2.5px solid var(--qb-blue, #1a56db) !important; }

/* ═══════════════════════════════════════════════════════════════════
 * Dash section header row (used by past lessons + weekly teacher)
 * ═══════════════════════════════════════════════════════════════════ */
.qb-dash-section-header {
    display: flex; align-items: center; justify-content: space-between;
    margin-bottom: .75rem; flex-wrap: wrap; gap: .5rem;
}
.qb-dash-section-header .qb-dash-title { margin: 0; }
/* ════════════════════════════════════════════════════════════════════
 * QARI BOOKING — UNIFIED BUTTON & MANAGER DESIGN TOKENS
 * All manager shortcodes (lsm, cum, tcm, usm, trm) share these tokens.
 * Override per-page by setting CSS variables on the container element.
 * ════════════════════════════════════════════════════════════════════ */

/* ── Shared manager token layer (aliases to global qb- vars) ─────── */
:root {
  /* Manager buttons inherit the global qb-btn tokens */
  --mgr-btn-p-bg:          var(--qb-btn-p-bg,       #1a56db);
  --mgr-btn-p-color:       var(--qb-btn-p-color,    #fff);
  --mgr-btn-p-border:      var(--qb-btn-p-border,   #1a56db);
  --mgr-btn-p-hover-bg:    var(--qb-btn-p-hover-bg, #1e40af);
  --mgr-btn-p-hover-bdr:   var(--qb-btn-p-hover-bdr,#1e40af);

  --mgr-btn-g-bg:          var(--qb-btn-g-bg,       #f1f5f9);
  --mgr-btn-g-color:       var(--qb-btn-g-color,    #475569);
  --mgr-btn-g-border:      var(--qb-btn-g-border,   #e2e8f0);
  --mgr-btn-g-hover-bg:    var(--qb-btn-g-hover-bg, #e2e8f0);
  --mgr-btn-g-hover-color: var(--qb-btn-g-hover-color,#1e293b);

  --mgr-btn-d-bg:          var(--qb-red,        #dc2626);
  --mgr-btn-d-color:       #fff;
  --mgr-btn-d-border:      var(--qb-red,        #dc2626);
  --mgr-btn-d-hover-bg:    var(--qb-red-dark,   #b91c1c);
  --mgr-btn-d-hover-bdr:   var(--qb-red-dark,   #b91c1c);

  --mgr-btn-accent-bg:     #7c3aed;
  --mgr-btn-accent-color:  #fff;
  --mgr-btn-accent-border: #6d28d9;
  --mgr-btn-accent-hover-bg:  #6d28d9;
  --mgr-btn-accent-hover-bdr: #5b21b6;

  --mgr-btn-switch-bg:     #0891b2;
  --mgr-btn-switch-color:  #fff;
  --mgr-btn-switch-border: #0e7490;
  --mgr-btn-switch-hover-bg:  #0e7490;

  /* Focus ring from global token */
  --mgr-focus-ring: var(--qb-blue-ring, rgba(26,86,219,.35));
  --mgr-focus-ring-danger: var(--qb-red-ring, rgba(220,38,38,.35));

  /* Modal close */
  --mgr-modal-close-color:    #94a3b8;
  --mgr-modal-close-bg-hover: #f1f5f9;
}

/* ── UNIFIED BASE BUTTON (.lsm-btn / .cum-btn / .tcm-btn / .usm-btn / .trm-btn)
   All manager prefixes map to the same shape.  ──────────────────────────────── */

.lsm-btn, .cum-btn, .tcm-btn, .usm-btn, .trm-btn,
.lsm-btn:visited, .cum-btn:visited, .tcm-btn:visited {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 6px 13px;
  border-radius: 6px;
  font-size: 13px;
  font-weight: 600;
  cursor: pointer;
  border: 1.5px solid transparent;
  text-decoration: none;
  line-height: 1.4;
  transition: background .15s, border-color .15s, color .15s, box-shadow .15s;
}

/* Disabled state */
.lsm-btn:disabled, .cum-btn:disabled, .tcm-btn:disabled,
.usm-btn:disabled, .trm-btn:disabled {
  opacity: .5;
  cursor: not-allowed;
  pointer-events: none;
}

/* Focus ring — shared */
.lsm-btn:focus-visible, .cum-btn:focus-visible, .tcm-btn:focus-visible,
.usm-btn:focus-visible, .trm-btn:focus-visible {
  outline: none;
  box-shadow: 0 0 0 3px var(--mgr-focus-ring);
}

/* ── PRIMARY ──────────────────────────────────────────────────────── */
.lsm-btn-primary, .cum-btn-primary, .tcm-btn-primary,
.usm-btn-primary,
.trm-btn--primary,
[class$="-btn-primary"], [class*="-btn-primary "] {
  background:    var(--mgr-btn-p-bg);
  color:         var(--mgr-btn-p-color);
  border-color:  var(--mgr-btn-p-border);
}
.lsm-btn-primary:hover:not(:disabled),
.cum-btn-primary:hover:not(:disabled),
.tcm-btn-primary:hover:not(:disabled),
.usm-btn-primary:hover:not(:disabled),
.trm-btn--primary:hover:not(:disabled) {
  background:   var(--mgr-btn-p-hover-bg);
  border-color: var(--mgr-btn-p-hover-bdr);
  color:        var(--mgr-btn-p-color);
}
.lsm-btn-primary:focus-visible,
.cum-btn-primary:focus-visible,
.tcm-btn-primary:focus-visible,
.usm-btn-primary:focus-visible,
.trm-btn--primary:focus-visible {
  box-shadow: 0 0 0 3px var(--mgr-focus-ring);
}

/* ── SECONDARY / GHOST ────────────────────────────────────────────── */
.lsm-btn-secondary, .cum-btn-secondary, .tcm-btn-secondary,
.usm-btn-secondary, .tcm-btn-ghost,
.trm-btn--ghost,
[class$="-btn-secondary"], [class*="-btn-secondary "] {
  background:   var(--mgr-btn-g-bg);
  color:        var(--mgr-btn-g-color);
  border-color: var(--mgr-btn-g-border);
}
.lsm-btn-secondary:hover:not(:disabled),
.cum-btn-secondary:hover:not(:disabled),
.tcm-btn-secondary:hover:not(:disabled),
.usm-btn-secondary:hover:not(:disabled),
.tcm-btn-ghost:hover:not(:disabled),
.trm-btn--ghost:hover:not(:disabled) {
  background:   var(--mgr-btn-g-hover-bg);
  color:        var(--mgr-btn-g-hover-color);
  border-color: var(--mgr-btn-g-border);
}

/* ── DANGER ───────────────────────────────────────────────────────── */
.lsm-btn-danger, .cum-btn-danger, .tcm-btn-danger,
.usm-btn-danger,
.trm-btn--danger-full,
[class$="-btn-danger"], [class*="-btn-danger "] {
  background:   var(--mgr-btn-d-bg);
  color:        var(--mgr-btn-d-color);
  border-color: var(--mgr-btn-d-border);
}
.lsm-btn-danger:hover:not(:disabled),
.cum-btn-danger:hover:not(:disabled),
.tcm-btn-danger:hover:not(:disabled),
.usm-btn-danger:hover:not(:disabled),
.usm-btn-danger:focus:not(:disabled),
.trm-btn--danger-full:hover:not(:disabled) {
  background:   var(--mgr-btn-d-hover-bg);
  border-color: var(--mgr-btn-d-hover-bdr);
  color:        var(--mgr-btn-d-color);
}
.lsm-btn-danger:focus-visible,
.cum-btn-danger:focus-visible,
.tcm-btn-danger:focus-visible,
.usm-btn-danger:focus-visible,
.trm-btn--danger-full:focus-visible {
  box-shadow: 0 0 0 3px var(--mgr-focus-ring-danger);
}

/* ── ACCENT (purple — payout rates, homework, etc.) ──────────────── */
.lsm-btn-accent, .cum-btn-accent, .tcm-btn-accent, .usm-btn-accent {
  background:   var(--mgr-btn-accent-bg);
  color:        var(--mgr-btn-accent-color);
  border-color: var(--mgr-btn-accent-border);
}
.lsm-btn-accent:hover:not(:disabled),
.cum-btn-accent:hover:not(:disabled),
.tcm-btn-accent:hover:not(:disabled),
.usm-btn-accent:hover:not(:disabled) {
  background:   var(--mgr-btn-accent-hover-bg);
  border-color: var(--mgr-btn-accent-hover-bdr);
  color:        var(--mgr-btn-accent-color);
}

/* ── SWITCH (teal — user switching) ──────────────────────────────── */
.cum-btn-switch, .tcm-btn-switch, .usm-btn-switch {
  background:   var(--mgr-btn-switch-bg);
  color:        var(--mgr-btn-switch-color);
  border-color: var(--mgr-btn-switch-border);
}
.cum-btn-switch:hover:not(:disabled),
.tcm-btn-switch:hover:not(:disabled),
.usm-btn-switch:hover:not(:disabled) {
  background:   var(--mgr-btn-switch-hover-bg);
  border-color: var(--mgr-btn-switch-hover-bg);
  color:        var(--mgr-btn-switch-color);
}

/* Modal close button styles → managers.css (.mgr-modal-close) */

/* Small size modifier */
.lsm-btn.lsm-btn--sm,
.cum-btn.cum-btn--sm,
.tcm-btn.tcm-btn--sm,
.usm-btn.usm-btn--sm {
  padding: 4px 9px;
  font-size: 12px;
}
