<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[Toán Cá Chép]]></title><description><![CDATA[Lớp học Toán 4.0]]></description><link>https://toancachep.vn/</link><image><url>https://toancachep.vn/favicon.png</url><title>Toán Cá Chép</title><link>https://toancachep.vn/</link></image><generator>Ghost 5.80</generator><lastBuildDate>Thu, 14 May 2026 11:45:40 GMT</lastBuildDate><atom:link href="https://toancachep.vn/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[Chuyên đề THPTQG 2026]]></title><description><![CDATA[Ôn tập xác suất]]></description><link>https://toancachep.vn/chuyen-de-thptqg/</link><guid isPermaLink="false">69fc6991455da604eaf9ccaf</guid><dc:creator><![CDATA[Cá Chép]]></dc:creator><pubDate>Thu, 07 May 2026 10:29:53 GMT</pubDate><media:content url="https://toancachep.vn/content/images/2026/05/-nh2.png" medium="image"/><content:encoded><![CDATA[
<!--kg-card-begin: html-->
<iframe src="https://loptoancachep.github.io/chuyende-playlist/" width="100%" height="850px" style="border: none; border-radius: 12px; box-shadow: 0 4px 15px rgba(0,0,0,0.1); overflow: hidden;" allowfullscreen="true">
</iframe>

<!--kg-card-end: html-->
]]></content:encoded></item><item><title><![CDATA[CẤP TỐC 2026]]></title><description><![CDATA[<!--kg-card-begin: html-->
<iframe src="https://loptoancachep.github.io/captoc-2026/" width="100%" height="900px" frameborder="0" style="border-radius: 12px; overflow: hidden; box-shadow: 0 4px 12px rgba(0,0,0,0.1);" allowfullscreen>
</iframe>

<!--kg-card-end: html-->]]></description><link>https://toancachep.vn/luyen-de-12/</link><guid isPermaLink="false">69f41e88455da604eaf9cc5a</guid><dc:creator><![CDATA[Cá Chép]]></dc:creator><pubDate>Fri, 01 May 2026 03:31:29 GMT</pubDate><media:content url="https://toancachep.vn/content/images/2026/05/-nh3-1.png" medium="image"/><content:encoded><![CDATA[
<!--kg-card-begin: html-->
<iframe src="https://loptoancachep.github.io/captoc-2026/" width="100%" height="900px" frameborder="0" style="border-radius: 12px; overflow: hidden; box-shadow: 0 4px 12px rgba(0,0,0,0.1);" allowfullscreen>
</iframe>

<!--kg-card-end: html-->
]]></content:encoded></item><item><title><![CDATA[11 - Bài học]]></title><description><![CDATA[Video bài giảng lớp 11 | 25-26]]></description><link>https://toancachep.vn/11-bai-hoc/</link><guid isPermaLink="false">69f30b46455da604eaf9cc25</guid><dc:creator><![CDATA[Cá Chép]]></dc:creator><pubDate>Thu, 30 Apr 2026 08:14:17 GMT</pubDate><media:content url="https://toancachep.vn/content/images/2026/05/-nh3.png" medium="image"/><content:encoded><![CDATA[
<!--kg-card-begin: html-->
<!DOCTYPE html>
<html lang="vi">

