
/* ---- design/tokens/fonts.css ---- */
/* Локальные шрифты (без внешних CDN): PT Serif — заголовки, Golos Text — текст и интерфейс, IBM Plex Mono — служебные метки.
   Подмножества cyrillic + latin, woff2. На сайте Joomla: media/templates/site/<шаблон>/fonts/ */
@font-face { font-family: "Golos Text"; font-style: normal; font-weight: 400; font-display: swap; src: url("fonts/GolosText-400-cyrillic.woff2") format("woff2"); unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; }
@font-face { font-family: "Golos Text"; font-style: normal; font-weight: 400; font-display: swap; src: url("fonts/GolosText-400-latin.woff2") format("woff2"); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: "Golos Text"; font-style: normal; font-weight: 500; font-display: swap; src: url("fonts/GolosText-500-cyrillic.woff2") format("woff2"); unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; }
@font-face { font-family: "Golos Text"; font-style: normal; font-weight: 500; font-display: swap; src: url("fonts/GolosText-500-latin.woff2") format("woff2"); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: "Golos Text"; font-style: normal; font-weight: 600; font-display: swap; src: url("fonts/GolosText-600-cyrillic.woff2") format("woff2"); unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; }
@font-face { font-family: "Golos Text"; font-style: normal; font-weight: 600; font-display: swap; src: url("fonts/GolosText-600-latin.woff2") format("woff2"); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: "Golos Text"; font-style: normal; font-weight: 700; font-display: swap; src: url("fonts/GolosText-700-cyrillic.woff2") format("woff2"); unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; }
@font-face { font-family: "Golos Text"; font-style: normal; font-weight: 700; font-display: swap; src: url("fonts/GolosText-700-latin.woff2") format("woff2"); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: "IBM Plex Mono"; font-style: normal; font-weight: 400; font-display: swap; src: url("fonts/IBMPlexMono-400-cyrillic.woff2") format("woff2"); unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; }
@font-face { font-family: "IBM Plex Mono"; font-style: normal; font-weight: 400; font-display: swap; src: url("fonts/IBMPlexMono-400-latin.woff2") format("woff2"); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: "IBM Plex Mono"; font-style: normal; font-weight: 500; font-display: swap; src: url("fonts/IBMPlexMono-500-cyrillic.woff2") format("woff2"); unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; }
@font-face { font-family: "IBM Plex Mono"; font-style: normal; font-weight: 500; font-display: swap; src: url("fonts/IBMPlexMono-500-latin.woff2") format("woff2"); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: "PT Serif"; font-style: normal; font-weight: 400; font-display: swap; src: url("fonts/PTSerif-400-cyrillic.woff2") format("woff2"); unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; }
@font-face { font-family: "PT Serif"; font-style: normal; font-weight: 400; font-display: swap; src: url("fonts/PTSerif-400-latin.woff2") format("woff2"); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: "PT Serif"; font-style: normal; font-weight: 700; font-display: swap; src: url("fonts/PTSerif-700-cyrillic.woff2") format("woff2"); unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; }
@font-face { font-family: "PT Serif"; font-style: normal; font-weight: 700; font-display: swap; src: url("fonts/PTSerif-700-latin.woff2") format("woff2"); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }

/* ---- design/tokens/colors.css ---- */
:root {
  /* Navy — фирменная основа */
  --kk-navy-900: #10243A;  /* топбар, футер, основной текст */
  --kk-navy-800: #1B3550;  /* плашки соцсетей на тёмном */
  --kk-navy-750: #23415F;  /* разделители на тёмном */
  --kk-navy-700: #0F3A5C;  /* активный пункт меню */
  --kk-blue-600: #12456E;  /* бренд: меню, анонсы, ссылки */
  --kk-blue-500: #17527F;  /* декоративный круг в анонсе */
  --kk-blue-400: #2A5D87;  /* обводки на тёмном */
  --kk-blue-on-dark: #0E3A5F;

  /* Teal — вторичный акцент (рубрики, шаги, лид) */
  --kk-teal-600: #0F6E85;
  --kk-teal-400: #4FC2CE;
  --kk-teal-50:  #E4F3F5;

  /* Coral — единственный яркий акцент: CTA, «Срочно», PDF */
  --kk-coral-700: #C4411F;
  --kk-coral-600: #DE4F2B;
  --kk-coral-900: #8E3316;
  --kk-coral-200: #F6D3C7;
  --kk-coral-100: #FFD7C9;
  --kk-coral-50:  #FFF6F3;

  /* Нейтральные (холодные) */
  --kk-white:   #FFFFFF;
  --kk-ice-25:  #F7FAFB;
  --kk-ice-50:  #F4F8FA;
  --kk-ice-100: #EAF2F6;
  --kk-ice-150: #E7EEF2;
  --kk-ice-200: #DCE6EC;
  --kk-line:      #DDE6EC;
  --kk-line-soft: #EDF2F5;
  --kk-line-strong: #D5E0E8;
  --kk-ink-900: #10243A;
  --kk-ink-800: #1C3244;
  --kk-ink-600: #3D5465;
  --kk-ink-500: #5A7080;
  --kk-ink-400: #7B8FA0;
  --kk-ink-300: #9AACB9;
  --kk-ink-200: #C6D3DC;

  /* Текст на тёмном */
  --kk-on-dark-1: #FFFFFF;
  --kk-on-dark-2: #D5E5F0;
  --kk-on-dark-3: #CFE0EA;  /* пункты меню */
  --kk-on-dark-4: #B7C8D5;  /* футер */
  --kk-on-dark-5: #A9C5DA;  /* надписи-метки */
  --kk-on-dark-6: #9FB4C4;  /* топбар */
  --kk-on-dark-7: #7B93A8;  /* копирайт */

  /* Статусы (только системные уведомления) */
  --kk-green-700: #1F5A33;
  --kk-green-600: #2E8A4E;
  --kk-green-200: #BFE3CB;
  --kk-green-50:  #EEF8F1;
  --kk-amber-800: #6B4E00;
  --kk-amber-600: #B7860B;
  --kk-amber-200: #F0DCA0;
  --kk-amber-50:  #FFF8E6;
  --kk-highlight: #FFF1B8;

  /* ===== Семантические алиасы ===== */
  --surface-page: var(--kk-white);
  --surface-subtle: var(--kk-ice-50);
  --surface-muted: var(--kk-ice-25);
  --surface-card: var(--kk-white);
  --surface-brand: var(--kk-blue-600);
  --surface-dark: var(--kk-navy-900);
  --surface-overlay: rgba(16, 36, 58, .55);

  --text-heading: var(--kk-ink-900);
  --text-body: var(--kk-ink-900);
  --text-prose: var(--kk-ink-800);
  --text-secondary: var(--kk-ink-600);
  --text-muted: var(--kk-ink-500);
  --text-caption: var(--kk-ink-400);

  --brand-primary: var(--kk-blue-600);
  --brand-secondary: var(--kk-teal-600);
  --action-primary: var(--kk-coral-600);
  --action-primary-hover: var(--kk-coral-700);
  --link: var(--kk-blue-600);
  --link-hover: var(--kk-teal-600);
  --focus-ring: var(--kk-teal-400);

  --border-default: var(--kk-line);
  --border-soft: var(--kk-line-soft);
  --border-strong: var(--kk-line-strong);
  --border-heading: var(--kk-ink-900);

  --status-urgent: var(--kk-coral-600);
  --status-urgent-bg: var(--kk-coral-50);
  --status-urgent-border: var(--kk-coral-200);
  --status-urgent-text: var(--kk-coral-900);
  --file-pdf: var(--kk-coral-600);
}

/* ---- design/tokens/typography.css ---- */
:root {
  --font-display: "PT Serif", Georgia, "Times New Roman", serif;
  --font-sans: "Golos Text", "Segoe UI", system-ui, -apple-system, sans-serif;
  --font-mono: "IBM Plex Mono", ui-monospace, Consolas, monospace;

  /* Десктоп */
  --fs-display: 44px;   /* H1 статьи */
  --fs-h1: 42px;        /* H1 мероприятия */
  --fs-hero: 34px;      /* заголовок главного анонса */
  --fs-h2-prose: 29px;  /* H2 в тексте статьи */
  --fs-h2: 27px;        /* заголовок секции */
  --fs-h3: 24px;        /* карточка «Срочно», CTA */
  --fs-h4: 22px;
  --fs-lead: 21px;
  --fs-prose: 19px;     /* основной текст статьи */
  --fs-card-title: 18px;
  --fs-card-title-sm: 17px;
  --fs-body: 16px;
  --fs-ui: 15px;        /* меню, кнопки */
  --fs-small: 14.5px;
  --fs-meta: 13.5px;
  --fs-caption: 13px;
  --fs-overline: 12px;

  --lh-tight: 1.15;
  --lh-heading: 1.25;
  --lh-ui: 1.5;
  --lh-text: 1.6;
  --lh-prose: 1.72;

  --fw-regular: 400;
  --fw-medium: 500;
  --fw-semibold: 600;
  --fw-bold: 700;

  --tracking-display: -.015em;
  --tracking-overline: .1em;
  --tracking-badge: .04em;

  --measure-prose: 780px; /* ≈ 75 знаков */
}
@media (max-width: 768px) {
  :root {
    --fs-display: 28px;
    --fs-h1: 28px;
    --fs-hero: 22px;
    --fs-h2-prose: 23px;
    --fs-h2: 21px;
    --fs-h3: 19px;
    --fs-lead: 16.5px;
    --fs-prose: 17.5px;
    --fs-card-title: 17px;
  }
}

/* ---- design/tokens/spacing.css ---- */
:root {
  --sp-1: 4px;
  --sp-2: 8px;
  --sp-3: 12px;
  --sp-4: 16px;
  --sp-5: 20px;
  --sp-6: 24px;
  --sp-7: 28px;
  --sp-8: 32px;
  --sp-10: 40px;
  --sp-11: 44px;
  --sp-12: 48px;
  --sp-14: 56px;

  --container-max: 1440px;
  --gutter: 56px;
  --grid-gap: 20px;
  --sidebar-w: 384px;

  --r-xs: 3px;  /* иконка PDF мелкая */
  --r-sm: 4px;  /* бейджи */
  --r-md: 8px;  /* кнопки, поля, плашки дат */
  --r-lg: 10px; /* карточки */
  --r-xl: 12px; /* анонсы, сайдбокс, модалка */
  --r-full: 999px;

  --shadow-dropdown: 0 14px 34px rgba(16, 36, 58, .18);
  --shadow-modal: 0 30px 70px rgba(0, 0, 0, .3);
  --shadow-page: 0 18px 50px rgba(16, 36, 58, .16);

  --h-control: 42px;
  --h-control-lg: 50px;
  --h-nav: 52px;
  --h-topbar: 40px;

  --dur-fast: .15s;
  --ease: cubic-bezier(.2, .6, .2, 1);

  --bp-tablet: 960px;
  --bp-mobile: 768px;
}
@media (max-width: 768px) {
  :root { --gutter: 18px; --grid-gap: 16px; }
}

/* ---- design/components/base.css ---- */
html { -webkit-text-size-adjust: 100%; }
body { margin: 0; background: var(--surface-page); color: var(--text-body); font-family: var(--font-sans); font-size: var(--fs-body); line-height: var(--lh-ui); -webkit-font-smoothing: antialiased; }
*, *::before, *::after { box-sizing: border-box; }
a { color: var(--link); text-decoration: none; }
a:hover { color: var(--link-hover); text-decoration: underline; }
img { max-width: 100%; height: auto; display: block; }
:focus-visible { outline: 3px solid var(--focus-ring); outline-offset: 2px; }

/* ---- design/components/kkamld.css ---- */
/* ===== ККАМЛД — библиотека компонентов (префикс kk-) =====
   Подключается в шаблон Joomla как css/user.css или css/template.css. */

.kk-container { max-width: var(--container-max); margin: 0 auto; padding: 0 var(--gutter); }
.kk-section { padding-top: var(--sp-11); }
.kk-grid-3 { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--grid-gap); }
.kk-grid-5 { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: var(--sp-4); }
.kk-layout-sidebar { display: grid; grid-template-columns: minmax(0, 1fr) var(--sidebar-w); gap: var(--sp-12); align-items: start; }
.kk-sticky { position: sticky; top: var(--sp-6); display: flex; flex-direction: column; gap: var(--sp-5); }
.kk-visually-hidden { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }

