PageSourceSearch

http://spbopera.ru/?plays=1&concerts=1&tours=1&AGE=6&month=10&YEAR=2026&_aff_set=1

html spbopera.ru collected 2026-10-02 14:35:01 UTC 287,997 bytes, 2,275 lines download raw bytes

1<!DOCTYPE html><html lang="ru"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta property="og:image" content="https://www.spbopera.ru/local/templates/opera/html/img/theme/section-mp-one-bg.jpg"/><title>Официальный сайт театра «Санктъ-Петербургъ Опера»</title><link href="/favicon.ico" rel="icon"><!--<link rel="stylesheet" href="https://apit.bileter.ru/css/apit.css" type="text/css" media="all" /><!--<link rel="stylesheet" href="https://apit.bileter.ru/css/spbopera.ru.css" media="all" /> -->
vendor: 60 bytes, line 1
1<script src="https://www.google.com/recaptcha/api.js?render=
16LekUokgAAAAAFZkZXzToGdR5IZSOohbe1SaUKYD
vendor: 11 bytes, line 1
1"></script>
1<meta name="proculture-verification" content="300c188aa15b86f86796f53aa35f1890" /><meta name="yandex-verification" content="e01c829dd1b53e44" /><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><meta name="robots" content="index, follow" /><meta name="keywords" content="Театр «Санктъ-Петербургъ Опера»" /><meta name="description" content="«Камерный музыкальный театр “Санктъ-Петербургъ Опера”». Галерная улица, 33 (Особняк барона фон Дервиза). Сведения о репертуаре, ценах. Расписание и покупка билетов на сайте. ☎️ +7 (812) 312-39-82" /><link rel="canonical" href="https://spbopera.ru/" /><link href="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.9.0/slick.css" type="text/css" rel="stylesheet" /><link href="/local/templates/opera/components/bitrix/news.list/poster_list_new/style.css?17810706802651" type="text/css" rel="stylesheet" /><link href="/local/templates/opera/html/libs/fancybox-master/dist/jquery.fancybox.min.css?165527143812795" type="text/css" data-template-style="true" rel="stylesheet" /><link href="/local/templates/opera/html/libs/malihu-custom-scrollbar/jquery.mCustomScrollbar.min.css?165527143842839" type="text/css" data-template-style="true" rel="stylesheet" /><link href="/local/templates/opera/html/css/main.css?1784013315305684" type="text/css" data-template-style="true" rel="stylesheet" /><link href="/local/templates/opera/html/css/new-style.css?179006249382256" type="text/css" data-template-style="true" rel="stylesheet" /><link href="/local/templates/opera/html/css/custom.css?17866161377678" type="text/css" data-template-style="true" rel="stylesheet" /><link href="/local/templates/opera/components/bitrix/search.title/.default_new/style.css?17566855812108" type="text/css" data-template-style="true" rel="stylesheet" /><link href="/local/templates/opera/template_styles.css?176449831921459" type="text/css" data-template-style="true" rel="stylesheet" /><link href="/local/templates/opera/html/libs/select2-4.0.13/select2.min.css?158018768214966" type="text/css" data-template-style="true" rel="stylesheet" />
1<script type="text/javascript">if(!window.BX)window.BX={};if(!window.BX.message)window.BX.message=function(mess){if(typeof mess==='object'){for(let i in mess) {BX.message[i]=mess[i];}return true;}};</script>
1<script type="text/javascript">(window.BX||top.BX).message({'JS_CORE_LOADING':'Загрузка...','JS_CORE_NO_DATA':'- Нет данных -','JS_CORE_WINDOW_CLOSE':'Закрыть','JS_CORE_WINDOW_EXPAND':'Развернуть','JS_CORE_WINDOW_NARROW':'Свернуть в окно','JS_CORE_WINDOW_SAVE':'Сохранить','JS_CORE_WINDOW_CANCEL':'Отменить','JS_CORE_WINDOW_CONTINUE':'Продолжить','JS_CORE_H':'ч','JS_CORE_M':'м','JS_CORE_S':'с','JSADM_AI_HIDE_EXTRA':'Скрыть лишние','JSADM_AI_ALL_NOTIF':'Показать все','JSADM_AUTH_REQ':'Требуется авторизация!','JS_CORE_WINDOW_AUTH':'Войти','JS_CORE_IMAGE_FULL':'Полный размер'});</script>
1<script type="text/javascript" src="/bitrix/js/main/core/core.js?1655271422565242"></script>
1<script>BX.setJSList(['/bitrix/js/main/core/core_ajax.js','/bitrix/js/main/core/core_promise.js','/bitrix/js/main/polyfill/promise/js/promise.js','/bitrix/js/main/loadext/loadext.js','/bitrix/js/main/loadext/extension.js','/bitrix/js/main/polyfill/promise/js/promise.js','/bitrix/js/main/polyfill/find/js/find.js','/bitrix/js/main/polyfill/includes/js/includes.js','/bitrix/js/main/polyfill/matches/js/matches.js','/bitrix/js/ui/polyfill/closest/js/closest.js','/bitrix/js/main/polyfill/fill/main.polyfill.fill.js','/bitrix/js/main/polyfill/find/js/find.js','/bitrix/js/main/polyfill/matches/js/matches.js','/bitrix/js/main/polyfill/core/dist/polyfill.bundle.js','/bitrix/js/main/core/core.js','/bitrix/js/main/polyfill/intersectionobserver/js/intersectionobserver.js','/bitrix/js/main/lazyload/dist/lazyload.bundle.js','/bitrix/js/main/polyfill/core/dist/polyfill.bundle.js','/bitrix/js/main/parambag/dist/parambag.bundle.js']);
2BX.setCSSList(['/bitrix/js/main/lazyload/dist/lazyload.bundle.css','/bitrix/js/main/parambag/dist/parambag.bundle.css']);</script>
2<script type="text/javascript">(window.BX||top.BX).message({'LANGUAGE_ID':'ru','FORMAT_DATE':'DD.MM.YYYY','FORMAT_DATETIME':'DD.MM.YYYY HH:MI:SS','COOKIE_PREFIX':'BITRIX_SM','SERVER_TZ_OFFSET':'10800','UTF_MODE':'Y','SITE_ID':'s1','SITE_DIR':'/','USER_ID':'','SERVER_TIME':'1790951696','USER_TZ_OFFSET':'0','USER_TZ_AUTO':'Y','bitrix_sessid':'a600ead4275a370d615c70ff6ebbe77e'});</script>
2<script type="text/javascript" src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
2<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.9.0/slick.js"></script>
2<script type="text/javascript" src="https://api-maps.yandex.ru/2.1/?apikey=6ef172ee-88c5-4e71-b501-6d2b7099dca7&lang=ru_RU"></script>
2<script type="text/javascript" src="/local/templates/opera/html/libs/select2-4.0.13/select2.full.min.js?158018408279212"></script>
2<script type="text/javascript" src="/local/templates/opera/html/js/new-script.js?179028838918505"></script>
2<script type="text/javascript" src="/local/templates/opera/html/js/dropDownSelect.js?17562022102941"></script>
2<script type="text/javascript" src="/local/templates/opera/html/libs/jquery-mask/jquery.mask.js?165527143823177"></script>
2<script type="text/javascript" src="/local/templates/opera/html/libs/malihu-custom-scrollbar/jquery.mCustomScrollbar.concat.min.js?165527143845479"></script>
2<script type="text/javascript" src="/local/templates/opera/html/libs/fancybox-master/dist/jquery.fancybox.min.js?165527143868253"></script>
2<script type="text/javascript" src="/local/templates/opera/html/js/form.js?17239596226343"></script>
2<script type="text/javascript" src="/local/templates/opera/html/js/custom.js?178403106626807"></script>
2<script type="text/javascript" src="/local/templates/opera/html/js/uhpv-full.min.js?179006405244351"></script>
2<script type="text/javascript" src="/bitrix/components/bitrix/search.title/script.js?16552714329847"></script>
2<script type="text/javascript">var _ba = _ba || []; _ba.push(["aid", "fefc112b20ff39882c86ea19531645b7"]); _ba.push(["host", "spbopera.ru"]); (function() {var ba = document.createElement("script"); ba.type = "text/javascript"; ba.async = true;ba.src = (document.location.protocol == "https:" ? "https://" : "http://") + "bitrix.info/ba.js";var s = document.getElementsByTagName("script")[0];s.parentNode.insertBefore(ba, s);})();</script>
2<script>(function () {
3var migrationCookie = 'special_mode_cookie_migrated_v3=1';
4if (document.cookie.indexOf(migrationCookie) === -1) {
5document.cookie = 'special=; Max-Age=0; path=/; SameSite=Lax';
6document.cookie = migrationCookie + '; Max-Age=31536000; path=/; SameSite=Lax';
7}})();</script>
7<script type="text/javascript">(function(d, w) {
8d.addEventListener("DOMContentLoaded", function() {
9var script = document.createElement('script');
10script.type = 'text/javascript';
11script.src = 'https://afisha.ru/wl/embed/entry.js?v=' + Date.now();
12script.async = true;
13script.onload = function() {
14w.listimInit(function() {
15w.listimWidget = new ListimWidget(473, 'events');
16});
17};
18document.head.appendChild(script);
19}, false);
20})(document, window);</script>
20<script
21widget-key="0bb37c01-1f36-4ecd-97f9-790232fb45e2"
22src="https://afisha.ru/w/afishaWidgetManager.global.js"
23></script>
23<!-- Google tag (gtag.js) -->
vendor: 63 bytes, line 23
23<script async src="https://www.googletagmanager.com/gtag/js?id=
23G-H27BL1EVG6
vendor: 11 bytes, line 23
23"></script>
23<script>
vendor: 126 bytes, lines 23-25
23window.dataLayer = window.dataLayer || [];
24function gtag(){dataLayer.push(arguments);}gtag('js', new Date());
25gtag('config', '
25G-H27BL1EVG6
vendor: 3 bytes, line 25
25');
25</script>
25<!-- Google Tag Manager -->
25<script>
vendor: 327 bytes, lines 25-29
25(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
26new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
27j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
28'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
29})(window,document,'script','dataLayer','
29GTM-KTMFQST
vendor: 3 bytes, line 29
29');
29</script>
29<!-- End Google Tag Manager --><!-- shema -->
29<script type="application/ld+json">{
30"@context": "http://schema.org",
31"@type": "ImageObject",
32"contentUrl": "https://www.spbopera.ru/local/templates/opera/html/img/theme/section-mp-one-bg.jpg"
33}</script>
33</head><body class="page page--main body_ru"><!-- Google Tag Manager (noscript) -->
vendor: 67 bytes, line 33
33<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
33GTM-KTMFQST
vendor: 82 bytes, lines 33-34
33"
34height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
34<!-- End Google Tag Manager (noscript) --><div id="panel"></div><div style="display: none" itemscope itemtype="http://schema.org/Organization"><div itemprop="name">Театр «Санктъ-Петербургъ Опера»</div><link itemprop="url" href="https://spbopera.ru"><div itemprop="address" itemscope itemtype="https://schema.org/PostalAddress"><span itemprop="postalCode">190000</span>,<span itemprop="addressCountry">Россия</span>,<span itemprop="addressRegion">Ленинградская</span>,<span itemprop="addressLocality">Санкт-Петербург</span>,<span itemprop="streetAddress">Галерная ул., 33</span></div><div><a itemprop="telephone" href="tel:+79999999999">+7 (812) 312-39-82</a></div><div><a itemprop="email" href="mailto:[email protected]">[email protected]</a></div></div><div class="page-inner"><div class="mobile-menu-block"><div class="mobile-menu-top-block"><div class="mobile-menu-top-logo-block"><div class="logo-wrapper"><a href="javascript:void(0);" class="logo"><div class="logo-img ru"><img src="/local/templates/opera/html/img/svg/spbopera-logo.svg" alt="img"></div></a></div></div><div class="mobile-menu-top-content"><div class="mobile-menu-top-content-top"><div class="mobile-menu-top-content-top-left"><div class="mobile-address-block">Санкт-Петербург, Галерная ул., 33</div></div><div class="mobile-menu-top-content-top-right"><div class="topline-disabled-link-block"><a href="/disabled_info/" class="topline-disabled-link"></a></div><a href="#" class="mobile-menu-close-btn"></a></div></div><div class="mobile-menu-top-content-bottom"><div class="topline-mobile-time-block"><div class="topline-mobile-time">Касса: 12:00–19:00 <br class="d-block d-sm-none"> Обед: 15:00–16:00</div></div><div class="topline-font-link-block"><a href="javascript:void(0)" class="topline-font-link js-special-button"><img src="/local/templates/opera/html/img/new/icon-header-disabled.svg" alt="Переключение режима для слабовидящих"></a></div></div></div></div><div class="mobile-search-block"><form action="/search/" class="mobile-search-form"><div class="input-wrapper"><input type="text" name="q" placeholder="Поиск" autocomplete="off"></div><button type="submit"></button></form></div><div class="mobile-menu-panel"><nav class="mobile-menu"> <ul> <li class="root_menu ">
35<a href="/viewers/">Для зрителей</a> <ul>
36<li><a href="/afisha/prices_and_categories/">Стоимость билетов и льготы</a></li>
37<li><a href="/novosty/2021-9/605-35-j-sezon-pravila-poseenid18f-sankty-pe/">Правила посещения театра</a></li>
38<li><a href="/disabled_info/">Доступная среда</a></li>
39<li><a href="/afisha/refund/">Возврат билетов</a></li>
40<li><a href="/about/excursion/">Экскурсии</a></li>
41<li><a href="/photo/">Заказать мероприятие</a></li>
42<li><a href="/afisha/certificates/">Подарочные сертификаты</a></li> </ul> </li> <li class="root_menu ">
43<a href="/afisha/">Афиша</a> </li> <li class="root_menu ">
44<a href="/repertuar/">Репертуар</a> </li> <li class="root_menu ">
45<a href="/novosty/">Новости</a> </li> <li class="root_menu ">
46<a href="/about/">О театре</a> <ul>
47<li><a href="/about/our_story/">История театра</a></li>
48<li><a href="/about/second_stage/">Вторая сцена</a></li>
49<li><a href="/about/management/">Администрация</a></li>
50<li><a href="/about/partners/">Партнеры</a></li>
51<li><a href="/about/tours/">Гастроли</a></li>
52<li><a href="/about/media/">Правила аккредитации СМИ</a></li>
53<li><a href="/about/reports/">Документы</a></li>
54<li><a href="https://3dtour.spbopera.ru/">3D-тур</a></li>
55<li><a href="https://www.spbopera.ru/about/media/#materials">Логотипы</a></li> </ul> </li> <li class="root_menu ">
56<a href="/troupe/">Труппа</a> </li> <li class="root_menu ">
57<a href="/contacts/">Контакты</a> </li>
58</ul></nav></div><div class="mobile-menu-bottom"><div class="topline-soc"><a rel=”nofollow” href="https://vk.ru/spbopera" class="topline-link topline-soc-link--vk"></a>
58<!--<a rel=”nofollow” href="https://t.me/spboperatheatre" class="topline-link topline-soc-link--telegram"></a> --><!-- <a rel=”nofollow” href="https://www.youtube.com/channel/UCi_plOjOgnUZRrVYJTmxLpw"
59class="topline-link topline-soc-link--youtube"></a> --><a rel=”nofollow” href="https://ok.ru/spbopera" class="topline-link topline-soc-link--od"></a><!-- <a href="https://twitter.com/spboperatheatre/" class="topline-link topline-soc-link--twitter"></a> --><a rel=”nofollow”
60href="https://yandex.ru/maps/org/spb_gbuk_kamerny_muzykalny_teatr_sankt_peterburg_opera/1069830877/ "
61class="topline-link topline-soc-link--yandex"></a><a rel=”nofollow” href="https://max.ru/spbopera" class="topline-link topline-soc-link--max"></a></div></div></div><!-- unified header for ALL pages --><div class="topline-block topline-block--new"><div class="topline"><div class="topline-logo-block"><div class="logo-wrapper"><a href="javascript:void(0);" class="logo"><div class="logo-img ru"><img src="/local/templates/opera/html/img/svg/spbopera-logo.svg" alt="img"></div></a></div></div><div class="topline-content"><div class="topline-content-top"><div class="topline-content-top-left"><div class="topline-address-time"><div class="topline-address-block"><div class="topline-address"><a target="_blank" href="https://yandex.com.ge/maps/-/CCUZEPuYHD" style="color: #219653;">Санкт-Петербург, Галерная ул., 33</a></div></div><div class="topline-time-block"><div class="topline-time">Касса: 12:00–19:00 <br class="d-block d-sm-none"> Обед: 15:00–16:00</div></div></div><div class="topline-phone-soc"><div class="topline-phone-block"><a href="tel:+78123123982" class="topline-phone">+7 (812) 312-39-82</a></div><div class="topline-soc"><a rel="nofollow" href="https://vk.ru/spbopera" class="topline-link topline-soc-link--vk"></a><!--<a rel="nofollow" href="https://t.me/spboperatheatre" class="topline-link topline-soc-link--telegram"></a> --><a rel="nofollow" href="https://ok.ru/spbopera" class="topline-link topline-soc-link--od"></a><a rel="nofollow" href="https://yandex.ru/maps/org/spb_gbuk_kamerny_muzykalny_teatr_sankt_peterburg_opera/1069830877/" class="topline-link topline-soc-link--yandex"></a><a rel=”nofollow” href="https://max.ru/spbopera" class="topline-link topline-soc-link--max"></a></div></div></div><div class="topline-content-top-right"><div class="top-search-block"><!-- кнопка открытия поиска --><a class="top-search-btn-new"></a></div><div class="topline-font-link-block"><a href="/afisha/certificates/" class="topline-font-link"><img src="/upload/img/Gift_certificates.png" alt=""></a></div><div class="topline-disabled-link-block"><a href="/disabled_info/" class="topline-disabled-link"></a></div><div class="topline-font-link-block"><a href="javascript:void(0)" id="specialButton" class="topline-font-link js-special-button"><img src="/local/templates/opera/html/img/new/icon-header-disabled.svg" alt="Переключение режима для слабовидящих"></a></div><div class="topline-phone-block"><a href="tel:+78123123982" class="topline-phone">+7 (812) 312-39-82</a></div><div class="topline-lang-panel"><a href="#" class="current-lang">
61Ru</a><div class="topline-lang-dropdown"></div></div><a href='#' class="mobile-menu-btn"></a></div></div><div class="topline-content-bottom"><nav class="topmenu topmenu--new"> <ul> <li class="root_menu "> <a href="/viewers/">Для зрителей</a> <div class="topmenu__submenu"> <div class="topmenu__submenu-container"> <div class="topmenu__submenu-item"> <a href="/afisha/prices_and_categories/">Стоимость билетов и льготы</a> </div> <div class="topmenu__submenu-item"> <a href="/novosty/2021-9/605-35-j-sezon-pravila-poseenid18f-sankty-pe/">Правила посещения театра</a> </div> <div class="topmenu__submenu-item"> <a href="/disabled_info/">Доступная среда</a> </div> <div class="topmenu__submenu-item"> <a href="/afisha/refund/">Возврат билетов</a> </div> <div class="topmenu__submenu-item"> <a href="/about/excursion/">Экскурсии</a> </div> <div class="topmenu__submenu-item"> <a href="/photo/">Заказать мероприятие</a> </div> <div class="topmenu__submenu-item"> <a href="/afisha/certificates/">Подарочные сертификаты</a> </div> </div> </div> </li> <li class="root_menu "> <a href="/afisha/">Афиша</a> </li> <li class="root_menu "> <a href="/repertuar/">Репертуар</a> </li> <li class="root_menu "> <a href="/novosty/">Новости</a> </li> <li class="root_menu "> <a href="/about/">О театре</a> <div class="topmenu__submenu"> <div class="topmenu__submenu-container"> <div class="topmenu__submenu-item"> <a href="/about/our_story/">История театра</a> </div> <div class="topmenu__submenu-item"> <a href="/about/second_stage/">Вторая сцена</a> </div> <div class="topmenu__submenu-item"> <a href="/about/management/">Администрация</a> </div> <div class="topmenu__submenu-item"> <a href="/about/partners/">Партнеры</a> </div> <div class="topmenu__submenu-item"> <a href="/about/tours/">Гастроли</a> </div> <div class="topmenu__submenu-item"> <a href="/about/media/">Правила аккредитации СМИ</a> </div> <div class="topmenu__submenu-item"> <a href="/about/reports/">Документы</a> </div> <div class="topmenu__submenu-item"> <a href="https://3dtour.spbopera.ru/">3D-тур</a> </div> <div class="topmenu__submenu-item"> <a href="https://www.spbopera.ru/about/media/#materials">Логотипы</a> </div> </div> </div> </li> <li class="root_menu "> <a href="/troupe/">Труппа</a> </li> <li class="root_menu "> <a href="/contacts/">Контакты</a> </li> </ul></nav><div class="topline-address-time topline-address-time--mobile"><div class="topline-address-block topline-address-block--mobile"><div class="topline-address"><a target="_blank" href="https://yandex.com.ge/maps/-/CCUZEPuYHD" style="color: #219653;">Санкт-Петербург, Галерная ул., 33</a></div></div><div class="topline-time-block topline-time-block--mobile"><div class="topline-time topline-time--mobile">Касса: 12:00–19:00 <br class="d-block d-sm-none"> Обед: 15:00–16:00</div></div></div><div class="topline-buy-btn-block"><a href="/afisha/" class="topline-buy-btn green-btn popup-btn-1">Купить билет</a></div></div></div></div></div><!-- окно поиска (всегда одно на странице) --><div class="new-search-window"><div id="search-results" class="new-search-window__container"> <h2 class="new-search-window__heading">Поиск</h2> <div class="new-search-window__form-wrapper"> <form action="/search/" class="new-search-window__form" onsubmit="return false;"> <div class="new-search-window__form-input-wrapper"> <input id="new-search-input" class="new-search-window__form-input" type="text" name="q"
62placeholder="Поиск по сайту" autocomplete="off" /> </div> </form> <button class="new-search-window__form-close" type="button" onclick="document.getElementById('new-search-input').value=''; document.getElementById('new-search-window__results').innerHTML='';"> <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M17 7L7 17M7 7L17 17" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/> </svg> </button> </div> <span id="new-search-window__found-counter" class="new-search-window__found-counter" style="display:none"></span> <div id="new-search-window__results" class="new-search-window__results"></div></div>
62<script>BX.ready(function(){
63var ajaxUrl = '/';
64var input = BX('new-search-input');
65var resultsContainer = BX('new-search-window__results');
66var counterNode = BX('new-search-window__found-counter');
67var siteLang = 'ru';
68var siteId = 's1';
69var timer = null;
70function buildSearchUrl(q) {
71var base = '/search/';
72var url = base + '?q=' + encodeURIComponent(q);
73if (siteId) url += '&site_id=' + encodeURIComponent(siteId);
74if (siteLang) url += '&site_lang=' + encodeURIComponent(siteLang);
75return url;
76}function doSearch(q)
77{
78if (q.length < 2)
79{
80resultsContainer.innerHTML = '';
81counterNode.style.display = 'none';
82counterNode.innerText = '';
83return;
84}BX.ajax({
85url: ajaxUrl,
86method: 'POST',
87data: {
88q: q,
89ajax_call: 'y',
90sessid: BX.bitrix_sessid(),
91site_id: siteId,
92site_lang: siteLang,
93INPUT_ID: 'new-search-input'
94},
95dataType: 'html',
96onsuccess: function(result)
97{
98resultsContainer.innerHTML = result;
99var found = resultsContainer.querySelector('.new-search-window__found-counter');
100if (found) {
101counterNode.style.display = 'inline-block';
102counterNode.innerHTML = found.innerHTML;
103found.remove();
104}else {
105counterNode.style.display = 'none';
106counterNode.innerText = '';
107}},
108onfailure: function()
109{
110resultsContainer.innerHTML = '<div class="new-search-window__no-results">Ошибка запроса</div>';
111counterNode.style.display = 'none';
112counterNode.innerText = '';
113}});
114}BX.bind(input, 'input', function(){
115var q = input.value || '';
116clearTimeout(timer);
117timer = setTimeout(function(){ doSearch(q); }, 250);
118});
119BX.bind(input, 'keydown', function(e){
120var key = e.key || e.keyCode;
121if (key === 'Enter' || key === 13) {
122e.preventDefault();
123var q = (input.value || '').trim();
124if (q.length === 0) return;
125window.location.href = buildSearchUrl(q);
126}});
127});</script>
127</div><section class="section-mp-one"><div class="container"><div class="row"><div class="col-12"><div class="mp-one-logo"> <img alt="img" src="/local/templates/opera/html/img/svg/mp-one-logo.svg"></div><div class="mp-one-theatre"> ГОСУДАРСТВЕННЫЙ КАМЕРНЫЙ <br> МУЗЫКАЛЬНЫЙ ТЕАТР</div><div class="mp-one-founded-date"> Основан в 1987 году</div><div class="mp-one-info-block"><div class="mp-one-3d-link-block"> <a href="https://3dtour.spbopera.ru/" class="mp-one-3d-link"><div class="mp-one-3d-link__icon"> <img src="/local/templates/opera/html/img/svg/ico3d.svg" alt=""></div><div class="mp-one-3d-link__text">3D-тур по театру</div> </a></div><div class="mp-one-info"><div class="mp-one-info__img"> <img src="/local/templates/opera/html/img/svg/covid-mask.svg" alt=""></div></div></div></div></div></div> </section><section id="schedule" data-year="2026" class="section-mp-schedule section-mp-schedule--new"> <button class="new-affiche__infinite-pass-btn" style="top: 100px; right: 40px; left: auto;" aria-hidden="true"></button> <div class="container"> <div class="row"> <div class="col-12"> <div class="mp-schedule-season"> <div class="mp-schedule-season__count">40</div> <div class="mp-schedule-season__text ru">сезонов</div> <div class="mp-schedule-season__text__little ru">вдохновения</div> <style> .mp-schedule-season__count {
128top: -200px;
129font-family: "Vetrino";
130position: relative;
131width: max-content;
132left: 50%;
133transform: translateX(-50%);
134font-weight: 400;
135font-size: 250px !important;
136line-height: 250px;
137letter-spacing: 0.72px;
138text-align: center;
139vertical-align: middle;
140}.mp-schedule-season__count::before {
141content: "";
142position: absolute;
143left: 69%;
144top: 47%;
145transform: translate(-28%, -53%);
146display: inline-block;
147width: 53px;
148height: 53px;
149background-image: url("data:image/svg+xml,%3Csvg width='53' height='53' viewBox='0 0 53 53' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M26.5 0C26.5 0 25.4761 15.3574 31.5593 21.4406C37.6426 27.5239 53 26.5 53 26.5C53 26.5 37.6426 25.4761 31.5593 31.5593C25.4761 37.6426 26.5 53 26.5 53C26.5 53 27.5239 37.6426 21.4406 31.5593C15.3574 25.4761 0 26.5 0 26.5C0 26.5 15.3574 27.5239 21.4406 21.4406C27.5239 15.3574 26.5 0 26.5 0Z' fill='%23736134'/%3E%3C/svg%3E");
150background-size: contain;
151background-repeat: no-repeat;
152}.section-mp-schedule--new .mp-schedule-season__text {
153top: -90px;
154font-family: "Vetrino";
155font-weight: 400;
156font-size: 250px !important;
157line-height: 250px;
158letter-spacing: 0.72px;
159text-align: center;
160vertical-align: middle;
161}.mp-schedule-season__text__little {
162background-image: -webkit-gradient(linear, left bottom, left top, from(#0d0d0d), to(#3d3d3d));
163background-image: -o-linear-gradient(bottom, #0d0d0d 0%, #3d3d3d 100%);
164background-image: linear-gradient(0deg, #0d0d0d 0%, #3d3d3d 100%);
165background: linear-gradient(0deg, #3D3D3D 0%, #3D3D3D 100%);
166-webkit-background-clip: text;
167-webkit-text-fill-color: transparent;
168font-size: 250px;
169font-family: "Spectral", sans-serif;
170font-weight: 600;
171line-height: 1;
172position: absolute;
173width: 100%;
174left: 0;
175top: 70px;
176font-family: "Vetrino";
177font-weight: 400;
178font-size: 120px;
179line-height: 250px;
180letter-spacing: 0.72px;
181text-align: center;
182vertical-align: middle;
183}.new-affiche {
184margin-top: 70px !important;
185}@media (max-width: 1200px) {
186.section-mp-schedule--new .mp-schedule-season__text {
187font-size: 200px !important;
188}}@media (max-width: 991px) {
189.mp-schedule-season__count {
190top: -100px;
191font-weight: 400;
192font-size: 144px !important;
193line-height: 144px;
194letter-spacing: 0.39px;
195text-align: center;
196vertical-align: middle;
197}.section-mp-schedule--new .mp-schedule-season__text,
198.mp-schedule-season__text {
199top: -35px !important;
200font-weight: 400;
201font-size: 72px !important;
202line-height: 96px;
203letter-spacing: 0.39px;
204text-align: center;
205vertical-align: middle;
206}.mp-schedule-season__text__little {
207font-weight: 400;
208font-size: 42px;
209line-height: 96px;
210letter-spacing: 0.39px;
211text-align: center;
212vertical-align: middle;
213background: linear-gradient(0deg, #0D0D0D 0%, #3D3D3D 100%);
214-webkit-background-clip: text;
215top: 20px;
216}.new-affiche {
217margin-top: 0 !important;
218}.mp-schedule-season__count::before {
219width: 39px;
220height: 39px;
221}}</style> </div> <div class="new-affiche"> <div class="new-affiche__filters new-filters new-filters--new-affiche"> <div class="new-filter__wrapper"> <div class="new-filters__group"> <!-- MONTH --> <div class="new-filters__item new-filters__item--select"> <select class="new-filters__select" name="AFFICHE_MONTH" id="AFFICHE_MONTH"> <option value="1" >Январь</option><option value="2" >Февраль</option><option value="3" >Март</option><option value="4" >Апрель</option><option value="5" >Май</option><option value="6" >Июнь</option><option value="7" >Июль</option><option value="9" >Сентябрь</option><option value="10" selected>Октябрь</option><option value="11" >Ноябрь</option><option value="12" >Декабрь</option> </select> <div class="new-filters__select-dropdown"></div> </div> <!-- YEAR --> <div class="new-filters__item new-filters__item--select"> <select class="new-filters__select" name="AFFICHE_YEAR" id="AFFICHE_YEAR"> <option value="2026" selected>2026</option><option value="2025">2025</option><option value="2024">2024</option><option value="2023">2023</option><option value="2022">2022</option> </select> <div class="new-filters__select-dropdown"></div> </div> <!-- AGE --> <div class="new-filters__item new-filters__item--select"> <select class="new-filters__select" name="AFFICHE_AGE" id="AFFICHE_AGE"> <option value="6" selected>6+</option><option value="12">12+</option><option value="14">14+</option><option value="16">16+</option><option value="18">18+</option> </select> <div class="new-filters__select-dropdown"></div> </div> </div> <div class="new-filters__group"> <div class="new-filters__item new-filters__item--checkbox"> <input class="hidden-input" type="checkbox" name="AFFICHE_CHKBX_1" id="AFFICHE_CHKBX_1" checked > <label class="new-filters__checkbox" for="AFFICHE_CHKBX_1">Спектакли</label> </div> <div class="new-filters__item new-filters__item--checkbox"> <input class="hidden-input" type="checkbox" name="AFFICHE_CHKBX_2" id="AFFICHE_CHKBX_2" checked > <label class="new-filters__checkbox" for="AFFICHE_CHKBX_2">Концерты</label> </div> <div class="new-filters__item new-filters__item--checkbox"> <input class="hidden-input" type="checkbox" name="AFFICHE_CHKBX_3" id="AFFICHE_CHKBX_3" checked > <label class="new-filters__checkbox" for="AFFICHE_CHKBX_3">Экскурсии</label> </div> </div> </div> </div> <!-- RENDER LIST --> <div class="new-affiche__container new-affiche__container--infinite"> <div class="new-affiche__list"> <div class="new-affiche__item new-affiche-item"
222data-ev-id="226"
223data-ev-date="02.10.2026"
224data-render-hash="dd092a062816d1633cbd9395ac1de83e"> <div class="new-affiche-item__date-img"> <p class="new-affiche-item__date"> <span class="new-affiche-item__date-weekday">Пт</span> <span class="new-affiche-item__date-day">02</span> <span class="new-affiche-item__date-month">октября</span> <span class="new-affiche-item__date-year">2026</span> <span class="new-affiche-item__date-time">19:00</span> </p> <a class="new-affiche-item__img-block" href="/repertuar/spektakli/22-toska/"> <img class="new-affiche-item__img" src="/upload/iblock/d1b/859ligo9ntcb0z7v8j1nokzb7wvj5wss.jpg" loading="lazy" decoding="async" alt="Тоска"> </a> </div> <div class="new-affiche-item__text"> <div class="new-affiche-item__text-overlay-container"> <div class="new-affiche-item__name-buy"> <div class="author-performance"> <ul> <li> Дж. Пуччини </li> </ul> </div> <div class="new-affiche-item-wrapper-name-buy"> <a class="new-affiche-item__name" href="/repertuar/spektakli/22-toska/">Тоска</a> <div class="new-affiche-item-buttow-wrapper"> <button class="new-affiche-item__buy new-affiche-item__buy--sold" disabled> Все билеты проданы </button>
224 <a data-id="226" data-format="new" data-date="02.10.2026 19:00" data-lang="ru" href="javascript:;" class="new-affiche-item__cast show-cast-js green-tr-btn"> Состав на дату </a> </div> </div> </div> 
225<div class="new-affiche-item__desc-cast new-affiche-item__desc-cast--desktop"> <div class="new-affiche-item__desc"> Деян Савич представит своё прочтение «Тоски» Пуччини в «Санктъ-Петербургъ Опера»</div> </div> <div class="new-affiche-item__tags new-tags"> <span class="new-tags__tag">Остросюжетная оперная драма в трех действиях</span><span class="new-tags__tag">16+</span><span class="new-tags__tag new-tags__tag--pushkin"><img src="/local/templates/opera/html/img/@1x/pushkin-card.png" alt="pushkin"></span> </div> </div> <div class="new-affiche-item__desc-cast new-affiche-item__desc-cast--mobile"> <button class="new-affiche-item__desc-toggle">Описание</button> <div class="new-affiche-item__desc" style="display:none;"> 
226Деян Савич представит своё прочтение «Тоски» Пуччини в «Санктъ-Петербургъ Опера»
227</div>
227 <a data-id="226" data-format="new" data-date="02.10.2026 19:00" data-lang="ru" href="javascript:;" class="new-affiche-item__cast show-cast-js green-tr-btn"> Состав на дату </a> </div> </div> </div> <div class="new-affiche__item new-affiche-item"
228data-ev-id="227"
229data-ev-date="03.10.2026"
230data-render-hash="d924d38fd202912a024948c8adcb6bb0"> <div class="new-affiche-item__date-img"> <p class="new-affiche-item__date"> <span class="new-affiche-item__date-weekday">Сб</span> <span class="new-affiche-item__date-day">03</span> <span class="new-affiche-item__date-month">октября</span> <span class="new-affiche-item__date-year">2026</span> <span class="new-affiche-item__date-time">19:00</span> </p> <a class="new-affiche-item__img-block" href="/repertuar/spektakli/14-traviata/"> <img class="new-affiche-item__img" src="/upload/iblock/dbd/xmi1vmj931ogbuxnvyxpp6and7h6pod6.jpg" loading="lazy" decoding="async" alt="Травиата"> </a> </div> <div class="new-affiche-item__text"> <div class="new-affiche-item__text-overlay-container"> <div class="new-affiche-item__name-buy"> <div class="author-performance"> <ul> <li> Дж. Верди </li> </ul> </div> <div class="new-affiche-item-wrapper-name-buy"> <a class="new-affiche-item__name" href="/repertuar/spektakli/14-traviata/">Травиата</a> <div class="new-affiche-item-buttow-wrapper"> <a-widget
231route="session"
232embed-type="modal"
233session-id="133045422"
234button-text="Купить билет"
235></a-widget>
235 <a data-id="227" data-format="new" data-date="03.10.2026 19:00" data-lang="ru" href="javascript:;" class="new-affiche-item__cast show-cast-js green-tr-btn"> Состав на дату </a> </div> </div> </div> 
236<div class="new-affiche-item__desc-cast new-affiche-item__desc-cast--desktop"> <div class="new-affiche-item__desc"> Легендарная постановка театра переносит время действия шедевра Верди в современный мир.
237</div> </div> <div class="new-affiche-item__tags new-tags"> <span class="new-tags__tag">Оперная фантазия с одним антрактом</span><span class="new-tags__tag">16+</span><span class="new-tags__tag">Театральный зал</span><span class="new-tags__tag new-tags__tag--pushkin"><img src="/local/templates/opera/html/img/@1x/pushkin-card.png" alt="pushkin"></span><span class="new-tags__tag new-tags__tag--icon new-tags__tag--pushkin"><img src="/local/templates/opera/include/images/tabs/svg/dynamic_price_ru.svg" alt="dynamic_price"></span> </div> </div> <div class="new-affiche-item__desc-cast new-affiche-item__desc-cast--mobile"> <button class="new-affiche-item__desc-toggle">Описание</button> <div class="new-affiche-item__desc" style="display:none;"> 
238Легендарная постановка театра переносит время действия шедевра Верди в современный мир.
239</div>
239 <a data-id="227" data-format="new" data-date="03.10.2026 19:00" data-lang="ru" href="javascript:;" class="new-affiche-item__cast show-cast-js green-tr-btn"> Состав на дату </a> </div> </div> </div> <div class="new-affiche__item new-affiche-item"
240data-ev-id="225"
241data-ev-date="04.10.2026"
242data-render-hash="81226b633cc526a25b3927a8eb842da7"> <div class="new-affiche-item__date-img"> <p class="new-affiche-item__date"> <span class="new-affiche-item__date-weekday">Вс</span> <span class="new-affiche-item__date-day">04</span> <span class="new-affiche-item__date-month">октября</span> <span class="new-affiche-item__date-year">2026</span> <span class="new-affiche-item__date-time">19:00</span> </p> <a class="new-affiche-item__img-block" href="/repertuar/spektakli/156-sileva/"> <img class="new-affiche-item__img" src="/upload/resize_cache/webp/iblock/723/jom5cr17jcdyiiu0o3xy6mpir98ppg1h.webp" loading="lazy" decoding="async" alt="Сильва"> </a> </div> <div class="new-affiche-item__text"> <div class="new-affiche-item__text-overlay-container"> <div class="new-affiche-item__name-buy"> <div class="author-performance"> <ul> <li> И. Кальман </li> </ul> </div> <div class="new-affiche-item-wrapper-name-buy"> <a class="new-affiche-item__name" href="/repertuar/spektakli/156-sileva/">Сильва</a> <div class="new-affiche-item-buttow-wrapper"> <a-widget
243route="session"
244embed-type="modal"
245session-id="133045423"
246button-text="Купить билет"
247></a-widget>
247 <a data-id="225" data-format="new" data-date="04.10.2026 19:00" data-lang="ru" href="javascript:;" class="new-affiche-item__cast show-cast-js green-tr-btn"> Состав на дату </a> </div> </div> </div> 
248<div class="new-affiche-item__desc-cast new-affiche-item__desc-cast--desktop"> <div class="new-affiche-item__desc"> Вдохновенные мелодии «Сильвы» пленяют новые поколения зрителей…</div> </div> <div class="new-affiche-item__tags new-tags"> <span class="new-tags__tag">Лирическая мелодрама в двух частях</span><span class="new-tags__tag">12+</span><span class="new-tags__tag">Театральный зал</span><span class="new-tags__tag new-tags__tag--pushkin"><img src="/local/templates/opera/html/img/@1x/pushkin-card.png" alt="pushkin"></span><span class="new-tags__tag new-tags__tag--icon new-tags__tag--pushkin"><img src="/local/templates/opera/include/images/tabs/svg/dynamic_price_ru.svg" alt="dynamic_price"></span> </div> </div> <div class="new-affiche-item__desc-cast new-affiche-item__desc-cast--mobile"> <button class="new-affiche-item__desc-toggle">Описание</button> <div class="new-affiche-item__desc" style="display:none;"> 
249Вдохновенные мелодии «Сильвы» пленяют новые поколения зрителей…
250</div>
250 <a data-id="225" data-format="new" data-date="04.10.2026 19:00" data-lang="ru" href="javascript:;" class="new-affiche-item__cast show-cast-js green-tr-btn"> Состав на дату </a> </div> </div> </div> <div class="new-affiche__item new-affiche-item"
251data-ev-id="191"
252data-ev-date="07.10.2026"
253data-render-hash="b182e80baaee784427086f88502ddaaa"> <div class="new-affiche-item__date-img"> <p class="new-affiche-item__date"> <span class="new-affiche-item__date-weekday">Ср</span> <span class="new-affiche-item__date-day">07</span> <span class="new-affiche-item__date-month">октября</span> <span class="new-affiche-item__date-year">2026</span> <span class="new-affiche-item__date-time">19:00</span> </p> <a class="new-affiche-item__img-block" href="/repertuar/kontsertnye-programmy/26-viva-shtraus/"> <img class="new-affiche-item__img" src="/upload/resize_cache/webp/iblock/bef/5bu08a2nmusfn8fsa2hvk46a8oy8y6cu.webp" loading="lazy" decoding="async" alt="Вива Штраус!"> </a> </div> <div class="new-affiche-item__text"> <div class="new-affiche-item__text-overlay-container"> <div class="new-affiche-item__name-buy"> <div class="new-affiche-item-wrapper-name-buy"> <a class="new-affiche-item__name" href="/repertuar/kontsertnye-programmy/26-viva-shtraus/">Вива Штраус!</a> <div class="new-affiche-item-buttow-wrapper"> <a-widget
254route="session"
255embed-type="modal"
256session-id="133210132"
257button-text="Купить билет"
258></a-widget> </div> </div> </div> 
259<div class="new-affiche-item__desc-cast new-affiche-item__desc-cast--desktop"> <div class="new-affiche-item__desc">Концертная программа, в которой прозвучат знаменитые арии и дуэты из оперетт, польки, марши, кадрили.</div> </div> <div class="new-affiche-item__tags new-tags"> <span class="new-tags__tag">Гала-концерт в двух отделениях</span><span class="new-tags__tag">12+</span><span class="new-tags__tag new-tags__tag--icon new-tags__tag--pushkin"><img src="/local/templates/opera/include/images/tabs/svg/dynamic_price_ru.svg" alt="dynamic_price"></span> </div> </div> <div class="new-affiche-item__desc-cast new-affiche-item__desc-cast--mobile"> <button class="new-affiche-item__desc-toggle">Описание</button> <div class="new-affiche-item__desc" style="display:none;"> Концертная программа, в которой прозвучат знаменитые арии и дуэты из оперетт, польки, марши, кадрили. </div> </div> </div> </div> <div class="new-affiche__item new-affiche-item"
260data-ev-id="3045"
261data-ev-date="09.10.2026"
262data-render-hash="884cd1e2efc9860c369d7e8ee87b521f"> <div class="new-affiche-item__date-img"> <p class="new-affiche-item__date"> <span class="new-affiche-item__date-weekday">Пт</span> <span class="new-affiche-item__date-day">09</span> <span class="new-affiche-item__date-month">октября</span> <span class="new-affiche-item__date-year">2026</span> <span class="new-affiche-item__date-time">15:00</span> </p> <a class="new-affiche-item__img-block" href="/repertuar/kontsertnye-programmy/kontsert-klassa-ilinskoy-e-v/"> <img class="new-affiche-item__img" src="/upload/resize_cache/webp/iblock/711/kf11zce0hoglxdgnxif238lw3ewyxohl.webp" loading="lazy" decoding="async" alt="Концерт класса Елены Николаевны Ильинской"> </a> </div> <div class="new-affiche-item__text"> <div class="new-affiche-item__text-overlay-container"> <div class="new-affiche-item__name-buy"> <div class="new-affiche-item-wrapper-name-buy"> <a class="new-affiche-item__name" href="/repertuar/kontsertnye-programmy/kontsert-klassa-ilinskoy-e-v/">Концерт класса Елены Николаевны Ильинской</a> <div class="new-affiche-item-buttow-wrapper"> <a-widget
263route="session"
264embed-type="modal"
265session-id="132604896"
266button-text="Купить билет"
267></a-widget> </div> </div> </div> 
268<div class="new-affiche-item__desc-cast new-affiche-item__desc-cast--desktop"> <div class="new-affiche-item__desc"> Елена Николаевна Ильинская — заслуженная артистка РФ, профессор Московской государственной консерватории им. П.И. Чайковского, преподаватель Центральной музыкальной школы — Академии исполнительского искусства.</div> </div> <div class="new-affiche-item__tags new-tags"> <span class="new-tags__tag">Фестиваль юных арфистов «Хрустальный ключ»</span><span class="new-tags__tag">Красная гостиная</span><span class="new-tags__tag">6+</span> </div> </div> <div class="new-affiche-item__desc-cast new-affiche-item__desc-cast--mobile"> <button class="new-affiche-item__desc-toggle">Описание</button> <div class="new-affiche-item__desc" style="display:none;"> 
269Елена Николаевна Ильинская — заслуженная артистка РФ, профессор Московской государственной консерватории им. П.И. Чайковского, преподаватель Центральной музыкальной школы — Академии исполнительского искусства.
270</div> </div> </div> </div> <div class="new-affiche__item new-affiche-item"
271data-ev-id="3463"
272data-ev-date="09.10.2026"
273data-render-hash="bc206f80a2ec18c18b448551568e1fc4"> <div class="new-affiche-item__date-img"> <p class="new-affiche-item__date"> <span class="new-affiche-item__date-weekday">Пт</span> <span class="new-affiche-item__date-day">09</span> <span class="new-affiche-item__date-month">октября</span> <span class="new-affiche-item__date-year">2026</span> <span class="new-affiche-item__date-time">19:00</span> </p> <a class="new-affiche-item__img-block" href="/repertuar/kontsertnye-programmy/kontsert-v-grabovskoy-i-ee-klassa/"> <img class="new-affiche-item__img" src="/upload/resize_cache/webp/iblock/779/kezzuujttb2dmpa4g5801rrytz64v099.webp" loading="lazy" decoding="async" alt="Концерт Вероники Грабовской и ее класса"> </a> </div> <div class="new-affiche-item__text"> <div class="new-affiche-item__text-overlay-container"> <div class="new-affiche-item__name-buy"> <div class="new-affiche-item-wrapper-name-buy"> <a class="new-affiche-item__name" href="/repertuar/kontsertnye-programmy/kontsert-v-grabovskoy-i-ee-klassa/">Концерт Вероники Грабовской и ее класса</a> <div class="new-affiche-item-buttow-wrapper"> <a-widget
274route="session"
275embed-type="modal"
276session-id="132604947"
277button-text="Купить билет"
278></a-widget> </div> </div> </div> 
279<div class="new-affiche-item__desc-cast new-affiche-item__desc-cast--desktop"> <div class="new-affiche-item__desc">Одна из ярчайших арфисток Беларуси — концертмейстер Большого театра, член жюри международных конкурсов — выходит на сцену со своими учениками.</div> </div> <div class="new-affiche-item__tags new-tags"> <span class="new-tags__tag">Фестиваль юных арфистов «Хрустальный ключ»</span><span class="new-tags__tag">Красная гостиная</span><span class="new-tags__tag">6+</span> </div> </div> <div class="new-affiche-item__desc-cast new-affiche-item__desc-cast--mobile"> <button class="new-affiche-item__desc-toggle">Описание</button> <div class="new-affiche-item__desc" style="display:none;"> Одна из ярчайших арфисток Беларуси — концертмейстер Большого театра, член жюри международных конкурсов — выходит на сцену со своими учениками. </div> </div> </div> </div> <div class="new-affiche__item new-affiche-item"
280data-ev-id="3044"
281data-ev-date="10.10.2026"
282data-render-hash="04f595abaabdb605378f06ce940e9a75"> <div class="new-affiche-item__date-img"> <p class="new-affiche-item__date"> <span class="new-affiche-item__date-weekday">Сб</span> <span class="new-affiche-item__date-day">10</span> <span class="new-affiche-item__date-month">октября</span> <span class="new-affiche-item__date-year">2026</span> <span class="new-affiche-item__date-time">12:00</span> </p> <a class="new-affiche-item__img-block" href="/repertuar/kontsertnye-programmy/igrayut-yunye-arfisty-rossii/"> <img class="new-affiche-item__img" src="/upload/resize_cache/webp/iblock/0dc/7ad0ppdcg5ay20rmoza32l06hnedmone.webp" loading="lazy" decoding="async" alt="Играют юные арфисты России"> </a> </div> <div class="new-affiche-item__text"> <div class="new-affiche-item__text-overlay-container"> <div class="new-affiche-item__name-buy"> <div class="new-affiche-item-wrapper-name-buy"> <a class="new-affiche-item__name" href="/repertuar/kontsertnye-programmy/igrayut-yunye-arfisty-rossii/">Играют юные арфисты России</a> <div class="new-affiche-item-buttow-wrapper"> <a-widget
283route="session"
284embed-type="modal"
285session-id="132604901"
286button-text="Купить билет"
287></a-widget> </div> </div> </div> 
288<div class="new-affiche-item__desc-cast new-affiche-item__desc-cast--desktop"> <div class="new-affiche-item__desc"> Самые юные участники фестиваля, представляющие разные исполнительские школы России, исполнят сольные произведения, отобранные для исполнения конкурсным жюри.</div> </div> <div class="new-affiche-item__tags new-tags"> <span class="new-tags__tag">Фестиваль юных арфистов «Хрустальный ключ»</span><span class="new-tags__tag">Красная гостиная</span><span class="new-tags__tag">6+</span> </div> </div> <div class="new-affiche-item__desc-cast new-affiche-item__desc-cast--mobile"> <button class="new-affiche-item__desc-toggle">Описание</button> <div class="new-affiche-item__desc" style="display:none;"> 
289Самые юные участники фестиваля, представляющие разные исполнительские школы России, исполнят сольные произведения, отобранные для исполнения конкурсным жюри.
290</div> </div> </div> </div> <div class="new-affiche__item new-affiche-item"
291data-ev-id="3042"
292data-ev-date="10.10.2026"
293data-render-hash="ea4af304fc0a6d40c288fee5c5a25d8e"> <div class="new-affiche-item__date-img"> <p class="new-affiche-item__date"> <span class="new-affiche-item__date-weekday">Сб</span> <span class="new-affiche-item__date-day">10</span> <span class="new-affiche-item__date-month">октября</span> <span class="new-affiche-item__date-year">2026</span> <span class="new-affiche-item__date-time">15:00</span> </p> <a class="new-affiche-item__img-block" href="/repertuar/kontsertnye-programmy/kontsert-klassa-smirnovoy-m-v/"> <img class="new-affiche-item__img" src="/upload/resize_cache/webp/iblock/bf2/3i10fgmaxai29w2asm6yu55ogz67ri6p.webp" loading="lazy" decoding="async" alt="Концерт класса Марины ВитаÐ
293»ÑŒÐµÐ²Ð½Ñ‹ Смирновой"> </a> </div> <div class="new-affiche-item__text"> <div class="new-affiche-item__text-overlay-container"> <div class="new-affiche-item__name-buy"> <div class="new-affiche-item-wrapper-name-buy"> <a class="new-affiche-item__name" href="/repertuar/kontsertnye-programmy/kontsert-klassa-smirnovoy-m-v/">Концерт класса Марины Витальевны Смирновой</a> <div class="new-affiche-item-buttow-wrapper"> <a-widget
294route="session"
295embed-type="modal"
296session-id="132604898"
297button-text="Купить билет"
298></a-widget> </div> </div> </div> 
299<div class="new-affiche-item__desc-cast new-affiche-item__desc-cast--desktop"> <div class="new-affiche-item__desc">Марина Витальевна Смирнова — представительница знаменитой ленинградской арфовой школы, выдающийся педагог воспитавший не одно поколение талантливых музыкантов.</div> </div> <div class="new-affiche-item__tags new-tags"> <span class="new-tags__tag">Фестиваль юных арфистов «Хрустальный ключ»</span><span class="new-tags__tag">Красная гостиная</span><span class="new-tags__tag">6+</span> </div> </div> <div class="new-affiche-item__desc-cast new-affiche-item__desc-cast--mobile"> <button class="new-affiche-item__desc-toggle">Описание</button> <div class="new-affiche-item__desc" style="display:none;"> Марина Витальевна Смирнова — представительница знаменитой ленинградской арфовой школы, выдающийся педагог воспитавший не одно поколение талантливых музыкантов. </div> </div> </div> </div> <div class="new-affiche__item new-affiche-item"
300data-ev-id="3046"
301data-ev-date="10.10.2026"
302data-render-hash="49a7d29618b4dbd0943181fa5745a04e"> <div class="new-affiche-item__date-img"> <p class="new-affiche-item__date"> <span class="new-affiche-item__date-weekday">Сб</span> <span class="new-affiche-item__date-day">10</span> <span class="new-affiche-item__date-month">октября</span> <span class="new-affiche-item__date-year">2026</span> <span class="new-affiche-item__date-time">19:00</span> </p> <a class="new-affiche-item__img-block" href="/repertuar/kontsertnye-programmy/igrayut-pobediteli/"> <img class="new-affiche-item__img" src="/upload/resize_cache/webp/iblock/53b/6yvk5qxcn0k9lv8edueewhug717gy7po.webp" loading="lazy" decoding="async" alt="Играют победители "> </a> </div> <div class="new-affiche-item__text"> <div class="new-affiche-item__text-overlay-container"> <div class="new-affiche-item__name-buy"> <div class="new-affiche-item-wrapper-name-buy"> <a class="new-affiche-item__name" href="/repertuar/kontsertnye-programmy/igrayut-pobediteli/">Играют победители </a> <div class="new-affiche-item-buttow-wrapper"> <a-widget
303route="session"
304embed-type="modal"
305session-id="132604911"
306button-text="Купить билет"
307></a-widget> </div> </div> </div> 
308<div class="new-affiche-item__desc-cast new-affiche-item__desc-cast--desktop"> <div class="new-affiche-item__desc">Две арфы, два гран-при на одной сцене: восходящие звезды исполнительского искусства — Анна Безрукова и Ксения Курлович.</div> </div> <div class="new-affiche-item__tags new-tags"> <span class="new-tags__tag">Фестиваль юных арфистов «Хрустальный ключ»</span><span class="new-tags__tag">Красная гостиная</span><span class="new-tags__tag">6+</span> </div> </div> <div class="new-affiche-item__desc-cast new-affiche-item__desc-cast--mobile"> <button class="new-affiche-item__desc-toggle">Описание</button> <div class="new-affiche-item__desc" style="display:none;"> Две арфы, два гран-при на одной сцене: восходящие звезды исполнительского искусства — Анна Безрукова и Ксения Курлович. </div> </div> </div> </div> <div class="new-affiche__item new-affiche-item"
309data-ev-id="3464"
310data-ev-date="11.10.2026"
311data-render-hash="1cbef007120a261d4e6e62855be9d069"> <div class="new-affiche-item__date-img"> <p class="new-affiche-item__date"> <span class="new-affiche-item__date-weekday">Вс</span> <span class="new-affiche-item__date-day">11</span> <span class="new-affiche-item__date-month">октября</span> <span class="new-affiche-item__date-year">2026</span> <span class="new-affiche-item__date-time">12:00</span> </p> <a class="new-affiche-item__img-block" href="/repertuar/kontsertnye-programmy/gala-kontsert-igrayut-molodye-talanty/"> <img class="new-affiche-item__img" src="/upload/resize_cache/webp/iblock/fc2/spowdpkq09kb44fkhxn4afz7167g171i.webp" loading="lazy" decoding="async" alt="Гала-концерт «Играют молодые таланты»"> </a> </div> <div class="new-affiche-item__text"> <div class="new-affiche-item__text-overlay-container"> <div class="new-affiche-item__name-buy"> <div class="new-affiche-item-wrapper-name-buy"> <a class="new-affiche-item__name" href="/repertuar/kontsertnye-programmy/gala-kontsert-igrayut-molodye-talanty/">Гала-концерт «Играют молодые таланты»</a> <div class="new-affiche-item-buttow-wrapper"> <a-widget
312route="session"
313embed-type="modal"
314session-id="132604922"
315button-text="Купить билет"
316></a-widget> </div> </div> </div> 
317<div class="new-affiche-item__desc-cast new-affiche-item__desc-cast--desktop"> <div class="new-affiche-item__desc">Этот гала-концерт — не просто серия выступлений, а масштабная панорама современных исполнительских школ на международном уровне.</div> </div> <div class="new-affiche-item__tags new-tags"> <span class="new-tags__tag">Фестиваль юных арфистов «Хрустальный ключ»</span><span class="new-tags__tag">Красная гостиная</span><span class="new-tags__tag">6+</span> </div> </div> <div class="new-affiche-item__desc-cast new-affiche-item__desc-cast--mobile"> <button class="new-affiche-item__desc-toggle">Описание</button> <div class="new-affiche-item__desc" style="display:none;"> Этот гала-концерт — не просто серия выступлений, а масштабная панорама современных исполнительских школ на международном уровне. </div> </div> </div> </div> <div class="new-affiche__item new-affiche-item"
318data-ev-id="2657"
319data-ev-date="11.10.2026"
320data-render-hash="950f8bdcf409a468e20072ccacdb1c5c"> <div class="new-affiche-item__date-img"> <p class="new-affiche-item__date"> <span class="new-affiche-item__date-weekday">Вс</span> <span class="new-affiche-item__date-day">11</span> <span class="new-affiche-item__date-month">октября</span> <span class="new-affiche-item__date-year">2026</span> <span class="new-affiche-item__date-time">19:00</span> </p> <a class="new-affiche-item__img-block" href="/repertuar/kontsertnye-programmy/kontsert-zakrytie-konkursa-yunykh-arfistov-khrustalnyy-klyuch/"> <img class="new-affiche-item__img" src="/upload/resize_cache/webp/iblock/fa6/zoph1g3b5as38zmopulpuo7mmu878klo.webp" loading="lazy" decoding="async" alt="Концерт-закрытие фестиваля юных арфистов «Хрустальный ключ»"> </a> </div> <div class="new-affiche-item__text"> <div class="new-affiche-item__text-overlay-container"> <div class="new-affiche-item__name-buy"> <div class="new-affiche-item-wrapper-name-buy"> <a class="new-affiche-item__name" href="/repertuar/kontsertnye-programmy/kontsert-zakrytie-konkursa-yunykh-arfistov-khrustalnyy-klyuch/">Концерт-закрытие фестиваля юных арфистов «Хрустальный ключ»</a> <div class="new-affiche-item-buttow-wrapper"> <a-widget
321route="session"
322embed-type="modal"
323session-id="132604908"
324button-text="Купить билет"
325></a-widget> </div> </div> </div> 
326<div class="new-affiche-item__desc-cast new-affiche-item__desc-cast--desktop"> <div class="new-affiche-item__desc"> Фестиваль юных арфистов «Хрустальный ключ» завершится большим гала-концертом.</div> </div> <div class="new-affiche-item__tags new-tags"> <span class="new-tags__tag">Фестиваль юных арфистов «Хрустальный ключ»</span><span class="new-tags__tag">6+</span> </div> </div> <div class="new-affiche-item__desc-cast new-affiche-item__desc-cast--mobile"> <button class="new-affiche-item__desc-toggle">Описание</button> <div class="new-affiche-item__desc" style="display:none;"> 
327Фестиваль юных арфистов «Хрустальный ключ» завершится большим гала-концертом.
328</div> </div> </div> </div> <div class="new-affiche__item new-affiche-item"
329data-ev-id="3466"
330data-ev-date="16.10.2026"
331data-render-hash="dbfeeb44f658fe2012960357d1a8031e"> <div class="new-affiche-item__date-img"> <p class="new-affiche-item__date"> <span class="new-affiche-item__date-weekday">Пт</span> <span class="new-affiche-item__date-day">16</span> <span class="new-affiche-item__date-month">октября</span> <span class="new-affiche-item__date-year">2026</span> <span class="new-affiche-item__date-time">19:00</span> </p> <a class="new-affiche-item__img-block" href="/repertuar/spektakli/monna-vanna/"> <img class="new-affiche-item__img" src="/upload/resize_cache/webp/iblock/f21/97mcdqe34prw8v6rn52ivqef1j4s2ct1.webp" loading="lazy" decoding="async" alt="Монна Ванна"> </a> </div> <div class="new-affiche-item__text"> <div class="new-affiche-item__text-overlay-container"> <div class="new-affiche-item__name-buy"> <div class="author-performance"> <ul> <li> С.В. Рахманинов </li> </ul> </div> <div class="new-affiche-item-wrapper-name-buy"> <a class="new-affiche-item__name" href="/repertuar/spektakli/monna-vanna/">Монна Ванна</a> <div class="new-affiche-item-buttow-wrapper"> <a-widget
332route="session"
333embed-type="modal"
334session-id="133045326"
335button-text="Купить билет"
336></a-widget> </div> </div> </div> 
337<div class="new-affiche-item__desc-cast new-affiche-item__desc-cast--desktop"> <div class="new-affiche-item__desc"> Великий и неизвестный Рахманинов.
338Театр «Санктъ-Петербургъ Опера» приглашает зрителей на мировую премьеру сценической версии оперы С.В. Рахманинова «Монна Ванна», которая состоится 16 и 17 октября.
339</div> </div> <div class="new-affiche-item__tags new-tags"> <span class="new-tags__tag">мировая премьера</span><span class="new-tags__tag">16+</span><span class="new-tags__tag new-tags__tag--icon new-tags__tag--pushkin"><img src="/local/templates/opera/include/images/tabs/svg/exclusive_ru.svg" alt="exclusive"></span> </div> </div> <div class="new-affiche-item__desc-cast new-affiche-item__desc-cast--mobile"> <button class="new-affiche-item__desc-toggle">Описание</button> <div class="new-affiche-item__desc" style="display:none;"> 
340Великий и неизвестный Рахманинов.
341Театр «Санктъ-Петербургъ Опера» приглашает зрителей на мировую премьеру сценической версии оперы С.В. Рахманинова «Монна Ванна», которая состоится 16 и 17 октября.
342</div> </div> </div> </div> <div class="new-affiche__item new-affiche-item"
343data-ev-id="3466"
344data-ev-date="17.10.2026"
345data-render-hash="ce41ba8373f436f96a972b8d45f00308"> <div class="new-affiche-item__date-img"> <p class="new-affiche-item__date"> <span class="new-affiche-item__date-weekday">Сб</span> <span class="new-affiche-item__date-day">17</span> <span class="new-affiche-item__date-month">октября</span> <span class="new-affiche-item__date-year">2026</span> <span class="new-affiche-item__date-time">19:00</span> </p> <a class="new-affiche-item__img-block" href="/repertuar/spektakli/monna-vanna/"> <img class="new-affiche-item__img" src="/upload/resize_cache/webp/iblock/f21/97mcdqe34prw8v6rn52ivqef1j4s2ct1.webp" loading="lazy" decoding="async" alt="Монна Ванна"> </a> </div> <div class="new-affiche-item__text"> <div class="new-affiche-item__text-overlay-container"> <div class="new-affiche-item__name-buy"> <div class="author-performance"> <ul> <li> С.В. Рахманинов </li> </ul> </div> <div class="new-affiche-item-wrapper-name-buy"> <a class="new-affiche-item__name" href="/repertuar/spektakli/monna-vanna/">Монна Ванна</a> <div class="new-affiche-item-buttow-wrapper"> <a-widget
346route="session"
347embed-type="modal"
348session-id="133045420"
349button-text="Купить билет"
350></a-widget> </div> </div> </div> 
351<div class="new-affiche-item__desc-cast new-affiche-item__desc-cast--desktop"> <div class="new-affiche-item__desc"> Великий и неизвестный Рахманинов.
352Театр «Санктъ-Петербургъ Опера» приглашает зрителей на мировую премьеру сценической версии оперы С.В. Рахманинова «Монна Ванна», которая состоится 16 и 17 октября.
353</div> </div> <div class="new-affiche-item__tags new-tags"> <span class="new-tags__tag">мировая премьера</span><span class="new-tags__tag">16+</span><span class="new-tags__tag new-tags__tag--icon new-tags__tag--pushkin"><img src="/local/templates/opera/include/images/tabs/svg/exclusive_ru.svg" alt="exclusive"></span> </div> </div> <div class="new-affiche-item__desc-cast new-affiche-item__desc-cast--mobile"> <button class="new-affiche-item__desc-toggle">Описание</button> <div class="new-affiche-item__desc" style="display:none;"> 
354Великий и неизвестный Рахманинов.
355Театр «Санктъ-Петербургъ Опера» приглашает зрителей на мировую премьеру сценической версии оперы С.В. Рахманинова «Монна Ванна», которая состоится 16 и 17 октября.
356</div> </div> </div> </div> <div class="new-affiche__item new-affiche-item"
357data-ev-id="2675"
358data-ev-date="18.10.2026"
359data-render-hash="6f504437af550fa4ca67e6175bba06e7"> <div class="new-affiche-item__date-img"> <p class="new-affiche-item__date"> <span class="new-affiche-item__date-weekday">Вс</span> <span class="new-affiche-item__date-day">18</span> <span class="new-affiche-item__date-month">октября</span> <span class="new-affiche-item__date-year">2026</span> <span class="new-affiche-item__date-time">19:00</span> </p> <a class="new-affiche-item__img-block" href="/repertuar/spektakli/prekrasnaya-elena/"> <img class="new-affiche-item__img" src="/upload/resize_cache/webp/iblock/563/lfsufv34w27jvp80lc6diieyd3aw0un1.webp" loading="lazy" decoding="async" alt="Прекрасная Елена"> </a> </div> <div class="new-affiche-item__text"> <div class="new-affiche-item__text-overlay-container"> <div class="new-affiche-item__name-buy"> <div class="author-performance"> <ul> <li> Ж. Оффенбах </li> </ul> </div> <div class="new-affiche-item-wrapper-name-buy"> <a class="new-affiche-item__name" href="/repertuar/spektakli/prekrasnaya-elena/">Прекрасная Елена</a> <div class="new-affiche-item-buttow-wrapper"> <a-widget
360route="session"
361embed-type="modal"
362session-id="133045426"
363button-text="Купить билет"
364></a-widget> <a data-id="2675" data-format="new" data-date="18.10.2026 19:00" data-lang="ru" href="javascript:;" class="new-affiche-item__cast show-cast-js green-tr-btn">
364 Состав на дату </a> </div> </div> </div> 
365<div class="new-affiche-item__desc-cast new-affiche-item__desc-cast--desktop"> <div class="new-affiche-item__desc">Новая редакция оперы-буфф Жака Оффенбаха на сцене театра «Санктъ-Петербургъ Опера».
366</div> </div> <div class="new-affiche-item__tags new-tags"> <span class="new-tags__tag">романтическая комедия в 2 действиях</span><span class="new-tags__tag">16+</span><span class="new-tags__tag new-tags__tag--pushkin"><img src="/local/templates/opera/html/img/@1x/pushkin-card.png" alt="pushkin"></span> </div> </div> <div class="new-affiche-item__desc-cast new-affiche-item__desc-cast--mobile"> <button class="new-affiche-item__desc-toggle">Описание</button> <div class="new-affiche-item__desc" style="display:none;"> Новая редакция оперы-буфф Жака Оффенбаха на сцене театра «Санктъ-Петербургъ Опера».
367</div> <a data-id="2675" data-format="new" data-date="18.10.2026 19:00" data-lang="ru" href="javascript:;" class="new-affiche-item__cast show-cast-js green-tr-btn"> Состав на дату </a> </div> </div> </div> <div class="new-affiche__item new-affiche-item"
368data-ev-id="231"
369data-ev-date="21.10.2026"
370data-render-hash="0e739a64444560558d109aceb07f19ca"> <div class="new-affiche-item__date-img"> <p class="new-affiche-item__date"> <span class="new-affiche-item__date-weekday">Ср</span> <span class="new-affiche-item__date-day">21</span> <span class="new-affiche-item__date-month">октября</span> <span class="new-affiche-item__date-year">2026</span> <span class="new-affiche-item__date-time">16:30</span> </p> <a class="new-affiche-item__img-block" href="/repertuar/spektakli/ekskursiya/"> <img class="new-affiche-item__img" src="/upload/iblock/f0b/o1z2nr7tinokqbbbfxsahjx1t9gfkbtd.jpg" loading="lazy" decoding="async" alt="Экскурсия (именные билеты)"> </a> </div> <div class="new-affiche-item__text"> <div class="new-affiche-item__text-overlay-container"> <div class="new-affiche-item__name-buy"> <div class="new-affiche-item-wrapper-name-buy"> <a class="new-affiche-item__name" href="/repertuar/spektakli/ekskursiya/">Экскурсия (именные билеты)</a> <div class="new-affiche-item-buttow-wrapper"> <button class="new-affiche-item__buy new-affiche-item__buy--sold" disabled> Все билеты проданы </button> </div> </div> </div> 
371<div class="new-affiche-item__desc-cast new-affiche-item__desc-cast--desktop"> <div class="new-affiche-item__desc">Экскурсия познакомит с историей и современной жизнью одного из самых роскошных особняков Санкт-Петербурга.</div> </div> <div class="new-affiche-item__tags new-tags"> <span class="new-tags__tag">продолжительность 1,5 часа</span><span class="new-tags__tag">14+</span><span class="new-tags__tag">вход по предъявлению документа</span> </div> </div> <div class="new-affiche-item__desc-cast new-affiche-item__desc-cast--mobile"> <button class="new-affiche-item__desc-toggle">Описание</button> <div class="new-affiche-item__desc" style="display:none;"> Экскурсия познакомит с историей и современной жизнью одного из самых роскошных особняков Санкт-Петербурга. </div> </div> </div> </div> <div class="new-affiche__item new-affiche-item"
372data-ev-id="232"
373data-ev-date="21.10.2026"
374data-render-hash="dff401eb1a24084ae22af7625fbe536f"> <div class="new-affiche-item__date-img"> <p class="new-affiche-item__date"> <span class="new-affiche-item__date-weekday">Ср</span> <span class="new-affiche-item__date-day">21</span> <span class="new-affiche-item__date-month">октября</span> <span class="new-affiche-item__date-year">2026</span> <span class="new-affiche-item__date-time">19:00</span> </p> <a class="new-affiche-item__img-block" href="/repertuar/spektakli/178-yulektra/"> <img class="new-affiche-item__img" src="/upload/resize_cache/webp/iblock/c6e/oepjtjzku8diwhl6wbo12crbketc007d.webp" loading="lazy" decoding="async" alt="Электра"> </a> </div> <div class="new-affiche-item__text"> <div class="new-affiche-item__text-overlay-container"> <div class="new-affiche-item__name-buy"> <div class="author-performance"> <ul> <li> Р. Штраус </li> </ul> </div> <div class="new-affiche-item-wrapper-name-buy"> <a class="new-affiche-item__name" href="/repertuar/spektakli/178-yulektra/">Электра</a> <div class="new-affiche-item-buttow-wrapper"> <a-widget
375route="session"
376embed-type="modal"
377session-id="133210133"
378button-text="Купить билет"
379></a-widget> <a data-id="232" data-format="new" data-date="21.10.2026 19:00" data-lang="ru" href="javascript:;" class="new-affiche-item__cast show-cast-js green-tr-btn">
379 Состав на дату </a> </div> </div> </div> 
380<div class="new-affiche-item__desc-cast new-affiche-item__desc-cast--desktop"> <div class="new-affiche-item__desc"> Это не просто опера, а звуковая вселенная, воплощение боли, безумия и экстаза.</div> </div> <div class="new-affiche-item__tags new-tags"> <span class="new-tags__tag">Музыкальная драма без антракта</span><span class="new-tags__tag">Театральный зал</span><span class="new-tags__tag">16+</span><span class="new-tags__tag new-tags__tag--pushkin"><img src="/local/templates/opera/html/img/@1x/pushkin-card.png" alt="pushkin"></span> </div> </div> <div class="new-affiche-item__desc-cast new-affiche-item__desc-cast--mobile"> <button class="new-affiche-item__desc-toggle">Описание</button> <div class="new-affiche-item__desc" style="display:none;"> 
381Это не просто опера, а звуковая вселенная, воплощение боли, безумия и экстаза.
382</div> <a data-id="232" data-format="new" data-date="21.10.2026 19:00" data-lang="ru" href="javascript:;" class="new-affiche-item__cast show-cast-js green-tr-btn"> Состав на дату </a> </div> </div> </div> <div class="new-affiche__item new-affiche-item"
383data-ev-id="231"
384data-ev-date="23.10.2026"
385data-render-hash="e30bf04669d61526a4521eba27ee2563"> <div class="new-affiche-item__date-img"> <p class="new-affiche-item__date"> <span class="new-affiche-item__date-weekday">Пт</span> <span class="new-affiche-item__date-day">23</span> <span class="new-affiche-item__date-month">октября</span> <span class="new-affiche-item__date-year">2026</span> <span class="new-affiche-item__date-time">16:30</span> </p> <a class="new-affiche-item__img-block" href="/repertuar/spektakli/ekskursiya/"> <img class="new-affiche-item__img" src="/upload/iblock/f0b/o1z2nr7tinokqbbbfxsahjx1t9gfkbtd.jpg" loading="lazy" decoding="async" alt="Экскурсия (именные билеты)"> </a> </div> <div class="new-affiche-item__text"> <div class="new-affiche-item__text-overlay-container"> <div class="new-affiche-item__name-buy"> <div class="new-affiche-item-wrapper-name-buy"> <a class="new-affiche-item__name" href="/repertuar/spektakli/ekskursiya/">Экскурсия (именные билеты)</a> <div class="new-affiche-item-buttow-wrapper"> <button class="new-affiche-item__buy new-affiche-item__buy--sold" disabled> Все билеты проданы </button> </div> </div> </div> 
386<div class="new-affiche-item__desc-cast new-affiche-item__desc-cast--desktop"> <div class="new-affiche-item__desc">Экскурсия познакомит с историей и современной жизнью одного из самых роскошных особняков Санкт-Петербурга.</div> </div> <div class="new-affiche-item__tags new-tags"> <span class="new-tags__tag">продолжительность 1,5 часа</span><span class="new-tags__tag">14+</span><span class="new-tags__tag">вход по предъявлению документа</span> </div> </div> <div class="new-affiche-item__desc-cast new-affiche-item__desc-cast--mobile"> <button class="new-affiche-item__desc-toggle">Описание</button> <div class="new-affiche-item__desc" style="display:none;"> Экскурсия познакомит с историей и современной жизнью одного из самых роскошных особняков Санкт-Петербурга. </div> </div> </div> </div> <div class="new-affiche__item new-affiche-item"
387data-ev-id="208"
388data-ev-date="23.10.2026"
389data-render-hash="4acefd6e64a7c9f01b194caba5da7f13"> <div class="new-affiche-item__date-img"> <p class="new-affiche-item__date"> <span class="new-affiche-item__date-weekday">Пт</span> <span class="new-affiche-item__date-day">23</span> <span class="new-affiche-item__date-month">октября</span> <span class="new-affiche-item__date-year">2026</span> <span class="new-affiche-item__date-time">19:00</span> </p> <a class="new-affiche-item__img-block" href="/repertuar/spektakli/81-lyubovnyj-napitok/"> <img class="new-affiche-item__img" src="/upload/resize_cache/webp/iblock/a2b/q67qxvcyjwc0fy0zblb63bafflx293rm.webp" loading="lazy" decoding="async" alt="Любовный напиток"> </a> </div> <div class="new-affiche-item__text"> <div class="new-affiche-item__text-overlay-container"> <div class="new-affiche-item__name-buy"> <div class="author-performance"> <ul> <li> Г. Доницетти </li> </ul> </div> <div class="new-affiche-item-wrapper-name-buy"> <a class="new-affiche-item__name" href="/repertuar/spektakli/81-lyubovnyj-napitok/">Любовный напиток</a> <div class="new-affiche-item-buttow-wrapper"> <a-widget
390route="session"
391embed-type="modal"
392session-id="133210134"
393button-text="Купить билет"
394></a-widget> <a data-id="208" data-format="new" data-date="23.10.2026 19:00" data-lang="ru" href="javascript:;" class="new-affiche-item__cast show-cast-js green-tr-btn">
394 Состав на дату </a> </div> </div> </div> 
395<div class="new-affiche-item__desc-cast new-affiche-item__desc-cast--desktop"> <div class="new-affiche-item__desc"> В либретто элегантно обыгрывается знаменитая легенда о Тристане и Изольде. 
396</div> </div> <div class="new-affiche-item__tags new-tags"> <span class="new-tags__tag">Комедия для взрослых</span><span class="new-tags__tag">16+</span><span class="new-tags__tag">Театральный зал</span><span class="new-tags__tag new-tags__tag--pushkin"><img src="/local/templates/opera/html/img/@1x/pushkin-card.png" alt="pushkin"></span> </div> </div> <div class="new-affiche-item__desc-cast new-affiche-item__desc-cast--mobile"> <button class="new-affiche-item__desc-toggle">Описание</button> <div class="new-affiche-item__desc" style="display:none;"> 
397В либретто элегантно обыгрывается знаменитая легенда о Тристане и Изольде. 
398</div> <a data-id="208" data-format="new" data-date="23.10.2026 19:00" data-lang="ru" href="javascript:;" class="new-affiche-item__cast show-cast-js green-tr-btn"> Состав на дату </a> </div> </div> </div> <div class="new-affiche__item new-affiche-item"
399data-ev-id="228"
400data-ev-date="24.10.2026"
401data-render-hash="41bf74473f2ab67b22e0b27d29ff88a9"> <div class="new-affiche-item__date-img"> <p class="new-affiche-item__date"> <span class="new-affiche-item__date-weekday">Сб</span> <span class="new-affiche-item__date-day">24</span> <span class="new-affiche-item__date-month">октября</span> <span class="new-affiche-item__date-year">2026</span> <span class="new-affiche-item__date-time">19:00</span> </p> <a class="new-affiche-item__img-block" href="/repertuar/spektakli/119-faust/"> <img class="new-affiche-item__img" src="/upload/resize_cache/webp/iblock/064/3wv684mhatqpfv0iyc7rvy1kbsn6l8b2.webp" loading="lazy" decoding="async" alt="Фауст"> </a> </div> <div class="new-affiche-item__text"> <div class="new-affiche-item__text-overlay-container"> <div class="new-affiche-item__name-buy"> <div class="author-performance"> <ul> <li> Ш. Гуно </li> </ul> </div> <div class="new-affiche-item-wrapper-name-buy"> <a class="new-affiche-item__name" href="/repertuar/spektakli/119-faust/">Фауст</a> <div class="new-affiche-item-buttow-wrapper"> <a-widget
402route="session"
403embed-type="modal"
404session-id="133210150"
405button-text="Купить билет"
406></a-widget> <a data-id="228" data-format="new" data-date="24.10.2026 19:00" data-lang="ru" href="javascript:;" class="new-affiche-item__cast show-cast-js green-tr-btn"> Состав на дату </a> </div> </div> </div> 
407<div class="new-affiche-item__desc-cast new-affiche-item__desc-cast--desktop"> <div class="new-affiche-item__desc"> Опера Шарля Гуно по мотивам трагедии Гёте в смелом прочтении Юрия Александрова превращается в разговор о границах науки, цене бессмертия и праве оставаться человеком.</div> </div> <div class="new-affiche-item__tags new-tags"> <span class="new-tags__tag">Психологическая драма в двух частях</span><span class="new-tags__tag">18+</span><span class="new-tags__tag">Театральный зал</span><span class="new-tags__tag new-tags__tag--pushkin"><img src="/local/templates/opera/html/img/@1x/pushkin-card.png" alt="pushkin"></span><span class="new-tags__tag new-tags__tag--icon new-tags__tag--pushkin"><img src="/local/templates/opera/include/images/tabs/svg/dynamic_price_ru.svg" alt="dynamic_price"></span> </div> </div> <div class="new-affiche-item__desc-cast new-affiche-item__desc-cast--mobile"> <button class="new-affiche-item__desc-toggle">Описание</button> <div class="new-affiche-item__desc" style="display:none;"> 
408Опера Шарля Гуно по мотивам трагедии Гёте в смелом прочтении Юрия Александрова превращается в разговор о границах науки, цене бессмертия и праве оставаться человеком.
409</div> <a data-id="228" data-format="new" data-date="24.10.2026 19:00" data-lang="ru" href="javascript:;" class="new-affiche-item__cast show-cast-js green-tr-btn">
409 Состав на дату </a> </div> </div> </div> <div class="new-affiche__item new-affiche-item"
410data-ev-id="204"
411data-ev-date="25.10.2026"
412data-render-hash="7244eb4c9f93ca2d6868d3b464dc2360"> <div class="new-affiche-item__date-img"> <p class="new-affiche-item__date"> <span class="new-affiche-item__date-weekday">Вс</span> <span class="new-affiche-item__date-day">25</span> <span class="new-affiche-item__date-month">октября</span> <span class="new-affiche-item__date-year">2026</span> <span class="new-affiche-item__date-time">12:00</span> </p> <a class="new-affiche-item__img-block" href="/repertuar/detskie-spektakli/kot-v-sapogah/"> <img class="new-affiche-item__img" src="/upload/iblock/96a/9qejl9fgzw0e68vz8hbw858i3j5usbp4.jpg" loading="lazy" decoding="async" alt="Кот в сапогах"> </a> </div> <div class="new-affiche-item__text"> <div class="new-affiche-item__text-overlay-container"> <div class="new-affiche-item__name-buy"> <div class="author-performance"> <ul> <li> Ц.А. Кюи </li> </ul> </div> <div class="new-affiche-item-wrapper-name-buy"> <a class="new-affiche-item__name" href="/repertuar/detskie-spektakli/kot-v-sapogah/">Кот в сапогах</a> <div class="new-affiche-item-buttow-wrapper"> <a-widget
413route="session"
414embed-type="modal"
415session-id="133210151"
416button-text="Купить билет"
417></a-widget> <a data-id="204" data-format="new" data-date="25.10.2026 12:00" data-lang="ru" href="javascript:;" class="new-affiche-item__cast show-cast-js green-tr-btn"> Состав на дату </a> </div> </div> </div> 
418<div class="new-affiche-item__desc-cast new-affiche-item__desc-cast--desktop"> <div class="new-affiche-item__desc"> Для детской аудитории народный артист России Юрий Александров вернул на театральную сцену оперу Цезаря Кюи «Кот в сапогах», написанную в 1912 году.</div> </div> <div class="new-affiche-item__tags new-tags"> <span class="new-tags__tag">Музыкальная сказка для детей и взрослых с пением и танцами</span><span class="new-tags__tag">6+</span><span class="new-tags__tag new-tags__tag--pushkin"><img src="/local/templates/opera/html/img/@1x/pushkin-card.png" alt="pushkin"></span> </div> </div> <div class="new-affiche-item__desc-cast new-affiche-item__desc-cast--mobile"> <button class="new-affiche-item__desc-toggle">Описание</button> <div class="new-affiche-item__desc" style="display:none;"> 
419Для детской аудитории народный артист России Юрий Александров вернул на театральную сцену оперу Цезаря Кюи «Кот в сапогах», написанную в 1912 году.
420</div> <a data-id="204" data-format="new" data-date="25.10.2026 12:00" data-lang="ru" href="javascript:;" class="new-affiche-item__cast show-cast-js green-tr-btn"> Состав на дату </a> </div> </div> </div> <div class="new-affiche__item new-affiche-item"
421data-ev-id="204"
422data-ev-date="25.10.2026"
423data-render-hash="e94ad9246ffad0e08ec537c3c0c4d91f"> <div class="new-affiche-item__date-img"> <p class="new-affiche-item__date"> <span class="new-affiche-item__date-weekday">Вс</span> <span class="new-affiche-item__date-day">25</span> <span class="new-affiche-item__date-month">октября</span> <span class="new-affiche-item__date-year">2026</span> <span class="new-affiche-item__date-time">15:00</span> </p> <a class="new-affiche-item__img-block" href="/repertuar/detskie-spektakli/kot-v-sapogah/"> <img class="new-affiche-item__img" src="/upload/iblock/96a/9qejl9fgzw0e68vz8hbw858i3j5usbp4.jpg" loading="lazy" decoding="async" alt="Кот в сапогах"> </a> </div> <div class="new-affiche-item__text"> <div class="new-affiche-item__text-overlay-container"> <div class="new-affiche-item__name-buy"> <div class="author-performance"> <ul> <li> Ц.А. Кюи </li> </ul> </div> <div class="new-affiche-item-wrapper-name-buy"> <a class="new-affiche-item__name" href="/repertuar/detskie-spektakli/kot-v-sapogah/">Кот в сапогах</a> <div class="new-affiche-item-buttow-wrapper"> <a-widget
424route="session"
425embed-type="modal"
426session-id="133211714"
427button-text="Купить билет"
428></a-widget> <a data-id="204" data-format="new" data-date="25.10.2026 15:00" data-lang="ru" href="javascript:;" class="new-affiche-item__cast show-cast-js green-tr-btn">
428 Состав на дату </a> </div> </div> </div> 
429<div class="new-affiche-item__desc-cast new-affiche-item__desc-cast--desktop"> <div class="new-affiche-item__desc"> Для детской аудитории народный артист России Юрий Александров вернул на театральную сцену оперу Цезаря Кюи «Кот в сапогах», написанную в 1912 году.</div> </div> <div class="new-affiche-item__tags new-tags"> <span class="new-tags__tag">Музыкальная сказка для детей и взрослых с пением и танцами</span><span class="new-tags__tag">6+</span><span class="new-tags__tag new-tags__tag--pushkin"><img src="/local/templates/opera/html/img/@1x/pushkin-card.png" alt="pushkin"></span> </div> </div> <div class="new-affiche-item__desc-cast new-affiche-item__desc-cast--mobile"> <button class="new-affiche-item__desc-toggle">Описание</button> <div class="new-affiche-item__desc" style="display:none;"> 
430Для детской аудитории народный артист России Юрий Александров вернул на театральную сцену оперу Цезаря Кюи «Кот в сапогах», написанную в 1912 году.
431</div> <a data-id="204" data-format="new" data-date="25.10.2026 15:00" data-lang="ru" href="javascript:;" class="new-affiche-item__cast show-cast-js green-tr-btn"> Состав на дату </a> </div> </div> </div> <div class="new-affiche__item new-affiche-item"
432data-ev-id="230"
433data-ev-date="25.10.2026"
434data-render-hash="3fa0558984566de101eed5f6e2cae863"> <div class="new-affiche-item__date-img"> <p class="new-affiche-item__date"> <span class="new-affiche-item__date-weekday">Вс</span> <span class="new-affiche-item__date-day">25</span> <span class="new-affiche-item__date-month">октября</span> <span class="new-affiche-item__date-year">2026</span> <span class="new-affiche-item__date-time">19:00</span> </p> <a class="new-affiche-item__img-block" href="/repertuar/kontsertnye-programmy/shedevry-mirovoy-klassiki/"> <img class="new-affiche-item__img" src="/upload/iblock/c17/nbf1adc4dl7jyfcw4wyjyoixzye777l5.jpg" loading="lazy" decoding="async" alt="Шедевры мировой классики"> </a> </div> <div class="new-affiche-item__text"> <div class="new-affiche-item__text-overlay-container"> <div class="new-affiche-item__name-buy"> <div class="new-affiche-item-wrapper-name-buy"> <a class="new-affiche-item__name" href="/repertuar/kontsertnye-programmy/shedevry-mirovoy-klassiki/">Шедевры мировой классики</a> <div class="new-affiche-item-buttow-wrapper"> <a-widget
435route="session"
436embed-type="modal"
437session-id="133211715"
438button-text="Купить билет"
439></a-widget> </div> </div> </div> 
440<div class="new-affiche-item__desc-cast new-affiche-item__desc-cast--desktop"> <div class="new-affiche-item__desc"> За один вечер — от Чайковского до Пуччини, от Моцарта до Бизе: гала-концерт «Шедевры мировой классики» даёт редкую возможность услышать лучшие образцы оперной музыки.</div> </div> <div class="new-affiche-item__tags new-tags"> <span class="new-tags__tag">Гала-концерт в двух отделениях</span><span class="new-tags__tag">12+</span><span class="new-tags__tag new-tags__tag--pushkin"><img src="/local/templates/opera/html/img/@1x/pushkin-card.png" alt="pushkin"></span><span class="new-tags__tag new-tags__tag--icon new-tags__tag--pushkin"><img src="/local/templates/opera/include/images/tabs/svg/dynamic_price_ru.svg" alt="dynamic_price"></span> </div> </div> <div class="new-affiche-item__desc-cast new-affiche-item__desc-cast--mobile"> <button class="new-affiche-item__desc-toggle">Описание</button> <div class="new-affiche-item__desc" style="display:none;"> 
441За один вечер — от Чайковского до Пуччини, от Моцарта до Бизе: гала-концерт «Шедевры мировой классики» даёт редкую возможность услышать лучшие образцы оперной музыки.
442</div> </div> </div> </div> <div class="new-affiche__item new-affiche-item"
443data-ev-id="231"
444data-ev-date="28.10.2026"
445data-render-hash="184081a4eb771110037736e686b0c5ea"> <div class="new-affiche-item__date-img"> <p class="new-affiche-item__date"> <span class="new-affiche-item__date-weekday">
445Ср</span> <span class="new-affiche-item__date-day">28</span> <span class="new-affiche-item__date-month">октября</span> <span class="new-affiche-item__date-year">2026</span> <span class="new-affiche-item__date-time">16:30</span> </p> <a class="new-affiche-item__img-block" href="/repertuar/spektakli/ekskursiya/"> <img class="new-affiche-item__img" src="/upload/iblock/f0b/o1z2nr7tinokqbbbfxsahjx1t9gfkbtd.jpg" loading="lazy" decoding="async" alt="Экскурсия (именные билеты)"> </a> </div> <div class="new-affiche-item__text"> <div class="new-affiche-item__text-overlay-container"> <div class="new-affiche-item__name-buy"> <div class="new-affiche-item-wrapper-name-buy"> <a class="new-affiche-item__name" href="/repertuar/spektakli/ekskursiya/">Экскурсия (именные билеты)</a> <div class="new-affiche-item-buttow-wrapper"> <button class="new-affiche-item__buy new-affiche-item__buy--sold" disabled> Все билеты проданы </button> </div> </div> </div> 
446<div class="new-affiche-item__desc-cast new-affiche-item__desc-cast--desktop"> <div class="new-affiche-item__desc">Экскурсия познакомит с историей и современной жизнью одного из самых роскошных особняков Санкт-Петербурга.</div> </div> <div class="new-affiche-item__tags new-tags"> <span class="new-tags__tag">продолжительность 1,5 часа</span><span class="new-tags__tag">14+</span><span class="new-tags__tag">вход по предъявлению документа</span> </div> </div> <div class="new-affiche-item__desc-cast new-affiche-item__desc-cast--mobile"> <button class="new-affiche-item__desc-toggle">Описание</button> <div class="new-affiche-item__desc" style="display:none;"> Экскурсия познакомит с историей и современной жизнью одного из самых роскошных особняков Санкт-Петербурга. </div> </div> </div> </div> <div class="new-affiche__item new-affiche-item"
447data-ev-id="229"
448data-ev-date="28.10.2026"
449data-render-hash="8f0bc9fe610e0a1a238e2a75b0ce8083"> <div class="new-affiche-item__date-img"> <p class="new-affiche-item__date"> <span class="new-affiche-item__date-weekday">Ср</span> <span class="new-affiche-item__date-day">28</span> <span class="new-affiche-item__date-month">октября</span> <span class="new-affiche-item__date-year">2026</span> <span class="new-affiche-item__date-time">19:00</span> </p> <a class="new-affiche-item__img-block" href="/repertuar/spektakli/cherevichki/"> <img class="new-affiche-item__img" src="/upload/resize_cache/webp/iblock/d9d/7ooz2fyt70lu3z4k09eo0z8k2c4zt5zd.webp" loading="lazy" decoding="async" alt="Черевички"> </a> </div> <div class="new-affiche-item__text"> <div class="new-affiche-item__text-overlay-container"> <div class="new-affiche-item__name-buy"> <div class="author-performance"> <ul> <li> П.И. Чайковский </li> </ul> </div> <div class="new-affiche-item-wrapper-name-buy"> <a class="new-affiche-item__name" href="/repertuar/spektakli/cherevichki/">Черевички</a> <div class="new-affiche-item-buttow-wrapper"> <a-widget
450route="session"
451embed-type="modal"
452session-id="133211728"
453button-text="Купить билет"
454></a-widget> <a data-id="229" data-format="new" data-date="28.10.2026 19:00" data-lang="ru" href="javascript:;" class="new-affiche-item__cast show-cast-js green-tr-btn"> Состав на дату </a> </div> </div> </div> 
455<div class="new-affiche-item__desc-cast new-affiche-item__desc-cast--desktop"> <div class="new-affiche-item__desc"> «Черевички» — любимая многими сказочная история о кузнеце Вакуле, красавице Оксане, «несравненной» Солохе и других персонажах повести 
456Н.В. Гоголя «Ночь перед Рождеством».
457</div> </div> <div class="new-affiche-item__tags new-tags"> <span class="new-tags__tag">Фантастическая сказка</span><span class="new-tags__tag">12+</span><span class="new-tags__tag new-tags__tag--pushkin"><img src="/local/templates/opera/html/img/@1x/pushkin-card.png" alt="pushkin"></span> </div> </div> <div class="new-affiche-item__desc-cast new-affiche-item__desc-cast--mobile"> <button class="new-affiche-item__desc-toggle">Описание</button> <div class="new-affiche-item__desc" style="display:none;"> 
458«Черевички» — любимая многими сказочная история о кузнеце Вакуле, красавице Оксане, «несравненной» Солохе и других персонажах повести 
459Н.В. Гоголя «Ночь перед Рождеством».
460</div> <a data-id="229" data-format="new" data-date="28.10.2026 19:00" data-lang="ru" href="javascript:;" class="new-affiche-item__cast show-cast-js green-tr-btn">
460 Состав на дату </a> </div> </div> </div> <div class="new-affiche__item new-affiche-item"
461data-ev-id="222"
462data-ev-date="29.10.2026"
463data-render-hash="c6bbcdb457da8c308fddd8373ad3f691"> <div class="new-affiche-item__date-img"> <p class="new-affiche-item__date"> <span class="new-affiche-item__date-weekday">Чт</span> <span class="new-affiche-item__date-day">29</span> <span class="new-affiche-item__date-month">октября</span> <span class="new-affiche-item__date-year">2026</span> <span class="new-affiche-item__date-time">19:00</span> </p> <a class="new-affiche-item__img-block" href="/repertuar/spektakli/3-rigoletto/"> <img class="new-affiche-item__img" src="/upload/iblock/fb4/6afgfu2lgc3uzeex48ik7at3i223ezvo.jpg" loading="lazy" decoding="async" alt="Риголетто"> </a> </div> <div class="new-affiche-item__text"> <div class="new-affiche-item__text-overlay-container"> <div class="new-affiche-item__name-buy"> <div class="author-performance"> <ul> <li> Дж. Верди </li> </ul> </div> <div class="new-affiche-item-wrapper-name-buy"> <a class="new-affiche-item__name" href="/repertuar/spektakli/3-rigoletto/">Риголетто</a> <div class="new-affiche-item-buttow-wrapper"> <a-widget
464route="session"
465embed-type="modal"
466session-id="133211730"
467button-text="Купить билет"
468></a-widget> <a data-id="222" data-format="new" data-date="29.10.2026 19:00" data-lang="ru" href="javascript:;" class="new-affiche-item__cast show-cast-js green-tr-btn"> Состав на дату </a> </div> </div> </div> 
469<div class="new-affiche-item__desc-cast new-affiche-item__desc-cast--desktop"> <div class="new-affiche-item__desc"> Главным в спектакле театра становится мотив маски, зловещего маскарада жизни.</div> </div> <div class="new-affiche-item__tags new-tags"> <span class="new-tags__tag">На сцене Эрмитажного театра</span><span class="new-tags__tag">Музыкальная драма в трех действиях</span><span class="new-tags__tag">16+</span><span class="new-tags__tag new-tags__tag--icon new-tags__tag--pushkin"><img src="/local/templates/opera/include/images/tabs/svg/dynamic_price_ru.svg" alt="dynamic_price"></span> </div> </div> <div class="new-affiche-item__desc-cast new-affiche-item__desc-cast--mobile"> <button class="new-affiche-item__desc-toggle">Описание</button> <div class="new-affiche-item__desc" style="display:none;"> 
470Главным в спектакле театра становится мотив маски, зловещего маскарада жизни.
471</div> <a data-id="222" data-format="new" data-date="29.10.2026 19:00" data-lang="ru" href="javascript:;" class="new-affiche-item__cast show-cast-js green-tr-btn"> Состав на дату </a> </div> </div> </div> <div class="new-affiche__item new-affiche-item"
472data-ev-id="231"
473data-ev-date="30.10.2026"
474data-render-hash="f89c52aa698947411570cfd2ba735820"> <div class="new-affiche-item__date-img"> <p class="new-affiche-item__date"> <span class="new-affiche-item__date-weekday">Пт</span> <span class="new-affiche-item__date-day">30</span> <span class="new-affiche-item__date-month">октября</span> <span class="new-affiche-item__date-year">2026</span> <span class="new-affiche-item__date-time">16:30</span> </p> <a class="new-affiche-item__img-block" href="/repertuar/spektakli/ekskursiya/"> <img class="new-affiche-item__img" src="/upload/iblock/f0b/o1z2nr7tinokqbbbfxsahjx1t9gfkbtd.jpg" loading="lazy" decoding="async" alt="Экскурсия (именные билеты)"> </a> </div> <div class="new-affiche-item__text"> <div class="new-affiche-item__text-overlay-container"> <div class="new-affiche-item__name-buy"> <div class="new-affiche-item-wrapper-name-buy"> <a class="new-affiche-item__name" href="/repertuar/spektakli/ekskursiya/">Экскурсия (именные билеты)</a> <div class="new-affiche-item-buttow-wrapper"> <button class="new-affiche-item__buy new-affiche-item__buy--sold" disabled> Все билеты проданы </button> </div> </div> </div> 
475<div class="new-affiche-item__desc-cast new-affiche-item__desc-cast--desktop"> <div class="new-affiche-item__desc">Экскурсия познакомит с историей и современной жизнью одного из самых роскошных особняков Санкт-Петербурга.</div> </div> <div class="new-affiche-item__tags new-tags"> <span class="new-tags__tag">
475продолжительность 1,5 часа</span><span class="new-tags__tag">14+</span><span class="new-tags__tag">вход по предъявлению документа</span> </div> </div> <div class="new-affiche-item__desc-cast new-affiche-item__desc-cast--mobile"> <button class="new-affiche-item__desc-toggle">Описание</button> <div class="new-affiche-item__desc" style="display:none;"> Экскурсия познакомит с историей и современной жизнью одного из самых роскошных особняков Санкт-Петербурга. </div> </div> </div> </div> <div class="new-affiche__item new-affiche-item"
476data-ev-id="213"
477data-ev-date="30.10.2026"
478data-render-hash="f09e0b9ae16fdcad4f24368d6ed3776e"> <div class="new-affiche-item__date-img"> <p class="new-affiche-item__date"> <span class="new-affiche-item__date-weekday">Пт</span> <span class="new-affiche-item__date-day">30</span> <span class="new-affiche-item__date-month">октября</span> <span class="new-affiche-item__date-year">2026</span> <span class="new-affiche-item__date-time">19:00</span> </p> <a class="new-affiche-item__img-block" href="/repertuar/spektakli/2-ne-tolko-lyubov/"> <img class="new-affiche-item__img" src="/upload/iblock/e43/de4vx8oo93jxlpaj9ij6n5ujl0skulh3.jpg" loading="lazy" decoding="async" alt="Не только любовь"> </a> </div> <div class="new-affiche-item__text"> <div class="new-affiche-item__text-overlay-container"> <div class="new-affiche-item__name-buy"> <div class="author-performance"> <ul> <li> Р. Щедрин </li> </ul> </div> <div class="new-affiche-item-wrapper-name-buy"> <a class="new-affiche-item__name" href="/repertuar/spektakli/2-ne-tolko-lyubov/">Не только любовь</a> <div class="new-affiche-item-buttow-wrapper"> <a-widget
479route="session"
480embed-type="modal"
481session-id="133211729"
482button-text="Купить билет"
483></a-widget> <a data-id="213" data-format="new" data-date="30.10.2026 19:00" data-lang="ru" href="javascript:;" class="new-affiche-item__cast show-cast-js green-tr-btn"> Состав на дату </a> </div> </div> </div> 
484<div class="new-affiche-item__desc-cast new-affiche-item__desc-cast--desktop"> <div class="new-affiche-item__desc"> «Не только любовь» — яркий, искрометный спектакль, приближенный к жанру мюзикла. </div> </div> <div class="new-affiche-item__tags new-tags"> <span class="new-tags__tag">Лирическая опера в двух действиях</span><span class="new-tags__tag">16+</span><span class="new-tags__tag">Театральный зал</span><span class="new-tags__tag new-tags__tag--pushkin"><img src="/local/templates/opera/html/img/@1x/pushkin-card.png" alt="pushkin"></span> </div> </div> <div class="new-affiche-item__desc-cast new-affiche-item__desc-cast--mobile"> <button class="new-affiche-item__desc-toggle">Описание</button> <div class="new-affiche-item__desc" style="display:none;"> 
485«Не только любовь» — яркий, искрометный спектакль, приближенный к жанру мюзикла. 
486</div> <a data-id="213" data-format="new" data-date="30.10.2026 19:00" data-lang="ru" href="javascript:;" class="new-affiche-item__cast show-cast-js green-tr-btn"> Состав на дату </a> </div> </div> </div> <div class="new-affiche__item new-affiche-item"
487data-ev-id="206"
488data-ev-date="31.10.2026"
489data-render-hash="3b5e6cf8f410fc37771f7ee0e1a0d561"> <div class="new-affiche-item__date-img"> <p class="new-affiche-item__date"> <span class="new-affiche-item__date-weekday">Сб</span> <span class="new-affiche-item__date-day">31</span> <span class="new-affiche-item__date-month">октября</span> <span class="new-affiche-item__date-year">2026</span> <span class="new-affiche-item__date-time">12:00</span> </p> <a class="new-affiche-item__img-block" href="/repertuar/detskie-spektakli/krasnaya-shapochka/"> <img class="new-affiche-item__img" src="/upload/iblock/e18/cpe5hkel0lhnmzo5iia1qh4skvsivfvg.jpg" loading="lazy" decoding="async" alt="Красная Шапочка"> </a> </div> <div class="new-affiche-item__text"> <div class="new-affiche-item__text-overlay-container"> <div class="new-affiche-item__name-buy"> <div class="author-performance"> <ul> <li> Ц.А. Кюи </li> </ul> </div> <div class="new-affiche-item-wrapper-name-buy"> <a class="new-affiche-item__name" href="/repertuar/detskie-spektakli/krasnaya-shapochka/">Красная Шапочка</a> <div class="new-affiche-item-buttow-wrapper"> <a-widget
490route="session"
491embed-type="modal"
492session-id="133211718"
493button-text="Купить билет"
494></a-widget> <a data-id="206" data-format="new" data-date="31.10.2026 12:00" data-lang="ru" href="javascript:;" class="new-affiche-item__cast show-cast-js green-tr-btn">
494 Состав на дату </a> </div> </div> </div> 
495<div class="new-affiche-item__desc-cast new-affiche-item__desc-cast--desktop"> <div class="new-affiche-item__desc"> Опера «Красная Шапочка», посвященная цесаревичу Алексею Романову, была написана в 1911 году.</div> </div> <div class="new-affiche-item__tags new-tags"> <span class="new-tags__tag">Мировой эксклюзив</span><span class="new-tags__tag">Музыкальная сказка для детей и взрослых с пением и танцами с одним антрактом</span><span class="new-tags__tag">6+</span><span class="new-tags__tag">Театральный зал</span><span class="new-tags__tag new-tags__tag--pushkin"><img src="/local/templates/opera/html/img/@1x/pushkin-card.png" alt="pushkin"></span> </div> </div> <div class="new-affiche-item__desc-cast new-affiche-item__desc-cast--mobile"> <button class="new-affiche-item__desc-toggle">Описание</button> <div class="new-affiche-item__desc" style="display:none;"> 
496Опера «Красная Шапочка», посвященная цесаревичу Алексею Романову, была написана в 1911 году.
497</div> <a data-id="206" data-format="new" data-date="31.10.2026 12:00" data-lang="ru" href="javascript:;" class="new-affiche-item__cast show-cast-js green-tr-btn"> Состав на дату </a> </div> </div> </div> <div class="new-affiche__item new-affiche-item"
498data-ev-id="206"
499data-ev-date="31.10.2026"
500data-render-hash="2fb06ad75b2ce655975c8d1e6731e689"> <div class="new-affiche-item__date-img"> <p class="new-affiche-item__date"> <span class="new-affiche-item__date-weekday">Сб</span> <span class="new-affiche-item__date-day">31</span> <span class="new-affiche-item__date-month">октября</span> <span class="new-affiche-item__date-year">2026</span> <span class="new-affiche-item__date-time">15:00</span> </p> <a class="new-affiche-item__img-block" href="/repertuar/detskie-spektakli/krasnaya-shapochka/"> <img class="new-affiche-item__img" src="/upload/iblock/e18/cpe5hkel0lhnmzo5iia1qh4skvsivfvg.jpg" loading="lazy" decoding="async" alt="Красная Шапочка"> </a> </div> <div class="new-affiche-item__text"> <div class="new-affiche-item__text-overlay-container"> <div class="new-affiche-item__name-buy"> <div class="author-performance"> <ul> <li> Ц.А. Кюи </li> </ul> </div> <div class="new-affiche-item-wrapper-name-buy"> <a class="new-affiche-item__name" href="/repertuar/detskie-spektakli/krasnaya-shapochka/">Красная Шапочка</a> <div class="new-affiche-item-buttow-wrapper"> <a-widget
501route="session"
502embed-type="modal"
503session-id="133211719"
504button-text="Купить билет"
505></a-widget> <a data-id="206" data-format="new" data-date="31.10.2026 15:00" data-lang="ru" href="javascript:;" class="new-affiche-item__cast show-cast-js green-tr-btn"> Состав на дату </a> </div> </div> </div> 
506<div class="new-affiche-item__desc-cast new-affiche-item__desc-cast--desktop"> <div class="new-affiche-item__desc"> Опера «Красная Шапочка», посвященная цесаревичу Алексею Романову, была написана в 1911 году.</div> </div> <div class="new-affiche-item__tags new-tags"> <span class="new-tags__tag">Мировой эксклюзив</span><span class="new-tags__tag">Музыкальная сказка для детей и взрослых с пением и танцами с одним антрактом</span><span class="new-tags__tag">6+</span><span class="new-tags__tag">Театральный зал</span><span class="new-tags__tag new-tags__tag--pushkin"><img src="/local/templates/opera/html/img/@1x/pushkin-card.png" alt="pushkin"></span> </div> </div> <div class="new-affiche-item__desc-cast new-affiche-item__desc-cast--mobile"> <button class="new-affiche-item__desc-toggle">Описание</button> <div class="new-affiche-item__desc" style="display:none;"> 
507Опера «Красная Шапочка», посвященная цесаревичу Алексею Романову, была написана в 1911 году.
508</div> <a data-id="206" data-format="new" data-date="31.10.2026 15:00" data-lang="ru" href="javascript:;" class="new-affiche-item__cast show-cast-js green-tr-btn">
508 Состав на дату </a> </div> </div> </div> <div class="new-affiche__item new-affiche-item"
509data-ev-id="789"
510data-ev-date="31.10.2026"
511data-render-hash="857bedc7852f38460429327d93e7a538"> <div class="new-affiche-item__date-img"> <p class="new-affiche-item__date"> <span class="new-affiche-item__date-weekday">Сб</span> <span class="new-affiche-item__date-day">31</span> <span class="new-affiche-item__date-month">октября</span> <span class="new-affiche-item__date-year">2026</span> <span class="new-affiche-item__date-time">19:00</span> </p> <a class="new-affiche-item__img-block" href="/repertuar/kontsertnye-programmy/opera-i-operetta/"> <img class="new-affiche-item__img" src="/upload/iblock/3f8/uw6mox49g997lnh0mtnp7rwyb05yiq0y.jpg" loading="lazy" decoding="async" alt="Опера и оперетта"> </a> </div> <div class="new-affiche-item__text"> <div class="new-affiche-item__text-overlay-container"> <div class="new-affiche-item__name-buy"> <div class="new-affiche-item-wrapper-name-buy"> <a class="new-affiche-item__name" href="/repertuar/kontsertnye-programmy/opera-i-operetta/">Опера и оперетта</a> <div class="new-affiche-item-buttow-wrapper"> <a-widget
512route="session"
513embed-type="modal"
514session-id="133211727"
515button-text="Купить билет"
516></a-widget> </div> </div> </div> 
517<div class="new-affiche-item__desc-cast new-affiche-item__desc-cast--desktop"> <div class="new-affiche-item__desc"> Лучшие хиты мировой оперы и самые яркие страницы оперетты — в одном праздничном концерте.</div> </div> <div class="new-affiche-item__tags new-tags"> <span class="new-tags__tag">гала-концерт в двух отделениях</span><span class="new-tags__tag">12+</span><span class="new-tags__tag new-tags__tag--pushkin"><img src="/local/templates/opera/html/img/@1x/pushkin-card.png" alt="pushkin"></span> </div> </div> <div class="new-affiche-item__desc-cast new-affiche-item__desc-cast--mobile"> <button class="new-affiche-item__desc-toggle">Описание</button> <div class="new-affiche-item__desc" style="display:none;"> 
518Лучшие хиты мировой оперы и самые яркие страницы оперетты — в одном праздничном концерте.
519</div> </div> </div> </div> </div> <div id="aff-load-spinner" style="display:none; text-align:center; padding:12px 0px;"> <div style="display:inline-block; padding:8px 12px; border-radius:8px; background:#fff; box-shadow:0 6px 20px rgba(0,0,0,0.08);"> <svg width="28" height="28" viewBox="0 0 50 50" aria-hidden="true"><path fill="#111" d="M43.935,25.145c0-10.318-8.364-18.681-18.681-18.681c-10.318,0-18.681,8.363-18.681,18.681h4.068 c0-8.077,6.536-14.613,14.613-14.613c8.077,0,14.613,6.536,14.613,14.613H43.935z"><animateTransform attributeType="xml" attributeName="transform" type="rotate" from="0 25 25" to="360 25 25" dur="0.9s" repeatCount="indefinite"></animateTransform></path></svg> </div> </div> <div id="aff-list-end-sentinel" style="height:1px; width:100%;"></div> </div> </div> </div> </div> </div></section><div id="global-affiche-loader" class="global-affiche-loader" aria-hidden="true" role="status" aria-live="polite"> <div class="global-affiche-loader__box" role="alert"> <div class="global-affiche-loader__spinner" aria-hidden="true"></div> </div></div>
519<script> window.SITE_LAST_EVENT_TS = 1798729200000 || 0;
520window.AVAILABLE_MONTHS_BY_YEAR = {"2026":[1,2,3,4,5,6,7,9,10,11,12],"2022":[1,2,3,4,5,6,7,9,10,11,12],"2023":[1,2,3,4,5,6,8,9,10,11,12],"2024":[1,2,3,4,5,6,7,9,10,11,12],"2025":[1,2,3,4,5,6,7,9,10,11,12]}|| {};
521window.AVAILABLE_YEARS = [2022,2023,2024,2025,2026] || [];
522window.AVAILABLE_AGES_GLOBAL = [6,12,14,16,18] || [];</script>
522<script>(function(){
523'use strict';
524const DEBOUNCE_MS = 220;
525const LOAD_MARGIN_PX = 200;
526const MAX_YEARS_AHEAD = 0;
527const SITE_CURRENT_YEAR = 2026;
528const PAUSE_MS = 1000;
529const BTN_SELECTOR = '.new-affiche__infinite-pass-btn';
530function cssEscape(s) {
531if (typeof s !== 'string') s = String(s == null ? '' : s);
532if (window.CSS && typeof CSS.escape === 'function') return CSS.escape(s);
533return s.replace(/(["\\\0])/g, '\\$1').replace(/([^\x20-\x7E])/g, function(ch){
534return '\\' + ch.charCodeAt(0).toString(16) + ' ';
535});
536}function _aff_getTimestampFromItem(el){
537if (!el) return 0;
538const dataDate = (el.getAttribute('data-ev-date') || el.getAttribute('data-date') || '').trim();
539const timeNode = el.querySelector('.new-affiche-item__date-time');
540let datePart = dataDate;
541let timePart = timeNode ? timeNode.textContent.trim() : '';
542if (!timePart) {
543const m = dataDate.match(/^(\d{1,2}\.\d{1,2}\.\d{4})\s+(\d{1,2}:\d{2})$/);
544if (m) { datePart = m[1]; timePart = m[2]; }}if (!timePart){
545const anyTime = el.textContent.match(/(\d{1,2}:\d{2})/);
546if (anyTime) timePart = anyTime[1];
547}if (!datePart) return 0;
548const dm = datePart.match(/(\d{1,2})\.(\d{1,2})\.(\d{4})/);
549if (!dm) return 0;
550const day = parseInt(dm[1],10), mon = parseInt(dm[2],10)-1, year = parseInt(dm[3],10);
551let hour = 0, min = 0;
552if (timePart){
553const tm = timePart.match(/(\d{1,2}):(\d{2})/);
554if (tm){ hour = parseInt(tm[1],10); min = parseInt(tm[2],10); }}return (new Date(year, mon, day, hour, min)).getTime();
555}function sortAfficheList(root){
556try {
557const list = root || document.querySelector('.new-affiche__list');
558if (!list) return;
559const items = Array.from(list.querySelectorAll('.new-affiche__item, .new-affiche-item'));
560if (!items.length) return;
561items.sort((a,b) => {
562const ta = _aff_getTimestampFromItem(a) || 0;
563const tb = _aff_getTimestampFromItem(b) || 0;
564if (ta !== tb) return ta - tb;
565const ha = a.getAttribute('data-render-hash') || '';
566const hb = b.getAttribute('data-render-hash') || '';
567if (ha && hb && ha !== hb) return ha < hb ? -1 : 1;
568const ida = parseInt(a.getAttribute('data-ev-id')||a.getAttribute('data-event-id')||0,10)||0;
569const idb = parseInt(b.getAttribute('data-ev-id')||b.getAttribute('data-event-id')||0,10)||0;
570return ida - idb;
571});
572const frag = document.createDocumentFragment();
573items.forEach(it => frag.appendChild(it));
574list.appendChild(frag);
575}catch(e){
576// console.error('sortAfficheList error', e);
577}}function _findInlineSpinner() {
578return document.getElementById('aff-load-spinner') || document.querySelector('.aff-load-spinner') || null;
579}function _findGlobalOverlay() {
580return document.getElementById('global-affiche-loader') || null;
581}function showLoader({overlay=true}= {}) {
582try {
583const s = _findInlineSpinner();
584if (s) {
585s.style.display = 'block';
586s.style.visibility = 'visible';
587s.setAttribute('aria-hidden','false');
588}}catch(e){}if (overlay) {
589try {
590const g = _findGlobalOverlay();
591if (g) {
592g.setAttribute('aria-hidden','false');
593g.style.display = 'flex';
594document.documentElement.classList.add('no-scroll');
595document.body.classList.add('no-scroll');
596}}catch(e){}}}function hideLoader({overlay=true}= {}) {
597try {
598const s = _findInlineSpinner();
599if (s) {
600s.style.display = 'none';
601s.setAttribute('aria-hidden','true');
602}}catch(e){}if (overlay) {
603try {
604const g = _findGlobalOverlay();
605if (g) {
606g.setAttribute('aria-hidden','true');
607g.style.display = 'none';
608document.documentElement.classList.remove('no-scroll');
609document.body.classList.remove('no-scroll');
610}}catch(e){}}}if (typeof window._aff_lastUserScrollTs === 'undefined') window._aff_lastUserScrollTs = 0;
611if (typeof window._aff_userLastScrollDir === 'undefined') window._aff_userLastScrollDir = null;
612if (typeof window._aff_programmaticScrollUntil === 'undefined') window._aff_programmaticScrollUntil = 0;
613if (typeof window._aff_infinitePaused === 'undefined') window._aff_infinitePaused = false;
614if (typeof window._aff_pauseStartedAt === 'undefined') window._aff_pauseStartedAt = 0;
615const PROGRAMMATIC_SCROLL_GRACE_MS = 900;
616const USER_SCROLL_ALLOW_MS = 1500;
617function markUserScroll(dir){
618window._aff_userLastScrollDir = dir;
619window._aff_lastUserScrollTs = Date.now();
620}window.addEventListener('wheel', function(e){
621try {
622if (typeof e.deltaY === 'number') {
623if (e.deltaY > 0) markUserScroll('down');
624else if (e.deltaY < 0) markUserScroll('up');
625}}catch(e){}}, { passive: true });
626(function(){
627let touchStartY = null;
628window.addEventListener('touchstart', function(e){
629if (e.touches && e.touches[0]) touchStartY = e.touches[0].clientY;
630}, { passive: true });
631window.addEventListener('touchmove', function(e){
632try {
633if (!touchStartY) return;
634const nowY = (e.touches && e.touches[0]) ? e.touches[0].clientY : null;
635if (nowY === null) return;
636const diff = touchStartY - nowY;
637if (Math.abs(diff) < 6) return;
638if (diff > 0) markUserScroll('down'); else markUserScroll('up');
639touchStartY = nowY;
640}catch(e){}}, { passive: true });
641window.addEventListener('touchend', function(){ touchStartY = null; }, { passive: true });
642})();
643window.addEventListener('keydown', function(e){
644try {
645const k = e.key || e.keyCode;
646if (k === 'PageDown' || k === ' ' || k === 'Spacebar' || k === 'ArrowDown' || k === 34 || k === 32 || k === 40) {
647markUserScroll('down');
648}else if (k === 'PageUp' || k === 'ArrowUp' || k === 33 || k === 38) {
649markUserScroll('up');
650}}catch(e){}}, { passive: true });
651(function(){
652let lastY = (typeof window.scrollY !== 'undefined') ? window.scrollY : (window.pageYOffset || 0);
653window.addEventListener('scroll', function(){
654try {
655const curY = (typeof window.scrollY !== 'undefined') ? window.scrollY : (window.pageYOffset || 0);
656if (curY > lastY + 2) markUserScroll('down');
657else if (curY < lastY - 2) markUserScroll('up');
658lastY = curY;
659}catch(e){}}, { passive: true });
660})();
661function recentUserScrolledDown(){
662const ts = window._aff_lastUserScrollTs || 0;
663const dir = window._aff_userLastScrollDir;
664if (window._aff_infinitePaused) return false;
665if (window._aff_pauseStartedAt && (Date.now() - window._aff_pauseStartedAt) <= PAUSE_MS) return false;
666return (dir === 'down') && (Date.now() - ts <= USER_SCROLL_ALLOW_MS);
667}function pageNearBottom() {
668try {
669const doc = document.documentElement || document.body;
670const scrollTop = window.scrollY || window.pageYOffset || (doc && doc.scrollTop) || 0;
671const total = Math.max(document.documentElement.scrollHeight, document.body.scrollHeight);
672const remaining = total - (scrollTop + window.innerHeight);
673return remaining <= LOAD_MARGIN_PX;
674}catch(e) {
675return false;
676}}function getUrlParamsObj(){
677const usp = new URLSearchParams(window.location.search);
678const obj = {};
679for (const [rawKey, value] of usp.entries()){
680const key = rawKey.replace(/\[\]$/, '');
681if (obj.hasOwnProperty(key)){
682if (!Array.isArray(obj[key])) obj[key] = [obj[key]];
683obj[key].push(value);
684}else obj[key] = value;
685}return obj;
686}function buildUrlFromParams(params){
687const url = new URL(window.location.pathname, window.location.origin);
688Object.keys(params).forEach(k=>{
689const v = params[k];
690if (Array.isArray(v)){
691v.forEach(x => { if (x !== undefined && x !== null && x !== '') url.searchParams.append(k+'[]', x); });
692}else {
693if (v !== undefined && v !== null && String(v) !== '') url.searchParams.set(k, v);
694}});
695return url;
696}function getMinimumAvailableAge(){
697const ages = [];
698if (Array.isArray(window.AVAILABLE_AGES_GLOBAL)) {
699window.AVAILABLE_AGES_GLOBAL.forEach(value => {
700const age = parseInt(value, 10);
701if (Number.isFinite(age)) ages.push(age);
702});
703}const ageEl = document.getElementById('AFFICHE_AGE');
704if (!ages.length && ageEl) {
705Array.from(ageEl.options || []).forEach(option => {
706const age = parseInt(option.value, 10);
707if (Number.isFinite(age)) ages.push(age);
708});
709}return ages.length ? String(Math.min.apply(null, ages)) : '0';
710}function syncFilterSelectFromResponse(doc, selectId, forcedValue){
711const currentEl = document.getElementById(selectId);
712const responseEl = doc && doc.getElementById ? doc.getElementById(selectId) : null;
713if (!currentEl || !responseEl || !responseEl.options.length) return;
714const options = Array.from(responseEl.options).map(option => {
715const clone = new Option(option.text, option.value, option.defaultSelected, option.selected);
716clone.disabled = option.disabled;
717return clone;
718});
719while (currentEl.options.length) currentEl.remove(0);
720options.forEach(option => currentEl.add(option));
721currentEl.value = forcedValue !== undefined && forcedValue !== null ? String(forcedValue) : responseEl.value;
722if (currentEl.selectedIndex < 0 && currentEl.options.length) currentEl.selectedIndex = 0;
723try {
724if (window.jQuery && jQuery(currentEl).data('select2')) {
725jQuery(currentEl).trigger('change.select2');
726}}catch(e){}}function syncAgeFilterFromResponse(doc){
727syncFilterSelectFromResponse(doc, 'AFFICHE_AGE');
728}function syncInfiniteFiltersFromResponse(doc, month, year){
729if (!doc) return;
730syncFilterSelectFromResponse(doc, 'AFFICHE_YEAR', year);
731syncFilterSelectFromResponse(doc, 'AFFICHE_MONTH', month);
732syncAgeFilterFromResponse(doc);
733const scheduleEl = document.getElementById('schedule');
734if (scheduleEl) scheduleEl.setAttribute('data-year', String(year));
735try {
736const clean = paramsFromUi({});
737if (clean && clean._aff_set) delete clean._aff_set;
738history.replaceState(null, '', buildUrlFromParams(clean).toString());
739}catch(e){}}window._news_ajax = window._news_ajax || {
740controller: null,
741inFlight: false,
742lastSuccessKey: null,
743debounceTimer: null,
744pendingExtra: null,
745debounceDelay: DEBOUNCE_MS
746};
747function paramsFromUi(extra){
748const params = getUrlParamsObj();
749const monthEl = document.getElementById('AFFICHE_MONTH');
750const yearEl = document.getElementById('AFFICHE_YEAR');
751const ageEl = document.getElementById('AFFICHE_AGE');
752if (monthEl) params['month'] = monthEl.value;
753if (yearEl) params['YEAR'] = yearEl.value;
754if (ageEl) params['AGE'] = ageEl.value;
755function checkboxState(id, fallbackName){
756const el = document.getElementById(id);
757if (el && typeof el.checked !== 'undefined') return el.checked ? '1' : '0';
758const byName = document.querySelector('input[name="'+fallbackName+'"]');
759if (byName && typeof byName.checked !== 'undefined') return byName.checked ? '1' : '0';
760const usp = new URLSearchParams(window.location.search);
761const existing = usp.get(fallbackName);
762if (existing !== null) return existing;
763return '1';
764}params['plays'] = checkboxState('AFFICHE_CHKBX_1', 'plays');
765params['concerts'] = checkboxState('AFFICHE_CHKBX_2', 'concerts');
766params['tours'] = checkboxState('AFFICHE_CHKBX_3', 'tours');
767const checkedSections = Array.from(document.querySelectorAll('.section-checkbox:checked')).map(ch=>ch.value);
768if (checkedSections.length) params['SECTION_ID'] = checkedSections;
769else delete params['SECTION_ID'];
770if (extra && extra.clearDay) delete params['day'];
771if (extra){
772if (extra.day) params['day'] = extra.day;
773if (extra.month) params['month'] = extra.month;
774if (extra.YEAR) params['YEAR'] = extra.YEAR;
775if (extra.resetAge) params['AGE'] = getMinimumAvailableAge();
776}return params;
777}function _makeKey(params){
778const keys = Object.keys(params).sort();
779const obj = {};
780keys.forEach(k => { const v = params[k]; if (Array.isArray(v)) obj[k] = v.slice().sort(); else obj[k] = v; });
781try { return JSON.stringify(obj); }catch(e) { return String(Date.now()); }}function scheduleNewsAjax(extra){
782window._news_ajax.pendingExtra = extra || {};
783if (window._news_ajax.debounceTimer) clearTimeout(window._news_ajax.debounceTimer);
784window._news_ajax.debounceTimer = setTimeout(()=> {
785window._news_ajax.debounceTimer = null;
786newsAjaxFetch(window._news_ajax.pendingExtra || {});
787window._news_ajax.pendingExtra = null;
788}, window._news_ajax.debounceDelay);
789console.log('scheduleNewsAjax', '--OK');
790}function dedupeDomByRenderHash(){
791try {
792const seen = new Set();
793const nodes = document.querySelectorAll('[data-render-hash]');
794for (const node of nodes) {
795const id = node.getAttribute('data-render-hash');
796if (!id) continue;
797if (seen.has(id)) {
798try {
799const info = {
800where: 'dedupeDomByRenderHash',
801hash: id,
802evId: node.getAttribute('data-ev-id') || node.getAttribute('data-event-id') || null,
803evDate: node.getAttribute('data-ev-date') || node.getAttribute('data-date') || null
804};
805// console.warn('Removing duplicate node (dedupeDomByRenderHash):', info, node);
806// console.trace();
807}catch(__) {}if (node.parentNode) node.parentNode.removeChild(node);
808}else {
809seen.add(id);
810}}}catch(e){}}class AfficheLoader {
811constructor(opts = {}){
812this.listSelector = opts.listSelector || '.new-affiche__list';
813this.itemSelector = opts.itemSelector || '.new-affiche__item';
814this.sentinelId = opts.sentinelId || 'aff-list-end-sentinel';
815this.spinnerId = opts.spinnerId || 'aff-load-spinner';
816this.listEl = document.querySelector(this.listSelector);
817this.sentinel = document.getElementById(this.sentinelId);
818this.spinner = document.getElementById(this.spinnerId);
819this.existing = new Set();
820this.loadedMonths = {};
821this.loading = false;
822this._loadNextInProgress = false;
823this._dedupeMO = null;
824this.lastItemObserver = null;
825this.sentinelObserver = null;
826this.targetLastTs = (typeof window.SITE_LAST_EVENT_TS === 'number' && window.SITE_LAST_EVENT_TS > 0) ? window.SITE_LAST_EVENT_TS : 0;
827this._allLoaded = false;
828this.initFromDom();
829this._createDedupeObserver();
830this.initObserver();
831window.afficheLoader = this;
832try { dedupeDomByRenderHash(); }catch(e){}try { window._aff_normalizeAllAfficheItems(this.listEl); }catch(e){}try {
833if (this.listEl) {
834const itemsNow = this.listEl.querySelectorAll(this.itemSelector);
835if (!itemsNow || itemsNow.length === 0) {
836setTimeout(()=> {
837try { if (!this.loading) this.loadNext(); }catch(e){}}, 120);
838}}}catch(e){}}safeInt(v, def=0){ const n = parseInt(v,10); return isNaN(n)?def:n; }mkKey(y,m){ return y + '-' + m; }normalizeDateKey(dateStr){
839const d = (dateStr || '').trim();
840const parts = d.split('.');
841if (parts.length < 3) return d;
842const dd = ('0' + parseInt(parts[0],10)).slice(-2);
843const mm = ('0' + parseInt(parts[1],10)).slice(-2);
844const yy = String(parseInt(parts[2],10));
845return dd + '.' + mm + '.' + yy;
846}nodeKey(node){
847try {
848if (!node || node.nodeType !== 1) return '';
849const hash = node.getAttribute && node.getAttribute('data-render-hash');
850if (hash) return 'h|' + String(hash);
851const id = node.getAttribute && (node.getAttribute('data-ev-id') || node.getAttribute('data-event-id') || '');
852const dateRaw = (node.getAttribute && (node.getAttribute('data-ev-date') || node.getAttribute('data-date') || '')) || '';
853const date = (typeof this.normalizeDateKey === 'function') ? this.normalizeDateKey(dateRaw) : dateRaw;
854return 'k|' + String(id) + '|' + String(date);
855}catch(e){ return ''; }}existsInDomByKey(key, nodeToIgnore){
856try {
857if (!key) return false;
858if (key.indexOf('h|') === 0) {
859const hash = key.slice(2);
860try {
861if (window.CSS && typeof CSS.escape === 'function') {
862const found = document.querySelector('[data-render-hash="' + CSS.escape(String(hash)) + '"]');
863return !!(found && found !== nodeToIgnore);
864}else {
865const els = document.querySelectorAll('[data-render-hash]');
866for (const el of els) if (String(el.getAttribute('data-render-hash')) === String(hash) && el !== nodeToIgnore) return true;
867return false;
868}}catch(e){
869const els = document.querySelectorAll('[data-render-hash]');
870for (const el of els) if (String(el.getAttribute('data-render-hash')) === String(hash) && el !== nodeToIgnore) return true;
871return false;
872}}else if (key.indexOf('k|') === 0) {
873const parts = key.split('|');
874const id = parts[1] || '';
875const date = parts.slice(2).join('|') || '';
876if (!id) return false;
877try {
878const sel = '[data-ev-id="' + (window.CSS && CSS.escape ? CSS.escape(String(id)) : String(id)) + '"],[data-event-id="' + (window.CSS && CSS.escape ? CSS.escape(String(id)) : String(id)) + '"]';
879const cand = document.querySelectorAll(sel);
880for (const c of cand) {
881if (c === nodeToIgnore) continue;
882const cDateRaw = (c.getAttribute('data-ev-date') || c.getAttribute('data-date') || '').trim();
883const cDate = (typeof this.normalizeDateKey === 'function') ? this.normalizeDateKey(cDateRaw) : cDateRaw;
884if (String(cDate) === String(date)) return true;
885}}catch(e){
886const all = document.querySelectorAll(this.itemSelector);
887for (const c of all) {
888if (c === nodeToIgnore) continue;
889const cid = c.getAttribute('data-ev-id') || c.getAttribute('data-event-id') || '';
890if (String(cid) !== String(id)) continue;
891const cDateRaw = (c.getAttribute('data-ev-date') || c.getAttribute('data-date') || '').trim();
892const cDate = (typeof this.normalizeDateKey === 'function') ? this.normalizeDateKey(cDateRaw) : cDateRaw;
893if (String(cDate) === String(date)) return true;
894}}return false;
895}}catch(e){}return false;
896}initFromDom(){
897try {
898this.existing = new Set();
899this.loadedMonths = {};
900if (!this.listEl) this.listEl = document.querySelector(this.listSelector);
901if (!this.listEl) return;
902const items = Array.from(this.listEl.querySelectorAll(this.itemSelector));
903items.forEach(it=>{
904try {
905const key = this.nodeKey(it);
906if (key) this.existing.add(key);
907// помечаем, что этот элемент был на странице при инициализации
908try { if (it && it.setAttribute) it.setAttribute('data-aff-initial', '1'); }catch(_) {}const d = (it.getAttribute('data-ev-date') || it.getAttribute('data-date') || '').trim();
909const p = d.split('.');
910if (p.length>=3){ const mon = this.safeInt(p[1]); const yr = this.safeInt(p[2]); if (mon && yr) this.loadedMonths[this.mkKey(yr,mon)] = true; }}catch(e){}});
911try { dedupeDomByRenderHash(); }catch(e){}}catch(e){}}_createDedupeObserver(){
912try {
913const SELF = this;
914if (!this.listEl || !('MutationObserver' in window)) return;
915try { if (this._dedupeMO) { this._dedupeMO.disconnect(); this._dedupeMO = null; }}catch(e){}this._dedupeMO = new MutationObserver(function(muts){
916try {
917for (const m of muts) {
918const added = Array.from(m.addedNodes || []).filter(n => n && n.nodeType === 1);
919if (!added.length) continue;
920const addedContainer = added.some(n => n.classList && n.classList.contains((SELF.listSelector||'.new-affiche__list').replace(/^\./,'')));
921if (addedContainer || added.length > 8) {
922try {
923SELF.initFromDom();
924}catch(e){}continue;
925}for (const n of added) {
926try {
927if (n.getAttribute && n.getAttribute('data-aff-adding') === '1') continue;
928const candidates = (n.matches && n.matches(SELF.itemSelector)) ? [n] : Array.from(n.querySelectorAll ? n.querySelectorAll(SELF.itemSelector) : []);
929for (const c of candidates) {
930try {
931if (c.getAttribute && c.getAttribute('data-aff-adding') === '1') continue;
932const key = SELF.nodeKey(c);
933if (!key) continue;
934if (SELF.existing && SELF.existing.has(key)) {
935try {
936// Собираем все элементы в DOM, соответствующие этому ключу
937const elements = [];
938try {
939if (key.indexOf('h|') === 0) {
940const hash = key.slice(2);
941try {
942const sel = '[data-render-hash="' + (window.CSS && CSS.escape ? CSS.escape(hash) : hash) + '"]';
943document.querySelectorAll(sel).forEach(el => elements.push(el));
944}catch(e){
945document.querySelectorAll('[data-render-hash]').forEach(el => {
946if (String(el.getAttribute('data-render-hash')) === String(hash)) elements.push(el);
947});
948}}else if (key.indexOf('k|') === 0) {
949const parts = key.split('|');
950const id = parts[1] || '';
951const date = parts.slice(2).join('|') || '';
952const sel = '[data-ev-id="' + (window.CSS && CSS.escape ? CSS.escape(id) : id) + '"],[data-event-id="' + (window.CSS && CSS.escape ? CSS.escape(id) : id) + '"]';
953document.querySelectorAll(sel).forEach(el => {
954const cDateRaw = (el.getAttribute('data-ev-date') || el.getAttribute('data-date') || '').trim();
955const cDate = (typeof SELF.normalizeDateKey === 'function') ? SELF.normalizeDateKey(cDateRaw) : cDateRaw;
956if (String(cDate) === String(date)) elements.push(el);
957});
958}}catch(e){ /* non-fatal */ }// если не нашли через key, попытаемся использовать сам node c как запасной вариант
959if (!elements.length) elements.push(c);
960// Решаем, какой элемент оставить:
961// 1) предпочитаем тот, что помечен data-aff-initial="1"
962// 2) иначе предпочитаем тот, что помечен data-aff-adding="1" (новый)
963// 3) иначе оставляем первый
964let keep = null;
965for (const el of elements) {
966try { if (el && el.getAttribute && String(el.getAttribute('data-aff-initial')) === '1') { keep = el; break; }}catch(_) {}}if (!keep) {
967for (const el of elements) {
968try { if (el && el.getAttribute && String(el.getAttribute('data-aff-adding')) === '1') { keep = el; break; }}catch(_) {}}}if (!keep) keep = elements[0];
969// Удаляем все остальные элементы (оставляем только keep)
970elements.forEach(el => {
971if (!el || el === keep) return;
972try {
973const info = {
974where: '_createDedupeObserver.MutationObserver',
975key: key,
976hash: el.getAttribute && el.getAttribute('data-render-hash'),
977evId: el.getAttribute && (el.getAttribute('data-ev-id') || el.getAttribute('data-event-id')),
978evDate: el.getAttribute && (el.getAttribute('data-ev-date') || el.getAttribute('data-date')),
979keeping: keep && (keep.getAttribute && (keep.getAttribute('data-ev-id') || keep.getAttribute('data-render-hash'))) || null
980};
981// console.warn('MutationObserver removing duplicate node (keeping other):', info, el);
982// console.trace();
983}catch(__) {}try { if (el.parentNode) el.parentNode.removeChild(el); }catch(_) {}});
984// Убедимся, что в множестве existing присутствует ключ
985try { SELF.existing.add(key); }catch(_) {}}catch(e){}}else {
986try { SELF.existing.add(key); }catch(_) {}}}catch(_) {}}}catch(_) {}}}}catch(_) {}});
987this._dedupeMO.observe(this.listEl, { childList: true, subtree: true });
988}catch(e){}}getCurrentFilterParams(){
989const qs = new URLSearchParams(window.location.search);
990const month = (document.getElementById('AFFICHE_MONTH')||{}).value || qs.get('month') || '';
991const YEAR = (document.getElementById('AFFICHE_YEAR')||{}).value || qs.get('YEAR') || '';
992const AGE = (document.getElementById('AFFICHE_AGE')||{}).value || qs.get('AGE') || '';
993const plays = (document.getElementById('AFFICHE_CHKBX_1')||{}).checked ? '1' : (qs.get('plays') || '0');
994const concerts = (document.getElementById('AFFICHE_CHKBX_2')||{}).checked ? '1' : (qs.get('concerts') || '0');
995const tours = (document.getElementById('AFFICHE_CHKBX_3')||{}).checked ? '1' : (qs.get('tours') || '0');
996let sections = qs.getAll('SECTION_ID');
997if (!sections.length) sections = Array.from(document.querySelectorAll('.section-checkbox:checked')).map(x=>x.value);
998return { month, YEAR, AGE, plays, concerts, tours, sections };
999}buildFetchUrl(month, year){
1000const base = window.location.pathname;
1001const params = this.getCurrentFilterParams();
1002params.month = month; params.YEAR = year; params._aff_set = '1';
1003params.AGE = getMinimumAvailableAge();
1004const usp = new URLSearchParams();
1005['month','YEAR','AGE','plays','concerts','tours','_aff_set'].forEach(k=>{
1006if (params[k] !== undefined && params[k] !== null && params[k] !== '') usp.set(k, params[k]);
1007});
1008if (Array.isArray(params.sections) && params.sections.length) params.sections.forEach(s => { if (s !== '') usp.append('SECTION_ID[]', s); });
1009const qs = usp.toString();
1010return base + (qs ? ('?' + qs) : '');
1011}parseResponseItems(html){
1012this._lastResponseDoc = null;
1013try {
1014const doc = new DOMParser().parseFromString(html, 'text/html');
1015this._lastResponseDoc = doc;
1016const list = doc.querySelector(this.listSelector);
1017if (!list) return null;
1018return Array.from(list.children);
1019}catch(e){ return null; }}appendItems(nodes){
1020if (!this.listEl || !Array.isArray(nodes) || nodes.length === 0) return 0;
1021let appended = 0;
1022const frag = document.createDocumentFragment();
1023const cls = this.itemSelector.charAt(0) === '.' ? this.itemSelector.slice(1) : this.itemSelector;
1024const toAddKeys = new Set();
1025for (const node of nodes){
1026try {
1027if (!node.classList || !node.classList.contains(cls)) continue;
1028const hash = node.getAttribute && node.getAttribute('data-render-hash');
1029let key;
1030if (hash) key = 'h|' + String(hash);
1031else {
1032const id = node.getAttribute && (node.getAttribute('data-ev-id') || node.getAttribute('data-event-id') || '');
1033const dateRaw = (node.getAttribute && (node.getAttribute('data-ev-date') || node.getAttribute('data-date') || '')) || '';
1034const date = (typeof this.normalizeDateKey === 'function') ? this.normalizeDateKey(dateRaw) : dateRaw;
1035key = 'k|' + String(id) + '|' + String(date);
1036}if (!key) continue;
1037if (this.existing && this.existing.has && this.existing.has(key)) continue;
1038if (toAddKeys.has(key)) continue;
1039if (this.existsInDomByKey(key, null)) continue;
1040const clone = document.importNode(node, true);
1041try { if (clone.setAttribute) clone.setAttribute('data-aff-adding', '1'); }catch(e){}try {
1042const imgs = clone.querySelectorAll && clone.querySelectorAll('img');
1043if (imgs && imgs.length) {
1044imgs.forEach(im => {
1045if (!im.getAttribute('loading')) im.setAttribute('loading', 'lazy');
1046if (!im.getAttribute('decoding')) im.setAttribute('decoding', 'async');
1047});
1048}}catch(e){}frag.appendChild(clone);
1049toAddKeys.add(key);
1050try { if (!this.existing) this.existing = new Set(); this.existing.add(key); }catch(e){}appended++;
1051}catch(e){}}if (appended) {
1052let moPaused = false;
1053try {
1054if (this._dedupeMO && typeof this._dedupeMO.disconnect === 'function') {
1055try { this._dedupeMO.disconnect(); moPaused = true; }catch(e) {}}}catch(e){}try {
1056this.listEl.appendChild(frag);
1057try {
1058const addedMarked = this.listEl.querySelectorAll('[data-aff-adding="1"]');
1059addedMarked.forEach(el => { try { el.removeAttribute('data-aff-adding'); }catch(_){}});
1060}catch(e){}}catch(e) {}finally {
1061try {
1062if (moPaused) this._createDedupeObserver();
1063}catch(e){}}try { sortAfficheList(this.listEl); }catch(e){}this._observeLastItem();
1064try { dedupeDomByRenderHash(); }catch(e){}try { window._aff_normalizeAllAfficheItems(this.listEl); }catch(e){}// 🔄 Перезагружаем виджеты afisha.ru для новых элементов
1065if (window.reloadAfishaWidgets) {
1066setTimeout(window.reloadAfishaWidgets, 100);
1067}setTimeout(()=>this._maybeLoadMore(), 50);
1068if (this.targetLastTs) {
1069try {
1070const allItems = Array.from(this.listEl.querySelectorAll(this.itemSelector));
1071for (let i = allItems.length - 1; i >= Math.max(0, allItems.length - appended - 10); i--) {
1072const n = allItems[i];
1073const t = _aff_getTimestampFromItem(n);
1074if (t && t >= this.targetLastTs) {
1075this._allLoaded = true;
1076try { if (this.sentinelObserver) { this.sentinelObserver.disconnect(); this.sentinelObserver = null; }}catch(e){}try { if (this.lastItemObserver) { this.lastItemObserver.disconnect(); this.lastItemObserver = null; }}catch(e){}break;
1077}}}catch(e){}}}return appended;
1078}findLastMonthYear(){
1079const items = this.listEl ? this.listEl.querySelectorAll(this.itemSelector) : [];
1080if (items && items.length){
1081let best = null, max = -Infinity;
1082items.forEach(it=>{
1083const d = (it.getAttribute('data-ev-date') || it.getAttribute('data-date') || '').trim();
1084const p = d.split('.');
1085if (p.length>=3){
1086const m = this.safeInt(p[1]);
1087const y = this.safeInt(p[2]);
1088if (m && y){
1089const val = y*100 + m;
1090if (val > max){ max = val; best = { m: m, y: y }; }}}});
1091if (best) return best;
1092}let best=null, max=-Infinity;
1093Object.keys(this.loadedMonths).forEach(k=>{
1094const parts = k.split('-'); const Y = this.safeInt(parts[0]), M = this.safeInt(parts[1]);
1095if (!Y || !M) return; const val = Y*100 + M; if (val > max){ max = val; best = { m:M, y:Y }; }});
1096if (best) return best;
1097return { m: this.safeInt((document.getElementById('AFFICHE_MONTH')||{}).value) || (new Date()).getMonth()+1,
1098y: this.safeInt((document.getElementById('AFFICHE_YEAR')||{}).value) || (new Date()).getFullYear() };
1099}nextMonthYear(m,y){ m=this.safeInt(m); y=this.safeInt(y); if (m>=12) return {m:1,y:y+1}; return {m:m+1,y}; }isBeyondAllowed(y, m){
1100if (this.targetLastTs) {
1101const t = new Date(this.targetLastTs);
1102const ty = t.getFullYear();
1103const tm = t.getMonth() + 1;
1104if (y > ty) return true;
1105if (y === ty && m > tm) return true;
1106return false;
1107}if (y > SITE_CURRENT_YEAR + MAX_YEARS_AHEAD) return true;
1108if (y === SITE_CURRENT_YEAR + MAX_YEARS_AHEAD && m > 12) return true;
1109return false;
1110}async loadNext(){
1111if (this._loadNextInProgress) return;
1112this._loadNextInProgress = true;
1113try {
1114if (window._aff_infinitePaused) { this.loading = false; return; }if (this._allLoaded) { this.loading = false; hideLoader({overlay:false}); return; }if (Date.now() < (window._aff_programmaticScrollUntil || 0)) { this.loading = false; return; }let isEmptyList = true;
1115try {
1116const itemsNow = this.listEl ? this.listEl.querySelectorAll(this.itemSelector) : [];
1117if (itemsNow && itemsNow.length) isEmptyList = false;
1118}catch(e){ isEmptyList = true; }if (!isEmptyList && !recentUserScrolledDown() && !pageNearBottom()) {
1119this.loading = false;
1120return;
1121}if (this.loading) return;
1122this.loading = true;
1123showLoader({overlay: false});
1124try {
1125try {
1126const seen = {};
1127document.querySelectorAll(this.itemSelector).forEach(e=>{
1128const h = e.getAttribute('data-render-hash') || (e.getAttribute('data-ev-id')||'') + '|' + (e.getAttribute('data-ev-date') || '');
1129if (seen[h]) {
1130try {
1131const info = {
1132where: 'loadNext.duplicate-cleanup',
1133hash: e.getAttribute && e.getAttribute('data-render-hash'),
1134evId: e.getAttribute && (e.getAttribute('data-ev-id') || e.getAttribute('data-event-id')),
1135evDate: e.getAttribute && (e.getAttribute('data-ev-date') || e.getAttribute('data-date'))
1136};
1137// console.warn('loadNext removing duplicate element:', info, e);
1138// console.trace();
1139}catch(__){}try { e.remove(); }catch(_) {}}else seen[h] = 1;
1140});
1141}catch(e){}let last = this.findLastMonthYear();
1142let candidate = this.nextMonthYear(last.m, last.y);
1143while(true){
1144if (this.isBeyondAllowed(candidate.y, candidate.m)){ this.loading=false;
1144 hideLoader({overlay: false}); return; }const key = this.mkKey(candidate.y, candidate.m);
1145if (this.loadedMonths[key]) { candidate = this.nextMonthYear(candidate.m, candidate.y); continue; }if (!this.monthHasEvents(candidate.y, candidate.m)) {
1146this.loadedMonths[this.mkKey(candidate.y, candidate.m)] = true;
1147candidate = this.nextMonthYear(candidate.m, candidate.y);
1148continue;
1149}const url = this.buildFetchUrl(candidate.m, candidate.y);
1150const resp = await fetch(url, { credentials: 'same-origin' });
1151if (!resp.ok) { this.loadedMonths[key] = true; throw new Error('network '+resp.status); }const txt = await resp.text();
1152const nodes = this.parseResponseItems(txt);
1153this.loadedMonths[key] = true;
1154if (!nodes || nodes.length === 0) { candidate = this.nextMonthYear(candidate.m, candidate.y); continue; }const filtered = nodes.filter(n => {
1155const d = (n.getAttribute('data-ev-date') || n.getAttribute('data-date') || '').trim();
1156if (!d) return false;
1157const p = d.split('.');
1158if (p.length < 3) return false;
1159const mm = this.safeInt(p[1]), yy = this.safeInt(p[2]);
1160return mm === candidate.m && yy === candidate.y;
1161});
1162if (!filtered || filtered.length === 0) {
1163candidate = this.nextMonthYear(candidate.m, candidate.y);
1164continue;
1165}const appended = this.appendItems(filtered);
1166if (appended === 0) { candidate = this.nextMonthYear(candidate.m, candidate.y); continue; }syncInfiniteFiltersFromResponse(this._lastResponseDoc, candidate.m, candidate.y);
1167if (this.targetLastTs) {
1168try {
1169const itemsNow = this.listEl.querySelectorAll(this.itemSelector);
1170for (let i = itemsNow.length - 1; i >= 0; i--) {
1171const itm = itemsNow[i];
1172const ts = _aff_getTimestampFromItem(itm);
1173if (ts && ts >= this.targetLastTs) {
1174this._allLoaded = true;
1175try { if (this.sentinelObserver) { this.sentinelObserver.disconnect(); this.sentinelObserver = null; }}catch(e){}try { if (this.lastItemObserver) { this.lastItemObserver.disconnect(); this.lastItemObserver = null; }}catch(e){}break;
1176}}}catch(e){}if (this._allLoaded) { this.loading=false; hideLoader({overlay: false}); return; }}const itemsNow = this.listEl.querySelectorAll(this.itemSelector);
1177const lastNow = itemsNow && itemsNow.length ? itemsNow[itemsNow.length-1] : null;
1178if (!lastNow) {
1179this.loading=false; hideLoader({overlay: false}); return;
1180}const rect = lastNow.getBoundingClientRect();
1181const distance = rect.top - window.innerHeight;
1182if (distance <= LOAD_MARGIN_PX) {
1183await new Promise(r => setTimeout(r, 120));
1184candidate = this.nextMonthYear(candidate.m, candidate.y);
1185continue;
1186}else {
1187this.loading=false; hideLoader({overlay: false}); return;
1188}}}catch(e){
1189this.loading=false; hideLoader({overlay: false});
1190}finally {}}finally {
1191this._loadNextInProgress = false;
1192}}_maybeLoadMore(){
1193if (this.loading) return;
1194if (window._aff_infinitePaused) return;
1195try {
1196if (this.sentinel){
1197const rect = this.sentinel.getBoundingClientRect();
1198if ((rect.top - window.innerHeight) <= LOAD_MARGIN_PX){
1199setTimeout(()=>{ if (!this.loading) this.loadNext(); }, 60);
1200return;
1201}}const items = this.listEl ? this.listEl.querySelectorAll(this.itemSelector) : [];
1202if (items && items.length){
1203const last = items[items.length - 1];
1204const rect = last.getBoundingClientRect();
1205if ((rect.top - window.innerHeight) <= LOAD_MARGIN_PX){
1206setTimeout(()=>{ if (!this.loading) this.loadNext(); }, 60);
1207}}if (pageNearBottom()){
1208setTimeout(()=>{ if (!this.loading) this.loadNext(); }, 60);
1209return;
1210}const itemsNow = this.listEl ? this.listEl.querySelectorAll(this.itemSelector) : [];
1211if (!itemsNow || itemsNow.length === 0){
1212setTimeout(()=>{ if (!this.loading) this.loadNext(); }, 60);
1213return;
1214}}catch(e){}}initObserver(){
1215try {
1216this.sentinel = document.getElementById(this.sentinelId);
1217if (this.sentinel && window.IntersectionObserver){
1218try {
1219if (this.sentinelObserver) { this.sentinelObserver.disconnect(); this.sentinelObserver = null; }this.sentinelObserver = new IntersectionObserver(entries=>{ if (window._aff_infinitePaused) return; entries.forEach(en => { if (en.isIntersecting) this.loadNext(); }); }, { root: null, rootMargin: '0px 0px ' + LOAD_MARGIN_PX + 'px 0px', threshold: 0 });
1220this.sentinelObserver.observe(this.sentinel);
1221}catch(e){}}else if (this.sentinel) {
1222const handler = ()=>{ try { const rect = this.sentinel.getBoundingClientRect(); if ((rect.top - window.innerHeight) <= LOAD_MARGIN_PX) this.loadNext(); }catch(e){}};
1223window.addEventListener('scroll', handler, { passive:true });
1224window.addEventListener('resize', handler);
1225setTimeout(handler, 300);
1226}}catch(e){}this._observeLastItem();
1227setTimeout(()=>this._maybeLoadMore(), 200);
1228}_observeLastItem(){
1229try { if (this.lastItemObserver) this.lastItemObserver.disconnect(); }catch(e){}if (this._lastFallbackHandler){ window.removeEventListener('scroll', this._lastFallbackHandler); window.removeEventListener('resize', this._lastFallbackHandler); this._lastFallbackHandler = null; }const items = this.listEl ? this.listEl.querySelectorAll(this.itemSelector) : [];
1230if (!items || items.length === 0) return;
1231const last = items[items.length - 1];
1232if (window.IntersectionObserver){
1233try {
1234this.lastItemObserver = new IntersectionObserver(entries=>
1234{ entries.forEach(en => { if (en.isIntersecting) this.loadNext(); }); }, { root: null, rootMargin: '0px 0px ' + LOAD_MARGIN_PX + 'px 0px', threshold: 0 });
1235this.lastItemObserver.observe(last);
1236}catch(e){}}else {
1237const handler = ()=>{ try { const rect = last.getBoundingClientRect(); if ((rect.top - window.innerHeight) <= LOAD_MARGIN_PX) this.loadNext(); }catch(e){}};
1238this._lastFallbackHandler = handler;
1239window.addEventListener('scroll', handler, { passive:true });
1240window.addEventListener('resize', handler);
1241setTimeout(handler, 300);
1242}}destroy(){
1243try { if (this._dedupeMO) { this._dedupeMO.disconnect(); this._dedupeMO = null; }}catch(e){}try { if (this._aff_sticky_ro) window._aff_sticky_ro.disconnect(); }catch(e){}try { if (this._aff_sticky_mo) window._aff_sticky_mo.disconnect(); }catch(e){}try { if (this.sentinelObserver) { this.sentinelObserver.disconnect(); this.sentinelObserver = null; }}catch(e){}try { if (this.lastItemObserver) { this.lastItemObserver.disconnect(); this.lastItemObserver = null; }}catch(e){}try { if (this._lastFallbackHandler) { window.removeEventListener('scroll', this._lastFallbackHandler); window.removeEventListener('resize', this._lastFallbackHandler); this._lastFallbackHandler = null; }}catch(e){}this.listEl = null;
1244this.sentinel = null;
1245this.spinner = null;
1246this.existing = null;
1247this.loadedMonths = null;
1248this.loading = false;
1249if (window.afficheLoader === this) window.afficheLoader = null;
1250}monthHasEvents(y, m){
1251try {
1252if (!window.AVAILABLE_MONTHS_BY_YEAR) return true;
1253const yearKey = String(y);
1254const months = window.AVAILABLE_MONTHS_BY_YEAR[yearKey];
1255if (!months || !months.length) return false;
1256for (let i=0;i<months.length;i++){
1257if (parseInt(months[i],10) === Number(m)) return true;
1258}return false;
1259}catch(e){
1260return true;
1261}}}(function(){
1262'use strict';
1263if (window._aff_desc_override_inited) return;
1264window._aff_desc_override_inited = true;
1265function stopNativeAnimation(el){
1266if (!el) return;
1267try {
1268if (el._onTransitionEndForAff) {
1269el.removeEventListener('transitionend', el._onTransitionEndForAff);
1270delete el._onTransitionEndForAff;
1271}el._sliding = false;
1272el.style.transition = '';
1273el.style.overflow = '';
1274el.style.height = '';
1275}catch(e){}}function slideDownNative(el, duration){
1276if (!el) return;
1277if (el._sliding) return;
1278el._sliding = true;
1279try {
1280el.style.removeProperty('display');
1281var cs = window.getComputedStyle(el);
1282var display = cs.display === 'none' ? 'block' : cs.display;
1283el.style.display = display;
1284el.getBoundingClientRect();
1285var target = el.scrollHeight + 'px';
1286el.style.transition = 'height ' + duration + 'ms ease';
1287el._onTransitionEndForAff = function(ev){
1288if (ev.propertyName === 'height'){
1289stopNativeAnimation(el);
1290try { el.style.display = ''; }catch(e){}try { el.style.height = ''; }catch(e){}try { el.style.overflow = ''; }catch(e){}}};
1291el.addEventListener('transitionend', el._onTransitionEndForAff);
1292requestAnimationFrame(function(){ el.style.height = target; });
1293setTimeout(function(){ if (el._sliding) stopNativeAnimation(el); }, duration + 120);
1294}catch(e){ stopNativeAnimation(el); }}function slideUpNative(el, duration){
1295if (!el) return;
1296if (el._sliding) return;
1297el._sliding = true;
1298try {
1299var curHeight = el.scrollHeight;
1300el.style.overflow = 'hidden';
1301el.style.height = curHeight + 'px';
1302el.getBoundingClientRect();
1303el.style.transition = 'height ' + duration + 'ms ease';
1304el._onTransitionEndForAff = function(ev){
1305if (ev.propertyName === 'height'){
1306try { el.style.display = 'none'; }catch(e){}stopNativeAnimation(el);
1307}};
1308el.addEventListener('transitionend', el._onTransitionEndForAff);
1309requestAnimationFrame(function(){ el.style.height = '0px'; });
1310setTimeout(function(){ if (el._sliding) { try { el.style.display = 'none'; }catch(e){}stopNativeAnimation(el); }}, duration + 120);
1311}catch(e){ stopNativeAnimation(el); try { el.style.display = 'none'; }catch(e){}}}function normalizeAfficheItem(el){
1312if (!el || el.nodeType !== 1) return;
1313try {
1314var desc = null;
1315try {
1316var mobileBlock = el.querySelector('.new-affiche-item__desc-cast--mobile');
1317if (mobileBlock) desc = mobileBlock.querySelector('.new-affiche-item__desc');
1318}catch(e){}if (!desc) desc = el.querySelector('.new-affiche-item__desc');
1319var toggle = el.querySelector('.new-affiche-item__desc-toggle');
1320if (desc){
1321if (window.innerWidth < 768) {
1322try {
1323stopNativeAnimation(desc);
1324desc.style.display = 'none';
1325desc.dataset.affCollapsed = '1';
1326}catch(e){}}else {
1327try {
1328stopNativeAnimation(desc);
1329desc.removeAttribute('style');
1330delete desc.dataset.affCollapsed;
1331}catch(e){}}}if (toggle){
1332try {
1333toggle.setAttribute('aria-expanded','false');
1334toggle.classList.remove('opened', 'new-affiche-item__desc-toggle--open');
1335}catch(e){}}try { el.classList.remove('mobile-desc-open'); }catch(e){}}catch(e){}}function normalizeAllAfficheItems(root){
1336var r = root || document;
1337try {
1338var items = r.querySelectorAll('.new-affiche__item, .new-affiche-item');
1339for (var i=0;i<items.length;i++) normalizeAfficheItem(items[i]);
1340}catch(e){}}function runInitialNormalize(){
1341normalizeAllAfficheItems();
1342window.addEventListener('resize', function(){
1343try { normalizeAllAfficheItems(); }catch(e){}}, { passive:true });
1344}if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', runInitialNormalize);
1345else runInitialNormalize();
1346document.addEventListener('click', function(e){
1347var btn = e.target && e.target.closest ? e.target.closest('.new-affiche-item__desc-toggle') : null;
1348if (!btn) return;
1349try { e.stopImmediatePropagation(); }catch(ignore){}try { e.preventDefault(); }catch(ignore){}var item = btn.closest && btn.closest('.new-affiche-item') ? btn.closest('.new-affiche-item') : null;
1350if (!item) return;
1351var desc = null;
1352try {
1353var mobileBlock = item.querySelector('.new-affiche-item__desc-cast--mobile');
1354if (mobileBlock) desc = mobileBlock.querySelector('.new-affiche-item__desc');
1355}catch(ignore){}if (!desc) desc = item.querySelector('.new-affiche-item__desc');
1356if (!desc) return;
1357var isVisible = (function(el){
1358if (!el) return false;
1359var cs = window.getComputedStyle(el);
1360return cs.display !== 'none' && cs.height !== '0px' && cs.visibility !== 'hidden' && el.offsetParent !== null;
1361})(desc);
1362var opening = !isVisible;
1363try {
1364item.classList.toggle('mobile-desc-open', opening);
1365btn.classList.toggle('opened', opening);
1366btn.classList.toggle('new-affiche-item__desc-toggle--open', opening);
1367btn.setAttribute('aria-expanded', opening ? 'true' : 'false');
1368}catch(e){}var duration = 400;
1369if (window.jQuery && jQuery.fn && jQuery.fn.slideDown && jQuery.fn.slideUp) {
1370try {
1371if (opening) {
1372try {
1373jQuery(desc).stop(true, true).slideDown(duration, function(){
1374try { }catch(e){}});
1375}catch(e){
1376slideDownNative(desc, duration);
1377}}else {
1378try {
1379jQuery(desc).stop(true, true).slideUp(duration, function(){
1380try { }catch(e){}});
1381}catch(e){
1382slideUpNative(desc, duration);
1383}}}catch(e){
1384if (opening) slideDownNative(desc, duration); else slideUpNative(desc, duration);
1385}}else {
1386if (opening) slideDownNative(desc, duration); else slideUpNative(desc, duration);
1387}}, true);
1388(function(){
1389var list = document.querySelector('.new-affiche__list');
1390if (!list) {
1391var bodyObserver = new MutationObserver(function(muts, obs){
1392var found = document.querySelector('.new-affiche__list');
1393if (found) {
1394obs.disconnect();
1395observeList(found);
1396normalizeAllAfficheItems(found);
1397}});
1398bodyObserver.observe(document.documentElement || document.body, { childList: true, subtree: true });
1399}else {
1400observeList(list);
1401}function observeList(listEl){
1402try {
1403var mo = new MutationObserver(function(muts){
1404muts.forEach(function(m){
1405if (!m.addedNodes || !m.addedNodes.length) return;
1406for (var i = 0; i < m.addedNodes.length; i++){
1407var n = m.addedNodes[i];
1408if (n.nodeType !== 1) continue;
1409if (n.matches && (n.matches('.new-affiche-item') || n.matches('.new-affiche__item') || n.querySelector('.new-affiche-item'))) {
1410try { normalizeAllAfficheItems(n); }catch(e){}}else {
1411try {
1412var inside = n.querySelectorAll && n.querySelectorAll('.new-affiche-item, .new-affiche__item');
1413if (inside && inside.length) normalizeAllAfficheItems(n);
1414}catch(e){}}}});
1415});
1416mo.observe(listEl, { childList: true, subtree: true });
1417}catch(e){}}})();
1418window._aff_normalizeAllAfficheItems = normalizeAllAfficheItems;
1419})();
1420function attachButton(){
1421const btn = document.querySelector(BTN_SELECTOR);
1422if (!btn) {
1423if (!window._aff_infinite_btn_try) window._aff_infinite_btn_try = 0;
1424if (window._aff_infinite_btn_try < 8) {
1425window._aff_infinite_btn_try++;
1426// Если прыгает при прокрутки вниз, то убрать timeout
1427setTimeout(attachButton, 200);
1428}return;
1429}if (btn.dataset._aff_infinite_bound_for_pause) return;
1430btn.dataset._aff_infinite_bound_for_pause = '1';
1431btn.addEventListener('click', function(e){
1432if (e && typeof e.preventDefault === 'function') e.preventDefault();
1433window._aff_programmaticScrollUntil = Date.now() + PROGRAMMATIC_SCROLL_GRACE_MS;
1434try { window.scrollBy({ top: window.innerHeight, left: 0 }); }catch(err){ window.scrollBy(0, window.innerHeight); }}, { passive: false });
1435}if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', attachButton);
1436else attachButton();
1437function initAll(){
1438try { initFilterListeners(); }catch(e){}try { window._aff_normalizeAllAfficheItems(); }catch(e){}try { initStickyFilters(); }catch(e){}try {
1439if (!window.afficheLoader) window.afficheLoader = new AfficheLoader();
1440}catch(e){}}if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', initAll);
1441else initAll();
1442function initFilterListeners(){
1443if (initFilterListeners._bound) return;
1444initFilterListeners._bound = true;
1445['AFFICHE_MONTH','AFFICHE_YEAR','AFFICHE_AGE'].forEach(id=>{
1446const el = document.getElementById(id);
1447if (el && !el.dataset._affBound) {
1448el.dataset._affBound = '1';
1449el.addEventListener('change', function(){
1450scheduleNewsAjax({ resetAge: this.id === 'AFFICHE_MONTH' || this.id === 'AFFICHE_YEAR' });
1451});
1452}});
1453['AFFICHE_CHKBX_1','AFFICHE_CHKBX_2','AFFICHE_CHKBX_3'].forEach(id=>{
1454const el = document.getElementById(id);
1455if (el && !el.dataset._affBound) {
1456el.dataset._affBound = '1';
1457el.addEventListener('change', function(){ scheduleNewsAjax({}); });
1458}});
1459document.querySelectorAll('.type-checkbox, input[name="plays"], input[name="concerts"], input[name="tours"]').forEach(ch=>{
1460if (ch.dataset._affBound) return;
1461ch.dataset._affBound = '1';
1462ch.addEventListener('change', function(){ scheduleNewsAjax({}); });
1463});
1464if (window.jQuery && jQuery().select2){
1465try {
1466jQuery('.new-filters__select').off('.aff').on('select2:select.aff select2:unselect.aff change.aff', function(){
1467scheduleNewsAjax({ resetAge: this.id === 'AFFICHE_MONTH' || this.id === 'AFFICHE_YEAR' });
1468});
1469}catch(e){}}else {
1470const bindSelectUi = ()=> {
1471document.querySelectorAll('.select2-selection').forEach(sel=>{
1472if (sel.dataset._affBound) return;
1473sel.dataset._affBound = '1';
1474sel.addEventListener('click', ()=> setTimeout(()=> scheduleNewsAjax({}), 120), { passive:true });
1475});
1476};
1477bindSelectUi();
1478const mo = new MutationObserver(muts=>{
1479let need=false;
1480for (const m of muts){
1481if (m.addedNodes && m.addedNodes.length){
1482for (const n of m.addedNodes){
1483if (n.nodeType !== 1) continue;
1484if (n.matches && n.matches('.select2')) { need = true; break; }if (n.querySelector && n.querySelector('.select2-selection')) { need = true; break; }}}if (need) break;
1485}if (need) bindSelectUi();
1486});
1487mo.observe(document.body, { childList:true, subtree:true });
1488window._aff_select2_mo = mo;
1489}}// ---- Важная: переработанная newsAjaxFetch ----
1490async function newsAjaxFetch(extra = {}) {
1491try {
1492const params = paramsFromUi(extra);
1493params['_aff_set'] = '1';
1494const key = _makeKey(params);
1495if (window._news_ajax.inFlight && window._news_ajax.currentKey === key) {
1496return;
1497}if (!window._news_ajax.inFlight && window._news_ajax.lastSuccessKey === key) {
1498try {
1499const clean = Object.assign({}, params);
1500delete clean._aff_set;
1501const url = buildUrlFromParams(clean);
1502history.replaceState(null, '', url.toString());
1503}catch(e){}return;
1504}if (window._news_ajax.controller) {
1505try { window._news_ajax.controller.abort(); }catch(e){}}const controller = new AbortController();
1506window._news_ajax.controller = controller;
1507window._news_ajax.inFlight = true;
1508window._news_ajax.currentKey = key;
1509showLoader({overlay: true});
1510const url = buildUrlFromParams(params);
1511const resp = await fetch(url.toString(), { credentials: 'same-origin', headers: { 'X-Requested-With': 'XMLHttpRequest' }, signal: controller.signal });
1512if (!resp.ok) throw new Error('Network error: ' + resp.status);
1513// выводим уведомление что год указан не верный и надо поменять его
1514let get_params = new URLSearchParams(url.href);
1515let current_month = get_params.get('month');
1516let current_year = get_params.get('YEAR');
1517if ( parseInt(current_month) == 1 && parseInt(current_year) == 2025 ){
1518let $message_attention = "Сейчас отображаются прошедшие события. <br/> Для просмотра запланированных мероприятий, <br/> пожалуйста, укажите актуальный период.";
1519if ( 'ru' == 'en'){
1520$message_attention = "Past events are currently being displayed. <br/>To view scheduled events, <br/>please select the current period.";
1521}if ( 'ru' == 'cn'){
1522$message_attention = "目前顯示的是已結束的活動。 <br/>若要查看已排程的活動,<br/>請選擇目前時段。";
1523}// $.fancybox.open($message_attention)
1524}const html = await resp.text();
1525const doc = new DOMParser().parseFromString(html, 'text/html');
1526if (extra.resetAge) syncAgeFilterFromResponse(doc);
1527const newList = doc.querySelector('.new-affiche__list');
1528const newSpinner = doc.getElementById('aff-load-spinner');
1529const newSentinel = doc.getElementById('aff-list-end-sentinel');
1530const oldList = document.querySelector('.new-affiche__list');
1531const oldSpinner = document.getElementById('aff-load-spinner');
1532const oldSentinel = document.getElementById('aff-list-end-sentinel');
1533try {
1534if (window.afficheLoader && window.afficheLoader._dedupeMO) {
1535try { window.afficheLoader._dedupeMO.disconnect(); }catch(_) {}}}catch(e){}// --- Новый безопасный блок обработки результата: не затираем старый список, если в ответе нет элементов ---
1536(function(){
1537// Попытка считать метаданные: сначала ищем 
1537<script id="aff-meta" type="application/json">, потом - fallback через inline scripts
1538try {
1539const metaEl = doc.getElementById('aff-meta');
1540if (metaEl && metaEl.textContent) {
1541try {
1542const meta = JSON.parse(metaEl.textContent);
1543if (meta.AVAILABLE_MONTHS_BY_YEAR) window.AVAILABLE_MONTHS_BY_YEAR = meta.AVAILABLE_MONTHS_BY_YEAR;
1544if (meta.AVAILABLE_YEARS) window.AVAILABLE_YEARS = meta.AVAILABLE_YEARS;
1545if (meta.SITE_LAST_EVENT_TS) window.SITE_LAST_EVENT_TS = Number(meta.SITE_LAST_EVENT_TS) || window.SITE_LAST_EVENT_TS;
1546}catch(e){}}else {
1547try {
1548const scripts = Array.from(doc.querySelectorAll('script')).map(s => s.textContent || '').join('\n');
1549const mm = scripts.match(/window\.AVAILABLE_MONTHS_BY_YEAR\s*=\s*([{\[][^\n;]*[}\]])/);
1550if (mm && mm[1]) {
1551try { window.AVAILABLE_MONTHS_BY_YEAR = JSON.parse(mm[1]); }catch(e){}}const my = scripts.match(/window\.AVAILABLE_YEARS\s*=\s*([{\[][^\n;]*[}\]])/);
1552if (my && my[1]) {
1553try { window.AVAILABLE_YEARS = JSON.parse(my[1]); }catch(e){}}const mts = scripts.match(/window\.SITE_LAST_EVENT_TS\s*=\s*(\d+)/);
1554if (mts && mts[1]) {
1555try { window.SITE_LAST_EVENT_TS = parseInt(mts[1],10) || window.SITE_LAST_EVENT_TS; }catch(e){}}}catch(e){}}}catch(e){}function newListHasItems(nList) {
1556if (!nList) return false;
1557return !!nList.querySelector('.new-affiche__item, .new-affiche-item');
1558}if (oldList && newList) {
1559const hasItems = newListHasItems(newList);
1560if (!hasItems) {
1561// Сервер вернул пустой контейнер — НЕ затираем oldList.
1562try { if (oldSpinner && newSpinner && oldSpinner.parentNode) oldSpinner.parentNode.replaceChild(newSpinner, oldSpinner); }catch(e){}try { if (oldSentinel && newSentinel && oldSentinel.parentNode) oldSentinel.parentNode.replaceChild(newSentinel, oldSentinel); }catch(e){}// Помечаем месяц как загруженный, чтобы infinite-loader не дергал его снова
1563try {
1564if (window.afficheLoader) {
1565const y = params && params.YEAR ? parseInt(params.YEAR,10) : (document.getElementById('AFFICHE_YEAR')||{}).value;
1566const m = params && params.month ? parseInt(params.month,10) : (document.getElementById('AFFICHE_MONTH')||{}).value;
1567if (y && m) {
1568try {
1569const keyLM = (typeof window.afficheLoader.mkKey === 'function') ? window.afficheLoader.mkKey(y, m) : (String(y) + '-' + String(m));
1570window.afficheLoader.loadedMonths = window.afficheLoader.loadedMonths || {};
1571window.afficheLoader.loadedMonths[keyLM] = true;
1572}catch(e){}}}}catch(e){}// обновляем URL чистыми параметрами
1573try {
1574const clean = paramsFromUi({});
1575if (clean && clean._aff_set) delete clean._aff_set;
1576const cleanUrl = buildUrlFromParams(clean);
1577history.replaceState(null, '', cleanUrl.toString());
1578}catch(e){}}else {
1579// Обычная замена списка
1580try {
1581Array.from(newList.querySelectorAll('img')).forEach(im => {
1582if (!im.getAttribute('loading')) im.setAttribute('loading', 'lazy');
1583if (!im.getAttribute('decoding')) im.setAttribute('decoding', 'async');
1584});
1585}catch(e){}try {
1586if (window.afficheLoader && typeof window.afficheLoader.destroy === 'function') {
1587try { window.afficheLoader.destroy(); }catch(ignore){}window.afficheLoader = null;
1588}}catch(e){}try {
1589oldList.parentNode.replaceChild(newList, oldList);
1590}catch(e){
1591try { oldList.innerHTML = newList.innerHTML; }catch(e){}}try {
1592if (window.afficheLoader) {
1593window.afficheLoader.listEl = document.querySelector(window.afficheLoader.listSelector);
1594window.afficheLoader.initFromDom();
1595window.afficheLoader._createDedupeObserver();
1596window.afficheLoader.initObserver();
1597}else {
1598window.afficheLoader = new AfficheLoader();
1599}}catch(e){}}}else if (oldList && !newList) {
1600const tmp = doc.querySelector('.new-affiche__list') || doc.querySelector('.new-affiche__container');
1601if (tmp && tmp.querySelector('.new-affiche__item, .new-affiche-item')) {
1602try { oldList.innerHTML = tmp.innerHTML; window.afficheLoader && window.afficheLoader.initFromDom(); }catch(e){}}else {
1603// помечаем месяц как загруженный, если контейнер пуст
1604try {
1605if (window.afficheLoader) {
1606const y = params && params.YEAR ? parseInt(params.YEAR,10) : (document.getElementById('AFFICHE_YEAR')||{}).value;
1607const m = params && params.month ? parseInt(params.month,10) : (document.getElementById('AFFICHE_MONTH')||{}).value;
1608if (y && m) {
1609const keyLM = (typeof window.afficheLoader.mkKey === 'function') ? window.afficheLoader.mkKey(y,m) : (String(y) + '-' + String(m));
1610window.afficheLoader.loadedMonths = window.afficheLoader.loadedMonths || {};
1611window.afficheLoader.loadedMonths[keyLM] = true;
1612}}}catch(e){}}try { dedupeDomByRenderHash(); }catch(e){}}else {
1613// fallback – обновим только спиннер/сентинел
1614try { if (oldSpinner && newSpinner && oldSpinner.parentNode) oldSpinner.parentNode.replaceChild(newSpinner, oldSpinner); }catch(e){}try { if (oldSentinel && newSentinel && oldSentinel.parentNode) oldSentinel.parentNode.replaceChild(newSentinel, oldSentinel); }catch(e){}}})();
1615try { dedupeDomByRenderHash(); }catch(e){}try {
1616const clean = paramsFromUi({});
1617if (clean && clean._aff_set) delete clean._aff_set;
1618const cleanUrl = buildUrlFromParams(clean);
1619history.replaceState(null, '', cleanUrl.toString());
1620}catch(e){}window._news_ajax.lastSuccessKey = key;
1621try { initFilterListeners(); }catch(e){}try { initStickyFilters(); }catch(e){}try {
1622if (window.afficheLoader && typeof window.afficheLoader.destroy === 'function') {
1623window.afficheLoader.destroy();
1624window.afficheLoader = null;
1625}window.afficheLoader = new AfficheLoader();
1626// 🔄 Перезагружаем виджеты afisha.ru после AJAX-обновления контента
1627if (window.reloadAfishaWidgets) {
1628setTimeout(window.reloadAfishaWidgets, 100);
1629}}catch(e){}}catch (err) {
1630if (err && err.name === 'AbortError') {
1631}else {
1632try {
1633const params = paramsFromUi(extra);
1634if (params && params._aff_set) delete params._aff_set;
1635const fallback = buildUrlFromParams(params);
1636window.location.search = fallback.search;
1637}catch(e){}}}finally {
1638try {
1639window._news_ajax.inFlight = false;
1640window._news_ajax.controller = null;
1641window._news_ajax.currentKey = null;
1642hideLoader({overlay: true});
1643}catch(e){}}}function detectHeaderOffset(){
1644let offset = 0;
1645try {
1646const candidates = document.querySelectorAll('header, .site-header, .header, .fixed-header, [role="banner"]');
1647for (const el of candidates){
1648const st = window.getComputedStyle(el);
1649if (st.position === 'fixed' || st.position === 'sticky') offset = Math.max(offset, Math.ceil(el.getBoundingClientRect().height));
1650}if (typeof window.AFFICHE_HEADER_OFFSET === 'number') offset = window.AFFICHE_HEADER_OFFSET;
1651}catch(e){}return offset;
1652}function initStickyFilters() {
1653const filtersEl = document.querySelector('.new-affiche__filters.new-filters--new-affiche');
1654if (!filtersEl) return;
1655const container = filtersEl.closest('.new-affiche') || document.body;
1656const headerOffset = typeof detectHeaderOffset === 'function' ? detectHeaderOffset() : 0;
1657const MOBILE_MEDIA = '(max-width: 767.98px)';
1658// reuse existing placeholder if present, otherwise create and mark it
1659var placeholder = filtersEl.parentNode.querySelector('.affiche-filters-placeholder');
1660var _aff_placeholder_created = false;
1661if (!placeholder) {
1662placeholder = document.createElement('div');
1663placeholder.className = 'affiche-filters-placeholder';
1664// помечаем, что мы создали этот placeholder — чтобы не удалять чужой
1665placeholder.dataset._aff_placeholder_created = '1';
1666_aff_placeholder_created = true;
1667filtersEl.parentNode.insertBefore(placeholder, filtersEl);
1668}else {
1669// если placeholder уже есть, гарантируем, что он отобразится корректно
1670try { placeholder.style.height = placeholder.style.height || '0px'; }catch(e){}}let state = 'normal';
1671function isMobile() {
1672return window.matchMedia(MOBILE_MEDIA).matches;
1673}function getFiltersFullHeight() {
1674const styles = getComputedStyle(filtersEl);
1675const height = filtersEl.offsetHeight;
1676const marginTop = parseFloat(styles.marginTop) || 0;
1677const marginBottom = parseFloat(styles.marginBottom) || 0;
1678return height + marginTop + marginBottom;
1679}function updatePlaceholderHeight() {
1680placeholder.style.height = state === 'fixed' ? getFiltersFullHeight() + 'px' : '0px';
1681}function resetFilterStyles() {
1682filtersEl.classList.remove('affiche-filters--fixed');
1683filtersEl.style.position = '';
1684filtersEl.style.top = '';
1685filtersEl.style.left = '';
1686filtersEl.style.width = '';
1687state = 'normal';
1688updatePlaceholderHeight();
1689}function updatePosition() {
1690if (isMobile()) {
1691if (state !== 'normal') resetFilterStyles();
1692return;
1693}const rect = container.getBoundingClientRect();
1694const scrollY = window.scrollY;
1695const containerTop = rect.top + scrollY;
1696const containerBottom = containerTop + rect.height;
1697const filterHeight = getFiltersFullHeight();
1698const filterBottomIfFixed = scrollY + headerOffset + filterHeight;
1699if (scrollY < containerTop - headerOffset) {
1700if (state !== 'normal') resetFilterStyles();
1701return;
1702}if (filterBottomIfFixed >= containerBottom) {
1703if (state !== 'pinned') {
1704filtersEl.classList.remove('affiche-filters--fixed');
1705filtersEl.style.position = 'absolute';
1706filtersEl.style.top = `${containerBottom - containerTop - filterHeight}px`;
1707filtersEl.style.left = '0';
1708filtersEl.style.width = '100%';
1709state = 'pinned';
1710updatePlaceholderHeight();
1711}return;
1712}if (state !== 'fixed') {
1713filtersEl.classList.add('affiche-filters--fixed');
1714filtersEl.style.position = 'fixed';
1715filtersEl.style.top = `${headerOffset}px`;
1716filtersEl.style.left = '0';
1717filtersEl.style.width = '100%';
1718state = 'fixed';
1719updatePlaceholderHeight();
1720}}window.addEventListener('scroll', updatePosition, { passive: true });
1721window.addEventListener('resize', updatePosition);
1722updatePosition();
1723return {
1724destroy() {
1725window.removeEventListener('scroll', updatePosition);
1726window.removeEventListener('resize', updatePosition);
1727resetFilterStyles();
1728try {
1729if (placeholder && String(placeholder.dataset._aff_placeholder_created) === '1') {
1730placeholder.remove();
1731}}catch(e){}}};
1732}window.scheduleNewsAjax = scheduleNewsAjax;
1733window._news_ajaxFetchNow = function(extra){ newsAjaxFetch(extra||{}); };
1734})(); </script>
1734<script>(function(){
1735'use strict';
1736const LOGPFX = '[PAST-MSG]';
1737const log = (...a)=>{ try{ console.log(LOGPFX, ...a); }catch(e){}};
1738const warn = (...a)=>{ try{ console.warn(LOGPFX, ...a); }catch(e){}};
1739const err = (...a)=>{ try{ console.error(LOGPFX, ...a); }catch(e){}};
1740const PAST_MSG = "\u0421\u0435\u0439\u0447\u0430\u0441 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u044e\u0442\u0441\u044f \u043f\u0440\u043e\u0448\u0435\u0434\u0448\u0438\u0435 \u0441\u043e\u0431\u044b\u0442\u0438\u044f. \u003Cbr\/\u003E \u0414\u043b\u044f \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u0437\u0430\u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043c\u0435\u0440\u043e\u043f\u0440\u0438\u044f\u0442\u0438\u0439, \u003Cbr\/\u003E \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0443\u043a\u0430\u0436\u0438\u0442\u0435 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u0435\u0440\u0438\u043e\u0434.";
1741const CURRENT_YEAR = 2026;
1742const CURRENT_MONTH = 10;
1743function safeInt(v){ const n = parseInt(v,10); return isNaN(n)?0:n; }function isPastPeriod(year, month){
1744const y = safeInt(year), m = safeInt(month);
1745if (!y) return false;
1746if (m) {
1747if (y < CURRENT_YEAR) return true;
1748if (y === CURRENT_YEAR && m < CURRENT_MONTH) return true;
1749return false;
1750}return (y < CURRENT_YEAR);
1751}// state: 'idle' | 'opening' | 'open'
1752let _pastState = 'idle';
1753let _lastAttemptTs = 0;
1754const OPEN_RETRY_MS = 250; // retry interval if fancybox not ready
1755const OPEN_TIMEOUT_MS = 1500; // how long to wait for container to appear before resetting state
1756// Save original fancybox.open (if present) into a safe var to call directly later.
1757function storeOriginalFancyboxOpen(){
1758try {
1759if (window.__pastMsg_orig_fancybox_open) return; // already stored
1760if (window.jQuery && jQuery.fancybox && typeof $.fancybox.open === 'function') {
1761window.__pastMsg_orig_fancybox_open = $.fancybox.open;
1762log('stored original $.fancybox.open');
1763}}catch(e){ warn('storeOriginalFancyboxOpen error', e); }}// Detect whether a popup is already present in DOM / fancybox instance
1764function detectPopupPresent(){
1765try {
1766if (document.querySelector('.fancybox-container')) return true;
1767if (window.Fancybox && typeof window.Fancybox.getInstance === 'function') {
1768try { if (window.Fancybox.getInstance()) return true; }catch(e){}}if (window.jQuery && jQuery.fancybox && typeof jQuery.fancybox.getInstance === 'function') {
1769try { if (jQuery.fancybox.getInstance()) return true; }catch(e){}}return false;
1770}catch(e){ return false; }}// call real fancybox (original saved) or fallback
1771function callOriginalFancyboxOpen(html, opts){
1772try {
1773storeOriginalFancyboxOpen();
1774if (window.__pastMsg_orig_fancybox_open && typeof window.__pastMsg_orig_fancybox_open === 'function') {
1775try {
1776// call original directly to avoid our own wrapper interception
1777window.__pastMsg_orig_fancybox_open.call($, { src: html, type: 'html' }, opts || {});
1778log('invoked original $.fancybox.open (saved)'); 
1779return true;
1780}catch(e){ warn('original $.fancybox.open threw', e); }}// fancybox v4?
1781if (typeof window.Fancybox === 'function') {
1782try {
1783new window.Fancybox([ { src: html, type: 'html' }], {
1784on: { destroy: function(){ _pastState = 'idle'; }}});
1785log('invoked window.Fancybox constructor');
1786return true;
1787}catch(e){ warn('window.Fancybox constructor threw', e); }}// if nothing available yet, fallback to alert
1788try { alert(html.replace(/<br\s*\/?>/gi, "\n")); }catch(e){ warn('alert fallback failed', e); }_pastState = 'idle';
1789return true;
1790}catch(e){ err('callOriginalFancyboxOpen error', e); _pastState = 'idle'; return false; }}// robust opener: try to open via saved original/constructor, retry if necessary
1791function openPopupRobust(retriesLeft = 10){
1792try {
1793if (retriesLeft <= 0) {
1794warn('openPopupRobust: out of retries, using alert fallback');
1795try { alert(PAST_MSG.replace(/<br\s*\/?>/gi, "\n")); }catch(e){}_pastState = 'idle';
1796return;
1797}// if original exists -> call it
1798if (window.__pastMsg_orig_fancybox_open || typeof window.Fancybox === 'function') {
1799const called = callOriginalFancyboxOpen(PAST_MSG, {
1800afterClose: function(){ _pastState = 'idle'; log('popup afterClose -> state idle'); }});
1801if (called) {
1802// give the DOM a little time to appear; if not, we'll reset after timeout below
1803setTimeout(()=>{
1804if (detectPopupPresent()) {
1805_pastState = 'open';
1806log('popup detected -> state=open');
1807}else {
1808// still not present -> allow retry
1809log('popup not detected after call -> will retry');
1810_pastState = 'idle';
1811setTimeout(()=>{ showPastPeriodMessage(); }, OPEN_RETRY_MS);
1812}}, 350);
1813return;
1814}}// Not ready yet — schedule retry
1815setTimeout(()=>
1815 openPopupRobust(retriesLeft - 1), OPEN_RETRY_MS);
1816}catch(e){
1817err('openPopupRobust error', e);
1818_pastState = 'idle';
1819}}// Main guarded show function
1820function showPastPeriodMessage(force){
1821try {
1822if (_pastState === 'open') { log('showPastPeriodMessage: already open -> skip'); return; }// if opening and recent, skip; if opening and stale, allow retry
1823const now = Date.now();
1824if (_pastState === 'opening') {
1825if (!force && (now - _lastAttemptTs) < OPEN_RETRY_MS + 100) {
1826log('showPastPeriodMessage: opening in progress & too recent -> skip');
1827return;
1828}// stale opening -> reset and continue
1829log('showPastPeriodMessage: previous opening stale -> retrying');
1830}_pastState = 'opening';
1831_lastAttemptTs = now;
1832log('showPastPeriodMessage: attempt to open popup');
1833// ensure we have saved orig before calling
1834storeOriginalFancyboxOpen();
1835// If someone else will call $.fancybox.open with PAST_MSG, we will intercept; but we call saved orig to actually open
1836openPopupRobust(12);
1837// safety: if after OPEN_TIMEOUT_MS no popup detected, reset to idle to allow later attempts
1838setTimeout(function(){
1839if (_pastState === 'opening' && !detectPopupPresent()) {
1840log('showPastPeriodMessage: opening timed out, resetting to idle');
1841_pastState = 'idle';
1842}}, OPEN_TIMEOUT_MS);
1843}catch(e){
1844err('showPastPeriodMessage error', e);
1845_pastState = 'idle';
1846}}// Patch $.fancybox.open to intercept external direct calls that pass PAST_MSG string
1847function tryPatchFancyboxOpen(){
1848try {
1849if (!(window.jQuery && jQuery.fancybox && typeof $.fancybox.open === 'function')) return false;
1850const orig = $.fancybox.open;
1851if (!orig) return false;
1852// store original (only once)
1853if (!window.__pastMsg_orig_fancybox_open) window.__pastMsg_orig_fancybox_open = orig;
1854if (orig._patchedByPastMsg) { log('$.fancybox.open already patched'); return true; }$.fancybox.open = function(content, opts, ...rest){
1855try {
1856let raw = '';
1857if (typeof content === 'string') raw = content;
1858else if (content && typeof content === 'object') raw = (content.src || content.html || '');
1859if (raw && String(raw).indexOf(String(PAST_MSG)) !== -1) {
1860log('intercepted external $.fancybox.open with PAST_MSG -> delegating to guarded show');
1861showPastPeriodMessage();
1862return null;
1863}}catch(e){ warn('interceptor parsing failed', e); }return orig.call(this, content, opts, ...rest);
1864};
1865$.fancybox.open._patchedByPastMsg = true;
1866log('$.fancybox.open patched successfully (orig saved)');
1867return true;
1868}catch(e){ warn('tryPatchFancyboxOpen error', e); return false; }}// Ensure patch is attempted several times (in case fancybox loads later)
1869function ensurePatchUntilReady(){
1870tryPatchFancyboxOpen();
1871let attempts = 0; const max = 20;
1872const tid = setInterval(function(){
1873attempts++;
1874tryPatchFancyboxOpen();
1875if (attempts >= max) clearInterval(tid);
1876}, 300);
1877}// updateMonthOptionsForYear (as before) — shortened logs
1878function updateMonthOptionsForYear(year) {
1879const monthEl = document.getElementById('AFFICHE_MONTH');
1880if (!monthEl) return;
1881// Получаем доступные месяцы
1882const available = window.AVAILABLE_MONTHS_BY_YEAR?.[String(year)] || 
1883window.AVAILABLE_MONTHS_BY_YEAR?.[parseInt(year)] || [];
1884// Названия месяцев
1885const monthNames = {
18861: 'Январь', 2: 'Февраль', 3: 'Март', 4: 'Апрель',
18875: 'Май', 6: 'Июнь', 7: 'Июль', 8: 'Август',
18889: 'Сентябрь', 10: 'Октябрь', 11: 'Ноябрь', 12: 'Декабрь'
1889};
1890// Сохраняем текущее значение
1891const currentVal = monthEl.value;
1892// Очищаем options
1893while (monthEl.options.length > 0) {
1894monthEl.remove(0);
1895}// Добавляем доступные месяцы
1896available.forEach(monthNum => {
1897const option = new Option(monthNames[monthNum] || monthNum, monthNum);
1898monthEl.add(option);
1899});
1900// Восстанавливаем или устанавливаем значение
1901if (available.includes(parseInt(currentVal))) {
1902monthEl.value = currentVal;
1903}else if (available.length > 0) {
1904monthEl.value = available[0];
1905}// Обновляем Select2
1906if (window.jQuery && jQuery(monthEl).data('select2')) {
1907jQuery(monthEl).trigger('change.select2');
1908}}// bind year/month and initial update
1909function bindYearMonthLogic(){
1910try {
1911const yearEl = document.getElementById('AFFICHE_YEAR');
1912const monthEl = document.getElementById('AFFICHE_MONTH');
1913function onYearChange(){
1914const y = (yearEl && yearEl.value) ? yearEl.value : null;
1915log('year changed ->', y);
1916updateMonthOptionsForYear(y);
1917const curMonth = monthEl ? monthEl.value : '';
1918if (isPastPeriod(y, curMonth)) showPastPeriodMessage();
1919}function onMonthChange(){
1920const y = yearEl ? yearEl.value : null;
1921const m = monthEl ? monthEl.value : null;
1922if (isPastPeriod(y,m)) showPastPeriodMessage();
1923}if (yearEl && !yearEl.dataset._affYearBound) {
1924yearEl.dataset._affYearBound = '1';
1925yearEl.addEventListener('change', onYearChange);
1926try { if (window.jQuery && jQuery.fn && jQuery.fn.select2) jQuery(yearEl).on('select2:select select2:unselect change', onYearChange); }catch(e){}}if (monthEl && !monthEl.dataset._affMonthBound) {
1927monthEl.dataset._affMonthBound = '1';
1928monthEl.addEventListener('change', onMonthChange);
1929try { if (window.jQuery && jQuery.fn && jQuery.fn.select2) jQuery(monthEl).on('select2:select select2:unselect change', onMonthChange); }catch(e){}}try {
1930const initYear = (yearEl && yearEl.value) ? yearEl.value : (new URLSearchParams(window.location.search)).get('YEAR') || CURRENT_YEAR;
1931updateMonthOptionsForYear(initYear);
1932}catch(e){ warn('initial updateMonthOptionsForYear failed', e); }}catch(e){ warn('bindYearMonthLogic error', e); }}// observe AJAX DOM replacements
1933function observeAfficheContainerReplacements(){
1934try {
1935const root = document.querySelector('.new-affiche') || document.body;
1936if (!root) { log('no root for mutation observer'); return; }const mo = new MutationObserver(muts=>{
1937for (const m of muts){
1938if (!m.addedNodes || !m.addedNodes.length) continue;
1939for (const n of m.addedNodes){
1940if (n.nodeType !== 1) continue;
1941if (n.matches && (n.matches('.new-affiche__container') || n.matches('.new-affiche__list') || n.querySelector && (n.querySelector('.new-affiche__container') || n.querySelector('.new-affiche__list')))
1941) {
1942log('mutation: new container/list added -> update months & check');
1943const yearEl = document.getElementById('AFFICHE_YEAR');
1944const monthEl = document.getElementById('AFFICHE_MONTH');
1945const y = yearEl ? yearEl.value : (new URLSearchParams(window.location.search)).get('YEAR');
1946updateMonthOptionsForYear(y);
1947const mval = monthEl ? monthEl.value : (new URLSearchParams(window.location.search)).get('month');
1948if (isPastPeriod(y, mval)) showPastPeriodMessage();
1949}if (n.id === 'aff-meta' || (n.querySelector && n.querySelector('#aff-meta'))) {
1950try {
1951const yearEl = document.getElementById('AFFICHE_YEAR');
1952const y = yearEl ? yearEl.value : (new URLSearchParams(window.location.search)).get('YEAR');
1953updateMonthOptionsForYear(y);
1954}catch(e){ warn('aff-meta handler error', e); }}}}});
1955mo.observe(root, { childList: true, subtree: true });
1956window._aff_pastMsgMO = mo;
1957log('mutation observer installed');
1958}catch(e){ warn('observeAfficheContainerReplacements error', e); }}// init
1959function initAffPastLogic(){
1960log('initAffPastLogic start');
1961ensurePatchUntilReady();
1962bindYearMonthLogic();
1963observeAfficheContainerReplacements();
1964// page load GET check
1965try {
1966const usp = new URLSearchParams(window.location.search);
1967const pm = usp.get('month');
1968const py = usp.get('YEAR') || usp.get('year');
1969log('page GET', { month: pm, YEAR: py });
1970if (isPastPeriod(py, pm)) {
1971log('page load: past period -> show (delayed)');
1972setTimeout(()=>{ showPastPeriodMessage(); }, 600);
1973}}catch(e){ warn('page GET check failed', e); }}if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', initAffPastLogic);
1974else initAffPastLogic();
1975})();
1976function reloadAfishaScript() {
1977const oldScript = document.querySelector('script[src*="afishaWidgetManager"]');
1978if (oldScript) oldScript.remove();
1979const newScript = document.createElement('script');
1980newScript.src = 'https://afisha.ru/w/afishaWidgetManager.global.js';
1981newScript.setAttribute('widget-key', '0bb37c01-1f36-4ecd-97f9-790232fb45e2');
1982document.body.appendChild(newScript);
1983}window.reloadAfishaWidgets = reloadAfishaScript;</script>
1983 <section class="section-fav-events"><div class="fav-event-slider-block"><div class="fav-event-slider"></div></div></section> <section class="section-mp-news section-mp-news--new"><div class="container"><div class="row"><div class="col-12"><h2>Новости</h2><div class="mp-news-items-block"><div class="mp-news-items"><div class="mp-news-item"><div class="mp-news-item-date"><a href="/novosty/2026-10/kulturnaya-diplomatiya-i-muzyka-dirizher-deyan-savich-predstavit-tosku-v-sankt-peterburg-opera/"><div class="mp-news-item-day">01</div><div class="mp-news-item-month">октября</div><div class="mp-news-item-year">2026</div></a></div><div class="mp-news-item-content"><div class="mp-news-item-title"><a href="/novosty/2026-10/kulturnaya-diplomatiya-i-muzyka-dirizher-deyan-savich-predstavit-tosku-v-sankt-peterburg-opera/">Культурная дипломатия и музыка: дирижер Деян Савич представит «Тоску» в «Санктъ-Петербургъ Опера»</a></div><div class="mp-news-item-text"><p> 2 октября 2026 года на сцене «Санктъ-Петербургъ Опера» состоится показ оперы Джакомо Пуччини «Тоска». Оркестр выступит под управлением Деяна Савича, известного сербского дирижера.</p></div></div></div><div class="mp-news-item"><div class="mp-news-item-date"><a href="/novosty/2026-9/costoyalas-tseremoniya-nagrazhdeniya-premii-khraniteli-naslediya-peterburga/"><div class="mp-news-item-day">25</div><div class="mp-news-item-month">сентября</div><div class="mp-news-item-year">2026</div></a></div><div class="mp-news-item-content"><div class="mp-news-item-title"><a href="/novosty/2026-9/costoyalas-tseremoniya-nagrazhdeniya-premii-khraniteli-naslediya-peterburga/">Cостоялась церемония награждения премии «Хранители наследия Петербурга»</a></div><div class="mp-news-item-text">Дипломом премии отмечен проект реставрации и приспособления для современного использования здания Немецкой реформатской церкви.<br /></div></div></div><div class="mp-news-item"><div class="mp-news-item-date"><a href="/novosty/2026-9/sankt-peterburg-opera-v-long-liste-premii-onegin/"><div class="mp-news-item-day">16</div><div class="mp-news-item-month">сентября</div><div class="mp-news-item-year">2026</div></a></div><div class="mp-news-item-content"><div class="mp-news-item-title"><a href="/novosty/2026-9/sankt-peterburg-opera-v-long-liste-premii-onegin/">«Санктъ-Петербургъ Опера» в лонг-листе премии «Онегин»</a></div><div class="mp-news-item-text">Национальная оперная премия «Онегин» объявила участников XI премии по итогам рассмотрения присланных заявок. В лонг-лист вошли артисты «Санктъ-Петербургъ Опера» и опера «Ромео и Джульетта» Шарля Гуно в постановке народного артиста России Юрия Александрова.</div></div></div><div class="mp-news-items-all-btn-block"><a href="/novosty/" class="mp-news-items-all-btn black-tr-btn">Все новости</a></div></div></div></div></div></section> <section class="section-mp-info section-mp-info--new"><div class="mp-info-slider-block"><div class="mp-info-slider"><div class="mp-info-slide normal-visible--all-screen"><div class="mp-info-item" style="background-image: url('/upload/resize_cache/webp/iblock/6ec/bnny4b6csi3a23r3310efd8mcc77dibm.webp');"><div class="container"><div class="row"><div class="col-12 col-md-12 col-lg-12 "><div class="custom-index-slider-2262 "><div class="gift-certificates--index"><div class="mp-info-item-title h1" style="color: #219653;"> Подарочные сертификаты</div><div class="mp-info-item-title h2" style="color: #fff;"> Дарите впечатления!</div><div class="mp-info-item-text"> Иногда так сложно выбрать подарок для близких, друзей или коллег, ведь хочется, чтобы это было что-то особенное. Такое же особенное, как и ваше отношение к ним.</div><div class="mp-info-item-btn-block"> <a href="https://www.spbopera.ru/afisha/certificates/" class="mp-info-item-btn white-tr-btn">Подробнее </a> <br></div></div><br></div></div></div></div></div></div><div class="mp-info-slide normal-visible--all-screen"><div class="mp-info-item" style="background-image: url('/upload/resize_cache/webp/iblock/7a3/y5ktjovm4aslnwwzt3trl5co4fc6f429.webp');"><div class="container"><div class="row"><div class="col-12 col-md-8 col-lg-8"><div class="custom-index-slider-791 mp-info-item-inner"><div class="mp-info-item-img"><img src="/local/templates/opera/html/img/@1x/mainpage/mp-info-item-img-1.png" alt="img"></div><div class="mp-info-item-title h1" style="color: black;"> По Пушкинской карте <br> в «Санктъ-Петербургъ Опера»</div><div class="mp-info-item-text"> «Пушкинская карта» — государственная программа, направленная на приобщение молодежи к культуре. Если вам от 14 до 22 лет включительно, вы можете посещать культурные мероприятия за счет государства. С 1 января 2023 года сумма на Пушкинской карте составляет 5000 руб.</div><div class="mp-info-item-btn-block"> <a href="/afisha/" class="mp-info-item-btn white-tr-btn">Подробнее </a> <br></div> <br></div></div></div></div></div></div></div></div></section> <section class="section-mp-contact"><div class="mp-contact-map" id="map"></div><div class="mp-contact-map-mobile" id="map-mobile"></div><div class="mp-contact-content"><div class="container"><div class="row"><div class="col-12"><h2>Контакты</h2><div class="mp-contact"><div class="mp-contact-top"><div class="mp-contact-city"> Санкт-Петербург,</div><div class="mp-contact-address"> Галерная ул., 33</div></div><div class="mp-contact-bottom"><div class="mp-contact-theathe"><div class="mp-contact-theathe__title h2">Касса театра:</div><div class="mp-contact-theathe__phone-block"> <a href="tel:+78123123982" class="mp-contact-theathe__phone h2">+7 (812) 312-39-82 </a></div><div class="mp-contact-theathe__time-block"><div class="mp-contact-theathe__time"> 12:00–19:00 Обед: 15:00–16:00</div></div></div></div></div></div></div></div></div> </section>
1983<script src='https://pos.gosuslugi.ru/bin/script.min.js'></script>
1983 <style>#js-show-iframe-wrapper{position:relative;display:flex;align-items:center;justify-content:center;width:100%;min-width:293px;max-width:100%;background:linear-gradient(138.4deg,#38bafe 26.49%,#2d73bc 79.45%);color:#fff;cursor:pointer}#js-show-iframe-wrapper .pos-banner-fluid *{box-sizing:border-box}#js-show-iframe-wrapper .pos-banner-fluid .pos-banner-btn_2{display:block;width:240px;min-height:56px;font-size:18px;line-height:24px;cursor:pointer;background:#0d4cd3;color:#fff;border:none;border-radius:8px;outline:0}#js-show-iframe-wrapper .pos-banner-fluid .pos-banner-btn_2:hover{background:#1d5deb}#js-show-iframe-wrapper .pos-banner-fluid .pos-banner-btn_2:focus{background:#2a63ad}#js-show-iframe-wrapper .pos-banner-fluid .pos-banner-btn_2:active{background:#2a63ad}@-webkit-keyframes fadeInFromNone{0%{display:none;opacity:0}1%{display:block;opacity:0}100%{display:block;opacity:1}}@keyframes fadeInFromNone{0%{display:none;opacity:0}1%{display:block;opacity:0}100%{display:block;opacity:1}}@font-face{font-family:LatoWebLight;src:url(https://pos.gosuslugi.ru/bin/fonts/Lato/fonts/Lato-Light.woff2) format("woff2"),url(https://pos.gosuslugi.ru/bin/fonts/Lato/fonts/Lato-Light.woff) format("woff"),url(https://pos.gosuslugi.ru/bin/fonts/Lato/fonts/Lato-Light.ttf) format("truetype");font-style:normal;font-weight:400}@font-face{font-family:LatoWeb;src:url(https://pos.gosuslugi.ru/bin/fonts/Lato/fonts/Lato-Regular.woff2) format("woff2"),url(https://pos.gosuslugi.ru/bin/fonts/Lato/fonts/Lato-Regular.woff) format("woff"),url(https://pos.gosuslugi.ru/bin/fonts/Lato/fonts/Lato-Regular.ttf) format("truetype");font-style:normal;font-weight:400}@font-face{font-family:LatoWebBold;src:url(https://pos.gosuslugi.ru/bin/fonts/Lato/fonts/Lato-Bold.woff2) format("woff2"),url(https://pos.gosuslugi.ru/bin/fonts/Lato/fonts/Lato-Bold.woff) format("woff"),url(https://pos.gosuslugi.ru/bin/fonts/Lato/fonts/Lato-Bold.ttf) format("truetype");font-style:normal;font-weight:400}@font-face{font-family:RobotoWebLight;src:url(https://pos.gosuslugi.ru/bin/fonts/Roboto/Roboto-Light.woff2) format("woff2"),url(https://pos.gosuslugi.ru/bin/fonts/Roboto/Roboto-Light.woff) format("woff"),url(https://pos.gosuslugi.ru/bin/fonts/Roboto/Roboto-Light.ttf) format("truetype");font-style:normal;font-weight:400}@font-face{font-family:RobotoWebRegular;src:url(https://pos.gosuslugi.ru/bin/fonts/Roboto/Roboto-Regular.woff2) format("woff2"),url(https://pos.gosuslugi.ru/bin/fonts/Roboto/Roboto-Regular.woff) format("woff"),url(https://pos.gosuslugi.ru/bin/fonts/Roboto/Roboto-Regular.ttf) format("truetype");font-style:normal;font-weight:400}@font-face{font-family:RobotoWebBold;src:url(https://pos.gosuslugi.ru/bin/fonts/Roboto/Roboto-Bold.woff2) format("woff2"),url(https://pos.gosuslugi.ru/bin/fonts/Roboto/Roboto-Bold.woff) format("woff"),url(https://pos.gosuslugi.ru/bin/fonts/Roboto/Roboto-Bold.ttf) format("truetype");font-style:normal;font-weight:400}@font-face{font-family:ScadaWebRegular;src:url(https://pos.gosuslugi.ru/bin/fonts/Scada/Scada-Regular.woff2) format("woff2"),url(https://pos.gosuslugi.ru/bin/fonts/Scada/Scada-Regular.woff) format("woff"),url(https://pos.gosuslugi.ru/bin/fonts/Scada/Scada-Regular.ttf) format("truetype");font-style:normal;font-weight:400}@font-face{font-family:ScadaWebBold;src:url(https://pos.gosuslugi.ru/bin/fonts/Scada/Scada-Bold.woff2) format("woff2"),url(https://pos.gosuslugi.ru/bin/fonts/Scada/Scada-Bold.woff) format("woff"),url(https://pos.gosuslugi.ru/bin/fonts/Scada/Scada-Bold.ttf) format("truetype");font-style:normal;font-weight:400}@font-face{font-family:Geometria;src:url(https://pos.gosuslugi.ru/bin/fonts/Geometria/Geometria.eot);src:url(https://pos.gosuslugi.ru/bin/fonts/Geometria/Geometria.eot?#iefix) format("embedded-opentype"),url(https://pos.gosuslugi.ru/bin/fonts/Geometria/Geometria.woff) format("woff"),url(https://pos.gosuslugi.ru/bin/fonts/Geometria/Geometria.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:Geometria-ExtraBold;src:url(https://pos.gosuslugi.ru/bin/fonts/Geometria/Geometria-ExtraBold.eot);src:url(https://pos.gosuslugi.ru/bin/fonts/Geometria/Geometria-ExtraBold.eot?#iefix) format("embedded-opentype"),url(https://pos.gosuslugi.ru/bin/fonts/Geometria/Geometria-ExtraBold.woff) format("woff"),url(https://pos.gosuslugi.ru/bin/fonts/Geometria/Geometria-ExtraBold.ttf) format("truetype");font-weight:900;font-style:normal}</style><style>
1983#js-show-iframe-wrapper{background:#fff;}#js-show-iframe-wrapper .pos-banner-fluid .pos-banner-btn_2{width:100%;min-height:52px;background:#0d4cd3;color:#fff;font-size:16px;font-family:LatoWeb,sans-serif;font-weight:400;padding:0;line-height:1.2}#js-show-iframe-wrapper .pos-banner-fluid .pos-banner-btn_2:active,#js-show-iframe-wrapper .pos-banner-fluid .pos-banner-btn_2:focus,#js-show-iframe-wrapper .pos-banner-fluid .pos-banner-btn_2:hover{background:#1d5deb}#js-show-iframe-wrapper .bf-104{position:relative;display:grid;grid-template-columns:var(--pos-banner-fluid-104__grid-template-columns);grid-template-rows:var(--pos-banner-fluid-104__grid-template-rows);width:100%;max-width:var(--pos-banner-fluid-104__max-width);box-sizing:border-box;grid-auto-flow:row dense}#js-show-iframe-wrapper .bf-104__decor{background:var(--pos-banner-fluid-104__bg-url) var(--pos-banner-fluid-104__bg-url-position) no-repeat;background-size:cover;background-color:#f8efec;position:relative}#js-show-iframe-wrapper .bf-104__content{display:flex;flex-direction:column;padding:var(--pos-banner-fluid-104__content-padding);grid-row:var(--pos-banner-fluid-104__content-grid-row);background-color:var(--pos-banner-fluid-104__content-bgc)}#js-show-iframe-wrapper .bf-104__description{display:flex;flex-direction:column;margin:var(--pos-banner-fluid-104__description-margin)}#js-show-iframe-wrapper .bf-104__text{margin:var(--pos-banner-fluid-104__text-margin);font-size:var(--pos-banner-fluid-104__text-font-size);line-height:1.3;font-family:LatoWeb,sans-serif;font-weight:700;color:#0b1f33}#js-show-iframe-wrapper .bf-104__text_small{font-size:var(--pos-banner-fluid-104__text-small-font-size);font-weight:400;margin:0}#js-show-iframe-wrapper .bf-104__bottom-wrap{display:flex;flex-direction:row;align-items:center}#js-show-iframe-wrapper .bf-104__logo-wrap{box-shadow:var(--pos-banner-fluid-104__logo-box-sha
1983dow);position:absolute;top:var(--pos-banner-fluid-104__logo-wrap-top);left:0;padding:var(--pos-banner-fluid-104__logo-wrap-padding);background:#fff;border-radius:0 0 8px}#js-show-iframe-wrapper .bf-104__logo{width:var(--pos-banner-fluid-104__logo-width);margin-left:1px}#js-show-iframe-wrapper .bf-104__slogan{font-family:LatoWeb,sans-serif;font-weight:700;font-size:var(--pos-banner-fluid-104__slogan-font-size);line-height:1;color:#005ca9}#js-show-iframe-wrapper .bf-104__btn-wrap{width:100%;max-width:var(--pos-banner-fluid-104__button-wrap-max-width)}</style><div id='js-show-iframe-wrapper'><div class='pos-banner-fluid bf-104'> <div class='bf-104__decor'> <div class='bf-104__logo-wrap'> <img class='bf-104__logo' src='https://pos.gosuslugi.ru/bin/banner-fluid/gosuslugi-logo-blue.svg'
1984alt='Госуслуги' /> <div class='bf-104__slogan'>Решаем вместе</div> </div> </div> <div class='bf-104__content'> <div class='bf-104__description'> <span class='bf-104__text'> Сложности с получением «Пушкинской карты» или приобретением билетов? Знаете, как улучшить работу учреждений культуры?
1985</span> <span class='bf-104__text bf-104__text_small'> Напишите&nbsp;— решим!
1986</span> </div> <div class='bf-104__bottom-wrap'> <div class='bf-104__btn-wrap'> <!-- pos-banner-btn_2 не удалять; другие классы не добавлять --> <button class='pos-banner-btn_2' type='button'>Написать
1987</button> </div> </div> </div></div></div>
1987<script>"use strict";function ownKeys(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function _objectSpread(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ownKeys(Object(n),!0).forEach((function(t){_defineProperty(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ownKeys(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function _defineProperty(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var POS_PREFIX_104="--pos-banner-fluid-104__",posOptionsInitialBanner104={background:"transparent","content-bgc":"#FFFFFF","grid-template-columns":"100%","grid-template-rows":"264px auto","max-width":"1440px","text-font-size":"18px","text-small-font-size":"14px","text-margin":"0 0px 12px 0","description-margin":"0 0 16px 0","button-wrap-max-width":"245px","bg-url":"url('https://pos.gosuslugi.ru/bin/banner-fluid/100/banner-fluid-100-405.svg')","bg-url-position":"center center","content-padding":"36px 24px","logo-wrap-padding":"16px 12px 12px 12px","logo-width":"65px","logo-wrap-top":"0","slogan-font-size":"12px","logo-box-sha
1987dow":"none"},setStyles=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:POS_PREFIX_104;Object.keys(e).forEach((function(r){t.style.setProperty(n+r,e[r])}))},removeStyles=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:POS_PREFIX_100;Object.keys(e).forEach((function(e){t.style.removeProperty(n+e)}))};function changePosBannerOnResize(){var e=document.documentElement,t=_objectSpread({},posOptionsInitialBanner104),n=document.getElementById("js-show-iframe-wrapper"),r=n?n.offsetWidth:document.body.offsetWidth;r>499&&(t["bg-url"]="url('https://pos.gosuslugi.ru/bin/banner-fluid/100/banner-fluid-100-500.svg')"),r>584&&(t["grid-template-rows"]="auto",t["bg-url"]="url('https://pos.gosuslugi.ru/bin/banner-fluid/100/banner-fluid-100-273.svg')",t["text-font-size"]="20px",t["content-padding"]="46px 24px 46px 24px",t["grid-template-columns"]="53% 47%",t["content-grid-row"]="1"),r>649&&(t["bg-url"]="url('https://pos.gosuslugi.ru/bin/banner-fluid/100/banner-fluid-100-558.svg')"),r>799&&(t["text-font-size"]="20px",t["text-small-font-size"]="16px",t["bg-url"]="url('https://pos.gosuslugi.ru/bin/banner-fluid/100/banner-fluid-100-500.svg')"),r>1115&&(t["text-font-size"]="24px",t["text-small-font-size"]="18px",t["content-padding"]="46px 80px 46px 140px",t["bg-url"]="url('https://pos.gosuslugi.ru/bin/banner-fluid/100/banner-fluid-100-720.svg')"),setStyles(t,e)}changePosBannerOnResize(),window.addEventListener("resize",changePosBannerOnResize),window.onunload=function(){var e=document.documentElement,t=_objectSpread({},posOptionsInitialBanner104);window.removeEventListener("resize",changePosBannerOnResize),removeStyles(t,e)};</script>
1987 
1987<script>Widget("https://pos.gosuslugi.ru/form", 338138)</script>
1987<section class="section-seo"><div class="container"><div class="row"><div class="col-12"><div class="seo-text"><p>Камерный музыкальный театр «Санктъ-Петербургъ Опера» приглашает зрителей увидеть поистине эксклюзивные музыкальные театральные произведения, насладиться величественной атмосферой его интерьеров, стать частью феерии, созданной бессменным художественным руководителем театра Юрием Александровым и его замечательной труппой.</p><p>Театр «Санктъ-Петербургъ Опера» открыл свои двери жителям и гостям Северной столицы в 1987 году, в непростое для нашей страны время. Задуманный как небольшая творческая лаборатория, театр оперы со временем развивался, ставил новые спектакли, расширял свой репертуар, добавляя в него экспериментальные работы, и занял заслуженное место в культурной жизни Санкт-Петербурга и в сердцах зрителей. Здесь есть место как классическим произведениям в новом прочтении, так и современной оперной драматургии.</p><p>Ежегодно спектакли Гранд оперы СПб становятся номинантами и обладателями самых престижных премий в России, таких как «Золотая маска» и «Золотой софит». Лауреатами «Золотой маски», например, стали спектакли:</p><p>— «Игроки-1942» (1997);</p><p>— «Песнь о любви и смерти корнета Кристофа Рильке» (1998);</p><p>— «Пиковая дама» (2000);</p><p>— «Паяцы» (2010).</p><p>В 1998 году новой обителью для театра стал особняк барона фон Дервиза на Галерной ул., 33, в живописном историческом районе города, где и по сей день он рад встречать своих зрителей.&nbsp;</p><p>Посетите официальный сайт театра «Санктъ-Петербургъ Опера», ознакомьтесь с его репертуаром, афишей, труппой и историей.</p><p>Театр Опера на Галерной ждет вас!⁠</p><div class="new-index-links-slider"> <h2 class="new-index-links-slider__heading">Сервисы</h2> <div class="new-index-links-slider__slider-container"> <div class="new-index-links-slider__slider"> <div class="new-index-links-slider__item"> <div class="new-index-links-slider__item-container"> <a class="new-index-links-slider__item-img-block" href="https://download.max.ru/" target="_blank" rel="noopener" tabindex="-1"> <img class="new-index-links-slider__item-img" src="/upload/resize_cache/webp/iblock/3af/pemwz3wjakxuujxk2f1ul8z9b9xcebws.webp" alt="Формируйте цифровое удостоверение многодетной семьи в МАХ" title="Формируйте цифровое удостоверение многодетной семьи в МАХ"> </a> 
1988<p class="new-index-links-slider__item-text"> <a target="_blank" href="https://download.max.ru/" style="color: #219653;" tabindex="0">Формируйте</a> цифровое удостоверение многодетной семьи в МАХ </p> 
1989</div> </div> <div class="new-index-links-slider__item"> <div class="new-index-links-slider__item-container"> <a class="new-index-links-slider__item-img-block" href="https://download.max.ru/" target="_blank" rel="noopener" tabindex="-1"> <img class="new-index-links-slider__item-img" src="/upload/resize_cache/webp/iblock/7d8/vn4qfp8d4fipgvzve6lqj7o2vcdi302h.webp" alt="Формируйте электронное удостоверение, подтверждающее инвалидность, в МАХ" title="Формируйте электронное удостоверение, подтверждающее инвалидность, в МАХ"> </a> 
1990<p class="new-index-links-slider__item-text"> <a target="_blank" href="https://download.max.ru/" style="color: #219653;" tabindex="0">Формируйте</a> электронное удостоверение, подтверждающее инвалидность, в МАХ </p> 
1991</div> </div> <div class="new-index-links-slider__item"> <div class="new-index-links-slider__item-container"> <a class="new-index-links-slider__item-img-block" href="https://download.max.ru/" target="_blank" rel="noopener" tabindex="-1"> <img class="new-index-links-slider__item-img" src="/upload/resize_cache/webp/iblock/afc/ay7s8i8uz813f5e3lzraxmnqhfrfve5t.webp" alt="Формируйте электронное пенсионное удостоверение в МАХ" title="Формируйте электронное пенсионное удостоверение в МАХ"> </a> 
1992<p class="new-index-links-slider__item-text"> <a target="_blank" href="https://download.max.ru/" style="color: #219653;" tabindex="0">Формируйте</a> электронное пенсионное удостоверение в МАХ </p> 
1993</div> </div> <div class="new-index-links-slider__item"> <div class="new-index-links-slider__item-container"> <a class="new-index-links-slider__item-img-block" href="https://www.culture.ru" target="_blank" rel="noopener" tabindex="-1"> <img class="new-index-links-slider__item-img" src="/upload/resize_cache/webp/iblock/ecd/61uzjwehn6en52yex1w2w07frt62zwes.webp" alt="Культура РФ" title="Культура РФ"> </a> 
1994</div> </div> <div class="new-index-links-slider__item"> <div class="new-index-links-slider__item-container"> <a class="new-index-links-slider__item-img-block" href="https://www.gov.spb.ru/contract/" target="_blank" rel="noopener" tabindex="-1"> <img class="new-index-links-slider__item-img" src="/upload/resize_cache/webp/iblock/a3b/2uywpt8sf8n872ddq6l9xm79e5bldlic.webp" alt="БПЛА" title="БПЛА"> </a> 
1995</div> </div> <div class="new-index-links-slider__item"> <div class="new-index-links-slider__item-container"> <a class="new-index-links-slider__item-img-block" href="https://bus.gov.ru/qrcode/rate/452279" target="_blank" rel="noopener" tabindex="-1"> <img class="new-index-links-slider__item-img" src="/upload/resize_cache/webp/medialibrary/30f/4modf5jweomadxkovdfr90f7t6z23g87.webp" alt="bus.gov.ru" title="bus.gov.ru"> </a> 
1996<p class="new-index-links-slider__item-text"> Чтобы оценить условия предоставления услуг, используйте QR-код или перейдите <a target="_blank" href="https://bus.gov.ru/qrcode/rate/452279" style="color: #219653;" tabindex="0">по ссылке</a> </p> 
1997</div> </div> <div class="new-index-links-slider__item"> <div class="new-index-links-slider__item-container"> <a class="new-index-links-slider__item-img-block" href="https://forms.mkrf.ru/e/2579/xTPLeBU7/?ap_orgcode=043995" target="_blank" rel="noopener" tabindex="-1"> <img class="new-index-links-slider__item-img" src="/upload/resize_cache/webp/iblock/f19/ll0evdkueiz19elri4
1997kc2o0i2bl65cl8.webp" alt="forms.mkrf.ru" title="forms.mkrf.ru"> </a> 
1998<p class="new-index-links-slider__item-text"> Чтобы оценить работу организации, используйте QR-код или перейдите <a target="_blank" href="https://forms.mkrf.ru/e/2579/xTPLeBU7/?ap_orgcode=043995" style="color: #219653;" tabindex="-1">по ссылке</a>. </p> 
1999</div> </div> <div class="new-index-links-slider__item"> <div class="new-index-links-slider__item-container" style="background-color:#408DFF;"> <a class="new-index-links-slider__item-img-block" href="https://достижения.рф/achievements/region" target="_blank" rel="noopener" tabindex="-1"> <img class="new-index-links-slider__item-img" src="/upload/resize_cache/webp/iblock/87f/18nmc76zdqz5ickjwbwxyt4ths70swbd.webp" alt="достижения.рф" title="достижения.рф"> </a> 
2000</div> </div> <div class="new-index-links-slider__item"> <div class="new-index-links-slider__item-container"> <a class="new-index-links-slider__item-img-block" href="https://www.gov.spb.ru/contract/" target="_blank" rel="noopener" tabindex="-1"> <img class="new-index-links-slider__item-img" src="/upload/resize_cache/webp/iblock/311/a88c2byc40ogmii5avk7dydamn4yh420.webp" alt="достижения.рф 2" title="достижения.рф 2"> </a> 
2001</div> </div> </div> </div></div></div></div></div></div></section><footer> <div class="footer-content-block"> <div class="container"> <div class="row"> <div class="col-12 col-lg-4 col-xxl-3">
2002<div class="footer-logo-block"> <div class="logo-wrapper"> <a href="javascript:void(0);" class="logo"> <div class="logo-img"> <img src="/local/templates/opera/html/img/svg/footer-logo.svg" alt="img"> </div> </a> </div> </div> <div class="footer-contact-block"> <div class="footer-address-block"> <div class="footer-address"> <a target="_blank" href="https://yandex.com.ge/maps/-/CCUZEPuYHD" style="color: #219653;">Санкт-Петербург, Галерная ул., 33</a> </div> </div> <div class="footer-phone-block"> <a href="tel:+78123123982" class="footer-phone">+7 (812) 312-39-82 </a> </div> <div class="footer-time-block"> <div class="footer-time"> Касса: 12:00–19:00 <br class="d-block d-sm-none"> Обед: 15:00–16:00 </div> </div> <div class="footer-soc"> <a rel=”nofollow” href="https://vk.ru/spbopera" class="footer-link footer-soc-link--vk"></a> <!--<a rel=”nofollow” href="https://t.me/spboperatheatre" class="footer-link footer-soc-link--telegram"></a>--> <a rel=”nofollow” href="https://ok.ru/spbopera" class="footer-link footer-soc-link--od"></a> <!--<a rel=”nofollow” href="https://www.youtube.com/channel/UCi_plOjOgnUZRrVYJTmxLpw"
2003class="footer-link footer-soc-link--youtube"></a>--> <!-- <a href="https://twitter.com/spboperatheatre/" class="footer-link footer-soc-link--twitter"></a> --> <a rel=”nofollow”
2004href="https://yandex.ru/maps/org/spb_gbuk_kamerny_muzykalny_teatr_sankt_peterburg_opera/1069830877/ "
2005class="footer-link footer-soc-link--yandex"></a> <a rel=”nofollow” href="https://max.ru/spbopera" class="footer-link footer-soc-link--max"></a> </div> <!--<div class="footer-store"> <a href="https://apps.apple.com/ru/app/%D1%81%D0%BF%D0%B1-%D0%BE%D0%BF%D0%B5%D1%80%D0%B0/id6443450844" target="_blank"> <img src="/local/templates/opera/html/img/svg/appstore.svg" alt="AppStore" title="AppStore" width="135" height="39"> </a> <a href="https://play.google.com/store/apps/details?id=ru.rambler.spbopera" target="_blank"> <img src="/local/templates/opera/html/img/svg/googleplay.svg" alt="GooglePlay" title="GooglePlay" width="135" height="39"> </a> </div>--> <div class="footer-store" style="padding-top: 15px"> <a href="https://apps.rustore.ru/app/ru.rambler.spbopera" target="_blank"> <img src="/local/templates/opera/html/img/svg/Rustore.svg" alt="Rustore" title="Rustore" width="135" height="39"> </a> </div> </div> </div> <div class="col-12 col-lg-8 col-xxl-9"> <div class="row"> <div class="col-12 col-md-4 col-lg-4"> <div class="footer-menu footer-menu--1">
2006<ul> <li class="">
2007<a href="/afisha/">Афиша</a> </li> <li class="">
2008<a href="/repertuar/">Репертуар</a> </li> <li class="">
2009<a href="/troupe/">Труппа</a> </li> <li class="">
2010<a href="/about/tours/">Гастроли</a> </li> <li class="">
2011<a href="/photo/">Заказать мероприятие</a> </li> <li class="">
2012<a href="/afisha/certificates/">Подарочные сертификаты</a> </li> </ul> </div> </div> <div class="col-12 col-md-4 col-lg-4"> <div class="footer-menu footer-menu--2">
2013<ul> <li class="">
2014<a href="/novosty/">Новости</a> </li> <li class="">
2015<a href="/about/management/">Администрация</a> </li> <li class="">
2016<a href="/about/our_story">История театра</a> </li> <li class="">
2017<a href="/about/second_stage/">Вторая сцена</a> </li> <li class="">
2018<a href="/about/partners/">Партнеры</a> </li> </ul> </div> </div> <div class="col-12 col-md-4 col-lg-4"> <div class="footer-menu footer-menu--3">
2019<ul> <li class="">
2020<a href="/about/media/">Правила аккредитации СМИ</a> </li> <li class="">
2021<a href="/about/reports/">Документы</a> </li> <li class="">
2022<a href="/about/guestbook/">Гостевая книга</a> </li> <li class="">
2023<a href="/contacts/">Контакты</a> </li> </ul>
2024</div> </div> </div> </div> </div> </div> </div> <div class="footer-bottom-block"> <div class="container"> <div class="row"> <div class="col-12 col-md-6 col-lg-6 col-xl-3"> <div class="copy"><a href="https://www.gov.spb.ru/gov/otrasl/c_culture/" style="color: #219653;">Комитет по культуре Санкт-Петербурга</a><br><br><p style="color: #0D0D0D;">Онлайн-покупка билетов на сайте осуществляется посредством встроенного программного модуля — лицо уполномоченное театром до 31.12.2026, ООО «Компания Афиша», ОГРН 1107746038410, ИНН 7710861670</p><br><br> СПб ГБУК «Камерный музыкальный театр «Санктъ-Петербургъ Опера» © 2026</div> </div> <div class="col-12 col-md-6 col-lg-6 col-xl-3"> <div class="footer-disable-link-block"> <a href="/disabled_info/" class="footer-disable-link">Информация для маломобильных граждан</a> </div> </div> <div class="col-12 col-md-6 col-lg-6 col-xl-3"> <div class="footer-politic-link-block"> <a href="/politics/" class="footer-politic-link">Политика конфиденциальности</a> </div> </div> <div class="col-12 col-md-6 col-lg-6 col-xl-3"> <div class="footer-dev-block"> Создание и продвижение сайта <a href="https://www.runita.ru/">RUNITA</a> </div> </div> </div> </div> </div></footer></div><a href="#" class="to-top-btn"></a><div class="popups"> <div class="important-message p-buy-ticket" id="important-message"> <div class="important-message--header"> <h2>Дорогие друзья!</h2> </div> <div class="important-messgage--text"> Просим обратить внимание: в августе 2023 г. спектакли и концерты проходят на сцене <br/> Санкт-Петербургского театра музыкальной комедии (Итальянская ул.,13).
2025<div class="important-message--agree"> <a href="javascript: void(0)" id="important-message-close" class="topline-buy-btn green-btn">Купить билет</a> </div> </div> <div class="important-message-map" id="map-important"> </div> <!-- <img class="important-message--image" src="/upload/img/popup_desctop.jpeg" /> --> </div> <div class="p-buy-ticket" id="p-buy-ticket"> <div class="p-buy-ticket-top"> <div class="h1"> Опера «Евгений Онегин / Eugene Onegin»
2026</div> <div class="p-buy-ticket-date"> Дата мероприятия: 17.11.2021
2027</div> <div class="p-buy-ticket-time"> Время мероприятия: 19:00
2028</div> <div class="p-buy-ticket-warning"> Уважаемые клиенты! <br> В соответствии с Постановлением Правительства № 121 от 13.03.2020 года «О мерах по противодействию
2029распространению в Санкт-Петербурге новой короÐ
2029½Ð°Ð²Ð¸Ñ€ÑƒÑÐ½Ð¾Ð¹ инфекции (COVID-19) действуют ограничения на посещение
2030зрелищных мероприятий. Просим вас при покупке билетов учитывать данные ограничения.
2031</div> <div class="p-buy-places-block"> <div class="p-buy-places-price-block"> <div class="p-buy-places-price-items"> <div class="p-buy-places-price-item p-buy-places-price-item--red"> <div class="p-buy-places-price-item__square"></div> <div class="p-buy-places-price-item__text"> 1 700 руб.
2032</div> </div> <div class="p-buy-places-price-item p-buy-places-price-item--green"> <div class="p-buy-places-price-item__square"></div> <div class="p-buy-places-price-item__text"> 1 700 руб.
2033</div> </div> <div class="p-buy-places-price-item p-buy-places-price-item--blue"> <div class="p-buy-places-price-item__square"></div> <div class="p-buy-places-price-item__text"> 1 700 руб.
2034</div> </div> </div> </div> <div class="p-buy-places"> <div class="p-buy-scene"> Сцена / Scene
2035</div> <div class="p-buy-place-items-block"> <div class="p-buy-place-row p-buy-place-row--one"> <div class="p-buy-place-row-left"> <div class="p-buy-place-items"> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--red"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--red"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">2</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--red"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">3</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--red"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">4</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--red"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">5</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--red"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">6</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--red"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">7</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--green"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--green"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--green"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--green"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--green"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--green"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--green"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--blue"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--blue"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--blue"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--blue"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--blue"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--blue"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--blue"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--red"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--red"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">2</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--red"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">3</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--red"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">4</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--red"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">5</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--red"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">6</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--red"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">7</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--green"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--green"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--green"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--green"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--green"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--green"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--green"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--blue"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--blue"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--blue"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--blue"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--blue"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--blue"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--blue"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--red"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--red"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">2</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--red"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">3</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--red"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">4</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--red"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">5</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--red"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">6</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--red"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">7</div> </a> </div> </div> </div> <div class="p-buy-place-row-right"> <div class="p-buy-place-items"> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--red"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--red"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">2</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--red"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">3</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--red"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">4</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--red"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">5</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--red"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">6</div> </a> </div> <div class="p-buy-place-item-wra
2035pper"> <a href='#' class="p-buy-place-item p-buy-place-item--red"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">7</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--green"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--green"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--green"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--green"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--green"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--green"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--green"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--blue"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--blue"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--blue"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--blue"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--blue"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--blue"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--blue"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--red"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--red"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">2</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--red"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">3</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--red"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">4</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--red"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">5</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--red"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">6</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--red"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">7</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--green"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--green"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--green"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--green"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--green"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--green"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--green"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--blue"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--blue"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--blue"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--blue"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--blue"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--blue"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--blue"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--red"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--red"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">2</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--red"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">3</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--red"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">4</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--red"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">5</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--red"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">6</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--red"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">7</div> </a> </div> </div> </div> </div> <div class="p-buy-place-row p-buy-place-row--two"> <div class="p-buy-place-items"> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--red"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--red"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">2</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--red"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">3</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--red"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">4</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--red"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">5</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--red"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">6</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--red"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">7</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--green"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--green"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--green"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--green"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--green"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--green"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--green"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--blue"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--blue"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> </div> </div> <div class="p-buy-place-row p-buy-place-row--three"> <div class="p-buy-place-items"> <div class="p-buy-place-item-wrapper"> <a href='
2035#' class="p-buy-place-item p-buy-place-item--red"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--red"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">2</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--red"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">3</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--red"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">4</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--red"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">5</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--red"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">6</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--red"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">7</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--green"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--green"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--green"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--green"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--green"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--green"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--green"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--blue"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--blue"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--red"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--red"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">2</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--red"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">3</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--red"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">4</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--red"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">5</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--red"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">6</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--red"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">7</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--green"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--green"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--green"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--green"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--green"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--green"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--green"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--blue"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--blue"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--red"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--red"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">2</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--red"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">3</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--red"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">4</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--red"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">5</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--red"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">6</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--red"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">7</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--green"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--green"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--green"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--green"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--green"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--green"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--green"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--blue"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--blue"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--green"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--green"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--green"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--green"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--green"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--blue"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--blue"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--green"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--green"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--blue"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> <div class="p-buy-place-item-wrapper"> <a href='#' class="p-buy-place-item p-buy-place-item--blue"> <div class="p-buy-place-item__digit p-buy-place-item__digit--top-left">1</div> <div class="p-buy-place-item__digit p-buy-place-item__digit--bottom-right">1</div> </a> </div> </div> </div> </div> </div> </div> </div> <div class="p-buy-ticket-bottom"> <form class="p-buy-ticket-form form"> <div class="row"> <div class="col-12 col-lg-6"> <div class="form_field"> <div class="input-wrapper"> <input type="email" name="email" placeholder
2035="* Укажите e-mail" autocomplete="off" required> <div class="input-label">* Укажите e-mail</div> </div> </div> </div> <div class="col-12 col-lg-6"> <div class="form_field"> <div class="input-wrapper"> <input type="email" name="email-confirm" placeholder="* Подтвердите e-mail " autocomplete="off"
2036required> <div class="input-label">* Подтвердите e-mail</div> </div> </div> </div> <div class="col-12 col-lg-6"> <div class="form_field"> <div class="input-wrapper"> <input type="text" name="phone" placeholder="* Мобильный телефон" autocomplete="off" required> <div class="input-label">* Мобильный телефон</div> </div> </div> </div> <div class="col-12 col-lg-6"> <div class="form_field"> <div class="input-wrapper"> <input type="text" name="phone-confirm" placeholder="* Подтвердите телефон " autocomplete="off"
2037required> <div class="input-label">* Подтвердите телефон</div> </div> </div> </div> </div> <div class="p-buy-ticket-form-checkboxes"> <div class="checkbox-wrapper"> <label class="custom-checkbox-label"> <input type="checkbox" name="sms" value="agree" class="checkbox"> <span class="custom-checkbox"><span></span></span> <span class="custom-checkbox-text-label">Прислать смс с номером заказа</span> </label> </div> <div class="checkbox-wrapper"> <label class="custom-checkbox-label"> <input type="checkbox" name="sms" value="agree" class="checkbox" checked> <span class="custom-checkbox"><span></span></span> <span class="custom-checkbox-text-label">Купить билет используя Пушкинскую карту</span> </label> </div> <div class="checkbox-wrapper checkbox-wrapper--rules"> <label class="custom-checkbox-label"> <input type="checkbox" name="sms" value="agree" class="checkbox"> <span class="custom-checkbox"><span></span></span> <span class="custom-checkbox-text-label">Ознакомлен с правилами заказа</span> </label> </div> </div> <div class="p-buy-ticket-form-total"> Итого к оплате: 1 700 руб.
2038</div> <div class="p-buy-ticket-form-panel"> <div class="p-buy-ticket-form-panel-left"> <a href="#" class="green-tr-btn">Ввести промокод</a> </div> <div class="p-buy-ticket-form-panel-right"> <button type="submit" class="green-btn">Отправить</button> </div> </div> </form> </div> </div> <div class="p-cast" id="p-cast"> <div class="h1">Состав</div> <div id="cast-block-content" class="p-cast-content"> <div class="p-cast-scroll-block"> <div class="p-cast-visible"> <div class="p-cast-blocks"> <div class="p-cast-block"> <div class="p-cast-title"> ЭЛЕКТРА
2039</div> <div class="p-cast-items"> <div class="row"> <div class="col-12 col-lg-4"> <div class="p-cast-item"> <div class="p-cast-item__img"> <img
2040src="/local/templates/opera/html//local/templates/opera/html/img/@1x/mainpage/p-cast-item-img-1.jpg"
2041alt="img"
2042srcset="/local/templates/opera/html/img/@1x/mainpage/p-cast-item-img-1.jpg 1x, /local/templates/opera/html/img/@2x/mainpage/p-cast-item-img-1.jpg 2x"> </div> <div class="p-cast-item__content"> <div class="p-cast-item__name"> Ксения
2043Григорьева
2044</div> <div class="p-cast-item__state"> лауреат международных
2045конкурсов
2046</div> </div> </div> </div> <div class="col-12 col-lg-4"> <div class="p-cast-item"> <div class="p-cast-item__img"> <img
2047src="/local/templates/opera/html//local/templates/opera/html/img/@1x/mainpage/p-cast-item-img-2.jpg"
2048alt="img"
2049srcset="/local/templates/opera/html/img/@1x/mainpage/p-cast-item-img-2.jpg 1x, /local/templates/opera/html/img/@2x/mainpage/p-cast-item-img-2.jpg 2x"> </div> <div class="p-cast-item__content"> <div class="p-cast-item__name"> Татьяна
2050Кальченко
2051</div> <div class="p-cast-item__state"> лауреат международных
2052конкурсов
2053</div> </div> </div> </div> <div class="col-12 col-lg-4"> <div class="p-cast-item"> <div class="p-cast-item__img"> <img
2054src="/local/templates/opera/html//local/templates/opera/html/img/@1x/mainpage/p-cast-item-img-3.jpg"
2055alt="img"
2056srcset="/local/templates/opera/html/img/@1x/mainpage/p-cast-item-img-3.jpg 1x, /local/templates/opera/html/img/@2x/main
2056page/p-cast-item-img-3.jpg 2x"> </div> <div class="p-cast-item__content"> <div class="p-cast-item__name"> Виктория
2057Мартемьянова
2058</div> <div class="p-cast-item__state"> лауреат международных
2059конкурсов
2060</div> </div> </div> </div> </div> </div> </div> <div class="p-cast-block d-none d-sm-block"> <div class="p-cast-title"> ХРИЗОТЕМИДА
2061</div> <div class="p-cast-items"> <div class="row"> <div class="col-12 col-lg-4"> <div class="p-cast-item"> <div class="p-cast-item__img"> <img
2062src="/local/templates/opera/html//local/templates/opera/html/img/@1x/mainpage/p-cast-item-img-4.jpg"
2063alt="img"
2064srcset="/local/templates/opera/html/img/@1x/mainpage/p-cast-item-img-4.jpg 1x, /local/templates/opera/html/img/@2x/mainpage/p-cast-item-img-4.jpg 2x"> </div> <div class="p-cast-item__content"> <div class="p-cast-item__name"> Ксения
2065Григорьева
2066</div> <div class="p-cast-item__state"> лауреат международных
2067конкурсов
2068</div> </div> </div> </div> <div class="col-12 col-lg-4"> <div class="p-cast-item"> <div class="p-cast-item__img"> <img
2069src="/local/templates/opera/html//local/templates/opera/html/img/@1x/mainpage/p-cast-item-img-5.jpg"
2070alt="img"
2071srcset="/local/templates/opera/html/img/@1x/mainpage/p-cast-item-img-5.jpg 1x, /local/templates/opera/html/img/@2x/mainpage/p-cast-item-img-5.jpg 2x"> </div> <div class="p-cast-item__content"> <div class="p-cast-item__name"> Татьяна
2072Кальченко
2073</div> <div class="p-cast-item__state"> лауреат международных
2074конкурсов
2075</div> </div> </div> </div> <div class="col-12 col-lg-4"> <div class="p-cast-item"> <div class="p-cast-item__img"> <img
2076src="/local/templates/opera/html//local/templates/opera/html/img/@1x/mainpage/p-cast-item-img-6.jpg"
2077alt="img"
2078srcset="/local/templates/opera/html/img/@1x/mainpage/p-cast-item-img-6.jpg 1x, /local/templates/opera/html/img/@2x/mainpage/p-cast-item-img-6.jpg 2x"> </div> <div class="p-cast-item__content"> <div class="p-cast-item__name"> Виктория
2079Мартемьянова
2080</div> <div class="p-cast-item__state"> лауреат международных
2081конкурсов
2082</div> </div> </div> </div> </div> </div> </div> </div> </div> <div class="p-cast-hidden"> <div class="p-cast-blocks"> <div class="p-cast-block d-block d-sm-none"> <div class="p-cast-title"> ХРИЗОТЕМИДА
2083</div> <div class="p-cast-items"> <div class="row"> <div class="col-12 col-lg-4"> <div class="p-cast-item"> <div class="p-cast-item__img"> <img
2084src="/local/templates/opera/html//local/templates/opera/html/img/@1x/mainpage/p-cast-item-img-4.jpg"
2085alt="img"
2086srcset="/local/templates/opera/html/img/@1x/mainpage/p-cast-item-img-4.jpg 1x, /local/templates/opera/html/img/@2x/mainpage/p-cast-item-img-4.jpg 2x"> </div> <div class="p-cast-item__content"> <div class="p-cast-item__name"> Ксения
2087Григорьева
2088</div> <div class="p-cast-item__state"> лауреат международных
2089конкурсов
2090</div> </div> </div> </div> <div class="col-12 col-lg-4"> <div class="p-cast-item"> <div class="p-cast-item__img"> <img
2091src="/local/templates/opera/html//local/templates/opera/html/img/@1x/mainpage/p-cast-item-img-5.jpg"
2092alt="img"
2093srcset="/local/templates/opera/html/img/@1x/mainpage/p-cast-item-img-5.jpg 1x, /local/templates/opera/html/img/@2x/mainpage/p-cast-item-img-5.jpg 2x"> </div> <div class="p-cast-item__content"> <div class="p-cast-item__name"> Татьяна
2094Кальченко
2095</div> <div class="p-cast-item__state"> лауреат международных
2096конкурсов
2097</div> </div> </div> </div> <div class="col-12 col-lg-4"> <div class="p-cast-item"> <div class="p-cast-item__img"> <img
2098src="/local/templates/opera/html//local/templates/opera/html/img/@1x/mainpage/p-cast-item-img-6.jpg"
2099alt="img"
2100srcset="/local/templates/opera/html/img/@1x/mainpage/p-cast-item-img-6.jpg 1x, /local/templates/opera/html/img/@2x/mainpage/p-cast-item-img-6.jpg 2x"> </div> <div class="p-cast-item__content"> <div class="p-cast-item__name"> Виктория
2101Мартемьянова
2102</div> <div class="p-cast-item__state"> лауреат международных
2103конкурсов
2104</div> </div> </div> </div> </div> </div> </div> <div class="p-cast-block"> <div class="p-cast-title"> ЭЛЕКТРА
2105</div> <div class="p-cast-items"> <div class="row"> <div class="col-12 col-lg-4"> <div class="p-cast-item"> <div class="p-cast-item__img"> <img
2106src="/local/templates/opera/html//local/templates/opera/html/img/@1x/mainpage/p-cast-item-img-1.jpg"
2107alt="img"
2108srcset="/local/templates/opera/html/img/@1x/mainpage/p-cast-item-img-1.jpg 1x, /local/templates/opera/html/img/@2x/main
2108page/p-cast-item-img-1.jpg 2x"> </div> <div class="p-cast-item__content"> <div class="p-cast-item__name"> Ксения
2109Григорьева
2110</div> <div class="p-cast-item__state"> лауреат международных
2111конкурсов
2112</div> </div> </div> </div> <div class="col-12 col-lg-4"> <div class="p-cast-item"> <div class="p-cast-item__img"> <img
2113src="/local/templates/opera/html//local/templates/opera/html/img/@1x/mainpage/p-cast-item-img-2.jpg"
2114alt="img"
2115srcset="/local/templates/opera/html/img/@1x/mainpage/p-cast-item-img-2.jpg 1x, /local/templates/opera/html/img/@2x/mainpage/p-cast-item-img-2.jpg 2x"> </div> <div class="p-cast-item__content"> <div class="p-cast-item__name"> Татьяна
2116Кальченко
2117</div> <div class="p-cast-item__state"> лауреат международных
2118конкурсов
2119</div> </div> </div> </div> <div class="col-12 col-lg-4"> <div class="p-cast-item"> <div class="p-cast-item__img"> <img
2120src="/local/templates/opera/html//local/templates/opera/html/img/@1x/mainpage/p-cast-item-img-3.jpg"
2121alt="img"
2122srcset="/local/templates/opera/html/img/@1x/mainpage/p-cast-item-img-3.jpg 1x, /local/templates/opera/html/img/@2x/mainpage/p-cast-item-img-3.jpg 2x"> </div> <div class="p-cast-item__content"> <div class="p-cast-item__name"> Виктория
2123Мартемьянова
2124</div> <div class="p-cast-item__state"> лауреат международных
2125конкурсов
2126</div> </div> </div> </div> </div> </div> </div> <div class="p-cast-block"> <div class="p-cast-title"> ХРИЗОТЕМИДА
2127</div> <div class="p-cast-items"> <div class="row"> <div class="col-12 col-lg-4"> <div class="p-cast-item"> <div class="p-cast-item__img"> <img
2128src="/local/templates/opera/html//local/templates/opera/html/img/@1x/mainpage/p-cast-item-img-4.jpg"
2129alt="img"
2130srcset="/local/templates/opera/html/img/@1x/mainpage/p-cast-item-img-4.jpg 1x, /local/templates/opera/html/img/@2x/mainpage/p-cast-item-img-4.jpg 2x"> </div> <div class="p-cast-item__content"> <div class="p-cast-item__name"> Ксения
2131Григорьева
2132</div> <div class="p-cast-item__state"> лауреат международных
2133конкурсов
2134</div> </div> </div> </div> <div class="col-12 col-lg-4"> <div class="p-cast-item"> <div class="p-cast-item__img"> <img
2135src="/local/templates/opera/html//local/templates/opera/html/img/@1x/mainpage/p-cast-item-img-5.jpg"
2136alt="img"
2137srcset="/local/templates/opera/html/img/@1x/mainpage/p-cast-item-img-5.jpg 1x, /local/templates/opera/html/img/@2x/mainpage/p-cast-item-img-5.jpg 2x"> </div> <div class="p-cast-item__content"> <div class="p-cast-item__name"> Татьяна
2138Кальченко
2139</div> <div class="p-cast-item__state"> лауреат международных
2140конкурсов
2141</div> </div> </div> </div> <div class="col-12 col-lg-4"> <div class="p-cast-item"> <div class="p-cast-item__img"> <img
2142src="/local/templates/opera/html//local/templates/opera/html/img/@1x/mainpage/p-cast-item-img-6.jpg"
2143alt="img"
2144srcset="/local/templates/opera/html/img/@1x/mainpage/p-cast-item-img-6.jpg 1x, /local/templates/opera/html/img/@2x/mainpage/p-cast-item-img-6.jpg 2x"> </div> <div class="p-cast-item__content"> <div class="p-cast-item__name"> Виктория
2145Мартемьянова
2146</div> <div class="p-cast-item__state"> лауреат международных
2147конкурсов
2148</div> </div> </div> </div> </div> </div> </div> <div class="p-cast-block"> <div class="p-cast-title"> ЭЛЕКТРА
2149</div> <div class="p-cast-items"> <div class="row"> <div class="col-12 col-lg-4"> <div class="p-cast-item"> <div class="p-cast-item__img"> <img
2150src="/local/templates/opera/html//local/templates/opera/html/img/@1x/mainpage/p-cast-item-img-1.jpg"
2151alt="img"
2152srcset="/local/templates/opera/html/img/@1x/mainpage/p-cast-item-img-1.jpg 1x, /local/templates/opera/html/img/@2x/mainpage/p-cast-item-img-1.jpg 2x"> </div> <div class="p-cast-item__content"> <div class="p-cast-item__name"> Ксения
2153Григорьева
2154</div> <div class="p-cast-item__state"> лауреат международных
2155конкурсов
2156</div> </div> </div> </div> <div class="col-12 col-lg-4"> <div class="p-cast-item"> <div class="p-cast-item__img"> <img
2157src="/local/templates/opera/html//local/templates/opera/html/img/@1x/mainpage/p-cast-item-img-2.jpg"
2158alt="img"
2159srcset="/local/templates/opera/html/img/@1x/mainpage/p-cast-item-img-2.jpg 1x, /local/templates/opera/html/img/@2x/main
2159page/p-cast-item-img-2.jpg 2x"> </div> <div class="p-cast-item__content"> <div class="p-cast-item__name"> Татьяна
2160Кальченко
2161</div> <div class="p-cast-item__state"> лауреат международных
2162конкурсов
2163</div> </div> </div> </div> <div class="col-12 col-lg-4"> <div class="p-cast-item"> <div class="p-cast-item__img"> <img
2164src="/local/templates/opera/html//local/templates/opera/html/img/@1x/mainpage/p-cast-item-img-3.jpg"
2165alt="img"
2166srcset="/local/templates/opera/html/img/@1x/mainpage/p-cast-item-img-3.jpg 1x, /local/templates/opera/html/img/@2x/mainpage/p-cast-item-img-3.jpg 2x"> </div> <div class="p-cast-item__content"> <div class="p-cast-item__name"> Виктория
2167Мартемьянова
2168</div> <div class="p-cast-item__state"> лауреат международных
2169конкурсов
2170</div> </div> </div> </div> </div> </div> </div> <div class="p-cast-block"> <div class="p-cast-title"> ХРИЗОТЕМИДА
2171</div> <div class="p-cast-items"> <div class="row"> <div class="col-12 col-lg-4"> <div class="p-cast-item"> <div class="p-cast-item__img"> <img
2172src="/local/templates/opera/html//local/templates/opera/html/img/@1x/mainpage/p-cast-item-img-4.jpg"
2173alt="img"
2174srcset="/local/templates/opera/html/img/@1x/mainpage/p-cast-item-img-4.jpg 1x, /local/templates/opera/html/img/@2x/mainpage/p-cast-item-img-4.jpg 2x"> </div> <div class="p-cast-item__content"> <div class="p-cast-item__name"> Ксения
2175Григорьева
2176</div> <div class="p-cast-item__state"> лауреат международных
2177конкурсов
2178</div> </div> </div> </div> <div class="col-12 col-lg-4"> <div class="p-cast-item"> <div class="p-cast-item__img"> <img
2179src="/local/templates/opera/html//local/templates/opera/html/img/@1x/mainpage/p-cast-item-img-5.jpg"
2180alt="img"
2181srcset="/local/templates/opera/html/img/@1x/mainpage/p-cast-item-img-5.jpg 1x, /local/templates/opera/html/img/@2x/mainpage/p-cast-item-img-5.jpg 2x"> </div> <div class="p-cast-item__content"> <div class="p-cast-item__name"> Татьяна
2182Кальченко
2183</div> <div class="p-cast-item__state"> лауреат международных
2184конкурсов
2185</div> </div> </div> </div> <div class="col-12 col-lg-4"> <div class="p-cast-item"> <div class="p-cast-item__img"> <img
2186src="/local/templates/opera/html//local/templates/opera/html/img/@1x/mainpage/p-cast-item-img-6.jpg"
2187alt="img"
2188srcset="/local/templates/opera/html/img/@1x/mainpage/p-cast-item-img-6.jpg 1x, /local/templates/opera/html/img/@2x/mainpage/p-cast-item-img-6.jpg 2x"> </div> <div class="p-cast-item__content"> <div class="p-cast-item__name"> Виктория
2189Мартемьянова
2190</div> <div class="p-cast-item__state"> лауреат международных
2191конкурсов
2192</div> </div> </div> </div> </div> </div> </div> </div> </div> </div> <div class="p-cast-show-all-btn-block"> <a href="#" class="p-cast-show-all-btn black-tr-btn">Показать всех</a> </div> </div> </div></div> <div class="cookie-block"><div class="cookie"><div class="cookie__text">Этот сайт использует cookie для хранения данных. Продолжая использовать сайт, Вы даете <a href="/politics/" style="color: white;">согласие</a> на работу с этими файлами.</div><div class="cookie__btn-block"><a href="#" class="cookie__btn white-tr-btn">Принять и закрыть</a></div></div></div>
2192<script type="text/javascript">ymaps.ready(init);
2193function init () {
2194if(document.getElementById('map')!= null){
2195var myMap = new ymaps.Map("map", {
2196center:[59.933841, 30.286183],
2197zoom: 16,
2198controls: []
2199});
2200var myGeoObjects = [];
2201myGeoObjects = new ymaps.Placemark([59.932964, 30.292910],{
2202},{
2203iconLayout: 'default#image',
2204iconImageHref: '/local/templates/opera/html/img/svg/map-loc.svg',
2205iconImageSize: [175, 210],
2206iconImageOffset: [-87.5, -210]
2207});
2208var clusterer = new ymaps.Clusterer({
2209clusterDisableClickZoom: false,
2210clusterOpenBalloonOnClick: false,
2211});
2212clusterer.add(myGeoObjects);
2213myMap.geoObjects.add(clusterer);
2214myMap.behaviors.disable('scrollZoom');
2215}if(document.getElementById('map-mobile')!= null){
2216var myMapMobile = new ymaps.Map("map-mobile", {
2217center:[59.934838, 30.292856],
2218zoom: 16,
2219controls: []
2220});
2221var myGeoObjectsMobile = [];
2222myGeoObjectsMobile = new ymaps.Placemark([59.932964, 30.292910],{
2223},{
2224iconLayout: 'default#image',
2225iconImageHref: '/local/templates/opera/html/img/svg/map-loc.svg',
2226iconImageSize: [95, 114],
2227iconImageOffset: [-47.5, -114]
2228});
2229var clustererMobile = new ymaps.Clusterer({
2230clusterDisableClickZoom: false,
2231clusterOpenBalloonOnClick: false,
2232});
2233clustererMobile.add(myGeoObjectsMobile);
2234myMapMobile.geoObjects.add(clustererMobile);
2235myMapMobile.behaviors.disable('scrollZoom');
2236}}</script>
2236<script>function apit_disableByButton(perf_id) {
2237jQuery(perf_id).html("Все билеты проданы").addClass('white-bg');
2238jQuery(perf_id).on('click', function() {
2239return false;
2240});
2241}</script>
2241<!-- Yandex.Metrika counter -->
2241<script type="text/javascript"> (function(m,e,t,r,i,k,a){
2242m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
2243m[i].l=1*new Date();
2244for (var j = 0; j < document.scripts.length; j++) {if (document.scripts[j].src === r) { return; }}k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)
2245})(window, document,'script','https://mc.yandex.ru/metrika/tag.js?id=74309611', 'ym');
2246ym(74309611, 'init', {ssr:true, webvisor:true, clickmap:true, ecommerce:"dataLayer", referrer: document.referrer, url: location.href, accurateTrackBounce:true, trackLinks:true});</script>
2246<noscript><div><img src="https://mc.yandex.ru/watch/74309611" style="position:absolute; left:-9999px;" alt="" /></div></noscript><!-- /Yandex.Metrika counter -->
2246<script async src="https://culturaltracking.ru/static/js/spxl.js?pixelId=4182" data-pixel-id="4182"></script>
2246<script> document.addEventListener("DOMContentLoaded", function() {
2247setTimeout(function(){
2248if(document.getElementById('map-important')!= null){
2249var myMapImportant = new ymaps.Map("map-important", {
2250center:[59.936296, 30.333116],
2251zoom: 16,
2252controls: []
2253});
2254var myGeoObjectsImportant = [];
2255myGeoObjectsImportant = new ymaps.Placemark([59.936296, 30.333116],{
2256},{
2257iconLayout: 'default#image',
2258iconImageHref: '/upload/img/loc.svg',
2259iconImageSize: [95, 114],
2260iconImageOffset: [-47.5, -114]
2261});
2262var clustererImportant = new ymaps.Clusterer({
2263clusterDisableClickZoom: false,
2264clusterOpenBalloonOnClick: false,
2265});
2266clustererImportant.add(myGeoObjectsImportant);
2267myMapImportant.geoObjects.add(clustererImportant);
2268myMapImportant.behaviors.disable('scrollZoom');
2269}//$.fancybox.open({'src': '#important-message'})
2270}, 5000);
2271$('#important-message-close').click(function(){
2272$.fancybox.close();
2273});
2274})
2275</script>
2275</body></html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.