/* Общие стили сайта. Цвета темы задаются через ThemeService и Bootstrap. */

main > .container {
    display: flex;
    flex-direction: column;
}

/* Тонкие заголовки */
h1, h2, h3, h4, h5, h6 {
    font-weight: 300;
    line-height: 1.2;
}
h1 { letter-spacing: -0.03em; }
h2 { letter-spacing: -0.02em; }

.not-set { color: var(--bs-danger); font-style: italic; }

/* Сортировка GridView */
a.asc::after, a.desc::after {
    content: '';
    display: inline-block;
    width: 0;
    height: 0;
    margin: 4px 4px 2px;
    border: 5px solid transparent;
    background: transparent;
}
a.asc::after { border-bottom: 7px solid var(--bs-body-color); border-top-width: 0; }
a.desc::after { border-top: 7px solid var(--bs-body-color); border-bottom-width: 0; }
.grid-view th { white-space: nowrap; }

.hint-block {
    display: block;
    margin-top: 5px;
    color: var(--bs-secondary-color);
}
.error-summary {
    color: var(--bs-danger-text-emphasis);
    background: var(--bs-danger-bg-subtle);
    border-left: 3px solid var(--bs-danger-border-subtle);
    padding: 10px 20px;
    margin: 0 0 15px;
}

/* Навигация */
.navbar > .container, .navbar > .container-fluid { align-items: baseline; }
.navbar-nav .nav-link.logout { color: var(--bs-navbar-color); }
.navbar-nav .nav-link.logout:focus,
.navbar-nav .nav-link.logout:hover { color: var(--bs-navbar-hover-color); }
@media (max-width: 767.98px) {
    .navbar-nav .nav-link.logout {
        display: block;
        width: 100%;
        padding: 10px 0;
        text-align: left;
    }
}

/* Логотипы футера */
.footer-logo-dark { display: none; }
[data-bs-theme="dark"] .footer-logo-light { display: none; }
[data-bs-theme="dark"] .footer-logo-dark { display: inline-block; }

