:root{--bg:#000;--fg:#f2f2f2;--body:#c9d1cb;--muted:#8a9a8f;--dim:#4f8a5d;--accent:#39ff6a;--accent-2:#2ea84a;--sel:#14391d;--line:#123018;--mono:"IBM Plex Mono", ui-monospace, Menlo, monospace}*{box-sizing:border-box}html,body{height:100%}body{background:var(--bg);color:var(--fg);font:400 15px/1.7 var(--mono);-webkit-font-smoothing:antialiased;margin:0}::selection{background:var(--sel);color:var(--fg)}a{color:inherit;text-decoration:none}a:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.shell{grid-template-rows:auto 1fr;grid-template-columns:200px 1fr;gap:0 48px;width:min(960px,100% - 48px);min-height:100%;margin-inline:auto;display:grid}.top{border-bottom:1px solid var(--line);grid-column:1/-1;justify-content:space-between;align-items:center;padding:28px 0 24px;display:flex}.brand{font-weight:600}.brand span{color:var(--accent)}.hint{color:var(--dim);font-size:13px}.menu{flex-direction:column;align-self:start;gap:2px;padding:40px 0;display:flex}.menu a{color:var(--muted);padding:7px 12px 7px 0;transition:color .12s;display:block;position:relative}.menu a i{color:var(--dim);width:1ch;margin-right:14px;font-style:normal;display:inline-block}.menu a:hover{color:var(--fg)}.menu a[aria-current=page]{color:var(--accent)}.menu a[aria-current=page]:before{content:"❯";position:absolute;left:-20px}.stage{min-width:0;padding:40px 0}.panel{padding-bottom:24px}.js .panel{display:none}.js .panel.on{animation:.18s ease-out in;display:block}@keyframes in{0%{opacity:0;transform:translateY(4px)}}.chev{color:var(--accent)}.cmd{color:var(--muted);margin:0 0 22px}h1{font:600 clamp(36px, 6vw, 52px)/1.1 var(--mono);letter-spacing:-.04em;margin:0 0 18px}.lead{max-width:32ch;margin:0 0 16px;font-size:19px;line-height:1.55}.meta{color:var(--muted);margin:0 0 30px;font-size:14px}.rows{margin:0;padding:0;list-style:none}.rows a{grid-template-columns:96px 1fr;gap:16px;padding:3px 0;display:grid}.rows .k{color:var(--dim)}.rows .v{color:var(--fg);overflow-wrap:anywhere;transition:color .12s}.rows a:hover .v,.rows a:focus-visible .v{color:var(--accent)}.timeline{margin:0;padding:0;list-style:none}.timeline>li{grid-template-columns:150px 1fr;gap:24px;padding:0 0 22px;display:grid}.when{color:var(--dim);padding-top:3px;font-size:13px}h3{font:600 15px/1.5 var(--mono);margin:0}.what .org{color:var(--accent-2);margin:0 0 6px;font-size:13px}.what p{color:var(--body);margin:0;font-size:14px}.what ul{margin:0;padding:0;list-style:none}.what ul li{color:var(--body);margin-bottom:4px;padding-left:2ch;font-size:14px;position:relative}.what ul li:before{content:"-";color:var(--dim);position:absolute;left:0}.what .stack{color:var(--dim);margin-top:6px;font-size:13px}.skills{margin:0}.skills div{border-bottom:1px solid var(--line);grid-template-columns:110px 1fr;gap:24px;padding:12px 0;display:grid}.skills div:first-child{padding-top:0}.skills dt{color:var(--dim);padding-top:2px;font-size:13px}.skills dd{color:var(--body);margin:0}.muted{color:var(--muted);margin:0}.rows+.muted{margin-top:22px;font-size:14px}#contact p{color:var(--body);margin:0 0 18px}.menu a:after,.brand:after,.back:after,.rows .v:after,.typing:after{content:"";vertical-align:-.22em;background:var(--accent);visibility:hidden;width:.6em;height:1.2em;display:inline-block}.menu a:hover:after,.menu a:focus-visible:after,.brand:hover:after,.brand:focus-visible:after,.back:hover:after,.back:focus-visible:after,.rows a:hover .v:after,.rows a:focus-visible .v:after{visibility:visible;animation:1.1s step-end infinite blink}.typing:after{visibility:visible}@keyframes blink{50%{opacity:0}}@media (prefers-reduced-motion:reduce){.menu a:after,.brand:after,.back:after,.rows .v:after,.js .panel.on{animation:none!important}}@media (width>=761px){.js body{overflow:hidden}.js .shell{grid-template-rows:auto minmax(0,1fr);height:100%;min-height:0}.js .stage{scrollbar-width:thin;scrollbar-color:var(--line) transparent;overflow-y:auto}}@media (width<=760px){.shell{grid-template-rows:auto auto 1fr;grid-template-columns:1fr}.hint{display:none}.top{padding:20px 0 16px}.menu{flex-flow:wrap;gap:4px 14px;padding:16px 0 0;font-size:14px}.menu a{padding:4px 0}.menu a i{display:none}.menu a[aria-current=page]:before{content:none}.menu a[aria-current=page]{border-bottom:1px solid var(--accent)}.stage{padding:28px 0 40px}.timeline>li,.skills div{grid-template-columns:1fr;gap:2px}.rows a{grid-template-columns:72px minmax(0,1fr);gap:12px;font-size:14px}}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}
