@charset "utf-8";
/* CSS Document */

/* JD kyousai 
-----------------------------------------------------*/
@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+JP:wght@100..900&display=swap');
/*
Light 300
Regular 400
Medium 500
Bold 700
Black 900
*/

:root {
    --grad-color: linear-gradient(230deg, #004e85 30%, #156198 70%);
    --grad-color-hover: linear-gradient(230deg, #003a62 30%, #0e578d 70%);
    --lr-margin: 20px;
}
@media screen and (max-width: 600px) {
    :root {
        --lr-margin: 15px;
    }
}

/* ==============================================
    universal reset
============================================== */
* {
	margin: 0;
	padding: 0;
	box-sizing: border-box;
}

/* ==============================================
    html,body and base
============================================== */
html,body {
	height:100%;
}

/* general params
------------------*/
table {
	empty-cells: show;
	font-size: 100%;
	border-collapse: collapse;
}

img {
	border: none;
	height: auto;
	vertical-align: top;
    image-rendering: -webkit-optimize-contrast;
}


ul {
	letter-spacing: -.40em;
}
ul li {
	letter-spacing: normal;
}

/* ==============================================
    body
============================================== */
body {
	text-align: center;
	line-height: 1.2;
	color: #1c1e21;
	-webkit-text-size-adjust: 100%;
}
th,td {
    color: #000;
}
@media screen and (max-width: 700px) {
	body {
        min-width: 300px;
        font-size: 14px;
    }
}
@media print {
	body { min-width: 950px; }
}

body,
input, select, textarea,
h1,h2,h3,h4,h5,h6 {
	font-family: "Noto Sans JP", sans-serif;
    font-optical-sizing: auto;
    font-weight: 400;
    font-style: normal;
}
input, select, textarea,
h1,h2,h3,h4,h5,h6 {
    font-size: 100%;
}
form input[type="submit"],
form input[type="reset"],
form input[type="button"] {
	-webkit-appearance: none;
}

/* ==============================================
    container
============================================== */
#container {
	position: relative;
    overflow: hidden;
    display: flex;
    flex-direction: column;
    min-height: 100vh;
    padding-bottom: 0 !important;
}
footer {
    margin-top: auto;
}

/* ==============================================
    header
============================================== */
header {
    display: flex;
    justify-content: flex-start;
    align-items: center;
    height: 100px;
    padding-left: 38px;
}
header img {
    width: 150px;
}
@media screen and (max-width: 800px) {
    header {
        height: clamp(3.125rem, 0.368rem + 11.76vw, 6.25rem);
        padding-left: clamp(0.938rem, -3.375rem + 11.5vw, 2.375rem);
    }
    header img {
        width: clamp(7.5rem, 5.846rem + 7.06vw, 9.375rem);
    }
}

/* ==============================================
    main
============================================== */
main {
    width: 100%;
    max-width: 980px;
    margin: 0 auto;
    padding: 0 var(--lr-margin);
    text-align: left;
}
main h1 {
    position: relative;
    display: flex;
    justify-content: center;
    align-items: center;
    height: 130px;
    margin-bottom: 2em;
    font-size: 32px;
    text-align: center;
    color: #fff;
}
main h1::before,
main h1::after {
    position: absolute;
    content: "";
    display: block;
    top: 0;
    left: 50%;
    transform: translateX(-50%);
    width: 100vw;
    height: 100%;
}
main h1::before {
    background: #004e85;
    z-index: -2;
}
main h1::after {
    background: linear-gradient(90deg, #141c29 0%, #193143 37.24%, rgba(30, 67, 90, 0) 100%);
    z-index: -1;
}
@media screen and (max-width: 800px) {
    main h1 {
        height: clamp(6.25rem, 4.596rem + 7.06vw, 8.125rem);
    }
}

main p {
    line-height: 1.875em;
}
main h1 + p {
    margin-bottom: 3.5em;
}

form section {
    margin-bottom: 100px;
}
@media screen and (max-width: 800px) {
    form section {
        margin-bottom: clamp(0rem, -5.515rem + 23.53vw, 6.25rem);
    }
}
h2 {
    margin-bottom: 1.2em;
    padding-bottom: 0.7em;
    border-bottom: 1px solid #707070;
    font-size: 30px;
}

table {
    width: 100%;
}
table + table {
    margin-top: 3em;
}
th, td {
    padding: 1em 0 1em 1em;
    border-bottom: 1px solid #fff;
}
th {
    position: relative;
    width: 17.5em;
    background: #f6f6f6;
    font-weight: 500;
}
td {
    padding-left: 2.375em;
}

th span {
    display: block;
    width: 4.5em;
    padding: 0.2em 0;
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    right: 10px;
    font-size: 0.75em;
    color: #fff;
    background: #676767;
    text-align: center;
    font-weight: 300;
}
th span.require {
    background: #cc3939;
}
@media screen and (max-width: 800px) {
    th {
        width: 13.5em;
    }
    td {
        padding-left: 1.5em;
    }
}
@media screen and (max-width: 700px) {
    main h1 {
        font-size: clamp(1.25rem, 0.385rem + 3.69vw, 2rem);
    }
    h2 {
        font-size: clamp(1.25rem, 0.529rem + 3.08vw, 1.875rem);
    }
}
@media screen and (max-width: 600px) {
    main {
        padding: 0;
    }
    main h1 + p {
        margin-left: var(--lr-margin);
        margin-right: var(--lr-margin);
    }
    h2 {
        padding-left: var(--lr-margin);
    }
    table + table {
        margin-top: 0;
    }
    th, td {
        display: block;
        width: 100%;
    }
    th {
        padding: 1em var(--lr-margin);
    }
    th span {
        right: var(--lr-margin);
    }
    th br {
        display: none;
    }
    td {
        padding: 0.5em var(--lr-margin) 2em;
    }
}

/* ==============================================
    form
============================================== */
.optional {
}
::placeholder {
    color: #bcbcbc
}

input[type="text"],
input[type="email"],
input[type="tel"],
textarea,
select {
    appearance: none;
    padding: 1em;
	outline: none;
    width: 100%;
    border-radius: 6px;
    background: #fff;
    border: 1px solid #c4c4c4;
}
@media screen and (max-width: 600px) {
    input[type="text"],
    input[type="email"],
    input[type="tel"],
    textarea,
    select {
        padding: 0.8em;
    }
}

input[type="text"]:focus,
input[type="email"]:focus,
input[type="tel"]:focus,
textarea:focus,
select:focus {
    outline: 1px solid #2a2a2a;
}

div.column {
    display: flex;
    align-items: center;
}
div.column span {
    display: inline-block;
    vertical-align: middle;
}
div.column.name {
    justify-content: space-between;
}
div.column.name p {
    width: calc(calc(100% - 20px)/2);
}
div.column.name p span:first-of-type {
    width: 40px;
}
div.column.name p input[type="text"] {
    width: calc(100% - 40px);
}
#zip span {
    padding-right: 1.5em;
}
input[name="zip"] {
    max-width: 220px;
}
#tel .column input[type="tel"] {
    width: calc(calc(100% - 64px)/3);
    max-width: 140px;
}
#tel .column span {
    width: 32px;
    text-align: center;
}
@media screen and (max-width: 480px) {
    div.column.name {
        display: block;
    }
    div.column.name p {
        margin-bottom: 10px;
        width: 250px;
    }
}

