@font-face{font-family:__display_72882b;src:url(/_next/static/media/d92497bb12e99967-s.p.ttf) format("truetype");font-display:swap;font-weight:800}@font-face{font-family:__display_Fallback_72882b;src:local("Arial");ascent-override:117.99%;descent-override:23.60%;line-gap-override:0.00%;size-adjust:84.76%}.__className_72882b{font-family:__display_72882b,__display_Fallback_72882b;font-weight:800}.__variable_72882b{--font-display:"__display_72882b","__display_Fallback_72882b"}@font-face{font-family:__GeistMono_c1e5c9;src:url(/_next/static/media/66f30814ff6d7cdf.p.woff2) format("woff2");font-display:swap;font-weight:100 900}.__className_c1e5c9{font-family:__GeistMono_c1e5c9,ui-monospace,SFMono-Regular,Roboto Mono,Menlo,Monaco,Liberation Mono,DejaVu Sans Mono,Courier New,monospace}.__variable_c1e5c9{--font-geist-mono:"__GeistMono_c1e5c9",ui-monospace,SFMono-Regular,Roboto Mono,Menlo,Monaco,Liberation Mono,DejaVu Sans Mono,Courier New,monospace}@font-face{font-family:__GeistSans_3a0388;src:url(/_next/static/media/e11418ac562b8ac1-s.p.woff2) format("woff2");font-display:swap;font-weight:100 900}@font-face{font-family:__GeistSans_Fallback_3a0388;src:local("Arial");ascent-override:85.83%;descent-override:20.52%;line-gap-override:9.33%;size-adjust:107.19%}.__className_3a0388{font-family:__GeistSans_3a0388,__GeistSans_Fallback_3a0388}.__variable_3a0388{--font-geist-sans:"__GeistSans_3a0388","__GeistSans_Fallback_3a0388"}

