@font-face{font-family:Inter;font-style:normal;font-weight:400 700;font-display:swap;src:url(/fonts/inter-latin-var.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:"Source Serif 4";font-style:normal;font-weight:400 700;font-display:swap;src:url(/fonts/source-serif-4-latin-var.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/jetbrains-mono-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--bg: #faf8f5;--text: #0d2438;--ink: #106090;--sky: #2090c0;--muted: #707080;--rule: #e6e2dd;--serif: "Source Serif 4", Georgia, "Times New Roman", serif;--sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--mono: "JetBrains Mono", ui-monospace, "SF Mono", Menlo, Consolas, monospace;--content-width: 640px;--pad-x: 24px;--pad-y: 64px}*,*:before,*:after{box-sizing:border-box}html{text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--sans);font-size:18px;line-height:1.7;font-feature-settings:"kern","liga","calt";-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}main{max-width:var(--content-width);margin:0 auto;padding:var(--pad-y) var(--pad-x)}header{text-align:left;margin-bottom:56px}header img{width:140px;height:140px;display:block;margin:0 0 16px -8px}header h1{font-family:var(--sans);font-weight:600;font-size:2rem;letter-spacing:-.02em;margin:0;color:var(--text)}hr{border:0;border-top:1px solid var(--rule);margin:48px 0}.origin{font-family:var(--serif);font-size:1.125rem;line-height:1.65}.origin em{font-style:italic;color:var(--ink)}p{margin:0 0 1.25em}p:last-child{margin-bottom:0}a{color:var(--ink);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px}a:hover{color:var(--sky)}.date{font-family:var(--mono);font-size:.875em;letter-spacing:-.01em}.projects{list-style:none;margin:1.5em 0 0;padding:0;display:grid;gap:16px}.project{display:block;padding:20px 22px;border:1px solid var(--rule);border-left:3px solid var(--brand, var(--rule));border-radius:10px;background:#fffdfa;text-decoration:none;color:var(--text);transition:border-color .15s ease,box-shadow .15s ease,transform .15s ease}a.project:hover{border-color:var(--brand);box-shadow:0 4px 16px #0d243814;transform:translateY(-1px);color:var(--text)}.project-category{display:block;margin-bottom:4px;font-family:var(--mono);font-size:.6875rem;text-transform:uppercase;letter-spacing:.06em;color:var(--brand-ink, var(--muted))}.project-name{display:block;font-family:var(--sans);font-weight:600;font-size:1.0625rem;letter-spacing:-.01em;color:var(--brand-ink, var(--text))}.project-desc{display:block;margin-top:4px;font-size:.95rem;line-height:1.55;color:var(--muted)}.project-domain{display:block;margin-top:10px;font-family:var(--mono);font-size:.75rem;letter-spacing:-.01em;color:var(--brand-ink, var(--brand))}.project-tag{display:inline-block;margin-top:10px;font-family:var(--mono);font-size:.6875rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);border:1px solid var(--rule);border-radius:999px;padding:2px 10px}.project--tkv{--brand: #b4863a;--brand-ink: #8b5e1b}.project--mk{--brand: #2d5d3e;--brand-ink: #2d5d3e}.project--precraft{--brand: var(--muted);--brand-ink: var(--muted);opacity:.9}footer{margin-top:48px;font-size:.95rem;color:var(--muted);line-height:1.7}footer p{margin:0}footer .updated{margin-top:16px;font-family:var(--mono);font-size:.8125rem;letter-spacing:-.01em}@media(max-width:480px){:root{--pad-x: 20px;--pad-y: 48px}body{font-size:17px}header img{width:120px;height:120px}header h1{font-size:1.75rem}.origin{font-size:1.0625rem}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}
