@charset utf-8;



/** ============================================================================



	入力フォームCSS

	class hvForm ( hvForm.class.php )に対応


	@version 1.1   2018.6.19
	@version 3.0   2025.2.18   inputForm から hvFormに変更
	@author        K.Sekioka of HEVIZ Co.,Ltd.

	@history 2021.4.16  https://heviz.jp/contact/ 実装



================================================================================ **/


:root {
	--error-font-color: #ff0000;
	--require-font-color: #cc0000;
	
	--next-button-color: #444444;
	--prev-button-color: #888888;
	--hover-button-color: #cc0000;
}



.hvForm {
	display: block;
	position: relative;
	width: auto;
	max-width: 700px;
	margin: 0 auto;
	padding: 0;
	box-sizing: border-box;
}

.hvFormInner {}

.hvFormTitle {}

.hvFormDescription {}

.hvFormErrors {
	padding: 10px;
	
	text-align: center;
	color: var(--error-font-color);
	font-weight: 700;
	
	border: 1px solid var(--error-font-color);
}




.hvFormPage {}

.hvFormPageInner {}

.hvFormPageTitle {}

.hvFormPageErrors {
	display: block;
	position: relative;
	padding: 10px;
	box-sizing: border-box;
	list-style-type: none;
	
	border: 1px solid var(--error-font-color);
	color: var(--error-font-color);
	font-weight: 700;
	text-align: center;
}

.hvFormPageErrors li {}


.hvFormTable {
    table-layout: fixed;
    border-collapse: collapse;
    border-spacing: 0;
    border: 0;

	width: 100%;
    margin: 3em auto 0;
	padding: 0;
	box-sizing: border-box;
}

.hvFormTable caption {
	font-size: larger;
	font-weight: 700;
	text-align: inherit;
}

.hvFormTable tbody {}

.hvFormTable tr {}

.hvFormTable th {
	width: 15em;
	margin: 0;
    padding: 10px 5px;
    box-sizing: border-box;
	
	font-size: inherit;
	font-weight: inherit;
	border-left: 0;
	border-right: 0;
/*    
    text-align: left;
    font-weight: 400;
	border:1px solid #c0c0c0;
	border-left: 0;
	border-right: 0;
*/
}

.hvFormTable tr.required th {}

.hvFormTable tr.required th::before {
	content: "必須";
	display: block;
	width: 4em;
	vertical-align: middle;
	margin: 0 0.5em 0 0;
	padding: 4px 0;
	box-sizing: border-box;
	
	background-color: var(--require-font-color);
	color: #ffffff;
	font-size: 10px;
	text-align: center;
	line-height: 1;
}


.hvFormTable td {
	width: calc( 100% - 15em );
	margin: 0;
    padding: 10px 5px;
    box-sizing: border-box;
	
	font-size: inherit;
	font-weight: inherit;
	border-left: 0;
	border-right: 0;
/*    
    text-align: left;
    font-weight: 400;
	border:1px solid #c0c0c0;
	border-left: 0;
	border-right: 0;}
*/
}

.hvFormInner > *{ margin: 20px 0; }
.hvFormInner > *:first-child { margin-top: 0; }
.hvFormInner > *:last-child  { margin-bottom: 0; }

.hvFormPageInner > *{ margin: 20px 0; }
.hvFormPageInner > *:first-child { margin-top: 0; }
.hvFormPageInner > *:last-child  { margin-bottom: 0; }


.hvForm input,
.hvForm select,
.hvForm textarea {
	margin: 0;
	padding: 10px;
	box-sizing: border-box;
	font-size: inherit;
	font-family: inherit;
}


.hvForm input[type="text"],
.hvForm input[type="email"],
.hvForm input[type="tel"],
.hvForm input[type="url"],
.hvForm input[type="password"] { 
	width: 100%;
}

.hvForm textarea {
	width: 100%;
	min-height: 8em;
}

input[type="radio"] {}

input[type="checkbox"] {}

label [for="cotact-checkbox"] {}

select {}

select option {}

select option.placeholder {}

select option[selected] {}

input[type="number"] {}

input[type="date"] {}

input[type="submit"].hvFormButton {}


.hvFormField {
	display: block;
	position: relative;
	margin: 0;
	padding: 5px;
	box-sizing: border-box;
	border: 1px solid transparent;
	border-radius: 5px;
}

.hvFormField.hasError {
	border-color: var(--error-font-color);
}


.hvFormFieldErrors {
	display: block;
	position: relative;
	padding: 0;
	box-sizing: border-box;
	list-style-type: none;
	
	color: var(--error-font-color);
	text-align: center;
	font-size: smaller;
}

.hvFormFieldErrors li {
	margin: 0;
	padding: 0;
}



.hvFormFieldInput {}

.hvFormFieldInput ul {
	margin: 0;
	padding: 0;
	box-sizing: border-box;
	list-style-type: none;
}

.hvFormFieldInput li {
	margin: 0;
	padding: 0;
	box-sizing: border-box;
}

.hvFormFieldInput li.else {
	width: 100%;
	margin: 10px 0 0 0;
}

