:root{
  --crust:#11111b;--mantle:#181825;--base:#1e1e2e;
  --surface0:#313244;--surface1:#45475a;
  --overlay0:#6c7086;--overlay1:#7f849c;
  --subtext0:#a6adc8;--text:#cdd6f4;
  --mauve:#cba6f7;--green:#a6e3a1;--lavender:#b4befe;
  --peach:#fab387;--yellow:#f9e2af;--blue:#89b4fa;--sky:#89dceb;
}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
::selection{background:var(--mauve);color:var(--crust)}
body{
  font-family:ui-monospace,"Cascadia Code","Fira Code","JetBrains Mono",Menlo,Consolas,monospace;
  background:var(--base);color:var(--text);font-size:14px;line-height:1.5;padding:1rem;
}
.container{max-width:80ch;margin:0 auto}
a{color:var(--mauve);text-decoration:none;transition:color .15s,text-shadow .15s}
a:hover,a:focus-visible{color:var(--lavender);text-shadow:0 0 6px rgba(180,190,254,.4)}
a:focus-visible{outline:2px solid var(--lavender);outline-offset:2px}
a:visited{color:var(--mauve)}
hr{border:none;color:var(--overlay0);text-align:center;margin:1.5rem 0;overflow:hidden}
hr::before{content:"────────────────────────────────────────"}
h1{color:var(--text);margin-bottom:.5rem}
h2,h3{color:var(--green);margin:1.5rem 0 .5rem}
h3{margin:1rem 0 .25rem}
.tag{color:var(--subtext0);transition:color .15s;font-size:.9em}
.tag:hover,.tag:focus-visible{color:var(--green);text-shadow:none}
.note-list{list-style:none;padding:0;margin:.5rem 0}
.note-list li{margin:.25rem 0}
.note-list li::before{content:"~ ";color:var(--overlay1)}
.meta{color:var(--subtext0);font-size:.9em;margin-bottom:.75rem}
.meta-date{color:var(--subtext0)}
pre{
  background:var(--mantle);border:1px solid rgba(203,166,247,.3);
  border-radius:2px;padding:1rem;overflow-x:auto;margin:1rem 0;font-size:.9em;
}
pre code{background:none;padding:0;border:none}
code{background:var(--mantle);padding:.1em .3em;border-radius:2px;font-size:.9em}
details{margin:1rem 0}
summary{cursor:pointer;color:var(--mauve)}
summary:hover,summary:focus-visible{color:var(--lavender)}
summary:focus-visible{outline:2px solid var(--lavender);outline-offset:2px}
summary::marker{color:var(--overlay0)}
details[open] summary{margin-bottom:.5rem;padding-bottom:.5rem;border-bottom:1px solid var(--surface0)}
body::after{
  content:"";position:fixed;left:0;top:0;width:100%;height:100%;
  background:linear-gradient(transparent,rgba(180,190,254,.02),transparent);
  background-size:100% 20%;background-repeat:no-repeat;
  animation:scanline 3s linear infinite;pointer-events:none;z-index:999;
}
@keyframes scanline{0%{background-position:0 -20vh}100%{background-position:0 120vh}}
@media(prefers-reduced-motion:reduce){body::after{animation:none}}
header{margin-bottom:2rem}
.term{background:var(--mantle);border:1px solid rgba(203,166,247,.3);border-radius:2px;padding:1rem;margin-bottom:.75rem}
.term-ps{color:var(--green)}
.term-cmd{display:inline-block;overflow:hidden;white-space:nowrap;width:0;border-right:.1em solid var(--text);vertical-align:bottom;animation:tcmd 10s step-end infinite,blink .6s step-end infinite,cur 10s step-end infinite}
.term-out{display:inline-block;overflow:hidden;white-space:nowrap;width:0;color:var(--subtext0);animation:tout 10s steps(20,end) infinite}
@keyframes tcmd{0%,5%{width:0}6%{width:1ch}8%{width:2ch}10%{width:3ch}12%,72%{width:4ch}74%,100%{width:0}}
@keyframes cur{0%,14%{border-right-color:var(--text)}15%,100%{border-right-color:transparent}}
@keyframes tout{0%,15%{width:0}17%,72%{width:20ch}74%,100%{width:0}}
@keyframes blink{50%{border-color:transparent}}
@media(prefers-reduced-motion:reduce){.term-cmd,.term-out{width:auto;animation:none;border:none}}
nav{color:var(--overlay0)}
nav a{color:var(--subtext0)}
nav a:hover,nav a:focus-visible{color:var(--lavender);text-shadow:0 0 6px rgba(180,190,254,.4)}
nav a:focus-visible{outline:2px solid var(--lavender);outline-offset:2px}
.nav-sep{color:var(--overlay0);margin:0 .25rem;user-select:none}
footer{margin-top:3rem}
.footer-badges{margin-bottom:.5rem}
.badge{display:inline-block;border:1px solid var(--surface1);padding:.1em .4em;color:var(--subtext0);font-size:.85em;margin-right:.5rem;transition:border-color .15s,color .15s}
.badge:hover{border-color:var(--mauve);color:var(--text)}
.footer-quip{color:var(--subtext0);font-size:.85em}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
@media(max-width:600px){body{padding:.75rem}pre{padding:.75rem}}
.cv-filters{display:flex;flex-wrap:wrap;gap:.25rem .5rem;margin-bottom:1.5rem;align-items:baseline}
.cv-label{color:var(--overlay0);font-size:.9em}
.cv-all{color:var(--green);transition:color .15s,opacity .15s}
.cv-filters label{color:var(--subtext0);cursor:pointer;transition:color .15s}
.cv-filters label:hover{color:var(--text)}
.cv-check:checked+label{color:var(--green)}
.cv-check:focus-visible+label{outline:2px solid var(--lavender);outline-offset:2px}
.cv-wrap:has(.cv-check:checked) .cv-jobs li{display:none}
.cv-wrap:has(.cv-check:checked) .cv-all{opacity:.4}
.cv-jobs{margin-top:.5rem}
.cv-job{margin-bottom:2rem}
.cv-job h3{margin:.25rem 0 .15rem}
.cv-period{color:var(--subtext0);font-size:.9em;display:block;margin-bottom:.4rem}
.cv-job ul{padding-left:1.5rem}
