/* ============================================================
   AIL — App Design System
   ============================================================ */
@import url('https://fonts.googleapis.com/css2?family=Bebas+Neue&family=DM+Sans:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap');

:root {
    --bg:        #050305;
    --bg-2:      #0a0508;
    --bg-card:   rgba(13, 6, 10, 0.96);
    --bg-input:  #0a0407;
    --red:       #ff1a3c;
    --red-deep:  #cc0022;
    --red-glow:  rgba(255, 26, 60, 0.35);
    --border:    rgba(220, 20, 60, 0.22);
    --border-hi: rgba(255, 26, 60, 0.6);
    --text:      #ffffff;
    --text-dim:  rgba(255, 255, 255, 0.62);
    --text-faint:rgba(255, 255, 255, 0.34);
    --green:     #00d488;
    --amber:     #ffb400;
    --radius:    18px;
    --radius-sm: 12px;
    --shell-h:   78px;
    --top-h:     66px;

    /* themable surfaces (used by page-level CSS too) */
    --card-base:  #0d070f;          /* base colour course cards mix their accent into */
    --surf-1:     rgba(255,255,255,0.03);
    --surf-2:     rgba(255,255,255,0.07);
    --line:       rgba(255,255,255,0.06);
    --scrim:      rgba(0,0,0,0.32);
    --bar-track:  rgba(255,255,255,0.08);
    --code-bg:    #0a0509;
    --code-text:  #e8d5b7;
    --shadow:     rgba(0,0,0,0.4);
    --shadow-lg:  rgba(0,0,0,0.5);
    --kw-mix:     #ffffff;          /* title keyword mixes accent toward this */
}

/* ============================================================
   LIGHT THEME
   ============================================================ */
html[data-theme="light"] {
    /* neutral greyscale surfaces — red kept only as a brand accent */
    --bg:        #eceded;
    --bg-2:      #f7f8f8;
    --bg-card:   rgba(255, 255, 255, 0.97);
    --bg-input:  #ffffff;
    --red:       #c8102e;
    --red-deep:  #9e0b23;
    --red-glow:  rgba(40, 42, 45, 0.18);
    --border:    rgba(28, 30, 32, 0.14);
    --border-hi: rgba(28, 30, 32, 0.38);
    --text:      #16181a;
    --text-dim:  rgba(22, 24, 26, 0.66);
    --text-faint:rgba(22, 24, 26, 0.42);
    --green:     #00875a;
    --amber:     #96650a;

    --card-base:  #ffffff;
    --surf-1:     rgba(22,24,26,0.04);
    --surf-2:     rgba(22,24,26,0.08);
    --line:       rgba(22,24,26,0.10);
    --scrim:      rgba(255,255,255,0.62);
    --bar-track:  rgba(22,24,26,0.12);
    --code-bg:    #f2f3f4;
    --code-text:  #24272a;
    --shadow:     rgba(20, 22, 24, 0.10);
    --shadow-lg:  rgba(20, 22, 24, 0.16);
    --kw-mix:     #000000;
}

* { margin: 0; padding: 0; box-sizing: border-box; -webkit-tap-highlight-color: transparent; }
html { scroll-behavior: smooth; }
body {
    font-family: 'DM Sans', -apple-system, BlinkMacSystemFont, sans-serif;
    background: var(--bg);
    color: var(--text);
    min-height: 100vh;
    padding-top: var(--top-h);
    padding-bottom: calc(var(--shell-h) + env(safe-area-inset-bottom, 0px));
    -webkit-font-smoothing: antialiased;
    overflow-x: hidden;            /* never scroll sideways */
}
/* Hide scrollbars everywhere but keep scrolling functional */
html, body, * { scrollbar-width: none; -ms-overflow-style: none; }
*::-webkit-scrollbar { width: 0; height: 0; display: none; }
body {
    transition: background-color 0.25s ease, color 0.25s ease;
}
body::before {
    content: ''; position: fixed; inset: 0; z-index: 0; pointer-events: none;
    background:
        radial-gradient(ellipse at 20% 0%, rgba(220,20,60,0.16), transparent 55%),
        radial-gradient(ellipse at 100% 100%, rgba(180,15,45,0.14), transparent 50%),
        linear-gradient(180deg, rgba(5,3,5,0) 0%, rgba(8,3,6,0.4) 100%);
}
html[data-theme="light"] body::before {
    background:
        radial-gradient(ellipse at 20% 0%, rgba(255,255,255,0.9), transparent 60%),
        radial-gradient(ellipse at 100% 100%, rgba(150,156,162,0.20), transparent 55%),
        linear-gradient(180deg, rgba(255,255,255,0.55) 0%, rgba(214,217,220,0.55) 100%);
}
#matrix-canvas { display: none; }

