/* «Цветная» — лендинг под Яндекс.Директ.
   Фирменный стиль наследован с tsvetnaya.ru: оливковая зелень, кремовые
   каракули-цветы, строчный логотип, бегущая строка про гарантию. */

:root{
  /* Зелёные роли разделены по назначению.
     Светлая фирменная оливка — только декор: рамки, каракули, обводки.
     Под белым текстом она даёт контраст 2.7 при норме 4.5, поэтому
     все поверхности с текстом (шапка, бегущая строка, блок формы)
     используют затемнённый оттенок того же тона. */
  --olive:#93a56e;        /* фирменная оливка, декоративная */
  --green:#697d3d;        /* поверхности под белым текстом, контраст 4.56 */
  --green-d:#687c3c;      /* кнопки на светлом фоне, контраст 4.63 */
  --green-dd:#5f7035;     /* акцентный текст и ссылки, читается и на креме */
  --cream:#f2f1e0;        /* цвет каракулей */
  --paper:#fff;
  --tint:#f7f7f1;
  --ink:#2e3327;
  --muted:#6f7565;
  --line:#e6e6dc;
  --pink:#e58ea0;
  --radius:14px;
  --wrap:1180px;
}

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{
  margin:0;background:var(--paper);color:var(--ink);
  font:400 17px/1.6 Manrope,'Segoe UI',system-ui,sans-serif;
  letter-spacing:.1px;
}
img{max-width:100%;display:block}
a{color:inherit}
h1,h2,h3{
  line-height:1.12;margin:0 0 .5em;font-weight:800;letter-spacing:-.4px;
  text-wrap:balance;   /* не оставляет одинокое слово на последней строке */
}
h1{font-size:clamp(30px,5.4vw,52px);color:#7e9450}  /* фирменная оливка, крупный текст */
h2{font-size:clamp(25px,3.6vw,38px)}
h3{font-size:19px;margin-top:1.6em}
p{margin:0 0 1em}
.wrap{max-width:var(--wrap);margin:0 auto;padding:0 20px}
.small{font-size:15px;color:var(--muted)}
.lead{font-size:20px}
.skip{position:absolute;left:-9999px}
.skip:focus{left:12px;top:12px;background:#fff;padding:10px;z-index:99}
:focus-visible{outline:3px solid var(--green-d);outline-offset:2px}

/* ── шапка ─────────────────────────────────────────────────────────── */
.top{background:var(--green);color:#fff;position:sticky;top:0;z-index:40}
.top__in{display:flex;align-items:center;gap:22px;min-height:64px}
.logo{
  font-weight:800;font-size:26px;letter-spacing:-.5px;text-decoration:none;
  color:#fff;line-height:1;
}
.nav{display:none;gap:26px;margin-left:auto;font-size:16px}
.nav a{text-decoration:none;opacity:.95}
.nav a:hover{text-decoration:underline;text-underline-offset:4px}
.top__right{margin-left:auto;display:flex;align-items:center;gap:14px}
.top__tel{display:none;text-decoration:none;font-weight:700;white-space:nowrap}

/* ── кнопки ────────────────────────────────────────────────────────── */
.btn{
  display:inline-block;background:var(--green-d);color:#fff;text-decoration:none;
  font-weight:700;font-size:17px;padding:15px 30px;border-radius:40px;border:0;
  cursor:pointer;transition:background .15s;
}
.btn:hover{background:var(--green-dd)}
.btn--sm{padding:9px 18px;font-size:15px;background:#fff;color:var(--green-dd)}
.btn--sm:hover{background:var(--cream)}
.btn--ghost{background:transparent;color:var(--green-dd);box-shadow:inset 0 0 0 2px var(--green-d)}
.btn--ghost:hover{background:var(--cream)}
.btn--wide{width:100%;padding:16px}

/* ── первый экран ──────────────────────────────────────────────────── */
.hero{display:grid;gap:0}
.hero__text{
  padding:34px 20px 40px;max-width:var(--wrap);margin:0 auto;width:100%;
  position:relative;
  /* каракули-цветы, как на текущем сайте */
  background:url("img/doodle.svg") no-repeat right -60px bottom -40px/300px auto;
}
.hero__sub{font-size:17px;max-width:46ch;color:var(--ink)}
.hero__price{font-size:16px;color:var(--muted);max-width:46ch}
.hero__price b{color:var(--ink)}
.hero__cta{display:flex;flex-wrap:wrap;gap:12px;margin:26px 0 14px}
.hero__note{font-size:15px;color:var(--muted);margin:0}
.hero__pic img{width:100%;height:min(78vw,460px);object-fit:cover;object-position:center 30%;background:var(--tint)}

/* ── бегущая строка ────────────────────────────────────────────────── */
.marquee{background:var(--green);color:#fff;overflow:hidden;padding:11px 0}
.marquee__row{display:flex;gap:60px;width:max-content;animation:run 26s linear infinite}
.marquee__row span{font-size:20px;font-weight:700;white-space:nowrap}
@keyframes run{from{transform:translateX(0)}to{transform:translateX(-50%)}}
@media (prefers-reduced-motion:reduce){.marquee__row{animation:none}}

/* ── секции ────────────────────────────────────────────────────────── */
.sec{padding:52px 0}
.sec--tint{background:var(--tint)}
.sec__head{max-width:66ch;margin-bottom:26px}
.sec__lead{color:var(--muted);font-size:17px;margin:0}

/* ── фильтр по бюджету ─────────────────────────────────────────────── */
.filter{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 22px}
.filter__label{font-size:15px;color:var(--muted);margin-right:4px}
.chip{
  font:inherit;font-size:15px;padding:8px 16px;border-radius:30px;cursor:pointer;
  background:#fff;border:1.5px solid var(--line);color:var(--ink);
}
.chip:hover{border-color:var(--olive)}
.chip.is-on{background:var(--green-d);border-color:var(--green-d);color:#fff}

/* ── витрина: колонки, чтобы не резать фото и ценники на них ───────── */
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(158px,1fr));gap:16px;align-items:start}
.card{
  margin:0;background:#fff;border:1px solid var(--line);display:flex;flex-direction:column;
  border-radius:var(--radius);overflow:hidden;transition:box-shadow .16s,transform .16s;
}
.card:hover{box-shadow:0 8px 24px rgba(46,51,39,.10);transform:translateY(-2px)}
/* height:auto обязателен: иначе атрибут height="800" у картинки
   пересиливает пропорцию и карточка растягивается на всю высоту фото. */
.card img{width:100%;height:auto;aspect-ratio:3/4;object-fit:contain;background:var(--tint)}
.card__b{padding:12px 14px 14px;margin-top:auto}
.card__price{font-weight:800;font-size:19px;margin:0 0 2px}
.card__price i{font-style:normal;font-weight:600;font-size:15px;color:var(--muted)}
.card__ask{font-weight:700;font-size:16px;margin:0 0 2px;color:var(--green-dd)}
.card__meta{font-size:13px;color:var(--muted);margin:0 0 10px}
.card__btn{
  display:block;text-align:center;text-decoration:none;font-weight:700;font-size:15px;
  padding:10px;border-radius:30px;background:var(--cream);color:var(--green-dd);
}
.card__btn:hover{background:var(--green-d);color:#fff}
.vitrina__honest{
  margin:26px auto 0;max-width:72ch;font-size:15px;color:var(--muted);
  border-left:2px solid var(--olive);padding-left:16px;
}

/* ── ценовая лесенка ───────────────────────────────────────────────── */
.ladder{display:flex;flex-wrap:wrap;justify-content:center;gap:16px}
.ladder .card{margin:0;flex:1 1 170px;max-width:250px;display:flex;flex-direction:column}
.ladder .card__ph{flex:1;display:flex}
.ladder .card img{width:100%;height:auto;aspect-ratio:3/4;object-fit:contain}
.ladder__note{margin:22px 0 0;font-size:15px;color:var(--muted)}

/* ── гарантия ──────────────────────────────────────────────────────── */
.garant{display:grid;gap:30px}
.garant__sign{font-family:Caveat,Manrope,cursive;font-size:26px;color:var(--green-dd);margin:0}
.garant__aside{background:var(--cream);border-radius:var(--radius);padding:24px 26px}
.garant__aside>p{font-weight:700;margin-bottom:.6em}
.plain{margin:0;padding-left:18px}
.plain li{margin-bottom:.55em}

/* ── шаги заказа: связный текст, не карточки ───────────────────────── */
.steps{max-width:74ch;counter-reset:s}
.steps p{
  position:relative;padding-left:30px;margin-bottom:1.1em;counter-increment:s;
}
.steps p::before{
  content:"";position:absolute;left:0;top:11px;width:11px;height:11px;
  border-radius:50%;background:var(--olive);
}

/* ── таблица доставки ──────────────────────────────────────────────── */
.two{display:grid;gap:34px}
.tbl{width:100%;border-collapse:collapse;font-size:16px}
.tbl caption{text-align:left;font-weight:800;font-size:19px;padding-bottom:10px}
.tbl th,.tbl td{text-align:left;padding:12px 0;border-bottom:1px solid var(--line);font-weight:400}
.tbl td{text-align:right;font-weight:700;white-space:nowrap}
.intervals{font-variant-numeric:tabular-nums}

/* ── форма ─────────────────────────────────────────────────────────── */
.sec--form{background:var(--green);color:#fff}
.sec--form h2{color:#fff}
.sec--form .form__side p{color:#fff}
.form__wrap{display:grid;gap:26px}
.form__side a{color:#fff}
.form__alt{font-size:16px}
.form{background:#fff;color:var(--ink);border-radius:18px;padding:22px}
.fld{display:block;margin-bottom:14px}
.fld>span,.fld legend{display:block;font-size:14px;font-weight:700;margin-bottom:6px}
.fld i{font-style:normal;font-weight:400;color:var(--muted)}
.fld input[type=text],.fld input[type=tel],.fld textarea{
  width:100%;font:inherit;font-size:16px;padding:13px 14px;border:1.5px solid var(--line);
  border-radius:10px;background:#fff;color:var(--ink);
}
.fld textarea{resize:vertical}
.fld input:focus,.fld textarea:focus{border-color:var(--green-d);outline:none}
.fld--radio{border:0;padding:0;margin:0 0 14px}
.fld--radio label{display:inline-flex;align-items:center;gap:7px;margin-right:16px;font-size:16px}
.agree{display:flex;gap:10px;align-items:flex-start;font-size:14px;color:var(--muted);margin-bottom:16px}
.agree input{margin-top:3px;flex:none;width:18px;height:18px;accent-color:var(--green-d)}
.hp{position:absolute;left:-9999px;width:1px;height:1px;opacity:0}
.is-bad{border-color:var(--pink)!important;background:#fff6f8!important}
.form__micro{font-size:13px;color:var(--muted);margin:12px 0 0}
.form__msg{margin:10px 0 0;font-weight:700;font-size:15px;min-height:1em}
.form__msg.ok{color:var(--green-dd)}
.form__msg.err{color:#b4485f}

/* ── карта, вопросы, подвал ────────────────────────────────────────── */
.map iframe{border-radius:var(--radius);border:1px solid var(--line);width:100%}
.faq{max-width:78ch}
.faq details{border-bottom:1px solid var(--line);padding:6px 0}
.faq summary{cursor:pointer;font-weight:700;font-size:18px;padding:12px 0;list-style:none}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";float:right;color:var(--green-d);font-size:24px;line-height:1}
.faq details[open] summary::after{content:"–"}
.faq details p{margin:0 0 14px;color:var(--muted)}
.foot{background:var(--tint);padding:40px 0 96px;border-top:1px solid var(--line)}
.foot__in{display:grid;gap:24px}
.foot a{color:var(--green-dd)}
.logo--foot{color:var(--green-d);font-size:30px;margin-bottom:12px}

/* ── липкая панель на мобиле ───────────────────────────────────────── */
.bar{
  position:fixed;left:0;right:0;bottom:0;z-index:50;display:grid;
  grid-template-columns:repeat(3,1fr);background:#fff;border-top:1px solid var(--line);
  padding-bottom:env(safe-area-inset-bottom);
}
.bar a{
  padding:14px 4px;text-align:center;text-decoration:none;font-weight:700;font-size:15px;
  color:var(--green-dd);border-right:1px solid var(--line);
}
.bar a:last-child{border-right:0}
.bar--tg{background:var(--green-d);color:#fff!important}

/* ── планшет и десктоп ─────────────────────────────────────────────── */
@media (min-width:700px){
  .grid{grid-template-columns:repeat(auto-fill,minmax(190px,1fr))}
  .two{grid-template-columns:1fr 1fr;gap:44px}
  .garant{grid-template-columns:1.35fr 1fr;align-items:start}
  .form__wrap{grid-template-columns:1fr 1fr;align-items:center;gap:44px}
  .foot__in{grid-template-columns:1.4fr 1fr 1.2fr}
  .hero__pic img{height:520px}
}
@media (min-width:980px){
  .nav{display:flex}
  .top__tel{display:block}
  .sec{padding:72px 0}
  .hero{grid-template-columns:1.02fr .98fr;align-items:center;
        max-width:1360px;margin:0 auto;gap:20px}
  .hero__text{padding:56px 20px 56px max(20px,calc(50vw - var(--wrap)/2));
              background-position:right 10px bottom -30px;background-size:340px auto}
  .hero__pic img{height:min(74vh,620px);border-radius:0 0 0 90px}
  .grid{grid-template-columns:repeat(auto-fill,minmax(215px,1fr))}
  .bar{display:none}
  .foot{padding-bottom:40px}
}

/* ── юридические страницы ──────────────────────────────────────────── */
.doc{max-width:74ch}
.doc h1{font-size:clamp(26px,4vw,38px);color:var(--ink);margin-bottom:.3em}
.doc h2{font-size:20px;margin-top:1.7em}
.doc p{color:var(--ink)}

/* ── фото карточки ведёт на пост в канале — это должно быть видно ──── */
.card__ph{display:block;position:relative;text-decoration:none}
.card__tag{
  position:absolute;left:8px;bottom:8px;display:inline-flex;align-items:center;gap:5px;
  background:rgba(255,255,255,.92);color:var(--green-dd);font-size:12px;font-weight:700;
  padding:5px 11px 5px 9px;border-radius:30px;white-space:nowrap;
  box-shadow:0 2px 8px rgba(46,51,39,.16);backdrop-filter:blur(3px);
}
.card__tag::before{
  content:"";width:12px;height:12px;flex:none;background:var(--green-dd);
  -webkit-mask:var(--tg-icon) center/contain no-repeat;mask:var(--tg-icon) center/contain no-repeat;
}
.card__ph:hover .card__tag{background:var(--green-d);color:#fff}
.card__ph:hover .card__tag::before{background:#fff}
:root{
  --tg-icon:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M21.7 3.3 2.9 10.6c-1 .4-1 1.8 0 2.2l4.5 1.5 1.7 5.3c.3.9 1.4 1.1 2 .4l2.4-2.5 4.6 3.4c.7.5 1.7.1 1.9-.7l3.4-15.6c.2-.9-.7-1.7-1.7-1.3zM8.9 14.1l9.3-6.6-7.7 7.6-.3 3.2-1.3-4.2z'/%3E%3C/svg%3E");
}

/* ── окно выбора мессенджера ───────────────────────────────────────
   Telegram у части людей работает нестабильно, поэтому кнопки сначала
   спрашивают, где человеку удобно, и показывают номер букета — его
   можно назвать и по телефону. */
.pop{
  border:0;border-radius:18px;padding:26px 24px 22px;max-width:440px;width:calc(100% - 32px);
  color:var(--ink);background:#fff;box-shadow:0 20px 60px rgba(46,51,39,.28);
}
.pop::backdrop{background:rgba(46,51,39,.55)}
.pop__x{
  position:absolute;top:10px;right:12px;border:0;background:none;font-size:30px;line-height:1;
  color:var(--muted);cursor:pointer;padding:4px 8px;
}
.pop__x:hover{color:var(--ink)}
.pop__t{font-size:22px;margin:0 0 10px}
.pop__what{
  margin:0 0 10px;display:flex;align-items:center;gap:10px;flex-wrap:wrap;
  font-weight:700;color:var(--green-dd);background:var(--cream);
  padding:11px 12px 11px 14px;border-radius:12px;
}
.pop__what span{flex:1;min-width:0}
.pop__hint{font-size:14px;color:var(--muted);margin:0 0 16px}
.pop__ways{display:flex;flex-wrap:wrap;justify-content:center;gap:10px;margin:0 0 18px}
.way{
  flex:0 0 62px;display:flex;flex-direction:column;align-items:center;gap:6px;
  text-decoration:none;color:var(--muted);font-size:13px;font-weight:600;
}
.way__i{
  width:52px;height:52px;border-radius:50%;display:grid;place-items:center;color:#fff;
  transition:transform .12s;box-shadow:0 4px 14px rgba(46,51,39,.18);
}
.way__i svg{width:26px;height:26px;fill:currentColor}
.way:hover .way__i{transform:translateY(-2px)}
.way:hover{color:var(--ink)}
.way--max .way__i{background:none;overflow:hidden}
.way--max .way__i img{width:100%;height:100%;display:block;object-fit:cover}
.way--telegram .way__i{background:linear-gradient(135deg,#37bbf0,#1d93d2)}
.way--whatsapp .way__i{background:linear-gradient(135deg,#4ce06a,#1faa4e)}
.way--vk .way__i{background:#0077ff}
.way--phone .way__i{background:var(--green-d)}
.pop__form{
  width:100%;font:inherit;font-size:15px;font-weight:600;padding:13px;border-radius:12px;
  cursor:pointer;background:#fff;border:1.5px solid var(--line);color:var(--ink);
}
.pop__form:hover{border-color:var(--olive)}
.pop__cp{
  font:inherit;font-size:13px;font-weight:700;padding:6px 14px;cursor:pointer;flex:none;
  border:1.5px solid transparent;border-radius:20px;background:#fff;color:var(--green-dd);
}
.pop__cp:hover{border-color:var(--green-d)}
.pop__cp.is-done{background:var(--green-d);color:#fff}
.bar button{
  font:inherit;font-weight:700;font-size:15px;border:0;border-right:1px solid var(--line);
  padding:14px 4px;cursor:pointer;background:#fff;color:var(--green-dd);
}
.bar button:last-child{border-right:0}
/* Средняя кнопка — главная, она всегда зелёная. Правило идёт после .bar button,
   иначе белый фон кнопки перекрывал заливку и текст пропадал. */
.bar .bar--tg{background:var(--green-d);color:#fff}

/* ── отзывы: два виджета рядом ─────────────────────────────────────── */
.revs{display:grid;gap:22px}
.rev__t{margin:0 0 10px;font-size:17px;color:var(--muted);font-weight:700}
.rev__box{
  position:relative;border:1px solid var(--line);border-radius:var(--radius);
  overflow:hidden;background:#fff;height:660px;
}
.rev__box::before{
  content:"Загружаем отзывы…";position:absolute;inset:0;display:grid;place-items:center;
  color:var(--muted);font-size:15px;background:var(--tint);
}
.rev__f{position:relative;width:100%;height:100%;border:0;display:block}
.rev__l{
  display:inline-block;margin-top:10px;font-size:15px;color:var(--green-dd);
  text-underline-offset:3px;
}
@media (min-width:860px){
  .revs{grid-template-columns:1fr 1fr;gap:28px}
}

/* Виджет 2ГИС свёрстан под жёсткие 528 px — вписываем его уменьшением,
   иначе текст отзывов обрезается по правому краю. */
/* Обе колонки одной высоты: что не влезло — обрезается, это нормально,
   под каждым блоком есть ссылка на полную карточку. */
.rev--gis .rev__box{display:block}
.rev--gis .rev__f{width:528px;height:824px;transform-origin:top left;max-width:none}
.rev__no{
  position:relative;margin:0;padding:26px;color:var(--muted);font-size:15px;
  display:grid;place-items:center;height:100%;text-align:center;
}
