/* css styles */

/* A wavy spiral with its inner turns compressed toward a fine center.
   One painted layer rotates slowly; no image, SVG, or JavaScript is involved. */
body {
  --bs-body-font-family: "Trebuchet MS", "Segoe UI", sans-serif;
  font-family: var(--bs-body-font-family);
  background: #ff6500;
  isolation: isolate;
  overflow-x: clip;
}
body::before {
  content: "";
  position: fixed;
  z-index: -1;
  pointer-events: none;
  width: 160vmax;
  height: 160vmax;
  top: 50%;
  left: 50%;
  background: #ff00be;
  clip-path: polygon(
    51.98% 50.00%, 52.26% 50.21%, 52.52% 50.47%, 52.75% 50.79%, 52.93% 51.14%, 53.05% 51.53%,
    53.08% 51.92%, 53.03% 52.31%, 52.91% 52.67%, 52.71% 53.00%, 52.47% 53.30%, 52.18% 53.56%,
    51.86% 53.79%, 51.52% 54.00%, 51.17% 54.21%, 50.80% 54.42%, 50.40% 54.65%, 49.96% 54.91%,
    49.48% 55.18%, 48.92% 55.48%, 48.30% 55.78%, 47.58% 56.07%, 46.78% 56.32%, 45.89% 56.49%,
    44.93% 56.56%, 43.94% 56.50%, 42.93% 56.29%, 41.97% 55.91%, 41.09% 55.36%, 40.29% 54.68%,
    39.65% 53.85%, 39.13% 52.92%, 38.76% 51.93%, 38.53% 50.88%, 38.42% 49.82%, 38.39% 48.74%,
    38.45% 47.65%, 38.56% 46.54%, 38.71% 45.40%, 38.90% 44.23%, 39.14% 43.00%, 39.44% 41.71%,
    39.81% 40.35%, 40.31% 38.95%, 40.95% 37.50%, 41.76% 36.06%, 42.76% 34.68%, 43.97% 33.39%,
    45.37% 32.24%, 46.94% 31.30%, 48.65% 30.58%, 50.46% 30.11%, 52.35% 29.90%, 54.25% 29.98%,
    56.13% 30.29%, 57.98% 30.84%, 59.77% 31.58%, 61.48% 32.50%, 63.10% 33.56%, 64.66% 34.76%,
    66.15% 36.07%, 67.57% 37.48%, 68.93% 39.01%, 70.22% 40.64%, 71.43% 42.41%, 72.51% 44.31%,
    73.43% 46.35%, 74.17% 48.51%, 74.71% 50.77%, 75.02% 53.12%, 75.08% 55.53%, 74.88% 57.96%,
    74.39% 60.38%, 73.61% 62.76%, 72.54% 65.04%, 71.21% 67.19%, 69.64% 69.19%, 67.84% 71.01%,
    65.86% 72.63%, 63.72% 74.06%, 61.45% 75.28%, 59.09% 76.31%, 56.63% 77.14%, 54.11% 77.80%,
    51.53% 78.27%, 48.89% 78.56%, 46.20% 78.67%, 43.47% 78.57%, 40.71% 78.26%, 37.94% 77.72%,
    35.19% 76.91%, 32.47% 75.84%, 29.84% 74.48%, 27.34% 72.83%, 25.00% 70.89%, 22.87% 68.69%,
    21.00% 66.24%, 19.40% 63.58%, 18.10% 60.74%, 17.11% 57.77%, 16.45% 54.70%, 16.09% 51.57%,
    16.03% 48.41%, 16.26% 45.26%, 16.76% 42.13%, 17.51% 39.04%, 18.50% 36.01%, 19.72% 33.03%,
    21.18% 30.12%, 22.87% 27.30%, 24.80% 24.59%, 26.97% 22.01%, 29.40% 19.60%, 32.06% 17.38%,
    34.97% 15.40%, 38.09% 13.70%, 41.41% 12.33%, 44.89% 11.30%, 48.49% 10.66%, 52.16% 10.42%,
    55.85% 10.58%, 59.52% 11.14%, 63.11% 12.09%, 66.60% 13.39%, 69.96% 15.04%, 73.15% 16.99%,
    76.15% 19.23%, 78.97% 21.71%, 81.59% 24.42%, 83.99% 27.35%, 86.18% 30.47%, 88.14% 33.78%,
    89.85% 37.27%, 91.28% 40.93%, 92.41% 44.73%, 93.21% 48.67%, 93.65% 52.72%, 93.69% 56.83%,
    93.32% 60.96%, 92.51% 65.07%, 91.26% 69.11%, 89.58% 73.00%, 87.48% 76.72%, 84.98% 80.20%,
    82.12% 83.41%, 78.94% 86.32%, 75.49% 88.90%, 71.80% 91.15%, 67.91% 93.05%, 63.87% 94.61%,
    59.70% 95.82%, 55.43% 96.70%, 51.08% 97.23%, 46.68% 97.42%, 42.24% 97.26%, 37.78% 96.73%,
    33.35% 95.82%, 28.96% 94.52%, 24.67% 92.81%, 20.52% 90.68%, 16.56% 88.13%, 12.85% 85.17%,
    9.43% 81.82%, 6.37% 78.10%, 3.70% 74.07%, 1.47% 69.75%, -0.31% 65.21%, -1.62% 60.51%,
    -2.45% 55.68%, -2.81% 50.80%, -2.71% 45.89%, -2.18% 41.01%, -1.22% 36.19%, 0.15% 31.45%,
    1.90% 26.82%, 4.04% 22.32%, 6.54% 17.99%, 9.42% 13.85%, 12.65% 9.92%, 16.24% 6.26%,
    20.18% 2.90%, 24.45% -0.11%, 29.02% -2.72%, 33.87% -4.88%, 38.94% -6.56%, 44.20% -7.71%,
    49.57% -8.31%, 55.00% -8.35%, 60.43% -7.83%, 65.78% -6.75%, 71.01% -5.13%, 76.06% -3.01%,
    80.89% -0.41%, 85.47% 2.62%, 89.77% 6.05%, 93.76% 9.85%, 97.43% 13.98%, 100.76% 18.41%,
    103.72% 23.13%, 106.31% 28.10%, 108.48% 33.30%, 110.22% 38.71%, 111.49% 44.30%, 112.25% 50.03%,
    112.48% 55.85%, 112.14% 61.70%, 111.22% 67.54%, 109.70% 73.29%, 107.60% 78.88%, 104.91% 84.24%,
    101.68% 89.33%, 97.94% 94.06%, 93.73% 98.41%, 89.10% 102.32%, 84.11% 105.77%, 78.82% 108.74%,
    73.27% 111.23%, 67.52% 113.22%, 61.61% 114.71%, 55.57% 115.70%, 49.46% 116.18%, 43.29% 116.16%,
    37.11% 115.62%, 30.96% 114.55%, 24.89% 112.94%, 18.94% 110.78%, 13.17% 108.06%, 7.64% 104.78%,
    2.42% 100.96%, -2.42% 96.62%, -6.82% 91.78%, -10.73% 86.50%, -14.08% 80.82%, -16.85% 74.81%,
    -19.00% 68.55%, -20.53% 62.09%, -21.41% 55.50%, -21.67% 48.85%, -21.32% 42.21%, -20.37% 35.61%,
    -18.84% 29.11%, -16.76% 22.76%, -14.14% 16.59%, -11.00% 10.63%, -7.36% 4.93%, -3.22% -0.47%,
    1.40% -5.52%, 6.47% -10.17%, 11.99% -14.38%, 17.91% -18.08%, 24.19% -21.21%, 30.79% -23.74%,
    37.65% -25.61%, 44.69% -26.78%, 51.84% -27.23%, 59.02% -26.96%, 66.15% -25.96%, 73.16% -24.26%,
    79.98% -21.87%, 86.54% -18.84%, 92.80% -15.20%, 98.70% -11.00%, 104.22% -6.29%, 109.30% -1.11%,
    113.94% 4.50%, 118.10% 10.50%, 121.74% 16.86%, 124.85% 23.53%, 127.39% 30.48%, 129.33% 37.67%,
    130.62% 45.05%, 131.23% 52.56%, 131.13% 60.15%, 130.30% 67.73%, 128.73% 75.23%, 126.40% 82.57%,
    123.34% 89.67%, 119.57% 96.45%, 115.12% 102.83%, 110.05% 108.74%, 104.41% 114.14%, 98.98% 107.73%,
    104.05% 102.87%, 108.60% 97.54%, 112.58% 91.78%, 115.95% 85.67%, 118.68% 79.28%, 120.73% 72.66%,
    122.10% 65.92%, 122.80% 59.10%, 122.83% 52.30%, 122.23% 45.57%, 121.03% 38.96%, 119.25% 32.54%,
    116.94% 26.33%, 114.12% 20.38%, 110.83% 14.72%, 107.10% 9.37%, 102.94% 4.38%, 98.39% -0.24%,
    93.46% -4.44%, 88.19% -8.18%, 82.61% -11.42%, 76.75% -14.12%, 70.66% -16.24%, 64.40% -17.75%,
    58.04% -18.62%, 51.64% -18.84%, 45.27% -18.40%, 39.00% -17.31%, 32.91% -15.61%, 27.06% -13.32%,
    21.49% -10.48%, 16.26% -7.14%, 11.40% -3.37%, 6.93% 0.80%, 2.88% 5.31%, -0.75% 10.12%,
    -3.94% 15.19%, -6.69% 20.47%, -8.98% 25.93%, -10.80% 31.55%, -12.14% 37.29%, -12.97% 43.12%,
    -13.27% 48.99%, -13.04% 54.85%, -12.25% 60.67%, -10.89% 66.37%, -8.98% 71.89%, -6.51% 77.18%,
    -3.53% 82.17%, -0.05% 86.80%, 3.86% 91.03%, 8.15% 94.82%, 12.78% 98.14%, 17.67% 100.97%,
    22.76% 103.30%, 28.00% 105.14%, 33.34% 106.49%, 38.73% 107.38%, 44.14% 107.80%, 49.53% 107.78%,
    54.86% 107.33%, 60.12% 106.44%, 65.28% 105.12%, 70.29% 103.38%, 75.12% 101.20%, 79.73% 98.60%,
    84.07% 95.59%, 88.09% 92.17%, 91.75% 88.38%, 95.00% 84.24%, 97.79% 79.80%, 100.09% 75.11%,
    101.88% 70.23%, 103.14% 65.22%, 103.88% 60.15%, 104.11% 55.06%, 103.85% 50.02%, 103.12% 45.08%,
    101.97% 40.26%, 100.41% 35.61%, 98.48% 31.14%, 96.21% 26.88%, 93.62% 22.85%, 90.74% 19.06%,
    87.57% 15.53%, 84.13% 12.28%, 80.44% 9.35%, 76.50% 6.75%, 72.35% 4.53%, 68.02% 2.72%,
    63.53% 1.35%, 58.94% 0.44%, 54.29% 0.02%, 49.63% 0.09%, 45.04% 0.65%, 40.56% 1.69%,
    36.24% 3.18%, 32.13% 5.09%, 28.26% 7.38%, 24.67% 10.00%, 21.37% 12.91%, 18.38% 16.07%,
    15.69% 19.43%, 13.31% 22.97%, 11.24% 26.66%, 9.47% 30.46%, 8.02% 34.38%, 6.89% 38.37%,
    6.10% 42.44%, 5.66% 46.55%, 5.59% 50.67%, 5.90% 54.78%, 6.62% 58.83%, 7.73% 62.78%,
    9.25% 66.59%, 11.16% 70.19%, 13.43% 73.56%, 16.04% 76.63%, 18.95% 79.40%, 22.10% 81.81%,
    25.45% 83.88%, 28.95% 85.58%, 32.55% 86.93%, 36.22% 87.93%, 39.91% 88.61%, 43.60% 88.97%,
    47.26% 89.04%, 50.89% 88.83%, 54.46% 88.35%, 57.96% 87.60%, 61.38% 86.58%, 64.69% 85.29%,
    67.86% 83.72%, 70.88% 81.87%, 73.71% 79.75%, 76.30% 77.35%, 78.62% 74.71%, 80.64% 71.84%,
    82.32% 68.78%, 83.64% 65.58%, 84.59% 62.27%, 85.18% 58.90%, 85.39% 55.53%, 85.27% 52.20%,
    84.82% 48.93%, 84.08% 45.77%, 83.08% 42.73%, 81.85% 39.83%, 80.41% 37.07%, 78.79% 34.46%,
    77.00% 32.01%, 75.06% 29.71%, 72.96% 27.58%, 70.71% 25.63%, 68.32% 23.87%, 65.79% 22.34%,
    63.13% 21.04%, 60.37% 20.02%, 57.52% 19.30%, 54.62% 18.89%, 51.70% 18.81%, 48.81% 19.06%,
    45.99% 19.63%, 43.28% 20.52%, 40.71% 21.68%, 38.31% 23.10%, 36.11% 24.74%, 34.11% 26.55%,
    32.31% 28.50%, 30.72% 30.56%, 29.31% 32.69%, 28.10% 34.89%, 27.05% 37.14%, 26.18% 39.42%,
    25.47% 41.73%, 24.93% 44.07%, 24.58% 46.43%, 24.43% 48.81%, 24.48% 51.18%, 24.76% 53.53%,
    25.29% 55.84%, 26.06% 58.06%, 27.07% 60.17%, 28.33% 62.14%, 29.79% 63.92%, 31.45% 65.51%,
    33.26% 66.87%, 35.21% 67.96%, 37.26% 68.79%, 39.35% 69.35%, 41.44% 69.66%, 43.51% 69.76%,
    45.50% 69.69%, 47.42% 69.46%, 49.26% 69.13%, 51.01% 68.71%, 52.69% 68.23%, 54.32% 67.67%,
    55.88% 67.05%, 57.40% 66.32%, 58.83% 65.48%, 60.18% 64.52%, 61.41% 63.44%, 62.49% 62.21%,
    63.39% 60.85%, 64.09% 59.40%, 64.54% 57.85%, 64.74% 56.27%, 64.71% 54.70%, 64.43% 53.18%,
    63.95% 51.74%, 63.31% 50.42%, 62.56% 49.22%, 61.72% 48.17%, 60.86% 47.26%, 60.01% 46.46%,
    59.17% 45.76%, 58.38% 45.14%, 57.63% 44.57%, 56.90% 44.05%, 56.20% 43.56%, 55.50% 43.10%,
    54.79% 42.70%, 54.05% 42.35%, 53.30% 42.08%, 52.52% 41.91%, 51.73% 41.86%, 50.94% 41.97%,
    50.18% 42.20%, 49.49% 42.57%, 48.87% 43.06%, 48.34% 43.64%, 47.93% 44.29%, 47.62% 44.97%,
    47.42% 45.63%, 47.30% 46.27%, 47.25% 46.86%, 47.24% 47.38%, 47.25% 47.84%, 47.28% 48.25%,
    47.31% 48.60%, 47.34% 48.91%, 47.35% 49.20%, 47.36% 49.46%, 47.38% 49.71%, 47.40% 49.96%,
    47.44% 50.20%, 47.52% 50.43%, 47.63% 50.64%, 47.78% 50.83%, 47.98% 50.97%, 48.21% 51.08%,
    48.46% 51.14%, 48.71% 51.15%, 48.97% 51.11%, 49.20% 51.03%, 49.41% 50.93%, 49.58% 50.82%,
    49.72% 50.70%, 49.83% 50.59%, 49.91% 50.48%, 49.96% 50.38%, 50.00% 50.30%, 50.02% 50.24%,
    50.03% 50.19%, 50.04% 50.15%, 50.05% 50.13%, 50.05% 50.10%, 50.05% 50.09%, 50.05% 50.07%,
    50.05% 50.05%, 50.03% 50.03%, 50.00% 50.00%, 50.00% 50.00%, 50.00% 50.00%, 50.00% 50.00%,
    50.00% 50.00%, 50.00% 50.00%, 50.00% 50.00%, 50.00% 50.00%
  );
  transform: translate(-50%, -50%) rotate(-20deg);
  animation: spiral-spin 90s linear infinite;
}

