/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */
@layer theme{:root,:host{--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, 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,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, 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]){text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration: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:where(:not(iframe)){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{.static{position:static}.contents{display:contents}.flex-1{flex:1}.resize{resize:both}}:root{--ink:#1a1a1a;--ink-soft:#333;--paper:#f5f3ed;--paper-strong:#faf9f5;--paper-tint:#edeae2;--accent:#1a1a1a;--accent-deep:#555;--muted:#777;--line:#1a1a1a1f;--line-dark:#f5f3ed26;--header-bg:#f5f3ede0;--display:"DM Sans", "Avenir Next", "Trebuchet MS", sans-serif;--body:"DM Sans", "Avenir Next", "Trebuchet MS", sans-serif;--mono:"Space Mono", "Cascadia Mono", "SFMono-Regular", Consolas, monospace;--callout-bg:#1a1a1a;--callout-ink:#f5f3ed;--callout-muted:#f5f3eda6;--callout-line:#f5f3ed26;--callout-btn-border:#f5f3ed4d;--callout-btn-hover-bg:#f5f3ed;--callout-btn-hover-text:#1a1a1a}@media (prefers-color-scheme:dark){:root{--ink:#f5f3ed;--ink-soft:#ccc;--paper:#303030;--paper-strong:#383838;--paper-tint:#3d3d3d;--accent:#f5f3ed;--accent-deep:#a8a59e;--muted:#9c9993;--line:#f5f3ed1f;--line-dark:#f5f3ed26;--header-bg:#303030e0;--callout-bg:#242424;--callout-ink:#f5f3ed;--callout-muted:#f5f3eda6;--callout-line:#f5f3ed1f;--callout-btn-border:#f5f3ed47;--callout-btn-hover-bg:#f5f3ed;--callout-btn-hover-text:#303030}}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth;background:var(--paper);overflow-x:hidden}body{background:var(--paper);color:var(--ink);font-family:var(--body);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0;font-size:16px;line-height:1.55;overflow-x:hidden}.site-body{flex-direction:column;min-height:100dvh;display:flex}::selection{background:var(--ink);color:var(--paper)}a{color:inherit;text-decoration:none}img,svg{display:block}img{max-width:100%}.site-width{width:min(1180px,100% - 48px);margin:0 auto}@media (width<=768px){.site-width{width:min(100% - 32px,620px)}}@media (width<=480px){.site-width{width:calc(100% - 24px)}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.morph-system-layer{z-index:90;pointer-events:none;height:56px;position:fixed;top:0;left:0;right:0}.morph-system-layer .morph-header-backdrop{opacity:0;background:var(--header-bg);-webkit-backdrop-filter:blur(20px);border-bottom:1px solid var(--line);pointer-events:none;height:56px;position:absolute;top:0;left:0;right:0}.morph-system-layer .morph-system-inner{height:56px;position:relative}.morph-brand-element{pointer-events:auto;will-change:transform, top;position:absolute;top:110px;left:0}@media (width<=480px){.morph-brand-element{top:48px}}.morph-brand-element .morph-brand-link{font-family:var(--display);letter-spacing:-.06em;color:var(--ink);cursor:default;user-select:text;align-items:baseline;font-size:clamp(2.7rem,11vw,7.5rem);font-weight:900;line-height:.92;text-decoration:none;display:inline-flex}.morph-brand-element .morph-brand-link .brand-char-a{user-select:text;display:inline-block}.morph-brand-element .morph-brand-link .brand-emit-wrap{white-space:nowrap;vertical-align:baseline;will-change:width, opacity;user-select:text;width:auto;display:inline-flex;overflow:hidden}.morph-brand-element .morph-brand-link .brand-emit-wrap .emit-letter{will-change:transform, opacity;user-select:text;display:inline-block}.morph-brand-element .morph-brand-link .brand-char-dot{color:var(--accent-deep);user-select:text;flex-shrink:0;display:inline-block}.morph-brand-element.is-collapsed .morph-brand-link{cursor:pointer}.morph-tagline-element{color:var(--muted);font-family:var(--body);letter-spacing:-.01em;pointer-events:auto;will-change:transform, opacity, top;max-width:100%;margin:0;font-size:clamp(.95rem,2vw,1.15rem);font-weight:400;position:absolute;top:220px;left:0}@media (width<=480px){.morph-tagline-element{font-size:clamp(.82rem,3.2vw,.95rem);top:116px}}.morph-socials-element{pointer-events:auto;will-change:transform, opacity, top;align-items:center;gap:18px;display:flex;position:absolute;top:270px;left:0}@media (width<=480px){.morph-socials-element{gap:14px;top:156px}.morph-socials-element .social-icon svg{width:20px;height:20px}}.morph-socials-element .social-icon{color:var(--ink);opacity:.75;justify-content:center;align-items:center;transition:opacity .2s,transform .2s;display:flex}.morph-socials-element .social-icon:hover{opacity:1;transform:translateY(-2px)}.morph-socials-element .social-more{color:var(--muted);justify-content:center;align-items:center;transition:color .2s,transform .2s;display:flex}.morph-socials-element .social-more:hover{color:var(--ink);transform:translate(3px)}.morph-nav-element{pointer-events:auto;will-change:transform, top;align-items:center;display:flex;position:absolute;top:340px;left:0}@media (width<=480px){.morph-nav-element{top:204px}}.morph-nav-element .morph-anchors-group{will-change:transform;align-items:center;gap:28px;display:flex}@media (width<=768px){.morph-nav-element .morph-anchors-group{gap:16px}}@media (width<=480px){.morph-nav-element .morph-anchors-group{gap:10px}}.morph-nav-element .morph-pipe-char{color:var(--line);user-select:none;will-change:opacity, transform;margin:0 20px;font-size:14px;font-weight:400}@media (width<=768px){.morph-nav-element .morph-pipe-char{margin:0 10px}}@media (width<=480px){.morph-nav-element .morph-pipe-char{margin:0 6px}}.morph-nav-element .morph-blogs-group{will-change:transform;align-items:center;display:flex}.morph-nav-element .morph-link{font-family:var(--body);color:var(--muted);letter-spacing:-.01em;align-items:center;padding:4px 0;font-size:14px;font-weight:500;line-height:1;text-decoration:none;transition:color .2s;display:inline-flex;position:relative}@media (width<=768px){.morph-nav-element .morph-link{font-size:13px}}@media (width<=480px){.morph-nav-element .morph-link{font-size:12px}}.morph-nav-element .morph-link:before{content:"";position:absolute;inset:-8px -4px}.morph-nav-element .morph-link:after{content:"";background:var(--ink);transform-origin:0;height:1.5px;transition:transform .2s;position:absolute;bottom:-4px;left:0;right:0;transform:scaleX(0)}.morph-nav-element .morph-link:hover,.morph-nav-element .morph-link.is-active{color:var(--ink)}.morph-nav-element .morph-link.is-active:after{transform:scaleX(1)}.landing-hero-trigger{background:var(--paper);min-height:clamp(380px,56vh,480px);position:relative}@media (width<=480px){.landing-hero-trigger{min-height:clamp(320px,50vh,400px)}}.landing-hero-trigger .hero-scroll-buffer{height:100%}.section{background:var(--paper);z-index:10;padding:clamp(80px,10vw,140px) 0;position:relative}@media (width<=480px){.section{padding:clamp(56px,12vw,80px) 0}}.section.section-alt{background:var(--paper-strong)}.section.section-about{padding-top:0}@media (width<=480px){.section.section-about{padding-top:0}}.section.section-dark{background:var(--callout-bg);color:var(--callout-ink);border-top:1px solid var(--callout-line)}.section-title{font-family:var(--display);letter-spacing:-.05em;color:var(--ink);margin:0 0 48px;font-size:clamp(2rem,4vw,3rem);font-weight:700;line-height:1}.section-title.section-title-light{color:var(--callout-ink)}@media (width<=480px){.section-title{margin:0 0 32px}}.about-content{max-width:640px}.about-content .about-lead{color:var(--muted);margin:0 0 32px;font-size:15px;font-weight:400;line-height:1.7}.about-content .about-lead a{color:var(--ink);text-decoration-color:var(--line);text-underline-offset:3px;transition:text-decoration-color .2s}.about-content .about-lead a:hover{text-decoration-color:var(--ink)}.about-content .about-lead em{font-style:italic}.about-tools-section{border-top:1px solid var(--line);padding-top:24px}.about-tools-section .tools-label{color:var(--muted);font-family:var(--mono);letter-spacing:.04em;text-transform:uppercase;margin-bottom:16px;font-size:11px;display:block}.about-tools{flex-wrap:wrap;gap:8px;display:flex}.tool-pill{border:1px solid var(--line);color:var(--muted);border-radius:999px;align-items:center;gap:8px;padding:8px 14px;font-size:13px;font-weight:500;text-decoration:none;transition:border-color .2s,color .2s,background .2s;display:inline-flex}.tool-pill:hover{border-color:var(--ink);color:var(--ink);background:color-mix(in srgb, var(--ink) 5%, transparent)}.tool-pill img{flex-shrink:0;display:block}.projects-list{border-top:1px solid var(--line);gap:0;display:grid}.project-card{border-bottom:1px solid var(--line);color:inherit;padding:36px 0 40px;text-decoration:none;transition:padding-left .2s,padding-right .2s,background .2s;display:block}.project-card:hover{background:var(--paper-tint);padding-left:16px;padding-right:16px}@media (width<=480px){.project-card{padding:28px 0 32px}.project-card:hover{padding-left:0;padding-right:0}}.project-card .project-card-top{align-items:center;gap:16px;margin-bottom:18px;display:flex}.project-card .project-card-top .project-card-index{color:var(--accent-deep);font-family:var(--mono);letter-spacing:.02em;font-size:11px}.project-card .project-card-top .project-card-type{color:var(--muted);font-size:12px}.project-card .project-card-name{font-family:var(--display);letter-spacing:-.07em;margin:0;font-size:clamp(2.5rem,6vw,5rem);font-weight:700;line-height:.9}@media (width<=768px){.project-card .project-card-name{font-size:clamp(2.2rem,10vw,4rem)}}.project-card .project-card-summary{color:var(--muted);max-width:560px;margin:16px 0 0;font-size:15px;line-height:1.55}.project-card .project-card-bottom{align-items:center;gap:24px;margin-top:24px;display:flex}@media (width<=768px){.project-card .project-card-bottom{flex-direction:column;align-items:flex-start;gap:8px;margin-top:18px}}.project-card .project-card-bottom .project-card-stack{color:var(--muted);font-family:var(--mono);letter-spacing:.02em;word-break:break-word;font-size:10px}.project-card .project-card-bottom .project-card-metric{color:var(--accent-deep);font-family:var(--mono);letter-spacing:.02em;font-size:10px;font-weight:700}.socials-grid{background:var(--line);border:1px solid var(--line);grid-template-columns:repeat(2,1fr);gap:1px;display:grid}@media (width<=480px){.socials-grid{grid-template-columns:1fr}}.social-card{background:var(--paper);color:var(--ink);justify-content:space-between;align-items:center;gap:16px;padding:16px 20px;text-decoration:none;transition:background .2s;display:flex}@media (width<=480px){.social-card{padding:14px 16px}}.social-card:hover,.social-card:focus-visible{background:var(--paper-tint)}.social-card:hover .social-card-arrow,.social-card:focus-visible .social-card-arrow{color:var(--ink);transform:translate(2px,-2px)}.social-card:hover .social-card-handle,.social-card:focus-visible .social-card-handle{opacity:1;transform:translate(0)}.social-card .social-card-left{align-items:center;gap:12px;min-width:0;display:flex}.social-card .social-card-left svg{flex-shrink:0}.social-card .social-card-right{align-items:center;gap:8px;min-width:0;margin-left:auto;display:flex}.social-card .social-card-label{font-family:var(--display);letter-spacing:-.01em;white-space:nowrap;font-size:15px;font-weight:600}.social-card .social-card-handle{color:var(--muted);font-size:13px;font-family:var(--mono);white-space:nowrap;text-overflow:ellipsis;opacity:0;transition:opacity .2s,transform .2s;overflow:hidden;transform:translate(6px)}.social-card .social-card-arrow{color:var(--muted);flex-shrink:0;font-size:15px;transition:transform .2s,color .2s}.contact-layout{max-width:560px}.contact-layout .contact-text{color:var(--callout-muted);margin:0 0 36px;font-size:16px;line-height:1.6}.contact-layout .contact-cta{border:1px solid var(--callout-btn-border);color:var(--callout-ink);border-radius:999px;align-items:center;gap:10px;padding:14px 28px;font-size:14px;font-weight:600;text-decoration:none;transition:background .2s,border-color .2s,color .2s,transform .2s;display:inline-flex}.contact-layout .contact-cta:hover{background:var(--callout-btn-hover-bg);color:var(--callout-btn-hover-text);border-color:var(--callout-btn-hover-bg);transform:translateY(-2px)}.contact-layout .contact-cta:active{transform:translateY(0)scale(.98)}.simple-blog-page{background:var(--paper);min-height:100dvh;padding:clamp(40px,7vw,72px) 24px clamp(60px,10vw,100px)}@media (width<=480px){.simple-blog-page{padding:32px 16px 64px}}.simple-blog-wrap{width:min(620px,100%);margin:0 auto}.simple-blog-top{align-items:baseline;gap:14px;margin-bottom:clamp(40px,6vw,56px);display:flex}.simple-blog-top .simple-brand-logo{font-family:var(--display);letter-spacing:-.06em;color:var(--ink);align-items:baseline;font-size:clamp(32px,5vw,40px);font-weight:900;line-height:1;text-decoration:none;transition:opacity .16s;display:inline-flex}.simple-blog-top .simple-brand-logo:hover{opacity:.8}.simple-blog-top .simple-brand-logo .simple-brand-dot{color:var(--accent-deep)}.simple-blog-top .simple-header-title{font-family:var(--display);letter-spacing:-.05em;color:var(--ink);margin:0;font-size:clamp(30px,4.8vw,38px);font-weight:700;line-height:1;text-decoration:none}.simple-post-feed{flex-direction:column;display:flex}.simple-blog-empty{border-top:1.5px solid var(--ink);padding:24px 0 28px}.simple-blog-empty .simple-blog-empty-title{font-family:var(--display);letter-spacing:-.04em;color:var(--ink);margin:0 0 8px;font-size:clamp(1.15rem,2.5vw,1.35rem);font-weight:700;line-height:1.25}.simple-blog-empty .simple-blog-empty-desc{color:var(--ink-soft);font-family:var(--body);max-width:500px;margin:0 0 24px;font-size:15px;line-height:1.55}.simple-blog-empty .simple-blog-empty-back{color:var(--muted);font-family:var(--mono);letter-spacing:.03em;text-transform:uppercase;align-items:center;gap:6px;font-size:11px;text-decoration:none;transition:color .16s,transform .16s;display:inline-flex}.simple-blog-empty .simple-blog-empty-back:hover{color:var(--ink);transform:translate(-3px)}.simple-post-entry{border-bottom:1.5px solid var(--ink);padding:24px 0 28px}.simple-post-entry:first-child{padding-top:0}@media (width<=480px){.simple-post-entry{padding:20px 0 24px}}.simple-post-card-link{color:inherit;text-decoration:none;display:block}.simple-post-card-link:hover .simple-post-heading{color:var(--accent-deep)}.simple-post-heading{font-family:var(--display);letter-spacing:-.04em;color:var(--ink);margin:0 0 10px;font-size:clamp(1.25rem,2.8vw,1.5rem);font-weight:700;line-height:1.25;transition:color .16s}.simple-post-snippet{color:var(--ink-soft);font-family:var(--body);max-width:580px;margin:0 0 14px;font-size:15px;line-height:1.55}.simple-post-info{color:var(--ink-soft);font-size:14px;font-family:var(--body);letter-spacing:-.01em;align-items:center;gap:10px;margin:0;display:flex}.simple-post-info .simple-post-sep{color:var(--muted);user-select:none}.simple-post-info .simple-post-read{color:var(--muted)}.simple-article-view{padding-top:4px}.simple-article-view .simple-article-back{color:var(--muted);font-family:var(--mono);letter-spacing:.03em;text-transform:uppercase;align-items:center;gap:6px;margin-bottom:24px;font-size:11px;text-decoration:none;transition:color .16s,transform .16s;display:inline-flex}.simple-article-view .simple-article-back:hover{color:var(--ink);transform:translate(-3px)}.simple-article-view .simple-article-header{border-bottom:1.5px solid var(--ink);margin-bottom:28px;padding-bottom:24px}.simple-article-view .simple-article-header .simple-article-h1{font-family:var(--display);letter-spacing:-.05em;color:var(--ink);margin:0 0 12px;font-size:clamp(2rem,5vw,3rem);font-weight:700;line-height:1.1}.simple-article-view .simple-article-header .simple-article-lead{color:var(--ink-soft);font-family:var(--body);margin:0 0 16px;font-size:16px;line-height:1.55}.simple-article-view .simple-article-header .simple-article-meta{color:var(--muted);font-size:13px;font-family:var(--body);align-items:center;gap:10px;margin:0;display:flex}.simple-article-view .simple-article-content{color:var(--ink-soft);font-family:var(--body);font-size:16px;line-height:1.75}.simple-article-view .simple-article-content p{margin:0 0 20px}.simple-article-view .simple-article-content h2,.simple-article-view .simple-article-content h3{font-family:var(--display);letter-spacing:-.04em;color:var(--ink);margin:36px 0 14px;font-weight:700;line-height:1.2}.simple-article-view .simple-article-content h2{font-size:22px}.simple-article-view .simple-article-content h3{font-size:18px}.simple-article-view .simple-article-content ul,.simple-article-view .simple-article-content ol{margin:0 0 20px;padding-left:24px}.simple-article-view .simple-article-content li{margin-bottom:8px}.simple-article-view .simple-article-content a{color:var(--accent-deep);text-underline-offset:3px;text-decoration:underline}.simple-article-view .simple-article-content a:hover{color:var(--ink)}.simple-article-view .simple-article-content code{font-family:var(--mono);background:var(--paper-tint);border:1px solid var(--line);word-break:break-word;border-radius:4px;padding:3px 6px;font-size:13px}.simple-article-view .simple-article-content img{border-radius:8px;max-width:100%;height:auto}.simple-article-view .simple-article-content table{border-collapse:collapse;width:100%;margin:20px 0;display:block;overflow-x:auto}.simple-article-view .simple-article-content pre{font-family:var(--mono);background:var(--callout-bg);color:var(--callout-ink);border-radius:12px;max-width:100%;margin:24px 0;padding:18px 20px;font-size:13px;overflow-x:auto}@media (width<=480px){.simple-article-view .simple-article-content pre{padding:14px;font-size:12px}}.simple-article-view .simple-article-content pre code{color:inherit;word-break:normal;background:0 0;border:none;padding:0}
