:root {
  --bg:#0f0e17;--surface:#1a1830;--card:#221f38;
  --accent1:#ff6b6b;--accent2:#ffd166;--accent3:#06d6a0;
  --accent4:#118ab2;--accent5:#c77dff;
  --text:#fffffe;--muted:#a7a9be;--code-bg:#13111f;--border:#2e2b4a;
  --ph6:#a855f7;--ph6b:#7c3aed;--ph6hi:#d8b4fe;
}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0;}
body{font-family:'Nunito',sans-serif;background:var(--bg);color:var(--text);line-height:1.7;overflow-x:hidden;}
header{background:linear-gradient(135deg,#0d0020 0%,#0f0e17 50%,#001020 100%);padding:60px 40px 80px;text-align:center;position:relative;overflow:hidden;}
header::before{content:'';position:absolute;inset:0;background:radial-gradient(circle at 25% 55%,rgba(168,85,247,0.2) 0%,transparent 55%),radial-gradient(circle at 78% 30%,rgba(6,214,160,0.1) 0%,transparent 50%),radial-gradient(circle at 50% 90%,rgba(255,209,102,0.08) 0%,transparent 40%);}
.header-badge{display:inline-block;background:linear-gradient(90deg,var(--ph6),var(--accent3));color:#fff;font-weight:800;font-size:13px;letter-spacing:2px;text-transform:uppercase;padding:6px 18px;border-radius:20px;margin-bottom:20px;}
header h1{font-family:'Fredoka One',cursive;font-size:clamp(2.4rem,6vw,4.5rem);background:linear-gradient(135deg,#fff 15%,var(--ph6hi) 50%,var(--accent3));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;line-height:1.1;margin-bottom:16px;}
header p{font-size:1.15rem;color:var(--muted);max-width:580px;margin:0 auto 32px;}
.header-stars{font-size:1.6rem;letter-spacing:6px;opacity:0.7;}
.progress-bar-wrap{background:var(--surface);padding:14px 40px;display:flex;align-items:center;gap:16px;border-bottom:1px solid var(--border);position:sticky;top:0;z-index:100;}
.progress-label{font-size:13px;font-weight:700;color:var(--muted);white-space:nowrap;}
.progress-track{flex:1;height:8px;background:var(--card);border-radius:10px;overflow:hidden;}
.progress-fill{height:100%;background:linear-gradient(90deg,var(--ph6),var(--accent3));border-radius:10px;transition:width 0.5s ease;width:0%;}
.progress-pct{font-size:13px;font-weight:800;color:var(--ph6hi);}
.layout{display:flex;max-width:1200px;margin:0 auto;}
.sidebar{width:270px;flex-shrink:0;padding:30px 20px;position:sticky;top:53px;height:calc(100vh - 53px);overflow-y:auto;border-right:1px solid var(--border);}
.sidebar-title{font-size:11px;font-weight:800;letter-spacing:2px;text-transform:uppercase;color:var(--muted);margin-bottom:16px;padding-left:8px;}
.nav-item{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:10px;cursor:pointer;transition:all 0.2s;margin-bottom:4px;font-size:14px;font-weight:600;color:var(--muted);text-decoration:none;}
.nav-item:hover{background:var(--card);color:var(--text);}
.nav-item.active{background:var(--card);color:var(--text);border-left:3px solid var(--ph6);}
.nav-item .nav-icon{font-size:18px;flex-shrink:0;}
.nav-item .nav-check{margin-left:auto;font-size:14px;color:var(--accent3);}
.main{flex:1;padding:40px 50px;min-width:0;}
.lesson{display:none;animation:fadeIn 0.4s ease;}
.lesson.active{display:block;}
@keyframes fadeIn{from{opacity:0;transform:translateY(12px);}to{opacity:1;transform:translateY(0);}}
.lesson-header{margin-bottom:36px;}
.lesson-num{font-size:12px;font-weight:800;letter-spacing:2px;text-transform:uppercase;color:var(--ph6hi);margin-bottom:8px;}
.lesson h2{font-family:'Fredoka One',cursive;font-size:clamp(1.8rem,3vw,2.8rem);line-height:1.15;margin-bottom:12px;}
.lesson-intro{font-size:1.05rem;color:var(--muted);max-width:680px;border-left:3px solid var(--ph6);padding-left:16px;}
.card{background:var(--card);border:1px solid var(--border);border-radius:16px;padding:28px;margin-bottom:28px;}
.card-title{font-family:'Fredoka One',cursive;font-size:1.25rem;margin-bottom:14px;display:flex;align-items:center;gap:10px;}
.card p,.card li{font-size:0.97rem;color:#d4d4e8;margin-bottom:10px;}
.card ul,.card ol{padding-left:20px;}
.card li{margin-bottom:6px;}
.callout{border-radius:14px;padding:20px 24px;margin:20px 0;display:flex;gap:14px;align-items:flex-start;}
.callout-emoji{font-size:1.5rem;flex-shrink:0;margin-top:2px;}
.callout-body{font-size:0.95rem;}
.callout-body strong{display:block;font-size:1rem;margin-bottom:4px;}
.callout.tip{background:rgba(6,214,160,0.1);border:1px solid rgba(6,214,160,0.25);}
.callout.tip .callout-body strong{color:var(--accent3);}
.callout.warn{background:rgba(255,209,102,0.1);border:1px solid rgba(255,209,102,0.25);}
.callout.warn .callout-body strong{color:var(--accent2);}
.callout.fun{background:rgba(168,85,247,0.1);border:1px solid rgba(168,85,247,0.25);}
.callout.fun .callout-body strong{color:var(--ph6hi);}
.callout.info{background:rgba(17,138,178,0.12);border:1px solid rgba(17,138,178,0.3);}
.callout.info .callout-body strong{color:#5bc4e8;}
.code-block{background:var(--code-bg);border:1px solid var(--border);border-radius:12px;margin:18px 0;overflow:hidden;}
.code-header{background:#1c1929;padding:10px 18px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--border);}
.code-lang{font-size:12px;font-weight:700;color:var(--ph6hi);letter-spacing:1px;text-transform:uppercase;}
.code-dots{display:flex;gap:6px;}
.code-dots span{width:10px;height:10px;border-radius:50%;}
.code-dots span:nth-child(1){background:#ff5f56;}
.code-dots span:nth-child(2){background:#ffbd2e;}
.code-dots span:nth-child(3){background:#27c93f;}
pre{padding:20px 22px;overflow-x:auto;font-family:'Fira Code',monospace;font-size:0.88rem;line-height:1.8;}
.quiz-block{background:linear-gradient(135deg,#130020,#0a001a);border:1px solid var(--ph6);border-radius:16px;padding:28px;margin:28px 0;}
.quiz-title{font-family:'Fredoka One',cursive;font-size:1.2rem;color:var(--ph6hi);margin-bottom:14px;display:flex;align-items:center;gap:8px;}
.quiz-q{font-size:1rem;font-weight:700;margin-bottom:16px;}
.quiz-options{display:flex;flex-direction:column;gap:10px;}
.quiz-option{background:var(--card);border:2px solid var(--border);border-radius:10px;padding:12px 18px;cursor:pointer;font-size:0.95rem;font-weight:600;transition:all 0.2s;text-align:left;color:var(--text);font-family:'Nunito',sans-serif;}
.quiz-option:hover{border-color:var(--ph6);background:rgba(168,85,247,0.08);}
.quiz-option.correct{border-color:var(--accent3);background:rgba(6,214,160,0.12);color:var(--accent3);}
.quiz-option.wrong{border-color:var(--accent1);background:rgba(255,107,107,0.1);color:var(--accent1);}
.quiz-feedback{margin-top:14px;padding:12px 16px;border-radius:10px;font-weight:700;font-size:0.95rem;display:none;}
.quiz-feedback.show{display:block;}
.quiz-feedback.ok{background:rgba(6,214,160,0.15);color:var(--accent3);border:1px solid var(--accent3);}
.quiz-feedback.bad{background:rgba(255,107,107,0.1);color:var(--accent1);border:1px solid var(--accent1);}
.challenge{background:linear-gradient(135deg,rgba(168,85,247,0.08),rgba(6,214,160,0.06));border:1px solid rgba(168,85,247,0.25);border-radius:14px;padding:24px 28px;margin:24px 0;}
.challenge-label{font-size:11px;font-weight:800;letter-spacing:2px;text-transform:uppercase;color:var(--ph6hi);margin-bottom:8px;}
.challenge h4{font-size:1.05rem;margin-bottom:10px;}
.challenge p,.challenge li{font-size:0.95rem;color:#ccc;}
.challenge ul{padding-left:20px;}
.challenge li{margin-bottom:6px;}
.lesson-nav{display:flex;justify-content:space-between;margin-top:50px;padding-top:28px;border-top:1px solid var(--border);}
.btn{padding:12px 28px;border-radius:12px;font-family:'Nunito',sans-serif;font-size:0.95rem;font-weight:800;cursor:pointer;border:none;transition:all 0.2s;}
.btn-next{background:linear-gradient(135deg,var(--ph6),var(--ph6b));color:#fff;}
.btn-next:hover{transform:translateY(-2px);box-shadow:0 8px 24px rgba(168,85,247,0.4);}
.btn-prev{background:var(--card);color:var(--muted);border:1px solid var(--border);}
.btn-prev:hover{color:var(--text);border-color:var(--ph6);}
.btn:disabled{opacity:0.3;cursor:not-allowed;transform:none!important;box-shadow:none!important;}
table{width:100%;border-collapse:collapse;font-size:0.92rem;margin:16px 0;}
th{background:var(--surface);color:var(--ph6hi);font-weight:800;padding:12px 16px;text-align:left;border-bottom:2px solid var(--border);}
td{padding:11px 16px;border-bottom:1px solid var(--border);color:#d4d4e8;}
tr:hover td{background:rgba(255,255,255,0.02);}
::-webkit-scrollbar{width:6px;height:6px;}
::-webkit-scrollbar-track{background:transparent;}
::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px;}
@media(max-width:768px){.sidebar{display:none;}.main{padding:24px 20px;}.progress-bar-wrap{padding:10px 20px;}header{padding:40px 20px 60px;}}
.streak-bar{display:flex;align-items:center;gap:6px;padding:12px 20px 18px;border-bottom:1px solid var(--border);}
.streak-label{font-size:10px;font-weight:800;letter-spacing:2px;text-transform:uppercase;color:var(--muted);margin-right:4px;}
.streak-node{width:10px;height:10px;border-radius:50%;background:var(--border);border:2px solid var(--border);transition:all 0.3s ease;flex-shrink:0;}
.streak-node.done{background:var(--ph6);border-color:var(--ph6);box-shadow:0 0 8px rgba(168,85,247,0.6);}
.streak-node.current{background:transparent;border-color:var(--ph6);animation:pulse-node 1.5s ease-in-out infinite;}
@keyframes pulse-node{0%,100%{box-shadow:0 0 0 0 rgba(168,85,247,0.4);}50%{box-shadow:0 0 0 5px rgba(168,85,247,0);}}
.kw{color:#c77dff;}.fn{color:#06d6a0;}.str{color:#ffaa6b;}.cm{color:#4a4870;font-style:italic;}.num{color:#ff6b9d;}.cls{color:#ffd166;}.bi{color:#4db8ff;}.out{color:#a7f3d0;}.dec{color:#ff6b6b;}.sh{color:#06d6a0;}
.step-list{counter-reset:step;list-style:none;padding:0;}
.step-list li{counter-increment:step;display:flex;gap:14px;padding:13px 0;border-bottom:1px solid var(--border);font-size:0.95rem;color:#d4d4e8;line-height:1.7;}
.step-list li::before{content:counter(step);display:flex;align-items:center;justify-content:center;width:26px;height:26px;background:linear-gradient(135deg,var(--ph6),var(--accent3));color:#0f0e17;font-weight:900;font-size:12px;border-radius:50%;flex-shrink:0;margin-top:3px;}
.deep-dive{background:linear-gradient(135deg,rgba(168,85,247,0.07),rgba(6,214,160,0.04));border:1px solid rgba(168,85,247,0.22);border-left:4px solid var(--ph6);border-radius:0 14px 14px 0;padding:22px 26px;margin:20px 0;}
.deep-dive-label{font-size:10px;font-weight:800;letter-spacing:2px;text-transform:uppercase;color:var(--ph6hi);margin-bottom:10px;}
.deep-dive h4{font-family:'Fredoka One',cursive;font-size:1.08rem;margin-bottom:10px;}
.deep-dive p,.deep-dive li{font-size:0.93rem;color:#ccc;line-height:1.8;margin-bottom:8px;}
.deep-dive ul{padding-left:20px;}
.deep-dive li{margin-bottom:5px;}
.try-it{background:linear-gradient(135deg,rgba(168,85,247,0.06),rgba(255,209,102,0.04));border:1px solid rgba(168,85,247,0.2);border-radius:14px;padding:22px 26px;margin:22px 0;}
.try-it-label{font-size:10px;font-weight:800;letter-spacing:2px;text-transform:uppercase;color:var(--ph6hi);margin-bottom:10px;}
.try-it h4{font-family:'Fredoka One',cursive;font-size:1.05rem;margin-bottom:8px;}
.try-it p,.try-it li{font-size:0.92rem;color:#ccc;line-height:1.75;}
.try-it ul,.try-it ol{padding-left:20px;}
.try-it li{margin-bottom:6px;}
.output-block{background:#0a0a14;border:1px solid var(--border);border-left:3px solid var(--ph6);border-radius:0 10px 10px 0;padding:14px 20px;font-family:'Fira Code',monospace;font-size:0.84rem;color:#d8b4fe;line-height:1.9;margin:-2px 0 16px;}
.output-block::before{content:'▶ Output';display:block;font-size:10px;font-weight:800;letter-spacing:2px;text-transform:uppercase;color:var(--ph6hi);margin-bottom:8px;opacity:0.7;}
.two-col{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin:18px 0;}
@media(max-width:700px){.two-col{grid-template-columns:1fr;}}
.token-vis{background:var(--code-bg);border:1px solid var(--border);border-radius:12px;padding:18px 22px;margin:18px 0;font-family:'Fira Code',monospace;font-size:0.88rem;line-height:2;}
.tok{display:inline-block;padding:1px 4px;border-radius:4px;margin:1px;}
.tok-1{background:rgba(168,85,247,0.2);color:#d8b4fe;}
.tok-2{background:rgba(6,214,160,0.15);color:#a7f3d0;}
.tok-3{background:rgba(255,209,102,0.15);color:#ffd166;}
.tok-4{background:rgba(77,184,255,0.15);color:#93c5fd;}
.tok-5{background:rgba(255,107,107,0.15);color:#fca5a5;}
.model-card{background:var(--card);border:1px solid var(--border);border-radius:12px;padding:18px;border-top:3px solid var(--ph6);}
.model-card h5{font-family:'Fredoka One',cursive;font-size:1rem;color:var(--ph6hi);margin-bottom:6px;}
.model-card p{font-size:0.83rem;color:var(--muted);line-height:1.6;margin-bottom:0;}
.model-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:14px;margin:18px 0;}
.file-tree{background:var(--code-bg);border:1px solid var(--border);border-radius:12px;padding:20px 24px;font-family:'Fira Code',monospace;font-size:0.85rem;line-height:2;margin:18px 0;}
.ft-dir{color:#ffd166;}.ft-file{color:#a7f3d0;}.ft-note{color:#4a4870;font-style:italic;}