/* ==========================================================================
   НОВОСТИ: публичная страница, колокольчик в шапке, админ-вкладка,
   карточка «Последние новости» на главной.

   Раньше эти стили жили внутри JS-модулей (инжект <style> при init).
   Собраны здесь, чтобы:
    • не дублировать семантические цвета в трёх местах;
    • не мигало оформление при первом рендере;
    • было видно всё в одном файле.
   ========================================================================== */

/* ==========================================================================
   1. Общие семантические бейджи (news-badge, news-importance)
   ========================================================================== */
.news-badge {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: 11px;
  font-weight: 600;
  padding: 2px 8px;
  border-radius: 10px;
  text-transform: uppercase;
  letter-spacing: 0.4px;
  white-space: nowrap;
}
.news-badge--info {
  background: var(--hover-tint);
  color: var(--primary);
}
.news-badge--warning {
  background: var(--sem-warning-bg);
  color: var(--sem-warning-text);
}
.news-badge--critical {
  background: var(--sem-error-bg);
  color: var(--sem-error-text);
}
.news-badge--ok {
  background: var(--sem-success-soft);
  color: var(--sem-success-text);
}
.news-badge--draft {
  background: var(--sem-muted-bg);
  color: var(--sem-muted-text);
}
.news-badge--sent {
  background: var(--sem-info-bg);
  color: var(--sem-info-text);
}
.news-badge--pending {
  background: var(--sem-warning-bg);
  color: var(--sem-warning-text);
}
.news-badge--tag {
  background: var(--tint-bg);
  color: var(--text-light);
  text-transform: none;
  letter-spacing: 0;
}

.news-importance {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  font-size: 11px;
  font-weight: 700;
  padding: 3px 9px;
  border-radius: 10px;
  text-transform: uppercase;
  letter-spacing: 0.6px;
  line-height: 1.2;
}
.news-importance[data-level="info"]     { background: var(--hover-tint);     color: var(--primary); }
.news-importance[data-level="warning"]  { background: var(--sem-warning-bg); color: var(--sem-warning-text); }
.news-importance[data-level="critical"] { background: var(--sem-error-bg);   color: var(--sem-error-text); }

/* ==========================================================================
   2. Публичная страница /news.html
   ========================================================================== */
.news-page {
  max-width: 1400px;
  margin: 0 auto;
  padding: clamp(20px, 3vw, 40px) clamp(16px, 3vw, 32px);
}

.news-toolbar {
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
  align-items: center;
  margin-bottom: 22px;
}
.news-search {
  flex: 1 1 260px;
  min-width: 0;
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 0 18px;
  background: var(--surface);
  border-radius: 26px;
  box-shadow: var(--shadow);
}
.news-search i { color: var(--text-light); font-size: 14px; }
.news-search input {
  flex: 1 1 auto;
  min-width: 0;
  border: none;
  background: transparent;
  padding: 13px 0;
  font-family: inherit;
  font-size: 14px;
  color: var(--text);
  outline: none;
}
.news-select {
  padding: 12px 18px;
  border-radius: 26px;
  border: 1px solid var(--input-border);
  background: var(--input-bg);
  color: var(--input-text);
  font-family: inherit;
  font-size: 13px;
  cursor: pointer;
  outline: none;
}
.news-select:focus { border-color: var(--primary); }

#news-bulk-toggle.active,
#na-bulk-toggle.active {
  background: var(--primary);
  color: var(--surface);
  border-color: var(--primary);
}

/* ---------- Сетка карточек ---------- */
.news-list {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: clamp(16px, 1.8vw, 24px);
  align-items: stretch;
}
@media (max-width: 900px) {
  .news-list { grid-template-columns: 1fr; }
}

.news-card {
  position: relative;
  display: flex;
  flex-direction: column;
  background: var(--surface);
  border-radius: 14px;
  box-shadow: var(--shadow);
  border-left: 4px solid var(--primary);
  cursor: pointer;
  overflow: hidden;
  transition: transform 0.2s, box-shadow 0.2s;
  min-width: 0;
}
.news-card:hover {
  transform: translateY(-3px);
  box-shadow: var(--shadow-hover);
}
.news-card[data-importance="warning"] { border-left-color: var(--sem-warning); }
.news-card[data-importance="critical"] { border-left-color: var(--sem-error); }

