/* common */
body {
  margin: 0;
  font-family: Arial, Helvetica, sans-serif;
  --my-color: 240;
}
.container {
  width: calc(100% - 32px);
  margin: 0 auto;
  max-width: 800px;
  /* border: 2px solid red; */
}
a {
  text-decoration: none;
  color: inherit;
}
a:hover {
  opacity: 0.5;
}
h1 {
  font-size: 24px;
}
h2 {
  font-size: 20px;
}
h1, h2 {
  margin: 0;
  font-weight: normal;
  color: hsl(var(--my-color), 100%, 20%);
}
img {
  vertical-align: bottom;
}
p {
  margin: 0;
  line-height: 1.6;
}
ol, ul {
  list-style-type: none;
  margin: 0;
  padding: 0;
}
.new1 {
  position: relative;
  background-color:darkgoldenrod;
  color: #fff;
  border-radius: 4px;
  padding: 12px 0 0;
  margin-bottom: 8px;
  overflow: hidden;
  transition: 300ms;
  /* display: flex;
  justify-content: center; */
}
.new1::before {
  position: absolute;
  content: '';
  display: inline-block;
  top: -180px;
  left: 0;
  width: 30px;
  height: 100%;
  background-color:goldenrod;
  transition: 300ms;
  animation: shinyshiny 2.5s ease-in-out infinite;
}
@keyframes shinyshiny {
  0% { transform: scale(0) rotate(45deg); opacity: 0; }
  80% { transform: scale(0) rotate(45deg); opacity: 0.5; }
  81% { transform: scale(4) rotate(45deg); opacity: 1; }
  100% { transform: scale(50) rotate(45deg); opacity: 0; }
}
img.new2 {
  width: 60px;
  height: 24px;
  opacity: 0;
  box-shadow: none;
  position: absolute;
  top: -16px;
  right: 16px;
  animation: kurukuru 3s ease-out infinite;
}
@keyframes kurukuru {
  0% {
    transform: rotateY(0) translateY(40px);
    opacity: 0;
  }
  100% {
    transform: rotateY(360deg) transformY(0);
    opacity: 1;
  }
}

/*header */
header {
  padding: 16px 0;
}
header .container {
  display: flex;
  /* justify-content: center; */
  align-items: center;
}

/* profile */
.profile {
  margin-bottom: 16px;
  padding: 0;
  background: #efefef;
}
.profile .container {
  width: 80%;
  max-width: 570px;
  padding: 32px 16px;
  line-height: 1;
  display: block;
  animation: slideInBottom 1s cubic-bezier(0.25, 1, 0.5, 1) 1 forwards;
}
@keyframes slideInBottom {
  0% {
    transform: translateY(60px);
    opacity: 0;
  }
  100% {
    transform: translateX(0);
  }
  40%,100% {
    opacity: 1;
  }
}
.profile .container div.protitle {
  width: 100%;
}
.profile .container div.protitle h1 {
  text-align: center;
  padding-bottom: 8px;
}
.profile .container div.proflex {
  display: block;
}
.profile .container div.icon {
  text-align: center;
  padding-bottom: 8px;
}
.profile img.icon {
  border-radius: 50%;
}
.profile .container div.pro {
  text-align: center;
}
.profile .pro h1 {
  font-size: 5vw;
}
.profile ul {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  margin: 0;
  padding: 0;
}
.profile li + li {
  padding-left: 8px;
}
.profile li i {
  font-size: 24px;
}
.profile .pro .p-0 {
  height: 70px;
  position: relative;
  overflow: hidden;
  margin: 8px 0;
}
.profile .pro p.p-1st {
  width: 100%;
  padding-left: 0;
  overflow: visible;
  position: absolute;
  top: 0;
  left: 0;
  animation: slide 20s linear 1s infinite both;
}
.profile .pro p.p-2nd {
  width: 100%;
  padding-left: 0;
  overflow: visible;
  position: absolute;
  top: 0;
  left: 0;
  animation: slide 20s linear 6s infinite both;
}
.profile .pro p.p-3rd {
  width: 100%;
  padding-left: 0;
  overflow: visible;
  position: absolute;
  top: 0;
  left: 0;
  animation: slide 20s linear 11s infinite both;
}
.profile .pro p.p-4th {
  width: 100%;
  padding-left: 0;
  overflow: visible;
  position: absolute;
  top: 0;
  left: 0;
  animation: slide 20s linear 16s infinite both;
}
@keyframes slide {
  0% {
    transform: translateX(100%);
  }
  3%, 23% {
    transform: translateX(0);
  }
  26%, 100% {
    transform: translateX(-100%);
  }
}
.profile .update {
  text-align: right;
  color: #aaa;
  font-style: italic;
  font-size: 14px;
  margin-top: 8px;
}