/*
! tailwindcss v3.4.3 | MIT License | https://tailwindcss.com
*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;font-family:var(--font-geist-sans);font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:var(--font-geist-mono);font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.invisible{visibility:hidden}.absolute{position:absolute}.relative{position:relative}.inset-0{inset:0}.inset-x-0{left:0;right:0}.-bottom-48{bottom:-12rem}.-right-44{right:-11rem}.bottom-0{bottom:0}.left-\[-40\%\]{left:-40%}.left-\[max\(-0\.5rem\2c calc\(50\%-18\.625rem\)\)\]{left:max(-.5rem,calc(50% - 18.625rem))}.left-\[max\(0px\2c calc\(50\%-18\.125rem\)\)\]{left:max(0px,calc(50% - 18.125rem))}.right-0{right:0}.right-4{right:1rem}.top-0{top:0}.top-14{top:3.5rem}.top-4{top:1rem}.isolate{isolation:isolate}.-z-10{z-index:-10}.z-50{z-index:50}.-m-2{margin:-.5rem}.-m-2\.5{margin:-.625rem}.mx-auto{margin-left:auto;margin-right:auto}.mb-10{margin-bottom:2.5rem}.mr-4{margin-right:1rem}.mt-4{margin-top:1rem}.mt-8{margin-top:2rem}.flex{display:flex}.inline-flex{display:inline-flex}.grid{display:grid}.hidden{display:none}.aspect-square{aspect-ratio:1/1}.h-11{height:2.75rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-\[0\.0625rem\]{height:.0625rem}.h-\[45px\]{height:45px}.h-\[80rem\]{height:80rem}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.max-h-6{max-height:1.5rem}.min-h-20{min-height:5rem}.w-1{width:.25rem}.w-1\.5{width:.375rem}.w-16{width:4rem}.w-24{width:6rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-\[180\%\]{width:180%}.w-\[55\.0625rem\]{width:55.0625rem}.w-auto{width:auto}.w-full{width:100%}.min-w-20{min-width:5rem}.max-w-7xl{max-width:80rem}.max-w-lg{max-width:32rem}.flex-1{flex:1 1 0%}.flex-auto{flex:1 1 auto}.flex-none{flex:none}.origin-top-right{transform-origin:top right}.rotate-\[30deg\]{--tw-rotate:30deg}.rotate-\[30deg\],.scale-75{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-75{--tw-scale-x:.75;--tw-scale-y:.75}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.cursor-pointer{cursor:pointer}.scroll-mt-16{scroll-margin-top:4rem}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.content-center{align-content:center}.items-center{align-items:center}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-items-center{justify-items:center}.gap-4{gap:1rem}.gap-x-1{column-gap:.25rem}.gap-x-2{column-gap:.5rem}.gap-x-3{column-gap:.75rem}.gap-y-3{row-gap:.75rem}.space-y-20>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(5rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.justify-self-start{justify-self:start}.justify-self-end{justify-self:end}.justify-self-center{justify-self:center}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-xl{border-radius:.75rem}.bg-gray-400{--tw-bg-opacity:1;background-color:rgb(156 163 175/var(--tw-bg-opacity))}.bg-gray-50{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity))}.bg-gray-950{--tw-bg-opacity:1;background-color:rgb(3 7 18/var(--tw-bg-opacity))}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.fill-\[white\]{fill:#fff}.fill-transparent{fill:transparent}.fill-white{fill:#fff}.stroke-sky-900\/10{stroke:rgba(12,74,110,.1)}.object-contain{object-fit:contain}.p-2{padding:.5rem}.p-2\.5{padding:.625rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-0{padding-top:0;padding-bottom:0}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-20{padding-top:5rem;padding-bottom:5rem}.pb-10{padding-bottom:2.5rem}.pb-2{padding-bottom:.5rem}.pr-1{padding-right:.25rem}.pt-10{padding-top:2.5rem}.text-center{text-align:center}.text-start{text-align:start}.text-end{text-align:end}.font-display{font-family:var(--font-geist-sans)}.font-mono{font-family:var(--font-geist-mono)}.text-2xs\/4{font-size:.6875rem;line-height:1rem}.text-\[0\.8125rem\]\/6{font-size:.8125rem;line-height:1.5rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-sm\/6{font-size:.875rem;line-height:1.5rem}.text-xl\/tight{font-size:1.25rem;line-height:1.25}.text-xs{font-size:.75rem;line-height:1rem}.font-light{font-weight:300}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.text-gray-300{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}.text-sky-300{--tw-text-opacity:1;color:rgb(125 211 252/var(--tw-text-opacity))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.text-white\/30{color:hsla(0,0%,100%,.3)}.opacity-0{opacity:0}.opacity-50{opacity:.5}.opacity-70{opacity:.7}.mix-blend-overlay{mix-blend-mode:overlay}.ring-1{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-inset{--tw-ring-inset:inset}.ring-gray-900\/10{--tw-ring-color:rgba(17,24,39,.1)}.blur{--tw-blur:blur(8px)}.blur,.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}:root{--paper:#f3f1e9;--ink:#262720;--muted:#616358;--line:#cccec1;--orange:#ba3c24;--ease-out:cubic-bezier(0.23,1,0.32,1)}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:32px}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--font-geist-sans),sans-serif;font-size:20px;line-height:1.5;-webkit-font-smoothing:antialiased}::selection{color:var(--paper);background:var(--orange)}a{text-decoration:none}a,button{color:inherit}button{font:inherit;border:0;background:none;cursor:pointer;padding:0}a,button{-webkit-tap-highlight-color:transparent;touch-action:manipulation}.button,button{transition:transform .16s var(--ease-out)}.button:active,button:active{transform:scale(.98)}:focus-visible{outline:2px solid var(--orange);outline-offset:6px}h1,h2,h3,p{margin:0}img{display:block;max-width:100%}.page-width{width:min(100% - 96px,1120px);margin-inline:auto}.arrow{width:22px;height:22px;flex-shrink:0}.skip-link{position:fixed;left:16px;top:-100px;z-index:100;padding:12px 20px;background:var(--ink);color:var(--paper)}.skip-link:focus{top:16px}.site-header{display:flex;align-items:center;justify-content:space-between;padding:30px 0;border-bottom:1px solid var(--line)}.monogram{position:relative;font-size:40px;font-weight:700;line-height:1;letter-spacing:-.1em;padding-right:17px}.monogram>span{position:absolute;top:-1px;right:0;font-size:25px;color:var(--orange)}.site-header nav{display:flex;align-items:center;gap:32px}.site-header nav a{display:flex;align-items:center;gap:8px;font-size:16px;padding:7px 0}.site-header nav a:last-child{color:var(--orange)}.site-header nav .arrow{width:18px;height:18px}.hero{padding:42px 0 50px}.hero h1{font-family:var(--font-display),Impact,sans-serif;font-size:clamp(65px,8.8vw,122px);line-height:.98;font-weight:800;text-transform:uppercase;letter-spacing:-.02em}.hero h1>span{color:var(--orange)}.hero-intro{display:flex;align-items:center;justify-content:space-between;gap:32px;margin-top:28px}.hero-intro p{font-size:clamp(21px,2.3vw,28px);line-height:1.4;letter-spacing:-.025em}.hero-intro strong{font-weight:550}.location{display:block;font-size:16px;margin-top:12px;color:var(--muted)}.portrait{width:112px;height:112px;border-radius:50%;object-fit:cover;flex-shrink:0}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:23px}.section-heading h2{font-size:26px;line-height:1.2;font-weight:550;letter-spacing:-.04em}.inline-link{display:inline-flex;align-items:center;gap:9px;min-height:40px;font-size:16px}.inline-link .arrow{height:18px;width:18px}.featured-projects{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:30px}.project-card{position:relative;min-width:0}.project-featured{display:flex;flex-direction:column}.project-featured .project-preview{flex-shrink:0}.project-featured .project-caption{display:flex;flex-direction:column;flex:1}.project-preview{width:100%;aspect-ratio:1.65;overflow:hidden;border-radius:5px;background:#dddcd3}.project-preview img{width:100%;height:100%;object-fit:contain;transition:transform .25s var(--ease-out)}.project-daily-dozen-trivia .project-preview{background:#180d23}.project-tapi-better-beer-menus .project-preview{background:#fff;border:1px solid var(--line)}.project-caption{padding-top:19px}.project-title{display:flex;align-items:center;justify-content:space-between;gap:14px;width:100%;text-align:left;font-size:28px;font-weight:550;line-height:1.2;letter-spacing:-.045em}.project-title:after{content:"";position:absolute;inset:0;z-index:1;border-radius:5px}.project-title:active{transform:none;color:var(--orange)}.project-title:focus-visible{outline:none}.project-title:focus-visible:after{outline:2px solid var(--orange);outline-offset:7px}.project-title .arrow{transition:transform .2s var(--ease-out)}.project-name{display:flex;align-items:center;gap:10px;min-width:0}.project-favicon{width:28px;height:28px;object-fit:contain;flex-shrink:0}.project-caption p{font-size:20px;color:var(--ink);line-height:1.55;margin-top:10px;max-width:44ch;text-wrap:pretty}.project-outcome{display:block;font-size:16px;font-weight:500;margin-top:13px;color:var(--orange)}.project-featured .project-outcome{margin-top:auto;padding-top:13px}.other-projects{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:30px;margin-top:34px;padding-top:25px;border-top:1px solid var(--line)}.project-compact{display:flex;align-items:flex-start;gap:18px}.project-compact .project-preview{width:124px;height:80px;flex-shrink:0}.project-pardon-my-balls .project-preview{background:#1b1b30}.project-pingo .project-preview{background:#1e293b}.project-compact .project-preview img{object-fit:cover;object-position:top}.project-compact .project-caption{padding:0;flex:1;min-width:0}.project-compact .project-title{font-size:23px}.project-compact .project-name{gap:8px}.project-compact .project-favicon{width:22px;height:22px}.project-compact .project-title .arrow{width:19px;height:19px}.project-compact p{font-size:18px;line-height:1.4;margin-top:7px}.experience-section{margin-top:60px}.experience-section .section-heading{margin-bottom:18px}.experience-row{border-top:1px solid var(--line)}.experience-row:last-child{border-bottom:1px solid var(--line)}.experience-row>summary{display:grid;grid-template-columns:1fr 1.65fr 145px 22px;gap:22px;align-items:center;padding:18px 0;cursor:pointer;list-style:none}.experience-row>summary::-webkit-details-marker{display:none}.job-company{gap:10px;font-size:25px;font-weight:550;letter-spacing:-.045em}.job-company,.job-logo{display:flex;align-items:center}.job-logo{justify-content:center;height:40px;overflow:hidden}.job-logo,.job-logo img{width:34px;flex-shrink:0}.job-logo img{height:auto;max-width:none}.job-logo-kaleido img{width:48px}.job-logo-cisco{width:82px}.job-logo-cisco img,.job-logo-sas{width:84px}.job-logo-sas img{width:90px}.job-logo-honeywell{width:134px}.job-logo-honeywell img{width:140px}.current-dot{width:7px;height:7px;border-radius:50%;background:#527249}.job-role{font-size:18px;color:var(--muted)}.job-period{font-size:16px;color:var(--muted);text-align:right;font-variant-numeric:tabular-nums}.expand-icon{position:relative;width:22px;height:22px}.expand-icon:after,.expand-icon:before{content:"";position:absolute;width:13px;height:1px;left:5px;top:10px;background:var(--ink)}.expand-icon:after{transform:rotate(90deg);transition:transform .18s var(--ease-out)}.experience-row[open] .expand-icon:after{transform:rotate(0deg)}.job-details{max-width:66ch;padding:1px 32px 26px 0;font-size:20px;line-height:1.6;color:var(--ink)}.job-dates{font-size:16px;color:var(--muted);margin-bottom:14px}.job-highlights{list-style:disc;padding-left:22px;margin:0}.job-highlights li+li{margin-top:12px}.job-highlights li::marker{color:var(--orange)}.job-highlights strong{font-weight:600}.education{display:flex;align-items:center;gap:20px;font-size:16px;line-height:1.6;color:var(--muted);margin-top:20px}.education-logo{width:124px;height:auto;flex-shrink:0}.education-school{font-size:18px;font-weight:550;color:var(--ink);margin-bottom:2px}.site-footer{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:28px 0;margin-top:26px;border-top:1px solid var(--line)}.social-links{display:flex;gap:25px}.social-links a{display:inline-flex;align-items:center;gap:9px;font-size:16px;padding-block:10px}.social-links .arrow{width:18px;height:18px}.footer-note{font-size:14px;color:var(--muted)}.project-dialog{position:fixed;inset:0;width:min(900px,calc(100% - 32px));max-height:calc(100dvh - 40px);padding:0;margin:auto;background:var(--paper);color:var(--ink);border:0;border-radius:7px;box-shadow:0 24px 80px #0000003d;overscroll-behavior:contain}.project-dialog::backdrop{background:#20221bbb;backdrop-filter:blur(4px)}.project-dialog[open]{animation:dialog-enter .22s var(--ease-out)}.project-dialog[open]::backdrop{animation:backdrop-enter .15s ease}.dialog-bar{position:sticky;top:0;z-index:3;justify-content:space-between;gap:15px;background:var(--paper);padding:13px 30px;border-bottom:1px solid var(--line);font-size:14px}.close-button,.dialog-bar{display:flex;align-items:center}.close-button{gap:14px;font-size:16px;min-height:44px}.close-button>span{font-size:28px;font-weight:300;line-height:1}.dialog-heading{padding:28px 35px}.dialog-heading h2{font-size:46px;font-weight:550;line-height:1.08;letter-spacing:-.055em}.dialog-heading .project-name{gap:14px}.dialog-heading .project-favicon{width:36px;height:36px}.dialog-heading p{font-size:20px;line-height:1.5;color:var(--muted);margin-top:14px}.dialog-outcome{display:block;font-size:18px;font-weight:500;color:var(--orange);margin-top:15px}.dialog-image{width:100%;height:auto}.dialog-details{padding:27px 35px 35px}.dialog-details>p{max-width:64ch;font-size:20px;line-height:1.6;color:var(--ink)}.dialog-details>p+p{margin-top:15px}.tags{display:flex;flex-wrap:wrap;gap:8px;margin:23px 0 0;padding:0;list-style:none}.tags li{border:1px solid var(--line);padding:5px 10px;font-size:14px}.button,.tags li{border-radius:4px}.button{display:inline-flex;align-items:center;justify-content:space-between;gap:25px;font-size:18px;color:var(--paper);background:var(--ink);padding:13px 18px;margin-top:25px}@keyframes dialog-enter{0%{opacity:0;transform:translateY(10px) scale(.985)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes backdrop-enter{0%{opacity:0}to{opacity:1}}@media (hover:hover) and (pointer:fine){.inline-link:hover,.site-header nav a:hover,.social-links a:hover{text-decoration:underline;text-underline-offset:5px}.project-card:hover .project-preview img{transform:scale(1.025)}.project-card:hover .project-title .arrow{transform:translate(2px,-2px)}.close-button:hover,.experience-row>summary:hover .job-company,.project-card:hover .project-title{color:var(--orange)}}@media (max-width:950px){.page-width{width:calc(100% - 64px)}.hero{padding-top:35px;padding-bottom:38px}.hero h1{font-size:9.5vw}.hero-intro p{font-size:24px}.portrait{width:94px;height:94px}.featured-projects,.other-projects{gap:24px}.project-title{font-size:26px}.project-compact{gap:14px;align-items:flex-start}.project-compact .project-preview{width:106px;height:74px}.project-compact .project-title{font-size:22px}.project-compact p{font-size:18px}.experience-row>summary{grid-template-columns:1fr 1.7fr 119px 20px;gap:16px}.job-company{font-size:23px}.job-role{font-size:17px}.job-period{font-size:15px}}@media (max-width:700px){body{font-size:18px}.page-width{width:calc(100% - 40px)}.site-header{padding:22px 0}.monogram{font-size:35px}.monogram>span{font-size:23px}.site-header nav{gap:19px}.site-header nav a{font-size:15px;gap:5px}.site-header nav .arrow{width:16px;height:16px}.hero{padding:31px 0 35px}.hero h1{font-size:13vw;max-width:100%;line-height:.95}.hero-intro{gap:16px;margin-top:21px;align-items:flex-start}.hero-intro p{font-size:20px;letter-spacing:-.03em;line-height:1.4}.portrait{width:76px;height:76px;margin-top:3px}.location{font-size:14px;line-height:1.4;margin-top:10px}.section-heading{gap:12px;margin-bottom:17px}.section-heading h2{font-size:24px}.inline-link{font-size:15px}.featured-projects{grid-template-columns:1fr;gap:31px}.project-preview{aspect-ratio:1.7}.project-caption{padding-top:14px}.project-title{font-size:27px}.project-title .arrow{width:23px;height:23px}.project-caption p{font-size:18px;line-height:1.45;margin-top:8px}.project-outcome{font-size:16px;margin-top:9px}.project-featured .project-outcome{padding-top:9px}.other-projects{grid-template-columns:1fr;gap:23px;margin-top:26px;padding-top:23px}.project-compact{align-items:flex-start;gap:15px}.project-compact .project-preview{width:96px;height:70px}.project-compact .project-title{font-size:22px}.project-compact p{font-size:18px}.experience-section{margin-top:39px}.experience-section .section-heading{margin-bottom:13px}.experience-row>summary{grid-template-columns:1fr auto 18px;gap:5px 12px;padding:16px 0}.job-company{grid-column:1;grid-row:1;font-size:24px}.job-role{grid-column:1/3;grid-row:2;font-size:16px}.job-period{grid-column:2;grid-row:1;font-size:14px}.expand-icon{grid-column:3;grid-row:1;width:18px}.expand-icon:after,.expand-icon:before{left:2px}.job-details{font-size:18px;line-height:1.55;padding:0 0 20px}.education{gap:14px}.education-logo{width:104px}.site-footer{flex-direction:column;align-items:flex-start;gap:10px;padding:22px 0;margin-top:24px}.social-links{gap:26px}.social-links a{font-size:16px}.footer-note{font-size:14px}.project-dialog{width:calc(100% - 16px);max-height:calc(100dvh - 20px)}.dialog-bar{padding:8px 18px;font-size:14px;gap:10px}.close-button{font-size:15px;gap:10px}.dialog-heading{padding:23px 21px}.dialog-heading h2{font-size:36px}.dialog-heading p{font-size:18px}.dialog-outcome{font-size:17px}.dialog-details{padding:21px 21px 27px}.dialog-details>p{font-size:18px;line-height:1.6}}@media (max-width:370px){.page-width{width:calc(100% - 32px)}.site-header nav{gap:13px}.site-header nav a{font-size:14px}.hero-intro{gap:12px}.hero-intro p{font-size:19px}.portrait{width:62px;height:62px}.project-compact .project-preview{width:84px;height:66px}.project-compact .project-title{font-size:21px}}html[data-input=keyboard]{scroll-behavior:auto}html[data-input=keyboard] *,html[data-input=keyboard] :after,html[data-input=keyboard] :before,html[data-input=keyboard] dialog::backdrop{animation:none!important;transition:none!important}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:after,:before,dialog::backdrop{animation:none!important;transition:none!important}}.first\:pl-0:first-child{padding-left:0}.hover\:bg-Cisco:hover{--tw-bg-opacity:1;background-color:rgb(0 188 235/var(--tw-bg-opacity))}.hover\:bg-Honeywell:hover{--tw-bg-opacity:1;background-color:rgb(222 30 52/var(--tw-bg-opacity))}.hover\:bg-Kaleido:hover{--tw-bg-opacity:1;background-color:rgb(70 45 224/var(--tw-bg-opacity))}.hover\:bg-NCState:hover{--tw-bg-opacity:1;background-color:rgb(255 0 0/var(--tw-bg-opacity))}.hover\:bg-SAS:hover{--tw-bg-opacity:1;background-color:rgb(7 102 209/var(--tw-bg-opacity))}.hover\:bg-Slack:hover{--tw-bg-opacity:1;background-color:rgb(74 21 75/var(--tw-bg-opacity))}.hover\:bg-white\/20:hover{background-color:hsla(0,0%,100%,.2)}.hover\:text-sky-300:hover{--tw-text-opacity:1;color:rgb(125 211 252/var(--tw-text-opacity))}.hover\:text-white:hover{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.hover\:transition-all:hover{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.group:hover .group-hover\:opacity-100{opacity:1}@media (min-width:640px){.sm\:gap-x-2{column-gap:.5rem}.sm\:text-3xl\/tight{font-size:1.875rem;line-height:1.25}.sm\:text-sm{font-size:.875rem;line-height:1.25rem}}@media (min-width:1024px){.lg\:pointer-events-none{pointer-events:none}.lg\:pointer-events-auto{pointer-events:auto}.lg\:fixed{position:fixed}.lg\:inset-0{inset:0}.lg\:-right-40{right:-10rem}.lg\:bottom-auto{bottom:auto}.lg\:left-0{left:0}.lg\:left-auto{left:auto}.lg\:left-full{left:100%}.lg\:right-\[calc\(max\(2rem\2c 50\%-38rem\)\+40rem\)\]{right:calc(max(2rem,50% - 38rem) + 40rem)}.lg\:top-0{top:0}.lg\:top-\[-40\%\]{top:-40%}.lg\:z-40{z-index:40}.lg\:mx-0{margin-left:0;margin-right:0}.lg\:-mr-3{margin-right:-.75rem}.lg\:-mr-3\.5{margin-right:-.875rem}.lg\:ml-1{margin-left:.25rem}.lg\:ml-96{margin-left:24rem}.lg\:mr-\[calc\(max\(2rem\2c 50\%-38rem\)\+40rem\)\]{margin-right:calc(max(2rem,50% - 38rem) + 40rem)}.lg\:block{display:block}.lg\:flex{display:flex}.lg\:hidden{display:none}.lg\:h-\[180\%\]{height:180%}.lg\:h-auto{height:auto}.lg\:w-0{width:0}.lg\:w-96{width:24rem}.lg\:w-\[80rem\]{width:80rem}.lg\:w-full{width:100%}.lg\:w-px{width:1px}.lg\:min-w-\[32rem\]{min-width:32rem}.lg\:max-w-none{max-width:none}.lg\:max-w-xl{max-width:36rem}.lg\:flex-auto{flex:1 1 auto}.lg\:flex-col{flex-direction:column}.lg\:justify-end{justify-content:flex-end}.lg\:overflow-visible{overflow:visible}.lg\:overflow-y-auto{overflow-y:auto}.lg\:overflow-x-hidden{overflow-x:hidden}.lg\:fill-gray-900{fill:#111827}.lg\:px-0{padding-left:0;padding-right:0}.lg\:px-8{padding-left:2rem;padding-right:2rem}.lg\:pl-32{padding-left:8rem}.lg\:pl-\[max\(4rem\2c calc\(50\%-38rem\)\)\]{padding-left:max(4rem,calc(50% - 38rem))}}@media (min-width:1280px){.xl\:pointer-events-auto{pointer-events:auto}.xl\:left-auto{left:auto}.xl\:right-1{right:.25rem}.xl\:mb-0{margin-bottom:0}.xl\:ml-0{margin-left:0}.xl\:mr-0{margin-right:0}.xl\:block{display:block}.xl\:hidden{display:none}.xl\:h-8{height:2rem}.xl\:bg-gray-300{--tw-bg-opacity:1;background-color:rgb(209 213 219/var(--tw-bg-opacity))}.xl\:stroke-white\/10{stroke:hsla(0,0%,100%,.1)}.xl\:text-2xs\/4{font-size:.6875rem;line-height:1rem}.xl\:font-medium{font-weight:500}.xl\:text-white\/50{color:hsla(0,0%,100%,.5)}}.dark\:bg-gray-900:where(.dark,.dark *){--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity))}.dark\:stroke-white\/10:where(.dark,.dark *){stroke:hsla(0,0%,100%,.1)}.dark\:text-white\/50:where(.dark,.dark *){color:hsla(0,0%,100%,.5)}.dark\:ring-white\/10:where(.dark,.dark *){--tw-ring-color:hsla(0,0%,100%,.1)}@media (min-width:1024px){.lg\:dark\:fill-white:where(.dark,.dark *){fill:#fff}}.\[\&\+\*\]\:mt-8+*{margin-top:2rem}