/* Documentation-first course reader, calibrated to the supplied reference. */
body:has(.learning-layout){background:#fff}.topbar{position:sticky;background:rgba(255,255,255,.96);box-shadow:none}.container:has(.learning-layout){max-width:1440px;padding:28px 28px 90px}.learning-layout{align-items:start}.learner-sidebar{border:0;border-right:1px solid #e8edf3;border-radius:0;box-shadow:none;background:#fff}.learner-sidebar .sidebar-title{padding:8px 12px 18px;border-bottom:0}.learner-sidebar .sidebar-title>b{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:16px;line-height:1.45;margin:14px 0}.sidebar-progress{display:none}.lesson-chapter{border-bottom:0}.chapter-toggle{display:grid;grid-template-columns:30px minmax(0,1fr) 16px;align-items:center;gap:8px;padding:11px 12px;background:#fff;font-size:14px}.chapter-toggle:hover{color:#0052d9}.chapter-toggle .chapter-number{display:block;color:#8a97a6;font:700 12px/1 ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.03em}.chapter-toggle .chapter-name{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:700 14px/1.45 inherit}.chapter-toggle i{justify-self:end}.learner-sidebar .chapter-lessons>a{padding:8px 12px 8px 20px;font-size:13px}.learner-sidebar .chapter-lessons>a b{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.learner-sidebar .chapter-lessons>a.active{border-radius:4px}.learner-sidebar .lesson-state{width:18px;height:18px;flex-basis:18px;font-size:9px}.learner-content{max-width:none;padding:0 20px 80px}.lesson-head{padding:2px 0 18px;margin:0;border-bottom:1px solid #edf0f3}.learner-content h1{font-size:34px;letter-spacing:-.04em;margin:0}.lesson-video-section{margin-top:28px}.lesson-video-section>h2,.lesson-notes-section>h2{font-size:19px;letter-spacing:-.02em}.learner-video,.video-placeholder{max-height:500px;background:#070d15}.learner-video video{max-height:500px}.video-error{position:absolute;right:12px;bottom:12px;z-index:2;margin:0;padding:8px 10px;border-radius:4px;background:rgba(120,24,24,.9);color:#fff;font-size:12px}.video-placeholder{background:#f6f8fb;color:#8a97a6}.lesson-notes-section{max-width:880px;width:100%;margin-top:52px;padding-top:30px}.learner-content .markdown{font-size:16px;line-height:1.95;color:#334155}.markdown h1,.markdown h2,.markdown h3{scroll-margin-top:100px}.markdown h2{font-size:25px;margin-top:46px;padding-top:0}.markdown h3{font-size:19px;margin-top:30px}.markdown p{margin:18px 0}.markdown ul,.markdown ol{padding-left:24px;margin:18px 0}.markdown li{margin:8px 0}.markdown pre{border-radius:6px;padding:18px}.markdown blockquote{margin:20px 0;padding:12px 18px;background:#f0f7ff;border-left:4px solid #0052d9;border-radius:0 6px 6px 0;color:#1e293b}.markdown blockquote p{margin:0;line-height:1.75}.markdown hr{margin:32px 0;border:0;border-top:1px solid #e2e8f0}.markdown .table-wrap{overflow-x:auto;margin:22px 0;border:1px solid #e2e8f0;border-radius:8px;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.03)}.markdown table{border-collapse:collapse;width:100%;font-size:14px;line-height:1.6}.markdown th{background:#f8fafc;color:#1e293b;font-weight:600;padding:12px 16px;border-bottom:1px solid #e2e8f0;white-space:nowrap}.markdown td{padding:12px 16px;border-bottom:1px solid #f1f5f9;color:#334155;white-space:normal;word-break:break-word;vertical-align:top}.markdown tr:last-child td{border-bottom:none}.markdown tr:hover td{background:#f8fafc}.markdown .mermaid{display:flex;justify-content:center;margin:24px 0;padding:18px;background:#fff;border:1px solid #e2e8f0;border-radius:8px;overflow-x:auto}.markdown .mermaid svg{max-width:100%;height:auto}.lesson-pager{max-width:880px}.onpage-nav{position:sticky;top:88px;align-self:start;max-height:calc(100vh - 110px);overflow-y:auto;overflow-x:hidden;border-left:1px solid #e8edf3;padding:4px 0 16px 18px;box-sizing:border-box;width:100%;scrollbar-width:none;-ms-overflow-style:none}.onpage-nav::-webkit-scrollbar{display:none;width:0;height:0}.onpage-nav h2{font-weight:700;color:#334155;margin:0 0 12px;font-size:14px}.onpage-nav nav{display:flex;flex-direction:column;gap:2px}.onpage-nav a{font-size:13px;line-height:1.5;color:#64748b;display:block;padding:4px 0;word-break:break-word;text-decoration:none;transition:color .15s}.onpage-nav a:hover{color:#0052d9}.onpage-nav .toc-level-1{font-weight:600;color:#475569}.onpage-nav .toc-level-2{padding-left:14px}.onpage-nav .toc-level-3{padding-left:26px;font-size:12px;color:#8996a6}.onpage-nav .toc-level-4{padding-left:36px;font-size:12px;color:#8996a6}@media(min-width:1180px){.learning-layout{grid-template-columns:260px minmax(0,1fr) 260px;gap:24px}}@media(min-width:1380px){.learning-layout{grid-template-columns:270px minmax(0,1fr) 280px;gap:32px}}@media(max-width:800px){.container:has(.learning-layout){padding:20px 16px 56px}.learner-content{padding:0}.learner-sidebar{border:1px solid #e8edf3;border-radius:6px}.lesson-head{padding-top:10px}.learner-content h1{font-size:28px}.learner-video,.video-placeholder,.learner-video video{max-height:none}.lesson-notes-section{margin-top:36px}}

/* A loading cover is visual only: native playback controls remain clickable. */
.learner-video .video-splash{position:absolute;inset:0 0 46px;z-index:2;display:grid;place-items:center;background:radial-gradient(circle at 50% 42%,#263a53,#0b111b 68%);color:#e7eef7;pointer-events:none;opacity:1;transition:opacity .22s ease}.learner-video .video-splash>div{display:grid;justify-items:center;gap:9px}.learner-video .video-splash span{width:30px;height:30px;border:2px solid rgba(255,255,255,.22);border-top-color:#fff;border-radius:50%;animation:videoSpin .85s linear infinite}.learner-video .video-splash b{font-size:14px}.learner-video .video-splash small{color:#aebed0;font-size:12px}.learner-video.is-ready .video-splash{opacity:0;visibility:hidden}.learner-video .watermark{position:absolute;inset:0;z-index:3;pointer-events:none;color:rgba(255,255,255,.23);font-size:13px;font-weight:600;text-shadow:0 1px 2px rgba(0,0,0,.45)}.learner-video .watermark span{position:absolute;white-space:nowrap;animation:watermarkDrift 17s ease-in-out infinite alternate}.learner-video .watermark span:nth-child(1){left:13%;top:17%}.learner-video .watermark span:nth-child(2){right:11%;top:48%;animation-delay:-6s}.learner-video .watermark span:nth-child(3){left:38%;bottom:14%;animation-delay:-11s}.learner-video .watermark span:nth-child(4){right:26%;top:22%;animation-delay:-14s}@keyframes watermarkDrift{to{transform:translate(28px,18px)}}@media(prefers-reduced-motion:reduce){.learner-video .video-splash span,.learner-video .watermark span{animation:none}}

/* Fullscreen player & continuous watermark */
.player-tools{display:flex;align-items:center;gap:10px;margin:12px 0 28px;flex-wrap:wrap}


/* Leaderboard & Achievements System Styles */
.leaderboard-page{max-width:1200px;margin:0 auto;padding:32px 24px;box-sizing:border-box}
.leaderboard-page > .back{display:inline-flex;align-items:center;color:#0052d9;font-size:14px;font-weight:500;text-decoration:none;margin-bottom:24px;transition:opacity .2s}
.leaderboard-page > .back:hover{opacity:.8}
.leaderboard-hero{background:linear-gradient(135deg,#f3f5f8 0%,#e8edf5 100%);color:#181818;border-radius:12px;padding:32px 32px 28px;margin-bottom:24px;position:relative;border:1px solid #dcdfe6;overflow:hidden}
.leaderboard-hero::after{content:"🏆";position:absolute;right:32px;bottom:-20px;font-size:100px;opacity:.06;pointer-events:none}
.leaderboard-hero h1{font-size:28px;font-weight:600;margin:0 0 8px;color:#181818}
.leaderboard-hero p{color:#4b5b76;font-size:14px;margin:0 0 24px;max-width:600px}
.leaderboard-stats-grid{display:flex;gap:16px;flex-wrap:wrap}
.l-stat-card{background:#fff;border:1px solid #e7e7e7;border-radius:8px;padding:16px 20px;flex:1;min-width:140px;box-shadow:0 2px 8px rgba(0,0,0,.02)}
.l-stat-card small{display:block;font-size:12px;color:#646a73;font-weight:400;margin-bottom:4px}
.l-stat-card strong{display:block;font-size:24px;font-weight:600;color:#181818}
.podium-wrap{display:grid;grid-template-columns:1fr 1.1fr 1fr;gap:20px;margin-bottom:32px;align-items:flex-end}
.podium-card{background:#fff;border-radius:12px;padding:24px 20px;text-align:center;border:1px solid #e7e7e7;box-shadow:0 4px 12px rgba(0,0,0,.04);transition:transform .2s ease, box-shadow .2s ease}
.podium-card:hover{transform:translateY(-2px);box-shadow:0 6px 16px rgba(0,0,0,.08)}
.podium-card.place-1{border-color:#f4d58d;background:linear-gradient(180deg,#fffdf7 0%,#fff 30%);transform:scale(1.02)}
.podium-card.place-1:hover{transform:scale(1.02) translateY(-2px)}
.podium-card.place-2{border-color:#e0e6ed;background:linear-gradient(180deg,#fcfcfd 0%,#fff 30%)}
.podium-card.place-3{border-color:#f6d2b6;background:linear-gradient(180deg,#fffaf7 0%,#fff 30%)}
.podium-crown{font-size:28px;line-height:1;margin-bottom:8px}
.podium-card.place-1 .podium-crown{font-size:34px}
.podium-rank-tag{display:inline-flex;align-items:center;justify-content:center;padding:2px 10px;border-radius:12px;font-size:12px;font-weight:600;margin-bottom:12px}
.place-1 .podium-rank-tag{background:#fdf2cd;color:#8a6a1c}
.place-2 .podium-rank-tag{background:#eef0f4;color:#4b5b76}
.place-3 .podium-rank-tag{background:#fae0cd;color:#8c5525}
.podium-user{font-weight:600;font-size:15px;color:#181818;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.podium-user.is-me{color:#0052d9}
.podium-user small{display:block;font-weight:400;color:#646a73;font-size:13px;margin-top:4px}
.podium-progress{margin:14px 0 10px}
.podium-progress .progress-bar{height:6px;background:#eeeeee;border-radius:3px;overflow:hidden;margin-bottom:6px}
.podium-progress .progress-bar i{display:block;height:100%;background:#0052d9;border-radius:3px}
.place-1 .podium-progress .progress-bar i{background:#d4a017}
.podium-meta{font-size:12px;color:#8f959e}
.leaderboard-controls{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:16px;flex-wrap:wrap}
.sort-tabs{display:inline-flex;background:#f3f5f8;border-radius:6px;padding:2px}
.sort-tabs a{padding:6px 16px;font-size:14px;font-weight:400;border-radius:4px;color:#4b5b76;text-decoration:none;transition:background .2s, color .2s}
.sort-tabs a:hover{color:#181818}
.sort-tabs a.active{background:#fff;color:#0052d9;font-weight:500;box-shadow:0 1px 3px rgba(0,0,0,.05)}
.ranking-table-card{background:#fff;border:1px solid #e7e7e7;border-radius:8px;overflow:hidden}
.ranking-table{width:100%;border-collapse:collapse;font-size:14px;text-align:left}
.ranking-table th{background:#f8f9fa;color:#646a73;font-weight:500;padding:12px 16px;border-bottom:1px solid #e7e7e7;white-space:nowrap}
.ranking-table td{padding:12px 16px;border-bottom:1px solid #e7e7e7;color:#181818;vertical-align:middle;white-space:nowrap}
.ranking-table tr:last-child td{border-bottom:none}
.ranking-table tr:hover td{background:#f8f9fa}
.ranking-table tr.is-me td{background:#f0f5ff}
.me-tag{display:inline-block;background:#e0ebff;color:#0052d9;border:1px solid #b8d4ff;font-size:11px;font-weight:500;padding:0 6px;border-radius:4px;margin-left:8px;line-height:18px}
.badge-list{display:flex;gap:6px;flex-wrap:wrap}
.rank-num{font-size:14px;font-weight:600;color:#646a73;display:inline-flex;align-items:center;justify-content:center;min-width:24px}
.rank-num.rank-1{color:#d4a017;font-size:16px}
.rank-num.rank-2{color:#646a73;font-size:15px}
.rank-num.rank-3{color:#b36b22;font-size:15px}
.modal.leaderboard-modal .modal-panel{width:min(800px,94vw);max-height:85vh;display:flex;flex-direction:column;border-radius:8px}
.modal.leaderboard-modal .modal-body{overflow-y:auto;padding:24px}
@media(max-width:768px){.podium-wrap{grid-template-columns:1fr;gap:16px}.podium-card.place-1{transform:none;order:-1}.leaderboard-page{padding:20px 16px}}

