/* =====================================================================
   ПУБЛИЧНЫЙ САЙТ v2.0 — отдельная дизайн-система для гостя (ТЗ §7-8).
   Токены в собственном неймспейсе --pub-*, чтобы никогда не столкнуться
   с --bg/--surface/--accent основного (member) приложения. Подключается
   и к серверному лендингу (lib/landing.js), и к #publicShell внутри SPA
   (public/index.html) — гость видит один и тот же язык везде.
   ===================================================================== */
:root{
  --pub-paper:#F7F3EE;
  --pub-card:#FFFFFF;
  --pub-card-2:#F0EAE2;
  --pub-line:#E3D9CE;
  --pub-ink:#17120F;
  --pub-ink-2:#5E524A;
  --pub-wine:#8E1F32;
  --pub-wine-ink:#8E1F32;
  --pub-gold:#A8823C;
  --pub-chip-bg:rgba(142,31,50,.09);
  --pub-shadow:0 1px 2px rgba(23,18,15,.05);
  --pub-r-card:12px; --pub-r-control:8px; --pub-r-pill:999px;
  --pub-header-h:64px;
  --pub-font-serif:'Source Serif 4', Georgia, 'Times New Roman', serif;
  --pub-font-sans:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif;
  --pub-font-mono:'PT Mono','SFMono-Regular',Menlo,Consolas,monospace;
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --pub-paper:#14100E; --pub-card:#1D1815; --pub-card-2:#241E19;
    --pub-line:#332B24; --pub-ink:#F2EBE4; --pub-ink-2:#B7A99C;
    --pub-wine-ink:#E07087; --pub-gold:#D3AC62;
    --pub-chip-bg:rgba(224,112,135,.14);
    --pub-shadow:0 1px 2px rgba(0,0,0,.3);
  }
}
:root[data-theme="dark"]{
  --pub-paper:#14100E; --pub-card:#1D1815; --pub-card-2:#241E19;
  --pub-line:#332B24; --pub-ink:#F2EBE4; --pub-ink-2:#B7A99C;
  --pub-wine-ink:#E07087; --pub-gold:#D3AC62;
  --pub-chip-bg:rgba(224,112,135,.14);
  --pub-shadow:0 1px 2px rgba(0,0,0,.3);
}

/* Кнопки первичные/акцентные всегда бордо, даже в тёмной теме (текстовый
   акцент --pub-wine-ink светлеет для контраста, заливка кнопки — нет). */
