:root{--peach:#ffd3ac;--sand:#ccbeb1;--coffee:#664c36;--espresso:#331c08;--cream:#f7ede1;--paper:#fbf7f1;--ink:var(--espresso);--radius:22px;--frame:clamp(10px, 1.4vw, 18px);--measure:66ch;--font-display:"Fraunces", Georgia, "Times New Roman", serif;--font-sans:"Space Grotesk", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box}html,body,#root{min-width:320px;min-height:100%;margin:0}body{background:var(--espresso);color:var(--ink);font-family:var(--font-sans)}a{color:inherit}::selection{background:var(--espresso);color:var(--paper)}.app{height:100svh;min-height:100svh;padding:var(--frame);gap:var(--frame);background:radial-gradient(140% 120% at 0% 0%, #3d2410 0%, var(--espresso) 60%);flex-direction:column;display:flex}.surface{border-radius:var(--radius);isolation:isolate;flex:1;min-height:0;position:relative;overflow:hidden}.surface--page>.view{animation:.32s cubic-bezier(.2,.8,.2,1) both view-in}@keyframes view-in{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.surface--page{-webkit-overflow-scrolling:touch;color:var(--espresso);background:radial-gradient(80% 55% at 100% 0%, color-mix(in srgb, var(--peach) 60%, transparent), transparent 60%), radial-gradient(65% 50% at 0% 100%, color-mix(in srgb, var(--sand) 42%, transparent), transparent 55%), var(--paper);overflow:hidden auto}.nav{z-index:10;align-items:center;gap:24px;padding:clamp(15px,2.4vw,24px) clamp(20px,4vw,48px);display:flex;position:sticky;top:0}.nav--page{background:color-mix(in srgb, var(--paper) 88%, transparent);-webkit-backdrop-filter:blur(14px)saturate(1.2);border-bottom:1px solid color-mix(in srgb, var(--coffee) 18%, transparent)}.nav__brand{font-family:var(--font-display);letter-spacing:-.02em;color:var(--espresso);white-space:nowrap;font-size:clamp(1rem,1.4vw,1.2rem);font-weight:500;text-decoration:none}.nav__brand span{font-family:var(--font-sans);vertical-align:super;color:var(--coffee);margin-left:1px;font-size:.6em;font-weight:500}.nav__links{align-items:center;gap:clamp(16px,2.4vw,36px);margin-left:auto;display:flex}.nav__links a{text-transform:uppercase;letter-spacing:.16em;color:color-mix(in srgb, var(--espresso) 66%, transparent);font-size:.72rem;font-weight:500;text-decoration:none;transition:color .18s;position:relative}.nav__links a:hover,.nav__links a:focus-visible,.nav__links a.is-active{color:var(--espresso)}.nav__links a.is-active:after{content:"";background:var(--coffee);border-radius:50%;width:4px;height:4px;position:absolute;bottom:-7px;left:50%;transform:translate(-50%)}.nav--hero .nav__brand,.nav--hero .nav__links a{text-shadow:0 1px 12px color-mix(in srgb, var(--cream) 62%, transparent)}.hero__bg{z-index:0;background:radial-gradient(120% 130% at 82% 12%, var(--peach) 0%, var(--sand) 52%, #b6a493 100%);position:absolute;inset:0}.hero__photo{z-index:1;object-fit:cover;object-position:22% 26%;mix-blend-mode:multiply;opacity:0;filter:contrast(1.04)brightness(1.02);width:100%;height:100%;transition:opacity .7s;position:absolute;inset:0}.hero__photo[data-ready=true]{opacity:.95}.surface--hero:after{content:"";z-index:2;border-radius:inherit;box-shadow:inset 0 130px 90px -80px color-mix(in srgb, var(--cream) 50%, transparent), inset 0 -130px 120px -80px color-mix(in srgb, var(--espresso) 20%, transparent), inset 0 0 0 1px color-mix(in srgb, var(--espresso) 12%, transparent);pointer-events:none;position:absolute;inset:0}.hero__content{z-index:3;text-align:right;flex-direction:column;align-items:flex-end;gap:16px;max-width:100%;padding:0 clamp(20px,5vw,76px) 0 20px;display:flex;position:absolute;top:clamp(84px,13vh,150px);right:0}.hero__title{font-family:var(--font-display);font-optical-sizing:auto;letter-spacing:-.055em;white-space:nowrap;background:linear-gradient(95deg, var(--espresso) 0%, var(--coffee) 46%, #2a1706 100%);color:#0000;-webkit-text-fill-color:transparent;filter:drop-shadow(0 2px 22px color-mix(in srgb, var(--cream) 40%, transparent));-webkit-background-clip:text;background-clip:text;margin:0;padding-bottom:.5em;font-size:clamp(4rem,19vw,16rem);font-weight:400;line-height:.8}.hero__title-block{background:var(--espresso);color:var(--cream);-webkit-text-fill-color:var(--cream);-webkit-box-decoration-break:clone;box-decoration-break:clone;border-radius:4px;padding:0 .09em}.hero__lede{max-width:34ch;color:color-mix(in srgb, var(--espresso) 88%, transparent);text-shadow:0 1px 8px color-mix(in srgb, var(--cream) 45%, transparent);margin:0;font-size:clamp(.92rem,1.25vw,1.06rem);line-height:1.5}.hero__meta{text-transform:uppercase;letter-spacing:.16em;color:var(--coffee);flex-direction:column;align-items:flex-end;gap:4px;margin:4px 0 0;font-size:.68rem;display:flex}.hero__social{z-index:3;border:1px solid color-mix(in srgb, var(--espresso) 26%, transparent);background:color-mix(in srgb, var(--cream) 42%, transparent);-webkit-backdrop-filter:blur(3px);width:44px;height:44px;color:var(--espresso);border-radius:999px;justify-content:center;align-items:center;transition:transform .18s,background .18s,border-color .18s;display:inline-flex;position:absolute;bottom:clamp(20px,5vh,48px);right:clamp(20px,5vw,76px)}.hero__social:hover,.hero__social:focus-visible{background:color-mix(in srgb, var(--cream) 72%, transparent);border-color:var(--espresso);transform:translateY(-2px)}.hero__social svg{fill:currentColor;width:19px;height:19px;display:block}.page{max-width:960px;margin:0 auto;padding:clamp(30px,6vw,72px) clamp(20px,5vw,64px) clamp(72px,12vw,132px)}.page__kicker{text-transform:uppercase;letter-spacing:.2em;color:var(--coffee);margin:0;font-size:.72rem;font-weight:600}.page__title{font-family:var(--font-display);letter-spacing:-.04em;color:var(--espresso);margin:.24em 0 0;font-size:clamp(2.6rem,7vw,5rem);font-weight:400;line-height:.98}.page__intro{max-width:60ch;color:color-mix(in srgb, var(--espresso) 80%, transparent);margin:.9em 0 0;font-size:clamp(1.05rem,1.5vw,1.24rem);line-height:1.6}.section__title{font-family:var(--font-display);letter-spacing:-.02em;color:var(--espresso);margin:2.6em 0 .2em;font-size:clamp(1.5rem,3vw,2.1rem);font-weight:400}.section__lead{color:color-mix(in srgb, var(--espresso) 74%, transparent);margin:.5em 0 0;line-height:1.55}.back{text-transform:uppercase;letter-spacing:.16em;color:var(--coffee);align-items:center;gap:8px;margin-bottom:1.6em;font-size:.72rem;font-weight:600;text-decoration:none;transition:color .18s;display:inline-flex}.back:hover{color:var(--espresso)}.prose h2{font-family:var(--font-display);letter-spacing:-.02em;color:var(--espresso);margin:2.4em 0 .6em;font-size:clamp(1.5rem,3vw,2.1rem);font-weight:400}.prose p{max-width:var(--measure);color:color-mix(in srgb, var(--espresso) 86%, transparent);margin:0 0 1.05em;font-size:clamp(1rem,1.15vw,1.1rem);line-height:1.68}.quote{max-width:24ch;font-family:var(--font-display);letter-spacing:-.02em;color:var(--espresso);margin:1.4em 0;font-size:clamp(1.5rem,3.4vw,2.4rem);font-weight:400;line-height:1.24}.tags{flex-wrap:wrap;gap:8px;margin:1.4em 0 0;padding:0;list-style:none;display:flex}.tags li{text-transform:uppercase;letter-spacing:.13em;color:var(--coffee);border:1px solid color-mix(in srgb, var(--coffee) 28%, transparent);border-radius:999px;padding:6px 12px;font-size:.72rem;font-weight:500}.stats{border:1px solid color-mix(in srgb, var(--coffee) 22%, transparent);background:color-mix(in srgb, var(--coffee) 22%, transparent);border-radius:16px;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:1px;margin:2.2em 0 .6em;display:grid;overflow:hidden}.stat{background:var(--paper);padding:clamp(18px,3vw,26px)}.stat__num{font-family:var(--font-display);letter-spacing:-.03em;color:var(--espresso);margin:0;font-size:clamp(1.7rem,4vw,2.6rem);font-weight:400}.stat__label{color:var(--coffee);margin:.5em 0 0;font-size:.82rem;line-height:1.45}.work__head{border-bottom:1px solid color-mix(in srgb, var(--coffee) 20%, transparent);grid-template-columns:1fr;align-items:end;gap:clamp(28px,5vw,56px);margin-bottom:clamp(32px,6vw,64px);display:grid}.work__intro{padding-bottom:clamp(22px,3.5vw,40px)}.work__intro .page__intro{margin-top:1.1em}.work__portrait{place-self:end start;width:min(280px,78vw)}@media (width>=720px){.work__head{grid-template-columns:minmax(0,1fr) 360px}.work__portrait{justify-self:end;width:360px}}.cards{z-index:1;gap:16px;margin-top:2.4em;display:grid;position:relative}.card{border:1px solid color-mix(in srgb, var(--coffee) 20%, transparent);background:color-mix(in srgb, var(--peach) 12%, transparent);color:inherit;border-radius:18px;padding:clamp(22px,3.4vw,36px);text-decoration:none;transition:border-color .18s,transform .18s,background .18s;display:block}a.card:hover,a.card:focus-visible{border-color:var(--espresso);background:color-mix(in srgb, var(--peach) 22%, transparent);transform:translateY(-2px)}.card--static{background:0 0}.card__meta{text-transform:uppercase;letter-spacing:.14em;color:var(--coffee);margin:0;font-size:.7rem}.card__title{font-family:var(--font-display);letter-spacing:-.02em;color:var(--espresso);margin:.4em 0 .3em;font-size:clamp(1.3rem,2.8vw,1.9rem);font-weight:400;line-height:1.1}.card__desc{max-width:60ch;color:color-mix(in srgb, var(--espresso) 78%, transparent);margin:0;line-height:1.55}.card__cta{text-transform:uppercase;letter-spacing:.14em;color:var(--espresso);margin-top:1.1em;font-size:.72rem;font-weight:600;display:inline-block}.about__hero{margin:1.4em 0 0}.about__heroPhoto{max-width:640px}.about__intro{grid-template-columns:1fr;gap:clamp(24px,4vw,48px);margin-top:1.6em;display:grid}.about__photos{grid-template-columns:1fr;align-content:start;gap:16px;max-width:320px;display:grid}@media (width>=860px){.about__intro{grid-template-columns:1.4fr 1fr}.about__photos{max-width:none;position:sticky;top:92px}}.timeline-wrap{gap:clamp(20px,4vw,40px);margin-top:1.4em;display:grid}.timeline__media{max-width:220px}.timeline__col{min-width:0}@media (width>=820px){.timeline-wrap{grid-template-columns:180px 1fr;align-items:start}.timeline__media{max-width:none}}.timeline__hint{text-transform:uppercase;letter-spacing:.14em;color:color-mix(in srgb, var(--espresso) 50%, transparent);align-items:center;gap:6px;margin:0 0 6px;font-size:.7rem;display:flex}.timeline__hintArrow{animation:1.6s ease-in-out infinite hint-nudge;display:inline-block}@keyframes hint-nudge{0%,to{transform:translate(0)}50%{transform:translate(4px)}}.timeline{scroll-snap-type:x proximity;scrollbar-width:none;grid-auto-columns:minmax(168px,1fr);grid-auto-flow:column;min-width:0;margin:0;padding:4px 4px 14px;list-style:none;display:grid;overflow-x:auto;-webkit-mask-image:linear-gradient(90deg,#000 0 92%,#0000 100%);mask-image:linear-gradient(90deg,#000 0 92%,#0000 100%)}.timeline::-webkit-scrollbar{display:none}.tl__item{scroll-snap-align:start;padding-top:22px;padding-right:20px;position:relative}.tl__item:after{content:"";background:color-mix(in srgb, var(--coffee) 24%, transparent);height:2px;position:absolute;top:6px;left:0;right:0}.tl__item:before{content:"";background:var(--espresso);width:12px;height:12px;box-shadow:0 0 0 4px var(--paper);z-index:1;border-radius:50%;position:absolute;top:1px;left:0}.tl__year{font-family:var(--font-display);letter-spacing:-.01em;color:var(--espresso);margin:0;font-size:1.2rem;font-weight:400}.tl__text{max-width:30ch;color:color-mix(in srgb, var(--espresso) 74%, transparent);margin:6px 0 0;font-size:.9rem;line-height:1.5}@media (width<=720px){.timeline__hint{display:none}.timeline{grid-auto-flow:row;grid-auto-columns:unset;border-left:2px solid color-mix(in srgb, var(--coffee) 24%, transparent);gap:1.6em;padding:4px 0 0 26px;overflow:visible;-webkit-mask-image:none;mask-image:none}.tl__item{padding:0}.tl__item:after{display:none}.tl__item:before{top:5px;left:-33px}.tl__text{max-width:52ch}}.xp{gap:2.4em;margin-top:1.4em;display:grid}.xp__head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:4px 20px;display:flex}.xp__role{font-family:var(--font-display);letter-spacing:-.02em;color:var(--espresso);margin:0;font-size:clamp(1.2rem,2.6vw,1.6rem);font-weight:400}.xp__co{color:var(--coffee)}.xp__period{text-transform:uppercase;letter-spacing:.13em;color:var(--coffee);white-space:nowrap;margin:0;font-size:.74rem}.xp__place{color:color-mix(in srgb, var(--espresso) 60%, transparent);margin:.3em 0 0;font-size:.85rem}.gallery{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:clamp(28px,5vw,52px);margin-top:1.6em;padding-bottom:12px;display:grid}.figure{margin:0}.figure__frame{position:relative}.figure.blob-a .figure__frame:before,.figure.blob-b .figure__frame:before,.figure.blob-c .figure__frame:before{content:"";background:linear-gradient(135deg, var(--peach), var(--sand));opacity:.9;z-index:0;position:absolute;inset:-24px -36px -44px -24px}.figure.blob-a .figure__frame:before{border-radius:63% 37% 54% 46%/55% 48% 52% 45%;transform:rotate(-3deg)}.figure.blob-b .figure__frame:before{background:linear-gradient(150deg, var(--sand), var(--peach));border-radius:41% 59% 68% 32%/51% 44% 56% 49%;inset:-34px -26px -38px -44px;transform:rotate(4deg)}.figure.blob-c .figure__frame:before{background:linear-gradient(120deg, var(--peach), color-mix(in srgb, var(--sand) 55%, var(--coffee) 20%));border-radius:49% 51% 35% 65%/65% 39% 61% 35%;inset:-28px -42px -32px -28px;transform:rotate(-6deg)}.figure__frame .figure__slot,.figure__frame .figure__ph{z-index:1;position:relative}.figure img{object-fit:cover;border-radius:14px;width:100%;display:block}.figure.contain .figure__slot img{object-fit:contain}.figure.contain .figure__slot{background:0 0}.figure.contain .figure__slot.is-loading:after{display:none}.figure__slot{background:linear-gradient(135deg, var(--peach), var(--sand));border-radius:14px;overflow:hidden}.figure__slot img{object-fit:cover;opacity:0;width:100%;height:100%;transition:opacity .5s,transform .7s cubic-bezier(.2,.8,.2,1);transform:scale(1.04)}.figure__slot img[data-ready=true]{opacity:1;transform:none}.figure__slot.is-loading:after{content:"";background-image:linear-gradient(100deg, transparent 25%, color-mix(in srgb, var(--cream) 48%, transparent) 44%, color-mix(in srgb, var(--cream) 78%, transparent) 50%, color-mix(in srgb, var(--cream) 48%, transparent) 56%, transparent 75%);background-repeat:no-repeat;background-size:250% 100%;animation:1.5s ease-in-out infinite figure-shimmer;position:absolute;inset:0}@keyframes figure-shimmer{0%{background-position:165% 0}to{background-position:-65% 0}}.figure__ph{border:1px dashed color-mix(in srgb, var(--coffee) 45%, transparent);background:color-mix(in srgb, var(--peach) 22%, transparent);min-height:160px;color:var(--coffee);text-align:center;border-radius:14px;flex-direction:column;justify-content:center;align-items:center;gap:6px;padding:18px;font-size:.8rem;display:flex}.figure__ph code{color:color-mix(in srgb, var(--espresso) 70%, transparent);font-size:.78rem}.figure figcaption{color:var(--coffee);margin-top:10px;font-size:.85rem;line-height:1.45}.skills{grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:1.6em;margin-top:1.4em;display:grid}.skills h3{text-transform:uppercase;letter-spacing:.16em;color:var(--coffee);margin:0 0 .7em;font-size:.74rem}.skills ul{flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none;display:flex}.skills li{border:1px solid color-mix(in srgb, var(--coffee) 22%, transparent);border-radius:999px;padding:6px 12px;font-size:.82rem}.certs,.langs{gap:2px;margin:1.2em 0 0;padding:0;list-style:none;display:grid}.certs li{border-bottom:1px solid color-mix(in srgb, var(--coffee) 16%, transparent);grid-template-columns:1fr auto;gap:2px 16px;padding:16px 0;display:grid}.certs__title{color:var(--espresso);font-size:1.02rem}.certs__place{color:var(--coffee);grid-column:1;font-size:.85rem}.certs__year{text-transform:uppercase;letter-spacing:.13em;color:var(--coffee);grid-area:1/2/span 2;align-self:center;font-size:.78rem}.langs li{border-bottom:1px solid color-mix(in srgb, var(--coffee) 16%, transparent);justify-content:space-between;gap:16px;padding:14px 0;font-size:1.02rem;display:flex}.langs__level{color:var(--coffee)}.contact{position:relative}.contact__body{z-index:1;max-width:640px;position:relative}.contact__note{color:color-mix(in srgb, var(--espresso) 72%, transparent);margin:.7em 0 0;font-size:clamp(1.02rem,1.4vw,1.18rem);line-height:1.55}.contact__pen{z-index:0;mix-blend-mode:multiply;filter:contrast(1.06)brightness(1.03);pointer-events:none;width:clamp(300px,52vw,600px);height:auto;position:absolute;top:clamp(-60px,-4vw,-12px);right:clamp(-200px,-13vw,-48px);transform:rotate(11deg);-webkit-mask-image:radial-gradient(68% 88% at 52% 46%,#000 58%,#0000 100%);mask-image:radial-gradient(68% 88% at 52% 46%,#000 58%,#0000 100%)}@media (width<=720px){.contact__pen{opacity:.5;width:280px;top:-20px;right:-90px}}.contact__list{gap:2px;margin:2.4em 0 0;display:grid}.contact__row{border-bottom:1px solid color-mix(in srgb, var(--coffee) 18%, transparent);color:inherit;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:6px 20px;padding:20px 0;text-decoration:none;display:flex}.contact__key{text-transform:uppercase;letter-spacing:.16em;color:var(--coffee);font-size:.72rem}.contact__val{color:var(--espresso);font-size:clamp(1rem,2vw,1.22rem);transition:color .18s}a.contact__row:hover .contact__val,a.contact__row:focus-visible .contact__val{color:var(--coffee)}.marquee{padding:4px 0 2px;overflow:hidden;-webkit-mask-image:linear-gradient(90deg,#0000 0,#000 6% 94%,#0000 100%);mask-image:linear-gradient(90deg,#0000 0,#000 6% 94%,#0000 100%)}.marquee__track{width:max-content;animation:34s linear infinite marquee-scroll;display:flex}.marquee__group{flex-shrink:0;display:flex}.marquee__item{white-space:nowrap;text-transform:uppercase;letter-spacing:.2em;color:color-mix(in srgb, var(--cream) 80%, transparent);align-items:center;gap:.85em;padding-right:.85em;font-size:clamp(.78rem,1.4vw,1rem);font-weight:500;display:inline-flex}.marquee__amp{color:color-mix(in srgb, var(--peach) 82%, transparent)}@keyframes marquee-scroll{to{transform:translate(-50%)}}@media (width<=860px){.hero__title{white-space:normal;font-size:clamp(3.4rem,16vw,6rem)}.hero__content{max-width:min(92%,42ch)}}@media (width<=680px){.nav{flex-wrap:wrap;gap:12px 16px}.nav--page{padding:16px 20px}.nav__links{justify-content:space-between;gap:8px;width:100%;margin-left:0}.hero__photo{object-position:30% 18%}.hero__content{gap:10px;top:clamp(96px,16vh,150px)}.xp__head{flex-direction:column}}@media (prefers-reduced-motion:reduce){*{transition:none!important}.marquee__track,.timeline__hintArrow,.surface--page>.view{animation:none}.figure__slot.is-loading:after{display:none}.figure__slot img{transform:none}}
