@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(../media/inter-cyrillic-ext-wght-normal.20g3-bbbhdq0_.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(../media/inter-cyrillic-wght-normal.2cxlyxah-fd35.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(../media/inter-greek-ext-wght-normal.0mkxydxl0e43d.woff2)format("woff2-variations");unicode-range:U+1F??}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(../media/inter-greek-wght-normal.1rx9vjatjkdar.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(../media/inter-vietnamese-wght-normal.2kcj5i_8uff48.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(../media/inter-latin-ext-wght-normal.3gdi_th3seg1n.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(../media/inter-latin-wght-normal.0gsaq8ukbf34m.woff2)format("woff2-variations");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}
@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(../media/fraunces-vietnamese-wght-normal.0i7lhkw2ij3q1.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(../media/fraunces-latin-ext-wght-normal.0t2awsxbm3c7a.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(../media/fraunces-latin-wght-normal.1v4l5w6-86t-v.woff2)format("woff2-variations");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}
@font-face{font-family:Space Mono;font-style:normal;font-display:swap;font-weight:400;src:url(../media/space-mono-vietnamese-400-normal.452suykb2jgcn.woff2)format("woff2"),url(../media/space-mono-vietnamese-400-normal.1537v-d0_112e.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Space Mono;font-style:normal;font-display:swap;font-weight:400;src:url(../media/space-mono-latin-ext-400-normal.31_unrole__js.woff2)format("woff2"),url(../media/space-mono-latin-ext-400-normal.3afh0e6u7_zzn.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Space Mono;font-style:normal;font-display:swap;font-weight:400;src:url(../media/space-mono-latin-400-normal.37_1qewfwlumh.woff2)format("woff2"),url(../media/space-mono-latin-400-normal.1hv-m834mchxi.woff)format("woff");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}
@font-face{font-family:Space Mono;font-style:normal;font-display:swap;font-weight:700;src:url(../media/space-mono-vietnamese-700-normal.1ijje0_w50tr1.woff2)format("woff2"),url(../media/space-mono-vietnamese-700-normal.1yax8-jhxzdjp.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Space Mono;font-style:normal;font-display:swap;font-weight:700;src:url(../media/space-mono-latin-ext-700-normal.2m6bh4rackjgg.woff2)format("woff2"),url(../media/space-mono-latin-ext-700-normal.1_mdr0o5wrv96.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Space Mono;font-style:normal;font-display:swap;font-weight:700;src:url(../media/space-mono-latin-700-normal.3dmnla43cklex.woff2)format("woff2"),url(../media/space-mono-latin-700-normal.3uu61z6b0_qze.woff)format("woff");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}
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:block))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial}}}@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]){-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;-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{.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.block{display:block}.flex{display:flex}.transform{transform:var(--tw-rotate-x, ) var(--tw-rotate-y, ) var(--tw-rotate-z, ) var(--tw-skew-x, ) var(--tw-skew-y, )}.border{border-style:var(--tw-border-style);border-width:1px}.filter{filter:var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, )}}:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#09090b;--surface:#121214;--elevated:#18181b;--hover:#202023;--line:#252529;--line-hi:#333338;--ink:#f5f5f4;--secondary:#aeaea9;--muted:#8f8f98;--accent:#a9c4a5;--accent-ink:#111a12;--accent-bg:#18231a;--heat0:#1c2020;--heat1:#294232;--heat2:#42664b;--heat3:#668d6b;--heat4:#a9c4a5;--mono:"Space Mono", "Courier New", monospace;--sans:"Inter Variable", Arial, sans-serif;--serif:"Fraunces Variable", Georgia, serif;--width:766px}[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#f8f7f2;--surface:#f0efe8;--elevated:#eeece3;--hover:#e9e6db;--line:#dedbd0;--line-hi:#c9c5b6;--ink:#252521;--secondary:#4e5149;--muted:#62655c;--accent:#395b3d;--accent-ink:#fffdf6;--accent-bg:#e2ebdc;--heat0:#e9ece2;--heat1:#c5d7bb;--heat2:#95b792;--heat3:#62956a;--heat4:#395b3d}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:66px}body{background:var(--bg);color:var(--ink);font:14px/1.65 var(--sans);margin:0;transition:background-color .2s,color .2s}h1,h2,h3,p,dl,dd,ul{margin:0}a{color:inherit;text-decoration:none}button{cursor:pointer}button,input{font:inherit}button,a{-webkit-tap-highlight-color:transparent}a,button,summary,input{outline-offset:4px}:focus-visible{outline:2px solid var(--accent)}img,svg{flex-shrink:0}.sr-only{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.shell{width:min(calc(100% - 36px), var(--width));margin-inline:auto}.skip{z-index:20;background:var(--accent);color:var(--accent-ink);padding:8px 14px;position:fixed;top:8px;left:16px;transform:translateY(-150%)}.skip:focus{transform:translateY(0)}.site-header{z-index:5;background:var(--bg);border-bottom:1px solid var(--line);position:sticky;top:0}.nav-inner{border-inline:1px solid var(--line);justify-content:space-between;align-items:center;gap:13px;min-height:53px;padding:0 16px;display:flex}.wordmark{font:700 23px/1 var(--mono);letter-spacing:-.14em;white-space:nowrap;padding-right:4px}.wordmark span:last-child{color:var(--accent)}.nav-links{color:var(--muted);font:11px/1.25 var(--mono);align-items:center;gap:15px;margin-left:auto;display:flex}.nav-links a{white-space:nowrap;padding:8px 0;transition:color .15s}.nav-links a:hover,.nav-links a[aria-current]{color:var(--ink)}.nav-actions{align-items:center;gap:7px;display:flex}.icon-button,.search-trigger{min-width:30px;height:31px;color:var(--secondary);background:0 0;border:1px solid #0000;border-radius:5px;justify-content:center;align-items:center;gap:5px;padding:0 5px;transition:background .15s,color .15s,border-color .15s;display:inline-flex}.icon-button:hover,.search-trigger:hover{color:var(--ink);background:var(--hover);border-color:var(--line-hi)}.search-trigger{border-color:var(--line-hi);background:var(--surface);padding-inline:7px}kbd{font:10px/1 var(--mono);color:var(--muted)}.mobile-menu{display:none}.masthead{border-bottom:1px solid var(--line)}.masthead-inner{color:var(--muted);border-inline:1px solid var(--line);font:10px/1.5 var(--mono);letter-spacing:.07em;justify-content:space-between;gap:8px;padding:9px 16px;display:flex}.masthead-inner>span,.micro,.text-link{align-items:center;gap:6px;display:inline-flex}.masthead-inner svg{color:var(--accent)}.masthead-inner i,.avatar-frame i{background:var(--accent);border-radius:50%;width:4px;height:4px;display:inline-block}.portfolio{border-inline:1px solid var(--line);position:relative}.minimap{z-index:2;gap:2px;display:grid;position:absolute;top:273px;left:calc(100% + 42px)}.minimap a{justify-content:flex-end;align-items:center;width:26px;height:10px;display:flex}.minimap a span{background:var(--line-hi);width:16px;height:1px;transition:width .15s,background-color .15s}.minimap a:nth-child(3n+1) span{width:24px}.minimap a:hover span,.minimap a:focus-visible span{background:var(--accent);width:26px}.hero-body{grid-template-columns:190px minmax(0,1fr);min-height:195px;display:grid}.avatar-frame{border-right:1px solid var(--line);background-image:radial-gradient(circle, var(--line-hi) 1px, transparent 1px);background-size:12px 12px;align-content:center;justify-items:center;gap:7px;padding:14px 12px;display:grid}.avatar-frame>span{white-space:nowrap;font:9px/1.3 var(--mono);color:var(--muted);background:var(--bg);letter-spacing:.09em;align-items:center;gap:6px;padding-inline:4px;display:flex}.avatar{aspect-ratio:1;object-fit:cover;border-radius:50%;width:min(100%,148px);height:auto}.avatar-drawing{background:var(--surface);color:var(--accent);border:1px solid var(--line-hi);transition:transform .3s,border-color .3s}.avatar-drawing:hover{border-color:var(--accent);transform:rotate(-4deg)}.avatar-drawing svg{width:100%;height:100%}.monogram{font:500 43px var(--serif);fill:var(--ink);letter-spacing:-.12em}.hero-copy{flex-direction:column;justify-content:center;min-width:0;padding:21px 20px;animation:.38s both arrive;display:flex}.eyebrow,.micro{font:10px/1.5 var(--mono);color:var(--muted)}.eyebrow{letter-spacing:.08em}.corner-cross{color:var(--accent);margin-right:2px}.hero h1,.subpage h1{font:500 clamp(25px, 4vw, 36px)/1.12 var(--serif);letter-spacing:-.04em;text-wrap:balance}.hero h1{margin-top:9px}.hero-role{color:var(--accent);font:12px/1.5 var(--mono);margin-top:8px}.hero-intro{max-width:460px;color:var(--secondary);margin-top:11px;font-size:13px;line-height:1.65}@keyframes arrive{0%{opacity:.2;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}.hero-actions{border-top:1px solid var(--line);min-height:53px;padding:9px 16px}.button-row{flex-wrap:wrap;align-items:center;gap:7px;display:flex}.button{border:1px solid var(--line-hi);background:var(--surface);min-height:32px;color:var(--ink);font:11px/1.4 var(--mono);border-radius:4px;justify-content:center;align-items:center;gap:7px;padding:5px 10px;transition:background .15s,border-color .15s,color .15s;display:inline-flex}.button:hover{background:var(--hover);border-color:var(--muted)}.button.primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent);font-weight:700}.button.primary:hover{filter:brightness(1.08)}.hatched{border-block:1px solid var(--line);background:repeating-linear-gradient(135deg, transparent 0 5px, var(--line) 5px 6px, transparent 6px 10px);height:22px}.row-title{color:var(--secondary);border-bottom:1px solid var(--line);align-items:center;gap:10px;padding:8px 16px;display:flex}.row-title span,.index{color:var(--accent)}.overview-grid{grid-template-columns:1.08fr 1fr;display:grid}.overview-grid>div{border-bottom:1px solid var(--line);min-width:0;min-height:44px;font:11px/1.45 var(--mono);align-items:center;gap:9px;padding:6px 14px;display:flex}.overview-grid>div:nth-child(odd){border-right:1px solid var(--line)}.small-icon{border:1px solid var(--line-hi);background:var(--surface);height:24px;color:var(--muted);border-radius:5px;flex:0 0 24px;place-items:center;display:inline-grid}.text-link{color:var(--accent);width:fit-content}.text-link:hover{text-underline-offset:3px;text-decoration:underline}.availability{color:var(--accent)}.status-dot{background:var(--accent);width:7px;height:7px;box-shadow:0 0 0 3px var(--accent-bg);border-radius:50%;flex-shrink:0;display:inline-block}.status-dot.off{background:var(--muted);box-shadow:none}.local-clock{flex-wrap:wrap;align-items:baseline;column-gap:7px;display:flex}.local-clock>span{font-variant-numeric:tabular-nums}.local-clock small{color:var(--muted);font-size:10px}.overview-email a,.contact-email{overflow-wrap:anywhere}.overview-email a:hover{color:var(--accent)}.overview-email .copy-wrap{margin-left:auto}.copy-wrap{display:inline-flex;position:relative}.copy-feedback{z-index:3;border:1px solid var(--line-hi);width:max-content;max-width:190px;color:var(--ink);background:var(--elevated);font:10px var(--mono);border-radius:4px;padding:3px 6px;position:absolute;top:100%;right:0}.social-grid{grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.social-card{align-items:center;gap:9px;min-width:0;min-height:69px;padding:9px 14px;transition:background .15s;display:flex}.social-card:not(:nth-child(3n)){border-right:1px solid var(--line)}.social-card:nth-child(n+4){border-top:1px solid var(--line)}.social-card:hover{background:var(--surface)}.social-card>svg:last-child{color:var(--muted);margin-left:auto;transition:transform .15s,color .15s}.social-card:hover>svg:last-child{color:var(--accent);transform:translate(2px,-2px)}.social-icon,.widget-icon{height:34px;color:var(--ink);background:var(--elevated);border:1px solid var(--line-hi);border-radius:6px;flex:0 0 34px;place-items:center;display:grid}.social-card strong,.social-card small{font-family:var(--mono);display:block}.social-card strong{font-size:12px}.social-card small{color:var(--muted);font-size:9px}.section{border-bottom:1px solid var(--line);padding:24px 16px 26px}.section-head{grid-template-columns:auto minmax(0,1fr) auto;align-items:baseline;gap:10px;margin-bottom:14px;display:grid}.index,.section-meta{font:10px/1.5 var(--mono);letter-spacing:.06em}.section-meta{color:var(--muted);text-align:right}.section h2{font:500 clamp(22px, 3vw, 30px)/1.12 var(--serif);letter-spacing:-.035em}.editorial{color:var(--secondary);border-left:1px solid var(--line-hi);max-width:68ch;padding-left:12px}.editorial p+p{margin-top:8px}.section-lead{color:var(--secondary);margin:-3px 0 12px}.stack{border-top:1px solid var(--line)}.stack-row{border-bottom:1px solid var(--line);grid-template-columns:160px 1fr;align-items:baseline;gap:10px;padding:8px 0;display:grid}.stack-row h3{font:11px/1.5 var(--mono);color:var(--secondary)}.stack-row h3 span{color:var(--muted);margin-right:9px}.stack-row ul,.tags{flex-wrap:wrap;gap:5px;padding:0;list-style:none;display:flex}.stack-row li,.tags li{min-height:23px;font:10px/1.35 var(--mono);color:var(--secondary);border:1px solid var(--line);background:var(--surface);border-radius:4px;align-items:center;gap:5px;padding:2px 6px;transition:background .15s,color .15s,border-color .15s;display:inline-flex}.stack-row .tech-fallback{color:var(--muted)}.brand-image{object-fit:contain;flex-shrink:0;display:block}.brand-image-light,[data-theme=light] .brand-image-dark{display:none}[data-theme=light] .brand-image-light{display:block}.stack-row li:hover,.tags li:hover{background:var(--hover);color:var(--ink);border-color:var(--line-hi)}.record{border:1px solid var(--line);background:var(--bg);border-radius:5px}.record+.record,.project-row+.project-row{margin-top:5px}.record summary{cursor:pointer;grid-template-columns:auto minmax(0,1fr) auto auto;align-items:center;gap:9px;padding:9px 11px;list-style:none;transition:background-color .15s;display:grid}.record summary::-webkit-details-marker{display:none}.record summary:hover{background:var(--surface)}.record-mark{background:var(--elevated);border:1px solid var(--line-hi);width:31px;height:31px;font:700 10px var(--mono);color:var(--accent);border-radius:4px;place-items:center;display:grid}.record-label{min-width:0}.record-label strong,.record-label small{display:block}.record-label strong{font-size:13px}.record-label small{color:var(--muted);font-size:11px}.record-period{color:var(--muted);font:10px/1.4 var(--mono);white-space:nowrap}.chevron{color:var(--muted);transition:transform .2s}details[open] .chevron{transform:rotate(180deg)}.record-content{border-top:1px dashed var(--line);color:var(--secondary);padding:10px 12px 13px 51px}.record-content>*+*{margin-top:8px}details[open] .record-content{animation:.2s both arrive}@supports (interpolate-size:allow-keywords){.record{interpolate-size:allow-keywords}.record::details-content{height:0;transition:height .22s ease, content-visibility .22s allow-discrete;overflow:clip}.record[open]::details-content{height:auto}}.filters{flex-wrap:wrap;gap:5px;margin-bottom:13px;display:flex}.filters button,.segmented button{color:var(--muted);border:1px solid var(--line);background:var(--bg);font:10px/1.35 var(--mono);border-radius:4px;padding:5px 7px}.filters button:hover,.segmented button:hover{color:var(--ink);border-color:var(--line-hi)}.filters button[aria-pressed=true],.segmented button[aria-pressed=true]{color:var(--accent);background:var(--accent-bg);border-color:var(--accent)}.project-group+.project-group{margin-top:15px}.group-label{color:var(--secondary);font:11px/1.4 var(--mono);align-items:center;gap:7px;padding:5px 0 8px;display:flex}.group-label span{color:var(--muted);margin-left:auto}.group-label svg{color:var(--accent)}.project-row{position:relative}.project-row:target .record{border-color:var(--accent)}.project-external{position:absolute;top:10px;right:31px}.project-row:has(.project-external) summary{grid-template-columns:auto minmax(0,1fr) 54px auto;padding-right:11px}.project-image{border:1px solid var(--line-hi);background:var(--surface);border-radius:4px;width:100%;height:auto}.project-note{color:var(--accent);font-size:12px}.play-grid{grid-template-columns:1fr 1fr;gap:8px;display:grid}.play-card{background:var(--surface);border:1px solid var(--line);border-radius:5px;min-width:0;padding:10px}.play-card h3{align-items:center;gap:6px;margin-top:8px;font-size:12px;display:flex}.play-card p{color:var(--secondary);font-size:12px}.experiment-view{border:1px solid var(--line);background-color:var(--bg);border-radius:3px;height:105px;overflow:hidden}.dot-view{background-image:radial-gradient(circle, var(--accent) 1px, transparent 1px);place-items:center;display:grid}.dot-view span{background:var(--bg);border:1px solid var(--line-hi);font:500 28px var(--serif);padding:6px 8px}.hue-view{grid-template-columns:repeat(8,1fr);gap:3px;padding:5px;display:grid}.hue-view span{border-radius:2px;transition:opacity .2s}.range-label{font:10px var(--mono);color:var(--muted);align-items:center;gap:7px;margin-top:6px;display:flex}.range-label input{min-width:50px;max-width:130px;accent-color:var(--accent)}.mask-button{margin:7px 6px 0 0}.empty{border:1px dashed var(--line-hi);color:var(--secondary);background:var(--surface);border-radius:5px;align-items:center;gap:11px;padding:13px;display:flex}.empty>svg{color:var(--accent)}.empty strong,.empty p{font-size:12px}.empty strong{color:var(--ink)}.empty .button,.empty .badge{flex-shrink:0;margin-left:auto}.badge{font:10px var(--mono);border:1px solid var(--line-hi);color:var(--secondary);border-radius:4px;align-items:center;gap:7px;padding:4px 7px;display:inline-flex}.widget-toolbar,.calendar-caption{justify-content:space-between;align-items:center;gap:8px;display:flex}.widget-toolbar{margin-bottom:8px}.widget-actions,.segmented{align-items:center;gap:6px;display:flex}.widget-actions .text-link{font:10px var(--mono)}.github-calendar,.insights-chart{background:var(--surface);border:1px solid var(--line);border-radius:5px;padding:9px}.heatmap-scroll{scrollbar-width:thin;padding:5px 3px;overflow-x:auto}.heatmap{grid-template-rows:repeat(7,1fr);grid-auto-flow:column;gap:3px;width:100%;min-width:620px;display:grid}.heatmap button{aspect-ratio:1;border:1px solid var(--ink);border-radius:2px;width:100%}@supports (color:color-mix(in lab, red, red)){.heatmap button{border:1px solid color-mix(in srgb, var(--ink) 8%, transparent)}}.heatmap button{padding:0;transition:transform .15s,box-shadow .15s}.heatmap button:hover{z-index:1;transform:scale(1.15)}[data-level="0"]{background:var(--heat0)}[data-level="1"]{background:var(--heat1);--lift:2px}[data-level="2"]{background:var(--heat2);--lift:4px}[data-level="3"]{background:var(--heat3);--lift:6px}[data-level="4"]{background:var(--heat4);--lift:8px}.heatmap-3d{padding:0 10px;transform:skew(-12deg)scaleY(.83)}.heatmap-3d button{transform:translateY(calc(var(--lift,0px) * -1));box-shadow:1px var(--lift,0px) 0 currentColor}@supports (color:color-mix(in lab, red, red)){.heatmap-3d button{box-shadow:1px var(--lift,0px) 0 color-mix(in srgb, currentColor 20%, var(--bg))}}.heatmap-3d button:hover{transform:translateY(calc(var(--lift,0px) * -1)) scale(1.15)}.calendar-caption{margin-top:5px}.legend{white-space:nowrap;gap:3px}.legend i{border:1px solid var(--line-hi);border-radius:2px;width:9px;height:9px}.github-lists{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin-top:9px;display:grid}.github-lists h3,.feed-details h3{color:var(--secondary);font:11px var(--mono);padding:4px 0}.feed-link{border-bottom:1px solid var(--line);align-items:center;gap:6px;min-height:34px;padding:4px 6px;font-size:12px;transition:background .15s;display:flex}.feed-link:hover{background:var(--surface)}.feed-link>span:first-child{flex:1;min-width:0}.feed-link strong,.feed-link small{overflow-wrap:anywhere;display:block}.feed-link small,.stars{color:var(--muted);font:10px var(--mono)}.stars{align-items:center;gap:3px;display:inline-flex}.feed-link>svg:last-child{color:var(--muted)}.spotify-empty .widget-icon{height:44px;color:var(--accent);flex-basis:44px}.spotify-track{grid-template-columns:auto 1fr auto;align-items:center;gap:12px;animation:.2s both arrive;display:grid}.spotify-track img{border-radius:5px}.spotify-track strong{font-size:15px;display:block}.spotify-track p,.feed-details,.progress-row{color:var(--secondary);font-size:12px}.progress-row{font-family:var(--mono);align-items:center;gap:9px;margin-top:7px;display:flex}.progress-row progress{width:100%;height:6px;accent-color:var(--accent)}.feed-details{border-top:1px solid var(--line);margin-top:9px;padding-top:8px}.feed-details summary{cursor:pointer}.feed-details ul{padding:0;list-style:none}.feed-details li{justify-content:space-between;gap:5px;padding:3px 0;display:flex}.feed-details time,.mono{font:10px var(--mono)}.metrics{border:1px solid var(--line);border-radius:5px;grid-template-columns:repeat(3,minmax(0,1fr));margin-bottom:8px;display:grid}.metrics>div{padding:8px}.metrics>div+div{border-left:1px solid var(--line)}.metrics dt{font:10px/1.35 var(--mono);color:var(--muted)}.metrics dd{font:19px/1.4 var(--mono)}.chart-bars{border-bottom:1px solid var(--line-hi);gap:3px;height:100px;display:flex}.chart-column{flex:1;align-items:end;min-width:0;display:flex}.chart-column span{background:var(--accent);opacity:.66;border-radius:2px 2px 0 0;width:100%}.chart-column:hover span,.chart-column:focus span{opacity:1}.bookmark-list{padding:0;list-style:none}.section>.bookmark-list+.button{margin-top:10px}.contact-box>p{color:var(--secondary)}.contact-email{color:var(--accent);font:clamp(13px, 2.4vw, 17px) var(--mono);align-items:center;gap:6px;margin:4px 0 10px;display:inline-flex}.contact-email:hover{text-decoration:underline}.footer{padding:16px}.footer-brand{align-items:center;gap:10px;display:flex}.footer-brand strong,.footer-brand small{display:block}.footer-brand small{color:var(--muted);font-size:11px}.top-link{white-space:nowrap;font:10px var(--mono);margin-left:auto}.footer dl{border-top:1px solid var(--line);font:11px/1.5 var(--mono);grid-template-columns:repeat(auto-fit,minmax(124px,1fr));gap:10px;margin:10px 0;padding-top:9px;display:grid}.footer dt{color:var(--muted);margin-bottom:3px}.footer dd{color:var(--secondary)}.subpage{border-inline:1px solid var(--line);min-height:calc(100dvh - 54px);padding:23px 18px 45px}.subpage>.eyebrow{margin-top:20px}.subpage h1{margin:4px 0 10px}.subpage>p{color:var(--secondary);margin-bottom:12px}.subpage .empty{margin-top:12px}.blog-category{border-top:1px solid var(--line);padding:6px 0}.blog-category h2{color:var(--secondary);font:11px var(--mono)}.article-toc,.prose pre{background:var(--surface);border:1px solid var(--line);border-radius:5px;padding:10px}.article-toc ul{padding-left:17px;list-style:outside}.article-toc a,.prose a{color:var(--accent);text-decoration:underline}.prose{color:var(--secondary);margin-top:12px}.prose :is(p,ul,ol,pre,blockquote)+*{margin-top:10px}.prose :is(h2,h3){font:500 23px var(--serif);color:var(--ink)}.prose :is(h2,h3)+*{margin-top:6px}.prose ol{padding-left:1.6em;list-style:decimal}.prose pre{overflow-x:auto}.prose code{font:12px var(--mono)}.hljs-keyword,.hljs-selector-tag{color:var(--accent)}.hljs-string,.hljs-literal,.hljs-number{color:#ab7e45}.hljs-comment{color:var(--muted)}.palette{z-index:10;border:1px solid var(--line-hi);width:min(540px,100% - 30px);max-width:none;max-height:76dvh;color:var(--ink);background:var(--surface);border-radius:7px;margin:0 auto;padding:0;position:fixed;inset:12vh 0 auto;box-shadow:0 16px 50px #0005}.palette[open]{animation:.18s both arrive}.palette::backdrop{background:#0008}.palette-inner{padding:9px}.palette-top,.palette-foot,.palette-input{align-items:center;gap:8px;display:flex}.palette-top{justify-content:space-between}.palette-top h2{font:12px var(--mono);align-items:center;gap:6px;display:flex}.palette-input{border-bottom:1px solid var(--line-hi);color:var(--muted);padding:6px}.palette-input input{width:100%;min-width:0;color:var(--ink);background:0 0;outline:none}.palette-input:focus-within{border-color:var(--accent)}.palette-results{max-height:45dvh;margin:5px 0;overflow-y:auto}.palette-results [role=option]{width:100%;color:var(--secondary);text-align:left;border-radius:4px;grid-template-columns:1fr auto auto;align-items:center;gap:6px;padding:6px;display:grid}.palette-results [role=option][aria-selected=true]{color:var(--ink);background:var(--hover)}.palette-results small,.palette-foot,.palette-empty{color:var(--muted);font:10px/1.5 var(--mono)}.palette-empty{padding:6px}.palette-foot{border-top:1px solid var(--line);padding:5px 0 0}.toast{z-index:8;background:var(--surface);border:1px solid var(--line-hi);color:var(--ink);font:11px var(--mono);border-radius:5px;align-items:center;gap:7px;padding:8px;display:flex;position:fixed;bottom:14px;right:14px}@media (max-width:936px){.minimap{display:none}}@media (max-width:680px){.nav-links{display:none}.mobile-menu{display:inline-flex}.nav-links.expanded{background:var(--surface);border-bottom:1px solid var(--line-hi);grid-template-columns:repeat(2,minmax(0,1fr));gap:2px 10px;padding:8px 17px;display:grid;position:absolute;top:100%;left:0;right:0}.nav-links a{padding:8px}.shell{width:calc(100% - 24px)}.hero-body{grid-template-columns:140px minmax(0,1fr)}.hero-copy{padding-inline:13px}}@media (max-width:470px){.shell{width:calc(100% - 14px)}.nav-inner,.masthead-inner{padding-inline:10px}.masthead-inner{font-size:8px}.hero-body{grid-template-columns:103px minmax(0,1fr);min-height:170px}.avatar-frame{grid-template-columns:minmax(0,1fr);min-width:0;padding-inline:6px}.avatar-frame>span{gap:4px;padding-inline:2px;font-size:8px}.hero-copy{padding:11px}.hero-copy .eyebrow{font-size:8px}.hero-role{font-size:10px}.hero-intro{font-size:11px}.hero-actions{grid-template-columns:repeat(2,minmax(0,1fr));padding-inline:9px;display:grid}.button{font-size:10px}.hatched{height:15px}.overview-grid{grid-template-columns:1fr}.overview-grid>div:nth-child(odd){border-right:0}.overview-grid>div{min-height:39px;padding-inline:9px}.row-title{padding-inline:10px}.social-card{gap:5px;min-height:51px;padding-inline:6px}.social-card small{display:none}.social-card strong{font-size:10px}.social-icon{flex-basis:22px;height:22px}.social-icon svg{width:12px;height:12px}.social-card>svg:last-child{width:10px}.section{padding:20px 9px}.section-head{gap:6px}.section-meta{max-width:84px;font-size:8px}.stack-row{grid-template-columns:1fr;gap:5px}.record summary{grid-template-columns:auto minmax(0,1fr) auto;gap:5px;padding:7px}.record:not(.project-record) .record-period{grid-area:2/2}.record:not(.project-record) .chevron{grid-area:1/3}.project-record summary{grid-template-columns:auto minmax(0,1fr) auto auto}.project-row:has(.project-external) summary{grid-template-columns:auto minmax(0,1fr) 33px auto}.project-row:has(.project-external) .project-number{visibility:hidden}.project-external{top:7px;right:26px}.record-content{padding-left:9px}.play-grid{grid-template-columns:1fr}.spotify-empty{flex-wrap:wrap}.spotify-empty .badge{margin-left:0}.github-lists{grid-template-columns:1fr}.footer{padding-inline:9px}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}
:root{--line:#202024;--surface:#111113;--wide:1380px}[data-theme=light]{--bg:#fafafa;--surface:#f1f1f1;--elevated:#ebebeb;--hover:#e7e7e7;--line:#e1e1e1;--line-hi:#cecece;--ink:#222224;--secondary:#454549;--muted:#606067}.announcement{border-bottom:1px solid var(--line);min-height:40px;color:var(--secondary);font:11px/1.5 var(--mono);justify-content:center;align-items:center;gap:9px;padding:6px 12px;display:flex}.announcement a{border:1px solid var(--line);color:var(--ink);white-space:nowrap;align-items:center;gap:4px;padding:1px 5px;display:inline-flex}.announcement a:hover{background:var(--surface)}.site-header{background:color-mix(in srgb, var(--bg) 96%, transparent)}body:has(.portfolio-stage) .site-header{--nav-tint:color-mix(in srgb, var(--bg) 72%, transparent);background:linear-gradient(90deg, transparent 14%, var(--nav-tint) 32%, var(--nav-tint) 68%, transparent 86%)}@media (max-width:680px){body:has(.portfolio-stage) .site-header{background:var(--nav-tint);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}}.nav-inner{gap:13px;min-height:47px;padding-inline:10px}.nav-links{gap:16px;font-size:12px}.nav-links a[aria-current=page]{color:var(--ink)}.nav-inner .wordmark{font-size:24px;font-style:italic}.search-trigger{border-radius:16px;height:27px;padding-inline:9px}.search-trigger kbd{background:var(--elevated);border-radius:3px;padding:2px 3px}.theme-button{border-left:1px solid var(--line);border-radius:0}.wide-header .nav-inner,.catalog-page{width:min(calc(100% - 28px), var(--wide))}body:has(.catalog-page) .site-footer{width:min(calc(100% - 28px), var(--wide))}.portfolio,.contact-page{font-family:var(--mono)}.portfolio-stage{isolation:isolate}.portfolio-background{z-index:-1;pointer-events:none;color:#75b39c;background:radial-gradient(at 4% 30%,#15322970,#0000 52%),radial-gradient(at 97% 75%,#12372f60,#0000 50%);position:fixed;inset:0}.portfolio-background svg{width:100%;height:100%;display:block;-webkit-mask-image:linear-gradient(90deg,#000 8%,#000c 16%,#0002 33% 67%,#000c 84%,#000 92%);mask-image:linear-gradient(90deg,#000 8%,#000c 16%,#0002 33% 67%,#000c 84%,#000 92%)}.background-mesh{opacity:.27;stroke-width:1px}.background-nodes{opacity:.54}.background-signals path{opacity:.72;stroke-width:1.5px;stroke-dasharray:2.8 97.2;animation:24s linear infinite background-signal}.background-signals path:nth-child(2n){animation-duration:32s;animation-delay:-13s}.background-signals path:nth-child(3n){animation-delay:-21s}@keyframes background-signal{to{stroke-dashoffset:-100px}}[data-theme=light] .portfolio-background{color:#4a806d;opacity:.45;background:radial-gradient(at 4% 30%,#dceee8,#0000 50%),radial-gradient(at 97% 75%,#dcece5,#0000 48%)}@media (max-width:920px){.portfolio-background svg{-webkit-mask-image:linear-gradient(90deg,#0009,#0003 28% 72%,#0009);mask-image:linear-gradient(90deg,#0009,#0003 28% 72%,#0009)}.portfolio-background .background-signals path:nth-child(2n){display:none}}@media (prefers-reduced-motion:reduce){.portfolio-background .background-signals{display:none}.portfolio-background .background-signals path{animation:none}}.portfolio .hero-body{grid-template-columns:164px minmax(0,1fr);min-height:160px}.portfolio .avatar-frame{background-image:none;padding:3px}.portfolio .avatar{width:min(100%,158px)}.portfolio .avatar-drawing{color:var(--secondary);background:radial-gradient(circle at 42% 37%, var(--elevated), var(--bg) 77%)}.portfolio .hero-copy{justify-content:stretch;padding:0}.portfolio .hero h1{border-bottom:1px solid var(--line);text-wrap:initial;margin:0;padding:9px 13px;font-size:clamp(24px,3.1vw,32px)}.portfolio .hero-role{color:var(--secondary);border-bottom:1px solid var(--line);margin:0;padding:6px 13px}.hero-signal{isolation:isolate;flex:1;align-content:center;gap:5px;min-height:50px;padding:9px 13px;display:grid;position:relative;overflow:hidden}.hero-headline{color:var(--ink);font:600 clamp(14px, 2vw, 21px)/1.22 var(--serif)}.hero-specialties{border-top:1px solid var(--line);padding:7px 12px}.signal-texture{opacity:.18;pointer-events:none;z-index:-1;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='296' height='13'%3E%3Ctext x='0' y='10' fill='%2384867f' font-family='monospace' font-size='9' letter-spacing='1'%3EOQ 01010 CIX / HTML · IA 11001 · REACT · SQL%3C/text%3E%3C/svg%3E");position:absolute;inset:0;-webkit-mask-image:linear-gradient(90deg,#000 5%,#0000 94%);mask-image:linear-gradient(90deg,#000 5%,#0000 94%)}.portfolio .hero-intro{max-width:72ch;color:var(--ink);font:11px/1.55 var(--mono);text-shadow:0 0 7px var(--bg), 0 0 10px var(--bg);margin:0}.portfolio .hero-actions{min-height:43px;padding:6px 12px}.portfolio .hero-actions .button{min-height:28px}.portfolio .button.primary,.contact-page .button.primary{background:var(--ink);color:var(--bg);border-color:var(--ink)}.portfolio .hatched{height:28px}.overview-grid{grid-template-columns:1.13fr 1fr}.overview-grid>div{min-height:42px;padding:5px 12px;font-size:12px}.overview-grid .text-link{color:var(--ink)}.small-icon{background:var(--surface);border-radius:7px;flex-basis:25px;height:25px}.social-card{gap:10px;min-height:60px;padding:9px 12px}.social-card strong{font-size:13px}.social-card small{font-size:10px}.social-card.studio-link{border-right:0;grid-column:span 2}.social-icon{border-color:var(--ink);background:var(--ink);color:var(--bg);border-radius:8px;flex-basis:31px;height:31px}.portfolio .section{padding:14px 13px 20px}.portfolio .section-head{align-items:baseline;gap:7px;margin-bottom:12px;display:flex}.portfolio .section-head .index{display:none}.portfolio .section h2{font:700 clamp(21px, 3vw, 29px)/1.15 var(--mono);letter-spacing:-.065em}.portfolio .section-meta{letter-spacing:0;text-align:left;font-size:10px}.portfolio .editorial{max-width:none;color:var(--secondary);font:13px/1.75 var(--mono);border:0;margin:0;padding:0 0 0 2.2ch;list-style:outside}.editorial li+li{margin-top:6px}.editorial li::marker{color:var(--muted)}.portfolio .section-lead{font-size:12px}.portfolio .stack-row{grid-template-columns:minmax(150px,30%) 1fr}.portfolio .stack-row h3{padding-inline:4px;font-size:12px}.portfolio .stack-row li{color:var(--ink);font-size:11px}.tech-example{color:inherit;align-items:center;gap:5px;display:inline-flex}.tech-example:hover{text-underline-offset:2px;text-decoration:underline}.tech-example>svg:last-of-type{color:var(--accent)}.portfolio .record{border-width:0 0 1px;border-radius:0}.portfolio .record+.record,.portfolio .project-row+.project-row{margin-top:0}.portfolio .record summary{padding-inline:5px}.portfolio .record-content{padding-inline:44px 8px}.portfolio .record-label strong{font:700 13px/1.55 var(--mono)}.portfolio .record-label small{font:11px/1.5 var(--mono)}.portfolio .record-content>p{font:12px/1.7 var(--mono)}.portfolio .record-mark{color:var(--ink)}.portfolio .project-row:has(.project-external) summary{padding-right:5px}.portfolio .project-external{right:24px}.section-cta{justify-content:center;margin-top:13px;display:flex}.section-cta .button{background:var(--ink);color:var(--bg)}.section-cta .button:hover{opacity:.88}.portfolio .bookmark-list .feed-link{gap:12px;padding:8px 5px}.bookmark-list .feed-link strong{font:700 12px/1.55 var(--mono)}.portfolio .contact-box>p{font-size:12px}.portfolio .empty,.portfolio .github-calendar,.portfolio .insights-chart{border-radius:2px}.portfolio .github-calendar,.portfolio .insights-chart{background:0 0}.heatmap-months{min-width:620px;color:var(--muted);font:8px/1.4 var(--mono);gap:3px;margin-bottom:4px;display:grid}.github-stats{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:7px 3px;display:grid}.github-stats dt{color:var(--muted);font:10px/1.4 var(--mono)}.github-stats dd{color:var(--accent);font:700 16px/1.5 var(--mono)}.github-stats small{color:var(--secondary);font:10px/1.5 var(--mono)}:root:not([data-theme=light]){--heat0:#202024;--heat1:#123324;--heat2:#21543b;--heat3:#358750;--heat4:#73d483}.featured-rail{display:none}.minimap{z-index:2;position:fixed;top:40%;left:auto;right:clamp(20px,3vw,70px)}.minimap a[aria-current=location] span{background:var(--ink);width:26px}.minimap a span{height:2px}.back-to-top{z-index:3;background:var(--elevated);border-color:var(--line);position:fixed;bottom:18px;right:clamp(14px,2vw,55px)}@media (min-width:1250px){.featured-rail{width:clamp(160px, calc((100vw - var(--width)) / 2 - 82px), 238px);z-index:3;font-family:var(--mono);display:block;position:fixed;top:30%;left:clamp(20px,3.25vw,72px)}.featured-annotation{color:var(--muted);align-items:end;gap:10px;margin:-32px 0 7px;display:flex}.featured-annotation>span{font:italic 500 14px/1.15 var(--serif);margin-left:9px;transform:rotate(-8deg)}.featured-annotation .icon-button{width:24px;min-width:0;height:24px;margin-left:auto}.featured-panel{border:1px solid var(--line-hi);background:var(--surface);border-radius:8px;padding:9px}.featured-label{color:var(--muted);align-items:center;gap:5px;margin-bottom:8px;font-size:10px;display:flex}.featured-label span{border:1px solid var(--line-hi);margin-left:auto;padding-inline:4px}.featured-panel>img{border:1px solid var(--line-hi);border-radius:4px;width:100%;height:auto}.featured-panel strong{margin:8px 2px 2px;font-size:15px;display:block}.featured-panel p{color:var(--muted);margin:0 2px 10px;font-size:11px}.featured-panel a{align-items:center;gap:4px;padding:2px;font-size:11px;display:inline-flex}.featured-panel a:hover{text-decoration:underline}.featured-caption{color:var(--muted);text-align:right;margin:4px 2px;font-size:9px}}.home-articles{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;display:grid}.catalog-page{border-inline:1px solid var(--line);min-height:64vh;font-family:var(--mono)}.catalog-heading{border-bottom:1px solid var(--line);padding:27px 13px 13px}.catalog-heading .eyebrow{letter-spacing:0;font-size:12px}.catalog-heading h1{font:700 clamp(21px, 3.6vw, 34px)/1.18 var(--mono);letter-spacing:-.067em;margin-top:4px}.catalog-heading p{color:var(--muted);margin-top:8px;font-size:12px}.catalog-toolbar{border-bottom:1px solid var(--line);justify-content:flex-end;padding:9px 13px;display:flex}.catalog-search{width:min(100%,260px);color:var(--muted);border:1px solid var(--line);background:var(--surface);border-radius:4px;align-items:center;gap:7px;padding:5px 8px;display:flex}.catalog-search:focus-within{border-color:var(--muted)}.catalog-search input{width:100%;min-width:0;color:var(--ink);background:0 0;outline:0;font-size:12px}.catalog-body{grid-template-columns:minmax(155px,18%) minmax(0,1fr);min-height:48vh;display:grid}.catalog-side{border-right:1px solid var(--line);padding:11px 9px}.catalog-side>p{margin:0 5px 8px;font-size:12px;font-weight:700}.catalog-side [role=group]{gap:2px;display:grid}.catalog-side button{text-align:left;color:var(--secondary);border-radius:4px;justify-content:space-between;align-items:center;gap:6px;padding:5px 7px;font-size:11px;display:flex}.catalog-side button span{color:var(--muted)}.catalog-side button:hover,.catalog-side button[aria-pressed=true]{color:var(--ink);background:var(--elevated)}.catalog-results{padding:11px 13px 24px}.catalog-result-bar{color:var(--muted);justify-content:space-between;align-items:center;gap:10px;margin-bottom:9px;font-size:11px;display:flex}.catalog-result-bar button{color:var(--secondary);text-underline-offset:3px;text-decoration:underline}.catalog-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;display:grid}.catalog-item{min-width:0}.catalog-card,.play-card{border:1px solid var(--line);background:var(--surface);border-radius:6px;flex-direction:column;min-width:0;height:100%;transition:border-color .16s;display:flex;overflow:hidden}.catalog-card:hover,.play-card:hover{border-color:var(--muted)}.catalog-preview{display:block}.catalog-preview img,.research-cover{aspect-ratio:1.77;object-fit:cover;object-position:top;width:100%;display:block}.research-cover{color:var(--secondary);font:10px var(--mono);background:radial-gradient(circle, var(--line-hi) 1px, transparent 1px) 0 0 / 10px 10px, var(--bg);place-content:center;justify-items:center;gap:7px;display:grid}.research-cover svg{color:var(--accent)}.catalog-card-body{flex-direction:column;flex:1;gap:4px;min-width:0;padding:10px;display:flex}.catalog-card-body h3{font:700 13px/1.5 var(--mono);justify-content:space-between;align-items:baseline;gap:5px;display:flex}.catalog-card-body h3 a{align-items:center;gap:6px;display:inline-flex}.catalog-card-body h3 a img{flex:none}.catalog-card-body h3 svg{color:var(--muted)}.catalog-card-body p{color:var(--secondary);font:11px/1.55 var(--mono)}.catalog-card-meta{color:var(--muted);font:10px/1.5 var(--mono);flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:5px;margin-top:auto;padding-top:6px;display:flex}.article-cover{aspect-ratio:2.04;color:#e9efed;border-bottom:1px solid var(--line);background:radial-gradient(circle at 85% 80%,#304751,#0000 70%),#131922;align-content:center;gap:3px;min-height:108px;padding:10px 13px;display:grid;position:relative;overflow:hidden}.article-cover:after{content:"";opacity:.25;pointer-events:none;background-image:linear-gradient(90deg,#fff4 1px,#0000 1px),linear-gradient(#fff4 1px,#0000 1px);background-size:23px 23px;position:absolute;inset:0;-webkit-mask-image:linear-gradient(90deg,#0000 24%,#000);mask-image:linear-gradient(90deg,#0000 24%,#000)}.article-cover span,.article-cover small{z-index:1;font:9px/1.45 var(--mono);letter-spacing:.075em;position:relative}.article-cover strong{z-index:1;font:700 clamp(16px, 2.1vw, 28px)/1.2 var(--mono);letter-spacing:-.065em;position:relative}.article-cover.cover-orders{background:radial-gradient(circle at 87% 82%,#926436,#0000 74%),#291e1a}.article-cover.cover-vision{background:radial-gradient(circle at 85% 80%,#554388,#0000 70%),#1d1934}.article-cover.cover-test{background:radial-gradient(circle at 88% 80%,#296b5b,#0000 70%),#142726}.catalog-page .play-card{padding:0}.play-grid{gap:9px}.play-card{padding:0}.play-card .experiment-view{border:0;border-bottom:1px solid var(--line);border-radius:0;height:clamp(125px,15vw,186px)}.play-copy{padding:8px 10px 11px}.play-copy h3{font-family:var(--mono);margin-top:0}.play-copy p{font:11px/1.6 var(--mono)}.play-copy .demo-control{margin-top:8px}.demo-chart{color:var(--secondary);place-items:center;display:grid}.demo-chart svg{max-width:92%;height:86%}.chart-gridline{stroke:var(--line-hi);stroke-width:.7px}.chart-area{fill:color-mix(in srgb, var(--accent) 16%, transparent)}.chart-trend{stroke:var(--accent)}.demo-bars{justify-content:center;align-items:end;gap:4px;padding:15px 12px;display:flex}.demo-bars i{background:var(--muted);border-radius:2px 2px 0 0;width:6%}.demo-bars.is-loading i{background:var(--elevated);animation:1.1s ease-in-out 3 alternate chart-placeholder}@keyframes chart-placeholder{to{background:var(--line-hi)}}.contact-page{border-inline:1px solid var(--line);min-height:72vh}.contact-page .catalog-heading{padding-top:32px}.contact-page-body{padding:22px 13px 28px}.contact-paths{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-bottom:20px;display:grid}.contact-paths>section{background:var(--surface);border:1px solid var(--line);border-radius:5px;padding:12px}.contact-page-body h2{color:var(--ink);font:650 18px/1.3 var(--serif);margin-bottom:6px}.contact-paths p{color:var(--secondary);margin-bottom:10px;font-size:12px}.project-record::details-content{opacity:0;block-size:0;transition:opacity .18s ease, block-size .2s ease, content-visibility .2s allow-discrete;overflow:clip}.project-record[open]::details-content{opacity:1;block-size:auto}@supports (interpolate-size:allow-keywords){.project-record{interpolate-size:allow-keywords}}.catalog-project-links{border-top:1px solid var(--line);padding-top:6px;font-size:11px}.github-repositories{margin-bottom:12px}.github-repositories h3{color:var(--secondary);font:12px var(--mono);margin-bottom:4px}.repo-technologies{color:var(--accent)}.github-lists.github-events{grid-template-columns:minmax(0,1fr)}.case-study .case-kicker{margin-top:13px}.case-study .article-toc a,.footer-data-links a{align-items:center;min-height:24px;display:inline-flex}.footer-data-links a{width:fit-content;display:flex}.case-study h1{overflow-wrap:anywhere;align-items:center;gap:10px;display:flex}.case-study h1 img{flex:none}.case-study>.tags,.case-study>.button-row{margin-block:10px}.case-study figure{margin-block:14px}.case-study figure img{border:1px solid var(--line);border-radius:4px;width:100%;height:auto;display:block}.case-study figcaption{color:var(--secondary);font:11px/1.5 var(--mono);margin-top:5px}.case-study .case-flow{flex-wrap:wrap;gap:6px;padding:0;list-style:none;display:flex}.case-flow li{border:1px solid var(--line);background:var(--surface);font:11px/1.45 var(--mono);border-radius:3px;align-items:center;gap:6px;padding:5px 7px;display:flex}.case-flow svg{color:var(--accent);flex:none}.case-study .case-metrics{flex-wrap:wrap;gap:1px;display:flex}.case-metrics>div{flex:150px}.article-project{border-top:1px solid var(--line);margin-top:18px;padding-top:14px}.article-project img{border-radius:4px;width:100%;height:auto;margin-block:8px;display:block}.article-project figcaption{color:var(--secondary);margin-bottom:8px;font-size:12px}.lab-details{color:var(--secondary);margin:8px 0 0;font-size:11px}.lab-details summary{color:var(--ink);cursor:pointer;min-height:24px}.lab-details pre{border:1px solid var(--line);background:var(--surface);border-radius:4px;padding:6px;overflow-x:auto}.lab-research{margin-top:12px}.lab-research h3{color:var(--secondary);font:11px/1.45 var(--mono);margin-bottom:5px}.lab-research a{align-items:center;min-height:24px;display:inline-flex}@media (max-width:560px){.contact-paths{grid-template-columns:minmax(0,1fr)}}@media (prefers-reduced-motion:reduce){.project-record::details-content{transition:none}}.contact-form{border:1px solid var(--line);background:var(--surface);border-radius:7px;gap:14px;padding:15px;display:grid}.contact-fields{grid-template-columns:repeat(2,minmax(0,1fr));gap:11px;display:grid}.contact-fields.contact-options{grid-template-columns:repeat(3,minmax(0,1fr))}.contact-wide{grid-column:1/-1}.contact-form label{color:var(--ink);gap:3px;font-size:12px;display:grid}.contact-form input,.contact-form select,.contact-form textarea{border:1px solid var(--line-hi);background:var(--elevated);width:100%;min-width:0;color:var(--ink);font:11px/1.6 var(--mono);border-radius:3px;padding:7px 8px}.contact-form textarea{resize:vertical}.contact-form input::placeholder,.contact-form textarea::placeholder{color:var(--muted)}.contact-submit,.direct-contact{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:9px;display:flex}.contact-submit p{color:var(--muted);font-size:10px}.direct-contact{margin-top:12px;font-size:11px}.direct-contact a{overflow-wrap:anywhere;min-width:0}.site-footer{border-inline:1px solid var(--line);font:11px/1.6 var(--mono)}.site-footer .footer-brand{border-bottom:1px solid var(--line);justify-content:space-between;gap:10px;padding:10px 12px}.footer-specs{grid-template-columns:repeat(4,minmax(0,1fr));display:grid}.footer-specs>div{border:0 solid var(--line);overflow-wrap:anywhere;border-width:0 1px 1px 0;min-height:59px;padding:10px 12px}.footer-specs>div:nth-child(4n){border-right:0}.footer-specs dt{color:var(--muted)}.footer-specs dd,.footer-links{color:var(--secondary)}.footer-specs dd small{display:block}.footer-specs a:hover{color:var(--ink);text-decoration:underline}.footer-links{align-items:center;gap:12px;padding:10px 12px;display:flex}.footer-links .wordmark{color:var(--ink);margin-right:auto}.article-toc strong{font-family:var(--mono)}@media (max-width:1020px){.catalog-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:680px){.portfolio .hero-body{grid-template-columns:132px minmax(0,1fr)}.portfolio .section{padding-inline:10px}.catalog-body{grid-template-columns:minmax(0,1fr)}.catalog-side{border-right:0;border-bottom:1px solid var(--line)}.catalog-side [role=group]{flex-wrap:wrap;display:flex}.catalog-side button{border:1px solid var(--line);gap:4px}.catalog-toolbar{justify-content:stretch}.catalog-search{width:100%}.contact-page .catalog-heading{padding-top:21px}}@media (max-width:470px){.announcement{gap:5px;min-height:33px;font-size:9px}.announcement>.brand-image{width:12px;height:12px}.portfolio .hero-body{grid-template-columns:99px minmax(0,1fr)}.portfolio .hero h1{padding:8px;font-size:22px}.portfolio .hero-role{padding:5px 8px}.hero-signal{padding:7px 8px}.portfolio .hero-intro{font-size:11px}.portfolio .hatched{height:18px}.overview-grid{grid-template-columns:minmax(0,1fr)}.overview-grid>div{min-height:36px;padding:5px 8px;font-size:11px}.portfolio .social-card{gap:5px;min-height:44px;padding:5px 6px}.portfolio .social-card strong{font-size:10px}.portfolio .social-icon{border-radius:5px;flex-basis:22px;height:22px}.portfolio .stack-row{grid-template-columns:1fr}.portfolio .record-content{padding-inline:8px}.portfolio .project-external{right:21px}.portfolio .editorial{font-size:12px}.github-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.home-articles,.catalog-grid{grid-template-columns:minmax(0,1fr)}.contact-fields.contact-options{grid-template-columns:1fr}.contact-page-body{padding-inline:8px}.contact-form{padding:10px}.footer-specs{grid-template-columns:repeat(2,minmax(0,1fr))}.footer-specs>div:nth-child(2n){border-right:0}.site-footer .footer-brand{flex-wrap:wrap}}
