@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@400;500;700&display=swap');
:root {
    --primary-color: #007bff; --secondary-color: #6c757d; --light-gray-color: #f8f9fa;
    --border-color: #dee2e6; --text-color: #212529; --red-color: #dc3545;
}
* { box-sizing: border-box; margin: 0; padding: 0; }
body { font-family: 'Noto Sans KR', sans-serif; background-color: var(--light-gray-color); color: var(--text-color); }
.form-wrapper { max-width: 600px; margin: 0 auto; background-color: #fff; padding: 40px 30px 150px 30px; min-height: 100vh; }
.progress-bar { display: flex; justify-content: space-between; align-items: center; list-style: none; margin-bottom: 50px; }
.progress-bar .step { text-align: center; position: relative; width: 20%; }
.progress-bar .step .icon { width: 30px; height: 30px; border-radius: 50%; background-color: var(--border-color); color: #fff; display: inline-flex; justify-content: center; align-items: center; border: 2px solid var(--border-color); transition: all 0.3s ease; }
.progress-bar .step .text { margin-top: 8px; font-size: 13px; color: var(--secondary-color); }
.progress-bar .step:not(:last-child)::after { content: ''; position: absolute; top: 15px; left: 50%; width: 100%; height: 2px; background-color: var(--border-color); z-index: -1; }
.progress-bar .step.active .icon { background-color: var(--primary-color); border-color: var(--primary-color); }
.progress-bar .step.active .text { color: var(--primary-color); font-weight: 700; }
.progress-bar .step.active:after { background-color: var(--primary-color); }
.form-section { display: none; }
.form-section.active { display: block; }
.section-title { font-size: 24px; font-weight: 700; margin-bottom: 30px; }
.sub-title { font-size: 18px; font-weight: 700; margin-bottom: 20px; border-top: 1px solid var(--border-color); padding-top: 25px; margin-top: 30px;}
.form-group { margin-bottom: 20px; position: relative; }
label, .label { display: block; font-size: 14px; font-weight: 500; margin-bottom: 8px; }
.required { color: var(--red-color); margin-left: 2px; }
.form-control { width: 100%; padding: 12px; border: 1px solid var(--border-color); border-radius: 6px; font-size: 16px; transition: border-color 0.2s; }
.form-control:focus { outline: none; border-color: var(--primary-color); }
.form-control.invalid { border-color: var(--red-color); }
.validation-message { color: var(--red-color); font-size: 12px; margin-top: 5px; display: none; }
.radio-group-container { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.radio-label { display: block; border: 1px solid var(--border-color); padding: 12px; text-align: center; border-radius: 6px; cursor: pointer; transition: all 0.2s; font-weight: 500; color: #aaa; background: #fff; }
.radio-input { display: none; }
.radio-input:checked + .radio-label { border-color: var(--primary-color); color: var(--primary-color); font-weight: 700; }
.input-with-button, .input-with-select, .input-group-flex { display: flex; gap: 10px; }
.input-with-select .form-control:first-child, .input-group-flex .form-control { flex: 1; }
.input-with-select .form-control:last-child { flex: 1; }
.input-with-button .btn-gray { flex: 0 0 100px; background: #eee; border: none; color: #333; font-weight: 500; cursor: pointer; border-radius: 6px; }
.input-with-button .form-control { flex: 1; }
.helper-text { font-size: 12px; color: #666; margin-top: 8px; }
.btn-add-contact { width: 100%; padding: 12px; background-color: #f1f3f5; border: 1px dashed #ccc; color: #666; border-radius: 6px; cursor: pointer; font-weight: 500; margin-top: 10px; }
.product-summary { border: 1px solid var(--border-color); border-radius: 8px; padding: 20px; }
.product-summary .row { display: flex; justify-content: space-between; align-items: center; padding: 10px 0; }
.product-summary .row:not(:last-child) { border-bottom: 1px dashed var(--border-color); }
.product-summary .title { font-weight: 500; color: #555; }
.product-summary .value { font-weight: 700; text-align: right; }
.choice-box { border: 1px solid var(--border-color); border-radius: 8px; padding: 15px 20px; cursor: pointer; display: flex; justify-content: space-between; align-items: center; }
.choice-box.active { border-color: var(--primary-color); border-width: 2px; }
.check-icon { width: 24px; height: 24px; border-radius: 50%; border: 2px solid var(--border-color); color: #fff; display: flex; justify-content: center; align-items: center; }
.choice-box.active .check-icon { background-color: var(--primary-color); border-color: var(--primary-color); }
.terms-box { border: 1px solid var(--border-color); border-radius: 8px; }
.terms-all { padding: 15px; border-bottom: 1px solid var(--border-color); display: flex; align-items: center; }
.terms-all label { margin-bottom: 0; font-weight: 700; cursor: pointer; }
.terms-list { list-style: none; padding: 0; }
.terms-item { padding: 15px; font-size: 14px; }
.terms-item:not(:last-child) { border-bottom: 1px solid var(--border-color); }
.terms-item-line { display: flex; align-items: center; }
.terms-item-line label { flex-grow: 1; margin-left: 8px; margin-bottom: 0; cursor: pointer; }
.terms-toggle-arrow { color: var(--secondary-color); text-decoration: none; font-weight: 700; padding: 5px; }
.sticky-footer { position: fixed; bottom: 0; left: 0; width: 100%; background-color: #fff; box-shadow: 0 -2px 10px rgba(0,0,0,0.1); padding: 15px; z-index: 100; }
.footer-content { max-width: 600px; margin: 0 auto; display: flex; justify-content: space-between; align-items: center; }
.price-summary { display: none; }
.price-summary .label { font-size: 14px; color: #555; }
.price-summary .amount { font-size: 18px; font-weight: 700; }
.price-summary .gift { color: var(--red-color); }
.nav-buttons { display: flex; gap: 10px; width: 100%; }
.nav-btn { flex: 1; padding: 15px; border: none; border-radius: 6px; font-size: 16px; font-weight: 700; cursor: pointer; }
.btn-prev { background-color: #e9ecef; color: #495057; }
.btn-next { background-color: var(--primary-color); color: #fff; }
.modal-overlay { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: rgba(0,0,0,0.6); display: none; justify-content: center; align-items: center; z-index: 2000; }
.modal-content { background-color: #fff; padding: 30px; border-radius: 12px; text-align: center; width: 90%; max-width: 350px; box-shadow: 0 5px 15px rgba(0,0,0,0.3); }
.modal-content.large { max-width: 500px; text-align: left;}
#terms-detail-modal .modal-body { max-height: 60vh; overflow-y: auto; background-color: #f8f9fa; padding: 20px; border-radius: 8px; margin-bottom: 20px; font-size: 14px; line-height: 1.6; }
.modal-content h3 { margin-bottom: 15px; font-size: 18px; }
.modal-content p { margin-bottom: 25px; color: #555; font-size: 15px; line-height: 1.5; }
.modal-buttons { display: flex; gap: 10px; justify-content: flex-end; }
.modal-buttons .btn-next { flex: 1; }
@media (max-width: 600px) { .form-wrapper { padding: 20px 15px 150px 15px; } .progress-bar .text { font-size: 11px; } }