a[name], a[name]:hover { text-decoration: inherit; color: inherit; }

.regional-subdomain-title {
    display: grid;
    grid-template-areas: 'flag text emblem';
    grid-template-columns: clamp(112px, 11vw, 132px) minmax(0, 1fr) clamp(112px, 11vw, 132px);
    align-items: stretch;
    justify-content: center;
    box-sizing: border-box;
    width: calc(100% + 30px);
    max-width: none;
    column-gap: 15px;
    margin: 15px -15px 24px;
    padding: 10px 16px;
    border-radius: 4px;
    background: rgba(255, 255, 255, 0.94);
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.16);
    color: #363636;
    font-size: clamp(30px, 2.6vw, 36px);
    font-weight: bold;
    line-height: 1.2;
    text-align: center;
}

/* Региональный заголовок сохраняет контраст без обводки текста на любом фоновом изображении */
.regional-subdomain-title__text {
    display: block;
    grid-area: text;
    align-self: center;
    width: 100%;
    min-width: 0;
    max-width: 100%;
    margin: 0;
    overflow-wrap: anywhere;
}

/* Обёртки повторяют фактическую высоту однострочного или многострочного заголовка */
.regional-subdomain-title__symbol {
    position: relative;
    display: block;
    align-self: stretch;
    height: 100%;
    min-width: 0;
    min-height: 0;
}

.regional-subdomain-title__symbol--flag {
    --regional-flag-shape: polygon(
        0 3%, 24% 0, 49% 3%, 74% 0, 100% 2.5%,
        97% 97%, 74% 100%, 49% 97%, 24% 100%, 2% 97.5%
    );

    grid-area: flag;
    justify-self: center;
    width: auto;
    max-width: 100%;
    aspect-ratio: 3 / 2;
    filter: drop-shadow(0 2px 2px rgba(0, 0, 0, 0.2));
}

.regional-subdomain-title__symbol--emblem {
    grid-area: emblem;
}

.regional-subdomain-title__emblem,
.regional-subdomain-title__flag {
    position: absolute;
    inset: 0;
    display: block;
    width: 100%;
    max-width: none;
    height: 100%;
    object-fit: contain;
}

.regional-subdomain-title__flag {
    -webkit-clip-path: var(--regional-flag-shape);
    clip-path: var(--regional-flag-shape);
}

/* Светотень создаёт статичный эффект складок без искажения рисунка флага */
.regional-subdomain-title__symbol--flag::after {
    content: '';
    position: absolute;
    inset: 0;
    background: linear-gradient(
        100deg,
        rgba(255, 255, 255, 0.18) 0%,
        rgba(255, 255, 255, 0) 18%,
        rgba(0, 0, 0, 0.1) 34%,
        rgba(255, 255, 255, 0.15) 52%,
        rgba(0, 0, 0, 0.08) 70%,
        rgba(255, 255, 255, 0.1) 88%,
        rgba(0, 0, 0, 0.04) 100%
    );
    -webkit-clip-path: var(--regional-flag-shape);
    clip-path: var(--regional-flag-shape);
    pointer-events: none;
}

/* Однострочный текст по умолчанию показывает многоточие и остаётся доступным для сдвига */
.quick-tickets-overflow-text {
    position: relative;
    display: block;
    width: 100%;
    min-width: 0;
    overflow: hidden;
    touch-action: pan-y;
}

.quick-tickets-overflow-text__content {
    display: block;
    width: 100%;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    transform: translateX(0);
}

/* Переполненная строка сохраняет видимым начало текста до запуска сдвига */
.quick-tickets-overflow-text--overflowing > .quick-tickets-overflow-text__content {
    text-align: left;
    -webkit-user-select: none;
    user-select: none;
}

.quick-tickets-overflow-text--overflowing {
    cursor: grab;
}

.quick-tickets-overflow-text--overflowing:active {
    cursor: grabbing;
}

/* В режиме сенсорного перетаскивания курсор не показывает возможность перетаскивания мышью */
.quick-tickets-overflow-text--touch-drag-only.quick-tickets-overflow-text--overflowing,
.quick-tickets-overflow-text--touch-drag-only.quick-tickets-overflow-text--overflowing:active {
    cursor: inherit;
}

