/*
:root {
  max-width: 70ch;
  padding: 3em 1em;
  margin: auto;
  line-height: 1.75;
  font-size: 1.25em;
}
*/

/* Background dot pattern tuning */
:root {
  --dot-cell: 20px;        /* grid spacing */
  --dot-size: 1.5px;       /* dot radius */
  --dot-a: rgba(255,255,255,0.18);
  --dot-b: rgba(255,255,255,0.10);
  --dot-opacity: .38;      /* overall overlay strength */
  --mx: 0px;               /* mouse/drift offset x */
  --my: 0px;               /* mouse/drift offset y */
}

body, html {
    height: 100%;
}

body {
    font-family: sans-serif;
    background: #0D1117;
    color: #dfeff7;
    display: flex;
    flex-direction: column;
    margin: 0;
    position: relative; /* for background overlay stacking */
}

a, a:hover, a:active, a:visited {
    color: #dfeff7;
    text-decoration: none;
}

.body {
    text-align: center;
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    z-index: 1; /* ensure above background overlay */
}

.name {
    font-size: 2.5rem;
}

.mail {
    margin-top: 1rem;
    font-size: 1.3rem;
}

.footer {
    text-align: center;
    padding: 5px;
    font-size: .8rem;
    color: #808080;
    position: relative;
    z-index: 1;
}

.spacer {
    flex-grow: 1;
}

/* Subtle animated dot pattern background */
body::before {
    content: "";
    position: fixed;
    inset: 0;
    pointer-events: none;
    z-index: 0;
    background:
      radial-gradient(circle at center, var(--dot-a) 0 var(--dot-size), transparent var(--dot-size)) calc(var(--mx)) calc(var(--my))/var(--dot-cell) var(--dot-cell),
      radial-gradient(circle at center, var(--dot-b) 0 var(--dot-size), transparent var(--dot-size)) calc(var(--dot-cell)/2 + var(--mx)) calc(var(--dot-cell)/2 + var(--my))/var(--dot-cell) var(--dot-cell);
    opacity: var(--dot-opacity);
}

/* When JS canvas background is active, hide the CSS overlay */
body.has-canvas-bg::before { opacity: 0; }

/* Canvas background element */
canvas#bg-pattern {
  position: fixed;
  inset: 0;
  width: 100%;
  height: 100%;
  z-index: 0;
  pointer-events: none;
}
