425 lines
7.7 KiB
CSS
425 lines
7.7 KiB
CSS
.lead-modal__backdrop {
|
||
position: fixed;
|
||
inset: 0;
|
||
z-index: 100;
|
||
display: flex;
|
||
align-items: flex-start;
|
||
justify-content: center;
|
||
overflow-y: auto;
|
||
padding: 48px 16px;
|
||
background: rgba(31, 31, 31, 0.8);
|
||
}
|
||
|
||
/* макет: 650 × 740, радиус 28, поля 30/40/34 */
|
||
.lead-modal {
|
||
display: flex;
|
||
flex-direction: column;
|
||
gap: 18px;
|
||
width: 650px;
|
||
max-width: 100%;
|
||
margin: auto 0;
|
||
padding: 30px 40px 34px;
|
||
background: var(--surface);
|
||
border-radius: 28px;
|
||
filter: drop-shadow(0 20px 24px rgba(8, 18, 26, 0.24));
|
||
}
|
||
|
||
.lead-modal__head {
|
||
display: flex;
|
||
align-items: flex-start;
|
||
gap: 20px;
|
||
}
|
||
|
||
.lead-modal__titles {
|
||
display: flex;
|
||
flex-direction: column;
|
||
gap: 5px;
|
||
flex: 1;
|
||
min-width: 0;
|
||
line-height: 1.35;
|
||
}
|
||
|
||
.lead-modal__title {
|
||
font-weight: 700;
|
||
font-size: 28px;
|
||
line-height: 1.35;
|
||
color: var(--navy);
|
||
}
|
||
|
||
.lead-modal__subtitle {
|
||
font-size: 13px;
|
||
color: #6e7a85;
|
||
}
|
||
|
||
.lead-modal__close {
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
width: 40px;
|
||
height: 40px;
|
||
flex-shrink: 0;
|
||
border-radius: 20px;
|
||
background: var(--chip);
|
||
}
|
||
.lead-modal__close:hover {
|
||
background: var(--chip-border);
|
||
}
|
||
|
||
.lead-modal__form {
|
||
display: flex;
|
||
flex-direction: column;
|
||
gap: 18px;
|
||
}
|
||
|
||
.lead-modal__row {
|
||
display: grid;
|
||
grid-template-columns: 1fr 1fr;
|
||
gap: 14px;
|
||
}
|
||
|
||
.lead-field {
|
||
display: flex;
|
||
flex-direction: column;
|
||
gap: 7px;
|
||
min-width: 0;
|
||
}
|
||
|
||
.lead-field__label {
|
||
font-weight: 600;
|
||
font-size: 14px;
|
||
line-height: 1.35;
|
||
color: var(--navy);
|
||
}
|
||
|
||
.lead-field__control {
|
||
width: 100%;
|
||
height: 48px;
|
||
padding: 0 16px;
|
||
background: #fff;
|
||
border: 1px solid var(--chip-border);
|
||
border-radius: var(--r-12);
|
||
font-size: 15px;
|
||
line-height: 1.35;
|
||
color: var(--navy);
|
||
outline: none;
|
||
appearance: none;
|
||
}
|
||
|
||
.lead-field__control::placeholder {
|
||
color: #6e7a85;
|
||
}
|
||
|
||
.lead-field__control:focus {
|
||
border-color: var(--navy);
|
||
}
|
||
|
||
.lead-field__textarea {
|
||
height: auto;
|
||
min-height: 74px;
|
||
padding: 14px 16px;
|
||
font-size: 14px;
|
||
resize: vertical;
|
||
}
|
||
|
||
.lead-field__select {
|
||
position: relative;
|
||
display: block;
|
||
}
|
||
|
||
.lead-field__select select {
|
||
padding-right: 42px;
|
||
cursor: pointer;
|
||
}
|
||
|
||
.lead-field__select select:invalid,
|
||
.lead-field__select select option[value=''] {
|
||
color: #6e7a85;
|
||
}
|
||
|
||
.lead-field__select img {
|
||
position: absolute;
|
||
right: 16px;
|
||
top: 50%;
|
||
transform: translateY(-50%);
|
||
pointer-events: none;
|
||
}
|
||
|
||
.lead-field__select--date img {
|
||
right: 14px;
|
||
}
|
||
|
||
/* нативный календарь оставляем, но его значок прячем под иконкой из макета */
|
||
.lead-field__select--date input::-webkit-calendar-picker-indicator {
|
||
position: absolute;
|
||
right: 10px;
|
||
width: 26px;
|
||
height: 26px;
|
||
opacity: 0;
|
||
cursor: pointer;
|
||
}
|
||
|
||
.lead-field__select--date input {
|
||
padding: 0 44px 0 14px;
|
||
}
|
||
|
||
.lead-rating {
|
||
display: flex;
|
||
gap: 6px;
|
||
}
|
||
|
||
.lead-rating__star {
|
||
padding: 2px;
|
||
opacity: 0.25;
|
||
transition: opacity 0.15s ease;
|
||
}
|
||
|
||
.lead-rating__star--on {
|
||
opacity: 1;
|
||
}
|
||
|
||
.lead-consent {
|
||
position: relative;
|
||
display: flex;
|
||
align-items: flex-start;
|
||
gap: 10px;
|
||
cursor: pointer;
|
||
}
|
||
|
||
.lead-consent input {
|
||
position: absolute;
|
||
opacity: 0;
|
||
width: 20px;
|
||
height: 20px;
|
||
margin: 0;
|
||
}
|
||
|
||
.lead-consent__box {
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
width: 20px;
|
||
height: 20px;
|
||
flex-shrink: 0;
|
||
border: 1.5px solid var(--chip-border);
|
||
border-radius: 6px;
|
||
background: #fff;
|
||
}
|
||
|
||
.lead-consent__box img {
|
||
width: 12px;
|
||
height: 12px;
|
||
opacity: 0;
|
||
}
|
||
|
||
.lead-consent input:checked + .lead-consent__box {
|
||
background: var(--coral);
|
||
border-color: var(--coral);
|
||
}
|
||
|
||
.lead-consent input:checked + .lead-consent__box img {
|
||
opacity: 1;
|
||
}
|
||
|
||
.lead-consent input:focus-visible + .lead-consent__box {
|
||
outline: 2px solid var(--coral);
|
||
outline-offset: 2px;
|
||
}
|
||
|
||
.lead-consent__text {
|
||
font-size: 12px;
|
||
line-height: 1.35;
|
||
color: #6e7a85;
|
||
}
|
||
|
||
.lead-consent__text a {
|
||
text-decoration: underline;
|
||
}
|
||
|
||
.lead-modal__error {
|
||
margin-top: -6px;
|
||
font-weight: 600;
|
||
font-size: 13px;
|
||
color: var(--notice-text);
|
||
}
|
||
|
||
.lead-modal__submit {
|
||
width: 100%;
|
||
height: 54px;
|
||
padding: 16px 24px;
|
||
border-radius: var(--r-14);
|
||
font-weight: 700;
|
||
font-size: 16px;
|
||
}
|
||
|
||
.lead-modal__reassure {
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
gap: 8px;
|
||
font-weight: 500;
|
||
font-size: 12px;
|
||
line-height: 1.35;
|
||
color: #6e7a85;
|
||
text-align: center;
|
||
}
|
||
|
||
.lead-modal__done {
|
||
display: flex;
|
||
flex-direction: column;
|
||
gap: 24px;
|
||
padding: 12px 0 4px;
|
||
}
|
||
|
||
.lead-modal__done p {
|
||
font-weight: 600;
|
||
font-size: 18px;
|
||
line-height: 1.45;
|
||
color: var(--navy);
|
||
}
|
||
|
||
@media (max-width: 767px) {
|
||
.lead-modal__backdrop {
|
||
padding: 16px 12px;
|
||
}
|
||
.lead-modal {
|
||
gap: 16px;
|
||
padding: 24px 16px;
|
||
border-radius: 20px;
|
||
}
|
||
.lead-modal__title {
|
||
font-size: 22px;
|
||
}
|
||
.lead-modal__row {
|
||
grid-template-columns: 1fr;
|
||
gap: 16px;
|
||
}
|
||
.lead-modal__form {
|
||
gap: 16px;
|
||
}
|
||
.lead-modal__reassure {
|
||
font-size: 11px;
|
||
}
|
||
}
|
||
|
||
/* слоты по часам: выбор удобного часа приёма */
|
||
.lead-slots {
|
||
display: grid;
|
||
grid-template-columns: repeat(6, minmax(0, 1fr));
|
||
gap: 8px;
|
||
}
|
||
|
||
.lead-slot {
|
||
height: 40px;
|
||
padding: 0 4px;
|
||
background: #fff;
|
||
border: 1px solid var(--chip-border);
|
||
border-radius: var(--r-12);
|
||
font: inherit;
|
||
font-size: 14px;
|
||
font-weight: 600;
|
||
color: var(--navy);
|
||
cursor: pointer;
|
||
transition: background 0.15s ease, border-color 0.15s ease, color 0.15s ease;
|
||
}
|
||
|
||
.lead-slot:hover:not(:disabled) {
|
||
border-color: var(--coral);
|
||
}
|
||
|
||
.lead-slot--on {
|
||
background: var(--coral);
|
||
border-color: var(--coral);
|
||
color: #fff;
|
||
}
|
||
|
||
.lead-slot:disabled {
|
||
opacity: 0.35;
|
||
cursor: not-allowed;
|
||
text-decoration: line-through;
|
||
}
|
||
|
||
.lead-slots__hint {
|
||
margin: 0;
|
||
font-size: 13px;
|
||
color: var(--muted, #7a8699);
|
||
}
|
||
|
||
@media (max-width: 600px) {
|
||
.lead-slots {
|
||
grid-template-columns: repeat(4, minmax(0, 1fr));
|
||
}
|
||
}
|
||
|
||
/* ---------- запись на приём: широкое окно в две колонки ----------
|
||
24 слота по 30 минут в одну колонку не помещались на экран ноутбука — окно приходилось прокручивать. */
|
||
.lead-modal--wide {
|
||
width: 920px;
|
||
}
|
||
|
||
.lead-modal__form--split {
|
||
display: grid;
|
||
grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
|
||
grid-template-areas:
|
||
'contacts date'
|
||
'doctor time'
|
||
'comment time';
|
||
align-items: start;
|
||
column-gap: 32px;
|
||
row-gap: 18px;
|
||
}
|
||
|
||
/* всё остальное (согласие, кнопка, подсказки) — на всю ширину под колонками */
|
||
.lead-modal__form--split > * {
|
||
grid-column: 1 / -1;
|
||
}
|
||
|
||
.lead-modal__form--split > .lead-modal__contacts {
|
||
grid-area: contacts;
|
||
/* в половине окна имя и телефон рядом не помещаются — друг под другом */
|
||
grid-template-columns: 1fr;
|
||
row-gap: 18px;
|
||
}
|
||
|
||
.lead-modal__form--split > .lead-field--doctor {
|
||
grid-area: doctor;
|
||
}
|
||
|
||
.lead-modal__form--split > .lead-field--comment {
|
||
grid-area: comment;
|
||
}
|
||
|
||
.lead-modal__form--split > .lead-field--date {
|
||
grid-area: date;
|
||
}
|
||
|
||
.lead-modal__form--split > .lead-field--time {
|
||
grid-area: time;
|
||
}
|
||
|
||
.lead-modal__form--split .lead-slot {
|
||
height: 36px;
|
||
}
|
||
|
||
/* узкий экран: снова одна колонка */
|
||
@media (max-width: 960px) {
|
||
.lead-modal--wide {
|
||
width: 650px;
|
||
}
|
||
.lead-modal__form--split {
|
||
display: flex;
|
||
flex-direction: column;
|
||
}
|
||
}
|
||
|
||
/* телефон: слоты по 6 в ряд — 4 ряда вместо 6 */
|
||
@media (max-width: 600px) {
|
||
.lead-modal__form--split .lead-slots {
|
||
grid-template-columns: repeat(6, minmax(0, 1fr));
|
||
gap: 6px;
|
||
}
|
||
.lead-modal__form--split .lead-slot {
|
||
height: 36px;
|
||
font-size: 13px;
|
||
}
|
||
}
|