.news-card.is-selected {
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--primary) 60%, transparent), var(--shadow);
}
.news-card .mat-card-checkbox {
  position: absolute;
  top: 10px;
  left: 10px;
  z-index: 5;
}

.news-card-cover {
  width: 100%;
  height: clamp(150px, 16vw, 210px);
  background-size: cover;
  background-position: center;
  background-color: var(--hover-tint);
  flex-shrink: 0;
}
.news-card-cover--empty {
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 44px;
  color: var(--primary);
  background: var(--hover-tint);
}
.news-card-cover--empty[data-level="warning"] {
  background: var(--sem-warning-bg);
  color: var(--sem-warning-text);
}
.news-card-cover--empty[data-level="critical"] {
  background: var(--sem-error-bg);
  color: var(--sem-error-text);
}

.news-card-body {
  padding: 16px 20px 20px;
  display: flex;
  flex-direction: column;
  gap: 10px;
  flex: 1 1 auto;
  min-width: 0;
}
.news-card-head {
  display: flex;
  gap: 10px;
  align-items: center;
  flex-wrap: wrap;
}
.news-card-date {
  font-size: 12px;
  color: var(--text-light);
  margin-left: auto;
}
.news-card-draft {
  font-size: 10.5px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.5px;
  background: var(--tint-bg);
  color: var(--text-light);
  padding: 2px 8px;
  border-radius: 10px;
}
.news-card-title {
  font-size: 17px;
  font-weight: 700;
  color: var(--text);
  margin: 0;
  line-height: 1.3;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.news-card-excerpt {
  font-size: 13.5px;
  color: var(--text-light);
  line-height: 1.5;
  margin: 0;
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.news-card-tags {
  display: flex;
  gap: 5px;
  flex-wrap: wrap;
  margin-top: auto;
}
.news-card-tags .mat-tag { font-size: 11px; }

.news-card-actions {
  position: absolute;
  top: 10px;
  right: 10px;
  display: flex;
  gap: 6px;
  z-index: 2;
}
.news-card-actions button {
  width: 32px;
  height: 32px;
  border-radius: 50%;
  border: none;
  cursor: pointer;
  color: var(--icon-btn-color);
  background: var(--icon-btn-primary-bg);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 12px;
  padding: 0;
  transition: background 0.15s, transform 0.15s;
}
.news-card-actions button[data-action="delete"] {
  background: var(--icon-btn-danger-bg);
}
.news-card-actions button:hover {
  transform: scale(1.08);
  background: var(--icon-btn-primary-hover);
}
.news-card-actions button[data-action="delete"]:hover {
  background: var(--icon-btn-danger-hover);
}

@media (max-width: 640px) {
  .news-toolbar { flex-direction: column; align-items: stretch; }
  .news-select { width: 100%; }
  .news-card-body { padding: 14px 16px 16px; }
  .news-card-title { font-size: 16px; }
}

/* ==========================================================================
   3. Модалка деталей новости (общая для index.html и news.html)
   ========================================================================== */
.swal2-popup.news-detail-modal .swal2-title {
  display: none !important;
  padding: 0 !important;
  margin: 0 !important;
}
.swal2-popup.news-detail-modal {
  width: min(720px, 94vw) !important;
  padding: 24px 28px 26px !important;
  border-radius: 18px !important;
  text-align: left;
}
.swal2-popup.news-detail-modal .swal2-html-container {
  margin: 0 !important;
  padding: 0 !important;
  overflow: visible !important;
}
.swal2-popup.news-detail-modal .swal2-close {
  top: 12px;
  right: 14px;
  color: var(--text-light);
}
.swal2-popup.news-detail-modal .swal2-close:hover { color: var(--primary); }

.news-detail { text-align: left; }
.news-detail-title {
  color: var(--primary);
  margin: 0 0 10px;
  padding-right: 44px;
  font-family: 'Montserrat', sans-serif;
  font-size: 22px;
  line-height: 1.3;
  font-weight: 700;
}
.news-detail-meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  font-size: 12px;
  color: var(--text-light);
  margin: 0 0 18px;
  padding-bottom: 14px;
  border-bottom: 1px dashed var(--divider);
}
.news-detail-sep { opacity: 0.5; }
.news-detail-date,
.news-detail-author { font-size: 12px; }
.news-detail-cover {
  width: 100%;
  max-height: 340px;
  border-radius: 12px;
  overflow: hidden;
  margin: 0 0 18px;
}
.news-detail-cover img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.news-detail-content {
  font-size: 15px;
  color: var(--text);
  line-height: 1.65;
}
.news-detail-content p { margin: 0 0 12px; }
.news-detail-content h1 { font-size: 1.5em;  margin: 16px 0 10px; color: var(--primary); }
.news-detail-content h2 { font-size: 1.4em;  margin: 16px 0 10px; color: var(--primary); }
.news-detail-content h3 { font-size: 1.15em; margin: 14px 0 8px; }
.news-detail-content ul,
.news-detail-content ol { padding-left: 24px; margin: 8px 0; }
.news-detail-content li { margin: 3px 0; }
.news-detail-content img {
  max-width: 100%;
  height: auto;
  border-radius: 8px;
  margin: 8px 0;
}
.news-detail-content blockquote {
  margin: 12px 0;
  padding: 10px 16px;
  border-left: 3px solid var(--primary);
  background: var(--tint-bg);
  font-style: italic;
  color: var(--text-light);
  border-radius: 0 6px 6px 0;
}
.news-detail-content > :first-child { margin-top: 0; }
.news-detail-content > :last-child  { margin-bottom: 0; }
.news-detail-tags {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
  margin-top: 18px;
  padding-top: 14px;
  border-top: 1px dashed var(--divider);
}
@media (max-width: 640px) {
  .swal2-popup.news-detail-modal { padding: 20px 18px 18px !important; }
  .news-detail-title { font-size: 19px; padding-right: 36px; }
}

/* ==========================================================================
   4. Колокольчик (панель в шапке) — /api/news виджет
   ========================================================================== */
.news-widget-panel {
  position: fixed;
  top: 72px;
  right: 20px;
  width: min(400px, calc(100vw - 40px));
  max-height: min(560px, calc(100vh - 100px));
  background: var(--surface);
  border: 1px solid var(--divider);
  border-radius: 16px;
  box-shadow: var(--shadow);
  z-index: var(--z-news-widget);
  display: flex;
  flex-direction: column;
  overflow: hidden;
  animation: news-panel-in 0.2s ease;
}
.news-widget-panel[hidden] { display: none; }
@keyframes news-panel-in {
  from { opacity: 0; transform: translateY(-6px) scale(0.98); }
  to   { opacity: 1; transform: translateY(0) scale(1); }
}

.news-widget-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 14px 18px;
  background: var(--primary);
  color: var(--surface);
  flex-shrink: 0;
}
.news-widget-header-title {
  display: flex;
  align-items: center;
  gap: 10px;
  font-family: 'Montserrat', sans-serif;
  font-size: 14px;
  font-weight: 600;
}
.news-widget-all {
  font-size: 12.5px;
  color: var(--surface);
  text-decoration: none;
  opacity: 0.85;
  padding: 4px 10px;
  border-radius: 12px;
  transition: background 0.15s;
}
.news-widget-all:hover {
  background: rgba(255, 255, 255, 0.15);
  opacity: 1;
}

