/* ===== sections/calendar.css ===== */
/* Календарь возможностей: список с фильтрами и страница возможности. Модные ходы раздела: огромная тонкая цифра даты и будильник, сцепленный со словом. */

/* ---------- верхняя строка: хлебные крошки и дата статусов */
.kal-bar { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: baseline; gap: var(--s-2) var(--s-5); padding: var(--s-6) 0 var(--s-4); border-bottom: 1px solid var(--rule); }
.kal-path ol { display: flex; flex-wrap: wrap; gap: var(--s-2) 0; font: var(--t-eyebrow); letter-spacing: .12em; text-transform: uppercase; color: var(--mute); }
.kal-path li + li::before { content: "/"; margin: 0 var(--s-4); color: var(--mute); }
.kal-path a { transition: color var(--d-fast) var(--ease); }
.kal-path a:hover { color: var(--ivory); }
.kal-path [aria-current] { color: var(--ivory-2); }

/* ---------- первый экран списка: «Календарь» + будильник + «возможностей» курсивом */
.kal-title { display: block; margin-top: clamp(40px, 5vw, 88px); }
.kal-title__l1 { display: flex; align-items: flex-end; font: var(--t-hero); font-size: clamp(54px, 12.4vw, 212px); letter-spacing: -.06em; }
.kal-title__w { display: block; white-space: nowrap; }
.kal-title .kal-clock { flex: none; width: .74em; max-width: 264px; margin: 0 0 -.12em .02em; filter: drop-shadow(0 18px 24px rgba(0, 0, 0, .55)); }
.kal-title__it { display: block; font: var(--t-accent); font-size: clamp(44px, 7.4vw, 128px); letter-spacing: -.02em; line-height: .9; color: var(--ivory-2); margin: .02em 0 0 2.3em; }
.kal-hero__foot { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: var(--cg); row-gap: var(--s-6); align-items: end; margin-top: clamp(32px, 3.6vw, 56px); padding-bottom: clamp(48px, 5vw, 80px); }
.kal-hero__foot .lede { grid-column: 1 / span 5; max-width: 40ch; }
.kal-sum { grid-column: 7 / -1; display: flex; justify-content: flex-end; gap: clamp(24px, 3.4vw, 56px); }
.kal-sum li { display: grid; gap: var(--s-3); align-content: start; max-width: 15em; }
.kal-sum b { font: var(--t-section); font-weight: 200; line-height: .8; letter-spacing: -.06em; }
.kal-sum .state { margin-top: var(--s-2); }
.kal-sum li > span { font: var(--t-small); font-size: 14px; color: var(--mute); }

/* ---------- фильтр: сверху итог словами, ниже ряды кнопок. Главный ряд «Что ищете» — крупные кнопки, остальные — компактные.
   Выбранная кнопка залита слоновой костью; вариант без записей при остальных фильтрах — бледный и не нажимается */
.kal-f { margin-bottom: clamp(56px, 6vw, 96px); }
.kal-f__head, .kal-f__g { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: var(--cg); align-items: baseline; }
.kal-f__head { padding: var(--s-5) 0; border-top: 1px solid var(--rule-2); border-bottom: 1px solid var(--rule); }
.kal-f__h { grid-column: 1 / span 2; font: var(--t-eyebrow); letter-spacing: .12em; text-transform: uppercase; color: var(--ivory); }
.kal-f__n { grid-column: 3 / span 8; font: var(--t-title-s); letter-spacing: -.02em; color: var(--ivory-2); }
.kal-f__n b { font-weight: inherit; color: var(--ivory); }
.kal-f__n span { color: var(--ivory); }
.kal-f__head .kal-f__reset { grid-column: 11 / -1; justify-self: end; }
.kal-f__g { align-items: center; row-gap: var(--s-2); padding: var(--s-2) 0; }
.kal-f__g--main { padding: var(--s-5) 0; margin-bottom: var(--s-3); border-bottom: 1px solid var(--rule); }
.kal-f__g:last-child { padding-bottom: var(--s-5); border-bottom: 1px solid var(--rule-2); }
.kal-f__k { grid-column: 1 / span 2; font: var(--t-eyebrow); letter-spacing: .12em; text-transform: uppercase; color: var(--ivory-2); }
.kal-f__g--main .kal-f__k { color: var(--ivory); }
.kal-f__opts { grid-column: 3 / -1; display: flex; flex-wrap: wrap; gap: var(--s-2); }
.kal-f__note { grid-column: 3 / -1; font: var(--t-small); font-size: 14px; color: var(--mute); }
.kal-f__o { position: relative; display: inline-flex; cursor: pointer; }
.kal-f__o input { position: absolute; inset: 0; width: 100%; height: 100%; margin: 0; opacity: 0; cursor: pointer; }
.kal-f__o > span { display: inline-flex; align-items: center; gap: 8px; min-height: 36px; padding: 0 14px; border: 1px solid var(--rule-2);
  font: 400 14.5px/1.1 var(--f-text); color: var(--ivory-2); white-space: nowrap;
  transition: background-color .3s var(--ease), border-color .3s var(--ease), color .3s var(--ease); }
