:root {
  /*
   * This css file utilize some css variables from Bootstrap.
   * For available Bootstrap css varibles:
   * https://getbootstrap.com/docs/4.5/getting-started/theming/#available-variables
   */
  --sand-timer-diameter: 6rem;
  --circle-icon-diameter: 4rem;
  --sand-timer-radius: calc(var(--sand-timer-diameter) / 2);
  --circle-icon-radius: calc(var(--circle-icon-diameter) / 2);
  --speech-balloon-width: 20rem;
  --speech-balloon-mobile-width: 13rem;
  --body-text-color: #212529; /* default body text color in bootstrap */
  /* --speech-balloon-boder-color: rgb(4, 123, 255); */
  --speech-balloon-boder-color: #1B1E35;
}


.long_min_height{
  /* overflow: auto; */
  overflow-x: hidden;
  min-height: 350px!important;
  max-height: 400px!important;
}


#main-box[data-page-mode='wpm'] .recognized {
  background-color: rgb(144, 250, 153);
}


#rate-display {
  color: #ffffff;
  background-color: rgb(37, 139, 238);
  border-radius: 5px;
  padding: 0 5px 0;
  margin-left: 5px;
}

#wpm-display {
  color: #ffffff;
  background-color: rgb(89, 207, 98);
  border-radius: 5px;
  padding: 0 5px 0;
  margin-left: 5px;
}


.rate-feedback,
.wpm-level {
  display: flex;
  flex-direction: row;
  align-items: center;
  font-size: 1.2rem;
  padding-right: 0.5rem;
  border: 1px solid #bee5eb;
  border-radius: 0.25rem;
  color: #0c5460;
  background-color: #d1ecf1;
  margin-left: auto;
}

.rate-feedback.hidden,
.wpm-level.hidden {
  display: none;
}

.wpm-level {
  padding-left: 0.5rem;
}

.rate-feedback.high-rate,
.wpm-level.level-5 {
  color: #004085;
  background-color: #cce5ff;
  border-color: #b8daff;
}

.rate-feedback.mid-rate,
.wpm-level.level-4,
.wpm-level.level-3 {
  color: #0c5460;
  background-color: #d1ecf1;
  border-color: #bee5eb;
}

.rate-feedback.midlow-rate,
.wpm-level.level-2,
.wpm-level.level-1 {
  color: #856404;
  background-color: #fff3cd;
  border-color: #ffeeba;
}

.rate-feedback.low-rate,
.wpm-level.level-0 {
  color: #721c24;
  background-color: #f8d7da;
  border-color: #f5c6cb;
}

.rate-feedback img {
  max-height: 100%;
  max-width: 3rem;
  margin-right: 0.5rem;
}



/* 다이얼로그 */

#main-box[data-page-mode='dialog'] #speech-balloons-container {
  position: relative;
  height: 55vh;
  overflow: scroll;
  overflow-x: hidden;
  border: 1px solid rgba(0, 0, 0, 0.125);
  border-radius: 0.25rem;
  padding: 2rem;
  padding-left: 1rem;
  background-color: #ffffff;
}

#speech-balloons-container-chatgpt {
  position: relative;
  height: 55vh;
  overflow: scroll;
  overflow-x: hidden;
  border: 1px solid rgba(0, 0, 0, 0.125);
  border-radius: 0.25rem;
  padding: 2rem;
  padding-left: 1rem;
  background-color: #ffffff;
}

.speech-balloon-wrapper {
  position: relative;
}

.speech-balloon {
  position: relative;
  display: inline-block;
  border: 4px solid var(--speech-balloon-boder-color);
  border-radius: 15px;
  width: var(--speech-balloon-width);
  margin-bottom: 1rem;
  padding: 1.2rem;
  text-align: center;
  color: var(--body-text-color);
  font-size: 1.2rem;
}
  
#main-box[data-page-mode='dialog'] img.robot {
  position: absolute;
  top: 0;
  max-width: 5rem;
}

.chatgpt_img {
  position: absolute;
  top: 0;
  max-width: 5rem;
}

.speech-balloon.left {
  left: 6.8rem;
}

.speech-balloon.right {
  left: calc(100% - var(--speech-balloon-width));
}

.speech-balloon.left::before {
  content: '';
  width: 0px;
  height: 0px;
  position: absolute;
  border-left: 10px solid transparent;
  border-right: 10px solid var(--speech-balloon-boder-color);
  border-top: 10px solid var(--speech-balloon-boder-color);
  border-bottom: 10px solid transparent;
  left: -21px;
  top: 20px;
}