.news-widget-list {
  flex: 1 1 auto;
  min-height: 0;
  overflow-y: auto;
  scrollbar-width: thin;
}
.news-widget-list::-webkit-scrollbar { width: 6px; }
.news-widget-list::-webkit-scrollbar-thumb {
  background: var(--divider);
  border-radius: 3px;
}

.news-widget-item {
  display: grid;
  grid-template-columns: 36px minmax(0, 1fr);
  gap: 12px;
  width: 100%;
  padding: 12px 16px;
  border: none;
  background: transparent;
  cursor: pointer;
  text-align: left;
  border-bottom: 1px solid var(--divider);
  font-family: inherit;
  transition: background 0.15s;
}
.news-widget-item:last-child { border-bottom: none; }
.news-widget-item:hover { background: var(--hover-tint); }

.news-widget-icon {
  width: 36px;
  height: 36px;
  border-radius: 10px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 15px;
  flex-shrink: 0;
}
.news-widget-icon[data-level="info"]     { background: var(--hover-tint);     color: var(--primary); }
.news-widget-icon[data-level="warning"]  { background: var(--sem-warning-bg); color: var(--sem-warning-text); }
.news-widget-icon[data-level="critical"] { background: var(--sem-error-bg);   color: var(--sem-error-text); }

.news-widget-body {
  display: flex;
  flex-direction: column;
  gap: 3px;
  min-width: 0;
}
.news-widget-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
}
.news-widget-importance {
  font-size: 10px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.5px;
  color: var(--text-light);
}
.news-widget-importance[data-level="warning"]  { color: var(--sem-warning-text); }
.news-widget-importance[data-level="critical"] { color: var(--sem-error-text); }

