/* ==========================================================================
   FTI LMS Frontend Styles (v1.6.0)
   Modern base layer. All colour/elevation/radius comes from the brand tokens
   in brand.css (--fti-*); every rule here carries a sensible fallback so the
   UI still renders if brand.css is ever absent.
   Breakpoints: 920px (layout collapse) and 640px (small phones).
   ========================================================================== */

/* ---- Base -------------------------------------------------------------- */
.fti-lms-page,
.fti-lms-catalogue,
.fti-lms-dashboard,
.fti-lms-auth-wrap,
.fti-lms-course-public,
.fti-lms-single-lesson {
    font-family: var(--fti-font, 'Poppins', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif);
    color: var(--fti-ink, #241a12);
    -webkit-font-smoothing: antialiased;
    line-height: 1.6;
}

.fti-lms-catalogue h1,
.fti-lms-dashboard h1,
.fti-lms-auth-head h1,
.fti-lms-course-public h1,
.fti-lms-single-lesson h1 {
    font-size: clamp(1.7rem, 1.2rem + 2vw, 2.4rem);
    letter-spacing: -0.02em;
    line-height: 1.15;
    margin: 0 0 0.4em;
}

.fti-lms-block h2,
.fti-lms-section h2 {
    font-size: clamp(1.25rem, 1.05rem + 0.9vw, 1.6rem);
    letter-spacing: -0.01em;
    margin: 0 0 0.75em;
}

/* ---- Buttons ------------------------------------------------------------ */
.fti-lms-btn {
    display: inline-block;
    padding: 11px 22px;
    border: 1px solid transparent;
    border-radius: var(--fti-radius-sm, 8px);
    font-size: 15px;
    font-weight: 600;
    line-height: 1.4;
    text-decoration: none;
    cursor: pointer;
    transition: transform 0.12s ease, box-shadow 0.12s ease, background 0.12s ease, border-color 0.12s ease;
}

.fti-lms-btn-lg { padding: 14px 28px; font-size: 16px; }
.fti-lms-btn-block { display: block; width: 100%; text-align: center; box-sizing: border-box; }

.fti-lms-btn-primary {
    background: var(--fti-red, #C8102E);
    border-color: var(--fti-red, #C8102E);
    color: #fff;
}
.fti-lms-btn-primary:hover,
.fti-lms-btn-primary:focus {
    background: var(--fti-red-dark, #9E0B23);
    border-color: var(--fti-red-dark, #9E0B23);
    color: #fff;
    transform: translateY(-1px);
    box-shadow: var(--fti-shadow, 0 6px 22px rgba(36,26,18,.12));
}

.fti-lms-btn-secondary {
    background: var(--fti-surface, #fff);
    color: var(--fti-ink, #241a12);
    border-color: var(--fti-line, #e7e3df);
}
.fti-lms-btn-secondary:hover {
    background: var(--fti-bg, #faf8f6);
    color: var(--fti-ink, #241a12);
    transform: translateY(-1px);
}

.fti-lms-btn-text {
    background: none;
    border: none;
    color: var(--fti-muted, #5b6470);
    font-weight: 500;
    padding: 8px 4px;
}
.fti-lms-btn-text:hover { color: var(--fti-red, #C8102E); }

.fti-lms-btn:focus-visible,
.fti-lms-form input:focus-visible,
.fti-lms-form textarea:focus-visible,
.fti-lms-tab:focus-visible,
.fti-lms-course-card:focus-visible,
a.fti-lms-btn:focus-visible {
    outline: none;
    box-shadow: var(--fti-focus, 0 0 0 3px rgba(200,16,46,.30));
}

/* ---- Toasts (v1.6.0 — replaces alert()) --------------------------------- */
.fti-lms-toast {
    position: fixed;
    left: 50%;
    bottom: 28px;
    transform: translate(-50%, 16px);
    max-width: min(92vw, 420px);
    padding: 13px 20px;
    background: var(--fti-ink, #241a12);
    color: #fff;
    font-size: 14.5px;
    font-weight: 500;
    border-radius: var(--fti-radius-sm, 8px);
    box-shadow: var(--fti-shadow-lg, 0 18px 48px rgba(36,26,18,.25));
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.25s ease, transform 0.25s ease;
    z-index: 100000;
}
.fti-lms-toast.is-visible { opacity: 1; transform: translate(-50%, 0); }
.fti-lms-toast.is-success { background: #166534; }
.fti-lms-toast.is-error   { background: var(--fti-red-dark, #9E0B23); }

/* ---- Forms / auth ------------------------------------------------------- */
.fti-lms-auth-wrap { display: flex; justify-content: center; padding: clamp(16px, 4vw, 48px) 16px; }

.fti-lms-auth-card {
    width: 100%;
    max-width: 620px;
    background: var(--fti-surface, #fff);
    border: 1px solid var(--fti-line, #e7e3df);
    border-radius: var(--fti-radius, 14px);
    box-shadow: var(--fti-shadow, 0 6px 22px rgba(36,26,18,.08));
    padding: clamp(24px, 4vw, 40px);
    box-sizing: border-box;
}
.fti-lms-auth-card-narrow { max-width: 440px; }

.fti-lms-auth-head { margin-bottom: 22px; }
.fti-lms-auth-head p { color: var(--fti-muted, #5b6470); margin: 0; }

.fti-lms-form .fti-lms-field { margin-bottom: 16px; }
.fti-lms-field-row { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }

.fti-lms-form label {
    display: block;
    margin-bottom: 6px;
    font-weight: 600;
    font-size: 14px;
}
.fti-lms-form label .req { color: var(--fti-red, #C8102E); }

.fti-lms-form input[type="text"],
.fti-lms-form input[type="email"],
.fti-lms-form input[type="tel"],
.fti-lms-form textarea {
    width: 100%;
    padding: 12px 14px;
    border: 1px solid var(--fti-line, #e7e3df);
    border-radius: var(--fti-radius-sm, 8px);
    font-size: 15px;
    font-family: inherit;
    background: var(--fti-surface, #fff);
    color: var(--fti-ink, #241a12);
    box-sizing: border-box;
    transition: border-color 0.12s ease;
}
.fti-lms-form input:focus,
.fti-lms-form textarea:focus {
    outline: none;
    border-color: var(--fti-red, #C8102E);
}

.fti-lms-check { display: flex; gap: 10px; align-items: flex-start; margin: 14px 0 18px; font-size: 14px; color: var(--fti-muted, #5b6470); }
.fti-lms-check input { margin-top: 3px; }

.fti-lms-form-msg { min-height: 1.4em; margin: 12px 0 0; font-size: 14px; }
.fti-lms-form-msg.ok  { color: #1a7f37; }
.fti-lms-form-msg.err { color: var(--fti-red-dark, #9E0B23); }

.fti-lms-step-hint { color: var(--fti-muted, #5b6470); }
.fti-lms-auth-alt { margin-top: 20px; font-size: 14px; color: var(--fti-muted, #5b6470); }
.fti-lms-auth-alt a, .fti-lms-login-hint a { color: var(--fti-red, #C8102E); }

.fti-lms-message { margin-top: 15px; padding: 12px 14px; border-radius: var(--fti-radius-sm, 8px); }
.fti-lms-message.success { background: #e7f5ec; color: #155724; border: 1px solid #c4e6d0; }
.fti-lms-message.error   { background: #fdebed; color: #721c24; border: 1px solid #f5c6cb; }

/* ---- Catalogue / dashboards --------------------------------------------- */
.fti-lms-catalogue, .fti-lms-dashboard { max-width: 1180px; margin: 0 auto; padding: 8px 0 32px; }

.fti-lms-catalogue-head { margin-bottom: 28px; }
.fti-lms-catalogue-head p { color: var(--fti-muted, #5b6470); margin: 0; font-size: 16.5px; }

.fti-lms-dashboard-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 16px;
    flex-wrap: wrap;
    margin-bottom: 26px;
}

.fti-lms-stats-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 180px), 1fr));
    gap: 16px;
    margin-bottom: 30px;
}

.fti-lms-stat-card {
    background: var(--fti-surface, #fff);
    border: 1px solid var(--fti-line, #e7e3df);
    border-radius: var(--fti-radius, 14px);
    box-shadow: var(--fti-shadow-sm, 0 1px 3px rgba(36,26,18,.06));
    padding: 20px 22px;
}
.fti-lms-stat-card h3 {
    margin: 0 0 6px;
    font-size: 13px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--fti-muted, #5b6470);
}
.fti-lms-stat-card .stat-value {
    margin: 0;
    font-size: clamp(1.6rem, 1.3rem + 1vw, 2.1rem);
    font-weight: 700;
    color: var(--fti-red, #C8102E);
    line-height: 1.1;
}

.fti-lms-upgrade-card {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 20px;
    flex-wrap: wrap;
    background: linear-gradient(135deg, var(--fti-surface, #fff) 55%, rgba(245,179,1,.10));
    border: 1px solid rgba(181,121,10,.35);
    border-radius: var(--fti-radius, 14px);
    box-shadow: var(--fti-shadow-sm, 0 1px 3px rgba(36,26,18,.06));
    padding: 20px 24px;
    margin-bottom: 30px;
}
.fti-lms-upgrade-card h3 { margin: 0 0 4px; }
.fti-lms-upgrade-actions { display: flex; gap: 10px; flex-wrap: wrap; align-items: center; }
.fti-lms-upgrade-card p { margin: 0; color: var(--fti-muted, #5b6470); }

.fti-lms-section { margin-bottom: 34px; }

/* ---- Course cards -------------------------------------------------------- */
.fti-lms-course-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(min(100%, 264px), 1fr));
    gap: 22px;
}

.fti-lms-course-card {
    display: flex;
    flex-direction: column;
    background: var(--fti-surface, #fff);
    border: 1px solid var(--fti-line, #e7e3df);
    border-radius: var(--fti-radius, 14px);
    box-shadow: var(--fti-shadow-sm, 0 1px 3px rgba(36,26,18,.06));
    overflow: hidden;
    text-decoration: none;
    color: var(--fti-ink, #241a12);
    transition: transform 0.16s ease, box-shadow 0.16s ease;
}
.fti-lms-course-card:hover {
    transform: translateY(-3px);
    box-shadow: var(--fti-shadow-lg, 0 18px 48px rgba(36,26,18,.14));
    color: var(--fti-ink, #241a12);
}

.fti-lms-card-thumb {
    display: block;
    aspect-ratio: 16 / 9;
    background-size: cover;
    background-position: center;
    background-color: var(--fti-bg, #faf8f6);
}
.fti-lms-card-thumb-empty {
    display: flex;
    align-items: center;
    justify-content: center;
    background: linear-gradient(135deg, var(--fti-red, #C8102E), var(--fti-red-dark, #9E0B23));
}
.fti-lms-card-thumb-empty span {
    font-size: 44px;
    font-weight: 700;
    color: rgba(255,255,255,.85);
}

.fti-lms-card-body {
    display: flex;
    flex-direction: column;
    gap: 7px;
    padding: 18px 20px 20px;
    flex: 1;
}
.fti-lms-card-eyebrow {
    font-size: 12px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--fti-gold-dark, #B5790A);
}
.fti-lms-card-title { font-size: 17.5px; font-weight: 700; line-height: 1.3; }
.fti-lms-card-excerpt { font-size: 14px; color: var(--fti-muted, #5b6470); }
.fti-lms-card-meta {
    display: flex;
    gap: 12px;
    font-size: 13px;
    color: var(--fti-muted, #5b6470);
}
.fti-lms-card-cta {
    margin-top: auto;
    padding-top: 8px;
    font-size: 14px;
    font-weight: 600;
    color: var(--fti-red, #C8102E);
}

.fti-lms-empty-state {
    text-align: center;
    padding: 48px 24px;
    background: var(--fti-bg, #faf8f6);
    border: 1px dashed var(--fti-line, #e7e3df);
    border-radius: var(--fti-radius, 14px);
}
.fti-lms-empty-state p { color: var(--fti-muted, #5b6470); margin: 0 0 16px; }

/* ---- Progress ------------------------------------------------------------ */
.fti-lms-progress-bar {
    display: block;
    height: 8px;
    background: var(--fti-bg, #f1edea);
    border-radius: 99px;
    overflow: hidden;
    margin: 6px 0 4px;
}
.fti-lms-progress-fill {
    display: block;
    height: 100%;
    border-radius: 99px;
    background: linear-gradient(90deg, var(--fti-red, #C8102E), var(--fti-gold, #F5B301));
    transition: width 0.4s ease;
}
.fti-lms-progress-text { font-size: 13.5px; color: var(--fti-muted, #5b6470); margin: 4px 0 0; }

/* ---- Public course page --------------------------------------------------- */
.fti-lms-course-public { max-width: 1180px; margin: 0 auto; }

.fti-lms-course-hero {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 320px;
    gap: 32px;
    align-items: start;
    margin-bottom: 36px;
}

.fti-lms-eyebrow {
    font-size: 13px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.07em;
    color: var(--fti-gold-dark, #B5790A);
    margin: 0 0 6px;
}
.fti-lms-instructor { color: var(--fti-muted, #5b6470); margin: 0 0 8px; }
.fti-lms-hero-rating { display: flex; align-items: center; gap: 8px; margin: 0 0 16px; font-weight: 600; }
.fti-lms-hero-rating small { color: var(--fti-muted, #5b6470); font-weight: 400; }

.fti-lms-hero-video, .fti-lms-hero-thumb {
    border-radius: var(--fti-radius, 14px);
    overflow: hidden;
    box-shadow: var(--fti-shadow, 0 6px 22px rgba(36,26,18,.08));
}
.fti-lms-hero-thumb { width: 100%; display: block; }

.fti-lms-course-side { position: sticky; top: 24px; }
.fti-lms-info-card {
    background: var(--fti-surface, #fff);
    border: 1px solid var(--fti-line, #e7e3df);
    border-radius: var(--fti-radius, 14px);
    box-shadow: var(--fti-shadow, 0 6px 22px rgba(36,26,18,.08));
    padding: 22px;
}
.fti-lms-info-list { list-style: none; margin: 0 0 18px; padding: 0; }
.fti-lms-info-list li {
    display: flex;
    justify-content: space-between;
    gap: 12px;
    padding: 9px 0;
    border-bottom: 1px solid var(--fti-line, #e7e3df);
    font-size: 14.5px;
}
.fti-lms-info-list li:last-child { border-bottom: none; }
.fti-lms-info-list li span { color: var(--fti-muted, #5b6470); }

.fti-lms-course-body { max-width: 820px; }
.fti-lms-block { margin-bottom: 36px; }
.fti-lms-richtext { color: var(--fti-ink, #241a12); }

.fti-lms-check-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 10px; }
.fti-lms-check-list li { position: relative; padding-left: 30px; }
.fti-lms-check-list li:before {
    content: "";
    position: absolute;
    left: 0;
    top: 4px;
    width: 14px;
    height: 7px;
    border-left: 2.5px solid var(--fti-red, #C8102E);
    border-bottom: 2.5px solid var(--fti-red, #C8102E);
    transform: rotate(-45deg);
}

/* Tabs */
.fti-lms-tab-nav { display: flex; gap: 4px; flex-wrap: wrap; border-bottom: 2px solid var(--fti-line, #e7e3df); margin-bottom: 18px; }
.fti-lms-tab {
    background: none;
    border: none;
    border-bottom: 3px solid transparent;
    margin-bottom: -2px;
    padding: 10px 16px;
    font-size: 15px;
    font-weight: 600;
    color: var(--fti-muted, #5b6470);
    cursor: pointer;
    transition: color 0.12s ease, border-color 0.12s ease;
}
.fti-lms-tab:hover { color: var(--fti-ink, #241a12); }
.fti-lms-tab.is-active { color: var(--fti-red, #C8102E); border-bottom-color: var(--fti-red, #C8102E); }
.fti-lms-tab-panel { display: none; }
.fti-lms-tab-panel.is-active { display: block; }

/* Curriculum rows */
.fti-lms-lesson-list { border: 1px solid var(--fti-line, #e7e3df); border-radius: var(--fti-radius, 14px); overflow: hidden; }
.fti-lms-lesson-item {
    display: flex;
    align-items: center;
    gap: 16px;
    padding: 15px 20px;
    background: var(--fti-surface, #fff);
    border-bottom: 1px solid var(--fti-line, #e7e3df);
    transition: background 0.12s ease;
}
.fti-lms-lesson-item:last-child { border-bottom: none; }
.fti-lms-lesson-item:hover { background: var(--fti-bg, #faf8f6); }
.fti-lms-lesson-item .lesson-number {
    flex-shrink: 0;
    width: 32px;
    height: 32px;
    border-radius: 50%;
    background: var(--fti-bg, #faf8f6);
    border: 1px solid var(--fti-line, #e7e3df);
    color: var(--fti-ink, #241a12);
    font-size: 13.5px;
    font-weight: 700;
    display: flex;
    align-items: center;
    justify-content: center;
}
.fti-lms-lesson-item .lesson-details { flex: 1; min-width: 0; }
.fti-lms-lesson-item .lesson-details h3 { margin: 0 0 2px; font-size: 15.5px; }
.fti-lms-lesson-item .lesson-duration { font-size: 13px; color: var(--fti-muted, #5b6470); margin-right: 12px; }
.lesson-free { font-size: 13px; font-weight: 700; color: var(--fti-gold-dark, #B5790A); }
.lesson-locked { font-size: 17px; opacity: 0.55; }

/* Reviews */
.fti-lms-stars { color: var(--fti-gold, #F5B301); letter-spacing: 1px; }
.fti-lms-star.is-empty { opacity: 0.3; }

.fti-lms-reviews-summary {
    display: grid;
    grid-template-columns: 140px minmax(0, 1fr);
    gap: 28px;
    align-items: center;
    background: var(--fti-surface, #fff);
    border: 1px solid var(--fti-line, #e7e3df);
    border-radius: var(--fti-radius, 14px);
    padding: 22px 26px;
    margin-bottom: 22px;
}
.fti-lms-reviews-score { text-align: center; }
.fti-lms-score-num { display: block; font-size: 44px; font-weight: 800; line-height: 1; }
.fti-lms-reviews-score small { color: var(--fti-muted, #5b6470); }

.fti-lms-review-bar-row { display: grid; grid-template-columns: 34px minmax(0,1fr) 44px; gap: 10px; align-items: center; margin-bottom: 6px; font-size: 13px; }
.fti-lms-bar-label { color: var(--fti-muted, #5b6470); }
.fti-lms-bar-track { display: block; height: 8px; border-radius: 99px; background: var(--fti-bg, #f1edea); overflow: hidden; }
.fti-lms-bar-fill { display: block; height: 100%; background: var(--fti-gold, #F5B301); border-radius: 99px; }
.fti-lms-bar-pct { color: var(--fti-muted, #5b6470); text-align: right; }

.fti-lms-review-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 14px; }
.fti-lms-review {
    background: var(--fti-surface, #fff);
    border: 1px solid var(--fti-line, #e7e3df);
    border-radius: var(--fti-radius, 14px);
    padding: 18px 22px;
}
.fti-lms-review-head { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; margin-bottom: 6px; }
.fti-lms-review-head small { color: var(--fti-muted, #5b6470); }
.fti-lms-review-body p { margin: 0; }

/* Review form + star input */
.fti-lms-review-form {
    background: var(--fti-bg, #faf8f6);
    border: 1px solid var(--fti-line, #e7e3df);
    border-radius: var(--fti-radius, 14px);
    padding: 20px 22px;
    margin-bottom: 24px;
}
.fti-lms-review-form h3 { margin: 0 0 10px; }
.fti-lms-review-form textarea {
    width: 100%;
    box-sizing: border-box;
    margin: 10px 0 14px;
    padding: 12px 14px;
    border: 1px solid var(--fti-line, #e7e3df);
    border-radius: var(--fti-radius-sm, 8px);
    font-family: inherit;
    font-size: 15px;
}
.fti-lms-star-input { display: inline-flex; flex-direction: row-reverse; gap: 2px; }
.fti-lms-star-input input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.fti-lms-star-input label {
    font-size: 30px;
    color: #d9d4cf;
    cursor: pointer;
    transition: color 0.1s ease;
    padding: 5px 7px; /* >=44px touch target */
    margin: 0;
    line-height: 1.1;
}
.fti-lms-star-input input:checked ~ label,
.fti-lms-star-input label:hover,
.fti-lms-star-input label:hover ~ label { color: var(--fti-gold, #F5B301); }
.fti-lms-star-input input:focus-visible + label { box-shadow: var(--fti-focus, 0 0 0 3px rgba(200,16,46,.30)); border-radius: 4px; }
.fti-lms-review-msg { min-height: 1.3em; margin: 8px 0 0; font-size: 14px; }
.fti-lms-review-msg.ok { color: #1a7f37; }
.fti-lms-review-msg.err { color: var(--fti-red-dark, #9E0B23); }

/* ---- Lesson page (moved out of the inline <style> block — v1.6.0) -------- */
.fti-lms-single-lesson { max-width: 1320px; margin: 0 auto; }
.fti-lms-breadcrumb { margin-bottom: 18px; font-size: 14px; color: var(--fti-muted, #5b6470); }
.fti-lms-breadcrumb a { color: var(--fti-red, #C8102E); text-decoration: none; }
.fti-lms-breadcrumb a:hover { text-decoration: underline; }

.fti-lms-lesson-container {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 320px;
    gap: 32px;
    align-items: start;
}

.fti-lms-lesson-main { min-width: 0; }
.fti-lms-video-section { margin-bottom: 28px; }

.fti-lms-video-frame {
    position: relative;
    aspect-ratio: 16 / 9;
    background: #000;
    border-radius: var(--fti-radius, 14px);
    overflow: hidden;
    box-shadow: var(--fti-shadow, 0 6px 22px rgba(36,26,18,.10));
}
.fti-lms-video-frame iframe,
.fti-lms-video-frame video,
.fti-lms-video-frame .video-js {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border: 0;
}
.fti-lms-intro-video { position: relative; aspect-ratio: 16 / 9; background: #000; }
.fti-lms-intro-video iframe, .fti-lms-intro-video video { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }

.fti-lms-cast-bar { margin: 12px 0 0; }
.fti-lms-cast-btn {
    background: var(--fti-surface, #fff);
    border: 1px solid var(--fti-line, #e7e3df);
    border-radius: var(--fti-radius-sm, 8px);
    padding: 8px 16px;
    font-size: 14px;
    font-weight: 600;
    cursor: pointer;
}
.fti-lms-cast-btn:hover { background: var(--fti-bg, #faf8f6); }

.fti-lms-download-btn {
    display: inline-block;
    margin-top: 14px;
    padding: 10px 20px;
    background: var(--fti-red, #C8102E);
    color: #fff;
    border-radius: var(--fti-radius-sm, 8px);
    font-weight: 600;
    text-decoration: none;
}
.fti-lms-download-btn:hover { background: var(--fti-red-dark, #9E0B23); color: #fff; }

.fti-lms-lesson-description {
    background: var(--fti-surface, #fff);
    border: 1px solid var(--fti-line, #e7e3df);
    border-radius: var(--fti-radius, 14px);
    padding: 22px 26px;
    margin-bottom: 28px;
}
.fti-lms-lesson-description h2 { margin-top: 0; }

.fti-lms-lesson-navigation {
    display: flex;
    justify-content: space-between;
    gap: 12px;
    flex-wrap: wrap;
    margin-top: 28px;
    padding-top: 20px;
    border-top: 1px solid var(--fti-line, #e7e3df);
}

.fti-lms-access-denied {
    text-align: center;
    background: var(--fti-bg, #faf8f6);
    border: 1px dashed var(--fti-line, #e7e3df);
    border-radius: var(--fti-radius, 14px);
    padding: 48px 24px;
}

/* Lesson sidebar */
.fti-lms-lesson-sidebar {
    background: var(--fti-surface, #fff);
    border: 1px solid var(--fti-line, #e7e3df);
    border-radius: var(--fti-radius, 14px);
    box-shadow: var(--fti-shadow-sm, 0 1px 3px rgba(36,26,18,.06));
    padding: 20px;
    position: sticky;
    top: 24px;
    max-height: calc(100vh - 48px);
    overflow-y: auto;
}
.fti-lms-lesson-sidebar h3 { margin: 0 0 6px; font-size: 16px; }

.fti-lms-sidebar-lessons { margin: 12px 0; }
.fti-lms-sidebar-lesson {
    display: flex;
    align-items: center;
    padding: 10px;
    margin-bottom: 4px;
    border-radius: var(--fti-radius-sm, 8px);
    transition: background 0.12s ease;
}
.fti-lms-sidebar-lesson:hover { background: var(--fti-bg, #faf8f6); }
.fti-lms-sidebar-lesson.current { background: rgba(245,179,1,.16); font-weight: 600; }
.fti-lms-sidebar-lesson.completed { opacity: 0.72; }

.fti-lms-sidebar-lesson .lesson-number {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 26px;
    height: 26px;
    background: var(--fti-red, #C8102E);
    color: #fff;
    border-radius: 50%;
    font-size: 12px;
    font-weight: 700;
    margin-right: 10px;
    flex-shrink: 0;
}
.fti-lms-sidebar-lesson.completed .lesson-number { background: var(--fti-gold, #F5B301); color: var(--fti-ink, #241a12); }

.fti-lms-sidebar-lesson .lesson-info { flex: 1; min-width: 0; font-size: 14px; display: flex; align-items: center; gap: 8px; }
.fti-lms-sidebar-lesson .lesson-info a { color: var(--fti-ink, #241a12); text-decoration: none; }
.fti-lms-sidebar-lesson .lesson-info a:hover { color: var(--fti-red, #C8102E); }
.fti-lms-sidebar-lesson .lesson-info .locked { color: var(--fti-muted, #5b6470); }
.fti-lms-sidebar-lesson .completed-check { color: var(--fti-gold-dark, #B5790A); font-weight: 700; margin-left: auto; }

.fti-lms-sidebar-actions { margin-top: 16px; padding-top: 16px; border-top: 1px solid var(--fti-line, #e7e3df); }

/* ---- Donation modal ------------------------------------------------------- */
.fti-lms-donate-overlay {
    position: fixed;
    inset: 0;
    background: rgba(36, 8, 12, 0.62);
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 20px;
    z-index: 99999;
}
.fti-lms-donate-overlay[hidden] { display: none; }

.fti-lms-donate-modal {
    position: relative;
    width: 100%;
    max-width: 460px;
    max-height: 86vh;
    overflow-y: auto;
    background: var(--fti-surface, #fff);
    border-radius: var(--fti-radius, 14px);
    box-shadow: var(--fti-shadow-lg, 0 18px 48px rgba(36,26,18,.30));
    padding: 30px 30px 26px;
    box-sizing: border-box;
    text-align: center;
}
.fti-lms-donate-modal h2 { margin: 0 0 10px; color: var(--fti-red, #C8102E); }
.fti-lms-donate-body { color: var(--fti-muted, #5b6470); margin: 0 0 18px; }

.fti-lms-donate-close {
    position: absolute;
    top: 12px;
    right: 14px;
    width: 36px;
    height: 36px;
    border: none;
    background: none;
    font-size: 26px;
    line-height: 1;
    color: var(--fti-muted, #5b6470);
    cursor: pointer;
    border-radius: 50%;
}
.fti-lms-donate-close:hover { background: var(--fti-bg, #faf8f6); color: var(--fti-ink, #241a12); }

.fti-lms-donate-cta.fti-lms-btn-primary {
    background: var(--fti-gold, #F5B301);
    border-color: var(--fti-gold, #F5B301);
    color: var(--fti-ink, #241a12);
}
.fti-lms-donate-cta.fti-lms-btn-primary:hover {
    background: var(--fti-gold-dark, #B5790A);
    border-color: var(--fti-gold-dark, #B5790A);
    color: #fff;
}

.fti-lms-donate-later {
    display: block;
    margin: 14px auto 0;
    background: none;
    border: none;
    color: var(--fti-muted, #5b6470);
    font-size: 14px;
    cursor: pointer;
    text-decoration: underline;
}
.fti-lms-donate-later:hover { color: var(--fti-ink, #241a12); }

.fti-lms-donate-continue {
    display: inline-block;
    margin-top: 12px;
    font-size: 14.5px;
    font-weight: 600;
    color: var(--fti-red, #C8102E);
}
.fti-lms-donate-continue[hidden] { display: none; }

.fti-lms-donate-embed { text-align: left; }
.fti-lms-donate-note { color: var(--fti-muted, #5b6470); }

/* ---- Upgrade / paid ------------------------------------------------------- */
.fti-lms-already-paid { color: #1a7f37; font-weight: 600; }
.fti-lms-tier {
    display: inline-block;
    background: var(--fti-red, #C8102E);
    color: #fff;
    border-radius: 99px;
    padding: 2px 10px;
    font-size: 12px;
    font-weight: 700;
}

/* ---- v1.6.1 additions ------------------------------------------------------ */
.fti-lms-form ::placeholder,
.fti-lms-review-form ::placeholder { color: #6b7280; opacity: 1; }

.fti-lms-statline {
    margin: -6px 0 28px;
    font-size: 14.5px;
    color: var(--fti-muted, #5b6470);
}
.fti-lms-statline strong { color: var(--fti-ink, #241a12); font-weight: 700; }

.fti-lms-complete-bar { display: flex; align-items: center; gap: 14px; margin: -10px 0 24px; }
.fti-lms-complete-banner {
    margin: 0;
    padding: 9px 16px;
    background: #e7f5ec;
    border: 1px solid #c4e6d0;
    border-radius: var(--fti-radius-sm, 8px);
    color: #155724;
    font-weight: 600;
    font-size: 14.5px;
}
.fti-lms-complete-banner[hidden],
.fti-lms-mark-complete[hidden] { display: none; }

.fti-lms-auth-help { margin-top: 8px; font-size: 14px; }
.fti-lms-auth-help a { color: var(--fti-muted, #5b6470); text-decoration: underline; }
.fti-lms-auth-help a:hover { color: var(--fti-red, #C8102E); }

.fti-lms-sidebar-lesson .lesson-info .lesson-duration {
    color: var(--fti-muted, #5b6470);
    font-size: 12px;
    margin-left: auto;
    flex-shrink: 0;
}
.fti-lms-sidebar-lesson .lesson-info .completed-check + .lesson-duration,
.fti-lms-sidebar-lesson .lesson-info .lesson-duration + .completed-check { margin-left: 8px; }

/* ---- v1.6.2 student hub ---------------------------------------------------- */
.fti-lms-hub-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 300px), 1fr));
    gap: 22px;
    margin-top: 8px;
}
.fti-lms-hub-card {
    background: var(--fti-surface, #fff);
    border: 1px solid var(--fti-line, #e7e3df);
    border-radius: var(--fti-radius, 14px);
    box-shadow: var(--fti-shadow-sm, 0 1px 3px rgba(36,26,18,.06));
    padding: 22px 24px;
}
.fti-lms-hub-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 12px; }
.fti-lms-hub-head h2 { margin: 0; font-size: 1.15rem; }

.fti-lms-detail-list { margin: 0; }
.fti-lms-detail-list > div { display: flex; justify-content: space-between; gap: 16px; padding: 9px 0; border-bottom: 1px solid var(--fti-line, #e7e3df); }
.fti-lms-detail-list > div:last-child { border-bottom: none; }
.fti-lms-detail-list dt { margin: 0; color: var(--fti-muted, #5b6470); font-size: 14px; }
.fti-lms-detail-list dd { margin: 0; font-weight: 600; font-size: 14.5px; text-align: right; word-break: break-word; }
.fti-lms-detail-note { color: var(--fti-muted, #5b6470); font-weight: 400; font-size: 12.5px; }
p.fti-lms-detail-note { margin: -4px 0 14px; }

.fti-lms-account-form { margin-top: 6px; }
.fti-lms-field-note { color: var(--fti-muted, #5b6470); font-size: 13px; margin: 2px 0 12px; }
.fti-lms-account-actions { display: flex; gap: 10px; flex-wrap: wrap; }

.fti-lms-device-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 10px; }
.fti-lms-device {
    display: flex; align-items: center; justify-content: space-between; gap: 14px;
    padding: 12px 14px;
    border: 1px solid var(--fti-line, #e7e3df);
    border-radius: var(--fti-radius-sm, 8px);
    background: var(--fti-bg, #faf8f6);
}
.fti-lms-device.is-current { background: rgba(245,179,1,.10); border-color: rgba(181,121,10,.35); }
.fti-lms-device-info { min-width: 0; }
.fti-lms-device-info strong { display: block; font-size: 14.5px; }
.fti-lms-device-info small { color: var(--fti-muted, #5b6470); font-size: 12.5px; }
.fti-lms-device-badge {
    display: inline-block; margin-left: 6px; padding: 1px 8px;
    background: var(--fti-gold, #F5B301); color: var(--fti-ink, #241a12);
    border-radius: 99px; font-size: 11px; font-weight: 700; vertical-align: middle;
}
.fti-lms-device .fti-lms-btn { padding: 7px 14px; font-size: 13.5px; flex-shrink: 0; }

.fti-lms-support-links { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
.fti-lms-support-links a {
    display: block; padding: 11px 14px;
    border: 1px solid var(--fti-line, #e7e3df); border-radius: var(--fti-radius-sm, 8px);
    color: var(--fti-red, #C8102E); font-weight: 600; font-size: 14.5px; text-decoration: none;
    transition: background 0.12s ease;
}
.fti-lms-support-links a:hover { background: var(--fti-bg, #faf8f6); }

/* ---- v1.6.3 downloads ------------------------------------------------------ */
.fti-lms-downloads .fti-lms-detail-note { margin: -4px 0 18px; }
.fti-lms-download-group { margin-bottom: 22px; }
.fti-lms-download-group h3 {
    margin: 0 0 10px;
    font-size: 1.05rem;
    padding-bottom: 8px;
    border-bottom: 1px solid var(--fti-line, #e7e3df);
}
.fti-lms-download-items { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; grid-template-columns: repeat(auto-fill, minmax(min(100%, 280px), 1fr)); }
.fti-lms-download-item a {
    display: flex; align-items: center; justify-content: space-between; gap: 12px;
    padding: 12px 14px;
    background: var(--fti-surface, #fff);
    border: 1px solid var(--fti-line, #e7e3df);
    border-radius: var(--fti-radius-sm, 8px);
    text-decoration: none;
    color: var(--fti-ink, #241a12);
    font-size: 14.5px;
    transition: border-color 0.12s ease, background 0.12s ease;
}
.fti-lms-download-item a:before {
    content: "\2193";
    flex-shrink: 0;
    width: 26px; height: 26px;
    display: inline-flex; align-items: center; justify-content: center;
    background: var(--fti-bg, #faf8f6);
    border-radius: 50%;
    color: var(--fti-red, #C8102E);
    font-weight: 700;
}
.fti-lms-download-item a:hover { border-color: var(--fti-red, #C8102E); background: var(--fti-bg, #faf8f6); }
.fti-lms-download-title { flex: 1; font-weight: 600; }
.fti-lms-download-meta { color: var(--fti-muted, #5b6470); font-size: 12.5px; white-space: nowrap; }
.fti-lms-download-item.is-board a { background: rgba(245,179,1,.10); border-color: rgba(181,121,10,.35); }
.fti-lms-download-item.is-board .fti-lms-download-title { color: var(--fti-gold-dark, #B5790A); }

/* ---- v1.6.4 two-column auth ------------------------------------------------ */
.fti-lms-auth-split {
    display: grid;
    grid-template-columns: 1.05fr 1fr;
    width: 100%;
    max-width: 960px;
    background: var(--fti-surface, #fff);
    border: 1px solid var(--fti-line, #e7e3df);
    border-radius: var(--fti-radius, 14px);
    box-shadow: var(--fti-shadow-lg, 0 18px 48px rgba(36,26,18,.14));
    overflow: hidden;
}
.fti-lms-auth-split .fti-lms-auth-card,
.fti-lms-auth-split .fti-lms-auth-card-narrow {
    border: none;
    box-shadow: none;
    border-radius: 0;
    max-width: none;
    width: 100%;
    box-sizing: border-box;
}
.fti-lms-auth-form-col { display: flex; align-items: center; }

.fti-lms-auth-visual {
    position: relative;
    display: flex;
    align-items: center;
    min-height: 520px;
    padding: 40px;
    background-color: var(--fti-red, #C8102E);
    background-size: cover;
    background-position: center;
    color: #fff;
    isolation: isolate;
}
.fti-lms-auth-visual:before {
    content: "";
    position: absolute;
    inset: 0;
    z-index: -1;
    background: linear-gradient(150deg, rgba(158,11,35,.94) 0%, rgba(200,16,46,.82) 55%, rgba(181,121,10,.78) 100%);
}
.fti-lms-auth-visual.has-image:before {
    background: linear-gradient(150deg, rgba(158,11,35,.90) 0%, rgba(160,12,36,.72) 55%, rgba(120,70,8,.66) 100%);
}
.fti-lms-auth-visual-inner { max-width: 380px; }
.fti-lms-auth-logo { max-height: 54px; width: auto; margin-bottom: 28px; filter: brightness(0) invert(1); }
.fti-lms-auth-brand { display: block; font-size: 20px; font-weight: 800; letter-spacing: -.01em; margin-bottom: 28px; }
.fti-lms-auth-eyebrow { text-transform: uppercase; letter-spacing: .12em; font-size: 12.5px; font-weight: 700; opacity: .9; margin: 0 0 8px; }
.fti-lms-auth-visual-title { font-size: clamp(1.9rem, 1.4rem + 1.8vw, 2.6rem); line-height: 1.08; letter-spacing: -.02em; margin: 0 0 22px; color: #fff; }
.fti-lms-auth-benefits { list-style: none; margin: 0; padding: 0; display: grid; gap: 13px; }
.fti-lms-auth-benefits li { position: relative; padding-left: 32px; font-size: 15.5px; line-height: 1.4; }
.fti-lms-auth-benefits li:before {
    content: "";
    position: absolute; left: 0; top: 3px;
    width: 14px; height: 8px;
    border-left: 2.5px solid var(--fti-gold, #F5B301);
    border-bottom: 2.5px solid var(--fti-gold, #F5B301);
    transform: rotate(-45deg);
}

/* ---- v1.7.0 premium page ---------------------------------------------------- */
.fti-lms-premium {
    display: grid;
    grid-template-columns: 1.15fr 0.85fr;
    gap: 32px;
    max-width: 1040px;
    margin: 0 auto;
    align-items: start;
}
.fti-lms-premium-hero h1 {
    font-size: clamp(1.9rem, 1.4rem + 2vw, 2.8rem);
    letter-spacing: -0.02em;
    line-height: 1.1;
    margin: 0 0 12px;
}
.fti-lms-premium-sub { color: var(--fti-muted, #5b6470); font-size: 16.5px; margin: 0 0 22px; max-width: 48ch; }
.fti-lms-premium-benefits { list-style: none; margin: 0; padding: 0; display: grid; gap: 13px; }
.fti-lms-premium-benefits li { position: relative; padding-left: 34px; font-size: 15.5px; line-height: 1.45; }
.fti-lms-premium-benefits li:before {
    content: "";
    position: absolute; left: 0; top: 3px;
    width: 16px; height: 9px;
    border-left: 2.5px solid var(--fti-gold, #F5B301);
    border-bottom: 2.5px solid var(--fti-gold, #F5B301);
    transform: rotate(-45deg);
}
.fti-lms-premium-card {
    background: var(--fti-surface, #fff);
    border: 1px solid var(--fti-line, #e7e3df);
    border-radius: var(--fti-radius, 14px);
    box-shadow: var(--fti-shadow, 0 6px 22px rgba(36,26,18,.08));
    padding: 26px;
    position: sticky;
    top: 24px;
}
.fti-lms-premium-price { display: flex; align-items: baseline; gap: 8px; margin-bottom: 18px; }
.fti-lms-premium-amount { font-size: 34px; font-weight: 800; color: var(--fti-ink, #241a12); letter-spacing: -0.01em; }
.fti-lms-premium-once { color: var(--fti-muted, #5b6470); font-size: 14px; }
.fti-lms-premium-form { margin-bottom: 16px; }
.fti-lms-premium-alt { margin-top: 12px; font-size: 14px; color: var(--fti-muted, #5b6470); }
.fti-lms-premium-alt a { color: var(--fti-red, #C8102E); }

.fti-lms-code-row { border-top: 1px solid var(--fti-line, #e7e3df); padding-top: 16px; }
.fti-lms-code-row > label { display: block; font-size: 13.5px; font-weight: 600; color: var(--fti-muted, #5b6470); margin-bottom: 8px; }
.fti-lms-code-input { display: flex; gap: 8px; }
.fti-lms-code-input input {
    flex: 1; min-width: 0;
    padding: 11px 13px;
    border: 1px solid var(--fti-line, #e7e3df);
    border-radius: var(--fti-radius-sm, 8px);
    font-size: 15px;
    font-family: inherit;
    text-transform: uppercase;
    letter-spacing: 1px;
}
.fti-lms-code-input input:focus { outline: none; border-color: var(--fti-red, #C8102E); }
.fti-lms-code-input .fti-lms-btn { flex-shrink: 0; }
.fti-lms-code-msg { min-height: 1.3em; margin: 10px 0 0; font-size: 14px; }
.fti-lms-code-msg.ok { color: #166534; }
.fti-lms-code-msg.err { color: var(--fti-red-dark, #9E0B23); }

/* ---- v1.7.2 custom (brand-free) YouTube player ----------------------------- */
.fti-lms-yt-frame { position: relative; background: #000; }
.fti-lms-yt-frame .fti-lms-yt-embed,
.fti-lms-yt-frame iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; pointer-events: none; }
/* Click-shield sits over the iframe: blocks click-through to YouTube and toggles play. */
.fti-lms-yt-shield { position: absolute; inset: 0; z-index: 2; cursor: pointer; background: transparent; }
/* Big centre play button (hidden while playing). */
.fti-lms-yt-big {
    position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%);
    z-index: 3; width: 76px; height: 76px; border-radius: 50%;
    border: 2px solid rgba(255,255,255,.85); background: rgba(20,8,10,.45);
    cursor: pointer; transition: background .15s ease, transform .15s ease;
}
.fti-lms-yt-big:hover { background: var(--fti-red, #C8102E); transform: translate(-50%, -50%) scale(1.05); }
.fti-lms-yt-big span { position: absolute; left: 52%; top: 50%; transform: translate(-50%, -50%); width: 0; height: 0; border-style: solid; border-width: 13px 0 13px 22px; border-color: transparent transparent transparent #fff; }
.fti-lms-yt-frame.is-playing .fti-lms-yt-big { display: none; }
/* Control bar */
.fti-lms-yt-bar {
    position: absolute; left: 0; right: 0; bottom: 0; z-index: 4;
    display: flex; align-items: center; gap: 12px;
    padding: 10px 14px;
    background: linear-gradient(to top, rgba(0,0,0,.72), rgba(0,0,0,0));
    opacity: 0; transition: opacity .18s ease;
}
.fti-lms-yt-frame:hover .fti-lms-yt-bar,
.fti-lms-yt-frame:not(.is-playing) .fti-lms-yt-bar { opacity: 1; }
.fti-lms-yt-play, .fti-lms-yt-full {
    flex-shrink: 0; width: 30px; height: 30px; border: none; background: transparent; cursor: pointer; position: relative;
}
.fti-lms-yt-play:before { content: ""; position: absolute; left: 8px; top: 7px; width: 0; height: 0; border-style: solid; border-width: 8px 0 8px 13px; border-color: transparent transparent transparent #fff; }
.fti-lms-yt-frame.is-playing .fti-lms-yt-play:before { border: none; left: 9px; top: 7px; width: 4px; height: 16px; background: #fff; box-shadow: 8px 0 0 #fff; }
.fti-lms-yt-full:before { content: ""; position: absolute; left: 7px; top: 7px; width: 16px; height: 16px; border: 2px solid #fff; border-radius: 2px; }
.fti-lms-yt-seek { flex: 1; height: 6px; background: rgba(255,255,255,.28); border-radius: 99px; cursor: pointer; overflow: hidden; }
.fti-lms-yt-fill { height: 100%; width: 0; background: var(--fti-red, #C8102E); border-radius: 99px; }
.fti-lms-yt-time { flex-shrink: 0; color: #fff; font-size: 12.5px; font-variant-numeric: tabular-nums; min-width: 92px; text-align: right; }
.fti-lms-yt-frame:fullscreen { width: 100vw; height: 100vh; }
.fti-lms-yt-frame:-webkit-full-screen { width: 100vw; height: 100vh; }

/* ---- Responsive ----------------------------------------------------------- */
@media (max-width: 920px) {
    .fti-lms-course-hero,
    .fti-lms-lesson-container { grid-template-columns: 1fr; }
    .fti-lms-course-side { position: static; }
    .fti-lms-lesson-sidebar { position: static; max-height: none; }
    .fti-lms-reviews-summary { grid-template-columns: 1fr; gap: 14px; }
}

@media (max-width: 860px) {
    .fti-lms-premium { grid-template-columns: 1fr; max-width: 520px; }
    .fti-lms-premium-card { position: static; }
    .fti-lms-auth-split { grid-template-columns: 1fr; max-width: 480px; }
    .fti-lms-auth-visual { min-height: 0; padding: 30px; order: -1; }
    .fti-lms-auth-visual-title { margin-bottom: 16px; }
    .fti-lms-auth-benefits { gap: 9px; }
}

@media (max-width: 640px) {
    .fti-lms-hub-grid,
    .fti-lms-download-items { grid-template-columns: 1fr; }
    .fti-lms-device { flex-wrap: wrap; }
    .fti-lms-field-row { grid-template-columns: 1fr; }
    .fti-lms-auth-card { padding: 22px; }
    .fti-lms-course-grid { grid-template-columns: 1fr; }
    .fti-lms-lesson-item { padding: 13px 14px; }
    .fti-lms-donate-modal { padding: 24px 20px 22px; }
}

/* ---- Motion preferences ---------------------------------------------------- */
@media (prefers-reduced-motion: reduce) {
    .fti-lms-btn,
    .fti-lms-course-card,
    .fti-lms-toast,
    .fti-lms-progress-fill { transition: none; }
    .fti-lms-btn-primary:hover,
    .fti-lms-course-card:hover { transform: none; }
}

/* v1.8.0 — two-tier pricing (all-access + per-course) */
.fti-lms-tier-block { padding: 18px 0; border-top: 1px solid var(--fti-line, #e7e3df); }
.fti-lms-tier-block:first-child { border-top: 0; padding-top: 0; }
.fti-lms-tier-title { margin: 0 0 6px; font-size: 17px; font-weight: 700; color: var(--fti-ink, #1f2733); }
.fti-lms-course-buy-list { list-style: none; margin: 12px 0 0; padding: 0; display: flex; flex-direction: column; gap: 10px; }
.fti-lms-course-buy { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 12px 14px; border: 1px solid var(--fti-line, #e7e3df); border-radius: var(--fti-radius-sm, 8px); background: var(--fti-surface, #fff); }
.fti-lms-course-buy-title { font-weight: 600; font-size: 14.5px; color: var(--fti-ink, #1f2733); }
.fti-lms-course-buy-owned { font-size: 13px; font-weight: 600; color: var(--fti-ok, #1f7a4d); white-space: nowrap; }
.fti-lms-course-buy-action form,
.fti-lms-course-buy-action { margin: 0; }
.fti-lms-course-buy-action .fti-lms-btn { white-space: nowrap; }
.fti-lms-course-buy-cta { margin-top: 16px; padding-top: 16px; border-top: 1px solid var(--fti-line, #e7e3df); }
.fti-lms-buy-note { margin: 0 0 8px; font-size: 13.5px; font-weight: 600; color: var(--fti-muted, #5b6470); }

/* v1.8.1 — force button text colours on <a> buttons.
   Breakdance (and many themes) style `a { color: <brand> }` with high
   specificity/!important, which bleeds into our anchor-styled buttons and makes
   "Continue", "Next Lesson", "Enrol — Free" etc. render text in the button's own
   background colour (invisible). These rules win that fight. */
a.fti-lms-btn-primary,
a.fti-lms-btn-primary:link,
a.fti-lms-btn-primary:visited,
a.fti-lms-btn-primary:hover,
a.fti-lms-btn-primary:focus,
a.fti-lms-btn-primary:active,
.fti-lms-btn-primary { color: #fff !important; }

a.fti-lms-btn-secondary,
a.fti-lms-btn-secondary:link,
a.fti-lms-btn-secondary:visited,
a.fti-lms-btn-secondary:active,
.fti-lms-btn-secondary { color: var(--fti-ink, #241a12) !important; }
a.fti-lms-btn-secondary:hover,
a.fti-lms-btn-secondary:focus { color: var(--fti-ink, #241a12) !important; }

/* v1.9.0 — premium use-case section + per-block buy/code UI */
.fti-lms-usecase {
    margin: 26px 0 4px;
    padding: 22px 24px;
    background: var(--fti-bg, #faf8f6);
    border: 1px solid var(--fti-line, #e7e3df);
    border-radius: var(--fti-radius, 14px);
}
.fti-lms-usecase-title { margin: 0 0 8px; font-size: 20px; font-weight: 700; color: var(--fti-ink, #241a12); }
.fti-lms-usecase-lead { margin: 0 0 14px; color: var(--fti-muted, #5b6470); line-height: 1.6; max-width: 70ch; }
.fti-lms-usecase-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 10px; }
.fti-lms-usecase-list li { line-height: 1.55; color: var(--fti-ink, #241a12); }
.fti-lms-usecase-list strong { color: var(--fti-red, #C8102E); }
@media (min-width: 640px) {
    .fti-lms-usecase-list { grid-template-columns: 1fr 1fr; gap: 12px 28px; }
}

.fti-lms-tier-title { margin: 0 0 10px; font-size: 17px; font-weight: 700; color: var(--fti-ink, #241a12); }
.fti-lms-code-hint-top { font-size: 13.5px; color: var(--fti-muted, #5b6470); margin: 0 0 14px; }

.fti-lms-buy-block {
    padding: 16px;
    border: 1px solid var(--fti-line, #e7e3df);
    border-radius: var(--fti-radius-sm, 8px);
    background: var(--fti-surface, #fff);
    margin-bottom: 12px;
}
.fti-lms-buy-block:last-child { margin-bottom: 0; }
.fti-lms-buy-head { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; margin-bottom: 8px; }
.fti-lms-buy-title { font-weight: 700; font-size: 15.5px; color: var(--fti-ink, #241a12); }
.fti-lms-buy-price { font-weight: 700; font-size: 18px; color: var(--fti-ink, #241a12); white-space: nowrap; }
.fti-lms-buy-owned-block { background: var(--fti-bg, #faf8f6); }
.fti-lms-buy-block .fti-lms-premium-form { margin: 4px 0 12px; }
.fti-lms-buy-block .fti-lms-code-row { border-top: 1px solid var(--fti-line, #e7e3df); padding-top: 12px; }
.fti-lms-code-input { display: flex; gap: 8px; }
.fti-lms-code-field {
    flex: 1; min-width: 0;
    padding: 10px 12px;
    border: 1px solid var(--fti-line, #e7e3df);
    border-radius: var(--fti-radius-sm, 8px);
    font-size: 14.5px;
    font-family: inherit;
    text-transform: uppercase;
}
.fti-lms-code-input .fti-lms-apply-code { flex-shrink: 0; }
.fti-lms-code-msg { font-size: 13px; margin: 8px 0 0; min-height: 1em; }
.fti-lms-code-msg.ok { color: var(--fti-ok, #1f7a4d); }
.fti-lms-code-msg.err { color: var(--fti-red, #C8102E); }

/* v2.1.0 — guest checkout note + post-payment register notice */
.fti-lms-guest-note {
    background: var(--fti-bg, #faf8f6);
    border: 1px solid var(--fti-line, #e7e3df);
    border-radius: var(--fti-radius-sm, 8px);
    padding: 14px 16px;
    margin: 0 0 16px;
}
.fti-lms-guest-note p { margin: 0 0 6px; font-size: 14px; color: var(--fti-ink, #241a12); }
.fti-lms-guest-note p:last-child { margin-bottom: 0; }
.fti-lms-auth-paid-notice {
    background: #eaf7ef;
    border: 1px solid #bfe6cd;
    border-radius: var(--fti-radius-sm, 8px);
    padding: 14px 16px;
    margin: 0 0 18px;
}
.fti-lms-auth-paid-notice strong { color: #1f7a4d; display: block; margin-bottom: 4px; }
.fti-lms-auth-paid-notice p { margin: 0; font-size: 14px; color: var(--fti-ink, #241a12); }

/* v2.2.0 — course download button + explainer modal */
.fti-lms-download-all { display: inline-flex; align-items: baseline; gap: 6px; margin: 4px 0 10px; }
.fti-lms-download-all .fti-lms-dl-size { font-weight: 500; opacity: .85; }

.fti-lms-modal {
    position: fixed; inset: 0; z-index: 100000;
    display: flex; align-items: center; justify-content: center;
    padding: 20px;
}
.fti-lms-modal[hidden] { display: none; }
.fti-lms-modal-overlay {
    position: absolute; inset: 0;
    background: rgba(20, 14, 10, .55);
}
.fti-lms-modal-card {
    position: relative;
    background: var(--fti-surface, #fff);
    border-radius: var(--fti-radius, 14px);
    box-shadow: 0 20px 60px rgba(20, 14, 10, .35);
    max-width: 460px; width: 100%;
    padding: 26px 26px 22px;
    font-family: inherit;
}
.fti-lms-modal-card h2 { margin: 0 0 6px; font-size: 20px; color: var(--fti-ink, #241a12); }
.fti-lms-modal-course { margin: 0 0 14px; font-weight: 700; color: var(--fti-red, #C8102E); }
.fti-lms-modal-list { margin: 0 0 14px; padding-left: 20px; color: var(--fti-ink, #241a12); line-height: 1.6; }
.fti-lms-modal-list li { margin-bottom: 6px; }
.fti-lms-modal-tip { margin: 0 0 18px; font-size: 13px; color: var(--fti-muted, #5b6470); }
.fti-lms-modal-actions { display: flex; gap: 10px; flex-wrap: wrap; }