<head>
  <meta charset="utf-8">
  <meta content="width=device-width,initial-scale=1,maximum-scale=5" name="viewport">
  <title>Video B&#xE0;i Gi&#x1EA3;ng To&#xE1;n 11 | To&#xE1;n C&#xE1; Ch&#xE9;p</title>
  <link href="https://fonts.googleapis.com/css2?family=Bangers&amp;family=Manrope:wght@400;600;700;800&amp;family=Unbounded:wght@400;700;900&amp;display=swap" rel="stylesheet">
  <script src="https://www.youtube.com/iframe_api"></script>
  <style>
    :root {
      --blue: #0040BE;
      --dark: #003B99;
      --light: #1E85EB;
      --cyan: #3C9EEF;
      --yellow: #F7C800;
      --orange: #FF7800;
      --dorange: #E24500;
      --bg: #E8F4FF;
      --green: #16a34a;
      --purple: #7c3aed;
      --red: #dc2626;
      --card: #fff;
      --border: #003B99;
      --text: #0A1B3D;
      --muted: #2A3A5E;
    }

    *,
    *::before,
    *::after {
      box-sizing: border-box;
      margin: 0;
      padding: 0
    }

    html,
    body {
      width: 100vw;
      height: 100vh;
      overflow: hidden;
      font-family: 'Manrope', sans-serif;
      -webkit-tap-highlight-color: transparent
    }

    /* App wrapper thoát hoàn toàn khỏi container Ghost */
    #tc-app {
      position: fixed;
      inset: 0;
      z-index: 9999;
      overflow-y: auto;
      overflow-x: hidden;
      background: var(--bg);
      background-image: radial-gradient(var(--cyan) 1.5px, transparent 1.5px);
      background-size: 40px 40px;
      color: var(--text);
      scroll-behavior: smooth;
    }

    /* ── TOPBAR ── */
    .topbar {
      position: sticky;
      top: 0;
      z-index: 200;
      background: #fff;
      border-bottom: 4px solid var(--dark);
      box-shadow: 0 6px 0 var(--blue);
      display: flex;
      align-items: center;
      justify-content: space-between;
      padding: 0 16px;
      height: 52px;
      gap: 12px;
      width: 100%;
      overflow: visible;
    }

    .topbar-brand a {
      display: block;
      line-height: 0
    }

    .topbar-brand img {
      height: 64px;
      width: auto;
      display: block;
      filter: drop-shadow(0 2px 4px rgba(0, 0, 0, .4));
      transition: opacity .15s;
    }

    .topbar-brand img:hover {
      opacity: .85
    }

    .topbar-stats {
      font-size: 11px;
      font-weight: 700;
      color: var(--dark);
      display: none;
      gap: 12px;
    }

    .topbar-stats span {
      background: var(--bg);
      padding: 3px 9px;
      border-radius: 20px;
      white-space: nowrap;
      border: 2px solid var(--cyan);
    }

    .topbar-right {
      display: flex;
      align-items: center;
      gap: 8px
    }

    .toc-toggle {
      font-family: 'Bangers', cursive;
      background: var(--yellow);
      color: var(--dark);
      border: 2px solid var(--dark);
      border-radius: 8px;
      padding: 4px 12px;
      font-size: 16px;
      cursor: pointer;
      letter-spacing: 1px;
      transition: all .15s;
    }

    .toc-toggle:active {
      transform: scale(.96)
    }

    /* ── PROGRESS BAR ── */
    .prog {
      position: fixed;
      top: 52px;
      left: 0;
      height: 3px;
      background: linear-gradient(90deg, var(--yellow), var(--orange));
      z-index: 199;
      width: 0;
      transition: width .15s;
      box-shadow: 0 0 8px rgba(247, 200, 0, .5)
    }

    /* ── CONTAINER ── */
    #tc-app .container {
      max-width: 1360px !important;
      margin: 0 auto !important;
      padding: 12px 12px 80px !important;
    }

    /* ── MAIN LAYOUT ── */
    #tc-app .main-layout {
      display: flex !important;
      flex-direction: column !important;
      gap: 16px !important;
      align-items: center !important;
    }

    #tc-app .player-col {
      display: none !important;
    }

    #tc-app .playlist-col {
      display: flex !important;
      flex-direction: column !important;
      gap: 0 !important;
      max-width: 600px !important;
      margin: 0 auto !important;
      width: 100% !important;
    }

    /* ── PLAYER CARD ── */
    .player-card {
      background: var(--card);
      border: 4px solid var(--dark);
      border-radius: 24px;
      overflow: hidden;
      box-shadow: 0 8px 0 var(--blue);
    }

    .video-wrap {
      position: relative;
      width: 100%;
      padding-top: 56.25%;
      background: #000
    }


    .video-wrap>* {
      position: absolute;
      top: 0;
      left: 0;
      width: 100%;
      height: 100%;
      border: none
    }

    .vid-placeholder {
      display: flex;
      flex-direction: column;
      align-items: center;
      justify-content: center;
      background: linear-gradient(135deg, #0a1128, #1a1f3a);
      color: #fff;
      gap: 10px;
    }

    .vid-placeholder .ph-icon {
      font-size: 40px
    }

    .vid-placeholder p {
      font-family: 'Bangers', cursive;
      font-size: 15px;
      color: var(--yellow);
      letter-spacing: 1px;
      text-align: center;
      padding: 0 20px
    }

    /* NOW PLAYING */
    .now-playing {
      padding: 10px 14px;
      border-top: 2px solid var(--blue);
      background: linear-gradient(135deg, #eff6ff, #dbeafe);
    }

    .np-chapter {
      font-family: 'Bangers', cursive;
      font-size: 11px;
      color: var(--dorange);
      letter-spacing: 1px
    }

    .np-title {
      font-size: 14px;
      font-weight: 800;
      color: var(--dark);
      margin-top: 2px;
      line-height: 1.3
    }

    /* PLAYER CONTROLS BAR */
    .player-controls {
      display: flex;
      align-items: center;
      gap: 8px;
      padding: 8px 14px;
      background: #f8fafc;
      border-top: 1px solid var(--border);
      flex-wrap: wrap;
    }

    .ctrl-btn {
      display: flex;
      align-items: center;
      gap: 5px;
      font-size: 12px;
      font-weight: 700;
      padding: 5px 12px;
      border-radius: 20px;
      border: 2px solid var(--border);
      cursor: pointer;
      transition: all .15s;
      background: var(--card);
      color: var(--text);
    }

    .ctrl-btn:hover {
      border-color: var(--blue);
      color: var(--blue)
    }

    .ctrl-btn.active {
      background: var(--blue);
      border-color: var(--blue);
      color: #fff
    }

    .ctrl-btn .dot {
      width: 8px;
      height: 8px;
      border-radius: 50%;
      background: currentColor
    }

    /* NOTES PANEL */
    .notes-panel {
      display: none;
      border-top: 2px solid var(--border);
      background: #fafbff
    }

    .notes-panel.open {
      display: block
    }

    .notes-header {
      padding: 10px 14px 6px;
      display: flex;
      align-items: center;
      justify-content: space-between
    }

    .notes-header span {
      font-size: 13px;
      font-weight: 800;
      color: var(--dark)
    }

    .note-ts-btn {
      font-size: 11px;
      font-weight: 700;
      color: var(--blue);
      background: #dbeafe;
      border: none;
      border-radius: 12px;
      padding: 3px 10px;
      cursor: pointer;
    }

    .note-ts-btn:hover {
      background: var(--blue);
      color: #fff
    }

    .notes-input {
      margin: 0 12px 8px;
      width: calc(100% - 24px);
      padding: 8px 10px;
      font-family: 'Manrope', sans-serif;
      font-size: 13px;
      border: 2px solid var(--border);
      border-radius: 10px;
      resize: vertical;
      min-height: 60px;
      outline: none;
      transition: border-color .15s;
    }

    .notes-input:focus {
      border-color: var(--blue)
    }

    .notes-save-btn {
      margin: 0 12px 10px;
      font-family: 'Bangers', cursive;
      font-size: 15px;
      letter-spacing: 1px;
      background: var(--green);
      color: #fff;
      border: 2px solid #15803d;
      border-radius: 20px;
      padding: 6px 20px;
      cursor: pointer;
      box-shadow: 0 2px 0 #15803d;
      transition: all .1s;
    }

    .notes-save-btn:active {
      transform: translateY(2px);
      box-shadow: none
    }

    .notes-list {
      max-height: 160px;
      overflow-y: auto;
      border-top: 1px solid var(--border)
    }

    .note-item {
      padding: 8px 14px;
      border-bottom: 1px solid #f1f5f9;
      display: flex;
      gap: 8px;
      align-items: flex-start
    }

    .note-item:last-child {
      border-bottom: none
    }

    .note-time {
      font-family: 'Bangers', cursive;
      font-size: 12px;
      color: var(--blue);
      background: #dbeafe;
      padding: 1px 6px;
      border-radius: 8px;
      flex-shrink: 0;
      cursor: pointer
    }

    .note-time:hover {
      background: var(--blue);
      color: #fff
    }

    .note-text {
      font-size: 12px;
      color: var(--text);
      line-height: 1.4;
      flex: 1
    }

    .note-del {
      font-size: 12px;
      color: #cbd5e1;
      cursor: pointer;
      flex-shrink: 0
    }

    .note-del:hover {
      color: var(--red)
    }

    .notes-empty {
      padding: 12px 14px;
      font-size: 12px;
      color: var(--muted);
      font-style: italic
    }

    /* ── PART DIVIDER ── */
    .part-divider {
      border: 5px solid var(--dark);
      border-radius: 50px;
      padding: 16px 28px;
      text-align: center;
      box-shadow: 0 8px 0 var(--blue);
      transition: transform 0.2s cubic-bezier(0.175, 0.885, 0.32, 1.275);
    }

    .part-divider:hover {
      transform: translateY(-3px);
    }

    .part-divider.blue {
      background: var(--yellow); color: var(--dark);
    }

    .part-divider.orange {
      background: var(--orange); color: #fff;
    }

    .part-divider.green {
      background: var(--cyan); color: var(--dark);
    }

    .part-divider.purple {
      background: var(--dorange); color: #fff;
    }

    .part-divider h2 {
      font-family: 'Unbounded', sans-serif;
      font-size: 15px;
      font-weight: 900;
      text-shadow: none;
      line-height: 1.3
    }

    /* Khoảng cách giữa part header và playlist: 10px */
    .section[id^="s-p"]:not([id^="s-pl"]) {
      margin-bottom: 10px;
    }

    /* Khoảng cách sau mỗi khối playlist (trước phần tiếp theo): 20px */
    .section[id^="s-pl"] {
      margin-bottom: 20px;
    }

    /* ── PLAYLIST ── */
    .playlist-wrap {
      background: var(--card);
      border: 4px solid var(--dark);
      border-radius: 24px;
      overflow: hidden;
      box-shadow: 0 8px 0 var(--blue);
    }

    .pl-header {
      background: linear-gradient(135deg, var(--dark), var(--blue));
      padding: 9px 14px;
      display: flex;
      align-items: center;
      justify-content: space-between
    }

    .pl-header span {
      font-family: 'Bangers', cursive;
      color: #fff;
      font-size: 15px;
      letter-spacing: 1px
    }

    .pl-count {
      background: var(--yellow);
      color: var(--dark);
      font-family: 'Bangers', cursive;
      font-size: 13px;
      padding: 2px 10px;
      border-radius: 20px;
      border: 2px solid var(--dark)
    }

    /* ── CHAPTER ── */
    .chapter {
      border-bottom: 3px solid var(--bg)
    }

    .chapter:last-child {
      border-bottom: none
    }

    .ch-header {
      display: flex;
      align-items: center;
      gap: 8px;
      padding: 9px 12px;
      cursor: pointer;
      user-select: none;
      background: var(--card);
      transition: background .15s;
    }

    .ch-header:hover {
      background: #f8fafc
    }

    .ch-header.active {
      background: linear-gradient(135deg, #eff6ff, #dbeafe)
    }

    .ch-num {
      font-family: 'Bangers', cursive;
      background: var(--orange);
      color: #fff;
      padding: 2px 8px;
      border-radius: 16px;
      font-size: 12px;
      border: 2px solid var(--dark);
      box-shadow: 0 2px 0 var(--dark);
      flex-shrink: 0;
      min-width: 30px;
      text-align: center
    }

    .ch-header.active .ch-num {
      background: var(--blue)
    }

    .ch-title {
      font-size: 12px;
      font-weight: 800;
      color: var(--text);
      flex: 1;
      line-height: 1.3
    }

    .ch-progress {
      font-size: 10px;
      font-weight: 700;
      color: var(--muted);
      flex-shrink: 0
    }

    .ch-badge {
      font-size: 10px;
      font-weight: 700;
      background: #dbeafe;
      color: var(--blue);
      padding: 1px 7px;
      border-radius: 10px;
      flex-shrink: 0
    }

    .ch-badge.soon {
      background: #fef3c7;
      color: var(--dorange)
    }

    .ch-arrow {
      font-size: 9px;
      color: #94a3b8;
      transition: transform .25s;
      flex-shrink: 0
    }

    .chapter.open .ch-arrow {
      transform: rotate(90deg)
    }

    /* VIDEO LIST */
    .video-list {
      display: none;
      background: #f0f7ff;
      border-top: 2px dashed var(--cyan)
    }

    .chapter.open .video-list {
      display: block
    }

    .vitem {
      display: flex;
      align-items: center;
      gap: 8px;
      padding: 8px 12px 8px 24px;
      cursor: pointer;
      transition: background .12s;
      border-bottom: 1px solid #f1f5f9;
      position: relative
    }

    .vitem:last-child {
      border-bottom: none
    }

    .vitem:hover {
      background: #eff6ff
    }

    .vitem.playing {
      background: linear-gradient(90deg, #eff6ff, #dbeafe)
    }

    .vitem.playing .vname {
      color: var(--blue);
      font-weight: 800
    }

    .vplay {
      width: 22px;
      height: 22px;
      border-radius: 50%;
      background: #e2e8f0;
      border: 2px solid #cbd5e1;
      display: flex;
      align-items: center;
      justify-content: center;
      font-size: 7px;
      color: var(--muted);
      flex-shrink: 0;
      transition: all .15s
    }

    .vitem:hover .vplay,
    .vitem.playing .vplay {
      background: var(--blue);
      border-color: var(--blue);
      color: #fff
    }

    .vitem.watched .vplay {
      background: var(--green);
      border-color: var(--green);
      color: #fff
    }

    .vname {
      font-size: 12px;
      font-weight: 700;
      color: #334155;
      flex: 1;
      line-height: 1.3
    }

    .vtag {
      font-size: 10px;
      font-weight: 700;
      background: #fef3c7;
      color: var(--dorange);
      padding: 1px 6px;
      border-radius: 8px;
      flex-shrink: 0
    }

    .vtag.playing {
      background: var(--blue);
      color: #fff
    }

    .vtag.watched {
      background: #dcfce7;
      color: var(--green)
    }

    /* INLINE PLAYER (mobile) */
    .inline-player {
      animation: slideDown .3s ease;
      overflow: hidden
    }

    @keyframes slideDown {
      from {
        opacity: 0;
        max-height: 0
      }

      to {
        opacity: 1;
        max-height: 700px
      }
    }

    .inp-inner {
      background: var(--bg);
      border: 2px solid var(--blue);
      border-radius: 12px;
      overflow: hidden;
      margin: 4px 8px 8px;
      box-shadow: 0 4px 16px rgba(0, 64, 190, .3)
    }

    .inp-header {
      display: flex;
      align-items: center;
      justify-content: space-between;
      padding: 7px 12px;
      background: linear-gradient(135deg, var(--dark), var(--blue))
    }

    .inp-title {
      font-size: 12px;
      font-weight: 800;
      color: #fff;
      flex: 1;
      margin-right: 8px
    }

    .inp-close {
      background: rgba(255, 255, 255, .15);
      border: 1px solid rgba(255, 255, 255, .3);
      color: #fff;
      cursor: pointer;
      font-size: 13px;
      width: 26px;
      height: 26px;
      border-radius: 50%;
      display: flex;
      align-items: center;
      justify-content: center;
      flex-shrink: 0;
      transition: background .15s
    }

    .inp-close:hover {
      background: rgba(255, 255, 255, .3)
    }

    .inp-wrap {
      position: relative;
      padding-top: 56.25%
    }

    .inp-wrap iframe {
      position: absolute;
      top: 0;
      left: 0;
      width: 100%;
      height: 100%;
      border: none
    }

    /* TOC POPUP */
    .toc-popup {
      position: fixed;
      top: 64px;
      right: 16px;
      z-index: 150;
      background: var(--card);
      border: 4px solid var(--dark);
      border-radius: 24px;
      padding: 10px 0;
      box-shadow: 0 8px 0 var(--blue);
      display: none;
      width: 260px;
      max-height: 70vh;
      overflow-y: auto
    }

    .toc-popup.show {
      display: block;
      animation: fadeIn .25s ease
    }

    .toc-popup a {
      display: block;
      padding: 8px 18px;
      font-size: 13px;
      font-weight: 700;
      color: var(--text);
      text-decoration: none;
      transition: background .1s
    }

    .toc-popup a:hover {
      background: var(--yellow);
      color: var(--dark)
    }

    .toc-sep {
      height: 2px;
      background: var(--border);
      margin: 4px 12px
    }

    @keyframes fadeIn {
      from {
        opacity: 0;
        transform: translateY(-8px)
      }

      to {
        opacity: 1;
        transform: translateY(0)
      }
    }

    /* BACK TO TOP */
    .top-btn {
      position: fixed;
      bottom: 20px;
      left: 16px;
      z-index: 150;
      background: var(--yellow);
      color: var(--dark);
      border: 4px solid var(--dark);
      border-radius: 50%;
      width: 48px;
      height: 48px;
      font-size: 20px;
      cursor: pointer;
      box-shadow: 0 5px 0 var(--dark);
      transition: all .15s;
      display: flex;
      align-items: center;
      justify-content: center;
      opacity: 0;
      pointer-events: none;
      font-weight: 900;
    }

    .top-btn.show {
      opacity: 1;
      pointer-events: all
    }

    .top-btn:active {
      transform: translateY(3px);
      box-shadow: none
    }

    /* SECTION ANIMATION */
    .section {
      margin-bottom: 16px;
      opacity: 0;
      transform: translateY(20px);
      transition: opacity .4s ease, transform .4s ease
    }

    .section.visible {
      opacity: 1;
      transform: translateY(0)
    }

    /* DESKTOP ≥900px */
    @media(min-width:900px) {
      #tc-app .container {
        padding: 16px 20px 80px !important;
      }

      #tc-app .main-layout {
        flex-direction: row !important;
        align-items: flex-start !important;
        gap: 20px !important;
      }

      #tc-app .player-col {
        display: block !important;
        width: 72% !important;
        flex-shrink: 0 !important;
        position: sticky !important;
        top: 68px !important;
      }

      #tc-app .playlist-col {
        flex: 1 !important;
        min-width: 0 !important;
        max-width: none !important;
        margin: 0 !important;
      }

      .topbar-stats {
        display: flex
      }

      .part-divider h2 {
        font-size: 18px
      }
    }

    @media(min-width:1200px) {
      .player-col {
        width: 74%
      }
    }

    /* ══════════ DARK THEME ══════════ */
    #tc-app.dark {
      --bg: #0a1128;
      --border: #e2e8f0;
      --text: #1e293b;
      --muted: #64748b;
      background-color: #0a1128;
      background-image: radial-gradient(rgba(30, 133, 235, .1) 1px, transparent 1px);
      background-size: 28px 28px;
    }

    #tc-app.dark .topbar {
      background: var(--dark);
      border-bottom: 3px solid var(--yellow);
      box-shadow: none;
    }

    #tc-app.dark .topbar-stats { color: rgba(255, 255, 255, .75); }
    #tc-app.dark .topbar-stats span {
      background: rgba(255, 255, 255, .1);
      border: none;
    }

    #tc-app.dark .toc-toggle {
      box-shadow: 0 3px 0 var(--dark);
    }

    #tc-app.dark .theme-toggle {
      background: rgba(255,255,255,.1);
      color: var(--yellow);
      border-color: rgba(255,255,255,.2);
    }

    #tc-app.dark .player-card {
      border: 3px solid var(--dark);
      border-radius: 16px;
      box-shadow: 4px 4px 0 var(--cyan);
    }

    #tc-app.dark .part-divider {
      border: 3px solid var(--dark);
      border-radius: 14px;
      box-shadow: 3px 3px 0 var(--cyan);
    }
    #tc-app.dark .part-divider:hover { transform: none; }

    #tc-app.dark .part-divider.blue {
      background: linear-gradient(135deg, var(--blue), var(--light));
      color: #fff;
    }
    #tc-app.dark .part-divider.orange {
      background: linear-gradient(135deg, var(--orange), #ff9a44);
      color: #fff;
    }
    #tc-app.dark .part-divider.green {
      background: linear-gradient(135deg, var(--green), #34d399);
      color: #fff;
    }
    #tc-app.dark .part-divider.purple {
      background: linear-gradient(135deg, var(--purple), #a855f7);
      color: #fff;
    }
    #tc-app.dark .part-divider h2 {
      color: #fff;
      text-shadow: 2px 2px 0 rgba(0, 0, 0, .25);
    }

    #tc-app.dark .playlist-wrap {
      border: 3px solid var(--dark);
      border-radius: 14px;
      box-shadow: 3px 3px 0 var(--cyan);
    }

    #tc-app.dark .chapter { border-bottom: 2px solid #e2e8f0; }
    #tc-app.dark .video-list {
      background: #f8fafc;
      border-top: 1px solid #e2e8f0;
    }

    #tc-app.dark .inp-inner {
      box-shadow: 0 4px 16px rgba(0, 64, 190, .5);
    }

    #tc-app.dark .toc-popup {
      top: 58px;
      border: 3px solid var(--dark);
      border-radius: 14px;
      box-shadow: 5px 5px 0 var(--cyan);
    }

    #tc-app.dark .top-btn {
      background: var(--blue);
      color: #fff;
      border: 3px solid var(--dark);
      box-shadow: 0 3px 0 var(--dark);
    }

    /* ── THEME TOGGLE BUTTON ── */
    .theme-toggle {
      background: var(--bg);
      color: var(--dark);
      border: 2px solid var(--dark);
      border-radius: 8px;
      padding: 4px 10px;
      font-size: 16px;
      cursor: pointer;
      transition: all .15s;
      display: flex;
      align-items: center;
      justify-content: center;
      line-height: 1;
    }
    .theme-toggle:active { transform: scale(.96); }

  </style>
</head>

<body>
  <div id="tc-app">

    <!-- TOPBAR -->
    <nav class="topbar">
      <div class="topbar-brand">
        <a href="https://toancachep.vn/" target="_blank" rel="noopener">
          <img src="https://res.cloudinary.com/dud32vrhg/image/upload/v1775326738/TCC_Logo__TCC_Logo_ngang_xanh_tnusit.png" alt="11 - B&#xE0;i h&#x1ECD;c">
        </a>
      </div>
      <div class="topbar-stats" id="topbar-stats">
        <span id="ts-video">&#x2014; video</span>
        <span id="ts-chapter">&#x2014; ch&#x1EE7; &#x111;&#x1EC1;</span>
        <span id="ts-watched">0% ho&#xE0;n th&#xE0;nh</span>
      </div>
      <div class="topbar-right">
        <button class="theme-toggle" id="themeToggle" onclick="toggleTheme()" title="&#x110;&#x1ED5;i giao di&#x1EC7;n">&#x2600;&#xFE0F;</button>
        <button class="toc-toggle" onclick="toggleToc()">&#x2630; M&#x1EE4;C L&#x1EE4;C</button>
      </div>
    </nav>

    <div class="prog" id="prog"></div>

    <!-- TOC POPUP -->
    <div class="toc-popup" id="tocPopup">
      <a href="#" onclick="closeToc();document.getElementById(&apos;tc-app&apos;).scrollTo({top:0,behavior:&apos;smooth&apos;})">&#x1F3E0; L&#xEA;n &#x111;&#x1EA7;u
        trang</a>
      <div class="toc-sep"></div>
  <a href="#s-p1" onclick="closeToc()">&#x3030;&#xFE0F; Ph&#x1EA7;n 1 &#x2014; L&#x1AF;&#x1EE2;NG GI&#xC1;C</a>
  <a href="#s-p2" onclick="closeToc()">&#x1F4C8; Ph&#x1EA7;n 2 &#x2014; D&#xC3;Y S&#x1ED0;</a>
  <a href="#s-p3" onclick="closeToc()">&#x222B; Ph&#x1EA7;n 3 &#x2014; &#x110;&#x1EA0;I S&#x1ED0; N&#xC2;NG CAO</a>
  <a href="#s-p4" onclick="closeToc()">&#x1F4D0; Ph&#x1EA7;n 4 &#x2014; H&#xCC;NH H&#x1ECC;C KH&#xD4;NG GIAN</a>
    </div>

    <div class="container">
      <div class="main-layout">

        <!-- LEFT: Sticky Player (desktop) -->
        <div class="player-col">
          <div class="player-card">
            <div class="video-wrap">
              <div class="vid-placeholder" id="vid-placeholder">
                <div class="ph-icon">&#x25B6;&#xFE0F;</div>
                <img src="https://toancachep.vn/content/images/2026/05/-nh3.png" alt="11 - B&#xE0;i h&#x1ECD;c"><p>CH&#x1ECC;N B&#xC0;I GI&#x1EA2;NG &#x110;&#x1EC2; B&#x1EAE;T &#x110;&#x1EA6;U H&#x1ECC;C</p>
              </div>
              <div id="yt-player" style="display:none"></div>
            </div>
            <div class="now-playing">
              <div class="np-chapter" id="np-chapter">&#x1F4CC; CH&#x1AF;A CH&#x1ECC;N B&#xC0;I</div>
              <div class="np-title" id="np-title">Ch&#x1ECD;n m&#x1ED9;t video t&#x1EEB; danh s&#xE1;ch b&#xEA;n ph&#x1EA3;i &#x2192; </div>
            </div>
            <div class="player-controls">
              <button class="ctrl-btn" id="btn-autonext" onclick="toggleAutoNext()">
                <span class="dot"></span>T&#x1EF1; &#x111;&#x1ED9;ng ti&#x1EBF;p theo
              </button>
              <button class="ctrl-btn" id="btn-notes" onclick="toggleNotes()">
                &#x1F4DD; Ghi ch&#xFA;
              </button>
            </div>
            <div class="notes-panel" id="notes-panel">
              <div class="notes-header">
                <span>&#x1F4DD; Ghi ch&#xFA; b&#xE0;i h&#x1ECD;c</span>
                <button class="note-ts-btn" onclick="addTimestamp()">+ Th&#xEA;m m&#x1ED1;c th&#x1EDD;i gian</button>
              </div>
              <textarea class="notes-input" id="note-input" placeholder="Ghi ch&#xFA; c&#x1EE7;a b&#x1EA1;n...