.kal-f__g--main .kal-f__o > span { min-height: 48px; padding: 0 20px; gap: 10px; font: var(--t-ui); font-size: 16px; }
.kal-f__o small { font: var(--t-label); letter-spacing: .04em; color: var(--mute); transition: color .3s var(--ease); }
.kal-f__o:hover > span { border-color: var(--ivory); color: var(--ivory); }
.kal-f__o input:checked + span { background-color: var(--ivory); border-color: var(--ivory); color: var(--ink); }
.kal-f__o input:checked + span small { color: var(--ink-2); }
.kal-f__o input:focus-visible + span { outline: 2px solid var(--ivory); outline-offset: 3px; }
.kal-f__o input:disabled, .kal-f__o:has(input:disabled) { cursor: default; }
.kal-f__o input:disabled + span, .kal-f__o:hover input:disabled + span { border-color: var(--rule); color: var(--mute); opacity: .45; }
.kal-f__reset { padding: 0 0 2px; border: 0; background: linear-gradient(currentColor, currentColor) 0 100% / 100% 1px no-repeat; font: var(--t-nav); color: var(--ivory); cursor: pointer; }
.kal-empty { padding-bottom: var(--room); font: var(--t-lede); color: var(--ivory-2); }
.kal-empty button { border: 0; padding: 0 0 2px; background-color: transparent; font: inherit; color: var(--ivory); cursor: pointer; }

/* ---------- группы: «Можно подать» и «Приём закрыт» */
.kal-g { padding-bottom: var(--room); }
.kal-gh { display: flex; flex-wrap: wrap; align-items: baseline; gap: var(--s-2) var(--s-4); padding-bottom: var(--s-5); }
.kal-gh__t { font: var(--t-part); letter-spacing: -.045em; }
.kal-gh__n { font: var(--t-eyebrow); letter-spacing: .12em; color: var(--mute); }
.kal-gh__d { margin-left: auto; max-width: 52ch; font: var(--t-small); color: var(--ivory-2); }
.kal-gh .more { margin-left: auto; }

