:root{--charcoal:#242424;--brown:#463f3a;--gray:#8a817c;--light-gray:#bcb8b1;--blue:#69747c;--tan:#8b7d6b;--cream:#f4f3ee;--radius:16px}*{box-sizing:border-box}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#242424;background:var(--charcoal);color:#f4f3ee;color:var(--cream);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;font-size:17px;line-height:1.6;margin:0}#root{display:flex;flex-direction:column;min-height:100vh}main{flex:1 1}img{display:block;max-width:100%}a{color:#f4f3ee;color:var(--cream);text-decoration-color:#bcb8b1;text-decoration-color:var(--light-gray);text-underline-offset:3px}a:hover{color:#bcb8b1;color:var(--light-gray)}h1,h2,h3{line-height:1.25}.header{padding:56px 20px 40px;text-align:center}.header__name{font-size:clamp(2rem,5vw,2.75rem);margin:0}.header__tagline{color:#bcb8b1;color:var(--light-gray);font-size:1.1rem;margin:8px 0 20px}.social{display:flex;font-size:1.6rem;gap:18px;justify-content:center}.social a{color:#bcb8b1;color:var(--light-gray);display:flex}.social a:hover{color:#f4f3ee;color:var(--cream)}.nav{background:#69747c;background:var(--blue);display:flex;flex-wrap:wrap;gap:4px 40px;justify-content:center;padding:14px 20px}.nav__link{border-bottom:2px solid #0000;color:#f4f3ee;color:var(--cream);font-size:1.1rem;font-weight:600;padding:2px 0;text-decoration:none}.nav__link:hover{border-bottom-color:#f4f3ee80}.nav__link.active{border-bottom-color:#f4f3ee;border-bottom-color:var(--cream);color:#f4f3ee;color:var(--cream)}.page{margin:0 auto;max-width:1000px;padding:24px 20px 64px}.section-title{font-size:1.6rem;margin:32px 0 16px}.box{background:#463f3a;background:var(--brown);border-radius:16px;border-radius:var(--radius);padding:20px 24px}.box h3{margin:0 0 6px}.box p{margin:0 0 12px}.box p:last-child{margin-bottom:0}.intro{grid-gap:0 24px;display:grid;gap:0 24px;grid-template-columns:3fr 2fr}.intro__section{display:flex;flex-direction:column}.intro .box{flex:1 1;padding:24px 28px}.about{border-left:4px solid #69747c;border-left:4px solid var(--blue)}.about p{color:#bcb8b1;color:var(--light-gray)}.about p:first-child{color:#f4f3ee;color:var(--cream);font-size:1.1rem}.contact__lead{color:#bcb8b1;color:var(--light-gray)}.contact__list{display:flex;flex-direction:column;gap:10px;list-style:none;margin:16px 0 0;padding:0}.contact__link{align-items:center;background:#f4f3ee0f;border-radius:12px;display:flex;gap:14px;padding:10px 14px;text-decoration:none;transition:background .2s ease,transform .2s ease}.contact__link:hover{background:#f4f3ee1f;color:#f4f3ee;color:var(--cream);transform:translateX(3px)}.contact__icon{background:#69747c;background:var(--blue);border-radius:50%;display:grid;flex-shrink:0;font-size:1.25rem;height:40px;place-items:center;width:40px}.contact__label{color:#bcb8b1;color:var(--light-gray);display:block;font-size:.8rem}.contact__value{display:block;font-weight:600;overflow-wrap:anywhere}@media (prefers-reduced-motion:reduce){.contact__link{transition:none}.contact__link:hover{transform:none}}.timeline{list-style:none;margin:16px 0 0;padding:0 0 max(24px,calc(55vh - 420px))}.timeline__hint{color:#bcb8b1;color:var(--light-gray);margin:0}.timeline__row{--s:1;--o:1;opacity:var(--o);padding:14px 0;position:relative;transition:opacity .15s ease}.timeline__row:before{background:#8a817c;background:var(--gray);bottom:0;content:"";left:7px;position:absolute;top:0;width:2px}.timeline__item:first-child .timeline__row:before{top:50%}.timeline__item:last-child .timeline__row:before{bottom:50%}.timeline__node{grid-column-gap:16px;align-items:center;background:none;border:0;color:#bcb8b1;color:var(--light-gray);column-gap:16px;cursor:pointer;display:grid;font:inherit;grid-template-columns:16px auto;max-width:71.42857%;padding:0;position:relative;text-align:left;transform:scale(var(--s));transform-origin:8px 50%;transition:transform .15s ease,color .2s ease;z-index:1}.timeline__node:focus-visible{border-radius:8px;outline:2px solid #f4f3ee;outline:2px solid var(--cream);outline-offset:6px}.timeline__dot{background:#242424;background:var(--charcoal);border:2px solid #bcb8b1;border:2px solid var(--light-gray);border-radius:50%;height:16px;transition:background .2s ease,border-color .2s ease;width:16px}.timeline__text{display:flex;flex-direction:column}.timeline__dates{font-size:.8rem}.timeline__title{color:#f4f3ee;color:var(--cream);font-size:1.05rem;font-weight:600;line-height:1.3}.timeline__company{font-size:.85rem}.timeline__item.is-selected .timeline__node{color:#f4f3ee;color:var(--cream)}.timeline__item.is-selected .timeline__dot{background:#f4f3ee;background:var(--cream);border-color:#f4f3ee;border-color:var(--cream)}@media (hover:hover){.timeline__row:hover .timeline__dot{border-color:#f4f3ee;border-color:var(--cream)}}.timeline .timeline__details{animation:reveal .3s ease;margin:4px 0 16px 32px;position:relative}.timeline__details:before{background:#8a817c;background:var(--gray);bottom:-16px;content:"";left:-25px;position:absolute;top:-4px;width:2px}.timeline__item:last-child .timeline__details:before{display:none}@keyframes reveal{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){.timeline__dot,.timeline__node,.timeline__row{transition:none}.timeline .timeline__details{animation:none}}.role{margin-bottom:40px;scroll-margin-top:16px}.role__header{background:#69747c;background:var(--blue);border-radius:16px 16px 0 0;border-radius:var(--radius) var(--radius) 0 0;padding:18px 24px}.role__header h2{font-size:1.4rem;margin:0}.role__header p{color:#bcb8b1;color:var(--light-gray);margin:4px 0 0}.role__body{background:#8a817c;background:var(--gray);border-radius:0 0 16px 16px;border-radius:0 0 var(--radius) var(--radius);padding:8px 24px 24px}.role__body h3{margin:20px 0 8px}.role__body>p{margin:0}.project{background:#463f3a;background:var(--brown);border-radius:12px;margin-top:12px}.project summary{cursor:pointer;font-weight:600;padding:14px 20px}.project__body{padding:0 20px 18px}.project__body h4{font-size:1rem;margin:0}.project__body p{margin:2px 0 0}.project__section{border-top:1px solid #f4f3ee26;margin-top:10px}.project .project__section summary{padding:10px 0 0}.project__section p{padding-top:4px}.project-cards{display:flex;flex-direction:column;gap:24px}.project-card{background:#463f3a;background:var(--brown);border:1px solid #f4f3ee14;border-left:4px solid #69747c;border-left:4px solid var(--blue);border-radius:16px;border-radius:var(--radius);padding:28px;transition:border-color .2s ease,transform .2s ease,box-shadow .2s ease}.project-card:hover{border-color:#f4f3ee33 #f4f3ee33 #f4f3ee33 #69747c;border-color:#f4f3ee33 #f4f3ee33 #f4f3ee33 var(--blue);box-shadow:0 12px 32px #00000059;transform:translateY(-2px)}.project-card__header{align-items:flex-start;display:flex;gap:16px;justify-content:space-between}.project-card__eyebrow{color:#bcb8b1;color:var(--light-gray);font-size:.8rem;font-weight:600;letter-spacing:.08em;margin:0 0 2px;text-transform:uppercase}.project-card__title{font-size:1.5rem;margin:0}.project-card__repo{align-items:center;background:#69747c;background:var(--blue);border-radius:999px;display:inline-flex;flex-shrink:0;font-size:.9rem;font-weight:600;gap:8px;padding:8px 14px;text-decoration:none;transition:background .2s ease}.project-card__repo:hover{background:#7a868f;color:#f4f3ee;color:var(--cream)}.project-card__tools{display:flex;flex-wrap:wrap;gap:8px;list-style:none;margin:18px 0 0;padding:0}.pill{align-items:center;background:#f4f3ee14;border-radius:999px;color:#f4f3ee;color:var(--cream);display:inline-flex;font-size:.85rem;gap:4px;padding:3px 12px}.pill--link{text-decoration:none;transition:background .2s ease}.pill--link:hover{background:#f4f3ee2e;color:#f4f3ee;color:var(--cream)}.project-card__context{color:#bcb8b1;color:var(--light-gray);margin:18px 0 0}.project-card__links{grid-gap:12px;display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));list-style:none;margin:22px 0 0;padding:0}.project-link{background:#24242473;border-radius:12px;display:flex;flex-direction:column;gap:10px;padding:14px 16px;transition:background .2s ease}.project-link:hover{background:#242424b3}.project-link__main{display:flex;flex-direction:column;gap:2px;text-decoration:none}.project-link__main:hover{color:#f4f3ee;color:var(--cream)}.project-link__label{align-items:center;display:inline-flex;font-weight:600;gap:6px}.project-link__label svg{color:#bcb8b1;color:var(--light-gray);transition:transform .2s ease}.project-link__main:hover .project-link__label svg{transform:translate(2px,-2px)}.project-link__note{color:#bcb8b1;color:var(--light-gray);font-size:.9rem}.project-link__extras{display:flex;flex-wrap:wrap;gap:6px}@media (prefers-reduced-motion:reduce){.project-card,.project-link__label svg{transition:none}.project-card:hover,.project-link__main:hover .project-link__label svg{transform:none}}.slideshow{margin:0 auto;max-width:820px}.slideshow__stage{align-items:center;background:#242424;background:var(--charcoal);border-radius:16px;border-radius:var(--radius);box-shadow:0 16px 40px #0006;display:flex;height:min(60vh,560px);isolation:isolate;justify-content:center;overflow:hidden;position:relative}.slideshow__stage:before{background:var(--backdrop) center /cover no-repeat;content:"";filter:blur(32px) brightness(.45) saturate(1.2);inset:-40px;position:absolute;transition:background-image .4s ease;z-index:-1}.slideshow__image{animation:slide-in .45s ease;max-height:100%;max-width:100%;object-fit:contain}@keyframes slide-in{0%{opacity:0;transform:scale(1.03)}}.slideshow__arrow{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#24242459;border:1px solid #f4f3ee40;border-radius:50%;color:#f4f3ee;color:var(--cream);cursor:pointer;display:grid;font-size:1.4rem;height:44px;place-items:center;position:absolute;top:50%;transform:translateY(-50%);transition:opacity .2s ease,background .2s ease;width:44px}.slideshow__arrow:hover{background:#24242499}.slideshow__arrow:focus-visible{outline:2px solid #f4f3ee;outline:2px solid var(--cream);outline-offset:2px}.slideshow__arrow--prev{left:16px}.slideshow__arrow--next{right:16px}@media (hover:hover){.slideshow__arrow{opacity:0}.slideshow__arrow:focus-visible,.slideshow__stage:hover .slideshow__arrow{opacity:1}}.slideshow__caption{align-items:flex-end;background:linear-gradient(0deg,#000000b3,#0000);bottom:0;display:flex;gap:12px;justify-content:space-between;left:0;padding:56px 20px 16px;pointer-events:none;position:absolute;right:0}.slideshow__title{font-size:1.15rem;font-weight:600;text-shadow:0 1px 8px #00000080}.slideshow__count{background:#2424248c;border-radius:999px;color:#bcb8b1;color:var(--light-gray);flex-shrink:0;font-size:.85rem;padding:2px 10px}.slideshow__thumbs{display:flex;gap:10px;margin-top:16px;overflow-x:auto;padding:6px 4px 8px;scrollbar-width:none}.slideshow__thumbs::-webkit-scrollbar{display:none}.slideshow__thumb:first-child{margin-left:auto}.slideshow__thumb:last-child{margin-right:auto}.slideshow__thumb{background:#463f3a;background:var(--brown);border:0;border-radius:12px;cursor:pointer;flex:0 0 72px;height:72px;opacity:.45;overflow:hidden;padding:0;transition:opacity .2s ease,transform .2s ease,box-shadow .2s ease}.slideshow__thumb:hover{opacity:.8}.slideshow__thumb:focus-visible{outline:2px solid #f4f3ee;outline:2px solid var(--cream);outline-offset:2px}.slideshow__thumb--active{box-shadow:0 0 0 2px #242424,0 0 0 4px #f4f3ee;box-shadow:0 0 0 2px var(--charcoal),0 0 0 4px var(--cream);opacity:1;transform:translateY(-3px)}.slideshow__thumb img{height:100%;object-fit:cover;width:100%}@media (prefers-reduced-motion:reduce){.slideshow__image{animation:none}.slideshow__arrow,.slideshow__thumb{transition:none}}.footer{color:#8a817c;color:var(--gray);font-size:.9rem;padding:24px 20px;text-align:center}@media (max-width:700px){.intro{grid-template-columns:1fr}.intro .box,.project-card{padding:20px}.project-card__header{flex-direction:column}.project-card__links{grid-template-columns:1fr}.nav{gap:4px 24px}.slideshow__stage{height:min(66vh,120vw)}.slideshow__arrow{height:38px;width:38px}.slideshow__arrow--prev{left:10px}.slideshow__arrow--next{right:10px}.slideshow__thumb{flex-basis:56px;height:56px}}
/*# sourceMappingURL=main.d3b0eebe.css.map*/