.speech-balloon.left::after {
  content: '';
  width: 0px;
  height: 0px;
  position: absolute;
  border-left: 7px solid transparent;
  border-right: 7px solid #fff;
  border-top: 7px solid #fff;
  border-bottom: 7px solid transparent;
  left: -11px;
  top: 24px;
}

.speech-balloon.right::before {
  content: '';
  width: 0px;
  height: 0px;
  position: absolute;
  border-left: 10px solid var(--speech-balloon-boder-color);
  border-right: 10px solid transparent;
  border-top: 10px solid var(--speech-balloon-boder-color);
  border-bottom: 10px solid transparent;
  right: -21px;
  top: 20px;
}

.speech-balloon.right::after {
  content: '';
  width: 0px;
  height: 0px;
  position: absolute;
  border-left: 7px solid #fff;
  border-right: 7px solid transparent;
  border-top: 7px solid #fff;
  border-bottom: 7px solid transparent;
  right: -11px;
  top: 24px;
}

.speech-balloon .passed {
  color: rgb(46, 207, 46);
  white-space: nowrap;
}

.speech-balloon .failed {
  color: rgb(247, 81, 81);
  white-space: nowrap;
}

.speech-balloon .passed::before {
  font-family: 'Font Awesome 5 Free';
  font-weight: 900;
  content: '\f058';
}

.speech-balloon .failed::before {
  font-family: 'Font Awesome 5 Free';
  font-weight: 900;
  content: '\f057';
}



#main-box[data-page-mode='dialog'] .sentence-container,
#main-box[data-page-mode='sentences'] .sentence-container {
  cursor: pointer;
  font-size: 1.75rem;
}



#main-box[data-page-mode='dialog'] .sentence-container p {
  margin: 0;
}

#main-box[data-page-mode='dialog'] .sentence-container.being-recognized {
  background-color: rgb(144, 250, 153);
}

.selected_color{
    background-color: rgb(144, 250, 153);
}


.selected_color:hover {
  background-color: rgb(144, 250, 153)!important;
}

.beige_color{
    background-color: beige;
}


#main-box[data-page-mode='dialog'] .text-from-speech {
  border-top: 4px dotted rgba(0, 0, 0, 0.125);
  color: #777777;
  min-height: 2.8rem;
}

#main-box[data-page-mode='dialog'] #real-mode-container {
  position: relative;
}

#main-box[data-page-mode='dialog'] #review-retry-btns-container {
  position: absolute;
  right: 10px;
  bottom: -56px;
}

#main-box[data-page-mode='dialog'] .how-to-use {
  /* Copied from Bootstrap Alerts css style */
  padding: 0.75rem 1.25rem;
  margin-bottom: 1rem;
  border: 1px solid #bee5eb;
  border-radius: 0.25rem;
  color: #0c5460;
  background-color: #d1ecf1;
}

.pass-or-fail {
  font-size: 1.3rem;
  white-space: nowrap;
}

.pass-or-fail.passed {
  color: rgb(46, 207, 46);
}

.pass-or-fail.failed {
  color: rgb(247, 81, 81);
}

.pass-or-fail.passed::before {
  font-family: 'Font Awesome 5 Free';
  font-weight: 900;
  content: '\f058';
}

.pass-or-fail.failed::before {
  font-family: 'Font Awesome 5 Free';
  font-weight: 900;
  content: '\f057';
}


.sentences-list-container {
  overflow-y: scroll;
  overflow-x: hidden;
  max-height: 55vh;
  border: 1px solid rgba(0, 0, 0, 0.125);
  border-radius: 0.25rem;
}



#main-box[data-page-mode='speed_reading'] .sentence-english,
#main-box[data-page-mode='speed_reading'] .sentence-korean {
  white-space: pre-wrap;
}


#main-box[data-page-mode='wpm'] .sentence-english,
#main-box[data-page-mode='wpm'] .sentence-korean {
  white-space: pre-wrap;
}

.custom-btn-circle {
  width: var(--circle-icon-diameter);
  height: var(--circle-icon-diameter);
  font-size: 2rem;
  border-radius: 50%;
  text-align: center;
}

.mid-custom-btn-circle {
  width: 32px;
  height: 32px;
  font-size: 1rem;
  border-radius: 50%;
  text-align: center;
  padding:0.25rem 0.25rem !important;
}


.play-stop-btn-and-sand-timer-container {
  position: relative;
  display: flex;
  flex-direction: row;
  justify-content: center;
}



#sand-timer {
  position: absolute;
  /*margin-top: 65px;*/
  width: var(--sand-timer-diameter);
  height: var(--sand-timer-diameter);
  top: calc(var(--circle-icon-radius) - var(--sand-timer-radius));
}