/* карточки открытых: первая — во всю ширину с огромной датой, остальные по две */
.kal-open { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: var(--cg); border-top: 1px solid var(--rule-2); }
.kal-c { position: relative; display: grid; gap: var(--s-4); align-content: start; justify-items: start; min-width: 0; padding: clamp(28px, 3vw, 44px) 0 clamp(36px, 3.4vw, 52px); border-bottom: 1px solid var(--rule); }
.kal-c--last { box-shadow: inset 0 2px 0 var(--red); }
.kal-c__date { display: grid; gap: var(--s-3); }
.kal-c__date b { font: var(--t-hero); font-weight: 200; font-size: clamp(76px, 8vw, 136px); line-height: .8; letter-spacing: -.07em; white-space: nowrap; }
.kal-c__date--w b { font: var(--t-title-l); font-size: clamp(34px, 3.4vw, 56px); line-height: 1; letter-spacing: -.05em; white-space: normal; }
.kal-c__date > span { font: var(--t-label); letter-spacing: .1em; text-transform: uppercase; color: var(--mute); }
.kal-c__date > .kal-dk, .kal-r__date > .kal-dk { color: var(--ivory-2); }
.kal-c .state { margin-top: var(--s-2); flex-wrap: wrap; row-gap: var(--s-1); }
.kal-c .state > span, .kal-dh__st > span { color: var(--mute); }
.kal-c .state > span::before, .kal-dh__st > span::before { content: "· "; }
.kal-c__t { font: var(--t-title-m); letter-spacing: -.035em; max-width: 18em; }
.kal-c__t a { background: linear-gradient(currentColor, currentColor) 0 100% / 0 1px no-repeat; transition: background-size .8s var(--slow); }
.kal-c__t a:hover, .kal-c__t a:focus-visible { background-size: 100% 1px; }
.kal-c__w { font: var(--t-small); color: var(--ivory-2); max-width: 46ch; }
.kal-c__f { display: grid; gap: var(--s-2); width: 100%; max-width: 46ch; }
.kal-c__f div { display: grid; grid-template-columns: 6.5em minmax(0, 1fr); gap: var(--s-3); align-items: baseline; }
.kal-c__f dt { font: var(--t-label); letter-spacing: .1em; text-transform: uppercase; color: var(--mute); }
.kal-c__f dd { font-size: 14.5px; line-height: 1.45; color: var(--ivory-2); }
.kal-c__go { display: flex; flex-wrap: wrap; align-items: center; gap: var(--s-4) var(--s-6); margin-top: var(--s-2); font-size: 14px; }

.kal-c--feat { grid-column: 1 / -1; grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: var(--cg); align-items: start; padding-block: clamp(36px, 4vw, 64px); }
.kal-c--feat .kal-c__date { grid-column: 1 / span 5; padding-top: var(--s-2); }
.kal-c--feat .kal-c__date b { font-size: clamp(120px, 17vw, 300px); line-height: .76; }
.kal-c--feat .kal-c__date--w b { font: var(--t-section); letter-spacing: -.055em; }
.kal-c--feat .kal-c__body { grid-column: 6 / -1; justify-self: stretch; display: grid; gap: var(--s-4); justify-items: start; }
.kal-c--feat .kal-c__t { font: var(--t-part); letter-spacing: -.045em; max-width: 14em; }
.kal-c--feat .kal-c__w { font: var(--t-lede); max-width: 40ch; }
.kal-c--feat .kal-c__f { grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: var(--cg); row-gap: var(--s-4); max-width: none; padding: var(--s-5) 0; margin-top: var(--s-2); border-top: 1px solid var(--rule); border-bottom: 1px solid var(--rule); }
.kal-c--feat .kal-c__f div { grid-template-columns: 1fr; gap: var(--s-1); align-content: start; }
.kal-c--feat .kal-c__go { margin-top: var(--s-3); }
.kal-c:not(.kal-c--feat):nth-child(odd) { padding-left: 0; }

/* последняя карточка в нечётном ряду — во всю ширину, чтобы справа не оставалась пустая половина:
   как главная, дата слева, текст справа, только мельче. Класс ставят сборка и calendar.js по видимым карточкам */
@media (min-width: 641px) {
  .kal-c--wide { grid-column: 1 / -1; }
  .kal-c--wide .kal-c__f { grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: var(--cg); row-gap: var(--s-3); max-width: none; }
  .kal-c--wide .kal-c__f div { grid-template-columns: 1fr; gap: var(--s-1); align-content: start; }
}
@media (min-width: 961px) {
  .kal-c--wide { grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: var(--cg); }
  .kal-c--wide > * { grid-column: 6 / -1; }
  .kal-c--wide > .kal-c__date { grid-column: 1 / span 5; grid-row: 1 / span 5; align-self: start; padding-top: var(--s-2); }
}

/* закрытые: строки тише, дата меньше и серее */
.kal-gone { border-top: 1px solid var(--rule-2); }
.kal-r { position: relative; display: grid; grid-template-columns: clamp(64px, 6.4vw, 104px) minmax(0, 4fr) minmax(0, 2.6fr) minmax(0, 2.2fr) 13.5rem;
  grid-template-areas: "date main meta ev st"; column-gap: var(--cg); align-items: start; padding: var(--s-5) 0; border-bottom: 1px solid var(--rule); color: var(--ivory-2); transition: background-color var(--d-fast) var(--ease); }
