/* カスタムプロパティ */
:root{
  /* メインコンテンツ */
  --main-color: #1D2739;
  --base-color: #FFFFFF;
  --accent-color: #11B7DA;
  --side-color: #DDFFFF;

  --hover-color: #00FFFF;

  /* ダイアログ */
  --dialog-bg-color: #F5F5F5;
  --dialog-border-color: #000000;
  --dialog-label-border-color: #DDDDDD;

  /* キャンパス */
  --canvas-bg-color: #252525;

  /* フォーム */
  --form-bg-color: #EEEEEE;
  --form-label-border-color: #000000;
  --form-required-element-color: #FF0000;

  /* ボタンの色 */
  --positive-button-color: #3333FF;
  --negative-button-color: #FF0000;
  --neutral-button-color: #FFFFFF;
  --disabled-button-color: #D3D3D3;

  --gradation-button-color: linear-gradient(135deg, #11B7DA 5%, #A2EEFD);
  --gradation-button-hover-color: linear-gradient(135deg, #00FFFF 50%, #A2EEFD);

  /* 情報色 */
  --info-color: #3CFF0080;
  --warning-color: #FF222280;

  --header-height: 60px;
  --footer-height: 80px;

}
@media screen and (max-width: 959px){
  :root{
    --header-height: 40px;
    --footer-height: 70px;
  }
}

/* Common settings */
html{
  font-size: 62.5%;
  width: 100%;
  height: 100%;
  text-size-adjust: 100%;
	-webkit-text-size-adjust: 100%;
}

body{
  width: 100%;
  height: 100%;
  background-color: var(--base-color);
  font-size: 1.6rem;
}

p{
  font-size: 1.6rem;
  margin: 8px 0;
  padding: 0 8px;
}

ul, ol{
  margin: 8px 0;
}
li, dt, dd{
  font-size: 1.6rem;
}

h2{
  font-size: 2.4rem;
  margin: 12px 0;
  padding: 3px 10px;
  background-color: var(--accent-color);

}
h3{
  font-size: 2.0rem;
  margin: 12px 0;
  padding: 3px 10px;
  background-color: var(--accent-color);

}

section{
  padding-bottom: 12px;
}

.footerFixed{
  position: relative;
  min-height: 100svh;
  padding-top: var(--header-height);
  padding-bottom: calc(1.2rem * 2 + 53px);
  box-sizing: border-box;
}

@media screen and (max-width: 959px) {
  h2, h3{
    font-size: 1.8rem;
  }

  .footerFixed{
    padding-top: 40px;
    min-height: 100svh;
    padding-bottom: calc(1.2rem + 1rem + 53px);
  }
}
/* Common settings End*/

/* button */
button{
  border: none;
  background: transparent;
  font-size: 1.6rem;
  cursor: pointer;
  margin: 0.125rem;
  padding: 0 0.8rem;
}

button[disabled]{
  pointer-events: none;
}

.positive-button:hover{
  color: var(--base-color);
  background-color: var(--positive-button-color);
  border-radius: 5px;
}

.neutral-button:hover{
  color: var(--base-color);
}

.negative-button:hover{
  color: var(--negative-button-color);
}

.menu-button{
  color: var(--base-color);
}

.menu-button:hover{
  color: var(--accent-color);
}

.load-word-button{
  width: fit-content;
  display: block;
  margin: 0 auto;
  padding: 5px 30px;
  background-color: var(--accent-color);
  border-radius: 15px;

  color: var(--main-color);
  font-weight: bold;
  transition: 0.3s;
  background: var(--gradation-button-color);
}

.load-word-button:hover{
  background: var(--gradation-button-hover-color);
}
/* button End */

/* Header */
header {
  height: var(--header-height);
  width: 100%;
  padding: 5px 20px;
  margin: 0 auto;
  background-color: var(--main-color);
  font-size: 32px;
  display: flex;
  flex-direction: row;
  align-items: center;
  position: fixed;
  z-index: 100;
  top: 0;
  left: 0;
}

header a{
  color: var(--base-color);
  text-decoration: none;
  display: flex;
  align-items: center;
}

header a:active{
  color: var(--base-color)
}

.header-logo{
  color: var(--base-color);
}

/* menu */
.hamburger{
  width: 40px;
  height: 25px;
  position: relative;
  margin-left: auto;
}
@media screen and (max-width: 959px){
  .hamburger{
    width: 30px;
    height: 15px;
  }
}
.hamburger span{
  position: absolute;
  width: 100%;
  height: 1px;
  background-color: var(--base-color);
  transition: .5s;
}
.hamburger span:first-of-type{
  top: 0;
}
.hamburger span:nth-of-type(2){
  top: 50%;
}
.hamburger span:last-of-type{
  top: 100%;
}
.slide-menu{
  background-color: rgba(0, 0, 0, 90);
  position: fixed;
  top: var(--header-height);
  width: 100%;
  max-width: 500px;
  right: 0;
  transform: translateX(min(100%, 500px));
  transition: .5s;
  list-style: none;
  margin: 0;
  padding: 0;
}
.slide-menu li{
  display: flex;
  flex-direction: row;
  color: #fff;
  margin: 0;
  padding: 5px 10px;
}
.slide-menu li input{
  margin-left: auto;
  color: white;
}
.hamburger.active span{
  background-color: red;
}
.hamburger.active span:first-of-type{
  top: 50%;
  transform: rotate(45deg);
}
.hamburger.active span:nth-of-type(2){
  opacity: 0;
}
.hamburger.active span:last-of-type{
  top: 50%;
  transform: rotate(-45deg);
}
.slide-menu.active{
  transform: translateX(0);
}
/* menu End */

@media screen and (max-width: 959px){
  header {
    font-size: 24px;
    padding: 5px 8px;
  }
}
/* Header End*/

/* home */
#home{
  position: relative;
  width: 100%;
  height: calc(100svh - var(--header-height));
  min-height: calc(min(75vw, 800px) / (16 / 9) + 72px + 2.4rem + 120px);
  background-color: var(--main-color);
  color: var(--base-color);

  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  overflow: hidden;
}

#home img{
  margin: auto;
  display: block;
  width: min(75vw, 800px);
  max-height: calc(min(75vw, 800px) / (16 / 9));
}

