:root{--bg:#1c1b1a;--surface:#242321;--ink:#e0ddd5;--muted:#a39f96;--accent:#c4a585;--line:#383632;--font:-apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--serif:Georgia, "Times New Roman", serif;color-scheme:dark;font-family:var(--font);color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased}*{box-sizing:border-box}body{margin:0}html{scroll-padding-top:30px}a{color:inherit;text-decoration:none}button,input{font:inherit;color:inherit}button{cursor:pointer}img{max-width:100%;display:block}h1,h2,h3,p{margin:0}h1,h2,h3{font-weight:400}::selection{color:#fff7ed;background:#605345}:focus-visible{outline:2px solid var(--accent);outline-offset:5px}[hidden]{display:none!important}.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}.skip-link{z-index:10;background:var(--ink);color:var(--bg);padding:14px 20px;position:fixed;top:-100px;left:24px}.skip-link:focus{top:20px}.site-frame{grid-template-columns:180px minmax(0,1fr);align-items:start;gap:100px;width:min(1080px,100% - 96px);margin:92px auto 0;display:grid}.site-sidebar{position:sticky;top:72px}.author-name{font-family:var(--serif);letter-spacing:-.65px;font-size:31px;line-height:1.18;display:inline-block}.author-description{color:var(--muted);margin-top:16px;font-size:12px;line-height:1.8}.main-nav{flex-direction:column;align-items:flex-start;gap:10px;margin-top:39px;display:flex}.main-nav a{color:var(--muted);text-underline-offset:5px;padding:3px 0;font-size:14px;line-height:1.6;text-decoration:underline #0000;transition:color .15s,text-decoration-color .15s}.main-nav a:hover{color:var(--ink)}.main-nav a[aria-current]{color:var(--ink);text-decoration-color:var(--accent)}.sidebar-bottom{flex-direction:column;align-items:flex-start;gap:23px;margin-top:46px;display:flex}.language-switch{align-items:center;gap:9px;font-size:11px;display:flex}.language-switch a{color:var(--muted);padding-block:8px}.language-switch a[aria-current]{color:var(--ink)}.language-switch>span{color:#6c6860}.sidebar-social{color:var(--muted);font-size:12px}.sidebar-social span{margin-left:5px}.sidebar-social:hover{color:var(--ink)}.site-address{color:#878278;font-size:11px}.content-wrap{min-width:0}.shell{width:100%}.text-link{text-underline-offset:4px;align-items:baseline;gap:5px;font-size:13px;line-height:1.8;text-decoration:underline #6d655b;transition:text-decoration-color .15s,color .15s;display:inline-flex}.text-link:hover{color:#f7ebdd;text-decoration-color:var(--accent)}.arrow{vertical-align:middle;flex-shrink:0;width:15px;height:15px}.muted{color:var(--muted)}.home-intro{max-width:650px;padding:0 0 49px}.home-intro h1{font-family:var(--serif);letter-spacing:-1px;margin-bottom:25px;font-size:46px;line-height:1.18}.home-intro>p{color:#cbc6bd;max-width:600px;font-size:17px;line-height:1.85}.home-intro .intro-projects{color:var(--muted);margin-top:14px;font-size:15px}.home-intro .text-link{margin-top:17px}.section-heading{border-bottom:1px solid var(--line);justify-content:space-between;align-items:baseline;gap:20px;padding-bottom:18px;display:flex}.section-heading h2,.section-title{font-family:var(--serif);font-size:25px;line-height:1.4}.section-heading>.text-link{color:var(--muted);font-size:12px;text-decoration:none}.section-heading>.text-link:hover{color:var(--ink)}.post-card{border-bottom:1px solid var(--line);grid-template-columns:64px minmax(0,1fr);column-gap:22px;padding-block:29px;display:grid}.post-date{color:var(--muted);font-variant-numeric:tabular-nums;padding-top:5px;font-size:11px;line-height:1.7}.post-date>span{color:#837e75;margin-top:3px;font-size:10px;display:block}.post-link{grid-template-columns:minmax(0,1fr) 116px;align-items:start;column-gap:26px;display:grid}.post-content{min-width:0}.post-content h3{font-family:var(--serif);letter-spacing:-.4px;text-underline-offset:5px;font-size:25px;line-height:1.25;text-decoration:underline 1px #0000;transition:text-decoration-color .15s}.post-link:hover h3{text-decoration-color:#8d7a66}.post-excerpt{color:var(--muted);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin-top:12px;font-size:13px;line-height:1.8;display:-webkit-box;overflow:hidden}.post-meta{color:#a39a8f;flex-wrap:wrap;align-items:baseline;gap:8px;margin-top:13px;font-size:10px;line-height:1.7;display:flex}.post-image-wrap{aspect-ratio:1.28;background:var(--surface);width:100%;margin-top:4px;overflow:hidden}.post-image{object-fit:cover;width:100%;height:100%}.site-footer{color:#938d83;margin-top:57px;padding-bottom:40px;font-size:11px;line-height:1.7}.site-footer>div{justify-content:space-between;align-items:baseline;gap:20px;display:flex}.site-footer a:hover{color:var(--ink)}.site-footer p{color:#858076;margin-top:10px;font-size:10px}.page-intro{margin-bottom:33px}.page-title{font-family:var(--serif);letter-spacing:-1px;font-size:46px;line-height:1.2}.page-intro p{color:var(--muted);max-width:590px;margin-top:18px;font-size:16px;line-height:1.8}.blog-controls{border-bottom:1px solid var(--line);padding-bottom:20px}.search-box{width:100%;max-width:300px;color:var(--muted);border-bottom:1px solid #57524b;align-items:center;gap:10px;margin-bottom:13px;display:flex}.search-box svg{flex-shrink:0;width:15px}.search-box input{background:0 0;border:none;width:100%;min-width:0;padding:12px 0;font-size:13px}.search-box input::placeholder{color:#9e978c}.results-meta{color:var(--muted);justify-content:space-between;align-items:baseline;margin-top:24px;display:flex}.results-meta h2{font-size:13px}.results-meta>span{font-size:11px}.post-card-large{grid-template-columns:minmax(0,1fr);padding-block:32px 39px}.post-card-large .post-date{margin-bottom:13px;padding:0;font-size:12px}.post-card-large .post-link{grid-template-columns:minmax(0,1fr) 220px;column-gap:32px}.post-card-large h3{letter-spacing:-.5px;font-size:31px;line-height:1.23}.post-card-large .post-excerpt{margin-top:16px;font-size:15px;line-height:1.8;display:block;overflow:visible}.post-card-large .post-image-wrap{aspect-ratio:1.25;margin-top:4px}.post-card-large .post-meta{margin-top:17px;font-size:11px}.read-link{color:#bdb2a4;text-underline-offset:4px;margin-top:17px;font-size:12px;text-decoration:underline #5c5347;display:inline-block}.read-link>span{margin-left:3px;transition:transform .15s;display:inline-block}.post-link:hover .read-link>span{transform:translate(3px)}.empty-state{text-align:left;padding-block:48px}.empty-state h2{font-family:var(--serif);font-size:29px}.empty-state p{color:var(--muted);margin-top:15px;font-size:14px;line-height:1.8}.button-primary{color:var(--ink);background:#35302a;border:1px solid #625447;align-items:center;gap:15px;margin-top:20px;padding:12px 18px;font-size:13px;display:inline-flex}.button-primary:hover{background:#42382f}.article-back{color:var(--muted);margin-bottom:34px;font-size:12px;text-decoration:none}.article-meta{color:var(--muted);flex-wrap:wrap;gap:9px;margin-bottom:17px;font-size:12px;line-height:1.8;display:flex}.article-header h1{font-family:var(--serif);letter-spacing:-.8px;text-wrap:balance;font-size:47px;line-height:1.15}.article-byline{color:var(--muted);flex-wrap:wrap;align-items:center;gap:10px;margin-top:22px;font-size:12px;display:flex}.article-byline a:hover{color:var(--ink)}.article-cover{aspect-ratio:2.05;background:var(--surface);width:100%;margin-block:34px}.article-cover img{object-fit:cover;width:100%;height:100%}.article-text{max-width:660px;margin-inline:auto}.table-of-contents{color:var(--muted);border-bottom:1px solid var(--line);margin-bottom:25px;padding-block:0 18px;font-size:13px}.table-of-contents summary{cursor:pointer;padding-block:8px}.table-of-contents ol{margin-block:10px 0;padding-left:22px}.table-of-contents li{padding:6px 0;line-height:1.7}.table-of-contents a:hover{color:var(--ink);text-decoration:underline}.prose{font-family:var(--serif);color:#d7d1c7;overflow-wrap:anywhere;font-size:21px;line-height:1.85}.prose p{margin:0 0 1.3em}.prose h2{color:var(--ink);letter-spacing:-.3px;margin-block:43px 18px;font-size:30px;line-height:1.3}.prose h3{margin-block:34px 16px;font-size:24px;line-height:1.4}.prose a{color:#d5b998;text-underline-offset:4px;text-decoration:underline}.prose li{margin-bottom:12px}.prose ul,.prose ol{padding-left:25px}.prose blockquote{border-left:1px solid #8a7259;margin:30px 0;padding-left:25px;font-style:italic}.prose code{background:#292622;padding:3px 5px;font-family:monospace;font-size:.8em}.prose pre{background:#24211d;padding:18px;overflow:auto}.article-header+.article-text{margin-top:34px}.prose table{border-collapse:collapse;table-layout:fixed;width:100%;font-family:var(--font);margin:28px 0 34px;font-size:13px;line-height:1.7}.prose th,.prose td{text-align:left;vertical-align:top;border-bottom:1px solid var(--line);padding:14px 12px}.prose th{color:var(--ink);background:#242321;font-weight:500}.prose td{color:#c5c0b7}.prose table code{background:0 0;padding:0;font-size:.92em}.prose figure{margin:34px 0}.prose figure img{border:1px solid var(--line);border-radius:10px;width:100%;height:auto}.prose figcaption{font-family:var(--font);color:var(--muted);margin-top:13px;font-size:12px;line-height:1.7}.prose .flow-diagram{font-family:var(--font);background:#211f25;border:1px solid #45404f;border-radius:16px;padding:25px;font-size:14px;line-height:1.6;overflow:hidden}.flow-heading{justify-content:space-between;align-items:center;gap:12px;margin-bottom:22px;display:flex}.flow-heading>strong{color:#f0ebf7;font-size:16px;font-weight:500}.flow-heading>span{color:#aaa0bb;letter-spacing:.06em;white-space:nowrap;font-size:10px}.flow-request{border-left:2px solid #9a80e5;padding:2px 0 2px 14px}.flow-request>span{color:#aaa0bb;font-size:11px}.prose .flow-request p{color:#eee8f5;margin:4px 0 0;font-size:15px}.flow-auth{background:#2b2733;border-radius:8px;align-items:flex-start;gap:10px;margin:22px 0;padding:13px 14px;display:flex}.flow-auth>svg{stroke:#b9a3ed;stroke-width:1.5px;flex-shrink:0;width:19px;height:19px;margin-top:2px}.flow-auth strong,.flow-response strong{color:#e4dbef;font-size:12px;font-weight:500}.prose .flow-auth p,.prose .flow-response p{color:#b6acbf;margin:3px 0 0;font-size:12px;line-height:1.65}.prose .flow-steps{grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;margin:0;padding:0;list-style:none;display:grid}.prose .flow-steps>li{background:#292530;border:1px solid #4b435a;border-radius:10px;margin:0;padding:15px 12px;position:relative}.flow-steps>li:not(:last-child):after{content:"→";color:#a996ca;text-align:center;width:15px;font-size:14px;position:absolute;top:45%;right:-17px}.flow-step-label{color:#afa1c6;align-items:center;gap:6px;margin-bottom:12px;font-size:10px;line-height:1.5;display:flex}.flow-number{color:#c6b3f0;font-variant-numeric:tabular-nums}.flow-steps li>strong{color:#f2edf8;font-size:14px;font-weight:500;line-height:1.5;display:block}.prose .flow-steps p{color:#b8afc1;margin:7px 0 0;font-size:12px;line-height:1.65}.flow-response{border-top:1px solid #423a4f;gap:10px;margin-top:19px;padding-top:18px;display:flex}.flow-response>svg{stroke:#b7a3dc;stroke-width:1.5px;flex-shrink:0;width:22px;height:22px}.prose .flow-limits{flex-wrap:wrap;gap:6px 15px;margin:18px 0 0;padding:0;list-style:none;display:flex}.prose .flow-limits li{color:#b8c9b8;align-items:center;gap:6px;margin:0;font-size:10px;display:flex}.flow-limits li:before{content:"";background:#99b89b;border-radius:50%;width:4px;height:4px}.prose .flow-diagram figcaption{color:#a89eb5;border-top:1px solid #3c3547;margin-top:18px;padding-top:15px;font-size:11px}@media (width<=600px){.prose .flow-diagram{border-radius:12px;padding:19px}.flow-heading{align-items:flex-start}.flow-heading>strong{font-size:15px}.flow-heading>span{padding-top:4px;font-size:9px}.prose .flow-steps{grid-template-columns:1fr;gap:22px}.prose .flow-steps>li{padding:14px 16px}.flow-step-label{margin-bottom:5px}.flow-steps>li:not(:last-child):after{content:"↓";height:22px;inset:auto auto -23px 25px}.prose .flow-steps p{margin-top:4px}.prose th,.prose td{padding:11px 8px}.prose table{font-size:12px}}.article-end{border-top:1px solid var(--line);justify-content:space-between;gap:20px;margin-top:40px;padding-top:24px;display:flex}.article-end .text-link{color:var(--muted);font-size:12px;text-decoration:none}.related-section{margin-top:62px}.language-landing{max-width:700px;margin:18vh auto;padding:30px}.language-landing h1{font-family:var(--serif);margin-top:30px;font-size:clamp(30px,5vw,50px);line-height:1.35}.hero-actions{flex-wrap:wrap;align-items:baseline;gap:20px;display:flex}.not-found{padding-block:15px 70px}.not-found .eyebrow{color:var(--muted);font-size:12px}.not-found h1{font-family:var(--serif);margin-top:25px;font-size:40px;line-height:1.4}.not-found>p:not(.eyebrow){color:var(--muted);margin-top:20px;font-size:15px;line-height:1.8}@media (width<=1150px){.site-frame{grid-template-columns:155px minmax(0,1fr);column-gap:64px}.author-name{font-size:28px}.post-link{grid-template-columns:minmax(0,1fr) 105px;gap:21px}.post-card-large .post-link{grid-template-columns:minmax(0,1fr) 185px;gap:25px}}@media (width<=900px){.site-frame{grid-template-columns:130px minmax(0,1fr);column-gap:44px;width:calc(100% - 64px);margin-top:58px}.author-name{font-size:26px}.author-description{font-size:11px}.home-intro h1,.page-title{font-size:40px}.home-intro>p{font-size:16px}.home-intro .intro-projects{font-size:14px}.post-card{grid-template-columns:1fr;padding-block:23px}.post-date{gap:6px;margin-bottom:11px;padding:0;display:flex}.post-date>span{font-size:inherit;margin:0;display:inline}.post-content h3{font-size:23px}.post-card-large .post-link{grid-template-columns:minmax(0,1fr) 150px;gap:22px}.post-card-large h3{font-size:27px}.post-card-large .post-excerpt{font-size:14px}.article-header h1{font-size:39px}.prose{font-size:19px}}@media (width<=680px){.site-frame{width:calc(100% - 40px);margin-top:25px;display:block}.site-sidebar{border-bottom:1px solid var(--line);grid-template-columns:minmax(0,1fr) auto;align-items:start;margin-bottom:38px;padding-bottom:19px;display:grid;position:static}.sidebar-identity{min-width:0}.author-name{letter-spacing:-.5px;font-size:24px;line-height:1.2}.desktop-break{display:none}.author-description{margin-top:7px;font-size:10px}.main-nav{flex-direction:row;grid-area:2/1/auto/-1;gap:24px;margin-top:19px}.main-nav a{padding-block:6px;font-size:12px}.sidebar-bottom{margin:-1px 0 0 12px}.sidebar-bottom .sidebar-social,.sidebar-bottom .site-address{display:none}.language-switch{gap:7px;font-size:10px}.home-intro{padding-bottom:36px}.home-intro h1{letter-spacing:-.7px;margin-bottom:18px;font-size:37px}.home-intro>p{font-size:15px;line-height:1.85}.home-intro .intro-projects{font-size:13px;line-height:1.9}.home-intro .text-link{margin-top:14px;font-size:12px}.section-heading{gap:15px;padding-bottom:14px}.section-heading h2{font-size:24px}.section-heading>.text-link{white-space:nowrap;font-size:11px}.post-card{padding-block:24px}.post-link{grid-template-columns:minmax(0,1fr) 90px;gap:18px}.post-content h3{letter-spacing:-.3px;font-size:23px;line-height:1.25}.post-excerpt{margin-top:11px;font-size:12px;line-height:1.85}.post-meta{gap:6px;margin-top:12px;font-size:9px}.post-date{font-size:10px}.post-image-wrap{aspect-ratio:1;margin-top:3px}.page-title{font-size:39px}.page-intro{margin-bottom:24px}.page-intro p{margin-top:15px;font-size:15px}.search-box{max-width:none}.blog-controls{padding-bottom:13px}.results-meta{margin-top:22px}.results-meta h2{font-size:12px}.results-meta>span{font-size:10px}.post-card-large{padding-block:27px 33px}.post-card-large .post-link{flex-direction:column-reverse;gap:19px;display:flex}.post-card-large .post-image-wrap{aspect-ratio:1.75;width:100%;margin:0}.post-card-large h3{letter-spacing:-.35px;font-size:29px}.post-card-large .post-excerpt{margin-top:14px;font-size:15px;line-height:1.85}.post-card-large .post-meta{font-size:10px}.post-card-large .post-date{margin-bottom:15px;font-size:11px}.site-footer{margin-top:38px;padding-bottom:28px;font-size:10px}.site-footer p{font-size:9px}.article-back{margin-bottom:27px;font-size:11px}.article-meta{margin-bottom:14px;font-size:11px}.article-header h1{letter-spacing:-.5px;font-size:36px;line-height:1.16}.article-byline{margin-top:19px;font-size:11px}.article-cover{aspect-ratio:1.5;margin-block:27px}.prose{font-size:19px;line-height:1.8}.prose h2{margin-top:35px;font-size:28px}.table-of-contents{font-size:12px}.article-end{margin-top:28px}.article-end .text-link{font-size:11px}.related-section{margin-top:40px}}@media (width<=370px){.site-frame{width:calc(100% - 32px)}.author-name{font-size:21px}.language-switch{font-size:9px}.home-intro h1{font-size:33px}.post-link{grid-template-columns:minmax(0,1fr) 70px;gap:13px}.post-content h3{font-size:21px}.post-card-large h3{font-size:27px}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}