textarea {
    resize: vertical;
    width: 100%;
    height: 8em;
}

select,
.selectbox {
    /* width: 210px; */
}
select {
    box-shadow: unset;
}
.selectbox {
    position: relative;
    display: inline-block;
}
.selectbox::before,
.selectbox::after {
    position: absolute;
    content: "";
    pointer-events: none;
}
.selectbox::before {
    display: inline-block;
    top: 1px;
    right: 1px;
    width: 55px;
    height: calc(100% - 2px);
    padding: 0;
    border-radius: 0 6px 6px 0;
    background: #fff;
}
.selectbox::after {
    top: 24px;
    right: 23px;
    width: 6px;
    height: 6px;
    border-right: 1px solid #1c1e21;
    border-bottom: 1px solid #1c1e21;
    transform: rotate(45deg);
}
.selectbox select {
    height: 57px;
    padding-right: 4em;
    cursor: pointer;
}

/* ==============================================
    radio / checkbox
============================================== */
.radio,
.checkbox {
    margin-bottom: 1em;
}
.radio label,
.checkbox label {
    font-size: 1.125em;
    white-space: nowrap;
}
.radio label:not(:first-of-type),
.checkbox label:not(:first-of-type) {
    margin-left: 2em;
}
input[type="radio"],
input[type="checkbox"] {
    -webkit-appearance: none;
    appearance: none;
    transition: all .4s;
    width: 48px;
}
input[type="radio"]::before,
input[type="radio"]::after,
input[type="checkbox"]::before,
input[type="checkbox"]::after {
    content: '';
    display: inline-block;
    vertical-align: middle;
    width: 38px;
    height: 38px;
    background: #fff;
    border: 1px solid #c4c4c4;
}
input[type="radio"]::after,
input[type="checkbox"]::after {
    transform: translateX(-100%) scale(54%);
    background: #004e85;
    border-color: #004e85;
    visibility: hidden;
}
input[type="radio"]::before,
input[type="radio"]::after {
    border-radius: 20px;
}
input[type="checkbox"]::before {
    border-radius: 6px;
}
input[type="checkbox"]::after {
    border-radius: 2px;
}
input[type="radio"]:checked::after,
input[type="checkbox"]:checked::after {
    visibility: visible;
}
@media screen and (max-width: 640px) {
    input[type="radio"],
    input[type="checkbox"] {
        width: 40px;
    }
    input[type="radio"]::before,
    input[type="radio"]::after,
    input[type="checkbox"]::before,
    input[type="checkbox"]::after {
        width: 30px;
        height: 30px;
    }
}
@media screen and (max-width: 600px) {
    .radio label,
    .checkbox label {
        display: block;
    }
    .radio label:not(:first-of-type),
    .checkbox label:not(:first-of-type) {
        margin-top: 0.5em;
        margin-left: 0;
    }
}

