/* ========================================
Common Form
======================================== */

.sub-form {
    display: flex;
    flex-direction: column;
    gap: calc(50 * var(--vw));
}

.sub-form-group {
    position: relative;
    display: flex;
    flex-direction: column;
    gap: calc(18 * var(--vw));
}

.sub-form-label {
    color: #111;
    font-size: calc(22 * var(--vw));
    font-weight: 600;
    line-height: 1.4;
}

.sub-form-input,
.sub-form-textarea,
.sub-form-select-trigger {
    width: 100%;
    box-sizing: border-box;
    border: 1px solid #ddd;
    background: #fff;
    color: #111;
    font-family: inherit;
    font-size: calc(20 * var(--vw));
    outline: none;
    transition:
        border-color .25s ease,
        background-color .25s ease,
        color .25s ease;
}

/* Input */

.sub-form-input {
    height: calc(82 * var(--vw));
    padding: 0 calc(26 * var(--vw));
}

.sub-form-input::placeholder,
.sub-form-textarea::placeholder {
    color: #9d9d9d;
}

/* 입력 중 */

.sub-form-input:focus,
.sub-form-textarea:focus,
.sub-form-group.is-focus .sub-form-input,
.sub-form-group.is-focus .sub-form-textarea {
    border-color: #000;
}

/* 입력 후 */

.sub-form-group.is-filled .sub-form-input,
.sub-form-group.is-filled .sub-form-textarea {
    color: #000;
    border-color: #ddd;
}

/* 오류 */

.sub-form-group.is-error .sub-form-input,
.sub-form-group.is-error .sub-form-textarea,
.sub-form-group.is-error .sub-form-select-trigger,
.sub-form-input[aria-invalid="true"],
.sub-form-textarea[aria-invalid="true"] {
    border-color: var(--red);
}

.sub-form-group.is-error .sub-form-message::before {
    position: absolute;
    left: 0;
    width: calc(14 * var(--vw));
    height: calc(14 * var(--vw));
    margin-top: calc(2 * var(--vw));
    border-radius: 50%;
    background: var(--red);
    color: #fff;
    font-size: calc(10 * var(--vw));
    font-weight: 700;
    line-height: calc(10 * var(--vw));
    text-align: center;
    content: "¡";
}

/* Disabled */

.sub-form-input:disabled,
.sub-form-textarea:disabled {
    border-color: #e5e5e5;
    background: #f5f5f5;
    color: #aaa;
    cursor: not-allowed;
}

.sub-form-input:disabled::placeholder,
.sub-form-textarea:disabled::placeholder {
    color: #c5c5c5;
}

/* Error Message */

.sub-form-message {
    display: none;
    margin: 0 0 0 calc(20 * var(--vw));
    color: var(--red);
    font-size: calc(14 * var(--vw));
    line-height: calc(18 * var(--vw));
}

.sub-form-group.is-error > .sub-form-message {
    display: block;
}

/* Textarea */

.sub-form-textarea-wrap {
    position: relative;
}

.sub-form-textarea {
    display: block;
    height: calc(380 * var(--vw));
    padding: calc(26 * var(--vw));
    line-height: calc(30 * var(--vw));
    resize: none;
}

.sub-form-text-count {
    position: absolute;
    right: 0;
    bottom: calc(-34 * var(--vw));
    color: #555;
    font-size: calc(16 * var(--vw));
    line-height: 1;
}

.sub-form-text-count strong {
    font-weight: 400;
}

/* ========================================
Custom Select
======================================== */

.sub-form-select {
    position: relative;
    width: 100%;
}

.sub-form-select-trigger {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: space-between;
    height: calc(82 * var(--vw));
    padding: 0 calc(72 * var(--vw)) 0 calc(26 * var(--vw));
    text-align: left;
    cursor: pointer;
}

.sub-form-select-value {
    overflow: hidden;
    color: #111;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.sub-form-select-value.is-placeholder {
    color: #b8b8b8;
}

.sub-form-select-arrow {
    position: absolute;
    right: calc(30 * var(--vw));
    width: calc(11 * var(--vw));
    height: calc(11 * var(--vw));
    border-right: calc(2 * var(--vw)) solid #000;
    border-bottom: calc(2 * var(--vw)) solid #000;
    transform: translateY(calc(-5 * var(--vw))) rotate(45deg);
    transition: transform .25s ease;
}