/* Переполненный текст выполняет один проход до последнего символа */
.quick-tickets-overflow-text__content--active {
    overflow: visible;
    text-overflow: clip;
    animation: quick-tickets-overflow-text-scroll var(--quick-tickets-overflow-text-duration) linear forwards;
    will-change: transform;
}

/* Ручной сдвиг следует за указателем без самостоятельной анимации */
.quick-tickets-overflow-text__content--dragging {
    overflow: visible;
    text-overflow: clip;
    animation: none;
    transform: translateX(var(--quick-tickets-overflow-text-offset));
    will-change: transform;
}

@keyframes quick-tickets-overflow-text-scroll {
    from { transform: translateX(0); }
    to { transform: translateX(var(--quick-tickets-overflow-text-distance)); }
}

/* Пользовательские настройки уменьшения движения сохраняют многоточие вместо автоматического сдвига */
@media (prefers-reduced-motion: reduce) {
    .quick-tickets-overflow-text__content--active {
        overflow: hidden;
        text-overflow: ellipsis;
        animation: none;
        transform: none;
    }
}

.width-1 { width: 1%; }
.width-100 { width: 100%; }
.width-1px { width: 1px; }
.no-margin { margin: 0 !important; }
.margin-top-0 { margin-top: 0 !important; }
.margin-top-5 { margin-top: 5px; }
.margin-top-10 { margin-top: 10px; }
.margin-bottom-0 { margin-bottom: 0 !important; }
.margin-bottom-5 { margin-bottom: 5px; }
.margin-bottom-10 { margin-bottom: 10px !important; }
.margin-top-bottom-10 { margin-top: 10px; margin-bottom: 10px; }
.padding-0 { padding: 0 !important; }
.padding-10 { padding: 10px; }
.display-none { display: none !important; }
.overflow-visible { overflow: visible; }

.opacity-05 { opacity: 0.5; }
.opacity-03 { opacity: 0.3; }

.border-1-solid-lightgray { border: 1px solid lightgray; }
.border-radius-4 { border-radius: 4px; }

.float-left { float: left; }
.float-right { float: right; }
.flex-wrap { display: flex; display: -webkit-flex; flex-wrap: wrap; }

