@charset "UTF-8";.animated{animation-duration:1s;animation-fill-mode:both}.fadeIn{animation-name:fadeIn}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}html{background-color:#000}body{margin:0;font-family:Inter,Helvetica Neue,sans-serif;color:#000000de;padding:0}@media(max-width:600px){body{padding-bottom:env(safe-area-inset-bottom,0px)}}p{line-height:1.5}h1,h2,h3,h4,h5,h6{font-family:Space Grotesk,system-ui,sans-serif;letter-spacing:.2px}a,a:visited,a:active{color:#0b7285;transition:color .3s ease}.dark-mode a,.dark-mode a:visited,.dark-mode a:active,html.dark a,html.dark a:visited,html.dark a:active{color:#00ced1}a:hover{color:#4682b4}:root{--snap-yellow: #fffc00;--gradient-1: linear-gradient(90deg, #00d2ff 0%, #3a47d5 100%)}.body-wrapper{background:linear-gradient(160deg,#f2e7d6,#e8d9c2);background-size:cover;height:100vh;width:100vw;position:fixed;left:0;z-index:1000;top:0;filter:none;transition:box-shadow .28s cubic-bezier(.4,0,.2,1)}.shawn-name{text-align:center;padding:0 10px;opacity:.7}.headline{text-align:center;margin-top:0;padding:0 5px}.dark-mode .headline{text-shadow:0 1px 10px rgba(0,0,0,.75)}.shawn-name img{max-width:100%}.container{max-width:800px;width:100%;margin:auto}.page-wrapper{--page-padding-block: 30px;--page-padding-inline: 5px;--page-title-gap: 45px;padding:var(--page-padding-block) var(--page-padding-inline)}.page-wrapper h2:first-child{margin-top:0;margin-bottom:var(--page-title-gap);text-align:center;font-family:var(--font-display);font-weight:600;font-variation-settings:"opsz" 96;letter-spacing:-.01em}@media(max-width:600px){.page-wrapper{--page-padding-block: 20px}}.text-center{text-align:center}.img-responsive{max-width:100%;height:auto}.job{margin:20px 10px}.card-header{display:flex;align-items:center;padding:16px 16px 0}.card-header-text{display:flex;flex-direction:column;min-width:0;margin:0 16px}.card-avatar{flex:0 0 auto;border-radius:50%;object-fit:cover}.card-kicker{display:flex;flex-wrap:wrap;align-items:baseline;gap:2px .55em;margin:0 0 6px;font-family:var(--font-mono);font-weight:500;font-size:.8rem;line-height:1.3;letter-spacing:.06em;text-transform:uppercase;color:var(--spec-meta);transition:color .4s ease}.card-kicker>*+*:before{content:"/";margin-right:.55em;color:var(--spec-rule-strong)}.card-kicker>:first-child{color:var(--spec-rust)}@media(max-width:500px){.card-kicker .job-place{flex-basis:100%}.card-kicker .job-place:before{content:none}}.card-title{margin:0;font-family:var(--font-display);font-weight:600;font-variation-settings:"opsz" 72;font-size:1.6rem;line-height:1.1;letter-spacing:-.01em;color:var(--spec-ink);transition:color .4s ease}.card-subtitle{margin:6px 0 0;font-family:var(--font-mono);font-weight:500;font-size:.92rem;line-height:1.35;color:var(--spec-meta);transition:color .4s ease}.card-subtitle a{color:var(--spec-link);text-decoration:underline;text-decoration-thickness:1px;text-decoration-color:color-mix(in srgb,currentColor 35%,transparent);text-underline-offset:3px;transition:color .4s ease,text-decoration-color .2s ease}.card-subtitle a:hover,.card-subtitle a:focus-visible{text-decoration-color:currentColor}.job-header{padding-bottom:16px;margin-bottom:14px;border-bottom:3px double var(--spec-rule)}@media(max-width:500px){.card-header.job-header{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;column-gap:14px;padding:6px 4px 14px}.job-header .card-header-text{display:contents}.job-header .card-avatar{grid-area:1/1}.job-header .card-kicker{grid-area:1/2;margin:0}.job-header .link-icon{grid-area:1/3}.job-header .card-title{grid-area:2/1/3/-1;margin-top:14px}.job-header .card-subtitle{grid-area:3/1/4/-1}.job>ul:not([class]){padding-left:1.25rem}}.brand-logo{outline:1px solid var(--spec-rule-strong);outline-offset:3px}.job li::marker{color:var(--spec-rust)}.card-label{margin:1.1rem 0 .4rem;font-family:var(--font-mono);font-weight:500;font-size:.82rem;letter-spacing:.06em;text-transform:uppercase;color:var(--spec-rust)}.ui-list{list-style:none;margin:0;padding:8px 0}.ui-list>li{min-height:40px;display:flex;align-items:center;padding:0 16px}.ui-btn{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;min-height:40px;padding:0 20px;border:none;border-radius:4px;color:#fff;font-family:Orbitron,Space Grotesk,sans-serif;font-weight:650;font-size:.82rem;line-height:1;letter-spacing:.06em;cursor:pointer;background-size:200% auto;box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f;transition:background-position .5s ease,box-shadow .2s ease}.ui-btn:hover{box-shadow:0 2px 4px -1px #0003,0 4px 5px #00000024,0 1px 10px #0000001f}.timeline{display:flex;flex-direction:column-reverse}.timeline-step{position:relative;margin-left:12px;padding:0 0 10px 28px;border-left:2px solid rgba(0,0,0,.15);transition:border-color .4s ease}.timeline-step:first-child{padding-bottom:0}.timeline-step:before{content:"";position:absolute;left:-7px;top:6px;width:12px;height:12px;border-radius:50%;background:var(--accent-aqua)}.timeline-step>summary{cursor:pointer;padding:2px 0;font-weight:600;list-style:none}.timeline-step>summary::-webkit-details-marker{display:none}.dark-mode .job{background:#ffffff0b;color:#f5f5f5;border:solid 1px rgba(255,255,255,.18);box-shadow:0 8px 24px #0000002e}.dark-mode .listbox *{color:#f5f5f5}.dark-mode .timeline-step{border-left-color:#ffffff59}html.dark .app-wrapper{color:#f5f5f5}html.dark .job{background:#ffffff0b;color:#f5f5f5;border:solid 1px rgba(255,255,255,.18);box-shadow:0 8px 24px #0000002e}html{--text-color-normal: #0a244d;--text-color-light: #8cabd9;--accent-aqua: #21c1d6;--accent-pink: #ff45d6;--font-display: "Fraunces", Georgia, serif;--font-mono: "IBM Plex Mono", ui-monospace, "SFMono-Regular", Menlo, monospace;--spec-ink: #1d1a16;--spec-meta: #4f4234;--spec-rust: #a8422a;--spec-link: #0b6577;--spec-rule: rgba(60, 42, 26, .28);--spec-rule-strong: rgba(60, 42, 26, .4)}html.dark,.dark-mode{--spec-ink: #f3e7cf;--spec-meta: #cdbfa6;--spec-rust: #f0a36b;--spec-link: #6fd0ea;--spec-rule: rgba(243, 231, 207, .26);--spec-rule-strong: rgba(243, 231, 207, .38)}html[data-theme=dark]{--text-color-normal: hsl(210, 10%, 62%);--text-color-light: hsl(210, 15%, 35%);--text-color-richer: hsl(210, 50%, 72%);--text-color-highlight: hsl(25, 70%, 45%)}@media screen and (max-width:500px){h2{text-align:center}}.tech-stack{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:.45rem .55rem}.tech-stack li{display:flex;margin:0}.tech-stack .tech-name{font-family:var(--font-mono);font-weight:500;font-size:.8rem;letter-spacing:.06em;text-transform:uppercase;line-height:1.2;display:inline-block;padding:.3rem .55rem .26rem;border-radius:3px;color:var(--spec-meta);background:transparent;border:1px solid var(--spec-rule-strong);white-space:nowrap;word-break:keep-all;overflow-wrap:normal;-webkit-hyphens:none;hyphens:none}.btn-grad-1{background-image:linear-gradient(to right,#e55d87,#5fc3e4 51%,#e55d87)}.btn-grad-1:hover{background-position:right center}.btn-grad-2{background-image:linear-gradient(to right,#da22ff,#9733ee 51%,#da22ff)}.btn-grad-2:hover{background-position:right center}.btn-grad-name{position:relative;overflow:hidden;isolation:isolate;border:2px solid #ff3fd6;color:#fff;text-shadow:0 0 10px rgba(0,245,255,.5),0 0 4px rgba(255,63,214,.6);background-image:linear-gradient(115deg,#26e6dd,#12b5e6 40%,#b14bff,#ff3fd6);background-size:220% 220%;box-shadow:inset 0 1px #ffffff59,inset 0 0 16px #ff3fd673,0 0 0 1px #00f5ff59,0 8px 24px -6px #ff3fd68c,0 0 30px -4px #00e0eb8c;transition:transform .3s cubic-bezier(.2,.9,.25,1.15),box-shadow .3s ease,border-color .3s ease;animation:miamiDrift 7s ease-in-out infinite}.btn-grad-name:before{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;background:linear-gradient(100deg,transparent 34%,rgba(255,255,255,.45) 50%,transparent 66%);transform:translate(-130%);animation:miamiSheen 4.5s ease-in-out infinite}.btn-grad-name:hover{transform:translateY(-3px) scale(1.035);border-color:#5cfcff;box-shadow:inset 0 1px #ffffff80,inset 0 0 22px #ff3fd699,0 0 0 1px #00f5ffa6,0 14px 34px -6px #ff3fd6cc,0 0 52px #00e0ebbf}.btn-grad-name:active{transform:translateY(-1px) scale(1)}@keyframes miamiDrift{0%,to{background-position:0% 50%}50%{background-position:100% 50%}}@keyframes miamiSheen{0%,62%,to{transform:translate(-130%)}80%{transform:translate(130%)}}@media(prefers-reduced-motion:reduce){.btn-grad-name,.btn-grad-name:before{animation:none}}.app-wrapper:not(.dark-mode) .btn-grad-name{border-color:#7a261e59;text-shadow:0 1px 1px rgba(80,20,10,.35);background-image:linear-gradient(115deg,#c2531f,#b9471c,#a83254 70%,#9b2c5c);box-shadow:inset 0 1px #ffffff47,0 1px 2px #5a281433,0 10px 24px -10px #a832548c}.app-wrapper:not(.dark-mode) .btn-grad-name:hover{border-color:#7a261e80;box-shadow:inset 0 1px #ffffff59,0 2px 4px #5a281433,0 16px 32px -10px #a83254a6}.btn-grad-3{background-image:linear-gradient(to right,#2b5876,#4e4376 51%,#2b5876)}.btn-grad-3:hover{background-position:right center}.btn-grad-4{background-image:linear-gradient(to right,#00d2ff,#3a7bd5 51%,#00d2ff);background-position:center center}.btn-grad-4:hover{background-position:right center}.btn-grad-5{background-image:linear-gradient(to right,#c9ffbf,#ffafbd 51%,#c9ffbf)}.btn-grad-5:hover{background-position:right center}.cta{width:260px;border-radius:60px!important}.lil-gui{z-index:3005!important}.doticon{height:80px;width:80px;position:relative}.doticon svg-icon{position:absolute;inset:0;display:block;width:100%;height:100%}.doticon svg-icon svg{display:block;width:100%;height:100%}.doticon svg-icon path{fill:#1f2530;transition:fill .4s ease}.doticon canvas{position:absolute;inset:0;width:100%;height:100%;aspect-ratio:1;mask:var(--icon);-webkit-mask:var(--icon);opacity:0;transition:opacity .5s ease}.doticon.is-glittering canvas{opacity:1;transition-duration:.18s}.dark-mode .doticon svg-icon path{fill:#fff}.dark-mode-btn svg{transition:fill .4s ease}@keyframes gradient-1{0%{fill:#2196f3}10%{fill:remove-nth(#e55d87,#5fc3e4,#f093fb,#f5576c,#3ae374,#673ab7,#ff5722,#009688,#ff9800,#2196f3,10)}20%{fill:remove-nth(remove-nth(#e55d87,#5fc3e4,#f093fb,#f5576c,#3ae374,#673ab7,#ff5722,#009688,#ff9800,#2196f3,10),1)}30%{fill:remove-nth(remove-nth(remove-nth(#e55d87,#5fc3e4,#f093fb,#f5576c,#3ae374,#673ab7,#ff5722,#009688,#ff9800,#2196f3,10),1),1)}40%{fill:remove-nth(remove-nth(remove-nth(remove-nth(#e55d87,#5fc3e4,#f093fb,#f5576c,#3ae374,#673ab7,#ff5722,#009688,#ff9800,#2196f3,10),1),1),1)}50%{fill:remove-nth(remove-nth(remove-nth(remove-nth(remove-nth(#e55d87,#5fc3e4,#f093fb,#f5576c,#3ae374,#673ab7,#ff5722,#009688,#ff9800,#2196f3,10),1),1),1),1)}60%{fill:remove-nth(remove-nth(remove-nth(remove-nth(remove-nth(remove-nth(#e55d87,#5fc3e4,#f093fb,#f5576c,#3ae374,#673ab7,#ff5722,#009688,#ff9800,#2196f3,10),1),1),1),1),1)}70%{fill:remove-nth(remove-nth(remove-nth(remove-nth(remove-nth(remove-nth(remove-nth(#e55d87,#5fc3e4,#f093fb,#f5576c,#3ae374,#673ab7,#ff5722,#009688,#ff9800,#2196f3,10),1),1),1),1),1),1)}80%{fill:remove-nth(remove-nth(remove-nth(remove-nth(remove-nth(remove-nth(remove-nth(remove-nth(#e55d87,#5fc3e4,#f093fb,#f5576c,#3ae374,#673ab7,#ff5722,#009688,#ff9800,#2196f3,10),1),1),1),1),1),1),1)}90%{fill:remove-nth(remove-nth(remove-nth(remove-nth(remove-nth(remove-nth(remove-nth(remove-nth(remove-nth(#e55d87,#5fc3e4,#f093fb,#f5576c,#3ae374,#673ab7,#ff5722,#009688,#ff9800,#2196f3,10),1),1),1),1),1),1),1),1)}}.gradient-animated-1s svg path{animation:gradient-1 5s ease infinite}@keyframes gradient-through{0%{fill:#673ab7}10%{fill:remove-nth(#e55d87,#5fc3e4,#f093fb,#f5576c,#3ae374,#673ab7,#ff5722,#009688,#ff9800,#2196f3,6)}20%{fill:remove-nth(remove-nth(#e55d87,#5fc3e4,#f093fb,#f5576c,#3ae374,#673ab7,#ff5722,#009688,#ff9800,#2196f3,6),1)}30%{fill:remove-nth(remove-nth(remove-nth(#e55d87,#5fc3e4,#f093fb,#f5576c,#3ae374,#673ab7,#ff5722,#009688,#ff9800,#2196f3,6),1),1)}40%{fill:remove-nth(remove-nth(remove-nth(remove-nth(#e55d87,#5fc3e4,#f093fb,#f5576c,#3ae374,#673ab7,#ff5722,#009688,#ff9800,#2196f3,6),1),1),1)}50%{fill:remove-nth(remove-nth(remove-nth(remove-nth(remove-nth(#e55d87,#5fc3e4,#f093fb,#f5576c,#3ae374,#673ab7,#ff5722,#009688,#ff9800,#2196f3,6),1),1),1),1)}60%{fill:remove-nth(remove-nth(remove-nth(remove-nth(remove-nth(remove-nth(#e55d87,#5fc3e4,#f093fb,#f5576c,#3ae374,#673ab7,#ff5722,#009688,#ff9800,#2196f3,6),1),1),1),1),1)}70%{fill:remove-nth(remove-nth(remove-nth(remove-nth(remove-nth(remove-nth(remove-nth(#e55d87,#5fc3e4,#f093fb,#f5576c,#3ae374,#673ab7,#ff5722,#009688,#ff9800,#2196f3,6),1),1),1),1),1),1)}80%{fill:remove-nth(remove-nth(remove-nth(remove-nth(remove-nth(remove-nth(remove-nth(remove-nth(#e55d87,#5fc3e4,#f093fb,#f5576c,#3ae374,#673ab7,#ff5722,#009688,#ff9800,#2196f3,6),1),1),1),1),1),1),1)}90%{fill:remove-nth(remove-nth(remove-nth(remove-nth(remove-nth(remove-nth(remove-nth(remove-nth(remove-nth(#e55d87,#5fc3e4,#f093fb,#f5576c,#3ae374,#673ab7,#ff5722,#009688,#ff9800,#2196f3,6),1),1),1),1),1),1),1),1)}}.gradient-animated-throughs svg path{animation:gradient-through 5s ease infinite}@keyframes gradient-10{0%{fill:#5fc3e4}10%{fill:remove-nth(#e55d87,#5fc3e4,#f093fb,#f5576c,#3ae374,#673ab7,#ff5722,#009688,#ff9800,#2196f3,2)}20%{fill:remove-nth(remove-nth(#e55d87,#5fc3e4,#f093fb,#f5576c,#3ae374,#673ab7,#ff5722,#009688,#ff9800,#2196f3,2),1)}30%{fill:remove-nth(remove-nth(remove-nth(#e55d87,#5fc3e4,#f093fb,#f5576c,#3ae374,#673ab7,#ff5722,#009688,#ff9800,#2196f3,2),1),1)}40%{fill:remove-nth(remove-nth(remove-nth(remove-nth(#e55d87,#5fc3e4,#f093fb,#f5576c,#3ae374,#673ab7,#ff5722,#009688,#ff9800,#2196f3,2),1),1),1)}50%{fill:remove-nth(remove-nth(remove-nth(remove-nth(remove-nth(#e55d87,#5fc3e4,#f093fb,#f5576c,#3ae374,#673ab7,#ff5722,#009688,#ff9800,#2196f3,2),1),1),1),1)}60%{fill:remove-nth(remove-nth(remove-nth(remove-nth(remove-nth(remove-nth(#e55d87,#5fc3e4,#f093fb,#f5576c,#3ae374,#673ab7,#ff5722,#009688,#ff9800,#2196f3,2),1),1),1),1),1)}70%{fill:remove-nth(remove-nth(remove-nth(remove-nth(remove-nth(remove-nth(remove-nth(#e55d87,#5fc3e4,#f093fb,#f5576c,#3ae374,#673ab7,#ff5722,#009688,#ff9800,#2196f3,2),1),1),1),1),1),1)}80%{fill:remove-nth(remove-nth(remove-nth(remove-nth(remove-nth(remove-nth(remove-nth(remove-nth(#e55d87,#5fc3e4,#f093fb,#f5576c,#3ae374,#673ab7,#ff5722,#009688,#ff9800,#2196f3,2),1),1),1),1),1),1),1)}90%{fill:remove-nth(remove-nth(remove-nth(remove-nth(remove-nth(remove-nth(remove-nth(remove-nth(remove-nth(#e55d87,#5fc3e4,#f093fb,#f5576c,#3ae374,#673ab7,#ff5722,#009688,#ff9800,#2196f3,2),1),1),1),1),1),1),1),1)}}.gradient-animated-10s svg path{animation:gradient-10 5s ease infinite}.skip-link{position:fixed;top:8px;left:8px;z-index:10000;padding:10px 16px;border-radius:8px;background:#0b0b0f;color:#fff!important;font-weight:600;text-decoration:none;transform:translateY(-200%);transition:transform .15s ease}.skip-link:focus,.skip-link:focus-visible{transform:translateY(0);outline:2px solid #5fc3e4;outline-offset:2px}#main-content:focus{outline:none}.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}::view-transition-old(root),::view-transition-new(root){animation-duration:1.4s;animation-timing-function:cubic-bezier(.4,0,.2,1)}html.theme-shift *,html.theme-shift *:before,html.theme-shift *:after{transition:color 1.2s ease,background-color 1.2s ease,border-color 1.2s ease,box-shadow 1.2s ease,fill 1.2s ease,stroke 1.2s ease,opacity 1.2s ease!important}
