:root{--bg: #14110b;--panel: #1b1710;--fg: #e8dcc4;--dim: #948871;--accent: #ffb000;--accent-dim: #b37a00;--line: #352e20;--err: #ff6b5a;--mono: ui-monospace, "SF Mono", SFMono-Regular, "JetBrains Mono", "Cascadia Mono", Menlo, Consolas, "Liberation Mono", monospace;--t-xs: .75rem;--t-sm: .8125rem;--t-base: .9375rem;--t-lg: 1.125rem;--t-xl: 1.5rem;--t-2xl: 2.25rem;--s1: .25rem;--s2: .5rem;--s3: .75rem;--s4: 1rem;--s6: 1.5rem;--s8: 2rem;--s12: 3rem;--s16: 4rem;--shell: 78ch;--prose: 68ch;--bar-h: 2.25rem}[data-theme=light]{--bg: #efe9dc;--panel: #e5ddcc;--fg: #241e14;--dim: #6b6151;--accent: #8f5000;--accent-dim: #a87433;--line: #cfc5b0;--err: #a32d1c}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;scroll-padding-top:calc(var(--bar-h) + var(--s8))}body{font-family:var(--mono);font-size:var(--t-base);line-height:1.65;color:var(--fg);background:var(--bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-variant-ligatures:none}img{max-width:100%;height:auto;display:block}ul,ol{list-style:none}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline;text-underline-offset:3px}button{font:inherit;color:inherit;border:none;background:none;cursor:pointer}input,textarea{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.shell{width:100%;max-width:var(--shell);margin:0 auto;padding:0 var(--s4)}.section{padding:var(--s12) 0;border-top:1px solid var(--line)}.cmd{font-size:var(--t-base);font-weight:400;color:var(--fg);margin-bottom:var(--s6);word-break:break-word}.cmd:before{content:"$ ";color:var(--accent)}.cmd .flag{color:var(--dim)}.note{color:var(--dim);max-width:var(--prose);margin-bottom:var(--s6)}.tag{display:inline-block;font-size:var(--t-xs);color:var(--dim);border:1px solid var(--line);padding:0 var(--s2)}.key{color:var(--dim)}.opt{display:inline-block;font-size:var(--t-sm);color:var(--dim);padding:0 var(--s1);border:1px solid transparent;white-space:nowrap}.opt:before{content:"["}.opt:after{content:"]"}.opt:hover{color:var(--fg)}.opt[aria-pressed=true],.opt[aria-current=true]{color:var(--bg);background:var(--accent)}.opt[aria-pressed=true]:hover,.opt[aria-current=true]:hover{color:var(--bg)}.act{display:inline-block;border:1px solid var(--line);color:var(--fg);padding:var(--s1) var(--s3);white-space:nowrap}.act:before{content:"[ ";color:var(--dim)}.act:after{content:" ]";color:var(--dim)}.act:hover{border-color:var(--accent);color:var(--accent);text-decoration:none}.act--on{background:var(--accent);border-color:var(--accent);color:var(--bg)}.act--on:before,.act--on:after{color:var(--bg)}.act--on:hover{background:var(--accent-dim);border-color:var(--accent-dim);color:var(--bg)}.act[disabled]{opacity:.5;cursor:not-allowed}.entry{border:1px solid var(--line);padding:var(--s4);background:var(--panel)}.entry+.entry{margin-top:-1px}.meter{color:var(--accent);letter-spacing:-.05em;white-space:nowrap}.meter .empty{color:var(--line)}.cursor{display:inline-block;width:.6em;height:1.1em;vertical-align:text-bottom;background:var(--accent);animation:blink 1.06s steps(1) infinite}@keyframes blink{0%,50%{opacity:1}50.01%,to{opacity:0}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.cursor{animation:none}*,*:before,*:after{transition-duration:.01ms!important}}.bar{position:sticky;top:0;z-index:10;background:var(--bg);border-bottom:1px solid var(--line)}.bar__inner{width:100%;max-width:var(--shell);margin:0 auto;padding:0 var(--s4);min-height:var(--bar-h);display:flex;align-items:center;gap:var(--s4)}.bar__id{color:var(--fg);font-size:var(--t-sm);white-space:nowrap}.bar__id:hover{color:var(--accent);text-decoration:none}.bar__nav{display:flex;align-items:center;gap:var(--s1);margin-right:auto;overflow-x:auto;scrollbar-width:none}.bar__nav::-webkit-scrollbar{display:none}.bar__theme{display:flex;gap:var(--s1);flex-shrink:0}@media(max-width:40rem){.bar__inner{flex-wrap:wrap;padding-block:var(--s2);gap:var(--s2) var(--s4)}.bar__nav{order:3;width:100%;margin-right:0}.bar__theme{margin-left:auto}}.footer{border-top:1px solid var(--line)}.footer__inner{display:flex;align-items:center;justify-content:space-between;gap:var(--s4);flex-wrap:wrap;padding-block:var(--s4)}.footer__meta{color:var(--dim);font-size:var(--t-sm)}.footer__social{display:flex;flex-wrap:wrap;gap:var(--s1)}.footer__social .opt:hover{text-decoration:none;color:var(--accent)}.hero{padding:var(--s16) 0 var(--s12);border-top:none}.hero__id{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--s6)}.hero__name{font-size:var(--t-2xl);font-weight:700;line-height:1.15;letter-spacing:-.02em}.hero__title{color:var(--dim);line-height:1.5}.hero__title[data-primary=true]{color:var(--accent)}.hero__where{margin-top:var(--s3);color:var(--fg);font-size:var(--t-sm)}.hero__portrait{width:7rem;height:7rem;object-fit:cover;border:1px solid var(--line);filter:grayscale(1) contrast(1.05);flex-shrink:0}.hero__cmd2{margin-top:var(--s8)}.hero__bio{max-width:var(--prose);color:var(--fg)}.hero__stats{margin-top:var(--s8);border-top:1px solid var(--line);max-width:34ch}.hero__stat{display:flex;align-items:baseline;justify-content:space-between;gap:var(--s4);border-bottom:1px solid var(--line);padding:var(--s1) 0;font-size:var(--t-sm)}.hero__stat-value{color:var(--fg);font-variant-numeric:tabular-nums}.hero__actions{margin-top:var(--s8);display:flex;flex-wrap:wrap;gap:var(--s3)}@media(max-width:34rem){.hero{padding-top:var(--s12)}.hero__id{flex-direction:column-reverse;align-items:flex-start;gap:var(--s4)}.hero__portrait{width:5rem;height:5rem}.hero__name{font-size:var(--t-xl)}}.about__prose{max-width:var(--prose)}.about__prose p+p{margin-top:var(--s4)}.about__cmd2{margin-top:var(--s8)}.about__field{display:grid;grid-template-columns:10ch 1fr;gap:var(--s3);padding:var(--s1) 0;border-bottom:1px solid var(--line);font-size:var(--t-sm)}.about__fields{border-top:1px solid var(--line);max-width:var(--prose)}.about__focus{display:flex;flex-wrap:wrap;gap:var(--s1)}@media(max-width:34rem){.about__field{grid-template-columns:1fr;gap:0}}.skills__filter{display:flex;flex-wrap:wrap;gap:var(--s1);margin-bottom:var(--s6)}.skills__group+.skills__group{margin-top:var(--s6)}.skills__group-name{font-size:var(--t-sm);font-weight:400;color:var(--dim);border-bottom:1px solid var(--line);padding-bottom:var(--s1);margin-bottom:var(--s2)}.skills__group-name:before{content:"./";color:var(--line)}.skills__row{display:grid;grid-template-columns:1fr auto 5ch;align-items:center;gap:var(--s3);font-size:var(--t-sm);line-height:1.9}.skills__name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.skills__pct{color:var(--dim);text-align:right;font-variant-numeric:tabular-nums}.skills__cmd2{margin-top:var(--s8)}.skills__langs{border-top:1px solid var(--line);padding-top:var(--s2)}@media(max-width:30rem){.skills__row{grid-template-columns:1fr 5ch}.skills__row .meter{display:none}}.experience__item{padding:0}.experience__head{display:grid;grid-template-columns:2ch 16ch 1fr auto;align-items:baseline;gap:var(--s3);padding:var(--s3) var(--s4);cursor:pointer;list-style:none}.experience__head::-webkit-details-marker{display:none}.experience__head:before{content:"+";color:var(--accent)}.experience__item[open] .experience__head:before{content:"-"}.experience__head:hover{background:var(--bg)}.experience__period{color:var(--dim);font-size:var(--t-sm);white-space:nowrap}.experience__role{display:flex;flex-direction:column}.experience__position{color:var(--fg)}.experience__company{color:var(--dim);font-size:var(--t-sm)}.experience__body{padding:0 var(--s4) var(--s4) calc(var(--s4) + 2ch + var(--s3));max-width:var(--prose)}.experience__desc{color:var(--dim);font-size:var(--t-sm)}.experience__highlights{margin-top:var(--s3);font-size:var(--t-sm)}.experience__highlights li{padding-left:2ch;text-indent:-2ch}.experience__highlights li:before{content:"- ";color:var(--accent)}.experience__tech{margin-top:var(--s3);display:flex;flex-wrap:wrap;gap:var(--s1)}@media(max-width:40rem){.experience__head{grid-template-columns:2ch 1fr;row-gap:var(--s1)}.experience__period,.experience__role{grid-column:2}.experience__head .tag{grid-column:2;justify-self:start}.experience__body{padding-left:calc(var(--s4) + 2ch + var(--s3))}}.education__period{color:var(--dim);font-size:var(--t-sm)}.education__degree{font-size:var(--t-base);font-weight:700}.education__institution{color:var(--accent);font-size:var(--t-sm)}.education__desc{margin-top:var(--s2);color:var(--dim);font-size:var(--t-sm);max-width:var(--prose)}.education__cmd2{margin-top:var(--s8)}.education__certs{border-top:1px solid var(--line)}.education__cert{display:grid;grid-template-columns:6ch 1fr auto;gap:var(--s3);align-items:baseline;padding:var(--s2) 0;border-bottom:1px solid var(--line);font-size:var(--t-sm)}.education__cert-year{color:var(--dim);font-variant-numeric:tabular-nums}.education__cert-issuer{color:var(--dim);text-align:right}@media(max-width:34rem){.education__cert{grid-template-columns:6ch 1fr;row-gap:0}.education__cert-issuer{grid-column:2;text-align:left}}.projects__filter{display:flex;flex-wrap:wrap;gap:var(--s1);margin-bottom:var(--s6)}.projects__head{display:flex;align-items:baseline;justify-content:space-between;gap:var(--s3)}.projects__title{font-size:var(--t-base);font-weight:700}.projects__category{font-size:var(--t-xs);white-space:nowrap}.projects__desc{margin-top:var(--s2);color:var(--dim);font-size:var(--t-sm);max-width:var(--prose)}.projects__foot{margin-top:var(--s3);display:flex;align-items:center;justify-content:space-between;gap:var(--s3);flex-wrap:wrap}.projects__tech{display:flex;flex-wrap:wrap;gap:var(--s1)}.projects__links{display:flex;gap:var(--s1)}.projects__links .opt:hover{text-decoration:none;color:var(--accent)}.projects__empty{color:var(--dim);font-size:var(--t-sm)}.contact__form{max-width:var(--prose)}.contact__field+.contact__field{margin-top:var(--s4)}.contact__label{display:block;color:var(--dim);font-size:var(--t-sm)}.contact__label:before{content:"> ";color:var(--accent)}.contact input,.contact textarea{width:100%;background:var(--panel);border:1px solid var(--line);padding:var(--s2) var(--s3);font-size:var(--t-sm);resize:vertical}.contact input::placeholder,.contact textarea::placeholder{color:var(--dim);opacity:.7}.contact input:focus,.contact textarea:focus{border-color:var(--accent);outline:none}.contact input[aria-invalid=true],.contact textarea[aria-invalid=true]{border-color:var(--err)}.contact__error{margin-top:var(--s1);color:var(--err);font-size:var(--t-xs)}.contact__error:before{content:"! "}.contact__submit{margin-top:var(--s6);display:flex;align-items:center;gap:var(--s4);flex-wrap:wrap}.contact__status{font-size:var(--t-sm)}.contact__status--ok{color:var(--accent)}.contact__status--ok:before{content:"ok ";color:var(--dim)}.contact__status--err{color:var(--err)}.contact__status--err:before{content:"! "}.contact__cmd2{margin-top:var(--s12)}.contact__reach{border-top:1px solid var(--line);max-width:var(--prose)}.contact__reach-row{display:grid;grid-template-columns:10ch 1fr;gap:var(--s3);padding:var(--s1) 0;border-bottom:1px solid var(--line);font-size:var(--t-sm)}@media(max-width:34rem){.contact__reach-row{grid-template-columns:1fr;gap:0}}.boot{min-height:100vh;min-height:100dvh;display:flex;align-items:center}.boot .shell{padding-block:var(--s8)}.boot__cmd{margin-bottom:var(--s4)}.boot__prompt{color:var(--accent)}.boot__row{display:grid;grid-template-columns:4ch 1fr auto;gap:var(--s3);color:var(--dim);font-size:var(--t-sm);line-height:2}.boot__status[data-state=ok]{color:var(--accent)}.boot__status[data-state=fail]{color:var(--err)}.boot__path{color:var(--fg)}.boot__row:has(.boot__status[data-state=wait]) .boot__path{color:var(--dim)}.boot__ms{font-variant-numeric:tabular-nums}.boot__foot{margin-top:var(--s4);color:var(--dim);font-size:var(--t-sm);display:flex;align-items:center;gap:var(--s2)}.fail{min-height:100vh;min-height:100dvh;display:flex;align-items:center}.fail .shell{padding-block:var(--s8)}.fail__cmd{margin-bottom:var(--s4)}.fail__prompt{color:var(--accent)}.fail__msg{color:var(--fg);margin-bottom:var(--s3);word-break:break-word}.fail__label{color:var(--err)}.fail__hint{color:var(--dim);max-width:var(--prose);font-size:var(--t-sm);margin-bottom:var(--s4)}.fail__retry{font-size:var(--t-base);color:var(--accent)}.fail__retry:hover{color:var(--bg);background:var(--accent)}