V&#xED; d&#x1EE5;: C&#xF4;ng th&#x1EE9;c &#x111;&#x1EA1;o h&#xE0;m h&#x1EE3;p f(g(x))&apos; = f&apos;(g(x))&#xB7;g&apos;(x)"></textarea>
              <button class="notes-save-btn" onclick="saveNote()">&#x1F4BE; L&#x1AF;U GHI CH&#xDA;</button>
              <div class="notes-list" id="notes-list"></div>
            </div>
          </div>
        </div>

        <!-- RIGHT: Playlists -->
        <div class="playlist-col"><!-- PLAYLIST-START -->

  <!-- PHẦN 1 -->
  <div class="section" id="s-p1">
    <div class="part-divider blue"><h2>&#x3030;&#xFE0F; PH&#x1EA6;N 1<br>L&#x1AF;&#x1EE2;NG GI&#xC1;C &amp; PTLG</h2></div>
  </div>
  <div class="section" id="s-pl1">
    <div class="playlist-wrap">
      <div class="pl-header">
        <span>&#x1F4CB; DANH S&#xC1;CH B&#xC0;I GI&#x1EA2;NG</span>
        <span class="pl-count" id="cnt1">...</span>
      </div>
      <div id="playlist-1"></div>
    </div>
  </div>

  <!-- PHẦN 2 -->
  <div class="section" id="s-p2">
    <div class="part-divider orange"><h2>&#x1F4C8; PH&#x1EA6;N 2<br>D&#xC3;Y S&#x1ED0; &amp; GI&#x1EDA;I H&#x1EA0;N</h2></div>
  </div>
  <div class="section" id="s-pl2">
    <div class="playlist-wrap">
      <div class="pl-header">
        <span>&#x1F4CB; DANH S&#xC1;CH B&#xC0;I GI&#x1EA2;NG</span>
        <span class="pl-count" id="cnt2">...</span>
      </div>
      <div id="playlist-2"></div>
    </div>
  </div>

  <!-- PHẦN 3 -->
  <div class="section" id="s-p3">
    <div class="part-divider green"><h2>&#x222B; PH&#x1EA6;N 3<br>&#x110;&#x1EA0;I S&#x1ED0; N&#xC2;NG CAO</h2></div>
  </div>
  <div class="section" id="s-pl3">
    <div class="playlist-wrap">
      <div class="pl-header">
        <span>&#x1F4CB; DANH S&#xC1;CH B&#xC0;I GI&#x1EA2;NG</span>
        <span class="pl-count" id="cnt3">...</span>
      </div>
      <div id="playlist-3"></div>
    </div>
  </div>

  <!-- PHẦN 4 -->
  <div class="section" id="s-p4">
    <div class="part-divider purple"><h2>&#x1F4D0; PH&#x1EA6;N 4<br>H&#xCC;NH H&#x1ECC;C KH&#xD4;NG GIAN</h2></div>
  </div>
  <div class="section" id="s-pl4">
    <div class="playlist-wrap">
      <div class="pl-header">
        <span>&#x1F4CB; DANH S&#xC1;CH B&#xC0;I GI&#x1EA2;NG</span>
        <span class="pl-count" id="cnt4">...</span>
      </div>
      <div id="playlist-4"></div>
    </div>
  </div>

