@charset "utf-8";


/* 統一目的 */
:root {
    /*入力項目どうしの余白*/
    --form-margin-top: 20px;
    /*フォームラベルのフォントサイズ*/
    --form-font-size: 1rem;
    /*フォーム入力欄のborderスタイル*/
    --form-border-style: 1px solid #a9a9a9;
}



form {
    text-align: initial;
    width: 95%;
    background: #ffffff;
    margin: 0 auto;
    padding: 3% 5%;
    border: 2px solid #e8e8e8;
    border-radius: 15px;
}


fieldset {
    width: 100%;
    margin-top: var(--form-margin-top);
}

form>fieldset:first-of-type {
    margin-top: 0;
}

.form_label {
    font-size: var(--form-font-size);
    margin-top: var(--form-margin-top);
}

p.form_label>span {
    font-size: 0.9rem;
    color: #a9a9a9;
}


label.radio_wrap {
    margin-right: 5%;
}

input[type="radio"] {
    margin-right: 2%;
}


.ymd_flex {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: nowrap;

}

select {
    font-size: var(--form-font-size);
    width: 100%;
    padding-left: 10px;
    padding-right: 10px;
    text-align: center;
    border: var(--form-border-style);
    border-radius: 4px;
}

select[name="birthday_year"],
select[name="birthday_month"],
select[name="birthday_day"] {
    width: 30%;
}

.ymd_attention {
    color: #ff0000;
    font-size: 0.9rem;
}



input[name="name1"],
input[name="ruby1"],
input[name="nickname"],
input[name="mailaddress"],
input[name="tel"],
input[name="password"] {
    border: var(--form-border-style);
    width: 100%;
    border-radius: 4px;
    padding: 2px 0;
    padding-left: 10px;
    font-size: var(--form-font-size);
}

input[name="name1"]:focus,
input[name="ruby1"]:focus,
input[name="nickname"]:focus,
input[name="mailaddress"]:focus,
input[name="tel"]:focus,
input[name="password"]:focus {
    padding-left: 10px;
}

/* プレースホルダーだけはoadding:0; */
input[name="name1"]:placeholder-shown,
input[name="ruby1"]:placeholder-shown,
input[name="nickname"]:placeholder-shown,
input[name="mailaddress"]:placeholder-shown,
input[name="tel"]:placeholder-shown,
input[name="password"]:placeholder-shown {
    padding-left: 0;
}

input[name="name1"],
input[name="ruby1"],
input[name="nickname"],
input[name="mailaddress"],
input[name="tel"],
input[name="password"],
select{
    font-weight:bold;
}



.pp_area {
    width: 100%;
    height: 3.6rem;
    padding: 0.5rem 1rem;
    border-radius: 4px;
    border: var(--form-border-style);
    overflow: hidden scroll;
    white-space: pre-wrap;
    font-size: 10px;
}


.pp_txt {
    color: #696969;
    font-size: 10px;

}

.pp_txt span {
    color: #0036d3;
    display: inline;
    text-decoration: underline;
    appearance: none;
    -webkit-appearance: none;
    font: inherit;
    background: none;
    border: 0;
}


.label_consent_wrap {
    margin-top: var(--form-margin-top);
    display: block;
    text-align: center;
}



.btn {
    /* width: 90%;
    padding: 13px 0;
    margin: 4px auto 20px;
    background: url(../img/pu01.jpg) repeat;
    background-size: 100%;
    border-radius: 5px;
    border-top: 2px solid #FFF;
    border-left: 2px solid #FFF;
    border-right: 3px solid #939393;
    border-bottom: 3px solid #939393;
    color: #ffffff;
    text-align: center;
    font-weight: bold;
    font-size: 17px;
    text-shadow: 1px -1px 0px #696969; */
}



.submit_btn {
    border: none;
    display: block;
    width: 100%;
    margin: 1% auto 0;
    padding: 0.5rem 0;

    color: #ffffff;
    font-size: 1.5rem;
    font-weight: bold;

    text-align: center;
    border-radius: 4px;
    box-shadow: 0 1px 8px 0px #00000050;

    background: linear-gradient(to bottom,  #5b63b2 0%,#4953b6 100%);
    background:cornflowerblue;
}

a.registered {
    margin: 30px auto 16px;
    text-align: center;
    text-decoration: revert;
    display: block;
    color: revert;
}


/* バリデカラー */
form .valid_ng_border {
    animation: valid_ng_border 0.5s 0s linear 2 alternate;
    background: #ffd4d4;
}


@keyframes valid_ng_border {

    0%,
    15% {
        border-color: red;
        background: #ffd4d4;
    }

    85%,
    100% {
        border-color: #ffeaea9f;
        background: #fff1f1ff;
    }
}


/* ajaxモーダル関連 */
#first_ajax_button {
	position:relative;
	display: flex;
	align-items: center;
	padding: 14px 32px;
	margin: 1rem auto;
	border-radius: 24px;
	border: 1px solid rgba(255, 255, 255, 0.35);
	background:
		radial-gradient(circle at 10% 10%, rgba(255, 255, 255, 0.10), transparent 12%),
		radial-gradient(circle at 90% 90%, rgba(0, 0, 0, 0.05), transparent 12%),
		linear-gradient(180deg, #63fff0 0%, #23d3ca 40%, #0cbeb4 60%, #00a9a1 100%);
	box-shadow:
		0 6px 14px rgba(3, 96, 95, 0.35),
		inset 0 2px 0 rgba(255, 255, 255, 0.25),
		inset 0 -6px 18px rgba(0, 0, 0, 0.18);
	color: #ffffff;
	letter-spacing: 0.05em;
	text-shadow:
		0 1px 0 rgba(0, 0, 0, 0.55),
		0 2px 8px rgba(2, 53, 52, 0.32);
}

/* ボタン右矢印 */
.arrow {
	width: 18px;
	height: 18px;
	margin-left: 12px;
	position: relative;
}

.arrow::before,
.arrow::after {
	content: "";
	position: absolute;
	right: 0;
	top: 50%;
	width: 10px;
	height: 2px;
	background: rgba(255, 255, 255, 0.95);
	transform-origin: right center;
}

.arrow::before {
	transform: translateY(-50%) rotate(40deg);
}

.arrow::after {
	transform: translateY(-50%) rotate(-40deg);
}
/* ローディング中 */
#first_ajax_button .spinner {
	display: none;
	width: 24px;
	height: 24px;
	border: 3px solid rgba(255, 255, 255, 0.3);
	border-top-color: white;
	border-radius: 50%;
	animation: spin 0.8s linear infinite;
	position: absolute;
	top: 50%;
	left: 50%;
	transform: translate(-50%, -50%);
}

