:root{--bg: #fbfbfa;--surface: #ffffff;--ink: #1a1a1a;--ink-soft: #555;--ink-faint: #8a8a8a;--line: #e7e6e3;--accent: #2f6f4f;--accent-soft: #eaf3ee;--code-bg: #f6f7f6;--phi-bg: #f3f0fb;--phi-line: #d9cff3;--measure: 70ch;--sidebar: 300px;--header-h: 56px;--space-1: .4rem;--space-2: .8rem;--space-3: 1.4rem;--space-4: 2.2rem;--space-5: 3.4rem;--radius: 10px;--font-sans: ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--font-mono: ui-monospace, "SF Mono", "JetBrains Mono", Menlo, Consolas, monospace}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--font-sans);font-size:17px;line-height:1.7;-webkit-font-smoothing:antialiased}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}.layout{display:grid;grid-template-columns:var(--sidebar) 1fr;min-height:100vh}.scrim{display:none}main{min-width:0}.sidebar{border-right:1px solid var(--line);background:var(--surface);padding:var(--space-3) 0;position:sticky;top:0;align-self:start;height:100vh;overflow-y:auto}.brand{padding:0 var(--space-3) var(--space-3)}.brand a{color:var(--ink);font-weight:700;font-size:.98rem;line-height:1.35;display:block}.brand .sub{color:var(--ink-faint);font-weight:500;font-size:.78rem;margin-top:.2rem}.nav-act{margin:var(--space-3) 0 var(--space-1);padding:0 var(--space-3)}.nav-act span{font-size:.7rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-faint)}.nav-link{display:flex;align-items:center;gap:.5rem;padding:.34rem var(--space-3);color:var(--ink-soft);font-size:.9rem;border-left:2px solid transparent}.nav-link:hover{background:var(--bg);text-decoration:none;color:var(--ink)}.nav-link.active{color:var(--accent);border-left-color:var(--accent);background:var(--accent-soft);font-weight:600}.nav-link .tick{width:16px;height:16px;flex:none;color:var(--accent);opacity:0}.nav-link.done .tick{opacity:1}.nav-link.done .label{color:var(--ink-faint)}.header{position:sticky;top:0;z-index:5;height:var(--header-h);display:flex;align-items:center;justify-content:space-between;padding:0 var(--space-4);background:color-mix(in srgb,var(--surface) 85%,transparent);backdrop-filter:blur(8px);border-bottom:1px solid var(--line)}.progress-wrap{display:flex;align-items:center;gap:.7rem;font-size:.8rem;color:var(--ink-faint)}.progress-bar{width:160px;height:6px;background:var(--line);border-radius:99px;overflow:hidden}.progress-fill{height:100%;width:0;background:var(--accent);transition:width .3s ease}.content{padding:var(--space-5) var(--space-4) var(--space-5)}.prose{max-width:var(--measure);margin:0 auto}.prose h1{font-size:2rem;line-height:1.2;margin:0 0 var(--space-3);letter-spacing:-.01em}.prose h2{font-size:1.3rem;margin:var(--space-5) 0 var(--space-2);padding-top:var(--space-2)}.prose h3{font-size:1.06rem;margin:var(--space-4) 0 var(--space-1)}.prose p,.prose li{color:var(--ink)}.prose ul,.prose ol{padding-left:1.3rem}.prose li{margin:.3rem 0}.prose img{max-width:100%}.eyebrow{color:var(--accent);font-weight:700;font-size:.74rem;letter-spacing:.07em;text-transform:uppercase;margin-bottom:var(--space-2)}.prose :not(pre)>code{font-family:var(--font-mono);font-size:.86em;background:var(--code-bg);padding:.1em .38em;border-radius:5px;border:1px solid var(--line)}.prose pre{background:var(--code-bg);border:1px solid var(--line);border-radius:var(--radius);padding:var(--space-3);overflow-x:auto;font-size:.85rem;position:relative;line-height:1.55}.prose pre code{font-family:var(--font-mono)}.copy-btn{position:absolute;top:8px;right:8px;font-family:var(--font-sans);font-size:.72rem;color:var(--ink-soft);background:var(--surface);border:1px solid var(--line);border-radius:6px;padding:.22rem .5rem;cursor:pointer;opacity:0;transition:opacity .15s}.prose pre:hover .copy-btn{opacity:1}.copy-btn.copied{color:var(--accent);border-color:var(--accent)}.prose blockquote{margin:var(--space-3) 0;padding:var(--space-2) var(--space-3);border-left:3px solid var(--accent);background:var(--accent-soft);border-radius:0 var(--radius) var(--radius) 0;color:var(--ink)}.prose blockquote.phi{border-left-color:var(--phi-line);background:var(--phi-bg)}.prose blockquote p{margin:.3rem 0}.prose table{width:100%;border-collapse:collapse;margin:var(--space-3) 0;font-size:.9rem}.prose th,.prose td{border:1px solid var(--line);padding:.5rem .7rem;text-align:left}.prose th{background:var(--code-bg)}.page-foot{max-width:var(--measure);margin:var(--space-5) auto 0}.mark-done{display:inline-flex;align-items:center;gap:.5rem;background:var(--accent);color:#fff;border:none;border-radius:var(--radius);padding:.6rem 1rem;font-size:.9rem;font-weight:600;cursor:pointer}.mark-done.done{background:var(--surface);color:var(--accent);border:1px solid var(--accent)}.pager{display:flex;justify-content:space-between;gap:var(--space-2);margin-top:var(--space-4);border-top:1px solid var(--line);padding-top:var(--space-3)}.pager a{display:block;max-width:48%}.pager .dir{font-size:.74rem;color:var(--ink-faint);text-transform:uppercase;letter-spacing:.05em}.pager .ttl{font-weight:600}.pager .next{text-align:right;margin-left:auto}.hero{max-width:var(--measure);margin:0 auto;padding:var(--space-5) 0}.hero h1{font-size:2.6rem;line-height:1.1;letter-spacing:-.02em;margin-bottom:var(--space-2)}.hero .lede{font-size:1.15rem;color:var(--ink-soft)}.cta{display:inline-block;margin-top:var(--space-3);background:var(--accent);color:#fff;padding:.7rem 1.3rem;border-radius:var(--radius);font-weight:600}.cta:hover{text-decoration:none;opacity:.92}.acts{display:grid;gap:var(--space-2);margin-top:var(--space-5)}.act-card{border:1px solid var(--line);border-radius:var(--radius);padding:var(--space-3);background:var(--surface)}.act-card h3{margin:0 0 .3rem}.act-card p{margin:0;color:var(--ink-soft);font-size:.92rem}.menu-btn{display:none}@media(max-width:880px){.layout{grid-template-columns:1fr}.sidebar{position:fixed;left:0;top:0;width:86%;max-width:320px;z-index:20;transform:translate(-100%);transition:transform .25s ease;box-shadow:0 0 40px #0000001a}.sidebar.open{transform:translate(0)}.menu-btn{display:inline-flex;background:none;border:1px solid var(--line);border-radius:8px;padding:.3rem .5rem;cursor:pointer}.scrim{display:none;position:fixed;inset:0;background:#0000004d;z-index:15}.scrim.open{display:block}}
