/*
 * Единый визуальный слой продуктовых страниц: токены и примитивы.
 *
 * Значения объявлены здесь один раз, страницы их только используют. Отдельные
 * страничные стили задают раскладку, а не собственные цвета, радиусы и тени.
 */

:root {
    --avt-brand: #2458a6;
    --avt-brand-bright: #3b82f6;
    --avt-brand-deep: #16325c;
    --avt-accent: #22d3ee;

    --avt-ink: #0f172a;
    --avt-ink-muted: #64748b;
    --avt-ink-inverse: #f8fafc;
    --avt-ink-inverse-muted: #a9b6c9;

    --avt-surface: #ffffff;
    --avt-surface-sunken: #f1f5f9;
    --avt-border: #e2e8f0;

    /* Оттенки для полупрозрачных подложек: значение цвета объявлено один раз, альфа — по месту. */
    --avt-tint-brand: 59, 130, 246;
    --avt-tint-accent: 34, 211, 238;
    --avt-tint-light: 255, 255, 255;

    --avt-canvas-night-soft: #0f1522;
    --avt-canvas-night: #0d121c;
    --avt-canvas-night-mid: #0b1220;
    --avt-canvas-night-deep: #080d16;

    /* Фон полноэкранных тёмных страниц: один владелец вместо копии на каждой странице. */
    --avt-backdrop-night:
        radial-gradient(1200px 600px at 12% -10%, rgba(var(--avt-tint-brand), 0.35), transparent 60%),
        radial-gradient(900px 500px at 110% 10%, rgba(var(--avt-tint-accent), 0.22), transparent 55%),
        linear-gradient(180deg, var(--avt-canvas-night) 0%, var(--avt-canvas-night-mid) 60%, var(--avt-canvas-night-deep) 100%);

    --avt-glass: rgba(13, 18, 28, 0.66);
    --avt-glass-strong: rgba(13, 18, 28, 0.86);
    --avt-glass-border: rgba(255, 255, 255, 0.16);

    --avt-success: #16a34a;
    --avt-warning: #d97706;
    --avt-danger: #dc2626;

    --avt-radius-sm: 10px;
    --avt-radius: 14px;
    --avt-radius-lg: 20px;
    --avt-radius-pill: 999px;

    --avt-shadow-sm: 0 1px 2px rgba(15, 23, 42, 0.08);
    --avt-shadow: 0 6px 20px rgba(15, 23, 42, 0.12);
    --avt-shadow-lg: 0 18px 45px rgba(8, 15, 31, 0.35);

    --avt-space-1: 4px;
    --avt-space-2: 8px;
    --avt-space-3: 12px;
    --avt-space-4: 16px;
    --avt-space-5: 24px;
    --avt-space-6: 32px;

    --avt-font: "Google Sans Flex", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;

    /*
     * Отступы под вырезы и жесты устройства: используются каждой полноэкранной раскладкой.
     * `--arxr-app-bar` задаёт только приложение: высота его кнопок в левом верхнем углу; в браузере не задана.
     */
    --avt-safe-top: calc(env(safe-area-inset-top, 0px) + var(--arxr-app-bar, 0px));
    --avt-safe-bottom: env(safe-area-inset-bottom, 0px);
    --avt-safe-left: env(safe-area-inset-left, 0px);
    --avt-safe-right: env(safe-area-inset-right, 0px);
}

.avt-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: var(--avt-space-2);
    min-height: 44px;
    padding: 0 var(--avt-space-5);
    border: 1px solid transparent;
    border-radius: var(--avt-radius-pill);
    background: var(--avt-surface-sunken);
    color: var(--avt-ink);
    font-family: var(--avt-font);
    font-size: 16px;
    font-weight: 600;
    line-height: 1;
    text-decoration: none;
    cursor: pointer;
    transition: transform 0.12s ease, box-shadow 0.12s ease, background-color 0.12s ease;
}

.avt-btn:hover:not(:disabled) {
    transform: translateY(-1px);
}

.avt-btn:active:not(:disabled) {
    transform: translateY(0);
}

.avt-btn:disabled {
    opacity: 0.55;
    cursor: default;
}

.avt-btn:focus-visible {
    outline: 2px solid var(--avt-accent);
    outline-offset: 2px;
}

.avt-btn--primary {
    background: linear-gradient(135deg, var(--avt-brand-bright), var(--avt-brand));
    color: #ffffff;
    box-shadow: var(--avt-shadow);
}

.avt-btn--ghost {
    background: transparent;
    border-color: var(--avt-border);
    color: var(--avt-ink);
}

.avt-btn--danger {
    background: transparent;
    border-color: rgba(220, 38, 38, 0.4);
    color: var(--avt-danger);
}

.avt-btn--on-glass {
    background: rgba(255, 255, 255, 0.14);
    border-color: var(--avt-glass-border);
    color: var(--avt-ink-inverse);
    backdrop-filter: blur(14px);
    -webkit-backdrop-filter: blur(14px);
}

.avt-btn--block {
    width: 100%;
}

.avt-card {
    background: var(--avt-surface);
    border: 1px solid var(--avt-border);
    border-radius: var(--avt-radius-lg);
    box-shadow: var(--avt-shadow-sm);
}

.avt-glass {
    background: var(--avt-glass);
    border: 1px solid var(--avt-glass-border);
    border-radius: var(--avt-radius-lg);
    color: var(--avt-ink-inverse);
    backdrop-filter: blur(18px);
    -webkit-backdrop-filter: blur(18px);
    box-shadow: var(--avt-shadow-lg);
}

.avt-chip {
    display: inline-flex;
    align-items: center;
    gap: var(--avt-space-2);
    padding: 6px 12px;
    border: 1px solid var(--avt-border);
    border-radius: var(--avt-radius-pill);
    background: var(--avt-surface);
    color: var(--avt-ink-muted);
    font-size: 13px;
    font-weight: 600;
}

.avt-chip--on-glass {
    background: rgba(255, 255, 255, 0.12);
    border-color: var(--avt-glass-border);
    color: var(--avt-ink-inverse);
}

.avt-field {
    width: 100%;
    min-height: 44px;
    padding: 0 var(--avt-space-4);
    border: 1px solid var(--avt-border);
    border-radius: var(--avt-radius-sm);
    background: var(--avt-surface);
    color: var(--avt-ink);
    font-family: var(--avt-font);
    font-size: 16px;
}

.avt-field:focus {
    outline: none;
    border-color: var(--avt-brand-bright);
    box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.18);
}

.avt-alert {
    padding: var(--avt-space-3) var(--avt-space-4);
    border: 1px solid var(--avt-border);
    border-left: 4px solid var(--avt-ink-muted);
    border-radius: var(--avt-radius-sm);
    background: var(--avt-surface);
    color: var(--avt-ink);
    font-size: 14px;
    line-height: 20px;
}

.avt-alert--error {
    border-left-color: var(--avt-danger);
}

.avt-alert--success {
    border-left-color: var(--avt-success);
}

.avt-alert--warning {
    border-left-color: var(--avt-warning);
}

.avt-muted {
    color: var(--avt-ink-muted);
}

/* Доступная замена скрытому тексту: видим только программам чтения с экрана. */
.avt-visually-hidden {
    position: absolute;
    width: 1px;
    height: 1px;
    margin: -1px;
    padding: 0;
    overflow: hidden;
    clip: rect(0 0 0 0);
    white-space: nowrap;
    border: 0;
}

@media (prefers-reduced-motion: reduce) {
    .avt-btn {
        transition: none;
    }

    .avt-btn:hover:not(:disabled) {
        transform: none;
    }
}