#first_ajax_button.loading .btn-text, 
#first_ajax_button.loading .arrow{
	opacity: 0;
}

#first_ajax_button.loading .spinner {
	display: block;
}

@keyframes spin {
	to {
		transform: translate(-50%, -50%) rotate(360deg);
	}
}


/* バリデ文言 */
.validation_message{
	color: red;text-align:center; background: #FFDFDF; padding: 0.5rem; border-radius: 0.5rem;display: none;
}






dialog#modal_sms {
	position: fixed;
	top: 50%;
	left: 50%;
	transform: translate(-50%, -50%);
	width: 95%;
	max-width: 532px;
	height: 20rem;
	height: min-content;
	border-radius: 1rem;
	padding: 2rem;
	
}

#modal_sms::backdrop {
	background: rgba(0, 0, 0, 0.5);
}

#modal_sms p.title{
	font-size:1.2rem;
	font-weight: bold;
}
#modal_sms p.description{
 color: #718096;

}




.otp-input-group {
	display: flex;
	gap: 8px;
	justify-content: center;
	margin:1rem auto 2rem;    
}

.otp-input {
	font-weight: 600;
	text-align: center;
	border: 2px solid #e2e8f0;
	border-radius: 12px;
	outline: none;
	background: #f7fafc;
	color: #1a202c;
	width: 48px;
	height: 48px;
	font-size: 20px;
}

.otp-input:hover {
	border-color: #cbd5e0;
}

.otp-input:focus {
	border-color: #667eea;
	background: white;
	box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.1);
}

.otp-input::placeholder {
	color: #cbd5e0;
}

.resend-button {
	background: transparent;
	border: none;
	color: #667eea;
	font-size: 14px;
	font-weight: 600;
	cursor: pointer;
	padding: 8px 16px;
	border-radius: 6px;
}

.resend-button:hover {
	background: #f7fafc;
	color: #5568d3;
}

.resend-button:active {
	transform: scale(0.98);
}





/* レスポンシブ対応 */


.otp-card {
	padding: 32px 24px;
}

button#modal_ajax {
	display: block;
	position: relative;
	background: #c9c9c9;
	border-radius: 500px;
	width: 85%;
	height:fit-content;
	margin: 1rem auto;
	padding: 1rem;
    font-size: 1.2rem;
	text-align: center;
}

/* ローディング中 */
button#modal_ajax .spinner {
	display: none;
	width: 24px;
	height: 24px;
	border: 3px solid rgba(255, 255, 255, 0.3);
	border-top-color: white;
	border-radius: 50%;
	animation: spin 0.8s linear infinite;
	position: absolute;
	top: 50%;
	left: 50%;
	transform: translate(-50%, -50%);
}

button#modal_ajax.loading .btn-text{
	opacity: 0;
}

button#modal_ajax.loading .spinner {
	display: block;
}



/* スピナーの代わりに成功アイコンのスタイルを追加 */
button#modal_ajax .success-icon {
  display: none;
  width: 2rem;
  height: 2rem;
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}

button#modal_ajax .success-icon svg {
  width: 100%;
  height: 100%;
}

button#modal_ajax .success-circle {
  stroke: white;
  stroke-width: 2;
  stroke-dasharray: 166;
  stroke-dashoffset: 166;
  stroke-linecap: round;
}

button#modal_ajax .success-check {
  stroke: white;
  stroke-width: 3;
  stroke-dasharray: 48;
  stroke-dashoffset: 48;
  stroke-linecap: round;
}
button#modal_ajax.success {
  background: linear-gradient(135deg, #00d98f 0%, #00b377 100%);
}

button#modal_ajax.success .btn-text {
  opacity: 0;
}

button#modal_ajax.success .success-icon {
  display: block;
}

button#modal_ajax.success .success-circle {
  animation: circle-draw 0.6s cubic-bezier(0.65, 0, 0.45, 1) forwards;
}

button#modal_ajax.success .success-check {
  animation: check-draw 0.3s cubic-bezier(0.65, 0, 0.45, 1) 0.4s forwards;
}


@keyframes circle-draw {
  to {
    stroke-dashoffset: 0;
  }
}

@keyframes check-draw {
  to {
    stroke-dashoffset: 0;
  }
}



