:root{--ink:#14213d;--ink-soft:#46506b;--bg:#fff;--panel:#f5f7fb;--line:#e3e8f1;--accent:#14213d;--radius:16px;--max:1080px;--font-body:system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-head:"Nunito", var(--font-body);--font-code:ui-monospace, "SF Mono", Menlo, Consolas, monospace}*,:before,:after{box-sizing:border-box}body{background:var(--bg);color:var(--ink);font-family:var(--font-body);margin:0;font-size:1.05rem;line-height:1.65}h1,h2,h3{font-family:var(--font-head);font-weight:800;line-height:1.15}h1{margin:0 0 .5em;font-size:clamp(2.2rem,5vw,3.4rem)}h2{margin:2em 0 .6em;font-size:clamp(1.5rem,3vw,2rem)}a{color:var(--ink);text-underline-offset:3px;text-decoration-thickness:2px}a:focus-visible,button:focus-visible,input:focus-visible{outline-offset:3px;outline:3px solid #3a6df0}.wrap{max-width:var(--max);margin:0 auto;padding:0 20px}.site-header{border-bottom:1px solid var(--line)}.site-header .wrap{justify-content:space-between;align-items:center;gap:16px;min-height:64px;display:flex}.brand{font-family:var(--font-head);font-size:1.25rem;font-weight:800;text-decoration:none}.site-nav{gap:8px;display:flex}.site-nav a{border-radius:999px;align-items:center;min-height:44px;padding:10px 14px;font-weight:600;text-decoration:none;display:inline-flex}.site-nav a:hover{background:var(--panel)}.site-footer{border-top:1px solid var(--line);color:var(--ink-soft);margin-top:80px;padding:32px 0}.hero{padding:64px 0 32px}.hero p.lead{color:var(--ink-soft);max-width:36em;font-size:1.25rem}.button{background:var(--ink);color:#fff;border-radius:999px;justify-content:center;align-items:center;min-height:48px;padding:0 24px;font-weight:700;text-decoration:none;transition:transform .15s;display:inline-flex}.button:hover{transform:translateY(-2px)}.button.secondary{background:var(--panel);color:var(--ink)}.tiles{grid-template-columns:repeat(3,1fr);gap:16px;margin:24px 0;padding:0;list-style:none;display:grid}.tiles>li{display:flex}.tile{border-radius:var(--radius);min-height:150px;color:var(--ink);flex-direction:column;flex:1;gap:6px;padding:18px;text-decoration:none;transition:transform .15s,box-shadow .15s;display:flex;position:relative}.tile:hover{transform:translateY(-4px);box-shadow:0 10px 24px #14213d26}.tile .num{font-family:var(--font-head);font-size:2rem;font-weight:800}.tile .title{font-weight:800;font-family:var(--font-head)}.tile .summary{font-size:.92rem}.tile.done:after{content:"✓";background:var(--ink);color:#fff;border-radius:50%;place-items:center;width:28px;height:28px;font-weight:800;display:grid;position:absolute;top:12px;right:14px}.progress{margin:24px 0}.progress-label{margin-bottom:6px;font-weight:700}.progress-track{background:var(--line);border-radius:999px;height:10px;overflow:hidden}.progress-fill{background:var(--ink);height:100%;transition:width .3s}.lesson{max-width:46rem;margin:0 auto}.lesson pre{color:#eaf0ff;font-family:var(--font-code);background:#0f1b33;border-radius:12px;padding:16px;font-size:.92rem;line-height:1.5;position:relative;overflow-x:auto}.lesson code{font-family:var(--font-code)}.lesson :not(pre)>code{background:var(--panel);border-radius:6px;padding:.1em .35em}.copy-btn{color:#fff;min-height:32px;font:inherit;cursor:pointer;background:#fff2;border:0;border-radius:8px;padding:0 12px;font-size:.8rem;position:absolute;top:8px;right:8px}.copy-btn:hover{background:#fff4}.lesson-nav{flex-wrap:wrap;justify-content:space-between;gap:12px;margin-top:40px;display:flex}.mark-done{cursor:pointer;align-items:center;gap:10px;min-height:44px;margin-top:32px;font-weight:700;display:flex}.mark-done input{width:24px;height:24px;accent-color:var(--ink)}.live-strip{border-radius:var(--radius);background:var(--panel);flex-wrap:wrap;align-items:center;gap:16px;padding:20px;display:flex}@media (width<=900px){.tiles{grid-template-columns:repeat(2,1fr)}}@media (width<=640px){.tiles{grid-template-columns:1fr}.site-header .wrap{flex-wrap:wrap;padding-top:8px;padding-bottom:8px}.hero{padding-top:40px}}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}.tile:hover,.button:hover{transform:none}}
