@font-face {
  font-family: "Atkinson Hyperlegible Next";
  src: url(/fonts/AtkinsonHyperlegibleNext-VariableFont_wght.ttf) format(truetype) tech(variations);
  font-weight: 200 800;
  font-display: swap; }

@font-face {
  font-family: "Atkinson Hyperlegible Next";
  src: url(/fonts/AtkinsonHyperlegibleNext-Italic-VariableFont_wght.ttf) format(truetype) tech(variations);
  font-weight: 200 800;
  font-style: italic;
  font-display: swap; }

@font-face {
  font-family: "Noto Sans JP";
  src: url(/fonts/NotoSansJP-VariableFont_wght.ttf) format(truetype) tech(variations);
  font-weight: 100 900;
  font-display: swap; }

:root {
  --theme-color: #b9ddff;
  --image-border-color: var(--theme-color);
  font-size: 20px;
  font-family: "Atkinson Hyperlegible Next", "Noto Sans JP", sans; }

body {
  margin: 1.6rem auto;
  max-width: 650px;
  line-height: 1.6;
  padding: 0 10px;
  text-align: justify; }

h1, h2, h3, h4 {
  line-height: 1.2;
  text-align: center; }

header {
  text-align: center;
  margin-bottom: 25px; }
  header #logo {
    margin-bottom: 0.6rem; }
    header #logo svg {
      width: 200px;
      height: auto; }
  header h1 {
    font-size: 2.2rem;
    margin-top: 0.6rem;
    margin-bottom: 0.6rem; }
  header h2 {
    margin-top: 10px;
    margin-bottom: 10px; }
  header nav {
    display: flex;
    width: 60%;
    margin-left: auto;
    margin-right: auto; }
    header nav#lang {
      justify-content: space-evenly;
      font-size: 0.8rem;
      margin-top: 0.2rem; }
      header nav#lang .current-lang {
        font-weight: bold; }
    header nav#contact {
      margin-top: 0.6rem;
      border-top: 1px solid var(--theme-color);
      border-bottom: 1px solid var(--theme-color);
      padding-top: 10px;
      justify-content: center;
      align-items: center;
      gap: 16px; }
      header nav#contact a {
        text-decoration: none; }
      header nav#contact svg {
        width: 40px;
        height: auto; }
      header nav#contact a#mail svg path {
        fill: #ffffff; }
      header nav#contact a#mail:hover svg path {
        fill: var(--theme-color); }
      header nav#contact a#bluesky svg path {
        fill: #0085ff; }
      header nav#contact a#bluesky:hover svg path {
        fill: #0065dd; }

#portfolio-section-header {
  margin-bottom: 8px; }

#show-r18 {
  width: 2em;
  height: 2em;
  vertical-align: middle; }

label[for=show-r18] {
  display: inline-block;
  vertical-align: middle; }

#portfolio-items {
  margin-top: 25px;
  display: flex;
  flex-flow: row wrap;
  justify-content: space-evenly;
  gap: 20px; }

.portfolio-item {
  max-width: calc(min(250px, 100%));
  flex-grow: 1;
  flex-basis: 200px; }

.portfolio-title {
  font-weight: bold; }

.portfolio-text {
  display: none; }

.portfolio-image {
  min-width: 0;
  display: flex;
  justify-content: center;
  align-items: center; }
  .portfolio-image > a {
    margin-left: auto;
    margin-right: auto;
    display: block;
    line-height: 0;
    border-radius: 15px;
    border: 3px solid var(--image-border-color);
    overflow: hidden; }
  .portfolio-image img {
    max-width: 100%; }
  .portfolio-image.r18 img {
    filter: blur(20px);
    transition: filter 0.5s; }

#portfolio {
  text-align: center; }

#show-r18:checked ~ #portfolio-items .r18 img {
  filter: none; }
