diff --git a/bridge/bridge_1c.py b/bridge/bridge_1c.py index a91b6e9..b8dd492 100644 --- a/bridge/bridge_1c.py +++ b/bridge/bridge_1c.py @@ -140,7 +140,15 @@ class BridgeHandler(BaseHTTPRequestHandler): if err: self.send_json(502, {"code": "1c_error", "message": err}) else: - self.send_json(200, data or []) + slots = data or [] + while isinstance(slots, str): + try: + slots = json.loads(slots) + except Exception: + break + if not isinstance(slots, list): + slots = [] + self.send_json(200, slots) return if path == "/doctors": @@ -154,11 +162,19 @@ class BridgeHandler(BaseHTTPRequestHandler): self.send_json(502, {"code": "1c_error", "message": err}) else: doctors = data or [] - for d in doctors: + while isinstance(doctors, str): try: - d["kids_from"] = int(d.get("kids_from", 0)) - except (ValueError, TypeError): - d["kids_from"] = 0 + doctors = json.loads(doctors) + except Exception: + break + if not isinstance(doctors, list): + doctors = [] + for d in doctors: + if isinstance(d, dict): + try: + d["kids_from"] = int(d.get("kids_from", 0)) + except (ValueError, TypeError): + d["kids_from"] = 0 self.send_json(200, doctors) return @@ -211,16 +227,23 @@ class BridgeHandler(BaseHTTPRequestHandler): self.send_json(502, {"code": "1c_error", "message": err}) else: services = data or [] - # Guarantee types for Go unmarshaling + while isinstance(services, str): + try: + services = json.loads(services) + except Exception: + break + if not isinstance(services, list): + services = [] for s in services: - try: - s["duration_min"] = int(s.get("duration_min", 30)) - except (ValueError, TypeError): - s["duration_min"] = 30 - try: - s["price"] = float(s.get("price", 0.0)) - except (ValueError, TypeError): - s["price"] = 0.0 + if isinstance(s, dict): + try: + s["duration_min"] = int(s.get("duration_min", 30)) + except (ValueError, TypeError): + s["duration_min"] = 30 + try: + s["price"] = float(s.get("price", 0.0)) + except (ValueError, TypeError): + s["price"] = 0.0 self.send_json(200, services) return diff --git a/web/public/assets/doctors/abakarova-patimat-alievna.webp b/web/public/assets/doctors/abakarova-patimat-alievna.webp new file mode 100644 index 0000000..8203d30 Binary files /dev/null and b/web/public/assets/doctors/abakarova-patimat-alievna.webp differ diff --git a/web/public/assets/doctors/abdullaev-magomed-abdullaevich.webp b/web/public/assets/doctors/abdullaev-magomed-abdullaevich.webp new file mode 100644 index 0000000..0a29618 Binary files /dev/null and b/web/public/assets/doctors/abdullaev-magomed-abdullaevich.webp differ diff --git a/web/public/assets/doctors/abdurakhmanova-zaliyat-abdulaevna.webp b/web/public/assets/doctors/abdurakhmanova-zaliyat-abdulaevna.webp new file mode 100644 index 0000000..3c15a54 Binary files /dev/null and b/web/public/assets/doctors/abdurakhmanova-zaliyat-abdulaevna.webp differ diff --git a/web/public/assets/doctors/afanaseva-elena-fyedorovna.webp b/web/public/assets/doctors/afanaseva-elena-fyedorovna.webp new file mode 100644 index 0000000..59d361d Binary files /dev/null and b/web/public/assets/doctors/afanaseva-elena-fyedorovna.webp differ diff --git a/web/public/assets/doctors/akhmedova-maira-gazalievna.webp b/web/public/assets/doctors/akhmedova-maira-gazalievna.webp new file mode 100644 index 0000000..32ab274 Binary files /dev/null and b/web/public/assets/doctors/akhmedova-maira-gazalievna.webp differ diff --git a/web/public/assets/doctors/akhmedova-milana-nimatullakhovna.webp b/web/public/assets/doctors/akhmedova-milana-nimatullakhovna.webp new file mode 100644 index 0000000..674a752 Binary files /dev/null and b/web/public/assets/doctors/akhmedova-milana-nimatullakhovna.webp differ diff --git a/web/public/assets/doctors/akhmetkhanova-saida-abdulaevna.webp b/web/public/assets/doctors/akhmetkhanova-saida-abdulaevna.webp new file mode 100644 index 0000000..9cddf54 Binary files /dev/null and b/web/public/assets/doctors/akhmetkhanova-saida-abdulaevna.webp differ diff --git a/web/public/assets/doctors/alieva-elvira-alievna.webp b/web/public/assets/doctors/alieva-elvira-alievna.webp new file mode 100644 index 0000000..b2b1f6b Binary files /dev/null and b/web/public/assets/doctors/alieva-elvira-alievna.webp differ diff --git a/web/public/assets/doctors/alilova-patimat-mirzaevna.webp b/web/public/assets/doctors/alilova-patimat-mirzaevna.webp new file mode 100644 index 0000000..4dcd6d2 Binary files /dev/null and b/web/public/assets/doctors/alilova-patimat-mirzaevna.webp differ diff --git a/web/public/assets/doctors/azmedkhanovu-patimat-bagomedovnu.webp b/web/public/assets/doctors/azmedkhanovu-patimat-bagomedovnu.webp new file mode 100644 index 0000000..7cf5d2a Binary files /dev/null and b/web/public/assets/doctors/azmedkhanovu-patimat-bagomedovnu.webp differ diff --git a/web/public/assets/doctors/bakhishov-rinat-tagirovich.webp b/web/public/assets/doctors/bakhishov-rinat-tagirovich.webp new file mode 100644 index 0000000..856a751 Binary files /dev/null and b/web/public/assets/doctors/bakhishov-rinat-tagirovich.webp differ diff --git a/web/public/assets/doctors/biarslanova-liana-biarslanovna.webp b/web/public/assets/doctors/biarslanova-liana-biarslanovna.webp new file mode 100644 index 0000000..02eaee7 Binary files /dev/null and b/web/public/assets/doctors/biarslanova-liana-biarslanovna.webp differ diff --git a/web/public/assets/doctors/chergesova-zaira-muratovna.webp b/web/public/assets/doctors/chergesova-zaira-muratovna.webp new file mode 100644 index 0000000..e05b96f Binary files /dev/null and b/web/public/assets/doctors/chergesova-zaira-muratovna.webp differ diff --git a/web/public/assets/doctors/eldarkhanova-pakhu-mutaevna.webp b/web/public/assets/doctors/eldarkhanova-pakhu-mutaevna.webp new file mode 100644 index 0000000..5fc1d56 Binary files /dev/null and b/web/public/assets/doctors/eldarkhanova-pakhu-mutaevna.webp differ diff --git a/web/public/assets/doctors/esetov-murad-azedinovich.webp b/web/public/assets/doctors/esetov-murad-azedinovich.webp new file mode 100644 index 0000000..934f915 Binary files /dev/null and b/web/public/assets/doctors/esetov-murad-azedinovich.webp differ diff --git a/web/public/assets/doctors/gadzhimuradova-rasiyat-gadzhievna.webp b/web/public/assets/doctors/gadzhimuradova-rasiyat-gadzhievna.webp new file mode 100644 index 0000000..f6d15ca Binary files /dev/null and b/web/public/assets/doctors/gadzhimuradova-rasiyat-gadzhievna.webp differ diff --git a/web/public/assets/doctors/gasanova-galimat-shikhovna.webp b/web/public/assets/doctors/gasanova-galimat-shikhovna.webp new file mode 100644 index 0000000..6280b39 Binary files /dev/null and b/web/public/assets/doctors/gasanova-galimat-shikhovna.webp differ diff --git a/web/public/assets/doctors/gasanova-shakhrizat-magomedovna.webp b/web/public/assets/doctors/gasanova-shakhrizat-magomedovna.webp new file mode 100644 index 0000000..a7809f3 Binary files /dev/null and b/web/public/assets/doctors/gasanova-shakhrizat-magomedovna.webp differ diff --git a/web/public/assets/doctors/gaydarova-arapat-eldarovna.webp b/web/public/assets/doctors/gaydarova-arapat-eldarovna.webp new file mode 100644 index 0000000..876c035 Binary files /dev/null and b/web/public/assets/doctors/gaydarova-arapat-eldarovna.webp differ diff --git a/web/public/assets/doctors/gimbatova-zalina-muradovna.webp b/web/public/assets/doctors/gimbatova-zalina-muradovna.webp new file mode 100644 index 0000000..90784b4 Binary files /dev/null and b/web/public/assets/doctors/gimbatova-zalina-muradovna.webp differ diff --git a/web/public/assets/doctors/idrisova-aida-shamilevna-.webp b/web/public/assets/doctors/idrisova-aida-shamilevna-.webp new file mode 100644 index 0000000..1ce1760 Binary files /dev/null and b/web/public/assets/doctors/idrisova-aida-shamilevna-.webp differ diff --git a/web/public/assets/doctors/idrisova-zarema-zurkanayevna.webp b/web/public/assets/doctors/idrisova-zarema-zurkanayevna.webp new file mode 100644 index 0000000..65b91d4 Binary files /dev/null and b/web/public/assets/doctors/idrisova-zarema-zurkanayevna.webp differ diff --git a/web/public/assets/doctors/inkova-ayshat-inkavovna.webp b/web/public/assets/doctors/inkova-ayshat-inkavovna.webp new file mode 100644 index 0000000..70308cf Binary files /dev/null and b/web/public/assets/doctors/inkova-ayshat-inkavovna.webp differ diff --git a/web/public/assets/doctors/irzaeva-sevil-vagifovna.webp b/web/public/assets/doctors/irzaeva-sevil-vagifovna.webp new file mode 100644 index 0000000..3e55e21 Binary files /dev/null and b/web/public/assets/doctors/irzaeva-sevil-vagifovna.webp differ diff --git a/web/public/assets/doctors/isaeva-zarema-kaybullakhovna.webp b/web/public/assets/doctors/isaeva-zarema-kaybullakhovna.webp new file mode 100644 index 0000000..62daf71 Binary files /dev/null and b/web/public/assets/doctors/isaeva-zarema-kaybullakhovna.webp differ diff --git a/web/public/assets/doctors/ismailova-naizat-tashbekovna.webp b/web/public/assets/doctors/ismailova-naizat-tashbekovna.webp new file mode 100644 index 0000000..8d2169a Binary files /dev/null and b/web/public/assets/doctors/ismailova-naizat-tashbekovna.webp differ diff --git a/web/public/assets/doctors/khizrieva-zaira-sayputdinovna.webp b/web/public/assets/doctors/khizrieva-zaira-sayputdinovna.webp new file mode 100644 index 0000000..6ca7568 Binary files /dev/null and b/web/public/assets/doctors/khizrieva-zaira-sayputdinovna.webp differ diff --git a/web/public/assets/doctors/kurbanismailova-rakhimat-ramazanovna.webp b/web/public/assets/doctors/kurbanismailova-rakhimat-ramazanovna.webp new file mode 100644 index 0000000..c682e63 Binary files /dev/null and b/web/public/assets/doctors/kurbanismailova-rakhimat-ramazanovna.webp differ diff --git a/web/public/assets/doctors/magdieva-zarema-khulatdaevna.webp b/web/public/assets/doctors/magdieva-zarema-khulatdaevna.webp new file mode 100644 index 0000000..c4fa3cd Binary files /dev/null and b/web/public/assets/doctors/magdieva-zarema-khulatdaevna.webp differ diff --git a/web/public/assets/doctors/magomedova-sabina-yaverovna.webp b/web/public/assets/doctors/magomedova-sabina-yaverovna.webp new file mode 100644 index 0000000..51a74c8 Binary files /dev/null and b/web/public/assets/doctors/magomedova-sabina-yaverovna.webp differ diff --git a/web/public/assets/doctors/magomedova-svetlana-seferbekovna-.webp b/web/public/assets/doctors/magomedova-svetlana-seferbekovna-.webp new file mode 100644 index 0000000..1baa4ae Binary files /dev/null and b/web/public/assets/doctors/magomedova-svetlana-seferbekovna-.webp differ diff --git a/web/public/assets/doctors/maksudov-albert-akhmedovich.webp b/web/public/assets/doctors/maksudov-albert-akhmedovich.webp new file mode 100644 index 0000000..5cc9a55 Binary files /dev/null and b/web/public/assets/doctors/maksudov-albert-akhmedovich.webp differ diff --git a/web/public/assets/doctors/medzhidova-asiyat-muminovna.webp b/web/public/assets/doctors/medzhidova-asiyat-muminovna.webp new file mode 100644 index 0000000..9b31845 Binary files /dev/null and b/web/public/assets/doctors/medzhidova-asiyat-muminovna.webp differ diff --git a/web/public/assets/doctors/mikailov-magomed-shamilovich.webp b/web/public/assets/doctors/mikailov-magomed-shamilovich.webp new file mode 100644 index 0000000..9b3da87 Binary files /dev/null and b/web/public/assets/doctors/mikailov-magomed-shamilovich.webp differ diff --git a/web/public/assets/doctors/mingbolatov.webp b/web/public/assets/doctors/mingbolatov.webp new file mode 100644 index 0000000..d6c52af Binary files /dev/null and b/web/public/assets/doctors/mingbolatov.webp differ diff --git a/web/public/assets/doctors/muftalieva-dzhuleta-byunyaminovna.webp b/web/public/assets/doctors/muftalieva-dzhuleta-byunyaminovna.webp new file mode 100644 index 0000000..5a86e6f Binary files /dev/null and b/web/public/assets/doctors/muftalieva-dzhuleta-byunyaminovna.webp differ diff --git a/web/public/assets/doctors/mutaeva-irina-vitalevna.webp b/web/public/assets/doctors/mutaeva-irina-vitalevna.webp new file mode 100644 index 0000000..76a4b8c Binary files /dev/null and b/web/public/assets/doctors/mutaeva-irina-vitalevna.webp differ diff --git a/web/public/assets/doctors/nurmagomedova-rekuyat-mamedovna-.webp b/web/public/assets/doctors/nurmagomedova-rekuyat-mamedovna-.webp new file mode 100644 index 0000000..29b9089 Binary files /dev/null and b/web/public/assets/doctors/nurmagomedova-rekuyat-mamedovna-.webp differ diff --git a/web/public/assets/doctors/omarova-aminat-magomedovna.webp b/web/public/assets/doctors/omarova-aminat-magomedovna.webp new file mode 100644 index 0000000..b1a537b Binary files /dev/null and b/web/public/assets/doctors/omarova-aminat-magomedovna.webp differ diff --git a/web/public/assets/doctors/omarova-maysarat-askhabovna.webp b/web/public/assets/doctors/omarova-maysarat-askhabovna.webp new file mode 100644 index 0000000..1390d9e Binary files /dev/null and b/web/public/assets/doctors/omarova-maysarat-askhabovna.webp differ diff --git a/web/public/assets/doctors/rasulova-dzhamilyat-akhmedovna.webp b/web/public/assets/doctors/rasulova-dzhamilyat-akhmedovna.webp new file mode 100644 index 0000000..edd821f Binary files /dev/null and b/web/public/assets/doctors/rasulova-dzhamilyat-akhmedovna.webp differ diff --git a/web/public/assets/doctors/saaduev-saadu-khabibovich.webp b/web/public/assets/doctors/saaduev-saadu-khabibovich.webp new file mode 100644 index 0000000..62e48c9 Binary files /dev/null and b/web/public/assets/doctors/saaduev-saadu-khabibovich.webp differ diff --git a/web/public/assets/doctors/savina-iya-yurevna.webp b/web/public/assets/doctors/savina-iya-yurevna.webp new file mode 100644 index 0000000..2fc0c4e Binary files /dev/null and b/web/public/assets/doctors/savina-iya-yurevna.webp differ diff --git a/web/public/assets/doctors/saygidnorova-marin-muradovna.webp b/web/public/assets/doctors/saygidnorova-marin-muradovna.webp new file mode 100644 index 0000000..ce3099d Binary files /dev/null and b/web/public/assets/doctors/saygidnorova-marin-muradovna.webp differ diff --git a/web/public/assets/doctors/shugaev-eldar-edmanovich.webp b/web/public/assets/doctors/shugaev-eldar-edmanovich.webp new file mode 100644 index 0000000..e4e88c6 Binary files /dev/null and b/web/public/assets/doctors/shugaev-eldar-edmanovich.webp differ diff --git a/web/public/assets/doctors/taibov-murad-tayibovich.webp b/web/public/assets/doctors/taibov-murad-tayibovich.webp new file mode 100644 index 0000000..f2e12f8 Binary files /dev/null and b/web/public/assets/doctors/taibov-murad-tayibovich.webp differ diff --git a/web/public/assets/doctors/temirova-gyulbakhar-tadzhirovna.webp b/web/public/assets/doctors/temirova-gyulbakhar-tadzhirovna.webp new file mode 100644 index 0000000..0ab628d Binary files /dev/null and b/web/public/assets/doctors/temirova-gyulbakhar-tadzhirovna.webp differ diff --git a/web/public/assets/doctors/tumalaeva-naida-ganipaevna.webp b/web/public/assets/doctors/tumalaeva-naida-ganipaevna.webp new file mode 100644 index 0000000..ca43c3c Binary files /dev/null and b/web/public/assets/doctors/tumalaeva-naida-ganipaevna.webp differ diff --git a/web/public/assets/doctors/yusufova-dzhamilya-sirazhitdinovna.webp b/web/public/assets/doctors/yusufova-dzhamilya-sirazhitdinovna.webp new file mode 100644 index 0000000..964ac13 Binary files /dev/null and b/web/public/assets/doctors/yusufova-dzhamilya-sirazhitdinovna.webp differ diff --git a/web/src/lib/media.js b/web/src/lib/media.js index caf67b0..250cbf0 100644 --- a/web/src/lib/media.js +++ b/web/src/lib/media.js @@ -99,12 +99,12 @@ export function directionImage(service) { const CHECKUP_MEDIA = { 'zdorovaya-devoch-a': { photo: ckGirl, icon: icoFemale, hero: checkupHeroGirl }, - 'proverit-svoe-zhenskoe-zdorove-': { photo: ckWoman, icon: icoCheckup, cutout: cutWomanHealth }, - 'planirovannie-beremennosti': { photo: ckPregnancy, icon: icoPregnant, cutout: cutPlanning }, - 'profilaktika-raka-sheyki-matki': { photo: ckCervix, icon: icoRibbon, cutout: cutCervix, cutoutCenter: true }, + 'proverit-svoe-zhenskoe-zdorove-': { photo: ckWoman, icon: icoCheckup, cutout: cutWomanHealth, cutoutRatio: 0.943 }, + 'planirovannie-beremennosti': { photo: ckPregnancy, icon: icoPregnant, cutout: cutPlanning, cutoutRatio: 1.056 }, + 'profilaktika-raka-sheyki-matki': { photo: ckCervix, icon: icoRibbon, cutout: cutCervix, cutoutRatio: 1.452 }, // серо-синий фон шапки (#7886a9) — давление и родители - 'davlenie-v-poryadke': { photo: ckPressure, icon: icoTonometer, cutout: cutPressure, heroBg: '#7886a9' }, - 'zdorovye-roditeli': { photo: ckParents, icon: icoFamily, cutout: cutParents, heroBg: '#7886a9' }, + 'davlenie-v-poryadke': { photo: ckPressure, icon: icoTonometer, cutout: cutPressure, cutoutRatio: 1.374, heroBg: '#7886a9' }, + 'zdorovye-roditeli': { photo: ckParents, icon: icoFamily, cutout: cutParents, cutoutRatio: 1.202, heroBg: '#7886a9' }, 'mne-god': { photo: ckYear, icon: icoBaby }, 'chek-ap-ya-v-sad': { photo: ckKindergarten, icon: icoPlayground }, pervoklashka: { photo: ckSchool, icon: icoSchool }, @@ -112,11 +112,11 @@ const CHECKUP_MEDIA = { detskiy: { photo: ckMini, icon: icoStethoscope }, 'zdorovyy-zhkt': { photo: ckGut, icon: icoStomach }, // программ ниже в макете нет — берём близкие по смыслу фото макета - 'vedenie-beremennosti-1-trimestr': { photo: ckPregnancy, icon: icoPregnant, cutout: cutTrimester1 }, - 'vedenie-beremennosti-2-trim': { photo: ckPregnancy, icon: icoPregnant, cutout: cutTrimester2 }, - 'vedenie-beremennosti-3-trim': { photo: ckPregnancy, icon: icoPregnant, cutout: cutTrimester3 }, - 'poslerodovoy-chek-ap-cherez-mesyats': { photo: ckWoman, icon: icoFemale, cutout: cutPostpartum }, - 'zdorovaya-zhenshchina-40': { photo: ckWoman, icon: icoFemale, cutout: cutWoman40 }, + 'vedenie-beremennosti-1-trimestr': { photo: ckPregnancy, icon: icoPregnant, cutout: cutTrimester1, cutoutRatio: 1.048 }, + 'vedenie-beremennosti-2-trim': { photo: ckPregnancy, icon: icoPregnant, cutout: cutTrimester2, cutoutRatio: 1.215 }, + 'vedenie-beremennosti-3-trim': { photo: ckPregnancy, icon: icoPregnant, cutout: cutTrimester3, cutoutRatio: 1.191 }, + 'poslerodovoy-chek-ap-cherez-mesyats': { photo: ckWoman, icon: icoFemale, cutout: cutPostpartum, cutoutRatio: 1.007 }, + 'zdorovaya-zhenshchina-40': { photo: ckWoman, icon: icoFemale, cutout: cutWoman40, cutoutRatio: 1.054 }, 'chek-ap-ya-rodilsya': { photo: ckYear, icon: icoBaby }, }; @@ -133,8 +133,8 @@ export function checkupMedia(checkup) { cutout: m.cutout || '', // свой цвет фона шапки, если в макете он не коралловый heroBg: m.heroBg || '', - // главное в кадре по центру — при нехватке места фигура обрезается с двух сторон, а не только слева - cutoutCenter: Boolean(m.cutoutCenter), + // ширина/высота файла фигуры: по ней шапка понимает, поместится ли фигура справа от текста + cutoutRatio: m.cutoutRatio || 0, }; } diff --git a/web/src/pages/CheckupPage.css b/web/src/pages/CheckupPage.css index 1e41b31..2db3654 100644 --- a/web/src/pages/CheckupPage.css +++ b/web/src/pages/CheckupPage.css @@ -443,53 +443,55 @@ } /* ---------- вырезанная фигура в шапке ---------- - Фигура срезана сверху и снизу, поэтому всегда на всю высоту шапки (срез совпадает с краями) - и не выходит за правую линию сетки. Если снимок шире места справа от текста, лишнее уходит - влево под плавное растворение — без прямого среза. */ + Фигура срезана сверху и снизу, поэтому всегда на всю высоту шапки и целиком — без обрезки + и растворения. Справа может выходить за сетку к краю экрана, как в макете. Если справа от текста + места не хватает, фигура встаёт сразу за текстом и уходит правым краем за экран, но на текст не + налезает. Ширину фигуры при текущей высоте даёт --cutout-ratio (ширина/высота файла). */ .checkup-hero__row--cutout .checkup-hero__copy { - max-width: 520px; + max-width: 480px; } .checkup-hero__image--cutout { position: absolute; top: 0; bottom: 0; - left: 548px; - right: 0; + left: 504px; + /* правый край — край экрана, на широких экранах не дальше 220px за сеткой */ + right: max(calc((100% - 100vw) / 2), -220px); width: auto; height: auto; - overflow: hidden; + overflow: visible; pointer-events: none; - -webkit-mask-image: linear-gradient(to right, transparent 0, #000 72px); - mask-image: linear-gradient(to right, transparent 0, #000 72px); + container-type: size; } .checkup-hero__image--cutout img { position: absolute; - right: 0; bottom: 0; + left: max(0px, calc(100% - var(--cutout-ratio, 1.2) * 100cqh)); width: auto; height: 100%; max-width: none; } -/* главное в кадре по центру (лента у «Профилактики рака шейки матки») — центрируем, а не к линии */ -.checkup-hero__image--center img { - right: auto; - left: 50%; - transform: translateX(-50%); -} - +/* планшет: места справа от текста мало — фигура целиком у правого края экрана, а часть под текстом + бледнеет, чтобы текст читался */ @media (max-width: 1023px) { .checkup-hero__row--cutout .checkup-hero__copy { max-width: 55%; } .checkup-hero__image--cutout { - left: 56%; - right: 0; + left: calc(-1 * var(--gutter)); + right: calc(-1 * var(--gutter)); width: auto; height: auto; } + .checkup-hero__image--cutout img { + left: auto; + right: 0; + -webkit-mask-image: linear-gradient(to right, rgba(0, 0, 0, 0.18) 35%, #000 70%); + mask-image: linear-gradient(to right, rgba(0, 0, 0, 0.18) 35%, #000 70%); + } } /* телефон: фигура уходит за текст и приглушена, чтобы текст читался */ @@ -506,7 +508,13 @@ height: auto; } .checkup-hero__image--cutout img { + left: 0; + width: 100%; + object-fit: cover; + object-position: 70% bottom; opacity: 0.5; + -webkit-mask-image: none; + mask-image: none; } } diff --git a/web/src/pages/CheckupPage.jsx b/web/src/pages/CheckupPage.jsx index 1261afa..1ba935a 100644 --- a/web/src/pages/CheckupPage.jsx +++ b/web/src/pages/CheckupPage.jsx @@ -27,7 +27,7 @@ export default function CheckupPage() { if (!checkup.data || checkup.data.slug !== slug) return

Загружаем…

; const c = checkup.data; - const { hero, photo, cutout, heroBg, cutoutCenter } = checkupMedia(c); + const { hero, photo, cutout, heroBg, cutoutRatio } = checkupMedia(c); const items = c.items?.length ? c.items.map(cleanText) : checklistItems(c.blocks); const intro = introText(c.blocks); const lead = cleanText(c.lead); @@ -64,7 +64,10 @@ export default function CheckupPage() { {cutout ? ( -
+
) : hero ? (