:root{--text: #eef;--panel: rgba(255, 255, 255, .6);--shadow: 0 10px 40px rgba(0, 0, 0, .12)}*{box-sizing:border-box}html,body{height:100%;margin:0}html{scrollbar-width:none;scroll-behavior:smooth}html::-webkit-scrollbar{display:none}body,#root{min-height:100vh}body{overflow-x:hidden;background:#000;font-family:Courier Prime,system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;color:var(--text);-ms-overflow-style:none}body::-webkit-scrollbar{display:none}#grid-bg{position:fixed;inset:0;width:100vw;height:100vh;display:block;z-index:0;pointer-events:none}.container{width:min(90vw,1000px);margin-inline:auto;position:relative;z-index:1;overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.container::-webkit-scrollbar{display:none}.hero-wrap{min-height:100svh;display:grid;place-items:center;position:relative}.content{text-align:center;padding:2rem 3rem}.eyebrow{margin:0 0 .25em;font-size:clamp(.9rem,2vw,1.25rem);letter-spacing:.08em;opacity:.9;font-family:Courier Prime,system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;color:#fff}.hero{margin:0;line-height:1.1;font-weight:800;font-size:clamp(2rem,8vw,10rem);font-family:BBH Sans Bartle,system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;text-wrap:balance;text-shadow:0 1px 0 rgba(255,255,255,.3);display:inline-flex;justify-content:center;gap:.02em;color:#fff;padding-left:var(--hero-left-pad, 0px);padding-right:var(--hero-right-pad, 0px)}.hero,.hero *{user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent}.char{display:inline-block;position:relative;will-change:transform,filter,opacity;transform-origin:center;transition:transform .28s cubic-bezier(.2,.8,.2,1),filter .28s,opacity .28s}.char:hover{cursor:default}@media(prefers-reduced-motion:reduce){.char{transition:transform .15s ease}.char:hover{transform:translateY(-.02em) scale(1.03);animation:none!important}}.char.anim-pop:hover{animation:pop .55s both}.char.anim-swing:hover{animation:swing .7s both}.char.anim-wiggle:hover{animation:wiggle .5s both}.char.anim-flip:hover{animation:flip .65s both}.char.anim-bounce:hover{animation:bounce .7s both}.char.anim-floaty:hover{animation:floaty .8s both}.char.anim-squash:hover{animation:squash .55s both}.char.anim-slideUp:hover{animation:slideUp .55s both}.char.anim-ripple:hover{animation:ripple .6s both}.char.anim-twirl:hover{animation:twirl .6s both}.char.anim-jelly:hover{animation:jelly .7s both}.char.anim-spark:hover{animation:spark .5s both}@keyframes pop{0%{transform:translateY(0) scale(1);filter:drop-shadow(0 0 0 rgba(0,0,0,0))}60%{transform:translateY(-.18em) scale(1.12);filter:drop-shadow(0 .12em .25em rgba(0,0,0,.25))}to{transform:translateY(-.06em) scale(1.05)}}@keyframes swing{0%{transform:rotate(0)}30%{transform:rotate(14deg)}60%{transform:rotate(-10deg)}to{transform:rotate(0)}}@keyframes wiggle{0%,to{transform:rotate(0)}20%{transform:rotate(8deg)}40%{transform:rotate(-8deg)}60%{transform:rotate(6deg)}80%{transform:rotate(-6deg)}}@keyframes flip{0%{transform:rotateY(0)}50%{transform:rotateY(180deg) translateY(-.05em)}to{transform:rotateY(360deg)}}@keyframes bounce{0%,to{transform:translateY(0)}40%{transform:translateY(-.22em)}70%{transform:translateY(-.08em)}}@keyframes floaty{0%{transform:translateY(0)}50%{transform:translateY(-.16em) rotate(-2deg)}to{transform:translateY(0)}}@keyframes squash{0%{transform:scale(1)}50%{transform:scale(1.18,.82) translateY(.06em)}to{transform:scale(1.04,.96)}}@keyframes slideUp{0%{transform:translateY(0);letter-spacing:0}70%{transform:translateY(-.28em);letter-spacing:.02em}to{transform:translateY(-.08em)}}@keyframes ripple{0%{text-shadow:none}40%{text-shadow:0 0 0 rgba(0,0,0,0),0 .04em 0 rgba(0,0,0,.08),0 .12em .2em rgba(0,0,0,.18)}to{text-shadow:0 .06em .18em rgba(0,0,0,.2)}}@keyframes twirl{0%{transform:rotate(0) scale(1)}60%{transform:rotate(360deg) scale(1.08)}to{transform:rotate(360deg) scale(1.02)}}@keyframes jelly{0%{transform:skew(0)}30%{transform:skew(10deg,-10deg)}60%{transform:skew(-6deg,6deg)}to{transform:skew(0)}}@keyframes spark{0%{filter:drop-shadow(0 0 0 rgba(255,255,255,0));transform:scale(1)}40%{filter:drop-shadow(0 0 .35em rgba(255,255,255,.9));transform:scale(1.12)}to{filter:drop-shadow(0 0 .12em rgba(255,255,255,.6));transform:scale(1.04)}}.scroll-indicator{position:absolute;left:50%;bottom:2.5rem;transform:translate(-50%);display:inline-flex;align-items:center;justify-content:center;width:2.25rem;height:2.25rem;border-radius:50%;background:transparent;-webkit-user-select:none;user-select:none;text-decoration:none;color:#fff}.scroll-indicator .chev{width:1.1em;height:1.1em;display:inline-block;border-right:3px solid currentColor;border-bottom:3px solid currentColor;transform:rotate(45deg);transform-origin:center;animation:bob 1.6s ease-in-out infinite}@keyframes bob{0%{transform:rotate(45deg) translateY(0)}50%{transform:rotate(45deg) translateY(3px)}to{transform:rotate(45deg) translateY(0)}}@media(prefers-reduced-motion:reduce){.scroll-indicator .chev{animation:none}}section#bio{position:relative;z-index:1;padding:clamp(2rem,6vw,5rem) 1rem clamp(1.25rem,3vw,2rem)}.panel-stack{width:min(900px,92vw);margin:0 auto;display:grid;gap:clamp(1.25rem,3vw,2rem)}.panel-grid{width:min(900px,92vw);margin:0 auto;display:grid;gap:clamp(1.25rem,3vw,2rem);grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}.panel-card{background:var(--panel);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-radius:22px;box-shadow:var(--shadow);padding:clamp(1.1rem,2.8vw,2rem);color:#111}.panel-card h2{margin:0 0 .75rem;font-size:clamp(1.35rem,2.6vw,1.9rem);font-weight:800;font-family:BBH Sans Bartle,system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;letter-spacing:.01em;color:#000}.panel-card p{margin:0 0 .9rem;font-size:clamp(1rem,1.3vw,1.1rem);line-height:1.6}.project-list{margin:0;padding:0;list-style:none;display:grid;gap:.85rem}.project-item{background:#ffffffb8;border-radius:16px;padding:.9rem 1rem;box-shadow:0 8px 18px #00000014;font-size:clamp(.95rem,1.2vw,1.05rem);line-height:1.5;display:grid;gap:.4rem}.project-item strong{display:block;font-weight:700;color:#000;margin-bottom:.25rem;font-family:Courier Prime,system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;letter-spacing:.01em}.project-item p{margin:0;color:#000000c7}.project-link{justify-self:start;display:inline-flex;align-items:center;gap:.35rem;padding:.4rem .9rem;border-radius:999px;background:#000;color:#fff;font-size:clamp(.85rem,1vw,.95rem);font-weight:600;text-decoration:none;transition:transform .2s ease,box-shadow .2s ease,background .2s ease}.project-link:hover,.project-link:focus-visible{transform:translateY(-2px);box-shadow:0 10px 22px #0000002e;background:#111}.project-link:focus-visible{outline:2px solid rgba(255,255,255,.9);outline-offset:2px}.chip-list{display:flex;flex-wrap:wrap;gap:.6rem;margin:0;padding:0;list-style:none}.chip{display:inline-flex;align-items:center;gap:.4rem;padding:.45rem .95rem;border-radius:999px;background:#ffffffc7;border:1px solid rgba(0,0,0,.08);color:#111;font-size:clamp(.9rem,1.1vw,1rem);font-weight:600;text-decoration:none;transition:transform .2s ease,box-shadow .2s ease,background .2s ease}.chip:focus-visible,.chip:hover{transform:translateY(-2px);box-shadow:0 10px 20px #0000001f;background:#fffffff2}.chip:focus-visible{outline:2px solid #000;outline-offset:2px}footer.site-footer{padding:clamp(1.5rem,4vw,2.75rem) 1rem clamp(2.5rem,6vw,3.5rem);color:#fff;position:relative;z-index:1}.footer-inner{width:min(900px,92vw);margin:0 auto;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.8rem;border-top:1px solid rgba(255,255,255,.2);padding-top:clamp(.9rem,2vw,1.35rem);text-shadow:0 1px 8px rgba(0,0,0,.4)}.footer-links{display:inline-flex;align-items:center;gap:.75rem;list-style:none;margin:0;padding:0}.footer-link{color:inherit;text-decoration:none;font-weight:600;letter-spacing:.01em}.footer-link:hover,.footer-link:focus-visible{text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:4px}.footer-link:focus-visible{outline:2px solid #fff;outline-offset:2px}