/* main */
main {
  padding: 64px 0;
  margin-bottom: 64px;
  background: linear-gradient(45deg, hsl(var(--my-color), 100%, 90%), hsl(var(--my-color), 100%, 99%), hsl(var(--my-color), 100%, 90%));
}
main .container {
  width: calc(100% - 64px);
  position: relative;
}
main .container .grid {
  position: relative;
  margin-bottom: 64px;
}
main h1 {
  text-align: center;
  padding-bottom: 64px;
}
main .poyo {
  animation: poyoyon2 4s ease-in-out forwards infinite;
}
@keyframes poyoyon2 {
  0%  {
    transform: scale(1.0, 1.0) translate(0, 0);
  }
  12% {
    transform: scale(0.98, 0.9) translate(0, 5px);
  }
  24% {
    transform: scale(1.02, 1.0) translate(0, 8px);
  }
  40% {transform: scale(0.98, 1.05) translate(0, -8px);
  }
  56% {
    transform: scale(1.0, 0.9) translate(0, 5px);
  }
  80%, 100% {
    transform: scale(1.0, 1.0) translate(0, 0);
  }
  0%, 100% {
    opacity: 1;
  }
}
main a {
  display: inline-block;
  position: relative;
}
main img {
  width: 100%;
  border-radius: 8px;
  box-shadow: 10px 5px rgba(0, 0, 0, 0.3);
}
main .box {
  width: 50%;
  height: 50%;
}
main .box1 {
  background: hsl(calc(var(--my-color) - 180), 100%, 50%);
  opacity: 0.2;
  border-top-left-radius: 8px;
  position: absolute;
  top: 0;
  left: 0;
}
main .box2 {
  background: hsl(calc(var(--my-color) - 120), 100%, 50%);
  opacity: 0.2;
  border-top-right-radius: 8px;
  position: absolute;
  top: 0;
  right: 0;
}
main .box3 {
  background: hsl(calc(var(--my-color) - 60), 100%, 50%);
  opacity: 0.2;
  border-bottom-left-radius: 8px;
  position: absolute;
  bottom: 0;;
  left: 0;
}
main .box4 {
  background: hsl(calc(var(--my-color) - 240), 100%, 50%);
  opacity: 0.2;
  border-bottom-right-radius: 8px;
  position: absolute;
  bottom: 0;
  right: 0;
}
main .desc {
  width: 80%;
  height: 80%;
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  text-align: center;
  display: flex;
  flex-direction: column;
  justify-content: center;
  background: rgba(255, 255, 255, 0.8);
  padding: 8px;
}
main .desc h2 {
  flex: 1;
  font-weight: bold;
  padding-top: 12px;
}
main .desc p {
  text-align: left;
  flex: 4;
  overflow: hidden;
}
main section.container + section.container {
  margin-top: 40px;
}

/* mailform */
main.form {
  width: 90vw;
  height: 360px;
  padding: 16px;
  text-align: center;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
}
main.form form {
  width: 70vw;
  height: 320px;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  align-items: flex-start;
}
main.form h1 {
  padding-bottom: 16px;
}
main.form .form1 {
  text-align: left;
}
main.form .btn {
  align-self: center;
}