<!-- PLAYLIST-END -->
        </div>

      </div><!-- /.main-layout -->
    </div><!-- /.container -->

    <button class="top-btn" id="topBtn" onclick="document.getElementById(&apos;tc-app&apos;).scrollTo({top:0,behavior:&apos;smooth&apos;})">&#x2B06;&#xFE0F;</button>

  </div><!-- /#tc-app -->

  <script>
    // ================================================================
    // DỮ LIỆU KHÓA HỌC
    // ================================================================

    const PARTS = [
  {
    containerId: "playlist-1",
    countId: "cnt1",
    chapters: [
      { num:"1", title:"Giá trị lượng giác", videos:[
        { name:"Dạng 1,2", id:"cLpNoOty6xQ" },
        { name:"Dạng 3", id:"qVpTd-fuHa8" },
        { name:"Dạng 4,5", id:"tuGtRC8UpJc" },
        { name:"Sửa BT", id:"L1R0iWdHc44" }
      ]},
      { num:"2", title:"Công thức lượng giác", videos:[
        { name:"Phần 1", id:"hNZ3Pnq5pg4" },
        { name:"Phần 2", id:"FswPCJa1j9c" }
      ]},
      { num:"3", title:"Hàm số lượng giác", videos:[
        { name:"Tổng hợp", id:"2B7rzBYThxY" }
      ]},
      { num:"4", title:"Phương trình lượng giác cơ bản", videos:[
        { name:"Phần 1", id:"Q04FN3LV5BI" },
        { name:"Phần 2", id:"brCHJIbDiCo" }
      ]}
    ]
  },
  {
    containerId: "playlist-2",
    countId: "cnt2",
    chapters: [
      { num:"5", title:"Dãy số", videos:[
        { name:"Phần 1", id:"IklUcKeEy44" },
        { name:"Phần 2", id:"3fahPt4aNSI" }
      ]},
      { num:"6 + 7", title:"CSC, CSN", videos:[
        { name:"Phần 1", id:"Kdj8PBT0h9Q" },
        { name:"Phần 2", id:"e4IoX9ihTDs" },
        { name:"Toán thực tế", id:"xSLkTc00el0" }
      ]},
      { num:"8", title:"Giới hạn dãy số", videos:[
        { name:"Phần 1", id:"Nk3ehTZFmXM" },
        { name:"Phần 2", id:"yyG3nAbU07w" }
      ]},
      { num:"9", title:"A. Giới hạn hàm số tại vô cực", videos:[
        { name:"Phần 1", id:"U9d44Dp3V48" },
        { name:"Phần 2", id:"bQMpBHdm9kc" },
        { name:"Nâng cao", id:"GOe5wudwLoc" },
        { name:"Phần 1", id:"Q0BxHtlMqcI" },
        { name:"Tổng hợp", id:"4xQ3IlVp0_k" }
      ]}
    ]
  },
  {
    containerId: "playlist-3",
    countId: "cnt3",
    chapters: [
      { num:"16", title:"Công thức lũy thừa, logarit", videos:[
        { name:"Phần 1", id:"SR650D3xK8A" },
        { name:"Phần 2", id:"0iqj_2-wPcg" }
      ]},
      { num:"17", title:"Hàm số mũ, logarit", videos:[
        { name:"Phần 1 - Tập xác định, tính đơn điệu", id:"6FKgmzRqZWo" },
        { name:"Phần 2 - Đồ thị hàm số", id:"Ab5HCCUuZZE" }
      ]},
      { num:"18", title:"Phương trình mũ, logarit", videos:[
        { name:"Phần 1 - Phương trình mũ", id:"Bw8bth7IFnw" },
        { name:"Phần 2 - Phương trình logarit", id:"6uAlVATORlE" }
      ]},
      { num:"19", title:"Bất phương trình mũ, logarit", videos:[
        { name:"Tổng hợp", id:"b5g9bj1tVsk" }
      ]},
      { num:"20", title:"Bài toán thực tế", videos:[
        { name:"Tổng hợp", id:"5ezZAxifiZo" }
      ]},
      { num:"21", title:"Xác suất", videos:[
        { name:"Phần 1 - Làm quen định nghĩa và công thức", id:"d53Sekl2VIU" },
        { name:"Phần 2 - Luyện tập công thức", id:"VIDEO_ID_P3_CD21_02" }
      ]},
      { num:"22", title:"Đạo hàm bằng định nghĩa", videos:[
        { name:"Tổng hợp", id:"zI85F4SoS6g" }
      ]},
      { num:"23", title:"Đạo hàm bằng quy tắc", videos:[
        { name:"Phần 1 - Cơ bản", id:"1OTB2c9NvNg" },
        { name:"Phần 2 - Hàm hợp", id:"xcCIbJUK5tU" }
      ]},
      { num:"24", title:"Đạo hàm cấp 2", videos:[
        { name:"Tổng hợp", id:"P_VZcXumlnU" }
      ]},
      { num:"25", title:"Phương trình tiếp tuyến", videos:[
        { name:"Tổng hợp", id:"P_VZcXumlnU" }
      ]},
      { num:"26", title:"Bài toán thực tế", videos:[
        { name:"Tổng hợp", id:"VIDEO_ID_P3_CD26_01" }
      ]}
    ]
  },
  {
    containerId: "playlist-4",
    countId: "cnt4",
    chapters: [
      { num:"11", title:"Giao tuyến 2 mặt phẳng", videos:[
        { name:"Phần 1", id:"NscnZgJJcDY" },
        { name:"Phần 2", id:"PsDF1uG4Opc" },
        { name:"Phần 3", id:"zzIm-YXN-v0" },
        { name:"Phần 4", id:"8zbuu0_ZqLs" },
        { name:"Sửa BT", id:"QnZO104AjHQ" }
      ]},
      { num:"12, 13", title:"Chứng minh song song", videos:[
        { name:"Tổng hợp", id:"eJbJlvj5mh8" }
      ]},
      { num:"14", title:"Hai mặt phẳng song song", videos:[
        { name:"Tổng hợp", id:"YbZzCaxaHg4" }
      ]},
      { num:"28", title:"Góc giữa 2 đường thẳng", videos:[
        { name:"Tổng hợp", id:"3GhPqzUFU3g" }
      ]},
      { num:"29", title:"Chứng minh vuông góc", videos:[
        { name:"Tổng hợp", id:"_RMtrBoPMkc" }
      ]},
      { num:"30", title:"Góc giữa đường và mặt", videos:[
        { name:"Phần 1 - Cạnh bên và mặt đáy", id:"fDHf6B4Ankc" },
        { name:"Phần 2 - Cạnh bên và mặt đứng, đường cao và mặt bên", id:"IqoKBak5pzE" }
      ]},
      { num:"31", title:"Góc nhị diện", videos:[
        { name:"Tổng hợp", id:"I-KE4H9T0f0" }
      ]},
      { num:"33", title:"Khoảng cách", videos:[
        { name:"Phần 1 - Chân đường cao đến mặt bên", id:"ZjGKwd3plvA" },
        { name:"Phần 2 - Điểm khác chân đường cao đến mặt bên", id:"X3pVxmnfbA8" },
        { name:"Phần 3 - Hai đường thẳng chéo nhau", id:"haLT4rKKLoI" }
      ]},
      { num:"34", title:"Thể tích", videos:[] }
    ]
  }
];

    // ================================================================
    // STATE
    // ================================================================
    let ytPlayer = null, ytReady = false;
    let currentVideoId = null, activeItem = null, inlinePlayer = null;
    let autoNext = false;
    let playQueue = [];   // [{id,name,chapter,el}]
    let watched = JSON.parse(localStorage.getItem('tc-watched') || '{}');
    let notes = JSON.parse(localStorage.getItem('tc-notes') || '{}');

    // ================================================================
    // YOUTUBE IFRAME API
    // ================================================================
    function onYouTubeIframeAPIReady() {
      ytPlayer = new YT.Player('yt-player', {
        playerVars: { rel: 0, modestbranding: 1, autoplay: 0 },
        events: {
          onReady: () => { ytReady = true; },
          onStateChange: e => {
            if (e.data === YT.PlayerState.ENDED) {
              markWatched(currentVideoId, activeItem);
              if (autoNext) playNext();
            }
          }
        }
      });
    }

    function embedUrl(id) {
      return 'https://www.youtube-nocookie.com/embed/' + id + '?rel=0&modestbranding=1&autoplay=1';
    }

    // ================================================================
    // PLAY VIDEO
    // ================================================================
    function playVideo(id, name, chapterTitle, el) {
      if (id.startsWith('VIDEO_ID_')) {
        alert('⚠️ Chưa có Video ID!\n\nĐiền ID vào file video-data.csv rồi nhắn Tô cập nhật.');
        return;
      }
      closeInline(false);

      if (activeItem) activeItem.classList.remove('playing');
      el.classList.add('playing');
      activeItem = el; currentVideoId = id;

      if (window.innerWidth >= 900) {
        // Desktop: sticky player
        document.getElementById('vid-placeholder').style.display = 'none';
        const ypEl = document.getElementById('yt-player');
        ypEl.style.display = 'block';
        if (ytReady && ytPlayer && ytPlayer.loadVideoById) {
          ytPlayer.loadVideoById(id);
        } else {
          // Fallback: replace with iframe
          ypEl.innerHTML = `<iframe src="${embedUrl(id)}" allow="accelerometer;autoplay;clipboard-write;encrypted-media;gyroscope;picture-in-picture" allowfullscreen style="position:absolute;top:0;left:0;width:100%;height:100%;border:none"></iframe>`;
        }
        document.getElementById('np-chapter').textContent = '▶ ' + chapterTitle;
        document.getElementById('np-title').textContent = name;
        renderNotes();
      } else {
        // Mobile: inline player
        markWatched(id, el);
        const div = document.createElement('div');
        div.className = 'inline-player';
        div.innerHTML = `<div class="inp-inner">
      <div class="inp-header">
        <span class="inp-title">${name}</span>
        <button class="inp-close" onclick="closeInline(true)">✕</button>
      </div>
      <div class="inp-wrap">
        <iframe src="${embedUrl(id)}" allow="accelerometer;autoplay;clipboard-write;encrypted-media;gyroscope;picture-in-picture" allowfullscreen></iframe>
      </div>
    </div>`;
        el.after(div);
        inlinePlayer = div;
        setTimeout(() => div.scrollIntoView({ behavior: 'smooth', block: 'nearest' }), 80);
      }

      // Find index in queue for auto-next
      currentVideoId = id;
    }

    function playNext() {
      const idx = playQueue.findIndex(v => v.id === currentVideoId);
      if (idx >= 0 && idx < playQueue.length - 1) {
        const next = playQueue[idx + 1];
        // Open parent chapter if closed
        const chEl = next.el.closest('.chapter');
        if (chEl && !chEl.classList.contains('open')) {
          toggleChapter(chEl);
        }
        next.el.scrollIntoView({ behavior: 'smooth', block: 'nearest' });
        playVideo(next.id, next.name, next.chapter, next.el);
      }
    }

    function closeInline(clearActive = true) {
      if (inlinePlayer) { inlinePlayer.remove(); inlinePlayer = null; }
      if (clearActive && activeItem) {
        activeItem.classList.remove('playing');
        const t = activeItem.querySelector('.vtag');
        if (t) t.classList.remove('playing');
        activeItem = null;
      }
    }

    // ================================================================
    // PROGRESS TRACKING
    // ================================================================
    function markWatched(id, el) {
      if (!id || watched[id]) return;
      watched[id] = true;
      localStorage.setItem('tc-watched', JSON.stringify(watched));
      if (el) {
        el.classList.add('watched');
        const vplay = el.querySelector('.vplay');
        if (vplay) vplay.textContent = '✓';
        const tag = el.querySelector('.vtag');
        if (tag) { tag.classList.remove('playing'); tag.classList.add('watched'); }
      }
      updateStats();
    }

    function applyWatchedState() {
      Object.keys(watched).forEach(id => {
        const els = document.querySelectorAll(`[data-vid="${id}"]`);
        els.forEach(el => {
          el.classList.add('watched');
          const vp = el.querySelector('.vplay');
          if (vp) vp.textContent = '✓';
          const tg = el.querySelector('.vtag');
          if (tg) tg.classList.add('watched');
        });
      });
    }

    function updateStats() {
      const total = playQueue.length;
      const done = Object.keys(watched).length;
      const pct = total > 0 ? Math.round(done / total * 100) : 0;
      const tsW = document.getElementById('ts-watched');
      if (tsW) tsW.textContent = `${pct}% hoàn thành`;
    }

    // ================================================================
    // AUTO-NEXT
    // ================================================================
    function toggleAutoNext() {
      autoNext = !autoNext;
      document.getElementById('btn-autonext').classList.toggle('active', autoNext);
    }

    // ================================================================
    // NOTES
    // ================================================================
    function toggleNotes() {
      const p = document.getElementById('notes-panel');
      const open = p.classList.toggle('open');
      document.getElementById('btn-notes').classList.toggle('active', open);
      if (open) renderNotes();
    }

    function addTimestamp() {
      const inp = document.getElementById('note-input');
      let ts = '0:00';
      if (ytReady && ytPlayer && ytPlayer.getCurrentTime) {
        const t = Math.floor(ytPlayer.getCurrentTime());
        ts = `${Math.floor(t / 60)}:${String(t % 60).padStart(2, '0')}`;
      }
      inp.value = (inp.value ? inp.value + ' ' : '') + '[' + ts + '] ';
      inp.focus();
    }

    function saveNote() {
      const inp = document.getElementById('note-input');
      const text = inp.value.trim();
      if (!text || !currentVideoId) return;
      let ts = 0, tsStr = '0:00';
      if (ytReady && ytPlayer && ytPlayer.getCurrentTime) {
        ts = Math.floor(ytPlayer.getCurrentTime());
        tsStr = `${Math.floor(ts / 60)}:${String(ts % 60).padStart(2, '0')}`;
      }
      if (!notes[currentVideoId]) notes[currentVideoId] = [];
      notes[currentVideoId].unshift({ ts, tsStr, text, date: Date.now() });
      localStorage.setItem('tc-notes', JSON.stringify(notes));
      inp.value = '';
      renderNotes();
    }

    function deleteNote(videoId, idx) {
      if (notes[videoId]) {
        notes[videoId].splice(idx, 1);
        localStorage.setItem('tc-notes', JSON.stringify(notes));
        renderNotes();
      }
    }

    function seekTo(ts) {
      if (ytReady && ytPlayer && ytPlayer.seekTo) ytPlayer.seekTo(ts, true);
    }

    function renderNotes() {
      const list = document.getElementById('notes-list');
      if (!list) return;
      const vid = currentVideoId;
      const items = vid && notes[vid] ? notes[vid] : [];
      if (!items.length) {
        list.innerHTML = '<div class="notes-empty">Chưa có ghi chú cho bài này.</div>';
        return;
      }
      list.innerHTML = items.map((n, i) => `
    <div class="note-item">
      <span class="note-time" onclick="seekTo(${n.ts})" title="Nhảy đến ${n.tsStr}">[${n.tsStr}]</span>
      <span class="note-text">${n.text}</span>
      <span class="note-del" onclick="deleteNote('${vid}',${i})" title="Xóa">✕</span>
    </div>`).join('');
    }

    // ================================================================
    // BUILD PLAYLIST
    // ================================================================
    function toggleChapter(chEl) {
      const isOpen = chEl.classList.contains('open');
      chEl.classList.toggle('open', !isOpen);
      const hdr = chEl.querySelector('.ch-header');
      if (hdr) hdr.classList.toggle('active', !isOpen);
    }

    function buildPart(part) {
      const container = document.getElementById(part.containerId);
      let html = '', count = 0;
      part.chapters.forEach((ch, ci) => {
        const hasVideos = ch.videos.length > 0;
        count += ch.videos.length;
        const badge = hasVideos
          ? `<span class="ch-badge">${ch.videos.length}</span>`
          : `<span class="ch-badge soon">Sắp có</span>`;
        const arrow = hasVideos ? `<span class="ch-arrow">▶</span>` : '';
        let vitems = '';
        ch.videos.forEach((v, vi) => {
          const wCls = watched[v.id] ? ' watched' : '';
          const wIcon = watched[v.id] ? '✓' : '▶';
          playQueue.push({ id: v.id, name: v.name, chapter: `CĐ ${ch.num} — ${ch.title}`, el: null });
          vitems += `<div class="vitem${wCls}" data-vid="${v.id}"
        onclick="playVideo('${v.id}','${v.name.replace(/'/g, "\\'")}','CĐ ${ch.num} — ${ch.title.replace(/'/g, "\\'")}',this)">
        <div class="vplay">${wIcon}</div>
        <div class="vname">${v.name}</div>
      </div>`;
        });
        const vlist = hasVideos ? `<div class="video-list">${vitems}</div>` : '';
        html += `<div class="chapter" id="ch-${part.containerId}-${ci}">
      <div class="ch-header" onclick="toggleChapter(this.closest('.chapter'))">
        <span class="ch-num">${ch.num}</span>
        <span class="ch-title">${ch.title}</span>
        ${badge}${arrow}
      </div>${vlist}
    </div>`;
      });
      container.innerHTML = html;
      // Backfill el references
      container.querySelectorAll('.vitem').forEach(el => {
        const vid = el.dataset.vid;
        const q = playQueue.find(v => v.id === vid && !v.el);
        if (q) q.el = el;
      });
      document.getElementById(part.countId).textContent = count + ' video';
      return count;
    }

    function init() {
      let totalV = 0, totalC = 0;
      PARTS.forEach(p => { totalV += buildPart(p); totalC += p.chapters.length; });
      document.getElementById('ts-video').textContent = totalV + ' video';
      document.getElementById('ts-chapter').textContent = totalC + ' chủ đề';
      updateStats();
    }
    init();

    // ================================================================
    // TOC + SCROLL UTILS
    // ================================================================
    function toggleToc() { document.getElementById('tocPopup').classList.toggle('show') }
    function closeToc() { document.getElementById('tocPopup').classList.remove('show') }
    document.addEventListener('click', e => {
      if (!e.target.closest('.toc-toggle') && !e.target.closest('.toc-popup')) closeToc();
    });

    function updateProgress() {
      const app = document.getElementById('tc-app');
      const st = app.scrollTop;
      const dH = app.scrollHeight - app.clientHeight;
      document.getElementById('prog').style.width = (dH > 0 ? st / dH * 100 : 0) + '%';
      const btn = document.getElementById('topBtn');
      st > 300 ? btn.classList.add('show') : btn.classList.remove('show');
    }
    document.getElementById('tc-app').addEventListener('scroll', updateProgress, { passive: true });
    updateProgress();

    // Scroll reveal (dùng tc-app làm root)
    const sEls = document.querySelectorAll('.section');
    const obs = new IntersectionObserver(entries => {
      entries.forEach(e => { if (e.isIntersecting) e.target.classList.add('visible'); });
    }, { threshold: 0.06, rootMargin: '0px 0px -20px 0px', root: document.getElementById('tc-app') });
    sEls.forEach(s => obs.observe(s));

    // TOC anchor scrolling (trong tc-app)
    document.querySelectorAll('.toc-popup a[href^="#s-"]').forEach(a => {
      a.addEventListener('click', e => {
        e.preventDefault();
        const id = a.getAttribute('href').substring(1);
        const el = document.getElementById(id);
        if (el) el.scrollIntoView({ behavior: 'smooth', block: 'start' });
        closeToc();
      });
    });

    window.addEventListener('resize', () => { if (window.innerWidth >= 900 && inlinePlayer) closeInline(true); });

    // ══ THEME TOGGLE ══
    function toggleTheme() {
      const app = document.getElementById('tc-app');
      const btn = document.getElementById('themeToggle');
      const isDark = app.classList.toggle('dark');
      btn.textContent = isDark ? '🌙' : '☀️';
      localStorage.setItem('tc11-theme', isDark ? 'dark' : 'light');
    }

    // Restore theme on load
    (function() {
      const saved = localStorage.getItem('tc11-theme');
      if (saved === 'dark') {
        document.getElementById('tc-app').classList.add('dark');
        document.getElementById('themeToggle').textContent = '🌙';
      }
    })();
  </script>
</body>

</html>
<!--kg-card-end: html-->
]]></content:encoded></item><item><title><![CDATA[12 - Bài học]]></title><description><![CDATA[Video bài giảng lớp 12]]></description><link>https://toancachep.vn/12-bai-hoc/</link><guid isPermaLink="false">69d0e8b4455da604eaf9cb33</guid><category><![CDATA[lop-12]]></category><dc:creator><![CDATA[Cá Chép]]></dc:creator><pubDate>Sat, 04 Apr 2026 10:33:16 GMT</pubDate><media:content url="https://toancachep.vn/content/images/2026/04/webcover.png" medium="image"/><content:encoded><![CDATA[
<!--kg-card-begin: html-->
<!DOCTYPE html>
<html lang="vi">

