@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);
  --coming-soon-color: #04843b; }

body {
  margin: 40px auto;
  max-width: 650px;
  line-height: 1.6;
  font-size: 20px;
  padding: 0 10px;
  font-family: "Atkinson Hyperlegible Next", "Noto Sans JP", sans; }

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

header {
  text-align: center;
  margin-bottom: 25px; }
  header #logo {
    margin-bottom: 20px; }
    header #logo svg {
      width: 200px;
      height: auto; }
  header h1, header h2 {
    margin-top: 10px;
    margin-bottom: 10px; }
  header nav {
    margin-top: 25px;
    border-top: 1px solid var(--theme-color);
    border-bottom: 1px solid var(--theme-color);
    width: 60%;
    margin-left: auto;
    margin-right: auto;
    padding-top: 10px;
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 16px; }
    header nav a {
      text-decoration: none; }
    header nav svg {
      width: 40px;
      height: auto; }
    header nav a#mail svg path {
      fill: #ffffff; }
    header nav a#mail:hover svg path {
      fill: var(--theme-color); }
    header nav a#bluesky svg path {
      fill: #0085ff; }
    header nav 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; }

.portfolio-item.coming-soon .portfolio-body::before {
  content: "Coming Soon";
  font-weight: bold;
  display: block;
  width: 100%;
  background-color: var(--coming-soon-color);
  border-top-left-radius: 15px;
  border-top-right-radius: 15px; }

.portfolio-item.coming-soon .portfolio-body .portfolio-image > a {
  border-top-width: 0;
  border-top-left-radius: 0;
  border-top-right-radius: 0; }
