/* Достаточно по ОДНОМУ локальному файлу каждого шрифта.
   Переименуй свои файлы под эти имена или поменяй пути ниже.
   Google Kanit подключён в HTML, но в официальном Kanit нет кириллицы. */
@font-face {
  font-family: "Kanit Cyrillic";
  src: url("fonts/KanitCyrillic.woff2") format("woff2"),
       url("fonts/KanitCyrillic.ttf") format("truetype"),
       url("fonts/KanitCyrillic.otf") format("opentype");
  font-style: normal;
  font-weight: 400;
  font-display: swap;
}
@font-face {
  font-family: "Involve";
  src: url("fonts/Involve-Bold.woff2") format("woff2"),
       url("fonts/Involve-Bold.ttf") format("truetype"),
       url("fonts/Involve-Bold.otf") format("opentype");
  font-style: normal;
  font-weight: 700;
  font-display: swap;
}
:root {
  --navy: #072663;
  --blue: #2882EC;
  --muted: #6A90CE;
  --outline: #DDECFC;
  --font-body: "Kanit Cyrillic", "Kanit", Arial, sans-serif;
  --font-display: "Involve", "Kanit Cyrillic", Arial, sans-serif;
}
*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin: 0; color: var(--navy); background: #fff; font-family: var(--font-body); }
body.modal-open { overflow: hidden; }
a { color: inherit; text-decoration: none; }
button, input, textarea { font: inherit; }
button { cursor: pointer; }
img { display: block; max-width: 100%; }
.container { width: min(1640px, calc(100% - 100px)); margin-inline: auto; }
:focus-visible { outline: 3px solid var(--blue); outline-offset: 4px; }

/* Шапка */
.site-header { background: #fff; border-bottom: 1px solid var(--outline); }
.header-inner { min-height: 128px; display: flex; align-items: center; justify-content: space-between; gap: 28px; }
.brand { flex-shrink: 0; width: 158px; }
.brand img { width: 100%; height: auto; }
.main-nav { display: flex; align-items: center; gap: 4px; padding: 5px; border: 2px solid var(--outline); border-radius: 40px; background: #fff; }
.nav-link { display: grid; place-items: center; min-height: 58px; padding: 0 29px; border-radius: 34px; font-size: 21px; line-height: 1; font-weight: 400; color: var(--muted); white-space: nowrap; transition: transform .2s ease, color .2s ease, background-color .2s ease, box-shadow .2s ease; }
.nav-link:hover { transform: scale(1.055); color: var(--blue); }
.nav-link.is-current { color: #fff; background: var(--blue); font-size: 24px; box-shadow: 0 5px 12px rgba(40,130,236,.13); }
.nav-link.is-current:hover { color: #fff; }
.header-actions { flex-shrink: 0; display: flex; align-items: center; gap: 7px; padding: 7px; border: 2px solid var(--outline); border-radius: 40px; }
.header-action { display: grid; place-items: center; padding: 0; background: transparent; border: 0; width: 47px; height: 47px; transition: transform .2s ease; }
.header-action img { width: 100%; height: 100%; }
.header-action:hover { transform: scale(1.095); }

/* Главный блок: SVG является фоном, а текст остаётся редактируемым */
.hero { min-height: 435px; background: #fff url("images/hero-bg.svg") center center / cover no-repeat; }
.hero-inner { display: flex; align-items: center; min-height: 435px; }
.hero-copy { max-width: 760px; padding: 65px 0 80px; }
.hero h1 { margin: 0 0 27px; color: var(--navy); font-family: var(--font-display); font-weight: 700; font-size: clamp(34px, 3.15vw, 54px); letter-spacing: -.025em; line-height: 1.17; }
.hero h1 span { color: var(--blue); }
.hero p { margin: 0; max-width: 720px; color: var(--muted); font-size: clamp(17px, 1.45vw, 23px); line-height: 1.43; font-weight: 400; }

/* Тарифы */
.section { padding-block: 48px 64px; }
.section-title { margin: 0 0 35px; font: 700 clamp(30px, 2.7vw, 44px)/1.15 var(--font-display); }
/* Три равные зоны во всю ширину контейнера: каждая карточка по центру своей зоны. */
.tariff-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); column-gap: clamp(24px, 3vw, 55px); justify-items: center; }
.tariff-card {
  width: min(100%, 335px); /* немного шире; центрирование сохраняется */
  min-height: 332px;
  padding: 24px 24px 22px;
  border-radius: 30px;
  background: linear-gradient(180deg, #eff5fd 0%, #edf4fc 100%);
  border: 1px solid #F9FCFF;
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,1),
    inset 0 0 88px rgba(255,255,255,1),
    0 0 0 2px rgba(221,236,252,.75),
    0 16px 34px rgba(22,71,125,.12),
    0 10px 24px rgba(40,130,236,.10);
  transition: transform .22s ease, box-shadow .22s ease;
  display: flex;
  flex-direction: column;
}
/* Чуть сближаем крайние тарифы, не двигая центральный и не меняя ширину. */
@media (min-width: 921px) {
  .tariff-card:first-child { position: relative; left: 12px; }
  .tariff-card:last-child { position: relative; left: -12px; }
}
.tariff-card:hover {
  transform: translateY(-3px) scale(1.02);
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,1),
    inset 0 0 100px rgba(255,255,255,1),
    0 0 0 2px rgba(221,236,252,.90),
    0 22px 44px rgba(22,71,125,.16),
    0 14px 30px rgba(40,130,236,.14);
}
.tariff-card__icon {
  width: 148px;
  height: 90px;
  margin: 2px 0 16px 16px;
  display: grid;
  place-items: center;
}
.tariff-card__icon img {
  max-width: 100%;
  max-height: 100%;
  object-fit: contain;
}
.tariff-card__content {
  margin-top: auto;
  display: flex;
  flex-direction: column;
  align-items: stretch;
  padding-left: 16px;
  padding-right: 8px;
}
.tariff-card__speed,
.tariff-card__price {
  display: flex;
  align-items: baseline;
  justify-content: flex-start;
  text-align: left;
  white-space: nowrap;
}
.tariff-card__speed { gap: 10px; color: var(--navy); line-height: 1; }
.tariff-card__speed strong,
.tariff-card__speed span {
  font-family: var(--font-display);
}
.tariff-card__speed strong { font-size: clamp(40px, 3vw, 56px); font-weight: 700; }
.tariff-card__speed span { color: var(--muted); font-size: clamp(20px, 1.65vw, 29px); }
.tariff-card__price { gap: 8px; margin: 10px 0 22px; }
.tariff-card__price strong,
.tariff-card__price span { font-family: var(--font-display); }
.tariff-card__price strong { font-size: clamp(31px, 2.3vw, 38px); line-height: 1.1; color: var(--navy); }
.tariff-card__price span { color: var(--muted); font-size: 22px; }
.tariff-button {
  align-self: center;
  margin-left: 0;
  display: grid;
  place-items: center;
  width: min(100%, 212px);
  min-height: 56px;
  padding: 10px 16px;
  border: 0;
  border-radius: 18px;
  color: #fff;
  text-transform: uppercase;
  letter-spacing: .02em;
  font: 700 21px/1 var(--font-display);
  background-color: transparent;
  background-image: url("images/tariff-button.svg");
  background-position: center;
  background-repeat: no-repeat;
  background-size: 100% 100%;
  box-shadow: none;
  transition: transform .2s ease, filter .2s ease, box-shadow .2s ease;
}
.tariff-button:hover {
  transform: scale(1.04);
  filter: brightness(1.03);
}

/* Стоимость подключения */
.connection { padding-top: 4px; padding-bottom: 60px; }
.connection-panel {
  display: grid;
  grid-template-columns: minmax(270px, .92fr) minmax(0, 2.3fr);
  gap: clamp(22px, 3vw, 38px);
  padding: 38px;
  border-radius: 32px;
  background: linear-gradient(180deg, #eff5fd 0%, #edf4fc 100%);
  border: 1px solid #F9FCFF;
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,1),
    inset 0 0 96px rgba(255,255,255,1),
    0 0 0 2px rgba(221,236,252,.75),
    0 18px 38px rgba(22,71,125,.12),
    0 12px 28px rgba(40,130,236,.10);
}
.connection-description { padding-top: 8px; }
.connection-description h2 { margin: 0 0 24px; font: 700 clamp(30px, 2.8vw, 46px)/1.15 var(--font-display); }
.connection-description p { margin: 0; max-width: 340px; color: var(--muted); font-size: 23px; line-height: 1.35; }
.option-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 18px; }
.option-card {
  min-height: 274px;
  border-radius: 21px;
  padding: 18px 14px 15px;
  background: linear-gradient(180deg, #ffffff 0%, #f8fbff 100%);
  border: 1px solid #F9FCFF;
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,1),
    inset 0 0 70px rgba(255,255,255,1),
    0 0 0 2px rgba(221,236,252,.65),
    0 14px 28px rgba(22,71,125,.10),
    0 8px 20px rgba(40,130,236,.08);
  transition: transform .22s ease, box-shadow .22s ease;
  cursor: pointer;
  display: flex;
  flex-direction: column;
  align-items: center;
}
.option-card:hover, .option-card:focus-visible {
  transform: translateY(-3px) scale(1.025);
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,1),
    inset 0 0 80px rgba(255,255,255,1),
    0 0 0 2px rgba(221,236,252,.82),
    0 20px 34px rgba(22,71,125,.14),
    0 10px 24px rgba(40,130,236,.10);
}
.option-card__icon {
  width: 92px;
  height: 74px;
  margin: 2px auto 10px;
  display: grid;
  place-items: center;
  transform: translateY(-2px);
}
.option-card__icon img {
  max-width: 100%;
  max-height: 100%;
  object-fit: contain;
}
.option-card__content { height: 100%; width: 100%; display: flex; flex-direction: column; align-items: center; text-align: center; }
.option-card h3 { margin: auto 0 9px; font: 700 clamp(17px, 1.35vw, 22px)/1.1 var(--font-display); color: var(--blue); }
.option-card p { margin: 0 0 14px; font-size: 13px; line-height: 1.45; color: var(--muted); }
.option-card .accent { color: var(--blue); font-weight: 700; }
.option-card__price {
  display: grid;
  place-items: center;
  width: 100%;
  min-height: 47px;
  padding: 7px 10px;
  border-radius: 10px;
  color: #fff;
  font: 700 21px/1.1 var(--font-display);
  background: transparent url("images/connection-button.svg") center / 100% 100% no-repeat;
  box-shadow: 0 6px 16px rgba(40,130,236,.16);
}
.option-card small { display: block; margin-top: 8px; color: var(--muted); font-size: 11px; line-height: 1.25; }

