*{box-sizing:border-box;scrollbar-width:thin}html{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;scrollbar-color:#f2f1ec38 transparent}:root{--ease-out-quart:cubic-bezier(.25, 1, .5, 1);--ease-out-expo:cubic-bezier(.16, 1, .3, 1)}::-webkit-scrollbar{width:12.5px;height:12.5px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:#f2f1ec2e;border-radius:1249px}::-webkit-scrollbar-thumb:hover{background:#f8d4886b}body{-webkit-font-smoothing:antialiased;background:#08080a;margin:0;font-family:JetBrains Mono,ui-monospace,Menlo,monospace}a{color:#f8d488;text-decoration:none}a:hover{color:#ffb37a}::selection{color:#08080a;background:#f8d488}@keyframes blink{0%,45%{opacity:1}50%,to{opacity:0}}@keyframes bounce{0%,to{transform:translate(-50%)}50%{transform:translate(-50%,10px)}}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.chevron-gold,.text-gold{color:#f8d488;text-shadow:0 0 6px #f8d48899,0 0 18px #f8d4884d}.text-cream{color:#fff3d0}.bullet-marker{color:#f2f1ec4d;position:absolute;left:0}.tag-row{flex-wrap:wrap;gap:10px;display:flex}.tag{color:#f2f1ec8c;border:1px solid #ffffff1f;border-radius:6.5px;padding:5px 12.5px;font-size:14px}.tag--modal{color:#f2f1ec99;border:1px solid #ffffff1f;border-radius:6.5px;padding:6.5px 14px;font-size:14px}.panel{background:#0e0e11;border:1px solid #ffffff1a;border-radius:12.5px;overflow:hidden}.panel-titlebar{background:#131316;border-bottom:1px solid #ffffff14;align-items:center;gap:10px;padding:15px 20px;display:flex}.titlebar-dot{background:#ffffff26;border-radius:50%;width:12.5px;height:12.5px}.titlebar-label{color:#f2f1ec66;margin-left:12.5px;font-size:15px}.label-kicker-sm{letter-spacing:.14em;color:#f8d488;opacity:.75;text-shadow:0 0 6px #f8d48899,0 0 18px #f8d4884d;margin-bottom:6.5px;font-size:13px}.btn-primary{color:#08080a;letter-spacing:.03em;white-space:nowrap;background:#f8d488;border-radius:1249px;padding:15px 27.5px;font-size:16.5px;font-weight:700;box-shadow:0 0 14px #f8d4888c,0 0 32px #f8d4884d}.btn-secondary{-webkit-backdrop-filter:blur(7.5px);backdrop-filter:blur(7.5px);color:#f2f1ec;letter-spacing:.03em;white-space:nowrap;text-shadow:0 1px 6px #000c;background:#08080a8c;border:1px solid #f2f1ec66;border-radius:1249px;padding:15px 27.5px;font-size:16.5px}.section{max-width:1125px;margin:0 auto;padding:125px 30px}.section--about{padding-top:175px;padding-bottom:125px}.section--wide{max-width:1375px}.section--contact{text-align:center;padding:150px 30px 112.5px}.section-kicker{color:#f8d488;letter-spacing:.15em;text-shadow:0 0 6px #f8d48899,0 0 18px #f8d4884d;margin-bottom:17.5px;font-size:15px}.section-title{margin-top:0;margin-bottom:60px;font-size:35px;font-weight:700}.section-title--tight{margin-bottom:15px}.section-title-row{justify-content:space-between;align-items:center;gap:20px;margin-bottom:60px;display:flex}.section-title-row .section-title{margin-bottom:0}.edu-logo{object-fit:contain;flex:none;width:200px;height:auto}.content-wrap{z-index:10;background:#08080a;position:relative}.page-root{color:#f2f1ec;background:#08080a;min-height:100vh;position:relative;overflow-x:clip}.bg-canvas{z-index:0;pointer-events:none;display:block;position:fixed;inset:0}@media (prefers-reduced-motion:no-preference){.js-pin .pin-track{max-width:none;padding:0}.js-pin .pin-stage{flex-direction:column;justify-content:center;height:100svh;display:flex;position:sticky;top:0}.js-pin .pin-inner{width:100%;max-width:1125px;margin:0 auto;padding:0 30px}.js-pin .section--wide .pin-inner{max-width:1375px}.js-pin .pin-step[data-pin=future]{visibility:hidden}.js-pin #contact{flex-direction:column;justify-content:center;min-height:100svh;padding-top:0;padding-bottom:0;display:flex}}.ascii-name{letter-spacing:0;color:#f2f1ec;white-space:pre;-webkit-user-select:none;user-select:none;text-shadow:0 2px 18px #000c,0 0 5px #fff3d066,0 0 14px #fff3d02e;border-radius:5px;margin:0;font-family:JetBrains Mono,monospace;font-weight:800;line-height:1}.hero-stack{flex-direction:column;align-items:center;gap:27.5px;display:flex}.hero-badge{color:#f2f1ec;letter-spacing:.08em;white-space:nowrap;-webkit-backdrop-filter:blur(9px);backdrop-filter:blur(9px);background:#0a0a0de6;border:1px solid #ffffff12;border-radius:1249px;padding:11.5px 25px;font-size:19px}.hero-search-chevron{color:#f8d488;flex:none}.hero-search-placeholder{text-overflow:ellipsis;white-space:nowrap;color:#f2f1ec73;flex:1;min-width:0;overflow:hidden}.hero-cta-row{flex-wrap:nowrap;gap:17.5px;display:flex}.scroll-indicator{z-index:5;text-align:center;-webkit-backdrop-filter:blur(9px);backdrop-filter:blur(9px);background:#0a0a0de6;border:1px solid #ffffff12;border-radius:1249px;padding:12.5px 22.5px 10px;animation:2.2s ease-in-out infinite bounce;position:fixed;bottom:45px;left:50%;transform:translate(-50%)}.scroll-indicator-label{color:#f2f1ec8c;letter-spacing:.15em;margin-bottom:5px;font-size:14px}.scroll-indicator-arrow{color:#f2f1ec8c;font-size:20px;line-height:1}.net-svg{display:block}.nav-pill{z-index:80;-webkit-backdrop-filter:blur(17.5px);backdrop-filter:blur(17.5px);background:#101012bf;border:1px solid #ffffff1a;border-radius:1249px;align-items:center;gap:2.5px;padding:7.5px 7.5px 7.5px 20px;display:flex;position:fixed;top:27.5px;right:30px}.nav-pill-item{z-index:1;letter-spacing:.03em;transition:color .26s var(--ease-out-quart);border-radius:1249px;padding:10px 16.5px;font-size:15.5px;position:relative}.nav-indicator{pointer-events:none;width:0;height:0;transition:transform .34s var(--ease-out-expo), width .34s var(--ease-out-expo);background:#f8d488;border-radius:1249px;position:absolute;top:0;left:0}.nav-search-trigger{color:#f2f1eca6;background:0 0;border:1px solid #ffffff1f;border-radius:1249px;align-items:center;gap:7.5px;margin-left:5px;padding:7.5px 14px;font-size:15.5px;line-height:1;display:flex}.btn-nav-resume{color:#08080a;background:#f8d488;border-radius:1249px;margin-left:7.5px;padding:10px 20px;font-size:15px;font-weight:700}.nav-label-short{display:none}.about-body{padding:40px;font-size:19px;line-height:1.9}.about-para{color:#f2f1ecd9;margin:17.5px 0 0}.about-status{color:#f2f1ec80;margin:22.5px 0 0;font-size:16.5px}.blink-cursor{color:#f8d488;animation:1.1s step-end infinite blink}.timeline{border-left:1px solid #ffffff1f;flex-direction:column;gap:55px;padding-left:35px;display:flex;position:relative}.timeline-item{position:relative}.exp-stack{flex-direction:column;gap:80px;display:flex}.timeline-dot{border-radius:50%;width:11.5px;height:11.5px;position:absolute;top:5px;left:-42px;box-shadow:0 0 0 4px #08080a}.timeline-range{color:#f2f1ec73;letter-spacing:.06em;margin-bottom:7.5px;font-size:14.5px}.timeline-header{flex-direction:column;gap:2.5px;display:flex}.timeline-role-row{justify-content:space-between;align-items:center;gap:15px;min-width:0;display:flex}.timeline-logo{object-fit:contain;flex:none;width:120px;height:auto}.timeline-role{color:#f2f1ec;min-width:0;font-size:21.5px;font-weight:700}.timeline-org{margin-bottom:15px;font-size:17px}.timeline-bullets{flex-direction:column;gap:7.5px;margin-bottom:22px;display:flex}.timeline-bullet{color:#f2f1ecbf;padding-left:20px;font-size:17.5px;line-height:1.6;position:relative}.edu-readout{flex-direction:column;gap:12.5px;margin:0 0 35px;display:flex}.edu-row{align-items:baseline;gap:12.5px;margin:0;display:flex}.edu-label{letter-spacing:.04em;color:#f2f1ec80;white-space:nowrap;flex:auto;align-items:baseline;gap:12.5px;min-width:100px;font-size:15.5px;display:flex}.edu-label:after{content:"";border-bottom:1px dotted #ffffff2e;flex:auto;align-self:flex-end;height:0;margin-bottom:6.5px}.edu-value{color:#f2f1ec;text-align:right;flex:0 auto;margin:0;font-size:17.5px}.edu-course-block{margin-top:5px}.edu-course-title{margin-bottom:15px}.edu-course-grid{grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:10px;display:grid}.edu-course-chip{color:#f2f1ecbf;text-align:center;background:#0e0e11;border:1px solid #ffffff1f;border-radius:7.5px;padding:10px 15px;font-size:15px}.project-grid{grid-template-columns:repeat(auto-fit,minmax(375px,1fr));gap:27.5px;display:grid}.proj-rail{display:contents}.proj-card{cursor:pointer;transition:border-color .16s,transform .16s}.proj-card:hover{border-color:#f8d48873;transform:translateY(-2px)}.proj-card:focus-visible{outline-offset:4px;outline:2px solid #f8d488}.proj-hero-img{object-fit:cover;width:100%;height:100%;min-height:262.5px;display:block}.proj-hero-body{flex-direction:column;flex:1;gap:17.5px;padding:35px;display:flex}.proj-title-row{align-items:center;gap:11.5px;display:flex}.proj-dot{border-radius:50%;flex:none;width:10px;height:10px}.proj-dot-sm{border-radius:50%;width:10px;height:10px}.proj-name{color:#f2f1ec;font-size:21.5px;font-weight:700}.proj-year{color:#f2f1ec59;margin-left:auto;font-size:14px}.proj-desc{color:#f2f1ecbf;font-size:17.5px;line-height:1.7}.proj-open-link{margin-top:auto;font-size:15.5px;font-weight:600}.proj-open-link-sm{font-size:15.5px;font-weight:600}.proj-grid-card{flex-direction:column;display:flex}.proj-card-titlebar{background:#131316;border-bottom:1px solid #ffffff14;align-items:center;gap:10px;padding:14px 17.5px;display:flex}.proj-card-title{color:#f2f1ec80;font-size:15px}.proj-card-img{aspect-ratio:16/9;object-fit:cover;border-bottom:1px solid #ffffff14;width:100%;display:block}.proj-card-body{flex-direction:column;flex:1;gap:20px;padding:27.5px;display:flex}.proj-card-desc{color:#f2f1ecbf;flex:1;font-size:17.5px;line-height:1.6}.skills-blurb{color:#f2f1ec80;max-width:775px;margin-bottom:42.5px;font-size:17px;line-height:1.75}.skills-groups{flex-direction:column;gap:42.5px;display:flex}.skills-group-title{letter-spacing:.18em;color:#f8d488;opacity:.8;text-shadow:0 0 6px #f8d48899,0 0 18px #f8d4884d;margin-bottom:17.5px;font-size:14px}.skill-chip{color:#f2f1ecbf;border:1px solid #ffffff1f;border-radius:7.5px;padding:7.5px 15px;font-size:15px}.contact-title{margin-top:0;margin-bottom:20px;font-size:40px;font-weight:800}.contact-blurb{color:#f2f1ec8c;margin-bottom:45px;font-size:17.5px}.contact-links{flex-wrap:wrap;justify-content:center;gap:17.5px;margin-bottom:70px;display:flex}.contact-email-btn{color:#08080a;background:#f8d488;border-radius:1249px;padding:16.5px 30px;font-size:16.5px;font-weight:700}.contact-link-btn{color:#f2f1ec;border:1px solid #f2f1ec40;border-radius:1249px;padding:16.5px 30px;font-size:16.5px}.contact-footer{color:#f2f1ec4d;border-top:1px solid #ffffff14;padding-top:30px;font-size:14.5px}.search-trigger{cursor:pointer;text-align:left;font-family:inherit;transition:border-color .16s,background .16s}.search-trigger:hover{border-color:#f8d48873}.search-trigger:focus-visible{outline-offset:4px;outline:2px solid #f8d488}.search-kbd{color:#f2f1ec73;letter-spacing:.04em;border:1px solid #ffffff24;border-radius:6.5px;flex:none;padding:2.5px 7.5px;font-size:13px}.search-trigger-hero{width:86vw;max-width:700px}.search-backdrop{z-index:190;-webkit-backdrop-filter:blur(7.5px);backdrop-filter:blur(7.5px);background:#060608c7;justify-content:center;align-items:flex-start;padding:14vh 25px 25px;display:flex;position:fixed;inset:0}.search-panel{background:#0e0e11;border:1px solid #ffffff24;border-radius:15px;flex-direction:column;width:100%;max-width:800px;max-height:70vh;display:flex;overflow:hidden;box-shadow:0 24px 80px #0009}.search-header{background:#131316;border-bottom:1px solid #ffffff14;flex:none;align-items:center;gap:12.5px;padding:17.5px 22.5px;display:flex}.search-input{color:#f2f1ec;background:0 0;border:0;outline:none;flex:1;min-width:0;padding:0;font-family:inherit;font-size:19px}.search-input::placeholder{color:#f2f1ec52}.search-mode-chip{transition:background .22s linear,border-color .22s linear,color .22s linear}.search-listbox{flex:1;min-height:0;overflow-y:auto}.search-row{cursor:pointer;border-bottom:1px solid #ffffff0d;border-left:2px solid #0000;padding:16.5px 22.5px}.search-row:hover,.search-row[aria-selected=true]{background:#f8d48812;border-left-color:#f8d488}.search-result-title{color:#f2f1ec;margin-bottom:5px;font-size:17.5px;font-weight:700}.search-result-snippet{color:#f2f1ec99;font-size:15.5px;line-height:1.6}.search-score-track{background:#ffffff0f;border-radius:2.5px;height:2.5px;margin-top:11.5px}.search-score-fill{opacity:.55;background:#f8d488;border-radius:2.5px;height:100%}.search-chip{cursor:pointer;text-align:left;background:0 0;font-family:inherit}.search-chip:hover{color:#f2f1ec;border-color:#f8d48873}.search-empty{flex:none;padding:32.5px 22.5px}.search-empty-msg{color:#f2f1ec99;margin-bottom:20px;font-size:16.5px}.search-suggestions{flex:none;padding:27.5px 22.5px}.search-suggestions-label{letter-spacing:.14em;color:#f8d488;opacity:.75;margin-bottom:17.5px;font-size:13px}.search-suggestions-list{flex-direction:column;align-items:flex-start;gap:10px;display:flex}.suggestion-chip{color:#f2f1ecb3;border:1px solid #ffffff1f;border-radius:1249px;padding:9px 16.5px;font-size:15.5px}.search-footer{color:#f2f1ec4d;letter-spacing:.04em;background:#0a0a0c;border-top:1px solid #ffffff12;flex:none;padding:11.5px 22.5px;font-size:13px}@keyframes searchPop{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}.search-pop{animation:.14s ease-out searchPop}@keyframes flashTarget{0%{box-shadow:inset 0 0 0 2000px #f8d4881a}to{box-shadow:inset 0 0 0 2000px #f8d48800}}.flash-target{border-radius:15px;animation:1.3s ease-out flashTarget}.modal-backdrop{z-index:200;-webkit-backdrop-filter:blur(7.5px);backdrop-filter:blur(7.5px);background:#060608d1;justify-content:center;align-items:center;padding:30px;display:flex;position:fixed;inset:0}.modal-dialog{background:#0e0e11;border:1px solid #ffffff24;border-radius:15px;flex-direction:column;width:100%;max-width:950px;max-height:86vh;display:flex;overflow:hidden;box-shadow:0 24px 80px #0009}.modal-header{background:#131316;border-bottom:1px solid #ffffff14;flex:none;align-items:center;gap:12.5px;padding:17.5px 22.5px;display:flex}.modal-dot{border-radius:50%;flex:none;width:11.5px;height:11.5px}.modal-title{color:#f2f1ec;font-size:17.5px;font-weight:700}.modal-year{color:#f2f1ec59;font-size:14px}.modal-close{cursor:pointer;color:#f2f1ec80;background:0 0;border:0;margin-left:auto;padding:5px 10px;font-family:inherit;font-size:27.5px;line-height:1}.modal-close:hover{color:#f8d488}.modal-scroll{flex:auto;min-height:0;overflow-y:auto}.modal-img{border-bottom:1px solid #ffffff14;width:100%;display:block}.modal-body{padding:32.5px}.modal-card-desc{color:#f2f1ec;margin:0 0 17.5px;font-size:19.5px;font-weight:600;line-height:1.6}.modal-desc{color:#f2f1ecd9;margin:0;font-size:18px;line-height:1.8}.modal-section-label{letter-spacing:.16em;color:#f8d488;opacity:.8;text-shadow:0 0 6px #f8d48899,0 0 18px #f8d4884d;margin:32.5px 0 15px;font-size:14px}.modal-highlights{flex-direction:column;gap:10px;display:flex}.modal-highlight{color:#f2f1ecbf;padding-left:20px;font-size:17px;line-height:1.65;position:relative}.modal-tags{flex-wrap:wrap;gap:9px;margin-top:32.5px;display:flex}.modal-cta{color:#08080a;background:#f8d488;border-radius:1249px;margin-top:32.5px;padding:14px 25px;font-size:16.5px;font-weight:700;display:inline-block;box-shadow:0 0 14px #f8d4888c,0 0 32px #f8d4884d}@media (width<=959.98px){.nav-pill{padding:6px 8px max(6px, env(safe-area-inset-bottom));background:#101012eb;border:0;border-top:1px solid #ffffff1a;border-radius:0;justify-content:space-between;gap:0;inset:auto 0 0}.nav-pill-item{text-align:center;letter-spacing:0;flex:1 1 0;padding:9px 4px;font-size:11px}.nav-label-full{display:none}.nav-label-short{display:inline}.nav-search-trigger{flex:none;margin-left:4px;padding:9px 11px}.search-kbd,.search-nav-label,.btn-nav-resume,.scroll-indicator{display:none}.content-wrap{padding-bottom:calc(56px + env(safe-area-inset-bottom))}@media (width>=601px){.nav-label-full{display:inline}.nav-label-short{display:none}.nav-pill-item{padding:10px 6px;font-size:13px}.search-nav-label{display:inline}}.project-grid{grid-template-columns:1fr;gap:20px}.edu-course-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,160px),1fr))}.hero-cta-row{flex-wrap:wrap;justify-content:center;gap:12px}.hero-badge{white-space:normal;text-align:center;padding:9px 16px;font-size:12.5px}.section{padding:70px 20px}.section--about{padding-top:100px;padding-bottom:70px}.section--contact{padding:80px 20px 60px}.section-kicker{margin-bottom:15px;font-size:12px}.section-title{margin-bottom:34px;font-size:23.5px}.section-title--tight{margin-bottom:13px}.section-title-row{margin-bottom:34px}.contact-title{font-size:26.5px}.contact-blurb{margin-bottom:38px;font-size:13.5px}.contact-links{margin-bottom:60px}.contact-footer{padding-top:26px;font-size:11.5px}.about-body{padding:22px;font-size:14.5px}.about-para{margin-top:15px}.about-status{margin-top:19px;font-size:12.5px}.timeline{gap:38px;padding-left:22px}.exp-stack{gap:60px}.timeline-dot{left:-28px}.timeline-range{font-size:11.5px}.timeline-role{font-size:16.5px}.timeline-org{margin-bottom:13px;font-size:13.5px}.timeline-bullets{gap:6.5px;margin-bottom:18px}.timeline-bullet{padding-left:17px;font-size:13.5px}.timeline-logo{width:80px}.edu-logo{width:130px}.proj-name{font-size:16.5px}.proj-desc,.proj-card-desc{font-size:13.5px}.proj-hero-body{gap:15px;padding:20px}.proj-card-body{gap:17px;padding:18px}.proj-hero-img{min-height:180px}.btn-primary,.btn-secondary{padding:12px 20px;font-size:13px}.contact-email-btn,.contact-link-btn{padding:13px 22px;font-size:13px}.skills-groups{gap:28px}.skills-blurb{margin-bottom:36px;font-size:13.5px}.skills-group-title{margin-bottom:15px;font-size:11px}.tag{padding:4px 10.5px;font-size:11.5px}.tag--modal{padding:5.5px 12px;font-size:11.5px}.skill-chip{padding:6.5px 12.5px;font-size:11.5px}.edu-course-chip{padding:8.5px 12.5px;font-size:11.5px}.modal-backdrop{padding:14px}.search-backdrop{padding:6vh 14px 14px}.modal-body{padding:20px}.modal-desc{font-size:14.5px}.modal-card-desc{font-size:15.5px}.modal-section-label{margin:28px 0 13px;font-size:11px}.modal-highlight{font-size:13px}.modal-tags{margin-top:28px}.modal-cta{margin-top:28px;padding:12px 21px;font-size:13px}.search-input{font-size:16.5px}.search-result-title{font-size:14.5px}.search-row{padding:14px 16px}.search-panel{max-height:74vh}.modal-dialog{max-height:88vh}.edu-label{font-size:12px}.edu-value{font-size:13.5px}}@media (prefers-reduced-motion:no-preference){@keyframes aboutBarIn{0%{opacity:0;transform:scale(.98)}to{opacity:1;transform:scale(1)}}@keyframes aboutBodyIn{0%{clip-path:inset(0 0 100%)}to{clip-path:inset(0 0 0%)}}.js-pin .pin-step[data-pin=active].about-step-titlebar{animation:aboutBarIn .24s var(--ease-out-quart) both}.js-pin .pin-step[data-pin=active].about-step-body{animation:aboutBodyIn .42s var(--ease-out-expo) .14s both}.js-pin .about-status-wrap{display:inline-block;position:relative}.js-pin .about-status-type{white-space:pre;display:inline-block}.js-pin .about-status-cursor{transform:translateX(calc(var(--about-status-len) * 1ch));position:absolute;top:0;left:0}@keyframes aboutType{0%{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0)}}@keyframes aboutCaret{0%{transform:translate(0)}to{transform:translateX(calc(var(--about-status-len) * 1ch))}}.js-pin.fonts-ready .pin-step[data-pin=active] .about-status-type{animation:aboutType 1.02s steps(var(--about-status-len), end) .56s both}.js-pin.fonts-ready .pin-step[data-pin=active] .about-status-cursor{animation:aboutCaret 1.02s steps(var(--about-status-len), end) .56s both, blink 1.1s step-end infinite}.js-pin .exp-timeline{--exp-node:11.5px;--exp-gap:45px;align-items:stretch;gap:var(--exp-gap);border-left:none;flex-direction:row;height:400px;padding-left:0;display:flex}.js-pin .exp-rail{width:var(--exp-node);flex-direction:column;flex:none;justify-content:space-between;align-items:center;padding:7.5px 0;display:flex;position:relative}.js-pin .exp-rail:before{content:"";background:#ffffff1f;width:1.5px;position:absolute;top:0;bottom:0;left:50%;transform:translate(-50%)}.js-pin .exp-rail-dot{z-index:1;width:var(--exp-node);height:var(--exp-node);transition:background-color .32s var(--ease-out-quart), box-shadow .32s var(--ease-out-quart), transform .32s var(--ease-out-quart);background:#ffffff29;border-radius:50%;position:relative;box-shadow:0 0 0 4px #08080a}.js-pin .exp-rail-dot[data-pin=past]{background:var(--dot-color);opacity:.4}.js-pin .exp-rail-dot[data-pin=active]{background:var(--dot-color);box-shadow:0 0 0 4px #08080a, 0 0 0 5px #f8d4882e, 0 0 14px 1px var(--dot-color);transform:scale(1.4)}.js-pin .exp-rail-logos{margin-right:calc(15px - var(--exp-gap));flex-direction:column;flex:none;justify-content:space-between;align-items:center;padding:7.5px 0;display:flex;position:relative}.js-pin .exp-rail-logo{width:25px;height:var(--exp-node);opacity:.4;transition:opacity .32s var(--ease-out-quart);flex:none;justify-content:center;align-items:center;display:flex}.js-pin .exp-rail-logo[data-pin=active]{opacity:1}.js-pin .exp-rail-logo-img{object-fit:contain;flex:none;width:25px;height:25px;display:block}.js-pin .exp-stack{flex:1;min-width:0;position:relative}.js-pin .exp-timeline .exp-step{opacity:0;transition:opacity .38s var(--ease-out-quart), transform .38s var(--ease-out-quart), visibility 0s linear .38s;flex-direction:column;justify-content:center;display:flex;position:absolute;inset:0}.js-pin .exp-timeline .exp-step .timeline-dot{display:none}.js-pin .exp-timeline .exp-step[data-pin=active]{opacity:1;visibility:visible;transition-delay:0s;transform:translateY(0)}.js-pin .exp-timeline .exp-step[data-pin=past]{opacity:0;visibility:hidden;transform:translateY(-16px)}.js-pin .exp-timeline .exp-step[data-pin=future]{opacity:0;transform:translateY(16px)}@keyframes eduRowIn{0%{opacity:0;transform:translate(-10px)}to{opacity:1;transform:none}}@keyframes eduTitleIn{0%{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0)}}@keyframes eduChipIn{0%{opacity:0;transform:scale(.94)}to{opacity:1;transform:scale(1)}}.js-pin #education .pin-step[data-pin=active] .edu-row{animation:eduRowIn .28s var(--ease-out-quart) both;animation-delay:calc(var(--i,0) * 60ms)}.js-pin #education .pin-step[data-pin=active] .edu-course-title{animation:eduTitleIn .24s var(--ease-out-expo) both;animation-delay:.56s}.js-pin #education .pin-step[data-pin=active] .edu-course-chip{animation:eduChipIn .22s var(--ease-out-quart) both;animation-delay:calc(.64s + (var(--i,0) * 14ms))}.js-pin #projects .pin-inner{max-width:none;padding:0}.js-pin #projects .section-kicker,.js-pin #projects .section-title{width:100%;max-width:1375px;margin-left:auto;margin-right:auto;padding:0 30px}.js-pin #projects .proj-pin-progress{width:100%;max-width:1375px;margin:30px auto 0;padding:0 30px}.js-pin #projects .proj-rail-viewport:before,.js-pin #projects .proj-rail-viewport:after{content:"";z-index:1;pointer-events:none;position:absolute;top:0;bottom:0}.js-pin #projects .proj-rail-viewport:before{width:var(--rail-gutter,9%);background:linear-gradient(90deg,#08080a 0%,#0000 100%);left:0}.js-pin #projects .proj-rail-viewport:after{background:linear-gradient(270deg,#08080a 0%,#0000 100%);width:9%;right:0}.js-pin #projects .proj-rail-viewport{position:relative;overflow:visible}.js-pin .proj-rail{transform:translateX(var(--rail-x,0px));will-change:transform;align-items:stretch;gap:25px;display:flex;position:relative}.js-pin #projects .proj-card{flex:none;width:475px;height:525px}.js-pin #projects .proj-card--featured{width:825px}.js-pin #projects .proj-card{transition:opacity .32s var(--ease-out-quart), transform .32s var(--ease-out-quart)}.js-pin #projects .proj-card[data-rail=off]{opacity:.38;transform:scale(.97)}.js-pin #projects .proj-card[data-rail=focus]{opacity:1;transform:none}.js-pin #projects .proj-card-img{aspect-ratio:auto;flex:none;height:225px}.js-pin #projects .proj-card-body{flex:1;min-height:0;overflow:hidden}.js-pin #projects .proj-hero-body{min-height:0;overflow:hidden}.js-pin .proj-pin-noimage-fill{opacity:.9;background:#08080a;border-top:1px dashed;border-bottom:1px solid #ffffff14;justify-content:center;align-items:center;display:flex}.proj-pin-noimage-glyph{letter-spacing:.02em;opacity:.55;font-size:42.5px;font-weight:700}.js-pin .proj-pin-progress{align-items:center;gap:17.5px;margin-top:30px;display:flex}.js-pin .proj-pin-dots{gap:10px;display:flex}.js-pin .proj-pin-dot{opacity:.28;width:7.5px;height:7.5px;transition:opacity .24s var(--ease-out-quart);border-radius:50%}.js-pin .proj-pin-dot.is-active{opacity:1}.js-pin .proj-pin-counter{letter-spacing:.1em;color:#f2f1ec66;font-size:14px}@keyframes skillTitleIn{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}@keyframes skillChipIn{0%{opacity:0;color:#fff3d0;background:#f8d48833;border-color:#f8d488e6}35%{opacity:1;color:#fff3d0;background:#f8d48833;border-color:#f8d488e6}to{opacity:1;color:#f2f1ecbf;background:0 0;border-color:#ffffff1f}}.js-pin #skills .pin-step[data-pin=active] .skills-group-title{animation:skillTitleIn .3s var(--ease-out-quart) both;animation-delay:calc(var(--g,0) * .16s)}.js-pin #skills .pin-step[data-pin=active] .skill-chip{animation:skillChipIn .42s var(--ease-out-quart) both;animation-delay:calc(var(--g,0) * .16s + var(--i,0) * 32ms)}}.exp-rail,.exp-rail-logos,.proj-pin-progress,.proj-pin-noimage-fill{display:none}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.proj-card:hover{transform:none}.pin-track{height:auto!important}.pin-step[data-pin=future]{visibility:visible!important}}.crt-overlay{z-index:300;pointer-events:none;background-blend-mode:multiply, normal;-webkit-backdrop-filter:saturate(1.5)contrast(1.1);backdrop-filter:saturate(1.5)contrast(1.1);background-image:radial-gradient(#0000 50%,#00000073 100%);position:fixed;inset:0}
