/* =============================================================
   LOJAL BILPLEIE — COMPONENTS
   Подключается после base.css.
   Структура:
     1. Buttons (.btn, .btn-primary с corner-cut + sweep)
     2. Section heading (eyebrow + outline_text + heading_text)
     3. Info list (с lime square markers)
     4. Iconbox (icon + content inline)
     5. <mark> highlight
     6. Split-chars animation (char-by-char reveal)
     7. Form check (GDPR checkbox)
     8. Reveal-on-scroll
   ============================================================= */


/* ===========================================================
   1. BUTTONS — Bootstrap-совместимые классы (.btn, .btn-primary)
   плюс наш asymmetric corner-cut + sweep
   =========================================================== */

.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 14px 32px;
  font-family: var(--font-display);
  font-weight: var(--fw-bold);
  font-size: 14px;
  line-height: 1;
  text-transform: uppercase;
  letter-spacing: var(--tracking-wider);
  border: 2px solid transparent;
  border-radius: var(--btn-corner-cut) 0 var(--btn-corner-cut) 0;
  cursor: pointer;
  text-decoration: none;
  white-space: nowrap;
  user-select: none;
  text-align: center;
  vertical-align: middle;
  transition: background-color var(--t) var(--ease), border-color var(--t) var(--ease);
}

.btn_text { position: relative; z-index: 1; display: inline-block; }

/* Variants */
.btn-primary {
  background-color: var(--color-brand);
  color: var(--color-fg-inverse);
  border-color: var(--color-brand);
}
.btn-primary:active { background-color: var(--color-brand-active); }

.btn-outline {
  background-color: transparent;
  color: var(--color-brand);
  border-color: var(--color-brand);
}

.btn-ghost {
  background-color: transparent;
  color: var(--color-fg);
  border-color: var(--color-fg);
}
.btn-ghost:hover { background-color: var(--color-fg); color: var(--color-fg-inverse); }

/* Size modifiers */
.btn-lg { padding: 18px 40px; font-size: 15px; }
.btn-sm { padding: 10px 22px; font-size: 12px; }


/* ===========================================================
   2. SECTION HEADING — eyebrow + outline_text + heading_text
   Воспроизводит .section_heading из референса
   =========================================================== */

.section_heading {
  margin-bottom: 35px;
  position: relative;
}

.heading_text {
  font-family: var(--font-display);
  font-weight: var(--fw-bold);
  font-size: 40px;
  line-height: 55px;
  margin-bottom: 18px;
  color: var(--color-fg);
  letter-spacing: var(--tracking-tight);
}

@media (max-width: 991.98px) {
  .heading_text { font-size: 32px; line-height: 42px; }
}

.heading_description {
  font-family: var(--font-body);
  font-size: 18px;
  font-weight: 300;
  line-height: 26px;
  margin-bottom: 30px;
  color: var(--color-fg-muted);
}

/* Outline text — гигантская полая надпись на фоне.
   Полая = transparent fill + видимая обводка.
   Используем -webkit-text-stroke (Chrome/Safari/FF 130+) + fallback
   через text-shadow для старых движков. */
.outline_text {
  font-family: var(--font-display);
  font-weight: var(--fw-bold);
  text-transform: uppercase;
  color: #FFFFFF;
  -webkit-text-fill-color: #FFFFFF;
  -webkit-text-stroke-width: 0;
  -webkit-text-stroke-color: transparent;
  text-stroke-width: 0;
  text-stroke-color: transparent;
  display: block;
  letter-spacing: var(--tracking-tight);
  user-select: none;
  pointer-events: none;
  font-size: clamp(60px, 8vw, 140px);
  line-height: 1;
  margin-bottom: 10px;
  opacity: 0.9;
}

/* Sub_title — мелкая label-метка над h2 (как в KARAD) */
.sub_title {
  display: inline-block;
  font-family: var(--font-mono);
  font-size: 12px;
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: var(--tracking-widest);
  color: var(--color-brand);
  margin-bottom: 12px;
}


/* ===========================================================
   3. INFO LIST — список с lime square-маркерами
   =========================================================== */

.info_list {
  display: grid;
  grid-gap: 5px;
  max-width: 515px;
  margin-bottom: 30px;
  grid-template-columns: auto auto;
  list-style: none;
  padding: 0;
}

.info_list.unordered_list_block {
  grid-template-columns: 1fr;
  grid-gap: 12px;
}

.info_list li {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  font-family: var(--font-body);
  font-weight: 400;
  font-size: 14px;
  line-height: 1.5;
  color: var(--color-fg);
  text-transform: uppercase;
  letter-spacing: var(--tracking-wide);
}

.info_list .info_icon {
  flex-shrink: 0;
  width: 10px;
  height: 11px;
  margin-top: 6px;
  background: var(--color-brand);
  /* Слегка скошённый square — повторяет icon_square.svg KARAD */
  clip-path: polygon(0 25%, 75% 25%, 100% 0, 100% 75%, 25% 75%, 0 100%);
  display: inline-block;
}

