body.no-scroll {
    overflow: hidden;
}

html {
    font-family: "Montserrat", sans-serif !important;

}

input:focus-visible {
    outline: none;
}
input:checked + #checkmark {
    opacity: 1;
}

.custom-marker {
    background: none;
    border: none;
}

.marker-container {
    display: flex;
    align-items: center;
}

.marker-icon {
    width: 57px;
    height: 69px;
}

.info-box {
    margin-left: -30px;
    box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
    width: 145px;
    height: 53px;
    z-index: -8;
    background-color: #FFFFFFE5;
    border-top-right-radius: 21px;
    border-bottom-right-radius: 21px;
    padding-left: 34px;
}
@media (max-width: 720px) {
    #mobile_lab_info {
        z-index: 101; /* Выше карты */
        border-radius: 16px 16px 0 0 ;
        height: 60vh;
        /*display: block !important;*/
    }
    #modal_map .flex-col {
        flex-direction: column;
    }
    #modal_map .sm\:w-2\/3 {
        width: 100%;
        height: 100vh; /* Карта на весь экран */
    }
    #modal_map .sm\:w-1\/3 {
        display: none; /* Скрываем правый блок на мобильных */
    }
}
@media (max-width: 767px) and (min-width: 720px) {
    #make_appointment_btn {
        width: 30%;
    }

    #close-popup-btn {
        display: none;
    }

    #mobile_lab_info {
        display: none;
    }

    #choose_lab {
        display: block;
        margin-top: 20px;
    }

    #modal_content {
        border-radius: 16px ;
    }

    #modal_content {
        width: 90vw;
        height: 570px;
    }

    #modal_content_lvl3 {
        height: 570px;
        border-radius: 16px 16px ;
    }

    #info_panel_close {
        display: flex;
    }

    #map {
        border-top-left-radius: 16px;
        border-bottom-left-radius: 16px
    }

    #info_panel {
        display: flex;
    }
}

#close-popup-btn {
    z-index: 1000; /* Чтобы кнопка была выше карты */
    background-color: white;
    padding: 8px;
    border-radius: 50%;
    box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);
    cursor: pointer;
    margin-top: 10px;
    top: 0;
}

.leaflet-control-custom {
    position: absolute;
    right: 10px;
    /*top: 30vh;*/
    z-index: 1000;
    background: white;
    cursor: pointer;
    width: 52px;
    height: 52px;
    padding: 13px;
    border-radius: 100px !important;
    border: none !important;
}

.leaflet-control-custom button {
    background: none;
    border: none;
    cursor: pointer;
}

@media (min-width: 641px) and (max-width: 720px){
    #close-popup-btn {
        display: block;
    }
}

/*
ink effect on button
*/
.ripple-btn {
    position: relative;
    overflow: hidden;
}

.ripple {
    position: absolute;
    border-radius: 50%;
    transform: scale(0);
    animation: ripple-effect 0.6s linear;
    background: rgba(209, 209, 209, 0.5);
    pointer-events: none;
}

@keyframes ripple-effect {
    to {
        transform: scale(4);
        opacity: 0;
    }
}
/*
END: ink эффект для кнопок
*/

/*
Fade text
*/
.fade-input-wrapper {
    position: relative;
    display: flex;
    align-items: center;
    border: 1px solid #E9EAEC;
    border-radius: 8px;
    overflow: hidden;
    background: white;
    padding-right: 8px;
}

.fade-input {
    flex-grow: 1;
    height: 48px;
    padding: 12px;
    border: none;
    outline: none;
    background: transparent;
    font-size: 16px;
    white-space: nowrap;
    overflow: hidden;

    /* Градиентное затухание текста */
    -webkit-mask-image: linear-gradient(to right, black 70%, rgba(0, 0, 0, 0));
    mask-image: linear-gradient(to right, black 70%, rgba(0, 0, 0, 0));
}

.copy-button {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 48px;
    height: 48px;
    background: white;
    border: none;
    cursor: pointer;
    outline: none;
    border-left: 1px solid #E9EAEC;
    border-top-right-radius: 8px;
    border-bottom-right-radius: 8px;
}

.copy-button:hover svg {
    stroke: #3ECAE3;
}
/*
END: Fade text
*/

/*
copy to clipboard block notification
*/
.copy-message {
    display: none;
    opacity: 0;
    transform: translateY(-10px); /* Начальное положение (слегка поднято) */
    transition: opacity 0.3s ease-in-out, transform 0.3s ease-in-out;
}

.copy-message.show {
    display: block;
    opacity: 1;
    transform: translateY(0); /* Возвращение в нормальное положение */
}

/*
END: copy to clipboard block notification
*/
/*
loading spinner
*/
.spinner {
    display: inline-block;
    width: 16px;
    height: 16px;
    border: 3px solid rgba(255, 255, 255, 0.3);
    border-radius: 50%;
    border-top-color: white;
    animation: spin 1s linear infinite;
    margin-right: 8px;
    vertical-align: middle;
}

@keyframes spin {
    0% { transform: rotate(0deg); }
    100% { transform: rotate(360deg); }
}
/*
EMD: loading spinner
*/
/*
tool tip accept terms and conditions
*/
#tooltip::before {
    content: "";
    position: absolute;
    top: -8px;
    left: 10px;
    border-width: 4px;
    border-style: solid;
    border-color: transparent transparent red transparent;
}
/*
END: tool tip accept terms and conditions
*/

.custom-cluster-icon {
    background: none;
    border: none;
}

.cluster-marker {
    width: 44px;
    height: 44px;
    background-color: #3ECAE3;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    border: 3px solid #fff;
    box-shadow: 0 2px 8px rgba(62, 202, 227, 0.5);
}

.cluster-marker span {
    color: #fff;
    font-weight: 700;
    font-size: 15px;
    line-height: 1;
}

/* Код анализа (раздел 3.9 lab-integration): как показываем код человеку.
   Цепочка запасных шрифтов — нельзя рассчитывать, что нужный загрузится;
   разрядка помогает читать вслух; лигатуры для кода лишние.
   Живёт в общем файле: код виден и на странице «Код для лаборатории», и в
   списке результатов профиля. */
.lab-code {
    font-family: "JetBrains Mono", Consolas, "DejaVu Sans Mono", monospace;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    font-variant-ligatures: none;
    white-space: nowrap;
}

/* На телефоне разрядка съедает ширину: код из 13 знаков с дефисами
   перестаёт помещаться. Читаемость от 0.05em почти не страдает. */
@media (max-width: 420px) {
    .lab-code {
        letter-spacing: 0.05em;
    }
}
