:root{--navy:#150f2c;--band-1:#27357a;--blue:#3551a3;--band-3:#4578bd;--cyan:#5ccbf3;--gold:#e0b035;--bg:#f5f7fc;--fg:#150f2c;--muted:#5b6080;--accent:#3551a3;--num:#94690a;--rule:#d8ddec;--code-bg:#e9edf8;--row-hover:#e9edf8;--max:64rem;--measure:46rem;--font:"Barlow", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--display:"Barlow Condensed", "Arial Narrow", "Roboto Condensed", var(--font);--mono:ui-monospace, "Cascadia Code", "SFMono-Regular", Consolas, "Liberation Mono", monospace}@media(prefers-color-scheme:dark){:root{--bg:#150f2c;--fg:#e8ebf7;--muted:#9aa2c8;--accent:#5ccbf3;--num:#e0b035;--rule:#2d2a58;--code-bg:#0d091f;--row-hover:#1e1842}}*,*::before,*::after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;min-height:100vh;display:flex;flex-direction:column;background:var(--bg);color:var(--fg);font-family:var(--font);font-size:1.125rem;line-height:1.6}main{flex:1;width:100%;padding-top:2.25rem;padding-bottom:4rem}.wrap{max-width:var(--max);margin:0 auto;padding-left:clamp(16px,4vw,40px);padding-right:clamp(16px,4vw,40px)}::selection{background:var(--cyan);color:var(--navy)}a{color:inherit;text-decoration:underline;text-decoration-color:var(--accent);text-decoration-thickness:2px;text-underline-offset:.2em}a:hover{color:var(--accent)}:focus-visible{outline:2px solid var(--gold);outline-offset:3px;border-radius:2px}.masthead{position:relative;overflow:hidden;background:var(--navy);color:#fff;border-bottom:3px solid var(--cyan)}.masthead .wrap{position:relative}.bands{--u:clamp(8px, 1.2vw, 13px);--at:80%;position:absolute;inset:0;background:linear-gradient(162deg,transparent calc(var(--at) - 5 * var(--u)),var(--band-1) calc(var(--at) - 5 * var(--u)) calc(var(--at) - 3 * var(--u)),var(--blue) calc(var(--at) - 3 * var(--u)) calc(var(--at) - 1 * var(--u)),var(--band-3) calc(var(--at) - 1 * var(--u)) calc(var(--at) + 1 * var(--u)),var(--blue) calc(var(--at) + 1 * var(--u)) calc(var(--at) + 3 * var(--u)),var(--band-1) calc(var(--at) + 3 * var(--u)) calc(var(--at) + 5 * var(--u)),transparent calc(var(--at) + 5 * var(--u)))}.masthead-home .bands{--at:86%}.topbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.5rem 2rem;padding:1.1rem 0}.brand{display:flex;align-items:center;gap:.7rem;color:#fff;text-decoration:none}.brand:hover{color:#fff}.brand img{width:auto;height:4rem;margin:-.4rem -.3rem}.masthead-home .brand{visibility:hidden}.wordmark{font-family:var(--display);font-weight:700;font-size:2rem;line-height:1;letter-spacing:.03em;text-transform:uppercase;white-space:nowrap}.wordmark b{font-weight:inherit;color:var(--cyan)}.tabs{display:flex;flex-wrap:wrap;gap:.25rem 1.5rem;margin:0;padding:0;list-style:none}.tabs a{display:inline-block;padding:.3rem 0 .2rem;border-bottom:3px solid transparent;color:#fff;font-family:var(--display);font-weight:600;font-size:1.25rem;letter-spacing:.08em;text-transform:uppercase;text-decoration:none}.tabs a:hover{color:var(--cyan)}.tabs a.active{border-bottom-color:var(--gold)}.tabs .ext{font-size:.75em;margin-left:.25em;color:var(--gold)}.hero{display:flex;align-items:center;gap:clamp(1.25rem,4vw,3rem);padding:clamp(1.5rem,4vw,3rem)0 clamp(2.5rem,6vw,4rem)}.hero-logo{flex:none;width:clamp(9.5rem,28vw,17.5rem);height:auto;margin:-1rem}.brand img,.hero-logo{animation:var(--flicker,neon-on-1)1.5s linear .15s both}@keyframes neon-on-1{0%{opacity:.1}6%{opacity:1}18%{opacity:1}22%{opacity:.36}26%{opacity:1}55%{opacity:1}58%{opacity:.66}61%{opacity:1}100%{opacity:1}}@keyframes neon-on-2{0%{opacity:.13}6%{opacity:1}18%{opacity:1}22%{opacity:.44}28%{opacity:1}35%{opacity:1}39%{opacity:.38}43%{opacity:1}57%{opacity:1}60%{opacity:.61}63%{opacity:1}100%{opacity:1}}@keyframes neon-on-3{0%{opacity:.15}6%{opacity:1}17%{opacity:1}21%{opacity:.29}26%{opacity:1}33%{opacity:1}35%{opacity:.41}38%{opacity:1}100%{opacity:1}}@keyframes neon-on-4{0%{opacity:.12}5%{opacity:1}10%{opacity:1}13%{opacity:.54}17%{opacity:1}23%{opacity:1}26%{opacity:.42}32%{opacity:1}41%{opacity:1}44%{opacity:.44}48%{opacity:1}100%{opacity:1}}@keyframes neon-on-5{0%{opacity:.14}5%{opacity:1}14%{opacity:1}18%{opacity:.29}23%{opacity:1}31%{opacity:1}34%{opacity:.42}39%{opacity:1}49%{opacity:1}52%{opacity:.54}55%{opacity:1}100%{opacity:1}}@keyframes neon-on-6{0%{opacity:.19}6%{opacity:1}14%{opacity:1}17%{opacity:.36}22%{opacity:1}100%{opacity:1}}@keyframes neon-on-7{0%{opacity:.16}3%{opacity:1}14%{opacity:1}17%{opacity:.29}23%{opacity:1}34%{opacity:1}36%{opacity:.49}39%{opacity:1}66%{opacity:1}69%{opacity:.72}72%{opacity:1}100%{opacity:1}}@keyframes neon-on-8{0%{opacity:.19}4%{opacity:1}15%{opacity:1}19%{opacity:.46}23%{opacity:1}32%{opacity:1}36%{opacity:.26}40%{opacity:1}46%{opacity:1}50%{opacity:.53}53%{opacity:1}81%{opacity:1}84%{opacity:.5}87%{opacity:1}100%{opacity:1}}@keyframes neon-on-9{0%{opacity:.15}4%{opacity:1}15%{opacity:1}17%{opacity:.48}22%{opacity:1}30%{opacity:1}33%{opacity:.34}39%{opacity:1}45%{opacity:1}47%{opacity:.3}52%{opacity:1}100%{opacity:1}}@keyframes neon-on-10{0%{opacity:.13}3%{opacity:1}12%{opacity:1}14%{opacity:.53}20%{opacity:1}31%{opacity:1}33%{opacity:.32}36%{opacity:1}41%{opacity:1}45%{opacity:.39}50%{opacity:1}100%{opacity:1}}@keyframes neon-on-11{0%{opacity:.13}3%{opacity:1}12%{opacity:1}15%{opacity:.51}19%{opacity:1}30%{opacity:1}32%{opacity:.36}37%{opacity:1}68%{opacity:1}71%{opacity:.69}74%{opacity:1}100%{opacity:1}}@keyframes neon-on-12{0%{opacity:.19}5%{opacity:1}12%{opacity:1}15%{opacity:.31}18%{opacity:1}63%{opacity:1}66%{opacity:.54}69%{opacity:1}100%{opacity:1}}@keyframes neon-on-13{0%{opacity:.08}5%{opacity:1}11%{opacity:1}14%{opacity:.37}20%{opacity:1}63%{opacity:1}66%{opacity:.56}69%{opacity:1}100%{opacity:1}}@keyframes neon-on-14{0%{opacity:.19}5%{opacity:1}16%{opacity:1}18%{opacity:.4}23%{opacity:1}35%{opacity:1}38%{opacity:.31}41%{opacity:1}51%{opacity:1}54%{opacity:.41}57%{opacity:1}100%{opacity:1}}@keyframes neon-on-15{0%{opacity:.19}6%{opacity:1}12%{opacity:1}15%{opacity:.4}21%{opacity:1}27%{opacity:1}31%{opacity:.42}34%{opacity:1}100%{opacity:1}}@keyframes neon-on-16{0%{opacity:.18}5%{opacity:1}12%{opacity:1}15%{opacity:.34}19%{opacity:1}26%{opacity:1}30%{opacity:.35}33%{opacity:1}40%{opacity:1}44%{opacity:.32}49%{opacity:1}83%{opacity:1}86%{opacity:.6}89%{opacity:1}100%{opacity:1}}@media(prefers-reduced-motion:reduce){.brand img,.hero-logo{animation:none}}.hero .wordmark{margin:0;font-size:clamp(3rem,10vw,5.5rem)}.hero .wordmark::after{content:"";display:block;width:1.1em;height:.09em;margin-top:.22em;background:var(--cyan)}.tagline{max-width:30rem;margin:1rem 0 0;font-size:1.2rem;line-height:1.4;color:#dfe4f6;text-shadow:0 0 12px var(--navy),0 0 4px var(--navy)}@media(max-width:640px){.masthead-home .topbar{justify-content:flex-start}.masthead-home .brand{display:none}.hero{flex-direction:column;align-items:flex-start}}.page-title,.post-header h1{font-family:var(--display);font-weight:700;font-size:clamp(2.2rem,6vw,3.25rem);line-height:1.05;letter-spacing:.01em;margin:0 0 1.5rem}.page-title::after,.post-header h1::after{content:"";display:block;width:3.5rem;height:4px;margin-top:.9rem;background:var(--accent)}.section-label{display:flex;align-items:center;gap:1rem;margin:0;padding:0 .75rem .7rem calc(.75rem + 3px);border-bottom:1px solid var(--rule);font-family:var(--display);font-weight:600;font-size:1.15rem;line-height:1;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}.post-list{margin:0;padding:0;list-style:none}.post-list a{display:grid;grid-template-columns:2.5rem 1fr auto;align-items:baseline;gap:0 1rem;padding:.7rem .75rem;border-bottom:1px solid var(--rule);border-left:3px solid transparent;text-decoration:none}.post-list a:hover{background:var(--row-hover);border-left-color:var(--gold);color:inherit}.post-list a:hover .title{color:var(--accent)}.post-list .num{font-family:var(--display);font-weight:700;font-size:1.35rem;line-height:1;color:var(--num);font-variant-numeric:tabular-nums}.post-list .title{font-weight:500;line-height:1.35}.post-list time{font-family:var(--display);font-weight:500;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);white-space:nowrap}@media(max-width:560px){.post-list a{grid-template-columns:2.25rem 1fr}.post-list time{grid-column:2;font-size:.95rem}}.intro{max-width:var(--measure);margin-bottom:2rem}article{max-width:var(--measure)}.post-header .meta{display:flex;flex-wrap:wrap;gap:0 .9rem;margin:0 0 .5rem;font-family:var(--display);font-weight:600;font-size:1.15rem;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}.post-header .num{color:var(--num)}.content h2,.content h3,.content h4{font-family:var(--display);font-weight:600;line-height:1.15;letter-spacing:.01em;margin:2.25rem 0 .75rem}.content h2{font-size:1.9rem}.content h3{font-size:1.55rem}.content h4{font-size:1.3rem}.content p,.content ul,.content ol,.content blockquote,.content table,.content pre{margin:0 0 1.1rem}.content li{margin:.2rem 0}.content li>ul,.content li>ol{margin:.2rem 0}.content li::marker{color:var(--accent)}.content img{display:block;max-width:100%;height:auto;margin:1.25rem auto;border-radius:6px}.content blockquote{margin-left:0;padding-left:1rem;border-left:3px solid var(--gold);color:var(--muted)}.content hr{border:0;border-top:1px solid var(--rule);margin:2rem 0}.content code{font-family:var(--mono);font-size:.85em;background:var(--code-bg);padding:.1em .3em;border-radius:3px}.content pre{font-family:var(--mono);font-size:.875rem;line-height:1.5;padding:1rem;overflow-x:auto;border-radius:8px;border:1px solid var(--rule);border-left:3px solid var(--accent)}.content pre code{background:0 0;padding:0;font-size:inherit}.content table{border-collapse:collapse;width:100%;display:block;overflow-x:auto}.content th,.content td{border:1px solid var(--rule);padding:.4rem .6rem;text-align:left;vertical-align:top}.content th{background:var(--code-bg);font-family:var(--display);font-size:1.1em;letter-spacing:.04em}.content iframe{max-width:100%;border:0}.back{margin:2.5rem 0 0}.back-top{margin:0 0 1.5rem}.back a,.post-nav .label{font-family:var(--display);font-weight:600;letter-spacing:.08em;text-transform:uppercase}.post-nav{display:grid;grid-template-columns:1fr 1fr;gap:1rem;max-width:var(--measure);margin:3rem 0 0}.post-nav a{display:block;padding:.8rem 1rem;border:2px solid var(--rule);border-radius:10px;text-decoration:none}.post-nav a:hover{border-color:var(--accent);color:inherit}.post-nav a:hover .title{color:var(--accent)}.post-nav .label{display:block;color:var(--num);font-size:1rem}.post-nav .title{font-weight:500;line-height:1.3}.post-nav .newer{grid-column:2;text-align:right}@media(max-width:560px){.post-nav{grid-template-columns:1fr}.post-nav .newer{grid-column:1;text-align:left}}.site-footer{position:relative;overflow:hidden;background:var(--navy);color:#fff;border-top:3px solid var(--cyan)}.site-footer .bands{--at:24%}.site-footer{min-height:7rem}.bg{background-color:#f7f7f7}.chroma{background-color:#f7f7f7;-webkit-text-size-adjust:none}.chroma .err{color:#f6f8fa;background-color:#82071e}.chroma .lnlinks{outline:none;text-decoration:none;color:inherit}.chroma .lntd{vertical-align:top;padding:0;margin:0;border:0}.chroma .lntable{border-spacing:0;padding:0;margin:0;border:0}.chroma .hl{background-color:#dedede}.chroma .lnt{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#7f7f7f}.chroma .ln{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#7f7f7f}.chroma .line{display:flex}.chroma .k{color:#cf222e}.chroma .kc{color:#cf222e}.chroma .kd{color:#cf222e}.chroma .kn{color:#cf222e}.chroma .kp{color:#cf222e}.chroma .kr{color:#cf222e}.chroma .kt{color:#cf222e}.chroma .na{color:#1f2328}.chroma .nc{color:#1f2328}.chroma .no{color:#0550ae}.chroma .nd{color:#0550ae}.chroma .ni{color:#6639ba}.chroma .nl{color:#900;font-weight:700}.chroma .nn{color:#24292e}.chroma .nx{color:#1f2328}.chroma .nt{color:#0550ae}.chroma .nb{color:#6639ba}.chroma .bp{color:#6a737d}.chroma .nv{color:#953800}.chroma .vc{color:#953800}.chroma .vg{color:#953800}.chroma .vi{color:#953800}.chroma .vm{color:#953800}.chroma .nf{color:#6639ba}.chroma .fm{color:#6639ba}.chroma .s{color:#0a3069}.chroma .sa{color:#0a3069}.chroma .sb{color:#0a3069}.chroma .sc{color:#0a3069}.chroma .dl{color:#0a3069}.chroma .sd{color:#0a3069}.chroma .s2{color:#0a3069}.chroma .se{color:#0a3069}.chroma .sh{color:#0a3069}.chroma .si{color:#0a3069}.chroma .sx{color:#0a3069}.chroma .sr{color:#0a3069}.chroma .s1{color:#0a3069}.chroma .ss{color:#032f62}.chroma .m{color:#0550ae}.chroma .mb{color:#0550ae}.chroma .mf{color:#0550ae}.chroma .mh{color:#0550ae}.chroma .mi{color:#0550ae}.chroma .il{color:#0550ae}.chroma .mo{color:#0550ae}.chroma .o{color:#0550ae}.chroma .ow{color:#0550ae}.chroma .or{color:#0550ae}.chroma .p{color:#1f2328}.chroma .c{color:#57606a}.chroma .ch{color:#57606a}.chroma .cm{color:#57606a}.chroma .c1{color:#57606a}.chroma .cs{color:#57606a}.chroma .cp{color:#57606a}.chroma .cpf{color:#57606a}.chroma .gd{color:#82071e;background-color:#ffebe9}.chroma .ge{color:#1f2328}.chroma .gi{color:#116329;background-color:#dafbe1}.chroma .go{color:#1f2328}.chroma .gl{text-decoration:underline}.chroma .w{color:#fff}@media(prefers-color-scheme:dark){.bg{color:#e6edf3;background-color:#0d1117}.chroma{color:#e6edf3;background-color:#0d1117;-webkit-text-size-adjust:none}.chroma .err{color:#f85149}.chroma .lnlinks{outline:none;text-decoration:none;color:inherit}.chroma .lntd{vertical-align:top;padding:0;margin:0;border:0}.chroma .lntable{border-spacing:0;padding:0;margin:0;border:0}.chroma .hl{background-color:#6e7681}.chroma .lnt{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#737679}.chroma .ln{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#6e7681}.chroma .line{display:flex}.chroma .k{color:#ff7b72}.chroma .kc{color:#79c0ff}.chroma .kd{color:#ff7b72}.chroma .kn{color:#ff7b72}.chroma .kp{color:#79c0ff}.chroma .kr{color:#ff7b72}.chroma .kt{color:#ff7b72}.chroma .nc{color:#f0883e;font-weight:700}.chroma .no{color:#79c0ff;font-weight:700}.chroma .nd{color:#d2a8ff;font-weight:700}.chroma .ni{color:#ffa657}.chroma .ne{color:#f0883e;font-weight:700}.chroma .nl{color:#79c0ff;font-weight:700}.chroma .nn{color:#ff7b72}.chroma .nx{color:#e6edf3}.chroma .py{color:#79c0ff}.chroma .nt{color:#7ee787}.chroma .nv{color:#79c0ff}.chroma .vc{color:#79c0ff}.chroma .vg{color:#79c0ff}.chroma .vi{color:#79c0ff}.chroma .vm{color:#79c0ff}.chroma .nf{color:#d2a8ff;font-weight:700}.chroma .fm{color:#d2a8ff;font-weight:700}.chroma .l{color:#a5d6ff}.chroma .ld{color:#79c0ff}.chroma .s{color:#a5d6ff}.chroma .sa{color:#79c0ff}.chroma .sb{color:#a5d6ff}.chroma .sc{color:#a5d6ff}.chroma .dl{color:#79c0ff}.chroma .sd{color:#a5d6ff}.chroma .s2{color:#a5d6ff}.chroma .se{color:#79c0ff}.chroma .sh{color:#79c0ff}.chroma .si{color:#a5d6ff}.chroma .sx{color:#a5d6ff}.chroma .sr{color:#79c0ff}.chroma .s1{color:#a5d6ff}.chroma .ss{color:#a5d6ff}.chroma .m{color:#a5d6ff}.chroma .mb{color:#a5d6ff}.chroma .mf{color:#a5d6ff}.chroma .mh{color:#a5d6ff}.chroma .mi{color:#a5d6ff}.chroma .il{color:#a5d6ff}.chroma .mo{color:#a5d6ff}.chroma .o{color:#ff7b72;font-weight:700}.chroma .ow{color:#ff7b72;font-weight:700}.chroma .or{color:#ff7b72;font-weight:700}.chroma .c{color:#8b949e;font-style:italic}.chroma .ch{color:#8b949e;font-style:italic}.chroma .cm{color:#8b949e;font-style:italic}.chroma .c1{color:#8b949e;font-style:italic}.chroma .cs{color:#8b949e;font-weight:700;font-style:italic}.chroma .cp{color:#8b949e;font-weight:700;font-style:italic}.chroma .cpf{color:#8b949e;font-weight:700;font-style:italic}.chroma .gd{color:#ffa198;background-color:#490202}.chroma .ge{font-style:italic}.chroma .gr{color:#ffa198}.chroma .gh{color:#79c0ff;font-weight:700}.chroma .gi{color:#56d364;background-color:#0f5323}.chroma .go{color:#8b949e}.chroma .gp{color:#8b949e}.chroma .gs{font-weight:700}.chroma .gu{color:#79c0ff}.chroma .gt{color:#ff7b72}.chroma .gl{text-decoration:underline}.chroma .w{color:#6e7681}.chroma .bp,.chroma .na,.chroma .nb,.chroma .p{color:inherit;font-weight:inherit;font-style:inherit}}