/* ---------------- TOP BAR ---------------- */
#ail-topbar {
    position: fixed; top: 0; left: 0; right: 0; height: var(--top-h);
    display: flex; align-items: center; justify-content: space-between;
    padding: 0 22px; z-index: 200;
    background: rgba(8, 3, 6, 0.92); backdrop-filter: blur(20px);
    border-bottom: 1px solid var(--border-hi);
    box-shadow: 0 2px 24px rgba(0,0,0,0.5);
}
.ail-logo {
    font-family: 'Bebas Neue'; font-size: 38px; letter-spacing: 2px;
    color: var(--text); text-decoration: none; line-height: 1; display: flex; align-items: center;
}
.ail-logo span { color: var(--red); }
.ail-logo .dot { width: 8px; height: 8px; border-radius: 50%; background: var(--red); margin-left: 6px; box-shadow: 0 0 12px var(--red-glow); }
.ail-xp-badge {
    font-size: 15px; font-weight: 700; color: var(--red);
    background: rgba(220, 20, 60, 0.12); border: 1px solid var(--border);
    padding: 8px 16px; border-radius: 24px; display: flex; align-items: center; gap: 6px;
    white-space: nowrap;
}
.ail-top-right { display: flex; align-items: center; gap: 10px; }
#ail-theme-btn {
    width: 38px; height: 38px; flex-shrink: 0; border-radius: 50%;
    background: rgba(220, 20, 60, 0.12); border: 1px solid var(--border);
    color: var(--red); font-size: 17px; line-height: 1; cursor: pointer;
    display: flex; align-items: center; justify-content: center;
    font-family: 'DM Sans', sans-serif; transition: all 0.2s;
}
#ail-theme-btn:hover { border-color: var(--border-hi); transform: rotate(-18deg); }
#ail-theme-btn:active { transform: scale(0.9); }

/* ---------------- BOTTOM TABS ---------------- */
#ail-tabs {
    position: fixed; bottom: 0; left: 0; right: 0;
    height: calc(var(--shell-h) + env(safe-area-inset-bottom, 0px));
    padding-bottom: env(safe-area-inset-bottom, 0px);
    display: flex; z-index: 200;
    background: rgba(8, 3, 6, 0.95); backdrop-filter: blur(20px);
    border-top: 1px solid var(--border-hi);
    box-shadow: 0 -2px 24px rgba(0,0,0,0.5);
}
.ail-tab {
    flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: center;
    gap: 5px; text-decoration: none; color: var(--text-faint);
    font-size: 12px; font-weight: 500; letter-spacing: 0.02em; transition: color 0.15s; padding-top: 4px;
    position: relative;
}
.ail-tab-icon { font-size: 26px; line-height: 1; }
.ail-tab.active { color: var(--red); }
.ail-tab.active::before {
    content: ''; position: absolute; top: 0; width: 34px; height: 3px;
    background: var(--red); border-radius: 0 0 4px 4px; box-shadow: 0 0 10px var(--red-glow);
}
.ail-tab:active { transform: scale(0.92); }