/* ==============================================
    btn
============================================== */
#check {
    margin-top: 5em;
    text-align: center;
}
#check label {
    position: relative;
    white-space: nowrap;
    line-height: 38px;
}
@media screen and (max-width: 640px) {
    #check label {
        line-height: 30px;
    }
}

.button {
    margin: 2em auto 0;
    text-align: center;
}
.button a {
    text-decoration: none;
    transition: .4s;
}
input[type="submit"],
#btnClose a {
    position: relative;
    display: flex;
    justify-content: center;
    align-items: center;
    height: 100px;
    color: #fff;
    font-size: 1.125em;
}
input[type="submit"] {
    z-index: 1;
    width: 100%;
    cursor: pointer;
    background: none;
    letter-spacing: 0.5em;
    text-indent: 0.5em;
    border: none;
    outline: none;
}
span:has(input[type="submit"]),
#btnClose a {
    width: 90%;
    margin: auto;
    background: var(--grad-color);
}
span:has(input[type="submit"]) {
    position: relative;
    display: inline-block;
    max-width: 430px;
}
#btnClose a {
    max-width: 280px;
}
#btnClose a span {
    position: relative;
    z-index: 1;
}

span:has(input[type="submit"]):after,
#btnClose a:after {
    content: "";
    display: block;
    width: 100%;
    height: 100%;
    background: var(--grad-color-hover);
    transition: .4s;
    position: absolute;
    top: 0;
    left: 0;
    transform: scaleX(0);
    opacity: 0;
}
input[type="submit"]:disabled,
span:has(input[type="submit"]:disabled) {
    pointer-events: none;
    opacity: .5;
}

.button.back {
    margin-top: 1.5em;
}
.button.back a {
    display: flex;
    justify-content: center;
    align-items: center;
    width: 200px;
    height: 50px;
    margin: auto;
    background: #e0e0e0;
    color: #2a2a2a;
    font-size: 14px;
}
@media screen and (max-width: 600px) {
    input[type="submit"],
    #btnClose a {
        height: clamp(5rem, 2.917rem + 8.89vw, 6.25rem);
    }
}
@media (hover: hover) {
    span:has(input[type="submit"]):hover:after,
    #btnClose a:hover:after {
        opacity:1;
        transform: scale(1);
    }
    .button a:hover,
    #btnClose a:hover {
        text-decoration: none;
    }
    .button.back a:hover {
        background: #c6c6c6;
    }
}

/* ==============================================
    error
============================================== */
span.error,
#input_error {
    display: block;
    color: #cc0022;
}
span.error {
    display: block !important;
    margin-top: 0.2em;
    margin-left: -0.5em;
    overflow: hidden;
}
span.error + div {
    margin-top: 0.5em;
}
#input_error {
    display: flex;
    justify-content: center;
    margin: 0 auto 2em;
    text-align: left;
    font-size: 1.125em;
    font-weight: 700;
}

input[type="text"].error_form,
input[type="email"].error_form,
input[type="tel"].error_form,
textarea.error_form,
select.error_form,
input[type="radio"].error_form::before,
input[type="checkbox"].error_form::before,
.selectbox:has(.error_form)::before,
.error_form::file-selector-button,
.error_form::-webkit-file-upload-button,
input[type='file'].error_form,
.file p:has(.error_form) {
    background: #ffcfcf;
    border-color: #c02;
}
select.error_form,
input[type='file'].error_form,
.error_form::file-selector-button,
.error_form::-webkit-file-upload-button,
.error_form::placeholder {
    color: #ff98a9;
}

#upload_info {
	border-radius: 5px;
	background: rgba(0,0,0,0.6);
	padding: 10px;
	position: fixed;
	color: #fff;
	top: 5%;
	right: 5%;
}

/* ==============================================
    footer
============================================== */
footer {
    padding: 130px 0 50px;
    color: #7b7b7b;
    font-size: 0.875em;
}
@media screen and (max-width: 800px) {
    footer {
        padding-top: clamp(3.75rem, -0.11rem + 16.47vw, 8.125rem);
        padding-bottom: clamp(1.25rem, -0.404rem + 7.06vw, 3.125rem);
    }
}

/* ==============================================
    confirm
============================================== */
#confirm {
}

/* ==============================================
    thanks / close
============================================== */
#thanks,
#close {
    text-align: center;
}
#thanks p,
#close p {
    display: flex;
    justify-content: center;
    font-size: 1.125em;
    text-align: center;
}

#btnClose {
    margin-top: 5em;
}
@media screen and (max-width: 700px) {
    #thanks p,
    #close p {
        text-align: left;
        padding: 0 var(--lr-margin);
    }
    #btnClose {
        margin-top: 3em;
    }
}