.sub-form-select-options {
    position: absolute;
    top: calc(100% - 1px);
    left: 0;
    z-index: 20;
    display: none;
    width: 100%;
    margin: 0;
    padding: calc(8 * var(--vw)) 0;
    box-sizing: border-box;
    border: 1px solid var(--red);
    border-top: 0;
    background: #fff;
    list-style: none;
}

.sub-form-select-option {
    display: flex;
    align-items: center;
    width: 100%;
    min-height: calc(68 * var(--vw));
    padding: calc(12 * var(--vw)) calc(26 * var(--vw));
    border: 0;
    background: #fff;
    color: #555;
    font-family: inherit;
    font-size: calc(18 * var(--vw));
    text-align: left;
    cursor: pointer;
}

.sub-form-select-option:hover,
.sub-form-select-option:focus-visible {
    background: #f7f7f7;
    color: #111;
    outline: none;
}

.sub-form-select-option.is-selected {
    color: #111;
    font-weight: 600;
}

.sub-form-select.is-open .sub-form-select-trigger {
    border-color: #ddd;
    border-bottom-color: transparent;
}

.sub-form-select.is-open .sub-form-select-arrow {
    transform: translateY(calc(3 * var(--vw))) rotate(225deg);
}

.sub-form-select.is-open .sub-form-select-options {
    display: block;
}

.sub-form-select.is-focus .sub-form-select-trigger {
    border-color: var(--red);
}

.sub-form-select.is-disabled {
    pointer-events: none;
}

.sub-form-select.is-disabled .sub-form-select-trigger {
    border-color: #e5e5e5;
    background: #f5f5f5;
    color: #aaa;
    cursor: not-allowed;
}

.sub-form-select.is-disabled .sub-form-select-arrow {
    border-color: #aaa;
}

/* ========================================
Checkbox
======================================== */

.sub-form-checkbox {
    display: inline-flex;
    align-items: center;
    gap: calc(12 * var(--vw));
    cursor: pointer;
}

.sub-form-checkbox input {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    opacity: 0;
}

.sub-form-checkbox-icon {
    display: block;
    flex: 0 0 auto;
    width: calc(30 * var(--vw));
    height: calc(30 * var(--vw));
    background: url("/images/icon/icon_checkbox_off.png") center / contain no-repeat;
}

.sub-form-checkbox input:checked + .sub-form-checkbox-icon {
    background-image: url("/images/icon/icon_checkbox_on.png");
}

.sub-form-checkbox input:disabled + .sub-form-checkbox-icon {
    opacity: .45;
}

.sub-form-checkbox input:disabled ~ .sub-form-checkbox-text {
    color: #aaa;
}

.sub-form-checkbox-text {
    color: #555;
    font-size: calc(18 * var(--vw));
    line-height: calc(28 * var(--vw));
}

/* ========================================
Radio
======================================== */

.sub-form-radio-row {
    display: flex;
    align-items: center;
    gap: calc(55 * var(--vw));
}

.sub-form-radio {
    position: relative;
    display: inline-flex;
    align-items: center;
    gap: calc(10 * var(--vw));
    cursor: pointer;
}

.sub-form-radio input {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    opacity: 0;
}

.sub-form-radio-icon {
    position: relative;
    display: block;
    flex: 0 0 auto;
    width: calc(20 * var(--vw));
    height: calc(20 * var(--vw));
    box-sizing: border-box;
    border: calc(2 * var(--vw)) solid #555;
    border-radius: 50%;
    background: #fff;
}

.sub-form-radio-icon::after {
    position: absolute;
    top: 50%;
    left: 50%;
    width: calc(10 * var(--vw));
    height: calc(10 * var(--vw));
    border-radius: 50%;
    background: transparent;
    content: "";
    transform: translate(-50%, -50%);
}

.sub-form-radio input:checked + .sub-form-radio-icon {
    border-color: var(--red);
}

.sub-form-radio input:checked + .sub-form-radio-icon::after {
    background: var(--red);
}