.hvFormFieldInput dl {
	display: flex;
	flex-direction: row;
	flex-wrap: wrap;
	justify-content: flex-start;
	align-items: center;
	margin: 0;
	padding: 0;
	box-sizing: border-box;
}

.hvFormFieldInput dt {
	margin: 2px 0;
	padding: 0;
	box-sizing: border-box;
	
	font-size: smaller;
	font-weight: inherit;
}

.hvFormFieldInput dd {
	margin: 2px 0;
	padding: 0;
	box-sizing: border-box;
}

.hvFormFieldError,
.hvFormFieldDesc {
	display: block;
	position: relative;
	padding: 0;
	box-sizing: border-box;
	list-style-type: none;
	
	font-size: smaller;
}

.hvFormFieldError li,
.hvFormFieldDesc li {
	margin: 0;
	padding: 0;
}



.hvFormButtons {
	display: flex;
	flex-direction: row-reverse;
	flex-wrap: wrap;
	justify-content: center;
	align-items: center;
	position: relative;
	padding: 0;
	box-sizing: border-box;
	list-style-type: none;
}

.hvFormButtons li {
	margin: 10px;
	padding: 0;
}

.hvFormButton {
	margin: 0;
	padding: 20px 40px !important;
	
	background-color: var( --next-button-color );

	color: #ffffff;
	font-size: larger;
	font-weight: 700;
	text-align: center;
	line-height: 1;
	
	border-width: 0;
	border-radius: 5px;
	cursor: pointer;
	
	transition: all 0.3s;
}

.hvFormButton.next {}

.hvFormButton.prev {
	background-color: var( --prev-button-color );
	color: #ffffff;
}

.hvFormButton:hover {
	background-color: var( --hover-button-color );
	color: #ffffff;
}

.hvFormField > * { margin: 10px 0; }
.hvFormField > *:first-child { margin-top: 0; }
.hvFormField > *:last-child  { margin-bottom: 0; }

/* テキストフィールド */
.hvFormField.text {}

/* テキストエリア */
.hvFormField.textarea {}

/* 複数ラジオボタン */
.hvFormField.radios {}

/* 複数チェックボックス */
.hvFormField.checkboxes {}

/* 名前2分割 */
.hvFormField.namae2 {}
.hvFormField.namae2 .hvFormFieldInput dt { width: 50px; text-align: center; }
.hvFormField.namae2 .hvFormFieldInput dd { width: calc( 50% - 50px ); }

/* 住所 */
.hvFormField.address {}

.hvFormField.address .hvFormFieldInput dt { width: 100px; }
.hvFormField.address .hvFormFieldInput dd { width: calc( 100% - 100px ); }
.hvFormField.address input,
.hvFormField.address select  { width: 100%; }


/* メールアドレス */
.hvFormField.email {}

/* メールアドレス2回入力 */
.hvFormField.email2 {}
.hvFormField.email2 .hvFormFieldInput dt { width: 50px; }
.hvFormField.email2 .hvFormFieldInput dd { width: calc( 100% - 50px ); }

/* パスワード2回入力 */
.hvFormField.password {}

/* パスワード2回入力 */
.hvFormField.password2 {}
.hvFormField.password2 .hvFormFieldInput dt { width: 50px; }
.hvFormField.password2 .hvFormFieldInput dd { width: calc( 100% - 50px ); }


/* 電話番号 */
.hvFormField.tel {}

/* 電話番号3分割入力 */
.hvFormField.tel3 {}

.hvFormField.tel3 .hvFormFieldInput dd {
	width: calc( 100% / 3 );
	margin: 0;
	padding: 0;
	box-sizing: border-box;
}

/* 郵便番号 */
.hvFormField.postal {}

.hvFormField.postal input {
	max-width: calc( 6em + 20px );
}

/* 郵便番号2分割 */
.hvFormField.postal2 {}

.hvFormField.postal2 .hvFormFieldInput dd {
	width: calc( 100% / 3 );
	margin: 0;
	padding: 0;
	box-sizing: border-box;
}

/* 数字 */
.hvFormField.number {}

/* 日付 */
.hvFormField.date {}




/* 入力画面 */
.hvForm.input {}

/* 入力画面 */
.hvForm.confirm {}

/* 完了画面 */
.hvForm.submit {}

/* エラー画面 */
.hvForm.error {}






/** Responsive for Smart Phone ---------------------------- **/

@media all and (max-width: 767px) {
    

	.hvForm {}

	.hvFormTable {
		display: block;
		width: auto;
	}

	.hvFormTable caption {
		display: block;
		margin: 10px 0;
	}
	
	.hvFormTable tbody {
		display: block;
		margin: 0;
		padding: 0;
	}

	.hvFormTable tr {
		display: block;
		margin: 0;
		padding: 0;
	}

	.hvFormTable th {
		display: block;
		width: auto;
		margin: 0;
	    padding: 10px 0 0;
		font-size: smaller;
		border-bottom: 0;
		font-weight: 700;
	}
	
	.hvFormTable tr.required th::before {
		display: inline-block;
		font-weight: inherit;
	}

	.hvFormTable td {
		display: block;
		width: auto;
	    padding: 10px 0;
		border-width: 0;
	}
	.hvFormTable tr:last-child td {
		border-bottom-width: 1px;
	}
}
