/* barevclub.com/clean — заказ уборки. Токены бренда из @barev/ui; главный акцент — крупная живая цена в зелёном блоке «Дом», второй — «чек» цвета plum с зубчатым краем. Остальное — спокойные белые карточки. */ .cl-wrap { padding-bottom: 110px; /* место под нижнюю панель на телефоне */ } /* ───── hero: калькулятор ───── */ .cl-hero { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr); gap: 28px; padding: 40px; border-radius: 36px; background: var(--bc-home); color: var(--bc-home-ink); } .cl-hero__main { display: flex; flex-direction: column; gap: 20px; min-width: 0; } .cl-title { margin: 0; font-family: var(--bc-font-head); font-weight: 800; font-size: clamp(36px, 5vw, 64px); line-height: 0.98; letter-spacing: -0.03em; text-wrap: balance; } .cl-sub { margin: 0; font-size: 18px; line-height: 1.5; max-width: 52ch; } .cl-types { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; } .cl-type { display: flex; flex-direction: column; align-items: flex-start; gap: 4px; padding: 14px 16px; border-radius: 22px; border: 2px solid transparent; background: rgba(255, 255, 255, 0.45); color: inherit; text-align: left; cursor: pointer; font: inherit; transition: background 0.15s ease; } .cl-type:hover { background: rgba(255, 255, 255, 0.7); } .cl-type[aria-checked='true'] { background: #fff; border-color: var(--bc-home-ink); } .cl-type__name { font-family: var(--bc-font-head); font-weight: 700; font-size: 17px; } .cl-type__hint { font-size: 13px; line-height: 1.35; opacity: 0.8; } .cl-type__from { margin-top: auto; padding-top: 6px; font-size: 14px; font-weight: 600; } .cl-counts { display: flex; flex-wrap: wrap; gap: 8px; } .cl-count { display: flex; align-items: center; gap: 12px; padding: 4px 4px 4px 18px; border-radius: 999px; background: #fff; font-weight: 600; } .cl-count .bc-stepper { padding: 0; } .cl-hero__price { display: flex; flex-direction: column; justify-content: flex-end; align-items: flex-start; gap: 12px; min-width: 0; } /* главный элемент страницы: цена меняется при каждом выборе */ .cl-price { position: relative; overflow: hidden; font-family: var(--bc-font-head); font-weight: 800; font-size: clamp(52px, 6.6vw, 100px); line-height: 1; letter-spacing: -0.04em; font-variant-numeric: tabular-nums; white-space: nowrap; padding-bottom: 0.06em; } .cl-price__out { position: absolute; inset: 0 auto auto 0; animation: cl-out 0.24s ease-in forwards; } .cl-price__in { display: inline-block; animation: cl-in 0.24s ease-out; } @keyframes cl-out { to { transform: translateY(-60%); opacity: 0; } } @keyframes cl-in { from { transform: translateY(60%); opacity: 0; } } @media (prefers-reduced-motion: reduce) { .cl-price__out { display: none; } .cl-price__in { animation: none; } } .cl-duration { display: inline-flex; align-items: center; gap: 8px; font-size: 16px; font-weight: 500; } .cl-plus { padding: 8px 14px; border-radius: 999px; background: var(--bc-pink); color: var(--bc-plum); font-size: 14px; font-weight: 600; } /* ───── форма + чек ───── */ .cl-body { display: grid; grid-template-columns: minmax(0, 1fr) 380px; gap: 12px; align-items: start; } .cl-steps { display: flex; flex-direction: column; gap: 12px; min-width: 0; } .cl-block { display: flex; flex-direction: column; gap: 14px; padding: 28px; border-radius: 32px; background: #fff; scroll-margin-top: 16px; } .cl-block[data-error='true'] { box-shadow: inset 0 0 0 2px var(--bc-danger); } .cl-block__title { margin: 0; font-family: var(--bc-font-head); font-weight: 700; font-size: 24px; letter-spacing: -0.01em; } .cl-block__hint { margin: -8px 0 0; } .cl-muted { color: var(--bc-ink-2); } .cl-small { font-size: 13px; } .cl-grid2 { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; } /* доп. услуги: плитки; выбранная — зелёная, как «Дом» */ .cl-extras { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 8px; } .cl-extra { position: relative; display: flex; flex-direction: column; align-items: flex-start; gap: 4px; min-height: 96px; padding: 14px 16px; border-radius: 22px; border: 2px solid var(--bc-line); background: #fff; color: var(--bc-ink); text-align: left; font: inherit; } button.cl-extra { cursor: pointer; padding-right: 48px; } .cl-extra[aria-pressed='true'], .cl-extra[data-on='true'] { border-color: var(--bc-home); background: color-mix(in srgb, var(--bc-home) 28%, #fff); } .cl-extra__name { font-weight: 600; line-height: 1.25; } .cl-extra__price { font-size: 13px; color: var(--bc-ink-2); } .cl-extra__tick { position: absolute; top: 12px; right: 12px; width: 28px; height: 28px; border-radius: 50%; display: flex; align-items: center; justify-content: center; background: var(--bc-bg); } .cl-extra[aria-pressed='true'] .cl-extra__tick { background: var(--bc-home-ink); color: #fff; } .cl-extra .bc-stepper { margin-top: auto; background: var(--bc-bg); } .cl-extra .bc-stepper button { width: 36px; height: 36px; background: #fff; } .cl-extra .bc-stepper output { min-width: 28px; font-size: 16px; } /* дата и время */ .cl-days { display: flex; gap: 6px; overflow-x: auto; padding-bottom: 4px; scrollbar-width: thin; } .cl-day { flex: none; width: 60px; padding: 10px 0; border-radius: 20px; border: 2px solid var(--bc-line); background: #fff; display: flex; flex-direction: column; align-items: center; gap: 2px; cursor: pointer; font: inherit; color: var(--bc-ink); } .cl-day[aria-selected='true'] { background: var(--bc-dark); border-color: var(--bc-dark); color: #fff; } .cl-day:disabled { opacity: 0.35; cursor: not-allowed; } .cl-day__wd { font-size: 12px; text-transform: capitalize; } .cl-day__num { font-family: var(--bc-font-head); font-weight: 700; font-size: 20px; } .cl-times { display: grid; grid-template-columns: repeat(auto-fill, minmax(78px, 1fr)); gap: 6px; } .cl-time { height: 44px; border-radius: 999px; border: 2px solid var(--bc-line); background: #fff; font: inherit; font-weight: 600; font-variant-numeric: tabular-nums; cursor: pointer; color: var(--bc-ink); } .cl-time[aria-pressed='true'] { background: var(--bc-home); border-color: var(--bc-home-ink); color: var(--bc-home-ink); } .cl-consent { display: flex; align-items: flex-start; gap: 10px; font-size: 14px; line-height: 1.45; cursor: pointer; } .cl-consent input { flex: none; width: 22px; height: 22px; margin: 0; accent-color: var(--bc-plum); } .cl-consent a { color: var(--bc-accent); } /* видимый фокус для всего интерактивного на странице */ .cl-wrap :is(button, a, input, select, textarea):focus-visible { outline: 3px solid var(--bc-accent); outline-offset: 2px; } /* чек: plum, зубчатый нижний край */ .cl-receipt { position: sticky; top: 16px; display: flex; flex-direction: column; gap: 12px; padding: 28px 26px 40px; border-radius: 32px 32px 0 0; background: var(--bc-plum); color: #fff; --tooth: 14px; -webkit-mask: linear-gradient(#000 0 0) top / 100% calc(100% - var(--tooth)) no-repeat, radial-gradient(circle at 50% 0, #000 calc(var(--tooth) - 0.5px), transparent var(--tooth)) bottom / calc(var(--tooth) * 2) var(--tooth) repeat-x; mask: linear-gradient(#000 0 0) top / 100% calc(100% - var(--tooth)) no-repeat, radial-gradient(circle at 50% 0, #000 calc(var(--tooth) - 0.5px), transparent var(--tooth)) bottom / calc(var(--tooth) * 2) var(--tooth) repeat-x; } .cl-receipt__title { font-family: var(--bc-font-head); font-weight: 700; font-size: 22px; margin-bottom: 4px; } .cl-line { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; font-variant-numeric: tabular-nums; } .cl-line > span:last-child { white-space: nowrap; } .cl-line small { display: block; margin-top: 2px; font-size: 13px; color: #e9c9d5; } .cl-line--extra { font-size: 14px; color: #f4dce5; } .cl-receipt__rule { border-top: 2px dashed rgba(255, 255, 255, 0.28); margin: 4px 0; } .cl-line--total { font-family: var(--bc-font-head); font-weight: 800; font-size: 28px; } .cl-receipt__when { margin-top: -4px; font-size: 14px; color: #e9c9d5; } .cl-receipt__when::first-letter { text-transform: uppercase; } .cl-btn-pink { background: var(--bc-pink); color: var(--bc-plum); font-weight: 700; } .cl-btn-pink:hover { background: #fbd5e1; color: var(--bc-plum); } .cl-receipt .cl-btn-pink { margin-top: 6px; } .cl-receipt__error { padding: 10px 14px; border-radius: 16px; background: #fff; color: var(--bc-danger); font-size: 14px; font-weight: 500; } .cl-receipt__after { margin: 0; font-size: 13px; line-height: 1.45; color: #e9c9d5; } /* нижняя панель — только на телефоне */ .cl-bar { display: none; } /* ───── заявка отправлена ───── */ .cl-done { display: flex; flex-direction: column; align-items: flex-start; gap: 18px; padding: 48px 40px; border-radius: 36px; background: var(--bc-plum); color: #fff; } .cl-done__mark { width: 64px; height: 64px; border-radius: 50%; display: flex; align-items: center; justify-content: center; background: var(--bc-home); color: var(--bc-home-ink); } .cl-done__title { margin: 0; font-family: var(--bc-font-head); font-weight: 800; font-size: clamp(32px, 5vw, 56px); line-height: 1; letter-spacing: -0.03em; } .cl-done__text { margin: 0; max-width: 52ch; font-size: 18px; line-height: 1.5; color: #f4dce5; } .cl-done__actions { display: flex; flex-wrap: wrap; gap: 8px; } .cl-done__again { color: #fff; } /* ───── что входит ───── */ .cl-included { padding: 32px; border-radius: 36px; background: #fff; display: flex; flex-direction: column; gap: 20px; } .cl-section-title { margin: 0; font-family: var(--bc-font-head); font-weight: 700; font-size: 34px; letter-spacing: -0.02em; } .cl-zones { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; } .cl-zone { padding: 22px; border-radius: 26px; background: var(--bc-bg); } .cl-zone h3 { margin: 0 0 10px; font-family: var(--bc-font-head); font-weight: 700; font-size: 20px; } .cl-zone ul { margin: 0; padding: 0; list-style: none; display: flex; flex-direction: column; gap: 8px; } .cl-zone li { position: relative; padding-left: 22px; line-height: 1.4; } .cl-zone li::before { content: ''; position: absolute; left: 2px; top: 0.45em; width: 10px; height: 10px; border-radius: 50%; background: var(--bc-home); } .cl-variants { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; } .cl-variants p { margin: 0; line-height: 1.5; max-width: 60ch; } .cl-how__grid { margin: 0; padding: 0; list-style: none; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; } /* ───── адаптив ───── */ @media (max-width: 980px) { .cl-hero, .cl-body { grid-template-columns: minmax(0, 1fr); } .cl-receipt { position: static; } } @media (max-width: 720px) { .cl-hero { padding: 24px; border-radius: 28px; gap: 20px; } .cl-types { grid-template-columns: 1fr; } .cl-type { display: grid; grid-template-columns: 1fr auto; column-gap: 12px; } .cl-type__hint { grid-column: 1; } .cl-type__from { grid-column: 2; grid-row: 1 / span 2; align-self: center; padding-top: 0; } .cl-block { padding: 22px 18px; border-radius: 28px; } .cl-grid2, .cl-zones, .cl-variants, .cl-how__grid { grid-template-columns: 1fr; } /* доп. услуги на телефоне — список: название и цена слева, переключатель справа */ .cl-extras { grid-template-columns: minmax(0, 1fr); gap: 6px; } .cl-extra { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; column-gap: 10px; min-height: 64px; padding: 10px 10px 10px 16px; } .cl-extra__price { grid-column: 1; } .cl-extra .bc-stepper { grid-column: 2; grid-row: 1 / span 2; margin-top: 0; } button.cl-extra { padding-right: 56px; } .cl-extra__tick { top: 50%; transform: translateY(-50%); } .cl-included, .cl-done { padding: 24px; border-radius: 28px; } .cl-receipt .cl-btn-pink { display: none; } .cl-bar { position: fixed; left: 12px; right: 12px; bottom: 12px; z-index: 10; display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 10px 10px 10px 20px; border-radius: 999px; background: var(--bc-plum); color: #fff; box-shadow: 0 10px 30px rgba(74, 16, 40, 0.3); } .cl-bar__total { font-family: var(--bc-font-head); font-weight: 800; font-size: 20px; font-variant-numeric: tabular-nums; } .cl-bar__meta { font-size: 12px; color: #e9c9d5; max-width: 40vw; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .cl-bar .bc-btn { height: 48px; padding: 0 18px; } }