/* ---------------- LAYOUT ---------------- */
.container { max-width: 1080px; margin: 0 auto; padding: 22px 18px 44px; position: relative; z-index: 1; }

/* ---------------- CARDS ---------------- */
.card { background: linear-gradient(160deg, rgba(22,9,15,0.96), rgba(11,5,9,0.96)); border: 1px solid var(--border); border-radius: var(--radius); padding: 24px; box-shadow: 0 4px 24px rgba(0,0,0,0.4); }

/* ---------------- BUTTONS ---------------- */
.btn {
    background: linear-gradient(135deg, var(--red-deep), var(--red));
    border: none; padding: 20px 24px; border-radius: var(--radius-sm);
    color: white; font-weight: 700; font-size: 18px; cursor: pointer;
    font-family: 'DM Sans', sans-serif; transition: all 0.2s; width: 100%;
    box-shadow: 0 6px 24px rgba(220, 20, 60, 0.25);
}
.btn:hover { filter: brightness(1.1); transform: translateY(-1px); box-shadow: 0 6px 26px rgba(220,20,60,0.32); }
.btn:active { transform: translateY(0); }
.btn:disabled { opacity: 0.5; cursor: not-allowed; transform: none; box-shadow: none; }
.btn-outline {
    background: rgba(255,255,255,0.02); border: 1px solid var(--border-hi); color: var(--text-dim);
    padding: 12px 18px; border-radius: var(--radius-sm); cursor: pointer; font-size: 14px;
    font-family: 'DM Sans', sans-serif; transition: all 0.2s;
}
.btn-outline:hover { color: var(--text); border-color: var(--red); }
.btn-outline:disabled { opacity: 0.3; cursor: not-allowed; }

/* ---------------- FORM FIELDS ---------------- */
.field { margin-bottom: 20px; }
.field label { display: block; font-size: 13px; color: var(--red); letter-spacing: 0.08em; text-transform: uppercase; margin-bottom: 10px; font-weight: 600; }
.field input, .field select, .field textarea {
    width: 100%; background: var(--bg-input); border: 1px solid var(--border);
    border-radius: var(--radius-sm); padding: 18px; color: var(--text); font-size: 17px;
    font-family: 'DM Sans', sans-serif; transition: border-color 0.2s;
}
.field input:focus, .field select:focus, .field textarea:focus { outline: none; border-color: var(--border-hi); }
.field select option { background: var(--bg-input); }

/* segmented toggle */
.seg { display: flex; gap: 8px; flex-wrap: wrap; }
.seg-btn { flex: 1; min-width: 90px; text-align: center; background: var(--bg-input); border: 1px solid var(--border); border-radius: var(--radius-sm); padding: 16px 12px; cursor: pointer; font-size: 15px; color: var(--text-dim); transition: all 0.15s; user-select: none; }
.seg-btn.active { background: linear-gradient(135deg, var(--red-deep), var(--red)); border-color: transparent; color: white; font-weight: 600; }

/* collapsible "more options" panel + 2-col field row (shared by index/revise) */
.more-toggle { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 14px 0 6px; cursor: pointer; color: var(--text-dim); font-size: 16px; user-select: none; transition: color 0.15s; }
.more-toggle:hover { color: var(--red); }
.more-hint { font-size: 13px; color: var(--text-faint); text-align: right; }
.more-panel { display: none; padding-top: 8px; }
.more-panel.open { display: block; animation: fadeIn 0.25s ease; }
.opt { color: var(--text-faint); font-size: 10px; text-transform: none; letter-spacing: 0; font-weight: 400; }
.field-row { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-bottom: 8px; }
.field textarea { resize: vertical; }
@media (max-width: 540px) { .field-row { grid-template-columns: 1fr; } }

