/*
 * Tokens canônicos do tema administrativo.
 *
 * Fonte única de cores, raios e sombras. As folhas de cada área
 * (classification-ui, portal-notes, dashboard-home, sidebar, agreement-ui,
 * legal-case-ui) apenas apelidam estes tokens — nenhuma delas define cor
 * própria. Alterar a identidade visual do sistema = alterar este arquivo.
 *
 * A paleta `base` e `primary` do Unfold (settings.UNFOLD['COLORS']) usa os
 * mesmos valores, para que o shell do Unfold e as telas customizadas não
 * divirjam.
 */

:root {
    /* Superfícies */
    --ui-bg: #f5f7fb;
    --ui-surface: #ffffff;
    --ui-surface-soft: #f8faff;
    --ui-surface-sunken: #f7f9fc;

    /* Texto */
    --ui-ink: #101828;
    --ui-text: #344054;
    --ui-muted: #667085;

    /* Bordas */
    --ui-border: #dfe6f0;
    --ui-border-soft: #e8edf4;

    /* Texto sobre superfície sempre escura (gradiente do hero): não inverte. */
    --ui-on-dark: #c8d4e4;

    /* Marca */
    --ui-primary: #155eef;
    --ui-primary-strong: #004eeb;
    --ui-primary-deep: #3448c5;
    --ui-primary-ink: #1849a9;
    --ui-primary-soft: #edf3ff;
    --ui-cyan: #06b6d4;
    --ui-cyan-soft: #ecfeff;
    --ui-cyan-tint: #7ee7f5;
    --ui-violet: #7c3aed;
    --ui-violet-soft: #f5f3ff;
    --ui-violet-tint: #c4b5fd;
    --ui-violet-ink: #5925dc;

    /* Estados */
    --ui-success: #12b76a;
    --ui-success-soft: #ecfdf5;
    --ui-warning: #d97706;
    --ui-warning-soft: #fffbeb;
    --ui-danger: #e11d48;
    --ui-danger-soft: #fff1f2;

    /* Escala de raio */
    --ui-radius-2xs: 4px;
    --ui-radius-xs: 8px;
    --ui-radius-sm: 10px;
    --ui-radius-md: 12px;
    --ui-radius-lg: 16px;
    --ui-radius-pill: 999px;

    /* Sombras */
    --ui-shadow-sm: 0 2px 6px rgba(30, 42, 68, .06);
    --ui-shadow-md: 0 14px 36px rgba(30, 42, 68, .07);
    --ui-shadow-lg: 0 28px 75px rgba(7, 17, 39, .3);

    /* Gradiente de identidade, usado nas faixas de topo de cartões e modais */
    --ui-brand-gradient: linear-gradient(90deg, var(--ui-primary), var(--ui-cyan), var(--ui-violet));

    /* Superfícies translúcidas reutilizadas em cabeçalhos fixos */
    --ui-scrim: rgba(7, 13, 25, .72);
    --ui-veil: rgba(245, 247, 251, .94);
    --ui-focus-ring: 0 0 0 3px rgba(21, 94, 239, .1);
    --ui-focus-border: rgba(21, 94, 239, .55);
}

.dark {
    --ui-bg: #111827;
    --ui-surface: #1b2535;
    --ui-surface-soft: #222e40;
    --ui-surface-sunken: #182335;

    --ui-ink: #f1f5ff;
    --ui-text: #dbe4f0;
    --ui-muted: #98a2b3;

    --ui-border: #3a4960;
    --ui-border-soft: #303c52;

    --ui-primary: #4f7cff;
    --ui-primary-strong: #3b6cf0;
    --ui-primary-deep: #3448c5;
    --ui-primary-ink: #a9c7ff;
    --ui-primary-soft: rgba(79, 124, 255, .2);
    --ui-cyan-soft: rgba(6, 182, 212, .18);
    --ui-violet-soft: rgba(124, 58, 237, .2);
    --ui-violet-ink: #c4b5fd;

    /* Estados clareiam no escuro: os tons de modo claro ficam abaixo de 4.5:1. */
    --ui-success: #34d399;
    --ui-success-soft: rgba(18, 183, 106, .16);
    --ui-warning: #fbbf24;
    --ui-warning-soft: rgba(217, 119, 6, .16);
    --ui-danger: #fb7185;
    --ui-danger-soft: rgba(225, 29, 72, .16);

    --ui-shadow-sm: 0 2px 6px rgba(0, 0, 0, .2);
    --ui-shadow-md: 0 18px 44px rgba(0, 0, 0, .18);

    --ui-veil: rgba(15, 23, 42, .82);
    --ui-focus-ring: 0 0 0 3px rgba(79, 124, 255, .18);
    --ui-focus-border: rgba(79, 124, 255, .6);
}

