/**
 * base-app.css
 * Базовые стили приложения: layout, navbar, sidebar, кнопки, feed-элементы
 * 
 * Зависимости: variables.css (все переменные размеров, цветов, теней)
 */

:root {
  --bs-primary: #007AFF;
  --bs-link-color: var(--bs-primary);
  --bs-link-hover-color: #0062CC;
}

[data-bs-theme="dark"] {
  --bs-body-bg: #1C1C1E;
  --bs-body-color: #F2F2F7;
  --bs-border-color: #3A3A3C;
  --bs-tertiary-bg: #2C2C2E;
  --bs-primary: #0A84FF;
  --bs-link-color: var(--bs-primary);
  --bs-link-hover-color: #59AFFF;
}

body {
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
  font-size: 17px;
  padding-top: var(--navbar-h);
  overflow-x: hidden;
  background-color: var(--bs-body-bg);
}

@supports(padding-top: env(safe-area-inset-top)) {
  body {
    padding-top: calc(var(--navbar-h) + env(safe-area-inset-top));
  }
}

.btn {
  border-radius: 10px;
  min-height: 44px;
  transition: background-color .3s, transform .1s;
}

.btn:hover {
  transform: scale(1.02);
}

.form-control {
  border-radius: 10px;
  height: 44px;
  font-size: 17px;
}

.form-control:focus {
  box-shadow: 0 0 0 2px rgba(var(--bs-primary-rgb), .25);
  border-color: var(--bs-primary);
}

.dropdown-menu {
  border-radius: 13px;
  box-shadow: 0 6px 24px rgba(0, 0, 0, .12);
}

/* ─────────────────────────────────────────────────────────────
   NAVBAR
────────────────────────────────────────────────────────────── */
.app-navbar {
  position: fixed;
  inset: 0 0 auto 0;
  z-index: 1030;
  border-bottom: .5px solid var(--bs-border-color);
}

/* ─────────────────────────────────────────────────────────────
   LAYOUT
────────────────────────────────────────────────────────────── */
.app-layout {
  display: block;
}

/* Адаптивный контейнер для контента внутри main 
   Работает как обычный Bootstrap container, но адаптируется к grid-layout */
.content-container {
  width: 100%;
  margin-left: auto;
  margin-right: auto;
}

/* На мобильных - ведет себя как обычный container */
@media (max-width: 991.98px) {
  .content-container {
    padding-left: var(--bs-gutter-x, 0.75rem);
    padding-right: var(--bs-gutter-x, 0.75rem);
  }
}

@media (min-width: 992px) {
  /* При наличии grid-layout (с сайдбарами) - убираем padding и max-width */
  .app-layout.with-sidebar .content-container,
  .app-layout.with-rightbar .content-container {
    max-width: none;
    padding-left: 0;
    padding-right: 0;
  }
  
  /* Grid layout для аутентифицированных пользователей */
  .app-layout.with-sidebar.with-rightbar {
    display: grid;
    grid-template-columns: var(--sidebar-w) 1fr var(--rightbar-w);
    gap: var(--layout-gap);
    align-items: start;
  }

  .app-layout.with-sidebar:not(.with-rightbar) {
    display: grid;
    grid-template-columns: var(--sidebar-w) 1fr;
    gap: var(--layout-gap);
    align-items: start;
  }
  
  /* Если нет сайдбаров - применяем стандартные max-width и padding */
  .app-layout:not(.with-sidebar):not(.with-rightbar) .content-container {
    padding-left: var(--bs-gutter-x, 0.75rem);
    padding-right: var(--bs-gutter-x, 0.75rem);
    max-width: 960px;
  }
}

@media (min-width: 1200px) {
  .app-layout:not(.with-sidebar):not(.with-rightbar) .content-container {
    max-width: 1140px;
  }
}

@media (min-width: 1400px) {
  .app-layout:not(.with-sidebar):not(.with-rightbar) .content-container {
    max-width: 1320px;
  }
}

/* Компенсация для .row внутри .content-container при grid-layout */
@media (min-width: 992px) {
  .app-layout.with-sidebar .content-container > .row,
  .app-layout.with-rightbar .content-container > .row {
    margin-left: 0;
    margin-right: 0;
  }
  
  /* Убираем gutter для прямых колонок в row, чтобы не было переполнения */
  .app-layout.with-sidebar .content-container > .row > [class*="col-"],
  .app-layout.with-rightbar .content-container > .row > [class*="col-"] {
    padding-left: calc(var(--bs-gutter-x) * 0.5);
    padding-right: calc(var(--bs-gutter-x) * 0.5);
  }
  
  /* Принудительная коррекция для .card внутри колонок */
  .app-layout.with-sidebar .container > .row > [class*="col-"] > .card,
  .app-layout.with-rightbar .container > .row > [class*="col-"] > .card,
  .app-layout.with-sidebar .container > .row > [class*="col-"] > section.card,
  .app-layout.with-rightbar .container > .row > [class*="col-"] > section.card {
    max-width: 100%;
    min-width: 0;
    overflow: hidden;
  }
}

