@import url("https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,300;0,400;0,500;0,600;1,300;1,400;1,500&family=Crimson+Pro:ital,wght@0,300;0,400;0,500;1,300;1,400&family=JetBrains+Mono:wght@300;400&display=swap");:root{--paper:#f4efe6;--paper-2:#ede7da;--paper-3:#e5ddd0;--paper-4:#ddd4c4;--ink:#1c1916;--ink-2:#3a3530;--ink-3:#6b6259;--ink-4:#9b9085;--charcoal:#1e1c18;--amber:#a8722a;--amber-2:#c9935a;--amber-3:#e8c898;--amber-4:#f2e4c8;--rule:#d6ccbf;--rule-2:#c8bdaf;--font-display:"Cormorant Garamond",Georgia,serif;--font-body:"Crimson Pro",Georgia,serif;--font-mono:"JetBrains Mono","Courier New",monospace;--r:2px;--r2:4px;--ease:cubic-bezier(0.16,1,0.3,1)}*,:after,:before{box-sizing:border-box;margin:0;padding:0}html{font-size:17px;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}body{background-color:var(--paper);color:var(--ink);font-family:var(--font-body);font-weight:300;line-height:1.7;min-height:100vh;-webkit-overflow-scrolling:touch}h1,h2,h3,h4{font-family:var(--font-display);font-weight:400;line-height:1.15;letter-spacing:-.01em}a{color:var(--amber);text-decoration:none;transition:color .18s}a:hover{color:var(--ink)}code,pre{font-family:var(--font-mono);font-size:.82em}pre{background:var(--paper-2);border-left:2px solid var(--amber-2);padding:1.2rem 1.5rem;overflow-x:auto;border-radius:var(--r);line-height:1.6}code:not(pre code),pre{white-space:pre-wrap;word-break:break-word}code:not(pre code){background:var(--amber-4);padding:.1em .4em;border-radius:2px;color:var(--amber);overflow-wrap:break-word}blockquote{border-left:2px solid var(--amber-2);padding:.2rem 0 .2rem 1.2rem;color:var(--ink-3);font-style:italic}.prose{line-height:1.75}.prose h1{font-size:2.2rem;margin-bottom:1.4rem;padding-bottom:.6rem}.prose h1,.prose h2{border-bottom:1px solid var(--rule)}.prose h2{font-size:1.65rem;margin:2.8rem 0 .9rem;padding-bottom:.4rem}.prose h3{font-size:1.25rem;margin:2rem 0 .5rem;color:var(--ink-2)}.prose h4{font-size:1rem;margin:1.5rem 0 .4rem;font-family:var(--font-body);font-weight:500;letter-spacing:.02em;color:var(--ink-3);text-transform:uppercase;font-size:.82rem}.prose ol,.prose p,.prose ul{margin-bottom:1.1rem}.prose ol,.prose ul{padding-left:1.6rem}.prose li{margin-bottom:.3rem}.prose strong{font-weight:500;color:var(--ink)}.prose em{color:var(--ink-2)}.prose img{max-width:100%;border-radius:var(--r2);margin:1.5rem 0}.prose hr{border:none;border-top:1px solid var(--rule);margin:2.5rem 0}.prose a{color:var(--amber);border-bottom:1px solid var(--amber-3);transition:border-color .15s}.prose a:hover{border-bottom-color:var(--amber)}.prose table{width:100%;border-collapse:collapse;margin:1.8rem 0;font-size:.9rem}.prose thead tr{background:var(--charcoal)}.prose th{color:var(--paper);font-family:var(--font-display);font-size:.9rem;font-weight:500;padding:.65rem 1rem;text-align:left}.prose td{padding:.6rem 1rem;border-bottom:1px solid var(--rule);color:var(--ink-2)}.prose tr:nth-child(2n) td{background:var(--paper-2)}.prose tr:hover td{background:var(--amber-4)}.nav{position:-webkit-sticky;position:sticky;top:0;z-index:200;background:#1e1c18;border-bottom:1px solid #2c2a26}.nav-inner{max-width:1000px;margin:0 auto;padding:0 2rem;height:56px;justify-content:space-between;gap:1.5rem}.nav-brand,.nav-inner{display:flex;align-items:center}.nav-brand{gap:.65rem;text-decoration:none;color:inherit;flex-shrink:0}.nav-badge{font-family:var(--font-mono);font-size:.7rem;font-weight:400;letter-spacing:.1em;color:var(--amber-2);background:rgba(200,147,90,.14);border:1px solid rgba(200,147,90,.25);padding:.18em .55em;border-radius:var(--r)}.nav-title{font-family:var(--font-display);font-size:1rem;font-weight:400;color:#e8e2d8;letter-spacing:.01em}.nav-sep{color:#3a3830;font-size:.9rem}.nav-links{display:flex;align-items:center;gap:1.8rem}.nav-link{font-family:var(--font-body);font-size:.88rem;font-weight:300;color:#b5ada2;text-decoration:none;letter-spacing:.02em;transition:color .18s}.nav-link:hover{color:var(--amber-2)}.nav-burger{display:none;flex-direction:column;gap:5px;background:none;border:none;cursor:pointer;padding:5px}.bar{display:block;width:20px;height:1.5px;background:#b5ada2;transition:transform .22s,opacity .22s;transform-origin:center}.bar-t.open{transform:translateY(6.5px) rotate(45deg)}.bar-m.open{opacity:0}.bar-b.open{transform:translateY(-6.5px) rotate(-45deg)}.nav-mobile{max-height:0;overflow:hidden;transition:max-height .3s;background:#1a1916;border-top:1px solid #282522}.nav-mobile.open{max-height:300px}.nav-mobile-link{display:block;padding:.85rem 2rem;font-family:var(--font-body);font-size:.95rem;color:#b5ada2;text-decoration:none;border-bottom:1px solid #242220;transition:color .15s}.nav-mobile-link:hover{color:var(--amber-2)}.clone-block{display:flex;align-items:center;background:var(--charcoal);border-radius:var(--r);overflow:hidden;max-width:520px;border:1px solid #303030}.clone-command{flex:1 1;font-size:.8rem;color:var(--amber-2);padding:.75rem 1.1rem;overflow:hidden;text-overflow:ellipsis;background:transparent;letter-spacing:.02em}.clone-btn,.clone-command{font-family:var(--font-mono);white-space:nowrap}.clone-btn{display:flex;align-items:center;gap:.35rem;padding:.75rem 1rem;background:none;border:none;border-left:1px solid #303030;color:#888;font-size:.7rem;letter-spacing:.08em;cursor:pointer;transition:color .15s,background .15s;flex-shrink:0}.clone-btn:hover{color:#e8e2d8;background:#2c2a26}.clone-btn.copied{color:#7bad6e}.syllabus-row{display:grid;grid-template-columns:7rem 1fr auto;grid-gap:1rem;gap:1rem;padding:.65rem .75rem;border-bottom:1px solid var(--rule);align-items:center;transition:background .12s}.syllabus-row:hover{background:var(--amber-4)}.week-divider{padding:1.4rem .75rem .5rem;border-bottom:1px solid var(--paper-3)}@media (max-width:860px){.nav-sep,.nav-title{display:none}}@media (max-width:640px){.nav-links{display:none}.nav-burger{display:flex}.hero-decor{display:none}}@media (max-width:680px){.syllabus-row{grid-template-columns:1fr;gap:.25rem;padding:.8rem .75rem}.syllabus-header{display:none!important}}@keyframes fadeUp{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.fu{opacity:0;animation:fadeUp .5s var(--ease) forwards}.d1{animation-delay:.07s}.d2{animation-delay:.14s}.d3{animation-delay:.21s}.d4{animation-delay:.28s}.d5{animation-delay:.35s}.d6{animation-delay:.42s}