:root{--ink:#1c1914;--muted:#5d564c;--paper:#f4efe6;--panel:#fffaf2;--line:#d8cfc0;--accent:#1f5f5a;--accent-soft:#dceae6;--gold:#9a7040;--ours:#edf4f2;--shadow:0 18px 40px #28201214}*{box-sizing:border-box}html{scroll-behavior:smooth}body{color:var(--ink);background:radial-gradient(1200px 500px at 10% -10%, #fff8ea 0%, transparent 50%), var(--paper);margin:0;font-family:"Source Serif 4",Noto Serif SC,serif;font-size:1.05rem;line-height:1.75}.home-nav{flex-wrap:wrap;gap:.55rem;margin:0 0 2rem;display:flex}.home-nav a{color:#0056b3;background:#e3f2fd;border:2px solid #0056b3;border-radius:5px;padding:.45rem .75rem;font-family:IBM Plex Sans,sans-serif;font-size:.92rem;font-weight:600;text-decoration:none}.home-nav a.is-current,.home-nav a:hover{color:#004085;background:#d1ecf1}.page{width:min(760px,100% - 2rem);margin:0 auto;padding:3.5rem 0 5rem}.page.article{width:min(860px,100% - 2rem)}.kicker,.note-meta,.crumb,.step-num,.byline,.links,.fineprint,.plane-legend,nav{font-family:IBM Plex Sans,sans-serif}.masthead h1,.hero h1{font-optical-sizing:auto;letter-spacing:-.03em;font-family:Fraunces,Noto Serif SC,serif;font-weight:640;line-height:1.1}.masthead h1{margin:.2rem 0 1rem;font-size:clamp(3rem,8vw,5.2rem)}.hero h1{margin:.15rem 0 .7rem;font-size:clamp(2.8rem,7vw,4.6rem)}.kicker{color:var(--gold);letter-spacing:.16em;text-transform:uppercase;margin:0;font-size:.78rem;font-weight:600}.lede{color:var(--muted);font-size:1.2rem}.lede strong{color:var(--ink);font-weight:600}.note-list{gap:1rem;margin:2.5rem 0;display:grid}.note-card,.how,.plane-card,.steps article{background:var(--panel);border:1px solid var(--line);box-shadow:var(--shadow)}.note-card{padding:1.4rem 1.5rem 1.5rem}.note-card h2,.how h2,.article h2{letter-spacing:-.02em;font-family:Fraunces,Noto Serif SC,serif;font-weight:520}.note-card h2{margin:.2rem 0 .6rem;font-size:2rem}.note-card h2 a,.text-link,.links a,.crumb a,footer a{color:var(--accent);text-decoration:none}.note-card h2 a:hover,.text-link:hover,.links a:hover,.crumb a:hover{text-decoration:underline}.note-meta{color:var(--gold);letter-spacing:.04em;margin:0;font-size:.8rem}.text-link{font-family:IBM Plex Sans,sans-serif;font-weight:500}.how{padding:1.4rem 1.5rem}.how ol{padding-left:1.2rem}.how code{background:var(--accent-soft);padding:.1rem .35rem;font-size:.92em}.fineprint{color:var(--muted);font-size:.88rem;line-height:1.6}.crumb{color:var(--muted);gap:.5rem;margin-bottom:2rem;font-size:.88rem;display:flex}.subtitle{color:var(--muted);margin:0;font-size:1.15rem}.byline{color:var(--muted);font-size:.92rem}.links{flex-wrap:wrap;gap:.9rem;font-size:.92rem;font-weight:500;display:flex}.steps{grid-template-columns:repeat(3,1fr);gap:.9rem;display:grid}.steps article{padding:1rem 1rem 1.15rem}.step-num{color:var(--gold);letter-spacing:.12em;margin:0;font-size:.75rem}.steps h3,.article h3{margin:.25rem 0 .5rem;font-family:Fraunces,Noto Serif SC,serif}.equation{padding:.4rem 0 .8rem;overflow-x:auto}.split{grid-template-columns:1.1fr .9fr;align-items:start;gap:1.5rem;display:grid}.plane-card{padding:1rem 1rem .8rem;position:sticky;top:1rem}.plane-card figcaption,.plane-legend{color:var(--muted);margin:0;font-size:.82rem}#complex-plane{width:100%;height:auto;margin:.4rem 0;display:block}.table-wrap{border:1px solid var(--line);background:var(--panel);overflow-x:auto}table{border-collapse:collapse;width:100%;font-family:IBM Plex Sans,sans-serif;font-size:.92rem}th,td{text-align:left;border-bottom:1px solid var(--line);padding:.7rem .8rem}th{background:#efe7d8;font-weight:600}tr.ours{background:var(--ours);font-weight:500}.citation{color:#f4efe6;background:#1c1914;padding:1rem 1.1rem;font-size:.86rem;line-height:1.55;overflow-x:auto}footer{color:var(--muted);margin-top:2.5rem;font-size:.95rem}.lock-card{background:var(--panel);border:1px solid var(--line);box-shadow:var(--shadow);padding:1.6rem 1.5rem 1.5rem}.lock-card h1{margin:.3rem 0 .7rem;font-family:Fraunces,Noto Serif SC,serif;font-size:2.2rem}.lock-card label,.lock-card button{font-family:IBM Plex Sans,sans-serif}.lock-card label{margin:1rem 0 .35rem;font-weight:500;display:block}.lock-card input{border:1px solid var(--line);width:100%;font:inherit;background:#fff;padding:.7rem .75rem}.lock-card button{background:var(--accent);color:var(--paper);cursor:pointer;border:0;margin-top:1rem;padding:.7rem 1rem;font-weight:600}.lock-error{color:#7a2e1f;font-family:IBM Plex Sans,sans-serif}@media (width<=820px){.steps,.split{grid-template-columns:1fr}.plane-card{position:static}}