<head>
  <meta charset="utf-8">
  <meta content="width=device-width,initial-scale=1,maximum-scale=5" name="viewport">
  <title>Video B&#xE0;i Gi&#x1EA3;ng To&#xE1;n 12 | To&#xE1;n C&#xE1; Ch&#xE9;p</title>
  <link href="https://fonts.googleapis.com/css2?family=Bangers&amp;family=Manrope:wght@400;600;700;800&amp;family=Unbounded:wght@400;700;900&amp;display=swap" rel="stylesheet">
  <script src="https://www.youtube.com/iframe_api"></script>
  <style>
    :root {
      --blue: #0040BE;
      --dark: #003B99;
      --light: #1E85EB;
      --cyan: #3C9EEF;
      --yellow: #F7C800;
      --orange: #FF7800;
      --dorange: #E24500;
      --bg: #0a1128;
      --green: #16a34a;
      --purple: #7c3aed;
      --red: #dc2626;
      --card: #fff;
      --border: #e2e8f0;
      --text: #1e293b;
      --muted: #64748b;
    }

    *,
    *::before,
    *::after {
      box-sizing: border-box;
      margin: 0;
      padding: 0
    }

    html,
    body {
      width: 100vw;
      height: 100vh;
      overflow: hidden;
      font-family: 'Manrope', sans-serif;
      -webkit-tap-highlight-color: transparent
    }

    /* App wrapper thoát hoàn toàn khỏi container Ghost */
    #tc-app {
      position: fixed;
      inset: 0;
      z-index: 9999;
      overflow-y: auto;
      overflow-x: hidden;
      background: var(--bg);
      background-image: radial-gradient(rgba(30, 133, 235, .1) 1px, transparent 1px);
      background-size: 28px 28px;
      color: var(--text);
      scroll-behavior: smooth;
    }

    /* ── TOPBAR ── */
    .topbar {
      position: sticky;
      top: 0;
      z-index: 200;
      background: var(--dark);
      border-bottom: 3px solid var(--yellow);
      display: flex;
      align-items: center;
      justify-content: space-between;
      padding: 0 16px;
      height: 52px;
      gap: 12px;
      width: 100%;
      overflow: visible;
    }

    .topbar-brand a {
      display: block;
      line-height: 0
    }

    .topbar-brand img {
      height: 64px;
      width: auto;
      display: block;
      filter: drop-shadow(0 2px 4px rgba(0, 0, 0, .4));
      transition: opacity .15s;
    }

    .topbar-brand img:hover {
      opacity: .85
    }

    .topbar-stats {
      font-size: 11px;
      font-weight: 700;
      color: rgba(255, 255, 255, .75);
      display: none;
      gap: 12px;
    }

    .topbar-stats span {
      background: rgba(255, 255, 255, .1);
      padding: 3px 9px;
      border-radius: 20px;
      white-space: nowrap;
    }

    .topbar-right {
      display: flex;
      align-items: center;
      gap: 8px
    }

    .toc-toggle {
      font-family: 'Bangers', cursive;
      background: var(--yellow);
      color: var(--dark);
      border: 2px solid var(--dark);
      border-radius: 8px;
      padding: 4px 12px;
      font-size: 16px;
      cursor: pointer;
      letter-spacing: 1px;
      transition: all .15s;
    }

    .toc-toggle:active {
      transform: scale(.96)
    }

    /* ── PROGRESS BAR ── */
    .prog {
      position: fixed;
      top: 52px;
      left: 0;
      height: 3px;
      background: linear-gradient(90deg, var(--yellow), var(--orange));
      z-index: 199;
      width: 0;
      transition: width .15s;
      box-shadow: 0 0 8px rgba(247, 200, 0, .5)
    }

    /* ── CONTAINER ── */
    #tc-app .container {
      max-width: 1360px !important;
      margin: 0 auto !important;
      padding: 12px 12px 80px !important;
    }

    /* ── MAIN LAYOUT ── */
    #tc-app .main-layout {
      display: flex !important;
      flex-direction: column !important;
      gap: 16px !important;
      align-items: center !important;
    }

    #tc-app .player-col {
      display: none !important;
    }

    #tc-app .playlist-col {
      display: flex !important;
      flex-direction: column !important;
      gap: 0 !important;
      max-width: 600px !important;
      margin: 0 auto !important;
      width: 100% !important;
    }

    /* ── PLAYER CARD ── */
    .player-card {
      background: var(--card);
      border: 3px solid var(--dark);
      border-radius: 16px;
      overflow: hidden;
      box-shadow: 4px 4px 0 var(--cyan);
    }

    .video-wrap {
      position: relative;
      width: 100%;
      padding-top: 56.25%;
      background: #000
    }


    .video-wrap>* {
      position: absolute;
      top: 0;
      left: 0;
      width: 100%;
      height: 100%;
      border: none
    }

    .vid-placeholder {
      display: flex;
      flex-direction: column;
      align-items: center;
      justify-content: center;
      background: linear-gradient(135deg, #0a1128, #1a1f3a);
      color: #fff;
      gap: 10px;
    }

    .vid-placeholder .ph-icon {
      font-size: 40px
    }

    .vid-placeholder p {
      font-family: 'Bangers', cursive;
      font-size: 15px;
      color: var(--yellow);
      letter-spacing: 1px;
      text-align: center;
      padding: 0 20px
    }

    /* NOW PLAYING */
    .now-playing {
      padding: 10px 14px;
      border-top: 2px solid var(--blue);
      background: linear-gradient(135deg, #eff6ff, #dbeafe);
    }

    .np-chapter {
      font-family: 'Bangers', cursive;
      font-size: 11px;
      color: var(--dorange);
      letter-spacing: 1px
    }

    .np-title {
      font-size: 14px;
      font-weight: 800;
      color: var(--dark);
      margin-top: 2px;
      line-height: 1.3
    }

    /* PLAYER CONTROLS BAR */
    .player-controls {
      display: flex;
      align-items: center;
      gap: 8px;
      padding: 8px 14px;
      background: #f8fafc;
      border-top: 1px solid var(--border);
      flex-wrap: wrap;
    }

    .ctrl-btn {
      display: flex;
      align-items: center;
      gap: 5px;
      font-size: 12px;
      font-weight: 700;
      padding: 5px 12px;
      border-radius: 20px;
      border: 2px solid var(--border);
      cursor: pointer;
      transition: all .15s;
      background: var(--card);
      color: var(--text);
    }

    .ctrl-btn:hover {
      border-color: var(--blue);
      color: var(--blue)
    }

    .ctrl-btn.active {
      background: var(--blue);
      border-color: var(--blue);
      color: #fff
    }

    .ctrl-btn .dot {
      width: 8px;
      height: 8px;
      border-radius: 50%;
      background: currentColor
    }

    /* NOTES PANEL */
    .notes-panel {
      display: none;
      border-top: 2px solid var(--border);
      background: #fafbff
    }

    .notes-panel.open {
      display: block
    }

    .notes-header {
      padding: 10px 14px 6px;
      display: flex;
      align-items: center;
      justify-content: space-between
    }

    .notes-header span {
      font-size: 13px;
      font-weight: 800;
      color: var(--dark)
    }

    .note-ts-btn {
      font-size: 11px;
      font-weight: 700;
      color: var(--blue);
      background: #dbeafe;
      border: none;
      border-radius: 12px;
      padding: 3px 10px;
      cursor: pointer;
    }

    .note-ts-btn:hover {
      background: var(--blue);
      color: #fff
    }

    .notes-input {
      margin: 0 12px 8px;
      width: calc(100% - 24px);
      padding: 8px 10px;
      font-family: 'Manrope', sans-serif;
      font-size: 13px;
      border: 2px solid var(--border);
      border-radius: 10px;
      resize: vertical;
      min-height: 60px;
      outline: none;
      transition: border-color .15s;
    }

    .notes-input:focus {
      border-color: var(--blue)
    }

    .notes-save-btn {
      margin: 0 12px 10px;
      font-family: 'Bangers', cursive;
      font-size: 15px;
      letter-spacing: 1px;
      background: var(--green);
      color: #fff;
      border: 2px solid #15803d;
      border-radius: 20px;
      padding: 6px 20px;
      cursor: pointer;
      box-shadow: 0 2px 0 #15803d;
      transition: all .1s;
    }

    .notes-save-btn:active {
      transform: translateY(2px);
      box-shadow: none
    }

    .notes-list {
      max-height: 160px;
      overflow-y: auto;
      border-top: 1px solid var(--border)
    }

    .note-item {
      padding: 8px 14px;
      border-bottom: 1px solid #f1f5f9;
      display: flex;
      gap: 8px;
      align-items: flex-start
    }

    .note-item:last-child {
      border-bottom: none
    }

    .note-time {
      font-family: 'Bangers', cursive;
      font-size: 12px;
      color: var(--blue);
      background: #dbeafe;
      padding: 1px 6px;
      border-radius: 8px;
      flex-shrink: 0;
      cursor: pointer
    }

    .note-time:hover {
      background: var(--blue);
      color: #fff
    }

    .note-text {
      font-size: 12px;
      color: var(--text);
      line-height: 1.4;
      flex: 1
    }

    .note-del {
      font-size: 12px;
      color: #cbd5e1;
      cursor: pointer;
      flex-shrink: 0
    }

    .note-del:hover {
      color: var(--red)
    }

    .notes-empty {
      padding: 12px 14px;
      font-size: 12px;
      color: var(--muted);
      font-style: italic
    }

    /* ── PART DIVIDER ── */
    .part-divider {
      border: 3px solid var(--dark);
      border-radius: 14px;
      padding: 14px 20px;
      text-align: center;
      box-shadow: 3px 3px 0 var(--cyan);
    }

    .part-divider.blue {
      background: linear-gradient(135deg, var(--blue), var(--light))
    }

    .part-divider.orange {
      background: linear-gradient(135deg, var(--orange), #ff9a44)
    }

    .part-divider.green {
      background: linear-gradient(135deg, var(--green), #34d399)
    }

    .part-divider.purple {
      background: linear-gradient(135deg, var(--purple), #a855f7)
    }

    .part-divider h2 {
      font-family: 'Unbounded', sans-serif;
      color: #fff;
      font-size: 15px;
      font-weight: 900;
      text-shadow: 2px 2px 0 rgba(0, 0, 0, .25);
      line-height: 1.3
    }

    /* Khoảng cách giữa part header và playlist: 10px */
    .section[id^="s-p"]:not([id^="s-pl"]) {
      margin-bottom: 10px;
    }

    /* Khoảng cách sau mỗi khối playlist (trước phần tiếp theo): 20px */
    .section[id^="s-pl"] {
      margin-bottom: 20px;
    }

    /* ── PLAYLIST ── */
    .playlist-wrap {
      background: var(--card);
      border: 3px solid var(--dark);
      border-radius: 14px;
      overflow: hidden;
      box-shadow: 3px 3px 0 var(--cyan)
    }

    .pl-header {
      background: linear-gradient(135deg, var(--dark), var(--blue));
      padding: 9px 14px;
      display: flex;
      align-items: center;
      justify-content: space-between
    }

    .pl-header span {
      font-family: 'Bangers', cursive;
      color: #fff;
      font-size: 15px;
      letter-spacing: 1px
    }

    .pl-count {
      background: var(--yellow);
      color: var(--dark);
      font-family: 'Bangers', cursive;
      font-size: 13px;
      padding: 2px 10px;
      border-radius: 20px;
      border: 2px solid var(--dark)
    }

    /* ── CHAPTER ── */
    .chapter {
      border-bottom: 2px solid var(--border)
    }

    .chapter:last-child {
      border-bottom: none
    }

    .ch-header {
      display: flex;
      align-items: center;
      gap: 8px;
      padding: 9px 12px;
      cursor: pointer;
      user-select: none;
      background: var(--card);
      transition: background .15s;
    }

    .ch-header:hover {
      background: #f8fafc
    }

    .ch-header.active {
      background: linear-gradient(135deg, #eff6ff, #dbeafe)
    }

    .ch-num {
      font-family: 'Bangers', cursive;
      background: var(--orange);
      color: #fff;
      padding: 2px 8px;
      border-radius: 16px;
      font-size: 12px;
      border: 2px solid var(--dark);
      box-shadow: 0 2px 0 var(--dark);
      flex-shrink: 0;
      min-width: 30px;
      text-align: center
    }

    .ch-header.active .ch-num {
      background: var(--blue)
    }

    .ch-title {
      font-size: 12px;
      font-weight: 800;
      color: var(--text);
      flex: 1;
      line-height: 1.3
    }

    .ch-progress {
      font-size: 10px;
      font-weight: 700;
      color: var(--muted);
      flex-shrink: 0
    }

    .ch-badge {
      font-size: 10px;
      font-weight: 700;
      background: #dbeafe;
      color: var(--blue);
      padding: 1px 7px;
      border-radius: 10px;
      flex-shrink: 0
    }

    .ch-badge.soon {
      background: #fef3c7;
      color: var(--dorange)
    }

    .ch-arrow {
      font-size: 9px;
      color: #94a3b8;
      transition: transform .25s;
      flex-shrink: 0
    }

    .chapter.open .ch-arrow {
      transform: rotate(90deg)
    }

    /* VIDEO LIST */
    .video-list {
      display: none;
      background: #f8fafc;
      border-top: 1px solid var(--border)
    }

    .chapter.open .video-list {
      display: block
    }

    .vitem {
      display: flex;
      align-items: center;
      gap: 8px;
      padding: 8px 12px 8px 24px;
      cursor: pointer;
      transition: background .12s;
      border-bottom: 1px solid #f1f5f9;
      position: relative
    }

    .vitem:last-child {
      border-bottom: none
    }

    .vitem:hover {
      background: #eff6ff
    }

    .vitem.playing {
      background: linear-gradient(90deg, #eff6ff, #dbeafe)
    }

    .vitem.playing .vname {
      color: var(--blue);
      font-weight: 800
    }

    .vplay {
      width: 22px;
      height: 22px;
      border-radius: 50%;
      background: #e2e8f0;
      border: 2px solid #cbd5e1;
      display: flex;
      align-items: center;
      justify-content: center;
      font-size: 7px;
      color: var(--muted);
      flex-shrink: 0;
      transition: all .15s
    }

    .vitem:hover .vplay,
    .vitem.playing .vplay {
      background: var(--blue);
      border-color: var(--blue);
      color: #fff
    }

    .vitem.watched .vplay {
      background: var(--green);
      border-color: var(--green);
      color: #fff
    }

    .vname {
      font-size: 12px;
      font-weight: 700;
      color: #334155;
      flex: 1;
      line-height: 1.3
    }

    .vtag {
      font-size: 10px;
      font-weight: 700;
      background: #fef3c7;
      color: var(--dorange);
      padding: 1px 6px;
      border-radius: 8px;
      flex-shrink: 0
    }

    .vtag.playing {
      background: var(--blue);
      color: #fff
    }

    .vtag.watched {
      background: #dcfce7;
      color: var(--green)
    }

    /* INLINE PLAYER (mobile) */
    .inline-player {
      animation: slideDown .3s ease;
      overflow: hidden
    }

    @keyframes slideDown {
      from {
        opacity: 0;
        max-height: 0
      }

      to {
        opacity: 1;
        max-height: 700px
      }
    }

    .inp-inner {
      background: var(--bg);
      border: 2px solid var(--blue);
      border-radius: 12px;
      overflow: hidden;
      margin: 4px 8px 8px;
      box-shadow: 0 4px 16px rgba(0, 64, 190, .3)
    }

    .inp-header {
      display: flex;
      align-items: center;
      justify-content: space-between;
      padding: 7px 12px;
      background: linear-gradient(135deg, var(--dark), var(--blue))
    }

    .inp-title {
      font-size: 12px;
      font-weight: 800;
      color: #fff;
      flex: 1;
      margin-right: 8px
    }

    .inp-close {
      background: rgba(255, 255, 255, .15);
      border: 1px solid rgba(255, 255, 255, .3);
      color: #fff;
      cursor: pointer;
      font-size: 13px;
      width: 26px;
      height: 26px;
      border-radius: 50%;
      display: flex;
      align-items: center;
      justify-content: center;
      flex-shrink: 0;
      transition: background .15s
    }

    .inp-close:hover {
      background: rgba(255, 255, 255, .3)
    }

    .inp-wrap {
      position: relative;
      padding-top: 56.25%
    }

    .inp-wrap iframe {
      position: absolute;
      top: 0;
      left: 0;
      width: 100%;
      height: 100%;
      border: none
    }

    /* TOC POPUP */
    .toc-popup {
      position: fixed;
      top: 58px;
      right: 16px;
      z-index: 150;
      background: var(--card);
      border: 3px solid var(--dark);
      border-radius: 14px;
      padding: 10px 0;
      box-shadow: 5px 5px 0 var(--cyan);
      display: none;
      width: 240px;
      max-height: 70vh;
      overflow-y: auto
    }

    .toc-popup.show {
      display: block;
      animation: fadeIn .25s ease
    }

    .toc-popup a {
      display: block;
      padding: 8px 18px;
      font-size: 13px;
      font-weight: 700;
      color: var(--text);
      text-decoration: none;
      transition: background .1s
    }

    .toc-popup a:hover {
      background: var(--yellow);
      color: var(--dark)
    }

    .toc-sep {
      height: 2px;
      background: var(--border);
      margin: 4px 12px
    }

    @keyframes fadeIn {
      from {
        opacity: 0;
        transform: translateY(-8px)
      }

      to {
        opacity: 1;
        transform: translateY(0)
      }
    }

    /* BACK TO TOP */
    .top-btn {
      position: fixed;
      bottom: 20px;
      left: 16px;
      z-index: 150;
      background: var(--blue);
      color: #fff;
      border: 3px solid var(--dark);
      border-radius: 50%;
      width: 44px;
      height: 44px;
      font-size: 20px;
      cursor: pointer;
      box-shadow: 0 3px 0 var(--dark);
      transition: all .15s;
      display: flex;
      align-items: center;
      justify-content: center;
      opacity: 0;
      pointer-events: none
    }

    .top-btn.show {
      opacity: 1;
      pointer-events: all
    }

    .top-btn:active {
      transform: translateY(3px);
      box-shadow: none
    }

    /* SECTION ANIMATION */
    .section {
      margin-bottom: 16px;
      opacity: 0;
      transform: translateY(20px);
      transition: opacity .4s ease, transform .4s ease
    }

    .section.visible {
      opacity: 1;
      transform: translateY(0)
    }

    /* DESKTOP ≥900px */
    @media(min-width:900px) {
      #tc-app .container {
        padding: 16px 20px 80px !important;
      }

      #tc-app .main-layout {
        flex-direction: row !important;
        align-items: flex-start !important;
        gap: 20px !important;
      }

      #tc-app .player-col {
        display: block !important;
        width: 72% !important;
        flex-shrink: 0 !important;
        position: sticky !important;
        top: 68px !important;
      }

      #tc-app .playlist-col {
        flex: 1 !important;
        min-width: 0 !important;
        max-width: none !important;
        margin: 0 !important;
      }

      .topbar-stats {
        display: flex
      }

      .part-divider h2 {
        font-size: 18px
      }
    }

    @media(min-width:1200px) {
      .player-col {
        width: 74%
      }
    }

    /* ══════════ LIGHT THEME ══════════ */
    #tc-app.light {
      --bg: #E8F4FF;
      --border: #003B99;
      --text: #0A1B3D;
      --muted: #2A3A5E;
      background-color: #E8F4FF;
      background-image: radial-gradient(var(--cyan) 1.5px, transparent 1.5px);
      background-size: 40px 40px;
    }

    #tc-app.light .topbar {
      background: #fff;
      border-bottom: 4px solid var(--dark);
      box-shadow: 0 6px 0 var(--blue);
    }

    #tc-app.light .topbar-stats { color: var(--dark); }
    #tc-app.light .topbar-stats span {
      background: var(--bg);
      border: 2px solid var(--cyan);
    }

    #tc-app.light .theme-toggle {
      background: var(--bg);
      color: var(--dark);
      border-color: var(--dark);
    }

    #tc-app.light .player-card {
      border: 4px solid var(--dark);
      border-radius: 24px;
      box-shadow: 0 8px 0 var(--blue);
    }

    #tc-app.light .part-divider {
      border: 5px solid var(--dark);
      border-radius: 50px;
      padding: 16px 28px;
      box-shadow: 0 8px 0 var(--blue);
      transition: transform 0.2s cubic-bezier(0.175, 0.885, 0.32, 1.275);
    }
    #tc-app.light .part-divider:hover { transform: translateY(-3px); }

    #tc-app.light .part-divider.blue {
      background: var(--yellow); color: var(--dark);
    }
    #tc-app.light .part-divider.orange {
      background: var(--orange); color: #fff;
    }
    #tc-app.light .part-divider.green {
      background: var(--cyan); color: var(--dark);
    }
    #tc-app.light .part-divider.purple {
      background: var(--dorange); color: #fff;
    }
    #tc-app.light .part-divider h2 {
      text-shadow: none;
    }

    #tc-app.light .playlist-wrap {
      border: 4px solid var(--dark);
      border-radius: 24px;
      box-shadow: 0 8px 0 var(--blue);
    }

    #tc-app.light .chapter { border-bottom: 3px solid var(--bg); }
    #tc-app.light .video-list {
      background: #f0f7ff;
      border-top: 2px dashed var(--cyan);
    }

    #tc-app.light .toc-popup {
      top: 64px;
      border: 4px solid var(--dark);
      border-radius: 24px;
      box-shadow: 0 8px 0 var(--blue);
    }

    #tc-app.light .top-btn {
      background: var(--yellow);
      color: var(--dark);
      border: 4px solid var(--dark);
      box-shadow: 0 5px 0 var(--dark);
      font-weight: 900;
    }

    /* ── THEME TOGGLE BUTTON ── */
    .theme-toggle {
      background: rgba(255,255,255,.1);
      color: var(--yellow);
      border: 2px solid rgba(255,255,255,.2);
      border-radius: 8px;
      padding: 4px 10px;
      font-size: 16px;
      cursor: pointer;
      transition: all .15s;
      display: flex;
      align-items: center;
      justify-content: center;
      line-height: 1;
    }
    .theme-toggle:active { transform: scale(.96); }

  </style>
