/**
 * Show/Hide Controls CSS for BusinessLaunchPro
 * Provides consistent visibility control across forms
 */

/* Base hide/show classes */
.hide {
    display: none !important;
}

.show {
    display: block !important;
}

.show-inline {
    display: inline !important;
}

.show-inline-block {
    display: inline-block !important;
}

.show-flex {
    display: flex !important;
}

/* Visibility classes (maintains space) */
.invisible {
    visibility: hidden !important;
}

.visible {
    visibility: visible !important;
}

/* Generic helpers used by JS 'slide' mode */
.hidden {
    display: none !important;
}

.collapsed {
    display: none !important;
}

.expanded {
    display: block !important;
}

/* Fade transitions for smooth show/hide */
.fade-in {
    opacity: 0;
    transition: opacity 0.3s ease-in-out;
}

.fade-in.show {
    opacity: 1;
}

.fade-out {
    opacity: 1;
    transition: opacity 0.3s ease-in-out;
}

.fade-out.hide {
    opacity: 0;
}

/* Specific form control visibility classes */
.form-loading {
    display: none;
}

.form-loading.active {
    display: inline-block;
}

/* Button loading states */
.btn-loading {
    position: relative;
    pointer-events: none;
}

.btn-loading .btn-text {
    opacity: 0.6;
}

.btn-loading .btn-spinner {
    display: inline-block !important;
}

.btn-spinner {
    display: none;
}

/* Company registration specific sections */
.company-form-section {
    transition: all 0.3s ease-in-out;
}

.company-form-section.hidden {
    display: none;
    opacity: 0;
    transform: translateY(-10px);
}

.company-form-section.visible {
    display: block;
    opacity: 1;
    transform: translateY(0);
}

/* Identical business name sections */
.identical-sections {
    transition: max-height 0.3s ease-in-out, opacity 0.3s ease-in-out;
    overflow: hidden;
}

.identical-sections.collapsed {
    max-height: 0;
    opacity: 0;
}

.identical-sections.expanded {
    max-height: 1000px; /* Adjust based on content */
    opacity: 1;
}

/* Name reservation sections */
.name-reservation-section {
    display: none;
    transition: all 0.3s ease-in-out;
}

.name-reservation-section.active {
    display: block;
    animation: slideDown 0.3s ease-in-out;
}

/* Applicant type sections */
.applicant-type-section {
    display: none;
    transition: all 0.3s ease-in-out;
}

.applicant-type-section.selected {
    display: block;
    animation: fadeInUp 0.3s ease-in-out;
}

/* Search results visibility */
.search-results {
    transition: all 0.3s ease-in-out;
}

.search-results.hidden {
    display: none;
    opacity: 0;
}

.search-results.visible {
    display: block;
    opacity: 1;
}

/* Loading overlay for forms */
.form-overlay {
    position: relative;
}

.form-overlay::before {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background: rgba(255, 255, 255, 0.8);
    z-index: 10;
    display: none;
}

.form-overlay.loading::before {
    display: block;
}

.form-overlay.loading::after {
    content: "Loading...";
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    z-index: 11;
    padding: 10px 20px;
    background: #fff;
    border: 1px solid #ddd;
    border-radius: 4px;
    box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
}

/* Animation keyframes */
@keyframes slideDown {
    from {
        opacity: 0;
        transform: translateY(-20px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@keyframes fadeInUp {
    from {
        opacity: 0;
        transform: translateY(20px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@keyframes slideUp {
    from {
        opacity: 1;
        transform: translateY(0);
    }
    to {
        opacity: 0;
        transform: translateY(-20px);
    }
}

/* Responsive visibility classes */
@media (max-width: 768px) {
    .hide-mobile {
        display: none !important;
    }

    .show-mobile {
        display: block !important;
    }
}

@media (min-width: 769px) {
    .hide-desktop {
        display: none !important;
    }

    .show-desktop {
        display: block !important;
    }
}

/* Utility classes for common show/hide patterns */
.toggle-section {
    transition: all 0.3s ease-in-out;
}

.toggle-section.inactive {
    display: none;
    opacity: 0;
}

.toggle-section.active {
    display: block;
    opacity: 1;
}

/* Error and success state visibility */
.error-message {
    display: none;
    color: #d9534f;
    margin-top: 5px;
}

.error-message.show {
    display: block;
}

.success-message {
    display: none;
    color: #5cb85c;
    margin-top: 5px;
}

.success-message.show {
    display: block;
}

/* Form validation states */
.form-group.has-error .help-block {
    display: block;
}

.form-group:not(.has-error) .help-block {
    display: none;
}

.form-group.has-success .success-icon {
    display: inline-block;
}

.form-group:not(.has-success) .success-icon {
    display: none;
}
