/* === HOME BLOCKS — scoped to .home-portal === */

.home-portal,
.home-portal *{ box-sizing: border-box; }

/* === Общая раскладка главной === */
.home-portal{
  padding: 18px 0 28px;
}

/* layout */
.home-portal .home-layout{
  display: grid;
  grid-template-columns: minmax(0, 3fr) minmax(260px, 1.25fr);
  gap: 20px;
  align-items: flex-start;
}

.home-portal .home-layout.no-sidebar{
  grid-template-columns: minmax(0, 1fr);
}

/* На планшетах и телефонах — одна колонка */
@media (max-width: 900px){
  .home-portal .home-layout{ grid-template-columns: 1fr; }
}

/* === Базовый стиль блока === */
.home-portal .home-block{
  --block-bg: var(--surface, #ffffff);
  --block-accent: var(--theme-color, #0088cc);
  --block-text: var(--text, #111827);
  --block-muted: var(--muted, #6b7280);
  --block-border: var(--border, #e5e7eb);

  background: var(--block-bg);
  border-radius: 14px;
  box-shadow: 0 2px 8px rgba(15, 23, 42, 0.06);
  padding: 16px 18px 18px;
  margin-bottom: 16px;
}

.home-portal .home-sidebar .home-block{
  padding: 12px 14px 14px;
}

/* заголовок блока */
.home-portal .home-block-title{
  display: flex;
  align-items: center;
  gap: 8px;
  margin: 0 0 12px;
  font-size: 1.1rem;
  font-weight: 700;
  color: var(--block-accent);
}

/* подпись под заголовком (если понадобится) */
.home-portal .home-block-subtitle{
  margin-top: -6px;
  margin-bottom: 10px;
  font-size: 0.85rem;
  color: var(--block-muted);
}

/* контейнер внутри блока (сетку делаем индивидуально) */
.home-portal .home-block-body{ width: 100%; }

/* ссылки "Все ..." */
.home-portal .home-block-footer{
  margin-top: 14px;
  text-align: right;
}
.home-portal .home-block-footer .more-link{
  font-size: 0.9rem;
  font-weight: 600;
  color: var(--block-accent);
  text-decoration: none;
}
.home-portal .home-block-footer .more-link:hover{ text-decoration: underline; }

/* скрытие на мобилке */
.home-portal .home-block.hide-on-mobile{ display: block; }
@media (max-width: 768px){
  .home-portal .home-block.hide-on-mobile{ display: none !important; }
}

/* Для sidebar-блоков можно чуть уменьшить заголовок */
.home-portal .home-sidebar .home-block-title{ font-size: 1rem; }

/* ====== БЛОК: закреплённая новость ====== */
.home-portal .home-block-pinned_news .pinned-layout{
  display: flex;
  gap: 18px;
}

.home-portal .home-block-pinned_news .pinned-thumb{
  flex: 0 0 320px;
  max-width: 360px;
}

.home-portal .home-block-pinned_news .pinned-thumb img{
  display: block;
  width: 100%;
  height: 220px;
  object-fit: cover;
  border-radius: 12px;
}

.home-portal .home-block-pinned_news .pinned-body{
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.home-portal .home-block-pinned_news .pinned-title a{
  font-size: 1.15rem;
  font-weight: 700;
  color: var(--block-text);
  text-decoration: none;
}
.home-portal .home-block-pinned_news .pinned-title a:hover{ text-decoration: underline; }

.home-portal .home-block-pinned_news .pinned-meta{
  font-size: 0.85rem;
  color: var(--block-muted);
}

.home-portal .home-block-pinned_news .pinned-desc{
  font-size: 0.95rem;
  color: var(--block-text);
  line-height: 1.5;
}

.home-portal .home-block-pinned_news .pinned-readmore{
  margin-top: auto;
  font-size: 0.9rem;
}
.home-portal .home-block-pinned_news .pinned-readmore a{
  color: var(--block-accent);
  text-decoration: none;
  font-weight: 600;
}
.home-portal .home-block-pinned_news .pinned-readmore a:hover{ text-decoration: underline; }

/* pinned в сайдбаре — компактный режим */
.home-portal .home-sidebar .home-block-pinned_news .pinned-layout{ flex-direction: column; }
.home-portal .home-sidebar .home-block-pinned_news .pinned-thumb{
  flex: 0 0 auto;
  max-width: 100%;
}
.home-portal .home-sidebar .home-block-pinned_news .pinned-thumb img{ height: 160px; }

/* pinned на мобиле — тоже колонкой */
@media (max-width: 900px){
  .home-portal .home-block-pinned_news .pinned-layout{ flex-direction: column; }
  .home-portal .home-block-pinned_news .pinned-thumb{
    flex: 0 0 auto;
    max-width: 100%;
  }
  .home-portal .home-block-pinned_news .pinned-thumb img{
    height: auto;
    max-height: 260px;
  }
}

/* ====== pinned: список остальных ====== */
.home-portal .home-block-pinned_news .pinned-more{
  margin-top: 12px;
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.home-portal .home-block-pinned_news .pinned-more-item{
  border-top: 1px solid rgba(229, 231, 235, 0.9);
  padding-top: 8px;
}
.home-portal .home-block-pinned_news .pinned-more-item a{
  text-decoration: none;
  color: var(--block-text);
  font-weight: 600;
}
.home-portal .home-block-pinned_news .pinned-more-item a:hover{ text-decoration: underline; }

/* ====== БЛОК: плитки статистики ====== */
.home-portal .home-block-stats_row .stats-grid{
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
}

.home-portal .home-block-stats_row .stat-item{
  background: #f9fafb;
  border-radius: 10px;
  padding: 10px 12px;
  font-size: 0.9rem;
  color: var(--block-text);
  border: 1px solid var(--block-border);
}

.home-portal .home-block-stats_row .stat-item h4{
  margin: 0 0 4px;
  font-size: 0.92rem;
  font-weight: 600;
}

.home-portal .home-block-stats_row .stat-item a{
  color: var(--block-accent);
  text-decoration: none;
  font-weight: 500;
}
.home-portal .home-block-stats_row .stat-item a:hover{ text-decoration: underline; }

.home-portal .home-block-stats_row .stat-muted{
  margin-top: 6px;
  font-size: 0.82rem;
  color: var(--block-muted);
}

.home-portal .home-block-stats_row .stat-actions{ margin-top: 6px; }

@media (max-width: 900px){
  .home-portal .home-block-stats_row .stats-grid{ grid-template-columns: 1fr; }
}

/* stats_row: промо-картинка + типографика (без inline) */
.home-portal .home-block-stats_row .stat-ad-media{ margin-bottom:10px; }

.home-portal .home-block-stats_row .stat-ad-img{
  display:block;
  width:100%;
  height:120px;
  object-fit:cover;
  border-radius:10px;
}

.home-portal .home-block-stats_row .stat-title{ font-weight:700; margin-bottom:6px; }
.home-portal .home-block-stats_row .stat-muted-block{ margin:0 0 10px; }
.home-portal .home-block-stats_row .stat-until{ margin-left:auto; white-space:nowrap; }

/* ====== БЛОК: новости (карточки) ====== */
.home-portal .home-block-news .news-grid{
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: 14px;
}

.home-portal .home-block-news .news-card{
  background: var(--block-bg);
  border-radius: 10px;
  overflow: hidden;
  border: 1px solid var(--block-border);
  display: flex;
  flex-direction: column;
  position: relative; /* overlays */
}

.home-portal .home-block-news .news-thumb{
  width: 100%;
  height: 170px;
  object-fit: cover;
  display: block;
}

.home-portal .home-block-news .news-content{
  padding: 10px 12px 12px;
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.home-portal .home-block-news .news-title a{
  font-size: 0.98rem;
  font-weight: 600;
  color: var(--block-text);
  text-decoration: none;
}
.home-portal .home-block-news .news-title a:hover{ text-decoration: underline; }

.home-portal .home-block-news .news-meta{
  font-size: 0.8rem;
  color: var(--block-muted);
}

.home-portal .home-block-news .news-readmore{
  margin-top: 4px;
  font-size: 0.85rem;
}
.home-portal .home-block-news .news-readmore a{
  color: var(--block-accent);
  text-decoration: none;
  font-weight: 500;
}
.home-portal .home-block-news .news-readmore a:hover{ text-decoration: underline; }

/* ====== БЛОК: афиша ====== */

/* --- НОВЫЙ (grouped) вариант: постерные карточки --- */
.home-portal .home-block-afisha .afisha-grid{
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
  gap: 16px;
}

/* чуть крупнее в основной колонке (визуально ближе к постеру) */
@media (min-width: 1024px){
  .home-portal .home-block-afisha .afisha-grid{
    grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
  }
}

.home-portal .home-block-afisha .afisha-card{
  background: #fff;
  border: 1px solid rgba(229,231,235,.9);
  border-radius: 14px;
  overflow: hidden;
  box-shadow: 0 2px 10px rgba(0,0,0,.06);
  display: flex;
  flex-direction: column;
  min-width: 0;
}

.home-portal .home-block-afisha .afisha-card-pic{
  display: block;
  width: 100%;
  background: #f3f4f6;
  overflow: hidden;
  aspect-ratio: 2 / 3; /* ширина / высота */
}

.home-portal .home-block-afisha .afisha-card-pic img{
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.home-portal .home-block-afisha .afisha-card-body{
  padding: 12px 12px 14px;
}

.home-portal .home-block-afisha .afisha-card-title{
  margin: 0 0 6px;
  font-size: 16px;
  font-weight: 800;
  line-height: 1.25;

  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.home-portal .home-block-afisha .afisha-card-title a{
  text-decoration: none;
  color: #111827;
}
.home-portal .home-block-afisha .afisha-card-title a:hover{ text-decoration: underline; }

.home-portal .home-block-afisha .afisha-card-loc{
  font-size: 13px;
  color: #6b7280;
  margin-bottom: 10px;

  display: -webkit-box;
  -webkit-line-clamp: 1;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.home-portal .home-block-afisha .afisha-sessions{
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.home-portal .home-block-afisha .afisha-session{
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 6px 10px;
  border-radius: 10px;
  font-size: 13px;
  font-weight: 700;
  border: 1px solid rgba(147,197,253,.9);
  background: rgba(219,234,254,.65);
  color: #111827;
  white-space: nowrap;
  text-decoration: none;
  cursor: pointer;
}

.home-portal .home-block-afisha .afisha-session-more{
  border-style: dashed;
  opacity: .85;
  cursor: default;
}

/* мобилка: чтобы карточки не были слишком “высокими” */
@media (max-width: 520px){
  .home-portal .home-block-afisha .afisha-grid{
    grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
  }
}

/* --- СТАРЫЙ вариант (не grouped) — тоже делаем постерным --- */
.home-portal .home-block-afisha .afisha-list{
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 14px;
}

.home-portal .home-block-afisha .afisha-item{
  border-radius: 10px;
  border: 1px solid #fee2e2;
  background: #fef2f2;
  overflow: hidden;
  display: flex;
  flex-direction: column;
}

.home-portal .home-block-afisha .afisha-pic{
  width: 100%;
  height: auto;
  aspect-ratio: 2 / 3; /* постер */
  object-fit: cover;
  display: block;
  background: #ffffff;
}

.home-portal .home-block-afisha .afisha-body{
  padding: 9px 11px 11px;
  font-size: 0.9rem;
}

.home-portal .home-block-afisha .afisha-title{
  margin: 0 0 3px;
  font-size: 0.95rem;
  font-weight: 600;
}
.home-portal .home-block-afisha .afisha-title a{
  color: var(--block-text);
  text-decoration: none;
}
.home-portal .home-block-afisha .afisha-title a:hover{ text-decoration: underline; }

.home-portal .home-block-afisha .afisha-meta{
  font-size: 0.82rem;
  color: var(--block-muted);
}

/* --- Афиша на главной: ближайший сеанс + покупка --- */
.home-portal .home-block-afisha .afisha-card-body--flex{
  display: flex;
  flex-direction: column;
  min-height: 180px;
}

.home-portal .home-block-afisha .afisha-next{
  display: flex;
  align-items: center;
  gap: 8px;
  margin-top: 2px;
  font-size: 13px;
  color: #374151;
  font-weight: 700;
}
.home-portal .home-block-afisha .afisha-next-label{
  color: #6b7280;
  font-weight: 700;
}
.home-portal .home-block-afisha .afisha-next-time{
  font-weight: 900;
}

.home-portal .home-block-afisha .afisha-actions{
  margin-top: auto;
  padding-top: 10px;
}

.home-portal .home-block-afisha .afisha-actions-row{
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: nowrap;
}

.home-portal .home-block-afisha .afisha-buy-btn{
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 10px 12px;
  border-radius: 12px;
  font-weight: 900;
  text-decoration: none;
  background: var(--block-accent);
  color: #fff;
  line-height: 1;
  flex: 1 1 auto;
  min-width: 0;
}

.home-portal .home-block-afisha .afisha-buy-btn:hover{ filter: brightness(0.97); }

.home-portal .home-block-afisha .afisha-places-badge{
  flex: 0 0 auto;
  white-space: nowrap;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 9px 10px;
  border-radius: 12px;
  border: 1px solid rgba(229,231,235,.9);
  background: #fff;
  font-weight: 900;
  font-size: 0.92rem;
  color: rgba(17,24,39,.88);
}

.home-portal .home-block-afisha .afisha-remind-btn{
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 10px 12px;
  border-radius: 12px;
  font-weight: 900;
  text-decoration: none;
  background: rgba(17,24,39,.85);
  color: #fff;
  line-height: 1;
  width: 100%;
}
.home-portal .home-block-afisha .afisha-remind-btn:hover{ filter: brightness(0.97); }

/* ====== БЛОК: топ организаций (карусель) ====== */
.home-portal .home-block-top_orgs .toporgs-carousel{
  display: flex;
  align-items: center;
  gap: 10px;
  width: 100%;
}

.home-portal .home-block-top_orgs .toporgs-btn{
  width: 36px;
  height: 36px;
  border-radius: 10px;
  border: 1px solid var(--block-border);
  background: #fff;
  cursor: pointer;
  font-size: 18px;
  flex: 0 0 auto;
}
.home-portal .home-block-top_orgs .toporgs-btn:hover{ background: #f9fafb; }

.home-portal .home-block-top_orgs .toporgs-viewport{
  overflow: hidden;
  width: 100%;
  min-width: 0;
}

.home-portal .home-block-top_orgs .toporgs-track{
  display: flex;
  gap: 12px;
  overflow-x: auto;
  scroll-behavior: smooth;
  scrollbar-width: none;
  -webkit-overflow-scrolling: touch;
  scroll-snap-type: x mandatory;
}
.home-portal .home-block-top_orgs .toporgs-track::-webkit-scrollbar{ display: none; }

/* ширина карточек: ровно 3 полностью (десктоп) */
.home-portal .home-block-top_orgs .toporgs-track .org-card{
  flex: 0 0 calc((100% - 24px) / 3);
  max-width: calc((100% - 24px) / 3);
  min-width: 0;
  scroll-snap-align: start;
}

/* планшет: 2 карточки */
@media (max-width: 980px){
  .home-portal .home-block-top_orgs .toporgs-track .org-card{
    flex: 0 0 calc((100% - 12px) / 2);
    max-width: calc((100% - 12px) / 2);
  }
}

.home-portal .home-block-top_orgs .org-card{
  border-radius: 10px;
  border: 1px solid var(--block-border);
  overflow: hidden;
  background: var(--block-bg);
  display: flex;
  flex-direction: column;
}

.home-portal .home-block-top_orgs .org-logo{
  width: 100%;
  height: 130px;
  object-fit: cover;
  display: block;
  background: #f3f4f6;
}

.home-portal .home-block-top_orgs .org-info{
  padding: 9px 11px 11px;
  font-size: 0.9rem;
}

.home-portal .home-block-top_orgs .org-name a{
  font-weight: 600;
  color: var(--block-text);
  text-decoration: none;
}
.home-portal .home-block-top_orgs .org-name a:hover{ text-decoration: underline; }

.home-portal .home-block-top_orgs .org-address{
  font-size: 0.82rem;
  color: var(--block-muted);
  margin-top: 2px;
}

.home-portal .home-block-top_orgs .org-rating{
  margin-top: 4px;
  font-size: 0.82rem;
  color: #f59e0b;
}

/* мобилка — только свайп */
@media (max-width: 520px){
  .home-portal .home-block-top_orgs .toporgs-btn{ display: none !important; }
  .home-portal .home-block-top_orgs .toporgs-track .org-card{
    flex: 0 0 100%;
    max-width: 100%;
  }
}

/* ====== БЛОК: объявления ====== */
.home-portal .home-block-ads .board-grid{
  display: grid;
  gap: 12px;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  align-items: stretch;
}

/* когда главная колонка уже не вмещает 3 — падаем на 2 */
@media (max-width: 1100px){
  .home-portal .home-block-ads .board-grid{
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

/* мобилка — одна колонка */
@media (max-width: 520px){
  .home-portal .home-block-ads .board-grid{ grid-template-columns: 1fr; }
}

.home-portal .home-block-ads .board-card{
  min-width: 0;
  border-radius: 10px;
  border: 1px solid var(--block-border);
  background: var(--block-bg);
  overflow: hidden;
  display: flex;
  flex-direction: column;
  position: relative; /* overlays */
}

.home-portal .home-block-ads .board-thumb{
  width: 100%;
  height: 170px;
  object-fit: cover;
  display: block;
  background: #f3f4f6;
}

.home-portal .home-block-ads .board-body{
  padding: 9px 11px 11px;
  font-size: 0.9rem;
}

.home-portal .home-block-ads .board-title a{
  font-weight: 600;
  color: var(--block-text);
  text-decoration: none;
}
.home-portal .home-block-ads .board-title a:hover{ text-decoration: underline; }

.home-portal .home-block-ads .board-text{
  margin-top: 4px;
  font-size: 0.86rem;
  color: #374151;
}

.home-portal .home-block-ads .board-meta{
  margin-top: 4px;
  font-size: 0.8rem;
  color: var(--block-muted);
}

/* ====== БЛОК: новости организаций ====== */
.home-portal .home-block-org_news .org-news-list{
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.home-portal .home-block-org_news .org-news-item{
  display: flex;
  gap: 10px;
  padding: 8px 0;
  border-bottom: 1px solid var(--block-border);
}

.home-portal .home-block-org_news .org-news-thumb{ flex: 0 0 110px; }

.home-portal .home-block-org_news .org-news-thumb img{
  display: block;
  width: 110px;
  height: 90px;
  object-fit: cover;
  border-radius: 10px;
}

.home-portal .home-block-org_news .org-news-body{
  flex: 1;
  min-width: 0;
}

.home-portal .home-block-org_news .org-news-title a{
  color: var(--block-text);
  text-decoration: none;
  font-weight: 700;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.home-portal .home-block-org_news .org-news-title a:hover{ text-decoration: underline; }

.home-portal .home-block-org_news .org-news-text{
  margin-top: 4px;
  color: #374151;
  font-size: 0.88rem;
  line-height: 1.35;
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.home-portal .home-block-org_news .org-news-meta{
  margin-top: 6px;
  font-size: 0.8rem;
  color: var(--block-muted);
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
}

/* ====== БЛОК: пользователи онлайн (сайдбар) ====== */
.home-portal .home-block-online .online-list{
  list-style: none;
  padding: 0;
  margin: 0;
}

.home-portal .home-block-online .online-item{
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  padding: 6px 0;
  border-bottom: 1px solid #f3f4f6;
  font-size: 0.9rem;
}
.home-portal .home-block-online .online-item:last-child{ border-bottom: none; }

.home-portal .home-block-online .online-name a{
  text-decoration: none;
  color: var(--block-text);
}
.home-portal .home-block-online .online-name a:hover{ text-decoration: underline; }

.home-portal .home-block-online .online-status{
  font-size: 0.78rem;
  color: #10b981;
}

/* опционально: зелёная точка */
.home-portal .home-block-online .online-dot{
  width: 8px;
  height: 8px;
  border-radius: 999px;
  background: #22c55e;
  display: inline-block;
  margin-right: 6px;
  vertical-align: middle;
}

/* ====== БЛОК: последние комментарии (сайдбар) ====== */
.home-portal .home-block-comments .comments-list{
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.home-portal .home-block-comments .comment-item{
  padding: 8px 0;
  border-bottom: 1px solid var(--block-border);
}
.home-portal .home-block-comments .comment-item:last-child{ border-bottom: none; }

.home-portal .home-block-comments .comment-author{
  font-weight: 700;
  font-size: 0.9rem;
  color: var(--block-text);
}

.home-portal .home-block-comments .comment-date{
  font-weight: 500;
  font-size: 0.78rem;
  color: var(--block-muted);
  white-space: nowrap;
}

.home-portal .home-block-comments .comment-target{
  margin-top: 2px;
  margin-bottom: 4px;
}

.home-portal .home-block-comments .comment-target a{
  font-size: 0.82rem;
  text-decoration: none;
  color: var(--block-accent);
  font-weight: 700;
  overflow-wrap: anywhere;
  word-break: break-word;
}
.home-portal .home-block-comments .comment-target a:hover{ text-decoration: underline; }

.home-portal .home-block-comments .comment-target-muted{
  font-size: 0.82rem;
  color: #9ca3af;
}

.home-portal .home-block-comments .comment-text{
  font-size: 0.88rem;
  color: #374151;
  line-height: 1.35;
  overflow-wrap: anywhere;
  word-break: break-word;
}

/* =========================================================
   HOME BLOCKS — overlays (просмотры + избранное)
   ========================================================= */
.home-portal .home-card-media{ position: relative; }
.home-portal .home-card-link{ display:block; }

/* 👁 бейдж просмотров */
.home-portal .home-overlay-badge{
  position:absolute;
  top:10px;
  left:10px;
  z-index:5;
  display:inline-flex;
  align-items:center;
  gap:6px;
  padding:6px 10px;
  border-radius:999px;
  background:rgba(255,255,255,.92);
  border:1px solid rgba(148,163,184,.35);
  font-size:12px;
  font-weight:900;
  color:#0f172a;
  backdrop-filter:blur(6px);
  pointer-events:none;
}

/* ⭐ избранное (кнопка/ссылка) */
.home-portal .home-fav-btn{
  position:absolute;
  top:10px;
  right:10px;
  z-index:6;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:36px;
  height:36px;
  border-radius:999px;
  background:rgba(255,255,255,.92);
  border:1px solid rgba(148,163,184,.35);
  font-size:16px;
  font-weight:900;
  color:#0f172a;
  cursor:pointer;
  backdrop-filter:blur(6px);
  text-decoration:none;
  transition: filter .15s ease, transform .08s ease;
}

.home-portal .home-fav-btn:hover{ filter: brightness(.98); }
.home-portal .home-fav-btn:active{ transform: translateY(1px); }

/* активное избранное */
.home-portal .home-fav-btn.active{
  background: rgba(255, 245, 200, .95);
  border-color: rgba(245, 158, 11, .55);
}

/* screen-reader only */
.home-portal .home-sr-only{
  position:absolute;
  width:1px;
  height:1px;
  padding:0;
  margin:-1px;
  overflow:hidden;
  clip:rect(0,0,0,0);
  white-space:nowrap;
  border:0;
}

/* Сообщение об отсутствующем шаблоне блока */
.home-portal .home-block-missing{
  margin: 0;
  padding: 10px 12px;
  border-radius: 12px;
  border: 1px solid rgba(239, 68, 68, 0.25);
  background: rgba(254, 242, 242, 0.9);
  color: #b91c1c;
  font-weight: 700;
}

/* ===== AFISHA (главная): ближайший сеанс + покупка + места ===== */

.home-portal .home-block-afisha .afisha-grid-nextonly{
  gap: 14px;
}

.home-portal .home-block-afisha .afisha-card-nextonly{
  display: flex;
  flex-direction: column;
}

.home-portal .home-block-afisha .afisha-nextline{
  margin-top: 6px;
  font-size: 13px;
  color: #374151;
  font-weight: 600;
}

.home-portal .home-block-afisha .afisha-actions{
  margin-top: 10px;
  display: flex;
  align-items: center;
  gap: 10px;
}

.home-portal .home-block-afisha .afisha-buy,
.home-portal .home-block-afisha .afisha-remind{
  flex: 1 1 auto;
  min-width: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 10px 12px;
  border-radius: 12px;
  font-weight: 900;
  border: 0;
  cursor: pointer;
  background: var(--block-accent);
  color: #fff;
  text-decoration: none;
}

.home-portal .home-block-afisha .afisha-places{
  flex: 0 0 auto;
  white-space: nowrap;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 10px 10px;
  border-radius: 12px;
  border: 1px solid rgba(229,231,235,.9);
  background: #fff;
  font-weight: 900;
  color: #111827;
}

/* ===== SIDEBAR: компактные элементы (горизонтально) ===== */
.home-portal .home-sidebar .home-block-afisha .afisha-mini-list{
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.home-portal .home-sidebar .home-block-afisha .afisha-mini{
  display: grid;
  grid-template-columns: 74px 1fr;
  gap: 10px;
  border: 1px solid rgba(229,231,235,.9);
  border-radius: 14px;
  padding: 10px;
  background: #fff;
}

.home-portal .home-sidebar .home-block-afisha .afisha-mini-pic{
  display: block;
  width: 74px;
  height: 110px;
  border-radius: 12px;
  overflow: hidden;
  background: #f3f4f6;
}

.home-portal .home-sidebar .home-block-afisha .afisha-mini-pic img{
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.home-portal .home-sidebar .home-block-afisha .afisha-mini-title{
  font-size: 0.95rem;
  font-weight: 900;
  line-height: 1.2;
  margin-bottom: 4px;

  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.home-portal .home-sidebar .home-block-afisha .afisha-mini-title a{
  text-decoration: none;
  color: #111827;
}

.home-portal .home-sidebar .home-block-afisha .afisha-mini-loc{
  font-size: 0.82rem;
  color: #6b7280;
  margin-bottom: 6px;

  display: -webkit-box;
  -webkit-line-clamp: 1;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.home-portal .home-sidebar .home-block-afisha .afisha-mini-next{
  font-size: 0.82rem;
  color: #374151;
  font-weight: 700;
  margin-bottom: 8px;
}

.home-portal .home-sidebar .home-block-afisha .afisha-mini-actions{
  display: flex;
  align-items: center;
  gap: 8px;
}

.home-portal .home-sidebar .home-block-afisha .afisha-mini-buy,
.home-portal .home-sidebar .home-block-afisha .afisha-mini-remind{
  flex: 1 1 auto;
  min-width: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  padding: 9px 10px;
  border-radius: 12px;
  font-weight: 900;
  border: 0;
  cursor: pointer;
  background: var(--block-accent);
  color: #fff;
  text-decoration: none;
}

.home-portal .home-sidebar .home-block-afisha .afisha-mini-places{
  flex: 0 0 auto;
  white-space: nowrap;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 9px 9px;
  border-radius: 12px;
  border: 1px solid rgba(229,231,235,.9);
  background: #fff;
  font-weight: 900;
  color: #111827;
}

/* ===== MODAL (iframe) ===== */
.kw-modal{
  position: fixed;
  inset: 0;
  z-index: 9999;
}

.kw-modal__overlay{
  position: absolute;
  inset: 0;
  background: rgba(0,0,0,.55);
}

.kw-modal__dialog{
  position: relative;
  width: min(980px, calc(100vw - 20px));
  height: min(740px, calc(100vh - 20px));
  margin: 10px auto;
  border-radius: 16px;
  overflow: hidden;
  background: #fff;
  box-shadow: 0 20px 60px rgba(0,0,0,.35);
}

.kw-modal__close{
  position: absolute;
  top: 10px;
  right: 10px;
  z-index: 2;
  width: 40px;
  height: 40px;
  border-radius: 12px;
  border: 1px solid rgba(229,231,235,.9);
  background: rgba(255,255,255,.95);
  cursor: pointer;
  font-size: 18px;
  font-weight: 900;
}

.kw-modal__frame{
  width: 100%;
  height: 100%;
  border: 0;
}

html.kw-modal-open,
html.kw-modal-open body{
  overflow: hidden;
}