.kal-r__date { grid-area: date; display: grid; gap: var(--s-2); }
.kal-r__date b { font: var(--t-part); font-weight: 200; line-height: .8; letter-spacing: -.06em; color: var(--ivory-2); }
.kal-r__date > span { font: var(--t-label); letter-spacing: .1em; text-transform: uppercase; color: var(--mute); }
.kal-r__main { grid-area: main; display: grid; gap: var(--s-2); }
.kal-r__t { font: var(--t-title-s); letter-spacing: -.03em; color: var(--ivory-2); transition: color var(--d-fast) var(--ease); }
.kal-r__t a::after { content: ""; position: absolute; inset: 0; }
.kal-r__w { font-size: 14.5px; line-height: 1.5; color: var(--mute); max-width: 52ch; }
.kal-r__tp { font: var(--t-label); letter-spacing: .1em; text-transform: uppercase; color: var(--mute); }
.kal-r__m, .kal-r__e { display: grid; gap: var(--s-2); align-content: start; padding-top: 3px; }
.kal-r__m { grid-area: meta; }
.kal-r__e { grid-area: ev; }
.kal-r__m > span:first-child, .kal-r__e > span:last-child { font: var(--t-label); letter-spacing: .1em; text-transform: uppercase; color: var(--mute); }
.kal-r__m > span:last-child, .kal-r__e > span:first-child { font-size: 14px; line-height: 1.45; color: var(--ivory-2); }
.kal-r__st { grid-area: st; justify-self: end; padding-top: 3px; white-space: nowrap; }
.kal-r:hover .kal-r__t { color: var(--ivory); }
.kal-r:has(a:focus-visible) { outline: 2px solid var(--ivory); outline-offset: 4px; }
.kal-r__t a:focus-visible { outline: 0; }

/* ---------- подборки и материалы журнала: крупная карточка и малая со сдвигом */
.kal-reads { padding-block: var(--room); }
.kal-reads .sec-aside { color: var(--fog-ink-2); }
.kal-reads .card__t { color: var(--ink); }
.kal-reads .card__dek { color: var(--fog-ink-2); }
.kal-reads .card__pic { background: var(--fog-2); }
.kal-mat__grid { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: var(--cg); row-gap: var(--s-8); align-items: start; }
.kal-mat__grid > .card:nth-child(1) { grid-column: 1 / span 6; }
.kal-mat__grid > .card:nth-child(2) { grid-column: 8 / span 5; margin-top: var(--s-9); }
.kal-mat__grid > .card:nth-child(2):not(:last-child) { grid-column: 7 / span 3; }
.kal-mat__grid > .card:nth-child(3) { grid-column: 10 / span 3; }
.kal-mat__grid > .card:only-child { grid-column: 1 / span 7; }

/* ---------- страница возможности: огромная дата с будильником */
.kal-dh__grid { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: var(--cg); row-gap: var(--s-7); align-items: end; padding: clamp(40px, 5vw, 88px) 0 clamp(56px, 6vw, 104px); }
.kal-dh__date { grid-column: 1 / span 6; min-width: 0; }
.kal-big { display: flex; align-items: flex-end; font: var(--t-hero); font-weight: 200; font-size: clamp(150px, 21vw, 360px); line-height: .76; letter-spacing: -.07em; }
.kal-big b { font-weight: inherit; white-space: nowrap; }
.kal-big .kal-clock { flex: none; width: .56em; max-width: 264px; margin: 0 0 -.02em .03em; filter: drop-shadow(0 22px 28px rgba(0, 0, 0, .55)); }
.kal-big--w { font: var(--t-section); font-size: clamp(52px, 6.4vw, 112px); line-height: .92; letter-spacing: -.055em; }
.kal-big--w b { white-space: normal; max-width: 5.6em; }
.kal-big--w { display: block; }
.kal-big--w .kal-clock { display: inline-block; width: 1.14em; margin-left: .06em; vertical-align: -.1em; }
.kal-big__k { margin-top: var(--s-5); font: var(--t-eyebrow); letter-spacing: .12em; text-transform: uppercase; color: var(--mute); }
.kal-dh__txt { grid-column: 7 / -1; display: grid; gap: var(--s-4); justify-items: start; min-width: 0; }
.kal-dh__t { font: var(--t-section); font-size: clamp(34px, 4.2vw, 68px); line-height: 1; letter-spacing: -.05em; }
.kal-dh__st { margin-top: var(--s-2); flex-wrap: wrap; row-gap: var(--s-1); }
.kal-dh__w { max-width: 40ch; }
.kal-dh__go { display: flex; flex-wrap: wrap; align-items: center; gap: var(--s-4) var(--s-6); margin-top: var(--s-3); }

