body { font-family: 'Inter', system-ui, -apple-system, "Segoe UI", "Segoe UI Emoji", "Segoe UI Symbol", "Apple Color Emoji", "Noto Color Emoji", sans-serif; background: #f8fafc; }
.mega-menu { opacity: 0; visibility: hidden; transform: translateY(-8px); transition: all 0.25s ease; pointer-events: none; }
.group:hover .mega-menu, .catalog-wrap:hover .mega-menu, .catalog-wrap.catalog-open .mega-menu { opacity: 1; visibility: visible; transform: translateY(0); pointer-events: auto; }
.nav-dropdown-panel { display: none; pointer-events: auto; }
.nav-dropdown-wrap:hover .nav-dropdown-panel,
.nav-dropdown-wrap:focus-within .nav-dropdown-panel,
.nav-dropdown-wrap.is-open .nav-dropdown-panel { display: block; }
.nav-link { position: relative; }
.nav-link.active { color: #1e40af; }
.nav-link::after { content: ''; position: absolute; bottom: -4px; left: 0; width: 0; height: 2px; background: #1e40af; transition: width 0.3s ease; }
.nav-link:hover::after, .nav-link.active::after { width: 100%; }
.card-hover { transition: all 0.25s ease; }
.card-hover:hover { transform: translateY(-3px); box-shadow: 0 12px 24px rgba(30,64,175,0.12); }
.chip { transition: all 0.2s ease; }
.chip:hover { background: #eff6ff; color: #1e40af; transform: translateY(-1px); }
.pulse-dot { animation: pulse 2s infinite; }
@keyframes pulse { 0%,100%{opacity:1} 50%{opacity:0.4} }
.search-focus:focus-within { box-shadow: 0 0 0 3px rgba(30,64,175,0.15); }
.mobile-menu {
  transform: translateX(100%);
  transition: transform 0.3s ease;
  pointer-events: none;
  visibility: hidden;
}
.mobile-menu.open {
  transform: translateX(0);
  pointer-events: auto;
  visibility: visible;
}
.backdrop { opacity: 0; pointer-events: none; transition: opacity 0.3s ease; }
.backdrop.open { opacity: 1; pointer-events: auto; }
.tab-btn.active { background: #1e40af; color: white; }
.scrollbar-hide::-webkit-scrollbar { display: none; }
.scrollbar-hide { -ms-overflow-style: none; scrollbar-width: none; }

/* Admin & cabinet: hidden scrollbars, scroll preserved */
.admin-sidebar,
.admin-sidebar nav,
.admin-main,
.admin-app main,
.admin-shell,
.admin-table-card,
.admin-app [class~="overflow-y-auto"],
.admin-app [class~="overflow-x-auto"],
.admin-app [class~="overflow-auto"],
.admin-shell [class~="overflow-y-auto"],
.admin-shell [class~="overflow-x-auto"],
.admin-shell [class~="overflow-auto"],
.cabinet-sidebar,
.cabinet-sidebar nav,
.cabinet-main,
.cabinet-app main,
.cabinet-layout,
.cabinet-table-wrap,
.cabinet-tabs,
.cabinet-app [class~="overflow-y-auto"],
.cabinet-app [class~="overflow-x-auto"],
.cabinet-app [class~="overflow-auto"],
.cabinet-layout [class~="overflow-y-auto"],
.cabinet-layout [class~="overflow-x-auto"],
.cabinet-layout [class~="overflow-auto"] {
  -ms-overflow-style: none;
  scrollbar-width: none;
}
.admin-sidebar::-webkit-scrollbar,
.admin-sidebar nav::-webkit-scrollbar,
.admin-main::-webkit-scrollbar,
.admin-app main::-webkit-scrollbar,
.admin-shell::-webkit-scrollbar,
.admin-table-card::-webkit-scrollbar,
.admin-app [class~="overflow-y-auto"]::-webkit-scrollbar,
.admin-app [class~="overflow-x-auto"]::-webkit-scrollbar,
.admin-app [class~="overflow-auto"]::-webkit-scrollbar,
.admin-shell [class~="overflow-y-auto"]::-webkit-scrollbar,
.admin-shell [class~="overflow-x-auto"]::-webkit-scrollbar,
.admin-shell [class~="overflow-auto"]::-webkit-scrollbar,
.cabinet-sidebar::-webkit-scrollbar,
.cabinet-sidebar nav::-webkit-scrollbar,
.cabinet-main::-webkit-scrollbar,
.cabinet-app main::-webkit-scrollbar,
.cabinet-layout::-webkit-scrollbar,
.cabinet-table-wrap::-webkit-scrollbar,
.cabinet-tabs::-webkit-scrollbar,
.cabinet-app [class~="overflow-y-auto"]::-webkit-scrollbar,
.cabinet-app [class~="overflow-x-auto"]::-webkit-scrollbar,
.cabinet-app [class~="overflow-auto"]::-webkit-scrollbar,
.cabinet-layout [class~="overflow-y-auto"]::-webkit-scrollbar,
.cabinet-layout [class~="overflow-x-auto"]::-webkit-scrollbar,
.cabinet-layout [class~="overflow-auto"]::-webkit-scrollbar {
  display: none;
}
.gradient-hero { background: linear-gradient(135deg, #1e3a8a 0%, #1e40af 50%, #3b82f6 100%); }
.stat-card { background: linear-gradient(135deg, #ffffff 0%, #f1f5f9 100%); transition: all 0.2s; }
.stat-card:hover { transform: translateY(-2px); box-shadow: 0 8px 20px -5px rgba(0,0,0,0.08); }
.section-title::before { content: ''; display: inline-block; width: 4px; height: 24px; background: #1e40af; margin-right: 12px; vertical-align: middle; border-radius: 2px; }
.catalog-wrap { position: relative; flex-shrink: 0; }
.nav-scroll { -ms-overflow-style: none; scrollbar-width: none; }
.nav-scroll::-webkit-scrollbar { display: none; }
@media (max-width: 1023px) {
  .nav-scroll { overflow-x: auto; }
}
@media (min-width: 1024px) {
  /* overflow-x:auto forces overflow-y:auto and clips absolute dropdown panels below nav items */
  .site-header nav,
  .nav-scroll { overflow: visible; }
}
.ad-leaderboard {
  display: flex;
  justify-content: center;
  background: transparent;
  padding: 8px 16px 10px;
}
.ad-leaderboard--compact { padding-top: 6px; padding-bottom: 8px; }
.ad-leaderboard--portal {
  width: 100%;
  padding-left: 0;
  padding-right: 0;
}
.ad-leaderboard--portal .ad-unit--leaderboard {
  max-width: none;
  width: 100%;
}
.ad-strip { background: transparent; border: none; }
.ad-unit {
  position: relative;
  display: block;
  text-decoration: none;
  color: inherit;
  overflow: hidden;
}
.ad-unit:hover { text-decoration: none; color: inherit; }
.ad-mark {
  position: absolute;
  top: 5px;
  left: 6px;
  z-index: 2;
  font-size: 8px;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  line-height: 1;
  color: rgba(255, 255, 255, 0.88);
  background: rgba(15, 23, 42, 0.42);
  padding: 2px 5px;
  border-radius: 3px;
  pointer-events: none;
}
.ad-mark--on-light {
  color: #64748b;
  background: rgba(255, 255, 255, 0.92);
  border: 1px solid #e2e8f0;
}
.ad-mark--on-dark {
  color: rgba(255, 255, 255, 0.8);
  background: rgba(15, 23, 42, 0.35);
}
.ad-unit--leaderboard {
  width: 100%;
  max-width: none;
  aspect-ratio: 728 / 90;
  border-radius: 12px;
  box-shadow: 0 1px 2px rgba(15, 23, 42, 0.05);
}
.ad-unit--image .ad-unit__img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  background: #1e3a8a;
  transition: transform 0.35s ease;
}
.ad-unit--image:hover .ad-unit__img { transform: scale(1.03); }
.ad-unit--composed {
  background: linear-gradient(90deg, #1e3a8a 0%, #1e40af 52%, #3b82f6 100%);
  color: #fff;
}
.ad-unit--composed::before {
  content: '';
  position: absolute;
  left: 0;
  top: 0;
  bottom: 0;
  width: 4px;
  background: #fbbf24;
}
.ad-unit__inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  height: 100%;
  padding: 10px 18px 10px 22px;
  box-sizing: border-box;
}
.ad-unit__copy {
  min-width: 0;
  flex: 1;
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 2px;
}
.ad-unit__kicker {
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: #bfdbfe;
}
.ad-unit__kicker:empty { display: none; }
.ad-unit__title {
  display: block;
  font-size: 18px;
  font-weight: 800;
  line-height: 1.2;
  color: #fff;
  letter-spacing: -0.01em;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.ad-unit__desc {
  display: block;
  font-size: 12px;
  color: #dbeafe;
  line-height: 1.3;
}
.ad-unit__cta {
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: #fff;
  color: #1e40af;
  padding: 8px 16px;
  border-radius: 8px;
  font-size: 13px;
  font-weight: 700;
  line-height: 1;
  white-space: nowrap;
}
.ad-unit--composed:hover .ad-unit__cta { background: #eff6ff; }
.ad-unit--native {
  display: flex;
  align-items: stretch;
  gap: 0;
  background: #fff;
  border: 1px solid #e2e8f0;
  border-radius: 12px;
  overflow: hidden;
}
.ad-unit--native-sidebar { flex-direction: column; }
.ad-unit--native__media {
  display: block;
  flex-shrink: 0;
  width: 132px;
  min-height: 100%;
  background: #1e3a8a;
}
.ad-unit--native-sidebar .ad-unit--native__media {
  width: 100%;
  height: 140px;
  min-height: 0;
}
.ad-unit--native__media img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.ad-unit--native__body {
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 6px;
  padding: 16px 18px 16px 16px;
  min-width: 0;
  flex: 1;
}
.ad-unit--native__title {
  font-size: 15px;
  font-weight: 800;
  color: #0f172a;
  line-height: 1.3;
}
.ad-unit--native__desc {
  font-size: 13px;
  color: #475569;
  line-height: 1.4;
}
.ad-unit--native__more {
  font-size: 13px;
  font-weight: 700;
  color: #1e40af;
}
.ad-unit--native:hover .ad-unit--native__title,
.ad-unit--sidebar:hover .ad-unit--sidebar__title { color: #1e40af; }
.ad-unit--sidebar {
  background: #fff;
  border: 1px solid #e2e8f0;
  border-radius: 12px;
}
.ad-unit--sidebar__media {
  display: block;
  height: 140px;
  background: #1e3a8a;
}
.ad-unit--sidebar__media img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.ad-unit--sidebar__body {
  display: flex;
  flex-direction: column;
  gap: 8px;
  padding: 12px 14px 14px;
}
.ad-unit--sidebar__title {
  font-size: 14px;
  font-weight: 800;
  color: #0f172a;
  line-height: 1.3;
}
.ad-unit--sidebar__composed {
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  gap: 10px;
  min-height: 180px;
  padding: 36px 16px 18px;
  background: linear-gradient(180deg, #1e3a8a 0%, #1e40af 100%);
  box-sizing: border-box;
}
.ad-unit--sidebar__composed .ad-unit__title { font-size: 18px; white-space: normal; }
.ad-unit--sidebar__composed .ad-unit__cta { align-self: flex-start; }
@media (max-width: 640px) {
  .ad-leaderboard { padding-left: 12px; padding-right: 12px; }
  .ad-leaderboard--portal { padding-left: 0; padding-right: 0; }
  .ad-leaderboard--portal { padding-left: 0; padding-right: 0; }
  .ad-unit--leaderboard.ad-unit--image { aspect-ratio: 320 / 50; }
  .ad-unit--leaderboard.ad-unit--composed {
    aspect-ratio: auto;
    min-height: 72px;
  }
  .ad-unit__inner {
    flex-wrap: wrap;
    padding: 14px 14px 14px 16px;
    gap: 10px;
  }
  .ad-unit__title { font-size: 16px; white-space: normal; }
  .ad-unit--native { flex-direction: column; }
  .ad-unit--native__media { width: 100%; height: 140px; }
}
.filter-group { border-bottom: 1px solid #e2e8f0; padding-bottom: 12px; margin-bottom: 12px; }
.filter-title { font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.05em; color: #64748b; margin-bottom: 8px; }
.filter-item { display: flex; align-items: center; gap: 8px; padding: 4px 0; font-size: 13px; color: #334155; cursor: pointer; }
.filter-count { margin-left: auto; font-size: 11px; color: #94a3b8; background: #f1f5f9; padding: 1px 6px; border-radius: 10px; }
.modal { display: none; }
.modal.open { display: flex; }
.menu-item { transition: background 0.15s; }
.menu-item:hover { background: #f8fafc; }
@keyframes fadeIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } }
.sidebar-link { transition: all 0.2s; }
.sidebar-link:hover { background-color: #f3f4f6; }
.sidebar-link.active { background-color: #eff6ff; color: #2563eb; border-right: 3px solid #2563eb; font-weight: 600; }
.badge { padding: 2px 8px; border-radius: 9999px; font-size: 0.75rem; font-weight: 600; display: inline-flex; align-items: center; white-space: nowrap; }
.badge-pending { background-color: #fef3c7; color: #92400e; }
.badge-approved { background-color: #d1fae5; color: #065f46; }
.badge-rejected { background-color: #fee2e2; color: #991b1b; }
.cabinet-table-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; }

/* Cabinet hybrid styles */
.quick-action { transition: all 0.2s; }
.quick-action:hover { transform: translateY(-2px); box-shadow: 0 10px 25px -5px rgba(37, 99, 235, 0.2); }
.entity-card { transition: all 0.2s; }
.entity-card:hover { transform: translateY(-2px); box-shadow: 0 10px 25px -5px rgba(37, 99, 235, 0.15); border-color: #2563eb; }

/* Cabinet commercial shell (SaaS-style) */
.cabinet-app { font-feature-settings: 'cv02', 'cv03', 'cv04', 'cv11'; }
.cabinet-sidebar {
  background: linear-gradient(180deg, #0f172a 0%, #1e293b 100%);
  border-right: 1px solid rgba(255, 255, 255, 0.06);
  box-shadow: 4px 0 24px rgba(15, 23, 42, 0.08);
}
.cabinet-sidebar__brand { border-bottom: 1px solid rgba(255, 255, 255, 0.08); }
.cabinet-topbar {
  background: rgba(255, 255, 255, 0.92);
  backdrop-filter: blur(12px);
  border-bottom: 1px solid #e2e8f0;
}
.cabinet-search-input {
  background: #f8fafc;
  border: 1px solid #e2e8f0;
  color: #0f172a;
  transition: border-color 0.15s, box-shadow 0.15s, background 0.15s;
}
.cabinet-search-input:focus {
  outline: none;
  background: #fff;
  border-color: #93c5fd;
  box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.15);
}
.cabinet-nav-group-label {
  font-size: 0.65rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: #64748b;
}
.cabinet-nav-link {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  padding: 0.625rem 0.75rem;
  border-radius: 0.625rem;
  font-size: 0.875rem;
  font-weight: 500;
  color: #cbd5e1;
  transition: background 0.15s, color 0.15s;
  text-decoration: none;
}
.cabinet-nav-link:hover { background: rgba(255, 255, 255, 0.08); color: #f8fafc; }
.cabinet-nav-link.active {
  background: rgba(59, 130, 246, 0.18);
  color: #fff;
  box-shadow: inset 0 0 0 1px rgba(96, 165, 250, 0.25);
}
.cabinet-nav-link--sub { font-size: 0.8125rem; padding-left: 0.5rem; }
.cabinet-nav-link__icon { width: 1.125rem; text-align: center; font-size: 0.875rem; opacity: 0.85; }
.cabinet-nav-link.active .cabinet-nav-link__icon { opacity: 1; color: #93c5fd; }
.cabinet-nav-badge {
  font-size: 0.625rem;
  font-weight: 700;
  padding: 0.125rem 0.375rem;
  border-radius: 9999px;
  min-width: 1.125rem;
  text-align: center;
}
.cabinet-nav-badge--alert { background: #ef4444; color: #fff; }
.cabinet-nav-badge--info { background: rgba(59, 130, 246, 0.25); color: #bfdbfe; }
.cabinet-nav-dropdown > summary::-webkit-details-marker { display: none; }
.cabinet-nav-dropdown > summary::marker { display: none; }
.cabinet-page { max-width: 80rem; }
.cabinet-page-header { border-bottom: 1px solid #e2e8f0; padding-bottom: 1.25rem; }
.cabinet-section-label {
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: #64748b;
}
.cabinet-callout {
  background: linear-gradient(135deg, #eff6ff 0%, #f8fafc 100%);
  border: 1px solid #bfdbfe;
  border-radius: 1rem;
  padding: 1rem 1.25rem;
}
.cabinet-chip-link {
  display: inline-flex;
  align-items: center;
  background: #fff;
  border: 1px solid #bfdbfe;
  border-radius: 0.625rem;
  padding: 0.5rem 0.875rem;
  font-size: 0.8125rem;
  font-weight: 600;
  color: #1d4ed8;
  transition: border-color 0.15s, box-shadow 0.15s;
}
.cabinet-chip-link:hover { border-color: #60a5fa; box-shadow: 0 4px 12px rgba(37, 99, 235, 0.12); }
.cabinet-chip-link--dashed { border-style: dashed; color: #2563eb; }
.cabinet-stat {
  background: #fff;
  border: 1px solid #e2e8f0;
  border-radius: 1rem;
  padding: 1.125rem 1.25rem;
  transition: transform 0.2s, box-shadow 0.2s, border-color 0.2s;
}
.cabinet-stat:hover {
  transform: translateY(-2px);
  box-shadow: 0 12px 28px -8px rgba(15, 23, 42, 0.12);
  border-color: #cbd5e1;
}
.cabinet-stat__icon {
  width: 2.5rem;
  height: 2.5rem;
  border-radius: 0.75rem;
  display: flex;
  align-items: center;
  justify-content: center;
  margin-bottom: 0.75rem;
}
.cabinet-stat__value { font-size: 1.5rem; font-weight: 800; color: #0f172a; line-height: 1.2; }
.cabinet-stat__label { font-size: 0.75rem; color: #64748b; margin-top: 0.125rem; }
.cabinet-panel {
  background: #fff;
  border: 1px solid #e2e8f0;
  border-radius: 1rem;
  padding: 1.25rem 1.5rem;
  box-shadow: 0 1px 2px rgba(15, 23, 42, 0.04);
}
.cabinet-panel__head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem;
  margin-bottom: 1rem;
}
.cabinet-panel__title { font-weight: 700; color: #0f172a; font-size: 0.9375rem; }
.cabinet-tabs { display: flex; overflow-x: auto; }
.cabinet-tabs { display: flex; overflow-x: auto; }
.cabinet-form { padding: 1.5rem; }
.cabinet-form-section {
  border-top: 1px solid #e2e8f0;
  padding-top: 1.25rem;
}
.cabinet-form-section__title {
  font-size: 0.9375rem;
  font-weight: 700;
  color: #0f172a;
  margin-bottom: 0.25rem;
}
.cabinet-btn-icon { width: 2.5rem; height: 2.5rem; padding: 0; justify-content: center; }
.cabinet-empty {
  text-align: center;
  padding: 3rem 1.5rem;
  background: #fff;
  border: 1px dashed #cbd5e1;
  border-radius: 1rem;
}
.cabinet-empty__icon { font-size: 2.5rem; color: #cbd5e1; margin-bottom: 1rem; }
.cabinet-empty__title { font-size: 1.125rem; font-weight: 700; color: #0f172a; margin-bottom: 0.5rem; }
.cabinet-empty__text { font-size: 0.875rem; color: #64748b; margin-bottom: 1.5rem; max-width: 28rem; margin-left: auto; margin-right: auto; }
.create-hub-card { position: relative; overflow: hidden; }
.placement-modal-card { transition: transform 0.15s, box-shadow 0.15s; }
.placement-modal-card:hover { transform: translateY(-2px); box-shadow: 0 8px 20px rgba(37, 99, 235, 0.12); }

.h-tab { padding: 0.75rem 1rem; font-size: 0.875rem; font-weight: 500; color: #6b7280; border-bottom: 2px solid transparent; transition: all 0.15s; white-space: nowrap; cursor: pointer; display: flex; align-items: center; gap: 6px; text-decoration: none; }
.h-tab:hover { color: #2563eb; background-color: #f9fafb; }
.h-tab.active { color: #2563eb; border-bottom-color: #2563eb; font-weight: 600; }
.type-pill { padding: 2px 8px; border-radius: 6px; font-size: 0.7rem; font-weight: 600; display: inline-block; }
.type-org { background: #dbeafe; color: #1e40af; }
.type-biz { background: #dbeafe; color: #1e40af; }
.type-rent { background: #f3e8ff; color: #6b21a8; }
.type-ads { background: #d1fae5; color: #065f46; }
.type-content { background: #ffedd5; color: #9a3412; }
.type-vacancy { background: #e0e7ff; color: #3730a3; }
.type-auto { background: #cffafe; color: #0e7490; }
.msg-item { transition: background 0.15s; }
.msg-item:hover { background-color: #f9fafb; }
.msg-item.unread { background-color: #eff6ff; border-left: 3px solid #2563eb; }
.msg-item.unread .msg-title { font-weight: 600; }
.cabinet-user-footer { background: #fafafa; }
.badge-hit { background: linear-gradient(135deg, #ef4444 0%, #dc2626 100%); }
.badge-new { background: linear-gradient(135deg, #f59e0b 0%, #fbbf24 100%); }
.badge-vip { background: linear-gradient(135deg, #fbbf24 0%, #f59e0b 100%); }
.badge-open { background: linear-gradient(135deg, #10b981 0%, #059669 100%); }
.property-card { transition: all 0.25s ease; }
.property-card:hover { transform: translateY(-3px); box-shadow: 0 12px 24px rgba(30,64,175,0.15); }
.property-img img { transition: transform 0.4s ease; }
.property-card:hover .property-img img { transform: scale(1.05); }
.badge-sale { background: linear-gradient(135deg, #1e40af 0%, #3b82f6 100%); }
.badge-rent { background: linear-gradient(135deg, #059669 0%, #10b981 100%); }
.real-estate-card { transition: all 0.25s ease; }
.real-estate-card:hover { transform: translateY(-3px); box-shadow: 0 12px 24px rgba(30,64,175,0.15); }
.re-badge-sale { background: linear-gradient(135deg, #1e40af 0%, #3b82f6 100%); }
.re-badge-rent { background: linear-gradient(135deg, #059669 0%, #10b981 100%); }
.re-badge-urgent { background: linear-gradient(135deg, #ef4444 0%, #dc2626 100%); }
.re-price { color: #1d4ed8; }
.re-specs svg { flex-shrink: 0; }
.real-estate-grid { display: grid; grid-template-columns: 1fr; gap: 1rem; }
@media (min-width: 768px) { .real-estate-grid { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1024px) { .real-estate-grid { grid-template-columns: repeat(3, 1fr); } }
.re-gallery-empty { background: linear-gradient(160deg, #e0e7ff 0%, #f1f5f9 55%, #dbeafe 100%); }
.re-gallery-nav { position: absolute; top: 50%; transform: translateY(-50%); z-index: 2; width: 2.25rem; height: 2.25rem; border-radius: 9999px; background: rgba(15, 23, 42, 0.55); color: #fff; display: inline-flex; align-items: center; justify-content: center; border: 0; cursor: pointer; }
.re-gallery-nav:hover { background: rgba(15, 23, 42, 0.8); }
.re-gallery-prev { left: 0.75rem; }
.re-gallery-next { right: 0.75rem; }
.re-spec-tile { background: #f8fafc; border: 1px solid #e2e8f0; border-radius: 0.75rem; padding: 0.75rem; text-align: center; }
.re-spec-tile__icon { font-size: 1.1rem; line-height: 1; margin-bottom: 0.25rem; }
.re-amenity-chip { display: inline-flex; align-items: center; gap: 0.4rem; background: #eff6ff; color: #1e40af; border: 1px solid #dbeafe; border-radius: 9999px; padding: 0.4rem 0.75rem; font-size: 0.8125rem; font-weight: 600; }
.re-spec-list { display: grid; gap: 0; }
@media (min-width: 640px) { .re-spec-list { grid-template-columns: 1fr 1fr; column-gap: 2rem; } }
.re-spec-row { display: flex; justify-content: space-between; gap: 1rem; padding: 0.7rem 0; border-bottom: 1px dashed #e2e8f0; font-size: 0.875rem; }
.re-spec-row dt { color: #64748b; }
.re-spec-row dd { font-weight: 600; color: #0f172a; text-align: right; }
.re-detail-hero .news-share { margin-top: 0; }
.news-share-compact { display: flex; align-items: center; flex-wrap: wrap; gap: 0.5rem; }
.news-share-compact .news-share-label { margin: 0; font-size: 0.6875rem; }
.news-share-compact .news-share-btn { min-height: 2rem; padding: 0 0.7rem; font-size: 0.75rem; }
.cafe-grid { display: grid; grid-template-columns: 1fr; gap: 1rem; }
@media (min-width: 768px) { .cafe-grid { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1024px) { .cafe-grid { grid-template-columns: repeat(3, 1fr); } }
.cafe-card { transition: all 0.25s ease; }
.cafe-card:hover { transform: translateY(-3px); box-shadow: 0 12px 24px rgba(30,64,175,0.15); }
.cafe-badge-open { background: linear-gradient(135deg, #10b981 0%, #059669 100%); }
.cuisine-tag { display: inline-flex; align-items: center; }
.cafe-features-row span { line-height: 1; }
.map-placeholder { background: linear-gradient(135deg, #e0e7ff 0%, #c7d2fe 100%); }
.event-card { transition: all 0.25s ease; }
@media (hover: hover) {
  .event-card:hover { transform: translateY(-3px); box-shadow: 0 12px 24px rgba(30,64,175,0.15); }
  .event-card:hover .event-poster img { transform: scale(1.05); }
}
.event-poster img { transition: transform 0.4s ease; }
.topic-row { transition: background-color 0.2s ease; }
.topic-row:hover { background-color: #f8fafc; }
.card-list-vertical { display: flex; flex-direction: column; gap: 0.75rem; }
.lost-found-card-compact { transition: all 0.2s ease; }
@media (hover: hover) {
  .lost-found-card-compact:hover { transform: translateY(-1px); box-shadow: 0 8px 20px rgba(30, 64, 175, 0.1); }
}
.landmark-card-horizontal { transition: all 0.25s ease; }
@media (hover: hover) {
  .landmark-card-horizontal:hover { transform: translateY(-2px); box-shadow: 0 12px 24px rgba(30,64,175,0.12); }
  .landmark-card-horizontal:hover .landmark-card-media img { transform: scale(1.05); }
}
.landmark-card-horizontal .landmark-card-media { min-height: 10rem; }
@media (max-width: 639px) {
  .landmark-card-horizontal .landmark-card-media { width: 100%; min-height: 12rem; height: auto; }
  .landmark-card-horizontal .landmark-card-media img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
  .landmark-card-horizontal > a { flex-direction: column; }
}
.landmark-card-horizontal .landmark-card-media img { transition: transform 0.4s ease; }
.map-picker-canvas, .map-display-canvas { min-height: 14rem; z-index: 0; }
.map-picker-canvas .leaflet-container, .map-display-canvas .leaflet-container, #cityMap.leaflet-container { height: 100%; width: 100%; font: inherit; }
#cityMap { min-height: 420px; z-index: 0; }
.city-map-marker { background: transparent; border: 0; }
.post-card { transition: box-shadow 0.2s ease; }
.post-card:hover { box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06); }
.badge-cinema { background: linear-gradient(135deg, #1e40af 0%, #3b82f6 100%); }
.badge-concert { background: linear-gradient(135deg, #dc2626 0%, #ef4444 100%); }
.badge-theater { background: linear-gradient(135deg, #7c3aed 0%, #8b5cf6 100%); }
.badge-exhibition { background: linear-gradient(135deg, #059669 0%, #10b981 100%); }
.badge-sport { background: linear-gradient(135deg, #ea580c 0%, #f97316 100%); }
.badge-kids { background: linear-gradient(135deg, #0891b2 0%, #06b6d4 100%); }
.badge-party { background: linear-gradient(135deg, #db2777 0%, #ec4899 100%); }
.badge-premiere { background: linear-gradient(135deg, #f59e0b 0%, #fbbf24 100%); }
.chip.active { background: #1e40af; color: white; }
.day-btn { transition: all 0.2s ease; }
.day-btn.active { background: #1e40af; color: white; border-color: #1e40af; }
.day-btn:hover:not(.active) { background: #eff6ff; border-color: #1e40af; }
.calendar-day { width: 36px; height: 36px; display: flex; align-items: center; justify-content: center; border-radius: 8px; font-size: 13px; cursor: pointer; transition: all 0.2s; text-decoration: none; color: inherit; }
.calendar-day:hover { background: #eff6ff; }
.calendar-day.today { background: #1e40af; color: white; font-weight: 700; }
.calendar-day.has-event { position: relative; }
.calendar-day.has-event::after { content: ''; position: absolute; bottom: 4px; width: 4px; height: 4px; background: #f59e0b; border-radius: 50%; }
.calendar-day.other-month { color: #cbd5e1; }
.afisha-grid { display: grid; grid-template-columns: 1fr; gap: 1rem; }
@media (min-width: 768px) { .afisha-grid { grid-template-columns: repeat(2, 1fr); } }
.afisha-date-strip .day-btn { text-decoration: none; }
.afisha-featured { box-shadow: 0 12px 32px rgba(30,64,175,0.12); }
.event-date-badge { background: rgba(255,255,255,0.95); color: #1e40af; padding: 0.375rem 0.5rem; border-radius: 0.5rem; backdrop-filter: blur(4px); box-shadow: 0 2px 8px rgba(0,0,0,0.15); }
.venue-card { transition: all 0.2s ease; }
.venue-card:hover { background: #f8fafc; }
.ticket-btn { background: linear-gradient(135deg, #1e40af 0%, #3b82f6 100%); transition: all 0.2s ease; }
.ticket-btn:hover { transform: translateY(-2px); box-shadow: 0 8px 20px rgba(30,64,175,0.3); }
.info-row { display: flex; align-items: flex-start; gap: 12px; padding: 12px 0; border-bottom: 1px solid #f1f5f9; }
.info-row:last-child { border-bottom: none; }
.info-icon { width: 40px; height: 40px; border-radius: 10px; background: #eff6ff; display: flex; align-items: center; justify-content: center; flex-shrink: 0; }
.related-card { transition: all 0.25s ease; }
.related-card:hover { transform: translateY(-2px); box-shadow: 0 8px 20px rgba(30,64,175,0.1); }
.master-card { transition: all 0.3s ease; }
.master-card:hover { transform: translateY(-4px); box-shadow: 0 20px 40px rgba(30,64,175,0.15); }
.master-avatar { object-fit: cover; }
.online-dot { box-shadow: 0 0 0 2px white; }
.service-price-row { border-radius: 0.375rem; }
.portfolio-thumb { transition: all 0.2s ease; cursor: pointer; }
.portfolio-thumb:hover { transform: scale(1.05); }
.portfolio-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 4px; }
.portfolio-grid img, .portfolio-grid .portfolio-placeholder { aspect-ratio: 1; object-fit: cover; border-radius: 4px; }
.portfolio-placeholder { background: linear-gradient(135deg, #e2e8f0 0%, #cbd5e1 100%); display: flex; align-items: center; justify-content: center; color: #64748b; font-size: 10px; }
.review-avatar { width: 28px; height: 28px; border-radius: 50%; background: linear-gradient(135deg, #cbd5e1 0%, #94a3b8 100%); display: flex; align-items: center; justify-content: center; font-size: 12px; font-weight: 700; color: white; }
.service-view-list { grid-template-columns: 1fr !important; }
.status-online { color: #059669; }
.rating-stars { color: #fbbf24; }
.auto-grid { display: grid; grid-template-columns: 1fr; gap: 1rem; }
@media (min-width: 768px) { .auto-grid { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1024px) { .auto-grid { grid-template-columns: repeat(3, 1fr); } }
.auto-card { transition: all 0.25s ease; }
.auto-card:hover { transform: translateY(-3px); box-shadow: 0 12px 24px rgba(30,64,175,0.15); }
.auto-img { position: relative; overflow: hidden; }
.auto-img img { transition: transform 0.4s ease; }
.auto-card:hover .auto-img img { transform: scale(1.05); }
.auto-price { color: #1d4ed8; }
.auto-specs { font-size: 11px; }
.auto-badge-urgent { background: linear-gradient(135deg, #ef4444 0%, #dc2626 100%); }
.auto-badge-owner { background: linear-gradient(135deg, #1e40af 0%, #3b82f6 100%); }
.phone-hidden { filter: blur(4px); user-select: none; }
.vip-badge { background: linear-gradient(135deg, #fbbf24 0%, #f59e0b 100%); }
.rubric-badge { font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.05em; padding: 3px 8px; border-radius: 4px; }
.rubric-incident { background: #fee2e2; color: #991b1b; }
.rubric-society { background: #dbeafe; color: #1e40af; }
.rubric-world { background: #fef3c7; color: #92400e; }
.rubric-economy { background: #d1fae5; color: #065f46; }
.rubric-sport { background: #ede9fe; color: #5b21b6; }
.rubric-culture { background: #fce7f3; color: #9d174d; }
.tag-cloud a { transition: all 0.2s ease; }
.tag-cloud a:hover { background: #1e40af; color: white; }
.cat-item { transition: all 0.2s ease; display: flex; align-items: center; gap: 8px; }
li.cat-item { display: block; }
.cat-item.active { background: #eff6ff; color: #1e40af; border-left-color: #1e40af; }
.cat-item:hover { background: #f1f5f9; }
.cat-sub { display: none; width: 100%; }
.cat-sub.open { display: block; }
.spoiler-arrow { transition: transform 0.2s ease; }
.spoiler-arrow.open { transform: rotate(180deg); }
.view-btn { transition: all 0.2s ease; }
.view-btn.active { background: #1e40af; color: white; }
.org-card-img { position: relative; overflow: hidden; }
.org-card-img img { transition: transform 0.4s ease; }
.org-card-img:hover img { transform: scale(1.05); }
.status-open { color: #1e40af; }
.status-closed { color: #dc2626; }
.org-view-list { grid-template-columns: 1fr !important; }
.org-catalog-card .status-open .w-2 { background: #2563eb; }
.company-logo-large { width: 100px; height: 100px; border-radius: 16px; display: flex; align-items: center; justify-content: center; font-weight: 900; font-size: 40px; color: white; flex-shrink: 0; }
.org-detail-hero .company-logo-large { width: 72px; height: 72px; font-size: 28px; border-radius: 12px; }
@media (min-width: 768px) {
  .org-detail-hero .company-logo-large { width: 100px; height: 100px; font-size: 40px; border-radius: 16px; }
}
.org-detail-page { padding-bottom: 0.5rem; }
.org-detail-page .ad-sidebar,
.org-detail-page .ad-unit--sidebar,
.master-detail-page .ad-sidebar,
.master-detail-page .ad-unit--sidebar { max-width: 100%; }
@media (max-width: 1023px) {
  .org-detail-page,
  .master-detail-page {
    padding-bottom: calc(4.5rem + env(safe-area-inset-bottom, 0px));
  }
  body.has-mobile-nav .org-detail-page,
  body.has-mobile-nav .master-detail-page {
    padding-bottom: calc(8.5rem + env(safe-area-inset-bottom, 0px));
  }
  body.has-mobile-nav.has-contact-bar .org-detail-page,
  body.has-mobile-nav.has-contact-bar .master-detail-page {
    padding-bottom: calc(12.5rem + env(safe-area-inset-bottom, 0px));
  }
  .org-detail-page .ad-sidebar,
  .org-detail-page .ad-unit--sidebar,
  .master-detail-page .ad-sidebar,
  .master-detail-page .ad-unit--sidebar {
    margin-bottom: 0.5rem;
  }
  .org-detail-page .page-sidebar-sticky > aside > .bg-white:first-child .space-y-2 > button#revealPhoneBtn,
  .master-detail-page .page-sidebar-sticky > aside > .bg-white:first-child .space-y-2 > button#masterCallBtn {
    display: none;
  }
}
.badge-top { background: linear-gradient(135deg, #ef4444 0%, #dc2626 100%); }
.badge-verified { background: linear-gradient(135deg, #3b82f6 0%, #2563eb 100%); }
.badge-new { background: linear-gradient(135deg, #3b82f6 0%, #1e40af 100%); }
/* .hidden/.flex: use Tailwind only — redefining here overrides `hidden lg:*` after portal-built.css */
.tab-btn { transition: all 0.2s ease; }
.tab-btn:not(.active) { background: #f1f5f9; color: #475569; }
.tab-btn:not(.active):hover { background: #e2e8f0; }
.tab-content.hidden { display: none; }

/* Restaurant detail page */
.restaurant-hero { position: relative; }
.restaurant-hero::before {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(
    to bottom,
    rgba(15, 23, 42, 0.45) 0%,
    rgba(15, 23, 42, 0.25) 45%,
    rgba(15, 23, 42, 0.55) 100%
  );
  pointer-events: none;
  z-index: 1;
}
.restaurant-hero > .max-w-7xl { position: relative; z-index: 2; }
.restaurant-cover { box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25); }
.restaurant-layout,
.restaurant-layout__main,
.restaurant-layout__sidebar { min-width: 0; }
.restaurant-tabs,
.restaurant-menu-categories { min-width: 0; max-width: 100%; }
.restaurant-tabs__scroll,
.restaurant-menu-categories {
  display: flex;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: none;
  -ms-overflow-style: none;
}
.restaurant-tabs__scroll::-webkit-scrollbar,
.restaurant-menu-categories::-webkit-scrollbar { display: none; }
.restaurant-tabs__scroll > .tab-btn,
.restaurant-menu-categories > .menu-category-btn { flex-shrink: 0; }
.menu-category-btn { transition: all 0.2s ease; }
.menu-category-btn:not(.active) { background: #f1f5f9; color: #475569; }
.menu-category-btn.active { background: #1e40af; color: white; }
.menu-item { transition: all 0.2s ease; }
.menu-item:hover { background: #f8fafc; transform: translateX(2px); }
.menu-item-img { transition: transform 0.3s ease; }
.menu-item:hover .menu-item-img { transform: scale(1.05); }
.photo-thumb { transition: all 0.3s ease; cursor: pointer; }
.photo-thumb:hover { transform: scale(1.03); }
.quantity-btn { transition: all 0.15s ease; }
.quantity-btn:hover { background: #1e40af; color: white; }
.cart-drawer { transform: translateX(100%); transition: transform 0.3s ease; }
.cart-drawer.open { transform: translateX(0); }
.cart-backdrop { opacity: 0; pointer-events: none; transition: opacity 0.3s ease; }
.cart-backdrop.open { opacity: 1; pointer-events: auto; }
.cart-item { transition: all 0.2s ease; }
.cart-item:hover { background: #f8fafc; }
.cart-fab-bounce { animation: cartBounce 0.3s ease; }
@media (max-width: 1023px) {
  .cart-fab { display: none !important; }
}
@keyframes cartBounce {
  0%, 100% { transform: scale(1); }
  50% { transform: scale(1.1); }
}
.added-animation { animation: addedPulse 0.4s ease; }
@keyframes addedPulse {
  0% { transform: scale(1); }
  50% { transform: scale(1.02); background: #eff6ff; }
  100% { transform: scale(1); }
}
.service-row { transition: all 0.2s ease; }
.service-row:hover { background: #eff6ff; }
.review-card { transition: all 0.2s ease; }
.review-card:hover { background: #eff6ff; }
.program-item { position: relative; padding-left: 2rem; }
.program-item::before { content: ''; position: absolute; left: 0.5rem; top: 0.5rem; width: 8px; height: 8px; background: #1e40af; border-radius: 50%; }
.program-item::after { content: ''; position: absolute; left: 0.75rem; top: 1.5rem; bottom: -0.5rem; width: 2px; background: #e2e8f0; }
.program-item:last-child::after { display: none; }
.gallery-thumb { transition: all 0.3s ease; cursor: pointer; }
.gallery-thumb:hover { transform: scale(1.05); }
.skill-tag { background: #f1f5f9; color: #475569; padding: 4px 12px; border-radius: 999px; font-size: 12px; font-weight: 500; }
.progress-bar { background: #e2e8f0; border-radius: 999px; overflow: hidden; height: 6px; }
.progress-fill { background: linear-gradient(90deg, #3b82f6 0%, #1e40af 100%); height: 100%; border-radius: 999px; }
.gallery-item { position: relative; overflow: hidden; border-radius: 8px; cursor: pointer; }
.gallery-item img { transition: transform 0.4s ease; }
.gallery-item:hover img { transform: scale(1.08); }
.lightbox { display: none; position: fixed; inset: 0; background: rgba(0,0,0,0.9); z-index: 100; align-items: center; justify-content: center; }
.lightbox.open { display: flex; }
.filter-item:hover { color: #1e40af; }
.filter-item input { accent-color: #1e40af; }
.map-placeholder { background: linear-gradient(135deg, #e0e7ff 0%, #c7d2fe 100%); }
.section-sidebar-inner .ad-native,
.section-sidebar-inner .ad-unit--native,
.section-sidebar-inner .ad-unit--sidebar {
  width: 100%;
  min-width: 0;
  max-width: 100%;
  box-sizing: border-box;
}
.org-view-list article a { flex-direction: row; }
.org-view-grid article a { flex-direction: column; }
@media (min-width: 640px) {
  .org-view-grid article a { flex-direction: row; }
}
.filters-mobile > summary::-webkit-details-marker { display: none; }
.filters-mobile > summary::marker { display: none; }

/* Section sidebars — sticky until parent column ends, no internal scroll.
   Keep the same gap under the sticky header as the page column padding (py-6). */
@media (min-width: 1024px) {
  :root {
    --site-header-height: 8.125rem;
    --sticky-sidebar-gap: 1.5rem;
  }
  .section-sidebar-desktop,
  .page-sidebar-sticky,
  .home-sidebar-sticky {
    top: calc(var(--site-header-height) + var(--sticky-sidebar-gap));
  }
  .section-sidebar-desktop,
  .page-sidebar-sticky {
    position: sticky;
    align-self: start;
  }
  .home-sidebar-sticky {
    position: sticky;
    align-self: stretch;
    min-height: 100%;
  }
}

/* Buttons & forms */
.btn-primary { display: inline-flex; align-items: center; justify-content: center; gap: 0.5rem; background: #1d4ed8; color: #fff; padding: 0.625rem 1.25rem; border-radius: 0.5rem; font-size: 0.875rem; font-weight: 600; transition: background 0.2s; }
.btn-primary:hover { background: #1e40af; }
.btn-secondary { display: inline-flex; align-items: center; justify-content: center; gap: 0.5rem; background: #f1f5f9; color: #334155; padding: 0.625rem 1.25rem; border-radius: 0.5rem; font-size: 0.875rem; font-weight: 600; transition: background 0.2s; }
.btn-secondary:hover { background: #e2e8f0; }
.form-input { width: 100%; padding: 0.5rem 0.75rem; border: 1px solid #e2e8f0; border-radius: 0.5rem; font-size: 0.875rem; transition: border-color 0.2s, box-shadow 0.2s; }
.form-input:focus { outline: none; border-color: #93c5fd; box-shadow: 0 0 0 3px rgba(30,64,175,0.12); }

.oauth-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.625rem;
  width: 100%;
  min-height: 44px;
  padding: 0.625rem 1rem;
  border-radius: 0.5rem;
  font-size: 0.875rem;
  font-weight: 600;
  text-decoration: none;
  transition: background 0.2s, opacity 0.2s;
}
.oauth-btn--vk { background: #0077ff; color: #fff; }
.oauth-btn--vk:hover { background: #0066dd; color: #fff; }
.oauth-btn--yandex { background: #111827; color: #fff; }
.oauth-btn--yandex:hover { background: #000; color: #fff; }
.oauth-btn__icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 1.5rem;
  height: 1.5rem;
  border-radius: 0.375rem;
  background: rgba(255, 255, 255, 0.2);
  font-size: 0.6875rem;
  font-weight: 800;
  letter-spacing: -0.02em;
}
.oauth-btn__icon--yandex { background: #fc3f1d; font-size: 0.75rem; }

.oauth-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.625rem;
  width: 100%;
  min-height: 44px;
  padding: 0.625rem 1rem;
  border-radius: 0.5rem;
  font-size: 0.875rem;
  font-weight: 600;
  text-decoration: none;
  transition: background 0.2s, opacity 0.2s;
}
.oauth-btn--vk { background: #0077ff; color: #fff; }
.oauth-btn--vk:hover { background: #0066dd; color: #fff; }
.oauth-btn--yandex { background: #111827; color: #fff; }
.oauth-btn--yandex:hover { background: #000; color: #fff; }
.oauth-btn__icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 1.5rem;
  height: 1.5rem;
  border-radius: 0.375rem;
  background: rgba(255, 255, 255, 0.2);
  font-size: 0.6875rem;
  font-weight: 800;
  letter-spacing: -0.02em;
}
.oauth-btn__icon--yandex { background: #fc3f1d; font-size: 0.75rem; }

/* Flash messages */
.flash-message { padding: 0.75rem 1rem; border-radius: 0.5rem; font-size: 0.875rem; margin-bottom: 1rem; display: flex; align-items: center; gap: 0.5rem; }
.flash-success { background: #ecfdf5; color: #047857; border: 1px solid #a7f3d0; }
.flash-error { background: #fef2f2; color: #b91c1c; border: 1px solid #fecaca; }

/* Empty states */
.empty-state { text-align: center; padding: 3rem 1.5rem; background: #fff; border: 1px dashed #cbd5e1; border-radius: 1rem; }
.empty-state-icon { font-size: 2.5rem; margin-bottom: 0.75rem; }
.empty-state-title { font-size: 1.125rem; font-weight: 800; color: #0f172a; margin-bottom: 0.5rem; }
.empty-state-text { font-size: 0.875rem; color: #64748b; max-width: 28rem; margin: 0 auto 1.25rem; line-height: 1.5; }
.empty-state-actions { display: flex; flex-wrap: wrap; justify-content: center; gap: 0.5rem; }

/* Rich text (news, landmarks, listings) */
.article-content,
.portal-rich-text {
  color: #334155;
  font-size: 1rem;
  line-height: 1.65;
  word-wrap: break-word;
}
.article-content > :first-child,
.portal-rich-text > :first-child { margin-top: 0; }
.article-content > :last-child,
.portal-rich-text > :last-child { margin-bottom: 0; }
.article-content p,
.portal-rich-text p {
  margin: 0 0 0.625rem;
  line-height: 1.65;
  color: #334155;
}
.article-content p:empty,
.portal-rich-text p:empty,
.article-content p:has(> br:only-child),
.portal-rich-text p:has(> br:only-child) {
  display: none;
}
.article-content h2,
.portal-rich-text h2 {
  font-size: 1.375rem;
  font-weight: 800;
  color: #0f172a;
  margin: 1.25rem 0 0.5rem;
  line-height: 1.3;
}
.article-content h3,
.portal-rich-text h3 {
  font-size: 1.125rem;
  font-weight: 700;
  color: #1e293b;
  margin: 1rem 0 0.375rem;
  line-height: 1.35;
}
.article-content h4,
.portal-rich-text h4 {
  font-size: 1rem;
  font-weight: 700;
  color: #1e293b;
  margin: 0.875rem 0 0.25rem;
}
.article-content ul,
.portal-rich-text ul,
.article-content ol,
.portal-rich-text ol {
  margin: 0 0 0.75rem;
  padding-left: 1.25rem;
  color: #334155;
}
.article-content ul,
.portal-rich-text ul { list-style-type: disc; }
.article-content ol,
.portal-rich-text ol { list-style-type: decimal; }
.article-content strong,
.article-content b,
.portal-rich-text strong,
.portal-rich-text b { font-weight: 700; }
.article-content em,
.article-content i,
.portal-rich-text em,
.portal-rich-text i { font-style: italic; }
.article-content u,
.portal-rich-text u { text-decoration: underline; }
.article-content li,
.portal-rich-text li {
  margin: 0 0 0.25rem;
  line-height: 1.6;
}
.article-content li > p,
.portal-rich-text li > p {
  margin-bottom: 0.25rem;
}
.article-content blockquote,
.portal-rich-text blockquote {
  border-left: 4px solid #1e40af;
  background: #eff6ff;
  padding: 0.75rem 1rem;
  margin: 0.75rem 0;
  font-style: italic;
  color: #1e293b;
  border-radius: 0 8px 8px 0;
}
.article-content figure,
.portal-rich-text figure { margin: 1rem 0; }
.article-content figure img,
.portal-rich-text figure img { width: 100%; height: auto; border-radius: 0.75rem; }
.article-content figure figcaption,
.portal-rich-text figure figcaption {
  text-align: center;
  font-size: 0.875rem;
  color: #64748b;
  margin-top: 0.375rem;
  font-style: italic;
}
.article-content img,
.portal-rich-text img {
  max-width: 100%;
  height: auto;
  border-radius: 0.75rem;
  margin: 0.75rem 0;
}
.article-content a,
.portal-rich-text a {
  color: #1d4ed8;
  font-weight: 600;
  text-decoration: underline;
  text-underline-offset: 2px;
}
.article-content a:hover,
.portal-rich-text a:hover { color: #1e3a8a; }
.article-content br + br,
.portal-rich-text br + br { display: none; }
.article-content iframe,
.portal-rich-text iframe,
.admin-preview-body iframe {
  display: block;
  width: 100%;
  max-width: 100%;
  aspect-ratio: 16 / 9;
  height: auto;
  min-height: 200px;
  border: 0;
  border-radius: 0.75rem;
  margin: 1.25rem 0;
  background: #0f172a;
}
.article-content .portal-video,
.portal-rich-text .portal-video,
.admin-preview-body .portal-video {
  position: relative;
  width: 100%;
  max-width: 100%;
  aspect-ratio: 16 / 9;
  margin: 1.25rem 0;
  background: #0f172a;
  border-radius: 0.75rem;
  overflow: hidden;
  box-shadow: 0 8px 24px rgba(15, 23, 42, 0.12);
}
.article-content .portal-video iframe,
.portal-rich-text .portal-video iframe,
.admin-preview-body .portal-video iframe {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  min-height: 0;
  aspect-ratio: auto;
  border: 0;
  margin: 0;
  border-radius: 0;
  display: block;
}
.article-content [style*="text-align: center"] img,
.portal-rich-text [style*="text-align: center"] img {
  display: block;
  margin: 0.75rem auto;
}
.article-content [style*="text-align: right"] img,
.portal-rich-text [style*="text-align: right"] img {
  display: block;
  margin: 0.75rem 0 0.75rem auto;
}

/* News category badges */
.rubric-tourist { background: #dbeafe; color: #1e40af; }
.rubric-events { background: #ede9fe; color: #5b21b6; }
.rubric-places { background: #cffafe; color: #0e7490; }
.rubric-gastronomy { background: #ffedd5; color: #9a3412; }
.rubric-business { background: #e0e7ff; color: #3730a3; }
.related-news-card { transition: all 0.25s ease; }
.related-news-card:hover { transform: translateY(-2px); box-shadow: 0 8px 20px rgba(30,64,175,0.1); }

/* Featured / editorial news */
.news-featured { position: relative; overflow: hidden; }
.news-featured::after { content: ''; position: absolute; inset: 0; background: linear-gradient(to top, rgba(15,23,42,0.85) 0%, rgba(15,23,42,0.2) 50%, transparent 100%); pointer-events: none; }
.news-featured-badge { position: absolute; top: 1rem; left: 1rem; z-index: 2; background: #f59e0b; color: #fff; font-size: 0.625rem; font-weight: 800; text-transform: uppercase; letter-spacing: 0.05em; padding: 0.25rem 0.625rem; border-radius: 9999px; }

/* Event date pill */
.event-date-pill { display: inline-flex; flex-direction: column; align-items: center; justify-content: center; min-width: 3.5rem; padding: 0.375rem 0.625rem; background: #1d4ed8; color: #fff; border-radius: 0.5rem; font-weight: 800; line-height: 1.1; }
.event-date-pill .day { font-size: 1.25rem; }
.event-date-pill .month { font-size: 0.625rem; text-transform: uppercase; opacity: 0.85; }

/* Contact action bar */
.contact-bar { display: flex; flex-wrap: wrap; gap: 0.5rem; padding: 1rem; background: #f8fafc; border: 1px solid #e2e8f0; border-radius: 0.75rem; }
.contact-bar-btn { display: inline-flex; align-items: center; gap: 0.375rem; padding: 0.5rem 1rem; border-radius: 0.5rem; font-size: 0.8125rem; font-weight: 600; transition: all 0.2s; }

/* Reading progress */
.reading-progress { position: fixed; top: 0; left: 0; height: 3px; background: linear-gradient(90deg, #1e40af, #3b82f6); z-index: 100; transition: width 0.1s; }

/* News article page */
.news-article-back { text-decoration: none; }
.news-article-main { background: #fff; border: 1px solid #e2e8f0; border-radius: 1rem; overflow: hidden; box-shadow: 0 1px 3px rgba(15, 23, 42, 0.04); }
.news-article-hero { position: relative; min-height: 280px; max-height: 480px; overflow: hidden; }
@media (min-width: 768px) { .news-article-hero { min-height: 360px; } }
.news-article-hero-img { width: 100%; height: 100%; min-height: 280px; object-fit: cover; }
.news-article-hero-overlay { position: absolute; inset: 0; background: linear-gradient(to top, rgba(15, 23, 42, 0.92) 0%, rgba(15, 23, 42, 0.45) 45%, rgba(15, 23, 42, 0.15) 100%); }
.news-article-hero-content { position: absolute; left: 0; right: 0; bottom: 0; padding: 1.5rem; }
@media (min-width: 768px) { .news-article-hero-content { padding: 2rem 2.25rem; } }
.news-article-hero-title { font-size: 1.625rem; font-weight: 900; color: #fff; line-height: 1.2; text-shadow: 0 2px 12px rgba(0, 0, 0, 0.25); }
@media (min-width: 768px) { .news-article-hero-title { font-size: 2.125rem; } }
.news-article-header { padding: 1.75rem 1.5rem 0; }
@media (min-width: 768px) { .news-article-header { padding: 2rem 2.25rem 0; } }
.news-article-title { font-size: 1.75rem; font-weight: 900; color: #0f172a; line-height: 1.2; }
@media (min-width: 768px) { .news-article-title { font-size: 2.25rem; } }
.news-article-cat-pill { display: inline-flex; align-items: center; padding: 0.35rem 0.75rem; border-radius: 9999px; background: rgba(255, 255, 255, 0.95); color: #1e40af; font-size: 0.75rem; font-weight: 700; text-decoration: none; transition: background 0.2s; }
.news-article-hero .news-article-cat-pill { backdrop-filter: blur(4px); }
.news-article-cat-pill:hover { background: #fff; color: #1d4ed8; }
.news-article-header .news-article-cat-pill { background: #eff6ff; }
.news-article-urgent { display: inline-flex; align-items: center; padding: 0.35rem 0.65rem; border-radius: 9999px; background: #dc2626; color: #fff; font-size: 0.6875rem; font-weight: 800; text-transform: uppercase; letter-spacing: 0.04em; }
.news-article-meta { display: flex; flex-wrap: wrap; gap: 1rem 1.5rem; padding: 1.25rem 1.5rem; border-bottom: 1px solid #f1f5f9; color: #64748b; font-size: 0.8125rem; }
@media (min-width: 768px) { .news-article-meta { padding: 1.25rem 2.25rem; } }
.news-article-meta-item { display: inline-flex; align-items: center; gap: 0.4rem; }
.news-article-lead { margin: 0; padding: 1.5rem 1.5rem 0; font-size: 1.125rem; line-height: 1.65; font-weight: 500; color: #334155; border-left: 4px solid #2563eb; margin-left: 1.5rem; padding-left: 1rem; }
@media (min-width: 768px) { .news-article-lead { margin-left: 2.25rem; padding: 1.75rem 2.25rem 0 1.25rem; font-size: 1.2rem; } }
.news-article-body { padding: 1.5rem; }
@media (min-width: 768px) { .news-article-body { padding: 2rem 2.25rem; } }
.news-article-footer { padding: 0 1.5rem 1.75rem; border-top: 1px solid #f1f5f9; margin-top: 0.5rem; padding-top: 1.5rem; }
@media (min-width: 768px) { .news-article-footer { padding: 1.5rem 2.25rem 2rem; } }
.news-article-more-link { display: inline-flex; align-items: center; gap: 0.35rem; margin-top: 1rem; font-size: 0.875rem; font-weight: 600; color: #1d4ed8; text-decoration: none; }
.news-article-more-link:hover { color: #1e3a8a; }
.news-related-card { text-decoration: none; }
.news-sidebar-item { text-decoration: none; color: inherit; }

/* Share buttons (article) */
.news-share { margin-top: 0; padding-top: 0; border-top: none; }
.news-share-label { display: block; font-size: 0.75rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.06em; color: #94a3b8; margin-bottom: 0.75rem; }
.news-share-actions { display: flex; flex-wrap: wrap; gap: 0.5rem; }
.news-share-btn { display: inline-flex; align-items: center; justify-content: center; gap: 0.35rem; min-height: 2.5rem; padding: 0 1rem; border-radius: 0.625rem; font-size: 0.8125rem; font-weight: 700; border: none; cursor: pointer; transition: opacity 0.2s, transform 0.15s; text-decoration: none; color: #fff; }
.news-share-btn:hover { opacity: 0.92; transform: translateY(-1px); }
.news-share-vk { background: #4a76a8; }
.news-share-ok { background: #ee8208; }
.news-share-max { background: #7c3aed; }
.news-share-copy { background: #f1f5f9; color: #475569; border: 1px solid #e2e8f0; }
.news-share-copy:hover { background: #e2e8f0; color: #334155; }

/* Page sections */
.page-section { padding-top: 2rem; padding-bottom: 2rem; }

/* News index cards */
.news-card-hover { transition: all 0.3s ease; }
.news-card-hover:hover { transform: translateY(-2px); box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.1), 0 8px 10px -6px rgba(0, 0, 0, 0.1); }
.line-clamp-2 { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.line-clamp-3 { display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }

/* News page header */
.news-section-hero { background: linear-gradient(135deg, #1e3a8a 0%, #1d4ed8 45%, #2563eb 100%); }
.news-section-hero__badge { display: inline-flex; align-items: center; gap: 0.375rem; font-size: 0.6875rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.08em; color: #bfdbfe; margin-bottom: 0.75rem; }
.news-section-hero__title { font-size: clamp(1.75rem, 4vw, 2.25rem); font-weight: 900; line-height: 1.15; margin-bottom: 0.625rem; }
.news-section-hero__subtitle { font-size: 0.875rem; line-height: 1.55; color: rgba(255,255,255,0.88); max-width: 36rem; margin-bottom: 0; }
.news-section-hero__actions { display: flex; flex-direction: column; align-items: flex-end; gap: 0.75rem; flex-shrink: 0; }
.news-section-hero__stats-row { display: flex; align-items: stretch; gap: 0.75rem; }
@media (min-width: 640px) {
  .news-section-hero__actions { flex-direction: row; align-items: center; gap: 1rem; }
}
.news-section-hero__cta { display: inline-flex; align-items: center; gap: 0.5rem; background: #fff; color: #1e40af; font-size: 0.875rem; font-weight: 700; padding: 0.625rem 1.25rem; border-radius: 0.625rem; transition: all 0.2s ease; box-shadow: 0 4px 14px rgba(0,0,0,0.12); white-space: nowrap; flex-shrink: 0; }
.news-section-hero__cta:hover { background: #eff6ff; transform: translateY(-1px); box-shadow: 0 6px 18px rgba(0,0,0,0.16); }
.news-section-hero__stat { background: rgba(15,23,42,0.35); backdrop-filter: blur(6px); border: 1px solid rgba(255,255,255,0.12); border-radius: 0.75rem; padding: 0.875rem 1.25rem; text-align: center; min-width: 7rem; }
.news-section-hero__stat-value { font-size: 1.5rem; font-weight: 900; line-height: 1.1; }
.news-section-hero__stat-label { font-size: 0.6875rem; color: rgba(255,255,255,0.75); margin-top: 0.25rem; text-transform: lowercase; }
.news-page-header { overflow-x: clip; }
.news-hero-small-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.news-hero-small-grid > * { min-width: 0; }
.news-hero-layout { align-items: stretch; }
.news-hero-layout > * { min-height: 0; }
@media (min-width: 768px) {
  .news-hero-layout { grid-template-rows: 1fr; }
}
.news-hero-layout { align-items: stretch; }
.news-hero-layout > * { min-height: 0; }
@media (min-width: 768px) {
  .news-hero-layout { grid-template-rows: 1fr; }
}
@media (max-width: 639px) {
  .news-section-hero__layout { flex-direction: column; align-items: stretch; gap: 1.25rem; }
  .news-section-hero__actions {
    width: 100%;
    max-width: 100%;
    flex-shrink: 1;
    align-items: stretch;
  }
  .news-section-hero__stats-row { width: 100%; }
  .news-section-hero__stat { flex: 1; min-width: 0; padding: 0.75rem 0.875rem; }
  .news-section-hero__cta {
    width: 100%;
    justify-content: center;
    white-space: normal;
    text-align: center;
  }
  .news-section-hero__title {
    font-size: clamp(1.375rem, 6vw, 1.75rem);
    overflow-wrap: anywhere;
  }
  .news-hero-small-grid { grid-template-columns: 1fr; }
}
@media (min-width: 640px) and (max-width: 1023px) {
  .news-section-hero__actions { max-width: 100%; flex-wrap: wrap; justify-content: flex-start; }
  .news-section-hero__stats-row { flex-wrap: wrap; }
  .news-section-hero__stat { min-width: 0; flex: 1 1 6.5rem; }
}
.news-cat-pills { overflow-x: auto; -ms-overflow-style: none; scrollbar-width: none; padding-bottom: 0.125rem; }
.news-cat-pills::-webkit-scrollbar { display: none; }
.news-cat-pill { display: inline-flex; align-items: center; gap: 0.5rem; padding: 0.5rem 1rem; border-radius: 9999px; font-size: 0.8125rem; font-weight: 600; color: #475569; background: #f1f5f9; border: 1px solid #e2e8f0; white-space: nowrap; transition: all 0.2s ease; }
.news-cat-pill:hover { background: #e2e8f0; color: #1e293b; }
.news-cat-pill--active { background: #1e3a8a; color: #fff; border-color: #1e3a8a; }
.news-cat-pill--active:hover { background: #1e40af; color: #fff; }
.news-cat-pill--active .news-cat-pill__count { color: rgba(255,255,255,0.75); }
.news-cat-pill__icon { width: 1rem; height: 1rem; flex-shrink: 0; opacity: 0.9; }
.news-cat-pill__count { font-size: 0.75rem; font-weight: 500; color: #94a3b8; }
.news-cat-dot { width: 0.5rem; height: 0.5rem; border-radius: 9999px; flex-shrink: 0; }
.news-cat-dot--incidents { background: #ef4444; }
.news-cat-dot--society { background: #3b82f6; }
.news-cat-dot--world { background: #f97316; }
.news-cat-dot--economy { background: #22c55e; }
.news-cat-dot--sport { background: #a855f7; }
.news-cat-dot--culture { background: #ec4899; }
.news-cat-dot--default { background: #94a3b8; }

/* Vacancies catalog & detail */
.vacancy-card { transition: all 0.25s ease; min-width: 0; overflow: hidden; }
.vacancy-card:hover { transform: translateY(-2px); box-shadow: 0 10px 30px rgba(30,64,175,0.15); }
.vacancy-card__head {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 0.375rem 0.5rem;
  align-items: start;
  margin-bottom: 0.25rem;
}
.vacancy-card__title { min-width: 0; overflow-wrap: anywhere; }
.vacancy-card__actions {
  display: flex;
  align-items: center;
  gap: 0.375rem;
  flex-shrink: 0;
}
.company-logo { width: 48px; height: 48px; border-radius: 10px; display: flex; align-items: center; justify-content: center; font-weight: 800; font-size: 20px; color: white; flex-shrink: 0; }
.salary-highlight { color: #1e40af; font-weight: 800; font-size: 18px; word-break: break-word; }
.skill-tag { background: #f1f5f9; color: #475569; padding: 3px 10px; border-radius: 12px; font-size: 11px; font-weight: 500; }
.badge-hot { background: linear-gradient(135deg, #ef4444 0%, #dc2626 100%); }
.badge-new { background: linear-gradient(135deg, #3b82f6 0%, #1e40af 100%); }
.badge-top { background: linear-gradient(135deg, #f59e0b 0%, #d97706 100%); }
.badge-remote { background: linear-gradient(135deg, #8b5cf6 0%, #7c3aed 100%); }
.badge-student { background: linear-gradient(135deg, #ec4899 0%, #db2777 100%); }
#vacanciesList { min-width: 0; max-width: 100%; }
.vacancy-view-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; min-width: 0; }
.vacancy-view-list { display: flex; flex-direction: column; gap: 1rem; min-width: 0; }
@media (max-width: 639px) {
  .vacancy-view-grid { grid-template-columns: minmax(0, 1fr); }
  .vacancy-card__head { grid-template-columns: 1fr; }
  .vacancy-card__actions { justify-self: end; }
}
.benefit-item { display: flex; align-items: flex-start; gap: 12px; padding: 12px 0; }
.benefit-icon { width: 40px; height: 40px; border-radius: 10px; background: #eff6ff; display: flex; align-items: center; justify-content: center; flex-shrink: 0; }
.chip:hover { background: #eff6ff; color: #1e40af; }

/* Home page news blocks */
.home-news-tabs .tab-btn.active { background: #1e40af; color: #fff; }
.home-news-featured__media { overflow: hidden; }
.home-news-list__thumb { min-width: 5rem; min-height: 5rem; }
.news-list-row + .news-list-row { margin-top: 0; }
.news-hero-row { transition: box-shadow 0.2s ease, border-color 0.2s ease; }
.news-hero-row:hover { border-color: #bfdbfe; box-shadow: 0 4px 12px rgba(30, 64, 175, 0.08); }
.news-hero-row-thumb { min-width: 5rem; }
.company-news-card__logo { flex-shrink: 0; }
.badge-urgent { z-index: 1; }
.company-news-card .badge-promo { color: #ea580c; }
.company-news-card .badge-new { color: #16a34a; background: none; padding: 0; border-radius: 0; font-size: inherit; }
.home-news-footer a.bg-blue-700 { background-color: #1d4ed8; }
.home-news-footer a.bg-blue-700:hover { background-color: #1e40af; }

.home-popular-news__item {
  align-items: flex-start;
}
.home-popular-news__num {
  font-variant-numeric: tabular-nums;
}

/* ── Mobile UX ── */
html { overflow-x: clip; }
body {
  overflow-x: clip;
  max-width: 100%;
}
.mega-menu {
  box-sizing: border-box;
  width: min(100vw, 80rem);
  max-width: 100vw;
}
body.has-mobile-nav { padding-bottom: calc(3.75rem + env(safe-area-inset-bottom, 0px)); }
body.has-mobile-nav.has-contact-bar,
body.has-mobile-nav.has-cart-bar {
  padding-bottom: calc(7.25rem + env(safe-area-inset-bottom, 0px));
}
@media (min-width: 1024px) {
  body.has-mobile-nav { padding-bottom: 0; }
  body.has-mobile-nav.has-contact-bar,
  body.has-mobile-nav.has-cart-bar { padding-bottom: 0; }
}
.site-header { padding-top: env(safe-area-inset-top, 0px); }
.tap-target {
  min-width: 44px;
  min-height: 44px;
  align-items: center;
  justify-content: center;
}
/* display only when visible — unconditional inline-flex overrides Tailwind lg:hidden */
@media (max-width: 1023px) {
  .tap-target { display: inline-flex; }
}
@media (min-width: 1024px) {
  .tap-target:not(.lg\:hidden) { display: inline-flex; }
}
.mobile-menu {
  padding-bottom: env(safe-area-inset-bottom, 0px);
  -webkit-overflow-scrolling: touch;
}
.mobile-menu.open { z-index: 60; }
.backdrop.open { z-index: 55; }
.mobile-menu__link { min-height: 44px; display: flex; align-items: center; }
.mobile-menu__group > summary::-webkit-details-marker { display: none; }
.mobile-menu__group > summary::marker { display: none; }
.mobile-menu__group[open] .mobile-menu__chevron { transform: rotate(180deg); }
body.menu-open { overflow: hidden; }
#placementModal { display: none; }
#placementModal.is-open { display: block; }
.mobile-bottom-nav {
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 45;
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 0;
  background: #fff;
  border-top: 1px solid #e2e8f0;
  padding-bottom: env(safe-area-inset-bottom, 0px);
  box-shadow: 0 -4px 16px rgba(15, 23, 42, 0.08);
}
.mobile-bottom-nav__item {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 0.125rem;
  min-height: 3.75rem;
  min-width: 0;
  padding: 0.375rem 0.25rem;
  font-size: 0.625rem;
  font-weight: 600;
  color: #64748b;
  text-align: center;
  transition: color 0.15s ease, background 0.15s ease;
  border: none;
  background: transparent;
  cursor: pointer;
}
.mobile-bottom-nav__item span {
  max-width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  line-height: 1.2;
}
.mobile-bottom-nav__item:hover,
.mobile-bottom-nav__item--active { color: #1d4ed8; }
.mobile-bottom-nav__item--active { background: #eff6ff; }
@media (min-width: 1024px) {
  .mobile-bottom-nav { display: none !important; }
}
/* Catalog toolbar: keep filters left + count/view/map right on one row (sidebar narrows main) */
@media (min-width: 768px) {
  .catalog-toolbar__row {
    flex-wrap: nowrap;
  }
  .catalog-toolbar__filters {
    flex: 1 1 auto;
    min-width: 0;
  }
  .catalog-toolbar__actions {
    flex-shrink: 0;
    margin-left: auto;
  }
}
@media (max-width: 767px) {
  .catalog-toolbar__selects {
    display: flex;
    flex-direction: row;
    flex-wrap: nowrap;
    gap: 0.5rem;
    width: 100%;
    min-width: 0;
  }
  .catalog-toolbar__selects .catalog-toolbar__select {
    flex: 1 1 0;
    min-width: 0;
    width: auto;
    max-width: 100%;
  }
}
@media (max-width: 1023px) {
  .site-header > .max-w-7xl > .flex,
  .site-header .max-w-7xl > .flex {
    min-width: 0;
  }
  .site-header nav,
  header > nav.border-t {
    overflow-x: clip;
  }
  header > nav.border-t .catalog-wrap,
  header > nav.border-t .catalog-wrap + .h-6 {
    display: none;
  }
  .filters-mobile > summary { list-style: none; }
  .filters-mobile:not([open]) > .filters-mobile-panel { display: none; }
  .filter-item { min-height: 44px; padding: 0.5rem 0; }
  .chip { min-height: 2.25rem; display: inline-flex; align-items: center; }
  .catalog-toolbar select { width: 100%; }
  .section-page-grid { min-width: 0; }
  .page-section { padding-top: 1.5rem; padding-bottom: 1.5rem; }
  .section-hero .flex-wrap.gap-3 { width: 100%; }
  .section-hero .bg-white\/10 { min-width: calc(50% - 0.375rem); flex: 1 1 auto; }
  .mobile-footer { margin-bottom: 0; }
  .restaurant-hero::before {
    background: linear-gradient(
      to bottom,
      rgba(15, 23, 42, 0.6) 0%,
      rgba(15, 23, 42, 0.35) 40%,
      rgba(15, 23, 42, 0.7) 100%
    );
  }
  .restaurant-hero .bg-white\/10 { min-width: 0; word-break: break-word; }
  .restaurant-tabs__scroll,
  .restaurant-menu-categories { margin-left: -0.125rem; margin-right: -0.125rem; padding-left: 0.125rem; padding-right: 0.125rem; }
}
@media (max-width: 639px) {
  .home-news-tabs .tab-btn,
  .view-btn { min-width: 44px; min-height: 44px; }
  .site-header__toolbar-secondary { display: none !important; }
  .topbar-cabinet-label { display: none; }
  .site-header__brand-text { display: none; }
}

/* Active filters */
.active-filters { align-items: center; }
.active-filter-chip { display: inline-flex; align-items: center; gap: 0.35rem; padding: 0.35rem 0.65rem; border-radius: 9999px; background: #eff6ff; border: 1px solid #bfdbfe; color: #1e40af; font-size: 0.75rem; font-weight: 600; text-decoration: none; transition: background 0.15s, border-color 0.15s; }
.active-filter-chip:hover { background: #dbeafe; border-color: #93c5fd; }
.active-filter-chip-x { font-size: 1rem; line-height: 1; opacity: 0.6; }
.active-filter-chip:hover .active-filter-chip-x { opacity: 1; }
.active-filter-reset { text-decoration: none; white-space: nowrap; }

/* Admin design system */
.admin-app,
.admin-page {
  --admin-accent: #1d4ed8;
  --admin-border: #e2e8f0;
  --admin-muted: #64748b;
  --admin-surface: #ffffff;
  font-feature-settings: 'cv02', 'cv03', 'cv04', 'cv11';
}
.admin-app { font-feature-settings: 'cv02', 'cv03', 'cv04', 'cv11'; }
.admin-sidebar {
  background: linear-gradient(180deg, #0f172a 0%, #1e293b 100%);
  border-right: 1px solid rgba(255, 255, 255, 0.06);
  box-shadow: 4px 0 24px rgba(15, 23, 42, 0.08);
}
.admin-sidebar__brand { border-bottom: 1px solid rgba(255, 255, 255, 0.08); }
.admin-sidebar__footer { flex-shrink: 0; }
.admin-topbar {
  background: rgba(255, 255, 255, 0.92);
  backdrop-filter: blur(12px);
  border-bottom: 1px solid #e2e8f0;
}
.admin-nav-group-label {
  font-size: 0.65rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: #64748b;
}
.admin-nav-link {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  padding: 0.625rem 0.75rem;
  border-radius: 0.625rem;
  font-size: 0.875rem;
  font-weight: 500;
  color: #cbd5e1;
  transition: background 0.15s, color 0.15s;
  text-decoration: none;
}
.admin-nav-link:hover { background: rgba(255, 255, 255, 0.08); color: #f8fafc; }
.admin-nav-link.active {
  background: rgba(59, 130, 246, 0.18);
  color: #fff;
  box-shadow: inset 0 0 0 1px rgba(96, 165, 250, 0.25);
}
.admin-nav-link__icon { width: 1.125rem; text-align: center; font-size: 0.875rem; opacity: 0.85; }
.admin-nav-link.active .admin-nav-link__icon { opacity: 1; color: #93c5fd; }
.admin-nav-badge {
  font-size: 0.625rem;
  font-weight: 700;
  padding: 0.125rem 0.375rem;
  border-radius: 9999px;
  min-width: 1.125rem;
  text-align: center;
}
.admin-nav-badge--alert { background: #ef4444; color: #fff; }
.admin-nav-badge--warn { background: #f59e0b; color: #fff; }
.admin-breadcrumbs {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.375rem;
  font-size: 0.8125rem;
  color: #64748b;
  margin-bottom: 0.75rem;
}
.admin-breadcrumbs a { color: #2563eb; text-decoration: none; font-weight: 500; }
.admin-breadcrumbs a:hover { text-decoration: underline; }
.admin-breadcrumbs__sep { opacity: 0.45; }
.admin-breadcrumbs__current { color: #334155; font-weight: 600; }
.admin-page-header {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-start;
  justify-content: space-between;
  gap: 1rem;
  margin-bottom: 1.5rem;
  padding-bottom: 1rem;
  border-bottom: 1px solid #e2e8f0;
}
.admin-page-header__main { min-width: 0; }
.admin-callout {
  background: linear-gradient(135deg, #eff6ff 0%, #f8fafc 100%);
  border: 1px solid #bfdbfe;
  border-radius: 0.875rem;
  padding: 0.875rem 1rem;
  font-size: 0.875rem;
}
.admin-callout--warn {
  background: #fffbeb;
  border-color: #fcd34d;
  color: #92400e;
}
.admin-stat-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(10rem, 1fr));
  gap: 1rem;
}
.admin-stat {
  background: #fff;
  border: 1px solid #e2e8f0;
  border-radius: 0.875rem;
  padding: 1rem 1.125rem;
}
.admin-stat__value { font-size: 1.5rem; font-weight: 800; color: #0f172a; line-height: 1.2; }
.admin-stat__value--success { color: #047857; }
.admin-stat__value--accent { color: #1d4ed8; }
.admin-stat__value--warn { color: #b45309; }
.admin-stat__value--danger { color: #dc2626; }
.admin-stat__label { font-size: 0.8125rem; color: #64748b; margin-top: 0.25rem; }
.admin-stat-grid--5 { grid-template-columns: repeat(auto-fit, minmax(9rem, 1fr)); }
@media (min-width: 1024px) { .admin-stat-grid--5 { grid-template-columns: repeat(5, 1fr); } }
.admin-subsection-title { font-size: 0.9375rem; font-weight: 700; color: #0f172a; margin: 0 0 0.75rem; }
.admin-chart-card { background: var(--admin-surface); border: 1px solid var(--admin-border); border-radius: 0.875rem; padding: 1rem 1.25rem; margin-bottom: 2rem; }
.admin-chart-card__title { font-size: 0.875rem; font-weight: 700; color: #0f172a; margin-bottom: 0.75rem; }
.admin-fieldset {
  background: var(--admin-surface);
  border: 1px solid var(--admin-border);
  border-radius: 0.875rem;
  padding: 1.25rem 1.5rem;
  margin: 0;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 1rem;
}
.admin-fieldset__title {
  font-size: 0.9375rem;
  font-weight: 700;
  color: #0f172a;
  margin: 0;
  line-height: 1.4;
}
.admin-fieldset legend {
  display: block;
  width: 100%;
  font-size: 0.9375rem;
  font-weight: 700;
  color: #0f172a;
  padding: 0;
  margin: 0;
  line-height: 1.4;
  float: none;
}
.admin-fieldset-grid { display: grid; gap: 1rem; }
@media (min-width: 640px) { .admin-fieldset-grid--2 { grid-template-columns: repeat(2, 1fr); } }
.admin-icon-picker { display: flex; flex-wrap: wrap; gap: 0.5rem; }
.admin-icon-picker__btn {
  font-family: "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji", sans-serif;
  width: 2.5rem;
  height: 2.5rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1px solid var(--admin-border);
  border-radius: 0.625rem;
  background: #fff;
  font-size: 1.25rem;
  line-height: 1;
  cursor: pointer;
  transition: border-color 0.15s, background 0.15s, box-shadow 0.15s;
}
.admin-icon-picker__btn:hover { border-color: #93c5fd; background: #f8fafc; }
.admin-icon-picker__btn.is-active {
  border-color: #3b82f6;
  background: #eff6ff;
  box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.15);
}
.admin-icon-picker { display: flex; flex-wrap: wrap; gap: 0.5rem; }
.admin-icon-picker__btn {
  font-family: "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji", sans-serif;
  width: 2.5rem;
  height: 2.5rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1px solid var(--admin-border);
  border-radius: 0.625rem;
  background: #fff;
  font-size: 1.25rem;
  line-height: 1;
  cursor: pointer;
  transition: border-color 0.15s, background 0.15s, box-shadow 0.15s;
}
.admin-icon-picker__btn:hover { border-color: #93c5fd; background: #f8fafc; }
.admin-icon-picker__btn.is-active {
  border-color: #3b82f6;
  background: #eff6ff;
  box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.15);
}
.admin-flash { padding: 0.75rem 1rem; border-radius: 0.625rem; font-size: 0.875rem; margin-bottom: 1rem; }
.admin-flash--success { background: #dcfce7; color: #166534; border: 1px solid #bbf7d0; }
.admin-flash--error { background: #fee2e2; color: #991b1b; border: 1px solid #fecaca; }
.admin-ticket-list { display: flex; flex-direction: column; gap: 1rem; margin-bottom: 2rem; }
.admin-ticket-card { background: var(--admin-surface); border: 1px solid var(--admin-border); border-radius: 0.875rem; padding: 1rem 1.25rem; }
.admin-ticket-card__header { display: flex; flex-wrap: wrap; align-items: flex-start; justify-content: space-between; gap: 0.5rem; margin-bottom: 0.75rem; }
.admin-ticket-card__title { font-size: 0.875rem; font-weight: 600; color: #0f172a; }
.admin-ticket-card__meta { font-size: 0.75rem; color: var(--admin-muted); margin-top: 0.125rem; }
.admin-ticket-card__body { font-size: 0.875rem; color: #334155; white-space: pre-wrap; margin-bottom: 0.75rem; line-height: 1.6; }
.admin-ticket-card__reply { background: #eff6ff; border: 1px solid #bfdbfe; border-radius: 0.625rem; padding: 0.75rem 1rem; font-size: 0.875rem; margin-bottom: 0.75rem; }
.admin-ticket-card__reply-label { font-size: 0.75rem; font-weight: 600; color: #1d4ed8; margin-bottom: 0.25rem; }
.admin-attachment-link { display: inline-flex; align-items: center; gap: 0.375rem; font-size: 0.75rem; background: #f1f5f9; color: #334155; padding: 0.375rem 0.75rem; border-radius: 0.5rem; text-decoration: none; transition: background 0.15s; }
.admin-attachment-link:hover { background: #e2e8f0; }
.admin-btn-danger { background: #fef2f2; color: #991b1b; border-color: #fecaca; }
.admin-btn-danger:hover { background: #fee2e2; border-color: #fca5a5; }
.admin-btn-warning { background: #fffbeb; color: #92400e; border-color: #fcd34d; }
.admin-btn-warning:hover { background: #fef3c7; }
.admin-details summary { cursor: pointer; color: #1d4ed8; font-weight: 600; font-size: 0.8125rem; list-style: none; }
.admin-details summary::-webkit-details-marker { display: none; }
.admin-details-form { margin-top: 0.5rem; padding: 0.75rem; background: #f8fafc; border-radius: 0.625rem; min-width: 17.5rem; }
.admin-purpose-tags { display: flex; flex-wrap: wrap; gap: 0.75rem; }
.admin-purpose-tag { font-size: 0.8125rem; background: #f8fafc; border: 1px solid var(--admin-border); padding: 0.5rem 0.75rem; border-radius: 0.5rem; }
.admin-toolbar { display: flex; flex-wrap: wrap; gap: 0.75rem; align-items: center; }
.admin-input--search { flex: 1 1 14rem; min-width: 12rem; max-width: 22rem; min-height: 2.75rem; }
.admin-select--inline { width: auto; min-width: 11rem; min-height: 2.75rem; }
.admin-badge-muted {
  display: inline-block;
  margin-left: 0.375rem;
  padding: 0.125rem 0.5rem;
  border-radius: 9999px;
  background: #f1f5f9;
  color: #64748b;
  font-size: 0.6875rem;
  font-weight: 600;
  vertical-align: middle;
}
.admin-pagination {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem 1rem;
  margin: 0 0 2rem;
  padding: 0.875rem 1rem;
  background: #fff;
  border: 1px solid var(--admin-border);
  border-radius: 0.75rem;
}
.admin-pagination__summary { margin: 0; font-size: 0.8125rem; color: #64748b; }
.admin-pagination__controls { display: flex; flex-wrap: wrap; align-items: center; gap: 0.5rem; }
.admin-pagination__btn,
.admin-pagination__page {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 2.25rem;
  padding: 0.375rem 0.75rem;
  border-radius: 0.5rem;
  border: 1px solid #e2e8f0;
  background: #fff;
  color: #334155;
  font-size: 0.8125rem;
  font-weight: 600;
  text-decoration: none;
}
.admin-pagination__btn:hover,
.admin-pagination__page:hover { background: #f8fafc; color: #1d4ed8; }
.admin-pagination__btn.is-disabled,
.admin-pagination__page.is-disabled { opacity: 0.45; cursor: default; }
.admin-pagination__pages { display: inline-flex; align-items: center; gap: 0.25rem; }
.admin-pagination__page.is-active {
  background: #eff6ff;
  border-color: #93c5fd;
  color: #1d4ed8;
}
.admin-pagination__ellipsis { padding: 0 0.25rem; color: #94a3b8; font-size: 0.8125rem; }
.admin-link-reset { font-size: 0.8125rem; font-weight: 600; color: #2563eb; text-decoration: none; }
.admin-link-reset:hover { text-decoration: underline; }
.admin-table { width: 100%; font-size: 0.875rem; min-width: 40rem; border-collapse: collapse; }
.admin-table thead { background: #f8fafc; }
.admin-table th {
  padding: 0.75rem 1rem;
  text-align: left;
  font-weight: 600;
  color: #475569;
  font-size: 0.75rem;
  text-transform: uppercase;
  letter-spacing: 0.04em;
}
.admin-table td { padding: 0.75rem 1rem; border-top: 1px solid #f1f5f9; vertical-align: middle; }
.admin-table-row { cursor: pointer; transition: background 0.15s; }
.admin-table-row:hover { background: #f8fafc; }
.admin-table-row.admin-row-highlight { background: #eff6ff; box-shadow: inset 0 0 0 2px #93c5fd; }
.admin-table-link { color: #1d4ed8; font-weight: 600; text-decoration: none; }
.admin-table-link:hover { text-decoration: underline; }
.admin-table__actions-col { white-space: nowrap; width: 1%; min-width: 7.5rem; }
.admin-actions-inline {
  display: inline-flex;
  flex-direction: row;
  flex-wrap: nowrap;
  align-items: center;
  gap: 0.25rem;
}
.admin-actions-inline > a,
.admin-actions-inline > form {
  flex: 0 0 auto;
}
.admin-actions-inline > form,
.admin-actions-inline form.inline { display: inline-flex; margin: 0; flex-shrink: 0; }
form.admin-actions-inline,
form.admin-inline-form,
.admin-balance-form {
  display: flex;
  flex-wrap: nowrap;
  align-items: center;
  gap: 0.25rem;
  margin: 0;
  min-width: 0;
}
form.admin-actions-inline .admin-input,
form.admin-actions-inline .admin-select,
form.admin-inline-form .admin-input,
form.admin-inline-form .admin-select,
.admin-balance-form .admin-input,
.admin-balance-form .admin-select {
  width: auto;
}
.admin-input--amount { width: 5rem; min-width: 5rem; flex: none; }
.admin-input--grow { flex: 1; min-width: 0; max-width: 10rem; }
.admin-btn-icon { padding: 0.3125rem 0.4375rem; min-width: 1.875rem; }
.admin-actions-inline .admin-action-btn { min-height: auto; padding: 0.3125rem 0.4375rem; }
.admin-empty-cell, .admin-empty-state {
  padding: 2.5rem 1rem;
  text-align: center;
  color: #64748b;
  font-size: 0.875rem;
}
.admin-empty-state {
  background: #fff;
  border: 1px dashed #cbd5e1;
  border-radius: 0.875rem;
}
.admin-plan-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0.25rem 0.5rem;
  border-radius: 0.375rem;
  border: 1px solid #e2e8f0;
  font-size: 0.6875rem;
  font-weight: 700;
  background: #fff;
  cursor: pointer;
}
.admin-plan-btn.is-active { background: #eff6ff; border-color: #93c5fd; color: #1d4ed8; }
.admin-shell { --admin-accent: #1d4ed8; --admin-border: #e2e8f0; --admin-muted: #64748b; --admin-surface: #ffffff; }
.admin-page { max-width: 80rem; }
.admin-page-header h1,
.admin-page-header h2 { font-size: 1.375rem; font-weight: 800; color: #0f172a; line-height: 1.25; margin: 0; }
.admin-page-header p { margin: 0.35rem 0 0; font-size: 0.875rem; color: var(--admin-muted); }
.admin-page-actions { display: flex; flex-wrap: wrap; gap: 0.625rem; margin-top: 1rem; flex-shrink: 0; }
@media (min-width: 640px) {
  .admin-page-actions { margin-top: 0; align-self: center; }
}
.admin-filter-pills { display: flex; flex-wrap: wrap; gap: 0.5rem; margin-bottom: 1rem; }
.admin-filter-pill {
  display: inline-flex;
  align-items: center;
  gap: 0.375rem;
  padding: 0.4375rem 0.875rem;
  border-radius: 9999px;
  font-size: 0.8125rem;
  font-weight: 600;
  background: #f1f5f9;
  color: #475569;
  text-decoration: none;
  border: 1px solid transparent;
  transition: background 0.15s, color 0.15s, border-color 0.15s;
}
.admin-filter-pill:hover { background: #e2e8f0; color: #1e293b; }
.admin-filter-pill.is-active { background: #eff6ff; color: #1d4ed8; border-color: #93c5fd; }
.admin-filter-pill__count {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 1.25rem;
  height: 1.25rem;
  padding: 0 0.375rem;
  border-radius: 9999px;
  font-size: 0.6875rem;
  font-weight: 700;
  background: rgba(15, 23, 42, 0.08);
}
.admin-filter-pill.is-active .admin-filter-pill__count { background: #dbeafe; color: #1e40af; }

.admin-settings-tabs {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  margin-bottom: 1.25rem;
  padding-bottom: 0.75rem;
  border-bottom: 1px solid var(--admin-border);
}
.admin-settings-tab {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  padding: 0.5rem 0.875rem;
  border-radius: 9999px;
  border: 1px solid var(--admin-border);
  background: #fff;
  color: #475569;
  font-size: 0.8125rem;
  font-weight: 600;
  cursor: pointer;
  transition: background 0.15s, color 0.15s, border-color 0.15s;
}
.admin-settings-tab:hover { background: #f8fafc; color: #1e293b; border-color: #cbd5e1; }
.admin-settings-tab.is-active {
  background: #eff6ff;
  color: #1d4ed8;
  border-color: #93c5fd;
}
.admin-settings-panel {
  display: none;
  flex-direction: column;
  gap: 1.5rem;
}
.admin-settings-panel.is-active { display: flex; }
.admin-settings-panel + .admin-settings-panel { margin-top: 0; }

.admin-app-stats {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(8.5rem, 1fr));
  gap: 0.75rem;
  margin-bottom: 1rem;
}
.admin-app-stat {
  background: var(--admin-surface);
  border: 1px solid var(--admin-border);
  border-radius: 0.75rem;
  padding: 0.875rem 1rem;
}
.admin-app-stat__value { font-size: 1.375rem; font-weight: 800; color: #0f172a; line-height: 1.2; }
.admin-app-stat__value--new { color: #b45309; }
.admin-app-stat__value--read { color: #047857; }
.admin-app-stat__value--archived { color: #64748b; }
.admin-app-stat__label { font-size: 0.75rem; color: var(--admin-muted); margin-top: 0.125rem; }
.admin-app-list { display: flex; flex-direction: column; gap: 0.75rem; margin-bottom: 2rem; }
.admin-app-card {
  background: var(--admin-surface);
  border: 1px solid var(--admin-border);
  border-radius: 0.875rem;
  overflow: hidden;
  transition: border-color 0.15s, box-shadow 0.15s;
}
.admin-app-card.is-new { border-left: 3px solid #f59e0b; }
.admin-app-card.is-read { border-left: 3px solid #10b981; }
.admin-app-card.is-archived { border-left: 3px solid #94a3b8; opacity: 0.92; }
.admin-app-card__head {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-start;
  justify-content: space-between;
  gap: 0.75rem;
  padding: 1rem 1.25rem;
  cursor: pointer;
}
.admin-app-card__head:hover { background: #f8fafc; }
.admin-app-card__title { font-size: 0.9375rem; font-weight: 700; color: #0f172a; line-height: 1.35; }
.admin-app-card__meta {
  display: flex;
  flex-wrap: wrap;
  gap: 0.375rem 0.75rem;
  margin-top: 0.375rem;
  font-size: 0.75rem;
  color: var(--admin-muted);
}
.admin-app-card__meta-item { display: inline-flex; align-items: center; gap: 0.25rem; }
.admin-app-card__preview {
  font-size: 0.8125rem;
  color: #475569;
  line-height: 1.55;
  margin-top: 0.5rem;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.admin-app-card__body {
  padding: 0 1.25rem 1rem;
  border-top: 1px solid #f1f5f9;
}
.admin-app-card__body[hidden] { display: none; }
.admin-app-card__text {
  font-size: 0.875rem;
  color: #334155;
  white-space: pre-wrap;
  line-height: 1.65;
  padding-top: 1rem;
}
.admin-app-card__attachments {
  margin-top: 1rem;
  padding: 0.875rem 1rem;
  background: #f8fafc;
  border: 1px solid var(--admin-border);
  border-radius: 0.625rem;
}
.admin-app-card__attachments-title {
  font-size: 0.75rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--admin-muted);
  margin-bottom: 0.625rem;
}
.admin-app-card__attachments-grid { display: flex; flex-wrap: wrap; gap: 0.5rem; }
.admin-app-card__footer {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem;
  padding: 0.875rem 1.25rem;
  background: #f8fafc;
  border-top: 1px solid #f1f5f9;
}
.admin-app-card__quick-actions { display: flex; flex-wrap: wrap; gap: 0.375rem; }
.admin-empty-state--rich {
  padding: 3rem 1.5rem;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.75rem;
}
.admin-empty-state--rich i { font-size: 2rem; color: #cbd5e1; }
.admin-empty-state--rich p { margin: 0; max-width: 22rem; line-height: 1.5; }
.admin-card { background: var(--admin-surface); border: 1px solid var(--admin-border); border-radius: 0.875rem; padding: 1.25rem 1.5rem; box-shadow: 0 1px 2px rgba(15, 23, 42, 0.04); }
.admin-form-field { margin-bottom: 1rem; }
.admin-form-field:last-child { margin-bottom: 0; }
.admin-label { display: block; font-size: 0.8125rem; font-weight: 700; color: #334155; margin-bottom: 0.375rem; }
.admin-input,
.admin-select,
.admin-textarea { width: 100%; padding: 0.5rem 0.75rem; border: 1px solid #cbd5e1; border-radius: 0.5rem; font-size: 0.875rem; color: #0f172a; background: #fff; transition: border-color 0.15s, box-shadow 0.15s; }
.admin-input:focus,
.admin-select:focus,
.admin-textarea:focus { outline: none; border-color: #3b82f6; box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.15); }
.admin-textarea { min-height: 4.5rem; resize: vertical; }
.admin-editor-field-sr-only {
  position: absolute !important;
  left: -10000px !important;
  top: auto !important;
  width: 1px !important;
  height: 1px !important;
  padding: 0 !important;
  margin: 0 !important;
  overflow: hidden !important;
  border: 0 !important;
  opacity: 0 !important;
  /* Не используем clip:rect — в редких случаях браузер не отправляет такое поле в POST */
}
.admin-editor-quill-warning { display: flex; align-items: flex-start; gap: 0.5rem; padding: 0.75rem 1rem; margin-bottom: 0.75rem; border-radius: 0.5rem; border: 1px solid #fcd34d; background: #fffbeb; color: #92400e; font-size: 0.8125rem; line-height: 1.45; }
.admin-editor-quill-warning.hidden { display: none; }
.admin-editor-plain-fallback { margin-top: 0.5rem; min-height: 14rem; }
.admin-editor-plain-fallback.hidden { display: none; }
.admin-field-hint { margin-top: 0.375rem; font-size: 0.75rem; color: var(--admin-muted); }
.admin-file { font-size: 0.8125rem; color: var(--admin-muted); }
.admin-btn { display: inline-flex; align-items: center; justify-content: center; gap: 0.375rem; padding: 0.5rem 1rem; border-radius: 0.5rem; font-size: 0.8125rem; font-weight: 600; border: 1px solid transparent; cursor: pointer; text-decoration: none; transition: background 0.15s, border-color 0.15s, color 0.15s; }
.admin-btn-sm { padding: 0.3125rem 0.625rem; font-size: 0.75rem; }
.admin-btn-primary { background: var(--admin-accent); color: #fff; border-color: var(--admin-accent); }
.admin-btn-primary:hover { background: #1e40af; border-color: #1e40af; }
.admin-btn-secondary { background: #f8fafc; color: #334155; border-color: #cbd5e1; }
.admin-btn-secondary:hover { background: #f1f5f9; border-color: #94a3b8; }
.admin-form-actions { display: flex; flex-wrap: nowrap; align-items: flex-end; gap: 0.75rem; padding-top: 0.5rem; }
.admin-form-actions > .admin-btn { flex: 0 0 auto; height: 2.5rem; min-height: 2.5rem; align-self: flex-end; }
.admin-mail-test-actions {
  display: flex;
  flex-direction: row;
  flex-wrap: nowrap;
  align-items: flex-end;
  flex: 1 1 auto;
  min-width: 0;
  gap: 0.5rem;
}
.admin-mail-test-actions.is-hidden,
.admin-mail-test-actions.hidden { display: none !important; }
.admin-mail-test-field {
  flex: 1 1 16rem;
  min-width: 12rem;
  max-width: 28rem;
}
.admin-mail-test-field .admin-input {
  width: 100%;
  height: 2.5rem;
}
.admin-mail-test-actions > .admin-btn {
  flex: 0 0 auto;
  height: 2.5rem;
  white-space: nowrap;
  align-self: flex-end;
}
.admin-form-grid { display: grid; gap: 1.5rem; align-items: start; }
@media (min-width: 1024px) {
  .admin-form-grid { grid-template-columns: 1fr 22rem; }
  .admin-form-grid--wide-preview { grid-template-columns: 1fr 24rem; }
}
.admin-preview-card { background: var(--admin-surface); border: 1px solid var(--admin-border); border-radius: 0.875rem; padding: 1.25rem 1.5rem; position: sticky; top: 1rem; }
.admin-preview-card__title { font-size: 0.75rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.04em; color: var(--admin-muted); margin: 0 0 1rem; }
.admin-preview-card__body { border: 1px solid var(--admin-border); border-radius: 0.625rem; overflow: hidden; background: #fff; }
.admin-preview-card__inner { padding: 1rem; }
.admin-preview-body { margin-top: 0.75rem; padding-top: 0.75rem; border-top: 1px solid #f1f5f9; font-size: 0.875rem; color: #334155; line-height: 1.6; }
.admin-preview-body.article-content img { max-width: 100%; height: auto; border-radius: 0.375rem; }
.admin-table-card { background: var(--admin-surface); border: 1px solid var(--admin-border); border-radius: 0.875rem; overflow-x: auto; margin-bottom: 2rem; }
.admin-table-card table { width: 100%; font-size: 0.875rem; min-width: 40rem; }
.admin-table-card thead { background: #f8fafc; }
.admin-table-card th { padding: 0.75rem 1rem; text-align: left; font-weight: 600; color: #475569; }
.admin-table-card td { padding: 0.75rem 1rem; border-top: 1px solid #f1f5f9; vertical-align: top; }
.admin-rich-editor-field { min-height: 16rem; }
.admin-editor-wrap { margin-bottom: 1rem; }
.admin-editor-wrap .tox.tox-tinymce--toolbar-sticky-on .tox-editor-header {
  z-index: 25;
  background: rgba(255, 255, 255, 0.98);
  backdrop-filter: blur(8px);
  border-bottom: 1px solid #e2e8f0;
  box-shadow: 0 4px 16px rgba(15, 23, 42, 0.1);
}
.admin-editor-wrap .tox.tox-tinymce--toolbar-sticky-on .tox-editor-header .tox-toolbar-overlord {
  background: transparent;
}
.admin-editor-wrap .tox.tox-tinymce--toolbar-sticky-on .tox-editor-header {
  z-index: 25;
  background: rgba(255, 255, 255, 0.98);
  backdrop-filter: blur(8px);
  border-bottom: 1px solid #e2e8f0;
  box-shadow: 0 4px 16px rgba(15, 23, 42, 0.1);
}
.admin-editor-wrap .tox.tox-tinymce--toolbar-sticky-on .tox-editor-header .tox-toolbar-overlord {
  background: transparent;
}
.album-photo-edit-card {
  display: flex;
  flex-direction: column;
  gap: 1rem;
  padding: 1rem;
  border-radius: 0.75rem;
  border: 1px solid #e2e8f0;
  background: #f8fafc;
}
@media (min-width: 640px) {
  .album-photo-edit-card {
    flex-direction: row;
    align-items: flex-start;
  }
}
.album-photo-edit-card__thumb {
  width: 7rem;
  height: 7rem;
  flex-shrink: 0;
  border-radius: 0.625rem;
  overflow: hidden;
  border: 1px solid #e2e8f0;
  background: #fff;
  align-self: center;
}
@media (min-width: 640px) {
  .album-photo-edit-card__thumb {
    align-self: flex-start;
    width: 8rem;
    height: 8rem;
  }
}
.album-photo-edit-card__thumb img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.album-photo-edit-card__fields {
  flex: 1;
  min-width: 0;
  width: 100%;
}
.album-photo-edit-card__actions {
  display: flex;
  justify-content: flex-end;
  margin-bottom: 0.25rem;
}
.album-photo-edit-card__delete {
  font-size: 0.75rem;
  font-weight: 600;
  color: #dc2626;
  background: none;
  border: none;
  padding: 0;
  cursor: pointer;
  text-decoration: underline;
}
.album-photo-edit-card__field--full {
  margin-bottom: 0.75rem;
}
.album-photo-edit-card__meta-row {
  display: grid;
  grid-template-columns: 1fr;
  gap: 0.75rem;
}
@media (min-width: 480px) {
  .album-photo-edit-card__meta-row {
    grid-template-columns: 6.5rem 1fr;
  }
}
.album-photo-edit-card .cabinet-field {
  margin-bottom: 0;
}

.album-lightbox {
  position: fixed;
  inset: 0;
  z-index: 9999;
  display: none;
  align-items: center;
  justify-content: center;
  background: #000;
}
.album-lightbox.is-open {
  display: flex;
}
body.album-lightbox-open {
  overflow: hidden;
}
.album-lightbox__stage {
  position: relative;
  width: 100%;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
}
.album-lightbox__frame {
  position: relative;
  width: 90vw;
  height: 90vh;
  max-width: 90vw;
  max-height: 90vh;
}
.album-lightbox__img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  display: block;
  background: #000;
  border-radius: 0.25rem;
}
.album-lightbox__meta {
  position: absolute;
  left: 50%;
  bottom: calc(0.75rem + env(safe-area-inset-bottom, 0px));
  top: auto;
  z-index: 4;
  transform: translateX(-50%);
  max-width: min(92%, 24rem);
  padding: 0.625rem 0.875rem;
  border-radius: 0.75rem;
  background: rgba(15, 23, 42, 0.55);
  color: #fff;
  text-align: center;
  pointer-events: auto;
  backdrop-filter: blur(8px);
}
.album-lightbox__meta.is-empty {
  display: none;
}
.album-lightbox__meta-when {
  font-size: 0.75rem;
  font-weight: 600;
  line-height: 1.35;
  color: rgba(255, 255, 255, 0.92);
}
.album-lightbox__meta-when[hidden] {
  display: none;
}
.album-lightbox__meta-caption {
  margin-top: 0.25rem;
  font-size: 0.8125rem;
  font-weight: 700;
  line-height: 1.35;
}
.album-lightbox__meta-caption[hidden] {
  display: none;
}
.album-lightbox__meta-comments {
  display: block;
  margin: 0.5rem auto 0;
  padding: 0;
  border: none;
  background: none;
  color: rgba(255, 255, 255, 0.88);
  font-size: 0.75rem;
  font-weight: 600;
  text-decoration: underline;
  cursor: pointer;
}
.album-lightbox__meta-comments:hover {
  color: #fff;
}
.album-lightbox__meta-comments[hidden] {
  display: none !important;
}
.album-lightbox__topbar {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  z-index: 5;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0.75rem 1rem;
  padding-top: calc(0.75rem + env(safe-area-inset-top, 0px));
  background: linear-gradient(to bottom, rgba(0, 0, 0, 0.55), transparent);
  pointer-events: none;
}
.album-lightbox__topbar > * {
  pointer-events: auto;
}
.album-lightbox__counter {
  font-size: 0.8125rem;
  font-weight: 600;
  color: rgba(255, 255, 255, 0.9);
  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.4);
}
.album-lightbox__close {
  width: 2.5rem;
  height: 2.5rem;
  border: none;
  border-radius: 9999px;
  background: rgba(255, 255, 255, 0.18);
  color: #fff;
  font-size: 1.5rem;
  line-height: 1;
  cursor: pointer;
  backdrop-filter: blur(6px);
}
.album-lightbox__nav {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  z-index: 5;
  width: 2.5rem;
  height: 3rem;
  border: none;
  border-radius: 0.5rem;
  background: rgba(255, 255, 255, 0.14);
  color: #fff;
  font-size: 1.75rem;
  line-height: 1;
  cursor: pointer;
  backdrop-filter: blur(6px);
}
.album-lightbox__nav--prev { left: 0.5rem; }
.album-lightbox__nav--next { right: 0.5rem; }
.album-lightbox__sheet-backdrop {
  position: absolute;
  inset: 0;
  z-index: 8;
  border: none;
  padding: 0;
  background: rgba(0, 0, 0, 0.45);
  cursor: pointer;
}
.album-lightbox__sheet-backdrop[hidden] {
  display: none !important;
}
.album-lightbox__sheet {
  position: absolute;
  left: 50%;
  top: 50%;
  z-index: 9;
  width: min(92vw, 24rem);
  max-height: min(72vh, 28rem);
  background: #fff;
  border-radius: 1rem;
  transform: translate(-50%, -46%) scale(0.96);
  opacity: 0;
  visibility: hidden;
  transition: transform 0.24s ease, opacity 0.24s ease, visibility 0.24s;
  display: flex;
  flex-direction: column;
  box-shadow: 0 20px 50px rgba(0, 0, 0, 0.35);
  overflow: hidden;
}
.album-lightbox__sheet.is-open {
  transform: translate(-50%, -50%) scale(1);
  opacity: 1;
  visibility: visible;
}
.album-lightbox__sheet-head {
  position: relative;
  flex-shrink: 0;
  padding: 0.75rem 2.5rem 0.625rem;
  border-bottom: 1px solid #f1f5f9;
  text-align: center;
}
.album-lightbox__sheet-title {
  margin: 0;
  font-size: 0.9375rem;
  font-weight: 700;
  color: #0f172a;
}
.album-lightbox__sheet-close {
  position: absolute;
  top: 0.5rem;
  right: 0.625rem;
  width: 2rem;
  height: 2rem;
  border: none;
  border-radius: 9999px;
  background: #f1f5f9;
  color: #475569;
  font-size: 1.25rem;
  line-height: 1;
  cursor: pointer;
}
.album-lightbox__sheet-body {
  flex: 1;
  min-height: 0;
  overflow-y: auto;
  padding: 1rem;
}
.album-lightbox__comments-list {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  margin-bottom: 0.75rem;
  text-align: left;
}
.album-lightbox__comment {
  padding: 0.625rem 0.75rem;
  border-radius: 0.625rem;
  background: #f8fafc;
  border: 1px solid #e2e8f0;
}
.album-lightbox__comment-author {
  font-size: 0.75rem;
  font-weight: 700;
  color: #475569;
  margin-bottom: 0.2rem;
}
.album-lightbox__comment-body {
  font-size: 0.875rem;
  line-height: 1.45;
  color: #1e293b;
  word-break: break-word;
}
.album-lightbox__comments-empty {
  font-size: 0.8125rem;
  color: #64748b;
  margin: 0 0 0.75rem;
  text-align: center;
}
.album-lightbox__comment-form {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}
.album-lightbox__comment-input {
  width: 100%;
  min-height: 4.5rem;
  padding: 0.625rem 0.75rem;
  border: 1px solid #cbd5e1;
  border-radius: 0.625rem;
  font-size: 0.875rem;
  line-height: 1.45;
  color: #1e293b;
  resize: vertical;
}
.album-lightbox__comment-input:focus {
  outline: none;
  border-color: #2563eb;
  box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.12);
}
.album-lightbox__comment-actions {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.5rem;
}
.album-lightbox__comment-status {
  font-size: 0.75rem;
  color: #64748b;
  margin: 0;
  text-align: center;
}
.album-lightbox__comment-submit {
  flex-shrink: 0;
  padding: 0.5rem 1.25rem;
  border: none;
  border-radius: 9999px;
  background: #2563eb;
  color: #fff;
  font-size: 0.8125rem;
  font-weight: 600;
  cursor: pointer;
}
.album-lightbox__login-hint {
  font-size: 0.8125rem;
  color: #64748b;
  margin: 0;
  text-align: center;
}
.album-lightbox__login-hint a {
  color: #2563eb;
  font-weight: 600;
}
@media (min-width: 768px) {
  .album-lightbox__sheet {
    width: min(28rem, 92vw);
    max-height: min(75vh, 32rem);
  }
}

.admin-slug-preview { font-size: 0.75rem; color: var(--admin-muted); background: #f8fafc; border: 1px solid var(--admin-border); border-radius: 0.5rem; padding: 0.5rem 0.75rem; word-break: break-all; }
.admin-slug-preview strong { color: var(--admin-accent); font-weight: 700; }
.admin-checkbox-row { display: flex; align-items: center; gap: 0.5rem; font-size: 0.875rem; color: #334155; }
.admin-cover-preview { max-height: 10rem; border-radius: 0.5rem; border: 1px solid var(--admin-border); margin-bottom: 0.5rem; object-fit: cover; }
.admin-table-thumb { width: 2.5rem; height: 2.5rem; object-fit: cover; border-radius: 0.375rem; border: 1px solid var(--admin-border); display: block; flex-shrink: 0; }
.admin-table-thumb-wrap { display: flex; align-items: center; gap: 0.5rem; }
.admin-album-preview-strip { display: inline-flex; align-items: center; gap: 0.25rem; max-width: 11rem; overflow-x: auto; }

/* Admin UX */
.admin-action-btn { display: inline-flex; align-items: center; justify-content: center; min-height: 2.75rem; padding: 0.375rem 0.875rem; border-radius: 0.5rem; font-size: 0.8125rem; font-weight: 600; border: none; cursor: pointer; transition: opacity 0.15s, transform 0.15s; }
.admin-action-btn:hover { opacity: 0.9; transform: translateY(-1px); }
.admin-action-btn--approve { background: #dcfce7; color: #166534; }
.admin-action-btn--reject { background: #fee2e2; color: #991b1b; }
.admin-data-table-mobile { display: none; }
@media (max-width: 1023px) {
  .admin-data-table-desktop { display: none; }
  .admin-data-table-mobile { display: block; }
  .admin-mobile-card { background: #fff; border: 1px solid #e5e7eb; border-radius: 0.75rem; padding: 1rem; margin-bottom: 0.75rem; }
  .admin-mobile-card-row { display: flex; justify-content: space-between; gap: 0.75rem; padding: 0.35rem 0; font-size: 0.8125rem; border-bottom: 1px solid #f3f4f6; }
  .admin-mobile-card-row:last-child { border-bottom: none; }
  .admin-mobile-card-label { color: #6b7280; flex-shrink: 0; }
  .admin-mobile-card-value { text-align: right; font-weight: 500; color: #111827; }
  .admin-mobile-card-actions { display: flex; flex-wrap: wrap; gap: 0.5rem; margin-top: 0.75rem; padding-top: 0.75rem; border-top: 1px solid #f3f4f6; }
}
.admin-toast-stack { position: fixed; bottom: 1.25rem; right: 1.25rem; z-index: 200; display: flex; flex-direction: column; gap: 0.5rem; max-width: min(100vw - 2rem, 24rem); }
.admin-toast { padding: 0.75rem 1rem; border-radius: 0.625rem; font-size: 0.875rem; font-weight: 500; box-shadow: 0 8px 24px rgba(15, 23, 42, 0.15); animation: adminToastIn 0.25s ease; }
.admin-toast--success { background: #dcfce7; color: #166534; border: 1px solid #bbf7d0; }
.admin-toast--error { background: #fee2e2; color: #991b1b; border: 1px solid #fecaca; }
@keyframes adminToastIn { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: translateY(0); } }

/* Contact sticky bar */
.contact-sticky-bar { position: fixed; left: 0; right: 0; bottom: calc(3.75rem + env(safe-area-inset-bottom, 0px)); z-index: 35; display: flex; gap: 0.5rem; padding: 0.625rem 1rem; background: rgba(255, 255, 255, 0.96); border-top: 1px solid #e2e8f0; box-shadow: 0 -4px 16px rgba(15, 23, 42, 0.08); backdrop-filter: blur(8px); }
@media (min-width: 1024px) {
  .contact-sticky-bar { display: none; }
  body.has-mobile-nav .contact-sticky-bar { bottom: 0; }
}
.contact-sticky-btn { flex: 1; display: inline-flex; align-items: center; justify-content: center; min-height: 2.75rem; border-radius: 0.625rem; font-size: 0.875rem; font-weight: 700; text-decoration: none; border: none; cursor: pointer; }
.contact-sticky-btn--primary { background: #1d4ed8; color: #fff; }
.contact-sticky-btn--secondary { background: #f1f5f9; color: #334155; border: 1px solid #e2e8f0; }

/* Cart sticky bar */
.cart-sticky-bar {
  position: fixed;
  left: 0;
  right: 0;
  bottom: calc(3.75rem + env(safe-area-inset-bottom, 0px));
  z-index: 35;
  padding: 0.625rem 1rem;
  background: rgba(255, 255, 255, 0.96);
  border-top: 1px solid #e2e8f0;
  box-shadow: 0 -4px 16px rgba(15, 23, 42, 0.08);
  backdrop-filter: blur(8px);
}
@media (min-width: 1024px) {
  .cart-sticky-bar { display: none !important; }
}
.cart-sticky-btn {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  width: 100%;
  min-height: 2.75rem;
  padding: 0.5rem 0.875rem;
  border: none;
  border-radius: 0.625rem;
  background: #1d4ed8;
  color: #fff;
  cursor: pointer;
  text-align: left;
}
.cart-sticky-btn__icon { width: 1.25rem; height: 1.25rem; flex-shrink: 0; }
.cart-sticky-btn__info { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 0.125rem; }
.cart-sticky-btn__label { font-size: 0.8125rem; font-weight: 600; line-height: 1.2; }
.cart-sticky-btn__total { font-size: 1rem; font-weight: 800; line-height: 1.2; }
.cart-sticky-btn__action {
  flex-shrink: 0;
  font-size: 0.8125rem;
  font-weight: 700;
  padding: 0.375rem 0.75rem;
  border-radius: 0.5rem;
  background: rgba(255, 255, 255, 0.16);
}

/* Search tabs */
.search-tabs { display: flex; flex-wrap: wrap; gap: 0.5rem; margin-bottom: 1.5rem; }
.search-tab { display: inline-flex; align-items: center; gap: 0.35rem; padding: 0.5rem 1rem; border-radius: 9999px; font-size: 0.8125rem; font-weight: 600; background: #f1f5f9; color: #475569; text-decoration: none; transition: all 0.15s; }
.search-tab:hover { background: #e2e8f0; color: #1e293b; }
.search-tab--active { background: #1e3a8a; color: #fff; }
.search-tab-count { font-size: 0.6875rem; opacity: 0.85; }

/* News editor preview */
.news-form-grid { display: grid; gap: 1.5rem; }
@media (min-width: 1024px) {
  .news-form-grid { grid-template-columns: 1fr 320px; align-items: start; }
}
.news-form-preview { background: #f8fafc; border: 1px solid #e2e8f0; border-radius: 0.75rem; padding: 1rem; position: sticky; top: 1rem; }
.news-form-preview-title { font-size: 1rem; font-weight: 800; color: #0f172a; line-height: 1.25; margin-bottom: 0.5rem; }
.news-form-preview-slug { font-size: 0.75rem; color: #64748b; word-break: break-all; margin-bottom: 0.75rem; }
.news-form-preview-excerpt { font-size: 0.8125rem; color: #475569; line-height: 1.5; border-left: 3px solid #2563eb; padding-left: 0.625rem; }

/* Cabinet organization management */
.cabinet-manage { max-width: 72rem; }
.cabinet-card {
  background: #fff;
  border: 1px solid #e2e8f0;
  border-radius: 0.875rem;
  padding: 1.25rem 1.5rem;
  box-shadow: 0 1px 3px rgba(15, 23, 42, 0.04);
}
.cabinet-section-title {
  font-size: 0.9375rem;
  font-weight: 700;
  color: #0f172a;
  letter-spacing: -0.01em;
}
.cabinet-field { margin-bottom: 1rem; }
.cabinet-field__label {
  display: block;
  font-size: 0.75rem;
  font-weight: 600;
  color: #64748b;
  margin-bottom: 0.375rem;
  text-transform: uppercase;
  letter-spacing: 0.03em;
}
.cabinet-input,
.cabinet-select,
.cabinet-textarea {
  display: block;
  width: 100%;
  padding: 0.625rem 0.875rem;
  font-size: 0.875rem;
  line-height: 1.4;
  color: #1e293b;
  background: #fff;
  border: 1px solid #cbd5e1;
  border-radius: 0.5rem;
  transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
.cabinet-input:focus,
.cabinet-select:focus,
.cabinet-textarea:focus {
  outline: none;
  border-color: #2563eb;
  box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.12);
}
.tag-input__box {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.375rem;
  min-height: 2.75rem;
  padding-top: 0.45rem;
  padding-bottom: 0.45rem;
  cursor: text;
}
.tag-input__box:focus-within {
  border-color: #2563eb;
  box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.12);
}
.tag-input__chips {
  display: flex;
  flex-wrap: wrap;
  gap: 0.375rem;
}
.tag-input__field {
  flex: 1 1 8rem;
  min-width: 7rem;
  border: 0;
  outline: none;
  background: transparent;
  font-size: 0.875rem;
  line-height: 1.4;
  color: #1e293b;
  padding: 0.15rem 0;
}
.tag-input__field::placeholder {
  color: #94a3b8;
}
.tag-input__chip {
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
  padding: 0.2rem 0.55rem;
  border-radius: 9999px;
  background: #eff6ff;
  border: 1px solid #bfdbfe;
  color: #1e40af;
  font-size: 0.75rem;
  font-weight: 600;
  line-height: 1.3;
}
.tag-input__remove {
  border: 0;
  background: transparent;
  color: #64748b;
  cursor: pointer;
  font-size: 1rem;
  line-height: 1;
  padding: 0;
}
.tag-input__remove:hover {
  color: #1e40af;
}
/* Service name + price row: cabinet-input width:100% must not apply in flex rows */
.cabinet-service-row {
  display: flex;
  gap: 0.5rem;
}
.cabinet-service-row .cabinet-input {
  width: auto;
}
.cabinet-service-row__name {
  flex: 1 1 0%;
  min-width: 0;
}
.cabinet-service-row__price {
  flex: 0 0 8rem;
  width: 8rem;
  max-width: 42%;
}
.cabinet-textarea { resize: vertical; min-height: 5rem; }
.cabinet-select {
  appearance: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%2364748b' d='M6 8L1 3h10z'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 0.75rem center;
  padding-right: 2rem;
}
.cabinet-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.375rem;
  min-height: 2.5rem;
  padding: 0.5rem 1rem;
  font-size: 0.875rem;
  font-weight: 600;
  border-radius: 0.5rem;
  border: 1px solid transparent;
  cursor: pointer;
  transition: background 0.15s ease, border-color 0.15s ease, color 0.15s ease;
  text-decoration: none;
  white-space: nowrap;
}
.cabinet-btn-primary {
  background: #1d4ed8;
  color: #fff;
  border-color: #1d4ed8;
}
.cabinet-btn-primary:hover { background: #1e40af; border-color: #1e40af; }
.cabinet-btn-secondary {
  background: #fff;
  color: #334155;
  border-color: #cbd5e1;
}
.cabinet-btn-secondary:hover { background: #f8fafc; border-color: #94a3b8; }
.cabinet-btn-danger {
  background: #fff;
  color: #dc2626;
  border-color: #fecaca;
}
.cabinet-btn-danger:hover { background: #fef2f2; border-color: #fca5a5; }
.cabinet-empty {
  padding: 2rem 1.5rem;
  text-align: center;
  border: 1px dashed #cbd5e1;
  border-radius: 0.875rem;
  background: #f8fafc;
}
.cabinet-empty__text {
  font-size: 0.875rem;
  color: #64748b;
  margin-bottom: 1rem;
  line-height: 1.5;
}
.cabinet-menu-category {
  background: #fff;
  border: 1px solid #e2e8f0;
  border-radius: 0.875rem;
  padding: 1rem 1.25rem;
}
.cabinet-menu-category__header {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem;
}
.cabinet-menu-category__items {
  margin-top: 0.75rem;
  border-top: 1px solid #f1f5f9;
}
.cabinet-menu-item { border-bottom: 1px solid #f1f5f9; }
.cabinet-menu-item:last-child { border-bottom: none; }
.cabinet-menu-item__row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.75rem;
  padding: 0.75rem 0;
}
.cabinet-menu-item__thumb {
  width: 3rem;
  height: 3rem;
  border-radius: 0.5rem;
  object-fit: cover;
  flex-shrink: 0;
}
.cabinet-menu-item__info {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 0.125rem;
}
.cabinet-menu-item__name { font-weight: 600; font-size: 0.875rem; color: #0f172a; }
.cabinet-menu-item__meta { font-size: 0.75rem; color: #94a3b8; }
.cabinet-menu-item__desc {
  font-size: 0.75rem;
  color: #64748b;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  max-width: 24rem;
}
.cabinet-menu-item__price {
  font-weight: 700;
  font-size: 0.875rem;
  color: #1d4ed8;
  white-space: nowrap;
}
.cabinet-menu-item__actions {
  display: flex;
  align-items: center;
  gap: 0.375rem;
}
.cabinet-menu-item__edit,
.cabinet-menu-category__edit {
  background: #f8fafc;
  border-radius: 0.5rem;
  padding: 1rem;
  margin-top: 0.5rem;
}
.cabinet-manage .product-row,
.cabinet-manage .adv-row {
  background: #f8fafc;
  border: 1px solid #e2e8f0;
  border-radius: 0.625rem;
  padding: 0.875rem;
}
.cabinet-manage .gallery-grid img { border-radius: 0.5rem; }

.cabinet-label,
.cabinet-field__label {
  display: block;
  font-size: 0.75rem;
  font-weight: 600;
  color: #64748b;
  margin-bottom: 0.375rem;
  text-transform: uppercase;
  letter-spacing: 0.03em;
}
.cabinet-section-desc {
  font-size: 0.8125rem;
  color: #64748b;
  margin-top: 0.25rem;
  line-height: 1.45;
}
.cabinet-btn-sm {
  min-height: 2rem;
  padding: 0.375rem 0.75rem;
  font-size: 0.8125rem;
}
.cabinet-file {
  display: block;
  width: 100%;
  font-size: 0.8125rem;
  color: #475569;
}
.cabinet-empty-icon {
  font-size: 2rem;
  line-height: 1;
  margin-bottom: 0.75rem;
}
.cabinet-empty--inline {
  padding: 1rem 1.25rem;
  text-align: left;
  border-style: dashed;
}
.cabinet-restaurant-layout { display: flex; flex-direction: column; gap: 1rem; }
.cabinet-restaurant-grid {
  display: grid;
  gap: 1.5rem;
}
@media (min-width: 1024px) {
  .cabinet-restaurant-grid {
    grid-template-columns: minmax(280px, 340px) 1fr;
    align-items: start;
  }
}
.cabinet-restaurant-sidebar,
.cabinet-restaurant-main { min-width: 0; }
.cabinet-menu-category-head {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-start;
  justify-content: space-between;
  gap: 0.75rem;
}
.cabinet-menu-items {
  list-style: none;
  margin: 0;
  padding: 0;
  border-top: 1px solid #f1f5f9;
}
.cabinet-menu-item-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.75rem;
  padding: 0.875rem 0;
  border-bottom: 1px solid #f1f5f9;
}
.cabinet-menu-item:last-child .cabinet-menu-item-row { border-bottom: none; }
.cabinet-menu-item-thumb {
  width: 3.5rem;
  height: 3.5rem;
  border-radius: 0.625rem;
  object-fit: cover;
  flex-shrink: 0;
  background: #f1f5f9;
}
.cabinet-menu-item-thumb--empty {
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.25rem;
}
.cabinet-menu-item-body { flex: 1; min-width: 0; }
.cabinet-menu-item-title { font-weight: 600; font-size: 0.875rem; color: #0f172a; }
.cabinet-menu-item-desc {
  font-size: 0.75rem;
  color: #64748b;
  margin-top: 0.125rem;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  max-width: 28rem;
}
.cabinet-menu-item-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  font-size: 0.75rem;
  color: #94a3b8;
  margin-top: 0.25rem;
}
.cabinet-menu-item-actions {
  display: flex;
  align-items: center;
  gap: 0.375rem;
  flex-shrink: 0;
}
.cabinet-menu-item-edit {
  background: #f8fafc;
  border-radius: 0.625rem;
  padding: 1rem;
  margin-top: 0.5rem;
}

.cabinet-section-desc { font-size: 0.8125rem; color: #64748b; margin-top: 0.25rem; line-height: 1.45; }
.cabinet-label { display: block; font-size: 0.8125rem; font-weight: 600; color: #374151; margin-bottom: 0.375rem; }
.cabinet-file { font-size: 0.8125rem; color: #64748b; }
.cabinet-btn-sm { min-height: 2rem; padding: 0.375rem 0.75rem; font-size: 0.8125rem; }
.cabinet-btn-danger { background: #fff; color: #dc2626; border-color: #fecaca; }
.cabinet-btn-danger:hover { background: #fef2f2; }
.cabinet-empty { text-align: center; padding: 2rem 1.5rem; }
.cabinet-empty--inline { text-align: left; padding: 1rem; background: #f8fafc; border-radius: 0.625rem; border: 1px dashed #e2e8f0; }
.cabinet-empty-icon { font-size: 2rem; margin-bottom: 0.75rem; }
.cabinet-restaurant-grid { display: grid; gap: 1.25rem; margin-top: 1rem; }
@media (min-width: 1024px) {
  .cabinet-restaurant-grid { grid-template-columns: minmax(280px, 340px) 1fr; align-items: start; }
}
.cabinet-menu-category-head { display: flex; flex-wrap: wrap; align-items: flex-start; justify-content: space-between; gap: 0.75rem; }
.cabinet-menu-items { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 0.75rem; }
.cabinet-menu-item-row { display: flex; gap: 0.875rem; align-items: flex-start; }
.cabinet-menu-item-thumb { width: 3.5rem; height: 3.5rem; border-radius: 0.625rem; object-fit: cover; flex-shrink: 0; background: #e2e8f0; display: flex; align-items: center; justify-content: center; font-size: 1.25rem; }
.cabinet-menu-item-thumb--empty { color: #64748b; }
.cabinet-menu-item-body { flex: 1; min-width: 0; }
.cabinet-menu-item-title { font-weight: 700; color: #0f172a; font-size: 0.9375rem; }
.cabinet-menu-item-desc { font-size: 0.8125rem; color: #64748b; margin-top: 0.125rem; line-height: 1.4; }
.cabinet-menu-item-meta { display: flex; flex-wrap: wrap; gap: 0.75rem; font-size: 0.8125rem; color: #64748b; margin-top: 0.375rem; }
.cabinet-menu-item-actions { display: flex; flex-direction: column; gap: 0.375rem; flex-shrink: 0; }
.cabinet-menu-item-edit { background: #f8fafc; border-radius: 0.5rem; padding: 0.75rem; border: 1px solid #e2e8f0; }

@media (min-width: 1024px) {
  .lg\:text-5xl {
    font-size: 2rem;
    line-height: 1;
  }
}

/* City chats — promotion labels & highlight */
.city-chat-label {
  display: inline-flex;
  align-items: center;
  font-size: 0.625rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.03em;
  padding: 0.125rem 0.375rem;
  border-radius: 0.25rem;
  line-height: 1.2;
}
.city-chat-label--top { background: #dbeafe; color: #1d4ed8; }
.city-chat-label--verified { background: #d1fae5; color: #047857; }
.city-chat-label--vip { background: linear-gradient(135deg, #fbbf24 0%, #f59e0b 100%); color: #fff; }
.city-chat-label--hot { background: #fee2e2; color: #b91c1c; }
.city-chat-label--recommended { background: #ede9fe; color: #6d28d9; }
.city-chat-label--pin { background: #fef3c7; color: #b45309; font-size: 0.75rem; padding: 0.125rem 0.25rem; }

.city-chat-card--pinned { box-shadow: 0 4px 14px rgba(30, 64, 175, 0.12); border-color: #93c5fd; }

/* Pending restaurant order banner */
.pending-order-banner {
  position: fixed;
  left: 0;
  right: 0;
  bottom: calc(3.5rem + env(safe-area-inset-bottom, 0px));
  z-index: 40;
  padding: 0 0.75rem 0.5rem;
  pointer-events: none;
}
@media (min-width: 1024px) {
  .pending-order-banner {
    bottom: 0.75rem;
    padding: 0 1rem;
  }
}
.pending-order-banner__inner {
  pointer-events: auto;
  max-width: 42rem;
  margin: 0 auto;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem;
  padding: 0.625rem 0.875rem;
  background: rgba(255, 255, 255, 0.97);
  border: 1px solid #dbeafe;
  border-radius: 0.75rem;
  box-shadow: 0 8px 24px rgba(15, 23, 42, 0.12);
  backdrop-filter: blur(8px);
}
.pending-order-banner__text {
  margin: 0;
  min-width: 0;
  font-size: 0.8125rem;
  line-height: 1.35;
  color: #334155;
}
.pending-order-banner__label {
  display: block;
  font-size: 0.6875rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: #64748b;
}
.pending-order-banner__summary {
  display: block;
  font-weight: 600;
  color: #0f172a;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.pending-order-banner__actions {
  display: flex;
  align-items: center;
  gap: 0.375rem;
  flex-shrink: 0;
}
.pending-order-banner__btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 2rem;
  padding: 0 0.75rem;
  border-radius: 0.5rem;
  background: #1d4ed8;
  color: #fff;
  font-size: 0.8125rem;
  font-weight: 700;
  text-decoration: none;
  white-space: nowrap;
}
.pending-order-banner__btn:hover {
  background: #1e40af;
  color: #fff;
}
.pending-order-banner__close {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2rem;
  height: 2rem;
  border: none;
  border-radius: 0.5rem;
  background: transparent;
  color: #94a3b8;
  font-size: 1.25rem;
  line-height: 1;
  cursor: pointer;
}
.pending-order-banner__close:hover {
  background: #f1f5f9;
  color: #475569;
}

/* Restaurant cart toast */
.restaurant-cart-toast {
  position: fixed;
  left: 50%;
  bottom: calc(5rem + env(safe-area-inset-bottom, 0px));
  transform: translateX(-50%) translateY(12px);
  z-index: 55;
  max-width: min(100vw - 2rem, 24rem);
  padding: 0.625rem 1rem;
  border-radius: 0.625rem;
  background: #1e293b;
  color: #f8fafc;
  font-size: 0.875rem;
  font-weight: 500;
  box-shadow: 0 8px 24px rgba(15, 23, 42, 0.2);
  opacity: 0;
  transition: opacity 0.25s ease, transform 0.25s ease;
  pointer-events: none;
}
.restaurant-cart-toast--visible {
  opacity: 1;
  transform: translateX(-50%) translateY(0);
}
@media (min-width: 1024px) {
  .restaurant-cart-toast {
    bottom: 1.5rem;
  }
}
.city-chat-card--gold { border-color: #f59e0b; background: linear-gradient(180deg, #fffbeb 0%, #fff 40%); }
.city-chat-card--blue { border-color: #3b82f6; background: linear-gradient(180deg, #eff6ff 0%, #fff 40%); }
.city-chat-card--emerald { border-color: #10b981; background: linear-gradient(180deg, #ecfdf5 0%, #fff 40%); }
.city-chat-card--rose { border-color: #f43f5e; background: linear-gradient(180deg, #fff1f2 0%, #fff 40%); }
.city-chat-card--violet { border-color: #8b5cf6; background: linear-gradient(180deg, #f5f3ff 0%, #fff 40%); }

/* Home vacancies: mobile = horizontal scroll, desktop = 2-column grid */
.home-vacancies-scroll {
  display: flex;
  gap: 0.75rem;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  -webkit-overflow-scrolling: touch;
  min-width: 0;
  padding-bottom: 0.25rem;
}
.home-vacancies-scroll::-webkit-scrollbar { display: none; }
.home-vacancy-card {
  flex: 0 0 min(17rem, 88vw);
  scroll-snap-align: start;
  min-width: 0;
  max-width: 100%;
}
.home-vacancy-card__link {
  display: block;
  height: 100%;
  min-width: 0;
}
.home-vacancy-card__layout {
  display: flex;
  align-items: flex-start;
  gap: 0.75rem;
}
.home-vacancy-card__body {
  min-width: 0;
  flex: 1;
}
.home-vacancy-card__badge {
  display: inline-block;
  margin-bottom: 0.375rem;
}
.home-vacancy-card__title {
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  overflow: hidden;
}
.home-vacancy-card__meta {
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 1;
  overflow: hidden;
}
@media (max-width: 639px) {
  .home-vacancies-scroll {
    margin-left: -1rem;
    margin-right: -1rem;
    padding-left: 1rem;
    padding-right: 1rem;
  }
}
@media (min-width: 640px) {
  .home-vacancies-scroll {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0.75rem;
    overflow: visible;
    scroll-snap-type: none;
    padding-bottom: 0;
  }
  .home-vacancy-card {
    flex: none;
    width: auto;
    max-width: none;
  }
  .home-vacancy-card__meta {
    -webkit-line-clamp: 2;
  }
}


/* Forum v2 */
.emoji,
.forum-section-icon {
  font-family: "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji", sans-serif;
  font-style: normal;
  line-height: 1;
}
.forum-reply-composer {
  position: sticky;
  bottom: 1rem;
  z-index: 20;
  box-shadow: 0 -4px 24px rgba(15, 23, 42, 0.08);
}
.forum-post-body a {
  color: #1d4ed8;
  text-decoration: underline;
  word-break: break-word;
}
.forum-post-body a:hover { color: #1e40af; }
.forum-post-body strong { font-weight: 700; }
.forum-quote { font-style: italic; }
.forum-post .forum-post-actions { opacity: 0.85; }
.topic-row:hover { background: #f8fafc; }
/* Forum mobile */
@media (max-width: 640px) {
  .forum-reply-composer { position: static; box-shadow: none; }
  .forum-section-row:last-child { border-bottom: none; }
  .forum-section-stats { white-space: nowrap; }
  .forum-topic-meta {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }
  .forum-post-body { font-size: 0.9375rem; }
  .forum-post-header { line-height: 1.3; }
}

/* Lost-found hero: keep emerald-800 available even if Tailwind purge drops it */
.bg-emerald-800{--tw-bg-opacity:1;background-color:rgb(6 95 70/var(--tw-bg-opacity,1))}
