:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#0c0d10;--surface-1:#14161a;--surface-2:#1b1e23;--surface-3:#23272d;--surface-hover:#2a2f36;--border:#2b3037;--border-strong:#3a4049;--text:#f2f3f5;--text-2:#a7aeb8;--text-3:#6f7782;--accent:#9b98ff;--accent-strong:#b4b2ff;--accent-soft:#9b98ff24;--accent-ink:#0c0d10;--success:#5ccf97;--success-soft:#5ccf9721;--warning:#e8bb6c;--warning-soft:#e8bb6c24;--danger:#f27b84;--danger-soft:#f27b8421;--info-soft:#78aaff21;--hero:radial-gradient(120% 140% at 100% 0%, #9b98ff59 0%, #9b98ff00 55%), linear-gradient(150deg, #24234a 0%, #1b2440 55%, #172b33 100%);--font:Inter, ui-sans-serif, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--fs-display:clamp(28px, 7vw, 36px);--fs-h1:24px;--fs-h2:19px;--fs-body:15px;--fs-small:13px;--fs-micro:12px;--lh:1.45;--r-xl:24px;--r-lg:18px;--r-md:14px;--r-sm:10px;--r-pill:999px;--gap:12px;--pad:16px;--tap:44px;--shadow:0 1px 0 #ffffff0a inset, 0 12px 32px #00000059;--focus:0 0 0 2px var(--bg), 0 0 0 4px var(--accent);--ease:cubic-bezier(.2, .7, .2, 1);--dur:.18s;--safe-top:max(var(--tg-safe-top,0px), env(safe-area-inset-top,0px));--safe-bottom:max(var(--tg-safe-bottom,0px), env(safe-area-inset-bottom,0px));--nav-h:64px}@media (prefers-reduced-motion:reduce){:root{--dur:0s}}*,:before,:after{box-sizing:border-box}html,body{margin:0;padding:0}html{-webkit-text-size-adjust:100%}body{background:var(--bg);color:var(--text);font-family:var(--font);font-size:var(--fs-body);line-height:var(--lh);-webkit-font-smoothing:antialiased;overflow-wrap:anywhere;min-height:100dvh}button,input,textarea,select{font:inherit;color:inherit}a{color:var(--accent-strong);text-underline-offset:3px}:focus-visible{box-shadow:var(--focus);border-radius:var(--r-sm);outline:none}::selection{background:var(--accent-soft)}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.shell{min-height:100dvh;display:flex}.main{min-width:0;padding:calc(var(--safe-top) + 12px) var(--pad) calc(var(--nav-h) + var(--safe-bottom) + 24px);flex:1}.page{flex-direction:column;gap:20px;max-width:760px;margin:0 auto;display:flex}.page.wide{max-width:1120px}.topbar{min-height:var(--tap);align-items:center;gap:12px;display:flex}.topbar h1{font-size:clamp(20px, 5.6vw, var(--fs-h1));letter-spacing:-.01em;flex:1;min-width:0;margin:0;font-weight:650;line-height:1.2}.eyebrow{font-size:var(--fs-micro);color:var(--text-3);text-transform:uppercase;letter-spacing:.08em;font-weight:600}.display{font-size:var(--fs-display);letter-spacing:-.02em;margin:0;font-weight:680;line-height:1.1}.h2{font-size:var(--fs-h2);letter-spacing:-.005em;margin:0;font-weight:640}.muted{color:var(--text-2)}.faint{color:var(--text-3)}.small{font-size:var(--fs-small)}.row{align-items:center;gap:10px;min-width:0;display:flex}.row.wrap{flex-wrap:wrap}.row.between{justify-content:space-between}.stack{gap:var(--gap);flex-direction:column;display:flex}.stack.tight{gap:6px}.grow{flex:1;min-width:0}.ellipsis{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.pre{white-space:pre-wrap}.grid-2{gap:var(--gap);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}@media (max-width:380px){.grid-2.collapse{grid-template-columns:1fr}}.tabbar{z-index:20;padding:6px 8px calc(6px + var(--safe-bottom));-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border-top:1px solid var(--border);grid-template-columns:repeat(var(--tabs,5), 1fr);background:#0c0d10eb;display:grid;position:fixed;bottom:0;left:0;right:0}.tabbar a{border-radius:var(--r-md);min-height:52px;color:var(--text-3);transition:color var(--dur) var(--ease), background var(--dur) var(--ease);flex-direction:column;justify-content:center;align-items:center;gap:3px;font-size:11px;font-weight:560;text-decoration:none;display:flex}.tabbar a.active{color:var(--text)}.tabbar a.active svg{color:var(--accent)}.sidebar{display:none}@media (min-width:960px){.tabbar{display:none}.main{padding:28px 40px 48px}.sidebar{border-right:1px solid var(--border);background:var(--surface-1);flex-direction:column;flex-shrink:0;gap:4px;width:248px;height:100dvh;padding:24px 14px;display:flex;position:sticky;top:0;overflow-y:auto}.sidebar .brand{letter-spacing:-.01em;padding:4px 12px 20px;font-size:18px;font-weight:700}.sidebar .group{margin:16px 12px 6px}.sidebar a{border-radius:var(--r-md);min-height:42px;color:var(--text-2);align-items:center;gap:12px;padding:0 12px;font-weight:540;text-decoration:none;display:flex}.sidebar a:hover{background:var(--surface-2);color:var(--text)}.sidebar a.active{background:var(--surface-3);color:var(--text)}.sidebar a.active svg{color:var(--accent)}.sidebar .count{margin-left:auto}}.card{background:var(--surface-1);border:1px solid var(--border);border-radius:var(--r-lg);padding:var(--pad)}.card.flush{padding:0;overflow:hidden}.card.raised{background:var(--surface-2)}.hero{background:var(--hero);border-radius:var(--r-xl);box-shadow:var(--shadow);border:1px solid #ffffff12;flex-direction:column;gap:14px;padding:22px 20px;display:flex}.stat{flex-direction:column;gap:2px;display:flex}.stat .v{letter-spacing:-.02em;font-size:28px;font-weight:680;line-height:1.1}.stat .l{font-size:var(--fs-small);color:var(--text-2)}.list{flex-direction:column;display:flex}.list-item{padding:14px var(--pad);border-top:1px solid var(--border);min-height:60px;color:inherit;text-align:left;cursor:pointer;width:100%;transition:background var(--dur) var(--ease);background:0 0;border-bottom:0;border-left:0;border-right:0;align-items:center;gap:12px;text-decoration:none;display:flex}.list-item:first-child{border-top:0}.list-item:hover{background:var(--surface-2)}.list-item .title{font-weight:560}.list-item .sub{font-size:var(--fs-small);color:var(--text-2)}.list-item .chev{color:var(--text-3);flex-shrink:0}.avatar{background:var(--surface-3);width:40px;height:40px;color:var(--text-2);border-radius:50%;flex-shrink:0;place-items:center;font-size:14px;font-weight:650;display:grid}.btn{min-height:var(--tap);border-radius:var(--r-pill);cursor:pointer;white-space:nowrap;background:var(--surface-3);color:var(--text);transition:background var(--dur) var(--ease), transform var(--dur) var(--ease), opacity var(--dur);border:1px solid #0000;justify-content:center;align-items:center;gap:8px;padding:0 18px;font-weight:600;display:inline-flex}.btn:hover{background:var(--surface-hover)}a.btn{text-decoration:none}.clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.btn:active{transform:scale(.98)}.btn[disabled]{opacity:.5;cursor:not-allowed;transform:none}.btn.primary{background:var(--accent);color:var(--accent-ink)}.btn.primary:hover{background:var(--accent-strong)}.btn.danger{background:var(--danger-soft);color:var(--danger)}.btn.ghost{color:var(--text-2);background:0 0}.btn.ghost:hover{background:var(--surface-2);color:var(--text)}.btn.block{width:100%}.btn.sm{min-height:36px;font-size:var(--fs-small);padding:0 14px}.icon-btn{width:var(--tap);height:var(--tap);border:1px solid var(--border);background:var(--surface-2);color:var(--text);cursor:pointer;border-radius:50%;flex-shrink:0;place-items:center;display:grid}.icon-btn:hover{background:var(--surface-3)}.icon-btn[disabled]{opacity:.4;cursor:not-allowed}.spin{animation:.9s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.segmented{border-radius:var(--r-pill);background:var(--surface-1);border:1px solid var(--border);scrollbar-width:none;gap:4px;padding:4px;display:flex;overflow-x:auto}.segmented::-webkit-scrollbar{display:none}.segmented button{border-radius:var(--r-pill);min-height:38px;color:var(--text-2);cursor:pointer;white-space:nowrap;background:0 0;border:0;flex:1 0 auto;justify-content:center;align-items:center;gap:6px;padding:0 14px;font-weight:580;display:inline-flex}.segmented button[aria-pressed=true]{background:var(--text);color:var(--bg)}.segmented.scroll{padding-right:28px;-webkit-mask-image:linear-gradient(90deg,#000 85%,#0000);mask-image:linear-gradient(90deg,#000 85%,#0000)}@media (max-width:400px){.segmented.fit{border-radius:var(--r-lg);grid-template-columns:1fr 1fr;display:grid}}@media (max-width:430px){.segmented{gap:2px}.segmented button{padding:0 10px;font-size:14px}}.badge{border-radius:var(--r-pill);height:24px;font-size:var(--fs-micro);white-space:nowrap;background:var(--surface-3);color:var(--text-2);align-items:center;gap:5px;padding:0 9px;font-weight:620;display:inline-flex}.badge.accent{background:var(--accent-soft);color:var(--accent-strong)}.badge.success{background:var(--success-soft);color:var(--success)}.badge.warning{background:var(--warning-soft);color:var(--warning)}.badge.danger{background:var(--danger-soft);color:var(--danger)}.count{border-radius:var(--r-pill);background:var(--accent);min-width:22px;height:22px;color:var(--accent-ink);place-items:center;padding:0 7px;font-size:12px;font-weight:700;display:inline-grid}.field{flex-direction:column;gap:6px;min-width:0;display:flex}.field>label,.field .label{font-size:var(--fs-small);color:var(--text-2);font-weight:560}.field .hint{font-size:var(--fs-micro);color:var(--text-3)}.field .err{font-size:var(--fs-small);color:var(--danger);align-items:flex-start;gap:6px;display:flex}.input,.textarea,.select{width:100%;min-height:var(--tap);background:var(--surface-2);border:1px solid var(--border);border-radius:var(--r-md);color:var(--text);transition:border-color var(--dur) var(--ease);padding:10px 14px}.input::placeholder,.textarea::placeholder{color:var(--text-3)}.input:focus,.textarea:focus,.select:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);outline:none}.input[aria-invalid=true],.textarea[aria-invalid=true]{border-color:var(--danger)}.textarea{resize:vertical;min-height:110px;line-height:1.5}.select-wrap{position:relative}.select{appearance:none;cursor:pointer;padding-right:42px}.select-wrap svg{pointer-events:none;color:var(--text-3);position:absolute;top:50%;right:14px;transform:translateY(-50%)}.search{position:relative}.search svg{color:var(--text-3);pointer-events:none;position:absolute;top:50%;left:14px;transform:translateY(-50%)}.search .input{padding-left:42px}.check{min-height:var(--tap);cursor:pointer;align-items:flex-start;gap:12px;padding:10px 0;display:flex}.check input{width:20px;height:20px;accent-color:var(--accent);flex-shrink:0;margin:1px 0 0}.state{text-align:center;border-radius:var(--r-lg);border:1px dashed var(--border);color:var(--text-2);flex-direction:column;align-items:center;gap:12px;padding:40px 20px;display:flex}.state .ico{background:var(--surface-2);width:52px;height:52px;color:var(--text-2);border-radius:50%;place-items:center;display:grid}.state.error .ico{background:var(--danger-soft);color:var(--danger)}.state h3{color:var(--text);margin:0;font-size:17px;font-weight:620}.state p{max-width:380px;margin:0}.skeleton{background:linear-gradient(90deg, var(--surface-1), var(--surface-2), var(--surface-1));border-radius:var(--r-md);background-size:200% 100%;animation:1.4s ease-in-out infinite shimmer}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@media (prefers-reduced-motion:reduce){.skeleton,.spin{animation:none}}.banner{border-radius:var(--r-md);font-size:var(--fs-small);align-items:flex-start;gap:10px;padding:12px 14px;display:flex}.banner.info{background:var(--info-soft);color:#b9d0ff}.banner.warning{background:var(--warning-soft);color:var(--warning)}.banner.danger{background:var(--danger-soft);color:var(--danger)}.banner.success{background:var(--success-soft);color:var(--success)}.banner svg{flex-shrink:0;margin-top:1px}.save-ind{font-size:var(--fs-small);color:var(--text-3);white-space:nowrap;align-items:center;gap:6px;display:inline-flex}.save-ind.saved{color:var(--success)}.save-ind.error{color:var(--danger)}.progress{border-radius:var(--r-pill);background:#ffffff1a;height:8px;overflow:hidden}.progress>i{border-radius:inherit;background:var(--text);height:100%;transition:width .4s var(--ease);display:block}.overlay{z-index:50;animation:fade var(--dur) var(--ease);background:#0009;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.sheet{width:100%;max-width:640px;max-height:calc(100dvh - var(--safe-top) - 24px);background:var(--surface-1);border:1px solid var(--border);border-radius:var(--r-xl) var(--r-xl) 0 0;animation:rise var(--dur) var(--ease);border-bottom:0;flex-direction:column;display:flex}.sheet-head{align-items:center;gap:12px;padding:16px 16px 8px;display:flex}.sheet-head h2{font-size:var(--fs-h2);flex:1;margin:0;font-weight:640}.sheet-body{flex-direction:column;gap:14px;padding:8px 16px 16px;display:flex;overflow-y:auto}.sheet-foot{padding:12px 16px calc(12px + var(--safe-bottom));border-top:1px solid var(--border);gap:10px;display:flex}.sheet-foot .btn{flex:1}@media (min-width:960px){.overlay{align-items:center}.sheet{border-radius:var(--r-xl);border-bottom:1px solid var(--border)}}@keyframes fade{0%{opacity:0}}@keyframes rise{0%{opacity:0;transform:translateY(24px)}}.toast-wrap{left:0;right:0;bottom:calc(var(--nav-h) + var(--safe-bottom) + 12px);z-index:60;pointer-events:none;flex-direction:column;align-items:center;gap:8px;padding:0 16px;display:flex;position:fixed}@media (min-width:960px){.toast-wrap{bottom:24px}}.toast{pointer-events:auto;border-radius:var(--r-md);background:var(--surface-3);border:1px solid var(--border-strong);max-width:480px;box-shadow:var(--shadow);font-size:var(--fs-small);animation:rise var(--dur) var(--ease);align-items:center;gap:10px;padding:12px 16px;display:flex}.toast.error svg{color:var(--danger)}.toast.success svg{color:var(--success)}.table{border-collapse:collapse;width:100%}.table th{text-align:left;font-size:var(--fs-micro);color:var(--text-3);text-transform:uppercase;letter-spacing:.06em;padding:10px var(--pad);border-bottom:1px solid var(--border);font-weight:620}.table td{padding:12px var(--pad);border-bottom:1px solid var(--border);vertical-align:middle}.table tr:last-child td{border-bottom:0}@media (max-width:720px){.table thead{display:none}.table,.table tbody,.table tr,.table td{width:100%;display:block}.table tr{padding:12px var(--pad);border-bottom:1px solid var(--border)}.table td{border:0;padding:3px 0}.table td[data-label]:before{content:attr(data-label) " · ";color:var(--text-3);font-size:var(--fs-micro)}}.lesson-body{flex-direction:column;gap:16px;display:flex}.lesson-body h2{letter-spacing:-.01em;margin:6px 0 0;font-size:21px}.lesson-body p,.lesson-body figure{margin:0}.lesson-body img{border-radius:var(--r-md);background:var(--surface-2);width:100%;height:auto;display:block}.lesson-body figcaption{font-size:var(--fs-small);color:var(--text-3);margin-top:6px}.req{align-items:center;gap:10px;padding:10px 0;display:flex}.req .dot{background:var(--surface-3);width:26px;height:26px;color:var(--text-3);border-radius:50%;flex-shrink:0;place-items:center;display:grid}.req.done .dot{background:var(--success-soft);color:var(--success)}.timeline{flex-direction:column;gap:0;display:flex}.timeline .ev{font-size:var(--fs-small);gap:12px;padding:8px 0;display:flex}.timeline .ev .when{color:var(--text-3);flex-shrink:0;width:120px}.kbd{background:var(--surface-3);border-radius:6px;padding:2px 6px;font-family:ui-monospace,monospace;font-size:12px}hr.sep{border:0;border-top:1px solid var(--border);margin:0}.locked-screen{place-items:center;min-height:100dvh;padding:24px;display:grid}.locked-screen .inner{text-align:center;flex-direction:column;align-items:center;gap:14px;max-width:360px;display:flex}.locked-screen .mark{background:var(--surface-2);border:1px solid var(--border);border-radius:24px;place-items:center;width:72px;height:72px;display:grid}
