:root{--bg:#f6f8fb;--surface:#ffffff;--surface-2:#f8fafc;--ink:#1f2937;--muted:#64748b;--border:#e2e8f0;--primary:#2563eb;--primary-dark:#1d4ed8;--primary-soft:#eff6ff;--success:#0f9d58;--success-soft:#ecfdf5;--warning:#b45309;--warning-soft:#fffbeb;--danger:#dc2626;--danger-soft:#fef2f2;--radius:12px;--shadow:0 1px 2px rgba(15,23,42,.04),0 8px 24px rgba(15,23,42,.05);--mono:"JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,monospace}*{box-sizing:border-box}html{scroll-behavior:smooth}html,body{margin:0;background:var(--bg);color:var(--ink);font-family:"Source Sans 3",Source Sans Pro,Inter,ui-sans-serif,system-ui,-apple-system,Segoe UI,sans-serif;font-size:16px}body{min-height:100vh;display:flex;flex-direction:column}a{color:var(--primary);text-decoration:none}a:hover{text-decoration:underline}button,input,select,textarea{font:inherit}.inline{display:inline}:focus-visible{outline:3px solid rgba(37,99,235,.35);outline-offset:2px}.top{background:var(--surface);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:30}.top-inner{max-width:1180px;margin:0 auto;padding:14px 28px;display:flex;justify-content:space-between;align-items:center;gap:20px}.brand{display:flex;align-items:center;gap:9px;font-weight:800;letter-spacing:-.03em;font-size:19px;color:var(--ink)}.brand:hover{text-decoration:none}.mark{display:grid;place-items:center;width:32px;height:32px;background:var(--primary);color:#fff;border-radius:9px;font:800 18px/1 Inter,sans-serif;box-shadow:0 2px 6px #2563eb40}.dot{color:var(--primary)}.top nav{display:flex;gap:22px;align-items:center;font-size:14px;font-weight:600}.top nav a,.link{color:var(--muted);background:none;border:0;padding:0;cursor:pointer;font-weight:600}.top nav a:hover,.link:hover,.top nav a.on{color:var(--primary);text-decoration:none}.top nav a.on{box-shadow:inset 0 -2px 0 var(--primary);padding-bottom:3px}.nav-user{display:flex;align-items:center;gap:10px}.avatar{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;background:var(--primary-soft);color:var(--primary);font-weight:800;font-size:13px;border:1px solid #dbeafe}.wrap{width:100%;max-width:1180px;margin:0 auto;padding:36px 28px 80px;flex:1}.hero{display:grid;grid-template-columns:1.2fr .8fr;gap:48px;align-items:center;background:linear-gradient(135deg,#fff,#f0f6ff);border:1px solid var(--border);border-radius:20px;padding:clamp(28px,5vw,56px);box-shadow:var(--shadow)}.kicker{font:700 11px/1.4 var(--mono);letter-spacing:.13em;text-transform:uppercase;color:var(--primary)}h1{font:750 clamp(36px,5vw,64px)/1.03 Inter,ui-sans-serif,system-ui,sans-serif;letter-spacing:-.045em;margin:14px 0 16px;max-width:790px;color:#0f172a}h2{font:750 28px/1.15 Inter,ui-sans-serif,system-ui,sans-serif;letter-spacing:-.03em;margin:34px 0 14px;color:#0f172a}h3{margin:0;font:700 18px/1.25 Inter,ui-sans-serif,system-ui,sans-serif;letter-spacing:-.015em;color:#0f172a}.lede{font-size:18px;line-height:1.6;color:var(--muted);max-width:660px}.hero-note{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:20px;font-size:13px;line-height:1.6;color:var(--muted)}.hero-note b{display:block;color:var(--ink);font:700 11px/1.5 var(--mono);text-transform:uppercase;letter-spacing:.1em;margin-bottom:6px}.grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}.card{display:block;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;transition:transform .16s ease,box-shadow .16s ease,border-color .16s ease;color:var(--ink)}.card:hover{transform:translateY(-2px);box-shadow:var(--shadow);border-color:#bfdbfe;text-decoration:none}.cover{height:170px;background:#e8eef7;overflow:hidden}.cover img{width:100%;height:100%;object-fit:cover;display:block}.card-body{padding:18px}.meta{font:11px/1.5 var(--mono);color:var(--muted);text-transform:uppercase;letter-spacing:.05em}.card p{font-size:14px;line-height:1.55;color:var(--muted);margin:9px 0 15px}.tag{display:inline-flex;align-items:center;gap:5px;padding:3px 8px;border:1px solid var(--border);border-radius:999px;font:10px/1.4 var(--mono);text-transform:uppercase;letter-spacing:.06em;color:var(--muted);background:var(--surface-2)}.tag.free,.tag.ok{color:#047857;border-color:#a7f3d0;background:var(--success-soft)}.tag.paid,.tag.danger{color:#b91c1c;border-color:#fecaca;background:var(--danger-soft)}.tag.soon{color:#92400e;border-color:#fde68a;background:var(--warning-soft)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid var(--primary);border-radius:9px;background:var(--primary);color:#fff;padding:11px 17px;font-size:14px;font-weight:700;cursor:pointer;text-decoration:none}.btn:hover{background:var(--primary-dark);border-color:var(--primary-dark);text-decoration:none}.btn.alt{background:var(--surface);color:var(--primary);border-color:#bfdbfe}.btn.alt:hover{background:var(--primary-soft)}.btn.ghost{background:transparent;color:var(--muted);border-color:var(--border)}.btn.ghost:hover{background:var(--surface-2);color:var(--ink)}.btn.danger{background:var(--danger);border-color:var(--danger);color:#fff}.btn.danger:hover{background:#b91c1c;border-color:#b91c1c}.btn.small{padding:7px 11px;font-size:12px}.btn:disabled{opacity:.55;cursor:not-allowed}.bar{height:8px;background:#e8eef7;border-radius:99px;overflow:hidden;margin:7px 0}.bar i{display:block;height:100%;background:var(--primary);border-radius:99px;transition:width .3s ease}.progress-line{display:flex;justify-content:space-between;gap:10px;font:11px/1.4 var(--mono);color:var(--muted)}.panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:24px;box-shadow:var(--shadow)}.panel.flat{box-shadow:none}.auth{max-width:440px;margin:40px auto}.field{display:flex;flex-direction:column;gap:6px;margin-bottom:15px}.field label{font-size:13px;font-weight:700;color:#334155}.field input,.field select,.field textarea{border:1px solid #cbd5e1;border-radius:8px;background:#fff;padding:11px 12px;outline:none;color:var(--ink)}.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--primary);box-shadow:0 0 0 4px #2563eb1f}.notice{font-size:13px;color:var(--muted);line-height:1.6}.error{background:var(--danger-soft);border:1px solid #fecaca;color:#991b1b;padding:10px 12px;border-radius:8px;font-size:13px;margin-bottom:14px}.success{background:var(--success-soft);border:1px solid #a7f3d0;color:#065f46;padding:10px 12px;border-radius:8px;font-size:13px;margin-bottom:14px}.warning{background:var(--warning-soft);border:1px solid #fde68a;color:#92400e;padding:10px 12px;border-radius:8px;font-size:13px;margin-bottom:14px}.course-head{display:grid;grid-template-columns:1.2fr .8fr;gap:32px;align-items:start;border-bottom:1px solid var(--border);padding-bottom:34px}.course-head .cover{height:260px;border-radius:var(--radius);border:1px solid var(--border)}.course-title{font:750 clamp(34px,5vw,58px)/1.02 Inter,ui-sans-serif,system-ui,sans-serif;letter-spacing:-.05em;margin:12px 0 14px}.layout{display:grid;grid-template-columns:300px minmax(0,1fr);gap:30px;margin-top:30px;align-items:start}.syllabus{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:16px;height:max-content;position:sticky;top:78px}.syllabus summary{cursor:pointer;font:700 12px/1.5 Inter,sans-serif;color:var(--ink);padding:8px 0;list-style:none}.syllabus summary::-webkit-details-marker{display:none}.syllabus summary:before{content:"▸";display:inline-block;width:16px;color:var(--muted)}.syllabus details[open] summary:before{content:"▾"}.lesson-link{display:flex;gap:9px;padding:9px 5px;font-size:13px;color:var(--muted);border-bottom:1px solid #f1f5f9;line-height:1.35}.lesson-link:hover{color:var(--primary);text-decoration:none}.lesson-link:last-child{border:0}.lesson-link.done{color:#047857}.lesson-link.current{color:var(--primary);font-weight:700;background:var(--primary-soft);border-radius:6px;padding-left:7px}.lesson-link.locked{opacity:.55;pointer-events:none}.lesson-num{font:10px var(--mono);color:#94a3b8;min-width:18px;padding-top:2px}.lesson{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:clamp(24px,5vw,52px);max-width:880px;box-shadow:var(--shadow)}.lesson h1{font-size:clamp(30px,4vw,48px);letter-spacing:-.04em}.lesson h2{font-size:25px;margin-top:32px}.lesson p,.lesson-content p{font-size:17px;line-height:1.75;color:#334155}.lesson .callout{border-left:3px solid var(--primary);background:var(--primary-soft);padding:14px 16px;margin:22px 0;font-size:14px;line-height:1.6;color:#334155;border-radius:0 8px 8px 0}.lesson-content{font-size:17px;line-height:1.75;color:#334155}.lesson-content h2{font-size:24px;margin:32px 0 10px;color:#0f172a}.lesson-content h3{font-size:19px;margin:24px 0 8px;color:#0f172a}.lesson-content p{margin:11px 0}.lesson-content ul,.lesson-content ol{padding-left:24px;margin:10px 0}.lesson-content li{margin:6px 0}.lesson-content table{width:100%;border-collapse:collapse;margin:18px 0;font-size:14px;background:#fff}.lesson-content th,.lesson-content td{border:1px solid var(--border);padding:9px 10px;text-align:left;vertical-align:top}.lesson-content th{background:var(--surface-2);font-weight:700}.lesson-content code{font:13px/1.5 var(--mono);background:#eef2f7;color:#0f172a;padding:2px 5px;border-radius:4px}.lesson-content pre{background:#0f172a;color:#e2e8f0;padding:16px;border-radius:9px;overflow:auto;font:13px/1.65 var(--mono);margin:16px 0}.lesson-content pre code{background:none;padding:0;color:inherit}.lesson-content blockquote{border-left:3px solid var(--primary);margin:18px 0;padding:8px 16px;background:var(--surface-2);color:var(--muted);border-radius:0 8px 8px 0}.lesson-content a{font-weight:600}.quiz{margin-top:30px;border-top:1px solid var(--border);padding-top:24px}.question{margin:18px 0;background:var(--surface-2);border:1px solid var(--border);border-radius:10px;padding:14px}.question label{display:flex;gap:8px;align-items:flex-start;padding:7px 0;font-size:14px;line-height:1.45;cursor:pointer}.quiz-result{font:700 13px/1.5 var(--mono);margin:12px 0}.foot{border-top:1px solid var(--border);padding:22px 28px;color:var(--muted);font:11px var(--mono);display:flex;justify-content:space-between;max-width:1180px;width:100%;margin:0 auto;background:var(--surface)}.muted{color:var(--muted)}.page-head{display:flex;justify-content:space-between;align-items:flex-end;gap:20px;flex-wrap:wrap;margin-bottom:24px}.page-head h1{font-size:clamp(32px,4vw,48px);margin:0 0 6px}.page-head p{margin:0;color:var(--muted)}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin:22px 0}.stat{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:16px}.stat b{display:block;font:750 28px/1 Inter,sans-serif;color:#0f172a;margin-bottom:5px}.stat span{font-size:12px;color:var(--muted)}.course-row{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:16px 0;border-bottom:1px solid var(--border);flex-wrap:wrap}.course-row:last-child{border:0}.course-row h3{margin:0 0 4px}.course-row p{margin:0;color:var(--muted);font-size:13px}.list{list-style:none;margin:0;padding:0}.list li{padding:10px 0;border-bottom:1px solid #f1f5f9;font-size:14px}.list li:last-child{border:0}.kv{display:grid;grid-template-columns:160px 1fr;gap:10px 18px;font-size:14px}.kv dt{color:var(--muted);font-weight:600}.kv dd{margin:0}.review-card{border:1px solid var(--border);border-radius:12px;padding:22px;background:var(--surface);margin-bottom:16px}.review-card h3{margin-bottom:8px}.review-card .prompt{font-size:17px;line-height:1.6;color:#0f172a;margin:10px 0 16px}.review-card .answer{background:var(--primary-soft);border:1px solid #bfdbfe;border-radius:9px;padding:14px;margin:14px 0;font-size:14px;line-height:1.6;color:#1e3a8a}.review-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:14px}.review-meta{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:10px}.locked-box{background:var(--surface);border:1px dashed #cbd5e1;border-radius:12px;padding:22px;color:var(--muted);text-align:center}.locked-box b{color:var(--ink)}.setting-row{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;padding:16px 0;border-bottom:1px solid var(--border)}.setting-row:last-child{border:0}.setting-row label{font-weight:700;font-size:14px}.setting-row p{margin:4px 0 0;color:var(--muted);font-size:13px;line-height:1.5}.checkbox{display:flex;align-items:center;gap:8px;font-size:14px}.checkbox input{width:18px;height:18px;accent-color:var(--primary)}.session{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;padding:12px 0;border-bottom:1px solid #f1f5f9;font-size:13px}.session:last-child{border:0}.session code{font:11px var(--mono);color:var(--muted)}.tabs{display:flex;gap:20px;border-bottom:1px solid var(--border);margin:20px 0 24px}.tabs a{padding:0 0 10px;color:var(--muted);font-weight:700;font-size:14px}.tabs a.on{color:var(--primary);box-shadow:inset 0 -2px 0 var(--primary)}.notice-box{background:var(--primary-soft);border:1px solid #bfdbfe;border-radius:10px;padding:14px 16px;font-size:14px;line-height:1.6;color:#1e3a8a}.steps{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin:20px 0}.step{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:16px}.step b{display:block;color:var(--primary);font:700 11px var(--mono);margin-bottom:6px}.auth-modal{position:fixed;inset:0;z-index:80;display:none;align-items:center;justify-content:center;padding:20px}.auth-modal.on{display:flex}.auth-backdrop{position:absolute;inset:0;background:#0f172a8c;backdrop-filter:blur(6px)}.auth-dialog{position:relative;width:min(440px,100%);max-height:92vh;overflow:auto;background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:28px;box-shadow:0 30px 80px #0f172a47}.auth-dialog h2{font-size:30px;margin:7px 0 22px}.auth-x{position:absolute;right:16px;top:12px;border:0;background:none;font-size:26px;line-height:1;color:var(--muted);cursor:pointer}.auth-tabs{display:flex;gap:18px;border-bottom:1px solid var(--border);margin-bottom:22px}.auth-tabs button{border:0;background:none;padding:0 0 10px;font-size:13px;font-weight:700;color:var(--muted);cursor:pointer}.auth-tabs button.on{color:var(--primary);border-bottom:2px solid var(--primary)}.auth-dialog .notice{margin-top:18px}.auth-open{overflow:hidden}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}@media(max-width:900px){.hero,.course-head,.layout{grid-template-columns:1fr}.grid{grid-template-columns:1fr 1fr}.syllabus{position:static}.stats{grid-template-columns:1fr 1fr}.steps{grid-template-columns:1fr}.top-inner{padding:12px 20px}.top nav{gap:12px}.nav-user .hide-mobile{display:none}}@media(max-width:640px){.wrap{padding:24px 18px 60px}.grid{grid-template-columns:1fr}.top nav{gap:10px;font-size:12px}.top-inner{padding:12px 16px}.brand{font-size:17px}.hero{padding:24px;border-radius:14px}.course-head .cover{height:190px}.lesson{padding:22px 18px}.stats{grid-template-columns:1fr 1fr}.kv{grid-template-columns:1fr}.foot{padding:18px;flex-direction:column;gap:6px}.tabs{gap:12px;overflow:auto}.btn{width:auto}}.nav-badge{display:inline-grid;place-items:center;min-width:18px;height:18px;padding:0 5px;margin-left:4px;border-radius:999px;background:var(--primary);color:#fff;font:700 10px/1 var(--mono);vertical-align:middle}.nav-icon{display:inline-flex;align-items:center}.nav-icon:hover .avatar{border-color:var(--primary);background:#dbeafe}.text-large,.text-large .lesson p,.text-large .lesson-content p,.text-large .lesson-content{font-size:18px}.text-large .lede{font-size:19px}.reduce-motion *{transition:none!important;animation:none!important;scroll-behavior:auto!important}@media(max-width:900px){.top nav .hide-mobile{display:none}.top nav{gap:14px}}@media(max-width:640px){.top nav>a[href="/"]{display:none}}@media(max-width:420px){.top nav>a[href="/repaso"]{display:none}.top nav{gap:8px}.brand{font-size:16px}.top-inner{gap:10px}}.setting-row select{border:1px solid #cbd5e1;border-radius:8px;background:#fff;padding:9px 12px;color:var(--ink);min-width:110px}.setting-row select:focus{border-color:var(--primary);box-shadow:0 0 0 4px #2563eb1f;outline:none}
