/* --- Styles for the Form Page --- */

.form-page-section { padding: 120px 0; background-color: var(--background-color); }
.form-container-grid { display: grid; grid-template-columns: 1fr 1.3fr; gap: 80px; align-items: flex-start; }
.form-instructions { padding-top: 15px; }
.form-title { font-size: clamp(2.2rem, 5vw, 2.8rem); font-weight: 900; margin-bottom: 15px; }
.form-subtitle { font-size: 1.1rem; line-height: 1.7; color: var(--accent-color); margin-bottom: 40px; }
.instructions-block { margin-bottom: 30px; }
.instructions-block h3 { font-size: 1.4rem; font-weight: 700; margin-bottom: 10px; color: var(--primary-color); }
.instructions-block ul { list-style: none; padding-left: 0; }
.instructions-block li { position: relative; padding-left: 25px; margin-bottom: 10px; color: var(--accent-color); }
.instructions-block li::before { content: '✓'; position: absolute; left: 0; top: 0; color: var(--primary-color); font-weight: 900; }
.form-wrapper { background-color: var(--secondary-color); padding: 40px; border-radius: var(--border-radius); border: 1px solid #e8e8e8; box-shadow: 0 10px 30px rgba(0,0,0,0.05); }

/* --- UPDATE: Corrected Form Element Styles --- */
.form-group input, .form-group textarea, .form-group select {
    background-color: #f9f9f9; border: 1px solid #ddd;
    /* Ensure all fields have the same vertical padding and font size */
    padding: 15px; font-size: 1rem;
    font-family: var(--font-family); width: 100%; box-sizing: border-box;
    border-radius: 8px; /* Match radius from global css */
}
.form-group input:focus, .form-group textarea:focus, .form-group select:focus {
    background-color: #fff; border-color: var(--primary-color);
    box-shadow: 0 0 0 3px rgba(0,0,0,0.08); outline: none;
}
.select-wrapper { position: relative; }
.select-wrapper::after {
    content: ''; position: absolute; top: 50%; right: 15px;
    width: 8px; height: 8px; border-bottom: 2px solid var(--accent-color);
    border-right: 2px solid var(--accent-color); transform: translateY(-70%) rotate(45deg);
    pointer-events: none; transition: all 0.3s ease;
}
.form-group .select-wrapper select {
    -webkit-appearance: none; -moz-appearance: none; appearance: none;
    cursor: pointer; padding-right: 40px;
}
.form-group .select-wrapper select:required:invalid { color: #888; }
.form-submit-button { width: 100%; padding: 16px; font-size: 1.1rem; margin-top: 10px; }

/* --- NEW: Modal and Animation Styles --- */
.modal-overlay {
    position: fixed; top: 0; left: 0; width: 100%; height: 100%;
    background: rgba(26, 26, 26, 0.7); backdrop-filter: blur(5px);
    display: flex; align-items: center; justify-content: center;
    z-index: 2000; opacity: 0; pointer-events: none;
    transition: opacity 0.4s ease;
}
.modal-overlay.is-visible { opacity: 1; pointer-events: auto; }
.modal-content {
    background: white; padding: 40px; border-radius: var(--border-radius);
    text-align: center; max-width: 400px; width: 90%;
    transform: scale(0.9); opacity: 0;
    transition: all 0.4s cubic-bezier(0.165, 0.84, 0.44, 1);
}
.modal-overlay.is-visible .modal-content { transform: scale(1); opacity: 1; }
.modal-content h2 { font-size: 1.8rem; margin: 20px 0 10px 0; color: var(--text-color); }
.modal-content p { color: var(--accent-color); margin-bottom: 30px; }
.modal-content .close-modal { cursor: pointer; }
.success-animation .checkmark { width: 80px; height: 80px; border-radius: 50%; display: block; margin: 0 auto; stroke-width: 3; stroke: #1a1a1a; stroke-miterlimit: 10; box-shadow: inset 0px 0px 0px #1a1a1a; animation: fill .4s ease-in-out .4s forwards, scale .3s ease-in-out .9s both; }
.success-animation .checkmark__circle { stroke-dasharray: 166; stroke-dashoffset: 166; stroke-width: 3; stroke-miterlimit: 10; stroke: #1a1a1a; fill: none; animation: stroke 0.6s cubic-bezier(0.65, 0, 0.45, 1) forwards; }
.success-animation .checkmark__check { transform-origin: 50% 50%; stroke-dasharray: 48; stroke-dashoffset: 48; animation: stroke 0.3s cubic-bezier(0.65, 0, 0.45, 1) 0.8s forwards; }
@keyframes stroke { 100% { stroke-dashoffset: 0; } }
@keyframes scale { 0%, 100% { transform: none; } 50% { transform: scale3d(1.1, 1.1, 1); } }
@keyframes fill { 100% { box-shadow: inset 0px 0px 0px 40px #1a1a1a; } }

/* --- Responsive adjustments --- */
@media (max-width: 992px) {
    .form-container-grid { grid-template-columns: 1fr; gap: 40px; }
    .form-instructions { text-align: center; padding-top: 0; }
    .instructions-block ul { display: inline-block; text-align: left; }
}

.form-group .select-wrapper select:required:invalid { color: #888; }
.form-submit-button { width: 100%; padding: 16px; font-size: 1.1rem; margin-top: 10px; }


/* --- NEW: Validation Error Styles --- */
.form-error-message {
    color: #d93025; /* Google's error red */
    font-weight: 700;
    margin-top: 15px;
    text-align: center;
    display: none; /* Hidden by default */
}
.form-group input.error,
.form-group textarea.error,
.form-group select.error {
    border-color: #d93025;
    background-color: #fce8e6;
}
.form-group input.error:focus,
.form-group textarea.error:focus,
.form-group select.error:focus {
    box-shadow: 0 0 0 3px rgba(217, 48, 37, 0.2);
}