#mid-sand-timer {
  position: absolute;
  width: 40px;
  height: 40px;
  left: -4px;
    top: -1px;
  /* top: 12px; */
}

/* --sand-timer-diameter-mid: 4rem;
--circle-icon-diameter-mid: 2.5rem;
--sand-timer-radius-mid: calc(var(--sand-timer-diameter) / 2);
--circle-icon-radius-mid: calc(var(--circle-icon-diameter) / 2); */

/** Display play mark **/
#play-stop-btn::before {
  font-family: 'Font Awesome 5 Free';
  font-weight: 900;
  content: '\f04b';
}

#play-audio-btn::before {
  font-family: 'Font Awesome 5 Free';
  font-weight: 900;
  content: '\f04b';
}

/** Display stop mark **/
#play-stop-btn.stop::before {
  font-family: 'Font Awesome 5 Free';
  font-weight: 900;
  content: '\f04d';
}

.sandbox-play-stop-btn {
  position: absolute;
  /*margin-top: 65px;*/
}

.sandbox-play-stop-btn-left {
  /* position: absolute;
  margin-top: 65px; */
}


.mid-sandbox-play-stop-btn {
  /* position: absolute;
  margin-top: 65px; */
}

.btn-outline-primary2{
  color: #1B1E35;
  border-color: #1B1E35;
}

/* #main-box[data-page-mode='shadow_speaking'] .sentence-container:hover {
  background-color: white;
} */

#main-box[data-page-mode='shadow_speaking'] .sentence-container {
  /* cursor: pointer; */
  font-size: 1.75rem;
}

#main-box[data-page-mode='shadow_speaking'] .sentence-container.speaking {
  background-color: rgb(144, 250, 153)!important;
}


.chatgpt_text_font{
 font-size: 18px!important;
 padding: 8px 0px!important;
}

.kinder_frame{
    min-height: 200px!important;
    height:100%
}

.cards_kinder_img_container {
 width: 100%;
  height: 70vh;
  display: flex;
  justify-content: center;
  align-items: center;
  overflow: hidden;
}



.sp_kinder_img_container{
width: 100%;
  height: 100vh;
  display: flex;
  justify-content: center;
  align-items: center;
  overflow: hidden;
}

.sp_kinder_img_container img{
  max-width: 100%;
  max-height: 100%;
  object-fit: contain;
}

.cards_kinder_img_container img{
  max-width: 100%;
  max-height: 100%;
  object-fit: contain;
}

.start_msg{
    padding: 35px 15px 50px 15px!important;
}

.img_frame{
    padding: 10px 44px 18px 24px!important;
        width: calc(100% - 220px)!important;
    margin: 0 0 0 auto;
}

.top_bar{
   margin-bottom: 20px;
}

.whole_screen{
min-height: 200px!important;
flex-grow: 1;

  padding:8px!important;
}

.no_margin_whole_screen{
min-height: 200px!important;
display: flex!important;;
  flex-direction: column!important;;
  height: 100%!important;;
}

.height_100{
height: 100%!important;
  margin: 0!important;
}

.parent-div {
  position: relative;
}

.height_100_percent{
height: 100%!important;
}

.parent_100{
    display: flex!important;
    flex-direction: column!important;
}

/*탑바를 제외하고 화면에꽉차게, 부모는 위의 parent_100 여야 함*/
.top_and_content_100{
    flex-grow: 1;
}

.kinder_right_content{
width: calc(100% - 220px)!important;
    padding: 10px 44px 18px 24px!important;
    margin: 0 0 0 auto;
    background-color: #FFF;
}


.font_20 {
  font-size: 20px;
}

.margin_t_15{
  margin-top: 15px;
}

.hidden_imp {
    display: none!important;
}


#stopwatch_area {
    position: absolute;
    width: 88px;
    height: 371px;
    background-color: #283cf5;
    right: 9px;
    top: 99px;
    border-radius: 10px;
    padding: 10px;
}

#stopwatch_title{
  height: 50px;
}

.stopwatch_element{
    text-align: center;
    color: white;
    background-color: #7676f8;
    border-radius: 10px;
}

#stopwatch_content{
    margin-top:10px;
    font-size: 11px;
}

.stopwatch_time{
    padding:3px;
}

#stopwatch_text{
    text-align: center;
    font-size:23px;
    margin:auto;
    width: 80px;
    border-radius: 10px;
    background-color: #283cf5;
    color: white;
}

#guide_text{
    margin:auto 0;
    font-size:18px;
    font-weight:bolder;
}

.btn_footer{
  margin-top: 10px;
  text-align: center;

}

