@font-face{font-family:"Jersey 10";font-style:normal;font-display:swap;font-weight:400;src:url(/assets/jersey-10-latin-ext-400-normal-uIKqQSaG.woff2) format("woff2"),url(/assets/jersey-10-latin-ext-400-normal-ByMh3OYd.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:"Jersey 10";font-style:normal;font-display:swap;font-weight:400;src:url(/assets/jersey-10-latin-400-normal-DrL73VYW.woff2) format("woff2"),url(/assets/jersey-10-latin-400-normal-B8YT2i2g.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Share Tech Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/share-tech-mono-latin-400-normal-CCqdbj5z.woff2) format("woff2"),url(/assets/share-tech-mono-latin-400-normal-15MgdvEM.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Atkinson Hyperlegible Next;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/atkinson-hyperlegible-next-latin-ext-400-normal-BalHKn7d.woff2) format("woff2"),url(/assets/atkinson-hyperlegible-next-latin-ext-400-normal-qxMiU51n.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Atkinson Hyperlegible Next;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/atkinson-hyperlegible-next-latin-400-normal-FfmJh7DR.woff2) format("woff2"),url(/assets/atkinson-hyperlegible-next-latin-400-normal-DPp7N0cD.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Atkinson Hyperlegible Next;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/atkinson-hyperlegible-next-latin-ext-500-normal-CUASR3PD.woff2) format("woff2"),url(/assets/atkinson-hyperlegible-next-latin-ext-500-normal-oZS3KxrF.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Atkinson Hyperlegible Next;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/atkinson-hyperlegible-next-latin-500-normal-gHP6TDRs.woff2) format("woff2"),url(/assets/atkinson-hyperlegible-next-latin-500-normal-B0CYqHl3.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Atkinson Hyperlegible Next;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/atkinson-hyperlegible-next-latin-ext-600-normal-kZZEtAc7.woff2) format("woff2"),url(/assets/atkinson-hyperlegible-next-latin-ext-600-normal-BBAQIogt.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Atkinson Hyperlegible Next;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/atkinson-hyperlegible-next-latin-600-normal-BBuhw47K.woff2) format("woff2"),url(/assets/atkinson-hyperlegible-next-latin-600-normal-BhgCag5w.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root,:root[data-theme=dark]{--bg: #111214;--panel: #1b1c20;--ink: #f7f8fa;--muted: #c6cad1;--rule: #33353b;--dots: rgba(255, 255, 255, .06);--accent: #fc9d03;--accent-2: #4cc2ff;--on-accent: #1a1000;--edge: #42454d;--pixel: "Jersey 10", "Courier New", monospace;--mono: "Share Tech Mono", ui-monospace, Consolas, monospace;--sans: "Atkinson Hyperlegible Next", system-ui, -apple-system, "Segoe UI", sans-serif;--px: 4px;color-scheme:dark}:root[data-theme=light]{--bg: #f2f3f5;--panel: #ffffff;--ink: #17181b;--muted: #50545c;--rule: #d5d8de;--dots: rgba(0, 0, 0, .08);--accent: #8a4f00;--accent-2: #005fb8;--on-accent: #1a1000;--edge: #c3c7cf;--fill: #fc9d03;color-scheme:light}*,*:before,*:after{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;color:var(--ink);font-family:var(--sans);font-size:18.5px;line-height:1.7;-webkit-font-smoothing:antialiased;background-color:var(--bg);background-image:radial-gradient(var(--dots) 1px,transparent 1.2px);background-size:16px 16px;background-attachment:fixed}a{color:var(--accent);text-underline-offset:3px;text-decoration-thickness:1px}a:hover{text-decoration-thickness:2px}:focus-visible{outline:2px dashed var(--accent);outline-offset:4px}::selection{background:var(--fill, var(--accent));color:var(--on-accent)}h1,h2,h3{line-height:1.2;margin:0}p{margin:0 0 1em}ul,ol{margin:0;padding:0}.skip{position:absolute;left:-9999px}.skip:focus{left:16px;top:16px;background:var(--panel);padding:8px 12px;z-index:10}.tile,.status-panel,.featured,.button,.theme-toggle{--frame: var(--edge);box-shadow:var(--px) 0 0 0 var(--frame),calc(var(--px) * -1) 0 0 0 var(--frame),0 var(--px) 0 0 var(--frame),0 calc(var(--px) * -1) 0 0 var(--frame);margin:var(--px)}.layout{display:grid;grid-template-columns:310px minmax(0,680px);gap:80px;max-width:1120px;margin:0 auto;padding:32px 32px 56px}.rail{position:sticky;top:32px;align-self:start;max-height:calc(100vh - 48px);overflow-y:auto;scrollbar-width:none;padding:var(--px)}.rail::-webkit-scrollbar{display:none}@media(max-width:900px){.layout{grid-template-columns:1fr;gap:40px;padding:28px 16px}.rail{position:static;max-height:none}}.tile{--frame: var(--fill, var(--accent));width:160px;aspect-ratio:1;background:var(--panel);margin-bottom:26px}.tile-inner{position:relative;height:100%;padding:14px 16px;display:grid;grid-template-rows:auto 1fr auto;overflow:hidden}.tile-inner:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:repeating-linear-gradient(to bottom,transparent 0 3px,rgba(255,255,255,.03) 3px 4px);pointer-events:none}.tile-top{display:flex;flex-direction:column;font-family:var(--mono);font-size:13px;line-height:1.45;color:var(--muted)}.tile-top b{font-weight:400;color:var(--accent-2)}.tile-symbol{font-family:var(--pixel);font-size:80px;font-weight:700;line-height:.9;color:var(--accent);align-self:center}.tile-name{font-family:var(--mono);font-size:13px;color:var(--ink)}.name{font-family:var(--pixel);font-size:46px;font-weight:700;letter-spacing:.01em}.role{margin:6px 0 0;font-size:18px}.location{color:var(--muted);font-size:16px;font-family:var(--mono);margin:2px 0 0}.status-panel{margin:12px var(--px) 0;background:var(--panel);padding:10px 12px;font-family:var(--mono);font-size:15px}.status-panel div{display:flex;justify-content:space-between;gap:12px;padding:2px 0}.status-panel div+div{border-top:1px dashed var(--rule)}.status-panel dt{color:var(--muted)}.status-panel dd{margin:0;color:var(--ink);text-align:right;display:flex;align-items:center;gap:8px}.pulse{width:8px;height:8px;background:var(--fill, var(--accent));animation:blink 1.4s steps(1,end) infinite}@keyframes blink{50%{opacity:.2}}.nav{list-style:none;margin:12px 0;border-left:2px solid var(--rule)}.nav a{position:relative;display:block;padding:1px 0 1px 18px;line-height:1.25;color:var(--muted);text-decoration:none;font-family:var(--pixel);font-size:21px;font-weight:500;letter-spacing:.02em}.nav a:hover{color:var(--ink)}.nav a.is-active{color:var(--accent);padding-left:30px}.nav a.is-active:before{content:"";position:absolute;left:-2px;top:6px;bottom:6px;width:4px;background:var(--accent)}.nav a.is-active:after{content:"";position:absolute;left:14px;top:50%;width:8px;height:8px;margin-top:-4px;background:var(--accent);clip-path:polygon(0 0,50% 0,50% 25%,75% 25%,75% 50%,100% 50%,100% 50%,75% 50%,75% 75%,50% 75%,50% 100%,0 100%)}@media(max-width:900px){.nav{display:flex;flex-wrap:wrap;gap:2px 20px;border-left:0}.nav a,.nav a.is-active{padding:2px 0}.nav a.is-active:before,.nav a.is-active:after{display:none}}.rail-actions{display:flex;flex-wrap:wrap;gap:14px;margin-bottom:20px}.button,.theme-toggle{font-family:var(--pixel);font-size:20px;font-weight:600;letter-spacing:.02em;padding:7px 12px;border:0;cursor:pointer;text-decoration:none;display:inline-block}.button:active,.theme-toggle:active{transform:translateY(2px)}.button{--frame: var(--fill, var(--accent));background:var(--fill, var(--accent));color:var(--on-accent)}.button:hover{filter:brightness(1.12)}.theme-toggle{background:var(--panel);color:var(--ink)}.theme-toggle:hover{--frame: var(--accent-2);color:var(--accent-2)}.inline-links{list-style:none;display:flex;flex-wrap:wrap;gap:4px 20px;font-family:var(--mono);font-size:17px}.intro{max-width:620px;margin-bottom:72px}.greeting{font-family:var(--pixel);font-size:56px;line-height:1.05;letter-spacing:.01em;margin:0 0 14px}.tagline{font-family:var(--sans);font-size:23px;line-height:1.45;color:var(--muted);margin:0}.section{margin-bottom:72px;scroll-margin-top:32px}.section h2{font-family:var(--pixel);font-size:36px;font-weight:600;display:flex;align-items:center;gap:6px;margin-bottom:24px}.section h2:after{content:"";flex:1;height:4px;margin-left:16px;background:repeating-linear-gradient(90deg,var(--rule) 0 8px,transparent 8px 14px)}.prompt{font-family:var(--mono);font-weight:400;color:var(--accent-2)}.section h3{font-family:var(--sans);font-size:21px;font-weight:600;margin-bottom:6px}.meta{font-family:var(--mono);font-size:16.5px;color:var(--muted);margin-bottom:6px}.featured{--frame: var(--fill, var(--accent));background:var(--panel);margin:var(--px) var(--px) 48px}.featured-inner{padding:24px 26px}.featured-head{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;margin-bottom:12px}.featured h3{font-family:var(--pixel);font-size:31px;margin:0}.status{font-family:var(--mono);font-size:14px;color:var(--on-accent);background:var(--fill, var(--accent));padding:1px 8px}.projects{display:grid;gap:36px}.project{padding-left:20px;border-left:4px solid var(--rule)}.project:hover{border-left-color:var(--accent)}.project p{margin-bottom:10px}.section .project h3{font-size:23px}.stack{list-style:none;display:flex;flex-wrap:wrap;gap:8px;margin:12px 0}.stack li{font-family:var(--mono);font-size:16px;letter-spacing:.02em;color:var(--accent-2);background:transparent;border:2px solid var(--accent-2);padding:1px 9px}.pub h3 a{color:var(--ink)}.authors{color:var(--muted);font-size:16.5px}.timeline{list-style:none;border-left:2px solid var(--rule);margin-left:4px}.timeline>li{position:relative;padding:0 0 30px 26px}.timeline>li:before{content:"";position:absolute;left:-6px;top:8px;width:10px;height:10px;background:var(--fill, var(--accent))}.timeline ul{list-style:none;margin-top:8px}.timeline ul li{position:relative;padding-left:18px;margin-bottom:4px}.timeline ul li:before{content:"";position:absolute;left:2px;top:.7em;width:6px;height:6px;background:var(--accent-2)}.subhead{margin-top:20px}.section h3.subhead{font-family:var(--pixel);font-size:28px}.education{list-style:none;margin-top:0}.education li{display:grid;grid-template-columns:1fr auto;column-gap:16px;padding:14px 0;border-bottom:2px dashed var(--rule)}.education .degree{font-weight:600;font-size:19.5px}.education .school{grid-column:1;color:var(--muted);font-size:16.5px}.education .meta{grid-column:2;grid-row:1;margin:0}.skills{margin:0;display:grid;gap:8px}.skills div{display:grid;grid-template-columns:170px 1fr;gap:16px;align-items:start}.skills dt{font-family:var(--pixel);font-size:23px;font-weight:500;padding-top:10px}.skills dd{margin:0}@media(max-width:560px){.skills div{grid-template-columns:1fr;gap:0}.greeting{font-size:42px}.tagline{font-size:19px}.featured-inner{padding:20px}.name{font-size:40px}}.footer{color:var(--muted);font-family:var(--mono);font-size:15px;padding-top:24px;border-top:2px dashed var(--rule)}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}}.tile-symbol,.name,.nav a,.button,.theme-toggle,.section h2,.featured h3,.section h3.subhead,.skills dt{font-weight:400;letter-spacing:.02em}.familiar{margin-top:24px;color:var(--muted);font-size:16.5px}.familiar span{font-family:var(--pixel);font-size:21px;color:var(--ink);margin-right:8px}.tile.tile-photo{width:168px;aspect-ratio:auto;padding:0;margin-bottom:12px}.tile-caption{display:flex;flex-direction:column;padding:8px 12px 9px;border-top:4px solid var(--fill, var(--accent));font-family:var(--mono);font-size:13px;line-height:1.45;color:var(--ink)}.tile-caption b{font-weight:400;color:var(--accent-2);margin-right:4px}.portrait-photo{display:block;width:168px;height:168px;object-fit:cover;object-position:center 30%}:root[data-theme=light] .project:hover{border-left-color:var(--fill)}@media(min-width:901px)and (max-height:880px){.tile.tile-photo,.portrait-photo{width:120px}.portrait-photo{height:120px}.tile-caption{font-size:12px;padding:6px 10px 7px}.name{font-size:38px}.nav a{font-size:19px}}@media(min-width:901px)and (max-height:820px){.tile.tile-photo,.portrait-photo{width:112px}.portrait-photo{height:112px}.tile-caption{display:none}.nav a{font-size:18px;line-height:1.2}}@media(min-width:901px)and (max-height:740px){.rail{position:static;max-height:none}}
