@font-face{font-family:Black Ops One;font-style:normal;font-weight:400;font-display:swap;src:url(../media/43c82e212d19847c-s.ab383750.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Black Ops One;font-style:normal;font-weight:400;font-display:swap;src:url(../media/a779771adc7177dc-s.a630bca8.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Black Ops One;font-style:normal;font-weight:400;font-display:swap;src:url(../media/2b8fa75f78012f0d-s.4ac914e7.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Black Ops One;font-style:normal;font-weight:400;font-display:swap;src:url(../media/61a50e7f6371107b-s.p.03d2ee56.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Black Ops One Fallback;src:local(Arial);ascent-override:74.14%;descent-override:27.3%;line-gap-override:0.0%;size-adjust:123.22%}.black_ops_one_dde5a4d8-module__O6KcdG__className{font-family:Black Ops One,Black Ops One Fallback;font-style:normal;font-weight:400}.black_ops_one_dde5a4d8-module__O6KcdG__variable{--font-heading-face:"Black Ops One","Black Ops One Fallback"}
:root{--bg:#fbfbfa;--bg-elevated:#fff;--border:#e4e4e1;--border-strong:#c8c8c4;--text:#16161a;--text-muted:#6b6b73;--text-faint:#9a9aa1;--inverted-bg:#16161a;--inverted-text:#fbfbfa;--nav-active:#000;--logo-tile:#fbfbfa;--logo-mark:#16161a;--font-body:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;--font-heading:var(--font-heading-face),Impact,"Arial Narrow Bold",sans-serif;--font-code:ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,monospace;--max-width:60rem;--gutter:clamp(1rem,.5rem + 2vw,1.5rem);--nav-height:3.5rem;--radius:6px;--ease:cubic-bezier(.22,.61,.36,1)}@media (prefers-color-scheme:dark){:root{--bg:#0d0d0f;--bg-elevated:#141417;--border:#262629;--border-strong:#3d3d42;--text:#f2f2f0;--text-muted:#9d9da6;--text-faint:#6c6c75;--inverted-bg:#f2f2f0;--inverted-text:#0d0d0f;--nav-active:#fff;--logo-tile:#0d0d0f;--logo-mark:#f2f2f0}}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;scroll-padding-top:calc(var(--nav-height) + 2.5rem);-webkit-text-size-adjust:100%;font-size:clamp(.9375rem,.9rem + .25vw,1.0625rem)}body{background-color:var(--bg);color:var(--text);font-family:var(--font-body);letter-spacing:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;font-size:1rem;line-height:1.6}::selection{background:var(--inverted-bg);color:var(--inverted-text)}a{color:inherit;text-decoration:none}ul{list-style:none}img{max-width:100%}:focus-visible{outline:2px solid var(--text);outline-offset:3px;border-radius:2px}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}:root{--reveal-duration:.5s;--reveal-distance:100px}.js [data-reveal]{opacity:0;transform:translateY(var(--reveal-distance));transition:opacity var(--reveal-duration)var(--ease),transform var(--reveal-duration)var(--ease);will-change:opacity,transform}.js [data-reveal].is-visible{opacity:1;will-change:auto;transform:none}.js #projects .card:nth-child(2),.js .skill-group:nth-child(2),.js .job:nth-child(2){transition-delay:80ms}.js #projects .card:nth-child(3),.js .skill-group:nth-child(3),.js .job:nth-child(3){transition-delay:.16s}.js #projects .card:nth-child(4),.js .skill-group:nth-child(4){transition-delay:.24s}@media (prefers-reduced-motion:reduce){.js [data-reveal]{opacity:1;transition:none;transform:none}}.sr-only{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.container{max-width:var(--max-width);padding-inline:var(--gutter);margin:0 auto}.section{border-top:1px solid var(--border);padding-block:3.5rem}.section:first-of-type{border-top:none}@media (min-width:768px){.section{padding-block:5rem}}.grid{gap:1.25rem;display:grid}@media (min-width:560px){.grid-3{grid-template-columns:repeat(2,minmax(0,1fr));gap:2rem}}@media (min-width:768px){.grid-2{grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:1fr;gap:1.5rem}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr));gap:2.5rem}}h1,h2,h3{font-family:var(--font-heading);text-transform:uppercase;letter-spacing:0;overflow-wrap:break-word;font-weight:400;line-height:1.25}h1{font-size:clamp(1.75rem,1rem + 4vw,3rem);font-weight:400;line-height:1.2}h2{font-size:clamp(1.25rem,.95rem + 1.6vw,1.875rem)}h3{font-size:1.0625rem}p{color:var(--text-muted)}p+p{margin-top:.75rem}.lead{max-width:60ch;font-size:1.0625rem}.eyebrow{font-family:var(--font-heading);letter-spacing:.04em;text-transform:uppercase;color:var(--text-faint);margin-bottom:.75rem;font-size:.875rem;display:block}.section-header{margin-bottom:1.75rem}.section-header p{max-width:55ch;margin-top:.75rem}.bullet-list{gap:.4375rem;margin-top:.75rem;display:grid}.bullet-list li{color:var(--text-muted);padding-left:1.125rem;font-size:.875rem;position:relative}.bullet-list li:before{content:"";background:var(--text-faint);border-radius:50%;width:3px;height:3px;position:absolute;top:.625rem;left:.125rem}.btn{border:1px solid var(--border-strong);border-radius:var(--radius);color:var(--text);cursor:pointer;white-space:nowrap;transition:background-color .18s var(--ease),color .18s var(--ease),border-color .18s var(--ease);background:0 0;align-items:center;gap:.4rem;padding:.625rem 1.125rem;font-size:.875rem;font-weight:500;line-height:1.4;display:inline-flex}.btn:hover{border-color:var(--text);background:color-mix(in srgb,var(--text)6%,transparent)}.btn-primary{background:var(--inverted-bg);color:var(--inverted-text);border-color:var(--inverted-bg)}.btn-primary:hover{background:color-mix(in srgb,var(--inverted-bg)85%,var(--bg));border-color:color-mix(in srgb,var(--inverted-bg)85%,var(--bg));color:var(--inverted-text)}.btn-sm{padding:.4375rem .875rem;font-size:.75rem}.btn:disabled{opacity:.35;cursor:not-allowed}.btn:disabled:hover{border-color:var(--border-strong);background:0 0}.link-group{flex-wrap:wrap;align-items:center;gap:.75rem;display:flex}.nav{z-index:100;pointer-events:none;padding-block:.75rem;position:sticky;top:0}.nav-bar{pointer-events:auto;border:1px solid var(--border);background:color-mix(in srgb,var(--bg-elevated)70%,transparent);-webkit-backdrop-filter:saturate(180%)blur(14px);transition:box-shadow .2s var(--ease),border-color .2s var(--ease);border-radius:1rem;padding-inline:clamp(.875rem,.5rem + 1.5vw,1.25rem);box-shadow:0 1px 2px #10101a0a,0 10px 28px -12px #10101a2e}@supports not ((-webkit-backdrop-filter:blur(1px)) or (backdrop-filter:blur(1px))){.nav-bar{background:var(--bg-elevated)}}@media (prefers-color-scheme:dark){.nav-bar{background:color-mix(in srgb,var(--bg-elevated)72%,transparent);box-shadow:0 1px 2px #0006,0 10px 28px -12px #000000b3}}.nav-inner{min-height:var(--nav-height);justify-content:space-between;align-items:center;gap:1rem;display:flex}.nav-brand,.nav-links a,.nav-mobile a{font-family:var(--font-heading);letter-spacing:0;font-weight:400}.nav-brand{flex-shrink:0;align-items:center;display:inline-flex}.logo{width:1.875rem;height:1.875rem;transition:opacity .18s var(--ease);border-radius:7px;display:block}.nav-brand:hover .logo{opacity:.75}.logo-tile{fill:var(--logo-tile)}.logo-mark{fill:var(--logo-mark)}.nav-links{gap:1.75rem;display:none}.nav-links a{color:var(--text-faint);transition:color .18s var(--ease);padding-block:.25rem;font-size:.9375rem}.nav-links a:hover{color:var(--text)}.nav-links a[aria-current=true]{color:var(--nav-active)}.nav-toggle{cursor:pointer;background:0 0;border:none;flex-direction:column;justify-content:center;gap:5px;width:2.25rem;height:2.25rem;padding:0 .4375rem;display:inline-flex}.nav-toggle span{background:var(--text);height:1.5px;transition:transform .22s var(--ease),opacity .18s var(--ease);border-radius:2px;display:block}.nav-toggle[aria-expanded=true] span:first-child{transform:translateY(6.5px)rotate(45deg)}.nav-toggle[aria-expanded=true] span:nth-child(2){opacity:0}.nav-toggle[aria-expanded=true] span:nth-child(3){transform:translateY(-6.5px)rotate(-45deg)}.nav-mobile{border-top:1px solid var(--border);gap:.25rem;padding-top:.75rem;padding-bottom:.75rem;display:grid}.nav-mobile[hidden]{display:none}.nav-mobile a{color:var(--text-faint);transition:color .18s var(--ease);padding:.625rem 0;font-size:1.0625rem}.nav-mobile a[aria-current=true]{color:var(--nav-active)}@media (min-width:768px){.nav-links{display:flex}.nav-toggle,.nav-mobile{display:none}}.hero{border-top:none;padding-block:2.25rem 3.5rem}@media (min-width:768px){.hero{padding-block:4.5rem 5rem}}.hero-wrapper{flex-direction:column-reverse;align-items:flex-start;gap:2.5rem;display:flex}.hero-text{flex:1;min-width:0}.hero-status{font-family:var(--font-code);letter-spacing:.1em;text-transform:uppercase;color:var(--text-faint);align-items:center;gap:.5rem;margin-bottom:1.25rem;font-size:.75rem;display:inline-flex}.hero-status:before{content:"";background:#22a06b;border-radius:50%;width:6px;height:6px}.hero-headline{color:var(--text-muted);min-height:2lh;margin-top:.75rem;font-size:1.125rem}@media (min-width:560px){.hero-headline{min-height:1lh}}.hero-role{animation:roleIn .45s var(--ease)both;display:inline-block}@keyframes roleIn{0%{opacity:0;transform:translateY(6px)}}.hero-summary{max-width:54ch;margin-top:1rem}.hero .link-group{margin-top:1.5rem}.hero-image{flex-shrink:0}@media (min-width:768px){.hero-wrapper{flex-direction:row;justify-content:space-between;align-items:center;gap:4rem}}.avatar{aspect-ratio:1;object-fit:cover;background-color:var(--border);width:clamp(7.5rem,20vw,12.5rem);height:auto;transition:transform .3s var(--ease);border-radius:clamp(.75rem,.4rem + 1.2vw,1.25rem);display:block}.image-container{cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:none;border-radius:clamp(.75rem,.4rem + 1.2vw,1.25rem);padding:0;display:inline-block;position:relative}.image-container:hover .avatar{transform:scale(1.03)}.speech-bubble{background-color:var(--inverted-bg);color:var(--inverted-text);z-index:10;white-space:nowrap;opacity:0;animation:popIn .28s var(--ease)forwards;border-radius:999px;padding:.375rem .75rem;font-size:.75rem;font-weight:600;position:absolute;top:-8px;right:-12px;transform:translateY(8px)scale(.92)}@keyframes popIn{to{opacity:1;transform:translateY(0)scale(1)}}.about-grid{gap:2rem;display:grid}@media (min-width:768px){.about-grid{grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);gap:3rem}}.about-aside h3{font-size:.75rem;font-family:var(--font-code);letter-spacing:.1em;text-transform:uppercase;color:var(--text-faint);margin-bottom:1rem;font-weight:500}.interest-list{gap:.5rem;display:grid}.interest-list li{color:var(--text-muted);font-size:.875rem}.card{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius);transition:border-color .2s var(--ease);flex-direction:column;padding:1.25rem;display:flex}.card:hover{border-color:var(--border-strong)}.card-role{font-family:var(--font-code);letter-spacing:.1em;text-transform:uppercase;color:var(--text-faint);margin-bottom:.625rem;font-size:.75rem}.card h3,.modal-title{font-family:var(--font-body);letter-spacing:-.02em;text-transform:none;font-weight:600}.card-description{margin-top:.625rem;font-size:.875rem}.card-highlights{margin-top:1rem}.card-footer{flex-wrap:wrap;gap:.75rem;margin-top:auto;padding-top:1.25rem;display:flex}.tags{flex-wrap:wrap;gap:.375rem;margin-top:1.25rem;display:flex}.tag{overflow-wrap:break-word;max-width:100%;font-family:var(--font-code);letter-spacing:.02em;border:1px solid var(--border);color:var(--text-muted);border-radius:4px;align-items:center;gap:.375rem;padding:.1875rem .5rem;font-size:.75rem;display:inline-flex}.tag-icon{width:.875em;height:.875em;fill:var(--icon-light,currentColor);flex-shrink:0}@media (prefers-color-scheme:dark){.tag-icon{fill:var(--icon-dark,currentColor)}}.skills-grid{columns:1;column-gap:1.75rem}@media (min-width:640px){.skills-grid{columns:2}}@media (min-width:1000px){.skills-grid{columns:3}}.skill-group{break-inside:avoid;margin-bottom:1.25rem}.skill-group .tag{white-space:nowrap;border-radius:5px;gap:.4375rem;width:fit-content;max-width:none;padding:.3125rem .625rem;font-size:.8125rem}.skill-group .tag .tag-icon{width:1em;height:1em}.skill-group .tags{gap:.375rem}.skill-group h3{font-family:var(--font-code);letter-spacing:.1em;text-transform:uppercase;color:var(--text-faint);margin-bottom:.625rem;font-size:.75rem;font-weight:500}.skill-group .tags{margin-top:0}.timeline{gap:1rem;display:grid}.job{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius);transition:border-color .2s var(--ease);gap:.75rem;padding:1.25rem;display:grid}.job:hover{border-color:var(--border-strong)}.job-dates{font-family:var(--font-code);letter-spacing:.02em;color:var(--text-faint);padding-top:.25rem;font-size:.75rem}.job h3{font-family:var(--font-body);letter-spacing:-.02em;text-transform:none;font-weight:600}.job-company{color:var(--text-muted);margin-top:.125rem;font-size:.875rem}@media (min-width:768px){.job{grid-template-columns:10rem minmax(0,1fr);gap:2rem;padding:1.5rem}}.contact-inner{max-width:40rem}.contact-copy{margin-top:.75rem;font-size:1rem}.modal-overlay{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);z-index:1000;animation:fadeIn .2s var(--ease);background-color:#08080adb;justify-content:center;align-items:center;padding:clamp(.75rem,2vw,2rem);display:flex;position:fixed;inset:0}@keyframes fadeIn{0%{opacity:0}}.modal-content{color:#f2f2f0;flex-direction:column;gap:.875rem;width:100%;max-width:68rem;display:flex;position:relative}.modal-header{justify-content:space-between;align-items:center;gap:1rem;display:flex}.modal-title{color:#f2f2f0;font-size:.9375rem;font-weight:500}.modal-close,.modal-nav{color:#f2f2f0;cursor:pointer;transition:background-color .18s var(--ease),border-color .18s var(--ease);background:0 0;border:1px solid #f2f2f040;border-radius:50%;justify-content:center;align-items:center;padding:0;display:inline-flex}.modal-close svg,.modal-nav svg{fill:none;stroke:currentColor;stroke-width:1.75px;stroke-linecap:round;stroke-linejoin:round;width:1rem;height:1rem}.modal-close:hover,.modal-nav:hover{background:#f2f2f024;border-color:#f2f2f099}.modal-close{flex-shrink:0;width:2rem;height:2rem}.modal-stage{width:100%;height:min(74vh,46rem);min-height:12rem;position:relative}.modal-image{object-fit:contain}.modal-nav{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#08080a8c;width:2.5rem;height:2.5rem;position:absolute;top:50%;transform:translateY(-50%)}.modal-nav-prev{left:.5rem}.modal-nav-next{right:.5rem}@media (min-width:900px){.modal-nav-prev{left:-3.25rem}.modal-nav-next{right:-3.25rem}}.modal-footer{justify-content:space-between;align-items:center;gap:1rem;display:flex}.modal-counter{font-family:var(--font-code);letter-spacing:.08em;color:#f2f2f099;font-size:.75rem}.modal-dots{gap:.375rem;display:flex}.modal-dot{cursor:pointer;width:1.5rem;height:2px;transition:background-color .18s var(--ease);background:#f2f2f040;border:none;border-radius:2px;padding:0}.modal-dot:hover{background:#f2f2f080}.modal-dot[aria-current=true]{background:#f2f2f0}.modal-overlay :focus-visible{outline-offset:2px;outline:2px solid #f2f2f0}.contact-actions{margin-top:1.5rem}.btn-lg{padding:.875rem 1.75rem;font-size:1rem}.footer{border-top:1px solid var(--border);color:var(--text-faint);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;padding-block:2rem;font-size:.75rem;display:flex}.footer a{color:var(--text-muted);transition:color .18s var(--ease)}.footer a:hover{color:var(--text)}.footer .link-group{gap:1.25rem}
