*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;overflow-x:clip}@media (prefers-reduced-motion:no-preference){@view-transition{navigation:auto}}.mast-meta,.band--meta{view-transition-name:meta-band}.header .name,.sheet-title,.writing-title,.post-title{view-transition-name:page-title}::view-transition-group(*){animation-duration:.42s;animation-timing-function:var(--ease-soft)}::view-transition-old(root),::view-transition-new(root){animation-duration:.24s}::selection{background:color-mix(in srgb,var(--accent)30%,transparent);color:var(--gray-050)}::selection{background:color-mix(in srgb,var(--accent)30%,transparent);color:var(--gray-050)}:root{--surface-0:oklch(83% .003 85);--surface-1:oklch(80% .0025 85);--surface-3:oklch(77% .002 85);--text-5:oklch(66.6% .0008 85);--text-4:oklch(55.7% .0001 85);--text-3:oklch(43.1% .0001 85);--text-2:oklch(31.3% .001 85);--text-1:oklch(22% .0022 85);--text-0:oklch(12% .004 85);--rule-hair:oklch(74.6% .0017 85);--rule-mid:oklch(64.7% .0006 85);--rule-major:oklch(12% .004 85);--rule-weight:1px;--plate:oklch(73.7% .0016 85);--lattice-ink:oklch(72% .002 85);--lattice-alpha:.525;--glass-rail:oklch(83% .003 85/.45);--glass-edge:oklch(70% .0011 85/.55);--glass-blur:24px;--glass-sat:1.5;--accent:oklch(52% .2 29);--field:oklch(57% .21 29);--field-ink:oklch(97% .012 85);--grain-opacity:3.2%;--grain-blend:multiply;--grain-scale:140px;--gray-950:var(--surface-0);--gray-900:var(--surface-1);--gray-800:var(--surface-3);--gray-700:var(--text-5);--gray-600:var(--text-4);--gray-500:var(--text-3);--gray-400:var(--text-2);--gray-300:var(--text-1);--gray-200:var(--text-1);--gray-050:var(--text-0);--accent-alpha-30:color-mix(in srgb,var(--accent)30%,transparent);--border-surface:var(--rule-weight)solid var(--rule-hair);--border-surface-strong:var(--rule-weight)solid var(--rule-mid);--border-surface-stronger:var(--rule-weight)solid var(--rule-major);--s0:4px;--s1:8px;--s2:16px;--s3:24px;--s4:32px;--s5:48px;--s6:64px;--s7:96px;--s-section:clamp(64px,9vw,128px);--t-12:12px;--t-14:14px;--t-16:16px;--t-20:20px;--t-24:24px;--t-32:32px;--t-40:40px;--t-64:64px;--t-96:96px;--l-12:16px;--l-14:20px;--l-16:24px;--l-20:28px;--l-24:32px;--l-32:36px;--l-40:44px;--l-display:1;--track-20:-.005em;--track-24:-.01em;--track-32:-.015em;--track-40:-.02em;--track-64:-.025em;--track-96:-.03em;--t-lede:var(--t-32);--l-lede:var(--l-32);--track-lede:var(--track-32);--t-name:var(--t-64);--t-title:var(--t-40);--track-title:var(--track-40);--t-scene:var(--t-24);--l-scene:var(--l-24);--track-scene:var(--track-24);--t-lead:var(--t-32);--l-lead:var(--l-32);--track-lead:var(--track-32);--t-plate:calc(100cqi/4.303);--track-plate:var(--track-96);--l-plate:.86;--label-size:var(--t-12);--label-leading:var(--l-12);--label-tracking:.08em;--label-tracking-data:.04em;--rail-h:var(--s5);--grid-cols:12;--gutter:24px;--page-x-start:calc(var(--gutter) + env(safe-area-inset-left,0px));--page-x-end:calc(var(--gutter) + env(safe-area-inset-right,0px));--measure:1180px;--chip-h:var(--s3);--chip-pad-x:var(--s1);--chip-border:1px;--icon-m:14px;--icon-s:12px;--chip-size:var(--t-12);--font-sans:"Space Grotesk",-apple-system,blinkmacsystemfont,"Segoe UI",sans-serif;--font-display:var(--font-sans);--font-label:"Space Mono",ui-monospace,"SF Mono",menlo,monospace;--font-code:var(--font-label);--transition-fast:.15s cubic-bezier(.25,1,.5,1);--transition-base:.25s cubic-bezier(.25,1,.5,1);--ease-soft:cubic-bezier(.32,.72,0,1);--ease-draw:cubic-bezier(.22,.9,.3,1);--focus-ring:var(--accent);--focus-glow:0 0 0 4px color-mix(in srgb,var(--accent)22%,transparent);--z-grain:90;--z-safe-area:95;--z-progress:100;--z-skip-link:110}.band{justify-content:space-between;align-items:baseline;gap:var(--s2)var(--s4);flex-wrap:wrap;display:flex}.band--meta{padding-bottom:var(--s2);border-bottom:var(--border-surface)}.band--title{gap:var(--s3)var(--s4);padding-top:var(--s2);border-top:var(--border-surface-stronger)}.meta-link{color:var(--text-3);transition:color var(--transition-base);align-items:baseline;gap:.5em;text-decoration:none;display:inline-flex}.meta-link:hover{color:var(--text-1)}.label,.label--data,.label--line,.meta-link,.skip-to-main,.subtitle,.section-heading,.cta-button,.opportunity-link,.resume-link,.entry-meta .company,.footer-links a,.theme-toggle,.contact,.chip,.work-year,.entry-date,.entry--timeline .entry-meta,.colophon,.footer-line,.repo-path,.rail-label,.writing-count,.writing-deck,.writing-date,.writing-time,.post-dateline,.tag,.blog-colophon,.toc summary,.blog-post-content blockquote cite{font-family:var(--font-label);font-size:var(--label-size);line-height:var(--label-leading);letter-spacing:var(--label-tracking);text-transform:uppercase;text-box:trim-both cap alphabetic;font-weight:700}.rail-link,.meta-link>span,.dateline>*{text-box:trim-both cap alphabetic}.label--data,.meta-link,.resume-link,.theme-toggle,.contact,.entry-meta .company,.footer-links a,.chip,.work-year,.entry-date,.entry--timeline .entry-meta,.colophon,.repo-path,.writing-count,.writing-date,.writing-time,.post-dateline,.tag,.blog-colophon,.blog-post-content blockquote cite{letter-spacing:var(--label-tracking-data);font-weight:400}.label--line,.footer-line,.writing-deck{font-weight:400}@media (width>640px){:root{--t-title:var(--t-64);--track-title:var(--track-64)}}@media (width>=900px){:root{--t-name:var(--t-96);--t-lede:var(--t-40);--l-lede:var(--l-40);--track-lede:var(--track-40);--t-title:var(--t-96);--track-title:var(--track-96);--t-lead:var(--t-40);--l-lead:var(--l-40);--track-lead:var(--track-40);--t-scene:var(--t-32);--l-scene:var(--l-32);--track-scene:var(--track-32)}}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--surface-0:oklch(11% .0043 85);--surface-1:oklch(15% .0034 85);--surface-3:oklch(22% .0022 85);--text-5:oklch(31.8% .0009 85);--text-4:oklch(44% .0001 85);--text-3:oklch(58.1% .0002 85);--text-2:oklch(76% .0019 85);--text-1:oklch(88% .004 85);--text-0:oklch(96% .0059 85);--rule-hair:oklch(28% .0014 85);--rule-mid:oklch(38% .0004 85);--rule-major:oklch(55% .0001 85);--rule-weight:1.5px;--plate:oklch(24% .0019 85);--lattice-ink:oklch(24% .0019 85);--lattice-alpha:.875;--glass-rail:oklch(11% .0043 85/.45);--glass-edge:oklch(100% 0 0/.22);--glass-blur:28px;--glass-sat:1.8;--accent:oklch(64% .21 29);--field:oklch(60% .22 29);--field-ink:oklch(14% .02 29);--grain-opacity:4.5%;--grain-blend:overlay;--grain-scale:200px}}:root[data-theme=dark]{--surface-0:oklch(11% .0043 85);--surface-1:oklch(15% .0034 85);--surface-3:oklch(22% .0022 85);--text-5:oklch(31.8% .0009 85);--text-4:oklch(44% .0001 85);--text-3:oklch(58.1% .0002 85);--text-2:oklch(76% .0019 85);--text-1:oklch(88% .004 85);--text-0:oklch(96% .0059 85);--rule-hair:oklch(28% .0014 85);--rule-mid:oklch(38% .0004 85);--rule-major:oklch(55% .0001 85);--rule-weight:1.5px;--plate:oklch(24% .0019 85);--lattice-ink:oklch(24% .0019 85);--lattice-alpha:.875;--glass-rail:oklch(11% .0043 85/.45);--glass-edge:oklch(100% 0 0/.22);--glass-blur:28px;--glass-sat:1.8;--accent:oklch(64% .21 29);--field:oklch(60% .22 29);--field-ink:oklch(14% .02 29);--grain-opacity:4.5%;--grain-blend:overlay;--grain-scale:200px}body{font-family:var(--font-sans);background-color:var(--gray-950);color:var(--gray-400);line-height:var(--l-16);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-synthesis-weight:none;font-synthesis-style:none;font-size:var(--t-16);font-feature-settings:"kern" 1,"liga" 1,"calt" 1;font-variant-ligatures:common-ligatures contextual;overflow-x:clip}:root:not([data-theme=dark]) .name,:root:not([data-theme=dark]) .lede,:root:not([data-theme=dark]) .work-title,:root:not([data-theme=dark]) .footer-mail{-webkit-text-stroke:.18px currentcolor}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .name,:root:not([data-theme=light]) .lede,:root:not([data-theme=light]) .work-title,:root:not([data-theme=light]) .footer-mail{-webkit-text-stroke:0}}body:before{content:"";height:env(safe-area-inset-top,0);background:var(--surface-0);z-index:var(--z-safe-area);pointer-events:none;position:fixed;inset:0 0 auto}body:after{content:"";z-index:var(--z-grain);pointer-events:none;opacity:var(--grain-opacity);mix-blend-mode:var(--grain-blend);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");background-size:var(--grain-scale);position:fixed;inset:0}@media print,(forced-colors:active){body:after{content:none}}.bleed{margin-left:calc(50% - 50vw);margin-right:calc(50% - 50vw)}.phicon{vertical-align:-.125em;fill:currentColor;flex-shrink:0;display:inline-block}.visually-hidden{clip:rect(0,0,0,0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.skip-to-main{top:-100%;left:var(--page-x-start);background:var(--gray-050);color:var(--gray-950);padding:var(--s1)var(--s3);z-index:var(--z-skip-link);transition:top var(--transition-fast);border:0;text-decoration:none;position:absolute}.skip-to-main:focus-visible{top:0}.reading-progress{background:var(--accent);transform-origin:0;width:100%;height:2px;z-index:var(--z-progress);position:fixed;bottom:0;left:0;transform:scaleX(0)}@supports (animation-timeline:scroll()){@media (prefers-reduced-motion:no-preference){.reading-progress{animation-name:thread-draw;animation-duration:auto;animation-timing-function:linear;animation-fill-mode:both;animation-timeline:scroll(root)}}}@keyframes thread-draw{0%{transform:scaleX(0)}to{transform:scaleX(1)}}a:focus-visible,button:focus-visible,summary:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--focus-ring);outline-offset:3px;box-shadow:var(--focus-glow);border-radius:0}.project-link:active,.opportunity-link:active,.resume-link:active{transform:translateY(1px)}.page{max-width:var(--measure);padding:var(--s6)var(--page-x-end)var(--s7)var(--page-x-start);counter-reset:scene;margin:0 auto}.blog-page{max-width:760px;padding:var(--s6)var(--page-x-end)var(--s7)var(--page-x-start);margin:0 auto}.header{text-align:left;isolation:isolate;min-height:calc(100dvh - var(--s6) - var(--s7) - var(--rail-h));margin-bottom:var(--s-section);flex-direction:column;justify-content:space-between;display:flex;position:relative;container-type:inline-size}.masthead-lattice{z-index:-1;pointer-events:none;position:absolute;inset:50% 0}.masthead-lattice canvas{width:100%;height:100%;display:block}.header .name{font-size:var(--t-plate);text-indent:-.067em;margin-block:auto}.header .name-surname{margin-left:.016em}@media (width<=900px){.header{min-height:0;display:block}.header .name{margin-block:var(--s6)var(--s5)}}.mast-meta{top:env(safe-area-inset-top,0);z-index:3;min-height:var(--rail-h);background:var(--glass-rail);border-bottom:var(--rule-weight)solid var(--glass-edge);align-content:center;align-items:center;margin-inline:calc(50% - 50vw);padding:0 calc(50vw - 50%);position:sticky}.dateline{font-family:var(--font-label);font-size:var(--t-12);letter-spacing:var(--label-tracking-data);line-height:var(--l-12);color:var(--gray-500);justify-items:start;display:grid}.dateline-coord{grid-area:1/1}.theme-toggle{appearance:none;color:var(--text-3);cursor:pointer;transition:color var(--transition-base);background:0 0;border:0;padding:0}.theme-toggle:hover{color:var(--text-0)}.mark{stroke-linecap:butt;width:100%;height:auto;display:block}.name{font-family:var(--font-display);font-size:var(--t-name);letter-spacing:var(--track-plate);font-weight:700;line-height:var(--l-plate);margin:var(--s6)0 var(--s5);color:var(--gray-050);text-box:trim-both cap alphabetic}.name-surname{display:block}.subtitle{color:var(--gray-050)}.header .masthead-bar{padding:var(--s3)calc(50vw - 50%);background:var(--field);color:var(--field-ink);--focus-ring:var(--field-ink);--focus-glow:none;margin-inline:calc(50% - 50vw)}.header .masthead-bar .subtitle,.header .masthead-bar .meta-link{color:var(--field-ink)}.header .masthead-bar .meta-link:hover span{text-underline-offset:.3em;text-decoration:underline 1px}.contact{align-items:baseline;gap:var(--s3);flex-wrap:wrap;display:flex}@media (width>=900px){.mast-meta,.masthead-bar{grid-template-columns:repeat(var(--grid-cols),minmax(0,1fr));column-gap:var(--gutter);align-items:baseline;display:grid}.mast-meta .dateline,.masthead-bar .subtitle{grid-column:1/4}.mast-meta .theme-toggle{grid-column:10/13;justify-self:end}.masthead-bar .contact{grid-column:5/13;justify-self:end}}.meta-link .phicon{--icon:var(--icon-m);inline-size:var(--icon);block-size:var(--icon);margin-block:calc((1cap - var(--icon))/2);color:inherit;align-self:center}.meta-link .phicon.arrow-icon{--icon:var(--icon-s)}.arrow-icon{opacity:.45;transition:opacity var(--transition-base),transform .32s var(--ease-draw)}:is(.meta-link,.opportunity-link,.project-link):hover .arrow-icon{opacity:1;transform:translate(2px,-2px)}@media (prefers-reduced-motion:no-preference){.mast-meta,.header .name{animation:masthead-rise .7s var(--ease-soft)both}.header .masthead-bar{animation:masthead-rise .7s var(--ease-soft).1s both}@keyframes masthead-rise{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}}.section{isolation:isolate;margin-bottom:var(--s-section);position:relative}@media (width>=900px){.section{grid-template-columns:repeat(var(--grid-cols),minmax(0,1fr));column-gap:var(--gutter);align-items:start;display:grid}.section>*{grid-column:4/13}}.section-heading{top:env(safe-area-inset-top,0);z-index:2;align-items:center;gap:var(--s2);min-height:var(--rail-h);border-bottom:var(--rule-weight)solid var(--glass-edge);background:var(--glass-rail);font-size:var(--t-14);color:var(--gray-050);line-height:var(--l-14);margin-inline:calc(50% - 50vw);margin-bottom:var(--s5);padding-inline:calc(50vw - 50%);display:flex;position:sticky}@supports (backdrop-filter:blur(1px)){.section-heading,.mast-meta{backdrop-filter:blur(var(--glass-blur))saturate(var(--glass-sat))}}.footer .section-heading{backdrop-filter:none;background:0 0;border-bottom:0;height:auto;min-height:0;margin-inline:0;padding:0;display:block;position:static}@media (prefers-reduced-transparency:reduce){.section-heading,.mast-meta{backdrop-filter:none;background:var(--surface-1)}}.scene{display:flow-root;position:relative}.scene>.section{margin-bottom:var(--s-section);padding-top:var(--s4);scroll-margin-top:calc(var(--rail-h) + env(safe-area-inset-top,0px))}.scene>.section--open{padding-top:0}.scene>.section-heading{z-index:3;margin-bottom:0}.scene>.section-heading:before{counter-increment:scene;content:counter(scene,decimal-leading-zero);content:counter(scene,decimal-leading-zero)/"";letter-spacing:var(--label-tracking-data);color:var(--accent);text-box:trim-both cap alphabetic;flex-shrink:0}.rail-link{color:inherit;text-decoration:none}.rail-link:hover{color:var(--accent)}@media (width>=900px){.section--timeline>.entry--timeline{grid-column:1/13;grid-template-columns:repeat(var(--grid-cols),minmax(0,1fr));column-gap:var(--gutter)}.section--timeline .entry-date{grid-column:1/4}.section--timeline .entry-body{grid-column:4/13}}.firm{padding-block:var(--s5);border-top:var(--border-surface-stronger)}.firm:first-child{border-top:0;padding-top:0}.firm:last-child{padding-bottom:0}.firm-name{font-family:var(--font-display);font-size:var(--t-lead);letter-spacing:var(--track-lead);font-weight:400;line-height:var(--l-lead);color:var(--text-0);text-box:trim-both cap alphabetic}.stipple{color:#0000;background:conic-gradient(var(--text-0)25%,transparent 0)0 0/2px 2px;background-clip:text;margin:-.15em -.25em;padding:.15em .25em}.role-client{margin-top:calc(var(--l-20) - 1cap);font-family:var(--font-display);font-size:var(--t-20);line-height:var(--l-20);letter-spacing:var(--track-20);color:var(--text-2);grid-column:3/8}.role-client .label--data{font-family:var(--font-label);font-size:var(--t-12);line-height:var(--l-12);color:var(--text-3)}.firm-span{margin-top:var(--s2);color:var(--text-3)}.firm-roles{margin:var(--s4)0 0;padding:0;list-style:none}.role{padding-block:var(--s3);border-top:1px solid var(--rule-hair)}.role:first-child{border-top:0;padding-top:0}.role:last-child{padding-bottom:0}.role-years{color:var(--text-3);white-space:nowrap}.role-title{margin-top:var(--s2);font-family:var(--font-display);font-size:var(--t-20);letter-spacing:var(--track-20);font-weight:600;line-height:var(--l-20);color:var(--text-1)}.role-title,.role-client,.role-summary,.entry--timeline .entry-title,.entry-summary{text-box:trim-both cap alphabetic}.role-summary{margin-top:var(--s2);font-size:var(--t-14);line-height:var(--l-14);color:var(--text-2)}.role>:last-child,.entry--timeline .entry-body>:last-child{text-box:trim-both cap alphabetic}@media (width>=900px){.section--firms>.firm{grid-column:1/13;grid-template-columns:repeat(var(--grid-cols),minmax(0,1fr));column-gap:var(--gutter);align-items:start;display:grid}.firm-head{top:calc(var(--rail-h) + env(safe-area-inset-top,0px) + var(--s4));grid-column:1/6;position:sticky}.firm-roles{grid-column:6/13;margin-top:0}.role{column-gap:var(--gutter);grid-template-columns:repeat(7,minmax(0,1fr));align-items:baseline;display:grid}.role-years{grid-column:1/3}.role-title{grid-column:3/8;margin-top:0}.role-summary{grid-column:3/8}}.body-text{font-size:var(--t-16);line-height:var(--l-16);color:var(--gray-400);margin-bottom:var(--s3);font-variant-ligatures:common-ligatures contextual;text-wrap:pretty;max-width:62ch}.body-text a{color:var(--gray-050);text-decoration:underline;text-decoration-color:var(--rule-major);text-underline-offset:3px;transition:text-decoration-color var(--transition-fast)}.body-text a:hover{text-decoration-color:var(--gray-050)}.subtle-link,.body-text a.subtle-link{color:inherit;border-bottom:var(--rule-weight)solid var(--rule-mid);text-decoration:none}.subtle-link:hover,.body-text a.subtle-link:hover{color:var(--text-0);border-bottom-color:var(--text-0)}.lede{font-family:var(--font-display);font-size:var(--t-lede);font-weight:300;line-height:var(--l-lede);letter-spacing:var(--track-lede);color:var(--gray-050);max-width:20ch;margin-bottom:var(--s4);text-wrap:balance;text-box:trim-both cap alphabetic}.lede em{font-style:normal;font-weight:700}.section--open>.body-text{text-box:trim-both cap alphabetic;margin-bottom:0}@media (width>=900px){.section--open>*{grid-column:1/13}.section--open>.lede{max-width:22ch;margin-bottom:var(--s5);grid-column:5/13}.section--open>.body-text,.section--open>.cta-row{grid-column:5/11}.section--open>.cta-row{margin-top:var(--s5)}}.cta-row{align-items:baseline;gap:var(--s5);margin-top:var(--s4);flex-wrap:wrap;display:flex}.cta-button,.resume-link{align-items:baseline;gap:var(--s1);color:var(--text-0);background:0 0;border:0;padding:0;text-decoration:none;display:inline-flex}.resume-link{color:var(--text-2)}.cta-button .cta-icon{transition:transform .4s var(--ease-soft);justify-content:center;align-items:center;display:inline-flex}.cta-button:hover .cta-icon{transform:translate(2px,-2px)}.cta-button:active{transform:translateY(1px)}.cta-row .link-text{text-box:trim-both cap alphabetic;margin-bottom:-.25em}.cta-icon,.resume-link>.arrow-icon{inline-size:var(--icon-s);block-size:var(--icon-s);margin-block:calc((1cap - var(--icon-s))/2);align-self:center}.opportunity-link,.resume-link{transition:color var(--transition-fast)}.opportunity-link:hover,.resume-link:hover{color:var(--gray-050);border-color:var(--gray-050)}.resume-link:hover .arrow-icon{opacity:1;transform:translateY(2px)}.entry{contain:layout style;content-visibility:auto;contain-intrinsic-size:auto 150px}.entry-title{font-size:var(--t-20);color:var(--gray-050);font-weight:600;line-height:var(--l-20);letter-spacing:var(--track-20);margin-bottom:var(--s1);transition:color var(--transition-fast)}.project-link{color:var(--gray-050);align-items:baseline;gap:var(--s1);text-decoration:none;display:inline-flex}.project-arrow{font-size:var(--t-14);line-height:var(--l-14)}.entry-meta{font-size:var(--t-14);line-height:var(--l-14);color:var(--gray-400);margin-bottom:var(--s1)}.entry-meta .company{color:var(--gray-300);font-variant-numeric:lining-nums;text-decoration:none}.entry-meta .company--placeholder{text-transform:none;letter-spacing:var(--label-tracking-data);color:var(--gray-500)}@property --ul-draw{syntax:"<percentage>";inherits:false;initial-value:0%}.entry-meta a.company,.cta-button .link-text,.project-link .link-text,.opportunity-link .link-text,.resume-link .link-text,.footer-mail .link-text{background-image:linear-gradient(to right,var(--gray-050)var(--ul-draw),transparent var(--ul-draw));transition:--ul-draw .32s var(--ease-draw);background-position:0 100%;background-repeat:no-repeat;background-size:100% 1px;padding-bottom:.25em}.footer-mail .link-text{background-image:linear-gradient(to right,var(--field-ink)var(--ul-draw),transparent var(--ul-draw))}.entry-meta a.company:hover,.cta-button:hover .link-text,.project-link:hover .link-text,.opportunity-link:hover .link-text,.resume-link:hover .link-text,.footer-mail:hover .link-text{--ul-draw:100%}.entry-description{font-size:var(--t-16);line-height:var(--l-16);color:var(--gray-400);text-wrap:pretty}.entry-summary{margin-top:var(--s2);font-size:var(--t-14);line-height:var(--l-14);color:var(--gray-400);text-wrap:pretty;max-width:56ch}.chips{gap:var(--s1);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}.chip{block-size:var(--chip-h);line-height:var(--label-leading);color:var(--gray-500);border:var(--chip-border)solid var(--rule-hair);padding:calc((var(--chip-h) - 2*var(--chip-border) - 1cap)/2)var(--chip-pad-x);white-space:nowrap;transition:color var(--transition-base),border-color var(--transition-base)}.entry:hover .chip{color:var(--gray-300);border-color:var(--rule-mid)}.work-band{row-gap:var(--s2);padding:var(--s4)0;border-top:1px solid var(--rule-hair);grid-template-columns:minmax(0,1fr);align-items:start;display:grid}.work-band:first-of-type{border-top:0}.work-band:last-of-type{padding-bottom:0}.scene>.section--work,.scene>.section--repos{padding-top:0}.work-band .chips{margin-bottom:var(--s1);grid-area:1/1}.work-year{margin-top:calc((var(--chip-h) - 1cap)/2);color:var(--text-3);transition:color var(--transition-base);grid-area:1/1;place-self:start end}.work-band:hover .work-year{color:var(--accent)}.work-title{font-family:var(--font-display);font-size:var(--t-lead);letter-spacing:var(--track-lead);font-weight:400;line-height:var(--l-display);color:var(--text-0);grid-row:2}.work-title,.work-title .link-text,.work-desc{text-box:trim-both cap alphabetic}.work-title .link-text{margin-bottom:-.25em}.work-title .project-arrow{font-size:inherit;align-self:flex-start;block-size:.375em;inline-size:.375em}.work-desc{font-size:var(--t-14);line-height:var(--l-14);color:var(--text-2);text-wrap:pretty;grid-row:3;max-width:46ch}@media (width>=900px){.section--work>.work-band{grid-column:1/-1;grid-template-columns:subgrid}.section--work>.work-band .work-title{grid-area:1/1/span 2/9}.section--work>.work-band .chips,.section--work>.work-band .work-year{grid-column:9/13}.section--work>.work-band .work-desc{grid-area:2/9/auto/13;max-width:none}}.repo-grid{gap:0;display:grid}.entry--repo{column-gap:var(--gutter);row-gap:var(--s1);padding:var(--s4)0;border-bottom:1px solid var(--rule-hair);grid-template-columns:repeat(9,minmax(0,1fr));align-items:baseline;display:grid;position:relative}.entry--repo:last-child{border-bottom:0;padding-bottom:0}.repo-lead{align-items:flex-start;gap:var(--s3);flex-direction:column;grid-column:1/5;display:flex}.entry--repo .entry-title{font-family:var(--font-display);font-size:var(--t-20);font-weight:600;line-height:var(--l-20);letter-spacing:var(--track-20);text-box:trim-both cap alphabetic;margin-bottom:0}.repo-path{overflow-wrap:anywhere;color:var(--text-3);transition:color var(--transition-base);grid-column:5/7;margin:0}.entry--repo:hover .repo-path{color:var(--accent)}.entry--repo .entry-description{font-size:var(--t-14);line-height:var(--l-14);color:var(--text-3);text-box:trim-both cap alphabetic;grid-column:7/10;max-width:none;margin:0}.repo-foot{margin:0}@media (width<=700px){.entry--repo{row-gap:var(--s1);grid-template-columns:minmax(0,1fr)}.repo-lead{display:contents}.repo-path,.entry--repo .entry-description,.repo-foot{grid-column:1/-1}.repo-foot{margin-bottom:var(--s2);order:-1}.repo-path,.entry--repo .entry-description{margin-top:var(--s1)}}.entry--timeline{gap:0 var(--gutter);grid-template-columns:96px minmax(0,1fr);align-items:baseline;display:grid}.entry--timeline .entry-body{border-left:1px solid var(--rule-hair);padding-left:var(--s3);padding-bottom:var(--s5);transition:border-color var(--transition-base);position:relative}.entry--timeline:last-child .entry-body{padding-bottom:0}.entry--timeline:hover .entry-body{border-color:var(--rule-major)}.entry-date{color:var(--text-3);white-space:nowrap}.live-dot{background:var(--accent);vertical-align:.15em;width:.45em;height:.45em;margin-left:.5em;display:inline-block}.entry--timeline .entry-title{font-family:var(--font-display);font-size:var(--t-20);font-weight:600;line-height:var(--l-20);letter-spacing:var(--track-20);margin-bottom:var(--s2)}.entry--timeline .entry-meta,.entry--timeline .entry-description{margin-bottom:0}.entry--timeline .entry-description{font-size:var(--t-14);line-height:var(--l-14);max-width:56ch}.page--utility .header{margin-top:var(--s6)}.sheet{z-index:1;background:var(--surface-0);margin-inline:calc(50% - 50vw);padding-inline:calc(50vw - 50%);position:relative}.page:has(>.footer:last-child){padding-bottom:0}.footer{z-index:0;background:var(--field);color:var(--field-ink);padding:var(--s6)0 calc(var(--s4) + env(safe-area-inset-bottom,0px));isolation:isolate;--focus-ring:var(--field-ink);--focus-glow:none;margin-top:0;position:sticky;bottom:0}.footer-inner{max-width:var(--measure);padding:0 var(--page-x-end)0 var(--page-x-start);z-index:1;margin:0 auto;position:relative}.footer .section-heading,.footer .footer-line,.footer .colophon{color:var(--field-ink)}.footer-base{justify-content:space-between;align-items:start;gap:var(--s3);margin-top:var(--s5);padding-top:var(--s2);border-top:1px solid color-mix(in srgb,var(--field-ink)28%,transparent);display:flex}.footer-mark{block-size:var(--s4);color:var(--field-ink);opacity:.7;flex-shrink:0}.footer-mark .mark{block-size:100%;inline-size:auto}@media (width>=900px){.footer-inner{grid-template-columns:repeat(var(--grid-cols),minmax(0,1fr));column-gap:var(--gutter);align-items:start;display:grid}.footer-inner>.section-heading{grid-column:1/4}.footer-body{grid-column:4/10}.footer-links{grid-column:10/13}.footer-base{grid-column:1/13}}:where(.footer p){margin:0}.footer-line{color:var(--gray-500);margin-bottom:var(--s2)}.footer-links{align-items:flex-start;gap:var(--s2);margin-top:var(--s3);flex-direction:column;display:flex}.footer-links a{color:var(--field-ink);text-underline-offset:.2em;transition:text-decoration-color var(--transition-base);text-decoration:underline 1px #0000}.footer-links a:hover{text-decoration-color:var(--field-ink)}@media (width>=900px){.footer-links{align-items:flex-end;margin-top:0}}.footer-body{flex-direction:column;align-items:flex-start;display:flex}.footer-mail{font-family:var(--font-display);font-size:var(--t-lead);font-weight:400;line-height:var(--l-lead);letter-spacing:var(--track-lead);color:var(--field-ink);text-box:trim-both cap alphabetic;text-decoration:none;display:inline-block}.colophon{color:var(--text-3);font-variant-numeric:lining-nums}@media (width<=900px){.section-heading{margin-bottom:var(--s3)}.name{max-width:none}}@media (width<=640px){:root{--gutter:16px}.masthead-bar .contact{gap:var(--s2)var(--s3);grid-template-columns:repeat(2,max-content);display:grid}.repo-grid{grid-template-columns:1fr}.entry--timeline{gap:0 var(--s2);grid-template-columns:84px minmax(0,1fr)}.cta-row{gap:var(--s4)}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@media (hover:none) and (pointer:coarse){.project-link:active,.opportunity-link:active,.cta-button:active,.entry-meta a.company:active{opacity:.7}.meta-link,.theme-toggle{align-items:center;min-height:44px;display:inline-flex}.masthead-bar .contact{row-gap:0}}.page--sheet .header{min-height:0;margin-bottom:var(--s5);display:block}@media (width>=900px){.page--sheet .mast-meta>.label{grid-column:1/4}.page--sheet .mast-meta>.meta-link{grid-column:9/13;justify-self:end}.page--sheet{position:relative}.page--sheet:before{--mark:var(--text-4);content:"";inset:calc(var(--s6) - var(--s3))calc(var(--page-x-end) - var(--s3))calc(var(--s7) - var(--s3))calc(var(--page-x-start) - var(--s3));pointer-events:none;background:linear-gradient(var(--mark),var(--mark))left var(--s3)top 0/1px var(--s2),linear-gradient(var(--mark),var(--mark))left 0 top var(--s3)/var(--s2)1px,linear-gradient(var(--mark),var(--mark))right var(--s3)top 0/1px var(--s2),linear-gradient(var(--mark),var(--mark))right 0 top var(--s3)/var(--s2)1px,linear-gradient(var(--mark),var(--mark))left var(--s3)bottom 0/1px var(--s2),linear-gradient(var(--mark),var(--mark))left 0 bottom var(--s3)/var(--s2)1px,linear-gradient(var(--mark),var(--mark))right var(--s3)bottom 0/1px var(--s2),linear-gradient(var(--mark),var(--mark))right 0 bottom var(--s3)/var(--s2)1px;background-repeat:no-repeat;position:absolute}}.sheet-still{margin:var(--s5)0 0}.sheet-still svg{aspect-ratio:72/12;width:100%;height:auto;display:block;overflow:visible}.sheet-still path{fill:none;stroke:var(--text-4);stroke-width:2px;stroke-linecap:square;vector-effect:non-scaling-stroke}.sheet-still figcaption{margin-top:var(--s1);color:var(--text-3)}.sheet-title{font-family:var(--font-display);font-size:var(--t-lead);font-weight:400;line-height:var(--l-lead);letter-spacing:var(--track-lead);color:var(--text-0);margin-top:var(--s4)}.sheet-standfirst{font-size:var(--t-14);line-height:var(--l-14);color:var(--text-3);margin-top:var(--s1)}.sheet-group{margin-bottom:var(--s5)}.sheet-group-title{justify-content:space-between;align-items:baseline;gap:var(--s2);padding-bottom:var(--s1);border-bottom:var(--border-surface-stronger);margin-bottom:var(--s0);display:flex}.sheet-row{grid-template-columns:repeat(var(--grid-cols),minmax(0,1fr));column-gap:var(--gutter);padding-block:var(--s1);border-bottom:var(--border-surface);align-items:baseline;display:grid}.sheet-key{color:var(--text-3);grid-column:1/3}.sheet-name{font-size:var(--t-14);line-height:var(--l-14);color:var(--text-1);grid-column:3/7}.sheet-note{font-size:var(--t-12);line-height:var(--l-12);color:var(--text-3);grid-column:7/13}.sheet-colophon{margin-top:var(--s6)}@media (width<=899px){.sheet-row{display:block}.sheet-name,.sheet-note{margin-top:var(--s0);display:block}}@media print{:root,:root[data-theme=dark],:root:not([data-theme=light]){--surface-0:#fff;--surface-1:#fff;--surface-3:#f2f2f2;--text-5:#a6a6a6;--text-4:gray;--text-3:#595959;--text-2:#333;--text-1:#1a1a1a;--text-0:#000;--rule-hair:#ccc;--rule-mid:#999;--rule-major:#000;--rule-weight:.5pt;--plate:#e6e6e6;--glass-rail:transparent;--glass-edge:#ccc;--accent:#000;--field:#fff;--field-ink:#000;--grain-opacity:0%;--focus-glow:none}@page{margin:16mm 14mm}*{-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important}body{background-color:var(--surface-0);color:var(--text-2);font-size:10pt;line-height:1.45}.skip-to-main,.scroll-progress,.meta-link .icon,.arrow-icon,.project-arrow,.resume-link,.cta-row,.masthead-lattice,.theme-toggle,.footer-mark,.page--sheet .mast-meta{display:none!important}.page,.blog-page{max-width:none;margin:0;padding:0}.mast-meta,.section-heading{backdrop-filter:none;background:0 0;border-bottom:0;height:auto;min-height:0;margin-inline:0;padding:0;display:block;position:static}.section-heading{margin-bottom:8pt;font-size:10pt}.footer{position:static}.stipple{color:inherit}.sheet{background:0 0;margin-inline:0;padding-inline:0}.section,.scene>.section{border-top:var(--rule-weight)solid var(--rule-mid);margin-bottom:16pt;padding-top:8pt;display:block}.repo-grid{display:block}.name{max-width:none;margin:8pt 0;font-size:24pt}.lede{max-width:none;font-size:15pt}.work-title{font-size:13pt}.footer-mail{font-size:16pt}.entry-title,.entry--timeline .entry-title{font-size:11pt}.body-text,.entry-description,.entry-summary,.entry-meta,.work-desc,.footer-line{max-width:none;font-size:10pt}.subtitle,.work-year,.colophon{font-size:9pt}.repo-path,.chip{font-size:8pt}.work-band,.entry--repo{padding:6pt 0;display:block}.page--sheet .header{margin-bottom:12pt}.sheet-title{font-size:22pt}.sheet-standfirst{font-size:10pt}.sheet-group{margin-bottom:14pt}.sheet-row{padding-block:3pt}.sheet-name{font-size:10pt}.sheet-key,.sheet-note{font-size:8pt}.entry,.work-band,.entry--repo,.sheet-row{page-break-inside:avoid;break-inside:avoid;content-visibility:visible}.section-heading,.sheet-group-title,h1,h2,h3{page-break-after:avoid;break-after:avoid}p{orphans:3;widows:3}a[target=_blank]:after{content:" (" attr(href)")";color:var(--text-3);word-break:break-all;font-size:8pt;font-weight:400}.sheet-row a[target=_blank]:after{content:none}.cta-button:after{content:" (i@irak.li)";color:var(--text-3);font-weight:400}}@keyframes fade-out{to{opacity:0}}@keyframes fade-in{0%{opacity:0}}::view-transition-old(root){animation:.25s ease-out fade-out}::view-transition-new(root){animation:.25s ease-in fade-in}@media (forced-colors:active){a,button{border:1px solid}.reading-progress,.live-dot{background:canvastext}.name{color:canvastext}}