*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;overflow-x:clip}::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(96.5% .0061 85);--surface-1:oklch(93.5% .0053 85);--surface-3:oklch(88% .004 85);--text-5:oklch(78.1% .0022 85);--text-4:oklch(66.2% .0007 85);--text-3:oklch(52.9% 0 85);--text-2:oklch(41.8% .0002 85);--text-1:oklch(27.9% .0014 85);--text-0:oklch(16.2% .0032 85);--rule-hair:oklch(87% .0038 85);--rule-mid:oklch(76% .0019 85);--rule-major:oklch(16.2% .0032 85);--rule-weight:1px;--plate:oklch(86% .0036 85);--glass-rail:oklch(96.5% .0061 85/.62);--glass-edge:oklch(70% .0011 85/.55);--glass-blur:16px;--glass-sat:1.35;--accent:oklch(52% .2 29);--field:oklch(57% .21 29);--field-ink:oklch(97% .012 85);--cta-hover:oklch(8% .0049 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-11:11px;--t-13:13px;--t-16:16px;--t-20:20px;--t-25:25px;--t-name:clamp(64px,15.5vw,232px);--t-numeral:clamp(150px,11.8vw,300px);--t-numeral-band:clamp(110px,34vw,150px);--t-lede:clamp(40px,8.6vw,148px);--t-title:clamp(38px,6.4vw,92px);--t-scene:clamp(25px,2vw + 1rem,30px);--t-lead:clamp(34px,5vw,76px);--label-size:var(--t-11);--label-tracking:.1em;--label-tracking-data:.07em;--numeral-drop:.2em;--rail-h:76px;--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-pad:var(--s0)var(--s1);--chip-size:var(--t-11);--entry-title-size:var(--t-20);--entry-title-leading:1.3;--entry-lead:calc(var(--entry-title-size)*var(--entry-title-leading));--font-display:"EB Garamond",georgia,serif;--font-mono:"Space Mono","SF Mono",ui-monospace,monospace;--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-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,.entry-date,.entry--timeline .entry-meta,.colophon,.footer-line,.repo-path,.rail-label,.writing-deck,.writing-date,.writing-time,.blog-colophon,.toc summary,.blog-post-content blockquote cite{font-family:var(--font-mono);font-size:var(--label-size);letter-spacing:var(--label-tracking);text-transform:uppercase;font-weight:700}.label--data,.meta-link,.theme-toggle,.contact,.chip,.entry-date,.entry--timeline .entry-meta,.colophon,.repo-path,.writing-date,.writing-time,.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 (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);--glass-rail:oklch(11% .0043 85/.62);--glass-edge:oklch(100% 0 0/.22);--glass-blur:18px;--glass-sat:1.6;--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;--cta-hover:oklch(100% 0 0)}}: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);--glass-rail:oklch(11% .0043 85/.62);--glass-edge:oklch(100% 0 0/.22);--glass-blur:18px;--glass-sat:1.6;--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;--cta-hover:oklch(100% 0 0)}body{background-color:var(--gray-950);color:var(--gray-400);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-synthesis-weight:none;font-family:Geist,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;line-height:1.6;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(--accent);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:section;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));margin-bottom:var(--s-section);flex-direction:column;justify-content:space-between;display:flex;position:relative}.masthead-lattice{z-index:-1;pointer-events:none;position:absolute;inset:16% 0}.masthead-lattice canvas{width:100%;height:100%;display:block}.header .name{margin-block:auto}@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;padding:var(--s2)calc(50vw - 50%);background:var(--glass-rail);border-bottom:var(--rule-weight)solid var(--glass-edge);margin-inline:calc(50% - 50vw);position:sticky}.dateline{font-family:var(--font-mono);font-size:var(--t-11);letter-spacing:.08em;color:var(--gray-500);font-variant-numeric:tabular-nums;justify-items:start;line-height:1.4;display:grid}.dateline-coord{grid-area:1/1}.dateline-coord span{transition:color .35s var(--ease-soft)}.dateline-coord span.is-resolving{color:var(--accent);transition:none}.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:-.042em;margin:var(--s6)0 var(--s5);color:var(--gray-050);font-weight:500;line-height:.82}.name-italic{margin-left:-.02em;font-style:italic;display:block}.subtitle{color:var(--gray-050)}.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{align-self:center}.meta-link .icon{width:14px;height:14px;color:inherit}.meta-link .arrow-icon{width:11px;height:11px;color:inherit}.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){.header .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}.section:before{counter-increment:section;content:counter(section,decimal-leading-zero);z-index:-1;top:var(--numeral-drop);font-family:var(--font-display);font-size:var(--t-numeral);letter-spacing:-.05em;color:var(--plate);font-variant-numeric:lining-nums;pointer-events:none;user-select:none;font-weight:500;line-height:.72;position:absolute;left:auto;right:100%}@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-13);color:var(--gray-050);margin-inline:calc(50% - 50vw);margin-bottom:var(--s5);padding-inline:calc(50vw - 50%);line-height:1.4;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(--s5);scroll-margin-top:calc(var(--rail-h) + env(safe-area-inset-top,0px))}.scene>.section:before{top:calc(var(--s5) + var(--numeral-drop))}@media (width<=1279px){.section:before{font-size:var(--t-numeral-band);left:calc(50% - 50vw - .34em);right:auto}.scene>.section{padding-top:calc(var(--t-numeral-band)*.72 + var(--s2))}.scene>.section:before{top:0}}.scene>.section-heading{z-index:3;margin-bottom:0}.rail-link{color:inherit;text-decoration:none}.rail-link:hover{color:var(--accent)}.section-count{font-size:var(--t-11);letter-spacing:.1em;color:var(--gray-500);font-variant-numeric:tabular-nums;margin:0;font-weight:400}@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}}.body-text{font-size:var(--t-16);color:var(--gray-400);margin-bottom:var(--s3);font-variant-ligatures:common-ligatures contextual;text-wrap:pretty;max-width:62ch;line-height:1.65}.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);letter-spacing:-.035em;color:var(--gray-050);max-width:17ch;margin-bottom:var(--s6);text-wrap:balance;font-weight:500;line-height:.98}.lede em{font-style:italic}@media (width>=900px){.section--open>*{grid-column:1/13}.section--open>.body-text,.section--open>.cta-row{grid-column:4/13}}.cta-row{align-items:stretch;gap:var(--s2);margin-top:var(--s4);flex-wrap:wrap;display:flex}.cta-button{align-items:center;gap:var(--s3);padding:var(--s2)var(--s2)var(--s2)var(--s3);background:var(--gray-050);color:var(--gray-950);transition:background var(--transition-base);text-decoration:none;display:inline-flex}.cta-button .cta-icon{transition:transform .4s var(--ease-soft);justify-content:center;align-items:center;display:inline-flex}.cta-button:hover{background:var(--cta-hover)}.cta-button:hover .cta-icon{transform:translate(2px,-2px)}.cta-button:active{transform:translateY(1px)}.opportunity-link,.resume-link{align-items:center;gap:var(--s1);padding:var(--s2)var(--s3);border:1px solid var(--rule-major);color:var(--gray-400);transition:color var(--transition-fast),border-color var(--transition-fast);text-decoration:none;display:inline-flex}.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(--entry-title-size);color:var(--gray-050);font-weight:500;line-height:var(--entry-title-leading);letter-spacing:-.01em;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-13)}.entry-meta{font-size:var(--t-13);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:.04em;color:var(--gray-500);font-style:italic}@property --ul-draw{syntax:"<percentage>";inherits:false;initial-value:0%}.entry-meta a.company,.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,.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);color:var(--gray-400);text-wrap:pretty;line-height:1.3}.entry-summary{margin-top:var(--s1);font-size:var(--t-13);color:var(--gray-400);text-wrap:pretty;max-width:56ch;line-height:1.35}.chips{gap:var(--s1);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}.chip{color:var(--gray-500);border:1px solid var(--rule-hair);padding:var(--chip-pad);white-space:nowrap;transition:color var(--transition-base),border-color var(--transition-base);line-height:1.4}.entry:hover .chip{color:var(--gray-300);border-color:var(--rule-mid)}.work-band{column-gap:var(--gutter);row-gap:var(--s1);padding:var(--s5)0;border-top:1px solid var(--rule-hair);grid-template-columns:repeat(9,minmax(0,1fr));align-items:start;display:grid}.work-band:last-child{padding-bottom:var(--s3)}.work-band:first-of-type{border-top:0}.work-index{font-family:var(--font-mono);font-size:var(--t-25);letter-spacing:-.02em;color:var(--text-3);font-variant-numeric:tabular-nums;transition:color var(--transition-base);grid-column:1/2;font-weight:700;line-height:1}.work-band:hover .work-index{color:var(--accent)}.work-title{font-family:var(--font-display);font-size:var(--t-lead);letter-spacing:-.035em;color:var(--text-0);grid-column:2/8;font-weight:500;line-height:.92}.work-band .chips{grid-column:8/10}.work-desc{font-size:var(--t-16);color:var(--text-2);text-wrap:pretty;grid-column:2/7;max-width:46ch;line-height:1.35}@media (width>=900px){.section--work>.work-band{grid-column:1/13;grid-template-columns:repeat(var(--grid-cols),minmax(0,1fr))}.section--work>.work-band .work-title{grid-column:2/10}.section--work>.work-band .chips{grid-column:10/13}.section--work>.work-band .work-desc{grid-column:2/8}.section--work>.work-band:nth-of-type(2n) .work-index{grid-column:4/5}.section--work>.work-band:nth-of-type(2n) .work-title{grid-column:5/13}.section--work>.work-band:nth-of-type(2n) .chips{grid-column:1/4;justify-content:flex-end}.section--work>.work-band:nth-of-type(2n) .work-desc{grid-column:5/11}}@media (width<=700px){.work-band{padding:var(--s5)0;grid-template-columns:1fr}.work-band .work-index,.work-band .work-title,.work-band .chips,.work-band .work-desc{grid-column:1}}.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);transition:background var(--transition-base);grid-template-columns:repeat(9,minmax(0,1fr));align-items:baseline;display:grid;position:relative}.repo-index{font-family:var(--font-mono);font-size:var(--t-11);letter-spacing:.08em;color:var(--text-3);font-variant-numeric:tabular-nums;transition:color var(--transition-base);grid-column:1/2;font-weight:700}.entry--repo:hover .repo-index{color:var(--accent)}.entry--repo:last-child{border-bottom:0}.repo-header{align-items:baseline;gap:var(--s2);grid-column:2/5;margin:0;display:flex}.entry--repo .entry-title{font-family:var(--font-display);font-size:var(--t-25);letter-spacing:-.02em;margin-bottom:0;font-weight:500;line-height:1.05}.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-13);color:var(--text-3);grid-column:7/10;max-width:none;margin:0;line-height:1.35}.repo-foot{grid-column:2/5;margin:0}.star-count{color:var(--text-3);font-family:var(--font-mono);font-size:var(--chip-size);letter-spacing:.06em;white-space:nowrap;transition:color var(--transition-base);align-items:center;gap:.5em;display:inline-flex}.entry--repo:hover .star-count{color:var(--accent)}.star-icon{color:currentColor;width:11px;height:11px}.star-number{font-variant-numeric:tabular-nums;line-height:1}@media (width<=700px){.entry--repo{row-gap:var(--s1);grid-template-columns:auto 1fr}.repo-index{grid-area:1/1}.repo-header{grid-area:1/2}.repo-path,.entry--repo .entry-description,.repo-foot{grid-column:1/-1}}.entry--timeline{gap:0 var(--gutter);grid-template-columns:96px minmax(0,1fr);align-items:start;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(--gray-500);white-space:nowrap;font-variant-numeric:tabular-nums;line-height:var(--entry-lead)}.live-dot{background:var(--accent);vertical-align:.15em;width:.45em;height:.45em;margin-left:.5em;animation:2.6s cubic-bezier(.4,0,.6,1) infinite live-pulse;display:inline-block}.live-dot.is-paused{animation-play-state:paused}@keyframes live-pulse{0%,to{opacity:.45}50%{opacity:1}}@media (prefers-reduced-motion:reduce){.live-dot{opacity:.85;animation:none}}.entry--timeline .entry-title{font-family:var(--font-display);font-size:var(--t-20);letter-spacing:-.015em;margin-bottom:4px;font-weight:500;line-height:1.15}.entry--timeline .entry-meta,.entry--timeline .entry-description{margin-bottom:0}.entry--timeline .entry-description{font-size:var(--t-13);max-width:56ch}.entry--study .entry-title{font-size:var(--t-16)}.entry--study .entry-body{padding-bottom:var(--s4)}.page--utility .header{margin-top:var(--s6)}.footer{background:var(--field);color:var(--field-ink);padding:var(--s6)0 calc(var(--s4) + env(safe-area-inset-bottom,0px));isolation:isolate;margin-top:0;position:relative}.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:center;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{width:44px;color:var(--field-ink);opacity:.7;flex-shrink:0}@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}}.footer p{margin:0}.footer-line{color:var(--gray-500);margin-bottom:var(--s2)}.footer-links{align-items:flex-start;gap:var(--s1);margin-top:var(--s3);flex-direction:column;display:flex}.footer-links a{color:var(--field-ink);transition:border-color var(--transition-base);border-bottom:1px solid #0000;padding-bottom:.2em;text-decoration:none}.footer-links a:hover{border-bottom-color:var(--field-ink)}@media (width>=900px){.footer-links{align-items:flex-end;margin-top:0}}.footer-mail{font-family:var(--font-display);font-size:var(--t-lead);letter-spacing:-.04em;color:var(--field-ink);font-weight:500;line-height:.92;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}.repo-grid{row-gap:var(--s5);grid-template-columns:1fr}.entry--timeline{gap:0 var(--s2);grid-template-columns:84px minmax(0,1fr)}.cta-row{gap:var(--s1)}}@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}}.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}}.sheet-title{font-family:var(--font-display);font-size:var(--t-lead);letter-spacing:-.03em;color:var(--text-0);margin-top:var(--s4);font-weight:500;line-height:.95}.sheet-standfirst{font-size:var(--t-13);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);font-variant-numeric:tabular-nums;grid-column:1/3}.sheet-name{font-size:var(--t-13);color:var(--text-1);grid-column:3/7;line-height:1.4}.sheet-note{font-size:var(--t-11);color:var(--text-3);grid-column:7/13;line-height:1.4}.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;--cta-hover:#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}.section-count{margin-left:var(--s2)}.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-index,.star-count,.colophon{font-size:9pt}.repo-path,.chip{font-size:8pt}.work-band,.entry--repo{padding:6pt 0;display:block}.cta-button{background:0 0;padding:0}.cta-button .cta-icon{display:none}.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}}