#home h2{
  text-align: center;
  font-size: 72px;
  background: transparent;
}

#home p{
  text-align: center;
  font-size: 2.4rem;
}

#home button{
  margin-top: auto;
  margin-bottom: 1.6rem;
  color: var(--base-color);
}

#scroll-button{
  will-change: transform;
  animation-name: down;
  animation-timing-function: ease-in-out;
  animation-iteration-count: infinite;
  animation-direction: alternate;
  animation-duration: 1s;
}

@keyframes down {
  0% {
    color: var(--base-color);
    transform: translate(0, 0px);
  }
  100% {
    color: var(--accent-color);
    transform: translate(0, 3px);
  }
}


@media (hover: hover) {
  #home button:hover{
    color: var(--accent-color);
  }
}

@media screen and (max-width: 959px){
  #home{
    height: calc(100svh - 40px);
  }  

  #home h2{
    font-size: 48px;
  }
  
  #home p{
    font-size: 1.8rem;
  }
}
/* home End */

/* camera-permission-request */
#camera-permission-request-close-button{
  position: absolute;
  right: 0;
}
/* camera-permission-request End */

/* upload-request */
@media screen and (max-width: 959px){
  #upload-request{
    max-width: 90svw;
  }
}

#input-label{
  width: auto;
  padding: 0.8rem;
  font-size: 1.6rem;
  border-radius: 3px;
  border: 2px solid var(--dialog-label-border-color);
  box-sizing: border-box;
}
/* upload-request End */

/* dialog */
.dialog-box {
  position: absolute;
  border-radius: 10px;
  padding: 8px;
  background-color: var(--dialog-bg-color);
  z-index: 30;
  width: fit-content;
  max-width: 80%;
  height: fit-content;
  max-height: calc(100svh - var(--header-height) - var(--footer-height) - 20px);
  top: 0;
  bottom: 0;
  left: 0;
  right: 0;
  margin: auto;
  border: 4px double var(--dialog-border-color);
  overflow: auto;
  font-size: 1.6rem;
}

.dialog-box h3{
  position: relative;
  background-color: var(--dialog-bg-color);
  margin: 0;
}

.dialog-box h3::after{
  content:"";
  display:block;
  width:calc(100% - 1.6rem);
  height:3px;
  background-color:var(--accent-color);
  position:absolute;
  bottom:0;
  left:0.8rem;
}

.dialog-message{
  text-align: center;
  margin-bottom: 8px;
}

.two-choice-button-area{
  margin: 10px auto 0 auto;
  width: 100%;
  display:flex;
  justify-content: space-evenly;
  border-top: 1px solid #00000033;
  padding-top: 8px;
}
/* dialog End */

/* wrapper */
.wrapper{
  position: relative;
  width: 1170px;
  max-width: 75%;
  height: 100%;
  margin: 0.5rem auto;
  padding: 0.5rem;
  background-color: var(--base-color);
  scroll-margin-top: var(--header-height);
}

.main {
  display: flex;
  flex-direction: row;
  flex-grow: 1;
}

.sidebar{
  position: relative;
  width: calc(1.6rem * 20);
  max-width: 25%;
  margin: 0.5rem;
  padding: 0.5rem;
  background-color: var(--side-color);
}

