﻿*,*::before,*::after{margin:0;padding:0;box-sizing:border-box}html{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:100%;color:#f0ece8;background-color:#090909;scroll-behavior:smooth}body{min-height:100vh;line-height:1.6}a{color:#f0ece8;text-decoration:none}img,iframe{filter:grayscale(1)}.landing{display:flex;flex-direction:column;height:100vh;position:relative;overflow-x:hidden}.hero{display:flex;align-items:center;justify-content:center;flex:1;background-color:#0d0c0b;position:relative;overflow:hidden}.tickers{flex-shrink:0}.card{position:relative;z-index:2;display:flex;align-items:stretch;gap:2rem;width:42rem;max-width:90vw;padding:2rem;background-color:#090909;border:1px solid rgba(240,236,232,.08);border-radius:1rem;isolation:isolate;animation:card-breathe 4s ease-in-out infinite;transform-style:preserve-3d;will-change:transform,box-shadow;box-shadow:0 1rem 4rem rgba(0,0,0,.45),0 0.5rem 2rem rgba(0,0,0,.3);transition:box-shadow .2s ease,border-color .2s ease}.card:hover{border-color:rgba(240,236,232,.2)}.card.is-tilting{animation:none;transition:box-shadow .2s ease,border-color .2s ease}.card__info{flex:1;text-align:left;display:flex;flex-direction:column;justify-content:center}.card__name{font-size:2rem;font-weight:700;letter-spacing:.02em;margin-bottom:.5rem}.card__title{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:.875rem;font-weight:400;opacity:.75;margin-bottom:1rem}.card__roles{list-style:none;display:flex;flex-direction:column;gap:.5rem}.card__role{font-size:.875rem;opacity:.9}.card__links{display:flex;flex-direction:column;justify-content:center;gap:1rem}.card__link{display:inline-flex;align-items:center;gap:.5rem;padding:.5rem 1rem;border:1px solid rgba(240,236,232,.2);border-radius:.5rem;font-size:.875rem;white-space:nowrap;transition:background-color .2s ease,border-color .2s ease}.card__link svg{width:1rem;height:1rem;fill:#f0ece8;flex-shrink:0}.card__link:hover{background-color:rgba(240,236,232,.08);border-color:rgba(240,236,232,.4)}@keyframes card-breathe{0%,100%{transform:perspective(56rem) translateY(0)}50%{transform:perspective(56rem) translateY(-0.5rem)}}.ticker{display:flex;align-items:center;background-color:#090909;border-top:1px solid rgba(240,236,232,.12)}.ticker__label{flex-shrink:0;padding:.5rem 1rem;font-size:.75rem;font-weight:700;letter-spacing:.1em;opacity:.4;white-space:nowrap;border-right:1px solid rgba(240,236,232,.12)}.ticker__viewport{flex:1;overflow:hidden;position:relative}.ticker__viewport::before,.ticker__viewport::after{content:"";position:absolute;top:0;bottom:0;width:3rem;z-index:1;pointer-events:none}.ticker__viewport::before{left:0;background:linear-gradient(to right, #090909, transparent)}.ticker__viewport::after{right:0;background:linear-gradient(to left, #090909, transparent)}.ticker__track{display:inline-flex;align-items:center;gap:1rem;padding:.5rem 0;white-space:nowrap;will-change:transform;animation:ticker-scroll var(--ticker-duration, 20s) linear infinite}.ticker__item{font-size:.75rem;letter-spacing:.08em;opacity:.4}.ticker__sep{opacity:.12;font-size:.75rem;flex-shrink:0}@keyframes ticker-scroll{from{transform:translateX(0)}to{transform:translateX(-50%)}}.scroll-hint{flex-shrink:0;display:flex;justify-content:space-around;align-items:center;padding:.5rem 0;pointer-events:none;transition:opacity .6s ease;z-index:1;overflow:hidden;width:100%;max-width:100%}.scroll-hint.is-hidden{opacity:0}.scroll-hint__arrow{width:2rem;height:2rem;color:rgba(240,236,232,.4);flex-shrink:0;animation:arrow-bob 2.4s ease-in-out infinite}.scroll-hint__arrow:nth-child(1){animation-delay:0s}.scroll-hint__arrow:nth-child(2){animation-delay:0.15s}.scroll-hint__arrow:nth-child(3){animation-delay:0.3s}.scroll-hint__arrow:nth-child(4){animation-delay:0.45s}.scroll-hint__arrow:nth-child(5){animation-delay:0.6s}.scroll-hint__arrow:nth-child(6){animation-delay:0.75s}.scroll-hint__arrow:nth-child(7){animation-delay:0.9s}.scroll-hint__arrow:nth-child(8){animation-delay:1.05s}.scroll-hint__arrow:nth-child(9){animation-delay:1.2s}@keyframes arrow-bob{0%,100%{transform:translateY(-0.3rem);opacity:.3}50%{transform:translateY(0.3rem);opacity:.6}}@property --sx{syntax:"<length>";inherits:true;initial-value:-999px}@property --sy{syntax:"<length>";inherits:true;initial-value:-999px}.spotlight{position:fixed;inset:0;pointer-events:none;z-index:1;--sx: -999px;--sy: -999px}.spotlight::before{content:"";position:absolute;inset:0;background:radial-gradient(circle 14rem at var(--sx) var(--sy), rgba(255, 106, 0, 0.12) 0%, transparent 60%);opacity:0;transition:opacity .35s ease}.spotlight::after{content:"";position:absolute;inset:0;opacity:0;transition:opacity .35s ease;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='grain'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.40' numOctaves='20' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='200' height='200' filter='url(%23grain)' opacity='0.12'/%3E%3C/svg%3E");background-repeat:repeat;background-size:180px 180px;mix-blend-mode:overlay;-webkit-mask-image:radial-gradient(circle 14rem at var(--sx) var(--sy), black 0%, transparent 70%);mask-image:radial-gradient(circle 14rem at var(--sx) var(--sy), black 0%, transparent 70%)}.spotlight.is-active::before,.spotlight.is-active::after{opacity:1}.spotlight.is-touch::before{background:radial-gradient(circle 22rem at 50% 50%, rgba(255, 106, 0, 0.11) 0%, transparent 65%);position:fixed;inset:unset;top:0;left:0;right:unset;bottom:unset;width:44rem;height:44rem;border-radius:50%;animation:orb-float 20s ease-in-out infinite;transition:opacity 1.2s ease;will-change:transform}.spotlight.is-touch::after{display:block;position:fixed;inset:unset;top:0;left:0;right:unset;bottom:unset;width:44rem;height:44rem;border-radius:50%;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='grain'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.40' numOctaves='20' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='200' height='200' filter='url(%23grain)' opacity='0.12'/%3E%3C/svg%3E");background-repeat:repeat;background-size:180px 180px;mix-blend-mode:overlay;-webkit-mask-image:radial-gradient(circle 22rem at 50% 50%, black 0%, transparent 70%);mask-image:radial-gradient(circle 22rem at 50% 50%, black 0%, transparent 70%);animation:orb-float 20s ease-in-out infinite;transition:opacity 1.2s ease;will-change:transform}@keyframes orb-float{0%{transform:translate(calc(15vw - 22rem), calc(20vh - 22rem))}14%{transform:translate(calc(70vw - 22rem), calc(15vh - 22rem))}28%{transform:translate(calc(75vw - 22rem), calc(60vh - 22rem))}42%{transform:translate(calc(50vw - 22rem), calc(80vh - 22rem))}57%{transform:translate(calc(20vw - 22rem), calc(70vh - 22rem))}71%{transform:translate(calc(10vw - 22rem), calc(30vh - 22rem))}85%{transform:translate(calc(55vw - 22rem), calc(40vh - 22rem))}100%{transform:translate(calc(15vw - 22rem), calc(20vh - 22rem))}}.content{position:relative;z-index:2;max-width:72rem;margin:0 auto;padding:4rem 2rem;display:flex;flex-direction:column;gap:4rem}.section-title{font-size:1.5rem;font-weight:700;letter-spacing:.04em;margin-bottom:1.5rem;opacity:.9}.bio{display:flex;align-items:stretch;gap:1.5rem}.bio__photo-wrap{flex-shrink:0;align-self:stretch;aspect-ratio:1;overflow:hidden;max-height:11rem;max-width:11rem}.bio__photo{width:100%;height:100%;object-fit:cover;object-position:center top;opacity:.9;display:block;border-radius:.5rem}.bio__body{flex:1;display:flex;flex-direction:column}.bio__body .section-title{margin-bottom:1.5rem}.bio__text{font-size:1rem;line-height:1.75;opacity:.75}.grid{display:grid;gap:1rem}.grid--3{grid-template-columns:repeat(3, 1fr)}.grid--5{grid-template-columns:repeat(5, 1fr)}.grid__card{background-color:#0d0c0b;border:1px solid rgba(240,236,232,.08);border-radius:.5rem;overflow:hidden;font-size:.875rem;transition:border-color .2s ease,background-color .2s ease;position:relative;z-index:1}.grid__card:hover{border-color:rgba(240,236,232,.2);background-color:rgb(18.525,17.1,15.675)}.grid__card-img-wrap{width:100%;aspect-ratio:16/7;overflow:hidden}.grid__card-img{width:100%;height:100%;object-fit:cover;object-position:center;display:block;opacity:.75;transition:opacity .2s ease}.grid__card:hover .grid__card-img{opacity:.9}.grid__card-title{font-size:1rem;font-weight:700;margin-bottom:.5rem;padding:1.5rem 1.5rem 0}.grid__card-role{opacity:.6;margin-bottom:.5rem;padding:0 1.5rem}.grid__card-duration{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:.875rem;opacity:.4;letter-spacing:.04em;padding:0 1.5rem 1.5rem}.grid__chip{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5rem;padding:1.5rem .5rem;background-color:#0d0c0b;border:1px solid rgba(240,236,232,.08);border-radius:.5rem;text-align:center;transition:border-color .2s ease,background-color .2s ease;position:relative;z-index:1}.grid__chip:hover{border-color:rgba(240,236,232,.2);background-color:rgb(18.525,17.1,15.675)}.grid__chip i,.grid__chip-icon{font-size:1.75rem;width:1.75rem;height:1.75rem;color:#f0ece8;opacity:.75}.grid__chip img.grid__chip-icon{filter:invert(1)}.grid__chip-label{font-size:1.5rem;font-weight:700;opacity:.6}.grid__chip span{font-size:.875rem;opacity:.75;white-space:nowrap}.education__grid{display:grid;grid-template-columns:repeat(2, 1fr);gap:1.5rem}.education__entry{background-color:#0d0c0b;border:1px solid rgba(240,236,232,.08);border-radius:.5rem;padding:1.5rem;display:flex;flex-direction:column;gap:.5rem;transition:border-color .2s ease,background-color .2s ease}.education__entry:hover{border-color:rgba(240,236,232,.2);background-color:rgb(18.525,17.1,15.675)}.education__school{font-size:1rem;font-weight:700;letter-spacing:.02em}.education__degree{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:.875rem;letter-spacing:.04em;opacity:.6}.education__body{margin-top:.5rem;font-size:.875rem;line-height:1.75;opacity:.75}.education__bullets{list-style:none;display:flex;flex-direction:column;gap:.5rem;padding-top:.25rem}.education__bullets li{font-size:.75rem;opacity:.6;padding-left:1rem;position:relative}.education__bullets li::before{content:"—";position:absolute;left:0;opacity:.6}.talks__carousel{display:grid;grid-template-columns:repeat(3, minmax(0, 1fr));gap:1.5rem;overflow-x:auto;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;scrollbar-width:none;width:100%}.talks__carousel::-webkit-scrollbar{display:none}.talks__carousel.is-dragging{cursor:grabbing}.talks__controls{display:none;justify-content:center;align-items:center;gap:.75rem;margin-top:1rem}.talks__nav{flex-shrink:0;width:2.5rem;height:2.5rem;display:flex;align-items:center;justify-content:center;background:rgba(240,236,232,.06);border:1px solid rgba(240,236,232,.12);border-radius:50%;color:rgba(240,236,232,.6);cursor:pointer;transition:background-color .2s ease,border-color .2s ease,color .2s ease;padding:0}.talks__nav svg{width:1.1rem;height:1.1rem}.talks__nav:hover{background:rgba(240,236,232,.14);border-color:rgba(240,236,232,.3);color:rgba(240,236,232,.9)}.talks__also{margin-top:1.5rem;font-size:1rem;opacity:.6;line-height:1.75}.talks__also span{opacity:1;font-weight:600;color:#f0ece8}.talks__also a{color:#f0ece8;text-decoration:underline}.talks__also a:hover{color:rgba(240,236,232,.8)}.talk{scroll-snap-align:start;min-width:0;background-color:#0d0c0b;border:1px solid rgba(240,236,232,.08);border-radius:.5rem;overflow:hidden;display:flex;flex-direction:column;transition:border-color .2s ease}.talk:hover{border-color:rgba(240,236,232,.2)}.talk__embed-wrap{position:relative;width:100%;padding-top:56.25%;background-color:#090909;flex-shrink:0}.talk__embed{position:absolute;inset:0;width:100%;height:100%;border:0;display:block}.talk__body{padding:1.25rem;display:flex;flex-direction:column;gap:.4rem;flex:1}.talk__title{font-size:1rem;font-weight:700;line-height:1.35;opacity:.9}.talk__event{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:.875rem;opacity:.6;letter-spacing:.04em}.talk__location{display:flex;align-items:center;gap:.3rem;font-size:.75rem;opacity:.4;margin-top:auto;padding-top:.5rem}.talk__location svg{width:.85rem;height:.85rem;flex-shrink:0;opacity:.7}.talk__desc{margin-top:.25rem;font-size:.875rem;line-height:1.75;opacity:.75}.certs__grid{display:grid;grid-template-columns:repeat(4, 1fr);gap:1rem}.cert{display:flex;flex-direction:column;align-items:center;gap:1rem;padding:1.5rem;background-color:#0d0c0b;border:1px solid rgba(240,236,232,.08);border-radius:.5rem;text-decoration:none;color:#f0ece8;transition:border-color .2s ease,background-color .2s ease;position:relative;z-index:1}.cert:hover{border-color:rgba(240,236,232,.2);background-color:rgb(18.525,17.1,15.675)}.cert__badge{width:5rem;height:5rem;object-fit:contain;flex-shrink:0}.cert__body{display:flex;flex-direction:column;gap:.35rem;text-align:left}.cert__title{font-size:.875rem;font-weight:700;line-height:1.35;opacity:.9;text-align:center}.cert__date{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:.75rem;opacity:.4;text-align:center;letter-spacing:.04em}.cert__desc{font-size:.75rem;opacity:.6;line-height:1.75}.projects__carousel{display:grid;grid-template-columns:repeat(3, minmax(0, 1fr));gap:1.5rem;overflow-x:auto;scroll-snap-type:x mandatory;scroll-padding-left:0;-webkit-overflow-scrolling:touch;scrollbar-width:none;width:100%}.projects__carousel::-webkit-scrollbar{display:none}.projects__carousel.is-dragging{cursor:grabbing}.projects__controls{display:none;justify-content:center;align-items:center;gap:.75rem;margin-top:1rem}.projects__nav{flex-shrink:0;width:2.5rem;height:2.5rem;display:flex;align-items:center;justify-content:center;background:rgba(240,236,232,.06);border:1px solid rgba(240,236,232,.12);border-radius:50%;color:rgba(240,236,232,.6);cursor:pointer;transition:background-color .2s ease,border-color .2s ease,color .2s ease;padding:0}.projects__nav svg{width:1.1rem;height:1.1rem}.projects__nav:hover{background:rgba(240,236,232,.14);border-color:rgba(240,236,232,.3);color:rgba(240,236,232,.9)}.project{scroll-snap-align:start;min-width:0;background-color:#0d0c0b;border:1px solid rgba(240,236,232,.08);border-radius:.5rem;overflow:hidden;display:flex;flex-direction:column;transition:border-color .2s ease}.project:hover{border-color:rgba(240,236,232,.2)}.project__img-wrap{width:100%;aspect-ratio:16/9;background-color:#090909;flex-shrink:0;overflow:hidden}.project__img{width:100%;height:100%;object-fit:cover;object-position:center top;display:block}.project__body{padding:1.25rem;display:flex;flex-direction:column;gap:.5rem;flex:1}.project__title{font-size:1rem;font-weight:700;line-height:1.35;opacity:.9}.project__desc{font-size:.875rem;line-height:1.75;opacity:.75}.project__stack{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:.75rem;opacity:.6;letter-spacing:.04em;line-height:1.75}.project__link{display:inline-flex;align-items:center;gap:.4rem;margin-top:auto;padding-top:.5rem;font-size:.875rem;opacity:.6;transition:opacity .2s ease}.project__link svg{width:.9rem;height:.9rem;flex-shrink:0}.project__link:hover{opacity:.9}.minor-projects{margin-top:2rem;display:flex;flex-direction:column;gap:.75rem}.minor-project{font-size:.875rem;line-height:1.75;opacity:.75}.minor-project__link{font-weight:700;opacity:.9;text-decoration:none;display:inline-flex;align-items:center;gap:.25rem;transition:opacity .2s ease}.minor-project__link svg{width:.8rem;height:.8rem;flex-shrink:0;opacity:.4}.minor-project__link:hover{opacity:1;text-decoration:underline}.minor-project__link a{font-weight:bold}@media(max-width: 60rem){.talks__carousel{grid-template-columns:unset;display:flex;cursor:grab}.talk{flex:0 0 min(22rem,80vw)}.projects__carousel{grid-template-columns:unset;display:flex;cursor:grab}.project{flex:0 0 min(22rem,80vw)}}@media(max-width: 35rem){.card{flex-direction:column;padding:2rem 1rem;gap:1rem}.card__info{text-align:left}.card__name{font-size:1.5rem}.card__links{flex-direction:row;flex-wrap:wrap;align-items:flex-start;gap:.2rem;margin:0 -0.8rem}.grid--3{grid-template-columns:1fr}.grid--5{grid-template-columns:repeat(3, 1fr)}.bio{flex-direction:column}.bio__photo-wrap{max-width:100%;max-height:none;width:100%}.education__grid{grid-template-columns:1fr}.certs__grid{grid-template-columns:1fr}.talk{flex:0 0 85vw}.project{flex:0 0 85vw}}
