/* Fortuna Elite Club, стиль «Театральная программка».
   Палитра из логотипа: чёрный, бордо, золото; страницы на тёплой бумаге, шапка, подвал, билеты и акцентные блоки чёрные или бордовые.
   Пары цветов проверяются скриптом check.mjs (контраст по WCAG 2.2). */
@font-face { font-family: Inter; src: url(/assets/fonts/inter-Regular.woff) format('woff'); font-weight: 400; font-style: normal; font-display: swap; }
@font-face { font-family: Inter; src: url(/assets/fonts/inter-SemiBold.woff) format('woff'); font-weight: 600; font-style: normal; font-display: swap; }
@font-face { font-family: Lora; src: url(/assets/fonts/Lora-Variable.woff) format('woff'); font-weight: 400 700; font-style: normal; font-display: swap; }
@font-face { font-family: Lora; src: url(/assets/fonts/Lora-Italic-Variable.woff) format('woff'); font-weight: 400 700; font-style: italic; font-display: swap; }

:root {
  --paper: #eadfca;        /* фон страниц */
  --paper-2: #f4ecdc;      /* карточки на бумаге */
  --paper-3: #ddcfb2;      /* вторичные заливки */
  --ink: #1d1412;          /* текст на бумаге */
  --ink-soft: #5b4a40;     /* второстепенный текст на бумаге */
  --rule: #bba984;         /* линии на бумаге */
  --night: #0a0708;        /* чёрный логотипа */
  --night-2: #150e10;
  --wine: #8a1224;         /* бордо логотипа: заливки, линии, акцентный текст на бумаге */
  --wine-deep: #4a0a14;
  --gold: #c9a04a;         /* золото логотипа */
  --gold-soft: #e0c07a;
  --ivory: #f3ece1;
  --muted-night: #bfb3a6;
  --line-night: #3a2a2d;
  --serif: Lora, "Iowan Old Style", Georgia, "Noto Serif", "Times New Roman", serif;
  --sans: Inter, system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif;
  /* контекст «на бумаге» (по умолчанию) */
  --fg: var(--ink); --fg-soft: var(--ink-soft); --accent: var(--wine); --link: var(--wine); --link-hover: var(--ink);
  --card: var(--paper-2); --card-line: var(--rule); --focus: var(--ink);
  --btn-bg: var(--wine); --btn-fg: #fff; --btn-bd: var(--wine); --btn-bg-h: var(--wine-deep); --btn-fg-h: #fff;
  --ghost-fg: var(--ink); --ghost-bd: var(--ink);
  --gutter: 1rem;
  --max: 72rem;
  --head-h: 3.75rem;
  --fs-s: .875rem; --fs-m: 1rem; --fs-l: 1.125rem;
  --fs-h1: clamp(2rem, 5.2vw, 3.25rem); --fs-h2: clamp(1.5rem, 3.2vw, 2.125rem); --fs-h3: 1.25rem; --fs-h4: 1.125rem;
}
/* контекст «на тёмном»: шапка, подвал, билеты, бордовые и чёрные блоки */
.site-head, .site-foot, .band, .cta-final, .event, .nav-narrow nav {
  --fg: var(--ivory); --fg-soft: var(--muted-night); --accent: var(--gold-soft); --link: var(--gold-soft); --link-hover: #fff;
  --card: var(--night-2); --card-line: var(--line-night); --focus: var(--gold);
  --btn-bg: var(--gold); --btn-fg: #0a0708; --btn-bd: var(--gold); --btn-bg-h: var(--gold-soft); --btn-fg-h: #0a0708;
  --ghost-fg: var(--ivory); --ghost-bd: #8f7a52;
  color: var(--fg);
}
*, *::before, *::after { box-sizing: border-box; }
html { color-scheme: light; scroll-padding-top: calc(var(--head-h) + 1rem); -webkit-text-size-adjust: 100%; }
body { margin: 0; background: var(--paper); color: var(--fg); font: 400 var(--fs-m)/1.65 var(--sans); min-height: 100vh; display: flex; flex-direction: column; }
main { flex: 1 0 auto; }
img, video { max-width: 100%; height: auto; display: block; }
a { color: var(--link); text-underline-offset: .2em; text-decoration-thickness: 1px; }
a:hover { color: var(--link-hover); }
:focus-visible { outline: 3px solid var(--focus); outline-offset: 3px; border-radius: 2px; }
h1, h2, h3 { font-family: var(--serif); font-weight: 600; line-height: 1.15; margin: 0 0 .6em; letter-spacing: -.005em; text-wrap: balance; }
h1 { font-size: var(--fs-h1); }
h2 { font-size: var(--fs-h2); }
h3 { font-size: var(--fs-h3); }
p { margin: 0 0 1em; }
ul, ol { margin: 0 0 1em; padding-left: 1.3em; }
.wrap { width: min(100% - 2 * var(--gutter), var(--max)); margin-inline: auto; }
.skip { position: absolute; left: .5rem; top: -4rem; background: var(--gold); color: #0a0708; padding: .7rem 1rem; z-index: 100; font-weight: 600; }
.skip:focus { top: .5rem; }
.muted { color: var(--fg-soft); }

/* шапка: чёрная, низкая, золотая линия снизу */
.site-head { position: sticky; top: 0; z-index: 50; background: #000; border-bottom: 1px solid var(--gold); }
.head-row { display: flex; align-items: center; gap: 1rem; min-height: var(--head-h); }
.brand { display: flex; align-items: center; gap: .65rem; text-decoration: none; color: var(--gold); margin-right: auto; white-space: nowrap; }
.brand img { width: 3.4rem; height: auto; filter: brightness(1.7); }
.brand-name { font: 600 1.15rem/1 var(--serif); letter-spacing: .03em; }
.brand-name small { display: block; font: italic 400 .85rem/1.2 var(--serif); letter-spacing: .06em; color: var(--ivory); margin-top: .15rem; }
.nav-wide { display: none; }
.nav-wide ul { display: flex; gap: .15rem; list-style: none; margin: 0; padding: 0; }
.nav-wide a { display: block; padding: .75rem .7rem; color: var(--ivory); text-decoration: none; font-size: var(--fs-m); white-space: nowrap; border-bottom: 2px solid transparent; }
.nav-wide a:hover { color: var(--gold-soft); }
.nav-wide a[aria-current] { border-bottom-color: var(--gold); color: var(--gold-soft); }
.lang { display: flex; gap: .1rem; font-size: var(--fs-s); }
.lang a, .lang span { padding: .7rem .55rem; color: var(--muted-night); text-decoration: none; min-width: 2.5rem; text-align: center; }
.lang [aria-current] { color: var(--gold-soft); border-bottom: 2px solid var(--gold); }
.lang a:hover { color: #fff; }
.nav-narrow { position: static; }
.nav-narrow summary { list-style: none; cursor: pointer; padding: .7rem .9rem; border: 1px solid var(--gold); color: var(--gold-soft); font-weight: 600; font-size: var(--fs-m); min-height: 2.75rem; display: flex; align-items: center; }
.nav-narrow summary::-webkit-details-marker { display: none; }
.nav-narrow[open] summary { background: var(--night-2); }
.nav-narrow nav { position: absolute; left: 0; right: 0; top: 100%; background: #000; border-bottom: 1px solid var(--gold); padding: .5rem var(--gutter) 1rem; max-height: calc(100vh - var(--head-h)); overflow: auto; }
.nav-narrow ul { list-style: none; margin: 0 auto; padding: 0; max-width: var(--max); }
.nav-narrow li a { display: block; padding: .85rem .25rem; color: var(--ivory); text-decoration: none; border-bottom: 1px solid var(--line-night); font-size: var(--fs-l); }
.nav-narrow li a[aria-current] { color: var(--gold-soft); }
.nav-narrow li:last-child a { border: 0; color: var(--gold-soft); font-weight: 600; }
.login-ico { display: inline-flex; align-items: center; justify-content: center; flex: none; width: 2.75rem; height: 2.75rem; color: var(--gold-soft); border: 1px solid var(--gold); border-radius: 50%; }
.login-ico:hover { background: var(--night-2); color: #fff; }
@media (min-width: 92rem) {
  .nav-wide { display: block; }
  .nav-narrow { display: none; }
  .btn.btn-head { display: inline-flex; }
  .brand img { width: 3.4rem; }
}

/* кнопки: одна главная, остальные контурные; цвета зависят от фона */
.btn { display: inline-flex; align-items: center; justify-content: center; gap: .5rem; min-height: 3rem; padding: .7rem 1.4rem; background: var(--btn-bg); color: var(--btn-fg); border: 1px solid var(--btn-bd); border-radius: 2px; font: 600 var(--fs-m)/1.2 var(--sans); text-decoration: none; text-align: center; }
.btn:hover { background: var(--btn-bg-h); color: var(--btn-fg-h); border-color: var(--btn-bg-h); }
.btn-ghost { background: transparent; color: var(--ghost-fg); border-color: var(--ghost-bd); }
.btn-ghost:hover { background: var(--ink); color: var(--ivory); border-color: var(--ink); }
.site-head .btn-ghost:hover, .band .btn-ghost:hover, .cta-final .btn-ghost:hover, .event .btn-ghost:hover, .site-foot .btn-ghost:hover { background: var(--night-2); color: #fff; border-color: var(--gold); }
.btn.btn-head { display: none; min-height: 2.5rem; padding: .45rem 1rem; font-size: var(--fs-s); }
.btn-row { display: flex; flex-wrap: wrap; gap: .75rem; margin: 1.5rem 0 0; }
.btn-row .btn-main { flex: 1 1 100%; }
@media (min-width: 40rem) { .btn-row .btn-main { flex: 0 0 auto; } }

/* первый экран: текст на бумаге, фото справа в золотой двойной рамке */
.hero { display: grid; gap: 0; border-bottom: 1px solid var(--rule); }
.hero-photo { position: relative; aspect-ratio: 3 / 2; overflow: hidden; background: var(--paper-3); border-bottom: 6px double var(--gold); }
.hero-photo img { width: 100%; height: 100%; object-fit: cover; object-position: 50% 35%; }
.hero-copy { padding: 1.3rem var(--gutter) 2rem; }
.hero-copy h1 { font-size: clamp(1.9rem, 2.4vw + .7rem, 2.6rem); margin-bottom: .2em; color: var(--ink); hyphens: manual; overflow-wrap: normal; text-wrap: pretty; }
.hero-sub { font: italic 400 clamp(1.3rem, 3.4vw, 1.9rem)/1.3 var(--serif); color: var(--wine); margin: 0 0 1rem; }
.hero-lead { color: var(--ink); max-width: 33rem; font-size: var(--fs-l); line-height: 1.55; margin: 0 0 .8rem; }
.hero-reassure { color: var(--ink); max-width: 33rem; font-weight: 600; margin: 0 0 1.1rem; line-height: 1.5; }
@media (min-width: 62rem) {
  .hero { grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); min-height: min(38rem, calc(100vh - var(--head-h))); align-items: stretch; }
  .hero-copy { display: flex; flex-direction: column; justify-content: center; padding: 2.2rem 2.5rem 2.2rem max(var(--gutter), calc((100vw - var(--max)) / 2)); order: 1; }
  .hero-photo { order: 2; aspect-ratio: auto; border-bottom: 0; border-left: 6px double var(--gold); }
}

/* разделы */
.section { padding: clamp(2.6rem, 6vw, 4.6rem) 0; }
.section + .section { border-top: 1px solid var(--rule); }
.section-head { max-width: 40rem; margin-bottom: 2rem; }
.section-head p { color: var(--fg-soft); font-size: var(--fs-l); margin: 0; }
.orn { display: flex; align-items: center; gap: .8rem; color: var(--wine); margin: 0 0 1rem; }
.orn::before, .orn::after { content: ""; height: 1px; background: var(--wine); width: 2.2rem; opacity: .7; }
.orn i { width: .45rem; height: .45rem; background: var(--wine); transform: rotate(45deg); display: block; }
.band { background: var(--wine-deep); border-top: 1px solid var(--wine); border-bottom: 1px solid var(--wine); }
.band p { color: #eadfd2; }
.band a:not(.btn) { color: #fff; }
.band .section-head p { color: #eadfd2; }
.band + .section, .section + .band { border-top: 0; }

/* шаги вечера: настоящая последовательность, поэтому с цифрами */
.steps { list-style: none; padding: 0; margin: 0; display: grid; gap: 1.5rem; counter-reset: s; }
.steps li { counter-increment: s; display: grid; grid-template-columns: 3rem 1fr; gap: .25rem 1rem; align-items: start; }
.steps li::before { content: counter(s); font: 600 2.4rem/1 var(--serif); color: var(--wine); grid-row: 1 / span 2; }
.steps h3 { margin: 0; }
.steps p { margin: 0; color: var(--fg-soft); }
@media (min-width: 52rem) { .steps { grid-template-columns: repeat(3, 1fr); gap: 2rem; } }

/* карточки-входы */
.doors { list-style: none; padding: 0; margin: 0; display: grid; gap: .9rem; }
.door { display: block; height: 100%; padding: 1.3rem 1.3rem 1.4rem; background: var(--paper-2); border: 1px solid var(--rule); border-top: 3px solid var(--wine); text-decoration: none; color: var(--ink); }
.door:hover { background: #fbf6ea; border-top-color: var(--ink); color: var(--ink); }
.door b { display: block; font: 600 var(--fs-h3)/1.25 var(--serif); margin-bottom: .4rem; color: var(--wine); }
.door span { color: var(--ink-soft); font-size: var(--fs-m); }
@media (min-width: 40rem) { .doors { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 62rem) { .doors { grid-template-columns: repeat(4, 1fr); } }

/* фото */
.strip { display: grid; gap: .75rem; }
.strip figure { margin: 0; background: var(--paper-3); }
.strip img { width: 100%; height: 100%; object-fit: cover; }
@media (min-width: 52rem) {
  .strip { grid-template-columns: 7fr 5fr; grid-template-rows: 1fr 1fr; }
  .strip figure:first-child { grid-row: 1 / span 2; }
  .strip figure { min-height: 14rem; }
}
.more { margin-top: 1.25rem; }

/* ведущие */
.hosts { display: grid; gap: 1.5rem; }
.host { display: grid; grid-template-columns: 6.5rem 1fr; gap: 1rem; align-items: start; }
.host img { width: 6.5rem; height: 8rem; object-fit: cover; border: 1px solid var(--rule); outline: 3px double var(--gold); outline-offset: 2px; }
.host h3 { margin-bottom: .1em; }
.host .role { color: var(--wine); font-size: var(--fs-s); margin: 0 0 .5rem; }
.host p { margin: 0; color: var(--ink-soft); }
@media (min-width: 52rem) { .hosts { grid-template-columns: repeat(2, 1fr); gap: 2.5rem; } .host { grid-template-columns: 8rem 1fr; } .host img { width: 8rem; height: 10rem; } }

/* календарь: вечер выглядит как билет с отрывной частью */
.events { list-style: none; padding: 0; margin: 0; display: grid; gap: 1.4rem; }
.event { position: relative; display: grid; grid-template-columns: 5.6rem 1fr; background: var(--night); border-radius: 4px; padding: 0; }
.event::before, .event::after { content: ""; position: absolute; left: calc(5.6rem - 11px); width: 22px; height: 22px; border-radius: 50%; background: var(--paper); }
.event::before { top: -11px; }
.event::after { bottom: -11px; }
.event.is-past .date b { color: var(--muted-night); }
.date { text-align: center; border-right: 2px dashed #5a4a3a; padding: 1.2rem .4rem; align-self: stretch; }
.date b { display: block; font: 600 2.3rem/1 var(--serif); color: var(--gold-soft); }
.date span { display: block; margin-top: .3rem; font-size: var(--fs-s); color: var(--muted-night); text-transform: lowercase; }
.event > div:last-child { padding: 1.2rem 1.2rem 1.3rem; }
.event h3 { margin: 0 0 .35em; color: var(--ivory); }
.event .when { color: var(--muted-night); font-size: var(--fs-m); margin-bottom: .6rem; }
.event p { margin: 0 0 .7rem; }
.event ul { margin: 0 0 .9rem; color: var(--muted-night); }
.event details summary { cursor: pointer; color: var(--gold-soft); padding: .5rem 0; min-height: 2.75rem; display: flex; align-items: center; }
@media (min-width: 40rem) {
  .event { grid-template-columns: 8rem 1fr; }
  .event::before, .event::after { left: calc(8rem - 11px); }
  .date { padding: 1.5rem .6rem; }
  .date b { font-size: 3rem; }
  .event > div:last-child { padding: 1.5rem 1.7rem 1.6rem; }
}
.notice { padding: 1.1rem 1.25rem; background: var(--paper-2); border: 1px solid var(--rule); border-left: 3px solid var(--wine); margin: 0 0 1.5rem; }
.notice p:last-child { margin: 0; }

/* текст страницы (правила, уроки, юр. страницы) */
.page-head { padding: 2rem 0 1rem; }
.page-head .lead { font-size: var(--fs-l); color: var(--ink-soft); max-width: 40rem; margin: 0; }
.doc { padding-bottom: 3rem; }
.prose { max-width: 44rem; }
.prose h2 { margin-top: 1.7em; }
.prose h3 { margin-top: 1.6em; }
.prose blockquote { margin: 1.4em 0; padding: .9rem 1.2rem; background: var(--paper-2); border-left: 3px solid var(--wine); }
.prose blockquote p { margin: 0; }
.prose li { margin-bottom: .35em; }
.prose strong { color: var(--ink); font-weight: 600; }
.tbl { overflow-x: auto; margin: 1.4em 0; }
table { border-collapse: collapse; width: 100%; min-width: 28rem; }
th, td { text-align: left; padding: .65rem .8rem; border-bottom: 1px solid var(--rule); vertical-align: top; }
th { color: var(--wine); font-weight: 600; border-bottom-color: var(--ink); }
.crumbs ol { list-style: none; display: flex; flex-wrap: wrap; gap: .1rem .5rem; padding: 1rem 0 0; margin: 0; font-size: var(--fs-s); color: var(--ink-soft); }
.crumbs li + li::before { content: "/"; margin-right: .5rem; color: var(--rule); }
.crumbs a { color: var(--ink-soft); }
.meta { color: var(--ink-soft); font-size: var(--fs-s); margin: -.2rem 0 1.2rem; }
.badge { display: inline-block; padding: .15rem .6rem; border: 1px solid var(--wine); color: var(--wine); font-size: var(--fs-s); margin-left: .4rem; }
.toc { max-width: 44rem; background: var(--paper-2); border: 1px solid var(--rule); padding: 1rem 1.25rem; margin: 0 0 2rem; }
.toc-t { font-weight: 600; margin: 0 0 .4rem; color: var(--wine); }
.toc ol { margin: 0; padding-left: 1.2rem; }
.pn { display: grid; gap: .75rem; margin: 2.5rem 0 0; max-width: 44rem; }
.pn a { display: block; padding: 1rem 1.2rem; background: var(--paper-2); border: 1px solid var(--rule); text-decoration: none; color: var(--ink); }
.pn a:hover { border-color: var(--wine); }
.pn span { display: block; font-size: var(--fs-s); color: var(--ink-soft); }
@media (min-width: 40rem) { .pn { grid-template-columns: 1fr 1fr; } .pn-next { text-align: right; } }

/* список уроков и уровни */
.levels { list-style: none; padding: 0; margin: 0 0 2rem; display: grid; gap: .9rem; }
@media (min-width: 52rem) { .levels { grid-template-columns: repeat(2, 1fr); } }
.lessons { list-style: none; padding: 0; margin: 0 0 2rem; display: grid; gap: .6rem; counter-reset: l; }
.lessons li { counter-increment: l; }
.doc .lessons li > a:not([class]), .lessons a { display: grid; grid-template-columns: 2.4rem 1fr; gap: 0 .6rem; padding: .95rem 1.1rem; background: var(--paper-2); border: 1px solid var(--rule); text-decoration: none; color: var(--ink); }
.lessons a:hover { border-color: var(--wine); background: #fbf6ea; }
.lessons a::before { content: counter(l); grid-row: 1 / span 2; font: 600 var(--fs-h3)/1.3 var(--serif); color: var(--wine); }
.l-t { font-weight: 600; }
.l-d { color: var(--ink-soft); font-size: var(--fs-s); }
.group-title { margin-top: 2rem; }

/* вопросы */
.qa details { border-bottom: 1px solid var(--rule); }
.qa summary { cursor: pointer; padding: 1rem 2rem 1rem 0; font: 600 var(--fs-l)/1.4 var(--sans); list-style: none; position: relative; min-height: 3rem; }
.qa summary::-webkit-details-marker { display: none; }
.qa summary::after { content: "+"; position: absolute; right: .3rem; top: .8rem; font: 400 1.5rem/1 var(--sans); color: var(--wine); }
.qa details[open] summary::after { content: "\2212"; }
.qa .ans { padding: 0 0 1rem; color: var(--ink); }
.qa .ans p:last-child { margin: 0; }

/* галерея */
.gallery { display: grid; grid-template-columns: minmax(0, 1fr); gap: .9rem; }
.gallery figure { margin: 0; background: var(--paper-3); aspect-ratio: 4 / 3; overflow: hidden; }
.gallery img { width: 100%; height: 100%; object-fit: cover; display: block; }
@media (min-width: 40rem) { .gallery { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 62rem) { .gallery { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.videos { display: grid; gap: 1.5rem; }
@media (min-width: 52rem) { .videos { grid-template-columns: repeat(2, 1fr); } }
.videos video { width: 100%; background: #000; }
.videos figcaption { color: var(--ink-soft); font-size: var(--fs-s); padding-top: .4rem; }

/* контакты */
.channels { list-style: none; padding: 0; margin: 0 0 1.5rem; display: grid; gap: .75rem; }
.channels a { display: block; padding: 1rem 1.2rem; background: var(--paper-2); border: 1px solid var(--rule); text-decoration: none; color: var(--ink); }
.channels a:hover { border-color: var(--wine); }
.channels b { display: block; color: var(--wine); font-family: var(--serif); font-size: var(--fs-h3); }
.channels span { color: var(--ink-soft); font-size: var(--fs-m); }
@media (min-width: 40rem) { .channels { grid-template-columns: repeat(3, 1fr); } }

/* низ: чёрный призыв и чёрный подвал */
.cta-final { background: var(--night); text-align: center; padding: clamp(3rem, 7vw, 5rem) 0; border-top: 6px double var(--gold); }
.cta-final p { max-width: 32rem; margin-inline: auto; color: var(--muted-night); }
.cta-final .btn-row { justify-content: center; }
.site-foot { background: #000; border-top: 1px solid var(--wine); padding: 2.5rem 0 1.5rem; margin-top: 0; color: var(--muted-night); font-size: var(--fs-m); flex-shrink: 0; }
.foot-grid { display: grid; gap: 1.6rem; margin-bottom: 1.8rem; }
@media (min-width: 40rem) { .foot-grid { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 62rem) { .foot-grid { grid-template-columns: repeat(3, 1fr); } }
@media (min-width: 75rem) { .foot-grid { grid-template-columns: repeat(5, 1fr); } }
.foot-title { font: 600 var(--fs-l)/1.2 var(--serif); color: var(--gold); margin: 0 0 .6rem; }
.site-foot ul { list-style: none; padding: 0; margin: 0; }
.site-foot li a { display: inline-block; padding: .3rem 0; color: var(--ivory); text-decoration: none; }
.site-foot li a:hover { color: var(--gold-soft); text-decoration: underline; }
.foot-small { border-top: 1px solid var(--line-night); padding-top: 1rem; margin: 0 0 .4rem; font-size: var(--fs-s); }

/* плавающие кнопки: «на уровень выше» слева, «наверх» справа; компактные, непрозрачные */
.to-top-wrap, .level-up { position: fixed; bottom: 1rem; z-index: 40; }
.to-top-wrap { right: 1rem; }
.level-up { left: 1rem; }
.to-top, .level-up a, a.level-up { display: inline-flex; align-items: center; gap: .4rem; min-height: 2.75rem; padding: .5rem .9rem; background: #000; color: var(--gold-soft); border: 1px solid var(--gold); text-decoration: none; font-size: var(--fs-s); }
.to-top:hover, a.level-up:hover { background: var(--night-2); color: #fff; }
@media print { .site-head, .site-foot, .to-top-wrap, .level-up, .nav-narrow, .btn-row { display: none; } body { background: #fff; color: #000; } a { color: #000; } }
@media (prefers-reduced-motion: reduce) { * { scroll-behavior: auto !important; transition: none !important; animation: none !important; } }
@media (max-width: 30rem) { .level-up .lbl-long { display: none; } }

.hosts { list-style: none; padding: 0; }
.foot-gap { margin-top: 1rem; }
.foot-dev { border: 0; padding: 0; }
.door .count { display: block; margin-top: .6rem; color: var(--wine); font-size: var(--fs-s); }
.cta-inline { margin: 2.5rem 0 0; padding: 1.5rem; background: var(--paper-2); border: 1px solid var(--wine); border-top: 3px solid var(--wine); }
.cta-inline h2 { margin-top: 0; }
.prose .hosts { margin: 1rem 0; }

.prose, .lessons, .notice, .event { overflow-wrap: anywhere; }
.crumbs a { display: inline-block; padding: .4rem 0; }
.crumbs li { display: flex; align-items: center; }
.more a { display: inline-block; padding: .5rem 0; }
.prose p > a, .prose li > a { overflow-wrap: anywhere; }
.toc a, .prose li > a:only-child:not([class]), .doc > p > a:only-child:not(.btn), .prose p > a:only-child:not(.btn) { display: inline-block; padding: .3rem 0; }
.btn-row + .muted { margin-top: 1.5rem; }
@media (max-width: 24rem) {
  .head-row { gap: .4rem; }
  .brand-name small { display: none; }
  .brand img { width: 2.4rem; }
  .lang a, .lang span { min-width: 2.25rem; padding: .7rem .3rem; }
  .nav-narrow summary { padding: .6rem .7rem; }
  .login-ico { width: 2.5rem; height: 2.5rem; }
}
@media (max-width: 26rem) {
  .brand-name { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
  .brand img { width: 3rem; }
}
h1, h2, h3 { overflow-wrap: break-word; hyphens: auto; }

@media (min-width: 62rem) {
  .level-up { left: auto; right: 1rem; bottom: 4.4rem; }
}

/* ---- ТЗ v2: афиша, игры, фильтры, жесты ---- */
.status { display: inline-block; padding: .15rem .6rem; font: 600 var(--fs-s)/1.4 var(--sans); border: 1px solid currentColor; border-radius: 99px; }
.status-active { color: #1d5a2e; background: #e4efdc; }
.status-soon { color: var(--wine); background: var(--paper-2); }
.status-prep { color: var(--ink-soft); background: var(--paper-2); }
.games { list-style: none; padding: 0; margin: 0; display: grid; gap: .9rem; }
.game-link { display: block; height: 100%; padding: 1.2rem 1.3rem 1.3rem; background: var(--paper-2); border: 1px solid var(--rule); border-top: 3px solid var(--wine); text-decoration: none; color: var(--ink); }
.game-active .game-link { border-top-color: var(--gold); }
.game-link:hover { background: #fbf6ea; border-top-color: var(--ink); color: var(--ink); }
.game-link b { display: block; font: 600 var(--fs-h3)/1.25 var(--serif); color: var(--wine); margin: .55rem 0 .3rem; }
.game-link span:last-child { color: var(--ink-soft); font-size: var(--fs-m); }
.game-top { display: block; }
@media (min-width: 40rem) { .games { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 62rem) { .games { grid-template-columns: repeat(3, 1fr); } }
.chips { display: flex; flex-wrap: wrap; gap: .4rem; padding: 0; margin: 0 0 .9rem; list-style: none; }
.chips li { padding: .1rem .6rem; border: 1px solid var(--line-night); border-radius: 99px; font-size: var(--fs-s); color: var(--muted-night); margin: 0; }
.facts { display: grid; gap: 0; margin: 1.2rem 0 1.6rem; max-width: 40rem; border-top: 1px solid var(--rule); }
.facts > div { display: grid; grid-template-columns: 7rem 1fr; gap: .75rem; padding: .7rem 0; border-bottom: 1px solid var(--rule); }
.facts dt { color: var(--ink-soft); font-size: var(--fs-m); }
.facts dd { margin: 0; color: var(--ink); font-weight: 600; }
.quick { display: grid; gap: 1rem; margin: 0; }
.quick > div { padding: 1rem 1.1rem; border: 1px solid #6a2a35; background: rgba(0,0,0,.18); }
.quick dt { font: 600 var(--fs-l)/1.3 var(--serif); color: #fff; margin-bottom: .3rem; }
.quick dd { margin: 0; color: #eadfd2; }
@media (min-width: 52rem) { .quick { grid-template-columns: repeat(2, 1fr); } }
.lead-text { max-width: 40rem; font-size: var(--fs-l); margin: 0; }
.ticks, .plain { padding: 0; margin: 0 0 1.4rem; list-style: none; max-width: 44rem; }
.ticks li { padding: .35rem 0 .35rem 1.5rem; position: relative; }
.ticks li::before { content: ""; position: absolute; left: .2rem; top: 1rem; width: .5rem; height: .5rem; background: var(--wine); transform: rotate(45deg); }
.plain li { padding: .25rem 0; }
.filters { display: grid; gap: .8rem; margin-bottom: 1.4rem; }
.filter { border: 0; padding: 0; margin: 0; display: flex; flex-wrap: wrap; gap: .4rem; align-items: center; }
.filter legend { float: left; margin-right: .6rem; padding: 0; font-weight: 600; color: var(--ink); min-width: 4.5rem; }
.pill { position: relative; }
.pill input { position: absolute; opacity: 0; inset: 0; width: 100%; height: 100%; margin: 0; cursor: pointer; }
.pill label { display: inline-block; min-height: 2.75rem; padding: .55rem 1rem; border: 1px solid var(--ink); border-radius: 99px; background: var(--paper-2); color: var(--ink); font-size: var(--fs-m); cursor: pointer; }
.pill input:checked + label { background: var(--ink); color: var(--ivory); }
.pill input:focus-visible + label { outline: 3px solid var(--focus); outline-offset: 2px; }
.filter-note { font-size: var(--fs-s); margin: 0; }
.cal-grid { width: 100%; border-collapse: collapse; table-layout: fixed; background: var(--paper-2); border: 1px solid var(--rule); }
.cal-grid caption { text-align: left; font: 600 var(--fs-l)/1.3 var(--serif); padding: .4rem 0; color: var(--ink); }
.cal-grid th, .cal-grid td { text-align: center; padding: .45rem 0; border: 1px solid var(--rule); font-size: var(--fs-s); font-weight: 400; }
.cal-grid th { color: var(--ink-soft); font-size: var(--fs-s); }
.cal-grid td.has-event { background: var(--wine); padding: 0; }
.cal-grid td.has-event a { display: block; padding: .45rem 0; color: #fff; font-weight: 600; text-decoration: none; }
.cal-grid td.has-event a:hover, .cal-grid td.has-event a:focus-visible { background: var(--wine-deep); }
.gests { list-style: none; padding: 0; margin: 0 0 2rem; display: grid; gap: 1rem; }
@media (min-width: 52rem) { .gests { grid-template-columns: repeat(2, 1fr); } }
.gest { display: grid; grid-template-columns: 4.5rem 1fr; gap: 1rem; padding: 1rem 1.1rem; background: var(--paper-2); border: 1px solid var(--rule); border-top: 3px solid var(--wine); }
.gest-variant { border-top-style: dashed; border-top-color: var(--ink-soft); }
.gest-pic { width: 4.5rem; height: 4.5rem; background: var(--night); border-radius: 4px; display: grid; place-items: center; }
.picto { width: 3.4rem; height: 3.4rem; fill: none; stroke: var(--gold-soft); stroke-width: 3; stroke-linecap: round; stroke-linejoin: round; }
.gest h3 { margin: 0 0 .3rem; font-size: var(--fs-h4); }
.gest p { margin: 0 0 .4rem; }
.gest-meta { display: flex; flex-wrap: wrap; gap: .3rem 1rem; font-size: var(--fs-s); color: var(--ink-soft); }
.testi { list-style: none; padding: 0; margin: 0; display: grid; gap: 1rem; }
.testi blockquote { margin: 0; padding: 1rem 1.2rem; background: var(--paper-2); border-left: 3px solid var(--wine); }
.event-page .facts { margin-top: 1.5rem; }
.sticky-cta { display: none; }
@media (max-width: 51.99rem) {
  .has-cta .sticky-cta { display: block; position: fixed; left: 0; right: 0; bottom: 0; z-index: 45; padding: .6rem var(--gutter); background: #000; border-top: 1px solid var(--gold); }
  .sticky-cta .btn { width: 100%; }
  .has-cta { padding-bottom: 4.6rem; }
  .has-cta .to-top-wrap, .has-cta .level-up { bottom: 4.6rem; }
}
.cal-grid th, .cal-grid td { padding-inline: 0; overflow: hidden; }
.plain a, .doc > p > a:not(.btn), .doc li > a:not([class]) { display: inline-block; padding: .4rem 0; }
.cal-grid td.has-event a { padding: .6rem 0; }
.cal-grid { min-width: 0; }
.cal-grid th { color: var(--ink-soft); border-bottom-color: var(--rule); }
.crumbs a:hover { color: var(--ink); text-decoration-thickness: 2px; }
.qa summary:hover { color: var(--wine); }
.qa summary:hover::after { color: var(--ink); }
@media (max-width: 39.99rem) { .btn-row .btn { flex: 1 1 100%; } }
.games { grid-template-columns: minmax(0, 1fr); }
@media (min-width: 40rem) { .games { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 62rem) { .games { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.doc .steps { margin-bottom: 2.5rem; }
.doc h2 { margin-top: 2.2rem; }
.doc > h2:first-child { margin-top: 0; }
.sticky-cta :focus-visible, .to-top:focus-visible, .level-up:focus-visible, .skip:focus-visible { outline-color: var(--gold-soft); }
.skip:focus-visible { outline-color: #000; }
.sticky-cta .btn:focus-visible { outline-color: #fff; }
/* Картель */
.rcards { list-style: none; padding: 0; margin: 1.2rem 0 2rem; display: grid; gap: 1rem; max-width: none; }
@media (min-width: 52rem) { .rcards { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.rcard { padding: 1.1rem 1.2rem; background: var(--paper-2); border: 1px solid var(--rule); border-top: 3px solid var(--wine); }
.rcard-city { border-top-color: var(--gold); }
.rcard-maniac { border-top-color: var(--ink); }
.rcard h2 { margin: 0 0 .2rem; font-size: var(--fs-h3); }
.rcard .team { margin: 0 0 .7rem; color: var(--wine); font-weight: 600; font-size: var(--fs-s); }
.rcard dl { margin: 0; display: grid; gap: .6rem; }
.rcard dt { color: var(--ink-soft); font-size: var(--fs-s); }
.rcard dd { margin: 0; }
.prose-wide { max-width: none; }
.pcards { list-style: none; padding: 0; margin: 1rem 0 2rem; display: grid; gap: 0; grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr)); max-width: none; }
.pcard { display: grid; gap: .5rem; align-content: start; padding: 1.1rem; border: 1px dashed var(--ink-soft); background: var(--paper-2); margin: -1px 0 0 -1px; }
.pcard b { font: 600 var(--fs-h3)/1.2 var(--serif); color: var(--wine); }
.pcard .team { font-weight: 600; font-size: var(--fs-s); }
.sheet li { margin-bottom: .4rem; }
.form-line { display: flex; flex-wrap: wrap; gap: .5rem 1.5rem; }
.proto td, .proto th { height: 2.2rem; border: 1px solid var(--ink-soft); }
@media print {
  .print-doc .crumbs, .print-doc .meta, .print-doc .page-head p { display: none; }
  .pcard { break-inside: avoid; background: #fff; }
  .proto { min-width: 0; }
  .print-doc h2 { break-after: avoid; }
}

/* игроки и рейтинг */
.pl-grid { list-style: none; padding: 0; margin: 0 0 2rem; display: grid; gap: .6rem; grid-template-columns: repeat(3, minmax(0, 1fr)); }
@media (min-width: 24rem) { .pl-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
@media (min-width: 40rem) { .pl-grid { gap: .9rem; grid-template-columns: repeat(5, minmax(0, 1fr)); } }
@media (min-width: 62rem) { .pl-grid { grid-template-columns: repeat(6, minmax(0, 1fr)); } }
.pl-link, .doc .pl-grid .pl-link { display: flex; flex-direction: column; height: 100%; background: var(--paper-2); border: 1px solid var(--rule); border-top: 3px solid var(--wine); text-decoration: none; color: var(--ink); }
.pl-regular .pl-link { border-top-color: var(--gold); }
.pl-link:hover { background: #fbf6ea; border-top-color: var(--ink); color: var(--ink); }
.pl-pic { display: block; width: 100%; aspect-ratio: 1; overflow: hidden; background: var(--paper-3); }
.pl-pic > svg, .pl-pic > img { display: block; width: 100%; height: 100%; object-fit: cover; }
.pl-cap { display: flex; flex-direction: column; gap: .1rem; padding: .45rem .5rem .6rem; min-width: 0; }
@media (min-width: 40rem) { .pl-cap { padding: .6rem .7rem .75rem; } }
.pl-nick { font: 600 var(--fs-m)/1.25 var(--serif); color: var(--wine); overflow-wrap: anywhere; }
.pl-sub { font-size: .75rem; line-height: 1.3; color: var(--ink-soft); }
@media (min-width: 40rem) { .pl-nick { font-size: var(--fs-l); } .pl-sub { font-size: var(--fs-s); } }
.ava { flex: none; border-radius: 50%; object-fit: cover; }
.pl-inline { display: inline-flex; align-items: center; gap: .55rem; }
.pl-head { display: grid; grid-template-columns: 1fr; gap: 1.2rem; margin: 0 0 1.5rem; max-width: 40rem; }
.pl-pic-big { width: 11rem; border: 1px solid var(--rule); border-top: 3px solid var(--wine); }
.pl-info .lead { margin: .8rem 0 0; }
.pl-tags { display: flex; flex-wrap: wrap; gap: .5rem; margin: 0; padding: 0; }
.tag { display: inline-block; padding: .3rem .75rem; border: 1px solid var(--rule); background: var(--paper-2); color: var(--ink); font-size: var(--fs-s); font-weight: 600; line-height: 1.3; }
.tag-host { background: var(--wine); border-color: var(--wine); color: #fff; }
.tag-gold { border-color: var(--gold); }
@media (min-width: 40rem) { .pl-head { grid-template-columns: 11rem 1fr; align-items: start; } }
.pen-ex { display: block; font-weight: 400; font-size: var(--fs-s); }

/* подменю «Игры» */
.nav-wide li { position: relative; }
.nav-wide .sub { display: none; position: absolute; top: 100%; left: 0; z-index: 60; min-width: 15rem; flex-direction: column; gap: 0; background: #000; border: 1px solid var(--gold); padding: .25rem 0; }
.nav-wide .has-sub:hover > .sub, .nav-wide .has-sub:focus-within > .sub { display: flex; }
.nav-wide .sub a { border-bottom: 0; padding: .65rem 1rem; }
.nav-narrow .sub { margin: 0 0 .25rem 1rem; }
.nav-narrow .sub li a, .nav-narrow .sub li:last-child a { font-size: var(--fs-m); color: var(--ivory); font-weight: 400; border-bottom: 1px solid var(--line-night); }

.games { margin-bottom: 1.5rem; }

.tbl table.decks { min-width: 38rem; }
.tbl:focus-visible { outline: 3px solid var(--wine); outline-offset: 2px; }

.notice-sport { font-size: 1.1rem; border-left-width: 6px; }
.notice-sport strong { color: var(--wine); }
.secnav { margin-top: 2.5rem; padding-top: 1.5rem; border-top: 1px solid var(--rule); }
.secnav h2 { margin-top: 0; }
.door[aria-current="true"] { background: var(--paper-3); border-top-color: var(--ink); }
.door[aria-current="true"] b { color: var(--ink); }

/* иконки соцсетей (Simple Icons) и кнопки «поделиться» */
.ico { width: 1.25em; height: 1.25em; flex: none; }
.btn .ico { margin-left: -.15rem; }
.soc { list-style: none; padding: 0; margin: .9rem 0 0; display: flex; flex-wrap: wrap; gap: .6rem; }
.soc a { display: inline-flex; align-items: center; gap: .55rem; min-height: 2.75rem; padding: .35rem 1rem .35rem .35rem; border: 1px solid var(--card-line); border-radius: 999px; background: var(--card); color: var(--fg); text-decoration: none; font-weight: 600; font-size: var(--fs-m); }
.soc a:hover { border-color: var(--accent); }
.soc .ico { width: 2.05rem; height: 2.05rem; padding: .42rem; border-radius: 50%; color: #fff; background: var(--wine); box-sizing: border-box; }
.soc-tg .ico { background: #229ed9; }
.soc-ig .ico { background: radial-gradient(circle at 30% 107%, #fdf497 0%, #fd5949 45%, #d6249f 60%, #285aeb 90%); }
.soc-tt .ico { background: #000; box-shadow: inset 0 0 0 1px #444; }
.soc-wa .ico { background: #25d366; }
.soc-fb .ico { background: #1877f2; }
.soc-vb .ico { background: #7360f2; }
.site-foot .soc li a, .nav-narrow .soc li a { display: inline-flex; align-items: center; gap: .55rem; min-height: 2.75rem; border: 1px solid var(--line-night); border-radius: 999px; font-weight: 600; font-size: var(--fs-m); background: var(--night-2); color: var(--ivory); border-color: var(--line-night); padding: .3rem .9rem .3rem .3rem; }
.site-foot .soc li a:hover, .nav-narrow .soc li a:hover { border-color: var(--gold); text-decoration: none; }
.site-foot .soc { margin: 0 0 .5rem; }
.nav-narrow .soc { margin: 1rem 0 .25rem; }
.menu-book, .foot-mail { display: inline-flex !important; align-items: center; gap: .5rem; }
.follow { margin-top: 1.1rem; }
.follow p { margin: 0; font-weight: 600; }
.cta-final .soc, .cta-final .follow .soc { justify-content: center; }
.share { margin: 2rem 0; padding: 1.2rem 1.25rem; background: var(--paper-2); border: 1px solid var(--rule); border-top: 3px solid var(--gold); }
.share h2 { margin: 0 0 .2rem; font-size: var(--fs-h3); }
.share .soc { margin-bottom: 1rem; }
.share-copy { margin: 0 0 .5rem; overflow-wrap: anywhere; }
.copy-url { user-select: all; -webkit-user-select: all; display: inline-block; padding: .2rem .45rem; background: var(--paper); border: 1px dashed var(--rule); font-size: var(--fs-s); }
.share .muted { margin: 0; font-size: var(--fs-s); }
.channels a .ico-big { width: 2.6rem; height: 2.6rem; padding: .55rem; border-radius: 50%; color: #fff; background: var(--wine); box-sizing: border-box; margin-bottom: .5rem; }
.channels .soc-tg .ico-big { background: #229ed9; }
.channels .soc-ig .ico-big { background: radial-gradient(circle at 30% 107%, #fdf497 0%, #fd5949 45%, #d6249f 60%, #285aeb 90%); }
.channels .soc-tt .ico-big { background: #000; }

/* календарь афиши: месяц за месяцем, без скриптов */
.cal-wrap { max-width: 34rem; margin: 1rem 0 2rem; }
.cal-month { display: none; scroll-margin-top: calc(var(--head-h) + 1rem); }
.cal-month:target { display: block; }
.cal-slides:not(:has(.cal-month:target)) .cal-month.is-default { display: block; }
.cal-bar { display: grid; grid-template-columns: 3rem 1fr 3rem; align-items: center; gap: .4rem; margin-bottom: .5rem; }
.cal-bar h3 { margin: 0; text-align: center; font-size: var(--fs-h3); }
.cal-step { display: grid; place-items: center; min-height: 2.75rem; border: 1px solid var(--ink); color: var(--ink); text-decoration: none; font-size: 1.25rem; background: var(--paper-2); }
a.cal-step:hover, a.cal-step:focus-visible { background: var(--ink); color: var(--ivory); }
.cal-step.is-off { border-color: var(--rule); color: var(--rule); }
.cal-cap { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
.cal-grid td.has-event.is-past { background: var(--ink); }
.cal-grid td.has-event.is-past a:hover, .cal-grid td.has-event.is-past a:focus-visible { background: #000; }
.cal-list { list-style: none; padding: 0; margin: .8rem 0 0; display: grid; gap: .2rem; }
.cal-list a { display: inline-block; padding: .4rem 0; }
.cal-empty { margin: .8rem 0 0; }
.cal-legend { display: flex; flex-wrap: wrap; align-items: center; gap: .4rem .6rem; margin: 1rem 0 .2rem; font-size: var(--fs-s); color: var(--ink-soft); }
.cal-legend .key { width: 1rem; height: 1rem; display: inline-block; }
.cal-legend .key-up { background: var(--wine); }
.cal-legend .key-past { background: var(--ink); margin-left: .6rem; }
.cal-today { margin: 0; font-size: var(--fs-s); }
.cal-today a { display: inline-block; padding: .4rem 0; }
/* фото вечеров: пометки в афише и календаре (подставляет Worker, если к вечеру загружены фото) */
.cal-ph { display: inline-block; width: .5rem; height: .5rem; margin-left: .3rem; border-radius: 50%; background: var(--gold); vertical-align: middle; }
.event .ev-ph { margin-left: .7rem; color: var(--gold-soft); font-weight: 600; }
.cal-list .ev-ph { margin-left: .5rem; color: var(--wine); font-weight: 600; font-size: var(--fs-s); }
.event-page .gallery { margin: 0 0 1.5rem; }

/* статус игрока: член клуба красным, VIP чёрным */
.tag-member { background: var(--wine); border-color: var(--wine); color: #fff; }
.tag-vip { background: #000; border-color: #000; color: var(--gold-soft); }
.pl-cap .tag { display: inline-block; margin-top: .35rem; padding: .15rem .55rem; font-size: var(--fs-s); }

/* страница цен */
.prices { list-style: none; margin: 0 0 1.5rem; padding: 0; display: grid; gap: 1rem; grid-template-columns: minmax(0, 1fr); }
@media (min-width: 52rem) { .prices { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.price-card { padding: 1.2rem 1.3rem; background: var(--paper-2); border: 1px solid var(--rule); border-top: 3px solid var(--wine); }
.price-card:nth-child(3) { border-top-color: #000; }
.price-card h2 { margin: 0 0 .6rem; font-size: var(--fs-h3); }
.price-card .price { margin: 0 0 .6rem; font-family: var(--serif); font-size: var(--fs-h3); line-height: 1.2; }
.price-card .price b { font-size: 1.9rem; font-weight: 700; color: var(--wine); }
.price-card .price span { font-family: var(--sans); font-size: var(--fs-m); color: var(--ink-soft); }
.price-card p:last-child { margin-bottom: 0; }
.price-card .price-text b { font-size: 1.35rem; color: var(--ink); }

.poster { margin: 0 0 1.5rem; max-width: 26rem; }
.poster img { display: block; width: 100%; height: auto; border-radius: .5rem; }