/* ---------- Кнопки ---------- */
.kk-btn { display: inline-flex; align-items: center; justify-content: center; gap: var(--sp-2); height: var(--h-control); padding: 0 20px; border: 1px solid transparent; border-radius: var(--r-md); font: var(--fw-semibold) var(--fs-ui)/1 var(--font-sans); cursor: pointer; text-decoration: none; white-space: nowrap; transition: background var(--dur-fast) var(--ease), border-color var(--dur-fast) var(--ease), color var(--dur-fast) var(--ease); }
.kk-btn:hover { text-decoration: none; }
.kk-btn--primary { background: var(--action-primary); color: #fff; }
.kk-btn--primary:hover { background: var(--action-primary-hover); color: #fff; }
.kk-btn--secondary { background: #fff; border-color: var(--brand-primary); color: var(--brand-primary); }
.kk-btn--secondary:hover { background: var(--kk-ice-100); color: var(--brand-primary); }
.kk-btn--brand { background: var(--brand-primary); color: #fff; }
.kk-btn--brand:hover { background: var(--kk-navy-700); color: #fff; }
.kk-btn--ghost { background: #fff; border-color: var(--border-strong); color: var(--text-muted); }
.kk-btn--ghost:hover { border-color: var(--brand-primary); color: var(--brand-primary); }
.kk-btn--icon { width: var(--h-control); padding: 0; }
.kk-btn--lg { height: var(--h-control-lg); padding: 0 26px; font-size: var(--fs-body); }
.kk-btn--block { display: flex; width: 100%; }
.kk-btn[disabled], .kk-btn.is-disabled { opacity: .45; pointer-events: none; }
.kk-link-on-dark { color: #fff; font-size: var(--fs-ui); border-bottom: 1px solid rgba(255,255,255,.4); }
.kk-link-on-dark:hover { color: #fff; text-decoration: none; border-bottom-color: #fff; }
.kk-more { font-size: var(--fs-ui); font-weight: var(--fw-semibold); }

/* ---------- Бейджи и метки ---------- */
.kk-badge { display: inline-flex; align-items: center; align-self: flex-start; font: var(--fw-semibold) var(--fs-overline)/1 var(--font-sans); letter-spacing: var(--tracking-badge); text-transform: uppercase; color: var(--kk-teal-600); background: var(--kk-teal-50); padding: 5px 10px; border-radius: var(--r-sm); }
.kk-badge--urgent { font-family: var(--font-mono); font-weight: var(--fw-medium); letter-spacing: var(--tracking-overline); color: #fff; background: var(--action-primary); }
.kk-overline { font: var(--fw-medium) var(--fs-overline)/1.2 var(--font-mono); letter-spacing: var(--tracking-overline); text-transform: uppercase; color: var(--kk-teal-600); }
.kk-overline--urgent { color: var(--status-urgent); }
.kk-overline--on-dark { color: var(--kk-on-dark-5); }
.kk-deadline { display: inline-block; font-size: var(--fs-small); padding: 11px 14px; border-radius: var(--r-md); background: var(--status-urgent-bg); border: 1px solid var(--status-urgent-border); color: var(--status-urgent-text); }
.kk-deadline--on-dark { background: var(--kk-blue-on-dark); border-color: var(--kk-blue-400); color: var(--kk-coral-100); padding: 9px 14px; border-radius: 6px; }

/* ---------- PDF и документы ---------- */
.kk-pdf-icon { flex-shrink: 0; display: inline-flex; align-items: center; justify-content: center; width: 34px; height: 42px; border-radius: var(--r-sm); background: var(--file-pdf); color: #fff; font: var(--fw-bold) 11px/1 var(--font-sans); letter-spacing: .02em; }
.kk-pdf-icon::before { content: "PDF"; }
.kk-pdf-icon--sm { width: 20px; height: 24px; border-radius: var(--r-xs); font-size: 8px; }
.kk-pdf-icon--xs { width: 18px; height: 22px; border-radius: var(--r-xs); font-size: 7px; }
.kk-doc-inline { display: inline-flex; align-items: center; gap: 8px; font-size: var(--fs-caption); color: var(--text-secondary); }
.kk-doclist { border: 1px solid var(--border-default); border-radius: var(--r-xl); overflow: hidden; }
.kk-doclist__head { padding: 16px 22px; background: var(--surface-subtle); border-bottom: 1px solid var(--border-default); font-size: var(--fs-ui); font-weight: var(--fw-semibold); }
.kk-doc { display: flex; align-items: center; gap: var(--sp-4); padding: 16px 22px; border-bottom: 1px solid var(--border-soft); color: inherit; }
.kk-doc:last-child { border-bottom: 0; }
.kk-doc:hover { background: var(--surface-muted); text-decoration: none; }
.kk-doc__body { flex: 1; min-width: 0; }
.kk-doc__title { font-size: 16.5px; font-weight: var(--fw-semibold); color: var(--link); }
.kk-doc__meta { font-size: var(--fs-meta); color: var(--text-muted); margin-top: 3px; }
.kk-doc__action { font-size: var(--fs-small); font-weight: var(--fw-semibold); color: var(--link); white-space: nowrap; }

/* ---------- Соцсети ---------- */
.kk-social-list { display: flex; gap: 10px; }
.kk-social { display: inline-flex; align-items: center; justify-content: center; width: 36px; height: 36px; border-radius: var(--r-md); background: var(--kk-navy-800); color: var(--kk-on-dark-3); font: var(--fw-semibold) 12px/1 var(--font-sans); }
.kk-social:hover { background: var(--kk-blue-600); color: #fff; text-decoration: none; }
.kk-social--sm { width: 26px; height: 26px; border-radius: 5px; font-size: 11px; }
.kk-social--light { background: var(--kk-ice-100); color: var(--brand-primary); width: 34px; height: 34px; border-radius: 7px; }
.kk-social--light:hover { background: var(--brand-primary); color: #fff; }

/* ---------- Топбар / шапка / бренд ---------- */
.kk-topbar { background: var(--surface-dark); color: var(--kk-on-dark-6); font-size: var(--fs-caption); }
.kk-topbar__inner { min-height: var(--h-topbar); display: flex; align-items: center; justify-content: space-between; gap: var(--sp-5); }
.kk-topbar__contacts { display: flex; gap: 22px; flex-wrap: wrap; }
.kk-topbar a { color: inherit; }
.kk-header { border-bottom: 1px solid var(--kk-ice-150); }
.kk-header__inner { padding-top: 22px; padding-bottom: 22px; display: flex; align-items: center; justify-content: space-between; gap: var(--sp-8); }
.kk-header__actions { display: flex; align-items: center; gap: var(--sp-3); flex-shrink: 0; }
.kk-brand { display: flex; align-items: center; gap: 18px; color: inherit; }
.kk-brand:hover { text-decoration: none; color: inherit; }
.kk-brand__mark { flex-shrink: 0; width: 60px; height: 60px; border-radius: var(--r-lg); background: var(--brand-primary); display: flex; align-items: center; justify-content: center; }
.kk-brand__mark::after { content: ""; width: 26px; height: 26px; border-radius: 50%; border: 3px solid var(--kk-teal-400); border-left-color: transparent; }
.kk-brand__mark img { width: 100%; height: 100%; object-fit: contain; }
.kk-brand__mark:has(img)::after { display: none; }
.kk-brand__name { font: var(--fw-bold) 21px/1.2 var(--font-display); letter-spacing: -.01em; }
.kk-brand__sub { font-size: var(--fs-caption); color: var(--text-muted); margin-top: 5px; }
.kk-brand--compact .kk-brand__mark { width: 48px; height: 48px; border-radius: 9px; }
.kk-brand--compact .kk-brand__mark::after { width: 21px; height: 21px; }
.kk-brand--compact .kk-brand__name { font-size: 17px; line-height: 1.25; }
.kk-brand--on-dark .kk-brand__mark { background: var(--kk-navy-800); width: 46px; height: 46px; }
.kk-brand--on-dark .kk-brand__mark::after { width: 20px; height: 20px; }
.kk-brand--on-dark .kk-brand__name { color: #fff; font-size: 15px; line-height: 1.3; }
.kk-burger { display: none; width: 44px; height: 44px; border: 0; background: none; padding: 9px; cursor: pointer; flex-direction: column; justify-content: center; gap: 5px; }
.kk-burger span { display: block; height: 2.5px; border-radius: 2px; background: var(--brand-primary); }

/* ---------- Главное меню (mod_menu) ---------- */
.kk-nav { background: var(--brand-primary); position: relative; z-index: 50; }
.kk-nav__list { list-style: none; margin: 0 auto; padding: 0 var(--gutter); max-width: var(--container-max); display: flex; align-items: stretch; gap: 2px; min-height: var(--h-nav); }
.kk-nav__item { position: relative; display: flex; }
.kk-nav__link { display: flex; align-items: center; gap: 7px; padding: 0 18px; color: var(--kk-on-dark-3); font-size: var(--fs-ui); background: none; border: 0; font-family: inherit; cursor: pointer; }
.kk-nav__link:hover, .kk-nav__item:focus-within > .kk-nav__link { background: var(--kk-navy-700); color: #fff; text-decoration: none; }
.kk-nav__item.is-active > .kk-nav__link { background: var(--kk-navy-700); color: #fff; font-weight: var(--fw-semibold); }
.kk-nav__caret::after { content: "\25BE"; font-size: 11px; opacity: .8; }
.kk-nav__sub { display: none; position: absolute; top: 100%; left: 0; min-width: 264px; list-style: none; margin: 0; padding: 8px 0; background: #fff; border: 1px solid var(--border-default); border-top: 3px solid var(--action-primary); box-shadow: var(--shadow-dropdown); }
.kk-nav__item:hover > .kk-nav__sub, .kk-nav__item:focus-within > .kk-nav__sub, .kk-nav__item.is-open > .kk-nav__sub { display: block; }
.kk-nav__sub a { display: block; padding: 11px 20px; font-size: var(--fs-ui); color: var(--text-body); }
.kk-nav__sub a:hover, .kk-nav__sub .is-active > a { background: var(--kk-ice-50); color: var(--brand-primary); text-decoration: none; }
.kk-nav__sub-footer { margin: 8px 20px 4px; padding-top: 10px; border-top: 1px solid var(--kk-ice-150); font-size: var(--fs-caption); }

/* ---------- Хлебные крошки ---------- */
.kk-breadcrumbs { background: var(--surface-muted); border-bottom: 1px solid var(--kk-ice-150); }
.kk-breadcrumbs ol { list-style: none; margin: 0 auto; max-width: var(--container-max); padding: 16px var(--gutter); display: flex; flex-wrap: wrap; gap: 9px; font-size: var(--fs-meta); color: var(--text-muted); }
.kk-breadcrumbs li { display: flex; gap: 9px; }
.kk-breadcrumbs li:not(:last-child)::after { content: "/"; color: var(--kk-ink-300); }
.kk-breadcrumbs li:last-child { color: var(--text-body); }

/* ---------- Заголовок секции ---------- */
.kk-section-head { display: flex; align-items: flex-end; justify-content: space-between; gap: var(--sp-4); border-bottom: 2px solid var(--border-heading); padding-bottom: 12px; margin-bottom: 22px; }
.kk-section-head h2, .kk-section-head__title { margin: 0; font: var(--fw-bold) var(--fs-h2)/1.2 var(--font-display); }

/* ---------- Главный анонс + «Срочно» ---------- */
.kk-announce-row { display: grid; grid-template-columns: minmax(0, 1fr) 372px; gap: var(--sp-6); }
.kk-announce { position: relative; overflow: hidden; background: var(--surface-brand); color: #fff; border-radius: var(--r-xl); padding: 34px 38px; display: flex; flex-direction: column; gap: 18px; }
.kk-announce::before { content: ""; position: absolute; right: -40px; top: -40px; width: 220px; height: 220px; border-radius: 50%; background: var(--kk-blue-500); }
.kk-announce > * { position: relative; }
.kk-announce__top { display: flex; align-items: center; gap: var(--sp-3); font-size: 14px; color: var(--kk-on-dark-5); }
.kk-announce__title { margin: 0; max-width: 640px; font: var(--fw-bold) var(--fs-hero)/1.18 var(--font-display); text-wrap: pretty; }
.kk-announce__meta { display: flex; flex-wrap: wrap; gap: 8px 28px; margin-top: 20px; font-size: var(--fs-body); color: var(--kk-on-dark-2); }
.kk-announce__meta strong { color: #fff; }
.kk-announce__actions { display: flex; align-items: center; flex-wrap: wrap; gap: var(--sp-4); margin-top: 6px; }
.kk-announce__actions .kk-deadline--on-dark { margin-left: auto; }
.kk-urgent { border: 1px solid var(--border-default); border-radius: var(--r-xl); padding: 28px; background: var(--surface-muted); display: flex; flex-direction: column; gap: 14px; }
.kk-urgent__title { margin: 0; font: var(--fw-bold) var(--fs-h3)/1.25 var(--font-display); }
.kk-urgent__text { margin: 0; font-size: var(--fs-ui); line-height: 1.55; color: var(--text-secondary); }
.kk-urgent__deadline { font-size: 14px; color: var(--text-muted); padding-top: 4px; border-top: 1px solid var(--kk-ice-150); }
.kk-urgent__deadline strong { color: var(--text-body); }

/* ---------- Дата-плашка и карточка мероприятия ---------- */
.kk-datebox { flex-shrink: 0; width: 66px; border-radius: var(--r-md); background: var(--kk-ice-100); text-align: center; padding: 9px 0; }
.kk-datebox__day { font-size: 24px; font-weight: var(--fw-bold); line-height: 1; color: var(--brand-primary); }
.kk-datebox__month { font-size: var(--fs-overline); color: var(--text-muted); margin-top: 3px; text-transform: uppercase; letter-spacing: .06em; }
.kk-datebox--sm { width: 48px; padding: 6px 0; border-radius: 6px; }
.kk-datebox--sm .kk-datebox__day { font-size: 17px; }
.kk-datebox--sm .kk-datebox__month { font-size: 10.5px; margin-top: 1px; }
.kk-event { border: 1px solid var(--border-default); border-radius: var(--r-lg); padding: 22px; display: flex; flex-direction: column; gap: 14px; background: var(--surface-card); }
.kk-event__top { display: flex; align-items: flex-start; gap: var(--sp-4); }
.kk-event__head { display: flex; flex-direction: column; gap: 8px; }
.kk-event__title { margin: 0; font-size: var(--fs-card-title-sm); font-weight: var(--fw-semibold); line-height: 1.35; }
.kk-event__title a { color: inherit; }
.kk-event__place { font-size: 14px; color: var(--text-muted); }
.kk-event__foot { margin-top: auto; padding-top: 14px; border-top: 1px solid var(--border-soft); display: flex; align-items: center; gap: var(--sp-3); }
.kk-event__foot .kk-more { margin-left: auto; font-size: 14px; }

/* ---------- Медиа 16:9 и карточка новости ---------- */
.kk-media { position: relative; aspect-ratio: 16 / 9; background: repeating-linear-gradient(135deg, var(--kk-ice-150) 0 10px, var(--kk-ice-200) 10px 20px); display: flex; align-items: center; justify-content: center; overflow: hidden; }
.kk-media img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.kk-media__label { font: 12px/1.3 var(--font-mono); color: var(--text-caption); background: rgba(255,255,255,.78); padding: 5px 10px; border-radius: var(--r-sm); }
.kk-media--rounded { border-radius: var(--r-xl); }
.kk-figure { margin: 0; }
.kk-figure figcaption { font-size: var(--fs-meta); color: var(--text-caption); margin-top: 10px; }
.kk-news { border: 1px solid var(--border-default); border-radius: var(--r-lg); overflow: hidden; display: flex; flex-direction: column; background: var(--surface-card); }
.kk-news__body { padding: 20px 22px 22px; display: flex; flex-direction: column; gap: 10px; flex: 1; }
.kk-news__meta { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 12px; font-size: var(--fs-caption); color: var(--text-muted); }
.kk-news__meta > * + *::before { content: "·"; color: var(--kk-ink-200); margin-right: 12px; }
.kk-news__tag { color: var(--kk-teal-600); font-weight: var(--fw-semibold); }
.kk-news__title { margin: 0; font-size: var(--fs-card-title); font-weight: var(--fw-semibold); line-height: 1.35; text-wrap: pretty; }
.kk-news__title a { color: inherit; }
.kk-news__excerpt { margin: 0; font-size: var(--fs-small); line-height: 1.55; color: var(--text-secondary); text-wrap: pretty; }
.kk-news__more { margin-top: auto; padding-top: 8px; font-size: 14px; font-weight: var(--fw-semibold); }

/* ---------- Шаги вступления ---------- */
.kk-band { background: var(--surface-subtle); border-top: 1px solid var(--kk-ice-150); border-bottom: 1px solid var(--kk-ice-150); padding: var(--sp-11) 0; }
.kk-join { display: grid; grid-template-columns: 320px minmax(0, 1fr); gap: var(--sp-12); align-items: start; }
.kk-join__title { margin: 0 0 12px; font: var(--fw-bold) var(--fs-h2)/1.2 var(--font-display); }
.kk-join__text { margin: 0 0 20px; font-size: var(--fs-ui); line-height: var(--lh-text); color: var(--text-secondary); }
.kk-step { background: #fff; border: 1px solid var(--border-default); border-radius: var(--r-lg); padding: 22px; }
.kk-step__num { font: 13px/1 var(--font-mono); color: var(--kk-teal-600); margin-bottom: 10px; }
.kk-step__title { margin: 0 0 8px; font-size: var(--fs-card-title-sm); font-weight: var(--fw-semibold); }
.kk-step__text { margin: 0; font-size: 14px; line-height: 1.55; color: var(--text-secondary); }
.kk-step__docs { display: flex; flex-direction: column; gap: 8px; margin-top: 12px; font-size: var(--fs-meta); }

/* ---------- Партнёры ---------- */
.kk-partner { height: 78px; border: 1px solid var(--kk-ice-150); border-radius: var(--r-md); display: flex; align-items: center; justify-content: center; padding: 12px; background: #fff; }
.kk-partner img { max-height: 54px; width: auto; filter: grayscale(1); opacity: .8; transition: filter var(--dur-fast), opacity var(--dur-fast); }
.kk-partner:hover img { filter: none; opacity: 1; }

/* ---------- Статья / материал ---------- */
.kk-article-meta { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; margin-bottom: 18px; font-size: 14px; color: var(--text-muted); }
.kk-article-title { margin: 0 0 20px; font: var(--fw-bold) var(--fs-display)/1.14 var(--font-display); letter-spacing: var(--tracking-display); text-wrap: pretty; }
.kk-event-title { margin: 0 0 16px; font: var(--fw-bold) var(--fs-h1)/var(--lh-tight) var(--font-display); letter-spacing: -.01em; text-wrap: pretty; }
.kk-lead { margin: 0; font-size: var(--fs-lead); line-height: 1.55; color: var(--text-secondary); padding-left: 18px; border-left: 3px solid var(--kk-teal-400); text-wrap: pretty; }
.kk-lead--plain { padding-left: 0; border-left: 0; }
.kk-byline { display: flex; align-items: center; gap: 14px; margin: 28px 0 30px; padding: 16px 0; border-top: 1px solid var(--kk-ice-150); border-bottom: 1px solid var(--kk-ice-150); }
.kk-byline__photo { width: 52px; height: 52px; border-radius: 50%; flex-shrink: 0; object-fit: cover; background: repeating-linear-gradient(135deg, var(--kk-ice-150) 0 7px, var(--kk-ice-200) 7px 14px); }
.kk-byline__body { flex: 1; }
.kk-byline__name { font-size: var(--fs-body); font-weight: var(--fw-semibold); }
.kk-byline__role { font-size: 14px; color: var(--text-muted); margin-top: 2px; }
.kk-share { display: flex; align-items: center; gap: 10px; font-size: var(--fs-meta); color: var(--text-muted); }

.kk-prose { max-width: var(--measure-prose); font-size: var(--fs-prose); line-height: var(--lh-prose); color: var(--text-prose); }
.kk-prose h2 { font: var(--fw-bold) var(--fs-h2-prose)/var(--lh-heading) var(--font-display); color: var(--text-heading); margin: 36px 0 16px; }
.kk-prose h3 { font: var(--fw-bold) var(--fs-h4)/var(--lh-heading) var(--font-display); color: var(--text-heading); margin: 28px 0 12px; }
.kk-prose > :first-child { margin-top: 0; }
.kk-prose p { margin: 0 0 20px; }
.kk-prose ul, .kk-prose ol { margin: 0 0 24px; padding-left: 24px; }
.kk-prose li { margin-bottom: 10px; }
.kk-prose a { text-decoration: underline; text-decoration-color: rgba(18, 69, 110, .35); text-underline-offset: 3px; }
.kk-prose a:hover { text-decoration-color: currentColor; }
.kk-prose figure { margin: 0 0 34px; }
.kk-prose figcaption { font-size: var(--fs-meta); color: var(--text-caption); margin-top: 10px; line-height: 1.5; }
.kk-prose table { width: 100%; border-collapse: collapse; margin: 0 0 24px; font-size: var(--fs-ui); line-height: 1.5; }
.kk-prose th, .kk-prose td { text-align: left; padding: 10px 12px; border-bottom: 1px solid var(--border-default); }
.kk-prose th { background: var(--surface-subtle); font-weight: var(--fw-semibold); }
/* PDF-ссылки, вставленные редактором TinyMCE, оформляются автоматически */
.kk-prose a[href$=".pdf"], .kk-prose a[href$=".PDF"] { display: inline-flex; align-items: center; gap: 8px; font-weight: var(--fw-semibold); text-decoration: none; }
.kk-prose a[href$=".pdf"]::before, .kk-prose a[href$=".PDF"]::before { content: "PDF"; display: inline-flex; align-items: center; justify-content: center; width: 20px; height: 24px; border-radius: 3px; background: var(--file-pdf); color: #fff; font: 700 8px/1 var(--font-sans); flex-shrink: 0; }
/* внешние ссылки */
.kk-prose a[target="_blank"]:not([href$=".pdf"])::after { content: " \2197"; }

.kk-keyfigs { background: var(--surface-subtle); border: 1px solid var(--border-default); border-radius: var(--r-lg); padding: 26px 28px; margin: 0 0 28px; }
.kk-keyfigs__grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 22px; margin-top: 14px; }
.kk-keyfigs__value { font: var(--fw-bold) 34px/1 var(--font-display); color: var(--brand-primary); }
.kk-keyfigs__label { font-size: var(--fs-small); line-height: 1.5; color: var(--text-secondary); margin-top: 6px; }
.kk-quote { margin: 0 0 28px; padding: 24px 28px; background: var(--surface-brand); color: #fff; border-radius: var(--r-lg); }
.kk-quote p { margin: 0; font: 400 23px/1.45 var(--font-display); }
.kk-quote cite { display: block; margin-top: 16px; font-style: normal; font-size: var(--fs-small); color: var(--kk-on-dark-5); }
.kk-callout { border-left: 3px solid var(--action-primary); background: var(--status-urgent-bg); padding: 22px 26px; border-radius: 0 var(--r-md) var(--r-md) 0; }
.kk-callout__title { font-size: var(--fs-body); font-weight: var(--fw-semibold); margin-bottom: 8px; }
.kk-callout__text { font-size: var(--fs-body); line-height: var(--lh-text); color: var(--text-secondary); margin: 0; }
.kk-cta-band { background: var(--surface-brand); color: #fff; border-radius: var(--r-xl); padding: 28px 32px; display: flex; align-items: center; gap: var(--sp-7); }
.kk-cta-band__body { flex: 1; }
.kk-cta-band__title { margin: 8px 0 0; font: var(--fw-bold) var(--fs-h3)/1.25 var(--font-display); }
.kk-cta-band__text { margin: 8px 0 0; font-size: 15.5px; color: var(--kk-on-dark-2); }

/* ---------- Сайдбар ---------- */
.kk-sidebox { border: 1px solid var(--border-default); border-radius: var(--r-xl); padding: 22px 24px; background: #fff; }
.kk-sidebox--subtle { background: var(--surface-subtle); }
.kk-sidebox__title { margin: 0 0 14px; font-size: var(--fs-body); font-weight: var(--fw-semibold); }
.kk-sidebox__text { margin: 0; font-size: var(--fs-small); line-height: var(--lh-text); color: var(--text-secondary); }
.kk-toc { list-style: none; margin: 14px 0 0; padding: 0; counter-reset: toc; }
.kk-toc li { counter-increment: toc; display: flex; gap: 12px; padding: 10px 0; border-bottom: 1px solid var(--border-soft); font-size: var(--fs-ui); line-height: 1.45; }
.kk-toc li::before { content: counter(toc); font: 13px/1.6 var(--font-mono); color: var(--kk-ink-300); flex-shrink: 0; }
.kk-related { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 14px; }
.kk-related li { padding-bottom: 14px; border-bottom: 1px solid var(--border-soft); }
.kk-related li:last-child { border-bottom: 0; padding-bottom: 0; }
.kk-related__tag { font-size: 11.5px; font-weight: var(--fw-semibold); text-transform: uppercase; letter-spacing: var(--tracking-badge); color: var(--kk-teal-600); margin-bottom: 5px; }
.kk-related__title { font-size: var(--fs-ui); font-weight: var(--fw-semibold); line-height: 1.4; color: var(--text-body); }
.kk-related__date { font-size: var(--fs-caption); color: var(--text-muted); margin-top: 5px; }
.kk-facts { border: 1px solid var(--border-default); border-radius: var(--r-xl); overflow: hidden; }
.kk-facts__head { background: var(--surface-brand); color: #fff; padding: 22px 24px; }
.kk-facts__when { margin-top: 8px; font: var(--fw-bold) var(--fs-h3)/1.2 var(--font-display); }
.kk-facts__time { margin-top: 6px; font-size: var(--fs-ui); color: var(--kk-on-dark-2); }
.kk-facts__body { padding: 22px 24px; display: flex; flex-direction: column; gap: var(--sp-4); }
.kk-facts dt { font-size: var(--fs-caption); color: var(--text-muted); margin-bottom: 4px; }
.kk-facts dd { margin: 0; font-size: var(--fs-body); line-height: 1.5; }

/* ---------- Формы, модалка входа (mod_login) ---------- */
.kk-field { display: flex; flex-direction: column; gap: 6px; }
.kk-field label { font-size: 14px; font-weight: var(--fw-medium); color: var(--text-secondary); }
.kk-input { width: 100%; height: 46px; padding: 0 14px; border: 1px solid var(--border-strong); border-radius: var(--r-md); font: var(--fs-ui) var(--font-sans); color: var(--text-body); background: #fff; }
.kk-input::placeholder { color: #8B9CAA; }
.kk-input:focus { outline: none; border-color: var(--brand-primary); box-shadow: 0 0 0 3px rgba(79, 194, 206, .35); }
.kk-input.is-invalid { border-color: var(--action-primary); }
.kk-field__error { font-size: var(--fs-caption); color: var(--status-urgent-text); }
.kk-check { display: inline-flex; align-items: center; gap: 9px; font-size: 14px; color: var(--text-secondary); cursor: pointer; }
.kk-check input { width: 16px; height: 16px; accent-color: var(--brand-primary); margin: 0; }
.kk-modal-backdrop { position: fixed; inset: 0; z-index: 1000; background: var(--surface-overlay); display: flex; align-items: center; justify-content: center; padding: 16px; }
.kk-modal { width: min(420px, 100%); background: #fff; border-radius: var(--r-xl); padding: 32px; box-shadow: var(--shadow-modal); }
dialog.kk-modal { border: 0; margin: auto; }
dialog.kk-modal::backdrop { background: var(--surface-overlay); }
.kk-modal__head { display: flex; justify-content: space-between; align-items: flex-start; gap: 16px; margin-bottom: 6px; }
.kk-modal__title { margin: 0; font: var(--fw-bold) 23px/1.25 var(--font-display); }
.kk-modal__close { border: 0; background: none; color: var(--text-caption); font-size: 22px; line-height: 1; cursor: pointer; padding: 4px; }
.kk-modal__sub { font-size: 14px; color: var(--text-muted); margin-bottom: 22px; }
.kk-modal__form { display: flex; flex-direction: column; gap: 12px; }
.kk-modal__links { display: flex; gap: 18px; font-size: 14px; margin-top: 4px; }

/* ---------- Пагинация ---------- */
.kk-pagination { display: flex; flex-wrap: wrap; gap: 6px; list-style: none; padding: 0; margin: 32px 0 0; }
.kk-pagination a, .kk-pagination span { min-width: 40px; height: 40px; padding: 0 12px; display: inline-flex; align-items: center; justify-content: center; border: 1px solid var(--border-default); border-radius: var(--r-md); font-size: var(--fs-ui); color: var(--link); }
.kk-pagination a:hover { background: var(--kk-ice-100); text-decoration: none; }
.kk-pagination .is-active span { background: var(--brand-primary); border-color: var(--brand-primary); color: #fff; font-weight: var(--fw-semibold); }

/* ---------- Футер ---------- */
.kk-footer { background: var(--surface-dark); color: var(--kk-on-dark-4); padding: var(--sp-11) 0 30px; }
.kk-footer__grid { display: grid; grid-template-columns: 1.4fr 1fr 1fr 1fr; gap: var(--sp-10); }
.kk-footer__address { font-size: 14px; line-height: 1.7; margin: 16px 0 18px; font-style: normal; }
.kk-footer__title { color: #fff; font-size: 14px; font-weight: var(--fw-semibold); margin: 0 0 14px; }
.kk-footer__links { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 10px; font-size: 14px; }
.kk-footer a { color: inherit; }
.kk-footer a:hover { color: #fff; }
.kk-footer__bottom { margin-top: 34px; padding-top: 18px; border-top: 1px solid var(--kk-navy-750); display: flex; flex-wrap: wrap; justify-content: space-between; gap: 12px; font-size: var(--fs-caption); color: var(--kk-on-dark-7); }

/* ===== Адаптив ===== */
@media (max-width: 960px) {
  .kk-grid-3, .kk-join > div:last-child { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .kk-grid-5 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .kk-announce-row, .kk-join, .kk-layout-sidebar { grid-template-columns: minmax(0, 1fr); }
  .kk-sticky { position: static; }
  .kk-footer__grid { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 768px) {
  .kk-topbar__contacts > :not(:first-child) { display: none; }
  .kk-header__inner { padding-top: 14px; padding-bottom: 14px; gap: 12px; }
  .kk-brand { gap: 12px; }
  .kk-brand__mark { width: 40px; height: 40px; border-radius: 8px; }
  .kk-brand__mark::after { width: 17px; height: 17px; border-width: 2.5px; }
  .kk-brand__name { font-size: 13px; line-height: 1.25; }
  .kk-brand__sub { display: none; }
  .kk-header__actions { display: none; }
  .kk-burger { display: flex; }
  .kk-mobile-actions { display: flex; gap: 10px; padding: 12px var(--gutter); border-bottom: 1px solid var(--kk-ice-150); }
  .kk-mobile-actions .kk-btn { height: 46px; }
  .kk-mobile-actions .kk-btn--primary { flex: 1; }
  .kk-mobile-actions .kk-btn--icon { width: 46px; }
  .kk-nav { display: none; }
  .kk-nav.is-open { display: block; }
  .kk-nav__list { flex-direction: column; padding: 8px 0; }
  .kk-nav__item { flex-direction: column; }
  .kk-nav__link { min-height: 48px; padding: 0 var(--gutter); justify-content: space-between; }
  .kk-nav__sub { position: static; box-shadow: none; border: 0; background: var(--kk-navy-700); min-width: 0; }
  .kk-nav__sub a { color: var(--kk-on-dark-3); padding: 12px calc(var(--gutter) + 16px); }
  .kk-nav__sub a:hover { background: transparent; color: #fff; }
  .kk-nav__item:hover > .kk-nav__sub { display: none; }
  .kk-nav__item.is-open > .kk-nav__sub { display: block; }
  .kk-grid-3, .kk-join > div:last-child { grid-template-columns: minmax(0, 1fr); }
  .kk-grid-5 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .kk-announce { padding: 22px 20px; gap: 12px; }
  .kk-announce__actions { flex-direction: column; align-items: stretch; }
  .kk-announce__actions .kk-btn { width: 100%; height: 50px; }
  .kk-announce__actions .kk-deadline--on-dark { margin-left: 0; order: -1; }
  .kk-announce__meta { flex-direction: column; gap: 2px; margin-top: 12px; font-size: 14.5px; }
  .kk-urgent { padding: 18px; gap: 9px; }
  .kk-event { padding: 16px; }
  .kk-datebox { width: 58px; }
  .kk-keyfigs { padding: 18px; }
  .kk-keyfigs__grid { grid-template-columns: minmax(0, 1fr); gap: 16px; }
  .kk-keyfigs__value { font-size: 28px; }
  .kk-quote { padding: 20px; }
  .kk-quote p { font-size: 18.5px; }
  .kk-cta-band { flex-direction: column; align-items: stretch; padding: 20px; gap: 14px; }
  .kk-doc { padding: 14px 16px; gap: 13px; }
  .kk-doc .kk-pdf-icon { width: 28px; height: 35px; font-size: 9px; }
  .kk-doc__action { font-size: 0; }
  .kk-doc__action::after { content: "\2193"; font-size: 16px; }
  .kk-modal { padding: 24px; }
  .kk-footer__grid { grid-template-columns: minmax(0, 1fr); gap: 24px; }
  .kk-social { width: 38px; height: 38px; }
}
@media (min-width: 769px) { .kk-mobile-actions { display: none; } }

/* ---- design/components/kkamld-pages.css ---- */
/* ===== ККАМЛД — Turn 3: классы для служебных, авторизационных и контентных страниц =====
   Дополняет components/kkamld.css. Каждый блок помечен экранами, где используется. */

/* ---------- Общие ---------- */
.kk-print-only { display: none; }
.kk-page-head { padding-top: var(--sp-11); padding-bottom: var(--sp-2); }
.kk-page-head__title { margin: 0 0 10px; font: var(--fw-bold) var(--fs-h1)/var(--lh-tight) var(--font-display); letter-spacing: -.01em; text-wrap: pretty; }
.kk-page-head__lead { margin: 0; max-width: 760px; font-size: 18px; line-height: var(--lh-text); color: var(--text-secondary); text-wrap: pretty; }
.kk-grid-2 { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--grid-gap); }
.kk-grid-4 { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--sp-6) var(--grid-gap); }
.kk-stack { display: flex; flex-direction: column; gap: var(--sp-4); }
.kk-row { display: flex; flex-wrap: wrap; align-items: center; gap: var(--sp-3); }
.kk-muted { color: var(--text-muted); }

.kk-layout-sidebar--340 { grid-template-columns: minmax(0, 1fr) 340px; }
.kk-layout-sidebar--320 { grid-template-columns: minmax(0, 1fr) 320px; }
.kk-sticky--offset { padding-top: var(--sp-11); }
.kk-nav__link { white-space: nowrap; }
@media (max-width: 1180px) and (min-width: 769px) { .kk-nav__list { overflow-x: auto; scrollbar-width: none; } .kk-nav__link { padding: 0 12px; } }

/* ---------- Кнопки: состояния (все экраны) ---------- */
.kk-btn[disabled], .kk-btn.is-disabled { background: var(--kk-ice-150); border-color: var(--kk-ice-150); color: var(--kk-ink-400); opacity: 1; cursor: not-allowed; pointer-events: none; }
.kk-btn:focus-visible, .kk-btn.is-focus { outline: 3px solid var(--focus-ring); outline-offset: 2px; }
.kk-btn[aria-busy="true"], .kk-btn.is-loading { cursor: progress; pointer-events: none; }
.kk-btn--brand[aria-busy="true"], .kk-btn--brand.is-loading { background: var(--kk-navy-700); }
.kk-spinner { width: 16px; height: 16px; border-radius: 50%; border: 2px solid rgba(255,255,255,.35); border-top-color: #fff; animation: kk-spin .8s linear infinite; flex-shrink: 0; }
.kk-spinner--dark { border-color: var(--kk-ice-200); border-top-color: var(--brand-primary); }
@keyframes kk-spin { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) { .kk-spinner { animation-duration: 2.4s; } }
.kk-btn--on-dark { background: transparent; border-color: rgba(255,255,255,.55); color: #fff; }
.kk-btn--on-dark:hover { background: var(--kk-navy-700); border-color: #fff; color: #fff; }
.kk-btn--link { background: none; border: 0; padding: 0; height: auto; color: var(--link); font-weight: var(--fw-semibold); }
.kk-btn--link:hover { color: var(--link-hover); text-decoration: underline; }

/* ---------- Системные уведомления (Joomla: joomla-alert / .alert) ---------- */
.kk-alert { display: flex; align-items: flex-start; gap: 14px; padding: 16px 20px; border: 1px solid; border-radius: var(--r-md); font-size: var(--fs-ui); line-height: 1.55; }
.kk-alert__icon { flex-shrink: 0; width: 22px; height: 22px; margin-top: 1px; border-radius: 50%; display: flex; align-items: center; justify-content: center; color: #fff; font: var(--fw-bold) 13px/1 var(--font-sans); }
.kk-alert__icon .kk-ico { font-size: 13px; }
.kk-alert__body { flex: 1; min-width: 0; }
.kk-alert__title { font-weight: var(--fw-semibold); margin-bottom: 2px; }
.kk-alert__body p { margin: 0; }
.kk-alert__close { flex-shrink: 0; border: 0; background: none; padding: 2px; color: inherit; opacity: .7; cursor: pointer; font-size: 14px; }
.kk-alert__close:hover { opacity: 1; }
.kk-alert--success { background: var(--kk-green-50); border-color: var(--kk-green-200); color: var(--kk-green-700); }
.kk-alert--success .kk-alert__icon { background: var(--kk-green-600); }
.kk-alert--error { background: var(--kk-coral-50); border-color: var(--kk-coral-200); color: var(--kk-coral-900); }
.kk-alert--error .kk-alert__icon { background: var(--kk-coral-600); }
.kk-alert--warning { background: var(--kk-amber-50); border-color: var(--kk-amber-200); color: var(--kk-amber-800); }
.kk-alert--warning .kk-alert__icon { background: var(--kk-amber-600); }
.kk-alert--info { background: var(--kk-ice-100); border-color: #C9DCE8; color: var(--kk-blue-600); }
.kk-alert--info .kk-alert__icon { background: var(--kk-blue-600); }
.kk-alert a { color: inherit; text-decoration: underline; font-weight: var(--fw-semibold); }

/* ---------- Формы (регистрация, профиль, заявка, вход) ---------- */
.kk-form { display: flex; flex-direction: column; gap: 18px; }
.kk-form__grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px 20px; }
.kk-form__grid--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.kk-form__full { grid-column: 1 / -1; }
.kk-form__actions { display: flex; flex-wrap: wrap; align-items: center; gap: 14px; padding-top: 6px; }
.kk-form__note { font-size: var(--fs-caption); color: var(--text-muted); }
.kk-fieldset { border: 1px solid var(--border-default); border-radius: var(--r-lg); padding: 22px 24px 24px; margin: 0; min-width: 0; }
.kk-fieldset > legend { padding: 0 8px; margin-left: -8px; font: var(--fw-bold) 19px/1.3 var(--font-display); color: var(--text-heading); }
.kk-req { color: var(--kk-coral-700); margin-left: 3px; font-weight: var(--fw-semibold); }
.kk-field__hint { font-size: var(--fs-caption); line-height: 1.45; color: var(--text-muted); }
.kk-field__error { display: flex; gap: 6px; align-items: flex-start; line-height: 1.45; }
.kk-field__error::before { content: "!"; flex-shrink: 0; width: 15px; height: 15px; margin-top: 1px; border-radius: 50%; background: var(--kk-coral-600); color: #fff; font: 700 10px/15px var(--font-sans); text-align: center; }
.kk-field.is-invalid label { color: var(--status-urgent-text); }
.kk-input.is-focus { outline: none; border-color: var(--brand-primary); box-shadow: 0 0 0 3px rgba(79, 194, 206, .35); }
.kk-input:disabled, .kk-input.is-disabled { background: var(--kk-ice-50); border-color: var(--kk-ice-150); color: var(--kk-ink-400); cursor: not-allowed; }
.kk-input[readonly] { background: var(--kk-ice-25); color: var(--text-secondary); }
.kk-input.is-valid { border-color: var(--kk-green-600); }
.kk-select { appearance: none; -webkit-appearance: none; padding-right: 40px; background: #fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M6 9l6 6 6-6' fill='none' stroke='%235A7080' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") right 14px center / 16px no-repeat; }
.kk-textarea { height: auto; min-height: 132px; padding: 12px 14px; line-height: 1.55; resize: vertical; }
.kk-input-group { position: relative; }
.kk-input-group .kk-input { padding-right: 96px; }
.kk-input-group__btn { position: absolute; right: 6px; top: 50%; transform: translateY(-50%); height: 34px; padding: 0 12px; border: 0; border-radius: 6px; background: var(--kk-ice-100); color: var(--brand-primary); font: var(--fw-semibold) 13px var(--font-sans); cursor: pointer; }
.kk-check--consent { align-items: flex-start; line-height: 1.55; font-size: var(--fs-small); color: var(--text-body); }
.kk-check--consent input { margin-top: 3px; }
.kk-check.is-invalid { color: var(--status-urgent-text); }
.kk-check.is-invalid input { outline: 2px solid var(--kk-coral-600); outline-offset: 1px; }
.kk-check input:disabled + * , .kk-check.is-disabled { color: var(--kk-ink-400); cursor: not-allowed; }
.kk-radio-group { display: flex; flex-wrap: wrap; gap: 10px 22px; }
.kk-radio-group .kk-check input { border-radius: 50%; }

/* Слот Яндекс SmartCaptcha: виджет рендерится скриптом Яндекса внутрь .kk-captcha */
.kk-captcha { width: 300px; max-width: 100%; min-height: 100px; }
.kk-captcha__placeholder { height: 100px; border: 1px solid var(--border-strong); border-radius: var(--r-md); background: #fff; display: flex; align-items: center; gap: 14px; padding: 0 16px; font-size: var(--fs-small); }
.kk-captcha__box { width: 28px; height: 28px; border: 2px solid var(--kk-ink-300); border-radius: 6px; flex-shrink: 0; }
.kk-captcha__brand { margin-left: auto; font: 10.5px/1.3 var(--font-mono); color: var(--text-caption); text-align: right; }
.kk-captcha.is-invalid .kk-captcha__placeholder { border-color: var(--kk-coral-600); }

/* ---------- Авторизация: вход, сброс пароля, модалка ---------- */
.kk-auth { display: flex; justify-content: center; padding: var(--sp-14) 0 72px; }
.kk-auth__card { width: min(480px, 100%); border: 1px solid var(--border-default); border-radius: var(--r-xl); padding: 36px 40px; background: #fff; }
.kk-auth__title { margin: 10px 0 8px; font: var(--fw-bold) 30px/1.2 var(--font-display); }
.kk-auth__lead { margin: 0 0 24px; font-size: var(--fs-ui); line-height: var(--lh-text); color: var(--text-secondary); }
.kk-auth__footer { margin-top: 24px; padding-top: 18px; border-top: 1px solid var(--border-soft); font-size: var(--fs-small); color: var(--text-muted); }
.kk-auth__row { display: flex; justify-content: space-between; align-items: center; gap: 12px; flex-wrap: wrap; }
.kk-join-hint { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-top: 18px; padding: 14px 16px; border-radius: var(--r-md); background: var(--surface-subtle); font-size: var(--fs-small); color: var(--text-secondary); }
.kk-join-hint a { font-weight: var(--fw-semibold); white-space: nowrap; }
.kk-modal-board { background: var(--surface-overlay); padding: 40px; display: flex; flex-wrap: wrap; justify-content: center; align-items: flex-start; gap: 28px; }
.kk-modal-board .kk-modal { box-shadow: var(--shadow-modal); }
.kk-state-label { font: var(--fw-medium) 11.5px/1 var(--font-mono); letter-spacing: var(--tracking-overline); text-transform: uppercase; color: #fff; margin-bottom: 10px; }

/* Шапка: авторизованный пользователь */
.kk-usermenu { display: flex; align-items: center; gap: 12px; }
.kk-usermenu__who { display: flex; align-items: center; gap: 10px; color: inherit; }
.kk-usermenu__who:hover { text-decoration: none; }
.kk-usermenu__name { font-size: var(--fs-small); font-weight: var(--fw-semibold); line-height: 1.25; color: var(--text-body); }
.kk-usermenu__role { font-size: 12.5px; color: var(--text-muted); }
.kk-avatar { flex-shrink: 0; width: 40px; height: 40px; border-radius: 50%; background: var(--kk-ice-100); color: var(--brand-primary); display: inline-flex; align-items: center; justify-content: center; font: var(--fw-semibold) 14px/1 var(--font-sans); object-fit: cover; overflow: hidden; }
.kk-avatar--lg { width: 112px; height: 112px; font-size: 36px; border: 4px solid rgba(255,255,255,.9); background: var(--kk-ice-150); }

/* ---------- Поиск в шапке (mod_finder) ---------- */
.kk-searchbar { display: none; background: var(--surface-muted); border-bottom: 1px solid var(--kk-ice-150); }
.kk-searchbar.is-open { display: block; }
.kk-searchbar__form { display: flex; gap: 12px; padding-top: 16px; padding-bottom: 16px; }
.kk-searchbar .kk-search-field { flex: 1; }
.kk-searchbar .kk-input { height: 50px; font-size: 17px; }
.kk-search-field { position: relative; flex: 1; min-width: 0; }
.kk-search-field > .kk-ico { position: absolute; left: 15px; top: 50%; transform: translateY(-50%); color: var(--text-muted); font-size: 17px; pointer-events: none; }
.kk-search-field .kk-input { padding-left: 44px; }
.kk-btn.is-active { background: var(--kk-ice-100); border-color: var(--brand-primary); color: var(--brand-primary); }

/* ---------- Результаты поиска (com_finder) ---------- */
.kk-results-head { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 8px 16px; padding-bottom: 14px; border-bottom: 2px solid var(--border-heading); }
.kk-results-count { font-size: var(--fs-small); color: var(--text-muted); }
.kk-result { padding: 22px 0; border-bottom: 1px solid var(--border-soft); max-width: 860px; }
.kk-result__meta { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 12px; margin-bottom: 8px; font-size: var(--fs-caption); color: var(--text-muted); }
.kk-result__title { margin: 0 0 6px; font: var(--fw-semibold) 19px/1.35 var(--font-sans); }
.kk-result__snippet { margin: 0; font-size: 15.5px; line-height: 1.6; color: var(--text-secondary); }
.kk-result__url { margin-top: 6px; font: 12.5px/1.4 var(--font-mono); color: var(--kk-teal-600); word-break: break-all; }
.kk-result mark, .kk-result .highlight, .kk-highlight { background: var(--kk-highlight); color: var(--text-body); padding: 0 2px; border-radius: 2px; }
.kk-suggest { font-size: var(--fs-ui); color: var(--text-secondary); }

/* ---------- Фильтр подкатегорий, вкладки ---------- */
.kk-filter { display: flex; flex-wrap: wrap; gap: 8px; margin: 0 0 24px; padding: 0; list-style: none; }
.kk-filter__item { display: inline-flex; align-items: center; gap: 8px; height: 40px; padding: 0 16px; border: 1px solid var(--border-strong); border-radius: var(--r-md); background: #fff; color: var(--text-body); font: var(--fw-medium) var(--fs-ui)/1 var(--font-sans); white-space: nowrap; }
.kk-filter__item:hover { border-color: var(--brand-primary); color: var(--brand-primary); text-decoration: none; }
.kk-filter__item.is-active { background: var(--brand-primary); border-color: var(--brand-primary); color: #fff; }
.kk-filter__count { font-size: 12.5px; color: var(--text-muted); }
.kk-filter__item.is-active .kk-filter__count { color: var(--kk-on-dark-5); }
.kk-listbar { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 18px; }
.kk-listbar .kk-select { width: auto; min-width: 200px; height: 40px; }
.kk-tabs { display: flex; gap: 4px; margin: 0; padding: 0; list-style: none; border-bottom: 1px solid var(--border-default); overflow-x: auto; scrollbar-width: none; }
.kk-tabs__item { display: block; padding: 14px 18px; margin-bottom: -1px; border-bottom: 3px solid transparent; color: var(--text-secondary); font: var(--fw-medium) var(--fs-ui)/1.2 var(--font-sans); white-space: nowrap; }
.kk-tabs__item:hover { color: var(--brand-primary); text-decoration: none; }
.kk-tabs__item.is-active { color: var(--brand-primary); border-bottom-color: var(--brand-primary); font-weight: var(--fw-semibold); }

/* ---------- Профиль (Community Builder) ---------- */
.kk-profile-hero { background: var(--surface-brand); color: #fff; }
.kk-profile-hero__inner { display: flex; align-items: center; gap: 28px; padding-top: 36px; padding-bottom: 36px; }
.kk-profile-hero__name { margin: 8px 0 0; font: var(--fw-bold) 32px/1.2 var(--font-display); }
.kk-profile-hero__meta { margin-top: 6px; font-size: 15.5px; line-height: 1.55; color: var(--kk-on-dark-2); }
.kk-profile-hero__actions { margin-left: auto; display: flex; gap: 12px; flex-shrink: 0; }
.kk-status { display: inline-flex; align-items: center; gap: 7px; font: var(--fw-semibold) 12px/1 var(--font-sans); letter-spacing: var(--tracking-badge); text-transform: uppercase; padding: 5px 10px; border-radius: var(--r-sm); background: var(--kk-green-50); color: var(--kk-green-700); }
.kk-status::before { content: ""; width: 7px; height: 7px; border-radius: 50%; background: currentColor; }
.kk-status--pending { background: var(--kk-amber-50); color: var(--kk-amber-800); }
.kk-status--on-dark { background: rgba(255,255,255,.12); color: #fff; }
.kk-deflist { display: grid; grid-template-columns: 240px minmax(0, 1fr); margin: 0; border-top: 1px solid var(--border-soft); }
.kk-deflist dt, .kk-deflist dd { margin: 0; padding: 14px 0; border-bottom: 1px solid var(--border-soft); }
.kk-deflist dt { font-size: var(--fs-small); color: var(--text-muted); }
.kk-deflist dd { font-size: var(--fs-body); line-height: 1.5; }

/* ---------- Таблицы ---------- */
.kk-table-wrap { border: 1px solid var(--border-default); border-radius: var(--r-lg); overflow-x: auto; -webkit-overflow-scrolling: touch; background: #fff; }
.kk-table { width: 100%; border-collapse: collapse; font-size: var(--fs-ui); line-height: 1.45; }
.kk-table th { text-align: left; padding: 12px 18px; background: var(--surface-subtle); border-bottom: 1px solid var(--border-default); font-size: var(--fs-caption); font-weight: var(--fw-semibold); color: var(--text-muted); white-space: nowrap; }
.kk-table td { padding: 14px 18px; border-bottom: 1px solid var(--border-soft); vertical-align: top; }
.kk-table tbody tr:last-child td { border-bottom: 0; }
.kk-table--zebra tbody tr:nth-child(even) td { background: var(--surface-muted); }
.kk-table .is-num { text-align: right; white-space: nowrap; font-variant-numeric: tabular-nums; }
.kk-table--kv th { width: 38%; background: var(--surface-muted); color: var(--text-secondary); font-size: var(--fs-small); font-weight: var(--fw-medium); white-space: normal; border-bottom: 1px solid var(--border-soft); }
.kk-table-scroll { overflow-x: auto; -webkit-overflow-scrolling: touch; border: 1px solid var(--border-default); border-radius: var(--r-lg); margin: 0 0 8px; }
.kk-table-scroll .kk-table { min-width: 680px; }
.kk-table-hint { display: none; font-size: var(--fs-caption); color: var(--text-muted); margin: 0 0 24px; }
.kk-member__name { font-weight: var(--fw-semibold); }
.kk-member__sub { display: block; font-size: var(--fs-caption); color: var(--text-muted); margin-top: 2px; }

/* ---------- Библиотека (закрытый раздел) ---------- */
.kk-libcat { display: flex; flex-direction: column; gap: 10px; min-height: 168px; padding: 22px; border: 1px solid var(--border-default); border-radius: var(--r-lg); background: #fff; color: inherit; }
.kk-libcat:hover { border-color: var(--brand-primary); text-decoration: none; color: inherit; }
.kk-libcat__title { margin: 0; font: var(--fw-semibold) var(--fs-card-title)/1.35 var(--font-sans); }
.kk-libcat__text { margin: 0; font-size: var(--fs-small); line-height: 1.55; color: var(--text-secondary); }
.kk-libcat__meta { margin-top: auto; font-size: var(--fs-meta); color: var(--text-muted); }
.kk-lock { display: inline-flex; align-items: center; align-self: flex-start; gap: 6px; padding: 5px 9px; border-radius: var(--r-sm); background: var(--kk-ice-100); color: var(--kk-ink-600); font: var(--fw-semibold) 11.5px/1 var(--font-sans); letter-spacing: var(--tracking-badge); text-transform: uppercase; white-space: nowrap; }
.kk-lock .kk-ico { font-size: 12px; }
.kk-lock--open { background: var(--kk-teal-50); color: var(--kk-teal-600); }
.kk-doc.is-locked .kk-pdf-icon { background: var(--kk-ink-300); }
.kk-doc.is-locked .kk-doc__title { color: var(--text-secondary); }
.kk-doc.is-locked .kk-doc__action { color: var(--text-muted); font-weight: var(--fw-medium); }
.kk-gate { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 24px; align-items: start; padding: 32px 36px; border: 1px solid var(--border-default); border-radius: var(--r-xl); background: var(--surface-subtle); }
.kk-gate__icon { width: 64px; height: 64px; border-radius: var(--r-xl); background: var(--brand-primary); color: #fff; display: flex; align-items: center; justify-content: center; font-size: 28px; }
.kk-gate__title { margin: 0 0 8px; font: var(--fw-bold) var(--fs-h3)/1.25 var(--font-display); }
.kk-gate__text { margin: 0; font-size: var(--fs-body); line-height: var(--lh-text); color: var(--text-secondary); max-width: 620px; }
.kk-gate__actions { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 18px; }

/* ---------- Пустые состояния, успех ---------- */
.kk-empty { padding: 48px 32px; border: 1px dashed var(--border-strong); border-radius: var(--r-xl); background: var(--surface-muted); text-align: center; }
.kk-empty__title { margin: 0 0 8px; font: var(--fw-bold) 22px/1.3 var(--font-display); }
.kk-empty__text { max-width: 520px; margin: 0 auto 20px; font-size: var(--fs-ui); line-height: var(--lh-text); color: var(--text-secondary); }
.kk-empty__actions { display: flex; flex-wrap: wrap; justify-content: center; gap: 12px; }
.kk-success { max-width: 720px; padding: 64px 0 80px; }
.kk-success__icon { width: 56px; height: 56px; margin-bottom: 22px; border-radius: 50%; background: var(--kk-green-50); color: var(--kk-green-600); display: flex; align-items: center; justify-content: center; font-size: 26px; }
.kk-success__title { margin: 0 0 14px; font: var(--fw-bold) 36px/1.18 var(--font-display); text-wrap: pretty; }
.kk-success__text { margin: 0 0 28px; font-size: 18px; line-height: var(--lh-text); color: var(--text-secondary); }
.kk-nextsteps { list-style: none; margin: 0 0 32px; padding: 0; counter-reset: ns; border-top: 1px solid var(--border-soft); }
.kk-nextsteps li { counter-increment: ns; display: grid; grid-template-columns: 44px minmax(0, 1fr); gap: 4px 12px; padding: 16px 0; border-bottom: 1px solid var(--border-soft); font-size: var(--fs-ui); line-height: 1.55; color: var(--text-secondary); }
.kk-nextsteps li::before { content: "0" counter(ns); grid-row: span 2; font: 13px/1.7 var(--font-mono); color: var(--kk-teal-600); }
.kk-nextsteps strong { color: var(--text-body); font-weight: var(--fw-semibold); }

/* ---------- Служебные страницы: 404 / 403 / 500 / обслуживание ---------- */
.kk-error { max-width: 820px; padding: 80px 0 96px; }
.kk-error__title { margin: 14px 0 16px; font: var(--fw-bold) var(--fs-display)/1.14 var(--font-display); letter-spacing: var(--tracking-display); text-wrap: pretty; }
.kk-error__text { margin: 0 0 28px; max-width: 640px; font-size: 18px; line-height: var(--lh-text); color: var(--text-secondary); }
.kk-error__search { display: flex; gap: 10px; max-width: 600px; margin-bottom: 40px; }
.kk-error__links-title { margin: 0 0 12px; font-size: var(--fs-small); font-weight: var(--fw-semibold); color: var(--text-muted); }
.kk-linkgrid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }
.kk-linkcard { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 16px 18px; border: 1px solid var(--border-default); border-radius: var(--r-lg); background: #fff; font-weight: var(--fw-semibold); color: var(--link); }
.kk-linkcard::after { content: "→"; color: var(--kk-ink-300); }
.kk-linkcard:hover { border-color: var(--brand-primary); text-decoration: none; }
.kk-linkcard:hover::after { color: var(--brand-primary); }
.kk-standalone { min-height: 100vh; display: flex; flex-direction: column; background: var(--surface-subtle); }
.kk-standalone__head { padding: 28px var(--gutter); }
.kk-standalone__main { flex: 1; display: flex; align-items: center; justify-content: center; padding: 24px var(--gutter) 72px; }
.kk-standalone__card { width: min(680px, 100%); padding: 44px 48px; border: 1px solid var(--border-default); border-radius: var(--r-xl); background: #fff; }
.kk-standalone__foot { padding: 20px var(--gutter); border-top: 1px solid var(--kk-ice-150); font-size: var(--fs-caption); color: var(--text-muted); display: flex; flex-wrap: wrap; justify-content: space-between; gap: 10px; }

/* ---------- Люди: члены правления ---------- */
.kk-person { display: flex; flex-direction: column; gap: 12px; }
.kk-person__photo { aspect-ratio: 4 / 5; border-radius: var(--r-lg); }
.kk-person__name { margin: 0; font: var(--fw-semibold) var(--fs-card-title-sm)/1.35 var(--font-sans); }
.kk-person__role { font-size: var(--fs-small); line-height: 1.5; color: var(--text-secondary); }
.kk-person__org { font-size: var(--fs-caption); line-height: 1.5; color: var(--text-muted); }
.kk-person--lead { display: grid; grid-template-columns: 280px minmax(0, 1fr); gap: 32px; align-items: start; padding-bottom: 36px; margin-bottom: 36px; border-bottom: 1px solid var(--kk-ice-150); }
.kk-person--lead .kk-person__name { font: var(--fw-bold) 27px/1.25 var(--font-display); }
.kk-person--lead .kk-person__role { font-size: var(--fs-body); }

/* ---------- Партнёры ---------- */
.kk-partner-card { display: flex; flex-direction: column; border: 1px solid var(--border-default); border-radius: var(--r-lg); overflow: hidden; background: #fff; }
.kk-partner-card__logo { height: 128px; display: flex; align-items: center; justify-content: center; padding: 20px; border-bottom: 1px solid var(--border-soft); }
.kk-partner-card__logo img { max-height: 72px; width: auto; }
.kk-partner-card__body { padding: 18px 20px 20px; display: flex; flex-direction: column; gap: 6px; flex: 1; }
.kk-partner-card__name { margin: 0; font: var(--fw-semibold) var(--fs-body)/1.35 var(--font-sans); }
.kk-partner-card__text { margin: 0; font-size: var(--fs-small); line-height: 1.55; color: var(--text-secondary); }
.kk-partner-card__link { margin-top: auto; padding-top: 8px; font-size: 14px; font-weight: var(--fw-semibold); }

/* ---------- Фотоотчёт ---------- */
.kk-gallery { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 24px 20px; margin: 0; padding: 0; list-style: none; }
.kk-gallery figure { margin: 0; }
.kk-gallery .kk-media { border-radius: var(--r-md); }
.kk-gallery figcaption { margin-top: 8px; font-size: var(--fs-meta); line-height: 1.5; color: var(--text-caption); }
.kk-gallery__item--wide { grid-column: span 2; }

/* ---------- Cookie-плашка ---------- */
.kk-cookie { position: fixed; left: 24px; right: 24px; bottom: 24px; z-index: 900; max-width: 980px; margin: 0 auto; display: flex; align-items: center; gap: 20px; padding: 18px 22px; border-radius: var(--r-xl); background: var(--surface-dark); color: var(--kk-on-dark-2); font-size: var(--fs-small); line-height: 1.55; }
.kk-cookie p { margin: 0; flex: 1; }
.kk-cookie a { color: #fff; text-decoration: underline; }
.kk-cookie__actions { display: flex; gap: 10px; flex-shrink: 0; }
.kk-cookie--static { position: static; margin: 0; }

/* ---------- Карточка мероприятия: состояния регистрации (макет 1c, экран 3ab) ---------- */
.kk-facts__state { display: flex; flex-direction: column; gap: 10px; padding-top: 16px; border-top: 1px solid var(--border-soft); }
.kk-facts__state-title { margin: 0; font-size: var(--fs-body); font-weight: var(--fw-semibold); }
.kk-facts__note { font-size: var(--fs-small); line-height: 1.5; color: var(--text-secondary); }
.kk-facts__ext { display: flex; align-items: center; justify-content: center; gap: 6px; font-size: var(--fs-caption); color: var(--text-muted); text-align: center; }
.kk-facts__ext b { font-family: var(--font-mono); font-weight: 400; color: var(--text-secondary); }
.kk-facts--past .kk-facts__head { background: var(--kk-navy-900); }
.kk-facts--past .kk-facts__when { color: var(--kk-on-dark-2); }
.kk-facts__materials { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 10px; }
.kk-facts__materials .kk-doc-inline { color: var(--link); font-weight: var(--fw-semibold); font-size: var(--fs-small); }
.kk-facts__thumbs { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 6px; }
.kk-facts__thumbs .kk-media { border-radius: 6px; }
.kk-facts__thumbs .kk-media__label { font-size: 9px; padding: 3px 5px; }
.kk-status--closed { background: var(--kk-ice-150); color: var(--kk-ink-600); }
.kk-status--past { background: rgba(255,255,255,.12); color: var(--kk-on-dark-2); }
.kk-btn__ext { font-size: .95em; margin-left: 2px; }

/* ---------- Адаптив ---------- */
@media (max-width: 960px) {
  .kk-layout-sidebar--340, .kk-layout-sidebar--320 { grid-template-columns: minmax(0, 1fr); }
  .kk-sticky--offset { padding-top: 0; }
  .kk-grid-4 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .kk-gallery { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .kk-linkgrid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .kk-profile-hero__inner { flex-wrap: wrap; }
  .kk-profile-hero__actions { margin-left: 0; }
}
@media (max-width: 768px) {
  .kk-page-head { padding-top: 24px; }
  .kk-page-head__lead { font-size: 16px; }
  .kk-grid-2, .kk-form__grid, .kk-form__grid--3 { grid-template-columns: minmax(0, 1fr); }
  .kk-grid-4 { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 20px 14px; }
  .kk-gallery { grid-template-columns: minmax(0, 1fr); gap: 18px; }
  .kk-gallery__item--wide { grid-column: auto; }
  .kk-fieldset { padding: 18px 16px 20px; }
  .kk-form__actions .kk-btn { width: 100%; }
  .kk-auth { padding: 24px 0 48px; }
  .kk-auth__card { padding: 24px 20px; border: 0; border-radius: 0; }
  .kk-auth__title { font-size: 25px; }
  .kk-modal-board { padding: 20px 12px; gap: 20px; }
  .kk-searchbar__form { padding-top: 12px; padding-bottom: 12px; }
  .kk-searchbar .kk-btn { display: none; }
  .kk-result__title { font-size: 17px; }
  .kk-result__snippet { font-size: 15px; }
  .kk-filter { flex-wrap: nowrap; overflow-x: auto; margin-left: calc(var(--gutter) * -1); margin-right: calc(var(--gutter) * -1); padding: 0 var(--gutter); scrollbar-width: none; }
  .kk-listbar .kk-select { width: 100%; }
  .kk-profile-hero__inner { flex-direction: column; align-items: flex-start; gap: 16px; padding-top: 24px; padding-bottom: 24px; }
  .kk-profile-hero__name { font-size: 25px; }
  .kk-profile-hero__actions { width: 100%; }
  .kk-profile-hero__actions .kk-btn { flex: 1; }
  .kk-avatar--lg { width: 80px; height: 80px; font-size: 26px; }
  .kk-deflist { grid-template-columns: minmax(0, 1fr); }
  .kk-deflist dt { padding-bottom: 2px; border-bottom: 0; }
  .kk-deflist dd { padding-top: 0; }
  .kk-table--stack thead { display: none; }
  .kk-table--stack, .kk-table--stack tbody, .kk-table--stack tr, .kk-table--stack td { display: block; width: 100%; }
  .kk-table--stack tr { padding: 14px 16px; border-bottom: 1px solid var(--border-soft); }
  .kk-table--stack tbody tr:last-child { border-bottom: 0; }
  .kk-table--stack td { padding: 2px 0; border: 0; }
  .kk-table--stack td[data-label]:not(:first-child)::before { content: attr(data-label) ": "; color: var(--text-muted); font-size: var(--fs-caption); }
  .kk-table--stack.kk-table--zebra tbody tr:nth-child(even) td { background: none; }
  .kk-table-hint { display: block; }
  .kk-gate { grid-template-columns: minmax(0, 1fr); padding: 22px 20px; gap: 16px; }
  .kk-gate__icon { width: 52px; height: 52px; font-size: 22px; }
  .kk-gate__actions .kk-btn { flex: 1; }
  .kk-empty { padding: 32px 20px; }
  .kk-success { padding: 36px 0 48px; }
  .kk-success__title { font-size: 27px; }
  .kk-success__text { font-size: 16px; }
  .kk-error { padding: 40px 0 56px; }
  .kk-error__text { font-size: 16px; }
  .kk-error__search .kk-btn { display: none; }
  .kk-linkgrid { grid-template-columns: minmax(0, 1fr); }
  .kk-standalone__card { padding: 26px 20px; }
  .kk-person--lead { grid-template-columns: minmax(0, 1fr); gap: 18px; }
  .kk-person--lead .kk-person__photo { max-width: 220px; }
  .kk-person--lead .kk-person__name { font-size: 22px; }
  .kk-cookie { left: 12px; right: 12px; bottom: 12px; flex-direction: column; align-items: stretch; gap: 14px; padding: 16px; }
  .kk-cookie__actions .kk-btn { flex: 1; }
  .kk-usermenu__text { display: none; }
  .kk-lock { white-space: normal; text-align: left; line-height: 1.3; }
}

/* ---- design/joomla/cassiopeia-bridge.css ---- */
/* ===== Мост к штатной разметке Joomla 4/5 (Cassiopeia + Bootstrap 5) =====
   Стилизует то, что Joomla выводит «из коробки», без PHP-переопределений.
   Всё ограничено body.site (класс, который Joomla ставит на фронтенде). */

body.site {
  --cassiopeia-color-primary: var(--kk-blue-600);
  --cassiopeia-color-link: var(--kk-blue-600);
  --cassiopeia-color-hover: var(--kk-teal-600);
  --cassiopeia-font-family-body: var(--font-sans);
  --cassiopeia-font-family-headings: var(--font-display);
  --cassiopeia-font-weight-headings: 700;
  --bs-primary: var(--kk-blue-600);
  --bs-primary-rgb: 18, 69, 110;
  --bs-link-color: var(--kk-blue-600);
  --bs-link-color-rgb: 18, 69, 110;
  --bs-link-hover-color: var(--kk-teal-600);
  --bs-body-font-family: var(--font-sans);
  --bs-body-color: var(--kk-ink-900);
  --bs-border-color: var(--kk-line);
  --bs-border-radius: var(--r-md);
  font-family: var(--font-sans);
  color: var(--text-body);
}
body.site h1, body.site h2, body.site h3, body.site .page-header h1, body.site .page-header h2 { font-family: var(--font-display); font-weight: 700; color: var(--text-heading); }

/* Кнопки Bootstrap → кнопки ККАМЛД */
body.site .btn { border-radius: var(--r-md); font-weight: 600; font-family: var(--font-sans); padding: 10px 20px; }
body.site .btn-primary { --bs-btn-bg: var(--kk-coral-600); --bs-btn-border-color: var(--kk-coral-600); --bs-btn-hover-bg: var(--kk-coral-700); --bs-btn-hover-border-color: var(--kk-coral-700); --bs-btn-active-bg: var(--kk-coral-700); background: var(--kk-coral-600); border-color: var(--kk-coral-600); }
body.site .btn-secondary, body.site .btn-outline-primary { --bs-btn-color: var(--kk-blue-600); --bs-btn-bg: #fff; --bs-btn-border-color: var(--kk-blue-600); --bs-btn-hover-bg: var(--kk-ice-100); --bs-btn-hover-color: var(--kk-blue-600); --bs-btn-hover-border-color: var(--kk-blue-600); background: #fff; color: var(--kk-blue-600); border-color: var(--kk-blue-600); }

/* Хлебные крошки: mod_breadcrumbs */
body.site .mod-breadcrumbs { background: transparent; padding: 0; margin: 0; font-size: var(--fs-meta); }
body.site .mod-breadcrumbs .breadcrumb-item, body.site .mod-breadcrumbs .breadcrumb-item a { color: var(--text-muted); }
body.site .mod-breadcrumbs .breadcrumb-item.active { color: var(--text-body); }
body.site .mod-breadcrumbs__here, body.site .mod-breadcrumbs .divider.icon-location { display: none; }
body.site .breadcrumb-item + .breadcrumb-item::before { content: "/"; color: var(--kk-ink-300); }

/* Блог категории (com_content, вид «Блог») → сетка карточек */
body.site .com-content-category-blog__items.blog-items { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--grid-gap); }
body.site .com-content-category-blog__item.blog-item { border: 1px solid var(--border-default); border-radius: var(--r-lg); overflow: hidden; display: flex; flex-direction: column; background: #fff; margin: 0; }
body.site .blog-item .item-image { margin: 0; aspect-ratio: 16 / 9; overflow: hidden; float: none !important; }
body.site .blog-item .item-image img { width: 100%; height: 100%; object-fit: cover; }
body.site .blog-item .item-content { padding: 20px 22px 22px; display: flex; flex-direction: column; gap: 10px; flex: 1; }
body.site .blog-item .page-header h2 { font: 600 var(--fs-card-title)/1.35 var(--font-sans); margin: 0; }
body.site .blog-item .page-header h2 a { color: var(--text-body); }
body.site .blog-item .article-info { order: -1; display: flex; flex-wrap: wrap; gap: 12px; margin: 0; font-size: var(--fs-caption); color: var(--text-muted); }
body.site .blog-item .article-info dt { display: none; }
body.site .blog-item .article-info dd { margin: 0; }
body.site .blog-item .article-info .icon-calendar, body.site .blog-item .article-info .icon-folder-open { display: none; }
body.site .blog-item .category-name a { color: var(--kk-teal-600); font-weight: 600; }
body.site .blog-item p { font-size: var(--fs-small); line-height: 1.55; color: var(--text-secondary); margin: 0; }
body.site .blog-item .readmore { margin-top: auto; }
body.site .blog-item .readmore .btn { background: none; border: 0; padding: 8px 0 0; color: var(--link); font-size: 14px; }

/* Материал (com_content, вид «Материал») → типографика статьи */
body.site .com-content-article .page-header h1 { font-size: var(--fs-display); line-height: 1.14; letter-spacing: var(--tracking-display); max-width: var(--measure-prose); }
body.site .com-content-article .article-info { display: flex; flex-wrap: wrap; gap: 12px; font-size: 14px; color: var(--text-muted); margin-bottom: 18px; }
body.site .com-content-article .article-info dt { display: none; }
body.site .com-content-article .article-info dd { margin: 0; }
body.site .com-content-article .item-image, body.site .com-content-article .com-content-article__image { float: none !important; margin: 0 0 34px; border-radius: var(--r-xl); overflow: hidden; aspect-ratio: 16 / 9; }
body.site .com-content-article .item-image img { width: 100%; height: 100%; object-fit: cover; }
body.site .com-content-article__body { max-width: var(--measure-prose); font-size: var(--fs-prose); line-height: var(--lh-prose); color: var(--text-prose); }
body.site .com-content-article__body h2 { font-size: var(--fs-h2-prose); margin: 36px 0 16px; }
body.site .com-content-article__body p { margin: 0 0 20px; }
body.site .com-content-article__body blockquote { margin: 0 0 28px; padding: 24px 28px; background: var(--surface-brand); color: #fff; border-radius: var(--r-lg); font: 400 23px/1.45 var(--font-display); }
body.site .com-content-article__body a[href$=".pdf"] { display: inline-flex; align-items: center; gap: 8px; font-weight: 600; }
body.site .com-content-article__body a[href$=".pdf"]::before { content: "PDF"; display: inline-flex; align-items: center; justify-content: center; width: 20px; height: 24px; border-radius: 3px; background: var(--file-pdf); color: #fff; font: 700 8px/1 var(--font-sans); }
body.site .com-content-article .attachmentsContainer, body.site .com-content-article .attachmentsList { border: 1px solid var(--border-default); border-radius: var(--r-xl); }

/* Пагинация */
body.site .pagination { --bs-pagination-color: var(--kk-blue-600); --bs-pagination-active-bg: var(--kk-blue-600); --bs-pagination-active-border-color: var(--kk-blue-600); --bs-pagination-border-color: var(--kk-line); --bs-pagination-hover-bg: var(--kk-ice-100); gap: 6px; }
body.site .pagination .page-link { border-radius: var(--r-md) !important; min-width: 40px; text-align: center; }

/* Форма входа mod_login — если выводится в модальном окне (см. joomla/html/mod_login/kk_modal.php) */
body.site .mod-login .form-control { height: 46px; border-color: var(--border-strong); border-radius: var(--r-md); }
body.site .mod-login .form-control:focus { border-color: var(--brand-primary); box-shadow: 0 0 0 3px rgba(79, 194, 206, .35); }
body.site .mod-login .btn-primary { background: var(--kk-blue-600); border-color: var(--kk-blue-600); width: 100%; height: 48px; }
body.site .mod-login__options { list-style: none; padding: 0; display: flex; gap: 18px; font-size: 14px; }

/* Формы (Contact, RSForm, Convert Forms и т.п.) */
body.site .form-control, body.site .form-select { border-color: var(--border-strong); border-radius: var(--r-md); min-height: 46px; }
body.site .form-control:focus, body.site .form-select:focus { border-color: var(--brand-primary); box-shadow: 0 0 0 3px rgba(79, 194, 206, .35); }

/* Системные сообщения */
body.site joomla-alert, body.site .alert { border-radius: var(--r-md); }

@media (max-width: 960px) { body.site .com-content-category-blog__items.blog-items { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 768px) { body.site .com-content-category-blog__items.blog-items { grid-template-columns: minmax(0, 1fr); } body.site .com-content-article .page-header h1 { font-size: var(--fs-display); } }

/* ---- media/templates/site/kkamld/css/kk-fixes.css ---- */
/* Правки к дизайн-системе при встраивании в Joomla (шапка: модули выводятся один раз) */
@media (max-width: 768px) {
  .kk-header__inner { flex-wrap: wrap; }
  .kk-header__actions { display: flex; order: 3; flex: 0 0 100%; gap: 10px; padding: 12px 0 0; margin-top: 2px; border-top: 1px solid var(--kk-ice-150); }
  .kk-header__actions .kk-btn { height: 46px; }
  .kk-header__actions .kk-btn--primary, .kk-header__actions > :last-child { flex: 1; }
}
.kk-skip { position: absolute; left: -9999px; top: 0; background: var(--kk-navy-900, #10243A); color: #fff; padding: 10px 16px; z-index: 2000; }
.kk-skip:focus { left: 8px; top: 8px; }
/* «Все разделы: …» — первой строкой выпадающего подменю */
.kk-nav__sub .kk-nav__sub-footer-first a { font-size: var(--fs-caption); font-weight: var(--fw-semibold); color: var(--brand-primary); border-bottom: 1px solid var(--kk-ice-150); margin-bottom: 4px; }
/* Топбар без контактов: соцсети справа */
.kk-topbar__inner { justify-content: flex-end; }
/* Подвал: ссылки документов в нижней строке — в одну строку */
.kk-footer__bottom .kk-footer__links { flex-direction: row; flex-wrap: wrap; gap: 8px 22px; }
/* Контент с фиксированной шириной не должен раздвигать страницу */
body.site main img, body.site main iframe, body.site main video { max-width: 100%; height: auto; }
body.site main { min-width: 0; overflow-wrap: anywhere; }
/* Хлебные крошки: разметка mod_breadcrumbs (Joomla 5) в рамке .kk-breadcrumbs */
.kk-breadcrumbs .mod-breadcrumbs { max-width: var(--container-max); margin: 0 auto; padding: 16px var(--gutter); display: flex; flex-wrap: wrap; gap: 9px; background: transparent; border: 0; }
.kk-breadcrumbs .mod-breadcrumbs__divider, .kk-breadcrumbs .mod-breadcrumbs__here { display: none; }
.kk-breadcrumbs .mod-breadcrumbs .breadcrumb-item { padding: 0; }
.kk-breadcrumbs .mod-breadcrumbs .breadcrumb-item + .breadcrumb-item { padding-left: 0; }
.kk-breadcrumbs .mod-breadcrumbs .breadcrumb-item + .breadcrumb-item::before { padding-right: 9px; }
.kk-breadcrumbs .mod-breadcrumbs__here + .breadcrumb-item::before, .kk-breadcrumbs .mod-breadcrumbs > .breadcrumb-item:first-of-type::before { display: none; }
/* mod_breadcrumbs: убрать лишние разделители и бутстраповские отступы */
.kk-breadcrumbs .mod-breadcrumbs { padding: 16px var(--gutter) !important; margin: 0 auto !important; }
.kk-breadcrumbs .mod-breadcrumbs li:not(:last-child)::after { content: none; }
/* Пагинация Joomla 5 (nav.pagination__wrapper > ul.pagination > li.page-item > .page-link) → вид .kk-pagination.
   Bootstrap Cassiopeia в шаблоне не подключён, поэтому стили заданы полностью. */
body.site .pagination__wrapper { margin: 32px 0 0; }
body.site .pagination { display: flex; flex-wrap: wrap; gap: 6px; list-style: none; padding: 0; margin: 0; }
body.site .pagination .page-item { list-style: none; margin: 0; padding: 0; }
body.site .pagination .page-link { min-width: 40px; height: 40px; padding: 0 12px; display: inline-flex; align-items: center; justify-content: center; border: 1px solid var(--border-default); border-radius: var(--r-md); background: #fff; font-size: var(--fs-ui); line-height: 1; color: var(--link); text-decoration: none; }
body.site .pagination a.page-link:hover { background: var(--kk-ice-100); }
body.site .pagination a.page-link:focus-visible { outline: 3px solid var(--kk-teal-400); outline-offset: 2px; }
body.site .pagination .active > .page-link { background: var(--brand-primary); border-color: var(--brand-primary); color: #fff; font-weight: var(--fw-semibold); }
body.site .pagination .disabled > .page-link { color: var(--kk-ink-300); background: var(--surface-subtle); }
body.site .pagination [class^="icon-"], body.site .pagination [class*=" icon-"] { font-size: 13px; }
/* «Ещё материалы» (ссылки без карточек) в блоге категории */
body.site .items-more { margin-top: 28px; }
body.site .items-more ol { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; }
body.site .items-more li { padding: 12px 0; border-bottom: 1px solid var(--border-soft, #EDF2F5); }
body.site .items-more a { font-weight: var(--fw-semibold); }
/* Единый вид любого материала: inline-стили редактора (шрифты, цвета, выключка, отступы, ширины) игнорируются.
   Вид задают только классы дизайн-системы; новое содержимое от редактора выглядит так же, как старое. */
.kk-prose [style], .kk-page-head__lead [style], .com-content-category-blog .category-desc [style] {
  font-family: inherit !important; font-size: inherit !important; line-height: inherit !important; color: inherit !important;
  background: none !important; text-align: left !important; text-indent: 0 !important; letter-spacing: normal !important;
  width: auto !important; max-width: 100% !important; float: none !important; margin-left: 0 !important; margin-right: 0 !important; padding-left: 0 !important; padding-right: 0 !important; }
.kk-prose a[style] { color: var(--link) !important; }
.kk-prose h2[style] { font-size: var(--fs-h2-prose) !important; }
.kk-prose h3[style] { font-size: var(--fs-h4) !important; }
.kk-prose ul[style], .kk-prose ol[style] { padding-left: 24px !important; }
.kk-prose img[style], .kk-prose table[style] { width: auto !important; height: auto !important; }
.kk-prose table[style] { width: 100% !important; }
.kk-prose p, .kk-prose li { text-align: left; }
.kk-prose img, .kk-page-head__lead img { max-width: 100%; height: auto; }
.kk-prose table { display: block; max-width: 100%; overflow-x: auto; }
/* Отступ контента от подвала (пагинация, последняя секция) */
#kk-main { padding-bottom: 64px; }
@media (max-width: 768px) { #kk-main { padding-bottom: 40px; } }
/* Логотип: вертикальный знак (166×190) вместо квадратной заглушки */
.kk-brand__mark:has(img) { width: auto; height: 64px; background: none; border-radius: 0; }
.kk-brand__mark img { width: auto; height: 100%; max-width: none; }
.kk-brand--compact .kk-brand__mark:has(img) { height: 52px; }
.kk-brand--on-dark .kk-brand__mark:has(img) { height: 56px; width: auto; background: #fff; border-radius: var(--r-md); padding: 5px; }
@media (max-width: 768px) { .kk-brand__mark:has(img) { height: 46px; width: auto; border-radius: 0; } }
/* Front-end editing Joomla (кнопки «Редактировать» для вошедшего админа). Bootstrap/Cassiopeia CSS не подключены,
   поэтому оформляем сами: маленький значок в углу модуля, подсказка — по наведению. */
.visually-hidden { position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }
.kk-topbar, .kk-header__actions, .kk-nav, .kk-footer__grid > *, .kk-footer__bottom > *, .kk-searchbar, .kk-breadcrumbs, .kk-section, .kk-announce-row > * { position: relative; }
a.jmodedit { position: absolute; top: 2px; right: 2px; z-index: 30; width: 26px; height: 26px; display: inline-flex; align-items: center; justify-content: center; background: #fff; border: 1px solid var(--border-default); border-radius: 6px; font-size: 13px; line-height: 1; color: var(--brand-primary); text-decoration: none; opacity: .85; }
a.jmodedit:hover, a.jmodedit:focus-visible { opacity: 1; outline: 3px solid var(--kk-teal-400); }
[role="tooltip"] { display: none; position: absolute; top: 32px; right: 2px; z-index: 31; max-width: 280px; padding: 8px 10px; border-radius: 6px; background: var(--kk-navy-900, #10243A); color: #fff; font-size: 12px; line-height: 1.5; white-space: normal; }
a.jmodedit:hover + [role="tooltip"], a.jmodedit:focus + [role="tooltip"] { display: block; }
a.jmenuedit { display: none; }
.kk-nav li:hover > a.jmenuedit, .kk-nav li:focus-within > a.jmenuedit { display: inline-block; position: absolute; right: 2px; top: 2px; z-index: 30; font-size: 11px; color: #fff; }
/* окно входа без атрибута open никогда не показывается */
dialog.kk-modal:not([open]) { display: none !important; }

/* Мобильная шапка: логотип и «бутерброд» в одной строке, кнопки — второй */
@media (max-width: 768px) {
  .kk-header__inner .kk-brand { flex: 1 1 0; min-width: 0; }
  .kk-header__inner .kk-burger { flex: none; margin-left: 0; }
}
/* Меню «Правление» (только для членов) в боковой колонке */
.kk-sticky ul.mod-menu, .kk-sticky .mod-list { list-style: none; margin: 0; padding: 0; border: 1px solid var(--border-default); border-radius: var(--r-lg); background: #fff; }
.kk-sticky ul.mod-menu > li, .kk-sticky .mod-list > li { padding: 12px 18px; border-bottom: 1px solid var(--border-soft, #EDF2F5); font-size: var(--fs-ui); }
.kk-sticky ul.mod-menu > li:last-child, .kk-sticky .mod-list > li:last-child { border-bottom: 0; }

/* Фигуры с подписью в материалах (<figure class="kk-figure"><img><figcaption>) и карточки людей (.kk-person-card) */
.kk-prose figure.kk-figure { margin: 0 0 32px; }
.kk-prose figure.kk-figure img { display: inline-block; max-width: 100%; height: auto; border-radius: var(--r-md); margin: 0 12px 12px 0; vertical-align: top; }
.kk-prose figure.kk-figure figcaption { font-size: var(--fs-meta); line-height: 1.5; color: var(--text-caption); max-width: 640px; }
.kk-prose .kk-person-card { margin: 0 0 18px; }
.kk-prose .kk-person-card .kk-person__name { margin: 10px 0 12px; font-size: 20px; }
.kk-prose .kk-person-card .kk-deflist { margin: 0; }
.kk-prose .kk-person-card .kk-deflist dt, .kk-prose .kk-person-card .kk-deflist dd { padding: 10px 0; }
.kk-prose .kk-person-card .kk-deflist dt:nth-last-of-type(1), .kk-prose .kk-person-card .kk-deflist dd:last-of-type { border-bottom: 0; }
@media (max-width: 768px) {
  .kk-prose .kk-person-card .kk-deflist { display: block; }
  .kk-prose .kk-person-card .kk-deflist dt { padding: 12px 0 2px; border-bottom: 0; }
  .kk-prose .kk-person-card .kk-deflist dd { padding: 0 0 12px; border-bottom: 1px solid var(--border-soft); }
  .kk-prose .kk-person-card .kk-deflist dd:last-of-type { border-bottom: 0; padding-bottom: 4px; }
}

/* ---- design/tokens/icons.css (без @import FA — берётся из ядра Joomla) ---- */
/* Иконки ККАМЛД — только Font Awesome 6 из ядра Joomla 5 + знак MAX (assets/social).
   На сайте: FA уже подключён ядром (asset "fontawesome", media/system/css/joomla-fontawesome.css) — @import ниже в шаблон не переносить.
   В макетах и прототипах: локальная копия vendor/fontawesome (без CDN).
   Разметка: <span class="kk-ico fa-solid fa-lock" aria-hidden="true"></span> — kk-ico выравнивает, fa-* задаёт знак. */
.kk-ico { display: inline-block; width: 1.15em; flex-shrink: 0; text-align: center; line-height: 1; }
/* Знак MAX — моно-глиф из официального логотипа (assets/social/max.svg), цвет = currentColor */
.kk-ico-max { display: inline-block; width: 1.05em; height: 1.05em; flex-shrink: 0; background: currentColor; -webkit-mask: url("../images/social/max-glyph.svg") center / contain no-repeat; mask: url("../images/social/max-glyph.svg") center / contain no-repeat; }
.kk-social .fa-vk, .kk-social .kk-ico-max { font-size: 1.25em; }