.news-widget-date {
  font-size: 10.5px;
  color: var(--text-light);
  flex-shrink: 0;
}
.news-widget-title {
  font-size: 13.5px;
  font-weight: 600;
  color: var(--text);
  line-height: 1.35;
  overflow: hidden;
  text-overflow: ellipsis;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
}

.news-widget-empty,
.news-widget-loading {
  padding: 40px 20px;
  text-align: center;
  color: var(--text-light);
  font-style: italic;
  font-size: 13.5px;
}
.news-widget-empty i {
  font-size: 28px;
  color: var(--primary);
  opacity: 0.35;
  display: block;
  margin-bottom: 10px;
}

@media (max-width: 640px) {
  .news-widget-panel {
    top: 60px;
    right: 8px;
    left: 8px;
    width: auto;
  }
}

/* ==========================================================================
   5. Админ-вкладка «Новости» — /admin.html?tab=news
   ========================================================================== */
.news-admin-toolbar {
  display: flex;
  gap: 12px;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 20px;
}
.news-admin-filters {
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
  flex: 1 1 260px;
  align-items: center;
}
.news-admin-filters .form-input {
  flex: 1 1 140px;
  min-width: 0;
  padding: 10px 14px;
  border-radius: 20px;
  border: 1px solid var(--input-border);
  background: var(--input-bg);
  color: var(--input-text);
  font-family: inherit;
  font-size: 13px;
  outline: none;
}
.news-admin-filters .form-input:focus { border-color: var(--primary); }

.news-admin-list {
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.news-admin-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 14px;
  padding: 14px 18px;
  background: var(--surface);
  border-radius: 12px;
  border-left: 4px solid var(--primary);
  box-shadow: var(--shadow);
  align-items: center;
  position: relative;
  transition: box-shadow 0.15s, transform 0.15s;
}
.news-admin-row--bulk {
  cursor: pointer;
  grid-template-columns: 40px minmax(0, 1fr);
  padding-left: 12px;
}
.news-admin-row.is-selected {
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--primary) 60%, transparent), var(--shadow);
}
.news-admin-row .mat-card-checkbox {
  position: static;
  background: transparent;
  backdrop-filter: none;
  border: none;
  width: auto;
  height: auto;
}