/* ---------------- SPINNER ---------------- */
.spinner { width: 44px; height: 44px; border: 3px solid rgba(220,20,60,0.2); border-top-color: var(--red); border-radius: 50%; animation: spin 0.9s linear infinite; margin: 0 auto; }
@keyframes spin { to { transform: rotate(360deg); } }

/* ---------------- SECTION TITLES ---------------- */
.section-title { font-family: 'Bebas Neue'; font-size: 34px; letter-spacing: 1px; margin-bottom: 18px; display: flex; align-items: center; justify-content: space-between; padding-left: 14px; position: relative; }
.section-title::before { content: ''; position: absolute; left: 0; top: 50%; transform: translateY(-50%); width: 4px; height: 26px; background: var(--red); border-radius: 3px; box-shadow: 0 0 12px var(--red-glow); }
.section-count { font-size: 14px; color: var(--text-faint); font-family: 'DM Sans'; letter-spacing: 0; }

/* ---------------- UTILITY ---------------- */
.text-dim { color: var(--text-dim); }
.text-faint { color: var(--text-faint); }
.error-box { margin-top: 14px; padding: 12px 16px; background: rgba(220,20,60,0.12); border: 1px solid var(--border-hi); border-radius: var(--radius-sm); color: #ff6060; font-size: 13px; }

/* ---------------- TOAST ---------------- */
#toast { pointer-events: none; }

/* fade-in */
.fade-in { animation: fadeIn 0.35s ease; }
@keyframes fadeIn { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: translateY(0); } }

/* scroll-pop — cards pop and brighten as they enter view */
.scroll-pop.scroll-pop {
    opacity: 0.4;
    transform: scale(0.94) translateY(14px);
    filter: brightness(0.6) saturate(0.8);
    transition: opacity 0.45s cubic-bezier(0.34,1.56,0.64,1),
                transform 0.45s cubic-bezier(0.34,1.56,0.64,1),
                filter 0.45s ease,
                box-shadow 0.45s ease;
}
.scroll-pop.scroll-pop.in-view {
    opacity: 1;
    transform: scale(1) translateY(0);
    filter: brightness(1) saturate(1);
}
.course-card.scroll-pop.in-view { box-shadow: 0 12px 40px rgba(220,20,60,0.22), 0 8px 30px rgba(0,0,0,0.5); }
.course-card.scroll-pop.in-view:hover { transform: scale(1) translateY(-4px); }
@media (prefers-reduced-motion: reduce) {
    .scroll-pop.scroll-pop { opacity: 1; transform: none; filter: none; transition: none; }
}

/* ============================================================
   LIGHT THEME — component overrides
   (page-level CSS in index/view-course/lesson hardcodes dark
   values; these attribute-scoped rules win on specificity)
   ============================================================ */