/* ─────────────────────────────────────────────────────────────
   SIDEBAR
────────────────────────────────────────────────────────────── */
#sidebar {
  --bs-offcanvas-width: var(--sidebar-w);
  border-radius: 0 13px 13px 0;
}

@media (min-width: 992px) {
  #sidebar.offcanvas-lg {
    position: sticky;
    top: var(--navbar-h);
    height: calc(100dvh - var(--navbar-h));
    align-self: start;
    overflow: auto;
    border-right: .5px solid var(--bs-border-color);
    background: var(--bs-body-bg);
    transform: none !important;
    visibility: visible !important;
  }
}

/* ─────────────────────────────────────────────────────────────
   NOTIFICATION BELL
────────────────────────────────────────────────────────────── */
.bell-wrapper {
  position: relative;
  line-height: 1;
  display: inline-block;
}

.bell-dot {
  position: absolute;
  top: -2px;
  right: -2px;
  width: 9px;
  height: 9px;
  border-radius: 999px;
  background: var(--bs-danger);
  color: #fff;
  font-size: 7px;
  line-height: 9px;
  font-weight: 700;
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 0 0 1px rgba(255, 255, 255, .65);
}

/* ─────────────────────────────────────────────────────────────
   MOBILE FAB (REMOVED - now using navbar button)
────────────────────────────────────────────────────────────── */
/* .calendar-fab {
  position: fixed;
  right: 1rem;
  bottom: 1rem;
  z-index: 1060;
  width: 52px;
  height: 52px;
  border-radius: 9999px;
  box-shadow: 0 8px 24px rgba(0, 0, 0, .18);
} */


/* ─────────────────────────────────────────────────────────────
   BUTTONS & GHOST BUTTONS
────────────────────────────────────────────────────────────── */
.btn-ghost {
  background: color-mix(in srgb, var(--bs-body-bg) 94%, transparent);
  color: var(--bs-body-color);
  padding: var(--space-1);
  border-radius: 999px;
  font-size: .9rem;
}

.btn-ghost:hover {
  background: color-mix(in srgb, var(--bs-body-bg) 88%, transparent);
}

.btn-ghost .bi {
  font-size: 1rem;
  margin-right: .35rem;
  vertical-align: -2px;
}

/* ─────────────────────────────────────────────────────────────
   FEED ELEMENTS
────────────────────────────────────────────────────────────── */
/* «Новые сотрудники» и другие информационные блоки */
.feed-new {
  border-radius: var(--feed-radius);
  border: 1px solid color-mix(in srgb, var(--bs-border-color), transparent 10%);
  background: var(--bs-body-bg);
  box-shadow: var(--feed-shadow);
  padding: var(--card-padding);  /* 16px со всех сторон - унифицировано */
}

/* stretched-link не перекрывает футер/формы */
.card-body .stretched-link::after,
.feed-img .stretched-link::after {
  z-index: 1;
}

.collapse {
  position: relative;
  z-index: 2;
}

/* подпись «Скрыть/число» у кнопки комментариев по aria-expanded */
.btn-ghost .txt-close {
  display: none;
}

.btn-ghost[aria-expanded="true"] .txt-open {
  display: none;
}

.btn-ghost[aria-expanded="true"] .txt-close {
  display: inline;
}

/* ─────────────────────────────────────────────────────────────
   ALPHA HEADERS (буквенные разделители)
────────────────────────────────────────────────────────────── */
.alpha-header {
  position: sticky;
  top: calc(var(--navbar-h) + var(--space-1));  /* +8px - унифицировано */
  z-index: 1;
  background: color-mix(in srgb, var(--bs-body-bg) 92%, transparent);
  backdrop-filter: blur(6px);
  border: 1px solid color-mix(in srgb, var(--bs-border-color), transparent 30%);
  color: var(--bs-secondary-color);
  display: inline-flex;
  align-items: center;
  gap: var(--space-1);          /* 8px - унифицировано */
  padding: var(--space-1);      /* 8px - унифицировано */
  border-radius: 999px;
  font-weight: 700;
  font-size: .85rem;
  margin: var(--space-1) 0 var(--space-1) var(--space-1);  /* 8px отступы */
}

.alpha-dot {
  width: 6px;
  height: 6px;
  border-radius: 999px;
  background: var(--bs-primary);
  opacity: .6;
}

/* ─────────────────────────────────────────────────────────────
   ACTION BUTTONS
────────────────────────────────────────────────────────────── */
.action-btn {
  min-height: unset;
  padding: var(--space-1);  /* 8px - унифицировано */
}

.action-btn .bi {
  font-size: 1rem;
}

/* ─────────────────────────────────────────────────────────────
   TEXT UTILITIES
────────────────────────────────────────────────────────────── */
/* Переносим длинные слова/ссылки, сохраняем переносы строк */
.feed-text,
.feed-full {
  overflow-wrap: anywhere;
  width: 100%;
  margin-right: 0;
  padding-right: 0;
}

/* чтобы кнопка «Подробнее» не была перекрыта stretched-link */
.readmore-toggle {
  position: relative;
  z-index: 2;
}