/* При добавлении 4-го и следующих вариантов карточки становятся уже.
   SVG-фон цены может оставлять светлые края при сильном сжатии;
   рисуем такую же синюю кнопку непосредственно CSS, без второго слоя. */
.carousel-shell.has-extra-cards .option-card__price {
  background: #2882EC;
  border-radius: 10px;
}

/* Управление мобильными каруселями (на компьютере скрыто) */
.carousel-shell { min-width: 0; }
.carousel-controls { display: none; }

/* Юр. информация и футер */
.legal { border-block: 3px solid var(--outline); background: #EEF6FD; }
.legal-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
.legal-item { padding: 24px 28px; }
.legal-item + .legal-item { border-left: 3px solid var(--outline); }
.legal-item h2 { margin: 0 0 12px; font: 700 24px/1.2 var(--font-display); }
.legal-item__details { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.legal-item p { margin: 0; color: var(--muted); font-size: 16px; line-height: 1.35; }
.legal-item__details p:last-child { white-space: nowrap; }
.site-footer { background: #EEF6FD; padding: 22px 0; border-bottom: 3px solid var(--outline); }
.footer-inner { display: grid; grid-template-columns: 120px minmax(0, 1fr) auto auto; gap: clamp(14px, 1.8vw, 24px); align-items: center; }
.footer-brand { width: 105px; }
.footer-nav { display: flex; gap: clamp(17px, 3vw, 46px); align-items: center; justify-content: flex-start; }
.footer-nav a { color: var(--muted); white-space: nowrap; font-size: 17px; transition: color .2s, transform .2s; }
.footer-nav a:hover { color: var(--blue); transform: scale(1.045); }
.footer-contacts { display: flex; flex-direction: row; align-items: center; gap: 18px; }
.footer-contacts a { color: var(--muted); font-size: 16px; line-height: 1.25; white-space: nowrap; transition: color .2s ease; }
.footer-contacts a:hover { color: var(--blue); text-decoration: underline; }
.copyright { margin: 0; color: var(--muted); font-size: 14px; white-space: nowrap; }

/* Модальная заявка */
.modal-backdrop[hidden] { display: none; }
.modal-backdrop { position: fixed; z-index: 1000; inset: 0; display: flex; justify-content: center; align-items: center; padding: 20px; background: rgba(7,26,60,.54); backdrop-filter: blur(3px); }
.request-modal { width: min(100%, 510px); max-height: min(94vh, 850px); overflow-y: auto; position: relative; padding: 33px; border-radius: 22px; background: #fff; box-shadow: 0 20px 60px rgba(4,26,59,.13); }
.request-modal h2 { margin: 0 40px 10px 0; font: 700 30px/1.18 var(--font-display); }
.request-modal > p { margin: 0 0 23px; color: var(--muted); line-height: 1.4; font-size: 15px; }
.modal-close { position: absolute; right: 15px; top: 12px; width: 36px; height: 36px; border: 0; background: transparent; color: var(--navy); font-size: 32px; line-height: 1; }
#request-form { display: grid; gap: 13px; }
#request-form label { display: grid; gap: 6px; font-size: 15px; color: var(--navy); }
#request-form input, #request-form textarea { width: 100%; padding: 12px 14px; border: 1.5px solid var(--outline); border-radius: 10px; color: var(--navy); background: #fff; outline-color: var(--blue); }
#request-form input[readonly] { background: #f4f8ff; }
#request-form textarea { resize: vertical; min-height: 75px; }
.submit-button, .back-home { display: inline-grid; place-items: center; min-height: 49px; padding: 12px 23px; border: 0; border-radius: 12px; background: var(--blue); color: white; font-size: 17px; font-weight: 500; transition: transform .2s; }
.submit-button:hover, .back-home:hover { transform: scale(1.025); }
.request-note { margin: 0; color: var(--muted); font-size: 13px; line-height: 1.45; }
.form-message { margin: 0; color: var(--muted); font-size: 14px; line-height: 1.4; }
.toast { position: fixed; z-index: 1200; left: 50%; bottom: 22px; transform: translate(-50%, 12px); background: var(--navy); color: white; border-radius: 13px; padding: 13px 19px; font-size: 15px; box-shadow: 0 10px 28px rgba(0,0,0,.12); opacity: 0; visibility: hidden; transition: opacity .2s, transform .2s, visibility .2s; text-align: center; }
.toast.is-visible { transform: translate(-50%, 0); opacity: 1; visibility: visible; }

/* Временные страницы разделов */
.placeholder-page { display: grid; align-items: center; min-height: 65vh; padding: 75px 0; background: #fff url("images/hero-bg.svg") center / cover no-repeat; }
.placeholder-panel { width: min(100%, 780px); padding: 45px 48px; border: 1px solid var(--outline); border-radius: 26px; background: rgba(255,255,255,.92); }
.placeholder-panel h1 { margin: 0 0 22px; font: 700 clamp(33px, 4vw, 55px)/1.14 var(--font-display); }
.placeholder-panel p { max-width: 570px; margin: 0 0 27px; color: var(--muted); font-size: 22px; line-height: 1.45; }

@media (max-width: 1380px) {
  .container { width: min(1200px, calc(100% - 64px)); }
  .header-inner { gap: 16px; }
  .brand { width: 128px; }
  .nav-link { padding: 0 18px; font-size: 18px; }
  .nav-link.is-current { font-size: 21px; }
  .header-action { width: 42px; height: 42px; }
  .connection-panel { grid-template-columns: 1fr; }
  .connection-description { display: flex; align-items: center; justify-content: space-between; gap: 20px; }
  .connection-description h2 { max-width: 430px; }
  .connection-description p { max-width: 390px; }
  .option-card { min-height: 340px; }
}
/* Перестроение только футера на более узких экранах. */
@media (max-width: 1160px) {
  .footer-inner { grid-template-columns: 120px minmax(0, 1fr) auto; }
  .copyright { grid-column: 2 / -1; justify-self: end; }
}
@media (max-width: 920px) {
  .container { width: calc(100% - 40px); }
  .header-inner { padding-block: 17px; flex-wrap: wrap; justify-content: center; min-height: 0; }
  .main-nav { order: 3; width: 100%; justify-content: center; }
  .header-actions { margin-left: auto; }
  .hero { background-position: 60% center; }
  .hero-copy { max-width: 580px; }
  .tariff-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 32px; }
  .tariff-card { padding-inline: 18px; min-height: 312px; }
  .tariff-card__icon { width: 126px; height: 78px; margin-left: 12px; }
  .tariff-card__speed strong { font-size: 42px; }
  .tariff-card__speed span { font-size: 22px; }
  .tariff-card__price strong { font-size: 30px; }
  .tariff-card__price span { font-size: 17px; }
  .option-grid { gap: 14px; }
  .legal-grid { grid-template-columns: 1fr; }
  .legal-item + .legal-item { border-left: 0; border-top: 3px solid var(--outline); }
  .option-card { padding-inline: 12px; min-height: 268px; }
  .footer-inner { grid-template-columns: 90px minmax(0, 1fr) auto; }
  .footer-contacts { grid-column: 3; }
  .copyright { grid-column: 2 / -1; justify-self: end; }
}
@media (max-width: 800px) and (min-width: 641px) {
  .footer-inner { grid-template-columns: 90px minmax(0, 1fr); }
  .footer-contacts { grid-column: 2; }
  .copyright { grid-column: 2; justify-self: start; white-space: normal; }
}
/* Планшеты: три компактных тарифа в одном ряду и свободный футер. */
@media (min-width: 641px) and (max-width: 1100px) {
  /* У всех трёх тарифов собственная колонка — третий не переносится вниз. */
  .tariff-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    column-gap: clamp(12px, 2.5vw, 26px);
    justify-items: stretch;
  }
  .tariff-card {
    width: 100%;
    min-height: 292px;
    padding: 17px 12px 18px;
    border-radius: 24px;
  }
  .tariff-card__icon {
    width: clamp(90px, 13vw, 118px);
    height: clamp(58px, 8vw, 75px);
    margin: 3px 0 12px 6px;
  }
  .tariff-card__content { padding-left: 6px; padding-right: 0; }
  .tariff-card__speed { gap: 6px; }
  .tariff-card__speed strong { font-size: clamp(32px, 4.6vw, 44px); }
  .tariff-card__speed span { font-size: clamp(15px, 2.25vw, 22px); }
  .tariff-card__price { gap: 6px; margin: 9px 0 18px; }
  .tariff-card__price strong { font-size: clamp(24px, 3.35vw, 33px); }
  .tariff-card__price span { font-size: clamp(13px, 1.9vw, 18px); }
  .tariff-button {
    width: min(100%, 185px);
    min-height: 46px;
    border-radius: 14px;
    font-size: clamp(14px, 1.9vw, 19px);
    padding: 9px 8px;
  }

  /* Заголовок стоимости в одну строку, описание сразу под ним. */
  .connection-panel {
    grid-template-columns: minmax(0, 1fr);
    padding: clamp(20px, 3vw, 32px);
    gap: 24px;
  }
  .connection-description { display: block; padding: 0; }
  .connection-description h2 {
    max-width: none;
    margin: 0 0 12px;
    font-size: clamp(25px, 3.2vw, 35px);
    white-space: nowrap;
  }
  .connection-description p {
    max-width: none;
    margin: 0;
    font-size: clamp(17px, 2.2vw, 22px);
    line-height: 1.3;
  }
  .option-grid { gap: clamp(10px, 1.8vw, 18px); }
  .option-card { min-height: 278px; padding: 14px 9px 13px; }
  .option-card__icon { width: 82px; height: 66px; }
  .option-card h3 { font-size: clamp(16px, 2vw, 21px); }
  .option-card p { font-size: clamp(11px, 1.5vw, 14px); }
  .option-card__price { font-size: clamp(17px, 2.2vw, 21px); }

  /* Отдельные строки для навигации и контактов, с отступом от логотипа. */
  .footer-inner {
    grid-template-columns: 112px minmax(0, 1fr);
    column-gap: 34px;
    row-gap: 15px;
    align-items: center;
  }
  .footer-brand { grid-column: 1; grid-row: 1; width: 102px; }
  .footer-nav {
    grid-column: 2;
    grid-row: 1;
    display: flex;
    flex-wrap: wrap;
    column-gap: clamp(14px, 2.5vw, 28px);
    row-gap: 10px;
  }
  .footer-nav a { font-size: clamp(14px, 1.8vw, 17px); }
  .footer-contacts {
    grid-column: 2;
    grid-row: 2;
    flex-wrap: wrap;
    gap: 10px 18px;
  }
  .copyright {
    grid-column: 2;
    grid-row: 3;
    justify-self: start;
    white-space: normal;
  }
}

/* На телефоне карточки листаются по горизонтали, в центре изначально первая. */
@media (max-width: 640px) {
  .container { width: calc(100% - 28px); }
  .brand { width: 102px; }
  .header-inner { gap: 9px; padding-block: 13px; }
  .header-actions { padding: 4px; gap: 3px; border-width: 1.5px; }
  .header-action { width: 33px; height: 33px; }
  .header-action img { width: 31px; height: 31px; }
  .main-nav { width: fit-content; max-width: 100%; margin-inline: auto; padding: 4px; gap: 0; border-radius: 23px; }
  .nav-link { padding: 10px 8px; min-height: 43px; text-align: center; font-size: 12px; border-radius: 19px; white-space: normal; }
  .nav-link.is-current { font-size: 14px; }
  .hero, .hero-inner { min-height: 360px; }
  .hero { background-position: 68% center; }
  .hero-copy { padding: 45px 0; }
  .hero h1 { font-size: clamp(30px, 8vw, 38px); }
  .hero p { font-size: 16px; max-width: 470px; }
  .section { padding-block: 36px 48px; }
  .legal-grid { grid-template-columns: 1fr; }
  /* Карусели тянутся до краёв доступной зоны, чтобы соседние карточки
     были видны как полноценный намёк на свайп, а не полоской в 10 px. */
  .tariffs .carousel-shell {
    width: calc(100% + 28px);
    margin-inline: -14px;
  }
  .connection .carousel-shell {
    width: calc(100% + 32px);
    margin-inline: -16px;
  }
  .tariff-grid, .option-grid {
    display: flex;
    width: 100%;
    max-width: 100%;
    justify-content: flex-start;
    gap: 16px;
    overflow-x: auto;
    overflow-y: hidden;
    overscroll-behavior-x: contain;
    scroll-snap-type: x mandatory;
    scroll-behavior: smooth;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
    touch-action: pan-x pan-y;
    /* Убираем резкий обрез соседних карточек на границах. */
    -webkit-mask-image: linear-gradient(90deg, transparent 0, #000 15px, #000 calc(100% - 15px), transparent 100%);
    mask-image: linear-gradient(90deg, transparent 0, #000 15px, #000 calc(100% - 15px), transparent 100%);
  }
  .tariff-grid::-webkit-scrollbar, .option-grid::-webkit-scrollbar { display: none; }
  .tariff-grid {
    --carousel-width: min(69vw, 266px);
    padding: 18px calc((100% - var(--carousel-width))/2) 28px;
    scroll-padding-inline: calc((100% - var(--carousel-width))/2);
  }
  .tariff-card {
    flex: 0 0 var(--carousel-width);
    width: var(--carousel-width);
    min-height: 304px;
    padding-inline: 16px;
    scroll-snap-align: center;
    scroll-snap-stop: always;
  }
  .tariff-card__icon { width: 120px; height: 72px; margin: 0 0 14px 10px; }
  .tariff-card__content { padding-left: 6px; padding-right: 0; }
  .tariff-card__speed strong { font-size: clamp(35px, 9.7vw, 43px); }
  .tariff-card__speed span { font-size: clamp(17px, 4.5vw, 20px); }
  .tariff-card__price strong { font-size: clamp(28px, 7.8vw, 32px); }
  .tariff-card__price span { font-size: clamp(15px, 4vw, 18px); }
  .tariff-button { font-size: clamp(16px, 4.8vw, 20px); }
  .connection-panel { padding: 23px 16px; border-radius: 23px; }
  .connection-description { display: block; }
  .connection-description p { font-size: 18px; }
  .option-grid {
    --carousel-width: min(64vw, 248px);
    padding: 18px calc((100% - var(--carousel-width))/2) 25px;
    scroll-padding-inline: calc((100% - var(--carousel-width))/2);
  }
  .option-card {
    flex: 0 0 var(--carousel-width);
    width: var(--carousel-width);
    min-height: 278px;
    scroll-snap-align: center;
    scroll-snap-stop: always;
  }
  .option-card__icon { width: 84px; height: 66px; transform: translateY(-1px); margin-top: 0; }
  .option-card h3 { font-size: clamp(19px, 5vw, 23px); }
  .option-card p { font-size: clamp(12px, 3.5vw, 14px); }
  .carousel-controls {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 18px;
    margin-top: 0;
  }
  .carousel-arrow {
    width: 42px;
    height: 42px;
    display: grid;
    place-items: center;
    border: 1.5px solid #DDECFC;
    border-radius: 50%;
    background: #F2F8FF;
    color: var(--blue);
    box-shadow: 0 4px 12px rgba(7,38,99,.09);
    font-size: 23px;
    line-height: 1;
    transition: transform .18s, opacity .18s;
  }
  .carousel-arrow:active { transform: scale(.95); }
  .carousel-arrow:disabled { opacity: .34; cursor: default; }
  .carousel-position {
    min-width: 43px;
    font-size: 15px;
    color: var(--muted);
    text-align: center;
    font-variant-numeric: tabular-nums;
  }
  .legal-item { padding: 15px 8px; }
  .legal-item h2 { font-size: 20px; margin-bottom: 9px; }
  .legal-item p { font-size: 13px; line-height: 1.35; overflow-wrap: anywhere; }
  .legal-item__details { grid-template-columns: 1fr; gap: 8px; }
  .legal-item + .legal-item { border-left: 0; border-top: 3px solid var(--outline); }
  .legal-item__details p:last-child { white-space: normal; }
  .footer-inner { grid-template-columns: 1fr; gap: 16px; }
  .footer-brand { width: 100px; }
  .footer-nav { flex-wrap: wrap; gap: 12px 22px; }
  .footer-contacts { grid-column: 1; }
  .copyright { grid-column: 1; justify-self: start; white-space: normal; }
  .request-modal { padding: 25px 20px; }
  .placeholder-panel { padding: 30px 25px; }
  .placeholder-panel p { font-size: 18px; }
}
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; transition-duration: .01ms !important; }
}

/* Всплывающие окна выбора города и карты покрытия */
.utility-modal {
  position: relative;
  width: min(100%, 480px);
  max-height: min(92dvh, 900px);
  overflow-y: auto;
  padding: 32px;
  border-radius: 22px;
  background: #fff;
  box-shadow: 0 22px 65px rgba(4,26,59,.19);
}
.utility-modal h2 {
  margin: 0 42px 16px 0;
  color: var(--navy);
  font: 700 clamp(25px, 3vw, 33px)/1.15 var(--font-display);
}
.utility-subtitle {
  margin: 0 0 20px;
  color: var(--muted);
  font-size: 17px;
}
.city-choice {
  width: 100%;
  min-height: 58px;
  padding: 12px 17px;
  border: 2px solid var(--outline);
  border-radius: 14px;
  background: #eef6fd;
  color: var(--navy);
  font-size: 19px;
  text-align: left;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  transition: background .2s ease, border-color .2s ease, transform .2s ease;
}
.city-choice:hover {
  border-color: #aacff5;
  background: #e5f1fd;
  transform: translateY(-1px);
}
.city-choice__check {
  width: 28px;
  height: 28px;
  flex: 0 0 28px;
  display: grid;
  place-items: center;
  border-radius: 50%;
  color: #fff;
  background: var(--blue);
  font-size: 17px;
  font-weight: 700;
}
.map-modal {
  width: min(1100px, 100%);
  padding: 27px;
}
.map-modal h2 { margin-bottom: 18px; }
.coverage-map {
  width: 100%;
  height: clamp(330px, 62dvh, 650px);
  border: 2px solid var(--outline);
  border-radius: 17px;
  overflow: hidden;
  background: #eef6fd;
}
.coverage-map iframe {
  width: 100%;
  height: 100%;
  border: 0;
  display: block;
}
.map-note {
  margin: 15px 0 8px;
  color: var(--muted);
  font-size: 14px;
  line-height: 1.4;
}
.map-open-link {
  display: inline-block;
  color: var(--blue);
  font-size: 14px;
  text-decoration: underline;
  text-underline-offset: 3px;
}
@media (max-width: 640px) {
  .utility-modal { padding: 26px 20px; border-radius: 19px; }
  .map-modal { padding: 22px 12px 15px; }
  .map-modal h2 { margin-left: 6px; font-size: 26px; }
  .coverage-map { height: min(56dvh, 520px); border-radius: 13px; }
  .map-note, .map-open-link { margin-left: 6px; margin-right: 6px; }
}

/* ===== Динамические карточки из MySQL =====
   Телефон: сохраняется исходная карусель.
   Планшет 641–1100px: 3 карточки, прокрутка с четвёртой.
   Компьютер 1101px+: 4 карточки — один ряд; с пятой — карусель
   по четыре ПОЛНЫЕ карточки, без обрезанных полосок. */

/* Стрелки и перетаскивание при наличии дополнительных карточек. */
@media (min-width: 641px) {
  .carousel-shell.has-extra-cards .carousel-arrow {
    width: 42px;
    height: 42px;
    display: grid;
    place-items: center;
    border: 1.5px solid #DDECFC;
    border-radius: 50%;
    background: #F2F8FF;
    color: var(--blue);
    box-shadow: 0 4px 12px rgba(7,38,99,.09);
    font-size: 23px;
    line-height: 1;
    transition: transform .18s, opacity .18s;
  }
  .carousel-shell.has-extra-cards .carousel-arrow:hover:not(:disabled) { transform: scale(1.06); }
  .carousel-shell.has-extra-cards .carousel-arrow:disabled { opacity: .34; cursor: default; }
  .carousel-shell.has-extra-cards .carousel-position {
    min-width: 76px;
    text-align: center;
    font-size: 15px;
    font-variant-numeric: tabular-nums;
    color: var(--muted);
  }
  .carousel-shell.has-extra-cards .tariff-grid.is-dragging,
  .carousel-shell.has-extra-cards .option-grid.is-dragging {
    cursor: grabbing;
    scroll-behavior: auto;
    scroll-snap-type: none;
    user-select: none;
  }
}

/* На планшетах оставляем максимум 3 карточки в ряду.
   Четвёртая и последующие листаются без узкой полоски сбоку. */
@media (min-width: 641px) and (max-width: 1100px) {
  .carousel-shell.has-extra-cards .tariff-grid,
  .carousel-shell.has-extra-cards .option-grid {
    display: grid;
    grid-auto-flow: column;
    grid-template-columns: none;
    grid-template-rows: minmax(0, 1fr);
    width: 100%;
    max-width: 100%;
    overflow-x: auto;
    overflow-y: hidden;
    justify-content: start;
    align-items: stretch;
    scroll-behavior: smooth;
    scroll-snap-type: x mandatory;
    scroll-padding-left: 12px;
    overscroll-behavior-x: contain;
    touch-action: pan-x pan-y;
    padding: 16px 12px 34px;
    scrollbar-width: none;
    cursor: grab;
    --gap: clamp(10px, 1.8vw, 18px);
    gap: var(--gap);
    grid-auto-columns: calc((100% - 2 * var(--gap)) / 3);
  }
  .carousel-shell.has-extra-cards .tariff-grid::-webkit-scrollbar,
  .carousel-shell.has-extra-cards .option-grid::-webkit-scrollbar { display: none; }
  .carousel-shell.has-extra-cards .tariff-card,
  .carousel-shell.has-extra-cards .option-card {
    min-width: 0;
    width: 100%;
    position: static;
    left: auto;
    scroll-snap-align: start;
  }
  .carousel-shell.has-extra-cards .carousel-controls {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 18px;
    margin-top: 2px;
  }
}

@media (min-width: 1101px) {
  /* Ровно 4 карточки: не карусель, а компактный горизонтальный ряд. */
  .carousel-shell.has-four-cards .tariff-grid,
  .carousel-shell.has-four-cards .option-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: clamp(12px, 1.45vw, 23px);
    justify-items: center;
  }
  /* На очень широком мониторе четыре тарифа не разъезжаются
     на всю ширину: сохраняем привычный размер и воздух между ними. */
  .carousel-shell.has-four-cards .tariff-grid {
    max-width: 1409px;
    margin-inline: auto;
  }
  .carousel-shell.has-four-cards .tariff-card {
    position: static;
    left: auto;
    width: min(100%, 335px);
    min-height: 315px;
    padding: 20px clamp(10px, 1.25vw, 18px) 20px;
  }
  .carousel-shell.has-four-cards .option-card {
    width: 100%;
    min-height: 272px;
    padding: 14px 8px 12px;
  }

  /* Пять и более: скролл, в видимой области строго 4 полные карточки.
     Пятая не выступает обрезанной полоской за правый край. */
  .carousel-shell.has-desktop-overflow .tariff-grid,
  .carousel-shell.has-desktop-overflow .option-grid {
    display: grid;
    grid-auto-flow: column;
    grid-template-columns: none;
    grid-template-rows: minmax(0, 1fr);
    width: 100%;
    max-width: 100%;
    --gap: clamp(12px, 1.45vw, 23px);
    gap: var(--gap);
    grid-auto-columns: calc((100% - 3 * var(--gap)) / 4);
    justify-items: center;
    align-items: stretch;
    overflow-x: auto;
    overflow-y: hidden;
    scroll-behavior: smooth;
    scroll-snap-type: x mandatory;
    scroll-padding-left: 14px;
    overscroll-behavior-x: contain;
    padding: 16px 14px 36px;
    scrollbar-width: none;
    cursor: grab;
  }
  .carousel-shell.has-desktop-overflow .tariff-grid::-webkit-scrollbar,
  .carousel-shell.has-desktop-overflow .option-grid::-webkit-scrollbar { display: none; }
  .carousel-shell.has-desktop-overflow .tariff-card,
  .carousel-shell.has-desktop-overflow .option-card {
    width: 100%;
    min-width: 0;
    position: static;
    left: auto;
    scroll-snap-align: start;
  }
  .carousel-shell.has-desktop-overflow .tariff-card {
    width: min(100%, 335px);
    min-height: 315px;
    padding: 20px clamp(10px, 1.25vw, 18px) 20px;
  }
  .carousel-shell.has-desktop-overflow .option-card {
    min-height: 272px;
    padding: 14px 8px 12px;
  }
  .carousel-shell.has-desktop-overflow .carousel-controls {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 18px;
    margin-top: 2px;
  }
  /* На компьютере оставляем только стрелки, без счётчика. */
  .carousel-shell.has-desktop-overflow .carousel-position { display: none; }

  /* Более компактная типографика только для рядов из 4+ карточек. */
  .carousel-shell.has-four-cards .tariff-card__icon,
  .carousel-shell.has-desktop-overflow .tariff-card__icon {
    width: clamp(98px, 8.5vw, 132px);
    height: clamp(62px, 6vw, 78px);
    margin: 2px 0 12px 7px;
  }
  .carousel-shell.has-four-cards .tariff-card__content,
  .carousel-shell.has-desktop-overflow .tariff-card__content { padding-left: 5px; padding-right: 0; }
  .carousel-shell.has-four-cards .tariff-card__speed,
  .carousel-shell.has-desktop-overflow .tariff-card__speed { gap: 6px; }
  .carousel-shell.has-four-cards .tariff-card__speed strong,
  .carousel-shell.has-desktop-overflow .tariff-card__speed strong { font-size: clamp(33px, 2.7vw, 46px); }
  .carousel-shell.has-four-cards .tariff-card__speed span,
  .carousel-shell.has-desktop-overflow .tariff-card__speed span { font-size: clamp(16px, 1.65vw, 23px); }
  .carousel-shell.has-four-cards .tariff-card__price,
  .carousel-shell.has-desktop-overflow .tariff-card__price { gap: 5px; margin: 8px 0 18px; }
  .carousel-shell.has-four-cards .tariff-card__price strong,
  .carousel-shell.has-desktop-overflow .tariff-card__price strong { font-size: clamp(27px, 2.15vw, 35px); }
  .carousel-shell.has-four-cards .tariff-card__price span,
  .carousel-shell.has-desktop-overflow .tariff-card__price span { font-size: clamp(15px, 1.3vw, 19px); }
  .carousel-shell.has-four-cards .tariff-button,
  .carousel-shell.has-desktop-overflow .tariff-button {
    min-height: 48px;
    width: min(100%, 190px);
    padding: 9px 8px;
    font-size: clamp(15px, 1.4vw, 19px);
  }
  .carousel-shell.has-four-cards .option-card h3,
  .carousel-shell.has-desktop-overflow .option-card h3 { font-size: clamp(17px, 1.4vw, 22px); }
  .carousel-shell.has-four-cards .option-card p,
  .carousel-shell.has-desktop-overflow .option-card p { font-size: clamp(11px, 1vw, 13px); }
  .carousel-shell.has-four-cards .option-card__price,
  .carousel-shell.has-desktop-overflow .option-card__price { font-size: clamp(17px, 1.3vw, 21px); }
}
/* АйКорп - макет с дополнительным воздухом и общими компонентами */
@media (min-width: 921px) {
  .container { width: min(1220px, calc(100% - clamp(112px, 16vw, 360px))); }
  .header-inner { min-height: 100px; gap: 18px; }
  .header-identity { display:flex; align-items:center; gap: 18px; flex: 0 0 auto; }
  .brand { width: 116px; }
  .main-nav { padding: 4px; border-width: 1.5px; }
  .nav-link { min-height: 44px; padding: 0 clamp(10px, 1.25vw, 21px); font-size: clamp(13px, 1.05vw, 16px); }
  .nav-link.is-current { font-size: clamp(15px, 1.13vw, 17px); }
  .hero, .hero-inner { min-height: 340px; }
  .hero-copy { max-width: 560px; padding: 45px 0 55px; }
  .hero h1 { font-size: clamp(32px, 2.7vw, 46px); }
  .hero p { font-size: 17px; }
  .section { padding-block: 38px 45px; }
  .section-title { font-size: clamp(28px, 2.1vw, 36px); margin-bottom: 28px; }
  .tariff-card { width: min(100%, 295px); min-height: 294px; padding: 20px 22px; border-radius: 25px; }
  .tariff-card__icon { width: 118px; height: 78px; margin-bottom: 10px; }
  .tariff-card__content { padding-left: 8px; }
  .tariff-card__speed strong { font-size: 44px; }
  .tariff-card__speed span { font-size: 21px; }
  .tariff-card__price strong { font-size: 32px; }
  .tariff-card__price span { font-size: 18px; }
  .tariff-card__price { margin: 8px 0 17px; }
  .tariff-button { min-height: 47px; width: min(100%,188px); font-size: 17px; }
  .connection-panel { grid-template-columns: minmax(0,1fr); padding: 30px 32px; gap: 24px; }
  .connection-description { display: flex; align-items: center; justify-content: space-between; padding: 0; gap: 24px; }
  .connection-description h2 { margin: 0; max-width: 450px; font-size: 35px; }
  .connection-description p { max-width: 260px; font-size: 18px; }
  .option-card { min-height: 260px; padding: 16px 12px 13px; }
  .option-card__icon { width: 84px; height: 65px; }
  .option-card h3 { font-size: 19px; }
  .option-card p { font-size: 12px; }
  .option-card__price { min-height: 43px; font-size: 19px; }
}
.header-identity { display:flex; align-items:center; gap: 15px; min-width:0; }
.header-city { display:inline-flex; gap: 5px; align-items:center; border:0; background:transparent; color:var(--navy); font-weight:600; font-size:15px; padding:7px 3px; white-space:nowrap; }
.header-city img { display:block; width:22px; height:22px; }
.header-city:hover { color:var(--blue); }
.header-right { display:flex; align-items:center; gap:clamp(8px,1.3vw,19px); flex:0 0 auto; }
.header-phone { color: var(--navy); font-size: clamp(12px,1.1vw,16px); white-space:nowrap; font-weight:600; }
.header-phone:hover { color:var(--blue); }
.cabinet-login { display:grid; place-items:center; padding:0 19px; min-height:43px; border-radius:23px; background:var(--blue); color:#fff; font-size:15px; font-weight:700; white-space:nowrap; box-shadow:0 5px 15px rgba(40,130,236,.17); }
.cabinet-login:hover { filter:brightness(1.05); transform:translateY(-1px); }
.footer-contacts button { border:0; padding:0; background:transparent; font:inherit; color:var(--muted); white-space:nowrap; }
.footer-contacts button:hover { color:var(--blue); text-decoration:underline; }
.footer-inner { grid-template-columns:90px minmax(0,1fr); row-gap:14px; column-gap:26px; }
.footer-brand { grid-row:1 / span 2; width:90px; }
.footer-nav { grid-column:2; grid-row:1; flex-wrap:wrap; gap:10px 27px; }
.footer-contacts { grid-column:2; grid-row:2; flex-wrap:wrap; gap:10px 24px; }
.copyright { grid-column:2; grid-row:3; justify-self:start; white-space:normal; font-size:13px; }
.ikorp-policy-footer { padding-bottom: 12px; }
.ikorp-policy-footer a { color:var(--muted); font-size:13px; text-decoration:underline; text-underline-offset:2px; }

/* Легенда готовности - разные неправильные контуры, как выделенные области */
.coverage-legend { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:14px; margin:14px 0 20px; }
.coverage-legend__item { display:flex; align-items:flex-start; gap:11px; min-width:0; }
.coverage-legend__item p { margin:0; font-size:13px; line-height:1.35; color:#46688e; }
.coverage-legend__item strong { color:var(--navy); }
.coverage-blob { display:block; flex:0 0 48px; width:48px; height:34px; transform:rotate(-7deg); box-shadow:inset 0 0 0 2px rgba(255,255,255,.22); }
.coverage-blob--ready { background:#43a467; clip-path:polygon(4% 21%,24% 3%,56% 12%,71% 0%,99% 33%,88% 74%,57% 96%,25% 82%,0% 60%); }
.coverage-blob--soon { background:#e99a36; clip-path:polygon(2% 44%,17% 5%,47% 0%,66% 16%,96% 12%,100% 56%,76% 100%,43% 86%,18% 98%); transform:rotate(8deg); }
.coverage-blob--planned { background:#9a6f50; clip-path:polygon(1% 8%,33% 19%,57% 0%,92% 22%,99% 61%,73% 95%,40% 87%,11% 100%,0% 65%); transform:rotate(-3deg); }

/* Форма и дополнительные поля заявки */
#request-form select { width:100%; border:1.5px solid var(--outline); border-radius:10px; padding:11px 12px; color:var(--navy); background:#fff; }
.request-pair { display:grid; grid-template-columns:1fr 1fr; gap:13px; }
.optional-label { font-size:12px; color:var(--muted); }
#request-form label.privacy-consent, #snt-request-form label.privacy-consent { display:flex; align-items:flex-start; gap:10px; font-size:13px; color:#4d6486; line-height:1.45; cursor:pointer; }
.privacy-consent input[type=checkbox] { width:18px!important; height:18px!important; flex:0 0 18px; margin:2px 0 0!important; padding:0!important; accent-color:var(--blue); }
.privacy-consent a { color:var(--blue); text-decoration:underline; }
.honeypot { position:absolute!important; width:1px; height:1px; opacity:0; overflow:hidden; pointer-events:none; left:-99999px; }
#snt-request-form { display:grid; gap:13px; }
#snt-request-form label:not(.privacy-consent) { display:grid; gap:6px; font-size:15px; }
#snt-request-form input, #snt-request-form textarea { width:100%; padding:12px 14px; border:1.5px solid var(--outline); border-radius:10px; color:var(--navy); background:#fff; }
#snt-request-form textarea { resize:vertical; min-height:78px; }

/* Отзывы Яндекс Карт на всю ширину контейнера */
.reviews-heading { display:flex; align-items:end; justify-content:space-between; gap:20px; margin-bottom:22px; }
.reviews-heading .section-title { margin-bottom:5px; }
.reviews-heading p { margin:0; color:var(--muted); }
.reviews-more { color:var(--blue); font-size:14px; white-space:nowrap; }
.reviews-frame { width:100%; height:580px; position:relative; border:1px solid var(--outline); border-radius:24px; background:#fff; overflow:hidden; box-shadow:0 16px 30px rgba(7,38,99,.06); }
.reviews-frame iframe { display:block; width:100%; height:100%; border:0; }
.reviews-credit { position:absolute; bottom:8px; left:0; width:100%; text-align:center; overflow:hidden; white-space:nowrap; text-overflow:ellipsis; color:#9da9b6; font:10px/1.2 Arial,sans-serif; text-decoration:none; padding:0 15px; }

/* Внутренние страницы - меньше объектов, больше полей по бокам */
.inner-page { padding:clamp(35px,4vw,65px) 0 clamp(50px,5vw,85px); background:linear-gradient(180deg,#f4f8fe 0%,#fff 48%); }
.page-heading { max-width:790px; margin-bottom:34px; }
.eyebrow { display:block; font-weight:700; font-size:12px; letter-spacing:.12em; color:var(--blue); margin-bottom:13px; }
.page-heading h1, .cabinet-placeholder h1 { margin:0 0 14px; font:700 clamp(32px,3vw,44px)/1.17 var(--font-display); }
.page-heading p, .cabinet-placeholder p { margin:0; font-size:17px; line-height:1.55; color:var(--muted); }
.service-prices { display:grid; gap:27px; }
.service-group { padding:27px 29px; border:1px solid var(--outline); border-radius:24px; background:#fff; box-shadow:0 14px 34px rgba(22,71,125,.06); }
.service-group h2 { margin:0 0 18px; font:700 clamp(22px,2.2vw,29px)/1.2 var(--font-display); }
.service-table-scroll { width:100%; overflow-x:auto; }
.service-group table { width:100%; border-collapse:collapse; table-layout:auto; }
.service-group th { text-align:left; background:#eef6fd; color:#5278ad; padding:13px 17px; font-size:14px; font-weight:600; }
.service-group th:first-child { border-radius:11px 0 0 11px; }
.service-group th:last-child { border-radius:0 11px 11px 0; }
.service-group td { padding:17px; font-size:16px; border-bottom:1px solid #e7eff9; }
.service-group tr:last-child td { border-bottom:0; }
.service-group td:last-child,.service-group th:last-child { text-align:right; white-space:nowrap; font-weight:700; }
.org-sections { display:flex; gap:10px; flex-wrap:wrap; margin-bottom:28px; }
.org-section-link { padding:12px 17px; border:1px solid var(--outline); background:#fff; border-radius:15px; font-size:14px; color:var(--muted); transition:background .2s; }
.org-section-link.is-active { background:var(--blue); border-color:var(--blue); color:#fff; }
.org-content[hidden] { display:none; }
.org-intro { border-radius:24px; background:#edf5ff; border:1px solid var(--outline); padding:clamp(26px,4vw,46px); margin-bottom:20px; }
.org-intro h2 { font:700 clamp(26px,2.8vw,38px)/1.2 var(--font-display); margin:0 0 19px; }
.org-content p, .org-content li { font-size:16px; line-height:1.65; color:#496992; }
.org-content p { margin:0 0 13px; }
.org-content strong { color:var(--navy); }
.org-info-grid { display:grid; grid-template-columns:1fr 1fr; gap:20px; }
.org-info-card { background:#fff; border:1px solid var(--outline); border-radius:22px; padding:26px 29px; margin-bottom:20px; box-shadow:0 12px 26px rgba(22,71,125,.04); }
.org-info-card h3 { font:700 clamp(21px,2vw,26px)/1.2 var(--font-display); margin:0 0 15px; }
.org-info-card ul { margin:12px 0; padding-left:21px; }
.org-info-card li + li { margin-top:7px; }
.org-info-card--wide { margin-bottom:20px; }
.org-cta { display:flex; align-items:center; justify-content:space-between; gap:20px; padding:29px; border-radius:22px; background:#edf5ff; }
.org-cta h3 { margin:0 0 6px; font:700 27px/1.2 var(--font-display); }
.org-cta p { margin:0; }
.org-cta .submit-button { max-width:330px; text-align:center; }
.org-placeholder { background:#fff; border:1px solid var(--outline); border-radius:24px; padding:50px; min-height:200px; }
.org-placeholder h2 { font:700 28px/1.2 var(--font-display); }
.cabinet-placeholder { max-width:730px; min-height:340px; border:1px solid var(--outline); border-radius:26px; padding:50px; background:#fff; }
.cabinet-placeholder p { margin-bottom:28px; }

@media (max-width:1200px) and (min-width:921px) {
  .container { width:calc(100% - 80px); }
  .brand { width:108px; }
  .header-identity { gap:9px; }
  .header-city { font-size:13px; }
  .header-city img { width:19px;height:19px; }
  .header-inner { gap:12px; }
  .nav-link { padding-inline:10px; font-size:13px; }
  .nav-link.is-current { font-size:14px; }
  .header-phone { font-size:13px; }
  .cabinet-login { padding-inline:15px; }
}
@media (max-width:920px) {
  .header-inner { display:grid; grid-template-columns:1fr auto; gap:12px; }
  .header-identity { grid-column:1; grid-row:1; gap:10px; }
  .header-right { grid-column:2; grid-row:1; }
  .main-nav { grid-column:1/-1; grid-row:2; justify-self:center; width:fit-content; margin:0 auto; }
  .header-phone { font-size:14px; }
  .nav-link { min-height:45px; padding-inline:17px; font-size:15px; }
  .nav-link.is-current { font-size:16px; }
  .footer-inner { grid-template-columns:90px 1fr; }
  .footer-brand { grid-column:1; grid-row:1; }
  .footer-nav { grid-column:2; grid-row:1; }
  .footer-contacts { grid-column:2; grid-row:2; }
  .copyright { grid-column:2; grid-row:3; }
  .coverage-legend { grid-template-columns:1fr; }
}
@media (max-width:640px) {
  .container { width:calc(100% - 30px); }
  .header-inner { gap:10px; }
  .header-identity .brand { width:90px; }
  .header-city { font-size:12px; gap:2px; }
  .header-city img { width:17px;height:17px; }
  .header-phone { display:none; }
  .cabinet-login { min-height:35px; font-size:13px; padding-inline:14px; }
  .main-nav { padding:3px; gap:1px; }
  .nav-link { min-height:38px; padding:8px 7px; font-size:12px; }
  .nav-link.is-current { font-size:13px; }
  .footer-inner { display:grid; grid-template-columns:1fr; gap:13px; }
  .footer-brand { grid-column:1; grid-row:1; width:92px; }
  .footer-nav { grid-column:1; grid-row:2; }
  .footer-contacts { grid-column:1; grid-row:3; display:flex; gap:10px 18px; }
  .copyright { grid-column:1; grid-row:4; }
  .ikorp-policy-footer { text-align:left; }
  .request-pair { grid-template-columns:1fr; }
  .reviews-heading { display:block; }
  .reviews-more { display:inline-block; margin-top:14px; }
  .reviews-frame { height:610px; border-radius:17px; }
  .service-group { padding:17px 14px; }
  .service-group td { padding:14px 9px; font-size:13px; }
  .service-group th { padding:12px 9px; font-size:13px; }
  .org-sections { display:grid; grid-template-columns:1fr 1fr; }
  .org-section-link { font-size:12px; padding:12px 9px; text-align:center; }
  .org-info-grid { grid-template-columns:1fr; gap:0; }
  .org-info-card { padding:22px; }
  .org-cta { display:block; padding:23px; }
  .org-cta .submit-button { margin-top:18px; font-size:14px; }
  .cabinet-placeholder { padding:26px; min-height:280px; }
}


/* === 29.10: точечные исправления по итогам проверки === */
/* Город, номер телефона и вход */
.header-city span { font-weight: 600; }
.header-right { gap: 5px; }
.header-phone { margin-right: 2px; }
.cabinet-login { font-family:var(--font-body); border:0; cursor:pointer; }

/* Стоимость подключения: один синий фон строго в пределах карточки.
   Раньше SVG содержал белые поля, которые становились видны при сжатии. */
.option-card__content { min-width:0; }
.option-card__price,
.carousel-shell.has-extra-cards .option-card__price,
.carousel-shell.has-four-cards .option-card__price,
.carousel-shell.has-desktop-overflow .option-card__price {
  background: #2882ec !important;
  background-image: none !important;
  box-shadow: 0 6px 16px rgba(40,130,236,.13);
  width:100%;
  max-width:100%;
  border-radius:11px;
  box-sizing:border-box;
  margin-inline:0;
  align-self:stretch;
}

/* Отзывы занимают ширину блока: виджет слева, справа отдельная
   полезная панель, а не пустой серый прямоугольник iframe. */
.reviews-frame { display:grid; grid-template-columns:minmax(0,1.65fr) minmax(240px,.9fr); gap:0; height:360px; background:#fff; overflow:hidden; }
.reviews-widget { min-width:0; height:100%; overflow:hidden; background:#fff; }
.reviews-widget iframe { display:block; width:100%; height:100%; border:0; }
.reviews-side { display:flex; flex-direction:column; justify-content:center; align-items:flex-start; padding:30px clamp(22px,3.5vw,49px); background:linear-gradient(145deg,#eaf4ff 0%,#f5f9ff 70%,#fff 100%); border-left:1px solid var(--outline); }
.reviews-side__tag { font-size:11px; letter-spacing:.09em; font-weight:700; color:var(--blue); }
.reviews-side h3 { font:700 clamp(21px,1.8vw,28px)/1.2 var(--font-display); margin:14px 0 13px; }
.reviews-side p { color:var(--muted); line-height:1.5; font-size:15px; margin:0 0 24px; }
.reviews-side a { display:inline-flex; align-items:center; border-radius:13px; color:#fff; background:var(--blue); font-weight:600; padding:12px 16px; font-size:14px; }

/* Строгое выравнивание юридического блока и подвала на всех страницах */
.legal-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
.legal-item { padding:24px 20px; min-width:0; }
.legal-item__details { grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:20px; }
.legal-item p { font-size:clamp(12px,.95vw,15px); overflow-wrap:anywhere; }
.legal-item__details p:last-child { white-space:normal; }
.site-footer { padding:24px 0; }
.footer-inner {
  display:grid;
  grid-template-columns: 110px minmax(0,1fr) auto;
  grid-template-areas: 'logo nav contacts' 'logo copy policy';
  gap:16px 30px; align-items:center;
}
.footer-brand { grid-area:logo; width:106px; max-width:100%; }
.footer-nav { grid-area:nav; flex-wrap:wrap; gap:9px 20px; }
.footer-contacts { grid-area:contacts; display:flex; flex-wrap:wrap; gap:9px 20px; justify-content:flex-end; }
.footer-nav a, .footer-contacts a, .footer-contacts button { font-size:clamp(12px,.95vw,15px); }
.copyright { grid-area:copy; font-size:12px; justify-self:start; white-space:normal; }
.footer-policy { grid-area:policy; color:var(--muted); text-decoration:underline; text-underline-offset:3px; font-size:12px; text-align:right; }
.footer-policy:hover { color:var(--blue); }

/* Формы: аккуратный компактный диалог без необходимости листать при
   обычной высоте окна. Маленькие экраны сохраняют страховочный скролл. */
.request-modal { width:min(100%,540px); max-height:calc(100dvh - 26px); padding:21px 27px; overflow-y:auto; }
.request-modal h2 { font-size:25px; margin:0 36px 13px 0; line-height:1.12; }
#request-form, #snt-request-form { gap:8px; }
#request-form label, #snt-request-form label:not(.privacy-consent) { gap:3px; font-size:13px; line-height:1.25; }
#request-form input:not([type=checkbox]), #request-form textarea,
#request-form select, #snt-request-form input:not([type=checkbox]), #snt-request-form textarea {
  padding:8px 11px; min-height:37px; font-size:14px; border-radius:9px;
}
#request-form textarea, #snt-request-form textarea { min-height:49px; max-height:70px; resize:vertical; }
#request-form .request-note { font-size:11px; line-height:1.3; }
#request-form label.privacy-consent, #snt-request-form label.privacy-consent { font-size:11px; line-height:1.35; gap:7px; }
.privacy-consent input[type=checkbox] { width:16px!important; height:16px!important; flex-basis:16px; }
.request-modal .submit-button { min-height:40px; padding:8px 15px; font-size:14px; }
.request-modal .form-message:empty { display:none; }
.request-pair { gap:10px; }

/* Модальное окно входа в абонентский кабинет */
.subscriber-login-modal { width:min(100%,440px); padding:30px; }
.login-eyebrow { color:var(--blue); font-size:12px; font-weight:700; letter-spacing:.08em; }
.subscriber-login-modal h2 { margin:8px 35px 8px 0; font:700 28px/1.15 var(--font-display); }
.login-hint { color:var(--muted); font-size:13px; line-height:1.45; margin:0 0 17px; }
#subscriber-login-form { display:grid; gap:12px; }
#subscriber-login-form label { display:grid; gap:5px; font-size:14px; font-weight:600; }
#subscriber-login-form input { width:100%; min-height:42px; padding:10px 13px; border:1px solid var(--outline); border-radius:10px; background:#f4f8fc; color:var(--muted); }
#subscriber-login-form input:disabled { cursor:not-allowed; }
.login-help { display:flex; justify-content:flex-end; }
.login-forgot { border:0; background:transparent; color:var(--blue); text-decoration:underline; padding:0; font-size:13px; }
.login-integration-notice { margin:0; padding:10px 12px; background:#eef6fd; border-radius:10px; color:#526f95; font-size:12px; line-height:1.45; }
#subscriber-login-form .submit-button:disabled { opacity:.5; cursor:not-allowed; }

/* Более живой фон страниц услуг и организаций, без лишних изображений */
.inner-page {
  position:relative; isolation:isolate;
  background:
    radial-gradient(ellipse 570px 420px at 91% 4%,rgba(40,130,236,.13),transparent 76%),
    radial-gradient(ellipse 500px 520px at 1% 62%,rgba(125,184,244,.11),transparent 79%),
    linear-gradient(180deg,#f9fcff 0%,#fff 62%,#f7fbff 100%);
}
.inner-page::before {
  content:''; position:absolute; z-index:-1; pointer-events:none;
  right:0; top:0; width:min(40vw,460px); height:410px;
  background:repeating-radial-gradient(ellipse at 95% 8%,transparent 0 54px,rgba(40,130,236,.12) 55px 57px,transparent 58px 94px);
  opacity:.48;
}
.page-heading { position:relative; z-index:1; }
.service-group { box-shadow:0 15px 36px rgba(22,71,125,.07); }
.org-cta--hero { margin:0 0 22px; border:1px solid #b8d9fc; background:linear-gradient(112deg,#e7f3ff,#f7fbff); box-shadow:0 12px 26px rgba(40,130,236,.08); }
.org-cta--hero .submit-button { background:#2882ec; box-shadow:0 7px 18px rgba(40,130,236,.18); }

@media(max-width:1250px) {
  .footer-inner { grid-template-columns:95px minmax(0,1fr); grid-template-areas:'logo nav' 'logo contacts' 'logo copy' 'logo policy'; gap:12px 25px; }
  .footer-contacts { justify-content:flex-start; }
  .footer-policy { text-align:left; }
}
@media(max-width:920px) {
  .legal-grid { grid-template-columns:1fr; }
  .legal-item + .legal-item { border-left:0; border-top:2px solid var(--outline); }
  .legal-item { padding:20px 14px; }
  .legal-item__details { grid-template-columns:repeat(2,minmax(0,1fr)); gap:15px; }
  .footer-inner { grid-template-columns:90px minmax(0,1fr); }
  .reviews-frame { grid-template-columns:minmax(0,1fr) 260px; }
  .reviews-side { padding:25px; }
  .reviews-side h3 { font-size:21px; }
}
@media(max-width:640px) {
  .legal-item__details { grid-template-columns:1fr; gap:7px; }
  .footer-inner { grid-template-columns:1fr; grid-template-areas:'logo' 'nav' 'contacts' 'copy' 'policy'; gap:12px; }
  .footer-brand { width:98px; }
  .footer-contacts { grid-area:contacts; }
  .footer-policy { text-align:left; }
  .reviews-frame { display:block; height:345px; }
  .reviews-widget { height:100%; }
  .reviews-side { display:none; }
  .request-modal { padding:18px 17px; max-height:calc(100dvh - 14px); }
  .request-modal h2 { font-size:22px; }
  .request-pair { grid-template-columns:1fr 1fr; gap:7px; }
  #request-form label, #snt-request-form label:not(.privacy-consent) { font-size:12px; }
  #request-form select { font-size:12px; padding:7px 5px; }
  .subscriber-login-modal { padding:24px 19px; }
  .org-cta--hero { padding:22px 18px; }
}
@media(max-height:680px) {
  .request-modal { padding-block:12px; }
  .request-modal h2 { font-size:20px; margin-bottom:8px; }
  #request-form, #snt-request-form { gap:5px; }
  #request-form input:not([type=checkbox]), #request-form select, #request-form textarea,
  #snt-request-form input:not([type=checkbox]), #snt-request-form textarea { padding-block:6px; min-height:32px; }
  #request-form textarea,#snt-request-form textarea { min-height:36px; }
  .request-modal .submit-button { min-height:35px; }
}


/* === 29.10: макет по уточнённому ТЗ === */
/* Телефон заметнее и ближе к середине промежутка между меню и входом. */
@media (min-width: 1101px) {
  .header-right { gap: clamp(21px,2.3vw,34px); }
  .header-phone { font-size:clamp(15px,1.18vw,18px); font-weight:700; margin-right:0; }
}

/* На широких экранах вернули первоначальное расположение:
   описание слева, карточки подключения - справа. */
@media (min-width: 1180px) {
  .connection-panel {
    grid-template-columns: minmax(205px, .77fr) minmax(0, 2.65fr);
    gap:clamp(18px,2vw,28px);
    padding:30px clamp(22px,2.2vw,35px);
    align-items:center;
  }
  .connection-description { display:block; align-self:start; padding-top:11px; }
  .connection-description h2 {
    max-width:280px;
    margin:0 0 23px;
    font-size:clamp(26px,2.15vw,35px);
    line-height:1.18;
    white-space:normal;
  }
  .connection-description p {
    max-width:235px;
    font-size:clamp(16px,1.28vw,20px);
    line-height:1.42;
  }
  .connection-panel > .carousel-shell { min-width:0; width:100%; }
  .connection-panel .option-grid { gap:clamp(10px,1.05vw,18px); }
  .connection-panel .option-card { padding-inline:clamp(8px,1vw,13px); }
  .connection-panel .option-card p { font-size:clamp(10px,.78vw,13px); }
}

/* Отзывы: ниже по высоте, без пустой полоски между виджетом и панелью. */
.reviews-frame { height:270px; grid-template-columns:minmax(0,1.7fr) minmax(230px,.86fr); }
.reviews-widget { overflow:hidden; }
.reviews-widget iframe { width:calc(100% + 45px); max-width:none; height:100%; }
.reviews-side { position:relative; z-index:1; margin-left:-40px; padding:18px clamp(17px,2.7vw,35px); }
.reviews-side h3 { margin:4px 0 9px; font-size:clamp(19px,1.65vw,25px); }
.reviews-side p { margin-bottom:12px; line-height:1.35; font-size:13px; }
.reviews-side a { font-size:13px; padding:10px 13px; }

/* Реквизиты стоят в той же отдельной секции, что и на главной. */
.inner-page { padding-bottom:clamp(34px,4vw,60px); }
.legal { position:relative; z-index:1; }

/* Новый фон внутренних страниц: тонкие линии связи и геометрические узлы
   вместо концентрических кругов и больших радиальных пятен. */
.inner-page {
  position:relative; isolation:isolate;
  background-color:#f7fbff;
  background-image:linear-gradient(180deg,rgba(248,251,255,.94),rgba(248,251,255,.68) 45%,rgba(255,255,255,.9)),url("images/inner-network.svg");
  background-size:cover,cover;
  background-position:center top,center top;
  background-repeat:no-repeat;
}
.inner-page::before { display:none; }

/* Окно входа - нормальные редактируемые поля. Отправка остаётся выключена
   в JS до подключения реального сервера авторизации. */
#subscriber-login-form input { background:#fff; color:var(--navy); outline-color:var(--blue); }
#subscriber-login-form input:disabled { cursor:text; }

@media (min-width:641px) and (max-width:1179px) {
  .connection-panel { grid-template-columns:1fr; }
  .connection-description { display:block; }
  .connection-description h2 { margin-bottom:12px; }
}
@media (max-width:920px) {
  .reviews-frame { height:265px; }
  .reviews-side { padding:14px 16px; }
  .reviews-side h3 { font-size:19px; }
}
@media (max-width:640px) {
  .reviews-frame { height:255px; }
  .reviews-widget iframe { width:100%; }
  .reviews-side { margin-left:0; }
  .connection-description { display:block; }
}


/* === Точечные исправления: мобильный телефон, отзывы, фон, футер === */
/* Внутренние страницы: чистый спокойный фон, без линий и абстрактных рисунков. */
.inner-page {
  background: #f7fbff;
  background-image: none;
}
.inner-page::before, .inner-page::after { display:none; }

/* Реквизиты и футер - один непрерывный нижний блок на всех страницах. */
.site-bottom { background:#EEF6FD; display:flow-root; }
.site-bottom .legal,
.site-bottom .site-footer { margin:0; }
.site-bottom .legal { border-bottom:0; }
.site-bottom .site-footer { border-top:2px solid #DDECFC; }

/* Один живой виджет Яндекса во всю ширину. Никаких перекрывающих слоёв. */
.reviews-heading { margin-bottom:18px; }
.reviews-frame {
  display:block;
  height:410px;
  overflow:hidden;
  background:#fff;
  border-radius:22px;
}
.reviews-widget { display:block; width:100%; height:100%; overflow:visible; position:relative; }
.reviews-widget iframe {
  display:block;
  width:100%; height:100%; max-width:100%;
  border:0; position:relative; z-index:1; pointer-events:auto;
}
/* Восстановление пароля пока не реализовано в существующей системе кабинета. */
.login-forgot { display:inline-block; cursor:default; text-decoration:none; }

/* Телефон сохраняется в мобильной шапке рядом с входом. */
@media (min-width:430px) and (max-width:640px) {
  .header-inner { gap:7px; }
  .header-identity { gap:5px; }
  .header-identity .brand { width:80px; }
  .header-city { font-size:10px; padding-inline:0; gap:2px; }
  .header-city img { width:15px; height:15px; }
  .header-right { display:flex; align-items:center; gap:7px; }
  .header-phone { display:inline-block; font-size:clamp(10px,2.6vw,12px); font-weight:700; margin:0; }
  .cabinet-login { font-size:12px; min-height:36px; padding-inline:12px; }
}
@media (max-width:429px) {
  .header-inner { display:grid; grid-template-columns:minmax(0,1fr) auto; column-gap:8px; row-gap:7px; }
  .header-identity { grid-column:1; grid-row:1; min-width:0; }
  .header-right { display:contents; }
  .cabinet-login { grid-column:2; grid-row:1; justify-self:end; }
  .header-phone { display:block; grid-column:1/-1; grid-row:2; justify-self:center; font-size:14px; font-weight:700; margin:0; padding:1px 6px 3px; }
  .main-nav { grid-column:1/-1; grid-row:3; justify-self:center; }
}
@media (max-width:640px) {
  .reviews-frame { height:405px; border-radius:17px; }
  .reviews-widget iframe { width:100%; }
}


/* === 29.10: виджет отзывов и одна строка мобильной шапки === */
/* Яндекс рисует собственный виджет ограниченной ширины. Вместо пустой
   половины страницы справа показываем исходный информационный блок. */
.reviews-frame {
  display:grid;
  grid-template-columns:minmax(0, 1.65fr) minmax(275px, .9fr);
  gap:0;
  height:440px;
  background:#fff;
  border-radius:22px;
  overflow:hidden;
}
.reviews-widget {
  display:block;
  width:100%;
  min-width:0;
  height:100%;
  overflow:hidden;
  background:#fff;
}
.reviews-widget iframe {
  display:block;
  width:100%;
  height:100%;
  max-width:none;
  border:0;
  position:static;
  pointer-events:auto;
}
.reviews-side {
  position:static;
  z-index:auto;
  margin:0;
  min-width:0;
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  justify-content:center;
  padding:clamp(20px,3vw,48px);
  border-left:1px solid var(--outline);
  background:linear-gradient(135deg,#edf5ff 0%,#f7faff 100%);
}
.reviews-side h3 {
  font:700 clamp(22px,2.05vw,32px)/1.22 var(--font-display);
  margin:0 0 16px;
}
.reviews-side p {
  font-size:clamp(14px,1vw,17px);
  line-height:1.5;
  color:var(--muted);
  margin:0;
}
/* Ссылка и кнопка под отзывами сознательно отсутствуют. */
@media (min-width:641px) and (max-width:1000px) {
  .reviews-frame { grid-template-columns:minmax(0,1.35fr) minmax(215px,.8fr); }
  .reviews-side { padding:20px; }
  .reviews-side h3 { font-size:21px; }
}
@media (max-width:640px) {
  .reviews-frame {
    display:flex;
    flex-direction:column;
    height:auto;
    min-height:0;
    border-radius:18px;
  }
  .reviews-widget { flex:0 0 385px; height:385px; }
  .reviews-widget iframe { width:100%; height:100%; }
  .reviews-side {
    display:flex;
    border-left:0;
    border-top:1px solid var(--outline);
    padding:22px 19px;
  }
  .reviews-side h3 { font-size:23px; margin-bottom:10px; }
  .reviews-side p { font-size:13px; }
}

/* Одна строка: логотип + город | номер + вход. Вторая строка — меню. */
@media (max-width:640px) {
  .header-inner {
    display:grid;
    grid-template-columns:minmax(0,1fr) auto;
    column-gap:5px;
    row-gap:9px;
    justify-content:stretch;
    align-items:center;
  }
  .header-identity {
    grid-column:1;
    grid-row:1;
    min-width:0;
    gap:5px;
    white-space:nowrap;
  }
  .header-identity .brand { width:clamp(62px,20vw,105px); min-width:clamp(62px,20vw,105px); }
  .header-city {
    padding:0;
    font-size:clamp(10px,2.3vw,13px);
    gap:2px;
  }
  .header-city img { width:14px; height:14px; }
  .header-right {
    display:flex;
    grid-column:2;
    grid-row:1;
    align-items:center;
    justify-content:flex-end;
    gap:5px;
    min-width:0;
    white-space:nowrap;
  }
  .header-phone {
    display:inline-flex;
    align-items:center;
    font-size:clamp(10px,2.65vw,13px);
    font-weight:700;
    padding:0;
    margin:0;
    white-space:nowrap;
  }
  .cabinet-login {
    min-height:34px;
    padding:0 10px;
    font-size:12px;
  }
  .main-nav {
    grid-column:1/-1;
    grid-row:2;
    justify-self:center;
    max-width:100%;
  }
}
@media (max-width:360px) {
  .header-identity { gap:3px; }
  .header-identity .brand { width:61px; min-width:61px; }
  .header-city { font-size:9px; gap:1px; }
  .header-city img { width:12px; height:12px; }
  .header-right { gap:3px; }
  .header-phone { font-size:10px; }
  .cabinet-login { font-size:11px; min-height:31px; padding-inline:7px; }
}

/* 29.10: Яндекс-виджет без лишней области справа.
   Исходная встраиваемая версия рассчитана на ~560px, поэтому на
   десктопе оставляем ему именно эту ширину, а не растягиваем iframe. */
@media (min-width:1001px) {
  .reviews-frame {
    grid-template-columns:minmax(0,560px) minmax(0,1fr);
  }
}
@media (min-width:641px) and (max-width:1000px) {
  .reviews-frame {
    grid-template-columns:minmax(0,56%) minmax(0,44%);
  }
}
.reviews-side { margin-left:0; }
.reviews-side h3 { margin:0; }


/* 29.10: содержательный блок рядом с расширенным виджетом отзывов. */
.reviews-side { gap:14px; }
.reviews-side h3 { margin:0 0 2px; }
.reviews-side p { font-size:clamp(14px,1vw,16px); line-height:1.55; margin:0; }
.reviews-side .reviews-side__contacts { font-weight:500; }
.reviews-side__contacts a {
  display:inline;
  padding:0;
  border:0;
  border-radius:0;
  background:none;
  color:var(--blue);
  box-shadow:none;
  font:inherit;
  font-weight:700;
  text-decoration:underline;
  text-underline-offset:3px;
  overflow-wrap:anywhere;
}
.reviews-side__contacts a:hover { color:var(--navy); }
/* Сам встроенный Яндекс-виджет имеет собственный максимум ширины.
   Увеличиваем его пропорционально, а не расширяем пустую область iframe. */
@media (min-width:1300px) {
  .reviews-frame { grid-template-columns:minmax(0,700px) minmax(0,1fr); }
  .reviews-widget iframe {
    width:560px;
    height:352px;
    transform:scale(1.25);
    transform-origin:top left;
  }
}
@media (min-width:1101px) and (max-width:1299px) {
  .reviews-frame { grid-template-columns:minmax(0,616px) minmax(0,1fr); }
  .reviews-widget iframe {
    width:560px;
    height:400px;
    transform:scale(1.1);
    transform-origin:top left;
  }
}
@media (max-width:1100px) {
  .reviews-widget iframe { transform:none; }
}
@media (max-width:640px) {
  .reviews-side { gap:12px; }
  .reviews-side h3 { margin:0; }
  .reviews-side p { font-size:13px; }
}