.sp_top_comment{
  
  position: absolute;
  right: 22px;
  top: 35px;
  z-index: 999;
  font-size: 18px;
}

.reward_stars{
  
  position: absolute;
  right: 22px;
  top: 19px;
  color: red;
}


.ts-subject-detail-wrap.is_mobile {
  height: 100vh;
  overflow: auto; /* 스크롤이 필요할 경우 추가 */
  display: flex;
  flex-direction: column;
  padding:15px;
  background-color:#FFF;
  border-radius: 0px;
  min-height: 0px;
}

.ts-sc.ts-sc-bg-subject.is_mobile{
  background-color:#FFF;
  padding: 0;
}

.ts-header.is_mobile{
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  z-index: 1000; /* 다른 요소들보다 위에 표시되도록 */
}

.ts-header .ts-top-bar.ts-top-bar-sub.is_mobile {
  background-color: #0088DF;
  text-align: center;
}


/* 좌상단의 뒤로 가기 버튼 */
.back-button {
  z-index: 1000; 
  position: absolute;
  top: 7px;
  left: 7px;
  /* background: transparent url(/static/assets/img/icons/ico-top-bar-link-wh.png) 0 50% / 28px 25px no-repeat; */
  background-color: #0088DF;
  color: white;
  border: none;
  border-radius: 50%;
  width: 40px;
  height: 40px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 18px;
  cursor: pointer;
}

/* 우상단의 reward_stars 스타일 */
.reward_stars.is_mobile {
  z-index: 1000; 
  position: absolute;
  top: 10px;
  right: 18px;
  background-color: #0088DF;
  padding:5px;
  border-radius: 12px;
  display: flex;
  gap: 2px; /* 아이콘 간격 */
}

.reward_stars.is_mobile .fa-star.big:before {
  font-size: 15px;

}

.reward_stars .empty {
  color: #fff; /* 아이콘 색상 */
}

.ts-side-menu-area.is_mobile {
  width: 190px;
  min-height: 450px;
}

.ts-side-menu-area.is_mobile a {
  font: 400 13px 'noto'!important;
}

.ts-side-menu-area.is_mobile .ts-side-menu .ts-side-menu-item {
  display: inline-block;
  position: relative;
  width: 100%;
  padding-left: 7px;
  padding-right: 15px;
  padding-bottom: 8px;
  padding-top: 8px ;
  margin: 6px 0;
  text-align: left;
}

.ts-subject-detail-area.is_mobile {
  width: calc(100% - 220px);
  padding:0;
  margin: 0 0 0 215px;
  background-color: #FFF;
}

.reward-animation {

  font-size: 26px;
}

.is_wpm.is_mobile p {
  font: 500 16px 'noto';
}

.mobile-content-wrapper {
  display: flex;
}

.ts-card-wrap {
  flex: 1;
  padding-right: 10px; /* ts-box-right와 간격 조정 (필요 시) */
}

.right_box {
  margin-top: 25px;
  margin-left: 10px;
  width: 200px; /* ts-box-right의 고정 폭 */
  display: flex;
  flex-direction: column;
  justify-content: space-between; /* 상-중-하 간격 */
  height: calc(100hv-40px); /* 부모 요소의 높이를 가득 채우기 위해 */
}

.ts-card-wrap.is_mobile {
  margin-top: 0px;
  height: calc(100vh - 50px)!important;
  padding-right: 0px!important;
}

.ts-card-wrap.is_mobile.is_record_mobile .ts-card-inner{
  padding-right: 0px!important;
}

.ts-lang-btn-group.is_wpm {
  /* 중간 위치에 고정 */
  align-self: center;
}

.to_bottom {
  align-self: center; /* 하단 중앙 정렬 */
  margin-top: auto!important; /* 하단에 배치 */
  width: 100%;
}

.ts-subject-contents.is_mobile{
  padding: 0;

}

.long_min_height_is_mobile {
  overflow-x: hidden;
  height: 95%;
}

.ts-subject-contents.is_mobile {
  display: flex;
  flex-direction: column;
  height: 100%;
}



.ts-subject-contents-body.is_mobile p {

  font: 400 24px 'noto';
}

@media(max-width: 767px) {
  .ts-subject-contents-body.is_mobile p {

    font: 400 18px 'noto';
  }
}

.mobile_font_size{
  font: 400 24px 'noto';
}

@media(max-width: 767px) {
  .mobile_font_size {

    font: 400 18px 'noto';
  }
}


.ts-time-btn-group.is_mobile .ts-time-btn {
  width: 78px!important;
  font: 700 18px 'noto';
}

.ts-nav-btn-group.is_mobile button{
  margin: 10px!important;
}