/* Кнопки пользовательских компонентов используют цвета темы */
.btn-yii, .login-btn {
    color: var(--bs-btn-color, #fff);
    background: var(--bs-primary);
    border: 1px solid var(--bs-primary);
    font-weight: 600;
    letter-spacing: .02em;
    transition: opacity .2s, transform .1s;
}
.btn-yii:hover, .login-btn:hover { opacity: .9; transform: translateY(-1px); }
.btn-yii:active, .login-btn:active { transform: translateY(0); }

/* Поля форм с иконкой */
.form-card .input-group, .login-split-card .input-group {
    border: var(--bs-border-width) solid var(--bs-border-color);
    border-radius: var(--bs-border-radius);
    overflow: hidden;
    transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out;
}
.form-card .input-group .input-group-text,
.login-split-card .input-group .input-group-text {
    display: flex;
    align-items: center;
    justify-content: center;
    padding-left: 1rem;
    padding-right: .75rem;
    border: 0;
}
.form-card .input-group .input-group-text { background: var(--bs-body-bg); }
.login-split-card .input-group .input-group-text { background: transparent; }
.form-card .input-group .form-control,
.login-split-card .input-group .form-control { border: 0; }
.login-split-card .input-group .form-control { background: transparent; }
.form-card .input-group .form-control:focus,
.login-split-card .input-group .form-control:focus { box-shadow: none; }
.form-card .input-group:focus-within,
.login-split-card .input-group:focus-within {
    border-color: var(--bs-primary);
    box-shadow: 0 0 0 .25rem rgba(var(--bs-primary-rgb), .25);
}

/* Валидация полей */
@supports selector(.input-group:has(.is-invalid)) {
    .form-card .input-group:has(.is-invalid) ~ .invalid-feedback,
    .login-split-card .input-group:has(.is-invalid) ~ .invalid-feedback {
        display: block;
        margin: .35rem 0 .5rem;
    }
    .form-card .input-group:has(.is-invalid),
    .login-split-card .input-group:has(.is-invalid) { border-color: var(--bs-danger); }
    .form-card .input-group:has(.is-invalid):focus-within,
    .login-split-card .input-group:has(.is-invalid):focus-within {
        box-shadow: 0 0 0 .25rem rgba(var(--bs-danger-rgb), .25);
    }
}
@supports not selector(.input-group:has(.is-invalid)) {
    .form-card .invalid-feedback:not(:empty),
    .login-split-card .invalid-feedback:not(:empty) {
        display: block;
        margin: .35rem 0 .5rem;
    }
    .form-card .input-group .form-control.is-invalid,
    .login-split-card .input-group .form-control.is-invalid {
        border: var(--bs-border-width) solid var(--bs-danger);
    }
    .form-card .input-group .form-control.is-invalid:focus,
    .login-split-card .input-group .form-control.is-invalid:focus {
        box-shadow: 0 0 0 .25rem rgba(var(--bs-danger-rgb), .25);
    }
}

/* Карточки авторизации и форм */
.login-split-card {
    width: 100%;
    max-width: 900px;
    border: 1px solid var(--bs-border-color);
    border-radius: 1rem;
    background: var(--bs-tertiary-bg);
    box-shadow: 0 4px 24px rgba(0, 0, 0, .10);
}
.login-split-card-wide { max-width: 960px; }
.login-brand-title { font-size: 1.75rem; line-height: 1.3; }
.login-brand-text { font-size: .9rem; }

.form-card { border-radius: 1rem; box-shadow: 0 4px 24px rgba(0, 0, 0, .10); }
[data-bs-theme="dark"] .login-split-card,
[data-bs-theme="dark"] .form-card {
    box-shadow: 0 0 0 1px var(--bs-border-color), 0 4px 24px rgba(0, 0, 0, .4);
}
[data-bs-theme="dark"] .login-split-card { background: var(--bs-body-bg); }
[data-bs-theme="dark"] .login-mobile-logo { filter: invert(1); }

/* Декоративные панели используют динамические цвета темы */
.login-brand-panel, .hero-banner {
    position: relative;
    background: linear-gradient(135deg, var(--bs-primary), var(--bs-secondary));
}
.login-brand-panel { min-height: 480px; }
.login-brand-panel::before, .hero-banner::before {
    content: '';
    position: absolute;
    inset: 0;
    border-radius: inherit;
    background:
        radial-gradient(circle at 20% 80%, rgba(255,255,255,.16), transparent 50%),
        radial-gradient(circle at 80% 20%, rgba(255,255,255,.12), transparent 40%);
    pointer-events: none;
}
.hero-lead { max-width: 520px; }
.hero-logo {
    height: 120px;
    opacity: .45;
    right: 2.5rem;
    top: 50%;
    transform: translateY(-50%);
}

/* Контактная форма и капча */
.site-contact textarea.form-control { height: 140px; }
.site-contact img[src*="captcha"] {
    border-radius: var(--bs-border-radius);
    mix-blend-mode: multiply;
}
[data-bs-theme="dark"] .site-contact img[src*="captcha"] {
    mix-blend-mode: screen;
    filter: invert(1) hue-rotate(180deg);
}

/* Вертикальное выравнивание страниц */
.site-login, .site-signup, .site-contact, .site-request-password-reset,
.site-reset-password, .site-resend-verification-email, .site-index,
.site-error, .site-about { flex: 1; }

.site-error .site-error-content, .site-about .site-about-content {
    width: 100%;
    max-width: 90%;
}
@media (min-width: 576px) {
    .site-error .site-error-content, .site-about .site-about-content { max-width: 80%; }
}
@media (min-width: 768px) {
    .site-error .site-error-content, .site-about .site-about-content { max-width: 60%; }
}
@media (min-width: 992px) {
    .site-error .site-error-content, .site-about .site-about-content { max-width: 50%; }
}

/* Карточки расширений */
.extension-card { transition: transform .15s ease-in-out, box-shadow .15s ease-in-out; }
.extension-card:hover {
    transform: translateY(-3px);
    box-shadow: 0 8px 24px rgba(0, 0, 0, .12) !important;
}
.extension-icon { font-size: 1.5rem; line-height: 1; }
[data-bs-theme="dark"] .extension-card {
    background: var(--bs-body-bg);
    box-shadow: 0 0 0 1px var(--bs-border-color), 0 2px 8px rgba(0, 0, 0, .3);
}
[data-bs-theme="dark"] .extension-card:hover {
    box-shadow: 0 0 0 1px var(--bs-border-color), 0 8px 24px rgba(0, 0, 0, .4) !important;
}

/* Дополнительные размеры текста */
.fs-7 { font-size: .875rem; }
.fs-8 { font-size: .75rem; }
.fs-12 { font-size: 12px; }

/* Структура страницы */
html, body { min-height: 100%; }
body { display: flex; flex-direction: column; }
#main { flex: 1 0 auto; }
.footer { flex-shrink: 0; }

/* Выпадающие меню шапки */
header .dropdown-menu {
    z-index: 1060 !important;
    margin-top: .5rem !important;
}
header.bg-white {
    position: relative;
    z-index: 1030;
    overflow: visible;
}

/* Бейдж корзины */
header .bi-cart3 + .badge {
    line-height: 1;
    padding: .25em .4em;
}

/* Изображения в тексте страниц */
.page-content-body img {
    max-width: 100%;
    height: auto;
    margin: 10px 0;
    border-radius: 4px;
}

/* Ссылка на почту */
.email-icon-link { transition: transform .2s ease-in-out; }
.email-icon-link:hover { transform: scale(1.15) translateY(-2px); }

/* Модальные окна */
.modal { z-index: 1056 !important; }
.modal-backdrop { z-index: 1055 !important; }