@media screen and (max-width: 959px){
  .sidebar{
    display: none;
  }
}

.one-view{
  width: 100%;
  height: calc(100vh - var(--header-height));
}

.full-screen{
  position: absolute;
  width: 100%;
  height: calc(100svh - var(--header-height) - var(--footer-height));
  background-color: var(--canvas-bg-color);
}

.container{
  padding: 5px 16px;
  background-color: var(--base-color);
}

@media screen and (max-width: 959px){
  .wrapper{
    scroll-margin-top: 40px;
    max-width: 95%;
  }
}
/* wrapper End*/

/* highlight */
.info{
  display: block;
  font-size: 1.4rem;
  width: fit-content;
  margin: 0.8rem 0;
  padding: 2px 0.8rem;
  border-left: 10px solid var(--info-color);
}

.warn{
  display: block;
  font-size: 1.4rem;
  width: fit-content;
  margin: 0.8rem 0;
  padding: 2px 0.8rem;
  border-left: 10px solid var(--warning-color);
}
/* highlight End */

/* card */
.card-box{
  display: flex;
  width: fit-content;
  max-width: 95%;
  margin: 0 auto;
  padding: 5px;
  overflow-x: auto;
  overflow-y: hidden;
}
.card-box::-webkit-scrollbar{
  height:10px;
}
.card-box::-webkit-scrollbar-track{
  background: var(--accent-color);
  border-radius: 5px;
}
.card-box::-webkit-scrollbar-thumb{
  background: var(--main-color);
  border-radius: 5px;
}

.card{
  position: relative;
  width: 300px;
  max-width: 70vw;
  border: 2px solid var(--main-color);
  border-radius: 5px;
  padding: 5px;
  margin: 3px;
  display:flex;
  flex-direction:column;
  flex-shrink: 0;
  transition: all .3s cubic-bezier(0,0,.5,1);
}
.card:has(a):hover{
  border: 2px solid var(--accent-color);
  transform: scale3d(1.02,1.02,1.02);
}

.card-link:focus .card{
  border: 2px solid var(--accent-color);
  transform: scale3d(1.02,1.02,1.02);
}

.new::after {
  position: absolute;
  top: 0;
  left: 0;
  padding: 0.2em 0.8em;
  font-size: 1.6rem;
  color: #000000;
  content: 'New!';
  background: var(--accent-color);
  border-top-right-radius: 5px;
  border-bottom-left-radius: 5px;
  border-bottom-right-radius: 5px;
}

.card img{
  background-color: var(--main-color);
  width: 100%;
  aspect-ratio: １.91 / 1;
}
.card-title{
  position: relative;
}
.card-title h3{
  margin: 5px 0 ;
  font-size: 2.0rem;
  width:100%;
  background-color: transparent;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.card-title h3::after{
  content:"";
  display:block;
  width:calc(100% - 1.6rem);
  height:3px;
  background-color:var(--accent-color);
  position:absolute;
  bottom:0;
  left:0.8rem;
}

.card-button{
  width: fit-content;
  margin: auto auto 0 auto;
  padding: 5px 30px;
  background-color: var(--accent-color);
  border-radius: 15px;

  color: var(--main-color);
  font-weight: bold;
  transition: 0.3s;
  background: var(--gradation-button-color);
}
.card:has(a):hover .card-button{
  background: var(--gradation-button-hover-color);
}

.card-link{
  position:absolute;
  top:0;
  left:0;
  width:100%;
  height:100%;
}
.card-link:focus {
  outline-color: var(--accent-color);
  outline-width: 5px;
}

.pointer-event-none{
  pointer-events: none;
}
/* card End */

/* rec */
.rec-button{
  margin: 5px auto;
  font-size: 20px;
  padding: 5px 1.6rem;
  border-radius: 15px;
  transition: 0.3s;
}
#rec-start-button{
  color: #000000;
  border: 2px solid #FF0000;
}

#rec-start-button[disabled]{
  color: var(--disabled-button-color);
  border: 2px solid var(--disabled-button-color);
  background-color: var(--base-color);
}

#rec-start-button:hover{
  color: #FF0000;
  background-color: #EEEEEE;
}

#rec-stop-button{
  color: #FF0000;
  border: 2px solid #FF0000;
}

#rec-stop-button:hover{
  background-color: #EEEEEE;
}
/* rec End*/

/* video canvas */
#input-video {
  position: relative;
  background-color: var(--canvas-bg-color);
  max-width: min(100%, 800px);
  max-height: calc(100svh - 120px);
  margin: auto;
}

#video-background{
  position: relative;
  width: 100%;
  height: 100%;
  background-color: var(--canvas-bg-color);
  padding: 1rem;
}