.bold_center_text{
  margin-left: 0 !important;
  margin-right: 0 !important;
  font-size:16px !important;
  font-weight:bolder;
}

.bold_small_center_text{
  margin-left: 0 !important;
  margin-right: 0 !important;
  font-size:13px !important;
  font-weight:bolder;
}

.width_130{
  width: 130px!important;
}

.sp_between {
  display: flex;
  justify-content: space-between; /* 좌우 끝으로 배치 */
  align-items: center;            /* 필요 시 세로 가운데 정렬 */
}

.top_state_display{
  width: 100%;
  padding: 10px;
  margin-top: 10px;
}

.ts-side-menu.is_mobile ul {
  padding: 15px 0px 0 12px;
}


.sentences-list-container.is_mobile {
  max-height: none;
}


.ts-subject-detail-area.is_mobile .ts-sc-recode{
  padding:0;
  top:25vh;
}

.ts-container.ts-sc.is_record_mobile .ts-sc-recode{
  padding:0;
  top:11vh;
}

.aligned_start_msg{
  
  display: flex;
    justify-content: center; /* 수평 중앙 정렬 */
    align-items: center;     /* 수직 중앙 정렬 */
    height: 100vh;  
}


.height_none {

  height: auto!important;
}


#stopwatch_content.is_mobile {
  display: flex;
  flex-wrap: wrap; /* 줄이 넘치면 아래로 줄바꿈 */
  /* min-height: 50px;   */
  gap: 7px; /* 요소 간격 */
  margin-top: 0px;
  justify-content: center; 
}

#stopwatch_content.is_mobile .stopwatch_time {
  flex-basis: calc(33.33% - 10px); /* 3개의 요소가 한 줄에 배치되도록 설정 */
  box-sizing: border-box; /* 패딩 포함 */
  text-align: center;
  padding: 4px;
  border: 1px solid #ccc;
  border-radius: 4px;
  font-size: 10px;
  background-color: #7676f8!important;
}

.mobile_btn_group button{
  font: 500 18px 'noto'!important;
  padding: 0 18px!important;
  height:28px!important;
}

.mobile_btn_group{

  margin-top: 3px!important;
}

.stopwatch_element.is_mobile{
  background-color: #ffffff!important;
}


.ts-subject-contents.is_mobile .speech-balloon {
  width: var(--speech-balloon-mobile-width);
  padding: 0.8rem;
  font-size: 0.9rem;
  /* border: 2px solid */
}

.ts-subject-contents.is_mobile .speech-balloon.right {
  left: calc(100% - var(--speech-balloon-mobile-width));
}

.speech-balloon.right::before {
  content: '';
  width: 0px;
  height: 0px;
  position: absolute;
  border-left: 10px solid var(--speech-balloon-boder-color);
  border-right: 10px solid transparent;
  border-top: 10px solid var(--speech-balloon-boder-color);
  border-bottom: 10px solid transparent;
  right: -21px;
  top: 20px;
}



.ts-lang-btn-group.is_mobile_dialog{
  position: relative!important;
  right: 0!important;
  bottom: 0!important;
}

.ts-lang-btn.ts-lang-btn-eng.is_mobile_dialog{
  width: 100%;
}


.ts-subject-contents-footer.is_mobile_dialog {
  margin: 0px auto 0 auto;
  text-align: center;
}

.lottie_icon_record.is_mobile_dialog  {
  width: 100px;
  height: 55px;
}

.lottie_btn_area.is_mobile_dialog  {
  height: 34px;
}

.ts-subject-contents-body.is_icantalk{
  padding: 10px;
}

.ts-subject-detail-area.is_icantalk.is_mobile {
  padding: 0;
  margin: auto!important;
  width:85%!important;
}

.ts-subject-detail-area.is_icantalk.is_mobile .ts-sc-recode {
  padding: 0;
  top: 15vh;
}

.ts-subject-detail-nav.is_icantalk{
  margin-top: 10px !important;

}

.ts-card-wrap.ts-type-b.is_icantalk {
  margin-top: 0px;
  height: calc(100vh - 72px);
}

.balloon_area_mobile{
  height: 100%!important;
}

.tsetsets{
  background-color: blue;
  margin:3px;
  height: 30px;
}

.ts-card-wrap.ts-type-a.is_record_mobile .ts-card-lang-area {

  border-top-right-radius: 16px;
}

.ts-card-wrap.is_record_mobile {
  background-color: white;
}

.ts-card-wrap.ts-type-a.is_record_mobile .ts-card-contents {
  border-bottom-right-radius: 16px;
  border-bottom-left-radius: 16px;
  padding: 15px;
}