.news-admin-body { min-width: 0; }
.news-admin-title {
  font-size: 15px;
  font-weight: 700;
  color: var(--text);
  margin-bottom: 6px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.news-admin-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  align-items: center;
  margin-bottom: 4px;
}
.news-admin-date {
  font-size: 11.5px;
  color: var(--text-light);
}
.news-admin-excerpt {
  font-size: 12.5px;
  color: var(--text-light);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.news-admin-actions {
  display: flex;
  gap: 6px;
  flex-shrink: 0;
}
.news-admin-actions .btn {
  padding: 8px 12px;
  font-size: 12px;
  border-radius: 20px;
}
.news-admin-btn-danger {
  border-color: var(--sem-error) !important;
  color: var(--sem-error-text) !important;
}
.news-admin-btn-danger:hover {
  background: var(--sem-error) !important;
  color: #fff !important;
}

/* Выбор важности в модалке */
.news-importance-picker {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 8px;
}
.news-importance-opt {
  position: relative;
  display: block;
  cursor: pointer;
}
.news-importance-opt input {
  position: absolute;
  opacity: 0;
  pointer-events: none;
}
.news-importance-body {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
  padding: 12px 10px;
  background: var(--surface);
  border: 1.5px solid var(--divider);
  border-radius: 12px;
  font-size: 13px;
  font-weight: 600;
  color: var(--text);
  transition: border-color 0.15s, background 0.15s, box-shadow 0.15s;
}
.news-importance-body i { font-size: 18px; }
.news-importance-opt:hover .news-importance-body {
  border-color: var(--primary);
}
.news-importance-opt--info input:checked ~ .news-importance-body {
  border-color: var(--primary);
  color: var(--primary);
  background: linear-gradient(0deg, var(--hover-tint), var(--hover-tint)), var(--surface);
  box-shadow: 0 4px 14px color-mix(in srgb, var(--primary) 15%, transparent);
}
.news-importance-opt--warning input:checked ~ .news-importance-body {
  border-color: var(--sem-warning);
  color: var(--sem-warning-text);
  background: var(--sem-warning-bg);
  box-shadow: 0 4px 14px color-mix(in srgb, var(--sem-warning) 20%, transparent);
}
.news-importance-opt--critical input:checked ~ .news-importance-body {
  border-color: var(--sem-error);
  color: var(--sem-error-text);
  background: var(--sem-error-bg);
  box-shadow: 0 4px 14px color-mix(in srgb, var(--sem-error) 20%, transparent);
}

/* Блок рассылки в модалке */
.news-broadcast-block {
  padding: 14px 16px;
  background: var(--tint-bg);
  border: 1px dashed var(--divider);
  border-radius: 10px;
  display: flex;
  flex-direction: column;
  gap: 10px;
  margin-top: 4px;
}
.news-broadcast-title {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 13px;
  font-weight: 700;
  color: var(--primary);
  text-transform: uppercase;
  letter-spacing: 0.6px;
}
.news-broadcast-channels {
  display: flex;
  gap: 14px;
  flex-wrap: wrap;
  padding-left: 20px;
}
.news-broadcast-sent {
  font-size: 12.5px;
  color: var(--sem-success-text);
  display: flex;
  align-items: center;
  gap: 6px;
}

@media (max-width: 640px) {
  .news-admin-row { grid-template-columns: 1fr; }
  .news-admin-row--bulk { grid-template-columns: 40px minmax(0, 1fr); }
  .news-admin-actions { justify-content: flex-end; }
  .news-importance-picker { grid-template-columns: 1fr; }
}

.news-admin-empty {
  text-align: center;
  padding: 40px;
  color: var(--text-light);
  font-style: italic;
}
.news-admin-bulk-del {
  background: var(--sem-error) !important;
  color: #fff !important;
  border-color: var(--sem-error) !important;
}
.news-admin-bulk-del:hover {
  background: color-mix(in srgb, var(--sem-error) 80%, black) !important;
}

/* ==========================================================================
   6. Карточка «Последние новости» на главной (index.html)
   ========================================================================== */
.idx-news-loading,
.idx-news-empty {
  text-align: center;
  font-size: 13px;
  color: var(--text-light);
  font-style: italic;
  padding: 24px 10px;
}
.idx-news-empty i {
  font-size: 22px;
  color: var(--primary);
  opacity: 0.4;
  display: block;
  margin-bottom: 8px;
}

.idx-news-item {
  display: flex;
  gap: 15px;
  width: 100%;
  padding: 0 0 18px;
  margin-bottom: 18px;
  border: none;
  border-bottom: 1px solid var(--divider);
  background: transparent;
  text-align: left;
  font-family: inherit;
  cursor: pointer;
  transition: transform 0.15s ease;
  min-width: 0;
}
.idx-news-item:last-child {
  border-bottom: none;
  margin-bottom: 0;
  padding-bottom: 0;
}
.idx-news-item:hover { transform: translateX(3px); }
.idx-news-item:hover .idx-news-title { color: var(--primary); }

.idx-news-img {
  width: clamp(60px, 6vw, 80px);
  height: clamp(60px, 6vw, 80px);
  border-radius: 8px;
  object-fit: cover;
  flex-shrink: 0;
  display: block;
}
.idx-news-img--placeholder {
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 22px;
  background: var(--hover-tint);
  color: var(--primary);
}
.idx-news-img--placeholder[data-level="warning"] {
  background: var(--sem-warning-bg);
  color: var(--sem-warning-text);
}
.idx-news-img--placeholder[data-level="critical"] {
  background: var(--sem-error-bg);
  color: var(--sem-error-text);
}

.idx-news-content {
  min-width: 0;
  flex: 1 1 auto;
}
.idx-news-date {
  display: block;
  font-size: var(--fs-xs, 12px);
  color: var(--text-light);
  margin-bottom: 4px;
}
.idx-news-title {
  font-size: var(--fs-md, 15px);
  margin: 0 0 4px;
  color: var(--text);
  line-height: 1.35;
  transition: color 0.15s ease;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.idx-news-excerpt {
  font-size: var(--fs-xs, 12px);
  color: var(--text-light);
  margin: 0;
  line-height: 1.4;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}