/*
 * ---------------------------------------------------------------------------
 * Componentes globais
 *
 * Valem em QUALQUER tela do admin, sem depender de classe no ``<body>``. É o
 * que garante que uma tela nova (view customizada, confirmação de exclusão,
 * troca de senha, índice de app) já nasça com o tema.
 * ---------------------------------------------------------------------------
 */

/*
 * Modais. O contrato do projeto é:
 *
 *   <div id="..." aria-hidden="true">          <- wrapper, alterna a exibição
 *       <div class="... z-50 fixed"></div>     <- overlay
 *       <div class="panel">                    <- painel, irmão do overlay
 *
 * Um modal novo que siga esse contrato já nasce com fundo, borda, raio, faixa
 * de identidade, centralização e estilo de formulário — sem CSS próprio.
 */
[aria-hidden="true"]:has(> .panel) {
    display: none;
}

[aria-hidden="false"]:has(> .panel) {
    display: block;
}

.fixed:has(+ .panel),
.fixed:has(> .panel) {
    background: var(--ui-scrim) !important;
    backdrop-filter: blur(7px);
}

.panel {
    background: var(--ui-surface) !important;
    border: 1px solid var(--ui-border) !important;
    border-radius: var(--ui-radius-lg) !important;
    box-shadow: var(--ui-shadow-lg) !important;
}

.panel::before {
    background: var(--ui-brand-gradient);
    content: "";
    display: block;
    height: 4px;
}

/* Painel irmão do overlay: centralizado na viewport. */
.fixed + .panel {
    left: 50%;
    max-height: calc(100vh - 32px);
    overflow: auto;
    position: fixed;
    top: 50%;
    transform: translate(-50%, -50%);
    /* Modal mais largo = uma linha só, sobrescrevendo --ui-modal-width. */
    width: min(var(--ui-modal-width, 520px), calc(100vw - 32px));
    z-index: 60;
}

.fixed + .panel > div {
    padding: 24px !important;
}

.panel .text-xl {
    color: var(--ui-ink) !important;
    font-size: 19px !important;
    letter-spacing: -.02em;
}

.panel .leading-relaxed {
    color: var(--ui-muted) !important;
    font-size: 12px !important;
}

.panel label {
    color: var(--ui-ink) !important;
    display: block;
    font-size: 12px !important;
    font-weight: 680 !important;
    margin-bottom: 7px;
}

.panel input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]),
.panel select,
.panel textarea,
.panel trix-editor,
.panel .select2-selection {
    background: var(--ui-surface-soft) !important;
    border-color: var(--ui-border) !important;
    border-radius: var(--ui-radius-sm) !important;
    box-shadow: none !important;
    color: var(--ui-ink) !important;
    font-size: 12px !important;
    min-height: 42px;
    width: 100%;
}

.panel input:focus,
.panel select:focus,
.panel textarea:focus {
    border-color: var(--ui-focus-border) !important;
    box-shadow: var(--ui-focus-ring) !important;
    outline: none;
}

.panel button {
    border-radius: var(--ui-radius-sm) !important;
    min-height: 40px;
}

.panel button[type="submit"] {
    background: linear-gradient(135deg, var(--ui-primary), var(--ui-primary-deep)) !important;
    box-shadow: 0 8px 18px rgba(21, 94, 239, .2);
    color: #fff !important;
    padding-left: 18px !important;
    padding-right: 18px !important;
}

.panel button[type="button"] {
    background: var(--ui-surface) !important;
    border-color: var(--ui-border) !important;
    color: var(--ui-muted) !important;
}

/*
 * Botões extras do admin (``actions_list``/``actions_detail`` do Unfold).
 * As classes-âncora vêm dos overrides de ``unfold/helpers/tab_actions.html``
 * e ``unfold/helpers/tab_action.html``.
 */
.ui-actions {
    gap: 8px;
}

/* Geometria vale para todos os botões, inclusive os de variante colorida. */
.ui-actions .ui-action {
    border-radius: var(--ui-radius-sm) !important;
    box-shadow: var(--ui-shadow-sm);
    margin: 0 !important;
    overflow: hidden;
    transition: border-color .15s ease, box-shadow .15s ease, color .15s ease;
}