/* works */
.works {
  padding: 64px 0;
  margin-bottom: 64px;
  background: linear-gradient(45deg, hsl(calc(var(--my-color) + 240), 100%, 90%), hsl(calc(var(--my-color) + 240), 100%, 99%), hsl(calc(var(--my-color) + 240), 100%, 90%));
}
.works .container {
  width: calc(100% - 64px);
  position: relative;
}
.works .container .grid {
  position: relative;
  margin-bottom: 64px;
}
.works h1 {
  text-align: center;
  padding-bottom: 64px;
}
.works a {
  display: inline-block;
  position: relative;
}
.works img {
  width: 100%;
  border-radius: 8px;
  box-shadow: 10px 5px rgba(0, 0, 0, 0.3);
}
.works .desc {
  width: 80%;
  height: 70%;
  position: absolute;
  top: 20%;
  left: 10%;
  text-align: center;
  display: flex;
  flex-direction: column;
  justify-content: center;
}
.works .desc h2 {
  flex: 1;
}
.works .desc p {
  text-align: left;
  flex: 4;
  overflow: hidden;
}
.works section.container + section.container {
  margin-top: 40px;
}

/* stars */
.stars {
  width: 100%;
  height: 50px;
  margin-bottom: 16px;
  position: relative;
  background: linear-gradient(90deg, darkblue, blueviolet, skyblue 35% 50%, orange, orangered, mediumslateblue, darkblue, blueviolet);
  background-size: 800% 100%;
  animation: skycolor 20s linear infinite;
  overflow: hidden;
}
.stars .horizon_1 {
  width: 100%;
  height: 50px;
  position: relative;
  background: linear-gradient(rgba(255, 255, 255, 0), rgba(255, 255, 255, 0.5) 60%, rgba(255, 255, 255, 0));
}
.star {
  position: absolute;
  width: 200%;
  height: 100%;
  animation: skystars 360s linear infinite;
}
@keyframes skystars {
  0% {
    left: -2vw;
    opacity: 0;
  }
  5% {
    left: -7vw;
    opacity: 1;
  }
  95% {
    left: -97vw;
    opacity: 1;
  }
  100% {
    left: -102vw;
    opacity: 0;
  }
}
.star p {
  position: absolute;
  margin: 0;
  padding: 0;
  background: #fff;
  overflow: visible;
  animation: stars 4s infinite;
  border-radius: 40%;
}
@keyframes stars {
  0% {
    opacity: 1;
  }
  50% {
    opacity: 0.2;
  }
}
.star p:nth-of-type(3n) {
  background: rgb(255, 255, 200);
}
.star p:nth-of-type(3n-1) {
  background: rgb(255, 255, 255);
}
.star p:nth-of-type(3n-2) {
  background: rgb(255, 200, 255);
}
.star.-type_1 p {
  width: 2px;
  height: 2px;
}
.star.-type_2 p {
  width: 3px;
  height: 3px;
}
.star.-type_3 p {
  width: 4px;
  height: 4px;
}
.star.-type_1 p:nth-of-type(1) {
  top: 5%;
  left: 5%;
  animation-delay: 0;
}
.star.-type_1 p:nth-of-type(2) {
  top: 20%;
  left: 20%;
  animation-delay: 5s;
}
.star.-type_1 p:nth-of-type(3) {
  top: 30%;
  left: 30%;
  animation-delay: 8s;
}
.star.-type_1 p:nth-of-type(4) {
  top: 80%;
  left: 40%;
  animation-delay: 2s;
}
.star.-type_1 p:nth-of-type(5) {
  top: 5%;
  left: 50%;
  animation-delay: 3s;
}
.star.-type_1 p:nth-of-type(6) {
  top: 40%;
  left: 60%;
  animation-delay: 7s;
}
.star.-type_1 p:nth-of-type(7) {
  top: 10%;
  left: 70%;
  animation-delay: 9s;
}
.star.-type_1 p:nth-of-type(8) {
  top: 20%;
  left: 80%;
  animation-delay: 4s;
}
.star.-type_1 p:nth-of-type(9) {
  top: 60%;
  left: 90%;
  animation-delay: 1s;
}
.star.-type_1 p:nth-of-type(10) {
  top: 10%;
  left: 90%;
  animation-delay: 6s;
}
.star.-type_2 p:nth-of-type(1) {
  top: 84%;
  left: 4%;
  animation-delay: 7s;
}
.star.-type_2 p:nth-of-type(2) {
  top: 34%;
  left: 14%;
  animation-delay: 0s;
}
.star.-type_2 p:nth-of-type(3) {
  top: 64%;
  left: 34%;
  animation-delay: 1s;
}
.star.-type_2 p:nth-of-type(4) {
  top: 14%;
  left: 44%;
  animation-delay: 2s;
}
.star.-type_2 p:nth-of-type(5) {
  top: 74%;
  left: 54%;
  animation-delay: 9s;
}
.star.-type_2 p:nth-of-type(6) {
  top: 44%;
  left: 64%;
  animation-delay: 5s;
}
.star.-type_2 p:nth-of-type(7) {
  top: 84%;
  left: 74%;
  animation-delay: 3s;
}
.star.-type_2 p:nth-of-type(8) {
  top: 44%;
  left: 84%;
  animation-delay: 8s;
}
.star.-type_2 p:nth-of-type(9) {
  top: 34%;
  left: 74%;
  animation-delay: 6s;
}
.star.-type_2 p:nth-of-type(10) {
  top: 4%;
  left: 87%;
  animation-delay: 4s;
}
.star.-type_3 p:nth-of-type(1) {
  top: 74%;
  left: 7%;
  animation-delay: 8s;
}
.star.-type_3 p:nth-of-type(2) {
  top: 47%;
  left: 17%;
  animation-delay: 1s;
}
.star.-type_3 p:nth-of-type(3) {
  top: 64%;
  left: 27%;
  animation-delay: 7s;
}
.star.-type_3 p:nth-of-type(4) {
  top: 77%;
  left: 37%;
  animation-delay: 2s;
}
.star.-type_3 p:nth-of-type(5) {
  top: 27%;
  left: 57%;
  animation-delay: 6s;
}
.star.-type_3 p:nth-of-type(6) {
  top: 74%;
  left: 67%;
  animation-delay: 4s;
}
.star.-type_3 p:nth-of-type(7) {
  top: 7%;
  left: 77%;
  animation-delay: 2s;
}
.star.-type_3 p:nth-of-type(8) {
  top: 87%;
  left: 87%;
  animation-delay: 5s;
}
.star.-type_3 p:nth-of-type(9) {
  top: 77%;
  left: 24%;
  animation-delay: 9s;
}
.star.-type_3 p:nth-of-type(10) {
  top: 17%;
  left: 63%;
  animation-delay: 3s;
}
.-type_4 {
  position: absolute;
  width: 50px;
  height: 50px;
  transform: rotateZ(45deg);
}
.-type_4 p {
  width: 2px;
  height: 0;
  background: linear-gradient(rgba(255, 255, 255, 0), rgba(255, 255, 255, 1));
  animation: shooting 15s linear infinite;
}
@keyframes shooting {
  0%, 80% {
    height: 0;
    opacity: 0.5;
  }
  90% {
    height: 30px;
    opacity: 1;
  }
  100% {
    height: 50px;
    opacity: 0;
  }
}
.-type_4:nth-of-type(1) {
  top: 10%;
  left: 75%;
}
.-type_4:nth-of-type(1) p {
  animation-delay: 0s;
}
.-type_4:nth-of-type(2) {
  top: 30%;
  left: 35%;
}
.-type_4:nth-of-type(2) p {
  animation-delay: 2s;
}
.-type_4:nth-of-type(3) {
  top: 20%;
  left: 60%;
}
.-type_4:nth-of-type(3) p {
  animation-delay: 5s;
}

