/*! tailwindcss v4.3.0 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.invisible{visibility:hidden}.visible{visibility:visible}.absolute{position:absolute}.relative{position:relative}.static{position:static}.block{display:block}.hidden{display:none}.inline{display:inline}.table{display:table}.shrink{flex-shrink:1}.grow{flex-grow:1}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.\[mailto\:sam\@samhuleatt\.com\]{mailto:sam@samhuleatt.com}}:root{--bg:#fff;--ink:#0f1714;--ink-soft:#5b6b62;--rule:#d4ddd6;--rule-soft:#e9ede9;--link:#0d8a5f;--link-bg:#e8f4ee;--link-bg-hover:#d4ebde;--t-user:#0d8a5f;--t-colon:#888;--t-host:#0f1714;--t-tilde:#0d8a5f;--t-dollar:#0d8a5f;--t-cmd:#0d8a5f;--t-cursor:#0d8a5f;--kbd-bg:#e9f0ec;--kbd-border:#c4d3cb;--mono:"Fira Code", ui-monospace, SFMono-Regular, Menlo, monospace;--serif:"Newsreader", Georgia, "Times New Roman", serif}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--bg);color:var(--ink);font-family:var(--mono);-webkit-font-smoothing:antialiased;font-size:14.5px;line-height:1.6}a{color:var(--ink);border-bottom:1px solid #0000;text-decoration:none;transition:border-color .15s,color .15s}a:hover{border-bottom-color:var(--ink)}.wrap{max-width:760px;margin:0 auto;padding:28px 32px 80px}.wrap.narrow{max-width:680px}header.top{justify-content:space-between;align-items:center;padding-bottom:56px;display:flex}header.top .brand{font-family:var(--mono);letter-spacing:.5px;color:var(--ink);border-bottom:none;font-size:14px;font-weight:700}header.top nav{gap:22px;font-size:13.5px;display:flex}header.top nav a{color:var(--ink-soft);border-bottom-color:#0000}header.top nav a:hover{color:var(--ink);border-bottom-color:var(--ink)}header.top nav a.active{color:var(--ink)}.hero h1{font-family:var(--mono);letter-spacing:-.5px;margin:0 0 26px;font-size:28px;font-weight:700;line-height:1.15}.lede-stack{max-width:620px;margin:0 0 36px}.lede-stack .tagline{font-family:var(--mono);color:var(--ink-soft);margin:0 0 18px;font-size:15px;font-weight:500;line-height:1.55}.lede-stack .sub{font-family:var(--mono);color:var(--ink-soft);margin:0 0 6px;font-size:13.5px;line-height:1.7}.lede-stack .sub a{color:var(--link);border-bottom:none}.lede-stack .sub a:hover{text-decoration:underline}.arrows{margin-bottom:48px}.arrows a{font-family:var(--mono);color:var(--link);border-bottom:none;width:fit-content;margin:4px 0;padding:4px 0;font-size:14.5px;display:block}.arrows a:hover{text-decoration:underline}.term-zone{border-left:2px solid var(--link);cursor:text;background:#0d8a5f0d;margin:0 0 56px;padding:20px 16px 20px 14px;transition:background-color .15s}.term-zone:hover{background:#0d8a5f14}.term-hint{font-family:var(--mono);color:var(--ink-soft);flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 32px;font-size:12px;display:flex}.term-hint kbd{font-family:var(--mono);background:var(--bg);border:1px solid var(--kbd-border);color:var(--ink);border-radius:2px;padding:1px 6px;font-size:11.5px}.ps1{font-family:var(--mono);white-space:nowrap;font-size:14px}.ps1 .user{color:var(--t-user);font-weight:700}.ps1 .colon{color:var(--t-colon)}.ps1 .host{color:var(--t-host)}.ps1 .tilde{color:var(--t-tilde)}.ps1 .dollar{color:var(--t-dollar);font-weight:700}.cursor{background:var(--t-cursor);vertical-align:middle;width:7px;height:13px;margin-left:4px;animation:1.1s steps(2,end) infinite blink;display:inline-block}@keyframes blink{50%{opacity:0}}.prompt-input-row{align-items:baseline;gap:8px;display:flex}.prompt-input-row input{font-family:var(--mono);color:var(--ink);caret-color:var(--t-cursor);background:0 0;border:none;outline:none;flex:1;padding:0;font-size:14px;line-height:1.6}.prompt-input-row input::placeholder{color:var(--ink-soft);opacity:.65;font-style:italic}.bio{font-family:var(--mono);color:var(--ink-soft);margin:16px 0 36px;font-size:13.5px;line-height:1.75}.bio p{margin:0 0 14px}.bio p:last-child{margin-bottom:0}.bio a{color:var(--link);border-bottom:1px solid #0d8a5f40}.bio a:hover{border-bottom-color:var(--link)}.writing-section{margin-top:22px}.writing-section .head{font-family:var(--mono);text-transform:uppercase;letter-spacing:1.5px;color:var(--ink-soft);border-bottom:1px solid var(--rule);margin:0 0 18px;padding-bottom:10px;font-size:11.5px}.writing-list{margin:0;padding:0;list-style:none}.writing-list li{border-bottom:1px solid var(--rule-soft);grid-template-columns:110px 1fr;align-items:baseline;gap:24px;padding:12px 0;display:grid}.writing-list li:last-child{border-bottom:none}.writing-list .date{font-family:var(--mono);color:var(--ink-soft);letter-spacing:.5px;font-size:12px}.writing-list .title{font-family:var(--mono);color:var(--ink);font-size:13.5px;line-height:1.45}.writing-list a{color:var(--ink);border-bottom:none}.writing-list a:hover{color:var(--link)}.writing-list .pinned .pin{color:var(--link);font-size:11px}.writing-list .pinned .title a{color:var(--link)}.writing-list .pinned .title a:hover{text-decoration:underline}.writing-section .more{font-family:var(--mono);color:var(--link);border-bottom:1px solid #0d8a5f40;margin-top:22px;font-size:12.5px;display:inline-block}footer.site{border-top:1px solid var(--rule);font-family:var(--mono);color:var(--ink-soft);justify-content:space-between;align-items:center;margin-top:72px;padding-top:22px;font-size:12.5px;display:flex}footer.site .left{flex-wrap:wrap;gap:18px;display:flex}footer.site a{color:var(--ink-soft);border-bottom-color:#0000}footer.site a:hover{color:var(--ink);border-bottom-color:var(--ink)}footer.site .right{color:#9aaaa1;font-size:11.5px}body.term-mode #site{display:none}body.term-mode{overflow:auto}#terminal{background:var(--bg);min-height:100vh;padding:28px 32px 80px;display:none}body.term-mode #terminal{display:block}#terminal .term-wrap{max-width:820px;margin:0 auto}#terminal pre{font-family:var(--mono);color:var(--ink);white-space:pre-wrap;word-wrap:break-word;margin:0;padding:0;font-size:14px;line-height:1.65}#terminal .out{color:#1a1a1a;margin:4px 0 16px;display:block}#terminal .out a{color:var(--link);border-bottom:1px solid #0d8a5f40}#terminal .out a:hover{border-bottom-color:var(--link)}#terminal .out .muted{color:var(--ink-soft)}#terminal .out .k{color:var(--t-cmd)}#terminal .err{color:#b00020;margin:4px 0 16px;display:block}#terminal .cmd{color:var(--t-cmd);font-weight:700}#terminal .input-line{align-items:baseline;gap:8px;margin-top:4px;display:flex}#terminal .input-line input{font-family:var(--mono);color:var(--ink);caret-color:var(--t-cursor);background:0 0;border:none;outline:none;flex:1;padding:0;font-size:14px;line-height:1.65}article .meta{font-family:var(--mono);color:var(--ink-soft);letter-spacing:.5px;margin:0 0 18px;font-size:12px}article .meta a,.post-footer a{border-bottom:1px solid #0000}article h1{font-family:var(--mono);letter-spacing:-.3px;margin:0 0 36px;font-size:26px;font-weight:700;line-height:1.25}article .lede{font-family:var(--serif);color:var(--ink-soft);border-bottom:1px solid var(--rule);margin:0 0 32px;padding-bottom:28px;font-size:18px;font-style:italic;line-height:1.6}.body{font-family:var(--serif);color:var(--ink);font-size:18px;line-height:1.7}.body p{margin:0 0 22px}.body ul,.body ol,.body blockquote,.body .stack p,.body .edges li{font-family:var(--serif)}.body h2{font-family:var(--mono);letter-spacing:-.3px;border-top:1px solid var(--rule);color:var(--ink);margin:64px 0 8px;padding-top:30px;font-size:19px;font-weight:700;line-height:1.3}.body h2:first-child{border-top:none;margin-top:8px;padding-top:0}.body h3{font-family:var(--mono);text-transform:uppercase;letter-spacing:1.5px;color:var(--ink-soft);margin:36px 0 14px;font-size:12px;font-weight:700;line-height:1.4}.body a{color:var(--link);border-bottom:1px solid #0d8a5f40}.body a:hover{border-bottom-color:var(--link)}.body blockquote{border-left:2px solid var(--link);color:var(--ink-soft);margin:28px 0;padding:0 0 0 22px;font-size:14.5px;line-height:1.75}.body blockquote p:last-child{margin-bottom:0}.body ul,.body ol{margin:0 0 22px;padding-left:22px}.body li{margin-bottom:8px}.body code{font-family:var(--mono);background:var(--rule-soft);border-radius:2px;padding:1px 5px;font-size:13px}.body img{border-radius:4px;max-width:100%;height:auto;margin:24px 0}.body hr{border:none;border-top:1px solid var(--rule);margin:44px 0}.body em{font-style:italic}.body strong{color:var(--ink);font-weight:700}.post-banner{margin:0 0 30px}.post-banner img{border-radius:6px;width:100%;height:auto;display:block}.body .stack{margin:0 0 22px}.body .stack p{margin:0 0 2px}.body .edges{margin:0 0 22px;padding:0;list-style:none}.body .edges li{font-family:var(--serif);align-items:baseline;gap:10px;padding:6px 0;display:flex}.body .edges li:before{content:"→";color:var(--link);flex:none;font-weight:700}.body .edges li strong{color:var(--ink)}.body blockquote .attr{color:var(--ink-soft);margin-top:8px;font-size:13px;font-weight:400;display:block}.tweet-card{margin:36px 0}.tweet-card .twitter-tweet{margin:0!important}.tweet-embed{border:1px solid var(--rule);background:#fff;border-radius:14px;max-width:520px;margin:30px 0;padding:16px 16px 14px}.tweet-embed .t-head{align-items:center;gap:10px;margin-bottom:12px;display:flex}.tweet-embed .t-avatar{background:#cbd6cf;border-radius:50%;flex:none;width:42px;height:42px;overflow:hidden}.tweet-embed .t-avatar img{object-fit:cover;width:100%;height:100%;display:block}.tweet-embed .t-id{flex:1;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;line-height:1.2}.tweet-embed .t-name{color:#0f1419;align-items:center;gap:4px;font-size:15px;font-weight:700;display:flex}.tweet-embed .t-name .check{color:#1d9bf0;font-size:14px}.tweet-embed .t-handle{color:#536471;font-size:14px}.tweet-embed .t-handle .follow{color:#1d9bf0;margin-left:6px;font-weight:600}.tweet-embed .t-x{color:#0f1419;flex:none;font-size:20px;font-weight:700}.tweet-embed .t-text{color:#0f1419;margin:0 0 12px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:17px;line-height:1.4}.tweet-embed .t-text a{color:#1d9bf0;border:none}.tweet-embed .t-video{aspect-ratio:1;background:linear-gradient(135deg,#7a7066,#3f3a33);border-radius:14px;justify-content:center;align-items:center;display:flex;position:relative;overflow:hidden}.tweet-embed .t-video .play{z-index:2;background:#1d9bf0;border:4px solid #fff;border-radius:50%;justify-content:center;align-items:center;width:62px;height:62px;display:flex;position:relative}.tweet-embed .t-video .play:after{content:"";border-top:11px solid #0000;border-bottom:11px solid #0000;border-left:18px solid #fff;margin-left:4px}.tweet-embed .t-video .watch{z-index:2;color:#fff;background:#0009;border-radius:18px;padding:7px 14px;font-family:-apple-system,sans-serif;font-size:13px;font-weight:600;position:absolute;top:12px;right:12px}.tweet-embed .t-date{color:#536471;margin:12px 0 0;font-family:-apple-system,sans-serif;font-size:14px}.tweet-embed a.t-link{color:#1d9bf0;border:none}.post-footer{border-top:1px solid var(--rule);font-family:var(--mono);color:var(--ink-soft);justify-content:space-between;align-items:center;margin-top:60px;padding-top:24px;font-size:13px;display:flex}.post-footer a{color:var(--link);border-bottom:1px solid #0d8a5f40}.post-footer a:hover{border-bottom-color:var(--link)}.section-head{font-family:var(--mono);text-transform:uppercase;letter-spacing:1.5px;color:var(--ink-soft);border-bottom:1px solid var(--rule);margin:56px 0 18px;padding-bottom:10px;font-size:11.5px}.marks{color:var(--ink-soft);max-width:620px;margin:0 0 24px;font-size:13.5px;line-height:1.7}.marks a{color:var(--link);border-bottom:1px solid #0d8a5f40}.marks a:hover{border-bottom-color:var(--link)}.marks ol{color:var(--ink-soft);margin:18px 0;padding-left:24px}.marks ol li{margin-bottom:6px}.marks ol li strong{color:var(--ink);font-weight:500}.marks .note{color:var(--ink-soft);margin:18px 0;font-size:13.5px;line-height:1.7}.marks .note em{color:var(--ink);font-style:normal;font-weight:500}.traits-intro{color:var(--ink-soft);max-width:620px;margin:0 0 22px;font-size:13.5px;line-height:1.7}.traits-intro em{color:var(--ink);font-style:normal;font-weight:500}.traits{flex-direction:column;gap:14px;max-width:680px;display:flex}.trait{border-left:2px solid var(--link);background:#0d8a5f0d;padding:10px 16px}.trait .name{font-family:var(--mono);color:var(--ink);margin:0 0 6px;font-size:14.5px;font-weight:700}.trait ul{color:var(--ink-soft);margin:0;padding-left:18px;font-size:13px;line-height:1.65}.trait ul li{margin:2px 0}.sector-intro{color:var(--ink-soft);max-width:620px;margin:0 0 16px;font-size:13.5px;line-height:1.7}.lp{max-width:680px;font-size:14px;line-height:1.7}.lp p{color:var(--ink-soft);margin:0 0 16px}.lp p.muted{color:var(--ink-soft);font-size:13.5px}.lp .ctas{flex-direction:column;gap:4px;margin:20px 0 0;display:flex}.lp .ctas a{font-family:var(--mono);color:var(--link);background:var(--link-bg);border-bottom:none;width:fit-content;padding:4px 10px;font-size:14.5px;display:block}.lp .ctas a:hover{background:var(--link-bg-hover)}.lp a.inline{color:var(--link);border-bottom:1px solid #0d8a5f40}.lp a.inline:hover{border-bottom-color:var(--link)}.archive-hero h1{font-family:var(--mono);letter-spacing:-.3px;margin:0 0 24px;font-size:26px;font-weight:700;line-height:1.25}.archive-hero .intro{color:var(--ink-soft);margin:0 0 12px;font-size:14.5px;line-height:1.8}.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}@media(max-width:640px){.wrap{padding:22px 18px 60px}header.top{padding-bottom:40px}header.top nav{gap:14px;font-size:12.5px}.lede-stack .tagline{font-size:14px}.lede-stack .sub,.bio{font-size:13px}.writing-list li{grid-template-columns:1fr;gap:4px;padding:11px 0}.writing-list .title{font-size:14px}article h1,.archive-hero h1{font-size:22px}article .lede{font-size:14px}.body{font-size:14px;line-height:1.8}.body h2{margin:36px 0 14px;font-size:16px}footer.site{flex-direction:column;align-items:flex-start;gap:12px}#terminal{padding:22px 18px 60px}#terminal pre,#terminal .input-line input{font-size:12.5px}}.wrap.with-toc{max-width:1040px}.layout{grid-template-columns:200px minmax(0,1fr);align-items:start;gap:56px;display:grid}.layout article{max-width:720px}.toc{font-family:var(--mono);align-self:start;font-size:12px;position:sticky;top:40px}.toc ul{margin:0;padding:0;list-style:none}.toc li{margin:8px 0;line-height:1.4}.toc a{color:var(--ink-soft);white-space:nowrap;border-left:2px solid #0000;padding:2px 0 2px 10px;text-decoration:none;transition:color .15s,border-color .15s;display:block}.toc a:hover{color:var(--ink);border-left-color:var(--rule)}.toc a.active{color:var(--ink);border-left-color:var(--link);font-weight:500}@media(max-width:920px){.layout{grid-template-columns:1fr;gap:0}.toc{display:none}.wrap.with-toc{max-width:680px}}.body figure.diagram{margin:36px 0}.body figure.diagram svg{width:100%;max-width:720px;height:auto;margin:0 auto;display:block}.body figure.diagram figcaption{text-align:center;font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft);margin-top:10px;font-size:11px}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}
