:root{--font-inter:"Inter";--bg:#ffffff;--soft:#f6f7f9;--ink:#0f172a;--ink2:#334155;--muted:#8a94a6;--faint:#b6bdc9;--line:#eceef2;--brand:#2563eb;--brand-soft:#eef3ff;--ok:#16a34a;--ok-soft:#ecfdf3;--bad:#dc2626;--bad-soft:#fef2f2;--q:#2563eb;--q-s:#eef3ff;--f:#7c3aed;--f-s:#f4efff;--i:#ea580c;--i-s:#fff4ed;--n:#0d9488;--n-s:#ebfaf8;--v:#db2777;--v-s:#fdf0f6}*{box-sizing:border-box}html,body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--font-inter),system-ui,-apple-system,Segoe UI,Roboto,sans-serif;-webkit-tap-highlight-color:transparent;-webkit-font-smoothing:antialiased}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}svg.i{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;flex:0 0 auto}.wrap{max-width:780px;margin:0 auto;padding:16px 16px 120px}.top{display:flex;justify-content:flex-end;height:44px}.icon-btn{width:40px;height:40px;border-radius:12px;border:0;background:transparent;display:grid;place-items:center;color:var(--ink2)}.icon-btn:hover{background:var(--soft)}.icon-btn:active{transform:scale(.92)}.icon-btn.muted{color:var(--faint)}.hero{display:flex;align-items:center;justify-content:center;gap:14px;margin:18px 0 34px}h1{font-size:clamp(34px,8vw,60px);margin:0;font-weight:800;letter-spacing:-.05em;line-height:1;cursor:text}.badge-ic{width:clamp(42px,8vw,62px);height:clamp(42px,8vw,62px);border-radius:16px;background:var(--ink);color:#fff;display:grid;place-items:center;transform:rotate(-4deg);box-shadow:0 6px 16px #0f172a40;flex:0 0 auto}.badge-ic svg.i{width:55%;height:55%;stroke-width:1.8}.search{position:relative;display:flex;align-items:center;height:62px;border-radius:20px;border:1.5px solid #e3e6eb;background:#fff;padding:0 10px 0 20px;margin-bottom:16px;transition:.15s}.search:focus-within{border-color:var(--ink);box-shadow:0 0 0 4px #f1f3f6}.search>svg.i{color:var(--ink2);width:22px;height:22px}.search input{flex:1;min-width:0;height:100%;border:0;background:transparent;outline:none;font-size:17px;padding:0 12px}.search input::placeholder{color:var(--muted)}.search input::-webkit-search-cancel-button{display:none}.sbtn{position:relative;width:42px;height:42px;border:0;border-radius:12px;background:transparent;display:grid;place-items:center;color:var(--ink)}.sbtn:hover{background:var(--soft)}.sbtn.active{color:var(--brand)}.sbtn .dot{position:absolute;top:9px;right:9px;width:7px;height:7px;border-radius:50%;background:var(--brand)}.pop{position:absolute;right:0;top:68px;background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:0 12px 32px #0f172a1f;padding:6px;min-width:190px;z-index:15;display:none}.pop.show{display:block;animation:fade .15s}@keyframes fade{0%{opacity:0;transform:translateY(-4px)}}.pop h4{margin:6px 10px;font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-weight:600}.pop button{display:flex;align-items:center;gap:10px;width:100%;border:0;background:transparent;padding:10px;border-radius:9px;font-size:14px;text-align:left}.pop button:hover{background:var(--soft)}.pop button .ck{margin-left:auto;color:var(--ink);opacity:0}.pop button.on{font-weight:600}.pop button.on .ck{opacity:1}.tabs{display:flex;justify-content:center;gap:4px;flex-wrap:wrap;margin:0 0 20px}.tab{flex:0 0 auto;display:flex;align-items:center;gap:4px;border:0;background:transparent;height:32px;padding:0 10px;border-radius:99px;color:var(--muted)}.tab svg.i{width:17px;height:17px}.tab:hover{color:var(--ink);background:var(--soft)}.tab.on{background:var(--ink);color:#fff}.tab .n{font-size:11px;font-weight:600;opacity:.7;font-variant-numeric:tabular-nums}.chead{display:flex;align-items:center;justify-content:space-between;margin:-8px 4px 12px;min-height:30px}.chead.hide{display:none}.chead h3{margin:0;font-size:14px;font-weight:600;color:var(--muted)}.chip{display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 6px 0 12px;border-radius:99px;background:var(--soft);color:var(--ink);font-size:13px;font-weight:600;border:0}.chip svg.i{width:16px;height:16px}.level{--c:#e04f63;--cs:#fbeef0;border:1px solid #e6e8ec;border-radius:18px;overflow:hidden;margin-bottom:16px;background:#fff}.level[data-tone="2"]{--c:#7c5ce0;--cs:#f2eefc}.level[data-tone="3"]{--c:#d68a1a;--cs:#fcf3e4}.level[data-tone="4"]{--c:#1a9d8f;--cs:#e8f6f4}.lhead{width:100%;display:flex;align-items:center;gap:14px;padding:22px;border:0;background:var(--cs);text-align:left}.ldot{width:13px;height:13px;border-radius:4px;background:var(--c);flex:0 0 auto}.ltitle{flex:1;min-width:0;font-size:clamp(20px,4.5vw,25px);font-weight:800;letter-spacing:-.035em}.pct{flex:0 0 auto;font-size:13px;font-weight:600;color:var(--faint);font-variant-numeric:tabular-nums}.pct.part{color:var(--ink2)}.pct.full{color:var(--ok)}.chev{color:var(--ink2);transition:transform .25s;width:20px!important;height:20px!important;stroke-width:2.2}.level.open>.lhead .chev,.subj.open>.shead2 .chev{transform:rotate(180deg)}.lbody{display:none}.level.open>.lbody{display:block}.level.open>.lhead{border-bottom:1px solid #e6e8ec}.subj+.subj{border-top:1px solid #e6e8ec}.shead2{width:100%;display:flex;align-items:center;gap:12px;padding:20px 22px;border:0;background:#fff;text-align:left}.shead2:hover{background:#fcfcfd}.stitle{flex:1;min-width:0;font-size:clamp(17px,3.6vw,19.5px);font-weight:700;letter-spacing:-.03em}.sbody{display:none;border-top:1px solid #e6e8ec;padding:8px 0 14px}.subj.open>.sbody{display:block}.sbody{--rail:#dfe3e9}.topic{position:relative;margin-left:30px;padding-right:12px;border-radius:12px;transition:background .15s,box-shadow .15s}.topic:before{content:"";position:absolute;left:-19px;top:0;bottom:0;width:2px;background:var(--rail)}.topic:last-child:before{bottom:auto;height:25px}.topic:after{content:"";position:absolute;left:-19px;top:24px;width:12px;height:2px;background:var(--rail)}.topic.over{background:var(--brand-soft);box-shadow:inset 0 0 0 2px var(--brand)}.thead{width:100%;display:flex;align-items:center;gap:10px;padding:13px 8px 13px 2px;border:0;background:transparent;text-align:left;border-radius:12px}.thead:hover .ttitle{text-decoration:underline;text-underline-offset:4px;text-decoration-color:#d5d9e1}.tchev{color:var(--ink2);transition:transform .2s;width:18px!important;height:18px!important;stroke-width:2.2}.topic.open .tchev{transform:rotate(90deg)}.ttitle{flex:1;min-width:0;font-size:clamp(16px,3.4vw,18px);font-weight:700;letter-spacing:-.025em}.tcount{font-size:13px;font-weight:500;color:var(--faint);font-variant-numeric:tabular-nums}.tcount.full{color:var(--ok)}.tbody{display:none;position:relative;margin-left:10px;padding:0 0 8px 18px;border-left:2px solid var(--rail)}.topic.open .tbody{display:block}.lesson{position:relative}.lesson:before,.addles:before{content:"";position:absolute;left:-18px;top:50%;width:12px;height:2px;background:var(--rail)}.addles{position:relative}.lesson{display:flex;align-items:center;gap:12px;min-height:46px;padding:4px 10px 4px 12px;border-radius:12px;transition:background .15s}.lesson:hover{background:#f8f9fa}.lesson.next{background:#f3f4f6}.lbody2{flex:1;min-width:0;cursor:pointer;display:flex;align-items:center;gap:10px}.lbody2 b{font-size:16px;font-weight:400;color:var(--ink);line-height:1.4;letter-spacing:.005em}.lesson.done .lbody2 b{color:var(--muted)}.lt{color:#c4cad4;display:flex}.lt svg.i{width:15px;height:15px}.startbtn{flex:0 0 auto;border:0;background:transparent;color:var(--ink);font-size:14px;font-weight:700;padding:6px 4px}.startbtn:hover{text-decoration:underline;text-underline-offset:3px}.check{flex:0 0 auto;width:22px;height:22px;border-radius:50%;border:1.6px solid #cfd4dc;background:#fff;display:grid;place-items:center;transition:.18s;color:#fff;padding:0}.check svg.i{width:12px;height:12px;stroke-width:3.2;opacity:0;transform:scale(.4);transition:.18s}.check:hover{border-color:var(--ink)}.lesson.done .check{background:var(--ink);border-color:var(--ink)}.lesson.done .check svg.i{opacity:1;transform:scale(1)}.check.pop-anim{animation:popck .35s}@keyframes popck{40%{transform:scale(1.3)}}.addles{display:flex;align-items:center;gap:8px;border:0;background:transparent;color:var(--muted);font-size:14px;font-weight:500;padding:10px 12px;border-radius:10px}.addles:hover{color:var(--ink);background:#f8f9fa}.addles svg.i{width:16px;height:16px}.nores{font-size:14px;color:var(--muted);padding:10px 12px}mark{background:#fff1a8;color:inherit;border-radius:3px;padding:0 1px}.empty{text-align:center;color:var(--muted);padding:48px 16px}.empty .eic{margin:0 auto 12px;background:var(--soft);color:var(--muted);width:52px;height:52px;border-radius:16px;display:grid;place-items:center}@media(max-width:560px){.wrap{padding:12px 12px 110px}.hero{margin:10px 0 22px}.search{height:54px;border-radius:16px;padding-left:14px}.search input{font-size:16px;padding:0 8px}.lhead{padding:16px 14px}.shead2{padding:15px 14px}.topic{margin-left:22px;padding-right:6px}.topic:before,.topic:after{left:-14px}.topic:after{width:9px}.thead{padding:11px 6px 11px 0}.tbody{margin-left:8px;padding-left:12px}.lesson:before,.addles:before{left:-12px;width:8px}.lt{display:none}.lesson{padding-left:8px;gap:8px}.lbody2 b{font-size:15px}}.fab{position:fixed;right:22px;bottom:calc(22px + env(safe-area-inset-bottom));height:60px;padding:0 22px 0 18px;border-radius:20px;border:0;background:var(--ink);color:#fff;font-weight:700;font-size:15px;box-shadow:0 12px 30px #0f172a4d;display:flex;align-items:center;gap:8px;z-index:20}.fab svg.i{width:22px;height:22px;stroke-width:2.5}@media(max-width:560px){.fab{width:60px;padding:0;justify-content:center}.fab span{display:none}}.fab:active{transform:scale(.96)}.scrim{position:fixed;inset:0;background:#0f172a66;display:none;z-index:30;align-items:flex-end;justify-content:center;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.scrim.show{display:flex}.sheet{background:#fff;width:100%;max-width:560px;border-radius:22px 22px 0 0;padding:20px 18px calc(20px + env(safe-area-inset-bottom));max-height:92vh;overflow:auto;animation:up .25s cubic-bezier(.2,.8,.2,1)}@media(min-width:640px){.scrim{align-items:center}.sheet{border-radius:22px}}@keyframes up{0%{transform:translateY(40px);opacity:0}}.grab{width:40px;height:4px;border-radius:9px;background:var(--line);margin:-6px auto 16px}.shead{display:flex;align-items:center;gap:12px;margin-bottom:14px}.shead h2{margin:0;font-size:19px;flex:1;letter-spacing:-.01em}.shead .small{font-size:12px;color:var(--muted);margin-top:2px}.shead .ticon{width:40px;height:40px;border-radius:11px;display:grid;place-items:center;flex:0 0 auto}.ty-qbank .ticon{background:var(--q-s);color:var(--q)}.ty-flashcard .ticon{background:var(--f-s);color:var(--f)}.ty-image .ticon{background:var(--i-s);color:var(--i)}.ty-note .ticon{background:var(--n-s);color:var(--n)}.ty-video .ticon{background:var(--v-s);color:var(--v)}label{display:block;font-size:13px;font-weight:600;margin:14px 0 6px;color:var(--ink2)}.field{width:100%;border:1px solid var(--line);background:var(--soft);border-radius:12px;padding:12px;font-size:15px;outline:none}.field:focus{border-color:var(--brand);background:#fff}textarea.field{min-height:90px;resize:vertical}.typepick{display:grid;grid-template-columns:repeat(5,1fr);gap:6px}.typepick button{border:1px solid var(--line);background:#fff;border-radius:12px;padding:10px 2px 8px;font-size:12px;font-weight:600;display:flex;flex-direction:column;align-items:center;gap:5px;color:var(--ink2)}.typepick button .ticon{width:32px;height:32px;border-radius:9px;display:grid;place-items:center}.typepick button.on{border-color:var(--ink);box-shadow:inset 0 0 0 1px var(--ink)}.row2{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:8px}.actions{display:flex;gap:10px;margin-top:18px}.btn{flex:1;height:48px;border-radius:12px;border:1px solid var(--line);background:#fff;font-weight:600;display:flex;align-items:center;justify-content:center;gap:8px;color:var(--ink2)}.btn svg.i{width:18px;height:18px}.btn.primary{background:var(--ink);border-color:var(--ink);color:#fff}.btn.success{background:var(--ok);border-color:var(--ok);color:#fff}.btn.danger{color:var(--bad)}.btn.icon{flex:0 0 48px}.hide{display:none!important}.flip{perspective:1000px;margin:4px 0 6px;cursor:pointer}.flip .inner{position:relative;min-height:200px;transition:transform .5s;transform-style:preserve-3d}.flip.flipped .inner{transform:rotateY(180deg)}.face{position:absolute;inset:0;backface-visibility:hidden;border-radius:18px;padding:22px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;font-size:18px;font-weight:500;line-height:1.45}.face small{font-size:11px;text-transform:uppercase;letter-spacing:.1em;font-weight:600;margin-bottom:10px;opacity:.7}.face.front{background:var(--f-s);color:#3b1b80}.face.back{background:var(--ok-soft);color:#14532d;transform:rotateY(180deg)}.hint{display:flex;justify-content:center;align-items:center;gap:6px;font-size:12px;color:var(--muted)}.hint svg.i{width:14px;height:14px}.imgbox{border-radius:14px;overflow:hidden;border:1px solid var(--line);background:var(--soft)}.imgbox img{display:block;width:100%}.qstem{background:var(--soft);border-radius:14px;padding:14px;font-size:15px;line-height:1.55}.opts{display:grid;gap:8px;margin-top:12px}.opts button{display:flex;align-items:center;gap:10px;text-align:left;border:1px solid var(--line);background:#fff;border-radius:12px;padding:12px;font-size:14px}.opts button .L{width:26px;height:26px;border-radius:8px;background:var(--soft);display:grid;place-items:center;font-weight:700;font-size:12px;flex:0 0 auto}.opts button.right{border-color:var(--ok);background:var(--ok-soft)}.opts button.right .L{background:var(--ok);color:#fff}.opts button.wrong{border-color:var(--bad);background:var(--bad-soft)}.opts button.wrong .L{background:var(--bad);color:#fff}.expl{margin-top:12px;border-radius:14px;padding:14px;font-size:14px;line-height:1.5}.expl.ok{background:var(--ok-soft)}.expl.no{background:var(--bad-soft)}.expl b{display:flex;align-items:center;gap:6px;margin-bottom:4px}.notebody{white-space:pre-wrap;line-height:1.65;font-size:15px;color:var(--ink2)}.notebody a{color:var(--brand)}.toast{position:fixed;left:50%;bottom:96px;transform:translate(-50%) translateY(20px);background:var(--ink);color:#fff;padding:11px 16px;border-radius:14px;font-size:14px;font-weight:500;opacity:0;transition:.25s;z-index:40;pointer-events:none;display:flex;align-items:center;gap:8px;white-space:nowrap}.toast svg.i{width:18px;height:18px;color:#4ade80}.toast.show{opacity:1;transform:translate(-50%)}
