@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/ 実装



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




/** 大枠(fame) ---------------- **/

.hvForm {

	--error-font-color: #ff0000;
	--require-font-color: #cc0000;
	--next-button-color: #444444;
	--prev-button-color: #888888;
	--hover-button-color: #cc0000;
	
	display: block;
	position: relative;
	margin: 0;
	padding: 0;
	box-sizing: border-box;
}

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

.hvFormHeader,
.hvFormMain {
	display: block;
	position: relative;
	margin: 0;
	padding: 0;
	box-sizing: border-box;
}

.hvFormHeaderInner,
.hvFormMainInner {
	display: block;
	position: relative;
	margin: 0 auto;
	padding: 0;
	box-sizing: border-box;
}

.hvFormTitle {}

.hvFormDescription {}

.hvFormErrors {
	display: block;
	position: relative;
	margin: 0;
	padding: 10px;
	box-sizing: border-box;
	
	text-align: center;
	color: var(--error-font-color);
	font-weight: 700;
	
	border: 1px solid var(--error-font-color);
}

/* 入力ページ */
.hvForm.input {}

/* 確認ページ */
.hvForm.confirm {}

/* 完了ページ */
.hvForm.submit {}

/* システムエラーページ */
.hvForm.system {}


/* 間隔調整 */
.hvFormHeaderInner > *,
.hvFormMainInner > * { margin: 1.5rem 0; }
.hvFormHeaderInner > *:first-child,
.hvFormMainInner > *:first-child { margin-top: 0; }
.hvFormHeaderInner > *:last-child,
.hvFormMainInner > *:last-child { margin-bottom: 0; }



/** 各ページ ------------------- **/

.hvFormPage,
.hvFormPageHeader,
.hvFormPageMain {
	display: block;
	position: relative;
	margin: 2rem 0;
	padding: 0;
	box-sizing: border-box;
}

.hvFormPageInner,
.hvFormPageHeaderInner,
.hvFormPageMainInner {
	display: block;
	position: relative;
	margin: 0 auto;
	padding: 0;
	box-sizing: border-box;
}

.hvFormPageTitle {}

.hvFormPageDescription {}

.hvFormPageErrors {
	display: block;
	position: relative;
	padding: 10px;
	box-sizing: border-box;
	list-style-type: none;
	
	border: 1px solid var(--error-font-color);
	border-radius: 5px;

	color: var(--error-font-color);
/*	font-weight: 700; */
	text-align: center;
}

.hvFormPageErrors li {}

/* 入力ページ */
.hvFormPage.input {}

/* 確認ページ */
.hvFormPage.confirm {}

/* 完了ページ */
.hvFormPage.submit {}

/* システムエラーページ */
.hvFormPage.system {}


/* 間隔調整 */
.hvFormPageHeaderInner > *,
.hvFormPageMainInner > * { margin: 20px 0; }
.hvFormPageHeaderInner > *:first-child,
.hvFormPageMainInner > *:first-child { margin-top: 0; }
.hvFormPageHeaderInner > *:last-child,
.hvFormPageMainInner > *:last-child { margin-bottom: 0; }


/** テーブル ------------------ **/

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

	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 10px 0;
    box-sizing: border-box;

	border: 1px solid;
	border-left: 0;
	border-right: 0;
	
	font-size: inherit;
	font-weight: inherit;
	text-align: inherit;
}

.hvFormTable td {
	width: calc( 100% - 15em );
	margin: 0;
    padding: 10px 0 10px 5px;
    box-sizing: border-box;
	
	border: 1px solid;
	border-left: 0;
	border-right: 0;

	font-size: inherit;
	font-weight: inherit;
}

/* 必須入力 */
.hvFormTable tr.required th {}

.hvFormTable tr.required th::before {
	content: "必須";
	display: inline-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.input {}

.hvFormTable tr.required {}


/* 確認テーブル */
.hvFormTable.confirm {}

.hvFormTable.confirm tr.required th::before {
	display: none;
}



/** 入力フィールド ------------ **/


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

.hvFormFieldInner {}

.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;
}

.hvFormFieldFields {}


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

.hvFormFieldFields dt {
	width: 3rem;
	margin: 0;
	padding: 0.2rem;
	box-sizing: border-box;
	
	font-size: smaller;
	font-weight: inherit;
}

.hvFormFieldFields dd {
	width: calc( 100% - 3rem );
	margin: 0;
	padding: 0.2rem;
	box-sizing: border-box;
	
	font-size: inherit;
	font-weight: inherit;
}

