:root{--font-sans:"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;--font-mono:"JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--font-display:"Instrument Serif", Georgia, "Times New Roman", serif;--t-2xs:.75rem;--t-xs:.8125rem;--t-sm:.875rem;--t-base:1rem;--t-md:1.125rem;--t-lg:1.375rem;--t-xl:1.75rem;--t-2xl:clamp(2.25rem, 1.4rem + 3.4vw, 4rem);--t-3xl:clamp(2rem, 1.3rem + 2.6vw, 3.25rem);--w-normal:400;--w-medium:500;--w-semi:600;--w-bold:700;--gap-1:.375rem;--gap-2:.75rem;--gap-3:1.25rem;--gap-4:2rem;--gap-5:3.5rem;--gap-6:6.5rem;--radius:16px;--radius-sm:10px;--radius-pill:999px;--maxw:74rem;--pad:clamp(1.25rem, 4vw, 3rem);--ease:cubic-bezier(.22, .61, .36, 1);--ease-out:cubic-bezier(.16, 1, .3, 1);--dur:.22s;--dur-slow:.55s}:root,[data-theme=dark]{--bg:#0a0a0a;--bg-soft:#131315;--surface:#ffffff09;--surface-hover:#fff1;--line:#ffffff1a;--line-soft:#ffffff0f;--line-strong:#626360;--text:#f2f2ef;--text-mid:#b9bab4;--text-dim:#9b9c96;--accent:#d8ff3e;--accent-fill:#d8ff3e;--accent-line:#d8ff3e;--accent-ink:#0a0a0a;--accent-soft:#d8ff3e24;--glow:radial-gradient(58% 46% at 50% -6%, #d8ff3e12 0%, transparent 72%);--shadow:0 1px 2px #00000080, 0 12px 34px #0000006b;--shadow-lift:0 2px 6px #00000073, 0 22px 52px #00000080}[data-theme=light]{--bg:#fafaf7;--bg-soft:#fff;--surface:#0f110c07;--surface-hover:#0f110c0e;--line:#0f110c21;--line-soft:#0f110c14;--line-strong:#86877f;--text:#14140f;--text-mid:#4c4d46;--text-dim:#66675f;--accent:#4d6b00;--accent-fill:#d8ff3e;--accent-line:#4d6b00;--accent-ink:#0a0a0a;--accent-soft:#4d6b0021;--glow:radial-gradient(58% 46% at 50% -6%, #4d6b000f 0%, transparent 72%);--shadow:0 1px 2px #0f110c0d, 0 12px 32px #0f110c12;--shadow-lift:0 2px 6px #0f110c12, 0 22px 48px #0f110c1a}*,:before,:after{box-sizing:border-box}*{margin:0;padding:0}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}body{background:var(--bg);color:var(--text);font-family:var(--font-sans);font-size:var(--t-base);font-weight:var(--w-normal);letter-spacing:-.006em;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transition:background-color var(--dur-slow) var(--ease), color var(--dur-slow) var(--ease);line-height:1.65;overflow-x:hidden}body:before{content:"";background:var(--glow);pointer-events:none;z-index:-1;height:70vh;transition:background var(--dur-slow) var(--ease);position:fixed;inset:0 0 auto}h1,h2,h3,h4{font-weight:var(--w-semi);letter-spacing:-.022em;text-wrap:balance;line-height:1.18}img{max-width:100%;height:auto;display:block}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:none}ul,ol{list-style:none}::selection{background:var(--accent-soft);color:var(--text)}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:6px}::-webkit-scrollbar{width:11px;height:11px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--line-strong);border-radius:var(--radius-pill);border:3px solid var(--bg)}::-webkit-scrollbar-thumb:hover{background:var(--text-dim)}.mono{font-family:var(--font-mono);font-size:var(--t-2xs);font-weight:var(--w-medium);letter-spacing:.015em}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.skip-link{z-index:200;padding:var(--gap-2) var(--gap-3);font-weight:var(--w-medium);background:var(--bg-soft);color:var(--text);border:1px solid var(--line-strong);border-radius:var(--radius-sm);position:absolute;top:0;left:-9999px}.skip-link:focus{left:var(--gap-3);top:var(--gap-3)}.label{align-items:center;gap:var(--gap-2);margin-bottom:var(--gap-4);font-family:var(--font-mono);font-size:var(--t-2xs);font-weight:var(--w-medium);color:var(--text-dim);text-transform:uppercase;letter-spacing:.11em;display:flex}.label:before{content:"";background:var(--accent);flex:none;width:18px;height:2px}.label:after{content:"";background:var(--line-soft);flex:1;height:1px}.ulink{color:var(--text-mid);transition:color var(--dur) var(--ease);position:relative}.ulink:after{content:"";transform-origin:100%;width:100%;height:1px;transition:transform var(--dur) var(--ease);background:currentColor;position:absolute;bottom:-2px;left:0;transform:scaleX(0)}.ulink:hover,.ulink:focus-visible{color:var(--text)}.ulink:hover:after,.ulink:focus-visible:after{transform-origin:0;transform:scaleX(1)}.progress{z-index:60;transform-origin:0;height:2px;transform:scaleX(var(--p,0));background:var(--accent);will-change:transform;position:fixed;top:0;left:0;right:0}.reveal{opacity:0;transition:opacity var(--dur-slow) var(--ease-out) var(--delay,0s), translate var(--dur-slow) var(--ease-out) var(--delay,0s);translate:0 14px}.reveal.is-visible{opacity:1;translate:none}.word{opacity:0;animation:word-in .7s var(--ease-out) forwards;animation-delay:var(--delay,0s);display:inline-block;translate:0 .5em}@keyframes word-in{to{opacity:1;translate:none}}@keyframes ping{0%{box-shadow:0 0 0 0 color-mix(in srgb, var(--accent) 55%, transparent)}70%{box-shadow:0 0 0 8px #0000}to{box-shadow:0 0 #0000}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}.reveal,.word{opacity:1;animation:none;translate:none}.progress{display:none}}.shell{z-index:1;width:100%;max-width:var(--maxw);padding:0 var(--pad) var(--gap-6);margin:0 auto;position:relative}.section{margin-top:var(--gap-6)}.bar{z-index:50;background:color-mix(in srgb, var(--bg) 80%, transparent);-webkit-backdrop-filter:saturate(170%)blur(14px);transition:border-color var(--dur) var(--ease);border-bottom:1px solid #0000;position:sticky;top:0}.bar.is-stuck{border-bottom-color:var(--line-soft)}.bar__inner{justify-content:space-between;align-items:center;gap:var(--gap-3);max-width:var(--maxw);padding:var(--gap-2) var(--pad);margin:0 auto;display:flex}.bar__name{font-family:var(--font-mono);font-size:var(--t-xs);font-weight:var(--w-medium);color:var(--text-mid);letter-spacing:.02em;transition:color var(--dur) var(--ease)}.bar__name:hover{color:var(--text)}.bar__nav{gap:var(--gap-3);margin-left:auto;margin-right:var(--gap-3);display:flex}.bar__link{font-size:var(--t-sm);font-weight:var(--w-medium);color:var(--text-dim)}.theme-toggle{align-items:center;gap:var(--gap-2);border:1px solid var(--line-strong);border-radius:var(--radius-pill);background:var(--surface);color:var(--text-mid);font-size:var(--t-xs);font-weight:var(--w-medium);transition:background-color var(--dur) var(--ease), border-color var(--dur) var(--ease), color var(--dur) var(--ease);padding:6px 12px 6px 8px;display:inline-flex}.theme-toggle:hover{background:var(--surface-hover);border-color:var(--text-dim);color:var(--text)}.theme-toggle__track{border-radius:var(--radius-pill);background:var(--line-strong);width:28px;height:15px;transition:background-color var(--dur) var(--ease);display:block;position:relative}.theme-toggle__thumb{background:var(--bg);width:11px;height:11px;transition:transform var(--dur) var(--ease-out), background-color var(--dur) var(--ease);border-radius:50%;position:absolute;top:2px;left:2px}[data-theme=light] .theme-toggle__thumb{transform:translate(13px)}.theme-toggle__icon{flex:none}.hero{gap:var(--gap-5) var(--gap-6);padding:var(--gap-5) 0 0;grid-template-columns:minmax(0,1.75fr) minmax(0,1fr);align-items:center;display:grid}.hero__title{font-size:var(--t-2xl);font-weight:var(--w-bold);letter-spacing:-.038em;line-height:1.02}.hero__role{margin-top:var(--gap-2);font-family:var(--font-display);font-size:var(--t-xl);letter-spacing:.005em;color:var(--accent);font-style:italic;font-weight:400;line-height:1.2;display:block}.hero__body{max-width:46ch;margin-top:var(--gap-3);font-size:var(--t-md);color:var(--text-mid);text-wrap:pretty;line-height:1.7}.hero__links{gap:var(--gap-2);margin-top:var(--gap-4);flex-wrap:wrap;display:flex}.hero__aside{align-items:flex-start;gap:var(--gap-3);flex-direction:column;display:flex}.hero__avatar{aspect-ratio:3/4;object-fit:cover;object-position:center;border-radius:var(--radius);border:1px solid var(--line);width:100%;max-width:17rem;height:auto;box-shadow:var(--shadow);align-self:stretch}.hero__focus{gap:var(--gap-1);width:100%;font-size:var(--t-sm);color:var(--text-mid);display:grid}.hero__focus li{padding-left:16px;line-height:1.5;position:relative}.hero__focus li:before{content:"";background:var(--accent);width:6px;height:2px;position:absolute;top:.6em;left:0}.hero__status{align-items:center;gap:var(--gap-2);border:1px solid var(--line);border-radius:var(--radius-pill);background:var(--surface);color:var(--text-mid);font-size:var(--t-2xs);padding:7px 13px 7px 11px;display:flex}.dot{background:var(--accent);width:7px;height:7px;animation:ping 2.8s var(--ease) infinite;border-radius:50%;flex:none}.proof{gap:var(--gap-4) var(--gap-3);margin-top:var(--gap-5);padding-top:var(--gap-4);border-top:1px solid var(--line-soft);grid-template-columns:repeat(auto-fit,minmax(9.5rem,1fr));display:grid}.proof__item{flex-direction:column;gap:.3rem;display:flex}.proof__item:before{content:"";background:var(--accent);width:18px;height:2px;margin-bottom:.55rem}.proof__value{font-family:var(--font-display);letter-spacing:-.01em;color:var(--text);font-size:clamp(2.25rem,1.5rem + 2vw,3.25rem);font-weight:400;line-height:1}.proof__unit{font-family:var(--font-mono);font-size:var(--t-2xs);font-weight:var(--w-medium);letter-spacing:.015em;color:var(--text-dim)}.proof__label{max-width:20ch;font-size:var(--t-xs);color:var(--text-mid);text-wrap:pretty;line-height:1.45}.btn{font-size:var(--t-sm);font-weight:var(--w-medium);letter-spacing:-.004em;border:1px solid var(--line-strong);border-radius:var(--radius-pill);background:var(--surface);color:var(--text-mid);transition:background-color var(--dur) var(--ease), border-color var(--dur) var(--ease), color var(--dur) var(--ease), transform var(--dur) var(--ease-out);align-items:center;gap:7px;padding:11px 20px;display:inline-flex}.btn:hover{background:var(--surface-hover);border-color:var(--text-dim);color:var(--text);transform:translateY(-2px)}.btn:active{transform:translateY(0)}.btn svg{transition:transform var(--dur) var(--ease-out)}.btn:hover svg{transform:translate(2px,-2px)}.btn--primary{background:var(--accent-fill);border-color:var(--accent-line);color:var(--accent-ink);font-weight:var(--w-semi)}.btn--primary:hover{background:var(--accent-fill);border-color:var(--accent-line);color:var(--accent-ink);filter:brightness(1.06)}.chip{font-size:var(--t-2xs);border:1px solid var(--line);border-radius:var(--radius-pill);color:var(--text-dim);white-space:nowrap;transition:border-color var(--dur) var(--ease), color var(--dur) var(--ease), background-color var(--dur) var(--ease);align-items:center;padding:5px 11px;display:inline-flex}.stack .chip:hover{color:var(--text);border-color:var(--text-dim);background:var(--surface-hover)}.work{gap:var(--gap-3);grid-template-columns:1fr;display:grid}@media (width>=700px){.work{grid-template-columns:repeat(2,minmax(0,1fr))}.work:not(.work--featured)>.card:last-child:nth-child(odd),.work--featured>.card:first-child{grid-column:1/-1}.work--featured>.card:first-child .card__media{aspect-ratio:21/9}}@media (width>=1060px){.work{grid-template-columns:repeat(3,minmax(0,1fr))}.work:not(.work--featured)>.card:last-child:nth-child(odd){grid-column:auto}.work--featured>.card:first-child{flex-direction:row;grid-column:span 2}.work--featured>.card:first-child .card__media{aspect-ratio:auto;border-bottom:0;border-right:1px solid var(--line-soft);flex:54%}.work--featured>.card:first-child .card__body{flex:46%}.work--featured>.card:first-child .card__head{flex-direction:column;align-items:flex-start;gap:6px}}.card{border:1px solid var(--line-soft);border-radius:var(--radius);background:var(--surface);transition:background-color var(--dur) var(--ease), border-color var(--dur) var(--ease), transform var(--dur) var(--ease-out), box-shadow var(--dur) var(--ease-out);flex-direction:column;display:flex;position:relative;overflow:hidden}.card:hover,.card:focus-within{background:var(--surface-hover);border-color:var(--line-strong);box-shadow:var(--shadow-lift);transform:translateY(-6px)}.card__media,.card__fallback{aspect-ratio:16/9;border-bottom:1px solid var(--line-soft);position:relative;overflow:hidden}.card__media{background:var(--bg-soft)}.card__media img{object-fit:cover;object-position:top center;width:100%;height:100%;transition:transform .7s var(--ease-out)}.card:hover .card__media img,.card:focus-within .card__media img{transform:scale(1.04)}.card__fallback{background:linear-gradient(145deg, var(--accent-soft) 0%, transparent 60%), var(--bg-soft);place-items:center;display:grid}.card__fallback>span:first-child{font-family:var(--font-display);color:var(--text-mid);letter-spacing:.02em;font-size:clamp(2rem,5vw,3rem)}.card__year{border-radius:var(--radius-pill);background:color-mix(in srgb, var(--bg) 82%, transparent);-webkit-backdrop-filter:blur(8px);border:1px solid var(--line);color:var(--text-mid);padding:4px 10px;position:absolute;top:12px;right:12px}.card__body{padding:var(--gap-3);flex-direction:column;flex:1;display:flex}.card__head{justify-content:space-between;align-items:center;gap:var(--gap-2);display:flex}.card__name{font-size:var(--t-md);font-weight:var(--w-semi);letter-spacing:-.02em;align-items:center;gap:7px;display:inline-flex}.card__name svg{color:var(--accent);opacity:0;transition:opacity var(--dur) var(--ease), transform var(--dur) var(--ease-out);transform:translate(-4px,4px)}.card:hover .card__name svg,.card:focus-within .card__name svg{opacity:1;transform:none}.card__name span{position:relative}.card__name span:after{content:"";background:var(--accent);transform-origin:0;width:100%;height:1.5px;transition:transform .4s var(--ease-out);position:absolute;bottom:-3px;left:0;transform:scaleX(0)}.card:hover .card__name span:after,.card:focus-within .card__name span:after{transform:scaleX(1)}.card__tag{color:var(--text-dim);flex:none}.card__summary{margin-top:var(--gap-2);font-size:var(--t-sm);color:var(--text-mid);text-wrap:pretty;line-height:1.65}.card__highlights{gap:var(--gap-1);margin-top:var(--gap-3);flex-wrap:wrap;display:flex}.card__highlights li{font-family:var(--font-mono);font-size:var(--t-2xs);color:var(--accent);background:var(--accent-soft);border:1px solid color-mix(in srgb, var(--accent) 26%, transparent);border-radius:var(--radius-pill);padding:.2rem .6rem}.card__stack{padding-top:var(--gap-3);flex-wrap:wrap;gap:6px;margin-top:auto;display:flex}.card__link:after{content:"";z-index:1;position:absolute;inset:0}.card__extra{z-index:2;margin:0 var(--gap-3) var(--gap-3);color:var(--text-dim);align-self:flex-start;position:relative}.exp{border-top:1px solid var(--line-soft)}.exp__row{align-items:baseline;gap:var(--gap-3);padding:var(--gap-3) var(--gap-2);border-bottom:1px solid var(--line-soft);border-radius:var(--radius-sm);transition:background-color var(--dur) var(--ease), transform var(--dur) var(--ease-out);grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto;display:grid}.exp__row:hover{background:var(--surface);transform:translate(6px)}.exp__company{font-size:var(--t-md);font-weight:var(--w-medium);letter-spacing:-.015em}.exp__role{color:var(--text-mid);font-size:var(--t-sm)}.exp__meta{gap:var(--gap-3);color:var(--text-dim);white-space:nowrap;justify-content:flex-end;display:flex}.stack{flex-wrap:wrap;gap:8px;display:flex}.outro{align-items:end;gap:var(--gap-4);padding-top:var(--gap-5);border-top:1px solid var(--line-soft);grid-template-columns:minmax(0,1fr) auto;display:grid}.outro__title{font-family:var(--font-display);font-size:var(--t-3xl);letter-spacing:-.01em;font-weight:400;line-height:1.05}.outro__mail{margin-top:var(--gap-3);font-size:var(--t-md);font-weight:var(--w-medium);color:var(--accent);display:inline-block}.foot{z-index:1;justify-content:space-between;align-items:center;gap:var(--gap-2) var(--gap-4);max-width:var(--maxw);padding:var(--gap-3) var(--pad) var(--gap-4);color:var(--text-dim);border-top:1px solid var(--line-soft);flex-wrap:wrap;margin:0 auto;display:flex;position:relative}@media (width<=900px){:root{--gap-6:4.5rem}.hero{gap:var(--gap-4);grid-template-columns:1fr;align-items:start}.hero__avatar{align-self:center;max-width:12rem}.outro{grid-template-columns:1fr;align-items:start}.exp__row{grid-template-columns:1fr;gap:2px}.exp__meta{justify-content:flex-start}.bar__nav{display:none}}@media (width<=560px){.hero__links .btn{flex:auto;justify-content:center}.foot{flex-direction:column;align-items:flex-start}}@media (prefers-reduced-motion:reduce){.card:hover,.card:focus-within,.exp__row:hover,.btn:hover,.card:hover .card__media img,.card:focus-within .card__media img{transform:none}}
