:root{--paper: #faf8f5;--paper-2: #f3efe8;--ink: #17140f;--ink-soft: #5c564e;--ink-faint: #736b5e;--rule: #e7e2da;--rule-strong: #d9d2c7;--lemon: #e2a312;--clay: #a06a3c;--inkblue: #3a4d80;--teal: #2c7a74;--font-display: "Bricolage Grotesque", system-ui, -apple-system, sans-serif;--font-body: "Inter", system-ui, -apple-system, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, SFMono-Regular, monospace;--fs-eyebrow: .72rem;--fs-body: 1rem;--fs-lede: clamp(1.05rem, 1.6vw, 1.28rem);--fs-h1: clamp(2.9rem, 8vw, 5.7rem);--fs-h2: clamp(1.5rem, 3vw, 2.1rem);--fs-product: clamp(1.4rem, 2.6vw, 1.85rem);--fs-about: clamp(1.35rem, 3vw, 1.95rem);--fs-article-h1: clamp(2.1rem, 5vw, 3.2rem);--tracking-eyebrow: .16em;--tracking-display: -.02em;--max: 1080px;--gutter: 28px;--grid-dot: #e3ddd3;--grid-size: 22px}@font-face{font-family:Bricolage Grotesque;src:url(/fonts/bricolage-grotesque-variable.woff2) format("woff2");font-weight:200 800;font-style:normal;font-display:swap}@font-face{font-family:Inter;src:url(/fonts/inter-variable.woff2) format("woff2");font-weight:100 900;font-style:normal;font-display:swap}@font-face{font-family:JetBrains Mono;src:url(/fonts/jetbrains-mono-variable.woff2) format("woff2");font-weight:100 800;font-style:normal;font-display:swap}*{box-sizing:border-box;margin:0;padding:0}body{background-color:var(--paper);background-image:radial-gradient(circle,var(--grid-dot) 1px,transparent 1.6px);background-size:var(--grid-size) var(--grid-size);color:var(--ink);font-family:var(--font-body);font-size:16px;line-height:1.6;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}a{color:inherit;text-decoration:none}img,svg{display:block}:where(h1,h2,h3,h4){text-wrap:balance}@media(prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}.skip-link{position:absolute;left:12px;top:-64px;z-index:100;background:var(--ink);color:var(--paper);font-family:var(--font-mono);font-size:.8rem;letter-spacing:.02em;padding:10px 18px;border-radius:999px;transition:top .18s ease}.skip-link:focus{top:12px}.wrap{max-width:var(--max);margin:0 auto;padding:0 var(--gutter)}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}.eyebrow{font-family:var(--font-mono);font-size:var(--fs-eyebrow);letter-spacing:var(--tracking-eyebrow);text-transform:uppercase;color:var(--ink-faint)}.site-header{position:sticky;top:0;z-index:50;background:color-mix(in srgb,var(--paper) 88%,transparent);backdrop-filter:saturate(140%) blur(8px);border-bottom:1px solid var(--rule)}.nav-in{display:flex;align-items:center;justify-content:space-between;height:66px}.brand{display:flex;align-items:center;gap:9px;font-family:var(--font-display);font-weight:600;font-size:1.12rem;letter-spacing:-.01em}.nav-right,.nav-links{display:flex;align-items:center;gap:30px}.nav-links a{font-size:.92rem;color:var(--ink-soft);transition:color .18s}.nav-links a:not(.nav-cta):hover{color:var(--ink)}.nav-cta{font-family:var(--font-mono);font-size:.78rem;letter-spacing:.04em;border:1px solid var(--ink);border-radius:999px;padding:8px 16px;color:var(--ink);transition:background .18s,color .18s}.nav-cta:hover{background:var(--ink);color:var(--paper)}.nav-menu{display:none}.nav-toggle{list-style:none;display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;margin-right:-8px;border-radius:999px;color:var(--ink);cursor:pointer;-webkit-tap-highlight-color:transparent}.nav-toggle::-webkit-details-marker{display:none}.nav-toggle:hover{background:color-mix(in srgb,var(--ink) 6%,transparent)}.nav-menu .i-close,.nav-menu[open] .i-open{display:none}.nav-menu[open] .i-close{display:block}.nav-panel{position:absolute;top:100%;left:0;right:0;display:flex;flex-direction:column;padding:6px var(--gutter) 14px;background:var(--paper);border-bottom:1px solid var(--rule);box-shadow:0 14px 24px -18px #17140f66}.nav-panel a{display:block;padding:13px 2px;font-size:1rem;color:var(--ink-soft);border-bottom:1px solid var(--rule);transition:color .16s}.nav-panel a:last-child{border-bottom:0}.nav-panel a:hover{color:var(--ink)}@media(max-width:680px){.nav-links{display:none}.nav-menu{display:block}.nav-right{gap:8px}}.hero{padding:96px 0 84px}.hero .eyebrow{display:block;margin-bottom:26px}h1{font-family:var(--font-display);font-weight:600;font-size:var(--fs-h1);line-height:.96;letter-spacing:-.025em;max-width:13ch}.lede{margin-top:30px;font-size:var(--fs-lede);line-height:1.55;color:var(--ink-soft);max-width:52ch}.lede b{color:var(--ink);font-weight:500}.hero-actions{margin-top:38px;display:flex;align-items:center;gap:26px;flex-wrap:wrap}.status{margin-top:46px;display:inline-flex;align-items:center;gap:10px;font-family:var(--font-mono);font-size:.78rem;color:var(--ink-soft);letter-spacing:.02em}.pulse{width:8px;height:8px;border-radius:50%;background:var(--teal);position:relative;flex:none}.pulse:after{content:"";position:absolute;inset:-5px;border-radius:50%;border:1.5px solid var(--teal);opacity:.5;animation:ring 2.4s ease-out infinite}@keyframes ring{0%{transform:scale(.6);opacity:.6}80%,to{transform:scale(1.5);opacity:0}}.btn{font-family:var(--font-mono);font-size:.82rem;letter-spacing:.03em;background:var(--ink);color:var(--paper);padding:14px 24px;border-radius:999px;display:inline-flex;align-items:center;gap:9px;transition:transform .18s,background .18s}.btn:hover{transform:translateY(-2px);background:#000}.btn svg{transition:transform .2s}.btn:hover svg{transform:translate(3px)}.textlink{font-size:.95rem;color:var(--ink-soft);border-bottom:1px solid var(--rule-strong);padding-bottom:2px;transition:color .18s,border-color .18s}.textlink:hover{color:var(--ink);border-color:var(--ink)}section{padding:78px 0}.sec-head{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:42px;gap:20px;flex-wrap:wrap}.sec-head h2{font-family:var(--font-display);font-weight:600;font-size:var(--fs-h2);letter-spacing:-.02em;margin-top:14px}.sec-note{font-family:var(--font-mono);font-size:.78rem;color:var(--ink-faint);letter-spacing:.04em}.catalogue{border-top:1px solid var(--rule-strong)}.item{--c: var(--ink);position:relative;display:grid;grid-template-columns:46px 18px 1fr auto;align-items:center;column-gap:22px;padding:30px 18px 30px 4px;border-bottom:1px solid var(--rule);transition:background .25s ease,padding-left .25s ease}.item:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--c);transform:scaleY(0);transform-origin:center;transition:transform .25s ease}.item:hover{background:color-mix(in srgb,var(--c) 6%,transparent);padding-left:18px}.item:hover:before{transform:scaleY(1)}.item:focus-visible{outline:2px solid var(--c);outline-offset:-2px}.idx{font-family:var(--font-mono);font-size:.82rem;color:var(--ink-faint)}.dot{width:14px;height:14px;border-radius:4px;background:var(--c);transition:transform .25s ease}.item:hover .dot{transform:scale(1.25)}.item .name{font-family:var(--font-display);font-weight:600;font-size:var(--fs-product);letter-spacing:-.02em;line-height:1.1}.item .desc{margin-top:6px;color:var(--ink-soft);font-size:1rem;max-width:46ch}.meta{display:flex;align-items:center;gap:20px;justify-content:flex-end}.pill{font-family:var(--font-mono);font-size:.72rem;letter-spacing:.04em;display:inline-flex;align-items:center;gap:7px;color:var(--ink-soft)}.pill .b{width:7px;height:7px;border-radius:50%;flex:none}.b.live{background:var(--teal)}.b.wip{background:var(--lemon)}.tag{font-family:var(--font-mono);font-size:.72rem;color:var(--ink-faint);letter-spacing:.03em}.yr{font-family:var(--font-mono);font-size:.78rem;color:var(--ink-faint)}.arr{color:var(--ink-faint);display:flex;transition:transform .25s ease,color .25s ease}.item:hover .arr{transform:translate(4px);color:var(--c)}@media(max-width:760px){.item{grid-template-columns:38px 1fr;column-gap:16px;row-gap:14px;align-items:start}.dot{display:none}.item .body{grid-column:2}.meta{grid-column:1 / -1;justify-content:flex-start;flex-wrap:wrap;gap:14px}}.ethos-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:30px}.principle .pn{font-family:var(--font-mono);font-size:.72rem;color:var(--ink-faint);display:block;margin-bottom:14px;letter-spacing:.08em}.principle .ph{font-family:var(--font-display);font-weight:600;font-size:1.18rem;letter-spacing:-.01em;margin-bottom:10px}.principle .pl{color:var(--ink-soft);font-size:.96rem;line-height:1.55}@media(max-width:760px){.ethos-grid{grid-template-columns:1fr 1fr;gap:28px 24px}}@media(max-width:460px){.ethos-grid{grid-template-columns:1fr}}.work-in{display:grid;grid-template-columns:1.1fr .9fr;gap:48px;align-items:start}.work-copy p{color:var(--ink-soft);font-size:1.08rem;line-height:1.6;max-width:46ch}.work-copy .btn{margin-top:28px}.svc{display:flex;flex-direction:column;gap:0;border-top:1px solid var(--rule)}.svc div{padding:16px 0;border-bottom:1px solid var(--rule);display:flex;align-items:center;justify-content:space-between;gap:16px}.svc .st{font-family:var(--font-display);font-weight:500;font-size:1.05rem}.svc .sd{font-family:var(--font-mono);font-size:.74rem;color:var(--ink-faint);letter-spacing:.03em}@media(max-width:760px){.work-in{grid-template-columns:1fr;gap:36px}}.about .eyebrow{display:block;margin-bottom:28px}.about p{font-family:var(--font-display);font-weight:400;font-size:var(--fs-about);line-height:1.4;letter-spacing:-.01em;max-width:30ch;color:var(--ink)}.about p span{color:var(--ink-faint)}.about a{color:var(--ink);border-bottom:1px solid var(--rule-strong);transition:border-color .18s}.about a:hover{border-color:var(--ink)}.site-footer{padding:64px 0 40px}.foot-top{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:32px;padding-bottom:46px;border-bottom:1px solid var(--rule)}.foot-brand .brand{margin-bottom:14px}.foot-brand p{color:var(--ink-faint);font-size:.92rem;max-width:24ch}.fcol h3{font-family:var(--font-mono);font-size:.72rem;text-transform:uppercase;letter-spacing:.12em;color:var(--ink-faint);margin-bottom:16px;font-weight:400}.fcol a{display:block;color:var(--ink-soft);font-size:.95rem;padding:5px 0;transition:color .16s}.fcol a:hover{color:var(--ink)}.foot-bottom{padding-top:26px;display:flex;align-items:center;justify-content:space-between;gap:20px;flex-wrap:wrap}.legal{font-family:var(--font-mono);font-size:.74rem;color:var(--ink-faint);letter-spacing:.02em;line-height:1.7}.foot-bottom .mailto{font-family:var(--font-mono);font-size:.78rem;color:var(--ink-soft);border-bottom:1px solid var(--rule-strong);padding-bottom:2px}.foot-bottom .mailto:hover{color:var(--ink)}@media(max-width:760px){.foot-top{grid-template-columns:1fr 1fr;gap:30px}.foot-brand{grid-column:1 / -1}}.notfound{display:flex;align-items:center;min-height:72vh}.notfound .eyebrow{display:block;margin-bottom:22px}.blog-head{margin-bottom:48px}.blog-head .eyebrow{display:block;margin-bottom:22px}.blog-head h1{font-family:var(--font-display);font-weight:600;font-size:var(--fs-article-h1);line-height:1.04;letter-spacing:-.02em;max-width:18ch}.blog-head .lede{max-width:56ch}.post-list{border-top:1px solid var(--rule-strong)}.post-item{display:block;position:relative;padding:30px 18px 30px 4px;border-bottom:1px solid var(--rule);transition:background .25s ease,padding-left .25s ease}.post-item:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--ink);transform:scaleY(0);transform-origin:center;transition:transform .25s ease}.post-item:hover{background:color-mix(in srgb,var(--ink) 4%,transparent);padding-left:18px}.post-item:hover:before{transform:scaleY(1)}.post-item:focus-visible{outline:2px solid var(--ink);outline-offset:-2px}.post-meta{display:flex;align-items:center;flex-wrap:wrap;gap:10px;font-family:var(--font-mono);font-size:.74rem;letter-spacing:.04em;color:var(--ink-faint)}.post-meta .sep,.article-meta .sep{color:var(--rule-strong)}.post-item .p-title{display:block;margin-top:12px;font-family:var(--font-display);font-weight:600;font-size:var(--fs-product);letter-spacing:-.02em;line-height:1.15}.post-item .p-desc{display:block;margin-top:8px;color:var(--ink-soft);font-size:1rem;line-height:1.55;max-width:62ch}.post-tags{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}.tag-pill{font-family:var(--font-mono);font-size:.66rem;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-faint);border:1px solid var(--rule-strong);border-radius:999px;padding:3px 10px}.blog-empty{border-top:1px solid var(--rule-strong);padding-top:30px;color:var(--ink-soft)}.reading{max-width:70ch;margin:0 auto;padding:56px var(--gutter) 96px}.article-head{margin-bottom:36px}.article-head .eyebrow{display:block;margin-bottom:22px}.article-head h1{font-family:var(--font-display);font-weight:600;font-size:var(--fs-article-h1);line-height:1.06;letter-spacing:-.02em;max-width:none;margin-bottom:22px}.article-meta{display:flex;flex-wrap:wrap;align-items:center;gap:10px;font-family:var(--font-mono);font-size:.78rem;letter-spacing:.03em;color:var(--ink-faint)}.byline-link{color:var(--ink);border-bottom:1px solid var(--rule-strong);padding-bottom:1px;transition:border-color .18s}.byline-link:hover{border-color:var(--ink)}.prose{color:var(--ink)}.prose>*+*{margin-top:1.15em}.prose p{font-size:1.05rem;line-height:1.75}.prose h2,.prose h3{font-family:var(--font-display);font-weight:600;letter-spacing:-.02em;line-height:1.2;scroll-margin-top:90px}.prose h2{font-size:var(--fs-h2);margin-top:2em}.prose h3{font-size:1.25rem;margin-top:1.6em}.prose a:not(.btn){color:var(--ink);text-decoration:underline;text-underline-offset:2px;text-decoration-color:var(--rule-strong);text-decoration-thickness:1px;transition:text-decoration-color .18s}.prose a:not(.btn):hover{text-decoration-color:var(--ink)}.prose strong{font-weight:600;color:var(--ink)}.prose ul,.prose ol{padding-left:1.4em}.prose li{margin-top:.4em;line-height:1.7}.prose li::marker{color:var(--ink-faint)}.prose blockquote{border-left:2px solid var(--rule-strong);padding-left:1em;color:var(--ink-soft)}.prose :not(pre)>code{font-family:var(--font-mono);font-size:.88em;background:var(--paper-2);padding:.12em .4em;border-radius:4px}.prose pre{padding:18px 20px;border-radius:10px;border:1px solid var(--rule);overflow-x:auto;font-size:.9rem;line-height:1.6}.prose pre code{font-family:var(--font-mono)}.prose img{max-width:100%;height:auto;border-radius:10px;border:1px solid var(--rule)}.prose hr{border:0;border-top:1px solid var(--rule);margin:2.4em 0}.prose .btn{margin-top:1.8em}.article-foot{margin-top:56px;padding-top:28px;border-top:1px solid var(--rule)}.article-foot .post-tags{margin-top:0}.post-nav{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:22px}.post-nav-link{display:block;padding:16px 18px;border:1px solid var(--rule);border-radius:12px;transition:border-color .18s,background .18s}.post-nav-link:hover{border-color:var(--rule-strong);background:color-mix(in srgb,var(--ink) 3%,transparent)}.post-nav-link.next{text-align:right}.post-nav-label{display:block;font-family:var(--font-mono);font-size:.68rem;text-transform:uppercase;letter-spacing:.1em;color:var(--ink-faint);margin-bottom:6px}.post-nav-title{display:block;font-family:var(--font-display);font-weight:500;font-size:1rem;line-height:1.25;color:var(--ink)}.back-link{display:inline-block;margin-top:28px;font-family:var(--font-mono);font-size:.8rem;letter-spacing:.03em;color:var(--ink-soft);transition:color .18s}.back-link:hover{color:var(--ink)}@media(max-width:560px){.post-nav{grid-template-columns:1fr}.post-nav-link.next{text-align:left}}.tool-list{border-top:1px solid var(--rule-strong)}.tool-item{--c: var(--ink);display:block;position:relative;padding:30px 18px 30px 4px;border-bottom:1px solid var(--rule);transition:background .25s ease,padding-left .25s ease}.tool-item:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--c);transform:scaleY(0);transform-origin:center;transition:transform .25s ease}.tool-item:hover{background:color-mix(in srgb,var(--c) 6%,transparent);padding-left:18px}.tool-item:hover:before{transform:scaleY(1)}.tool-item:focus-visible{outline:2px solid var(--c);outline-offset:-2px}.ti-head{display:flex;align-items:center;flex-wrap:wrap;gap:10px 14px}.ti-name{font-family:var(--font-display);font-weight:600;font-size:var(--fs-product);letter-spacing:-.02em;line-height:1.1}.ti-desc{display:block;margin-top:10px;color:var(--ink-soft);font-size:1rem;line-height:1.55;max-width:62ch}.ti-meta{display:block;margin-top:14px;font-family:var(--font-mono);font-size:.72rem;letter-spacing:.03em;color:var(--ink-faint)}.tool-hub{--c: var(--ink)}.tool-swatch{display:block;width:40px;height:40px;border-radius:10px;background:var(--c);margin-bottom:24px}.tool-lede{font-size:var(--fs-lede);color:var(--ink-soft);line-height:1.6;max-width:56ch;margin-bottom:22px}.tool-head-meta{display:flex;flex-wrap:wrap;align-items:center;gap:10px 16px;font-family:var(--font-mono);font-size:.78rem;letter-spacing:.03em;color:var(--ink-faint)}.tool-head-meta .sep{color:var(--rule-strong)}.tool-cta{display:flex;flex-wrap:wrap;align-items:center;gap:12px 18px;margin:28px 0 0}.tool-cta-note{font-family:var(--font-mono);font-size:.72rem;letter-spacing:.02em;color:var(--ink-faint)}.tool-features,.tool-faq{margin-top:52px}.tool-features h2,.tool-faq h2{font-family:var(--font-display);font-weight:600;font-size:var(--fs-h2);letter-spacing:-.02em;line-height:1.2;margin-bottom:22px}.tool-features ul{list-style:none;border-top:1px solid var(--rule)}.tool-features li{padding:18px 0;border-bottom:1px solid var(--rule)}.tf-title{display:block;font-family:var(--font-display);font-weight:600;font-size:1.12rem;letter-spacing:-.01em;margin-bottom:6px}.tf-body{display:block;color:var(--ink-soft);font-size:1rem;line-height:1.6;max-width:60ch}.tool-faq .faq-item{padding:20px 0;border-bottom:1px solid var(--rule)}.tool-faq .faq-item:first-of-type{border-top:1px solid var(--rule)}.tool-faq dt{font-family:var(--font-display);font-weight:600;font-size:1.12rem;letter-spacing:-.01em;margin-bottom:8px}.tool-faq dd{margin:0;color:var(--ink-soft);font-size:1rem;line-height:1.7;max-width:64ch}.tool-related{margin-top:4px}.tool-related h2{font-family:var(--font-display);font-weight:600;font-size:1.25rem;letter-spacing:-.01em;margin-bottom:14px}.tool-related ul{list-style:none}.tool-related li+li{margin-top:8px}.tool-related a{color:var(--ink);text-decoration:underline;text-underline-offset:2px;text-decoration-color:var(--rule-strong);text-decoration-thickness:1px;transition:text-decoration-color .18s}.tool-related a:hover{text-decoration-color:var(--ink)}@media(prefers-reduced-motion:no-preference){html.js .reveal{opacity:0;transform:translateY(16px)}html.js .reveal.in{opacity:1;transform:none;transition:opacity .7s cubic-bezier(.2,.7,.2,1),transform .7s cubic-bezier(.2,.7,.2,1)}}:focus-visible{outline:2px solid var(--ink);outline-offset:3px;border-radius:2px}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}}
