@charset "UTF-8";
/* contrast.css — доступность и читаемость (WCAG 2.1 AA). Подключается ПОСЛЕДНИМ.
   Токены цвета (--muted, --on-dark*, --link-on-dark, --focus-on-dark) объявлены в styles.css.
   Правила здесь — только то, что нельзя выразить сменой токена. */

/* --- Нативные контролы: светлая схема, чтобы выпадающие списки, календарь и
   поле файла никогда не оказывались «белым по белому» --- */
input,select,textarea{color-scheme:light}
select option,select optgroup{color:#1d1e42;background:#fff}
select option:disabled{color:#64658a}
input[type=file]{color:var(--ink);max-width:100%}
input[type=file]::file-selector-button{margin-right:12px;padding:8px 14px;border:0;border-radius:var(--radius);background:var(--ink);color:#fff;font:700 13px/1.2 var(--font);cursor:pointer}
input[type=file]::file-selector-button:hover{background:var(--purple)}
::placeholder{color:#6e6f8c;opacity:1}
input:disabled,select:disabled,textarea:disabled{color:#64658a;-webkit-text-fill-color:#64658a;opacity:1}
button:disabled,.button:disabled,.button[aria-disabled=true]{opacity:1;cursor:not-allowed}
button.button:disabled,.button[aria-disabled=true]{background:#e6e6ee;border-color:#c9c9d8;color:#4a4b6b}

/* --- Фокус: двойное кольцо (тёмная обводка + жёлтое кольцо) читается и на белом, и на navy --- */
:root:root :is(a,button,input,select,textarea,summary,[tabindex]):focus-visible{outline:3px solid var(--focus-on-dark);outline-offset:2px;box-shadow:0 0 0 2px var(--ink)}
:root:root :is(input,select,textarea):focus{border-color:var(--ink)}
:root:root [tabindex="-1"]:focus{outline:none;box-shadow:none}

/* --- Ссылки и вторичный текст на тёмном фоне --- */
.app-page .form-actions .text-link,.app-page .back-link,.app-page .workspace>.text-link{color:var(--link-on-dark);border-color:var(--link-on-dark)}
.app-page .panel .form-actions .text-link,.app-page .table-wrap .text-link,.app-page .notice .text-link{color:var(--purple);border-color:var(--yellow)}
.muted-light,.page-dark .muted,.page-dark .meta,.hero-footnote,.metric-dark>span:first-child,.metric-dark>a,.attendance-summary>div>span,.balance-banner p,.footer-anthem-time,.footer-grid p{color:var(--on-dark-muted)}
.page-dark .live-stats-label{color:var(--on-dark-muted)}
.event-hero .back-link{color:rgba(255,255,255,.88)!important}
.catalog-summary>span{color:var(--on-dark-muted)}

/* --- Очередь решений (светлый текст на тёмной подложке) --- */
.decision-list a{color:#fff;background:rgba(255,255,255,.07);border-color:rgba(255,255,255,.34)}
.decision-list a:hover{background:#fff;color:var(--ink);border-color:#fff}
.decision-list a strong{color:var(--yellow)}
.decision-list a:hover strong{color:var(--ink)}

/* --- Декоративный паттерн не должен забивать текст --- */
.pattern-layer{opacity:.22}
.auth-intro .pattern-layer,.notification-teaser .pattern-layer,.error-hero .pattern-layer,.event-hero .pattern-layer,.metric-dark .pattern-layer{opacity:.1}
.event-hero .pattern-layer.is-soft{opacity:.08}
.event-hero h1,.event-hero .page-lead,.auth-intro h1,.error-hero h1,.error-hero p{text-shadow:0 1px 14px rgba(21,22,47,.55)}
.event-hero-gradient{background:linear-gradient(180deg,rgba(29,30,66,.72),rgba(29,30,66,.94))}

/* --- Кнопки-контуры: по умолчанию тёмные на светлом; светлые — только на тёмном фоне --- */
.app-page .button-outline{border-color:var(--ink);color:var(--ink)}
.app-page .button-outline:hover{background:var(--ink);color:#fff;border-color:var(--ink)}
.app-page .pagination .button-outline,.app-page .workspace>.form-actions .button-outline,.app-page .workspace-heading .button-outline,.app-page .workspace-section>.form-actions .button-outline,.app-page .workspace>.button-outline,.app-page .workspace-section>.button-outline{border-color:rgba(255,255,255,.6);color:#fff}
.app-page .pagination .button-outline:hover,.app-page .workspace>.form-actions .button-outline:hover,.app-page .workspace-heading .button-outline:hover,.app-page .workspace-section>.form-actions .button-outline:hover,.app-page .workspace>.button-outline:hover,.app-page .workspace-section>.button-outline:hover{background:#fff;color:var(--ink);border-color:#fff}

/* --- Жёлтые кнопки: тёмный текст (синий на жёлтом — 3.9:1) --- */
.button-yellow,.button-yellow:hover,a.button-yellow{color:var(--ink)}

/* --- Значки и плашки --- */
.pill{color:#3f4aa6}
.pill-success{color:#1c5c41}
.pill-warning{color:#6f4f00}
.field-errors,.field-errors p,.ev3-errors,.notice-error{color:#a31d17}
.field-errors{color:#a31d17}
li.required-note,.required{color:#c8261f}

/* --- Исправления контекста (правила .page-dark .panel a и «голые» элементы на тёмной оболочке) --- */
.page-dark .panel a.button-yellow,.page-dark .panel a.button-yellow:hover{color:var(--ink)}
.page-dark .panel a.button-dark{color:#fff}
.page-dark .panel a.button-dark:hover{color:var(--ink)}
.app-page .filter-row .button-outline{border-color:rgba(255,255,255,.6);color:#fff}
.app-page .filter-row .button-outline:hover{background:#fff;color:var(--ink);border-color:#fff}
.app-page .workspace>p>a,.app-page .workspace-section>p>a,.app-page .workspace-heading p a{color:var(--link-on-dark)}
.app-page .workspace>p>a:hover,.app-page .workspace-section>p>a:hover,.app-page .workspace-heading p a:hover{color:#fff}
.app-page .workspace>p.muted,.app-page .workspace-section>p.muted,.app-page .workspace-section>.muted,.app-page .workspace>.muted{color:var(--on-dark-muted)}
.app-page .workspace-content>p>a,.app-page .workspace-content>p.muted>a{color:var(--link-on-dark)}
.app-page .workspace-content>p.muted,.app-page .workspace-content>.muted{color:var(--on-dark-muted)}

/* --- Данные прямо на тёмной оболочке (карточка анкеты и т.п.) --- */
.app-page .workspace-section>.info-list dt,.app-page .workspace>.info-list dt{color:var(--on-dark-muted)}
.app-page .workspace-section>.info-list dd,.app-page .workspace>.info-list dd{color:#fff}
.app-page .workspace-section>.info-list>div,.app-page .workspace>.info-list>div{border-bottom-color:var(--spk-on-dark-line)}
.app-page .workspace-section>.application-text,.app-page .workspace>.application-text{color:var(--on-dark-2)}
.info-list>div{grid-template-columns:minmax(128px,36%) 1fr}
@media(max-width:560px){.info-list>div{grid-template-columns:1fr;gap:4px}}

/* --- Границы полей ввода: >=3:1 к белому (WCAG 1.4.11), раньше #e6e6ee ≈ 1.2:1 --- */
input:not([type=checkbox]):not([type=radio]):not([type=hidden]):not([type=file]):not([type=submit]):not([type=button]),select,textarea{border-color:#8a8ba6}
input:not([type=checkbox]):not([type=radio]):hover,select:hover,textarea:hover{border-color:#64658a}
.form-field.has-error input,.form-field.has-error select,.form-field.has-error textarea,.has-error>input,.has-error>select,.has-error>textarea{border-color:#a31d17!important}
.report-panel .report-drop{border-color:#7c7fa6;color:var(--ink)}
.report-panel .report-drop.is-over{border-color:var(--purple)}
.app-page .report-actions button.button[disabled]{opacity:1;background:#e6e6ee;border-color:#c9c9d8;color:#4a4b6b}
.social-btn[disabled],.social-btn.is-disabled{opacity:1;background:#e6e6ee;border-color:#c9c9d8;color:#4a4b6b}
.form-field input:not([type=checkbox]):not([type=radio]):not([type=file]),.form-field select,.form-field textarea,.search-form input,.account-filters input,.account-filters select,.forms-filters input,.forms-filters select{border-color:#8a8ba6}
.form-field select:hover,.form-field textarea:hover,.form-field input:not([type=checkbox]):not([type=radio]):hover{border-color:#64658a}
/* Счётчик в боковом меню: тёмный текст на жёлтом (правило .side-nav>a>span делало его белёсым) */
.app-page .side-nav>a>span.nav-badge{color:var(--spk-navy)}
.app-page .side-nav>a[aria-current=page]>span.nav-badge{color:var(--spk-yellow);background:var(--spk-navy)}
