@import"https://fonts.googleapis.com/css2?family=Instrument+Serif:ital@0;1&family=Rubik:wght@400;500;600;700&display=swap";:root{font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box}html,body,#root{min-height:100%;margin:0}body{font-family:"Instrument Serif",Georgia,serif;color:#08080a;background-color:#f5f5ee}a{color:inherit}:root{--ink: #08080a;--paper: #ffffff;--paper-soft: #f7f6f0;--violet: #b45309;--violet-rgb: 180, 83, 9;--violet-deep: #92400e;--violet-deep-rgb: 146, 64, 14;--muted: #626772;--layout-width: 860px;--lane-width: 780px}.page-shell{position:relative;min-height:100vh;isolation:isolate}.page-shell:before{content:"";position:fixed;inset:0;z-index:-2;background:radial-gradient(circle at 14% 18%,rgba(var(--violet-rgb),.1),transparent 35%),radial-gradient(circle at 90% 4%,rgba(var(--violet-rgb),.08),transparent 25%),linear-gradient(170deg,#f7f6f1,#f5f5ee 55%,#f2f1e9)}.portfolio-layout{width:min(var(--layout-width),calc(100% - 2.5rem));margin:0 auto;padding-bottom:clamp(5.5rem,8vw,7.5rem);display:grid;gap:clamp(3.25rem,4.8vw,4.5rem)}.hero-section{position:relative;isolation:isolate;display:grid;grid-template-columns:minmax(0,1.22fr) minmax(0,.78fr);grid-template-areas:"portrait identity";gap:clamp(.35rem,1vw,.85rem);align-items:center;padding-top:clamp(1.5rem,3vw,2.75rem)}.hero-section:before{content:"";position:absolute;z-index:-1;top:50%;left:-3.5rem;width:min(58%,31rem);aspect-ratio:1.18;pointer-events:none;transform:translateY(-48%);background:radial-gradient(ellipse at center,rgba(var(--violet-rgb),.115) 0%,rgba(var(--violet-rgb),.052) 42%,transparent 72%)}.identity-column{grid-area:identity;width:fit-content;max-width:100%;min-width:0;display:grid;position:relative;z-index:2;justify-self:start;justify-items:start;align-content:center;margin-left:-1rem}.identity-column h1{margin:0;font-family:"Instrument Serif",Georgia,serif;font-size:clamp(3.75rem,6.6vw,5.75rem);line-height:.84;letter-spacing:-.035em;font-style:italic;font-weight:400;color:#09090d}.identity-column h1 span{display:block}.identity-column h1 span:nth-child(2){margin-left:clamp(.3rem,.7vw,.7rem)}.lead{margin:clamp(.72rem,1.25vw,1rem) 0 0;max-width:25ch;font-family:Rubik,sans-serif;font-size:clamp(.95rem,1.25vw,1.08rem);font-weight:400;line-height:1.5;color:#2d313a}.identity-links{margin-top:.42rem;display:flex;align-items:center;gap:.25rem}.identity-cta{width:36px;height:36px;display:grid;place-items:center;text-decoration:none;transition:color .2s ease,transform .2s ease}.identity-cta--linkedin{color:#0a66c2}.identity-cta--email{color:var(--violet)}.identity-cta svg{display:block;width:22px;height:22px;fill:currentColor}.identity-cta--linkedin:hover{color:#004182;transform:translateY(-1px)}.identity-cta--email:hover{color:var(--violet-deep);transform:translateY(-1px)}.identity-cta:focus-visible,.job-link:focus-visible{outline:2px solid rgba(var(--violet-rgb),.72);outline-offset:4px;border-radius:.2rem}.portrait-frame{grid-area:portrait;position:relative;isolation:isolate;justify-self:end;width:min(100%,400px);aspect-ratio:676 / 630;margin:0 -.65rem 0 0;overflow:hidden;border-radius:clamp(.9rem,1.8vw,1.35rem)}.portrait-frame img{width:100%;height:auto;display:block;transition:opacity .35s ease}.particle-portrait-canvas{position:absolute;inset:0;z-index:1;width:100%;height:100%;display:block;opacity:0;touch-action:auto;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}.portrait-frame.is-particle-pending .portrait-fallback,.portrait-frame.is-particle-active .portrait-fallback{opacity:0}.portrait-frame.is-particle-active .particle-portrait-canvas{opacity:1}.lane{width:min(var(--lane-width),100%);margin-inline:auto}.lane-head h2{margin:0;font-family:"Instrument Serif",Georgia,serif;font-size:clamp(2.5rem,4.3vw,3.6rem);line-height:.92;letter-spacing:-.025em;font-style:italic;font-weight:400;color:var(--ink)}.experience-list{width:100%;margin:clamp(1.6rem,3vw,2.25rem) auto 0;display:grid;gap:clamp(1rem,2vw,1.35rem)}.experience-item{display:grid;grid-template-columns:72px minmax(0,1fr);gap:1.25rem;align-items:start;padding:.65rem 0}.job-logo{width:72px;height:72px;display:block;border-radius:.75rem;background:var(--paper);object-fit:cover}.job-logo.job-logo-contain{padding:.45rem;object-fit:contain}.job-logo.job-logo-dark{background:#0b0b0b}.job-content,.job-heading{min-width:0}.job-heading h3,.job-heading h4{margin:0;font-family:"Instrument Serif",Georgia,serif;font-size:clamp(1.4rem,2.15vw,1.65rem);line-height:1;font-style:italic;font-weight:400;color:var(--ink)}.job-role{margin:.45rem 0 0;color:#303540;font-family:Rubik,sans-serif;font-size:.8rem;font-weight:400;line-height:1.4;text-transform:uppercase;letter-spacing:.08em}.job-period{margin:.4rem 0 0;color:var(--muted);font-family:Rubik,sans-serif;font-size:.72rem;line-height:1.45;text-transform:uppercase;letter-spacing:.08em}.job-link{margin-top:.4rem;display:inline-block;max-width:100%;color:var(--violet-deep);border-bottom:1px solid rgba(var(--violet-rgb),.28);font-family:Rubik,sans-serif;font-size:.72rem;letter-spacing:.01em;overflow-wrap:anywhere;text-decoration:none;transition:color .2s ease,border-color .2s ease}.job-link:hover{color:var(--violet-deep);border-bottom-color:rgba(var(--violet-deep-rgb),.56)}.job-summary{max-width:none;margin:.9rem 0 0;color:#313541;font-family:Rubik,sans-serif;font-size:.93rem;font-weight:400;line-height:1.62}.closing-sections{display:grid;gap:clamp(3.25rem,4.8vw,4.5rem)}.education-grid{width:100%;margin:1.5rem auto 0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1.5rem 2.5rem}.education-row{display:grid;grid-template-columns:62px minmax(0,1fr);gap:.9rem;align-items:start}.education-row img{width:62px;height:62px;border:1px solid rgba(8,8,10,.08);border-radius:.65rem;object-fit:cover}.education-row h3{margin:0;font-family:"Instrument Serif",Georgia,serif;font-size:1.45rem;line-height:1.08;font-style:italic;font-weight:400}.education-row p{margin:.32rem 0 0;color:#3a3f4c;font-family:Rubik,sans-serif;font-size:.82rem;line-height:1.45}.education-row span{margin-top:.3rem;display:block;color:var(--muted);font-family:Rubik,sans-serif;font-size:.7rem;letter-spacing:.08em;text-transform:uppercase}.stack-split{margin-top:1.65rem;display:grid;gap:2.25rem}.stack-lane{min-width:0}.stack-group-title{margin:0;color:#303540bf;font-family:Rubik,sans-serif;font-size:.74rem;font-weight:500;text-transform:uppercase;letter-spacing:.12em}.tools-grid{margin-top:.9rem;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:1rem 1.5rem}.tool-card{min-width:0;display:flex;align-items:center;gap:.65rem}.tool-card img{width:30px;height:30px;flex-shrink:0;object-fit:contain}.tool-fallback{width:30px;height:30px;flex-shrink:0;display:grid;place-items:center;border:1px solid rgba(var(--violet-rgb),.22);border-radius:999px;color:var(--violet-deep);background:rgba(var(--violet-rgb),.15);font-family:Rubik,sans-serif;font-size:.55rem;font-weight:500}.tool-card span{min-width:0;color:#2c3140;font-family:Rubik,sans-serif;font-size:.82rem;font-weight:400;line-height:1.25}.reveal-on-scroll{opacity:0;transform:translateY(14px);transition:opacity .7s ease,transform .7s cubic-bezier(.22,1,.36,1);will-change:opacity,transform}.reveal-on-scroll.is-visible{opacity:1;transform:translateY(0)}.reveal-on-scroll.reveal-card{opacity:0;transform:scale(.994);filter:blur(3px);transition:opacity .78s ease,transform .78s cubic-bezier(.22,1,.36,1),filter .78s ease}.reveal-on-scroll.reveal-card.is-visible{opacity:1;transform:scale(1);filter:blur(0)}@media(max-width:800px){.tools-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:760px),(hover:none)and (pointer:coarse){.reveal-on-scroll,.reveal-on-scroll.reveal-card{opacity:1;transform:none;filter:none;transition:none;will-change:auto}}@media(max-width:760px){.portfolio-layout{gap:3.25rem}.hero-section{grid-template-columns:1fr;grid-template-areas:"identity" "portrait";gap:1.15rem;padding-top:1.5rem}.hero-section:before{top:66%;left:50%;width:min(112%,36rem);transform:translate(-50%,-50%)}.identity-column h1{font-size:clamp(3.5rem,14vw,5rem)}.identity-column{width:100%;justify-self:stretch;margin-left:0}.portrait-frame{justify-self:center;width:min(100%,560px);margin-right:0}.education-grid{grid-template-columns:1fr}}@media(max-width:600px){.portfolio-layout{width:min(100% - 2rem,var(--layout-width));gap:3rem}.lane-head h2{font-size:clamp(2.35rem,11vw,3.1rem)}.experience-list{margin-top:1.4rem;gap:1rem}.experience-item{grid-template-columns:56px minmax(0,1fr);gap:1rem;padding:.5rem 0}.job-logo{width:56px;height:56px;border-radius:.6rem}.job-heading h3,.job-heading h4{font-size:1.25rem}.job-summary{margin-top:.72rem;font-size:.88rem;line-height:1.58}.education-row{grid-template-columns:56px minmax(0,1fr)}.education-row img{width:56px;height:56px}.stack-split{gap:1.9rem}.tools-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem 1.15rem}.tool-card img,.tool-fallback{width:28px;height:28px}}@media(max-width:360px){.experience-item{grid-template-columns:48px minmax(0,1fr);gap:.85rem}.job-logo{width:48px;height:48px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}.reveal-on-scroll,.reveal-on-scroll.reveal-card{opacity:1!important;transform:none!important;filter:none!important}}@media print,(forced-colors:active){.portrait-frame .portrait-fallback{opacity:1!important}.portrait-frame .particle-portrait-canvas{display:none!important}}
