@font-face{font-family:grotesk;src:url(/_next/static/media/c97e62a0cc72a465-s.p.woff2) format("woff2");font-display:swap;font-weight:200 900;font-style:normal}@font-face{font-family:grotesk Fallback;src:local("Arial");ascent-override:107.17%;descent-override:37.51%;line-gap-override:0.00%;size-adjust:93.31%}.__className_0d1cab{font-family:grotesk,grotesk Fallback,Helvetica Neue,Helvetica,Arial;font-style:normal}.__variable_0d1cab{--font-grotesk:"grotesk","grotesk Fallback",Helvetica Neue,Helvetica,Arial}@font-face{font-family:jetbrainsMono;src:url(/_next/static/media/a865edea076e0166-s.woff2) format("woff2");font-display:swap;font-weight:100 800;font-style:normal}@font-face{font-family:jetbrainsMono Fallback;src:local("Arial");ascent-override:77.57%;descent-override:22.82%;line-gap-override:0.00%;size-adjust:131.49%}.__className_f53230{font-family:jetbrainsMono,jetbrainsMono Fallback,SFMono-Regular,Consolas;font-style:normal}.__variable_f53230{--font-jetbrains:"jetbrainsMono","jetbrainsMono Fallback",SFMono-Regular,Consolas}

/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,::backdrop,:after,:before{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-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{:host,:root{--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:var(--font-jetbrains),ui-monospace,"SF Mono",monospace;--text-xs:.75rem;--text-sm:.875rem;--text-base:1rem;--text-lg:1.375rem;--text-xl:2rem;--text-2xl:2.5rem;--text-3xl:3.5rem;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--tracking-tight:-.015em;--tracking-normal:0;--leading-tight:1.1;--leading-snug:1.3;--leading-normal:1.55;--ease-out:cubic-bezier(.16,1,.3,1);--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-bg:#fff;--color-bg-alt:#f5f6f8;--color-fg:#0f1115;--color-fg-bold:#0f1115;--color-fg-light:#4f5560;--color-accent:#c8102e;--color-accent-hover:#a50d26;--color-accent-fill:#0f1115;--color-accent-fill-hover:#2a2d33;--color-on-accent:#f5f6f8;--color-accent-light:#c8102e1a}@supports (color:color-mix(in lab,red,red)){:host,:root{--color-accent-light:color-mix(in srgb,var(--color-accent) 10%,transparent)}}:host,:root{--color-accent-underline:#c8102ea6}@supports (color:color-mix(in lab,red,red)){:host,:root{--color-accent-underline:color-mix(in srgb,var(--color-accent) 65%,transparent)}}:host,:root{--color-focus-ring:var(--color-fg-bold);--color-focus-ring-fill:var(--color-accent);--color-signal:#c8102e;--color-signal-mark:#c8102e;--color-border:#0f111524;--color-border-bg:#0f111514;--color-border-alt:#0f111547;--color-control-border:#6b7079;--color-surface-subtle:#0f111509;--color-surface-hover:#0f11150f;--color-fg-muted:#0f11158c;--color-image-edge:#0000001a;--color-overlay-darker:#0f111580;--font-display:var(--font-grotesk),"Helvetica Neue",Helvetica,Arial,sans-serif;--font-body:var(--font-grotesk),"Helvetica Neue",Helvetica,Arial,sans-serif;--text-ui:.9375rem;--text-md:1.125rem;--text-figure:4.5rem;--text-display:6rem;--tracking-display:-.02em;--leading-display:1;--spacing-1:.25rem;--spacing-2:.5rem;--spacing-3:.75rem;--spacing-4:1rem;--spacing-5:1.25rem;--spacing-6:1.5rem;--spacing-8:2rem;--spacing-10:2.5rem;--spacing-12:3rem;--spacing-16:4rem;--spacing-24:6rem;--spacing-element:var(--spacing-4);--spacing-group:var(--spacing-8);--spacing-section:var(--spacing-24);--spacing-section-phone:var(--spacing-16);--scroll-offset-resume:var(--spacing-24);--header-height:4rem;--header-height-mobile:3.5rem;--gutter:1rem;--gutter-desktop:1.5rem;--measure-page:85rem;--measure-read:40rem;--grid-gap:1.5rem;--grid-gap-phone:1rem;--rule:1px;--rule-strong:2px;--duration-instant:.15s;--duration-fast:.15s;--duration-normal:.4s;--press-scale:.98;--z-sticky:100;--z-header:10000;--z-overlay:10001;--z-menu:10002}}@layer base{*,::backdrop,:after,:before{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}:host,html{-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;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{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:initial;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:initial}summary{display:list-item}menu,ol,ul{list-style:none}audio,canvas,embed,iframe,img,object,svg,video{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,optgroup,select,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,::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-second-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,::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}@media (prefers-reduced-motion:no-preference){html[data-smooth-scroll]{scroll-behavior:smooth}}@media (prefers-reduced-motion:reduce){*,:after,:before{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}:focus-visible{outline:var(--rule-strong) solid var(--color-focus-ring);outline-offset:2px;border-radius:0}:focus:not(:focus-visible){outline:none}html{color-scheme:light}[data-theme=dark]{color-scheme:dark}body,html{overflow-x:clip}body{background-color:var(--color-bg-alt);color:var(--color-fg);font-family:var(--font-body);font-size:var(--text-md);font-weight:var(--font-weight-normal);line-height:var(--leading-normal);padding-top:var(--header-height);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media (max-width:735px){body{padding-top:var(--header-height-mobile);font-size:1.0625rem}}code,kbd,samp{font-family:var(--font-mono);font-variant-numeric:tabular-nums}::selection{background:var(--color-surface-hover);color:var(--color-fg-bold)}:root{caret-color:var(--color-fg)}img{box-sizing:border-box;border:1px solid var(--color-image-edge)}a{color:var(--color-fg);transition:color var(--duration-fast) var(--ease-out);text-decoration:none}a:hover{color:var(--color-fg-bold)}@media screen{p a{color:var(--color-fg);text-decoration:underline;-webkit-text-decoration-color:var(--color-accent-underline);text-decoration-color:var(--color-accent-underline);text-underline-offset:.14em;transition:text-decoration-color var(--duration-fast) var(--ease-out);text-decoration-thickness:1px}p a:hover{color:var(--color-fg-bold);-webkit-text-decoration-color:var(--color-accent);text-decoration-color:var(--color-accent)}}b,strong{color:var(--color-fg-bold);font-weight:var(--font-weight-semibold)}em,i{font-style:italic}h1,h2,h3,h4,h5,h6{color:var(--color-fg-bold);font-family:var(--font-display);font-weight:var(--font-weight-medium);letter-spacing:var(--tracking-tight);line-height:var(--leading-tight);text-wrap:balance;overflow-wrap:break-word;min-width:0;margin:0 0 .5em}h1 a,h2 a,h3 a,h4 a,h5 a,h6 a{color:inherit;text-decoration:none}h1{font-size:var(--text-3xl);letter-spacing:var(--tracking-display);line-height:1.05}h2{font-size:var(--text-xl)}h3{font-size:var(--text-lg);line-height:var(--leading-snug)}h4{font-size:var(--text-md)}h5,h6{font-size:var(--text-base)}@media (max-width:735px){h1{font-size:2.25rem}h2{font-size:1.625rem}h3{font-size:1.25rem}}p{margin:0 0 var(--spacing-element) 0;text-wrap:pretty}code{background:var(--color-surface-subtle);border:var(--rule) solid var(--color-border);font-family:var(--font-mono);font-size:var(--text-sm);border-radius:0;margin:0 .15em;padding:.15em .4em}ul{list-style-type:disc}ol,ul{margin:0 0 var(--spacing-element) 0;padding-left:1em}ol{list-style-type:decimal}ol li,ul li{padding-left:.5em}blockquote{border-left:var(--rule) solid var(--color-border-alt);margin:0 0 var(--spacing-element) 0;padding:.25em 0 .25em var(--spacing-6)}hr{border:0;border-bottom:var(--rule) solid var(--color-border);margin:var(--spacing-group) 0}.tabular,table{font-variant-numeric:tabular-nums}}@layer components{.button{appearance:none;background:var(--color-accent-fill);border:var(--rule) solid var(--color-accent-fill);box-shadow:none;cursor:pointer;font-family:var(--font-display);font-size:var(--text-ui);font-weight:var(--font-weight-medium);letter-spacing:var(--tracking-normal);text-align:center;min-height:2.75rem;transition:background-color var(--duration-fast) var(--ease-out),border-color var(--duration-fast) var(--ease-out),color var(--duration-fast) var(--ease-out),transform var(--duration-fast) var(--ease-out);border-radius:0;justify-content:center;align-items:center;gap:.5em;padding:0 1.25rem;line-height:1;display:inline-flex;text-decoration:none!important}.button,.button:hover{color:var(--color-on-accent)}.button:hover{background:var(--color-accent-fill-hover);border-color:var(--color-accent-fill-hover)}.button:active{transform:scale(var(--press-scale))}.button:focus-visible{outline:var(--rule-strong) solid var(--color-focus-ring);outline-offset:2px;transition:none}.button:not(.button-secondary):focus-visible{outline-color:var(--color-focus-ring-fill)}.button-secondary{border-color:var(--color-control-border);color:var(--color-fg-bold);background:0 0}.button-secondary:hover{border-color:var(--color-accent);color:var(--color-fg-bold);background:0 0}.button-secondary:active{background:var(--color-surface-subtle)}.button[aria-busy=true]{cursor:progress}.button[aria-disabled=true],.button[disabled]{cursor:not-allowed;opacity:.5}.actions{margin:var(--spacing-element) 0 0 0;gap:var(--spacing-3);flex-wrap:wrap;padding:0;list-style:none;display:flex}.actions li{margin:0;padding:0}}@layer utilities{.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden}.absolute,.sr-only{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.table{display:table}.grow{flex-grow:1}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.resize{resize:both}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.rounded{border-radius:.25rem}.lowercase{text-transform:lowercase}.uppercase{text-transform:uppercase}.italic{font-style:italic}.underline{text-decoration-line:underline}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a)}.ring,.shadow{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.sepia{--tw-sepia:sepia(100%)}.filter,.sepia{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,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.section-title{margin:0 0 var(--spacing-6);padding-top:var(--spacing-5);border-top:var(--rule) solid var(--color-fg-bold);font-size:var(--text-xl);font-weight:var(--font-weight-medium);letter-spacing:var(--tracking-tight);line-height:var(--leading-tight);color:var(--color-fg-bold)}@media (max-width:735px){.section-title{font-size:1.625rem}}.page-header{margin-bottom:var(--spacing-16)}.page-header-row{justify-content:space-between;align-items:baseline;gap:var(--spacing-4);flex-wrap:wrap;display:flex}.page-title{font-size:var(--text-3xl);font-weight:var(--font-weight-medium);letter-spacing:var(--tracking-display);margin:0 0 var(--spacing-6);line-height:1.05}.page-lead{max-width:var(--measure-read);font-size:var(--text-lg);line-height:var(--leading-snug);letter-spacing:var(--tracking-tight);color:var(--color-fg-light)}.page-lead p{margin:0 0 var(--spacing-4)}.page-lead p:last-child{margin-bottom:0}.page-span{margin:var(--spacing-6) 0 0;font-size:var(--text-base);color:var(--color-fg)}.page-header-aside{font-size:var(--text-ui)}@media (max-width:735px){.page-header{margin-bottom:var(--spacing-12)}.page-title{font-size:2.25rem}.page-lead{font-size:var(--text-md)}}.rotating-line-text{animation:line-step var(--duration-normal) var(--ease-out);display:inline-block}@keyframes line-step{0%{opacity:0}to{opacity:1}}@media (prefers-reduced-motion:reduce){.rotating-line-text{animation:none}}.caption{margin:var(--spacing-3) 0 0;font-size:var(--text-sm);color:var(--color-fg-light);text-wrap:pretty;line-height:1.45}.text-link{color:var(--color-fg);text-decoration:underline;-webkit-text-decoration-color:var(--color-accent-underline);text-decoration-color:var(--color-accent-underline);text-underline-offset:.14em;transition:text-decoration-color var(--duration-fast) var(--ease-out);text-decoration-thickness:1px}.text-link:hover{color:var(--color-fg-bold);-webkit-text-decoration-color:var(--color-accent);text-decoration-color:var(--color-accent)}.projects-page{max-width:var(--measure-page);padding-bottom:2rem}.projects-header{text-align:left;margin-bottom:2.5rem}.projects-group+.projects-group{margin-top:4rem}.projects-group-note{max-width:53ch;font-size:var(--text-base);color:var(--color-fg-light);margin:-.75rem 0 .5rem;line-height:1.5}@media print{.projects-group-note{margin-top:0}}.projects-register{margin:0;padding:0;list-style:none}.projects-register>li{padding-left:0}.projects-register-note{margin-top:1.5rem}.project-entry{border-bottom:var(--rule) solid var(--color-border);color:inherit;transition:background-color var(--duration-instant) var(--ease-out);grid-template-columns:9rem minmax(0,1fr);grid-auto-columns:7.5rem;align-items:baseline;column-gap:2rem;padding:1.5rem 0;text-decoration:none;display:grid}a.project-entry:focus-visible,a.project-entry:hover{background-color:var(--color-surface-subtle)}a.project-entry:focus-visible .project-entry-title,a.project-entry:hover .project-entry-title{color:var(--color-accent)}.daterange,.project-dates{font-family:var(--font-display);font-size:var(--text-sm);font-variant-numeric:tabular-nums;color:var(--color-fg-light);flex-wrap:wrap;align-items:baseline;gap:0 .4em;line-height:1.5;display:flex}.project-entry-role{font-size:var(--text-ui);line-height:var(--leading-snug);text-wrap:balance;color:var(--color-fg-light);margin-top:.25rem;display:block}.project-entry-role,.project-entry-title{font-family:var(--font-display);font-weight:var(--font-weight-medium)}.project-entry-title{font-size:var(--text-lg);letter-spacing:var(--tracking-tight);color:var(--color-fg-bold);max-width:var(--measure-read);transition:color var(--duration-instant) var(--ease-out);margin:0 0 .5rem;line-height:1.2}.project-entry--live .project-entry-title{font-size:var(--text-xl)}.project-entry--archive .project-entry-title{font-size:var(--text-md)}.project-entry-desc{max-width:53ch;font-size:var(--text-base);color:var(--color-fg);margin:0;line-height:1.5}.project-entry-questions{max-width:53ch;margin:.75rem 0 0;padding:0;list-style:none}.project-entry-questions li{font-size:var(--text-base);color:var(--color-fg);padding-left:1rem;line-height:1.5;position:relative}.project-entry-questions li+li{margin-top:.4rem}.project-entry-questions li:before{content:"";border-top:var(--rule) solid var(--color-fg-light);width:.45rem;position:absolute;top:.72em;left:0}.project-entry-tech{flex-wrap:wrap;gap:.5rem;margin-top:.875rem;display:flex}.project-entry-external{font-family:var(--font-display);font-size:var(--text-ui);color:var(--color-fg-light);transition:color var(--duration-instant) var(--ease-out),transform var(--duration-instant) var(--ease-out);margin-left:.35rem;display:inline-block}.project-entry--live .project-entry-external{font-size:var(--text-base)}a.project-entry:focus-visible .project-entry-external,a.project-entry:hover .project-entry-external{color:var(--color-accent);transform:translate(1px,-1px)}.project-entry-thumb{aspect-ratio:16/10;object-fit:cover;border:var(--rule) solid var(--color-border);background-color:var(--color-surface-subtle);grid-area:1/3;align-self:start;width:100%}@media (max-width:640px){.project-entry{display:block}.project-entry-meta{margin-bottom:.5rem}.project-entry-thumb{float:right;width:6rem;margin:.25rem 0 .5rem 1rem}.project-entry-desc{clear:right}}.experience-spine,.jobs-container{position:relative}.jobs-container{--job-title:var(--text-lg);--job-lead-in:0rem;grid-template-columns:var(--resume-gutter) minmax(0,1fr);column-gap:var(--resume-gap);padding:var(--job-lead-in) 0 3rem;align-items:baseline;display:grid}.jobs-container:before{content:"";top:0;bottom:0;left:calc(var(--resume-gutter) + var(--resume-gap) / 2);width:var(--rule);background:var(--color-border);position:absolute}.jobs-container:first-child:before{top:calc(var(--job-lead-in) + var(--job-title) * .82 - .25rem)}.jobs-container:last-child{padding-bottom:0}.jobs-container:last-child:before{background:linear-gradient(to bottom,var(--color-border),transparent)}.job-body{min-width:0;max-width:var(--measure-read)}.daterange{margin:0;position:relative}.daterange-sep{color:var(--color-border-alt)}.daterange-present{color:var(--color-signal);font-weight:var(--font-weight-medium)}.daterange-duration{flex-basis:100%}.job-marker{top:.75em;left:calc(100% + var(--resume-gap) / 2 + var(--rule) / 2);border:var(--rule-strong) solid var(--color-fg-light);background:var(--color-bg-alt);width:7px;height:7px;position:absolute;transform:translate(-50%,-50%)}.jobs-container--current .job-marker{border-color:var(--color-signal-mark);background:var(--color-signal-mark);width:9px;height:9px}.degree-container .degree,.jobs-container header h3{font-family:var(--font-display);font-weight:var(--font-weight-medium);letter-spacing:var(--tracking-tight);line-height:1.2}.degree-container .school,.job-position{font-family:var(--font-display);font-size:var(--text-sm);font-weight:var(--font-weight-medium);letter-spacing:var(--tracking-normal);line-height:var(--leading-snug);color:var(--color-fg)}.degree-container .school a,.job-company{color:inherit;text-decoration:none}.degree-container .school a:focus-visible,.degree-container .school a:hover,.job-company:focus-visible,.job-company:hover{color:var(--color-accent);text-underline-offset:.15em;text-decoration:underline;text-decoration-thickness:1px}.jobs-container header h3{font-size:var(--job-title);flex-direction:column;gap:.3rem;margin-bottom:.75rem;display:flex}.job-titles{flex-direction:column;gap:1.25rem;margin:0;padding:0;list-style:none;display:flex}.job-title-heading{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.25rem 1.5rem;margin-bottom:.75rem;display:flex}.job-title-dates{font-family:var(--font-display);font-size:var(--text-sm);font-variant-numeric:tabular-nums;color:var(--color-fg-light)}.job-company{width:fit-content}.summary{font-size:var(--text-md);color:var(--color-fg);margin-bottom:.5em;line-height:1.5}.degree-container .points,.jobs-container .points{margin:1rem 0 0;padding-left:0;list-style:none}.degree-container .points li,.jobs-container .points li{--leading:1.5;font-size:var(--text-base);line-height:var(--leading);text-wrap:pretty;margin-bottom:.6rem;padding-left:1.25rem;position:relative}.degree-container .points li:before,.jobs-container .points li:before{content:"";top:calc(var(--leading) * .5em);border-top:var(--rule) solid var(--color-fg-light);width:.5rem;position:absolute;left:0}.jobs-container--lead{--job-title:var(--text-xl);--job-lead-in:.5rem;padding-bottom:4rem}.jobs-container--lead .summary{font-size:var(--text-lg)}.jobs-container--early{--job-title:var(--text-md);padding-bottom:2rem}.jobs-container--early header h3{margin-bottom:.5rem}.jobs-container--early .summary{font-size:var(--text-base)}.jobs-container--early .points li{font-size:var(--text-sm);margin-bottom:.4rem}.jobs-container--early .job-marker{border-width:var(--rule);width:5px;height:5px}@media screen and (max-width:760px){.jobs-container{grid-template-columns:minmax(0,1fr);row-gap:.5rem;padding-left:1.5rem}.jobs-container:before{left:0}.jobs-container:first-child:before{top:calc(var(--job-lead-in) + .5625rem)}.job-marker{left:calc(var(--rule) / 2 - 1.5rem)}.daterange-duration{flex-basis:auto}.daterange-duration>[aria-hidden]:before{content:"·";color:var(--color-border-alt);margin-right:.4em}}.degree-container+.degree-container{margin-top:1.75rem}.degree-container .degree{font-size:var(--text-lg);margin:0 0 .3rem}.degree-container .school{margin:0}.degree-container .school time{font-size:var(--text-sm);font-weight:var(--font-weight-normal);font-variant-numeric:tabular-nums;color:var(--color-fg-light)}.course-container{padding-left:0;display:grid}.course-container a{min-height:2.75rem;transition:background-color var(--duration-fast) var(--ease-out);grid-template-columns:4.5rem minmax(0,1fr);align-items:baseline;column-gap:1rem;margin:0 -.5rem;padding:.75rem .5rem;display:grid}.course-container a:focus-visible,.course-container a:hover{background-color:var(--color-surface-subtle)}.courses .course-number{font-family:var(--font-display);font-size:var(--text-sm);font-variant-numeric:tabular-nums;color:var(--color-fg-light)}.course-container a:focus-visible .course-number,.course-container a:hover .course-number{color:var(--color-accent)}.courses .course-name{font-size:var(--text-sm);line-height:var(--leading-snug);text-wrap:balance;color:var(--color-fg)}.skill-groups{gap:.875rem;display:grid}.skill-group{grid-template-columns:var(--resume-gutter) minmax(0,1fr);column-gap:var(--resume-gap);align-items:baseline;display:grid}.skill-group-title{font-family:var(--font-display);font-size:var(--text-ui);font-weight:var(--font-weight-medium);letter-spacing:var(--tracking-normal);line-height:var(--leading-snug);color:var(--color-fg-light);margin:0}.skill-tags{flex-wrap:wrap;gap:.375rem;margin:0;padding:0;list-style:none;display:flex}.skill-tag{border:var(--rule) solid var(--color-border);font-family:var(--font-display);font-size:var(--text-sm);white-space:nowrap;color:var(--color-fg);padding:.3em .7em;line-height:1.5}.skills .skill-tier-legend{margin:-.75rem 0 1.5rem}@media screen and (max-width:760px){.skill-groups{gap:1.25rem}.skill-group{grid-template-columns:minmax(0,1fr);row-gap:.5rem}}.tech-tag{font-family:var(--font-display);font-size:var(--text-sm);font-weight:var(--font-weight-normal);color:var(--color-fg-light);border:var(--rule) solid var(--color-border);background:0 0;padding:.25rem .5rem}.skill-tag-count{font-variant-numeric:tabular-nums;margin-left:.45em}.skill-tag--familiar{color:var(--color-fg-light)}@media (forced-colors:active){.skill-tier-legend-tone{display:none}}.section-header{margin:0 0 var(--spacing-6);padding-top:var(--spacing-5);border-top:var(--rule) solid var(--color-fg-bold);flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.25rem 1rem;display:flex}.section-heading{font-size:var(--text-xl);font-weight:var(--font-weight-medium);letter-spacing:var(--tracking-tight);line-height:var(--leading-tight);text-transform:none;color:var(--color-fg-bold)}.section-header-meta,.section-heading{font-family:var(--font-display);margin:0}.section-header-meta{font-size:var(--text-sm);font-variant-numeric:tabular-nums;color:var(--color-fg-light)}@media (max-width:735px){.section-heading{font-size:var(--text-lg)}}@media print{.section-header{break-after:avoid;page-break-after:avoid;margin-bottom:.5rem;padding-top:.5rem}.section-heading{font-size:14pt}}.register{border-top:var(--rule) solid var(--color-fg-bold)}.section-title~* .register,.section-title~.register{border-top-color:var(--color-border)}.register-row{column-gap:var(--grid-gap);padding:var(--spacing-5) 0;border-bottom:var(--rule) solid var(--color-border);color:inherit;transition:background-color var(--duration-fast) var(--ease-out);grid-template-columns:minmax(0,2fr) minmax(0,8fr) minmax(0,2fr);align-items:baseline;text-decoration:none;display:grid}.register-row--featured{padding:var(--spacing-8) 0}a.register-row:focus-visible,a.register-row:hover{background-color:var(--color-surface-subtle)}a.register-row:focus-visible .register-title,a.register-row:hover .register-title{text-decoration:underline;-webkit-text-decoration-color:var(--color-accent);text-decoration-color:var(--color-accent);text-decoration-thickness:var(--rule);text-underline-offset:.12em}a.register-row:focus-visible{outline:var(--rule-strong) solid var(--color-focus-ring);outline-offset:-2px}.register-date{font-size:var(--text-sm);font-variant-numeric:tabular-nums;color:var(--color-fg-light);white-space:nowrap;line-height:1.5}.register-copy{min-width:0}.register-title{margin:0 0 var(--spacing-1);max-width:var(--measure-read);font-size:var(--text-lg);font-weight:var(--font-weight-medium);letter-spacing:var(--tracking-tight);line-height:var(--leading-snug);color:var(--color-fg-bold);text-wrap:pretty}.register-row--featured .register-title{font-size:var(--text-xl);line-height:var(--leading-tight)}.register-line{max-width:var(--measure-read);font-size:var(--text-base);line-height:var(--leading-normal);color:var(--color-fg);text-wrap:pretty;margin:0}.register-row--featured .register-line{font-size:var(--text-md)}.register-details{max-width:var(--measure-read);margin:var(--spacing-3) 0 0;padding:0;list-style:none}.register-details li{font-size:var(--text-base);line-height:var(--leading-normal);color:var(--color-fg);padding-left:1rem;position:relative}.register-details li+li{margin-top:var(--spacing-1)}.register-details li:before{content:"";border-top:var(--rule) solid var(--color-fg-light);width:.45rem;position:absolute;top:.78em;left:0}.register-mark{text-align:right;justify-self:end;line-height:1.5}.register-mark,.register-year-title{font-size:var(--text-sm);color:var(--color-fg-light)}.register-year-title{margin:0 0 var(--spacing-4);font-weight:var(--font-weight-medium);font-variant-numeric:tabular-nums}.register-year+.register-year{margin-top:var(--spacing-10)}@media (max-width:735px){.register-row{column-gap:var(--grid-gap-phone);row-gap:var(--spacing-2);padding:var(--spacing-4) 0;grid-template-columns:minmax(0,1fr) auto}.register-row--featured{padding:var(--spacing-6) 0}.register-date{grid-area:1/1}.register-mark{grid-area:1/2}.register-copy{grid-area:2/1/auto/-1}.register-row--featured .register-title{font-size:var(--text-lg)}}.pull-figure{min-width:0;margin:0}.pull-figure-value{margin:0 0 var(--spacing-3);font-size:var(--text-figure);font-weight:var(--font-weight-medium);font-variant-numeric:tabular-nums;letter-spacing:var(--tracking-display);line-height:var(--leading-display);color:var(--color-fg-bold)}.pull-figure-sentence{max-width:28rem;font-size:var(--text-md);line-height:var(--leading-snug);color:var(--color-fg);text-wrap:pretty;margin:0}@media (max-width:735px){.pull-figure-value{font-size:3.5rem}}.figure-deck{align-items:flex-start;gap:var(--spacing-4);flex-direction:column;display:flex}@keyframes figure-step{0%{opacity:0}to{opacity:1}}.figure-deck .pull-figure{animation:figure-step var(--duration-normal) var(--ease-out)}.figure-deck-source{font-size:var(--text-sm);color:var(--color-fg-light);margin:0;line-height:1.5}.figure-deck-source a{color:var(--color-fg);text-decoration:underline;-webkit-text-decoration-color:var(--color-accent-underline);text-decoration-color:var(--color-accent-underline);text-decoration-thickness:var(--rule);text-underline-offset:.14em}.figure-deck-source a:hover{color:var(--color-fg-bold);-webkit-text-decoration-color:var(--color-accent);text-decoration-color:var(--color-accent)}@media (prefers-reduced-motion:reduce){.figure-deck .pull-figure{animation:none}}.pull-quote{padding-top:var(--spacing-4);border-top:var(--rule) solid var(--color-border-alt);margin:0}.pull-quote blockquote{margin:0 0 var(--spacing-4);border:0;padding:0}.pull-quote blockquote p{font-size:var(--text-lg);font-weight:var(--font-weight-normal);letter-spacing:var(--tracking-tight);line-height:var(--leading-snug);color:var(--color-fg-bold);text-wrap:pretty;margin:0}.pull-quote figcaption{font-size:var(--text-sm);color:var(--color-fg-light);flex-direction:column;gap:.125rem;line-height:1.45;display:flex}.pull-quote-name{color:var(--color-fg);font-weight:var(--font-weight-medium)}.photo-reel{min-width:0;margin:0}.photo-reel-frame{aspect-ratio:var(--reel-ratio,3/2);background:var(--color-surface-subtle);margin:0;padding:0;list-style:none;position:relative;overflow:hidden}.photo-reel-slide{margin:0;position:absolute;inset:0;transform:translate(100%)}.photo-reel-slide--staged-left{transform:translate(-100%)}.photo-reel-slide--active{transform:none}.photo-reel-slide--active,.photo-reel-slide--leaving-left{transition:transform var(--reel-swipe,.6s) var(--ease-out)}.photo-reel-slide--leaving-left{transform:translate(-100%)}.photo-reel-slide--leaving-right{transition:transform var(--reel-swipe,.6s) var(--ease-out);transform:translate(100%)}.photo-reel-slide img,.photo-reel-slide picture{width:100%;height:100%;display:block}.photo-reel-slide img{object-fit:cover}.photo-reel-foot{justify-content:space-between;align-items:baseline;gap:0 var(--spacing-6);flex-wrap:wrap;display:flex}.photo-reel-caption{flex:20rem}.photo-reel-controls{margin:var(--spacing-1) calc(-1 * var(--spacing-2)) 0 auto;font-size:var(--text-sm);font-variant-numeric:tabular-nums;color:var(--color-fg-light);align-items:center;display:flex}.photo-reel-count{padding:0 var(--spacing-1)}.photo-reel-button{min-width:2.75rem;min-height:2.75rem;padding:0 var(--spacing-2);font:inherit;color:var(--color-fg-light);cursor:pointer;transition:color var(--duration-fast) var(--ease-out);background:0 0;border:0;justify-content:center;align-items:center;display:inline-flex}.photo-reel-button:focus-visible,.photo-reel-button:hover{color:var(--color-fg-bold)}.photo-reel-button:focus-visible{outline:var(--rule-strong) solid var(--color-focus-ring);outline-offset:-4px}.photo-reel-arrow{font-family:system-ui,sans-serif}:root:not([data-theme-choice]) .photo-reel-controls{display:none}@media (prefers-reduced-motion:reduce){.photo-reel-slide{transition:none}}.skip-link{z-index:calc(var(--z-header) + 1);background:var(--color-accent-fill);color:var(--color-on-accent);font-family:var(--font-display);font-size:var(--text-ui);font-weight:var(--font-weight-medium);border-radius:0;padding:.75rem 1.25rem;text-decoration:none;position:fixed;top:.5rem;left:.5rem;transform:translateY(-200%)}.skip-link:focus-visible{color:var(--color-on-accent);outline:var(--rule-strong) solid var(--color-focus-ring-fill);outline-offset:2px;transform:translateY(0)}.not-found-page:focus,.page-main:focus{outline:none}.site-header{background-color:var(--color-bg-alt);border-bottom:var(--rule) solid var(--color-border);align-items:center;gap:var(--spacing-4);height:var(--header-height);padding:0 max(var(--gutter-desktop),calc((100% - var(--measure-page)) / 2 + var(--gutter-desktop)));width:100%;z-index:var(--z-header);box-sizing:border-box;justify-content:space-between;line-height:1;display:flex;position:fixed;top:0;left:0}@media (max-width:735px){.site-header{height:var(--header-height-mobile);line-height:var(--header-height-mobile);padding:0 var(--gutter)}}.slide-menu-overlay{background:var(--color-overlay-darker);opacity:0;pointer-events:none;z-index:var(--z-overlay);position:fixed;inset:0}.slide-menu-overlay--open{opacity:1;pointer-events:auto}.slide-menu{-webkit-overflow-scrolling:touch;background-color:var(--color-bg-alt);border-bottom:var(--rule) solid var(--color-border-alt);left:0;right:0;top:var(--header-height-mobile);max-height:calc(100dvh - var(--header-height-mobile));padding:0 var(--gutter) var(--spacing-6);z-index:var(--z-menu);display:none;position:fixed;overflow-y:auto}.slide-menu--open{display:block}.slide-menu ul{color:var(--color-fg-bold);margin-top:0;padding:0}.hamburger-container{display:none}@media (max-width:735px){.hamburger-container{display:block}}.hamburger-container .main{height:100%}.hamburger-container .main ul{height:100%;margin:0;padding:0;list-style:none}.hamburger-container .main ul li{height:100%;display:block}.hamburger-button,.hamburger-container .main ul li.menu{align-items:center;display:flex}.hamburger-button{box-shadow:none;cursor:pointer;background:0 0;border:0;justify-content:center;min-width:44px;min-height:44px;padding:0}.hamburger-button:focus-visible .hamburger-icon span{background-color:var(--color-accent)}.hamburger-icon{width:20px;height:14px;display:block;position:relative}.hamburger-icon span{background-color:var(--color-fg-bold);width:100%;height:2px;display:block;position:absolute;left:0}.hamburger-icon span:first-child{top:0}.hamburger-icon span:nth-child(2){top:50%;transform:translateY(-50%)}.hamburger-icon span:nth-child(3){bottom:0}.hamburger-icon--open span:first-child{top:50%;transform:translateY(-50%)rotate(45deg)}.hamburger-icon--open span:nth-child(2){opacity:0}.hamburger-icon--open span:nth-child(3){bottom:50%;transform:translateY(50%)rotate(-45deg)}.slide-menu-close{width:44px;height:44px;color:var(--color-fg-light);cursor:pointer;background:0 0;border:0;justify-content:center;align-items:center;margin:0 -.75rem 0 auto;padding:0;font-size:1.5rem;line-height:1;display:flex}.slide-menu-close:hover{color:var(--color-fg-bold)}.slide-menu-close:focus-visible{outline:var(--rule-strong) solid var(--color-focus-ring);outline-offset:2px}.hamburger-ul{flex-direction:column;gap:0;margin:0;padding:0;list-style:none;display:flex}.hamburger-ul li{border-bottom:var(--rule) solid var(--color-border);display:block}.hamburger-ul li:first-child{border-top:var(--rule) solid var(--color-border)}.hamburger-ul li a{border-radius:0;padding:.9rem 0;text-decoration:none;display:block}.hamburger-ul li a:focus-visible{outline:var(--rule-strong) solid var(--color-focus-ring);outline-offset:-2px}.hamburger-ul li a span{font-family:var(--font-display);font-size:var(--text-md);font-weight:var(--font-weight-medium);color:var(--color-fg);letter-spacing:var(--tracking-normal);border:none;margin:0;padding:0}.hamburger-ul li a.active span{text-decoration:underline;-webkit-text-decoration-color:var(--color-accent);text-decoration-color:var(--color-accent);text-underline-offset:.2em;text-decoration-thickness:2px}.hamburger-ul li a:focus-visible span,.hamburger-ul li a:hover span{color:var(--color-fg-bold)}.hamburger-ul li:has(.index-li){border-bottom-color:var(--color-fg-bold)}.hamburger-ul li a .index-li{font-weight:var(--font-weight-medium);color:var(--color-fg-bold)}.site-brand{flex:1 1 0;min-width:0;display:flex}.site-logo{align-items:center;min-width:44px;min-height:44px;text-decoration:none;display:flex}.logo-name{font-family:var(--font-display);font-size:var(--text-md);font-weight:var(--font-weight-medium);color:var(--color-fg-bold);letter-spacing:var(--tracking-tight);line-height:var(--leading-snug);text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}:root:has(.hero) .logo-name{visibility:hidden}.nav-links{align-items:center;gap:clamp(1.25rem,2.75vw,2rem);display:none}@media screen and (min-width:736px){.nav-links{margin:0 var(--spacing-6);display:flex}}.nav-link{min-height:44px;font-family:var(--font-display);font-size:var(--text-ui);font-weight:var(--font-weight-medium);letter-spacing:var(--tracking-normal);color:var(--color-fg);transition:color var(--duration-fast) var(--ease-out);align-items:center;padding:.5rem 0;line-height:1;text-decoration:none;display:inline-flex;position:relative}.nav-link:after{content:"";bottom:calc(50% - (var(--header-height) + var(--rule)) / 2);height:var(--rule-strong);background:var(--color-accent);opacity:0;transition:opacity var(--duration-fast) var(--ease-out);position:absolute;left:0;right:0}.nav-link:focus-visible,.nav-link:hover{color:var(--color-fg-bold)}.nav-link:focus-visible:after,.nav-link:hover:after{opacity:.5}.nav-link:focus-visible{outline:var(--rule-strong) solid var(--color-focus-ring);outline-offset:4px}.nav-link.active{color:var(--color-fg-bold)}.nav-link.active:after{opacity:1}.nav-actions{justify-content:flex-end;align-items:center;gap:var(--spacing-3);display:flex}.nav-resume{min-height:2.25rem;font-size:var(--text-sm);padding:0 .875rem}.theme-toggle{width:44px;height:44px;color:var(--color-fg);cursor:pointer;transition:color var(--duration-fast) var(--ease-out);background:0 0;border:0;justify-content:center;align-items:center;padding:0;display:flex}.theme-toggle:focus-visible,.theme-toggle:hover{color:var(--color-fg-bold)}.theme-toggle:focus-visible{outline:var(--rule-strong) solid var(--color-focus-ring);outline-offset:2px}.theme-toggle-state{justify-content:center;align-items:center;display:none}:root[data-theme-choice=dark] .theme-toggle-state[data-theme-state=dark],:root[data-theme-choice=light] .theme-toggle-state[data-theme-state=light],:root[data-theme-choice=system] .theme-toggle-state[data-theme-state=system]{display:flex}:root:not([data-theme-choice]) .hamburger-button,:root:not([data-theme-choice]) .theme-toggle{display:none}@media screen and (min-width:736px){.nav-actions{flex:1 1 0}.hamburger-button{display:none}}.site-footer{border-top:var(--rule) solid var(--color-border);padding:var(--spacing-10) 0 var(--spacing-12);background:0 0;margin-top:auto}.footer-grid{box-sizing:border-box;width:100%;max-width:var(--measure-page);padding-inline:var(--gutter-desktop);gap:var(--spacing-6) var(--grid-gap);font-size:var(--text-sm);color:var(--color-fg-light);grid-template-columns:repeat(12,minmax(0,1fr));margin:0 auto;line-height:1.45;display:grid}.footer-col{grid-column:span 3;min-width:0}.footer-col p{margin:0 0 var(--spacing-2)}@media screen and (max-width:735px){.footer-grid{padding-inline:var(--gutter);gap:var(--spacing-6) var(--grid-gap-phone)}.footer-col{grid-column:span 6}.footer-identity{grid-column:span 12}}.footer-name{font-size:var(--text-base);font-weight:var(--font-weight-medium);color:var(--color-fg-bold);margin:0 0 var(--spacing-1);display:inline-block}.footer-role{color:var(--color-fg)}.footer-copyright{margin-top:var(--spacing-3)}.footer-heading{color:var(--color-fg-bold);font-weight:var(--font-weight-medium)}.footer-list{margin:0;padding:0;list-style:none}.footer-list li{margin:0;padding:.125rem 0}.footer-list a{min-height:1.75rem;color:var(--color-fg-light);display:inline-block}.footer-list a:hover{color:var(--color-fg-bold)}.footer-wit{color:var(--color-fg)}.page-container{min-height:calc(100dvh - var(--header-height));flex-direction:column;display:flex}@media (max-width:735px){.page-container{min-height:calc(100dvh - var(--header-height-mobile))}}.page-main{width:100%;max-width:var(--measure-page);padding:var(--spacing-8) var(--gutter) var(--spacing-section-phone);flex:1;margin:0 auto}@media screen and (min-width:736px){.page-main{padding:var(--spacing-12) var(--gutter-desktop) var(--spacing-section)}}.grid{column-gap:var(--grid-gap);grid-template-columns:repeat(12,minmax(0,1fr));display:grid}@media (max-width:735px){.grid{column-gap:var(--grid-gap-phone)}}.page-main>article>*+section,.page-main>article>section+section,.page-main>section+section{margin-top:var(--spacing-section)}@media (max-width:735px){.page-main>article>*+section,.page-main>article>section+section,.page-main>section+section{margin-top:var(--spacing-section-phone)}}.photograph{min-width:0;margin:0}.photograph picture{display:block}.photograph img{background:var(--color-surface-subtle);width:100%;height:auto;display:block}.placeholder{min-width:0;margin:0}.placeholder-plate{aspect-ratio:var(--ratio,3/2);background:var(--color-surface-subtle);box-shadow:inset 0 0 0 1px var(--color-image-edge);justify-content:flex-start;align-items:flex-end;display:flex;position:relative;overflow:hidden}.placeholder-lines{width:100%;height:100%;stroke:var(--color-border);stroke-width:1px;position:absolute;inset:0}.placeholder-label{margin:var(--spacing-3);background:var(--color-bg-alt);font-size:var(--text-sm);color:var(--color-fg-light);max-width:calc(100% - 2 * var(--spacing-3));padding:.25rem .5rem;line-height:1.45;position:relative}.contact-band{margin-top:var(--spacing-section)}.contact-band-sentence{max-width:var(--measure-read);font-size:var(--text-md);margin:0 0 var(--spacing-6)}.contact-band-actions{gap:var(--spacing-3);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}.contact-band-actions li{margin:0;padding:0}@media (max-width:735px){.contact-band{margin-top:var(--spacing-section-phone)}}.hero{column-gap:var(--grid-gap);padding-top:var(--spacing-4);grid-template-columns:repeat(12,minmax(0,1fr));align-items:stretch;display:grid}.hero-copy{flex-direction:column;grid-column:1/span 7;justify-content:space-between;min-width:0;display:flex}.hero-name{font-size:clamp(3rem,1.25rem + 6.5vw,var(--text-display));font-weight:var(--font-weight-medium);letter-spacing:-.03em;color:var(--color-fg-bold);text-wrap:balance;margin:0;line-height:.95}.hero-title-line{margin:var(--spacing-5) 0 0;max-width:34rem;min-height:2.6em;font-size:var(--text-lg);letter-spacing:var(--tracking-tight);color:var(--color-fg-light);line-height:1.3}.hero-foot{margin-top:var(--spacing-12);max-width:34rem}.hero-sentence{margin:0 0 var(--spacing-8);font-size:var(--text-lg);line-height:var(--leading-snug);letter-spacing:var(--tracking-tight);color:var(--color-fg);text-wrap:pretty}.hero-actions{gap:var(--spacing-3);flex-wrap:wrap;list-style:none;display:flex}.hero-actions,.hero-actions li{margin:0;padding:0}.hero-portrait{grid-column:8/span 5;align-self:start;margin:0}.hero-portrait-option[hidden]{display:none}@media (max-width:1023px){.hero-copy{grid-column:1/span 7}.hero-portrait{grid-column:8/span 5}}@media (max-width:735px){.hero{column-gap:var(--grid-gap-phone);padding-top:0}.hero-copy,.hero-portrait{grid-column:1/-1}.hero-foot{margin-top:var(--spacing-8)}.hero-sentence,.hero-title-line{font-size:var(--text-md)}.hero-portrait{margin-top:var(--spacing-10)}}.home-now-grid{column-gap:var(--grid-gap);row-gap:var(--spacing-10);grid-template-columns:repeat(12,minmax(0,1fr));display:grid}.home-now-copy{grid-column:1/span 7;min-width:0}.home-now-grid .figure-deck{grid-column:9/span 4}.home-now-role{margin:0 0 var(--spacing-6);flex-direction:column;gap:.125rem;display:flex}.home-now-employer{font-size:var(--text-lg);font-weight:var(--font-weight-medium);letter-spacing:var(--tracking-tight);line-height:var(--leading-snug);color:var(--color-fg-bold)}.home-now-position{font-size:var(--text-md);line-height:var(--leading-snug);color:var(--color-fg)}.home-now-since{font-size:var(--text-sm);font-variant-numeric:tabular-nums;color:var(--color-fg-light)}.home-now-remit{max-width:var(--measure-read);margin:0 0 var(--spacing-6);font-size:var(--text-md);line-height:var(--leading-normal);color:var(--color-fg)}@media (max-width:1023px){.home-now-copy{grid-column:1/span 7}.home-now-grid .figure-deck{grid-column:8/span 5}}@media (max-width:735px){.home-now-grid{column-gap:var(--grid-gap-phone);row-gap:var(--spacing-8)}.home-now-copy,.home-now-grid .figure-deck{grid-column:1/-1}}.home-lately-links{gap:var(--spacing-6);margin:var(--spacing-6) 0 0;font-size:var(--text-base);flex-wrap:wrap;display:flex}.work-page{max-width:var(--measure-page)}.story-opening{column-gap:var(--grid-gap);row-gap:var(--spacing-8);grid-template-columns:repeat(12,minmax(0,1fr));align-items:start;display:grid}.story-opening .page-title{grid-column:1/-1}.story-portrait{grid-column:1/span 4}.story-intro{grid-column:6/span 7;min-width:0}.story-intro .page-lead{max-width:none}@media (max-width:1023px){.story-portrait{grid-column:1/span 5}}@media (max-width:735px){.story-opening{column-gap:var(--grid-gap-phone)}.story-portrait{grid-column:1/span 8}.story-intro{grid-column:1/-1}}.chapters{border-top:var(--rule) solid var(--color-fg-bold)}.chapter{column-gap:var(--grid-gap);row-gap:var(--spacing-10);padding:var(--spacing-12) 0 var(--spacing-16);border-bottom:var(--rule) solid var(--color-border);scroll-margin-top:calc(var(--header-height) + var(--spacing-6));grid-template-columns:repeat(12,minmax(0,1fr));display:grid}.chapter--earlier{padding:var(--spacing-8) 0}.chapter-rail{min-width:0;font-size:var(--text-sm);font-variant-numeric:tabular-nums;color:var(--color-fg-light);flex-direction:column;grid-column:1/span 2;justify-content:space-between;line-height:1.5;display:flex}.chapter--current .chapter-year:not(.chapter-year--start){color:var(--color-accent);font-weight:var(--font-weight-medium)}.chapter-body{grid-column:3/span 7;min-width:0}.chapter-aside{grid-column:10/span 3;min-width:0}.chapter--earlier .chapter-body{grid-column:3/span 9}.chapter-dates{gap:0 var(--spacing-4);margin:0 0 var(--spacing-3);font-size:var(--text-sm);font-variant-numeric:tabular-nums;color:var(--color-fg-light);flex-wrap:wrap;line-height:1.5;display:flex}.chapter-dates .daterange{font-size:inherit}.chapter-title{margin:0 0 var(--spacing-5);font-size:var(--text-xl);line-height:var(--leading-tight);letter-spacing:var(--tracking-tight);text-wrap:balance;flex-direction:column;gap:.2em;display:flex}.chapter--earlier .chapter-title{font-size:var(--text-lg);margin-bottom:var(--spacing-3)}.chapter-employer{color:var(--color-fg-bold);width:fit-content;text-decoration:none}a.chapter-employer:focus-visible,a.chapter-employer:hover{text-decoration:underline;-webkit-text-decoration-color:var(--color-accent);text-decoration-color:var(--color-accent);text-decoration-thickness:var(--rule-strong);text-underline-offset:.12em}.chapter-role{font-size:var(--text-md);font-weight:var(--font-weight-normal);letter-spacing:var(--tracking-normal);line-height:var(--leading-snug);color:var(--color-fg)}.chapter--earlier .chapter-role{font-size:var(--text-base)}.chapter-titles{margin:calc(-1 * var(--spacing-3)) 0 var(--spacing-5);font-size:var(--text-sm);color:var(--color-fg-light);padding:0;line-height:1.5;list-style:none}.chapter-titles li{padding:0}.chapter-titles .daterange{font-size:inherit;display:inline-flex}.chapter-deck{max-width:var(--measure-read);margin:0 0 var(--spacing-4);font-size:var(--text-lg);line-height:var(--leading-snug);letter-spacing:var(--tracking-tight);color:var(--color-fg-bold);text-wrap:pretty}.chapter--earlier .chapter-deck{font-size:var(--text-md);color:var(--color-fg)}.chapter-scope{margin:0 0 var(--spacing-5);font-size:var(--text-base);color:var(--color-fg-light)}.chapter-narrative,.chapter-scope{max-width:var(--measure-read);line-height:var(--leading-normal)}.chapter-narrative{font-size:var(--text-md);color:var(--color-fg);text-wrap:pretty;margin:0}.chapter--earlier .chapter-narrative{font-size:var(--text-base)}.chapter-figures{gap:var(--spacing-8) var(--grid-gap);margin:var(--spacing-10) 0 0;padding-top:var(--spacing-6);border-top:var(--rule) solid var(--color-border);grid-template-columns:minmax(0,1fr);display:grid}.chapter-figures--2{grid-template-columns:repeat(2,minmax(0,1fr))}.chapter--earlier .chapter-figures{margin-top:var(--spacing-6);padding-top:var(--spacing-4)}.chapter--earlier .pull-figure-value{font-size:var(--text-2xl)}.chapter-photograph{grid-column:1/-1}@media (max-width:1023px){.chapter--earlier .chapter-body,.chapter-body{grid-column:3/span 10}.chapter-aside{grid-column:3/span 8}}@media (max-width:735px){.chapter{column-gap:var(--grid-gap-phone);row-gap:var(--spacing-8);padding:var(--spacing-8) 0 var(--spacing-10);scroll-margin-top:calc(var(--header-height-mobile) + var(--spacing-6))}.chapter-rail{gap:var(--spacing-3);flex-direction:row;grid-column:1/-1}.chapter-year--start:before{content:"–";color:var(--color-border-alt)}.chapter--earlier .chapter-body,.chapter-aside,.chapter-body{grid-column:1/-1}.chapter-title{font-size:var(--text-lg)}.chapter-figures--2{grid-template-columns:minmax(0,1fr)}}.chapters-earlier{margin-top:var(--spacing-12)}.chapters-earlier .section-title{border-top-color:var(--color-fg-bold);margin-bottom:0}.chapters-earlier .chapter:first-of-type{border-top:var(--rule) solid var(--color-border)}.ledger-lead{max-width:var(--measure-read);margin:0 0 var(--spacing-10);font-size:var(--text-md);line-height:var(--leading-normal);color:var(--color-fg)}.ledger-group{column-gap:var(--grid-gap);padding:var(--spacing-5) 0;border-top:var(--rule) solid var(--color-border);grid-template-columns:repeat(12,minmax(0,1fr));display:grid}.ledger-group:last-of-type{border-bottom:var(--rule) solid var(--color-border)}.ledger-chapter{font-size:var(--text-base);font-weight:var(--font-weight-medium);line-height:var(--leading-snug);grid-column:1/span 3;margin:0}.ledger-chapter a{color:var(--color-fg-bold);text-decoration:none}.ledger-chapter a:focus-visible,.ledger-chapter a:hover{text-decoration:underline;-webkit-text-decoration-color:var(--color-accent);text-decoration-color:var(--color-accent);text-underline-offset:.12em}.ledger-rows{grid-column:4/span 9;margin:0;padding:0;list-style:none}.ledger-row{column-gap:var(--grid-gap);font-size:var(--text-base);line-height:var(--leading-normal);grid-template-columns:7rem minmax(0,1fr);align-items:baseline;padding:.3rem 0;display:grid}.ledger-value{font-weight:var(--font-weight-medium);font-variant-numeric:tabular-nums;color:var(--color-fg-bold)}.ledger-sentence{color:var(--color-fg);max-width:var(--measure-read)}@media (max-width:735px){.ledger-group{row-gap:var(--spacing-3);grid-template-columns:minmax(0,1fr)}.ledger-chapter,.ledger-rows{grid-column:1/-1}.ledger-row{column-gap:var(--grid-gap-phone);grid-template-columns:5.5rem minmax(0,1fr)}}.work-documents{max-width:var(--measure-read);margin:0;padding:0;list-style:none}.work-documents li{padding:var(--spacing-4) 0;border-bottom:var(--rule) solid var(--color-border);font-size:var(--text-md);flex-direction:column;gap:.125rem;display:flex}.work-documents li:first-child{border-top:var(--rule) solid var(--color-border)}.work-documents-note{font-size:var(--text-base);color:var(--color-fg-light)}.resume-page .courses .course-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:0 3rem;margin:0;padding:0;list-style:none;display:grid}@media (max-width:735px){.resume-page .courses .course-list{grid-template-columns:1fr}}.resume-note{max-width:53ch;font-size:var(--text-base);color:var(--color-fg-light);margin:0;line-height:1.5}@media print{.resume-note{font-size:10pt}}.resume-content .resume-note a,.resume-content .summary a{color:var(--color-fg);text-decoration:underline;-webkit-text-decoration-color:var(--color-accent-underline);text-decoration-color:var(--color-accent-underline);text-decoration-thickness:var(--rule);text-underline-offset:.14em}.resume-content .resume-note a:hover,.resume-content .summary a:hover{color:var(--color-fg-bold);-webkit-text-decoration-color:var(--color-accent);text-decoration-color:var(--color-accent)}.resume-note-arrow{font-family:system-ui,sans-serif}.reference-list{flex-direction:column;gap:1.25rem;margin:1.5rem 0 0;padding:0;list-style:none;display:flex}.reference{grid-template-columns:60px minmax(0,1fr);align-items:start;column-gap:.75rem;display:grid}.reference-photo{object-fit:cover;width:60px;height:60px}.reference-name{font-family:var(--font-display);font-size:var(--text-md);font-weight:var(--font-weight-medium);color:var(--color-fg-bold);margin:0;line-height:1.3}.reference-role{font-family:var(--font-display);font-size:var(--text-ui);font-weight:var(--font-weight-normal);color:var(--color-fg);display:block}.reference-meta{font-size:var(--text-sm);color:var(--color-fg-light);margin:.2rem 0 0}.reference-quote{font-size:var(--text-base);color:var(--color-fg);margin:.45rem 0 0;line-height:1.5}.resume-page{max-width:var(--measure-page);margin:0 auto}.resume-header{text-align:left;margin-bottom:2rem}.resume-header-row{flex-wrap:wrap;justify-content:space-between;align-items:baseline;column-gap:1rem;display:flex}.resume-actions{gap:.5rem;margin-bottom:1.25rem;display:flex}.resume-print-name{display:none}.resume-json-link,.resume-print-button{font:inherit;font-family:var(--font-display);font-size:var(--text-sm);font-weight:var(--font-weight-medium);color:var(--color-fg-bold);border:var(--rule) solid var(--color-control-border);cursor:pointer;min-height:2.25rem;transition:color var(--duration-fast) var(--ease-out),border-color var(--duration-fast) var(--ease-out);background-color:#0000;align-items:center;padding:0 .875rem;line-height:1;text-decoration:none;display:inline-flex}:root:not([data-theme-choice]) .resume-print-button{display:none}.resume-json-link:hover,.resume-print-button:hover{color:var(--color-fg-bold);border-color:var(--color-accent)}.resume-json-link:focus-visible,.resume-print-button:focus-visible{outline:var(--rule-strong) solid var(--color-focus-ring);outline-offset:2px}.resume-title{font-family:var(--font-display);font-size:var(--text-3xl);font-weight:var(--font-weight-medium);letter-spacing:var(--tracking-display);color:var(--color-fg-bold);margin-bottom:1.25rem}.resume-summary{max-width:var(--measure-read);font-size:var(--text-md);line-height:var(--leading-normal);color:var(--color-fg);flex-direction:column;gap:.75rem;margin:0;display:flex}.resume-summary p:first-child{color:var(--color-fg-bold)}.resume-summary p{text-wrap:pretty;margin:0}.resume-kind{max-width:var(--measure-read);margin:var(--spacing-5) 0 0;font-size:var(--text-base);line-height:var(--leading-normal);color:var(--color-fg-light)}.resume-nav{top:var(--header-height);z-index:var(--z-sticky);background:var(--color-bg-alt);border-block:var(--rule) solid var(--color-border);margin:var(--spacing-8) 0 var(--spacing-4);position:sticky}.resume-nav-row{scrollbar-width:none;scroll-behavior:smooth;margin:0 -.5rem;scroll-padding:0 2rem;display:flex;overflow-x:auto}.resume-nav-link{min-height:2.75rem;font-family:var(--font-display);font-size:var(--text-ui);font-weight:var(--font-weight-medium);color:var(--color-fg-light);white-space:nowrap;outline-offset:-4px;align-items:center;padding:0 .5rem;text-decoration:none;display:inline-flex;position:relative}.resume-nav-link.active,.resume-nav-link:focus-visible,.resume-nav-link:hover{color:var(--color-fg-bold)}.resume-nav-link.active:after{content:"";border-bottom:var(--rule-strong) solid var(--color-accent);position:absolute;inset:auto .5rem 0}@media (max-width:735px){.resume-nav{top:var(--header-height-mobile);box-shadow:-.5rem 0 var(--color-bg-alt)}.resume-nav-row{-webkit-mask-image:linear-gradient(90deg,#0000,#000 min(var(--scrolled,0px),2rem) calc(100% - 2rem),#0000);mask-image:linear-gradient(90deg,#0000,#000 min(var(--scrolled,0px),2rem) calc(100% - 2rem),#0000)}.resume-nav-row:after{content:"";flex:none;width:2rem}}.resume-content{--resume-gutter:11rem;--resume-gap:2.5rem;flex-direction:column;gap:4rem;padding-top:2.5rem;display:flex}.resume-section{scroll-margin-top:calc(var(--header-height) + var(--scroll-offset-resume))}.resume-print-contact{display:none}.post-page,.writing-page{max-width:var(--measure-page);margin:0;padding:0}.post-header{max-width:58rem;margin-bottom:var(--spacing-12);padding-bottom:var(--spacing-6);border-bottom:var(--rule) solid var(--color-border)}.post-title{margin:0 0 var(--spacing-5);font-family:var(--font-display);font-size:clamp(2rem,1.2rem + 3.2vw,var(--text-3xl));font-weight:var(--font-weight-medium);letter-spacing:var(--tracking-display);line-height:var(--leading-tight);color:var(--color-fg-bold);text-wrap:balance}.post-description{max-width:var(--measure-read);margin:0 0 var(--spacing-6);font-size:var(--text-lg);line-height:var(--leading-snug);color:var(--color-fg-light);text-wrap:pretty}.post-byline{gap:var(--spacing-1) var(--spacing-6);font-size:var(--text-sm);color:var(--color-fg-light);flex-wrap:wrap;margin:0;line-height:1.5;display:flex}.post-byline-author{color:var(--color-fg)}.post-date{font-variant-numeric:tabular-nums}.prose{font-family:var(--font-body);font-size:var(--text-md);line-height:var(--leading-normal);color:var(--color-fg)}.prose>*{max-width:var(--measure-read)}.prose h2{font-size:var(--text-xl);line-height:var(--leading-tight);margin:3rem 0 .75rem}.prose h2,.prose h3{font-family:var(--font-display);font-weight:var(--font-weight-medium);letter-spacing:var(--tracking-tight);color:var(--color-fg-bold)}.prose h3{font-size:var(--text-lg);line-height:var(--leading-snug);margin:2rem 0 .75rem}.prose h4{font-family:var(--font-display);font-size:var(--text-md);font-weight:var(--font-weight-medium);color:var(--color-fg-bold);margin:1.5rem 0 .5rem}.prose h2,.prose h3,.prose h4,.prose-anchor-alias{scroll-margin-top:calc(var(--header-height) + var(--spacing-6))}@media (max-width:735px){.prose h2,.prose h3,.prose h4,.prose-anchor-alias{scroll-margin-top:calc(var(--header-height-mobile) + var(--spacing-6))}}.prose-anchor-alias{width:0;height:0;position:absolute}.prose p{margin:1rem 0}.prose a,.prose li a,.prose p a{color:var(--color-fg-bold);text-decoration:underline;-webkit-text-decoration-color:var(--color-accent-underline);text-decoration-color:var(--color-accent-underline);text-decoration-thickness:var(--rule);text-underline-offset:.15em}.prose a:hover,.prose li a:hover,.prose p a:hover{color:var(--color-fg-bold);-webkit-text-decoration-color:var(--color-accent);text-decoration-color:var(--color-accent)}.prose strong{font-weight:var(--font-weight-semibold)}.prose ol,.prose ul{margin:1rem 0;padding-left:1.5rem}.prose li{margin:.5rem 0}.prose ul>li{list-style-type:disc}.prose ol>li{list-style-type:decimal}.prose li::marker{color:var(--color-fg-muted)}.prose blockquote{border-left:var(--rule-strong) solid var(--color-fg-bold);color:var(--color-fg);margin:1.5rem 0;padding-left:1.25rem}.prose blockquote p{font-size:var(--text-lg);line-height:var(--leading-snug)}.prose code{font-family:var(--font-mono);font-size:var(--text-sm);background:var(--color-bg);border:var(--rule) solid var(--color-border);padding:.15em .4em}.prose :not(pre)>code{overflow-wrap:anywhere}.prose-fence{margin:1.5rem 0;position:relative}.prose pre{background:var(--color-bg);border:var(--rule) solid var(--color-border);margin:0;padding:1rem;overflow-x:auto}.prose-fence-lang{background:linear-gradient(var(--color-bg-alt),var(--color-bg-alt)) 50% /100% calc(var(--rule) + 2px) no-repeat;max-width:calc(100% - 1.5rem);font-family:var(--font-mono);font-size:var(--text-xs);font-weight:var(--font-weight-medium);white-space:nowrap;text-overflow:ellipsis;color:var(--color-fg-light);pointer-events:none;padding:0 .4rem;line-height:1;position:absolute;top:0;right:.75rem;overflow:hidden;transform:translateY(-50%)}.prose pre code{font-size:var(--text-sm);background:0 0;border:none;margin:0;padding:0}.prose hr{border:none;border-top:var(--rule) solid var(--color-border);margin:2rem 0}.prose img{max-width:100%;height:auto;margin:1.5rem 0}.prose-figure{max-width:none;width:min(var(--figure-width,100%),var(--measure-read),100%);margin:2rem 0}.prose .prose-figure img{width:100%;margin:0;display:block}.prose .prose-figure>a{display:block}.prose-figcaption{max-width:var(--measure-read);font-size:var(--text-sm);line-height:var(--leading-snug);color:var(--color-fg-light);text-wrap:pretty;margin-top:.6rem}@media screen and (min-width:980px){.prose-figure{width:min(var(--figure-width,100%),100%)}}.speaking-page{max-width:var(--measure-page)}.speaking-opening{column-gap:var(--grid-gap);row-gap:var(--spacing-12);grid-template-columns:repeat(12,minmax(0,1fr));align-items:start;display:grid}.speaking-opening .register-year .register-row:last-child{border-bottom:0}.register--continued{border-top-color:var(--color-border);margin-bottom:var(--spacing-section)}.speaking-opening .page-header{grid-area:1/1/auto/span 7;margin-bottom:0}.speaking-opening .feature{grid-area:1/8/span 2/span 5}.speaking-opening .register-year{grid-area:2/1/auto/span 7}.speaking-opening .register-row{row-gap:var(--spacing-2);grid-template-columns:minmax(0,1fr) auto}.speaking-opening .register-date{grid-area:1/1}.speaking-opening .register-mark{grid-area:1/2}.speaking-opening .register-copy{grid-area:2/1/auto/-1}@media (max-width:735px){.speaking-opening{column-gap:var(--grid-gap-phone)}.register--continued{margin-bottom:var(--spacing-section-phone)}.speaking-opening .feature,.speaking-opening .page-header,.speaking-opening .register-year{grid-column:1/-1}.speaking-opening .feature{grid-row:2;width:75%}.speaking-opening .register-year{grid-row:3}}.speaking-page .register-year .section-title{font-variant-numeric:tabular-nums}.speaker-kit-lead{max-width:var(--measure-read);margin:0 0 var(--spacing-10);font-size:var(--text-md);line-height:var(--leading-normal);color:var(--color-fg)}.speaker-kit-grid{column-gap:var(--grid-gap);row-gap:var(--spacing-8);margin-bottom:var(--spacing-12);grid-template-columns:repeat(12,minmax(0,1fr));display:grid}.speaker-kit-topics{grid-column:1/span 7;min-width:0}.speaker-kit-headshot{grid-column:9/span 4;min-width:0}.speaker-kit-heading{margin:0 0 var(--spacing-4);font-size:var(--text-base);font-weight:var(--font-weight-medium);line-height:var(--leading-snug);color:var(--color-fg-bold)}.speaker-kit-list{max-width:var(--measure-read);border-top:var(--rule) solid var(--color-border);margin:0;padding:0;list-style:none}.speaker-kit-list li{padding:var(--spacing-3) 0;border-bottom:var(--rule) solid var(--color-border);font-size:var(--text-md);line-height:var(--leading-snug);color:var(--color-fg);margin:0}.speaker-kit-note{margin:var(--spacing-3) 0 0;font-size:var(--text-sm);color:var(--color-fg-light);line-height:1.45}.speaker-kit-bio{max-width:var(--measure-read);margin-bottom:var(--spacing-10)}.speaker-kit-bio-head{justify-content:space-between;align-items:baseline;gap:var(--spacing-4);padding-top:var(--spacing-4);border-top:var(--rule) solid var(--color-border);display:flex}.speaker-kit-bio p{margin:0 0 var(--spacing-4);font-size:var(--text-md);line-height:var(--leading-normal);color:var(--color-fg)}.speaker-kit-bio p:last-child{margin-bottom:0}.copy-button{min-height:2.25rem;font-size:var(--text-sm);padding:0 .875rem}.speaker-kit-actions{gap:var(--spacing-3);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}.speaker-kit-actions li{margin:0;padding:0}@media (max-width:1023px){.speaker-kit-topics{grid-column:1/span 7}.speaker-kit-headshot{grid-column:8/span 5}}@media (max-width:735px){.speaker-kit-grid{column-gap:var(--grid-gap-phone)}.speaker-kit-topics{grid-column:1/-1}.speaker-kit-headshot{grid-column:1/span 7}}.about-page{max-width:var(--measure-page)}.about-page .page-header{margin-bottom:var(--spacing-10)}.about-profile{column-gap:var(--grid-gap);row-gap:var(--spacing-8);grid-template-columns:repeat(12,minmax(0,1fr));align-items:start;display:grid}.about-portrait{grid-column:1/span 4}.about-bio{min-width:0;max-width:var(--measure-read);grid-column:6/span 7}.about-bio p{margin:0 0 var(--spacing-5);font-size:var(--text-md);line-height:var(--leading-normal);color:var(--color-fg)}.about-bio p:first-child{font-size:var(--text-lg);line-height:var(--leading-snug);letter-spacing:var(--tracking-tight);color:var(--color-fg-bold)}.about-bio p:last-child{margin-bottom:0}@media (max-width:1023px){.about-portrait{grid-column:1/span 5}.about-bio{grid-column:6/span 7}}@media (max-width:735px){.about-profile{column-gap:var(--grid-gap-phone)}.about-portrait{grid-column:1/span 8}.about-bio{grid-column:1/-1}}.fact-table{border-top:var(--rule) solid var(--color-border);max-width:56rem;margin:0}.fact-row{column-gap:var(--grid-gap);padding:var(--spacing-3) 0;border-bottom:var(--rule) solid var(--color-border);grid-template-columns:minmax(0,3fr) minmax(0,9fr);align-items:baseline;display:grid}.fact-row dt{color:var(--color-fg-light)}.fact-row dd,.fact-row dt{font-size:var(--text-base);line-height:var(--leading-normal);margin:0}.fact-row dd{color:var(--color-fg-bold);flex-direction:column;gap:.125rem;display:flex}.fact-detail{font-size:var(--text-sm);color:var(--color-fg-light)}.fact-lines{list-style:none}.fact-lines,.fact-lines li{margin:0;padding:0}@media (max-width:735px){.fact-row{grid-template-columns:minmax(0,1fr);row-gap:.125rem}.fact-row dt{font-size:var(--text-sm)}}.timeline{border-top:var(--rule) solid var(--color-border);max-width:56rem;margin:0;padding:0;list-style:none}.timeline-entry{column-gap:var(--grid-gap);padding:var(--spacing-3) 0;border-bottom:var(--rule) solid var(--color-border);grid-template-columns:minmax(0,2fr) minmax(0,10fr);align-items:baseline;display:grid}.timeline-year{font-size:var(--text-base);font-variant-numeric:tabular-nums;color:var(--color-fg-light)}.timeline-text,.timeline-year{line-height:var(--leading-normal)}.timeline-text{max-width:var(--measure-read);font-size:var(--text-base);color:var(--color-fg);text-wrap:pretty;margin:0}@media (max-width:735px){.timeline-entry{column-gap:var(--grid-gap-phone);grid-template-columns:3.5rem minmax(0,1fr)}}.about-words-note{max-width:var(--measure-read);margin:0 0 var(--spacing-8);font-size:var(--text-base);line-height:var(--leading-normal);color:var(--color-fg-light)}.about-words-body.prose{font-size:var(--text-md)}.about-words-body .prose-anchor-alias,.about-words-body h2{scroll-margin-top:calc(var(--header-height) + var(--spacing-6))}.about-words-body h2{font-size:var(--text-lg);margin-top:var(--spacing-10)}@media (min-width:736px){.about-words-body ul{column-count:2;column-gap:var(--grid-gap);max-width:48rem}.about-words-body li{break-inside:avoid}}.contact-page{max-width:var(--measure-page)}.page-main--contact{flex-direction:column;justify-content:center;display:flex}.contact-page .page-header{margin-bottom:var(--spacing-12)}.contact-controls{border-top:var(--rule) solid var(--color-fg-bold);max-width:56rem;list-style:none}.contact-controls,.contact-controls li{margin:0;padding:0}.contact-control{column-gap:var(--grid-gap);min-height:3.5rem;padding:var(--spacing-5) 0;border-bottom:var(--rule) solid var(--color-border);color:inherit;transition:background-color var(--duration-fast) var(--ease-out);grid-template-columns:minmax(0,3fr) minmax(0,9fr);align-items:baseline;text-decoration:none;display:grid}.contact-control:focus-visible,.contact-control:hover{background-color:var(--color-surface-subtle)}.contact-control:focus-visible{outline:var(--rule-strong) solid var(--color-focus-ring);outline-offset:-2px}.contact-control[aria-busy=true]{cursor:progress}.contact-control-label{font-weight:var(--font-weight-medium);color:var(--color-fg-bold)}.contact-control-label,.contact-control-value{font-size:var(--text-md);line-height:var(--leading-snug)}.contact-control-value{color:var(--color-fg);overflow-wrap:anywhere;text-decoration:underline;-webkit-text-decoration-color:var(--color-accent-underline);text-decoration-color:var(--color-accent-underline);text-decoration-thickness:var(--rule);text-underline-offset:.14em;transition:text-decoration-color var(--duration-fast) var(--ease-out)}.contact-control:focus-visible .contact-control-value,.contact-control:hover .contact-control-value{-webkit-text-decoration-color:var(--color-accent);text-decoration-color:var(--color-accent)}.contact-note{max-width:var(--measure-read);margin:var(--spacing-10) 0 0;font-size:var(--text-base);line-height:var(--leading-normal);color:var(--color-fg-light)}@media (max-width:735px){.contact-page .page-header{margin-bottom:var(--spacing-8)}.contact-control{padding:var(--spacing-4) 0;grid-template-columns:minmax(0,1fr);row-gap:.125rem}.contact-control-label,.contact-control-value{font-size:var(--text-base)}}.not-found-page{width:100%;min-height:calc(100dvh - var(--header-height-mobile));max-width:var(--measure-page);padding:var(--spacing-16) var(--gutter) var(--spacing-section-phone);flex:1;align-items:center;margin:0 auto;display:flex}@media screen and (min-width:736px){.not-found-page{min-height:calc(100dvh - var(--header-height));padding:var(--spacing-24) var(--gutter-desktop) var(--spacing-section)}}.not-found-content{max-width:40rem}.not-found-code{margin:0 0 var(--spacing-6);font-size:var(--text-display);font-weight:var(--font-weight-medium);font-variant-numeric:tabular-nums;letter-spacing:-.03em;color:var(--color-fg-bold);line-height:.95}.not-found-title{margin:0 0 var(--spacing-4);font-size:var(--text-xl)}.not-found-message{margin:0 0 var(--spacing-8);font-size:var(--text-md);line-height:var(--leading-normal);color:var(--color-fg)}.not-found-links{gap:var(--spacing-3) var(--spacing-6);font-size:var(--text-base);flex-wrap:wrap;list-style:none;display:flex}.not-found-links,.not-found-links li{margin:0;padding:0}@media (max-width:735px){.not-found-code{font-size:4rem}}[data-theme=dark]{--color-bg:#15171b;--color-bg-alt:#0e0f12;--color-fg:#e8eaee;--color-fg-bold:#f2f3f5;--color-fg-light:#9ea4ae;--color-overlay-darker:#0009;--color-accent:#f0564b;--color-accent-hover:#f6786f;--color-accent-fill:#e8eaee;--color-accent-fill-hover:#fff;--color-on-accent:#0e0f12;--color-accent-light:#c8102e29}@supports (color:color-mix(in lab,red,red)){[data-theme=dark]{--color-accent-light:color-mix(in srgb,var(--color-accent) 16%,transparent)}}[data-theme=dark]{--color-accent-underline:#c8102eb3}@supports (color:color-mix(in lab,red,red)){[data-theme=dark]{--color-accent-underline:color-mix(in srgb,var(--color-accent) 70%,transparent)}}[data-theme=dark]{--color-signal:#f0564b;--color-signal-mark:#f0564b;--color-control-border:#7e848e;--color-border:#e8eaee24;--color-border-bg:#e8eaee12;--color-border-alt:#e8eaee47;--color-surface-subtle:#e8eaee0a;--color-surface-hover:#e8eaee14;--color-fg-muted:#e8eaee8c;--color-image-edge:#ffffff1a}[data-theme=dark] code{background:var(--color-surface-hover);border-color:var(--color-border-bg)}@media (forced-colors:active){.nav-link:after,.resume-nav-link.active:after{background-color:linktext}.hamburger-ul li a.active span{text-underline-offset:.25em;text-decoration:underline}.button:not(.button-secondary){color:buttontext;background-color:buttonface;border-color:buttontext}.hamburger-button:focus-visible .hamburger-icon span,.hamburger-icon span{background-color:canvastext}.jobs-container--current .job-marker{background-color:canvastext;border-color:canvastext}.jobs-container:before,.jobs-container:last-child:before{background:canvastext}.chapter--current .chapter-year:not(.chapter-year--start){text-decoration:underline}.placeholder-lines{stroke:canvastext}.resume-nav,.site-header{background-color:canvas}}@media print{:root,[data-theme=dark],[data-theme=light]{color-scheme:light;--color-bg:#fff;--color-bg-alt:#fff;--color-fg:#000;--color-fg-bold:#000;--color-fg-light:#333;--color-accent:#000;--color-accent-hover:#000;--color-accent-fill:#000;--color-accent-fill-hover:#000;--color-on-accent:#fff;--color-signal:#000;--color-signal-mark:#000;--color-border:#00000047;--color-border-alt:#00000073;--color-border-bg:#0000002e;--color-surface-subtle:transparent;--color-surface-hover:transparent}@page{margin:16mm 14mm}html{background:#fff}body{color:#000;padding-top:0;font-size:10.5pt;line-height:1.45;background:#fff!important}.contact-band,.copy-button,.hamburger-container,.page-header-aside,.photo-reel-controls,.placeholder-label,.resume-actions,.resume-kind,.resume-nav,.resume-screen-title,.site-footer,.site-header,.skip-link,.slide-menu,.slide-menu-overlay,.theme-toggle{display:none!important}.placeholder-plate{background:0 0}.about-page,.page-main,.post-page,.resume-page,.speaking-page,.work-page,.writing-page{max-width:none;margin:0;padding:0}.page-container{min-height:0}.resume-print-contact{letter-spacing:.02em;color:#333;flex-wrap:wrap;gap:0 .75rem;margin-top:.5rem;font-size:8.5pt;font-style:normal;line-height:1.5;display:flex}.resume-print-contact a{color:inherit;text-decoration:none}.resume-print-contact>*{white-space:nowrap}.resume-print-name{display:inline}.page-title,.resume-title{font-size:22pt}.resume-summary{max-width:none;font-size:10pt}.resume-content{gap:1.5rem;padding-top:1rem}.chapter,.course-container,.degree-container,.fact-row,.jobs-container,.register-row,.skill-group,.timeline-entry{break-inside:avoid;page-break-inside:avoid}.jobs-container,.skill-group{--resume-gutter:7.5rem;--resume-gap:1rem}.jobs-container{break-inside:auto;page-break-inside:auto;padding:0 0 .9rem}.job-marker,.jobs-container:before{display:none}.about-bio p{font-size:11pt}.jobs-container--lead header h3{font-size:13pt}.jobs-container header h3{gap:.1rem;margin-bottom:.3rem}.degree-container .degree,.jobs-container--primary header h3{font-size:12pt}.jobs-container--early header h3{font-size:11pt}.degree-container .school,.job-position{font-size:9pt}.courses .course-number,.daterange,.degree-container .school time{font-size:8pt}.degree-container+.degree-container{margin-top:.6rem}.degree-container .points,.jobs-container .points{margin-top:.3rem}.degree-container .points li,.jobs-container .points li{--leading:1.35;margin-bottom:.15rem;font-size:9.5pt}.degree-container .points li,.jobs-container .points li,.jobs-container header,.summary{break-inside:avoid;page-break-inside:avoid}.jobs-container .points li:first-child,.jobs-container header,.summary{break-after:avoid;page-break-after:avoid}.jobs-container .points li:last-child{break-before:avoid;page-break-before:avoid}.jobs-container--early .summary,.jobs-container--lead .summary,.summary{margin-bottom:.25rem;font-size:10pt;line-height:1.35}.resume-section{break-before:auto}.resume-page .title h2,.section-title{break-after:avoid;page-break-after:avoid}.skill-tier-legend-tone{display:none}.skills .skill-tier-legend{margin:0 0 .5rem}.skill-groups{gap:.3rem}.skill-group-title{font-size:9pt}.skill-tags{gap:.25rem}.skill-tag{padding:.05em .5em;font-size:8pt}.skill-tag,.tech-tag{border-color:#00000059}.about-bio a[href^=http]:after,.degree-container .school a[href^=http]:after,.job-company[href^=http]:after,.prose a[href^=http]:after{content:" (" attr(href) ")";font-size:8pt;font-weight:var(--font-weight-normal);letter-spacing:var(--tracking-normal);color:var(--color-fg-light);word-break:break-all}.resume-page .courses .course-list{grid-template-columns:repeat(2,minmax(0,1fr));column-gap:1.5rem}.course-container a{grid-template-columns:3.5rem minmax(0,1fr);column-gap:.75rem;min-height:0;margin:0;padding:.05rem 0}.courses .course-name{font-size:9.5pt}a{color:#000}img{filter:grayscale()!important;max-width:100%!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-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-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}