/* условия на светлой полосе */
.kal-facts { padding-block: clamp(56px, 6vw, 96px); }
.kal-facts__h { margin-bottom: var(--s-5); }
.kal-dl { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); column-gap: var(--cg); }
.kal-dl > div { display: grid; gap: var(--s-3); align-content: start; padding: var(--s-5) 0 var(--s-7); border-top: 1px solid var(--fog-rule); }
.kal-dl dt { font: var(--t-label); letter-spacing: .1em; text-transform: uppercase; color: var(--fog-mute); }
.kal-dl dd { font: var(--t-lede); color: var(--ink); max-width: 30ch; }
.kal-dl dd small { display: block; margin-top: var(--s-1); font: var(--t-small); color: var(--fog-ink-2); }
.kal-dl__tp a { color: var(--ink); }
.kal-help { display: flex; flex-wrap: wrap; align-items: baseline; gap: var(--s-2) var(--s-5); margin-top: var(--s-4); padding-top: var(--s-5); border-top: 1px solid var(--ink); }
.kal-help__k { font: var(--t-eyebrow); letter-spacing: .12em; text-transform: uppercase; color: var(--fog-mute); }
.kal-help__tp { font: var(--t-label); letter-spacing: .1em; text-transform: uppercase; color: var(--fog-ink-2); }
.kal-help__tp::after { content: " →"; }
.kal-help a { display: inline-flex; flex-wrap: wrap; align-items: baseline; gap: 0 var(--s-2); font: var(--t-body); color: var(--fog-ink-2); }
.kal-help a b { font: var(--t-title-s); letter-spacing: -.03em; color: var(--ink); background: linear-gradient(currentColor, currentColor) 0 100% / 100% 1px no-repeat; padding-bottom: 2px; transition: background-size var(--d-mid) var(--slow); }
.kal-help a:hover b { background-size: 0 1px; background-position: 100% 100%; }
.kal-help a svg { align-self: center; margin-left: var(--s-2); color: var(--ink); transition: transform var(--d-mid) var(--slow); }
.kal-help a:hover svg { transform: translateX(4px); }

/* «Ещё в календаре»: карточки календаря с главной, по три */
.kal-more__list { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); border-top: 1px solid var(--rule-2); }
.kal-more__list .opp { grid-template-rows: auto auto auto 1fr; }
.kal-more__list .opp:nth-child(n + 2) { border-left: 1px solid var(--rule); padding-left: clamp(16px, 1.8vw, 28px); }

/* ---------- ноутбук */
@media (max-width: 1180px) {
  .kal-r { grid-template-columns: clamp(64px, 8vw, 96px) minmax(0, 1fr) minmax(0, 1fr); grid-template-areas: "date main main" "date meta ev" "date st st"; row-gap: var(--s-3); }
  .kal-r__st { justify-self: start; text-align: left; }
  .kal-c--feat .kal-c__date { grid-column: 1 / span 5; }
  .kal-c--feat .kal-c__body { grid-column: 6 / -1; }
}

