*{box-sizing:border-box}body{color:#1f2937;background:linear-gradient(#fdf2f8 0%,#eef6ff 100%);margin:0;font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif}button,input{font:inherit}a{color:#2563eb;text-decoration:none}a:hover{text-decoration:underline}.app-shell{justify-content:center;min-height:100vh;padding:30px 20px;display:flex}.app-container{width:min(1100px,100%)}.topbar{justify-content:space-between;align-items:center;gap:20px;margin-bottom:24px;display:flex}.mini-title{letter-spacing:1px;text-transform:uppercase;color:#ec4899;margin:0 0 6px;font-size:12px;font-weight:700}.topbar h1{margin:0;font-size:clamp(28px,4vw,40px)}.progress-box{text-align:center;background:#ffffffb3;border:1px solid #ec489933;border-radius:16px;min-width:120px;padding:12px 16px;box-shadow:0 8px 20px #ec489914}.progress-box span{color:#6b7280;font-size:14px;display:block}.progress-box strong{color:#ec4899;font-size:26px}.hero{background:linear-gradient(135deg,#fdf2f8 0%,#fff 100%);border:1px solid #ec48991a;border-radius:24px;grid-template-columns:1.5fr .8fr;gap:20px;padding:28px;display:grid;box-shadow:0 10px 30px #1f29370f}.badge{color:#be185d;background:#fce7f3;border-radius:999px;margin-bottom:10px;padding:6px 10px;font-size:12px;font-weight:700;display:inline-block}.hero h2{margin:0 0 12px;font-size:clamp(24px,3vw,36px)}.hero-text{color:#4b5563;max-width:680px;margin:0;line-height:1.7}.hero-card{background:#fff;border:1px solid #3b82f61a;border-radius:18px;padding:20px;box-shadow:inset 0 0 0 1px #ffffffb3}.hero-card p{color:#374151;margin:0 0 12px;font-weight:600}.progress-bar{background:#f3f4f6;border-radius:999px;width:100%;height:14px;margin-bottom:10px;overflow:hidden}.progress-fill{background:linear-gradient(90deg,#ec4899,#8b5cf6);border-radius:999px;height:100%}.lesson-grid{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:22px;margin-top:28px;display:grid}.lesson-card{background:#ffffffe6;border:1px solid #94a3b840;border-radius:20px;padding:22px;transition:transform .2s,box-shadow .2s;box-shadow:0 8px 18px #0f172a0d}.lesson-card:hover{transform:translateY(-4px);box-shadow:0 12px 28px #0f172a17}.lesson-card.done{background:linear-gradient(#f0fdf4 0%,#fff 100%);border-color:#10b98166}.lesson-tag{color:#be185d;background:#fdf2f8;border-radius:999px;margin-bottom:12px;padding:5px 10px;font-size:12px;font-weight:700;display:inline-block}.lesson-card h3{margin:0 0 12px;font-size:24px}.lesson-card p{color:#4b5563;margin:0;line-height:1.7}.lesson-meta{color:#6b7280;justify-content:space-between;gap:12px;margin-top:18px;font-size:12px;display:flex}.lesson-card button{color:#fff;cursor:pointer;background:linear-gradient(135deg,#ec4899,#8b5cf6);border:none;border-radius:12px;width:100%;margin-top:18px;padding:10px 16px;font-weight:700}.viewer-shell{justify-content:center;min-height:100vh;padding:30px 20px;display:flex}.viewer-container{background:#ffffffe6;border:1px solid #94a3b840;border-radius:24px;width:min(920px,100%);padding:28px;box-shadow:0 12px 30px #0f172a14}.viewer-header{justify-content:space-between;align-items:center;gap:16px;margin-top:18px;margin-bottom:18px;display:flex}.viewer-header h1{margin:0;font-size:clamp(26px,4vw,36px)}.status-pill{color:#374151;background:#f3f4f6;border-radius:999px;padding:8px 12px;font-size:12px;font-weight:700}.status-pill.done{color:#166534;background:#dcfce7}.lesson-content{color:#374151;font-size:17px;line-height:1.8}.lesson-content h3{color:#111827;margin-top:0}.exercise-box,.quiz-box{background:#f8fafc;border:1px solid #e5e7eb;border-radius:18px;margin-top:28px;padding:18px}.exercise-box h3,.quiz-box h3{margin:0 0 12px;font-size:20px}.exercise-item{margin-top:10px}.quiz-card{background:#fff;border:1px solid #e5e7eb;border-radius:14px;margin-top:16px;padding:18px}.question{color:#111827;margin:0 0 14px;font-weight:700;line-height:1.6}.option-row{color:#374151;align-items:center;gap:12px;padding:8px 0;display:flex}.option-row input{width:18px;height:18px}.answer-feedback{border-radius:10px;margin-top:12px;padding:10px 12px;font-weight:600}.answer-feedback.correct{color:#166534;background:#dcfce7}.answer-feedback.wrong{color:#991b1b;background:#fee2e2}.quiz-actions{flex-wrap:wrap;align-items:center;gap:18px;margin-top:18px;display:flex}.score-box{color:#3730a3;background:#eef2ff;border-radius:10px;padding:10px 12px;font-weight:700}.success-box{color:#166534;background:#ecfdf5;border:1px solid #a7f3d0;border-radius:12px;margin-top:20px;padding:14px 16px;font-weight:700}@media (width<=768px){.hero{grid-template-columns:1fr}.topbar,.viewer-header{flex-direction:column;align-items:flex-start}.viewer-container{padding:22px 18px}}.back-btn{color:#374151;cursor:pointer;background:#f3f4f6;border:none;border-radius:10px;padding:10px 14px;font-weight:600}.submit-btn{color:#fff;cursor:pointer;background:linear-gradient(135deg,#8b5cf6,#ec4899);border:none;border-radius:12px;padding:12px 18px;font-weight:700}.lesson-hands-on{color:#be185d;font-weight:600}.keypoints-box,.steps-box{border:1px solid #e5e7eb;border-radius:16px;margin-top:22px;padding:18px 20px}.keypoints-box{background:linear-gradient(135deg,#fdf2f8 0%,#faf5ff 100%);border-color:#ec48992e}.steps-box{background:#f8fafc}.keypoints-box h3,.steps-box h3{margin:0 0 12px;font-size:18px}.keypoints-box ul,.steps-box ol{color:#374151;margin:0;padding-left:22px;line-height:2}.sl-box{background:#fff;border:1px solid #8b5cf640;border-radius:20px;margin-top:28px;padding:20px;box-shadow:0 10px 28px #8b5cf614}.sl-head h3{color:#6d28d9;margin:0 0 8px;font-size:20px}.sl-intro{color:#4b5563;margin:0 0 14px;font-size:15px;line-height:1.7}.sl-formula-bar{background:#f9fafb;border:1px solid #d1d5db;border-radius:10px;align-items:center;gap:8px;padding:6px 10px;display:flex}.sl-name-box{text-align:center;color:#6d28d9;background:#f3e8ff;border-radius:8px;min-width:52px;padding:4px 8px;font-size:13px;font-weight:700}.sl-fx{color:#ec4899;font-style:italic;font-weight:700}.sl-formula-bar input{background:0 0;border:none;outline:none;flex:1;padding:4px;font-size:14px}.sl-toolbar{flex-wrap:wrap;align-items:center;gap:6px;margin:12px 0;display:flex}.sl-tool{cursor:pointer;color:#374151;background:#fff;border:1px solid #d1d5db;border-radius:8px;min-width:34px;height:32px;padding:0 10px;font-weight:600;transition:all .15s}.sl-tool:hover{background:#faf5ff;border-color:#a78bfa}.sl-tool.on{color:#6d28d9;background:linear-gradient(135deg,#ede9fe,#fce7f3);border-color:#a78bfa}.sl-tip{color:#9ca3af;margin-left:8px;font-size:12px}.sl-grid-wrap{border:1px solid #d1d5db;border-radius:12px;outline:none;overflow:auto}.sl-table{border-collapse:collapse;table-layout:fixed;width:max-content;min-width:100%}.sl-table th,.sl-table td{border:1px solid #e5e7eb;min-width:108px;max-width:108px;height:30px;padding:0}.sl-table thead th,.sl-rowhead{color:#6b7280;text-align:center;-webkit-user-select:none;user-select:none;background:#f3f4f6;font-size:12px;font-weight:600}.sl-table thead th.sel-col{color:#6d28d9;background:#ede9fe}.sl-corner{width:42px;background:#e5e7eb!important;min-width:42px!important}.sl-rowhead{width:42px;min-width:42px!important}.sl-cell{cursor:cell;vertical-align:middle;background:#fff;position:relative;overflow:hidden}.sl-cell.selected{background:#c4b5fd2e}.sl-cell.active{outline-offset:-2px;z-index:2;outline:2px solid #8b5cf6}.sl-cell-text{white-space:nowrap;text-overflow:ellipsis;padding:4px 8px;font-size:13.5px;display:block;overflow:hidden}.sl-error{color:#dc2626;font-weight:700}.sl-editor{z-index:5;border:2px solid #8b5cf6;outline:none;width:calc(100% + 4px);padding:4px 6px;font-size:13.5px;position:absolute;inset:-2px}.sl-chart-panel{background:linear-gradient(#faf5ff 0%,#fff 100%);border:1px dashed #c4b5fd;border-radius:14px;margin-top:16px;padding:14px}.sl-chart-tools{color:#4b5563;flex-wrap:wrap;align-items:center;gap:8px;font-size:14px;display:flex}.sl-chart-tools button{cursor:pointer;color:#374151;background:#fff;border:1px solid #d1d5db;border-radius:999px;padding:6px 14px;font-weight:600}.sl-chart-tools button.on{color:#fff;background:linear-gradient(135deg,#8b5cf6,#ec4899);border-color:#0000}.sl-chart-empty{text-align:center;color:#9ca3af;background:#fff;border:1px dashed #e5e7eb;border-radius:12px;margin-top:14px;padding:30px}.sl-chart-svg-wrap{background:#fff;border-radius:12px;margin-top:12px;padding:10px}.sl-chart-title{color:#6d28d9;margin:0 0 4px 8px;font-size:14px;font-weight:700}.sl-chart-svg{width:100%;height:auto;display:block}.sl-pie-wrap{flex-wrap:wrap;align-items:center;gap:16px;display:flex}.sl-legend{color:#374151;flex-direction:column;gap:8px;margin:0;padding:0;font-size:14px;list-style:none;display:flex}.sl-legend li{align-items:center;gap:8px;display:flex}.sl-legend-dot{border-radius:4px;width:12px;height:12px;display:inline-block}.sl-tasks{border-top:1px dashed #e5e7eb;margin-top:18px;padding-top:14px}.sl-tasks h4{align-items:center;gap:10px;margin:0 0 10px;font-size:16px;display:flex}.sl-task-count{color:#6d28d9;background:#ede9fe;border-radius:999px;padding:2px 10px;font-size:13px}.sl-tasks ol{flex-direction:column;gap:10px;margin:0;padding:0;list-style:none;display:flex}.sl-tasks li{color:#374151;background:#f9fafb;border:1px solid #0000;border-radius:10px;align-items:flex-start;gap:10px;padding:10px 12px;font-size:14.5px;line-height:1.6;display:flex}.sl-tasks li.pass{background:#f0fdf4;border-color:#bbf7d0}.sl-tasks li.fail{background:#fef2f2;border-color:#fecaca}.sl-task-icon{flex-shrink:0}.sl-task-text em{color:#9ca3af;font-size:13px;font-style:normal}.sl-actions{gap:10px;margin-top:14px;display:flex}.sl-check-btn{padding:10px 22px}.sl-congrats{color:#166534;background:linear-gradient(135deg,#f0fdf4,#faf5ff);border:1px solid #86efac;border-radius:12px;margin-top:14px;padding:14px 16px;font-weight:700}.sl-retry{color:#92400e;background:#fffbeb;border:1px solid #fde68a;border-radius:12px;margin-top:14px;padding:12px 16px;font-size:14px}.sl-filter-panel{color:#1e40af;background:#eff6ff;border:1px solid #bfdbfe;border-radius:10px;flex-wrap:wrap;align-items:center;gap:8px;margin-top:10px;padding:10px 12px;font-size:14px;display:flex}.sl-filter-panel button{color:#1e40af;cursor:pointer;background:#fff;border:1px solid #bfdbfe;border-radius:999px;padding:4px 12px;font-size:13px}.sl-filter-panel button:hover{background:#dbeafe}.sl-filter-panel button.on{color:#fff;background:#2563eb;border-color:#2563eb}.sl-filter-tip{color:#6b7280;margin-left:auto;font-size:12px}select.sl-editor{font:inherit;background:#fff}