</head>

<body>
  <div id="tc-app">

    <!-- TOPBAR -->
    <nav class="topbar">
      <div class="topbar-brand">
        <a href="https://toancachep.vn/" target="_blank" rel="noopener">
          <img src="https://res.cloudinary.com/dud32vrhg/image/upload/v1775326738/TCC_Logo__TCC_Logo_ngang_xanh_tnusit.png" alt="12 - B&#xE0;i h&#x1ECD;c">
        </a>
      </div>
      <div class="topbar-stats" id="topbar-stats">
        <span id="ts-video">&#x2014; video</span>
        <span id="ts-chapter">&#x2014; ch&#x1EE7; &#x111;&#x1EC1;</span>
        <span id="ts-watched">0% ho&#xE0;n th&#xE0;nh</span>
      </div>
      <div class="topbar-right">
        <button class="theme-toggle" id="themeToggle" onclick="toggleTheme()" title="&#x110;&#x1ED5;i giao di&#x1EC7;n">&#x1F319;</button>
        <button class="toc-toggle" onclick="toggleToc()">&#x2630; M&#x1EE4;C L&#x1EE4;C</button>
      </div>
    </nav>

    <div class="prog" id="prog"></div>

    <!-- TOC POPUP -->
    <div class="toc-popup" id="tocPopup">
      <a href="#" onclick="closeToc();document.getElementById(&apos;tc-app&apos;).scrollTo({top:0,behavior:&apos;smooth&apos;})">&#x1F3E0; L&#xEA;n &#x111;&#x1EA7;u
        trang</a>
      <div class="toc-sep"></div>
  <a href="#s-p1" onclick="closeToc()">&#x1F4CA; Ph&#x1EA7;n 1 &#x2014; H&#xC0;M S&#x1ED0;</a>
  <a href="#s-p2" onclick="closeToc()"><img src="data:image/png;base64,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rWh00XkAHgEgprO0Q4OIDJ5bWf6k6SDkf7wCQETBFgrNAdDddIx24PCnhGIBIKLAKhlXcjEEw0znaIcGhQ7h8KdEYgEgosCKRuQuACHTOU6B9/zJFXwGgIiCS/QW0xFOoWmRn8rZ/MmfEo5XAIgokO69d1IvAANN5zgJvupHrmIBIKJAsiKRK+DdJ/85/Ml1LABEFEyK80xHaAOHPyUFCwARBZIA55rOcAJ84I+Shg8BElEgqUjUY9f/+cAfJRWvABBRMInsNh2hFV72p6RjASCiQBLFW6YzNONlfzKCBYCIAslJa3gOQNRwDK7wR8awABBRIC1YsGAfFM8ZjMDL/mQUCwARBZel6wydmZf9yTgWACIKLK2PPgzgSJJPy8v+5AksAEQUWPMfmP+2QJcn8ZT8yZ88gwWAiALtiHaZBuD1JJyqQUQG8yd/8goWACIKtKoq+304MhRAg4un4fAnz2EBIKLAm7ek/K+i+B4Ax4XDc/iTJ7EAEBEBmFs1u1qhwwDUJ/Cw7wusmzj8yYtYAIiIms1fPOenjuAaQLZ39FgCvBCNylVzF8/6XSKyESUaCwARUSsLKmc/HwkdHQjVqRC8F8ch9gBakNGj82cWLi1/JeEBiRKEuwESER1n0aJFRwBMz8+3KzpZ9beJ6s0ABgHoeuJP6LsC67eOOL+OWg0/a/48kaexABARtaGqyn4fwEMAHrK/a3c+0u1IvwhwUciyzlFxVKBviSW7upzRZatt2xHTeYliwQJARNQO9k/sowBebv6HyPf4DAAREVEAsQAQEREFEAsAERFRALEAEBERBRALABERUQCxABAREQUQCwAREVEAsQAQEREFEAsAERFRALEAEBERBRALABERUQCxABAREQUQCwAREVEAsQAQEREFEAsAERFRALEAEBERBRALABERUQCxABAREQUQCwAREVEAsQAQEREFEAsAERFRALEAEBERBRALABERUQCxABAREQUQCwAREVEAsQAQEREFEAsAERFRALEAEBERBRALABERUQCxABAREQUQCwAREVEAsQAQEREFEAsAERFRALEAEBERBRALABERUQCxABAREQUQCwAREVEAsQAQEREFEAsAERFRALEAEBERBRALABERUQCxABAREQUQCwAREVEAsQAQEREFEAsAERFRALEAEBERBRALABERUQCxABAREQUQCwAR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" style="height: 1.2em; vertical-align: middle; margin-right: 4px; display: inline-block;" alt="12 - B&#xE0;i h&#x1ECD;c"> Ph&#x1EA7;n 2 &#x2014; H&#xCC;NH H&#x1ECC;C KH&#xD4;NG GIAN OXYZ</a>
  <a href="#s-p3" onclick="closeToc()">&#x222B; Ph&#x1EA7;n 3 &#x2014; T&#xCD;CH PH&#xC2;N</a>
  <a href="#s-p4" onclick="closeToc()">&#x1F3B2; Ph&#x1EA7;n 4 &#x2014; X&#xC1;C SU&#x1EA4;T</a>
    </div>

    <div class="container">
      <div class="main-layout">

        <!-- LEFT: Sticky Player (desktop) -->
        <div class="player-col">
          <div class="player-card">
            <div class="video-wrap">
              <div class="vid-placeholder" id="vid-placeholder">
                <div class="ph-icon">&#x25B6;&#xFE0F;</div>
                <img src="https://toancachep.vn/content/images/2026/04/webcover.png" alt="12 - B&#xE0;i h&#x1ECD;c"><p>CH&#x1ECC;N B&#xC0;I GI&#x1EA2;NG &#x110;&#x1EC2; B&#x1EAE;T &#x110;&#x1EA6;U H&#x1ECC;C</p>
              </div>
              <div id="yt-player" style="display:none"></div>
            </div>
            <div class="now-playing">
              <div class="np-chapter" id="np-chapter">&#x1F4CC; CH&#x1AF;A CH&#x1ECC;N B&#xC0;I</div>
              <div class="np-title" id="np-title">Ch&#x1ECD;n m&#x1ED9;t video t&#x1EEB; danh s&#xE1;ch b&#xEA;n ph&#x1EA3;i &#x2192; </div>
            </div>
            <div class="player-controls">
              <button class="ctrl-btn" id="btn-autonext" onclick="toggleAutoNext()">
                <span class="dot"></span>T&#x1EF1; &#x111;&#x1ED9;ng ti&#x1EBF;p theo
              </button>
              <button class="ctrl-btn" id="btn-notes" onclick="toggleNotes()">
                &#x1F4DD; Ghi ch&#xFA;
              </button>
            </div>
            <div class="notes-panel" id="notes-panel">
              <div class="notes-header">
                <span>&#x1F4DD; Ghi ch&#xFA; b&#xE0;i h&#x1ECD;c</span>
                <button class="note-ts-btn" onclick="addTimestamp()">+ Th&#xEA;m m&#x1ED1;c th&#x1EDD;i gian</button>
              </div>
              <textarea class="notes-input" id="note-input" placeholder="Ghi ch&#xFA; c&#x1EE7;a b&#x1EA1;n...