/* flying */
.flying {
  width: 100%;
  height: 50px;
  position: relative;
  background: linear-gradient(90deg, darkblue, blueviolet, skyblue 35% 50%, orange, orangered, mediumslateblue, darkblue, blueviolet);
  background-size: 800% 100%;
  animation: skycolor 20s linear infinite;
  overflow: hidden;
}
.flying .horizon_2 {
  width: 100%;
  height: 50px;
  position: relative;
  background: linear-gradient(rgba(255, 255, 255, 0), rgba(255, 255, 255, 1) 60%, rgba(255, 255, 255, 0));
}
.bird {
  position: absolute;
  top: -10px;
  left: -10px;
  width: 7px;
  height: 7px;
  transform: rotate(45deg);
  animation: moving 16s linear infinite;
  overflow: visible;
}
.bird.-type_2 {
  animation-delay: 1s;
}
.bird.-type_2:before,
.bird.-type_2:after {
  animation-delay: -2s;
}
.bird.-type_3 {
  animation-delay: 3s;
}
@keyframes moving {
  0% {
    top: 10px;
    left: -2vw;
  }
  25% {
    top: 20px;
    left: 23vw;
  }
  100% {
    top: 10px;
    left: 102vw;
  }
}
.bird:before, .bird:after {
  content: "";
  position: absolute;
  bottom: 0;
  right: 0;
  background-color: black;
  transform: rotate(-30deg);
  transform-origin: right bottom;
}
.bird:before {
  width: 100%;
  height: 1px;
  animation: leftWing 8s linear infinite;
}
.bird:after {
  width: 1px;
  height: 100%;
  animation: rightWing 8s linear infinite;
}
@keyframes leftWing {
  0%   { transform: rotate(-30deg); }
  2%   { transform: rotate(-110deg); }
  4%   { transform: rotate(-30deg); }
  6%   { transform: rotate(-110deg); }
  8%   { transform: rotate(-30deg); }
  10%  { transform: rotate(-110deg); }
  12%  { transform: rotate(-30deg); }
  30%  { transform: rotate(-30deg); }
  42%  { transform: rotate(-35deg); }
  72%  { transform: rotate(-35deg); }
  74%  { transform: rotate(10deg); }
  76%  { transform: rotate(-30deg); }
  78%  { transform: rotate(-110deg); }
  80%  { transform: rotate(-30deg); }
  82%  { transform: rotate(-110deg); }
  84%  { transform: rotate(-30deg); }
  86%  { transform: rotate(-110deg); }
  88%  { transform: rotate(-30deg); }
  90%  { transform: rotate(-110deg); }
  92%  { transform: rotate(-30deg); }
  94%  { transform: rotate(-110deg); }
  96%  { transform: rotate(-30deg); }
  98%  { transform: rotate(-110deg); }
  100% { transform: rotate(-30deg); }
}
@keyframes rightWing {
  0%   { transform: rotate(30deg); }
  2%   { transform: rotate(110deg); }
  4%   { transform: rotate(30deg); }
  6%   { transform: rotate(110deg); }
  8%   { transform: rotate(30deg); }
  10%  { transform: rotate(110deg); }
  12%  { transform: rotate(30deg); }
  30%  { transform: rotate(30deg); }
  42%  { transform: rotate(35deg); }
  72%  { transform: rotate(35deg); }
  74%  { transform: rotate(0deg); }
  76%  { transform: rotate(30deg); }
  78%  { transform: rotate(110deg); }
  80%  { transform: rotate(30deg); }
  82%  { transform: rotate(110deg); }
  84%  { transform: rotate(30deg); }
  86%  { transform: rotate(110deg); }
  88%  { transform: rotate(30deg); }
  90%  { transform: rotate(110deg); }
  92%  { transform: rotate(30deg); }
  94%  { transform: rotate(110deg); }
  96%  { transform: rotate(30deg); }
  98%  { transform: rotate(110deg); }
  100% { transform: rotate(30deg); }
}
@keyframes skycolor {
  0% {background-position:0% 50%}
  50% {background-position:50% 50%}
  100% {background-position:100% 50%}
}

