/*! tailwindcss v4.3.3 | 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-divide-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial}}}@layer theme{:root,:host{--font-sans:"Inter", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-gray-100:oklch(96.7% .003 264.542);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-800:oklch(27.8% .033 256.848);--color-gray-900:oklch(21% .034 264.665);--color-white:#fff;--spacing:.25rem;--container-2xl:42rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--font-weight-medium:500;--font-weight-bold:700;--tracking-tight:-.025em;--leading-relaxed:1.625;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--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]){-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;-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{.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.mx-auto{margin-inline:auto}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-16{margin-top:calc(var(--spacing) * 16)}.mb-1{margin-bottom:var(--spacing)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-8{margin-bottom:calc(var(--spacing) * 8)}.mb-10{margin-bottom:calc(var(--spacing) * 10)}.mb-12{margin-bottom:calc(var(--spacing) * 12)}.block{display:block}.flex{display:flex}.hidden{display:none}.inline-flex{display:inline-flex}.h-full{height:100%}.max-w-2xl{max-width:var(--container-2xl)}.shrink-0{flex-shrink:0}.flex-wrap{flex-wrap:wrap}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-x-2{column-gap:calc(var(--spacing) * 2)}.gap-y-1{row-gap:var(--spacing)}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-gray-100>:not(:last-child)){border-color:var(--color-gray-100)}.rounded{border-radius:.25rem}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-gray-100{border-color:var(--color-gray-100)}.bg-gray-100{background-color:var(--color-gray-100)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-6{padding-inline:calc(var(--spacing) * 6)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:var(--spacing)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-16{padding-block:calc(var(--spacing) * 16)}.pt-8{padding-top:calc(var(--spacing) * 8)}.text-right{text-align:right}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[15px\]{font-size:15px}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.text-balance{text-wrap:balance}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-gray-900{color:var(--color-gray-900)}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.underline{text-decoration-line:underline}.decoration-gray-300{-webkit-text-decoration-color:var(--color-gray-300);-webkit-text-decoration-color:var(--color-gray-300);text-decoration-color:var(--color-gray-300)}.underline-offset-4{text-underline-offset:4px}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}@media (hover:hover){.group-hover\:underline:is(:where(.group):hover *){text-decoration-line:underline}.hover\:text-gray-900:hover{color:var(--color-gray-900)}.hover\:decoration-gray-500:hover{-webkit-text-decoration-color:var(--color-gray-500);-webkit-text-decoration-color:var(--color-gray-500);text-decoration-color:var(--color-gray-500)}}.dark\:block:where(.dark,.dark *){display:block}.dark\:hidden:where(.dark,.dark *){display:none}:where(.dark\:divide-gray-800:where(.dark,.dark *)>:not(:last-child)),.dark\:border-gray-800:where(.dark,.dark *){border-color:var(--color-gray-800)}.dark\:bg-gray-900:where(.dark,.dark *){background-color:var(--color-gray-900)}.dark\:text-gray-300:where(.dark,.dark *){color:var(--color-gray-300)}.dark\:text-gray-400:where(.dark,.dark *){color:var(--color-gray-400)}.dark\:text-white:where(.dark,.dark *){color:var(--color-white)}.dark\:decoration-gray-600:where(.dark,.dark *){-webkit-text-decoration-color:var(--color-gray-600);-webkit-text-decoration-color:var(--color-gray-600);text-decoration-color:var(--color-gray-600)}@media (hover:hover){.dark\:hover\:text-white:where(.dark,.dark *):hover{color:var(--color-white)}.dark\:hover\:decoration-gray-400:where(.dark,.dark *):hover{-webkit-text-decoration-color:var(--color-gray-400);-webkit-text-decoration-color:var(--color-gray-400);text-decoration-color:var(--color-gray-400)}}}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/fonts/inter-latin-var.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{color-scheme:light;--page:#f6f4f0;--surface:#fffdf9d6;--surface-solid:#fffdf9;--text:#17191f;--muted:#646a75;--quiet:#7f827f;--line:#ddd8cf;--line-strong:#c8c0b5;--tag:#ece8e1;--accent:#a54e19;--accent-soft:#a54e191a;--shadow:0 18px 46px #3b2c1f17}.dark{color-scheme:dark;--page:#090b10;--surface:#11141bcc;--surface-solid:#11141b;--text:#f5f2ec;--muted:#a8adb8;--quiet:#7c8390;--line:#292e39;--line-strong:#3a414e;--tag:#1a1e27;--accent:#e89b62;--accent-soft:#e89b621f;--shadow:0 22px 62px #0000004d}body{background:radial-gradient(circle at 9% 4%, var(--accent-soft), transparent 26rem), var(--page);min-width:320px;min-height:100%;color:var(--text);text-rendering:optimizelegibility;background-repeat:no-repeat}::selection{background:var(--accent);color:var(--surface-solid)}.site-shell{width:min(1120px,100% - 48px);margin:0 auto;padding:34px 0 44px}.topbar{justify-content:space-between;align-items:center;margin-bottom:42px;display:flex}.monogram{letter-spacing:.08em;text-transform:uppercase;align-items:center;gap:10px;font-size:13px;font-weight:700;display:inline-flex}.monogram-mark{border:1px solid var(--line-strong);background:var(--surface);letter-spacing:-.02em;width:31px;height:31px;box-shadow:var(--shadow);border-radius:9px;place-items:center;font-size:11px;display:grid}.theme-toggle{border:1px solid var(--line);background:var(--surface);width:42px;height:42px;color:var(--muted);cursor:pointer;border-radius:50%;place-items:center;transition:border-color .16s,color .16s,transform .16s;display:grid}.theme-toggle:hover{border-color:var(--line-strong);color:var(--text);transform:translateY(-1px)}.theme-icon{width:16px;height:16px}.hero{grid-template-columns:minmax(0,1.08fr) minmax(330px,.92fr);align-items:center;gap:clamp(42px,7vw,84px);padding-bottom:84px;display:grid}.eyebrow,.section-kicker,.project-kind{letter-spacing:.15em;text-transform:uppercase;font-size:11px;font-weight:750}.eyebrow{color:var(--accent);margin:0}.hero h1{letter-spacing:-.055em;max-width:680px;margin:14px 0 17px;font-size:clamp(44px,6vw,70px);font-weight:750;line-height:.99}.hero-lede{max-width:650px;color:var(--muted);font-size:clamp(17px,2vw,20px);line-height:1.55}.hero-lede p{margin:0}.socials{flex-wrap:wrap;gap:10px;margin-top:28px;display:flex}.social-link{border:1px solid var(--line);background:var(--surface);color:var(--muted);border-radius:999px;align-items:center;gap:8px;padding:9px 13px;font-size:13px;font-weight:600;text-decoration:none;transition:border-color .16s,color .16s,transform .16s;display:inline-flex}.social-link:hover{border-color:var(--line-strong);color:var(--text);transform:translateY(-1px)}.hero-image{aspect-ratio:5/4;border:1px solid var(--line);background:var(--surface-solid);box-shadow:var(--shadow);border-radius:22px;position:relative;overflow:hidden}.hero-image:after{border-radius:inherit;content:"";pointer-events:none;border:1px solid #ffffff1a;position:absolute;inset:0}.hero-image img{object-fit:cover;object-position:center;filter:saturate(.86)contrast(1.04);width:100%;height:100%}.portfolio-section{border-top:1px solid var(--line);padding:78px 0}.section-heading{grid-template-columns:minmax(0,.72fr) minmax(280px,1fr);align-items:end;gap:40px;margin-bottom:30px;display:grid}.section-kicker{color:var(--quiet);margin:0}.section-heading h2{letter-spacing:-.04em;margin:7px 0 0;font-size:clamp(31px,4vw,44px);font-weight:750;line-height:1.08}.section-intro{max-width:590px;color:var(--muted);margin:0;font-size:15px}.project-grid{flex-wrap:wrap;justify-content:center;gap:18px;display:flex}.project-card{border:1px solid var(--line);background:var(--surface);border-radius:16px;flex-direction:column;flex:0 calc(33.3333% - 12px);min-width:0;min-height:390px;padding:23px;transition:border-color .18s,transform .18s,box-shadow .18s;display:flex;box-shadow:inset 0 1px #ffffff08}.project-card:hover{border-color:var(--line-strong);box-shadow:var(--shadow);transform:translateY(-3px)}.project-topline{justify-content:space-between;align-items:center;gap:16px;margin-bottom:30px;display:flex}.project-kind{color:var(--quiet);letter-spacing:.1em}.project-number{color:var(--quiet);font:500 12px/1 ui-monospace,monospace}.project-card h3{letter-spacing:-.025em;margin:0 0 12px;font-size:19px;font-weight:700;line-height:1.28}.project-card p{color:var(--muted);margin:0;font-size:14px;line-height:1.62}.project-card .project-detail{color:var(--quiet);margin-top:12px;font-size:13px}.project-footer{margin-top:auto;padding-top:24px}.tags{flex-wrap:wrap;gap:6px;margin-bottom:20px;display:flex}.tag{background:var(--tag);color:var(--muted);border-radius:5px;padding:4px 7px;font:500 11px/1.2 ui-monospace,SFMono-Regular,Menlo,monospace}.project-links,.community-links{flex-wrap:wrap;gap:18px;display:flex}.project-link,.community-links a{color:var(--text);align-items:center;gap:6px;font-size:13px;font-weight:650;text-decoration:none;display:inline-flex}.project-link span,.community-links a span{color:var(--accent);transition:transform .15s}.project-link:hover span,.community-links a:hover span{transform:translate(2px,-2px)}.community-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;display:grid}.community-card{border:1px solid var(--line);background:var(--surface);border-radius:14px;grid-template-columns:46px minmax(0,1fr);align-items:start;gap:15px;padding:20px;display:grid}.community-card img{object-fit:cover;border-radius:11px;width:46px;height:46px}.community-card h3{letter-spacing:-.015em;margin:1px 0 4px;font-size:15px;font-weight:700}.community-card p{color:var(--muted);margin:0;font-size:12px;line-height:1.5}.community-links{gap:12px;margin-top:10px}.community-links a{font-size:12px}.site-footer{color:var(--quiet);justify-content:space-between;gap:20px;padding-top:34px;font-size:12px;display:flex}@media (max-width:900px){.hero{grid-template-columns:1fr .8fr;gap:36px}.project-card{flex-basis:calc(50% - 9px)}.community-grid{grid-template-columns:1fr}.community-card{grid-template-columns:42px minmax(0,1fr)}.community-card img{width:42px;height:42px}}@media (max-width:680px){.site-shell{width:min(100% - 36px,1120px);padding-top:22px}.topbar{margin-bottom:30px}.hero{grid-template-columns:1fr;gap:32px;padding-bottom:60px}.hero-image{aspect-ratio:16/9;grid-row:1}.hero-copy{grid-row:2}.hero h1{font-size:clamp(43px,14vw,57px)}.portfolio-section{padding:58px 0}.section-heading{grid-template-columns:1fr;gap:17px;margin-bottom:25px}.project-card{flex-basis:100%;min-height:0}.site-footer{flex-direction:column}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition:none!important}}.content h2{color:#374151;margin:1.5rem 0 .625rem;font-size:.9375rem;font-weight:600}.content h2:first-child{margin-top:0}.content h3{color:#6b7280;margin:1.25rem 0 .5rem;font-size:.875rem;font-weight:500}.content p{margin-bottom:.875rem}.content p:last-child{margin-bottom:0}.content ul{margin-bottom:.875rem;padding-left:1.25rem;list-style:outside}.content li{margin-bottom:.25rem}.content hr{border-color:#e5e7eb;margin:1.25rem 0}.dark .content h2{color:#d1d5db}.dark .content h3{color:#9ca3af}.dark .content hr{border-color:#1f2937}.article{color:#374151;font-size:1.0625rem;line-height:1.75}.article h2{letter-spacing:-.01em;color:#111827;margin:2.5rem 0 .875rem;font-size:1.25rem;font-weight:600}.article h3{color:#111827;margin:2rem 0 .75rem;font-size:1.0625rem;font-weight:600}.article h4{color:#111827;margin:1.75rem 0 .5rem;font-size:1rem;font-weight:600}.article h2:first-child,.article h3:first-child{margin-top:0}.article p{margin-bottom:1.25rem}.article ul,.article ol{margin-bottom:1.25rem;padding-left:1.5rem}.article ul{list-style:outside}.article ol{list-style:decimal}.article li{margin-bottom:.375rem}.article li>ul,.article li>ol{margin:.375rem 0 0}.article a{color:inherit;text-underline-offset:3px;-webkit-text-decoration:underline #d1d5db;text-decoration:underline #d1d5db;transition:text-decoration-color .15s}.article a:hover{text-decoration-color:#6b7280}.article strong{color:#111827;font-weight:600}.article blockquote{color:#6b7280;border-left:2px solid #e5e7eb;margin-bottom:1.25rem;padding-left:1.25rem;font-style:italic}.article blockquote p:last-child{margin-bottom:0}.article code{background:#f3f4f6;border-radius:.25rem;padding:.125rem .375rem;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.8125em}.article pre{background:#f9fafb;border:1px solid #e5e7eb;border-radius:.5rem;margin-bottom:1.25rem;padding:1rem 1.25rem;font-size:.875rem;line-height:1.7;overflow-x:auto}.article pre code{font-size:inherit;background:0 0;padding:0}.article img{border-radius:.5rem;max-width:100%;height:auto;margin:1.5rem 0}.article hr{border-color:#e5e7eb;margin:2.5rem 0}.article table{border-collapse:collapse;width:100%;margin-bottom:1.25rem;font-size:.9375rem}.article th{text-align:left;color:#111827;border-bottom:1px solid #e5e7eb;padding:.5rem .75rem .5rem 0;font-weight:600}.article td{border-bottom:1px solid #f3f4f6;padding:.5rem .75rem .5rem 0}.dark .article{color:#d1d5db}.dark .article h2,.dark .article h3,.dark .article h4,.dark .article strong{color:#f9fafb}.dark .article a{text-decoration-color:#4b5563}.dark .article a:hover{text-decoration-color:#9ca3af}.dark .article blockquote{color:#9ca3af;border-color:#374151}.dark .article code{background:#1f2937}.dark .article pre{background:#111827;border-color:#1f2937}.dark .article hr{border-color:#1f2937}.dark .article th{color:#f9fafb;border-color:#374151}.dark .article td{border-color:#1f2937}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.sr-only:focus{clip:auto;white-space:normal;z-index:50;color:#fff;background:#111827;border-width:0;border-radius:.5rem;width:auto;height:auto;margin:1rem;padding:1rem;position:static;top:1rem;left:1rem;overflow:visible}a:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible{outline-offset:2px;border-radius:4px;outline:2px solid #3b82f6}a:not(:focus-visible),button:not(:focus-visible){outline:none}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}