.hvFormFieldFields ul {
	display: flex;
	flex-direction: row;
	flex-wrap: wrap;
	justify-content: flex-start;
	align-items: center;
	margin: 10px 0;
	padding: 0;
	box-sizing: border-box;
	list-style-type: none;
}

.hvFormFieldFields li {
	width: 100%;
	margin: 0;
	padding: 0.2rem;
	box-sizing: border-box;
}


.hvFormFieldFields input {}

.hvFormFieldDescs {
	display: block;
	margin: 10px 0;
	padding: 0;
	box-sizing: border-box;
	
	font-size: smaller;
}

.hvFormFieldDescs li {
	margin: 0 0 0 1.5em;
}


/* 必須入力 */
.hvFormField.required {}

/* 読み専用 */
.hvFormField.readonly {}

/* エラーあり */
.hvFormField.hasError{
	border-color: var(--error-font-color);
}


/* フォーム */
.hvForm input,
.hvForm select,
.hvForm textarea { 
	width: 100%;
	margin: 0;
	padding: 10px;
	box-sizing: border-box;
	font-size: inherit;
	font-family: inherit;
}

.hvForm textarea {
	min-height: 12em;
}

input[type="radio"],
input[type="checkbox"] {
	width: auto;
	margin-right: 0.5em;
}



/* テキスト入力 */
.hvFormField.text {}

/* URL入力 */
.hvFormField.url {}

/* date入力 */
.hvFormField.date {}

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

/* 名前分割入力 */
.hvFormField.namae2 {}

.hvFormField.namae2 .hvFormFieldFields {}

.hvFormField.namae2 .hvFormFieldFields dl {}

.hvFormField.namae2 .hvFormFieldFields dt {}

.hvFormField.namae2 .hvFormFieldFields dd {
	width: calc( 50% - 3rem );
	margin: 0;
	padding: 0.2rem;
	box-sizing: border-box;
}

/* メール入力 */
.hvFormField.email {}

/* メール分割入力 */
.hvFormField.email2 {}

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

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

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

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

.hvFormField.tel3 .hvFormFieldFields {}

.hvFormField.tel3 .hvFormFieldFields ul {}

.hvFormField.tel3 .hvFormFieldFields li {
	width: 5em;
}

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

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


/* 郵便番号２分割入力 */
.hvFormField.postal2 {}

.hvFormField.postal2 .hvFormFieldFields {}

.hvFormField.postal2 .hvFormFieldFields ul {}

.hvFormField.postal2 .hvFormFieldFields li {
	width: 5em;
}

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

.hvFormField.address .hvFormFieldFields {}

.hvFormField.address .hvFormFieldFields dl {}

.hvFormField.address .hvFormFieldFields dl dt {
	width: 5rem;
}

.hvFormField.address .hvFormFieldFields dl dd {
	width: calc( 100% - 5rem );
}



/* チェックボックス入力 */
.hvFormField.checkboxes {}

.hvFormField.checkboxes .hvFormFieldFields {}

.hvFormField.checkboxes .hvFormFieldFields ul {}

.hvFormField.checkboxes .hvFormFieldFields li {}

.hvFormField.checkboxes .hvFormFieldFields dl.else {}

.hvFormField.checkboxes .hvFormFieldFields dl.else dt {}

.hvFormField.checkboxes .hvFormFieldFields dl.else dd {}

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

.hvFormField.radios .hvFormFieldFields {}

.hvFormField.radios .hvFormFieldFields ul {}

.hvFormField.radios .hvFormFieldFields li {}

.hvFormField.radios .hvFormFieldFields dl.else {}

.hvFormField.radios .hvFormFieldFields dl.else dt {}

.hvFormField.radios .hvFormFieldFields dl.else dd {}

/* セレクト入力 */
.hvFormField.select {}

.hvFormField.select select {}

.hvFormField.select select option.placeholder {}

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

.hvFormField.textarea textarea {}




/** ボタン ----------------------- **/

.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;
}



/* 間隔調整 */
.hvFormFieldInner > *,
.hvFormFieldFields > * { margin: 10px 0; }
.hvFormFieldInner > *:first-child,
.hvFormFieldFields > *:first-child { margin-top: 0; }
.hvFormFieldInner > *:last-child,
.hvFormFieldFields > *:last-child { margin-bottom: 0; }





/** 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;
	}
}
