:root{--bg:#f6f8fa;--card:#fff;--ink:#0f172a;--ink-muted:#64748b;--line:#e6eaf0;--brand:#10573f;--brand-600:#0d9488;--accent:#7c5cf5;--danger:#dc2626;--ok:#16a34a;--r-sm:8px;--r-md:12px;--r-lg:16px;--gap:16px;--page:1100px}@media (prefers-color-scheme:dark){:root{--bg:#0b1220;--card:#141d2e;--ink:#e8edf5;--ink-muted:#94a3b8;--line:#223049}}*{box-sizing:border-box}html,body{background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased;margin:0;padding:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}a{color:inherit;text-decoration:none}.page{max-width:var(--page);margin:0 auto;padding:24px 20px 64px}.topbar{z-index:10;background:var(--card);border-bottom:1px solid var(--line);align-items:center;gap:18px;padding:12px 20px;display:flex;position:sticky;top:0}.brand{align-items:center;gap:9px;font-size:15px;font-weight:800;display:flex}.brand-mark{background:var(--brand);color:#fff;border-radius:10px;place-items:center;width:30px;height:30px;font-weight:800;display:grid}.nav{align-items:center;gap:4px;margin-left:auto;display:flex}.nav a,.nav button{color:var(--ink-muted);font:inherit;cursor:pointer;background:0 0;border:none;border-radius:99px;padding:8px 13px;font-size:14px;font-weight:600}.nav a.on{background:color-mix(in srgb, var(--brand) 12%, transparent);color:var(--brand)}.nav a:hover,.nav button:hover{color:var(--ink)}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);padding:18px}.h1{letter-spacing:-.4px;margin:0 0 4px;font-size:26px;font-weight:800}.sub{color:var(--ink-muted);margin:0 0 20px;font-size:14px}.grid{gap:var(--gap);grid-template-columns:repeat(auto-fill,minmax(min(260px,100%),1fr));display:grid}.row{align-items:center;gap:12px;display:flex}.muted{color:var(--ink-muted);font-size:13px}.spacer{flex:1}.course-cover{aspect-ratio:16/9;border-radius:var(--r-md);background:linear-gradient(140deg, var(--brand), var(--accent));color:#fff;place-items:center;margin-bottom:12px;font-size:13px;font-weight:800;display:grid;overflow:hidden}.course-cover img{object-fit:cover;width:100%;height:100%}.course-title{margin:0 0 4px;font-size:15px;font-weight:700}.badge{letter-spacing:.02em;border-radius:99px;padding:3px 9px;font-size:11px;font-weight:800;display:inline-block}.badge.free{background:color-mix(in srgb, var(--ok) 14%, transparent);color:var(--ok)}.badge.owned{background:color-mix(in srgb, var(--brand-600) 16%, transparent);color:var(--brand-600)}.price{font-size:15px;font-weight:800}.task{border-bottom:1px solid var(--line);align-items:center;gap:12px;padding:12px 0;display:flex}.task:last-child{border-bottom:none}.check{cursor:pointer;border:2px solid var(--line);color:#fff;background:0 0;border-radius:8px;flex-shrink:0;place-items:center;width:24px;height:24px;font-size:14px;line-height:1;display:grid}.check.on{background:var(--brand-600);border-color:var(--brand-600)}.task.done .task-title{color:var(--ink-muted);text-decoration:line-through}.task-title{font-size:14.5px;font-weight:600}.field{flex-direction:column;gap:6px;margin-bottom:14px;display:flex}.field span{color:var(--ink-muted);text-transform:uppercase;letter-spacing:.04em;font-size:12px;font-weight:700}.field input{border:1px solid var(--line);border-radius:var(--r-sm);background:var(--card);color:var(--ink);font:inherit;padding:11px 13px;font-size:15px}.field input:focus{border-color:var(--brand-600);box-shadow:0 0 0 3px color-mix(in srgb, var(--brand-600) 18%, transparent);outline:none}.btn{border-radius:var(--r-sm);cursor:pointer;background:var(--brand);color:#fff;font:inherit;border:none;padding:11px 18px;font-size:15px;font-weight:700}.btn:disabled{opacity:.55;cursor:not-allowed}.btn.ghost{border:1px solid var(--line);color:var(--ink);background:0 0}.error{color:var(--danger);margin:0 0 12px;font-size:13.5px;font-weight:600}.auth-wrap{background:radial-gradient(circle at 15% 10%, color-mix(in srgb, var(--brand-600) 55%, transparent), transparent 55%), radial-gradient(circle at 85% 90%, color-mix(in srgb, var(--accent) 35%, transparent), transparent 50%), linear-gradient(160deg, var(--brand) 0%, #0a3d2c 100%);place-items:center;min-height:100dvh;padding:20px;display:grid}.auth-card{border:none;width:min(400px,100%);box-shadow:0 24px 60px #00000047}.state{text-align:center;color:var(--ink-muted);padding:40px 0;font-size:14px}.auth-alt{text-align:center;color:var(--ink-muted);margin:16px 0 0;font-size:14px}.auth-alt a{color:var(--brand);font-weight:700}
