.line-clamp-2{
  display:-webkit-box;
  -webkit-line-clamp:2;
  -webkit-box-orient:vertical;
  overflow:hidden;
}
input[type="checkbox"]{accent-color:#2563eb;}
html.dark input[type="checkbox"]{accent-color:#60a5fa;}
.card{opacity:1;}
.multi-panel{scrollbar-width:thin;}
.multi-panel::-webkit-scrollbar{width:6px;}
.multi-panel::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:3px;}
html.dark .multi-panel::-webkit-scrollbar-thumb{background:#475569;}
.multi-chevron.rotate-180{transform:rotate(180deg);}
.rating-table tbody tr:last-child{border-bottom-width:0;}

.placement-sticky-bar.is-visible{
  transform:translateY(0);
  opacity:1;
  pointer-events:auto;
}
details.placement-example summary::-webkit-details-marker{display:none;}
details.placement-example[open] summary{border-bottom:1px solid rgb(243 244 246);}
html.dark details.placement-example[open] summary{border-bottom-color:rgb(31 41 55);}

/* Страница /placement/: широкий обзорный текст как в блоге */
.placement-page .placement-article-body{
  max-width:none;
}
.placement-page .placement-article-body img,
.placement-page .placement-article-body video,
.placement-page .placement-article-body iframe{
  max-width:100%;
  height:auto;
}
.placement-page .placement-article-body table{
  display:block;
  width:100%;
  max-width:100%;
  overflow-x:auto;
  border-collapse:collapse;
  font-size:.95em;
}
.placement-page .placement-article-body th,
.placement-page .placement-article-body td{
  border:1px solid rgb(229 231 235);
  padding:.5rem .75rem;
  vertical-align:top;
}
html.dark .placement-page .placement-article-body th,
html.dark .placement-page .placement-article-body td{
  border-color:rgb(55 65 81);
}
.placement-page .placement-article-body pre{
  overflow-x:auto;
  max-width:100%;
}
.placement-page .placement-plan-card:focus-visible{
  outline:2px solid rgb(37 99 235);
  outline-offset:2px;
}
.country-flag{display:inline-block;vertical-align:middle;object-fit:cover;border-radius:2px;}
img.country-flag{
  height:1.125rem;
  width:1.5rem;
  min-height:1.125rem;
  min-width:1.5rem;
  max-width:none;
  object-fit:cover;
  flex-shrink:0;
  background:#e5e7eb;
  box-shadow:0 0 0 1px rgba(0,0,0,.06);
}
html.dark img.country-flag{background:#374151;box-shadow:0 0 0 1px rgba(255,255,255,.12);}
.rating-flag-stack{min-width:0;}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;}

/* Тело статьи (HTML из редактора); длинные строки без пробелов не вылезают из колонки */
.article-body{
  max-width:100%;
  min-width:0;
  overflow-wrap:anywhere;
  word-break:break-word;
}
.article-body p{margin:.75rem 0;}
.article-body img{max-width:100%;height:auto;border-radius:.75rem;}
.article-body h2{font-size:1.35rem;font-weight:700;margin:1.5rem 0 .6rem;line-height:1.3;color:inherit;}
.article-body h3{font-size:1.15rem;font-weight:600;margin:1.25rem 0 .5rem;line-height:1.35;color:inherit;}
.article-body h4{font-size:1.05rem;font-weight:600;margin:1.1rem 0 .45rem;line-height:1.4;color:inherit;}
.article-body h5,.article-body h6{font-size:1rem;font-weight:600;margin:1rem 0 .4rem;color:inherit;}
.article-body ul{list-style:disc;padding-left:1.35rem;margin:.6rem 0;}
.article-body ol{list-style:decimal;padding-left:1.35rem;margin:.6rem 0;}
.article-body li{margin:.25rem 0;}
.article-body blockquote{border-left:3px solid #93c5fd;margin:1rem 0;padding:.25rem 0 .25rem 1rem;color:#4b5563;}
html.dark .article-body blockquote{border-left-color:#60a5fa;color:#d1d5db;}
.article-body pre,.article-body code{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:.9em;}
.article-body pre{
  background:#f3f4f6;
  border-radius:.5rem;
  padding:.75rem 1rem;
  overflow-x:auto;
  margin:.75rem 0;
  word-break:normal;
  overflow-wrap:normal;
  white-space:pre;
}
html.dark .article-body pre{background:#1f2937;}
.article-body code{background:#f3f4f6;padding:.1rem .35rem;border-radius:.25rem;}
html.dark .article-body code{background:#374151;}
.article-body pre code{background:transparent;padding:0;}
.article-body a{color:#2563eb;text-decoration:underline;}
html.dark .article-body a{color:#60a5fa;}
.article-body hr{border:0;border-top:1px solid #e5e7eb;margin:1.25rem 0;}
html.dark .article-body hr{border-top-color:#374151;}

/* Блоки внимания (callout): значок слева по вертикали по центру всего блока */
.article-body aside.article-callout,
.mce-content-body aside.article-callout{
  display:grid;
  grid-template-columns:auto 1fr;
  column-gap:.75rem;
  align-items:start;
  margin:1rem 0;
  padding:.85rem 1rem;
  border-radius:.65rem;
  max-width:100%;
  min-width:0;
}
.article-body aside.article-callout > *,
.mce-content-body aside.article-callout > *{
  grid-column:2;
  min-width:0;
}
.article-body aside.article-callout::before,
.mce-content-body aside.article-callout::before{
  content:'';
  grid-column:1;
  grid-row:1 / -1;
  align-self:center;
  justify-self:start;
  width:1.75rem;
  height:1.75rem;
  border-radius:9999px;
  display:flex;
  align-items:center;
  justify-content:center;
  font-weight:700;
  color:#fff;
  font-size:.95rem;
  line-height:1;
}
.article-body aside.article-callout--warning,
.mce-content-body aside.article-callout--warning{background:#fef9c3;color:#422006;}
html.dark .article-body aside.article-callout--warning{background:#422006;color:#fef9c3;}
.article-body aside.article-callout--warning::before,
.mce-content-body aside.article-callout--warning::before{content:'!';background:#ea580c;}
.article-body aside.article-callout--info,
.mce-content-body aside.article-callout--info{background:#eff6ff;color:#1e3a5f;}
html.dark .article-body aside.article-callout--info{background:#172554;color:#dbeafe;}
.article-body aside.article-callout--info::before,
.mce-content-body aside.article-callout--info::before{content:'?';background:#2563eb;}
.article-body aside.article-callout--error,
.mce-content-body aside.article-callout--error{background:#fef2f2;color:#450a0a;}
html.dark .article-body aside.article-callout--error{background:#450a0a;color:#fecaca;}
.article-body aside.article-callout--error::before,
.mce-content-body aside.article-callout--error::before{content:'\00d7';background:#dc2626;font-size:1.15rem;}
.article-body aside.article-callout--success,
.mce-content-body aside.article-callout--success{background:#f0fdf4;color:#14532d;}
html.dark .article-body aside.article-callout--success{background:#14532d;color:#dcfce7;}
.article-body aside.article-callout--success::before,
.mce-content-body aside.article-callout--success::before{content:'\2713';background:#16a34a;font-size:1rem;}

/* Более мягкая светлая тема (без изменения dark). */
html:not(.dark) body{
  background:#e9edf3;
  color:#243041;
}
html:not(.dark) .bg-gray-50{
  background:#eef2f7 !important;
}
html:not(.dark) .bg-white{
  background:#f4f7fb !important;
}
html:not(.dark) .border-gray-200{
  border-color:#d6deea !important;
}
html:not(.dark) .border-gray-300{
  border-color:#c6d0df !important;
}
html:not(.dark) .text-gray-900{
  color:#1f2a3a !important;
}
html:not(.dark) .text-gray-800{
  color:#2a3749 !important;
}
html:not(.dark) .text-gray-700{
  color:#3a4759 !important;
}
html:not(.dark) .text-gray-600{
  color:#4b586c !important;
}
html:not(.dark) .shadow-sm{
  box-shadow:0 1px 2px rgba(15,23,42,.05),0 10px 24px rgba(15,23,42,.04) !important;
}
html:not(.dark) input,
html:not(.dark) textarea,
html:not(.dark) select{
  background:#e8edf4 !important;
}
html:not(.dark) .placeholder\:text-gray-400::placeholder{
  color:#7d8a9e !important;
}
html:not(.dark) .bg-gray-100{
  background:#e4eaf3 !important;
}
html:not(.dark) .hover\:bg-gray-100:hover{
  background:#dde5f0 !important;
}
html:not(.dark) header.bg-white\/95{
  background:rgba(244,247,251,.92) !important;
}
html:not(.dark) .text-gray-500{
  color:#5c6a7d !important;
}
html:not(.dark) .text-gray-400{
  color:#6d7b8f !important;
}
html:not(.dark) .border-gray-100{
  border-color:#e0e7f0 !important;
}
html:not(.dark) .border-gray-700{
  border-color:#c6d0df !important;
}
html:not(.dark) .bg-blue-50{
  background:#e8f0fc !important;
}
html:not(.dark) .bg-sky-50{
  background:#e6f2fb !important;
}

/* Плавный скролл к якорям (уважение к reduced-motion) */
@media (prefers-reduced-motion: no-preference){
  html{
    scroll-behavior:smooth;
  }
}

/* Админка: toast (дублируется inline в admin_flash_emit_styles_once) */
.admin-toast-host{
  position:fixed;
  top:5.25rem;
  right:1rem;
  left:1rem;
  z-index:200;
  pointer-events:none;
  display:flex;
  justify-content:center;
}
@media (min-width:640px){
  .admin-toast-host{
    left:auto;
    justify-content:flex-end;
  }
}
.admin-toast{
  position:relative;
  overflow:hidden;
  pointer-events:auto;
  display:flex;
  align-items:center;
  gap:.75rem;
  width:100%;
  max-width:22rem;
  padding:.75rem 2.25rem .75rem .875rem;
  border-radius:.75rem;
  border:1px solid;
  box-shadow:0 12px 40px rgba(0,0,0,.28);
  animation:admin-toast-in .38s cubic-bezier(.21,1.02,.73,1) forwards;
}
.admin-toast--leaving{
  animation:admin-toast-out .32s cubic-bezier(.4,0,1,1) forwards;
}
.admin-toast--success{
  background:rgba(236,253,245,.96);
  border-color:rgba(16,185,129,.35);
  color:#065f46;
}
.admin-toast--error{
  background:rgba(255,241,242,.96);
  border-color:rgba(244,63,94,.35);
  color:#9f1239;
}
html.dark .admin-toast--success{
  background:rgba(6,78,59,.92);
  border-color:rgba(52,211,153,.4);
  color:#a7f3d0;
}
html.dark .admin-toast--error{
  background:rgba(76,5,25,.92);
  border-color:rgba(251,113,133,.4);
  color:#fecdd3;
}
.admin-toast__icon{
  flex-shrink:0;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:1.5rem;
  height:1.5rem;
  border-radius:9999px;
  font-size:.8rem;
  font-weight:800;
  line-height:1;
  background:rgba(0,0,0,.06);
}
html.dark .admin-toast__icon{
  background:rgba(255,255,255,.12);
}
.admin-toast__msg{
  margin:0;
  flex:1;
  min-width:0;
  font-size:.875rem;
  line-height:1.35;
  font-weight:600;
}
.admin-toast__close{
  position:absolute;
  top:.5rem;
  right:.5rem;
  width:1.75rem;
  height:1.75rem;
  border:0;
  border-radius:.5rem;
  background:transparent;
  color:inherit;
  font-size:1.25rem;
  line-height:1;
  cursor:pointer;
  opacity:.55;
  transition:opacity .15s ease,background-color .15s ease;
}
.admin-toast__close:hover{
  opacity:1;
  background:rgba(0,0,0,.06);
}
html.dark .admin-toast__close:hover{
  background:rgba(255,255,255,.1);
}
.admin-toast__progress{
  position:absolute;
  left:0;
  bottom:0;
  height:3px;
  width:100%;
  background:currentColor;
  opacity:.35;
  transform-origin:left center;
  animation:admin-toast-progress linear forwards;
}
@keyframes admin-toast-in{
  from{opacity:0;transform:translateY(-1rem) scale(.96);}
  to{opacity:1;transform:translateY(0) scale(1);}
}
@keyframes admin-toast-out{
  from{opacity:1;transform:translateY(0) scale(1);}
  to{opacity:0;transform:translateY(-.75rem) scale(.95);}
}
@keyframes admin-toast-progress{
  from{transform:scaleX(1);}
  to{transform:scaleX(0);}
}
@media (prefers-reduced-motion:reduce){
  .admin-toast{
    animation:none;
  }
  .admin-toast--leaving{
    animation:none;
    opacity:0;
  }
  .admin-toast__progress{
    display:none;
  }
}

/* Единый стиль dropdown на странице «Добавить сервис» и в фильтрах каталога */
.catalog-multi{
  position:relative;
  min-width:0;
}
.catalog-multi-btn{
  display:flex;
  width:100%;
  align-items:center;
  justify-content:space-between;
  gap:0.5rem;
  box-sizing:border-box;
  border:1px solid #e5e7eb;
  border-radius:0.75rem;
  background:#f9fafb;
  padding:0.625rem 0.75rem;
  text-align:left;
  font-size:0.875rem;
  line-height:1.25rem;
  font-weight:500;
  color:#1f2937;
  cursor:pointer;
  transition:border-color 0.15s ease, box-shadow 0.15s ease;
}
.catalog-multi-btn:hover{
  border-color:#60a5fa;
}
.catalog-multi-btn:focus{
  outline:none;
  border-color:#3b82f6;
  box-shadow:0 0 0 2px rgba(59,130,246,0.35);
}
.catalog-multi-btn .truncate{
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  min-width:0;
  flex:1 1 auto;
}
.catalog-multi-panel{
  position:absolute;
  left:0;
  right:0;
  top:100%;
  z-index:50;
  margin-top:0.25rem;
  max-height:14rem;
  overflow-y:auto;
  border-radius:0.75rem;
  border:1px solid #e5e7eb;
  background:#fff;
  padding:0.5rem;
  box-shadow:0 10px 15px -3px rgba(0,0,0,0.1), 0 4px 6px -4px rgba(0,0,0,0.1);
}
.catalog-multi-panel.hidden{
  display:none !important;
}
.catalog-multi-option{
  color:#374151;
}
.catalog-multi-option:hover{
  background:#f3f4f6;
}
html.dark .catalog-multi-btn{
  border-color:#374151 !important;
  background:rgba(31,41,55,0.55) !important;
  color:#e5e7eb !important;
}
html.dark .catalog-multi-btn:hover{
  border-color:#60a5fa;
}
html.dark .catalog-multi-panel{
  border-color:#1f2937;
  background:#111827;
  box-shadow:0 10px 15px -3px rgba(0,0,0,0.45);
}
html.dark .catalog-multi-option{
  color:#d1d5db;
}
html.dark .catalog-multi-option:hover{
  background:rgba(55,65,81,0.65);
}
.suggest-vendor-form > div:first-of-type .catalog-multi{
  z-index:60;
}

/* Telegram proxy cards (/telegram-proxy/) */
.proxy-grid{
  display:grid;
  gap:0.75rem;
}
@media (min-width:768px){
  .proxy-grid{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
}
.proxy-card{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:0.75rem;
  padding:0.75rem 0.875rem;
  border-radius:1rem;
  border:1px solid #e5e7eb;
  background:#f9fafb;
  box-shadow:0 1px 2px rgba(0,0,0,0.04);
}
html.dark .proxy-card{
  border-color:#1f2937;
  background:#030712;
  box-shadow:none;
}
.proxy-info{
  display:flex;
  align-items:center;
  gap:0.75rem;
  min-width:0;
  flex:1 1 auto;
}
.proxy-flag img{
  border-radius:3px;
  display:block;
}
.proxy-meta{
  min-width:0;
}
.proxy-name{
  font-weight:700;
  color:#111827;
  line-height:1.2;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
html.dark .proxy-name{
  color:#f9fafb;
}
.proxy-details{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:0.375rem;
  margin-top:0.25rem;
}
.proxy-tag{
  display:inline-flex;
  align-items:center;
  border-radius:9999px;
  background:#e5e7eb;
  padding:0.125rem 0.5rem;
  font-size:0.6875rem;
  font-weight:700;
  color:#374151;
}
html.dark .proxy-tag{
  background:#1f2937;
  color:#e5e7eb;
}
.proxy-votes{
  display:inline-flex;
  align-items:center;
  gap:0.25rem;
}
.proxy-vote-btn{
  display:inline-flex;
  align-items:center;
  gap:0.2rem;
  border-radius:9999px;
  border:1px solid #e5e7eb;
  background:#fff;
  padding:0.125rem 0.45rem;
  font-size:0.6875rem;
  font-weight:600;
  color:#4b5563;
  cursor:pointer;
  line-height:1.2;
  transition:background-color 0.15s ease, border-color 0.15s ease, color 0.15s ease;
}
html.dark .proxy-vote-btn{
  border-color:#374151;
  background:#111827;
  color:#d1d5db;
}
.proxy-vote-btn:hover{
  border-color:#93c5fd;
  background:#f0f9ff;
}
html.dark .proxy-vote-btn:hover{
  border-color:#38bdf8;
  background:rgba(14,165,233,0.15);
}
.proxy-vote-btn.is-active.proxy-vote-up{
  border-color:#34d399;
  background:#ecfdf5;
  color:#047857;
}
html.dark .proxy-vote-btn.is-active.proxy-vote-up{
  border-color:#34d399;
  background:rgba(6,78,59,0.45);
  color:#a7f3d0;
}
.proxy-vote-btn.is-active.proxy-vote-down{
  border-color:#fca5a5;
  background:#fef2f2;
  color:#b91c1c;
}
html.dark .proxy-vote-btn.is-active.proxy-vote-down{
  border-color:#f87171;
  background:rgba(127,29,29,0.35);
  color:#fecaca;
}
.proxy-vote-btn:disabled{
  opacity:0.6;
  cursor:wait;
}
.proxy-vote-num{
  min-width:0.75rem;
  text-align:center;
  font-variant-numeric:tabular-nums;
}
.proxy-card-aside{
  display:flex;
  flex-direction:column;
  align-items:flex-end;
  gap:0.375rem;
  flex-shrink:0;
}
.btn-connect{
  flex-shrink:0;
  display:inline-flex;
  align-items:center;
  border-radius:0.75rem;
  background:#0ea5e9;
  padding:0.5rem 1rem;
  font-size:0.875rem;
  font-weight:600;
  color:#fff;
  text-decoration:none;
  white-space:nowrap;
  box-shadow:0 1px 2px rgba(0,0,0,0.06);
  transition:background-color 0.15s ease;
}
.btn-connect:hover{
  background:#0284c7;
}
html.dark .btn-connect{
  background:#0ea5e9;
}
html.dark .btn-connect:hover{
  background:#38bdf8;
}
.pub-spoiler{
  border:1px solid #e5e7eb;
  border-radius:1rem;
  background:#f9fafb;
  padding:0.75rem 1rem;
}
html.dark .pub-spoiler{
  border-color:#1f2937;
  background:#030712;
}
.pub-spoiler summary{
  cursor:pointer;
  list-style:none;
  font-weight:700;
  font-size:0.9375rem;
  color:#111827;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:0.5rem;
  user-select:none;
}
html.dark .pub-spoiler summary{
  color:#f9fafb;
}
.pub-spoiler summary::-webkit-details-marker{
  display:none;
}
.pub-spoiler summary::after{
  content:'▼';
  font-size:0.75rem;
  color:#6b7280;
  transition:transform 0.15s ease;
}
html.dark .pub-spoiler summary::after{
  color:#9ca3af;
}
.pub-spoiler[open] summary::after{
  transform:rotate(180deg);
}
.pub-spoiler-body{
  padding-top:0.75rem;
}

/* Telegram proxy page uses Tailwind utilities (no custom block styles). */