.ui-actions .ui-action > a {
    font-size: 13px;
    font-weight: 600;
    min-height: 38px;
}

.ui-actions .ui-action .material-symbols-outlined {
    font-size: 18px;
}

/*
 * Superfície e cor só na variante padrão. As variantes do Unfold
 * (``ActionVariant.INFO``, ``SUCCESS``, …) trazem ``bg-*`` + ``text-white`` e
 * precisam manter o próprio fundo — daí o ``:not([class*="bg-"])``.
 */
.ui-actions .ui-action:not([class*="bg-"]) {
    background: var(--ui-surface) !important;
    border: 1px solid var(--ui-border) !important;
}

.ui-actions .ui-action:not([class*="bg-"]) > a {
    color: var(--ui-text) !important;
}

.ui-actions .ui-action:not([class*="bg-"]) .material-symbols-outlined {
    color: var(--ui-muted);
}

.ui-actions .ui-action:not([class*="bg-"]):hover {
    border-color: var(--ui-primary) !important;
    box-shadow: var(--ui-shadow-md);
}

.ui-actions .ui-action:not([class*="bg-"]):hover > a,
.ui-actions .ui-action:not([class*="bg-"]):hover .material-symbols-outlined {
    color: var(--ui-primary) !important;
}

/*
 * Barra de ações em massa da listagem. O container do Unfold traz ``text-white``,
 * por isso a faixa continua escura (gradiente da marca) — trocar por superfície
 * clara deixaria o texto branco ilegível.
 */
#changelist-actions > div {
    background: linear-gradient(100deg, var(--ui-primary), var(--ui-primary-deep) 58%, var(--ui-violet)) !important;
    border: 1px solid rgba(255, 255, 255, .18) !important;
    border-radius: var(--ui-radius-md) !important;
    box-shadow: 0 12px 28px rgba(21, 94, 239, .22) !important;
    padding: 7px 9px;
}

#changelist-actions select {
    border-radius: var(--ui-radius-xs) !important;
    min-height: 32px;
}

#changelist-actions button {
    background: rgba(9, 24, 65, .46) !important;
    border-radius: var(--ui-radius-xs) !important;
    min-height: 32px;
}

/* Rodapé de salvamento, presente em todo changeform. */
#submit-row > div {
    background: var(--ui-veil) !important;
    border-color: var(--ui-border) !important;
    backdrop-filter: blur(16px);
}

#submit-row button,
#submit-row a {
    border-radius: var(--ui-radius-sm) !important;
    min-height: 40px;
}

/*
 * Telas sem listagem nem formulário (confirmação de exclusão, troca de senha,
 * índice de app, views customizadas). O Unfold as monta com utilitários
 * Tailwind; aqui só alinhamos superfície, borda e raio ao restante.
 */
#content .aligned fieldset,
.delete-confirmation #content ul,
.app-index #content .rounded-default {
    border-color: var(--ui-border);
}

/* Tela de login (fora de ``admin/base_site.html``). */
body.login #page {
    background: var(--ui-bg);
}

body.login form {
    background: var(--ui-surface);
    border: 1px solid var(--ui-border);
    border-radius: var(--ui-radius-lg);
    box-shadow: var(--ui-shadow-md);
    padding: 24px;
    position: relative;
}

body.login form::before {
    background: var(--ui-brand-gradient);
    border-radius: var(--ui-radius-lg) var(--ui-radius-lg) 0 0;
    content: "";
    height: 4px;
    left: 0;
    position: absolute;
    right: 0;
    top: 0;
}

body.login form label {
    color: var(--ui-ink);
    font-size: 12px;
    font-weight: 680;
}

body.login form input:not([type="checkbox"]) {
    background: var(--ui-surface-soft) !important;
    border-color: var(--ui-border) !important;
    border-radius: var(--ui-radius-sm) !important;
    color: var(--ui-ink) !important;
    min-height: 42px;
}

body.login form input:focus {
    border-color: var(--ui-focus-border) !important;
    box-shadow: var(--ui-focus-ring) !important;
    outline: none;
}

body.login form button[type="submit"] {
    background: linear-gradient(135deg, var(--ui-primary), var(--ui-primary-deep)) !important;
    border-radius: var(--ui-radius-sm) !important;
    box-shadow: 0 8px 18px rgba(21, 94, 239, .2);
    min-height: 42px;
}

body.login form .password-reset-link {
    border-radius: var(--ui-radius-sm) !important;
    color: var(--ui-muted) !important;
    font-size: 12px;
}