.sub-form-radio input:focus-visible + .sub-form-radio-icon {
    outline: calc(2 * var(--vw)) solid rgba(207, 16, 7, .22);
    outline-offset: calc(3 * var(--vw));
}

.sub-form-radio input:disabled + .sub-form-radio-icon {
    opacity: .45;
}

.sub-form-radio input:disabled ~ .sub-form-radio-text {
    color: #aaa;
}

.sub-form-radio-text {
    color: #555;
    font-size: calc(15 * var(--vw));
    line-height: 1;
}

/* ========================================
Submit
======================================== */

.sub-form-submit {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: calc(164 * var(--vw));
    height: calc(62 * var(--vw));
    padding: 0 calc(32 * var(--vw));
    border: 0;
    border-radius: calc(999 * var(--vw));
    background: var(--red);
    color: #fff;
    font-family: inherit;
    font-size: calc(17 * var(--vw));
    font-weight: 400;
    cursor: pointer;
}

.sub-form-submit:disabled {
    background: #ddd;
    color: #999;
    cursor: not-allowed;
}

/* ========================================
Form Control
======================================== */

.sub-form-control {
    position: relative;
    width: 100%;
}

.sub-form-checkbox input:focus-visible + .sub-form-checkbox-icon {
    outline: calc(2 * var(--vw)) solid rgba(207, 16, 7, .22);
    outline-offset: calc(3 * var(--vw));
}

/* ========================================
Form Page Layout
======================================== */

.sub-form-page {
    display: block;
    width: calc(1300 * var(--vw));
    margin: 0 auto;
}

.sub-form-section {
    padding-bottom: calc(120 * var(--vw));
}

.sub-form-section + .sub-form-section {
    padding-top: calc(40 * var(--vw));
}

.sub-form-section:last-child {
    padding-bottom: calc(140 * var(--vw));
}

.sub-form-section .inner {
    width: calc(1300 * var(--vw));
    margin: 0 auto;
}

.sub-form-section-title {
    margin-bottom: calc(70 * var(--vw));
}

.sub-form-section-title h3 {
    margin: 0;
    color: #111;
    font-size: calc(40 * var(--vw));
    font-weight: 700;
    line-height: calc(50 * var(--vw));
    letter-spacing: -.04em;
}

.sub-form-section-title span,
.sub-form-required {
    color: var(--red);
}

.sub-form-required {
    margin-left: calc(3 * var(--vw));
}

.sub-form-phone {
    display: grid;
    grid-template-columns: calc(290 * var(--vw)) 1fr;
    gap: calc(20 * var(--vw));
}

.sub-form-email {
    display: grid;
    grid-template-columns:
        minmax(0, 1fr)
        calc(28 * var(--vw))
        minmax(0, 1fr)
        calc(290 * var(--vw));
    align-items: center;
    gap: calc(20 * var(--vw));
}

.sub-form-email-at {
    color: #111;
    font-size: calc(22 * var(--vw));
    font-weight: 600;
    text-align: center;
}

.sub-form-bottom {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: calc(40 * var(--vw));
    margin-top: calc(78 * var(--vw));
}

.sub-form-agree-group {
    gap: calc(10 * var(--vw));
}

.sub-form-bottom .sub-form-submit {
    flex: 0 0 auto;
}

/* Vehicle Specification Request */

.sub-form-page-vehicle .sub-form-section:first-child {
    padding-top: calc(90 * var(--vw));
}

.sub-form-page-vehicle .sub-form-section + .sub-form-section {
    padding-top: 0;
}

.sub-form-page-vehicle .sub-form-section:last-child {
    padding-top: calc(100 * var(--vw));
    padding-bottom: calc(150 * var(--vw));
}

.sub-form-page-vehicle .sub-form {
    gap: calc(48 * var(--vw));
}

.sub-form-page-vehicle .sub-form-bottom {
    margin-top: calc(110 * var(--vw));
}

.sub-form-page-vehicle .sub-form-bottom .sub-form-checkbox-text {
    color: #777;
    font-size: calc(16 * var(--vw));
    line-height: calc(26 * var(--vw));
    word-break: keep-all;
}