.pub{ --pub-btn-wine:#8E1F32; }

.pub{
  background:var(--pub-paper); color:var(--pub-ink);
  font-family:var(--pub-font-sans); font-size:17px; line-height:1.6;
  -webkit-font-smoothing:antialiased;
}
.pub *{ box-sizing:border-box; }
.pub a{ color:inherit; }
.pub img{ max-width:100%; display:block; }
.pub ::selection{ background:var(--pub-gold); color:#fff; }

.pub h1,.pub h2,.pub h3,.pub .pub-quote-text{ font-family:var(--pub-font-serif); font-weight:600; margin:0; color:var(--pub-ink);
  overflow-wrap:break-word; hyphens:auto; }
.pub h1{ font-size:52px; line-height:56px; letter-spacing:-.01em; }
.pub h2{ font-size:34px; line-height:40px; }
.pub h3{ font-size:21px; line-height:28px; }
.pub .pub-lead{ font-size:19px; line-height:30px; color:var(--pub-ink-2); font-weight:400; }
.pub .pub-small{ font-size:14px; line-height:21px; color:var(--pub-ink-2); }
.pub .pub-label{ font-family:var(--pub-font-mono); font-size:12px; line-height:16px; font-weight:500;
  letter-spacing:.12em; text-transform:uppercase; color:var(--pub-gold); }
@media (max-width:640px){
  .pub h1{ font-size:34px; line-height:38px; }
  .pub h2{ font-size:26px; line-height:32px; }
}

.pub .container{ max-width:1200px; margin:0 auto; padding:0 24px; }
.pub .col{ max-width:720px; }
.pub .pub-left{ text-align:left; }
.pub .pub-center{ text-align:center; }
.pub p{ margin:0 0 16px; max-width:68ch; }
.pub p:last-child{ margin-bottom:0; }

/* ---- шапка ---- */
.pub-header{
  position:sticky; top:0; z-index:100; height:var(--pub-header-h);
  background:var(--pub-paper); border-bottom:1px solid var(--pub-line);
  transition:backdrop-filter .2s;
}
.pub-header.scrolled{ backdrop-filter:blur(12px); background:rgba(247,243,238,.86); }
:root[data-theme="dark"] .pub-header.scrolled{ background:rgba(20,16,14,.86); }
@media (prefers-color-scheme: dark){ :root:not([data-theme="light"]) .pub-header.scrolled{ background:rgba(20,16,14,.86); } }
.pub-header-inner{ display:flex; align-items:center; gap:32px; height:var(--pub-header-h); }
.pub-brand{ display:flex; align-items:center; gap:10px; text-decoration:none; flex-shrink:0; }
.pub-brand img{ width:36px; height:36px; }
.pub-brand .pub-brand-name{ font-family:var(--pub-font-serif); font-weight:600; font-size:15px; line-height:1.2; color:var(--pub-ink); }
.pub-brand .pub-brand-name small{ display:block; font-family:var(--pub-font-mono); font-weight:500; font-size:9px;
  letter-spacing:.1em; text-transform:uppercase; color:var(--pub-ink-2); }
.pub-nav{ display:flex; align-items:center; gap:clamp(14px, 1.8vw, 28px); flex-wrap:nowrap; min-width:0; }
.pub-nav a{ font-size:15px; font-weight:500; text-decoration:none; color:var(--pub-ink-2); white-space:nowrap; }
.pub-nav a:hover{ color:var(--pub-ink); }
.pub-nav a.on{ color:var(--pub-ink); font-weight:600; }
/* Базовый .icon-btn живёт в index.html (member-приложение); серверные
   публичные страницы его не подключают, поэтому определяем здесь. */
.pub .icon-btn{ width:32px; height:32px; border:none; background:none; border-radius:var(--pub-r-control);
  display:inline-flex; align-items:center; justify-content:center; cursor:pointer;
  transition:background .15s, color .15s; }
.pub-spacer{ flex:1; }
.pub-header-actions{ display:flex; align-items:center; gap:10px; }
/* Переключатель языка: две буквы, без флагов — флаг означает страну, а не
   язык, и на казахстанском сайте это читалось бы неверно. */
.pub-lang{ display:inline-flex; align-items:center; height:32px; padding:0 10px;
  border-radius:var(--pub-r-control); border:1px solid var(--pub-line);
  font-size:13px; font-weight:500; text-decoration:none; color:var(--pub-ink-2); }
.pub-lang:hover{ border-color:var(--pub-ink-2); color:var(--pub-ink); }
/* Три языка — выпадающим списком: в шапке по-прежнему одна кнопка с кодом
   текущего языка, ширина почти та же, что у прежней «RU/KZ». */
.pub-lang-menu{ position:relative; }
.pub-lang-menu > summary{ list-style:none; cursor:pointer; gap:4px; padding:0 8px 0 10px; user-select:none; }
.pub-lang-menu > summary::-webkit-details-marker{ display:none; }
.pub-lang-menu > summary svg{ transition:transform .15s; }
.pub-lang-menu[open] > summary{ border-color:var(--pub-ink-2); color:var(--pub-ink); }
.pub-lang-menu[open] > summary svg{ transform:rotate(180deg); }
.pub-lang-list{ position:absolute; left:0; top:calc(100% + 6px); z-index:120; min-width:160px;
  display:flex; flex-direction:column; padding:6px; background:var(--pub-card);
  border:1px solid var(--pub-line); border-radius:var(--pub-r-card); box-shadow:0 8px 24px rgba(23,18,15,.12); }
.pub-lang-list a{ display:flex; align-items:center; justify-content:space-between; gap:16px;
  padding:8px 10px; border-radius:6px; font-size:14px; font-weight:500; text-decoration:none; color:var(--pub-ink); }
.pub-lang-list a span{ font-family:var(--pub-font-mono); font-size:11px; letter-spacing:.06em; color:var(--pub-ink-2); }
.pub-lang-list a:hover{ background:var(--pub-card-2); }
.pub-lang-list a.on{ color:var(--pub-wine-ink); font-weight:600; }
@media (max-width:900px){ .pub-nav{ display:none; } }
/* На узком экране бренд + две кнопки не помещались в 375px и давали
   горизонтальную прокрутку всей страницы (ТЗ §12 её запрещает). */
@media (max-width:560px){
  .pub-header-inner{ gap:12px; }
  .pub-brand .pub-brand-name small{ display:none; }
  .pub-header-actions{ gap:8px; }
  .pub-btn.small{ height:36px; padding:0 12px; font-size:14px; }
}
@media (max-width:430px){ .pub-brand .pub-brand-name{ display:none; } }

/* ---- кнопки ---- */
.pub-btn{ display:inline-flex; align-items:center; justify-content:center; gap:8px;
  height:48px; padding:0 24px; border-radius:var(--pub-r-control); font-size:16px; font-weight:600;
  text-decoration:none; border:1px solid transparent; white-space:nowrap; font-family:var(--pub-font-sans);
  transition:background .15s,opacity .15s; }
.pub-btn.primary{ background:var(--pub-btn-wine); color:#fff; }
.pub-btn.primary:hover{ opacity:.88; }
.pub-btn.secondary{ background:transparent; border-color:var(--pub-line); color:var(--pub-ink); }
.pub-btn.secondary:hover{ border-color:var(--pub-ink-2); }
.pub-btn.small{ height:40px; padding:0 18px; font-size:15px; }
.pub-btn.on-wine{ background:#fff; color:var(--pub-btn-wine); }
.pub-link-btn{ display:inline-flex; align-items:center; gap:6px; color:var(--pub-wine-ink); font-weight:500;
  text-decoration:none; font-size:16px; }
.pub-link-btn:hover{ text-decoration:underline; }

/* ---- секции ---- */
.pub-section{ padding:96px 0; border-bottom:1px solid var(--pub-line); }
.pub-section:last-of-type{ border-bottom:none; }
.pub-section.tight{ padding:64px 0; }
.pub-section-head{ margin-bottom:40px; max-width:640px; }
.pub-section-head .pub-label{ display:block; margin-bottom:12px; }
.pub-section-head h2{ margin-bottom:12px; }
@media (max-width:900px){ .pub-section{ padding:64px 0; } }
@media (max-width:640px){ .pub-section{ padding:48px 0; } }

/* ---- герой ---- */
.pub-hero{ padding:72px 0 88px; }
.pub-hero-grid{ display:grid; grid-template-columns:1.05fr 1fr; gap:48px; align-items:center; }
.pub-hero h1{ margin:14px 0 16px; }
.pub-hero .pub-lead{ max-width:640px; margin-bottom:24px; }
.pub-hero-actions{ display:flex; gap:12px; flex-wrap:wrap; margin-bottom:20px; }
.pub-hero-trust{ font-size:13px; color:var(--pub-ink-2); }
.pub-hero-photo{ position:relative; aspect-ratio:3/2; border-radius:12px; overflow:hidden;
  background:linear-gradient(135deg,var(--pub-card-2),var(--pub-line)); display:flex; align-items:center; justify-content:center; }
.pub-hero-photo img.crest{ width:38%; opacity:.35; }
.pub-hero-photo img.shot{ width:100%; height:100%; object-fit:cover; }
@media (max-width:900px){ .pub-hero-grid{ grid-template-columns:1fr; } .pub-hero-photo{ order:-1; } }

/* ---- полоса цифр ---- */
.pub-stats-bar{ background:var(--pub-card); border:1px solid var(--pub-line); border-radius:var(--pub-r-card);
  display:grid; grid-template-columns:repeat(4,1fr); }
.pub-stats-bar .s{ padding:24px; text-align:center; border-left:1px solid var(--pub-line); }
.pub-stats-bar .s:first-child{ border-left:none; }
.pub-stats-bar .n{ font-family:var(--pub-font-mono); font-weight:600; font-size:30px; color:var(--pub-wine-ink); }
.pub-stats-bar .l{ font-size:13px; color:var(--pub-ink-2); margin-top:4px; }
@media (max-width:640px){ .pub-stats-bar{ grid-template-columns:1fr 1fr; }
  .pub-stats-bar .s:nth-child(2n+1){ border-left:none; } .pub-stats-bar .s:nth-child(n+3){ border-top:1px solid var(--pub-line); } }

/* ---- факт-лист / карточки / что вы получаете-даёте ---- */
.pub-card{ background:var(--pub-card); border:1px solid var(--pub-line); border-radius:var(--pub-r-card); padding:24px; }
.pub-card.clickable{ transition:box-shadow .15s; }
.pub-card.clickable:hover{ box-shadow:var(--pub-shadow); }
.pub-two-col{ display:grid; grid-template-columns:1fr 1fr; gap:48px; align-items:start; }
@media (max-width:900px){ .pub-two-col{ grid-template-columns:1fr; gap:32px; } }
.pub-fact-list{ display:flex; flex-direction:column; }
.pub-fact-row{ display:flex; justify-content:space-between; align-items:baseline; height:40px;
  border-bottom:1px solid var(--pub-line); gap:16px; }
.pub-fact-row:last-child{ border-bottom:none; }
.pub-fact-row .k{ font-size:14px; color:var(--pub-ink-2); }
.pub-fact-row .v{ font-size:16px; font-weight:500; text-align:right; }
.pub-give-get{ display:grid; grid-template-columns:1fr 1fr; gap:24px; }
@media (max-width:640px){ .pub-give-get{ grid-template-columns:1fr; } }
.pub-give-get h3{ margin-bottom:16px; }
.pub-give-get ul{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:14px; }
.pub-give-get li{ display:flex; gap:10px; align-items:flex-start; font-size:15px; line-height:22px; }
.pub-give-get li svg{ flex-shrink:0; margin-top:3px; color:var(--pub-wine-ink); }

/* ---- цитата ---- */
.pub-quote{ background:var(--pub-card-2); padding:64px 0; }
.pub-quote-inner{ display:flex; gap:32px; align-items:center; }
.pub-quote.reverse .pub-quote-inner{ flex-direction:row-reverse; }
.pub-quote-photo{ width:120px; height:120px; border-radius:50%; flex-shrink:0; object-fit:cover; background:var(--pub-line); }
.pub-quote-photo.placeholder{ display:flex; align-items:center; justify-content:center; }
.pub-quote-photo.placeholder img{ width:44%; opacity:.5; }
.pub-quote-text{ font-size:26px; line-height:36px; font-weight:500; margin-bottom:16px; }
.pub-quote-name{ font-size:15px; font-weight:600; }
.pub-quote-role{ font-size:13px; color:var(--pub-ink-2); }
@media (max-width:640px){ .pub-quote-inner{ flex-direction:column; text-align:center; }
  .pub-quote.reverse .pub-quote-inner{ flex-direction:column; } .pub-quote-text{ font-size:21px; line-height:29px; } }

/* ---- шаги ---- */
.pub-steps{ display:grid; grid-template-columns:repeat(4,1fr); gap:24px; position:relative; }
.pub-steps::before{ content:''; position:absolute; top:14px; left:calc(12.5% + 14px); right:calc(12.5% + 14px);
  height:1px; background:var(--pub-line); z-index:0; }
@media (max-width:900px){ .pub-steps{ grid-template-columns:1fr 1fr; } .pub-steps::before{ display:none; } }
@media (max-width:560px){ .pub-steps{ grid-template-columns:1fr; } }
.pub-step{ position:relative; z-index:1; }
.pub-step .num{ width:28px; height:28px; border-radius:50%; border:1px solid var(--pub-line); background:var(--pub-paper);
  display:flex; align-items:center; justify-content:center; font-family:var(--pub-font-mono); font-size:12px;
  color:var(--pub-wine-ink); margin-bottom:16px; }
.pub-step h3{ margin-bottom:6px; font-size:17px; line-height:24px; }
.pub-step p{ font-size:14px; line-height:21px; color:var(--pub-ink-2); }

/* ---- плитка выпуска ---- */
.pub-year-strip{ display:flex; flex-wrap:wrap; gap:8px; }
.pub-year-tile{ display:flex; align-items:baseline; gap:8px; height:44px; padding:0 16px; border-radius:var(--pub-r-control);
  background:var(--pub-card); border:1px solid var(--pub-line); text-decoration:none; color:var(--pub-ink); }
.pub-year-tile:hover{ border-color:var(--pub-ink-2); }
.pub-year-tile .y{ font-family:var(--pub-font-mono); font-weight:600; color:var(--pub-wine-ink); font-size:15px; }
.pub-year-tile .c{ font-size:12px; color:var(--pub-ink-2); }

/* ---- аккордеон (нативный, без JS) ---- */
.pub-faq{ max-width:720px; }
.pub-faq details{ border-bottom:1px solid var(--pub-line); }
.pub-faq details:first-child{ border-top:1px solid var(--pub-line); }
.pub-faq summary{ list-style:none; cursor:pointer; display:flex; align-items:center; justify-content:space-between;
  height:52px; font-size:17px; font-weight:500; }
.pub-faq summary::-webkit-details-marker{ display:none; }
.pub-faq summary .chev{ flex-shrink:0; transition:transform .18s; color:var(--pub-ink-2); }
.pub-faq details[open] summary .chev{ transform:rotate(180deg); }
.pub-faq .a{ font-size:16px; line-height:26px; color:var(--pub-ink-2); max-width:640px; padding-bottom:20px; }

/* ---- сетки карточек: проекты / направления ---- */
.pub-grid-cards{ display:grid; grid-template-columns:repeat(auto-fill,minmax(280px,1fr)); gap:16px; }
.pub-proj-photo{ aspect-ratio:16/9; border-radius:var(--pub-r-card) var(--pub-r-card) 0 0; overflow:hidden;
  background:var(--pub-card-2); display:flex; align-items:center; justify-content:center; }
.pub-proj-photo img{ width:30%; opacity:.4; }
.pub-proj-card{ border:1px solid var(--pub-line); border-radius:var(--pub-r-card); overflow:hidden; background:var(--pub-card); }
.pub-proj-body{ padding:20px; }
.pub-proj-body h3{ margin-bottom:6px; }
.pub-proj-body p{ font-size:14px; color:var(--pub-ink-2); margin-bottom:12px; }
.pub-chip{ display:inline-flex; align-items:center; height:26px; padding:0 12px; border-radius:var(--pub-r-pill);
  background:var(--pub-chip-bg); color:var(--pub-wine-ink); font-size:12px; font-weight:500; }

/* ---- финальный CTA (единственная крупная заливка бордо) ---- */
.pub-cta-band{ background:var(--pub-btn-wine); color:#fff; text-align:center; padding:56px 0; }
.pub-cta-band h2{ color:#fff; margin-bottom:10px; }
.pub-cta-band p{ color:rgba(255,255,255,.85); margin:0 auto 24px; }

/* ---- футер ---- */
.pub-footer{ background:var(--pub-paper); padding:64px 0 32px; }
.pub-footer-grid{ display:grid; grid-template-columns:1.4fr 1fr 1fr 1fr; gap:40px; margin-bottom:40px; }
.pub-footer-col .pub-label{ display:block; margin-bottom:14px; }
.pub-footer-col{ display:flex; flex-direction:column; gap:10px; }
.pub-footer-col a{ font-size:14px; color:var(--pub-ink-2); text-decoration:none; }
.pub-footer-col a:hover{ color:var(--pub-ink); }
.pub-footer-bottom{ border-top:1px solid var(--pub-line); padding-top:20px; display:flex; justify-content:space-between;
  flex-wrap:wrap; gap:10px; font-size:13px; color:var(--pub-ink-2); }
@media (max-width:768px){ .pub-footer-grid{ grid-template-columns:1fr 1fr; } }
@media (max-width:480px){ .pub-footer-grid{ grid-template-columns:1fr; } }

/* ---- фотоблоки: одиночное фото с подписью и сетка кадров ---- */
.pub-figure{ margin:0; }
.pub-figure img{ width:100%; height:auto; border-radius:var(--pub-r-card); }
.pub-figure figcaption{ font-size:13px; line-height:19px; color:var(--pub-ink-2); margin-top:10px; max-width:68ch; }
.pub-photo-grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:16px; }
.pub-photo-grid figure{ margin:0; }
.pub-photo-grid img{ width:100%; height:auto; aspect-ratio:4/3; object-fit:cover; border-radius:var(--pub-r-card); }
.pub-photo-grid figcaption{ font-size:13px; line-height:19px; color:var(--pub-ink-2); margin-top:8px; }
@media (max-width:900px){ .pub-photo-grid{ grid-template-columns:1fr 1fr; } }
@media (max-width:520px){ .pub-photo-grid{ grid-template-columns:1fr; } }

/* ---- обложка внутренней страницы ---- */
.pub-cover{ position:relative; }
.pub-cover img{ width:100%; height:clamp(260px,42vw,440px); object-fit:cover; }
.pub-cover-text{ position:absolute; inset:auto 0 0 0; padding:40px 0 32px;
  background:linear-gradient(to top, rgba(10,7,6,.82), rgba(10,7,6,.16) 70%, transparent); }
.pub-cover-text h1{ color:#fff; margin-bottom:10px; }
.pub-cover-text p{ color:rgba(255,255,255,.88); font-size:17px; max-width:58ch; margin:0; }
/* «Специализированный» — самое длинное слово на сайте: на 375px оно не влезало
   в строку и растягивало страницу по горизонтали. */
@media (max-width:640px){
  .pub-cover-text{ padding:24px 0 20px; }
  .pub-cover-text h1{ font-size:27px; line-height:33px; }
  .pub-cover-text p{ font-size:15px; }
}

/* ---- таймлайн ---- */
.pub-timeline{ display:flex; flex-direction:column; }
.pub-tl-row{ display:grid; grid-template-columns:76px 1fr; gap:16px; padding:16px 0;
  border-top:1px solid var(--pub-line); }
.pub-tl-row:last-child{ border-bottom:1px solid var(--pub-line); }
.pub-tl-row .y{ font-family:var(--pub-font-mono); font-weight:600; color:var(--pub-wine-ink); font-size:15px; }
.pub-tl-row .t{ font-size:16px; line-height:24px; }

/* ---- врезка ---- */
.pub-callout{ background:var(--pub-card-2); border-left:3px solid var(--pub-wine-ink);
  border-radius:0 var(--pub-r-card) var(--pub-r-card) 0; padding:24px; }
.pub-callout .pub-label{ display:block; margin-bottom:10px; }
.pub-callout p{ font-size:16px; line-height:24px; }

/* ---- сплошной текстовый блок ---- */
.pub-prose{ max-width:68ch; }
.pub-prose p{ margin-bottom:20px; }

/* ---- список с галочками ---- */
.pub-checklist{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:14px; }
.pub-checklist li{ display:flex; gap:10px; align-items:flex-start; font-size:16px; line-height:24px; }
.pub-checklist li svg{ flex-shrink:0; margin-top:4px; color:var(--pub-wine-ink); }

/* ---- персона (портрет + должность) ---- */
.pub-person{ display:flex; gap:16px; align-items:center; }
.pub-person img,.pub-person .ph{ width:88px; height:88px; border-radius:50%; object-fit:cover;
  background:var(--pub-card-2); flex-shrink:0; }

/* ---- лента выпусков ---- */
.pub-years{ display:flex; flex-direction:column; }
.pub-year-row{ display:grid; grid-template-columns:64px 190px 1fr auto;
  gap:16px; align-items:center; padding:14px 0; border-top:1px solid var(--pub-line); }
.pub-year-row:last-child{ border-bottom:1px solid var(--pub-line); }
.pub-year-row .yy{ font-family:var(--pub-font-mono); font-weight:600; font-size:16px; color:var(--pub-wine-ink); }
.pub-year-row .cnt{ font-size:16px; font-weight:500; white-space:nowrap; }
.pub-year-row .cnt span{ font-weight:400; color:var(--pub-ink-2); font-size:14px; }
.pub-year-row .reg{ font-size:14px; color:var(--pub-ink-2); }
@media (max-width:860px){
  .pub-year-row{ grid-template-columns:56px 1fr; row-gap:6px; }
  .pub-year-row .reg{ grid-column:2 / -1; }
  .pub-year-row .pub-btn{ grid-column:1 / -1; justify-self:start; margin-top:6px; }
}

/* ---- проекты списком ---- */
.pub-proj-list{ display:flex; flex-direction:column; }
.pub-proj-row{ padding:32px 0; border-top:1px solid var(--pub-line); max-width:68ch; }
.pub-proj-row:last-child{ border-bottom:1px solid var(--pub-line); }
.pub-proj-row .head{ display:flex; align-items:center; gap:12px; margin-bottom:10px; flex-wrap:wrap; }
.pub-proj-row h2{ font-size:26px; line-height:32px; }
.pub-proj-row .lead{ font-size:17px; font-weight:500; margin-bottom:10px; }
.pub-proj-row p{ color:var(--pub-ink-2); font-size:16px; line-height:26px; }

/* ---- блог: вкладки рубрик ---- */
.pub-tabs{ display:flex; flex-wrap:wrap; gap:8px; margin-bottom:32px; }
.pub-tab{ display:inline-flex; align-items:center; height:36px; padding:0 14px; border-radius:var(--pub-r-pill);
  border:1px solid var(--pub-line); font-size:14px; font-weight:500; text-decoration:none; color:var(--pub-ink-2); }
.pub-tab:hover{ border-color:var(--pub-ink-2); color:var(--pub-ink); }
.pub-tab.on{ background:var(--pub-btn-wine); border-color:var(--pub-btn-wine); color:#fff; }

/* ---- блог: карточки ленты ---- */
.pub-post-grid{ display:grid; grid-template-columns:repeat(auto-fill,minmax(300px,1fr)); gap:20px; }
.pub-post-card{ display:flex; flex-direction:column; text-decoration:none; color:inherit;
  border:1px solid var(--pub-line); border-radius:var(--pub-r-card); overflow:hidden; background:var(--pub-card);
  transition:box-shadow .15s, border-color .15s; }
.pub-post-card:hover{ box-shadow:var(--pub-shadow); border-color:var(--pub-ink-2); }
.pub-post-card img,.pub-post-card .noimg{ width:100%; aspect-ratio:16/9; object-fit:cover; background:var(--pub-card-2); }
.pub-post-card .body{ padding:18px 20px 22px; }
.pub-post-card .meta{ display:flex; gap:10px; align-items:center; flex-wrap:wrap; margin-bottom:8px;
  font-family:var(--pub-font-mono); font-size:11px; letter-spacing:.08em; text-transform:uppercase; color:var(--pub-ink-2); }
.pub-post-card .meta .rub{ color:var(--pub-gold); }
.pub-post-card h3{ font-size:19px; line-height:26px; margin-bottom:8px; }
.pub-post-card p{ font-size:14px; line-height:21px; color:var(--pub-ink-2); margin:0; }

/* ---- блог: страница материала ---- */
.pub-article-head{ max-width:68ch; margin-bottom:32px; }
.pub-back{ display:inline-block; margin-bottom:14px; text-decoration:none; font-family:var(--pub-font-mono);
  font-size:12px; letter-spacing:.1em; text-transform:uppercase; color:var(--pub-gold); }
.pub-back:hover{ text-decoration:underline; }
.pub-article-head h1{ font-size:40px; line-height:46px; margin-bottom:12px; }
.pub-article-meta{ font-size:14px; color:var(--pub-ink-2); margin-bottom:16px; }
.pub-article-body{ max-width:68ch; font-size:17px; line-height:28px; }
.pub-article-body p{ margin-bottom:20px; }
@media (max-width:640px){ .pub-article-head h1{ font-size:28px; line-height:34px; } }

.pub-bullets{ margin:0 0 20px 0; padding-left:20px; }
.pub-bullets li{ margin-bottom:8px; }
.pub-blockquote{ margin:0 0 20px; padding-left:20px; border-left:3px solid var(--pub-gold); }
.pub-blockquote p{ font-family:var(--pub-font-serif); font-size:20px; line-height:30px; margin-bottom:6px; }
.pub-blockquote cite{ font-style:normal; font-size:14px; color:var(--pub-ink-2); }

.pub-table-wrap{ overflow-x:auto; margin:0 0 24px; }
.pub-table{ width:100%; border-collapse:collapse; font-size:15px; }
.pub-table th,.pub-table td{ text-align:left; padding:10px 12px; border-bottom:1px solid var(--pub-line); }
.pub-table th{ font-weight:600; font-size:13px; color:var(--pub-ink-2); }
.pub-table td.num,.pub-table th:last-child{ text-align:right; white-space:nowrap; font-family:var(--pub-font-mono); }

.pub-video{ max-width:720px; aspect-ratio:16/9; margin:0 0 8px; border-radius:var(--pub-r-card); overflow:hidden; background:var(--pub-card-2); }
.pub-video iframe{ width:100%; height:100%; border:0; display:block; }

.pub-source{ margin-top:32px; font-size:13px; color:var(--pub-ink-2); max-width:68ch; }
.pub-source a{ color:var(--pub-wine-ink); }

/* ---- заглушка фото (герб + подпись, честно вместо стока) ---- */
.pub-placeholder{ background:var(--pub-card-2); display:flex; flex-direction:column; align-items:center;
  justify-content:center; gap:8px; color:var(--pub-ink-2); }
.pub-placeholder img{ width:64px; opacity:.35; }
.pub-placeholder span{ font-size:12px; }

.pub-scale-in{ animation:pubFade .4s ease both; }
@keyframes pubFade{ from{ opacity:0; transform:translateY(6px); } to{ opacity:1; transform:none; } }
@media (prefers-reduced-motion: reduce){ .pub-scale-in{ animation:none; } }

/* Тумблер темы (общий компонент member-приложения, .icon-btn) в публичной
   шапке — подстроен под токены гостевого дизайна, чтобы не выбивался. */
.pub .icon-btn{ color:var(--pub-ink-2); }
.pub .icon-btn:hover{ background:var(--pub-card-2); color:var(--pub-ink); }

/* =====================================================================
   ФОРМЫ (/ideas — приём вопросов и предложений с открытой части).
   До этой страницы на публичном сайте не было ни одного поля ввода,
   поэтому элементы формы описаны здесь целиком, в тех же токенах.
   ===================================================================== */
.pub-form{ display:flex; flex-direction:column; gap:24px; }
.pub-field{ display:flex; flex-direction:column; gap:8px; min-width:0; }
.pub-field-label{ font-size:15px; font-weight:600; color:var(--pub-ink); }
.pub-field-label .req{ font-weight:400; color:var(--pub-ink-2); }
.pub-field-hint{ font-size:14px; line-height:1.5; color:var(--pub-ink-2); }

.pub-form input[type=text], .pub-form input[type=email], .pub-form input[type=tel],
.pub-form textarea{
  width:100%; font-family:var(--pub-font-sans); font-size:16px; line-height:1.5;
  color:var(--pub-ink); background:var(--pub-card);
  border:1px solid var(--pub-line); border-radius:var(--pub-r-control);
  padding:12px 14px; transition:border-color .15s, box-shadow .15s;
}
.pub-form input[type=text], .pub-form input[type=email], .pub-form input[type=tel]{ height:48px; }
.pub-form textarea{ resize:vertical; min-height:150px; }
.pub-form input::placeholder, .pub-form textarea::placeholder{ color:var(--pub-ink-2); opacity:.7; }
.pub-form input:focus, .pub-form textarea:focus{
  outline:none; border-color:var(--pub-wine-ink);
  box-shadow:0 0 0 3px var(--pub-chip-bg);
}
.pub-form input:disabled{ background:var(--pub-card-2); color:var(--pub-ink-2); cursor:not-allowed; }

/* Тип обращения: не «select», а видимые варианты — человек сразу понимает,
   что тут вообще можно написать. */
.pub-radios{ display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; }
.pub-radio{ display:block; cursor:pointer; }
.pub-radio input{ position:absolute; opacity:0; width:0; height:0; }
.pub-radio-box{
  display:flex; flex-direction:column; gap:2px; height:100%;
  padding:12px 14px; background:var(--pub-card);
  border:1px solid var(--pub-line); border-radius:var(--pub-r-control);
  transition:border-color .15s, background .15s;
}
.pub-radio:hover .pub-radio-box{ border-color:var(--pub-ink-2); }
.pub-radio input:checked + .pub-radio-box{
  border-color:var(--pub-wine-ink); background:var(--pub-chip-bg);
}
.pub-radio input:focus-visible + .pub-radio-box{ box-shadow:0 0 0 3px var(--pub-chip-bg); }
.pub-radio-label{ font-size:15px; font-weight:600; }
.pub-radio-hint{ font-size:13px; line-height:1.4; color:var(--pub-ink-2); }

.pub-check{ display:flex; align-items:center; gap:10px; cursor:pointer; font-size:16px; }
.pub-check input{ width:20px; height:20px; accent-color:var(--pub-btn-wine); margin:0; flex:none; }

/* Имя и выпуск гаснут, когда выбрана анонимность: поля остаются на месте,
   чтобы страница не «прыгала», но видно, что они больше не в игре. */
.pub-subfields{ transition:opacity .15s; }
.pub-subfields.off{ opacity:.45; }
.pub-field-row{ display:flex; gap:12px; }
.pub-field-row > .pub-field{ flex:1 1 0; }
.pub-field-row > .pub-field.narrow{ flex:0 0 120px; }

.pub-form-actions{ display:flex; align-items:center; gap:16px; flex-wrap:wrap; }
.pub-form-note{ font-size:14px; line-height:1.5; color:var(--pub-ink-2); }
.pub-form-note.bad{ color:var(--pub-wine-ink); font-weight:500; }
#ideaCount.over{ color:var(--pub-wine-ink); font-weight:600; }

/* Ловушка для ботов: убрана с экрана, но не display:none — часть ботов
   пропускает скрытые поля, а этого видит и заполняет. */
.pub-hp{ position:absolute; left:-9999px; width:1px; height:1px; overflow:hidden; }

.pub-callout.ok{ border-color:var(--pub-gold); }

@media (max-width:640px){
  .pub-radios{ grid-template-columns:1fr; }
  .pub-field-row{ flex-direction:column; gap:16px; }
  .pub-field-row > .pub-field.narrow{ flex:1 1 auto; }
  /* На мобильных Safari поле с font-size < 16px заставляет страницу
     масштабироваться при фокусе. */
  .pub-form input, .pub-form textarea{ font-size:16px; }
}

/* «Поддержать» в шапке — акцентом, но не кнопкой-криком. */
.pub-nav a.pub-donate{ color:var(--pub-wine-ink); font-weight:600; display:inline-flex; align-items:center; gap:5px;
  padding:6px 12px; border-radius:999px; background:var(--pub-chip-bg); }
.pub-nav a.pub-donate::before{ content:'♥'; font-size:13px; }
/* Между 900 и 1180 пикселями пунктов много — чуть плотнее, чтобы влезли в строку. */
/* Меню никогда не сжимается под кнопки (раньше наезжало на RU/тему/«Войти»).
   1180–1081: плотнее, у бренда только герб; ≤1080: меню уходит второй строкой
   шапки с горизонтальной прокруткой. */
.pub-nav{ flex-shrink:0; gap:clamp(14px, 1.5vw, 20px); }
.pub-header-inner{ gap:24px; }
@media (max-width:1400px){ .pub-brand .pub-brand-name small{ display:none; } }
@media (max-width:1180px){ .pub-nav{ gap:16px; } .pub-nav a{ font-size:14px; } .pub-header-inner{ gap:20px; } .pub-brand .pub-brand-name{ display:none; } }
@media (max-width:1080px){
  .pub-header{ height:auto; }
  .pub-header-inner{ flex-wrap:wrap; height:auto; row-gap:0; padding-top:12px; }
  .pub-spacer{ display:none; } .pub-header-actions{ margin-left:auto; }
  .pub-brand .pub-brand-name{ display:block; }
  .pub-nav{ display:flex !important; order:3; flex:0 0 100%; min-width:0; overflow-x:auto; scrollbar-width:none;
    gap:18px; height:44px; margin:0 -4px; padding:0 4px; -webkit-overflow-scrolling:touch; }
  .pub-nav::-webkit-scrollbar{ display:none; }
}
@media (max-width:430px){ .pub-brand .pub-brand-name{ display:none; } }

/* «Голоса встречи» на главной: крупная карточка с фото с трибуны + две карточки
   с аватарами + плитка-ссылка на материал о встрече с общим фото. */
.pub-voices-grid{ display:grid; grid-template-columns:1.15fr 1fr; gap:20px; align-items:stretch; }
.pub-voices-side{ display:grid; grid-template-rows:auto auto 1fr; gap:20px; }
.pub-voice{ margin:0; background:var(--pub-card); border:1px solid var(--pub-line); border-radius:16px;
  overflow:hidden; display:flex; flex-direction:column; }
.pub-voice-body{ position:relative; padding:26px 26px 22px; display:flex; flex-direction:column; gap:18px; flex:1; }
.pub-voice-mark{ position:absolute; top:4px; right:18px; font-family:var(--pub-font-serif); font-size:96px; line-height:1;
  color:var(--pub-gold); opacity:.35; pointer-events:none; }
.pub-voice-text{ margin:0; font-family:var(--pub-font-serif); font-weight:500; font-size:20px; line-height:1.45;
  color:var(--pub-ink); padding-right:28px; }
.pub-voice.feature .pub-voice-text{ font-size:clamp(22px, 2.3vw, 28px); line-height:1.38; }
.pub-voice-text mark{ background:linear-gradient(transparent 58%, rgba(168,130,60,.28) 58%); color:inherit; padding:0 2px; }
.pub-voice-by{ display:flex; align-items:center; gap:12px; margin-top:auto; }
.pub-voice-by b{ display:block; font-size:15px; font-weight:600; color:var(--pub-ink); }
.pub-voice-by small{ display:block; font-size:13px; line-height:1.4; color:var(--pub-ink-2); }
.pub-voice-ava{ width:52px; height:52px; border-radius:50%; object-fit:cover; flex-shrink:0; background:var(--pub-line); }
.pub-voice-photo{ aspect-ratio:16/11; overflow:hidden; background:var(--pub-line); }
.pub-voice-photo img{ width:100%; height:100%; object-fit:cover; object-position:50% 18%; display:block; }
.pub-voice.feature .pub-voice-by{ border-left:3px solid var(--pub-wine); padding-left:12px; }
.pub-voice-more{ position:relative; display:block; min-height:150px; border-radius:16px; overflow:hidden; text-decoration:none; }
.pub-voice-more img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; transition:transform .4s; }
.pub-voice-more::after{ content:''; position:absolute; inset:0; background:linear-gradient(180deg, rgba(23,18,15,0) 30%, rgba(23,18,15,.78)); }
.pub-voice-more span{ position:absolute; left:20px; bottom:16px; z-index:1; color:#fff; font-weight:600; font-size:16px;
  display:inline-flex; align-items:center; gap:8px; }
.pub-voice-more span svg{ width:16px; height:16px; }
.pub-voice-more:hover img{ transform:scale(1.03); }
@media (max-width:900px){ .pub-voices-grid{ grid-template-columns:1fr; } .pub-voices-side{ grid-template-rows:none; } }
@media (max-width:560px){ .pub-voice-body{ padding:22px 20px 20px; } .pub-voice-text{ font-size:18px; } }
/* Подзаголовки и фото внутри развёрнутого материала блога. */
.pub-article-body h2{ font-size:clamp(22px, 2.4vw, 27px); line-height:1.3; margin:44px 0 14px; }
.pub-article-body .pub-inline-figure{ margin:28px 0; }
.pub-article-body .pub-inline-figure img{ width:100%; border-radius:12px; display:block; }
/* «Руководство» на странице Ассоциации: кликабельные карточки людей. */
.pub-leaders{ display:grid; grid-template-columns:1fr 1fr; gap:16px; }
.pub-leader{ display:flex; align-items:center; gap:18px; padding:18px; background:var(--pub-card); border:1px solid var(--pub-line);
  border-radius:16px; text-decoration:none; color:inherit; box-shadow:0 1px 2px rgba(23,18,15,.05); transition:border-color .15s; }
.pub-leader:hover{ border-color:var(--pub-ink-2); }
.pub-leader > img, .pub-leader-ph{ width:84px; height:84px; border-radius:50%; object-fit:cover; flex-shrink:0; background:var(--pub-line);
  display:flex; align-items:center; justify-content:center; }
.pub-leader-ph img{ width:44%; opacity:.5; }
.pub-leader-txt{ display:flex; flex-direction:column; gap:4px; min-width:0; flex:1; }
.pub-leader-txt b{ font-family:var(--pub-font-serif); font-size:18px; font-weight:600; color:var(--pub-ink); }
.pub-leader-txt .role{ font-size:14px; font-weight:500; color:var(--pub-wine-ink); }
.pub-leader-txt .about{ font-size:13px; line-height:1.45; color:var(--pub-ink-2); }
.pub-leader-go{ color:var(--pub-ink-2); flex-shrink:0; } .pub-leader-go svg{ width:18px; height:18px; }
@media (max-width:760px){ .pub-leaders{ grid-template-columns:1fr; } }

/* Баннеры-карусель: главная приложения (homeBanners в index.html) и главная
   публичного сайта (lib/landing.js). Общие стили — здесь. */
.hb{ position:relative; border-radius:16px; overflow:hidden; margin-bottom:var(--s4); touch-action:pan-y; }
.hb-track{ display:flex; transition:transform .5s cubic-bezier(.4,0,.2,1); }
.hb-slide{ position:relative; flex:0 0 100%; min-height:232px; display:flex; align-items:center; overflow:hidden; color:#fff; }
.hb-slide.tone-brand{ background:linear-gradient(120deg,#2A1A17 0%,#4A1E27 60%,#6E1B2E 100%); }
.hb-slide.tone-wine{ background:linear-gradient(120deg,#8E1F32 0%,#B0283F 100%); }
.hb-slide.tone-photo{ background:#17120F; }
.hb-bg{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; object-position:50% 40%; }
.hb-slide.tone-photo::before{ content:''; position:absolute; inset:0; z-index:1; background:linear-gradient(90deg, rgba(15,10,8,.88) 0%, rgba(15,10,8,.62) 45%, rgba(15,10,8,.1) 100%); }
.hb-content{ position:relative; z-index:2; padding:28px 32px 44px; max-width:62%; }
.hb-eyebrow{ font-size:12px; font-weight:600; letter-spacing:.08em; text-transform:uppercase; opacity:.78; margin-bottom:8px; }
.hb .hb-title{ font-size:26px; line-height:1.2; font-weight:700; margin:0 0 8px; color:#fff; }
.hb .hb-text{ margin:0 0 18px; font-size:15px; line-height:1.5; opacity:.88; max-width:56ch; }
.hb-actions{ display:flex; flex-wrap:wrap; gap:10px; }
.hb-btn{ height:40px; padding:0 18px; border-radius:10px; font:inherit; font-size:14px; font-weight:600; cursor:pointer; border:1px solid transparent; }
.hb-btn.primary{ background:#fff; color:#6E1B2E; }
.hb-btn.light{ background:#fff; color:#8E1F32; }
.hb-btn.ghost{ background:rgba(255,255,255,.12); color:#fff; border-color:rgba(255,255,255,.35); }
.hb-btn:hover{ filter:brightness(.95); } .hb-btn.ghost:hover{ background:rgba(255,255,255,.2); }
.hb-crest{ position:absolute; right:28px; top:50%; transform:translateY(-50%); width:170px; height:170px; z-index:1; filter:drop-shadow(0 8px 24px rgba(0,0,0,.35)); }
.hb-icon{ position:absolute; right:-10px; bottom:-30px; z-index:1; color:rgba(255,255,255,.16); }
.hb-icon svg{ width:240px; height:240px; }
.hb-nav{ position:absolute; top:50%; transform:translateY(-50%); z-index:3; width:34px; height:34px; border-radius:50%; border:none; cursor:pointer;
  background:rgba(255,255,255,.16); color:#fff; display:flex; align-items:center; justify-content:center; opacity:0; transition:opacity .2s; }
.hb:hover .hb-nav, .hb-nav:focus-visible{ opacity:1; }
.hb-nav.prev{ left:10px; } .hb-nav.next{ right:10px; } .hb-nav.next svg{ transform:scaleX(-1); }
.hb-dots{ position:absolute; left:32px; bottom:16px; z-index:3; display:flex; gap:6px; }
.hb-dots button{ width:8px; height:8px; border-radius:999px; border:none; padding:0; cursor:pointer; background:rgba(255,255,255,.4); transition:width .25s, background .25s; }
.hb-dots button.on{ width:22px; background:#fff; }
@media (max-width:640px){
  .hb-content{ max-width:none; padding:22px 20px 42px; } .hb .hb-title{ font-size:21px; } .hb .hb-text{ font-size:14px; }
  .hb-crest{ width:84px; height:84px; top:18px; right:16px; transform:none; opacity:.9; } .hb-slide.tone-brand .hb-content{ padding-right:110px; }
  .hb-dots{ left:20px; } .hb-nav{ display:none; }
}
@media (prefers-reduced-motion: reduce){ .hb-track{ transition:none; } }
.hb a.hb-btn{ display:inline-flex; align-items:center; text-decoration:none; }
.hb .hb-nav svg{ width:18px; height:18px; }
@media (max-width:560px){
  .pub-header-inner{ gap:10px; }
  .pub-leader{ align-items:flex-start; gap:14px; padding:16px; }
  .pub-leader > img, .pub-leader-ph{ width:56px; height:56px; }
  .pub-leader-txt b{ font-size:17px; }
}

/* ===== Мозаика карточек (bento) на внешнем сайте — в духе баннеров и
   «Голосов встречи»: светлые карточки, тёмные/бордовые градиентные плитки,
   фото с текстом поверх. ===== */
.pub-bento{ display:grid; gap:16px; }
.pub-tile{ position:relative; background:var(--pub-card); border:1px solid var(--pub-line); border-radius:18px; padding:24px;
  overflow:hidden; color:var(--pub-ink); text-decoration:none; }
.pub-tile h3{ font-size:20px; line-height:1.3; margin:0 0 10px; }
.pub-tile p{ margin:0; font-size:15px; line-height:1.55; color:var(--pub-ink-2); }
.pub-tile.dark{ background:linear-gradient(120deg,#2A1A17 0%,#4A1E27 60%,#6E1B2E 100%); border-color:transparent; color:#fff; }
.pub-tile.wine{ background:linear-gradient(120deg,#8E1F32 0%,#B0283F 100%); border-color:transparent; color:#fff; }
.pub-tile.dark h3, .pub-tile.wine h3, .pub .pub-tile.dark h3, .pub .pub-tile.wine h3{ color:#fff; }
.pub-tile.dark p, .pub-tile.wine p{ color:rgba(255,255,255,.86); }
.pub-tile-eyebrow{ font-size:12px; font-weight:600; letter-spacing:.08em; text-transform:uppercase; opacity:.75; margin-bottom:10px; }
/* Фото-плитка: картинка на всю плитку, текст на градиенте снизу */
.pub-tile.photo{ padding:0; border:none; background:#17120F; min-height:220px; margin:0; }
.pub-tile.photo > img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; transition:transform .5s; }
.pub-tile.photo:hover > img{ transform:scale(1.03); }
.pub-tile-over{ position:absolute; inset:auto 0 0 0; z-index:1; padding:22px 24px; color:#fff;
  background:linear-gradient(180deg, rgba(15,10,8,0) 0%, rgba(15,10,8,.82) 55%); }
.pub-tile-over h2, .pub .pub-tile-over h2{ color:#fff; font-size:clamp(24px,2.6vw,32px); margin:0 0 10px; }
.pub-tile-over p{ color:rgba(255,255,255,.88); font-size:15px; line-height:1.55; margin:0 0 12px; max-width:60ch; }
.pub-tile-over span{ font-size:14px; font-weight:500; }
.pub-tile-link{ display:inline-flex; align-items:center; gap:6px; font-weight:600 !important; }
.pub-tile-link svg{ width:16px; height:16px; }
.pub-tile-chip{ display:inline-block; font-size:12px; font-weight:600; padding:4px 10px; border-radius:999px; margin-bottom:14px;
  background:var(--pub-chip-bg); color:var(--pub-wine-ink); }
.pub-tile.dark .pub-tile-chip{ background:rgba(255,255,255,.14); color:#fff; }

/* «Что такое Арыстан»: большое фото слева на 2 ряда + 6 фактов + тёмная полоса */
.pub-bento.lyceum{ grid-template-columns:repeat(4, 1fr); grid-auto-rows:minmax(120px, auto); }
.pub-bento.lyceum .big{ grid-column:span 2; grid-row:span 3; min-height:440px; }
.pub-tile.fact{ display:flex; flex-direction:column; justify-content:space-between; gap:12px; padding:20px; }
.pub-tile.fact .k{ font-size:12px; font-weight:600; letter-spacing:.06em; text-transform:uppercase; color:var(--pub-ink-2); }
.pub-tile.fact .v{ font-family:var(--pub-font-serif); font-size:19px; line-height:1.3; font-weight:600; }
.pub-tile.fact.wine .k{ color:rgba(255,255,255,.75); }
.pub-bento.lyceum .wide{ grid-column:span 2; display:flex; align-items:center; }

/* «Куда приводит» — тёмный баннер с гербом */
.pub-tile.geo{ padding:36px 40px; }
.pub-tile.geo .geo-grid{ display:grid; grid-template-columns:1fr 1fr; gap:32px; max-width:calc(100% - 200px); position:relative; z-index:1; }
.pub-tile.geo p + p{ margin-top:12px; }
.pub-tile.geo .geo-crest{ position:absolute; right:36px; top:50%; transform:translateY(-50%); width:150px; height:150px; filter:drop-shadow(0 8px 24px rgba(0,0,0,.35)); }

/* Кадры лицея — первое фото крупно */
.pub-bento.shots{ grid-template-columns:2fr 1fr 1fr; grid-auto-rows:220px; }
.pub-bento.shots .big{ grid-row:span 2; }
.pub-bento.shots figure:nth-child(4){ grid-column:span 2; }

/* Получаете / даёте */
.pub-bento.two{ grid-template-columns:1fr 1fr; }
.pub-tile.list{ padding:28px; }
.pub-tile.list ul{ list-style:none; margin:0 0 4px; padding:0; display:flex; flex-direction:column; gap:12px; }
.pub-tile.list li{ display:flex; gap:10px; align-items:flex-start; font-size:15px; line-height:1.5; }
.pub-tile.list li svg{ width:18px; height:18px; flex-shrink:0; margin-top:3px; color:var(--pub-wine-ink); }
.pub-tile.wine.list li svg{ color:#fff; }
.pub-tile.list .hb-btn{ margin-top:20px; display:inline-flex; align-items:center; text-decoration:none; }

/* Шаги */
.pub-bento.steps{ grid-template-columns:repeat(4, 1fr); }
.pub-tile.step .num{ font-family:var(--pub-font-serif); font-size:44px; line-height:1; font-weight:600; color:var(--pub-gold); margin-bottom:16px; }
.pub-tile.step h3{ font-size:18px; }
.pub-tile.step p{ font-size:14px; }

/* Проекты: первый — широкий тёмный */
.pub-bento.projects{ grid-template-columns:repeat(3, 1fr); }
.pub-bento.projects .wide{ grid-column:span 2; }
.pub-bento.projects .full{ grid-column:1 / -1; }
.pub-tile.proj{ transition:transform .2s, box-shadow .2s; }
.pub-tile.proj:hover{ transform:translateY(-2px); box-shadow:0 8px 24px rgba(23,18,15,.08); }

@media (max-width:900px){
  .pub-bento.lyceum{ grid-template-columns:1fr 1fr; }
  .pub-bento.lyceum .big{ grid-column:1 / -1; grid-row:auto; min-height:380px; }
  .pub-bento.lyceum .wide{ grid-column:1 / -1; }
  .pub-tile.geo .geo-grid{ grid-template-columns:1fr; max-width:none; gap:20px; }
  .pub-tile.geo .geo-crest{ position:static; transform:none; width:84px; height:84px; margin-top:20px; }
  .pub-bento.shots{ grid-template-columns:1fr 1fr; grid-auto-rows:180px; }
  .pub-bento.shots .big{ grid-column:1 / -1; grid-row:span 2; }
  .pub-bento.shots figure:nth-child(4){ grid-column:1 / -1; }
  .pub-bento.two, .pub-bento.projects{ grid-template-columns:1fr; }
  .pub-bento.projects .wide, .pub-bento.projects .full{ grid-column:auto; }
  .pub-bento.steps{ grid-template-columns:1fr 1fr; }
}
@media (max-width:560px){
  .pub-bento.steps{ grid-template-columns:1fr; }
  .pub-tile.geo{ padding:26px 22px; }
  .pub-tile{ padding:20px; }
}

/* ===== Первый экран главной: фото на всю карточку + плитки цифр ===== */
.pub-hero2{ padding:24px 0 0; }
.pub-hero-card{ position:relative; min-height:clamp(520px, 68vh, 640px); border-radius:24px; overflow:hidden; background:#17120F;
  display:flex; align-items:flex-end; }
.pub-hero-bg{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; object-position:60% 45%;
  animation:pubHeroZoom 18s ease-out both; }
@keyframes pubHeroZoom{ from{ transform:scale(1.08); } to{ transform:scale(1); } }
.pub-hero-card::before{ content:''; position:absolute; inset:0; z-index:1;
  background:linear-gradient(90deg, rgba(20,12,10,.94) 0%, rgba(20,12,10,.78) 38%, rgba(20,12,10,.25) 70%, rgba(20,12,10,.05) 100%),
             linear-gradient(0deg, rgba(20,12,10,.55) 0%, rgba(20,12,10,0) 40%); }
.pub-hero-content{ position:relative; z-index:2; padding:56px; max-width:660px; color:#fff; }
.pub-hero-eyebrow{ font-family:var(--pub-font-mono); font-size:12px; letter-spacing:.12em; text-transform:uppercase; color:var(--pub-gold); margin-bottom:16px; }
.pub .pub-hero-content h1{ color:#fff; font-size:clamp(38px, 5vw, 64px); line-height:1.05; margin:0 0 18px; letter-spacing:-.01em; }
.pub-hero-lead{ font-size:18px; line-height:1.55; color:rgba(255,255,255,.86); margin:0 0 28px; max-width:52ch; }
.pub-hero-content .hb-btn{ height:48px; padding:0 22px; font-size:15px; display:inline-flex; align-items:center; text-decoration:none; }
.pub-hero-content .pub-hero-actions{ display:flex; flex-wrap:wrap; gap:12px; }
.pub-hero-badge{ position:absolute; z-index:2; right:28px; top:28px; display:flex; align-items:center; gap:12px; padding:10px 16px 10px 10px;
  border-radius:999px; background:rgba(255,255,255,.12); border:1px solid rgba(255,255,255,.22); color:#fff;
  backdrop-filter:blur(14px); -webkit-backdrop-filter:blur(14px); }
.pub-hero-badge img{ width:44px; height:44px; }
.pub-hero-badge span{ display:flex; flex-direction:column; font-size:12px; line-height:1.35; color:rgba(255,255,255,.8); }
.pub-hero-badge b{ font-size:15px; color:#fff; }
/* Плитки цифр под первым экраном */
.pub-bento.stats{ grid-template-columns:repeat(4, 1fr); margin-top:16px; }
.pub-tile.stat{ padding:22px 24px; }
.pub-tile.stat .n{ font-family:var(--pub-font-serif); font-size:clamp(34px, 3.4vw, 44px); line-height:1; font-weight:600; color:var(--pub-wine-ink); margin-bottom:10px; }
.pub-tile.stat.wine .n, .pub-tile.stat.dark .n{ color:#fff; }
.pub-tile.stat .l{ font-size:14px; line-height:1.45; color:var(--pub-ink-2); }
.pub-tile.stat.wine .l, .pub-tile.stat.dark .l{ color:rgba(255,255,255,.82); }
@media (max-width:900px){
  .pub-hero-card{ min-height:560px; }
  .pub-hero-card::before{ background:linear-gradient(0deg, rgba(20,12,10,.95) 0%, rgba(20,12,10,.75) 45%, rgba(20,12,10,.15) 80%); }
  .pub-hero-content{ padding:28px 24px; }
  .pub-hero-badge{ right:16px; top:16px; }
  .pub-bento.stats{ grid-template-columns:1fr 1fr; }
}
@media (max-width:560px){
  .pub-hero2{ padding-top:12px; }
  .pub-hero-card{ border-radius:18px; }
  .pub-hero-lead{ font-size:16px; }
  .pub-hero-badge span{ display:none; } .pub-hero-badge{ padding:6px; } .pub-hero-badge img{ width:36px; height:36px; }
}
@media (prefers-reduced-motion: reduce){ .pub-hero-bg{ animation:none; } }
.pub-bento.shots{ grid-auto-rows:240px; }
.pub-bento.shots figure:nth-child(1) > img{ object-position:50% 30%; }
.pub-bento.shots figure:nth-child(3) > img{ object-position:30% 25%; }
.pub-bento.shots figure:nth-child(4) > img{ object-position:50% 45%; }
/* «Кто ведёт Ассоциацию» на главной */
.pub-tile.council{ display:flex; align-items:center; justify-content:space-between; gap:32px; padding:36px 40px; }
.pub-tile.council h3{ font-size:clamp(20px,2.2vw,26px); margin-bottom:10px; }
.pub-tile.council p{ margin-bottom:20px; max-width:56ch; }
.pub-tile.council .hb-btn{ display:inline-flex; align-items:center; text-decoration:none; }
.council-people{ display:flex; align-items:center; flex-shrink:0; }
.council-people > img, .council-people .ph{ width:88px; height:88px; border-radius:50%; object-fit:cover; border:3px solid rgba(255,255,255,.85);
  margin-left:-18px; background:#3a2622; display:flex; align-items:center; justify-content:center; }
.council-people .ph img{ width:50%; }
.council-people > img.crest{ border:none; background:none; width:96px; height:96px; object-fit:contain; margin-left:-10px; filter:drop-shadow(0 6px 18px rgba(0,0,0,.35)); }
@media (max-width:760px){ .pub-tile.council{ flex-direction:column-reverse; align-items:flex-start; padding:26px 22px; } .council-people > img:first-child{ margin-left:0; } }
/* Главные тезисы — без автопереносов по слогам */
.pub h1, .pub h2, .pub .hb-title, .pub-hero-content h1{ hyphens:manual; -webkit-hyphens:manual; }
.pub .pub-hero-content h1{ text-wrap:balance; }
/* «Итоги встречи» — отдельный крупный блок с фото */
.pub-meet{ position:relative; display:block; min-height:clamp(420px, 52vw, 560px); border-radius:24px; overflow:hidden; text-decoration:none; color:#fff; background:#17120F; }
.pub-meet > img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; object-position:50% 55%; transition:transform .6s; }
.pub-meet:hover > img{ transform:scale(1.02); }
.pub-meet::before{ content:''; position:absolute; inset:0; z-index:1;
  background:linear-gradient(0deg, rgba(15,10,8,.92) 0%, rgba(15,10,8,.55) 38%, rgba(15,10,8,0) 70%); }
.pub-meet-over{ position:absolute; z-index:2; left:0; right:0; bottom:0; padding:40px 48px; max-width:760px; }
.pub .pub-meet-over h2{ color:#fff; font-size:clamp(28px, 3.6vw, 44px); line-height:1.1; margin:0 0 12px; text-wrap:balance; }
.pub-meet-over p{ color:rgba(255,255,255,.86); font-size:17px; line-height:1.55; margin:0 0 22px; max-width:60ch; }
.pub-meet-over .hb-btn{ display:inline-flex; align-items:center; height:46px; padding:0 22px; font-size:15px; }
@media (max-width:640px){ .pub-meet{ min-height:460px; } .pub-meet-over{ padding:24px 20px; } .pub-meet-over p{ font-size:15px; } }
/* Крупная карусель на главной внешнего сайта */
.hb.big{ border-radius:24px; }
.hb.big .hb-slide{ min-height:clamp(440px, 46vw, 560px); align-items:flex-end; }
.hb.big .hb-content{ padding:40px 48px 64px; max-width:720px; }
.hb.big .hb-title{ font-size:clamp(28px, 3.6vw, 46px); line-height:1.1; margin-bottom:12px; text-wrap:balance; }
.hb.big .hb-text{ font-size:17px; }
.hb.big .hb-btn{ height:46px; padding:0 22px; font-size:15px; }
.hb.big .hb-slide.tone-photo::before{ background:linear-gradient(0deg, rgba(15,10,8,.92) 0%, rgba(15,10,8,.55) 40%, rgba(15,10,8,0) 72%); }
.hb.big .hb-bg{ object-position:50% 55%; }
.hb.big .hb-crest{ width:clamp(170px, 20vw, 260px); height:auto; right:56px; }
.hb.big .hb-icon svg{ width:clamp(240px, 28vw, 360px); height:auto; }
.hb.big .hb-dots{ left:48px; bottom:28px; }
@media (max-width:640px){ .hb.big .hb-slide{ min-height:480px; } .hb.big .hb-content{ padding:24px 20px 52px; }
  .hb.big .hb-crest{ width:96px; right:16px; top:20px; transform:none; } .hb.big .hb-dots{ left:20px; bottom:20px; } }

/* ===== Внутренние страницы внешнего сайта в стиле главной ===== */
/* Заголовок-карточка поменьше и фирменный вариант без фото */
.pub-hero-card.sm{ min-height:clamp(340px, 40vw, 440px); }
.pub-hero-card.sm .pub-hero-content{ padding:44px 48px; }
.pub .pub-hero-card.sm h1{ font-size:clamp(32px, 4vw, 52px); }
.pub-hero-card.brand{ background:linear-gradient(120deg,#2A1A17 0%,#4A1E27 60%,#6E1B2E 100%); min-height:clamp(280px, 30vw, 340px); }
.pub-hero-card.brand::before{ display:none; }
.pub-hero-crest{ position:absolute; z-index:1; right:56px; top:50%; transform:translateY(-50%); width:clamp(120px, 16vw, 220px); height:auto;
  filter:drop-shadow(0 10px 30px rgba(0,0,0,.4)); }
@media (max-width:900px){ .pub-hero-card.sm .pub-hero-content{ padding:28px 24px; } .pub-hero-crest{ top:24px; right:20px; transform:none; width:88px; }
  .pub-hero-card.brand{ align-items:flex-end; min-height:320px; } }

/* Полоса цифр → плитки */
.pub-stats-bar{ display:grid !important; grid-template-columns:repeat(auto-fit, minmax(200px, 1fr)); gap:16px; border:none !important; background:none !important; padding:0 !important; }
.pub-stats-bar .s{ background:var(--pub-card); border:1px solid var(--pub-line) !important; border-radius:18px; padding:22px 24px !important; text-align:left !important; }
.pub-stats-bar .s:first-child{ background:linear-gradient(120deg,#8E1F32 0%,#B0283F 100%); border-color:transparent !important; }
.pub-stats-bar .s:first-child .n, .pub-stats-bar .s:first-child .l{ color:#fff !important; }
.pub-stats-bar .n{ font-family:var(--pub-font-serif) !important; font-size:clamp(32px,3.2vw,42px) !important; line-height:1 !important; margin-bottom:8px; }

/* Сноска → тёмная карточка */
.pub-callout{ background:linear-gradient(120deg,#2A1A17 0%,#4A1E27 60%,#6E1B2E 100%) !important; border:none !important; border-radius:18px; padding:28px !important; color:#fff; }
.pub-callout p, .pub-callout .pub-small{ color:rgba(255,255,255,.86) !important; }
.pub-callout .pub-label{ color:var(--pub-gold) !important; }
.pub-callout a{ color:#fff !important; }
.pub-callout.ok{ background:linear-gradient(120deg,#8E1F32 0%,#B0283F 100%) !important; }

/* Факты → плитки по две */
.pub-fact-list{ display:grid !important; grid-template-columns:1fr 1fr; gap:12px; align-content:start; }
.pub-fact-row{ height:auto !important; flex-direction:column; justify-content:space-between !important; align-items:flex-start !important; gap:8px;
  background:var(--pub-card); border:1px solid var(--pub-line) !important; border-radius:16px; padding:16px 18px; }
.pub-fact-row:last-child{ border-bottom:1px solid var(--pub-line) !important; }
.pub-fact-row .k{ font-size:12px !important; font-weight:600; letter-spacing:.06em; text-transform:uppercase; }
.pub-fact-row .v{ font-family:var(--pub-font-serif); font-size:18px !important; text-align:left !important; line-height:1.3; }
@media (max-width:560px){ .pub-fact-list{ grid-template-columns:1fr; } }

/* Таймлайн → плитки с крупным годом */
.pub-timeline{ display:grid !important; grid-template-columns:repeat(auto-fill, minmax(220px, 1fr)); gap:12px; }
.pub-two-col .pub-timeline{ grid-template-columns:1fr 1fr; }
.pub-tl-row{ display:flex !important; flex-direction:column; gap:10px; padding:18px 20px !important; background:var(--pub-card);
  border:1px solid var(--pub-line) !important; border-radius:16px; }
.pub-tl-row .y{ font-family:var(--pub-font-serif) !important; font-size:30px !important; line-height:1; color:var(--pub-gold) !important; }
.pub-tl-row .t{ font-size:15px !important; line-height:1.5 !important; }
@media (max-width:560px){ .pub-two-col .pub-timeline{ grid-template-columns:1fr; } }

/* Карточки направлений и проектов */
.pub-card{ border-radius:18px; transition:transform .2s, box-shadow .2s; }
.pub-grid-cards .pub-card:first-child{ background:linear-gradient(120deg,#2A1A17 0%,#4A1E27 60%,#6E1B2E 100%); border-color:transparent; }
.pub-grid-cards .pub-card:first-child h3{ color:#fff; } .pub-grid-cards .pub-card:first-child .pub-small{ color:rgba(255,255,255,.85); }
.pub-proj-list{ display:grid !important; grid-template-columns:1fr 1fr; gap:16px; }
.pub-proj-row{ max-width:none !important; padding:28px !important; border:1px solid var(--pub-line) !important; border-radius:18px; background:var(--pub-card); }
.pub-proj-row:first-child{ grid-column:1 / -1; background:linear-gradient(120deg,#2A1A17 0%,#4A1E27 60%,#6E1B2E 100%); border-color:transparent !important; color:#fff; }
.pub-proj-row:first-child h2, .pub-proj-row:first-child .lead{ color:#fff; } .pub-proj-row:first-child p{ color:rgba(255,255,255,.85) !important; }
@media (max-width:760px){ .pub-proj-list{ grid-template-columns:1fr; } }

/* Выпуски → карточки-строки */
.pub-years{ gap:10px; }
.pub-year-row{ border:1px solid var(--pub-line) !important; border-radius:16px; padding:14px 18px !important; background:var(--pub-card); }
.pub-year-row:last-child{ border-bottom:1px solid var(--pub-line) !important; }
.pub-year-row .yy{ font-family:var(--pub-font-serif) !important; font-size:24px !important; color:var(--pub-gold) !important; }

/* Нижний призыв → фирменный баннер внутри контейнера */
.pub-cta-band{ background:none !important; padding:16px 0 72px !important; text-align:left !important; }
.pub-cta-band > .container{ position:relative; overflow:hidden; border-radius:24px; padding:48px 56px;
  background:linear-gradient(120deg,#2A1A17 0%,#4A1E27 60%,#6E1B2E 100%); }
.pub-cta-band > .container::after{ content:''; position:absolute; right:48px; top:50%; transform:translateY(-50%); width:180px; height:180px;
  background:url(/logo-round.png) center/contain no-repeat; filter:drop-shadow(0 10px 30px rgba(0,0,0,.4)); }
.pub-cta-band h2{ font-size:clamp(26px,3vw,38px); max-width:calc(100% - 220px); }
.pub-cta-band p{ margin:0 0 24px !important; max-width:52ch; }
.pub-cta-band .pub-btn.on-wine{ background:#fff; color:#6E1B2E; border-color:#fff; }
@media (max-width:760px){ .pub-cta-band > .container{ padding:28px 22px 32px; margin:0 16px; width:auto; }
  .pub-cta-band > .container::after{ width:72px; height:72px; top:20px; right:20px; transform:none; } .pub-cta-band h2{ max-width:calc(100% - 80px); } }
/* Слайды с фото под фирменным градиентом (крупная карусель) */
.hb-slide.has-bg::before{ content:''; position:absolute; inset:0; z-index:1; }
.hb-slide.tone-brand.has-bg::before{ background:linear-gradient(90deg, rgba(34,20,18,.96) 0%, rgba(58,24,31,.86) 38%, rgba(110,27,46,.35) 75%, rgba(110,27,46,.15) 100%),
  linear-gradient(0deg, rgba(34,20,18,.6) 0%, rgba(34,20,18,0) 45%); }
.hb-slide.tone-wine.has-bg::before{ background:linear-gradient(90deg, rgba(120,22,40,.97) 0%, rgba(142,31,50,.86) 38%, rgba(176,40,63,.35) 75%, rgba(176,40,63,.12) 100%),
  linear-gradient(0deg, rgba(110,20,36,.55) 0%, rgba(110,20,36,0) 45%); }
.hb.big .hb-slide.has-bg .hb-bg{ object-position:60% 40%; }
.hb .hb-slide .hb-bg{ transition:transform 7s ease-out; transform:scale(1.06); }
.hb .hb-slide:not([aria-hidden]) .hb-bg{ transform:scale(1); }
@media (max-width:640px){
  .hb-slide.tone-brand.has-bg::before{ background:linear-gradient(0deg, rgba(34,20,18,.96) 0%, rgba(58,24,31,.75) 50%, rgba(110,27,46,.2) 100%); }
  .hb-slide.tone-wine.has-bg::before{ background:linear-gradient(0deg, rgba(120,22,40,.97) 0%, rgba(142,31,50,.75) 50%, rgba(176,40,63,.2) 100%); }
}
/* Карусель на главной — с воздухом сверху и снизу, без линии-разделителя под ней */
.pub-section:has(.hb.big){ padding:48px 0 72px !important; border-bottom:none; }
.pub-hero2 + .pub-section{ border-top:none; }
.hb.big{ box-shadow:0 18px 48px rgba(23,18,15,.18); }
@media (max-width:640px){ .pub-section:has(.hb.big){ padding:32px 0 48px !important; } }
/* «Поддержать» в крупной карусели — без фото: бордовый градиент, блики и крупная линейная иконка */
.hb-slide.tone-wine.has-bg .hb-bg{ display:none; }
.hb-slide.tone-wine.has-bg{ background:
  radial-gradient(circle at 78% 30%, rgba(255,255,255,.16) 0, rgba(255,255,255,0) 32%),
  radial-gradient(circle at 92% 88%, rgba(0,0,0,.22) 0, rgba(0,0,0,0) 40%),
  linear-gradient(120deg,#7A1A2C 0%,#8E1F32 45%,#B0283F 100%); }
.hb-slide.tone-wine.has-bg::before{ background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='none'%3E%3Cpath d='M2.5 11.5h2.6l3.2-2.3c.7-.5 1.6-.5 2.2.1l.3.3c.4.4.4 1 0 1.4l-1.6 1.4h3.4l3-2.1c.6-.4 1.4-.3 1.8.3.4.6.3 1.3-.2 1.7l-4.2 3.4c-.6.5-1.3.7-2 .7H5.1H2.5' stroke='white' stroke-opacity='.22' stroke-width='1.1' stroke-linecap='round' stroke-linejoin='round'/%3E%3Cpath d='M12.6 3.3c.5-.6 1.5-.6 2 0 .5-.6 1.5-.6 2 0 .6.6.5 1.5-.1 2.1L14.6 7l-1.9-1.6c-.6-.6-.7-1.5-.1-2.1z' stroke='white' stroke-opacity='.3' stroke-width='.9' stroke-linejoin='round'/%3E%3C/svg%3E") no-repeat right 6% center / clamp(220px, 30vw, 420px) !important; }
.hb.big .hb-slide.tone-wine.has-bg{ align-items:center; }
.hb.big .hb-slide.tone-wine.has-bg .hb-content{ padding-top:56px; padding-bottom:72px; }
@media (max-width:640px){ .hb-slide.tone-wine.has-bg::before{ background-position:right -30px top 20px !important; background-size:200px !important; } .hb.big .hb-slide.tone-wine.has-bg{ align-items:flex-end; } }