/* --- shared shell / cards --- */
html[data-theme="light"] .card {
    background: linear-gradient(160deg, #ffffff, #f2f3f4);
    box-shadow: 0 4px 18px var(--shadow);
}
html[data-theme="light"] #ail-topbar,
html[data-theme="light"] #ail-tabs {
    background: rgba(247, 248, 248, 0.92);
    border-color: var(--border);
    box-shadow: 0 2px 18px var(--shadow);
}
html[data-theme="light"] #ail-tabs { box-shadow: 0 -2px 18px var(--shadow); }
html[data-theme="light"] .ail-xp-badge,
html[data-theme="light"] #ail-theme-btn { background: var(--surf-1); }
html[data-theme="light"] .error-box { color: #9e0b23; background: rgba(200,16,46,0.07); border-color: rgba(200,16,46,0.3); }
html[data-theme="light"] .seg-btn:not(.active) { background: #fff; }
html[data-theme="light"] .btn-outline { background: #fff; }
html[data-theme="light"] .btn { box-shadow: 0 6px 20px rgba(20,22,24,0.16); }
html[data-theme="light"] .hero-badge { background: var(--surf-1); }
html[data-theme="light"] .spinner { border-color: rgba(22,24,26,0.12); border-top-color: var(--red); }
html[data-theme="light"] .empty-state { border-color: var(--line); }

/* --- index.html: hero + robot --- */
html[data-theme="light"] .hero-title { text-shadow: 0 2px 18px rgba(20,22,24,0.14); }
html[data-theme="light"] .robot .head,
html[data-theme="light"] .robot .body,
html[data-theme="light"] .robot .arm {
    background: linear-gradient(160deg, #ffffff, #e2e4e6);
    border-color: rgba(28,30,32,0.35);
}
html[data-theme="light"] .robot .head {
    box-shadow: 0 4px 14px rgba(20,22,24,0.14), inset 0 0 10px rgba(255,255,255,0.9);
}
html[data-theme="light"] #installBtn { color: var(--text) !important; background: var(--surf-1) !important; }

/* --- index.html: course cards (grey surfaces, accent as an edge only) --- */
html[data-theme="light"] .course-card {
    background: linear-gradient(160deg, #ffffff 0%, #f0f1f2 100%);
    border: 1px solid rgba(28,30,32,0.13);
    border-left: 3px solid color-mix(in srgb, var(--accent) 70%, #6b6f73);
    box-shadow: 0 3px 14px var(--shadow);
}
html[data-theme="light"] .course-card:hover {
    background: linear-gradient(160deg, #ffffff 0%, #e9eaec 100%);
    border-color: rgba(28,30,32,0.2);
    border-left-color: color-mix(in srgb, var(--accent) 85%, #6b6f73);
    box-shadow: 0 12px 28px var(--shadow-lg);
}
html[data-theme="light"] .card-title .kw { color: color-mix(in srgb, var(--accent) 62%, #16181a); }
html[data-theme="light"] .feat-badge {
    background: #16181a; color: #fff; box-shadow: none;
}
html[data-theme="light"] .info-btn {
    background: rgba(22,24,26,0.05);
    color: var(--text-dim);
    border-color: var(--line);
}
html[data-theme="light"] .fav-star { color: rgba(22,24,26,0.20); }
html[data-theme="light"] .fav-star.active { color: color-mix(in srgb, var(--accent) 75%, #16181a); text-shadow: none; }
html[data-theme="light"] .card-progress { background: var(--bar-track); }
html[data-theme="light"] .card-progress-fill { background: color-mix(in srgb, var(--accent) 70%, #6b6f73); }
html[data-theme="light"] .field textarea { color: var(--text); }

/* --- view-course.html --- */
html[data-theme="light"] .course-hero::before { background: radial-gradient(circle, rgba(22,24,26,0.07), transparent 70%); }
html[data-theme="light"] .fav-btn { color: rgba(22,24,26,0.20); }
html[data-theme="light"] .tag,
html[data-theme="light"] .skill-chip { background: var(--surf-1); }
html[data-theme="light"] .progress-bar { background: var(--bar-track); }
html[data-theme="light"] .lesson-row { border-bottom-color: var(--line); }
html[data-theme="light"] .lesson-check { border-color: rgba(22,24,26,0.22); }
html[data-theme="light"] .lesson-check.done { color: #fff; }
html[data-theme="light"] .module-num { background: var(--surf-1); }
html[data-theme="light"] .module-header:active,
html[data-theme="light"] .lesson-row:active { background: var(--surf-1); }

/* --- lesson.html --- */
html[data-theme="light"] .sb-prog { background: var(--bar-track); }
html[data-theme="light"] .sb-lesson:active { background: var(--surf-1); }
html[data-theme="light"] .sb-lesson.active { color: var(--text); background: var(--surf-2); }
html[data-theme="light"] .sb-check { border-color: rgba(22,24,26,0.2); }
html[data-theme="light"] .sb-lesson.done .sb-check { color: #fff; }
html[data-theme="light"] .lesson-body { color: rgba(22,24,26,0.85); }
html[data-theme="light"] .challenge {
    background: linear-gradient(160deg, #ffffff, #f0f1f2);
    border-color: var(--border-hi);
    box-shadow: 0 6px 20px var(--shadow);
}
html[data-theme="light"] .ch-choice:not(.correct):not(.wrong) { background: #fff; color: var(--text); }
html[data-theme="light"] .ch-choice .ch-key { background: var(--surf-2); }
html[data-theme="light"] .ch-choice.correct { background: rgba(0,135,90,0.09); }
html[data-theme="light"] .ch-choice.correct .ch-key { color: #fff; }
html[data-theme="light"] .ch-type { color: var(--text); }
html[data-theme="light"] .ch-type.correct { background: rgba(0,135,90,0.07); }
html[data-theme="light"] .ch-helper { background: #fff; }
html[data-theme="light"] .ch-fb.good { background: rgba(0,135,90,0.09); border-color: rgba(0,135,90,0.30); }
html[data-theme="light"] .ch-fb.bad { background: rgba(200,16,46,0.06); }
html[data-theme="light"] .ch-fb.hint { background: rgba(150,101,10,0.08); border-color: rgba(150,101,10,0.28); }
html[data-theme="light"] .ch-explain,
html[data-theme="light"] .concept,
html[data-theme="light"] .practice { background: var(--surf-1); }
html[data-theme="light"] .callout.tip { background: rgba(0,135,90,0.07); border-color: rgba(0,135,90,0.22); }
html[data-theme="light"] .callout.warning { background: rgba(150,101,10,0.07); border-color: rgba(150,101,10,0.22); }
html[data-theme="light"] .code-block { background: var(--code-bg); }
html[data-theme="light"] .code-body { color: var(--code-text); }
html[data-theme="light"] .code-head { background: rgba(22,24,26,0.05); }
html[data-theme="light"] .code-copy:active { color: var(--text); }
html[data-theme="light"] .practice-item { border-bottom-color: var(--line); }
html[data-theme="light"] .practice-item.checked .practice-check { color: #fff; }
html[data-theme="light"] .ext-link { background: #fff; border-color: var(--line); }
html[data-theme="light"] .ext-icon { background: var(--surf-2); }
html[data-theme="light"] .quiz { background: var(--surf-1); }
html[data-theme="light"] .quiz-opt:not(.correct):not(.wrong) { background: #fff; border-color: var(--line); }
html[data-theme="light"] .quiz-opt:active { background: var(--surf-2); }
html[data-theme="light"] .quiz-opt.correct { background: rgba(0,135,90,0.11); }
html[data-theme="light"] .quiz-opt.wrong { background: rgba(200,16,46,0.09); color: #9e0b23; }
html[data-theme="light"] .complete-banner { background: rgba(0,135,90,0.08); border-color: rgba(0,135,90,0.20); }
html[data-theme="light"] .sb-backdrop { background: rgba(22,24,26,0.35); }
html[data-theme="light"] .video-wrap { background: #e2e4e6; }

/* --- revise.html --- */
html[data-theme="light"] .rv-title { text-shadow: 0 2px 16px rgba(20,22,24,0.12); }
html[data-theme="light"] .sheet-head::before { background: radial-gradient(circle, rgba(22,24,26,0.07), transparent 70%); }
html[data-theme="light"] .sheet-head,
html[data-theme="light"] .rv-block,
html[data-theme="light"] .sheet-item { background: linear-gradient(160deg, #ffffff, #f4f5f5); box-shadow: 0 3px 14px var(--shadow); }
html[data-theme="light"] .fc-face { background: linear-gradient(160deg, #ffffff, #eceeef); }
html[data-theme="light"] .fc-back { background: linear-gradient(160deg, #ffffff, #e9f5f0); }
html[data-theme="light"] .fx-expr { color: #7a5200; }
html[data-theme="light"] .miss { background: rgba(150,101,10,0.07); border-color: rgba(150,101,10,0.24); }
html[data-theme="light"] .seq-item::before { box-shadow: 0 0 0 3px #f8f9f9; }
html[data-theme="light"] .tq-opt:not(.correct):not(.wrong) { background: #fff; }
html[data-theme="light"] .tq-opt.correct { background: rgba(0,135,90,0.10); }
html[data-theme="light"] .tq-opt.correct .tq-key { color: #fff; }
html[data-theme="light"] .tq-opt.wrong { background: rgba(200,16,46,0.08); }
html[data-theme="light"] .si-chip.score { border-color: rgba(0,135,90,0.4); }
html[data-theme="light"] .revise-btn { box-shadow: 0 5px 18px rgba(20,22,24,0.16); }

/* ---------------- CART BUTTON (topbar) ---------------- */
#ail-cart-btn {
    position: relative; width: 38px; height: 38px; flex-shrink: 0; border-radius: 50%;
    background: rgba(220, 20, 60, 0.12); border: 1px solid var(--border);
    display: flex; align-items: center; justify-content: center;
    font-size: 17px; text-decoration: none; transition: all 0.2s;
}
#ail-cart-btn:hover { border-color: var(--border-hi); transform: translateY(-1px); }
#ail-cart-btn:active { transform: scale(0.9); }
#ail-cart-badge {
    position: absolute; top: -5px; right: -5px; min-width: 19px; height: 19px; padding: 0 5px;
    border-radius: 10px; background: var(--red); color: #fff; font-size: 11px; font-weight: 700;
    display: none; align-items: center; justify-content: center; line-height: 1;
    box-shadow: 0 0 0 2px var(--bg-2);
}
html[data-theme="light"] #ail-cart-btn { background: var(--surf-1); }
html[data-theme="light"] #ail-cart-badge { color: #fff; box-shadow: 0 0 0 2px #f7f8f8; }

/* ---------------- PRICE / BUY BITS ---------------- */
.price-tag {
    display: inline-flex; align-items: center; gap: 5px; font-size: 13px; font-weight: 700;
    padding: 5px 11px; border-radius: 16px; background: rgba(220,20,60,0.14);
    border: 1px solid var(--border-hi); color: var(--red); white-space: nowrap;
}
.price-tag.owned { background: rgba(0,212,136,0.12); border-color: rgba(0,212,136,0.4); color: var(--green); }
html[data-theme="light"] .price-tag { background: rgba(200,16,46,0.08); }
html[data-theme="light"] .price-tag.owned { background: rgba(0,135,90,0.10); border-color: rgba(0,135,90,0.35); }

.cart-btn-sm {
    background: rgba(255,255,255,0.06); border: 1px solid var(--border-hi); color: var(--text);
    border-radius: 20px; padding: 7px 14px; font-size: 13px; font-weight: 600;
    font-family: 'DM Sans', sans-serif; cursor: pointer; transition: all 0.15s; white-space: nowrap;
}
.cart-btn-sm:hover { background: var(--red); border-color: var(--red); color: #fff; }
.cart-btn-sm.added { background: rgba(0,212,136,0.14); border-color: rgba(0,212,136,0.45); color: var(--green); }
html[data-theme="light"] .cart-btn-sm { background: rgba(22,24,26,0.05); }
html[data-theme="light"] .cart-btn-sm.added { background: rgba(0,135,90,0.10); border-color: rgba(0,135,90,0.4); }

/* lesson lock */
.lesson-row.locked { opacity: 0.72; }
.lesson-lock { margin-left: auto; font-size: 15px; color: var(--text-faint); }
.preview-tag {
    font-size: 10px; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase;
    color: var(--green); border: 1px solid rgba(0,212,136,0.4); border-radius: 10px; padding: 2px 7px; margin-left: 8px;
}
html[data-theme="light"] .preview-tag { border-color: rgba(0,135,90,0.4); }
html[data-theme="light"] .card-buy { border-top-color: var(--line); }