.sub-form-page-vehicle .sub-form-submit {
    min-width: calc(204 * var(--vw));
}

/* Contact */
.sub-form-page-contact {
    padding-top: calc(120 * var(--vw));
}

.sub-form-contact-heading {
    margin-bottom: calc(80 * var(--vw));
}

.sub-form-contact-heading h2 {
    margin: 0;
    color: #111;
    font-size: calc(40 * var(--vw));
    font-weight: 700;
    line-height: calc(50 * var(--vw));
    letter-spacing: -.04em;
}

.sub-form-contact-heading span {
    color: var(--red);
}

.sub-form-page-contact .sub-form-section {
    padding: 0;
}

.sub-form-page-contact .sub-form-section + .sub-form-section {
    padding-top: calc(80 * var(--vw));
}

.sub-form-page-contact .sub-form-section:last-child {
    padding-bottom: calc(140 * var(--vw));
}

.sub-form-page-contact .sub-form-section-title {
    margin-bottom: calc(30 * var(--vw));
    padding-bottom: calc(18 * var(--vw));
    border-bottom: 1px solid #111;
}

.sub-form-page-contact .sub-form-section-title h3 {
    font-size: calc(24 * var(--vw));
    line-height: calc(30 * var(--vw));
    letter-spacing: -.03em;
}

.sub-form-page-contact .sub-form {
    gap: calc(40 * var(--vw));
}

.sub-form-category-group .sub-form-select {
    width: calc(300 * var(--vw));
}

.sub-cs-product-fields-row {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: calc(20 * var(--vw));
    align-items: start;
}

.sub-cs-product-fields-row .sub-form-category-group,
.sub-cs-product-fields-row .sub-form-category-group .sub-form-select {
    width: 100%;
}

.sub-cs-product-field[hidden] {
    display: none;
}

[data-cs-product-serial] .sub-form-select-value:not(.is-placeholder),
[data-cs-product-serial] .sub-form-select-option-product {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    justify-content: center;
    gap: calc(3 * var(--vw));
    white-space: normal;
}

[data-cs-product-serial] .sub-form-product-serial {
    overflow: hidden;
    width: 100%;
    color: #aaa;
    font-size: calc(16 * var(--vw));
    font-weight: 400;
    line-height: 1.2;
    text-overflow: ellipsis;
    white-space: nowrap;
}

[data-cs-product-serial] .sub-form-product-name {
    overflow: hidden;
    width: 100%;
    color: #555;
    font-size: calc(18 * var(--vw));
    font-weight: 500;
    line-height: 1.2;
    text-overflow: ellipsis;
    white-space: nowrap;
}

[data-cs-product-serial] .sub-form-select-option-product.is-selected .sub-form-product-name,
[data-cs-product-serial] .sub-form-select-option-product:hover .sub-form-product-name,
[data-cs-product-serial] .sub-form-select-option-product:focus-visible .sub-form-product-name {
    color: #111;
}

.sub-form-page-contact .sub-form-bottom {
    display: block;
    margin-top: calc(70 * var(--vw));
}

.sub-form-privacy {
    padding: calc(45 * var(--vw)) calc(50 * var(--vw));
    background: #f8f8f8;
}

.sub-form-privacy .sub-form-agree-group {
    padding-bottom: calc(30 * var(--vw));
    border-bottom: 1px solid #e1e1e1;
}

.sub-form-privacy-content {
    padding-top: calc(38 * var(--vw));
}

.sub-form-privacy-content h4 {
    margin: 0 0 calc(22 * var(--vw));
    color: #111;
    font-size: calc(18 * var(--vw));
    font-weight: 700;
}

.sub-form-privacy-content > p,
.sub-form-privacy-content li {
    color: #666;
    font-size: calc(14 * var(--vw));
    line-height: calc(22 * var(--vw));
}

.sub-form-privacy-content > p {
    margin: 0 0 calc(28 * var(--vw));
}

.sub-form-privacy-table {
    margin-bottom: calc(28 * var(--vw));
    border-top: 1px solid #ddd;
    border-left: 1px solid #ddd;
}

.sub-form-privacy-row {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
}