/* link */
.link {
  margin: 60px auto 0;
  text-align: center;
}
.link h1 {
  font-size: 20px;
}

/* button */
#page_top{
  width: 50px;
  height: 50px;
  position: fixed;
  right: 10px;
  bottom: -50px;
  background: #ef3f98;
  opacity: 0.6;
  border-radius: 50%;
}
#page_top a {
  position: relative;
  display: block;
  width: 50px;
  height: 50px;
  text-decoration: none;
}
#page_top a::before {
  position:absolute;
}
#page_top a .upper {
  width: 24px;
  height: 24px;
  position: relative;
  top: 16px;
  left: 12px;
  border-right: 4px solid #fff;
  border-bottom: 4px solid #fff;
  transform: rotateZ(-135deg);
  border-radius: 4px;
}

/* policy */
.rule .container {
  background: rgb(220, 220, 255);
}
.privacy .container {
  background: rgb(200, 255, 200);
  margin-top: 16px;
}
.policy .container {
  padding: 8px 24px 8px 0;
  border-radius: 5px;
}
.policy h1 {
  text-align: center;
}
.policy li {
  list-style: square inside;
  padding-top: 8px;
}
.policy li:first-child {
  padding-top: 0;
}
.policy a {
  text-decoration: underline;
}

/* footer */
footer {
  padding: 60px;
  text-align: center;
  color: #aaa;
  display: flex;
  justify-content: right;
  align-content: center;
  align-items: center;
  column-gap: 2rem;
}
footer p {
  font-size: 14px;
  margin-bottom: 8px;
}
footer p a {
  text-decoration: underline;
}

