@import url(https://fonts.googleapis.com/css2?family=Bebas+Neue&family=Fraunces:ital,opsz,wght@0,9..144,400..600;1,9..144,400..600&family=Inter:wght@400;500;600&family=JetBrains+Mono:wght@400;500&display=swap);:root,:root[data-theme=light]{--bg:#f4f0e8;--bg-2:#ece6da;--surface:#faf7f1;--surface-2:#f0ebe0;--border:#1c1a1621;--border-strong:#1c1a1642;--text:#1c1a16;--text-dim:#6a6255;--text-faint:#9a9284;--accent:#b8461e;--accent-ink:#8f3413;--accent-soft:#b8461e17;--shadow:0 24px 50px -28px #3c2d1959;--grain:0.5}:root[data-theme=dark]{--bg:#16130f;--bg-2:#1d1914;--surface:#201c15;--surface-2:#26221a;--border:#ece5da21;--border-strong:#ece5da42;--text:#ece5da;--text-dim:#b0a695;--text-faint:#7c7364;--accent:#d2703f;--accent-ink:#e08a5d;--accent-soft:#d2703f24;--shadow:0 24px 55px -26px #000000a6;--grain:0.4}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:92px}body{-webkit-font-smoothing:antialiased;background:linear-gradient(180deg,#f4f0e8,#ece6da 18%,#f4f0e8 36%,#ece6da 54%,#f4f0e8 72%,#ece6da 90%,#f4f0e8);background:linear-gradient(180deg,var(--bg) 0,var(--bg-2) 18%,var(--bg) 36%,var(--bg-2) 54%,var(--bg) 72%,var(--bg-2) 90%,var(--bg) 100%);color:#1c1a16;color:var(--text);font-family:Inter,system-ui,-apple-system,sans-serif;line-height:1.65;margin:0;overflow-x:hidden}a{color:inherit;text-decoration:none}::selection{background:#b8461e;background:var(--accent);color:#fff}.App{min-height:100vh;position:relative}.bg-texture{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='a'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23a)' opacity='.5'/%3E%3C/svg%3E");inset:0;mix-blend-mode:multiply;opacity:.5;opacity:var(--grain);pointer-events:none;position:fixed;z-index:0}:root[data-theme=dark] .bg-texture{mix-blend-mode:screen}main{position:relative;z-index:1}.section{margin:0 auto;max-width:none;padding:32px clamp(24px,5vw,96px) 0}.section--alt{position:relative}.hstick{align-self:center;color:#1c1a16;color:var(--text);flex:none;height:46px;width:46px}.stickman{animation:sm-bob 1.7s ease-in-out infinite;display:block;overflow:visible}.prop{stroke:#b8461e;stroke:var(--accent)}.stickman .arm{transform-box:view-box}.arm--wave{animation:sm-wave .5s ease-in-out infinite;transform-origin:26px 23px}.arm--skills,.prop--curl{animation:sm-curl 1.3s ease-in-out infinite;transform-box:view-box;transform-origin:30px 30px}.prop--fly{animation:sm-fly 2.4s ease-in-out infinite;transform-box:view-box}.section__head:hover .stickman{animation-duration:.4s}@keyframes sm-bob{0%,to{transform:translateY(0)}50%{transform:translateY(-2px)}}@keyframes sm-wave{0%,to{transform:rotate(-12deg)}50%{transform:rotate(14deg)}}@keyframes sm-curl{0%,to{transform:translateY(0)}50%{transform:translateY(-5px)}}@keyframes sm-fly{0%,to{transform:translate(0) rotate(0)}50%{transform:translate(3px,-3px) rotate(-6deg)}}@media (prefers-reduced-motion:reduce){.prop--curl,.prop--fly,.stickman,.stickman .arm{animation:none!important}}.mascot{height:300px;opacity:0;pointer-events:none;position:fixed;right:clamp(12px,3vw,30px);top:50%;transform:translateY(-50%);visibility:hidden;width:88px;z-index:40}.mascot.is-active{opacity:1;visibility:visible}.mascot__scene{height:100%;pointer-events:none;position:relative;width:100%}.mascot__fig{color:#1c1a16;color:var(--text);cursor:pointer;left:50%;margin-left:-26px;pointer-events:auto;position:absolute;top:calc(50% - 58px);width:52px;will-change:transform}.mascot__svg{animation:m-idle 3.4s ease-in-out infinite;display:block;overflow:visible;transform-origin:26px 40px}@keyframes m-idle{0%,to{transform:translateY(0)}50%{transform:translateY(-1.5px)}}.slab--mid{height:6px;opacity:.9;top:50%;width:64px}.slab--mid,.tslab{background:#1c1a16;background:var(--text);border-radius:2px;left:50%;position:absolute;transform:translateX(-50%)}.tslab{height:5px;opacity:0;transition:opacity .14s ease;width:52px}.tslab.on{opacity:.4}.acc-holder{animation:m-pickup .5s ease;color:#b8461e;color:var(--accent);left:50%;margin-left:6px;position:absolute;top:calc(50% - 22px);transform-origin:50% 100%}.acc-holder svg{display:block}.acc{transform-box:view-box;transform-origin:40px 36px}.acc.trick{animation:m-trick 1.1s ease}.acc.sw-fly{animation:sw-fly-in .5s ease}.acc.sw-juggle{animation:sw-jug-in .6s ease}.acc.sw-toss{animation:sw-toss-in .5s ease}.acc.sw-spin{animation:sw-spin-in .5s ease}.acc-holder.acc--leaving.sw-fly{animation:sw-fly-out .5s ease forwards}.acc-holder.acc--leaving.sw-juggle{animation:sw-jug-out .6s ease forwards}.acc-holder.acc--leaving.sw-toss{animation:sw-toss-out .5s ease forwards}.acc-holder.acc--leaving.sw-spin{animation:sw-spin-out .5s ease forwards}@keyframes sw-fly-in{0%{opacity:0;transform:translateX(-55px)}70%{opacity:1;transform:translateX(4px)}to{transform:translateX(0)}}@keyframes sw-fly-out{0%{opacity:1;transform:translateX(0) rotate(0)}to{opacity:0;transform:translateX(34px) rotate(45deg)}}@keyframes sw-jug-in{0%{opacity:0;transform:translateY(-32px) rotate(-200deg)}60%{opacity:1;transform:translateY(4px) rotate(12deg)}to{transform:translateY(0) rotate(0)}}@keyframes sw-jug-out{0%{opacity:1;transform:translateY(0) rotate(0)}45%{opacity:1;transform:translateY(-28px) rotate(180deg)}to{opacity:0;transform:translateY(8px) rotate(320deg)}}@keyframes sw-toss-in{0%{opacity:0;transform:translateY(-42px)}72%{opacity:1;transform:translateY(3px)}to{transform:translateY(0)}}@keyframes sw-toss-out{0%{opacity:1;transform:translateY(0) rotate(0)}to{opacity:0;transform:translateY(-34px) rotate(80deg)}}@keyframes sw-spin-in{0%{opacity:0;transform:rotate(-1turn) scale(.3)}to{opacity:1;transform:none}}@keyframes sw-spin-out{0%{opacity:1;transform:rotate(0) scale(1)}to{opacity:0;transform:rotate(1turn) scale(.3)}}.mascot .prop{stroke:#b8461e;stroke:var(--accent)}.arm,.leg{transform-box:view-box}.arm-l,.arm-r{transform-origin:26px 23px}.leg-l,.leg-r{transform-origin:26px 40px}@keyframes m-pickup{0%{opacity:0;transform:translateY(-14px) scale(.5)}60%{opacity:1;transform:translateY(2px) scale(1.12)}to{transform:translateY(0) scale(1)}}.acc--leaving{animation:m-drop .6s ease forwards}@keyframes m-drop{0%{opacity:1;transform:translate(0) rotate(0)}to{opacity:0;transform:translate(-10px,5px) rotate(-20deg)}}.mascot__fig.down .leg-l,.mascot__fig.up .leg-l{animation:m-legp .64s ease-in-out infinite}.mascot__fig.down .leg-r,.mascot__fig.up .leg-r{animation:m-legp2 .64s ease-in-out infinite}.mascot__fig.down .arm-l,.mascot__fig.up .arm-l{animation:m-armp .64s ease-in-out infinite}.mascot__fig.down .arm-r,.mascot__fig.up .arm-r{animation:m-armp2 .64s ease-in-out infinite}@keyframes m-legp{0%,to{transform:rotate(16deg)}50%{transform:rotate(-16deg)}}@keyframes m-legp2{0%,to{transform:rotate(-16deg)}50%{transform:rotate(16deg)}}@keyframes m-armp{0%,to{transform:rotate(-40deg)}50%{transform:rotate(28deg)}}@keyframes m-armp2{0%,to{transform:rotate(40deg)}50%{transform:rotate(-28deg)}}.mascot__fig.climb .arm-l{animation:h-reach .48s ease}.mascot__fig.climb .leg-l{animation:h-tuckL .48s ease}.mascot__fig.climb .leg-r{animation:h-tuckR .48s ease}.mascot__fig.leap .arm-l{animation:h-balL .48s ease}.mascot__fig.leap .leg-l{animation:h-tuckL .48s ease}.mascot__fig.leap .leg-r{animation:h-tuckR .48s ease}@keyframes h-reach{0%{transform:rotate(6deg)}30%{transform:rotate(120deg)}to{transform:rotate(6deg)}}@keyframes h-balL{0%,to{transform:rotate(0)}45%{transform:rotate(70deg)}}@keyframes h-tuckL{0%,to{transform:rotate(0)}45%{transform:rotate(26deg)}}@keyframes h-tuckR{0%,to{transform:rotate(0)}45%{transform:rotate(-26deg)}}.mascot__fig.tired .mascot__svg{animation:m-pant .34s ease-in-out infinite}@keyframes m-pant{0%,to{transform:translateY(0) scaleY(1)}50%{transform:translateY(1.5px) scaleY(1.06)}}.mascot__fig.attn .mascot__svg{animation:m-hop .55s ease-in-out 3}@keyframes m-hop{0%,to{transform:translateY(0)}45%{transform:translateY(-14px)}}.mascot__fig.attn .arm-l{animation:m-waveL .55s ease-in-out 3}@keyframes m-waveL{0%,to{transform:rotate(92deg)}50%{transform:rotate(118deg)}}.mascot__fig.greet .arm-l{animation:m-waveL .5s ease-in-out 3}.mascot__fig.attn .leg-l{animation:m-jl .55s ease-in-out 3}.mascot__fig.attn .leg-r{animation:m-jr .55s ease-in-out 3}@keyframes m-jl{0%,to{transform:rotate(0)}45%{transform:rotate(11deg)}}@keyframes m-jr{0%,to{transform:rotate(0)}45%{transform:rotate(-11deg)}}.mascot__fig.wave .arm-r{animation:m-wavearm .5s ease-in-out 2}.acc-holder.trick{animation:m-trick 1s ease;transform-origin:50% 50%}@keyframes m-trick{0%{transform:translateY(0) rotate(0)}40%{transform:translateY(-18px) rotate(200deg)}to{transform:translateY(0) rotate(1turn)}}.mascot__fig.trick .arm-r{animation:m-tossarm 1s ease}@keyframes m-tossarm{0%,to{transform:rotate(0)}45%{transform:rotate(-55deg)}}.mascot.emote-flip .mascot__svg{animation:m-flip .9s ease-in-out}.mascot.emote-backflip .mascot__svg{animation:m-backflip .9s ease-in-out}.mascot.emote-spin .mascot__svg{animation:m-spin .9s ease-in-out}.mascot.emote-spinjump .mascot__svg{animation:m-spinjump .9s ease-in-out}.mascot.emote-jump .mascot__svg{animation:m-jump .9s ease-in-out}.mascot.emote-squat .mascot__svg{animation:m-squat .9s ease-in-out}.mascot.emote-bounce .mascot__svg{animation:m-bounce .9s ease-in-out}.mascot.emote-shake .mascot__svg{animation:m-shake .9s ease-in-out}.mascot.emote-bow .mascot__svg{animation:m-bow .9s ease-in-out}.mascot.emote-moonwalk .mascot__svg{animation:m-moonwalk .9s ease-in-out}.mascot.emote-wave .arm-l{animation:m-wavearmL .9s ease-in-out}@keyframes m-wavearmL{0%,to{transform:rotate(0)}25%{transform:rotate(45deg)}50%{transform:rotate(25deg)}75%{transform:rotate(45deg)}}.mascot.emote-kick .leg-r{animation:m-kickleg .9s ease-in-out}.mascot.emote-flex .arm-l{animation:m-flexl .9s ease-in-out}.mascot.emote-flex .arm-r{animation:m-flexr .9s ease-in-out}@keyframes m-flip{to{transform:rotate(1turn)}}@keyframes m-backflip{to{transform:rotate(-1turn)}}@keyframes m-spin{0%{transform:scaleX(1)}50%{transform:scaleX(-1)}to{transform:scaleX(1)}}@keyframes m-spinjump{0%{transform:translateY(0) rotate(0)}40%{transform:translateY(-18px) rotate(180deg)}to{transform:translateY(0) rotate(1turn)}}@keyframes m-jump{0%,to{transform:translateY(0)}30%{transform:translateY(-16px)}60%{transform:translateY(0)}78%{transform:translateY(-6px)}}@keyframes m-squat{0%,to{transform:translateY(0) scaleY(1)}30%{transform:translateY(6px) scaleY(.7)}60%{transform:translateY(0) scaleY(1)}80%{transform:translateY(4px) scaleY(.8)}}@keyframes m-bounce{0%,40%,80%,to{transform:translateY(0)}20%{transform:translateY(-8px)}60%{transform:translateY(-5px)}}@keyframes m-shake{0%,to{transform:rotate(0)}20%{transform:rotate(9deg)}40%{transform:rotate(-9deg)}60%{transform:rotate(7deg)}80%{transform:rotate(-5deg)}}@keyframes m-bow{0%,to{transform:rotate(0)}40%,60%{transform:rotate(20deg)}}@keyframes m-moonwalk{0%,to{transform:translateX(0)}25%{transform:translateX(-12px)}75%{transform:translateX(12px)}}@keyframes m-wavearm{0%,to{transform:rotate(0)}25%{transform:rotate(-45deg)}50%{transform:rotate(-25deg)}75%{transform:rotate(-45deg)}}@keyframes m-kickleg{0%,to{transform:rotate(0)}40%,60%{transform:rotate(-55deg)}}@keyframes m-flexl{0%,to{transform:rotate(0)}40%,60%{transform:rotate(72deg)}}@keyframes m-flexr{0%,to{transform:rotate(0)}40%,60%{transform:rotate(-72deg)}}@media (max-width:560px){.mascot{bottom:auto;right:2px;top:50%;transform:translateY(-50%) scale(.66);transform-origin:center right}}@media (prefers-reduced-motion:reduce){.acc-holder,.arm,.leg,.mascot__fig,.mascot__svg{animation:none!important}}.section__head{align-items:baseline;border-bottom:1px solid #1c1a1621;border-bottom:1px solid var(--border);display:flex;gap:16px;margin-bottom:20px;padding-bottom:20px}.section__icon{align-self:center;flex:none;height:26px;width:26px}.section__icon,.section__index{color:#b8461e;color:var(--accent)}.section__index{font-family:JetBrains Mono,monospace;font-size:.78rem;letter-spacing:.1em}.section__title{font-family:Fraunces,Georgia,serif;font-optical-sizing:auto;font-size:clamp(1.9rem,4.5vw,2.9rem);font-weight:500;letter-spacing:-.02em;line-height:1.05;margin:0}.subsection-title{color:#9a9284;color:var(--text-faint);font-family:JetBrains Mono,monospace;font-size:.76rem;font-weight:500;letter-spacing:.16em;margin:52px 0 22px;text-transform:uppercase}[data-reveal]{filter:blur(10px);opacity:0;transform:translateY(24px);transition:opacity .85s ease,transform .85s cubic-bezier(.16,.8,.24,1),filter .85s ease}[data-reveal].is-visible{filter:none;opacity:1;transform:none}.proj-grid [data-reveal].is-visible,.side-grid [data-reveal].is-visible,.skills-grid [data-reveal].is-visible{transition-delay:0ms;transition-delay:calc(var(--i, 0)*90ms)}.proj-grid>:first-child{--i:0}.proj-grid>:nth-child(2){--i:1}.proj-grid>:nth-child(3){--i:2}.proj-grid>:nth-child(4){--i:3}.side-grid>:first-child{--i:0}.side-grid>:nth-child(2){--i:1}.side-grid>:nth-child(3){--i:2}.skills-grid>:first-child{--i:0}.skills-grid>:nth-child(2){--i:1}.skills-grid>:nth-child(3){--i:2}.skills-grid>:nth-child(4){--i:0}.skills-grid>:nth-child(5){--i:1}.skills-grid>:nth-child(6){--i:2}@media (prefers-reduced-motion:reduce){[data-reveal]{filter:none;opacity:1;transform:none;transition:none}html{scroll-behavior:auto}.ticker__track{animation:none!important}}.btn{align-items:center;border:1px solid #0000;border-radius:40px;cursor:pointer;display:inline-flex;font-family:Inter,sans-serif;font-size:.92rem;font-weight:600;gap:10px;overflow:hidden;padding:13px 26px;position:relative;transition:transform .25s ease,box-shadow .25s ease,color .25s ease}.btn i{font-size:.82em;transition:transform .25s ease}.btn--primary{background:#b8461e;background:var(--accent);color:#fff}.btn--primary:hover{box-shadow:0 12px 26px -12px #b8461e;box-shadow:0 12px 26px -12px var(--accent);transform:translateY(-2px)}.btn--primary:hover i{transform:translateX(4px)}.btn--ghost{background:#0000;border-color:#1c1a1642;border-color:var(--border-strong);color:#1c1a16;color:var(--text)}.btn--ghost:hover{background:#1c1a16;background:var(--text);border-color:#1c1a16;border-color:var(--text);color:#f4f0e8;color:var(--bg);transform:translateY(-2px)}.btn:disabled{cursor:default;opacity:.55;transform:none}.icon-btn{background:#0000;border:1px solid #1c1a1621;border:1px solid var(--border);border-radius:2px;color:#1c1a16;color:var(--text);cursor:pointer;display:grid;height:40px;place-items:center;transition:background .2s ease,border-color .2s ease;width:40px}.icon-btn:hover{background:#f0ebe0;background:var(--surface-2);border-color:#1c1a1642;border-color:var(--border-strong)}.nav{border-bottom:1px solid #0000;inset:0 0 auto 0;position:fixed;transition:background .3s ease,border-color .3s ease,-webkit-backdrop-filter .3s ease;transition:background .3s ease,border-color .3s ease,backdrop-filter .3s ease;transition:background .3s ease,border-color .3s ease,backdrop-filter .3s ease,-webkit-backdrop-filter .3s ease;z-index:50}.nav--scrolled{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:color-mix(in srgb,#f4f0e8 82%,#0000);background:color-mix(in srgb,var(--bg) 82%,#0000);border-bottom-color:#1c1a1621;border-bottom-color:var(--border)}.nav__inner{gap:16px;justify-content:space-between;margin:0 auto;max-width:none;padding:16px clamp(24px,5vw,96px)}.nav__brand,.nav__inner{align-items:center;display:flex}.nav__brand{gap:12px}.nav__brand-mark{background:#1c1a16;background:var(--text);border-radius:2px;color:#f4f0e8;color:var(--bg);display:grid;font-family:Fraunces,serif;font-size:.9rem;font-weight:600;height:36px;place-items:center;width:36px}.nav__brand-name{font-family:Fraunces,serif;font-size:1.02rem;font-weight:500;letter-spacing:-.01em}.nav__links{align-items:center;display:flex;font-size:.9rem;gap:30px}.nav__links a{color:#6a6255;color:var(--text-dim);position:relative;transition:color .3s ease,background .3s cubic-bezier(.16,.8,.24,1)}.nav__links a:not(.nav__resume){border-radius:40px;padding:8px 16px}.nav__links a:not(.nav__resume):hover{background:color-mix(in srgb,#b8461e 13%,#0000);background:color-mix(in srgb,var(--accent) 13%,#0000);color:#1c1a16;color:var(--text)}.nav__resume{border:1px solid #1c1a1642;border:1px solid var(--border-strong);border-radius:40px;color:#1c1a16!important;color:var(--text)!important;padding:8px 18px;transition:background .3s ease,color .3s ease}.nav__resume:hover{background:#1c1a16;background:var(--text);color:#f4f0e8!important;color:var(--bg)!important}.nav__actions{display:flex;gap:10px}.nav__burger{display:none}.nav__progress{background:#b8461e;background:var(--accent);height:2px;transform:scaleX(0);transform-origin:left;transition:transform .1s linear}.hero{margin:0 auto;max-width:none;padding:148px clamp(24px,5vw,96px) 0;position:relative}.hero__inner{width:100%}.hero__grid{grid-gap:56px;align-items:center;display:grid;gap:56px;grid-template-columns:1.55fr .85fr}.hero__eyebrow{align-items:center;color:#6a6255;color:var(--text-dim);display:inline-flex;font-family:JetBrains Mono,monospace;font-size:.76rem;gap:10px;letter-spacing:.12em;text-transform:uppercase}.hero__eyebrow .dot{animation:pulse 2.4s ease-in-out infinite;background:#b8461e;background:var(--accent);border-radius:50%;height:7px;width:7px}@keyframes pulse{0%,to{box-shadow:0 0 0 0 #b8461e17;box-shadow:0 0 0 0 var(--accent-soft)}50%{box-shadow:0 0 0 6px #0000}}.hero__title{font-family:Fraunces,Georgia,serif;font-optical-sizing:auto;font-size:clamp(3.2rem,9vw,6rem);font-weight:500;letter-spacing:-.03em;line-height:.98;margin:22px 0 18px}.hero__title-em{color:#b8461e;color:var(--accent);font-style:italic;font-weight:400}.hero__role{display:flex;flex-direction:column;font-family:Inter,sans-serif;font-size:1.02rem;font-weight:600;gap:4px;margin:0 0 26px}.hero__role-sub{font-size:.95rem;font-weight:400}.hero__role-sub,.hero__summary{color:#6a6255;color:var(--text-dim)}.hero__summary{font-size:1.06rem;margin:0 0 34px;max-width:620px}.hero__cta{align-items:center;display:flex;flex-wrap:wrap;gap:14px}.hero__social{display:flex;gap:4px;margin-left:8px}.hero__social a{border-radius:2px;color:#6a6255;color:var(--text-dim);display:grid;font-size:1.1rem;height:42px;place-items:center;transition:color .2s ease,transform .2s ease;width:42px}.hero__social a:hover{color:#b8461e;color:var(--accent);transform:translateY(-3px)}.hero__photo{justify-self:center;position:relative}.hero__photo-frame{aspect-ratio:4/5;background:#ece6da;background:var(--bg-2);border:1px solid #1c1a1642;border:1px solid var(--border-strong);border-radius:2px;overflow:hidden;position:relative;width:min(300px,66vw)}.hero__photo-vtext{color:#b8461e;color:var(--accent);font-family:Bebas Neue,Fraunces,sans-serif;font-size:1.75rem;font-weight:400;letter-spacing:.08em;line-height:1;pointer-events:none;position:absolute;right:-46px;text-transform:uppercase;top:-6px;white-space:nowrap;writing-mode:vertical-rl}.hero__photo:before{border:1px solid #b8461e;border:1px solid var(--accent);border-radius:2px;content:"";inset:16px -16px -16px 16px;position:absolute;transition:inset .4s cubic-bezier(.16,.8,.24,1);z-index:-1}.hero__photo:hover:before{inset:10px -20px -20px 10px}.hero__photo-frame img{background:#0000;filter:grayscale(1) brightness(1.12) contrast(1.05) sepia(.18);height:100%;object-fit:cover;object-position:50% 20%;position:relative;transition:filter .6s ease,transform .7s cubic-bezier(.16,.8,.24,1);width:100%;z-index:1}.hero__photo:hover .hero__photo-frame img{filter:grayscale(0) brightness(1.14) contrast(1.03) saturate(1.02);transform:scale(1.04)}.hero__photo-cap{align-items:baseline;color:#9a9284;color:var(--text-faint);display:flex;font-family:JetBrains Mono,monospace;font-size:.72rem;gap:10px;letter-spacing:.04em;margin-top:18px}.hero__photo-num{color:#b8461e;color:var(--accent)}.hero__stats{grid-gap:20px;border-top:1px solid #1c1a1621;border-top:1px solid var(--border);display:grid;gap:20px;grid-template-columns:repeat(4,1fr);margin-top:58px;padding-top:30px}.stat__value{display:block;font-family:Fraunces,Georgia,serif;font-optical-sizing:auto;font-size:clamp(2rem,5vw,3rem);font-weight:500;letter-spacing:-.02em;line-height:1}.stat__label{color:#9a9284;color:var(--text-faint);display:block;font-size:.8rem;margin-top:8px}.ticker{border-bottom:1px solid #1c1a1621;border-bottom:1px solid var(--border);border-top:1px solid #1c1a1621;border-top:1px solid var(--border);margin-top:64px;-webkit-mask-image:linear-gradient(90deg,#0000,#000 8%,#000 92%,#0000);mask-image:linear-gradient(90deg,#0000,#000 8%,#000 92%,#0000);overflow:hidden;padding:18px 0;white-space:nowrap}.ticker__track{align-items:center;animation:ticker 42s linear infinite;display:inline-flex}.ticker:hover .ticker__track{animation-play-state:paused}.ticker__item{align-items:center;color:#6a6255;color:var(--text-dim);display:inline-flex;font-family:Fraunces,serif;font-size:1.15rem;font-style:italic;font-weight:400;padding:0 4px}.ticker__sep{color:#b8461e;color:var(--accent);font-size:.7rem;font-style:normal;margin:0 26px}@keyframes ticker{to{transform:translateX(-50%)}}.about{grid-gap:52px;display:grid;gap:52px;grid-template-columns:1.4fr 1fr}.about__body p{color:#6a6255;color:var(--text-dim);font-size:1.06rem;margin:0 0 20px}.about__body p:first-child{color:#1c1a16;color:var(--text);font-family:Fraunces,Georgia,serif;font-size:1.5rem;font-weight:400;letter-spacing:-.01em;line-height:1.4}.about__highlights{align-self:start;list-style:none;margin:0;padding:0}.about__highlights li{align-items:baseline;border-bottom:1px solid #1c1a1621;border-bottom:1px solid var(--border);counter-increment:hl;display:flex;font-size:.98rem;gap:14px;padding:15px 0}.about__highlights li:first-child{border-top:1px solid #1c1a1621;border-top:1px solid var(--border)}.about__highlights i{display:none}.about__highlights li:before{color:#b8461e;color:var(--accent);content:"0" counter(hl);font-family:JetBrains Mono,monospace;font-size:.72rem}.about__highlights{counter-reset:hl}.timeline{position:relative}.tl-item{grid-gap:12px;display:grid;gap:12px;grid-template-columns:34px 1fr}.tl-marker{display:flex;justify-content:center;position:relative}.tl-marker:before{background:#1c1a1642;background:var(--border-strong);bottom:-10px;content:"";position:absolute;top:10px;width:1px}.tl-item:last-child .tl-marker:before{display:none}.tl-dot{background:#f4f0e8;background:var(--bg);border:1.5px solid #9a9284;border:1.5px solid var(--text-faint);border-radius:50%;height:11px;margin-top:8px;width:11px;z-index:1}.tl-dot--live{background:#b8461e;background:var(--accent);border-color:#b8461e;border-color:var(--accent)}.tl-card{border-bottom:1px solid #1c1a1621;border-bottom:1px solid var(--border);margin-bottom:34px;padding:4px 0 30px;transition:border-color .25s ease}.tl-item:last-child .tl-card{border-bottom:none}.tl-card__head{display:flex;flex-wrap:wrap;gap:8px;justify-content:space-between;margin-bottom:16px}.tl-role{font-family:Fraunces,Georgia,serif;font-size:1.35rem;font-weight:500;letter-spacing:-.01em;margin:0}.tl-company{color:#b8461e;color:var(--accent);font-size:.9rem;margin:4px 0 0}.tl-period{color:#9a9284;color:var(--text-faint);font-family:JetBrains Mono,monospace;font-size:.76rem;white-space:nowrap}.tl-points{color:#6a6255;color:var(--text-dim);font-size:.97rem;margin:0;max-width:900px;padding-left:20px}.tl-points li{margin-bottom:10px;padding-left:4px}.tl-points li::marker{color:#b8461e;color:var(--accent);content:"— "}.tl-awards{color:#6a6255;color:var(--text-dim);font-family:JetBrains Mono,monospace;font-size:.85rem;letter-spacing:.02em;margin:16px 0 0}.tl-awards i{color:#b8461e;color:var(--accent);margin-right:8px}.proj-grid{grid-gap:1px;background:#1c1a1621;background:var(--border);border:1px solid #1c1a1621;border:1px solid var(--border);display:grid;gap:1px;grid-template-columns:repeat(2,1fr)}.proj-card{background:#f4f0e8;background:var(--bg);padding:32px;position:relative;transition:background .3s ease}.proj-card:hover{background:#faf7f1;background:var(--surface)}.proj-card__tag{color:#b8461e;color:var(--accent);font-family:JetBrains Mono,monospace;font-size:.68rem;letter-spacing:.08em;text-transform:uppercase}.proj-card__name{font-family:Fraunces,Georgia,serif;font-size:1.7rem;font-weight:500;letter-spacing:-.02em;margin:14px 0 2px;transition:color .25s ease}.proj-card:hover .proj-card__name{color:#b8461e;color:var(--accent)}.proj-card__sub{font-family:Fraunces,serif;font-size:.9rem;font-style:italic;margin:0 0 16px}.proj-card__blurb,.proj-card__sub{color:#6a6255;color:var(--text-dim)}.proj-card__blurb{font-size:.94rem;margin:0 0 20px}.proj-card__metrics{border-bottom:1px solid #1c1a1621;border-bottom:1px solid var(--border);border-top:1px solid #1c1a1621;border-top:1px solid var(--border);display:flex;flex-wrap:wrap;gap:8px 18px;margin-bottom:20px;padding:16px 0}.metric-pill{color:#1c1a16;color:var(--text);font-family:JetBrains Mono,monospace;font-size:.74rem}.metric-pill:before{color:#b8461e;color:var(--accent);content:"▸ "}.proj-card__stack{display:flex;flex-wrap:wrap;gap:7px}.stack-chip{border:1px solid #1c1a1621;border:1px solid var(--border);border-radius:2px;color:#6a6255;color:var(--text-dim);font-family:JetBrains Mono,monospace;font-size:.72rem;padding:4px 10px;transition:border-color .2s ease,color .2s ease}.stack-chip:hover{border-color:#b8461e;border-color:var(--accent);color:#b8461e;color:var(--accent)}.side-grid{grid-gap:24px;display:grid;gap:24px;grid-template-columns:repeat(3,1fr)}.side-card{border-top:2px solid #1c1a16;border-top:2px solid var(--text);padding:26px 0 0;transition:border-color .25s ease}.side-card--link:hover{border-color:#b8461e;border-color:var(--accent)}.side-card__head{align-items:center;display:flex;justify-content:space-between;margin-bottom:12px}.side-card__head h4{font-family:Fraunces,Georgia,serif;font-size:1.25rem;font-weight:500;margin:0}.side-card__head i{color:#9a9284;color:var(--text-faint);font-size:.82rem;transition:transform .25s ease,color .25s ease}.side-card--link:hover .side-card__head i{color:#b8461e;color:var(--accent);transform:translate(3px,-3px)}.side-card__blurb{color:#6a6255;color:var(--text-dim);font-size:.9rem;margin:0 0 18px}.skills-grid{grid-gap:32px 40px;display:grid;gap:32px 40px;grid-template-columns:repeat(3,1fr)}.skill-card{border-top:1px solid #1c1a1642;border-top:1px solid var(--border-strong);padding-top:22px}.skill-card__head{align-items:center;display:flex;gap:12px;margin-bottom:18px}.skill-card__head i{color:#b8461e;color:var(--accent);font-size:.95rem}.skill-card__head h3{font-family:Fraunces,Georgia,serif;font-size:1.15rem;font-weight:500;margin:0}.skill-card__items{display:flex;flex-wrap:wrap;gap:7px}.hobby-grid{grid-gap:24px;display:grid;gap:24px;grid-template-columns:repeat(2,1fr)}.hobby-grid [data-reveal].is-visible{transition-delay:0ms;transition-delay:calc(var(--i, 0)*90ms)}.hobby-grid>:first-child{--i:0}.hobby-grid>:nth-child(2){--i:1}.hobby-grid>:nth-child(3){--i:2}.hobby-grid>:nth-child(4){--i:3}.hobby{grid-column:span 1;margin:0}.hobby--wide{grid-column:span 2}.hobby__media{aspect-ratio:4/3;background:#ece6da;background:var(--bg-2);border:1px solid #1c1a1621;border:1px solid var(--border);border-radius:2px;overflow:hidden;position:relative}.hobby--wide .hobby__media{aspect-ratio:8/3}.hobby__media img{filter:grayscale(1) sepia(.14) brightness(1.04);height:100%;object-fit:cover;transition:filter .6s ease,transform .8s cubic-bezier(.16,.8,.24,1);width:100%}.hobby:hover .hobby__media img{filter:grayscale(0) saturate(1.03);transform:scale(1.05)}.hobby__placeholder{align-items:center;background:repeating-linear-gradient(45deg,#0000,#0000 9px,#f0ebe0 0,#f0ebe0 18px);background:repeating-linear-gradient(45deg,#0000,#0000 9px,var(--surface-2) 9px,var(--surface-2) 18px);color:#9a9284;color:var(--text-faint);display:flex;flex-direction:column;font-family:JetBrains Mono,monospace;font-size:.72rem;gap:8px;inset:0;justify-content:center;letter-spacing:.1em;position:absolute;text-transform:uppercase}.hobby__placeholder i{color:#1c1a1642;color:var(--border-strong);font-size:1.4rem}.hobby--link{cursor:pointer}.hobby__open{align-items:center;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:color-mix(in srgb,#faf7f1 78%,#0000);background:color-mix(in srgb,var(--surface) 78%,#0000);border:1px solid #1c1a1642;border:1px solid var(--border-strong);border-radius:2px;bottom:12px;color:#1c1a16;color:var(--text);display:inline-flex;font-family:JetBrains Mono,monospace;font-size:.72rem;gap:7px;opacity:0;padding:7px 12px;position:absolute;right:12px;transform:translateY(6px);transition:opacity .3s ease,transform .3s ease}.hobby__open i:first-child{color:#b8461e;color:var(--accent)}.hobby--link:hover .hobby__open{opacity:1;transform:none}.hobby__cap{padding-top:14px}.hobby__cap h3{font-family:Fraunces,Georgia,serif;font-size:1.2rem;font-weight:500;letter-spacing:-.01em;margin:0 0 2px}.hobby__cap p{color:#6a6255;color:var(--text-dim);font-size:.88rem;margin:0}.pub-grid{grid-gap:52px;display:grid;gap:52px;grid-template-columns:1.4fr 1fr}.pub-col .subsection-title{margin-top:0}.pub-item{border-bottom:1px solid #1c1a1621;border-bottom:1px solid var(--border);display:flex;gap:16px;padding:18px 0}.pub-item:first-of-type{border-top:1px solid #1c1a1621;border-top:1px solid var(--border)}.pub-item i{color:#b8461e;color:var(--accent);font-size:.9rem;margin-top:4px}.pub-item__title{font-family:Fraunces,Georgia,serif;font-size:1.08rem;font-weight:500;margin:0 0 4px}.pub-item__venue{color:#9a9284;color:var(--text-faint);font-family:JetBrains Mono,monospace;font-size:.84rem;margin:0}.contact{grid-gap:56px;align-items:start;display:grid;gap:56px;grid-template-columns:1fr 1.2fr}.contact__lead{color:#1c1a16;color:var(--text);font-family:Fraunces,Georgia,serif;font-size:1.6rem;font-weight:400;letter-spacing:-.01em;line-height:1.35;margin:0 0 30px}.contact__email{align-items:center;color:#6a6255;color:var(--text-dim);display:inline-flex;font-family:JetBrains Mono,monospace;font-size:.92rem;gap:10px;position:relative}.contact__email:after{background:#b8461e;background:var(--accent);bottom:-3px;content:"";height:1px;left:0;position:absolute;transform:scaleX(0);transform-origin:left;transition:transform .3s ease;width:100%}.contact__email:hover{color:#b8461e;color:var(--accent)}.contact__email:hover:after{transform:scaleX(1)}.contact__social{display:flex;gap:8px;margin-top:30px}.contact__social a{border:1px solid #1c1a1621;border:1px solid var(--border);border-radius:2px;color:#6a6255;color:var(--text-dim);display:grid;font-size:1.15rem;height:46px;place-items:center;transition:all .2s ease;width:46px}.contact__social a:hover{background:#1c1a16;background:var(--text);border-color:#1c1a16;border-color:var(--text);color:#f4f0e8;color:var(--bg);transform:translateY(-3px)}.contact__form{background:#faf7f1;background:var(--surface);border:1px solid #1c1a1642;border:1px solid var(--border-strong);border-radius:2px;padding:34px}.field{margin-bottom:16px}.field input,.field textarea{background:#0000;border:none;border-bottom:1px solid #1c1a1642;border-bottom:1px solid var(--border-strong);color:#1c1a16;color:var(--text);font-family:inherit;font-size:.98rem;padding:14px 0;resize:vertical;transition:border-color .2s ease;width:100%}.field input::placeholder,.field textarea::placeholder{color:#9a9284;color:var(--text-faint)}.field input:focus,.field textarea:focus{border-color:#b8461e;border-color:var(--accent);outline:none}.contact__form .btn{justify-content:center;margin-top:10px;width:100%}.form-note{font-family:JetBrains Mono,monospace;font-size:.86rem;margin:14px 0 0;text-align:center}.form-note--ok{color:#2f7d4f}.form-note--err{color:#b8461e;color:var(--accent)}.footer{border-top:1px solid #1c1a1621;border-top:1px solid var(--border);color:#9a9284;color:var(--text-faint);display:flex;font-family:JetBrains Mono,monospace;font-size:.82rem;justify-content:space-between;margin:72px 0 0;max-width:none;padding-top:28px}@media (max-width:860px){.about,.contact,.pub-grid{gap:32px;grid-template-columns:1fr}.proj-grid,.side-grid{grid-template-columns:1fr}.hobby-grid,.skills-grid{grid-template-columns:1fr 1fr}.hobby--wide{grid-column:span 2}.hobby--wide .hobby__media{aspect-ratio:16/7}.hero{padding-top:92px}.hero__grid{gap:24px;grid-template-columns:1fr}.hero__photo{grid-column-gap:4px;align-items:start;column-gap:4px;display:grid;grid-template-columns:auto max-content;justify-content:center;justify-self:center;order:-1}.hero__photo-frame{grid-column:1;grid-row:1;width:min(230px,58vw)}.hero__photo-vtext{font-size:1.35rem;grid-column:2;grid-row:1;letter-spacing:.06em;padding-top:2px;position:static}.hero__photo:before{inset:12px 18px -12px 12px}.hero__photo-cap{grid-column:1/-1;margin-top:12px}.hero__photo-frame img,.hobby__media img{filter:grayscale(0) saturate(1.04) contrast(1.02)}.hero__stats{gap:28px 20px;grid-template-columns:repeat(2,1fr)}.nav__links{align-items:flex-start;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:color-mix(in srgb,#f4f0e8 97%,#0000);background:color-mix(in srgb,var(--bg) 97%,#0000);border:1px solid #1c1a1621;border:1px solid var(--border);box-shadow:0 24px 50px -28px #3c2d1959;box-shadow:var(--shadow);flex-direction:column;gap:2px;left:16px;opacity:0;padding:14px;pointer-events:none;position:fixed;right:16px;top:70px;transform:translateY(-12px);transition:all .22s ease}.nav__links a{padding:12px;width:100%}.nav__links.is-open{opacity:1;pointer-events:auto;transform:none}.nav__burger{display:grid}}@media (max-width:480px){.section{padding:20px 20px 0}.hero{padding:92px 20px 0}.hero__grid{gap:18px}.hero__photo{column-gap:3px}.hero__photo-frame{width:min(230px,60vw)}.hero__photo-vtext{font-size:1.24rem}.hero__photo:before{inset:10px 16px -10px 10px}.hobby-grid,.skills-grid{grid-template-columns:1fr}.hobby--wide{grid-column:span 1}.hobby--wide .hobby__media{aspect-ratio:4/3}.proj-card{padding:26px 22px}.nav__brand-name{display:none}.footer{flex-direction:column;gap:8px}}
/*# sourceMappingURL=main.533e109d.css.map*/