/* Пульс 34 · Mobile & editorial polish v6.4
   Measured against the public DOM classes on 34puls.ru (2026-11-04).
   Purposefully scoped: does not rewrite site routes, app theme state, or the carousel.
*/
:root {
  --p64-navy: #16243a;
  --p64-red: #bd3149;
  --p64-warm: #f6f5f2;
  --p64-border: #dce1e6;
  --p64-bottom-nav-height: 62px;
}

/* Image placeholders are editorial artwork, never a simulated documentary photo. */
.puls-v30-illustration {
  position: relative;
  isolation: isolate;
  overflow: hidden;
  background: radial-gradient(circle at 80% 20%, #b5c5c9 0, transparent 38%),
              radial-gradient(circle at 8% 86%, #acc4c7 0, transparent 48%),
              linear-gradient(135deg,#223852 0%,#506d81 47%,#b9c4be 100%);
}
.puls-v30-illustration::before {
  content: "";
  position: absolute;
  inset: 0;
  background: repeating-linear-gradient(116deg, transparent 0, transparent 46px,
    rgba(255,255,255,.06) 47px, transparent 49px);
  pointer-events: none;
}
.puls-v30-illustration .puls-illustration-number {
  font-size: clamp(42px, 13vw, 84px);
  line-height: 1;
  opacity: .65;
}
.puls-v30-illustration .puls-illustration-label {
  z-index: 1;
  display: block;
  box-sizing: border-box;
  max-width: calc(100% - 24px);
  padding: 5px 8px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  font-size: 11px;
  line-height: 1.4;
  letter-spacing: .02em;
}
.news-card .card-media { overflow: hidden; position: relative; }
.news-card .card-media img { display:block; width:100%; height:100%; object-fit:cover; }
.puls34-ai-mark {
  pointer-events: none;
  position: absolute;
  inset: auto auto 8px 8px;
  z-index: 2;
  padding: 4px 7px;
  background: rgba(22,36,58,.82);
  color: #fff;
  font: 600 10px/1.3 Arial, sans-serif;
  letter-spacing: .025em;
  border-radius: 3px;
}
/* Avoid repeating the existing text label on neutral editorial artwork. */
.puls-v30-illustration .puls34-ai-mark { display: none; }

/* A consistent high-contrast focus ring, keyboard-only. */
.designlab-final :focus-visible {
  outline: 3px solid #bd3149;
  outline-offset: 3px;
}
.designlab-final .list-copy,
.designlab-final .card-body,
.designlab-final .city-service-feed,
.designlab-final .city-filter-panel { min-width: 0; }
.designlab-final .story-content img {max-width:100%;height:auto;}
.designlab-final .story-content p {overflow-wrap:break-word;}

/* Empty service states: dignified, compact, and honest about missing data. */
.designlab-final .city-results-empty,
.designlab-final .story-tiles:empty {
  border: 1px solid var(--p64-border);
  padding: clamp(18px, 4vw, 32px);
  border-radius: 4px;
  background: #fff;
}
.puls34-help-link {
  display: inline-block;
  margin-top: 12px;
  color: var(--p64-red);
  font-weight: 700;
  text-decoration: underline;
  text-underline-offset: 3px;
}

@media (max-width: 767px) {
  html { -webkit-text-size-adjust: 100%; }
  body.designlab-final { overflow-x: clip; }
  body.designlab-final .wrap {
    box-sizing: border-box;
    width: 100%;
    max-width: 100%;
    padding-inline: 16px;
  }
  .designlab-final :is(.portal-home,.page-main,.city-service-main,.city-hub-main,.ad-cabinet,.article-layout) {
    padding-bottom: calc(22px + var(--p64-bottom-nav-height) + env(safe-area-inset-bottom, 0px));
  }
  .lab-sectiontop h1 { font-size: clamp(26px, 7.4vw, 34px); line-height:1.11; }
  .lab-sectiontop p { font-size: 14px; line-height: 1.5; }
  .designlab-final .home-section-line h2 { font-size: clamp(24px, 6vw, 29px); line-height: 1.15; }
  .designlab-final .news-card.featured h3,
  .designlab-final .lab-lead .news-card h3 {
    font-size: clamp(27px, 7.4vw, 37px) !important;
    line-height: 1.08 !important;
    letter-spacing: -.035em;
    overflow-wrap: anywhere;
    hyphens: auto;
  }
  .designlab-final .news-card.featured .card-body { padding: 18px 14px 20px !important; }
  .designlab-final .news-card.featured .card-body p {
    font-size: 15px;
    line-height: 1.52;
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 3;
    overflow: hidden;
  }
  .designlab-final .news-card.featured .card-media { max-height: 245px; aspect-ratio: 16/9; }
  .designlab-final .portal-news-grid .news-card .card-media { aspect-ratio: 16/9; }
  .designlab-final .news-list .list-item:has(img) {
    display: grid;
    grid-template-columns: minmax(0, 104px) minmax(0, 1fr);
    gap: 12px;
    align-items: start;
    padding-block: 16px;
  }
  .designlab-final .news-list .list-item:not(:has(img)) { display: block; padding-block: 16px; }
  .designlab-final .news-list .list-item > img,
  .designlab-final .news-list .list-item > a > img {
    display: block;
    width: 104px;
    height: 76px;
    max-width: 100%;
    object-fit: cover;
    border-radius: 3px;
  }
  .designlab-final .list-copy h2 {font-size:clamp(16px,4.5vw,19px);line-height:1.28;overflow-wrap:anywhere;}
  .designlab-final .list-copy small,
  .designlab-final .list-copy time {font-size:12px;}
  .designlab-final .story.lab-article > h1,
  .designlab-final .lab-article h1 {
    font-size: clamp(30px,8vw,42px) !important;
    line-height: 1.1 !important;
    letter-spacing: -.035em;
    overflow-wrap: break-word;
  }
  .designlab-final .lab-article .story-content {font-size: 17px !important;line-height:1.62 !important;}
  .designlab-final .lab-article .story-content p {font-size:inherit !important;line-height:1.62 !important; margin-block: 0 18px;}
  .designlab-final .lab-article .story-content h2 {font: 700 24px/1.2 Arial,Helvetica,sans-serif !important; letter-spacing: -.025em; margin: 25px 0 12px;}
  .designlab-final .lab-article .story-content h3 {font: 700 20px/1.2 Arial,Helvetica,sans-serif !important; margin:22px 0 9px;}
  .designlab-final .story-meta { display:flex; flex-wrap:wrap; gap:8px 14px; }
  .designlab-final .puls34-provenance-badge { font-size:13px; line-height:1.45; }
  .designlab-final .city-hub-head h1,
  .designlab-final .city-service-main h1,
  .designlab-final .page-main > .subhead h1 {font-size:clamp(30px, 8vw, 40px)!important;line-height:1.14;}
  .designlab-final .city-filter-panel {padding: 16px!important;}
  .designlab-final .city-filter-form {display:grid;grid-template-columns:minmax(0,1fr);gap:14px;}
  .designlab-final .city-filter-form :is(input,select,button) {
    box-sizing:border-box;display:block;width:100%;min-width:0;min-height:44px;
    font-size:16px;
  }
  .designlab-final .city-filter-form :is(input,select) {padding-inline:12px;}
  .designlab-final .city-filter-form label {line-height:1.4;}
  .designlab-final .city-filter-actions {display:flex;gap:10px;flex-wrap:wrap;}
  .designlab-final .city-filter-actions > * {flex:1 1 130px;}
  .designlab-final #puls34-map {height:min(62vh,480px)!important; min-height:320px;}
  .designlab-final .city-hub-grid {gap:14px;}
  .designlab-final .city-hub-grid a {min-width:0;}
  .designlab-final .mobile-bottom-nav {
    box-sizing: content-box;
    position:fixed;
    z-index:100;
    inset: auto 0 0;
    height:var(--p64-bottom-nav-height);
    min-height:0;
    padding-top:5px;
    padding-bottom:env(safe-area-inset-bottom, 0px);
    background:var(--p64-warm);
    border-top: 1px solid var(--p64-border);
    box-shadow:0 -5px 20px rgba(22,36,58,.07);
  }
  .designlab-final .mobile-bottom-nav a {
    box-sizing:border-box;min-width:0;padding:5px 2px;
    font-size:11px;line-height:1.2;gap:4px;
    text-align:center;
  }
  .designlab-final .mobile-bottom-nav :is(.lab-nav-icon,svg) {height:22px;width:22px;}
  .designlab-final #lab-back-top {bottom:calc(var(--p64-bottom-nav-height) + env(safe-area-inset-bottom,0px) + 14px);}
  .designlab-final .article-controls button {min-width:44px;min-height:44px;}
  .designlab-final .story-tiles {min-height:0;}
}
@media (prefers-reduced-motion: reduce) {
  .designlab-final *, .designlab-final *::before,.designlab-final *::after {
    scroll-behavior:auto!important;
    animation-duration:.01ms!important;
    transition-duration:.01ms!important;
  }
}
html[data-theme="dark"] .designlab-final .city-results-empty {background:#18253a; border-color:#435269; color:#f4f6f9;}
html[data-theme="dark"] .designlab-final .mobile-bottom-nav {background:#17243a;border-color:#364759;}