.sub-form-privacy-row span {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: calc(58 * var(--vw));
    padding: calc(10 * var(--vw));
    box-sizing: border-box;
    border-right: 1px solid #ddd;
    border-bottom: 1px solid #ddd;
    color: #666;
    font-size: calc(14 * var(--vw));
    line-height: 1.4;
    text-align: center;
}

.sub-form-privacy-row.is-heading span {
    min-height: calc(48 * var(--vw));
    color: #555;
    font-weight: 500;
}

.sub-form-privacy-content ul {
    margin: 0;
    padding: 0;
    list-style: none;
}

.sub-form-privacy-content li::before {
    content: "- ";
}

.sub-form-privacy-content a {
    color: #2e65a5;
    text-decoration: underline;
}

.sub-form-submit-row {
    display: flex;
    justify-content: flex-end;
    margin-top: calc(45 * var(--vw));
    padding-top: calc(45 * var(--vw));
    border-top: 1px solid #ddd;
}


/* ========================================
Mobile Forms
- Design width: 360px
- Mobile breakpoint: 720px
======================================== */
@media (max-width: 720px) {
    .sub-form-page {
        width: 100%;
        margin: 0;
    }

    .sub-form-section,
    .sub-form-section + .sub-form-section,
    .sub-form-section:last-child,
    .sub-form-page-vehicle .sub-form-section + .sub-form-section,
    .sub-form-page-vehicle .sub-form-section:last-child {
        padding: 40px 0 0;
    }

    .sub-form-section:first-child,
    .sub-form-page-vehicle .sub-form-section:first-child,
    .sub-form-page-contact .sub-form-section:first-child {
        padding-top: 0;
    }

    .sub-form-section:last-child,
    .sub-form-page-vehicle .sub-form-section:last-child {
        padding-bottom: 50px;
    }

    .sub-form-section .inner {
        width: auto;
        margin: 0;
        box-sizing: border-box;
        padding: 0 25px;
    }

    .sub-form-section-title {
        margin-bottom: 30px;
    }

    .sub-form-section-title h3 {
        font-size: 26px;
        line-height: 32px;
        letter-spacing: -.045em;
    }

    .sub-form,
    .sub-form-page-vehicle .sub-form {
        gap: 30px;
    }

    .sub-form-group {
        gap: 10px;
    }

    .sub-form-label {
        font-size: 16px;
        line-height: 22px;
    }

    .sub-form-required {
        margin-left: 2px;
    }

    .sub-form-input,
    .sub-form-select-trigger {
        height: 60px;
        padding: 0 18px;
        font-size: 14px;
    }

    .sub-form-textarea {
        height: 190px;
        padding: 18px;
        font-size: 14px;
        line-height: 22px;
    }

    .sub-form-text-count {
        bottom: -24px;
        font-size: 11px;
    }

    .sub-form-message {
        margin-left: 18px;
        font-size: 11px;
        line-height: 15px;
    }

    .sub-form-group.is-error .sub-form-message::before {
        width: 12px;
        height: 12px;
        margin-top: 1px;
        font-size: 9px;
        line-height: 10px;
    }

    .sub-form-select-trigger {
        padding-right: 48px;
    }

    .sub-form-select-arrow {
        right: 19px;
        width: 8px;
        height: 8px;
        border-right-width: 1px;
        border-bottom-width: 1px;
        transform: translateY(-4px) rotate(45deg);
    }

    .sub-form-select.is-open .sub-form-select-arrow {
        transform: translateY(3px) rotate(225deg);
    }

    .sub-form-select-options {
        padding: 6px 0;
    }

    .sub-form-select-option {
        min-height: 44px;
        padding: 10px 18px;
        font-size: 13px;
    }

    .sub-form-email {
        grid-template-columns: minmax(0, 1fr) 20px;
        gap: 16px 10px;
    }

    .sub-form-email-at {
        font-size: 16px;
    }

    .sub-form-email > .sub-form-control:nth-of-type(2),
    .sub-form-email > .sub-form-select {
        grid-column: 1 / -1;
    }

    .sub-form-checkbox {
        align-items: flex-start;
        gap: 8px;
    }

    .sub-form-checkbox-icon {
        width: 20px;
        height: 20px;
    }

    .sub-form-checkbox-text,
    .sub-form-page-vehicle .sub-form-bottom .sub-form-checkbox-text {
        font-size: 12px;
        line-height: 20px;
    }

    .sub-form-bottom,
    .sub-form-page-vehicle .sub-form-bottom {
        flex-direction: column;
        align-items: stretch;
        gap: 30px;
        margin-top: 40px;
    }

    .sub-form-submit,
    .sub-form-page-vehicle .sub-form-submit {
        align-self: center;
        min-width: 140px;
        height: 50px;
        padding: 0 28px;
        border-radius: 28px;
        font-size: 14px;
    }

    /* Contact */
    .sub-form-page-contact {
        padding-top: 0;
    }

    .sub-form-contact-heading {
        margin-bottom: 40px;
        padding: 40px 25px 0;
    }

    .sub-form-contact-heading h2 {
        font-size: 26px;
        line-height: 32px;
    }

    .sub-form-page-contact .sub-form-section + .sub-form-section {
        padding-top: 70px;
    }

    .sub-form-page-contact .sub-form-section:last-child {
        padding-bottom: 40px;
    }

    .sub-form-page-contact .sub-form-section-title {
        margin-bottom: 28px;
        padding-bottom: 14px;
    }

    .sub-form-page-contact .sub-form-section-title h3 {
        font-size: 18px;
        line-height: 24px;
    }

    .sub-form-page-contact .sub-form {
        gap: 24px;
    }

    .sub-form-page-contact .sub-form-group {
        gap: 8px;
    }
    .sub-cs-product-fields-row {
        grid-template-columns: 1fr;
        gap: 28px;
    }

    .sub-form-page-contact .sub-form-label {
        font-size: 14px;
        line-height: 20px;
    }

    .sub-form-page-contact .sub-form-input,
    .sub-form-page-contact .sub-form-select-trigger {
        height: 60px;
        padding-right: 14px;
        padding-left: 14px;
        font-size: 14px;
    }

    [data-cs-product-serial] .sub-form-product-serial {
        font-size: 12px;
    }

    [data-cs-product-serial] .sub-form-product-name {
        font-size: 14px;
    }

    .sub-form-page-contact .sub-form-email {
        grid-template-columns: minmax(0, 1fr) 14px;
        gap: 10px;
    }

    .sub-form-page-contact .sub-form-email-at {
        font-size: 12px;
    }

    .sub-form-page-contact .sub-form-textarea {
        height: 200px;
        padding: 14px;
        font-size: 14px;
        line-height: 22px;
    }

    .sub-form-page-contact .sub-form-bottom {
        gap: 26px;
        margin-top: 38px;
    }

    .sub-form-page-contact .sub-form-submit {
        min-width: 132px;
        height: 50px;
        padding: 0 22px;
        font-size: 14px;
    }

    .sub-form-category-group .sub-form-select {
        width: 100%;
    }

    .sub-form-privacy {
        padding: 24px 18px;
    }

    .sub-form-privacy .sub-form-agree-group {
        padding-bottom: 20px;
    }

    .sub-form-privacy-content {
        padding-top: 24px;
    }

    .sub-form-privacy-content h4 {
        margin-bottom: 14px;
        font-size: 16px;
        line-height: 22px;
    }

    .sub-form-privacy-content > p,
    .sub-form-privacy-content li {
        font-size: 14px;
        line-height: 22px;
    }

    .sub-form-privacy-row span {
        font-size: 12px;
        line-height: 18px;
    }

    .sub-form-privacy-table {
        overflow: visible;
        margin-bottom: 20px;
    }

    .sub-form-privacy-row {
        min-width: 0;
    }

    .sub-form-privacy-row span,
    .sub-form-privacy-row.is-heading span {
        min-height: 44px;
        padding: 8px;
    }

    .sub-form-submit-row {
        justify-content: center;
        margin-top: 28px;
        padding-top: 0;
        border-top: 0;
    }

    /* Vehicle Specification Request */
    .sub-form-page-vehicle .sub-form-section + .sub-form-section {
        padding-top: 72px;
    }

    .sub-form-page-vehicle .sub-form-bottom {
        margin-top: 32px;
    }
}
