* {
  padding:0;
  margin:0;
  box-sizing:border-box;
}

:root {
  --fg:light-dark(#424, #eef);
  --bg:light-dark(#fff, #223);
  --primary:light-dark(#727, #69f);
  --fg-faded:light-dark(#867, #99a);
  --bg-faded:light-dark(#ede, #445);
  --font:sans-serif;
  --rule:2px;

  font:13pt / 1.5 var(--font);
  hyphens:auto;
  color:var(--fg);
  background:var(--bg);
  counter-reset:fig 1;
}

body {
  max-width:900px;
  min-height:100vh;
  padding:24px;
  margin-inline:auto;
  display:grid;
  grid-template:
    "head" min-content
    "nav"  min-content
    "main" 1fr
    "foot" min-content
  / 1fr;
}

header {
  --kf-offset:0.1s;
  --kf-delay:2s;
  grid-area:head;
  text-align:center;
}

@media (width > 900px) {
  header {
    text-align:left;
  }
}

header h1 {
  margin-bottom:0;
}

header h1 span {
  font-size:2rem;
  text-transform:uppercase;
  letter-spacing:0.08em;
  animation:sparkle 0.3s;
}

header h2 {
  border:none;
  color:var(--fg-faded);
  margin-top:0;
}

/* C */ header h1 span:nth-child(1)  {animation-delay:calc(0  * var(--kf-offset) + var(--kf-delay));}
/* a */ header h1 span:nth-child(2)  {animation-delay:calc(1  * var(--kf-offset) + var(--kf-delay));}
/* r */ header h1 span:nth-child(3)  {animation-delay:calc(2  * var(--kf-offset) + var(--kf-delay));}
/* s */ header h1 span:nth-child(4)  {animation-delay:calc(3  * var(--kf-offset) + var(--kf-delay));}
/* t */ header h1 span:nth-child(5)  {animation-delay:calc(4  * var(--kf-offset) + var(--kf-delay));}
/* o */ header h1 span:nth-child(6)  {animation-delay:calc(5  * var(--kf-offset) + var(--kf-delay));}
/* n */ header h1 span:nth-child(7)  {animation-delay:calc(6  * var(--kf-offset) + var(--kf-delay));}
/* space */
/* W */ header h1 span:nth-child(9)  {animation-delay:calc(7  * var(--kf-offset) + var(--kf-delay));}
/* i */ header h1 span:nth-child(10) {animation-delay:calc(8  * var(--kf-offset) + var(--kf-delay));}
/* e */ header h1 span:nth-child(11) {animation-delay:calc(9  * var(--kf-offset) + var(--kf-delay));}
/* b */ header h1 span:nth-child(12) {animation-delay:calc(10 * var(--kf-offset) + var(--kf-delay));}
/* e */ header h1 span:nth-child(13) {animation-delay:calc(11 * var(--kf-offset) + var(--kf-delay));}

nav {
  grid-area:nav;
  margin-block:16px;
  text-align:center;
}

nav h3 {
  text-align:center;
  color:var(--fg-faded);
}

main {
  grid-area:main;
}

footer {
  grid-area:foot;
  font-size:0.8rem;
  width:fit-content;
  margin-inline:auto;
}

@media (width > 900px) {
  body{
    grid-template:
      "head head" min-content
      "main nav" 1fr
      "foot foot" min-content
    / 1fr min-content;
  }

  nav {
    border-left:var(--rule) solid var(--bg-faded);
    margin-left:16px;
    padding-left:16px;
    text-align:left;
  }

  nav form {
    position:sticky;
    top:8px;
  }

  nav button {
    display:block;
    margin-block:8px;
    width:100%;
  }
}

/* Element ----------------------------------------------------------------- */

ul, ol {
  margin-left:4ch;
}

p {
  margin-block:8px;
}

@media (width > 900px) {
  p {
    text-align:justify;
  }
}

inline-list {
  list-style:none;
}

inline-list li::before {
  content:'* ';
  color:var(--fg-faded);
}

@media (width > 900px) {
  inline-list li {
    display:inline;
  }

  inline-list li::before {
    content:' // ';
  }

  inline-list li:first-child::before {
    content:'';
  }
}

h1, h2, h3 {
  font-size:1rem;
  font-weight:normal;
  line-height:1.2;
}

h1 {
  font-size:1.5rem;
  margin-top:32px;
  margin-bottom:8px;
  color:var(--primary);
}

h2 {
  font-size:1.2rem;
  border-top:var(--rule) solid var(--bg-faded);
  padding-top:8px;
  margin-top:8px;
  margin-bottom:4px;
}

button {
  border:var(--rule) solid var(--bg-faded);
  border-radius:4px;
  padding:4px;
  color:var(--fg);
  background:var(--bg-faded);
  font-family:var(--font-family);
  font-size:0.9rem;
}

button:hover {
  background:none;
  cursor:pointer;
}

button:active {
  background:var(--fg);
  color:var(--bg);
}

a {
  color:var(--fg);
  text-decoration:underline 1px solid var(--fg-faded);
}

a:hover {
  position:relative;
  color:var(--primary);
}

a:hover::after {
  position:absolute;
  top:1.2rem;
  left:0;
  white-space:pre;
  content:attr(href);
  padding:4px 8px;
  border-radius:4px;
  background:var(--bg-faded);
}

img {
  max-width:100%;
  border-radius:16px;
}

figure {
  text-align:center;
}

figcaption {
  text-align:left;
  font-size:0.8rem;
  max-width:90%;
  width:fit-content;
  margin-inline:auto;
}

img + figcaption::before {
  content:"fig "counter(fig)": ";
  color:var(--fg-faded);
}

project-profile {
  display:block;
  margin:32px 16px;
}

project-name {
  font-weight:bold;
}

project-tagline::before {
  content:' — ';
}

project-link {
  display:block;
}

project-link::before {
  content:'link(s): ';
  color:var(--fg-faded);
}

project-lang {
  display:block;
}

project-lang::before {
  content:'lang(s): ';
  color:var(--fg-faded);
}

project-desc {
  display:block;
}

personal-profile {
  display:grid;
  gap:16px;
}

@media (width > 900px) {
  personal-profile {
    grid-template:"desc img";
  }
}

/* Animations -------------------------------------------------------------- */

@keyframes sparkle {
  0% {opacity:1;}
  50% {opacity:0.5;}
  100% {opacity:1;}
}