/* ---------- планшет */
@media (max-width: 960px) {
  .kal-hero__foot .lede, .kal-sum { grid-column: 1 / -1; }
  .kal-sum { justify-content: flex-start; }
  .kal-f__head { grid-template-columns: minmax(0, 1fr) auto; row-gap: var(--s-2); }
  .kal-f__h { grid-column: 1; }
  .kal-f__head .kal-f__reset { grid-column: 2; grid-row: 1; }
  .kal-f__n { grid-column: 1 / -1; }
  .kal-f__k { grid-column: 1 / -1; margin-bottom: var(--s-2); }
  .kal-f__opts, .kal-f__note { grid-column: 1 / -1; }
  .kal-c--feat .kal-c__date, .kal-c--feat .kal-c__body { grid-column: 1 / -1; }
  .kal-c--feat { row-gap: var(--s-6); }
  .kal-gh__d { margin-left: 0; flex-basis: 100%; }
  .kal-mat__grid > .card:nth-child(n) { grid-column: 1 / span 7; margin-top: 0; }
  .kal-mat__grid > .card:nth-child(2), .kal-mat__grid > .card:nth-child(2):not(:last-child) { grid-column: 6 / -1; }
  .kal-mat__grid > .card:nth-child(3) { grid-column: 1 / span 7; }
  .kal-dh__date, .kal-dh__txt { grid-column: 1 / -1; }
  .kal-dl { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .kal-more__list { grid-template-columns: 1fr; }
  .kal-more__list .opp:nth-child(n) { border-left: 0; padding-left: 0; }
}

/* ---------- телефон */
@media (max-width: 640px) {
  .kal-title__l1 { font-size: 12vw; }
  .kal-title .kal-clock { width: .9em; margin-bottom: -.2em; }
  .kal-title__it { font-size: 11.6vw; margin: .12em 0 0 1.1em; }
  /* итог по статусам — списком: число слева, статус и что он значит справа */
  .kal-sum { flex-direction: column; gap: var(--s-4); }
  .kal-sum li { grid-template-columns: 3.4rem minmax(0, 1fr); column-gap: var(--s-4); row-gap: var(--s-1); align-items: center; max-width: none; }
  .kal-sum b { grid-row: span 2; }
  .kal-sum .state { margin-top: 0; }
  /* ряд кнопок в одну строку и листается вбок до края экрана: фильтр занимает экран, а не полтора.
     Край экрана гаснет — видно, что кнопки идут дальше */
  .kal-f__g, .kal-f__g--main { padding: var(--s-3) 0; row-gap: 0; }
  .kal-f__g--main { margin-bottom: var(--s-1); }
  .kal-f__k { margin-bottom: 0; }
  .kal-f__opts { flex-wrap: nowrap; overflow-x: auto; overscroll-behavior-x: contain; scrollbar-width: none;
    margin: 0 calc(-1 * var(--gut)) 0 -3px; padding: var(--s-2) var(--gut) var(--s-2) 3px;
    -webkit-mask-image: linear-gradient(90deg, #000 calc(100% - 36px), transparent); mask-image: linear-gradient(90deg, #000 calc(100% - 36px), transparent); }
  .kal-f__opts::-webkit-scrollbar { display: none; }
  .kal-f__o { flex: none; }
  .kal-f__o > span { min-height: 40px; font-size: 15px; }
  .kal-f__g--main .kal-f__o > span { min-height: 46px; padding: 0 16px; font-size: 15.5px; }
  .kal-f__o input:focus-visible + span { outline-offset: -4px; }
  .kal-f__note { font-size: 13.5px; }
  .kal-open { grid-template-columns: 1fr; }
  .kal-c--feat .kal-c__date b { font-size: 36vw; }
  /* дата словами («Круглый год») размером числа не помещается в ширину экрана */
  .kal-c--feat .kal-c__date--w b { font: var(--t-section); font-size: clamp(40px, 14vw, 64px); letter-spacing: -.055em; line-height: 1; }
  .kal-c--feat .kal-c__f { grid-template-columns: 1fr; }
  .kal-c__f dd { overflow-wrap: anywhere; }   /* «фондкультурныхинициатив.рф» одним словом шире колонки */
  .kal-r { grid-template-columns: 56px minmax(0, 1fr); grid-template-areas: "date main" "date meta" "date ev" "date st"; row-gap: var(--s-2); }
  .kal-r__w { font-size: 14px; }
  .kal-r__e { display: flex; flex-wrap: wrap; align-items: baseline; gap: var(--s-1) var(--s-3); }
  .kal-r__m { gap: var(--s-1); }
  .kal-mat__grid { row-gap: var(--s-7); }
  .kal-mat__grid > .card:nth-child(n), .kal-mat__grid > .card:nth-child(2):not(:last-child) { grid-column: 1 / -1; }
  .kal-big { font-size: 40vw; }
  .kal-big--w { font-size: 14vw; }
  .kal-dl { grid-template-columns: 1fr; }
  .kal-dl > div { padding-bottom: var(--s-5); }
  .kal-help a { display: block; font-size: 15.5px; line-height: 1.5; }
  .kal-help a b { display: inline; }
  .kal-help a svg { display: inline; vertical-align: middle; }
}

/* ---------- свои события агентства («От UpSound»): красная «о» из логотипа над статусом, дата — красным */
.kal-own { display: inline-flex; align-items: center; gap: 10px; font: 500 12px/1.4 var(--f-mono); letter-spacing: .08em; text-transform: uppercase; color: var(--ivory); }
.kal-own__eye { width: 18px; height: 18px; flex: none; }
.kal-c--own .kal-c__date b { color: var(--red-ink); }
.kal-c--own .kal-own + .state { margin-top: 0; }
.kal-dh__txt .kal-own { margin-bottom: calc(-1 * var(--s-2)); }


/* ---------- страница возможности: «Подробно» — оглавление и строка проверки слева (липкие), текст справа */
.kal-txt { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: var(--cg); align-items: start; }
.kal-txt__side { grid-column: 1 / span 3; position: sticky; top: 112px; display: grid; gap: var(--s-5); }
.kal-txt__side .eyebrow { color: var(--ivory); }
.kal-txt__toc { display: grid; gap: var(--s-2); counter-reset: toc; }
.kal-txt__toc li { counter-increment: toc; display: grid; grid-template-columns: 2.4em minmax(0, 1fr); font: var(--t-small); font-size: 14.5px; }
.kal-txt__toc li::before { content: counter(toc, decimal-leading-zero); font: 400 11px/2 var(--f-mono); letter-spacing: .08em; color: var(--mute); }
.kal-txt__toc a { color: var(--ivory-2); transition: color var(--d-fast) var(--ease); }
.kal-txt__toc a:hover, .kal-txt__toc a:focus-visible { color: var(--ivory); }
.kal-txt__chk { padding-top: var(--s-4); border-top: 1px solid var(--rule); font: var(--t-small); font-size: 13.5px; line-height: 1.55; color: var(--mute); }
.kal-txt__chk a { color: var(--ivory-2); }
.kal-txt__body { grid-column: 5 / span 7; min-width: 0; font: var(--t-prose); color: #E4DCCF; counter-reset: h; }
.kal-txt__body > * + * { margin-top: 1.05em; }
.kal-txt__body h2 { counter-increment: h; display: flex; align-items: baseline; gap: .7em; margin-top: 2.2em; scroll-margin-top: 110px;
  font: 400 clamp(23px, 1.9vw, 29px)/1.25 var(--f-display); letter-spacing: -.035em; color: var(--ivory); }
.kal-txt__body h2::before { content: counter(h, decimal-leading-zero); font: 400 12px/1 var(--f-mono); letter-spacing: .08em; color: var(--mute); transform: translateY(-.35em); }
.kal-txt__body h2:first-child { margin-top: 0; }
.kal-txt__body h2 + * { margin-top: .7em; }
.kal-txt__body b, .kal-txt__body strong { font-weight: 500; color: var(--ivory); }
.kal-txt__body ul { display: grid; gap: .4em; }
.kal-txt__body ul > li { position: relative; padding-left: 28px; }
.kal-txt__body ul > li::before { content: ""; position: absolute; left: 4px; top: .82em; width: 12px; height: 1px; background: var(--mute); }
/* шаги подачи — огромные тонкие номера, как цифры дат календаря */
.kal-txt__body ol { display: grid; gap: var(--s-4); counter-reset: st; }
.kal-txt__body ol > li { counter-increment: st; position: relative; min-height: 1.7em; padding-left: 64px; }
.kal-txt__body ol > li::before { content: counter(st); position: absolute; left: 0; top: -.08em; width: 44px; font: 200 40px/1 var(--f-display); letter-spacing: -.06em; color: var(--ivory-2); }

/* вопросы: строки-раскрывашки, плюс поворачивается в крест */
.kal-faq { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: var(--cg); align-items: start; }
.kal-faq > .kal-gh__t { grid-column: 1 / span 4; }
.kal-faq__list { grid-column: 5 / -1; border-top: 1px solid var(--rule-2); }
.kal-q { border-bottom: 1px solid var(--rule); }
.kal-q summary { display: flex; justify-content: space-between; align-items: baseline; gap: var(--s-5); padding: var(--s-5) 0; cursor: pointer; list-style: none;
  font: var(--t-title-s); letter-spacing: -.03em; color: var(--ivory-2); transition: color var(--d-fast) var(--ease); }
.kal-q summary::-webkit-details-marker { display: none; }
.kal-q summary:hover, .kal-q[open] summary { color: var(--ivory); }
.kal-q summary:focus-visible { outline: 2px solid var(--ivory); outline-offset: 4px; }
.kal-q summary i { position: relative; flex: none; width: 14px; height: 14px; transition: transform var(--d-mid) var(--slow); }
.kal-q summary i::before, .kal-q summary i::after { content: ""; position: absolute; left: 0; top: 50%; width: 100%; height: 1px; background: currentColor; }
.kal-q summary i::after { transform: rotate(90deg); }
.kal-q[open] summary i { transform: rotate(45deg); }
.kal-q p { max-width: 62ch; padding-bottom: var(--s-6); font: var(--t-lede); font-size: clamp(16px, 1.25vw, 18px); color: var(--ivory-2); }

@media (max-width: 960px) {
  .kal-txt__side, .kal-txt__body, .kal-faq > .kal-gh__t, .kal-faq__list { grid-column: 1 / -1; }
  .kal-txt__side { position: static; margin-bottom: var(--s-7); }
  .kal-faq > .kal-gh__t { margin-bottom: var(--s-5); }
}
@media (max-width: 640px) {
  .kal-txt__body { font-size: 17.5px; }
  .kal-txt__body ol > li { padding-left: 48px; }
  .kal-txt__body ol > li::before { font-size: 32px; width: 36px; }
}

/* ---------- подборки: «Что ищете» — ссылки на свои страницы (/kalendar/granty/ …), выглядят как кнопки фильтра; текущая залита */
.kal-f__o--a > span { text-decoration: none; }
.kal-f__o--a:focus-visible { outline: 0; }
.kal-f__o--a:focus-visible > span { outline: 2px solid var(--ivory); outline-offset: 3px; }
.kal-f__o--a[aria-current="page"] > span { background-color: var(--ivory); border-color: var(--ivory); color: var(--ink); }
.kal-f__o--a[aria-current="page"] small { color: var(--ink-2); }
/* заголовок подборки: длинное слово мельче (--k ставит сборка), курсивная строка — мельче, чем «возможностей» */
.kal-title--hub .kal-title__l1 { font-size: clamp(40px, calc(12.4vw * var(--k, 1)), calc(212px * var(--k, 1))); }
.kal-title--hub .kal-title__it { font-size: clamp(30px, 5.2vw, 88px); margin-left: 1.6em; max-width: 16em; }
/* переход между подборками — новая страница; в браузерах с View Transitions она сменяется плавно, без белой вспышки */
@media (prefers-reduced-motion: no-preference) {
  @view-transition { navigation: auto; }
  ::view-transition-old(root), ::view-transition-new(root) { animation-duration: .28s; }
}
@media (max-width: 640px) {
  .kal-title--hub .kal-title__l1 { font-size: calc(12vw * var(--k, 1)); }
  .kal-title--hub .kal-title__it { font-size: 8.4vw; margin-left: .8em; }
}
/* без JS мгновенные фильтры не работают: остаются только подборки-ссылки, карточки видны все */
.no-js .kal-f > :not(.kal-f__g--main) { display: none; }
.no-js .kal-f .kal-f__g--main { border-top: 1px solid var(--rule-2); }
