/* 
---------------------------------------------------------
Blue Leaf Studio - Contact Page (Antigravity & Glassmorphism)
--------------------------------------------------------- 
独占スタイル：全て .bls-contact- 接頭辞で干渉を防止
*/

/* --- Wrapper & Background --- */
.bls-contact-page {
    /* Base background matching site theme */
    background-color: var(--color-base, #fdfdfd) !important;
    position: relative;
    overflow: hidden;
    padding: 120px 0 80px 0 !important;
    font-family: var(--font-body, 'Noto Sans JP', sans-serif) !important;
    color: var(--color-text-main, #333333) !important;
}

/* Background floating abstract shapes */
.bls-contact-page::before,
.bls-contact-page::after {
    content: "" !important;
    position: absolute !important;
    border-radius: 50% !important;
    filter: blur(80px) !important;
    z-index: 0 !important;
    pointer-events: none !important;
}

.bls-contact-page::before {
    width: 600px !important;
    height: 600px !important;
    background: rgba(50, 155, 167, 0.08) !important;
    top: -100px !important;
    left: -200px !important;
    animation: bls-contact-float-blob 15s infinite alternate ease-in-out !important;
}

.bls-contact-page::after {
    width: 400px !important;
    height: 400px !important;
    background: rgba(213, 215, 214, 0.3) !important;
    bottom: -50px !important;
    right: -100px !important;
    animation: bls-contact-float-blob 12s infinite alternate-reverse ease-in-out !important;
}

@keyframes bls-contact-float-blob {
    0% {
        transform: translate(0, 0) scale(1);
    }

    100% {
        transform: translate(50px, 50px) scale(1.1);
    }
}

.bls-contact-container {
    width: 100% !important;
    max-width: 1200px !important;
    margin: 0 auto !important;
    padding: 0 40px !important;
    position: relative !important;
    z-index: 10 !important;
}

/* --- Hero Section --- */
.bls-contact-hero {
    text-align: center !important;
    margin-bottom: 60px !important;
    position: relative !important;
}

.bls-contact-title {
    font-family: var(--font-heading, 'Jost', sans-serif) !important;
    font-size: 4rem !important;
    font-weight: 700 !important;
    color: var(--color-text-main, #333) !important;
    letter-spacing: 0.05em !important;
    line-height: 1.2 !important;
    /* 浮遊感テキストエフェクト */
    text-shadow: 0 10px 20px rgba(50, 155, 167, 0.15), 0 2px 5px rgba(0, 0, 0, 0.05) !important;
    animation: bls-contact-float-text 4s infinite ease-in-out !important;
    margin-bottom: 10px !important;
}

.bls-contact-subtitle {
    font-size: 1.1rem !important;
    color: var(--color-text-muted, #666) !important;
    letter-spacing: 0.1em !important;
}

@keyframes bls-contact-float-text {
    0% {
        transform: translateY(0);
    }

    50% {
        transform: translateY(-8px);
    }

    100% {
        transform: translateY(0);
    }
}

/* --- Layout: Split Columns --- */
.bls-contact-layout {
    display: flex !important;
    flex-wrap: nowrap !important;
    gap: 40px !important;
    align-items: flex-start !important;
}

.bls-contact-form-col {
    flex: 2 !important;
}

.bls-contact-info-col {
    flex: 1 !important;
}

/* --- Glassmorphism Box --- */
.bls-contact-glass-box {
    background: rgba(255, 255, 255, 0.6) !important;
    backdrop-filter: blur(20px) !important;
    -webkit-backdrop-filter: blur(20px) !important;
    border: 1px solid rgba(255, 255, 255, 0.8) !important;
    border-radius: 24px !important;
    box-shadow: 0 20px 40px rgba(50, 155, 167, 0.08), inset 0 0 0 1px rgba(255, 255, 255, 0.5) !important;
    padding: 50px !important;
    transition: transform 0.4s cubic-bezier(0.25, 0.8, 0.25, 1), box-shadow 0.4s cubic-bezier(0.25, 0.8, 0.25, 1) !important;
    position: relative !important;
    overflow: hidden !important;
}

.bls-contact-glass-box:hover {
    transform: translateY(-5px) !important;
    box-shadow: 0 30px 50px rgba(50, 155, 167, 0.12), inset 0 0 0 1px rgba(255, 255, 255, 0.6) !important;
}

/* --- Form Elements --- */
.bls-contact-group {
    margin-bottom: 30px !important;
    position: relative !important;
}

.bls-contact-label {
    display: block !important;
    font-weight: 600 !important;
    margin-bottom: 10px !important;
    font-size: 0.95rem !important;
    color: var(--color-text-main, #333) !important;
    letter-spacing: 0.02em !important;
}

.bls-contact-label span {
    color: #e74c3c !important;
    font-size: 0.8rem !important;
    margin-left: 5px !important;
    vertical-align: super !important;
}

.bls-contact-input,
.bls-contact-select,
.bls-contact-textarea {
    width: 100% !important;
    padding: 16px 20px !important;
    font-family: inherit !important;
    font-size: 1rem !important;
    color: var(--color-text-main, #333) !important;
    background: rgba(255, 255, 255, 0.5) !important;
    border: 1px solid rgba(255, 255, 255, 0.6) !important;
    border-radius: 12px !important;
    outline: none !important;
    transition: all 0.4s ease !important;
    box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.02) !important;
}

.bls-contact-textarea {
    min-height: 180px !important;
    resize: vertical !important;
    line-height: 1.6 !important;
}

/* Custom Select Arrow */
.bls-contact-select {
    appearance: none !important;
    -webkit-appearance: none !important;
    background-image: url("data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23329ba7' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='6 9 12 15 18 9'%3e%3c/polyline%3e%3c/svg%3e") !important;
    background-repeat: no-repeat !important;
    background-position: right 15px center !important;
    background-size: 16px !important;
    padding-right: 40px !important;
    cursor: pointer !important;
}

/* Focus and 빛効果 */
.bls-contact-input:focus,
.bls-contact-select:focus,
.bls-contact-textarea:focus {
    background: rgba(255, 255, 255, 0.85) !important;
    border-color: var(--color-main, #329ba7) !important;
    box-shadow: 0 0 0 4px rgba(50, 155, 167, 0.15), inset 0 2px 4px rgba(0, 0, 0, 0.01) !important;
    transform: translateY(-2px) !important;
}

/* HTML5 Native Validation Styling Support */
.bls-contact-input:user-invalid,
.bls-contact-select:user-invalid,
.bls-contact-textarea:user-invalid {
    border-color: #e74c3c !important;
    background: rgba(231, 76, 60, 0.05) !important;
}

.bls-contact-input:user-invalid:focus,
.bls-contact-select:user-invalid:focus,
.bls-contact-textarea:user-invalid:focus {
    box-shadow: 0 0 0 4px rgba(231, 76, 60, 0.15) !important;
}

/* Submit Button & Aurora Effect */
.bls-contact-submit-wrap {
    text-align: center !important;
    margin-top: 40px !important;
}

.bls-contact-submit-btn {
    position: relative !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    gap: 10px !important;
    padding: 18px 50px !important;
    font-size: 1.1rem !important;
    font-weight: 600 !important;
    font-family: inherit !important;
    color: #fff !important;
    background: var(--color-main, #329ba7) !important;
    border: none !important;
    border-radius: 50px !important;
    cursor: pointer !important;
    overflow: hidden !important;
    transition: all 0.4s cubic-bezier(0.25, 0.8, 0.25, 1) !important;
    box-shadow: 0 10px 20px rgba(50, 155, 167, 0.3) !important;
    z-index: 1 !important;
}

/* オーロラ光彩エフェクトの仕込み */
.bls-contact-submit-btn::before {
    content: "" !important;
    position: absolute !important;
    top: -50% !important;
    left: -50% !important;
    width: 200% !important;
    height: 200% !important;
    background: radial-gradient(circle, rgba(255, 255, 255, 0.4) 0%, transparent 60%) !important;
    transform: scale(0) !important;
    transition: transform 0.6s ease-out !important;
    z-index: -1 !important;
}

.bls-contact-submit-btn:hover {
    transform: translateY(-4px) !important;
    box-shadow: 0 15px 30px rgba(50, 155, 167, 0.4), 0 0 20px rgba(92, 193, 205, 0.5) !important;
    /* オーロラグロウ */
}

.bls-contact-submit-btn:hover::before {
    transform: scale(1) translate(10%, 10%) !important;
}

.bls-contact-btn-text {
    position: relative !important;
    z-index: 2 !important;
}

.bls-contact-spinner {
    display: none !important;
    width: 20px !important;
    height: 20px !important;
    border: 3px solid rgba(255, 255, 255, 0.3) !important;
    border-top-color: #fff !important;
    border-radius: 50% !important;
    animation: bls-contact-spin 1s linear infinite !important;
}

@keyframes bls-contact-spin {
    to {
        transform: rotate(360deg);
    }
}

/* Loading State */
.bls-contact-submit-btn.is-loading {
    pointer-events: none !important;
    opacity: 0.8 !important;
}

.bls-contact-submit-btn.is-loading .bls-contact-spinner {
    display: block !important;
}

/* --- Thank You Message Overlay --- */
.bls-contact-thanks-overlay {
    position: absolute !important;
    top: 0 !important;
    left: 0 !important;
    width: 100% !important;
    height: 100% !important;
    background: rgba(255, 255, 255, 0.85) !important;
    backdrop-filter: blur(15px) !important;
    -webkit-backdrop-filter: blur(15px) !important;
    display: flex !important;
    flex-direction: column !important;
    align-items: center !important;
    justify-content: center !important;
    text-align: center !important;
    opacity: 0 !important;
    visibility: hidden !important;
    transition: all 0.6s cubic-bezier(0.25, 0.8, 0.25, 1) !important;
    z-index: 100 !important;
    border-radius: 24px !important;
}

.bls-contact-thanks-overlay.is-active {
    opacity: 1 !important;
    visibility: visible !important;
}

.bls-contact-thanks-icon {
    font-size: 4rem !important;
    margin-bottom: 20px !important;
    animation: bls-contact-bounce 2s infinite ease-in-out !important;
}

@keyframes bls-contact-bounce {

    0%,
    100% {
        transform: translateY(0);
    }

    50% {
        transform: translateY(-15px);
    }
}

.bls-contact-thanks-title {
    font-size: 1.8rem !important;
    color: var(--color-main, #329ba7) !important;
    margin-bottom: 15px !important;
    font-family: var(--font-heading, 'Jost', sans-serif) !important;
}

.bls-contact-thanks-text {
    font-size: 1.05rem !important;
    color: var(--color-text-main, #333) !important;
    line-height: 1.8 !important;
}

/* --- Studio Information Column --- */
.bls-contact-info-wrap {
    background: transparent !important;
}

.bls-contact-info-title {
    font-size: 1.4rem !important;
    font-weight: 600 !important;
    margin-bottom: 25px !important;
    padding-bottom: 15px !important;
    border-bottom: 1px solid rgba(50, 155, 167, 0.1) !important;
    font-family: var(--font-heading, 'Jost', sans-serif) !important;
}

.bls-contact-info-list {
    list-style: none !important;
    padding: 0 !important;
    margin: 0 0 40px 0 !important;
}

.bls-contact-info-list li {
    margin-bottom: 20px !important;
    display: flex !important;
    align-items: flex-start !important;
    gap: 15px !important;
}

.bls-contact-icon {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: 40px !important;
    height: 40px !important;
    background: rgba(255, 255, 255, 0.7) !important;
    border-radius: 50% !important;
    box-shadow: 0 5px 15px rgba(50, 155, 167, 0.1) !important;
}

.bls-contact-info-text {
    flex: 1 !important;
}

.bls-contact-info-text strong {
    display: block !important;
    font-size: 0.9rem !important;
    color: var(--color-main, #329ba7) !important;
    margin-bottom: 4px !important;
}

.bls-contact-info-text p {
    font-size: 1rem !important;
    margin: 0 !important;
}

/* Social Links */
.bls-contact-social {
    display: flex !important;
    gap: 15px !important;
}

.bls-contact-social-link {
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: 50px !important;
    height: 50px !important;
    background: rgba(255, 255, 255, 0.6) !important;
    backdrop-filter: blur(10px) !important;
    border: 1px solid rgba(255, 255, 255, 0.8) !important;
    border-radius: 12px !important;
    box-shadow: 0 8px 20px rgba(50, 155, 167, 0.05) !important;
    color: var(--color-text-main, #333) !important;
    text-decoration: none !important;
    font-weight: 600 !important;
    transition: all 0.3s ease !important;
}

.bls-contact-social-link:hover {
    transform: translateY(-5px) !important;
    background: var(--color-main, #329ba7) !important;
    color: #fff !important;
    box-shadow: 0 12px 25px rgba(50, 155, 167, 0.2) !important;
}

/* --- Responsive --- */
@media (max-width: 991px) {
    .bls-contact-layout {
        flex-direction: column !important;
    }

    .bls-contact-form-col,
    .bls-contact-info-col {
        width: 100% !important;
        flex: auto !important;
    }

    .bls-contact-glass-box {
        padding: 30px 20px !important;
    }

    .bls-contact-container {
        padding: 0 20px !important;
    }

    .bls-contact-title {
        font-size: 3rem !important;
    }
}