:root{--ink:#111;--paper:#fff;--accent:#ff1a75;--accent-ink:#c2005b;--muted:#555;--soft:#d8d8d2;--code-bg:#f6f6f3}*{box-sizing:border-box}html{font-size:16px;-webkit-text-size-adjust:100%}body{margin:0;background:var(--paper);color:var(--ink);font-family:hiragino kaku gothic pron,yu gothic,system-ui,-apple-system,segoe ui,Roboto,Arial,sans-serif;line-height:1.7}a{color:var(--ink);text-decoration:none}a:visited{color:#2f4f4f}a:hover{text-decoration:underline;text-underline-offset:2px}img,iframe,object,embed{max-width:100%}iframe{border:0}.masthead{text-align:center;padding:1.5rem 1rem .9rem;border-top:4px solid var(--ink)}.masthead .logo{margin:.2rem 0 .35rem;line-height:0}.masthead .logo img{display:block;width:min(330px,72vw);height:auto;margin:0 auto}.masthead .logo a:hover{text-decoration:none}.tagline{margin:0;font-size:.75rem;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.sections{display:flex;flex-wrap:wrap;justify-content:center;gap:.35rem 1.5rem;padding:.55rem 1rem;border-top:1px solid var(--ink);border-bottom:3px solid var(--ink);font-size:.76rem;letter-spacing:.07em;text-transform:uppercase}.sections a{color:var(--ink)}.sections a[aria-current=page]{color:var(--accent-ink)}.wrap{display:grid;grid-template-columns:minmax(0,1fr)16rem;gap:3rem;align-items:start;max-width:1040px;margin:0 auto;padding:2.2rem 1.35rem 1rem}.kicker{margin:0 0 .4rem;font-size:.72rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--accent-ink)}.meta{margin:.35rem 0 0;font-size:.72rem;letter-spacing:.05em;text-transform:uppercase;color:var(--muted)}.section-label{margin:2.2rem 0 0;padding-bottom:.3rem;border-bottom:2px solid var(--ink);font-size:.75rem;letter-spacing:.1em;text-transform:uppercase}.page-title{margin:0 0 1rem;font-size:1.7rem;line-height:1.2}.lead{margin-bottom:.5rem}.lead h2{margin:0 0 .5rem;font-size:2rem;line-height:1.12;letter-spacing:-.015em}.lead h2 a{color:var(--ink)}.lead-sub{margin:0 0 .4rem;font-size:1.05rem;line-height:1.5;color:#222}.row{padding:.9rem 0;border-bottom:1px solid var(--soft)}.row h2{margin:0 0 .2rem;font-size:1.18rem;line-height:1.3}.row h2 a{color:var(--ink)}.excerpt{margin:0 0 .3rem;font-size:.92rem;line-height:1.55;color:#333}.more-link{margin:.9rem 0 0;font-size:.85rem}.more-link a{color:var(--accent-ink)}.story h1{margin:0 0 1.2rem;padding-bottom:.8rem;border-bottom:1px solid var(--ink);font-size:2rem;line-height:1.14;letter-spacing:-.015em}.story .lead-sub{font-size:1.08rem;color:#222;padding-bottom:1rem;border-bottom:1px solid var(--ink);margin-bottom:1.4rem}.content{font-size:1.01rem;line-height:1.75}.content p{margin:0 0 1.1rem}.content h2{font-size:1.2rem;margin:2rem 0 .6rem;padding-bottom:.2rem;border-bottom:1px solid var(--soft)}.content h3{font-size:1.05rem;margin:1.6rem 0 .5rem}.content ul,.content ol{margin:0 0 1.1rem;padding-left:1.6rem}.content blockquote{margin:0 0 1.2rem;padding:.2rem 0 .2rem 1rem;border-left:3px solid var(--accent);color:#333}.content hr{border:0;border-top:1px solid var(--soft);margin:2rem 0}.content figure{margin:1.6rem 0}.content figure img{width:100%;height:auto}.content figcaption{font-size:.78rem;color:var(--muted);margin-top:.4rem}.content table{border-collapse:collapse;width:100%;font-size:.9em;margin-bottom:1.1rem}.content th,.content td{border:1px solid var(--soft);padding:.35rem .6rem;text-align:left}.tags{margin:2rem 0 0;display:flex;flex-wrap:wrap;gap:.4rem;font-size:.78rem}.tags a{border:1px solid var(--soft);padding:.1rem .5rem;color:var(--muted)}.post-nav{display:flex;justify-content:space-between;gap:1rem;margin-top:2rem;padding-top:.8rem;border-top:1px solid var(--ink);font-size:.82rem}code,kbd,samp{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.85em}:not(pre)>code{background:var(--code-bg);padding:.1em .3em}pre{border:1px solid var(--soft);background:var(--code-bg);padding:.7rem .9rem;overflow-x:auto;font-size:.8rem;line-height:1.55;margin:0 0 1.1rem}pre code{background:0 0;padding:0}aside{font-size:.82rem}.side{border:1px solid var(--ink);padding:.55rem .8rem .7rem}.side+.side{margin-top:1.25rem}.side .label{margin:0 0 .35rem;font-size:.7rem;letter-spacing:.1em;text-transform:uppercase;font-weight:700}.side p{margin:0 0 .5rem;line-height:1.55}.side ul{list-style:none;margin:0;padding:0;line-height:1.95}.side li::before{content:"●";font-size:.7em;margin-right:.4em;vertical-align:.08em;color:var(--muted)}.side .count{color:var(--muted);font-size:.85em}.side .more{margin:0;font-size:.85rem}.side .more a{color:var(--accent-ink)}.month{display:flow-root;scroll-margin-top:1rem}.month .date{margin:2.2rem 0 .6rem;font-size:.78rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--accent-ink)}.month .box{border:1px solid var(--ink);padding:.5rem .85rem}.cycle{font-size:.72em;font-weight:400;color:var(--muted);margin-left:.35em;letter-spacing:.04em}.term-list{list-style:none;margin:0;padding:0}.term-list li{display:flex;justify-content:space-between;gap:1rem;padding:.55rem 0;border-bottom:1px solid var(--soft)}.term-list .count{color:var(--muted);font-size:.85em}.empty{color:var(--muted)}footer{max-width:1040px;margin:2.5rem auto 0;padding:.9rem 1.35rem 3rem;border-top:1px solid var(--ink);font-size:.72rem;letter-spacing:.04em;color:var(--muted);text-align:center;text-transform:uppercase}footer p{margin:.25rem 0}footer a{color:var(--muted)}footer .fine{text-transform:none;letter-spacing:0}@media(max-width:800px){.wrap{display:flex;flex-direction:column;gap:1.75rem;padding-top:1.5rem}aside{width:100%}.masthead .logo img{width:min(250px,78vw)}.lead h2,.story h1{font-size:1.55rem}.sections{gap:.3rem 1rem;font-size:.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}