V&#xED; d&#x1EE5;: C&#xF4;ng th&#x1EE9;c &#x111;&#x1EA1;o h&#xE0;m h&#x1EE3;p f(g(x))&apos; = f&apos;(g(x))&#xB7;g&apos;(x)"></textarea>
              <button class="notes-save-btn" onclick="saveNote()">&#x1F4BE; L&#x1AF;U GHI CH&#xDA;</button>
              <div class="notes-list" id="notes-list"></div>
            </div>
          </div>
        </div>

        <!-- RIGHT: Playlists -->
        <div class="playlist-col"><!-- PLAYLIST-START -->

  <!-- PHẦN 1 -->
  <div class="section" id="s-p1">
    <div class="part-divider blue"><h2>&#x1F4CA; PH&#x1EA6;N 1<br>H&#xC0;M S&#x1ED0; &amp; &#x1EE8;NG D&#x1EE4;NG</h2></div>
  </div>
  <div class="section" id="s-pl1">
    <div class="playlist-wrap">
      <div class="pl-header">
        <span>&#x1F4CB; DANH S&#xC1;CH B&#xC0;I GI&#x1EA2;NG</span>
        <span class="pl-count" id="cnt1">...</span>
      </div>
      <div id="playlist-1"></div>
    </div>
  </div>

  <!-- PHẦN 2 -->
  <div class="section" id="s-p2">
    <div class="part-divider orange"><h2><img src="data:image/png;base64,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rWh00XkAHgEgprO0Q4OIDJ5bWf6k6SDkf7wCQETBFgrNAdDddIx24PCnhGIBIKLAKhlXcjEEw0znaIcGhQ7h8KdEYgEgosCKRuQuACHTOU6B9/zJFXwGgIiCS/QW0xFOoWmRn8rZ/MmfEo5XAIgokO69d1IvAANN5zgJvupHrmIBIKJAsiKRK+DdJ/85/Ml1LABEFEyK80xHaAOHPyUFCwARBZIA55rOcAJ84I+Shg8BElEgqUjUY9f/+cAfJRWvABBRMInsNh2hFV72p6RjASCiQBLFW6YzNONlfzKCBYCIAslJa3gOQNRwDK7wR8awABBRIC1YsGAfFM8ZjMDL/mQUCwARBZel6wydmZf9yTgWACIKLK2PPgzgSJJPy8v+5AksAEQUWPMfmP+2QJcn8ZT8yZ88gwWAiALtiHaZBuD1JJyqQUQG8yd/8goWACIKtKoq+304MhRAg4un4fAnz2EBIKLAm7ek/K+i+B4Ax4XDc/iTJ7EAEBEBmFs1u1qhwwDUJ/Cw7wusmzj8yYtYAIiIms1fPOenjuAaQLZ39FgCvBCNylVzF8/6XSKyESUaCwARUSsLKmc/HwkdHQjVqRC8F8ch9gBakNGj82cWLi1/JeEBiRKEuwESER1n0aJFRwBMz8+3KzpZ9beJ6s0ABgHoeuJP6LsC67eOOL+OWg0/a/48kaexABARtaGqyn4fwEMAHrK/a3c+0u1IvwhwUciyzlFxVKBviSW7upzRZatt2xHTeYliwQJARNQO9k/sowBebv6HyPf4DAAREVEAsQAQEREFEAsAERFRALEAEBERBRALABERUQCxABAREQUQCwAREVEAsQAQEREFEAsAERFRALEAEBERBRALABERUQCxABAREQUQCwAREVEAsQAQEREFEAsAERFRALEAEBERBRALABERUQCxABAREQUQCwAREVEAsQAQEREFEAsAERFRALEAEBERBRALABERUQCxABAREQUQCwAREVEAsQAQEREFEAsAERFRALEAEBERBRALABERUQCxABAREQUQCwAREVEAsQAQEREFEAsAERFRALEAEBERBRALABERUQCxABAREQUQCwAREVEAsQAQEREFEAsAERFRALEAEBERBRALABERUQCxABAREQUQCwAREVEAsQAQEREFEAsAERFRALEAEBERBRALABERUQCxABAREQUQCwAR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" style="height: 1.2em; vertical-align: middle; margin-right: 4px; display: inline-block;" alt="12 - B&#xE0;i h&#x1ECD;c"> PH&#x1EA6;N 2<br>H&#xCC;NH H&#x1ECC;C KH&#xD4;NG GIAN OXYZ</h2></div>
  </div>
  <div class="section" id="s-pl2">
    <div class="playlist-wrap">
      <div class="pl-header">
        <span>&#x1F4CB; DANH S&#xC1;CH B&#xC0;I GI&#x1EA2;NG</span>
        <span class="pl-count" id="cnt2">...</span>
      </div>
      <div id="playlist-2"></div>
    </div>
  </div>

  <!-- PHẦN 3 -->
  <div class="section" id="s-p3">
    <div class="part-divider green"><h2>&#x222B; PH&#x1EA6;N 3<br>T&#xCD;CH PH&#xC2;N &amp; &#x1EE8;NG D&#x1EE4;NG</h2></div>
  </div>
  <div class="section" id="s-pl3">
    <div class="playlist-wrap">
      <div class="pl-header">
        <span>&#x1F4CB; DANH S&#xC1;CH B&#xC0;I GI&#x1EA2;NG</span>
        <span class="pl-count" id="cnt3">...</span>
      </div>
      <div id="playlist-3"></div>
    </div>
  </div>

  <!-- PHẦN 4 -->
  <div class="section" id="s-p4">
    <div class="part-divider purple"><h2>&#x1F3B2; PH&#x1EA6;N 4<br>X&#xC1;C SU&#x1EA4;T &amp; TH&#x1ED0;NG K&#xCA;</h2></div>
  </div>
  <div class="section" id="s-pl4">
    <div class="playlist-wrap">
      <div class="pl-header">
        <span>&#x1F4CB; DANH S&#xC1;CH B&#xC0;I GI&#x1EA2;NG</span>
        <span class="pl-count" id="cnt4">...</span>
      </div>
      <div id="playlist-4"></div>
    </div>
  </div>

