:root{--bg:#fbfaf6;--surface:#fff;--ink:#17211d;--muted:#5d6a64;--line:#e3e0d6;--accent:#0f5c4d;--accent-strong:#0a4438;--accent-soft:#e8f2ee;--warn-soft:#fbf1dc;--radius:12px;--serif:"Iowan Old Style", "Palatino Linotype", Palatino, "Book Antiqua", Georgia, serif;--sans:ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Inter, "Helvetica Neue", Arial, sans-serif;--mono:ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--gutter:1.25rem;color-scheme:light}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}body{background:var(--bg);color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased;margin:0;font-size:1.0625rem;line-height:1.6}img,svg{max-width:100%;display:block}a{color:var(--accent);text-underline-offset:3px}a:hover{color:var(--accent-strong)}:focus-visible{outline:3px solid var(--accent);outline-offset:2px;border-radius:4px}.skip{background:var(--ink);color:#fff;z-index:10;padding:.5rem 1rem;position:absolute;top:0;left:-999px}.skip:focus{left:var(--gutter);top:.5rem}h1,h2,h3{font-family:var(--serif);letter-spacing:-.015em;margin:0 0 .5em;font-weight:600;line-height:1.15}h1{letter-spacing:-.025em;font-size:clamp(2.3rem,5.4vw,3.6rem)}h2{font-size:clamp(1.6rem,3vw,2.1rem)}h3{font-size:1.3rem}p{margin:0 0 1em}.wrap{width:min(1080px, 100% - 2 * var(--gutter));margin-inline:auto}.narrow{width:min(700px, 100% - 2 * var(--gutter));margin-inline:auto}main{min-height:60vh}.section{padding-block:clamp(2.5rem,6vw,4.5rem)}.section+.section{border-top:1px solid var(--line)}.eyebrow{letter-spacing:.12em;text-transform:uppercase;color:var(--accent);margin:0 0 .75rem;font-size:.8rem;font-weight:600}.lede{color:var(--muted);max-width:38em;font-size:1.2rem}.muted{color:var(--muted)}.small{font-size:.9rem}.site-header{border-bottom:1px solid var(--line);background:var(--bg)}.site-header .wrap{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem 1.5rem;padding-block:.9rem;display:flex}.brand{font-family:var(--serif);color:var(--ink);letter-spacing:-.01em;align-items:center;gap:.6rem;font-size:1.25rem;font-weight:700;text-decoration:none;display:inline-flex}.brand:hover{color:var(--accent)}.brand svg{width:28px;height:28px}.brand img{width:42px;max-width:none;height:42px;box-shadow:0 0 0 1px var(--line), 0 1px 3px #00000014;border-radius:50%}.nav{flex-wrap:wrap;gap:.25rem 1.25rem;display:flex}.nav a{color:var(--muted);border-bottom:2px solid #0000;padding:.25rem 0;font-size:.98rem;text-decoration:none}.nav a:hover{color:var(--ink)}.nav a[aria-current=page]{color:var(--ink);border-bottom-color:var(--accent)}@media (width<=480px){.nav{gap:.25rem .8rem}.nav a{font-size:.9rem}}.site-footer{border-top:1px solid var(--line);color:var(--muted);padding-block:2.5rem;font-size:.95rem}.site-footer .wrap{flex-wrap:wrap;justify-content:space-between;gap:1rem 2rem;display:flex}.site-footer a{color:var(--muted)}.footer-links{flex-wrap:wrap;gap:.25rem 1.25rem;display:flex}.btn{background:var(--accent);color:#fff;border:1px solid var(--accent);cursor:pointer;border-radius:999px;padding:.7rem 1.2rem;font-family:inherit;font-size:.98rem;font-weight:600;text-decoration:none;display:inline-block}.btn:hover{background:var(--accent-strong);color:#fff}.btn.ghost{color:var(--accent);background:0 0}.btn.ghost:hover{background:var(--accent-soft);color:var(--accent-strong)}.btn-row{flex-wrap:wrap;gap:.75rem;margin-top:1.5rem;display:flex}.grid{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:1rem;display:grid}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);color:inherit;padding:1.25rem 1.35rem;text-decoration:none;transition:border-color .15s,transform .15s;display:block}a.card:hover{border-color:var(--accent);color:inherit;transform:translateY(-2px)}.card h3{margin-bottom:.35rem}.card p{color:var(--muted);margin:0;font-size:.98rem}.card .go{color:var(--accent);margin-top:.85rem;font-size:.95rem;font-weight:600;display:inline-block}.chip{background:var(--accent-soft);color:var(--accent-strong);letter-spacing:.02em;border-radius:999px;padding:.15rem .6rem;font-size:.75rem;font-weight:600;display:inline-block}.hero{padding-block:clamp(2.5rem,6vw,5rem)}.hero-grid{grid-template-columns:1.05fr 1fr;align-items:center;gap:2.5rem;display:grid}.loop-panel{gap:1.25rem;display:grid}.loop-svg{width:min(420px,100%);margin-inline:auto;overflow:visible}.loop-track{fill:none;stroke:var(--line);stroke-width:2px}.loop-node{cursor:pointer}.loop-node circle{fill:var(--surface);stroke:var(--line);stroke-width:2px;transition:fill .3s,stroke .3s}.loop-node text{font-family:var(--sans);fill:var(--muted);text-anchor:middle;dominant-baseline:central;pointer-events:none;font-size:17px;font-weight:700;transition:fill .3s}.loop-node.is-active circle{fill:var(--accent);stroke:var(--accent)}.loop-node.is-active text{fill:#fff}.loop-dot{fill:var(--accent)}.loop-halo{fill:var(--accent);opacity:.16}.loop-rotor{transform-box:view-box;transform-origin:210px 210px}.loop-trail circle{fill:var(--accent)}.loop-center-kicker{font-family:var(--sans);letter-spacing:.12em;text-transform:uppercase;fill:var(--muted);text-anchor:middle;font-size:12px}.loop-center-name{font-family:var(--serif);fill:var(--ink);text-anchor:middle;font-size:22px;font-weight:600}.stage-caption{text-align:center;min-height:4.6em;color:var(--muted);max-width:30em;margin-inline:auto;font-size:.98rem;transition:opacity .5s}.stage-list{grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:.35rem .75rem;margin:0;padding:0;list-style:none;display:grid}.stage-list button{text-align:left;width:100%;font:inherit;color:var(--muted);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:8px;align-items:baseline;gap:.55rem;padding:.4rem .6rem;font-size:.95rem;display:flex}.stage-list button .n{color:var(--accent);min-width:1.1em;font-weight:700}.stage-list button:hover{background:var(--accent-soft);color:var(--ink)}.stage-list button[aria-current=true]{background:var(--accent-soft);border-color:var(--accent);color:var(--ink)}.loop-center-kicker,.loop-center-name{transition:opacity .5s}.in-transit .stage-caption,.in-transit .loop-center-kicker,.in-transit .loop-center-name{opacity:.25}@media (width<=860px){.hero-grid{grid-template-columns:1fr}}@media (prefers-reduced-motion:reduce){.loop-node circle,.loop-node text,.stage-caption{transition:none}html{scroll-behavior:auto}}.post-list{margin:0;padding:0;list-style:none}.post-list li{border-bottom:1px solid var(--line);padding:1.25rem 0}.post-list li:first-child{border-top:1px solid var(--line)}.post-list a.title{font-family:var(--serif);color:var(--ink);font-size:1.4rem;font-weight:600;line-height:1.25;text-decoration:none}.post-list a.title:hover{color:var(--accent)}.post-list .meta{color:var(--muted);flex-wrap:wrap;align-items:center;gap:.5rem .9rem;margin-bottom:.4rem;font-size:.88rem;display:flex}.post-list p{color:var(--muted);margin:.35rem 0 0}.empty{border:1px dashed var(--line);border-radius:var(--radius);color:var(--muted);background:var(--surface);padding:1.5rem}.prose{font-size:1.1rem;line-height:1.7}.prose h2{margin-top:2em}.prose h3{margin-top:1.6em}.prose ul,.prose ol{margin:0 0 1.2em;padding-left:1.3em}.prose li{margin-bottom:.4em}.prose img{border-radius:10px;height:auto;margin:1.5em 0}.prose blockquote{border-left:3px solid var(--accent);color:var(--muted);margin:1.5em 0;padding:.25em 1.25em}.prose code{font-family:var(--mono);background:var(--accent-soft);border-radius:5px;padding:.1em .4em;font-size:.9em}.prose pre{background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:1rem 1.2rem;overflow-x:auto}.prose pre code{background:0 0;padding:0}.prose table,.table{border-collapse:collapse;width:100%;margin:1.5em 0;font-size:.97rem;display:block;overflow-x:auto}.prose th,.prose td,.table th,.table td{text-align:left;border-bottom:1px solid var(--line);vertical-align:top;padding:.6rem .8rem}.prose th,.table th{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-size:.8rem}.post-head{padding-top:clamp(2rem,5vw,3.5rem)}.post-head .meta{color:var(--muted);flex-wrap:wrap;align-items:center;gap:.5rem 1rem;font-size:.92rem;display:flex}.series-box{background:var(--accent-soft);border-radius:var(--radius);margin-top:2.5rem;padding:1rem 1.25rem}.series-box ol{margin:.5rem 0 0;padding-left:1.2em}.calc{grid-template-columns:1.1fr 1fr;align-items:start;gap:1.5rem;display:grid}@media (width<=860px){.calc{grid-template-columns:1fr}}.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:1.35rem}.field{margin-bottom:1rem}.field label{margin-bottom:.3rem;font-size:.95rem;font-weight:600;display:block}.field .hint{color:var(--muted);margin-top:.25rem;font-size:.85rem}.field input,.field textarea,.field select{width:100%;font:inherit;color:var(--ink);background:#fff;border:1px solid #cfcbbd;border-radius:8px;padding:.6rem .75rem;font-size:1rem}.field textarea{min-height:9rem;font-family:var(--mono);resize:vertical;font-size:.95rem}.field input:focus,.field textarea:focus,.field select:focus{border-color:var(--accent);outline:3px solid var(--accent-soft)}.result{position:sticky;top:1rem}.result .big{font-family:var(--serif);color:var(--accent);margin:.25rem 0 .4rem;font-size:clamp(2.6rem,6vw,3.6rem);font-weight:600;line-height:1}.result .unit{color:var(--muted);font-size:1.1rem;font-family:var(--sans);margin-left:.25rem;font-weight:500}.result dl{grid-template-columns:auto 1fr;gap:.35rem 1rem;margin:1rem 0 0;font-size:.95rem;display:grid}.result dt{color:var(--muted)}.result dd{text-align:right;font-variant-numeric:tabular-nums;margin:0}.notice{background:var(--warn-soft);border-radius:8px;margin-top:1rem;padding:.65rem .85rem;font-size:.92rem}.formula{font-family:var(--mono);background:var(--accent-soft);white-space:pre-wrap;border-radius:10px;padding:.85rem 1rem;font-size:.95rem;overflow-x:auto}.tabs{background:var(--accent-soft);border-radius:999px;gap:.25rem;margin-bottom:1.25rem;padding:.25rem;display:inline-flex}.tabs button{font:inherit;cursor:pointer;color:var(--muted);background:0 0;border:0;border-radius:999px;padding:.4rem 1rem;font-size:.92rem}.tabs button[aria-pressed=true]{background:var(--accent);color:#fff}.gloss-tools{flex-wrap:wrap;align-items:center;gap:1rem;margin-bottom:1.5rem;display:flex}.gloss-tools input{font:inherit;background:#fff;border:1px solid #cfcbbd;border-radius:999px;flex:260px;padding:.65rem .85rem}.az{flex-wrap:wrap;gap:.25rem;display:flex}.az a{border-radius:6px;padding:.15rem .5rem;font-size:.9rem;font-weight:600;text-decoration:none}.az a:hover{background:var(--accent-soft)}.gloss-letter{font-family:var(--serif);color:var(--accent);border-bottom:1px solid var(--line);margin:2rem 0 .5rem;font-size:1.6rem}.term{padding:1rem 0;scroll-margin-top:1rem}.term h3{margin-bottom:.2rem;font-size:1.2rem}.term .aka{color:var(--muted);font-size:.9rem;font-weight:400;font-family:var(--sans)}.term p{margin:0 0 .4rem}.term .rel{font-size:.92rem}.social-list{flex-wrap:wrap;gap:.5rem;display:flex}.social-list a{border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:999px;align-items:center;gap:.45rem;padding:.4rem .85rem;font-size:.92rem;text-decoration:none;display:inline-flex}.social-list a span{color:var(--muted)}.social-list a:hover{border-color:var(--accent);color:var(--ink)}.site-footer .social-list a{color:var(--ink)}.social-icon{width:1.05em;height:1.05em;color:var(--accent);flex:none}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.social-list a span:not(.sr-only){color:var(--ink)}
