@keyframes portfolio_cycle-border-color__6wxmk{0%{border:2px solid var(--primary-color)}to{border:2px solid var(--secondary-color)}}@keyframes portfolio_cycle-colour__RSDEQ{0%{color:var(--primary-color)}to{color:var(--secondary-color)}}@keyframes portfolio_fadeInSlideFromLeft__1R95M{0%{opacity:0;left:-10rem}to{opacity:1;left:0}}@keyframes portfolio_fadeOutSlideToLeft__KO01b{0%{opacity:1;left:0}to{opacity:0;left:-10rem}}@keyframes portfolio_fadeInKF__3UfRA{0%{opacity:0}to{opacity:1}}@keyframes portfolio_fadeOutKF__ZRcah{0%{opacity:1}to{opacity:0}}@keyframes portfolio_fadeInScaleDownKF__HP6pz{0%{opacity:0}to{opacity:1;transform:scale(1)}}@keyframes portfolio_fadeInSlideUpKF__Vs986{0%{opacity:0;bottom:-5rem}to{opacity:1;bottom:0}}@keyframes portfolio_slideDownKF__k4BiP{0%{top:-5rem}to{top:0}}@keyframes portfolio_fadeInSlideDownKF__eOFhO{0%{opacity:0;top:-5rem}to{opacity:1;top:0}}@keyframes portfolio_fadeOutSlideUpKF__4Keuw{0%{opacity:1;top:0}to{opacity:0;top:-5rem}}.portfolio_animation__zrM6N{height:100%;display:block}.portfolio_animation--cycle-border-color__9ja_c{padding:.5rem;animation:portfolio_cycle-border-color__6wxmk 2s linear infinite alternate}.portfolio_animation--cycle-colors__LqhDr{animation:portfolio_cycle-colour__RSDEQ 1s linear infinite alternate}.portfolio_portfolio__XO_AD{max-width:960px;margin:0 auto;padding:80px 32px 120px}@media screen and (min-width:0px)and (max-width:800px){.portfolio_portfolio__XO_AD{padding:40px 16px 80px}}.portfolio_fadeIn__b0Y_n{opacity:0;will-change:opacity;animation-name:portfolio_fadeInKF__3UfRA;animation-duration:.8s;animation-iteration-count:1;animation-fill-mode:forwards;animation-delay:.1s}.portfolio_gitLog__SyTgc{display:flex;flex-direction:column}.portfolio_commit___1EGu{display:flex;align-items:stretch;gap:20px;opacity:0;will-change:opacity,transform;animation-name:portfolio_fadeInSlideFromLeft__1R95M;animation-duration:.5s;animation-iteration-count:1;animation-fill-mode:forwards;animation-delay:0s}.portfolio_commitNode__b0RjD{display:flex;flex-direction:column;align-items:center;flex-shrink:0;width:22px;padding-top:3px}.portfolio_commitDot__0sido{width:14px;height:14px;border-radius:50%;background:var(--background-color-dark-two);border:2px solid var(--primary-color);flex-shrink:0;transition:background .4s ease-in-out,border-color .4s ease-in-out,box-shadow .3s ease}.portfolio_commitConnector__wLdvT{width:2px;flex:1 1;min-height:24px;margin-top:6px;background:color-mix(in srgb,var(--primary-color) 25%,transparent);transition:background .4s ease-in-out}.portfolio_commitCurrent__QpyqN .portfolio_commitDot__0sido{background:var(--primary-color);box-shadow:0 0 14px var(--primary-color);animation:portfolio_commitPulse__StJdD 2.8s ease-in-out infinite}@keyframes portfolio_commitPulse__StJdD{0%,to{box-shadow:0 0 8px var(--primary-color)}50%{box-shadow:0 0 22px var(--primary-color),0 0 36px color-mix(in srgb,var(--primary-color) 35%,transparent)}}.portfolio_commitBody__1E3zk{flex:1 1;padding-bottom:36px}.portfolio_commitRefs__ZY9zD{display:flex;gap:6px;margin-bottom:8px}.portfolio_headRef__k2_jw{background:var(--primary-color);color:var(--background-color-dark-one);border-radius:4px;font-weight:700;transition:background .4s ease-in-out,color .4s ease-in-out}.portfolio_branchRef__jal_Y,.portfolio_headRef__k2_jw{font-family:Courier New,monospace;font-size:.68rem;padding:2px 8px;letter-spacing:.05em}.portfolio_branchRef__jal_Y{border:1px solid var(--primary-color);color:var(--primary-color);border-radius:4px;font-weight:600;transition:border-color .4s ease-in-out,color .4s ease-in-out}.portfolio_commitRole__gKPmR{color:var(--font-color);margin:0 0 4px;font-size:1rem}.portfolio_commitMeta__093gY{font-family:Courier New,monospace;font-size:.78rem;color:var(--light-grey);margin:0 0 12px;opacity:.75}.portfolio_areaTags__1PjSo{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:6px}.portfolio_areaTag__8M7wQ{display:inline-block;font-size:.65rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;padding:2px 9px;border-radius:4px;border:1px solid;opacity:.9}.portfolio_techTags__6xTJ6{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:14px}.portfolio_techTag__f4rvV{display:inline-flex;align-items:center;gap:5px;padding:3px 10px;border-radius:20px;font-size:.72rem;font-weight:600;color:var(--primary-color);background:color-mix(in srgb,var(--primary-color) 10%,transparent);border:1px solid color-mix(in srgb,var(--primary-color) 28%,transparent);transition:background .4s ease-in-out,border-color .4s ease-in-out}.portfolio_techTagLogo__7PGoJ{width:14px;height:14px;object-fit:contain;border-radius:2px;flex-shrink:0}.portfolio_commitHighlights__xJMRx{margin:0;padding-left:18px}.portfolio_commitHighlights__xJMRx li{color:var(--light-grey);font-size:.9rem;line-height:1.65;margin-bottom:5px}.portfolio_commitHighlights__xJMRx li::marker{color:var(--primary-color)}