.text-color-error { color: #b94a48 !important; }

table.text-center td, table.text-center th, table td.text-center, table th.text-center { text-align: center; }

.gold { color: gold; }
.silver { color: silver; }
.bronze { color: #c45010; }

.noselect {
    -moz-user-select: none;
    -webkit-user-select: none;
    -ms-user-select: none;
    -o-user-select: none;
    user-select: none;
}

a.notUnderline {
    text-decoration: none !important;
}

a.notUnderline .underline {
    text-decoration-line: underline;
    text-decoration-style: solid;
    text-decoration-thickness: 1px;
    text-underline-offset: 2px;
}

a.pointerEventsNone {
    pointer-events: none; color: gray;
}

/* Изображение */
img.polaroid {
    padding: 2px;
    background-color: #ffffff;
    border: 1px solid #ebebeb;
    box-sizing: border-box !important;
}

img.no-photo {
    padding: 5%;
    background-color: #ffffff;
    border: 1px solid #666666;
    box-sizing: border-box !important;
}

/* Маркеры */
.marker {
    display: inline-block;
    padding: .3em .5em;
    border-radius: 4px;
    font-size: max(.8em, 12px);
    line-height: 1;
    color: #eeeeee;
    vertical-align: middle;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    max-width: 200px;
}
.marker.marker-default { background-color: #444444; }
.marker.marker-important { background-color: #f37334; }
.marker.marker-specialOffer { background-color: #d9534f; }
.marker .qxf, .marker .qsf, .marker .qtf, .marker .qpf, .marker .qsnf { font-size: 16px; }

/* Возрастное ограничение */
.ageRestriction {
    display: inline-block;
    width: 2em;
    border-radius: 50%;
    border: 2px solid #333333;
    font-size: max(.5em, 12px);
    line-height: 2em;
    font-weight: bold;
    color: #333333;
    text-align: center;
    vertical-align: middle;
    box-sizing: content-box !important;
    user-select: none;
}

.ageRestriction.reverse {
    border-color: #eeeeee;
    color: #eeeeee;
}

/* Сохраняем размер текста и единый отступ у иконок в обычных кнопках и выпадающих меню */
.btn .btn-text-icon,
.dropdown-menu .btn-text-icon {
    font-size: 1em;
    line-height: 1;
    margin-right: 10px;
    vertical-align: middle;
}

/* Убираем внешний отступ у иконок внутри текста кнопки */
.btn .btn-text-icon.btn-text-icon-no-gap {
    margin-right: 0;
}

/* Задаём увеличенный размер иконки независимо от подключённого набора */
.icon-2x {
    font-size: 2em;
}

/* Задаём увеличенный размер и выравнивание иконки независимо от подключённого набора */
.icon-lg {
    font-size: 1.33333333em;
    line-height: 0.75em;
    vertical-align: -0.0667em;
}

/* Вращаем иконку независимо от подключённого набора */
.icon-spin {
    animation: spin 2s infinite linear;
}

/* Сохраняем оформление стандартной иконки для безопасного класса без префикса Bootstrap */
.icon-default,
.qt-icon-default {
    font-size: max(1.6em, 12px);
    /*line-height: 1em;*/
    color: #222222;
    vertical-align: middle;
    box-sizing: content-box !important;
    text-decoration: none;
}
.icon-default.reverse,
.qt-icon-default.reverse { color: #eeeeee; }

/* Полноцветные логотипы вместо шрифтовых иконок */
.qt-brand-icon {
    display: inline-block;
    width: 1em;
    height: 1em;
    object-fit: contain;
    vertical-align: middle;
    flex-shrink: 0;
    background-image: none !important;
    background-position: 0 0;
}

/* Горизонтальный логотип PRO.Культура.РФ с исходными пропорциями */
.qt-brand-icon_pro-cultureru {
    width: auto;
    height: 24px;
}

.icon-success { color: green; }
.icon-warning { color: orange; }
.icon-error { color: red; }

/*** Загрузки ***/

.loadingQT {
    position: relative;
    width: 100%;
    height: 80vh;
}

.loadingQT .logo {
    width: 60px;
    height: 60px;
    margin: -30px 0 0 -30px;
    position: absolute;
    left: 50%;
    top: 50%;
    text-align: center;
}

.loadingQT .text {
    width: 100%;
    margin-top: 80px;
    position: absolute;
    left: 0;
    top: 50%;
    text-align: center;
}

.loadingQT .spinner {
    height: 120px;
    width: 120px;
    margin: -60px 0 0 -60px;
    position: absolute;
    left: 50%;
    top: 50%;
    border: 3px solid transparent;
    border-top-color: rgba(243, 115, 52, 1);
    border-radius: 50%;
    animation: spin 1.2s linear infinite;
}

.loadingQT .spinner:before, .loadingQT .spinner:after {
    position: absolute;
    content: '';
    border: 3px solid transparent;
    border-radius: 50%;
}

.loadingQT .spinner:before {
    top: -12px;
    left: -12px;
    right: -12px;
    bottom: -12px;
    border-top-color: rgba(243, 115, 52, 1);
    animation: spin 1.4s linear infinite;
}

.loadingQT .spinner:after {
    top: 6px;
    left: 6px;
    right: 6px;
    bottom: 6px;
    border-top-color: rgba(243, 115, 52, 1);
    animation: spin 1.6s linear infinite;
}

.loadingQT2 {
    position: relative;
    min-height: 250px;
}

.loadingQT2 .logo {
    width: 60px; height: 60px;
    margin: -30px 0 0 -30px;
    position: absolute;
    left: 50%; top: 50%;
    text-align: center;
}

.loadingQT2 .text {
    width: 100%;
    margin-top: 80px;
    position: absolute;
    left: 0; top: 50%;
    text-align: center;
}

.loadingQT2 .spinner {
    width: 120px; height: 120px;
    margin: -60px 0 0 -60px;
    position: absolute;
    left: 50%; top: 50%;
    border: 3px solid transparent;
    border-top-color: rgba(243, 115, 52, 1);
    border-radius: 50%;
    animation: spin 1.2s linear infinite;
}

.loadingQT2 .spinner:before, .loadingQT2 .spinner:after {
    position: absolute;
    content: '';
    border: 3px solid transparent;
    border-radius: 50%;
}

.loadingQT2 .spinner:before {
    top: -12px; bottom: -12px;
    left: -12px; right: -12px;
    border-top-color: rgba(243, 115, 52, 1);
    animation: spin 1.4s linear infinite;
}

.loadingQT2 .spinner:after {
    top: 6px; bottom: 6px;
    left: 6px; right: 6px;
    border-top-color: rgba(243, 115, 52, 1);
    animation: spin 1.6s linear infinite;
}

.loadingQT2 .pulse {
    width: 120px; height: 120px;
    margin: -60px 0 0 -60px;
    position: absolute;
    left: 50%; top: 50%;
    border: 3px solid transparent;
    border-radius: 50%;
    animation: pulse 2s infinite;
}

@keyframes spin {
    0% { transform: rotate(0deg); }
    100% { transform: rotate(360deg); }
}

@-webkit-keyframes pulse {
    0% { -webkit-box-shadow: 0 0 0 0 rgba(243, 115, 52, 0.4); }
    70% { -webkit-box-shadow: 0 0 0 64px rgba(243, 115, 52, 0); }
    100% { -webkit-box-shadow: 0 0 0 0 rgba(243, 115, 52, 0); }
}

@keyframes pulse {
    0% { -moz-box-shadow: 0 0 0 0 rgba(243, 115, 52, 0.4); box-shadow: 0 0 0 0 rgba(243, 115, 52, 0.4); }
    70% { -moz-box-shadow: 0 0 0 64px rgba(243, 115, 52, 0); box-shadow: 0 0 0 64px rgba(243, 115, 52, 0); }
    100% { -moz-box-shadow: 0 0 0 0 rgba(243, 115, 52, 0); box-shadow: 0 0 0 0 rgba(243, 115, 52, 0); }
}

/* Подсветка незаполненных полей и рекомендуемого способа оплаты */
input.pulse,
.payments-type.pulse {
    animation: inputPulse 3s infinite;
}

@-webkit-keyframes inputPulse {
    0% { -webkit-box-shadow: 0 0 0 0 rgba(243, 115, 52, 0.4); }
    50% { -webkit-box-shadow: 0 0 0 10px rgba(243, 115, 52, 0); }
    100% { -webkit-box-shadow: 0 0 0 0 rgba(243, 115, 52, 0); }
}

@keyframes inputPulse {
    0% { -moz-box-shadow: 0 0 0 0 rgba(243, 115, 52, 0.4); box-shadow: 0 0 0 0 rgba(243, 115, 52, 0.4); }
    50% { -moz-box-shadow: 0 0 0 10px rgba(243, 115, 52, 0); box-shadow: 0 0 0 10px rgba(243, 115, 52, 0); }
    100% { -moz-box-shadow: 0 0 0 0 rgba(243, 115, 52, 0); box-shadow: 0 0 0 0 rgba(243, 115, 52, 0); }
}

/* Карточки доступных способов применения льготы */
.order-exemption-card {
    display: flex;
    align-items: stretch;
    margin-top: 10px;
    border: 1px solid var(--quick-tickets-color-border, #e2e2e2);
    border-radius: var(--quick-tickets-radius-medium, 6px);
    overflow: hidden;
}

.order-exemption-card__logo {
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 10px 0 10px 15px;
}

.order-exemption-card__image {
    display: block;
    width: 42px;
    height: 42px;
    object-fit: contain;
}

.order-exemption-card__content {
    min-width: 0;
    display: flex;
    align-items: center;
    padding: 10px 15px 10px 18px;
}

.order-exemption-card__content_column {
    flex: 1 1 auto;
    flex-direction: column;
    justify-content: center;
    align-items: flex-start;
}

.order-exemption-card__message {
    line-height: 18px;
    font-size: 16px;
    color: #222222;
    white-space: normal;
}