/* smaller screen */
@media (max-width:420px) {
  main .desc h2 {
    font-size: 16px;
    padding-top: 4px;
    padding-bottom: 4px;
  }
  main .desc p {
    font-size: 13px;
    line-height: 1.4;
  }
  footer {
    padding: 20px;
    display: block;
  }
  /* .container {
    width: calc(100% - 16px);
  }
  header .profile .container {
    width: 88%;
    padding: 32px 16px;
    animation: slideInBottom2 1s cubic-bezier(0.25, 1, 0.5, 1) 1 forwards;
  }
  @keyframes slideInBottom2 {
    0% {
      transform: translateY(30px);
      opacity: 0;
    }
    100% {
      transform: translateX(0);
    }
    40%,100% {
      opacity: 1;
    }
  }
  main .container {
    width: calc(100% - 64px);
  } */
}

/* larger screen */
@media (min-width:600px) {
  img.new2 {
    position: absolute;
    top: -16px;
    right: -8px;
  }
  .profile .container div.proflex {
    display: flex;
    align-items: center;
  }
  .profile .container div.icon {
    flex: 2;
    text-align: right;
  }
  .profile .container div.pro {
    flex: 3;
    text-align: left;
  }
  .profile .container .proflex > div + div {
    margin-left: 36px;
  }
  .profile .pro h1 {
    font-size: 20px;
  }
  .profile .pro .p-0 {
    margin: 16px 0;
  }
  .profile ul {
    justify-content: start;
  }
  .profile .update {
    display: flex;
    justify-content: right;
    column-gap: 2rem;
    align-items: center;
  }
  /* main {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: flex-start;
  } */
  main .container {
    display: flex;
    flex-direction: row;
    justify-content: flex-start;
    align-items: flex-start;
    flex-wrap: wrap;
    align-content: flex-start;
  }
  main .grid {
    width: calc(100% / 2 - 16px);
    /* flex-grow: 1; */
  }
  /* main .desc {
   height: 80%;
   position: absolute;
   top: 10%;
  } */
  /* main .desc, main .pic {
    width: 50%;
  } */
  main h2 {
    padding-bottom: 0;
  }
  main a {
    margin-bottom: 0;
  }
  main img {
    width: 100%;
    height: auto;
  }
  img.new {
    width: 60px;
    height: 24px;
  }
  /* main section:nth-child(odd) {
  flex-direction: row-reverse;
  }
  main section:nth-child(even) .pic {
    margin-right: 32px;
  }
  main section:nth-child(odd) .pic {
    margin-left: 32px;
  } */
  main section.grid + section.grid {
    margin-bottom: 32px;
  }
  main section.grid:nth-child(even) {
    margin-left: 32px;
  }
  /* main section.grid:last-child {
    flex-grow: 0;
  } */
  .works .container {
    display: flex;
    flex-direction: row;
    justify-content: flex-start;
    align-items: flex-start;
    flex-wrap: wrap;
    align-content: flex-start;
  }
  .works .grid {
    width: calc(100% / 2 - 16px);
    /* flex-grow: 1; */
  }
  .works .desc {
   height: 80%;
   position: absolute;
   top: 10%;
  }
  .works h2 {
    padding-bottom: 0;
  }
  .works a {
    margin-bottom: 0;
  }
  .works img {
    width: 100%;
    height: auto;
  }
  .works section.grid + section.grid {
    margin-bottom: 32px;
  }
  .works section.grid:nth-child(even) {
    margin-left: 32px;
  }
}