.info_list .info_icon img { display: none; }   /* совместимость с реф-HTML */

.info_list .info_text { flex: 1; }


/* ===========================================================
   4. ICONBOX — icon + content inline (для контактов, телефонов)
   .iconbox_hotline из референса
   =========================================================== */

.iconbox_hotline {
  display: flex;
  align-items: center;
  gap: 16px;
  padding: 20px 0;
  border-top: 1px solid var(--color-border);
}

.iconbox_hotline .item_icon {
  flex-shrink: 0;
  width: 56px;
  height: 56px;
  display: flex;
  align-items: center;
  justify-content: center;
  border: 1px solid var(--color-brand);
  color: var(--color-brand);
  font-size: 22px;
}

.iconbox_hotline .item_icon svg { width: 24px; height: 24px; }

.iconbox_hotline .item_content { display: flex; flex-direction: column; gap: 4px; }

.iconbox_hotline .item_title {
  font-family: var(--font-mono);
  font-size: 12px;
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: var(--tracking-widest);
  color: var(--color-fg-subtle);
  margin: 0;
}

.iconbox_hotline .hotline_number {
  font-family: var(--font-display);
  font-weight: var(--fw-bold);
  font-size: 22px;
  color: var(--color-fg);
}

.iconbox_hotline .hotline_number:hover { color: var(--color-brand); }


/* ===========================================================
   5. <mark> — lime highlight для чисел/акцентов в заголовках
   =========================================================== */

mark {
  background: transparent;
  color: var(--color-brand);
  padding: 0 4px;
  /* Подчёркивающая lime-полоса снизу — лёгкий акцент */
  background-image: linear-gradient(transparent 80%, rgba(var(--color-brand-rgb), 0.28) 80%);
}


/* ===========================================================
   6. SPLIT-CHARS — char-by-char reveal анимация заголовков
   JS оборачивает каждый символ в <span class="char">,
   .is-visible на родителе запускает stagger через transition-delay.
   =========================================================== */

.split-chars .char {
  display: inline-block;
  opacity: 0;
  transform: translateY(0.5em);
  transition: opacity 0.6s var(--ease), transform 0.6s var(--ease);
  white-space: pre;            /* сохраняем пробелы внутри char */
}

.split-chars.is-visible .char {
  opacity: 1;
  transform: translateY(0);
}

.split-chars .char.is-space {
  /* Явная ширина пробела — не зависит от того, схлопывает ли браузер
     текстовый пробел внутри inline-block. */
  width: 0.28em;
  white-space: normal;
}

@media (prefers-reduced-motion: reduce) {
  .split-chars .char {
    opacity: 1;
    transform: none;
    transition: none;
  }
}


/* ===========================================================
   7. FORM CHECK (GDPR consent checkbox)
   =========================================================== */

.form-check {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  margin-bottom: 8px;
  position: relative;
}

.form-check-input {
  appearance: none;
  -webkit-appearance: none;
  width: 18px;
  height: 18px;
  min-width: 18px;
  margin-top: 2px;
  border: 1.5px solid var(--color-border-strong);
  background-color: var(--color-bg-inset);
  cursor: pointer;
  position: relative;
  flex-shrink: 0;
  transition: all var(--t) var(--ease);
}

.form-check-input:checked {
  background-color: var(--color-brand);
  border-color: var(--color-brand);
}

.form-check-input:checked::after {
  content: '';
  position: absolute;
  inset: 3px;
  background: var(--color-fg-inverse);
  clip-path: polygon(14% 44%, 0 65%, 50% 100%, 100% 16%, 80% 0%, 43% 62%);
}

.form-check-input:focus-visible {
  box-shadow: 0 0 0 3px rgba(var(--color-brand-rgb), 0.30);
}

.form-check-label {
  font-family: var(--font-body);
  font-size: 13px;
  font-weight: 400;
  line-height: 1.5;
  color: var(--color-fg-muted);
  cursor: pointer;
}

.form-check-label a {
  color: var(--color-brand);
  text-decoration: underline;
  text-underline-offset: 2px;
}


/* ===========================================================
   8. REVEAL-ON-SCROLL — IntersectionObserver-driven
   =========================================================== */

.reveal,
.wow {
  opacity: 0;
  transform: translateY(24px);
  transition: opacity 0.6s var(--ease), transform 0.6s var(--ease);
}

.reveal.is-visible,
.wow.is-visible,
.wow.animated {
  opacity: 1;
  transform: translateY(0);
}

.reveal--delay-1, .wow--delay-1 { transition-delay: 100ms; }
.reveal--delay-2, .wow--delay-2 { transition-delay: 200ms; }
.reveal--delay-3, .wow--delay-3 { transition-delay: 300ms; }

@media (prefers-reduced-motion: reduce) {
  .reveal, .wow {
    opacity: 1;
    transform: none;
    transition: none;
  }
}