@keyframes spiral-spin {
  from { transform: translate(-50%, -50%) rotate(-20deg); }
  to { transform: translate(-50%, -50%) rotate(340deg); }
}

/* Respect the visitor's reduced-motion preference. */
@media (prefers-reduced-motion: reduce) {
  body::before { animation: none; }
}

h1.title, h1, h2, h3, h4, h5, h6 {
  font-family: "Comic Sans MS", "Comic Sans", cursive;
  font-weight: 700;
  font-style: italic;
}

/* Muted lavender: HSV 270deg / 20% / 82.35%, with 80% opacity. */
main.content {
  background-color: rgb(189 168 210 / 80%);
  padding: clamp(1rem, 3vw, 2rem);
  border-radius: 0.5rem;
  align-self: start;
}

/* Small project previews; open the image to see the full screenshot. */
.project-entry {
  margin: 2rem 0;
}

.project-preview {
  display: block;
  width: 100%;
  max-width: 320px;
  height: auto;
  margin-bottom: 1rem;
  border: 1px solid rgb(50 35 65 / 35%);
  border-radius: 0.35rem;
}

.project-entry a:focus-visible {
  outline: 3px solid #49245e;
  outline-offset: 4px;
}

.project-entry h2 {
  margin-top: 0;
}

.project-entry > :last-child {
  margin-bottom: 0;
}