<!-- PLAYLIST-END -->
        </div>

      </div><!-- /.main-layout -->
    </div><!-- /.container -->

    <button class="top-btn" id="topBtn" onclick="document.getElementById(&apos;tc-app&apos;).scrollTo({top:0,behavior:&apos;smooth&apos;})">&#x2B06;&#xFE0F;</button>

  </div><!-- /#tc-app -->

  <script>
    // ================================================================
    // DỮ LIỆU KHÓA HỌC
    // ================================================================

    const PARTS = [
  {
    containerId: "playlist-1",
    countId: "cnt1",
    chapters: [
      { num:"1", title:"Tính đơn điệu", videos:[
        { name:"Phần 1 - Cơ bản", id:"wMNSBpMlNGM" },
        { name:"Phần 2 - Cơ bản", id:"TRYbbBRNAH8" },
        { name:"Phần 3 - Tham số - Đơn điệu trên toàn khoảng", id:"aCP43pd5ZK8" },
        { name:"Phần 4 - Tham số - Đơn điệu một khoảng", id:"drvg3UQzM1k" },
        { name:"Phần 5  - Tham số - Một số hàm lạ", id:"eDeHKLG9qSw" },
        { name:"Xem thêm nâng cao", id:"eDeHKLG9qSw" }
      ]},
      { num:"2", title:"Cực trị - Tham số", videos:[
        { name:"Phần 1 - Cơ bản", id:"04hKAvRnTz4" },
        { name:"Phần 2 - Cơ bản", id:"HQ-VZgE7Gc0" },
        { name:"Phần 3 - Tham số - Đạt cực trị tại 1 điểm", id:"SjMjMdwH7WQ" },
        { name:"Phần 4 - Tham số - Số lượng cực trị", id:"2d9FqPZanoo" },
        { name:"Phần 5  - Tham số - Cực trị bậc 3, phân thức và Viet", id:"dxPz5Vkk428" },
        { name:"Xem thêm nâng cao", id:"grJtnZHIEg4" }
      ]},
      { num:"3", title:"Min, max", videos:[
        { name:"Phần 1 - Cơ bản", id:"ntpRwLCJRlw" },
        { name:"Phần 2 - Cơ bản", id:"z3-gq6oFclo" },
        { name:"Phần 3 - Tham số", id:"MH1FPfnjIMw" }
      ]},
      { num:"4", title:"Tiệm cận", videos:[
        { name:"Phần 1 - Cơ bản - Đứng và ngang", id:"R9E8g4iR7FU" },
        { name:"Phần 2 - Cơ bản - Đứng và ngang", id:"zEvn5MBnxUM" },
        { name:"Phần 3 - Cơ bản - Xiên", id:"Sw4fVEvzhYE" },
        { name:"Phần 4 - Tham số", id:"OnIqKZ-TcyI" }
      ]},
      { num:"5", title:"Nhận dạng đồ thị", videos:[
        { name:"Phần 1 - Học vẽ hình", id:"Arpmd1D0I74" },
        { name:"Phần 2 - Nhận dạng bậc 3", id:"UVZX64uTr7o" },
        { name:"Phần 3 - Nhận dạng phân thức", id:"obTbRtSLU3A" }
      ]},
      { num:"6", title:"Tương giao", videos:[
        { name:"Allinone", id:"SO-3jnTjhXw" }
      ]},
      { num:"7", title:"Bài toán thực tế", videos:[
        { name:"Phần 1 - Quãng đường (độ cao) - vận tốc, gia tốc", id:"Video đã mất - nếu cần có thể đi học lại vào năm sau ạ" },
        { name:"Phần 2 - Tốc độ tăng trưởng, hóa học, kinh tế", id:"aMm9yj0nc7M" },
        { name:"Phần 3 - SBT dạng toán tốc độ thay đổi tức thời", id:"7T42fTciLyo" },
        { name:"Phần 4 - Đi sâu bài toán kinh tế", id:"1qBH4pqwZL0" },
        { name:"Phần 5 - Bài toán tối ưu hình học", id:"uCdikLfvS0A" },
        { name:"Phần 6 - Bài toán tối ưu quãng đường", id:"bdJVlVyck_s" }
      ]}
    ]
  },
  {
    containerId: "playlist-2",
    countId: "cnt2",
    chapters: [
      { num:"11", title:"Vectơ trong không gian", videos:[
        { name:"Phần 1 - Công thức và phép cộng trừ", id:"38IdTkyMCJ8" },
        { name:"Phần 2 - Ứng dụng tích có hướng", id:"b4oDDol6_ng" },
        { name:"Sửa bài tập - Dạng 1", id:"c2u4ztUvxIA" },
        { name:"Sửa bài tập - Dạng 2", id:"52SxdDDGnLg" }
      ]},
      { num:"12", title:"Hệ trục tọa độ Oxyz", videos:[
        { name:"Phần 1 - Mở đầu Oxyz", id:"wDCd_pjai8E" },
        { name:"Phần 2 - Tích có hướng và công thức tọa độ", id:"fR4NSCtpeJc" },
        { name:"Phần 3 - SBT và tìm điểm thuộc trục, mặt phẳng đặc biệt", id:"f3MEpqjyEg0" },
        { name:"Phần 4 - SBT và tìm điểm trong tam giác", id:"0ojRhVZgWo8" },
        { name:"Phần 5 - Ứng dụng tích có hướng", id:"9TwCy2M7CWE" },
        { name:"Phần 6 - Gắn hệ trục tọa độ", id:"VsKW-TYhDLA" },
        { name:"Phần 7 - Gắn hệ trục tọa độ", id:"lvgfLi0FKAc" },
        { name:"Giới thiệu BT Tối ưu HH", id:"ESY2FX1DSOA" }
      ]},
      { num:"13", title:"Các dạng phương trình cơ bản", videos:[
        { name:"Phần 1 - Phương trình mặt phẳng cơ bản", id:"9Uzg-hcRZ_0" },
        { name:"Phần 2 - Phương trình đường thẳng và mặt cầu", id:"mgcNDRkI8qw" }
      ]},
      { num:"14", title:"Khoảng cách và góc", videos:[
        { name:"Tổng hợp", id:"xocRZXUfwc8" }
      ]},
      { num:"15", title:"Vị trí tương đối", videos:[
        { name:"Phần 1 - Mặt phẳng vs mặt phẳng, đường vs đường", id:"yStMRd1Q1iw" },
        { name:"Phần 2 - Mp vs đt, mp vs mặt cầu, đt vs mặt cầu", id:"jQ99XTEm77Q" }
      ]},
      { num:"16", title:"Bài toán tìm điểm", videos:[
        { name:"Phần 1 - Hình chiếu và điểm đối xứng", id:"m-o7p5xlvHk" },
        { name:"Phần 2 - Bài toán cực trị", id:"HXp23M5VmZY" }
      ]},
      { num:"17", title:"Phương trình mặt phẳng", videos:[
        { name:"Tổng hợp", id:"bk2kuL9z9cY" }
      ]},
      { num:"18", title:"Phương trình đường thẳng", videos:[
        { name:"Phần 1", id:"17-IPz8Pc7c" },
        { name:"Phần 2", id:"o1elbhibE_U" }
      ]},
      { num:"19", title:"Phương trình mặt cầu", videos:[
        { name:"Tổng hợp", id:"yLPLAV82cYU" }
      ]}
    ]
  },
  {
    containerId: "playlist-3",
    countId: "cnt3",
    chapters: [
      { num:"21", title:"Nguyên hàm cơ bản", videos:[
        { name:"Phần 1 - Cơ bản", id:"kWngP5CsI-g" },
        { name:"Phần 2 - Cơ bản", id:"VHNcR8jtNU8" },
        { name:"Phần 3 - SBT và học thêm cơ bản", id:"oUjAwUOfHNA" },
        { name:"Phần 4 - Thuần SBT", id:"sZFlJPBHWj0" },
        { name:"Phần 5 - SBT trả lời ngắn", id:"ANn0ZKPvU20" }
      ]},
      { num:"22", title:"Tích phân cơ bản", videos:[
        { name:"Phần 1 - Cơ bản", id:"hFV7xPJcHMk" },
        { name:"Phần 2 - Trị tuyệt đối, nhiều hàm, lập hàm", id:"NGOG2tCGQGU" },
        { name:"Sửa bài tập - Phần 2", id:"v-rG1j6gnrU" }
      ]},
      { num:"23", title:"Các dạng tích phân khác", videos:[
        { name:"A - Vi phân", id:"MAwZZraiqSM" },
        { name:"B - Lượng giác", id:"nu3ue-IEBB4" },
        { name:"C - Nguyên hàm hữu tỉ - P1", id:"j9aT6SBN6R4" },
        { name:"C - Nguyên hàm hữu tỉ - P2", id:"0FLxQ9GCpSs" },
        { name:"D - Hàm ẩn - P1", id:"XGIyiXyaNHw" },
        { name:"D - Hàm ẩn - P2", id:"n8HfBZ0W4KI" }
      ]},
      { num:"24", title:"Ứng dụng diện tích", videos:[
        { name:"Phần 1 - Cơ bản và tham số", id:"rkNP1siFUnU" },
        { name:"Phần 2 - Lập hàm và vẽ đồ thị", id:"ctbFvLmRRCc" },
        { name:"Sửa bài tập", id:"wb56hGGfPSU" }
      ]},
      { num:"25", title:"Ứng dụng thể tích", videos:[
        { name:"Tổng hợp", id:"TXxeHwFboos" }
      ]},
      { num:"26", title:"Các ứng dụng khác", videos:[
        { name:"Ứng dụng thể", id:"IYXt8XI-aLA" }
      ]},
      { num:"27", title:"Bài toán thực tế", videos:[
        { name:"Phần 1 - Lập hàm", id:"cDH9tOjeB9E" },
        { name:"Phần 2 - Bài toán chuyển động", id:"QiEl_cRi0uA" }
      ]}
    ]
  },
  {
    containerId: "playlist-4",
    countId: "cnt4",
    chapters: [
      { num:"8 + 9", title:"Thống kê - Tứ phân vị", videos:[
        { name:"Phần 1 - Số trung bình, tứ phân vị", id:"EWYBWThqOCc" },
        { name:"Phần 2 - Phương sai, độ lệch chuẩn", id:"8Xtc-rP38gA" }
      ]},
      { num:"28", title:"Xác suất điều kiện", videos:[
        { name:"Phần 1 - Xác suất điều kiện và sơ đồ cây", id:"J8_uCj48TfA" },
        { name:"Phần 2 - Sơ đồ ven và công thức xác suất toàn phần", id:"VIDEO_ID_P4_CD28_02" }
      ]}
    ]
  }
];

    // ================================================================
    // STATE
    // ================================================================
    let ytPlayer = null, ytReady = false;
    let currentVideoId = null, activeItem = null, inlinePlayer = null;
    let autoNext = false;
    let playQueue = [];   // [{id,name,chapter,el}]
    let watched = JSON.parse(localStorage.getItem('tc-watched') || '{}');
    let notes = JSON.parse(localStorage.getItem('tc-notes') || '{}');

    // ================================================================
    // YOUTUBE IFRAME API
    // ================================================================
    function onYouTubeIframeAPIReady() {
      ytPlayer = new YT.Player('yt-player', {
        playerVars: { rel: 0, modestbranding: 1, autoplay: 0 },
        events: {
          onReady: () => { ytReady = true; },
          onStateChange: e => {
            if (e.data === YT.PlayerState.ENDED) {
              markWatched(currentVideoId, activeItem);
              if (autoNext) playNext();
            }
          }
        }
      });
    }

    function embedUrl(id) {
      return 'https://www.youtube-nocookie.com/embed/' + id + '?rel=0&modestbranding=1&autoplay=1';
    }

    // ================================================================
    // PLAY VIDEO
    // ================================================================
    function playVideo(id, name, chapterTitle, el) {
      if (id.startsWith('VIDEO_ID_')) {
        alert('⚠️ Chưa có Video ID!\n\nĐiền ID vào file video-data.csv rồi nhắn Tô cập nhật.');
        return;
      }
      closeInline(false);

      if (activeItem) activeItem.classList.remove('playing');
      el.classList.add('playing');
      activeItem = el; currentVideoId = id;

      if (window.innerWidth >= 900) {
        // Desktop: sticky player
        document.getElementById('vid-placeholder').style.display = 'none';
        const ypEl = document.getElementById('yt-player');
        ypEl.style.display = 'block';
        if (ytReady && ytPlayer && ytPlayer.loadVideoById) {
          ytPlayer.loadVideoById(id);
        } else {
          // Fallback: replace with iframe
          ypEl.innerHTML = `<iframe src="${embedUrl(id)}" allow="accelerometer;autoplay;clipboard-write;encrypted-media;gyroscope;picture-in-picture" allowfullscreen style="position:absolute;top:0;left:0;width:100%;height:100%;border:none"></iframe>`;
        }
        document.getElementById('np-chapter').textContent = '▶ ' + chapterTitle;
        document.getElementById('np-title').textContent = name;
        renderNotes();
      } else {
        // Mobile: inline player
        markWatched(id, el);
        const div = document.createElement('div');
        div.className = 'inline-player';
        div.innerHTML = `<div class="inp-inner">
      <div class="inp-header">
        <span class="inp-title">${name}</span>
        <button class="inp-close" onclick="closeInline(true)">✕</button>
      </div>
      <div class="inp-wrap">
        <iframe src="${embedUrl(id)}" allow="accelerometer;autoplay;clipboard-write;encrypted-media;gyroscope;picture-in-picture" allowfullscreen></iframe>
      </div>
    </div>`;
        el.after(div);
        inlinePlayer = div;
        setTimeout(() => div.scrollIntoView({ behavior: 'smooth', block: 'nearest' }), 80);
      }

      // Find index in queue for auto-next
      currentVideoId = id;
    }

    function playNext() {
      const idx = playQueue.findIndex(v => v.id === currentVideoId);
      if (idx >= 0 && idx < playQueue.length - 1) {
        const next = playQueue[idx + 1];
        // Open parent chapter if closed
        const chEl = next.el.closest('.chapter');
        if (chEl && !chEl.classList.contains('open')) {
          toggleChapter(chEl);
        }
        next.el.scrollIntoView({ behavior: 'smooth', block: 'nearest' });
        playVideo(next.id, next.name, next.chapter, next.el);
      }
    }

    function closeInline(clearActive = true) {
      if (inlinePlayer) { inlinePlayer.remove(); inlinePlayer = null; }
      if (clearActive && activeItem) {
        activeItem.classList.remove('playing');
        const t = activeItem.querySelector('.vtag');
        if (t) t.classList.remove('playing');
        activeItem = null;
      }
    }

    // ================================================================
    // PROGRESS TRACKING
    // ================================================================
    function markWatched(id, el) {
      if (!id || watched[id]) return;
      watched[id] = true;
      localStorage.setItem('tc-watched', JSON.stringify(watched));
      if (el) {
        el.classList.add('watched');
        const vplay = el.querySelector('.vplay');
        if (vplay) vplay.textContent = '✓';
        const tag = el.querySelector('.vtag');
        if (tag) { tag.classList.remove('playing'); tag.classList.add('watched'); }
      }
      updateStats();
    }

    function applyWatchedState() {
      Object.keys(watched).forEach(id => {
        const els = document.querySelectorAll(`[data-vid="${id}"]`);
        els.forEach(el => {
          el.classList.add('watched');
          const vp = el.querySelector('.vplay');
          if (vp) vp.textContent = '✓';
          const tg = el.querySelector('.vtag');
          if (tg) tg.classList.add('watched');
        });
      });
    }

    function updateStats() {
      const total = playQueue.length;
      const done = Object.keys(watched).length;
      const pct = total > 0 ? Math.round(done / total * 100) : 0;
      const tsW = document.getElementById('ts-watched');
      if (tsW) tsW.textContent = `${pct}% hoàn thành`;
    }

    // ================================================================
    // AUTO-NEXT
    // ================================================================
    function toggleAutoNext() {
      autoNext = !autoNext;
      document.getElementById('btn-autonext').classList.toggle('active', autoNext);
    }

    // ================================================================
    // NOTES
    // ================================================================
    function toggleNotes() {
      const p = document.getElementById('notes-panel');
      const open = p.classList.toggle('open');
      document.getElementById('btn-notes').classList.toggle('active', open);
      if (open) renderNotes();
    }

    function addTimestamp() {
      const inp = document.getElementById('note-input');
      let ts = '0:00';
      if (ytReady && ytPlayer && ytPlayer.getCurrentTime) {
        const t = Math.floor(ytPlayer.getCurrentTime());
        ts = `${Math.floor(t / 60)}:${String(t % 60).padStart(2, '0')}`;
      }
      inp.value = (inp.value ? inp.value + ' ' : '') + '[' + ts + '] ';
      inp.focus();
    }

    function saveNote() {
      const inp = document.getElementById('note-input');
      const text = inp.value.trim();
      if (!text || !currentVideoId) return;
      let ts = 0, tsStr = '0:00';
      if (ytReady && ytPlayer && ytPlayer.getCurrentTime) {
        ts = Math.floor(ytPlayer.getCurrentTime());
        tsStr = `${Math.floor(ts / 60)}:${String(ts % 60).padStart(2, '0')}`;
      }
      if (!notes[currentVideoId]) notes[currentVideoId] = [];
      notes[currentVideoId].unshift({ ts, tsStr, text, date: Date.now() });
      localStorage.setItem('tc-notes', JSON.stringify(notes));
      inp.value = '';
      renderNotes();
    }

    function deleteNote(videoId, idx) {
      if (notes[videoId]) {
        notes[videoId].splice(idx, 1);
        localStorage.setItem('tc-notes', JSON.stringify(notes));
        renderNotes();
      }
    }

    function seekTo(ts) {
      if (ytReady && ytPlayer && ytPlayer.seekTo) ytPlayer.seekTo(ts, true);
    }

    function renderNotes() {
      const list = document.getElementById('notes-list');
      if (!list) return;
      const vid = currentVideoId;
      const items = vid && notes[vid] ? notes[vid] : [];
      if (!items.length) {
        list.innerHTML = '<div class="notes-empty">Chưa có ghi chú cho bài này.</div>';
        return;
      }
      list.innerHTML = items.map((n, i) => `
    <div class="note-item">
      <span class="note-time" onclick="seekTo(${n.ts})" title="Nhảy đến ${n.tsStr}">[${n.tsStr}]</span>
      <span class="note-text">${n.text}</span>
      <span class="note-del" onclick="deleteNote('${vid}',${i})" title="Xóa">✕</span>
    </div>`).join('');
    }

    // ================================================================
    // BUILD PLAYLIST
    // ================================================================
    function toggleChapter(chEl) {
      const isOpen = chEl.classList.contains('open');
      chEl.classList.toggle('open', !isOpen);
      const hdr = chEl.querySelector('.ch-header');
      if (hdr) hdr.classList.toggle('active', !isOpen);
    }

    function buildPart(part) {
      const container = document.getElementById(part.containerId);
      let html = '', count = 0;
      part.chapters.forEach((ch, ci) => {
        const hasVideos = ch.videos.length > 0;
        count += ch.videos.length;
        const badge = hasVideos
          ? `<span class="ch-badge">${ch.videos.length}</span>`
          : `<span class="ch-badge soon">Sắp có</span>`;
        const arrow = hasVideos ? `<span class="ch-arrow">▶</span>` : '';
        let vitems = '';
        ch.videos.forEach((v, vi) => {
          const wCls = watched[v.id] ? ' watched' : '';
          const wIcon = watched[v.id] ? '✓' : '▶';
          playQueue.push({ id: v.id, name: v.name, chapter: `CĐ ${ch.num} — ${ch.title}`, el: null });
          vitems += `<div class="vitem${wCls}" data-vid="${v.id}"
        onclick="playVideo('${v.id}','${v.name.replace(/'/g, "\\'")}','CĐ ${ch.num} — ${ch.title.replace(/'/g, "\\'")}',this)">
        <div class="vplay">${wIcon}</div>
        <div class="vname">${v.name}</div>
      </div>`;
        });
        const vlist = hasVideos ? `<div class="video-list">${vitems}</div>` : '';
        html += `<div class="chapter" id="ch-${part.containerId}-${ci}">
      <div class="ch-header" onclick="toggleChapter(this.closest('.chapter'))">
        <span class="ch-num">${ch.num}</span>
        <span class="ch-title">${ch.title}</span>
        ${badge}${arrow}
      </div>${vlist}
    </div>`;
      });
      container.innerHTML = html;
      // Backfill el references
      container.querySelectorAll('.vitem').forEach(el => {
        const vid = el.dataset.vid;
        const q = playQueue.find(v => v.id === vid && !v.el);
        if (q) q.el = el;
      });
      document.getElementById(part.countId).textContent = count + ' video';
      return count;
    }

    function init() {
      let totalV = 0, totalC = 0;
      PARTS.forEach(p => { totalV += buildPart(p); totalC += p.chapters.length; });
      document.getElementById('ts-video').textContent = totalV + ' video';
      document.getElementById('ts-chapter').textContent = totalC + ' chủ đề';
      updateStats();
    }
    init();

    // ================================================================
    // TOC + SCROLL UTILS
    // ================================================================
    function toggleToc() { document.getElementById('tocPopup').classList.toggle('show') }
    function closeToc() { document.getElementById('tocPopup').classList.remove('show') }
    document.addEventListener('click', e => {
      if (!e.target.closest('.toc-toggle') && !e.target.closest('.toc-popup')) closeToc();
    });

    function updateProgress() {
      const app = document.getElementById('tc-app');
      const st = app.scrollTop;
      const dH = app.scrollHeight - app.clientHeight;
      document.getElementById('prog').style.width = (dH > 0 ? st / dH * 100 : 0) + '%';
      const btn = document.getElementById('topBtn');
      st > 300 ? btn.classList.add('show') : btn.classList.remove('show');
    }
    document.getElementById('tc-app').addEventListener('scroll', updateProgress, { passive: true });
    updateProgress();

    // Scroll reveal (dùng tc-app làm root)
    const sEls = document.querySelectorAll('.section');
    const obs = new IntersectionObserver(entries => {
      entries.forEach(e => { if (e.isIntersecting) e.target.classList.add('visible'); });
    }, { threshold: 0.06, rootMargin: '0px 0px -20px 0px', root: document.getElementById('tc-app') });
    sEls.forEach(s => obs.observe(s));

    // TOC anchor scrolling (trong tc-app)
    document.querySelectorAll('.toc-popup a[href^="#s-"]').forEach(a => {
      a.addEventListener('click', e => {
        e.preventDefault();
        const id = a.getAttribute('href').substring(1);
        const el = document.getElementById(id);
        if (el) el.scrollIntoView({ behavior: 'smooth', block: 'start' });
        closeToc();
      });
    });

    window.addEventListener('resize', () => { if (window.innerWidth >= 900 && inlinePlayer) closeInline(true); });

    // ══ THEME TOGGLE ══
    function toggleTheme() {
      const app = document.getElementById('tc-app');
      const btn = document.getElementById('themeToggle');
      const isLight = app.classList.toggle('light');
      btn.textContent = isLight ? '☀️' : '🌙';
      localStorage.setItem('tc12-theme', isLight ? 'light' : 'dark');
    }

    // Restore theme on load
    (function() {
      const saved = localStorage.getItem('tc12-theme');
      if (saved === 'light') {
        document.getElementById('tc-app').classList.add('light');
        document.getElementById('themeToggle').textContent = '☀️';
      }
    })();
  </script>
</body>

</html>
<!--kg-card-end: html-->
]]></content:encoded></item></channel></rss>