#recorded-video{
  background-color: var(--canvas-bg-color);
  width: 100%;
  max-width: min(100%, 800px);
  height: auto;
  display: block;
  margin: auto;
}

#output-canvas {
  position: absolute;
  background-color: var(--canvas-bg-color);
  top: 0;
  bottom: 0;
  left: 0;
  right: 0;
  margin: auto;
  max-width: 100%;
  max-height: 100%;
  width: calc(100vh * 4 / 3);
  height: calc(100vw * 3 / 4);
  z-index: 10;
}
@media screen and (orientation: portrait){
  #output-canvas{
    width: calc(100vh * 3 / 4);
    height: calc(100vw * 4 / 3);
  }
}
/* video canvas End*/

/* choice level */
.choice-level{
  display: flex;
  margin: 0 auto;
  width: fit-content;
}
.choice-level input[type="radio"]{
  display: none;
}
.choice-level label{
  margin: 0 2px 0 2px;
  padding: 2px 0.6rem;
  border-radius: 5px;
}
.choice-level .easy{
  border: 1px solid red;
}
.choice-level .normal{
  border: 1px solid green;
}
.choice-level .hard{
  border: 1px solid slateblue;
}
.choice-level label:hover{
  color: var(--base-color);
  font-weight: bold;
}
.choice-level .easy:hover{
  background-color: red;
}
.choice-level .normal:hover{
  background-color: green;
}
.choice-level .hard:hover{
  background-color: slateblue
}
.choice-level input[type="radio"]:checked + label{
  color: var(--base-color);
  font-weight: bold;
}
.choice-level input[type="radio"]:checked.easy + label{
  background-color: red;
}
.choice-level input[type="radio"]:checked.normal + label{
  background-color: green;
}
.choice-level input[type="radio"]:checked.hard + label{
  background-color: slateblue;
}
#game-description{
  text-align: center;
}
.game-ui{
  position: absolute;
  text-align: center;
  top: 10px;
  left: 10%;
  right: 10%;
  color: white;
  background-color: #000000cc;
  z-index: 15;
}
.game-timer{
  font-size: 2.4rem;
}
.input-progress{
  font-size: 4.8rem;
  font-weight: bold;
}

@media screen and (max-width: 959px) {
  .game-timer{
    font-size: 1.6rem;
  }
  .input-progress{
    font-size: 2rem;
  }
}

/* contact form*/
.contact-form{
  display: flex;
  flex-direction: column;
  padding: 10px 1.6rem;
  background-color: var(--form-bg-color);
}

.contact-item{
  display: flex;
  flex-direction: column;
  margin: 5px;
  justify-content: center;
}

.contact-item label{
  display: block;
  font-weight: bold;
  padding: 2px 8px;
  margin: 2px 0;
  border-left: 5px solid var(--accent-color);
}

.contact-item input, .contact-item textarea{
  font-size: 1.6rem;
  padding: 5px;
  border: 1px solid var(--form-label-border-color);
  border-radius: 5px;
}

.contact-item input[type="text"], .contact-form div input[type="email"]{
  width: 100%;
  height: 30px;
}

.contact-item #content{
  resize: none;
  width: 100%;
}

.contact-item p{
  background-color: var(--base-color);
  padding: 5px;
  border-radius: 5px;
}

.consent-confirmation{
  display: flex;
  flex-direction: row;
  width: fit-content;
  margin: 5px auto;
}

.contact-form input[type="submit"]{
  width: fit-content;
  margin: 0 auto;
  padding: 5px 30px;
  background-color: var(--accent-color);
  border-radius: 15px;

  color: var(--main-color);
  font-weight: bold;
  transition: 0.3s;
  background: var(--gradation-button-color);
}

.contact-form input[type="submit"]:hover{
  background: var(--gradation-button-hover-color);
}

.contact-form input[type="submit"]:disabled{
  background: var(--disabled-button-color);
}

.required-element{
  color: var(--form-required-element-color);
  background-color: var(--base-color);
  font-size: 1.2rem;
  border: 1px solid var(--form-required-element-color);
  border-radius: 5px;
  padding: 1px 3px;
}
/* contact form End */

/* Footer */
footer{
  position: absolute;
  bottom: 0;
  height: var(--footer-height);
  width: 100%;
  background-color: var(--main-color);
  color: var(--base-color);
  z-index: 100;
  font-size: 1.4rem;
}

footer a{
  color: var(--base-color);
  text-align: center;
  text-decoration: none;
}

footer a:hover{
  color: var(--hover-color);
}

.copyright{
  margin: 0 0 5px 0;
  padding: 5px 0;
  text-align: center;
  font-size: 1.2rem;
}

@media screen and (max-width: 959px) {
  footer{
    font-size: 1.2rem;
  }
  .copyright{
    font-size: 1rem;
  }
}
/* Footer End */